User Tag List

Страница 15 из 19 ПерваяПервая ... 111213141516171819 ПоследняяПоследняя
Показано с 141 по 150 из 193

Тема: [Поиск 1] Эмуляция

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    16.09.2010
    Адрес
    г. Москва
    Сообщений
    1,951
    Спасибо Благодарностей отдано 
    81
    Спасибо Благодарностей получено 
    261
    Поблагодарили
    125 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от b2m Посмотреть сообщение
    Tronix, у меня какая-то неправильная версия CheckIt, она использует 32-битные команды (с префиксами 66h,67h). А какая версия использовалась на Поиске? И где её скачать?
    Ну у меня обычная CheckIT 4.10 работает на поиске без проблем. Вот тут брал: http://old-dos.ru/dl.php?id=619 То, что оно пытается юзать 386 команды - нормально вполне, там детектится 386 и выше проц. Скорее всего на этом все и вылетает. Нужно обрабатывать invalid opcode

    ---------- Post added at 18:24 ---------- Previous post was at 18:16 ----------

    Вот стандартная тащемто детектилка проца тех времен:
    Код:
    ;       8086 CPU check
    ;       Bits 12-15 are always set on the 8086 processor
    ;
    check_8086:
    	push cs
    	pop ds
    	push cs
    	pop es
    	pushf                           ;save FLAGS
    	pop     bx                      ;store FLAGS in BX
    	mov     ax, 0fffh               ;clear bits 12-15
    	and     ax, bx                  ;  in FLAGS
    	push    ax                      ;store new FLAGS calue on stack
    	popf                            ;replace current FLAGS value
    	pushf                           ;set new flags
    	pop     ax                      ;store new flags in AX
    	and     ax, 0f000h              ;if bits 12-15 are set, then CPU
    	cmp     ax, 0f000h              ;  is an 8086/8088
    	mov     cpu_type, 0             ; save the CPU type
    	je     end_get_cpuid_
    	jmp     short check_80286
    end_get_cpuid_:jmp end_get_cpuid
    
    ;
    ;       Intel 286 CPU check
    ;       Bits 12-15 are always clear on the Intel processor.
    ;
    check_80286:
    .286
    Смысл в том, что биты 12-15 регистра флагов на 8088 хрен поменяешь, они всегда аппаратно в единице. У вас в эмуле этот код отрабатывает и прыгает на проверку 286 и далее.
    Вложения Вложения
    • Тип файла: rar detcpu.rar (1.7 Кб, Просмотров: 131)
    Последний раз редактировалось Tronix; 16.12.2013 в 18:30.

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2

    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,926
    Спасибо Благодарностей отдано 
    105
    Спасибо Благодарностей получено 
    291
    Поблагодарили
    217 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Tronix Посмотреть сообщение
    Смысл в том, что биты 12-15 регистра флагов на 8088 хрен поменяешь, они всегда аппаратно в единице.
    Да, теперь CheckIt доходит до меню. Спасибо.

  4. #3

    Регистрация
    16.09.2010
    Адрес
    г. Москва
    Сообщений
    1,951
    Спасибо Благодарностей отдано 
    81
    Спасибо Благодарностей получено 
    261
    Поблагодарили
    125 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от b2m Посмотреть сообщение
    Да, теперь CheckIt доходит до меню. Спасибо.
    Но радоваться рано.. Пускаю тест, для проверки ADD/ INC опкодов и состояний флага после их исполнения. Выполняются они и потом сверяются с шаблонными значениями из массива.

    Но тут вылезает какая-то другая бага, он (эмулятор) мне пишет: error at 53 generated 5750 etalon: 5700 . Фишка в том, что по этому смещению (53h) в эталонном массиве нули, да и тест не должен ничего по этому смещению писать, там тоже должны быть нули (я затираю в начале сегмент ES 16Kb нулями).

    Проверка между эталоном и сгенереным масивом идет командой REP CMPSB. error at берется из 159-CX, когда находит первый несовпавший байт. Соответственно generated есть ES:[DI-1], etalon DS:[SI-1]. Вообщем чето где-то тут не так работает как надо.

    res_add.bin - это эталонный массив в бинарном виде, удобно в hex смотреть.
    Вложения Вложения
    • Тип файла: rar add.rar (3.1 Кб, Просмотров: 142)

  5. #4

    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,926
    Спасибо Благодарностей отдано 
    105
    Спасибо Благодарностей получено 
    291
    Поблагодарили
    217 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Обновил эмуль. Исправил push sp и aad.

    Цитата Сообщение от Tronix Посмотреть сообщение
    Смысл в том, что биты 12-15 регистра флагов на 8088 хрен поменяешь, они всегда аппаратно в единице.
    Я вот одного не пойму - в конце дампа res_mul.bin сохранён регистр флагов, и там старшие 4 бита нулевые. А сам говорил, что они должны быть 1. Откуда дамп?

  6. #5

    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,926
    Спасибо Благодарностей отдано 
    105
    Спасибо Благодарностей получено 
    291
    Поблагодарили
    217 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вот с чем сравнивается:
    Код:
    00000000:  FF FF 00 00 FE FF FF FF 02 00 03 00 00 80 FF 7F
    00000010:  AD B2 F5 93 45 F2 00 FF FE 03 80 7F 03 80 7F 80
    00000020:  00 A6 2C FF FF 01 00 FF FF FF FF 02 00 04 00 00
    00000030:  80 FF 7F F9 FB 61 BF 46 7F 01 FF FF 04 80 7F 04
    00000040:  80 7F 80 00 B9 8D 00 00 00 80 13 74 80 00 B6 00
    00000050:  00 00 00 00 00 00 00 00 00 00 00 00 83 F0 57 F0
    00000060:  93 F8 03 F0 97 F8 57 F0 87 F0 03 F8 92 F8 02 F0
    00000070:  97 F0 13 F0 03 F0 83 F0 86 F0 07 F8 96 F8 02 F0
    00000080:  97 F0 13 F0 03 F8 03 F8 92 F8 06 F0 93 F0 57 F0
    00000090:  82 F0 86 F0 83 F0 07 F8 96 F8 06 F0 93 F0 57 F0
    Отличие в старших битах 12-15. У меня тут еденицы, если это флаги, то вроде так и должно быть?

  7. #6

    Регистрация
    16.09.2010
    Адрес
    г. Москва
    Сообщений
    1,951
    Спасибо Благодарностей отдано 
    81
    Спасибо Благодарностей получено 
    261
    Поблагодарили
    125 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    со смещения 00 по смещение 4E - результаты работы ADD, INC. Потом несколько нулей (не используемых), далее со смещения 5C по 9F - флаги после результатов работы.

    Но все это вообще не важно пока, потому как в эмуле пишется бред - error at 53 - то есть он нашел различие по смещению 53. Как так - я хз, в эталонном массиве там нули, в генеррируемом тоже должны быть нули, ибо 1 кб очищаем и более туда (по смещению 53) никто ничо не пишет в процессе.

    Предполагаю, что REP CMPSB неправильно возвращает CX (который у меня и используется для вывода смещения по которому произошло несовпадение), либо что то еще.

  8. #7

    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,926
    Спасибо Благодарностей отдано 
    105
    Спасибо Благодарностей получено 
    291
    Поблагодарили
    217 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    По завершению repe cmpsb di=005e, cx=0042, это правильно?

    ---------- Post added at 16:50 ---------- Previous post was at 16:47 ----------

    Вывод байта работает неверно.
    al=0D -> aaa -> al=03 cy=1 -> aad 11 -> al=33
    Где косяк?

  9. #8

    Регистрация
    16.09.2010
    Адрес
    г. Москва
    Сообщений
    1,951
    Спасибо Благодарностей отдано 
    81
    Спасибо Благодарностей получено 
    261
    Поблагодарили
    125 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от b2m Посмотреть сообщение
    По завершению repe cmpsb di=005e, cx=0042, это правильно?
    Ну это значит нашлись отличия по смещению 5Dh. (159-42h) По крайней мере уже не бред.
    [COLOR="Silver"]
    Цитата Сообщение от b2m Посмотреть сообщение
    Вывод байта работает неверно.
    al=0D -> aaa -> al=03 cy=1 -> aad 11 -> al=33
    Где косяк?
    Ну вам виднее должно быть где косяк, я то сорцов не вижу. Очевидно, что в обработке этих опкодов. По крайней мере этот код byte2hex и word2hex я постоянно в детстве юзал - все работало на реале.

  10. #9

    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,926
    Спасибо Благодарностей отдано 
    105
    Спасибо Благодарностей получено 
    291
    Поблагодарили
    217 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Tronix Посмотреть сообщение
    все работало на реале.
    А можно по шагам расписать, как работает этот код? Каким образом получается +7 для чисел, больших 9?

    ---------- Post added at 17:06 ---------- Previous post was at 17:04 ----------

    Я бы понял, как это работает, если бы вместо aad 11h стояло adc al,30h. Но тут?

  11. #10

    Регистрация
    16.09.2010
    Адрес
    г. Москва
    Сообщений
    1,951
    Спасибо Благодарностей отдано 
    81
    Спасибо Благодарностей получено 
    261
    Поблагодарили
    125 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от b2m Посмотреть сообщение
    А можно по шагам расписать, как работает этот код? Каким образом получается +7 для чисел, больших 9?
    Честно - я его откуда-то скопипастил в лихих 90стых, поэтому не вникал. Но много где его юзал в своих програмульках, они работали нормально. Поэтому объяснить как это работает затрудняюсь, но это точно работает на реалах.

Страница 15 из 19 ПерваяПервая ... 111213141516171819 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. [Поиск 1] поиск информации по модулям
    от Daniil Chislov 86 в разделе Поиск
    Ответов: 7
    Последнее: 25.12.2023, 16:54
  2. [Поиск 3] Восстановление
    от Filin в разделе Поиск
    Ответов: 71
    Последнее: 13.12.2020, 16:23
  3. [Поиск 1] Tandy Sound эмуляция
    от Tronix в разделе Поиск
    Ответов: 2
    Последнее: 21.03.2019, 18:40
  4. [Поиск 2] Поиск информации
    от dk_spb в разделе Поиск
    Ответов: 17
    Последнее: 02.10.2017, 09:00
  5. Эмуляция AY/YM
    от mungo в разделе Эмуляторы
    Ответов: 18
    Последнее: 22.03.2013, 06:14

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •