Что из себя представляет P_EMUL2021.
Скажем так. Она дает возможность писать программы в среде Дельфи, используя при этом возможности ПК-01 и команды КР580. Проще выражаясь такая себе «крутилка» программ написанных в среде Дельфи, опрашивая клавиатуру и вводя на экран по принципу ПК-01 и т.д.
Применение.
Когда я писал «Лабиринт», фактически он был написан в среде Дельфи используя ввод с клавиатуры вывод на экран через модули P_EMUL. Поскольку, не было потребности доводить «Лабиринт» до полной готовности с помощью P_EMUL, я забросил это дело в P_EMUL, и стал портировать его в МАДЛ. Пример могу лишь предоставить корявый черновик и то в виде готового екзешника (см. LabirintD.exe).
Были и другие всевозможные пробы. Например «стрелялка» из игрушки «TETRIS 9999 in 1” поскольку она там была названа как «H”, я так и назвал пробу «TETRISH» Тоже могу показать лишь екзешник (см. TETRISH.exe (подождать несколько секунд после запуска), вырезка из кода, - uTETRIS.pas).
Также было сделал пробу игры «Пьяный лифтер» под P_EMUL
(см. TETRISH.exe, вырезка из кода, - PL.dpr)
Некоторые более простые пробы, я вообще не сохранял.
В общем суть использования P_EMUL заключается в следующем. Создаются процедуры, например ReadKey и DrawSprite командами КР-580 которые позволяют использовать опрос клавиатуры и вывод спрайта на экран ПК-01. Далее используя возможности Дельфи пишется проба или же целая программа которая «завязывается» на использование этих
процедур. После того как это все проверено, можно постепенно процедуры и конструкции Дельфи, заменять на команды КР-580, походу запуском проверяя работоспособность и правильность работы пробы или программы. Ну и последний этап это портирование в МАДЛ
и компиляция кода. Все это выглядит очень «заморочливо», но как по мне даёт полную
гарантию написания программы для ПК-01. Естественно используя P_EMUL из среды Дельфи доступны очень удобные средства , такие как StepOver(F8) и TraceInfo(F7), что очень удобно при проверке работоспособности программы. P_EMUL , годам был и есть в таком состоянии, что им может пользоваться может только автор (это Я), т.е. он не готов к выложить_его_на_люди!
Может он и далее таким бы оставался, но ситуация меняется и вот думаю пришло время, как говорится довести его до ума!
Оберон и XDev.
С появлением информации на форуме про Оберон, XDev и автора Zоrko
у меня появились мысли от том, что P_EMUL можно очень эффективно использовать при подготовке программы для последующей компиляции через XDev. Дело в том, что использование XDev «напрямую» для мене например не то слово, что «неудобно», а неприемлемо вообще! Хотя мощные возможности XDev очень привлекательны! И если автор Zоrko доведет до совершенства XDev, (имеется ввиду для написания программ для ПК-01) то я бы «подточил» свой P_EMUL для возможности написания и проверки программ и последующей переброске в XDev для окончательной компиляции. Вот даже были пробы на эту тему.
Создаётся модуль Lvov.pas, в котором будут реализованы процедуры аналогичные ПК-01-процедурам- XDev, вот так вот:
(см. Lvovcut.pas, Lvov.pas)
Code: Select all
unit Lvov;
interface
uses _uMain;
procedure CLS(border:Byte);
procedure PSET(x,y,color:byte);
procedure PRESET(x,y:byte);
procedure LINE(x1,y1,x2,y2,color:byte);
procedure BOX(x1,y1,x2,y2,color:byte);
procedure FIL_BOX(x1,y1,x2,y2,color:byte);
procedure PAINT(x,y,grf_color,brd_color:byte);
procedure COLOR(ground,palette:byte);
implementation
procedure CLS(border:Byte);
begin MVIA(border);STA($BE38);CallInMemLV($F836);end;
procedure PSET(x,y,color:byte);
begin
MVIA(x);STA($BE50);
MVIA(y);STA($BE51);
MVIA(color);STA($BE52);
CallInMemLV($F821);
end;
procedure PRESET(x,y:byte);
begin
MVIA(x);STA($BE50);
MVIA(y);STA($BE51);
CallInMemLV($F020);
end;
procedure LINE(x1,y1,x2,y2,color:byte);
begin
MVIA(x1);STA($BE50);
MVIA(y1);STA($BE51);
MVIA(x2);STA($BE57);
MVIA(y2);STA($BE58);
MVIA(color);STA($BE52);
CallInMemLV($F824);
end;
procedure BOX(x1,y1,x2,y2,color:byte);
begin
MVIA(x1);STA($BE50);
MVIA(y1);STA($BE51);
MVIA(x2);STA($BE57);
MVIA(y2);STA($BE58);
MVIA(color);STA($BE52);
CallInMemLV($F827);
end;
procedure FIL_BOX(x1,y1,x2,y2,color:byte);
begin
MVIA(x1);STA($BE50);
MVIA(y1);STA($BE51);
MVIA(x2);STA($BE57);
MVIA(y2);STA($BE58);
MVIA(color);STA($BE52);
CallInMemLV($F82A);
end;
procedure PAINT(x,y,grf_color,brd_color:byte);
begin
MVIA(x);STA($BE50);
MVIA(y);STA($BE51);
MVIA(grf_color);STA($BE52);
MVIA(brd_color);STA($BEA3);
CallInMemLV($F830);
end;
procedure COLOR(ground,palette:byte);
begin
MVIA(ground);STA($BEC0);
MVIA(palette);STA($BEC1);
CallInMemLV($F833);
end;
end.
вот так вот:
(см. uOberon.pas)
Code: Select all
begin
Lvov.CLS(255);
Lvov.PSET(0, 32, 3);
Lvov.PRESET(10, 33);
Lvov.LINE(0, 0, 128, 128, 2);
Lvov.LINE(0, 10, 128, 138, 1);
Lvov.BOX(50, 50, 75, 75, 3);
Lvov.FIL_BOX(150, 150, 75, 75, 3);
Lvov.COLOR(5, 0);
Lvov.PAINT(130, 30, 2, 3);
end;“подточить” под XDev , например «type INT8=Byte;” и прочее.
И вот хотелось бы, чтобы автор XDev который Zorko
Я думаю, это будет большой «плюс» для XDev и автору в карму!
Ведь писать программу в среде Дельфи с её возможностями StepOver(F8), TraceInfo(F7), Run To Cursor(F4), Watch (Ctrl+F5), BreakPoint и.д. Куда веселее и эффективнее чем на прямую в редакторе XDev. Да и компиляция-запуск моментальная! А портировать потом из Дельфи в XDev, готовую Дельфи-программу, УЖЕ «заточенную» под портирование для XDev, УЖ Я ТО НАПРИМЕР, НЕ ПОЛЕНЮСЬ!
Я думаю, что не одного меня подобное заинтересует!
Интересно, что скажет на это автор XDev?


