Add original unix v6
This commit is contained in:
@@ -0,0 +1,227 @@
|
||||
/
|
||||
/
|
||||
|
||||
/ f32 -- expression to tree
|
||||
|
||||
.globl e1
|
||||
.globl e2
|
||||
.globl e11
|
||||
|
||||
.globl error
|
||||
.globl getsym
|
||||
.globl blockp
|
||||
.globl blocks
|
||||
.globl declimpl
|
||||
.globl conu
|
||||
.globl ptemp
|
||||
.globl functn
|
||||
.globl funimpl
|
||||
|
||||
/ e1: e2[,e1]
|
||||
/ e2: e2[.or.e3]
|
||||
/ e3: e3[.and.e4]
|
||||
/ e4: [.not.]e5
|
||||
/ e5: e6[.rel.e6]
|
||||
/ e6: [+-]e7[+-e6]
|
||||
/ e7: e7[*/e8]
|
||||
/ e8: e9[**e9]
|
||||
/ e9: constant
|
||||
/ name[(e1)]
|
||||
/ (e2)
|
||||
e1:
|
||||
jsr r5,e2
|
||||
cmp r0,$36. / ,
|
||||
bne 1f
|
||||
jsr r5,block; e1
|
||||
rts r5
|
||||
|
||||
e2:
|
||||
jsr r5,e3
|
||||
2:
|
||||
cmp r0,$30. / or
|
||||
bne 1f
|
||||
jsr r5,block; e3
|
||||
br 2b
|
||||
|
||||
e3:
|
||||
jsr r5,e4
|
||||
2:
|
||||
cmp r0,$28. / and
|
||||
bne 1f
|
||||
jsr r5,block; e4
|
||||
br 2b
|
||||
|
||||
e4:
|
||||
jsr r5,getsym
|
||||
cmp r0,$26. / not
|
||||
bne e5
|
||||
clr r2
|
||||
jsr r5,block; e5a
|
||||
rts r5
|
||||
|
||||
e5a:
|
||||
jsr r5,getsym
|
||||
e5:
|
||||
jsr r5,e6
|
||||
cmp r0,$14. / .lt.
|
||||
blo 1f
|
||||
cmp r0,$24. / .ge.
|
||||
bhi 1f
|
||||
jsr r5,block; e6a
|
||||
rts r5
|
||||
|
||||
e6a:
|
||||
jsr r5,getsym
|
||||
e6:
|
||||
cmp r0,$12. / +
|
||||
beq e6a
|
||||
cmp r0,$10. / -
|
||||
bne 2f
|
||||
clr r2
|
||||
jsr r5,block; e7a
|
||||
br 3f
|
||||
2:
|
||||
jsr r5,e7
|
||||
3:
|
||||
cmp r0,$10. / -
|
||||
blo 1f
|
||||
cmp r0,$12. / +
|
||||
bhi 1f
|
||||
jsr r5,block; e7a
|
||||
br 3b
|
||||
|
||||
e7a:
|
||||
jsr r5,getsym
|
||||
e7:
|
||||
jsr r5,e8
|
||||
2:
|
||||
cmp r0,$6. / /
|
||||
blo 1f
|
||||
cmp r0,$8. / *
|
||||
bhi 1f
|
||||
jsr r5,block; e8a
|
||||
br 2b
|
||||
|
||||
e8a:
|
||||
jsr r5,getsym
|
||||
e8:
|
||||
jsr r5,e9
|
||||
cmp r0,$4 / **
|
||||
bne 1f
|
||||
jsr r5,block; e9a
|
||||
1:
|
||||
rts r5
|
||||
|
||||
e9a:
|
||||
jsr r5,getsym
|
||||
e9:
|
||||
cmp r0,$2 / constant
|
||||
beq 3f
|
||||
/ (e2)
|
||||
cmp r0,$32. / (
|
||||
bne 1f
|
||||
jsr r5,e2
|
||||
br 2f
|
||||
e10:
|
||||
jsr r5,e1
|
||||
2:
|
||||
cmp r0,$34. / )
|
||||
beq 2f
|
||||
jsr r5,error; 29.
|
||||
rts r5
|
||||
2:
|
||||
jsr r5,getsym
|
||||
rts r5
|
||||
1:
|
||||
tst r0
|
||||
beq e11
|
||||
/ unknown
|
||||
jsr r5,error; 30.
|
||||
rts r5
|
||||
|
||||
/ name
|
||||
e11:
|
||||
mov r3,r2
|
||||
jsr r5,getsym
|
||||
cmp r0,$32. / (
|
||||
bne 1f
|
||||
jsr r5,appl
|
||||
jsr r5,block; e10
|
||||
rts r5
|
||||
1:
|
||||
mov r2,r3
|
||||
mov r0,-(sp)
|
||||
jsr r5,declimpl
|
||||
mov symtab(r3),r0
|
||||
bic $!70,r0
|
||||
cmp r0,$30 / class =| funct
|
||||
bne 1f
|
||||
jsr r5,appl
|
||||
mov $42.,r3 / just function name
|
||||
br 2f
|
||||
1:
|
||||
clr r3
|
||||
2:
|
||||
mov (sp)+,r0
|
||||
mov r2,-(sp)
|
||||
mov blockp,r2
|
||||
add $6,blockp
|
||||
mov r3,(r2)
|
||||
mov (sp)+,2(r2)
|
||||
clr 4(r2)
|
||||
rts r5
|
||||
|
||||
/ number
|
||||
3:
|
||||
mov blockp,r2
|
||||
add $6,blockp
|
||||
mov r0,(r2)
|
||||
mov r3,2(r2)
|
||||
cmpb 2(r2),$5 / const->int
|
||||
bne 4f
|
||||
movb $1,2(r2)
|
||||
4:
|
||||
mov r3,temp
|
||||
mov conu,4(r2)
|
||||
inc conu
|
||||
jsr r5,ptemp; 'c; temp; symbuf
|
||||
jsr r5,getsym
|
||||
rts r5
|
||||
|
||||
appl:
|
||||
clr functn
|
||||
bit $70,symtab(r2) / class
|
||||
bne 1f
|
||||
bis $30,symtab(r2)
|
||||
jsr r5,funimpl
|
||||
1:
|
||||
mov r2,r3
|
||||
jsr r5,declimpl
|
||||
mov symtab(r2),r0
|
||||
bic $!70,r0 / class again
|
||||
cmp r0,$20 / array
|
||||
beq 1f
|
||||
cmp r0,$30 / funct
|
||||
beq 2f
|
||||
jsr r5,error; 33.
|
||||
bic $70,symtab(r2)
|
||||
br appl
|
||||
1:
|
||||
mov $32.,r0
|
||||
rts r5
|
||||
2:
|
||||
mov $34.,r0
|
||||
rts r5
|
||||
|
||||
block:
|
||||
mov blockp,r3
|
||||
add $6,blockp
|
||||
mov r0,(r3)+
|
||||
mov r2,(r3)+
|
||||
mov r3,-(sp)
|
||||
jsr r5,*(r5)+
|
||||
mov r2,*(sp)
|
||||
mov (sp)+,r2
|
||||
sub $4,r2
|
||||
rts r5
|
||||
|
||||
Reference in New Issue
Block a user