Odyssey paper #01
29 ноября 1998

IS-DOS - процедура экранной заставки для IS-DOS. Процедуры проявления экрана.

IS-DOS
 ______

 (C)1998 M.M.A aka UnBELIEVER/XTM
  
         IS-DOS с картинками !!?



   В незапамятно давние времена, читывал я
какой-то журнал посвященный pC. Журнал был
направлен  на юзеров и из страницы в стра-
ницу,  красной  нитью  шла тема новогодних
подарков - купите это, купите то, best по-
дарок на Новый Год, и т.д. Среди продaвае-
мого хлама был какой то CD диск, купив ко-
торый,  "вы непременно освоите современные
технологии  мультимедиа,не вставая из теп-
лого кресла". В качестве примера "освоения
мультимедиа-технологий", предлагалось  ра-
зукрасить свой WINDOWS, используя картинки
записанные на диске, в соответствии с нас-
туающим  Новым Годом. Чуть ниже приводился
рабочий  экран wIN'95 где толпой резвились
снеговики,  Деды  Морозы  и  прочие зимние
аттрибуты.

   "Вот зажравшиеся капиталисты!", - поду-
мал  я  тогда. Это что же получаеться, они
могут разукрасить свой windows к празднику
всякими там картинками, а мы должны догни-
вать  на  фоне  синих панелей одообразного
IS-DOS'а???? Нет, непорядок!

   Именно  так  и зародился тот самый файл
start.com, который вы можете найти на дис-
ке с журналом. Скопировав его на загрузоч-
ный IS-DOS диск, назвав start.com и пропи-
сав  его  в  конце autoexec.bat, вы можете
смело  перегружать  систему и наслаждаться
rulez'ом.  Ну  а  тем, кому интересно, как
все это работает, посвящена излагаемая ни-
же информация.

   Не  имея никакого представления об вут-
реннем  устройстве is-dos'а и уж тем более
не  зная  всех  тонкостей программирования
под  него,  я действовал чисто интуитивно.
Адрес ассемблирования был взят по аналогии
с  первым попавшимся под руку .com файлом,
все  регистры  сохранялись  на стеке перед
стартом  и извлекались обратно при возвра-
щении.   Как   ни   странно,  но  вся  эта
конструкция заработала.

   Однако незнание is-dos'а дало свои пло-
ды:  если  при первом запуске все проходит
гладко,  то  при попытке запуска start.com
из  уже  загруженной is-dos приводят к не-
большим  глюкам.  Для самой системы это не
страшно  - могу дать гарантии, что сея на-
веска на is-dos не подпортит данные на ва-
шем диске.

   Ниже  приведен исходник start.com с ко-
ментариями по тексту. Исходник был написан
в ALASM'е и по сему используються спецефи-
ческие  для этого редактора команды DISP и
INCLUDE.  Три  эффекта гашения экрана были
взяты  мной из ZX-РЕВЮ (давно это было - с
трудом  вспоминаю).  Именно  по этому я не
стал приводить на них комментарии.Да и са-
ми  эффекты  очистки вы можете смело заме-
нить на свои.

     Разбирайтесь и наслаждайтесь....

        ORG     30000
        DISP    24000


        XOR     A
        OUT     (#FE),A
        PUSH    AF     ;Сохраняем
        PUSH    BC     ;  абсолютно все
        PUSH    DE     ;    регистры на
        PUSH    HL     ;     стеке
        EXX            ;   исключительно
        PUSH    HL     ;     на случай
        PUSH    DE     ;    атомной
        PUSH    BC     ;   войны!
        EX      AF,AF' ;
        PUSH    AF     ;
        PUSH    IX     ;
        PUSH    IY     ;


        CALL    EFFECT ; Вызываем САМУ
                       ; процедуру.....


        POP     IY     ; Ну а раз мы
        POP     IX     ;  сохранили на
        POP     AF     ;   стеке все
        EX      AF,AF' ;    регистры,
        POP     BC     ;    то не грех
        POP     DE     ;   их оттуда
        POP     HL     ;  и извлечь перед
        EXX            ; выходом!
        POP     HL     ;
        POP     DE     ;
        POP     BC     ;
        POP     AF     ;
        RET


EFFECT  DI               ;
        LD      HL,#5800 ;"Зачерняем"
        LD      DE,#5801 ;   экран
        LD      BC,767   ;
        LD      (HL),L   ;
        LDIR             ;


        LD      A,R      ;Пользуясь
        AND     #1       ; регистром R
        CP      0        ;  выбираем
        CALL    Z,PICTUR1 ; один из двух
        CP      1        ;упакованных
        CALL    Z,PICTUR2 ;экранов.



        LD      HL,0     ;Эта хитрая
        PUSH    HL       ;конструкция
        PUSH    HL       ;призвана
        POP     DE       ;обеспечить
        POP     BC       ;необходимую
        LDIR             ;задержку
        LDIR             ;для успешного
        LDIR             ;рассмотрения
        LDIR             ;появившейся
        LDIR             ;на экране
        LDIR             ;картинки....
        EI
NETO    LD      A,R      ;Снова пользуя
        AND     #03      ;R мы "случайно"
        CP      3        ;выбираем один
        JR      Z,NETO   ;из  вариантов
        CP      0        ;гашения экрана
        JP      Z,TERM1  ;и переходим к
        CP      1        ;выбранной
        JP      Z,POGAS  ;процедуре.
        JP      RADUGA   ;

POGAS   CALL    C4
        LD      DE,0
        LD      B,#14
C2      PUSH    BC
        LD      HL,#4000
C3      LD      A,(DE)
        AND     (HL)
        LD      (HL),A
        INC     DE
        INC     HL
        LD      A,H
        CP      #58
        JR      NZ,C3
        EX      DE,HL
        LD      BC,#1770
        AND     A
        SBC     HL,BC
        EX      DE,HL
        POP     BC
        DJNZ    C2
        LD      C,7
        CALL    C6
        RET
C4      LD      HL,#5800
C5      LD      (HL),6
        INC     HL
        LD      A,H
        CP      #5B
        JR      NZ,C5
        RET
C6      LD      HL,#5800
C7      LD      (HL),C
        INC     HL
        LD      A,H
        CP      #5B
        JR      NZ,C7
        RET


;-----------------------------------------
; CLS SCREEN LIKE RADUGA - RADUGA
;-----------------------------------------
RADUGA  LD      E,#F8
L6375   CALL    L6380
        HALT
        INC     E
        LD      A,E
        CP      #78
        JR      NZ,L6375
        RET
L6380   PUSH    DE
        PUSH    AF
        LD      D,#00
L6384   PUSH    DE
        LD      A,#47
L6387   CALL    L639C
        DEC     E
        DEC     A
        CP      #3F
        JP      NZ,L6387
        POP     DE
        DEC     E
        INC     D
        LD      A,D
        CP      24
        JR      NZ,L6384
        POP     AF
        POP     DE
        RET
L639C   EX      AF,AF'
        LD      A,E
        CP      32
        JR      NC,L63BD
        LD      A,D
        CP      #18
        JR      NC,L63BD
        PUSH    HL
        LD      HL,#5800
        SRL     D
        RR      L
        SRL     D
        RR      L
        SRL     D
        RR      L
        ADD     HL,DE
        LD      D,A
        EX      AF,AF'
        LD      (HL),A
        POP     HL
        RET
L63BD   EX      AF,AF'
        RET


;-----------------------------------------
; CLS SCREEN FROM TERMINATOR2
;-----------------------------------------
TERM1   LD      B,7
L4      HALT
        LD      HL,15000
L0      DEC     HL
        LD      A,L
        OR      H
        JR      NZ,L0
        LD      HL,22528
L3      LD      A,(HL)
        AND     56
        JR      Z,L1
        SUB     8
L1      LD      C,A
        LD      A,(HL)
        AND     7
        JR      Z,L2
        DEC     A
L2      OR      C
        LD      (HL),A
        INC     HL
        LD      A,H
        CP      91
        JR      NZ,L3
        DJNZ    L4
        RET
PICTUR1 INCBIN  "scr1"
PICTUR2 INCBIN  "scr2"


P.S.  Совсем забыл! В is-dos есть буфер на
насколько  десятков нажатий на клавиши. Во
время   наслаждения   цветной  картикой  и
процeссом  ее  исчезания, вы можете нажать
серию  клавиш,  которые  подействуют сразу
после  возвращения в систему. Так например
мне  удаеться  "в  слепую" вызвать пользо-
ватeльское   меню   (2),   выбрать   пункт
"Восстaновить  RAM ДИСК" (пять раз "курсор
вниз"  + ENTER) и после разворачивания RAM
ДИСКА  перейти  на  другую панель ("курсор
влево").  На  самом  же деле нажатий может
быть еще больше и все они запомняться!


 



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

От авторов - Прошел целый год с тех пор, как мы оставили сцену.

Новости - новые программы: "Временные войны", Micro Studio, Universal Sprite Studio, Pro Tracker 2.4 Decompiler. Новости от: Unit 5, Flash, Omega Hackers Group, Global Corp., Code Busters.

Презентация - Ваааау! Свершилось! Accept copr доделали карточную игру "Козел".

Интервью - интервью с main coder'ом города Оболенска: Steel Dragon.

IS-DOS - процедура экранной заставки для IS-DOS. Процедуры проявления экрана.

Ментура - описание малоизвестной адвентюры "Ментура".

Эпилог - авторы газеты.


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

Похожие статьи:
Sketches among the Ruins of my Mind - Прoшлo нe тaк yж mнoгo врemeни c выхoдa пятoгo нomeрa, кoтoрый, cyдя пo oтзывam cцeны, пoлyчилcя camыm yдaчныm.
Поиск - поиск игр, программ.
Список BBS - Список работающий BBS.

В этот день...   14 декабря