Kernel 0.9.2

This commit is contained in:
Rémy GIBERT 2018-09-05 13:31:49 +02:00
parent c7a0656f45
commit aad4c9a8b8
12 changed files with 65 additions and 99 deletions

View File

@ -203,7 +203,7 @@ Load a file in memory
# open # open
## C ## C
`int open(const char *pathname, int flags);` `hFD open(const char *pathname, int flags);`
## ASM ## ASM
**In:** **In:**
@ -977,13 +977,19 @@ Copy string
Y,A = destination Y,A = destination
# StrMatch # 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:** **In:**
PUSHW = PTR to Pattern (e.g. '*test?.txt') `>PUSHWI pattern`
PUSHW = PTR to Src String `>LDYAI s`
`>SYSCALL strmatch`
**Out:** **Out:**
CC : match CC : match
CS : no match CS : no match
# StrUpr/StrLwr # StrUpr/StrLwr
Convert string to UPPERCASE/lowercase Convert string to UPPERCASE/lowercase

View File

@ -57,7 +57,7 @@
**In:** **In:**
PUSHW = PTR to S.SOCKET template PUSHW = PTR to S.SOCKET template
**Out:** **Out:**
YA = PTR to new S.SOCKET Y,A = PTR to new S.SOCKET
X = hSocket X = hSocket
# SKT.Close # SKT.Close
@ -93,50 +93,6 @@
**Out:** **Out:**
A = hFile 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) # SKT.Read (STREAM)
Read data in pBuf Read data in pBuf
**In:** **In:**
@ -145,3 +101,23 @@
PUSHW = len PUSHW = len
**Out:** **Out:**
Y,A = bytes transfered 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

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -137,7 +137,7 @@ CS.RUN >SYSCALL GetChar
>SYSCALL GetMemPtr >SYSCALL GetMemPtr
>PUSHYA >PUSHYA
>PUSHW ZPFileName >LDYA ZPFileName
>SYSCALL StrMatch >SYSCALL StrMatch
bcs .8 no match, skip.... bcs .8 no match, skip....

View File

@ -125,7 +125,7 @@ CS.RUN >SYSCALL GetChar
>SYSCALL GetMemPtr >SYSCALL GetMemPtr
>PUSHYA >PUSHYA
>PUSHW ZPFileName >LDYA ZPFileName
>SYSCALL StrMatch >SYSCALL StrMatch
bcs .8 no match, skip.... bcs .8 no match, skip....

View File

@ -18,6 +18,7 @@ hDstFileName .BS 1
hDstFullPath .BS 1 hDstFullPath .BS 1
hDstFile .BS 1 hDstFile .BS 1
bCopy .BS 1 bCopy .BS 1
hCopyBuf .BS 1
CopyRC .BS 1 CopyRC .BS 1
.FIN .FIN

View File

@ -228,7 +228,7 @@ CS.RUN >SYSCALL GetChar
>SYSCALL GetMemPtr >SYSCALL GetMemPtr
>PUSHYA >PUSHYA
>PUSHW ZPFileName >LDYA ZPFileName
>SYSCALL StrMatch >SYSCALL StrMatch
bcs CS.RUN.NEXT no match, skip.... bcs CS.RUN.NEXT no match, skip....
@ -427,7 +427,6 @@ CS.RUN.FILE jsr CS.RUN.FILE.MSG
ldy #hDstBasePath ldy #hDstBasePath
jsr CS.RUN.GetPathY jsr CS.RUN.GetPathY
>PUSHYA
>SYSCALL StrMatch >SYSCALL StrMatch
bcs .3 not same dir, go copy/delete bcs .3 not same dir, go copy/delete
@ -606,13 +605,14 @@ CS.RUN.Open phy Save Filename
>SYSCALL FOpen >SYSCALL FOpen
rts rts
*-------------------------------------- *--------------------------------------
CS.RUN.Copy stz .90+1 CS.RUN.Copy >STZ.G hCopyBuf
>LDYAI X.COPY.BUF.SIZE >LDYAI X.COPY.BUF.SIZE
>SYSCALL getmem >SYSCALL getmem
bcs .9 bcs .9
>STYA ZPPtr1 >STYA ZPPtr1
stx .90+1 txa
>STA.G hCopyBuf
>PUSHWI X.COPY.BUF.SIZE Bytes To Read >PUSHWI X.COPY.BUF.SIZE Bytes To Read
>PUSHW ZPPtr1 Dst Ptr >PUSHW ZPPtr1 Dst Ptr
@ -624,15 +624,13 @@ CS.RUN.Copy stz .90+1
lda #0 lda #0
bra .9 bra .9
.1 >STYA ZPPtr2 .1 >PUSHYA Bytes To Write
>PUSHW ZPPtr2 Bytes To Write
>PUSHW ZPPtr1 Src Ptr >PUSHW ZPPtr1 Src Ptr
>LDA.G hDstFile >LDA.G hDstFile
>SYSCALL FWrite >SYSCALL FWrite
bcs .9 bcs .9
lda .90+1 >LDA.G hCopyBuf
>SYSCALL FreeMem >SYSCALL FreeMem
ldy #bQuiet ldy #bQuiet
@ -649,14 +647,14 @@ CS.RUN.Copy stz .90+1
.9 ldy #CopyRC .9 ldy #CopyRC
sta (pData),y sta (pData),y
.90 lda #$00 >LDA.G hCopyBuf
beq CS.RUN.CopyEnd beq CS.RUN.CopyEnd
>SYSCALL FreeMem >SYSCALL FreeMem
*-------------------------------------- *--------------------------------------
CS.RUN.CopyEnd >LDA.G hSrcFile CS.RUN.CopyEnd >LDA.G hSrcFile
>SYSCALL fclose >SYSCALL fclose
ldy #hDstFile >LDA.G hDstFile
lda (pData),y lda (pData),y
>SYSCALL fclose >SYSCALL fclose
@ -677,7 +675,7 @@ CS.RUN.CheckErr bcs .1
>LDYA L.MSG.OK >LDYA L.MSG.OK
>SYSCALL puts >SYSCALL puts
rts .8 rts
.1 ldy #RC .1 ldy #RC
sta (pData),y sta (pData),y
@ -693,15 +691,11 @@ CS.RUN.CheckErr bcs .1
>LDYA L.MSG.ERR >LDYA L.MSG.ERR
>SYSCALL printf >SYSCALL printf
bcs .9
rts rts
.2 jsr CS.RUN.CR .2 jsr CS.RUN.CR
pla pla
sec sec
.9 rts
.8 clc
rts rts
*-------------------------------------- *--------------------------------------
CS.RUN.BuildFilePath CS.RUN.BuildFilePath

View File

@ -352,7 +352,7 @@ SKT.Read.I jsr SKT.Get.I
ldy #S.SOCKET.TCP.STATUS ldy #S.SOCKET.TCP.STATUS
lda (ZPPtrSKT),y lda (ZPPtrSKT),y
cmp #S.SOCKET.TCP.STATUS.ESTBLSH cmp #S.SOCKET.TCP.STATUS.FINWT2
bcc .92 Not yet established...no data bcc .92 Not yet established...no data
bne .91 closing...IO err bne .91 closing...IO err

View File

@ -286,37 +286,18 @@ TCP.IN.JMP.LASTACK
TCP.IN.JMP.FINWT1 TCP.IN.JMP.FINWT1
ldy #S.TCP.OPTIONS only accept ACK packet ldy #S.TCP.OPTIONS only accept ACK packet
lda (ZPFrameInPtr),y lda (ZPFrameInPtr),y
cmp #S.TCP.OPTIONS.ACK bit #S.TCP.OPTIONS.ACK
bne .1 beq TCP.IN.JMP.FINWT2.1
ldy #S.SOCKET.TCP.STATUS ldy #S.SOCKET.TCP.STATUS
lda #S.SOCKET.TCP.STATUS.FINWT2 lda #S.SOCKET.TCP.STATUS.FINWT2
sta (ZPPtrSKT),y 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 TCP.IN.JMP.FINWT2
ldy #S.TCP.OPTIONS only accept FIN packet ldy #S.TCP.OPTIONS only accept FIN packet
lda (ZPFrameInPtr),y lda (ZPFrameInPtr),y
cmp #S.TCP.OPTIONS.FIN TCP.IN.JMP.FINWT2.1
bit #S.TCP.OPTIONS.FIN
bne .8 bne .8
ldy #S.SOCKET.TCP.OPTIONS ldy #S.SOCKET.TCP.OPTIONS
@ -433,6 +414,7 @@ TCP.OUT.I lda SKT.TCBCache+S.TCB.OUTTOSEND+1
ldy #S.SOCKET.TCP.OPTIONS ldy #S.SOCKET.TCP.OPTIONS
lda (ZPPtrSKT),y lda (ZPPtrSKT),y
ora #S.TCP.OPTIONS.ACK
jsr TCP.OUT.SendOptA.1 jsr TCP.OUT.SendOptA.1
bcs TCP.OUT.9 bcs TCP.OUT.9
@ -464,6 +446,8 @@ TCP.OUT.SendOptA
TCP.OUT.SendOptA.1 TCP.OUT.SendOptA.1
ldy #S.TCP.OPTIONS ldy #S.TCP.OPTIONS
sta (ZPFrameOutPtr),y sta (ZPFrameOutPtr),y
bit #S.TCP.OPTIONS.ACK
beq .10
ldx #3 ldx #3
ldy #S.TCP.ACKNUM+3 ldy #S.TCP.ACKNUM+3
@ -474,7 +458,7 @@ TCP.OUT.SendOptA.1
dex dex
bpl .1 bpl .1
ldx #3 .10 ldx #3
ldy #S.TCP.SEQNUM+3 ldy #S.TCP.SEQNUM+3
.2 lda SKT.TCBCache+S.TCB.OUTNEXTSEQ,x .2 lda SKT.TCBCache+S.TCB.OUTNEXTSEQ,x

View File

@ -84,15 +84,20 @@ K.StrCpy clc
.8 rts .8 rts
*/-------------------------------------- */--------------------------------------
* # StrMatch * # 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:** * **In:**
* PUSHW = PTR to Pattern (e.g. '*test?.txt') * `>PUSHWI pattern`
* PUSHW = PTR to Src String * `>LDYAI s`
* `>SYSCALL strmatch`
* **Out:** * **Out:**
* CC : match * CC : match
* CS : no match * CS : no match
*\-------------------------------------- *\--------------------------------------
K.StrMatch jsr MEM.PullP1P2 K.StrMatch >STYA ZPPtr1 s
>PULLW ZPPtr2 pattern
lda (ZPPtr2) Get pattern 1st byte lda (ZPPtr2) Get pattern 1st byte
beq .8 Match always if empty beq .8 Match always if empty