📄 nroff2.s
字号:
/// nroff2casead: inc ad jsr pc,skipcont tst nlflg bne 1f jsr pc,getchar cmp r0,$'r /right adj, left ragged bne 0f mov $2,jfomod br 1f0: cmp r0,$'l /left adj, right ragged bne 0f clr jfomod clr ad br 1f0: cmp r0,$'c /centered adj bne 0f mov $1,jfomod br 1f0: clr jfomod /left and right adj inc ad1: rts pccasebr: jsr pc,rbreak rts pccasecc: clr -(sp) br 0fcasec2: mov pc,-(sp)0: jsr pc,skipcont jsr pc,getchar cmp r0,$'\n beq 2f tst (sp) bne 1f mov r0,cc br 2f1: mov r0,c22: mov r0,ch tst (sp)+ rts pccasece: jsr r5,number; 0 jsr pc,min mov r0,-(sp) jsr pc,rbreak mov (sp)+,ce rts pccasefi: jsr pc,rbreak inc fi rts pccasein: jsr pc,skipcont tst nlflg beq 1f mov in1,r0 br 2f1: jsr r5,number1; in jsr pc,min2: mov r0,-(sp) jsr pc,rbreak mov in,in1 mov (sp)+,in tst nc bne 1f mov in,un jsr pc,setnel1: rts pccaseli: jsr r5,number; 0 jsr pc,min mov r0,lit mov frame,litlev cmp nl,$-1 bne 0f jsr pc,newln10: rts pccasell: jsr pc,skipcont tst nlflg beq 1f mov ll1,r0 br 2f1: jsr r5,number1; ll jsr pc,min2: mov ll,ll1 mov r0,ll2: jsr pc,setnel rts pccasels: jsr pc,skipcont tst nlflg beq 1f mov ls1,r0 br 2f1: jsr r5,number1; ls dec r0 jsr pc,min inc r02: mov r0,-(sp)/ jsr pc,rbreak mov ls,ls1 mov (sp)+,ls rts pccasens: inc nls rts pccasers: clr nls rts pccasena: clr ad rts pccasene: jsr r5,number; 0 jsr pc,min jsr pc,need2 rts pccasenf: jsr pc,rbreak clr fi rts pccasepn: jsr pc,skipcont bne 1f jsr r5,number1; pn jsr pc,min mov r0,npn1: rts pccasebp: mov ilistp,-(sp) clr -(sp) jsr pc,skipcont bne 1f jsr r5,number1; pn jsr pc,min mov r0,(sp)1: jsr pc,rbreak mov (sp)+,r0 beq 0f mov r0,npn0: bne 2f tst nls bne 3f2: mov (sp),r0 jsr pc,eject3: tst (sp)+ rts pccasepl: jsr pc,skipcont tst nlflg bne 1f jsr r5,number1; pl mov r0,pl rts pc1: mov $66.,pl rts pccasesp: mov pc,-(sp) br 0fcasesp1: clr -(sp)0: mov r0,-(sp) tst nb bne 0f jsr pc,rbreak0: tst nls bne 2f clr r0 jsr pc,findt tst nb bne 1f tst trap bne 2f1: tst 2(sp) beq 1f jsr r5,number;0 mov r0,(sp)1: cmp r1,(sp) bge 1f mov r1,(sp)1: mov (sp),r0 ble 3f jsr r5,nlines; newline2: cmp (sp)+,(sp)+ rts pc3: add nl,r0 cmp (sp)+,(sp)+ br casert1casert: mov markline,r2 jsr pc,skipcont bne 0f jsr r5,number1;nlcasert1: mov r0,r20: tst r2 blt 2f cmp r2,nl bge 2f mov nl,r1 mov r2,nl sub r2,r1 mov r1,r21: mov $036,r0 jsr pc,putchar dec r2 bgt 1b mov $015,r0 jsr pc,putchar2: rts pccasesv: clr r0 jsr pc,findt jsr r5,number; 0 cmp r1,r0 bge 1f mov r0,sv rts pc1: jsr r5,nlines; newline rts pccaseos: tst sv beq 2f clr r0 jsr pc,findt cmp r1,sv bge 1f rts pc1: mov sv,r0 clr sv jsr r5,nlines; newline2: rts pccasetr: jsr pc,skipcont1: jsr pc,getchar cmp r0,$'\n beq 1f mov r0,r1 jsr pc,getchar cmp r0,$'\n bne 2f mov $' ,r02: movb r0,trtab(r1) br 1b1: rts pccaseta: clr -(sp) mov $tabtab,r11: jsr pc,getchar tst nlflg bne 1f cmpb r0,$'+ bne 0f inc (sp) br 2f0: cmpb r0,$'- beq 2f cmpb r0,$'0 blo 1b cmpb r0,$'9 bhi 1b2: mov r0,ch jsr pc,atoi beq 1f jsr pc,min dec r0 ble 1f cmp r1,$tabtab beq 0f tst (sp) bne 3f cmp r0,-2(r1) bgt 0f3: add -2(r1),r00: clr (sp) mov r0,(r1)+ cmp r1,$etabtab blo 1b tst -(r1)1: tst (sp)+ clr (r1) rts pccaseti: jsr r5,number; in jsr pc,min mov r0,-(sp) jsr pc,rbreak mov (sp)+,un1 jsr pc,setnel rts pccaseul: jsr r5,number; 0 jsr pc,min mov r0,ul rts pccasetl: jsr pc,header rts pccaselt: jsr pc,skipcont tst nlflg beq 1f mov llh1,r0 br 2f1: jsr r5,number1; llh jsr pc,min2: mov llh,llh1 mov r0,llh rts pccasehc: jsr pc,skipcont jsr pc,getchar cmp r0,$'\n bne 1f movb $200,r01: mov r0,ohc rts pccasetc: jsr pc,skipcont jsr pc,getchar cmp r0,$'\n bne 1f mov $014,r01: mov r0,tabc rts pccaselc: jsr pc,skipcont jsr pc,getchar cmp r0,$'\n bne 1f mov $'.,r01: mov r0,dotc rts pccasenc: jsr pc,skipcont jsr pc,getchar cmp r0,$'\n bne 1f mov $034,r01: mov r0,numc rts pccasehy: mov $1,hyf jsr pc,skipcont bne 1f jsr pc,atoi beq 1f jsr pc,min mov r0,hyf1: rts pccasenh: clr hyf rts pccasenp: jsr pc,skipcont tst nlflg beq 2f clr ni mov $1,nms mov $1,ndf rts pccasenm: clr numbmod clr nn jsr pc,skipcont tst nlflg beq 1f rts pc1: inc numbmod jsr r5,number1; lnumber jsr pc,min mov r0,lnumber jsr pc,skipcont2: jsr r5,3f; ndf tst ndf bne 1f inc ndf1: jsr pc,skipcont jsr r5,3f; nms jsr pc,skipcont jsr r5,3f; ni rts pc3: tst nlflg bne 4f jsr pc,atoi beq 4f jsr pc,min mov r0,*(r5)4: tst (r5)+ rts r5casenn: jsr r5,number; 0 jsr pc,min mov r0,nn rts pccasear: clr ro rts pccaseroc: mov $2,ro rts pccasero: mov $1,ro rts pccasenx: jsr pc,skipcont jsr r5,getname; nextf inc nx jsr pc,nextfile inc nlflg clr ip clr ap clr nspace clr pendt mov $ilist,ilistp rts pccasepo: jsr pc,skipcont tst nlflg beq 1f mov po1,r0 br 2f1: jsr r5,number1; po jsr pc,min2: mov r0,-(sp)/ jsr pc,rbreak mov po,po1 mov (sp)+,po rts pccaseig: inc skp jsr pc,copyb rts pccasern:/ inc lgf jsr pc,skipcont jsr r5,getname;bname beq 2f jsr pc,findmn beq 2f mov oldptr,-(sp)/ inc lgf jsr pc,skipcont jsr r5,getname;bname beq 1f jsr pc,findmn jsr pc,clrold mov (sp),r1 tst -(r1) mov (r1),(sp) bic $77777,(sp) mov bname,(r1) bis (sp),(r1)1: tst (sp)+2: rts pccaserm:/ inc lgf jsr pc,skipcont jsr r5,getname;bname beq 1f jsr pc,findmn jsr pc,clrold1: rts pccaseas: inc appcaseds: inc ds br casedecaseam: inc appcasede: tst op beq 1f jsr pc,wbfl1:/ inc lgf jsr pc,skipcont jsr r5,getname; bname bne 1f clr r1 br 6f1: clr skp jsr pc,finds beq 7f tst ds beq 0f tst skp bne 5f jsr pc,copys br 5f0: jsr pc,copyb5: jsr pc,wbfl jsr pc,clrold tst newptr beq 0f bis $100000,bname mov bname,*newptr0: mov r1,-(sp) mov apptr,r1 beq 0f mov $004,r0 jsr pc,wbt0: mov (sp)+,r16: clr app clr ds rts pc7: tst macerr bne 0f jsr r5,stringfl; 8f0: inc macerr cmp macerr,$1 jeq edone jmp done2/ br 6b8: <Too many string/macro names.\n\0> .evenfindmn: mov $contab,r11: mov (r1)+,r0 bic $100000,r0 cmp bname,r0 beq 2f cmp (r1)+,$-1 bne 1b clr r12: mov r1,oldptr rts pcfinds: jsr pc,findmn clr newptr clr apptr clr aplnk tst app beq 0f tst oldptr bne 5f0: mov $contab,r11: tst (r1)+ beq 2f cmp (r1)+,$-1 bne 1b1: inc skp clr r1 rts pc2: jsr pc,alloc beq 1b tst oldptr bne 3f4: tst -(r1) bis $100000,bname mov bname,(r1)+ mov nextb,(r1) br 6f3: tst diflg bne 4b mov nextb,(r1) tst -(r1) mov r1,newptr br 6f5: tst -(r1) bmi 1f clr app br 0b1: tst (r1)+ clr oldptr mov ip,-(sp) mov (r1),ip1: jsr pc,rbf tst r0 bne 1b mov ip,r1 mov r1,apptr tst diflg bne 0f jsr pc,incoff0: mov r1,nextb mov (sp)+,ip6: clr app mov nextb,r1 rts pcclrold: mov oldptr,r0 beq 1f mov (r0),-(sp) clr (r0) tst -(r0) bmi 0f clr (sp)0: clr (r0) mov (sp)+,r0 beq 1f jsr pc,free1: rts pccaseda: inc appcasedi:/ inc lgf clr ditf jsr pc,skipcont jsr r5,getname; bname beq 1f tst op bne 3f inc diflg jsr pc,finds beq 3f mov r1,op jsr pc,clrold/ mov blss,sblss/ mov alss,salss/ clr blss/ clr alss clr dnl br 3f1: tst op beq 3f clr r0 jsr pc,pchar1 jsr pc,wbfl/ mov sblss,blss/ mov salss,alss clr op3: clr app clr diflg rts pccaseev: jsr pc,skipcont tst nlflg beq 2f cmp evp,$elist ble 5f1: sub $2,evp mov *evp,-(sp) br 3f2: jsr pc,atoi beq 6f cmp r0,nev bgt 6f tst r0 blt 6f cmp evp,$eliste bgt 6f mov r0,-(sp) mov ev,*evp add $2,evp3: cmp (sp),ev beq 4f mov $1024.,r3 mpy ev,r3 mov r3,8f mov $1024.,r3 mpy (sp),r3 mov r3,9f mov ibf,r0 sys 0;7f.data7: sys seek; 8:.. ; 0.text mov ibf,r0 sys write; block; 1024. mov ibf1,r0 sys 0;7f.data7: sys seek; 9:.. ; 0.text mov blocksize,0f mov ibf1,r0 sys 0;7f.data7: sys read; block; 0:...text4: mov (sp)+,ev5: rts pc6: jsr r5,string;9f rts pc9: <Cannot do "ev".\n\0>.evencaseif: clr -(sp) jsr pc,skipcont jsr pc,getchar cmp r0,$'! bne 1f inc (sp) br 2f1: mov r0,ch2: jsr pc,atoi beq 1f tst r0 bgt 5f /true br 6f /false1: jsr pc,getchar cmp r0,$'e bne 1f bit $1,pn bne 6f br 5f1: cmp r0,$'o bne 1f bit $1,pn beq 6f br 5f1: cmpb r0,$'n beq 5f1: tst (sp)+ rts pc5: tst (sp) bne 1b2: clr column jsr pc,getchar bmi 0f cmpb r0,$' / beq 2b0: mov r0,ch inc nflush br 1b6: tst (sp) beq 1b br 2bcasewh: clr -(sp) jsr pc,skipcont jsr pc,getchar cmp r0,$'x bne 1f mov $-1,r0 jsr pc,findt add nl,r1 sub dnl,r1 mov r1,r0 br 2f1: mov r0,ch jsr pc,atoi beq 4f2: mov r0,(sp) jsr pc,skipcont jsr r5,getname; bname tstb bname bne 1f clr bname1: mov (sp),r0 jsr pc,findn tst r1 beq 1f mov bname,[mlist-nlist](r1) br 4f1: mov $mlist,r12: tst (r1)+ beq 3f cmp r1,$mliste bgt 4f br 2b3: mov bname,-2(r1) mov (sp),[nlist-mlist-2](r1)4: tst (sp)+ rts pcfindn: mov $nlist,r11: cmp (r1),r0 beq 3f2: tst (r1)+ cmp r1,$nliste bne 1b clr r1 rts pc3: tst [mlist-nlist](r1) beq 2b rts pcfindm: mov $mlist,r11: cmp (r1),bname beq 3f2: tst (r1)+ cmp r1,$mliste bne 1b clr r1 rts pc3: sub $[mlist-nlist],r1 rts pccasech: clr -(sp) jsr pc,skipcont jsr pc,atoi beq 2f jsr pc,findn br 3f2: jsr r5,getname; bname tstb bname beq 1f jsr pc,findm3: tst r1 beq 1f mov r1,(sp) jsr pc,skipcont jsr pc,atoi beq 2f mov r0,*(sp)1: tst (sp)+ rts pc2: jsr pc,getchar tst nlflg bne 1b mov *(sp),r0 beq 1b bgt 0f add pl,r0 inc r00: sub nl,r0 ble 1b dec r0 ble 1b cmp dnl,r0 bge 0f mov dnl,r00: sub r0,*(sp) br 1bcasemk: jsr pc,skipcont beq 1f mov nl,markline rts pc1: jsr r5,getname; bname mov bname,r0 beq 2f jsr pc,findr beq 2f mov nl,(r1)2: rts pccasetm: inc copyf jsr pc,skipcont mov $bname,r11: jsr pc,getchar bmi 1b movb r0,(r1)+ tst nlflg bne 2f cmp r1,$ename blo 1b movb $'\n,-1(r1)2: clrb (r1) jsr r5,stringfl; bname clr copyf rts pccaserd: jsr pc,skipcont jsr r5,getname; bname tst iflg bne 1f tst quiet bne 2f tstb bname beq 5f jsr r5,string; bname jsr r5,string; 3f1: jsr pc,collect inc tty jsr pc,pushi beq 6f mov $-1,ip rts pc2: bic $10,ttym mov ttyid,r0 sys stty; ttys jsr pc,flush5: jsr r5,string;4f br 1b6: jmp rdtty23: <: \0>4: <\0> /bell .evencaseaf: jsr pc,skipcont bne 3f jsr r5,getname;bname mov bname,r0 beq 3f jsr pc,findr jsr pc,skipcont jsr pc,getchar mov $4f,r21: cmpb r0,(r2)+ beq 2f inc r2 tstb (r2) bne 1b2: movb (r2),[flist-vlist](r1)3: rts pc4:.byte '1,1.byte 'i,2.byte 'I,3.byte 'a,4.byte 'A,5.byte 0,0casenr: jsr pc,skipcont bne 5f jsr r5,getname; bname mov bname,r0 jsr pc,findr mov r1,0f beq 5f jsr pc,skipcont bne 5f jmp 7f.data7: jsr r5,number1; 0:.. jmp 8f.text8: bne 1f clr r01: mov r0,*0b jsr pc,skipcont bne 5f jsr pc,atoi beq 5f mov r0,[inclist-vlist](r1)5: rts pccasefl: jsr pc,rbreak jsr pc,flush rts pccasexh:/ tst x.5/ bne 1f inc x.5 rts pc/1:/ clr x.5/ rts pccaseso: jsr pc,skipcont tst nlflg bne 1f jsr r5,getname; nextf tstb nextf beq 1f sys open; nextf; 0 bes 1f mov ifp,r1 cmp r1,$ifle bhi 1f mov r0,-(sp) jsr pc,flushi mov ifile,(r1) mov (sp)+,ifile mov ioff,[offl-ifl](r1) add $2,ifp clr ioff inc nx inc nflush tst (r1) bne 1f jsr pc,savebuf1: rts pccaseeo: clr r0 br 1fcaseec: jsr pc,skipcont jsr pc,getchar cmpb r0,$'\n bne 1f movb $'\\,r01: movb r0,eschar movb r0,eschar+1 rts pccasest: 4caseem: clr em jsr pc,skipcont bne 1f jsr r5,getname;bname beq 1f mov bname,em1: rts pccasefc: mov $4,fc mov $' ,padc jsr pc,skipcont bne 1f jsr pc,getchar bmi 1f movb r0,fc jsr pc,skipcont bne 1f mov ch,r0 bmi 1f cmpb r0,fc beq 1f movb r0,padc1: rts pccasepi: tst toolate bne 1f jsr pc,skipcont jsr r5,getname;bname beq 1f sys 42. /pipe jes place mov r0,pipin mov r1,outid sys fork br 2f jes place mov $1,r0 sys close mov pipin,r0 sys close1: inc toolate rts pc2: clr r0 sys close mov pipin,r0 sys 41. /dup mov outid,r0 sys close sys exec;bname;args jsr r5,string;9f sys exitargs: bname;09: <exec failed\n\0>.even
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -