Rev 614 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
517 | dimkam | 1 | Определения, описанные в этом документе, объявлены в файле 'sys_h.asm', |
2 | который в свою очередь линкует файл 'sysdefs.asm'. |
||
3 | |||
4 | Данный документ подразумевает использование асм-компилятора sjasmplus из репозитория NedoOS. |
||
519 | dimkam | 5 | sjasmplus поставляется в виде исполняемого файла sjasmplus.exe для OS Windows. |
6 | А также в виде исходного кода для самостоятельной сборки под вами используемую OS. |
||
517 | dimkam | 7 | |
8 | ************************* Используемые выражения ************************* |
||
519 | dimkam | 9 | байт - минимальная единица хранения данных в ОЗУ ZX-Spectrum, равная 8 битам. |
517 | dimkam | 10 | |
519 | dimkam | 11 | 0x - приставка к константе, обозначающая число представленное в шестнадцатеричной системе измерения. |
517 | dimkam | 12 | |
13 | little-endian - представление числа в ОЗУ. Это представление использует процессор z80. |
||
519 | dimkam | 14 | Сначала младший байт, затем старший. В этом документе, по умолчанию, все числа little-endian. |
15 | К примеру 16 битное число 0x1234 располагается в памяти как DEFB 0x34,0x12 |
||
16 | |||
517 | dimkam | 17 | string(строка) - нуль-терминированный массив байтов, обычно содержащий строку символов. |
519 | dimkam | 18 | Пример: DEFB "Hello Work!",0 |
19 | |||
517 | dimkam | 20 | буфер - массив байтов, как правило располагается в ОЗУ. |
21 | |||
519 | dimkam | 22 | страница ОЗУ(page) - 16 килобайт физического ОЗУ. |
517 | dimkam | 23 | |
519 | dimkam | 24 | окно(окно памяти) - диапазон адресного пространства процессора z80. |
25 | В NedoOS используется четыре окна располагаемых в адресах |
||
26 | 0x0000...0x3fff, 0x4000...0x7fff, 0x8000...0xbfff, 0xc000...0xffff |
||
517 | dimkam | 27 | |
28 | указатель - адрес, в адресном пространстве z80 либо файле, указывающий на ячейку памяти или на начало массива ячеек памяти |
||
29 | |||
30 | Палитра - палитра цветов видеовывода |
||
31 | |||
32 | фокус - доступность, процессу, вывода на экран и чтения клавиатуры. |
||
519 | dimkam | 33 | В момент времени фокус может принадлежать только одному процессу, остальным процессам в этот момент фокус недоступен. |
34 | Фокус переключается при вызове OS_SETGFX, при закрытии процесса, а также хоткеем. |
||
517 | dimkam | 35 | |
36 | квант времени - время выделяемое процессу. Как правило процессорное время распределяется |
||
519 | dimkam | 37 | в равных долях между всеми активными процессами. Переключение процессов происходит |
38 | по сигналу n_int процессора, либо если процесс отдал свой квант времени. |
||
517 | dimkam | 39 | |
40 | процесс - задача. |
||
519 | dimkam | 41 | Процессу доступно адресное пространство 0x0080...0xffff. |
42 | Не допускается модифицирование данных, процессом, в адресном пространстве 0x0000...0x007f |
||
43 | Стек процесса может располагаться в диапазоне адресов 0x3b00...0xffff. |
||
44 | У каждого процесса свой квант времени и своя палитра. |
||
45 | При создании процесса ему выделяется четыре страницы ОЗУ, которые подключаются |
||
46 | в 4 окна адресного пространства. Адреса 0x0000...0x00ff заполняются служебной информацией. |
||
47 | Также устанавливается системная цветовая палитра. |
||
48 | При старте процесса управление передается на адрес PROGSTART, |
||
49 | в регистр SP помещается адрес 0x0000. |
||
50 | |||
51 | программа - типичная программа это исполняемый файл с расширением '.com', максимальный размер программы 0x10000-PROGSTART |
||
52 | При запуске программы она помещается в отдельный процесс начиная с адреса PROGSTART |
||
53 | командная строка вызова программы помещается(вызываемым процессом) начиная с адреса 0x0080, максимум PROGSTART-0x0080 символов. |
||
54 | Программы запускаются процессами следующим образом: |
||
55 | создаётся процесс, загружается тело программы в его страницы, запускается процесс. |
||
56 | Исходный код программы, как правило, начинается строками: |
||
57 | DEVICE ZXSPECTRUM128 |
||
58 | include "../_sdk/sys_h.asm" |
||
59 | ORG PROGSTART |
||
60 | И заканчивается строкой |
||
61 | savebin "progname.com",PROGSTART,$-PROGSTART |
||
62 | Данный тип программ поддерживается, для запуска, программами 'cmd.com' и 'nv.com' |
||
63 | |||
517 | dimkam | 64 | 8.3 - формат имени файла либо директории, до 8 символов имя и до 3 символов расширение. |
519 | dimkam | 65 | В случае присутствия расширения, используется символ '.' в качестве разделителя имени и расширения |
517 | dimkam | 66 | |
610 | alone | 67 | FCB - файловая запись, совместимая с CP/M (FCB_sz байт). Лежит в памяти задачи. |
68 | В будущем планируется отказаться от FCB, как и от функций CP/M. |
||
69 | Вместо FCB рекомендуется использовать хэндлы и функции, работающие через хэндлы. |
||
70 | |||
71 | хэндл - уникальный номер открытого файла в системе. |
||
72 | Файловая запись, соответствующая этому файлу, лежит в памяти ядра. |
||
73 | Имеются разные диапазоны номеров для разных типов устройств (пока это не документируется, так как может поменяться). |
||
74 | |||
517 | dimkam | 75 | *********************************************************** |
76 | *********************** Определения *********************** |
||
77 | *********************************************************** |
||
610 | alone | 78 | При вызове функций ядра возможна порча всех регистров (за исключением SP). |
517 | dimkam | 79 | |
80 | *********************** PROGSTART ********************** |
||
519 | dimkam | 81 | Идентификатор, определяющий начало компиляции и стартовый адрес программы. |
610 | alone | 82 | В текущей реализации равен 0x0100. |
519 | dimkam | 83 | |
84 | Пример использования, а также минимальный исходный код программы: |
||
85 | DEVICE ZXSPECTRUM128 |
||
86 | include "../_sdk/sys_h.asm" |
||
87 | ORG PROGSTART |
||
88 | ;исходный код программы |
||
89 | QUIT |
||
90 | savebin "progname.com",PROGSTART,$-PROGSTART |