I/O-порты
Карта регистров
Системные
| Индекс |
Адрес |
Доступ |
Имя |
Описание |
0000h |
00020000h |
R |
SYS_STATUS |
Статус системы |
0001h |
00020001h |
R/W |
SYS_CTRL |
Управление системой |
0002h |
00020002h |
- |
IRQ_PEND |
Ожидающие прерывания |
0003h |
00020003h |
- |
IRQ_MASK |
Маска прерываний |
0004h |
00020004h |
R |
TIMER_LOW |
Младшая часть таймера |
0005h |
00020005h |
R |
TIMER_HIGH |
Старшая часть таймера |
0006h |
00020006h |
R |
UPTIME |
Время работы системы |
0007h |
00020007h |
R/W |
BANK |
Страница окна VRAM в 64 КБ (0 — следовать за TERM_BUFFER) |
0008h |
00020008h |
R/W |
KBD_CTRL |
Управление клавиатурой |
0009h |
00020009h |
R |
KBD_SCANCODE |
Скан-код следующей клавиши (PC set-1) |
000Ah |
0002000Ah |
R |
KBD_MODIFIER |
Зафиксированные модификаторы |
000Bh |
0002000Bh |
R |
KBD_ASCII |
ASCII-код активной клавиши |
000Ch |
0002000Ch |
R |
RAM_SIZE |
Размер ОЗУ |
0010h |
00020010h |
R |
CPU_FEATURES |
Возможности CPU |
0011h |
00020011h |
R/W |
BOOT_DEVICE |
Загрузочное устройство |
0012h |
00020012h |
R/W |
SYS_FLAGS |
Системные флаги |
0013h |
00020013h |
R |
ERROR_CODE |
Код последней ошибки |
Терминал и видео
| Индекс |
Адрес |
Доступ |
Имя |
Описание |
0018h |
00020018h |
W |
TERM_OUT |
Вывод символа в терминал |
0019h |
00020019h |
W |
TERM_COMMAND |
Команда терминала (см. ниже) |
001Ah |
0002001Ah |
R/W |
VC_MODE |
Режим видеокарты |
001Bh |
0002001Bh |
R/W |
TERM_ATTR |
Атрибут символа (младшие 16 = fg, старшие 16 = bg) |
0060h |
00020060h |
R |
TERM_RES_X |
Ширина экрана (символы или пиксели) |
0064h |
00020064h |
R |
TERM_RES_Y |
Высота экрана |
0068h |
00020068h |
R/W |
TERM_POS_X |
Позиция курсора по X |
006Ch |
0002006Ch |
R/W |
TERM_POS_Y |
Позиция курсора по Y |
0070h |
00020070h |
R/W |
TERM_BUFFER |
База отображения VRAM (и база окна, пока BANK = 0) |
Команды TERM_COMMAND:
| Значение |
Команда |
01h |
Очистить экран |
02h |
Включить курсор |
03h |
Выключить курсор |
04h |
Включить прокрутку |
05h |
Выключить прокрутку |
Часы реального времени (RTC)
| Индекс |
Адрес |
Доступ |
Имя |
Описание |
0020h |
00020020h |
R |
RTC_SEC |
Секунды |
0021h |
00020021h |
R |
RTC_MIN |
Минуты |
0022h |
00020022h |
R |
RTC_HOUR |
Часы |
0023h |
00020023h |
R |
RTC_DAY |
День |
0024h |
00020024h |
R |
RTC_MONTH |
Месяц |
0025h |
00020025h |
R |
RTC_YEAR |
Год |
0026h |
00020026h |
R |
RTC_WEEKDAY |
День недели |
0027h |
00020027h |
R |
RTC_CENTURY |
Век |
0028h |
00020028h |
R |
RTC_UNIX_TIME |
Unix time (32-бит, little-endian) |
Программируемый таймер (PIT)
| Индекс |
Адрес |
Доступ |
Имя |
Описание |
0030h |
00020030h |
R/W |
PIT_COMMAND |
Команда PIT |
0031h |
00020031h |
R/W |
PIT_CH0 |
Канал 0 |
0032h |
00020032h |
R/W |
PIT_CH1 |
Канал 1 |
0033h |
00020033h |
R/W |
PIT_CH2 |
Канал 2 |
0034h |
00020034h |
R |
PIT_STATUS |
Статус PIT |
Мышь
| Индекс |
Адрес |
Доступ |
Имя |
Описание |
0040h |
00020040h |
R/W |
MOUSE_X |
Координата X |
0044h |
00020044h |
R/W |
MOUSE_Y |
Координата Y |
0048h |
00020048h |
R/W |
MOUSE_BTN |
Кнопки мыши |
004Ch |
0002004Ch |
R/W |
MOUSE_DELTA_X |
Смещение по X |
0050h |
00020050h |
R/W |
MOUSE_DELTA_Y |
Смещение по Y |
0054h |
00020054h |
R/W |
MOUSE_SENS |
Чувствительность (fixed-point 1/256) |
Генератор случайных чисел (RNG)
| Индекс |
Адрес |
Доступ |
Имя |
Описание |
0080h |
00020080h |
R |
RNG_RAND |
Следующее случайное значение |
0081h |
00020081h |
W |
RNG_SEED |
Переинициализация генератора |
Сопроцессор с плавающей точкой (FPU)
| Индекс |
Адрес |
Доступ |
Имя |
Описание |
0090h |
00020090h |
R/W |
FPU_A |
Операнд A (IEEE 754 float32) |
0094h |
00020094h |
R/W |
FPU_B |
Операнд B (IEEE 754 float32) |
0098h |
00020098h |
W |
FPU_OP |
Код операции (выполняется сразу) |
009Ch |
0002009Ch |
R |
FPU_RESULT |
Результат |
00A0h |
000200A0h |
R/W |
FPU_FLAGS |
Флаги состояния |
Звукогенератор (PSG)
| Индекс |
Адрес |
Доступ |
Имя |
Описание |
00B0h |
000200B0h |
R/W |
PSG_TONE0 |
Период тона канала 0 (16-бит) |
00B2h |
000200B2h |
R/W |
PSG_TONE1 |
Период тона канала 1 |
00B4h |
000200B4h |
R/W |
PSG_TONE2 |
Период тона канала 2 |
00B6h |
000200B6h |
R/W |
PSG_NOISE |
Период шума |
00B7h |
000200B7h |
R/W |
PSG_MIXER |
Микшер (bits 0-2 - тон, 3-5 - шум) |
00B8h |
000200B8h |
R/W |
PSG_VOL0 |
Громкость канала 0 (4 бита) + бит 7 - огибающая |
00B9h |
000200B9h |
R/W |
PSG_VOL1 |
Громкость канала 1 |
00BAh |
000200BAh |
R/W |
PSG_VOL2 |
Громкость канала 2 |
00BBh |
000200BBh |
R/W |
PSG_ENV_PERIOD |
Период огибающей (16-бит) |
00BDh |
000200BDh |
R/W |
PSG_ENV_SHAPE |
Форма огибающей (см. ниже) |
00BEh |
000200BEh |
R |
PSG_ENV_LEVEL |
Текущий уровень огибающей (0-15) |
Классы устройств
| Индекс |
Адрес |
Доступ |
Имя |
Описание |
0200h |
00020200h |
R/W |
DEV_CLASS_COUNT |
Количество классов |
0201h |
00020201h |
R/W |
DEV_CLASS_SELECT |
Выбор класса |
0202h |
00020202h |
R |
DEV_CLASS_CLASS |
Класс устройства |
0203h |
00020203h |
R |
DEV_CLASS_VENDOR |
Производитель |
0204h |
00020204h |
R |
DEV_CLASS_NAME |
Имя устройства |
| … |
… |
… |
… |
… |
023Fh |
0002023Fh |
R |
DEV_CLASS_NAME_END |
Конец имени |
Дисковый контроллер XPB1
| Индекс |
Адрес |
Доступ |
Имя |
Описание |
0100h |
00020110h |
R |
DISK_STATUS |
Статус |
0101h |
00020111h |
R/W |
DISK_CTRL |
Управление (команды) |
0102h |
00020112h |
R/W |
DISK_LBA |
Младшая часть LBA |
0103h |
00020113h |
R/W |
DISK_LBA_HI |
Старшая часть LBA |
0104h |
00020114h |
R/W |
DISK_BUFFER |
Буфер сектора |
0105h |
00020115h |
R/W |
DISK_COUNT |
Число секторов |
0106h |
00020116h |
R/W |
DISK_DRIVE |
Номер диска |
0107h |
00020117h |
R/W |
DISK_IRQ |
IRQ |
0108h |
00020118h |
R/W |
DISK_SIZE |
Размер диска |
0109h |
00020119h |
R/W |
LBA_SIZE |
Размер LBA |
010Ah |
0002011Ah |
R |
DISK_DOUT |
Вывод данных |
010Bh |
0002011Bh |
R/W |
DISK_DIN |
Ввод данных |
010Ch |
0002011Ch |
R/W |
BUFFER_OFFSET |
Смещение буфера |
Команды DISK_CTRL:
| Код |
Команда |
00h |
Idle / reset |
01h |
Acknowledge ready |
02h |
Read single sector |
03h |
Read multiple sectors |
04h |
Write single sector |
05h |
Write multiple sectors |
08h |
Write DISK_DIN в буфер по BUFFER_OFFSET |
10h |
Format (обнулить DISK_COUNT секторов начиная с DISK_LBA) |
Биты статуса DISK_STATUS:
| Бит |
Имя |
Описание |
| 0 |
BUSY |
Устройство занято |
| 1 |
ERROR |
Ошибка |