Программисткое руководство к ZX-Spectrum`y 1969 г.

Глава 3 - (продолжение). Системные переменные 128К. Системные переменные TR-DOS. Системные переменные BETA-BASIC. Другие системные переменные. Расширения ПЗУ.


               3.4.3 Системные переменные 128К

    В  режиме 128К  в  области  с  #5B00  по    #5BFF  также
используются  системой. Там  находятся системные переменные.
Существует   некоторая  разница  между  областями  системных
переменных  в режимах  128К и  48К. В  48К все переменные по
адресу  ниже #5C00 не существуют. Вместо этого там находится
буфер  принтера, но  многие хранят там маленькие программы и
если  одна из них будет запущена в режиме 128К, то призойдет
сбой  в системе.  Поэтому большинство программ рекомендуется
запускать  из  режима  48К  (хотя  сначала  лучше  проверить
работает она или нет в 128К-режиме).

SWAP, 20 байт, #5B00, R, 23296
Подпрограмма смены страниц памяти:
PUSH AF
PUSH BC
LD BC,#7DDF
LD A,(#5B5C)
XOR #10
DI
LD (#5B5C),A
OUT (C),A
EI
POP BC
POP AF
RET

YOUNGER, 9 байт, #5B14, R, 23316
Подпрограмма обмена страниц памяти

ON_ERR, 18 байт, #5B19, R, 23325
Подпрограмма обмена страниц в случае ошибки.

P_IN, 5 байт, #5B2F, R, 23343
Подпрограмма ввода с RS232

P_OUT, 22 байта,  #5B34, R, 23348
Подпрограмма вывода в RS232

P_OUT2, 14 байт, #5B4A, R, 23370
Подпрограмма вывода 1 байта в RS232

TARGET, слово, #5B58, N, 23384
Адрес вызываемой подпрограммы из Бейсик-ПЗУ (старое ПЗУ).

RETADDR, слово, #5B5A, X, 23386
Адрес возврата в ПЗУ-128К, после вызова процедуры.

BANK_M, байт, #5B5C, X, 23388
Копия последнего байта посланного в порт #7FFD

RAMRST, байт, #5B5D, X, 23389
Здесь храниться код инструкции Z80 RST 8

RAMERR, байт,  #5B5E, N, 23390
Код ошибки Бейсик-ПЗУ.

BAUD, слово, #5B5F, , 23391
Скорость  передачи данных  для RS232. Храниться как битовый
период  в виде  Т/26. Храниться  сначала старший байт, потом
младший.

SERF, 2 байта, #5B61, N, 23393
Флаг   состояния, принимаемого   с  RS232  значения  и  само
значение.

COL, байт, #5B63, N, 23395
Текущая колонка печати на принтере

WIDTH, байт, #5B64, , 23396
Ширина страницы принтера

TVPARS, байт, #5B65, , 23397
Код параметра ожидаемого с RS232

FLAGS3, байт, #5B66, , 23398
Флаговый байт

N_STR, 10 байт, #5B67, N, 23399
Имя файла, записываемого в RAM-DISK

HD00, байт, #5B71, N, 23409
Тип файла, записываемого в RAM-DISK

HD0B, слово, #5B72, N, 23410
Длина файла, записываемого в RAM-DISK

HD0D, слово, #5B74, N, 23412
Адрес, с которого был записан в RAM-DISK

HD0F, слово, #5B76, N, 23414
    Длина  бейсик-программы, записанной  в  RAM-DISK.  Отняв
HD0F от HD0B получите размер области переменных записанных в
RAM-DISK

HD11, слово, #5B78, N, 23416
Номер  строки, с  которой будет запускаться бейсик-программа
при считывания RAM-DISKа

SC00, байт, 5B7A, N, 23418
Тип файла

SC01, слово, #5B7B, N, 23419
Длина файла

SC08, слово, #5B7D, , 23421
Начало загрузки

SC0F, слово, #5B7F, , 23423
Длина программы

OLDSP, слово, #5B81, X, 23425
Здесь  временно сохраняется  регистр  SP  при  использовании
TSTRACK.

SFNEXT, слово, #5B83, X, 23427
Указатель свободного места в директории

SFSPACE, 3 байта, #5B85, X, 23429
Размер свободной памяти RAM-DISKа

ROW01, байт, #5B88, , 23432 малая клавиатура +1 ряд
ROW02, байт, #5B89, , 23433 2+3 ряд
ROW03, байт, #5B8A, , 23434 4+5 ряд
    Недокументированные   ячейки,  назначение   их   неясно.
(Возможно,  они предпологались для обслуживания клавиатуры с
последователеной передачей данных, как в IBM PC)

SYSRET, слово #5B8B, X, 23435
Адрес возврата для процедуры ON_ERR-32767

LAST_V, 5 байт, #5B8D, , 23437
Последнее значение введенное в калькуляторе

RNLINE, слово, #5B92, , 23442
Текущая перенумеруемая строка

RNFIRST, слово, #5B94, , 23444
Новый номер первой строки при перенумерации. Хранить сначала
старший байт, потом младший.

RNSTEP, слово, #5B96, , 23446
Приращение  номера строки при перенумерации. Хранить сначала
старший байт, потом младший.

STRPI1, 8 BAJT, #5B98, N, 23448
Полоска первой карты битов

STRIP2, 8 байта, #5BA0, N, 23456
Полоска второй карты битов

TSTACK, ,,X,
    Область временного стека, начинающегося с адреса #5BFE и
растет вниз по памяти.


              3.4.4 Системные переменные TR-DOS

    Дисковой  операционной системе  также необходимо  где-то
хранить  информацию о  дисководах и режимах работы, файлах и
т.п.
    Для  этого она  используется область  начиная  с  адреса
#5CB6 (23734)
    Для системных переменных TR-DOS еще не сложились имена в
технической  литературе (точнее  говоря их  вообще никто  не
давал),  поэтому я  здесь наберусь  наглости дать  эти имена
сам.

UNIT_F, байт, #5CB6, X, 23734
    Используется  при наличии  INTERFACE  1.  Если  значение
равно  #F4, то  область остается  на старом месте. Если байт
равен    0,   то   происходит   проверка   байта   #5D18   и
соответствующая операция.

S_RET, байт, #5CC2, , 23746
Содержит  код команды  RET. Используется  TR-DOS для  вызова
подпрограмм Бесйик-ПЗУ.

MODE_A, байт, #5CC8, ,23752
Код режима работы дисковода А.
бит 7=1, если дисковод 80-ти дорожечный.
бит 1=1, если дисковод двухсторонний
бит 0=0, если 80-ти дорожечный дисковод используется как 40
         дорожечных

MODE_B, байт, #5CC9,X, 23753
Код режима работы дисковода В. См MODE_A

MODE_C, байт, #5CCA,X, 23754
Код режима работы дисковода С. См MODE_A

MODE_D, байт, #5CCB,X, 23755
Код режима работы дисковода D. См MODE_A

C_SERD, байт, #5CCC, X, 23756
Текущий сектор при чтении каталога

READY, байт, #5CCD, X, 23757
Содержит #80 при готовности текущего дисковода.

TRMODE, байт, #5CCE,X, 23758
Режим работы:0 чтение/#FF запись

DOS_ER, байт, #5CD6, X, 23766
Содержит #FF, если команда не выполнена

X_BYTE, слово, #5CD7, X, 23767
    Для  файлов типа  BASIC или  BYTE -  адрес старта. Также
содержит число дорожек сразу после тестирования дисковода.

CHADD2, слово, #5CD9, X, 23769
Внутренний  аналог CH_ADD.  Также примежуточная  длина файла
типа BYTES или BASIC

LENPRG, слово, #5CDB, X, 23771
Длина бейсик программы

NAME_F, 8 байт, #5CDD, , 23773
Имя файла

TYPE_F, байт, #5CE5, , 23781
Тип файла

PAR_F, слово, #5CE6, , 23782
Параметры файла:
Для Бейсика - длина бейсик программы без переменных
Для кодов   - стартовый адрес

LEN_F, слово, #5CE8, , 23784
Для файла

SEC_F, байт, #5CEA, , 23786
Размер файла в секторах

FIR_SE, байт, #5CEB, , 23787
Номер первого сектора файла

FIR_TR, байт, #5CEC, , 23788
Номер первой дорожки файла

A_UNIT, байт, #5CEF, X, 23791
Содержит 1 если есть INTERFACE 1

CUR_SEC, байт, #5CF4, X, 23796
    Номер текущего сектора

T_DRV, байт,#5CF6, , 23798
Дисковод  для временной  операции (от 0 до 3). Например LOAD
"A:HELP.ASM" CODE

DOS_ON, слово, #5CF7, , 23799
Обнуляется при возврате из TR-DOS

DBLDRV, байт, #5CF8, , 23800
Дисковод  при  операциях  с  двумя  дисководами,  в
противном случае #FF.

DBLMOD, байт, #5CF9, , 23801
    Режим  работы при  работе с  двумя дисководами  (признак
операции  READ/VERIFY). #FF  - VERIFY,  00 READ.  Сюда также
заноситься номер дискова при внутренней операции 7 (CAT).

TIME_A, байт, #5CFA, , 23802
Время перемещения головки дисковода А.

TIME_B, байт, #5CFB, ,23803
Время перемещения головки дисковода В.

TIME_C, байт, #5CFC, , 23804
Время перемещения головки дисковода С.

TIME_D, байт, #5CFD, ,23805
Время перемещения головки дисковода D.

WG_CODE, байт, #5CFE, X, 23806
Код команды для контроллера дисковода ВГ93

SEC_WRK, байт, #5CFF, X, 23807
Номер сектора для подпрограмм записи, чтения

BUF, слово, #5D00, X, 23808
Текущий адрес буфера

HID_HL,слово,#5D02, X,23810
Временно хранит HL при необходимости

HID_DE, слово, #5D04, X, 23812
Временно хранит DE при необходимости

CH_NAME, байт, #5D06, , 23814
Количество  символов, по  которым осущесвляется  поиск имени
файла.  Нормальное значение - 9, но вы можете его уменьшить.
Увеличивать не рекомендую.

DELF, байт, #5D07, X, 23820
Количество удаленных файлов

DELN,байт,#5D08,X,23816
Первый символ удаленного файла

WRKBUF, слово,#5D0C,X,23820
Флаф  наличия рабочего  буфера TR-DOS  (257  байт  с  адреса
23846):
FF - отсутствует
00 - существует

FL_COM,байт,#5D0E,X,23822
Флаг принадлежности команд бейсика
FF - бейсик,
любое другое значение - TR-DOS

ER_FL,байт,#5D0F,X,23823
Код  ошибки TR-DOS.  При равенстве  0 выводит пустую строку,
иначе пустую строку (подпрограмма по адресу #20EF)

ER_HIGH,байт,#5D10,X,23824
Старший  байт ошибки.  При переходе в TR-DOS обнуляется. При
вызове подпрограмм TR-DOS следует обнулять принудительно.

COMADD,слово,#5D11,X,23825
Адрес строки команды TR-DOS. При вызове:
15616 - хранит E_LINE
15619 - хранит CH_ADD

ERRSP2, слово,#5D13,X,23827
Копия  ERR_SP.При равенстве  старшего байта  АА  выполняется
команда RUN "boot" и в #5D18 заноситься #FE

MES_ON,байт,#5D15,X,23829
При   равенстве  00  печатает  сообщения  TR-DOS,  иначе  не
печатает.

SYSREG,байт,#5D16,,23830
Копия системного регистра (Микросхема 555ТМ9)

X_FL,байт,#5D17,,23831
При  не равенстве  АА рисует  заставку, при  равенстве FF не
попадает на ошибку при чтениее неверного адресного маркера.

INT_ON,байт,#5D18,X,23832
Используется  при подключенном INTERFACE1. Если равно FF, то
меняются  блоки в памяти по адреса 23747 и 23959 длиной в 45
байт. При вызове TR-DOS заноситься FF

DRVDEF,байт,#5D19,,23833
Дисковод по умолчанию (0-3)

RETADD,слово,#5D1C,X,23834
Адрес процедуры завершения. Нормальное значение #0201

HID_SP,слово,#5D1C,X,23836
Временно сохраняет регистр SP

TRLINE,3 байта,#5D20,,23840
Первые три символа введенной строки


               Системные переменные BETA-BASIC

E_PPC,слово, ,23635
После  ввода команды  LIST PROC содержит номер первой строки
процедуры

LST_LN,слово,  ,N,56358
После  ввода команды  LIST  PROC  содержит  номер  последней
процедуры.

OVER2T,байт,,,57362
Времеенные атрибуты для OVER2

OVER2P,байт,,,57363
Постоянные атрибуты для OVE2

X,байт,,,57364
Х координата печати на экране

Y,байт,,57365
Y координата печати на экране

XRIGHT,,,57366
Минимальная по Х граница окна

XLEFT,,,57367
Максимальная по Y граница окна

YTOP,байт,,,57368
Максимальная координата окна по Y

YBOT,байт,,,57369
Минимальная координата окна по Y

CURWIN,байт,,,57376
Номер  текущего окна. Дла 0 - содержит 0, иначе номер окна +
127

PRETTY,байт,,,57381
Содержит 1,если необходимо структуировать "лесенкой"

LNSQ,байт,,,57382
Содержит 0,если не нужно выводить номера строки

KYWD,байт,,,57383
Входной режим, зависит от WINDOW и CSIZE

CH_WGH,байт,,,57391
Число знаков на строку

NET_CMP,байт,,,57395
Число компьтеров в сети

UNIT_CO,байт,,,57396
Код устройства (T, M, B, N.)

CLCK_PS,2 байта,,,61316
Позиция на экране для вывода часов

CLCK_SP,байт,,,56866
Число 1/50 - скорость течения времени

CLCK_ST,айт,,56870
Число 54(60) или 58(100) пропоршиональное шагу часов

INT_CH,байт,,,23729
Прин Н<87916 содержит для INTEFACE 1 ширину знаков

INT_CH2,байт,,,57500
То же, но при N>87916


              3.4.6 Другие системные переменные

    Многие   программы  имеют   сови  системные  переменные,
которые  могут представлять  маленький интерес.  Но  имеются
некоторые  аппаратные средства,  которые могут  использовать
стандартные   переменные  под  свои  "нестандартные"  нужды.
Например  NMIADD испозуется  BETA-BASIC, AMX-MOUSE,  а также
ZX-LPRINT III

      3.5 Маркеры, идентефицирующие версию ПЗУ и машины

    Программы  BIOS фиксированны  в  памяти  поэтому  в  тех
случаях,  когда возникает  необходимость в  их дополнении  и
исправлении,  эти программы  нелегко изменить. Это означает,
что   перед  записью  в  ПЗУ  такие  программы  должны  быть
тщательно   протестрованы.  Фирма   Sinclair  Research  Ltd.
достигли   в  этом   больших  успехов:  до  сих  пор  в  ПЗУ
компьютеров  было обнаружены только необльшие и сравнительно
незначительные ошибки.
    Различные   версии  программного  обеспечения  ПЗУ  могут
вызывать  нокоторые  затруднение  у  программистов,  которые
могут   обнаружить,  что  эти  различия  влияют  на  рабочие
характеристики их программ. Однако еще большую сложность для
программ  использующих стандартный знакогенератор для вывода
сообщениий.   При  различных  прошитых  символах  на  экране
появляется  всакая абракодабра, как например, в игре RAINBOW
ISLAND  или FLIGHT  MASTER. Больше  всего от монитор 90 года
пострадал язык Си.
    Для   определения   типа   комьпютера   можно   написать
программы,   которые  будут  "гонять"  компьютер,  проверять
память,  сканировать порты,  подсчитывать контрольные суммы.
Но проще использовть маркер находящийся в ПЗУ и показывающий
год  выпуска и  название фирмы,  выпустившей компьютер. (Это
всегда одна и таже)
    Дата  выпуска ПЗУ  можно найти  по адресу  . Эта область
содержит  символы ASCII  и означают год. Дата выпуска служит
только  для идентефикации  версии ПЗУ.  Эта информация может
использоваться  только тогда,  когда возникает необходимость
работать  с различными  версиями ПЗУ.  Эта дата представляет
собой  часть сообщения,  которую  вы  можете  увидеть  после
включения комьпютера.

            Ниже представлены основные варианты:

82     Исходный компьютер
86     128К - ПЗУ редактора
90     Модифицированный вариант ПЗУ.

    Конечно  существует множество других версий. Наприме мне
известно  около 10  других вариантов. Длее находяться всякие
буковки,   которые  вы   можете   увидеть   при   вклюхениее
компьютера. Почти всегда это Sinclair Research Ltd.

                3.6 Бейсик, записанный в ПЗУ

    Теперь  перейдем к  третьему элементу  ПЗУ - Бейсику. Он
используется  для двух  целей. Во-первых,  он ялвяется ядром
языка  Бейсик. Дисковыя  версии Бейсика, BETA BASIC или LASE
BASIC,   при  совей   работе  самым   существенным   образом
используют   Бейсик  в   ПЗУ.  Во-первых,   Бейсик   -   ПЗУ
обеспечивает   диалог  с   пользователем,  когда   комьпютер
запускается без диска.
    Каждый  раз, когда мы используем один из интерпритируюий
Бейсиков,  мы обязательно  используем и бейсик в ПЗУ. В тоже
время  откомпилированные программы на языка Бейсик также его
используют.

                     3.7 Расширения ПЗУ

    Эта часть ПЗУ больше относиться к конструкции Спектрума,
чем   к  содержимому   его  памяти.  Конструкция  компьютера
позволяет   подклюхить  на  системный  разъем  любую  схему,
которая сможет перехватывать все управление компьютером.
    Постоянные  расширения ROM-BIOS Это программы работающие
подобно  встроенным программам  ROM-BIOS, однако добавляющие
такие  функции, которые  не поддерживаются  стандартным ПЗУ.
Обычно  это  программы,  поддерживающие  новые  переферийные
устройства.   Наилучшим  примером   может  служить   TR-DOS,
дисковая операционная система фирмы TECHNOLOGI RESEARCH LTD.




СОДЕРЖАНИЕ:


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

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



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

Похожие статьи:
Новости - Близится к концу работа над созданием CD-диска.
Разбиралка - Описание текстовой игры TIME COP demo.
Edit off - Ну вот, вроде, небольшой номерок 2 и завершен...
Юмор - Анекдоты, приколы, афоризмы...
Письмо №289 - Новосибирская обл, Искитимский р-н, с Старый Искитим

В этот день...   26 апреля