А как разница? Либо то, либо се. А еще есть /IORD, /IOWR, их тоже не забыть.Tronix wrote:А если будет /MWR ?
Зачем его генерить заново? Адрес стробируется по спаду ALE. Значит, этот самый спад надо просто подтянуть куда следует.Tronix wrote:Если спад ALE и MEMRn в нуле, то ждем фронта MEMRn и генерим ALE
Т.е., есть регистр, такт по фронту ALE, D=1. Далее предусматриваем регистру асинхронный сброс:
- либо на шине CPU, тогда сброс по MIO_CYCLE = (~/MRD | ~/MWR | ~/IORD | ~/IORW) = ~(/MRD & /MWR & /IORD & /IOWR), т.е. по спаду любого из этих сигналов.
- либо на шине кто-то еще, тогда сброс по MIO_CYCLE, но как только шину получит CPU.
Итого получаем ALE_RESET = MIO_CYCLE & CPU_HAS_BUS.
Нужен D-триггер с асинхронным сбросом - 1 шт., 4И-НЕ - 1 шт., И - 1 шт.
Ну и на формирование CPU_HAS_BUS чего-то по мелочи.
Что меня вымораживает, ALE и BALE - одно и тоже, т.е. адрес шины проца стробируется в латчи, и ЭТИМ же сигналом ВЫХОД этих латчей типа должен стробироваться в карточке.
Т.е. латчи настолько суровы, что пока ALE долетает до карточки, они уже устаканили данные на выходе...
В общем бред этот ALE, /MRD и остальные - наше все.
MS-DOS loading - грузится msdos.sys (после io.sys).newold86 wrote:наглухо зависает...
Сложно что-то посоветовать, телепат из меня хреновый. Вангую ошибки в передаче данных.
Я ловил самым простым и тупым путем - делал слепок какого-либо сектора, например boot, закидывал в bios. Дальше bios в цикле читал этот сектор, сравнивал с оригиналом, и отваливался, если были расхождения, причем выводил на экран текст сектора, а отличия маркировал красным.
Так как у вас сама плата, похоже, работает нормально, вероятно проблема опять в шине.
Поэтому есть смысл читать сектор в RAM, а не в MAX, и сравнивать образ в биосе с образом в раме.