diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index a9cf2a81..ac763325 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/BIN/ASM.S.EXP.txt b/BIN/ASM.S.EXP.txt index 1da60e8b..e612a243 100644 --- a/BIN/ASM.S.EXP.txt +++ b/BIN/ASM.S.EXP.txt @@ -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) diff --git a/BIN/ASM.S.SRC.txt b/BIN/ASM.S.SRC.txt index 0b2df4ee..ce3441d5 100644 --- a/BIN/ASM.S.SRC.txt +++ b/BIN/ASM.S.SRC.txt @@ -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 diff --git a/BIN/ASM.S.SYM.txt b/BIN/ASM.S.SYM.txt index 73b2f3b5..9e9048b0 100644 --- a/BIN/ASM.S.SYM.txt +++ b/BIN/ASM.S.SYM.txt @@ -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 *--------------------------------------- diff --git a/BIN/ASM.S.txt b/BIN/ASM.S.txt index e10c4179..2ae0912d 100644 --- a/BIN/ASM.S.txt +++ b/BIN/ASM.S.txt @@ -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 diff --git a/DRV/UDETH.DRV.S.txt b/DRV/UDETH.DRV.S.txt index a77748ec..b78dc80b 100644 --- a/DRV/UDETH.DRV.S.txt +++ b/DRV/UDETH.DRV.S.txt @@ -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 diff --git a/INC/A2osX.I.txt b/INC/A2osX.I.txt index cbda9925..a3cb55c9 100644 --- a/INC/A2osX.I.txt +++ b/INC/A2osX.I.txt @@ -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