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>
This commit is contained in:
2026-06-03 16:13:21 +03:00
parent f542608b3f
commit c71e249a4e
404 changed files with 75155 additions and 58 deletions
+421
View File
@@ -0,0 +1,421 @@
Системные вызовы дисковой подсистемы (DSS) v1.6
Системные вызовы
   Если программа выполняет не только некую математическую задачу на ассемблере, то в ней придется столкнуться с такими вещами, как получение ввода пользователя, выполнение вывода результатов и завершение своей работы. Для этого, необходимо обратиться к сервисам 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.
Далее идет список категорий функций DSS для системы Estex
HYPERLINK "" \l "version" Функции идентификации системы
HYPERLINK "" \l "disk_io" Функции для работы с диском
HYPERLINK "" \l "file_io" Функции для работы с файлами
HYPERLINK "" \l "date_time" Функции для работы с датой и временем
HYPERLINK "" \l "memory" Функции управления памятью
HYPERLINK "" \l "keyboard" Функции ввода с клавиатуры
HYPERLINK "" \l "execute" Функции для исполнения программ
HYPERLINK "" \l "cmdline" Функции для работы со строками и командной строкой
HYPERLINK "" \l "var" Функции для работы с переменными
HYPERLINK "" \l "screen" Функции работы с экраном
HYPERLINK "" \l "printer" Функции для печати на принтере
HYPERLINK "" \l "tocversion" Функции идентификации системы

00h (00) VERSION (Версия DSS)
Входные значения:
C - 00h
Выходные значения:
D - номер версии
E - модификация
HYPERLINK "" \l "tocdisk_io" Функции для работы с диском

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
HYPERLINK "" \l "tocfile_io" Функции для работы с файлами

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",0C - 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
HYPERLINK "" \l "tocdate_time" Функции для работы с датой и временем

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
HYPERLINK "" \l "tocmemory" Функции управления памятью

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
HYPERLINK "" \l "tockeyboard" Функции ввода с клавиатуры

30h (48) WAITKEY (Ожидание символа с клавиатуры)
Входные значения:
C - 30h
Выходные значения:
A - код символа
D - позиционный код
Е - ASCII код
C - режим клавиатуры:bit7 - RUS/LATbit3 - Num Lockbit2 - Scroll Lockbit1 - Insertbit0 - Caps LockB - состояние shift'ов:bit7 - Left Shiftbit6 - Right Shiftbit5 - Ctrlbit4 - Altbit3 - Left Ctrlbit2 - Left Altbit1 - Right Ctrlbit0 - Right Alt
31h (49) SCANKEY (Опрос клавиатуры без ожидания)
Входные значения:
C - 31hВыходные значения:
ZF = 1 - нет клавиш
A - код символа
D - позиционный код
Е - ASCII код
C - режим клавиатуры:bit7 - RUS/LATbit3 - Num Lockbit2 - Scroll Lockbit1 - Insertbit0 - Caps LockB - состояние shift'ов:bit7 - Left Shiftbit6 - Right Shiftbit5 - Ctrlbit4 - Altbit3 - Left Ctrlbit2 - Left Altbit1 - Right Ctrlbit0 - Right Alt
32h (50) ECHOKEY (Ожидание символа с клавиатуры с печатью)
Входные значения:
C - 32h
Выходные значения:
A - код символа
D - позиционный код
Е - ASCII код
C - режим клавиатуры:bit7 - RUS/LATbit3 - Num Lockbit2 - Scroll Lockbit1 - Insertbit0 - Caps LockB - состояние shift'ов:bit7 - Left Shiftbit6 - Right Shiftbit5 - Ctrlbit4 - Altbit3 - Left Ctrlbit2 - Left Altbit1 - Right Ctrlbit0 - Right Alt
33h (51) CTRLKEY (Получить состояние клавиатуры)
Входные значения:
C - 33h
Выходные значения:
A = 0 - нет символов в буфере
C - режим клавиатуры:bit7 - RUS/LATbit3 - Num Lockbit2 - Scroll Lockbit1 - Insertbit0 - Caps LockB - состояние shift'ов:bit7 - Left Shiftbit6 - Right Shiftbit5 - Ctrlbit4 - Altbit3 - Left Ctrlbit2 - Left Altbit1 - Right Ctrlbit0 - Right Alt
35h (53) K_CLEAR (Очистить буфер клавиатуры и выполнить функцию)
Входные значения:
B - номер фун
ции 30h, 31h, 32h, 33h или 34hC - 35h
Выходные значения:
В зависимости от указанной функции в регистре B.
36h (54) K_SETUP (Управление настройками клавиатуры)
Входные значения:
B - номер подфункции
C - 36h

B = 0, установить раскладку клавиатуры
A - номер раскладки
0 - normal1 - shift2 - caps lock3 - caps lock + shift4 - 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/LATbit3 - Num Lockbit2 - Scroll Lockbit1 - Insertbit0 - Caps LockB - состояние shift'ов:bit7 - Left Shiftbit6 - Right Shiftbit5 - Ctrlbit4 - Altbit3 - Left Ctrlbit2 - Left Altbit1 - Right Ctrlbit0 - Right Alt
HYPERLINK "" \l "tocexecute" Функции для исполнения программ

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 - код завершения
HYPERLINK "" \l "toccmdline" Функции для работы со строками и командной строкой

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
HYPERLINK "" \l "tocvar" Функции для работы с переменными

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
HYPERLINK "" \l "tocscreen" Функции работы с экраном

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
Выходные значения:
нет
HYPERLINK "" \l "tocprinter" Функции для печати на принтере

5Fh (95) PRINT (Вывод символа на принтер без ожидания)
Входные значения:
A - символ
C - 5Fh
Выходные значения:
B - символ
CF = 1 - принтер не готов