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 ДИСКА перейти на другую панель ("курсор влево"). На самом же деле нажатий может быть еще больше и все они запомняться!
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября