Author |
Message |
Tronix
Doomed
Joined: 18 Nov 2013 02:38 Posts: 662 Location: Москва
|
На всякий случай прикреплю мою поделку - показывает сегмент, с которого add-rom стартанул и дампит память на экран командой "D", как в дебаге. Сори за говнокод, но может чем-то поможет...
|
23 Oct 2017 12:22 |
|
|
newold86
Devil
Joined: 30 Nov 2013 11:08 Posts: 707 Location: WWW
|
Спасибо за участие, но вроде я это все уже перепробовал... Вот мой код (последняя вариация на тему): Что меня раздражает в таких случаях - при всей, на первый взгляд, таинственности происходящего, причина всегда оказывается совершенно неинтересной, а вот времени теряется куча...
|
23 Oct 2017 12:44 |
|
|
Vic3Dexe
Doomed
Joined: 16 Dec 2014 11:58 Posts: 370 Location: Киев
|
Этот код - он физически где? Если на плате - память там вообще кто-то тестил на битовые ошибки? Возможно, EB FE превращается во что-то другое.
И кстати, вот это "jmp short BIOSstart" - выполняется? Строка обходится?
В общем, я бы для начала убедился в нормальной работе памяти.
ps И, по зрелом размышлении. Чем тестируется "выполнение" или не-"выполнение"? Фактом вылета в основной биос? Плохая идея. Возможно, и hlt не работает, а все просто виснет нафик. Зациклите в биосе карты какое-то вычисление и вывод на экран чего попало, разрядов от '0' до '9', например, но синхронно с вычислениями. Ну, т.е., чтобы просто видеть, выполняется оно или нет. Дальше будет видно, происходит что-то вообще или нет, и как долго.
|
23 Oct 2017 13:14 |
|
|
Mixa64
Doomed
Joined: 25 Aug 2009 07:02 Posts: 460 Location: Москва
|
Лучше бы листинг, а то не код, а исходник для кода. nop вставлять не пробовали? Типа: так, просто позырить, что получится.
|
23 Oct 2017 15:33 |
|
|
Vic3Dexe
Doomed
Joined: 16 Dec 2014 11:58 Posts: 370 Location: Киев
|
Во-1, далеко не все асмы умеют в листинг. Во-2, если асм сделан не на коленке (а я таких и не видел, кроме своего), то код соотвествует исходнику в 99.(9)% случаев. И что? Я не подкалываю, просто интересно, что ожидается позырить?
|
23 Oct 2017 15:38 |
|
|
Mixa64
Doomed
Joined: 25 Aug 2009 07:02 Posts: 460 Location: Москва
|
Мне не на чем проверить. Идея - исключить фактор предвыборки. Скорее всего бред, но вдруг в чем-то будет отличаться. Ну и при условии, что из памяти по нужному адресу на шине процу выставляются нужные данные, конечно.
|
23 Oct 2017 15:56 |
|
|
Vic3Dexe
Doomed
Joined: 16 Dec 2014 11:58 Posts: 370 Location: Киев
|
Мысль понял. Но так как предвыборка для 8088 по сути есть выборка, то это вряд ли что-то даст. Это же не пень с его конвеером и out-of-order. Да и проблема явно не в проце. Ну вот потому я и предполагаю ошибки памяти. Непротрав/непропай, сопля и т.п. На крайняк - битая память сама по себе.
|
23 Oct 2017 16:45 |
|
|
Tronix
Doomed
Joined: 18 Nov 2013 02:38 Posts: 662 Location: Москва
|
Ну и потом checksum рассчитывается внешней утилиткой, да? Он же не всегда ff, это вы так просто место зарезервировали?
|
23 Oct 2017 21:36 |
|
|
newold86
Devil
Joined: 30 Nov 2013 11:08 Posts: 707 Location: WWW
|
Ого, сколько народу подтянулось ! Внутри MAX10, где сэмулирован extension ROM Вывожу содержимое на дисплей - визуально все в полном порядке. Гонял по кругу минут 10 тест памяти (свой простейший) - тоже ошибок не выдал Приведенный код - уже вырожденный до минимальности в ходе экспериментов, а вообще использую светодиод, управляемый записью в порт, что позволяет довольно однозначно идентифицировать (не)выполнение участка кода Самое интересное, что у меня в голове тоже нечто подобное крутится. Одно из возможных объяснений - какая-то хитрая аппаратная проблема, из-за которой содержимое памяти при выполнении команд читается по другому, чем при чтении этой же памяти как данных. Однако, как уже здесь замечали, в 8088 такого вроде не должно быть... Естественно Наверное, пару дней не смогу экспериментировать, буду только думать Потом попробую взяться с "чистого листа"...
|
23 Oct 2017 22:51 |
|
|
Mixa64
Doomed
Joined: 25 Aug 2009 07:02 Posts: 460 Location: Москва
|
Меня смутило только то, что процу скармливается последовательность jmp short; jmp short; ret far. Глубина конвейера предвыборки 4, там вторая jmp short и retf умещаются. Мало ли чо. В общем, нужно приборами смотреть, что на шине происходит.
|
24 Oct 2017 02:28 |
|
|
newold86
Devil
Joined: 30 Nov 2013 11:08 Posts: 707 Location: WWW
|
Кстати, а вот это вообще откуда (необходимость обязательно сделать jmp) ?
|
24 Oct 2017 02:31 |
|
|
Tronix
Doomed
Joined: 18 Nov 2013 02:38 Posts: 662 Location: Москва
|
Вот не могу сказать. Вроде-бы (читать: одна бабка другой сказала) что-то всплывает в моей памяти, что некоторые BIOS передают управление не на 0x04 оффсет, а куда-то дальше. И/или дополнительно проверяют EB четвертым байтом. Или я путаю с ROM-basic'ом. Или я вообще все путаю.
|
24 Oct 2017 02:34 |
|
|
newold86
Devil
Joined: 30 Nov 2013 11:08 Posts: 707 Location: WWW
|
Я бы сказал, что все BIOS'ы передают управление НЕ на 0x04 оффсет
|
24 Oct 2017 02:43 |
|
|
Vic3Dexe
Doomed
Joined: 16 Dec 2014 11:58 Posts: 370 Location: Киев
|
Так. И все-таки интересно Я бы помониторил сигналтапом шину, что там происходит в момент EB FE. Светодиод - это несерьезно. Если выполнение улетает в африку (т.е. в произвольное место памяти), вы эту ситуацию от hlt не отличите. Смотрите на шину, если проц остановлен, он это показывает. А не 6? У 8086 точно 6 по даташиту. Это в бут-секторе дискетки, и там обязательно нужен трехбайтовый jmp near (E9 XX XX).
|
24 Oct 2017 05:03 |
|
|
Mixa64
Doomed
Joined: 25 Aug 2009 07:02 Posts: 460 Location: Москва
|
У этого да, три цикла шины на предвыборку, 8088 делает 4.
|
24 Oct 2017 06:20 |
|
|