CGA и CF IDE адаптер на Altera MAX10

16-битные ПЦ-совместимые компьютеры с процессорами 8086/8088/80286 работающие под управлением ДОС

Moderator: Shaos

Tronix
Doomed
Posts: 662
Joined: 18 Nov 2013 02:38
Location: Москва

Re: CGA и CF IDE адаптер на Altera MAX10

Post by Tronix »

На всякий случай прикреплю мою поделку - показывает сегмент, с которого add-rom стартанул и дампит память на экран командой "D", как в дебаге. Сори за говнокод, но может чем-то поможет...
You do not have the required permissions to view the files attached to this post.
newold86
Devil
Posts: 716
Joined: 30 Nov 2013 11:08
Location: WWW

Re: CGA и CF IDE адаптер на Altera MAX10

Post by newold86 »

Спасибо за участие, но вроде я это все уже перепробовал... Вот мой код (последняя вариация на тему):

Code: Select all

CODE			Segment	

				Assume	cs:CODE
			
				org		0h

				db		55h, 0AAh
				db		8
Start:

SDbios			Proc far

				jmp short BIOSstart
				
				db		'SD card BIOS v 0.1'	
BIOSstart:
				jmp		$
				retf
			
SDbios			EndP
				
				org		4096 - 16
				db		'E of ExtROM 04'
				
				org		0fffh
				db		0ffh				; checksum byte
			
CODE			EndS
Что меня раздражает в таких случаях - при всей, на первый взгляд, таинственности происходящего, причина всегда оказывается совершенно неинтересной, а вот времени теряется куча...
Vic3Dexe
Doomed
Posts: 370
Joined: 16 Dec 2014 11:58
Location: Киев

Re: CGA и CF IDE адаптер на Altera MAX10

Post by Vic3Dexe »

Этот код - он физически где?
Если на плате - память там вообще кто-то тестил на битовые ошибки?
Возможно, EB FE превращается во что-то другое.

И кстати, вот это "jmp short BIOSstart" - выполняется? Строка обходится?

В общем, я бы для начала убедился в нормальной работе памяти.

ps И, по зрелом размышлении. Чем тестируется "выполнение" или не-"выполнение"? Фактом вылета в основной биос? Плохая идея. Возможно, и hlt не работает, а все просто виснет нафик.
Зациклите в биосе карты какое-то вычисление и вывод на экран чего попало, разрядов от '0' до '9', например, но синхронно с вычислениями. Ну, т.е., чтобы просто видеть, выполняется оно или нет. Дальше будет видно, происходит что-то вообще или нет, и как долго.
Mixa64
Doomed
Posts: 481
Joined: 25 Aug 2009 07:02
Location: Москва

Re: CGA и CF IDE адаптер на Altera MAX10

Post by Mixa64 »

newold86 wrote: Вот мой код
Лучше бы листинг, а то не код, а исходник для кода.
nop вставлять не пробовали? Типа:

Code: Select all

BIOSstart:
            nop
            nop
            nop
            nop
            nop
            jmp      $   ; (или BIOSstart)
            nop
            nop
            nop
            nop
            nop
            retf
так, просто позырить, что получится.
Vic3Dexe
Doomed
Posts: 370
Joined: 16 Dec 2014 11:58
Location: Киев

Re: CGA и CF IDE адаптер на Altera MAX10

Post by Vic3Dexe »

Mixa64 wrote:Лучше бы листинг, а то не код, а исходник для кода.
Во-1, далеко не все асмы умеют в листинг. Во-2, если асм сделан не на коленке (а я таких и не видел, кроме своего), то код соотвествует исходнику в 99.(9)% случаев.
Mixa64 wrote:nop вставлять не пробовали? <skip> так, просто позырить, что получится.
И что? Я не подкалываю, просто интересно, что ожидается позырить?
Mixa64
Doomed
Posts: 481
Joined: 25 Aug 2009 07:02
Location: Москва

Re: CGA и CF IDE адаптер на Altera MAX10

Post by Mixa64 »

Мне не на чем проверить. Идея - исключить фактор предвыборки. Скорее всего бред, но вдруг в чем-то будет отличаться. Ну и при условии, что из памяти по нужному адресу на шине процу выставляются нужные данные, конечно.
Vic3Dexe
Doomed
Posts: 370
Joined: 16 Dec 2014 11:58
Location: Киев

Re: CGA и CF IDE адаптер на Altera MAX10

Post by Vic3Dexe »

Mixa64 wrote:исключить фактор предвыборки.
Мысль понял. Но так как предвыборка для 8088 по сути есть выборка, то это вряд ли что-то даст. Это же не пень с его конвеером и out-of-order.
Да и проблема явно не в проце.
Mixa64 wrote:Ну и при условии, что из памяти по нужному адресу на шине процу выставляются нужные данные, конечно
Ну вот потому я и предполагаю ошибки памяти. Непротрав/непропай, сопля и т.п. На крайняк - битая память сама по себе.
Tronix
Doomed
Posts: 662
Joined: 18 Nov 2013 02:38
Location: Москва

Re: CGA и CF IDE адаптер на Altera MAX10

Post by Tronix »

newold86 wrote:

Code: Select all

				org		0fffh
				db		0ffh				; checksum byte
			
CODE			EndS
Ну и потом checksum рассчитывается внешней утилиткой, да? Он же не всегда ff, это вы так просто место зарезервировали?
newold86
Devil
Posts: 716
Joined: 30 Nov 2013 11:08
Location: WWW

Re: CGA и CF IDE адаптер на Altera MAX10

Post by newold86 »

Ого, сколько народу подтянулось ! :)
Vic3Dexe wrote:Этот код - он физически где?
Внутри MAX10, где сэмулирован extension ROM
Vic3Dexe wrote:Если на плате - память там вообще кто-то тестил на битовые ошибки?
Вывожу содержимое на дисплей - визуально все в полном порядке. Гонял по кругу минут 10 тест памяти (свой простейший) - тоже ошибок не выдал
Vic3Dexe wrote:Чем тестируется "выполнение" или не-"выполнение"?
Приведенный код - уже вырожденный до минимальности в ходе экспериментов, а вообще использую светодиод, управляемый записью в порт, что позволяет довольно однозначно идентифицировать (не)выполнение участка кода
Mixa64 wrote:Мне не на чем проверить. Идея - исключить фактор предвыборки
Самое интересное, что у меня в голове тоже нечто подобное крутится. Одно из возможных объяснений - какая-то хитрая аппаратная проблема, из-за которой содержимое памяти при выполнении команд читается по другому, чем при чтении этой же памяти как данных. Однако, как уже здесь замечали, в 8088 такого вроде не должно быть...
Tronix wrote:Ну и потом checksum рассчитывается внешней утилиткой, да?
Естественно

Наверное, пару дней не смогу экспериментировать, буду только думать :)
Потом попробую взяться с "чистого листа"...
Mixa64
Doomed
Posts: 481
Joined: 25 Aug 2009 07:02
Location: Москва

Re: CGA и CF IDE адаптер на Altera MAX10

Post by Mixa64 »

newold86 wrote:какая-то хитрая аппаратная проблема
Меня смутило только то, что процу скармливается последовательность jmp short; jmp short; ret far. Глубина конвейера предвыборки 4, там вторая jmp short и retf умещаются. Мало ли чо.
В общем, нужно приборами смотреть, что на шине происходит.
newold86
Devil
Posts: 716
Joined: 30 Nov 2013 11:08
Location: WWW

Re: CGA и CF IDE адаптер на Altera MAX10

Post by newold86 »

Tronix wrote:Потом вроде первым делом надо сделать jmp short куда-нибудь
Кстати, а вот это вообще откуда (необходимость обязательно сделать jmp) ?
Tronix
Doomed
Posts: 662
Joined: 18 Nov 2013 02:38
Location: Москва

Re: CGA и CF IDE адаптер на Altera MAX10

Post by Tronix »

newold86 wrote:
Tronix wrote:Потом вроде первым делом надо сделать jmp short куда-нибудь
Кстати, а вот это вообще откуда (необходимость обязательно сделать jmp) ?
Вот не могу сказать. Вроде-бы (читать: одна бабка другой сказала) что-то всплывает в моей памяти, что некоторые BIOS передают управление не на 0x04 оффсет, а куда-то дальше. И/или дополнительно проверяют EB четвертым байтом.
Или я путаю с ROM-basic'ом. Или я вообще все путаю. :mrgreen:
newold86
Devil
Posts: 716
Joined: 30 Nov 2013 11:08
Location: WWW

Re: CGA и CF IDE адаптер на Altera MAX10

Post by newold86 »

Tronix wrote:некоторые BIOS передают управление не на 0x04 оффсет
Я бы сказал, что все BIOS'ы передают управление НЕ на 0x04 оффсет :)

Code: Select all

			MOV		ES:@IO_ROM_INIT,0003H	; LOAD OFFSET
			MOV		ES:@IO_ROM_SEG,DS	; LOAD SEGMENT
			
			CALL	DWORD PTR ES:@IO_ROM_INIT	; CALL INIT./TEST ROUTINE
Vic3Dexe
Doomed
Posts: 370
Joined: 16 Dec 2014 11:58
Location: Киев

Re: CGA и CF IDE адаптер на Altera MAX10

Post by Vic3Dexe »

newold86 wrote:Внутри MAX10, где сэмулирован extension ROM
Так. И все-таки интересно
Vic3Dexe wrote:И кстати, вот это "jmp short BIOSstart" - выполняется? Строка обходится?
Я бы помониторил сигналтапом шину, что там происходит в момент EB FE. Светодиод - это несерьезно. Если выполнение улетает в африку (т.е. в произвольное место памяти), вы эту ситуацию от hlt не отличите. Смотрите на шину, если проц остановлен, он это показывает.
Mixa64 wrote:Глубина конвейера предвыборки 4
А не 6? У 8086 точно 6 по даташиту.
Tronix wrote:И/или дополнительно проверяют EB четвертым байтом
Это в бут-секторе дискетки, и там обязательно нужен трехбайтовый jmp near (E9 XX XX).
Mixa64
Doomed
Posts: 481
Joined: 25 Aug 2009 07:02
Location: Москва

Re: CGA и CF IDE адаптер на Altera MAX10

Post by Mixa64 »

Vic3Dexe wrote:
Mixa64 wrote:Глубина конвейера предвыборки 4
А не 6? У 8086 точно 6 по даташиту.
У этого да, три цикла шины на предвыборку, 8088 делает 4.