CGA и CF IDE адаптер на Altera MAX10
Moderator: Shaos
-
- Doomed
- Posts: 662
- Joined: 18 Nov 2013 02:38
- Location: Москва
Re: CGA и CF IDE адаптер на Altera MAX10
На всякий случай прикреплю мою поделку - показывает сегмент, с которого add-rom стартанул и дампит память на экран командой "D", как в дебаге. Сори за говнокод, но может чем-то поможет...
You do not have the required permissions to view the files attached to this post.
-
- Devil
- Posts: 716
- Joined: 30 Nov 2013 11:08
- Location: WWW
Re: CGA и CF IDE адаптер на Altera MAX10
Спасибо за участие, но вроде я это все уже перепробовал... Вот мой код (последняя вариация на тему):
Что меня раздражает в таких случаях - при всей, на первый взгляд, таинственности происходящего, причина всегда оказывается совершенно неинтересной, а вот времени теряется куча...
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
-
- Doomed
- Posts: 370
- Joined: 16 Dec 2014 11:58
- Location: Киев
Re: CGA и CF IDE адаптер на Altera MAX10
Этот код - он физически где?
Если на плате - память там вообще кто-то тестил на битовые ошибки?
Возможно, EB FE превращается во что-то другое.
И кстати, вот это "jmp short BIOSstart" - выполняется? Строка обходится?
В общем, я бы для начала убедился в нормальной работе памяти.
ps И, по зрелом размышлении. Чем тестируется "выполнение" или не-"выполнение"? Фактом вылета в основной биос? Плохая идея. Возможно, и hlt не работает, а все просто виснет нафик.
Зациклите в биосе карты какое-то вычисление и вывод на экран чего попало, разрядов от '0' до '9', например, но синхронно с вычислениями. Ну, т.е., чтобы просто видеть, выполняется оно или нет. Дальше будет видно, происходит что-то вообще или нет, и как долго.
Если на плате - память там вообще кто-то тестил на битовые ошибки?
Возможно, EB FE превращается во что-то другое.
И кстати, вот это "jmp short BIOSstart" - выполняется? Строка обходится?
В общем, я бы для начала убедился в нормальной работе памяти.
ps И, по зрелом размышлении. Чем тестируется "выполнение" или не-"выполнение"? Фактом вылета в основной биос? Плохая идея. Возможно, и hlt не работает, а все просто виснет нафик.
Зациклите в биосе карты какое-то вычисление и вывод на экран чего попало, разрядов от '0' до '9', например, но синхронно с вычислениями. Ну, т.е., чтобы просто видеть, выполняется оно или нет. Дальше будет видно, происходит что-то вообще или нет, и как долго.
-
- Doomed
- Posts: 481
- Joined: 25 Aug 2009 07:02
- Location: Москва
Re: CGA и CF IDE адаптер на Altera MAX10
Лучше бы листинг, а то не код, а исходник для кода.newold86 wrote: Вот мой код
nop вставлять не пробовали? Типа:
Code: Select all
BIOSstart:
nop
nop
nop
nop
nop
jmp $ ; (или BIOSstart)
nop
nop
nop
nop
nop
retf
-
- Doomed
- Posts: 370
- Joined: 16 Dec 2014 11:58
- Location: Киев
Re: CGA и CF IDE адаптер на Altera MAX10
Во-1, далеко не все асмы умеют в листинг. Во-2, если асм сделан не на коленке (а я таких и не видел, кроме своего), то код соотвествует исходнику в 99.(9)% случаев.Mixa64 wrote:Лучше бы листинг, а то не код, а исходник для кода.
И что? Я не подкалываю, просто интересно, что ожидается позырить?Mixa64 wrote:nop вставлять не пробовали? <skip> так, просто позырить, что получится.
-
- Doomed
- Posts: 481
- Joined: 25 Aug 2009 07:02
- Location: Москва
Re: CGA и CF IDE адаптер на Altera MAX10
Мне не на чем проверить. Идея - исключить фактор предвыборки. Скорее всего бред, но вдруг в чем-то будет отличаться. Ну и при условии, что из памяти по нужному адресу на шине процу выставляются нужные данные, конечно.
-
- Doomed
- Posts: 370
- Joined: 16 Dec 2014 11:58
- Location: Киев
Re: CGA и CF IDE адаптер на Altera MAX10
Мысль понял. Но так как предвыборка для 8088 по сути есть выборка, то это вряд ли что-то даст. Это же не пень с его конвеером и out-of-order.Mixa64 wrote:исключить фактор предвыборки.
Да и проблема явно не в проце.
Ну вот потому я и предполагаю ошибки памяти. Непротрав/непропай, сопля и т.п. На крайняк - битая память сама по себе.Mixa64 wrote:Ну и при условии, что из памяти по нужному адресу на шине процу выставляются нужные данные, конечно
-
- Doomed
- Posts: 662
- Joined: 18 Nov 2013 02:38
- Location: Москва
Re: CGA и CF IDE адаптер на Altera MAX10
Ну и потом checksum рассчитывается внешней утилиткой, да? Он же не всегда ff, это вы так просто место зарезервировали?newold86 wrote:Code: Select all
org 0fffh db 0ffh ; checksum byte CODE EndS
-
- Devil
- Posts: 716
- Joined: 30 Nov 2013 11:08
- Location: WWW
Re: CGA и CF IDE адаптер на Altera MAX10
Ого, сколько народу подтянулось ! 
Наверное, пару дней не смогу экспериментировать, буду только думать
Потом попробую взяться с "чистого листа"...

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

Потом попробую взяться с "чистого листа"...
-
- Doomed
- Posts: 481
- Joined: 25 Aug 2009 07:02
- Location: Москва
Re: CGA и CF IDE адаптер на Altera MAX10
Меня смутило только то, что процу скармливается последовательность jmp short; jmp short; ret far. Глубина конвейера предвыборки 4, там вторая jmp short и retf умещаются. Мало ли чо.newold86 wrote:какая-то хитрая аппаратная проблема
В общем, нужно приборами смотреть, что на шине происходит.
-
- Devil
- Posts: 716
- Joined: 30 Nov 2013 11:08
- Location: WWW
Re: CGA и CF IDE адаптер на Altera MAX10
Кстати, а вот это вообще откуда (необходимость обязательно сделать jmp) ?Tronix wrote:Потом вроде первым делом надо сделать jmp short куда-нибудь
-
- Doomed
- Posts: 662
- Joined: 18 Nov 2013 02:38
- Location: Москва
Re: CGA и CF IDE адаптер на Altera MAX10
Вот не могу сказать. Вроде-бы (читать: одна бабка другой сказала) что-то всплывает в моей памяти, что некоторые BIOS передают управление не на 0x04 оффсет, а куда-то дальше. И/или дополнительно проверяют EB четвертым байтом.newold86 wrote:Кстати, а вот это вообще откуда (необходимость обязательно сделать jmp) ?Tronix wrote:Потом вроде первым делом надо сделать jmp short куда-нибудь
Или я путаю с ROM-basic'ом. Или я вообще все путаю.

-
- Devil
- Posts: 716
- Joined: 30 Nov 2013 11:08
- Location: WWW
Re: CGA и CF IDE адаптер на Altera MAX10
Я бы сказал, что все BIOS'ы передают управление НЕ на 0x04 оффсетTronix wrote:некоторые 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
-
- Doomed
- Posts: 370
- Joined: 16 Dec 2014 11:58
- Location: Киев
Re: CGA и CF IDE адаптер на Altera MAX10
Так. И все-таки интересноnewold86 wrote:Внутри MAX10, где сэмулирован extension ROM
Я бы помониторил сигналтапом шину, что там происходит в момент EB FE. Светодиод - это несерьезно. Если выполнение улетает в африку (т.е. в произвольное место памяти), вы эту ситуацию от hlt не отличите. Смотрите на шину, если проц остановлен, он это показывает.Vic3Dexe wrote:И кстати, вот это "jmp short BIOSstart" - выполняется? Строка обходится?
А не 6? У 8086 точно 6 по даташиту.Mixa64 wrote:Глубина конвейера предвыборки 4
Это в бут-секторе дискетки, и там обязательно нужен трехбайтовый jmp near (E9 XX XX).Tronix wrote:И/или дополнительно проверяют EB четвертым байтом
-
- Doomed
- Posts: 481
- Joined: 25 Aug 2009 07:02
- Location: Москва
Re: CGA и CF IDE адаптер на Altera MAX10
У этого да, три цикла шины на предвыборку, 8088 делает 4.Vic3Dexe wrote:А не 6? У 8086 точно 6 по даташиту.Mixa64 wrote:Глубина конвейера предвыборки 4