(c) 2oo2 Disabler/DPL
╓───╥──────────────────────────────────────────────────────────┐
╙ ╫ ╜
Disabler Production LabAratory
Presents:
┌──────────────────────────────────────────────────────────────┐
`│-1-┌─────────────────────────────┐ ░░▒▒▓▓██ Введение ██▓▓▒▒░░ │
└───┘ └────────────────────────────┘
Хаюшки, люди! С вами снова Disabler и очередная программа от
DPL. На этот раз Вам предоставлена возможность опробывать в
работе новую оболочку для написания программ. По своей структуре
эта система похожа на MustDie'95. Структура программ так-же
очень похожа, т.е. вы создаете окно с текстом опций или подска-
зок, а потом описываете реакцию на выбор конкретной опции.
┌──────────────────────────────────────────────────────────────┐
`│-2-┌─────────────────┐ ░░▒▒▓▓██ Системные Требования ██▓▓▒▒░░ │
└───┘ └────────────────────────────────────────┘
Для запуска системы надо:
Обязательно:
■ 128kb основной памяти (Ram)
■ 16kb дополнительной памяти (Cashe)
■ TR-Dos 5.03 с командой IN A,(#1F)
Желательно:
■ System SetUP v2.04
■ Kempston Mouse
■ 32kb дополнительной памяти (Cashe)
Идеально:
■ 1024kb static ram + turbo 14mHz no wait!
■ 256kb дополнительной памяти (Cashe)
┌──────────────────────────────────────────────────────────────┐
`│-3-┌───────────────────┐ ░░▒▒▓▓██ Структура Программ ██▓▓▒▒░░ │
└───┘ └──────────────────────────────────────┘
Программа для SinOS состоит из трех основных частей:
1. Описатель файла,состоящий из ID-String'а принадлежности файла
к системе, названия программы, адреса основных запусков.
2. Описатели окон.
3. Набор реакций на выбор.
;---------------------------------------------------------------
;████████████████ Пример файла для SinOS v1.00 █████████████████
;---------------------------------------------------------------
;██████████ (c) 2001 Disabler Production Labaratory ████████████
;---------------------------------------------------------------
DB "SinOS v1.00"; ID-String файла
DB "Название проги!!"; угадайте...
DW адрес_окна_install
DW адрес_окна_second_open
;-------- Формат описателя окна --------
DB Y_координата_окна,X_координата_окна
DB размер_окна_по_X,размер_окна_по_y
DB "Заголовок_окна",1; <-- HA CЛEД.CTPOKУ
DB 1; <-- HA CЛEД.CTPOKУ
DB "Tекст опции #1",1
DB "Tекст опции #2",1
; .... ....................
DB "Tекст опции #N"
DB 0; <-- KOHEЦ OПИCATEЛEЙ OПЦИЙ
DW Адрес_процедуры_'open'
DB y_коорд_полоски_#1,x_коорд_полоски_#1
DB длина_полоски_выбора_опции_#1
DB маркер_опции_#1
DW адрес_#1
DB y_коорд_полоски_#2,x_коорд_полоски_#2
DB длина_полоски_выбора_опции_#2
DB маркер_опции_#2
DW адрес_#2
; .... .................
DB y_коорд_полоски_#N,x_коорд_полоски_#N
DB длина_полоски_выбора_опции_#N
DB маркер_опции_#N
DW адрес_#N
DB #ff; <-- Kонец описателей выбора
DB маркер_'close'
DW адрес_'close'
FAQ:
Q: Что такое >>> адрес_окна_install <<< ???
A: Адрес окна, которое открывается только один раз, при
начальной загрузке программы.
Q: Что такое >>> адрес_окна_second_open <<< ???
A: Адрес первого (главного) окна программы.
Q: Что такое >>> адрес_процедуры_'open' <<< ???
A: Это адрес процедуры, которая будет вызвана сразу после
открытия окна. Eсли она не нужна, то вместо нее можно
написать TO_RET, где TO_RET - метка на команду RET, т.е.
TO_RET RET
Q: Что такое >>> маркер_опции_#N,адрес_#N <<< ???
A: Это маркер определяющий реакцию на выбор опции.
#00 - Oткрыть следующее окно 'адрес_#N'.
#01 - 3акрыть текущее окно и вернуться к окну 'AДPEC_#N'
на обновляя его.
#02 - 3акрыть текущее и открыть новое окно 'адрес_#N'
#FE - Bызвать процедуру 'адрес_#N'
Q: Что такое >>> маркер_'close', адрес_'close' <<< ???
A: Это аналог маркера реакции на выбор, но срабатывает при про-
махе, т.е. когда не выбрана ни одна из опции и нажимается
кнопка выбора.
; -- Пример простой программы для SinOS ---
DB "SinOS v1.00"
DB "Test Program ..."
DW w_inst
DW w_main
w_inst DB 3,3,5,17,#57
DB " Program Installer",1,1
DB "Program has installed",1
DB " -----> Yep <-----",0
DW install
DB 6,3,18,2
DW w_main
DB #ff,#fe
DW to_ret
w_main DB 3,3,5,17,#47
DB " SinOS Test Program!",1,1
DB "Reinstall Program",1
DB "Exit to SinOS",0
DW to_ret
DB 5,3,18,2
DW w_inst
DB 6,3,18,1
p_exit DW 0
DB #ff,#fe
DW to_ret
install LD HL,(23773)
LD (p_exit),HL
to_ret RET
;------------------------------------
А теперь немного полезной информации, необходимой для
написания программ под SinOS:
■ Все реакции на выбор заканчиваются командой RET
■ Программы ассемблируются под адрес #C000 (49152)
■ Размер программы #4000 (16384) байт
■ Программы загружаются в страницы #14, #16, #17
■ Желательно в Cashe попадать по кнопке Reset
■ Если нажать Reset+Symbol Shift, то SinOS откроет окно, адрес
которого указан по адресу 23728 (реакция на NMI)
■ Если нажать Reset+Any Key (кроме SS, Enter) можно попасть во
вторую половинку Cashe, если у вас его 32kb.
■ При загрузке программы по команде RST #10 доступен керналь.
Доступ к керналю такой:
RST #10
DB функция
Вам доступны следующие функции:
cls EQU 00 - очистка экрана без изменения атрибутов
IN: -
OUT: -
fill EQU 01 - заливка экрана цветом
IN: A - цвет
OUT: -
paint EQU 02 - заполнение памяти одним байтом
IN: HL - адрес начала
BC - размер блока-1
A - байт заполнения
OUT: -
fone EQU 03 - генерация фоновой картинки
IN: -
OUT: -
window EQU 04 - открытие окна без сохранения фона
IN: HL - описатель окна
OUT: -
window2 EQU 05 - открытие окна с сохранением фона
IN: HL - описатель окна
OUT: -
pop_win EQU 06 - востановление фона под окном
IN: -
OUT: -
pop_all EQU 07 - востановление фона под всеми окнами
IN: -
OUT: -
print EQU 08 - печать строки, 00..0D - конец строки
IN: HL - адрес текста
DE - адрес на экране
OUT: -
xprint EQU 09 - печать текста, 00 - конец текста
01..0D - конец строки
IN: HL - адрес текста
DE - адрес на экране
OUT: -
down_hl EQU 10 - пересчет адреса в экране ниже на строку
IN: HL - адрес на экране
OUT: HL - пересчитанный адрес
down_de EQU 11 - аналог down_hl, но для de
IN: DE - адрес на экране
OUT: DE - пересчитанный адрес
de_adr EQU 12 - расчет адреса в экране
IN: DE - координаты в знакоместах
OUT: HL - адрес на экране
DE - адрес атрибутов
cancel EQU 13 - вызов окна по принципу нажатия на выбор
IN: HL - адрес окна
A - маркер 'open'
OUT: -
last_hl EQU 14 - инверсия текущей полосы выбора
IN: -
OUT: -
fl_hl EQU 15 - изменение цвета заголовка окна
IN: A - цвет заголовка
OUT: -
get EQU 16 - сохранение фона под курсором
IN: -
OUT: -
put EQU 17 - прорисовка курсора
IN: -
OUT: -
rest EQU 18 - востановление фона под курсором
IN: -
OUT: -
read EQU 19 - чтение секторов
IN: HL - адрес
DE - дорожка/сектор
B - количество секторов
OUT: -
write EQU 20 - запись секторов
IN: HL - адрес
DE - дорожка/сектор
B - количество секторов
OUT: -
get_xy EQU 21 - координаты курсора в пикселях
IN: -
OUT: HL - координаты курсора
┌──────────────────────────────────────────────────────────────┐
`│-4-┌─────────────────────────┐ ░░▒▒▓▓██ Автор, Права ██▓▓▒▒░░ │
└───┘ └────────────────────────────────┘
Author of SinOS v1.00: .................. Disabler/DPL
Copyright: ............ Disabler Production Labaratory
Distribute: ................................ No Limits
┌──────────────────────────────────────────────────────────────┐
`│-5-┌──────────────────────────┐ ░░▒▒▓▓██ SetUP v2.04 ██▓▓▒▒░░ │
└───┘ └───────────────────────────────┘
Вы, наверное, уже задали вопрос, что такое этот SetUP ???
Так вот, это такая штука, которая позволяет настроить аппаратные
характеристики вашего компьютера программным путем. А теперь
более подробно о том, что может SetUP:
1. Выбор типов ПЗУ при условии, что Basic и Dos находятся в раз-
ных ПЗУ. Вам доступно четыре основных ПЗУ (с бейсиками) и две с
Dos'ом. Лично у меня так:
┌─────────┬───────────────────┬────────────────┐
│ Номер │ Нулевая │ Первая │
│ ПЗУ │ половина │ Половина │
├─────────┼───────────────────┼────────────────┤
│ #00 │ Quick Commander │ Basic'2000 │
│ #01 │ NeOS v1.0 │ Basic'2000 │
│ #02 │ 128 Basic/91y │ 48 Basic/91y │
│ #03 │ 128 Basic/82y │ 48 Basic/82y │
├─────────┼───────────────────┴────────────────┤
│ DOS#0 │ TR-Dos 5.03 for Honey Commander │
│ DOS#1 │ TR-Dos 5.04 turbo │
└─────────┴────────────────────────────────────┘
2. Переключать до восьми выключателей. Семь из них поддерживает
SinOS и один резервный. У меня сделано так:
Lock 48kb rom.........Nop - отключить нулевой банк ПЗУ
Emulate rom by cashe..Nop - эмуляция нулевого банка ПЗУ при
помощи нулевого банка Cashe
Write to cashe........Yep - возможность записи в Cashe
Entry to cashe by.....NMI - кнопка активизации Cashe (NMI/Reset)
Set black border......Yep - принудительная установка BORDER 0
Devided bright........Nop - изменение бита для Flash на яркость
бумаги (раздельная яркость для Ink и
Paper)
Tactes per line.......228 - размер линии экрана по горизонтали в
тактах (228/232)
■ SetUP включается при Reset'е в Cashe.
■ Выключается при записи в порт #FFFF или при выключении Cashe
■ Порт настроек - #FE77
■ Порт ПЗУ - #FF77, причем есть особенность: младшие четыре бита
выбирают одно из четырех ПЗУ, т.е. ноль разрешает выборку, при
этом остальные биты должны быть равными единице. Четвертый бит
указывают тип ПЗУ Dos.
┌──────────────────────────────────────────────────────────────┐
`│-6-┌──────────────────┐ ░░▒▒▓▓██ Контактные телефоны ██▓▓▒▒░░ │
└───┘ └───────────────────────────────────────┘
Phones:
8 (928) 91-33-007 Андрей (Disabler)
8 (903) 40-22-186 Андрей (Disabler)
8 (863) 2-404-905 Миша (Mick)
┌────────────────────────────────────────────────────────────┌─┐
│ ┌█▓▒░ ─ ─ ─ ── ─── ───░▒▓██▓▒░─── ─── ── ─ ─ ─ ░▒▓█┘ │
└─└────────────────────────────────────────────────────────────┘