Kernel 0.94++

This commit is contained in:
Rémy GIBERT 2021-05-19 14:44:47 +02:00
parent dc36e6373d
commit ee7b606612
49 changed files with 1382 additions and 1222 deletions

View File

@ -69,8 +69,8 @@ Create a new socket
## ASM
**In:**
`>PUSHB type`
`>PUSHB protocol`
`lda type`
`>LIBCALL hLIBTCPIP,LIBTCPIP.socket`
## RETURN VALUE
@ -85,8 +85,8 @@ bind a name to a socket
## ASM
**In:**
`>PUSHB fd`
`>PUSHW addr`
`lda fd`
`>LIBCALL hLIBTCPIP,LIBTCPIP.socket`
## RETURN VALUE
@ -101,8 +101,8 @@ Initiate a connection on a socket
## ASM
**In:**
`>PUSHB fd`
`>PUSHW addr`
`lda fd`
`>LIBCALL hLIBTCPIP,LIBTCPIP.socket`
## RETURN VALUE
@ -157,9 +157,9 @@ Close socket
## ASM
**In:**
`>PUSHWI count`
`>PUSHB fd`
`>PUSHW buf`
`lda fd`
`>PUSHW count`
`>LIBCALL hLIBTCPIP,LIBTCPIP.read`
## RETURN VALUE
@ -173,26 +173,37 @@ CS: A = EC
## ASM
**In:**
`>PUSHWI count`
`>PUSHB fd`
`>PUSHW buf`
`lda fd`
`>PUSHW count`
`>LIBCALL hLIBTCPIP,LIBTCPIP.write`
## RETURN VALUE
CC: Y,A = bytes written
CS: A = EC
# Recv (RAW,DGRAM,SEQPKT)
# RecvFrom (RAW,DGRAM,SEQPKT)
## C
`hMem recv(hFD fd);`
`hMem recvfrom(hFD fd, struct sockaddr *addr);`
## ASM
**In:**
`>PUSHB fd`
`>PUSHW addr` (RecvFrom)
`>LIBCALL hLIBTCPIP,LIBTCPIP.Recv`
## RETURN VALUE
CC: A = hMem
CS: A = EC
# Recv (RAW,DGRAM,SEQPKT)
## C
`hMem recv(hFD fd);`
## ASM
**In:**
`lda fd`
`>LIBCALL hLIBTCPIP,LIBTCPIP.Recv`
@ -200,20 +211,33 @@ CS: A = EC
CC: A = hMem
CS: A = EC
# Send (RAW,DGRAM,SEQPKT)
# SendTo (RAW,DGRAM,SEQPKT)
## C
`int skt.send(hFD fd, const void *buf, int count);`
`int skt.sendto(hFD fd, const void *buf, int count, const struct sockaddr *addr);`
## ASM
**In:**
`>PUSHW addr` (SendTo)
`>PUSHWI count`
`>PUSHB fd`
`>PUSHW buf`
`lda fd`
`>PUSHWI count`
`>PUSHW addr`
`>LIBCALL hLIBTCPIP,LIBTCPIP.sendto`
## RETURN VALUE
CC: Y,A = bytes written
CS: A = EC
# Send (RAW,DGRAM,SEQPKT)
## C
`int skt.send(hFD fd, const void *buf, int count);`
## ASM
**In:**
`>PUSHB fd`
`>PUSHW buf`
`>PUSHWI count`
`>LIBCALL hLIBTCPIP,LIBTCPIP.send`
## RETURN VALUE
@ -241,8 +265,8 @@ Set Socket Options
## ASM
**In:**
`>PUSHBI opts`
`lda fd`
`>PUSHB fd`
`>PUSHB opts`
`>LIBCALL hLIBTCPIP,LIBTCPIP.SetSockOpt`
## RETURN VALUE

Binary file not shown.

View File

@ -244,6 +244,7 @@ CS.RUN.LOOP ldy #S.PS.hStdIn
lda (pPS),y
>SYSCALL FEOF
bcs .99
tay
bne .13

View File

@ -341,8 +341,7 @@ MSG.DIFF .AZ "%H%h:%h %h\r\n"
.DUMMY
.OR 0
DS.START
DS.END
.ED
DS.END .ED
*--------------------------------------
MAN
SAVE usr/src/bin/cmp.s

View File

@ -55,7 +55,7 @@ CP.PRINT ldy #$ff
inc ZPCLBufPtr+1
.3 pla
clc
sec include \0
adc ZPDataPtr
sta ZPDataPtr
bcc .4

View File

@ -588,8 +588,7 @@ KW.NEGATIVE inc pStack
*--------------------------------------
KW.ZERO clc
ldy #1
lda (pStack),y
>PULLA
ora (pStack)
bne .9
@ -598,7 +597,6 @@ KW.ZERO clc
.9 lda #0
ror
inc pStack
sta (pStack)
* clc

View File

@ -1048,12 +1048,12 @@ CODE.RPDROP2.L .EQ *-CODE.RPDROP2
*--------------------------------------
CODE.TESTTRUE >PULLA
tax
.1 bpl .1+5
.1 bmi .1+5
CODE.TESTTRUE.L .EQ *-CODE.TESTTRUE
*--------------------------------------
CODE.TESTFALSE >PULLA
tax
.1 bmi .1+5
.1 bpl .1+5
CODE.TESTFALSE.L .EQ *-CODE.TESTFALSE
*--------------------------------------
CODE.PULLA >PULLA

View File

@ -240,15 +240,15 @@ CS.RUN.ARGSOK >PUSHW L.MSG.CONNECT
>PUSHBI 8
>SYSCALL PrintF
CS.RUN.OPENSKT >PUSHBI 0 no protocol
lda #S.SOCKET.T.SEQPKT
CS.RUN.OPENSKT >PUSHBI S.SOCKET.T.SEQPKT
>PUSHBI 0 no protocol
>LIBCALL hLIBTCPIP,LIBTCPIP.Socket
bcs .9
sta hSocket
>PUSHB hSocket
>PUSHW L.SA.LOCAL
lda hSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.Bind
bcc .1
@ -263,8 +263,8 @@ CS.RUN.OPENSKT >PUSHBI 0 no protocol
.2 >SLEEP
>PUSHB hSocket
>PUSHW L.SA.REMOTE
lda hSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.Connect
bcc .3
@ -463,10 +463,11 @@ CS.RUN.REQUEST jsr Init.TimeOut
>SYSCALL SPrintF
bcs .90
>PUSHYA Byte count
pha
>PUSHB hSocket
>PUSHW ZPSendBufPtr
lda hSocket
pla
>PUSHYA Byte count
>LIBCALL hLIBTCPIP,LIBTCPIP.Send
.90 php

View File

@ -1,6 +1,5 @@
NEW
AUTO 3,1
.LIST OFF
*--------------------------------------
DHCP.INIT lda IPCFG+S.NETCFG.STATUS
and #S.IPCFG.STATUS.OK
@ -34,27 +33,27 @@ DHCP.INIT lda IPCFG+S.NETCFG.STATUS
sec
rts
*--------------------------------------
DHCP.RUN >PUSHBI 0 no protocol
lda #S.SOCKET.T.DGRAM
DHCP.RUN >PUSHBI S.SOCKET.T.DGRAM
>PUSHBI 0 no protocol
>LIBCALL hLIBTCPIP,LIBTCPIP.Socket
bcc .1
.9 jmp DHCP.RUN.KO
.1 sta hSocket
pha
>PUSHA
>PUSHW L.SA.LOCAL
pla
>LIBCALL hLIBTCPIP,LIBTCPIP.Bind
bcs .9
>SLEEP
>PUSHWI S.SOCKET.O.BROADCAST
lda hSocket
>PUSHB hSocket
>PUSHBI S.SOCKET.O.BROADCAST
>LIBCALL hLIBTCPIP,LIBTCPIP.setsockopt
>PUSHB hSocket
>PUSHW L.SA.REMOTE
lda hSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.Connect
bcs .9
@ -63,13 +62,14 @@ DHCP.RUN >PUSHBI 0 no protocol
>SLEEP
DHCP.RUN.SDISC >PUSHW L.SA.DEST
>PUSHWI DHCP.DISC.LEN
DHCP.RUN.SDISC >PUSHB hSocket
>PUSHW L.DHCP.DISC
lda hSocket
>PUSHWI DHCP.DISC.LEN
>PUSHW L.SA.DEST
>LIBCALL hLIBTCPIP,LIBTCPIP.SendTo
bcc .1
jmp DHCP.RUN.KO
.1 lda #S.IPCFG.STATUS.SDISC
@ -97,10 +97,10 @@ DHCP.RUN.SREQ >PUSHW L.MSG.DHCP.CFG2
>PUSHBI 4
>SYSCALL PrintF
>PUSHW L.SA.DEST
>PUSHWI DHCP.REQ.LEN
>PUSHB hSocket
>PUSHW L.DHCP.REQ
lda hSocket
>PUSHWI DHCP.REQ.LEN
>PUSHW L.SA.DEST
>LIBCALL hLIBTCPIP,LIBTCPIP.SendTo
bcs DHCP.RUN.KO

View File

@ -1,6 +1,5 @@
NEW
AUTO 3,1
.LIST OFF
*--------------------------------------
ETC.ReadFiles >LDYAI 256
>SYSCALL GetMem

View File

@ -263,15 +263,15 @@ CS.RUN.CheckArgs
>SYSCALL PrintF
rts
*--------------------------------------
CS.RUN.Connect >PUSHBI 0 no protocol
lda #S.SOCKET.T.STREAM
CS.RUN.Connect >PUSHBI S.SOCKET.T.STREAM
>PUSHBI 0 no protocol
>LIBCALL hLIBTCPIP,LIBTCPIP.Socket
bcs .9
sta hSocket
>PUSHA
>PUSHW L.SA.LOCAL
lda hSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.Bind
bcs .9
@ -280,8 +280,8 @@ CS.RUN.Connect >PUSHBI 0 no protocol
.1 >SLEEP
>PUSHB hSocket
>PUSHW L.SA.REMOTE
lda hSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.Connect
bcc .8
@ -370,9 +370,9 @@ CS.RUN.GetMsg bit bPendingMsg
.10 ldy BufLen
bne .2
.1 >PUSHWI 255
.1 >PUSHB hSocket
>PUSHW ZPBufPtr
lda hSocket
>PUSHWI 255
>LIBCALL hLIBTCPIP,LIBTCPIP.Read
bcs .7
@ -700,9 +700,11 @@ CS.RUN.DUMPMSG >PUSHW L.SEQ.DUMPMSG
>SYSCALL PrintF
rts
*--------------------------------------
CS.RUN.SendMsg >PUSHYA
CS.RUN.SendMsg pha
>PUSHB hSocket
>PUSHW ZPRespPtr
lda hSocket
pla
>PUSHYA
>LIBCALL hLIBTCPIP,LIBTCPIP.Write
rts
*--------------------------------------

View File

@ -204,7 +204,7 @@ CheckArgs.A lda iArg
>SYSCALL AToL
>PUSHWI 0
>PUSHWI 3600
>FPU IMUL32
>FPU uMUL
>PULLL Adjust
clc
@ -264,20 +264,20 @@ OpenSocket >LIBCALL hLIBTCPIP,LIBTCPIP.GETCFG is TCPIP loaded ?
sec
rts
.3 >PUSHBI S.IP.PROTOCOL.UDP
lda #S.SOCKET.T.DGRAM
.3 >PUSHBI S.SOCKET.T.DGRAM
>PUSHBI S.IP.PROTOCOL.UDP
>LIBCALL hLIBTCPIP,LIBTCPIP.Socket
bcs .9
sta hSocket
>PUSHA
>PUSHW L.SA.LOCAL
lda hSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.Bind
bcs .9
>PUSHB hSocket
>PUSHW L.SA.REMOTE
lda hSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.Connect
bcc .8
@ -289,10 +289,9 @@ OpenSocket >LIBCALL hLIBTCPIP,LIBTCPIP.GETCFG is TCPIP loaded ?
sec
.8 rts
*--------------------------------------
SendNTPRequest >PUSHWI NTP.Request.End-NTP.Request
SendNTPRequest >PUSHB hSocket
>PUSHW L.NTP.Request
lda hSocket
>PUSHWI NTP.Request.End-NTP.Request
>LIBCALL hLIBTCPIP,LIBTCPIP.Send
bcs .9

View File

@ -191,20 +191,20 @@ CS.RUN.OPENSKT ldx #3
>STA.G SA.REMOTE+S.SOCKADDR.PORT+1
sta Identifier+1
>PUSHBI S.SOCKET.T.RAW
>PUSHBI S.IP.PROTOCOL.ICMP
lda #S.SOCKET.T.RAW
>LIBCALL hLIBTCPIP,LIBTCPIP.Socket
bcs .9
sta hSocket
>PUSHB hSocket
>PUSHEA.G SA.LOCAL
lda hSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.Bind
bcs .9
>PUSHB hSocket
>PUSHEA.G SA.REMOTE
lda hSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.Connect
bcc CS.RUN.SEND.ECHO
@ -236,10 +236,9 @@ CS.RUN.SEND.ECHO
dey
sta (pData),y
>PUSHWI ICMP.RequestLen
>PUSHB hSocket
>PUSHW pData
lda hSocket
>PUSHWI ICMP.RequestLen
>LIBCALL hLIBTCPIP,LIBTCPIP.Send
bcs CS.RUN.ERR

View File

@ -139,15 +139,15 @@ CS.RUN.PORTOK >PUSHW L.MSG.HOSTOK
>PUSHBI 8
>SYSCALL PrintF
CS.RUN.OPENSKT >PUSHBI 0 no protocol
lda #S.SOCKET.T.STREAM
CS.RUN.OPENSKT >PUSHBI S.SOCKET.T.STREAM
>PUSHBI 0 no protocol
>LIBCALL hLIBTCPIP,LIBTCPIP.Socket
bcs .9
sta hSocket
>PUSHA
>PUSHW L.SA.LOCAL
lda hSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.Bind
bcc .2
@ -163,8 +163,8 @@ CS.RUN.OPENSKT >PUSHBI 0 no protocol
.3 >SLEEP
>PUSHB hSocket
>PUSHW L.SA.REMOTE
lda hSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.Connect
bcc .4
@ -197,23 +197,20 @@ CS.RUN.LOOP >SLEEP
tay
bne .2 EOF, no char
>PUSHWI BUFSIZE
>PUSHB hSocket
>PUSHW ZPBufPtr
lda hSocket
>PUSHWI BUFSIZE
>LIBCALL hLIBTCPIP,LIBTCPIP.Read
.98 bcs .99
pha
phy
>STYA ZPBufLen
ldy #S.PS.hStdOut
lda (pPS),y
>PUSHA
>PUSHW ZPBufPtr
ply
pla
>PUSHYA len
>PUSHW ZPBufLen
>SYSCALL FWrite
bcs .11
@ -237,13 +234,14 @@ CS.RUN.LOOP >SLEEP
.99 bra CS.RUN.SKTERR
.3 >STYA ZPBufLen
lda (ZPBufPtr)
cmp #$14 Ctrl-T
beq CS.RUN.USER
>PUSHW ZPBufLen
>PUSHB hSocket
>PUSHW ZPBufPtr
lda hSocket
>PUSHW ZPBufLen
>LIBCALL hLIBTCPIP,LIBTCPIP.Write
.9 bcs CS.RUN.SKTERR

View File

@ -15,6 +15,7 @@ BUFSIZE .EQ 256
.OR ZPBIN
ZS.START
ZPBufPtr .BS 2
ZPDataLen .BS 2
hBuf .BS 1
hDev .BS 1
TimeOut .BS 1
@ -81,27 +82,19 @@ CS.RUN.LOOP >SLEEP
lda hDev
>SYSCALL FEOF
bcs CS.RUN.RTS
bcs .9
tay
bne .1 EOF, no char
>PUSHB hDev
>PUSHW ZPBufPtr
>PUSHWI BUFSIZE
>SYSCALL FRead
lda hDev
jsr CS.Read
bcs CS.RUN.RTS
pha
phy
>STYA ZPDataLen
ldy #S.PS.hStdOut
lda (pPS),y
>PUSHA
>PUSHW ZPBufPtr
ply
pla
>PUSHYA len
>SYSCALL FWrite
jsr CS.Write
bcs .9
.1 ldy #S.PS.hStdIn
@ -114,33 +107,33 @@ CS.RUN.LOOP >SLEEP
ldy #S.PS.hStdIn
lda (pPS),y
>PUSHA
jsr CS.Read
bcs .9
>STYA ZPDataLen
lda (ZPBufPtr)
eor #$14 Ctrl-T
clc
beq .9 exit with A=0,CC
lda hDev
jsr CS.Write
bcc CS.RUN.LOOP
.9 rts
*--------------------------------------
CS.Read >PUSHA
>PUSHW ZPBufPtr
>PUSHWI BUFSIZE
>SYSCALL FRead
bcs .9
tax
lda (ZPBufPtr)
eor #$14 Ctrl-T
beq .8
txa
pha
phy
>PUSHB hDev
rts
*--------------------------------------
CS.Write >PUSHA
>PUSHW ZPBufPtr
ply
pla
>PUSHYA len
>PUSHW ZPDataLen
>SYSCALL FWrite
bcs .9
jmp CS.RUN.LOOP
.8 sec
.9 rts
rts
*--------------------------------------
CS.DOEVENT lda (pEvent)
bpl .9 is it a TIMER event?
@ -172,8 +165,7 @@ MSG.DEVOK .AZ "Connected (Exit key is Ctrl-T)"
.DUMMY
.OR 0
DS.START
DS.END
.ED
DS.END .ED
*--------------------------------------
MAN
SAVE usr/src/bin/term.s

View File

@ -96,9 +96,11 @@ CS.RUN inc ArgIndex
.4 >LDA.G hSrcBasePath
bne .9
>LDYA ZPPtr1
jsr InitSrcDirYA
bcc CS.RUN
.99 rts
*--------------------------------------
.5 lda bChar
@ -129,6 +131,7 @@ CS.RUN inc ArgIndex
.6 >LDYAI 256
>SYSCALL GetMem
bcs .99
>STYA ZPFullPath
stx hSrcFullPath
@ -153,6 +156,7 @@ CS.RUN inc ArgIndex
>LDYAI 256
>SYSCALL GetMem
bcs .99
>STYA ZPLineBuf
stx hMem
*--------------------------------------
@ -160,12 +164,16 @@ CS.RUN.LOOP ldy #S.PS.hStdIn
lda (pPS),y
>SYSCALL FEOF
bcs .99
tay
bne .10
>SYSCALL GetChar
bcs .99
cmp #$03 Ctrl-C
beq .99 Abort....
cmp #$13 Ctrl-S
bne .10
@ -173,16 +181,20 @@ CS.RUN.LOOP ldy #S.PS.hStdIn
eor #$ff
sta bPause
bne CS.RUN.LOOP
.10 lda bPause
bne CS.RUN.LOOP Pause...
jsr GetEntry
bcs .9
ldy #S.STAT.P.DRIVE
lda (ZPFileStat),y ProDOS Device ?
beq .5
jsr CS.RUN.DEV
bcc CS.RUN.LOOP
rts
.5 ldy #S.STAT.MODE+1
@ -193,9 +205,12 @@ CS.RUN.LOOP ldy #S.PS.hStdIn
jsr CS.RUN.DIR
bcs .99
bra .8
.6 jsr CS.RUN.FILE
bcs .99
bra .8
.9 jsr LeaveSubDir
@ -213,6 +228,7 @@ CS.RUN.LOOP ldy #S.PS.hStdIn
CS.RUN.PIPE >LDYAI 256
>SYSCALL GetMem
bcs .99
>STYA ZPLineBuf
stx hMem
@ -268,6 +284,7 @@ CS.RUN.FILE jsr FilterMatch
jsr CS.RUN.AddFstat2Tstat
lda bTotal
bmi .8
beq .61
lda #$fe
@ -283,6 +300,7 @@ CS.RUN.FILE jsr FilterMatch
pla
sec
.9 jmp CS.RUN.CheckErr
.99 rts
*--------------------------------------
CS.RUN.FILE.LOOP
@ -308,6 +326,7 @@ CS.RUN.FILE.LOOP
.21 cmp #C.SPACE
beq .3
cmp #C.TAB
bne .4
@ -325,6 +344,7 @@ CS.RUN.FILE.LOOP
.8 cmp #MLI.E.EOF
bne .9
clc
rts
@ -332,6 +352,7 @@ CS.RUN.FILE.LOOP
rts
*--------------------------------------
CS.RUN.CheckErr bcc .9
pha
>PUSHW L.MSG.ERR
>PUSHA
@ -341,6 +362,7 @@ CS.RUN.CheckErr bcc .9
eor #$80
asl
pla
.9 rts
*--------------------------------------
CS.RUN.GetFilePath
@ -413,17 +435,17 @@ CS.RUN.IncF lda (pData),y
CS.RUN.AddFstat2Tstat
>PUSHL.G fWordCount
>PUSHL.G tWordCount
>FPU ADD32
>FPU uADD
>PULLL.G tWordCount
>PUSHL.G fLineCount
>PUSHL.G tLineCount
>FPU ADD32
>FPU uADD
>PULLL.G tLineCount
>PUSHL.G fCharCount
>PUSHL.G tCharCount
>FPU ADD32
>FPU uADD
>PULLL.G tCharCount
rts
*--------------------------------------
@ -558,6 +580,7 @@ CS.RUN.CheckOpt ldy #1
.2 cmp OptionList,x
beq .3
dex
bpl .2

View File

@ -128,7 +128,7 @@ NEW
.EM
*--------------------------------------
* FPU Entry Point
*--------------------------------------
*-------------------------------------- uint16
FPU.wMUL .EQ 0
FPU.wDIV .EQ 2
FPU.wMOD .EQ 4
@ -152,7 +152,7 @@ FPU.wxOR .EQ 30
FPU.wLAND .EQ 32
FPU.wLOR .EQ 34
*--------------------------------------
*-------------------------------------- int16
FPU.iMUL .EQ 36
FPU.iDIV .EQ 38
FPU.iMOD .EQ 40
@ -176,7 +176,7 @@ FPU.iXOR .EQ 66
FPU.iLAND .EQ 68
FPU.iLOR .EQ 70
*--------------------------------------
*-------------------------------------- uint32
FPU.uMUL .EQ 72
FPU.uDIV .EQ 74
FPU.uMOD .EQ 76
@ -200,7 +200,7 @@ FPU.uXOR .EQ 102
FPU.uLAND .EQ 104
FPU.uLOR .EQ 106
*--------------------------------------
*-------------------------------------- int32
FPU.lMUL .EQ 108
FPU.lDIV .EQ 110
FPU.lMOD .EQ 112
@ -224,7 +224,7 @@ FPU.lXOR .EQ 138
FPU.lLAND .EQ 140
FPU.lLOR .EQ 142
*--------------------------------------
*-------------------------------------- float
FPU.fMUL .EQ 144
FPU.fDIV .EQ 146
FPU.fMOD .EQ 148

571
LIB/LIBCIFS.S.IO.txt Normal file
View File

@ -0,0 +1,571 @@
NEW
AUTO 3,1
*--------------------------------------
CIFS.ChTyp
CIFS2.ChTyp
*--------------------------------------
CIFS.ChMod
CIFS2.ChMod
*--------------------------------------
CIFS.FStat
*--------------------------------------
CIFS2.FStat lda #MLI.E.BADCALL
sec
rts
*--------------------------------------
CIFS.Stat >STYA pPath resolved path
jsr ClearSocket
jsr MakeTrans2Reg
ldx #0
.1 lda SMB.QueryPathInfo,x
sta (ZPReqPtr),y
iny
inx
cpx #SMB.QueryPathInfo.Len
bne .1
jsr AppendPath
lda #0
sta (ZPReqPtr),y
iny
jsr SetT2ReqLenYA
pha
>PUSHB MountTable+3 hSocket
>PUSHW ZPReqPtr
pla
>PUSHYA
ldx #LIBTCPIP.Send
jsr GO.LIBTCPIP
bcs .9
jmp Sleep
.9 >RET 4
*--------------------------------------
CIFS2.Stat jsr ReadSocket
bcs .9
jsr GetRespData
ldy #S.NETBIOS+S.SMB.H.STATUS
lda (ZPRespPtr),y
beq .1
lda #MLI.E.FNOTFND
bra .99
.1 >PULLW ZPPtr2 Stat Buffer
inc pStack Skip Filename
inc pStack
jsr GetRespDataOffset
jsr FileInfo2StatBuf
jsr StatBuf2Ptr2
lda hResp
>SYSCALL2 FreeMem
stz CIFS.Status
clc
rts
.9 cmp #E.NODATA
bne .9
dec CIFS.Retries
beq .90
lda #0
sec
rts
.90 lda #MLI.E.IO
.99 sec
stz CIFS.Status
>RET 4
*--------------------------------------
CIFS.MKDir >STYA pPath resolved path
jsr MakeTrans2Reg
ldx #0
.1 lda SMB.CreateDirectory,x
sta (ZPReqPtr),y
iny
inx
cpx #SMB.CreateDirectory.Len
bne .1
jsr AppendPath
lda #0
sta (ZPReqPtr),y
iny
jsr SetT2ReqLenYA
pha
>PUSHB MountTable+3 hSocket
>PUSHW ZPReqPtr
pla
>PUSHYA
ldx #LIBTCPIP.Send
jsr GO.LIBTCPIP
bcs .9
jmp Sleep
.9 >RET 4
*--------------------------------------
CIFS2.MKDir jsr ReadSocket
bcs .9
jsr GetRespData
ldy #S.NETBIOS+S.SMB.H.STATUS
lda (ZPRespPtr),y
clc
beq .8
lda #MLI.E.DUPFILE
sec
.8 jsr FreeRespData
stz CIFS.Status
>RET 4
.9 cmp #E.NODATA
bne .99
dec CIFS.Retries
beq .98
lda #0
sec
rts
.98 lda #MLI.E.IO
.99 sec
stz CIFS.Status
>RET 4
*--------------------------------------
CIFS.OpenDir >STYA pPath resolved path
>LDYAI S.FD.DIR
>SYSCALL2 GetMem
bcs .9
>STYA ZPPtr2
lda #S.FD.T.DIR
sta (ZPPtr2)
lda hHandler
ldy #S.FD.PFT
sta (ZPPtr2),y
lda #0
ldy #S.FD.DIR.EPB
sta (ZPPtr2),y EOF Flag
iny
sta (ZPPtr2),y
iny
sta (ZPPtr2),y
>PUSHW pPath
>PUSHWI 0
txa
>PUSHA
>SYSCALL2 mknod
.9 rts
*--------------------------------------
CIFS2.OpenDir lda #MLI.E.BADCALL
sec
rts
*--------------------------------------
CIFS.ReadDir jsr GetPFD
jsr ClearSocket
ldy #S.FD.DIR.EPB
lda (pFD),y
beq .1
lda #MLI.E.EOF
sec
rts
.1 iny
lda (pFD),y
iny
ora (pFD),y
bne CIFS.ReadDir.Next
jsr MakeTrans2Reg
ldx #0
.2 lda SMB.FindFirst2,x
sta (ZPReqPtr),y
iny
inx
cpx #SMB.FindFirst2.Len
bne .2
bra CIFS.ReadDir.Send
CIFS.ReadDir.Next
jsr MakeTrans2Reg
ldx #0
.2 lda SMB.FindNext2,x
sta (ZPReqPtr),y
iny
inx
cpx #SMB.FindNext2.Len
bne .2
phy
ldy #S.FD.DIR.FC+1
lda (pFD),y
tax
dey
lda (pFD),y
ldy #S.NETBIOS+S.SMB.H+SMB.Trans2.H.Len+7 Search ID
sta (ZPReqPtr),y
txa
iny
sta (ZPReqPtr),y
ply
CIFS.ReadDir.Send
lda (pPath)
beq .1
jsr AppendPath
lda #'\'
sta (ZPReqPtr),y
iny
.1 lda #'*'
sta (ZPReqPtr),y
iny
lda #0
sta (ZPReqPtr),y
iny
jsr SetT2ReqLenYA
pha
>PUSHB MountTable+3 hSocket
>PUSHW ZPReqPtr
pla
>PUSHYA
ldx #LIBTCPIP.Send
jsr GO.LIBTCPIP
bcs .9
jmp Sleep
.9 rts
*--------------------------------------
CIFS2.ReadDir jsr GetPFD
jsr ReadSocket
bcs .90
jsr GetRespData
ldy #S.NETBIOS+S.SMB.H.STATUS
lda (ZPRespPtr),y
beq .1
.91 sec
lda #MLI.E.IO
bra .9
.1 ldy #S.FD.DIR.FC
lda (pFD),y
iny
ora (pFD),y
sta bFlag
bne .2
ldy #S.NETBIOS+S.SMB.H+S.TRANS2.H+1 Search ID
lda (ZPRespPtr),y
tax
dey
ora (ZPRespPtr),y
beq .91
lda (ZPRespPtr),y
ldy #S.FD.DIR.FC
sta (pFD),y
iny
txa
sta (pFD),y
.2 jsr GetRespDataOffset
jsr CIFS2.ReadDir.GetBuf
bcs .9
jsr GetRespDataOffset
jsr CIFS2.ReadDir.FillBuf
lda hResp
>SYSCALL2 FreeMem
>LDYA BufPtr
ldx hBuf
stz CIFS.Status
clc
rts
.9 stz CIFS.Status
jmp FreeRespData
.90 cmp #E.NODATA
bne .99
dec CIFS.Retries
beq .98
lda #0
sec
rts
.98 lda #MLI.E.IO
.99 stz CIFS.Status
sec
rts
*--------------------------------------
CIFS2.ReadDir.GetBuf
ldy #S.NETBIOS+S.SMB.H+S.TRANS2.H Search Count
lda bFlag
bne .10
iny
iny
.10 iny
iny
lda (ZPRespPtr),y End Of Search
phy
ldy #S.FD.DIR.EPB
sta (pFD),y
ply
dey
dey
lda (ZPRespPtr),y Search Count
beq .99
tax
lda #1 +Ending 0
sta ZPPtr2
stz ZPPtr2+1
.1 lda ZPPtr2
clc
adc #S.STAT
sta ZPPtr2
bcc .2
inc ZPPtr2+1
.2 lda ZPPtr1
clc
adc #22
sta ZPPtr1
bcc .3
inc ZPPtr1+1
.3 lda (ZPPtr1) Filename Len
pha
sec
adc ZPPtr2
sta ZPPtr2
bcc .4
inc ZPPtr2+1
.4 pla
inc
sec
adc ZPPtr1
sta ZPPtr1
bcc .5
inc ZPPtr1+1
.5 dex
bne .1
>LDYA ZPPtr2
>SYSCALL2 GetMem
bcs .9
>STYA BufPtr
>STYA ZPPtr2
stx hBuf
.9 rts
.99 lda #MLI.E.EOF
sec
rts
*--------------------------------------
CIFS2.ReadDir.FillBuf
ldy #S.NETBIOS+S.SMB.H+S.TRANS2.H Search Count
lda bFlag
bne .10
iny
iny
.10 lda (ZPRespPtr),y
tax
.1 jsr FileInfo2StatBuf
lda ZPPtr1
sec skip Filename Len
adc #22
sta ZPPtr1
bcc .2
inc ZPPtr1+1
.2 ldy #$ff
.3 iny
lda (ZPPtr1),y
sta (ZPPtr2),y
bne .3
tya
sec
adc ZPPtr1
sta ZPPtr1
bcc .4
inc ZPPtr1+1
.4 tya
sec
adc ZPPtr2
sta ZPPtr2
bcc .5
inc ZPPtr2+1
.5 jsr StatBuf2Ptr2
lda #S.STAT
clc
adc ZPPtr2
sta ZPPtr2
bcc .7
inc ZPPtr2+1
.7 dex
bne .1
lda #0
sta (ZPPtr2)
rts
*--------------------------------------
CIFS.CloseDir tax
lda Nod.Table.hName-2,x
beq .1
phx
stz Nod.Table.hName-2,x
>SYSCALL2 FreeMem
plx
.1 lda Nod.Table.hFD-2,x
stz Nod.Table.hFD-2,x
>SYSCALL2 FreeMem
stz CIFS.Status
clc
rts
*--------------------------------------
CIFS2.CloseDir lda #MLI.E.INVPATH
sec
rts
*--------------------------------------
CIFS.ChOwn
CIFS2.ChOwn
lda #MLI.E.BADCALL
sec
rts
*--------------------------------------
CIFS.FOpen
CIFS2.FOpen
lda #MLI.E.BADCALL
sec
rts
*--------------------------------------
CIFS.FClose
CIFS2.FClose
CIFS.FRead
CIFS2.FRead
CIFS.FWrite
CIFS2.FWrite
CIFS.FFlush
CIFS2.FFlush
CIFS.FSeek
CIFS2.FSeek
CIFS.FTell
CIFS2.FTell
CIFS.FEOF
CIFS2.FEOF
CIFS.Remove
CIFS2.Remove
CIFS.Rename
CIFS2.Rename
lda #MLI.E.BADCALL
sec
rts
*--------------------------------------
MAN
SAVE usr/src/lib/libcifs.io.s
LOAD usr/src/lib/libcifs.s
ASM

View File

@ -62,33 +62,79 @@ J.CIFS .DA CIFS.ChTyp
.DA CIFS.FStat
.DA CIFS.Stat
.DA CIFS.MKDir
.DA CIFS.MKNod
.DA CIFS.MKFIFO
.DA CIFS.Pipe
.DA CIFS.BADCALL MKNod
.DA CIFS.BADCALL MKFIFO
.DA CIFS.BADCALL Pipe
.DA CIFS.OpenDir
.DA CIFS.ReadDir
.DA CIFS.CloseDir
.DA CIFS.Open
.DA CIFS.Close
.DA CIFS.Read
.DA CIFS.Write
.DA CIFS.BADCALL Open
.DA CIFS.BADCALL Close
.DA CIFS.BADCALL Read
.DA CIFS.BADCALL Write
.DA CIFS.ChOwn
.DA CIFS.BADCALL
.DA CIFS.BADCALL
.DA CIFS.BADCALL
.DA CIFS.BADCALL
.DA CIFS.BADCALL
.DA CIFS.BADCALL
.DA CIFS.BADCALL
.DA CIFS.BADCALL
.DA CIFS.FOpen
.DA CIFS.FClose
.DA CIFS.FRead
.DA CIFS.FWrite
.DA CIFS.FFlush
.DA CIFS.FSeek
.DA CIFS.FTell
.DA CIFS.FEOF
.DA CIFS.Remove
.DA CIFS.Rename
*--------------------------------------
J.CIFS2 .DA CIFS2.ChTyp
.DA CIFS2.ChMod
.DA CIFS2.FStat
.DA CIFS2.Stat
.DA CIFS2.MKDir
.DA CIFS2.MKNod
.DA CIFS2.MKFIFO
.DA CIFS2.Pipe
.DA CIFS.BADCALL MKNod
.DA CIFS.BADCALL MKFIFO
.DA CIFS.BADCALL Pipe
.DA CIFS2.OpenDir
.DA CIFS2.ReadDir
.DA CIFS2.CloseDir
.DA CIFS2.Open
.DA CIFS2.Close
.DA CIFS2.Read
.DA CIFS2.Write
.DA CIFS.BADCALL Open
.DA CIFS.BADCALL Close
.DA CIFS.BADCALL Read
.DA CIFS.BADCALL Write
.DA CIFS2.ChOwn
.DA CIFS.BADCALL FPutC...
.DA CIFS.BADCALL
.DA CIFS.BADCALL
.DA CIFS.BADCALL
.DA CIFS.BADCALL
.DA CIFS.BADCALL
.DA CIFS.BADCALL
.DA CIFS.BADCALL ...UngetC
.DA CIFS2.FOpen
.DA CIFS2.FClose
.DA CIFS2.FRead
.DA CIFS2.FWrite
.DA CIFS2.FFlush
.DA CIFS2.FSeek
.DA CIFS2.FTell
.DA CIFS2.FEOF
.DA CIFS2.Remove
.DA CIFS2.Rename
*--------------------------------------
L.LIBTCPIP .DA LIBTCPIP
L.NETBIOS .DA NETBIOS
.DA 0
@ -134,10 +180,11 @@ CIFS.Negotiate lda (pStack)
dec
sta (pStack)
>PUSHWI SMB.NegReq.end-NETBIOS
>PUSHW L.NETBIOS
ldy #1+4 hSocket
ldy #1 hSocket
lda (pStack),y
>PUSHA
>PUSHW L.NETBIOS
>PUSHWI SMB.NegReq.end-NETBIOS
ldx #LIBTCPIP.Send
jsr GO.LIBTCPIP
@ -266,10 +313,17 @@ CIFS.SessionSetup
jsr SetReqLenYAtA
>PUSHYA
>PUSHW ZPReqPtr
ldy #6+4 hSocket
phy
pha
ldy #6 hSocket
lda (pStack),y
>PUSHA
>PUSHW ZPReqPtr
pla
ply
>PUSHYA
ldx #LIBTCPIP.Send
jsr GO.LIBTCPIP
@ -391,10 +445,17 @@ CIFS.TreeConnect
jsr SetReqLenYAtA
>PUSHYA
>PUSHW ZPReqPtr
ldy #4+4 hSocket
phy
pha
ldy #4 hSocket
lda (pStack),y
>PUSHA
>PUSHW ZPReqPtr
pla
ply
>PUSHYA
ldx #LIBTCPIP.Send
jsr GO.LIBTCPIP
@ -504,556 +565,7 @@ CIFS.CallBack bit CIFS.Status
ply
jmp (J.CIFS2,x)
*--------------------------------------
CIFS.ChTyp
CIFS2.ChTyp
*--------------------------------------
CIFS.ChMod
CIFS2.ChMod
*--------------------------------------
CIFS.FStat
*--------------------------------------
CIFS2.FStat lda #MLI.E.BADCALL
sec
rts
*--------------------------------------
CIFS.Stat >STYA pPath resolved path
jsr ClearSocket
jsr MakeTrans2Reg
ldx #0
.1 lda SMB.QueryPathInfo,x
sta (ZPReqPtr),y
iny
inx
cpx #SMB.QueryPathInfo.Len
bne .1
jsr AppendPath
lda #0
sta (ZPReqPtr),y
iny
jsr SetT2ReqLenYA
>PUSHYA
>PUSHW ZPReqPtr
lda MountTable+3 hSocket
ldx #LIBTCPIP.Send
jsr GO.LIBTCPIP
bcs .9
jmp Sleep
.9 >RET 4
*--------------------------------------
CIFS2.Stat jsr ReadSocket
bcs .9
jsr GetRespData
ldy #S.NETBIOS+S.SMB.H.STATUS
lda (ZPRespPtr),y
beq .1
lda #MLI.E.FNOTFND
bra .99
.1 >PULLW ZPPtr2 Stat Buffer
inc pStack Skip Filename
inc pStack
jsr GetRespDataOffset
jsr FileInfo2StatBuf
jsr StatBuf2Ptr2
lda hResp
>SYSCALL2 FreeMem
stz CIFS.Status
clc
rts
.9 cmp #E.NODATA
bne .9
dec CIFS.Retries
beq .90
lda #0
sec
rts
.90 lda #MLI.E.IO
.99 sec
stz CIFS.Status
>RET 4
*--------------------------------------
CIFS.MKDir >STYA pPath resolved path
jsr MakeTrans2Reg
ldx #0
.1 lda SMB.CreateDirectory,x
sta (ZPReqPtr),y
iny
inx
cpx #SMB.CreateDirectory.Len
bne .1
jsr AppendPath
lda #0
sta (ZPReqPtr),y
iny
jsr SetT2ReqLenYA
>PUSHYA
>PUSHW ZPReqPtr
lda MountTable+3 hSocket
ldx #LIBTCPIP.Send
jsr GO.LIBTCPIP
bcs .9
jmp Sleep
.9 >RET 4
*--------------------------------------
CIFS2.MKDir jsr ReadSocket
bcs .9
jsr GetRespData
ldy #S.NETBIOS+S.SMB.H.STATUS
lda (ZPRespPtr),y
clc
beq .8
lda #MLI.E.DUPFILE
sec
.8 jsr FreeRespData
stz CIFS.Status
>RET 4
.9 cmp #E.NODATA
bne .99
dec CIFS.Retries
beq .98
lda #0
sec
rts
.98 lda #MLI.E.IO
.99 sec
stz CIFS.Status
>RET 4
*--------------------------------------
CIFS.MKNod
CIFS2.MKNod
*--------------------------------------
CIFS.MKFIFO
CIFS2.MKFIFO
*--------------------------------------
CIFS.Pipe
CIFS2.Pipe lda #MLI.E.BADCALL
sec
rts
*--------------------------------------
CIFS.OpenDir >STYA pPath resolved path
>LDYAI S.FD.DIR
>SYSCALL2 GetMem
bcs .9
>STYA ZPPtr2
lda #S.FD.T.DIR
sta (ZPPtr2)
lda hHandler
ldy #S.FD.HANDLER
sta (ZPPtr2),y
lda #0
ldy #S.FD.DIR.EPB
sta (ZPPtr2),y EOF Flag
iny
sta (ZPPtr2),y
iny
sta (ZPPtr2),y
>PUSHW pPath
>PUSHWI 0
txa
>PUSHA
>SYSCALL2 mknod
.9 rts
*--------------------------------------
CIFS2.OpenDir lda #MLI.E.BADCALL
sec
rts
*--------------------------------------
CIFS.ReadDir jsr GetPFD
jsr ClearSocket
ldy #S.FD.DIR.EPB
lda (pFD),y
beq .1
lda #MLI.E.EOF
sec
rts
.1 iny
lda (pFD),y
iny
ora (pFD),y
bne CIFS.ReadDir.Next
jsr MakeTrans2Reg
ldx #0
.2 lda SMB.FindFirst2,x
sta (ZPReqPtr),y
iny
inx
cpx #SMB.FindFirst2.Len
bne .2
bra CIFS.ReadDir.Send
CIFS.ReadDir.Next
jsr MakeTrans2Reg
ldx #0
.2 lda SMB.FindNext2,x
sta (ZPReqPtr),y
iny
inx
cpx #SMB.FindNext2.Len
bne .2
phy
ldy #S.FD.DIR.FC+1
lda (pFD),y
tax
dey
lda (pFD),y
ldy #S.NETBIOS+S.SMB.H+SMB.Trans2.H.Len+7 Search ID
sta (ZPReqPtr),y
txa
iny
sta (ZPReqPtr),y
ply
CIFS.ReadDir.Send
lda (pPath)
beq .1
jsr AppendPath
lda #'\'
sta (ZPReqPtr),y
iny
.1 lda #'*'
sta (ZPReqPtr),y
iny
lda #0
sta (ZPReqPtr),y
iny
jsr SetT2ReqLenYA
>PUSHYA
>PUSHW ZPReqPtr
lda MountTable+3 hSocket
ldx #LIBTCPIP.Send
jsr GO.LIBTCPIP
bcs .9
jmp Sleep
.9 rts
*--------------------------------------
CIFS2.ReadDir jsr GetPFD
jsr ReadSocket
bcs .90
jsr GetRespData
ldy #S.NETBIOS+S.SMB.H.STATUS
lda (ZPRespPtr),y
beq .1
.91 sec
lda #MLI.E.IO
bra .9
.1 ldy #S.FD.DIR.FC
lda (pFD),y
iny
ora (pFD),y
sta bFlag
bne .2
ldy #S.NETBIOS+S.SMB.H+S.TRANS2.H+1 Search ID
lda (ZPRespPtr),y
tax
dey
ora (ZPRespPtr),y
beq .91
lda (ZPRespPtr),y
ldy #S.FD.DIR.FC
sta (pFD),y
iny
txa
sta (pFD),y
.2 jsr GetRespDataOffset
jsr CIFS2.ReadDir.GetBuf
bcs .9
jsr GetRespDataOffset
jsr CIFS2.ReadDir.FillBuf
lda hResp
>SYSCALL2 FreeMem
>LDYA BufPtr
ldx hBuf
stz CIFS.Status
clc
rts
.9 stz CIFS.Status
jmp FreeRespData
.90 cmp #E.NODATA
bne .99
dec CIFS.Retries
beq .98
lda #0
sec
rts
.98 lda #MLI.E.IO
.99 stz CIFS.Status
sec
rts
*--------------------------------------
CIFS2.ReadDir.GetBuf
ldy #S.NETBIOS+S.SMB.H+S.TRANS2.H Search Count
lda bFlag
bne .10
iny
iny
.10 iny
iny
lda (ZPRespPtr),y End Of Search
phy
ldy #S.FD.DIR.EPB
sta (pFD),y
ply
dey
dey
lda (ZPRespPtr),y Search Count
beq .99
tax
lda #1 +Ending 0
sta ZPPtr2
stz ZPPtr2+1
.1 lda ZPPtr2
clc
adc #S.STAT
sta ZPPtr2
bcc .2
inc ZPPtr2+1
.2 lda ZPPtr1
clc
adc #22
sta ZPPtr1
bcc .3
inc ZPPtr1+1
.3 lda (ZPPtr1) Filename Len
pha
sec
adc ZPPtr2
sta ZPPtr2
bcc .4
inc ZPPtr2+1
.4 pla
inc
sec
adc ZPPtr1
sta ZPPtr1
bcc .5
inc ZPPtr1+1
.5 dex
bne .1
>LDYA ZPPtr2
>SYSCALL2 GetMem
bcs .9
>STYA BufPtr
>STYA ZPPtr2
stx hBuf
.9 rts
.99 lda #MLI.E.EOF
sec
rts
*--------------------------------------
CIFS2.ReadDir.FillBuf
ldy #S.NETBIOS+S.SMB.H+S.TRANS2.H Search Count
lda bFlag
bne .10
iny
iny
.10 lda (ZPRespPtr),y
tax
.1 jsr FileInfo2StatBuf
lda ZPPtr1
sec skip Filename Len
adc #22
sta ZPPtr1
bcc .2
inc ZPPtr1+1
.2 ldy #$ff
.3 iny
lda (ZPPtr1),y
sta (ZPPtr2),y
bne .3
tya
sec
adc ZPPtr1
sta ZPPtr1
bcc .4
inc ZPPtr1+1
.4 tya
sec
adc ZPPtr2
sta ZPPtr2
bcc .5
inc ZPPtr2+1
.5 jsr StatBuf2Ptr2
lda #S.STAT
clc
adc ZPPtr2
sta ZPPtr2
bcc .7
inc ZPPtr2+1
.7 dex
bne .1
lda #0
sta (ZPPtr2)
rts
*--------------------------------------
CIFS.CloseDir tax
lda Nod.Table.hName-2,x
beq .1
phx
stz Nod.Table.hName-2,x
>SYSCALL2 FreeMem
plx
.1 lda Nod.Table.hFD-2,x
stz Nod.Table.hFD-2,x
>SYSCALL2 FreeMem
stz CIFS.Status
clc
rts
*--------------------------------------
CIFS2.CloseDir lda #MLI.E.INVPATH
sec
rts
*--------------------------------------
CIFS.Open
CIFS2.Open
*--------------------------------------
CIFS.Close
CIFS2.Close
lda #MLI.E.INVPATH
sec
rts
*--------------------------------------
CIFS.Read
CIFS2.Read
*--------------------------------------
CIFS.Write
CIFS2.Write
*--------------------------------------
CIFS.ChOwn
CIFS2.ChOwn
lda #MLI.E.BADCALL
sec
rts
.INB usr/src/lib/libcifs.io.s
*--------------------------------------
GetPFD tax
phx
@ -1381,6 +893,10 @@ ReadSocket lda MountTable+3 hSocket
ldx #LIBTCPIP.Recv
GO.LIBTCPIP jmp (pLIBTCPIP)
*--------------------------------------
CIFS.BADCALL lda #MLI.E.BADCALL
sec
rts
*--------------------------------------
CS.END
*--------------------------------------
NETBIOS .DA #0 DIRECT TCP TRANSPORT

View File

@ -1,6 +1,5 @@
NEW
AUTO 3,1
.LIST OFF
*/--------------------------------------
* # AARP.Clear
* Clear AARP Cache
@ -328,6 +327,6 @@ AARP.Send >STYA IOCTL+S.IOCTL.BUFPTR
jmp FRM.Send.IOCTL
*--------------------------------------
MAN
SAVE USR/SRC/LIB/LIBETALK.S.AARP
LOAD USR/SRC/LIB/LIBETALK.S
SAVE usr/src/lib/libetalk.s.aarp
LOAD usr/src/lib/libetalk.s
ASM

View File

@ -1,6 +1,5 @@
NEW
AUTO 3,1
.LIST OFF
*--------------------------------------
CFG.SET >PULLW ZPTmpPtr1 ETKCFG
@ -29,6 +28,6 @@ CFG.GET >LDYA L.ETKCFG
rts
*--------------------------------------
MAN
SAVE USR/SRC/LIB/LIBETALK.S.CFG
LOAD USR/SRC/LIB/LIBETALK.S
SAVE usr/src/lib/libetalk.s.cfg
LOAD usr/src/lib/libetalk.s
ASM

View File

@ -1,11 +1,10 @@
NEW
AUTO 3,1
.LIST OFF
*--------------------------------------
DDP.IN clc
rts
*--------------------------------------
MAN
SAVE USR/SRC/LIB/LIBETALK.S.DDP
LOAD USR/SRC/LIB/LIBETALK.S
SAVE usr/src/lib/libetalk.s.ddp
LOAD usr/src/lib/libetalk.s
ASM

View File

@ -1,10 +1,9 @@
NEW
AUTO 3,1
.LIST OFF
*--------------------------------------
*--------------------------------------
MAN
SAVE USR/SRC/LIB/LIBETALK.S.ELAP
LOAD USR/SRC/LIB/LIBETALK.S
SAVE usr/src/lib/libetalk.s.elap
LOAD usr/src/lib/libetalk.s
ASM

View File

@ -1,7 +1,7 @@
NEW
AUTO 3,1
.LIST OFF
*--------------------------------------
*--------------------------------------
FRM.Send ldx #3
@ -17,6 +17,6 @@ FRM.Send.IOCTL >PUSHB ETKCFG+S.NETCFG.DevID
rts
*--------------------------------------
MAN
SAVE USR/SRC/LIB/LIBETALK.S.FRM
LOAD USR/SRC/LIB/LIBETALK.S
SAVE usr/src/lib/libetalk.s.frm
LOAD usr/src/lib/libetalk.s
ASM

View File

@ -1,10 +1,9 @@
NEW
AUTO 3,1
.LIST OFF
*--------------------------------------
*--------------------------------------
MAN
SAVE USR/SRC/LIB/LIBETALK.S.RTMP
LOAD USR/SRC/LIB/LIBETALK.S
SAVE usr/src/lib/libetalk.s.rtmp
LOAD usr/src/lib/libetalk.s
ASM

View File

@ -5,12 +5,12 @@ NEW
.OR $2000
.TF lib/libetalk
*--------------------------------------
.INB INC/MACROS.I
.INB INC/A2OSX.I
.INB INC/NIC.I
.INB INC/ETH.I
.INB INC/LIB.NET.I
.INB INC/LIBETALK.I
.INB inc/macros.i
.INB inc/a2osx.i
.INB inc/nic.i
.INB inc/eth.i
.INB inc/lib.net.i
.INB inc/libetalk.i
*--------------------------------------
ZPFrameInPtr .EQ ZPLIB
ZPFrameInLen .EQ ZPLIB+2
@ -117,12 +117,12 @@ PULSE and #S.EVT.F.T1SEC
.9 rts
*--------------------------------------
.INB USR/SRC/LIB/LIBETALK.S.AARP
.INB USR/SRC/LIB/LIBETALK.S.CFG
.INB USR/SRC/LIB/LIBETALK.S.DDP
.INB USR/SRC/LIB/LIBETALK.S.ELAP
.INB USR/SRC/LIB/LIBETALK.S.FRM
.INB USR/SRC/LIB/LIBETALK.S.RTMP
.INB usr/src/lib/libetalk.s.aarp
.INB usr/src/lib/libetalk.s.cfg
.INB usr/src/lib/libetalk.s.ddp
.INB usr/src/lib/libetalk.s.elap
.INB usr/src/lib/libetalk.s.frm
.INB usr/src/lib/libetalk.s.rtmp
*--------------------------------------
CS.END
*--------------------------------------
@ -169,5 +169,5 @@ TmpDWord .BS 4
TmpOffset .BS 2
*--------------------------------------
MAN
SAVE USR/SRC/LIB/LIBETALK.S
SAVE usr/src/lib/libetalk.s
ASM

View File

@ -1,6 +1,5 @@
NEW
AUTO 3,1
.LIST OFF
*/--------------------------------------
* # ARP.Clear
* Clear ARP Cache

View File

@ -1,6 +1,5 @@
NEW
AUTO 3,1
.LIST OFF
*--------------------------------------
CFG.SET >PULLW ZPTmpPtr1 IPCFG
@ -61,8 +60,8 @@ CFG.SET >PULLW ZPTmpPtr1 IPCFG
.5 stz SA.LOCAL+S.SOCKADDR.PORT
stz SA.LOCAL+S.SOCKADDR.PORT+1
>PUSHB hDNSSocket
>PUSHW L.SA.LOCAL
lda hDNSSocket
jmp SKT.Bind
.9 rts

View File

@ -1,6 +1,5 @@
NEW
AUTO 3,1
.LIST OFF
*/--------------------------------------
* # DNS.Clear
* Clear DNS Cache
@ -126,10 +125,10 @@ DNS.REQUEST.SEND
dey
bpl .2
.4 >PUSHW L.SA.REMOTE
>PUSHW DNS.MSG.LEN
.4 >PUSHB hDNSSocket
>PUSHW L.DNS.MSG
lda hDNSSocket
>PUSHW DNS.MSG.LEN
>PUSHW L.SA.REMOTE
jmp SKT.SendTo
.8 clc

View File

@ -1,6 +1,5 @@
NEW
AUTO 3,1
.LIST OFF
*--------------------------------------
FRM.GetTargetSKT.TCPUDP
ldy #S.TCPUDP.SRCPORT

View File

@ -1,6 +1,5 @@
NEW
AUTO 3,1
.LIST OFF
*--------------------------------------
HST.GetByName >PULLW ZPPtrDNS
>PULLW ZPPtrIP

View File

@ -1,6 +1,5 @@
NEW
AUTO 3,1
.LIST OFF
*--------------------------------------
ICMP.IN ldy #S.ICMP.TYPE
lda (ZPFrameInPtr),y

View File

@ -1,6 +1,5 @@
NEW
AUTO 3,1
.LIST OFF
*--------------------------------------
IP.IN ldy #S.IP.PROTOCOL
lda (ZPFrameInPtr),y

View File

@ -7,15 +7,18 @@ NEW
* `hFD socket(short int type, short int protocol);`
* ## ASM
* **In:**
* `>PUSHB type`
* `>PUSHB protocol`
* `lda type`
* `>LIBCALL hLIBTCPIP,LIBTCPIP.socket`
* ## RETURN VALUE
* CC: A = hSOCKET
* CS: A = EC
*\--------------------------------------
SKT.Socket tax
>PULLA get protocol (RAW)
SKT.Socket >PULLA get protocol (RAW)
pha
>PULLA
tax
pla
SKT.Socket.I jmp (J.SKT.Socket,x)
SKT.Socket.RAW ldy #S.SOCKET
@ -108,16 +111,15 @@ SKT.Socket.FindFree
* `int bind(hFD fd, const struct sockaddr *addr);`
* ## ASM
* **In:**
* `>PUSHB fd`
* `>PUSHW addr`
* `lda fd`
* `>LIBCALL hLIBTCPIP,LIBTCPIP.socket`
* ## RETURN VALUE
* CC: A = hSOCKET
* CS: A = EC
*\--------------------------------------
SKT.bind >SYSCALL2 GetMemPtr
>STYA ZPPtrSKT
jsr SKT.PullLocAddr
SKT.bind jsr SKT.PullLocAddr
jsr SKT.PullhFD
lda SKT.LOC.ADDR+S.SOCKADDR.PORT
ora SKT.LOC.ADDR+S.SOCKADDR.PORT+1
@ -168,17 +170,15 @@ SKT.bind >SYSCALL2 GetMemPtr
* `int connect(hFD fd, const struct sockaddr *addr);`
* ## ASM
* **In:**
* `>PUSHB fd`
* `>PUSHW addr`
* `lda fd`
* `>LIBCALL hLIBTCPIP,LIBTCPIP.socket`
* ## RETURN VALUE
* CC: A = hSOCKET
* CS: A = EC
*\--------------------------------------
SKT.connect >SYSCALL2 GetMemPtr
>STYA ZPPtrSKT
jsr SKT.PullRemAddr
SKT.connect jsr SKT.PullRemAddr
jsr SKT.PullhFD
ldy #S.SOCKET.T
lda (ZPPtrSKT),y
@ -238,8 +238,7 @@ SKT.connect.SEQPKT
* ## RETURN VALUE
* CS: A = EC
*\--------------------------------------
SKT.listen >SYSCALL2 GetMemPtr
>STYA ZPPtrSKT
SKT.listen jsr SKT.GetFD
ldy #S.SOCKET.T
lda (ZPPtrSKT),y
@ -275,8 +274,7 @@ SKT.listen.RTS rts
* ## RETURN VALUE
* A = hSocket
*\--------------------------------------
SKT.Accept >SYSCALL2 GetMemPtr
>STYA ZPPtrSKT
SKT.Accept jsr SKT.GetFD
ldy #S.SOCKET.O
lda (ZPPtrSKT),y
@ -321,8 +319,7 @@ SKT.GetFromQueue
* ## RETURN VALUE
*\--------------------------------------
SKT.shutdown pha
>SYSCALL2 GetMemPtr
>STYA ZPPtrSKT
jsr SKT.GetFD
ldy #S.SOCKET.O
lda (ZPPtrSKT),y
@ -397,9 +394,9 @@ SKT.shutdown.RTS
* `int skt.read(hFD fd, void *buf, int count);`
* ## ASM
* **In:**
* `>PUSHWI count`
* `>PUSHB fd`
* `>PUSHW buf`
* `lda fd`
* `>PUSHW count`
* `>LIBCALL hLIBTCPIP,LIBTCPIP.read`
* ## RETURN VALUE
* CC: Y,A = bytes read
@ -422,8 +419,8 @@ SKT.Read jsr SKT.PullhFDDataInPtrLen
stx ZPDataInLen less data than INUSED, Get only INUSED data
lda (ZPPtrSKT),y
sta ZPDataInLen+1
bra SKT.GetDataFromSktIn
.7 jsr SKT.CheckStream
bcs .99 I/O error
@ -599,9 +596,9 @@ SKT.AddDataToSktIn
* `int skt.write(hFD fd, const void *buf, int count);`
* ## ASM
* **In:**
* `>PUSHWI count`
* `>PUSHB fd`
* `>PUSHW buf`
* `lda fd`
* `>PUSHW count`
* `>LIBCALL hLIBTCPIP,LIBTCPIP.write`
* ## RETURN VALUE
* CC: Y,A = bytes written
@ -611,6 +608,7 @@ SKT.Write jsr SKT.PullhFDDataInPtrLen
jsr SKT.CheckStream
bcs .99
jsr SKT.GetTCB
ldx SKT.Cache+S.SOCKET.TCP.OUTFREE
@ -765,6 +763,7 @@ SKT.GetDataFromSktOut
.1 inx
bne .2
pla
inc
beq .8
@ -779,6 +778,7 @@ SKT.GetDataFromSktOut
sta (ZPDataOutPtr)
inc ZPDataOutPtr
bne .3
inc ZPDataOutPtr+1
.3 iny
@ -788,6 +788,7 @@ SKT.GetDataFromSktOut
lda SKT.Cache+S.SOCKET.TCP.OUTTAILSENT+1
cmp /K.TCP.WSIZE
bne .1
stz SKT.Cache+S.SOCKET.TCP.OUTTAILSENT+1
lda ZPTmpPtr1+1
@ -803,30 +804,37 @@ SKT.GetDataFromSktOut
clc
rts
*/--------------------------------------
* # Recv (RAW,DGRAM,SEQPKT)
* # RecvFrom (RAW,DGRAM,SEQPKT)
* ## C
* `hMem recv(hFD fd);`
* `hMem recvfrom(hFD fd, struct sockaddr *addr);`
* ## ASM
* **In:**
* `>PUSHB fd`
* `>PUSHW addr` (RecvFrom)
* `>LIBCALL hLIBTCPIP,LIBTCPIP.Recv`
* ## RETURN VALUE
* CC: A = hMem
* CS: A = EC
*\--------------------------------------
SKT.RecvFrom >PULLW ZPTmpPtr1 addr
>PULLA
sec
.HS 90 BCC
*/--------------------------------------
* # Recv (RAW,DGRAM,SEQPKT)
* ## C
* `hMem recv(hFD fd);`
* ## ASM
* **In:**
* `lda fd`
* `>LIBCALL hLIBTCPIP,LIBTCPIP.Recv`
* ## RETURN VALUE
* CC: A = hMem
* CS: A = EC
*\--------------------------------------
SKT.RecvFrom pha
>PULLW ZPTmpPtr1 addr
pla
sec
.HS 90 BCC
SKT.Recv clc
php
>SYSCALL2 GetMemPtr
>STYA ZPPtrSKT
jsr SKT.GetFD
ldy #S.SOCKET.T
lda (ZPPtrSKT),y
@ -902,33 +910,38 @@ SKT.Recv clc
sec
rts
*/--------------------------------------
* # Send (RAW,DGRAM,SEQPKT)
* # SendTo (RAW,DGRAM,SEQPKT)
* ## C
* `int skt.send(hFD fd, const void *buf, int count);`
* `int skt.sendto(hFD fd, const void *buf, int count, const struct sockaddr *addr);`
* ## ASM
* **In:**
* `>PUSHW addr` (SendTo)
* `>PUSHWI count`
* `>PUSHB fd`
* `>PUSHW buf`
* `lda fd`
* `>PUSHWI count`
* `>PUSHW addr`
* `>LIBCALL hLIBTCPIP,LIBTCPIP.sendto`
* ## RETURN VALUE
* CC: Y,A = bytes written
* CS: A = EC
*\--------------------------------------
SKT.SendTo jsr SKT.PullRemAddr
*/--------------------------------------
* # Send (RAW,DGRAM,SEQPKT)
* ## C
* `int skt.send(hFD fd, const void *buf, int count);`
* ## ASM
* **In:**
* `>PUSHB fd`
* `>PUSHW buf`
* `>PUSHWI count`
* `>LIBCALL hLIBTCPIP,LIBTCPIP.send`
* ## RETURN VALUE
* CC: Y,A = bytes written
* CS: A = EC
*\--------------------------------------
SKT.SendTo sec
.HS 90 BCC
SKT.Send clc
php
jsr SKT.PullhFDDataInPtrLen
plp
bcc .1
SKT.Send jsr SKT.PullhFDDataInPtrLen
jsr SKT.PullRemAddr
.1 ldy #S.SOCKET.T
ldy #S.SOCKET.T
lda (ZPPtrSKT),y
tax
jmp (J.SKT.send,x)
@ -979,8 +992,7 @@ SKT.Send.9 rts
* `>LIBCALL hLIBTCPIP,LIBTCPIP.GetSockOpt`
* ## RETURN VALUE
*\--------------------------------------
SKT.getsockopt >SYSCALL2 GetMemPtr
>STYA ZPPtrSKT
SKT.getsockopt jsr SKT.GetFD
ldy #S.SOCKET.O
lda (ZPPtrSKT),y
* clc
@ -992,14 +1004,17 @@ SKT.getsockopt >SYSCALL2 GetMemPtr
* `int setsockopt(hFD fd, short int opts);`
* ## ASM
* **In:**
* `>PUSHBI opts`
* `lda fd`
* `>PUSHB fd`
* `>PUSHB opts`
* `>LIBCALL hLIBTCPIP,LIBTCPIP.SetSockOpt`
* ## RETURN VALUE
*\--------------------------------------
SKT.setsockopt >SYSCALL2 GetMemPtr
>STYA ZPPtrSKT
>PULLA
SKT.setsockopt >PULLA
pha
jsr SKT.PullhFD
pla
ldy #S.SOCKET.O
sta (ZPPtrSKT),y
* clc
@ -1017,10 +1032,9 @@ SKT.setsockopt >SYSCALL2 GetMemPtr
* CC : A = 0 if some data, A = $ff if EOF
* CS : A = Socket Error
*\--------------------------------------
SKT.EOF >SYSCALL2 GetMemPtr
>STYA ZPPtrSKT
SKT.EOF jsr SKT.GetFD
SKT.EOF.I ldy #S.SOCKET.TCP.INUSED
ldy #S.SOCKET.TCP.INUSED
lda (ZPPtrSKT),y
iny
ora (ZPPtrSKT),y
@ -1034,7 +1048,8 @@ SKT.EOF.I ldy #S.SOCKET.TCP.INUSED
rts
.8 lda #0 ...EOF = false
clc
* clc
.9 rts
*--------------------------------------
SKT.CheckStream lda #S.SOCKET.T.STREAM
@ -1085,10 +1100,13 @@ SKT.GetTable >LDYA L.SKT.Table
rts
*--------------------------------------
SKT.PullhFDDataInPtrLen
>SYSCALL2 GetMemPtr
>STYA ZPPtrSKT
>PULLW ZPDataInPtr !!!DataOut trashed when sending ACK in TCP.OUT
>PULLW ZPDataInLen !!!use DataInPtr/Len
>PULLW ZPDataInPtr !!!DataOut trashed when sending ACK in TCP.OUT
SKT.PullhFD >PULLA
SKT.GetFD >SYSCALL2 GetMemPtr
>STYA ZPPtrSKT
rts
*--------------------------------------
SKT.PullLocAddr clc
@ -1100,6 +1118,7 @@ SKT.PullRemAddr sec
ldx #S.SOCKADDR-1
bcc .1
ldx #S.SOCKADDR+S.SOCKADDR-1
.1 lda (ZPTmpPtr1),y
@ -1140,8 +1159,7 @@ SKT.FindMatchingLocRem
beq .8
phx
>SYSCALL2 GetMemPtr
>STYA ZPPtrSKT
jsr SKT.GetFD
plx
ldy #S.SOCKET.AF

View File

@ -1,6 +1,5 @@
NEW
AUTO 3,1
.LIST OFF
*--------------------------------------
TCP.IN jsr FRM.GetTargetSKT.TCPUDP
jsr SKT.FindMatchingLocRem
@ -91,11 +90,12 @@ TCP.IN.JMP.SYNSENT
jsr TCP.IN.ACKTheSYN
lda #S.TCP.OPTIONS.ACK
jsr TCP.OUT.SendOptA SYN.ACK received, Send, ACK
jsr TCP.OUT.SendACK SYN.ACK received, Send, ACK
bcs .9
lda #S.SOCKET.TCP.S.ESTBLSH
jmp SKT.StoreTCB.S
.9 lda #S.TCP.OPTIONS.RST
jsr TCP.OUT.SendOptA Send RST
ldx SKT.Index
@ -120,9 +120,11 @@ TCP.IN.JMP.SYNRCVD
sta SKT.Cache+S.SOCKET.TCP.OUTNEXTSEQ,x ...and update NEXTSEQ
eor (ZPFrameInPtr),y
bne .8
dey
dex
bpl .1
lda #S.SOCKET.TCP.S.ESTBLSH
jmp SKT.StoreTCB.S
@ -267,8 +269,7 @@ TCP.IN.JMP.LASTACK
bit #S.TCP.OPTIONS.ACK
beq .8
lda #S.TCP.OPTIONS.ACK
jsr TCP.OUT.SendOptA
jsr TCP.OUT.SendACK
ldy #S.SOCKET.TCP.S
lda #S.SOCKET.TCP.S.TIMEWT
@ -296,8 +297,8 @@ TCP.IN.JMP.FINWT1
.1 jsr TCP.IN.ACKTheFIN FIN/ACK
* lda #S.TCP.OPTIONS.FIN+S.TCP.OPTIONS.ACK
lda #S.TCP.OPTIONS.ACK
jsr TCP.OUT.SendOptA FIN received, Send ACK
jsr TCP.OUT.SendACK FIN received, Send ACK
bcs TCP.IN.JMP.TIMEWT.RTS
lda #S.SOCKET.TCP.S.LASTACK
@ -313,9 +314,7 @@ TCP.IN.JMP.FINWT2
jsr TCP.IN.ACKTheFIN
lda #S.TCP.OPTIONS.ACK
jsr TCP.OUT.SendOptA FIN received, Send ACK
jsr TCP.OUT.SendACK FIN received, Send ACK
bcs TCP.IN.JMP.TIMEWT.RTS
lda #S.SOCKET.TCP.S.TIMEWT
@ -409,8 +408,7 @@ TCP.SENDCLOSE ldx #0
lda SKT.TABLE,x
beq .8
>SYSCALL2 GetMemPtr
>STYA ZPPtrSKT
jsr SKT.GetFD
ldy #S.SOCKET.AF
lda (ZPPtrSKT),y
@ -450,10 +448,6 @@ TCP.SENDCLOSE ldx #0
lda #S.SOCKET.TCP.S.SYNSENT
jsr SKT.StoreTCB.S
bra .8
lda #S.TCP.OPTIONS.SYN
jsr TCP.OUT.SendOptA Send SYN
bra .8
*--------------------------------------
.4 cpx #S.SOCKET.T.SEQPKT
bne .6
@ -539,6 +533,8 @@ TCP.OUT.SEQSEND ldy #S.TCP.WINDOW
jmp SKT.StoreTCB exits with CC
*--------------------------------------
TCP.OUT.SendACK lda #S.TCP.OPTIONS.ACK
TCP.OUT.SendOptA
jsr TCP.SetSocketTCPO
@ -607,12 +603,14 @@ TCP.SetSocketTCPO
TCP.NewFrame ldx #S.IP.PROTOCOL.TCP
jsr FRM.NewIP
bcs .9
jsr SKT.SetFrameOutDstIP
jsr SKT.SetFrameOutTCPUDPPorts
ldy #S.TCP.DATAOFFSET
lda #$50 Header size = 5 DWORDS
sta (ZPFrameOutPtr),y
clc
.9 rts
*--------------------------------------
@ -624,9 +622,12 @@ TCP.AddAYToSktCacheAtX
adc SKT.Cache+2,x
sta SKT.Cache+2,x
bcc .8
inc SKT.Cache+1,x
bne .8
inc SKT.Cache,x
.8 rts
*--------------------------------------
MAN

View File

@ -167,22 +167,22 @@ LIB.LOAD ldx RefCount
jsr ARP.Clear.I
>PUSHBI S.SOCKET.T.DGRAM
>PUSHBI 0 no protocol
lda #S.SOCKET.T.DGRAM
jsr SKT.Socket
bcs .9
sta hDNSSocket
>PUSHA
>PUSHW L.SA.LOCAL IP/PORT=All ZERO
lda hDNSSocket
jsr SKT.Bind
>LDYAI UDP.PORT.DNS
>STYA SA.REMOTE+S.SOCKADDR.PORT
>PUSHB hDNSSocket
>PUSHW L.SA.REMOTE IP=All ZERO
lda hDNSSocket
jsr SKT.Connect
jsr DNS.CLEAR
@ -256,17 +256,20 @@ PULSE and #S.EVT.F.T1SEC
*--------------------------------------
GetDynPort inc DYNPORT.LAST
bne .1
inc DYNPORT.LAST+1
lda DYNPORT.LAST
cmp #K.DYNPORT.END
lda DYNPORT.LAST+1
sbc /K.DYNPORT.END
bcs .1
lda #K.DYNPORT.START
ldx /K.DYNPORT.START
sta DYNPORT.LAST
stx DYNPORT.LAST+1
rts CC
.1 lda DYNPORT.LAST
ldx DYNPORT.LAST+1
clc
@ -303,13 +306,13 @@ SA.REMOTE .DA #AF.INET S.SOCKADDR.AF
.BS 2 S.SOCKADDR.PORT
*--------------------------------------
FD.DSOCK .DA #S.FD.T.DSOCK
.DA #0 S.FD.HANDLER
.BS 1 S.FD.DSOCK.IOHANDLER
.DA #0 S.FD.PFT
.BS 1 S.FD.DSOCK.IOH
.DA #0 S.FD.DSOCK.OPEN
.DA #LIBTCPIP.shutdown
.DA #LIBTCPIP.Recv
.DA #LIBTCPIP.Send
.DA #0 S.FD.DSOCK.STATUS
.DA #0 S.FD.DSOCK.EOF
*--------------------------------------
.DA #AF.INET S.SOCKET.AF
.BS 1 S.SOCKET.T
@ -317,8 +320,8 @@ FD.DSOCK .DA #S.FD.T.DSOCK
FD.DSOCK.SIZE .EQ *-FD.DSOCK
*--------------------------------------
FD.SSOCK .DA #S.FD.T.SSOCK
.DA #0 S.FD.HANDLER
.BS 1 S.FD.SSOCK.IOHANDLER
.DA #0 S.FD.PFT
.BS 1 S.FD.SSOCK.IOH
.DA #0 S.FD.SSOCK.OPEN
.DA #LIBTCPIP.shutdown
.DA #LIBTCPIP.Read

View File

@ -233,15 +233,15 @@ CS.RUN.CheckArgs
CS.RUN.CheckArgs.RTS
rts
*--------------------------------------
CS.RUN.Connect >PUSHBI 0 no protocol
lda #S.SOCKET.T.SEQPKT
CS.RUN.Connect >PUSHBI S.SOCKET.T.SEQPKT
>PUSHBI 0 no protocol
>LIBCALL hLIBTCPIP,LIBTCPIP.Socket
bcs .9
sta hSocket
>PUSHA
>PUSHEA.G SA.LOCAL
lda hSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.Bind
bcs .9
@ -250,8 +250,8 @@ CS.RUN.Connect >PUSHBI 0 no protocol
.1 >SLEEP
>PUSHB hSocket
>PUSHEA.G SA.REMOTE
lda hSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.Connect
bcc .8

View File

@ -70,6 +70,7 @@ CS.RUN ldy #S.PS.ARGC
lda ArgIndex
>SYSCALL ArgV
bcs .8
>STYA ZPPtr1
jsr CkeckOption
@ -146,9 +147,9 @@ CS.RUN.LOOP1 >SLEEP
ldy #S.PS.hStdIn
lda (pPS),y
>SYSCALL FEOF
bcs CS.RUN.9 I/O error
tay
bne .1 no char
@ -239,6 +240,7 @@ CS.RUN.IAC.SB >SYSCALL GetChar Wait for IAC SB.IS or SEND
cmp #IAC
beq .4 end of DATA, go wait SE
ldy IAC.SB.LEN
sta (pData),y
iny
@ -247,15 +249,19 @@ CS.RUN.IAC.SB >SYSCALL GetChar Wait for IAC SB.IS or SEND
sty IAC.SB.LEN
cpy #IAC.BUF.MAX
bne .2
bra .8
.4 >SYSCALL GetChar
bcs .9
cmp #SE
bne .8
lda IAC.SUBCMD
cmp #TN.O.TTYPE
bne .8
lda IAC.SB.CMD
cmp #SB.IS
bne .8
@ -268,8 +274,7 @@ CS.RUN.IAC.SB >SYSCALL GetChar Wait for IAC SB.IS or SEND
*--------------------------------------
CS.RUN.GREETINGS
>PUSHW L.MSG.GREETINGS
>PUSHB #K.VER
>PUSHB /K.VER
>PUSHW A2osX.KVER
lda ArgDev
>SYSCALL ArgV
>PUSHYA
@ -282,7 +287,9 @@ CS.DOEVENT lda (pEvent)
lda TimeOut
beq .9
dec TimeOut
.9 sec do not discard TIMER event
rts
*--------------------------------------
@ -290,6 +297,7 @@ CS.QUIT lda hFILE
beq .8
>SYSCALL FClose
.8 clc
rts
*--------------------------------------

View File

@ -125,6 +125,7 @@ CS.RUN >LDYA L.MSG.TCPWAIT
lda (pPS),y
>SYSCALL FEOF
bcs CS.RUN.RTS I/O err
tay
bne .1
@ -170,15 +171,15 @@ CS.RUN.INIT ldx #3
jsr CS.RUN.CONF
bcs CS.RUN.RTS
>PUSHBI S.SOCKET.T.SEQPKT
>PUSHBI 0 no protocol
lda #S.SOCKET.T.SEQPKT
>LIBCALL hLIBTCPIP,LIBTCPIP.Socket
bcs CS.RUN.RTS
sta hSrvSocket
>PUSHB hSrvSocket
>PUSHW L.SA.LOCAL
lda hSrvSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.Bind
bcs CS.RUN.ERR
@ -408,9 +409,9 @@ CS.RUN.CLIENT >LDYAI 1024
bra .8
.9 >PUSHWI HTTP.404.len
.9 >PUSHB CLN.hSocket
>PUSHW L.HTTP.404
lda CLN.hSocket
>PUSHWI HTTP.404.len
>LIBCALL hLIBTCPIP,LIBTCPIP.Send
.8 bit REQ.KeepAlive
@ -598,9 +599,11 @@ CS.RUN.SendFile >PUSHW ZPRepPtr
plp
rts
*--------------------------------------
CS.RUN.SendBuf >PUSHYA
CS.RUN.SendBuf pha
>PUSHB CLN.hSocket
>PUSHW ZPRepPtr
lda CLN.hSocket
pla
>PUSHYA
>LIBCALL hLIBTCPIP,LIBTCPIP.Send
rts
*--------------------------------------

View File

@ -118,15 +118,15 @@ CS.RUN.INIT ldx #3
>SYSCALL AToI
>STYA SA.LOCAL+S.SOCKADDR.PORT
CS.RUN.PORTOK >PUSHBI 0 no protocol
lda #S.SOCKET.T.STREAM
CS.RUN.PORTOK >PUSHBI S.SOCKET.T.STREAM
>PUSHBI 0 no protocol
>LIBCALL hLIBTCPIP,LIBTCPIP.Socket
bcs .9
sta hSrvSocket
>PUSHA
>PUSHW L.SA.LOCAL
lda hSrvSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.Bind
bcs .9

View File

@ -41,7 +41,10 @@ BLISTX.Free pha
.1 lda $ffff,x SELF MODIFIED
beq .8
phx
jsr K.FreeMem
plx
inx
bra .1

View File

@ -57,20 +57,15 @@ K.GetDevByName >STYA ZPPtr1 requested dev name
bcs .7
lda Nod.Table.hFD-2,x
jsr K.GetMemPtr Y,A = pPD, X = hDevNod
>STYA pFD for IO.Open
* clc
rts
jmp K.GetMemPtr Y,A = pPD, X = hDevNod
.7 inx
inx
cpx #K.NOD.MAX*2+2
bne .5
.9 lda #MLI.E.NODEV
sec
lda #MLI.E.NODEV
* sec
rts
*--------------------------------------
.8 >STYA ZPPtr2
@ -122,6 +117,37 @@ DEV.GetStatus sta K.S.IOCTL+S.IOCTL.S
ldx #IOCTL.STATUS
*--------------------------------------
DEV.pDrvJmp jmp (pDrv)
*--------------------------------------
DEV.OPEN ldx #IOCTL.OPEN
lda IO.hDevNod
jsr DEV.pDrvJmp
bcs .9
lda IO.hDevNod
.9 rts
*--------------------------------------
DEV.CLOSE ldx #IOCTL.CLOSE
lda IO.hDevNod
jmp (pDrv)
*--------------------------------------
DEV.READ ldx #IOCTL.READ
.HS 2C BIT ABS
*--------------------------------------
DEV.WRITE ldx #IOCTL.WRITE
>PULLW K.S.IOCTL+S.IOCTL.BYTECNT
>PULLW K.S.IOCTL+S.IOCTL.BUFPTR
inc pStack pop hFD
>LDYAI K.S.IOCTL
jsr DEV.pDrvJmp
bcs .9
>LDYA K.S.IOCTL+S.IOCTL.BYTECNT
.9 rts
*/--------------------------------------
* # MKDev
* Create a hDEV

View File

@ -337,7 +337,7 @@ K.FreeMem.ERR >PUSHWI K.FreeMem.MSG
tya hMem n Y
>PUSHA
* >DEBUG
ldy #S.PS.PID
lda (pPS),y
>PUSHA

View File

@ -7,7 +7,6 @@ PIPE.CNT .EQ ZPDRV+4
PIPE.BASEH .EQ ZPDRV+6
PIPE.BUFH .EQ ZPDRV+7
PIPE.SIZEH .EQ ZPDRV+8
PIPE.nCNT .EQ ZPDRV+10
*--------------------------------------
PIPE.OPEN ldy #S.FD.PIPE.S
lda (pFD),y
@ -40,8 +39,8 @@ PIPE.CLOSE ldy #S.FD.PIPE.S
*--------------------------------------
PIPE.WRITE ldy #S.FD.PIPE.S
lda (pFD),y
bpl .10
jmp PIPE.eEOF Remote PS closed the Pipe
.10 ldy #S.FD.PIPE.Free
@ -233,7 +232,7 @@ PIPE.READ ldy #S.FD.PIPE.Used+1
jsr PIPE.SubCnt
PIPE.EXIT >LDYA PIPE.CNT Y,A = bytes written
inc pStack
inc pStack Discard hFILE
clc
rts
*--------------------------------------

52
SYS/KERNEL.S.SOCK.txt Normal file
View File

@ -0,0 +1,52 @@
NEW
AUTO 3,1
*--------------------------------------
SOCK.OPEN lda IO.hDevNod
clc
rts
*--------------------------------------
SOCK.CLOSE ldy #S.FD.SSOCK.CLOSE
.HS 2C BIT ABS
*--------------------------------------
SOCK.EOF ldy #S.FD.SSOCK.EOF
jsr SOCK.SETUP
SOCK.JMP jmp (pDrv)
*--------------------------------------
SOCK.READ ldy #S.FD.SSOCK.READ
.HS 2C BIT ABS
*--------------------------------------
SOCK.WRITE ldy #S.FD.SSOCK.WRITE
jsr SOCK.SETUP
>PUSHA hFD
phx
ldx #4
ldy #4
.1 lda (pStack),y
>PUSHA
dex
bne .1
plx
jsr SOCK.JMP
>RET 5
*--------------------------------------
SOCK.SETUP lda (pFD),y
tax Function Offset in LIB
ldy #S.FD.SSOCK.IOH
lda (pFD),y
jsr K.GetMemPtr
>STYA pDrv
lda IO.hFD
rts
*--------------------------------------
MAN
SAVE usr/src/sys/kernel.s.sock
LOAD usr/src/sys/kernel.s
ASM

View File

@ -54,7 +54,7 @@ STDIO.Put1 >PUSHWI K.IOBuf buf
inc write 1 byte
>PUSHA
jsr K.FWrite
STDIO.Write jsr K.FWrite
bcc .9
tay
@ -108,15 +108,7 @@ K.PutS >STYA .1+1
txa
>PUSHA
jsr K.FWrite
bcc .99
tay
bne .99
>POP 5 pop hFile, buffer & len
.99 rts
bra STDIO.Write
*/--------------------------------------
* # fputs (BLOCKING)
* Write Str to hFILE
@ -166,14 +158,8 @@ K.FPutS lda (pStack)
pla
>PUSHA push len LO
jsr K.Write
bcc .8
tay
bne .8
>POP 5
rts
jsr STDIO.Write
bcs K.FPutS.RTS
.8 >POP 2
@ -381,10 +367,10 @@ K.FOpen jsr PFT.CheckPath4
inc pStack discard filename
inc pStack
jmp IO.Open
jmp UNISTD.Open
.9 >POP 6
.99 rts
rts
*/--------------------------------------
* # FClose
* Close a file
@ -399,7 +385,7 @@ K.FOpen jsr PFT.CheckPath4
K.FClose jsr PFT.CheckNodeA
bcs K.FRead.RTS
jmp IO.Close
jmp UNISTD.Close
*/--------------------------------------
* # FRead (BLOCKING)
* Read bytes from file
@ -577,7 +563,7 @@ K.FEOF jsr PFT.CheckNodeA
.DA STDIO.IOERR BDEV
.DA STDIO.IOERR LNK
.DA STDIO.IOERR DSOCK
.DA IO.EOF.SSOCK
.DA SOCK.EOF
.DA PIPE.EOF
*/--------------------------------------
* # FTell

View File

@ -21,13 +21,14 @@ K.Open jsr PFT.CheckPath1
stz IO.Open.AUXTYPE
stz IO.Open.AUXTYPE+1
*--------------------------------------
IO.Open ldx #5 /dev/
UNISTD.Open ldx #5 /dev/
cpx K.MLI.PATH
bcs .8
.1 lda K.MLI.PATH,x
cmp IO.DEV-1,x
bne .8
dex
bne .1
*--------------------------------------
@ -37,8 +38,10 @@ IO.Open ldx #5 /dev/
jsr K.GetDevByName
bcs .9
*--------------------------------------
stx IO.hDevNod pFD set by GetDevByName
>STYA pFD
stx IO.hDevNod
lda (pFD) #S.FD.T
tax
@ -47,11 +50,11 @@ IO.Open ldx #5 /dev/
.2
* .DA STDIO.IOERR REG
.DA STDIO.IOERR DIR
.DA IO.OPEN.DEV
.DA IO.OPEN.DEV
.DA DEV.OPEN
.DA DEV.OPEN
.DA STDIO.IOERR LNK
.DA IO.OPEN.SOCK
.DA IO.OPEN.SOCK
.DA SOCK.OPEN
.DA SOCK.OPEN
.DA PIPE.OPEN
.8 jmp FS.OPEN.REG
@ -68,16 +71,16 @@ IO.Open ldx #5 /dev/
*\--------------------------------------
K.Close jsr DEV.GetPFD
IO.Close lda (pFD) #S.FD.T
UNISTD.Close lda (pFD) #S.FD.T
tax
jmp (.1,x)
.1 .DA FS.CLOSE.REG
.DA FS.CLOSE.DIR
.DA IO.CLOSE.DEV
.DA IO.CLOSE.DEV
.DA DEV.CLOSE
.DA DEV.CLOSE
.DA STDIO.IOERR LNK
.DA IO.CLOSE.SOCK
.DA IO.CLOSE.SOCK
.DA SOCK.CLOSE
.DA SOCK.CLOSE
.DA PIPE.CLOSE
*/--------------------------------------
* # read
@ -103,11 +106,11 @@ UNISTD.Read lda (pFD) #S.FD.T
jmp (.1,x)
.1 .DA FS.READ.REG
.DA STDIO.IOERR DIR
.DA IO.READ.CDEV
.DA DEV.READ
.DA STDIO.IOERR BDEV
.DA STDIO.IOERR LNK
.DA STDIO.IOERR DSOCK
.DA IO.READ.SSOCK
.DA SOCK.READ
.DA PIPE.READ
*/--------------------------------------
* # write
@ -133,65 +136,12 @@ UNISTD.Write lda (pFD) #S.FD.T
jmp (.1,x)
.1 .DA FS.WRITE.REG
.DA STDIO.IOERR DIR
.DA IO.WRITE.CDEV
.DA DEV.WRITE
.DA STDIO.IOERR BDEV
.DA STDIO.IOERR LNK
.DA STDIO.IOERR DSOCK
.DA IO.WRITE.SSOCK
.DA SOCK.WRITE
.DA PIPE.WRITE
*--------------------------------------
IO.OPEN.DEV ldx #IOCTL.OPEN
lda IO.hDevNod
jsr DEV.pDrvJmp
bcs IO.RTS
*--------------------------------------
IO.OPEN.SOCK lda IO.hDevNod
clc
IO.RTS rts
*--------------------------------------
IO.CLOSE.DEV ldx #IOCTL.CLOSE
lda IO.hDevNod
jmp DEV.pDrvJmp
*--------------------------------------
IO.READ.CDEV ldx #IOCTL.READ
.HS 2C BIT ABS
*--------------------------------------
IO.WRITE.CDEV ldx #IOCTL.WRITE
>PULLW K.S.IOCTL+S.IOCTL.BYTECNT
>PULLW K.S.IOCTL+S.IOCTL.BUFPTR
inc pStack pop hFD
>LDYAI K.S.IOCTL
jsr DEV.pDrvJmp
bcs .9
>LDYA K.S.IOCTL+S.IOCTL.BYTECNT
.9 rts
*--------------------------------------
IO.CLOSE.SOCK ldy #S.FD.SSOCK.CLOSE
.HS 2C BIT ABS
*--------------------------------------
IO.EOF.SSOCK ldy #S.FD.SSOCK.EOF
.HS 2C BIT ABS
*--------------------------------------
IO.READ.SSOCK ldy #S.FD.SSOCK.READ
.HS 2C BIT ABS
*--------------------------------------
IO.WRITE.SSOCK ldy #S.FD.SSOCK.WRITE
lda (pFD),y
tax Function Offset in LIB
ldy #S.FD.SSOCK.IOH
lda (pFD),y
jsr K.GetMemPtr
>STYA .1+1
lda IO.hFD
.1 jmp $FFFF SELF MODIFIED
*/-------------------------------------
* # LSeek
* Set the file-position indicator for hFD
@ -204,7 +154,7 @@ IO.WRITE.SSOCK ldy #S.FD.SSOCK.WRITE
* `>PUSHB whence`
* `>SYSCALL fseek`
*\-------------------------------------
K.LSeek
*K.LSeek
*/--------------------------------------
* # ChOwn

View File

@ -81,6 +81,7 @@ D1.B .PH $D000
.INB usr/src/sys/kernel.s.unistd
.INB usr/src/sys/kernel.s.stdio
.INB usr/src/sys/kernel.s.dev
.INB usr/src/sys/kernel.s.sock
.INB usr/src/sys/kernel.s.pipe
.EP
D1.S .EQ *-D1.B