[<>]
~~TOC wide~~
{{anchor:n26}}
====== 2.6. Рабочая область ======
Рабочая область находится в RAM и делится на две части:
- область //системных// переменных [[msx:basic:|]];
- область //ловушек//.
{{anchor:n261}}
===== 2.6.1. Таблица системных переменных =====
|<100% 5% 5% 5% 75%>|
^ Имя ^ Адрес16 ^ Длина10 ^ Содержание ^
|RDPRIM|F380|5|Программа чтения из базового слота:
OUT (0A8),A
LD E,(HL)
JR WRPRM1
|
|WRPRIM|F385|7|Программа записи в базовый слот:
OUT (0A8),A
LD (HL),E
WRPRM1: LD A,D
OUT (0A8),A
RET
|
|CLPRIM|F38C|14|Вызов базового слота:OUT (0A8),A
EX AF,AF'
CALL CLPRM1
EX AF,AF'
POP AF
OUT (0A8),A
EX AF,AF'
RET
CLPRM1: JP (IX)
|
|USRTAB|F39A|2|Начальные адреса для DEFUSR|
|LINL40|F3AE|1|Длина строки в режиме SCREEN 0|
|LINL32|F3AF|1|Длина строки в режиме SCREEN 1|
|LINLEN|F3B0|1|Длина строки в текущем режиме|
|CRTCNT|F3B1|1|Число доступных строк на экране|
|CUVLST|F3B2|1|Минимальное число пробелов до конца строки (PRINT)|
|Рабочая область для инициализации (F3B3 ÷ F3DE)||||
|TXTNAM|F3B3|2|Адрес Таблицы имен (PNT) в SCREEN 0|
|TXTCOL|F3B5|2|Адрес Таблицы цветов (CT) в SCREEN 0|
|TXTCGP|F3B7|2|Адрес Таблицы символов (PGT) в SCREEN 0|
|TXTATR|F3B9|2|Не используется|
|TXTPAT|F3BB|2|Не используется|
|T32NAM|F3BD|2|Адрес Таблицы имен (PNT) в SCREEN 1|
|T32COL|F3BF|2|Адрес Таблицы цветов (CT) в SCREEN 1|
|T32CGP|F3C1|2|Адрес Таблицы символов (PGT) в SCREEN 1|
|T32ATR|F3C3|2|Адрес атрибутов спрайтов в SCREEN 1|
|T32PAT|F3C5|2|Адрес шаблонов спрайтов в SCREEN 1|
|GRPNAM|F3C7|2|Адрес Таблицы имен (PNT) в SCREEN 2|
|GRPCOL|F3C9|2|Адрес Таблицы цветов (CT) в SCREEN 2|
|GRPCGP|F3CB|2|Адрес изображений (PGT) в SCREEN 2|
|GRPATR|F3CD|2|Адрес атрибутов спрайтов в SCREEN 2|
|GRPPAT|F3CF|2|Адрес шаблонов спрайтов в SCREEN 2|
|MLTNAM|F3D1|2|Адрес Таблицы имен (PNT) в SCREEN 3|
|MLTCOL|F3D3|2|Адрес Таблицы цветов (CT) в SCREEN 3|
|MLTCGP|F3D5|2|Адрес изображений (PGT) в SCREEN 3|
|MLTATR|F3D7|2|Адрес атрибутов спрайтов в SCREEN 3|
|MLTPAT|F3D9|2|Адрес шаблонов спрайтов в SCREEN 3|
|CUKSW|F3DB|1|Отзвук клавиши (0 — нет отзвука)|
|CSRY|F3DC|1|Y–координата текстового курсора|
|CSRX|F3DD|1|X–координата текстового курсора|
|CNCDFG|F3DE|1|Отображение строки функциональных ключей (0 — KEY OFF)|
|Область для сохранения содержимого регистров VDP(F3DF ÷ F3F2)||||
|RG0SAV|F3DF|1|Содержимое VDP(0)|
|RG1SAV|F3E0|1|Содержимое VDP(1)|
|RG2SAV|F3E1|1|Содержимое VDP(2)|
|RG3SAV|F3E2|1|Содержимое VDP(3)|
|RG4SAV|F3E3|1|Содержимое VDP(4)|
|RG5SAV|F3E4|1|Содержимое VDP(5)|
|RG6SAV|F3E5|1|Содержимое VDP(6)|
|RG7SAV|F3E6|1|Содержимое VDP(7)|
|STATFL|F3E7|1|Статус VDP, т.е. VDP(8)|
|TRGFLG|F3E8|1|Образ 4 кнопок джойстика и пробела|
|FORCLR|F3E9|1|Текущий цвет //изображения//|
|BAKCLR|F3EA|1|Текущий цвет //фона//|
|BDRCLR|F3EB|1|Текущий цвет //бордюра//|
|MAXUPD|F3EC|3|JP 0000 (используется оператором CIRCLE)|
|MINUPD|F3EF|3|JP 0000 (используется оператором CIRCLE)|
|ATRBYT|F3F2|1|Цветовой код пикселя|
|Рабочая область для оператора PLAY (F3F3 ÷ F3F5)||||
|QUEUES|F3F3|2|Адрес музыкальных очередей|
|FRCNEW|F3F5|1|0 — ; \\ FFh — CLOAD?|
|Рабочая область для ввода с клавиатуры (F3F6 ÷ F40F)||||
|SCNCNT|F3F6|1|Интервал сканирования клавиатуры|
|REPCNT|F3F7|1|Счетчик частоты повторений нажатой клавиши|
|PUTPNT|F3F8|2|Буфер клавиатуры: куда "класть"|
|GETPNT|F3FA|2|Буфер клавиатуры: откуда "брать"|
|CS120|F3FC|5|Параметры ввода/вывода с кассеты(1200 бод)|
|CS120|F401|5|Параметры ввода/вывода с кассеты(2400 бод)|
|LOW|F406|2|Первая и вторая половина 0–цикла|
|HIGH|F408|2|Первая и вторая половина 1–цикла|
|HEADER|F40A|1|Счетчик циклов заголовка|
|ASPCT1|F40B|2|256/коэффициент сжатия для CIRCLE|
|ASPCT2|F40D|2|256·коэффициент сжатия для CIRCLE|
|ENDPRG|F40F|5|Указатель оператора RESUME NEXT|
|Рабочая область, используемая [[msx:basic:basic|]] (F414 ÷ F6CA)||||
|ERRFLG|F414|1|Код последней ошибки в программе на [[msx:basic:basic|]]|
|LPTPOS|F415|1|Позиция головки принтера для LPRINT|
|PRTFLG|F416|1|1 — принтер; \\ 0 — экран|
|NTMSXP|F417|1|0 — принтер MSX; 1 — не MSX|
|RAWPRT|F418|1|Если содержимое ≠0,то GRAPH и CTRL символы выводятся без изменений|
|VLZADR|F419|2|Адрес символа, замененного значением|
|VLZDAT|F41B|1|Замененный символ|
|CURLIN|F41C|2|Номер обрабатываемой [[msx:basic:basic|]]–строки (FFFF — непосредственно оператор)|
|KBUF|F41F|318|Скоростной буфер (трансляция из BUF во внутреннее представление)|
|BUFMIN|F55D|1|Используется в операторе INPUT|
|BUF|F55E|258|Содержимое буфера клавиатуры (в коде ASCII)|
|ENDBUF|F660|1|Конец буфера клавиатуры|
|TTYPOS|F661|1|Позиция курсора на экране дисплея|
|DIMFLG|F662|1|Флаг массива|
|VALTYP|F663|1|Тип переменной в слове DAC|
|OPRTYP|F664|0| |
|DORES|F664|1|Тип оператора|
|DONUM|F665 |1|Для скоростной работы|
|CONTXT|F666|2|Сохранить указатель текста для CHRGET|
|CONSAV|F668|1|Сохранение обозначения константы после вызова подпрограммы CHRGET|
|CONTYP|F669|1|Сохранить тип константы|
|CONLO|F66A|8|Сохранить значение используемой константы|
|MEMSIZ|F672|2|Максимально возможный адрес для PIT|
|STKTOP|F674|2|//Верхний адрес стека//|
|TXTTAB|F676|2|//Начальный адрес// PIT|
|TEMPPT|F678|2|Указатель на первый свободный временный дескриптор|
|TEMPST|F67A|30|Стек для строковых дескрипторов|
|DSCTMP|F698|3|Строковый дескриптор, являющийся результатом выполнения строковой функции|
|FRETOP|F69B|2|Верхний адрес строкового пространства|
|TEMP3|F69D|2|Используется для "сборки мусора" или функцией USR|
|TEMP8|F69F|2|Используется для "сборки мусора"|
|ENDFOR|F6A1|2|Указатель на конец строки с командой FOR |
|DATLIN|F6A3|2|Номер строки оператора DATA, используемого оператором READ|
|SUBFLG|F6A5|1|Рабочий флаг для USR|
|USFLG|F6A6|0| |
|FLGINP|F6A6|1|Рабочий флаг для INPUT и READ|
|TEMP|F6A7|2|Место временного хранения кодов операторов|
|PTRFLG|F6A9|1|=0, если — не программная строка|
|AUTFLG|F6AA|1|≠0, если включен режим AUTO|
|AUTLIN|F6AB|2|Первая строка нумерации для AUTO|
|AUTINC|F6AD|2|Шаг нумерации для AUTO|
|SAVTXT|F6AF|2|Текстовый указатель для RESUME|
|SAVSTK|F6B1|2|Сохранить стек для обработки ошибок|
|ERRLIN|F6B3|2|Номер строки, в которой была допущена последняя ошибка|
|DOT|F6B5|2|Номер //текущей// строки программы|
|ERRTXT|F6B7|2|Текстовый указатель для использования оператором RESUME|
|ONELIN|F6B9|2|Адрес начала подпрограммы обработки ошибок в PIT|
|ONEFLG|F6BB|1|1, если выполнилась подпрограмма обработки ошибки|
|TEMP2|F6BC|2| |
|OLDLIN|F6BE|2|Номер последней упомянутой строки|
|OLDTXT|F6C0|2|Старый текстовый указатель|
|VARTAB|F6C2|2|Начальный адрес Таблицы переменных|
|ARYTAB|F6C4|2|Начальный адрес Таблицы массивов|
|STREND|F6C6|2|Верхний адрес используемого пространства|
|DATPTR|F6C8|2|Указатель DATA|
|DEFTBL|F6CA|26|Типы переменных A÷Z по умолчанию|
|Рабочая область для параметров функций USR (F6E4 ÷ F7C4)||||
|PRMSTK|F6E4|2|Стек для "сборки мусора"|
|PRMLEN|F6E6|2|Длина используемой таблицы|
|PARM1|F6E8|100|Значения параметров функций пользователя|
|PRMPRV|F74C|2|Указатель блока параметров|
|PRMLN2|F74E|2|Длина блока параметров|
|PARM2|F750|100|Используется для создания локальных переменных текущей функции пользователя FN|
|PRMFLG|F7B4|1| Флаг источника параметров|
|ARYTA2|F7B5|2| Конец источника параметров|
|NOFUNS|F7B7|1| =0, если отсутствует "активная" функция|
|TEMP9|F7B8|2|Размещение временной памяти для "сборки мусора"|
|FUNACT|F7BA|2|Число "активных" функций|
|SWPTMP|F7BC|8|Первый операнд оператора SWAP|
|TRCFLG|F7C4|1|1 — TRON; \\ 0 — TROFF|
|Рабочая область для выполнения математических вычислений (F7C5 ÷ F857)||||
|FBUFFR|F7C5|43|Буфер для преобразования строки в число|
|DECTMP|F7F0|2|Используется для преобразования десятичного целого к числу с плавающей точкой|
|DECTM2|F7F2|2|Используется для выполнения подпрограммы //деления//|
|DECCNT|F7F4|1|Используется для выполнения подпрограммы //деления//|
|DAC|F7F6|16|Первичный арифметический аккумулятор (DAC)|
|HOLD8|F806|48|Регистр для умножения с двойной точностью|
|HOLD2|F836|8|Регистр для умножения с двойной точностью|
|HOLD1|F83E|8|Регистр для умножения с двойной точностью|
|ARG|F847|16|Вторичный арифметический аккумулятор (область для размещения значения перед вычислениями с помощью DAC)|
|RNDX|F857|8|Последнее случайное число двойной точности|
|Рабочая область, используемая интерпретатором [[msx:basic:basic|]] (F85F ÷ F92F)||||
|MAXFIL|F85F|1|Установка оператора MAXFILES|
|FILTAB|F860|2|Начальный адрес Блока Управления Файлами|
|NULBUF|F862|2|Адрес нулевого буфера файла (используется в операторах SAVE и LOAD)|
|PTRFIL|F864|2|Указатели на данные текущего файла|
|RUNFLG|F866|0|≠0 для команды RUN после команды LOAD|
|FILNAM|F866|11|Определенное пользователем имя файла|
|FILNM2|F871|11|Имя файла с устройства ввода/вывода|
|NLONLY|F87C|1|≠0, когда загружается программа|
|SAVEND|F87D|2|Конец двоичных данных для BSAVE|
|FNKSTR|F87F|160|Значения 10 функциональных клавиш|
|CGPNT|F91F|3|Адрес ячейки в ROM, начиная с которой хранятся образы символов|
|NAMBAS|F922|2|//Текущий адрес// PNT|
|CGPBAS|F924|2|//Текущий адрес// PGT|
|PATBAS|F926|2|//Текущий адрес// SGT|
|ATRBAS|F928|2|//Текущий адрес// SAT|
|CLOC|F92A|2|Координаты текущей точки|
|CMASK|F92C|1|:::|
|MINDEL|F92D|2|:::|
|MAXDEL|F92F|2|:::|
|Рабочая область для оператора CIRCLE (F931 ÷ F947)||||
|ASPECT|F931|2|Коэффициент сжатия окружности|
|CENCNT|F933|2|Конец счета|
|CUNEF|F935|1|Флаг для проведения радиуса окружности|
|CNPNTS|F936|2|Сколько точек рисовать?|
|CPLOTF|F938|1|Флаг полярных точек|
|CPCNT|F939|2|1/8 от числа точек в окружности|
|CPCNT8|F93B|2| |
|CRCSUM|F93D|2| |
|CSTCNT|F93F|2| |
|CSCLXY|F941|1|Масштаб по X и по Y|
|CSAVEA|F942|2|Резервируемая область для ADVGRP|
|CSAVEM|F944|1|Резервируемая область для ADVGRP|
|CXOFF|F945|2|Смещение X относительно центра|
|CYOFF|F947|2|Смещение Y относительно центра|
|Рабочая область для оператора PAINT (F949 ÷ F955)||||
|LOHMSK|F949|1| Рабочая область для оператора PAINT (&hF949 ÷ &hF955)|
|LOHDIR|F94A|1| |
|LOHADR|F94B|2| |
|LOHCNT|F94D|2| |
|SKPCNT|F94F|2|Подсчет пропусков|
|MOVCNT|F951|2|Подсчет движений|
|PDIREC|F953|1|Направление закраски|
|LFPROG|F954|1| |
|RTPROG|F955|1| |
|MCLTAB|F956|2|Флаг PLAY/DRAW|
|MCLFLG|F958|1|:::|
|Рабочая область для оператора PLAY (F959 ÷ FA75)||||
|QUETAB|F959|24|Параметры для VOICAQ,VOICBQ,VOICCQ,RS232|
|QUEBAK|F971|4|Возвращение символов для очереди (не используется)|
|VOICAQ|F975|128|Музыкальная очередь для голоса A|
|VOICBQ|F9F5|128|Музыкальная очередь для голоса B|
|VOICCQ|FA75|128|Музыкальная очередь для голоса C|
|RS2IQ|FAF5|64|Очередь для RS232|
|Рабочая область для музыки (FB35 ÷ FB8B)||||
|PRSCNT|FB35|1| |
|SAVSP|FB36|2| |
|VOICEN|FB38|1| |
|SAVVOL|FB39|2| |
|MCLLEN|FB3B|1| |
|MCLPTR|FB3C|2| |
|QUEUEN|FB3E|1| |
|MUSICF|FB3F|1| |
|PLYCNT|FB40|1| |
|VCBA|FB41|37|Текущие параметры для голоса A|
|VCBB|FB66|37|Текущие параметры для голоса B|
|VCBC|FB8B|37|Текущие параметры для голоса C|
| ||||
|ENSTOP|FBB0|1|Если значение ненулевое, то возможна остановка программы посредством нажатия комбинации клавиш CTRL+GRAPH+SHIFT+РУС или комбинации клавиш CTRL+GRAPH+SHIFT+1+3 (нажатие CTRL+STOP игнорируется!)|
|BASROM|FBB1|1|≠0, если подключена ROM BASIC|
|LINTTB|FBB2|24|Переполнение экранной строки|
|FSTPOS|FBCA|2|Первая позиция для INLINE|
|CODSAV|FBCC|1|Код сохранения области для курсора|
|FNKSWI|FBCD|1|Индикация функциональных клавиш|
|FNKFLG|FBCE|10|Разрешение прерываний от клавиш F1÷F10 (0 — обычно, 1 — для оператора KEY(n)ON )|
|ONGSBF|FBD8|1|Флаг глобальных событий|
|CLIKFL|FBD9|1| |
|OLDKEY|FBDA|11|Старый статус клавиш|
|NEWKEY|FBE5|11|Статус клавиш (матрица клавиатуры)|
|KEYBUF|FBF0|40| //Буфер клавиатуры//|
|BUFEND|FC18|0|Конец буфера клавиатуры|
|LINWRK|FC18|40|Экранная строка, заполненная символами|
|PATWRK|FC40|8|"Картинка" размером 8×8 точек|
|BOTTOM|FC48|2|Начальный адрес RAM|
|HIMEM|FC4A|2|//Адрес начала рабочей области//|
|TRPTBL|FC4C|51| //Таблица ловушек//|
| |FC82|24|Неиспользуемые байты TRPTBL|
|RTYCNT|FC9A|1| |
|INTFLG|FC9B|1| |
|PADY|FC9C|1|Y–координата графического планшета|
|PADX|FC9D|1|X–координата графического планшета|
|JIFFY|FC9E|2| |
|INTVAL|FCA0|2|Установка интервала|
|INTCNT|FCA2|2|Счетчик интервалов|
|LOWLIM|FCA4|1|Чтение с кассеты|
|WINWID|FCA5|1| |
|GRPHED|FCA6|1|Флаг для графических символов|
|ESCCNT|FCA7|1|Счетчик последовательных нажатий ESC|
|INSFLG|FCA8|1|Флаг режима "вставки"|
|CSRSW|FCA9|1|1 — ''LOCATE,,1'' ; \\ 0 — ''LOCATE,,0''|
|CSTYLE|FCAA|1| Код символа в позиции курсора|
|CAPST|FCAB|1|≠0 — клавиша CAPS считается нажатой|
|KANAST|FCAC|1|≠0 — клавиша РУС считается нажатой|
|KANAMD|FCAD|1| |
|FLBMEM|FCAE|1|=0, пока загружается программа на [[msx:basic:basic|]]|
|SCRMOD|FCAF|1|Текущий режим экрана|
|OLDSCR|FCB0|1|Последний упомянутый текстовый режим|
|CASPRV|FCB1|1|Символ для устройства CAS:|
|BRDATR|FCB2|1|Цвет границы для оператора PAINT|
|GXPOS|FCB3|2|X–координата графического курсора|
|GYPOS|FCB5|2|Y–координата графического курсора|
|GRPACX|FCB7|2|X–координата графического аккумулятора|
|GRPACY|FCB9|2|Y–координата графического аккумулятора|
|DRWFLG|FCBB|1|Флаг оператора DRAW|
|DRWSCL|FCBC|1|Масштабный множитель для DRAW|
|DRWANG|FCBD|1|Значение угла в операторе DRAW|
|RUNBNF|FCBE|1|BLOAD/BSAVE или нет ?|
|SAVENT|FCBF|2|Стартовый адрес для BSAVE|
|BIOSSL|FCC0|1|Указатель слота при межслотовом обращении|
|EXPTBL|FCC1|4|Флаг для расширенного слота|
|SLTTBL|FCC5|4|Текущий расширенный слотовый регистр|
|SLTATR|FCC9|64|Флаги разрешения обработки оператора CALL|
|SLTWRK|FD09|128|Рабочая область размером 64×2 байтов для каждого из 64 возможных слотов|
|PROCNM|FD89|16|Буфер для имени оператора расширения ROM|
|DEVICE|FD99|1|Устройства для CARTRIGE 0÷3|
|Область для сохранения содержимого регистров VDP(F3DF ÷ F3F2)||||
|RG8SAV|FFE7|1|Содержимое VDP(8)|
|RG9SAV|FFE8|1|Содержимое VDP(9)|
|RGASAV|FFE9|1|Содержимое VDP(10)|
|RGBSAV|FFEA|1|Содержимое VDP(11)|
|RGCSAV|FFEB|1|Содержимое VDP(12)|
|RGDSAV|FFEC|1|Содержимое VDP(13)|
|RGESAV|FFED|1|Содержимое VDP(14) (47)|
|RGFSAV|FFEE|1|? Посмотреть при помощи подпр. BIOS FIXME|
==== Системные переменные только для компьютеров MSX-2 ====
|<100% 5% 5% 5% 75%>|
^ Имя ^ Адрес16 ^ Длина10 ^ Содержание ^
|DPPAGE|FAF5|1|Номер страницы дисплея|
|ACPAGE|FAF6|1|Номер активной страницы|
|AVCSAV|FAF7|1|Управляющий порт AUDIO/VIDEO|
|EXBRSA|FAF8|1|Адрес страницы SUBROM в слоте 3-1|
|CHRCNT|FAF9|1|Счетчик символов в буфере (используется при переводе Латынь ──▶ Кана)|
|ROMA|FAFA|2|Область для хранения символов (только для японской версии)|
|MODE|FAFC|1|Режим переключения размера VRAM|
|NORUSE|FAFD|1|Не используется|
|XSAVE|FAFE|2|1000 0000 XXXX XXXX|
|YSAVE|FB00|2|∗000 0000 YYYY YYYY \\ ∗ — прерывание от светового пера|
|LOGOPR|FB02|1|Код логической операции|
| ||||
|RSTMP|FB03|0|Область данных, используемая RS-232C или дисководом (&hFB03 ÷ &hFB20)|
|TOCNT|FB03|1|:::|
|RSFCB|FB04|2|:::|
| ... | ... | ... |:::|
|LSTMOD|FB20|1|:::|
|Область памяти, используемая [[msx:dos:#v1x|MSX-DOS]]||||
| |FB21| |Список //слотов//|
|:::| ··· | ··· |:::|
|:::|FB34| |:::|
==== Фрагменты рабочей области дискового обмена ====
|<100% 5% 5% 5% 75%>|
^ Имя ^ Адрес16 ^ Длина10 ^ Содержание ^
|FCB1|005C| |По этому адресу MSXDOS.SYS организует FCB 1 файла, имя которого соответствует второму слову командной строки|
|FCB2|006C| |По этому адресу MSXDOS.SYS организует FCB 2 файла,имя которого соответствует третьему слову командной строки|
|H.CHG|F267| |Ловушка, отвечающая за дисковый обмен|
|H.RD|F270| |Ловушка, отвечающая за считывание сектора|
|H.WR|F279| |Ловушка, отвечающая за запись сектора|
|CURDRV|F2E1|1|В данных ячейках находится число, равное номеру текущего дисковода — 1|
|CURDRV|F247|1|:::|
|DMA|F23D|2|В этой ячейке хранится адрес обмена информацией. \\ Операцию: LD C,1AH
LD DE,ADRESS
CALL 5
можно заменить просто на:
LD HL,ADRESS
LD (F23DH),HL
и адрес обмена информацией будет установлен!|
|HERROR|F323|2|В этой ячейке хранится адрес адреса подпрограммы обработки ошибок дискового обмена. Если положить по данному адресу другие (нужные Вам) значения, то можно обработать ошибку самому!|
|HSTOP|F325|2|В этой ячейке хранится адрес адреса подпрограммы обработки нажатия клавиш CTRL+STOP, CTRL+s.Если положить по данному адресу другие (нужные Вам) значения, то можно обработать нажатие данных клавиш самому!|
|SAVSP|F339|2|В данной ячейке находится адрес стека, который сохраняется всякий, раз когда происходит работа с подпрограммами ПЗУ. После окончания работы MSXDOS.SYS производит рестарт с восстановлением стека|
|MAXDRV|F347|1|В данной ячейке находится максимальное число разрешенных дисководов|
|HBUF|F351|2|В этой ячейке хранится адрес буфера [[msx:dos:#v1x|MSX-DOS]], куда копируется часть каталога дискеты|
|DPBL|F355| |С данного адреса расположен список DPB существующих дисководов|
|SETROM|F368| |Подпрограмма по этому адресу организует подключение 1 страницы из слота 3-1,а значит, делает доступным прямое (''CALL...'' или ''JP...'') обращение к подпрограммам работы с диском. \\ //Внимание// ! Указатель слота, который использует данная подпрограмма, находится в ячейке F248H,и он может быть заменен на любой другой указатель, а тогда 1 страница будет выбрана из другого слота|
|SETRAM|F36B| |Подпрограмма по этому адресу организует подключение 1 страницы из слота 3-2,а значит, делает доступным прямое (''CALL...'' или ''JP...'') обращение к Вашим подпрограммам. \\ //Внимание// ! Указатель слота,который использует данная подпрограмма , находится в ячейке F242H,и он может быть заменен на любой другой указатель,а тогда 1–я страница будет выбрана из другого слота|
|SLTMOV|F36E| |Межслотовый обмен|
|ROMBDOS|F37D| |Вектор [[msx:bdos|ROM BDOS]]|
{{anchor:n262}}
===== 2.6.2. Таблица ловушек =====
Когда это возможно, указывается ключевое слово, "переводящее" на ловушку. Если рядом с ним стоит символ "∗", то это означает, что ловушка обрабатывается всякий раз, когда при инициализации опрашивается дисковод.
^ //Имя// ^ Адрес ^ Адрес ROM ^∗^ Адрес BIOS, \\ использующего \\ данный hook ^ //Комментарий// \\ (в скобках указан соответствующий оператор \\ [[msx:basic:|]]) |
|H.SRD |F270| | | |Подпрограмма чтения сектора|
|H.SWR |F279| | | |Подпрограмма записи сектора|
|H.DER1|F323| | | |Подпрограмма, выдающая сообщения об ошибке при работе с диском|
|H.DER2|F325| | | |Подпрограмма, выдающая сообщения об ошибке при работе с диском|
|H.DCHG|F267| | | |Подпрограмма смены диска|
| ||||||
|H.KEYI|FD9A|0C4A | |0038, 003B, 003E|Обработка прерываний с частотой 60Гц|
|H.TIMI|FD9F|0C53 | |0038, 003B, 003E|Начало обработки прерываний|
|H.CHPU|FDA4|091D | |00A2| Подпрограмма помещения символа|
|H.DSPC|FDA9|0A43 | | |Подпрограмма высвечивания курсора|
|H.ERAC|FDAE|0A90 | | |Подпрограмма уничтожения курсора|
|H.DSPF|FDB3|0B3F | |00C9, 00CF|Подпрограмма высвечивания значений функциональных клавиш (KEY ON)|
|H.ERAF|FDB8|0B29| |00CC|Подпрограмма запрещения высвечивания значений функциональных клавиш (KEY OFF)|
|H.TOTE|FDBD|08A5| |00D2|Подпрограмма перехода к текстовому режиму|
|H.CHGE|FDC2|10CE| |009F|Подпрограмма получения символа|
|H.INIP|FDC7|0717| | |Подпрограмма инициализации картинки|
|H.KEYS|FDCC|1025| | |Подпрограмма кода клавиатуры|
|H.KYEA|FDD1|0F10| | |Присваивание функциональным клавишам значений|
|H.NMI |FDD6|139B| |0066|Подпрограмма обработки немаскируемых прерываний|
|H.PINL|FDDB|23BF| |00AE|Подпрограмма установки начала программной строки|
|H.QINL|FDE0|23CC| |00AE|Подпрограмма, выводящая знак "?" и вводящая строку|
|H.INLI|FDE5|23D5| |00AE, 00B1, 00B4|Подпрограмма ввода строки(LINEINPUT)|
|H.ONGO|FDEA|7810| | |Подпрограмма выполнения ON GOTO|
|H.DSKO|FDEF|7C16|∗| |Подпрограмма вывода на диск (DSKO$)|
|H.SETS|FDF4|7CE3|∗| |Подпрограмма установки атрибутов(SET)|
|H.NAME|FDF9|7C20|∗| |Подпрограмма выполнения RENAME|
|H.KILL|FDFE|7C25|∗| |Подпрограмма выполнения KILL|
|H.IPL |FE03|7C2A|∗| |Подпрограмма инициализации загрузки программы (IPL)|
|H.COPY|FE08|7D0B|∗| |Подпрограмма выполнения COPY|
|H.CMD |FE0D|7C34|∗| |Подпрограмма выполнения команды CMD|
|H.DSKF|FE12|7C39|∗| |Подпрограмма выполнения DSKF|
|H.DSKI|FE17|7C3E|∗| |Подпрограмма выполнения ввода с диска (DSKI$)|
|H.ATTR|FE1C|7C43|∗| |Подпрограмма атрибутов (ATTR$)|
|H.LSET|FE21|7C48|∗| |Подпрограмма выполнения LSET|
|H.RSET|FE26|7C4D|∗| |Подпрограмма выполнения RSET|
|H.FIEL|FE2B|7C52|∗| |Подпрограмма выполнения FIELD|
|H.MKIS|FE30|7C57|∗| |Подпрограмма выполнения MKI$|
|H.MKSS|FE35|7C5C|∗| |Подпрограмма выполнения MKS$|
|H.MKDS|FE3A|7C61|∗| |Подпрограмма выполнения MKD$|
|H.CVI|FE3F|7C66|∗| |Подпрограмма выполнения CVI|
|H.CVS|FE44|7C6B|∗| |Подпрограмма выполнения CVS|
|H.CVD|FE49|7C70|∗| |Подпрограмма выполнения CVD|
|H.GETP|FE4E|6A93| | |Подпрограмма получения указателя FCB|
|H.SETF|FE53|6AB3| | |Подпрограмма установки указателя FCB|
|H.NOFO|FE58|6AF6|∗| |Подпрограмма NOFOR (OPEN)|
|H.NULO|FE5D|6B0F|∗| |Подпрограмма, открывающая 0–й файл (KILL,LOAD)|
|H.NTFL|FE62|6B3B|∗| |Подпрограмма, закрывающая 0–й буфер ввода–вывода (CLOSE)|
|H.MERG|FE67|6B63|∗| |Подпрограмма выполнения MERGE|
|H.SAVE|FE6C|6BA6| | |Подпрограмма выполнения SAVE|
|H.BINS|FE71|6BCE| | |Подпрограмма выполнения BSAVE|
|H.BINL|FE76|6BD4| | |Подпрограмма выполнения BLOAD|
|H.FILE|FE7B|6C2F|∗| |Подпрограмма выполнения FILES|
|H.DGET| FE80 | 6C3B |∗| | Подпрограмма выполнения GET и PUT|
|H.FILO| FE85 | 6C51 | | | Подпрограмма выполнения последовательного вывода|
|H.INDS| FE8A | 6C79 | | | Подпрограмма выполнения последовательного ввода|
|H.RSLF| FE8F | 6CD8 | | | Переназначить "старый" дисковод|
|H.SAVD| FE94 | 6D03, 6D14, 6D25, 6D39 | | | "Сохранение" текущего дисковода (LOC,LOF,EOF,FPOS)|
|H.LOC | FE99 | 6D0F | | | Подпрограмма выполнения функции LOC |
|H.LOF | FE9E | 6D20 |∗| | Подпрограмма выполнения функции LOF |
|H.EOF | FEA3 | 6D33 |∗| | Подпрограмма выполнения функции EOF |
|H.FPOS| FEA8 | 6D43 |∗| | Подпрограмма выполнения функции FPOS|
|H.BAKU| FEAD | 6E36 | | | Подпрограмма возврата BAKUPT|
|H.PARD| FEB2 | 6F15 | | | Подпрограмма анализа имени устройст.|
|H.NODE| FEB7 | 6F33 | | | Подпрограмма определения новых имен, если устройство не подтверждено|
|H.POSD| FEBC | 6F37 | | | Подпрограмма POSDSK|
|H.DEVN| FEC1 | | | | Ловушка не используется|
|H.GEND| FEC6 | 6F8F | | | Подпрограмма проверки является ли устройство дисководом|
|H.RUNC| FECB | 629A | | | Подпрограмма выполнения RUN|
|H.CLEA| FED0 | 62A1 | | | Подпрограмма выполнения CLEAR|
|H.LOPD| FED5 | 62AF | | | Подпрограмма установки циклов|
|H.STKE| FEDA | 62F0 | | | Подпрограмма ошибок в стеке|
|H.ISFL| FEDF | 0BF9 | | | Подпрограмма ISFLIO|
|H.OUTD| FEE4 | 1B46 | | 00E1, 0018| Подпрограмма вывода символов|
|H.CRDO| FEE9 | 7328 | | | Подпрограмма вывода символов CR+LF|
|H.DSKC| FEEE | 7374 | | | Подпрограмма DSKCHI|
|H.DOGR| FEF3 | 593C | | | Подпрограмма выполнения графики(DRAW)
|H.PRGE| FEF8 | 4039 | | | Подпрограмма выполнения END|
|H.ERRP| FEFD | 40DC | |014A | Печать сообщения об ошибке|
|H.ERRF| FF02 | 40FD | | | Подпрограмма обработки ошибки|
|H.READ| FF07 | 4128 | | | Подпрограмма вывода сообщения "Ok"|
|H.MAIN| FF0C | 4134 | | | Вход в MAIN|
|H.DIRD| FF11 | 41A8 | | | Вход в непосредственное выполнение DO|
|H.FINI| FF16 | 4237 | |0010, 0028|Подпрограмма с именем CHRGTR|
|H.FINE| FF1B | 4247 | |:::|:::|
|H.CRUN| FF20 | 42B9 | |:::|:::|
|H.CRUS| FF25 | 4353 | |:::|:::|
|H.ISRE| FF2A | 437C | |:::|:::|
|H.NTFN| FF2F | 43A4 | |:::|:::|
|H.NOTR| FF34 | 44EB | |:::|:::|
|H.SNGF| FF39 | 45D1 | |:::|:::|
|H.NEWS| FF3E | 4601 | |:::|:::|
|H.GONE| FF43 | 4646 | |:::|:::|
|H.CHRG| FF48 | 4666 | |:::|:::|
|H.RETU| FF4D | 4821 | |:::|:::|
|H.PRTF| FF52 | 4A5E | |:::|:::|
|H.COMP| FF57 | 4A94 | |:::|:::|
|H.FINP| FF5C | 4AFF | |:::|:::|
|H.TRMN| FF61 | 4B4D | |:::|:::|
|H.FRME| FF66 | 4C6D | |:::|:::|
|H.NTPL| FF6B | 4CA6 | |:::|:::|
|H.EVAL| FF70 | 4DD9 | |:::|:::|
|H.OKNO| FF75 | 4F2C | |:::|:::|
|H.FING| FF7A | 4F3E | |:::|:::|
|H.ISMI| FF7F | 51C3 | | |Подпрограмма, выполняющая MID$|
|H.WIDT| FF84 | 51CC | | |Подпрограмма, выполняющая WIDTH|
|H.LIST| FF89 | 522E | | |Подпрограмма, выполняющая [L]LIST|
|H.BUFL| FF8E | 532D | | |Подпрограмма, работающая со строкой буфера|
|H.FRQI| FF93 | 543F | | |Подпрограмма преобразования в целое|
|H.SCNE| FF98 | 5514 | | | |
|H.FRET| FF9D | 67EE | | | Свободный дескриптор|
|H.PTRG| FFA2 | 5EA9 | | | Подпрограмма возвращения указателя|
|H.PHYD| FFA7 | 1414 | |0144| Подпрограмма физического ввода–вывода диска|
|H.FORM| FFAC | 1418 | |0147| Подпрограмма, выполняющая FORMAT|
|H.ERRO| FFB1 | 406F | | | ERROR — подпрограмма|
|H.LPTO| FFB6 | 08BA | |005F, 00D2, 00A5| Подпрограмма вывода строки на принтер (LPRINT)|
|H.LPTS| FFBB | 08E1 | |00A8| Подпрограмма статуса строки на принтере|
|H.SCRE| FFC0 | 79CC | | | "Вход" в оператор SCREEN|
|H.PLAY| FFC5 | 73E5 | | | "Вход" в оператор PLAY|
----
[<>]
{{tag>MSX msxbdpl}}