DonNews #17
30 апреля 2002
  Софт  

Проект - новая оболочка/Опереционная Система SinOS от Disabler: примеры программирования.

<b>Проект</b> - новая оболочка/Опереционная Система SinOS от Disabler: примеры программирования.



                                           (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)


┌────────────────────────────────────────────────────────────┌─┐ 
│ ┌█▓▒░  ── ─── ───░▒▓██▓▒░─── ─── ──  ░▒▓█┘ │ 
└─└────────────────────────────────────────────────────────────┘ 




Другие статьи номера:

Вступление - Disabler закончил писать новую оболочку к DonNews.

Гости - в гостях Ростовская группа Disabler Production LabAratory.

СС'01 report - отчет Joker/OHG с питерского фестиваля компьютерного искусства Chaos Construction 2001.

СС'01 results - результаты питерского фестиваля компьютерного искусства Chaos Construction 2001.

Глюки! - о различных глюках ассемблера XAS'a. "железные" глюки: порта клавиатуры, kempston joystick'а, музыкального процессора, кэша на пентагоне, дисководов.

Юмор - пара-тройка прикольных фишек и анекдотов.

Проект - новая оболочка/Опереционная Система SinOS от Disabler: примеры программирования.

Systemka - описание Shuffle Commander'a от Disabler/DPL.

Служба 911 - Как пройти игру "ОПЕРАЦИЯ Р.Р."

Кодинг - совмещение визуальных эффектов с дигитальной музыкой.

Железо - подключение к спектруму статической памяти (кэша).

Трубка - скрытые опции моделей сотовых телефонов Ericsson LX677, DH618, DH668, DF688.

Rec.lame - Реклама на страницах газеты публикуется бесплатно.

В номер - конвертор графики в Alone Coder Editor!!!

Credits - авторы газеты.

Послесловие - что именно меня раздражает в ZX.


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Железо - X-Trade FAQ. Ответы на наиболее часто задаваемые вопросы по GS и XTR-модему.
Телефон Деда Мороза - Истории дядюшки Кошмара.
Юмор - От Дарвина до Антонова.
Раскрутка - история создателей игры Star Glider 2 - Steven dunn/Software developement and design.
Последнее слово в номер - "еще раз призываю писать в генз статьи".

В этот день...   20 апреля