Форум Программирование DprToLvt (PasToLvt). Пишу среду разработки (Эмулятор) для ПК-01 Львов |
|
Здравствуйте.Пишу среду разработки (Эмулятор) для ПК-01 Львов. Возникают вопросы по написанию кода. Для ознакомления с тем что из себя представлет эта среда а точнее - вспомогательный модуль для среды Дельфи, с возможностью компилирования программ в машинные коды ПК-01 Львов. Прошу заглянуть сюда http://sas.forumbb.ru/viewtopic.php?id=290, а таже скачать черновую (последнюю) версию модуля с примерами http://file.oboz.ua/download.php?fid=138217 | ||||||
|
Команды КР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, тип Байт | ||||||
|
При переводе программ написанных в Маш.кодах (в частоности КР580) в структуру Дельфи… структура ассемблера не позволяет перевести (транслировать) такие программы так как в структуре ассемблера: 1 .есть «досрочный» выход из процедуры минуя end, a Ret может располагаться где угодно, а также даже не однин «хвост» окончания одной процедуры… 2. есть вход в середину процедуры по метке перехода, что не позволяет среда Дельфи. 3. Также на одну метку в ассемблере возможен переход как на процедуру (Call) так и «обычный» переход (Jmp) Вопрос: Возможно ли транслирование структуры ассемблера с вот такими вот особенностями которыми обладает почти все Асм-программы в структуру Дельфи?.. Какие конструкции мне необходимо знать? | ||||||
|
Существует процедура задержки (часть кода из нее) [code]while w2 > w1 do begin Application.ProcessMessages; w1:= RDTSC; end;[/code] Что нужно поместить в цикл, чтобы уменьшить загрузку процессора?... т.е. вроде как отдавать ненужные промежутки времени процессору (другим программам) | ||||||
|
Хотите сделать правильную задержку - разместите код эмулятора в отдельном треде и используйте sleep без каких-либо опасений. В целом, траслировать программу, написанную на ассемблере в программу более высокого уровня можно только в том случае, если изначально программа писалась на языке высокого уровня. А если ассемблерный код использует самомодифицируемый код, то тут будет очень сложно. По поводу реализаций команд. Они реализованы не совсем правильно. Возьмем к примеру последнюю Procedure ORI(b:byte); Begin RgA:=RgA or b; SetFlagAc(false);SetFlagC(false); end;В описании сказано, что флаги изменяются следующим образом + + 0 + 0. Два флажка выставляете в 0, что правильно. Но три других флажка могут измениться, но у Вас это никак не учитывается. Галочка "подтверждения прочтения" - вселенское зло. | ||||||
|
Всех кого интересует этот проект могут скачать очередной черновик Вспомогательный модуль для среды Дельфи, с возможностью компилирования программ в машинные коды ПК-01 Львов версия 0.03 http://sas.forumbb.ru/viewtopic.php?id=290#p2104 | ||||||
|
С тех пор как я создал эту тему прошло немало времени и своё «детище» я уже выпустил «в свет». Желающие могут скачать здесь: 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 Хотелось бы услышать критику и пожелания. А так же у меня просьба протестировать на разных компах (слабых и мощных, старых и новых) (и на разных системах) на выявления торможения и других глюков. Не «за горами» выйдет новая версия программы. | ||||||
|
Уважаемые форумчане! Обращаюсь к тем кто скачивал и запускал (пользуется) моим эмулятором ( http://sas.forumbb.ru/click.php?http://file.oboz.ua/download.php?fid=394807 ). Очень прошу Вас написать о его торможении. Имеется ли оно?... Часто ли?... Может как-то знаете или поняли как избавляться от него?.. Стоит ли мне думать о том как от него в эмуляторе избавится??!!.. (если оно есть конечно). У меня лично — всё в порядке! Но это если в памяти «висит» Дельфи 7. Как это зависимо ума не приложу. Напишите пожалуйста при каких случаях у Вас всё хорошо (или плохо). С уважением, SAS, автор SAS emulator. | ||||||
|
Приношу извинения за то что не пояснил что подразумевается под «торможение»... Привожу тест для его определения. Надеюсь от подобного теста Вы получите удовольствие. Запустите 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 секундах) Заранее благодарен за внимание к моему эмулятору и за проведенный тест. | ||||||
|
[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] | ||||||
Перейти в раздел:
© 2004 - 2024, Delphi.int.ru |
Версия форума: 1.10 (19.01.2010) |
Выполнено за 0.01 сек. |