Rev 610 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download
Определения, описанные в этом документе, объявлены в файле 'sys_h.asm',который в свою очередь линкует файл 'sysdefs.asm'.Данный документ подразумевает использование асм-компилятора sjasmplus из репозитория NedoOS.sjasmplus поставляется в виде исполняемого файла sjasmplus.exe для OS Windows.А также в виде исходного кода для самостоятельной сборки под вами используемую OS.************************* Используемые выражения *************************байт - минимальная единица хранения данных в ОЗУ ZX-Spectrum, равная 8 битам.0x - приставка к константе, обозначающая число представленное в шестнадцатеричной системе измерения.little-endian - представление числа в ОЗУ. Это представление использует процессор z80.Сначала младший байт, затем старший. В этом документе, по умолчанию, все числа little-endian.К примеру 16 битное число 0x1234 располагается в памяти как DEFB 0x34,0x12string(строка) - нуль-терминированный массив байтов, обычно содержащий строку символов.Пример: DEFB "Hello Work!",0буфер - массив байтов, как правило располагается в ОЗУ.страница ОЗУ(page) - 16 килобайт физического ОЗУ.окно(окно памяти) - диапазон адресного пространства процессора z80.В NedoOS используется четыре окна располагаемых в адресах0x0000...0x3fff, 0x4000...0x7fff, 0x8000...0xbfff, 0xc000...0xffffуказатель - адрес, в адресном пространстве z80 либо файле, указывающий на ячейку памяти или на начало массива ячеек памятиПалитра - палитра цветов видеовыводафокус - доступность, процессу, вывода на экран и чтения клавиатуры.В момент времени фокус может принадлежать только одному процессу, остальным процессам в этот момент фокус недоступен.Фокус переключается при вызове OS_SETGFX, при закрытии процесса, а также хоткеем.квант времени - время выделяемое процессу. Как правило процессорное время распределяетсяв равных долях между всеми активными процессами. Переключение процессов происходитпо сигналу n_int процессора, либо если процесс отдал свой квант времени.процесс - задача.Процессу доступно адресное пространство 0x0080...0xffff.Не допускается модифицирование данных, процессом, в адресном пространстве 0x0000...0x007fСтек процесса может располагаться в диапазоне адресов 0x3b00...0xffff.У каждого процесса свой квант времени и своя палитра.При создании процесса ему выделяется четыре страницы ОЗУ, которые подключаютсяв 4 окна адресного пространства. Адреса 0x0000...0x00ff заполняются служебной информацией.Также устанавливается системная цветовая палитра.При старте процесса управление передается на адрес PROGSTART,в регистр SP помещается адрес 0x0000.программа - типичная программа это исполняемый файл с расширением '.com', максимальный размер программы 0x10000-PROGSTARTПри запуске программы она помещается в отдельный процесс начиная с адреса PROGSTARTкомандная строка вызова программы помещается(вызываемым процессом) начиная с адреса 0x0080, максимум PROGSTART-0x0080 символов.Программы запускаются процессами следующим образом:создаётся процесс, загружается тело программы в его страницы, запускается процесс.Исходный код программы, как правило, начинается строками:DEVICE ZXSPECTRUM128include "../_sdk/sys_h.asm"ORG PROGSTARTИ заканчивается строкойsavebin "progname.com",PROGSTART,$-PROGSTARTДанный тип программ поддерживается, для запуска, программами 'cmd.com' и 'nv.com'8.3 - формат имени файла либо директории, до 8 символов имя и до 3 символов расширение.В случае присутствия расширения, используется символ '.' в качестве разделителя имени и расширенияFCB - файловая запись, совместимая с CP/M (FCB_sz байт). Лежит в памяти задачи.В будущем планируется отказаться от FCB, как и от функций CP/M.Вместо FCB рекомендуется использовать хэндлы и функции, работающие через хэндлы.хэндл - уникальный номер открытого файла в системе.Файловая запись, соответствующая этому файлу, лежит в памяти ядра.Имеются разные диапазоны номеров для разных типов устройств (пока это не документируется, так как может поменяться).********************************************************************************** Определения **********************************************************************************При вызове функций ядра возможна порча всех регистров (за исключением SP).*********************** PROGSTART **********************Идентификатор, определяющий начало компиляции и стартовый адрес программы.В текущей реализации равен 0x0100.Пример использования, а также минимальный исходный код программы:DEVICE ZXSPECTRUM128include "../_sdk/sys_h.asm"ORG PROGSTART;исходный код программыQUITsavebin "progname.com",PROGSTART,$-PROGSTART