Add original unix v6
This commit is contained in:
@@ -0,0 +1,434 @@
|
||||
/
|
||||
/
|
||||
|
||||
/ hyp1 -- driver
|
||||
|
||||
hyphen:
|
||||
tst hypedf
|
||||
bne 3f
|
||||
tst hyf
|
||||
beq 3f
|
||||
inc hypedf
|
||||
mov wordp,r0
|
||||
clr nhyph
|
||||
1:
|
||||
jsr pc,punct
|
||||
bne 1f
|
||||
inc r0
|
||||
br 1b
|
||||
1:
|
||||
jsr pc,alph
|
||||
bne 3f
|
||||
mov r0,wordstart
|
||||
1:
|
||||
inc r0
|
||||
jsr pc,alph
|
||||
beq 1b
|
||||
dec r0
|
||||
mov r0,hstart
|
||||
1:
|
||||
inc r0
|
||||
tstb (r0)
|
||||
beq 2f
|
||||
jsr pc,punct
|
||||
bne 3f
|
||||
br 1b
|
||||
2:
|
||||
mov hstart,wordend
|
||||
jsr pc,exword
|
||||
beq 0f
|
||||
jsr r5,suffix
|
||||
tst exf
|
||||
bne 0f
|
||||
jsr r5,digram
|
||||
0:
|
||||
bit $4,hyf
|
||||
beq 0f
|
||||
mov wordend,r0
|
||||
bicb $!177,-1(r0)
|
||||
0:
|
||||
mov wordstart,r0
|
||||
bicb $!177,1(r0)
|
||||
bit $10,hyf
|
||||
beq 3f
|
||||
bicb $!177,2(r0)
|
||||
3:
|
||||
rts pc
|
||||
|
||||
casehw:
|
||||
jsr pc,skipcont
|
||||
bne 2f
|
||||
mov nexth,r1
|
||||
cmp r1,$ehbuf-2
|
||||
bhis 3f
|
||||
1:
|
||||
jsr pc,getchar
|
||||
bmi 1f
|
||||
cmpb r0,$' /
|
||||
beq 4f
|
||||
cmpb r0,$012
|
||||
beq 1f
|
||||
movb r0,(r1)+
|
||||
cmp r1,$ehbuf-2
|
||||
blo 1b
|
||||
br 3f
|
||||
1:
|
||||
clrb (r1)+
|
||||
mov r1,nexth
|
||||
clrb (r1)+
|
||||
2:
|
||||
rts pc
|
||||
3:
|
||||
jsr r5,string;hmess
|
||||
clrb *nexth
|
||||
br 2b
|
||||
4:
|
||||
jsr pc,1b
|
||||
br casehw
|
||||
hmess: <Exception word space full.\n\0>
|
||||
.even
|
||||
|
||||
exword:
|
||||
clr exf
|
||||
clr -(sp)
|
||||
mov r1,-(sp)
|
||||
mov r2,-(sp)
|
||||
mov r3,-(sp)
|
||||
mov r4,-(sp)
|
||||
mov $hbuf,r2
|
||||
mov hstart,r0
|
||||
cmpb (r0)+,(r0)+
|
||||
0:
|
||||
mov r2,8(sp)
|
||||
mov wordstart,r1
|
||||
tstb (r2)
|
||||
beq 4f
|
||||
1:
|
||||
movb (r2)+,r4
|
||||
cmpb r4,$'-
|
||||
beq 1b
|
||||
movb (r1)+,r3
|
||||
/ tstb r3
|
||||
/ bne 2f
|
||||
cmp r1,r0
|
||||
blo 2f
|
||||
tstb r4
|
||||
beq 3f
|
||||
2:
|
||||
tstb r4
|
||||
bne 2f
|
||||
/ tstb (r1)
|
||||
tstb -1(r0)
|
||||
bne 2f
|
||||
cmpb r3,$'s
|
||||
beq 3f
|
||||
2:
|
||||
tstb r4
|
||||
beq 0b
|
||||
/ tstb r3
|
||||
/ beq 2f
|
||||
cmp r1,r0
|
||||
bhis 2f
|
||||
cmpb r4,r3
|
||||
beq 1b
|
||||
2:
|
||||
tstb (r2)+
|
||||
bne 2b
|
||||
br 0b
|
||||
3:
|
||||
mov wordstart,r1
|
||||
mov 8(sp),r2
|
||||
clr 8(sp)
|
||||
inc exf
|
||||
1:
|
||||
tstb (r1)+
|
||||
cmpb (r2)+,$'-
|
||||
bne 0f
|
||||
bisb $200,-1(r1)
|
||||
tstb (r2)+
|
||||
0:
|
||||
tstb (r2)
|
||||
bne 1b
|
||||
4:
|
||||
mov (sp)+,r4
|
||||
mov (sp)+,r3
|
||||
mov (sp)+,r2
|
||||
mov (sp)+,r1
|
||||
tst (sp)+
|
||||
rts pc
|
||||
|
||||
punct:
|
||||
tst old
|
||||
bne 4f
|
||||
cmpb (r0),$010
|
||||
beq 0f
|
||||
movb (r0),r2
|
||||
jsr pc,alph2
|
||||
beq 0f
|
||||
sez
|
||||
rts pc
|
||||
0:
|
||||
clz
|
||||
rts pc
|
||||
4:
|
||||
mov $3f,r2
|
||||
1:
|
||||
cmpb (r0),(r2)+
|
||||
beq 2f
|
||||
tstb (r2)
|
||||
bne 1b
|
||||
clz
|
||||
2:
|
||||
rts pc
|
||||
3: < .,()"\'`\0> /should be more
|
||||
.even
|
||||
maplow:
|
||||
cmp r2,$'a
|
||||
bhis 1f
|
||||
add $'a-'A,r2
|
||||
1:
|
||||
rts pc
|
||||
|
||||
vowel:
|
||||
cmpb r2,$'a
|
||||
beq 1f
|
||||
cmpb r2,$'e
|
||||
beq 1f
|
||||
cmpb r2,$'i
|
||||
beq 1f
|
||||
cmpb r2,$'o
|
||||
beq 1f
|
||||
cmpb r2,$'u
|
||||
beq 1f
|
||||
cmpb r2,$'y
|
||||
beq 1f
|
||||
cmpb r2,$'A
|
||||
beq 1f
|
||||
cmpb r2,$'E
|
||||
beq 1f
|
||||
cmpb r2,$'I
|
||||
beq 1f
|
||||
cmpb r2,$'O
|
||||
beq 1f
|
||||
cmpb r2,$'U
|
||||
beq 1f
|
||||
cmpb r2,$'Y
|
||||
1:
|
||||
rts pc
|
||||
|
||||
checkvow:
|
||||
mov r0,-(sp)
|
||||
1:
|
||||
movb -(r0),r2
|
||||
jsr pc,vowel
|
||||
beq 1f
|
||||
jsr pc,alph
|
||||
beq 1b
|
||||
mov (sp)+,r0
|
||||
clz
|
||||
rts r5
|
||||
1:
|
||||
mov (sp)+,r0
|
||||
sez
|
||||
rts r5
|
||||
|
||||
/ hyp2 -- suffix and digram
|
||||
|
||||
digram:
|
||||
mov hstart,r0
|
||||
1:
|
||||
jsr pc,alph
|
||||
bne 3f
|
||||
jsr pc,vowel
|
||||
beq 1f
|
||||
dec r0
|
||||
br 1b
|
||||
1:
|
||||
mov r0,hstart
|
||||
1:
|
||||
movb -(r0),r2
|
||||
jsr pc,alph2
|
||||
bne 3f
|
||||
jsr pc,vowel
|
||||
bne 1b
|
||||
clr maxdig
|
||||
mov r0,nhstart
|
||||
1:
|
||||
mov $1,r3
|
||||
movb -1(r0),r2
|
||||
jsr pc,alph2
|
||||
beq 2f
|
||||
movb (r0),r2
|
||||
mov $'a,r1
|
||||
jsr r5,dilook; bxh
|
||||
br 4f
|
||||
2:
|
||||
movb -2(r0),r2
|
||||
mov $xxh,0f
|
||||
jsr pc,alph2
|
||||
beq 2f
|
||||
mov $bxxh,0f
|
||||
2:
|
||||
movb -1(r0),r1
|
||||
movb (r0),r2
|
||||
jmp 7f
|
||||
.data
|
||||
7:
|
||||
jsr r5,dilook; 0:xxh
|
||||
jmp 8f
|
||||
.text
|
||||
8:
|
||||
4:
|
||||
movb (r0)+,r1
|
||||
movb (r0),r2
|
||||
jsr r5,dilook; xhx
|
||||
movb (r0),r1
|
||||
movb 1(r0),r2
|
||||
jsr r5,dilook; hxx
|
||||
cmp r3,maxdig
|
||||
blos 2f
|
||||
mov r3,maxdig
|
||||
mov r0,maxloc
|
||||
2:
|
||||
cmp r0,hstart
|
||||
blo 1b
|
||||
mov nhstart,hstart
|
||||
cmp maxdig,thresh
|
||||
blo digram
|
||||
bisb $200,*maxloc
|
||||
inc nhyph
|
||||
/ mov maxdig,*octbufp
|
||||
/ inc octcnt
|
||||
/ add $2,octbufp
|
||||
br digram
|
||||
3:
|
||||
rts r5
|
||||
|
||||
dilook:
|
||||
mov r4,-(sp)
|
||||
bic $!177,r2
|
||||
bic $!177,r1
|
||||
jsr pc,maplow
|
||||
sub $'a,r2
|
||||
cmp r2,$'z-'a
|
||||
bhi 3f
|
||||
mov r2,r4
|
||||
mov r1,r2
|
||||
jsr pc,maplow
|
||||
sub $'a,r2
|
||||
cmp r2,$'z-'a
|
||||
bhi 3f
|
||||
mov r3,-(sp)
|
||||
mov r2,r3
|
||||
mpy $13.,r3
|
||||
clr r2
|
||||
clc
|
||||
ror r4
|
||||
adc r2
|
||||
add r3,r4
|
||||
add (r5)+,r4
|
||||
movb (r4),r4
|
||||
tst r2
|
||||
bne 1f
|
||||
asr r4
|
||||
asr r4
|
||||
asr r4
|
||||
asr r4
|
||||
1:
|
||||
bic $!17,r4
|
||||
mov r4,r3
|
||||
mpy (sp)+,r3
|
||||
br 4f
|
||||
3:
|
||||
clr r3
|
||||
tst (r5)+
|
||||
4:
|
||||
mov (sp)+,r4
|
||||
rts r5
|
||||
|
||||
suffix:
|
||||
mov hstart,r0
|
||||
jsr pc,alph
|
||||
bne 4f
|
||||
jsr pc,maplow
|
||||
sub $'a,r2
|
||||
asl r2
|
||||
mov suftab(r2),-(sp)
|
||||
bic $!37777,(sp)
|
||||
beq 3f
|
||||
1:
|
||||
mov hstart,r0
|
||||
mov (sp),r1
|
||||
jsr pc,rdsuf
|
||||
movb (r1),r3
|
||||
beq 3f
|
||||
bic $!17,r3
|
||||
add r3,(sp)
|
||||
add r1,r3
|
||||
2:
|
||||
movb -(r3),r2
|
||||
cmp r3,r1
|
||||
ble 2f
|
||||
bic $!177,r2
|
||||
mov r2,-(sp)
|
||||
movb -(r0),r2
|
||||
jsr pc,maplow
|
||||
cmp r2,(sp)+
|
||||
bne 1b
|
||||
br 2b
|
||||
2:
|
||||
mov hstart,r0
|
||||
tst (sp)+
|
||||
movb (r1),r3
|
||||
bic $!17,r3
|
||||
add r1,r3
|
||||
bitb $200,(r1)+
|
||||
bne 1f
|
||||
2:
|
||||
dec r0
|
||||
cmp r3,r1
|
||||
ble 2f
|
||||
tstb -(r3)
|
||||
bpl 2b
|
||||
1:
|
||||
mov r0,hstart
|
||||
dec hstart
|
||||
bitb $100,-1(r1)
|
||||
bne 2b
|
||||
jsr r5,checkvow
|
||||
bne 4f
|
||||
bisb $200,(r0)
|
||||
br 2b
|
||||
2:
|
||||
bitb $40,-(r1)
|
||||
bne 4f
|
||||
jsr pc,exword
|
||||
bne suffix
|
||||
br 4f
|
||||
/ beq suffix
|
||||
/ br 4f
|
||||
3:
|
||||
tst (sp)+
|
||||
4:
|
||||
rts r5
|
||||
|
||||
rdsuf:
|
||||
mov r0,-(sp)
|
||||
mov suff,nfile
|
||||
mov 4(sp),r1
|
||||
jsr pc,rdsufb
|
||||
mov $sufb,r2
|
||||
movb r0,(r2)+
|
||||
mov r0,r3
|
||||
bic $!17,r3
|
||||
1:
|
||||
dec r3
|
||||
blt 1f
|
||||
inc r1
|
||||
jsr pc,rdsufb
|
||||
movb r0,(r2)+
|
||||
br 1b
|
||||
1:
|
||||
mov $sufb,r1
|
||||
mov (sp)+,r0
|
||||
rts pc
|
||||
Reference in New Issue
Block a user