8-Bit Software Online Conversion
                
             
        
        
    
Seasick Mode Split Demo - Listing
    
       10MODE1                              
   20DIM MEM 500,S%(256),U%(256)        
   25oldirq=!&204 AND&FFFF              
   30FORO=0TO2 STEP2:P%=MEM             
   40[OPT O                             
   50.irq1 BIT&FE4D:BMIvia1:BIT&FE6D:BMI
via2:.exit JMPoldirq                    
   60.via1 LDA&FE4D:AND#2:BEQexit:TXA:PH
A:TYA:PHA:JSRint1:PLA:TAY:PLA:TAX:JMPexi
t                                       
   70.via2 LDA&FE6D:AND#&40:BEQexit:LDA&
FE64:TXA:PHA:TYA:PHA:JSRint23:PLA:TAY:PL
A:TAX:JMPexit                           
   80.int1 LDA&FE6B:AND#&3F:ORA#&40:STA&
FE6B:LDA#&E0:STA&FE64:LDA#&8:STA&FE65:LD
A#&C0:STA&FE66:LDA#&20:STA&FE67         
   85LDA#&C0:STA&FE6D:STA&FE6E          
   86LDA#&18:STA&FE45                   
   90LDA#13:STA&FE00:LDA&A00:STA&FE01   
  100LDA#12:STA&FE00:LDA&A01:STA&FE01   
  110LDA#5:STA&FE00:LDA&A40:STA&FE01:LDA
#24:SEC:SBC&A40:STA&A41                 
  120LDA&248:AND#1:ORA#&D8:STA&248:STA&F
E20                                     
  122LDA#8:STA&FE00:LDA#&0:STA&FE01     
  130LDA#&FE:STA&70:RTS                 
  140.int23 INC&70:BMIint2:BEQint3:LDA#&
40:STA&FE6E:RTS                         
  150.int2 LDA#9:STA&FE00:LDA#7:STA&FE01
                                        
  160LDA#5:STA&FE00:LDA&A41:STA&FE01    
  170LDA#4:STA&FE00:LDA#15:STA&FE01     
  180LDA#6:STA&FE00:LDA#16:STA&FE01     
  190LDA#7:STA&FE00:LDA#20:STA&FE01     
  200½ MOVED TO 225                     
  210RTS                                
  220.int3 LDA#9:STA&FE00:STA&FE01      
  225LDA#13:STA&FE00:LDA&A10:STA&FE01:LD
A#12:STA&FE00:LDA&A11:STA&FE01          
  230LDA&248:AND#1:ORA#&5A:STA&248:STA&F
E20                                     
  232LDA#8:STA&FE00:LDA#&A0:STA&FE01    
  240LDA#4:STA&FE00:LDA#15:STA&FE01     
  250LDA#6:STA&FE00:LDA#12:STA&FE01     
  260LDA#7:STA&FE00:LDA#14:STA&FE01     
  270LDA#&40:STA&FE6E:RTS               
  280.init SEI                          
  282LDA#0:STA&FE00:LDA#0:STA&FE01:LDX#&
5B:STX&FE20                             
  283LDX#50:.DE DEX:BNEDE:LDX&FE44:STA&F
E00:LDA#127:STA&FE01:LDA#&5B:STA&FE20:LD
A#&4B:STA&FE20:LDA&0:NOP:LDA#&5B:STA&FE2
0                                       
  284LDA#irq1 MOD256:STA&204:LDA#irq1 DI
V256:STA&205                            
  285LDA#&FE:STA&FE44:LDA#&26:STA&FE45  
  287LDA#2:STA&FE00:LDA#101:STA&FE01    
  290LDA#12:STA&FE40:LDA#13:STA&FE40:CLI
:RTS                                    
  300]                                  
  310NEXT                               
  320!&A00=&B00:!&A10=&2000             
  325?&A40=20:?&A41=4:U%=0              
  330CALLinit                           
  335VDU19,0,7,0,0,0,19,2,2,0,0,0,19,3,4
,0,0,0                                  
  336*FX16                              
  338PROCs(&3C00,"If you see this, press
 BREAK and re-run  program.")           
  340FORN%=0TO100:GCOL0,RND(4):DRAWRND(1
279),RND(511):NEXT                      
  345PRINTTAB(10,23)"MODE 1"            
  346PROCs(&3C01,"Testing the MODE 7 hal
f of the screen")                       
  350PROCcols                           
  351PROCs(&3C51,"!""#$%&'()*+,-./012345
6789:;<=>?@"):PROCs(&3CA1,"ABCDEFGHIJKLM
NOPQRSTUVWXYZ[½]^`"):PROCs(&3CF1,"£abcde
fghijklmnopqrstuvwxyz¼|¾÷"+CHR$127)     
  353PROCs(&3D41," C O L O U R S    
                                   
  355PROCs(&3DE1,CHR$141+" USE CURSOR KE
YS TO MOVE SCREEN"):PROCs(&3E31,CHR$141+
" USE CURSOR KEYS TO MOVE SCREEN")      
  360X%=0:REPEAT:X%=(X%+(INKEY-122-INKEY
-26)*(1-INKEY-1)+&500)MOD&500:U%=(U%+(IN
KEY-42-INKEY-58)*(1-INKEY-1))AND127:!&A0
0=(X%+U%DIV8*80+&500)MOD&500+&B00       
  365?&A40=20-(U%AND7)                  
  367*FX19                              
  370UNTILINKEY(-74)                    
  380FORY%=0TO128:S%(Y%)=(40*SIN(Y%/64*P
I)+80*8+80*INT(COS(Y%/64*PI)*8))MOD&500+
&B28:U%(Y%)=20-(INT(COS(Y%/64*PI)*64)AND
7):!&A00=S%(Y%):?&A40=U%(Y%):*FX19      
  390NEXT                               
  392X%=&3C1                            
  395FORY%=0TO1E9:!&A00=S%(Y%AND&7F):?&A
40=U%(Y%AND&7F):*FX19                   
  396!((X%AND&3FF)+&3C00)=RND(96)+31:!&A
10=(X%-955 AND&3FF)+&2000:X%=X%+2:NEXT  
  400END                                
  500DEFPROCs(X%,A$):LOCALN%:FORN%=1TOLE
NA$:X%?(N%*2-2)=ASCMID$(A$,N%):NEXT:ENDP
ROC                                     
  510DEFPROCcols:RESTORE600:LOCALN%,D%:F
ORN%=8TO0 STEP-1:READD%:PROCbox(N%,D%):N
EXT:ENDPROC                             
  520DEFPROCbox(N%,D%):LOCALX%:FORX%=&58
00 TO&7FFF STEP640:X%!(N%*8)=D%:X%!(N%*8
+4)=D%:X%!(632-N%*8)=D%:X%!(636-N%*8)=D%
:NEXT                                   
  530FORX%=0TO639 STEP8:X%!(&5800+N%DIV2
*640+(N%AND1)*4)=D%:X%!(&7D84-N%DIV2*640
-(N%AND1)*4)=D%:NEXT:ENDPROC            
  600DATA&A050A05,&A050A050,&AA55AA55,&A
55AA55A,&FAF5FAF5,&5FAF5FAF,&F0F0F0F0,&0
F0F0F0F,&FFFFFFFF