8-Bit Software Online Conversion
                
             
        
        
    
:0.$.AMCOM2 - Listing
    
       10REM AMCOM listing II - loaded as AM
COM2                                    
   20REM by H.L.Clarke and S.B.Yeo      
   30REM (C) 1991                       
   40MODE 7:HIMEM=U%                    
   50DIM F$(63)                         
   60B%=0:Q%=0                          
   70READ centry,transfer,name,secread,l
ong,stload,ecomp,fcomp,subd,title,fparm,
fbuff,ftrack,fsec,secnums,fresult,faddr,
pparms,putdata,putlength,pointer,putbyte
,command,cstring                        
   80?&7B15=3:?&7B16=&53:!faddr=fparm   
   90PRINT''"Printout of filenames of"'"
transferred files ?"                    
  100INPUT yn$                          
  110IF LEFT$(yn$,1)="Y" OR LEFT$(yn$,1)
="y" THEN Q%=2                          
  120PRINT''"Insert capital letter to be
 first"'"character of ADFS sub-directori
es":REPEAT:INPUT F$:Z%=ASC(F$):UNTIL Z%>
64 AND Z%<91                            
  130PRINT"Insert blank formatted ADFS d
isc"'"in drive 0"                       
  140PRINT                              
  150PRINT'"Insert Amcom disc in drive 1
"'                                      
  160PRINT"Press Space Bar to proceed"' 
  170IF GET=32 THEN 180 ELSE 160        
  180*ADFS                              
  190*MOUNT0                            
  200FOR N%=B% TO (B%+3):$cstring="CDIR 
"+CHR$(Z%)+STR$(N%):CALL command:NEXT   
  210FOR D%=1 TO 3 STEP 2               
  220*DISC                              
  230?fparm=D%:CALL secread             
  240IF ?&7328=0 THEN B%=B%+2:GOTO 680  
  250E%=0:PRINT'"Checking filenames -"' 
  260REPEAT                             
  270E%=E%+1:PROCaddr                   
  280CALL name                          
  290F$=$&7BE8:IF LEN(F$)<11 THEN 330   
  300PRINT"Filename ";F$;" is too long"'
"- please replace with one no more than"
'"ten characters in length."''          
  310INPUT F$:IF LEN(F$)>10 THEN 300    
  320IF INSTR(F$,".")<>0 THEN PRINT"Bad 
directory"'"please try again"':GOTO310  
  330F$(E%)=F$                          
  340UNTIL ?&7BF9=0                     
  350FOR E%=1 TO ?&7B90                 
  360$&7B60=F$(E%):?&73=LEN(F$(E%)):?&7B
7A=E%:CALL ecomp                        
  370FOR F%=1 TO ?&7B90                 
  380IF E%=F% OR LEN(F$(F%))<>?&73 THEN 
580                                     
  390$&7B6C=F$(F%):?&7B7B=F%:CALL fcomp 
  400IF ?&7BF8=0 THEN 580               
  410PRINT"The following filenames will 
be"'"equated by ADFS"''                 
  420PRINT"(1)  ";F$(E%);"  directory ";
CHR$?(&7B90+E%)                         
  430PRINT"(2)  ";F$(F%);"  directory ";
CHR$?(&7B90+F%)                         
  440PRINT                              
  450REPEAT                             
  460PRINT"Will you change (1) or (2) ?"
                                        
  470INPUT H%                           
  480UNTIL H%=1 OR H%=2                 
  490PRINT'"Insert new filename"        
  500INPUT F3$                          
  510IF LEN(F3$)>10 THEN PRINT"Too long 
!":GOTO 490                             
  520IF INSTR(MID$(F3$,3),".")=0 THEN 53
0 ELSE 540                              
  530IF INSTR(F3$,".")=0 OR INSTR(F3$,".
")=2 THEN 550 ELSE 540                  
  540PRINT"Bad directory !":GOTO 490    
  550IF H%=2 THEN 570 ELSE IF INSTR(F3$,
".")=0 THEN F$(E%)=F3$ ELSE F$(E%)=MID$(
F3$,3):?(&7B90+E%)=ASC(LEFT$(F3$,1))    
  560GOTO580                            
  570IF INSTR(F3$,".")=0 THEN F$(F%)=F3$
 ELSE F$(F%)=MID$(F3$,3):?(&7B90+F%)=ASC
(LEFT$(F3$,1))                          
  580NEXT F%                            
  590NEXT E%                            
  600IF ?&7BF8<>0 THEN 350              
  610PRINT CHR$(Q%):PRINT'''"Transferrin
g from drive ";STR$(D%):PRINT"Disc ";:CA
LL title:PRINT                          
  620IF ?&7B90>&20 THEN I%=&20 ELSE I%=?
&7B90                                   
  630PROCtransfer(1,I%)                 
  640B%=B%+1                            
  650IF ?&7B90<&21 THEN 670             
  660PROCtransfer(33,?&7B90)            
  670B%=B%+1                            
  680VDU3                               
  690NEXT D%                            
  700PRINT':PRINTTAB(18)"***"'':INPUT"Tr
ansfer another Amcom disc ",yn$         
  710IF LEFT$(yn$,1)="Y" OR LEFT$(yn$,1)
="y" THEN 140                           
  720PRINT''"The ADFS disc will need som
e editing."'"Note that files are now in 
ADFS"'"directories from ";CHR$(Z%);"0 to
 ";CHR$(Z%);STR$(B%-1);" inclusive."    
  730END                                
10000DEFPROCaddr                        
10010X%=&7300+(&20*E%):Y%=X%DIV256      
10020?&7B7A=E%                          
10030ENDPROC                            
10040DEFPROCA                           
10050*ADFS                              
10060*MOUNT0                            
10070$cstring="DIR "+CHR$(Z%)+STR$(B%):C
ALL command                             
10080ENDPROC                            
10090DEFPROCtransfer(X%,A%)             
10100CALL subd                          
10110REM                                
10120PROCA                              
10130IF ?&7BD0=0 THEN 10170             
10140FOR F%=1 TO ?&7BD0                 
10150$cstring="CDIR "+CHR$(?(&7BD0+F%)):
CALL command                            
10160NEXT                               
10170FOR E%=X% TO A%                    
10180PROCaddr                           
10190*DISC                              
10200CALL centry:?ftrack=!&7B80 DIV 10:?
fsec=!&7B80 MOD 10                      
10210!fbuff=HIMEM:PRINT CHR$(?&7BFF);"."
;$&7BE8;STRING$((18-LEN($&7BE8))," ");  
10220IF !&7B84>W% THEN PROClong:GOTO 102
60                                      
10230R%=0:CALL stload:IF ?fresult<>0 THE
N PROCde:GOTO10290                      
10240PRINT"->  ";                       
10250PROCA:PROCsave                     
10260IF R%=1 THEN 10290                 
10270PRINT CHR$(Z%);STR$(B%);".";F$     
10280IF ?&7BFF>&80 THEN $cstring="ACCESS
 "+F$+" R":CALL command                 
10290NEXT E%                            
10300ENDPROC                            
10310DEFPROCsave                        
10320IF ?(&7B90+E%)=&24 THEN F$=F$(E%) E
LSE F$=CHR$(?(&7B90+E%))+"."+F$(E%)     
10330$cstring="SAVE "+F$+" "+STR$÷HIMEM+
" "+STR$÷(HIMEM+!&7B84)+" "+FNadr(&7BE2,
&C0)+" "+FNadr(&7BE0,&C):CALL command   
10340ENDPROC                            
10350DEFPROClong                        
10360L%=!&7B84:!&7B84=W%:M%=0:T%=0      
10370REM L%=total length of file yet unl
oaded, M% is marker for very long file (
>2*W%),T%=PTR                           
10380R%=0:CALL stload:IF ?fresult<>0 THE
N PROCde:GOTO 10530                     
10390PRINT"->  ";                       
10400PROCA:PROCsave                     
10410L%=L%-W%:IF L%>W% THEN M%=1 ELSE M%
=0                                      
10420IF M%=1 THEN !&7B84=W% ELSE !&7B84=
L%                                      
10430*DISC                              
10440!fbuff=HIMEM:R%=0:CALL long:IF ?fre
sult<>0 THEN PROCde:GOTO 10530          
10450PROCA:T%=T%+W%:!pointer=T%         
10460!putdata=HIMEM:!putlength=!&7B84   
10470$&7B60=F$                          
10480R%=0:CALL putbyte:IF ?fresult<>0 TH
EN PROCde:GOTO 10530                    
10490REM                                
10500REM                                
10510REM                                
10520IF M%=1 THEN 10410                 
10530ENDPROC                            
10540DEFPROCde                          
10550R%=1                               
10560PRINTTAB(20)"not transferable"     
10570ENDPROC                            
15000DEFFNadr(I%,J%)                    
15010REM I% represents load address (&7B
E0) or execution address (&7BE2)        
15020REM J% represents bits of &7BE6 whi
ch when set imply a second processor add
ress (&C for load, &C0 for execution)   
15030IF (?&7BE6 AND J%)=0 THEN K%=0 ELSE
 K%=&FFFF0000                           
15040A$=STR$÷((!I%AND&FFFF)+K%)         
15050=A$                                
20000DATA &7000,&7035,&707A,&7093,&70EE,
&7101,&7199,&71B4,&71F0,&7236,&7B10,&7B1
1,&7B17,&7B18,&7B19,&7B1A,&7B1B,&7B2A,&7
B2B,&7B2F,&7B33,&7263,&725B,&72D0