mirror of
https://github.com/A2osX/A2osX.git
synced 2024-11-22 00:32:44 +00:00
Work In Progress
This commit is contained in:
parent
602468b956
commit
066614dab8
@ -19,9 +19,11 @@ SRC.IN.DEPTH.MAX .EQ 7
|
||||
*---------------------------------------
|
||||
ERR.INV.ARGS .EQ 1
|
||||
ERR.SRC.INV.TYPE .EQ 2
|
||||
ERR.SRC.TOO.LONG .EQ 3
|
||||
ERR.SRC.TOO.MANY.IN .EQ 4
|
||||
ERR.SRC.TOO.MANY.IN .EQ 3
|
||||
ERR.SYM.TOO.LARGE .EQ 10
|
||||
ERR.LINE.TOO.LONG .EQ 20
|
||||
ERR.INVALID.LABEL .EQ 21
|
||||
|
||||
*--------------------------------------
|
||||
* File Header (16 Bytes)
|
||||
*--------------------------------------
|
||||
@ -116,6 +118,9 @@ CS.RUN ldy #bCANCEL
|
||||
.2 jsr SRC.ReadLine
|
||||
bcs .9
|
||||
|
||||
jsr SRC.ParseLine
|
||||
bcs .9
|
||||
|
||||
>PUSHWI TmpBuffer256
|
||||
>PUSHW SRC.LINENUM
|
||||
>PUSHW L.MSG.SRCLINE
|
||||
@ -251,7 +256,7 @@ SRC.OPEN sta hFileName
|
||||
bcs .99
|
||||
bra .8
|
||||
|
||||
.1 cmp #$FA BAS?
|
||||
.1 cmp #$FA S-C/BAS?
|
||||
bne .98
|
||||
|
||||
.8 ldy #SRC.COUNT
|
||||
@ -272,10 +277,10 @@ SRC.ReadLine ldy #SRC.COUNT
|
||||
adc #SRC.hFILETYPES-1
|
||||
tay
|
||||
lda (pData),y
|
||||
bmi SRC.ReadLine.BIN
|
||||
jmp SRC.ReadLine.TXT
|
||||
bmi SRC.ReadLine.TFA
|
||||
jmp SRC.ReadLine.T04
|
||||
*---------------------------------------
|
||||
SRC.ReadLine.BIN >LDYAI 3 LEN + LINENUM
|
||||
SRC.ReadLine.TFA >LDYAI 3 LEN + LINENUM
|
||||
jsr SRC.ReadLine.YA
|
||||
bcs .9
|
||||
|
||||
@ -284,13 +289,13 @@ SRC.ReadLine.BIN >LDYAI 3 LEN + LINENUM
|
||||
lda READ.BUFFER+2
|
||||
sta SRC.LINENUM+1
|
||||
|
||||
lda READ.BUFFER
|
||||
dec
|
||||
dec
|
||||
dec
|
||||
lda READ.BUFFER LEN
|
||||
sec
|
||||
sbc #3 remove LEN + LINENUM from LEN
|
||||
bcc .9 LEN should be at least 3
|
||||
beq .8
|
||||
|
||||
tay
|
||||
tay Read remaining chars
|
||||
lda #0
|
||||
jsr SRC.ReadLine.YA
|
||||
bcs .9
|
||||
@ -307,6 +312,7 @@ SRC.ReadLine.BIN >LDYAI 3 LEN + LINENUM
|
||||
iny
|
||||
bne .1
|
||||
bra .99
|
||||
|
||||
.2 cmp #$C0 REPEAT char?
|
||||
bne .5
|
||||
iny
|
||||
@ -342,11 +348,11 @@ SRC.ReadLine.BIN >LDYAI 3 LEN + LINENUM
|
||||
.8 clc
|
||||
.9 rts
|
||||
|
||||
.99 lda #ERR.SRC.TOO.LONG
|
||||
.99 lda #ERR.LINE.TOO.LONG
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
SRC.ReadLine.TXT
|
||||
SRC.ReadLine.T04
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
@ -362,12 +368,66 @@ SRC.ReadLine.YA >PUSHYA
|
||||
>SYSCALL SYS.MLIRead
|
||||
rts
|
||||
*---------------------------------------
|
||||
SYM.ADD
|
||||
SRC.ParseLine stz SRC.BufPtr
|
||||
jsr SRC.GetNextChar
|
||||
beq .8
|
||||
cmp #'*' Comment?
|
||||
beq .8
|
||||
cmp #' '
|
||||
beq SRC.ParseLine.OpCode
|
||||
|
||||
SRC.ParseLine.Sym cmp #'.' Local Label?
|
||||
bne SRC.ParseLine.SymG
|
||||
|
||||
jsr SRC.GetNextToken
|
||||
bcs
|
||||
jsr SRC.IsNumber
|
||||
bcs SRC.ParseLine.Err1
|
||||
|
||||
SRC.ParseLine.SymG
|
||||
jsr SRC.GetToken
|
||||
jsr SYM.ClearLocal
|
||||
|
||||
|
||||
SRC.ParseLine.OpCode
|
||||
jsr SRC.GetNextCharNB
|
||||
beq .8
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
|
||||
SRC.ParseLine.Err1 lda #ERR.INVALID.LABEL
|
||||
sec
|
||||
rts
|
||||
*---------------------------------------
|
||||
SRC.GetToken
|
||||
*---------------------------------------
|
||||
SRC.GetNextCharNB jsr SRC.GetNextChar
|
||||
beq .9
|
||||
cmp #' '
|
||||
beq SRC.GetNextCharNB
|
||||
.9 rts
|
||||
*---------------------------------------
|
||||
SRC.GetNextChar ldx SRC.BufPtr
|
||||
lda TmpBuffer256,x
|
||||
inc SRC.BufPtr
|
||||
and #$7f
|
||||
rts
|
||||
*---------------------------------------
|
||||
SYM.ClearLocal
|
||||
clc
|
||||
rts
|
||||
|
||||
*---------------------------------------
|
||||
SYM.LOOKUP
|
||||
SYM.AddLocal
|
||||
clc
|
||||
rts
|
||||
*---------------------------------------
|
||||
*---------------------------------------
|
||||
SYM.AddGlobal
|
||||
clc
|
||||
rts
|
||||
*---------------------------------------
|
||||
SYM.Lookup
|
||||
clc
|
||||
rts
|
||||
*---------------------------------------
|
||||
@ -426,6 +486,8 @@ MSG.SRCLINE >CSTRING "%05D-%s\n"
|
||||
hLIBSTR .BS 1
|
||||
hFileName .BS 1
|
||||
SRC.LINENUM .BS 2
|
||||
SRC.BufPtr .BS 1
|
||||
SRC.Token .BS 256
|
||||
READ.BUFFER .BS 256
|
||||
*--------------------------------------
|
||||
.DUMMY
|
||||
|
Loading…
Reference in New Issue
Block a user