PC-01 Lviv
http://pc01.lviv.ua/forum/

Листинг стандартного ПЗУ
http://pc01.lviv.ua/forum/viewtopic.php?f=22&t=190
Page 1 of 2

Author:  Zelya [ 03 Jan 2012, 11:07 ]
Post subject:  Листинг стандартного ПЗУ

liberation
Quote:
Мож, что-то типа Wiki стоит развернуть
Я могу попробовать поставить wiki-движок на сайте. Только, боюсь, наполнения практически не будет. Даже по Спектруму, с его огромным комьюнити, их Вики выглядит "несчастной".

upd.
Связанная тема "Прошивки ПЗУ ПК-01 "Львов".

Author:  liberation [ 03 Jan 2012, 13:10 ]
Post subject: 

Quote:
Я могу попробовать поставить wiki-движок на сайте. Только, боюсь, наполнения практически не будет. Даже по Спектруму, с его огромным комьюнити, их Вики выглядит "несчастной".
Я такую штуку предлагаю сугубо из познавательных целей. Никогда ни с чем подобным не имел дела. Хочется помацать. Да и описание ПЗУ в таком виде будет выглядеть логично: для каждой подпрограммы по страничке с войной правок. :D

Author:  sadfsdfsdaf [ 03 Jan 2012, 19:19 ]
Post subject: 

Quote:
Хорошо, даже очень хорошо. Какую бы форму для этого выбрать? Мож, что-то типа Wiki стоит развернуть (я слабо ориентируюсь в подобных средствах представления информации)?
сложный вопрос - дамп базы IDA в виде .IDC под Subversion ... ? (такое потом легко перлом отконвертировать в удобоваримый вид, да и работать удобно)
Wiki это не очень удобно будет (во всяком случае - я её плохо знаю, не представляю как её в этом качестве заюзать). писать что-то своё ... дизассемблер на php под ajax ? можно попробовать, есть мысли, но выглядит громоздко ... даже с применением extjs и подобного.

Author:  liberation [ 03 Jan 2012, 19:39 ]
Post subject: 

Quote:
сложный вопрос - дамп базы IDA в виде .IDC под Subversion ... ? (такое потом легко перлом отконвертировать в удобоваримый вид, да и работать удобно)
Wiki это не очень удобно будет (во всяком случае - я её плохо знаю, не представляю как её в этом качестве заюзать). писать что-то своё ... дизассемблер на php под ajax ? можно попробовать, есть мысли, но выглядит громоздко ... даже с применением extjs и подобного.
Можно посмотреть в сторону github или его более либерального для бесплатной разработки родича bitbucket. Вот что на github'е люди вытворяют - JavaScript Garden.
Надо бы продумать, как получить исходники. А то получается, что надо будет в эмуляторе запускать дизассемблер.

Author:  sadfsdfsdaf [ 04 Jan 2012, 02:26 ]
Post subject: 

Quote:
Можно посмотреть в сторону github или его более либерального для бесплатной разработки родича bitbucket. Вот что на github'е люди вытворяют - JavaScript Garden
хгм. можно и git, он p2p, так что это даже лучше.
тогда для сайта достаточно будет написать только движок рендеринга (с попутным выводом истории правок из git-a).
что-то в этом есть......
Quote:
Надо бы продумать, как получить исходники. А то получается, что надо будет в эмуляторе запускать дизассемблер.
в "безголовом" режиме? да ну, это наверное лишнее. я исходно предполагал свой дизассемблер полностью написать (интерактивный) на extjs + php (например).
если предполагать, что работа ведётся локально в IDA, а конфликты разрешаются средствами cvs (svn, git), то пакетный конвертер из idc в html пишется максимум за день (вместе с отладкой). проблема не в нём (не в начальном исходнике), проблема в том, чтобы менять имена меткам и т.п. в "быстром/интерактивном" режиме, иначе весь смысл пропадает.
простой пакетный дизассемблер я вообще за пару часов "набросаю".

p.s. в принципе, если wiki позволяет дописать некоторые "макросы редактирования", работающие на стороне сервера, то, возможно, и её получится использовать.

Author:  Zelya [ 04 Jan 2012, 12:17 ]
Post subject: 

Что-то я не могу объеденить ваши посты воедино... Давайте попорядку. Вы хотите декомпилировать ПЗУ и раписать по нему документацию в форме wiki (или вроде того)? Ну тогда вопрос, зачем Subversion, дизассемблер на php и т.п. Да и целая вики на несколько килобайт кода - єто слишком жирно.
Я сначала себе представлял все, как общая Вики по "Львову". Ну и туда прау статеек по ПЗУ, которое дизассемблировать можно и оффлайн. Я в процессе разгребания всяких там "Карате" и прочих загрузчиков, частично это делал.
Или я что-то совсем не так понимаю?

Author:  liberation [ 04 Jan 2012, 12:22 ]
Post subject: 

Quote:
Что-то я не могу объеденить ваши посты воедино...
Просто Володя подходит к делу очень добротно и основательно. :)
Я первоначально представлял себе Вики, где можно было бы выделить каждой процедуре по статье.

Про Вики по "Львову" я не задумывался. Как сейчас понимаю - идея интересная!

Author:  orest [ 16 Dec 2013, 16:18 ]
Post subject:  Re: Листинг стандартного ПЗУ

Вот здесь вся память ОЗУ+ПЗУ одним файлом HTML, PDF (212 с.)

Спасибо товарищу SAS за отличньій дизассемблер!

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

Исходя из етого планируется сделать более функциональную версию, согласно вьішеутвержденному плану.
Пожелания приветствуются.

Author:  liberation [ 17 Dec 2013, 08:41 ]
Post subject:  Re: Листинг стандартного ПЗУ

Quote:
Исходя из етого планируется сделать более функциональную версию, согласно вьішеутвержденному плану.
Пожелания приветствуются.
Прикольно: я уже хотел удалить эту тему, а тут такой поворот. Особых пожеланий нет. Насколько я помню, первоначально хотелось сделать что-то в духе того, что сейчас делает божественный vinxru для "Специалиста" - подробно комментированный листинг стандартного ПЗУ (обе версии).

Вот свежий фрагмент для примера:
Code:
;+---------------------------------------------------------------------------
; MXOS
; Чтение байта с ленты
;
; На входе
;  a=255 загрузка первого байта 
;  a=8   загрузка
;
; На выходе
;  c - байт
;  de,hl - сохраняются
;
; 2013-12-12 Дизассемблировано vinxru
;----------------------------------------------------------------------------

tapeRead:	; Сохраняем регистры
		push	b
		push	d

		; Тут будет принятый байт
		mvi	c, 0

		; d=8 если загрузка (счетчик бит) или 0FFh если ожидание
		mov	d, a

tapeRead_0:	; Получаем состояние
		lda	IO_KEYB_B
		ani	1
		mov	e, a

		; Сдвигаем C
		mov	a, c
		ani	7Fh
		rlc
		mov	c, a

tapeRead_1:	; Получаем состояние
		lda	IO_KEYB_B

		; Если нажата клавиша, выходим
		cpi	80h
		jc	tapeReadError

		; Ждем изменения сигнала
		ani	1
		cmp	e
		jz	tapeRead_1

		; Сохраняем бит
		ora	c
		mov	c, a

		; Задержка
		call	readDelay

		lda	IO_KEYB_B
		ani	1
		mov	e, a

		; Если происходит загрузка данных, переходим на tapeRead_4
		mov	a, d
		ora	a
		jp	tapeRead_4

		; Если происходит ожидание
		; Если не найден 0E6h, переходим tapeRead_2
		mov	a, c		
		cpi	0E6h
		jnz	tapeRead_2

		; Начинаем загрузку без инверсии
		xra	a
		sta	v_tapeInverse
		jmp	tapeRead_3

tapeRead_2:	; Если не найден 19h, переходим на tapeRead_0
		cpi	19h
		jnz	tapeRead_0

		; Начинаем загрузку с инверсией
		mvi	a, 0FFh
		sta	v_tapeInverse

		; Загружаем 8 бит
tapeRead_3:	mvi	d, 9

		; Повторяем 8 байт
tapeRead_4:	dcr	d
		jnz	tapeRead_0

		; Инверсия байта
		lda	v_tapeInverse
		xra	c

		; Восстаналиваем регистры
		pop	d
		pop	b
		ret
Как-то так.

Author:  orest [ 17 Dec 2013, 20:06 ]
Post subject:  Re: Листинг стандартного ПЗУ

Quote:
Как-то так.
сам я вряд ли сходу осилю сию задачу - все-таки 150 страниц кода (и ето только ПЗУ)...
Да и знаний маловато пока.

Author:  liberation [ 18 Dec 2013, 08:38 ]
Post subject:  Re: Листинг стандартного ПЗУ

Quote:
сам я вряд ли сходу осилю сию задачу - все-таки 150 страниц кода (и ето только ПЗУ)...
Да, задача масштабная. И еще непонятно, насколько целесообразная.

Лучше напишите какую-нибудь игруху. Это точно будет дело! :wink:

Author:  orest [ 18 Dec 2013, 13:06 ]
Post subject:  Re: Листинг стандартного ПЗУ

Quote:
Да, задача масштабная. И еще непонятно, насколько целесообразная.
Лучше напишите какую-нибудь игруху. Это точно будет дело!
К правительству лететь - гравицапу надо иметь. В смьісле LvivOS как писать-то, без комментированного кода? :)
Игру, пожалуй, замутю. Только вот времени чей-то маловато. Есть, вроде, но маловато. "Львов" требует приличньіх мощностей на єто дело интелектуальньіх. А голова одна.

Author:  liberation [ 27 Mar 2014, 08:08 ]
Post subject:  Re: Листинг стандартного ПЗУ

Quote:
Исходя из етого планируется сделать более функциональную версию, согласно вьішеутвержденному плану.
Пожелания приветствуются.
Пробовал работать с докой, сразу же нашел багу (процедура по адресу 0xDD94 - сумбур вместо музыки). Похоже, доку надо еще вычитать хотя бы по основным процедурам (мануал), а то отличные дизассемблеры всякие бывают. Как там раньше говорили: "советское - значит отличное". Судя по всему, тут именно тот случай.

Author:  orest [ 27 Mar 2014, 12:55 ]
Post subject:  Re: Листинг стандартного ПЗУ

нє, асемблер тут ні до чого, думаю. Або дамп кривий, або так і було задумано, бо більшість точок співпадає, вроді.
Я брав класичну версію, з якогось емулятора. З моїм екземпляром, злитим з власного "Львова" - суттєві розбіжності, в кращий бік.

Author:  liberation [ 27 Mar 2014, 20:51 ]
Post subject:  Re: Листинг стандартного ПЗУ

Quote:
нє, асемблер тут ні до чого, думаю. Або дамп кривий, або так і було задумано, бо більшість точок співпадає, вроді.
Я брав класичну версію, з якогось емулятора. З моїм екземпляром, злитим з власного "Львова" - суттєві розбіжності, в кращий бік.
Смотрите, с дампом все в порядке, проблема в том, что не сделано разделение данных и кода (как я понимаю, в ПЗУ "Львова" такое явление не редкость).
Code:
$DD92:   LDA $3E00      ;$3A $00 $3E|58 0 62    |: > |56722
$DD95:   RNC            ;$D0        |208        |    |56725
$DD96:   STA $BE87      ;$32 $87 $BE|50 135 190 |2   |56726
$DD99:   CALL $E443     ;$CD $43 $E4|205 67 228 | C  |56729
Если смотреть сырой код, то видно, что процедура в полном порядке: 0xDD94: 0x3E, 0xD0 и далее по тексту, а вот если листинг... Такая вот тонкость. Нисколько не умаляю значимость Вашей работы, но нужна доработка.

Про Ваш дамп. А чем он отличается? Почему он лучше? Может, стоит выложить его в соседней теме "Прошивки ПЗУ ПК-01 "Львов""? Вдруг кому-то пригодится. :)

Page 1 of 2 All times are UTC+03:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/