Программа под VictoriaOS представляет собой файл, аналогичный
DOS COM. Такой формат программ выбран для обеспечения совместимости
между VictoriaOS и MS-DOS. Исполняемый файл целиком и без каких-либо
изменений загружается в отдельный сегмент памяти, начиная со смещения
0100h (256). Первой выполняется инструкция по смещению 0100h. Программа
должна завершаться инструкцией RET или системным вызовом TERMINATE
(int 51h).
Все необходимые константы и макросы для FASM (Flat Assembler)
представлены в файле VICTORIA.INC. Этот файл может быть без особого труда
модифицирован для использования с любым другим ассемблером.
VictoriaOS предоставляет программам пользователя набор различных функций, доступных через программное прерывание int 50h. Функции VictoriaAPI можно разделить на несколько категорий:
Функции консольного ввода-вывода
Функции для выделения и освобождения памяти
Функции для работы с файловой системой (VictoriaFS)
Функции для запуска и завершения программ
Функции управления обработкой ошибок
Другие функции
Чтобы обратиться к какой-либо функции VictoriaAPI, необходимо
поместить в регистр AH номер вызываемой функции, а параметры
функции поместить в регистры, согласно описанию ниже. Ниже будут
подробно рассмотрены функции по группам.
4. Функции консольного ввода-вывода
SC_GETC — ввод символа с клавиатуры с выводом на экран.
Входные параметры: нет.
Возвращаемые значения: ASCII код нажатой клавиши в AL, скан-код клавиши AH.
SC_PUTC — вывод символа на экран.
Входные параметры: ASCII код символа в AL.
Возвращаемые значения: нет.
SC_GETS — ввод ASCIIZ строки с клавиатуры с выводом на экран.
Входные параметры: адрес буфера для записи строки — DS:DX.
Возвращаемые значения: нет.
SC_PUTS — вывод ASCIIZ строки на экран.
Входные параметры: адрес строки — DS:DX.
Возвращаемые значения: нет.
SC_GET_TEXT_ATTR — получение атрибутов текста для консольного вывода.
Входные параметры: нет.
Возвращаемые значения: AL — атрибут.
SC_SET_TEXT_ATTR — задание атрибутов текста для консольного вывода.
Входные параметры: AL — атрибут.
Возвращаемые значения: нет.
SC_OPEN_FILE — открытие файла.
Входные параметры: адрес строки, содержащей имя файла — DS:DX,
режим для работы с файлом — AL (O_READ — только для чтения,
O_WRITE — только для записи).
Возвращаемые значения: CX — размер файла, AX — атрибуты файла.
Замечание: только один файл может быть открыт в любой момент времени.
SC_FGETC — чтение одного символа из файла
Входные параметры: нет.
Возвращаемые значения: прочитанный символ — AL.
SC_EOF — проверка, достигнут ли конец файла.
Входные параметры: нет.
Возвращаемые значения: AX = 0, если конец файла еще не достигнут,
AX <> 0 иначе.
SC_READ — чтение блока данных из файла.
Входные параметры: адрес буфера — DS:DX, количество байтов,
которые нужно прочитать — CX.
Возвращаемые значения: нет.
SC_FPUTC — запись символа в файл.
Входные параметры: символ, который можно записать — AL.
Возвращаемые значения: нет.
SC_WRITE — запись блока в файл.
Входные параметры: адрес буфера — DS:DX, количество байтов,
которые нужно записать — CX.
Возвращаемые значения: нет.
SC_CLOSE_FILE — закрытие файла.
Входные параметры: нет.
Возвращаемые значения: нет.
SC_DELETE_FILE — удаление файла.
Входные параметры: адрес строки, содержащей имя файла — DS:DX.
Возвращаемые значения: нет.
SC_GET_ATTR — получение атрибутов файла.
Входные параметры: нет.
Возвращаемые значения: атрибуты файла — AX.
Замечание: существуют следующие атрибуты файлов: ATTR_READ (файл можно читать), ATTR_WRITE (можно писать), ATTR_EXEC (можно исполнять), ATTR_SYSTEM (файл является системным). Эти атрибуты можно комбинировать с помощью побитового ИЛИ (OR).
SC_SET_ATTR — запись атрибутов файла.
Входные параметры: атрибуты файла — CX.
Возвращаемые значения: нет.
SC_RENAME — переименование файла.
Входные параметры: адрес строки, содержащей начальное имя файла — DS:DX, адрес строки, содержащей конечное имя файла — DS:DX.
Возвращаемые значения: нет.
SC_GET_SIZE — получение размера открытого файла.
Входные параметры: нет.
Возвращаемые значения: размер файла — CX.
SC_OPEN_DIR — открытие корневой директории для чтения
Входные параметры: нет.
Возвращаемые значения: нет.
Замечание: на директорию распространяются те же ограничения, что и на файл.
SC_READ_DIR — чтение следующего элемента корневой директории.
Входные параметры: адрес строки, куда будет записано имя файла — DS:DX.
Возвращаемые значения: размер файла — CX, атрибуты файла — AX.
SC_CLOSE_DIR — завершение чтения директории.
Входные параметры: нет.
Возвращаемые значения: нет.
SC_FILE_EXISTS — проверка на существование файла
Входные параметры: адрес строки, содержащей имя файла — DS:DX.
Возвращаемые значения: AX=0, если файл не существует, AX<>0 иначе.
SC_GET_ERR_MSG — получение сообщения по коду ошибки.
Входные параметры: адрес буфера для записи сообщения — DS:DX.
Возвращаемые значения: нет.
SC_SET_ERR_MODE — задание режима обработки ошибок.
Входные параметры: режим обработки ошибок — DX. Возможные режимы: EM_HIDE — ничего не делать при ошибке, EM_SHOW — выводить сообщение об ошибке, EM_TERMINATE — завершать программу (их можно комбинировать побитовым ИЛИ).
Возвращаемые значения: нет.
Замечание: режим обработки ошибок, установленный этой функцией, распространяется только на текущий процесс.
SC_GET_VER — получение версии системы
Входные параметры: адрес буфера для информации о системе — DS:DX.
Возвращаемые значения: основная версия системы — AH, вторичная версия системы — AL.