Add original unix v6
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
/
|
||||
/
|
||||
|
||||
/ f14 -- common statement
|
||||
/
|
||||
|
||||
.globl scomm
|
||||
|
||||
.globl getsym
|
||||
.globl sdime1
|
||||
.globl error
|
||||
.globl getid
|
||||
.globl lookid
|
||||
|
||||
scomm:
|
||||
mov r5,-(sp)
|
||||
jsr r5,getsym
|
||||
cmp r0,$6 / / for named common
|
||||
beq ncom
|
||||
3:
|
||||
tst r0
|
||||
bne 9f
|
||||
mov r3,-(sp)
|
||||
clr r5
|
||||
br 2f
|
||||
|
||||
ncom:
|
||||
cmpb (r1),$'/
|
||||
bne 3f
|
||||
inc r1
|
||||
jsr r5,getsym
|
||||
br 3b
|
||||
3:
|
||||
jsr r5,getid
|
||||
br 9f / not identifier
|
||||
jsr r5,lookid; symbuf-1
|
||||
bis $40,symtab(r3) / set named common
|
||||
mov r3,r5
|
||||
jsr r5,getsym
|
||||
cmp r0,$6 / /
|
||||
bne 9f
|
||||
1:
|
||||
jsr r5,getsym
|
||||
tst r0
|
||||
bne 9f
|
||||
mov r3,-(sp)
|
||||
2:
|
||||
jsr r5,getsym
|
||||
cmp r0,$32. / (
|
||||
bne 2f
|
||||
mov (sp),r3
|
||||
jsr r5,sdime1
|
||||
jsr r5,getsym
|
||||
2:
|
||||
mov (sp)+,r3
|
||||
bit $300,symtab(r3) / test param/common
|
||||
beq 2f
|
||||
jsr r5,error; 9. / not commonable or already commoned
|
||||
br 3f
|
||||
2:
|
||||
mov r0,-(sp)
|
||||
mov symtab+4(r5),r0
|
||||
beq 2f
|
||||
mov r3,symtab+4(r0) / next ptr of old last block
|
||||
2:
|
||||
mov (sp)+,r0
|
||||
mov r3,symtab+4(r5) / new last ptr of head block
|
||||
tst symtab+2(r5)
|
||||
bne 3f
|
||||
mov r3,symtab+2(r5) / first ptr if first block
|
||||
3:
|
||||
bis $100,symtab(r3)
|
||||
cmp r0,$36. / ,
|
||||
beq 1b
|
||||
cmp r0,$6 / another /
|
||||
beq ncom
|
||||
cmp r0,$40. / =|
|
||||
beq 8f
|
||||
9:
|
||||
jsr r5, error; 10. / common syntax error
|
||||
8:
|
||||
mov (sp)+,r5
|
||||
rts r5
|
||||
|
||||
|
||||
Reference in New Issue
Block a user