8-Bit Software Online Conversion
                
             
        
        
    
:0.$.MAGREAD - Listing
    
       10REM (c) Andy Nibbs 1991            
   20:                                  
   30ONERRORRUN                         
   40event`n=2                          
   50MODE7:HIMEM=&4000                  
   60VDU23;8202;0;0;0;                  
   70PROCscreen(0,24)                   
   80PROCassemble                       
   90REPEAT                             
  100selected=FNselect                  
  110IFselected=14 PROCprint`info       
  120IFselected=13 CHAIN":0.!MENU"      
  130IFprint:CLS:PRINT"printing...":PROC
print:RUN                               
  140PROCshow                           
  150:                                  
  160DEFPROCscreen(x,y)                 
  170PRINTTAB(x,0+y)" 
?/o¶//¶///¶///////¶¶u";                 
  180PRINTTAB(x,1+y)"    
5(`¶4h¶x t¶ No.16                  
  190PRINTTAB(x,2+y)"     
5* ¶%*¶? o¶|||||||¶¶¶";                 
  191PRINTTAB(x,3+y)" 
¾|÷¶||¶¾|÷¶%         ";                 
  200PRINTTAB(x,4+y)"                   
                     ";                 
  210PRINTTAB(x,5+y)"        
                                        
  220PRINTTAB(x,6+y)"        
                                        
  230PRINTTAB(x,7+y) "  
,,,,,,,,,,,,,,,,,,,,l ";                
  240PRINTTAB(x,8+y) "      Problems/he
lp wanted                            
  250PRINTTAB(x,9+y) "      Hints and t
ips                                  
  260PRINTTAB(x,10+y)"      Mailbox    
                                     
  270PRINTTAB(x,11+y)"      Programmers
 return 8                            
  280PRINTTAB(x,12+y)"      Repton repo
rtage                                
  290PRINTTAB(x,13+y)"      Review     
                                     
  300PRINTTAB(x,14+y)"      System retu
rn                                   
  310PRINTTAB(x,15+y)"      Tech Tips n
umber 3                              
  320PRINTTAB(x,16+y)"      Archiving a
rticle                               
  330PRINTTAB(x,17+y)"      8 BIT NEWS 
                                     
  340PRINTTAB(x,18+y)"      Next month 
                                     
  350PRINTTAB(x,19+y)"      Footnote to
 magazine                            
  360PRINTTAB(x,20+y)"      On this mon
th's disc                            
  370PRINTTAB(x,21+y)"      View softwa
re menu                              
  380PRINTTAB(x,22+y)"      Print an ar
ticle.                               
  390PRINTTAB(x,23+y)"  
,,,,,,,,,,,,,,,,,,,,,";                 
  400ENDPROC                            
  410:                                  
  420DEFFNselect                        
  430line=0                             
  440printline=14                       
  450PROCputbar                         
  460REPEAT                             
  470TIME=0:REPEATUNTILTIME>2           
  480IF INKEY-58 AND line>0 THEN A%=19:C
ALL&FFF4:PROCrembar:line=line-1:PROCputb
ar                                      
  490IF INKEY-42 AND line<printline THEN
 A%=19:CALL&FFF4:PROCrembar:line=line+1:
PROCputbar                              
  500UNTILINKEY-74                      
  510print=INKEY-56                     
  520=line                              
  530:                                  
  540DEFPROCputbar                      
  550y=FNy                              
  560PRINT TAB(4,9+y)CHR$(129)CHR$(157) 
TAB(36,9+y)CHR$156                      
  570ENDPROC                            
  580:                                  
  590DEFPROCrembar                      
  600y=FNy                              
  610PRINT TAB(4,9+y)"  "TAB(36,9+y)" " 
  620ENDPROC                            
  630:                                  
  640DEFFNy                             
  650IFline=printline:=14               
  660=line                              
  670:                                  
  680DEFPROCassemble:DIM bl 20          
  690FORB%=0TO2STEP2:P%=&4000           
  700[OPTB%                             
  710.copy                              
  720  STX &70                          
  730  STY &71                          
  740  LDA #19                          
  750  JSR &FFF4                        
  760  LDX #4                           
  770  LDA #&7C                         
  780  STA &73                          
  790  LDA #0                           
  800  STA &72                          
  810.loop1                             
  820  LDY #0                           
  830.loop2                             
  840  LDA (&70),Y                      
  850  STA (&72),Y                      
  860  INY                              
  870  BNE loop2                        
  880  INC &73                          
  890  INC &71                          
  900  DEX                              
  910  BNE loop1                        
  920  RTS                              
  930.screen  EQUW 0                    
  940.end EQUW 0                        
  950.read                              
  960  LDA #14                          
  970  LDX #2                           
  980  JSR &FFF4                        
  990  LDA #15                          
 1000  LDX #0                           
 1010  JSR &FFF4                        
 1020  LDA #12                          
 1030  LDX #1                           
 1040  JSR &FFF4                        
 1050  LDA screen                       
 1060  STA &80                          
 1070  LDA screen+1                     
 1080  STA &81                          
 1090  LDX &80                          
 1100  LDY &81                          
 1110  JSR copy                         
 1120  LDA #13                          
 1130  LDX #event`n                     
 1140  JSR &FFF4                        
 1150  LDA #repeat MOD 256              
 1160  STA &220                         
 1170  LDA #repeat DIV 256              
 1180  STA &221                         
 1190  LDA #14                          
 1200  LDX #event`n                     
 1210  JMP &FFF4                        
 1220.repeat                            
 1230  PHP:PHA:TXA:PHA:TYA:PHA          
 1240  LDY #&FF                         
 1250  LDX #&C6 ½ test CURSOR UP key    
 1260  LDA #129                         
 1270  JSR &FFF4                        
 1280  CPY #&FF                         
 1290  BEQ up`screen                    
 1300  LDY #&FF                         
 1310  LDX #&D6 ½ test CURSOR DOWN key  
 1320  LDA #129                         
 1330  JSR &FFF4                        
 1340  CPY #&FF                         
 1350  BEQ down`screen                  
 1360  JMP exit                         
 1370.up`screen                         
 1380  LDA &81                          
 1390  CMP screen+1                     
 1400  BNE can`do                       
 1410  LDA &80                          
 1420  CMP screen                       
 1430  BNE can`do                       
 1440  JMP exit                         
 1450.can`do                            
 1460  LDA &80                          
 1470  SEC                              
 1480  SBC #40                          
 1490  STA &80                          
 1500  LDA &81                          
 1510  SBC #0                           
 1520  STA &81                          
 1530.ok`up                             
 1540  LDX &80                          
 1550  LDY &81                          
 1560  JSR copy                         
 1570  JMP exit                         
 1580.down`screen                       
 1590  LDA &80                          
 1600  CLC                              
 1610  ADC #40                          
 1620  STA &80                          
 1630  LDA &81                          
 1640  ADC #0                           
 1650  STA &81                          
 1660  CMP end+1                        
 1670  BCC ok`up                        
 1680  LDA &80                          
 1690  CMP end                          
 1700  BCC ok`up                        
 1710  LDA end                          
 1720  STA &80                          
 1730  LDA end+1                        
 1740  STA &81                          
 1750  JMP ok`up                        
 1760.exit                              
 1770  PLA:TAY:PLA:TAX:PLA:PLP:RTS      
 1780.runner                            
 1790  LDA#23:JSR&FFEE                  
 1800  LDA#1:JSR&FFEE                   
 1810  LDX#0:TXA                        
 1820.zeroloop                          
 1830  JSR&FFEE                         
 1840  INX                              
 1850  CPX#20                           
 1860  BNE zeroloop                     
 1870  JSR read                         
 1880.rep                               
 1890  LDY #&FF:LDX#&8F:LDA#129         
 1900  JSR &FFF4:CPY#&FF:BNE rep        
 1910  LDA#13:LDX#2:JSR&FFF4            
 1920  LDA#126:JSR&FFF4:BRK:EQUS"Aarticl
e exited":BRK                           
 1930]:NEXT:Q%=P%:ENDPROC               
 1940:                                  
 1950DEFPROCshow                        
 1960IFline=0  :address=&28AC:PROCpages:
ENDPROC                                 
 1970IFline=1  :address=&3F32:PROCpages:
ENDPROC                                 
 1980IFline=2  :address=&4FC8:PROCpages:
ENDPROC                                 
 1990IFline=3  :address=&66A4:PROCpages:
ENDPROC                                 
 2000IFline=4  :address=&5F1E:PROCpages:
ENDPROC                                 
 2010IFline=5  :address=&786 :PROCpages:
ENDPROC                                 
 2020IFline=6  :PROCascii("SYSRET"):ENDP
ROC                                     
 2030IFline=7  :address=&9DAA:PROCpages:
ENDPROC                                 
 2040IFline=8  :PROCascii("ARCHIVE"):END
PROC                                    
 2050IFline=9  :PROCascii("NEWS"):ENDPRO
C                                       
 2060IFline=10 :PROCascii("NEXTMON"):END
PROC                                    
 2070IFline=11 :address=&0000:PROCpages:
ENDPROC                                 
 2080IFline=12 :PROCascii("ONDISC"):ENDP
ROC                                     
 2090CLS:PRINT"Not added."              
 2100:                                  
 2110DEFPROCpages                       
 2120handle=OPENIN"TELEMAG"             
 2130IFhandle=0:CLS:PRINT"Main magazine 
file not found.":END                    
 2140X%=bl MOD 256                      
 2150Y%=bl DIV 256                      
 2160A%=3                               
 2170?bl=handle                         
 2180bl!1=Q%                            
 2190PTR#handle=address                 
 2200INPUT#handle,size                  
 2210bl!5=size+1000                     
 2220bl!9=PTR#handle                    
 2230CALL&FFD1                          
 2240CLOSE#handle                       
 2250?screen=Q% MOD 256                 
 2260screen?1=Q% DIV 256                
 2270size=size+Q%                       
 2280?end=size MOD 256                  
 2290end?1=size DIV 256                 
 2300CLS                                
 2310CALLrunner                         
 2320ENDPROC                            
 2330:                                  
 2340 DEFPROCprint`info                 
 2350 CLS                               
 2360x=0:y=0                            
 2370 PRINTTAB(x,0+y)"     
                                        
 2380 PRINTTAB(x,1+y)"     
                                        
 2390 PRINTTAB(x,2+y)"                  
                      ";                
 2400 PRINTTAB(x,3+y)" 
,,,,,,,,,,,,,,,,,,,,,l";                
 2410 PRINTTAB(x,4+y)"  To print any ar
ticle from the menu                  
 2420 PRINTTAB(x,5+y)"  out:           
                                     
 2430 PRINTTAB(x,6+y)"                 
                                     
 2440 PRINTTAB(x,7+y)"  1) Turn your pr
inter on and get it                  
 2450 PRINTTAB(x,8+y)"     ready to rec
ieve text.                           
 2460 PRINTTAB(x,9+y)"                 
                     j";                
 2470 PRINTTAB(x,10+y)"  2) Position cu
rsor over article                    
 2480 PRINTTAB(x,11+y)"     using curso
r keys.                              
 2490 PRINTTAB(x,12+y)"                
                      j";               
 2500 PRINTTAB(x,13+y)"  3) Press and h
old P down and whilst                
 2510 PRINTTAB(x,14+y)"     still holdi
ng P down tap return.                
 2520 PRINTTAB(x,15+y)"     This is an 
action not disimilar                 
 2530 PRINTTAB(x,16+y)"     to shift-br
eak.                                 
 2540 PRINTTAB(x,17+y)"                
                      j";               
 2550 PRINTTAB(x,18+y)"  4) The article
 should print.                       
 2560 PRINTTAB(x,19+y)"                
                      j";               
 2570 PRINTTAB(x,20+y)"  see: footnote 
to magazine article                  
 2580 PRINTTAB(x,21+y)"       for furth
er information.                      
 2590 PRINTTAB(x,22+y)"                
                      j";               
 2600 PRINTTAB(x,23+y)" 
,,,,,,,,,,,,,,,,,,,,,,.";               
 2610*FX15 1                            
 2620A=GET                              
 2630RUN                                
 2640DEFPROCprint                       
 2650FORa=0 TO line:READd$:NEXT         
 2660ch=OPENINd$                        
 2670DATA help,hints,mailbox,progret,rep
ton,review,sysret,tectips,archive,news,n
extmon,footnot,ondisc                   
 2680IFch=0:CLS:PRINT"text file not foun
d":END                                  
 2690:                                  
 2700VDU2                               
 2710REPEAT                             
 2720x=BGET#ch                          
 2730VDUx:IFx=13:VDU10                  
 2740UNTILEOF#ch                        
 2750VDU3                               
 2760CLOSE#ch                           
 2770VDU6                               
 2780ENDPROC                            
 2790:                                  
 2800DEFPROCascii($&900):CHAIN"ASCII"