ZX-Ревю 1996 №7-8 1995 г.

Читатель - читателю - доработка программ для "ATM Turbo".


(С) Коваленко В.В.
            г. Яровое, Алтайский край, 1996

   Я до недавних пор не являлся подписчиком Вашего журнала, но время от
времени мне попадались в руки его номера. Как то в одном из журналов в
разделе "Форум" я прочитал отзыв о компьютере "ATM-turbo (2,2+), и читатель,
написавший письмо сетовал на неработоспособность программ "FCommander
3.07","DCU 2.02","DCU 2.31" на этих компьютерах. Не знаю, был ли ответ на
этот вопрос в каком-либо из номеров Вашего журнала и поэтому хочу
поделиться своими исследованиями по этому вопросу.
   Во всех этих программах для обеспечения точности часов, во время работы
с диском, используется система прерываний второго рода (IM2). О работе
TR-DOS с прерываниями второго рода уже упоминалась на страницах Вашего
журнала, и поэтому я не буду подробно останавливаться на этом вопросе. В
этих программах в регистр i заносится число #09; таким образом, вектор
прерываний будет указывать на адрес #09FF. Если прерывание произойдет в
ПЗУ ОС, то оттуда будет считано число #FE69. По этому адресу в этих
программах находится команда, делающая переход на подпрограмму обработки
прерываний ОС. Если прерывание происходит в ПЗУ TR-DOS, то будет считано
число #FFFF. Предварительно по этому адресу записывается число #18, и мы
получаем JR #F3, т.е. переход на адрес #FFF4, где находится команда,
делающая переход на подпрограмму обработки прерываний, если они возникли
при работе в TR-DOS. Все сказанное выше будет работать, если у Вас
стандартное ПЗУ TR-DOS, но в компьютере ATM-Turbo в ПЗУ TR-DOS по адресу
#09FF находится число #3200, и эти программы сделают переход на адрес
#3200, а не на #FFFF.
   Теперь приведу пример переделки программы FCommander 3.07 для работы на
ATM-turbo. Все адреса будут даны при просмотре программой ADM.
   По адресу #8B03 находится программа, устанавливающая прерывания IM2:

8B03    LD      A,#09
        LD      I,A
        LD      A,#C3
        LD      (#FE69),A
        LD      HL,#F498
        LD      (#FE6A),HL
        LD      (#FFF4),A
        LD      HL,#F28C
        LD      (#FFF5),HL
        IM2
        ...

   Так как адрес #09FF нам применить нельзя, используем #3AFF (в ПЗУ ОС
там будет #FFFF, в ПЗУ TR-DOS ATM-turbo - #F100, в стандартном TR-DOS
то же #F100).

Изменим программу:

8B03    LD      A,#3A
        LD      I,A
        LD      A,#C3
        LD      (#FFF4),A
        LD      HL,#F498
        LD      (#FFF5),HL
        LD      (#F100),A
        LD      HL,#F28C
        LD      (#F101),HL
        IM2
        ...

   После этого мы получим работающую на ATM-turbo программу, к тому же на
других компьютерах она тоже будет работать нормально. Недостатки: по
адресу #F100 находится символьный набор, и мы испортим цифру 4 в часах и в
надписи "48", которая появляется в левом верхнем углу в режиме 48K. Для
того, чтобы это устранить, делаем следующее. В этой программе два набора
цифр в символьном наборе, поэтому если изменить по адресу #8DC5 команду
LD BC,#F0DB на LD BC,#EE5C, то часы и надпись "48" будут выводиться
несколько утолщенным, но неиспорченным шрифтом. Побочные явления: перед
надписью "48" стоит двоеточие, а двоеточие в часах перестанет мигать.

Устранение:
#8DA5   3E5A     LD  A,#5A
#9581   3E5B     LD  A,#5B
По этим адресам было:
#8DA5   3E0A     LD  A,#0A
#9581   3E0B     LD  A,#0B

   В результате мы получим полностью работоспособную программу, без всяких
побочных явлений.

   В программе "DCU 2.02" можно фрагмент программы:
LD      A,#09
LD      I,A
LD      A,#C3
LD      (#FE69),A
LD      HL,#EA89
LD      (#FE6A),HL
LD      (#FFF4),A
LD      HL,#E860
LD      (#FFF5),HL
IM2
...
изменить на:
LD      A,#16
LD      I,A
LD      A,#C3
LD      (#C970),A
LD      HL,#EA89
LD      (#C971),HL
LD      (#FFF4),A
LD      HL,#E860
LD      (#FFF5),HL
IM2
...

   При этом несколько испортится надпись "(c) 1991 Piter ltd., Leningrad".
Программа будет работать только на "ATM-turbo".

   В программе "DCU 2.31" можно сделать следующие изменения (будут указаны
реальные адреса). По адресу #EC7E записать:

EC7E    LD      A,#3A
        LD      I,A
        LD      A,#C3
        LD      (#FFF4),A
        LD      HL,(#EEDF)
        LD      (#FFF5),HL
        LD      (#F100),A
        LD      HL,#ECB2
        LD      (#F101),HL
        IM2
        ...

по адресу #F0FD записать JP #C50A
по адресу #C509

C509    NOP
C50A    LD      DE,#0064 *
        CALL    #F110    *
        JP      #F103    *

   В принципе, команды отмеченные звездочкой можно записать в любом другом
месте, соответственно изменив команду безусловного перехода по адресу
#F0FD.
   После этой переделки программа будет успешно работать как на ATM-turbo,
так и на компьютерах со стандартной TR-DOS.




СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Игрушки - обзор новинок: Los Angeles Drugs Bust, Jungle Warfare, Dragonia, 3D Starfighter, Rock star ate my hamster, Star Cobtrol, Malstese joe's pool challenge, Dynamite dux, Blood Brodthers, Galactic Games, Motor Masscre, International Kickboxing.
Версии - 2 версии музыкальной демонстрации: MEGADEMO AGONY.
MSD 2000 - На этой неделе состоялось подключение 30pin-1Mb SIMM, Паралельно идет разработка новой видео-карточки для расширения графических возможностей SPECCY.
Юмор - Анекдоты.
От редактора - ZXТime вeрнyлcя олдcкyльноe рycло.

В этот день...   30 июня