From 9dbb05cd667e5b69f499f2f2e8ec0926159fc11f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Fri, 7 Feb 2020 13:53:46 +0100 Subject: [PATCH] Kernel 0.93++ --- .Floppies/A2OSX.BUILD.po | Bin 33553920 -> 33553920 bytes BIN/SH.S.HIS.txt | 5 +- INC/A2osX.I.txt | 8 +-- SYS/KERNEL.S.ARG.txt | 66 +++++++++++++++++++++- SYS/KERNEL.S.JMP.txt | 6 +- SYS/KERNEL.S.PS.txt | 13 ++++- SYS/KERNEL.S.STRV.txt | 115 +++++++++------------------------------ 7 files changed, 111 insertions(+), 102 deletions(-) diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index f7396abd9ce21d18cb8dbb7075a33a9ba9fe7470..37c889b16ac99627c4eb8fe9edaf80e597515736 100644 GIT binary patch delta 23886 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 N1OB1*^F36`{{tgmX#@ZO delta 23667 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 diff --git a/BIN/SH.S.HIS.txt b/BIN/SH.S.HIS.txt index 07b77d0c..eaa3d3e4 100644 --- a/BIN/SH.S.HIS.txt +++ b/BIN/SH.S.HIS.txt @@ -34,7 +34,8 @@ HIS.Add >LDA.G HIS.hBuf .1 >STZ.G HIS.Index Reset Index >INC.G HIS.Count -.9 rts +.9 +History.RTS rts *-------------------------------------- HIS.GetPrev >LDA.G HIS.hBuf beq HISTORY.RTS @@ -48,8 +49,6 @@ HIS.GetPrev >LDA.G HIS.hBuf >LDA.G HIS.Count .1 dec bra HIS.GetToCl - -History.RTS rts *-------------------------------------- HIS.GetNext >LDA.G HIS.hBuf beq HISTORY.RTS diff --git a/INC/A2osX.I.txt b/INC/A2osX.I.txt index 201e1289..6f8f268a 100644 --- a/INC/A2osX.I.txt +++ b/INC/A2osX.I.txt @@ -259,18 +259,18 @@ SYS.InsDrv .EQ $9E *-------------------------------------- SYS.ExecL .EQ $A0 SYS.ExecV .EQ $A2 -* .EQ $A4 +SYS.Fork .EQ $A4 SYS.Kill .EQ $A6 SYS.LoadFile .EQ $A8 SYS.LoadTxtFile .EQ $AA -SYS.GetMemStat .EQ $AC -* .EQ $AE +SYS.FileSearch .EQ $AC +SYS.GetMemStat .EQ $AE SYS.Shift .EQ $B0 SYS.ArgV .EQ $B2 SYS.Expand .EQ $B4 -SYS.FileSearch .EQ $B6 +* .EQ $B6 SYS.PutEnv .EQ $B8 SYS.SetEnv .EQ $BA diff --git a/SYS/KERNEL.S.ARG.txt b/SYS/KERNEL.S.ARG.txt index a1850bff..02804b4e 100644 --- a/SYS/KERNEL.S.ARG.txt +++ b/SYS/KERNEL.S.ARG.txt @@ -41,7 +41,6 @@ K.Shift jsr K.ArgV dec sta (pPS),y clc - rts .9 rts */-------------------------------------- @@ -77,6 +76,71 @@ K.ArgV tax save requested arg# .9 lda #E.OOB sec rts +*/-------------------------------------- +* # Arg2ArgV +* Expand String and convert to StrV List +* ## C +* short int arg2argv(char* args, char* argv[]) +* ## ASM +* `>PUSHW argv` +* `>LDYA args` +* `>SYSCALL Arg2ArgV` +* ## RETURN VALUE +* A = Arg count +*\-------------------------------------- +K.Arg2ArgV jsr K.Expand + + bcs .9 + >STYA ZPPtr1 + stx .80+1 + + >PULLW ZPPtr2 Get target buffer + ldx #0 Arg Count + ldy #0 bInQuote + +.1 jsr SHARED.GetCharPtr1 + beq .8 + + cmp #C.SPACE + beq .1 skip leading spaces + +.2 cmp #'"' found a quote ? + bne .3 + + tya + eor #$ff + tay + bra .7 skip quote and check next char + +.3 cmp #C.SPACE + bne .6 regular char ...store... + tya + bmi .4 between quotes... store space... + + inx Found one arg !!! + lda #0 set this token End + jsr SHARED.PutCharPtr2 + bra .1 + +.4 lda #C.SPACE +.6 jsr SHARED.PutCharPtr2 + +.7 jsr SHARED.GetCharPtr1 + bne .2 + + inx + +.8 jsr SHARED.PutCharPtr2 set Argv[x] Ending 0 + + sta (ZPPtr2) set Array Ending 0 + phx +.80 lda #$FF SELF MODIFIED + jsr K.FreeMem Discard expanded string + pla get back Arg Count + +* clc + rts +.9 >RET 2 Discard target buffer *-------------------------------------- MAN SAVE USR/SRC/SYS/KERNEL.S.ARG diff --git a/SYS/KERNEL.S.JMP.txt b/SYS/KERNEL.S.JMP.txt index 353d0515..a81f8d7e 100644 --- a/SYS/KERNEL.S.JMP.txt +++ b/SYS/KERNEL.S.JMP.txt @@ -99,17 +99,17 @@ K.SYSCALL .DA 0 $00 .DA K.ExecL $A0 .DA K.ExecV - .DA 0 + .DA K.Fork .DA K.Kill .DA K.LoadFile .DA K.LoadTxtFile + .DA K.FileSearch .DA K.GetMemStat - .DA 0 .DA K.Shift $B0 .DA K.ArgV .DA K.Expand - .DA K.FileSearch + .DA 0 .DA K.PutEnv .DA K.SetEnv .DA K.GetEnv diff --git a/SYS/KERNEL.S.PS.txt b/SYS/KERNEL.S.PS.txt index 3941acb9..ee9c268a 100644 --- a/SYS/KERNEL.S.PS.txt +++ b/SYS/KERNEL.S.PS.txt @@ -31,7 +31,7 @@ K.ExecL >PULLB PS.Flags >PUSHYA .1 ldy #$ff SELF MODIFIED .2 lda #$ff SELF MODIFIED - jsr K.Str2StrV + jsr K.Arg2ArgV bcs .9 @@ -78,6 +78,17 @@ PS.Exec jsr PS.CreateChild A=PID,Child S.PS at PS.NewPSPtr,PS.Load.hMem .8 lda #$ff SELF MODIFIED * clc .9 rts +*/-------------------------------------- +* # Fork +* ## C +* `short nt fork();` +* ## ASM +* `>SYSCALL fork` +* ## RETURN VALUE +* A = Child PSID +*\-------------------------------------- +K.Fork clc + rts *-------------------------------------- * PS.CreateChild * in : diff --git a/SYS/KERNEL.S.STRV.txt b/SYS/KERNEL.S.STRV.txt index 85072b8d..38ccee32 100644 --- a/SYS/KERNEL.S.STRV.txt +++ b/SYS/KERNEL.S.STRV.txt @@ -163,6 +163,31 @@ K.StrVAdd sta CLRREADAUX clc rts +*-------------------------------------- +STRV.NStrPtr1 ldy #$ff + +.1 iny + + lda (ZPPtr1) + beq .2 + + inc ZPPtr1 + bne .1 + inc ZPPtr1+1 + bra .1 + +.2 tya + beq .9 + + inc ZPPtr1 + bne .8 + inc ZPPtr1+1 skip \0 + +.8 clc + rts + +.9 sec Y,A = 0 + rts */-------------------------------------- * # StrVDup * ## ASM @@ -210,96 +235,6 @@ K.StrVDup >STYA ZPPtr1 clc .9 rts -*/-------------------------------------- -* # Str2StrV -* Expand String and convert to StrV List -* ## C -* short int str2strv(char* args, char* argv[]) -* ## ASM -* `>PUSHW argv` -* `>LDYA args` -* `>SYSCALL Str2StrV` -* ## RETURN VALUE -* A = Arg count -*\-------------------------------------- -K.Str2StrV jsr K.Expand - - bcs .9 - >STYA ZPPtr1 - stx .80+1 - - >PULLW ZPPtr2 Get target buffer - ldx #0 Arg Count - ldy #0 bInQuote - -.1 jsr SHARED.GetCharPtr1 - beq .8 - - cmp #C.SPACE - beq .1 skip leading spaces - -.2 cmp #'"' found a quote ? - bne .3 - - tya - eor #$ff - tay - bra .7 skip quote and check next char - -.3 cmp #C.SPACE - bne .6 regular char ...store... - tya - bmi .4 between quotes... store space... - - inx Found one arg !!! - lda #0 set this token End - jsr SHARED.PutCharPtr2 - bra .1 - -.4 lda #C.SPACE -.6 jsr SHARED.PutCharPtr2 - -.7 jsr SHARED.GetCharPtr1 - bne .2 - - inx - -.8 jsr SHARED.PutCharPtr2 set Argv[x] Ending 0 - - sta (ZPPtr2) set Array Ending 0 - phx -.80 lda #$FF SELF MODIFIED - jsr K.FreeMem Discard expanded string - pla get back Arg Count - -* clc - rts -.9 >RET 2 Discard target buffer -*-------------------------------------- -STRV.NStrPtr1 ldy #$ff - -.1 iny - - lda (ZPPtr1) - beq .2 - - inc ZPPtr1 - bne .1 - inc ZPPtr1+1 - bra .1 - -.2 tya - beq .9 - - inc ZPPtr1 - bne .8 - inc ZPPtr1+1 skip \0 - -.8 clc - rts - -.9 sec Y,A = 0 - rts *-------------------------------------- STRV.Ptr1Ptr2cpy ldx #0