📄 roff3.s
字号:
///roff3 -- runoffskipcont: jsr pc,getchar mov r0,r2 jsr pc,alph2 beq skipcont1: cmp $' ,r0 bne 1f jsr pc,getchar br 1b1: mov r0,ch rts pcrbreak: 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 1f3: jsr pc,eject1: tst nl bne 3f mov ma1,r0 jsr r5,nlines; newline bit $1,pn bne 1f jsr r5,headout; ehead br 2f1: jsr r5,headout; ohead2: mov ma2,r0 jsr r5,nlines; newline dec skip bge 3b3: mov po,r0 jsr pc,space jsr pc,donum mov un,r0 jsr pc,space jsr pc,jfo mov $line,r21: movb (r2)+,r0 cmp $' ,r0 bne 2f jsr pc,fill tst nc bne 1b br 3f2: jsr pc,putchar dec nc bgt 1b3: jsr pc,newline clr nwd clr ne mov in,un4: jsr pc,setnel rts pcjfo: 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 r02: jsr pc,space1: rts pcdonum: tst numbmod beq 2f dec nn blt 1f mov $5,r0 add ni,r0 jsr pc,space rts pc1: clr r0 cmp lnumber,$100. bge 1f inc r0 cmp lnumber,$10. bge 1f inc r01: add ni,r0 jsr pc,space mov lnumber,r0 jsr r5,decimal; putchar mov $2,r0 jsr pc,space inc lnumber2: rts pcnewline: mov $'\n,r0 jsr pc,putchar inc nl rts pcnline: mov nl,r0 beq 1f cmp r0,bl beq 1f jsr pc,newline1: rts pcnumber: jsr pc,skipcontnumber1: 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 1b2: mov r0,2(sp) br 1b3: add $'0,r0 mov r0,ch mov (sp)+,r0 bne 1f mov $1,r3 mov r3,r01: mov (r5)+,r0 beq 1f mov (r0),r01: mov (sp)+,r1 cmp r1,$'- bne 1f sub r3,r0 br 2f1: cmp r1,$'+ bne 1f add r3,r0 br 2f1: mov r3,r02: mov (sp)+,r3 mov (sp)+,r1 rts r5eject: 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 3f2: jsr r5,headout; ofoot3: cmp numbmod,$1 bne 3f mov $1,lnumber3: mov ma4,r0 jsr r5,nlines; newline clr nl inc pn1: cmp pn,pto ble 1f jsr pc,flush jmp place1: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; 11:/ mov r1,sp/ sys signal; 2; place2: rts pcstoreline: cmp linep,$line+linsiz bhis 1f movb r0,*linep inc linep jsr pc,width add r1,ne sub r1,nel inc nc1: rts pcgetword: 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 1b2: cmp $' ,r0 bne 2f jsr pc,storeword br 1b2: mov r0,-(sp) mov $' ,r0 jsr pc,storeword tst spaceflg beq 2f jsr pc,storeword clr spaceflg2: mov (sp)+,r02: 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 spaceflg1: add $2,2(sp)1: clrb (r2)+3: tst (sp)+ mov $word,wordp tst nc bne 1f jsr pc,setnel1: rts pcsetnel: mov $line,linep mov ll,nel sub un,nel clr ne clr fac clr fmq rts pcstoreword: jsr pc,width add r1,wne inc wch movb r0,(r2)+ rts pcneed: mov r0,r3 mpy ls,r3 mov r3,r0need2: add nl,r0 cmp r0,bl ble 1f jsr pc,eject1: rts pcmin: tst r0 bge 1f clr r01: rts pcgetname: mov r1,-(sp) mov r2,-(sp) mov (r5)+,r1 mov $18.,r21: jsr pc,getchar cmp r0,$041 blt 2f cmp r0,$0176 ble 4f2: mov r0,ch3: clrb (r1)+ mov (sp)+,r2 mov (sp)+,r1 rts r54: movb r0,(r1)+ dec r2 beq 3b br 1bcopyb: 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 4f2: cmp r0,$'. bne 9f cmp (sp),$1 bgt 3f blt 9f inc (sp) br 4f3: dec r1 clr r0 inc (sp) br 4f9: clr (sp)4: tst skp bne 5f jsr pc,wbf5: cmp (sp),$3 bne 1b tst (sp)+ tst skp bne 6f mov r1,nextb6: rts pcpopi: cmp ilistp,$ilist beq 1f sub $2,ilistp mov *ilistp,ip1: rts pcwbf: mov r0,char mov r1,offb mov ibf,r0 sys seek; offb:..;0 mov ibf,r0 sys write; char;1 inc r1 cmp ibf1,ofile bne 1f mov $-1,ofile1: rts pcrbf: mov ip,r1 mov ibf1,nfile jsr pc,rdsufb tstb r0 bne 2f jsr pc,popi rts pc2: inc ip rts pcalph: movb (r0),r2alph2: cmp r2,$'A blo 1f cmp r2,$'Z blos 2f cmp r2,$'a blo 1f cmp r2,$'z bhi 1f2: sez rts pc1: clz rts pcrdsufb: mov r1,-(sp) bic $77,r1 cmp r1,sufoff bne 1f cmp nfile,ofile beq 2f1: mov r1,sufoff mov nfile,ofile mov nfile,r0 sys seek; sufoff: -1; 0 mov nfile,r0 sys read; sufbuf; 512.2: mov (sp),r0 bic $!77,r0 movb sufbuf(r0),r0 mov (sp)+,r1 rts pc
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -