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 # ARP.Clear
Clear ARP Cache Clear ARP Cache
**In:** **In:**
## RETURN VALUE ## RETURN VALUE
# ARP.Query # ARP.Query
Query ARP Cache and returns HW address Query ARP Cache and returns HW address
@ -17,7 +17,7 @@ Copyright 2015 - 2020, Remy Gibert and the A2osX contributors.
## RETURN VALUE ## RETURN VALUE
CC: hit: MAC filled CC: hit: MAC filled
CS: missed CS: missed
# ARP.Add # ARP.Add
Add a static ARP cache record Add a static ARP cache record
@ -34,19 +34,19 @@ Copyright 2015 - 2020, Remy Gibert and the A2osX contributors.
# DNS.Clear # DNS.Clear
Clear DNS Cache Clear DNS Cache
**In:** **In:**
## RETURN VALUE ## RETURN VALUE
# DNS.Query # DNS.Query
Query DNS for specified host Query DNS for specified host
**In:** **In:**
PUSHW = PTR to IP to fill with cached data PUSHW = PTR to IP to fill with cached data
* PUSHW = hostname PTR to PSTR * PUSHW = hostname PTR to PSTR
## RETURN VALUE ## RETURN VALUE
CC: hit: IP filled with address CC: hit: IP filled with address
CS: missed CS: missed
# DNS.Add # DNS.Add
Add a static DNS record Add a static DNS record
@ -69,8 +69,8 @@ Create a new socket
## ASM ## ASM
**In:** **In:**
`>PUSHB type`
`>PUSHB protocol` `>PUSHB protocol`
`lda type`
`>LIBCALL hLIBTCPIP,LIBTCPIP.socket` `>LIBCALL hLIBTCPIP,LIBTCPIP.socket`
## RETURN VALUE ## RETURN VALUE
@ -85,8 +85,8 @@ bind a name to a socket
## ASM ## ASM
**In:** **In:**
`>PUSHB fd`
`>PUSHW addr` `>PUSHW addr`
`lda fd`
`>LIBCALL hLIBTCPIP,LIBTCPIP.socket` `>LIBCALL hLIBTCPIP,LIBTCPIP.socket`
## RETURN VALUE ## RETURN VALUE
@ -101,8 +101,8 @@ Initiate a connection on a socket
## ASM ## ASM
**In:** **In:**
`>PUSHB fd`
`>PUSHW addr` `>PUSHW addr`
`lda fd`
`>LIBCALL hLIBTCPIP,LIBTCPIP.socket` `>LIBCALL hLIBTCPIP,LIBTCPIP.socket`
## RETURN VALUE ## RETURN VALUE
@ -157,9 +157,9 @@ Close socket
## ASM ## ASM
**In:** **In:**
`>PUSHWI count` `>PUSHB fd`
`>PUSHW buf` `>PUSHW buf`
`lda fd` `>PUSHW count`
`>LIBCALL hLIBTCPIP,LIBTCPIP.read` `>LIBCALL hLIBTCPIP,LIBTCPIP.read`
## RETURN VALUE ## RETURN VALUE
@ -173,26 +173,37 @@ CS: A = EC
## ASM ## ASM
**In:** **In:**
`>PUSHWI count` `>PUSHB fd`
`>PUSHW buf` `>PUSHW buf`
`lda fd` `>PUSHW count`
`>LIBCALL hLIBTCPIP,LIBTCPIP.write` `>LIBCALL hLIBTCPIP,LIBTCPIP.write`
## RETURN VALUE ## RETURN VALUE
CC: Y,A = bytes written CC: Y,A = bytes written
CS: A = EC CS: A = EC
# Recv (RAW,DGRAM,SEQPKT)
# RecvFrom (RAW,DGRAM,SEQPKT) # RecvFrom (RAW,DGRAM,SEQPKT)
## C ## C
`hMem recv(hFD fd);`
`hMem recvfrom(hFD fd, struct sockaddr *addr);` `hMem recvfrom(hFD fd, struct sockaddr *addr);`
## ASM ## ASM
**In:** **In:**
`>PUSHB fd`
`>PUSHW addr` (RecvFrom) `>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` `lda fd`
`>LIBCALL hLIBTCPIP,LIBTCPIP.Recv` `>LIBCALL hLIBTCPIP,LIBTCPIP.Recv`
@ -200,20 +211,33 @@ CS: A = EC
CC: A = hMem CC: A = hMem
CS: A = EC CS: A = EC
# Send (RAW,DGRAM,SEQPKT)
# SendTo (RAW,DGRAM,SEQPKT) # SendTo (RAW,DGRAM,SEQPKT)
## C ## 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);` `int skt.sendto(hFD fd, const void *buf, int count, const struct sockaddr *addr);`
## ASM ## ASM
**In:** **In:**
`>PUSHW addr` (SendTo) `>PUSHB fd`
`>PUSHWI count`
`>PUSHW buf` `>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` `>LIBCALL hLIBTCPIP,LIBTCPIP.send`
## RETURN VALUE ## RETURN VALUE
@ -241,8 +265,8 @@ Set Socket Options
## ASM ## ASM
**In:** **In:**
`>PUSHBI opts` `>PUSHB fd`
`lda fd` `>PUSHB opts`
`>LIBCALL hLIBTCPIP,LIBTCPIP.SetSockOpt` `>LIBCALL hLIBTCPIP,LIBTCPIP.SetSockOpt`
## RETURN VALUE ## RETURN VALUE

Binary file not shown.

View File

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

View File

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

View File

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

View File

@ -588,8 +588,7 @@ KW.NEGATIVE inc pStack
*-------------------------------------- *--------------------------------------
KW.ZERO clc KW.ZERO clc
ldy #1 >PULLA
lda (pStack),y
ora (pStack) ora (pStack)
bne .9 bne .9
@ -598,7 +597,6 @@ KW.ZERO clc
.9 lda #0 .9 lda #0
ror ror
inc pStack
sta (pStack) sta (pStack)
* clc * clc
@ -703,7 +701,7 @@ KW.PRINT >LDYAI 256
sta (ZPPtr1),y sta (ZPPtr1),y
eor #'" eor #'"
bne .1 bne .1
sec sec
.2 sta (ZPPtr1),y .2 sta (ZPPtr1),y

View File

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

View File

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

View File

@ -1,6 +1,5 @@
NEW NEW
AUTO 3,1 AUTO 3,1
.LIST OFF
*-------------------------------------- *--------------------------------------
DHCP.INIT lda IPCFG+S.NETCFG.STATUS DHCP.INIT lda IPCFG+S.NETCFG.STATUS
and #S.IPCFG.STATUS.OK and #S.IPCFG.STATUS.OK
@ -9,7 +8,7 @@ DHCP.INIT lda IPCFG+S.NETCFG.STATUS
stz IPCFG+S.NETCFG.STATUS stz IPCFG+S.NETCFG.STATUS
ldx #3 ldx #3
.1 eor A2osX.TIMER16,x .1 eor A2osX.TIMER16,x
sta DHCP.DISC.XID,x sta DHCP.DISC.XID,x
sta DHCP.REQ.XID,x sta DHCP.REQ.XID,x
@ -34,42 +33,43 @@ DHCP.INIT lda IPCFG+S.NETCFG.STATUS
sec sec
rts rts
*-------------------------------------- *--------------------------------------
DHCP.RUN >PUSHBI 0 no protocol DHCP.RUN >PUSHBI S.SOCKET.T.DGRAM
lda #S.SOCKET.T.DGRAM >PUSHBI 0 no protocol
>LIBCALL hLIBTCPIP,LIBTCPIP.Socket >LIBCALL hLIBTCPIP,LIBTCPIP.Socket
bcc .1 bcc .1
.9 jmp DHCP.RUN.KO .9 jmp DHCP.RUN.KO
.1 sta hSocket .1 sta hSocket
pha >PUSHA
>PUSHW L.SA.LOCAL >PUSHW L.SA.LOCAL
pla
>LIBCALL hLIBTCPIP,LIBTCPIP.Bind >LIBCALL hLIBTCPIP,LIBTCPIP.Bind
bcs .9 bcs .9
>SLEEP >SLEEP
>PUSHWI S.SOCKET.O.BROADCAST >PUSHB hSocket
lda hSocket >PUSHBI S.SOCKET.O.BROADCAST
>LIBCALL hLIBTCPIP,LIBTCPIP.setsockopt >LIBCALL hLIBTCPIP,LIBTCPIP.setsockopt
>PUSHB hSocket
>PUSHW L.SA.REMOTE >PUSHW L.SA.REMOTE
lda hSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.Connect >LIBCALL hLIBTCPIP,LIBTCPIP.Connect
bcs .9 bcs .9
>LDYA L.MSG.DHCP.CFG1 >LDYA L.MSG.DHCP.CFG1
>SYSCALL PutS >SYSCALL PutS
>SLEEP >SLEEP
DHCP.RUN.SDISC >PUSHW L.SA.DEST DHCP.RUN.SDISC >PUSHB hSocket
>PUSHWI DHCP.DISC.LEN
>PUSHW L.DHCP.DISC >PUSHW L.DHCP.DISC
lda hSocket >PUSHWI DHCP.DISC.LEN
>PUSHW L.SA.DEST
>LIBCALL hLIBTCPIP,LIBTCPIP.SendTo >LIBCALL hLIBTCPIP,LIBTCPIP.SendTo
bcc .1 bcc .1
jmp DHCP.RUN.KO jmp DHCP.RUN.KO
.1 lda #S.IPCFG.STATUS.SDISC .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 DHCP.RUN.ROFFER jsr DHCP.RUN.SKT.RECV
bcc .1 bcc .1
lda #1 lda #1
jmp DHCP.RUN.KO jmp DHCP.RUN.KO
.1 jsr CheckDHCPOffer .1 jsr CheckDHCPOffer
bcs DHCP.RUN.ROFFER bcs DHCP.RUN.ROFFER
lda #S.IPCFG.STATUS.ROFFER lda #S.IPCFG.STATUS.ROFFER
sta IPCFG sta IPCFG
DHCP.RUN.SREQ >PUSHW L.MSG.DHCP.CFG2 DHCP.RUN.SREQ >PUSHW L.MSG.DHCP.CFG2
ldx #0 ldx #0
@ -97,19 +97,19 @@ DHCP.RUN.SREQ >PUSHW L.MSG.DHCP.CFG2
>PUSHBI 4 >PUSHBI 4
>SYSCALL PrintF >SYSCALL PrintF
>PUSHW L.SA.DEST >PUSHB hSocket
>PUSHWI DHCP.REQ.LEN
>PUSHW L.DHCP.REQ >PUSHW L.DHCP.REQ
lda hSocket >PUSHWI DHCP.REQ.LEN
>PUSHW L.SA.DEST
>LIBCALL hLIBTCPIP,LIBTCPIP.SendTo >LIBCALL hLIBTCPIP,LIBTCPIP.SendTo
bcs DHCP.RUN.KO bcs DHCP.RUN.KO
lda #S.IPCFG.STATUS.SREQ lda #S.IPCFG.STATUS.SREQ
sta IPCFG sta IPCFG
DHCP.RUN.RACK jsr DHCP.RUN.SKT.RECV DHCP.RUN.RACK jsr DHCP.RUN.SKT.RECV
bcc .1 bcc .1
lda #2 lda #2
bra DHCP.RUN.KO bra DHCP.RUN.KO
@ -122,7 +122,7 @@ DHCP.RUN.OK lda #S.IPCFG.STATUS.OK
>LIBCALL hLIBTCPIP,LIBTCPIP.SETCFG >LIBCALL hLIBTCPIP,LIBTCPIP.SETCFG
>PUSHW L.MSG.DHCP.OK >PUSHW L.MSG.DHCP.OK
ldx #0 ldx #0
.1 lda IPCFG+S.IPCFG.IP,x .1 lda IPCFG+S.IPCFG.IP,x
@ -130,7 +130,7 @@ DHCP.RUN.OK lda #S.IPCFG.STATUS.OK
inx inx
cpx #4 cpx #4
bne .1 bne .1
ldx #0 ldx #0
.2 lda IPCFG+S.IPCFG.MASK,x .2 lda IPCFG+S.IPCFG.MASK,x
@ -138,7 +138,7 @@ DHCP.RUN.OK lda #S.IPCFG.STATUS.OK
inx inx
cpx #4 cpx #4
bne .2 bne .2
>PUSHBI 8 >PUSHBI 8
>SYSCALL PrintF >SYSCALL PrintF
@ -162,20 +162,20 @@ DHCP.RUN.SKT.RECV
sta TimeOut sta TimeOut
.1 >SLEEP .1 >SLEEP
lda hSocket lda hSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.Recv >LIBCALL hLIBTCPIP,LIBTCPIP.Recv
bcc .8 bcc .8
cmp #E.NODATA cmp #E.NODATA
bne .9 bne .9
lda TimeOut lda TimeOut
bne .1 bne .1
.9 sec .9 sec
rts rts
.8 sta hFrame .8 sta hFrame
>SYSCALL GetMemPtr >SYSCALL GetMemPtr
@ -194,7 +194,7 @@ CheckDHCPOffer jsr CheckDHCPXID
bcs .9 bcs .9
lda ZPFrameBase lda ZPFrameBase
clc clc
adc #S.DHCP.OPTIONS adc #S.DHCP.OPTIONS
sta ZPFramePtr sta ZPFramePtr
@ -322,7 +322,7 @@ GetDHCPOption cmp #S.DHCP.OPTIONS.MASK
sta IPCFG+S.IPCFG.DOMAIN-1,y sta IPCFG+S.IPCFG.DOMAIN-1,y
dex dex
bne .7 bne .7
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
GetDHCPOption.CopyIP GetDHCPOption.CopyIP
@ -350,7 +350,7 @@ CheckDHCPAck jsr CheckDHCPXID
bcs .9 bcs .9
lda ZPFrameBase lda ZPFrameBase
clc clc
adc #S.DHCP.OPTIONS adc #S.DHCP.OPTIONS
sta ZPFramePtr sta ZPFramePtr

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -41,7 +41,7 @@ CS.START cld
*-------------------------------------- *--------------------------------------
.1 .DA CS.INIT .1 .DA CS.INIT
.DA CS.RUN .DA CS.RUN
.DA CS.DOEVENT .DA CS.DOEVENT
.DA CS.QUIT .DA CS.QUIT
L.LIBTCPIP .DA LIBTCPIP L.LIBTCPIP .DA LIBTCPIP
L.SA.LOCAL .DA SA.LOCAL L.SA.LOCAL .DA SA.LOCAL
@ -69,7 +69,7 @@ CS.RUN >LIBCALL hLIBTCPIP,LIBTCPIP.GETCFG is TCPIP loaded ?
>STYA ZPIPCfgPtr >STYA ZPIPCfgPtr
lda (ZPIPCfgPtr) Configured ? lda (ZPIPCfgPtr) Configured ?
bmi CS.RUN.IPOK bmi CS.RUN.IPOK
>LDYA L.MSG.IPKO >LDYA L.MSG.IPKO
>SYSCALL PutS >SYSCALL PutS
lda #E.SYN lda #E.SYN
@ -92,7 +92,7 @@ CS.RUN.IPOK ldy #S.PS.ARGC
sta TimeOut sta TimeOut
.2 >SLEEP .2 >SLEEP
>PUSHW L.SA.REMOTE.AD >PUSHW L.SA.REMOTE.AD
lda #1 lda #1
>SYSCALL ArgV >SYSCALL ArgV
@ -135,19 +135,19 @@ CS.RUN.PORTOK >PUSHW L.MSG.HOSTOK
lda #1 lda #1
>SYSCALL ArgV >SYSCALL ArgV
>PUSHYA >PUSHYA
>PUSHBI 8 >PUSHBI 8
>SYSCALL PrintF >SYSCALL PrintF
CS.RUN.OPENSKT >PUSHBI 0 no protocol CS.RUN.OPENSKT >PUSHBI S.SOCKET.T.STREAM
lda #S.SOCKET.T.STREAM >PUSHBI 0 no protocol
>LIBCALL hLIBTCPIP,LIBTCPIP.Socket >LIBCALL hLIBTCPIP,LIBTCPIP.Socket
bcs .9 bcs .9
sta hSocket sta hSocket
>PUSHA
>PUSHW L.SA.LOCAL >PUSHW L.SA.LOCAL
lda hSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.Bind >LIBCALL hLIBTCPIP,LIBTCPIP.Bind
bcc .2 bcc .2
@ -162,29 +162,29 @@ CS.RUN.OPENSKT >PUSHBI 0 no protocol
sta TimeOut sta TimeOut
.3 >SLEEP .3 >SLEEP
>PUSHB hSocket
>PUSHW L.SA.REMOTE >PUSHW L.SA.REMOTE
lda hSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.Connect >LIBCALL hLIBTCPIP,LIBTCPIP.Connect
bcc .4 bcc .4
cmp #ERR.SKT.NOCONN cmp #ERR.SKT.NOCONN
bne .9 bne .9
lda TimeOut lda TimeOut
bne .3 bne .3
lda #ERR.SKT.NOCONN lda #ERR.SKT.NOCONN
bra .9 bra .9
.4 >PUSHW L.MSG.SKTOK .4 >PUSHW L.MSG.SKTOK
>PUSHBI 0 >PUSHBI 0
>SYSCALL PrintF >SYSCALL PrintF
>LDYAI BUFSIZE >LDYAI BUFSIZE
>SYSCALL GetMem >SYSCALL GetMem
bcs .99 bcs .99
>STYA ZPBufPtr >STYA ZPBufPtr
stx hBuf stx hBuf
@ -197,23 +197,20 @@ CS.RUN.LOOP >SLEEP
tay tay
bne .2 EOF, no char bne .2 EOF, no char
>PUSHWI BUFSIZE >PUSHB hSocket
>PUSHW ZPBufPtr >PUSHW ZPBufPtr
lda hSocket >PUSHWI BUFSIZE
>LIBCALL hLIBTCPIP,LIBTCPIP.Read >LIBCALL hLIBTCPIP,LIBTCPIP.Read
.98 bcs .99 .98 bcs .99
pha >STYA ZPBufLen
phy
ldy #S.PS.hStdOut ldy #S.PS.hStdOut
lda (pPS),y lda (pPS),y
>PUSHA >PUSHA
>PUSHW ZPBufPtr >PUSHW ZPBufPtr
ply >PUSHW ZPBufLen
pla
>PUSHYA len
>SYSCALL FWrite >SYSCALL FWrite
bcs .11 bcs .11
@ -229,7 +226,7 @@ CS.RUN.LOOP >SLEEP
lda (pPS),y lda (pPS),y
>PUSHA >PUSHA
>PUSHW ZPBufPtr >PUSHW ZPBufPtr
>PUSHWI BUFSIZE >PUSHWI BUFSIZE
>SYSCALL FRead >SYSCALL FRead
.11 bcc .3 .11 bcc .3
@ -237,13 +234,14 @@ CS.RUN.LOOP >SLEEP
.99 bra CS.RUN.SKTERR .99 bra CS.RUN.SKTERR
.3 >STYA ZPBufLen .3 >STYA ZPBufLen
lda (ZPBufPtr) lda (ZPBufPtr)
cmp #$14 Ctrl-T cmp #$14 Ctrl-T
beq CS.RUN.USER beq CS.RUN.USER
>PUSHW ZPBufLen >PUSHB hSocket
>PUSHW ZPBufPtr >PUSHW ZPBufPtr
lda hSocket >PUSHW ZPBufLen
>LIBCALL hLIBTCPIP,LIBTCPIP.Write >LIBCALL hLIBTCPIP,LIBTCPIP.Write
.9 bcs CS.RUN.SKTERR .9 bcs CS.RUN.SKTERR

View File

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

View File

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

View File

@ -128,7 +128,7 @@ NEW
.EM .EM
*-------------------------------------- *--------------------------------------
* FPU Entry Point * FPU Entry Point
*-------------------------------------- *-------------------------------------- uint16
FPU.wMUL .EQ 0 FPU.wMUL .EQ 0
FPU.wDIV .EQ 2 FPU.wDIV .EQ 2
FPU.wMOD .EQ 4 FPU.wMOD .EQ 4
@ -152,7 +152,7 @@ FPU.wxOR .EQ 30
FPU.wLAND .EQ 32 FPU.wLAND .EQ 32
FPU.wLOR .EQ 34 FPU.wLOR .EQ 34
*-------------------------------------- *-------------------------------------- int16
FPU.iMUL .EQ 36 FPU.iMUL .EQ 36
FPU.iDIV .EQ 38 FPU.iDIV .EQ 38
FPU.iMOD .EQ 40 FPU.iMOD .EQ 40
@ -176,7 +176,7 @@ FPU.iXOR .EQ 66
FPU.iLAND .EQ 68 FPU.iLAND .EQ 68
FPU.iLOR .EQ 70 FPU.iLOR .EQ 70
*-------------------------------------- *-------------------------------------- uint32
FPU.uMUL .EQ 72 FPU.uMUL .EQ 72
FPU.uDIV .EQ 74 FPU.uDIV .EQ 74
FPU.uMOD .EQ 76 FPU.uMOD .EQ 76
@ -200,7 +200,7 @@ FPU.uXOR .EQ 102
FPU.uLAND .EQ 104 FPU.uLAND .EQ 104
FPU.uLOR .EQ 106 FPU.uLOR .EQ 106
*-------------------------------------- *-------------------------------------- int32
FPU.lMUL .EQ 108 FPU.lMUL .EQ 108
FPU.lDIV .EQ 110 FPU.lDIV .EQ 110
FPU.lMOD .EQ 112 FPU.lMOD .EQ 112
@ -224,7 +224,7 @@ FPU.lXOR .EQ 138
FPU.lLAND .EQ 140 FPU.lLAND .EQ 140
FPU.lLOR .EQ 142 FPU.lLOR .EQ 142
*-------------------------------------- *-------------------------------------- float
FPU.fMUL .EQ 144 FPU.fMUL .EQ 144
FPU.fDIV .EQ 146 FPU.fDIV .EQ 146
FPU.fMOD .EQ 148 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.FStat
.DA CIFS.Stat .DA CIFS.Stat
.DA CIFS.MKDir .DA CIFS.MKDir
.DA CIFS.MKNod .DA CIFS.BADCALL MKNod
.DA CIFS.MKFIFO .DA CIFS.BADCALL MKFIFO
.DA CIFS.Pipe .DA CIFS.BADCALL Pipe
.DA CIFS.OpenDir .DA CIFS.OpenDir
.DA CIFS.ReadDir .DA CIFS.ReadDir
.DA CIFS.CloseDir .DA CIFS.CloseDir
.DA CIFS.Open
.DA CIFS.Close .DA CIFS.BADCALL Open
.DA CIFS.Read .DA CIFS.BADCALL Close
.DA CIFS.Write .DA CIFS.BADCALL Read
.DA CIFS.BADCALL Write
.DA CIFS.ChOwn .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 J.CIFS2 .DA CIFS2.ChTyp
.DA CIFS2.ChMod .DA CIFS2.ChMod
.DA CIFS2.FStat .DA CIFS2.FStat
.DA CIFS2.Stat .DA CIFS2.Stat
.DA CIFS2.MKDir .DA CIFS2.MKDir
.DA CIFS2.MKNod .DA CIFS.BADCALL MKNod
.DA CIFS2.MKFIFO .DA CIFS.BADCALL MKFIFO
.DA CIFS2.Pipe .DA CIFS.BADCALL Pipe
.DA CIFS2.OpenDir .DA CIFS2.OpenDir
.DA CIFS2.ReadDir .DA CIFS2.ReadDir
.DA CIFS2.CloseDir .DA CIFS2.CloseDir
.DA CIFS2.Open
.DA CIFS2.Close .DA CIFS.BADCALL Open
.DA CIFS2.Read .DA CIFS.BADCALL Close
.DA CIFS2.Write .DA CIFS.BADCALL Read
.DA CIFS.BADCALL Write
.DA CIFS2.ChOwn .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.LIBTCPIP .DA LIBTCPIP
L.NETBIOS .DA NETBIOS L.NETBIOS .DA NETBIOS
.DA 0 .DA 0
@ -134,10 +180,11 @@ CIFS.Negotiate lda (pStack)
dec dec
sta (pStack) sta (pStack)
>PUSHWI SMB.NegReq.end-NETBIOS ldy #1 hSocket
>PUSHW L.NETBIOS
ldy #1+4 hSocket
lda (pStack),y lda (pStack),y
>PUSHA
>PUSHW L.NETBIOS
>PUSHWI SMB.NegReq.end-NETBIOS
ldx #LIBTCPIP.Send ldx #LIBTCPIP.Send
jsr GO.LIBTCPIP jsr GO.LIBTCPIP
@ -266,10 +313,17 @@ CIFS.SessionSetup
jsr SetReqLenYAtA jsr SetReqLenYAtA
>PUSHYA phy
>PUSHW ZPReqPtr pha
ldy #6+4 hSocket
ldy #6 hSocket
lda (pStack),y lda (pStack),y
>PUSHA
>PUSHW ZPReqPtr
pla
ply
>PUSHYA
ldx #LIBTCPIP.Send ldx #LIBTCPIP.Send
jsr GO.LIBTCPIP jsr GO.LIBTCPIP
@ -391,10 +445,17 @@ CIFS.TreeConnect
jsr SetReqLenYAtA jsr SetReqLenYAtA
>PUSHYA phy
>PUSHW ZPReqPtr pha
ldy #4+4 hSocket
ldy #4 hSocket
lda (pStack),y lda (pStack),y
>PUSHA
>PUSHW ZPReqPtr
pla
ply
>PUSHYA
ldx #LIBTCPIP.Send ldx #LIBTCPIP.Send
jsr GO.LIBTCPIP jsr GO.LIBTCPIP
@ -504,556 +565,7 @@ CIFS.CallBack bit CIFS.Status
ply ply
jmp (J.CIFS2,x) jmp (J.CIFS2,x)
*-------------------------------------- *--------------------------------------
CIFS.ChTyp .INB usr/src/lib/libcifs.io.s
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
*-------------------------------------- *--------------------------------------
GetPFD tax GetPFD tax
phx phx
@ -1205,7 +717,7 @@ Sleep ldy #S.PS.PID
dec CIFS.Status dec CIFS.Status
stz CIFS.Retries stz CIFS.Retries
lda #0 lda #0
sec sec
rts rts
@ -1370,17 +882,21 @@ StatBuf2Ptr2 ldy #S.STAT-1
*-------------------------------------- *--------------------------------------
ClearSocket jsr ReadSocket ClearSocket jsr ReadSocket
bcs .8 bcs .8
>SYSCALL2 FreeMem >SYSCALL2 FreeMem
bra ClearSocket bra ClearSocket
.8 clc .8 clc
rts rts
*-------------------------------------- *--------------------------------------
ReadSocket lda MountTable+3 hSocket ReadSocket lda MountTable+3 hSocket
ldx #LIBTCPIP.Recv ldx #LIBTCPIP.Recv
GO.LIBTCPIP jmp (pLIBTCPIP) GO.LIBTCPIP jmp (pLIBTCPIP)
*-------------------------------------- *--------------------------------------
CIFS.BADCALL lda #MLI.E.BADCALL
sec
rts
*--------------------------------------
CS.END CS.END
*-------------------------------------- *--------------------------------------
NETBIOS .DA #0 DIRECT TCP TRANSPORT NETBIOS .DA #0 DIRECT TCP TRANSPORT
@ -1470,7 +986,7 @@ SMB.ComRead.H .DA #10 WORD COUNT
.HS 00000000 Timeout .HS 00000000 Timeout
.HS 0000 Remaining .HS 0000 Remaining
.HS 0000 ByteCount .HS 0000 ByteCount
SMB.ComRead.H.Len .EQ *-SMB.ComRead.H SMB.ComRead.H.Len .EQ *-SMB.ComRead.H
*-------------------------------------- #$2F *-------------------------------------- #$2F
SMB.ComWrite.H .DA #12 WORD COUNT SMB.ComWrite.H .DA #12 WORD COUNT
.HS FF000000 NO MORE CMD .HS FF000000 NO MORE CMD
@ -1481,18 +997,18 @@ SMB.ComWrite.H .DA #12 WORD COUNT
.BS 2 Remaining .BS 2 Remaining
.HS 0000 Reserved .HS 0000 Reserved
.BS 2 DataLength .BS 2 DataLength
.BS 2 DataOffset .BS 2 DataOffset
SMB.ComWrite.H.Len .EQ *-SMB.ComWrite.H SMB.ComWrite.H.Len .EQ *-SMB.ComWrite.H
.BS 2 ByteCount .BS 2 ByteCount
SMB.ComWrite.T SMB.ComWrite.T
* DATA..... * DATA.....
SMB.ComWrite.T.Len .EQ *-SMB.ComWrite.T SMB.ComWrite.T.Len .EQ *-SMB.ComWrite.T
*-------------------------------------- #$04 *-------------------------------------- #$04
SMB.ComClose.H .DA #3 WORD COUNT SMB.ComClose.H .DA #3 WORD COUNT
.BS 2 FID .BS 2 FID
.HS 00000000 LastTimeModified .HS 00000000 LastTimeModified
.HS 0000 ByteCount .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 SMB.Trans2.H .DA #15 WORD COUNT
.BS 2 TotalParamCount .BS 2 TotalParamCount
@ -1518,11 +1034,11 @@ SMB.Open2 .DA 0 TRANS2_OPEN2
.HS 0000 Flags .HS 0000 Flags
.BS 2 Access Mode .BS 2 Access Mode
.HS 0000 Reserved1 .HS 0000 Reserved1
.BS 2 FileAttributes .BS 2 FileAttributes
.HS 00000000 CreationTime .HS 00000000 CreationTime
.BS 2 OpenMode .BS 2 OpenMode
.HS 00000000 AllocationSize .HS 00000000 AllocationSize
.HS 00000000000000000000 Reserved .HS 00000000000000000000 Reserved
* .AZ "filename" * .AZ "filename"
SMB.Open2.Len .EQ *-SMB.Open2 SMB.Open2.Len .EQ *-SMB.Open2
*-------------------------------------- *--------------------------------------

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,6 +1,5 @@
NEW NEW
AUTO 3,1 AUTO 3,1
.LIST OFF
*-------------------------------------- *--------------------------------------
CFG.SET >PULLW ZPTmpPtr1 IPCFG CFG.SET >PULLW ZPTmpPtr1 IPCFG
@ -43,7 +42,7 @@ CFG.SET >PULLW ZPTmpPtr1 IPCFG
ldx #IOCTL.STATUS ldx #IOCTL.STATUS
jsr CFG.SET.IOCTL jsr CFG.SET.IOCTL
bcs .9 bcs .9
ldx #11 IP/MASK/GW ldx #11 IP/MASK/GW
.4 lda IPCFG+S.IPCFG.IP,x .4 lda IPCFG+S.IPCFG.IP,x
@ -61,8 +60,8 @@ CFG.SET >PULLW ZPTmpPtr1 IPCFG
.5 stz SA.LOCAL+S.SOCKADDR.PORT .5 stz SA.LOCAL+S.SOCKADDR.PORT
stz SA.LOCAL+S.SOCKADDR.PORT+1 stz SA.LOCAL+S.SOCKADDR.PORT+1
>PUSHB hDNSSocket
>PUSHW L.SA.LOCAL >PUSHW L.SA.LOCAL
lda hDNSSocket
jmp SKT.Bind jmp SKT.Bind
.9 rts .9 rts

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -128,17 +128,17 @@ CS.RUN lda hSocket
bcs .9 bcs .9
sta hMount sta hMount
>PUSHW L.MSG.MOUNTED >PUSHW L.MSG.MOUNTED
lda #2 lda #2
>SYSCALL ArgV >SYSCALL ArgV
>PUSHYA >PUSHYA
lda #3 lda #3
>SYSCALL ArgV >SYSCALL ArgV
>PUSHYA >PUSHYA
>PUSHBI 4 >PUSHBI 4
>SYSCALL PrintF >SYSCALL PrintF
@ -233,15 +233,15 @@ CS.RUN.CheckArgs
CS.RUN.CheckArgs.RTS CS.RUN.CheckArgs.RTS
rts rts
*-------------------------------------- *--------------------------------------
CS.RUN.Connect >PUSHBI 0 no protocol CS.RUN.Connect >PUSHBI S.SOCKET.T.SEQPKT
lda #S.SOCKET.T.SEQPKT >PUSHBI 0 no protocol
>LIBCALL hLIBTCPIP,LIBTCPIP.Socket >LIBCALL hLIBTCPIP,LIBTCPIP.Socket
bcs .9 bcs .9
sta hSocket sta hSocket
>PUSHA
>PUSHEA.G SA.LOCAL >PUSHEA.G SA.LOCAL
lda hSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.Bind >LIBCALL hLIBTCPIP,LIBTCPIP.Bind
bcs .9 bcs .9
@ -250,8 +250,8 @@ CS.RUN.Connect >PUSHBI 0 no protocol
.1 >SLEEP .1 >SLEEP
>PUSHB hSocket
>PUSHEA.G SA.REMOTE >PUSHEA.G SA.REMOTE
lda hSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.Connect >LIBCALL hLIBTCPIP,LIBTCPIP.Connect
bcc .8 bcc .8
@ -259,7 +259,7 @@ CS.RUN.Connect >PUSHBI 0 no protocol
bne .1 bne .1
.9 pha .9 pha
>PUSHW L.MSG.NOCONN >PUSHW L.MSG.NOCONN
lda #1 lda #1
>SYSCALL ArgV >SYSCALL ArgV

View File

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

View File

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

View File

@ -100,7 +100,7 @@ CS.RUN lda #TIMEOUT.MAX
>LDYA L.MSG.TCPIPERR >LDYA L.MSG.TCPIPERR
>SYSCALL PutS >SYSCALL PutS
pla pla
sec sec
.9 rts .9 rts
CS.RUN.INIT ldx #3 CS.RUN.INIT ldx #3
@ -118,15 +118,15 @@ CS.RUN.INIT ldx #3
>SYSCALL AToI >SYSCALL AToI
>STYA SA.LOCAL+S.SOCKADDR.PORT >STYA SA.LOCAL+S.SOCKADDR.PORT
CS.RUN.PORTOK >PUSHBI 0 no protocol CS.RUN.PORTOK >PUSHBI S.SOCKET.T.STREAM
lda #S.SOCKET.T.STREAM >PUSHBI 0 no protocol
>LIBCALL hLIBTCPIP,LIBTCPIP.Socket >LIBCALL hLIBTCPIP,LIBTCPIP.Socket
bcs .9 bcs .9
sta hSrvSocket sta hSrvSocket
>PUSHA
>PUSHW L.SA.LOCAL >PUSHW L.SA.LOCAL
lda hSrvSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.Bind >LIBCALL hLIBTCPIP,LIBTCPIP.Bind
bcs .9 bcs .9
@ -146,7 +146,7 @@ CS.RUN.PORTOK >PUSHBI 0 no protocol
pha pha
jsr CS.RUN.CLIENT jsr CS.RUN.CLIENT
pla pla
bcc .2 bcc .2
>LIBCALL hLIBTCPIP,LIBTCPIP.Shutdown >LIBCALL hLIBTCPIP,LIBTCPIP.Shutdown
bra .2 bra .2
@ -155,7 +155,7 @@ CS.RUN.PORTOK >PUSHBI 0 no protocol
>LDYA L.MSG.SKTERR >LDYA L.MSG.SKTERR
>SYSCALL PutS >SYSCALL PutS
pla pla
sec sec
rts rts
*-------------------------------------- *--------------------------------------
CS.RUN.CLIENT >SLEEP give some time for TCPIP SYN/ACK 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 .1 lda $ffff,x SELF MODIFIED
beq .8 beq .8
phx
jsr K.FreeMem jsr K.FreeMem
plx
inx inx
bra .1 bra .1

View File

@ -57,22 +57,17 @@ K.GetDevByName >STYA ZPPtr1 requested dev name
bcs .7 bcs .7
lda Nod.Table.hFD-2,x lda Nod.Table.hFD-2,x
jsr K.GetMemPtr Y,A = pPD, X = hDevNod jmp K.GetMemPtr Y,A = pPD, X = hDevNod
>STYA pFD for IO.Open
* clc
rts
.7 inx .7 inx
inx inx
cpx #K.NOD.MAX*2+2 cpx #K.NOD.MAX*2+2
bne .5 bne .5
.9 lda #MLI.E.NODEV lda #MLI.E.NODEV
sec * sec
rts rts
*-------------------------------------- *--------------------------------------
.8 >STYA ZPPtr2 .8 >STYA ZPPtr2
ldy #$ff ldy #$ff
@ -87,9 +82,9 @@ K.GetDevByName >STYA ZPPtr1 requested dev name
clc clc
rts rts
.89 sec .89 sec
K.GetDev.9 rts K.GetDev.9 rts
*/-------------------------------------- */--------------------------------------
* # GetDevStatus * # GetDevStatus
@ -122,6 +117,37 @@ DEV.GetStatus sta K.S.IOCTL+S.IOCTL.S
ldx #IOCTL.STATUS ldx #IOCTL.STATUS
*-------------------------------------- *--------------------------------------
DEV.pDrvJmp jmp (pDrv) 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 * # MKDev
* Create a hDEV * Create a hDEV
@ -147,7 +173,7 @@ K.MKDev jsr SHARED.PullP2P1 ptr2=name,tr1=fd
bne .10 bne .10
bra .9 bra .9
.11 stx IO.hDevNod .11 stx IO.hDevNod
ldy #$ff ldy #$ff
@ -257,9 +283,9 @@ K.IOCTL ldy #3 hDev
.9 >RET 4 .9 >RET 4
*-------------------------------------- *--------------------------------------
DEV.GetPFD sta IO.hDevNod DEV.GetPFD sta IO.hDevNod
tax tax
lsr lsr
bcs .1 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 DEV.Destroy ldx IO.hDevNod
lda Nod.Table.hName-2,x lda Nod.Table.hName-2,x
beq .1 beq .1
stz Nod.Table.hName-2,x stz Nod.Table.hName-2,x
jsr K.FreeMem jsr K.FreeMem
ldx IO.hDevNod ldx IO.hDevNod
.1 lda Nod.Table.hFD-2,x .1 lda Nod.Table.hFD-2,x
stz Nod.Table.hFD-2,x stz Nod.Table.hFD-2,x
jmp K.FreeMem jmp K.FreeMem

View File

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

View File

@ -7,7 +7,6 @@ PIPE.CNT .EQ ZPDRV+4
PIPE.BASEH .EQ ZPDRV+6 PIPE.BASEH .EQ ZPDRV+6
PIPE.BUFH .EQ ZPDRV+7 PIPE.BUFH .EQ ZPDRV+7
PIPE.SIZEH .EQ ZPDRV+8 PIPE.SIZEH .EQ ZPDRV+8
PIPE.nCNT .EQ ZPDRV+10
*-------------------------------------- *--------------------------------------
PIPE.OPEN ldy #S.FD.PIPE.S PIPE.OPEN ldy #S.FD.PIPE.S
lda (pFD),y lda (pFD),y
@ -40,8 +39,8 @@ PIPE.CLOSE ldy #S.FD.PIPE.S
*-------------------------------------- *--------------------------------------
PIPE.WRITE ldy #S.FD.PIPE.S PIPE.WRITE ldy #S.FD.PIPE.S
lda (pFD),y lda (pFD),y
bpl .10 bpl .10
jmp PIPE.eEOF Remote PS closed the Pipe jmp PIPE.eEOF Remote PS closed the Pipe
.10 ldy #S.FD.PIPE.Free .10 ldy #S.FD.PIPE.Free
@ -233,7 +232,7 @@ PIPE.READ ldy #S.FD.PIPE.Used+1
jsr PIPE.SubCnt jsr PIPE.SubCnt
PIPE.EXIT >LDYA PIPE.CNT Y,A = bytes written PIPE.EXIT >LDYA PIPE.CNT Y,A = bytes written
inc pStack inc pStack Discard hFILE
clc clc
rts 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 inc write 1 byte
>PUSHA >PUSHA
jsr K.FWrite STDIO.Write jsr K.FWrite
bcc .9 bcc .9
tay tay
@ -108,15 +108,7 @@ K.PutS >STYA .1+1
txa txa
>PUSHA >PUSHA
jsr K.FWrite bra STDIO.Write
bcc .99
tay
bne .99
>POP 5 pop hFile, buffer & len
.99 rts
*/-------------------------------------- */--------------------------------------
* # fputs (BLOCKING) * # fputs (BLOCKING)
* Write Str to hFILE * Write Str to hFILE
@ -166,14 +158,8 @@ K.FPutS lda (pStack)
pla pla
>PUSHA push len LO >PUSHA push len LO
jsr K.Write jsr STDIO.Write
bcc .8 bcs K.FPutS.RTS
tay
bne .8
>POP 5
rts
.8 >POP 2 .8 >POP 2
@ -381,10 +367,10 @@ K.FOpen jsr PFT.CheckPath4
inc pStack discard filename inc pStack discard filename
inc pStack inc pStack
jmp IO.Open jmp UNISTD.Open
.9 >POP 6 .9 >POP 6
.99 rts rts
*/-------------------------------------- */--------------------------------------
* # FClose * # FClose
* Close a file * Close a file
@ -399,7 +385,7 @@ K.FOpen jsr PFT.CheckPath4
K.FClose jsr PFT.CheckNodeA K.FClose jsr PFT.CheckNodeA
bcs K.FRead.RTS bcs K.FRead.RTS
jmp IO.Close jmp UNISTD.Close
*/-------------------------------------- */--------------------------------------
* # FRead (BLOCKING) * # FRead (BLOCKING)
* Read bytes from file * Read bytes from file
@ -577,7 +563,7 @@ K.FEOF jsr PFT.CheckNodeA
.DA STDIO.IOERR BDEV .DA STDIO.IOERR BDEV
.DA STDIO.IOERR LNK .DA STDIO.IOERR LNK
.DA STDIO.IOERR DSOCK .DA STDIO.IOERR DSOCK
.DA IO.EOF.SSOCK .DA SOCK.EOF
.DA PIPE.EOF .DA PIPE.EOF
*/-------------------------------------- */--------------------------------------
* # FTell * # FTell

View File

@ -21,13 +21,14 @@ K.Open jsr PFT.CheckPath1
stz IO.Open.AUXTYPE stz IO.Open.AUXTYPE
stz IO.Open.AUXTYPE+1 stz IO.Open.AUXTYPE+1
*-------------------------------------- *--------------------------------------
IO.Open ldx #5 /dev/ UNISTD.Open ldx #5 /dev/
cpx K.MLI.PATH cpx K.MLI.PATH
bcs .8 bcs .8
.1 lda K.MLI.PATH,x .1 lda K.MLI.PATH,x
cmp IO.DEV-1,x cmp IO.DEV-1,x
bne .8 bne .8
dex dex
bne .1 bne .1
*-------------------------------------- *--------------------------------------
@ -37,8 +38,10 @@ IO.Open ldx #5 /dev/
jsr K.GetDevByName jsr K.GetDevByName
bcs .9 bcs .9
*--------------------------------------
stx IO.hDevNod pFD set by GetDevByName >STYA pFD
stx IO.hDevNod
lda (pFD) #S.FD.T lda (pFD) #S.FD.T
tax tax
@ -47,11 +50,11 @@ IO.Open ldx #5 /dev/
.2 .2
* .DA STDIO.IOERR REG * .DA STDIO.IOERR REG
.DA STDIO.IOERR DIR .DA STDIO.IOERR DIR
.DA IO.OPEN.DEV .DA DEV.OPEN
.DA IO.OPEN.DEV .DA DEV.OPEN
.DA STDIO.IOERR LNK .DA STDIO.IOERR LNK
.DA IO.OPEN.SOCK .DA SOCK.OPEN
.DA IO.OPEN.SOCK .DA SOCK.OPEN
.DA PIPE.OPEN .DA PIPE.OPEN
.8 jmp FS.OPEN.REG .8 jmp FS.OPEN.REG
@ -68,16 +71,16 @@ IO.Open ldx #5 /dev/
*\-------------------------------------- *\--------------------------------------
K.Close jsr DEV.GetPFD K.Close jsr DEV.GetPFD
IO.Close lda (pFD) #S.FD.T UNISTD.Close lda (pFD) #S.FD.T
tax tax
jmp (.1,x) jmp (.1,x)
.1 .DA FS.CLOSE.REG .1 .DA FS.CLOSE.REG
.DA FS.CLOSE.DIR .DA FS.CLOSE.DIR
.DA IO.CLOSE.DEV .DA DEV.CLOSE
.DA IO.CLOSE.DEV .DA DEV.CLOSE
.DA STDIO.IOERR LNK .DA STDIO.IOERR LNK
.DA IO.CLOSE.SOCK .DA SOCK.CLOSE
.DA IO.CLOSE.SOCK .DA SOCK.CLOSE
.DA PIPE.CLOSE .DA PIPE.CLOSE
*/-------------------------------------- */--------------------------------------
* # read * # read
@ -103,11 +106,11 @@ UNISTD.Read lda (pFD) #S.FD.T
jmp (.1,x) jmp (.1,x)
.1 .DA FS.READ.REG .1 .DA FS.READ.REG
.DA STDIO.IOERR DIR .DA STDIO.IOERR DIR
.DA IO.READ.CDEV .DA DEV.READ
.DA STDIO.IOERR BDEV .DA STDIO.IOERR BDEV
.DA STDIO.IOERR LNK .DA STDIO.IOERR LNK
.DA STDIO.IOERR DSOCK .DA STDIO.IOERR DSOCK
.DA IO.READ.SSOCK .DA SOCK.READ
.DA PIPE.READ .DA PIPE.READ
*/-------------------------------------- */--------------------------------------
* # write * # write
@ -133,65 +136,12 @@ UNISTD.Write lda (pFD) #S.FD.T
jmp (.1,x) jmp (.1,x)
.1 .DA FS.WRITE.REG .1 .DA FS.WRITE.REG
.DA STDIO.IOERR DIR .DA STDIO.IOERR DIR
.DA IO.WRITE.CDEV .DA DEV.WRITE
.DA STDIO.IOERR BDEV .DA STDIO.IOERR BDEV
.DA STDIO.IOERR LNK .DA STDIO.IOERR LNK
.DA STDIO.IOERR DSOCK .DA STDIO.IOERR DSOCK
.DA IO.WRITE.SSOCK .DA SOCK.WRITE
.DA PIPE.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 * # LSeek
* Set the file-position indicator for hFD * Set the file-position indicator for hFD
@ -204,7 +154,7 @@ IO.WRITE.SSOCK ldy #S.FD.SSOCK.WRITE
* `>PUSHB whence` * `>PUSHB whence`
* `>SYSCALL fseek` * `>SYSCALL fseek`
*\------------------------------------- *\-------------------------------------
K.LSeek *K.LSeek
*/-------------------------------------- */--------------------------------------
* # ChOwn * # ChOwn

View File

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