NEW AUTO 3,1 *-------------------------------------- CC.Link >LDYA L.MSG.LINKING >SYSCALL Puts ldy #0 lda #1 .1 >STYA ZPPtr1 SymID * >DEBUG >PUSHB.G CC.hSyms >PUSHW ZPPtr1 SymID >PUSHW pData >SYSCALL SListGetByID bcs .8 >STYA ZPPtr2 NextID >PUSHB.G CC.hSyms >PUSHW ZPPtr1 SymID >PUSHW ZPSymBufPtr >PUSHWI $ffff All >PUSHWZ from Start >SYSCALL SListGetData bcs .99 >LDA.G bTrace bpl .2 jsr CC.Link.Dump .2 ldy #SYM.SC lda (ZPSymBufPtr),y cmp #SYM.SC.TYPEDEF bcs .7 ldy #SYM.Addr+1 lda (ZPSymBufPtr),y dey ora (ZPSymBufPtr),y bne .7 jsr CC.Link.Lookup bcs .9 jsr CC.Link.Update bcs .99 .7 >LDYA ZPPtr2 jmp .1 .8 clc rts .9 >LDA.G bTrace bmi .2 jsr CC.Link.Dump .90 lda #E.FUNDEF sec .99 rts *-------------------------------------- * Input : pData = Symbol *-------------------------------------- CC.Link.Lookup >LDYA L.CC.SYSCALL jsr CC.Link.LookupYA ldx #1 bcc .99 >LDYA L.CC.FPUCALL jsr CC.Link.LookupYA ldx #2 bcc .99 >LDA.G LibCount * sec beq .99 lda #0 sta ArgIndex clc .1 adc #hLibOs tay lda (pData),y >SYSCALL GetMemPtr jsr CC.Link.LookupYA bcs .2 ldx ArgIndex inx inx inx rts .2 inc ArgIndex lda ArgIndex >CMP.G LibCount bcc .1 .99 rts *-------------------------------------- CC.Link.LookupYA >STYA ZPLookupPtr ldy #$ff .1 iny lda (pData),y bne .1 tya tax Symbol Len .2 lda (ZPLookupPtr) beq .9 Ending 0, not found.... txa Get Back Len cmp (ZPLookupPtr) Same Len ? bne .4 tay .3 lda (ZPLookupPtr),y dey cmp (pData),y bne .4 tya bne .3 lda (ZPLookupPtr) tay iny lda (ZPLookupPtr),y get fID clc rts .4 lda (ZPLookupPtr) inc jsr CC.ZPLookupPtrAddAp1 Skip LEN\Symbol\ID bra .2 .9 sec rts *-------------------------------------- * A=ID X=SYS|FPU|LIB *-------------------------------------- CC.Link.Update ldy #SYM.Addr sta (ZPSymBufPtr),y iny txa sta (ZPSymBufPtr),y >PUSHB.G CC.hSyms >PUSHW ZPPtr1 SymID >PUSHW ZPSymBufPtr >PUSHBI 0 ldy #SYM.DefSize lda (ZPSymBufPtr),y >PUSHA >SYSCALL SListSetData rts *-------------------------------------- CC.Link.Dump ldy #$ff .1 iny lda (pData),y bne .1 iny lda (pData),y sta ZPPtr3 iny lda (pData),y sta ZPPtr3+1 >PUSHW L.MSG.LINKING2 >PUSHW ZPPtr1 ID >PUSHW ZPPtr3 Scope >PUSHW pData Name >PUSHB (ZPSymBufPtr) SYM.T ldy #1 >PUSHB (ZPSymBufPtr),y SYM.Q iny >PUSHB (ZPSymBufPtr),y SYM.SC ldy #SYM.DefSize >PUSHB (ZPSymBufPtr),y ldy #SYM.SizeOf+1 >PUSHB (ZPSymBufPtr),y dey >PUSHB (ZPSymBufPtr),y ldy #SYM.Addr+1 >PUSHB (ZPSymBufPtr),y dey >PUSHB (ZPSymBufPtr),y >PUSHBI 14 >SYSCALL PrintF rts *-------------------------------------- CC.Link.CheckMain >PUSHB.G CC.hSyms >PUSHW L.CC.MAIN >PUSHWI 0 ScopeID >SYSCALL SListLookup bcs .9 >STYA ZPPtr1 SymID >PUSHB.G CC.hSyms >PUSHW ZPPtr1 SymID >PUSHW ZPSymBufPtr >PUSHWI 65535 all >PUSHWZ From Start >SYSCALL SListGetData bcs .99 ldy #SYM.Addr lda (ZPSymBufPtr),y iny ora (ZPSymBufPtr),y beq .9 lda (ZPSymBufPtr),y sta PCC.FH+PCC.FH.MAIN+1 dey lda (ZPSymBufPtr),y sta PCC.FH+PCC.FH.MAIN * clc rts .9 >LDYA L.MSG.NOMAIN >SYSCALL puts lda #E.CSYN sec .99 rts *-------------------------------------- MAN SAVE usr/src/bin/cc.s.link LOAD usr/src/bin/cc.s ASM