Ну, у меня тест из архива вообще детектит как 286 проц:
Вот этот тест детектит как 80188
Добавил сброс флага Z после умножения, теперь детектится как 8088![]()
С _mhz я ошибся, он детектит как 188 тоже. И то же по этому же принципу. SHL и SHR 8088 может сдвигать на любое число в то время как 188+ только на "число mod 32"
Все, новая версия все ок. Единственное пожелание - все-таки сделать обработку DIV и IDIV нормальную, чтоб не валила эмуль при делении на ноль. А то не могу PC Doctor тест Interrupts запустить, валится. И да, нужно разбираться с переполнением.
Еще кстати один баг вроде наблюдаю, но пока точно сформировать не могу. Щаз попробую тесты наваять...
---------- Post added at 15:43 ---------- Previous post was at 14:37 ----------
Еще вопрос - а как отлаживать программу во встроенном дебагере? Ну в смысле, как отловить момент запуска? А то я в ком строке набираю например SUPER.EXE, нажимаю Enter и открываю дебаг - а там уже прога завершилась. Может есть какая недокум фишка? Или встроить ее, например при записи в какой-нить порт открывать дебаг или при вызове int ffh или что то в этом духе? Чтоб можно было свои проги отлаживать. Или я чего-то не понимаю?
---------- Post added at 16:32 ---------- Previous post was at 15:43 ----------
И еще вопрос - почему эмулятор не работает с любыми другими FDD BIOS - выкидывает в монитор?
Я делаю так:
- запустил программу, вышел из неё
- открыл отладчик, поиском нашёл начало (несколько байт в точке входа)
- поставил туда бряк, запустил эмуль дальше (F5) и снова запустил программу
С .com файлами проще, они грузятся и запускаются по одному и тому-же адресу. У меня, например, после загрузки голого ДОСа, точка входа всегда одинаковая 0EBB:0 (ну или 0EAB:100, хотя я использую абсолютное смещение 0xEBB0, привычнее набирать без двоеточия). Ставлю бряк туда сразу после запуска отладчика.
Если другой BIOS рассчитан на другой контроллер - то понятно. А если на такой-же, то выкладывай свой BIOS, я поковыряю-потрассирую.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)