?login_element?

Subversion Repositories NedoOS

Rev

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