(Написанные в этой и других темах сообщения почитаю и вникну завтра, на свежую голову)
Попытаюсь рассказать свою задумку словами
насколько это возможно…
Создаешь новый проект в дельфи (DPR,pas)
Подключаешь в него модули «КР580», «ПЗУ ПК-01 Львов» и «экран ПК-01 Львов», (для начала хотябы только такие модули), которые эмулируют … понятно что…
(скорее всего это будут DLL- модули, вообщем как будет получаться…)… модуль «экран ПК-01 Львов» будет состоять из формы-дельфи, а в ней «подобие» экрана Львов (компонент TPaintBox), и обращение к экрану соответственно будет такое же как (аналог IN OUT) и в ПК-01.
Итак. Программа написанная на дельфи будет управлять «КР580», «ПЗУ ПК-01 Львов» и «экран ПК-01 Львов», словно программа написанная в самом ПК-01. Это понатно! Так ведь?
Далее.
Для реальной компиляции, в реальные коды КР580, необходимо будет заменять дельфийские структуры и процедуры, на такие, которые будут заложены в возможность их к компиляции в машкоды КР580. Т.е. это будут команды КР580, А ТАКЖЕ некоторые структуры, которые могут смело переводится на машкоды КР580 (в несколько команд КР580)
После чего их утилита-компилятор сможет их перевести в LVT-формат.
При нежелании переводить на машкоды КР580
можно просто скопилировать в обычный экзешник..
(ради шутки)
Основная соль этого всего:
Удобство написания программ в среде дельфи в отличии от например, той же LvivStudio
Возможность отрабатывать пошагово, наблюдая за всем, что только можно (регистрами, флагами процессора и т.д.), причем при необходимости, а такое бывает часто при отладке, можно в программе их изменять «в наглую» присвоив им нужное значение, причем в любом месте программы. (Например RgSP:=RgSP+1; RgHL:=$1500; FlagS:=False и т.д.)
Никаких границ по памяти, правда до последнего момента
когда их утилита-компилятор будет компилировать в LVT-формат.
Использовать всю мощь дельфи и ее процедуры и функции, как вспомогательные, в «гремучей смеси» с обычными (возможными к компиляции в КР580) командами.
Может еще чего забыл…
Вот огрызок-черновик от части программы которая написана в среде дельфи и ее компиляция в КР580, будет очень даже реальна.
Как бы я хотел уже сейчас использовать такое для написания и компиляции программ для ПК-01.
Может что-то подобное уже есть? Где?
Code:
program PastoLV;//
uses
PasToLVUnit in 'PasToLVUnit.pas',
I8080 in 'I8080.PAS';
Label STARTj81A0,j81C1;
var
d84B0,d84B1………………… :AddrDB; // метки под данные
Procedure c80D4;forward;
Procedure c80D4;
Begin
RgHL:=d85F4; // LXI H, d85F4 ;HL <-...
SHLD($80D5); // SHLD $80D5 ;L-->Mem(...),H-->Mem(...+1)
RET;
end;
Procedure cF82D;forward;
Procedure cF82D;
Begin
………………..
end;
begin
BEGINPROGRAM:=$81A0;
d84B0:=SetAddrDB; // привязать к МЕТКЕ данных адрес Данных (это как на асме метка= «d84B0:»
addDB($F2); // Установить (добавлять) данные (это как на асме = «.DB $F2»
d84B1:=SetAddrDB; // привязать к МЕТКЕ данных адрес Данных, это как на асме =» d84B1: .db 46,$CA,$4F, $40»
addDB(46); addDB($CA);addDB($4F); addDB($40);
….
STARTj81A0:
RgSP:= $AFFF; // LXI SP, $AFFF ;SP <-...
c83B4; //CALL c83B4 ;Безусловный вызов ПП
RgHL:=d85F4; // LXI H, d85F4 ;HL <-...
SHLD($80D5); // SHLD $80D5 ;L-->Mem(...),H-->Mem(...+1)
c80D4; // ;Безусловный вызов ПП
……
……………
j81C1:
RgDE:=RgDE-1; // DCX D ;DE=DE-1
RgA:=RgE; // MOV A,D ;A=D
if FlagZ then goto j81C1; //JNZ j81C1 ;БП, если Z=0
c8b4; // CALL c83B4 ;Безусловный вызов ПП
RgHL:=$4806; //LXI H, $4806 ;HL <-...
RgE:=$0C; //MVI E, $0C ;E <-...Загрузка байта данных ... в приемник E
RgBC:=$03D1; //LXI B, $03D1 ;BC <-...
………………
end.