Files
snark13 c71e249a4e Add full compiler toolchain, libc, examples and reference docs
First substantive commit: the entire Sprinter C compiler tree on top of
the bare README+gitignore initial commit.

What's in here:
  bin/sprinter-cc        — driver script invoking SDCC + linker + mkexe
  libc/                  — Sprinter-specific libc layer over ESTEX/BIOS
                           (conio, gfx, io, mem, stdio + headers)
  runtime/               — crt0 variants (default/small/banked/minimal)
                           + heap + bank trampolines
  toolchain/             — mkexe (SprintEXE packer, C + tests)
  examples/              — 30 demo programs (gfx, file I/O, env, time, …)
  lib/Makefile           — builds the libc archive (sprinter.lib)
  docs/                  — converted Sprinter manuals + asm reference samples
  third_party/           — solid-c reference compiler dump + sdcc setup script
  release_docs/          — packaging / release notes

gitignore overhaul:
  • Drop dangerous blanket patterns: *.asm (would hide docs/samples/*.asm)
    and *.exe (case-insensitive match was hiding third_party/solid-c/*.EXE
    on macOS APFS).  Replaced with examples/*/*.{asm,exe,…} and lib/*.lib.
  • Restore tracking of toolchain/mkexe/tests/{one,big}.bin — those are
    INPUT fixtures, not build outputs.
  • Collapse the duplicated SDCC/C/Sdcc sections into one section per
    concern (build outputs / vendored / OS-junk).
  • Add .sprinter-cc-*/, build/ (catches lib/build/ too), .claude/.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-03 16:13:21 +03:00

1460 lines
33 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
1.1. Системные вызовы дисковой подсистемы (DSS) v1.6
1.1.1. Системные вызовы
Если программа выполняет не только некую математическую задачу на ассемблере, то в ней придется столкнуться с такими вещами, как получение ввода пользователя, выполнение вывода результатов и завершение своей работы. Для этого, необходимо обратиться к сервисам DSS. Фактически, программирование на языке ассемблера одинаково для любых систем, если не пользоваться их сервисами.
Вызов функций DSS в системе Estex выполняется из ассемблера. Необходимые параметры указываются в различных регистрах, регистр C используется для указания номера функции.
Так, наша программа для Estex будет выглядеть наподобие:
ORG #8100 ;адрес точки входа
LD HL,MSG ;сообщение для вывода
LD C,5Ch ;номер системного вызова (PCHARS)
RST 10h ;вызов подсистемы
LD C,41h ;номер системного вызова (EXIT)
RST 10h ;вызов подсистемы
MSG db "Hello, world!",0Dh,0Ah ;наша строка
db 0 ;конец строки
Следом за таблицей есть пояснение по двум новым функциям 0Ch и 0Dh.
1.1.2. Далее идет список категорий функций DSS для системы Estex
• Функции идентификации системы
• Функции для работы с диском
• Функции для работы с файлами
• Функции для работы с датой и временем
• Функции управления памятью
• Функции ввода с клавиатуры
• Функции для исполнения программ
• Функции для работы со строками и командной строкой
• Функции для работы с переменными
• Функции работы с экраном
• Функции для печати на принтере
Функции идентификации системы
00h (00) VERSION (Версия DSS)
Входные значения:
C - 00h Выходные значения:
D - номер версии
E - модификация
Функции для работы с диском
01h (01) CHDISK (Смена текущего диска)
Входные значения:
A - номер диска (0-A,1-B...)
C - 01h Выходные значения:
A - код ошибки, если CF=1
A - максимальный номер диска, если CF=0
02h (02) CURDISK (Номер текущего диска)
Входные значения:
C - 02h Выходные значения:
A - код ошибки, если CF=1
A - текущий номер диска (0-A,1-B...), если CF=0
03h (03) DSKINFO (Информация о диске)
Входные значения:
A - номер диска (0-A,1-B...0FFh-текущий)
C - 03h Выходные значения:
A - код ошибки, если CF=1
A - размер кластера в секторах, если CF=0
HL - общее кол-во кластеров
DE - свободных кластеров
BC - размер сектора в байтах
09h (09) BOOTDSK (Номер системного диска)
Входные значения:
C - 09h
B = 0 Выходные значения:
A - код ошибки, если CF=1
A - номер системного диска (0-A,1-B...), если CF=0
Функции для работы с файлами
0Ah (10) CREATE (Создание файла)
Входные значения:
HL - указатель на файловую спецификацию
A - атрибут файла
C - 0Ah Выходные значения:
A - код ошибки, если CF=1
A - файловый манипулятор, если CF=0
0Bh (11) CREATE NEW FILE (Создание нового файла)
Входные значения:
HL - указатель на файловую спецификацию
A - атрибут файла
C - 0Bh Выходные значения:
A – код ошибки, если CF=1
A - файловый манипулятор, если CF=0
0Eh (14) DELETE (Удаление файла)
Входные значения:
HL - указатель на файловую спецификацию
C - 0Eh Выходные значения:
A - код ошибки, если CF=1
10h (16) RENAME (Переименование файла)
Входные значения:
HL - указатель на старое имя файла
DE - указатель на новое имя файла
C - 10h Выходные значения:
A - код ошибки, если CF=1
11h (17) OPEN (Открытие файла)
Входные значения:
HL - указатель на файловую спецификацию
A - режим доступа
A=0 чтение/запись
A=1 чтение
A=2 запись
C - 11h Выходные значения:
A - код ошибки, если CF=1
A - файловый манипулятор, если CF=0
12h (18) CLOSE (Закрытие файла)
Входные значения:
A - файловый манипулятор
C - 12h Выходные значения:
A - код ошибки, если CF=1
13h (19) READ (Чтение из файла)
Входные значения:
A - файловый манипулятор
HL - адрес в памяти
DE - количество читаемых байт
C - 13h Выходные значения:
A - код ошибки, если CF=1
DE - реальное количество прочитанных байт
если CF=0:
A = 0 прочитаны все байты
A = 0FFh прочитано меньшее число байт
14h (20) WRITE (Запись в файл)
Входные значения:
A - файловый манипулятор
HL - адрес в памяти
DE - количество записываемых байт
C - 14h Выходные значения:
A - код ошибки, если CF=1
DE - реальное количество записанных байт
15h (21) MOVE_FP (Перемещение указателя в файле)
Входные значения:
A - файловый манипулятор
HL:IX - смещение указателя в файле
B - способ перемещения:
B=0 от начала файла
B=1 от текущего значения указателя
B=2 от конца файла
C - 15h Выходные значения:
A - код ошибки, если CF=1
HL:IX - новое значение указателя
16h (22) ATTRIB (Получение/изменение атрибута файла)
Входные значения:
HL - указатель на файловую спецификацию
B - режим доступа
B = 0 получить атрибут
B = 1 установить атрибут
A - атрибут файла
C - 16h Выходные значения:
A - код ошибки, если CF=1
A - атрибут файла, если CF=0
17h (23) GET_D_T (Информация о дате и времени файла)
Входные значения:
A - файловый манипулятор
C - 17h Выходные значения:
A - код ошибки, если CF=1
D - день
E - месяц
IX - год
H - час
L - минуты
B - секунды
18h (24) PUT_D_T (Изменение даты и времени файла)
Входные значения:
A - файловый манипулятор
D - день
E - месяц
IX - год
H - час
L - минуты
B - секунды
C - 18h Выходные значения:
A - код ошибки, если CF=1
19h (25) F_FIRST (Поиск первого совпадающего файла)
Входные значения:
HL - указатель на файловую спецификацию
DE - рабочий буфер 44 байта, если B=0, иначе 256 байт
A - атрибуты, используемые при поиске
B = 0 - имя найденного файла в формате 11 байт "FilenameExt"
B = 1 - имя найденного файла в формате DOS "filename.ext",0
C - 19h Выходные значения:
A - код ошибки, если CF=1
1Ah (26) F_NEXT (Поиск следующего совпадающего файла)
Входные значения:
DE - указатель на рабочий буфер
C - 1Ah Выходные значения:
A - код ошибки, если CF=1
1Bh (27) MKDIR (Создание каталога)
Входные значения:
HL - указатель на файловую спецификацию
C - 1Bh Выходные значения:
A - код ошибки, если CF=1
1Ch (28) RMDIR (Устранение каталога)
Входные значения:
HL - указатель на файловую спецификацию
C - 1Ch Выходные значения:
A - код ошибки, если CF=1
1Dh (29) CHDIR (Смена текущего каталога)
Входные значения:
HL - указатель на файловую спецификацию
C - 1Dh Выходные значения:
A - код ошибки, если CF=1
1Eh (30) CURDIR (Информация о текущем каталоге)
Входные значения:
HL - буфер в памяти 256 байт
C - 1Eh Выходные значения:
A - код ошибки, если CF=1
Функции для работы с датой и временем
21h (33) SYSTIME (Текущая дата и время)
Входные значения:
C - 21h Выходные значения:
D - день
E - месяц
IX - год
H - час
L - минуты
B - секунды
C - день недели
22h (34) SETTIME (Установить текущую дату и время)
Входные значения:
D - день
E - месяц
IX - год
H - час
L - минуты
B - секунды
C - 22h Выходные значения:
A - код ошибки, если CF=1
Функции управления памятью
38h (56) SETWIN (Подключение страницы памяти)
Входные значения:
A - идентификатор блока памяти
B - номер страницы в блоке (0,1,2...)
H - биты 6 и 7 задают номер окна, в которое будет подключена страница
C - 38h Выходные значения:
A - код ошибки, если CF=1
A - номер замещенной страницы, если CF=0
39h (57) SETWIN1 (Подключение страницы памяти в первое окно)
Входные значения:
A - идентификатор блока памяти
B - номер страницы в блоке (0,1,2...)
C - 39h Выходные значения:
A - код ошибки, если CF=1
A - номер замещенной страницы, если CF=0
3Ah (58) SETWIN2 (Подключение страницы памяти во второе окно)
Входные значения:
A - идентификатор блока памяти
B - номер страницы в блоке (0,1,2...)
C - 39h Выходные значения:
A - код ошибки, если CF=1
A - номер замещенной страницы, если CF=0
3Bh (59) SETWIN3 (Подключение страницы памяти в третье окно)
Входные значения:
A - идентификатор блока памяти
B - номер страницы в блоке (0,1,2...)
C - 3Bh Выходные значения:
A - код ошибки, если CF=1
A - номер замещенной страницы, если CF=0
3Ch (60) INFOMEM (Информация о памяти)
Входные значения:
C - 3Ch Выходные значения:
HL - общее количество страниц
BC - количество свободных страниц
3Dh (61) GETMEM (Выделение блока памяти)
Входные значения:
B - размер блока в страницах по 16 килобайт
C - 3Dh Выходные значения:
A - код ошибки, если CF=1
A - идентификатор блока памяти, если CF=0
3Eh (62) FREEMEM (Освобождение блока памяти)
Входные значения:
A - идентификатор блока памяти
C - 3Eh Выходные значения:
A - код ошибки, если CF=1
3Fh (63) SETMEM (Изменение блока памяти)
Входные значения:
A - идентификатор блока памяти
B - новый размер блока
C - 3Fh Выходные значения:
A - код ошибки, если CF=1
0Ch (12) SET_CACHE_FLAG (Установка флага включенной кэш памяти)
Входные значения:
C 0Ch
Выходные значения:
A – номер страницы для сохранения переключателя.
CF=1 если ошибка.
0Dh (13) RESET_CACHE_FLAG (Сброс флага включенной кэш памяти)
Входные значения:
C 0Dh
Выходные значения:
CF=1 если ошибка.
Функции ввода с клавиатуры
30h (48) WAITKEY (Ожидание символа с клавиатуры)
Входные значения:
C - 30h Выходные значения:
A - код символа
D - позиционный код
Е - ASCII код
C - режим клавиатуры:
bit7 - RUS/LAT
bit3 - Num Lock
bit2 - Scroll Lock
bit1 - Insert
bit0 - Caps Lock
B - состояние shift'ов:
bit7 - Left Shift
bit6 - Right Shift
bit5 - Ctrl
bit4 - Alt
bit3 - Left Ctrl
bit2 - Left Alt
bit1 - Right Ctrl
bit0 - Right Alt
31h (49) SCANKEY (Опрос клавиатуры без ожидания)
Входные значения:
C - 31h Выходные значения:
ZF = 1 - нет клавиш
A - код символа
D - позиционный код
Е - ASCII код
C - режим клавиатуры:
bit7 - RUS/LAT
bit3 - Num Lock
bit2 - Scroll Lock
bit1 - Insert
bit0 - Caps Lock
B - состояние shift'ов:
bit7 - Left Shift
bit6 - Right Shift
bit5 - Ctrl
bit4 - Alt
bit3 - Left Ctrl
bit2 - Left Alt
bit1 - Right Ctrl
bit0 - Right Alt
32h (50) ECHOKEY (Ожидание символа с клавиатуры с печатью)
Входные значения:
C - 32h Выходные значения:
A - код символа
D - позиционный код
Е - ASCII код
C - режим клавиатуры:
bit7 - RUS/LAT
bit3 - Num Lock
bit2 - Scroll Lock
bit1 - Insert
bit0 - Caps Lock
B - состояние shift'ов:
bit7 - Left Shift
bit6 - Right Shift
bit5 - Ctrl
bit4 - Alt
bit3 - Left Ctrl
bit2 - Left Alt
bit1 - Right Ctrl
bit0 - Right Alt
33h (51) CTRLKEY (Получить состояние клавиатуры)
Входные значения:
C - 33h Выходные значения:
A = 0 - нет символов в буфере
C - режим клавиатуры:
bit7 - RUS/LAT
bit3 - Num Lock
bit2 - Scroll Lock
bit1 - Insert
bit0 - Caps Lock
B - состояние shift'ов:
bit7 - Left Shift
bit6 - Right Shift
bit5 - Ctrl
bit4 - Alt
bit3 - Left Ctrl
bit2 - Left Alt
bit1 - Right Ctrl
bit0 - Right Alt
35h (53) K_CLEAR (Очистить буфер клавиатуры и выполнить функцию)
Входные значения:
B - номер фун
ции 30h, 31h, 32h, 33h или 34h
C - 35h Выходные значения:
В зависимости от указанной функции в регистре B.
36h (54) K_SETUP (Управление настройками клавиатуры)
Входные значения:
B - номер подфункции
C - 36h
B = 0, установить раскладку клавиатуры
A - номер раскладки
0 - normal
1 - shift
2 - caps lock
3 - caps lock + shift
4 - normal (альтернативная кл.)
5 - shift (альтернативная кл.)
6 - caps lock (альтернативная кл.)
7 - caps lock + shift (альтернативная кл.)
B = 1, получить состояние звуковых переменных
B = 2, установить звуковые переменные
A - значение переменной
bit0 - сигнал переполнения буфера клавиатуры
bit1 - сигнал переключения на альтернативную раскладку клавиатуры Выходные значения:
В зависимости от указанной функции в регистре B.
37h (55) TESTKEY (Опрос буфера клавиатуры)
Входные значения:
C - 37h Выходные значения:
ZF = 1 - нет символов в буфере
A - код символа
D - позиционный код
Е - ASCII код
C - режим клавиатуры:
bit7 - RUS/LAT
bit3 - Num Lock
bit2 - Scroll Lock
bit1 - Insert
bit0 - Caps Lock
B - состояние shift'ов:
bit7 - Left Shift
bit6 - Right Shift
bit5 - Ctrl
bit4 - Alt
bit3 - Left Ctrl
bit2 - Left Alt
bit1 - Right Ctrl
bit0 - Right Alt
Функции для исполнения программ
40h (64) EXEC (Выполнить файл)
Входные значения:
HL - указатель на файловую спецификацию
B = 0 - загрузить и выполнить программу
C - 40h Выходные значения:
A - код ошибки, если CF=1
A - код завершения, если CF=0
41h (65) EXIT (Завершение программы)
Входные значения:
B - код завершения
C - 41h Выходные значения:
A - код ошибки, если CF=1
A - код завершения, если CF=0
42h (66) WAIT (Получить код завершения программы)
Входные значения:
C - 42h Выходные значения:
A - код завершения
Функции для работы со строками и командной строкой
43h (67) GSWITCH (Выделить параметр командной строки)
Входные значения:
HL - указатель командной строки
DE - буфер для выделяемого параметра
C - 43h Выходные значения:
HL - указатель на следующий параметр командной строки
CF = 0 - конец строки не достигнут (есть другие параметры)
CF = 1 - конец строки (в буфер перенесён последний параметр или ноль)
44h (68) DOSNAME (Преобразовать имя файла)
Входные значения:
C - 44h
B = 0, преобразовать из 11 символьного формата в формат ДОС
HL - 11 символов имени файла
DE - буфер для имени в формате ДОС
B = 1, преобразовать из формата ДОС в 11 символьный формат
HL - имя файла в формате ДОС
DE - 11 символов имени файла Выходные значения:
A - код ошибки, если CF=1
45h (69) EXCMDLN (Разбор командной строки)
Входные значения:
HL - указатель командной строки
DE - указатель на буфер пользователя
C - 45h
B - номер подфункции:
0 - Разобрать строку;
1 - Выделить имя диска;
2 - Выделить директорию;
3 - Выделить имя файла;
4 - Выделить расширение файла;
5 - Выделить имя диска, путь к файлу, имя файла и расширение файла;
6 - Зарезервирована;
7 - Выделить параметр командной строки;
8 - Преобразовать из 11 символьного формата в формат ДОС;
9 - Преобразовать из формата ДОС в 11 символьный формат;
Подфункция 0 - Разобрать строку:
Входные значения:
HL - указатель командной строки
C - 45h
B = 0 - Разобрать строку Выходные значения:
A - код ошибки, если CF=1
A - результат разбора, если CF=0
bit7 - В строке обнаружены символы ? или *
bit3 - В строке указано имя диска;
bit2 - В строке указан путь к файлу;
bit1 - В строке указано расширение файла;
bit0 - В строке указано имя файла;
Подфункция 1 - Выделить имя диска:
Входные значения:
HL - указатель командной строки
DE - буфер (макс. 13 байт)
C - 45h
B = 1 - Выделить имя диска Выходные значения:
A - код ошибки, если CF=1
A - номер диска (0 - A, 1 - B, 2 - C и т.д.), если CF=0
буфер - имя диска "A:",0
Подфункция 2 - Выделить директорию:
Входные значения:
HL - указатель командной строки
DE - буфер (макс. 256 байт)
C - 45h
B = 2 - Выделить директорию Выходные значения:
A - код ошибки, если CF=1
A - результат разбора, если CF=0
bit7 - В строке обнаружены символы ? или *
bit3 - В строке указано имя диска;
bit2 - В строке указан путь к файлу;
bit1 - В строке указано расширение файла;
bit0 - В строке указано имя файла;
буфер - директория "DIR1\DIR2\DIR3\",0
Подфункция 3 - Выделить имя файла:
Входные значения:
HL - указатель командной строки
DE - буфер (макс. 13 байт)
C - 45h
B = 3 - Выделить имя файла Выходные значения:
A - код ошибки, если CF=1
A - результат разбора, если CF=0
bit7 - В строке обнаружены символы ? или *
bit3 - В строке указано имя диска;
bit2 - В строке указан путь к файлу;
bit1 - В строке указано расширение файла;
bit0 - В строке указано имя файла;
буфер - имя файла "FILE.EXT",0
Подфункция 4 - Выделить расширение файла:
Входные значения:
HL - указатель командной строки
DE - буфер (макс. 4 байт)
C - 45h
B = 4 - Выделить расширение файла Выходные значения:
A - код ошибки, если CF=1
A - результат разбора, если CF=0
bit7 - В строке обнаружены символы ? или *
bit3 - В строке указано имя диска;
bit2 - В строке указан путь к файлу;
bit1 - В строке указано расширение файла;
bit0 - В строке указано имя файла;
буфер - расширение "TXT",0 или "C ",0
Подфункция 5 - Выделить имя диска, путь к файлу, имя файла и расширение файла:
Входные значения:
HL - указатель командной строки
DE - буфер (макс. 8 байт)
DE+0 адрес буфера для имени диска (макс. 13 байт)
DE+2 адрес буфера для директории (макс. 256 байт)
DE+3 адрес буфера для имени файла (макс. 13 байт)
DE+4 адрес буфера для расширения файла (макс. 4 байта)
C - 45h
B = 5 - Выделить имя диска, путь к файлу, имя файла и расширение файла Выходные значения:
A - код ошибки, если CF=1
A - результат разбора, если CF=0
bit7 - В строке обнаружены символы ? или *
bit3 - В строке указано имя диска;
bit2 - В строке указан путь к файлу;
bit1 - В строке указано расширение файла;
bit0 - В строке указано имя файла;
Подфункция 7 - Выделить параметр командной строки
Входные значения:
HL - указатель командной строки
DE - буфер для выделяемого параметра
C - 45h
B = 7 - Выделить параметр командной строки Выходные значения:
HL - указатель на следующий параметр командной строки
CF = 0 - конец строки не достигнут (есть другие параметры)
CF = 1 - конец строки (в буфер перенесён последний параметр или ноль)
Подфункция 8 - Преобразовать из 11 символьного формата в формат ДОС
Входные значения:
C - 45h
B = 8 - преобразовать из 11 символьного формата в формат ДОС
HL - 11 символов имени файла
DE - буфер для имени в формате ДОС Выходные значения:
A - код ошибки, если CF=1
Подфункция 9 - Преобразовать из формата ДОС в 11 символьный формат
Входные значения:
C - 45h
B = 9 - преобразовать из формата ДОС в 11 символьный формат
HL - имя файла в формате ДОС
DE - буфер для 11 символов имени файла Выходные значения:
A - код ошибки, если CF=1
Функции для работы с переменными
46h (70) ENVIRON (Системное окружение)
Входные значения:
B - номер подфункции
C - 46h
B=0 Получение системного окружения
HL - буфер
B=1 Получить переменную окружения
HL - имя переменной
DE - буфер для значения переменной
B=2 Установить/удалить переменную окружения
HL - имя переменной и значение, разделенные символом '=', (ПЕРЕМЕННАЯ=ЗНАЧЕНИЕ) Выходные значения:
A - состояние, если CF=0
A=0 - переменная обнаружена
A=0FFh - переменная не обнаружена
DE - указывает на конец буфера
A - код ошибки, если CF=1
47h (71) APPINFO (Получение информации приложения)
Входные значения:
B - номер подфункции
C - 47h
HL - буфер данных
B=0 - получение параметров командной строки
B=1 - получение полного пути к каталогу программы
B=2 - получение полного пути и имени файла программы Выходные значения::
A - код ошибки, если CF=1
Функции работы с экраном
50h (80) SETVMOD (Выбор режима экрана)
Входные значения:
A - режим экрана
02h - текстовый 40x32x16 цветов
03h - текстовый 80x32x16 цветов
81h - графический 320x256x256 цветов
82h - графический 640x256x16 цветов
B - страница экрана 0/1
C - 50h Выходные значения:
A - код ошибки, если CF=1
51h (81) GETVMOD (Получить текущий режим экрана)
Входные значения:
C - 51h Выходные значения:
A - код ошибки, если CF=1
A - текущий режим экрана, если CF=0
B - страница экрана 0/1
52h (82) LOCATE (Установить позицию курсора)
Входные значения:
D - строка курсора
E - столбец курсора
C - 52h Выходные значения:
нет
53h (83) CURSOR (Получить текущую позицию курсора)
Входные значения:
C - 53h Выходные значения:
D - строка курсора
E - столбец курсора
54h (84) SELPAGE (Выбрать активную страницу экрана)
Входные значения:
B - страница экрана 0/1
C - 54h Выходные значения:
A - код ошибки, если CF=1
55h (85) SCROLL (Прокрутка окна)
Входные значения:
D - строка левого верхнего угла окна
E - столбец левого верхнего угла окна
H - высота окна
L - ширина окна
B = 1 - прокрутка вверх
B = 2 - прокрутка вниз
A = 0 - очищать строку
C - 55h Выходные значения:
нет
56h (86) CLEAR (Очистка окна)
Входные значения:
D - строка левого верхнего угла окна
E - столбец левого верхнего угла окна
H - высота окна
L - ширина окна
B - атрибут заполнитель
A - символ заполнитель
C - 56h Выходные значения:
нет
57h (87) RDCHAR (Считать символ с экрана)
Входные значения:
D - строка
E - столбец
C - 57h Выходные значения:
A - символ
B - атрибут
58h (88) WRCHAR (Напечатать символ на экране)
Входные значения:
D - строка
E - столбец
A - символ
B - атрибут
C - 58h Выходные значения:
нет
59h (89) WINCOPY (Запомнить окно экрана)
Входные значения:
D - строка
E - столбец левого верхнего угла окна
H - высота окна
L - ширина окна
B - страница буфера
IX - адрес буфера
C - 59h Выходные значения:
нет
5Ah (90) WINREST (Восстановить окно экрана)
Входные значения:
D - строка
E - столбец левого верхнего угла окна
H - высота окна
L - ширина окна
B - страница буфера
IX - адрес буфера
C - 5Ah Выходные значения:
нет
5Bh (91) PUTCHAR (Напечатать символ в текущей позиции курсора)
Входные значения:
A - символ
C - 5Bh Выходные значения:
нет
5Ch (92) PCHARS (Напечатать строку символов в текущей позиции курсора)
Входные значения:
HL - указатель на начало строки символов
C - 5Ch Выходные значения:
нет
Функции для печати на принтере
5Fh (95) PRINT (Вывод символа на принтер без ожидания)
Входные значения:
A - символ
C - 5Fh Выходные значения:
B - символ
CF = 1 - принтер не готов