Логин:     Забыли пароль?
 
Пароль:   Регистрация

Форум / Программирование - DprToLvt (PasToLvt). Пишу среду разработки (Эмулятор) для ПК-01 Львов  

DprToLvt (PasToLvt). Пишу среду разработки (Эмулятор) для ПК-01 Львов

sas9568635
sas9568635
Посетитель
Сообщения: 9
[Сообщение #1] 17 июля 2012, 22:28
Здравствуйте.Пишу среду разработки (Эмулятор) для ПК-01 Львов. Возникают вопросы по написанию кода. Для ознакомления с тем что из себя представлет эта среда а точнее - вспомогательный модуль для среды Дельфи, с возможностью компилирования программ в машинные коды ПК-01 Львов. Прошу заглянуть сюда http://sas.forumbb.ru/viewtopic.php?id=290,
а таже скачать черновую (последнюю) версию модуля с примерами http://file.oboz.ua/download.php?fid=138217

sas9568635
sas9568635
Посетитель
Сообщения: 9
[Сообщение #2] 17 июля 2012, 22:35
Команды КР580 в виде Дельфи процедур…
Правильно ли реализованы следующие процедуры:
(строки влияния на флаги удалены из процедур, что бы было понятней.)
Вот все команды которые у меня «под подозрением» неправильной их реализации, а ниже описание, если кто уже забыл…

Procedure ADCB;
Begin
if FlagC then wremb:=1 else wremb:=0;
RgA:=RgA+RgB+wremb;
end;

Procedure SBBB;
Begin
if FlagC then wremb:=1 else wremb:=0;
RgA:=RgA-RgB-wremb;
end;

Procedure ACI(b:byte);
Begin
if FlagC then wremb:=1 else wremb:=0;
RgA:=RgA+b+wremb;
end;

{C7} Procedure RST0_;
Begin
If FlagIntF then begin// если Разрешено прерывание
RgPC:=RgPC+1;Word_:=RgPC;WriteMem(RgSP-1,Byte_[2]);WriteMem(RgSP-2,Byte_[1]);RgSP:=RgSP-2;//сохранение куда возвращатся
RgPC:=8*0; //0 - поточу то рст нулевое
end else izmRgPC(+1);

Procedure SBI(b:byte);
Begin if FlagC then wremb:=1 else wremb:=0;
RgA:=RgA-b-wremb;izmRgPC(+2);
end;

Procedure PCHL_;
Begin JMP_(RgHL);
end;

Procedure XRI(b:byte);
Begin
RgA:=(RgA xor b);
SetFlagAc(false);SetFlagC(false);
end;

Procedure ORI(b:byte);
Begin
RgA:=RgA or b;
SetFlagAc(false);SetFlagC(false);
end;
========================
Вот описание этих асм-команд:

S Z Ac P C
ADC S | A=A+S+c | + + + + + | Сложение с учетом признака переноса "c".
SBB S | A=A-S-c | + + + + + | Вычитание с учетом заема "c".
ACI D8 | A=A+D8+c | + + + + + | Сложение с учетом переноса.
RST V |PC-->M(SP-1,SP-2) | --- -- | Прерывание по вектору
|SP=SP-2, V*8-->PC | | V*8. V = 0 ...7
SBI D8 | A=A-D8-c | + + + + + | Вычитание с учетом заема.
PCHL | переход на HL | Переход по адресу, заданному в HL.
XRI D8 ! A = A ¤ D8 | + + 0 + 0 | Исключающее ИЛИ.
ORI D8 | A = A ! D8 | + + 0 + 0 | Логическое ИЛИ.

Вместо S - регистры A,B,C,D,E,H,L,M.
+ признак изменяется
- не изменяется

S - знак результата
Z - признак нулевого результата
Ac- дополнительный перенос
P - признак четности
C - признак переноса/заема
Вместо D8, тип Байт

sas9568635
sas9568635
Посетитель
Сообщения: 9
[Сообщение #3] 17 июля 2012, 22:36
При переводе программ написанных в Маш.кодах (в частоности КР580) в структуру Дельфи…
структура ассемблера не позволяет перевести (транслировать) такие программы так как в структуре ассемблера:
1 .есть «досрочный» выход из процедуры минуя end, a Ret может располагаться где угодно, а также даже не однин «хвост» окончания одной процедуры…
2. есть вход в середину процедуры по метке перехода, что не позволяет среда Дельфи.
3. Также на одну метку в ассемблере возможен переход как на процедуру (Call) так и «обычный» переход (Jmp)
Вопрос:
Возможно ли транслирование структуры ассемблера с вот такими вот особенностями которыми обладает почти все Асм-программы в структуру Дельфи?.. Какие конструкции мне необходимо знать?

sas9568635
sas9568635
Посетитель
Сообщения: 9
[Сообщение #4] 21 июля 2012, 16:51
Существует процедура задержки (часть кода из нее)
[code]while w2 > w1 do
begin
Application.ProcessMessages;
w1:= RDTSC;
end;[/code]

Что нужно поместить в цикл, чтобы уменьшить загрузку процессора?... т.е. вроде как отдавать ненужные промежутки времени процессору (другим программам)

Вадим К
Вадим К
Академик
Сообщения: 85
[Сообщение #5] 24 июля 2012, 11:09
Хотите сделать правильную задержку - разместите код эмулятора в отдельном треде и используйте sleep без каких-либо опасений.

В целом, траслировать программу, написанную на ассемблере в программу более высокого уровня можно только в том случае, если изначально программа писалась на языке высокого уровня.
А если ассемблерный код использует самомодифицируемый код, то тут будет очень сложно.

По поводу реализаций команд. Они реализованы не совсем правильно. Возьмем к примеру последнюю
Procedure ORI(b:byte);
 Begin 
 RgA:=RgA or b;
 SetFlagAc(false);SetFlagC(false);
 end;
В описании сказано, что флаги изменяются следующим образом + + 0 + 0. Два флажка выставляете в 0, что правильно. Но три других флажка могут измениться, но у Вас это никак не учитывается.

Галочка "подтверждения прочтения" - вселенское зло.
sas9568635
sas9568635
Посетитель
Сообщения: 9
[Сообщение #6] 4 августа 2012, 16:23
Всех кого интересует этот проект могут скачать очередной черновик
Вспомогательный модуль для среды Дельфи, с возможностью компилирования программ в машинные коды ПК-01 Львов версия 0.03
http://sas.forumbb.ru/viewtopic.php?id=290#p2104

sas9568635
sas9568635
Посетитель
Сообщения: 9
[Сообщение #7] 5 сентября 2013, 12:58
С тех пор как я создал эту тему прошло немало времени и своё «детище» я уже выпустил «в свет». Желающие могут скачать здесь:

SAS emulator 1.2 Beta (от 04.08.2013) (Размер:1.047 Mb)
Скачать:
http://file.oboz.ua/download.php?fid=394807

Если программа пожалуется на отсутствие qtintf.dll Скачайте его здесь http://file.oboz.ua/download.php?fid=337370 и распакуйте из qtintf.7z в основной каталого эмулятора (там где SASEmulator.exe). Хотя у меня она работает без него.
===============================================
У пользователя есть возможность переназначить соответствия клавиш вашей клавиатуры к клавиатуре ПК-01 «Львов» эмулятора. Сводится это к созданию и настройке файла SASEmulator.key в каталоге эмулятора. Подробности описывать не буду. При желании рассмотрите черновик-архив Keyboard.7z. Файл Keyboard.dpr
который может быть редактирован, скомпилирован и запущен для создания SASEmulator.key.
Скачать здесь: http://file.oboz.ua/download.php?fid=337372

Хотелось бы услышать критику и пожелания. А так же у меня просьба протестировать на разных компах (слабых и мощных, старых и новых) (и на разных системах) на выявления торможения и других глюков. Не «за горами» выйдет новая версия программы.

sas9568635
sas9568635
Посетитель
Сообщения: 9
[Сообщение #8] 6 сентября 2013, 09:39
Уважаемые форумчане! Обращаюсь к тем кто скачивал и запускал (пользуется) моим эмулятором ( http://sas.forumbb.ru/click.php?http://file.oboz.ua/download.php?fid=394807 ). Очень прошу Вас написать о его торможении. Имеется ли оно?... Часто ли?... Может как-то знаете или поняли как избавляться от него?.. Стоит ли мне думать о том как от него в эмуляторе избавится??!!.. (если оно есть конечно). :-)
У меня лично — всё в порядке! Но это если в памяти «висит» Дельфи 7. Как это зависимо ума не приложу. :-) Напишите пожалуйста при каких случаях у Вас всё хорошо (или плохо).
С уважением, SAS,
автор SAS emulator.

sas9568635
sas9568635
Посетитель
Сообщения: 9
[Сообщение #9] 6 сентября 2013, 15:52
Приношу извинения за то что не пояснил что подразумевается под «торможение»...
Привожу тест для его определения.
Надеюсь от подобного теста Вы получите удовольствие. :-)
Запустите SASEmulator1.2Beta
Выберите в Комбобокс игру: «Аэрокобра(1)» либо откройте её имя файла:Аэрокобра1.LVT
При необходимости проверьте (либо установите) FPS=50, Freq/fps=68000
Установите графический режим 768х512 Меню:Tools\Graphic Mode\768x512
На экране заставка Aerocobara. Нажмите пробел.
На экране: «Ваша задача — забрать....»
Подготовьте часы так чтобы было видно секунды (на компе).
При нажатии пробела одновременно запомните время минуты и секунды.
Происходит «синяя» очистка экрана и далее пошла игра.
Пройдите всеми правдами и не правдами :-) Первый уровень до момента окончания (синяя очистка, перед STAGE 02)
снимите показания времени.
При нормальной работе эмулятора без торможения, время прохождения 1-го уровня должно быть в пределах 47-51 секундах. У меня было 48сек(50сек). Чем ближе к 47 — тем лучше. :-)
При торможении время прохождения увеличивается. У меня было 78 сек.
При изменени граф.режима на 512х512 и торможении, время = 58 сек.
При торможении и увеличении граф.режима более чем 512х512, явно заметно изменение скорости игры по сравнению с более маленькими разрешениями (256х256). При нормальной работе — такого явно заметно быть не должно!... и время прохождения 1-го уровня (на любых граф. Режимах) остается в тех же пределах т. е. (в пределах 47-51 секундах)
Заранее благодарен за внимание к моему эмулятору и за проведенный тест.

sas9568635
sas9568635
Посетитель
Сообщения: 9
[Сообщение #10] 13 сентября 2013, 12:35
[b][size=2]SAS emulator 1.3 Beta[/size] [/b] (от 13-09-2013)
* Постоянная прорисовка экрана. Теперь переходя из фонового режима в эмулятор, экран будет прорисован автоматически. Тоже самое во время паузы.
* Меню Tools\”Debugger...” был заменён тремя формами «Assembler”, “Registers and flags”, “Memory”.
* Добавлено в меню Tools переключение способа вывода на экран «Screen Drawing”, где можно переключить на способ вывода «Timer” либо «RDTSC”. Попробуйте это при торможении эмулятора. Скорость эмулятора в режиме «RDTSC” регулировалась при FPS=50, Freq/fps=68500.
* Добавлены игры в каталог GAMES (и в ComboBox): Цветные Линии(3)=lines_03.lvt ; Arcanoid=Arcanoid.SasLVE ; Circus=Circus.SasLVE ; Домино=DOMINO.SasLVE ; Утки=ducks.SasLVE
frog=frog.SasLVE ; International Karate=karateint.SasLVE ; Корона=korona.SasLVE ; Лагуна=laguna.SasLVE ; Pool=pool.SasLVE ; Sokoban(3)=sokoban3.SasLVE ; Space Shock=spaceshock.SasLVE ; Star Raider=Starraider.SasLVE ; Тетрис 4=TETRIS4.SasLVE
* В калатоге GAMES все игры преобразованы в формат SasLVE. Это удобно и красиво. :-)
* В случае отсутствия каталогов «AutoSave» и «Log» - создаются автоматически.
* Преобразована дата (и время) в именах файлов при автозаписи в каталог «AutoSave».
* Совместил модуль DprPasToLV с эмулятором. Надеюсь в эмуляторе ничего не «разшатал» :-)
( Для тех кому непонятно что такое DprPasToLV почитать можно здесь: [url=http://sas.forumbb.ru/viewtopic.php?id=290]DprToLvt (PasToLvt)[/url] )
Существует два файла для запуска эмулятора, SASEmulator.exe и SASEmulator_.exe. Запускать эмулятор можно любым каким душа пожелает :-) разница между ними в том, что SASEmulator.exe - использует DprPasToLV.dll, а SASEmulator_.exe - работает самостоятельно, без модуля DprPasToLV.dll. В их работе разницы не должно быть, во всяком случае мной замечено не было!
Каталог Samples содержит примеры использования модуля DprPasToLV.dl, а в файле DLLFP.pas описание процедур доступных для использования.
Поскольку на торможение эмулятора я слышал всего лишь одну жалобу... :-) а на просьбу провести тест определения торможения, вообще «глухо», ничего не слышал :-) то пока вывод на экран оставляю таким как есть!

Если у Вас поялось желание что либо сказать :-) по поводу эмулятора, прошу сюда...

Ну вот пока всё! Надеюсь ничего не забыл!... описать и укомплектовать в архив ! :-)
Пишите. Жду. :-)

Скачать:[url]http://file.oboz.ua/download.php?fid=494897[/url]


Всего сообщений: 10 (сейчас показаны: с 1 по 10)

Перейти в раздел:


 © 2004 - 2024, Delphi.int.ru
Версия форума: 1.10 (19.01.2010)
RSS Delphi.int.ru Expert Код
Выполнено за 0.01 сек.
Обратная связь