Add original unix v6
This commit is contained in:
@@ -0,0 +1,937 @@
|
||||
/
|
||||
/
|
||||
|
||||
/ nroff4
|
||||
|
||||
text:
|
||||
inc nflush
|
||||
cmp nl,$-1
|
||||
bne 0f
|
||||
jsr pc,newln1
|
||||
rts pc
|
||||
0:
|
||||
clr ulstate
|
||||
jsr pc,setnel
|
||||
tst ce
|
||||
bne nofill
|
||||
tst fi
|
||||
beq nofill
|
||||
tst pendw
|
||||
bne 7f
|
||||
tst pendt
|
||||
bne 8f
|
||||
inc pendt
|
||||
tst x
|
||||
bne 0f
|
||||
1:
|
||||
jsr pc,getchar
|
||||
bmi 1f
|
||||
cmpb r0,$' /
|
||||
beq 3f
|
||||
cmpb r0,tabc
|
||||
bne 1f
|
||||
3:
|
||||
inc x
|
||||
br 1b
|
||||
1:
|
||||
tst nlflg
|
||||
bne 6f
|
||||
mov r0,ch
|
||||
tst x
|
||||
beq 2f
|
||||
0:
|
||||
jsr pc,rbreak
|
||||
tst nc
|
||||
bne 5f
|
||||
tst wch
|
||||
bne 5f
|
||||
add x,un
|
||||
clr x
|
||||
jsr pc,setnel
|
||||
tst trap
|
||||
bne 5f
|
||||
2:
|
||||
tst x
|
||||
bne 0b
|
||||
tst nlflg
|
||||
beq 2f
|
||||
6:
|
||||
clr nflush
|
||||
clr x
|
||||
clr pendt
|
||||
clr ch
|
||||
mov $1,r0
|
||||
jsr pc,casesp1
|
||||
rts pc
|
||||
8:
|
||||
tst x
|
||||
bne 0b
|
||||
2:
|
||||
tst spread
|
||||
bne 1f
|
||||
tst pendw
|
||||
bne 0f
|
||||
tst wch
|
||||
bne 3f
|
||||
0:
|
||||
7:
|
||||
jsr pc,getword
|
||||
br 4f
|
||||
3:
|
||||
jsr pc,movword
|
||||
bne 2b
|
||||
tst nlflg
|
||||
beq 1f
|
||||
clr pendt
|
||||
1:
|
||||
jsr pc,adjust
|
||||
tst trap
|
||||
beq 2b
|
||||
tst nlflg
|
||||
beq 5f
|
||||
4:
|
||||
clr pendt
|
||||
tst pendw
|
||||
bne 5f
|
||||
dec ul
|
||||
bge 5f
|
||||
clr ul
|
||||
5:
|
||||
clr nflush
|
||||
rts pc
|
||||
|
||||
nofill:
|
||||
tst pendnf
|
||||
bne 1f
|
||||
clr over
|
||||
jsr pc,rbreak
|
||||
tst trap
|
||||
bne 3f
|
||||
tst nlflg
|
||||
bne 6b
|
||||
clr fac
|
||||
clr fmq
|
||||
mov $1000,nwd
|
||||
1:
|
||||
jsr pc,gettchar
|
||||
bmi 0f
|
||||
cmpb r0,$'\n
|
||||
beq 1f
|
||||
cmpb r0,ohc
|
||||
beq 1b
|
||||
cmpb r0,$005
|
||||
beq 4f
|
||||
0:
|
||||
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
|
||||
2:
|
||||
tst nc
|
||||
bne 0f
|
||||
mov $037,r0
|
||||
jsr pc,storeline
|
||||
0:
|
||||
jsr pc,rbreak
|
||||
dec ul
|
||||
bpl 3f
|
||||
clr ul
|
||||
3:
|
||||
clr nflush
|
||||
clr pendnf
|
||||
rts pc
|
||||
4:
|
||||
inc pendnf
|
||||
clr nflush
|
||||
jsr pc,flushi
|
||||
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
|
||||
mov $-1,lastl
|
||||
jsr pc,rbreak1
|
||||
clr spread
|
||||
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 wordp,r4
|
||||
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
|
||||
tst nwd
|
||||
beq 2f
|
||||
cmp nel,$4
|
||||
blt 1f
|
||||
cmp wch,$5 /don't do 4 char words
|
||||
ble 1f
|
||||
2:
|
||||
bit $2,hyf
|
||||
beq 0f
|
||||
tst op
|
||||
bne 0f
|
||||
clr r0
|
||||
jsr pc,findt
|
||||
dec r1
|
||||
ble 1f
|
||||
0:
|
||||
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 $3,r3
|
||||
cmp r3,$word
|
||||
blo 2f
|
||||
movb (r3),r2
|
||||
bic $!177,r2
|
||||
jsr pc,alph2
|
||||
bne 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)
|
||||
tst (sp)+
|
||||
sez
|
||||
rts pc
|
||||
|
||||
|
||||
width:
|
||||
mov r0,-(sp)
|
||||
cmpb r0,$014
|
||||
bne 0f
|
||||
mov $1,r1
|
||||
br 3f
|
||||
0:
|
||||
cmpb r0,$013
|
||||
bne 0f
|
||||
movb eschar,r0
|
||||
0:
|
||||
bic $!177,r0
|
||||
cmp r0,ohc
|
||||
beq 2f
|
||||
tst r0
|
||||
beq 2f
|
||||
cmp r0,$0177
|
||||
beq 2f
|
||||
cmp r0,$010
|
||||
bne 1f
|
||||
mov $-1,r1
|
||||
br 3f
|
||||
1:
|
||||
cmp $' ,r0
|
||||
bgt 2f
|
||||
mov $1,r1
|
||||
br 3f
|
||||
2:
|
||||
clr r1
|
||||
3:
|
||||
mov (sp)+,r0
|
||||
rts pc
|
||||
setwd:
|
||||
mov column,-(sp)
|
||||
clr column
|
||||
mov r2,-(sp)
|
||||
clr -(sp)
|
||||
jsr pc,*(r5)
|
||||
mov r0,r2
|
||||
1:
|
||||
jsr pc,*(r5)
|
||||
bmi 0f
|
||||
cmpb r0,r2
|
||||
beq 2f
|
||||
0:
|
||||
tst nlflg
|
||||
bne 2f
|
||||
jsr pc,width
|
||||
add r1,(sp)
|
||||
br 1b
|
||||
2:
|
||||
mov (sp)+,r0
|
||||
jsr pc,setn0
|
||||
mov (sp)+,r2
|
||||
mov (sp)+,column
|
||||
tst (r5)+
|
||||
rts r5
|
||||
|
||||
header:
|
||||
/headin:
|
||||
clr nls
|
||||
jsr pc,skipcont
|
||||
mov $'',r2
|
||||
tst op
|
||||
beq 1f
|
||||
jsr pc,wbfl
|
||||
1:
|
||||
jsr pc,alloc
|
||||
bne 0f
|
||||
rts pc
|
||||
0:
|
||||
mov nextb,r1
|
||||
2:
|
||||
mov r1,headp
|
||||
jsr pc,getchar
|
||||
bmi 3f
|
||||
cmpb r0,$'\n
|
||||
beq 2f
|
||||
mov r0,r2
|
||||
1:
|
||||
jsr pc,getchar
|
||||
bmi 3f
|
||||
cmpb r0,$'\n
|
||||
beq 2f
|
||||
0:
|
||||
cmpb r0,r2
|
||||
bne 3f
|
||||
mov $004,r0
|
||||
3:
|
||||
jsr pc,wbf
|
||||
br 1b
|
||||
2:
|
||||
mov $004,r0
|
||||
jsr pc,wbf
|
||||
mov $004,r0
|
||||
jsr pc,wbf
|
||||
clr r0
|
||||
jsr pc,wbt
|
||||
|
||||
/headout:
|
||||
clr -(sp)
|
||||
mov headp,r2
|
||||
jsr r5,headseg; width
|
||||
mov r0,-(sp)
|
||||
jsr r5,headseg; width
|
||||
mov r0,-(sp)
|
||||
jsr r5,headseg; width
|
||||
mov r0,-(sp)
|
||||
tst op
|
||||
bne 1f
|
||||
mov po,r0
|
||||
jsr pc,space
|
||||
1:
|
||||
mov headp,r2
|
||||
jsr r5,headseg; putchar
|
||||
mov llh,r0
|
||||
add 6(sp),r0
|
||||
sub 2(sp),r0
|
||||
asr r0
|
||||
sub 4(sp),r0
|
||||
mov r0,-(sp)
|
||||
tst 4(sp)
|
||||
bne 1f
|
||||
tst 2(sp)
|
||||
beq 2f
|
||||
1:
|
||||
jsr pc,space
|
||||
2:
|
||||
jsr r5,headseg; putchar
|
||||
mov llh,r0
|
||||
sub (sp)+,r0
|
||||
sub (sp)+,r0
|
||||
sub (sp)+,r0
|
||||
sub (sp)+,r0
|
||||
add (sp)+,r0
|
||||
tst -10(sp)
|
||||
beq 1f
|
||||
jsr pc,space
|
||||
jsr r5,headseg; putchar
|
||||
1:
|
||||
jsr pc,newline
|
||||
cmp nl,hnl
|
||||
ble 0f
|
||||
mov nl,hnl
|
||||
0:
|
||||
mov headp,r0
|
||||
jsr pc,free
|
||||
rts pc
|
||||
|
||||
headseg:
|
||||
clr -(sp)
|
||||
1:
|
||||
mov r1,-(sp)
|
||||
mov r2,r1
|
||||
jsr pc,rbf0
|
||||
jsr pc,incoff
|
||||
mov r1,r2
|
||||
mov (sp)+,r1
|
||||
tst r0
|
||||
beq 1f
|
||||
bmi 0f
|
||||
cmpb r0,$004
|
||||
beq 1f
|
||||
cmpb r0,$'%
|
||||
beq 2f
|
||||
0:
|
||||
jsr pc,*(r5)
|
||||
add r1,(sp)
|
||||
br 1b
|
||||
2:
|
||||
mov $'%,r0
|
||||
jsr pc,findr
|
||||
mov [flist-vlist](r1),nform
|
||||
mov pn,r0
|
||||
clr r1
|
||||
jsr pc,fnumb
|
||||
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,decml1
|
||||
mov r1,2(sp)
|
||||
1:
|
||||
mov (sp)+,r0
|
||||
add $'0,r0
|
||||
jsr pc,*(r5)
|
||||
add (sp)+,r1
|
||||
rts pc
|
||||
|
||||
roman0:
|
||||
jsr pc,roman
|
||||
tst (r5)+
|
||||
rts r5
|
||||
roman:
|
||||
tst r0
|
||||
beq decml
|
||||
mov r2,-(sp)
|
||||
mov r3,-(sp)
|
||||
cmp ro,$2
|
||||
bne 1f
|
||||
mov $cones,onesp
|
||||
mov $cfives,fivesp
|
||||
br 2f
|
||||
1:
|
||||
mov $ones,onesp
|
||||
mov $fives,fivesp
|
||||
2:
|
||||
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,roman1
|
||||
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
|
||||
|
||||
abc0:
|
||||
jsr pc,abc
|
||||
tst (r5)+
|
||||
rts r5
|
||||
abc:
|
||||
mov r2,-(sp)
|
||||
mov r3,-(sp)
|
||||
mov r0,r3
|
||||
bne 0f
|
||||
mov $'0,r0
|
||||
jsr pc,*(r5)
|
||||
br 1f
|
||||
0:
|
||||
dec r3
|
||||
jsr pc,abc1
|
||||
1:
|
||||
mov (sp)+,r3
|
||||
mov (sp)+,r2
|
||||
rts pc
|
||||
abc1:
|
||||
clr r2
|
||||
dvd $26.,r2
|
||||
mov r3,-(sp)
|
||||
mov r2,r3
|
||||
beq 1f
|
||||
dec r3
|
||||
jsr pc,abc1
|
||||
1:
|
||||
cmp ro,$2
|
||||
beq 1f
|
||||
add $'a,(sp)
|
||||
br 2f
|
||||
1:
|
||||
add $'A,(sp)
|
||||
2:
|
||||
mov (sp)+,r0
|
||||
jsr pc,*(r5)
|
||||
rts pc
|
||||
|
||||
fnumb0:
|
||||
jsr pc,fnumb
|
||||
tst (r5)+
|
||||
rts r5
|
||||
fnumb:
|
||||
mov ro,-(sp)
|
||||
mov nform,ro
|
||||
bne 0f
|
||||
mov (sp),ro
|
||||
br 1f
|
||||
0:
|
||||
dec ro
|
||||
1:
|
||||
tst ro
|
||||
bne 1f
|
||||
jsr pc,decml
|
||||
br 2f
|
||||
1:
|
||||
cmp ro,$2
|
||||
bgt 1f
|
||||
jsr pc,roman
|
||||
br 2f
|
||||
1:
|
||||
sub $2,ro
|
||||
jsr pc,abc
|
||||
2:
|
||||
mov (sp)+,ro
|
||||
rts pc
|
||||
|
||||
/wordout:
|
||||
/ tst index
|
||||
/ beq 1f
|
||||
/ mov wch,0f
|
||||
/ beq 1f
|
||||
/ mov indid,r0
|
||||
/ sys write; word; 0:..
|
||||
/ mov indid,r0
|
||||
/ sys write; 8f; 1
|
||||
/ mov indid,r0
|
||||
/ jsr r5,numb; pn
|
||||
/ mov indid,r0
|
||||
/ sys write; 8f; 1
|
||||
/ mov nl,char
|
||||
/ inc char
|
||||
/ mov indid,r0
|
||||
/ jsr r5,numb; char
|
||||
/ mov indid,r0
|
||||
/ sys write; 9f; 1
|
||||
/1:
|
||||
/ rts pc
|
||||
/8: 011 /tab
|
||||
/9: <\n\0>
|
||||
/ .even
|
||||
/numb:
|
||||
/ mov r2,-(sp)
|
||||
/ mov r3,-(sp)
|
||||
/ mov *(r5)+,r3
|
||||
/ mov r0,r1
|
||||
/ jsr pc,numb1
|
||||
/ mov (sp)+,r3
|
||||
/ mov (sp)+,r2
|
||||
/ rts r5
|
||||
/numb1:
|
||||
/ clr r2
|
||||
/ dvd $10.,r2
|
||||
/ mov r3,-(sp)
|
||||
/ mov r2,r3
|
||||
/ beq 1f
|
||||
/ jsr pc,numb1
|
||||
/1:
|
||||
/ add $'0,(sp)
|
||||
/ mov (sp)+,char
|
||||
/ mov r1,r0
|
||||
/ sys write; char; 1
|
||||
/ rts pc
|
||||
|
||||
setstr:
|
||||
clr -(sp)
|
||||
clr -(sp)
|
||||
0:
|
||||
jsr pc,get1
|
||||
bmi 3f
|
||||
bic $!177,r0
|
||||
cmpb r0,$'\\
|
||||
bne 1f
|
||||
4:
|
||||
jsr pc,get1
|
||||
jsr r5,switch;esctab
|
||||
cmpb r0,dolc
|
||||
bne 2f
|
||||
jsr pc,seta
|
||||
br 0b
|
||||
2:
|
||||
cmpb r0,numc
|
||||
bne 1f
|
||||
clr r1
|
||||
jsr pc,setn
|
||||
br 0b
|
||||
1:
|
||||
tst 2(sp)
|
||||
bne 5f
|
||||
bic $!177,r0
|
||||
cmpb r0,$'(
|
||||
bne 1f
|
||||
inc 2(sp)
|
||||
jsr pc,get1
|
||||
bic $!177,r0
|
||||
cmpb r0,$'\\
|
||||
beq 4b
|
||||
5:
|
||||
mov r0,-(sp)
|
||||
jsr pc,get1
|
||||
bic $!177,r0
|
||||
swab r0
|
||||
bis (sp)+,r0
|
||||
1:
|
||||
mov $contab,r1
|
||||
1:
|
||||
mov (r1)+,(sp)
|
||||
bic $100000,(sp)
|
||||
cmp r0,(sp)
|
||||
beq 2f
|
||||
cmp (r1)+,$-1
|
||||
bne 1b
|
||||
br 3f
|
||||
2:
|
||||
mov (r1),(sp)
|
||||
tst -(r1)
|
||||
bpl 3f
|
||||
clr *nxf
|
||||
jsr pc,pushi
|
||||
mov (sp),ip
|
||||
3:
|
||||
cmp (sp)+,(sp)+
|
||||
rts pc
|
||||
|
||||
copys:
|
||||
inc copyf
|
||||
jsr pc,skipcont
|
||||
bne 2f
|
||||
jsr pc,getchar
|
||||
bmi 0f
|
||||
cmpb r0,$'"
|
||||
bne 0f
|
||||
1:
|
||||
jsr pc,getchar
|
||||
tst nlflg
|
||||
bne 2f
|
||||
0:
|
||||
jsr pc,wbf
|
||||
br 1b
|
||||
2:
|
||||
clr r0
|
||||
jsr pc,wbt
|
||||
clr copyf
|
||||
rts pc
|
||||
|
||||
setrpt:
|
||||
inc copyf
|
||||
inc raw1
|
||||
jsr pc,get1
|
||||
dec copyf
|
||||
dec raw1
|
||||
mov r0,r1
|
||||
jsr pc,get1
|
||||
cmpb r0,$006
|
||||
beq 1f
|
||||
0:
|
||||
movb r0,rchar
|
||||
movb r1,nspace
|
||||
cmpb r1,$377
|
||||
bne 1f
|
||||
clr nspace
|
||||
1:
|
||||
rts pc
|
||||
|
||||
setfield:
|
||||
clr npad
|
||||
mov r1,-(sp)
|
||||
mov r2,-(sp)
|
||||
mov r3,-(sp)
|
||||
mov r4,-(sp)
|
||||
clr r4
|
||||
clr -(sp)
|
||||
jsr pc,width
|
||||
sub r1,column /start
|
||||
mov column,-(sp)
|
||||
mov $tabtab,r0
|
||||
1:
|
||||
tst (r0)
|
||||
beq 4f
|
||||
cmp (sp),(r0)+
|
||||
bge 1b
|
||||
mov -(r0),2(sp)
|
||||
sub (sp),2(sp) /h
|
||||
mov $fbuf,r2
|
||||
1:
|
||||
jsr pc,getch1
|
||||
bmi 0f
|
||||
cmpb r0,padc
|
||||
bne 2f
|
||||
jsr pc,width
|
||||
sub r1,column
|
||||
inc npad
|
||||
mov r2,-(sp)
|
||||
add $2,r2
|
||||
2:
|
||||
cmpb r0,fc
|
||||
beq 3f
|
||||
cmpb r0,$'\n
|
||||
bne 0f
|
||||
mov $012,r4
|
||||
clr nlflg
|
||||
br 3f
|
||||
0:
|
||||
movb r0,(r2)+
|
||||
cmp r2,$efbuf-6
|
||||
blo 1b
|
||||
3:
|
||||
tst npad
|
||||
bne 0f
|
||||
inc npad
|
||||
mov r2,-(sp)
|
||||
add $3,r2
|
||||
0:
|
||||
movb r4,(r2)+
|
||||
clrb (r2)+
|
||||
jsr pc,width
|
||||
sub r1,column
|
||||
mov npad,r1
|
||||
asl r1
|
||||
add sp,r1
|
||||
mov (r1),-(sp)
|
||||
sub column,(r1) /-s
|
||||
mov (sp)+,column
|
||||
add 2(r1),(r1) /h-s
|
||||
mov (r1),r1
|
||||
mov r1,r2
|
||||
sxt r0
|
||||
div npad,r0
|
||||
mov $014,r3 /unpaddable sp
|
||||
tst r2
|
||||
bpl 1f
|
||||
neg r0
|
||||
neg r1
|
||||
mov $010,r3
|
||||
1:
|
||||
mov (sp)+,r2
|
||||
movb $006,(r2)+
|
||||
movb r0,(r2)+
|
||||
movb r3,(r2)
|
||||
tst r1
|
||||
beq 0f
|
||||
incb -1(r2)
|
||||
dec r1
|
||||
0:
|
||||
tstb -(r2)
|
||||
bne 0f
|
||||
movb $377,(r2)
|
||||
0:
|
||||
dec npad
|
||||
bgt 1b
|
||||
mov $fbuf,cp
|
||||
4:
|
||||
cmp (sp)+,(sp)+
|
||||
mov (sp)+,r4
|
||||
mov (sp)+,r3
|
||||
mov (sp)+,r2
|
||||
mov (sp)+,r1
|
||||
rts pc
|
||||
Reference in New Issue
Block a user