[<>] ~~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}}