ADM: fix forward ref bug

This commit is contained in:
burniouf 2023-07-22 15:41:22 +02:00
parent 94dddcd65e
commit e3246c9c83
7 changed files with 86 additions and 75 deletions

Binary file not shown.

View File

@ -158,7 +158,7 @@ EXP.EvalExitOK >LDA.G EXP.Modifier
asl
tax
lda #SYMG.F.FWREF
lda #SYMG.F.FWREF Reset FW flag because of IMM modifier
trb SRC.ACC.F
jmp (J.EXP.MOD-2,x)

View File

@ -248,10 +248,7 @@ SRC.ParseLine.AM
jsr SRC.AddToBuf
.75 ldx SRC.ACC.SIZE
beq * SHOULD NEVER APPEND
jsr SRC.GetACCSize
.75 jsr SRC.GetACCSize
.72 lda #'a'
@ -1139,6 +1136,9 @@ SRC.GetACCSize lda SRC.ACC.F
.1 ldx SRC.ACC.SIZE
beq * SHOULD NEVER APPEND
.2 lda SRC.ACC-1,x
bne .8

View File

@ -71,8 +71,6 @@ SYM.NewGlobal >LDA.G ASM.PASS
>STYA.G SYM.ID
jsr SRC.SkipX
stz SRC.ACC.F
lda #SYMG
@ -81,6 +79,17 @@ SYM.NewGlobal >LDA.G ASM.PASS
lda #0
sta (ZPSymbolBuf),y
phx
jsr SYM.LookupFWFef
bcs .1
lda #SYMG.F.FWREF
tsb SRC.ACC.F
.1 plx
jsr SRC.SkipX
jsr SYM.PC2Acc
jsr SYM.Acc2Global
@ -113,11 +122,16 @@ SYM.GetGlobal >PUSHB.G SYM.hList Pass #2: should be already defined...
>SYSCALL SListGetData
bcs .99
lda (ZPSymbolBuf)
and #SYMG.F.EQU
lda (ZPSymbolBuf) #SYMG.F
bit #SYMG.F.EQU
bne .8
* bit #SYMG.F.FWREF
* beq .2
* >DEBUG
>LDA.G ASM.PC
.2 >LDA.G ASM.PC
ldy #SYMG.V
cmp (ZPSymbolBuf),y
bne .7
@ -158,10 +172,19 @@ SYM.LookupGlobal
sec
rts
.11 jmp SYM.AddFWFef
.11 lda #SYMG.F.FWREF
tsb SRC.ACC.F
lda #$FF
sta SRC.ACC
sta SRC.ACC+1
jmp SYM.AddFWFef
.10 >STYA ZPPtr1 KeyID
jsr SRC.SkipX
.1 >LDA.G SYM.ID
cmp ZPPtr1
bne .3
@ -176,38 +199,19 @@ SYM.LookupGlobal
.2 lda (ZPSymbolBuf),y
sta SRC.ACC.F,y
dey
bne .2 Keep ACC.F unchanged
jsr SRC.SkipX
bpl .2
clc
rts
.3 phx
>PUSHB.G SYM.hList
.3 >PUSHB.G SYM.hList
>PUSHW ZPPtr1 KeyID
>PUSHW L.SRC.ACC.SIZE
>PUSHWI SYMG-1 Get only Global value
>PUSHWI 1 Skip SYMG.F
>PUSHW L.SRC.ACC.F
>PUSHWI SYMG
>PUSHWZ
>SYSCALL SListGetData
bcs .90
jsr SYM.LookupFWFef
bcs .8
* lda #2
* cmp SRC.ACC.SIZE
* beq .8
* sta SRC.ACC.SIZE
lda #SYMG.F.FWREF
tsb SRC.ACC.F
.8 plx
jsr SRC.SkipX
clc
rts
@ -309,18 +313,6 @@ SYM.PC2Acc ldy #ASM.PC+3
dex
bpl .1
ldx #4
.2 lda SRC.ACC-1,x
bne .3
dex
bne .2
inx
.3 stx SRC.ACC.SIZE
rts
*---------------------------------------
SYM.Acc2Global ldy #SYMG-1
@ -573,20 +565,31 @@ SYM.Dump.GLP jsr SYM.Dump.G
.8 clc
.9 rts
*---------------------------------------
SYM.Dump.G ldy #SYMG.SIZE Get Symbol Size
lda (ZPSymbolBuf),y
SYM.Dump.G ldx #8
ldy #SYMG.V+3
.10 lda (ZPSymbolBuf),y
bne .1
dey
dex
dex
bne .10
.1 txa
lsr
pha
asl
tax
>PUSHB L.MSG.EQU0+1,x
>PUSHB L.MSG.EQU0,x
pla
beq .3
pha
tax byte count
clc
adc #SYMG.V
@ -625,7 +628,7 @@ SYM.Dump.LP ldy #SYMG
>PUSHW L.MSG.LSYMBOL
txa
>PUSHA
* >DEBUG
jsr SYM.Dump.PushValueY
lda #5
@ -692,7 +695,7 @@ SYM.Dump.PushValueY
.2 lda SRC.ACC,x
>PUSHA
dex
bpl .1
bpl .2
rts
*---------------------------------------

View File

@ -52,10 +52,9 @@ SYMG.F.RW .EQ %10000000
SYMG.F.EQU .EQ %01000000
SYMG.F.LOCALS .EQ %00100000
SYMG.F.FWREF .EQ %00010000
SYMG.SIZE .EQ 1 1,2,3,4
SYMG.V .EQ 2 DWORD
SYMG.V .EQ 1 DWORD
*
SYMG .EQ 6
SYMG .EQ 5
*---------------------------------------
SYML.ID .EQ 0 1..255
SYML.CtxID .EQ 1 0 if local, !0 if private
@ -151,9 +150,7 @@ L.MSG.CPU.FILE .DA MSG.CPU.FILE
L.SRC.AM.StrBuf .DA SRC.AM.StrBuf
L.ASM.6502 .DA ASM.6502
L.ASM.CPU.FILE .DA ASM.CPU.FILE
L.SRC.ACC.SIZE .DA SRC.ACC.SIZE
L.SRC.ACC .DA SRC.ACC
L.SRC.ARG .DA SRC.ARG
L.SRC.ACC.F .DA SRC.ACC.F
L.T.DIRECTIVES .DA T.DIRECTIVES
J.DIRECTIVES .DA DIR.AC
.DA DIR.AS
@ -589,8 +586,9 @@ MSG.SYMDBG .CZ "SymID=%H\r\n"
*---------------------------------------
ASM.CPU.FILE .BS 65
SRC.ACC.F .BS 1
SRC.ACC.SIZE .BS 1
SRC.ACC.F .BS 1
SRC.ACC .BS 4
SRC.ARG.F .BS 1
SRC.ARG .BS 4

View File

@ -296,7 +296,7 @@ OPEN lda #S.DIB.S.OPENED
* ldx DEVSLOTx0 Done by CLOSE
lda #UD.IO.Cmd.NetOpen
jsr IO.Exec
jsr IO.ExecA
bcs .99
ldy #0
@ -321,7 +321,7 @@ OPEN lda #S.DIB.S.OPENED
CLOSE ldx DEVSLOTx0
lda #UD.IO.Cmd.NetClose
jsr IO.Exec
jsr IO.ExecA
bcs .9
lda #S.DIB.S.OPENED
@ -338,7 +338,7 @@ READ php
ldx DEVSLOTx0
lda #UD.IO.Cmd.NetPeek
jsr IO.Exec
jsr IO.ExecA
bcs READWRITE.99
lda UD.IO.RData,x
@ -364,7 +364,7 @@ READ php
ldx DEVSLOTx0
lda #UD.IO.Cmd.NetRcvd
jsr IO.Exec
jsr IO.ExecA
bcs READWRITE.99
lda UD.IO.RData,x
@ -412,6 +412,8 @@ WRITE php
>STYA ZPIOCTL
ldx DEVSLOTx0
lda #UD.IO.Cmd.NetSend
sta UD.IO.Cmd,x
ldy #S.IOCTL.BYTECNT
lda (ZPIOCTL),y
@ -422,7 +424,6 @@ WRITE php
iny
lda (ZPIOCTL),y
sta UD.IO.WData,x
lda (ZPIOCTL),y
eor #$ff
sta Counter+1
@ -433,6 +434,17 @@ WRITE php
lda (ZPIOCTL),y
sta ZPBufPtr+1
ldy #S.ETH.SRCMAC+5
ldx #5
.10 lda DCB+S.DCB.NIC.MAC,x
sta (ZPBufPtr),y
dey
dex
bpl .10
ldx DEVSLOTx0
ldy #0
.1 inc Counter
@ -449,9 +461,7 @@ WRITE php
inc ZPBufPtr+1
bra .1
.8 lda #UD.IO.Cmd.NetSend
jsr IO.Exec
.8 jsr IO.Exec
bcs WRITE.99
plp
@ -470,7 +480,7 @@ IO.GetStatus stz DCB+S.DCB.NIC.LINK
ldx DEVSLOTx0
lda #UD.IO.Cmd.NetStatus
jsr IO.Exec
jsr IO.ExecA
bcs .99
lda UD.IO.RData,x PHYCFGR
@ -494,9 +504,9 @@ IO.GetStatus stz DCB+S.DCB.NIC.LINK
.99 rts
*--------------------------------------
IO.Exec sta UD.IO.Cmd,x
IO.ExecA sta UD.IO.Cmd,x
stz UD.IO.UnitNum,x
IO.Exec stz UD.IO.UnitNum,x
lda UD.IO.Exec,x

View File

@ -35,7 +35,7 @@ A2osX.BADCALL .EQ $100C
*--------------------------------------
A2osX.SLEEP .EQ $1010
*--------------------------------------
* $BED0->$BEEF : Public Variables
* $1ED0->$1EEF : Public Variables
*--------------------------------------
A2osX.SCRNDEVS .EQ $11D0 0=console, 1-8=VT100, 9=GFX
A2osX.ASCREEN .EQ $11DA Active Screen
@ -60,7 +60,7 @@ A2osX.HWSubT.LCCard .EQ 2
A2osX.TIMER16 .EQ $11EC WORD
A2osX.RANDOM16 .EQ $11EE WORD
*--------------------------------------
* $BEF0->$BEFF : Kernel Config Block
* $11F0->$11FF : Kernel Config Block
*--------------------------------------
A2osX.KCONFIG .EQ $11F0
A2osX.HZ .EQ $11F0 5/6 for 50/60Hz