Add original unix v6
This commit is contained in:
@@ -0,0 +1,516 @@
|
||||
/
|
||||
/
|
||||
|
||||
/ roff4 -- runoff
|
||||
|
||||
text:
|
||||
/ inc tottext
|
||||
clr ulstate
|
||||
clr wch
|
||||
clr wne
|
||||
tst ce
|
||||
bne nofill
|
||||
tst fi
|
||||
beq nofill
|
||||
jsr pc,getchar
|
||||
2:
|
||||
mov r0,ch
|
||||
cmp $' ,r0
|
||||
bne 2f
|
||||
jsr pc,rbreak
|
||||
1:
|
||||
jsr pc,getchar
|
||||
cmp $' ,r0
|
||||
bne 2b
|
||||
inc un
|
||||
br 1b
|
||||
2:
|
||||
cmp r0,$'\n
|
||||
bne 2f
|
||||
jsr pc,rbreak
|
||||
clr ch
|
||||
jsr pc,nline
|
||||
br 4f
|
||||
2:
|
||||
tst wch
|
||||
bne 3f
|
||||
jsr pc,getword
|
||||
br 4f
|
||||
3:
|
||||
jsr pc,movword
|
||||
bne 2b
|
||||
jsr pc,adjust
|
||||
br 2b
|
||||
4:
|
||||
dec ul
|
||||
bge 1f
|
||||
clr ul
|
||||
1:
|
||||
rts pc
|
||||
|
||||
nofill:
|
||||
jsr pc,rbreak
|
||||
1:
|
||||
jsr pc,gettchar
|
||||
cmp r0,$'\n
|
||||
beq 1f
|
||||
jsr pc,width
|
||||
add r1,ne
|
||||
jsr pc,storeline
|
||||
br 1b
|
||||
1:
|
||||
tst ce
|
||||
ble 2f
|
||||
dec ce
|
||||
mov nel,r0
|
||||
asr r0
|
||||
bpl 1f
|
||||
clr r0
|
||||
1:
|
||||
add r0,un
|
||||
tst numbmod
|
||||
beq 2f
|
||||
add $2,un
|
||||
2:
|
||||
clr fac
|
||||
clr fmq
|
||||
mov $1000,nwd
|
||||
mov $' ,r0
|
||||
jsr pc,storeline
|
||||
jsr pc,rbreak
|
||||
dec ul
|
||||
bpl 2f
|
||||
clr ul
|
||||
2:
|
||||
rts pc
|
||||
|
||||
adjust:
|
||||
mov r2,-(sp)
|
||||
mov r3,-(sp)
|
||||
clr r2
|
||||
clr r3
|
||||
tst ad
|
||||
beq 1f
|
||||
mov nwd,r0
|
||||
dec r0
|
||||
ble 1f
|
||||
mov nel,r3
|
||||
ble 1f
|
||||
dvd r0,r2
|
||||
1:
|
||||
mov r3,fac
|
||||
mov r2,fmq
|
||||
mov (sp)+,r3
|
||||
mov (sp)+,r2
|
||||
jsr pc,rbreak
|
||||
rts pc
|
||||
|
||||
fill:
|
||||
mov fmq,r0
|
||||
1:
|
||||
inc r0
|
||||
dec nc
|
||||
cmpb (r2)+,$'
|
||||
beq 1b
|
||||
dec r2
|
||||
bit $1,totout
|
||||
beq 2f
|
||||
inc fac
|
||||
cmp fac,nwd
|
||||
blt 1f
|
||||
inc r0
|
||||
br 1f
|
||||
2:
|
||||
dec fac
|
||||
bmi 1f
|
||||
inc r0
|
||||
1:
|
||||
jsr pc,space
|
||||
movb (r2),r0
|
||||
rts pc
|
||||
|
||||
movword:
|
||||
mov wch,wordend
|
||||
mov wordp,r4
|
||||
add r4,wordend
|
||||
tst nwd
|
||||
bne 2f
|
||||
1:
|
||||
movb (r4)+,r0
|
||||
cmp r0,$'
|
||||
bne 1f
|
||||
dec wch
|
||||
jsr pc,width
|
||||
sub r1,wne
|
||||
br 1b
|
||||
1:
|
||||
dec r4
|
||||
2:
|
||||
cmp wne,nel
|
||||
ble 1f
|
||||
cmp nel,$4
|
||||
ble 1f
|
||||
mov ls,r0
|
||||
add nl,r0
|
||||
cmp r0,bl
|
||||
bgt 2f
|
||||
mov ls,r0
|
||||
asl r0
|
||||
add nl,r0
|
||||
cmp r0,bl
|
||||
bgt 1f
|
||||
2:
|
||||
jsr pc,hyphen
|
||||
1:
|
||||
clr nhyph
|
||||
mov wch,-(sp)
|
||||
1:
|
||||
movb (r4)+,r0
|
||||
cmp r0,$'-
|
||||
bne 2f
|
||||
movb (r4),r2
|
||||
jsr pc,alph2
|
||||
bne 2f
|
||||
bisb $200,(r4)
|
||||
2:
|
||||
tst r0
|
||||
bpl 2f
|
||||
bic $!177,r0
|
||||
mov r4,r3
|
||||
sub $4,r3
|
||||
cmp r3,$word
|
||||
blo 2f
|
||||
movb (r3),r2
|
||||
bic $!177,r2
|
||||
jsr pc,alph2
|
||||
beq 3f
|
||||
cmp nel,$2
|
||||
ble 2f
|
||||
3:
|
||||
mov r0,-(sp)
|
||||
clr r0
|
||||
jsr pc,storeline
|
||||
mov (sp)+,r0
|
||||
inc nhyph
|
||||
2:
|
||||
jsr pc,width
|
||||
sub r1,wne
|
||||
jsr pc,storeline
|
||||
dec wch
|
||||
bne 1b
|
||||
tst nel
|
||||
blt 1f
|
||||
inc nwd
|
||||
tst (sp)+
|
||||
clz
|
||||
rts pc
|
||||
1:
|
||||
mov linep,r3
|
||||
1:
|
||||
tst nhyph
|
||||
bne 2f
|
||||
tst nwd
|
||||
beq 3f
|
||||
cmp wch,(sp)
|
||||
beq 4f
|
||||
2:
|
||||
movb -(r3),r0
|
||||
bne 2f
|
||||
dec nhyph
|
||||
bne 5f
|
||||
tst nwd
|
||||
beq 6f
|
||||
5:
|
||||
tst nel
|
||||
ble 2f
|
||||
6:
|
||||
cmpb -1(r3),$'-
|
||||
beq 3f
|
||||
movb $'-,(r3)
|
||||
dec nel
|
||||
inc ne
|
||||
br 3f
|
||||
2:
|
||||
dec nc
|
||||
tstb (r3)
|
||||
beq 1b
|
||||
jsr pc,width
|
||||
sub r1,ne
|
||||
add r1,nel
|
||||
inc wch
|
||||
dec r4
|
||||
add r1,wne
|
||||
br 1b
|
||||
3:
|
||||
inc nwd
|
||||
4:
|
||||
mov r4,wordp
|
||||
bicb $!177,(r4)
|
||||
cmp r4,$word
|
||||
bge 4f
|
||||
4
|
||||
4:
|
||||
tst (sp)+
|
||||
sez
|
||||
rts pc
|
||||
|
||||
topbot:
|
||||
mov pl,r0
|
||||
bne 1f
|
||||
clr bl
|
||||
rts pc
|
||||
1:
|
||||
sub ma3,r0
|
||||
sub ma4,r0
|
||||
sub hx,r0
|
||||
mov r0,bl
|
||||
mov ma1,r0
|
||||
add ma2,r0
|
||||
add hx,r0
|
||||
cmp r0,bl
|
||||
blt 1f
|
||||
mov $2,r0
|
||||
mov r0,ma1
|
||||
mov r0,ma2
|
||||
mov r0,ma3
|
||||
mov r0,ma4
|
||||
mov $66.,pl
|
||||
br topbot
|
||||
1:
|
||||
cmp nl,bl
|
||||
ble 1f
|
||||
mov bl,nl
|
||||
1:
|
||||
rts pc
|
||||
|
||||
width:
|
||||
cmp r0,ohc
|
||||
beq 2f
|
||||
tst r0
|
||||
beq 2f
|
||||
cmp r0,$0177
|
||||
beq 2f
|
||||
cmp r0,$010
|
||||
bne 1f
|
||||
mov $-1,r1
|
||||
rts pc
|
||||
1:
|
||||
cmp $' ,r0
|
||||
bgt 2f
|
||||
mov $1,r1
|
||||
rts pc
|
||||
2:
|
||||
clr r1
|
||||
rts pc
|
||||
|
||||
headin:
|
||||
jsr pc,skipcont
|
||||
mov nextb,r1
|
||||
mov r1,*(r5)+
|
||||
jsr pc,gettchar
|
||||
cmp r0,$'\n
|
||||
beq 2f
|
||||
mov r0,r2
|
||||
1:
|
||||
jsr pc,gettchar
|
||||
cmp r0,$'\n
|
||||
beq 2f
|
||||
cmp r0,r2
|
||||
bne 3f
|
||||
clr r0
|
||||
3:
|
||||
jsr pc,wbf
|
||||
br 1b
|
||||
2:
|
||||
clr r0
|
||||
jsr pc,wbf
|
||||
mov r1,nextb
|
||||
mov ll,llh
|
||||
rts r5
|
||||
|
||||
headout:
|
||||
tst hx
|
||||
bne 0f
|
||||
tst (r5)+
|
||||
rts r5
|
||||
0:
|
||||
clr -(sp)
|
||||
mov *(r5),r2
|
||||
mov ibf1,nfile
|
||||
jsr r5,headseg; width
|
||||
mov r0,-(sp)
|
||||
jsr r5,headseg; width
|
||||
mov r0,-(sp)
|
||||
jsr r5,headseg; width
|
||||
mov r0,-(sp)
|
||||
mov po,r0
|
||||
jsr pc,space
|
||||
tst numbmod
|
||||
beq 1f
|
||||
mov $5,r0
|
||||
add ni,r0
|
||||
mov r0,6(sp)
|
||||
1:
|
||||
mov *(r5)+,r2
|
||||
jsr r5,headseg; putchar
|
||||
mov llh,r0
|
||||
add 6(sp),r0
|
||||
sub 2(sp),r0
|
||||
asr r0
|
||||
sub 4(sp),r0
|
||||
bge 1f
|
||||
clr r0
|
||||
1:
|
||||
mov r0,-(sp)
|
||||
jsr pc,space
|
||||
jsr r5,headseg; putchar
|
||||
mov llh,r0
|
||||
sub (sp)+,r0
|
||||
sub (sp)+,r0
|
||||
sub (sp)+,r0
|
||||
sub (sp)+,r0
|
||||
add (sp)+,r0
|
||||
jsr pc,space
|
||||
jsr r5,headseg; putchar
|
||||
jsr pc,newline
|
||||
rts r5
|
||||
|
||||
headseg:
|
||||
clr -(sp)
|
||||
1:
|
||||
mov r1,-(sp)
|
||||
mov r2,r1
|
||||
inc r2
|
||||
jsr pc,rdsufb
|
||||
mov (sp)+,r1
|
||||
tstb r0
|
||||
beq 1f
|
||||
cmp r0,$'%
|
||||
beq 2f
|
||||
jsr pc,*(r5)
|
||||
add r1,(sp)
|
||||
br 1b
|
||||
2:
|
||||
mov pn,r0
|
||||
clr r1
|
||||
tst ro
|
||||
beq 2f
|
||||
mov $ones,onesp
|
||||
mov $fives,fivesp
|
||||
jsr pc,roman
|
||||
add r1,(sp)
|
||||
br 1b
|
||||
2:
|
||||
jsr pc,decml
|
||||
add r1,(sp)
|
||||
br 1b
|
||||
1:
|
||||
mov (sp)+,r0
|
||||
tst (r5)+
|
||||
rts r5
|
||||
|
||||
space:
|
||||
jsr r5,nlines; putchar
|
||||
rts pc
|
||||
|
||||
nlines:
|
||||
mov r0,-(sp)
|
||||
1:
|
||||
dec (sp)
|
||||
blt 1f
|
||||
mov $' ,r0
|
||||
jsr pc,*(r5)
|
||||
br 1b
|
||||
1:
|
||||
cmp (r5)+,(sp)+
|
||||
rts r5
|
||||
|
||||
decimal:
|
||||
jsr pc,decml
|
||||
tst (r5)+
|
||||
rts r5
|
||||
|
||||
decml:
|
||||
mov r2,-(sp)
|
||||
mov r3,-(sp)
|
||||
jsr pc,decml1
|
||||
mov (sp)+,r3
|
||||
mov (sp)+,r2
|
||||
rts pc
|
||||
|
||||
decml1:
|
||||
mov r1,-(sp)
|
||||
clr r2
|
||||
mov r0,r3
|
||||
dvd $10.,r2
|
||||
mov r3,-(sp)
|
||||
mov r2,r0
|
||||
beq 1f
|
||||
jsr pc,decml
|
||||
mov r1,2(sp)
|
||||
1:
|
||||
mov (sp)+,r0
|
||||
add $'0,r0
|
||||
jsr pc,*(r5)
|
||||
add (sp)+,r1
|
||||
rts pc
|
||||
|
||||
roman:
|
||||
mov r2,-(sp)
|
||||
mov r3,-(sp)
|
||||
jsr pc,roman1
|
||||
mov (sp)+,r3
|
||||
mov (sp)+,r2
|
||||
rts pc
|
||||
roman1:
|
||||
clr r2
|
||||
mov r0,r3
|
||||
bne .+4
|
||||
rts pc
|
||||
mov r1,-(sp)
|
||||
dvd $10.,r2
|
||||
mov r3,-(sp)
|
||||
mov r2,r0
|
||||
inc onesp
|
||||
inc fivesp
|
||||
jsr pc,roman
|
||||
mov r1,2(sp)
|
||||
dec onesp
|
||||
dec fivesp
|
||||
clr r2
|
||||
mov (sp)+,r3
|
||||
dvd $5.,r2
|
||||
cmp r3,$4
|
||||
bne 1f
|
||||
movb *onesp,r0
|
||||
jsr pc,*(r5)
|
||||
add r1,(sp)
|
||||
tst r2
|
||||
beq 2f
|
||||
inc onesp
|
||||
movb *onesp,r0
|
||||
dec onesp
|
||||
br 3f
|
||||
2:
|
||||
movb *fivesp,r0
|
||||
3:
|
||||
jsr pc,*(r5)
|
||||
add (sp)+,r1
|
||||
rts pc
|
||||
1:
|
||||
tst r2
|
||||
beq 2f
|
||||
movb *fivesp,r0
|
||||
jsr pc,*(r5)
|
||||
add r1,(sp)
|
||||
2:
|
||||
dec r3
|
||||
blt 1f
|
||||
movb *onesp,r0
|
||||
jsr pc,*(r5)
|
||||
add r1,(sp)
|
||||
br 2b
|
||||
1:
|
||||
mov (sp)+,r1
|
||||
rts pc
|
||||
|
||||
Reference in New Issue
Block a user