8-Bit Software Online Conversion
                
             
        
        
    
Forth. From K6N - Listing
    
        5*TV255                             
   10MODE7                              
   20*FX21                              
   30VDU23,1,0;0;0;0;                   
   31title0$="                      "   
   32title1$="     w3````p p 00     "   
   34title2$="     5 *z:jzj jjj     "   
   36title3$="    |||||||||||||     "   
   40B=132                              
   50C1=145:C2=147                      
   60C3=131:C4=129:F3=C3:F4=C4          
   70C5=129:C6=131                      
   80REPEAT:VDU(30)                     
   90IF F3=C3 F3=C4 ELSE F3=C3          
  100IF F3=C3 F4=C4                     
  110IF F3=C4 F4=C3                     
  120PRINTCHR$(B)CHR$(157)              
  130PRINTCHR$(B)CHR$(157)CHR$(F3)"*"CHR
$(F4)"*"CHR$(F3)"*"CHR$(F4)"*"CHR$(F3)"*
"CHR$(F4)"*"CHR$(F3)"*"CHR$(F4)"*"CHR$(F
3)"*"CHR$(F4)"*"CHR$(F3)"*"CHR$(F4)"*"CH
R$(F3)"*"CHR$(F4)"*"CHR$(F3)"*"CHR$(F4)"
*"CHR$(F3)"*"CHR$(F4)"*"                
  140PRINTCHR$(B)CHR$(157)CHR$(F4)"*"CHR
$(F3)"*"CHR$(F4)"*"CHR$(F3)"*"CHR$(F4)"*
"CHR$(F3)"*"CHR$(F4)"*"CHR$(F3)"*"CHR$(F
4)"*"CHR$(F3)"*"CHR$(F4)"*"CHR$(F3)"*"CH
R$(F4)"*"CHR$(F3)"*"CHR$(F4)"*"CHR$(F3)"
*"CHR$(F4)"*"CHR$(F3)"*"                
  150PRINTCHR$(B)CHR$(157)CHR$(F3)"*"CHR
$(F4)"*  "CHR$(156)CHR$(C2)title0$CHR$(B
)CHR$(157)CHR$(F3)"*"CHR$(F4)"*"        
  160PRINTCHR$(B)CHR$(157)CHR$(F4)"*"CHR
$(F3)"*  "CHR$(156)CHR$(C2)title0$CHR$(B
)CHR$(157)CHR$(F4)"*"CHR$(F3)"*"        
  170PRINTCHR$(B)CHR$(157)CHR$(F3)"*"CHR
$(F4)"*  "CHR$(156)CHR$(C2)title1$CHR$(B
)CHR$(157)CHR$(F3)"*"CHR$(F4)"*"        
  180PRINTCHR$(B)CHR$(157)CHR$(F4)"*"CHR
$(F3)"*  "CHR$(156)CHR$(C2)title2$CHR$(B
)CHR$(157)CHR$(F4)"*"CHR$(F3)"*"        
  190PRINTCHR$(B)CHR$(157)CHR$(F3)"*"CHR
$(F4)"*  "CHR$(156)CHR$(C1)title3$CHR$(B
)CHR$(157)CHR$(F3)"*"CHR$(F4)"*"        
  200PRINTCHR$(B)CHR$(157)CHR$(F4)"*"CHR
$(F3)"*";"                            "C
HR$(F4)"*"CHR$(F3)"*"                   
  210PRINTCHR$(B)CHR$(157)CHR$(F3)"*"CHR
$(F4)"*"CHR$(C6)"     1...Run Program   
    "CHR$(F3)"*"CHR$(F4)"*"             
  220PRINTCHR$(B)CHR$(157)CHR$(F4)"*"CHR
$(F3)"*";"                            "C
HR$(F4)"*"CHR$(F3)"*"                   
  230PRINTCHR$(B)CHR$(157)CHR$(F3)"*"CHR
$(F4)"*"CHR$(C6)"     2...Display Source
    "CHR$(F3)"*"CHR$(F4)"*"             
  240PRINTCHR$(B)CHR$(157)CHR$(F4)"*"CHR
$(F3)"*";"                            "C
HR$(F4)"*"CHR$(F3)"*"                   
  250PRINTCHR$(B)CHR$(157)CHR$(F3)"*"CHR
$(F4)"*"CHR$(C6)"     3...How To Forth  
    "CHR$(F3)"*"CHR$(F4)"*"             
  260PRINTCHR$(B)CHR$(157)CHR$(F4)"*"CHR
$(F3)"*";"                            "C
HR$(F4)"*"CHR$(F3)"*"                   
  270PRINTCHR$(B)CHR$(157)CHR$(F3)"*"CHR
$(F4)"*"CHR$(F3)"*"CHR$(F4)"*"CHR$(F3)"*
"CHR$(F4)"*"CHR$(F3)"*"CHR$(F4)"*"CHR$(F
3)"*"CHR$(F4)"*"CHR$(F3)"*"CHR$(F4)"*"CH
R$(F3)"*"CHR$(F4)"*"CHR$(F3)"*"CHR$(F4)"
*"CHR$(F3)"*"CHR$(F4)"*"                
  280PRINTCHR$(B)CHR$(157)CHR$(F4)"*"CHR
$(F3)"*"CHR$(F4)"*"CHR$(F3)"*"CHR$(F4)"*
"CHR$(F3)"*"CHR$(F4)"*"CHR$(F3)"*"CHR$(F
4)"*"CHR$(F3)"*"CHR$(F4)"*"CHR$(F3)"*"CH
R$(F4)"*"CHR$(F3)"*"CHR$(F4)"*"CHR$(F3)"
*"CHR$(F4)"*"CHR$(F3)"*"                
  290PRINTCHR$(B)CHR$(157)              
  300RESTORE                            
  310READ A$:PRINTCHR$(B)CHR$(157)CHR$(C
6)A$                                    
  330READ A$:PRINTCHR$(B)CHR$(157)CHR$(C
6)A$                                    
  350READ A$:PRINTCHR$(B)CHR$(157)CHR$(C
6)A$                                    
  370READ A$:PRINTCHR$(B)CHR$(157)CHR$(C
6)A$                                    
  390READ A$:PRINTCHR$(B)CHR$(157)CHR$(C
6)A$                                    
  410READ A$:PRINTCHR$(B)CHR$(157)CHR$(C
6)A$                                    
  430PRINTCHR$(B)CHR$(157);             
  440A$=INKEY$(2)                       
  450IF ASC(A$)<0 A$=" "                
  460UNTIL INSTR("123",A$)              
  470:                                  
  472IF A$="1":OSCLI"EXEC FORTHLD":END  
  480IF A$="2":F$="worm"                
  490IF A$="3":F$="Ftext"               
  500:                                  
  510DATA"            Forth 79          
     "                                  
  522DATA"           ----------         
     "                                  
  564DATA"                              
     "                                  
  565DATA"                              
     "                                  
  566DATA"                              
     "                                  
  567DATA"                              
     "                                  
  570:                                  
  572buffer=&4000                       
  574bufsize=&3000                      
  580HIMEM=buffer                       
  590DIMcode 400,scr%(20)               
  600ONERROR RUN                        
  610*FX4,1                             
  620PROCassemble                       
  630REMPROCfile                        
  650F%=OPENIN F$                       
  660REM" Colour toggles on c           
  670?&74=1:?&72=130                    
  680B%=&900:times%=0:back%=0:new%=0    
  690div=EXT#F%/100                     
  700:                                  
  710REPEAT                             
  720new%=1:PROCld                      
  730REPEAT                             
  740start%=G%:?&73=0:scol%=?&72        
  750REPEAT                             
  760CALL gline                         
  770UNTIL ?&73=24 OR G%>=T%            
  780IF ?&73<>24:REPEAT:PRINTSTRING$(40,
" ");:?&73=?&73+1:UNTIL ?&73=24         
  790depth=(bufsize*(times%-1)+G%-buffer
)/div                                   
  800REPEAT                             
  810PRINTTAB(0,24)CHR$(157)CHR$(132);  
  820IF depth<10 PRINT" ";              
  830IF depth<100 PRINT" ";             
  840PRINTSTR$(INT(depth))"%";          
  850IF EOF#F% AND G%>=T% PRINTCHR$(136)
" Any Key Finishes or B,[  "; ELSE PRINT
"  Any Key  [,],B,F or P    ";          
  860IFstart%=buffer:VDU7:E%=1:PRINT"(TO
B) ";                                   
  870IFE%=0:IFG%>=T%:VDU7:E%=1:PRINT"(BO
B) ";                                   
  880IFE%:E%=0 ELSE PRINT"      ";      
  890PRINTTAB(0,24);                    
  900*FX21                              
  910K%=GET:G$=CHR$(K%)                 
  920IF K%=136 OR K%=139 PROCback1      
  930IF K%=137 OR K%=138 PROCforward1   
  940IFINSTR("Bb",G$) PROCjumpback      
  950IFINSTR("Ff",G$) PROCjumpforward   
  960IFINSTR("Cc",G$) PROCcolour        
  970IFINSTR("Pp",G$) PROCprtScreen     
  980UNTIL K%                           
  990UNTILG%>=T%                        
 1000UNTILEOF#F%                        
 1010:                                  
 1020CLOSE#F%                           
 1030*FX4,0                             
 1040RUN                                
 1050END                                
 1060:                                  
 1070DEFPROCcolour                      
 1080?&74=?&74 EOR 1                    
 1090IF ?&74 ?&72=130 ELSE ?&72=0       
 1100G%=start%                          
 1110ENDPROC                            
 1120:                                  
 1130DEFPROCcolminus                    
 1140?&72=?&72-1                        
 1150IF?&72=132:?&72=131                
 1160IF?&72=129:?&72=134                
 1170ENDPROC                            
 1180:                                  
 1190DEFPROCcolplus                     
 1200?&72=?&72+1                        
 1210IF?&72=132:?&72=133                
 1220IF?&72=135:?&72=130                
 1230ENDPROC                            
 1240:                                  
 1250DEFPROCld                          
 1260IFback% times%=times%-1:PTR#F%=scr%
(times%)                                
 1270IFnew%:times%=times%+1:scr%(times%)
=PTR#F%                                 
 1280IF EXT#F%-PTR#F%>(bufsize-1) H%=buf
size ELSE H%=EXT#F%-PTR#F%              
 1290PRINTTAB(0,24)CHR$(157)CHR$(132)" L
oading Please Wait                ";TAB(
0,24);                                  
 1300A%=4                               
 1310X%=B% MOD 256                      
 1320Y%=B% DIV 256                      
 1330B%?0=F%                            
 1340B%!1=buffer                        
 1350B%!5=H%                            
 1360CALL&FFD1                          
 1370D%=0:back%=0:new%=0:G%=buffer:T%=G%
+H%+D%                                  
 1380IF PTR#F%=EXT#F% ENDPROC           
 1390S%=&6FFF                           
 1400REPEAT                             
 1410D%=D%+1                            
 1420S%=S%+1                            
 1430R%=BGET#F%                         
 1440?S%=R%                             
 1450UNTIL?S%=13 AND ?(S%-1)=13         
 1460S%?1=&FF                           
 1470T%=G%+H%+D%                        
 1480ENDPROC                            
 1490:                                  
 1500DEFPROCfile                        
 1510REPEAT                             
 1520*.                                 
 1530PRINT'"Filename :";                
 1540INPUT F$                           
 1550IF LEFT$(F$,1)="*" OSCLI+F$        
 1560UNTILLEFT$(F$,1)<>"*"              
 1570ENDPROC                            
 1580:                                  
 1590DEFPROCback1                       
 1600IFstart%=buffer:IFtimes%>1:G$="B":E
NDPROC                                  
 1610IFstart%=buffer:K%=0:ENDPROC       
 1620?&72=scol%                         
 1630IF?&74:IF?start%=13:PROCcolminus   
 1640VDU30:G%=start%-1                  
 1650REPEAT:G%=G%-1:UNTIL ?G%=13 OR G%=&
3000                                    
 1660IF G%<>buffer:G%=G%+1              
 1670ENDPROC                            
 1680:                                  
 1690DEFPROCforward1                    
 1700IFG%>=T%:G$="F":ENDPROC            
 1710?&72=scol%                         
 1720VDU30:G%=start%-1                  
 1730REPEAT:G%=G%+1:UNTIL ?G%=13        
 1740G%=G%+1                            
 1750IF?&74:IF ?G%=13 PROCcolplus       
 1760ENDPROC                            
 1770:                                  
 1780DEFPROCjumpback                    
 1790IFG%<=(buffer+&600) AND times%=1:G%
=buffer:ENDPROC                         
 1800IFG%>(buffer+&600):G%=G%-&600:REPEA
T:G%=G%-1:UNTIL ?G%=13 OR G%=buffer:ENDP
ROC                                     
 1810back%=1                            
 1820PROCld:G%=&6A00:REPEAT:G%=G%-1:UNTI
L ?G%=13                                
 1830ENDPROC                            
 1840:                                  
 1850DEFPROCjumpforward                 
 1860IFG%>(T%-&380):ENDPROC             
 1870G%=G%+&300                         
 1880REPEAT:G%=G%+1:UNTIL?G%=13         
 1890ENDPROC                            
 1900:                                  
 1910DEFPROCprtScreen                   
 1920U%=start%:E%=0:cnt%=0:VDU2         
 1930REPEAT                             
 1940REPEAT                             
 1950A%=?U%                             
 1960IFA%=141:E%=1                      
 1970IFA%>126:A%=32                     
 1980IFA%>31:VDU1,A%                    
 1990U%=U%+1                            
 2000UNTIL?U%=13 OR U%>T%               
 2010IFE%:REPEAT:U%=U%+1:UNTIL?U%=13:cnt
%=cnt%+1:VDU1,13:E%=0                   
 2020cnt%=cnt%+1:VDU1,13                
 2030UNTILcnt%=24 OR U%>T%              
 2040VDU1,13,3:K%=0                     
 2050ENDPROC                            
 2060:                                  
 2070DEFPROCerror                       
 2080CLOSE#F%                           
 2090*FX4,0                             
 2100PRINT                              
 2110ENDPROC                            
 2120:                                  
 2130DEFPROCassemble                    
 2140FOR I%=0 TO 2 STEP 2               
 2150P%=code                            
 2160[OPTI%                             
 2170.gline                             
 2180LDX &74:STX &76                    
 2190LDA &72:JSR &FFEE                  
 2200.loopa                             
 2210JSR get                            
 2220CMP #13:BEQ a2                     
 2230CMP #126:BCS a1                    
 2240CMP #32:BCC a1                     
 2250JSR &FFEE:INC &76                  
 2260.a1                                
 2270LDX &76:CPX #40:BNE loopa          
 2280INC &7F                            
 2290.a2                                
 2300LDX &74:BEQ a3                     
 2310JSR seeatg:CMP #13:BNE a3          
 2320LDX &7F:BEQ d2                     
 2330LDA &404:PHA                       
 2340JSR get:JSR seeatg                 
 2350LDX &41C:BNE d1:DEC &41D           
 2360.d1                                
 2370DEC &41C                           
 2380TAX:PLA:STA &404                   
 2390CPX #13:BNE a3                     
 2400.d2                                
 2410JSR chcol                          
 2420.a3                                
 2430LDX #0:STX &7F                     
 2440LDA &404:CMP #13:BNE a4            
 2450LDA #32                            
 2460.cloop                             
 2470LDX &76:CPX #40:BEQ a4             
 2480JSR &FFEE:INC &76:BNE cloop        
 2490.a4                                
 2500LDA &404:CMP #13:BEQ a5            
 2510CMP #32:BEQ a5:JSR back            
 2520.a5                                
 2530INC &73                            
 2540RTS                                
 2550½ ******* subroutines ********     
 2560.get                               
 2570LDX &41C:STX &80                   
 2580LDX &41D:STX &81                   
 2590LDY #0:LDA (&80),Y:STA &404        
 2600INC &41C:BNE g1:INC &41D           
 2610.g1                                
 2620RTS                                
 2630.seeatg                            
 2640LDX &41C:STX &80                   
 2650LDX &41D:STX &81                   
 2660LDY #0:LDA (&80),Y                 
 2670RTS                                
 2680.chcol                             
 2690INC &72:LDX &72                    
 2700CPX #132:BNE c1                    
 2710LDY #133:STY &72                   
 2720.c1                                
 2730CPX #135:BNE c2                    
 2740LDY #130:STY &72                   
 2750.c2                                
 2760RTS                                
 2770.back                              
 2780JSR seeatg                         
 2790CMP #32:BEQ b0                     
 2800CMP #13:BNE b2                     
 2810.b0                                
 2820INC &41C:BNE b1:INC &41D           
 2830.b1                                
 2840RTS                                
 2850.b2                                
 2860LDX &41C:STX &82:LDX &41D:STX &83  
 2870LDX #0:STX &75                     
 2880.loopb1                            
 2890LDY #2                             
 2900.b3                                
 2910LDX &41C:BNE b4:DEC &41D           
 2920.b4                                
 2930DEC &41C:DEY:BNE b3                
 2940JSR get:INC &75:DEC &76            
 2950CMP #32:BEQ b6                     
 2960LDX &76:CPX &74:BNE loopb1         
 2970.b5                                
 2980LDX #0:STX &75                     
 2990LDX &82:STX &41C                   
 3000LDX &83:STX &41D                   
 3010JSR seeatg:CMP #13:BNE b6          
 3020INC &41C:BNE b6:INC &41D           
 3030.b6                                
 3040LDX &75:BEQ b7:LDA #127            
 3050.loopb2                            
 3060JSR &FFEE:DEC &75:BNE loopb2       
 3070JSR &FFE7                          
 3080.b7                                
 3090RTS                                
 3100]NEXT:ENDPROC