/ / / nroff2 casead: 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 1f 0: cmp r0,$'l /left adj, right ragged bne 0f clr jfomod clr ad br 1f 0: cmp r0,$'c /centered adj bne 0f mov $1,jfomod br 1f 0: clr jfomod /left and right adj inc ad 1: rts pc casebr: jsr pc,rbreak rts pc casecc: clr -(sp) br 0f casec2: mov pc,-(sp) 0: jsr pc,skipcont jsr pc,getchar cmp r0,$'\n beq 2f tst (sp) bne 1f mov r0,cc br 2f 1: mov r0,c2 2: mov r0,ch tst (sp)+ rts pc casece: jsr r5,number; 0 jsr pc,min mov r0,-(sp) jsr pc,rbreak mov (sp)+,ce rts pc casefi: jsr pc,rbreak inc fi rts pc casein: jsr pc,skipcont tst nlflg beq 1f mov in1,r0 br 2f 1: jsr r5,number1; in jsr pc,min 2: mov r0,-(sp) jsr pc,rbreak mov in,in1 mov (sp)+,in tst nc bne 1f mov in,un jsr pc,setnel 1: rts pc caseli: jsr r5,number; 0 jsr pc,min mov r0,lit mov frame,litlev cmp nl,$-1 bne 0f jsr pc,newln1 0: rts pc casell: jsr pc,skipcont tst nlflg beq 1f mov ll1,r0 br 2f 1: jsr r5,number1; ll jsr pc,min 2: mov ll,ll1 mov r0,ll 2: jsr pc,setnel rts pc casels: jsr pc,skipcont tst nlflg beq 1f mov ls1,r0 br 2f 1: jsr r5,number1; ls dec r0 jsr pc,min inc r0 2: mov r0,-(sp) / jsr pc,rbreak mov ls,ls1 mov (sp)+,ls rts pc casens: inc nls rts pc casers: clr nls rts pc casena: clr ad rts pc casene: jsr r5,number; 0 jsr pc,min jsr pc,need2 rts pc casenf: jsr pc,rbreak clr fi rts pc casepn: jsr pc,skipcont bne 1f jsr r5,number1; pn jsr pc,min mov r0,npn 1: rts pc casebp: 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,npn 0: bne 2f tst nls bne 3f 2: mov (sp),r0 jsr pc,eject 3: tst (sp)+ rts pc casepl: jsr pc,skipcont tst nlflg bne 1f jsr r5,number1; pl mov r0,pl rts pc 1: mov $66.,pl rts pc casesp: mov pc,-(sp) br 0f casesp1: clr -(sp) 0: mov r0,-(sp) tst nb bne 0f jsr pc,rbreak 0: tst nls bne 2f clr r0 jsr pc,findt tst nb bne 1f tst trap bne 2f 1: 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; newline 2: cmp (sp)+,(sp)+ rts pc 3: add nl,r0 cmp (sp)+,(sp)+ br casert1 casert: mov markline,r2 jsr pc,skipcont bne 0f jsr r5,number1;nl casert1: mov r0,r2 0: tst r2 blt 2f cmp r2,nl bge 2f mov nl,r1 mov r2,nl sub r2,r1 mov r1,r2 1: mov $036,r0 jsr pc,putchar dec r2 bgt 1b mov $015,r0 jsr pc,putchar 2: rts pc casesv: clr r0 jsr pc,findt jsr r5,number; 0 cmp r1,r0 bge 1f mov r0,sv rts pc 1: jsr r5,nlines; newline rts pc caseos: tst sv beq 2f clr r0 jsr pc,findt cmp r1,sv bge 1f rts pc 1: mov sv,r0 clr sv jsr r5,nlines; newline 2: rts pc casetr: jsr pc,skipcont 1: jsr pc,getchar cmp r0,$'\n beq 1f mov r0,r1 jsr pc,getchar cmp r0,$'\n bne 2f mov $' ,r0 2: movb r0,trtab(r1) br 1b 1: rts pc caseta: clr -(sp) mov $tabtab,r1 1: jsr pc,getchar tst nlflg bne 1f cmpb r0,$'+ bne 0f inc (sp) br 2f 0: cmpb r0,$'- beq 2f cmpb r0,$'0 blo 1b cmpb r0,$'9 bhi 1b 2: 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 0f 3: add -2(r1),r0 0: clr (sp) mov r0,(r1)+ cmp r1,$etabtab blo 1b tst -(r1) 1: tst (sp)+ clr (r1) rts pc caseti: jsr r5,number; in jsr pc,min mov r0,-(sp) jsr pc,rbreak mov (sp)+,un1 jsr pc,setnel rts pc caseul: jsr r5,number; 0 jsr pc,min mov r0,ul rts pc casetl: jsr pc,header rts pc caselt: jsr pc,skipcont tst nlflg beq 1f mov llh1,r0 br 2f 1: jsr r5,number1; llh jsr pc,min 2: mov llh,llh1 mov r0,llh rts pc casehc: jsr pc,skipcont jsr pc,getchar cmp r0,$'\n bne 1f movb $200,r0 1: mov r0,ohc rts pc casetc: jsr pc,skipcont jsr pc,getchar cmp r0,$'\n bne 1f mov $014,r0 1: mov r0,tabc rts pc caselc: jsr pc,skipcont jsr pc,getchar cmp r0,$'\n bne 1f mov $'.,r0 1: mov r0,dotc rts pc casenc: jsr pc,skipcont jsr pc,getchar cmp r0,$'\n bne 1f mov $034,r0 1: mov r0,numc rts pc casehy: mov $1,hyf jsr pc,skipcont bne 1f jsr pc,atoi beq 1f jsr pc,min mov r0,hyf 1: rts pc casenh: clr hyf rts pc casenp: jsr pc,skipcont tst nlflg beq 2f clr ni mov $1,nms mov $1,ndf rts pc casenm: clr numbmod clr nn jsr pc,skipcont tst nlflg beq 1f rts pc 1: inc numbmod jsr r5,number1; lnumber jsr pc,min mov r0,lnumber jsr pc,skipcont 2: jsr r5,3f; ndf tst ndf bne 1f inc ndf 1: jsr pc,skipcont jsr r5,3f; nms jsr pc,skipcont jsr r5,3f; ni rts pc 3: tst nlflg bne 4f jsr pc,atoi beq 4f jsr pc,min mov r0,*(r5) 4: tst (r5)+ rts r5 casenn: jsr r5,number; 0 jsr pc,min mov r0,nn rts pc casear: clr ro rts pc caseroc: mov $2,ro rts pc casero: mov $1,ro rts pc casenx: 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 pc casepo: jsr pc,skipcont tst nlflg beq 1f mov po1,r0 br 2f 1: jsr r5,number1; po jsr pc,min 2: mov r0,-(sp) / jsr pc,rbreak mov po,po1 mov (sp)+,po rts pc caseig: inc skp jsr pc,copyb rts pc casern: / 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 pc caserm: / inc lgf jsr pc,skipcont jsr r5,getname;bname beq 1f jsr pc,findmn jsr pc,clrold 1: rts pc caseas: inc app caseds: inc ds br casede caseam: inc app casede: tst op beq 1f jsr pc,wbfl 1: / inc lgf jsr pc,skipcont jsr r5,getname; bname bne 1f clr r1 br 6f 1: clr skp jsr pc,finds beq 7f tst ds beq 0f tst skp bne 5f jsr pc,copys br 5f 0: jsr pc,copyb 5: jsr pc,wbfl jsr pc,clrold tst newptr beq 0f bis $100000,bname mov bname,*newptr 0: mov r1,-(sp) mov apptr,r1 beq 0f mov $004,r0 jsr pc,wbt 0: mov (sp)+,r1 6: clr app clr ds rts pc 7: tst macerr bne 0f jsr r5,stringfl; 8f 0: inc macerr cmp macerr,$1 jeq edone jmp done2 / br 6b 8: .even findmn: mov $contab,r1 1: mov (r1)+,r0 bic $100000,r0 cmp bname,r0 beq 2f cmp (r1)+,$-1 bne 1b clr r1 2: mov r1,oldptr rts pc finds: jsr pc,findmn clr newptr clr apptr clr aplnk tst app beq 0f tst oldptr bne 5f 0: mov $contab,r1 1: tst (r1)+ beq 2f cmp (r1)+,$-1 bne 1b 1: inc skp clr r1 rts pc 2: jsr pc,alloc beq 1b tst oldptr bne 3f 4: tst -(r1) bis $100000,bname mov bname,(r1)+ mov nextb,(r1) br 6f 3: tst diflg bne 4b mov nextb,(r1) tst -(r1) mov r1,newptr br 6f 5: tst -(r1) bmi 1f clr app br 0b 1: tst (r1)+ clr oldptr mov ip,-(sp) mov (r1),ip 1: jsr pc,rbf tst r0 bne 1b mov ip,r1 mov r1,apptr tst diflg bne 0f jsr pc,incoff 0: mov r1,nextb mov (sp)+,ip 6: clr app mov nextb,r1 rts pc clrold: 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,free 1: rts pc caseda: inc app casedi: / 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 3f 1: tst op beq 3f clr r0 jsr pc,pchar1 jsr pc,wbfl / mov sblss,blss / mov salss,alss clr op 3: clr app clr diflg rts pc caseev: jsr pc,skipcont tst nlflg beq 2f cmp evp,$elist ble 5f 1: sub $2,evp mov *evp,-(sp) br 3f 2: 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,evp 3: 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 .data 7: sys seek; 8:.. ; 0 .text mov ibf,r0 sys write; block; 1024. mov ibf1,r0 sys 0;7f .data 7: sys seek; 9:.. ; 0 .text mov blocksize,0f mov ibf1,r0 sys 0;7f .data 7: sys read; block; 0:.. .text 4: mov (sp)+,ev 5: rts pc 6: jsr r5,string;9f rts pc 9: .even caseif: clr -(sp) jsr pc,skipcont jsr pc,getchar cmp r0,$'! bne 1f inc (sp) br 2f 1: mov r0,ch 2: jsr pc,atoi beq 1f tst r0 bgt 5f /true br 6f /false 1: jsr pc,getchar cmp r0,$'e bne 1f bit $1,pn bne 6f br 5f 1: cmp r0,$'o bne 1f bit $1,pn beq 6f br 5f 1: cmpb r0,$'n beq 5f 1: tst (sp)+ rts pc 5: tst (sp) bne 1b 2: clr column jsr pc,getchar bmi 0f cmpb r0,$' / beq 2b 0: mov r0,ch inc nflush br 1b 6: tst (sp) beq 1b br 2b casewh: 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 2f 1: mov r0,ch jsr pc,atoi beq 4f 2: mov r0,(sp) jsr pc,skipcont jsr r5,getname; bname tstb bname bne 1f clr bname 1: mov (sp),r0 jsr pc,findn tst r1 beq 1f mov bname,[mlist-nlist](r1) br 4f 1: mov $mlist,r1 2: tst (r1)+ beq 3f cmp r1,$mliste bgt 4f br 2b 3: mov bname,-2(r1) mov (sp),[nlist-mlist-2](r1) 4: tst (sp)+ rts pc findn: mov $nlist,r1 1: cmp (r1),r0 beq 3f 2: tst (r1)+ cmp r1,$nliste bne 1b clr r1 rts pc 3: tst [mlist-nlist](r1) beq 2b rts pc findm: mov $mlist,r1 1: cmp (r1),bname beq 3f 2: tst (r1)+ cmp r1,$mliste bne 1b clr r1 rts pc 3: sub $[mlist-nlist],r1 rts pc casech: clr -(sp) jsr pc,skipcont jsr pc,atoi beq 2f jsr pc,findn br 3f 2: jsr r5,getname; bname tstb bname beq 1f jsr pc,findm 3: tst r1 beq 1f mov r1,(sp) jsr pc,skipcont jsr pc,atoi beq 2f mov r0,*(sp) 1: tst (sp)+ rts pc 2: jsr pc,getchar tst nlflg bne 1b mov *(sp),r0 beq 1b bgt 0f add pl,r0 inc r0 0: sub nl,r0 ble 1b dec r0 ble 1b cmp dnl,r0 bge 0f mov dnl,r0 0: sub r0,*(sp) br 1b casemk: jsr pc,skipcont beq 1f mov nl,markline rts pc 1: jsr r5,getname; bname mov bname,r0 beq 2f jsr pc,findr beq 2f mov nl,(r1) 2: rts pc casetm: inc copyf jsr pc,skipcont mov $bname,r1 1: 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 pc caserd: 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; 3f 1: jsr pc,collect inc tty jsr pc,pushi beq 6f mov $-1,ip rts pc 2: bic $10,ttym mov ttyid,r0 sys stty; ttys jsr pc,flush 5: jsr r5,string;4f br 1b 6: jmp rdtty2 3: <: \0> 4: <\0> /bell .even caseaf: 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,r2 1: cmpb r0,(r2)+ beq 2f inc r2 tstb (r2) bne 1b 2: movb (r2),[flist-vlist](r1) 3: rts pc 4: .byte '1,1 .byte 'i,2 .byte 'I,3 .byte 'a,4 .byte 'A,5 .byte 0,0 casenr: 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 .data 7: jsr r5,number1; 0:.. jmp 8f .text 8: bne 1f clr r0 1: mov r0,*0b jsr pc,skipcont bne 5f jsr pc,atoi beq 5f mov r0,[inclist-vlist](r1) 5: rts pc casefl: jsr pc,rbreak jsr pc,flush rts pc casexh: / tst x.5 / bne 1f inc x.5 rts pc /1: / clr x.5 / rts pc caseso: 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,savebuf 1: rts pc caseeo: clr r0 br 1f caseec: jsr pc,skipcont jsr pc,getchar cmpb r0,$'\n bne 1f movb $'\\,r0 1: movb r0,eschar movb r0,eschar+1 rts pc casest: 4 caseem: clr em jsr pc,skipcont bne 1f jsr r5,getname;bname beq 1f mov bname,em 1: rts pc casefc: 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,padc 1: rts pc casepi: 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 close 1: inc toolate rts pc 2: clr r0 sys close mov pipin,r0 sys 41. /dup mov outid,r0 sys close sys exec;bname;args jsr r5,string;9f sys exit args: bname;0 9: .even