PC-01 Lviv

It is currently 29 Apr 2024, 02:31

Forum Games WEB Tape Loader Twitter RSS

All times are UTC+03:00




Post new topic  Reply to topic  [ 215 posts ]  Go to page Previous 1 2 3 4 515 Next
Author Message
 Post subject: Re: DprToLvt (PasToLvt)
PostPosted: 05 Jun 2012, 22:58 
Offline

Joined: 07 Dec 2010, 16:54
Posts: 227
Quote:
Quote:
Я предлагаю тебе сконцентрироваться на разработке ассемблера,
Ну допустим,… и чего там еще можна доработать?... ну «понимание меток» доработаю, все остальное я лично не понимаю нахрен оно кому надо?!
b2m говорит дело.

что ещё доделать? в ассемблер таблицу кросс-связей (какая метка откуда вызывается).
в отладчик - undo/redo, возможно в виде дерева.
Quote:
Дак если метки пока не реализованы... то без меток прямые адреса можно?
можно, но они нужны в 3-5% случаев. А без меток - это руками всё писать, без меток ассемблер бесполезен.
Quote:
есть еще вопрос: А это точно что этот листинг нужно прикричивать имеенно к асм, а не дизасм? (что так правильнее чтоль?)
дизасм не может отличить код от данных, у него нет кросс-переходов между метками, нет комментариев и макросов....
Quote:
Вообще в отличии от отладчика ассемблера с его ограниченным и «сдавленными» возможностями здесь они просто неограниченны.
в дельфи: распечатай трассу выполнения или отследи все зависимости по константе (всю цепочку команд, которая оперирует с заданным в каком-то месте аргументом). (dataflow analysis)
не сможешь.


Top
   
 Post subject: Re: DprToLvt (PasToLvt)
PostPosted: 05 Jun 2012, 23:11 
Offline

Joined: 07 Dec 2010, 16:54
Posts: 227
Quote:
Меня терзают смутные подозрения... Вроде бы я Вас уже спрашивал про сохранившиеся записи по дизассемблированию стандартного ПЗУ ПК-01? Что-то найти удалось?
я так до них и не добрался.

кстати, ещё вспомнилось, интересное место, перевод числа в 16-ричную цифру:
Code:
adi 90h
daa
aci 40h
daa
ret
daa добавляет 66 для коррекции, если цифры больше 9, aci учитывает перенос, в результате для 0-9 добавляем 30, а для A-F добавляем ещё 7 к предыдущему (6+1).


Top
   
 Post subject: Re: DprToLvt (PasToLvt)
PostPosted: 06 Jun 2012, 15:01 
Offline

Joined: 20 Apr 2012, 16:00
Posts: 372
Location: Конотоп
Quote:
что ещё доделать? в ассемблер таблицу кросс-связей (какая метка откуда вызывается).
А пример можно?.. Как должна выглядеть эта самая "таблица кросс-связей"...


Top
   
 Post subject: Re: DprToLvt (PasToLvt)
PostPosted: 06 Jun 2012, 20:59 
Offline

Joined: 20 Apr 2012, 16:00
Posts: 372
Location: Конотоп
Правитльно ли реализована (эмуляция)команда асма MOV D,M (и ей подобные)
Code:
Procedure MOVDM;
Begin RgD:=Memory[RgHL];
end;//???
B2M, я помню что ты говорил: "к памяти надо обращаться через процедуру, а не на прямую", но пока я не "възжаю" зачем это, то вопрос пока в таком контексте....


Top
   
 Post subject: Re: DprToLvt (PasToLvt)
PostPosted: 06 Jun 2012, 21:02 
Offline

Joined: 20 Apr 2012, 16:00
Posts: 372
Location: Конотоп
Процедуры присваивания одноименных регистров делать "пустышками" ?
Code:
Procedure MOVEE;
Begin
end;
Или все-таки правильнее так вот:
Code:
Procedure MOVEE;
Begin
RgE:=RgE;
end;


Top
   
 Post subject: Re: DprToLvt (PasToLvt)
PostPosted: 06 Jun 2012, 22:03 
Offline

Joined: 20 Apr 2012, 16:00
Posts: 372
Location: Конотоп
Правильно ли реализована команда асма 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


Top
   
 Post subject: Re: DprToLvt (PasToLvt)
PostPosted: 06 Jun 2012, 22:16 
Offline
User avatar

Joined: 11 Aug 2008, 17:05
Posts: 1405
Location: Украина
Quote:
B2M, я помню что ты говорил: "к памяти надо обращаться через процедуру, а не на прямую", но пока я не "възжаю" зачем это, то вопрос пока в таком контексте....
Скорее всего подразумевалось, что стоит создать класс Memory, который обвесить после геттерами и сеттерами, чтобы контролировать доступ к "памяти". К примеру, отслеживать ситуации, когда происходит попытка записи в область ПЗУ, или обращение в область 0000h-3FFFh при включенном видеоОЗУ, чтобы после бросить аццкий эксепшен (добавить строгий режим работы с памятью, чтобы помочь разработчикам). Можно отслеживать маппинг портов на ОЗУ, хотя на ПК-01 такой штуки не было, но это может быть задел на будущее. Но я не уверен, что Дельфи поддерживает механизм геттеров/сеттеров. :wink:

_________________
Carthago delenda est, Carthaginem delendam esse


Top
   
 Post subject: Re: DprToLvt (PasToLvt)
PostPosted: 06 Jun 2012, 22:48 
Offline

Joined: 20 Apr 2012, 16:00
Posts: 372
Location: Конотоп
Quote:
К примеру, отслеживать ситуации, когда происходит попытка записи в область ПЗУ, или обращение в область 0000h-3FFFh при включенном видеоОЗУ.... ...Можно отслеживать маппинг портов на ОЗУ....
Я это понял (немного разобрался) просмотрев исходнки из
; Эмулятор Львов ПК-01 ; Автор: Антон Игнатичев, 1998-2012 Файл: HARDWARE.ASM Процедуры ReadMem: WriteMem: там есть и другие.. пока не смотрел..
Quote:
Но я не уверен, что Дельфи поддерживает механизм геттеров/сеттеров. :wink:
???!!! Незнаю про что речь но я буду делать через процедуры и функции типа SetMem(addr,byte); =GetMem(addr);
а насчет "геттеров"/"сеттеров" - это не такое ли, что при записи или чтении переменной выполняется какая нить процедура по ее обработке? Если да, то в дельфи это есть, но как реализовывается, надо читать и вникать... а не хочется... :-) Я считаю, что у меня хоть и мало, но достаточно знаний реализовывать теми путями которые я знаю... Так и буду делать.
Успехов (себе) :-)


Top
   
 Post subject: Re: DprToLvt (PasToLvt)
PostPosted: 06 Jun 2012, 22:51 
Offline

Joined: 20 Apr 2012, 16:00
Posts: 372
Location: Конотоп
Правильно ли реализована команда асма {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;//???


Top
   
 Post subject: Re: DprToLvt (PasToLvt)
PostPosted: 06 Jun 2012, 23:03 
Offline
User avatar

Joined: 11 Aug 2008, 17:05
Posts: 1405
Location: Украина
Quote:
Правильно ли реализована команда асма {ANA B} 'A = A & B Логическое И',
Правильно ли реализована команда асма {XRA B} 'A = A ¤ B Исключающее ИЛИ',
Правильно ли реализована команда асма {ORA B} 'A = A ! B Логическое ИЛИ',
Учтите тот момент, что в некоторых язык различаются логические и битовые операции. Не могу вспомнить, как с этим в Дельфи.
А почему в образцах кода не присутствует логика обработки флагов?

_________________
Carthago delenda est, Carthaginem delendam esse


Top
   
 Post subject: Re: DprToLvt (PasToLvt)
PostPosted: 06 Jun 2012, 23:34 
Offline

Joined: 29 Mar 2012, 21:35
Posts: 115
Quote:
Правильно ли реализована команда асма {ANA B} 'A = A & B Логическое И',
Правильно ли реализована команда асма {XRA B} 'A = A ¤ B Исключающее ИЛИ',
Правильно ли реализована команда асма {ORA B} 'A = A ! B Логическое ИЛИ',
Нехватает сброса флага C, и установки по результату флагов S,Z,P. Установка флага AC недокументирована, но обычно он устанавливается в ноль, кроме операции AND, в которой флаг AC устанавливается в OR третьих битов аргументов.

Арифметические команды тоже должны устанавливать все флаги.


Top
   
 Post subject: Re: DprToLvt (PasToLvt)
PostPosted: 07 Jun 2012, 08:11 
Offline

Joined: 20 Apr 2012, 16:00
Posts: 372
Location: Конотоп
Я хочу для начала создать ВСЕ комнады хотябы ТОПОРНО, а "палировка" т.е. влияние каждой на флаг буду делать потом... надеюсь пойму как это делается.... ведь другие люди это понимали как кто... откуда-то брали инфу...
А мне может по их эмуляторам это проверить?... :-) :D :P


Top
   
 Post subject: Re: DprToLvt (PasToLvt)
PostPosted: 07 Jun 2012, 13:30 
Offline

Joined: 20 Apr 2012, 16:00
Posts: 372
Location: Конотоп
Если подключаеться видеостраница
MVI A, 0
OUT 0C2h
Обращение к видио памяти должно быть начиная с $4000? Которое соответсвует $0000 самой видеопамяти… Я ПРАВИЛЬНО ПОНИМАЮ?
А что должен делать проц(комп) в случае обращения меньше $4000?
--------------------
Область ПЗУ $C000 - $FFFF , я так понял изменить нельзя… А что должен делать проц(комп) при попытке?


Top
   
 Post subject: Re: DprToLvt (PasToLvt)
PostPosted: 07 Jun 2012, 13:49 
Offline
User avatar

Joined: 11 Aug 2008, 17:05
Posts: 1405
Location: Украина
Quote:
Если подключаеться видеостраница
MVI A, 0
OUT 0C2h
Обращение к видио памяти должно быть начиная с $4000? Которое соответсвует $0000 самой видеопамяти… Я ПРАВИЛЬНО ПОНИМАЮ?
За подключение/отключение видеоОЗУ отвечает 1-й бит порта 0С2h. После подключения видеоОЗУ адресация не меняется, вся работа с изображением происходит внутри бланка 4000-7FFFh.
Quote:
А что должен делать проц(комп) в случае обращения меньше $4000?
Если я правильно помню, то во "Львове" без всяких доработок бланк памяти 0000h-3FFFFh отображался на область 8000h-BFFFh при включении видеоОЗУ.
Quote:
Область ПЗУ $C000 - $FFFF , я так понял изменить нельзя… А что должен делать проц(комп) при попытке?
Ничего. По крайней мере пользователь никаких "спецэффектов" не наблюдает.

_________________
Carthago delenda est, Carthaginem delendam esse


Top
   
 Post subject: Re: DprToLvt (PasToLvt)
PostPosted: 07 Jun 2012, 16:16 
Offline

Joined: 20 Apr 2012, 16:00
Posts: 372
Location: Конотоп
А как такое реализовать? Что это вообше такое?..
DAA |Десятичная| |коррекция | | Преобразование содержимого аккумулятора в двоично-десятичный код.


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 215 posts ]  Go to page Previous 1 2 3 4 515 Next

Forum Games WEB Tape Loader Twitter RSS

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 9 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Powered by phpBB® Forum Software © phpBB Limited