/ / /roff3 -- runoff skipcont: jsr pc,getchar mov r0,r2 jsr pc,alph2 beq skipcont 1: cmp $' ,r0 bne 1f jsr pc,getchar br 1b 1: mov r0,ch rts pc rbreak: tst nc ble 4f clrb *linep inc totout mov ls,r0 dec r0 jsr r5,nlines; nline tst pl beq 4f cmp nl,bl bne 1f 3: jsr pc,eject 1: tst nl bne 3f mov ma1,r0 jsr r5,nlines; newline bit $1,pn bne 1f jsr r5,headout; ehead br 2f 1: jsr r5,headout; ohead 2: mov ma2,r0 jsr r5,nlines; newline dec skip bge 3b 3: mov po,r0 jsr pc,space jsr pc,donum mov un,r0 jsr pc,space jsr pc,jfo mov $line,r2 1: movb (r2)+,r0 cmp $' ,r0 bne 2f jsr pc,fill tst nc bne 1b br 3f 2: jsr pc,putchar dec nc bgt 1b 3: jsr pc,newline clr nwd clr ne mov in,un 4: jsr pc,setnel rts pc jfo: tst jfomod beq 1f mov fac,r0 add fmq,r0 beq 1f clr fac clr fmq mov nel,r0 cmp jfomod,$1 bne 2f asr r0 2: jsr pc,space 1: rts pc donum: tst numbmod beq 2f dec nn blt 1f mov $5,r0 add ni,r0 jsr pc,space rts pc 1: clr r0 cmp lnumber,$100. bge 1f inc r0 cmp lnumber,$10. bge 1f inc r0 1: add ni,r0 jsr pc,space mov lnumber,r0 jsr r5,decimal; putchar mov $2,r0 jsr pc,space inc lnumber 2: rts pc newline: mov $'\n,r0 jsr pc,putchar inc nl rts pc nline: mov nl,r0 beq 1f cmp r0,bl beq 1f jsr pc,newline 1: rts pc number: jsr pc,skipcont number1: mov r1,-(sp) mov r3,-(sp) clr r3 clr -(sp) clr -(sp) 1: jsr pc,getchar cmp r0,$'+ beq 2f cmp r0,$'- beq 2f sub $'0,r0 cmp r0,$9. bhi 3f inc (sp) mpy $10.,r3 add r0,r3 br 1b 2: mov r0,2(sp) br 1b 3: add $'0,r0 mov r0,ch mov (sp)+,r0 bne 1f mov $1,r3 mov r3,r0 1: mov (r5)+,r0 beq 1f mov (r0),r0 1: mov (sp)+,r1 cmp r1,$'- bne 1f sub r3,r0 br 2f 1: cmp r1,$'+ bne 1f add r3,r0 br 2f 1: mov r3,r0 2: mov (sp)+,r3 mov (sp)+,r1 rts r5 eject: tst pl beq 1f tst nl beq 1f mov pl,r0 sub nl,r0 sub ma4,r0 sub hx,r0 jsr r5,nlines; newline bit $1,pn bne 2f jsr r5,headout; efoot br 3f 2: jsr r5,headout; ofoot 3: cmp numbmod,$1 bne 3f mov $1,lnumber 3: mov ma4,r0 jsr r5,nlines; newline clr nl inc pn 1: cmp pn,pto ble 1f jsr pc,flush jmp place 1: istop: tst stop beq 2f cmp pn,pfrom blo 2f jsr pc,flush / mov sp,r1 / sys signal; 2; 1f clr r0 sys read; garb; 1 1: / mov r1,sp / sys signal; 2; place 2: rts pc storeline: cmp linep,$line+linsiz bhis 1f movb r0,*linep inc linep jsr pc,width add r1,ne sub r1,nel inc nc 1: rts pc getword: mov $word,r2 clr wne clr wch clr nhyph clr hypedf mov $word,wordp clr -(sp) 1: jsr pc,gettchar cmp r0,$'\n beq 3f cmp r0,ohc bne 2f inc hypedf br 1b 2: cmp $' ,r0 bne 2f jsr pc,storeword br 1b 2: mov r0,-(sp) mov $' ,r0 jsr pc,storeword tst spaceflg beq 2f jsr pc,storeword clr spaceflg 2: mov (sp)+,r0 2: jsr pc,storeword bisb (sp),-1(r2) /add in hyphen clr (sp) jsr pc,gettchar cmp r0,ohc bne 1f inc hypedf jsr pc,gettchar mov $200,(sp) 1: cmp $' ,r0 beq 1f cmp $'\n,r0 bne 2b cmpb -1(r2),$'. bne 1f inc spaceflg 1: add $2,2(sp) 1: clrb (r2)+ 3: tst (sp)+ mov $word,wordp tst nc bne 1f jsr pc,setnel 1: rts pc setnel: mov $line,linep mov ll,nel sub un,nel clr ne clr fac clr fmq rts pc storeword: jsr pc,width add r1,wne inc wch movb r0,(r2)+ rts pc need: mov r0,r3 mpy ls,r3 mov r3,r0 need2: add nl,r0 cmp r0,bl ble 1f jsr pc,eject 1: rts pc min: tst r0 bge 1f clr r0 1: rts pc getname: mov r1,-(sp) mov r2,-(sp) mov (r5)+,r1 mov $18.,r2 1: jsr pc,getchar cmp r0,$041 blt 2f cmp r0,$0176 ble 4f 2: mov r0,ch 3: clrb (r1)+ mov (sp)+,r2 mov (sp)+,r1 rts r5 4: movb r0,(r1)+ dec r2 beq 3b br 1b copyb: mov (r1),r1 jsr pc,flushi clr nlflg mov $1,-(sp) 1: jsr pc,getchar cmp r0,$'\n bne 2f mov $1,(sp) clr nlflg br 4f 2: cmp r0,$'. bne 9f cmp (sp),$1 bgt 3f blt 9f inc (sp) br 4f 3: dec r1 clr r0 inc (sp) br 4f 9: clr (sp) 4: tst skp bne 5f jsr pc,wbf 5: cmp (sp),$3 bne 1b tst (sp)+ tst skp bne 6f mov r1,nextb 6: rts pc popi: cmp ilistp,$ilist beq 1f sub $2,ilistp mov *ilistp,ip 1: rts pc wbf: mov r0,char mov r1,offb mov ibf,r0 sys lseek;0; offb:..;0 /actually lseek mov ibf,r0 sys write; char;1 inc r1 cmp ibf1,ofile bne 1f mov $-1,ofile 1: rts pc rbf: mov ip,r1 mov ibf1,nfile jsr pc,rdsufb tstb r0 bne 2f jsr pc,popi rts pc 2: inc ip rts pc alph: movb (r0),r2 alph2: cmp r2,$'A blo 1f cmp r2,$'Z blos 2f cmp r2,$'a blo 1f cmp r2,$'z bhi 1f 2: sez rts pc 1: clz rts pc rdsufb: mov r1,-(sp) bic $77,r1 cmp r1,sufoff bne 1f cmp nfile,ofile beq 2f 1: mov r1,sufoff mov nfile,ofile mov nfile,r0 sys lseek;0; sufoff: -1; 0 /actually lseek mov nfile,r0 sys read; sufbuf; 512. 2: mov (sp),r0 bic $!77,r0 movb sufbuf(r0),r0 mov (sp)+,r1 rts pc