From aad4c9a8b8393c5f08cb234508bdc4aecd9a1256 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Wed, 5 Sep 2018 13:31:49 +0200 Subject: [PATCH] Kernel 0.9.2 --- .Docs/KERNEL.md | 18 +++++++---- .Docs/LIBTCPIP.md | 66 +++++++++++++-------------------------- .Floppies/A2OSX.BOOT.po | Bin 143360 -> 143360 bytes .Floppies/A2OSX.BUILD.po | Bin 819200 -> 819200 bytes .Floppies/A2OSX.SRC.po | Bin 819200 -> 819200 bytes BIN/CHTYP.S.txt | 2 +- BIN/LS.S.txt | 2 +- BIN/X.CPMVRM.G.txt | 1 + BIN/X.CPMVRM.S.txt | 24 ++++++-------- LIB/LIBTCPIP.S.SKT.txt | 2 +- LIB/LIBTCPIP.S.TCP.txt | 32 +++++-------------- SYS/KERNEL.S.STRING.txt | 17 ++++++---- 12 files changed, 65 insertions(+), 99 deletions(-) diff --git a/.Docs/KERNEL.md b/.Docs/KERNEL.md index c890790f..a58c0efc 100644 --- a/.Docs/KERNEL.md +++ b/.Docs/KERNEL.md @@ -203,7 +203,7 @@ Load a file in memory # open ## C -`int open(const char *pathname, int flags);` +`hFD open(const char *pathname, int flags);` ## ASM **In:** @@ -977,13 +977,19 @@ Copy string Y,A = destination # StrMatch -Compare a String against pattern +Compare a String against pattern (e.g. '*test?.txt') + +## C +`int * strmatch ( char * s, const char * pattern );` + +## ASM **In:** - PUSHW = PTR to Pattern (e.g. '*test?.txt') - PUSHW = PTR to Src String +`>PUSHWI pattern` +`>LDYAI s` +`>SYSCALL strmatch` **Out:** - CC : match - CS : no match +CC : match +CS : no match # StrUpr/StrLwr Convert string to UPPERCASE/lowercase diff --git a/.Docs/LIBTCPIP.md b/.Docs/LIBTCPIP.md index d07d5b47..3655f526 100644 --- a/.Docs/LIBTCPIP.md +++ b/.Docs/LIBTCPIP.md @@ -57,7 +57,7 @@ **In:** PUSHW = PTR to S.SOCKET template **Out:** - YA = PTR to new S.SOCKET + Y,A = PTR to new S.SOCKET X = hSocket # SKT.Close @@ -93,50 +93,6 @@ **Out:** A = hFile -# SKT.Write (DGRAM,STREAM,RAW) - Send block of data -**In:** - PUSHB = hSocket - PUSHW = pBuf - PUSHW = len -**Out:** - -# SKT.ReadFrame (DGRAM,RAW) -**In:** - A = hSocket -**Out:** - A = hFrame - -# SKT.PutC (STREAM) - Write a Char To Stream -**In:** - PUSHB = hSocket - PUSHB = Char -**Out:** - -# SKT.PutS (STREAM) - Write Line in pBuf -**In:** - PUSHB = hSocket - PUSHW = PSTR -**Out:** - -# SKT.GetC.A (STREAM) - Read a Char From Stream in A -**In:** - A = hSocket -**Out:** - A = char - -# SKT.GetS (STREAM) - Read a CR terminated Line in pBuf -**In:** - PUSHB = hSocket - PUSHW = pBuf - PUSHW = len -**Out:** - Y,A = bytes read - # SKT.Read (STREAM) Read data in pBuf **In:** @@ -145,3 +101,23 @@ PUSHW = len **Out:** Y,A = bytes transfered + +# SKT.Write (STREAM) + Send block of data +**In:** + PUSHB = hSocket + PUSHW = pBuf + PUSHW = len +**Out:** + +# SKT.Rcvd (DGRAM,RAW) +**In:** + A = hSocket +**Out:** + A = hFrame + +# SKT.Send (DGRAM,RAW) +**In:** + A = hSocket +**Out:** + A = hFrame diff --git a/.Floppies/A2OSX.BOOT.po b/.Floppies/A2OSX.BOOT.po index 0a14d359ee32c22eb3e468178e627ca5851121ca..44a5b46d0857fb31d2e2522b3466d2b1654bdb0d 100644 GIT binary patch delta 19024 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 Id0qN{0J+K1zyJUM delta 19197 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 g_xgex$Cn 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 V@QsA8624LJjc&YtG)A%a{{Tw$zq|kd diff --git a/.Floppies/A2OSX.SRC.po b/.Floppies/A2OSX.SRC.po index ea980c4f9e6588085bc3bbfdf6927d53566e1679..fe8b5f089db9ca6370d7ca0f94cc5e8de9eafb20 100644 GIT binary patch delta 10644 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 delta 10715 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 TTsyj4(qj}|1-3TYCE5NT3)8KW diff --git a/BIN/CHTYP.S.txt b/BIN/CHTYP.S.txt index a806b3aa..683b1f53 100644 --- a/BIN/CHTYP.S.txt +++ b/BIN/CHTYP.S.txt @@ -137,7 +137,7 @@ CS.RUN >SYSCALL GetChar >SYSCALL GetMemPtr >PUSHYA - >PUSHW ZPFileName + >LDYA ZPFileName >SYSCALL StrMatch bcs .8 no match, skip.... diff --git a/BIN/LS.S.txt b/BIN/LS.S.txt index 0df64955..0b8e7e44 100644 --- a/BIN/LS.S.txt +++ b/BIN/LS.S.txt @@ -125,7 +125,7 @@ CS.RUN >SYSCALL GetChar >SYSCALL GetMemPtr >PUSHYA - >PUSHW ZPFileName + >LDYA ZPFileName >SYSCALL StrMatch bcs .8 no match, skip.... diff --git a/BIN/X.CPMVRM.G.txt b/BIN/X.CPMVRM.G.txt index 6f5af74a..137d66c8 100644 --- a/BIN/X.CPMVRM.G.txt +++ b/BIN/X.CPMVRM.G.txt @@ -18,6 +18,7 @@ hDstFileName .BS 1 hDstFullPath .BS 1 hDstFile .BS 1 bCopy .BS 1 +hCopyBuf .BS 1 CopyRC .BS 1 .FIN diff --git a/BIN/X.CPMVRM.S.txt b/BIN/X.CPMVRM.S.txt index cfbcfd1d..6c31bb1c 100644 --- a/BIN/X.CPMVRM.S.txt +++ b/BIN/X.CPMVRM.S.txt @@ -228,7 +228,7 @@ CS.RUN >SYSCALL GetChar >SYSCALL GetMemPtr >PUSHYA - >PUSHW ZPFileName + >LDYA ZPFileName >SYSCALL StrMatch bcs CS.RUN.NEXT no match, skip.... @@ -427,7 +427,6 @@ CS.RUN.FILE jsr CS.RUN.FILE.MSG ldy #hDstBasePath jsr CS.RUN.GetPathY - >PUSHYA >SYSCALL StrMatch bcs .3 not same dir, go copy/delete @@ -606,13 +605,14 @@ CS.RUN.Open phy Save Filename >SYSCALL FOpen rts *-------------------------------------- -CS.RUN.Copy stz .90+1 +CS.RUN.Copy >STZ.G hCopyBuf >LDYAI X.COPY.BUF.SIZE >SYSCALL getmem bcs .9 >STYA ZPPtr1 - stx .90+1 + txa + >STA.G hCopyBuf >PUSHWI X.COPY.BUF.SIZE Bytes To Read >PUSHW ZPPtr1 Dst Ptr @@ -624,15 +624,13 @@ CS.RUN.Copy stz .90+1 lda #0 bra .9 -.1 >STYA ZPPtr2 - - >PUSHW ZPPtr2 Bytes To Write +.1 >PUSHYA Bytes To Write >PUSHW ZPPtr1 Src Ptr >LDA.G hDstFile >SYSCALL FWrite bcs .9 - lda .90+1 + >LDA.G hCopyBuf >SYSCALL FreeMem ldy #bQuiet @@ -649,14 +647,14 @@ CS.RUN.Copy stz .90+1 .9 ldy #CopyRC sta (pData),y -.90 lda #$00 + >LDA.G hCopyBuf beq CS.RUN.CopyEnd >SYSCALL FreeMem *-------------------------------------- CS.RUN.CopyEnd >LDA.G hSrcFile >SYSCALL fclose - ldy #hDstFile + >LDA.G hDstFile lda (pData),y >SYSCALL fclose @@ -677,7 +675,7 @@ CS.RUN.CheckErr bcs .1 >LDYA L.MSG.OK >SYSCALL puts - rts +.8 rts .1 ldy #RC sta (pData),y @@ -693,15 +691,11 @@ CS.RUN.CheckErr bcs .1 >LDYA L.MSG.ERR >SYSCALL printf - bcs .9 rts .2 jsr CS.RUN.CR pla sec -.9 rts - -.8 clc rts *-------------------------------------- CS.RUN.BuildFilePath diff --git a/LIB/LIBTCPIP.S.SKT.txt b/LIB/LIBTCPIP.S.SKT.txt index 827b9aac..3dc49c1d 100644 --- a/LIB/LIBTCPIP.S.SKT.txt +++ b/LIB/LIBTCPIP.S.SKT.txt @@ -352,7 +352,7 @@ SKT.Read.I jsr SKT.Get.I ldy #S.SOCKET.TCP.STATUS lda (ZPPtrSKT),y - cmp #S.SOCKET.TCP.STATUS.ESTBLSH + cmp #S.SOCKET.TCP.STATUS.FINWT2 bcc .92 Not yet established...no data bne .91 closing...IO err diff --git a/LIB/LIBTCPIP.S.TCP.txt b/LIB/LIBTCPIP.S.TCP.txt index 87c76f96..0e1c106f 100644 --- a/LIB/LIBTCPIP.S.TCP.txt +++ b/LIB/LIBTCPIP.S.TCP.txt @@ -286,37 +286,18 @@ TCP.IN.JMP.LASTACK TCP.IN.JMP.FINWT1 ldy #S.TCP.OPTIONS only accept ACK packet lda (ZPFrameInPtr),y - cmp #S.TCP.OPTIONS.ACK - bne .1 + bit #S.TCP.OPTIONS.ACK + beq TCP.IN.JMP.FINWT2.1 ldy #S.SOCKET.TCP.STATUS lda #S.SOCKET.TCP.STATUS.FINWT2 sta (ZPPtrSKT),y - clc - rts - -.1 cmp #S.TCP.OPTIONS.FIN - bne .8 - - ldy #S.SOCKET.TCP.OPTIONS - lda (ZPPtrSKT),y - ora #S.TCP.OPTIONS.ACK - sta (ZPPtrSKT),y - - jsr TCP.OUT FINWT1, Ack the FIN - bcs .9 - - ldy #S.SOCKET.TCP.STATUS - lda #S.SOCKET.TCP.STATUS.CLOSING - sta (ZPPtrSKT),y - -.8 clc -.9 rts *-------------------------------------- TCP.IN.JMP.FINWT2 ldy #S.TCP.OPTIONS only accept FIN packet lda (ZPFrameInPtr),y - cmp #S.TCP.OPTIONS.FIN +TCP.IN.JMP.FINWT2.1 + bit #S.TCP.OPTIONS.FIN bne .8 ldy #S.SOCKET.TCP.OPTIONS @@ -433,6 +414,7 @@ TCP.OUT.I lda SKT.TCBCache+S.TCB.OUTTOSEND+1 ldy #S.SOCKET.TCP.OPTIONS lda (ZPPtrSKT),y + ora #S.TCP.OPTIONS.ACK jsr TCP.OUT.SendOptA.1 bcs TCP.OUT.9 @@ -464,6 +446,8 @@ TCP.OUT.SendOptA TCP.OUT.SendOptA.1 ldy #S.TCP.OPTIONS sta (ZPFrameOutPtr),y + bit #S.TCP.OPTIONS.ACK + beq .10 ldx #3 ldy #S.TCP.ACKNUM+3 @@ -474,7 +458,7 @@ TCP.OUT.SendOptA.1 dex bpl .1 - ldx #3 +.10 ldx #3 ldy #S.TCP.SEQNUM+3 .2 lda SKT.TCBCache+S.TCB.OUTNEXTSEQ,x diff --git a/SYS/KERNEL.S.STRING.txt b/SYS/KERNEL.S.STRING.txt index b002b8a4..ba73b6ff 100644 --- a/SYS/KERNEL.S.STRING.txt +++ b/SYS/KERNEL.S.STRING.txt @@ -84,15 +84,20 @@ K.StrCpy clc .8 rts */-------------------------------------- * # StrMatch -* Compare a String against pattern +* Compare a String against pattern (e.g. '*test?.txt') +* ## C +* `int * strmatch ( char * s, const char * pattern );` +* ## ASM * **In:** -* PUSHW = PTR to Pattern (e.g. '*test?.txt') -* PUSHW = PTR to Src String +* `>PUSHWI pattern` +* `>LDYAI s` +* `>SYSCALL strmatch` * **Out:** -* CC : match -* CS : no match +* CC : match +* CS : no match *\-------------------------------------- -K.StrMatch jsr MEM.PullP1P2 +K.StrMatch >STYA ZPPtr1 s + >PULLW ZPPtr2 pattern lda (ZPPtr2) Get pattern 1st byte beq .8 Match always if empty