mirror of
https://github.com/A2osX/A2osX.git
synced 2025-04-16 07:37:22 +00:00
Kernel 0.9.1 : ASM rewrite....
This commit is contained in:
parent
b3acfa3030
commit
45474d544c
Binary file not shown.
@ -39,7 +39,7 @@ DIR.BS jsr EXP.Eval
|
||||
|
||||
stz DIR.Byte
|
||||
|
||||
jsr SRC.GetChar
|
||||
jsr SRC.GetNextChar
|
||||
beq .1
|
||||
cmp #' '
|
||||
beq .1
|
||||
@ -134,7 +134,7 @@ DIR.ED clc
|
||||
DIR.EL clc
|
||||
rts
|
||||
*---------------------------------------
|
||||
DIR.EM lda #ERR.INVALID.MACRO.DEF
|
||||
DIR.EM lda #ERR.INV.MACRO.DEF
|
||||
sec
|
||||
rts
|
||||
*---------------------------------------
|
||||
@ -168,7 +168,7 @@ DIR.EP ldy #ASM.PH.ON
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 lda #ERR.INVALID.DIRECTIVE
|
||||
.9 lda #ERR.INV.DIRECTIVE
|
||||
sec
|
||||
rts
|
||||
*---------------------------------------
|
||||
@ -198,22 +198,22 @@ DIR.FI ldy #ASM.DO.Count
|
||||
.1 clc
|
||||
rts
|
||||
|
||||
.99 lda #ERR.INVALID.DIRECTIVE
|
||||
.99 lda #ERR.INV.DIRECTIVE
|
||||
sec
|
||||
rts
|
||||
*---------------------------------------
|
||||
DIR.HS clc
|
||||
rts
|
||||
*---------------------------------------
|
||||
DIR.IN jsr SRC.GetArg
|
||||
DIR.IN jsr SRC.CheckBlank
|
||||
bcs .9
|
||||
|
||||
>LDYA L.SRC.BUFFER
|
||||
>SYSCALL NewStr.YA
|
||||
>LDYA ZPLinePtr
|
||||
>SYSCALL RealPath.YA
|
||||
|
||||
phx
|
||||
|
||||
jsr FIO.OpenFileA
|
||||
jsr FIO.OpenFile
|
||||
plx
|
||||
php
|
||||
pha
|
||||
@ -230,15 +230,14 @@ DIR.IN jsr SRC.GetArg
|
||||
sec
|
||||
rts
|
||||
*---------------------------------------
|
||||
DIR.LI >LDYA L.T.LI
|
||||
DIR.LI jsr SRC.GetNextCharNB
|
||||
beq DIR.LI.9
|
||||
|
||||
>LDYA L.T.LI
|
||||
jsr SRC.GetKeyword
|
||||
bcc .1
|
||||
bcs DIR.LI.9
|
||||
|
||||
lda #ERR.SYNTAX.ERROR
|
||||
sec
|
||||
rts
|
||||
|
||||
.1 jmp (J.LI,x)
|
||||
jmp (J.LI,x)
|
||||
|
||||
DIR.LI.CON ldy #ASM.LI.CON
|
||||
sec
|
||||
@ -261,14 +260,18 @@ DIR.LI.APPLY lsr
|
||||
|
||||
sta (pData),y
|
||||
rts
|
||||
|
||||
DIR.LI.9 lda #ERR.SYNTAX.ERROR
|
||||
sec
|
||||
rts
|
||||
*---------------------------------------
|
||||
DIR.MA jsr SRC.GetArg
|
||||
DIR.MA jsr SRC.CheckBlank Get Macro Name
|
||||
bcs .9
|
||||
|
||||
.1 jsr FIO.ReadLine
|
||||
bcs .99
|
||||
|
||||
lda UsrBuf256
|
||||
lda (ZPLineBuf)
|
||||
beq .1
|
||||
|
||||
cmp #'*' Comment?
|
||||
@ -279,21 +282,21 @@ DIR.MA jsr SRC.GetArg
|
||||
cmp #' ' no label...go scan dir/opcode
|
||||
beq .3
|
||||
|
||||
.2 jsr SRC.GetChar skip label
|
||||
.2 jsr SRC.GetNextChar skip label
|
||||
beq .8
|
||||
cmp #' '
|
||||
bne .2
|
||||
|
||||
.3 jsr SRC.GetCharNB Scan for an Opcode...
|
||||
.3 jsr SRC.GetNextCharNB Scan for an Opcode...
|
||||
beq .8
|
||||
cmp #'.'
|
||||
bne .8
|
||||
|
||||
jsr SRC.GetChar
|
||||
jsr SRC.GetNextChar
|
||||
beq .8
|
||||
cmp #'E'
|
||||
bne .8
|
||||
jsr SRC.GetChar
|
||||
jsr SRC.GetNextChar
|
||||
beq .8
|
||||
cmp #'M'
|
||||
bne .8
|
||||
@ -310,32 +313,25 @@ DIR.MA jsr SRC.GetArg
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 lda #ERR.INVALID.MACRO.DEF
|
||||
.9 lda #ERR.INV.MACRO.DEF
|
||||
sec
|
||||
.99 rts
|
||||
*---------------------------------------
|
||||
DIR.OP jsr SRC.GetArg
|
||||
bcs .9
|
||||
DIR.OP jsr SRC.GetNextCharNB
|
||||
beq DIR.OP.SYNERR
|
||||
|
||||
ldx SRC.Buffer
|
||||
lda ASM.T.FILENAMELEN
|
||||
adc SRC.Buffer
|
||||
sta ASM.T.FILENAME
|
||||
tay
|
||||
|
||||
.1 lda SRC.Buffer,x
|
||||
sta ASM.T.FILENAME,y
|
||||
dey
|
||||
dex
|
||||
bne .1
|
||||
>LDYA ZPLinePtr
|
||||
|
||||
jmp FIO.LOAD.ASM.T
|
||||
|
||||
.9 lda #ERR.SYNTAX.ERROR
|
||||
DIR.OP.SYNERR lda #ERR.SYNTAX.ERROR
|
||||
sec
|
||||
rts
|
||||
*---------------------------------------
|
||||
DIR.OR jsr EXP.Eval
|
||||
DIR.OR jsr SRC.GetNextCharNB
|
||||
beq DIR.OP.SYNERR
|
||||
|
||||
jsr EXP.Eval
|
||||
bcs .9
|
||||
|
||||
ldy #ASM.PC
|
||||
@ -380,7 +376,7 @@ DIR.PH ldy #ASM.PH.ON
|
||||
|
||||
jmp DIR.OR
|
||||
|
||||
.9 lda #ERR.INVALID.DIRECTIVE
|
||||
.9 lda #ERR.INV.DIRECTIVE
|
||||
sec
|
||||
rts
|
||||
*---------------------------------------
|
||||
|
@ -14,7 +14,7 @@ EXP.Eval stz EXP.Operator
|
||||
|
||||
stz EXP.Modifier
|
||||
|
||||
jsr SRC.GetCharNB
|
||||
lda (ZPLinePtr)
|
||||
beq EXP.Eval.Missing
|
||||
|
||||
jsr SRC.IsMODReserved
|
||||
@ -27,7 +27,7 @@ EXP.Eval.Missing lda #ERR.MISSING.EXP
|
||||
sec
|
||||
rts
|
||||
|
||||
EXP.Eval.Next jsr SRC.GetCharUC
|
||||
EXP.Eval.Next jsr SRC.GetNextCharUC
|
||||
beq EXP.Eval.Missing
|
||||
|
||||
EXP.Eval.Next1 cmp #'.' Local Label?
|
||||
@ -56,7 +56,6 @@ EXP.Eval.Next1 cmp #'.' Local Label?
|
||||
.10 jsr SRC.IsDigit10 Decimal constant ?
|
||||
bcs .1
|
||||
|
||||
dec SRC.BufPtr
|
||||
jsr SRC.GetDecimal
|
||||
|
||||
bcs EXP.EvalExitSYN
|
||||
@ -64,6 +63,10 @@ EXP.Eval.Next1 cmp #'.' Local Label?
|
||||
|
||||
.1 cmp #'$' Hex?
|
||||
bne .2
|
||||
>DEBUG
|
||||
|
||||
jsr SRC.GetNextChar
|
||||
beq EXP.EvalExitSYN
|
||||
jsr SRC.GetHex
|
||||
|
||||
bcs EXP.EvalExitSYN
|
||||
@ -87,10 +90,10 @@ EXP.Eval.Next1 cmp #'.' Local Label?
|
||||
|
||||
.4 cmp #'''
|
||||
bne .43
|
||||
jsr SRC.GetChar
|
||||
jsr SRC.GetNextChar
|
||||
beq EXP.EvalExitSYN
|
||||
jsr EXP.SetAccA
|
||||
jsr SRC.GetChar
|
||||
jsr SRC.GetNextChar
|
||||
beq EXP.EvalOperator
|
||||
cmp #'''
|
||||
bne EXP.EvalExitSYN
|
||||
@ -98,11 +101,11 @@ EXP.Eval.Next1 cmp #'.' Local Label?
|
||||
|
||||
.43 cmp '"'
|
||||
bne .42
|
||||
jsr SRC.GetChar
|
||||
jsr SRC.GetNextChar
|
||||
beq EXP.EvalExitSYN
|
||||
ora #$80
|
||||
jsr EXP.SetAccA
|
||||
jsr SRC.GetChar
|
||||
jsr SRC.GetNextChar
|
||||
beq EXP.EvalOperator
|
||||
cmp #'"'
|
||||
bne EXP.EvalExitSYN
|
||||
@ -110,15 +113,12 @@ EXP.Eval.Next1 cmp #'.' Local Label?
|
||||
|
||||
.42 jsr SRC.IsLetter Symbol ?
|
||||
bcs EXP.EvalExitSYN
|
||||
dec SRC.BufPtr
|
||||
|
||||
jsr EXP.GetSymbol
|
||||
bcs EXP.EvalExitRTS
|
||||
bra EXP.EvalOperator
|
||||
|
||||
|
||||
|
||||
EXP.EvalExitOK dec SRC.BufPtr Back One Char
|
||||
EXP.EvalExitOK1 clc
|
||||
EXP.EvalExitOK clc
|
||||
EXP.EvalExitRTS rts
|
||||
|
||||
EXP.EvalExitSYN lda #ERR.SYNTAX.ERROR
|
||||
@ -136,8 +136,8 @@ EXP.EvalOperator lda EXP.Operator
|
||||
jsr EXP.Compute
|
||||
bcs EXP.EvalExitRTS
|
||||
|
||||
.7 jsr SRC.GetChar
|
||||
beq EXP.EvalExitOK1
|
||||
.7 jsr SRC.GetNextChar
|
||||
beq EXP.EvalExitOK
|
||||
|
||||
cmp #' '
|
||||
beq EXP.EvalExitOK
|
||||
|
@ -2,37 +2,55 @@ NEW
|
||||
PREFIX /A2OSX.BUILD
|
||||
AUTO 4,1
|
||||
*---------------------------------------
|
||||
FIO.Init ldy #S.PS.hARGS
|
||||
FIO.Init >LDYA L.ASM.6502
|
||||
FIO.LOAD.ASM.T >STYA ZPPtr2
|
||||
|
||||
ldy #S.PS.hARGS
|
||||
lda (pPS),y
|
||||
>SYSCALL GetMemPtr.A
|
||||
|
||||
>STYA ZPPtr1
|
||||
|
||||
ldy #$ff
|
||||
ldx #$ff
|
||||
|
||||
.2 iny
|
||||
lda (ZPPtr1),y
|
||||
sta ASM.T.FILENAME,y
|
||||
bne .2
|
||||
|
||||
ldx #0
|
||||
|
||||
.3 lda ASM.T.DEFAULT,x
|
||||
sta ASM.T.FILENAME,y
|
||||
beq FIO.LOAD.ASM.T
|
||||
.1 iny
|
||||
inx
|
||||
iny
|
||||
bra .3
|
||||
*---------------------------------------
|
||||
FIO.LOAD.ASM.T ldy #ASM.T.hMem
|
||||
lda (ZPPtr1),y
|
||||
sta ASM.T.FILENAME,x
|
||||
bne .1
|
||||
|
||||
lda #'.'
|
||||
sta ASM.T.FILENAME,x
|
||||
|
||||
inx
|
||||
|
||||
lda #'T'
|
||||
sta ASM.T.FILENAME,x
|
||||
|
||||
inx
|
||||
|
||||
lda #'.'
|
||||
sta ASM.T.FILENAME,x
|
||||
|
||||
ldy #$ff
|
||||
|
||||
.3 iny
|
||||
inx
|
||||
lda (ZPPtr2),y
|
||||
sta ASM.T.FILENAME,x
|
||||
bne .3
|
||||
|
||||
ldy #ASM.T.hMem
|
||||
lda (pData),y
|
||||
beq .1
|
||||
beq .4
|
||||
|
||||
>SYSCALL FreeMem.A
|
||||
ldy #ASM.T.hMem
|
||||
lda #0
|
||||
sta (pData),y
|
||||
|
||||
.1 >PUSHW L.ASM.T.FILENAME
|
||||
.4 >PUSHW L.ASM.T.FILENAME
|
||||
>LDYA L.MSG.T.FILE
|
||||
>SYSCALL PrintF.YA
|
||||
|
||||
@ -49,8 +67,7 @@ FIO.LOAD.ASM.T ldy #ASM.T.hMem
|
||||
|
||||
.9 rts
|
||||
*---------------------------------------
|
||||
FIO.OpenFileA >SYSCALL GetMemPtr.A
|
||||
>STYA ZPPtr1
|
||||
FIO.OpenFile >STYA ZPPtr1
|
||||
|
||||
>PUSHW ZPPtr1
|
||||
>LDYA L.MSG.SRC.FILE
|
||||
@ -121,7 +138,8 @@ FIO.OpenFileA >SYSCALL GetMemPtr.A
|
||||
sec
|
||||
.99 rts
|
||||
*---------------------------------------
|
||||
FIO.ReadLine stz SRC.BufPtr
|
||||
FIO.ReadLine >LDYA ZPLineBuf
|
||||
>STYA ZPLinePtr
|
||||
|
||||
ldy #SRC.COUNT
|
||||
lda (pData),y
|
||||
@ -131,81 +149,94 @@ FIO.ReadLine stz SRC.BufPtr
|
||||
lda (pData),y
|
||||
bmi .10
|
||||
|
||||
>PUSHW ZPLineBuf
|
||||
>PUSHWI 256
|
||||
>PUSHWI UsrBuf256
|
||||
jsr FIO.ReadFromFile
|
||||
bcs .19
|
||||
|
||||
lda #0 replace ending $0D with $00
|
||||
sta UsrBuf256,y
|
||||
sta (ZPLineBuf),y
|
||||
.19 rts
|
||||
|
||||
.10 >PUSHWI 3
|
||||
>PUSHW L.SRC.Buffer
|
||||
*---------------------------------------
|
||||
.10 >PUSHW ZPTmpBuf
|
||||
>PUSHWI 3
|
||||
jsr FIO.ReadFromFile
|
||||
bcs .9
|
||||
bcs .19
|
||||
|
||||
lda SRC.Buffer+1
|
||||
ldy #1
|
||||
lda (ZPTmpBuf),y
|
||||
sta SRC.LINENUM
|
||||
lda SRC.Buffer+2
|
||||
iny
|
||||
lda (ZPTmpBuf),y
|
||||
sta SRC.LINENUM+1
|
||||
|
||||
lda SRC.Buffer LEN
|
||||
lda (ZPTmpBuf) LEN
|
||||
sec
|
||||
sbc #3
|
||||
bcc .9 LEN should be at least 3
|
||||
|
||||
tay
|
||||
>PUSHW ZPTmpBuf
|
||||
lda #0
|
||||
>PUSHYA
|
||||
>PUSHW L.SRC.BUFFER
|
||||
jsr FIO.ReadFromFile
|
||||
bcs .9
|
||||
|
||||
>LDYA ZPTmpBuf
|
||||
>STYA ZPPtr1
|
||||
|
||||
ldy #0
|
||||
ldx #0
|
||||
|
||||
.1 lda SRC.Buffer,y
|
||||
.1 lda (ZPPtr1)
|
||||
inc ZPPtr1
|
||||
bne .11
|
||||
inc ZPPtr1+1
|
||||
|
||||
.11 tax
|
||||
bmi .2
|
||||
|
||||
sta UsrBuf256,x
|
||||
sta (ZPLineBuf),y
|
||||
beq .8 Ending 00
|
||||
inx
|
||||
beq .99
|
||||
|
||||
iny
|
||||
bne .1
|
||||
bra .99
|
||||
|
||||
.2 cmp #$C0 REPEAT char?
|
||||
bne .5
|
||||
iny
|
||||
beq .99
|
||||
lda SRC.Buffer,y
|
||||
iny
|
||||
beq .99
|
||||
.3 pha
|
||||
lda SRC.Buffer,y
|
||||
sta UsrBuf256,x
|
||||
pla
|
||||
inx
|
||||
beq .99
|
||||
dec
|
||||
|
||||
lda (ZPPtr1) Get Repeat Count
|
||||
inc ZPPtr1
|
||||
bne .3
|
||||
inc ZPPtr1+1
|
||||
|
||||
.3 tax
|
||||
|
||||
lda (ZPPtr1) Get Repeat Char
|
||||
inc ZPPtr1
|
||||
bne .3
|
||||
inc ZPPtr1+1
|
||||
|
||||
.4 sta (ZPLineBuf),y
|
||||
|
||||
iny
|
||||
bne .1
|
||||
beq .99
|
||||
dex
|
||||
bne .4
|
||||
|
||||
bra .99
|
||||
|
||||
.5 and #$3F Compute blank count
|
||||
.6 pha
|
||||
tax
|
||||
lda #$20
|
||||
sta UsrBuf256,x
|
||||
pla
|
||||
inx
|
||||
beq .99
|
||||
dec
|
||||
bne .6
|
||||
|
||||
.6 sta (ZPLineBuf),y
|
||||
iny
|
||||
bne .1
|
||||
bra .99
|
||||
beq .99
|
||||
|
||||
dex
|
||||
bne .6
|
||||
bra .1
|
||||
|
||||
.8 clc
|
||||
.9 rts
|
||||
@ -223,8 +254,10 @@ FIO.ReadFromFile ldy #SRC.COUNT
|
||||
>PUSHA
|
||||
>SYSCALL FRead
|
||||
bcs .9
|
||||
|
||||
tax $100 byte transfered ?
|
||||
beq .9
|
||||
|
||||
lda #ERR.LINE.TOO.LONG
|
||||
sec
|
||||
.9 rts
|
||||
|
@ -2,20 +2,17 @@ NEW
|
||||
PREFIX /A2OSX.BUILD
|
||||
AUTO 4,1
|
||||
*---------------------------------------
|
||||
SRC.PrintLine ldy #ASM.MACRO.ON
|
||||
lda (pData),y
|
||||
SRC.PrintLine >LDA.G ASM.MACRO.ON
|
||||
bpl .1
|
||||
|
||||
ldy #ASM.LI.CON
|
||||
lda (pData),y
|
||||
>LDA.G ASM.LI.CON
|
||||
bpl .9
|
||||
bmi .8
|
||||
|
||||
.1 ldy #ASM.LI.ON
|
||||
lda (pData),y
|
||||
bpl .9
|
||||
.1 >LDA.G ASM.LI.ON
|
||||
* bpl .9
|
||||
|
||||
.8 >PUSHWI UsrBuf256
|
||||
.8 >PUSHW ZPLineBuf
|
||||
>PUSHW SRC.LINENUM
|
||||
ldy #ASM.PC+1
|
||||
>PUSHB (pData),y
|
||||
@ -25,49 +22,52 @@ SRC.PrintLine ldy #ASM.MACRO.ON
|
||||
>SYSCALL PrintF.YA
|
||||
.9 rts
|
||||
*---------------------------------------
|
||||
SRC.PrintLineErr ldx #0
|
||||
.1 lda UsrBuf256,x
|
||||
beq .2
|
||||
phx
|
||||
SRC.PrintLineErr >LDYA ZPLineBuf
|
||||
>SYSCALL PrintF.YA
|
||||
bcs .9
|
||||
|
||||
lda #13
|
||||
>SYSCALL PutChar.A
|
||||
plx
|
||||
inx
|
||||
bcc .1
|
||||
rts
|
||||
|
||||
.2 lda #13
|
||||
bcs .9
|
||||
|
||||
lda #10
|
||||
>SYSCALL PutChar.A
|
||||
bcs .9
|
||||
|
||||
ldx #0
|
||||
.3 lda UsrBuf256,x
|
||||
beq .5
|
||||
inx
|
||||
cpx SRC.BufPtr
|
||||
lda ZPLinePtr
|
||||
sec
|
||||
sbc ZPLineBuf
|
||||
tax
|
||||
beq .4
|
||||
phx
|
||||
|
||||
.3 phx
|
||||
lda #'-'
|
||||
>SYSCALL PutChar.A
|
||||
plx
|
||||
bcs .9
|
||||
bra .3
|
||||
dex
|
||||
bne .3
|
||||
|
||||
.4 lda #'^'
|
||||
phx
|
||||
phy
|
||||
>SYSCALL PutChar.A
|
||||
plx
|
||||
ply
|
||||
bcs .9
|
||||
|
||||
.5 lda #13
|
||||
>SYSCALL PutChar.A
|
||||
lda #10
|
||||
>SYSCALL PutChar.A
|
||||
|
||||
.9 rts
|
||||
*---------------------------------------
|
||||
SRC.ParseLine ldx UsrBuf256
|
||||
SRC.ParseLine lda (ZPLineBuf)
|
||||
tax
|
||||
beq .1
|
||||
|
||||
cpx #'*' Comment?
|
||||
cmp #'*' Comment?
|
||||
beq .1
|
||||
cpx #';' Comment?
|
||||
cmp #';' Comment?
|
||||
beq .1
|
||||
|
||||
ldy #ASM.DO.ON
|
||||
@ -91,12 +91,14 @@ SRC.ParseLine ldx UsrBuf256
|
||||
.2 jsr SRC.ParseLine.SymG
|
||||
.3 bcs SRC.ParseLine.Err
|
||||
|
||||
.4 jsr SRC.GetCharNB Scan for an Opcode...
|
||||
.4 jsr SRC.GetNextCharNB Scan for an Opcode...
|
||||
beq SRC.ParseLine.Ok
|
||||
|
||||
cmp #'.'
|
||||
bne .5
|
||||
|
||||
jsr SRC.GetNextChar Skip .
|
||||
|
||||
jsr SRC.ParseLine.Dir
|
||||
bcs SRC.ParseLine.Err
|
||||
bra SRC.ParseLine.Ok
|
||||
@ -108,11 +110,9 @@ SRC.ParseLine ldx UsrBuf256
|
||||
bcs SRC.ParseLine.Err
|
||||
bra SRC.ParseLine.Ok
|
||||
|
||||
.6 dec SRC.BufPtr Back one char...
|
||||
jsr SRC.ParseLine.OpCode
|
||||
.6 jsr SRC.ParseLine.OpCode
|
||||
bcs SRC.ParseLine.Err
|
||||
|
||||
|
||||
SRC.ParseLine.Ok lda SRC.GLabel.New
|
||||
bpl .8
|
||||
|
||||
@ -146,7 +146,7 @@ SRC.ParseLine.Ok lda SRC.GLabel.New
|
||||
.8 clc
|
||||
rts
|
||||
|
||||
SRC.ParseLine.Inv lda #ERR.INVALID.LABEL
|
||||
SRC.ParseLine.Inv lda #ERR.INV.LABEL
|
||||
SRC.ParseLine.Err sec
|
||||
rts
|
||||
|
||||
@ -154,13 +154,13 @@ SRC.ParseLine.Redef lda #ERR.SYMBOL.REDEFINE
|
||||
sec
|
||||
rts
|
||||
*---------------------------------------
|
||||
SRC.ParseLine.SymP jsr SRC.GetChar
|
||||
SRC.ParseLine.SymP jsr SRC.GetNextChar
|
||||
beq SRC.ParseLine.SymE
|
||||
jsr SRC.GetDecimal
|
||||
bcs SRC.ParseLine.SymE
|
||||
jmp SYM.AddPrivate
|
||||
*---------------------------------------
|
||||
SRC.ParseLine.SymL jsr SRC.GetChar
|
||||
SRC.ParseLine.SymL jsr SRC.GetNextChar
|
||||
beq SRC.ParseLine.SymE
|
||||
jsr SRC.GetDecimal
|
||||
bcs SRC.ParseLine.SymE
|
||||
@ -199,7 +199,7 @@ SRC.ParseLine.SymL jsr SRC.GetChar
|
||||
bcc SRC.ParseLine.SymR
|
||||
jmp SYM.AddLToGBlock
|
||||
*---------------------------------------
|
||||
SRC.ParseLine.SymE lda #ERR.INVALID.LABEL
|
||||
SRC.ParseLine.SymE lda #ERR.INV.LABEL
|
||||
sec
|
||||
rts
|
||||
|
||||
@ -238,11 +238,12 @@ SRC.ParseLine.SymG >LDYA L.SRC.GLabel.Len
|
||||
*---------------------------------------
|
||||
SRC.ParseLine.Dir >LDYA L.T.DIRECTIVES
|
||||
jsr SRC.GetKeyword
|
||||
|
||||
bcs .9
|
||||
|
||||
jmp (J.DIRECTIVES,x)
|
||||
|
||||
.9 lda #ERR.INVALID.DIRECTIVE
|
||||
.9 lda #ERR.INV.DIRECTIVE
|
||||
sec
|
||||
rts
|
||||
*---------------------------------------
|
||||
@ -255,7 +256,7 @@ SRC.ParseLine.Add.Macro
|
||||
rts
|
||||
*---------------------------------------
|
||||
SRC.ParseLine.OpCode
|
||||
jsr SRC.GetArg
|
||||
jsr SRC.CheckBlank
|
||||
bcc .11
|
||||
rts
|
||||
|
||||
@ -264,7 +265,7 @@ SRC.ParseLine.OpCode
|
||||
>SYSCALL GetMemPtr.A
|
||||
>STYA ZPPtr1
|
||||
|
||||
ldy #ASM.T.O setup Ptr to Opcodes
|
||||
ldy #ASM.T.O setup Ptr2 to Opcodes
|
||||
lda (ZPPtr1),y
|
||||
clc
|
||||
adc ZPPtr1
|
||||
@ -274,7 +275,7 @@ SRC.ParseLine.OpCode
|
||||
adc ZPPtr1+1
|
||||
sta ZPPtr2+1
|
||||
|
||||
ldy #ASM.T.R setup Ptr to Registers
|
||||
ldy #ASM.T.R setup Ptr3 to Registers
|
||||
lda (ZPPtr1),y
|
||||
clc
|
||||
adc ZPPtr1
|
||||
@ -285,20 +286,20 @@ SRC.ParseLine.OpCode
|
||||
sta ZPPtr3+1
|
||||
|
||||
|
||||
.10 lda (ZPPtr2)
|
||||
ldy #1
|
||||
ora (ZPPtr2),y
|
||||
.10 lda (ZPPtr2) End Of OpCode List
|
||||
beq .9
|
||||
|
||||
ldx #$FF
|
||||
lda (ZPPtr2) Opcode Len
|
||||
tax
|
||||
|
||||
.1 inx
|
||||
lda SRC.Buffer,x
|
||||
ldy #0
|
||||
|
||||
.1 lda (ZPLinePtr),y
|
||||
iny
|
||||
cmp (ZPPtr2),y
|
||||
bne .7
|
||||
|
||||
cpx SRC.Buffer
|
||||
dex
|
||||
bne .1
|
||||
|
||||
jsr SRC.ParseLine.AM
|
||||
@ -355,14 +356,14 @@ SRC.ParseLine.OpCode
|
||||
sta ZPPtr2+1
|
||||
bra .10
|
||||
|
||||
.9 lda #ERR.INVALID.OPCODE
|
||||
.9 lda #ERR.INV.OPCODE
|
||||
sec
|
||||
.99 rts
|
||||
*---------------------------------------
|
||||
SRC.ParseLine.AM stz SRC.AM.ID
|
||||
stz SRC.AM.StrBuf
|
||||
|
||||
.1 jsr SRC.GetCharUC any arg immediately after ' '?
|
||||
.1 jsr SRC.GetNextCharUC any arg immediately after ' '?
|
||||
beq .8 no, AM.ID=0 (implied)
|
||||
|
||||
cmp #' ' another space ?
|
||||
@ -390,25 +391,25 @@ SRC.ParseLine.AM stz SRC.AM.ID
|
||||
.21 jsr SRC.IsLetter Any register?
|
||||
bcs .70 no, try something else
|
||||
|
||||
ldx SRC.BufPtr
|
||||
stx SRC.BufPtrSave
|
||||
ldx ZPLinePtr
|
||||
stx SRC.LinePtrSave
|
||||
ldx ZPLinePtr+1
|
||||
stx SRC.LinePtrSave+1
|
||||
|
||||
stz SRC.AM.tmpBuf
|
||||
sta SRC.AM.tmpBuf+1
|
||||
inc SRC.AM.tmpBuf
|
||||
|
||||
.3 jsr SRC.GetCharUC
|
||||
beq .41
|
||||
.3 jsr SRC.GetNextCharUC
|
||||
beq .4
|
||||
jsr SRC.IsLetterOrDigit
|
||||
bcs .4
|
||||
inc SRC.AM.tmpBuf
|
||||
ldx SRC.AM.tmpBuf
|
||||
sta SRC.AM.tmpBuf,x
|
||||
bra .3
|
||||
|
||||
.4 dec SRC.BufPtr back one char
|
||||
|
||||
.41 ldy #0
|
||||
.4 ldy #0
|
||||
|
||||
.5 lda (ZPPtr3),y
|
||||
beq .71 last register ?
|
||||
@ -447,12 +448,13 @@ SRC.ParseLine.AM stz SRC.AM.ID
|
||||
tay
|
||||
bra .5
|
||||
|
||||
.71 lda SRC.BufPtrSave Does not match a register,restore Ptr
|
||||
sta SRC.BufPtr
|
||||
|
||||
.70 dec SRC.BufPtr back one char
|
||||
|
||||
jsr EXP.Eval
|
||||
.71 ldx SRC.LinePtrSave Does not match a register,restore Ptr
|
||||
stx ZPLinePtr
|
||||
stx SRC.LinePtrSave+1
|
||||
stx ZPLinePtr+1
|
||||
|
||||
|
||||
.70 jsr EXP.Eval
|
||||
|
||||
bcs .99
|
||||
|
||||
@ -475,7 +477,7 @@ SRC.ParseLine.AM stz SRC.AM.ID
|
||||
|
||||
|
||||
|
||||
.9 lda #ERR.INVALID.AM.SYN
|
||||
.9 lda #ERR.INV.AM.SYN
|
||||
sec
|
||||
.99 rts
|
||||
*---------------------------------------
|
||||
@ -483,23 +485,30 @@ SRC.GetDecimal stz SRC.ACC+1
|
||||
stz SRC.ACC+2
|
||||
stz SRC.ACC+3
|
||||
|
||||
jsr SRC.GetChar
|
||||
lda (ZPLinePtr)
|
||||
beq .99
|
||||
|
||||
jsr SRC.IsDigit10
|
||||
bcs .99
|
||||
|
||||
and #$0F
|
||||
sta SRC.ACC
|
||||
|
||||
.1 jsr SRC.GetChar
|
||||
.1 jsr SRC.GetNextChar
|
||||
beq .8
|
||||
|
||||
cmp #' '
|
||||
beq .88
|
||||
beq .8
|
||||
|
||||
jsr SRC.IsEXPReserved
|
||||
bcc .88
|
||||
bcc .8
|
||||
|
||||
jsr SRC.IsAMReserved
|
||||
bcc .88
|
||||
bcc .8
|
||||
|
||||
jsr SRC.IsDigit10
|
||||
bcs .99
|
||||
bcs .9
|
||||
|
||||
and #$0F
|
||||
|
||||
pha
|
||||
@ -522,7 +531,6 @@ SRC.GetDecimal stz SRC.ACC+1
|
||||
sec
|
||||
rts
|
||||
|
||||
.88 dec SRC.BufPtr Back One Char
|
||||
.8 clc
|
||||
rts
|
||||
|
||||
@ -534,21 +542,21 @@ SRC.GetHex stz SRC.ACC+1
|
||||
stz SRC.ACC+2
|
||||
stz SRC.ACC+3
|
||||
|
||||
jsr SRC.GetChar
|
||||
lda (ZPLinePtr)
|
||||
beq .99
|
||||
jsr SRC.IsDigit16
|
||||
bcs .99
|
||||
|
||||
sta SRC.ACC
|
||||
|
||||
.1 jsr SRC.GetChar
|
||||
.1 jsr SRC.GetNextChar
|
||||
beq .8
|
||||
cmp #' '
|
||||
beq .88
|
||||
beq .8
|
||||
jsr SRC.IsEXPReserved
|
||||
bcc .88
|
||||
bcc .8
|
||||
jsr SRC.IsAMReserved
|
||||
bcc .88
|
||||
bcc .8
|
||||
jsr SRC.IsDigit16
|
||||
bcs .99
|
||||
|
||||
@ -564,7 +572,6 @@ SRC.GetHex stz SRC.ACC+1
|
||||
sta SRC.ACC
|
||||
bra .1
|
||||
|
||||
.88 dec SRC.BufPtr Back One Char
|
||||
.8 clc
|
||||
rts
|
||||
|
||||
@ -580,23 +587,29 @@ SRC.GetOctal stz SRC.ACC+1
|
||||
stz SRC.ACC+2
|
||||
stz SRC.ACC+3
|
||||
|
||||
jsr SRC.GetChar
|
||||
lda (ZPLinePtr)
|
||||
beq .99
|
||||
|
||||
jsr SRC.IsDigit8
|
||||
bcs .99
|
||||
|
||||
and #$0F
|
||||
sta SRC.ACC
|
||||
|
||||
.1 jsr SRC.GetChar
|
||||
.1 jsr SRC.GetNextChar
|
||||
beq .8
|
||||
|
||||
cmp #' '
|
||||
beq .88
|
||||
beq .8
|
||||
|
||||
jsr SRC.IsEXPReserved
|
||||
bcc .88
|
||||
bcc .8
|
||||
|
||||
jsr SRC.IsAMReserved
|
||||
bcc .88
|
||||
bcc .8
|
||||
|
||||
jsr SRC.IsDigit8
|
||||
bcs .99
|
||||
bcs .9
|
||||
|
||||
asl
|
||||
asl
|
||||
@ -615,7 +628,6 @@ SRC.GetOctal stz SRC.ACC+1
|
||||
bne .2
|
||||
bra .1
|
||||
|
||||
.88 dec SRC.BufPtr Back One Char
|
||||
.8 clc
|
||||
rts
|
||||
|
||||
@ -631,25 +643,33 @@ SRC.GetBinary stz SRC.ACC+1
|
||||
stz SRC.ACC+2
|
||||
stz SRC.ACC+3
|
||||
|
||||
jsr SRC.GetChar
|
||||
lda (ZPLinePtr)
|
||||
beq .99
|
||||
|
||||
cmp #'1'
|
||||
beq .10
|
||||
|
||||
cmp #'0'
|
||||
bne .99
|
||||
|
||||
.10 and #$01
|
||||
sta SRC.ACC
|
||||
|
||||
.1 jsr SRC.GetChar
|
||||
.1 jsr SRC.GetNextChar
|
||||
beq .8
|
||||
|
||||
cmp #' '
|
||||
beq .88
|
||||
beq .8
|
||||
|
||||
jsr SRC.IsEXPReserved
|
||||
bcc .88
|
||||
bcc .8
|
||||
|
||||
jsr SRC.IsAMReserved
|
||||
bcc .88
|
||||
bcc .8
|
||||
|
||||
cmp #'1'
|
||||
beq .11
|
||||
|
||||
cmp #'0'
|
||||
bne .8
|
||||
|
||||
@ -662,7 +682,6 @@ SRC.GetBinary stz SRC.ACC+1
|
||||
bcs .9
|
||||
bra .1
|
||||
|
||||
.88 dec SRC.BufPtr Back One Char
|
||||
.8 clc
|
||||
rts
|
||||
|
||||
@ -676,7 +695,7 @@ SRC.GetBinary stz SRC.ACC+1
|
||||
*---------------------------------------
|
||||
SRC.GetLabel >STYA ZPPtr1
|
||||
|
||||
jsr SRC.GetCharUC
|
||||
lda (ZPLinePtr)
|
||||
beq .9
|
||||
|
||||
jsr SRC.IsLetter
|
||||
@ -685,7 +704,7 @@ SRC.GetLabel >STYA ZPPtr1
|
||||
ldy #1
|
||||
sta (ZPPtr1),y
|
||||
|
||||
.1 jsr SRC.GetCharUC
|
||||
.1 jsr SRC.GetNextCharUC
|
||||
beq .8
|
||||
|
||||
jsr SRC.IsLetterOrDigit
|
||||
@ -697,12 +716,12 @@ SRC.GetLabel >STYA ZPPtr1
|
||||
beq .2
|
||||
|
||||
cmp #' '
|
||||
beq .88
|
||||
beq .8
|
||||
jsr SRC.IsEXPReserved
|
||||
bcc .88
|
||||
bcc .8
|
||||
jsr SRC.IsAMReserved
|
||||
bcc .88
|
||||
|
||||
bcc .8
|
||||
|
||||
.9 lda #ERR.SYNTAX.ERROR
|
||||
sec
|
||||
rts
|
||||
@ -711,73 +730,62 @@ SRC.GetLabel >STYA ZPPtr1
|
||||
sta (ZPPtr1),y
|
||||
cpy #SRC.GLABEL.MAXLEN
|
||||
bcc .1 if equ Carry is set
|
||||
|
||||
.88 dec SRC.BufPtr Back One Char
|
||||
|
||||
.8 tya
|
||||
sta (ZPPtr1)
|
||||
clc
|
||||
rts
|
||||
*---------------------------------------
|
||||
SRC.GetKeyword >STYA ZPPtr1
|
||||
SRC.GetKeyword >STYA ZPPtr1 KeyWord table
|
||||
|
||||
jsr SRC.GetArg
|
||||
bcs .9
|
||||
|
||||
stz SRC.Keyword.ID
|
||||
|
||||
ldy #0
|
||||
.1 lda (ZPPtr1)
|
||||
beq .9 End Of table
|
||||
|
||||
.3 lda (ZPPtr1),y
|
||||
beq .9
|
||||
cmp SRC.Buffer
|
||||
bne .6
|
||||
phy
|
||||
tax KW len
|
||||
|
||||
ldx #0
|
||||
.4 iny
|
||||
inx
|
||||
lda (ZPPtr1),y
|
||||
cmp SRC.Buffer,x
|
||||
bne .5
|
||||
cpx SRC.Buffer
|
||||
bne .4
|
||||
.2 ldy #0
|
||||
|
||||
ply
|
||||
.3 lda (ZPLinePtr),y
|
||||
beq .5
|
||||
jsr SRC.IsLetter
|
||||
bcs .5
|
||||
|
||||
ldx SRC.Keyword.ID
|
||||
clc
|
||||
rts
|
||||
|
||||
.5 ply
|
||||
|
||||
.6 tya
|
||||
sec Add keyword Len+1
|
||||
adc (ZPPtr1),y
|
||||
tay
|
||||
inc SRC.Keyword.ID
|
||||
inc SRC.Keyword.ID
|
||||
bra .3
|
||||
|
||||
.9 sec
|
||||
rts
|
||||
*---------------------------------------
|
||||
SRC.GetArg jsr SRC.GetCharUC
|
||||
beq .9
|
||||
|
||||
sta SRC.Buffer+1
|
||||
ldy #1
|
||||
|
||||
.1 jsr SRC.GetCharUC
|
||||
beq .2
|
||||
cmp #' '
|
||||
beq .2
|
||||
iny
|
||||
sta SRC.Buffer,y
|
||||
bra .1
|
||||
cmp (ZPPtr1),y
|
||||
bne .5
|
||||
|
||||
.2 sty SRC.Buffer
|
||||
dex
|
||||
bne .3
|
||||
|
||||
lda (ZPLinePtr),y All chars match...
|
||||
beq .4 End of Line ?
|
||||
|
||||
jsr SRC.IsLetter
|
||||
bcc .5 Additional letters...
|
||||
|
||||
.4 lda ZPLinePtr
|
||||
clc
|
||||
adc (ZPPtr1)
|
||||
sta ZPLinePtr
|
||||
bcc .41
|
||||
inc ZPLinePtr+1
|
||||
.41 ldx SRC.Keyword.ID
|
||||
clc
|
||||
rts
|
||||
|
||||
.5 lda (ZPPtr1)
|
||||
sec Add keyword Len+1
|
||||
adc ZPPtr1
|
||||
sta ZPPtr1
|
||||
bcc .6
|
||||
|
||||
inc ZPPtr1+1
|
||||
|
||||
.6 inc SRC.Keyword.ID
|
||||
inc SRC.Keyword.ID
|
||||
bra .1
|
||||
|
||||
.9 sec
|
||||
rts
|
||||
@ -860,13 +868,29 @@ SRC.IsDigit8 cmp #'0'
|
||||
.9 sec
|
||||
rts
|
||||
*---------------------------------------
|
||||
SRC.GetCharNB jsr SRC.GetCharUC
|
||||
SRC.CheckBlank lda (ZPLinePtr)
|
||||
beq .9
|
||||
cmp #' '
|
||||
beq SRC.GetCharNB
|
||||
bne .9
|
||||
|
||||
.1 jsr SRC.GetNextChar
|
||||
beq .9
|
||||
|
||||
cmp #' '
|
||||
beq .1
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 sec
|
||||
rts
|
||||
*---------------------------------------
|
||||
SRC.GetNextCharNB jsr SRC.GetNextCharUC
|
||||
beq .9
|
||||
cmp #' '
|
||||
beq SRC.GetNextCharNB
|
||||
.9 rts
|
||||
*---------------------------------------
|
||||
SRC.GetCharUC jsr SRC.GetChar
|
||||
SRC.GetNextCharUC jsr SRC.GetNextChar
|
||||
beq .9
|
||||
cmp #'a'
|
||||
bcc .9
|
||||
@ -875,10 +899,24 @@ SRC.GetCharUC jsr SRC.GetChar
|
||||
eor #$20 to Uppercase
|
||||
.9 rts
|
||||
*---------------------------------------
|
||||
SRC.GetChar ldx SRC.BufPtr
|
||||
lda UsrBuf256,x
|
||||
SRC.GetCharUC lda (ZPLinePtr)
|
||||
beq .9
|
||||
inc SRC.BufPtr if 255, will make Z
|
||||
cmp #'a'
|
||||
bcc .9
|
||||
cmp #'z'+1
|
||||
bcs .9
|
||||
eor #$20 to Uppercase
|
||||
.9 rts
|
||||
*---------------------------------------
|
||||
SRC.GetNextChar lda (ZPLinePtr)
|
||||
beq .9
|
||||
|
||||
inc ZPLinePtr
|
||||
bne .1
|
||||
|
||||
inc ZPLinePtr+1
|
||||
|
||||
.1 lda (ZPLinePtr)
|
||||
.9 rts
|
||||
*---------------------------------------
|
||||
SRC.ACC10 lda SRC.ACC ACC*2-> ACC & ACCTMP
|
||||
@ -922,7 +960,6 @@ SRC.ACC10 lda SRC.ACC ACC*2-> ACC & ACCTMP
|
||||
sta SRC.ACC+3 CS if overflow
|
||||
|
||||
.9 rts
|
||||
|
||||
*---------------------------------------
|
||||
MAN
|
||||
SAVE /A2OSX.BUILD/BIN/DEV/ASM.S.SRC
|
||||
|
216
BIN/ASM.S.txt
216
BIN/ASM.S.txt
@ -12,8 +12,11 @@ AUTO 4,1
|
||||
ZPPtr1 .EQ ZPBIN
|
||||
ZPPtr2 .EQ ZPBIN+2
|
||||
ZPPtr3 .EQ ZPBIN+4
|
||||
ZPBlockPtr .EQ ZPBIN+6
|
||||
ZPSymbolPtr .EQ ZPBIN+8
|
||||
ZPLineBuf .EQ ZPBIN+6
|
||||
ZPLinePtr .EQ ZPBIN+8
|
||||
ZPBlockPtr .EQ ZPBIN+10
|
||||
ZPSymbolPtr .EQ ZPBIN+12
|
||||
ZPTmpBuf .EQ ZPBIN+14
|
||||
*---------------------------------------
|
||||
ASM.T.AM .EQ 0
|
||||
ASM.T.R .EQ 2
|
||||
@ -37,18 +40,18 @@ ERR.SYNTAX.ERROR .EQ $A0
|
||||
ERR.SYM.TOO.LONG .EQ $A1
|
||||
ERR.VAL.TOO.BIG .EQ $A2
|
||||
ERR.LINE.TOO.LONG .EQ $A3
|
||||
ERR.INVALID.LABEL .EQ $A4
|
||||
ERR.INVALID.DIRECTIVE .EQ $A5
|
||||
ERR.INVALID.OPCODE .EQ $A6
|
||||
ERR.INVALID.AM.SYN .EQ $A7
|
||||
ERR.INVALID.AM.4.OC .EQ $A8
|
||||
ERR.INV.LABEL .EQ $A4
|
||||
ERR.INV.DIRECTIVE .EQ $A5
|
||||
ERR.INV.OPCODE .EQ $A6
|
||||
ERR.INV.AM.SYN .EQ $A7
|
||||
ERR.INV.AM.4.OC .EQ $A8
|
||||
ERR.RANGE .EQ $A9
|
||||
ERR.UNDEF.SYMBOL .EQ $AA
|
||||
ERR.SYMBOL.REDEFINE .EQ $AB
|
||||
ERR.TOO.MANY.DO .EQ $AC
|
||||
ERR.MISSING.EXP .EQ $B0
|
||||
ERR.EXP.SYN.ERROR .EQ $B1
|
||||
ERR.INVALID.MACRO.DEF .EQ $E0
|
||||
ERR.INV.MACRO.DEF .EQ $E0
|
||||
*--------------------------------------
|
||||
* File Header (16 Bytes)
|
||||
*--------------------------------------
|
||||
@ -59,8 +62,8 @@ CS.START cld
|
||||
.DA 0
|
||||
.DA CS.END-CS.START CS
|
||||
.DA DS.END-DS.START DS
|
||||
.DA #128 SS
|
||||
.DA #10 ZP
|
||||
.DA #0 SS
|
||||
.DA #16 ZP
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
* Relocation Table
|
||||
@ -85,7 +88,7 @@ L.SRC.GLabel.Flags .DA SRC.GLabel.Flags
|
||||
L.SRC.GLabel.Len .DA SRC.GLabel.Len
|
||||
L.SRC.ELabel.Flags .DA SRC.ELabel.Flags
|
||||
L.SRC.ELabel.Len .DA SRC.ELabel.Len
|
||||
L.SRC.BUFFER .DA SRC.BUFFER
|
||||
L.ASM.6502 .DA ASM.6502
|
||||
L.ASM.T.FILENAME .DA ASM.T.FILENAME
|
||||
L.FIO.Stat .DA FIO.Stat
|
||||
L.T.DIRECTIVES .DA T.DIRECTIVES
|
||||
@ -161,7 +164,6 @@ CS.INIT ldy #S.PS.ARGC
|
||||
ldy #SRC.hFILENAME
|
||||
sta (pData),y
|
||||
|
||||
|
||||
jsr FIO.Init
|
||||
bcs .9
|
||||
|
||||
@ -170,6 +172,20 @@ CS.INIT ldy #S.PS.ARGC
|
||||
|
||||
jsr DIR.Init
|
||||
|
||||
>LDYAI 256
|
||||
>SYSCALL GetMem.YA
|
||||
bcs .9
|
||||
>STYA ZPLineBuf
|
||||
txa
|
||||
>STA.G SRC.hLineBuf
|
||||
|
||||
>LDYAI 256
|
||||
>SYSCALL GetMem.YA
|
||||
bcs .9
|
||||
>STYA ZPTmpBuf
|
||||
txa
|
||||
>STA.G SRC.hTmpBuf
|
||||
|
||||
* lda (pPs)
|
||||
* ora #S.PS.F.EVENT
|
||||
* sta (pPs)
|
||||
@ -211,12 +227,12 @@ CS.RUN >SYSCALL GetChar
|
||||
ldy #SRC.hFILENAME
|
||||
lda (pData),y
|
||||
|
||||
jsr FIO.OpenFileA
|
||||
>SYSCALL GetMemPtr.A
|
||||
|
||||
jsr FIO.OpenFile
|
||||
bcs .99
|
||||
|
||||
.10 stz UsrBuf256
|
||||
>DEBUG
|
||||
jsr FIO.ReadLine
|
||||
.10 jsr FIO.ReadLine
|
||||
bcc .2
|
||||
cmp #$4C End Of File?
|
||||
bne .9
|
||||
@ -273,13 +289,22 @@ CS.QUIT jsr FIO.FileClose
|
||||
|
||||
jsr SYM.Quit
|
||||
|
||||
ldy #ASM.T.hMem
|
||||
lda (pData),y
|
||||
>LDA.G ASM.T.hMem
|
||||
beq .1
|
||||
|
||||
>SYSCALL FreeMem.A
|
||||
|
||||
.1 ldy #SRC.hFILENAME
|
||||
lda (pData),y
|
||||
.1 >LDA.G SRC.hFILENAME
|
||||
beq .2
|
||||
|
||||
>SYSCALL FreeMem.A
|
||||
|
||||
.2 >LDA.G SRC.hLineBuf
|
||||
beq .3
|
||||
|
||||
>SYSCALL FreeMem.A
|
||||
|
||||
.3 >LDA.G SRC.hTmpBuf
|
||||
beq .8
|
||||
|
||||
>SYSCALL FreeMem.A
|
||||
@ -294,101 +319,54 @@ CS.QUIT jsr FIO.FileClose
|
||||
.INB /A2OSX.BUILD/BIN/DEV/ASM.S.SYM
|
||||
*---------------------------------------
|
||||
CS.END
|
||||
SRC.DIR.MAXLEN .EQ 5
|
||||
T.DIRECTIVES .HS 02
|
||||
.AS "AC"
|
||||
.HS 02
|
||||
.AS "AS"
|
||||
.HS 02
|
||||
.AS "AT"
|
||||
.HS 02
|
||||
.AS "AZ"
|
||||
.HS 02
|
||||
.AS "BS"
|
||||
.HS 02
|
||||
.AS "DA"
|
||||
.HS 02
|
||||
.AS "DO"
|
||||
.HS 02
|
||||
.AS "DU"
|
||||
.HS 05
|
||||
.AS "DUMMY"
|
||||
.HS 02
|
||||
.AS "ED"
|
||||
.HS 04
|
||||
.AS "ELSE"
|
||||
.HS 02
|
||||
.AS "EM"
|
||||
.HS 02
|
||||
.AS "EN"
|
||||
.HS 02
|
||||
.AS "EP"
|
||||
.HS 02
|
||||
.AS "EQ"
|
||||
.HS 03
|
||||
.AS "FIN"
|
||||
.HS 02
|
||||
.AS "HS"
|
||||
.HS 02
|
||||
.AS "IN"
|
||||
.HS 03
|
||||
.AS "INB"
|
||||
.HS 04
|
||||
.AS "INB1"
|
||||
.HS 04
|
||||
.AS "INB2"
|
||||
.HS 04
|
||||
.AS "INB3"
|
||||
.HS 04
|
||||
.AS "INB4"
|
||||
.HS 04
|
||||
.AS "INB5"
|
||||
.HS 04
|
||||
.AS "INB6"
|
||||
.HS 04
|
||||
.AS "INB7"
|
||||
.HS 04
|
||||
.AS "INB8"
|
||||
.HS 04
|
||||
.AS "INB9"
|
||||
.HS 02
|
||||
.AS "LI"
|
||||
.HS 04
|
||||
.AS "LIST"
|
||||
.HS 02
|
||||
.AS "MA"
|
||||
.HS 02
|
||||
.AS "OP"
|
||||
.HS 02
|
||||
.AS "OR"
|
||||
.HS 02
|
||||
.AS "PG"
|
||||
.HS 02
|
||||
.AS "PH"
|
||||
.HS 02
|
||||
.AS "SE"
|
||||
.HS 02
|
||||
.AS "TA"
|
||||
.HS 02
|
||||
.AS "TF"
|
||||
.HS 02
|
||||
.AS "TI"
|
||||
.HS 02
|
||||
.AS "US"
|
||||
T.DIRECTIVES >PSTR "AC"
|
||||
>PSTR "AS"
|
||||
>PSTR "AT"
|
||||
>PSTR "AZ"
|
||||
>PSTR "BS"
|
||||
>PSTR "DA"
|
||||
>PSTR "DO"
|
||||
>PSTR "DU"
|
||||
>PSTR "DUMMY"
|
||||
>PSTR "ED"
|
||||
>PSTR "ELSE"
|
||||
>PSTR "EM"
|
||||
>PSTR "EN"
|
||||
>PSTR "EP"
|
||||
>PSTR "EQ"
|
||||
>PSTR "FIN"
|
||||
>PSTR "HS"
|
||||
>PSTR "IN"
|
||||
>PSTR "INB"
|
||||
>PSTR "INB1"
|
||||
>PSTR "INB2"
|
||||
>PSTR "INB3"
|
||||
>PSTR "INB4"
|
||||
>PSTR "INB5"
|
||||
>PSTR "INB6"
|
||||
>PSTR "INB7"
|
||||
>PSTR "INB8"
|
||||
>PSTR "INB9"
|
||||
>PSTR "LI"
|
||||
>PSTR "LIST"
|
||||
>PSTR "MA"
|
||||
>PSTR "OP"
|
||||
>PSTR "OR"
|
||||
>PSTR "PG"
|
||||
>PSTR "PH"
|
||||
>PSTR "SE"
|
||||
>PSTR "TA"
|
||||
>PSTR "TF"
|
||||
>PSTR "TI"
|
||||
>PSTR "US"
|
||||
.HS 00
|
||||
*---------------------------------------
|
||||
T.LI .HS 03
|
||||
.AS "CON"
|
||||
.HS 04
|
||||
.AS "COFF"
|
||||
.HS 03
|
||||
.AS "XON"
|
||||
.HS 04
|
||||
.AS "XOFF"
|
||||
.HS 02
|
||||
.AS "ON"
|
||||
.HS 03
|
||||
.AS "OFF"
|
||||
T.LI >PSTR "CON"
|
||||
>PSTR "COFF"
|
||||
>PSTR "XON"
|
||||
>PSTR "XOFF"
|
||||
>PSTR "ON"
|
||||
>PSTR "OFF"
|
||||
.HS 00
|
||||
*---------------------------------------
|
||||
MSG.HELP >CSTR "A2osX-Macro Assembler (S-C MASM 3.0 Based)\r\nUsage : ASM <src file> [type TXT ($04) or S-C/BAS ($FA)]\r\n"
|
||||
@ -405,8 +383,8 @@ MSG.SUMMARY >CSTR "\r\nEnd Of Assembly.\r\n"
|
||||
SRC.AM.RESERVED >PSTR "[](),"
|
||||
SRC.MOD.RESERVED >PSTR "#/<>"
|
||||
SRC.EXP.RESERVED >PSTR "^!|&<=>+-*/"
|
||||
ASM.T.DEFAULT >CSTR ".T.6502"
|
||||
ASM.T.FILENAMELEN .BS 1
|
||||
ASM.6502 >CSTR "6502"
|
||||
*---------------------------------------
|
||||
ASM.T.FILENAME .BS 65
|
||||
|
||||
FIO.Stat .BS S.STAT
|
||||
@ -418,6 +396,7 @@ SYM.iCurGBlock.Save .BS 1
|
||||
SYM.pCurGBlock.Save .BS 1
|
||||
|
||||
SRC.LINENUM .BS 2
|
||||
SRC.LinePtrSave .BS 2
|
||||
SRC.Directive.ID .BS 1
|
||||
SRC.Keyword.ID .BS 1
|
||||
SRC.ACC .BS 4
|
||||
@ -426,10 +405,6 @@ SRC.ARG .BS 4
|
||||
SRC.AM.ID .BS 1
|
||||
SRC.AM.StrBuf .BS 32
|
||||
SRC.AM.tmpBuf .BS 32
|
||||
SRC.Exp .BS 128
|
||||
SRC.BufPtr .BS 1
|
||||
SRC.BufPtrSave .BS 1
|
||||
SRC.Buffer .BS 256
|
||||
SRC.GLabel.New .BS 1
|
||||
SRC.GLabel.Flags .BS 1
|
||||
SRC.GLabel.Value .BS 4
|
||||
@ -445,7 +420,6 @@ SRC.FLabel.Flags .BS 1
|
||||
SRC.FLabel.Value .BS 4
|
||||
SRC.FLabel.Len .BS 1
|
||||
SRC.FLabel.Name .BS SRC.GLABEL.MAXLEN
|
||||
UsrBuf256 .BS 256
|
||||
*--------------------------------------
|
||||
.DUMMY
|
||||
.OR 0
|
||||
@ -453,6 +427,8 @@ DS.START
|
||||
bPause .BS 1
|
||||
|
||||
SRC.hFILENAME .BS 1
|
||||
SRC.hLineBuf .BS 1
|
||||
SRC.hTmpBuf .BS 1
|
||||
|
||||
SRC.COUNT .BS 1
|
||||
SRC.hFILES .BS SRC.IN.MAXDEPTH
|
||||
|
10
TEST.S.txt
10
TEST.S.txt
@ -1,12 +1,10 @@
|
||||
PR#3
|
||||
PREFIX /A2OSX.BUILD
|
||||
NEW
|
||||
INC 1
|
||||
AUTO 6
|
||||
PREFIX /A2OSX.BUILD
|
||||
AUTO 4,1
|
||||
.LIST OFF
|
||||
.OP 65C02
|
||||
.OR $2000
|
||||
.TF /A2OSX.BUILD/TEST
|
||||
.TF /A2OSX.BUILD/ROOT/TEST
|
||||
*--------------------------------------
|
||||
.INB /A2OSX.BUILD/INC/MACROS.I
|
||||
.INB /A2OSX.BUILD/INC/A2OSX.I
|
||||
@ -139,5 +137,5 @@ DS.END
|
||||
.ED
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE /A2OSX.BUILD/TEST.S
|
||||
SAVE /A2OSX.BUILD/ROOT/TEST.S
|
||||
ASM
|
||||
|
Loading…
x
Reference in New Issue
Block a user