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