User Tag List

Показано с 1 по 10 из 52

Тема: SpectrumProgress#3

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

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

    Регистрация
    27.02.2005
    Адрес
    москва
    Сообщений
    14,291
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    202
    Спасибо Благодарностей получено 
    1,456
    Поблагодарили
    946 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    кусок журнального кода выполняется некорректно. мне пока трудно понять кто виноват: некорректный FDIобраз или эмуляция ВГшки.
    знатоки объясните что тут делается

    Код:
    	PUSH HL
    	PUSH BC
    	PUSH DE
    	XOR  A
    	LD   C,#3F
    	LD   IX,#2A53 ; out (c),a
    	CALL #DOS     ; ret
    	LD   A,#0A
    	LD   C,#5F
    	LD   IX,#2A53 ; out (c),a
    	CALL #DOS     ; ret
    	LD   D,#01
    	LD   IX,#3F33 ; ???
    	CALL #DOS
    	LD   A,#02
    	LD   C,#3F
    	LD   IX,#2A53 ; out (c(a)
    	CALL #DOS     ; ret
    	LD   A,B
    	POP  DE
    	POP  BC
    	POP  HL
    	
            AND  #1F
            CP   #08
            JP Z,NEXT
    ERROR
    DOS это выполнение программы в ПЗУtrdos по-адресу в IX.
    Последний раз редактировалось goodboy; 22.01.2014 в 23:42.

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

  3. #2

    Регистрация
    27.03.2005
    Адрес
    CПб
    Сообщений
    711
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от goodboy Посмотреть сообщение
    объясните что тут делается
    Чтение порта #1F ВГ93.

  4. #3

    Регистрация
    18.11.2008
    Адрес
    пос.Полярный, ЯНАО
    Сообщений
    1,079
    Спасибо Благодарностей отдано 
    5
    Спасибо Благодарностей получено 
    15
    Поблагодарили
    9 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от goodboy Посмотреть сообщение
    кусок журнального кода выполняется некорректно. мне пока трудно понять кто виноват: некорректный FDIобраз или эмуляция ВГшки.
    знатоки объясните что тут делается

    Код:
    	PUSH HL
    	PUSH BC
    	PUSH DE
    	XOR  A
    	LD   C,#3F
    	LD   IX,#2A53 ; out (c),a
    	CALL #DOS     ; ret
    	LD   A,#0A
    	LD   C,#5F
    	LD   IX,#2A53 ; out (c),a
    	CALL #DOS     ; ret
    	LD   D,#01
    	LD   IX,#3F33 ; ???
    	CALL #DOS
    	LD   A,#02
    	LD   C,#3F
    	LD   IX,#2A53 ; out (c(a)
    	CALL #DOS     ; ret
    	LD   A,B
    	POP  DE
    	POP  BC
    	POP  HL
    	
            AND  #1F
            CP   #08
            JP Z,NEXT
    ERROR
    DOS это выполнение программы в ПЗУtrdos по-адресу в IX.
    ТС, проверь, защищен ли диск (образ) от записи.

  5. #4

    Регистрация
    18.11.2008
    Адрес
    пос.Полярный, ЯНАО
    Сообщений
    1,079
    Спасибо Благодарностей отдано 
    5
    Спасибо Благодарностей получено 
    15
    Поблагодарили
    9 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от goodboy Посмотреть сообщение
    знатоки объясните что тут делается

    Код:
    	PUSH HL
    	PUSH BC
    	PUSH DE
    	XOR  A                           ;нулевая
    	LD   C,#3F                      ;дорожка
    	LD   IX,#2A53 ; out (c),a
    	CALL #DOS     ; ret    
    	LD   A,#0A                      ;десятый
    	LD   C,#5F                      ;сектор
    	LD   IX,#2A53 ; out (c),a
    	CALL #DOS     ; ret
    	LD   D,#01
    	LD   IX,#3F33 ; ???
    	CALL #DOS                    ;чтение состояния ВГ
    	LD   A,#02                     ;вторая
    	LD   C,#3F                     ;дорожка
    	LD   IX,#2A53 ; out (c(a)
    	CALL #DOS     ; ret
    	LD   A,B                         ;восстанавливаем состояние ВГ
    	POP  DE                   
    	POP  BC
    	POP  HL
    	
            AND  #1F                       ;сброс прочих битов состояния ВГ
            CP   #08                        ;была ошибка контрольной суммы?
            JP Z,NEXT                      ;если была она и только она, то все ОК
    ERROR                                   ;иначе ERROR
    ;варианты прихода сюда:
    ;1. ошибок ВГ не было, а это не ожидается.
    ;2.  была ошибка, и это не ошибка КС
    DOS это выполнение программы в ПЗУtrdos по-адресу в IX.
    Я не знаток, но прокомментировал в коде.

    Надо ставить точку останова на ERROR, и смотреть, что в аккумуляторе и запостить сюда. Еще интересно знать, какую команду выполняла ВГэйка.
    Посмотреть в анриле. Запостить.
    Как? На скриншоте выделено. Красный квадратик - код команды ВГ, желтый квадратик состояние ВГ.
    P.S. Желательно отключить trap и no_delay в анриле.
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	unreal_gb.png 
Просмотров:	235 
Размер:	9.0 Кб 
ID:	45226  

  6. #5

    Регистрация
    22.06.2005
    Адрес
    Ульяновск
    Сообщений
    161
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от goodboy Посмотреть сообщение
    кусок журнального кода выполняется некорректно. мне пока трудно понять кто виноват: некорректный FDIобраз или эмуляция ВГшки.
    знатоки объясните что тут делается

    Код:
    	PUSH HL
    	PUSH BC
    	PUSH DE
    	XOR  A
    	LD   C,#3F
    	LD   IX,#2A53 ; out (c),a
    	CALL #DOS     ; ret
    	LD   A,#0A
    	LD   C,#5F
    	LD   IX,#2A53 ; out (c),a
    	CALL #DOS     ; ret
    	LD   D,#01
    	LD   IX,#3F33 ; ???
    	CALL #DOS
    	LD   A,#02
    	LD   C,#3F
    	LD   IX,#2A53 ; out (c(a)
    	CALL #DOS     ; ret
    	LD   A,B
    	POP  DE
    	POP  BC
    	POP  HL
    	
            AND  #1F
            CP   #08
            JP Z,NEXT
    ERROR
    DOS это выполнение программы в ПЗУtrdos по-адресу в IX.
    В этом листинге приведен классический алгоритм процедуры чтения регистра состояний #1f ("ZX-Spectrum & TR-DOS Для пользователей и программистов" А.Ларченко и Н.Родинов. Питер'93, с.211:
    Код:
    (c) Andrew MOA Larchenko
    in_1f  out (#3f),0
           out (#5f),#a
           ld d,#01
           jp #3f33
    На выходе, в регистре b будет находиться значение регистра состояний #1f, т.е. таким способом эмулируется команда in b,(#1f). Однако, при выполнении данной процедуры будут запорчены регистры дорожки #3f и сектора #5f, поэтому, при необходимости, следует восстановить в них исходные значения.

    Расшифровка данных из регистра b, полученных после чтения регистра состояний #1f:
    Когда на твой вопрос отвечает философ, перестаешь понимать вопрос

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

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

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

Ваши права

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