8-Bit Software Online Conversion
                
             
        
        
    
Viewcon utility sourcecode - Listing
    
       10REM Program ViewCon to convert VIEW
 files to plain text without carriage re
tuns (unless multiple)                  
   20REM for text submissions to 8bs    
   30REM derived from VIEWASC           
   40REM this draft 5/9/1992            
   50REM by H. L. Clarke                
   60oscli=&FFF7:OSBYTE=&FFF4:OSWORD=&FF
F1:OSWRCH=&FFEE:OSNEWL=&FFE7:OSASCI=&FFE
3:OSRDCH=&FFE0:OSFILE=&FFDD             
   70HIMEM=&7000                        
   80ftop=&7700                         
   90FOR pass%=0 TO 3 STEP 3            
  100P%=&7780                           
  110[OPT pass%                         
  120JMP setup                          
  130JSR blank:JMP load                 
  140JSR blank:JMP savefile             
  150EQUW 0:EQUS"(C) 1992 - H.L.Clarke":
BRK                                     
  160.setup:CLD                         
  170LDA #22:JSR OSWRCH:LDA #7:JSR OSWRC
H                                       
  180LDA #&83:JSR OSBYTE½get OSHWM      
  190STY getad+1:STY putad+1:INC getad+1
½store MSB of addresses for start of old
 and new files                          
  200LDA #0:STA getad:LDA #2:STA putad½e
dited file starting @ OSHWM+2 to preserv
e on <BREAK>                            
  210½print header and soft key instruct
ions                                    
  220LDX #(header MOD 256):LDY #(header 
DIV 256):JSR print                      
  230LDX #&30:JSR skey:LDX #(mkey0 MOD 2
56):LDY #(mkey0 DIV 256):JSR print      
  240LDX #&31:JSR skey:LDX #(mkey1 MOD 2
56):LDY #(mkey1 DIV 256):JSR print      
  250LDX #9:LDA #32:JSR repeat:LDX #&32:
JSR skey:LDX #(mkey2 MOD 256):LDY #(mkey
2 DIV 256):JSR print                    
  260JSR OSNEWL:JSR OSNEWL:LDA #60:LDX #
20:JSR repeat:LDA #62:LDX #20:JSR repeat
                                        
  270LDA #28:JSR OSWRCH½set up text wind
ow                                      
  280LDA #0:JSR OSWRCH:LDA #24:JSR OSWRC
H                                       
  290LDA #39:JSR OSWRCH:LDA #6:JSR OSWRC
H                                       
  300LDA #(ftop MOD 256):SEC:SBC getad:S
TA room                                 
  310LDA #(ftop DIV 256):SBC getad+1:STA
 room+1                                 
  320LDX #(fk0 MOD 256):LDY #(fk0 DIV 25
6):JSR oscli                            
  330LDX #(fk1 MOD 256):LDY #(fk1 DIV 25
6):JSR oscli                            
  340LDX #(fk2 MOD 256):LDY #(fk2 DIV 25
6):JSR oscli                            
  350½                                  
  360½                                  
  370½                                  
  380½                                  
  390.load:LDX #(old MOD 256):LDY #(old 
DIV 256):JSR print:JSR OSNEWL           
  400LDX #8:LDA #32:JSR repeat:LDX #(wor
d MOD 256):LDY #(word DIV 256):LDA #0:JS
R OSWORD                                
  410LDA #5:LDX #(file MOD 256):LDY #(fi
le DIV 256):JSR OSFILE½get file length f
rom catalogue                           
  420½                                  
  430½                                  
  440½                                  
  450.checklen:LDA room:CMP startad:LDA 
room+1:SBC startad+1:LDA room+2:SBC star
tad+2:LDA room+3:SBC startad+3          
  460BCC toolong:JMP fload½check file no
t too long for available memory         
  470.toolong:BRK                       
  480EQUB 129                           
  490EQUS"File too long"                
  500BRK                                
  510.fload:LDA getad:STA loadad½set up 
parameter block for OSFILE              
  520LDA getad+1:STA loadad+1           
  530LDA #0:STA exad                    
  540LDA #&FF:LDX #(file MOD 256):LDY #(
file DIV 256):JSR OSFILE½load file      
  550LDA startad:CLC:ADC getad:STA endad
                                        
  560LDA startad+1:ADC getad+1:STA endad
+1½identify end of file                 
  570LDA endad:STA &72:LDA endad+1:STA &
73:LDY #0:LDA #0:STA (&72),Y½put zero by
te after end of file                    
  580½                                  
  590½                                  
  600.edit:LDA #0:STA gety:STA puty:STA 
&72:LDA #2:STA &74                      
  610LDA getad+1:STA &73:LDA putad+1:STA
 &75                                    
  620.editloop:LDY gety:LDA (&72),Y:BEQ 
finish:BMI negative½identify ruler & edi
t commands                              
  630CMP #&D:BNE notcr                  
  640JSR addall:JMP editloop            
  650.notcr:CMP #32:BCC less½identify so
ft spaces, &c                           
  660INY:STY gety                       
  670LDY puty:STA (&74),Y:INY:STY puty  
  680JMP editloop                       
  690.less:INY:STY gety:JMP editloop    
  700.negative:CMP #&80:BNE discard     
  710INY:LDA (&72),Y:CMP #67:BNE discard
                                        
  720INY:LDA (&72),Y:CMP #69:BNE discard
:INY:STY gety:JMP editloop½Command is CE
                                        
  730.discard:LDY gety                  
  740.disloop:LDA (&72),Y:CMP #13:BEQ en
druler                                  
  750INY:JMP disloop                    
  760.endruler:STY gety:JSR addget:JMP e
ditloop                                 
  770.finish:JSR addall                 
  780.savefile:JSR OSNEWL               
  790LDX #(new MOD 256):LDY #(new DIV 25
6):JSR print                            
  800LDX #8:LDA #32:JSR repeat:LDX #(wor
d MOD 256):LDY #(word DIV 256):LDA #0:JS
R OSWORD                                
  810LDA name:CMP #42:BNE sroutine½check
 for '*' as first character             
  820JSR comd:JMP savefile              
  830.sroutine:LDA #0:STA loadad:STA loa
dad+1:STA loadad+2:STA loadad+3:STA exad
:STA exad+1:STA exad+2:STA exad+3       
  840STA startad+2:STA startad+3:STA las
tbyte+2:STA lastbyte+3                  
  850LDA &74:STA lastbyte               
  860LDA &75:STA lastbyte+1:LDA putad:ST
A startad:LDA putad+1:STA startad+1½set 
yp parameter block for OSFILE           
  870LDA #0:LDX #(file MOD 256):LDY #(fi
le DIV 256):JSR OSFILE½save file        
  880JSR OSNEWL                         
  890LDX #(mback MOD 256):LDY #(mback DI
V 256):JSR print                        
  900LDX #(mquery MOD 256):LDY #(mquery 
DIV 256):JSR print                      
  910LDA #32:LDX #8:JSR OSRDCH          
  920AND #&5F:CMP #89:BNE final         
  930JMP savefile                       
  940.final:RTS                         
  950½                                  
  960½                                  
  970½                                  
  980.print:STX &70:STY &71:LDY #0      
  990.printloop:LDA (&70),Y:BEQ endprint
                                        
 1000JSR OSASCI:INY:JMP printloop       
 1010.endprint:RTS                      
 1020½                                  
 1030½                                  
 1040.blank:LDA #11:JSR OSWRCH:LDA #13:J
SR OSWRCH                               
 1050LDX #10:LDA #32                    
 1060.blankloop:JSR OSWRCH:DEX:BNE blank
loop                                    
 1070LDA #&D:JSR OSWRCH:RTS             
 1080½                                  
 1090½                                  
 1100.skey:LDA #129:JSR OSWRCH          
 1110LDA #157:JSR OSWRCH:LDA #135:JSR OS
WRCH                                    
 1120LDA #102:JSR OSWRCH                
 1130TXA:JSR OSWRCH                     
 1140LDA #32:JSR OSWRCH:JSR OSWRCH      
 1150LDA #156:JSR OSWRCH                
 1160LDA #32:JSR OSWRCH:RTS             
 1170½                                  
 1180½                                  
 1190.addall:STY gety:LDY puty:BEQ mult:
LDA #32:JMP insert                      
 1200.mult:LDA &74:SEC:SBC #1:STA &76   
 1210LDA &75:SBC #0:STA &77             
 1220LDA #13:STA (&76),Y                
 1230.insert:STA (&74),Y:INY:TYA:CLC    
 1240ADC &74:STA &74                    
 1250LDA #0:STA puty:ADC &75:STA &75    
 1260.addget:LDY gety:INY:TYA:CLC       
 1270ADC &72:STA &72                    
 1280LDA #0:STA gety:ADC &73:STA &73    
 1290RTS                                
 1300½                                  
 1310½                                  
 1320.comd:LDX #(name MOD 256):LDY #(nam
e DIV 256):JSR oscli:RTS                
 1330½                                  
 1340½                                  
 1350.repeat:JSR OSWRCH                 
 1360DEX:BNE repeat                     
 1370RTS                                
 1380½                                  
 1390½                                  
 1400.word:EQUW name½parameter block for
 OSWORD 0                               
 1410EQUB 32½maximum line length        
 1420EQUB 32½lowest acceptable character
                                        
 1430EQUB 126½highest acceptable charact
er                                      
 1440BRK                                
 1450.file:EQUW name½parameter block for
 OSFILE                                 
 1460.loadad:EQUD 0                     
 1470.exad:EQUD 0                       
 1480.startad:EQUD 0                    
 1490.lastbyte:EQUD 0½end address + 1   
 1500BRK                                
 1510BRK                                
 1520.header:EQUB 132:EQUB 157:EQUB 135 
 1530EQUS"VIEW to text conversion for 8b
s "                                     
 1540EQUB 156:EQUB 13:BRK               
 1550.mkey0:EQUS"Restart  ":BRK         
 1560.mkey1:EQUS"Load/Edit":EQUB 13:BRK 
 1570.mkey2:EQUS"Save/"                 
 1580.mback:EQUS"Backup":BRK            
 1590.old:EQUS"Name of file to be conver
ted :":EQUB &D:BRK                      
 1600.new:EQUS"Name of converted file to
 be saved":EQUB &D:EQUS"OR * command if 
required":EQUB &D:BRK                   
 1610.fk0:EQUS"KEY 0 CALL &7780 |M":EQUB
 13                                     
 1620.fk1:EQUS"KEY 1 CALL &7783 |M":EQUB
 13                                     
 1630.fk2:EQUS"KEY 2 CALL &7789 |M":EQUB
 13                                     
 1640.name:EQUS"                        
               "                        
 1650.mquery:EQUS" ?   Y/N":EQUB &0D:BRK
                                        
 1660.getad:EQUW 0                      
 1670.putad:EQUW 0                      
 1680.gety:BRK                          
 1690.puty:BRK                          
 1700.room:EQUD 0                       
 1710.endad:EQUW 0                      
 1720]                                  
 1730NEXT                               
 1740VDU3                               
 1750INPUT"Save ViewCon ?  Y/N ",yn$    
 1760IF LEFT$(yn$,1)="Y" OR LEFT$(yn$,1)
="y" THEN 1770 ELSE END                 
 1770PRINT'"Press Space Bar when ready" 
 1780IF GET=32 THEN 1790 ELSE 1770      
 1790*SAVE ViewCon 7780 7C00            
 1800INPUT"Backup copy ?  Y/N ",yn$     
 1810IF LEFT$(yn$,1)="Y" OR LEFT$(yn$,1)
="y" THEN 1770                          
 1820END