From eea4fb080988fa64793f43a4a13cee13a2353059 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Mon, 21 Jan 2019 06:52:04 +0000 Subject: [PATCH] Kernel 0.92 --- .Floppies/A2OSX.BUILD.po | Bin 33553920 -> 33553920 bytes BIN/CSH.S.txt | 104 ++++++++++++++++++++ BIN/MEMDUMP.S.txt | 13 ++- BIN/SHELL.S.CL.txt | 87 ++--------------- BIN/SHELL.S.CMD.txt | 40 +++----- BIN/SHELL.S.txt | 42 +-------- ETC/INIT | 9 +- INC/A2osX.I.txt | 6 +- SBIN/KCONFIG.S.txt | 27 ++---- SYS/KERNEL.S.BIN.txt | 30 +----- SYS/KERNEL.S.ENV.txt | 37 ++++++-- SYS/KERNEL.S.JMP.txt | 7 -- SYS/KERNEL.S.PFT.txt | 2 +- SYS/KERNEL.S.PS.txt | 198 +++++++++++++++++++++++---------------- SYS/KERNEL.S.STDLIB.txt | 35 ++++--- 15 files changed, 326 insertions(+), 311 deletions(-) create mode 100644 BIN/CSH.S.txt diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 5f96c1f420d0d90d9994c6acd59858fb0459c92e..455a2e9d826c9c9b9979fa7b7582dfa290a3f76b 100644 GIT binary patch delta 398722 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 zBne4El8_`M2}wedkR&7tNkWp4BqRw*LXwaqBne4El8_`M2}wedkR&7tNkWp4BqRw* zLXwaqBne4El8_`M2}wedkR&7tNkWp4BqRw*LXwaqBne4El8_`M2}wedkR&7tNkWp4 zBqRw*LXwaqBne4El8_`M2}wedkR&7tNkWp4BqRw*LXwaqBne4El8_`M2}wedkR&7t zNkWp4BqRw*LXwaqBne4El8_`M2}wedkR&7tNkWp4BqRw*LXwaqBne4El8_`M2}wed zkR&7tNkWp4BqRw*LXwaqBne4El8_`M2}wedkR&7tNkWp4BqRw*LXwaqBne4El8_`M z2}wedkR&7tNkWp4BqRw*LXwaqBne4El8_`M2}wedkR&7tNkWp4BqRw*LXwaqBne4E zl8_`M2}wedkR&7tNkWp4BqRw*LXwaqBne4El8_`M2}wedkR&7tNkWp4BqRw*LXwaq zBne4El8_`M2}wedkR&7tNkWp4BqRw*LXwaqBne4El8_`M2}wedkR&7tNkWp4BqRw* zLXwaqBne4El8_`M2}wedkR&7tNkWp4BqRw*LXwaqBne4El8_`M2}wedkR&7tNkWp4 zBqRw*LXwaqBne4El8_`M2}wedkR&7tNkWp4BqRw*LXwaqBne4El8_`M2}wedkR&7t zNkWp4BqRw*LXwaqBne4El8_`M2}wedkR&7tNkWp4BqRw*LXwaqBne4El8_`M2}wed zkR&7tNkWp4BqRw*LXwaqBne4El8_`M2}wedkR&7tNkWp4BqRw*LXwaqBne4El8_`M z2}wedkR&7tNkWp4BqRw*LXwaqBne4El8_`M2}wedkR&7tNkWp4BqRw*LXwaqBne4E zl8_`M2}wedkR&7tNkWp4BqRw*LXwaqBne4El8_`M2}wedkR&7tNkWp4BqRw*LXwaq zBne4El8_`M2}wedkR&7tNkWp4BqRw*LXwaqBne4El8_`M2}wedkR&7tNkWp4BqRw* zLXwaqBne4El8_`M2}wedkR&7tNkWp4BqRw*LXwaqBne4El8_`M2}wedkR&7tNkWp4 zBqRw*LXwaqBne4El8_`M2}wedkR&7tNkWp4BqRw*LXwaqBne4El8_`M2}wedkR&7t zNkWp4BqRw*LXwaqBne4El8_`M2}wedkR&7tNkWp4BqRw*LXwaqBne4El8_`M2}wed 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 z0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq z5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH* zAOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8} z0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq z5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH* zAOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8} z0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq z5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH* zAOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8} z0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq z5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH* zAOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8} z0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq z5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH* zAOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8} z0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq z5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH* zAOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8} z0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq z5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH* zAOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8} z0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq z5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH* zAOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8} z0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq z5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH* zAOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8} z0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq z5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH* zAOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8} z0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq z5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH* zAOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8} z0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq m5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq68Qg_z@4%DQ~wY9TAK|3 diff --git a/BIN/CSH.S.txt b/BIN/CSH.S.txt new file mode 100644 index 00000000..1e81f53d --- /dev/null +++ b/BIN/CSH.S.txt @@ -0,0 +1,104 @@ +NEW +PREFIX +AUTO 4,1 Enable MASM3 auto line num + .LIST OFF + .OP 65C02 Target CPU, must match CPU level in header + .OR $2000 usualy $2000, but any value > $100 allowed + .TF BIN/CSH +*-------------------------------------- + .INB INC/MACROS.I + .INB INC/A2OSX.I +*-------------------------------------- +* Zero Page Segment, up to 32 bytes +*-------------------------------------- + .DUMMY + .OR ZPBIN +ZS.START +ZPCSHSymbols .BS 2 +ZPCSHData .BS 2 +ZPCSHValue .BS 2 +ZPCSHStack .BS 2 +ZS.END .ED +*-------------------------------------- +* File Header (16 Bytes) +*-------------------------------------- +CS.START cld + jmp (.1,x) + .DA #$61 6502,Level 1 (65c02) + .DA #1 BIN Layout Version 1 + .DA #0 S.PS.F.EVENT + .DA #0 + .DA CS.END-CS.START Code Size (without Constants) + .DA DS.END-DS.START Data SegmentSize + .DA #16 Stack Size + .DA #ZS.END-ZS.START Zero Page Size + .DA 0 +*-------------------------------------- +* Relocation Table +*-------------------------------------- +.1 .DA CS.INIT + .DA CS.RUN + .DA CS.DOEVENT + .DA CS.QUIT + +* Add any address you want be relocated by loader +* Usefull if you have to pass EFFECTIVE address to an API call... +* L.MSG.Test .DA Msg.Test + + .DA 0 +*-------------------------------------- +* Called once at process creation +* Put code for loading LIB here +*-------------------------------------- +CS.INIT clc + rts +*-------------------------------------- +* Called until exit with CS +* if RUN exits with CC, RN entered again +*-------------------------------------- +CS.RUN + +* Put your code here +* >LDYA L.MSG.Test Load EFFECTIVE address +* >SYSCALL puts Call API to print a string + +.8 lda #0 Exit Code = Succes + sec QUIT Process + rts + +.9 lda #E.SYN Exit Code = Succes + sec QUIT Process + rts +*-------------------------------------- +* Called if option S.PS.F.EVENT enabled in Header +* Timer Event : every 10th seconds +*-------------------------------------- +CS.DOEVENT sec + rts +*-------------------------------------- +* Called once, when RUN exited with CS +* Put code for unloading LIB here +*-------------------------------------- +CS.QUIT clc + rts +*-------------------------------------- +CS.END +*-------------------------------------- +* Initialized DATA +*-------------------------------------- + +* Put your constant here : +* MSG.TEST .AZ "Test Message" + +*-------------------------------------- +* Per Process DATA segement (0 filled before INIT) +*-------------------------------------- + .DUMMY + .OR 0 +DS.START +DS.END + .ED +*-------------------------------------- +MAN +SAVE USR/SRC/BIN/CSH.S +ASM diff --git a/BIN/MEMDUMP.S.txt b/BIN/MEMDUMP.S.txt index 41c40b9f..876ff842 100644 --- a/BIN/MEMDUMP.S.txt +++ b/BIN/MEMDUMP.S.txt @@ -101,7 +101,7 @@ CS.RUN >SYSCALL GetChar >LDA.G MEM.COUNT >CMP.G MemStat+S.MSTAT.MLast - beq .10 + beq CS.RUN.FOOTER .8 clc rts @@ -109,7 +109,10 @@ CS.RUN >SYSCALL GetChar .9 sec rts -.10 >PUSHB.G MEM.COUNT +CS.RUN.FOOTER >SYSCALL GetChar + bcs CS.RUN.FOOTER + + >PUSHB.G MEM.COUNT >PUSHB.G USED.COUNT >PUSHBI 2 >LDYA L.MSG2 @@ -231,7 +234,7 @@ CS.RUN.PRINTMEM ldy #S.MEM.LEN+1 >PUSHA >PUSHBI 3 >LDYA L.MSG1.STR - bra CS.RUN.PRINTMEM.EXIT + bra CS.RUN.PRINTMEM.OUT .2 ldy #15 @@ -241,7 +244,7 @@ CS.RUN.PRINTMEM ldy #S.MEM.LEN+1 >PUSHBI 16 >LDYA L.MSG1.HEX - bra CS.RUN.PRINTMEM.EXIT + bra CS.RUN.PRINTMEM.OUT CS.RUN.PRINTMEM.BIN @@ -252,7 +255,7 @@ CS.RUN.PRINTMEM.BIN >PUSHBI 2 >LDYA L.MSG1.BIN -CS.RUN.PRINTMEM.EXIT +CS.RUN.PRINTMEM.OUT >SYSCALL printf >INC.G LINE.COUNT diff --git a/BIN/SHELL.S.CL.txt b/BIN/SHELL.S.CL.txt index 49c1bbfa..e4e4c9cd 100644 --- a/BIN/SHELL.S.CL.txt +++ b/BIN/SHELL.S.CL.txt @@ -273,7 +273,7 @@ CL.PrintCmdBuf >LDYA ZPCLBuf rts *-------------------------------------- CL.GetLine >LDYA ZPFileBufPtr - >STYA.G CMD.FileBufPtr + >STYA.G ZPFileBufPtrBak lda (ZPFileBufPtr) beq .9 @@ -416,13 +416,7 @@ CL.CheckCmd ldy #$ff cmp #'/' bne .1 - >LDYA ZPCLBufPtr found /, some path specified, External, no search - >SYSCALL realpath - bcs .9 - - txa - >STA.G CMD.hCmdLine - bra .6 go check type... + bra .4 .2 >PUSHW ZPCLBufPtr >LDYA L.CMD.INT @@ -448,79 +442,14 @@ CL.CheckCmd ldy #$ff clc rts -.4 >LDYAI 256 Get a buffer for found path - >SYSCALL GetMem - bcs .9 - - txa - >STA.G CMD.hCmdLine - - >LDYA L.ENV.PATH ENVNAME=PATH for search - >SYSCALL GetEnv get value for ENV=PATH - bcs .5 no PATH, try workdir - - jsr CL.SearchExt - bcc .6 found in PATH, go check Type - -.5 ldy #S.PS.hPREFIX not found, try in CD - lda (pPs),y - >SYSCALL GetMemPtr - jsr CL.SearchExt - - bcs CL.CheckCmd.90 - -.6 >PUSHEA.G CMD.Stat - >LDA.G CMD.hCmdLine - >SYSCALL GetMemPtr - >SYSCALL STAT - bcs CL.CheckCmd.90 - - lda #$ff - >STA.G CMD.IntCmd - - ldy #CMD.Stat+S.STAT.P.TYPE - lda (pData),y - cmp #S.FI.T.TXT - beq CL.CheckCmd.BIN - cmp #S.FI.T.BIN - beq CL.CheckCmd.BIN - cmp #S.FI.T.SYS - beq CL.CheckCmd.SYS - - lda #E.BADFTYPE - sec - -CL.CheckCmd.90 php - pha - >LDA.G CMD.hCmdLine - >SYSCALL FreeMem - pla - - plp -CL.CheckCmd.RTS - rts -*-------------------------------------- -* BIN : add "/PATH/CMD" -*-------------------------------------- -CL.CheckCmd.BIN >LDA.G CMD.hCmdLine - >SYSCALL GetMemPtr +.4 >LDYA ZPCLBufPtr jsr CL.AddYAToArgV - bra CL.CheckCmd.90 -*-------------------------------------- -CL.CheckCmd.SYS bra * -*-------------------------------------- -CL.SearchExt pha - phy - >PUSHEA.G CMD.Stat - >LDA.G CMD.hCmdLine - >SYSCALL GetMemPtr - >PUSHYA push dest full path - ply - pla - >PUSHYA push search list - >LDYA ZPCLBufPtr push CMD - >SYSCALL FileSearch + lda #$ff + >STA.G CMD.IntCmd + clc + +CL.CheckCmd.RTS rts *-------------------------------------- CL.CheckIO >PUSHW ZPCLBufPtr diff --git a/BIN/SHELL.S.CMD.txt b/BIN/SHELL.S.CMD.txt index fd54e315..38098113 100644 --- a/BIN/SHELL.S.CMD.txt +++ b/BIN/SHELL.S.CMD.txt @@ -160,21 +160,16 @@ Cmd.INT.CD.RTS rts Cmd.INT.CD.HOME >LDYA L.ENV.HOME >SYSCALL GetEnv - bcc .1 + bcc Cmd.INT.CD.1 >LDYA L.ENV.ROOT >SYSCALL GetEnv - bcc .1 + bcc Cmd.INT.CD.1 jmp Cmd.INT.PWD -.1 >SYSCALL ExpandStr - bcs Cmd.INT.CD.RTS - Cmd.INT.CD.1 >STYA ZPPtr1 - txa - >STA.G CMD.hCmdLine - + ldy #1 lda (ZPPtr1),y beq .8 we have '/' @@ -182,17 +177,13 @@ Cmd.INT.CD.1 >STYA ZPPtr1 >PUSHEA.G CMD.Stat >LDYA ZPPtr1 >SYSCALL STAT - bcs .90 + bcs .9 >LDA.G CMD.Stat+S.STAT.P.TYPE cmp #S.FI.T.DIR - beq .1 + bne .90 - lda #E.CSYN - sec - bra .90 - -.1 ldy #0 + ldy #0 .5 iny lda (ZPPtr1),y @@ -210,18 +201,15 @@ Cmd.INT.CD.1 >STYA ZPPtr1 sta (ZPPtr1),y .8 >LDYA ZPPtr1 - >SYSCALL strdup - bcs .90 + >SYSCALL ExpandStr + bcs .9 + txa - jsr Cmd.SetPrefixA + jmp Cmd.SetPrefixA -.90 php - pha - >LDA.G CMD.hCmdLine - >SYSCALL FreeMem - pla - plp +.90 lda #E.CSYN + sec .9 rts *-------------------------------------- Cmd.SetPrefixA pha @@ -1039,10 +1027,10 @@ CMD.IsSwitch >STYA ZPPtr1 sec rts *-------------------------------------- -CMD.StkPushPtr >LDA.G CMD.FileBufPtr +CMD.StkPushPtr >LDA.G ZPFileBufPtrBak jsr CMD.StkPush bcs .9 - >LDA.G CMD.FileBufPtr+1 + >LDA.G ZPFileBufPtrBak+1 jmp CMD.StkPush .9 rts *-------------------------------------- diff --git a/BIN/SHELL.S.txt b/BIN/SHELL.S.txt index c65b5aaf..2c7a1aab 100644 --- a/BIN/SHELL.S.txt +++ b/BIN/SHELL.S.txt @@ -6,8 +6,6 @@ AUTO 4,1 .OR $2000 .TF BIN/SHELL *-------------------------------------- -CSH .EQ 0 -*-------------------------------------- CL.MAX .EQ 159 History.MAX .EQ 256 CMD.STACK.MAX .EQ 64 @@ -56,6 +54,7 @@ E.BADFTYPE .EQ $C8 .INB INC/MLI.I .INB INC/MLI.E.I *-------------------------------------- + .DUMMY .OR ZPBIN ZS.START ZPPtr1 .BS 2 @@ -64,13 +63,8 @@ ZPPtr3 .BS 2 ZPCLBuf .BS 2 ZPArgVBuf .BS 2 ZPFileBufPtr .BS 2 +ZPFileBufPtrBak .BS 2 ZPCLBufPtr .BS 2 - .DO CSH=1 -ZPCSHSymbols .BS 2 -ZPCSHData .BS 2 -ZPCSHValue .BS 2 -ZPCSHStack .BS 2 - .FIN ZS.END .ED *-------------------------------------- * File Header (16 Bytes) @@ -81,9 +75,6 @@ CS.START cld .DA #1 BIN Layout Version 1 .DA #S.PS.F.EVENT S.PS.F .DA #0 - .DA CS.END-CS.START CS - .DA DS.END-DS.START DS - .DA #0 .DA CS.END-CS.START Code Size (without Constants) .DA DS.END-DS.START Data SegmentSize .DA #64 Stack Size @@ -168,9 +159,6 @@ J.CMD.Eval.TOKEN4 .DA M32.Add L.M32.Printf .DA M32.Printf L.ERR.Codes .DA ERR.Codes L.ERR.Messages .DA ERR.Messages - .DO CSH=1 - .INB USR/SRC/BIN/SHELL.R.CSH - .FIN .DA 0 *-------------------------------------- CS.INIT clc @@ -199,9 +187,6 @@ CS.RUN jsr CMD.Init lda #0 jsr ShiftA Remove $0=/bin/shell - .DO CSH=1 - jsr CSH.Init - .FIN bra CS.RUN.LOOP .1 jsr Cmd.INT.CD.HOME @@ -354,11 +339,7 @@ CS.RUN.BATCH >SYSCALL GetChar clc jmp CS.RUN.LOOP.END -.2 .DO CSH=1 - jsr CSH.Run - .ELSE - jsr CL.GetLine - .FIN +.2 jsr CL.GetLine bcc .7 cmp #C.EOF @@ -446,10 +427,7 @@ CS.DOEVENT lda (pEvent) .9 sec rts *-------------------------------------- -CS.QUIT .DO CSH=1 - jsr CSH.Quit - .FIN - jsr HIS.Quit +CS.QUIT jsr HIS.Quit jsr CMD.Quit clc rts @@ -549,9 +527,6 @@ Lookup >STYA ZPPtr2 .INB USR/SRC/BIN/SHELL.S.CMD .INB USR/SRC/BIN/SHELL.S.IO .INB USR/SRC/BIN/SHELL.S.HIS - .DO CSH=1 - .INB USR/SRC/BIN/SHELL.S.CSH - .FIN *-------------------------------------- CS.END *-------------------------------------- @@ -645,9 +620,6 @@ CMD.Eval.TOKEN4 .AZ "+" .AZ "mod" .HS 00 *-------------------------------------- - .DO CSH=1 - .INB USR/SRC/BIN/SHELL.C.CSH - .FIN .INB USR/SRC/X.M32.S .INB USR/SRC/X.ERRORS.S *-------------------------------------- @@ -679,9 +651,7 @@ CL.bExec .BS 1 CMD.hCLBuf .BS 1 -CMD.FileBufPtr .BS 2 CMD.IntCmd .BS 1 -CMD.hCmdLine .BS 1 CMD.hArgVBuf .BS 1 CMD.ArgIndex .BS 1 @@ -700,9 +670,7 @@ HIS.Index .BS 1 IO.hIn .BS 1 IO.hOut .BS 1 IO.hErr .BS 1 - .DO CSH=1 - .INB USR/SRC/BIN/SHELL.G.CSH - .FIN +*-------------------------------------- M32.BUF .BS 12 -1234567890\0 M32.ACC .BS 4 M32.ARG .BS 4 diff --git a/ETC/INIT b/ETC/INIT index f6b18911..c0356cbf 100644 --- a/ETC/INIT +++ b/ETC/INIT @@ -22,14 +22,13 @@ GETTY /DEV/TTY4 ${ROOT}SBIN/LOGIN & #INSDRV LANCEGS.DRV #INSDRV UTHER2.AI.DRV 00:08:DC:12:34:56 #INSDRV UTHERNET2.DRV 00:08:DC:12:34:56 -#STARTPROC TCPIPD -#STARTPROC DHCPCLNT -#STARTPROC TELNETD -#STARTPROC HTTPD +#NETWORKD & +#TELNETD & +#HTTPD & # GUI Section #INSDRV MOUSE.DRV #INSDRV DHGR.DRV -#STARTPROC DESKTOP +#GUI & ECHO *** End INIT *** MAN TEXT ETC/INIT diff --git a/INC/A2osX.I.txt b/INC/A2osX.I.txt index ceeb4041..3a30c099 100644 --- a/INC/A2osX.I.txt +++ b/INC/A2osX.I.txt @@ -6,8 +6,10 @@ K.VER .EQ $5C00 92.0 K.ENV.SIZE .EQ 512 K.PIPE.SIZE .EQ 256 *-------------------------------------- -K.MEM.ALIGN .EQ 64 -K.MEM.nALIGNm1 .EQ $C0 +K.MEM.ALIGN .EQ 16 +K.MEM.nALIGNm1 .EQ $F0 +*K.MEM.ALIGN .EQ 64 +*K.MEM.nALIGNm1 .EQ $C0 *-------------------------------------- K.IRQDEV.MAX .EQ 4 K.DEV.MAX .EQ 28 diff --git a/SBIN/KCONFIG.S.txt b/SBIN/KCONFIG.S.txt index fcc71dae..a1e5eceb 100644 --- a/SBIN/KCONFIG.S.txt +++ b/SBIN/KCONFIG.S.txt @@ -65,12 +65,7 @@ L.MSG.PROMPT .DA MSG.PROMPT CS.INIT clc rts *-------------------------------------- -CS.RUN >LDYA L.FILENAME - >SYSCALL ExpandStr - txa - >STA.G hFileName - - >PUSHBI 0 +CS.RUN >PUSHBI 0 >LDYA L.MSG.TOPBAR >SYSCALL printf @@ -168,9 +163,7 @@ CS.RUN.Loop >SLEEP rts *-------------------------------------- CS.RUN.Load >PUSHEA.G StatBuf - >LDA.G hFileName - >SYSCALL GetMemPtr - + >LDYA L.FILENAME >SYSCALL Stat bcs .99 @@ -193,8 +186,8 @@ CS.RUN.Load >PUSHEA.G StatBuf >PUSHWI A2osX.KCONFIG >PUSHBI S.FI.T.SYS >PUSHBI O.RDONLY - >LDA.G hFileName - >SYSCALL GetMemPtr + + >LDYA L.FILENAME >SYSCALL LoadFile bcs .99 txa @@ -226,9 +219,7 @@ CS.RUN.Load >PUSHEA.G StatBuf CS.RUN.Save >PUSHWI A2osX.KCONFIG >PUSHBI S.FI.T.SYS >PUSHBI O.WRONLY+O.CREATE+O.TRUNC - - >LDA.G hFileName - >SYSCALL GetMemPtr + >LDYA L.FILENAME >SYSCALL FOpen bcs .9 @@ -334,13 +325,8 @@ CS.DOEVENT sec do not discard TIMER event rts *-------------------------------------- CS.QUIT >LDA.G hFileBuf - beq .1 - >SYSCALL FreeMem - -.1 >LDA.G hFileName beq .8 >SYSCALL FreeMem - .8 clc rts *-------------------------------------- @@ -363,7 +349,7 @@ FILENAME .AZ "${ROOT}A2osX.KCONFIG" MSG.TOPBAR .AZ "\e[37;100m\ec\e[7m\e[1;1HA2osX Kernel Config Utility : " MSG.TOPBAR.OK .AZ "KCONFIG File Successfully Loaded. \e[0m" MSG.TOPBAR.KO .AZ "Invalid/missing KCONFIG File. \e[0m" -MSG.STATUSBAR .AZ "\e[37;100m\e[7m\e[24;1HCtrl-Q:Quit,Ctrl-S:Save,Ctrl-T:Time,Ctrl-P:Preemptive,Ctrl-C:CHRoot,1-7:En/Dis \e[0m" +MSG.STATUSBAR .AZ "\e[37;100m\e[7m\e[24;1HSlot 1-7:En/Dis Ctrl:(Q)uit,(S)ave,(T)iming,(P)reemptive,(C)HRoot \e[0m" MSG.KCONF .AZ "\e[93;44m\e[2;1H------ Actual Kernel Configuration ------\r\n" MSG.FCONF .AZ "\e[93;44m\e[13;1H------ KCONFIG File Configuration -------\r\n" MSG.HZ .AZ " Machine Timing : %d0 Hz\r\n" @@ -391,7 +377,6 @@ MSG.QUIT.ERR .AZ "\ecError [$%h] While Writing KCONFIG File.\r\n\r\n" .DUMMY .OR 0 DS.START -hFileName .BS 1 hFileBuf .BS 1 StatBuf .BS S.STAT DS.END .ED diff --git a/SYS/KERNEL.S.BIN.txt b/SYS/KERNEL.S.BIN.txt index 45f5abbf..e0cb1de0 100644 --- a/SYS/KERNEL.S.BIN.txt +++ b/SYS/KERNEL.S.BIN.txt @@ -19,7 +19,7 @@ BIN.R.Offset .BS 2 * out : * A = hMem To loaded LIB *-------------------------------------- -K.LoadLib jsr BIN.FindLIB +K.LoadLib jsr ENV.Search.LIB bcs .9 >LDYAI K.Buf256 jsr BIN.Load Y,A = "/PATH/BIN" @@ -76,7 +76,7 @@ K.UnloadLib pha *\-------------------------------------- K.LoadDrv >STYA .2+1 Save "BIN\0ARGS\0\0" - jsr BIN.FindDRV + jsr ENV.Search.DRV bcs .9 >LDYAI K.Buf256 jsr BIN.Load Y,A = "/PATH/BIN" @@ -115,32 +115,6 @@ K.LoadDrv >STYA .2+1 Save "BIN\0ARGS\0\0" sec K.LoadDrv.RTS rts *-------------------------------------- -BIN.FindLIB ldx #0 - .HS 2C BIT ABS -BIN.FindDRV ldx #2 - .HS 2C BIT ABS -BIN.FindPATH ldx #4 - - >STYA BIN.CmdLine - - >LDYA BIN.Find.ENV,x - - jsr K.GetEnv get value for Search Path - bcs K.LoadDrv.RTS - - >STYA ENV.SearchPath - - >LDYA BIN.CmdLine - - jmp ENV.FileSearch.YA find LIB/DRV in Search -*-------------------------------------- -BIN.Find.ENV .DA .1 - .DA .2 - .DA .3 -.1 .AZ "LIB" -.2 .AZ "DRV" -.3 .AZ "PATH" -*-------------------------------------- * BIN.Load * in : * Y,A = /BIN/PATH (CSTR) diff --git a/SYS/KERNEL.S.ENV.txt b/SYS/KERNEL.S.ENV.txt index 76c339bc..098308f3 100644 --- a/SYS/KERNEL.S.ENV.txt +++ b/SYS/KERNEL.S.ENV.txt @@ -16,7 +16,6 @@ ENV.BufLen .BS 1 ENV.bNoExp .BS 1 ENV.VarLen .BS 1 ENV.VarName .BS 16 -ENV.ZPSIZE .EQ * .ED *-------------------------------------- K.ExpandStr stz .88+1 Reset Intermediate string... @@ -156,8 +155,8 @@ K.FileSearch pha pla Y,A = filename - jsr ENV.FileSearch.YA - bcs .9 + jsr ENV.Search.YA + bcs K.FileSearch.RTS ldx #$ff @@ -172,10 +171,29 @@ K.FileSearch pha .4 sta $ffff,x Self Modified dex bpl .3 -.9 rts +K.FileSearch.RTS + rts +*-------------------------------------- +ENV.Search.LIB ldx #0 + .HS 2C BIT ABS +ENV.Search.DRV ldx #2 + .HS 2C BIT ABS +ENV.Search.PATH ldx #4 -ENV.FileSearch.YA - >STYA .4+1 + sty .1+1 + sta .2+1 + + >LDYA ENV.VARS,x + + jsr K.GetEnv get value for Search Path + bcs K.FileSearch.RTS + + >STYA ENV.SearchPath + +.1 ldy #$ff SELF MODIFIED +.2 lda #$ff SELF MODIFIED + +ENV.Search.YA >STYA .4+1 >LDYA ENV.SearchPath jsr K.ExpandStr Y,A = Search Path, Expand it @@ -712,6 +730,13 @@ ENV.AddAToBuf ldx ENV.BufLen inc ENV.BufLen rts *-------------------------------------- +ENV.VARS .DA .1 + .DA .2 + .DA .3 +.1 .AZ "LIB" +.2 .AZ "DRV" +.3 .AZ "PATH" +*-------------------------------------- MAN SAVE USR/SRC/SYS/KERNEL.S.ENV LOAD USR/SRC/SYS/KERNEL.S diff --git a/SYS/KERNEL.S.JMP.txt b/SYS/KERNEL.S.JMP.txt index 683edb42..3b256360 100644 --- a/SYS/KERNEL.S.JMP.txt +++ b/SYS/KERNEL.S.JMP.txt @@ -422,13 +422,6 @@ K.GUIOSD.JMP sta SETREADAUX sta CLRWRITEAUX rts *-------------------------------------- -K.realpath.I.GO bit RRAMWRAMBNK1 - bit RRAMWRAMBNK1 - jsr K.realpath.I - bit RRAMWRAMBNK2 - bit RRAMWRAMBNK2 - rts -*-------------------------------------- MAN SAVE USR/SRC/SYS/KERNEL.S.JMP LOAD USR/SRC/SYS/KERNEL.S diff --git a/SYS/KERNEL.S.PFT.txt b/SYS/KERNEL.S.PFT.txt index 4a501dc6..bc062299 100644 --- a/SYS/KERNEL.S.PFT.txt +++ b/SYS/KERNEL.S.PFT.txt @@ -22,7 +22,7 @@ K.PFTRemove.RTS rts * Out : *-------------------------------------- PFT.CheckPathYA stx .6+1 Save SYSCALL # - jsr K.realpath.I realpath in K.Buf256 + jsr STDLIB.realpath.I realpath in K.Buf256 bcs K.PFTRemove.RTS ldx #0 diff --git a/SYS/KERNEL.S.PS.txt b/SYS/KERNEL.S.PS.txt index 2c1b981b..dd89d3e7 100644 --- a/SYS/KERNEL.S.PS.txt +++ b/SYS/KERNEL.S.PS.txt @@ -8,6 +8,7 @@ PS.Flags .BS 1 PS.ArgV .BS 2 PS.ArgSize .BS 2 PS.hMem .BS 1 +PS.NewPSPtr .BS 2 .ED */-------------------------------------- * # ExecL @@ -62,16 +63,16 @@ K.ExecL sty .1+1 K.ExecV >STYA PS.ArgV >PULLB PS.Flags -PS.Exec jsr PS.CreateChild A=PID,Child S.PS at ZPPtr3,PS.Load.hMem +PS.Exec jsr PS.CreateChild A=PID,Child S.PS at PS.NewPSPtr,PS.Load.hMem bcs .9 sta .8+1 - stz K.IOBuf + stz K.IOBuf If !=0 after PS.Load, it's a script jsr PS.Load bcs .90 - jsr PS.AddArgV - bcc .8 + jsr PS.AddArgV K.IOBuf= /.../SHELL, K.Buf256=/.../SCRIPT + bcc .8 or K.IOBuf= 0, K.Buf256=/.../BINFILE .90 pha save error code @@ -130,7 +131,7 @@ PS.CreateChild ldx CORE.PSCount jsr K.GetMem0 Blank Everything in this S.PS bcs .99 - >STYA ZPPtr3 + >STYA PS.NewPSPtr stx PS.hMem txa plx @@ -140,7 +141,7 @@ PS.CreateChild ldx CORE.PSCount ldy #S.PS.PID lda CORE.LastPSID - sta (ZPPtr3),y + sta (PS.NewPSPtr),y ldy #S.PS.hPREFIX copy hPREFIX... lda (pPs),y @@ -152,13 +153,13 @@ PS.CreateChild ldx CORE.PSCount txa ldy #S.PS.hPREFIX - sta (ZPPtr3),y + sta (PS.NewPSPtr),y lda #S.PS.F.DUPENV bit PS.Flags need to create ENV ? beq .6 no... - sta (ZPPtr3) Mark this PS with DUPENV flag + sta (PS.NewPSPtr) Mark this PS with DUPENV flag ldy #S.PS.hENV dup hENV from parent PS lda (pPs),y @@ -171,12 +172,12 @@ PS.CreateChild ldx CORE.PSCount .6 ldy #S.PS.hENV reuse hENV from parent PS lda (pPs),y -.8 sta (ZPPtr3),y +.8 sta (PS.NewPSPtr),y ldy #S.PS.hStdIn .81 lda (pPs),y - sta (ZPPtr3),y + sta (PS.NewPSPtr),y iny cpy #S.PS.hStdErr+1 bne .81 @@ -185,7 +186,7 @@ PS.CreateChild ldx CORE.PSCount lda (pPs),y ldy #S.PS.PPID - sta (ZPPtr3),y + sta (PS.NewPSPtr),y lda #S.PS.F.HOLD bit PS.Flags @@ -195,8 +196,8 @@ PS.CreateChild ldx CORE.PSCount sta (pPs) HOLD parent PS .82 lda #S.PS.F.INIT - ora (ZPPtr3) - sta (ZPPtr3) Make this PS Init.... + ora (PS.NewPSPtr) + sta (PS.NewPSPtr) Make this PS Init.... ldy #S.PS.CPID lda CORE.LastPSID @@ -213,27 +214,28 @@ PS.Load ldy #$ff cmp #'/' bne .1 - >LDYA PS.ArgV found /, some path specified, no search - jsr K.realpath.I.GO BANK1 - bcs .99 - >PUSHWI K.S.STAT - >LDYAI K.Buf256 + >LDYA PS.ArgV found /, some path specified, no search >SYSCALL stat BANK 1 - bcc .6 + bcc .6 REAL path in K.Buf256 .99 rts -.2 >DEBUG +.2 >LDYA PS.ArgV + jsr ENV.Search.PATH Get fullpath in K.Buf256 + bcc .6 + + ldy #S.PS.hPREFIX + lda (pPS),y + jsr K.GetMemPtr + >STYA ENV.SearchPath >LDYA PS.ArgV - jsr BIN.FindPATH Get fullpath in K.Buf256 + jsr ENV.Search.YA bcs .99 - + .6 lda K.S.STAT+S.STAT.P.TYPE cmp #S.FI.T.BIN - bne .7 - >LDYAI K.Buf256 - bra PS.LoadBIN + beq PS.LoadBIN .7 cmp #S.FI.T.TXT beq PS.Load.SCRIPT @@ -247,65 +249,72 @@ PS.Load.IPATH lda #E.BADPATH sec PS.Load.RTS rts -PS.Load.SCRIPT jsr PS.LoadGetHeader +PS.Load.SCRIPT ldx #$ff + +.10 inx Save Script name in IOBuf + lda K.Buf256,x + sta K.IOBuf,x + bne .10 + + jsr PS.LoadGetHeader bcs PS.Load.RTS >LDYAI PS.Load.ROOT - jsr K.GetEnv ZPPtr3 Trashed + jsr K.GetEnv bcs PS.Load.IPATH - >STYA .21+1 + >STYA .2+1 ldx #$ff -.2 inx -.21 lda $ffff,x SELF MODIFIED - sta K.IOBuf,x - bne .2 +.1 inx +.2 lda $ffff,x SELF MODIFIED + sta K.Buf256,x K.Buf256 = "/ROOT/" + bne .1 ldy #0 -.3 lda K.IOBuf+128,y +.3 lda K.IOBuf+128,y Check HEADER= "#!/" cmp PS.Load.HEADER,y bne PS.Load.IBIN iny cpy #3 bne .3 -.4 iny +.4 iny inx lda K.IOBuf+128-1,y - sta K.IOBuf-1,x + sta K.Buf256-1,x K.Buf256 = "/ROOT/BIN/SHELL" beq .5 eor #C.CR bne .4 - sta K.IOBuf-1,x + sta K.Buf256-1,x K.Buf256 = "/ROOT/BIN/SHELL\0" .5 >PUSHWI K.S.STAT - >LDYAI K.IOBuf + >LDYAI K.Buf256 >SYSCALL stat BANK 1 bcs PS.Load.RTS - lda PS.hMem Restore ZPPtr3 trashed by GetEnv - jsr K.GetMemPtr - >STYA ZPPtr3 - >LDYAI K.IOBuf + lda K.S.STAT+S.STAT.P.TYPE + cmp #S.FI.T.BIN + bne PS.Load.IBIN K.Buf256= /.../SHELL, K.IOBuf=/.../SCRIPT *-------------------------------------- -PS.LoadBIN jsr BIN.Load +PS.LoadBIN >LDYAI K.Buf256 + jsr BIN.Load bcs .9 >STYA ZPPtr4 save PTR to Code Segment phy ldy #S.PS.ZP.CODE+1 - sta (ZPPtr3),y save pCode HI... + sta (PS.NewPSPtr),y save pCode HI... dey pla - sta (ZPPtr3),y save pCode LO... + sta (PS.NewPSPtr),y save pCode LO... txa ldy #S.PS.hCS - sta (ZPPtr3),y save CS hMem in S.PS + sta (PS.NewPSPtr),y save CS hMem in S.PS * jsr K.GetMemByID * jsr PS.SetMemOwner Set Ownership @@ -315,8 +324,8 @@ PS.LoadBIN jsr BIN.Load beq .1 ldy #S.PS.F update PS S.PS.F - ora (ZPPtr3),y - sta (ZPPtr3),y + ora (PS.NewPSPtr),y + sta (PS.NewPSPtr),y .1 ldy #H.BIN.DS.SIZE+1 lda (ZPPtr4),y Load DS.SIZE HI @@ -335,14 +344,14 @@ PS.LoadBIN jsr BIN.Load phy ldy #S.PS.ZP.DATA+1 - sta (ZPPtr3),y save pData HI... + sta (PS.NewPSPtr),y save pData HI... dey pla - sta (ZPPtr3),y save pData LO... + sta (PS.NewPSPtr),y save pData LO... txa ldy #S.PS.hDS - sta (ZPPtr3),y save DS hMem in S.PS + sta (PS.NewPSPtr),y save DS hMem in S.PS jsr PS.SetMemOwner Set Ownership @@ -350,7 +359,7 @@ PS.LoadBIN jsr BIN.Load lda (ZPPtr4),y Load SS.SIZE ldy #S.PS.ZP.STACK - sta (ZPPtr3),y save pStack LO... + sta (PS.NewPSPtr),y save pStack LO... tay @@ -364,11 +373,11 @@ PS.LoadBIN jsr BIN.Load bcs .9 ldy #S.PS.ZP.STACK+1 - sta (ZPPtr3),y save pStack HI...(LO already set to Stack TOP) + sta (PS.NewPSPtr),y save pStack HI...(LO already set to Stack TOP) txa ldy #S.PS.hSS - sta (ZPPtr3),y save SS hMem in S.PS + sta (PS.NewPSPtr),y save SS hMem in S.PS jsr PS.SetMemOwner Set Ownership @@ -377,7 +386,7 @@ PS.LoadBIN jsr BIN.Load clc adc #8 Add room for 4 saved PTR ldy #S.PS.ZP.SIZE - sta (ZPPtr3),y + sta (PS.NewPSPtr),y clc .9 rts @@ -386,9 +395,9 @@ PS.LoadGetHeader >PUSHWI 0 Aux type >PUSHBI S.FI.T.TXT >PUSHBI O.RDONLY - >LDYA PS.ArgV + >LDYAI K.IOBuf >SYSCALL fopen - bcs PS.LoadGetHeader.RTS + bcs .9 sta .1+1 >PUSHWI 128 @@ -402,8 +411,7 @@ PS.LoadGetHeader >SYSCALL fclose pla plp -PS.LoadGetHeader.RTS - rts +.9 rts *-------------------------------------- PS.Load.ROOT .AZ "ROOT" PS.Load.HEADER .AZ "#!/" @@ -435,23 +443,42 @@ PS.DupEnv jsr K.GetMemPtr clc .9 rts *-------------------------------------- -* hBIN + PS.ArgV -> #S.PS.hARGV +* K.Buf256= /.../SHELL, K.IOBuf=/.../SCRIPT +* - or - +* K.Buf256=/.../BINFILE,K.IOBuf=0 +* Buf256+IOBUF(?)+PS.ArgV[1,...] -> #S.PS.hARGV *-------------------------------------- -PS.AddArgV stz PS.ArgSize - stz PS.ArgSize+1 - - lda K.IOBuf +PS.AddArgV ldy #$ff In both cases, remove ARGV[0] + +.60 iny + lda (PS.ArgV),y + bne .60 + + tya + sec + adc PS.ArgV + sta PS.ArgV + bcc .70 + + inc PS.ArgV+1 Skip old ARGV[0] = scriptename + +.70 >LDYAI K.Buf256 + jsr K.strlen + >STYA PS.ArgSize + + lda K.IOBuf is there a /BIN/SHELL ? beq .10 >LDYAI K.IOBuf jsr K.strlen - iny +1 for \0 - >STYA PS.ArgSize - ldx #0 ARGC-1 - .HS 2C + jsr PS.AddYAp12ArgSize -.10 ldx #$ff ARGC-1 - >LDYA PS.ArgV +.10 ldx #0 For now, 0 args... + lda K.IOBuf + beq .11 +1 for scriptpath + inx + +.11 >LDYA PS.ArgV >STYA ZPPtr1 .1 lda (ZPPtr1) @@ -465,20 +492,15 @@ PS.AddArgV stz PS.ArgSize lda (ZPPtr1),y bne .2 - tya - sec - adc PS.ArgSize - sta PS.ArgSize - bcc .3 - - inc PS.ArgSize+1 +* lda #0 + jsr PS.AddYAp12ArgSize .3 jsr MEM.AddYp1ToPtr1 bra .1 .4 txa ldy #S.PS.ARGC - sta (ZPPtr3),y + sta (PS.NewPSPtr),y >LDYA PS.ArgSize Add 1 for ending 0 iny @@ -491,14 +513,16 @@ PS.AddArgV stz PS.ArgSize >STYA ZPPtr2 Target Buffer txa ldy #S.PS.hARGV - sta (ZPPtr3),y + sta (PS.NewPSPtr),y + >LDYAI K.Buf256 + jsr PS.AddYAToStrV + lda K.IOBuf beq .6 >LDYAI K.IOBuf - >STYA ZPPtr1 - jsr PS.AddPtr1ToStrV + jsr PS.AddYAToStrV .6 >LDYA PS.ArgV >STYA ZPPtr1 @@ -511,6 +535,7 @@ PS.AddPtr1ToStrVUntil0 jsr PS.AddPtr1ToStrV bra .1 *-------------------------------------- +PS.AddYAToStrV >STYA ZPPtr1 PS.AddPtr1ToStrV ldy #$ff @@ -531,9 +556,20 @@ PS.AddPtr1ToStrV PS.AddPtr1ToStrV.8 rts *-------------------------------------- +PS.AddYAp12ArgSize + pha + tya + sec +1 for \0 + adc PS.ArgSize + sta PS.ArgSize + pla + adc PS.ArgSize+1 + sta PS.ArgSize+1 + rts +*-------------------------------------- PS.SetMemOwner lda CORE.LastPSID ldy #S.MEM.OWNERPID - sta (ZPMEMMGR),y + sta (ZPMemMgrSPtr),y rts */-------------------------------------- * # ExecL diff --git a/SYS/KERNEL.S.STDLIB.txt b/SYS/KERNEL.S.STDLIB.txt index bee606a3..6718a215 100644 --- a/SYS/KERNEL.S.STDLIB.txt +++ b/SYS/KERNEL.S.STDLIB.txt @@ -284,11 +284,15 @@ STDLIB.32.Clear ldx #3 *\-------------------------------------- K.realpath sec .HS 90 BCC -K.realpath.I clc - ror .89+1 - - >STYA ZPPtr1 +STDLIB.realpath.I + clc + ror .82+1 + >SYSCALL ExpandStr + bcs STDLIB.32.RTS + >STYA ZPPtr1 + stx .99+1 save expanded buffer hMem + ldx #$ff lda (ZPPtr1) @@ -321,7 +325,7 @@ K.realpath.I clc bne .4 dex - beq .89 we have '/'....nothing to do... + beq .81 we have '/'....nothing to do... lda K.Buf256,x cmp #'/' @@ -333,7 +337,7 @@ K.realpath.I clc .50 ldx #1 lda K.Buf256,x - beq .89 + beq .81 .5 ldy #0 dot counter=0 @@ -367,7 +371,7 @@ K.realpath.I clc bra .80 .9 dey "../" ? - bne .90 ".../" ??!!...mmm...syntax error + bne .99 ".../" ??!!...mmm...syntax error lda K.Buf256-3,x cmp #'/' "/../" ? @@ -378,7 +382,7 @@ K.realpath.I clc dex txa we found "/../" - beq .90 at the beginning of string...cannot remove /dir/.. + beq .99 at the beginning of string...cannot remove /dir/.. jsr K.RealPath.RemoveAtX remove "/.." @@ -394,17 +398,22 @@ K.realpath.I clc lda K.Buf256,x bne .5 *-------------------------------------- -.89 lda #$ff SELF MODIFIED - bpl .98 +.81 jsr .99 + +.82 lda #$ff SELF MODIFIED + bpl .88 >LDYAI K.Buf256 >SYSCALL StrDup BANK 2 rts -.90 lda #E.BADPATH - sec +.88 clc rts -.98 clc +.99 lda #$ff SELF MODIFIED + jsr K.FreeMem + + lda #E.BADPATH + sec rts *-------------------------------------- K.RealPath.RemoveAtX