PC-01 Lviv http://pc01.lviv.ua/forum/ |
|
DprToLvt (PasToLvt) http://pc01.lviv.ua/forum/viewtopic.php?f=20&t=153 |
Page 3 of 15 |
Author: | sadfsdfsdaf [ 05 Jun 2012, 22:58 ] |
Post subject: | Re: DprToLvt (PasToLvt) |
Quote: Quote: Я предлагаю тебе сконцентрироваться на разработке ассемблера,
Ну допустим,… и чего там еще можна доработать?... ну «понимание меток» доработаю, все остальное я лично не понимаю нахрен оно кому надо?!что ещё доделать? в ассемблер таблицу кросс-связей (какая метка откуда вызывается). в отладчик - undo/redo, возможно в виде дерева. Quote: Дак если метки пока не реализованы... то без меток прямые адреса можно?
можно, но они нужны в 3-5% случаев. А без меток - это руками всё писать, без меток ассемблер бесполезен.Quote: есть еще вопрос: А это точно что этот листинг нужно прикричивать имеенно к асм, а не дизасм? (что так правильнее чтоль?)
дизасм не может отличить код от данных, у него нет кросс-переходов между метками, нет комментариев и макросов....Quote: Вообще в отличии от отладчика ассемблера с его ограниченным и «сдавленными» возможностями здесь они просто неограниченны.
в дельфи: распечатай трассу выполнения или отследи все зависимости по константе (всю цепочку команд, которая оперирует с заданным в каком-то месте аргументом). (dataflow analysis)не сможешь. |
Author: | sadfsdfsdaf [ 05 Jun 2012, 23:11 ] |
Post subject: | Re: DprToLvt (PasToLvt) |
Quote: Меня терзают смутные подозрения... Вроде бы я Вас уже спрашивал про сохранившиеся записи по дизассемблированию стандартного ПЗУ ПК-01? Что-то найти удалось?
я так до них и не добрался.кстати, ещё вспомнилось, интересное место, перевод числа в 16-ричную цифру: Code: adi 90h daa aci 40h daa retdaa добавляет 66 для коррекции, если цифры больше 9, aci учитывает перенос, в результате для 0-9 добавляем 30, а для A-F добавляем ещё 7 к предыдущему (6+1). |
Author: | sas9568635 [ 06 Jun 2012, 15:01 ] |
Post subject: | Re: DprToLvt (PasToLvt) |
Quote: что ещё доделать? в ассемблер таблицу кросс-связей (какая метка откуда вызывается).
А пример можно?.. Как должна выглядеть эта самая "таблица кросс-связей"...
|
Author: | sas9568635 [ 06 Jun 2012, 20:59 ] |
Post subject: | Re: DprToLvt (PasToLvt) |
Правитльно ли реализована (эмуляция)команда асма MOV D,M (и ей подобные) Code: Procedure MOVDM; Begin RgD:=Memory[RgHL]; end;//???B2M, я помню что ты говорил: "к памяти надо обращаться через процедуру, а не на прямую", но пока я не "възжаю" зачем это, то вопрос пока в таком контексте.... |
Author: | sas9568635 [ 06 Jun 2012, 21:02 ] |
Post subject: | Re: DprToLvt (PasToLvt) |
Процедуры присваивания одноименных регистров делать "пустышками" ? Code: Procedure MOVEE; Begin end;Или все-таки правильнее так вот: Code: Procedure MOVEE; Begin RgE:=RgE; end; |
Author: | sas9568635 [ 06 Jun 2012, 22:03 ] |
Post subject: | Re: DprToLvt (PasToLvt) |
Правильно ли реализована команда асма ADD M Procedure ADDM; Code: Begin RgA:=RgA+Memory[RgHL]; end;Как правильно реализовать команду ADC S | A=A+S+c Сложение с учетом признака переноса "c". (S: A,B,C,D,E,H,L,M.) Либо как правильно перевести ее реализцию с АСМа на ПАС… Code: ; ADC B C88: mov ah, [RgF] sahf mov al, [RgB] adc [RgA], al lahf mov [RgF], ah ret |
Author: | liberation [ 06 Jun 2012, 22:16 ] |
Post subject: | Re: DprToLvt (PasToLvt) |
Quote: B2M, я помню что ты говорил: "к памяти надо обращаться через процедуру, а не на прямую", но пока я не "възжаю" зачем это, то вопрос пока в таком контексте....
Скорее всего подразумевалось, что стоит создать класс Memory, который обвесить после геттерами и сеттерами, чтобы контролировать доступ к "памяти". К примеру, отслеживать ситуации, когда происходит попытка записи в область ПЗУ, или обращение в область 0000h-3FFFh при включенном видеоОЗУ, чтобы после бросить аццкий эксепшен (добавить строгий режим работы с памятью, чтобы помочь разработчикам). Можно отслеживать маппинг портов на ОЗУ, хотя на ПК-01 такой штуки не было, но это может быть задел на будущее. Но я не уверен, что Дельфи поддерживает механизм геттеров/сеттеров.
|
Author: | sas9568635 [ 06 Jun 2012, 22:48 ] |
Post subject: | Re: DprToLvt (PasToLvt) |
Quote: К примеру, отслеживать ситуации, когда происходит попытка записи в область ПЗУ, или обращение в область 0000h-3FFFh при включенном видеоОЗУ.... ...Можно отслеживать маппинг портов на ОЗУ....
Я это понял (немного разобрался) просмотрев исходнки из; Эмулятор Львов ПК-01 ; Автор: Антон Игнатичев, 1998-2012 Файл: HARDWARE.ASM Процедуры ReadMem: WriteMem: там есть и другие.. пока не смотрел.. Quote: Но я не уверен, что Дельфи поддерживает механизм геттеров/сеттеров.
???!!! Незнаю про что речь но я буду делать через процедуры и функции типа SetMem(addr,byte); =GetMem(addr);а насчет "геттеров"/"сеттеров" - это не такое ли, что при записи или чтении переменной выполняется какая нить процедура по ее обработке? Если да, то в дельфи это есть, но как реализовывается, надо читать и вникать... а не хочется... Я считаю, что у меня хоть и мало, но достаточно знаний реализовывать теми путями которые я знаю... Так и буду делать. Успехов (себе) |
Author: | sas9568635 [ 06 Jun 2012, 22:51 ] |
Post subject: | Re: DprToLvt (PasToLvt) |
Правильно ли реализована команда асма {ANA B} 'A = A & B Логическое И', Code: Procedure ANAB; Begin RgA:=RgA and RgB; end;//???Правильно ли реализована команда асма {XRA B} 'A = A ¤ B Исключающее ИЛИ', Code: Procedure XRAB; Begin RgA:=RgA xor RgB; end;//???Правильно ли реализована команда асма {ORA B} 'A = A ! B Логическое ИЛИ', Code: Procedure ORAB; Begin RgA:=RgA or RgB; end;//??? |
Author: | liberation [ 06 Jun 2012, 23:03 ] |
Post subject: | Re: DprToLvt (PasToLvt) |
Quote: Правильно ли реализована команда асма {ANA B} 'A = A & B Логическое И',
Учтите тот момент, что в некоторых язык различаются логические и битовые операции. Не могу вспомнить, как с этим в Дельфи.Правильно ли реализована команда асма {XRA B} 'A = A ¤ B Исключающее ИЛИ', Правильно ли реализована команда асма {ORA B} 'A = A ! B Логическое ИЛИ', А почему в образцах кода не присутствует логика обработки флагов? |
Author: | b2m [ 06 Jun 2012, 23:34 ] |
Post subject: | Re: DprToLvt (PasToLvt) |
Quote: Правильно ли реализована команда асма {ANA B} 'A = A & B Логическое И',
Нехватает сброса флага C, и установки по результату флагов S,Z,P. Установка флага AC недокументирована, но обычно он устанавливается в ноль, кроме операции AND, в которой флаг AC устанавливается в OR третьих битов аргументов.Правильно ли реализована команда асма {XRA B} 'A = A ¤ B Исключающее ИЛИ', Правильно ли реализована команда асма {ORA B} 'A = A ! B Логическое ИЛИ', Арифметические команды тоже должны устанавливать все флаги. |
Author: | sas9568635 [ 07 Jun 2012, 08:11 ] |
Post subject: | Re: DprToLvt (PasToLvt) |
Я хочу для начала создать ВСЕ комнады хотябы ТОПОРНО, а "палировка" т.е. влияние каждой на флаг буду делать потом... надеюсь пойму как это делается.... ведь другие люди это понимали как кто... откуда-то брали инфу... А мне может по их эмуляторам это проверить?... |
Author: | sas9568635 [ 07 Jun 2012, 13:30 ] |
Post subject: | Re: DprToLvt (PasToLvt) |
Если подключаеться видеостраница MVI A, 0 OUT 0C2h Обращение к видио памяти должно быть начиная с $4000? Которое соответсвует $0000 самой видеопамяти… Я ПРАВИЛЬНО ПОНИМАЮ? А что должен делать проц(комп) в случае обращения меньше $4000? -------------------- Область ПЗУ $C000 - $FFFF , я так понял изменить нельзя… А что должен делать проц(комп) при попытке? |
Author: | liberation [ 07 Jun 2012, 13:49 ] |
Post subject: | Re: DprToLvt (PasToLvt) |
Quote: Если подключаеться видеостраница
За подключение/отключение видеоОЗУ отвечает 1-й бит порта 0С2h. После подключения видеоОЗУ адресация не меняется, вся работа с изображением происходит внутри бланка 4000-7FFFh.MVI A, 0 OUT 0C2h Обращение к видио памяти должно быть начиная с $4000? Которое соответсвует $0000 самой видеопамяти… Я ПРАВИЛЬНО ПОНИМАЮ? Quote: А что должен делать проц(комп) в случае обращения меньше $4000?
Если я правильно помню, то во "Львове" без всяких доработок бланк памяти 0000h-3FFFFh отображался на область 8000h-BFFFh при включении видеоОЗУ.Quote: Область ПЗУ $C000 - $FFFF , я так понял изменить нельзя… А что должен делать проц(комп) при попытке?
Ничего. По крайней мере пользователь никаких "спецэффектов" не наблюдает.
|
Author: | sas9568635 [ 07 Jun 2012, 16:16 ] |
Post subject: | Re: DprToLvt (PasToLvt) |
А как такое реализовать? Что это вообше такое?.. DAA |Десятичная| |коррекция | | Преобразование содержимого аккумулятора в двоично-десятичный код. |
Page 3 of 15 | All times are UTC+03:00 |
Powered by phpBB® Forum Software © phpBB Limited https://www.phpbb.com/ |