.NOLIST
#define     equ             .equ
#define     EQU             .equ
#define     END             .end
.LIST

#define bcall(xxxx)     rst 28h    \ .dw xxxx
#define bcallz(xxxx)    jr nz,$+5  \ rst 28h  \ .dw xxxx
#define bcallnz(xxxx)   jr  z,$+5  \ rst 28h  \ .dw xxxx
#define bcallc(xxxx)    jr  nc,$+5 \ rst 28h  \ .dw xxxx
#define bcallnc(xxxx)   jr  c,$+5  \ rst 28h  \ .dw xxxx
#define bjump(xxxx)     call 50h   \ .dw xxxx
_GrBufClr              equ     4BD0h
find_num_good_progs    equ     4161h
Get_Curgoodprog_Ptr    equ     41C7h
getnextgoodprog        equ     410Dh
put_mirageos_header    equ     4170h
invert_1_line          equ     416Ah
put_scrollbar          equ     4164h
Initial_Scrollbar      equ     419Dh
fastlineb              equ     40D4h
put_folder_name_top    equ     415Bh
saveSScreen            equ     86ECh
Update_Scrollbar       equ     419Ah
ifastcopy              equ     4092h
_GetCSC                equ     4018h
general_key_routine    equ     415Eh
options_screen         equ     4158h
folder_menu_start      equ     4155h
move_gui_prog          equ     4194h
cphlde                 equ     4101h
getprevgoodprog        equ     4110h
pTemp                  equ     982Eh
Decrease_Cur_Element   equ     41AFh
getinfo                equ     411Fh
OP2                    equ     8483h
setvputs               equ     40A7h
Increase_Cur_Element   equ     41ACh
customHeight           equ     9B72h
filledrectangle        equ     413Dh
ionDetect              equ     96D6h
runprog                equ     4131h

.org        9870h

     .db 0BBh, 6Dh
     ret           ; ION MODULE
     .db   2       ; ION MODULE
     inc  bc      
     dec  de      
     ld   d, b    
     ld   (hl), d 
     ld   l, a    
     ld   h, a    
     ld   (hl), d 
     ld   h, c    
     ld   l, l    
     jr   nz, Label1
     ld   c, (hl) 
     ld   h, c    
     ld   l, l    
     ld   h, l    
     ld   (hl), e 
     nop          
     ld   de, 0030Bh
     ld   (0969Eh), de 
     ld   a, 01h
     ld   (096A2h), a  
     ld   (096A1h), a  
     ld   hl, 0001h
     ld   (096DBh), hl 
     xor  a       
     ld   (086F4h), a  
     bcall(_GrBufClr)     
     call find_num_good_progs
     or   a       
     jr   z, Label2
     call Get_Curgoodprog_Ptr
     ld   a, (096A1h)  
     ld   b, a    
     call 041C4h
     ld   (0969Ah), hl 
     ld   a, (Str1)  
     srl  a       
     jr   nc, Label3
     inc  a       

Label3:
     cp   07h
     jr   c, Label4
     sub  05h
     jr   Label5

Label4:
     ld   a, 01h

Label5:
     ld   h, 00h
     ld   l, a    
     ld   (096DFh), hl 
     ld   hl, 0000h
     call getnextgoodprog
     ld   (086F0h), hl 

Label6:
     call getnextgoodprog
     jr   z, Label6
     ld   (086F2h), hl 

Label2:
     call put_mirageos_header
     ld   hl, 095D4h
     call invert_1_line
     ld   hl, 09634h
     call invert_1_line
     ld   hl, 05809h
     ld   b, 20h
     call put_scrollbar
     call Initial_Scrollbar
     ld   hl, 0009h
     ld   de, 003Eh
     call fastlineb
     ld   hl, 05F38h
     ld   de, 05F3Eh
     call fastlineb
     call put_folder_name_top
     ld   a, (Str1)  
     or   a       
     jp   z, 0A21Bh
     ld   de, 00B08h
     ld   (saveSScreen), de 
     call 0A15Bh
     call 0A142h
     call Update_Scrollbar
     jr   Label7
     call 0A142h

Label7:
     call 0A1A5h
     ld   hl, 086F4h
     res  7, (hl) 
     call ifastcopy

Label12:
     bcall(_GetCSC)     
     cp   04h
     jr   z, Label8
     cp   01h
     jp   z, 09EF3h
     cp   03h
     jp   z, 09F62h
     cp   02h
     jp   z, 09F92h
     cp   32h
     jp   z, 0A0B9h
     cp   31h
     jp   z, 0A0F9h
     cp   09h
     jp   z, 0A1B5h
     cp   36h
     jp   z, 0A1B5h
     cp   28h
     jr   z, Label9
     cp   30h
     jr   z, Label10
     cp   2Ah
     jr   z, Label11
     call general_key_routine
     jr   Label12

Label10:
     call options_screen
     jp   09DBDh

Label9:
     call folder_menu_start
     jp   09DA8h

Label11:
     call move_gui_prog
     jp   09DA8h
     ld   hl, 086F4h
     bit  7, (hl) 
     ret          

Label8:
     ld   de, (0969Ch) 
     ld   hl, (086F0h) 
     call cphlde
     jr   z, Label13
     call getnextgoodprog
     ld   de, (0969Ch) 
     call cphlde
     jr   z, Label13
     ld   hl, 096A2h
     dec  (hl)    
     dec  (hl)    
     ld   a, (0969Eh)  
     cp   0Bh
     jp   z, 09FB5h
     call 0A1D2h
     call 09EA3h
     jr   nz, Label14
     call 0A142h
     call 0A1A5h

Label14:
     ld   a, (0969Eh)  
     sub  07h
     ld   (0969Eh), a  
     call 09EA3h
     ret  nz      
     jp   09E4Bh

Label13:
     call 09EA3h
     jp   z, 09E56h
     xor  a       
     ret          
     ld   de, (0969Ch) 
     ld   hl, (086F2h) 
     call cphlde
     jr   z, Label13
     call getprevgoodprog
     ld   de, (0969Ch) 
     call cphlde
     jr   nz, Label15
     ld   de, (0969Eh) 
     ld   a, d    
     cp   2Eh
     jr   nz, Label13
     ld   a, e    
     cp   28h
     jr   c, Label13
     call 09EA3h
     call z, 0A1A5h
     ld   de, 02E27h
     ld   (0969Eh), de 
     ld   hl, (0969Ch) 
     ld   (086EEh), hl 
     call 0A142h
     ld   hl, (pTemp) 
     ld   (0969Ch), hl 
     jp   0A039h

Label15:
     ld   hl, 096A2h
     inc  (hl)    
     inc  (hl)    
     ld   a, (0969Eh)  
     cp   2Eh
     jp   z, 0A025h
     call 0A1DFh
     call 09EA3h
     jr   nz, Label16
     call 0A142h
     call 0A1A5h

Label16:
     ld   a, (0969Eh)  
     add  a, 07h
     ld   (0969Eh), a  
     call 09EA3h
     ret  nz      
     jp   09E4Bh
     ld   de, (0969Ch) 
     ld   hl, (086F2h) 
     call cphlde
     jp   z, 09E56h
     ld   a, (0969Fh)  
     cp   2Eh
     jp   z, 09E56h
     ld   hl, 096A2h
     inc  (hl)    
     ld   hl, (0969Ch) 
     call getnextgoodprog
     ld   (0969Ch), hl 
     call 0A142h
     call 0A1A5h
     ld   a, 2Eh
     ld   (0969Fh), a  
     jp   09E4Bh
     ld   a, (0969Fh)  
     cp   03h
     jp   z, 09E56h
     ld   hl, 096A2h
     dec  (hl)    
     ld   hl, (0969Ch) 
     call getprevgoodprog
     ld   (0969Ch), hl 
     call 0A142h
     call 0A1A5h
     ld   a, 03h
     ld   (0969Fh), a  
     jp   09E4Bh
     call Decrease_Cur_Element
     call 0A1ECh
     call 0A1D2h
     ld   hl, 096A1h
     dec  (hl)    
     dec  (hl)    
     call 09EA3h
     jr   nz, Label17
     call 0A1A5h
     call 0A142h

Label17:
     ld   hl, 0955Ah
     ld   de, 095AEh
     ld   b, 21h

Label19:
     ld   c, 0Ah

Label18:
     ld   a, (hl) 
     ld   (de), a 
     dec  de      
     dec  hl      
     dec  c       
     jr   nz, Label18
     dec  hl      
     dec  hl      
     dec  de      
     dec  de      
     djnz Label19
     ld   hl, 093D1h
     ld   b, 05h
     xor  a       

Label21:
     ld   c, 0Ah

Label20:
     ld   (hl), a 
     inc  hl      
     dec  c       
     jr   nz, Label20
     inc  hl      
     inc  hl      
     djnz Label21
     ld   hl, (0969Ch) 
     ld   a, (0969Fh)  
     cp   2Eh
     call z, getprevgoodprog
     push hl      
     call getinfo
     ld   hl, OP2
     ld   de, 00B08h
     call setvputs
     pop  hl      
     call getnextgoodprog
     call getinfo
     ld   hl, OP2
     ld   de, 00B33h
     call setvputs
     call 09EA3h
     ret  nz      
     jp   09E43h
     call 0A1DFh
     call 09EA3h
     jr   nz, Label22
     call 0A1A5h
     call 0A142h

Label22:
     ld   hl, (0969Ch) 
     ld   (086EEh), hl 
     call Increase_Cur_Element
     ld   hl, 096A1h
     inc  (hl)    
     inc  (hl)    
     call 0A1F9h
     ld   hl, 09425h
     ld   de, 093D1h
     ld   b, 21h

Label24:
     ld   c, 0Ah

Label23:
     ld   a, (hl) 
     ld   (de), a 
     inc  de      
     inc  hl      
     dec  c       
     jr   nz, Label23
     inc  hl      
     inc  hl      
     inc  de      
     inc  de      
     djnz Label24
     ld   hl, 09575h
     ld   b, 05h
     xor  a       

Label26:
     ld   c, 0Ah

Label25:
     ld   (hl), a 
     inc  hl      
     dec  c       
     jr   nz, Label25
     inc  hl      
     inc  hl      
     djnz Label26
     ld   hl, (0969Ch) 
     ld   a, (0969Fh)  
     cp   2Eh
     call z, getprevgoodprog
     push hl      
     call getinfo
     ld   hl, OP2
     ld   de, 02E08h
     call setvputs
     pop  hl      
     ld   de, (086F2h) 
     call cphlde
     jr   nz, customHeight
     ld   a, (Str1)  
     bit  0, a    
     jr   nz, Label27
     call getnextgoodprog
     call getinfo
     ld   hl, OP2
     ld   de, 02E33h
     call setvputs

Label27:
     ld   hl, (086EEh) 
     ld   (0969Ch), hl 
     call 09EA3h
     ret  nz      
     jp   09E43h

Label28:
     ld   hl, 08440h
     ld   (hl), 00h
     jp   09E48h
     call 0A1A5h
     ld   hl, (086F0h) 
     ld   de, (0969Ch) 
     call cphlde
     jr   z, Label28
     call getnextgoodprog
     ld   de, (0969Ch) 
     call cphlde
     jr   z, Label28
     ld   hl, 086F4h
     set  7, (hl) 
     ld   a, (0969Eh)  
     cp   0Bh
     jr   z, Label29

Label30:
     ld   a, (0969Eh)  
     cp   0Bh
     jr   z, Label28
     call 09EA9h
     jr   Label30

Label29:
     ld   b, 05h

Label32:
     push bc      
     call 09EA9h
     pop  bc      
     jr   z, Label31
     djnz Label32
     jr   Label31
     call 0A1A5h
     ld   hl, 086F4h
     set  7, (hl) 
     ld   a, (0969Eh)  
     cp   2Eh
     jr   z, Label33

Label34:
     ld   hl, (086F2h) 
     ld   de, (0969Ch) 
     call cphlde
     jr   z, Label28
     call getprevgoodprog
     ld   de, (0969Ch) 
     call cphlde
     jr   z, Label28
     ld   a, (0969Eh)  
     cp   2Eh
     jr   z, Label28
     call 09EF3h
     jr   Label34

Label33:
     ld   b, 05h

Label35:
     push bc      
     call 09EF3h
     pop  bc      
     jr   z, Label31
     djnz Label35

Label31:
     ld   hl, 08440h
     ld   (hl), 00h
     call 0A142h
     jp   09E43h
     ld   hl, 01438h
     ld   de, 05E3Dh
     xor  a       
     call filledrectangle
     ld   hl, (0969Ch) 
     call getinfo
     ld   hl, Str2
     ld   de, 03803h
     jp   setvputs
     ld   a, (Str1)  
     ld   b, a    
     cp   0Dh
     jr   c, Label36
     ld   b, 0Ch

Label36:
     ld   de, 00B08h
     ld   hl, (0969Ah) 

Label39:
     push bc      
     ld   (saveSScreen), de 
     push hl      
     call getinfo
     ld   de, (saveSScreen) 
     ld   hl, OP2
     call setvputs
     pop  hl      
     ld   de, (086F2h) 
     call cphlde
     jr   z, Label37
     call getnextgoodprog
     pop  bc      
     ld   de, (saveSScreen) 
     ld   a, e    
     cp   33h
     jr   z, Label38
     ld   e, 33h
     djnz Label39
     ret          

Label38:
     ld   e, 08h
     ld   a, 07h
     add  a, d    
     ld   d, a    
     djnz Label39
     ret          

Label37:
     pop  bc      
     ret          
     ld   hl, (0969Eh) 
     ld   a, 28h
     add  a, h    
     ld   d, a    
     ld   a, 06h
     add  a, l    
     ld   e, a    
     ld   a, 02h
     jp   filledrectangle
     ld   hl, ionDetect
     ld   de, 096E1h
     push hl      
     push de      
     ld   bc, 000Bh
     ldir         
     ld   hl, (0969Ch) 
     call runprog
     pop  hl      
     pop  de      
     ld   bc, 000Bh
     ldir         
     jp   09DBDh
     ld   hl, (0969Ch) 
     call getprevgoodprog
     call getprevgoodprog
     ld   (0969Ch), hl 
     ret          
     ld   hl, (0969Ch) 
     call getnextgoodprog
     call getnextgoodprog
     ld   (0969Ch), hl 
     ret          
     ld   hl, (0969Ah) 
     call getprevgoodprog
     call getprevgoodprog
     ld   (0969Ah), hl 
     ret          
     ld   hl, (0969Ah) 
     call getnextgoodprog
     call getnextgoodprog
     ld   (0969Ah), hl 
     ret          
     ld   d, h    
     ld   l, b    
     ld   l, c    
     ld   (hl), e 
     jr   nz, 046h
     ld   l, a    
     ld   l, h    
     ld   h, h    
     ld   h, l    
     ld   (hl), d 
     jr   nz, 049h
     ld   (hl), e 
     jr   nz, 045h
     ld   l, l    
     ld   (hl), b 
     ld   (hl), h 
     ld   a, c    
     nop          
     ld   hl, 0A206h
     ld   de, 01B0Bh
     call setvputs
     call ifastcopy

Label41:
     bcall(_GetCSC)     
     cp   09h
     jr   z, Label40
     cp   36h
     jr   z, Label40
     cp   28h
     jr   z, Label40
     cp   30h
     jp   z, 09E91h
     call general_key_routine
     jr   Label41

Label40:
     jp   09E97h
     ld   c, 0h

 ; Disassembled by Jimmy Conner - timagic@yahoo.com
 ; @ 25/08/02 02:35:01 AM
 ; Disassembler v1.7
 ; Total Opcodes: 514
 ; Total Data: 0
 ; Z80 AC   -  z80.us.fornax.com
 ; Personal -  www.timagic.cjb.net
.end
end
