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

@ -5,9 +5,9 @@ Copyright 2015 - 2020, Remy Gibert and the A2osX contributors.
# ARP.Clear
Clear ARP Cache
**In:**
**In:**
## RETURN VALUE
## RETURN VALUE
# ARP.Query
Query ARP Cache and returns HW address
@ -17,7 +17,7 @@ Copyright 2015 - 2020, Remy Gibert and the A2osX contributors.
## RETURN VALUE
CC: hit: MAC filled
CS: missed
CS: missed
# ARP.Add
Add a static ARP cache record
@ -34,19 +34,19 @@ Copyright 2015 - 2020, Remy Gibert and the A2osX contributors.
# DNS.Clear
Clear DNS Cache
**In:**
**In:**
## RETURN VALUE
## RETURN VALUE
# DNS.Query
Query DNS for specified host
**In:**
PUSHW = PTR to IP to fill with cached data
* PUSHW = hostname PTR to PSTR
* PUSHW = hostname PTR to PSTR
## RETURN VALUE
CC: hit: IP filled with address
CS: missed
CS: missed
# DNS.Add
Add a static DNS record
@ -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
@ -703,7 +701,7 @@ KW.PRINT >LDYAI 256
sta (ZPPtr1),y
eor #'"
bne .1
sec
.2 sta (ZPPtr1),y

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
@ -9,7 +8,7 @@ DHCP.INIT lda IPCFG+S.NETCFG.STATUS
stz IPCFG+S.NETCFG.STATUS
ldx #3
.1 eor A2osX.TIMER16,x
sta DHCP.DISC.XID,x
sta DHCP.REQ.XID,x
@ -34,42 +33,43 @@ 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
>LDYA L.MSG.DHCP.CFG1
>SYSCALL PutS
>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
@ -77,15 +77,15 @@ DHCP.RUN.SDISC >PUSHW L.SA.DEST
DHCP.RUN.ROFFER jsr DHCP.RUN.SKT.RECV
bcc .1
lda #1
jmp DHCP.RUN.KO
.1 jsr CheckDHCPOffer
bcs DHCP.RUN.ROFFER
lda #S.IPCFG.STATUS.ROFFER
sta IPCFG
DHCP.RUN.SREQ >PUSHW L.MSG.DHCP.CFG2
ldx #0
@ -97,19 +97,19 @@ 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
lda #S.IPCFG.STATUS.SREQ
sta IPCFG
DHCP.RUN.RACK jsr DHCP.RUN.SKT.RECV
bcc .1
lda #2
bra DHCP.RUN.KO
@ -122,7 +122,7 @@ DHCP.RUN.OK lda #S.IPCFG.STATUS.OK
>LIBCALL hLIBTCPIP,LIBTCPIP.SETCFG
>PUSHW L.MSG.DHCP.OK
ldx #0
.1 lda IPCFG+S.IPCFG.IP,x
@ -130,7 +130,7 @@ DHCP.RUN.OK lda #S.IPCFG.STATUS.OK
inx
cpx #4
bne .1
ldx #0
.2 lda IPCFG+S.IPCFG.MASK,x
@ -138,7 +138,7 @@ DHCP.RUN.OK lda #S.IPCFG.STATUS.OK
inx
cpx #4
bne .2
>PUSHBI 8
>SYSCALL PrintF
@ -162,20 +162,20 @@ DHCP.RUN.SKT.RECV
sta TimeOut
.1 >SLEEP
lda hSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.Recv
bcc .8
cmp #E.NODATA
bne .9
lda TimeOut
bne .1
.9 sec
rts
.8 sta hFrame
>SYSCALL GetMemPtr
@ -194,7 +194,7 @@ CheckDHCPOffer jsr CheckDHCPXID
bcs .9
lda ZPFrameBase
clc
clc
adc #S.DHCP.OPTIONS
sta ZPFramePtr
@ -322,7 +322,7 @@ GetDHCPOption cmp #S.DHCP.OPTIONS.MASK
sta IPCFG+S.IPCFG.DOMAIN-1,y
dex
bne .7
.9 rts
*--------------------------------------
GetDHCPOption.CopyIP
@ -350,7 +350,7 @@ CheckDHCPAck jsr CheckDHCPXID
bcs .9
lda ZPFrameBase
clc
clc
adc #S.DHCP.OPTIONS
sta ZPFramePtr

View File

@ -1,6 +1,5 @@
NEW
AUTO 3,1
.LIST OFF
*--------------------------------------
ETC.ReadFiles >LDYAI 256
>SYSCALL GetMem
@ -20,7 +19,7 @@ ETC.ReadFiles >LDYAI 256
>PUSHW A2osX.TIMER16
>PUSHBI 2
>SYSCALL SPrintF
.4 >LDYA L.TCPIP.CONF
jsr CFG.Read.PrintF
jsr CFG.Read.TCPIP.CONF
@ -80,25 +79,25 @@ CFG.Read.TCPIP.CONF
jsr CFG.Read.Open
jsr CFG.Read.Result
bcs .9
.1 jsr CFG.Read.GetS
bcs .8
lda (ZPTmpPtr1)
beq .1 empty line...
cmp #'#'
beq .1 comment...
ldy #$ff
.2 iny
lda (ZPTmpPtr1),y
beq .3
cmp #C.SPACE
bne .2
.3 lda L.CFG.Keywords
sta ZPTmpPtr2
lda L.CFG.Keywords+1
@ -111,36 +110,36 @@ CFG.Read.TCPIP.CONF
tya
cmp (ZPTmpPtr2)
bne .6
.5 lda (ZPTmpPtr2),y
dey
cmp (ZPTmpPtr1),y
bne .6
tya
bne .5
ply discard keyword len
jsr .80
bra .1
.6 lda (ZPTmpPtr2)
sec
adc ZPTmpPtr2
sta ZPTmpPtr2
bcc .7
inc ZPTmpPtr2+1
.7 inx
inx
ply reset keyword len
lda (ZPTmpPtr2)
bne .4
bra .1
.8 clc
.HS B0 BCS
.9 sec
@ -161,14 +160,14 @@ CFG.Read.nameserver
ldx #S.IPCFG.DNS1
lda IPCFG,x
beq CFG.Read.IP
ldx #S.IPCFG.DNS2
lda IPCFG,x
beq CFG.Read.IP
clc
rts
CFG.Read.IP lda (ZPTmpPtr2)
sec
adc ZPTmpPtr1
@ -229,7 +228,7 @@ CFG.Read.HOSTS stz CFG.hBuf2
>STYA ZPTmpPtr2
stx CFG.hBuf2
>LDYAI 256
>SYSCALL GetMem
bcs .9
@ -292,12 +291,12 @@ CFG.Read.HOSTS.Scan
inx
cpx #4
bne .2
>PUSHW ZPTmpPtr2
>PUSHW ZPTmpPtr3
>PUSHBI 12 6 PTRs on stack
>SYSCALL SScanF
rts
*--------------------------------------

View File

@ -139,7 +139,7 @@ CS.RUN >LIBCALL hLIBTCPIP,LIBTCPIP.GETCFG
lda #MLI.E.NODEV
sec
rts
CS.RUN.SETUP
CS.RUN.SETUP
.1 inc ArgIndex
lda ArgIndex
>SYSCALL ArgV
@ -150,14 +150,14 @@ CS.RUN.SETUP
cmp #'-'
bne .99
ldy #1
ldy #1
lda (ZPTmpPtr1),y
ldx #OptionVars-OptionList-1
.2 cmp OptionList,x
beq .3
dex
bpl .2
@ -208,7 +208,7 @@ CS.RUN.SETUP
CS.RUN.DUMP >PUSHB IPCFG+S.NETCFG.DevID
>PUSHEA.G DIB
>SYSCALL GetDevStatus
>LEA.G DCB.NIC
>STYA.G IOCTL+S.IOCTL.BUFPTR
lda #S.IOCTL.S.GETDCB
@ -233,33 +233,33 @@ CS.RUN.DUMPNIC >PUSHW L.MSG1.DEV
adc /S.FD.DEV
>PUSHYA
>PUSHEA.G DIB+S.DIB.IDS
>PUSHEA.G DIB+S.DIB.IDS
ldy #DCB.NIC+S.DCB.NIC.MAC
ldx #6
.1 lda (pData),y
>PUSHA
iny
dex
dex
bne .1
>PUSHBI 11
>SYSCALL PrintF
>PUSHW L.MSG1.DEV.ARP
>LDA.G DCB.NIC+S.DCB.NIC.FLAGS
and #S.DCB.NIC.FLAGS.ARPOFFLOAD
beq .2
lda #1
.2 >PUSHA
>PUSHBI 1
>PUSHBI 1
>SYSCALL PrintF
>PUSHW L.MSG1.DEV.IP
>LDA.G DCB.NIC+S.DCB.NIC.FLAGS
and #S.DCB.NIC.FLAGS.IPOFFLOAD
@ -267,9 +267,9 @@ CS.RUN.DUMPNIC >PUSHW L.MSG1.DEV
lda #1
.3
>PUSHA
>PUSHBI 1
>PUSHA
>PUSHBI 1
>SYSCALL PrintF
>LDA.G DCB.NIC+S.DCB.NIC.LINK
@ -281,11 +281,11 @@ CS.RUN.DUMPNIC >PUSHW L.MSG1.DEV
CS.RUN.LINK >LDYA L.MSG1.LINK.OK
>SYSCALL PutS
>PUSHW L.MSG1.LINKSPEED
>PUSHBI 0
>SYSCALL PrintF
>LDA.G DCB.NIC+S.DCB.NIC.SPEED
and #$0F
tax
@ -316,30 +316,30 @@ CS.RUN.DUMPIP >PUSHW L.MSG2
.10 >SYSCALL PutS
>PUSHW L.MSG2.DHCPSRVR
ldx #0
.2 >PUSHB IPCFG+S.IPCFG.DHCPSRVR,x
inx
cpx #4
bne .2
>PUSHBI 4
>SYSCALL PrintF
>PUSHW L.MSG2.IPMASK
ldx #0 IP/MASK
.3 >PUSHB IPCFG+S.IPCFG.IP,x
inx
cpx #8
bne .3
>PUSHBI 8
>SYSCALL PrintF
>PUSHW L.MSG2.GW
ldx #0
.4 >PUSHB IPCFG+S.IPCFG.GW,x
inx
@ -347,25 +347,25 @@ CS.RUN.DUMPIP >PUSHW L.MSG2
bne .4
>PUSHBI 4
>SYSCALL PrintF
>PUSHW L.MSG2.DNS
ldx #0
.5 >PUSHB IPCFG+S.IPCFG.DNS1,x
inx
cpx #8
bne .5
>PUSHBI 8
>SYSCALL PrintF
>PUSHW L.MSG2.HOSTNAME
>PUSHW L.IPCFG.HOSTNAME
>PUSHW L.IPCFG.DOMAIN
>PUSHBI 4
>SYSCALL PrintF
lda #0 tell TSKMGR that all done ok, but
lda #0 tell TSKMGR that all done ok, but
sec we do not want to stay in memory
rts
*--------------------------------------
@ -478,7 +478,7 @@ DHCP.DISC.XID .BS 4
.HS 00000000 CIADDR
DHCP.DISC.YIADDR .HS 00000000
.HS 00000000 SIADDR
DHCP.DISC.GIADDR .HS 00000000
DHCP.DISC.GIADDR .HS 00000000
DHCP.DISC.CHADDR .HS 00000000.00000000.00000000.00000000
.BS 64 SNAME
.BS 128 FILE

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

@ -41,7 +41,7 @@ CS.START cld
*--------------------------------------
.1 .DA CS.INIT
.DA CS.RUN
.DA CS.DOEVENT
.DA CS.DOEVENT
.DA CS.QUIT
L.LIBTCPIP .DA LIBTCPIP
L.SA.LOCAL .DA SA.LOCAL
@ -69,7 +69,7 @@ CS.RUN >LIBCALL hLIBTCPIP,LIBTCPIP.GETCFG is TCPIP loaded ?
>STYA ZPIPCfgPtr
lda (ZPIPCfgPtr) Configured ?
bmi CS.RUN.IPOK
>LDYA L.MSG.IPKO
>SYSCALL PutS
lda #E.SYN
@ -92,7 +92,7 @@ CS.RUN.IPOK ldy #S.PS.ARGC
sta TimeOut
.2 >SLEEP
>PUSHW L.SA.REMOTE.AD
lda #1
>SYSCALL ArgV
@ -135,19 +135,19 @@ CS.RUN.PORTOK >PUSHW L.MSG.HOSTOK
lda #1
>SYSCALL ArgV
>PUSHYA
>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
@ -162,29 +162,29 @@ CS.RUN.OPENSKT >PUSHBI 0 no protocol
sta TimeOut
.3 >SLEEP
>PUSHB hSocket
>PUSHW L.SA.REMOTE
lda hSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.Connect
bcc .4
cmp #ERR.SKT.NOCONN
bne .9
lda TimeOut
bne .3
lda #ERR.SKT.NOCONN
bra .9
.4 >PUSHW L.MSG.SKTOK
>PUSHBI 0
>SYSCALL PrintF
>LDYAI BUFSIZE
>SYSCALL GetMem
bcs .99
>STYA ZPBufPtr
stx hBuf
@ -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
@ -229,7 +226,7 @@ CS.RUN.LOOP >SLEEP
lda (pPS),y
>PUSHA
>PUSHW ZPBufPtr
>PUSHWI BUFSIZE
>PUSHWI BUFSIZE
>SYSCALL FRead
.11 bcc .3
@ -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
@ -1205,7 +717,7 @@ Sleep ldy #S.PS.PID
dec CIFS.Status
stz CIFS.Retries
lda #0
sec
rts
@ -1370,17 +882,21 @@ StatBuf2Ptr2 ldy #S.STAT-1
*--------------------------------------
ClearSocket jsr ReadSocket
bcs .8
>SYSCALL2 FreeMem
bra ClearSocket
.8 clc
.8 clc
rts
*--------------------------------------
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
@ -1470,7 +986,7 @@ SMB.ComRead.H .DA #10 WORD COUNT
.HS 00000000 Timeout
.HS 0000 Remaining
.HS 0000 ByteCount
SMB.ComRead.H.Len .EQ *-SMB.ComRead.H
SMB.ComRead.H.Len .EQ *-SMB.ComRead.H
*-------------------------------------- #$2F
SMB.ComWrite.H .DA #12 WORD COUNT
.HS FF000000 NO MORE CMD
@ -1481,18 +997,18 @@ SMB.ComWrite.H .DA #12 WORD COUNT
.BS 2 Remaining
.HS 0000 Reserved
.BS 2 DataLength
.BS 2 DataOffset
.BS 2 DataOffset
SMB.ComWrite.H.Len .EQ *-SMB.ComWrite.H
.BS 2 ByteCount
SMB.ComWrite.T
* DATA.....
SMB.ComWrite.T.Len .EQ *-SMB.ComWrite.T
SMB.ComWrite.T.Len .EQ *-SMB.ComWrite.T
*-------------------------------------- #$04
SMB.ComClose.H .DA #3 WORD COUNT
.BS 2 FID
.HS 00000000 LastTimeModified
.HS 0000 ByteCount
SMB.ComClose.H.Len .EQ *-SMB.ComClose.H
SMB.ComClose.H.Len .EQ *-SMB.ComClose.H
*--------------------------------------
SMB.Trans2.H .DA #15 WORD COUNT
.BS 2 TotalParamCount
@ -1518,11 +1034,11 @@ SMB.Open2 .DA 0 TRANS2_OPEN2
.HS 0000 Flags
.BS 2 Access Mode
.HS 0000 Reserved1
.BS 2 FileAttributes
.HS 00000000 CreationTime
.BS 2 FileAttributes
.HS 00000000 CreationTime
.BS 2 OpenMode
.HS 00000000 AllocationSize
.HS 00000000000000000000 Reserved
.HS 00000000000000000000 Reserved
* .AZ "filename"
SMB.Open2.Len .EQ *-SMB.Open2
*--------------------------------------

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,11 +1,10 @@
NEW
AUTO 3,1
.LIST OFF
*/--------------------------------------
* # ARP.Clear
* Clear ARP Cache
* **In:**
* ## RETURN VALUE
* **In:**
* ## RETURN VALUE
*\--------------------------------------
ARP.Clear jsr ARP.GetCache
@ -27,7 +26,7 @@ ARP.Clear.I lda #0
* PUSHW PTR to IP
* ## RETURN VALUE
* CC: hit: MAC filled
* CS: missed
* CS: missed
*\--------------------------------------
ARP.Query jsr ARP.GetIP
@ -55,7 +54,7 @@ ARP.Query jsr ARP.GetIP
ARP.Add jsr ARP.GetIP
>PULLW ZPPtrMAC MAC
ldy #5
.2 lda (ZPPtrMAC),y
@ -199,8 +198,8 @@ ARP.QUERY.I jsr ARP.FIND.BY.IP
jsr ARP.ADD.I
.9 lda #ERR.ARP.PENDING
sec
.99 rts
sec
.99 rts
*--------------------------------------
ARP.FIND.BY.IP jsr ARP.GetCache
@ -215,7 +214,7 @@ ARP.FIND.BY.IP jsr ARP.GetCache
bne .3
iny
cpy #S.ARPCACHE.IP+4
cpy #S.ARPCACHE.IP+4
bne .2
clc
@ -308,18 +307,18 @@ ARP.NextCache lda ZPCachePtr
sta ZPCachePtr
bcc .8
inc ZPCachePtr+1
.8 rts
*--------------------------------------
ARP.GetIP >PULLW ZPPtrIP
ldy #3
.1 lda (ZPPtrIP),y
sta ARP.TmpCache+S.ARPCACHE.IP,y
dey
bpl .1
rts
*--------------------------------------
ARP.AddFromFrameInPtr
@ -328,7 +327,7 @@ ARP.AddFromFrameInPtr
ldy #S.ETH.SRCMAC+5
jsr ARP.GetMacFromFrameInPtrY
lda #K.ARP.TTL
sta ARP.TmpCache+S.ARPCACHE.TTL
lda /K.ARP.TTL
@ -355,7 +354,7 @@ ARP.GetMacFromFrameInPtrY
dey
dex
bpl .1
rts
*--------------------------------------
ARP.Send >STYA IOCTL+S.IOCTL.BUFPTR

View File

@ -1,6 +1,5 @@
NEW
AUTO 3,1
.LIST OFF
*--------------------------------------
CFG.SET >PULLW ZPTmpPtr1 IPCFG
@ -43,7 +42,7 @@ CFG.SET >PULLW ZPTmpPtr1 IPCFG
ldx #IOCTL.STATUS
jsr CFG.SET.IOCTL
bcs .9
ldx #11 IP/MASK/GW
.4 lda IPCFG+S.IPCFG.IP,x
@ -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,11 +1,10 @@
NEW
AUTO 3,1
.LIST OFF
*/--------------------------------------
* # DNS.Clear
* Clear DNS Cache
* **In:**
* ## RETURN VALUE
* **In:**
* ## RETURN VALUE
*\--------------------------------------
DNS.Clear ldx #K.DNSCACHE.SIZE*S.DNSCACHE
@ -20,10 +19,10 @@ DNS.Clear ldx #K.DNSCACHE.SIZE*S.DNSCACHE
* Query DNS for specified host
* **In:**
* PUSHW = PTR to IP to fill with cached data
* PUSHW = hostname PTR to PSTR
* PUSHW = hostname PTR to PSTR
* ## RETURN VALUE
* CC: hit: IP filled with address
* CS: missed
* CS: missed
*\--------------------------------------
DNS.Query >PULLW ZPPtrDNS Get host string
>PULLW ZPPtrIP Get IP address to fill
@ -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
@ -165,7 +164,7 @@ DNS.CSTR2DNS lda (ZPPtrDNS)
cmp #'Z'+1
bcs .2
adc #$20
.2 inx
@ -248,13 +247,13 @@ DNS.ADD.I sta DNS.TmpCache
*\--------------------------------------
DNS.GetCAche >LDYA L.DNS.CACHE
>STYA ZPCachePtr
clc
rts
*--------------------------------------
DNS.FIND.BY.NAME
jsr DNS.GetCAche
ldx #K.DNSCACHE.SIZE
.1 lda (ZPCachePtr)
@ -271,7 +270,7 @@ DNS.FIND.BY.NAME
bcc .8
.6 jsr DNS.NextCache
dex
bne .1
@ -280,7 +279,7 @@ DNS.FIND.BY.NAME
*--------------------------------------
DNS.UPDATE.BY.ID
jsr DNS.GetCAche
ldx #K.DNSCACHE.SIZE
.1 lda (ZPCachePtr)
@ -299,13 +298,13 @@ DNS.UPDATE.BY.ID
lda #S.DNSCACHE.STATUS.RESOLVED
sta (ZPCachePtr)
ldy #S.DNSCACHE.TTL
.2 lda DNS.TmpCache,y
sta (ZPCachePtr),y
iny
cpy #S.DNSCACHE
bne .2
clc
rts
@ -390,7 +389,7 @@ DNS.EXPIRE jsr DNS.GetCAche
iny
dex
bne .2
bcs .6
jsr DNS.FREE
.6 plx
@ -461,7 +460,7 @@ DNS.POLL lda hDNSSocket
tay
bra .1
.2 iny
.2 iny
iny
iny Skip QTYPE & QCLASS
iny
@ -473,11 +472,11 @@ DNS.POLL lda hDNSSocket
.3 lda (ZPFrameInPtr),y
beq .32
bpl .31 Pointer ?
bpl .31 Pointer ?
iny yes, skip 2 bytes
iny
bra .32
.31 tya
sec
adc (ZPFrameInPtr),y Skip LEN+1 bytes
@ -523,7 +522,7 @@ DNS.POLL lda hDNSSocket
bne .5
jsr DNS.UPDATE.BY.ID
.9 jmp FRM.DiscardIn
*--------------------------------------
DNS.NextCache lda ZPCachePtr
@ -532,7 +531,7 @@ DNS.NextCache lda ZPCachePtr
sta ZPCachePtr
bcc .8
inc ZPCachePtr+1
.8 rts
*--------------------------------------
MAN

View File

@ -1,6 +1,5 @@
NEW
AUTO 3,1
.LIST OFF
*--------------------------------------
FRM.GetTargetSKT.TCPUDP
ldy #S.TCPUDP.SRCPORT
@ -97,7 +96,7 @@ FRM.NewIP stx .8+1
ldy #S.ETH.EII.TYPE
lda /S.ETH.EII.TYPE.IP
sta (ZPFrameOutPtr),y
sta (ZPFrameOutPtr),y
iny
lda #S.ETH.EII.TYPE.IP
sta (ZPFrameOutPtr),y
@ -109,7 +108,7 @@ FRM.NewIP stx .8+1
* lda #$0
* sta (ZPFrameOutPtr),y
* ldy #S.IP.FRAGMENT.FLAGS
* ldy #S.IP.FRAGMENT.FLAGS
* sta (ZPFrameOutPtr),y
* iny
* sta (ZPFrameOutPtr),y
@ -132,7 +131,7 @@ FRM.NewIP stx .8+1
ldy #S.IP.TTL
lda #K.IP.TTL
sta (ZPFrameOutPtr),y
.7 ldy #S.IP.PROTOCOL
.8 lda #$ff
@ -147,7 +146,7 @@ FRM.SendIP php
ldy #S.IP.SRC+3 for proper UDP/TCP CRC calculation
.1 lda IPCFG+S.IPCFG.IP,x
sta (ZPFrameOutPtr),y
sta (ZPFrameOutPtr),y
dey
dex
bpl .1
@ -236,7 +235,7 @@ FRM.SendIP php
jsr IP.SetDestMAC
bcs FRM.Queue
.6 jsr FRM.Send
bcs FRM.Queue
@ -256,7 +255,7 @@ FRM.Queue plp
inx
cpx #K.FRMQUEUE.SIZE
bne .1
ldx #0
.1 cpx FRM.QUEUE.Tail
@ -309,9 +308,9 @@ FRM.Retry ldx FRM.QUEUE.Tail
.3 ldx FRM.QUEUE.Tail
sta FRM.QUEUE.State,x save error...
dec FRM.QUEUE.Retry,x
dec FRM.QUEUE.Retry,x
bne .8 exit....until next run!
.4 ldx FRM.QUEUE.Tail
lda FRM.QUEUE.hMem,x Success,or max retry, discard entry
inx
@ -331,7 +330,7 @@ FRM.Send ldx #3
sta IOCTL+S.IOCTL.BUFPTR,x
dex
bpl .1
FRM.Send.IOCTL >PUSHB IPCFG+S.NETCFG.DevID
>PUSHBI IOCTL.WRITE
>PUSHW L.IOCTL

View File

@ -1,13 +1,12 @@
NEW
AUTO 3,1
.LIST OFF
*--------------------------------------
HST.GetByName >PULLW ZPPtrDNS
>PULLW ZPPtrIP
>PUSHW ZPPtrDNS
>PUSHW L.HST.SScanF
ldx #0
.1 txa

View File

@ -1,6 +1,5 @@
NEW
AUTO 3,1
.LIST OFF
*--------------------------------------
ICMP.IN ldy #S.ICMP.TYPE
lda (ZPFrameInPtr),y
@ -30,18 +29,18 @@ ICMP.IN.ECHOREQ ldy #S.IP.DST+3
* stz hFrameIn DO NOT DISCARD this frame,it is SOURCE frame!!!
sta hFrameOut
ldx #3
ldx #3
.2 lda ZPFrameInPtr,x
sta ZPFrameOutPtr,x
dex
bpl .2
ldx #3
ldx #3
ldy #S.IP.DST+3
.3 lda ARP.TmpCache+S.ARPCACHE.IP,x
sta (ZPFrameOutPtr),y
sta (ZPFrameOutPtr),y
dey
dex
bpl .3

View File

@ -1,6 +1,5 @@
NEW
AUTO 3,1
.LIST OFF
*--------------------------------------
IP.IN ldy #S.IP.PROTOCOL
lda (ZPFrameInPtr),y
@ -202,7 +201,7 @@ IP.SetDestMAC ldy #S.IP.DST
dex
bpl .5
bra .8
.6 ldx #3 Not Same network, query ARP for GW
.7 lda IPCFG+S.IPCFG.GW,x

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
@ -98,7 +101,7 @@ SKT.Socket.FindFree
.8 ldy #$FF SELF MODIFIED
sta SKT.TABLE,y
* clc
rts
*/--------------------------------------
@ -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
@ -338,7 +335,7 @@ SKT.shutdown pha
lda (ZPPtrSKT),y
cmp #S.SOCKET.TCP.S.TIMEWT
bcs .7
pla
jsr SKT.GetTCB
@ -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
@ -837,7 +845,7 @@ SKT.Recv clc
jsr SKT.GetFromQueue SEQPKT
bcc .1
jsr SKT.CheckTCP
bcs .91
@ -845,10 +853,10 @@ SKT.Recv clc
plp
sec
rts
.10 jsr SKT.GetFromQueue
bcs .90
.1 plp if CS, RecvFrom
bcc .9 CC, Recv : Exit with CC and A=hFrame
@ -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
@ -266,9 +268,8 @@ TCP.IN.JMP.LASTACK
lda (ZPFrameInPtr),y
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

@ -128,17 +128,17 @@ CS.RUN lda hSocket
bcs .9
sta hMount
>PUSHW L.MSG.MOUNTED
lda #2
>SYSCALL ArgV
>PUSHYA
lda #3
>SYSCALL ArgV
>PUSHYA
>PUSHBI 4
>SYSCALL PrintF
@ -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
@ -259,7 +259,7 @@ CS.RUN.Connect >PUSHBI 0 no protocol
bne .1
.9 pha
>PUSHW L.MSG.NOCONN
lda #1
>SYSCALL ArgV

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

@ -109,7 +109,7 @@ CS.RUN >LDYA L.MSG.TCPWAIT
lda #TIMEOUT.MAX
sta TimeOut
.1 >SLEEP
>LIBCALL hLIBTCPIP,LIBTCPIP.GETCFG is TCPIP loaded ?
bcs .99
@ -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
@ -141,7 +142,7 @@ CS.RUN >LDYA L.MSG.TCPWAIT
>SYSCALL PutS
CS.RUN.SYN
lda #E.SYN
sec
sec
CS.RUN.RTS rts
*--------------------------------------
CS.RUN.INIT ldx #3
@ -156,32 +157,32 @@ CS.RUN.INIT ldx #3
>LDYAI 256
>SYSCALL GetMem
bcs CS.RUN.RTS
>STYA ZPLinePtr
stx hLineBuf
>PUSHW L.MSG.INITCONF
>PUSHW L.ETCHTTPDCONF
>PUSHBI 2
>SYSCALL PrintF
bcs CS.RUN.RTS
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
lda hSrvSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.Listen
bcs CS.RUN.ERR
@ -189,8 +190,8 @@ CS.RUN.INIT ldx #3
>PUSHW L.MSG.INITOK
>PUSHW SA.LOCAL+S.SOCKADDR.PORT
>PUSHW ZPRootDirPtr
>PUSHBI 4
>PUSHBI 4
>SYSCALL PrintF
*--------------------------------------
CS.RUN.LOOP >SLEEP
@ -201,7 +202,7 @@ CS.RUN.LOOP >SLEEP
CS.RUN.ERR >LDYA L.MSG.SKTERR
>SYSCALL PutS
lda #E.SYN
sec
sec
rts
*--------------------------------------
CS.RUN.CONF >PUSHW L.ETCHTTPDCONF
@ -221,53 +222,53 @@ CS.RUN.CONF >PUSHW L.ETCHTTPDCONF
tya
beq .1
lda (ZPLinePtr)
cmp #'#'
beq .1
>LDYA L.KEYWORDS.CONF
>STYA ZPPtr1
ldx #0
.2 ldy #0
.3 lda (ZPPtr1),y
cmp (ZPLinePtr),y
bne .4
iny
cmp #C.SPACE
bne .3
jsr CS.RUN.CONF.JMP
bcc .1
bra .97
.4 inx
inx
ldy #0
.5 iny
lda (ZPPtr1),y
cmp #C.SPACE
bne .5
tya
sec
adc ZPPtr1
sta ZPPtr1
bcc .6
inc ZPPtr1+1
.6 lda (ZPPtr1)
bne .2
.97 lda #E.SYN
.98 pha
jsr .8
pla
@ -286,13 +287,13 @@ CS.RUN.CONF.JMP tya
lda #0
adc ZPLinePtr+1
sta ZPPtr1+1
jmp (J.KEYWORDS.CONF,x)
jmp (J.KEYWORDS.CONF,x)
CS.RUN.CONF.SERVERNAME
>SYSCALL StrDup
bcs .9
>STYA ZPSrvNamePtr
stx hSrvName
@ -309,7 +310,7 @@ CS.RUN.CONF.DOCUMENTROOT
>PUSHWI 0 Allocate
>SYSCALL RealPath
bcs .9
>STYA ZPRootDirPtr
stx hRootdir
@ -318,7 +319,7 @@ CS.RUN.CONF.DOCUMENTROOT
CS.RUN.SERVER lda hSrvSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.Accept
bcs .8
sta CLN.hSocket
>SYSCALL GetMemPtr
>STYA ZPSktPtr
@ -344,10 +345,10 @@ CS.RUN.SERVER lda hSrvSocket
>PUSHB CLN.hSocket
>PUSHBI 1
>SYSCALL PrintF
lda CLN.hSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.Shutdown
.8 clc
.9
CS.RUN.SERVER.RTS
@ -356,10 +357,10 @@ CS.RUN.SERVER.RTS
CS.RUN.CLIENT >LDYAI 1024
>SYSCALL GetMem
bcs CS.RUN.SERVER.RTS
>STYA ZPRepPtr
stx REP.hBuf
.10 >STZ.G REQ.FullPath
stz REQ.hReq
stz REQ.KeepAlive
@ -380,84 +381,84 @@ CS.RUN.CLIENT >LDYAI 1024
.3 jsr CS.RUN.REQ.GetLine
bcs .4
>LDYA ZPLinePtr
>STYA ZPPtr2
>LDYA L.KEYWORDS.REQ
jsr CS.RUN.GET.KW
bcs .3
jsr CS.RUN.REQ.JMP
bcc .3
bcs .98
.4 lda REQ.hReq
>SYSCALL FreeMem
stz REQ.hReq
>LDA.G REQ.FullPath
beq .9
jsr CS.RUN.OpenFile
bcs .9
jsr CS.RUN.SendFile
bcs .99
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
bpl .99
jmp .10
.98 lda REQ.hReq
beq .99
>SYSCALL FreeMem
.99 lda REP.hBuf
>SYSCALL FreeMem
rts
*--------------------------------------
CS.RUN.REQ.GetReq
sta REQ.hReq
>SYSCALL GetMemPtr
>STYA ZPRequestPtr
>PUSHW L.MSG.REQ
>PUSHB REQ.hReq
>PUSHB CLN.hSocket
>PUSHBI 2
>SYSCALL PrintF
ldy #S.IP.TOTAL.LENGTH+1
lda (ZPRequestPtr),y
sec
sbc #S.TCP-S.IP
eor #$ff
sta ZPnRequestLen
dey
lda (ZPRequestPtr),y
sbc /S.TCP-S.IP
eor #$ff
sta ZPnRequestLen+1
lda ZPRequestPtr
clc
adc #S.TCP
sta ZPRequestPtr
bcc .8
inc ZPRequestPtr+1
.8 rts
*--------------------------------------
@ -473,15 +474,15 @@ CS.RUN.REQ.GetLine
inc ZPRequestPtr
bne .21
inc ZPRequestPtr+1
.21 cmp #C.CR
bne .4
inc ZPnRequestLen
bne .3
inc ZPnRequestLen+1
beq .9
.3 lda (ZPRequestPtr)
inc ZPRequestPtr
bne .31
@ -493,11 +494,11 @@ CS.RUN.REQ.GetLine
sta (ZPLinePtr),y Y,A = StrLen
clc
rts
.4 sta (ZPLinePtr),y
iny
bra .1
.9 sec
rts
*--------------------------------------
@ -506,58 +507,58 @@ CS.RUN.OpenFile >PUSHW L.MSG.FILE
>PUSHEA.G REQ.FullPath
>PUSHBI 3
>SYSCALL PrintF
>PUSHEA.G REQ.FullPath
>PUSHBI O.RDONLY
>PUSHBI 0 type
>PUSHWZ Aux type
>SYSCALL FOpen
bcs .9
stx REQ.hFile
>PUSHA
>PUSHEA.G REQ.Stat
>SYSCALL FStat
>LEA.G REQ.FullPath
>STYA ZPPtr2
ldx #$ff
ldy #$ff
.1 iny
lda (ZPPtr2),y
beq .2
cmp #'.'
bne .1
tya
tax
bra .1
.2 txa
bpl .3
lda #MIME.DEFAULT.ID
bra .8
.3 sec
adc ZPPtr2
sta ZPPtr2
bcc .4
inc ZPPtr2+1
.4 >LDYA L.MIME.TYPES
jsr CS.RUN.GET.KW
txa
.8 sta REQ.MimeType
clc
.9 rts
*--------------------------------------
@ -568,28 +569,28 @@ CS.RUN.SendFile >PUSHW ZPRepPtr
>PUSHW T.MIME,x
>PUSHL.G REQ.Stat+S.STAT.SIZE
>PUSHBI 6
>SYSCALL SPrintF
bcs .9
jsr CS.RUN.SendBuf Y,A = car count
.1 >PUSHB REQ.hFile
>PUSHW ZPRepPtr
>PUSHWI 1024
>SYSCALL FRead
bcs .8
jsr CS.RUN.SendBuf
bcs .9
bra .1
.8 cmp #MLI.E.EOF
bne .9
clc
.9 php
pha
lda REQ.hFile
@ -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
*--------------------------------------
@ -610,32 +613,32 @@ CS.RUN.REQ.GET ldy #0
.1 iny
lda (ZPPtr2),y
eor #C.SPACE
bne .1
sta (ZPPtr2),y
lda (ZPPtr2)
cmp #'/'
bne .4
>PUSHEA.G REQ.FullPath
>PUSHW ZPRootDirPtr
>SYSCALL StrCpy
>PUSHEA.G REQ.FullPath
ldy #1
lda (ZPPtr2),y
bne .2
>LDYA L.INDEX.HTML
bra .3
.2 >LDYA ZPPtr2
.3 >PUSHYA
>SYSCALL StrCat
rts
@ -649,11 +652,11 @@ CS.RUN.REQ.Connection
lda (ZPPtr2)
eor #'k'
beq .1
lda #$ff
.1 sta REQ.KeepAlive
.1 sta REQ.KeepAlive
clc
rts
@ -663,18 +666,18 @@ CS.RUN.GET.KW >STYA ZPPtr1
ldx #0
.2 ldy #$ff
.3 iny
lda (ZPPtr1),y
cmp (ZPPtr2),y
bne .4
cmp #0
beq .33
cmp #C.SPACE
bne .3
.33 tya
sec
adc ZPPtr2
@ -684,23 +687,23 @@ CS.RUN.GET.KW >STYA ZPPtr1
.8 clc
rts
.4 inx
inx
ldy #0
.5 iny
lda (ZPPtr1),y
bne .5
tya
sec
adc ZPPtr1
sta ZPPtr1
bcc .6
inc ZPPtr1+1
.6 lda (ZPPtr1)
bne .2
@ -718,12 +721,12 @@ CS.DOEVENT lda (pEvent)
*--------------------------------------
CS.QUIT lda hSrvSocket
beq .1
>LIBCALL hLIBTCPIP,LIBTCPIP.Shutdown
.1 lda hLineBuf
beq .2
>SYSCALL FreeMem

View File

@ -100,7 +100,7 @@ CS.RUN lda #TIMEOUT.MAX
>LDYA L.MSG.TCPIPERR
>SYSCALL PutS
pla
sec
sec
.9 rts
CS.RUN.INIT ldx #3
@ -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
@ -146,7 +146,7 @@ CS.RUN.PORTOK >PUSHBI 0 no protocol
pha
jsr CS.RUN.CLIENT
pla
bcc .2
>LIBCALL hLIBTCPIP,LIBTCPIP.Shutdown
bra .2
@ -155,7 +155,7 @@ CS.RUN.PORTOK >PUSHBI 0 no protocol
>LDYA L.MSG.SKTERR
>SYSCALL PutS
pla
sec
sec
rts
*--------------------------------------
CS.RUN.CLIENT >SLEEP give some time for TCPIP SYN/ACK

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,22 +57,17 @@ 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
ldy #$ff
@ -87,9 +82,9 @@ K.GetDevByName >STYA ZPPtr1 requested dev name
clc
rts
.89 sec
.89 sec
K.GetDev.9 rts
*/--------------------------------------
* # GetDevStatus
@ -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
@ -147,7 +173,7 @@ K.MKDev jsr SHARED.PullP2P1 ptr2=name,tr1=fd
bne .10
bra .9
.11 stx IO.hDevNod
ldy #$ff
@ -257,9 +283,9 @@ K.IOCTL ldy #3 hDev
.9 >RET 4
*--------------------------------------
DEV.GetPFD sta IO.hDevNod
tax
lsr
bcs .1
@ -324,12 +350,12 @@ DEV.MkFD.T .DA #S.FD.T.REG,#S.FD.T.DIR,#S.FD.T.PIPE
DEV.Destroy ldx IO.hDevNod
lda Nod.Table.hName-2,x
beq .1
stz Nod.Table.hName-2,x
jsr K.FreeMem
ldx IO.hDevNod
.1 lda Nod.Table.hFD-2,x
stz Nod.Table.hFD-2,x
jmp K.FreeMem

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