mirror of
https://github.com/A2osX/A2osX.git
synced 2024-05-31 16:41:30 +00:00
Kernel 0.94
This commit is contained in:
parent
111c24d7bc
commit
4badc58f2d
Binary file not shown.
Binary file not shown.
|
@ -1,6 +1,5 @@
|
||||||
NEW
|
NEW
|
||||||
PREFIX
|
AUTO 3,1
|
||||||
AUTO 4,1
|
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
T.ADDR.MODES .EQ *
|
T.ADDR.MODES .EQ *
|
||||||
.DA #2,$$"#a"
|
.DA #2,$$"#a"
|
||||||
|
@ -21,6 +20,6 @@ T.REGISTERS .EQ *
|
||||||
.HS 00
|
.HS 00
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/BIN/ASM.T.6502.A
|
SAVE USR/SRC/BIN/ASM.6502.A
|
||||||
LOAD USR/SRC/BIN/ASM.T.6502.S
|
LOAD USR/SRC/BIN/ASM.6502.S
|
||||||
ASM
|
ASM
|
|
@ -1,6 +1,5 @@
|
||||||
NEW
|
NEW
|
||||||
PREFIX
|
AUTO 3,1
|
||||||
AUTO 4,1
|
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
T.OPCODES .EQ *
|
T.OPCODES .EQ *
|
||||||
ADC .DA ADC.E+1-*
|
ADC .DA ADC.E+1-*
|
||||||
|
@ -325,6 +324,6 @@ TYA.E .HS 00
|
||||||
.HS 0000
|
.HS 0000
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/BIN/ASM.T.6502.O
|
SAVE USR/SRC/BIN/ASM.6502.O
|
||||||
LOAD USR/SRC/BIN/ASM.T.6502.S
|
LOAD USR/SRC/BIN/ASM.6502.S
|
||||||
ASM
|
ASM
|
|
@ -1,17 +1,16 @@
|
||||||
NEW
|
NEW
|
||||||
PREFIX
|
AUTO 3,1
|
||||||
AUTO 4,1
|
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
.OR $0
|
.OR $0
|
||||||
.TF BIN/ASM.T.Z80
|
.TF bin/asm.6502
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
.DA T.ADDR.MODES
|
.DA T.ADDR.MODES
|
||||||
.DA T.REGISTERS
|
.DA T.REGISTERS
|
||||||
.DA T.OPCODES
|
.DA T.OPCODES
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
.INB USR/SRC/BIN/ASM.T.Z80.O
|
.INB USR/SRC/BIN/ASM.6502.O
|
||||||
.INB USR/SRC/BIN/ASM.T.Z80.A
|
.INB USR/SRC/BIN/ASM.6502.A
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/BIN/ASM.T.Z80.S
|
SAVE USR/SRC/BIN/ASM.6502.S
|
||||||
ASM
|
ASM
|
|
@ -1,6 +1,5 @@
|
||||||
NEW
|
NEW
|
||||||
PREFIX
|
AUTO 3,1
|
||||||
AUTO 4,1
|
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
T.ADDR.MODES .EQ *
|
T.ADDR.MODES .EQ *
|
||||||
.DA #2,$$"#a"
|
.DA #2,$$"#a"
|
||||||
|
@ -32,6 +31,6 @@ T.REGISTERS .EQ *
|
||||||
.HS 00
|
.HS 00
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/BIN/ASM.T.65816.A
|
SAVE USR/SRC/BIN/ASM.65816.A
|
||||||
LOAD USR/SRC/BIN/ASM.T.65816.S
|
LOAD USR/SRC/BIN/ASM.65816.S
|
||||||
ASM
|
ASM
|
|
@ -1,6 +1,5 @@
|
||||||
NEW
|
NEW
|
||||||
PREFIX
|
AUTO 3,1
|
||||||
AUTO 4,1
|
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
T.OPCODES .EQ *
|
T.OPCODES .EQ *
|
||||||
ADC .DA ADC.E+1-*
|
ADC .DA ADC.E+1-*
|
||||||
|
@ -532,6 +531,6 @@ XCE.E .HS 00
|
||||||
.HS 0000
|
.HS 0000
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/BIN/ASM.T.65816.O
|
SAVE USR/SRC/BIN/ASM.65816.O
|
||||||
LOAD USR/SRC/BIN/ASM.T.65816.S
|
LOAD USR/SRC/BIN/ASM.65816.S
|
||||||
ASM
|
ASM
|
|
@ -1,17 +1,16 @@
|
||||||
NEW
|
NEW
|
||||||
PREFIX
|
AUTO 3,1
|
||||||
AUTO 4,1
|
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
.OR $0
|
.OR $0
|
||||||
.TF BIN/ASM.T.SW16
|
.TF bin/asm.65816
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
.DA T.ADDR.MODES
|
.DA T.ADDR.MODES
|
||||||
.DA T.REGISTERS
|
.DA T.REGISTERS
|
||||||
.DA T.OPCODES
|
.DA T.OPCODES
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
.INB USR/SRC/BIN/ASM.T.SW16.O
|
.INB USR/SRC/BIN/ASM.65816.O
|
||||||
.INB USR/SRC/BIN/ASM.T.SW16.A
|
.INB USR/SRC/BIN/ASM.65816.A
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/BIN/ASM.T.SW16.S
|
SAVE USR/SRC/BIN/ASM.65816.S
|
||||||
ASM
|
ASM
|
|
@ -1,6 +1,5 @@
|
||||||
NEW
|
NEW
|
||||||
PREFIX
|
AUTO 3,1
|
||||||
AUTO 4,1
|
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
T.ADDR.MODES .EQ *
|
T.ADDR.MODES .EQ *
|
||||||
.DA #2,$$"#a"
|
.DA #2,$$"#a"
|
||||||
|
@ -23,6 +22,6 @@ T.REGISTERS .EQ *
|
||||||
.HS 00
|
.HS 00
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/BIN/ASM.T.65C02.A
|
SAVE USR/SRC/BIN/ASM.65C02.A
|
||||||
LOAD USR/SRC/BIN/ASM.T.65C02.S
|
LOAD USR/SRC/BIN/ASM.65C02.S
|
||||||
ASM
|
ASM
|
|
@ -1,6 +1,5 @@
|
||||||
NEW
|
NEW
|
||||||
PREFIX
|
AUTO 3,1
|
||||||
AUTO 4,1
|
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
T.OPCODES .EQ *
|
T.OPCODES .EQ *
|
||||||
ADC .DA ADC.E+1-*
|
ADC .DA ADC.E+1-*
|
||||||
|
@ -384,6 +383,6 @@ WAI.E .HS 00
|
||||||
.HS 0000
|
.HS 0000
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/BIN/ASM.T.65C02.O
|
SAVE USR/SRC/BIN/ASM.65C02.O
|
||||||
LOAD USR/SRC/BIN/ASM.T.65C02.S
|
LOAD USR/SRC/BIN/ASM.65C02.S
|
||||||
ASM
|
ASM
|
|
@ -1,17 +1,16 @@
|
||||||
NEW
|
NEW
|
||||||
PREFIX
|
AUTO 3,1
|
||||||
AUTO 4,1
|
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
.OR $0
|
.OR $0
|
||||||
.TF BIN/ASM.T.6502
|
.TF bin/asm.65C02
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
.DA T.ADDR.MODES
|
.DA T.ADDR.MODES
|
||||||
.DA T.REGISTERS
|
.DA T.REGISTERS
|
||||||
.DA T.OPCODES
|
.DA T.OPCODES
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
.INB USR/SRC/BIN/ASM.T.6502.O
|
.INB USR/SRC/BIN/ASM.65C02.O
|
||||||
.INB USR/SRC/BIN/ASM.T.6502.A
|
.INB USR/SRC/BIN/ASM.65C02.A
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/BIN/ASM.T.6502.S
|
SAVE USR/SRC/BIN/ASM.65C02.S
|
||||||
ASM
|
ASM
|
|
@ -1,6 +1,5 @@
|
||||||
NEW
|
NEW
|
||||||
PREFIX
|
AUTO 3,1
|
||||||
AUTO 4,1
|
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
T.ADDR.MODES .EQ *
|
T.ADDR.MODES .EQ *
|
||||||
.DA #2,$$"#a"
|
.DA #2,$$"#a"
|
||||||
|
@ -24,6 +23,6 @@ T.REGISTERS .EQ *
|
||||||
.HS 00
|
.HS 00
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/BIN/ASM.T.65R02.A
|
SAVE USR/SRC/BIN/ASM.65R02.A
|
||||||
LOAD USR/SRC/BIN/ASM.T.65R02.S
|
LOAD USR/SRC/BIN/ASM.65R02.S
|
||||||
ASM
|
ASM
|
|
@ -1,6 +1,5 @@
|
||||||
NEW
|
NEW
|
||||||
PREFIX
|
AUTO 3,1
|
||||||
AUTO 4,1
|
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
T.OPCODES .EQ *
|
T.OPCODES .EQ *
|
||||||
ADC .DA ADC.E+1-*
|
ADC .DA ADC.E+1-*
|
||||||
|
@ -504,6 +503,6 @@ TYA.E .HS 00
|
||||||
.HS 0000
|
.HS 0000
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/BIN/ASM.T.65R02.O
|
SAVE USR/SRC/BIN/ASM.65R02.O
|
||||||
LOAD USR/SRC/BIN/ASM.T.65R02.S
|
LOAD USR/SRC/BIN/ASM.65R02.S
|
||||||
ASM
|
ASM
|
|
@ -1,17 +1,16 @@
|
||||||
NEW
|
NEW
|
||||||
PREFIX
|
AUTO 3,1
|
||||||
AUTO 4,1
|
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
.OR $0
|
.OR $0
|
||||||
.TF BIN/ASM.T.65C02
|
.TF bin/asm.65R02
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
.DA T.ADDR.MODES
|
.DA T.ADDR.MODES
|
||||||
.DA T.REGISTERS
|
.DA T.REGISTERS
|
||||||
.DA T.OPCODES
|
.DA T.OPCODES
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
.INB USR/SRC/BIN/ASM.T.65C02.O
|
.INB USR/SRC/BIN/ASM.65R02.O
|
||||||
.INB USR/SRC/BIN/ASM.T.65C02.A
|
.INB USR/SRC/BIN/ASM.65R02.A
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/BIN/ASM.T.65C02.S
|
SAVE USR/SRC/BIN/ASM.65R02.S
|
||||||
ASM
|
ASM
|
|
@ -253,8 +253,8 @@ DIR.EQ clc
|
||||||
bcs .9
|
bcs .9
|
||||||
jsr SYM.Acc2Global
|
jsr SYM.Acc2Global
|
||||||
jmp SYM.StoreGlobal
|
jmp SYM.StoreGlobal
|
||||||
.2
|
|
||||||
lda (ZPSymbolBuf) PASS#2
|
.2 lda (ZPSymbolBuf) PASS#2
|
||||||
and #SYMG.F.FWREF
|
and #SYMG.F.FWREF
|
||||||
beq .3
|
beq .3
|
||||||
|
|
||||||
|
@ -345,8 +345,10 @@ DIR.HS jsr SRC.GetNextCharNB
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
DIR.IN jsr SRC.GetNextCharNB
|
DIR.IN jsr SRC.GetNextCharNB
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>LDYA ZPLinePtr
|
>LDYA ZPLinePtr
|
||||||
jmp FIO.OpenFile
|
jmp FIO.OpenFile
|
||||||
|
|
||||||
.9 lda #E.SYNTAX.ERROR
|
.9 lda #E.SYNTAX.ERROR
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
@ -410,15 +412,19 @@ DIR.MA >LDA.G ASM.MA.ON
|
||||||
|
|
||||||
jsr SRC.GetNextCharNB
|
jsr SRC.GetNextCharNB
|
||||||
beq DIR.OP.SYNERR
|
beq DIR.OP.SYNERR
|
||||||
|
|
||||||
|
>PUSHB.G MAC.hList
|
||||||
>PUSHW ZPLinePtr
|
>PUSHW ZPLinePtr
|
||||||
>LDA.G MAC.hList
|
|
||||||
>SYSCALL SListNewKey
|
>SYSCALL SListNewKey
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
>STYA.G MAC.ID
|
>STYA.G MAC.ID
|
||||||
|
|
||||||
.8 lda #$ff
|
.8 lda #$ff
|
||||||
>STA.G ASM.MA.ON
|
>STA.G ASM.MA.ON
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 lda #E.MACRO.INV.DEF
|
.9 lda #E.MACRO.INV.DEF
|
||||||
sec
|
sec
|
||||||
.99 rts
|
.99 rts
|
||||||
|
@ -426,7 +432,8 @@ DIR.MA >LDA.G ASM.MA.ON
|
||||||
DIR.OP jsr SRC.GetNextCharNB
|
DIR.OP jsr SRC.GetNextCharNB
|
||||||
bcs DIR.OP.SYNERR
|
bcs DIR.OP.SYNERR
|
||||||
>LDYA ZPLinePtr
|
>LDYA ZPLinePtr
|
||||||
jmp FIO.LOAD.ASM.T
|
|
||||||
|
jmp FIO.LOAD.CPU
|
||||||
DIR.OP.SYNERR lda #E.SYNTAX.ERROR
|
DIR.OP.SYNERR lda #E.SYNTAX.ERROR
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
|
@ -18,6 +18,7 @@ EXP.Eval.Missing
|
||||||
lda #E.MISSING.EXP
|
lda #E.MISSING.EXP
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
EXP.Eval >STZ.G EXP.Modifier
|
EXP.Eval >STZ.G EXP.Modifier
|
||||||
>STZ.G EXP.Prefix
|
>STZ.G EXP.Prefix
|
||||||
>STZ.G EXP.Operator
|
>STZ.G EXP.Operator
|
||||||
|
@ -162,6 +163,7 @@ EXP.EvalOperator
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
EXP.GetLocal jsr SRC.GetNextChar
|
EXP.GetLocal jsr SRC.GetNextChar
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
jsr SRC.GetDecimal
|
jsr SRC.GetDecimal
|
||||||
bcs EXP.EvalExitSYN
|
bcs EXP.EvalExitSYN
|
||||||
lda SRC.ACC+1
|
lda SRC.ACC+1
|
||||||
|
@ -173,6 +175,7 @@ EXP.GetLocal jsr SRC.GetNextChar
|
||||||
|
|
||||||
jsr SYM.GetLocalX
|
jsr SYM.GetLocalX
|
||||||
bcc .8
|
bcc .8
|
||||||
|
|
||||||
>LDA.G ASM.PASS pass#2?
|
>LDA.G ASM.PASS pass#2?
|
||||||
bne EXP.EvalExitUND
|
bne EXP.EvalExitUND
|
||||||
lda #SYMG.F.FWREF Mark ACC as pending
|
lda #SYMG.F.FWREF Mark ACC as pending
|
||||||
|
@ -329,7 +332,7 @@ EXP.OP.SUB ldx #0 ARG-ACC->ACC
|
||||||
.8 clc
|
.8 clc
|
||||||
rts
|
rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
EXP.OP.MUL
|
EXP.OP.MUL
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
EXP.OP.DIV
|
EXP.OP.DIV
|
||||||
clc
|
clc
|
||||||
|
|
|
@ -2,7 +2,7 @@ NEW
|
||||||
AUTO 3,1
|
AUTO 3,1
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
FIO.Init >LDYA L.ASM.6502
|
FIO.Init >LDYA L.ASM.6502
|
||||||
FIO.LOAD.ASM.T >STYA ZPPtr2
|
FIO.LOAD.CPU >STYA ZPPtr2
|
||||||
|
|
||||||
ldy #S.PS.hARGV
|
ldy #S.PS.hARGV
|
||||||
lda (pPS),y
|
lda (pPS),y
|
||||||
|
@ -11,23 +11,15 @@ FIO.LOAD.ASM.T >STYA ZPPtr2
|
||||||
>STYA ZPPtr1
|
>STYA ZPPtr1
|
||||||
ldy #$ff
|
ldy #$ff
|
||||||
ldx #$ff
|
ldx #$ff
|
||||||
|
|
||||||
.1 iny
|
.1 iny
|
||||||
inx
|
inx
|
||||||
lda (ZPPtr1),y
|
lda (ZPPtr1),y
|
||||||
sta ASM.T.FILENAME,x
|
sta ASM.CPU.FILE,x
|
||||||
bne .1
|
bne .1
|
||||||
lda #'.'
|
|
||||||
sta ASM.T.FILENAME,x
|
|
||||||
|
|
||||||
inx
|
|
||||||
|
|
||||||
lda #'T'
|
|
||||||
sta ASM.T.FILENAME,x
|
|
||||||
|
|
||||||
inx
|
|
||||||
|
|
||||||
lda #'.'
|
lda #'.'
|
||||||
sta ASM.T.FILENAME,x
|
sta ASM.CPU.FILE,x
|
||||||
ldy #$ff
|
ldy #$ff
|
||||||
|
|
||||||
.2 iny
|
.2 iny
|
||||||
|
@ -35,29 +27,34 @@ FIO.LOAD.ASM.T >STYA ZPPtr2
|
||||||
lda (ZPPtr2),y
|
lda (ZPPtr2),y
|
||||||
jsr SRC.IsLetterOrDigit
|
jsr SRC.IsLetterOrDigit
|
||||||
bcs .3
|
bcs .3
|
||||||
sta ASM.T.FILENAME,x
|
|
||||||
|
sta ASM.CPU.FILE,x
|
||||||
bra .2
|
bra .2
|
||||||
.3 stz ASM.T.FILENAME,x
|
|
||||||
ldy #ASM.T.hMem
|
.3 stz ASM.CPU.FILE,x
|
||||||
lda (pData),y
|
|
||||||
|
>LDA.G ASM.T.hMem
|
||||||
beq .4
|
beq .4
|
||||||
|
|
||||||
>SYSCALL FreeMem
|
>SYSCALL FreeMem
|
||||||
ldy #ASM.T.hMem
|
|
||||||
lda #0
|
>STZ.G ASM.T.hMem
|
||||||
sta (pData),y
|
|
||||||
.4 >PUSHW L.ASM.T.FILENAME
|
.4 >PUSHW L.MSG.T.FILE
|
||||||
|
>PUSHW L.ASM.CPU.FILE
|
||||||
>PUSHBI 2
|
>PUSHBI 2
|
||||||
>LDYA L.MSG.T.FILE
|
|
||||||
jsr OUT.Print
|
jsr OUT.Print
|
||||||
>PUSHWZ Aux type
|
|
||||||
>PUSHBI 6 S.FI.T.BIN
|
>PUSHW L.ASM.CPU.FILE
|
||||||
>PUSHBI O.RDONLY
|
>PUSHBI O.RDONLY
|
||||||
>LDYA L.ASM.T.FILENAME
|
>PUSHBI S.FI.T.BIN
|
||||||
|
>PUSHWZ Aux type
|
||||||
>SYSCALL LoadFile
|
>SYSCALL LoadFile
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
txa
|
txa
|
||||||
ldy #ASM.T.hMem
|
>STA.G ASM.T.hMem
|
||||||
sta (pData),y
|
|
||||||
>SYSCALL GetMemPtr
|
>SYSCALL GetMemPtr
|
||||||
>STYA ZPPtr1
|
>STYA ZPPtr1
|
||||||
|
|
||||||
|
@ -91,48 +88,52 @@ FIO.LOAD.ASM.T >STYA ZPPtr2
|
||||||
.9 rts
|
.9 rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
FIO.OpenFile >STYA ZPPtr1
|
FIO.OpenFile >STYA ZPPtr1
|
||||||
|
>PUSHW L.MSG.SRC.FILE
|
||||||
>PUSHW ZPPtr1
|
>PUSHW ZPPtr1
|
||||||
>PUSHBI 2
|
>PUSHBI 2
|
||||||
>LDYA L.MSG.SRC.FILE
|
|
||||||
jsr OUT.Print
|
jsr OUT.Print
|
||||||
ldy #SRC.COUNT
|
|
||||||
lda (pData),y
|
>LDA.G SRC.COUNT
|
||||||
cmp #IN.MAXDEPTH
|
cmp #IN.MAXDEPTH
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
lda #E.SRC.TOO.MANY.IN
|
lda #E.SRC.TOO.MANY.IN
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
.1 >PUSHW L.FIO.Stat
|
|
||||||
>LDYA ZPPtr1
|
.1 >PUSHW ZPPtr1
|
||||||
|
>PUSHW L.FIO.Stat
|
||||||
>SYSCALL Stat
|
>SYSCALL Stat
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
lda FIO.Stat+S.STAT.P.TYPE
|
lda FIO.Stat+S.STAT.P.TYPE
|
||||||
cmp #$04 TXT ?
|
cmp #S.FI.T.TXT
|
||||||
bne .2
|
bne .2
|
||||||
|
|
||||||
>PUSHWZ
|
ldx #O.RDONLY+O.TEXT
|
||||||
>PUSHBI 4
|
|
||||||
>PUSHBI O.RDONLY+O.TEXT
|
|
||||||
bra .3
|
bra .3
|
||||||
|
|
||||||
.2 cmp #$FA S-C/BAS?
|
.2 cmp #$FA S-C/BAS?
|
||||||
bne .98
|
bne .98
|
||||||
|
|
||||||
|
ldx #O.RDONLY
|
||||||
|
|
||||||
|
.3 >PUSHW ZPPtr1
|
||||||
|
txa
|
||||||
|
>PUSHA
|
||||||
|
>PUSHB FIO.Stat+S.STAT.P.TYPE
|
||||||
>PUSHWZ
|
>PUSHWZ
|
||||||
>PUSHBI $FA
|
|
||||||
>PUSHBI O.RDONLY
|
|
||||||
.3 >LDYA ZPPtr1
|
|
||||||
>SYSCALL FOpen
|
>SYSCALL FOpen
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
pha
|
pha
|
||||||
ldy #SRC.COUNT
|
>LDA.G SRC.COUNT
|
||||||
lda (pData),y
|
|
||||||
clc
|
clc
|
||||||
adc #SRC.hFILES
|
adc #SRC.hFILES
|
||||||
tay
|
tay
|
||||||
pla
|
pla
|
||||||
sta (pData),y
|
sta (pData),y
|
||||||
ldy #SRC.COUNT
|
>LDA.G SRC.COUNT
|
||||||
lda (pData),y
|
|
||||||
clc
|
clc
|
||||||
adc #SRC.hFILETYPES
|
adc #SRC.hFILETYPES
|
||||||
tay
|
tay
|
||||||
|
@ -140,22 +141,21 @@ FIO.OpenFile >STYA ZPPtr1
|
||||||
lda FIO.Stat+S.STAT.P.TYPE
|
lda FIO.Stat+S.STAT.P.TYPE
|
||||||
sta (pData),y
|
sta (pData),y
|
||||||
|
|
||||||
ldy #SRC.COUNT
|
>INC.G SRC.COUNT
|
||||||
lda (pData),y
|
|
||||||
inc
|
|
||||||
sta (pData),y
|
|
||||||
lda #0
|
lda #0
|
||||||
>STA.G SRC.LINENUM
|
>STA.G SRC.LINENUM
|
||||||
iny
|
iny
|
||||||
sta (pData),y
|
sta (pData),y
|
||||||
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.98 lda #E.SRC.INV.TYPE
|
.98 lda #E.SRC.INV.TYPE
|
||||||
sec
|
sec
|
||||||
.99 rts
|
.99 rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
FIO.ReadLine ldy #SRC.COUNT
|
FIO.ReadLine >LDA.G SRC.COUNT
|
||||||
lda (pData),y
|
|
||||||
clc
|
clc
|
||||||
adc #SRC.hFILETYPES-1
|
adc #SRC.hFILETYPES-1
|
||||||
tay
|
tay
|
||||||
|
@ -258,8 +258,7 @@ FIO.ReadLine ldy #SRC.COUNT
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
FIO.ReadFromFile
|
FIO.ReadFromFile
|
||||||
ldy #SRC.COUNT
|
>LDA.G SRC.COUNT
|
||||||
lda (pData),y
|
|
||||||
clc
|
clc
|
||||||
adc #SRC.hFILES-1
|
adc #SRC.hFILES-1
|
||||||
tay
|
tay
|
||||||
|
@ -267,24 +266,24 @@ FIO.ReadFromFile
|
||||||
|
|
||||||
>SYSCALL FRead
|
>SYSCALL FRead
|
||||||
bcs .9
|
bcs .9
|
||||||
tax $100 byte transfered ?
|
tax $100 byte transfered ?
|
||||||
beq .9
|
beq .9
|
||||||
lda #E.LINE.TOO.LONG
|
lda #E.LINE.TOO.LONG
|
||||||
sec
|
sec
|
||||||
.9 rts
|
.9 rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
FIO.FileClose ldy #SRC.COUNT
|
FIO.FileClose >LDA.G SRC.COUNT
|
||||||
lda (pData),y
|
|
||||||
beq .8
|
beq .8
|
||||||
clc
|
|
||||||
|
dec
|
||||||
|
sta (pData),y
|
||||||
|
|
||||||
|
sec
|
||||||
adc #SRC.hFILES-1
|
adc #SRC.hFILES-1
|
||||||
tay
|
tay
|
||||||
lda (pData),y
|
lda (pData),y
|
||||||
>SYSCALL fclose
|
>SYSCALL fclose
|
||||||
ldy #SRC.COUNT
|
|
||||||
lda (pData),y
|
|
||||||
dec
|
|
||||||
sta (pData),y
|
|
||||||
.8 clc
|
.8 clc
|
||||||
rts
|
rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
|
|
|
@ -5,16 +5,26 @@ MAC.Init >SYSCALL SListNew
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>STA.G MAC.hList
|
>STA.G MAC.hList
|
||||||
|
|
||||||
>LDYAI 256
|
>LDYAI 256
|
||||||
>SYSCALL getmem
|
>SYSCALL getmem
|
||||||
bcs .9
|
bcs .9
|
||||||
>STYA ZPMacroBuf
|
|
||||||
txa
|
txa
|
||||||
>STA.G MAC.hBuf
|
>STA.G MAC.hBuf
|
||||||
|
|
||||||
>LDYAI 256
|
>LDYAI 256
|
||||||
>SYSCALL getmem
|
>SYSCALL getmem
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
|
>STYA ZPMacroArgBuf
|
||||||
|
txa
|
||||||
|
>STA.G MAC.hArgBuf
|
||||||
|
|
||||||
|
>LDYAI 256
|
||||||
|
>SYSCALL getmem
|
||||||
|
bcs .9
|
||||||
|
|
||||||
>STYA ZPMacroStk
|
>STYA ZPMacroStk
|
||||||
txa
|
txa
|
||||||
>STA.G MAC.hStk
|
>STA.G MAC.hStk
|
||||||
|
@ -28,20 +38,131 @@ MAC.Quit >LDA.G MAC.hStk
|
||||||
beq .1
|
beq .1
|
||||||
|
|
||||||
>SYSCALL FreeMem
|
>SYSCALL FreeMem
|
||||||
|
|
||||||
.1 >LDA.G MAC.hBuf
|
.1 >LDA.G MAC.hBuf
|
||||||
|
beq .2
|
||||||
|
|
||||||
|
>SYSCALL FreeMem
|
||||||
|
|
||||||
|
.2 >LDA.G MAC.hArgBuf
|
||||||
beq .3
|
beq .3
|
||||||
|
|
||||||
>SYSCALL FreeMem
|
>SYSCALL FreeMem
|
||||||
|
|
||||||
.3 >LDA.G MAC.hList
|
.3 >LDA.G MAC.hList
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
|
>PUSHA
|
||||||
>SYSCALL SListFree
|
>SYSCALL SListFree
|
||||||
|
|
||||||
.8 clc
|
.8 clc
|
||||||
rts
|
rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
|
MAC.Learn >LDA.G MAC.hBuf
|
||||||
|
>SYSCALL GetMemPtr
|
||||||
|
>STYA ZPMacroBuf
|
||||||
|
|
||||||
|
>STZ.G MAC.BufPtr
|
||||||
|
sta (ZPMacroBuf)
|
||||||
|
lda (ZPLinePtr)
|
||||||
|
cmp #C.SPACE No label, scan to DIR/OP if any
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
jsr SRC.GetNextCharNB
|
||||||
|
bcs .8
|
||||||
|
|
||||||
|
lda #C.SPACE Store ONE blank
|
||||||
|
jsr MAC.AddChar
|
||||||
|
bcs .90
|
||||||
|
|
||||||
|
lda (ZPLinePtr) get back non blank char
|
||||||
|
bra .2
|
||||||
|
|
||||||
|
.1 jsr MAC.AddChar
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
jsr SRC.GetNextChar
|
||||||
|
bcs .80
|
||||||
|
|
||||||
|
cmp #C.SPACE
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
jsr MAC.AddChar
|
||||||
|
.90 bcs .99
|
||||||
|
|
||||||
|
jsr SRC.GetNextCharNB
|
||||||
|
bcs .80
|
||||||
|
|
||||||
|
.2 cmp #'.' Directive ?
|
||||||
|
bne .4
|
||||||
|
|
||||||
|
ldy #1
|
||||||
|
lda (ZPLinePtr),y
|
||||||
|
beq .3
|
||||||
|
|
||||||
|
cmp #'E'
|
||||||
|
beq .21
|
||||||
|
|
||||||
|
cmp #'e'
|
||||||
|
bne .3
|
||||||
|
|
||||||
|
.21 iny
|
||||||
|
lda (ZPLinePtr),y
|
||||||
|
beq .3
|
||||||
|
|
||||||
|
cmp #'M'
|
||||||
|
beq .22
|
||||||
|
|
||||||
|
cmp #'m'
|
||||||
|
bne .3
|
||||||
|
|
||||||
|
.22 >STZ.G ASM.MA.ON
|
||||||
|
.8 clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
.80 lda #C.CR
|
||||||
|
jmp MAC.AddChar
|
||||||
|
|
||||||
|
.3 lda (ZPLinePtr)
|
||||||
|
|
||||||
|
.4 jsr MAC.AddChar
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
jsr SRC.GetNextChar
|
||||||
|
bcs .80
|
||||||
|
|
||||||
|
cmp #C.SPACE
|
||||||
|
bne .4
|
||||||
|
|
||||||
|
jsr SRC.GetNextChar
|
||||||
|
bcs .8
|
||||||
|
|
||||||
|
cmp #C.SPACE
|
||||||
|
beq .80 Comments...
|
||||||
|
|
||||||
|
pha
|
||||||
|
lda #C.SPACE
|
||||||
|
jsr MAC.AddChar
|
||||||
|
pla
|
||||||
|
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
.5 jsr MAC.AddChar Store ARG....
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
jsr SRC.GetNextChar
|
||||||
|
bcs .80
|
||||||
|
|
||||||
|
cmp #C.SPACE
|
||||||
|
bne .5
|
||||||
|
bra .80 End of Line
|
||||||
|
|
||||||
|
.99 rts
|
||||||
|
*---------------------------------------
|
||||||
MAC.AddChar tax
|
MAC.AddChar tax
|
||||||
>LDA.G ASM.PASS If Pass#2, ignore
|
>LDA.G ASM.PASS If Pass#2, ignore
|
||||||
bne .8
|
bne .8
|
||||||
|
|
||||||
>LDA.G MAC.BufPtr
|
>LDA.G MAC.BufPtr
|
||||||
tay
|
tay
|
||||||
txa
|
txa
|
||||||
|
@ -52,93 +173,28 @@ MAC.AddChar tax
|
||||||
|
|
||||||
cmp #C.CR
|
cmp #C.CR
|
||||||
bne .8
|
bne .8
|
||||||
.1 >LDA.G MAC.BufPtr
|
|
||||||
|
.1 >PUSHB.G MAC.hList
|
||||||
|
>PUSHW.G MAC.ID
|
||||||
|
>PUSHW ZPMacroBuf
|
||||||
|
>LDA.G MAC.BufPtr
|
||||||
tay
|
tay
|
||||||
lda #0
|
lda #0
|
||||||
>PUSHYA
|
>PUSHYA
|
||||||
>PUSHW ZPMacroBuf
|
|
||||||
>PUSHW.G MAC.ID
|
|
||||||
>LDA.G MAC.hList
|
|
||||||
>SYSCALL SListAddData
|
>SYSCALL SListAddData
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.8 clc
|
.8 clc
|
||||||
MAC.AddChar.RTS rts
|
|
||||||
*---------------------------------------
|
|
||||||
MAC.ReadLine >LDA.G MAC.StkPtr
|
|
||||||
|
|
||||||
tay
|
|
||||||
dey
|
|
||||||
lda (ZPMacroStk),y
|
|
||||||
sta ZPPtr1
|
|
||||||
dey
|
|
||||||
lda (ZPMacroStk),y
|
|
||||||
sta ZPPtr1+1 pop mac ID
|
|
||||||
dey
|
|
||||||
lda (ZPMacroStk),y
|
|
||||||
sta ZPPtr2
|
|
||||||
dey
|
|
||||||
lda (ZPMacroStk),y
|
|
||||||
sta ZPPtr2+1 pop offset
|
|
||||||
dey
|
|
||||||
lda (ZPMacroStk),y
|
|
||||||
sta ZPMacroBuf
|
|
||||||
dey
|
|
||||||
lda (ZPMacroStk),y
|
|
||||||
sta ZPMacroBuf+1 pop args
|
|
||||||
|
|
||||||
tya
|
|
||||||
>STA.G MAC.StkPtr
|
|
||||||
>PUSHW ZPPtr2 offset
|
|
||||||
>PUSHWZ len = 0 (string mode)
|
|
||||||
>PUSHW ZPLineBuf
|
|
||||||
>PUSHW ZPPtr1 Mac ID
|
|
||||||
>LDA.G MAC.hList
|
|
||||||
>SYSCALL SListGetData
|
|
||||||
bcs MAC.AddChar.RTS
|
|
||||||
|
|
||||||
pha
|
|
||||||
tya
|
|
||||||
* clc
|
|
||||||
adc ZPPtr2
|
|
||||||
sta ZPPtr2
|
|
||||||
pla
|
|
||||||
adc ZPPtr2+1
|
|
||||||
sta ZPPtr2+1
|
|
||||||
>LDYA ZPMacroBuf
|
|
||||||
>SYSCALL puts
|
|
||||||
>LDA.G MAC.StkPtr
|
|
||||||
tay
|
|
||||||
lda ZPLinePtr+1 push args
|
|
||||||
sta (ZPMacroStk),y
|
|
||||||
iny
|
|
||||||
lda ZPLinePtr
|
|
||||||
sta (ZPMacroStk),y
|
|
||||||
iny
|
|
||||||
*---------------------------------------
|
|
||||||
MAC.Push lda ZPPtr2+1 push offset
|
|
||||||
sta (ZPMacroStk),y
|
|
||||||
iny
|
|
||||||
lda ZPPtr2
|
|
||||||
sta (ZPMacroStk),y
|
|
||||||
iny
|
|
||||||
lda ZPPtr1+1 push MAC.ID
|
|
||||||
sta (ZPMacroStk),y
|
|
||||||
iny
|
|
||||||
lda ZPPtr1
|
|
||||||
sta (ZPMacroStk),y
|
|
||||||
iny
|
|
||||||
tya
|
|
||||||
>STA.G MAC.StkPtr
|
|
||||||
clc
|
|
||||||
rts
|
rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
MAC.Exec jsr SRC.GetNextChar skip '>'
|
MAC.Exec jsr SRC.GetNextChar skip '>'
|
||||||
bcs .90
|
bcs .90
|
||||||
|
|
||||||
|
>PUSHB.G MAC.hList
|
||||||
>PUSHW ZPLinePtr
|
>PUSHW ZPLinePtr
|
||||||
>LDA.G MAC.hList
|
|
||||||
>SYSCALL SListLookup
|
>SYSCALL SListLookup
|
||||||
bcs .90
|
bcs .90
|
||||||
|
|
||||||
>STYA ZPPtr1 MAC.ID
|
>STYA ZPPtr1 MAC.ID
|
||||||
txa
|
txa
|
||||||
* clc
|
* clc
|
||||||
|
@ -146,42 +202,271 @@ MAC.Exec jsr SRC.GetNextChar skip '>'
|
||||||
sta ZPLinePtr
|
sta ZPLinePtr
|
||||||
bcc .1
|
bcc .1
|
||||||
inc ZPLinePtr+1
|
inc ZPLinePtr+1
|
||||||
|
|
||||||
.1 jsr SRC.GetChar
|
.1 jsr SRC.GetChar
|
||||||
bcs .8
|
bcs .8
|
||||||
cmp #' '
|
|
||||||
|
cmp #C.SPACE
|
||||||
bne .92
|
bne .92
|
||||||
|
|
||||||
jsr SRC.GetNextChar
|
jsr SRC.GetNextChar
|
||||||
beq .8 eol..
|
beq .8 eol..
|
||||||
cmp #' ' some arg...
|
|
||||||
|
cmp #C.SPACE some arg...
|
||||||
bne .8
|
bne .8
|
||||||
|
|
||||||
.2 jsr SRC.GetNextChar comment....skip
|
.2 jsr SRC.GetNextChar comment....skip
|
||||||
bcc .2
|
bcc .2
|
||||||
.8 >LDA.G MAC.StkPtr
|
|
||||||
cmp #MA.MAXDEPTH*8
|
|
||||||
beq .91
|
|
||||||
stz ZPPtr2
|
|
||||||
stz ZPPtr2+1 offset = 0
|
|
||||||
>INC.G MAC.CtxID
|
|
||||||
>INC.G MAC.Depth
|
|
||||||
>LDA.G MAC.StkPtr
|
|
||||||
tay
|
|
||||||
lda ZPLinePtr+1 push args
|
|
||||||
sta (ZPMacroStk),y
|
|
||||||
iny
|
|
||||||
lda ZPLinePtr
|
|
||||||
sta (ZPMacroStk),y
|
|
||||||
iny
|
|
||||||
|
|
||||||
jmp MAC.Push
|
.8 jmp MAC.Push
|
||||||
|
|
||||||
.90 lda #E.MACRO.INV
|
.90 lda #E.MACRO.INV
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
.91 lda #E.MACRO.TOO.MANY
|
|
||||||
sec
|
|
||||||
rts
|
|
||||||
.92 lda #E.SYNTAX.ERROR
|
.92 lda #E.SYNTAX.ERROR
|
||||||
sec
|
sec
|
||||||
rts
|
MAC.Exec.RTS rts
|
||||||
|
*---------------------------------------
|
||||||
|
MAC.ReadLine >LDA.G MAC.hBuf
|
||||||
|
>SYSCALL GetMemPtr
|
||||||
|
>STYA ZPMacroBuf
|
||||||
|
|
||||||
|
jsr MAC.Get ZPMacroArgBuf = args
|
||||||
|
|
||||||
|
>PUSHB.G MAC.hList
|
||||||
|
>PUSHW ZPPtr1 Mac ID
|
||||||
|
>PUSHW ZPMacroBuf
|
||||||
|
>PUSHWZ len = 0 (string mode)
|
||||||
|
>PUSHW ZPPtr2 offset
|
||||||
|
>SYSCALL SListGetData
|
||||||
|
bcs MAC.Exec.RTS
|
||||||
|
|
||||||
|
pha
|
||||||
|
tya
|
||||||
|
sec +1 for CR
|
||||||
|
adc ZPPtr2
|
||||||
|
sta ZPPtr2
|
||||||
|
pla
|
||||||
|
adc ZPPtr2+1
|
||||||
|
sta ZPPtr2+1
|
||||||
|
|
||||||
|
ldy #0
|
||||||
|
|
||||||
|
.1 lda (ZPMacroBuf)
|
||||||
|
beq .7
|
||||||
|
|
||||||
|
inc ZPMacroBuf
|
||||||
|
bne .2
|
||||||
|
inc ZPMacroBuf+1
|
||||||
|
|
||||||
|
.2 cmp #']'
|
||||||
|
bne .7
|
||||||
|
|
||||||
|
lda (ZPMacroBuf)
|
||||||
|
beq .9
|
||||||
|
|
||||||
|
|
||||||
|
inc ZPMacroBuf
|
||||||
|
bne .21
|
||||||
|
inc ZPMacroBuf+1
|
||||||
|
|
||||||
|
.21 cmp #'#'
|
||||||
|
bne .20
|
||||||
|
|
||||||
|
jsr MAC.GetArgCnt
|
||||||
|
ora #$30
|
||||||
|
bra .7
|
||||||
|
|
||||||
|
.20 cmp #'1'
|
||||||
|
bcc .9
|
||||||
|
|
||||||
|
cmp #'9'+1
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
and #$0f
|
||||||
|
tax
|
||||||
|
jsr MAC.GetArgX
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
.3 lda (ZPPtr1)
|
||||||
|
sta (ZPLineBuf),y
|
||||||
|
iny
|
||||||
|
|
||||||
|
inc ZPPtr1
|
||||||
|
bne .4
|
||||||
|
inc ZPPtr1+1
|
||||||
|
|
||||||
|
.4 dex
|
||||||
|
bne .3
|
||||||
|
|
||||||
|
bra .1
|
||||||
|
|
||||||
|
.7 sta (ZPLineBuf),y
|
||||||
|
beq .8
|
||||||
|
|
||||||
|
iny
|
||||||
|
bra .1
|
||||||
|
|
||||||
|
.8 jmp MAC.Put
|
||||||
|
|
||||||
|
.9 lda #E.SYNTAX.ERROR
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
*---------------------------------------
|
||||||
|
MAC.Put >LDA.G MAC.StkPtr
|
||||||
|
|
||||||
|
tay
|
||||||
|
|
||||||
|
dey
|
||||||
|
dey skip mac ID
|
||||||
|
|
||||||
|
dey
|
||||||
|
lda ZPPtr2
|
||||||
|
sta (ZPMacroStk),y
|
||||||
|
dey
|
||||||
|
lda ZPPtr2+1
|
||||||
|
sta (ZPMacroStk),y get offset
|
||||||
|
rts
|
||||||
|
*---------------------------------------
|
||||||
|
MAC.Push >LDA.G MAC.StkPtr
|
||||||
|
cmp #MA.MAXDEPTH*8
|
||||||
|
beq .9
|
||||||
|
|
||||||
|
stz ZPPtr2
|
||||||
|
stz ZPPtr2+1 offset = 0
|
||||||
|
|
||||||
|
>INC.G MAC.CtxID
|
||||||
|
>INC.G MAC.Depth
|
||||||
|
|
||||||
|
>LDYA ZPLinePtr
|
||||||
|
>SYSCALL strdup Args
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
>LDA.G MAC.StkPtr
|
||||||
|
tay
|
||||||
|
txa push args
|
||||||
|
sta (ZPMacroStk),y
|
||||||
|
iny
|
||||||
|
|
||||||
|
lda ZPPtr2+1 push offset
|
||||||
|
sta (ZPMacroStk),y
|
||||||
|
iny
|
||||||
|
lda ZPPtr2
|
||||||
|
sta (ZPMacroStk),y
|
||||||
|
|
||||||
|
iny
|
||||||
|
lda ZPPtr1+1 push MAC.ID
|
||||||
|
sta (ZPMacroStk),y
|
||||||
|
iny
|
||||||
|
lda ZPPtr1
|
||||||
|
sta (ZPMacroStk),y
|
||||||
|
|
||||||
|
iny
|
||||||
|
tya
|
||||||
|
>STA.G MAC.StkPtr
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
.9 lda #E.MACRO.TOO.MANY
|
||||||
|
sec
|
||||||
|
.99 rts
|
||||||
|
*---------------------------------------
|
||||||
|
MAC.Pop >LDA.G MAC.StkPtr
|
||||||
|
|
||||||
|
dec
|
||||||
|
dec
|
||||||
|
|
||||||
|
dec
|
||||||
|
dec
|
||||||
|
|
||||||
|
dec
|
||||||
|
|
||||||
|
sta (pData),y 5 bytes off stack
|
||||||
|
|
||||||
|
tay
|
||||||
|
lda (ZPMacroStk),y
|
||||||
|
>SYSCALL freemem
|
||||||
|
|
||||||
|
>DEC.G MAC.CtxID
|
||||||
|
>DEC.G MAC.Depth
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
*---------------------------------------
|
||||||
|
MAC.Get >LDA.G MAC.StkPtr
|
||||||
|
|
||||||
|
tay
|
||||||
|
|
||||||
|
dey
|
||||||
|
lda (ZPMacroStk),y
|
||||||
|
sta ZPPtr1
|
||||||
|
dey
|
||||||
|
lda (ZPMacroStk),y
|
||||||
|
sta ZPPtr1+1 get mac ID
|
||||||
|
|
||||||
|
dey
|
||||||
|
lda (ZPMacroStk),y
|
||||||
|
sta ZPPtr2
|
||||||
|
dey
|
||||||
|
lda (ZPMacroStk),y
|
||||||
|
sta ZPPtr2+1 get offset
|
||||||
|
|
||||||
|
dey
|
||||||
|
lda (ZPMacroStk),y
|
||||||
|
>SYSCALL GetMemPtr
|
||||||
|
|
||||||
|
>STYA ZPMacroArgBuf get args
|
||||||
|
rts
|
||||||
|
*---------------------------------------
|
||||||
|
MAC.GetArgCnt phy
|
||||||
|
|
||||||
|
ldx #0
|
||||||
|
|
||||||
|
ldy #$ff
|
||||||
|
|
||||||
|
.1 iny
|
||||||
|
lda (ZPMacroArgBuf),y
|
||||||
|
|
||||||
|
ply
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
*---------------------------------------
|
||||||
|
MAC.GetArgX phy
|
||||||
|
|
||||||
|
>LDYA ZPMacroArgBuf
|
||||||
|
>STYA ZPPtr1
|
||||||
|
|
||||||
|
ldy #$ff
|
||||||
|
|
||||||
|
.1 iny
|
||||||
|
lda (ZPPtr1),y
|
||||||
|
beq .7
|
||||||
|
|
||||||
|
cmp #','
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
.2 dex
|
||||||
|
beq .7
|
||||||
|
|
||||||
|
tya
|
||||||
|
beq .9
|
||||||
|
|
||||||
|
clc
|
||||||
|
adc ZPPtr1
|
||||||
|
bcc .7
|
||||||
|
inc ZPPtr1+1
|
||||||
|
|
||||||
|
.7 tya
|
||||||
|
tax
|
||||||
|
beq .9
|
||||||
|
|
||||||
|
ply
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
.9 ply
|
||||||
|
sec
|
||||||
|
rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/BIN/ASM.S.MAC
|
SAVE USR/SRC/BIN/ASM.S.MAC
|
||||||
|
|
|
@ -25,8 +25,8 @@ OUT.Reset ldx #4
|
||||||
rts
|
rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
OUT.PrintLineOn
|
OUT.PrintLineOn
|
||||||
* clc
|
clc
|
||||||
* rts
|
rts
|
||||||
>LDA.G ASM.LI.ON
|
>LDA.G ASM.LI.ON
|
||||||
bpl .9
|
bpl .9
|
||||||
>LDA.G ASM.MA.ON MACRO Mode ?
|
>LDA.G ASM.MA.ON MACRO Mode ?
|
||||||
|
@ -51,56 +51,68 @@ OUT.PrintLineOn
|
||||||
rts
|
rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
OUT.PrintLineErr
|
OUT.PrintLineErr
|
||||||
>STA.G DIR.Byte Save Error code
|
>STA.G DIR.Byte Save Error code
|
||||||
|
|
||||||
jsr OUT.PrintLine.1
|
jsr OUT.PrintLine.1
|
||||||
bcs .9
|
bcs .9
|
||||||
.1 >PUSHB.G DIR.Byte
|
|
||||||
|
.1 >PUSHW L.MSG.ERROR
|
||||||
|
>PUSHB.G DIR.Byte
|
||||||
>PUSHBI 1
|
>PUSHBI 1
|
||||||
>LDYA L.MSG.ERROR
|
|
||||||
>SYSCALL printf
|
>SYSCALL printf
|
||||||
|
|
||||||
ldx ZPLinePtr
|
ldx ZPLinePtr
|
||||||
cpx ZPLineBuf
|
cpx ZPLineBuf
|
||||||
beq .4
|
beq .4
|
||||||
|
|
||||||
.3 phx
|
.3 phx
|
||||||
lda #'-'
|
lda #'-'
|
||||||
>SYSCALL PutChar
|
>SYSCALL PutChar
|
||||||
plx
|
plx
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
dex
|
dex
|
||||||
cpx ZPLineBuf
|
cpx ZPLineBuf
|
||||||
bne .3
|
bne .3
|
||||||
|
|
||||||
.4 lda #'^'
|
.4 lda #'^'
|
||||||
phy
|
phy
|
||||||
>SYSCALL PutChar
|
>SYSCALL PutChar
|
||||||
ply
|
ply
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
.5 jmp OUT.PrintCR
|
jmp OUT.PrintCR
|
||||||
.9 rts
|
.9 rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
OUT.PrintLine jsr OUT.PrintLineOn
|
OUT.PrintLine jsr OUT.PrintLineOn
|
||||||
bcs OUT.Print.RTS
|
bcs OUT.Print.RTS
|
||||||
|
|
||||||
OUT.PrintLine.1 jsr OUT.PrintLineOutBuf
|
OUT.PrintLine.1 jsr OUT.PrintLineOutBuf
|
||||||
bcs OUT.Print.RTS
|
bcs OUT.Print.RTS
|
||||||
|
|
||||||
>LDA.G SRC.COUNT
|
>LDA.G SRC.COUNT
|
||||||
|
|
||||||
.1 dec
|
.1 dec
|
||||||
bmi .2
|
beq .2
|
||||||
|
|
||||||
pha
|
pha
|
||||||
>LDA.G '>'
|
lda #'>'
|
||||||
>SYSCALL putchar
|
>SYSCALL putchar
|
||||||
pla
|
pla
|
||||||
bra .1
|
bra .1
|
||||||
.2 >PUSHW.G SRC.LINENUM
|
|
||||||
|
.2 >PUSHW L.MSG.LINENUM
|
||||||
|
>PUSHW.G SRC.LINENUM
|
||||||
>PUSHBI 2
|
>PUSHBI 2
|
||||||
>LDYA L.MSG.LINENUM
|
|
||||||
>SYSCALL printf
|
>SYSCALL printf
|
||||||
|
|
||||||
>LDA.G MAC.Depth
|
>LDA.G MAC.Depth
|
||||||
|
|
||||||
.3 dec
|
.3 dec
|
||||||
bmi .4
|
bmi .4
|
||||||
|
|
||||||
pha
|
pha
|
||||||
>LDA.G '>'
|
lda #'>'
|
||||||
>SYSCALL putchar
|
>SYSCALL putchar
|
||||||
pla
|
pla
|
||||||
bra .3
|
bra .3
|
||||||
|
@ -117,53 +129,64 @@ OUT.Print.RTS rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
OUT.PrintLineOutBuf
|
OUT.PrintLineOutBuf
|
||||||
>LDA.G OUT.bEquate
|
>LDA.G OUT.bEquate
|
||||||
bne OUT.PrintLineAcc
|
bne OUT.PrintLineEQU
|
||||||
>LDA.G OUT.Buf
|
|
||||||
beq .2
|
|
||||||
tax
|
|
||||||
clc
|
|
||||||
adc #OUT.Buf
|
|
||||||
tay
|
|
||||||
.1 >PUSHB (pData),y
|
|
||||||
dey
|
|
||||||
dex
|
|
||||||
bne .1
|
|
||||||
.2 ldy #OUT.PC+1
|
|
||||||
>PUSHB (pData),y
|
|
||||||
dey
|
|
||||||
>PUSHB (pData),y
|
|
||||||
>LDA.G OUT.Buf
|
>LDA.G OUT.Buf
|
||||||
pha
|
pha
|
||||||
inc
|
|
||||||
inc
|
|
||||||
>PUSHA Byte Count+2 for PC
|
|
||||||
pla
|
|
||||||
asl
|
asl
|
||||||
tax
|
tax
|
||||||
ldy L.MSG.OUT0,x
|
>PUSHB L.MSG.OUT0+1,x
|
||||||
lda L.MSG.OUT0+1,x
|
>PUSHB L.MSG.OUT0,x
|
||||||
>SYSCALL printf
|
|
||||||
rts
|
ldy #OUT.PC+1
|
||||||
*---------------------------------------
|
>PUSHB (pData),y
|
||||||
OUT.PrintLineAcc
|
dey
|
||||||
lda SRC.ACC.SIZE
|
>PUSHB (pData),y
|
||||||
|
|
||||||
|
pla
|
||||||
beq .2
|
beq .2
|
||||||
|
|
||||||
tax
|
tax
|
||||||
ldy #0
|
|
||||||
.1 >PUSHB SRC.ACC,y
|
ldy #OUT.Buf
|
||||||
iny
|
|
||||||
|
pha
|
||||||
|
|
||||||
|
.1 iny
|
||||||
|
>PUSHB (pData),y
|
||||||
dex
|
dex
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
|
pla
|
||||||
|
|
||||||
|
.2 inc
|
||||||
|
inc
|
||||||
|
>PUSHA Byte Count+2 for PC
|
||||||
|
>SYSCALL printf
|
||||||
|
|
||||||
|
rts
|
||||||
|
*---------------------------------------
|
||||||
|
OUT.PrintLineEQU
|
||||||
|
lda SRC.ACC.SIZE
|
||||||
|
asl
|
||||||
|
tax
|
||||||
|
|
||||||
|
>PUSHB L.MSG.EQU0+1,x
|
||||||
|
>PUSHB L.MSG.EQU0,x
|
||||||
|
|
||||||
|
lda SRC.ACC.SIZE
|
||||||
|
beq .2
|
||||||
|
|
||||||
|
tay
|
||||||
|
|
||||||
|
.1 dey
|
||||||
|
>PUSHB SRC.ACC,y
|
||||||
|
tya
|
||||||
|
bne .1
|
||||||
|
|
||||||
lda SRC.ACC.SIZE
|
lda SRC.ACC.SIZE
|
||||||
|
|
||||||
.2 >PUSHA Byte Count
|
.2 >PUSHA Byte Count
|
||||||
asl
|
|
||||||
tax
|
|
||||||
cpx #9
|
|
||||||
bcs *
|
|
||||||
|
|
||||||
ldy L.MSG.EQU0,x
|
|
||||||
lda L.MSG.EQU0+1,x
|
|
||||||
>SYSCALL printf
|
>SYSCALL printf
|
||||||
rts
|
rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
|
@ -203,12 +226,13 @@ OUT.EmitByte phy
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
OUT.PrintCR >PUSHBI 0
|
OUT.PrintCR >PUSHW L.MSG.CRLF
|
||||||
>LDYA L.MSG.CRLF
|
>PUSHBI 0
|
||||||
>SYSCALL printf
|
>SYSCALL printf
|
||||||
>DEBUG
|
|
||||||
OUT.PrintCR1 >DEC.G OUT.LineCnt
|
OUT.PrintCR1 >DEC.G OUT.LineCnt
|
||||||
bne .8
|
bne .8
|
||||||
|
|
||||||
lda #PAGE.LEN
|
lda #PAGE.LEN
|
||||||
sta (pData),y
|
sta (pData),y
|
||||||
* lda #$80
|
* lda #$80
|
||||||
|
|
|
@ -10,99 +10,34 @@ SRC.ParseLine jsr OUT.Reset
|
||||||
beq .8
|
beq .8
|
||||||
>LDA.G ASM.DO.StackPtr
|
>LDA.G ASM.DO.StackPtr
|
||||||
beq .1
|
beq .1
|
||||||
|
|
||||||
clc
|
clc
|
||||||
adc #ASM.DO.Stack-1
|
adc #ASM.DO.Stack-1
|
||||||
tay
|
tay
|
||||||
lda (pData),y
|
lda (pData),y
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
.1 >LDA.G ASM.MA.ON
|
.1 >LDA.G ASM.MA.ON
|
||||||
bmi SRC.ParseLine.MACRO
|
bpl SRC.ParseLine.LABEL
|
||||||
|
|
||||||
|
jmp MAC.Learn
|
||||||
|
|
||||||
jmp SRC.ParseLine.LABEL
|
|
||||||
.8 clc
|
.8 clc
|
||||||
.9 rts
|
SRC.ParseLine.RTS
|
||||||
*---------------------------------------
|
|
||||||
SRC.ParseLine.Macro
|
|
||||||
>STZ.G MAC.BufPtr
|
|
||||||
sta (ZPMacroBuf)
|
|
||||||
lda (ZPLinePtr)
|
|
||||||
cmp #' ' No label, scan to DIR/OP if any
|
|
||||||
bne .1
|
|
||||||
jsr SRC.GetNextCharNB
|
|
||||||
bcs .8
|
|
||||||
lda #' ' Store ONE blank
|
|
||||||
jsr MAC.AddChar
|
|
||||||
bcs .90
|
|
||||||
lda (ZPLinePtr) get back non blank char
|
|
||||||
bra .2
|
|
||||||
.1 jsr MAC.AddChar
|
|
||||||
bcs .99
|
|
||||||
jsr SRC.GetNextChar
|
|
||||||
bcs .80
|
|
||||||
cmp #' '
|
|
||||||
bne .1
|
|
||||||
jsr MAC.AddChar
|
|
||||||
.90 bcs .99
|
|
||||||
jsr SRC.GetNextCharNB
|
|
||||||
bcs .80
|
|
||||||
.2 cmp #'.' Directive ?
|
|
||||||
bne .4
|
|
||||||
|
|
||||||
ldy #1
|
|
||||||
lda (ZPLinePtr),y
|
|
||||||
beq .3
|
|
||||||
cmp #'E'
|
|
||||||
beq .21
|
|
||||||
cmp #'e'
|
|
||||||
bne .3
|
|
||||||
.21 iny
|
|
||||||
lda (ZPLinePtr),y
|
|
||||||
beq .3
|
|
||||||
cmp #'M'
|
|
||||||
beq .22
|
|
||||||
cmp #'m'
|
|
||||||
bne .3
|
|
||||||
.22 >STZ.G ASM.MA.ON
|
|
||||||
.8 clc
|
|
||||||
rts
|
|
||||||
|
|
||||||
.80 lda #C.CR
|
|
||||||
jmp MAC.AddChar
|
|
||||||
.3 lda (ZPLinePtr)
|
|
||||||
.4 jsr MAC.AddChar
|
|
||||||
bcs .99
|
|
||||||
jsr SRC.GetNextChar
|
|
||||||
bcs .80
|
|
||||||
cmp #' '
|
|
||||||
bne .4
|
|
||||||
jsr SRC.GetNextChar
|
|
||||||
bcs .8
|
|
||||||
cmp #' '
|
|
||||||
beq .80 Comments...
|
|
||||||
pha
|
|
||||||
lda #' '
|
|
||||||
jsr MAC.AddChar
|
|
||||||
pla
|
|
||||||
bcs .99
|
|
||||||
.5 jsr MAC.AddChar Store ARG....
|
|
||||||
bcs .99
|
|
||||||
jsr SRC.GetNextChar
|
|
||||||
bcs .80
|
|
||||||
cmp #' '
|
|
||||||
bne .5
|
|
||||||
bra .80 End of Line
|
|
||||||
.99 SRC.ParseLine.RTS
|
|
||||||
rts
|
rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
SRC.ParseLine.LABEL
|
SRC.ParseLine.LABEL
|
||||||
jsr SRC.GetChar
|
jsr SRC.GetChar
|
||||||
cmp #' ' no label...go scan dir/opcode
|
cmp #C.SPACE no label...go scan dir/opcode
|
||||||
beq SRC.ParseLine.DirOp
|
beq SRC.ParseLine.DirOp
|
||||||
|
|
||||||
tax save char...
|
tax save char...
|
||||||
cmp #'.' local symbol?
|
cmp #'.' local symbol?
|
||||||
beq .1
|
beq .1
|
||||||
|
|
||||||
cmp #':' private symbol?
|
cmp #':' private symbol?
|
||||||
bne .8
|
bne .8
|
||||||
|
|
||||||
>LDA.G MAC.StkPtr
|
>LDA.G MAC.StkPtr
|
||||||
beq SRC.ParseLine.InvLbl
|
beq SRC.ParseLine.InvLbl
|
||||||
|
|
||||||
|
@ -121,8 +56,11 @@ SRC.ParseLine.LABEL
|
||||||
|
|
||||||
cpx #':'
|
cpx #':'
|
||||||
beq .2
|
beq .2
|
||||||
|
|
||||||
jsr SYM.NewLocalA
|
jsr SYM.NewLocalA
|
||||||
bra .3
|
bcs SRC.ParseLine.RTS
|
||||||
|
bra SRC.ParseLine.DirOp
|
||||||
|
|
||||||
.2 jsr SYM.NewPrivateA
|
.2 jsr SYM.NewPrivateA
|
||||||
|
|
||||||
.3 bcs SRC.ParseLine.RTS
|
.3 bcs SRC.ParseLine.RTS
|
||||||
|
@ -136,10 +74,13 @@ SRC.ParseLine.DirOp
|
||||||
bcs SRC.ParseLine.Ok
|
bcs SRC.ParseLine.Ok
|
||||||
cmp #'.'
|
cmp #'.'
|
||||||
bne .5
|
bne .5
|
||||||
|
|
||||||
jsr SRC.GetNextChar
|
jsr SRC.GetNextChar
|
||||||
bcs SRC.ParseLine.InvDir
|
bcs SRC.ParseLine.InvDir
|
||||||
|
|
||||||
jsr SRC.ParseLine.Dir
|
jsr SRC.ParseLine.Dir
|
||||||
bcs SRC.ParseLine.Err
|
bcs SRC.ParseLine.Err
|
||||||
|
|
||||||
bra SRC.ParseLine.Ok
|
bra SRC.ParseLine.Ok
|
||||||
|
|
||||||
.5 cmp #'>'
|
.5 cmp #'>'
|
||||||
|
@ -953,9 +894,11 @@ SRC.ACC10 lda SRC.ACC ACC*2-> ACC & ACCTMP
|
||||||
sta SRC.ACC+3 CS if overflow
|
sta SRC.ACC+3 CS if overflow
|
||||||
.9 rts
|
.9 rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
DEBUG.PSTR >PUSHYA
|
DEBUG.PSTR pha
|
||||||
|
>PUSHW L.MSG.PSTR
|
||||||
|
pla
|
||||||
|
>PUSHYA
|
||||||
>PUSHBI 2
|
>PUSHBI 2
|
||||||
>LDYA L.MSG.PSTR
|
|
||||||
>SYSCALL printf
|
>SYSCALL printf
|
||||||
rts
|
rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
|
|
|
@ -31,21 +31,27 @@ SYM.Reset >STZ.G SYM.bInGlobal
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
SYM.Quit >LDA.G SYM.hGlobalBuf
|
SYM.Quit >LDA.G SYM.hGlobalBuf
|
||||||
beq .3
|
beq .3
|
||||||
|
|
||||||
>SYSCALL FreeMem
|
>SYSCALL FreeMem
|
||||||
|
|
||||||
.3 >LDA.G SYM.hList
|
.3 >LDA.G SYM.hList
|
||||||
beq SYM.Quit.8
|
beq SYM.Quit.8
|
||||||
|
|
||||||
|
>PUSHA
|
||||||
>SYSCALL SListFree
|
>SYSCALL SListFree
|
||||||
|
|
||||||
SYM.Quit.8 clc
|
SYM.Quit.8 clc
|
||||||
rts
|
rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
SYM.Dump.End >PUSHW ZPPtr2
|
SYM.Dump.End >PUSHW L.MSG.SUMMARY
|
||||||
|
>PUSHW ZPPtr2
|
||||||
>PUSHBI 2
|
>PUSHBI 2
|
||||||
>LDYA L.MSG.SUMMARY
|
|
||||||
jmp OUT.Print
|
jmp OUT.Print
|
||||||
SYM.Dump.RTS rts
|
rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
SYM.Dump >LDA.G ASM.LI.ON
|
SYM.Dump >LDA.G ASM.LI.ON
|
||||||
bpl SYM.Quit.8
|
bpl SYM.Quit.8
|
||||||
|
|
||||||
>LDYA L.MSG.SYMBOLS
|
>LDYA L.MSG.SYMBOLS
|
||||||
>SYSCALL puts
|
>SYSCALL puts
|
||||||
|
|
||||||
|
@ -55,41 +61,51 @@ SYM.Dump >LDA.G ASM.LI.ON
|
||||||
.1 >LDYA ZPPtr2
|
.1 >LDYA ZPPtr2
|
||||||
>STYA ZPPtr1
|
>STYA ZPPtr1
|
||||||
|
|
||||||
>PUSHW ZPTmpBuf
|
>PUSHB.G SYM.hList
|
||||||
>PUSHW ZPPtr1
|
>PUSHW ZPPtr1
|
||||||
>LDA.G SYM.hList
|
>PUSHW ZPTmpBuf
|
||||||
>SYSCALL SListGetByID
|
>SYSCALL SListGetByID
|
||||||
bcs SYM.Dump.End
|
bcs SYM.Dump.End
|
||||||
>STYA ZPPtr2 Save Next ID
|
|
||||||
>PUSHWZ Start
|
|
||||||
>PUSHWI $ffff End
|
|
||||||
>PUSHW ZPSymbolBuf
|
|
||||||
>PUSHW ZPPtr1 KeyID
|
|
||||||
>LDA.G SYM.hList
|
|
||||||
|
|
||||||
|
>STYA ZPPtr2 Save Next ID
|
||||||
|
|
||||||
|
>PUSHB.G SYM.hList
|
||||||
|
>PUSHW ZPPtr1 KeyID
|
||||||
|
>PUSHW ZPSymbolBuf
|
||||||
|
>PUSHWI $ffff All
|
||||||
|
>PUSHWZ from Start
|
||||||
>SYSCALL SListGetData
|
>SYSCALL SListGetData
|
||||||
bcs SYM.Dump.RTS
|
bcs .9
|
||||||
|
|
||||||
ldy #SYMG.SIZE Get Symbol Size
|
ldy #SYMG.SIZE Get Symbol Size
|
||||||
lda (ZPSymbolBuf),y
|
lda (ZPSymbolBuf),y
|
||||||
tax
|
tax
|
||||||
beq .3
|
beq .3
|
||||||
|
|
||||||
phx
|
phx
|
||||||
|
|
||||||
|
asl
|
||||||
|
tax
|
||||||
|
>PUSHB L.MSG.EQU0+1,x
|
||||||
|
>PUSHB L.MSG.EQU0,x
|
||||||
|
|
||||||
|
plx
|
||||||
|
phx
|
||||||
|
|
||||||
.2 iny
|
.2 iny
|
||||||
lda (ZPSymbolBuf),y
|
lda (ZPSymbolBuf),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
dex
|
dex
|
||||||
bne .2
|
bne .2
|
||||||
|
|
||||||
pla Byte Count
|
pla Byte Count
|
||||||
asl
|
|
||||||
tax
|
|
||||||
.3 >PUSHA
|
.3 >PUSHA
|
||||||
ldy L.MSG.EQU0,x
|
|
||||||
lda L.MSG.EQU0+1,x
|
|
||||||
>SYSCALL printf
|
>SYSCALL printf
|
||||||
|
|
||||||
|
>PUSHW ZPTmpBuf Label
|
||||||
>PUSHBI 0
|
>PUSHBI 0
|
||||||
>LDYA ZPTmpBuf Label
|
|
||||||
>SYSCALL printf
|
>SYSCALL printf
|
||||||
|
|
||||||
lda (ZPSymbolBuf)
|
lda (ZPSymbolBuf)
|
||||||
|
@ -100,44 +116,59 @@ SYM.Dump >LDA.G ASM.LI.ON
|
||||||
jsr SYM.Dump.LP
|
jsr SYM.Dump.LP
|
||||||
.7 jsr OUT.PrintCR
|
.7 jsr OUT.PrintCR
|
||||||
jmp .1
|
jmp .1
|
||||||
|
.9 rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
SYM.Dump.LP ldy #SYMG
|
SYM.Dump.LP ldy #SYMG
|
||||||
|
|
||||||
.4 lda (ZPSymbolBuf),y
|
.1 lda (ZPSymbolBuf),y
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
phy
|
phy
|
||||||
|
|
||||||
|
tax ID
|
||||||
|
|
||||||
iny
|
iny
|
||||||
ldx #4
|
lda (ZPSymbolBuf),y MacID
|
||||||
.5 iny
|
beq .2
|
||||||
|
|
||||||
|
>PUSHW L.MSG.LSYMBOL
|
||||||
|
txa
|
||||||
|
>PUSHA
|
||||||
|
|
||||||
|
>PUSHB (ZPSymbolBuf),y
|
||||||
|
bra .3
|
||||||
|
|
||||||
|
.2 >PUSHW L.MSG.LSYMBOL
|
||||||
|
txa
|
||||||
|
>PUSHA
|
||||||
|
|
||||||
|
phx
|
||||||
|
|
||||||
|
.3 ldx #4
|
||||||
|
|
||||||
|
.4 iny
|
||||||
lda (ZPSymbolBuf),y
|
lda (ZPSymbolBuf),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
dex
|
dex
|
||||||
bne .5
|
bne .4
|
||||||
ply
|
|
||||||
iny
|
lda #5
|
||||||
lda (ZPSymbolBuf),y
|
plx
|
||||||
tax
|
beq .5
|
||||||
beq .55
|
|
||||||
>PUSHA
|
inc
|
||||||
.55 dey
|
|
||||||
lda (ZPSymbolBuf),y
|
.5 >PUSHA
|
||||||
>PUSHA
|
|
||||||
phy
|
>SYSCALL printf
|
||||||
txa
|
|
||||||
beq .6
|
|
||||||
>PUSHBI 6
|
|
||||||
>LDYA L.MSG.PSYMBOL
|
|
||||||
bra .66
|
|
||||||
.6 >PUSHBI 5
|
|
||||||
>LDYA L.MSG.LSYMBOL
|
|
||||||
.66 >SYSCALL printf
|
|
||||||
pla
|
pla
|
||||||
clc
|
clc
|
||||||
adc #SYML
|
adc #SYML
|
||||||
tay
|
tay
|
||||||
|
|
||||||
bra .4
|
bra .1
|
||||||
|
|
||||||
.8 rts
|
.8 rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
SYM.NewOrGetGlobal
|
SYM.NewOrGetGlobal
|
||||||
|
@ -147,18 +178,21 @@ SYM.NewOrGetGlobal
|
||||||
SYM.NewGlobal jsr SYM.StoreGlobal
|
SYM.NewGlobal jsr SYM.StoreGlobal
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
>PUSHW ZPLinePtr Pass #1; try to add global...
|
>PUSHB.G SYM.hList
|
||||||
>LDA.G SYM.hList
|
>PUSHW ZPLinePtr Pass #1: try to add global...
|
||||||
>SYSCALL SListNewKey
|
>SYSCALL SListNewKey
|
||||||
bcs .9 Already Defined
|
bcs .9 Already Defined
|
||||||
|
|
||||||
>STYA.G SYM.GlobalID
|
>STYA.G SYM.GlobalID
|
||||||
txa
|
txa
|
||||||
adc ZPLinePtr
|
adc ZPLinePtr
|
||||||
sta ZPLinePtr
|
sta ZPLinePtr
|
||||||
bcc .1
|
bcc .1
|
||||||
inc ZPLinePtr+1
|
inc ZPLinePtr+1
|
||||||
|
|
||||||
.1 jsr SYM.PC2Acc
|
.1 jsr SYM.PC2Acc
|
||||||
jsr SYM.Acc2Global
|
jsr SYM.Acc2Global
|
||||||
|
|
||||||
lda #SYMG
|
lda #SYMG
|
||||||
>STA.G SYM.GlobalPtr
|
>STA.G SYM.GlobalPtr
|
||||||
tay
|
tay
|
||||||
|
@ -172,12 +206,13 @@ SYM.NewGlobal jsr SYM.StoreGlobal
|
||||||
* >SYSCALL printf
|
* >SYSCALL printf
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 lda #E.SYMBOL.REDEF
|
.9 lda #E.SYMBOL.REDEF
|
||||||
sec
|
sec
|
||||||
.99 rts
|
.99 rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
SYM.GetGlobal >PUSHW ZPLinePtr Pass #2: should be already defined...
|
SYM.GetGlobal >PUSHB.G SYM.hList
|
||||||
>LDA.G SYM.hList
|
>PUSHW ZPLinePtr Pass #2: should be already defined...
|
||||||
>SYSCALL SListLookup
|
>SYSCALL SListLookup
|
||||||
bcs .9
|
bcs .9
|
||||||
>STYA.G SYM.GlobalID
|
>STYA.G SYM.GlobalID
|
||||||
|
@ -187,13 +222,15 @@ SYM.GetGlobal >PUSHW ZPLinePtr Pass #2: should be already defined...
|
||||||
sta ZPLinePtr
|
sta ZPLinePtr
|
||||||
bcc .1
|
bcc .1
|
||||||
inc ZPLinePtr+1
|
inc ZPLinePtr+1
|
||||||
.1 >PUSHWZ Start
|
|
||||||
>PUSHWI $ffff End
|
.1 >PUSHB.G SYM.hList
|
||||||
>PUSHW ZPSymbolBuf
|
|
||||||
>PUSHW.G SYM.GlobalID
|
>PUSHW.G SYM.GlobalID
|
||||||
>LDA.G SYM.hList
|
>PUSHW ZPSymbolBuf
|
||||||
|
>PUSHWI $ffff all
|
||||||
|
>PUSHWZ from Start
|
||||||
>SYSCALL SListGetData
|
>SYSCALL SListGetData
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
lda #$ff
|
lda #$ff
|
||||||
>STA.G SYM.bInGlobal
|
>STA.G SYM.bInGlobal
|
||||||
* clc
|
* clc
|
||||||
|
@ -204,23 +241,27 @@ SYM.GetGlobal >PUSHW ZPLinePtr Pass #2: should be already defined...
|
||||||
.99 rts
|
.99 rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
SYM.LookupGlobal
|
SYM.LookupGlobal
|
||||||
|
>PUSHB.G SYM.hList
|
||||||
>PUSHW ZPLinePtr
|
>PUSHW ZPLinePtr
|
||||||
>LDA.G SYM.hList
|
|
||||||
>SYSCALL SListLookup
|
>SYSCALL SListLookup
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>STYA ZPPtr1
|
>STYA ZPPtr1
|
||||||
txa
|
txa
|
||||||
adc ZPLinePtr
|
adc ZPLinePtr
|
||||||
sta ZPLinePtr
|
sta ZPLinePtr
|
||||||
bcc .1
|
bcc .1
|
||||||
inc ZPLinePtr+1
|
inc ZPLinePtr+1
|
||||||
|
|
||||||
.1 >LDA.G SYM.GlobalID
|
.1 >LDA.G SYM.GlobalID
|
||||||
cmp ZPPtr1
|
cmp ZPPtr1
|
||||||
bne .3
|
bne .3
|
||||||
|
|
||||||
iny SYM.GlobalID+1
|
iny SYM.GlobalID+1
|
||||||
lda (pData),y
|
lda (pData),y
|
||||||
cmp ZPPtr1+1
|
cmp ZPPtr1+1
|
||||||
bne .3
|
bne .3
|
||||||
|
|
||||||
ldy #SYMG-1
|
ldy #SYMG-1
|
||||||
.2 lda (ZPSymbolBuf),y
|
.2 lda (ZPSymbolBuf),y
|
||||||
sta SRC.ACC.F,y
|
sta SRC.ACC.F,y
|
||||||
|
@ -230,13 +271,14 @@ SYM.LookupGlobal
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.3 >PUSHWZ Start
|
.3 >PUSHB.G SYM.hList
|
||||||
>PUSHWI SYMG Get only Global value
|
|
||||||
>PUSHW L.SRC.ACC.F
|
|
||||||
>PUSHW ZPPtr1
|
>PUSHW ZPPtr1
|
||||||
>LDA.G SYM.hList
|
>PUSHW L.SRC.ACC.F
|
||||||
|
>PUSHWI SYMG Get only Global value
|
||||||
|
>PUSHWZ Start
|
||||||
>SYSCALL SListGetData
|
>SYSCALL SListGetData
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 lda #E.UNDEF.SYMBOL
|
.9 lda #E.UNDEF.SYMBOL
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
@ -247,43 +289,49 @@ SYM.StoreGlobal >LDA.G ASM.PASS
|
||||||
>LDA.G SYM.bInGlobal
|
>LDA.G SYM.bInGlobal
|
||||||
bpl .8
|
bpl .8
|
||||||
|
|
||||||
|
>PUSHB.G SYM.hList
|
||||||
|
>PUSHW.G SYM.GlobalID
|
||||||
|
>PUSHW ZPSymbolBuf
|
||||||
|
|
||||||
>LDA.G SYM.GlobalPtr
|
>LDA.G SYM.GlobalPtr
|
||||||
tay
|
tay
|
||||||
lda #0
|
lda #0
|
||||||
cpy #SYMG
|
cpy #SYMG
|
||||||
beq .1
|
beq .1
|
||||||
|
|
||||||
lda (ZPSymbolBuf)
|
lda (ZPSymbolBuf)
|
||||||
ora #SYMG.F.LOCALS
|
ora #SYMG.F.LOCALS
|
||||||
sta (ZPSymbolBuf)
|
sta (ZPSymbolBuf)
|
||||||
|
|
||||||
lda #0
|
lda #0
|
||||||
sta (ZPSymbolBuf),y
|
sta (ZPSymbolBuf),y
|
||||||
iny
|
iny
|
||||||
bne .1
|
bne .1
|
||||||
inc
|
inc
|
||||||
|
|
||||||
.1 >PUSHYA
|
.1 >PUSHYA
|
||||||
|
|
||||||
>PUSHW ZPSymbolBuf
|
|
||||||
>PUSHW.G SYM.GlobalID
|
|
||||||
>LDA.G SYM.hList
|
|
||||||
>SYSCALL SListAddData
|
>SYSCALL SListAddData
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
lda #0
|
lda #0
|
||||||
>STA.G SYM.bInGlobal
|
>STA.G SYM.bInGlobal
|
||||||
>STA.G MAC.CtxID
|
>STA.G MAC.CtxID
|
||||||
rts
|
|
||||||
.8 clc
|
.8 clc
|
||||||
.9 rts
|
.9 rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
SYM.UpdateGlobal
|
SYM.UpdateGlobal
|
||||||
>PUSHWI SYMG
|
>PUSHB.G SYM.hList
|
||||||
>PUSHW L.SRC.ACC.F
|
|
||||||
>PUSHW.G SYM.GlobalID
|
>PUSHW.G SYM.GlobalID
|
||||||
>LDA.G SYM.hList
|
>PUSHW L.SRC.ACC.F
|
||||||
|
>PUSHWI SYMG
|
||||||
>SYSCALL SListSetData
|
>SYSCALL SListSetData
|
||||||
rts
|
rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
SYM.PC2Acc ldy #ASM.PC+3
|
SYM.PC2Acc ldy #ASM.PC+3
|
||||||
ldx #3
|
ldx #3
|
||||||
|
|
||||||
.1 lda (pData),y
|
.1 lda (pData),y
|
||||||
sta SRC.ACC,x
|
sta SRC.ACC,x
|
||||||
dey
|
dey
|
||||||
|
@ -317,6 +365,7 @@ SYM.NewLocalA clc
|
||||||
|
|
||||||
>LDA.G SYM.bInGlobal not in a global label
|
>LDA.G SYM.bInGlobal not in a global label
|
||||||
bpl .91
|
bpl .91
|
||||||
|
|
||||||
>LDA.G ASM.PASS Pass #2: should be already defined...
|
>LDA.G ASM.PASS Pass #2: should be already defined...
|
||||||
bne .8
|
bne .8
|
||||||
|
|
||||||
|
@ -326,23 +375,30 @@ SYM.NewLocalA clc
|
||||||
>LDA.G SYM.GlobalPtr
|
>LDA.G SYM.GlobalPtr
|
||||||
cmp #252 6*42
|
cmp #252 6*42
|
||||||
beq .90
|
beq .90
|
||||||
|
|
||||||
ldy #ASM.PC+4
|
ldy #ASM.PC+4
|
||||||
|
|
||||||
.1 dey
|
.1 dey
|
||||||
lda (pData),y
|
lda (pData),y
|
||||||
pha
|
pha
|
||||||
cpy #ASM.PC
|
cpy #ASM.PC
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
lda #0
|
lda #0
|
||||||
bit ZPPtr1
|
bit ZPPtr1
|
||||||
bpl .11 local, Ctx = 0
|
bpl .11 local, Ctx = 0
|
||||||
|
|
||||||
>LDA.G MAC.CtxID Get Macro Context ID
|
>LDA.G MAC.CtxID Get Macro Context ID
|
||||||
|
|
||||||
.11 pha
|
.11 pha
|
||||||
|
|
||||||
>LDA.G SYM.GlobalPtr
|
>LDA.G SYM.GlobalPtr
|
||||||
tay
|
tay
|
||||||
txa Get Back ID
|
txa Get Back ID
|
||||||
sta (ZPSymbolBuf),y
|
sta (ZPSymbolBuf),y
|
||||||
|
|
||||||
ldx #5 MAC ID + PC (4)
|
ldx #5 MAC ID + PC (4)
|
||||||
|
|
||||||
.2 pla
|
.2 pla
|
||||||
iny
|
iny
|
||||||
sta (ZPSymbolBuf),y
|
sta (ZPSymbolBuf),y
|
||||||
|
@ -353,16 +409,20 @@ SYM.NewLocalA clc
|
||||||
lda #0
|
lda #0
|
||||||
sta (ZPSymbolBuf),y
|
sta (ZPSymbolBuf),y
|
||||||
tya
|
tya
|
||||||
|
* >DEBUG
|
||||||
>STA.G SYM.GlobalPtr
|
>STA.G SYM.GlobalPtr
|
||||||
|
|
||||||
lda (ZPSymbolBuf)
|
lda (ZPSymbolBuf)
|
||||||
ora #SYMG.F.LOCALS
|
ora #SYMG.F.LOCALS
|
||||||
sta (ZPSymbolBuf)
|
sta (ZPSymbolBuf)
|
||||||
|
|
||||||
.8 clc
|
.8 clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.91 lda #E.INV.LABEL
|
.91 lda #E.INV.LABEL
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.90 lda #E.TOO.MANY.LOCAL
|
.90 lda #E.TOO.MANY.LOCAL
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
@ -374,10 +434,12 @@ SYM.NewLocalA clc
|
||||||
SYM.GetLocalX lda (ZPSymbolBuf)
|
SYM.GetLocalX lda (ZPSymbolBuf)
|
||||||
and #SYMG.F.LOCALS
|
and #SYMG.F.LOCALS
|
||||||
beq .9
|
beq .9
|
||||||
|
|
||||||
ldy #SYMG
|
ldy #SYMG
|
||||||
|
|
||||||
.1 lda (ZPSymbolBuf),y
|
.1 lda (ZPSymbolBuf),y
|
||||||
beq .9
|
beq .9
|
||||||
|
|
||||||
txa
|
txa
|
||||||
cmp (ZPSymbolBuf),y
|
cmp (ZPSymbolBuf),y
|
||||||
bne .4
|
bne .4
|
||||||
|
@ -390,11 +452,13 @@ SYM.GetLocalX lda (ZPSymbolBuf)
|
||||||
bne .3
|
bne .3
|
||||||
|
|
||||||
ldx #0
|
ldx #0
|
||||||
|
|
||||||
.2 iny
|
.2 iny
|
||||||
lda (ZPSymbolBuf),y
|
lda (ZPSymbolBuf),y
|
||||||
sta SRC.ACC,x
|
sta SRC.ACC,x
|
||||||
inx
|
inx
|
||||||
cpx #4
|
cpx #4
|
||||||
|
|
||||||
bne .2
|
bne .2
|
||||||
|
|
||||||
lda #2
|
lda #2
|
||||||
|
@ -408,6 +472,7 @@ SYM.GetLocalX lda (ZPSymbolBuf)
|
||||||
adc #SYML
|
adc #SYML
|
||||||
tay
|
tay
|
||||||
bra .1
|
bra .1
|
||||||
|
|
||||||
.9 lda #E.UNDEF.SYMBOL
|
.9 lda #E.UNDEF.SYMBOL
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
107
BIN/ASM.S.txt
107
BIN/ASM.S.txt
|
@ -1,10 +1,9 @@
|
||||||
NEW
|
NEW
|
||||||
AUTO 3,1
|
AUTO 3,1
|
||||||
*---------------------------------------
|
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
.OP 65C02
|
.OP 65C02
|
||||||
.OR $2000
|
.OR $2000
|
||||||
.TF BIN/ASM
|
.TF bin/asm
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
PAGE.LEN .EQ 23
|
PAGE.LEN .EQ 23
|
||||||
DO.MAXDEPTH .EQ 8
|
DO.MAXDEPTH .EQ 8
|
||||||
|
@ -13,27 +12,29 @@ MA.MAXDEPTH .EQ 8
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
.INB INC/MACROS.I
|
.INB INC/MACROS.I
|
||||||
.INB INC/A2OSX.I
|
.INB INC/A2OSX.I
|
||||||
|
.INB INC/MLI.I
|
||||||
.INB INC/MLI.E.I
|
.INB INC/MLI.E.I
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
.DUMMY
|
.DUMMY
|
||||||
.OR ZPBIN
|
.OR ZPBIN
|
||||||
ZS.START
|
ZS.START
|
||||||
ZPPtr1 .BS 2
|
|
||||||
ZPPtr2 .BS 2
|
|
||||||
|
|
||||||
ZPTmpBuf .BS 2
|
ZPTmpBuf .BS 2
|
||||||
ZPLineBuf .BS 2
|
ZPLineBuf .BS 2
|
||||||
ZPLinePtr .BS 2
|
ZPLinePtr .BS 2
|
||||||
ZPSymbolBuf .BS 2
|
ZPSymbolBuf .BS 2
|
||||||
|
|
||||||
ZPMacroBuf .BS 2
|
|
||||||
ZPMacroStk .BS 2
|
|
||||||
|
|
||||||
ZPAMPtr .BS 2
|
ZPAMPtr .BS 2
|
||||||
ZPRPtr .BS 2
|
ZPRPtr .BS 2
|
||||||
ZPOpsPtr .BS 2
|
ZPOpsPtr .BS 2
|
||||||
ZPOpDefPtr .BS 2
|
ZPOpDefPtr .BS 2
|
||||||
|
|
||||||
|
ZPMacroStk .BS 2
|
||||||
|
ZPMacroBuf .BS 2
|
||||||
|
ZPMacroArgBuf .BS 2
|
||||||
|
|
||||||
|
ZPPtr1 .BS 2
|
||||||
|
ZPPtr2 .BS 2
|
||||||
|
|
||||||
ZS.END .ED
|
ZS.END .ED
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
* Symbols
|
* Symbols
|
||||||
|
@ -92,12 +93,12 @@ CS.START cld
|
||||||
jmp (.1,x)
|
jmp (.1,x)
|
||||||
.DA #$61 6502,Level 1 (65c02)
|
.DA #$61 6502,Level 1 (65c02)
|
||||||
.DA #1 BIN Layout Version 1
|
.DA #1 BIN Layout Version 1
|
||||||
.DA #S.PS.F.EVENT S.PS.F
|
.DA #0 S.PS.F.EVENT
|
||||||
.DA #0
|
.DA #0
|
||||||
.DA CS.END-CS.START CS
|
.DA CS.END-CS.START CS
|
||||||
.DA DS.END-DS.START DS
|
.DA DS.END-DS.START DS
|
||||||
.DA #ZS.END-ZS.START Zero Page Size
|
.DA #64 SS
|
||||||
.DA #64 ZP
|
.DA #ZS.END-ZS.START ZP
|
||||||
.DA 0
|
.DA 0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Relocation Table
|
* Relocation Table
|
||||||
|
@ -133,7 +134,7 @@ L.MSG.OBJ.FILE .DA MSG.OBJ.FILE
|
||||||
L.MSG.T.FILE .DA MSG.T.FILE
|
L.MSG.T.FILE .DA MSG.T.FILE
|
||||||
L.SRC.AM.StrBuf .DA SRC.AM.StrBuf
|
L.SRC.AM.StrBuf .DA SRC.AM.StrBuf
|
||||||
L.ASM.6502 .DA ASM.6502
|
L.ASM.6502 .DA ASM.6502
|
||||||
L.ASM.T.FILENAME .DA ASM.T.FILENAME
|
L.ASM.CPU.FILE .DA ASM.CPU.FILE
|
||||||
L.FIO.Stat .DA FIO.Stat
|
L.FIO.Stat .DA FIO.Stat
|
||||||
L.SRC.ACC.F .DA SRC.ACC.F
|
L.SRC.ACC.F .DA SRC.ACC.F
|
||||||
L.T.DIRECTIVES .DA T.DIRECTIVES
|
L.T.DIRECTIVES .DA T.DIRECTIVES
|
||||||
|
@ -207,14 +208,15 @@ J.EXP.OP .DA EXP.OP.EOR ^!|&<=>+-*/
|
||||||
CS.INIT ldy #S.PS.ARGC
|
CS.INIT ldy #S.PS.ARGC
|
||||||
lda (pPs),y
|
lda (pPs),y
|
||||||
beq .99
|
beq .99
|
||||||
|
|
||||||
lda #1
|
lda #1
|
||||||
>SYSCALL ArgV
|
>SYSCALL ArgV
|
||||||
>PUSHYA
|
>PUSHYA
|
||||||
>PUSHWI 0 Allocate
|
>PUSHWI 0 Allocate
|
||||||
>SYSCALL RealPath
|
>SYSCALL RealPath
|
||||||
txa
|
txa
|
||||||
ldy #SRC.hFILENAME
|
>STA.G SRC.hFILENAME
|
||||||
sta (pData),y
|
|
||||||
jsr FIO.Init
|
jsr FIO.Init
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
|
@ -223,6 +225,7 @@ CS.INIT ldy #S.PS.ARGC
|
||||||
|
|
||||||
jsr MAC.Init
|
jsr MAC.Init
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
jsr OUT.Init
|
jsr OUT.Init
|
||||||
|
|
||||||
>LDYAI 256
|
>LDYAI 256
|
||||||
|
@ -238,10 +241,12 @@ CS.INIT ldy #S.PS.ARGC
|
||||||
>STYA ZPTmpBuf
|
>STYA ZPTmpBuf
|
||||||
txa
|
txa
|
||||||
>STA.G SRC.hTmpBuf
|
>STA.G SRC.hTmpBuf
|
||||||
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
.99 >PUSHBI 0
|
|
||||||
>LDYA L.MSG.HELP
|
.99 >PUSHW L.MSG.HELP
|
||||||
|
>PUSHBI 0
|
||||||
>SYSCALL printf
|
>SYSCALL printf
|
||||||
lda #E.INV.ARGS
|
lda #E.INV.ARGS
|
||||||
sec
|
sec
|
||||||
|
@ -259,6 +264,7 @@ CS.RUN ldy #S.PS.hStdIn
|
||||||
|
|
||||||
cmp #$03 Ctrl-C
|
cmp #$03 Ctrl-C
|
||||||
beq .99 Abort....beq=CS
|
beq .99 Abort....beq=CS
|
||||||
|
|
||||||
cmp #$13 Ctrl-S
|
cmp #$13 Ctrl-S
|
||||||
bne .11
|
bne .11
|
||||||
|
|
||||||
|
@ -267,44 +273,58 @@ CS.RUN ldy #S.PS.hStdIn
|
||||||
sta (pData),y
|
sta (pData),y
|
||||||
|
|
||||||
bpl .12
|
bpl .12
|
||||||
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.13 >LDA.G bPause
|
.13 >LDA.G bPause
|
||||||
bpl .11
|
bpl .11
|
||||||
|
|
||||||
clc
|
clc
|
||||||
.99 rts
|
.99 rts
|
||||||
|
|
||||||
.11 >STZ.G bPause
|
.11 >STZ.G bPause
|
||||||
|
|
||||||
.12 >LDA.G SRC.COUNT root file is already opened?
|
.12 >LDA.G SRC.COUNT root file is already opened?
|
||||||
bne .10
|
bne .10
|
||||||
|
|
||||||
|
>PUSHW L.MSG.PASS
|
||||||
>LDA.G ASM.PASS
|
>LDA.G ASM.PASS
|
||||||
inc
|
inc
|
||||||
>PUSHA
|
>PUSHA
|
||||||
>PUSHBI 1
|
>PUSHBI 1
|
||||||
>LDYA L.MSG.PASS
|
|
||||||
jsr OUT.Print
|
jsr OUT.Print
|
||||||
|
|
||||||
ldy #SRC.hFILENAME
|
>LDA.G SRC.hFILENAME
|
||||||
lda (pData),y
|
|
||||||
>SYSCALL GetMemPtr
|
>SYSCALL GetMemPtr
|
||||||
jsr FIO.OpenFile
|
jsr FIO.OpenFile
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
jsr DIR.Reset
|
jsr DIR.Reset
|
||||||
jsr SYM.Reset
|
jsr SYM.Reset
|
||||||
jsr MAC.Reset
|
jsr MAC.Reset
|
||||||
|
|
||||||
.10 >LDYA ZPLineBuf
|
.10 >LDYA ZPLineBuf
|
||||||
>STYA ZPLinePtr
|
>STYA ZPLinePtr
|
||||||
|
|
||||||
>LDA.G MAC.StkPtr
|
>LDA.G MAC.StkPtr
|
||||||
beq .20
|
beq .20
|
||||||
jsr MAC.ReadLine
|
|
||||||
|
.15 jsr MAC.ReadLine
|
||||||
bcc .2
|
bcc .2
|
||||||
|
|
||||||
cmp #E.EMPTYKEY
|
cmp #E.EMPTYKEY
|
||||||
bne .9
|
bne .9
|
||||||
>DEC.G MAC.Depth
|
|
||||||
|
jsr MAC.Pop
|
||||||
|
bne .15
|
||||||
|
|
||||||
.20 jsr FIO.ReadLine
|
.20 jsr FIO.ReadLine
|
||||||
bcc .2
|
bcc .2
|
||||||
|
|
||||||
cmp #MLI.E.EOF End Of File?
|
cmp #MLI.E.EOF End Of File?
|
||||||
bne .9
|
bne .9
|
||||||
|
|
||||||
jsr FIO.FileClose
|
jsr FIO.FileClose
|
||||||
>LDA.G SRC.COUNT end of root file ?
|
>LDA.G SRC.COUNT end of root file ?
|
||||||
bne .8 no continue back to previous file
|
bne .8 no continue back to previous file
|
||||||
|
@ -317,6 +337,7 @@ CS.RUN ldy #S.PS.hStdIn
|
||||||
sta (pData),y
|
sta (pData),y
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.1 jsr SYM.Dump
|
.1 jsr SYM.Dump
|
||||||
|
|
||||||
>LDYA L.MSG.END
|
>LDYA L.MSG.END
|
||||||
|
@ -324,8 +345,10 @@ CS.RUN ldy #S.PS.hStdIn
|
||||||
lda #0 End of assembly, exit with no error
|
lda #0 End of assembly, exit with no error
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.2 jsr SRC.ParseLine
|
.2 jsr SRC.ParseLine
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
jsr OUT.PrintLine
|
jsr OUT.PrintLine
|
||||||
.8 clc
|
.8 clc
|
||||||
rts
|
rts
|
||||||
|
@ -346,17 +369,21 @@ CS.QUIT jsr FIO.FileClose
|
||||||
bne CS.QUIT
|
bne CS.QUIT
|
||||||
|
|
||||||
jsr MAC.Quit
|
jsr MAC.Quit
|
||||||
|
|
||||||
jsr SYM.Quit
|
jsr SYM.Quit
|
||||||
>LDA.G ASM.T.hMem
|
|
||||||
beq .1
|
ldy #ASM.T.hMem
|
||||||
>SYSCALL FreeMem
|
jsr .7
|
||||||
.1 >LDA.G SRC.hFILENAME
|
|
||||||
beq .2
|
ldy #SRC.hFILENAME
|
||||||
>SYSCALL FreeMem
|
jsr .7
|
||||||
.2 >LDA.G SRC.hLineBuf
|
|
||||||
beq .3
|
ldy #SRC.hLineBuf
|
||||||
>SYSCALL FreeMem
|
jsr .7
|
||||||
.3 >LDA.G SRC.hTmpBuf
|
|
||||||
|
ldy #SRC.hTmpBuf
|
||||||
|
|
||||||
|
.7 lda (pData),y
|
||||||
beq .8
|
beq .8
|
||||||
>SYSCALL FreeMem
|
>SYSCALL FreeMem
|
||||||
|
|
||||||
|
@ -424,9 +451,15 @@ T.LI >PSTR "ON"
|
||||||
>PSTR "XOFF"
|
>PSTR "XOFF"
|
||||||
.HS 00
|
.HS 00
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
ASM..T. .AZ ".T."
|
SRC.MOD.RESERVED >PSTR "#/^<>"
|
||||||
|
SRC.EXP.RESERVED >PSTR "^!|&<=>+-*/"
|
||||||
|
SRC.AM.RESERVED >PSTR "[](),"
|
||||||
|
*---------------------------------------
|
||||||
ASM.6502 .AZ "6502"
|
ASM.6502 .AZ "6502"
|
||||||
MSG.HELP .AZ "A2osX-Macro Assembler (S-C MASM 3.0 Based)\r\nUsage : ASM <src file> [type TXT ($04) or S-C/BAS ($FA)]\r\n"
|
MSG.HELP .AS "A2osX-Macro Assembler (S-C MASM 3.0 Based)\r\n"
|
||||||
|
.AS "Usage : ASM <src file> [type TXT ($04) or S-C/BAS ($FA)]\r\n"
|
||||||
|
.AS " -L : Override .LIST (C,M,X)OFF\r\n"
|
||||||
|
.AZ " -T <target file> : Override .TF directive\r\n"
|
||||||
MSG.PASS .AZ "**** Pass:#%d ****"
|
MSG.PASS .AZ "**** Pass:#%d ****"
|
||||||
MSG.SRC.FILE .AZ "**** Reading SRC File:%s"
|
MSG.SRC.FILE .AZ "**** Reading SRC File:%s"
|
||||||
MSG.OBJ.FILE .AZ "**** Writing OBJ File:%s, Type=%02x"
|
MSG.OBJ.FILE .AZ "**** Writing OBJ File:%s, Type=%02x"
|
||||||
|
@ -451,11 +484,8 @@ MSG.PSTR .AS "{%S}"
|
||||||
MSG.CRLF .AZ "\r\n"
|
MSG.CRLF .AZ "\r\n"
|
||||||
MSG.WORD .AZ ">$%H"
|
MSG.WORD .AZ ">$%H"
|
||||||
MSG.ACC .AZ "%b,%d,%h%h%h%h\r\n"
|
MSG.ACC .AZ "%b,%d,%h%h%h%h\r\n"
|
||||||
SRC.MOD.RESERVED >PSTR "#/^<>"
|
|
||||||
SRC.EXP.RESERVED >PSTR "^!|&<=>+-*/"
|
|
||||||
SRC.AM.RESERVED >PSTR "[](),"
|
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
ASM.T.FILENAME .BS 65
|
ASM.CPU.FILE .BS 65
|
||||||
|
|
||||||
FIO.Stat .BS S.STAT
|
FIO.Stat .BS S.STAT
|
||||||
|
|
||||||
|
@ -532,6 +562,7 @@ MAC.hBuf .BS 1
|
||||||
MAC.BufPtr .BS 1
|
MAC.BufPtr .BS 1
|
||||||
MAC.hStk .BS 1
|
MAC.hStk .BS 1
|
||||||
MAC.StkPtr .BS 1
|
MAC.StkPtr .BS 1
|
||||||
|
MAC.hArgBuf .BS 1
|
||||||
MAC.CtxID .BS 1
|
MAC.CtxID .BS 1
|
||||||
MAC.ID .BS 2
|
MAC.ID .BS 2
|
||||||
MAC.Depth .BS 1
|
MAC.Depth .BS 1
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
NEW
|
NEW
|
||||||
PREFIX
|
AUTO 3,1
|
||||||
AUTO 4,1
|
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
T.ADDR.MODES .EQ *
|
T.ADDR.MODES .EQ *
|
||||||
.DA #2,$$"R0"
|
.DA #2,$$"R0"
|
||||||
|
@ -58,6 +57,6 @@ T.REGISTERS .EQ *
|
||||||
.HS 00
|
.HS 00
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/BIN/ASM.T.SW16.A
|
SAVE USR/SRC/BIN/ASM.SW16.A
|
||||||
LOAD USR/SRC/BIN/ASM.T.SW16.S
|
LOAD USR/SRC/BIN/ASM.SW16.S
|
||||||
ASM
|
ASM
|
|
@ -1,6 +1,5 @@
|
||||||
NEW
|
NEW
|
||||||
PREFIX
|
AUTO 3,1
|
||||||
AUTO 4,1
|
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
T.OPCODES .EQ *
|
T.OPCODES .EQ *
|
||||||
ADD .DA ADD.E+1-*
|
ADD .DA ADD.E+1-*
|
||||||
|
@ -337,6 +336,6 @@ SUB.E .HS 00
|
||||||
.HS 0000
|
.HS 0000
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/BIN/ASM.T.SW16.O
|
SAVE USR/SRC/BIN/ASM.SW16.O
|
||||||
LOAD USR/SRC/BIN/ASM.T.SW16.S
|
LOAD USR/SRC/BIN/ASM.SW16.S
|
||||||
ASM
|
ASM
|
16
BIN/ASM.SW16.S.txt
Normal file
16
BIN/ASM.SW16.S.txt
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
NEW
|
||||||
|
AUTO 3,1
|
||||||
|
.LIST OFF
|
||||||
|
.OR $0
|
||||||
|
.TF bin/asm.SW16
|
||||||
|
*---------------------------------------
|
||||||
|
.DA T.ADDR.MODES
|
||||||
|
.DA T.REGISTERS
|
||||||
|
.DA T.OPCODES
|
||||||
|
*---------------------------------------
|
||||||
|
.INB USR/SRC/BIN/ASM.SW16.O
|
||||||
|
.INB USR/SRC/BIN/ASM.SW16.A
|
||||||
|
*---------------------------------------
|
||||||
|
MAN
|
||||||
|
SAVE USR/SRC/BIN/ASM.SW16.S
|
||||||
|
ASM
|
|
@ -1,17 +0,0 @@
|
||||||
NEW
|
|
||||||
PREFIX
|
|
||||||
AUTO 4,1
|
|
||||||
.LIST OFF
|
|
||||||
.OR $0
|
|
||||||
.TF BIN/ASM.T.65816
|
|
||||||
*---------------------------------------
|
|
||||||
.DA T.ADDR.MODES
|
|
||||||
.DA T.REGISTERS
|
|
||||||
.DA T.OPCODES
|
|
||||||
*---------------------------------------
|
|
||||||
.INB USR/SRC/BIN/ASM.T.65816.O
|
|
||||||
.INB USR/SRC/BIN/ASM.T.65816.A
|
|
||||||
*---------------------------------------
|
|
||||||
MAN
|
|
||||||
SAVE USR/SRC/BIN/ASM.T.65816.S
|
|
||||||
ASM
|
|
|
@ -1,17 +0,0 @@
|
||||||
NEW
|
|
||||||
PREFIX
|
|
||||||
AUTO 4,1
|
|
||||||
.LIST OFF
|
|
||||||
.OR $0
|
|
||||||
.TF BIN/ASM.T.65R02
|
|
||||||
*---------------------------------------
|
|
||||||
.DA T.ADDR.MODES
|
|
||||||
.DA T.REGISTERS
|
|
||||||
.DA T.OPCODES
|
|
||||||
*---------------------------------------
|
|
||||||
.INB USR/SRC/BIN/ASM.T.65R02.O
|
|
||||||
.INB USR/SRC/BIN/ASM.T.65R02.A
|
|
||||||
*---------------------------------------
|
|
||||||
MAN
|
|
||||||
SAVE USR/SRC/BIN/ASM.T.65R02.S
|
|
||||||
ASM
|
|
|
@ -1,6 +1,5 @@
|
||||||
NEW
|
NEW
|
||||||
PREFIX
|
AUTO 3,1
|
||||||
AUTO 4,1
|
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
T.ADDR.MODES .EQ *
|
T.ADDR.MODES .EQ *
|
||||||
.DA #6,$$"A,(HL)"
|
.DA #6,$$"A,(HL)"
|
||||||
|
@ -210,6 +209,6 @@ T.REGISTERS .EQ *
|
||||||
.HS 00
|
.HS 00
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/BIN/ASM.T.Z80.A
|
SAVE USR/SRC/BIN/ASM.Z80.A
|
||||||
LOAD USR/SRC/BIN/ASM.T.Z80.S
|
LOAD USR/SRC/BIN/ASM.Z80.S
|
||||||
ASM
|
ASM
|
|
@ -1,6 +1,5 @@
|
||||||
NEW
|
NEW
|
||||||
PREFIX
|
AUTO 3,1
|
||||||
AUTO 4,1
|
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
T.OPCODES .EQ *
|
T.OPCODES .EQ *
|
||||||
ADC .DA ADC.E+1-*
|
ADC .DA ADC.E+1-*
|
||||||
|
@ -1078,6 +1077,6 @@ XOR.E .HS 00
|
||||||
.HS 0000
|
.HS 0000
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/BIN/ASM.T.Z80.O
|
SAVE USR/SRC/BIN/ASM.Z80.O
|
||||||
LOAD USR/SRC/BIN/ASM.T.Z80.S
|
LOAD USR/SRC/BIN/ASM.Z80.S
|
||||||
ASM
|
ASM
|
16
BIN/ASM.Z80.S.txt
Normal file
16
BIN/ASM.Z80.S.txt
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
NEW
|
||||||
|
AUTO 3,1
|
||||||
|
.LIST OFF
|
||||||
|
.OR $0
|
||||||
|
.TF bin/asm.Z80
|
||||||
|
*---------------------------------------
|
||||||
|
.DA T.ADDR.MODES
|
||||||
|
.DA T.REGISTERS
|
||||||
|
.DA T.OPCODES
|
||||||
|
*---------------------------------------
|
||||||
|
.INB USR/SRC/BIN/ASM.Z80.O
|
||||||
|
.INB USR/SRC/BIN/ASM.Z80.A
|
||||||
|
*---------------------------------------
|
||||||
|
MAN
|
||||||
|
SAVE USR/SRC/BIN/ASM.Z80.S
|
||||||
|
ASM
|
|
@ -44,8 +44,8 @@ CSH.Init >SYSCALL SListNew
|
||||||
lda #0
|
lda #0
|
||||||
>STA.G CSH.ConstPtr
|
>STA.G CSH.ConstPtr
|
||||||
>STA.G CSH.StackPtr
|
>STA.G CSH.StackPtr
|
||||||
sta (ZPCSHConst)
|
* sta (ZPCSHConst)
|
||||||
sta (ZPCSHStack)
|
* sta (ZPCSHStack)
|
||||||
|
|
||||||
* >DEC.G bTrace
|
* >DEC.G bTrace
|
||||||
* >DEC.G bDebug
|
* >DEC.G bDebug
|
||||||
|
@ -217,7 +217,8 @@ CSH.DIR.DEFINE jsr CSH.CheckSpace
|
||||||
jsr CSH.IsLetter
|
jsr CSH.IsLetter
|
||||||
bcs .90
|
bcs .90
|
||||||
|
|
||||||
jsr CSH.AddDefine
|
>LDA.G CSH.hDefines
|
||||||
|
jsr CSH.NewKey
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
>STYA ZPVarID
|
>STYA ZPVarID
|
||||||
|
@ -360,13 +361,18 @@ CSH.SIZEOF
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CSH.STRUCT jsr CSH.GetCharNB
|
CSH.STRUCT >ENTER 4
|
||||||
|
|
||||||
|
jsr CSH.GetCharNB
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
>LDA.G CSH.hTags
|
>LDA.G CSH.hTags
|
||||||
jsr CSH.NewKey
|
jsr CSH.NewKey
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
|
sta (pStack)
|
||||||
|
|
||||||
|
|
||||||
jsr CSH.GetNextCharNB
|
jsr CSH.GetNextCharNB
|
||||||
bcs .99
|
bcs .99
|
||||||
cmp #'{'
|
cmp #'{'
|
||||||
|
@ -380,7 +386,8 @@ CSH.STRUCT jsr CSH.GetCharNB
|
||||||
jsr CSH.GetNextCharNB skip }
|
jsr CSH.GetNextCharNB skip }
|
||||||
|
|
||||||
clc
|
clc
|
||||||
.99 rts
|
.99 >LEAVE
|
||||||
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Built in Types
|
* Built in Types
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -725,9 +732,7 @@ CSH.ExpEval ldx ZPPtr1
|
||||||
lda ZPPtr2+1 get OP(n)
|
lda ZPPtr2+1 get OP(n)
|
||||||
pha push OP(n) on stack
|
pha push OP(n) on stack
|
||||||
|
|
||||||
jsr CSH.GetCharNB
|
jmp .10 go check for next token
|
||||||
bcs .90
|
|
||||||
jmp .11 go check for next token
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.80 plx any OP on stack ?
|
.80 plx any OP on stack ?
|
||||||
bmi .88
|
bmi .88
|
||||||
|
@ -930,12 +935,6 @@ CSH.GetNumOnStack
|
||||||
* Input : ZPFileBufPtr
|
* Input : ZPFileBufPtr
|
||||||
* Output : Y,A = VarID
|
* Output : Y,A = VarID
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CSH.AddDefine >LDA.G CSH.hDefines
|
|
||||||
jsr CSH.NewKey
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
.9 rts
|
|
||||||
|
|
||||||
CSH.AddVar >LDA.G CSH.hSymbols
|
CSH.AddVar >LDA.G CSH.hSymbols
|
||||||
jsr CSH.NewKey
|
jsr CSH.NewKey
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
|
@ -1,10 +1,9 @@
|
||||||
NEW
|
NEW
|
||||||
PREFIX
|
AUTO 3,1
|
||||||
AUTO 4,1
|
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
.OP 65C02
|
.OP 65C02
|
||||||
.OR $2000
|
.OR $2000
|
||||||
.TF BIN/MKDIR
|
.TF bin/mkdir
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.INB INC/MACROS.I
|
.INB INC/MACROS.I
|
||||||
.INB INC/A2OSX.I
|
.INB INC/A2OSX.I
|
||||||
|
|
|
@ -28,13 +28,14 @@ CORE.PSCount .EQ $D1
|
||||||
|
|
||||||
pPs .EQ $D2
|
pPs .EQ $D2
|
||||||
pEvent .EQ $D4
|
pEvent .EQ $D4
|
||||||
|
* .EQ $D6
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* PS Context : 40 bytes MAX
|
* PS Context : 40 bytes MAX
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
pCode .EQ $D8
|
pCode .EQ $D8
|
||||||
pData .EQ $DA
|
pData .EQ $DA
|
||||||
pStack .EQ $DC
|
pStack .EQ $DC
|
||||||
pLocal .EQ $DE 8 Bytes
|
pBase .EQ $DE 8 Bytes
|
||||||
|
|
||||||
ZPBIN .EQ $E0 32 bytes
|
ZPBIN .EQ $E0 32 bytes
|
||||||
ZPBIN.SIZE .EQ 32
|
ZPBIN.SIZE .EQ 32
|
||||||
|
|
|
@ -447,6 +447,23 @@ FPU.FOUT .EQ 58 PrintF
|
||||||
cpy #5
|
cpy #5
|
||||||
bne :1
|
bne :1
|
||||||
.EM
|
.EM
|
||||||
|
*--------------------------------------
|
||||||
|
.MA ENTER
|
||||||
|
>PUSHB pBase
|
||||||
|
lda pStack
|
||||||
|
sta pBase
|
||||||
|
sec
|
||||||
|
sbc #]1
|
||||||
|
sta pStack
|
||||||
|
.EM
|
||||||
|
*--------------------------------------
|
||||||
|
.MA LEAVE
|
||||||
|
pha
|
||||||
|
lda pStack
|
||||||
|
sta pBase
|
||||||
|
>PULLB pBase
|
||||||
|
pla
|
||||||
|
.EM
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.MA POP
|
.MA POP
|
||||||
.DO ]1=1
|
.DO ]1=1
|
||||||
|
|
|
@ -107,7 +107,7 @@ Kernel.Init3 sta SETALTZP
|
||||||
sta CORE.PSCount
|
sta CORE.PSCount
|
||||||
>LDYAI K.STACKTOP
|
>LDYAI K.STACKTOP
|
||||||
>STYA pStack
|
>STYA pStack
|
||||||
sta pLocal+1
|
sta pBase+1
|
||||||
|
|
||||||
>PUSHWI FD.NULL
|
>PUSHWI FD.NULL
|
||||||
>PUSHWI FD.NULL.NAME
|
>PUSHWI FD.NULL.NAME
|
||||||
|
|
|
@ -1,13 +1,12 @@
|
||||||
NEW
|
NEW
|
||||||
PREFIX
|
AUTO 3,1
|
||||||
AUTO 4,1
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
Z80.pPs .EQ pPs+0F000H
|
Z80.pPs .EQ pPs+0F000H
|
||||||
|
|
||||||
Z80.pCode .EQ pCode+0F000H
|
Z80.pCode .EQ pCode+0F000H
|
||||||
Z80.pData .EQ pData+0F000H
|
Z80.pData .EQ pData+0F000H
|
||||||
Z80.pStack .EQ pStack+0F000H
|
Z80.pStack .EQ pStack+0F000H
|
||||||
Z80.pLocal .EQ pLocal+0F000H
|
Z80.pBase .EQ pBase+0F000H
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
Z80.6502P.N .EQ %10000000
|
Z80.6502P.N .EQ %10000000
|
||||||
Z80.6502P.V .EQ %01000000
|
Z80.6502P.V .EQ %01000000
|
||||||
|
|
Loading…
Reference in New Issue
Block a user