NEW AUTO 3,1 *-------------------------------------- CODE.Init stz ZPCCConst stz ZPCCConst+1 >LDYAI PCC.FH.CS >STYA ZPCCCode >LDYAI 20 char *ARGV[10] >STYA ZPCCData clc .9 rts *-------------------------------------- CODE.Quit >LDA.G CC.hOutFile beq .8 >SYSCALL FClose .8 clc rts *-------------------------------------- CODE.Debug ldx #PCC.DEBUG.L ldy #0 .1 lda PCC.DEBUG,y jsr CODE.EmitByte iny dex bne .1 rts *-------------------------------------- CODE.Enter ldx #PCC.ENTER.L ldy #0 .1 lda PCC.ENTER,y jsr CODE.EmitByte iny dex bne .1 rts *-------------------------------------- CODE.nAddLocal eor #$FF inc CODE.AddLocal pha lda #$A9 LDA #imm jsr CODE.EmitByte pla jsr CODE.EmitByte ldx #PCC.ADDLOCAL.L ldy #0 .1 lda PCC.ADDLOCAL,y jsr CODE.EmitByte iny dex bne .1 rts *-------------------------------------- CODE.GetLocal lda #$A9 LDA #imm jsr CODE.EmitByte tya eor #$FF inc jsr CODE.EmitByte ldx #PCC.GETLOCAL.L ldy #0 .1 lda PCC.GETLOCAL,y jsr CODE.EmitByte iny dex bne .1 rts *-------------------------------------- CODE.SetRetValue jsr CODE.LDXI ldx #PCC.SETRETVALUE.L ldy #0 .1 lda PCC.SETRETVALUE,y jsr CODE.EmitByte iny dex bne .1 rts *-------------------------------------- CODE.Leave ldx #PCC.LEAVE.L ldy #0 .1 lda PCC.LEAVE,y jsr CODE.EmitByte iny dex bne .1 rts *-------------------------------------- CODE.PushXFromYA ldx #PCC.PushXFromYA.L ldy #0 .1 lda PCC.PushXFromYA,y jsr CODE.EmitByte iny dex bne .1 rts *-------------------------------------- CODE.PopXToYA ldx #PCC.PopXToYA.L ldy #0 .1 lda PCC.PopXToYA,y jsr CODE.EmitByte iny dex bne .1 rts *-------------------------------------- CODE.SetXToYA ldx #PCC.SetXToYA.L ldy #0 .1 lda PCC.SetXToYA,y jsr CODE.EmitByte iny dex bne .1 rts *-------------------------------------- CODE.Deref ldx #PCC.Deref.L ldy #0 .1 lda PCC.Deref,y jsr CODE.EmitByte iny dex bne .1 rts *-------------------------------------- CODE.SETpBASEp1 ldx #PCC.SETpBASEp1.L ldy #0 .1 lda PCC.SETpBASEp1,y jsr CODE.EmitByte iny dex bne .1 rts *-------------------------------------- CODE.SETpBASEpA ldx #PCC.SETpBASEpA.L ldy #0 .1 lda PCC.SETpBASEpA,y jsr CODE.EmitByte iny dex bne .1 rts *-------------------------------------- CODE.PUSHpBASEp1 ldx #PCC.PUSHpBASEp1.L ldy #0 .1 lda PCC.PUSHpBASEp1,y jsr CODE.EmitByte iny dex bne .1 rts *-------------------------------------- CODE.PUSHpBASEpA ldx #PCC.PUSHpBASEpA.L ldy #0 .1 lda PCC.PUSHpBASEpA,y jsr CODE.EmitByte iny dex bne .1 rts *-------------------------------------- CODE.PushFromPtr pha lda #$A0 LDY #imm jsr CODE.EmitByte pla dec BPL loop jsr CODE.EmitByte ldx #PCC.PushFromPtr.L ldy #0 .1 lda PCC.PushFromPtr,y jsr CODE.EmitByte iny dex bne .1 rts *-------------------------------------- CODE.PushConstP lda #$A9 LDA #imm jsr CODE.EmitByte bcs .9 lda ZPCCConst jsr CODE.EmitByte bcs .9 lda #$A2 LDX #imm jsr CODE.EmitByte bcs .9 lda ZPCCConst+1 jsr CODE.EmitByte bcs .9 ldx #PCC.PushConstPAX.L ldy #0 .1 lda PCC.PushConstPAX,y jsr CODE.EmitByte bcs .9 iny dex bne .1 clc .9 rts *-------------------------------------- CODE.PUSHI pha lda #$A9 LDA #imm jsr CODE.EmitByte pla jsr CODE.EmitByte bra CODE.PUSHA *-------------------------------------- CODE.LDYAI pha lda #$A0 LDY #imm jsr CODE.EmitByte tya jsr CODE.EmitByte lda #$A9 LDA #imm jsr CODE.EmitByte pla jmp CODE.EmitByte *-------------------------------------- CODE.LDXI lda #$A2 LDX #imm jsr CODE.EmitByte txa jmp CODE.EmitByte *-------------------------------------- CODE.LDAI pha lda #$A9 LDA #imm jsr CODE.EmitByte pla jmp CODE.EmitByte *-------------------------------------- CODE.PUSHYA jsr CODE.PUSHA lda #$AA TYA jsr CODE.EmitByte *-------------------------------------- CODE.PUSHA lda #$C6 DEC zp jsr CODE.EmitByte lda #pStack jsr CODE.EmitByte lda #$92 STA (zp) jsr CODE.EmitByte lda #pStack jmp CODE.EmitByte *-------------------------------------- CODE.PULLYA jsr CODE.PULLA lda #$48 PHA jsr CODE.EmitByte jsr CODE.PULLA lda #$7A PLY bra CODE.EmitByte *-------------------------------------- CODE.PULLA lda #$B2 LDA (zp) jsr CODE.EmitByte lda #pStack jsr CODE.EmitByte *-------------------------------------- CODE.INCPSTACK lda #$E6 INC zp jsr CODE.EmitByte lda #pStack bra CODE.EmitByte *-------------------------------------- CODE.TOABSYX jsr CODE.EmitByte A=opcode : JMP, JSR ..... txa jsr CODE.EmitByte tya bra CODE.EmitByte *-------------------------------------- CODE.SYSCALL lda #$A2 LDX #imm jsr CODE.EmitByte txa jsr CODE.EmitByte lda #$20 JSR jsr CODE.EmitByte lda #A2osX.SYSCALL jsr CODE.EmitByte lda /A2osX.SYSCALL bra CODE.EmitByte *-------------------------------------- CODE.FPUCALL lda #$A2 LDX #imm jsr CODE.EmitByte txa jsr CODE.EmitByte lda #$20 JSR jsr CODE.EmitByte lda #A2osX.FPUCALL jsr CODE.EmitByte lda /A2osX.FPUCALL bra CODE.EmitByte *-------------------------------------- CODE.EmitByte clc if Pass 1... bit bPass2 bpl .1 phx phy tax >PUSHB.G CC.hOutFile txa >PUSHA >SYSCALL fputc ply plx .1 inc ZPCCCode bne .8 inc ZPCCCode+1 .8 rts CC/CS from fputc *-------------------------------------- CODE.EmitDATA clc bit bPass2 bpl .1 phx phy tax >PUSHB.G CC.hOutFile txa >PUSHA >SYSCALL fputc ply plx .1 inc ZPCCConst bne .8 inc ZPCCConst+1 .8 rts CC/CS from fputc *-------------------------------------- CODE.CSSelect clc bit bPass2 bpl .8 >PUSHB.G CC.hOutFile >PUSHWI 0 lda ZPCCCode+1 sec sbc #$20 >PUSHA lda ZPCCCode >PUSHA >PUSHBI SEEK.SET >SYSCALL fseek .8 rts *-------------------------------------- CODE.DSSelect clc bit bPass2 bpl .8 >PUSHB.G CC.hOutFile >PUSHWI 0 * >PUSHWI 0 * >PUSHBI SEEK.END lda ZPCCConst clc adc PCC.FH+PCC.FH.IDATA tay lda ZPCCConst+1 adc PCC.FH+PCC.FH.IDATA+1 sec sbc #$20 >PUSHYA >PUSHBI SEEK.SET >SYSCALL fseek .8 rts *-------------------------------------- MAN SAVE usr/src/bin/cc.s.code LOAD usr/src/bin/cc.s ASM