if1 ifndef %%scan,.insrt ksc;scan > if2 ife %%scan,.insrt ksc;scan > fnpard": fnpart"=fnpard+2 .begin fnpar ;filename parser. bpt to asciz string in 1 ; returns dev/sname/fn1/fn2 in accs 1,2,3,4 a=1 b=2 c=3 d=4 setzm fmode' ;fnpard entry point = DDT type caia setom fmode ;fnpart entry point = TECO type fnpr: scinit(in,asciz,a) ;initialize input-channel. ptr from acc 1 setzm fdev' ;clear accumulated vars setz b, ;fdir setzb c,d ;fn1,fn2 fnpr20: scan(in,,fbrktb,fstr',brkchr',[ ifbrk 40,[pushj p,fcvstr ? pushj p,ffnput ? sccont] ifbrk [";][pushj p,fcvstr ? move b,a ? sccont] ifbrk ":,[pushj p,fcvstr ? movem a,fdev ? sccont] ]) pushj p,fcvstr ;handle EOF or foreign char pushj p,ffnput move a,fdev popj p, ffnput: jumpe a,[popj p,] ;nothing to deposit skipn fmode ;DDT or TECO style? jrst [jumpe c,[move c,a ? popj p,] ;DDT move d,a ? popj p,] jumpe d,[move d,a ? popj p,] ;TECO move c,d move d,a popj p, fbrktb: brktbl [ brkset [: ; ]%brksk ] ;convert cnt,,strloc in a to sixbit wd in a fcvstr: move a,fstr pushae p,[b,c,d] hlrz d,a ;get cnt caile d,6 movei d,6 ;force to LE 6 hrli a,440700 movem a,fcvspt' setz a, jumpe d,fcvst9 move c,[440600,,a] fcvst5: ildb b,fcvspt cail b,"a caile b,"z caia ;not lowercase subi b,40 ;cvt to uppercase subi b,40 ;cvt to 6bit idpb b,c ;deposit sojg d,fcvst5 fcvst9: popae p,[d,c,b] popj p, .end fnpar