/Phototypesetter interpreter mov (sp)+,argc dec argc beq loop tst (sp)+ mov (sp),r1 cmpb (r1)+,$'- bne 1f jsr pc,atoi mov r0,0f dec argc beq loop0 tst (sp)+ 1: mov (sp),r0 jsr r5,fopen; ibuf bec loop0 ex: jsr r5,str;mlt jsr r5,numb;leadtot jsr r5,str;nl clr r0 sys exit mlt:<Lead total \0> .even loop0: mov ibuf,r0 sys seek; 0:..; 0 loop: jsr r5,getc; ibuf bes ex tstb r0 bpl 1f jsr pc,prn com r0 bic $!177,r0 add r0,esc jmp loop 1: tst esc beq 1f tst escd bne 2f jsr r5,str;mescf br 3f 2: jsr r5,str;mescb 3: jsr r5,numb;esc jsr r5,str;nl tst escd beq 0f neg esc 0: add esc,esct clr esc 1: jsr pc,prn cmpb r0,$100 bne 1f jsr r5,str;minit jmp loop 1: cmpb r0,$101 bne 1f jsr r5,str;mlr jmp loop 1: cmpb r0,$102 bne 1f jsr r5,str;mur jmp loop 1: cmpb r0,$103 bne 1f jsr r5,str;mum jmp loop 1: cmpb r0,$104 bne 1f jsr r5,str;mlm jmp loop 1: cmpb r0,$105 bne 1f jsr r5,str;mlc clr case jmp loop 1: cmpb r0,$106 bne 1f jsr r5,str;muc mov $100,case jmp loop 1: cmpb r0,$107 bne 1f jsr r5,str;mef / jsr r5,str;mesct jsr r5,numb;esct jsr r5,str;nl clr escd jmp loop 1: cmpb r0,$110 bne 1f jsr r5,str;meb / jsr r5,str;mesct jsr r5,numb;esct jsr r5,str;nl inc escd jmp loop 1: cmpb r0,$111 bne 1f jsr r5,str;mstop jmp loop 1: cmpb r0,$112 bne 1f jsr r5,str;mlf jsr r5,numb;leadtot jsr r5,str;nl clr leadmode jmp loop 1: cmpb r0,$114 bne 1f jsr r5,str;mlb jsr r5,numb;leadtot jsr r5,str;nl inc leadmode jmp loop 1: cmpb r0,$100 bne 1f jsr r5,str;minit jmp loop 1: mov r0,r1 bic $!360,r1 cmp r1,$100 bne 1f jsr r5,str;milgl jmp loop 1: mov r0,r1 bic $!340,r1 cmpb r1,$140 bne 1f com r0 bic $!37,r0 mov r0,n jsr r5,str;mlead jsr r5,numb;n jsr r5,str;nl tst leadmode beq 0f neg n 0: add n,leadtot jmp loop 1: mov r0,r1 bic $!360,r1 cmpb $120,r1 bne 1f bic $!17,r0 mov r0,n jsr r5,str;msize mov $stab+1,r0 2: cmpb n,(r0)+ beq 2f tstb (r0)+ bne 2b br 3f 2: tst -(r0) movb (r0),pts jsr r5,numb;pts 3: jsr r5,str;nl jmp loop 1: bitb $300,r0 bne 1f bic $!77,r0 add case,r0 mov $wtab+1,r1 2: cmpb r0,(r1)+ beq 3f inc r1 cmp r1,$wtab+192. blo 2b br 1f 3: tst -(r1) movb (r1),r3 mpy pts,r3 sxt r2 dvd $6.,r2 mov r2,n sub $wtab,r1 asr r1 add $040,r1 clr x movb r1,x jsr r5,str;x / jsr r5,str;space / jsr r5,numb;n jsr r5,str;nl jmp loop 1: jsr r5,str;nl jmp loop prn: mov $8.,base mov r0,n jsr r5,numb;n mov $10.,base jsr r5,str;space rts pc str: mov r0,-(sp) mov (r5)+,r1 mov r1,r2 mov r1,0f 1: tstb (r1)+ bne 1b sub r2,r1 dec r1 mov r1,1f mov $1,r0 sys write; 0:..; 1:.. mov (sp)+,r0 rts r5 numb: mov r0,-(sp) mov r2,-(sp) mov r3,-(sp) mov *(r5)+,r3 jsr pc,numb1 mov (sp)+,r3 mov (sp)+,r2 mov (sp)+,r0 rts r5 numb1: clr r2 dvd base,r2 mov r3,-(sp) mov r2,r3 beq 1f jsr pc,numb1 1: add $'0,(sp) mov (sp)+,char mov $1,r0 sys write; char; 1 rts pc atoi: clr -(sp) mov r3,-(sp) clr r3 clr -(sp) movb (r1)+,r0 cmpb r0,$'- bne 2f inc (sp) 1: movb (r1)+,r0 2: sub $'0,r0 cmp r0,$7 bhi 1f inc 4(sp) mpy $8.,r3 add r0,r3 br 1b 1: tst (sp)+ beq 1f neg r3 1: mov r3,r0 mov (sp)+,r3 tst (sp)+ rts pc space: < \0> minit: <Initialize\n\0> mesct: <Total \0> mesc: <Escape \0> mescf: <\> \0> mescb: <\< \0> nl: <\n\0> mlr: <Lower Rail\n\0> mur: <Upper Rail\n\0> mum: <Upper Mag\n\0> mlm: <Lower Mag\n\0> muc: <Upper Case\n\0> mlc: <Lower Case\n\0> mef: <\> mode, \0> meb: <\< mode, \0> mstop: <*****Stop*****\n\0> mlf: <Lead forward, \0> mlb: <Lead backward, \0> mlead: <Lead \0> milgl: <Illegal control\n\0> msize: <Size \0> .even pts: 12. stab: /type size table .byte 6.,10 .byte 7.,00 .byte 8.,01 .byte 9.,07 .byte 10.,02 .byte 11.,03 .byte 12.,04 .byte 14.,05 .byte 16.,11 .byte 18.,06 .byte 20.,12 .byte 22.,13 .byte 24.,14 .byte 28.,15 .byte 36.,16 .byte 0,0 .bss leadtot: .=.+2 leadmode: .=.+2 argc: .=.+2 base: .=.+2 x: .=.+2 char: .=.+2 n: .=.+2 case: .=.+2 esc: .=.+2 esct: .=.+2 escd: .=.+2 ibuf: .=.+518. .data wtab: /Graphic Systems Font Table /Commercial Layout /Times Roman Regular /Extended Code, ASCII order /Width (6 pt.), Code .byte 15.,0 /space .byte 9.,145 /! .byte 0,0 /" .byte 27.,153 /# .byte 18.,155 /$ .byte 27.,53 /% .byte 28.,50 /& .byte 9.,150 /' * .byte 9.,132 /( .byte 9.,133 /) .byte 16.,122 /* .byte 27.,143 /+ .byte 9.,47 /, .byte 27.,123 /- .byte 9.,44 /. .byte 12.,43 // .byte 18.,110 /0 .byte 18.,111 /1 .byte 18.,112 /2 .byte 18.,113 /3 .byte 18.,114 /4 .byte 18.,115 /5 .byte 18.,116 /6 .byte 18.,117 /7 .byte 18.,120 /8 .byte 18.,121 /9 .byte 9.,142 /: .byte 9.,23 /; .byte 0,0 /< .byte 27.,140 /= .byte 0,0 /> .byte 16.,147 /? .byte 36.,131 /@ .byte 29.,103 /A .byte 23.,75 /B .byte 26.,70 /C .byte 29.,74 /D .byte 25.,72 /E .byte 24.,101 /F .byte 30.,65 /G .byte 29.,60 /H .byte 13.,66 /I .byte 16.,105 /J .byte 29.,107 /K .byte 24.,63 /L .byte 35.,62 /M .byte 30.,61 /N .byte 27.,57 /O .byte 22.,67 /P .byte 27.,55 /Q .byte 28.,64 /R .byte 18.,76 /S .byte 24.,56 /T .byte 29.,106 /U .byte 28.,71 /V .byte 36.,104 /W .byte 28.,102 /X .byte 28.,77 /Y .byte 24.,73 /Z .byte 9.,134 /[ .byte 0,0 /\ .byte 9.,135 /] .byte 0,0 /^ .byte 0,0 /_ .byte 0,0 /` .byte 17.,25 /a .byte 19.,12 /b .byte 16.,27 /c .byte 20.,11 /d .byte 17.,31 /e .byte 13.,14 /f .byte 17.,45 /g .byte 21.,01 /h .byte 10.,06 /i .byte 10.,15 /j .byte 20.,17 /k .byte 10.,05 /l .byte 32.,04 /m .byte 21.,03 /n .byte 19.,33 /o .byte 20.,21 /p .byte 19.,42 /q .byte 14.,35 /r .byte 15.,10 /s .byte 12.,02 /t .byte 20.,16 /u .byte 20.,37 /v .byte 27.,41 /w .byte 20.,13 /x .byte 19.,51 /y .byte 16.,07 /z .byte 0,0 /{ .byte 5.,151 /| .byte 0,0 /} /.byte 11.,40 /~ .byte 0,0 /~ .byte 0,0 /del