A2osX/BIN/CC.S.CODE.txt

431 lines
7.3 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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