Kernel 0.94

This commit is contained in:
Rémy GIBERT 2020-02-23 21:01:48 +01:00
parent 111c24d7bc
commit 4badc58f2d
36 changed files with 869 additions and 515 deletions

Binary file not shown.

Binary file not shown.

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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
*--------------------------------------- *---------------------------------------

View File

@ -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

View File

@ -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

View File

@ -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
*--------------------------------------- *---------------------------------------

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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
View 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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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
View 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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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