mirror of
https://github.com/A2osX/A2osX.git
synced 2024-07-13 13:29:04 +00:00
Kernel 0.93 : ASM
This commit is contained in:
parent
80de403038
commit
a7585c2417
@ -1,4 +1,4 @@
|
|||||||
# A2osX Macro Assembler (0.9.1)
|
# A2osX Macro Assembler (0.9.3)
|
||||||
|
|
||||||
## Description
|
## Description
|
||||||
|
|
||||||
@ -9,7 +9,7 @@ Multi-CPU macro assembler based on S-C MASM 3.0 dialect
|
|||||||
| Code | Description | Compatibility | Status | Syntax | Comment |
|
| Code | Description | Compatibility | Status | Syntax | Comment |
|
||||||
|-|-|-|-|-|-|
|
|-|-|-|-|-|-|
|
||||||
| .AC | Ascii Compressed string| S-C | NOT IMPL. | | As strings are supposed to be printed with A2osX API, Printf cannot handle 'AC' compressed strings |
|
| .AC | Ascii Compressed string| S-C | NOT IMPL. | | As strings are supposed to be printed with A2osX API, Printf cannot handle 'AC' compressed strings |
|
||||||
| .AS | Ascii String | S-C,A2osX | Working | `.AS dTEXTd` where d is any delimiter `.AS -"TEXT"`produce ascii code with b7=1 | |
|
| .AS | Ascii String | S-C,A2osX | Working | `.AS dTEXTd` where d is any delimiter `.AS -"TEXT"`produce ascii code with b7=1 | |
|
||||||
| .AT | Ascii string Terminated | S-C,A2osX | Working | (same as above) | |
|
| .AT | Ascii string Terminated | S-C,A2osX | Working | (same as above) | |
|
||||||
| .AZ | Ascii string Zero terminated (C String) | S-C,A2osX | Working | (same as above) | |
|
| .AZ | Ascii string Zero terminated (C String) | S-C,A2osX | Working | (same as above) | |
|
||||||
| .BS | Block Storage | S-C,A2osX | Working | | |
|
| .BS | Block Storage | S-C,A2osX | Working | | |
|
||||||
|
Binary file not shown.
Binary file not shown.
@ -60,7 +60,7 @@ DIR.AS clc
|
|||||||
.3 jsr OUT.EmitByte no, emit prev char
|
.3 jsr OUT.EmitByte no, emit prev char
|
||||||
bcc .2
|
bcc .2
|
||||||
|
|
||||||
.9 lda #ERR.SYNTAX.ERROR
|
.9 lda #E.SYNTAX.ERROR
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
@ -132,11 +132,11 @@ DIR.BS jsr SRC.GetNextCharNB
|
|||||||
.8 clc
|
.8 clc
|
||||||
.9 rts
|
.9 rts
|
||||||
|
|
||||||
.99 lda #ERR.RANGE
|
.99 lda #E.RANGE
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.98 lda #ERR.SYNTAX.ERROR
|
.98 lda #E.SYNTAX.ERROR
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
@ -171,7 +171,7 @@ DIR.DA jsr SRC.GetNextCharNB
|
|||||||
jsr SRC.GetNextChar
|
jsr SRC.GetNextChar
|
||||||
bcc .1
|
bcc .1
|
||||||
|
|
||||||
.98 lda #ERR.SYNTAX.ERROR
|
.98 lda #E.SYNTAX.ERROR
|
||||||
clc
|
clc
|
||||||
.9 rts
|
.9 rts
|
||||||
|
|
||||||
@ -208,7 +208,7 @@ DIR.DO >LDA.G ASM.DO.StackPtr
|
|||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.98 lda #ERR.TOO.MANY.DO
|
.98 lda #E.TOO.MANY.DO
|
||||||
sec
|
sec
|
||||||
.99 rts
|
.99 rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
@ -224,7 +224,7 @@ DIR.DU >LDA.G ASM.DU.ON
|
|||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
DIR.DU.ERR lda #ERR.INV.DIR
|
DIR.DU.ERR lda #E.INV.DIR
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
@ -240,7 +240,7 @@ DIR.ED >LDA.G ASM.DU.ON
|
|||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 lda #ERR.INV.DIR
|
.9 lda #E.INV.DIR
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
@ -257,11 +257,11 @@ DIR.EL >LDA.G ASM.DO.StackPtr
|
|||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 lda #ERR.ELSE.WITHOUT.DO
|
.9 lda #E.ELSE.WITHOUT.DO
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
DIR.EM lda #ERR.MACRO.INV.DEF
|
DIR.EM lda #E.MACRO.INV.DEF
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
@ -280,7 +280,7 @@ DIR.EP >LDA.G ASM.PH.ON
|
|||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 lda #ERR.INV.DIR
|
.9 lda #E.INV.DIR
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
@ -326,7 +326,7 @@ DIR.EQ clc
|
|||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.99 lda #ERR.SYNTAX.ERROR
|
.99 lda #E.SYNTAX.ERROR
|
||||||
sec
|
sec
|
||||||
.9 rts
|
.9 rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
@ -344,7 +344,7 @@ DIR.FI ldy #ASM.DO.StackPtr
|
|||||||
.1 clc
|
.1 clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.99 lda #ERR.INV.DIR
|
.99 lda #E.INV.DIR
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
@ -409,7 +409,7 @@ DIR.HS jsr SRC.GetNextCharNB
|
|||||||
jsr SRC.IsDigit16
|
jsr SRC.IsDigit16
|
||||||
bcc .1
|
bcc .1
|
||||||
|
|
||||||
.99 lda #ERR.SYNTAX.ERROR
|
.99 lda #E.SYNTAX.ERROR
|
||||||
sec
|
sec
|
||||||
.9 rts
|
.9 rts
|
||||||
|
|
||||||
@ -436,7 +436,7 @@ DIR.IN jsr SRC.GetNextCharNB
|
|||||||
plp
|
plp
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 lda #ERR.SYNTAX.ERROR
|
.9 lda #E.SYNTAX.ERROR
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
@ -457,7 +457,7 @@ DIR.LI jsr SRC.GetNextChar
|
|||||||
cmp #' '
|
cmp #' '
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
.9 lda #ERR.SYNTAX.ERROR
|
.9 lda #E.SYNTAX.ERROR
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
@ -524,7 +524,7 @@ DIR.MA >LDA.G ASM.MA.ON
|
|||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 lda #ERR.MACRO.INV.DEF
|
.9 lda #E.MACRO.INV.DEF
|
||||||
sec
|
sec
|
||||||
.99 rts
|
.99 rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
@ -534,7 +534,7 @@ DIR.OP jsr SRC.GetNextCharNB
|
|||||||
>LDYA ZPLinePtr
|
>LDYA ZPLinePtr
|
||||||
jmp FIO.LOAD.ASM.T
|
jmp FIO.LOAD.ASM.T
|
||||||
|
|
||||||
DIR.OP.SYNERR lda #ERR.SYNTAX.ERROR
|
DIR.OP.SYNERR lda #E.SYNTAX.ERROR
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
@ -570,7 +570,7 @@ DIR.PH >LDA.G ASM.PH.ON
|
|||||||
|
|
||||||
jmp DIR.OR
|
jmp DIR.OR
|
||||||
|
|
||||||
.9 lda #ERR.INV.DIR
|
.9 lda #E.INV.DIR
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
|
@ -16,7 +16,7 @@ AUTO 4,1
|
|||||||
* * = PC
|
* * = PC
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
EXP.Eval.Missing
|
EXP.Eval.Missing
|
||||||
lda #ERR.MISSING.EXP
|
lda #E.MISSING.EXP
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
@ -148,11 +148,11 @@ EXP.EvalExitOK >LDA.G EXP.Modifier
|
|||||||
.8 clc
|
.8 clc
|
||||||
EXP.EvalExitRTS rts
|
EXP.EvalExitRTS rts
|
||||||
|
|
||||||
EXP.EvalExitSYN lda #ERR.SYNTAX.ERROR
|
EXP.EvalExitSYN lda #E.SYNTAX.ERROR
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
EXP.EvalExitUND lda #ERR.UNDEF.SYMBOL
|
EXP.EvalExitUND lda #E.UNDEF.SYMBOL
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
@ -211,7 +211,7 @@ EXP.GetLocal jsr SRC.GetNextChar
|
|||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 lda #ERR.SYNTAX.ERROR
|
.9 lda #E.SYNTAX.ERROR
|
||||||
sec
|
sec
|
||||||
.8 rts
|
.8 rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
@ -272,7 +272,7 @@ EXP.Compute ldx SRC.ACC.SIZE
|
|||||||
.1 >LDA.G ASM.PASS
|
.1 >LDA.G ASM.PASS
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
lda #ERR.UNDEF.SYMBOL
|
lda #E.UNDEF.SYMBOL
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
@ -361,7 +361,7 @@ EXP.OP.ADD ldx #0 ARG-ACC->ACC
|
|||||||
|
|
||||||
bcc .8
|
bcc .8
|
||||||
|
|
||||||
lda #ERR.VAL.TOO.BIG
|
lda #E.VAL.TOO.BIG
|
||||||
.8 rts
|
.8 rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
EXP.OP.SUB ldx #0 ARG-ACC->ACC
|
EXP.OP.SUB ldx #0 ARG-ACC->ACC
|
||||||
@ -378,7 +378,7 @@ EXP.OP.SUB ldx #0 ARG-ACC->ACC
|
|||||||
|
|
||||||
bcs .8
|
bcs .8
|
||||||
|
|
||||||
lda #ERR.VAL.TOO.BIG
|
lda #E.VAL.TOO.BIG
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
@ -116,7 +116,7 @@ FIO.OpenFile >STYA ZPPtr1
|
|||||||
cmp #IN.MAXDEPTH
|
cmp #IN.MAXDEPTH
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
lda #ERR.SRC.TOO.MANY.IN
|
lda #E.SRC.TOO.MANY.IN
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
@ -176,7 +176,7 @@ FIO.OpenFile >STYA ZPPtr1
|
|||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.98 lda #ERR.SRC.INV.TYPE
|
.98 lda #E.SRC.INV.TYPE
|
||||||
|
|
||||||
sec
|
sec
|
||||||
.99 rts
|
.99 rts
|
||||||
@ -201,8 +201,14 @@ FIO.ReadLine >LDYA ZPLineBuf
|
|||||||
beq .13
|
beq .13
|
||||||
|
|
||||||
dey
|
dey
|
||||||
|
|
||||||
lda #0 replace ending $0D with $00
|
lda (ZPLineBuf),y
|
||||||
|
eor #C.CR
|
||||||
|
beq .22
|
||||||
|
|
||||||
|
iny
|
||||||
|
|
||||||
|
.22 lda #0 replace ending $0D with $00
|
||||||
.13 sta (ZPLineBuf),y
|
.13 sta (ZPLineBuf),y
|
||||||
|
|
||||||
>INC.G SRC.LINENUM
|
>INC.G SRC.LINENUM
|
||||||
@ -295,7 +301,7 @@ FIO.ReadLine >LDYA ZPLineBuf
|
|||||||
.8 clc
|
.8 clc
|
||||||
.9 rts
|
.9 rts
|
||||||
|
|
||||||
.99 lda #ERR.LINE.TOO.LONG
|
.99 lda #E.LINE.TOO.LONG
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
@ -313,7 +319,7 @@ FIO.ReadFromFile
|
|||||||
tax $100 byte transfered ?
|
tax $100 byte transfered ?
|
||||||
beq .9
|
beq .9
|
||||||
|
|
||||||
lda #ERR.LINE.TOO.LONG
|
lda #E.LINE.TOO.LONG
|
||||||
sec
|
sec
|
||||||
.9 rts
|
.9 rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
|
@ -2,7 +2,7 @@ NEW
|
|||||||
PREFIX
|
PREFIX
|
||||||
AUTO 4,1
|
AUTO 4,1
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
OUT.Init lda #20
|
OUT.Init lda #PAGE.LEN
|
||||||
>STA.G OUT.LineCnt
|
>STA.G OUT.LineCnt
|
||||||
rts
|
rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
@ -187,7 +187,7 @@ OUT.PrintCR lda #13
|
|||||||
OUT.Print1 >DEC.G OUT.LineCnt
|
OUT.Print1 >DEC.G OUT.LineCnt
|
||||||
bne .8
|
bne .8
|
||||||
|
|
||||||
lda #20
|
lda #PAGE.LEN
|
||||||
sta (pData),y
|
sta (pData),y
|
||||||
|
|
||||||
lda #$80
|
lda #$80
|
||||||
|
@ -182,12 +182,12 @@ SRC.ParseLine.Err
|
|||||||
rts
|
rts
|
||||||
|
|
||||||
SRC.ParseLine.InvLbl
|
SRC.ParseLine.InvLbl
|
||||||
lda #ERR.INV.LABEL
|
lda #E.INV.LABEL
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
SRC.ParseLine.InvDir
|
SRC.ParseLine.InvDir
|
||||||
lda #ERR.INV.DIR
|
lda #E.INV.DIR
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
@ -224,17 +224,15 @@ SRC.ParseLine.ExecMacro
|
|||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.90 lda #ERR.MACRO.INV
|
.90 lda #E.MACRO.INV
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.91 lda #ERR.MACRO.INV
|
.91 lda #E.MACRO.INV
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
SRC.ParseLine.OpCode
|
SRC.ParseLine.OpCode
|
||||||
stz SRC.AM.StrBuf
|
|
||||||
|
|
||||||
>LDYA ZPOpsPtr
|
>LDYA ZPOpsPtr
|
||||||
>STYA ZPOpDefPtr
|
>STYA ZPOpDefPtr
|
||||||
|
|
||||||
@ -272,11 +270,11 @@ SRC.ParseLine.OpCode
|
|||||||
|
|
||||||
dex
|
dex
|
||||||
bne .2
|
bne .2
|
||||||
|
|
||||||
lda (ZPLinePtr),y
|
lda (ZPLinePtr),y
|
||||||
beq .8 End of Line, no AM
|
beq .8 End of Line, no AM
|
||||||
|
|
||||||
cmp #' ' A space after opcode ?
|
cmp #C.SPACE A space after opcode ?
|
||||||
bne .7
|
bne .7
|
||||||
|
|
||||||
tya
|
tya
|
||||||
@ -301,18 +299,24 @@ SRC.ParseLine.OpCode
|
|||||||
sta ZPOpDefPtr+1
|
sta ZPOpDefPtr+1
|
||||||
bra .1
|
bra .1
|
||||||
|
|
||||||
.8 jmp SRC.ParseLine.OPAMCheckFF
|
.8 lda #$ff
|
||||||
|
>STA.G SRC.AMID
|
||||||
|
jsr SRC.ParseLine.AMCheck4OP
|
||||||
|
bcs .99
|
||||||
|
jmp SRC.ParseLine.Emit
|
||||||
|
|
||||||
.9 lda #ERR.INV.OPCODE
|
.9 lda #E.INV.OPCODE
|
||||||
sec
|
sec
|
||||||
.99 rts
|
.99 rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
SRC.ParseLine.AM
|
SRC.ParseLine.AM
|
||||||
|
stz SRC.AM.StrBuf
|
||||||
|
|
||||||
.1 jsr SRC.GetChar
|
.1 jsr SRC.GetChar
|
||||||
bcs SRC.ParseLine.AMCheck
|
bcs .8
|
||||||
|
|
||||||
.10 cmp #' ' another space ?
|
.10 cmp #' ' another space ?
|
||||||
beq SRC.ParseLine.AMCheck ignore end of line (comment)
|
beq .8 ignore end of line (comment)
|
||||||
|
|
||||||
jsr SRC.IsAMReserved
|
jsr SRC.IsAMReserved
|
||||||
bcs .2
|
bcs .2
|
||||||
@ -375,23 +379,49 @@ SRC.ParseLine.AM
|
|||||||
.7 jsr SRC.GetNextChar
|
.7 jsr SRC.GetNextChar
|
||||||
bcc .10
|
bcc .10
|
||||||
|
|
||||||
jmp SRC.ParseLine.AMCheck
|
.8 jsr SRC.ParseLine.AMCheck
|
||||||
|
bcs .9
|
||||||
.9 lda #ERR.INV.AM.SYN
|
jsr SRC.ParseLine.AMCheck4OP
|
||||||
|
bcc .88
|
||||||
|
|
||||||
|
.80 jsr SRC.ExpandAddress
|
||||||
|
cpx #5
|
||||||
|
bne .8
|
||||||
|
|
||||||
|
.9 lda #E.INV.AM
|
||||||
sec
|
sec
|
||||||
.99 rts
|
.99 rts
|
||||||
|
|
||||||
|
.88 jmp SRC.ParseLine.Emit
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
SRC.ParseLine.AMCheck
|
SRC.ParseLine.AMCheck
|
||||||
lda SRC.AM.StrBuf
|
* ldx #5
|
||||||
beq SRC.ParseLine.OPAMCheckFF
|
|
||||||
|
*.10 lda SRC.ACC.F,x
|
||||||
|
* >PUSHA
|
||||||
|
* dex
|
||||||
|
* bpl .10
|
||||||
|
|
||||||
|
* >PUSHBI 6
|
||||||
|
* >LDYA L.MSG.ACC
|
||||||
|
* >SYSCALL printf
|
||||||
|
|
||||||
>LDYA ZPAMPtr
|
* >LDYA L.SRC.AM.StrBuf
|
||||||
|
* jsr DEBUG.PSTR
|
||||||
|
|
||||||
|
>LDYA ZPAMPtr Check if AM is valid for CPU
|
||||||
>STYA ZPPtr1
|
>STYA ZPPtr1
|
||||||
|
|
||||||
ldx #0
|
ldx #0
|
||||||
|
|
||||||
.1 inx
|
.1 inx
|
||||||
|
* phx
|
||||||
|
* lda #'?'
|
||||||
|
* >SYSCALL putchar
|
||||||
|
* >LDYA ZPPtr1
|
||||||
|
* jsr DEBUG.PSTR
|
||||||
|
* plx
|
||||||
|
|
||||||
lda (ZPPtr1)
|
lda (ZPPtr1)
|
||||||
beq .9
|
beq .9
|
||||||
|
|
||||||
@ -408,7 +438,9 @@ SRC.ParseLine.AMCheck
|
|||||||
|
|
||||||
txa
|
txa
|
||||||
>STA.G SRC.AMID
|
>STA.G SRC.AMID
|
||||||
bra SRC.ParseLine.OPAMCheck
|
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
|
||||||
.6 lda (ZPPtr1)
|
.6 lda (ZPPtr1)
|
||||||
.7 sec
|
.7 sec
|
||||||
@ -418,43 +450,55 @@ SRC.ParseLine.AMCheck
|
|||||||
inc ZPPtr1+1
|
inc ZPPtr1+1
|
||||||
bra .1
|
bra .1
|
||||||
|
|
||||||
.9 lda #ERR.INV.AM
|
.9 sec
|
||||||
sec
|
|
||||||
rts
|
rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
SRC.ParseLine.OPAMCheckFF
|
SRC.ParseLine.AMCheck4OP
|
||||||
lda #$ff Default to no AM
|
lda ZPOpDefPtr Skip nextLoHi,L,"ADC"
|
||||||
>STA.G SRC.AMID
|
ldx ZPOpDefPtr+1
|
||||||
|
clc
|
||||||
SRC.ParseLine.OPAMCheck
|
adc #2 Skip nextLoHi
|
||||||
ldy #2 Skip nPtr+Len+OP
|
bcc .11
|
||||||
lda (ZPOpDefPtr),y LEN
|
inx
|
||||||
sec LEN Byte
|
|
||||||
adc #2 nPtr
|
|
||||||
adc ZPOpDefPtr
|
|
||||||
sta ZPOpDefPtr
|
|
||||||
bcc .10
|
|
||||||
inc ZPOpDefPtr+1
|
|
||||||
|
|
||||||
.10 lda (ZPOpDefPtr)
|
.11 sec skip LEN Byte
|
||||||
|
ldy #2 LEN Byte
|
||||||
|
adc (ZPOpDefPtr),y
|
||||||
|
bcc .10
|
||||||
|
inx
|
||||||
|
.10 sta ZPPtr1
|
||||||
|
stx ZPPtr1+1
|
||||||
|
|
||||||
|
lda (ZPPtr1) AMID...
|
||||||
|
|
||||||
.1 >CMP.G SRC.AMID
|
.1 >CMP.G SRC.AMID
|
||||||
beq SRC.ParseLine.Emit
|
beq .8
|
||||||
|
|
||||||
ldy #1
|
lda ZPPtr1 Skip AMID,L,"39aa"
|
||||||
lda (ZPOpDefPtr),y
|
ldx ZPPtr1+1
|
||||||
inc
|
inc AMID....
|
||||||
sec
|
bne .12
|
||||||
adc ZPOpDefPtr
|
inx
|
||||||
sta ZPOpDefPtr
|
|
||||||
|
.12 sec LEN byte...
|
||||||
|
ldy #1 String...
|
||||||
|
adc (ZPPtr1),y
|
||||||
bcc .2
|
bcc .2
|
||||||
inc ZPOpDefPtr+1
|
inx
|
||||||
.2 lda (ZPOpDefPtr)
|
|
||||||
bne .1
|
|
||||||
|
|
||||||
.99 lda #ERR.INV.AM.4.OC
|
.2 sta ZPPtr1
|
||||||
|
stx ZPPtr1+1
|
||||||
|
lda (ZPPtr1)
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
lda #E.INV.AM.4.OC
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
.8 >LDYA ZPPtr1
|
||||||
|
>STYA ZPOpDefPtr
|
||||||
|
clc
|
||||||
|
rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
SRC.ParseLine.Emit
|
SRC.ParseLine.Emit
|
||||||
stz SRC.ACCTMP index in ACC
|
stz SRC.ACCTMP index in ACC
|
||||||
@ -532,11 +576,11 @@ SRC.ParseLine.Emit
|
|||||||
.8 clc
|
.8 clc
|
||||||
.9 rts
|
.9 rts
|
||||||
|
|
||||||
.90 lda #ERR.INV.T.FILE
|
.90 lda #E.INV.T.FILE
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.91 lda #ERR.RANGE
|
.91 lda #E.RANGE
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
@ -545,6 +589,33 @@ SRC.AddToBuf inc SRC.AM.StrBuf
|
|||||||
sta SRC.AM.StrBuf,y
|
sta SRC.AM.StrBuf,y
|
||||||
rts
|
rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
|
SRC.ExpandAddress
|
||||||
|
ldy SRC.AM.StrBuf
|
||||||
|
|
||||||
|
.1 lda SRC.AM.StrBuf,y
|
||||||
|
sta SRC.AM.StrBuf+1,y
|
||||||
|
|
||||||
|
dey
|
||||||
|
|
||||||
|
cmp #'a'
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
ldx #2 "aa"
|
||||||
|
|
||||||
|
tya
|
||||||
|
beq .8
|
||||||
|
|
||||||
|
.2 lda SRC.AM.StrBuf,y
|
||||||
|
cmp #'a'
|
||||||
|
bne .8
|
||||||
|
|
||||||
|
inx "aaa"
|
||||||
|
.3 dey
|
||||||
|
bne .2
|
||||||
|
|
||||||
|
.8 inc SRC.AM.StrBuf
|
||||||
|
rts
|
||||||
|
*---------------------------------------
|
||||||
SRC.ComputeRel8 jsr SRC.ComputeRel
|
SRC.ComputeRel8 jsr SRC.ComputeRel
|
||||||
|
|
||||||
bcc .1
|
bcc .1
|
||||||
@ -675,14 +746,14 @@ SRC.GetDecimal jsr SRC.GetChar
|
|||||||
inc SRC.ACC+3
|
inc SRC.ACC+3
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
.9 lda #ERR.VAL.TOO.BIG
|
.9 lda #E.VAL.TOO.BIG
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.8 clc
|
.8 clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.99 lda #ERR.SYNTAX.ERROR
|
.99 lda #E.SYNTAX.ERROR
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
@ -726,11 +797,11 @@ SRC.GetHex jsr SRC.GetNextChar skip '$'
|
|||||||
.8 clc
|
.8 clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 lda #ERR.VAL.TOO.BIG
|
.9 lda #E.VAL.TOO.BIG
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.99 lda #ERR.SYNTAX.ERROR
|
.99 lda #E.SYNTAX.ERROR
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
@ -782,11 +853,11 @@ SRC.GetOctal jsr SRC.GetNextChar skip '&'
|
|||||||
.8 clc
|
.8 clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 lda #ERR.VAL.TOO.BIG
|
.9 lda #E.VAL.TOO.BIG
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.99 lda #ERR.SYNTAX.ERROR
|
.99 lda #E.SYNTAX.ERROR
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
@ -836,11 +907,11 @@ SRC.GetBinary jsr SRC.GetNextChar skip '%'
|
|||||||
.8 clc
|
.8 clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 lda #ERR.VAL.TOO.BIG
|
.9 lda #E.VAL.TOO.BIG
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.99 lda #ERR.SYNTAX.ERROR
|
.99 lda #E.SYNTAX.ERROR
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
@ -865,7 +936,7 @@ SRC.GetKeyword >STYA ZPPtr1 KeyWord table
|
|||||||
|
|
||||||
iny
|
iny
|
||||||
cmp (ZPPtr1),y
|
cmp (ZPPtr1),y
|
||||||
bne .6
|
bne .7
|
||||||
|
|
||||||
dex
|
dex
|
||||||
bne .3
|
bne .3
|
||||||
@ -874,11 +945,11 @@ SRC.GetKeyword >STYA ZPPtr1 KeyWord table
|
|||||||
beq .4 End of Line ?
|
beq .4 End of Line ?
|
||||||
|
|
||||||
jsr SRC.IsKeywordLetterUC
|
jsr SRC.IsKeywordLetterUC
|
||||||
bcc .6 Additional letters...
|
bcc .7 Additional letters...
|
||||||
|
|
||||||
.4 lda ZPLinePtr
|
.4 lda ZPLinePtr found!
|
||||||
clc
|
clc
|
||||||
adc (ZPPtr1)
|
adc (ZPPtr1) skip KW in source line
|
||||||
sta ZPLinePtr
|
sta ZPLinePtr
|
||||||
bcc .5
|
bcc .5
|
||||||
inc ZPLinePtr+1
|
inc ZPLinePtr+1
|
||||||
@ -887,15 +958,17 @@ SRC.GetKeyword >STYA ZPPtr1 KeyWord table
|
|||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.6 lda (ZPPtr1)
|
.6
|
||||||
|
|
||||||
|
.7 lda (ZPPtr1)
|
||||||
sec Add keyword Len+1
|
sec Add keyword Len+1
|
||||||
adc ZPPtr1
|
adc ZPPtr1
|
||||||
sta ZPPtr1
|
sta ZPPtr1
|
||||||
bcc .7
|
bcc .8
|
||||||
|
|
||||||
inc ZPPtr1+1
|
inc ZPPtr1+1
|
||||||
|
|
||||||
.7 plx Keyword.ID
|
.8 plx Keyword.ID
|
||||||
inx
|
inx
|
||||||
inx
|
inx
|
||||||
bra .1
|
bra .1
|
||||||
@ -962,8 +1035,6 @@ SRC.IsKeywordLetterUC
|
|||||||
|
|
||||||
.9 sec
|
.9 sec
|
||||||
.99 rts
|
.99 rts
|
||||||
*---------------------------------------
|
|
||||||
|
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
SRC.IsLetterOrDigit
|
SRC.IsLetterOrDigit
|
||||||
jsr SRC.IsDigit10
|
jsr SRC.IsDigit10
|
||||||
@ -1108,6 +1179,12 @@ SRC.ACC10 lda SRC.ACC ACC*2-> ACC & ACCTMP
|
|||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
|
DEBUG.PSTR >PUSHYA
|
||||||
|
>PUSHBI 2
|
||||||
|
>LDYA L.MSG.PSTR
|
||||||
|
>SYSCALL printf
|
||||||
|
rts
|
||||||
|
*---------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/BIN/ASM.S.SRC
|
SAVE USR/SRC/BIN/ASM.S.SRC
|
||||||
LOAD USR/SRC/BIN/ASM.S
|
LOAD USR/SRC/BIN/ASM.S
|
||||||
|
@ -24,14 +24,6 @@ SYM.Init >SYSCALL SListNew
|
|||||||
>SYSCALL getmem
|
>SYSCALL getmem
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>STYA ZPNameBuf
|
|
||||||
txa
|
|
||||||
>STA.G SYM.hNameBuf
|
|
||||||
|
|
||||||
>LDYAI 256
|
|
||||||
>SYSCALL getmem
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
>STYA ZPGlobalBuf
|
>STYA ZPGlobalBuf
|
||||||
txa
|
txa
|
||||||
>STA.G SYM.hGlobalBuf
|
>STA.G SYM.hGlobalBuf
|
||||||
@ -41,12 +33,7 @@ SYM.Init >SYSCALL SListNew
|
|||||||
SYM.Reset >STZ.G SYM.bInGlobal
|
SYM.Reset >STZ.G SYM.bInGlobal
|
||||||
rts
|
rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
SYM.Quit >LDA.G SYM.hNameBuf
|
SYM.Quit >LDA.G SYM.hGlobalBuf
|
||||||
beq .2
|
|
||||||
|
|
||||||
>SYSCALL FreeMem
|
|
||||||
|
|
||||||
.2 >LDA.G SYM.hGlobalBuf
|
|
||||||
beq .3
|
beq .3
|
||||||
|
|
||||||
>SYSCALL FreeMem
|
>SYSCALL FreeMem
|
||||||
@ -56,7 +43,13 @@ SYM.Quit >LDA.G SYM.hNameBuf
|
|||||||
>SYSCALL SListFree
|
>SYSCALL SListFree
|
||||||
|
|
||||||
SYM.Quit.8 clc
|
SYM.Quit.8 clc
|
||||||
SYM.Quit.RTS rts
|
rts
|
||||||
|
*---------------------------------------
|
||||||
|
SYM.Dump.End >PUSHW ZPPtr2
|
||||||
|
>PUSHBI 2
|
||||||
|
>LDYA L.MSG.SUMMARY
|
||||||
|
jmp OUT.Print
|
||||||
|
SYM.Dump.RTS rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
SYM.Dump >LDA.G ASM.LI.ON
|
SYM.Dump >LDA.G ASM.LI.ON
|
||||||
bpl SYM.Quit.8
|
bpl SYM.Quit.8
|
||||||
@ -70,11 +63,11 @@ SYM.Dump >LDA.G ASM.LI.ON
|
|||||||
.1 >LDYA ZPPtr2
|
.1 >LDYA ZPPtr2
|
||||||
>STYA ZPPtr1
|
>STYA ZPPtr1
|
||||||
|
|
||||||
>PUSHW ZPNameBuf
|
>PUSHW ZPTmpBuf
|
||||||
>PUSHW ZPPtr1
|
>PUSHW ZPPtr1
|
||||||
>LDA.G SYM.hGlobalList
|
>LDA.G SYM.hGlobalList
|
||||||
>SYSCALL SListGetByID
|
>SYSCALL SListGetByID
|
||||||
bcs SYM.Quit.8
|
bcs SYM.Dump.End
|
||||||
|
|
||||||
>STYA ZPPtr2 Save Next ID
|
>STYA ZPPtr2 Save Next ID
|
||||||
|
|
||||||
@ -85,7 +78,7 @@ SYM.Dump >LDA.G ASM.LI.ON
|
|||||||
>LDA.G SYM.hGlobalList
|
>LDA.G SYM.hGlobalList
|
||||||
|
|
||||||
>SYSCALL SListGetData
|
>SYSCALL SListGetData
|
||||||
bcs SYM.Quit.RTS
|
bcs SYM.Dump.RTS
|
||||||
|
|
||||||
ldy #SYMG.SIZE Get Symbol Size
|
ldy #SYMG.SIZE Get Symbol Size
|
||||||
lda (ZPGlobalBuf),y
|
lda (ZPGlobalBuf),y
|
||||||
@ -112,7 +105,7 @@ SYM.Dump >LDA.G ASM.LI.ON
|
|||||||
>SYSCALL printf
|
>SYSCALL printf
|
||||||
|
|
||||||
>PUSHBI 0
|
>PUSHBI 0
|
||||||
>LDYA ZPNameBuf Label
|
>LDYA ZPTmpBuf Label
|
||||||
>SYSCALL printf
|
>SYSCALL printf
|
||||||
|
|
||||||
lda (ZPGlobalBuf)
|
lda (ZPGlobalBuf)
|
||||||
@ -187,7 +180,7 @@ SYM.NewGlobal jsr SYM.StoreGlobal
|
|||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 lda #ERR.SYMBOL.REDEF
|
.9 lda #E.SYMBOL.REDEF
|
||||||
sec
|
sec
|
||||||
.99 rts
|
.99 rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
@ -217,7 +210,7 @@ SYM.GetGlobal >PUSHW ZPLinePtr Pass #2: should be already defined...
|
|||||||
* clc
|
* clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 lda #ERR.UNDEF.SYMBOL
|
.9 lda #E.UNDEF.SYMBOL
|
||||||
sec
|
sec
|
||||||
.99 rts
|
.99 rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
@ -262,7 +255,7 @@ SYM.LookupGlobal
|
|||||||
>SYSCALL SListGetData
|
>SYSCALL SListGetData
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 lda #ERR.UNDEF.SYMBOL
|
.9 lda #E.UNDEF.SYMBOL
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
@ -331,9 +324,9 @@ SYM.Acc2Global ldy #SYMG-1
|
|||||||
|
|
||||||
.2 lda SRC.ACC.F,y
|
.2 lda SRC.ACC.F,y
|
||||||
sta (ZPGlobalBuf),y
|
sta (ZPGlobalBuf),y
|
||||||
|
|
||||||
dey
|
dey
|
||||||
bpl .2
|
bpl .2
|
||||||
|
|
||||||
rts
|
rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
* Local Symbol Record: (5 bytes)
|
* Local Symbol Record: (5 bytes)
|
||||||
@ -347,7 +340,7 @@ SYM.NewOrGetLocalA
|
|||||||
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 SYM.GetLocalX
|
bne .8
|
||||||
|
|
||||||
jsr SYM.GetLocalX Pass #1; try to add
|
jsr SYM.GetLocalX Pass #1; try to add
|
||||||
bcc .9 Already Defined
|
bcc .9 Already Defined
|
||||||
@ -385,18 +378,22 @@ SYM.NewOrGetLocalA
|
|||||||
lda #0
|
lda #0
|
||||||
sta (ZPGlobalBuf),y
|
sta (ZPGlobalBuf),y
|
||||||
|
|
||||||
clc
|
lda (ZPGlobalBuf)
|
||||||
|
ora #SYMG.F.LOCALS
|
||||||
|
sta (ZPGlobalBuf)
|
||||||
|
|
||||||
|
.8 clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.91 lda #ERR.INV.LABEL
|
.91 lda #E.INV.LABEL
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.90 lda #ERR.TOO.MANY.LOCAL
|
.90 lda #E.TOO.MANY.LOCAL
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 lda #ERR.SYMBOL.REDEF
|
.9 lda #E.SYMBOL.REDEF
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
@ -404,7 +401,7 @@ SYM.GetLocalX lda (ZPGlobalBuf)
|
|||||||
and #SYMG.F.LOCALS
|
and #SYMG.F.LOCALS
|
||||||
beq .9
|
beq .9
|
||||||
|
|
||||||
ldy #SYML
|
ldy #SYMG
|
||||||
|
|
||||||
.1 lda (ZPGlobalBuf),y
|
.1 lda (ZPGlobalBuf),y
|
||||||
beq .9
|
beq .9
|
||||||
@ -413,15 +410,18 @@ SYM.GetLocalX lda (ZPGlobalBuf)
|
|||||||
cmp (ZPGlobalBuf),y
|
cmp (ZPGlobalBuf),y
|
||||||
bne .3
|
bne .3
|
||||||
|
|
||||||
ldx #4
|
ldx #0
|
||||||
stx SRC.ACC.SIZE
|
|
||||||
|
|
||||||
.2 iny
|
.2 iny
|
||||||
lda (ZPGlobalBuf),y
|
lda (ZPGlobalBuf),y
|
||||||
sta SRC.ACC.SIZE,x
|
sta SRC.ACC,x
|
||||||
dex
|
inx
|
||||||
|
cpx #4
|
||||||
bne .2
|
bne .2
|
||||||
|
|
||||||
|
lda #2
|
||||||
|
sta SRC.ACC.SIZE
|
||||||
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
@ -431,7 +431,7 @@ SYM.GetLocalX lda (ZPGlobalBuf)
|
|||||||
tay
|
tay
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
.9 lda #ERR.UNDEF.SYMBOL
|
.9 lda #E.UNDEF.SYMBOL
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
|
110
BIN/ASM.S.txt
110
BIN/ASM.S.txt
@ -4,10 +4,13 @@ AUTO 4,1
|
|||||||
.LIST OFF
|
.LIST OFF
|
||||||
.OP 65C02
|
.OP 65C02
|
||||||
.OR $2000
|
.OR $2000
|
||||||
.TF BIN/DEV/ASM
|
.TF BIN/ASM
|
||||||
|
*---------------------------------------
|
||||||
|
PAGE.LEN .EQ 23
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
.INB INC/MACROS.I
|
.INB INC/MACROS.I
|
||||||
.INB INC/A2OSX.I
|
.INB INC/A2OSX.I
|
||||||
|
.INB INC/MLI.E.I
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
.DUMMY
|
.DUMMY
|
||||||
.OR ZPBIN
|
.OR ZPBIN
|
||||||
@ -15,9 +18,9 @@ ZS.START
|
|||||||
ZPPtr1 .BS 2
|
ZPPtr1 .BS 2
|
||||||
ZPPtr2 .BS 2
|
ZPPtr2 .BS 2
|
||||||
|
|
||||||
|
ZPTmpBuf .BS 2
|
||||||
ZPLineBuf .BS 2
|
ZPLineBuf .BS 2
|
||||||
ZPLinePtr .BS 2
|
ZPLinePtr .BS 2
|
||||||
ZPNameBuf .BS 2
|
|
||||||
ZPGlobalBuf .BS 2
|
ZPGlobalBuf .BS 2
|
||||||
|
|
||||||
ZPMacroBuf .BS 2
|
ZPMacroBuf .BS 2
|
||||||
@ -28,7 +31,6 @@ ZPRPtr .BS 2
|
|||||||
ZPOpsPtr .BS 2
|
ZPOpsPtr .BS 2
|
||||||
ZPOpDefPtr .BS 2
|
ZPOpDefPtr .BS 2
|
||||||
|
|
||||||
ZPTmpBuf .BS 2
|
|
||||||
ZS.END .ED
|
ZS.END .ED
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
* Symbols
|
* Symbols
|
||||||
@ -60,33 +62,34 @@ DO.MAXDEPTH .EQ 8
|
|||||||
IN.MAXDEPTH .EQ 7
|
IN.MAXDEPTH .EQ 7
|
||||||
MA.MAXDEPTH .EQ 8
|
MA.MAXDEPTH .EQ 8
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
ERR.INV.ARGS .EQ $80
|
E.SYNTAX.ERROR .EQ $A0
|
||||||
ERR.INV.T.FILE .EQ $81
|
E.SYM.TOO.LONG .EQ $A1
|
||||||
ERR.SRC.INV.TYPE .EQ $90
|
E.VAL.TOO.BIG .EQ $A2
|
||||||
ERR.SRC.TOO.MANY.IN .EQ $91
|
E.LINE.TOO.LONG .EQ $A3
|
||||||
ERR.SRC.UNEXP.EOF .EQ $92
|
E.INV.LABEL .EQ $A4
|
||||||
ERR.SYNTAX.ERROR .EQ $A0
|
E.INV.DIR .EQ $A5
|
||||||
ERR.SYM.TOO.LONG .EQ $A1
|
E.INV.OPCODE .EQ $A6
|
||||||
ERR.VAL.TOO.BIG .EQ $A2
|
E.INV.AM.SYN .EQ $A7
|
||||||
ERR.LINE.TOO.LONG .EQ $A3
|
E.INV.AM .EQ $A8
|
||||||
ERR.INV.LABEL .EQ $A4
|
E.INV.AM.4.OC .EQ $A9
|
||||||
ERR.INV.DIR .EQ $A5
|
E.RANGE .EQ $AA
|
||||||
ERR.INV.OPCODE .EQ $A6
|
E.UNDEF.SYMBOL .EQ $AB
|
||||||
ERR.INV.AM.SYN .EQ $A7
|
E.SYMBOL.REDEF .EQ $AC
|
||||||
ERR.INV.AM .EQ $A8
|
E.TOO.MANY.DO .EQ $AD
|
||||||
ERR.INV.AM.4.OC .EQ $A9
|
E.ELSE.WITHOUT.DO .EQ $AE
|
||||||
ERR.RANGE .EQ $AA
|
E.TOO.MANY.LOCAL .EQ $AF
|
||||||
ERR.UNDEF.SYMBOL .EQ $AB
|
E.MISSING.EXP .EQ $B0
|
||||||
ERR.SYMBOL.REDEF .EQ $AC
|
E.EXP.SYN.ERROR .EQ $B1
|
||||||
ERR.TOO.MANY.DO .EQ $AD
|
E.MACRO.INV.DEF .EQ $B2
|
||||||
ERR.ELSE.WITHOUT.DO .EQ $AE
|
E.MACRO.TOO.BIG .EQ $B3
|
||||||
ERR.TOO.MANY.LOCAL .EQ $AF
|
E.MACRO.INV .EQ $B4
|
||||||
ERR.MISSING.EXP .EQ $B0
|
E.MACRO.TOO.MANY .EQ $B5
|
||||||
ERR.EXP.SYN.ERROR .EQ $B1
|
*
|
||||||
ERR.MACRO.INV.DEF .EQ $E0
|
E.INV.ARGS .EQ $BA
|
||||||
ERR.MACRO.TOO.BIG .EQ $E1
|
E.INV.T.FILE .EQ $BC
|
||||||
ERR.MACRO.INV .EQ $E2
|
E.SRC.INV.TYPE .EQ $BD
|
||||||
ERR.MACRO.TOO.MANY .EQ $E3
|
E.SRC.TOO.MANY.IN .EQ $BE
|
||||||
|
E.SRC.UNEXP.EOF .EQ $BF
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* File Header (16 Bytes)
|
* File Header (16 Bytes)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
@ -118,13 +121,16 @@ L.MSG.EQU0 .DA MSG.EQU0
|
|||||||
.DA MSG.EQU2
|
.DA MSG.EQU2
|
||||||
.DA MSG.EQU3
|
.DA MSG.EQU3
|
||||||
.DA MSG.EQU4
|
.DA MSG.EQU4
|
||||||
L.MSG.LSYMBOL .DA MSG.LSYMBOL
|
L.MSG.PASS .DA MSG.PASS
|
||||||
L.MSG.SRCLINE .DA MSG.SRCLINE
|
L.MSG.SRCLINE .DA MSG.SRCLINE
|
||||||
L.MSG.ERROR .DA MSG.ERROR
|
L.MSG.ERROR .DA MSG.ERROR
|
||||||
L.MSG.SYMBOLS .DA MSG.SYMBOLS
|
L.MSG.SYMBOLS .DA MSG.SYMBOLS
|
||||||
L.MSG.CRLF .DA MSG.CRLF
|
L.MSG.LSYMBOL .DA MSG.LSYMBOL
|
||||||
L.MSG.SUMMARY .DA MSG.SUMMARY
|
L.MSG.SUMMARY .DA MSG.SUMMARY
|
||||||
L.MSG.PASS .DA MSG.PASS
|
L.MSG.END .DA MSG.END
|
||||||
|
L.MSG.PSTR .DA MSG.PSTR
|
||||||
|
L.MSG.CRLF .DA MSG.CRLF
|
||||||
|
L.MSG.ACC .DA MSG.ACC
|
||||||
L.MSG.SRC.FILE .DA MSG.SRC.FILE
|
L.MSG.SRC.FILE .DA MSG.SRC.FILE
|
||||||
L.MSG.OBJ.FILE .DA MSG.OBJ.FILE
|
L.MSG.OBJ.FILE .DA MSG.OBJ.FILE
|
||||||
L.MSG.T.FILE .DA MSG.T.FILE
|
L.MSG.T.FILE .DA MSG.T.FILE
|
||||||
@ -244,7 +250,7 @@ CS.INIT ldy #S.PS.ARGC
|
|||||||
.99 >PUSHBI 0
|
.99 >PUSHBI 0
|
||||||
>LDYA L.MSG.HELP
|
>LDYA L.MSG.HELP
|
||||||
>SYSCALL printf
|
>SYSCALL printf
|
||||||
lda #ERR.INV.ARGS
|
lda #E.INV.ARGS
|
||||||
sec
|
sec
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
@ -304,16 +310,18 @@ CS.RUN ldy #S.PS.hStdIn
|
|||||||
|
|
||||||
.10 jsr FIO.ReadLine
|
.10 jsr FIO.ReadLine
|
||||||
bcc .2
|
bcc .2
|
||||||
cmp #$4C End Of File?
|
cmp #MLI.E.EOF End Of File?
|
||||||
bne .9
|
bne .9
|
||||||
|
|
||||||
jsr FIO.FileClose
|
jsr FIO.FileClose
|
||||||
|
|
||||||
ldy #SRC.COUNT end of root file ?
|
>LDA.G SRC.COUNT end of root file ?
|
||||||
lda (pData),y
|
bne .8 no continue back to previous file
|
||||||
bne .8 no continue back to previous file
|
|
||||||
|
>DEBUG
|
||||||
>LDA.G ASM.PASS End of pass #2 ??
|
jsr SYM.StoreGlobal Make sure last Global flushed
|
||||||
|
|
||||||
|
>LDA.G ASM.PASS End of pass #2 ??
|
||||||
bne .1
|
bne .1
|
||||||
inc
|
inc
|
||||||
sta (pData),y
|
sta (pData),y
|
||||||
@ -322,12 +330,10 @@ CS.RUN ldy #S.PS.hStdIn
|
|||||||
|
|
||||||
.1 jsr SYM.Dump
|
.1 jsr SYM.Dump
|
||||||
|
|
||||||
>PUSHW ZPLinePtr
|
>LDYA L.MSG.END
|
||||||
>PUSHBI 2
|
>SYSCALL puts
|
||||||
>LDYA L.MSG.SUMMARY
|
|
||||||
jsr OUT.Print
|
|
||||||
|
|
||||||
lda #0 End of assembly, exit with no error
|
lda #0 End of assembly, exit with no error
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
@ -341,7 +347,8 @@ CS.RUN ldy #S.PS.hStdIn
|
|||||||
|
|
||||||
.9 pha
|
.9 pha
|
||||||
jsr OUT.PrintLineErr
|
jsr OUT.PrintLineErr
|
||||||
|
>DEBUG
|
||||||
|
jsr SYM.StoreGlobal Make sure last Global flushed
|
||||||
jsr SYM.Dump
|
jsr SYM.Dump
|
||||||
pla
|
pla
|
||||||
sec
|
sec
|
||||||
@ -456,12 +463,15 @@ MSG.EQU1 .AZ " [ %h] "
|
|||||||
MSG.EQU2 .AZ " [ %h%h] "
|
MSG.EQU2 .AZ " [ %h%h] "
|
||||||
MSG.EQU3 .AZ " [ %h%h%h] "
|
MSG.EQU3 .AZ " [ %h%h%h] "
|
||||||
MSG.EQU4 .AZ " [%h%h%h%h] "
|
MSG.EQU4 .AZ " [%h%h%h%h] "
|
||||||
MSG.LSYMBOL .AZ " .%d=%h%h%h%h"
|
|
||||||
MSG.SRCLINE .AZ " %05D %s\r\n"
|
MSG.SRCLINE .AZ " %05D %s\r\n"
|
||||||
MSG.ERROR .AZ "**** Fatal Error $%h"
|
MSG.ERROR .AZ "**** Fatal Error $%h"
|
||||||
MSG.SYMBOLS .AZ "Symbol Table:"
|
MSG.SYMBOLS .AZ "Symbol Table:"
|
||||||
MSG.CRLF .AZ " \r\n"
|
MSG.LSYMBOL .AZ " .%d=%h%h%h%h"
|
||||||
MSG.SUMMARY .AZ "\r\nSymbol Table Size : %5D Bytes.\r\nEnd Of Assembly.\r\n"
|
MSG.SUMMARY .AZ "\r\nSymbol Table Size : %5D Bytes.\r\n"
|
||||||
|
MSG.END .AZ "End Of Assembly."
|
||||||
|
MSG.PSTR .AS "{%S}"
|
||||||
|
MSG.CRLF .AZ "\r\n"
|
||||||
|
MSG.ACC .AZ "%b,%d,%h%h%h%h\r\n"
|
||||||
SRC.MOD.RESERVED >PSTR "#/^<>"
|
SRC.MOD.RESERVED >PSTR "#/^<>"
|
||||||
SRC.EXP.RESERVED >PSTR "^!|&<=>+-*/"
|
SRC.EXP.RESERVED >PSTR "^!|&<=>+-*/"
|
||||||
SRC.AM.RESERVED >PSTR "[](),"
|
SRC.AM.RESERVED >PSTR "[](),"
|
||||||
@ -538,8 +548,6 @@ SYM.GlobalID .BS 2
|
|||||||
SYM.hGlobalBuf .BS 1
|
SYM.hGlobalBuf .BS 1
|
||||||
SYM.GlobalPtr .BS 1
|
SYM.GlobalPtr .BS 1
|
||||||
|
|
||||||
SYM.hNameBuf .BS 1
|
|
||||||
|
|
||||||
SYM.LookupID .BS 2
|
SYM.LookupID .BS 2
|
||||||
|
|
||||||
MAC.hMacroList .BS 1
|
MAC.hMacroList .BS 1
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
NEW
|
NEW
|
||||||
PREFIX /A2OSX.BUILD
|
PREFIX
|
||||||
AUTO 4,1
|
AUTO 4,1
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
T.ADDR.MODES .EQ *
|
T.ADDR.MODES .EQ *
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
NEW
|
NEW
|
||||||
PREFIX /A2OSX.BUILD
|
PREFIX
|
||||||
AUTO 4,1
|
AUTO 4,1
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
T.OPCODES .EQ *
|
T.OPCODES .EQ *
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
NEW
|
NEW
|
||||||
PREFIX /A2OSX.BUILD
|
PREFIX
|
||||||
AUTO 4,1
|
AUTO 4,1
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
.OR $0
|
.OR $0
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
NEW
|
NEW
|
||||||
PREFIX /A2OSX.BUILD
|
PREFIX
|
||||||
AUTO 4,1
|
AUTO 4,1
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
T.ADDR.MODES .EQ *
|
T.ADDR.MODES .EQ *
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
NEW
|
NEW
|
||||||
PREFIX /A2OSX.BUILD
|
PREFIX
|
||||||
AUTO 4,1
|
AUTO 4,1
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
T.OPCODES .EQ *
|
T.OPCODES .EQ *
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
NEW
|
NEW
|
||||||
PREFIX /A2OSX.BUILD
|
PREFIX
|
||||||
AUTO 4,1
|
AUTO 4,1
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
.OR $0
|
.OR $0
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
NEW
|
NEW
|
||||||
PREFIX /A2OSX.BUILD
|
PREFIX
|
||||||
AUTO 4,1
|
AUTO 4,1
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
T.ADDR.MODES .EQ *
|
T.ADDR.MODES .EQ *
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
NEW
|
NEW
|
||||||
PREFIX /A2OSX.BUILD
|
PREFIX
|
||||||
AUTO 4,1
|
AUTO 4,1
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
T.OPCODES .EQ *
|
T.OPCODES .EQ *
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
NEW
|
NEW
|
||||||
PREFIX /A2OSX.BUILD
|
PREFIX
|
||||||
AUTO 4,1
|
AUTO 4,1
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
.OR $0
|
.OR $0
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
NEW
|
NEW
|
||||||
PREFIX
|
PREFIX
|
||||||
AUTO 4,1
|
AUTO 4,1
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
T.ADDR.MODES .EQ *
|
T.ADDR.MODES .EQ *
|
||||||
@ -58,6 +58,6 @@ T.REGISTERS .EQ *
|
|||||||
.HS 00
|
.HS 00
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE /A2OSX.BUILD/BIN/DEV/ASM.T.SW16.A
|
SAVE USR/SRC/BIN/ASM.T.SW16.A
|
||||||
LOAD /A2OSX.BUILD/BIN/DEV/ASM.T.SW16.S
|
LOAD USR/SRC/BIN/ASM.T.SW16.S
|
||||||
ASM
|
ASM
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
NEW
|
NEW
|
||||||
PREFIX
|
PREFIX
|
||||||
AUTO 4,1
|
AUTO 4,1
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
T.OPCODES .EQ *
|
T.OPCODES .EQ *
|
||||||
@ -337,6 +337,6 @@ SUB.E .HS 00
|
|||||||
.HS 0000
|
.HS 0000
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE /A2OSX.BUILD/BIN/DEV/ASM.T.SW16.O
|
SAVE USR/SRC/BIN/ASM.T.SW16.O
|
||||||
LOAD /A2OSX.BUILD/BIN/DEV/ASM.T.SW16.S
|
LOAD USR/SRC/BIN/ASM.T.SW16.S
|
||||||
ASM
|
ASM
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
NEW
|
NEW
|
||||||
PREFIX
|
PREFIX
|
||||||
AUTO 4,1
|
AUTO 4,1
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
.OR $0
|
.OR $0
|
||||||
@ -9,9 +9,9 @@ AUTO 4,1
|
|||||||
.DA T.REGISTERS
|
.DA T.REGISTERS
|
||||||
.DA T.OPCODES
|
.DA T.OPCODES
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
.INB BIN/DEV/ASM.T.SW16.O
|
.INB USR/SRC/BIN/ASM.T.SW16.O
|
||||||
.INB BIN/DEV/ASM.T.SW16.A
|
.INB USR/SRC/BIN/ASM.T.SW16.A
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE /A2OSX.BUILD/BIN/DEV/ASM.T.SW16.S
|
SAVE USR/SRC/BIN/ASM.T.SW16.S
|
||||||
ASM
|
ASM
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
NEW
|
NEW
|
||||||
PREFIX /A2OSX.BUILD
|
PREFIX
|
||||||
AUTO 4,1
|
AUTO 4,1
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
T.ADDR.MODES .EQ *
|
T.ADDR.MODES .EQ *
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
NEW
|
NEW
|
||||||
PREFIX /A2OSX.BUILD
|
PREFIX
|
||||||
AUTO 4,1
|
AUTO 4,1
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
T.OPCODES .EQ *
|
T.OPCODES .EQ *
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
NEW
|
NEW
|
||||||
PREFIX /A2OSX.BUILD
|
PREFIX
|
||||||
AUTO 4,1
|
AUTO 4,1
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
.OR $0
|
.OR $0
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
NEW
|
NEW
|
||||||
PREFIX
|
PREFIX
|
||||||
AUTO 4,1
|
AUTO 4,1
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
.OP 65C02
|
.OP 65C02
|
||||||
.OR $2000
|
.OR $2000
|
||||||
.TF BIN/DEV/MEMDUMP
|
.TF BIN/MEMDUMP
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.INB INC/MACROS.I
|
.INB INC/MACROS.I
|
||||||
.INB INC/A2OSX.I
|
.INB INC/A2OSX.I
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
NEW
|
NEW
|
||||||
PREFIX
|
PREFIX
|
||||||
AUTO 4,1
|
AUTO 4,1
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
.OP 65C02
|
.OP 65C02
|
||||||
.OR $2000
|
.OR $2000
|
||||||
.TF BIN/DEV/RPCDUMP
|
.TF BIN/RPCDUMP
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.INB INC/MACROS.I
|
.INB INC/MACROS.I
|
||||||
.INB INC/A2OSX.I
|
.INB INC/A2OSX.I
|
||||||
|
Loading…
Reference in New Issue
Block a user