About everything - how to colorize a dull IS-DOS.

Oberon #05
(C) M.M.A aka UnBEL!EVER/SPEED CO./XTM'98 
                                          
        IS-DOS with pictures!!?          
                                          
   In ancient times, I read
some magazine dedicated to PC. The magazine was
directed  to users and from page to country
Nice,  red  thread  there was a New Year's theme
gifts - buy this, buy that, best
gift for New Pod, etc. Among the sellers
some rubbish was some kind of CD, having bought a
which,  "you will certainly master modern
multimedia technologies without getting up from the warm
chair logo". As an example of "mastering
multimedia technologies", it was proposed to
decorate your WINDOWS using pictures
recorded on the disc, in accordance with our
dull New Pod. Below is the
working screen of wIN'95, where the crowd frolicked
snowmen,  Grandfathers Frost and other winter ones
attributes.                                 
                                          
   "Here are the snickering capitalists!", -
I'm small  then. This is what happens,  they
can decorate their windows for the holiday
all sorts of pictures, and we have to dig-
put on background of blue panels of monotonous
IS-DOS'a ??? No, it's a mess!              
                                          
   Exactly  that's how  and that same file was born
start., which you can find on the dis-
ke with the magazine. By copying it to the bootloader
new IS-DOS disk, calling it start.com and registering
By saving it at the end autoexec.bat,you can
Feel free to  overload  system and enjoy
rulez.  Well  a for those who are interested in how
it all works, this is the subject of this book.
same information.                            
                                          
   Without  having any idea about the internal
on an is-dos device, and even more so
without  knowing all  the subtleties of programming
under it,  I acted purely intuitively.
The assembly address was taken by analogy
with  the first .com file that comes to hand,
all registers  were saved  on the stack before
start and were removed back upon return
grooming.   How neither  strange, but all  this
the design worked.                   
                                          
   However, ignorance of is-dos had its consequences
Yes: if  when you first start everything works
smoothly, then when you try to launch start.com
from  already loaded is-dos lead to non-
big glitches. For the system itself this is not
scary - I can guarantee that this is...
setting up is-dos will not spoil the data on your
our disk.                                
                                          
   Below is the source code start.com with co-
comments on the text. The source was written
in ALASM and therefore they use specific
logical  for this editor DISP command and
INCLUDE. Three  effectsthere were screen blankings
taken  by me from ZX-REVIEW (it was a long time ago - since
with difficulty  I remember!). Exactly  that's why I don't
began to give comments on them. Yes, and
mi  you can safely replace the cleaning effects
thread on yours. In the appendix to the magazine there is
shown below  source in the format
ZX-WORD, from which  is not difficult get
text in any assembler format.        
                                          
     Understand and enjoy....     
                                          
        ORG  30000                     
        DISP 24000                     
        PUSH    AF                        
        XOR     A                         
        OUT     (#FE).A;Сохраняем         
        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.#S800  ;"Зачерняем"    
        LD      DE.#S80l  ;   экран       
        LD      BC.767    ; LD      (HL).L    ;               
        LDIR              ;               
                                          
        LD      A.R       ;Пользуясь      
        AND     #l        ; регистром R   
        CP      0         ;  выбираем     
        CALL    Z.PICTURl ; один из двух  
        CP      l         ;упакованных    
        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.TERMl   ;и переходим к  
        CP      l         ;выбранной      
        JP      Z.POGAS   ;процедуре.     
        JP      RADUGA    ;               
                                          
POGAS   CALL    C4                        
        LD      DE.0                      
        LD      B.#l4                     
C2      PUSH    BC                        
        LD      HL.#4000            
C3      LD      A.(DE)                    
        AND     (HL)                      
        LD      (HL).A                    
        INC     DE                        
        INC     HL                        
        LD      A.H                       
        CP      #S8                       
        JR      NZ.C3                     
        EX      DE.HL                     
        LD      BC.#l770                  
        AND     A                         
        SBC     HL.BC                     
        EX      DE.HL                     
        POP     BC                        
        DJNZ    C2                        
        LD      C.7                       
        CALL    C6                        
        RET                               
C4      LD      HL.#S800                  
CS      LD      (HL).6                    
        INC     HL                        
        LD      A.H                       
        CP      #SB                       
        JR      NZ.CS                     
        RET                               
C6      LD      HL.#S800                  
C7      LD      (HL).C                    
        INC     HL                        
        LD      A.H                       
        CP      #SB                       
        JR      NZ.C7                     
        RET                               
                                          
:-----------------------------------------
: CLS SCREEN - RADUGA                     
:-----------------------------------------
RADUGA  LD      E.#F8                     
L637S   CALL    L6380                     
        HALT                              
        INC     E                         
        LD      A.E                       
        CP      #78                       
        JR      NZ.L637S                  
        RET                               
L6380   PUSH    DE                        
        PUSH    AF                        
        LD      D.0                       
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.LбЗBD                  
        LD      A.D                       
        CP      #l8                       
        JR      NC.LбЗBD                  
        PUSH    HL                        
        LD      HL.#S800                  
        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                               
LбЗBD   EX      AF.AF'                    
        RET                               
                                          
                                          
                                          
:-----------------------------------------
: CLS SCREEN FROM TERMINATOR2             
:-----------------------------------------
TERMl   LD      B.7                       
L4      HALT                              
        LD      HL.lSOO0                  
L0      DEC     HL                        
        LD      A.L                       
        OR      H                         
        JR      NZ.L0                     
        LD      HL.22S28                  
L3      LD      A.(HL)                    
        AND     S6                        
        JR      Z.Ll                      
        SUB     8                         
Ll      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      9l                        
        JR      NZ.L3                     
    DJNZ    L4                        
        RET                               
PICTURl INCBIN  "scrl"                    
PICTUR2 INCBIN  "scr2"                    
                                          
P.S.  Совсем забыл! В is-dos есть буфер на
насколько  десятков нажатий на клавиши. Во
время   наслаждения   цветной  картикой  и
процессом  её  исчезания, вы можете нажать
серию  клавиш,  которые  подействуют сразу
после возвращения в систему. Так,например,
мне  удаётся"blind" call  user
personal   menu  (2), select  item
"Recover  RAM DISK" (five times "cursor
down"  + ENTER) and after expanding RAM
DISK  go  to  another panel ("cursor
left"). On in fact, clicks can
be even more and they will all be remembered!     
                                          
P.P.S.  This article was written back in
February of this  year and initially
assigned  for  electronicmagazine
ODYSSEY from Armavir. However, another
measures of this magazine for some reason before
has not yet been born. Well, so as not to
waste of the finished material...           
                                          
-===========================-
 * * * * * 

Share your thoughts about the article