/ / / 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