diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 278ac30f..3aec6e00 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/.Floppies/A2OSX.TEST.po b/.Floppies/A2OSX.TEST.po index 2a4a6aad..f16f09f3 100644 Binary files a/.Floppies/A2OSX.TEST.po and b/.Floppies/A2OSX.TEST.po differ diff --git a/BIN/CUT.S.txt b/BIN/CUT.S.txt index cd76f023..ac039a89 100644 --- a/BIN/CUT.S.txt +++ b/BIN/CUT.S.txt @@ -15,9 +15,10 @@ NEW .OR ZPBIN ZS.START ZPPtr1 .BS 2 +ZPBuf .BS 2 ZPBufPtr .BS 2 -ArgCount .BS 1 ArgIndex .BS 1 +ArgFile .BS 1 OptionIdx .BS 1 hBuf .BS 1 FieldNum .BS 1 @@ -45,7 +46,7 @@ CS.START cld *-------------------------------------- .1 .DA CS.INIT .DA CS.RUN - .DA CS.DOEVENT + .DA CS.DOEVENT .DA CS.QUIT L.MSG.USAGE .DA MSG.USAGE L.MSG.CRLF .DA MSG.CRLF @@ -64,21 +65,29 @@ CS.RUN lda #C.SPACE cmp #'-' beq .1 - lda ArgCount - sta ArgIndex + lda ArgIndex + sta ArgFile bra .10 -.1 ldy #1 +.1 ldy #1 lda (ZPPtr1),y ldx #OptionList.Cnt-1 .2 cmp OptionList,x beq .3 + dex bpl .2 - bra .97 +.97 lda #E.SYN +.98 pha + >PUSHW L.MSG.USAGE + >PUSHBI 0 + >SYSCALL PrintF + pla + sec +.9 rts .3 txa lsr @@ -89,6 +98,7 @@ CS.RUN lda #C.SPACE jsr CS.RUN.NextArg bcs .97 + lda (ZPPtr1) sta Separator bra .10 @@ -106,24 +116,17 @@ CS.RUN lda #C.SPACE tya ldx OptionIdx sta FieldNum-1,x - bra .10 scan for any other args - -.97 lda #E.SYN -.98 pha - >PUSHW L.MSG.USAGE - >PUSHBI 0 - >SYSCALL PrintF - pla - sec -.9 rts + bra .10 scan for any other args .8 >LDYAI 256 >SYSCALL GetMem bcs .9 + >STYA ZPBuf >STYA ZPBufPtr stx hBuf - lda ArgIndex + + lda ArgFile beq .80 >PUSHW ZPBufPtr @@ -133,7 +136,7 @@ CS.RUN lda #C.SPACE jsr CS.RUN.OUT bcs .9 - + lda #0 Exit with no Error sec rts @@ -147,34 +150,38 @@ CS.RUN lda #C.SPACE lda (ZPPtr1) cmp #S.FD.T.PIPE - bne .97 - + bne CS.RUN.LOOP + ldy #S.PS.hStdIn lda (pPS),y sta hToClose *-------------------------------------- CS.RUN.LOOP >SLEEP - + ldy #S.PS.hStdIn lda (pPS),y >PUSHA - >PUSHW ZPBufPtr - >PUSHWI 256 + + >LDYA ZPBuf + >STYA ZPBufPtr + >PUSHYA + + >PUSHWI 255 >SYSCALL FGetS bcs .8 lda (ZPBufPtr) beq CS.RUN.LOOP - + jsr CS.RUN.OUT bcc CS.RUN.LOOP - + .8 cmp #MLI.E.EOF bne .90 - + lda #0 .90 sec -.9 rts +.9 rts *-------------------------------------- CS.RUN.OUT ldx FieldNum beq CS.RUN.OUT.MN @@ -244,12 +251,12 @@ CS.RUN.OUT.MN ldy #0 cpy EndChar beq .4 - + iny bra .3 - + .4 lda #0 - sta (ZPBufPtr),y + sta (ZPBufPtr),y .8 ldy StartChar beq .80 @@ -262,10 +269,11 @@ CS.RUN.OUT.MN ldy #0 rts *-------------------------------------- -CS.RUN.NextArg inc ArgCount - lda ArgCount +CS.RUN.NextArg inc ArgIndex + lda ArgIndex >SYSCALL ArgV bcs .9 + >STYA ZPPtr1 .9 rts @@ -283,7 +291,7 @@ CS.QUIT lda hToClose beq .1 >SYSCALL FClose Close the pipe - + .1 lda hBuf beq .8 diff --git a/BIN/LS.S.txt b/BIN/LS.S.txt index 6091aa91..277f254d 100644 --- a/BIN/LS.S.txt +++ b/BIN/LS.S.txt @@ -186,7 +186,7 @@ CS.RUN.LOOP stz bPass2 bcs .6 jsr FilterMatch - bcs .8 no match, skip.... + bcs .5 no match, skip.... bit bAllmostAll bmi .4 @@ -820,7 +820,7 @@ OptionList .AS "ACFLRacflr" OptionVars .DA #bAllmostAll,#bColumn,#bFullPath,#bLong,#bRecurse,#bAllmostAll,#bColumn,#bFullPath,#bLong,#bRecurse *-------------------------------------- MSG.USAGE .AS "Usage : LS [-A] [-C] [-F] [-L] [-R] [filespec]\r\n" - .AS " -A : Show dot files\r\n" + .AS " -A : Show all files\r\n" .AS " -C : List in multiple columns\r\n" .AS " -F : Show full paths\r\n" .AS " -L : Use long listing format\r\n" diff --git a/BIN/MEMDUMP.S.txt b/BIN/MEMDUMP.S.txt index a976d9f2..48249749 100644 --- a/BIN/MEMDUMP.S.txt +++ b/BIN/MEMDUMP.S.txt @@ -17,6 +17,7 @@ ZPPTR1 .BS 2 ZPPTR2 .BS 2 MEM.COUNT .BS 1 USED.COUNT .BS 1 +LINE.COUNT .BS 1 bSTOP .BS 1 ZPReadAux sta SETREADAUX @@ -35,7 +36,7 @@ CS.START cld .DA #0 .DA CS.END-CS.START Code Size (without Constants) .DA DS.END-DS.START Data SegmentSize - .DA #32 Stack Size + .DA #64 Stack Size .DA #ZS.END-ZS.START Zero Page Size .DA 0 *-------------------------------------- @@ -48,10 +49,10 @@ CS.START cld L.MSG0 .DA MSG0 L.MSG1.INV .DA MSG1.INV L.MSG1 .DA MSG1 -L.MSG1X .DA MSG1X L.MSG1.BIN .DA MSG1.BIN L.MSG1.STR .DA MSG1.STR L.MSG1.HEX .DA MSG1.HEX +L.MSG1X .DA MSG1X L.MSG2 .DA MSG2 L.MSG3 .DA MSG3 .DA 0 @@ -73,18 +74,9 @@ CS.RUN ldx #ZPCodeLen-1 CS.RUN.LOOP inc MEM.COUNT skip slot 0 - lda bSTOP - beq .1 - -.10 >SYSCALL GetChar + jsr CS.RUN.CheckStop bcs CS.INIT.RTS - cmp #3 Ctrl-C - beq CS.INIT.RTS - - cmp #$13 Ctrl-S - - stz bSTOP .1 lda (ZPPTR1) bpl .2 @@ -102,26 +94,15 @@ CS.RUN.LOOP inc MEM.COUNT skip slot 0 >CMP.G MemStat+S.MSTAT.MLast bne CS.RUN.LOOP - jsr CS.RUN.MSTAT + jsr CS.RUN.SUMMARY jsr CS.RUN.INIT CS.RUN.LOOPX inc MEM.COUNT skip slot 0 - lda bSTOP - beq .1 - -.10 >SYSCALL GetChar + jsr CS.RUN.CheckStop bcs CS.INIT.RTS - cmp #3 Ctrl-C ? - beq CS.INIT.RTS - - cmp #$13 Ctrl-S - bne .10 - - stz bSTOP - .1 ldy #S.MEM.F jsr ZPReadAux bpl .2 @@ -141,39 +122,33 @@ CS.RUN.LOOPX inc MEM.COUNT skip slot 0 >CMP.G MemStat+S.MSTAT.XLast bne CS.RUN.LOOPX -CS.RUN.XSTAT >PUSHW L.MSG2 - >PUSHB USED.COUNT - >PUSHB MEM.COUNT - >PUSHBI 2 - >SYSCALL PrintF + jsr CS.RUN.SUMMARY - >PUSHW L.MSG3 - >PUSHW.G MemStat+S.MSTAT.XH - >PUSHW.G MemStat+S.MSTAT.XF - >PUSHW.G MemStat+S.MSTAT.XL - >LDA.G MemStat+S.MSTAT.XF - sec - >SBC.G MemStat+S.MSTAT.XL - pha - >LDA.G MemStat+S.MSTAT.XF+1 - >SBC.G MemStat+S.MSTAT.XL+1 - ply - >PUSHYA - >PUSHBI 8 - >SYSCALL PrintF + jsr CS.RUN.MSTAT + jsr CS.RUN.XSTAT lda #0 sec rts - *-------------------------------------- -CS.RUN.MSTAT >PUSHW L.MSG2 +CS.RUN.INIT >LDYAI Mem.Table+S.MEM skip slot 0 + >STYA ZPPTR1 + + >PUSHW L.MSG0 + >PUSHBI 0 + jsr CS.RUN.PrintF + + stz MEM.COUNT + stz USED.COUNT + rts +*-------------------------------------- +CS.RUN.SUMMARY >PUSHW L.MSG2 >PUSHB USED.COUNT >PUSHB MEM.COUNT >PUSHBI 2 - >SYSCALL PrintF - - >PUSHW L.MSG3 + jmp CS.RUN.PrintF +*-------------------------------------- +CS.RUN.MSTAT >PUSHW L.MSG3 >PUSHW.G MemStat+S.MSTAT.MH >PUSHW.G MemStat+S.MSTAT.MF >PUSHW.G MemStat+S.MSTAT.ML @@ -186,21 +161,22 @@ CS.RUN.MSTAT >PUSHW L.MSG2 ply >PUSHYA >PUSHBI 8 - >SYSCALL PrintF - - lda #0 - sec - rts + jmp CS.RUN.PrintF *-------------------------------------- -CS.RUN.INIT >LDYAI Mem.Table+S.MEM skip slot 0 - >STYA ZPPTR1 - - >LDYA L.MSG0 - >SYSCALL PutS - - stz MEM.COUNT - stz USED.COUNT - rts +CS.RUN.XSTAT >PUSHW L.MSG3 + >PUSHW.G MemStat+S.MSTAT.XH + >PUSHW.G MemStat+S.MSTAT.XF + >PUSHW.G MemStat+S.MSTAT.XL + >LDA.G MemStat+S.MSTAT.XF + sec + >SBC.G MemStat+S.MSTAT.XL + pha + >LDA.G MemStat+S.MSTAT.XF+1 + >SBC.G MemStat+S.MSTAT.XL+1 + ply + >PUSHYA + >PUSHBI 8 + jmp CS.RUN.PrintF *-------------------------------------- CS.RUN.PRINTMEM >PUSHW L.MSG1 @@ -255,9 +231,7 @@ CS.RUN.PRINTMEM >PUSHW L.MSG1 jsr CS.RUN.CHECKPS bcc .12 - >PUSHW L.MSG1.INV - >PUSHBI 0 - >SYSCALL PrintF + jsr CS.RUN.PrintINV .12 >PUSHBI 9 >SYSCALL PrintF @@ -296,7 +270,7 @@ CS.RUN.PRINTMEM.DATA >PUSHW ZPPTR2 String >PUSHBI 3 - >SYSCALL PrintF + jsr CS.RUN.PrintF rts .2 >PUSHW L.MSG1.HEX @@ -310,7 +284,7 @@ CS.RUN.PRINTMEM.DATA >PUSHBI 16 - >SYSCALL PrintF + jsr CS.RUN.PrintF rts CS.RUN.PRINTMEM.BIN @@ -321,7 +295,7 @@ CS.RUN.PRINTMEM.BIN >SYSCALL GetMemPtr >PUSHYA >PUSHBI 2 - >SYSCALL PrintF + jsr CS.RUN.PrintF rts *-------------------------------------- CS.RUN.PRINTMEMX @@ -381,12 +355,10 @@ CS.RUN.PRINTMEMX jsr CS.RUN.CHECKPS bcc .12 - >PUSHW L.MSG1.INV - >PUSHBI 0 - >SYSCALL PrintF + jsr CS.RUN.PrintINV .12 >PUSHBI 9 - >SYSCALL PrintF + jsr CS.RUN.PrintF rts *-------------------------------------- CS.RUN.CHECKPS ldx #0 @@ -403,6 +375,63 @@ CS.RUN.CHECKPS ldx #0 .8 clc rts *-------------------------------------- +CS.RUN.CheckStop + lda bSTOP + beq .2 + +.1 >SLEEP + + >SYSCALL GetChar + bcs .9 + + cmp #3 Ctrl-C + beq .9 CS + + stz bSTOP + + clc + rts + +.2 ldy #S.PS.hStdIn + lda (pPS),y + >SYSCALL FEOF + bcs .9 + + tay + bne .8 no char + + >SYSCALL GetChar + bcs .9 + + cmp #3 Ctrl-C + beq .9 CS + + cmp #$13 Ctrl-S + bne .8 + + dec bSTOP + +.8 clc +.9 rts +*-------------------------------------- +CS.RUN.PrintINV >PUSHW L.MSG1.INV + >PUSHBI 0 + >SYSCALL PrintF + rts +*-------------------------------------- +CS.RUN.PrintF >SYSCALL PrintF + bcs .9 + + inc LINE.COUNT + lda LINE.COUNT + cmp #23 + bcc .8 + + dec bSTOP + stz LINE.COUNT +.8 +.9 rts +*-------------------------------------- CS.DOEVENT sec rts *-------------------------------------- @@ -416,18 +445,18 @@ ZPCode sta SETREADAUX rts ZPCodeLen .EQ *-ZPCode *-------------------------------------- -MSG0 .AZ "hMem Flags PID REF PTR LEN BINPATH/DATA" +MSG0 .AZ "hMem Flags PID REF PTR LEN BINPATH/DATA\r\n" MSG1.INV .AZ "\e[7m" MSG1 .AZ "$%h %s %3d %3d $%H %5D " -MSG1X .AZ "$%h %s %3d %3d $%H %5D\e[0m\r\n" MSG1.BIN .AZ "{%s}\e[0m\r\n" MSG1.STR .AZ "[%03d:%s]\e[0m\r\n" MSG1.HEX .AZ "?HEX:%h%h.%h%h.%h%h.%h%h.%h%h.%h%h.%h%h.%h%h\e[0m\r\n" -MSG2 .AZ "\r\nAllocated hMem:%d, Total:%d\r\n" -MSG3 .AS "High Memory: $%H\r\n" +MSG1X .AZ "$%h %s %3d %3d $%H %5D\e[0m\r\n" +MSG2 .AZ "Allocated hMem:%d, Total:%d\r\n" +MSG3 .AS "\r\nHigh Memory: $%H\r\n" .AS "Free ULimit: $%H\r\n" .AS "Low Memory: $%H\r\n" - .AZ "\r\nFree Memory: %D Bytes.\r\n\r\n" + .AZ "Free Memory: %D Bytes.\r\n\r\n" MSG.FLAGS .AS "UZXAfcds" MSG.FLAGSX .AS "UZXAidep" *-------------------------------------- diff --git a/BIN/SH.S.CORE.txt b/BIN/SH.S.CORE.txt index 4e275820..97ffa365 100644 --- a/BIN/SH.S.CORE.txt +++ b/BIN/SH.S.CORE.txt @@ -442,47 +442,37 @@ CORE.ArgV.Add lda #C.SPACE iny .1 jsr CORE.GetNextChar - bcs .5 + bcs .7 .2 cmp ZPTmpW bne .3 jsr CORE.GetNextChar - bra .5 + bra .7 .3 ldx ZPTmpW cpx #C.SPACE - bne .40 + bne .6 jsr CORE.IsEndCmd - bcc .5 + bcc .7 -.40 sta (ZPArgVBufPtr),y +.6 sta (ZPArgVBufPtr),y iny -.4 jsr CORE.GetNextChar + jsr CORE.GetNextChar bcc .2 -.5 lda #0 +.7 lda #0 sta (ZPArgVBufPtr),y >LDYA ZPArgVBufPtr >STYA ZPArgVBufPrev >PUSHYA - >PUSHWZ + >PUSHW ZPArgVBufPtr >SYSCALL Expand bcs .9 - phx - >STYA ZPPtr1 - - ldy #$ff - -.7 iny - lda (ZPPtr1),y - sta (ZPArgVBufPtr),y - bne .7 - tya beq .8 Empty string.... @@ -492,9 +482,9 @@ CORE.ArgV.Add lda #C.SPACE bcc .8 inc ZPArgVBufPtr+1 + clc -.8 pla - >SYSCALL FreeMem +.8 .9 rts *-------------------------------------- CORE.ArgV.Next lda (ZPArgVBufPtr) diff --git a/BIN/STAT.S.txt b/BIN/STAT.S.txt index c9ba8479..7e8fc23e 100644 --- a/BIN/STAT.S.txt +++ b/BIN/STAT.S.txt @@ -226,7 +226,8 @@ CS.RUN.DUMP lda ArgFile >PUSHW.G StatBuf+S.STAT.GID >PUSHL.G StatBuf+S.STAT.SIZE >PUSHL.G StatBuf+S.STAT.BLOCKS - >PUSHBI 12 + >PUSHW.G StatBuf+S.STAT.BLKSIZE + >PUSHBI 14 >SYSCALL PrintF >PUSHW L.MSG.CMATimes @@ -421,7 +422,7 @@ MSG.Mod .AZ "Mod : %s\r\n" MSG.UIDGIDSIZE .AS "UID : %10D\r\n" .AS "GID : %10D\r\n" .AS "Size : %10u\r\n" - .AZ "Blocks : %10u\r\n" + .AZ "Blocks : %10u (%D)\r\n" MSG.CMATimes .AS "Created : %s\r\n" .AS "Modified : %s\r\n" .AZ "Accessed : %s\r\n" diff --git a/ProDOS.FX/ProDOS.S.DCLK.txt b/ProDOS.FX/ProDOS.S.DCLK.txt index f94571f2..72a5ef21 100644 --- a/ProDOS.FX/ProDOS.S.DCLK.txt +++ b/ProDOS.FX/ProDOS.S.DCLK.txt @@ -13,6 +13,7 @@ DCLK.START php lda $C400 stz $C0C0 + stz $C0C1 ldy #8 stz $C0C2 diff --git a/ProDOS.FX/ProDOS.S.LDR.txt b/ProDOS.FX/ProDOS.S.LDR.txt index 5dfc40c8..212da910 100644 --- a/ProDOS.FX/ProDOS.S.LDR.txt +++ b/ProDOS.FX/ProDOS.S.LDR.txt @@ -330,7 +330,9 @@ LDR.ReadRoot lda LDR.MLIOL.P+1 place boot devnum in globals bcc .1 if ok, read next block. .FIN -.8 jmp $800 jmp to "load interpreter" code +.8 +* >DEBUG + jmp $800 jmp to "load interpreter" code .9 ldx #LDR.MSG.ROOTERR jsr LDR.PrintX @@ -354,9 +356,9 @@ DS121x.DATA1 .EQ idxl DS121x.DATA2 .EQ A1L *-------------------------------------- LDR.ClkDevScan jsr LDR.IsIIc - bcc LDR.ClkDevNCLK + bcc LDR.ClkDevNCLK //c only - php +LDR.ClkDevDCLK php sei lda $CFFF @@ -374,9 +376,10 @@ LDR.ClkDevScan jsr LDR.IsIIc ldx #8 -.2 sta $C0C3 - stz $C0C0 +.2 stz $C0C0 + sta $C0C3 + lsr dex bne .2 @@ -388,6 +391,8 @@ LDR.ClkDevScan jsr LDR.IsIIc .4 ldy #8 + stz $C0C0 + .5 lda $C0C3 lsr @@ -398,6 +403,7 @@ LDR.ClkDevScan jsr LDR.IsIIc dex bne .4 + stz $C0C0 pla sta $C0C3 @@ -408,12 +414,12 @@ LDR.ClkDevScan jsr LDR.IsIIc .6 lda DS121x.DATA1-1,x cmp DS121x.ValidLO-1,x - bcc LDR.ClkDevNCLK + bcc .9 cmp DS121x.ValidHI-1,x bcc .7 - bne LDR.ClkDevNCLK + bne .9 .7 dex bne .6 @@ -424,10 +430,10 @@ LDR.ClkDevScan jsr LDR.IsIIc ldx PAKME.DCLK ldy PAKME.DCLK+1 jmp LDR.SetupCLK -*-------------------------------------- -LDR.ClkDevNCLK cld - php +.9 cld +*-------------------------------------- +LDR.ClkDevNCLK php sei lda RDCXROM diff --git a/SBIN/LOGIN.S.txt b/SBIN/LOGIN.S.txt index 1126211a..11c1cec4 100644 --- a/SBIN/LOGIN.S.txt +++ b/SBIN/LOGIN.S.txt @@ -275,46 +275,43 @@ CS.RUN.DumpFile >PUSHYA >PUSHBI S.FI.T.TXT >PUSHWZ Aux type >SYSCALL FOpen - bcs .9 + bcs .99 stx ZPhFile + >LDYAI 256 >SYSCALL GetMem - bcs .99 + bcs .9 >STYA ZPBufPtr stx ZPhBuf .1 >PUSHB ZPhFile >PUSHW ZPBufPtr - >PUSHWI 256 + >PUSHWI 255 >SYSCALL FGetS - bcs .7 + bcs .8 >PUSHW ZPBufPtr - >PUSHWZ + >PUSHW ZPBufPtr >SYSCALL Expand - bcc .2 -.99 php - pha - jsr .8 - pla - plp -.9 rts - -.2 phx + >LDYA ZPBufPtr >SYSCALL PutS - pla - >SYSCALL FreeMem bra .1 -.7 lda ZPhBuf +.8 lda ZPhBuf >SYSCALL FreeMem + + clc -.8 lda ZPhFile +.9 php + pha + lda ZPhFile >SYSCALL FClose - rts + pla + plp +.99 rts *-------------------------------------- CS.DOEVENT sec rts diff --git a/SBIN/NETWORKD.S.txt b/SBIN/NETWORKD.S.txt index 13ac59aa..1aad9e23 100644 --- a/SBIN/NETWORKD.S.txt +++ b/SBIN/NETWORKD.S.txt @@ -6,7 +6,7 @@ NEW .TF sbin/networkd *-------------------------------------- LIB.MAX .EQ 4 -DBG .EQ 2 +DBG .EQ 0 *-------------------------------------- .INB inc/macros.i .INB inc/a2osx.i @@ -21,10 +21,10 @@ DBG .EQ 2 .DUMMY .OR ZPBIN ZS.START -pNETCFG .BS 2 pBuf .BS 2 +pNETCFG .BS 2 hEtcNetwork .BS 1 -hLineBuf .BS 1 +hBuf .BS 1 hFrameIn .BS 1 ZS.END .ED *-------------------------------------- @@ -41,7 +41,7 @@ CS.START cld .DO DBG=1 .DA #128 Stack Size .ELSE - .DA #64 Stack Size + .DA #32 Stack Size .FIN .DA #ZS.END-ZS.START Zero Page Size .DA 0 @@ -61,7 +61,6 @@ L.MSG.OK .DA MSG.OK L.MSG.ERR .DA MSG.ERR L.DEVNAME .DA DEVNAME L.IOCTL .DA IOCTL -L.DCB.NIC .DA DCB.NIC L.ETCNETWORK .DA ETCNETWORK .DO DBG=1 L.MSG.DBG .DA MSG.DBG @@ -70,18 +69,46 @@ L.MSG.DBG.REJECT .DA MSG.DBG.REJECT .DA 0 *-------------------------------------- CS.INIT lda DevID - bne .99 + bne .8 - jsr CS.INIT.DEV - bcs .9 + >LDYAI 64 + >SYSCALL GetMem + bcs .99 - jsr CS.INIT.LIBS - bcs .9 + >STYA pBuf + stx hBuf - jsr CS.INIT.CONF -.9 rts + >STYA IOCTL+S.IOCTL.BUFPTR for CS.INIT.DEV + + jsr CS.INIT.DEV + bcs .90 -.99 >LDYA L.MSG.RUNNING + lda LibCnt + +.1 inc + >SYSCALL ArgV + bcs .2 + + jsr CS.INIT.LIB + bcs .90 + + inc LibCnt + lda LibCnt + cmp #LIB.MAX + bne .1 + +.2 jsr CS.INIT.CONF + +.90 php + pha + lda hBuf + >SYSCALL FreeMem + pla + plp + +.99 rts + +.8 >LDYA L.MSG.RUNNING >SYSCALL PutS lda #0 sec @@ -110,24 +137,22 @@ CS.INIT.DEV >PUSHW L.DEVNAME >PUSHBI 2 >SYSCALL PrintF - >LDYA L.DCB.NIC - >STYA IOCTL+S.IOCTL.BUFPTR lda #S.IOCTL.S.GETDCB sta IOCTL+S.IOCTL.S - >PUSHB DevID - >PUSHBI IOCTL.STATUS + ldx #IOCTL.STATUS +*-------------------------------------- +CS.IOCTL lda DevID + >PUSHA + txa + >PUSHA >PUSHW L.IOCTL >SYSCALL IOCTL rts *-------------------------------------- -CS.INIT.LIBS lda LibCnt - -.1 inc - >SYSCALL ArgV - bcs .8 - - phy +* pBuf = DCB.NIC +*-------------------------------------- +CS.INIT.LIB phy pha >PUSHW L.MSG.LIB pla @@ -141,18 +166,44 @@ CS.INIT.LIBS lda LibCnt >SYSCALL LoadLib jsr CS.RUN.CheckErr - bcs CS.INIT.LIBS.9 + bcs .9 ldy LibCnt sta hLIBs,y tay ldx #LIBNET.GETCFG jsr A2osX.LIBCALL - bcs CS.INIT.LIBS.9 + bcs .9 >STYA pNETCFG - jsr CS.INIT.SETUP.NETCFG + lda DevID + ldy #S.NETCFG.DevID + sta (pNETCFG),y + + ldy #S.DCB.NIC.FLAGS + lda (pBuf),y + + ldy #S.NETCFG.DevFlags + sta (pNETCFG),y + + ldx #6 + ldy #S.DCB.NIC.MAC + +.2 lda (pBuf),y + pha + iny + dex + bne .2 + + ldx #6 + ldy #S.NETCFG.MAC+5 + +.3 pla + sta (pNETCFG),y + dey + dex + bne .3 >PUSHW pNETCFG @@ -161,59 +212,25 @@ CS.INIT.LIBS lda LibCnt ldx #LIBNET.SETCFG jsr A2osX.LIBCALL - bcs CS.INIT.LIBS.9 - inc LibCnt - lda LibCnt - cmp #LIB.MAX - bne .1 +* clc -.8 clc - -CS.INIT.LIBS.9 rts +.9 rts *-------------------------------------- -CS.INIT.SETUP.NETCFG - - lda DevID - ldy #S.NETCFG.DevID - sta (pNETCFG),y - - iny S.NETCFG.DevFlags - lda DCB.NIC+S.DCB.NIC.FLAGS - sta (pNETCFG),y - - ldx #5 - ldy #S.NETCFG.MAC+5 - -.2 lda DCB.NIC+S.DCB.NIC.MAC,x - sta (pNETCFG),y - dey - dex - bpl .2 - - rts -*-------------------------------------- -CS.INIT.CONF >LDYAI 64 - >SYSCALL GetMem - bcs CS.INIT.LIBS.9 - - >STYA pBuf - stx hLineBuf - - >PUSHW L.ETCNETWORK +CS.INIT.CONF >PUSHW L.ETCNETWORK >PUSHBI O.RDONLY+O.TEXT >PUSHBI S.FI.T.TXT >PUSHWZ >SYSCALL FOpen - bcs .98 + bcs .9 sta hEtcNetwork .1 >PUSHB hEtcNetwork >PUSHW pBuf - >PUSHWI 64 + >PUSHWI 63 >SYSCALL FGetS - bcs .80 + bcs .8 >PUSHW L.MSG.EXEC >PUSHW pBuf @@ -227,25 +244,15 @@ CS.INIT.CONF >LDYAI 64 >SLEEP bra .1 -.98 pha - jsr .81 - pla - sec - rts - -.80 lda hEtcNetwork +.8 lda hEtcNetwork >SYSCALL FClose -.81 lda hLineBuf - >SYSCALL FreeMem * clc - rts + +.9 rts *-------------------------------------- -CS.RUN >PUSHB DevID - >PUSHBI IOCTL.READ - >PUSHW L.IOCTL - - >SYSCALL IOCTL +CS.RUN ldx #IOCTL.READ + jsr CS.IOCTL bcs .8 No Frame sta hFrameIn @@ -288,12 +295,12 @@ CS.RUN >PUSHB DevID .2 .DO DBG=1 jsr CS.RUN.FILTER - bcs .33 >LDYA L.MSG.DBG.REJECT >SYSCALL puts .33 .FIN + lda hFrameIn >SYSCALL FreeMem jmp CS.RUN @@ -305,8 +312,10 @@ CS.RUN >PUSHB DevID CS.RUN.FILTER lda (pBuf) cmp #$ff beq .9 + dec beq .9 + ldy #S.ETH.EII.TYPE+1 lda (pBuf),y bne .9 @@ -370,10 +379,8 @@ CS.QUIT ldx #0 .7 lda DevID beq .8 - >PUSHA - >PUSHBI IOCTL.CLOSE - >PUSHWZ - >SYSCALL IOCTL + ldx #IOCTL.CLOSE + jsr CS.IOCTL .8 clc rts @@ -385,8 +392,10 @@ MSG.DEV.KO .AZ "NETWORKD:No Device Found, exiting." MSG.DEV.OK .AZ "NETWORKD:Bound To Device : %s\r\n" MSG.LIB .AZ "NETWORKD:Loading %s..." MSG.EXEC .AZ "NETWORKD:Running %s..." +*-------------------------------------- MSG.OK .AZ "[OK]" MSG.ERR .AZ "[%h]\r\n" +*-------------------------------------- ETCNETWORK .AZ "${BOOT}etc/network" .DO DBG=1 MSG.DBG .AS "FRM ETH:%h%h%h%h%h%h.%h%h%h%h%h%h.%h%h\r\n" @@ -400,7 +409,6 @@ LibCnt .BS 1 hLIBs .BS LIB.MAX+1 for ending 0 if MAX libs DEVNAME .AZ "/dev/eth1" IOCTL .BS S.IOCTL -DCB.NIC .BS S.DCB.NIC *-------------------------------------- .DUMMY .OR 0 diff --git a/SHARED/X.FILEENUM.S.txt b/SHARED/X.FILEENUM.S.txt index 770871ed..ef37daa4 100644 --- a/SHARED/X.FILEENUM.S.txt +++ b/SHARED/X.FILEENUM.S.txt @@ -36,20 +36,22 @@ ExcludeMatch sec tax - beq FilterMatch.RTS No filter....exit with CS excluded + beq FilterMatch.RTS No filter....exit with passed carry >SYSCALL GetMemPtr >STYA ZPPtr2 ldy #S.STAT.FSID - lda (ZPFileStat),y - tax if 0, Regular ProDOS.... + lda (ZPFileStat),y if 0, Regular ProDOS.... + pha save FSID for comapring later bne .10 >LDYA ZPPtr2 ... so CI compare >SYSCALL StrUpr -.10 lda (ZPPtr2) Get first pattern byte +.10 plx get back FSID + + lda (ZPPtr2) Get first pattern byte beq .8 Match always if empty ldy #0 @@ -216,7 +218,7 @@ InitSrcDirYA >PUSHYA >STA.G hFilter lda #0 - sta (ZPPtr2) + sta (ZPPtr2) cut path at last '/' to remove wildcards .5 >LDYAI 256 >SYSCALL GetMem Get a 256 buffer to store BasePath diff --git a/SYS/KERNEL.S.ARG.txt b/SYS/KERNEL.S.ARG.txt index ed7c9c5b..92364b36 100644 --- a/SYS/KERNEL.S.ARG.txt +++ b/SYS/KERNEL.S.ARG.txt @@ -61,8 +61,10 @@ K.ArgV tax save requested arg# .1 lda (ZPPtr2) end of ARGV[] ? beq .9 yes, not found.... + dex bmi .7 + .3 jsr SHARED.GetCP2 skip str bne .3 @@ -115,6 +117,7 @@ K.Arg2ArgV >PULLW ZPPtr2 Get target buffer .3 cmp #C.SPACE bne .6 regular char ...store... + tya bmi .4 between quotes... store space... diff --git a/SYS/KERNEL.S.BIN.txt b/SYS/KERNEL.S.BIN.txt index 75984273..1b7c1664 100644 --- a/SYS/KERNEL.S.BIN.txt +++ b/SYS/KERNEL.S.BIN.txt @@ -202,8 +202,7 @@ BIN.Load.1 >PUSHWI K.Buf256 jsr BIN.CompCSEndYA jsr BIN.RelExe - >LDYAI K.Buf256 get back bin path - jsr K.strdup make a copy of this string + jsr STRING.DupBuf256 get back bin path & jsr K.strdup make a copy of this string bcs BIN.Load.Free jsr Mem.SetOwnerPS0 Make BINPATH owned by PS0 diff --git a/SYS/KERNEL.S.DEV.txt b/SYS/KERNEL.S.DEV.txt index 93807458..fd540268 100644 --- a/SYS/KERNEL.S.DEV.txt +++ b/SYS/KERNEL.S.DEV.txt @@ -270,7 +270,7 @@ DEV.MkFDy sta .8+1 A = S.FD.T >STYA pFD stx IO.hFD - pha + jsr Mem.SetOwnerPS0 txa @@ -282,7 +282,7 @@ DEV.MkFDy sta .8+1 A = S.FD.T .8 lda #$ff SELF MODIFIED sta (pFD) - pla Y,A = pFD, X = hFILE + >LDYA pFD Y,A = pFD, X = hFILE * clc .9 rts @@ -292,14 +292,14 @@ DEV.GetFreeFD lda #0 DEV.GetFD ldx #1 .1 cmp hFDs-1,x - beq .8 + beq DEV.GetFD.8 inx cpx #K.hFD.MAX+1 bne .1 tax - beq .9 + beq DEV.GetFD.8 lda #E.INVH .HS 2C BIT ABS @@ -307,16 +307,13 @@ DEV.GetFD ldx #1 * sec rts -.8 clc +DEV.GetFD.8 clc rts *-------------------------------------- DEV.hFDFree lda IO.hFD - beq .8 + beq DEV.GetFD.8 jmp K.FreeMem - -.8 clc - rts *-------------------------------------- MAN SAVE usr/src/sys/kernel.s.dev diff --git a/SYS/KERNEL.S.FS.txt b/SYS/KERNEL.S.FS.txt index 1ea18550..fd46d556 100644 --- a/SYS/KERNEL.S.FS.txt +++ b/SYS/KERNEL.S.FS.txt @@ -341,7 +341,10 @@ FS.ClrStat ldx #S.STAT-1 lda A2osX.FSID sta K.S.STAT+S.STAT.FSID - + + lda #2 + sta K.S.STAT+S.STAT.BLKSIZE+1 = 512 bytes + rts *-------------------------------------- FS.GFI.Src .DA #S.FI.T,#S.FI.AUXTYPE,#S.FI.AUXTYPE+1 diff --git a/SYS/KERNEL.S.MEM.txt b/SYS/KERNEL.S.MEM.txt index 330db049..1553bed0 100644 --- a/SYS/KERNEL.S.MEM.txt +++ b/SYS/KERNEL.S.MEM.txt @@ -291,7 +291,9 @@ MEM.NextSlot lda ZPMemMgrSPtr adc #S.MEM sta ZPMemMgrSPtr bcc .8 + inc ZPMemMgrSPtr+1 + .8 rts *-------------------------------------- MEM.Init0 phx @@ -351,6 +353,7 @@ K.FreeMem.ERR >PUSHWI .1 *-------------------------------------- K.FreeMem tay beq K.FreeMem.ERR Slot=0, reserved by Kernel + cmp Mem.LastSlot bcc .10 diff --git a/SYS/KERNEL.S.PS.txt b/SYS/KERNEL.S.PS.txt index db04a69d..6362c604 100644 --- a/SYS/KERNEL.S.PS.txt +++ b/SYS/KERNEL.S.PS.txt @@ -11,26 +11,8 @@ NEW * ## RETURN VALUE * A = Child PSID *\-------------------------------------- -K.ExecL >PULLB PS.Flags - - >LDYAI 256 - jsr K.GetMem - bcs .99 - - stx .90+1 - >STYA PS.ArgV - >PUSHYA - jsr K.Arg2ArgV cmdline on stack, push buffer - bcs .9 - - jsr PS.Exec -.9 php - pha -.90 lda #$ff SELF MODIFIED - jsr K.FreeMem - pla - plp -.99 rts +K.ExecL clc + .HS B0 BCS */-------------------------------------- * # ExecV * ## C / CSH @@ -42,11 +24,58 @@ K.ExecL >PULLB PS.Flags * ## RETURN VALUE * A = Child PSID *\-------------------------------------- -K.ExecV >PULLB PS.Flags - >PULLW PS.ArgV +K.ExecV sec + php + + >PULLB PS.Flags + >LDYAI 256 + jsr K.GetMem + bcs .99 + + stx .90+1 + >STYA PS.ArgV + + plp + bcc .2 + + >PULLW ZPPtr1 pull arg[] from stack + + ldy #$FF copy to target buffer + +.1 iny + lda (ZPPtr1),y + sta (PS.ArgV),y + bne .1 + + iny + lda (ZPPtr1),y + sta (PS.ArgV),y + bne .1 + + bra .8 + +.2 >PUSHW PS.ArgV + jsr K.Arg2ArgV cmdline on stack, push target buffer + bcs .9 + +.8 jsr PS.Exec + +.9 php + pha +.90 lda #$ff SELF MODIFIED + jsr K.FreeMem + pla + plp + rts + +.99 plp + sec + >RET 2 +*-------------------------------------- PS.Exec jsr PS.CreateChild A=PID,Child S.PS at PS.NewPSPtr,PS.Load.hMem bcs .9 + sta .8+1 stz K.IOBuf If !=0 after PS.Load, it's a script @@ -141,14 +170,10 @@ K.Fork jsr PS.CreateChild A=PID,Child S.PS at PS.NewPSPtr,PS.Load.hMem ldy #S.PS.hARGV sta (PS.NewPSPtr),y - dey - lda (ZPPtr1),y S.PS.ARGC - sta (PS.NewPSPtr),y - ldy #S.PS.ARGC - sta (PS.NewPSPtr),y - iny S.PS.hARGV - txa + dey S.PS.ARGC + + lda (ZPPtr1),y sta (PS.NewPSPtr),y ldy #S.PS.A @@ -228,6 +253,7 @@ PS.CreateChild ldx #0 lda CORE.LastPSID ldy #S.PS.PID sta (PS.NewPSPtr),y + lda #S.PS.F.NOHUP bit PS.Flags beq .5 @@ -244,7 +270,7 @@ PS.CreateChild ldx #0 dey #S.PS.PPID sta (PS.NewPSPtr),y - ldy #S.PS.hCWD copy hPREFIX... + ldy #S.PS.hCWD copy hPREFIX... lda (ZPPtr1),y jsr K.GetMemPtr @@ -290,8 +316,10 @@ PS.CreateChild ldx #0 lda #S.PS.F.HOLD bit PS.Flags beq .8 + ora (ZPPtr1) sta (ZPPtr1) HOLD parent PS + lda CORE.LastPSID ldy #S.PS.CPID sta (ZPPtr1),y @@ -324,8 +352,8 @@ PS.Load ldy #$ff >LDYA PS.ArgV found /, some path specified, no search jsr PS.STAT.YA bcc .6 REAL path in K.Buf256 - -.99 rts + + rts file not found .2 >LDYA PS.ArgV @@ -334,7 +362,7 @@ PS.Load ldy #$ff >LDYA PS.ArgV jsr PS.Find.CWD - bcs .99 + bcs PS.RTS .6 lda K.S.STAT+S.STAT.P.TYPE cmp #S.FI.T.BIN @@ -358,7 +386,7 @@ PS.Load ldy #$ff >LDYAI PS.SHUTDOWN jsr PS.Find.PATH - bcs .99 + bcs PS.RTS .8 jmp PS.LoadBIN *-------------------------------------- @@ -389,6 +417,7 @@ PS.Load.SCRIPT jsr PS.Buf2IO .3 lda K.IOBuf+128,y Check HEADER= "#!/" cmp PS.Load.HEADER,y bne PS.Load.IBIN + iny cpy #3 bne .3 @@ -404,14 +433,12 @@ PS.Load.SCRIPT jsr PS.Buf2IO sta K.Buf256-1,x K.Buf256 = "${ROOT}BIN/SHELL\0" -.5 >LDYAI K.Buf256 - jsr PS.STAT.YA +.5 jsr PS.STAT.256 bcs PS.RTS lda K.S.STAT+S.STAT.P.TYPE cmp #S.FI.T.BIN - beq PS.LoadBIN - jmp PS.Load.IBIN + bne PS.Load.IBIN *-------------------------------------- PS.LoadBIN jsr BIN.Load K.Buf256= "${ROOT}BIN/SH\0", K.IOBuf=/.../SCRIPT bcs .9 @@ -420,13 +447,13 @@ PS.LoadBIN jsr BIN.Load K.Buf256= "${ROOT}BIN/SH\0", K.IOBuf=/.../SCRIPT phy ldy #S.PS.ZP.CODE+1 - sta (PS.NewPSPtr),y save pCode HI... + sta (PS.NewPSPtr),y save pCode HI... dey pla - sta (PS.NewPSPtr),y save pCode LO... + sta (PS.NewPSPtr),y save pCode LO... txa ldy #S.PS.hCS - sta (PS.NewPSPtr),y save CS hMem in S.PS + sta (PS.NewPSPtr),y save CS hMem in S.PS * jsr MEM.GetMemByID * jsr Mem.SetOwner Set Ownership @@ -434,6 +461,7 @@ PS.LoadBIN jsr BIN.Load K.Buf256= "${ROOT}BIN/SH\0", K.IOBuf=/.../SCRIPT ldy #H.BIN.F Get Bin S.PS.F lda (ZPPtr4),y beq .1 + ldy #S.PS.F update PS S.PS.F ora (PS.NewPSPtr),y sta (PS.NewPSPtr),y @@ -443,7 +471,6 @@ PS.LoadBIN jsr BIN.Load K.Buf256= "${ROOT}BIN/SH\0", K.IOBuf=/.../SCRIPT tax dey ora (ZPPtr4),y - beq .2 DS.SIZE=0... lda (ZPPtr4),y @@ -510,9 +537,7 @@ PS.LoadGetHeader >SYSCALL2 fopen bcs .9 - sta .1+1 - - >PUSHA + >PUSHA a = hFILE >PUSHWI K.IOBuf+128 >PUSHWI 128 @@ -520,7 +545,7 @@ PS.LoadGetHeader php pha -.1 lda #$FF SELF MODIFIED + lda IO.hFILE set by fopen / fread >SYSCALL2 fclose pla plp @@ -590,16 +615,15 @@ PS.AddArgV ldy #$ff In both cases, remove ARGV[0] ldy #S.PS.ARGC sta (PS.NewPSPtr),y - >LDYA PS.ArgSize Add 1 for ending 0 - iny - bne .5 - inc - -.5 iny Add ONE MORE ?????!!!! - bne .51 - inc - -.51 jsr K.GetMem + lda PS.ArgSize + clc + adc #2 Add 2 for ending \0\0 + tay + + lda PS.ArgSize+1 + adc #0 + + jsr K.GetMem bcs .9 >STYA ZPPtr2 Target Buffer @@ -607,6 +631,8 @@ PS.AddArgV ldy #$ff In both cases, remove ARGV[0] ldy #S.PS.hARGV sta (PS.NewPSPtr),y + jsr Mem.SetOwner Set Ownership + >LDYAI K.Buf256 jsr PS.AddYAToStrV lda K.IOBuf @@ -716,7 +742,9 @@ K.Kill.2 ldy #S.PS.hSession lda (ZPPtr1),y beq .12 + phx jsr K.FreeMem + plx .12 dex bpl .11 @@ -738,7 +766,9 @@ K.Kill.2 ldy #S.PS.hSession inx cpx CORE.PSCount bne .2 + bra * + .3 stz PS.Table.PID,x lda PS.TABLE.hPS,x stz PS.TABLE.hPS,x @@ -957,9 +987,8 @@ PS.Find.CWD >STYA PS.Find.4+1 filename to find >STYA PS.Find.2+1 stz PS.Find.98+1 - bra PS.Find - +*-------------------------------------- PS.Find.LIB ldx #0 .HS 2C BIT ABS PS.Find.DRV ldx #2 @@ -1009,8 +1038,7 @@ PS.Find.4 lda $ffff,y Self Modified, Append Filename... inx bra PS.Find.4 -PS.Find.5 >LDYAI K.Buf256 - jsr PS.STAT.YA +PS.Find.5 jsr PS.STAT.256 bcs PS.Find.1 Failed...retry next path... lda K.S.STAT+S.STAT.MODE+1 @@ -1022,7 +1050,7 @@ PS.Find.5 >LDYAI K.Buf256 clc PS.Find.RTS rts -PS.Find.98 lda #$ff SELF MODIFIED : Discard Search list +PS.Find.98 lda #$ff SELF MODIFIED : Discard Search list beq .1 jsr K.FreeMem @@ -1040,6 +1068,8 @@ PS.Buf2IO ldx #$ff rts *-------------------------------------- +PS.STAT.256 >LDYAI K.Buf256 + PS.STAT.YA >PUSHYA >PUSHWI K.S.STAT >SYSCALL2 Stat diff --git a/SYS/KERNEL.S.STDLIB.txt b/SYS/KERNEL.S.STDLIB.txt index f467e436..ee53d808 100644 --- a/SYS/KERNEL.S.STDLIB.txt +++ b/SYS/KERNEL.S.STDLIB.txt @@ -69,8 +69,8 @@ K.StrToUL clc Unsigned jsr K.AToL.I bcs K.StrToUL.rts -* clc - +* clc + adc ZPPtr2 sta (ZPPtr1) lda #0 @@ -103,7 +103,7 @@ K.AToL.I jsr MATH.Dec2ACC32 dex bpl .3 - tya Y = A = Count processed + tya Y = A = Count processed * clc .9 rts @@ -159,8 +159,8 @@ K.realpath ldy #3 >STYA ZPPtr1 stx .99+1 save expanded buffer hMem - >PULLW K.realpath.DST resolvedpath - + >PULLW K.realpath.DST resolved path + inc pStack discard path inc pStack @@ -200,7 +200,7 @@ K.realpath ldy #3 * X=LEN, K.Buf256 = /dir1/./../file(/)\0 *-------------------------------------- ldx #0 will skip leading / - + .5 ldy #0 reset dot counter=0 .6 inx @@ -228,7 +228,7 @@ K.realpath ldy #3 bra .80 .9 dey "/.." ? - bne .99 "/..." ??!!...syntax error + bne .99 "/..." ??!!...syntax error dex dex @@ -239,7 +239,7 @@ K.realpath ldy #3 jsr K.RealPath.RemoveAtX remove "/.." .10 dex - lda K.Buf256,x go to "/dir" + lda K.Buf256,x go to "/dir" cmp #'/' bne .10 @@ -257,11 +257,11 @@ K.realpath ldy #3 >LDYAI MLI.MAXPATH+1 jsr K.getmem bcs .90 - + .85 >STYA ZPPtr1 - + ldy #$ff - + .83 iny lda K.Buf256,y sta (ZPPtr1),y @@ -315,8 +315,11 @@ K.RealPath.RemoveAtX * `>PUSHW expanded` * `>SYSCALL expand` * ## RETURN VALUE -* Y,A = PTR to Expanded String -* X = hMem to Expanded String (C-String) +* if expanded == null +* Y,A = PTR to Expanded String +* X = hMem to Expanded String +* if expanded != null +* Y,A = strlen *\-------------------------------------- K.Expand ldy #2 lda (pStack),y @@ -324,12 +327,12 @@ K.Expand ldy #2 iny lda (pStack),y ply - + jsr K.strdup bcc .1 - + jmp .9 - + .1 phx Save temp string... >STYA TXTPTR @@ -341,7 +344,7 @@ K.Expand ldy #2 beq .80 jsr SHARED.TXTPTRn - + .11 cmp #''' bne .21 @@ -364,8 +367,8 @@ K.Expand ldy #2 lda #'$' End of string, output $ bra .22 - -.24 + +.24 * sec ror ENV.bExp Toggle Expanded flag stz ENV.VarEndChar @@ -382,7 +385,7 @@ K.Expand ldy #2 .35 jsr SHARED.TXTPTRn skip $x bra .10 - + .40 jsr ENV.ExpandStrVar bcc .70 @@ -395,14 +398,14 @@ K.Expand ldy #2 bcs .70 ldx ENV.BufPtr - + .51 lda K.Buf256,x beq .52 inx bra .51 - + .52 stx ENV.BufPtr - + .70 lda (TXTPTR) beq .72 @@ -411,7 +414,7 @@ K.Expand ldy #2 jsr SHARED.TXTPTRn bra .70 -.72 lda ENV.VarEndChar +.72 lda ENV.VarEndChar bne .35 skip "}" and loop bra .10 @@ -422,14 +425,35 @@ K.Expand ldy #2 pla discard temp string jsr K.FreeMem - >LDYAI K.Buf256 dup in case of '' processing - jsr K.strdup - bcs .9 - bit ENV.bExp Did we expand something ? - bpl .9 + bpl .81 + + jsr STRING.DupBuf256 + bcs .9 + jmp .1 - + +.81 ldy #1 + lda (pStack),y + beq .83 + + sta ZPPtr1+1 + lda (pStack) + sta ZPPtr1 + + ldy #$ff + +.82 iny + lda K.Buf256,y + sta (ZPPtr1),y + bne .82 + +* Y = len, A = 0 + + bra .9 + +.83 jsr STRING.DupBuf256 + .9 >RET 4 *-------------------------------------- ENV.SysVar jsr ZP.IsDigit $0 ... $9 ? @@ -451,7 +475,7 @@ ENV.SysVar jsr ZP.IsDigit $0 ... $9 ? beq .3 dex bpl .2 - + sec rts @@ -464,14 +488,14 @@ ENV.SysVar jsr ZP.IsDigit $0 ... $9 ? ENV.SysVarsNum jsr MATH.A2STR10NP ldy #0 - + .1 lda FOUTBuf,y beq ENV.SysVarsNum.8 - + iny jsr ENV.AddAToBuf bra .1 - + ENV.SysVarsNum.8 clc rts @@ -544,15 +568,15 @@ ENV.AddYAToBuf >STYA ZPPtr3 *-------------------------------------- ENV.AddP3ToBuf ldx ENV.BufPtr ldy #$ff - + dex - + .1 iny inx lda (ZPPtr3),y sta K.Buf256,x bne .1 - + stx ENV.BufPtr rts *-------------------------------------- @@ -562,7 +586,7 @@ ENV.AddAToBuf ldx ENV.BufPtr rts *-------------------------------------- ENV.NextEnvP3 jsr ENV.GetP3LenY - + tya sec adc ZPPtr3 diff --git a/SYS/KERNEL.S.STRING.txt b/SYS/KERNEL.S.STRING.txt index 5b2c040c..730ea9b5 100644 --- a/SYS/KERNEL.S.STRING.txt +++ b/SYS/KERNEL.S.STRING.txt @@ -91,6 +91,9 @@ K.StrCpy clc * CS : error * A = SYS error code *\-------------------------------------- +STRING.DupBuf256 + >LDYAI K.Buf256 + K.StrDup >STYA .1+1 >STYA .4+1