docs: справочники по железу Sprinter + правка gfx_scroll_h
- docs/new/ — сводные справочники (архитектура, BIOS, DSS, память, графика, акселератор, IRQ, порты, ввод, звук, известные баги); - docs/Original/ — первоисточники, из которых они собраны (BIOS, Estex DSS, мануалы, описание акселератора), + Форум.doc/.docx в reference; - libbgi/common/gfx_scroll_h.c — обход бага скролла при ширине >256 (правка автора: шаг банды 255 и продвижение указателей на cw; старый вариант с 256 оставлен закомментированным с TODO); - удалён applications/PoP/roomtest/hang_variants.png — рабочая раскладка из разбора позы виса, в репозитории ей не место. Большие архивы (docs/extra ~568 МБ, docs/sources с вложенными git-репо ~68 МБ) в коммит НЕ включены — см. обсуждение. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Binary file not shown.
@@ -0,0 +1,893 @@
|
||||
# Функции BIOS v2.12
|
||||
|
||||
### Вызов функций BIOS
|
||||
|
||||
Вызов функций BIOS осуществляется из ассемблерного кода.
|
||||
|
||||
Номер функции задается в регистре C процессора. В остальные регистры,
|
||||
при необходимости, загружаются входные параметры функции. После исполнения
|
||||
функции происходит возврат в программу, из которой произошел вызов функции.
|
||||
Установленный флаг CF (CF=1) означает, что работа функции произошла с
|
||||
ошибкой. В некоторых регистрах передаются выходные параметры.
|
||||
|
||||
Ниже приведены таблицы входных и выходных параметров для каждой функции:
|
||||
|
||||
- Функции работы с памятью
|
||||
- Функции управления 'железом'
|
||||
- Функции управления окнами и режимами экрана
|
||||
- Функции вывода текста на экран
|
||||
- Графические функции
|
||||
- Функции работы с жесткими дисками и дисководами
|
||||
|
||||
При работе функций BIOS необходимо что бы стек находился в области
|
||||
8000h..0BFFFh, так как часть функций использует переключение страниц
|
||||
PAGE1 и PAGE3.
|
||||
|
||||
Вызов функций BIOS возможен в различных конфигурациях компьютера Sprinter.
|
||||
|
||||
Конфигурация Spectrum: вызов функций BIOS осуществляется через 3D13h.
|
||||
При этом работают и все функции TR-DOS.
|
||||
|
||||
Конфигурации Sprinter: вызов функций BIOS осуществляется через RST 18h
|
||||
при подключенном системном ПЗУ.
|
||||
|
||||
Для постоянного подключения системного ПЗУ можно воспользоваться
|
||||
такой последовательностью команд:
|
||||
|
||||
```asm
|
||||
LD A,0
|
||||
OUT (07Ch),A
|
||||
```
|
||||
|
||||
После ее исполнения в 0-м окне Z80 будет включено ПЗУ BIOSа и программа
|
||||
может вызывать функции BIOSа через RST 18h.
|
||||
|
||||
Отключение ПЗУ BIOSа из нулевого окна Z80 производится следующей
|
||||
последовательностью команд:
|
||||
|
||||
```asm
|
||||
LD A,0
|
||||
OUT (03Ch),A
|
||||
```
|
||||
|
||||
При необходимости, функции BIOSа могут быть вызваны программой, находящейся
|
||||
в ОЗУ непосредственно в нулевом окне Z80. Для этого надо установить в
|
||||
адресе 0008h следующий код:
|
||||
|
||||
```asm
|
||||
ADDRESS_0008h:
|
||||
PUSH AF
|
||||
LD A,0
|
||||
OUT (7Ch),A
|
||||
POP AF
|
||||
RET
|
||||
```
|
||||
|
||||
После этого BIOS можно вызывать командой RST 8. (Функции TR-DOS, так
|
||||
же как и в случае RST 18 остаются недоступны.) Вызывая программы таким
|
||||
образом, через RST 8, следует помнить что адреса 3FFFh..0000h после входа
|
||||
в BIOS будут содержать код ПЗУ, поэтому, если фунция использует данные в
|
||||
ОЗУ, они должны находиться в других адресах.
|
||||
|
||||
Оптимизация программы для RST 8 недопустима, так как в ПЗУ, для
|
||||
обратного переключения, стоит такая же программа, только порт 3Ch для
|
||||
отключения ПЗУ BIOSа.
|
||||
|
||||
Вызов функций BIOS в exe-файлах, вызываемых с помощью операционной
|
||||
системы Estex, производится командой RST 8. Необходимая программа в адресе
|
||||
0008h уже имеется в блоке кода ОС Estex.
|
||||
|
||||
|
||||
### Функции работы с памятью
|
||||
|
||||
**0C0h (192) EMM_FN0 Определение объемов ОЗУ**
|
||||
|
||||
Значение регистров на входе:
|
||||
C=0C0h
|
||||
Значение регистров на выходе:
|
||||
HL - общий объем ОЗУ в страницах по 16k
|
||||
BC - объем свободного ОЗУ в страницах по 16k
|
||||
|
||||
**0C1h (193) EMM_FN1 Инициализация распределения памяти**
|
||||
Стирается вся информация о выделенных ранее блоках ОЗУ.
|
||||
Блоки с системной информацией и первые 256K ОЗУ объявляются занятыми.
|
||||
|
||||
Значение регистров на входе:
|
||||
C=0C1h
|
||||
Значение регистров на выходе:
|
||||
нет
|
||||
|
||||
**0C2h (194) EMM_FN2 Выделение блока ОЗУ**
|
||||
|
||||
Значение регистров на входе:
|
||||
C=0C2h
|
||||
B - число запрашиваемых страниц
|
||||
Значение регистров на выходе:
|
||||
CF=0 - нормальное завершение - A - идентификатор блока
|
||||
CF=1 - ошибка - A=1 - не хватает памяти
|
||||
|
||||
**0C3h (195) EMM_FN3 Освободить блок ОЗУ**
|
||||
|
||||
Значение регистров на входе:
|
||||
C=0C3h
|
||||
A - идентификатор блока
|
||||
Значение регистров на выходе:
|
||||
CF=0 - нормальное завершение
|
||||
CF=1 - неправильный идентификатор
|
||||
идентификатор не всегда отслеживается правильно
|
||||
|
||||
**0C4h (196) EMM_FN4 Получить физический номер страницы из блока памяти**
|
||||
|
||||
Значение регистров на входе:
|
||||
C=0C4h
|
||||
A - идентификатор блока
|
||||
B - логическая номер страницы в блоке
|
||||
Значение регистров на выходе:
|
||||
CF=0 - A - логический номер страницы
|
||||
CF=1 - ошибка:
|
||||
A=0 - блок не существует
|
||||
A=255 - запрашиваемый номер страницы слишком велик
|
||||
|
||||
**0C5h (197) EMM_FN5 Получить список физических страниц блока**
|
||||
|
||||
Значение регистров на входе:
|
||||
C=0C5h
|
||||
A - идентификатор блока
|
||||
HL - буфер 256 байт для размещения списка страниц
|
||||
Значение регистров на выходе:
|
||||
CF=0 - нормальное завершение:
|
||||
B - число страниц в блоке
|
||||
HL - тот же адрес буфера, в буфере список физических
|
||||
страниц по порядку, заканчивающийся байтом 0FFh
|
||||
CF=1 - неверный идентификатор блока; старая информация в буфере
|
||||
может быть затерта
|
||||
|
||||
**0C6h (198) EMM_FN6 Получение адресов портов окон**
|
||||
|
||||
Примечание по использованию функции получения адресов портов окон (0C6h):
|
||||
>Cледует хотя бы один раз вызвать эти функции и сравнить адреса
|
||||
>портов с теми, что используются в программе и, если они не совпадают,
|
||||
>выдать соответствующее предупреждение. В данный момент эти порты
|
||||
>таковы: PAGE0=82h, PAGE1=0A2h, PAGE2=0C2h, PAGE3=0E2h
|
||||
|
||||
Значение регистров на входе:
|
||||
C=0C6h
|
||||
A - номер окна процессора - 0,1,2 или 3
|
||||
Значение регистров на выходе:
|
||||
CF=0 - нормальное завершение
|
||||
C - 8-битный адрес порта окна
|
||||
B - физический номер подключенной в окно страницы
|
||||
CF=1 - ошибка - неверный номер окна
|
||||
|
||||
**0C7h (199) EMM_FN7 Получить номер следующей страницы блока**
|
||||
|
||||
Примечание по использованию функции EMM_FN7 (0C7h):
|
||||
> Информация о распределении памяти хранится в виде RAM Allocation Table,
|
||||
> похожей на дисковый FAT. Поэтому нахождение физического номера
|
||||
> следующей страницы по предыдущему физическому номеру происходит
|
||||
> значительно быстрее, чем поиск по увеличенному на единицу логическому
|
||||
> номеру.
|
||||
|
||||
Значение регистров на входе:
|
||||
C=0C7h
|
||||
A - физическая страница
|
||||
Значение регистров на выходе:
|
||||
CF=0 - нормальное завершение
|
||||
A - следуюшая физическая страница блока
|
||||
A=0FFh - индицирует конец блока
|
||||
CF=1 - ошибка - страница не принадлежит никакому блоку.
|
||||
фактически, это означает, что она свободна.
|
||||
|
||||
**09Eh (158) EMM_FN8 Слияние блоков**
|
||||
|
||||
Значение регистров на входе:
|
||||
A - идентификатор блока 1
|
||||
B - идентификатор блока 2
|
||||
Значение регистров на выходе:
|
||||
CF=0 - нормальное завершение
|
||||
A - идентификатор объединенного блока
|
||||
CF=1 - ошибка - неверный идентификатор блока
|
||||
|
||||
**09Dh (157) EMM_FN9 Разделение блока**
|
||||
|
||||
Значение регистров на входе:
|
||||
C=09Dh
|
||||
A - идентификатор блока
|
||||
B - новая длина блока
|
||||
Значение регистров на выходе:
|
||||
CF=0 - нормальное завершение
|
||||
A - идентификатор блока результата
|
||||
B - идентификатор блока остатка
|
||||
CF=1 - ошибка - неверный идентификатор блока
|
||||
|
||||
### Функции управления 'железом'
|
||||
|
||||
**0EFh (239) FN_VERSION Выдача информации о версии BIOSа и железа.**
|
||||
|
||||
Значение регистров на входе:
|
||||
C=0EFh
|
||||
HL - буфер, куда будет помещена ASCII строка с несколькими
|
||||
полями, номером версии BIOS и названием модели
|
||||
компьютера. Конец строки отмечен двойным нулем.
|
||||
Значение регистров на выходе:
|
||||
CF=0 - нормальное завершение
|
||||
HL - тот же буфер с записанной строкой.
|
||||
DE - версия BIOSа
|
||||
BC - версия железа подробности ниже
|
||||
A - количество полей в буфере (в данный момент - 2)
|
||||
Первое поле - версия BIOS.
|
||||
Второе - название модели компьютера.
|
||||
CF=1 - ошибка - Очень старая версия,
|
||||
не имеющая данной функции
|
||||
|
||||
**0F2h (242) FN_SICF=0 Установка синхронизации, очистка страницы режима экрана**
|
||||
|
||||
Значение регистров на входе:
|
||||
C=0F2h
|
||||
A - режим синхронизации
|
||||
Значение регистров на выходе:
|
||||
CF=0 - нормальное завершение
|
||||
CF=1 - неверный номер режима синхронизации
|
||||
|
||||
### Функции работы с CMOS данными и Turbo режимом
|
||||
|
||||
Комментарий к функциям CMOS (0F5h-0F7h):
|
||||
> Функции CMOS_RD, CMOS_WR, CMOS_TEST работают всегда. Если в машине нет
|
||||
> микросхемы CMOS, то эмулируется ее память. Наличие микросхемы
|
||||
> определяется функцией CMOS_TEST.
|
||||
|
||||
**0F5h (245) CMOS_TEST Проверить наличие CMOS**
|
||||
|
||||
Значение регистров на входе:
|
||||
C=0F5h
|
||||
Значение регистров на выходе:
|
||||
CF=0 - часы есть
|
||||
CF=1 - часов нет
|
||||
|
||||
**0F6h (246) CMOS_RD Читать из регистра CMOS**
|
||||
|
||||
Значение регистров на входе:
|
||||
C=0F6h
|
||||
D - номер регистра CMOS
|
||||
Значение регистров на выходе:
|
||||
A - считанные данные
|
||||
CF=0 - часы есть
|
||||
CF=1 - часов нет
|
||||
|
||||
**0F7h (247) CMOS_WR Писать в регистр CMOS**
|
||||
|
||||
Значение регистров на входе:
|
||||
C=0F7h
|
||||
D - номер регистра CMOS
|
||||
A - записываемые данные
|
||||
Значение регистров на выходе:
|
||||
CF=0 - часы есть
|
||||
CF=1 - часов нет
|
||||
|
||||
**08Fh (143) FN_TURBO Функция управления турбо режимом.**
|
||||
|
||||
Комментарий к функции FN_TURBO (08Fh):
|
||||
Переключение режима турбо может не произойти, если прошивка не
|
||||
поддерживает это переключение. При этом ошибки не происходит. Так
|
||||
же, переключение режима TURBO блокируется кнопкой "Turbo" в
|
||||
режиме Turbo-OFF
|
||||
Значение регистров на входе:
|
||||
C=08Fh
|
||||
A - режим турбо: 2 - off, 3 - on
|
||||
Значение регистров на выходе:
|
||||
CF=0 - нормальное завершение
|
||||
CF=1 - неверный режим турбо
|
||||
|
||||
### Функции управления окнами и режимами экрана
|
||||
|
||||
**0B0h (176) WIN_OPEN Функция открытия окна.**
|
||||
|
||||
Значение регистров на входе:
|
||||
C=0B0h
|
||||
IX - описатель окна
|
||||
E - флаги окна:
|
||||
бит 0 указывает какую страницу режима включать после
|
||||
исполнения функции;
|
||||
бит 4 указывает на какой странице режима открывать окно
|
||||
Значение регистров на выходе:
|
||||
CF=0 - нормальное завершение:
|
||||
A - идентификатор окна
|
||||
CF=1 - ошибка слишком много окон
|
||||
|
||||
**0B1h (177) WIN_CLOSE закрытие окна**
|
||||
|
||||
Значение регистров на входе:
|
||||
C=0B1h
|
||||
A - идентификатор окна
|
||||
Значение регистров на выходе:
|
||||
CF=0 - успешное завершение
|
||||
CF=1 - ошибка - неверный идентификатор
|
||||
Окно с номером 0 никогда не закрывается и попытка
|
||||
закрытия приводит к ошибке
|
||||
|
||||
**0B2h (178) WIN_COPY_WIN Копирование данных текстового окна в память (запоминание окна)**
|
||||
|
||||
При работе этой функции через RST 18h или RST 8, обязателен запрет
|
||||
прерываний, так как функция пользуется стеком для ускорения своей работы.
|
||||
|
||||
Значение регистров на входе:
|
||||
C=0B2h
|
||||
A - идентификатор глобального окна
|
||||
H - размер окна в символах по вертикали
|
||||
L - размер окна в символах по горизонтали
|
||||
D - вертикальное положение окна в глобальном окне
|
||||
E - горизонтальное положение окна в глобальном окне
|
||||
IX - адрес буфера для запоминания данных
|
||||
адрес буфера указывается для окна 0C000h если адрес
|
||||
указан с 8000h, номер страницы буфера не действителен
|
||||
ниже 8000h адрес указывать нельзя
|
||||
A' - страница буфера для данных окна эта страница должна
|
||||
принадлежать программе
|
||||
Значение регистров на выходе:
|
||||
CF=0 - нормальное завершение
|
||||
CF=1 - ошибка - неверный идентификатор окна
|
||||
|
||||
**0B3h (179) WIN_RESTORE_WIN Копирование из памяти в текстовое окно (восстановление окна)**
|
||||
|
||||
При работе этой функции через RST 18h или RST 8, обязателен запрет
|
||||
прерываний, так как функция пользуется стеком для ускорения своей работы.
|
||||
|
||||
Значение регистров на входе:
|
||||
C=0B2h
|
||||
A - идентификатор глобального окна
|
||||
H - размер окна в символах по вертикали
|
||||
L - размер окна в символах по горизонтали
|
||||
D - вертикальное положение окна в глобальном окне
|
||||
E - горизонтальное положение окна в глобальном окне
|
||||
IX - адрес буфера для запоминания данных
|
||||
адрес буфера указывается для окна 0C000h если адрес
|
||||
указан с 8000h, номер страницы буфера не действителен
|
||||
ниже 8000h адрес указывать нельзя
|
||||
A' - страница буфера для данных окна эта страница должна
|
||||
принадлежать программе
|
||||
Значение регистров на выходе:
|
||||
CF=0 - нормальное завершение
|
||||
CF=1 - ошибка - неверный идентификатор окна
|
||||
|
||||
**0B4h (180) WIN_GET_SYM Взять символ с экрана**
|
||||
|
||||
Значение регистров на входе:
|
||||
C=0B4h
|
||||
A - идентификатор окна
|
||||
DE - положение символа в окне:
|
||||
D - вертикаль, E - горизонталь
|
||||
Значение регистров на выходе:
|
||||
CF=0 - нормальное завершение
|
||||
L - символ, H - атрибут,
|
||||
B - знакогенератор
|
||||
CF=1 - ошибка неверный идентификатор окна
|
||||
|
||||
**0B5h (181) WIN_PUT_SYM Положить символ на экран**
|
||||
|
||||
Значение регистров на входе:
|
||||
C=0B5h
|
||||
A - идентификатор окна
|
||||
DE - положение символа в окне:
|
||||
D - вертикаль, E - горизонталь
|
||||
L - символ, H - атрибут символа
|
||||
B - знакогенератор
|
||||
Значение регистров на выходе:
|
||||
CF=0 - нормальное завершение
|
||||
CF=1 - ошибка неверный идентификатор окна
|
||||
|
||||
**0B6h (182) WIN_SET_ZG установка знакогенератора**
|
||||
|
||||
Значение регистров на входе:
|
||||
C=0B6h
|
||||
A - системный номер знакогенератора
|
||||
DE - указатель на 2Kb блок данных знакогенератора
|
||||
Значение регистров на выходе:
|
||||
CF=0 - нормальное завершение
|
||||
CF=1 - ошибка (старая версия, нет функции)
|
||||
|
||||
**0B7h (183) WIN_MOVE_WIN Перемещение окна**
|
||||
|
||||
При работе этой функции через RST 18h или RST 8, обязателен запрет
|
||||
прерываний, так как функция пользуется стеком для ускорения своей работы.
|
||||
|
||||
Значение регистров на входе:
|
||||
C=0B7h
|
||||
A - идентификатор глобального окна
|
||||
H - размер локального окна по вертикали в символах
|
||||
L - размер локального окна по горизонтали в символах
|
||||
D - положение локального окна по вертикали в символах
|
||||
E - положение локального окна по горизонтали в символах
|
||||
IX - новое положение локального окна (подобно DE)
|
||||
Значение регистров на выходе:
|
||||
CF=0 - нормальное завершение
|
||||
CF=1 - ошибка - неверный идентификатор окна
|
||||
|
||||
**0B8h (184) WIN_GET_ZG Получение знакогенератора**
|
||||
|
||||
Значение регистров на входе:
|
||||
C=0B8h
|
||||
DE - адрес, куда будет загружено 2kb знакогенератора
|
||||
Значение регистров на выходе:
|
||||
CF=0 - нормальное завершение
|
||||
CF=1 - ошибка (старая версия, нет функции)
|
||||
|
||||
### Функции вывода текста на экран
|
||||
|
||||
**081h (129) LP_PRINT_ALL Печать символов с атрибутом**
|
||||
|
||||
На экран выводится строка из B одинаковых символов
|
||||
|
||||
Значение регистров на входе:
|
||||
C=081h
|
||||
A - символ
|
||||
E - атрибут
|
||||
B - число выводимых символов
|
||||
регистры HL,IX - сохраняются
|
||||
Значение регистров на выходе:
|
||||
CF=0 - всегда
|
||||
|
||||
**082h (131) LP_PRINT_SYM Вывод символов на экран без атрибута**
|
||||
|
||||
На экран выводится строка из B одинаковых символов атрибут
|
||||
остается тот, который был на экране
|
||||
|
||||
Значение регистров на входе:
|
||||
C=082h
|
||||
A - символ
|
||||
B - число выводимых символов
|
||||
регистры HL,IX - сохраняются
|
||||
Значение регистров на выходе:
|
||||
CF=0 - всегда
|
||||
|
||||
**083h (131) LP_PRINT_ATR печать атрибутов**
|
||||
|
||||
На экран выводится строка из B одинаковых атрибутов.
|
||||
Символы не меняются.
|
||||
|
||||
Значение регистров на входе:
|
||||
C=083h
|
||||
E - атрибут
|
||||
B - число выводимых символов
|
||||
регистры HL,IX - сохраняются
|
||||
Значение регистров на выходе:
|
||||
CF=0 - всегда
|
||||
|
||||
**084h (132) LP_SET_PLACE Установка текущего знакоместа в окне**
|
||||
|
||||
Позиция печати устанавливается в соответстии с регистром DE
|
||||
|
||||
Значение регистров на входе:
|
||||
C=084h
|
||||
E - положение символа по горизонтали
|
||||
D - номер символа по вертикали
|
||||
Превышение границ приводит не к ошибке, а к переустановке
|
||||
с начала, за вычетом полного размера окна
|
||||
Значение регистров на выходе:
|
||||
CF=0 - всегда
|
||||
|
||||
**085h (133) LP_PRINT_LN Вывод строки символов на экран с текущего знакоместа**
|
||||
|
||||
Значение регистров на входе:
|
||||
C=085h
|
||||
HL - адрес строки должен быть между 04000h и 0BFFFh
|
||||
E - атрибут, с которым будет выведена строка
|
||||
B - длина выводимой строки
|
||||
Значение регистров на выходе:
|
||||
CF=0 - всегда
|
||||
|
||||
**086h (134) LP_PRINT_LN2 Вывод строки символов на экран без атрибутов**
|
||||
|
||||
Значение регистров на входе:
|
||||
C=086h
|
||||
HL - адрес строки должен быть между 04000h и 0BFFFh
|
||||
B - длина выводимой строки
|
||||
Значение регистров на выходе:
|
||||
CF=0 - всегда
|
||||
|
||||
**087h (135) LP_PRINT_LN3 Вывод строки символов до разделителя**
|
||||
|
||||
После разделителя выводятся пробелы, что бы вывести B символов
|
||||
|
||||
Значение регистров на входе:
|
||||
C=087h
|
||||
HL - адрес строки должен быть между 04000h и 0BFFFh
|
||||
E - атрибут, с которым будет выведена строка
|
||||
B - длина выводимой строки
|
||||
D - символ-разделитель, указывающий конец строки
|
||||
Значение регистров на выходе:
|
||||
CF=0 - всегда
|
||||
|
||||
**088h (136) LP_PRINT_LN4 Вывод строки символов до разделителя, без атрибутов**
|
||||
|
||||
символы из выводятся на экран, пока не встретится символ равный D,
|
||||
далее печатаются пробелы, как дополнение строки до B символов.
|
||||
Атрибуты не изменяются.
|
||||
|
||||
Значение регистров на входе:
|
||||
C=088h
|
||||
HL - адрес строки должен быть между 04000h и 0BFFFh
|
||||
B - длина выводимой строки
|
||||
D - символ-разделитель, указывающий конец строки
|
||||
Значение регистров на выходе:
|
||||
CF=0 - всегда
|
||||
|
||||
**089h (137) LP_CLS_WIN Очистка экрана**
|
||||
|
||||
Выполнение производится выводом пробелов с заданным атрибутом
|
||||
|
||||
Значение регистров на входе:
|
||||
C=089h
|
||||
DE - положение локального окна
|
||||
H - размер в символах локального окна по вертикали
|
||||
L - размер в символах локального окна по горизонтали
|
||||
B - атрибут очистки
|
||||
Значение регистров на выходе:
|
||||
CF=0 - всегда
|
||||
|
||||
**08Ah (138) LP_SCROLL_UD Скроллинг части глобального окна вверх/вниз**
|
||||
|
||||
Скроллируются полные строки глобального окна
|
||||
|
||||
Значение регистров на входе:
|
||||
C=08Ah
|
||||
B - тип скроллинга: 1 - вверх; 2 - вниз
|
||||
D - начальная строка скроллинга
|
||||
E - число скроллируемых строк
|
||||
Значение регистров на выходе:
|
||||
CF=0 - всегда
|
||||
|
||||
**08Bh (139) LP_PRINT_LN5 Вывод строки символов на экран до разделителя**
|
||||
|
||||
После разделителя вывод останавливается
|
||||
|
||||
Значение регистров на входе:
|
||||
HL - адрес строки должен быть между 04000h и 0BFFFh
|
||||
E - атрибут, с которым будет выведена строка
|
||||
B - максимальная длина выводимой строки
|
||||
D - символ-разделитель, указывающий конец строки
|
||||
Значение регистров на выходе:
|
||||
CF=0 - всегда
|
||||
|
||||
**08Ch (140) LP_PRINT_LN6 Вывод строки символов на экран до разделителя без атрибутов**
|
||||
|
||||
После разделителя вывод останавливается.
|
||||
|
||||
Значение регистров на входе:
|
||||
C=08Ch
|
||||
HL - адрес строки должен быть между 04000h и 0BFFFh
|
||||
B - максимальная длина выводимой строки
|
||||
D - символ-разделитель, указывающий конец строки
|
||||
Значение регистров на выходе:
|
||||
CF=0 - всегда
|
||||
|
||||
**08Dh (141) LP_CLS_WIN2 Очистка экрана с указанием символа заполнения**
|
||||
|
||||
Значение регистров на входе:
|
||||
C=08Dh
|
||||
DE - положение локального окна
|
||||
H - размер в символах локального окна по вертикали
|
||||
L - размер в символах локального окна по горизонтали
|
||||
B - атрибут очистки
|
||||
A - символ очистки
|
||||
Значение регистров на выходе:
|
||||
CF=0 - всегда
|
||||
|
||||
**08Eh (142) LP_GET_PLACE Получить текущее положение вывода на экран**
|
||||
|
||||
Значение регистров на входе:
|
||||
C=08Eh
|
||||
Значение регистров на выходе:
|
||||
CF=0 - всегда
|
||||
DE - координаты, в которых будет напечатан
|
||||
следующий символ:
|
||||
D - вертикаль, E - горизонталь
|
||||
|
||||
### Графические функции
|
||||
|
||||
**0A1h (161) PIC_POINT Установить точку**
|
||||
|
||||
Значение регистров на входе:
|
||||
C=0A1h
|
||||
DE - координата по вертикали (пиксели)
|
||||
HL - координата по горизонтали (пиксели)
|
||||
Координаты считаются от верхнего левого угла экрана
|
||||
A - идентификатор окна
|
||||
B - цвет точки
|
||||
Значение регистров на выходе:
|
||||
CF=0 - нормальное завершение
|
||||
CF=1 - неверный идентификатор окна
|
||||
|
||||
**0A4h (164) PIC_SET_PAL Установка палитры**
|
||||
|
||||
Значение регистров на входе:
|
||||
C=0A4h
|
||||
HL - данные палитры
|
||||
E - номер начального цвета
|
||||
D - количество устанавливаемых цветов
|
||||
B - маска при установке палитры.
|
||||
Для нормального режима должнa быть 0FFh
|
||||
A - номер палитры 0..15; от 8 до 15 - резервные
|
||||
Значение регистров на выходе:
|
||||
CF=0 - всегда
|
||||
|
||||
**0A6h (166) SET_PAL_INIT Установка внутренней палитры**
|
||||
|
||||
Значение регистров на входе:
|
||||
C=0A6h
|
||||
A - страница палитры
|
||||
B - номер палитры:
|
||||
B=2 - установка спектрумовской палитры
|
||||
B=1 - установка графической плаитры
|
||||
Значение регистров на выходе:
|
||||
CF=0 - нормальное завершение
|
||||
CF=1 - неверный номер палитры
|
||||
|
||||
### Функции работы с жесткими дисками и дисководами
|
||||
|
||||
**50h,52h,53h (80,82,83) Зарезервированы**
|
||||
|
||||
Значение регистров на входе и на выходе:
|
||||
нет
|
||||
|
||||
**51h (81) DRV_RESET Сброс контроллера и настройка на диск**
|
||||
|
||||
Значение регистров на входе:
|
||||
C=51h
|
||||
A - номер и тип устройства
|
||||
бит 7..4 - тип устройства:
|
||||
#0x - FDD
|
||||
#6x - RAM-DISK
|
||||
#8x - HDD
|
||||
#Cx - CD-ROM
|
||||
бит 3..0 - номер устройства
|
||||
Значение регистров на выходе:
|
||||
CF=0 - нормальное завершение
|
||||
CF=1 - ошибка, нет диска или нет устройства
|
||||
|
||||
**54h (84) DRV_VERIFY Проверка секторов**
|
||||
|
||||
Проверка внутренняя на совпадение ECC
|
||||
|
||||
Значение регистров на входе:
|
||||
C=54h
|
||||
A - номер и тип устройства (см. выше)
|
||||
HL:IX - номер сектора (IX - младшая часть номера сектора)
|
||||
B - количество проверяемых секторов
|
||||
Значение регистров на выходе:
|
||||
CF=0 - нормальное завершение
|
||||
CF=1 - проверка с ошибкой
|
||||
|
||||
**55h (85) DRV_READ Чтение с устройства**
|
||||
|
||||
Значение регистров на входе:
|
||||
C=55h
|
||||
A - номер и тип устройства (см. выше)
|
||||
HL:IX - номер сектора (IX - младшая часть номера сектора)
|
||||
B - количество секторов
|
||||
DE - адрес буфера для данных
|
||||
Значение регистров на выходе:
|
||||
CF=0 - нормальное завершение
|
||||
CF=1 - ошибка чтения
|
||||
HL:IX - номер сектора + кол-во прочитанных секторов
|
||||
DE - адрес буфера для данных + (кол-во прочитанных секторов * размер сектора)
|
||||
|
||||
**56h (86) DRV_WRITE Запись на устройства**
|
||||
|
||||
Значение регистров на входе:
|
||||
C=56h
|
||||
A - номер и тип устройства (см. выше)
|
||||
HL:IX - номер сектора (IX - младшая часть номера сектора)
|
||||
B - количество секторов
|
||||
DE - адрес буфера данных для записи
|
||||
Значение регистров на выходе:
|
||||
CF=0 - нормальное завершение
|
||||
CF=1 - ошибка записи
|
||||
HL:IX - номер сектора + кол-во прочитанных секторов
|
||||
DE - адрес буфера для данных + (кол-во прочитанных секторов * размер сектора)
|
||||
|
||||
**57h (87) DRV_DETECT Определение параметров устройства**
|
||||
|
||||
Значение регистров на входе:
|
||||
C=57h
|
||||
A - номер и тип устройства (см. выше)
|
||||
Значение регистров на выходе:
|
||||
CF=0 - нормальное завершение
|
||||
A - bit7=0 диск 720Кb
|
||||
bit7=1 диск 1.44Mb
|
||||
CF=1 - нет устройства или нет носителя
|
||||
|
||||
**58h (88) DRV_GET_PAR Получить параметры носителя**
|
||||
|
||||
Значение регистров на входе:
|
||||
C=58h
|
||||
A - номер и тип устройства (см. выше)
|
||||
Значение регистров на выходе:
|
||||
CF=0 - нормальное завершение
|
||||
L - число секторов
|
||||
H - число головок
|
||||
DE - количество цилиндров
|
||||
если HL=DE=0FFFFh - устройства нет
|
||||
IX - размер сектора в байтах
|
||||
B - доп. параметры для дискет:
|
||||
бит7 - тип 1.44Mb/720Kb
|
||||
CF=1 - нет устройства
|
||||
|
||||
**59h (89) DRV_SET_PAR Установить параметры носителя**
|
||||
|
||||
Значение регистров на входе:
|
||||
A - номер и тип устройства (см. выше)
|
||||
L - число секторов
|
||||
H - число головок
|
||||
DE - количество цилиндров
|
||||
IX - размер сектора в байтах
|
||||
B - доп. параметры для дискет
|
||||
бит7 - тип 1.44Mb/720Kb
|
||||
Значение регистров на выходе:
|
||||
CF=0 - нормальное завершение
|
||||
|
||||
**5Ah (90) EXT_VERSION Номер версии дисковой спецификации.**
|
||||
|
||||
Значение регистров на входе:
|
||||
C=5Ah
|
||||
Значение регистров на выходе:
|
||||
CF=0 - нормальное завершение
|
||||
D - версия
|
||||
E - модификация
|
||||
CF=1 - ошибка
|
||||
|
||||
**5Fh (95) DRV_LIST Список дисковых устройств**
|
||||
|
||||
Значение регистров на входе:
|
||||
C=5Fh
|
||||
IX - буфер для списка устройств
|
||||
Значение регистров на выходе:
|
||||
CF=0 - нормальное завершение
|
||||
|
||||
В буфере список дисков в формате:
|
||||
|
||||
IX+0 - размер заполненого буфера
|
||||
IX+1 - кол-во устройств FDD
|
||||
IX+2 - кол-во устройств HDD
|
||||
IX+3 - кол-во устройств CD DRIVE
|
||||
IX+4 - #00 - конец списка, иначе кол-во устройств нового типа
|
||||
|
||||
|
||||
### Примечания и комментарии.
|
||||
|
||||
##### *Примечание по использованию функции получения адресов портов окон (0C6h).*
|
||||
Cледует хотя бы один раз вызвать эти функции и сравнить адреса портов с
|
||||
теми, что используются в программе и, если они не совпадают, выдать
|
||||
соответствующее предупреждение. В данный момент эти порты таковы:
|
||||
PAGE0=82h, PAGE1=0A2h, PAGE2=0C2h, PAGE3=0E2h
|
||||
|
||||
##### *Примечание по использованию функции EMM_FN7 (0C7h).*
|
||||
Информация о распределении памяти хранится в виде RAM Allocation Table,
|
||||
похожей на дисковый FAT. Поэтому нахождение физического номера следующей
|
||||
страницы по предыдущему физическому номеру происходит значительно быстрее,
|
||||
чем поиск по увеличенному на единицу логическому номеру.
|
||||
|
||||
##### *Комментарий к функции FN_VERSION (0EFh).*
|
||||
Значения регистра BC на выходе и соответствующая ему конфигурация
|
||||
BC=FFFF - Не определено
|
||||
BC=FFFE - Конфигурация Spectrum, режим Sprinter ZX
|
||||
BC=FFFD - Конфигурация Sprinter
|
||||
BC=FFFC - Зарезервировано
|
||||
BC=FFFB - Зарезервировано
|
||||
BC=FFFA - Зарезервировано
|
||||
BC=FFF9 - Зарезервировано
|
||||
Иные значения BC - новые прошивки.
|
||||
|
||||
##### *Комментарий к функциям CMOS (0F5h-0F7h)*
|
||||
Функции CMOS_RD, CMOS_WR, CMOS_TEST работают всегда. Если в машине нет
|
||||
микросхемы CMOS, то эмулируется ее память. Наличие микросхемы
|
||||
определяется функцией CMOS_TEST.
|
||||
|
||||
##### *Комментарий к функции FN_TURBO (08Fh)*
|
||||
Переключение режима турбо может не произойти, если прошивка не
|
||||
поддерживает это переключение. При этом ошибки не происходит. Так же,
|
||||
переключение режима TURBO блокируется кнопкой "Turbo" в режиме Turbo-OFF
|
||||
|
||||
##### *Комментарий к функциям печати текста.*
|
||||
Эти функции работают с текущим окном, которым всегда является последнее
|
||||
открытое окно. К графическому экрану функции печати текста не применимы.
|
||||
|
||||
##### *Описатель окна.*
|
||||
Для открытия окон используется 32-хбайтовый описатель окна (дескриптор),
|
||||
адрес которого указывается в регистре IX.
|
||||
|
||||
IX - 32-хбайтовый описатель окна
|
||||
(IX+0) - горизонтальный размер окна в знакоместах
|
||||
(IX+1) - вертикальный размер в знакоместах
|
||||
(IX+2) - положение окна по горизонтали на экране в знакоместах
|
||||
(IX+3) - положение окна по вертикали на экране в знакоместах
|
||||
(IX+4) - режим знакоместа
|
||||
bit4=1 - text_mode bit4=0 - graf_mode
|
||||
bit5=0 - 16, bit5=1 - 8 точек в знакоместе
|
||||
graf_mode bit3..0 - не существенны
|
||||
bit7..6 - номер палитры
|
||||
text_mode bit7..6,3..0 - номер знакогенератора
|
||||
исключение: bit7..6=B"11" - бордер
|
||||
(IX+5) - дополнительный режим знакоместа
|
||||
bit0=1 - указывает на включение спектрумовской
|
||||
адресации экрана
|
||||
(IX+6) - положение по X в поле графики (по знакоместам)
|
||||
(IX+7) - положение по Y в поле графики (по знакоместам)
|
||||
разъяснения о положении в поле графики - ниже
|
||||
(IX+8..31) - зарезервировано (переменные окна)
|
||||
в этих байтах должны быть нули
|
||||
|
||||
При открытии окна описатель копируется в системную страницу ОЗУ и
|
||||
программа может не сохранять его. Что бы описатель окна не потерялся,
|
||||
программа получает идентификатор окна. Он же идентификатор глобального
|
||||
окна. В функциях запоминания, восстановления, перемещения, а так же
|
||||
функциях стирания, скроллинга и т.п. идентификатор окна определяет
|
||||
область экрана, относительно которой производится работа с локальными
|
||||
окнами. Подразумеваются локальные окна в смысле "окно в окне".
|
||||
Идентификатор окна определяет глобальное окно, отнoсительно которого
|
||||
адресуются локальные. В части функций глобальное окно определяется по
|
||||
умолчанию, как последнее, с которым производились действия с явным
|
||||
указанием идентификатора.
|
||||
|
||||
В данный момент BIOS хранит только один описатель окна - последний,
|
||||
с которым была произведена функция открытия. Идентификатор окна
|
||||
выставляется в 0. В дальнейшем планитруется разработка функций со
|
||||
множеством окон, потому, во избежание неприятностей в будущем, при
|
||||
работе с окнами, программисту следует запоминать идентификатор окна
|
||||
и пользоваться этим значением при работе с ним.
|
||||
|
||||
Типы стандартных окон:
|
||||
0 - окно 32x24 в формате ZX Spectrum
|
||||
1 - текстовое окно 64x24
|
||||
2 - текстовое окно 40x32
|
||||
3 - текстовое окно 80x32
|
||||
4 - окно в формате ZX Spectrum, HL - положение окна на экране в знакоместах
|
||||
5 - текстовое окно 64x24, HL - положение окна на экране в знакоместах
|
||||
6 - текстовое окно 40x32, HL - положение окна на экране в знакоместах
|
||||
7 - текстовое окно 80x32, HL - положение окна на экране в знакоместах
|
||||
8 - графическое окно 0, HL - положение окна на экране
|
||||
9 - графическое окно 1, HL - положение окна на экране
|
||||
|
||||
Данные палитры должны представлять собой список приблизительно такого вида:
|
||||
|
||||
DB blue1,green1,red1,0
|
||||
DB blue2,green2,red2,0
|
||||
.....................
|
||||
DB blueN,greenN,redN,0
|
||||
|
||||
N - количество цветов. Значеное равное 0 соответствует 256-ти цветам.
|
||||
При записи в видео-ОЗУ все данные предварительно проходят функцию AND
|
||||
со значением регистра маски - B.
|
||||
|
||||
Страницы палитры 0..3 соответствуют графическим режимам. Для вывода в
|
||||
соответствующей палитре нужно задать соответствующее значение bit7..6 в
|
||||
байте режима знакоместа
|
||||
|
||||
Страницы 4..7 соответствуют текстовому режиму и спектрумовскому режиму.
|
||||
В странице 4 задается цвет PAPER для каждого атрибута. В странице 5
|
||||
задается цвет INK для каждого атрибута. В странице 6 задается цвет PAPER,
|
||||
которым он будет моргать в режиме FLASH В странице 7 задается цвет INK,
|
||||
которым он будет моргать в режиме FLASH. Таким образом, для каждого из
|
||||
256-ти атрибутов задается четыре цвета если цвета 4,5 совпадают с
|
||||
цветами 6,7 то режим FLASH оказывается отключенным. Для его включения
|
||||
в спектрумовском режиме надо поменять местами цвета 6 и 7. Если надо
|
||||
включить FLASH в режим IBM-CGA, следует установить цвета 6 и 7
|
||||
одинаковыми и равными цвету 4. По сути режим FLASH всегда включен, и
|
||||
на экране постоянно меняются цвета PAPER с 4-го на 6-й, а цвета INK с
|
||||
5 на 7-й. Если эти пары цветов для атрибута знакоместа устанавливаются
|
||||
одинаковыми, то FLASH в этом месте не виден.
|
||||
|
||||
##### *Комментарий к функциям работы с устройствами хранения информации.*
|
||||
|
||||
В этих функциях в регистре A обычно задается номер и тип устройства:
|
||||
бит 0..3 - номер устройства
|
||||
бит 4..7 - тип устройства:
|
||||
0 - дисковод
|
||||
6 - ram-disk
|
||||
8 - HDD
|
||||
C - CD-ROM
|
||||
|
||||
остальные номера не используются
|
||||
|
||||
А так же задаются: старшая часть номера сектора в регисте HL,
|
||||
младшая часть номера сектора в регистре IX.
|
||||
|
||||
@@ -0,0 +1,901 @@
|
||||
# Функции BIOS v3.00
|
||||
|
||||
### Вызов функций BIOS
|
||||
|
||||
**Вызов функций BIOS осуществляется из ассемблерного кода.**
|
||||
|
||||
Номер функции задается в регистре C процессора. В остальные
|
||||
регистры, при необходимости, загружаются входные параметры функции.
|
||||
После исполнения функции происходит возврат в программу, из которой
|
||||
произошел вызов функции. Установленный флаг CF (CF=1) означает, что
|
||||
работа функции произошла с ошибкой. В некоторых регистрах передаются
|
||||
выходные параметры.
|
||||
|
||||
Ниже приведены таблицы входных и выходных параметров для каждой функции:
|
||||
|
||||
- Функции работы с памятью
|
||||
- Функции управления 'железом'
|
||||
- Функции управления окнами и режимами экрана
|
||||
- Функции вывода текста на экран
|
||||
- Графические функции
|
||||
- Функции работы с жесткими дисками и дисководами
|
||||
|
||||
При работе функций BIOS необходимо что бы стек находился в области
|
||||
8000h..0BFFFh, так как часть функций использует переключение страниц
|
||||
PAGE1 и PAGE3.
|
||||
|
||||
Вызов функций BIOS возможен в различных конфигурациях компьютера
|
||||
Sprinter.
|
||||
|
||||
**Конфигурация Spectrum:** вызов функций BIOS осуществляется через
|
||||
3D13h. При этом работают и все функции TR-DOS.
|
||||
|
||||
**Конфигурации Sprinter:** вызов функций BIOS осуществляется через RST
|
||||
18h при подключенном системном ПЗУ.
|
||||
|
||||
Для постоянного подключения системного ПЗУ можно воспользоваться такой
|
||||
последовательностью команд:
|
||||
|
||||
```asm
|
||||
LD A,0
|
||||
OUT (07Ch),A
|
||||
```
|
||||
|
||||
После ее исполнения в 0-м окне Z80 будет включено ПЗУ BIOSа и программа
|
||||
может вызывать функции BIOSа через RST 18h.
|
||||
|
||||
Отключение ПЗУ BIOSа из нулевого окна Z80 производится следующей
|
||||
последовательностью команд:
|
||||
|
||||
```asm
|
||||
LD A,0
|
||||
OUT (03Ch),A
|
||||
```
|
||||
|
||||
При необходимости, функции BIOSа могут быть вызваны программой,
|
||||
находящейся в ОЗУ непосредственно в нулевом окне Z80. Для этого надо
|
||||
установить в адресе 0008h следующий код:
|
||||
|
||||
```asm
|
||||
ADDRESS_0008h:
|
||||
PUSH AF
|
||||
LD A,0
|
||||
OUT (7Ch),A
|
||||
POP AF
|
||||
RET
|
||||
```
|
||||
|
||||
После этого BIOS можно вызывать командой RST 8. (Функции TR-DOS, так
|
||||
же как и в случае RST 18 остаются недоступны.) Вызывая программы таким
|
||||
образом, через RST 8, следует помнить что адреса 3FFFh..0000h после
|
||||
входа в BIOS будут содержать код ПЗУ, поэтому, если фунция использует
|
||||
данные в ОЗУ, они должны находиться в других адресах.
|
||||
|
||||
Оптимизация программы для RST 8 недопустима, так как в ПЗУ, для
|
||||
обратного переключения, стоит такая же программа, только порт 3Ch для
|
||||
отключения ПЗУ BIOSа.
|
||||
|
||||
Вызов функций BIOS в exe-файлах, вызываемых с помощью операционной
|
||||
системы Estex, производится командой RST 8. Необходимая программа в
|
||||
адресе 0008h уже имеется в блоке кода ОС Estex.
|
||||
|
||||
### Функции работы с памятью
|
||||
|
||||
|
||||
**0C0h (192) EMM_FN0 Определение объемов ОЗУ**
|
||||
|
||||
Значение регистров на входе:
|
||||
C=0C0h
|
||||
Значение регистров на выходе:
|
||||
HL - общий объем ОЗУ в страницах по 16k
|
||||
BC - объем свободного ОЗУ в страницах по 16k
|
||||
|
||||
**0C1h (193) EMM_FN1 Инициализация распределения памяти**
|
||||
Стирается вся информация о выделенных ранее блоках ОЗУ.
|
||||
Блоки с системной информацией и первые 256K ОЗУ объявляются занятыми.
|
||||
|
||||
Значение регистров на входе:
|
||||
C=0C1h
|
||||
Значение регистров на выходе:
|
||||
нет
|
||||
|
||||
**0C2h (194) EMM_FN2 Выделение блока ОЗУ**
|
||||
|
||||
Значение регистров на входе:
|
||||
C=0C2h
|
||||
B - число запрашиваемых страниц
|
||||
Значение регистров на выходе:
|
||||
CF=0 - нормальное завершение - A - идентификатор блока
|
||||
CF=1 - ошибка - A=1 - не хватает памяти
|
||||
|
||||
**0C3h (195) EMM_FN3 Освободить блок ОЗУ**
|
||||
|
||||
Значение регистров на входе:
|
||||
C=0C3h
|
||||
A - идентификатор блока
|
||||
Значение регистров на выходе:
|
||||
CF=0 - нормальное завершение
|
||||
CF=1 - неправильный идентификатор
|
||||
идентификатор не всегда отслеживается правильно
|
||||
|
||||
|
||||
**0C4h (196) EMM_FN4 Получить физический номер страницы из блока памяти**
|
||||
|
||||
Значение регистров на входе:
|
||||
C=0C4h
|
||||
A - идентификатор блока
|
||||
B - логическая номер страницы в блоке
|
||||
Значение регистров на выходе:
|
||||
CF=0 - A - логический номер страницы
|
||||
CF=1 - ошибка:
|
||||
A=0 - блок не существует
|
||||
A=255 - запрашиваемый номер страницы слишком велик
|
||||
|
||||
**0C5h (197) EMM_FN5 Получить список физических страниц блока**
|
||||
|
||||
Значение регистров на входе:
|
||||
C=0C5h
|
||||
A - идентификатор блока
|
||||
HL - буфер 256 байт для размещения списка страниц
|
||||
Значение регистров на выходе:
|
||||
CF=0 - нормальное завершение:
|
||||
B - число страниц в блоке
|
||||
HL - тот же адрес буфера, в буфере список физических
|
||||
страниц по порядку, заканчивающийся байтом 0FFh
|
||||
CF=1 - неверный идентификатор блока; старая информация в буфере
|
||||
может быть затерта
|
||||
|
||||
**0C6h (198) EMM_FN6 Получение адресов портов окон**
|
||||
|
||||
Примечание по использованию функции получения адресов портов окон (0C6h):
|
||||
>Cледует хотя бы один раз вызвать эти функции и сравнить адреса
|
||||
>портов с теми, что используются в программе и, если они не совпадают,
|
||||
>выдать соответствующее предупреждение. В данный момент эти порты
|
||||
>таковы: PAGE0=82h, PAGE1=0A2h, PAGE2=0C2h, PAGE3=0E2h
|
||||
|
||||
Значение регистров на входе:
|
||||
C=0C6h
|
||||
A - номер окна процессора - 0,1,2 или 3
|
||||
Значение регистров на выходе:
|
||||
CF=0 - нормальное завершение
|
||||
C - 8-битный адрес порта окна
|
||||
B - физический номер подключенной в окно страницы
|
||||
CF=1 - ошибка - неверный номер окна
|
||||
|
||||
**0C7h (199) EMM_FN7 Получить номер следующей страницы блока**
|
||||
|
||||
Примечание по использованию функции EMM_FN7 (0C7h):
|
||||
> Информация о распределении памяти хранится в виде RAM Allocation Table,
|
||||
> похожей на дисковый FAT. Поэтому нахождение физического номера
|
||||
> следующей страницы по предыдущему физическому номеру происходит
|
||||
> значительно быстрее, чем поиск по увеличенному на единицу логическому
|
||||
> номеру.
|
||||
|
||||
Значение регистров на входе:
|
||||
C=0C7h
|
||||
A - физическая страница
|
||||
Значение регистров на выходе:
|
||||
CF=0 - нормальное завершение
|
||||
A - следуюшая физическая страница блока
|
||||
A=0FFh - индицирует конец блока
|
||||
CF=1 - ошибка - страница не принадлежит никакому блоку.
|
||||
фактически, это означает, что она свободна.
|
||||
|
||||
**09Eh (158) EMM_FN8 Слияние блоков**
|
||||
|
||||
Значение регистров на входе:
|
||||
A - идентификатор блока 1
|
||||
B - идентификатор блока 2
|
||||
Значение регистров на выходе:
|
||||
CF=0 - нормальное завершение
|
||||
A - идентификатор объединенного блока
|
||||
CF=1 - ошибка - неверный идентификатор блока
|
||||
|
||||
**09Dh (157) EMM_FN9 Разделение блока**
|
||||
|
||||
Значение регистров на входе:
|
||||
C=09Dh
|
||||
A - идентификатор блока
|
||||
B - новая длина блока
|
||||
Значение регистров на выходе:
|
||||
CF=0 - нормальное завершение
|
||||
A - идентификатор блока результата
|
||||
B - идентификатор блока остатка
|
||||
CF=1 - ошибка - неверный идентификатор блока
|
||||
|
||||
### Функции управления 'железом'
|
||||
|
||||
**0EFh (239) FN_VERSION Выдача информации о версии BIOSа и железа.**
|
||||
|
||||
Значение регистров на входе:
|
||||
C=0EFh
|
||||
HL - буфер, куда будет помещена ASCII строка с несколькими
|
||||
полями, номером версии BIOS и названием модели
|
||||
компьютера. Конец строки отмечен двойным нулем.
|
||||
Значение регистров на выходе:
|
||||
CF=0 - нормальное завершение
|
||||
HL - тот же буфер с записанной строкой.
|
||||
DE - версия BIOSа
|
||||
BC - версия железа подробности ниже
|
||||
A - количество полей в буфере (в данный момент - 2)
|
||||
Первое поле - версия BIOS.
|
||||
Второе - название модели компьютера.
|
||||
CF=1 - ошибка - Очень старая версия,
|
||||
не имеющая данной функции
|
||||
|
||||
**0F2h (242) FN_SICF=0 Установка синхронизации, очистка страницы режима экрана**
|
||||
|
||||
Значение регистров на входе:
|
||||
C=0F2h
|
||||
A - режим синхронизации
|
||||
Значение регистров на выходе:
|
||||
CF=0 - нормальное завершение
|
||||
CF=1 - неверный номер режима синхронизации
|
||||
|
||||
### Функции работы с CMOS данными и Turbo режимом
|
||||
|
||||
Комментарий к функциям CMOS (0F5h-0F7h):
|
||||
> Функции CMOS_RD, CMOS_WR, CMOS_TEST работают всегда. Если в машине нет
|
||||
> микросхемы CMOS, то эмулируется ее память. Наличие микросхемы
|
||||
> определяется функцией CMOS_TEST.
|
||||
|
||||
**0F5h (245) CMOS_TEST Проверить наличие CMOS**
|
||||
|
||||
Значение регистров на входе:
|
||||
C=0F5h
|
||||
Значение регистров на выходе:
|
||||
CF=0 - часы есть
|
||||
CF=1 - часов нет
|
||||
|
||||
**0F6h (246) CMOS_RD Читать из регистра CMOS**
|
||||
|
||||
Значение регистров на входе:
|
||||
C=0F6h
|
||||
D - номер регистра CMOS
|
||||
Значение регистров на выходе:
|
||||
A - считанные данные
|
||||
CF=0 - часы есть
|
||||
CF=1 - часов нет
|
||||
|
||||
**0F7h (247) CMOS_WR Писать в регистр CMOS**
|
||||
|
||||
Значение регистров на входе:
|
||||
C=0F7h
|
||||
D - номер регистра CMOS
|
||||
A - записываемые данные
|
||||
Значение регистров на выходе:
|
||||
CF=0 - часы есть
|
||||
CF=1 - часов нет
|
||||
|
||||
**08Fh (143) FN_TURBO Функция управления турбо режимом.**
|
||||
|
||||
Комментарий к функции FN_TURBO (08Fh):
|
||||
Переключение режима турбо может не произойти, если прошивка не
|
||||
поддерживает это переключение. При этом ошибки не происходит. Так
|
||||
же, переключение режима TURBO блокируется кнопкой "Turbo" в
|
||||
режиме Turbo-OFF
|
||||
Значение регистров на входе:
|
||||
C=08Fh
|
||||
A - режим турбо: 2 - off, 3 - on
|
||||
A - режим FDD: 12h - 720Kb, 13h - 1.44Mb
|
||||
Значение регистров на выходе:
|
||||
CF=0 - нормальное завершение
|
||||
CF=1 - неверный режим турбо
|
||||
|
||||
### Функции управления окнами и режимами экрана
|
||||
|
||||
**0B0h (176) WIN_OPEN Функция открытия окна.**
|
||||
|
||||
Значение регистров на входе:
|
||||
C=0B0h
|
||||
IX - описатель окна
|
||||
E - флаги окна:
|
||||
бит 0 указывает какую страницу режима включать после
|
||||
исполнения функции;
|
||||
бит 4 указывает на какой странице режима открывать окно
|
||||
Значение регистров на выходе:
|
||||
CF=0 - нормальное завершение:
|
||||
A - идентификатор окна
|
||||
CF=1 - ошибка слишком много окон
|
||||
|
||||
**0B1h (177) WIN_CLOSE закрытие окна**
|
||||
|
||||
Значение регистров на входе:
|
||||
C=0B1h
|
||||
A - идентификатор окна
|
||||
Значение регистров на выходе:
|
||||
CF=0 - успешное завершение
|
||||
CF=1 - ошибка - неверный идентификатор
|
||||
Окно с номером 0 никогда не закрывается и попытка
|
||||
закрытия приводит к ошибке
|
||||
|
||||
**0B2h (178) WIN_COPY_WIN Копирование данных текстового окна в память (запоминание окна)**
|
||||
|
||||
При работе этой функции через RST 18h или RST 8, обязателен запрет
|
||||
прерываний, так как функция пользуется стеком для ускорения своей работы.
|
||||
|
||||
Значение регистров на входе:
|
||||
C=0B2h
|
||||
A - идентификатор глобального окна
|
||||
H - размер окна в символах по вертикали
|
||||
L - размер окна в символах по горизонтали
|
||||
D - вертикальное положение окна в глобальном окне
|
||||
E - горизонтальное положение окна в глобальном окне
|
||||
IX - адрес буфера для запоминания данных
|
||||
адрес буфера указывается для окна 0C000h если адрес
|
||||
указан с 8000h, номер страницы буфера не действителен
|
||||
ниже 8000h адрес указывать нельзя
|
||||
A' - страница буфера для данных окна эта страница должна
|
||||
принадлежать программе
|
||||
Значение регистров на выходе:
|
||||
CF=0 - нормальное завершение
|
||||
CF=1 - ошибка - неверный идентификатор окна
|
||||
|
||||
**0B3h (179) WIN_RESTORE_WIN Копирование из памяти в текстовое окно (восстановление окна)**
|
||||
|
||||
При работе этой функции через RST 18h или RST 8, обязателен запрет
|
||||
прерываний, так как функция пользуется стеком для ускорения своей работы.
|
||||
|
||||
Значение регистров на входе:
|
||||
C=0B2h
|
||||
A - идентификатор глобального окна
|
||||
H - размер окна в символах по вертикали
|
||||
L - размер окна в символах по горизонтали
|
||||
D - вертикальное положение окна в глобальном окне
|
||||
E - горизонтальное положение окна в глобальном окне
|
||||
IX - адрес буфера для запоминания данных
|
||||
адрес буфера указывается для окна 0C000h если адрес
|
||||
указан с 8000h, номер страницы буфера не действителен
|
||||
ниже 8000h адрес указывать нельзя
|
||||
A' - страница буфера для данных окна эта страница должна
|
||||
принадлежать программе
|
||||
Значение регистров на выходе:
|
||||
CF=0 - нормальное завершение
|
||||
CF=1 - ошибка - неверный идентификатор окна
|
||||
|
||||
**0B4h (180) WIN_GET_SYM Взять символ с экрана**
|
||||
|
||||
Значение регистров на входе:
|
||||
C=0B4h
|
||||
A - идентификатор окна
|
||||
DE - положение символа в окне:
|
||||
D - вертикаль, E - горизонталь
|
||||
Значение регистров на выходе:
|
||||
CF=0 - нормальное завершение
|
||||
L - символ, H - атрибут,
|
||||
B - знакогенератор
|
||||
CF=1 - ошибка неверный идентификатор окна
|
||||
|
||||
**0B5h (181) WIN_PUT_SYM Положить символ на экран**
|
||||
|
||||
Значение регистров на входе:
|
||||
C=0B5h
|
||||
A - идентификатор окна
|
||||
DE - положение символа в окне:
|
||||
D - вертикаль, E - горизонталь
|
||||
L - символ, H - атрибут символа
|
||||
B - знакогенератор
|
||||
Значение регистров на выходе:
|
||||
CF=0 - нормальное завершение
|
||||
CF=1 - ошибка неверный идентификатор окна
|
||||
|
||||
**0B6h (182) WIN_SET_ZG установка знакогенератора**
|
||||
|
||||
Значение регистров на входе:
|
||||
C=0B6h
|
||||
A - системный номер знакогенератора
|
||||
DE - указатель на 2Kb блок данных знакогенератора
|
||||
Значение регистров на выходе:
|
||||
CF=0 - нормальное завершение
|
||||
CF=1 - ошибка (старая версия, нет функции)
|
||||
|
||||
**0B7h (183) WIN_MOVE_WIN Перемещение окна**
|
||||
|
||||
При работе этой функции через RST 18h или RST 8, обязателен запрет
|
||||
прерываний, так как функция пользуется стеком для ускорения своей работы.
|
||||
|
||||
Значение регистров на входе:
|
||||
C=0B7h
|
||||
A - идентификатор глобального окна
|
||||
H - размер локального окна по вертикали в символах
|
||||
L - размер локального окна по горизонтали в символах
|
||||
D - положение локального окна по вертикали в символах
|
||||
E - положение локального окна по горизонтали в символах
|
||||
IX - новое положение локального окна (подобно DE)
|
||||
Значение регистров на выходе:
|
||||
CF=0 - нормальное завершение
|
||||
CF=1 - ошибка - неверный идентификатор окна
|
||||
|
||||
**0B8h (184) WIN_GET_ZG Получение знакогенератора**
|
||||
|
||||
Значение регистров на входе:
|
||||
C=0B8h
|
||||
DE - адрес, куда будет загружено 2kb знакогенератора
|
||||
Значение регистров на выходе:
|
||||
CF=0 - нормальное завершение
|
||||
CF=1 - ошибка (старая версия, нет функции)
|
||||
|
||||
### Функции вывода текста на экран
|
||||
|
||||
**081h (129) LP_PRINT_ALL Печать символов с атрибутом**
|
||||
|
||||
На экран выводится строка из B одинаковых символов
|
||||
|
||||
Значение регистров на входе:
|
||||
C=081h
|
||||
A - символ
|
||||
E - атрибут
|
||||
B - число выводимых символов
|
||||
регистры HL,IX - сохраняются
|
||||
Значение регистров на выходе:
|
||||
CF=0 - всегда
|
||||
|
||||
**082h (131) LP_PRINT_SYM Вывод символов на экран без атрибута**
|
||||
|
||||
На экран выводится строка из B одинаковых символов атрибут
|
||||
остается тот, который был на экране
|
||||
|
||||
Значение регистров на входе:
|
||||
C=082h
|
||||
A - символ
|
||||
B - число выводимых символов
|
||||
регистры HL,IX - сохраняются
|
||||
Значение регистров на выходе:
|
||||
CF=0 - всегда
|
||||
|
||||
**083h (131) LP_PRINT_ATR печать атрибутов**
|
||||
|
||||
На экран выводится строка из B одинаковых атрибутов.
|
||||
Символы не меняются.
|
||||
|
||||
Значение регистров на входе:
|
||||
C=083h
|
||||
E - атрибут
|
||||
B - число выводимых символов
|
||||
регистры HL,IX - сохраняются
|
||||
Значение регистров на выходе:
|
||||
CF=0 - всегда
|
||||
|
||||
**084h (132) LP_SET_PLACE Установка текущего знакоместа в окне**
|
||||
|
||||
Позиция печати устанавливается в соответстии с регистром DE
|
||||
|
||||
Значение регистров на входе:
|
||||
C=084h
|
||||
E - положение символа по горизонтали
|
||||
D - номер символа по вертикали
|
||||
Превышение границ приводит не к ошибке, а к переустановке
|
||||
с начала, за вычетом полного размера окна
|
||||
Значение регистров на выходе:
|
||||
CF=0 - всегда
|
||||
|
||||
**085h (133) LP_PRINT_LN Вывод строки символов на экран с текущего знакоместа**
|
||||
|
||||
Значение регистров на входе:
|
||||
C=085h
|
||||
HL - адрес строки должен быть между 04000h и 0BFFFh
|
||||
E - атрибут, с которым будет выведена строка
|
||||
B - длина выводимой строки
|
||||
Значение регистров на выходе:
|
||||
CF=0 - всегда
|
||||
|
||||
**086h (134) LP_PRINT_LN2 Вывод строки символов на экран без атрибутов**
|
||||
|
||||
Значение регистров на входе:
|
||||
C=086h
|
||||
HL - адрес строки должен быть между 04000h и 0BFFFh
|
||||
B - длина выводимой строки
|
||||
Значение регистров на выходе:
|
||||
CF=0 - всегда
|
||||
|
||||
**087h (135) LP_PRINT_LN3 Вывод строки символов до разделителя**
|
||||
|
||||
После разделителя выводятся пробелы, что бы вывести B символов
|
||||
|
||||
Значение регистров на входе:
|
||||
C=087h
|
||||
HL - адрес строки должен быть между 04000h и 0BFFFh
|
||||
E - атрибут, с которым будет выведена строка
|
||||
B - длина выводимой строки
|
||||
D - символ-разделитель, указывающий конец строки
|
||||
Значение регистров на выходе:
|
||||
CF=0 - всегда
|
||||
|
||||
**088h (136) LP_PRINT_LN4 Вывод строки символов до разделителя, без атрибутов**
|
||||
|
||||
символы из выводятся на экран, пока не встретится символ равный D,
|
||||
далее печатаются пробелы, как дополнение строки до B символов.
|
||||
Атрибуты не изменяются.
|
||||
|
||||
Значение регистров на входе:
|
||||
C=088h
|
||||
HL - адрес строки должен быть между 04000h и 0BFFFh
|
||||
B - длина выводимой строки
|
||||
D - символ-разделитель, указывающий конец строки
|
||||
Значение регистров на выходе:
|
||||
CF=0 - всегда
|
||||
|
||||
**089h (137) LP_CLS_WIN Очистка экрана**
|
||||
|
||||
Выполнение производится выводом пробелов с заданным атрибутом
|
||||
|
||||
Значение регистров на входе:
|
||||
C=089h
|
||||
DE - положение локального окна
|
||||
H - размер в символах локального окна по вертикали
|
||||
L - размер в символах локального окна по горизонтали
|
||||
B - атрибут очистки
|
||||
Значение регистров на выходе:
|
||||
CF=0 - всегда
|
||||
|
||||
**08Ah (138) LP_SCROLL_UD Скроллинг части глобального окна вверх/вниз**
|
||||
|
||||
Скроллируются полные строки глобального окна
|
||||
|
||||
Значение регистров на входе:
|
||||
C=08Ah
|
||||
B - тип скроллинга: 1 - вверх; 2 - вниз
|
||||
D - начальная строка скроллинга
|
||||
E - число скроллируемых строк
|
||||
Значение регистров на выходе:
|
||||
CF=0 - всегда
|
||||
|
||||
**08Bh (139) LP_PRINT_LN5 Вывод строки символов на экран до разделителя**
|
||||
|
||||
После разделителя вывод останавливается
|
||||
|
||||
Значение регистров на входе:
|
||||
HL - адрес строки должен быть между 04000h и 0BFFFh
|
||||
E - атрибут, с которым будет выведена строка
|
||||
B - максимальная длина выводимой строки
|
||||
D - символ-разделитель, указывающий конец строки
|
||||
Значение регистров на выходе:
|
||||
CF=0 - всегда
|
||||
|
||||
**08Ch (140) LP_PRINT_LN6 Вывод строки символов на экран до разделителя без атрибутов**
|
||||
|
||||
После разделителя вывод останавливается.
|
||||
|
||||
Значение регистров на входе:
|
||||
C=08Ch
|
||||
HL - адрес строки должен быть между 04000h и 0BFFFh
|
||||
B - максимальная длина выводимой строки
|
||||
D - символ-разделитель, указывающий конец строки
|
||||
Значение регистров на выходе:
|
||||
CF=0 - всегда
|
||||
|
||||
**08Dh (141) LP_CLS_WIN2 Очистка экрана с указанием символа заполнения**
|
||||
|
||||
Значение регистров на входе:
|
||||
C=08Dh
|
||||
DE - положение локального окна
|
||||
H - размер в символах локального окна по вертикали
|
||||
L - размер в символах локального окна по горизонтали
|
||||
B - атрибут очистки
|
||||
A - символ очистки
|
||||
Значение регистров на выходе:
|
||||
CF=0 - всегда
|
||||
|
||||
**08Eh (142) LP_GET_PLACE Получить текущее положение вывода на экран**
|
||||
|
||||
Значение регистров на входе:
|
||||
C=08Eh
|
||||
Значение регистров на выходе:
|
||||
CF=0 - всегда
|
||||
DE - координаты, в которых будет напечатан
|
||||
следующий символ:
|
||||
D - вертикаль, E - горизонталь
|
||||
|
||||
### Графические функции
|
||||
|
||||
**0A1h (161) PIC_POINT Установить точку**
|
||||
|
||||
Значение регистров на входе:
|
||||
C=0A1h
|
||||
DE - координата по вертикали (пиксели)
|
||||
HL - координата по горизонтали (пиксели)
|
||||
Координаты считаются от верхнего левого угла экрана
|
||||
A - идентификатор окна
|
||||
B - цвет точки
|
||||
Значение регистров на выходе:
|
||||
CF=0 - нормальное завершение
|
||||
CF=1 - неверный идентификатор окна
|
||||
|
||||
**0A4h (164) PIC_SET_PAL Установка палитры**
|
||||
|
||||
Значение регистров на входе:
|
||||
C=0A4h
|
||||
HL - данные палитры
|
||||
E - номер начального цвета
|
||||
D - количество устанавливаемых цветов
|
||||
B - маска при установке палитры.
|
||||
Для нормального режима должнa быть 0FFh
|
||||
A -
|
||||
0..3 биты - значения 0..7 - номер палитры
|
||||
- значения 8..15 - зарезервированы
|
||||
4..6 биты - зарезервированы (установить в 0)
|
||||
7 бит -
|
||||
- значение 0 - установить
|
||||
- значение 1 - загрузить палитру в память
|
||||
Значение регистров на выходе:
|
||||
CF=0 - всегда
|
||||
|
||||
**0A6h (166) SET_PAL_INIT Установка внутренней палитры**
|
||||
|
||||
Значение регистров на входе:
|
||||
C=0A6h
|
||||
A - страница палитры
|
||||
B - номер палитры:
|
||||
B=3 - установка текстовой палитры CGA
|
||||
B=2 - установка спектрумовской палитры
|
||||
B=1 - установка графической плаитры
|
||||
Значение регистров на выходе:
|
||||
CF=0 - нормальное завершение
|
||||
CF=1 - неверный номер палитры
|
||||
|
||||
### Функции работы с жесткими дисками и дисководами
|
||||
|
||||
**50h,52h,53h (80,82,83) Зарезервированы**
|
||||
|
||||
Значение регистров на входе и на выходе:
|
||||
нет
|
||||
|
||||
**51h (81) DRV_RESET Сброс контроллера и настройка на диск**
|
||||
|
||||
Значение регистров на входе:
|
||||
C=51h
|
||||
A - номер и тип устройства
|
||||
бит 7..4 - тип устройства:
|
||||
#0x - FDD
|
||||
#6x - RAM-DISK
|
||||
#8x - HDD
|
||||
#Cx - CD-ROM
|
||||
бит 3..0 - номер устройства
|
||||
Значение регистров на выходе:
|
||||
CF=0 - нормальное завершение
|
||||
CF=1 - ошибка, нет диска или нет устройства
|
||||
|
||||
**54h (84) DRV_VERIFY Проверка секторов**
|
||||
|
||||
Проверка внутренняя на совпадение ECC
|
||||
|
||||
Значение регистров на входе:
|
||||
C=54h
|
||||
A - номер и тип устройства (см. выше)
|
||||
HL:IX - номер сектора (IX - младшая часть номера сектора)
|
||||
B - количество проверяемых секторов
|
||||
Значение регистров на выходе:
|
||||
CF=0 - нормальное завершение
|
||||
CF=1 - проверка с ошибкой
|
||||
|
||||
**55h (85) DRV_READ Чтение с устройства**
|
||||
|
||||
Значение регистров на входе:
|
||||
C=55h
|
||||
A - номер и тип устройства (см. выше)
|
||||
HL:IX - номер сектора (IX - младшая часть номера сектора)
|
||||
B - количество секторов
|
||||
DE - адрес буфера для данных
|
||||
Значение регистров на выходе:
|
||||
CF=0 - нормальное завершение
|
||||
CF=1 - ошибка чтения
|
||||
HL:IX - номер сектора + кол-во прочитанных секторов
|
||||
DE - адрес буфера для данных + (кол-во прочитанных секторов * размер сектора)
|
||||
|
||||
**56h (86) DRV_WRITE Запись на устройства**
|
||||
|
||||
Значение регистров на входе:
|
||||
C=56h
|
||||
A - номер и тип устройства (см. выше)
|
||||
HL:IX - номер сектора (IX - младшая часть номера сектора)
|
||||
B - количество секторов
|
||||
DE - адрес буфера данных для записи
|
||||
Значение регистров на выходе:
|
||||
CF=0 - нормальное завершение
|
||||
CF=1 - ошибка записи
|
||||
HL:IX - номер сектора + кол-во прочитанных секторов
|
||||
DE - адрес буфера для данных + (кол-во прочитанных секторов * размер сектора)
|
||||
|
||||
**57h (87) DRV_DETECT Определение параметров устройства**
|
||||
|
||||
Значение регистров на входе:
|
||||
C=57h
|
||||
A - номер и тип устройства (см. выше)
|
||||
Значение регистров на выходе:
|
||||
CF=0 - нормальное завершение
|
||||
A - bit7=0 диск 720Кb
|
||||
bit7=1 диск 1.44Mb
|
||||
CF=1 - нет устройства или нет носителя
|
||||
|
||||
**58h (88) DRV_GET_PAR Получить параметры носителя**
|
||||
|
||||
Значение регистров на входе:
|
||||
C=58h
|
||||
A - номер и тип устройства (см. выше)
|
||||
Значение регистров на выходе:
|
||||
CF=0 - нормальное завершение
|
||||
L - число секторов
|
||||
H - число головок
|
||||
DE - количество цилиндров
|
||||
если HL=DE=0FFFFh - устройства нет
|
||||
IX - размер сектора в байтах
|
||||
B - доп. параметры для дискет:
|
||||
бит7 - тип 1.44Mb/720Kb
|
||||
CF=1 - нет устройства
|
||||
|
||||
**59h (89) DRV_SET_PAR Установить параметры носителя**
|
||||
|
||||
Значение регистров на входе:
|
||||
A - номер и тип устройства (см. выше)
|
||||
L - число секторов
|
||||
H - число головок
|
||||
DE - количество цилиндров
|
||||
IX - размер сектора в байтах
|
||||
B - доп. параметры для дискет
|
||||
бит7 - тип 1.44Mb/720Kb
|
||||
Значение регистров на выходе:
|
||||
CF=0 - нормальное завершение
|
||||
|
||||
**5Ah (90) EXT_VERSION Номер версии дисковой спецификации.**
|
||||
|
||||
Значение регистров на входе:
|
||||
C=5Ah
|
||||
Значение регистров на выходе:
|
||||
CF=0 - нормальное завершение
|
||||
D - версия
|
||||
E - модификация
|
||||
CF=1 - ошибка
|
||||
|
||||
**5Fh (95) DRV_LIST Список дисковых устройств**
|
||||
|
||||
Значение регистров на входе:
|
||||
C=5Fh
|
||||
IX - буфер для списка устройств
|
||||
Значение регистров на выходе:
|
||||
CF=0 - нормальное завершение
|
||||
|
||||
В буфере список дисков в формате:
|
||||
|
||||
IX+0 - размер заполненого буфера
|
||||
IX+1 - кол-во устройств FDD
|
||||
IX+2 - кол-во устройств HDD
|
||||
IX+3 - кол-во устройств CD DRIVE
|
||||
IX+4 - #00 - конец списка, иначе кол-во устройств нового типа
|
||||
|
||||
|
||||
### Примечания и комментарии.
|
||||
|
||||
##### *Примечание по использованию функции получения адресов портов окон (0C6h).*
|
||||
Cледует хотя бы один раз вызвать эти функции и сравнить адреса портов с
|
||||
теми, что используются в программе и, если они не совпадают, выдать
|
||||
соответствующее предупреждение. В данный момент эти порты таковы:
|
||||
PAGE0=82h, PAGE1=0A2h, PAGE2=0C2h, PAGE3=0E2h
|
||||
|
||||
##### *Примечание по использованию функции EMM_FN7 (0C7h).*
|
||||
Информация о распределении памяти хранится в виде RAM Allocation Table,
|
||||
похожей на дисковый FAT. Поэтому нахождение физического номера следующей
|
||||
страницы по предыдущему физическому номеру происходит значительно быстрее,
|
||||
чем поиск по увеличенному на единицу логическому номеру.
|
||||
|
||||
##### *Комментарий к функции FN_VERSION (0EFh).*
|
||||
Значения регистра BC на выходе и соответствующая ему конфигурация
|
||||
BC=FFFF - Не определено
|
||||
BC=FFFE - Конфигурация Spectrum, режим Sprinter ZX
|
||||
BC=FFFD - Конфигурация Sprinter
|
||||
BC=FFFC - Зарезервировано
|
||||
BC=FFFB - Зарезервировано
|
||||
BC=FFFA - Зарезервировано
|
||||
BC=FFF9 - Зарезервировано
|
||||
Иные значения BC - новые прошивки.
|
||||
|
||||
##### *Комментарий к функциям CMOS (0F5h-0F7h)*
|
||||
Функции CMOS_RD, CMOS_WR, CMOS_TEST работают всегда. Если в машине нет
|
||||
микросхемы CMOS, то эмулируется ее память. Наличие микросхемы
|
||||
определяется функцией CMOS_TEST.
|
||||
|
||||
##### *Комментарий к функции FN_TURBO (08Fh)*
|
||||
Переключение режима турбо может не произойти, если прошивка не
|
||||
поддерживает это переключение. При этом ошибки не происходит. Так же,
|
||||
переключение режима TURBO блокируется кнопкой "Turbo" в режиме Turbo-OFF
|
||||
|
||||
##### *Комментарий к функциям печати текста.*
|
||||
Эти функции работают с текущим окном, которым всегда является последнее
|
||||
открытое окно. К графическому экрану функции печати текста не применимы.
|
||||
|
||||
##### *Описатель окна.*
|
||||
Для открытия окон используется 32-хбайтовый описатель окна (дескриптор),
|
||||
адрес которого указывается в регистре IX.
|
||||
|
||||
IX - 32-хбайтовый описатель окна
|
||||
(IX+0) - горизонтальный размер окна в знакоместах
|
||||
(IX+1) - вертикальный размер в знакоместах
|
||||
(IX+2) - положение окна по горизонтали на экране в знакоместах
|
||||
(IX+3) - положение окна по вертикали на экране в знакоместах
|
||||
(IX+4) - режим знакоместа
|
||||
bit4=1 - text_mode bit4=0 - graf_mode
|
||||
bit5=0 - 16, bit5=1 - 8 точек в знакоместе
|
||||
graf_mode bit3..0 - не существенны
|
||||
bit7..6 - номер палитры
|
||||
text_mode bit7..6,3..0 - номер знакогенератора
|
||||
исключение: bit7..6=B"11" - бордер
|
||||
(IX+5) - дополнительный режим знакоместа
|
||||
bit0=1 - указывает на включение спектрумовской
|
||||
адресации экрана
|
||||
(IX+6) - положение по X в поле графики (по знакоместам)
|
||||
(IX+7) - положение по Y в поле графики (по знакоместам)
|
||||
разъяснения о положении в поле графики - ниже
|
||||
(IX+8..31) - зарезервировано (переменные окна)
|
||||
в этих байтах должны быть нули
|
||||
|
||||
При открытии окна описатель копируется в системную страницу ОЗУ и
|
||||
программа может не сохранять его. Что бы описатель окна не потерялся,
|
||||
программа получает идентификатор окна. Он же идентификатор глобального
|
||||
окна. В функциях запоминания, восстановления, перемещения, а так же
|
||||
функциях стирания, скроллинга и т.п. идентификатор окна определяет
|
||||
область экрана, относительно которой производится работа с локальными
|
||||
окнами. Подразумеваются локальные окна в смысле "окно в окне".
|
||||
Идентификатор окна определяет глобальное окно, отнoсительно которого
|
||||
адресуются локальные. В части функций глобальное окно определяется по
|
||||
умолчанию, как последнее, с которым производились действия с явным
|
||||
указанием идентификатора.
|
||||
|
||||
В данный момент BIOS хранит только один описатель окна - последний,
|
||||
с которым была произведена функция открытия. Идентификатор окна
|
||||
выставляется в 0. В дальнейшем планитруется разработка функций со
|
||||
множеством окон, потому, во избежание неприятностей в будущем, при
|
||||
работе с окнами, программисту следует запоминать идентификатор окна
|
||||
и пользоваться этим значением при работе с ним.
|
||||
|
||||
Типы стандартных окон:
|
||||
0 - окно 32x24 в формате ZX Spectrum
|
||||
1 - текстовое окно 64x24
|
||||
2 - текстовое окно 40x32
|
||||
3 - текстовое окно 80x32
|
||||
4 - окно в формате ZX Spectrum, HL - положение окна на экране в знакоместах
|
||||
5 - текстовое окно 64x24, HL - положение окна на экране в знакоместах
|
||||
6 - текстовое окно 40x32, HL - положение окна на экране в знакоместах
|
||||
7 - текстовое окно 80x32, HL - положение окна на экране в знакоместах
|
||||
8 - графическое окно 0, HL - положение окна на экране
|
||||
9 - графическое окно 1, HL - положение окна на экране
|
||||
|
||||
Данные палитры должны представлять собой список приблизительно такого вида:
|
||||
|
||||
DB blue1,green1,red1,0
|
||||
DB blue2,green2,red2,0
|
||||
.....................
|
||||
DB blueN,greenN,redN,0
|
||||
|
||||
N - количество цветов. Значеное равное 0 соответствует 256-ти цветам.
|
||||
При записи в видео-ОЗУ все данные предварительно проходят функцию AND
|
||||
со значением регистра маски - B.
|
||||
|
||||
Страницы палитры 0..3 соответствуют графическим режимам. Для вывода в
|
||||
соответствующей палитре нужно задать соответствующее значение bit7..6 в
|
||||
байте режима знакоместа
|
||||
|
||||
Страницы 4..7 соответствуют текстовому режиму и спектрумовскому режиму.
|
||||
В странице 4 задается цвет PAPER для каждого атрибута. В странице 5
|
||||
задается цвет INK для каждого атрибута. В странице 6 задается цвет PAPER,
|
||||
которым он будет моргать в режиме FLASH В странице 7 задается цвет INK,
|
||||
которым он будет моргать в режиме FLASH. Таким образом, для каждого из
|
||||
256-ти атрибутов задается четыре цвета если цвета 4,5 совпадают с
|
||||
цветами 6,7 то режим FLASH оказывается отключенным. Для его включения
|
||||
в спектрумовском режиме надо поменять местами цвета 6 и 7. Если надо
|
||||
включить FLASH в режим IBM-CGA, следует установить цвета 6 и 7
|
||||
одинаковыми и равными цвету 4. По сути режим FLASH всегда включен, и
|
||||
на экране постоянно меняются цвета PAPER с 4-го на 6-й, а цвета INK с
|
||||
5 на 7-й. Если эти пары цветов для атрибута знакоместа устанавливаются
|
||||
одинаковыми, то FLASH в этом месте не виден.
|
||||
|
||||
##### *Комментарий к функциям работы с устройствами хранения информации.*
|
||||
|
||||
В этих функциях в регистре A обычно задается номер и тип устройства:
|
||||
|
||||
бит 0..3 - номер устройства
|
||||
бит 4..7 - тип устройства:
|
||||
0 - дисковод
|
||||
6 - ram-disk
|
||||
8 - HDD
|
||||
C - CD-ROM
|
||||
|
||||
остальные номера не используются
|
||||
Binary file not shown.
@@ -0,0 +1,155 @@
|
||||
Estex: Disk SubSystem (DSS) Programming Guide
|
||||
|
||||
Table of Contents
|
||||
1. Introducing
|
||||
2. Identification of system functions
|
||||
3. Disk devices functions
|
||||
|
||||
|
||||
1. Introducing
|
||||
|
||||
This document contains the list of functions and concepts of
|
||||
interaction with a disk subsystem.
|
||||
DSS is a collection of very useful functions that reside in
|
||||
DSS itself, ready for use by any your programs. These functions
|
||||
are stored in library SYSTEM.DOS and allow management of files,
|
||||
memory allocation, loading and execution of the programs.
|
||||
|
||||
File specification
|
||||
|
||||
The file specification is a string, containing a names of disk,
|
||||
directories separated by a symbol "\" and name of file. The names
|
||||
of disk drive and directories can be discard.
|
||||
|
||||
for example:
|
||||
C:\TEXT\DOC\text.doc
|
||||
A:file.txt
|
||||
\TEXT\info.txt
|
||||
|
||||
The DSS used chars with colon suffix as names of disk devices
|
||||
(A:, B:, C: etc.) The name of disk can be written down before
|
||||
filename for specified disk there it placed.
|
||||
For example: command
|
||||
DIR C:DATFILE
|
||||
searches for DATFILE in the current directory of disk C:.
|
||||
When disk name not specified DSS used current disk. At start
|
||||
DSS, the current disk is a disk whence was loaded DSS.
|
||||
The filenames consist of two parts. The first part contain 8
|
||||
chars of file name. The second part is not necessary and contain
|
||||
3 chars of file type (also known as extentsion). At the writing
|
||||
of filename, both parts are separated by char point.
|
||||
For example: the names "NAME" and "NAME." is specified same file.
|
||||
In the name don't allows symbols with codes less 32 and chars
|
||||
. " / \ [ ] : | < > + = ; ,
|
||||
As the subdirectories files too, their names are formed by
|
||||
same way. The name of root directory always "\". And each
|
||||
subdirectories contain two items with names "." and "..". The
|
||||
name "." specified a current directory and name ".." specified
|
||||
name of parent(uplevel) directory.
|
||||
Some console commands and DSS functions allow to use global
|
||||
symbols ? and * which can be used for filename templates.
|
||||
The symbol ? means that any one char of filename. The
|
||||
symbol * means that it char can be replaced by any symbols.
|
||||
For example:
|
||||
*.txt - means, all files with type "txt"
|
||||
a??.* - means, files which contain three or less symbols and
|
||||
first symbol is "a"
|
||||
dc*.exe - means, files with type "exe" and began "dc"
|
||||
|
||||
File attributes
|
||||
|
||||
The each bit of byte attributes specified various attribute.
|
||||
And it can be changed by DSS function.
|
||||
|
||||
bit 0 - Read only
|
||||
bit 1 - Hidden
|
||||
bit 2 - System
|
||||
bit 3 - Volume label
|
||||
bit 4 - Directory
|
||||
bit 5 - Archive
|
||||
bit 6 - Reserved
|
||||
bit 7 - Reserved
|
||||
|
||||
Attribute "read only". When value is 1, file can be read,
|
||||
but can't be written or deleted.
|
||||
Attribute "hidden". When value is 1, DSS can't manipulate
|
||||
with this file.
|
||||
Attribute "system". Specified system file.
|
||||
Attribute "volume label". In old version of MSDOS used for
|
||||
specified volume laben, now it can be used for long filenames.
|
||||
And must be 0 for compatibles.
|
||||
Attribute "directory". When value is 1, means that this
|
||||
file is directory.
|
||||
Attribute "archive". This bite sets in 1 when DSS writing
|
||||
in this file. It can be used in backup utilities for detect
|
||||
changed files.
|
||||
|
||||
File handle
|
||||
When any file are opened, DSS build File Control Block in
|
||||
DSS working areas.
|
||||
The Handle (and assigned file) identified by number which
|
||||
returned DSS to program after file opening and used it in all
|
||||
further DSS calls. In other words, when file is opening, the
|
||||
program informs DSS his name and has taken back file handle.
|
||||
Which used in further file operations.
|
||||
All necessary information for working with file are placed
|
||||
in DSS working areas.
|
||||
|
||||
|
||||
2. Identification of system functions
|
||||
|
||||
00h (00) VERSION (Version of DSS)
|
||||
input:
|
||||
C - 00h
|
||||
output:
|
||||
D - version number
|
||||
E - modification
|
||||
The function return version number of DSS.
|
||||
|
||||
|
||||
3. Disk devices functions
|
||||
|
||||
01h (01) CHDISK (Change current disk)
|
||||
input:
|
||||
A - disk number (0-A,1-B...)
|
||||
C - 01h
|
||||
output:
|
||||
A - error code, if CF=1
|
||||
A - number of disks, if CF=0
|
||||
The function changes current disk device.
|
||||
|
||||
02h (02) CURDISK (Current disk number)
|
||||
input:
|
||||
C - 02h
|
||||
output:
|
||||
A - current disk number (0-A,1-B...)
|
||||
The function returns number of current disk device.
|
||||
|
||||
03h (03) DSKINFO (Disk information)
|
||||
input:
|
||||
A - disk number (0-A,1-B...0FFh-current)
|
||||
C - 03h
|
||||
output:
|
||||
A - error code, if CF=1
|
||||
A - sectors per cluster, if CF=0
|
||||
HL - clusters per disk
|
||||
DE - free clusters
|
||||
BC - bytes per sector
|
||||
The function returns information about disk device
|
||||
(capacity and free space).
|
||||
for example:
|
||||
LD C,03h ;Function DSKINFO
|
||||
LD A,0FFh ;Information about current disk
|
||||
RST 10h ;Execution of function
|
||||
LD A,D ;There is a free
|
||||
OR E ;space?
|
||||
JR Z,NO_SPACE ;No, the disk is completely filled
|
||||
|
||||
09h (09) BOOTDSK (Number of boot disk)
|
||||
input:
|
||||
C - 09h
|
||||
B = 0
|
||||
output:
|
||||
A - number of boot disk (0-A,1-B...)
|
||||
The function returns number of boot disk device whence was loaded DSS.
|
||||
|
||||
@@ -0,0 +1,126 @@
|
||||
Estex: Дисковая подсистема (DSS) – Обзор
|
||||
|
||||
1. Введение
|
||||
2. Загрузка подсистемы
|
||||
3. Системная консоль
|
||||
4. Файловая система
|
||||
|
||||
1. Введение
|
||||
Estex - операционная система компьютера Sprinter, включающая
|
||||
в себя различные модули. Данный документ описывает модуль дисковой
|
||||
подсистемы.
|
||||
В DSS используется та же самая файловая система, как и в
|
||||
MS-DOS FAT16 и полностью с ней совместима.
|
||||
|
||||
2. Загрузка подсистемы
|
||||
После включения питания или сброса компьютера, BIOS считывает
|
||||
первичный загрузчик с 1-го сектора загрузочного диска.
|
||||
Если загрузка происходит с HDD или дискеты, то сначала загрузочный
|
||||
сектор считывается в память и ему передается управление по загрузке
|
||||
модуля дисковой подсистемы SYSTEM.DOS.
|
||||
Затем выполняются следующие действия:
|
||||
• инициализация дисковой подсистемы и вывод сообщения "Starting DOS..."
|
||||
• загрузка системной консоли SYSTEM.EXE
|
||||
• выполнение команд указанных в файле SYSTEM.BAT
|
||||
Обычно файл SYSTEM.BAT содержит путь к программе файловой навигации
|
||||
пользователя или другому часто используемому приложения.
|
||||
Например "c:\fn\fn.exe".
|
||||
|
||||
Если во время загрузки вы хотите пропустить выполнение SYSTEM.BAT.
|
||||
То вам следует нажать клавишу "SHIFT", как только появиться
|
||||
сообщение "Starting DOS..." и удерживать пока не появится приглашение
|
||||
консоли ("C:\>").
|
||||
|
||||
3. Системная консоль
|
||||
В DSS многие задачи могут быть выполнены через интерфейс командной
|
||||
строки называемой системной консолью. Основная задача консоли ввод
|
||||
команд и их исполнение. Также она имеет ряд функций, которые выполняют
|
||||
такие действия как управление файлами, перемещение по файловой структуре
|
||||
каталогов, редактирование командной строки и переменных среды.
|
||||
Системная консоль позволяет пользователю взаимодействовать с
|
||||
операционной системой. Для DOS системная консоль это SYSTEM.EXE. Если вы
|
||||
видите на экране приглашение командной строки (A:\> или C:\>), то это
|
||||
означает что SYSTEM.EXE загружен и активизирован. Когда вы вводите
|
||||
командную строку, командный процессор интерпретирует команду и выполняет
|
||||
необходимые действия.
|
||||
На сегодняшний день в консоли доступны следующие команды:
|
||||
CD Displays the name of or changes the current directory.
|
||||
CHDIR Displays the name of or changes the current directory.
|
||||
CLS Clears the screen.
|
||||
DATE Displays or sets the date.
|
||||
DEL Deletes one or more files.
|
||||
DIR Displays a list of files and subdirectories in a directory.
|
||||
ECHO Displays messages, or turns command echoing on or off.
|
||||
ERASE Deletes one or more files.
|
||||
EXIT Quits the SYSTEM.EXE program (command interpreter).
|
||||
HELP Provides Help information for console commands.
|
||||
MD Creates a directory.
|
||||
MKDIR Creates a directory.
|
||||
PAUSE Suspends processing of a batch file and displays a message.
|
||||
RD Removes a directory.
|
||||
REM Records comments (remarks) in batch files or SYSTEM.BAT.
|
||||
REN Renames a file or files.
|
||||
RENAME Renames a file or files.
|
||||
RMDIR Removes a directory.
|
||||
TIME Displays or sets the system time.
|
||||
VER Displays the System version.
|
||||
|
||||
4. Файловая система
|
||||
Сейчас, в качестве файловой системы Estex использует FAT12 и FAT16.
|
||||
С помощью файловой системы FAT (File Allocation Table) организуются
|
||||
данные на винчестере и дискетах.
|
||||
Для указания спецификации файла используется следующая форма:
|
||||
|
||||
[drive:][directory\]filename[.ext]
|
||||
|
||||
Файловая спецификация - это строка символов содержащая наименования
|
||||
диска, директорий отделенных символом "\" и имя файла. Имена диска и
|
||||
директории могут быть опущены, если требуемый файл расположен в текущей
|
||||
директории.
|
||||
|
||||
Например:
|
||||
|
||||
C:\TEXT\DOC\text.doc
|
||||
A:file.txt
|
||||
\TEXT\info.txt
|
||||
|
||||
В DSS в качестве имен дисковых устройств используются буквы с
|
||||
последующим символом двоеточия (A:, B:, C: и.т.д.) Имя диска может быть
|
||||
набрано перед именем файла для указания диска, на котором он расположен.
|
||||
|
||||
Например:
|
||||
команда
|
||||
DIR C:TESTFILE
|
||||
ищет TESTFILE в текущей директории диска C:.
|
||||
Если имя диска не указанно используется текущий диск. После запуска DSS,
|
||||
текущим диском является диск, с которого была загружена DSS.
|
||||
|
||||
Имена файлов состоят из двух частей. Первая часть может содержать
|
||||
8 букв, цифр или следующие специальные символы:
|
||||
$ % ' – _ @ { } ~ ` ! # ( ).
|
||||
Вторая часть не является обязательной и содержит любую комбинацию из трех
|
||||
букв, цифр или специальных символов с предшествующей точкой (.).
|
||||
Например имена "NAME" и "NAME." указывают на одинаковый файл.
|
||||
В имени файла не допускаются символы с кодом меньше 32, а также символы
|
||||
. " / \ [ ] : | < > + = ; ,
|
||||
Поскольку директории также являются файлами их имена образуются по
|
||||
тем же правилам.
|
||||
Имя корневой директории всегда "\". И каждая поддиректория содержит
|
||||
два элемента с именами "." and "..". Имя "." указывает на текущую
|
||||
директорию, а имя ".." указывает на родительную (на уровень выше)
|
||||
директорию.
|
||||
Некоторые команды и функции DSS позволяют использовать глобальные
|
||||
символы * и ? которые могут использоваться для задания шаблона имени
|
||||
файла.
|
||||
Символ ? означает любой один символ в имени файла.
|
||||
Символ * означает, что он может быть заменен на любое количество
|
||||
любых символов.
|
||||
|
||||
for example:
|
||||
*.txt - означает, все файлы с типом "txt"
|
||||
a??.* - означает, файлы содержащие три и менее символов и первый символ "a"
|
||||
dc*.exe - означает, файлы с типом "exe" и начинающиеся на "dc"
|
||||
|
||||
В именах файлов не делается различий между заглавными и прописными
|
||||
символами.
|
||||
|
||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,97 @@
|
||||
Акселератор компьютера Sprinter.
|
||||
|
||||
Акселератор предназначен для ускорения операций по пересылке блоков данных в ОЗУ и видео-ОЗУ.
|
||||
|
||||
Акселератор позволяет:
|
||||
|
||||
- быстро заполнять горизонтальную или вертикальную линию длиной до 256 точек одним цветом (в режиме 640x256 - одинарную/двойную горизонтальную линию длиной до 512 точек)
|
||||
- быстро копировать горизонтальную или вертикальную линию длиной до 256 точек (в режиме 640x256 - горизонтальную линию до 512 точек)
|
||||
- проводить быстрые операции AND, OR, XOR с блоками памяти.
|
||||
|
||||
Акселератор не может работать с блоками данных ПЗУ и Быстрого-ОЗУ.
|
||||
|
||||
ОЗУ акселератора является частью внутреннего ОЗУ ППЛМ.
|
||||
Операции по пересылке данных производятся путем записи блока данных в это
|
||||
внутреннее ОЗУ, а затем копировании его в нужное место ОЗУ из ОЗУ акселератора.
|
||||
Блок данных, записываемый в ОЗУ акселератора может иметь различную
|
||||
длинну из диапазона 1..256 байт.
|
||||
|
||||
После одной записи копирование может производиться несколько раз и, таким
|
||||
образом, можно производить заполнение экрана текстурами.
|
||||
|
||||
Для заполнения экрана одним цветом используется другой режим
|
||||
акселератора. В нем вместо копируемого блока данных из внутреннего ОЗУ
|
||||
производится запись данных с шины процессора, которые в этот момент не
|
||||
изменяются.
|
||||
|
||||
Управление акселератором производится непосредственно из программы.
|
||||
Для этого изпользуются команды процессора, которые, фактически, являются
|
||||
операциями типа NOP.
|
||||
|
||||
LD B,B - выключить акселетарор.
|
||||
LD D,D - включить акселератор в режим приема байта размера блока
|
||||
далее следует команда типа LD A,dat, где dat и будет новым
|
||||
размером блока. Если размер блока был установлен ранее,
|
||||
его можно не устанавливать.
|
||||
LD C,C - Операция Fill - заполнение одним байтом. Последующая
|
||||
команда типа LD (HL),A приведет к заполнению указанного
|
||||
ранее количества байт значением A
|
||||
LD E,E - Операция Fill для графического экрана - заполнение
|
||||
вертикальных линий.
|
||||
LD H,H - rezerved
|
||||
LD L,L - копирование блока. Последующая команда типа LD A,(HL)
|
||||
приведет к заполнению ОЗУ акселератора данными из адреса (HL),
|
||||
а команда типа LD (DE),A приведет к перезаписи данных из ОЗУ
|
||||
акселератора в ОЗУ или видео-ОЗУ.
|
||||
LD A,A - копирование блока для графического экрана подобна команде
|
||||
LD L,L, но работает с вертикальными линиями экрана.
|
||||
|
||||
Пример использования акселератора:
|
||||
|
||||
; Считаем, что экранная страница уже открыта по адресу #C000
|
||||
LD HL,#C040 ; адрес начала линии первого экрана
|
||||
LD DE,#C180 ; адрес начала линии второго экрана
|
||||
LD BC,#140 ; длина экрана по горизонтали
|
||||
DI ; запретить прерывания для работы с акселератором
|
||||
LD D,D ; включить акселератор на установку размера блока
|
||||
LD A,0 ; установить размер блока - 256 байт
|
||||
LD A,A ; установить акселератор на копирование
|
||||
; вертикальных линий.
|
||||
LDIR ; копировать
|
||||
LD B,B ; выключить акселератор
|
||||
EI ; включить прерывания
|
||||
|
||||
|
||||
|
||||
Эта часть программы произведет копирование всего содержимого первого экрана на другой.
|
||||
Время исполения составляет примерно 26 милисекунд.
|
||||
|
||||
Дополнительные функции акселератора (AND, OR, XOR) работают таким же образом.
|
||||
Для выполнения логических функций используются команды XOR (HL); OR (HL); AND (HL).
|
||||
|
||||
Пример кодирования блока в 256 байт.
|
||||
|
||||
LD HL,ADRES_1
|
||||
LD DE,XOR_DAT
|
||||
DI
|
||||
LD D,D
|
||||
LD A,0 ; число байт, которые надо закодировать
|
||||
LD L,L
|
||||
LD A,(DE) ; взять блок данных в ОЗУ акселератора
|
||||
XOR (HL) ; произвести операцию XOR с данными акселератора
|
||||
LD (HL),A ; запомнить в ОЗУ результат операции
|
||||
LD B,B
|
||||
EI
|
||||
|
||||
|
||||
Скорость работы акселератора ограничивается только физической
|
||||
скоростью работы основного ОЗУ. Определить примерное время работы команды с
|
||||
акселератором можно по такой формуле:
|
||||
|
||||
Время работы = время работы команды без акселератора + время работы
|
||||
акселератора
|
||||
|
||||
Время работы акселератора = число пересылаемых байт /7 микросекунд
|
||||
|
||||
Во время работы акселератора необходимо отключать прерывания, так как в этот момент
|
||||
изменяется система команд процессора и программа на прерывании не сможет работать корректно.
|
||||
@@ -0,0 +1,635 @@
|
||||
ÜÜÜÜÜÜ
|
||||
ÜÛ°°°°°°
|
||||
Û°° Û°°
|
||||
Û°°ÜÜÜÛ°°
|
||||
Û°°°°°°°°
|
||||
Û°° Û°°
|
||||
Û°° Û°° àå¨â¥ªâãà ª®¬¯ìîâ¥à Sprinter.
|
||||
ß°° ß°°
|
||||
|
||||
‚¢¥¤¥¨¥.
|
||||
|
||||
„ ®¥ ®¯¨á ¨¥ ¯à¥¤¯®« £ ¥â «¨ç¨¥ ®¯à¥¤¥«¥ëå § ¨© ç¨â ⥫ï,
|
||||
¨¬¥® § ¨¥ àå¨â¥ªâãàë ª®¬¯ìîâ¥à ZX-Spectrum ¨ ¨å à §®¢¨¤®á⥩, ¢
|
||||
ç áâ®á⨠Pentagon-128 ¨ Scorpion-256, â ª ¦¥ § ¨¥ ï§ëª BASIC ¨
|
||||
¥ª®â®à®¥ § ª®¬á⢮ á ï§ëª®¬ áᥬ¡«¥à Z80.
|
||||
‡¤¥áì ï ¡ã¤ã §ë¢ âì ª®ä¨£ãà æ¨¥© ¬ è¨ë - ª®ªà¥âãî ॠ«¨§ æ¨î
|
||||
ª®ªà¥â®© áå¥¬ë ¢ ¯¥à¥¯à®£à ¬¬¨à㥬®© «®£¨ç¥áª®© ¬¨ªà®á奬¥ (��‹Œ).
|
||||
�â® ®§ ç ¥â, çâ® ¬ è¨ ¨¬¥¥â ¬®¦¥á⢮ ª®ä¨£ãà æ¨©, ª ¦¤ ï ¨§ ª®â®àëå
|
||||
¨¬¥¥â ᢮î á奬ã.
|
||||
Ÿ â ª ¦¥ ¨á¯®«ì§ãî ¯®ï⨥ Š�˜-އ“. �â® ¥ Š�˜ ¢ ä®à¬ «ì®¬
|
||||
á¬ëá«¥, ¡ëáâ஥ އ“, ¢ ª®â®à®¬ ¯à®æ¥áá®à ¬®¦¥â à ¡®â âì ¢ë᮪®©
|
||||
ç áâ®â¥ ¡¥§ ®¦¨¤ ¨ï. Š�˜-¥¬ íâ® Ž‡“ §ë¢ ¥âáï ⮫쪮 ¯® âà ¤¨æ¨¨,
|
||||
¯®¤®¡® Š�˜-ã Š�537�“10 ¢ ª®¬¯ìîâ¥à å Pentagon-128.
|
||||
|
||||
|
||||
Šà ⪨¥ ¤ ë¥ ª®¬¯ìîâ¥à Sprinter.
|
||||
|
||||
�p®æ¥áá®p . . . . . . . . . . . Z84C15
|
||||
’ ªâ®¢ ï ç áâ®â . . . . 21MHz/3.5MHz
|
||||
އ“ . . . . . . . . . . . . . . 4096Kb
|
||||
Š�˜ އ“ . . . . . . . . . . . . . 64Kb
|
||||
�‡“ . . . . . . . . . . . . . . .128Kb
|
||||
‚¨¤¥®-އ“ . . . . . . . . . 256Kb(512)
|
||||
Š®âp®««¥p ¤¨áª®¢ . . . . . Šp1818‚ƒ93
|
||||
�®¤¤¥p¦ª 1.44Mb ä®p¬ â . . 3.5"¤¨áª
|
||||
Š®âp®««¥p ¢¨ç¥áâ¥p . . . . . IDE/AT
|
||||
Š®âp®««¥p ª« ¢¨ âãpë . . . 101key/AT
|
||||
Š®âp®««¥p ¬ëè¨ . . . . . . . MS-Mouse
|
||||
„¢ á«®â . . . . . . . áâ ¤ pâ ISA-8
|
||||
†¥«¥§ ï í¬ã«ïæ¨ï AY-3-8910 áâ¥à¥®-OUT
|
||||
COVOX . . . . . . . . . 8bit x 4chanel
|
||||
‚¨¤¥®-p¥¦¨¬ë: . . . Spectrum standart
|
||||
GRAF 320x256x256,640x256x16, TXT 80x32
|
||||
‚ë室 ¢¨¤¥® TV ¨«¨ CGA ¬®¨â®p, RGB
|
||||
|
||||
|
||||
’¥å¨ç¥áª ï ॠ«¨§ æ¨ï.
|
||||
|
||||
Ÿ¤à®¬ ¬ è¨ë ïîâáï ¯à®æ¥áá®à Z84C15 ¨ ��‹Œ EPF10K10QC208.
|
||||
Šà®¬¥ ¨å ¯« ⥠¯à¨áãâáâ¢ãîâ ¬¨ªà®á奬a �‡“, 72å-¯¨®¢ë© SIMM
|
||||
4Mb, 256Kb ¢¨¤¥®-އ“, 64Kb Š�˜-އ“, á奬 ª®â஫«¥à ¤¨áª®¢®¤
|
||||
�ˆ‘ Š�1818‚ƒ93, ¡ãä¥àë ¤«ï ¯®¤ª«îç¥¨ï ¤¦®©á⨪ , ¬ £¨â®ä® , ¯à¨â¥à ,
|
||||
ª« ¢¨ âãàë, ¤¨áª®¢®¤®¢, ¢¨ç¥áâ¥à , ¬ëè¨, ¡ãä¥àë¥ ¬¨ªà®á奬ë è¨ë ISA-8
|
||||
¨ ¥é¥ ®¤ ��‹Œ ä¨à¬ë ALTERA - EPM7032LC44. �â ��‹Œ ¥ ¬¥ï¥â ᢮¥©
|
||||
ª®ä¨£ãà æ¨¨ ¨ ¯à¥¤ § ç¥ ¤«ï ®¡¥á¯¥ç¥¨ï á¨åந§ 樨 ¨ ç «ì®£®
|
||||
§ ¯ã᪠ª®¬¯ìîâ¥à . � ¯« ⥠⠪ ¦¥ ¯à¥¤ãᬮâॠ¢®§¬®¦®áâì ¯®¤ª«î票ï
|
||||
CMOS ç ᮢ ®á®¢¥ ¬¨ªà®á奬ë DALLAS. Šà®¬¥ ¯¥à¨ä¥à¨¨ ¨ ¡ãä¥à®¢ ¨¬¥îâáï
|
||||
¬¨ªà®áå¥¬ë ¤¥è¨äà æ¨¨, ¢å®¤ë ª®â®àëå ¯®¤ª«îç îâáï ª ¯à®æ¥áá®àã ç¥à¥§ ��‹Œ.
|
||||
�â® ¯®§¢®«ï¥â «¥£ª® ¬¥ïâì ¤à¥á æ¨î ãáâனá⢠¡¥§ ª ª®£® «¨¡® ¨§¬¥¥¨ï
|
||||
à §¢®¤ª¨ ¯¥ç ⮩ ¯« âë.
|
||||
|
||||
|
||||
‚®§¬®¦®á⨠àå¨â¥ªâãàë ¬ è¨ë.
|
||||
|
||||
‘奬 ª®¬¯ìîâ¥p ®á®¢ ¡®«ì让 ¯¥p¥¯p®£p ¬¬¨p㥬®© «®£¨ç¥áª®©
|
||||
¬¨ªp®á奬¥. �®¤ª«î票¥ ¯¥à¨ä¥à¨©ëå ãáâனá⢠ç¥à¥§ ��‹Œ ¯®§¢®«ï¥â ¯®«ãç¨âì
|
||||
¢ë᮪ãî £¨¡ª®áâì ¬ è¨ë ¯® ª®ä¨£ãà æ¨ï¬.
|
||||
�p®£p ¬¬¨p®¢ ¨¥ ��‹Œ ®áãé¥á⢫ï¥âáï ¥¯®áp¥¤á⢥® ¢ ¬®¬¥â
|
||||
¢ª«î票ï, â ª ¦¥ ¯p¨ ¯¥p¥§ £p㧪¥, çâ® ¯®§¢®«ï¥â ª p¤¨ «ì® ¬¥ïâì
|
||||
á奬㠢 ��‹Œ ¥¯®áp¥¤á⢥® ¢® ¢p¥¬ï p ¡®âë. �â® á¨«ì® ¢ë¤¥«ï¥â
|
||||
àå¨â¥ªâãàã ª®¬¯ìîâ¥à ¨§ àï¤ áãé¥áâ¢ãîé¨å ª®¬¯ìîâ¥à®¢ ¨ ¯®í⮬㠬®£¨¥
|
||||
¯®ïâ¨ï, ¯à¨áã騥 ®¡ëçë¬ ¬ è¨ ¬, ¬¥ïîâ ᢮© á¬ëá«. ” ªâ¨ç¥áª¨ ª®¬¯ìîâ¥à
|
||||
¨¬¥¥â ¨§¬¥ï¥¬ãî àå¨â¥ªâãàã, ¢ ª®â®à®© ¢®§¬®¦ë ¨§¬¥¥¨ï ¢® ¬®£¨å ç áâïå
|
||||
á奬ë. ’ ª, ¯à¨¬¥à, ¥«ì§ï £®¢®à¨âì ® ª®ªà¥âëå ¤à¥á å ¯®à⮢
|
||||
¯®¤ª«îç¥¨ï ¯¥à¨ä¥à¨¨, â ª ª ª ®¨ ¬®£ãâ ¡ëâì ¨§¬¥¥ë ¢ ®¤ã ᥪã¤ã
|
||||
¯ã⥬ ¯¥à¥¯à®£à ¬¬¨à®¢ ¨ï ��‹Œ ¨ ¤ ëå ¢ އ“, ®â¢¥ç îé¨å § ª®ä¨£ãà æ¨î
|
||||
¯®à⮢. Š®ªà¥âë¥ ¤à¥á ¯®ï¢«ïîâáï ⮫쪮 ¢ ª®ªà¥âëå ª®ä¨£ãà æ¨ïå,
|
||||
¯à¨¬¥à, â ª®© ª ª ª®ä¨£ãà æ¨ï ZX-Spectrum.
|
||||
�¥à¥¯à®£à ¬¬¨à㥬®áâì áå¥¬ë ¤ ¥â ¤®¢®«ì® ¡®«ìèãî ᢮¡®¤ã
|
||||
ä â §¨¨ ¯à®£à ¬¬¨áâ ¯® ª®ä¨£ãà æ¨¨ ¬ è¨ë. ‡ ¤ã¬ë¢ ï ª®ªà¥âãî
|
||||
à ¡®âã ¯à®£à ¬¬¨áâ ¬®¦¥â ®¯à¥¤¥«¨âì ¢ ª ª®© ª®ä¨£ãà æ¨¨ ¥¥ ¬®¦®
|
||||
ᤥ« âì «ãçè¥, , ¢®§¬®¦®, ¨ ¯à¨¤ã¬ âì á¢®î ª®ä¨£ãà æ¨î, ª®â®àãî
|
||||
§ ⥬ ¬®¦® ॠ«¨§®¢ âì ¢ ��‹Œ ¨ ¢ª«îç¨âì ¯¥à¥¤ § ¯ã᪮¬ í⮩ ¯à®£à ¬¬ë.
|
||||
|
||||
|
||||
�«®ç ï á奬 ª®¬¯ìîâ¥à Sprinter.
|
||||
|
||||
ÚÄÄÄÄÄÄÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄÄ>Sinc
|
||||
³�à¨â¥à³ ³ 2 ISA SLOTS ³ ³ ÚÄÄÄÄÄÄÄ>R
|
||||
ÃÄÄÄÄÄÄÄ´ ÀÄÄÄÂÄÂÄÂÄÂÄÂÄÄÄÄÄÄÄÂÄÂÄÂÄÂÄÂÄÄÙ ³ ³ ÚÄÄÄÄÄ>G
|
||||
³ Œëèì ³ ÚÄÄÄÁÄÁÄÁÄÁÄÁÄÄÄÄÄÄÄÁÄÁÄÁÄÁÄÁÄÄ¿ ³ ³ ³ ÚÄÄÄ>B
|
||||
ÀÄÂÄÂÄÂÄÙ ³ �ãä¥àë ¨ ¤¥è¨äà â®àë ³ ³ ÚÄÁÄÁÄÁÄ¿
|
||||
³ ³ ³ ÀÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÂÄÄÂÄÂÄÄÄÄÂÄÂÄÙ ³ ³ –€� ³
|
||||
³ ³ ³ ³INT ³ ³ ³ ³ ³ ³ ³ ³ ¡ãä¥à ³
|
||||
ÚÄÄÁÄÁÄÁÂÄ¿ ³ ³ ³ ³ ³ ÚÁÄÁÄÄÄÄÄÄÁÄ¿ÀÄÄÂÄÂÄÄÙ ÚÄÄÄÄÄÄÄÄ¿
|
||||
³ ‚ãâà ³ ÃÄÄÄijÄÄÄÄÄÄÄÄÄÄÙ ÀÄij ³ÄÄÄ´ EPF10K10 ÃÄÄÄÙ ÀÄÄÄÄÄÄ´ ¢¨¤¥® ³
|
||||
³ ¯®àâë ³ ÃÄÄÄijÄÄÄÄÄÄÄÄÄÄDATAij ³ÄÄÄ´ ÃÄÄV_DATAÄÄÄÄ´ ³
|
||||
ÃÄÄÄÄÄÄÄÙ ÃÄÄÄijÄÄÄ¿ ÚÄÄÄÄÄÄÄÄij ³ÄÄÄ´ ÃÄÄÄÄÄÄÄÄÄÄÄÄ´ އ“ ³
|
||||
³ Ã<ÄÄÄÙ ³ ³ ³ ³ ³ ³ ³ ³
|
||||
³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ÀÄÄÄ´ ÃÄÄÄÄÄÄÄÄÄÄÄÄ´ ³
|
||||
³ Z84C15 ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄADRESSÄÄÄÄÄ´ ÃÄV_ADRESSÄÄÄ´ ³
|
||||
³ ÃÄÄÄÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ÃÄÄÄÄÄÄÄÄÄÄÄÄ´ ³
|
||||
³ ³ ³ ³ ³ ³ ³ ³ ³ ³
|
||||
³ Ã<ÄÄij ³Ä³ ³ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ>´ ÃÄÄWE,CSiÄÄÄ>´ ³
|
||||
³ Ã<ÄÄij ³Ä³ ³ÄÄÄÄDIRÄÄÄÄÄÄÄ>´ ³ ÀÄÄÄÄÄÄÄÄÙ
|
||||
³ Ã<ÄÄij ³Ä³ ³ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ>´ ÃÄÄÄÄÄÄÄ> Audio OUTs
|
||||
³ ³ ³ ³ ³ ³ ³ ³ ÚÄÄÄÄÄÄÄÄ¿
|
||||
³ ³ ÚÄÁÄÁÄÁÄÁÄÄÄÄÄÄÄ¿ ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄ´ MAIN ³
|
||||
³ ³ ³ �‡“ ¨ Š�˜-އ“ Ã<ÄADR'Ä´ ÃÄÄDATAÄÄÄÄÄÄ´ RAM ³
|
||||
ÀÄÂÄÂÄÂÄÄÂÙ ³ CS Ã<ÄCSÄÄÄ´ ÃÄÄÄÄÄÄÄÄÄÄÄÄ´ ³
|
||||
³ ³ ³ ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ³ ³ ³ SIMM ³
|
||||
³ D ³ ³ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄ´ ³
|
||||
³ A ³ ³ ³ EPM7032 ÃÄÄÄÄÄÄÄ>´ ÃÄÄADRESSÄÄÄÄ´ ³
|
||||
³ T ³ ÀÄÄ>´ Sinchro ³ ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄ´ ³
|
||||
³ A ³ ³ HDD_DIR Ã<ÄÄÄÄÄÄÄ´ ³ ³ ³
|
||||
³ ³ ³ ³ ”€�— Ã<ÄÄÄÄÄÄÄ´ ÃÄRAS,CAS,WEÄ´ ³
|
||||
³ ³ ³ ÀÄÂÄÂÄÂÄÂÄÂÄÄÄÄÙ ³ ³ ÀÄÄÄÄÄÄÄÄÙ
|
||||
³ ³ ³ ³ ³ ³ ³ ³ ³ ³
|
||||
ÚÄÁÄÁÄÁÄÄÄÄÄÄÄÄÁÄÁÄÁÄÁÄÁÄÄÄÄÄÄÄ¿ ³ ³
|
||||
³ �¥à¨ä¥à¨©ë¥ ãáâனá⢠Ã<ÄÄÄÄ´ ³
|
||||
³ FDD,HDD,KEMPSTON Ã<DIRÄ´ ³
|
||||
³ Ã<ÄÄÄÄ´ ³
|
||||
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ³ ³
|
||||
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ>´ ³
|
||||
ÚÄÄÄÄÄÄÄÄ¿ ³ ÚÄÄÄÄÄÄÄÄ¿ ³ ³
|
||||
³ TAPE Ã<ÄÄÙ ³KeyboardÃÄÄÄÄÄÄÄÄÄ>´ ³
|
||||
³ in/out ³ ô ³ ³
|
||||
ÀÄÄÄÄÄÄÄÄÙ ÀÁÁÁÁÁÁÁÁÙ ÀÄÄÄÄÄÄÄÄÄÄÄÙ
|
||||
|
||||
�¨á㮪 1.
|
||||
|
||||
|
||||
|
||||
„«ï ¯à®áâ®âë ¥ª®â®àë¥ ¡ãä¥àë ¨ ¤¥è¨äà â®àë á奬¥ ¥ 㪠§ ë.
|
||||
Š®«¨ç¥á⢮ �஢®¤®¢ ¢ è¨ å â ª ¦¥ ãá«®¢ë. — áâì ᨣ «®¢ ã¯à ¢«¥¨ï
|
||||
ãáâனá⢠á ��‹Œ á¬ã«ì⨯«¨æ¨à®¢ ë á ¤à¥á ¬¨ SIMM- .
|
||||
|
||||
|
||||
„ «ì¥©è¥¥ ®¯¨á ¨¥ àå¨â¥ªâãàë ï¥âáï ®¯¨á ¨¥¬ ª®ªà¥âëå
|
||||
ª®ä¨£ãà æ¨© ¨ ç á⥩ ª®ä¨£ãà æ¨©. �® ¯¥à¥¤ í⨬ á«¥¤ã¥â ᪠§ âì ¥áª®«ìª®
|
||||
á«®¢ ® ¯¥à¥ª«î票¨ á ¬¨å ª®ä¨£ãà æ¨©.
|
||||
|
||||
‡ £à㧪 ª®ä¨£ãà æ¨©.
|
||||
|
||||
‚ ¬®¬¥â ¢ª«îç¥¨ï ª®¬¯ìîâ¥à , â ª ¦¥ ¯®á«¥ ¦ â¨ï RESET ¢áï
|
||||
¨ä®à¬ æ¨ï, 室¨¢è ïáï ¢ ��‹Œ ®â¢¥ç îé ï § ª®ªà¥âãî ª®ä¨£ãà æ¨î,
|
||||
áâ¨à ¥âáï. ��‹Œ ¯¥à¥å®¤¨â ¢ ०¨¬ ®¦¨¤ ¨ï § £à㧪¨ ¡«®ª ¤ ëå á奬ë.
|
||||
‚ íâ®â ¬®¬¥â ¯à®æ¥áá®à ¯®«®áâìî ®âª«îç¥ ®â ª ª®© «¨¡® ¯¥à¨ä¥à¨¨.
|
||||
‚ ¥£® ¤à¥á®¥ ¯à®áâà á⢮ ¯ ¬ï⨠®ª §ë¢ ¥âáï ¢ª«îç¥ ®¤ áâà ¨æ �‡“ ¨
|
||||
®¤ áâà ¨æ Ž‡“ Š�˜-¯ ¬ïâ¨. ‹î¡ ï § ¯¨áì ¢ ¤à¥á®¥ ¯à®áâà á⢮ ¯ ¬ïâ¨
|
||||
¯à®æ¥áá®à ¢ íâ®â ¬®¬¥â ¯à¨¢®¤¨â ª § ¯¨á¨ ¤ ëå ¢ ��‹Œ ¨ ¯à®£à ¬¬ ¢
|
||||
¯®¤ª«î祮© áâà ¨æ¥ �‡“ ¨¬¥¥â ⮫쪮 ®¤ã ¥¤¨á⢥ãî æ¥«ì - § £à㧨âì
|
||||
¢ ��‹Œ ¤ ë¥ ª®ä¨£ãà æ¨¨. ‚ í⮩ ¦¥ áâà ¨æ¥ �‡“ 室ïâáï ¤ ë¥
|
||||
ç «ì®© ª®ä¨£ãà æ¨¨. (‚ ¤ ë© ¬®¬¥â íâ® ª®ä¨£ãà æ¨ï Sprinter-1.)
|
||||
�à®£à ¬¬ § £à㧪¨ ª®ä¨£ãà æ¨¨ ¯à®¢¥àï¥â ä« £ ¢ Š�˜-¯ ¬ï⨠¨, ¥á«¨ ®
|
||||
ãáâ ®¢«¥, § £à㦠¥â ¢ ��‹Œ ¤ ë¥ ¨§ އ“, ¥á«¨ á¡à®è¥, â® ¤ ë¥ ¨§
|
||||
�‡“. � í⮬ ®á®¢ ® ¯¥à¥ª®ä¨£ãà¨à®¢ ¨¥ áå¥¬ë ª®¬¯ìîâ¥à .
|
||||
„«ï ¨§¬¥¥¨ï áå¥¬ë ¤® § £à㧨âì ¢ ¯®á«¥¤îî áâà ¨æã Š�˜-¯ ¬ïâ¨
|
||||
¡«®ª ¤ ëå ª®ä¨£ãà æ¨¨ ᮠᬥ饨ï #100 ¨ ¢ëáâ ¢¨âì ä« £, ª®â®àë¬ ï¢«ï¥âáï
|
||||
⥪á⮢ ï áâப "FLEX_10K_LOADING", § ¯¨á ï ¯® ᬥ饨î #80 ¢ í⮩ ¦¥
|
||||
áâà ¨æ¥ Š�˜- . �®á«¥ í⮣® ¤® ¯à®¨§¢¥á⨠¯®«ë© á¡à®á, ª®â®àë©
|
||||
®áãé¥á⢫ï¥âáï ¯à®£à ¬¬® § ¯¨áìî ¢ á¯¥æ¨ «ìãî áâà ¨æã ¯ ¬ï⨠RESET_PAGE.
|
||||
�à®£à ¬¬ ¢ �‡“, § ¯ã᪠¥¬ ï ¯® á¡à®áã 室¨â ä« £ FLEX_10K_LOADING ¨
|
||||
ç¨ ¥â § £à㧪㠤 ëå ¢ ��‹Œ. �ਠí⮬ ® ®¤®¢à¥¬¥® § â¨à ¥â ä« £,
|
||||
çâ® ¯à¥¤®â¢à é ¥â ¯®¢â®àãî § £à㧪㠮¢®© ª®ä¨£ãà æ¨¨ ¯à¨ ¦ ⨨
|
||||
ª®¯ªã RESET ¨ ¯®§¢®«ï¥â ¢¥àãâìáï ¯®á«¥ "àã箣®" á¡à®á ¢ ç «ìãî
|
||||
ª®ä¨£ãà æ¨î. ‡ â¨à ¨¥ ä« £ â ª ¦¥ ¨§¡ ¢«ï¥â ®â ¬ã票© ¢ á«ãç ¥
|
||||
¯®¤ª«îç¥¨ï ¥¯à ¢¨«ì®© ª®ä¨£ãà æ¨¨ ¢® ¢à¥¬ï íªá¯¥à¨¬¥â®¢ á ¯à®£à ¬¬ ¬¨.
|
||||
� ¦ ⨥ RESET ¢á¥£¤ ¢¥à¥â á奬㠢 ç «ìãî ª®ä¨£ãà æ¨î.
|
||||
|
||||
�ਬ¥ç ¨¥:
|
||||
‚ãâà¥ïï ¨ä®à¬ æ¨ï ¡«®ª ¤ ëå ��‹Œ ï¥âáï § ªàë⮩
|
||||
¨ä®à¬ 樥© ä¨à¬ë ALTERA. Šà®¬¥ á ¬¨å ¬¨ªà®á奬 ��‹Œ ALTERA ¯®áâ ¢«ï¥â
|
||||
¨ ¯à®£à ¬¬®¥ ®¡¥á¯¥ç¥¨¥ ¤«ï à §¢®¤ª¨ á奬 ¢ãâਠ��‹Œ. Š á®¦ «¥¨î, íâ
|
||||
¯à®£à ¬¬ ¥ ¬®¦¥â à ¡®â âì ª®¬¯ìîâ¥à¥ ⨯ ZX-Spectrum ¨ ¢ ¡«¨¦ ©è¥¬
|
||||
®¡®§à¨¬®¬ ¡ã¤ã饬 ¥ ¯à¥¤¢¨¤¨âáï ¥¥ ¢¥àá¨ï ¤«ï Sprinter- . �®í⮬ã
|
||||
à §à ¡®âª ®¢ëå ª®ä¨£ãà æ¨© ¬®¦¥â ¯à®¨§¢®¤¨âáï ⮫쪮 ¯à¨ «¨ç¨¨
|
||||
¤®áâ â®ç® ¬®é®© ¬ è¨ë (¢á¥ ¤¥« «®áì Pentium-166) ¨ ¯à®£à ¬¬ë à §¢®¤ª¨
|
||||
á奬 ¢ ��‹Œ, æ¥ ª®â®àãî á®áâ ¢«ï¥â á®â¨ ¤®«« ஢ ‘˜€.
|
||||
‚ á¢ï§¨ á í⨬, ¢ ¤ ë© ¬®¬¥â Sprinter ¨¬¥¥â ¥áª®«ìª® ª®ªà¥âëå
|
||||
ª®ä¨£ãà æ¨©, ¤¢¥ ¨§ ª®â®àëå § ¯¨á ë ¢ �‡“, ®áâ «ìë¥ ¬®£ãâ ¡ëâì
|
||||
¯®¤£à㦥ë á ¤¨áª¥âë ¨«¨ ¢¨ç¥áâ¥à . �®áâ®ï® ¢¥¤¥âáï ᮢ¥àè¥á⢮¢ ¨¥
|
||||
ª®ªà¥âëå ª®ä¨£ãà æ¨© ¨ à §à ¡®âª ®¢ëå.
|
||||
|
||||
Ю䍣ãà æ¨ï Sprinter-1.
|
||||
|
||||
‚ª«îç ¥â ¢ á¥¡ï ª®ä¨£ãà æ¨î Spectrum-128/256, à á¯à¥¤¥«¥¨¥ ¯ ¬ïâ¨
|
||||
¤® 4Mb, à áè¨à¥ë© íªà á ०¨¬ ¬¨ Spectrum, Text-80x32, Graf-320x256x256,
|
||||
ª®â஫«¥à ¤¨áª®¢®¤ , ª®â஫«¥à IDE ¢¨ç¥áâ¥à , ª®â஫«¥à ª« ¢¨ âãàë AT,
|
||||
¯®¤ª«î祮© ª ª ZX-Keyboard, 8-bit COVOX.
|
||||
�â ª®ä¨£ãà æ¨ï ¬ ªá¨¬ «ì® ¯à¨¡«¨¦¥ ª ª®ä®£ãà æ¨¨ ZX-Spectrum
|
||||
¨ ¯®§¢®«ï¥â à ¡®â âì ®¡ëçëå ᯥªâà㬮¢áª¨å ¯à®£à ¬¬ å ¨ ¯®á⥯¥®
|
||||
¬¥ïâì ¨å ¯®¤ à áè¨à¥ë¥ ०¨¬ë íªà ¨ ¯ ¬ïâ¨, â ª ¦¥ ¤«ï à ¡®âë á
|
||||
®¢ë¬¨ ãáâனá⢠¬¨.
|
||||
|
||||
Ю䍣ãà æ¨ï Sprinter-2.
|
||||
|
||||
‚ª«îç ¥â ¢ á¥¡ï ª®ä¨£ãà æ¨î Spectrum-128/256, à á¯à¥¤¥«¥¨¥ ¯ ¬ïâ¨
|
||||
¤® 4Mb, à áè¨à¥ë© íªà á ०¨¬ ¬¨ Spectrum, Text-80x32, Graf-320x256x256,
|
||||
ª®â஫«¥à ¤¨áª®¢®¤ , ª®â஫«¥à IDE ¢¨ç¥áâ¥à , ª®â஫«¥à ª« ¢¨ âãàë AT,
|
||||
¯®¤ª«î祮© ª ª ZX-Keyboard, Accelerator.
|
||||
Ю䍣ãà æ¨ï, ª ª ¨ Sprinter-1 ¯à¨¡«¨¦¥ ª ᯥªâà㬮¢áª®©, ®
|
||||
¨¬¥¥â ¡®«¥¥ ¦¥á⪨¥ âॡ®¢ ¨ï ª ¯à®£à ¬¬ ¬ ¯® ᮢ¬¥á⨬®áâ¨. �®§¢®«ï¥â
|
||||
¨á¯®«ì§®¢ âì ªá¥«¥à â®à ®¯¥à 権 á ®á®¢ë¬ ¨ ¢¨¤¥®-އ“. €ªá¥«¥à â®à
|
||||
ã᪮àï¥â ®¯¥à 樨 ¯¥à¥á뫪¨ ¡«®ª®¢ ¤ ëå ¨ § ¯®«¥¨ï އ“ ®¤¨¬ ¡ ©â®¬
|
||||
¤® 䨧¨ç¥áª®£® ¯à¥¤¥« ᪮à®á⨠®á®¢®£® އ“.
|
||||
‚ ¯®á«¥¤¥© ¢¥àᨨ ª®ä¨£ãà æ¨ï Sprinter-2 ¥ ¨¬¥¥â Spectrum-®¢áª®©
|
||||
ª« ¢¨ âãàë. ‚¬¥áâ® ¥¥ ¨§ ¯®àâ 0FEh áç¨âë¢ ¥âáï ᪠ª®¤ ¯à¨è¥¤è¨© á
|
||||
AT-ª« ¢¨ âãàë.
|
||||
|
||||
Ю䍣ãà æ¨ï ZX-Spectrum-256/AY.
|
||||
|
||||
�â ª®ä¨£ãà æ¨ï ¬ ªá¨¬ «ì® ¯à¨¡«¨¦¥ ª ZX-Spectrum-128/256
|
||||
¨ ¢ª«îç ¥â ¢ ᥡï á奬㠬ã§ëª «ì®£® á®¯à®æ¥áá®à AY-3-8910. ‚ í⮩
|
||||
ª®ä¨£ãà æ¨¨ ®âáãâáâ¢ãîâ à áè¨à¥ë¥ ०¨¬ë íªà .
|
||||
‚â®à ï ¢¥àá¨ï á奬ë AY ¢ª«îç ¥â ¢ ᥡï âਠ£¥¥à â®à £®«®á®¢,
|
||||
£¥¥à â®à è㬠¨ ॣã«ïâ®àë ¬¯«¨âã¤ë. ƒ¥¥à â®à ®£¨¡ î饩 ®âáãâáâ¢ã¥â.
|
||||
’ ª ¦¥ ®âáãâáâ¢ã¥â ¢®§¬®¦®áâì çâ¥¨ï ¨§ ¯®à⮢ ¤ ëå á®¯à®æ¥áá®à .
|
||||
‚ âà¥â쥩 ¢¥àᨨ AY ¯à¥¤¯®« £ ¥âáï ¤ ë¥ ¥¤®áâ ⪨ ¨áª«îç¨âì.
|
||||
|
||||
Ю䍣ãà æ¨ï Sprinter-3.
|
||||
|
||||
Ю䍣ãà æ¨ï ®â¢ï§ ®â ª®ä¨£ãà æ¨¨ ZX-Spectrum. �®«®áâìî
|
||||
®âª«îç ¥âáï �‡“ ¨ ¢á¥ ¤à¥á®¥ ¯à®áâà á⢮ à §¡¨â® ç¥âëॠ®ª ¯® 16k,
|
||||
¢ ª ¦¤®¥ ¨§ ª®â®àëå ¯®¤ª«îç ¥âáï «î¡ ï ¨§ 256-⨠áâà ¨æ Ž‡“. Žâáãâáâ¢ã¥â
|
||||
ᯥªâà㬮¢áª¨© íªà , £à ä¨ç¥áª¨© íªà â ª®© ¦¥, ª ª ¢ ª®ä¨£ãà æ¨ïå
|
||||
Sprinter-1 ¨ Sprinter-2. ˆ¬¥¥â ¤®¯®«¨â¥«ìë¥ äãªæ¨¨ ªá¥«¥à â®à .
|
||||
�®§¢®«ï¥â ¯à®¨§¢®¤¨âì ®¯¥à 樨 AND, OR ¨ XOR á ¡«®ª ¬¨ ¤ ëå. ˆ¬¥¥â 8-bit
|
||||
COVOX.
|
||||
‚ ¤ «ì¥©è¥¬ ¯à¥¤¯®« £ ¥âáï ¯®¤ª«î票¥ ¢ í⮩ ª®ä¨£ãà æ¨¨
|
||||
á¯à¨â¥à®¢áª®© §¢ãª®¢®© ª àâë.
|
||||
|
||||
Ю䍣ãà æ¨ï Game-1.
|
||||
|
||||
�®å®¦ ª®ä¨£ãà æ¨î Sprinter-3. €ªá¥«¥à â®à ¥ ¨¬¥¥â «®£¨ç¥áª¨å
|
||||
äãªæ¨©, ¤«ï ¢ë¢®¤ §¢ãª ¨¬¥¥â COVOX-Blaster - COVOX á ¡ãä¥àë¬ Ž‡“,
|
||||
¯®§¢®«ïî騬 ¢ë¢®¤¨âì §¢ãª ¯®¡«®ç® ¨ ®á¢®¡®¦¤ âì ¯à®æ¥áá®à®¥ ¢à¥¬ï ¤«ï
|
||||
¤à㣮© à ¡®âë. Ю䍣ãà æ¨ï ®à¨¥â¨à®¢ ¨á¯®«ì§®¢ ¨¥ ¢ ¨£à å ¤«ï
|
||||
Sprinter- .
|
||||
|
||||
|
||||
‘奬 à á¯à¥¤¥«¥¨ï ¯ ¬ïâ¨.
|
||||
|
||||
‘奬ë à á¯à¥¤¥«¥¨ï ¯ ¬ï⨠¢ ª®ä¨£ãà æ¨ïå Sprinter-1 ¨ Sprinter-2
|
||||
®¤¨ ª®¢ë ¨ ¤®áâ â®ç® ¯à®§à çë. ” ªâ¨ç¥áª¨ ® ¯à¥¤áâ ¢«ï¥â ᮡ®© á奬ã
|
||||
à á¯à¥¤¥«¥¨ï ¯ ¬ï⨠ª®¬¯ìîâ¥à Scorpion, á «®¦¥®© ¥¥
|
||||
¤®¯®«¨â¥«ì®© á奬®©, ª®â®à ï ¯®§¢®«ï¥â ¯à®¨§¢®«ì® ãáâ ¢«¨¢ âì ¢á¥
|
||||
áâà ¨æë ¯ ¬ïâ¨, ª ª �‡“, â ª ¨ އ“.
|
||||
Š ¦¤ ï áâà ¨æ �‡“ ¨«¨ އ“ ¨¬¥¥â ᢮© ¯®àâ, ¢ ª®â®à®¬ 㪠§ë¢ ¥âáï
|
||||
¤¥©á⢨⥫ìë© ®¬¥à áâà ¨æë ¨§ 256-⨠áâà ¨æ ¢á¥å 4Mb. ‘âà ¨æë,
|
||||
¯à®¥æ¨àã¥¬ë¥ ¢ à §«¨çë¥ ®ª ¤à¥á®£® ¯à®áâà á⢠¯à®æ¥áá®à ¨¬¥îâ ᢮¨
|
||||
ᮡáâ¢¥ë¥ ¯®àâë. ’.¥. ‘âà ¨æ , ¢ª«îç ¥¬ ï ¢ ¤à¥á #4000..#7FFF, ¨
|
||||
áâà ¨æ ®¬¥à 5 ®¡ë箣® Spectrum-®¢áª®£® à á¯à¥¤¥«¥¨ï ¯ ¬ïâ¨, ¢ª«îç ¥¬ ï
|
||||
¢ ¤à¥á #C000..#FFFF ¨¬¥îâ à §¤¥«ìë¥ ¯®àâë.
|
||||
‚ᥣ® â ª¨å ¯®à⮢ áâà ¨æ ¯ ¬ï⨠- 32.
|
||||
16 ¯®à⮢ ®â¢¥ç îâ § ®¬¥à áâà ¨æ Ž‡“, ¯®¤ª«îç ¥¬ë¥ ª ¤à¥á ¬
|
||||
#C000..#FFFF. …é¥ âਠ¯®à⠮⢥ç îâ § ¯®¤ª«î票¥ áâà ¨æ Ž‡“ ª ¤à¥á ¬
|
||||
#0000..#3FFF, #4000..#7FFF ¨ #8000..#BFFF. ‚®á¥¬ì ¯®à⮢ ¨á¯®«ì§ãîâáï ¤«ï
|
||||
¯®¤ª«î票ï à §«¨çëå áâà ¨æ �‡“. ޤ¨ ¯®àâ - ¤«ï ¯®¤ª«î票ï áâà ¨æë
|
||||
Š�˜- ¢¬¥áâ® �‡“. ˆ ®¤¨ ¯®àâ - íâ® ¯®àâ á¨á⥬®£® �‡“, ¯®¤ª«îç ¥¬®£®
|
||||
¬¥áâ® �‡“ áà §ã ¯®á«¥ á¡à®á ¬ è¨ë ¯® ª« ¢¨è ¬ Ctrl+Alt+Del.
|
||||
Žá⠢訥áï 3 ¯®àâ áâà ¨æ ¯ ¬ï⨠®áâ îâáï ¤ ë© ¬®¬¥â ¢ १¥à¢¥.
|
||||
‘奬 à á¯à¥¤¥«¥¨ï ¯ ¬ï⨠¯®§¢®«ï¥â ¯®¤ª«îç¨âì ¢ ¤à¥á®¥ ¯à®áâà á⢮
|
||||
¯à®æ¥áá®à ¥ ⮫쪮 އ“ ¨«¨ �‡“, ® ¨ ¯®àâë ¨ ¯ ¬ïâì ISA ª àâ, ¢áâ ¢«ï¥¬ëå
|
||||
¢ á«®â.
|
||||
�ਠ¯®¤ª«î票¨ ¢ ¤à¥á #C000..#FFFF ᪮௨®®¢áª¨å à áè¨à¥ëå
|
||||
áâà ¨æ Ž‡“, ¨å ¬¥áâ® ¬®¦® ¯¥à¥ ¤à¥á®¢ âì á«®âë. „«ï í⮣® ¤® ¯à®áâ®
|
||||
§ ¯¨á âì ¢ ¯®àâ ®¤®© ¨§ íâ¨å áâà ¨æ § 票¥, ᮮ⢥âáâ¢ãî饥 ISA-á«®âã,
|
||||
ª ª®â®à®¬ã ¥®¡å®¤¨¬® ¯à®¨§¢¥á⨠®¡à 饨¥. �â® § 票¥ â ª ¦¥ 㪠§ë¢ ¥â
|
||||
ª 祬㠢¥¤¥âáï ®¡à 饨¥, ª ¯®àâ ¬ ¨«¨ ¯ ¬ïâ¨.
|
||||
|
||||
|
||||
‘奬 à á¯à¥¤¥«¥¨ï ¯ ¬ï⨠Sprinter- .
|
||||
|
||||
€¤à¥á®¥ ¯à®áâà á⢮ ‘âà ¨çë¥ ¯®àâë �‡“ ª®¬¯ìîâ¥à
|
||||
¯à®æ¥áá®à ¯®¤ª«îç ¥¬ëå áâà ¨æ áâà ¨æë ¯® 16k
|
||||
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ÚÄÄÄÄÄÄÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
|
||||
³ #0000..#3FFF ÃÄ>´ ¯®àâë ÃÄÄ>´ ROM_BASIC ÃÄÄ>ÂÄÄÂÄÄÂÄ>´ EXPANSION ³
|
||||
³ ³ ³ #7FFD,³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³ ³ ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
|
||||
³ ³ ³ #1FFD ÃÄ¿ ³ ROM_TR-DOS ÃÄÄ>´ ³ ÃÄ>´ TR-DOS ³
|
||||
ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ÀÄÄÄÄÄÄÄÙ ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³ ³ ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
|
||||
³ #4000..#7FFF ÃÄÄÄÄÄÄÄÄÄÄ¿ ³ ³ ³ ³ ³ ÃÄ>´ BASIC128 ³
|
||||
³ ³ ³ ³ ÃÄ Ä Ä Ä Ä Ä Ä ´ ³ ³ ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
|
||||
³ ³ ³ ³ ³ ROM_SYSTEM ÃÄÄ>Ù ³ ÃÄ>´ BASIC48 ³
|
||||
ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³ ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³ ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
|
||||
³ #8000..#BFFF ÃÄÄÄÄ¿ ³ À>´ RAM_0000 ÃÄÄÄ>¿ ³ ÃÄ>´ SYSTEM ROM ³
|
||||
³ ³ ³ ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ³ ³ ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
|
||||
³ ³ ³ ³ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ ³ ÃÄ>´ SYSTEM ROM2 ³
|
||||
ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³ ÀÄÄ>´ RAM_4000 ÃÄÄÄ>´ ³ ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
|
||||
³ #C000..#FFFF ÿ ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ³ ³ ÃÄ>´ CONFIG 2 ³
|
||||
³ ³³ ³ ³ ³ ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
|
||||
³ ³³ ³ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ ³ ÀÄ>´ CONFIG 1 ³
|
||||
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ³ ÀÄÄÄÄÄÄÄÄ>´ RAM_8000 ÃÄÄÄ>´ ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
|
||||
³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ³ ³
|
||||
³ ³ ³ އ“ ª®¬¯ìîâ¥à
|
||||
³ ÚÄÄÄÄÄÄÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ ³ áâà ¨æë ¯® 16k
|
||||
³ ³ �®àâë ÃÄÄ>´ RAM_0 ÃÄÄÄ>´ ³ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
|
||||
³ ³ #7FFD,³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ÃÄÄÄ>ÂÄ>´ RAM_00 ³
|
||||
À>´ #1FFD ÃÄÄ>´ ÃÄÄÄ>´ ³ ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
|
||||
³ ³ ÃÄ Ä Ä Ä Ä Ä Ä ³ ³ ³ ÃÄ>´ RAM_01 ³
|
||||
³ ÃÄÄ>´ RAM_7 ÃÄÄÄ>´ ÀÄ>´ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
|
||||
³ ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³ ³ ³ ³
|
||||
³ ÃÄÄ>´ RAM_8 ÃÄ>ÂijÄÄÄ>´ ÃÄ Ä Ä Ä Ä Ä Ä ´
|
||||
³ ³ ÃÄ Ä Ä Ä Ä Ä Ä ´ ³ ³ ÀÄÄ´ RAM_7F ³
|
||||
³ ÃÄÄ>´ ÃÄ>´ ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
|
||||
³ ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³ ÀÄÄÄ>ÂÄ>´ RAM_80 ³
|
||||
³ ÃÄÄ>´ RAM_F ÃÄ>ÁÄ>¿ ³ ÃÄ Ä Ä Ä Ä Ä Ä ´
|
||||
ÀÄÄÄÄÄÄÄÙ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ³ ³ ³ ³
|
||||
‚¥è¨¥ ãáâனá⢠³ ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
|
||||
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ ÃÄ>´ RAM_FE ³
|
||||
�®àâë ÃÄÄÄÄ>´ ISA_1 Ã<ÄÄÄÄ´ ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
|
||||
ª®¬¯ìîâ¥à ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³ ÀÄ>´ RAM_FF ³
|
||||
ÃÄÄÄÄ>´ ISA_2 Ã<ÄÄÄÄ´ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
|
||||
³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³
|
||||
ÃÄÄÄÄ>´ HDD Ã<ÄÄÄÄ´
|
||||
³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³
|
||||
ÃÄÄÄÄ>´ OVER DEVICES Ã<ÄÄÄÄÙ
|
||||
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
|
||||
|
||||
�¨á㮪 2.
|
||||
|
||||
|
||||
|
||||
‚ ¤àã£¨å ª®ä¨£ãà æ¨ïå á奬 à á¯à¥¤¥«¥¨ï ¯ ¬ï⨠ã¯à®é ¥âáï ¤«ï
|
||||
®á¢®¡®¦¤¥¨ï à¥áãàᮢ ��‹Œ. Œ®£ãâ ®âáãâá⢮¢ âì ¯®àâë #1FFD ¨ #7FFD, â ª
|
||||
¦¥ ã¯à®é ¥âáï á奬 à ¡®âë á ãáâனá⢠¬¨, ®â®¡à ¦ ¥¬ë¬¨ ¯ ¬ïâì.
|
||||
|
||||
|
||||
‘奬 à á¯à¥¤¥«¥¨ï ¯®à⮢.
|
||||
|
||||
Sprinter ¨¬¥¥â ¤¢¥ ®¡®á®¡«¥ë¥ £àã¯¯ë ¯®à⮢. �¥à¢ ï £à㯯 , íâ®
|
||||
¢ãâ२¥ ¯®àâë ¯à®æ¥áá®à Z84C15, ¢â®à ï - ¢¥è¨¥ ¯®àâë. €¤à¥á æ¨ï
|
||||
¯®à⮢ ¯¥à¢®© £àã¯¯ë ¥ ¬®¦¥â ¡ëâì ¨§¬¥¥ , â ª ª ª í⨠¯®àâë ®¤®¬
|
||||
ªà¨áâ ««¥ á ¯à®æ¥áá®à®¬. ‚â®à ï £à㯯 ¯®£ª«îç ¥âáï ç¥à¥§ ��‹Œ ¨ ¨å ¤à¥á
|
||||
¬®£ãâ ¨§¬¥ïâìáï ª ª 㣮¤®, á ¥¤¨áâ¢¥ë¬ ãá«®¢¨¥¬, ¥¯¥à¥á¥ç¥¨ï á
|
||||
¤à¥á ¬¨ ¯¥à¢®© £à㯯ë.
|
||||
Ž â®¬ ª ª¨¥ ¯®àâë ¨¬¥îâáï ªà¨áâ ««¥ Z84C15 ¬®¦® ¯à®ç¨â âì ¢
|
||||
¤®ªã¬¥â 樨 ¯® íâ®¬ã ¯à®æ¥áá®àã ¨ §¤¥áì ï 㯮¬ïã ¥ª®â®àë¥ ¨§ ¨å. ޤ¨
|
||||
¨§ ¯®á«¥¤®¢ ⥫ìëå ¯®à⮢ ¨á¯®«ì§ã¥âáï ¤«ï ¢¢®¤ ¤ ëå á ªâ¨¢®© ¬ëè¨.
|
||||
ޤ¨ ¨§ ¯ à ««¥«ìëå ¨á¯®«ì§ã¥âáï ¤«ï ¢ë¢®¤ ¤ ëå, ¢â®à®© ¯ à ««¥«ìë©
|
||||
¯®àâ § ¢¥¤¥ë ᨣ «ë ¯à¥àë¢ ¨© ¨ § ¯à®á®¢ ¯àאַ£® ¤®áâ㯠ᮠ᫮⮢ ISA.
|
||||
� à ««¥«ìë© ¯®àâ ¯à®æ¥áá®à Z84C15 ãáâ஥ â ª¨¬ ®¡à §®¬, çâ® ¥¬
|
||||
¢®§¬®¦ ®à£ ¨§ æ¨ï ¯à¥àë¢ ¨© ¯® ᨣ « ¬ ¯à¨å®¤ï騬 ç¥à¥§ ¯ à ««¥«ìë©
|
||||
¯®àâ. ” ªâ¨ç¥áª¨ ¢â®à®© ¯ à ««¥«ìë© ¯®à⠨ᯮ«ì§ã¥âáï ª ª ª®â஫«¥à
|
||||
¯à¥àë¢ ¨©.
|
||||
‘奬 à á¯à¥¤¥«¥¨ï ¯®à⮢ ¢â®à®© £àã¯¯ë ¨¬¥¥â á¢®î ®á®¡¥®áâì.
|
||||
ƒ« ¢®© ¨¤¥¥© ¡ë«® ¯®«ã票¥ ¢®§¬®¦®á⨠¡ëáà® ¨§¬¥ïâì ª®ä¨£ãà æ¨î ¯®à⮢
|
||||
¡¥§ ¯¥à¥£à㧪¨ ��‹Œ. �â® ¤®á⨣ãâ® ¯ã⥬ ¯à¨¬¥¥¨ï ª àâë à á¯à¥¤¥«¥¨ï
|
||||
¯®à⮢, à ᯮ« £ î饩áï á¯¥æ¨ «ì®© áâà ¨æ¥ Ž‡“.
|
||||
�ਠ¯®ï¢«¥¨¨ 横« ®¡à é¥¨ï ª ¯®àâã á ç « ¯à®¨á室¨â ®¡à 饨¥
|
||||
ª އ“ ª àâë ¯®à⮢. ‚ ª à⥠¯®à⮢ § ¯¨á ® ª ª®© ¨¬¥® ¯®àâ ¯®¤ª«îç¥ ª
|
||||
¤ ®¬ã ¤à¥áã. „ «¥¥ ¯à®¨á室¨â ¢ãâà¥ïï ¤¥è¨äà æ¨ï ¯® ¡ ©âã ¨§ ª àâë
|
||||
¯®à⮢ ¨ ®¡à 饨¥ ª ¢ë¡à ®¬ã ¯®àâã. ‚ ०¨¬¥ ¥âãà¡® íâ® ¯à®¨á室¨â ¡¥§
|
||||
ª ª¨å «¨¡® § ¤¥à¦¥ª, ¢ ०¨¬¥ âãà¡® ¯à®æ¥áá®àã ¢ëáâ ¢«ï¥âáï ᨣ « WAIT ¢
|
||||
§ ¢¨á¨¬®á⨠®â ¥®¡å®¤¨¬®© ¤«¨ë 横« ®¡à é¥¨ï ª ¯®àâã.
|
||||
„«ï ¯®¤ª«îç¥¨ï ª ª ª®¬ã «¨¡® ¤à¥áã ¨«¨ ®âª«îç¥¨ï ®â ¥£® ª ª®£®
|
||||
«¨¡® ¯®àâ ¤®áâ â®ç® ®âªàëâì ª àâã ¯®à⮢ ¨ ¢¯¨á âì ¢ 㦮¥ ¬¥áâ® ®¤¨
|
||||
¡ ©â.
|
||||
‚ áâà ¨æ¥ ª àâë ¯®à⮢ ᮤ¥à¦¨âáï ç¥âëॠª àâë, ª®â®àë¥ ¬®£ãâ
|
||||
¯¥à¥ª«îç âìáï ç¥à¥§ á¨áâ¥¬ë© ¯®àâ. ’ ª¨¬ ®¡à §®¬ ¬®¦® ®áãé¥á⢨âì ¡ëáâ஥
|
||||
¯¥à¥ª«î票¥ ª®ä¨£ãà æ¨¨ ¯®à⮢, çâ® ¬®¦¥â ¡ëâì ¯®«¥§® ¯à¨ à ¡®â¥
|
||||
Spectrum-®¢áª¨å ¯à®£à ¬¬ ᮢ¬¥áâ® á® Sprinter-®¢áª¨¬ ¡¨®á®¬.
|
||||
|
||||
|
||||
Š®ªà¥âë¥ ¤à¥á ¯®à⮢, ¨á¯®«ì§ã¥¬ë¥ ¢ Sprinter-¥.
|
||||
|
||||
‡¤¥áì ï ¯à¨¢¥¤ã ¤à¥á æ¨î ¯®à⮢ ¤«ï ª®ä¨£ãà æ¨© Sprinter-1 ¨
|
||||
Sprinter-2. ‘à §ã ®â¬¥çã, çâ® í⨠¤à¥á «¥£ª® ¬®£ãâ ¡ëâì ¨§¬¥¥ë ¯à®á⮩
|
||||
¯à®£à ¬¬®©, ¢ á«ãç ¥ ¯®ï¢«¥¨ï â ª®© ¥®¡å®¤¨¬®áâ¨.
|
||||
|
||||
|
||||
‘â ¤ àâë¥ ¯®àâë.
|
||||
|
||||
#FE - RD_KBD - ¯®àâ ª« ¢¨ âãàë
|
||||
#FE - WR_BRD - ¯®àâ ¡®à¤îà
|
||||
#7FFD - ¯®àâ à áè¨à¥¨ï ZX-Spectrum 128k
|
||||
#1FFD - ¯®àâ à áè¨à¥¨ï Scorpion ZS-256
|
||||
#1F,#0F - RD_KEMPS - ¯®àâ ¤¦®©á⨪ . ‚ ª®ä¨£ãà æ¨¨ Sprinter-1 ¯®àâ
|
||||
#1F ¯¯ à â® ¯¥à¥ ¤à¥áã¥âáï ¯®àâ #0F
|
||||
#BFFD,#FFFD - AY-PORTS - ¯®àâë AY-á®¯à®æ¥áá®à (ZX-Spectrum-256/AY)
|
||||
|
||||
�¥ ᮢᥬ áâ ¤ àâë¥ ¯®àâë.
|
||||
|
||||
#FB,#4F - ¯®àâ COVOX- .
|
||||
|
||||
|
||||
„®¯®«¨â¥«ìë¥ 8-¡¨âë¥ ¯®àâë Sprinter- .
|
||||
|
||||
#82 - PAGE0 - áâà ¨æ Ž‡“, ¯®¤ª«îç ¥¬ ï ¢¬¥áâ® �‡“ ç¥à¥§ ¯®àâ #1FFD
|
||||
#A2 - PAGE1 - áâà ¨æ Ž‡“, ¯®¤ª«îç¥ ï ¯® ¤à¥áã #4000
|
||||
#C2 - PAGE2 - áâà ¨æ Ž‡“, ¯®¤ª«îç¥ ï ¯® ¤à¥áã #8000
|
||||
#E2 - PAGE2 - áâà ¨æ Ž‡“, ¯®¤ª«îç¥ ï ¯® ¤à¥áã #C000
|
||||
‡¤¥áì ¤® ®â¬¥â¨âì ®á®¡®, ç¥à¥§ ¯®àâ #E2 ¬®¦® ¨§¬¥¨âì «î¡ãî ¨§
|
||||
16-⨠áâà ¨æ ᪮௨®®¢áª®£® à á¯à¥¤¥«¥¨ï ¯ ¬ïâ¨.
|
||||
#89 - PORT_Y - ¢¥à⨪ «ì ï ª®®à¤¨ â â®çª¨ £à ä¨ç¥áª®¬ íªà ¥
|
||||
¨«¨ áâà ¨æ VIDEO-RAM ¤«ï ᯥªâà㬮¢áª®£® ०¨¬
|
||||
#C9 - RGMOD - ¯®àâ ०¨¬ íªà . �¥à¥ª«îç ¥â áâà ¨æë ०¨¬ íªà .
|
||||
#3C,#7C - SYS_PORT - á¨áâ¥¬ë© ¯®àâ âண âì ¥ ४®¬¥¤ã¥âáï
|
||||
|
||||
#10..#1F,#EE,#EF,#F0,#F1,#F4 - ¢ãâ२¥ ¯®àâë Z84C15
|
||||
|
||||
�®àâë áâà ¨æ Ž‡“ ®âªàëâë ª ª § ¯¨áì, â ª ¨ ç⥨¥. �â®
|
||||
¯®§¢®«ï¥â «¥£ª® ¢ë¯®«ïâì ¯à®£à ¬¬ë, ¨á¯®«ì§ãî騥 ¯¥à¥ª«î票¥ áâà ¨æ,
|
||||
§ ⥬ ¢®§¢à é âì í⨠áâà ¨æë § ¤. �à¨ à ¡®â¥ BIOS- ¢á¥ áâà ¨æë
|
||||
á®åà ïîâáï.
|
||||
|
||||
|
||||
„®¯®«¨â¥«ìë¥ 16-⨡¨âë¥ ¯®àâë Sprinter- .
|
||||
|
||||
#xx50..#xx55 - ¯®àâë HDD - ¨á¯®«ì§®¢ âì ¢¥è¨¬¨ ¯à®£à ¬¬ ¬¨ ¥
|
||||
४®¬¥¤ã¥âáï. ”ãªæ¨¨ à ¡®âë á HDD § ¯¨á ë ¢ �‡“.
|
||||
|
||||
|
||||
‘ªàëâë¥ ¯®àâë Sprinter- .
|
||||
|
||||
‘ªàëâ묨 ïîâáï ¯®àâë ª®â®àë¥ ¤®áâã¯ë ¢ ª®ªà¥âë© ¬®¬¥â
|
||||
¢à¥¬¥¨, ® ¬®£ãâ áâ âì ¤®áâã¯ë¬¨ ¯®á«¥ ¯à®¢¥¤¥¨ï ¨§¬¥¥¨© ¢ ª à⥠¯®à⮢.
|
||||
ˆå ¤à¥á ¥ 㪠§ë¢ îâáï, â ª ª ª ®¨ ¬®£ãâ ¡ëâì ¢ëáâ ¢«¥ë ¢ «î¡®¥ ¬¥áâ®.
|
||||
|
||||
�®àâ �‡“ BASIC48
|
||||
�®àâ �‡“ BASIC128
|
||||
�®àâ �‡“ TR-DOS
|
||||
�®àâ �‡“ EXPANSION
|
||||
�®àâ �‡“ SYSTEM
|
||||
|
||||
—¥à¥§ í⨠¯®àâë ¬®¦® ãáâ ®¢¨âì ®¢ë¥ ¯à®è¨¢ª¨ �‡“. „«ï í⮣® ¨å
|
||||
¤®áâ â®ç® § ¯¨á âì ¢ އ“ á ®¬¥à ¬¨ áâà ¨æ ¬¥ìè¥ #80 ¨ § ¯¨á âì ¢
|
||||
ᮮ⢥âáâ¢ãî騩 ¯®àâ ®¬¥à í⮩ áâà ¨æë. �ਠ⠪®¬ ¯®¤ª«î票¨ áâà ¨æë
|
||||
�⨠áâà ¨æë ¡ã¤ãâ § é¨é¥ë ®â § ¯¨á¨.
|
||||
— áâ¨ç® áªàëâ묨, â ª ¦¥ ïîâáï ¨ ¯®àâë #7FFD,#1FFD ¢ ®¡ë箬
|
||||
á®áâ®ï¨¨ ®¨ ¤®áâã¯ë ⮫쪮 § ¯¨áì, ® § 票ï, § ¯¨áë¢ ¥¬ë¥ ¢ íâ¨
|
||||
¯®àâë ¬®¦® ¯à®ç¨â âì, ®âªàë¢ á®®â¢¥âáâ¢ãî騥 ¯®àâë ç⥨¥.
|
||||
‚ ¤àã£¨å ª®ä¨£ãà æ¨ïå ¬®¦¥â ®âáãâá⢮¢ âì ç áâì ¯®à⮢ ¨«¨
|
||||
¯à¨áãâá⢮¢ âì ®¢ë¥ ¯®àâë.
|
||||
|
||||
|
||||
Žà£ ¨§ æ¨ï ¢¨¤¥®¯ ¬ï⨠¨ ¢¨¤¥®à¥¦¨¬®¢.
|
||||
|
||||
‚¨¤¥®-އ“ Sprinter- á®áâ ¢«ï¥â 256 ª¨«®¡ ©â. ‚ ¤ «ì¥©è¥¬
|
||||
¯à¥¤¯®« £ ¥âáï ¥£® à áè¨à¥¨¥ ¤® 512 ª¨«®¡ ©â, ¤«ï ¯®«ãç¥¨ï ¡®«¥¥
|
||||
¢ë᮪¨å ०¨¬®¢ à §à¥è¥¨ï.
|
||||
‚ ०¨¬¥ Spectrum-®¢áª®£® íªà ¢áï ®à£ ¨§ æ¨ï â ª ï ¦¥ ª ª ¢
|
||||
áâ ¤ à⮬ ZX-Spectrum. ‚ ®áâ «ìëå ०¨¬ å ¢ª«îç ¥âáï Sprinter-®¢áª¨©
|
||||
íªà , áâàãªâãà ª®â®à®£® ¢ª«îç ¥â ¢ á¥¡ï ‘¯¥ªâà㬮¢áª¨© íªà ª ª ç áâì
|
||||
á奬ë.
|
||||
|
||||
“áâனá⢮ íªà .
|
||||
|
||||
‚¥áì íªà à §¡¨â ª¢ ¤à âë, à §¬¥à®¬ ¢ áâ ¤ à⮥
|
||||
‘¯¥ªâà㬮¢áª®¥ § ª®¬¥áâ®. „«ï ª ¦¤®£® ª¢ ¤à â ãáâ ¢«¨¢ ¥âáï ᢮©
|
||||
ᮡáâ¢¥ë© à¥¦¨¬ ¢ë¢®¤ , â ª ¦¥ ¤à¥á ¢¨¤¥®-އ“, ®âªã¤ ¯à®¨§¢®¤¨âáï
|
||||
¢ë¢®¤ ¢ íâ®â ª¢ ¤à â.
|
||||
‚ ª ¦¤®¬ § ª®¬¥á⥠¬®¦¥â ¡ëâì § ¤ ᢮© ᮡáâ¢¥ë© à¥¦¨¬ ¢ë¢®¤ .
|
||||
‚ ¤ ë© ¬®¬¥â ¬®¦® ãáâ ¢«¨¢ âì â ª¨¥ ०¨¬ë:
|
||||
ZX-40 - ®¡ëçë© á¯¥ªâà㬮¢áª¨© ०¨¬ á ®¤¨¬ ¡¨â¯« ®¬ ¨
|
||||
®¤¨¬ âਡã⮬ § ª®¬¥áâ®.
|
||||
ZX-80 - �¥¦¨¬, ¯®å®¦¨© ᯥªâà㬮¢áª¨© ¯® áâ஥¨î
|
||||
ᨬ¢®«®¢, ® ¢ ª ¦¤®¬ § ª®¬¥á⥠®ª §ë¢ ¥âáï ¤¢ ᨬ¢®« , ᦠâë¥ ¯®
|
||||
£®à¨§®â «¨.
|
||||
G256-8 - ƒà ä¨ç¥áª¨© ०¨¬. Š¢ ¤à ⠯।áâ ¢«ï¥â ᮡ®© ¬ áᨢ 8x8
|
||||
â®ç¥ª. ‚ ª ¦¤®© â®çª¥ § ¤ ¥âáï ®¤¨ ¨§ 256-⨠梥⮢, ¢ë¡¨à ¥¬ëå ¨§ ¯ «¨âàë
|
||||
16 ¬¨««¨®®¢ 梥⮢. Š¢ ¤à âë ¬®£ãâ ¨¬¥âì à §ë¥ ¯ «¨âàë. ’ ª¨å ¯ «¨âà ¤«ï
|
||||
०¨¬ G256-8 - ç¥âëà¥.
|
||||
G16-16 - ƒà ä¨ç¥áª¨© ०¨¬. Š¢ ¤à ⠯।áâ ¢«ï¥â ᮡ®© ¬ áᨢ
|
||||
16x8 â®ç¥ª. Š ¦¤ ï â®çª ¨¬¥¥â ®¤¨ ¨§ 16 梥⮢, ¢ë¡¨à ¥¬ëå ¨§ ¯ «¨âàë 16
|
||||
¬¨««¨®®¢ 梥⮢. ’ ª ¦¥, ª ª ¨ G256-8 ¢ ª¢ ¤à ⥠¬®¦¥â ¡ëâì ãáâ ®¢«¥
|
||||
®¤ ¨§ 4-å ¯ «¨âà. � «¨âàë £à ä¨ç¥áª¨å ०¨¬®¢ ¯¥à¥á¥ª îâáï ¤àã£ á ¤à㣮¬.
|
||||
� «¨âà 16-â¨æ¢¥â®£® ०¨¬ íâ® ¯¥à¢ë¥ 16 梥⮢ ¨§ ¯ «¨âàë 256-â¨æ¢¥â®£®.
|
||||
BORDER - ‚ ª¢ ¤à ⠢뢮¤¨âáï æ¢¥â ¡®à¤¥à .
|
||||
BLANK - Š¢ ¤à â £ á¨âáï - áâ ®¢¨âáï ç¥àë¬.
|
||||
|
||||
Ž¡ê¥¬ ¤ ëå ०¨¬ ª¢ ¤à â á®áâ ¢«ï¥â 2 ¡ ©â ,
|
||||
¯®í⮬㠨§¬¥¥¨¥ ०¨¬ ¢á¥£® íªà ᢮¤¨âáï ª ¯¥à¥§ ¯¨á¨ 2.5 ª¨«®¡ ©â
|
||||
¤ ëå ¢ ¢¨¤¥®-އ“.
|
||||
�®¤®¡ ï áâàãªâãà íªà ¯®§¢®«ï¥â «¥£ª® ¯à®¨§¢®¤¨âì áªà®««¨£¨
|
||||
ª ª ¢á¥£®, â ª ¨ ç á⥩ íªà ¯® § ª®¬¥áâ ¬.
|
||||
|
||||
�¥¦¨¬ íªà ãáâ ¢«¨¢ ¥âáï ¯à¨ ¢ª«î票¨, â ª ¦¥ á ¯®¬®éìî
|
||||
äãªæ¨© ¡¨®á . ”ãªæ¨¨ ¡¨®á ¯®§¢®«ïîâ ®âªàë¢ âì íªà ¥ £à ä¨ç¥áª¨¥ ¨
|
||||
⥪áâ®¢ë¥ ®ª ¢ ã¦ëå ¬¥áâ å ¨ 㦮£® à §¬¥à .
|
||||
|
||||
‚ ¡¨®á¥ ¨¬¥îâáï äãªæ¨¨ ®âªàëâ¨ï £à ä¨ç¥áª®£® íªà ¢¥áì íªà
|
||||
320x256 â®ç¥ª. �®á«¥ ®âªàëâ¨ï í⮣® ०¨¬ íªà ¯à¥¤áâ ¢«ï¥â ᮡ®©.
|
||||
¡®à ¨§ 256-⨠«¨¨©, ¤«¨®© ¯® 320 ¡ ©â. ‘®á¥¤¨¥ â®çª¨ ¢ «¨¨¨ - íâ®
|
||||
á®á¥¤¨¥ ¡ ©âë. �¥à¥ª«î票¥ «¨¨© ¯à®¨§¢®¤¨âáï ç¥à¥§ PORT_Y, ¢ ª®â®à®¬
|
||||
ãáâ ¢«¨¢ ¥âáï ®¬¥à «¨¨¨, ¢ë¢®¤¨¬®© íªà . �®¬¥à «¨¨© áç¨â îâáï
|
||||
ᢥàåã íªà , ç¨ ï á ã«¥¢®©.
|
||||
„«ï ¢ë¢®¤ ¢ £à ä¨ç¥áª¨© íªà â ª ¦¥ âॡã¥âáï ®âªàëâì
|
||||
ᮮ⢥âáâ¢ãîéãî áâà ¨æã ®á®¢®£® އ“. ‚ í⮩ áâà ¨æ¥ ¡ã¤¥â ᮤ¥à¦ âìáï
|
||||
ª®¯¨ï ¢¨¤¥®¨§®¡à ¦¥¨ï.
|
||||
‚¨¤¥®-އ“ ï¥âáï ⥥¢ë¬ އ“, ¯®í⮬㠨ä®à¬ æ¨ï, 室ïé ïáï ¢
|
||||
®á®¢®¬ އ“, ¯®¤ ª®â®àë¬ å®¤¨âáï ¢¨¤¥®-އ“ ¥ ®¡ï§ â¥«ì® ¡ã¤¥â
|
||||
ᮢ¯ ¤ âì á ¨ä®à¬ 樥©, 室ï饩áï ¢ í⮬ ¢¨¤¥®-އ“. ‡ ¯¨áì ¢¨¤¥®-¤ ëå
|
||||
¬®¦¥â ¯à®¨§¢®¤¨âìáï ¨ ¡¥§ ¯¥à¥§ ¯¨á¨ ¤ ëå ¢ ®á¢®¬ އ“, çâ® ®ª §ë¢ ¥âáï
|
||||
¯®«¥§ë¬ ¯à¨ à ¡®â¥, ¯à¨¬¥à, á® á¯à ©â ¬¨. „«ï à ¡®âë á® á¯à ©â ¬¨ â ª ¦¥
|
||||
¯à¥¤ãᬮâॠ०¨¬ § ¯¨á¨ ¢ ¢¨¤¥®-އ“ á ¯à®§à çë¬ æ¢¥â®¬. ‚ í⮬ ०¨¬¥
|
||||
¨ä®à¬ æ¨ï, ¯¥à¥¤ ¢ ¥¬ ï ¢ ¢¨¤¥®-އ“ ¯à®¢¥àï¥âáï «¨ç¨¥ ¡ ©â #FF. …᫨
|
||||
íâ®â ¡ ©â ®¡ à㦨¢ ¥âáï, ⮠横« § ¯¨á¨ ¯à®¯ã᪠¥âáï ¨ íªà ¥ ¢ í⮬
|
||||
¬¥á⥠®áâ ¥âáï ⥠¤ ë¥, ª ª¨¥ ¡ë«¨ à ¥¥. ’ ª¨¬ ®¡à §®¬ íªà ¥ ¬®¦®
|
||||
¡ëáâà® ¯à®à¨á®¢ë¢ âì á¯à ©âë, ¯à¥¤áâ ¢«ïî騥 ¨§ á¥¡ï ¯àאַ㣮«ìë¥ ª à⨪¨
|
||||
á "¯à®§à ç묨" 梥⠬¨.
|
||||
|
||||
�ਬ¥à ¯à®£à ¬¬ë ¢ë¢®¤ ¯àאַ㣮«ì®© ª à⨪¨ íªà :
|
||||
|
||||
PAGE3 EQU #E2
|
||||
RGADR EQU #89
|
||||
|
||||
LD A,#50 ; áâà ¨æ £à ä¨ç¥áª®£® ¢¨¤¥®íªà
|
||||
OUT (PAGE3),A ; ãáâ ®¢¨âì ¢ PAGE3
|
||||
LD HL,Pucture ; ¤à¥á ª à⨪¨ (�àï¬ë¥ „ ë¥)
|
||||
LD DE,#C040+HorPlace ; ¯®«®¦¥¨¥ ª à⨪¨ íªà ¥ ¯® £®à¨§®â «¨
|
||||
LD A,VerPlace ; ¯®«®¦¥¨¥ ª à⨪¨ íªà ¥ ¯® ¢¥à⨪ «¨
|
||||
OUT (RGADR),A
|
||||
LD B,VerSize ; ¢ëá®â ª à⨪¨
|
||||
LOOP: PUSH DE ; § ¯®¬¨âì ¯®«®¦¥¨¥ «¨¨¨
|
||||
PUSH BC ; § ¯®¬¨âì áç¥â稪 ¢ëá®âë
|
||||
LD BC,HorSize ; ¤«¨ ª à⨪¨
|
||||
LDIR ; ª®¯¨à®¢ âì «¨¨î
|
||||
POP BC
|
||||
POP DE
|
||||
INC A ; á«¥¤ãîé ï ª®®à¤¨ â ¯® Y
|
||||
OUT (RGADR),A
|
||||
DJNZ LOOP ; ¯®¢â®àïâì 㦮¥ ª®«¨ç¥á⢮ à §
|
||||
|
||||
“¯à ¢«¥¨¥ ०¨¬®¬ ¢ë¢®¤ íªà (¢ª«î票¥ ¢ë¢®¤ á ¯à®§à ç묨
|
||||
梥⠬¨, ®âª«î票¥ ª®¯¨à®¢ ¨ï ¢ ®á®¢®¥ އ“) ®áãé¥á⢫ï¥âáï ç¥à¥§
|
||||
¬« ¤è¨¥ ¡¨âë ¯®àâ áâà ¨æë £à ä¨ç¥áª®£® íªà .
|
||||
|
||||
|
||||
€ªá¥«¥à â®à ®¯¥à 権 á Ž‡“.
|
||||
|
||||
€ªá¥«¥à â®à ®¯¥à 権 á Ž‡“ ¯à¥¤ § ç¥ ¤«ï ãáª®à¥¨ï ®¯¥à 権
|
||||
¯® ¯¥à¥á뫪¥ ¤ ëå ¨«¨ ¯® § ¯®«¥¨î އ“ ®¤¨¬ ¡ ©â®¬. €ªá¥«¥à â®à
|
||||
¯à¨áãâáâ¢ã¥â ¢ ç¨áâ® Sprinter-®¢áª¨å ª®ä¨£ãà æ¨ïå ¨ ¯®í⮬㠨ª ª ¥
|
||||
¬¥è ¥â à ¡®â¥ ®¡ëçëå Spectrum-®¢áª¨å ¯à®£à ¬¬.
|
||||
Žá®¢®© ªá¥«¥à â®à ï¥âáï ¡ëáâ஥ ¢ãâ॥¥ އ“ ¢ ��‹Œ.
|
||||
ޝ¥à 樨 ¯® ¯¥à¥á뫪¥ ¤ ëå ¯à®¨§¢®¤ïâáï ¯ã⥬ § ¯¨á¨ ¡«®ª ¤ ëå ¢ íâ®
|
||||
¢ãâ॥¥ އ“, § ⥬ ª®¯¨à®¢ ¨¨ ¥£® ¢ 㦮¥ ¬¥áâ® ¯ ¬ï⨠¨§ í⮣® އ“.
|
||||
�®á«¥ ®¤®© § ¯¨á¨ ª®¯¨à®¢ ¨¥ ¬®¦¥â ¯à®¨§¢®¤¨âìáï ¥áª®«ìª® à § ¨ â ª¨¬
|
||||
®¡à §®¬ ¬®¦® ¯à®¨§¢®¤¨âì § ¯®«¥¨¥ íªà ⥪áâãà ¬¨.
|
||||
„«ï § ¯®«¥¨ï íªà ®¤¨¬ 梥⮬ ¨á¯®«ì§ã¥âáï ¤à㣮© ०¨¬
|
||||
ªá¥«¥à â®à . ‚ ¥¬ ¢¬¥áâ® ª®¯¨à㥬®£® ¡«®ª ¤ ëå ¨§ ¢ãâ॥£® އ“
|
||||
¯à®¨§¢®¤¨âáï § ¯¨áì ¤ ëå á è¨ë ¯à®æ¥áá®à , ª®â®àë¥ ¢ íâ®â ¬®¬¥â ¥
|
||||
¨§¬¥ïîâáï.
|
||||
�«®ª ¤ ëå, § ¯¨áë¢ ¥¬ë© ¢ އ“ ªá¥«¥à â®à ¬®¦¥â ¨¬¥âì à §«¨çãî
|
||||
¤«¨ã ¨§ ¤¨ ¯ §® 1..256 ¡ ©â.
|
||||
“¯à ¢«¥¨¥ ªá¥«¥à â®à®¬ ¯à®¨§¢®¤¨âáï ¥¯®á।á⢥® ¨§ ¯à®£à ¬¬ë.
|
||||
„«ï í⮣® ¨§¯®«ì§ãîâáï ª®¬ ¤ë ¯à®æ¥áá®à , ª®â®àë¥ ä ªâ¨ç¥áª¨ ïîâáï
|
||||
®¯¥à æ¨ï¬¨ ⨯ NOP.
|
||||
�â® ª®¬ ¤ë LD A,A; LD B,B; LD C,C; LD D,D; LD E,E; LD H,H, LD L,L
|
||||
� § 票¥ ª®¬ ¤ á«¥¤ãî饥:
|
||||
LD B,B - ¢ëª«îç¨âì ªá¥«¥â à®à.
|
||||
LD D,D - ¢ª«îç¨âì ªá¥«¥à â®à ¢ ०¨¬ ¯à¨¥¬ ¡ ©â à §¬¥à ¡«®ª
|
||||
¤ «¥¥ á«¥¤ã¥â ª®¬ ¤ ⨯ LD A,dat, £¤¥ dat ¨ ¡ã¤¥â ®¢ë¬
|
||||
à §¬¥à®¬ ¡«®ª . …᫨ à §¬¥à ¡«®ª ¡ë« ãáâ ®¢«¥ à ¥¥,
|
||||
¥£® ¬®¦® ¥ ãáâ ¢«¨¢ âì.
|
||||
LD C,C - ޝ¥à æ¨ï Fill - § ¯®«¥¨¥ ®¤¨¬ ¡ ©â®¬. �®á«¥¤ãîé ï
|
||||
ª®¬ ¤ ⨯ LD (HL),A ¯à¨¢¥¤¥â ª § ¯®«¥¨î 㪠§ ®£®
|
||||
à ¥¥ ª®«¨ç¥á⢠¡ ©â § 票¥¬ A
|
||||
LD E,E - ޝ¥à æ¨ï Fill ¤«ï £à ä¨ç¥áª®£® íªà - § ¯®«¥¨¥
|
||||
¢¥à⨪ «ìëå «¨¨©.
|
||||
LD H,H - rezerved
|
||||
LD L,L - ª®¯¨à®¢ ¨¥ ¡«®ª . �®á«¥¤ãîé ï ª®¬ ¤ ⨯ LD A,(HL)
|
||||
¯à¨¢¥¤¥â ª § ¯®«¥¨î އ“ ªá¥«¥à â®à ¤ 묨 ¨§ ¤à¥á (HL),
|
||||
ª®¬ ¤ ⨯ LD (DE),A ¯à¨¢¥¤¥â ª ¯¥à¥§ ¯¨á¨ ¤ ëå ¨§ އ“
|
||||
ªá¥«¥à â®à ¢ ®á®¢®¥ ¨«¨ ¢¨¤¥®-އ“.
|
||||
LD A,A - ª®¯¨à®¢ ¨¥ ¡«®ª ¤«ï £à ä¨ç¥áª®£® íªà ¯®¤®¡ ª®¬ ¤¥
|
||||
LD L,L, ® à ¡®â ¥â á ¢¥à⨪ «ì묨 «¨¨ï¬¨ íªà .
|
||||
|
||||
�ਬ¥à ¨á¯®«ì§®¢ ¨ï ªá¥«¥à â®à :
|
||||
|
||||
; ‘ç¨â ¥¬, çâ® íªà ï áâà ¨æ 㦥 ®âªàëâ ¯® ¤à¥áã #C000
|
||||
LD HL,#C040 ; ¤à¥á ç « «¨¨¨ ¯¥à¢®£® íªà
|
||||
LD DE,#C180 ; ¤à¥á ç « «¨¨¨ ¢â®à®£® íªà
|
||||
LD BC,#140 ; ¤«¨ íªà ¯® £®à¨§®â «¨
|
||||
DI ; § ¯à¥â¨âì ¯à¥àë¢ ¨ï ¤«ï à ¡®âë á ªá¥«¥à â®à®¬
|
||||
LD D,D ; ¢ª«îç¨âì ªá¥«¥à â®à ãáâ ®¢ªã à §¬¥à ¡«®ª
|
||||
LD A,0 ; ãáâ ®¢¨âì à §¬¥à ¡«®ª - 256 ¡ ©â
|
||||
LD A,A ; ãáâ ®¢¨âì ªá¥«¥à â®à ª®¯¨à®¢ ¨¥
|
||||
; ¢¥à⨪ «ìëå «¨¨©.
|
||||
LDIR ; ª®¯¨à®¢ âì !
|
||||
LD B,B ; ¢ëª«îç¨âì ªá¥«¥à â®à
|
||||
EI ; ¢ª«îç¨âì ¯à¥àë¢ ¨ï
|
||||
|
||||
�â®â ®â१®ª ¯à®£à ¬¬ë ¯à®¨§¢¥¤¥â ª®¯¨à®¢ ¨¥ ¢á¥£® íªà á ®¤®£®
|
||||
íªà ¤à㣮©. ‚à¥¬ï ¥£® ¨á¯®«¥¨ï á®áâ ¢«ï¥â ¯à¨¬¥à® 1.2 ¨â .
|
||||
|
||||
„®¯®«¨â¥«ìë¥ äãªæ¨¨ ªá¥«¥à â®à ¯®ï¢«ïî騥áï ¢ ª®ä¨£ãà æ¨¨
|
||||
Sprinter-3 à ¡®â îâ ¯®¤®¡ë¬ ¦¥ ®¡à §®¬. „«ï ¢ë¯®«¥¨ï «®£¨ç¥áª¨å äãªæ¨©
|
||||
¨á¯®«ì§ãîâáï ª®¬ ¤ë XOR (HL); OR (HL); AND (HL).
|
||||
|
||||
�ਬ¥à ªá®àª¨ ¡«®ª ¢ 256 ¡ ©â.
|
||||
|
||||
LD HL,ADRES_1
|
||||
LD DE,XOR_DAT
|
||||
DI
|
||||
LD D,D
|
||||
LD A,0 ; ç¨á«® ¡ ©â, ª®â®àë¥ ¤® ¯à®ªá®à¨âì
|
||||
LD L,L
|
||||
LD A,(DE) ; ‚§ïâì ¡«®ª ¢ އ“ ªá¥«¥à â®à
|
||||
XOR (HL) ; ¯à®¨§¢¥á⨠®¯¥à æ¨î XOR á ¤ 묨 ªá¥«¥à â®à
|
||||
LD (HL),A ; § ¯®¬¨âì ¢ އ“ १ã«ìâ â ®¯¥à 樨
|
||||
LD B,B
|
||||
EI
|
||||
|
||||
‘ª®à®áâì à ¡®âë ªá¥«¥à â®à ®£à ¨ç¨¢ ¥âáï ⮫쪮 䨧¨ç¥áª®©
|
||||
᪮à®áâìî à ¡®âë ®á®¢®£® އ“. Ž¯à¥¤¥«¨âì ¢à¥¬ï à ¡®âë ª®¬ ¤ë á
|
||||
ªá¥«¥à â®à®¬ ¬®¦® ¯® â ª®© ¯à¨¬¥à®© ä®à¬ã«¥:
|
||||
|
||||
‚६ï à ¡®âë = ¢à¥¬ï à ¡®âë ª®¬ ¤ë ¡¥§ ªá¥«¥à â®à + ¢à¥¬ï
|
||||
à ¡®âë ªá¥«¥à â®à
|
||||
‚६ï à ¡®âë ªá¥«¥à â®à = ç¨á«® ¯¥à¥áë« ¥¬ëå ¡ ©â /7000000 (ᥪã¤)
|
||||
|
||||
Žâª«î票¥ ¯à¥àë¢ ¨© ¢® ¢à¥¬ï à ¡®âë ªá¥«¥à â®à ¥®¡å®¤¨¬®, â ª
|
||||
ª ª ¢ íâ®â ¬®¬¥â ç áâ¨ç® ¬¥ï¥âáï á¨á⥬ ª®¬ ¤ ¯à®æ¥áá®à ¨ ¯à®£à ¬¬
|
||||
¯à¥àë¢ ¨¨ ¥ ᬮ¦¥â à ¡®â âì ®à¬ «ì®.
|
||||
|
||||
|
||||
‡ ª«î票¥.
|
||||
|
||||
� ¡®â ¤ Sprinter-®¬ ¯à®¤®«¦ ¥âáï. ‘®¢¥àè¥áâ¢ã¥âáï ¦¥«¥§® ¨
|
||||
¡¨®á. �¨è¥âáï á®äâ, ¯®¤¤¥à¦¨¢ î騩 à áè¨à¥ë¥ ०¨¬ë à ¡®âë ª®¬¯ìîâ¥à .
|
||||
|
||||
�® ¢á¥¬ ª®¬¬¥àç¥áª¨¬ ¢®¯à®á ¬ á¢ï§ ë¬ á ¯à¨®¡à¥â¥¨¥¬ ª®¬¯ìîâ¥à
|
||||
¬®¦® ®¡à é âìáï ¢ ä¨à¬ã "�¥â¥àá":
|
||||
|
||||
Adress: ‘ ªâ-�¥â¥à¡ãà£, ã«. ‚®ááâ ¨ï, ¤. 35, ®ä. 31.
|
||||
Phone: (812)-327-35-31
|
||||
E-mail: peters@atlant.ru
|
||||
|
||||
�® â¥å¨ç¥áª¨¬ ¢®¯à®á ¬ ®¡à é âìáï ª® ¬¥:
|
||||
|
||||
Fido: Ivan Mak (2:5030/529.24)
|
||||
E-mail: ivan_mak@yahoo.com (¢à¥¬¥® § ªàëâ)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user