mirror of https://github.com/A2osX/A2osX.git
Kernel 0.94++
This commit is contained in:
parent
dc36e6373d
commit
ee7b606612
|
@ -69,8 +69,8 @@ Create a new socket
|
|||
|
||||
## ASM
|
||||
**In:**
|
||||
`>PUSHB type`
|
||||
`>PUSHB protocol`
|
||||
`lda type`
|
||||
`>LIBCALL hLIBTCPIP,LIBTCPIP.socket`
|
||||
|
||||
## RETURN VALUE
|
||||
|
@ -85,8 +85,8 @@ bind a name to a socket
|
|||
|
||||
## ASM
|
||||
**In:**
|
||||
`>PUSHB fd`
|
||||
`>PUSHW addr`
|
||||
`lda fd`
|
||||
`>LIBCALL hLIBTCPIP,LIBTCPIP.socket`
|
||||
|
||||
## RETURN VALUE
|
||||
|
@ -101,8 +101,8 @@ Initiate a connection on a socket
|
|||
|
||||
## ASM
|
||||
**In:**
|
||||
`>PUSHB fd`
|
||||
`>PUSHW addr`
|
||||
`lda fd`
|
||||
`>LIBCALL hLIBTCPIP,LIBTCPIP.socket`
|
||||
|
||||
## RETURN VALUE
|
||||
|
@ -157,9 +157,9 @@ Close socket
|
|||
|
||||
## ASM
|
||||
**In:**
|
||||
`>PUSHWI count`
|
||||
`>PUSHB fd`
|
||||
`>PUSHW buf`
|
||||
`lda fd`
|
||||
`>PUSHW count`
|
||||
`>LIBCALL hLIBTCPIP,LIBTCPIP.read`
|
||||
|
||||
## RETURN VALUE
|
||||
|
@ -173,26 +173,37 @@ CS: A = EC
|
|||
|
||||
## ASM
|
||||
**In:**
|
||||
`>PUSHWI count`
|
||||
`>PUSHB fd`
|
||||
`>PUSHW buf`
|
||||
`lda fd`
|
||||
`>PUSHW count`
|
||||
`>LIBCALL hLIBTCPIP,LIBTCPIP.write`
|
||||
|
||||
## RETURN VALUE
|
||||
CC: Y,A = bytes written
|
||||
CS: A = EC
|
||||
|
||||
# Recv (RAW,DGRAM,SEQPKT)
|
||||
|
||||
# RecvFrom (RAW,DGRAM,SEQPKT)
|
||||
|
||||
## C
|
||||
`hMem recv(hFD fd);`
|
||||
`hMem recvfrom(hFD fd, struct sockaddr *addr);`
|
||||
|
||||
## ASM
|
||||
**In:**
|
||||
`>PUSHB fd`
|
||||
`>PUSHW addr` (RecvFrom)
|
||||
`>LIBCALL hLIBTCPIP,LIBTCPIP.Recv`
|
||||
|
||||
## RETURN VALUE
|
||||
CC: A = hMem
|
||||
CS: A = EC
|
||||
|
||||
# Recv (RAW,DGRAM,SEQPKT)
|
||||
|
||||
## C
|
||||
`hMem recv(hFD fd);`
|
||||
|
||||
## ASM
|
||||
**In:**
|
||||
`lda fd`
|
||||
`>LIBCALL hLIBTCPIP,LIBTCPIP.Recv`
|
||||
|
||||
|
@ -200,20 +211,33 @@ CS: A = EC
|
|||
CC: A = hMem
|
||||
CS: A = EC
|
||||
|
||||
# Send (RAW,DGRAM,SEQPKT)
|
||||
|
||||
# SendTo (RAW,DGRAM,SEQPKT)
|
||||
|
||||
## C
|
||||
`int skt.send(hFD fd, const void *buf, int count);`
|
||||
`int skt.sendto(hFD fd, const void *buf, int count, const struct sockaddr *addr);`
|
||||
|
||||
## ASM
|
||||
**In:**
|
||||
`>PUSHW addr` (SendTo)
|
||||
`>PUSHWI count`
|
||||
`>PUSHB fd`
|
||||
`>PUSHW buf`
|
||||
`lda fd`
|
||||
`>PUSHWI count`
|
||||
`>PUSHW addr`
|
||||
`>LIBCALL hLIBTCPIP,LIBTCPIP.sendto`
|
||||
|
||||
## RETURN VALUE
|
||||
CC: Y,A = bytes written
|
||||
CS: A = EC
|
||||
|
||||
# Send (RAW,DGRAM,SEQPKT)
|
||||
|
||||
## C
|
||||
`int skt.send(hFD fd, const void *buf, int count);`
|
||||
|
||||
## ASM
|
||||
**In:**
|
||||
`>PUSHB fd`
|
||||
`>PUSHW buf`
|
||||
`>PUSHWI count`
|
||||
`>LIBCALL hLIBTCPIP,LIBTCPIP.send`
|
||||
|
||||
## RETURN VALUE
|
||||
|
@ -241,8 +265,8 @@ Set Socket Options
|
|||
|
||||
## ASM
|
||||
**In:**
|
||||
`>PUSHBI opts`
|
||||
`lda fd`
|
||||
`>PUSHB fd`
|
||||
`>PUSHB opts`
|
||||
`>LIBCALL hLIBTCPIP,LIBTCPIP.SetSockOpt`
|
||||
|
||||
## RETURN VALUE
|
||||
|
|
Binary file not shown.
|
@ -244,6 +244,7 @@ CS.RUN.LOOP ldy #S.PS.hStdIn
|
|||
lda (pPS),y
|
||||
>SYSCALL FEOF
|
||||
bcs .99
|
||||
|
||||
tay
|
||||
bne .13
|
||||
|
||||
|
|
|
@ -341,8 +341,7 @@ MSG.DIFF .AZ "%H%h:%h %h\r\n"
|
|||
.DUMMY
|
||||
.OR 0
|
||||
DS.START
|
||||
DS.END
|
||||
.ED
|
||||
DS.END .ED
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE usr/src/bin/cmp.s
|
||||
|
|
|
@ -55,7 +55,7 @@ CP.PRINT ldy #$ff
|
|||
inc ZPCLBufPtr+1
|
||||
|
||||
.3 pla
|
||||
clc
|
||||
sec include \0
|
||||
adc ZPDataPtr
|
||||
sta ZPDataPtr
|
||||
bcc .4
|
||||
|
|
|
@ -588,8 +588,7 @@ KW.NEGATIVE inc pStack
|
|||
*--------------------------------------
|
||||
KW.ZERO clc
|
||||
|
||||
ldy #1
|
||||
lda (pStack),y
|
||||
>PULLA
|
||||
ora (pStack)
|
||||
bne .9
|
||||
|
||||
|
@ -598,7 +597,6 @@ KW.ZERO clc
|
|||
.9 lda #0
|
||||
ror
|
||||
|
||||
inc pStack
|
||||
sta (pStack)
|
||||
|
||||
* clc
|
||||
|
|
|
@ -1048,12 +1048,12 @@ CODE.RPDROP2.L .EQ *-CODE.RPDROP2
|
|||
*--------------------------------------
|
||||
CODE.TESTTRUE >PULLA
|
||||
tax
|
||||
.1 bpl .1+5
|
||||
.1 bmi .1+5
|
||||
CODE.TESTTRUE.L .EQ *-CODE.TESTTRUE
|
||||
*--------------------------------------
|
||||
CODE.TESTFALSE >PULLA
|
||||
tax
|
||||
.1 bmi .1+5
|
||||
.1 bpl .1+5
|
||||
CODE.TESTFALSE.L .EQ *-CODE.TESTFALSE
|
||||
*--------------------------------------
|
||||
CODE.PULLA >PULLA
|
||||
|
|
|
@ -240,15 +240,15 @@ CS.RUN.ARGSOK >PUSHW L.MSG.CONNECT
|
|||
>PUSHBI 8
|
||||
>SYSCALL PrintF
|
||||
|
||||
CS.RUN.OPENSKT >PUSHBI 0 no protocol
|
||||
lda #S.SOCKET.T.SEQPKT
|
||||
CS.RUN.OPENSKT >PUSHBI S.SOCKET.T.SEQPKT
|
||||
>PUSHBI 0 no protocol
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Socket
|
||||
bcs .9
|
||||
|
||||
sta hSocket
|
||||
|
||||
>PUSHB hSocket
|
||||
>PUSHW L.SA.LOCAL
|
||||
lda hSocket
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Bind
|
||||
bcc .1
|
||||
|
||||
|
@ -263,8 +263,8 @@ CS.RUN.OPENSKT >PUSHBI 0 no protocol
|
|||
|
||||
.2 >SLEEP
|
||||
|
||||
>PUSHB hSocket
|
||||
>PUSHW L.SA.REMOTE
|
||||
lda hSocket
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Connect
|
||||
bcc .3
|
||||
|
||||
|
@ -463,10 +463,11 @@ CS.RUN.REQUEST jsr Init.TimeOut
|
|||
>SYSCALL SPrintF
|
||||
bcs .90
|
||||
|
||||
>PUSHYA Byte count
|
||||
pha
|
||||
>PUSHB hSocket
|
||||
>PUSHW ZPSendBufPtr
|
||||
|
||||
lda hSocket
|
||||
pla
|
||||
>PUSHYA Byte count
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Send
|
||||
|
||||
.90 php
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
NEW
|
||||
AUTO 3,1
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
DHCP.INIT lda IPCFG+S.NETCFG.STATUS
|
||||
and #S.IPCFG.STATUS.OK
|
||||
|
@ -34,27 +33,27 @@ DHCP.INIT lda IPCFG+S.NETCFG.STATUS
|
|||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
DHCP.RUN >PUSHBI 0 no protocol
|
||||
lda #S.SOCKET.T.DGRAM
|
||||
DHCP.RUN >PUSHBI S.SOCKET.T.DGRAM
|
||||
>PUSHBI 0 no protocol
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Socket
|
||||
bcc .1
|
||||
|
||||
.9 jmp DHCP.RUN.KO
|
||||
|
||||
.1 sta hSocket
|
||||
pha
|
||||
>PUSHA
|
||||
>PUSHW L.SA.LOCAL
|
||||
pla
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Bind
|
||||
bcs .9
|
||||
|
||||
>SLEEP
|
||||
|
||||
>PUSHWI S.SOCKET.O.BROADCAST
|
||||
lda hSocket
|
||||
>PUSHB hSocket
|
||||
>PUSHBI S.SOCKET.O.BROADCAST
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.setsockopt
|
||||
|
||||
>PUSHB hSocket
|
||||
>PUSHW L.SA.REMOTE
|
||||
lda hSocket
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Connect
|
||||
bcs .9
|
||||
|
||||
|
@ -63,13 +62,14 @@ DHCP.RUN >PUSHBI 0 no protocol
|
|||
|
||||
>SLEEP
|
||||
|
||||
DHCP.RUN.SDISC >PUSHW L.SA.DEST
|
||||
>PUSHWI DHCP.DISC.LEN
|
||||
DHCP.RUN.SDISC >PUSHB hSocket
|
||||
>PUSHW L.DHCP.DISC
|
||||
lda hSocket
|
||||
>PUSHWI DHCP.DISC.LEN
|
||||
>PUSHW L.SA.DEST
|
||||
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.SendTo
|
||||
bcc .1
|
||||
|
||||
jmp DHCP.RUN.KO
|
||||
|
||||
.1 lda #S.IPCFG.STATUS.SDISC
|
||||
|
@ -97,10 +97,10 @@ DHCP.RUN.SREQ >PUSHW L.MSG.DHCP.CFG2
|
|||
>PUSHBI 4
|
||||
>SYSCALL PrintF
|
||||
|
||||
>PUSHW L.SA.DEST
|
||||
>PUSHWI DHCP.REQ.LEN
|
||||
>PUSHB hSocket
|
||||
>PUSHW L.DHCP.REQ
|
||||
lda hSocket
|
||||
>PUSHWI DHCP.REQ.LEN
|
||||
>PUSHW L.SA.DEST
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.SendTo
|
||||
bcs DHCP.RUN.KO
|
||||
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
NEW
|
||||
AUTO 3,1
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
ETC.ReadFiles >LDYAI 256
|
||||
>SYSCALL GetMem
|
||||
|
|
|
@ -263,15 +263,15 @@ CS.RUN.CheckArgs
|
|||
>SYSCALL PrintF
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN.Connect >PUSHBI 0 no protocol
|
||||
lda #S.SOCKET.T.STREAM
|
||||
CS.RUN.Connect >PUSHBI S.SOCKET.T.STREAM
|
||||
>PUSHBI 0 no protocol
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Socket
|
||||
bcs .9
|
||||
|
||||
sta hSocket
|
||||
|
||||
>PUSHA
|
||||
>PUSHW L.SA.LOCAL
|
||||
lda hSocket
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Bind
|
||||
bcs .9
|
||||
|
||||
|
@ -280,8 +280,8 @@ CS.RUN.Connect >PUSHBI 0 no protocol
|
|||
|
||||
.1 >SLEEP
|
||||
|
||||
>PUSHB hSocket
|
||||
>PUSHW L.SA.REMOTE
|
||||
lda hSocket
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Connect
|
||||
bcc .8
|
||||
|
||||
|
@ -370,9 +370,9 @@ CS.RUN.GetMsg bit bPendingMsg
|
|||
.10 ldy BufLen
|
||||
bne .2
|
||||
|
||||
.1 >PUSHWI 255
|
||||
.1 >PUSHB hSocket
|
||||
>PUSHW ZPBufPtr
|
||||
lda hSocket
|
||||
>PUSHWI 255
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Read
|
||||
bcs .7
|
||||
|
||||
|
@ -700,9 +700,11 @@ CS.RUN.DUMPMSG >PUSHW L.SEQ.DUMPMSG
|
|||
>SYSCALL PrintF
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN.SendMsg >PUSHYA
|
||||
CS.RUN.SendMsg pha
|
||||
>PUSHB hSocket
|
||||
>PUSHW ZPRespPtr
|
||||
lda hSocket
|
||||
pla
|
||||
>PUSHYA
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Write
|
||||
rts
|
||||
*--------------------------------------
|
||||
|
|
|
@ -204,7 +204,7 @@ CheckArgs.A lda iArg
|
|||
>SYSCALL AToL
|
||||
>PUSHWI 0
|
||||
>PUSHWI 3600
|
||||
>FPU IMUL32
|
||||
>FPU uMUL
|
||||
>PULLL Adjust
|
||||
|
||||
clc
|
||||
|
@ -264,20 +264,20 @@ OpenSocket >LIBCALL hLIBTCPIP,LIBTCPIP.GETCFG is TCPIP loaded ?
|
|||
sec
|
||||
rts
|
||||
|
||||
.3 >PUSHBI S.IP.PROTOCOL.UDP
|
||||
lda #S.SOCKET.T.DGRAM
|
||||
.3 >PUSHBI S.SOCKET.T.DGRAM
|
||||
>PUSHBI S.IP.PROTOCOL.UDP
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Socket
|
||||
bcs .9
|
||||
|
||||
sta hSocket
|
||||
|
||||
>PUSHA
|
||||
>PUSHW L.SA.LOCAL
|
||||
lda hSocket
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Bind
|
||||
bcs .9
|
||||
|
||||
>PUSHB hSocket
|
||||
>PUSHW L.SA.REMOTE
|
||||
lda hSocket
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Connect
|
||||
bcc .8
|
||||
|
||||
|
@ -289,10 +289,9 @@ OpenSocket >LIBCALL hLIBTCPIP,LIBTCPIP.GETCFG is TCPIP loaded ?
|
|||
sec
|
||||
.8 rts
|
||||
*--------------------------------------
|
||||
SendNTPRequest >PUSHWI NTP.Request.End-NTP.Request
|
||||
SendNTPRequest >PUSHB hSocket
|
||||
>PUSHW L.NTP.Request
|
||||
|
||||
lda hSocket
|
||||
>PUSHWI NTP.Request.End-NTP.Request
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Send
|
||||
bcs .9
|
||||
|
||||
|
|
|
@ -191,20 +191,20 @@ CS.RUN.OPENSKT ldx #3
|
|||
>STA.G SA.REMOTE+S.SOCKADDR.PORT+1
|
||||
sta Identifier+1
|
||||
|
||||
>PUSHBI S.SOCKET.T.RAW
|
||||
>PUSHBI S.IP.PROTOCOL.ICMP
|
||||
lda #S.SOCKET.T.RAW
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Socket
|
||||
bcs .9
|
||||
|
||||
sta hSocket
|
||||
|
||||
>PUSHB hSocket
|
||||
>PUSHEA.G SA.LOCAL
|
||||
lda hSocket
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Bind
|
||||
bcs .9
|
||||
|
||||
>PUSHB hSocket
|
||||
>PUSHEA.G SA.REMOTE
|
||||
lda hSocket
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Connect
|
||||
bcc CS.RUN.SEND.ECHO
|
||||
|
||||
|
@ -236,10 +236,9 @@ CS.RUN.SEND.ECHO
|
|||
dey
|
||||
sta (pData),y
|
||||
|
||||
>PUSHWI ICMP.RequestLen
|
||||
>PUSHB hSocket
|
||||
>PUSHW pData
|
||||
lda hSocket
|
||||
|
||||
>PUSHWI ICMP.RequestLen
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Send
|
||||
bcs CS.RUN.ERR
|
||||
|
||||
|
|
|
@ -139,15 +139,15 @@ CS.RUN.PORTOK >PUSHW L.MSG.HOSTOK
|
|||
>PUSHBI 8
|
||||
>SYSCALL PrintF
|
||||
|
||||
CS.RUN.OPENSKT >PUSHBI 0 no protocol
|
||||
lda #S.SOCKET.T.STREAM
|
||||
CS.RUN.OPENSKT >PUSHBI S.SOCKET.T.STREAM
|
||||
>PUSHBI 0 no protocol
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Socket
|
||||
bcs .9
|
||||
|
||||
sta hSocket
|
||||
|
||||
>PUSHA
|
||||
>PUSHW L.SA.LOCAL
|
||||
lda hSocket
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Bind
|
||||
bcc .2
|
||||
|
||||
|
@ -163,8 +163,8 @@ CS.RUN.OPENSKT >PUSHBI 0 no protocol
|
|||
|
||||
.3 >SLEEP
|
||||
|
||||
>PUSHB hSocket
|
||||
>PUSHW L.SA.REMOTE
|
||||
lda hSocket
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Connect
|
||||
bcc .4
|
||||
|
||||
|
@ -197,23 +197,20 @@ CS.RUN.LOOP >SLEEP
|
|||
tay
|
||||
bne .2 EOF, no char
|
||||
|
||||
>PUSHWI BUFSIZE
|
||||
>PUSHB hSocket
|
||||
>PUSHW ZPBufPtr
|
||||
lda hSocket
|
||||
>PUSHWI BUFSIZE
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Read
|
||||
.98 bcs .99
|
||||
|
||||
pha
|
||||
phy
|
||||
>STYA ZPBufLen
|
||||
|
||||
ldy #S.PS.hStdOut
|
||||
lda (pPS),y
|
||||
>PUSHA
|
||||
>PUSHW ZPBufPtr
|
||||
|
||||
ply
|
||||
pla
|
||||
>PUSHYA len
|
||||
>PUSHW ZPBufLen
|
||||
>SYSCALL FWrite
|
||||
bcs .11
|
||||
|
||||
|
@ -237,13 +234,14 @@ CS.RUN.LOOP >SLEEP
|
|||
.99 bra CS.RUN.SKTERR
|
||||
|
||||
.3 >STYA ZPBufLen
|
||||
|
||||
lda (ZPBufPtr)
|
||||
cmp #$14 Ctrl-T
|
||||
beq CS.RUN.USER
|
||||
|
||||
>PUSHW ZPBufLen
|
||||
>PUSHB hSocket
|
||||
>PUSHW ZPBufPtr
|
||||
lda hSocket
|
||||
>PUSHW ZPBufLen
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Write
|
||||
.9 bcs CS.RUN.SKTERR
|
||||
|
||||
|
|
|
@ -15,6 +15,7 @@ BUFSIZE .EQ 256
|
|||
.OR ZPBIN
|
||||
ZS.START
|
||||
ZPBufPtr .BS 2
|
||||
ZPDataLen .BS 2
|
||||
hBuf .BS 1
|
||||
hDev .BS 1
|
||||
TimeOut .BS 1
|
||||
|
@ -81,27 +82,19 @@ CS.RUN.LOOP >SLEEP
|
|||
|
||||
lda hDev
|
||||
>SYSCALL FEOF
|
||||
bcs CS.RUN.RTS
|
||||
bcs .9
|
||||
tay
|
||||
bne .1 EOF, no char
|
||||
|
||||
>PUSHB hDev
|
||||
>PUSHW ZPBufPtr
|
||||
>PUSHWI BUFSIZE
|
||||
>SYSCALL FRead
|
||||
lda hDev
|
||||
jsr CS.Read
|
||||
bcs CS.RUN.RTS
|
||||
|
||||
pha
|
||||
phy
|
||||
>STYA ZPDataLen
|
||||
|
||||
ldy #S.PS.hStdOut
|
||||
lda (pPS),y
|
||||
>PUSHA
|
||||
>PUSHW ZPBufPtr
|
||||
ply
|
||||
pla
|
||||
>PUSHYA len
|
||||
>SYSCALL FWrite
|
||||
jsr CS.Write
|
||||
bcs .9
|
||||
|
||||
.1 ldy #S.PS.hStdIn
|
||||
|
@ -114,33 +107,33 @@ CS.RUN.LOOP >SLEEP
|
|||
|
||||
ldy #S.PS.hStdIn
|
||||
lda (pPS),y
|
||||
>PUSHA
|
||||
jsr CS.Read
|
||||
bcs .9
|
||||
|
||||
>STYA ZPDataLen
|
||||
|
||||
lda (ZPBufPtr)
|
||||
eor #$14 Ctrl-T
|
||||
clc
|
||||
beq .9 exit with A=0,CC
|
||||
|
||||
lda hDev
|
||||
jsr CS.Write
|
||||
bcc CS.RUN.LOOP
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CS.Read >PUSHA
|
||||
>PUSHW ZPBufPtr
|
||||
>PUSHWI BUFSIZE
|
||||
>SYSCALL FRead
|
||||
bcs .9
|
||||
|
||||
tax
|
||||
lda (ZPBufPtr)
|
||||
eor #$14 Ctrl-T
|
||||
beq .8
|
||||
|
||||
txa
|
||||
|
||||
pha
|
||||
phy
|
||||
>PUSHB hDev
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.Write >PUSHA
|
||||
>PUSHW ZPBufPtr
|
||||
ply
|
||||
pla
|
||||
>PUSHYA len
|
||||
>PUSHW ZPDataLen
|
||||
>SYSCALL FWrite
|
||||
bcs .9
|
||||
|
||||
jmp CS.RUN.LOOP
|
||||
|
||||
.8 sec
|
||||
.9 rts
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.DOEVENT lda (pEvent)
|
||||
bpl .9 is it a TIMER event?
|
||||
|
@ -172,8 +165,7 @@ MSG.DEVOK .AZ "Connected (Exit key is Ctrl-T)"
|
|||
.DUMMY
|
||||
.OR 0
|
||||
DS.START
|
||||
DS.END
|
||||
.ED
|
||||
DS.END .ED
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE usr/src/bin/term.s
|
||||
|
|
29
BIN/WC.S.txt
29
BIN/WC.S.txt
|
@ -96,9 +96,11 @@ CS.RUN inc ArgIndex
|
|||
|
||||
.4 >LDA.G hSrcBasePath
|
||||
bne .9
|
||||
|
||||
>LDYA ZPPtr1
|
||||
jsr InitSrcDirYA
|
||||
bcc CS.RUN
|
||||
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
.5 lda bChar
|
||||
|
@ -129,6 +131,7 @@ CS.RUN inc ArgIndex
|
|||
.6 >LDYAI 256
|
||||
>SYSCALL GetMem
|
||||
bcs .99
|
||||
|
||||
>STYA ZPFullPath
|
||||
stx hSrcFullPath
|
||||
|
||||
|
@ -153,6 +156,7 @@ CS.RUN inc ArgIndex
|
|||
>LDYAI 256
|
||||
>SYSCALL GetMem
|
||||
bcs .99
|
||||
|
||||
>STYA ZPLineBuf
|
||||
stx hMem
|
||||
*--------------------------------------
|
||||
|
@ -160,12 +164,16 @@ CS.RUN.LOOP ldy #S.PS.hStdIn
|
|||
lda (pPS),y
|
||||
>SYSCALL FEOF
|
||||
bcs .99
|
||||
|
||||
tay
|
||||
bne .10
|
||||
|
||||
>SYSCALL GetChar
|
||||
bcs .99
|
||||
|
||||
cmp #$03 Ctrl-C
|
||||
beq .99 Abort....
|
||||
|
||||
cmp #$13 Ctrl-S
|
||||
bne .10
|
||||
|
||||
|
@ -173,16 +181,20 @@ CS.RUN.LOOP ldy #S.PS.hStdIn
|
|||
eor #$ff
|
||||
sta bPause
|
||||
bne CS.RUN.LOOP
|
||||
|
||||
.10 lda bPause
|
||||
bne CS.RUN.LOOP Pause...
|
||||
|
||||
jsr GetEntry
|
||||
bcs .9
|
||||
|
||||
ldy #S.STAT.P.DRIVE
|
||||
lda (ZPFileStat),y ProDOS Device ?
|
||||
beq .5
|
||||
|
||||
jsr CS.RUN.DEV
|
||||
bcc CS.RUN.LOOP
|
||||
|
||||
rts
|
||||
|
||||
.5 ldy #S.STAT.MODE+1
|
||||
|
@ -193,9 +205,12 @@ CS.RUN.LOOP ldy #S.PS.hStdIn
|
|||
|
||||
jsr CS.RUN.DIR
|
||||
bcs .99
|
||||
|
||||
bra .8
|
||||
|
||||
.6 jsr CS.RUN.FILE
|
||||
bcs .99
|
||||
|
||||
bra .8
|
||||
|
||||
.9 jsr LeaveSubDir
|
||||
|
@ -213,6 +228,7 @@ CS.RUN.LOOP ldy #S.PS.hStdIn
|
|||
CS.RUN.PIPE >LDYAI 256
|
||||
>SYSCALL GetMem
|
||||
bcs .99
|
||||
|
||||
>STYA ZPLineBuf
|
||||
stx hMem
|
||||
|
||||
|
@ -268,6 +284,7 @@ CS.RUN.FILE jsr FilterMatch
|
|||
jsr CS.RUN.AddFstat2Tstat
|
||||
lda bTotal
|
||||
bmi .8
|
||||
|
||||
beq .61
|
||||
|
||||
lda #$fe
|
||||
|
@ -283,6 +300,7 @@ CS.RUN.FILE jsr FilterMatch
|
|||
pla
|
||||
sec
|
||||
.9 jmp CS.RUN.CheckErr
|
||||
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
CS.RUN.FILE.LOOP
|
||||
|
@ -308,6 +326,7 @@ CS.RUN.FILE.LOOP
|
|||
|
||||
.21 cmp #C.SPACE
|
||||
beq .3
|
||||
|
||||
cmp #C.TAB
|
||||
bne .4
|
||||
|
||||
|
@ -325,6 +344,7 @@ CS.RUN.FILE.LOOP
|
|||
|
||||
.8 cmp #MLI.E.EOF
|
||||
bne .9
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
|
@ -332,6 +352,7 @@ CS.RUN.FILE.LOOP
|
|||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN.CheckErr bcc .9
|
||||
|
||||
pha
|
||||
>PUSHW L.MSG.ERR
|
||||
>PUSHA
|
||||
|
@ -341,6 +362,7 @@ CS.RUN.CheckErr bcc .9
|
|||
eor #$80
|
||||
asl
|
||||
pla
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CS.RUN.GetFilePath
|
||||
|
@ -413,17 +435,17 @@ CS.RUN.IncF lda (pData),y
|
|||
CS.RUN.AddFstat2Tstat
|
||||
>PUSHL.G fWordCount
|
||||
>PUSHL.G tWordCount
|
||||
>FPU ADD32
|
||||
>FPU uADD
|
||||
>PULLL.G tWordCount
|
||||
|
||||
>PUSHL.G fLineCount
|
||||
>PUSHL.G tLineCount
|
||||
>FPU ADD32
|
||||
>FPU uADD
|
||||
>PULLL.G tLineCount
|
||||
|
||||
>PUSHL.G fCharCount
|
||||
>PUSHL.G tCharCount
|
||||
>FPU ADD32
|
||||
>FPU uADD
|
||||
>PULLL.G tCharCount
|
||||
rts
|
||||
*--------------------------------------
|
||||
|
@ -558,6 +580,7 @@ CS.RUN.CheckOpt ldy #1
|
|||
|
||||
.2 cmp OptionList,x
|
||||
beq .3
|
||||
|
||||
dex
|
||||
bpl .2
|
||||
|
||||
|
|
|
@ -128,7 +128,7 @@ NEW
|
|||
.EM
|
||||
*--------------------------------------
|
||||
* FPU Entry Point
|
||||
*--------------------------------------
|
||||
*-------------------------------------- uint16
|
||||
FPU.wMUL .EQ 0
|
||||
FPU.wDIV .EQ 2
|
||||
FPU.wMOD .EQ 4
|
||||
|
@ -152,7 +152,7 @@ FPU.wxOR .EQ 30
|
|||
|
||||
FPU.wLAND .EQ 32
|
||||
FPU.wLOR .EQ 34
|
||||
*--------------------------------------
|
||||
*-------------------------------------- int16
|
||||
FPU.iMUL .EQ 36
|
||||
FPU.iDIV .EQ 38
|
||||
FPU.iMOD .EQ 40
|
||||
|
@ -176,7 +176,7 @@ FPU.iXOR .EQ 66
|
|||
|
||||
FPU.iLAND .EQ 68
|
||||
FPU.iLOR .EQ 70
|
||||
*--------------------------------------
|
||||
*-------------------------------------- uint32
|
||||
FPU.uMUL .EQ 72
|
||||
FPU.uDIV .EQ 74
|
||||
FPU.uMOD .EQ 76
|
||||
|
@ -200,7 +200,7 @@ FPU.uXOR .EQ 102
|
|||
|
||||
FPU.uLAND .EQ 104
|
||||
FPU.uLOR .EQ 106
|
||||
*--------------------------------------
|
||||
*-------------------------------------- int32
|
||||
FPU.lMUL .EQ 108
|
||||
FPU.lDIV .EQ 110
|
||||
FPU.lMOD .EQ 112
|
||||
|
@ -224,7 +224,7 @@ FPU.lXOR .EQ 138
|
|||
|
||||
FPU.lLAND .EQ 140
|
||||
FPU.lLOR .EQ 142
|
||||
*--------------------------------------
|
||||
*-------------------------------------- float
|
||||
FPU.fMUL .EQ 144
|
||||
FPU.fDIV .EQ 146
|
||||
FPU.fMOD .EQ 148
|
||||
|
|
|
@ -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
|
|
@ -62,33 +62,79 @@ J.CIFS .DA CIFS.ChTyp
|
|||
.DA CIFS.FStat
|
||||
.DA CIFS.Stat
|
||||
.DA CIFS.MKDir
|
||||
.DA CIFS.MKNod
|
||||
.DA CIFS.MKFIFO
|
||||
.DA CIFS.Pipe
|
||||
.DA CIFS.BADCALL MKNod
|
||||
.DA CIFS.BADCALL MKFIFO
|
||||
.DA CIFS.BADCALL Pipe
|
||||
|
||||
.DA CIFS.OpenDir
|
||||
.DA CIFS.ReadDir
|
||||
.DA CIFS.CloseDir
|
||||
.DA CIFS.Open
|
||||
.DA CIFS.Close
|
||||
.DA CIFS.Read
|
||||
.DA CIFS.Write
|
||||
|
||||
.DA CIFS.BADCALL Open
|
||||
.DA CIFS.BADCALL Close
|
||||
.DA CIFS.BADCALL Read
|
||||
.DA CIFS.BADCALL Write
|
||||
.DA CIFS.ChOwn
|
||||
|
||||
.DA CIFS.BADCALL
|
||||
.DA CIFS.BADCALL
|
||||
.DA CIFS.BADCALL
|
||||
.DA CIFS.BADCALL
|
||||
.DA CIFS.BADCALL
|
||||
.DA CIFS.BADCALL
|
||||
.DA CIFS.BADCALL
|
||||
.DA CIFS.BADCALL
|
||||
|
||||
.DA CIFS.FOpen
|
||||
.DA CIFS.FClose
|
||||
.DA CIFS.FRead
|
||||
.DA CIFS.FWrite
|
||||
.DA CIFS.FFlush
|
||||
.DA CIFS.FSeek
|
||||
.DA CIFS.FTell
|
||||
.DA CIFS.FEOF
|
||||
.DA CIFS.Remove
|
||||
.DA CIFS.Rename
|
||||
*--------------------------------------
|
||||
J.CIFS2 .DA CIFS2.ChTyp
|
||||
.DA CIFS2.ChMod
|
||||
.DA CIFS2.FStat
|
||||
.DA CIFS2.Stat
|
||||
.DA CIFS2.MKDir
|
||||
.DA CIFS2.MKNod
|
||||
.DA CIFS2.MKFIFO
|
||||
.DA CIFS2.Pipe
|
||||
.DA CIFS.BADCALL MKNod
|
||||
.DA CIFS.BADCALL MKFIFO
|
||||
.DA CIFS.BADCALL Pipe
|
||||
|
||||
.DA CIFS2.OpenDir
|
||||
.DA CIFS2.ReadDir
|
||||
.DA CIFS2.CloseDir
|
||||
.DA CIFS2.Open
|
||||
.DA CIFS2.Close
|
||||
.DA CIFS2.Read
|
||||
.DA CIFS2.Write
|
||||
|
||||
.DA CIFS.BADCALL Open
|
||||
.DA CIFS.BADCALL Close
|
||||
.DA CIFS.BADCALL Read
|
||||
.DA CIFS.BADCALL Write
|
||||
.DA CIFS2.ChOwn
|
||||
|
||||
.DA CIFS.BADCALL FPutC...
|
||||
.DA CIFS.BADCALL
|
||||
.DA CIFS.BADCALL
|
||||
.DA CIFS.BADCALL
|
||||
.DA CIFS.BADCALL
|
||||
.DA CIFS.BADCALL
|
||||
.DA CIFS.BADCALL
|
||||
.DA CIFS.BADCALL ...UngetC
|
||||
|
||||
.DA CIFS2.FOpen
|
||||
.DA CIFS2.FClose
|
||||
.DA CIFS2.FRead
|
||||
.DA CIFS2.FWrite
|
||||
.DA CIFS2.FFlush
|
||||
.DA CIFS2.FSeek
|
||||
.DA CIFS2.FTell
|
||||
.DA CIFS2.FEOF
|
||||
.DA CIFS2.Remove
|
||||
.DA CIFS2.Rename
|
||||
*--------------------------------------
|
||||
L.LIBTCPIP .DA LIBTCPIP
|
||||
L.NETBIOS .DA NETBIOS
|
||||
.DA 0
|
||||
|
@ -134,10 +180,11 @@ CIFS.Negotiate lda (pStack)
|
|||
dec
|
||||
sta (pStack)
|
||||
|
||||
>PUSHWI SMB.NegReq.end-NETBIOS
|
||||
>PUSHW L.NETBIOS
|
||||
ldy #1+4 hSocket
|
||||
ldy #1 hSocket
|
||||
lda (pStack),y
|
||||
>PUSHA
|
||||
>PUSHW L.NETBIOS
|
||||
>PUSHWI SMB.NegReq.end-NETBIOS
|
||||
|
||||
ldx #LIBTCPIP.Send
|
||||
jsr GO.LIBTCPIP
|
||||
|
@ -266,10 +313,17 @@ CIFS.SessionSetup
|
|||
|
||||
jsr SetReqLenYAtA
|
||||
|
||||
>PUSHYA
|
||||
>PUSHW ZPReqPtr
|
||||
ldy #6+4 hSocket
|
||||
phy
|
||||
pha
|
||||
|
||||
ldy #6 hSocket
|
||||
lda (pStack),y
|
||||
>PUSHA
|
||||
>PUSHW ZPReqPtr
|
||||
|
||||
pla
|
||||
ply
|
||||
>PUSHYA
|
||||
|
||||
ldx #LIBTCPIP.Send
|
||||
jsr GO.LIBTCPIP
|
||||
|
@ -391,10 +445,17 @@ CIFS.TreeConnect
|
|||
|
||||
jsr SetReqLenYAtA
|
||||
|
||||
>PUSHYA
|
||||
>PUSHW ZPReqPtr
|
||||
ldy #4+4 hSocket
|
||||
phy
|
||||
pha
|
||||
|
||||
ldy #4 hSocket
|
||||
lda (pStack),y
|
||||
>PUSHA
|
||||
>PUSHW ZPReqPtr
|
||||
|
||||
pla
|
||||
ply
|
||||
>PUSHYA
|
||||
|
||||
ldx #LIBTCPIP.Send
|
||||
jsr GO.LIBTCPIP
|
||||
|
@ -504,556 +565,7 @@ CIFS.CallBack bit CIFS.Status
|
|||
ply
|
||||
jmp (J.CIFS2,x)
|
||||
*--------------------------------------
|
||||
CIFS.ChTyp
|
||||
CIFS2.ChTyp
|
||||
*--------------------------------------
|
||||
CIFS.ChMod
|
||||
CIFS2.ChMod
|
||||
*--------------------------------------
|
||||
CIFS.FStat
|
||||
*--------------------------------------
|
||||
CIFS2.FStat lda #MLI.E.BADCALL
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CIFS.Stat >STYA pPath resolved path
|
||||
|
||||
jsr ClearSocket
|
||||
jsr MakeTrans2Reg
|
||||
|
||||
ldx #0
|
||||
|
||||
.1 lda SMB.QueryPathInfo,x
|
||||
sta (ZPReqPtr),y
|
||||
iny
|
||||
inx
|
||||
cpx #SMB.QueryPathInfo.Len
|
||||
bne .1
|
||||
|
||||
jsr AppendPath
|
||||
|
||||
lda #0
|
||||
sta (ZPReqPtr),y
|
||||
iny
|
||||
|
||||
jsr SetT2ReqLenYA
|
||||
|
||||
>PUSHYA
|
||||
>PUSHW ZPReqPtr
|
||||
lda MountTable+3 hSocket
|
||||
|
||||
ldx #LIBTCPIP.Send
|
||||
jsr GO.LIBTCPIP
|
||||
bcs .9
|
||||
|
||||
jmp Sleep
|
||||
|
||||
.9 >RET 4
|
||||
*--------------------------------------
|
||||
CIFS2.Stat jsr ReadSocket
|
||||
bcs .9
|
||||
|
||||
jsr GetRespData
|
||||
|
||||
ldy #S.NETBIOS+S.SMB.H.STATUS
|
||||
lda (ZPRespPtr),y
|
||||
beq .1
|
||||
|
||||
lda #MLI.E.FNOTFND
|
||||
bra .99
|
||||
|
||||
.1 >PULLW ZPPtr2 Stat Buffer
|
||||
|
||||
inc pStack Skip Filename
|
||||
inc pStack
|
||||
|
||||
jsr GetRespDataOffset
|
||||
jsr FileInfo2StatBuf
|
||||
jsr StatBuf2Ptr2
|
||||
|
||||
lda hResp
|
||||
>SYSCALL2 FreeMem
|
||||
|
||||
stz CIFS.Status
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 cmp #E.NODATA
|
||||
bne .9
|
||||
|
||||
dec CIFS.Retries
|
||||
beq .90
|
||||
|
||||
lda #0
|
||||
sec
|
||||
rts
|
||||
|
||||
.90 lda #MLI.E.IO
|
||||
|
||||
.99 sec
|
||||
stz CIFS.Status
|
||||
>RET 4
|
||||
*--------------------------------------
|
||||
CIFS.MKDir >STYA pPath resolved path
|
||||
|
||||
jsr MakeTrans2Reg
|
||||
|
||||
ldx #0
|
||||
|
||||
.1 lda SMB.CreateDirectory,x
|
||||
sta (ZPReqPtr),y
|
||||
iny
|
||||
inx
|
||||
cpx #SMB.CreateDirectory.Len
|
||||
bne .1
|
||||
|
||||
jsr AppendPath
|
||||
|
||||
lda #0
|
||||
sta (ZPReqPtr),y
|
||||
iny
|
||||
|
||||
jsr SetT2ReqLenYA
|
||||
|
||||
>PUSHYA
|
||||
>PUSHW ZPReqPtr
|
||||
lda MountTable+3 hSocket
|
||||
|
||||
ldx #LIBTCPIP.Send
|
||||
jsr GO.LIBTCPIP
|
||||
bcs .9
|
||||
|
||||
jmp Sleep
|
||||
|
||||
.9 >RET 4
|
||||
*--------------------------------------
|
||||
CIFS2.MKDir jsr ReadSocket
|
||||
bcs .9
|
||||
|
||||
jsr GetRespData
|
||||
|
||||
ldy #S.NETBIOS+S.SMB.H.STATUS
|
||||
lda (ZPRespPtr),y
|
||||
clc
|
||||
beq .8
|
||||
|
||||
lda #MLI.E.DUPFILE
|
||||
sec
|
||||
|
||||
.8 jsr FreeRespData
|
||||
|
||||
stz CIFS.Status
|
||||
>RET 4
|
||||
|
||||
.9 cmp #E.NODATA
|
||||
bne .99
|
||||
|
||||
dec CIFS.Retries
|
||||
beq .98
|
||||
|
||||
lda #0
|
||||
sec
|
||||
rts
|
||||
|
||||
.98 lda #MLI.E.IO
|
||||
|
||||
.99 sec
|
||||
stz CIFS.Status
|
||||
>RET 4
|
||||
*--------------------------------------
|
||||
CIFS.MKNod
|
||||
CIFS2.MKNod
|
||||
*--------------------------------------
|
||||
CIFS.MKFIFO
|
||||
CIFS2.MKFIFO
|
||||
*--------------------------------------
|
||||
CIFS.Pipe
|
||||
CIFS2.Pipe lda #MLI.E.BADCALL
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CIFS.OpenDir >STYA pPath resolved path
|
||||
|
||||
>LDYAI S.FD.DIR
|
||||
>SYSCALL2 GetMem
|
||||
bcs .9
|
||||
|
||||
>STYA ZPPtr2
|
||||
|
||||
lda #S.FD.T.DIR
|
||||
sta (ZPPtr2)
|
||||
|
||||
lda hHandler
|
||||
ldy #S.FD.HANDLER
|
||||
sta (ZPPtr2),y
|
||||
|
||||
lda #0
|
||||
ldy #S.FD.DIR.EPB
|
||||
sta (ZPPtr2),y EOF Flag
|
||||
iny
|
||||
sta (ZPPtr2),y
|
||||
iny
|
||||
sta (ZPPtr2),y
|
||||
|
||||
>PUSHW pPath
|
||||
>PUSHWI 0
|
||||
txa
|
||||
>PUSHA
|
||||
>SYSCALL2 mknod
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CIFS2.OpenDir lda #MLI.E.BADCALL
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CIFS.ReadDir jsr GetPFD
|
||||
|
||||
jsr ClearSocket
|
||||
|
||||
ldy #S.FD.DIR.EPB
|
||||
lda (pFD),y
|
||||
beq .1
|
||||
|
||||
lda #MLI.E.EOF
|
||||
sec
|
||||
rts
|
||||
|
||||
.1 iny
|
||||
lda (pFD),y
|
||||
iny
|
||||
ora (pFD),y
|
||||
bne CIFS.ReadDir.Next
|
||||
|
||||
jsr MakeTrans2Reg
|
||||
|
||||
ldx #0
|
||||
|
||||
.2 lda SMB.FindFirst2,x
|
||||
sta (ZPReqPtr),y
|
||||
iny
|
||||
inx
|
||||
cpx #SMB.FindFirst2.Len
|
||||
bne .2
|
||||
|
||||
bra CIFS.ReadDir.Send
|
||||
|
||||
CIFS.ReadDir.Next
|
||||
jsr MakeTrans2Reg
|
||||
|
||||
ldx #0
|
||||
|
||||
.2 lda SMB.FindNext2,x
|
||||
sta (ZPReqPtr),y
|
||||
iny
|
||||
inx
|
||||
cpx #SMB.FindNext2.Len
|
||||
bne .2
|
||||
|
||||
phy
|
||||
|
||||
ldy #S.FD.DIR.FC+1
|
||||
lda (pFD),y
|
||||
tax
|
||||
dey
|
||||
lda (pFD),y
|
||||
|
||||
ldy #S.NETBIOS+S.SMB.H+SMB.Trans2.H.Len+7 Search ID
|
||||
sta (ZPReqPtr),y
|
||||
txa
|
||||
iny
|
||||
sta (ZPReqPtr),y
|
||||
|
||||
ply
|
||||
CIFS.ReadDir.Send
|
||||
lda (pPath)
|
||||
beq .1
|
||||
|
||||
jsr AppendPath
|
||||
|
||||
lda #'\'
|
||||
sta (ZPReqPtr),y
|
||||
iny
|
||||
|
||||
.1 lda #'*'
|
||||
sta (ZPReqPtr),y
|
||||
iny
|
||||
lda #0
|
||||
sta (ZPReqPtr),y
|
||||
iny
|
||||
|
||||
jsr SetT2ReqLenYA
|
||||
|
||||
>PUSHYA
|
||||
>PUSHW ZPReqPtr
|
||||
lda MountTable+3 hSocket
|
||||
|
||||
ldx #LIBTCPIP.Send
|
||||
jsr GO.LIBTCPIP
|
||||
bcs .9
|
||||
|
||||
jmp Sleep
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CIFS2.ReadDir jsr GetPFD
|
||||
|
||||
jsr ReadSocket
|
||||
bcs .90
|
||||
|
||||
jsr GetRespData
|
||||
|
||||
ldy #S.NETBIOS+S.SMB.H.STATUS
|
||||
lda (ZPRespPtr),y
|
||||
beq .1
|
||||
|
||||
.91 sec
|
||||
lda #MLI.E.IO
|
||||
bra .9
|
||||
|
||||
.1 ldy #S.FD.DIR.FC
|
||||
lda (pFD),y
|
||||
iny
|
||||
ora (pFD),y
|
||||
sta bFlag
|
||||
bne .2
|
||||
|
||||
ldy #S.NETBIOS+S.SMB.H+S.TRANS2.H+1 Search ID
|
||||
lda (ZPRespPtr),y
|
||||
tax
|
||||
dey
|
||||
ora (ZPRespPtr),y
|
||||
beq .91
|
||||
|
||||
lda (ZPRespPtr),y
|
||||
|
||||
ldy #S.FD.DIR.FC
|
||||
sta (pFD),y
|
||||
iny
|
||||
txa
|
||||
sta (pFD),y
|
||||
|
||||
.2 jsr GetRespDataOffset
|
||||
jsr CIFS2.ReadDir.GetBuf
|
||||
bcs .9
|
||||
|
||||
jsr GetRespDataOffset
|
||||
jsr CIFS2.ReadDir.FillBuf
|
||||
|
||||
lda hResp
|
||||
>SYSCALL2 FreeMem
|
||||
|
||||
>LDYA BufPtr
|
||||
ldx hBuf
|
||||
|
||||
stz CIFS.Status
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 stz CIFS.Status
|
||||
|
||||
jmp FreeRespData
|
||||
|
||||
.90 cmp #E.NODATA
|
||||
bne .99
|
||||
|
||||
dec CIFS.Retries
|
||||
beq .98
|
||||
|
||||
lda #0
|
||||
sec
|
||||
rts
|
||||
|
||||
.98 lda #MLI.E.IO
|
||||
|
||||
.99 stz CIFS.Status
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CIFS2.ReadDir.GetBuf
|
||||
ldy #S.NETBIOS+S.SMB.H+S.TRANS2.H Search Count
|
||||
lda bFlag
|
||||
bne .10
|
||||
|
||||
iny
|
||||
iny
|
||||
|
||||
.10 iny
|
||||
iny
|
||||
lda (ZPRespPtr),y End Of Search
|
||||
phy
|
||||
ldy #S.FD.DIR.EPB
|
||||
sta (pFD),y
|
||||
ply
|
||||
|
||||
dey
|
||||
dey
|
||||
|
||||
lda (ZPRespPtr),y Search Count
|
||||
beq .99
|
||||
tax
|
||||
|
||||
lda #1 +Ending 0
|
||||
sta ZPPtr2
|
||||
stz ZPPtr2+1
|
||||
|
||||
.1 lda ZPPtr2
|
||||
clc
|
||||
adc #S.STAT
|
||||
sta ZPPtr2
|
||||
bcc .2
|
||||
|
||||
inc ZPPtr2+1
|
||||
|
||||
.2 lda ZPPtr1
|
||||
clc
|
||||
adc #22
|
||||
sta ZPPtr1
|
||||
bcc .3
|
||||
|
||||
inc ZPPtr1+1
|
||||
|
||||
.3 lda (ZPPtr1) Filename Len
|
||||
pha
|
||||
sec
|
||||
adc ZPPtr2
|
||||
sta ZPPtr2
|
||||
bcc .4
|
||||
|
||||
inc ZPPtr2+1
|
||||
|
||||
.4 pla
|
||||
inc
|
||||
sec
|
||||
adc ZPPtr1
|
||||
sta ZPPtr1
|
||||
bcc .5
|
||||
|
||||
inc ZPPtr1+1
|
||||
|
||||
.5 dex
|
||||
bne .1
|
||||
|
||||
>LDYA ZPPtr2
|
||||
>SYSCALL2 GetMem
|
||||
bcs .9
|
||||
|
||||
>STYA BufPtr
|
||||
>STYA ZPPtr2
|
||||
stx hBuf
|
||||
|
||||
.9 rts
|
||||
|
||||
.99 lda #MLI.E.EOF
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CIFS2.ReadDir.FillBuf
|
||||
ldy #S.NETBIOS+S.SMB.H+S.TRANS2.H Search Count
|
||||
lda bFlag
|
||||
bne .10
|
||||
|
||||
iny
|
||||
iny
|
||||
|
||||
.10 lda (ZPRespPtr),y
|
||||
tax
|
||||
|
||||
.1 jsr FileInfo2StatBuf
|
||||
|
||||
lda ZPPtr1
|
||||
sec skip Filename Len
|
||||
adc #22
|
||||
sta ZPPtr1
|
||||
bcc .2
|
||||
|
||||
inc ZPPtr1+1
|
||||
|
||||
.2 ldy #$ff
|
||||
|
||||
.3 iny
|
||||
lda (ZPPtr1),y
|
||||
sta (ZPPtr2),y
|
||||
bne .3
|
||||
|
||||
tya
|
||||
sec
|
||||
adc ZPPtr1
|
||||
sta ZPPtr1
|
||||
bcc .4
|
||||
|
||||
inc ZPPtr1+1
|
||||
|
||||
.4 tya
|
||||
sec
|
||||
adc ZPPtr2
|
||||
sta ZPPtr2
|
||||
bcc .5
|
||||
|
||||
inc ZPPtr2+1
|
||||
|
||||
.5 jsr StatBuf2Ptr2
|
||||
|
||||
lda #S.STAT
|
||||
clc
|
||||
adc ZPPtr2
|
||||
sta ZPPtr2
|
||||
bcc .7
|
||||
|
||||
inc ZPPtr2+1
|
||||
|
||||
.7 dex
|
||||
bne .1
|
||||
|
||||
lda #0
|
||||
sta (ZPPtr2)
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
CIFS.CloseDir tax
|
||||
|
||||
lda Nod.Table.hName-2,x
|
||||
beq .1
|
||||
|
||||
phx
|
||||
|
||||
stz Nod.Table.hName-2,x
|
||||
>SYSCALL2 FreeMem
|
||||
|
||||
plx
|
||||
|
||||
.1 lda Nod.Table.hFD-2,x
|
||||
stz Nod.Table.hFD-2,x
|
||||
>SYSCALL2 FreeMem
|
||||
|
||||
stz CIFS.Status
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CIFS2.CloseDir lda #MLI.E.INVPATH
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CIFS.Open
|
||||
CIFS2.Open
|
||||
*--------------------------------------
|
||||
CIFS.Close
|
||||
CIFS2.Close
|
||||
lda #MLI.E.INVPATH
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CIFS.Read
|
||||
CIFS2.Read
|
||||
*--------------------------------------
|
||||
CIFS.Write
|
||||
CIFS2.Write
|
||||
*--------------------------------------
|
||||
CIFS.ChOwn
|
||||
CIFS2.ChOwn
|
||||
lda #MLI.E.BADCALL
|
||||
sec
|
||||
rts
|
||||
.INB usr/src/lib/libcifs.io.s
|
||||
*--------------------------------------
|
||||
GetPFD tax
|
||||
phx
|
||||
|
@ -1381,6 +893,10 @@ ReadSocket lda MountTable+3 hSocket
|
|||
ldx #LIBTCPIP.Recv
|
||||
GO.LIBTCPIP jmp (pLIBTCPIP)
|
||||
*--------------------------------------
|
||||
CIFS.BADCALL lda #MLI.E.BADCALL
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.END
|
||||
*--------------------------------------
|
||||
NETBIOS .DA #0 DIRECT TCP TRANSPORT
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
NEW
|
||||
AUTO 3,1
|
||||
.LIST OFF
|
||||
*/--------------------------------------
|
||||
* # AARP.Clear
|
||||
* Clear AARP Cache
|
||||
|
@ -328,6 +327,6 @@ AARP.Send >STYA IOCTL+S.IOCTL.BUFPTR
|
|||
jmp FRM.Send.IOCTL
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/LIB/LIBETALK.S.AARP
|
||||
LOAD USR/SRC/LIB/LIBETALK.S
|
||||
SAVE usr/src/lib/libetalk.s.aarp
|
||||
LOAD usr/src/lib/libetalk.s
|
||||
ASM
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
NEW
|
||||
AUTO 3,1
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
CFG.SET >PULLW ZPTmpPtr1 ETKCFG
|
||||
|
||||
|
@ -29,6 +28,6 @@ CFG.GET >LDYA L.ETKCFG
|
|||
rts
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/LIB/LIBETALK.S.CFG
|
||||
LOAD USR/SRC/LIB/LIBETALK.S
|
||||
SAVE usr/src/lib/libetalk.s.cfg
|
||||
LOAD usr/src/lib/libetalk.s
|
||||
ASM
|
||||
|
|
|
@ -1,11 +1,10 @@
|
|||
NEW
|
||||
AUTO 3,1
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
DDP.IN clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/LIB/LIBETALK.S.DDP
|
||||
LOAD USR/SRC/LIB/LIBETALK.S
|
||||
SAVE usr/src/lib/libetalk.s.ddp
|
||||
LOAD usr/src/lib/libetalk.s
|
||||
ASM
|
||||
|
|
|
@ -1,10 +1,9 @@
|
|||
NEW
|
||||
AUTO 3,1
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/LIB/LIBETALK.S.ELAP
|
||||
LOAD USR/SRC/LIB/LIBETALK.S
|
||||
SAVE usr/src/lib/libetalk.s.elap
|
||||
LOAD usr/src/lib/libetalk.s
|
||||
ASM
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
NEW
|
||||
AUTO 3,1
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
|
||||
*--------------------------------------
|
||||
FRM.Send ldx #3
|
||||
|
||||
|
@ -17,6 +17,6 @@ FRM.Send.IOCTL >PUSHB ETKCFG+S.NETCFG.DevID
|
|||
rts
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/LIB/LIBETALK.S.FRM
|
||||
LOAD USR/SRC/LIB/LIBETALK.S
|
||||
SAVE usr/src/lib/libetalk.s.frm
|
||||
LOAD usr/src/lib/libetalk.s
|
||||
ASM
|
||||
|
|
|
@ -1,10 +1,9 @@
|
|||
NEW
|
||||
AUTO 3,1
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/LIB/LIBETALK.S.RTMP
|
||||
LOAD USR/SRC/LIB/LIBETALK.S
|
||||
SAVE usr/src/lib/libetalk.s.rtmp
|
||||
LOAD usr/src/lib/libetalk.s
|
||||
ASM
|
||||
|
|
|
@ -5,12 +5,12 @@ NEW
|
|||
.OR $2000
|
||||
.TF lib/libetalk
|
||||
*--------------------------------------
|
||||
.INB INC/MACROS.I
|
||||
.INB INC/A2OSX.I
|
||||
.INB INC/NIC.I
|
||||
.INB INC/ETH.I
|
||||
.INB INC/LIB.NET.I
|
||||
.INB INC/LIBETALK.I
|
||||
.INB inc/macros.i
|
||||
.INB inc/a2osx.i
|
||||
.INB inc/nic.i
|
||||
.INB inc/eth.i
|
||||
.INB inc/lib.net.i
|
||||
.INB inc/libetalk.i
|
||||
*--------------------------------------
|
||||
ZPFrameInPtr .EQ ZPLIB
|
||||
ZPFrameInLen .EQ ZPLIB+2
|
||||
|
@ -117,12 +117,12 @@ PULSE and #S.EVT.F.T1SEC
|
|||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
.INB USR/SRC/LIB/LIBETALK.S.AARP
|
||||
.INB USR/SRC/LIB/LIBETALK.S.CFG
|
||||
.INB USR/SRC/LIB/LIBETALK.S.DDP
|
||||
.INB USR/SRC/LIB/LIBETALK.S.ELAP
|
||||
.INB USR/SRC/LIB/LIBETALK.S.FRM
|
||||
.INB USR/SRC/LIB/LIBETALK.S.RTMP
|
||||
.INB usr/src/lib/libetalk.s.aarp
|
||||
.INB usr/src/lib/libetalk.s.cfg
|
||||
.INB usr/src/lib/libetalk.s.ddp
|
||||
.INB usr/src/lib/libetalk.s.elap
|
||||
.INB usr/src/lib/libetalk.s.frm
|
||||
.INB usr/src/lib/libetalk.s.rtmp
|
||||
*--------------------------------------
|
||||
CS.END
|
||||
*--------------------------------------
|
||||
|
@ -169,5 +169,5 @@ TmpDWord .BS 4
|
|||
TmpOffset .BS 2
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/LIB/LIBETALK.S
|
||||
SAVE usr/src/lib/libetalk.s
|
||||
ASM
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
NEW
|
||||
AUTO 3,1
|
||||
.LIST OFF
|
||||
*/--------------------------------------
|
||||
* # ARP.Clear
|
||||
* Clear ARP Cache
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
NEW
|
||||
AUTO 3,1
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
CFG.SET >PULLW ZPTmpPtr1 IPCFG
|
||||
|
||||
|
@ -61,8 +60,8 @@ CFG.SET >PULLW ZPTmpPtr1 IPCFG
|
|||
.5 stz SA.LOCAL+S.SOCKADDR.PORT
|
||||
stz SA.LOCAL+S.SOCKADDR.PORT+1
|
||||
|
||||
>PUSHB hDNSSocket
|
||||
>PUSHW L.SA.LOCAL
|
||||
lda hDNSSocket
|
||||
jmp SKT.Bind
|
||||
|
||||
.9 rts
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
NEW
|
||||
AUTO 3,1
|
||||
.LIST OFF
|
||||
*/--------------------------------------
|
||||
* # DNS.Clear
|
||||
* Clear DNS Cache
|
||||
|
@ -126,10 +125,10 @@ DNS.REQUEST.SEND
|
|||
dey
|
||||
bpl .2
|
||||
|
||||
.4 >PUSHW L.SA.REMOTE
|
||||
>PUSHW DNS.MSG.LEN
|
||||
.4 >PUSHB hDNSSocket
|
||||
>PUSHW L.DNS.MSG
|
||||
lda hDNSSocket
|
||||
>PUSHW DNS.MSG.LEN
|
||||
>PUSHW L.SA.REMOTE
|
||||
jmp SKT.SendTo
|
||||
|
||||
.8 clc
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
NEW
|
||||
AUTO 3,1
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
FRM.GetTargetSKT.TCPUDP
|
||||
ldy #S.TCPUDP.SRCPORT
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
NEW
|
||||
AUTO 3,1
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
HST.GetByName >PULLW ZPPtrDNS
|
||||
>PULLW ZPPtrIP
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
NEW
|
||||
AUTO 3,1
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
ICMP.IN ldy #S.ICMP.TYPE
|
||||
lda (ZPFrameInPtr),y
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
NEW
|
||||
AUTO 3,1
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
IP.IN ldy #S.IP.PROTOCOL
|
||||
lda (ZPFrameInPtr),y
|
||||
|
|
|
@ -7,15 +7,18 @@ NEW
|
|||
* `hFD socket(short int type, short int protocol);`
|
||||
* ## ASM
|
||||
* **In:**
|
||||
* `>PUSHB type`
|
||||
* `>PUSHB protocol`
|
||||
* `lda type`
|
||||
* `>LIBCALL hLIBTCPIP,LIBTCPIP.socket`
|
||||
* ## RETURN VALUE
|
||||
* CC: A = hSOCKET
|
||||
* CS: A = EC
|
||||
*\--------------------------------------
|
||||
SKT.Socket tax
|
||||
>PULLA get protocol (RAW)
|
||||
SKT.Socket >PULLA get protocol (RAW)
|
||||
pha
|
||||
>PULLA
|
||||
tax
|
||||
pla
|
||||
SKT.Socket.I jmp (J.SKT.Socket,x)
|
||||
|
||||
SKT.Socket.RAW ldy #S.SOCKET
|
||||
|
@ -108,16 +111,15 @@ SKT.Socket.FindFree
|
|||
* `int bind(hFD fd, const struct sockaddr *addr);`
|
||||
* ## ASM
|
||||
* **In:**
|
||||
* `>PUSHB fd`
|
||||
* `>PUSHW addr`
|
||||
* `lda fd`
|
||||
* `>LIBCALL hLIBTCPIP,LIBTCPIP.socket`
|
||||
* ## RETURN VALUE
|
||||
* CC: A = hSOCKET
|
||||
* CS: A = EC
|
||||
*\--------------------------------------
|
||||
SKT.bind >SYSCALL2 GetMemPtr
|
||||
>STYA ZPPtrSKT
|
||||
jsr SKT.PullLocAddr
|
||||
SKT.bind jsr SKT.PullLocAddr
|
||||
jsr SKT.PullhFD
|
||||
|
||||
lda SKT.LOC.ADDR+S.SOCKADDR.PORT
|
||||
ora SKT.LOC.ADDR+S.SOCKADDR.PORT+1
|
||||
|
@ -168,17 +170,15 @@ SKT.bind >SYSCALL2 GetMemPtr
|
|||
* `int connect(hFD fd, const struct sockaddr *addr);`
|
||||
* ## ASM
|
||||
* **In:**
|
||||
* `>PUSHB fd`
|
||||
* `>PUSHW addr`
|
||||
* `lda fd`
|
||||
* `>LIBCALL hLIBTCPIP,LIBTCPIP.socket`
|
||||
* ## RETURN VALUE
|
||||
* CC: A = hSOCKET
|
||||
* CS: A = EC
|
||||
*\--------------------------------------
|
||||
SKT.connect >SYSCALL2 GetMemPtr
|
||||
>STYA ZPPtrSKT
|
||||
|
||||
jsr SKT.PullRemAddr
|
||||
SKT.connect jsr SKT.PullRemAddr
|
||||
jsr SKT.PullhFD
|
||||
|
||||
ldy #S.SOCKET.T
|
||||
lda (ZPPtrSKT),y
|
||||
|
@ -238,8 +238,7 @@ SKT.connect.SEQPKT
|
|||
* ## RETURN VALUE
|
||||
* CS: A = EC
|
||||
*\--------------------------------------
|
||||
SKT.listen >SYSCALL2 GetMemPtr
|
||||
>STYA ZPPtrSKT
|
||||
SKT.listen jsr SKT.GetFD
|
||||
|
||||
ldy #S.SOCKET.T
|
||||
lda (ZPPtrSKT),y
|
||||
|
@ -275,8 +274,7 @@ SKT.listen.RTS rts
|
|||
* ## RETURN VALUE
|
||||
* A = hSocket
|
||||
*\--------------------------------------
|
||||
SKT.Accept >SYSCALL2 GetMemPtr
|
||||
>STYA ZPPtrSKT
|
||||
SKT.Accept jsr SKT.GetFD
|
||||
|
||||
ldy #S.SOCKET.O
|
||||
lda (ZPPtrSKT),y
|
||||
|
@ -321,8 +319,7 @@ SKT.GetFromQueue
|
|||
* ## RETURN VALUE
|
||||
*\--------------------------------------
|
||||
SKT.shutdown pha
|
||||
>SYSCALL2 GetMemPtr
|
||||
>STYA ZPPtrSKT
|
||||
jsr SKT.GetFD
|
||||
|
||||
ldy #S.SOCKET.O
|
||||
lda (ZPPtrSKT),y
|
||||
|
@ -397,9 +394,9 @@ SKT.shutdown.RTS
|
|||
* `int skt.read(hFD fd, void *buf, int count);`
|
||||
* ## ASM
|
||||
* **In:**
|
||||
* `>PUSHWI count`
|
||||
* `>PUSHB fd`
|
||||
* `>PUSHW buf`
|
||||
* `lda fd`
|
||||
* `>PUSHW count`
|
||||
* `>LIBCALL hLIBTCPIP,LIBTCPIP.read`
|
||||
* ## RETURN VALUE
|
||||
* CC: Y,A = bytes read
|
||||
|
@ -422,8 +419,8 @@ SKT.Read jsr SKT.PullhFDDataInPtrLen
|
|||
stx ZPDataInLen less data than INUSED, Get only INUSED data
|
||||
lda (ZPPtrSKT),y
|
||||
sta ZPDataInLen+1
|
||||
|
||||
bra SKT.GetDataFromSktIn
|
||||
|
||||
.7 jsr SKT.CheckStream
|
||||
bcs .99 I/O error
|
||||
|
||||
|
@ -599,9 +596,9 @@ SKT.AddDataToSktIn
|
|||
* `int skt.write(hFD fd, const void *buf, int count);`
|
||||
* ## ASM
|
||||
* **In:**
|
||||
* `>PUSHWI count`
|
||||
* `>PUSHB fd`
|
||||
* `>PUSHW buf`
|
||||
* `lda fd`
|
||||
* `>PUSHW count`
|
||||
* `>LIBCALL hLIBTCPIP,LIBTCPIP.write`
|
||||
* ## RETURN VALUE
|
||||
* CC: Y,A = bytes written
|
||||
|
@ -611,6 +608,7 @@ SKT.Write jsr SKT.PullhFDDataInPtrLen
|
|||
|
||||
jsr SKT.CheckStream
|
||||
bcs .99
|
||||
|
||||
jsr SKT.GetTCB
|
||||
|
||||
ldx SKT.Cache+S.SOCKET.TCP.OUTFREE
|
||||
|
@ -765,6 +763,7 @@ SKT.GetDataFromSktOut
|
|||
|
||||
.1 inx
|
||||
bne .2
|
||||
|
||||
pla
|
||||
inc
|
||||
beq .8
|
||||
|
@ -779,6 +778,7 @@ SKT.GetDataFromSktOut
|
|||
sta (ZPDataOutPtr)
|
||||
inc ZPDataOutPtr
|
||||
bne .3
|
||||
|
||||
inc ZPDataOutPtr+1
|
||||
|
||||
.3 iny
|
||||
|
@ -788,6 +788,7 @@ SKT.GetDataFromSktOut
|
|||
lda SKT.Cache+S.SOCKET.TCP.OUTTAILSENT+1
|
||||
cmp /K.TCP.WSIZE
|
||||
bne .1
|
||||
|
||||
stz SKT.Cache+S.SOCKET.TCP.OUTTAILSENT+1
|
||||
|
||||
lda ZPTmpPtr1+1
|
||||
|
@ -803,30 +804,37 @@ SKT.GetDataFromSktOut
|
|||
clc
|
||||
rts
|
||||
*/--------------------------------------
|
||||
* # Recv (RAW,DGRAM,SEQPKT)
|
||||
* # RecvFrom (RAW,DGRAM,SEQPKT)
|
||||
* ## C
|
||||
* `hMem recv(hFD fd);`
|
||||
* `hMem recvfrom(hFD fd, struct sockaddr *addr);`
|
||||
* ## ASM
|
||||
* **In:**
|
||||
* `>PUSHB fd`
|
||||
* `>PUSHW addr` (RecvFrom)
|
||||
* `>LIBCALL hLIBTCPIP,LIBTCPIP.Recv`
|
||||
* ## RETURN VALUE
|
||||
* CC: A = hMem
|
||||
* CS: A = EC
|
||||
*\--------------------------------------
|
||||
SKT.RecvFrom >PULLW ZPTmpPtr1 addr
|
||||
>PULLA
|
||||
sec
|
||||
.HS 90 BCC
|
||||
*/--------------------------------------
|
||||
* # Recv (RAW,DGRAM,SEQPKT)
|
||||
* ## C
|
||||
* `hMem recv(hFD fd);`
|
||||
* ## ASM
|
||||
* **In:**
|
||||
* `lda fd`
|
||||
* `>LIBCALL hLIBTCPIP,LIBTCPIP.Recv`
|
||||
* ## RETURN VALUE
|
||||
* CC: A = hMem
|
||||
* CS: A = EC
|
||||
*\--------------------------------------
|
||||
SKT.RecvFrom pha
|
||||
>PULLW ZPTmpPtr1 addr
|
||||
pla
|
||||
sec
|
||||
.HS 90 BCC
|
||||
|
||||
SKT.Recv clc
|
||||
php
|
||||
>SYSCALL2 GetMemPtr
|
||||
>STYA ZPPtrSKT
|
||||
jsr SKT.GetFD
|
||||
|
||||
ldy #S.SOCKET.T
|
||||
lda (ZPPtrSKT),y
|
||||
|
@ -902,33 +910,38 @@ SKT.Recv clc
|
|||
sec
|
||||
rts
|
||||
*/--------------------------------------
|
||||
* # Send (RAW,DGRAM,SEQPKT)
|
||||
* # SendTo (RAW,DGRAM,SEQPKT)
|
||||
* ## C
|
||||
* `int skt.send(hFD fd, const void *buf, int count);`
|
||||
* `int skt.sendto(hFD fd, const void *buf, int count, const struct sockaddr *addr);`
|
||||
* ## ASM
|
||||
* **In:**
|
||||
* `>PUSHW addr` (SendTo)
|
||||
* `>PUSHWI count`
|
||||
* `>PUSHB fd`
|
||||
* `>PUSHW buf`
|
||||
* `lda fd`
|
||||
* `>PUSHWI count`
|
||||
* `>PUSHW addr`
|
||||
* `>LIBCALL hLIBTCPIP,LIBTCPIP.sendto`
|
||||
* ## RETURN VALUE
|
||||
* CC: Y,A = bytes written
|
||||
* CS: A = EC
|
||||
*\--------------------------------------
|
||||
SKT.SendTo jsr SKT.PullRemAddr
|
||||
*/--------------------------------------
|
||||
* # Send (RAW,DGRAM,SEQPKT)
|
||||
* ## C
|
||||
* `int skt.send(hFD fd, const void *buf, int count);`
|
||||
* ## ASM
|
||||
* **In:**
|
||||
* `>PUSHB fd`
|
||||
* `>PUSHW buf`
|
||||
* `>PUSHWI count`
|
||||
* `>LIBCALL hLIBTCPIP,LIBTCPIP.send`
|
||||
* ## RETURN VALUE
|
||||
* CC: Y,A = bytes written
|
||||
* CS: A = EC
|
||||
*\--------------------------------------
|
||||
SKT.SendTo sec
|
||||
.HS 90 BCC
|
||||
SKT.Send clc
|
||||
php
|
||||
jsr SKT.PullhFDDataInPtrLen
|
||||
plp
|
||||
bcc .1
|
||||
SKT.Send jsr SKT.PullhFDDataInPtrLen
|
||||
|
||||
jsr SKT.PullRemAddr
|
||||
|
||||
.1 ldy #S.SOCKET.T
|
||||
ldy #S.SOCKET.T
|
||||
lda (ZPPtrSKT),y
|
||||
tax
|
||||
jmp (J.SKT.send,x)
|
||||
|
@ -979,8 +992,7 @@ SKT.Send.9 rts
|
|||
* `>LIBCALL hLIBTCPIP,LIBTCPIP.GetSockOpt`
|
||||
* ## RETURN VALUE
|
||||
*\--------------------------------------
|
||||
SKT.getsockopt >SYSCALL2 GetMemPtr
|
||||
>STYA ZPPtrSKT
|
||||
SKT.getsockopt jsr SKT.GetFD
|
||||
ldy #S.SOCKET.O
|
||||
lda (ZPPtrSKT),y
|
||||
* clc
|
||||
|
@ -992,14 +1004,17 @@ SKT.getsockopt >SYSCALL2 GetMemPtr
|
|||
* `int setsockopt(hFD fd, short int opts);`
|
||||
* ## ASM
|
||||
* **In:**
|
||||
* `>PUSHBI opts`
|
||||
* `lda fd`
|
||||
* `>PUSHB fd`
|
||||
* `>PUSHB opts`
|
||||
* `>LIBCALL hLIBTCPIP,LIBTCPIP.SetSockOpt`
|
||||
* ## RETURN VALUE
|
||||
*\--------------------------------------
|
||||
SKT.setsockopt >SYSCALL2 GetMemPtr
|
||||
>STYA ZPPtrSKT
|
||||
>PULLA
|
||||
SKT.setsockopt >PULLA
|
||||
pha
|
||||
|
||||
jsr SKT.PullhFD
|
||||
|
||||
pla
|
||||
ldy #S.SOCKET.O
|
||||
sta (ZPPtrSKT),y
|
||||
* clc
|
||||
|
@ -1017,10 +1032,9 @@ SKT.setsockopt >SYSCALL2 GetMemPtr
|
|||
* CC : A = 0 if some data, A = $ff if EOF
|
||||
* CS : A = Socket Error
|
||||
*\--------------------------------------
|
||||
SKT.EOF >SYSCALL2 GetMemPtr
|
||||
>STYA ZPPtrSKT
|
||||
SKT.EOF jsr SKT.GetFD
|
||||
|
||||
SKT.EOF.I ldy #S.SOCKET.TCP.INUSED
|
||||
ldy #S.SOCKET.TCP.INUSED
|
||||
lda (ZPPtrSKT),y
|
||||
iny
|
||||
ora (ZPPtrSKT),y
|
||||
|
@ -1034,7 +1048,8 @@ SKT.EOF.I ldy #S.SOCKET.TCP.INUSED
|
|||
rts
|
||||
|
||||
.8 lda #0 ...EOF = false
|
||||
clc
|
||||
|
||||
* clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
SKT.CheckStream lda #S.SOCKET.T.STREAM
|
||||
|
@ -1085,10 +1100,13 @@ SKT.GetTable >LDYA L.SKT.Table
|
|||
rts
|
||||
*--------------------------------------
|
||||
SKT.PullhFDDataInPtrLen
|
||||
>SYSCALL2 GetMemPtr
|
||||
>STYA ZPPtrSKT
|
||||
>PULLW ZPDataInPtr !!!DataOut trashed when sending ACK in TCP.OUT
|
||||
>PULLW ZPDataInLen !!!use DataInPtr/Len
|
||||
>PULLW ZPDataInPtr !!!DataOut trashed when sending ACK in TCP.OUT
|
||||
|
||||
SKT.PullhFD >PULLA
|
||||
|
||||
SKT.GetFD >SYSCALL2 GetMemPtr
|
||||
>STYA ZPPtrSKT
|
||||
rts
|
||||
*--------------------------------------
|
||||
SKT.PullLocAddr clc
|
||||
|
@ -1100,6 +1118,7 @@ SKT.PullRemAddr sec
|
|||
|
||||
ldx #S.SOCKADDR-1
|
||||
bcc .1
|
||||
|
||||
ldx #S.SOCKADDR+S.SOCKADDR-1
|
||||
|
||||
.1 lda (ZPTmpPtr1),y
|
||||
|
@ -1140,8 +1159,7 @@ SKT.FindMatchingLocRem
|
|||
beq .8
|
||||
|
||||
phx
|
||||
>SYSCALL2 GetMemPtr
|
||||
>STYA ZPPtrSKT
|
||||
jsr SKT.GetFD
|
||||
plx
|
||||
|
||||
ldy #S.SOCKET.AF
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
NEW
|
||||
AUTO 3,1
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
TCP.IN jsr FRM.GetTargetSKT.TCPUDP
|
||||
jsr SKT.FindMatchingLocRem
|
||||
|
@ -91,11 +90,12 @@ TCP.IN.JMP.SYNSENT
|
|||
|
||||
jsr TCP.IN.ACKTheSYN
|
||||
|
||||
lda #S.TCP.OPTIONS.ACK
|
||||
jsr TCP.OUT.SendOptA SYN.ACK received, Send, ACK
|
||||
jsr TCP.OUT.SendACK SYN.ACK received, Send, ACK
|
||||
bcs .9
|
||||
|
||||
lda #S.SOCKET.TCP.S.ESTBLSH
|
||||
jmp SKT.StoreTCB.S
|
||||
|
||||
.9 lda #S.TCP.OPTIONS.RST
|
||||
jsr TCP.OUT.SendOptA Send RST
|
||||
ldx SKT.Index
|
||||
|
@ -120,9 +120,11 @@ TCP.IN.JMP.SYNRCVD
|
|||
sta SKT.Cache+S.SOCKET.TCP.OUTNEXTSEQ,x ...and update NEXTSEQ
|
||||
eor (ZPFrameInPtr),y
|
||||
bne .8
|
||||
|
||||
dey
|
||||
dex
|
||||
bpl .1
|
||||
|
||||
lda #S.SOCKET.TCP.S.ESTBLSH
|
||||
jmp SKT.StoreTCB.S
|
||||
|
||||
|
@ -267,8 +269,7 @@ TCP.IN.JMP.LASTACK
|
|||
bit #S.TCP.OPTIONS.ACK
|
||||
beq .8
|
||||
|
||||
lda #S.TCP.OPTIONS.ACK
|
||||
jsr TCP.OUT.SendOptA
|
||||
jsr TCP.OUT.SendACK
|
||||
|
||||
ldy #S.SOCKET.TCP.S
|
||||
lda #S.SOCKET.TCP.S.TIMEWT
|
||||
|
@ -296,8 +297,8 @@ TCP.IN.JMP.FINWT1
|
|||
.1 jsr TCP.IN.ACKTheFIN FIN/ACK
|
||||
|
||||
* lda #S.TCP.OPTIONS.FIN+S.TCP.OPTIONS.ACK
|
||||
lda #S.TCP.OPTIONS.ACK
|
||||
jsr TCP.OUT.SendOptA FIN received, Send ACK
|
||||
|
||||
jsr TCP.OUT.SendACK FIN received, Send ACK
|
||||
bcs TCP.IN.JMP.TIMEWT.RTS
|
||||
|
||||
lda #S.SOCKET.TCP.S.LASTACK
|
||||
|
@ -313,9 +314,7 @@ TCP.IN.JMP.FINWT2
|
|||
|
||||
jsr TCP.IN.ACKTheFIN
|
||||
|
||||
lda #S.TCP.OPTIONS.ACK
|
||||
|
||||
jsr TCP.OUT.SendOptA FIN received, Send ACK
|
||||
jsr TCP.OUT.SendACK FIN received, Send ACK
|
||||
bcs TCP.IN.JMP.TIMEWT.RTS
|
||||
|
||||
lda #S.SOCKET.TCP.S.TIMEWT
|
||||
|
@ -409,8 +408,7 @@ TCP.SENDCLOSE ldx #0
|
|||
lda SKT.TABLE,x
|
||||
beq .8
|
||||
|
||||
>SYSCALL2 GetMemPtr
|
||||
>STYA ZPPtrSKT
|
||||
jsr SKT.GetFD
|
||||
|
||||
ldy #S.SOCKET.AF
|
||||
lda (ZPPtrSKT),y
|
||||
|
@ -450,10 +448,6 @@ TCP.SENDCLOSE ldx #0
|
|||
lda #S.SOCKET.TCP.S.SYNSENT
|
||||
jsr SKT.StoreTCB.S
|
||||
bra .8
|
||||
|
||||
lda #S.TCP.OPTIONS.SYN
|
||||
jsr TCP.OUT.SendOptA Send SYN
|
||||
bra .8
|
||||
*--------------------------------------
|
||||
.4 cpx #S.SOCKET.T.SEQPKT
|
||||
bne .6
|
||||
|
@ -539,6 +533,8 @@ TCP.OUT.SEQSEND ldy #S.TCP.WINDOW
|
|||
|
||||
jmp SKT.StoreTCB exits with CC
|
||||
*--------------------------------------
|
||||
TCP.OUT.SendACK lda #S.TCP.OPTIONS.ACK
|
||||
|
||||
TCP.OUT.SendOptA
|
||||
jsr TCP.SetSocketTCPO
|
||||
|
||||
|
@ -607,12 +603,14 @@ TCP.SetSocketTCPO
|
|||
TCP.NewFrame ldx #S.IP.PROTOCOL.TCP
|
||||
jsr FRM.NewIP
|
||||
bcs .9
|
||||
|
||||
jsr SKT.SetFrameOutDstIP
|
||||
|
||||
jsr SKT.SetFrameOutTCPUDPPorts
|
||||
ldy #S.TCP.DATAOFFSET
|
||||
lda #$50 Header size = 5 DWORDS
|
||||
sta (ZPFrameOutPtr),y
|
||||
|
||||
clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
|
@ -624,9 +622,12 @@ TCP.AddAYToSktCacheAtX
|
|||
adc SKT.Cache+2,x
|
||||
sta SKT.Cache+2,x
|
||||
bcc .8
|
||||
|
||||
inc SKT.Cache+1,x
|
||||
bne .8
|
||||
|
||||
inc SKT.Cache,x
|
||||
|
||||
.8 rts
|
||||
*--------------------------------------
|
||||
MAN
|
||||
|
|
|
@ -167,22 +167,22 @@ LIB.LOAD ldx RefCount
|
|||
|
||||
jsr ARP.Clear.I
|
||||
|
||||
>PUSHBI S.SOCKET.T.DGRAM
|
||||
>PUSHBI 0 no protocol
|
||||
lda #S.SOCKET.T.DGRAM
|
||||
jsr SKT.Socket
|
||||
bcs .9
|
||||
|
||||
sta hDNSSocket
|
||||
|
||||
>PUSHA
|
||||
>PUSHW L.SA.LOCAL IP/PORT=All ZERO
|
||||
lda hDNSSocket
|
||||
jsr SKT.Bind
|
||||
|
||||
>LDYAI UDP.PORT.DNS
|
||||
>STYA SA.REMOTE+S.SOCKADDR.PORT
|
||||
|
||||
>PUSHB hDNSSocket
|
||||
>PUSHW L.SA.REMOTE IP=All ZERO
|
||||
lda hDNSSocket
|
||||
jsr SKT.Connect
|
||||
|
||||
jsr DNS.CLEAR
|
||||
|
@ -256,17 +256,20 @@ PULSE and #S.EVT.F.T1SEC
|
|||
*--------------------------------------
|
||||
GetDynPort inc DYNPORT.LAST
|
||||
bne .1
|
||||
|
||||
inc DYNPORT.LAST+1
|
||||
lda DYNPORT.LAST
|
||||
cmp #K.DYNPORT.END
|
||||
lda DYNPORT.LAST+1
|
||||
sbc /K.DYNPORT.END
|
||||
bcs .1
|
||||
|
||||
lda #K.DYNPORT.START
|
||||
ldx /K.DYNPORT.START
|
||||
sta DYNPORT.LAST
|
||||
stx DYNPORT.LAST+1
|
||||
rts CC
|
||||
|
||||
.1 lda DYNPORT.LAST
|
||||
ldx DYNPORT.LAST+1
|
||||
clc
|
||||
|
@ -303,13 +306,13 @@ SA.REMOTE .DA #AF.INET S.SOCKADDR.AF
|
|||
.BS 2 S.SOCKADDR.PORT
|
||||
*--------------------------------------
|
||||
FD.DSOCK .DA #S.FD.T.DSOCK
|
||||
.DA #0 S.FD.HANDLER
|
||||
.BS 1 S.FD.DSOCK.IOHANDLER
|
||||
.DA #0 S.FD.PFT
|
||||
.BS 1 S.FD.DSOCK.IOH
|
||||
.DA #0 S.FD.DSOCK.OPEN
|
||||
.DA #LIBTCPIP.shutdown
|
||||
.DA #LIBTCPIP.Recv
|
||||
.DA #LIBTCPIP.Send
|
||||
.DA #0 S.FD.DSOCK.STATUS
|
||||
.DA #0 S.FD.DSOCK.EOF
|
||||
*--------------------------------------
|
||||
.DA #AF.INET S.SOCKET.AF
|
||||
.BS 1 S.SOCKET.T
|
||||
|
@ -317,8 +320,8 @@ FD.DSOCK .DA #S.FD.T.DSOCK
|
|||
FD.DSOCK.SIZE .EQ *-FD.DSOCK
|
||||
*--------------------------------------
|
||||
FD.SSOCK .DA #S.FD.T.SSOCK
|
||||
.DA #0 S.FD.HANDLER
|
||||
.BS 1 S.FD.SSOCK.IOHANDLER
|
||||
.DA #0 S.FD.PFT
|
||||
.BS 1 S.FD.SSOCK.IOH
|
||||
.DA #0 S.FD.SSOCK.OPEN
|
||||
.DA #LIBTCPIP.shutdown
|
||||
.DA #LIBTCPIP.Read
|
||||
|
|
|
@ -233,15 +233,15 @@ CS.RUN.CheckArgs
|
|||
CS.RUN.CheckArgs.RTS
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN.Connect >PUSHBI 0 no protocol
|
||||
lda #S.SOCKET.T.SEQPKT
|
||||
CS.RUN.Connect >PUSHBI S.SOCKET.T.SEQPKT
|
||||
>PUSHBI 0 no protocol
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Socket
|
||||
bcs .9
|
||||
|
||||
sta hSocket
|
||||
|
||||
>PUSHA
|
||||
>PUSHEA.G SA.LOCAL
|
||||
lda hSocket
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Bind
|
||||
bcs .9
|
||||
|
||||
|
@ -250,8 +250,8 @@ CS.RUN.Connect >PUSHBI 0 no protocol
|
|||
|
||||
.1 >SLEEP
|
||||
|
||||
>PUSHB hSocket
|
||||
>PUSHEA.G SA.REMOTE
|
||||
lda hSocket
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Connect
|
||||
bcc .8
|
||||
|
||||
|
|
|
@ -70,6 +70,7 @@ CS.RUN ldy #S.PS.ARGC
|
|||
lda ArgIndex
|
||||
>SYSCALL ArgV
|
||||
bcs .8
|
||||
|
||||
>STYA ZPPtr1
|
||||
|
||||
jsr CkeckOption
|
||||
|
@ -146,9 +147,9 @@ CS.RUN.LOOP1 >SLEEP
|
|||
|
||||
ldy #S.PS.hStdIn
|
||||
lda (pPS),y
|
||||
|
||||
>SYSCALL FEOF
|
||||
bcs CS.RUN.9 I/O error
|
||||
|
||||
tay
|
||||
bne .1 no char
|
||||
|
||||
|
@ -239,6 +240,7 @@ CS.RUN.IAC.SB >SYSCALL GetChar Wait for IAC SB.IS or SEND
|
|||
|
||||
cmp #IAC
|
||||
beq .4 end of DATA, go wait SE
|
||||
|
||||
ldy IAC.SB.LEN
|
||||
sta (pData),y
|
||||
iny
|
||||
|
@ -247,15 +249,19 @@ CS.RUN.IAC.SB >SYSCALL GetChar Wait for IAC SB.IS or SEND
|
|||
sty IAC.SB.LEN
|
||||
cpy #IAC.BUF.MAX
|
||||
bne .2
|
||||
|
||||
bra .8
|
||||
|
||||
.4 >SYSCALL GetChar
|
||||
bcs .9
|
||||
|
||||
cmp #SE
|
||||
bne .8
|
||||
|
||||
lda IAC.SUBCMD
|
||||
cmp #TN.O.TTYPE
|
||||
bne .8
|
||||
|
||||
lda IAC.SB.CMD
|
||||
cmp #SB.IS
|
||||
bne .8
|
||||
|
@ -268,8 +274,7 @@ CS.RUN.IAC.SB >SYSCALL GetChar Wait for IAC SB.IS or SEND
|
|||
*--------------------------------------
|
||||
CS.RUN.GREETINGS
|
||||
>PUSHW L.MSG.GREETINGS
|
||||
>PUSHB #K.VER
|
||||
>PUSHB /K.VER
|
||||
>PUSHW A2osX.KVER
|
||||
lda ArgDev
|
||||
>SYSCALL ArgV
|
||||
>PUSHYA
|
||||
|
@ -282,7 +287,9 @@ CS.DOEVENT lda (pEvent)
|
|||
|
||||
lda TimeOut
|
||||
beq .9
|
||||
|
||||
dec TimeOut
|
||||
|
||||
.9 sec do not discard TIMER event
|
||||
rts
|
||||
*--------------------------------------
|
||||
|
@ -290,6 +297,7 @@ CS.QUIT lda hFILE
|
|||
beq .8
|
||||
|
||||
>SYSCALL FClose
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
|
|
|
@ -125,6 +125,7 @@ CS.RUN >LDYA L.MSG.TCPWAIT
|
|||
lda (pPS),y
|
||||
>SYSCALL FEOF
|
||||
bcs CS.RUN.RTS I/O err
|
||||
|
||||
tay
|
||||
bne .1
|
||||
|
||||
|
@ -170,15 +171,15 @@ CS.RUN.INIT ldx #3
|
|||
jsr CS.RUN.CONF
|
||||
bcs CS.RUN.RTS
|
||||
|
||||
>PUSHBI S.SOCKET.T.SEQPKT
|
||||
>PUSHBI 0 no protocol
|
||||
lda #S.SOCKET.T.SEQPKT
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Socket
|
||||
bcs CS.RUN.RTS
|
||||
|
||||
sta hSrvSocket
|
||||
|
||||
>PUSHB hSrvSocket
|
||||
>PUSHW L.SA.LOCAL
|
||||
lda hSrvSocket
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Bind
|
||||
bcs CS.RUN.ERR
|
||||
|
||||
|
@ -408,9 +409,9 @@ CS.RUN.CLIENT >LDYAI 1024
|
|||
|
||||
bra .8
|
||||
|
||||
.9 >PUSHWI HTTP.404.len
|
||||
.9 >PUSHB CLN.hSocket
|
||||
>PUSHW L.HTTP.404
|
||||
lda CLN.hSocket
|
||||
>PUSHWI HTTP.404.len
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Send
|
||||
|
||||
.8 bit REQ.KeepAlive
|
||||
|
@ -598,9 +599,11 @@ CS.RUN.SendFile >PUSHW ZPRepPtr
|
|||
plp
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN.SendBuf >PUSHYA
|
||||
CS.RUN.SendBuf pha
|
||||
>PUSHB CLN.hSocket
|
||||
>PUSHW ZPRepPtr
|
||||
lda CLN.hSocket
|
||||
pla
|
||||
>PUSHYA
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Send
|
||||
rts
|
||||
*--------------------------------------
|
||||
|
|
|
@ -118,15 +118,15 @@ CS.RUN.INIT ldx #3
|
|||
>SYSCALL AToI
|
||||
>STYA SA.LOCAL+S.SOCKADDR.PORT
|
||||
|
||||
CS.RUN.PORTOK >PUSHBI 0 no protocol
|
||||
lda #S.SOCKET.T.STREAM
|
||||
CS.RUN.PORTOK >PUSHBI S.SOCKET.T.STREAM
|
||||
>PUSHBI 0 no protocol
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Socket
|
||||
bcs .9
|
||||
|
||||
sta hSrvSocket
|
||||
|
||||
>PUSHA
|
||||
>PUSHW L.SA.LOCAL
|
||||
lda hSrvSocket
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Bind
|
||||
bcs .9
|
||||
|
||||
|
|
|
@ -41,7 +41,10 @@ BLISTX.Free pha
|
|||
.1 lda $ffff,x SELF MODIFIED
|
||||
beq .8
|
||||
|
||||
phx
|
||||
jsr K.FreeMem
|
||||
|
||||
plx
|
||||
inx
|
||||
bra .1
|
||||
|
||||
|
|
|
@ -57,20 +57,15 @@ K.GetDevByName >STYA ZPPtr1 requested dev name
|
|||
bcs .7
|
||||
|
||||
lda Nod.Table.hFD-2,x
|
||||
jsr K.GetMemPtr Y,A = pPD, X = hDevNod
|
||||
|
||||
>STYA pFD for IO.Open
|
||||
|
||||
* clc
|
||||
rts
|
||||
jmp K.GetMemPtr Y,A = pPD, X = hDevNod
|
||||
|
||||
.7 inx
|
||||
inx
|
||||
cpx #K.NOD.MAX*2+2
|
||||
bne .5
|
||||
|
||||
.9 lda #MLI.E.NODEV
|
||||
sec
|
||||
lda #MLI.E.NODEV
|
||||
* sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
.8 >STYA ZPPtr2
|
||||
|
@ -122,6 +117,37 @@ DEV.GetStatus sta K.S.IOCTL+S.IOCTL.S
|
|||
ldx #IOCTL.STATUS
|
||||
*--------------------------------------
|
||||
DEV.pDrvJmp jmp (pDrv)
|
||||
*--------------------------------------
|
||||
DEV.OPEN ldx #IOCTL.OPEN
|
||||
lda IO.hDevNod
|
||||
jsr DEV.pDrvJmp
|
||||
bcs .9
|
||||
|
||||
lda IO.hDevNod
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
DEV.CLOSE ldx #IOCTL.CLOSE
|
||||
lda IO.hDevNod
|
||||
jmp (pDrv)
|
||||
*--------------------------------------
|
||||
DEV.READ ldx #IOCTL.READ
|
||||
.HS 2C BIT ABS
|
||||
*--------------------------------------
|
||||
DEV.WRITE ldx #IOCTL.WRITE
|
||||
|
||||
>PULLW K.S.IOCTL+S.IOCTL.BYTECNT
|
||||
>PULLW K.S.IOCTL+S.IOCTL.BUFPTR
|
||||
|
||||
inc pStack pop hFD
|
||||
|
||||
>LDYAI K.S.IOCTL
|
||||
jsr DEV.pDrvJmp
|
||||
bcs .9
|
||||
|
||||
>LDYA K.S.IOCTL+S.IOCTL.BYTECNT
|
||||
|
||||
.9 rts
|
||||
*/--------------------------------------
|
||||
* # MKDev
|
||||
* Create a hDEV
|
||||
|
|
|
@ -337,7 +337,7 @@ K.FreeMem.ERR >PUSHWI K.FreeMem.MSG
|
|||
|
||||
tya hMem n Y
|
||||
>PUSHA
|
||||
|
||||
* >DEBUG
|
||||
ldy #S.PS.PID
|
||||
lda (pPS),y
|
||||
>PUSHA
|
||||
|
|
|
@ -7,7 +7,6 @@ PIPE.CNT .EQ ZPDRV+4
|
|||
PIPE.BASEH .EQ ZPDRV+6
|
||||
PIPE.BUFH .EQ ZPDRV+7
|
||||
PIPE.SIZEH .EQ ZPDRV+8
|
||||
PIPE.nCNT .EQ ZPDRV+10
|
||||
*--------------------------------------
|
||||
PIPE.OPEN ldy #S.FD.PIPE.S
|
||||
lda (pFD),y
|
||||
|
@ -40,8 +39,8 @@ PIPE.CLOSE ldy #S.FD.PIPE.S
|
|||
*--------------------------------------
|
||||
PIPE.WRITE ldy #S.FD.PIPE.S
|
||||
lda (pFD),y
|
||||
|
||||
bpl .10
|
||||
|
||||
jmp PIPE.eEOF Remote PS closed the Pipe
|
||||
|
||||
.10 ldy #S.FD.PIPE.Free
|
||||
|
@ -233,7 +232,7 @@ PIPE.READ ldy #S.FD.PIPE.Used+1
|
|||
jsr PIPE.SubCnt
|
||||
|
||||
PIPE.EXIT >LDYA PIPE.CNT Y,A = bytes written
|
||||
inc pStack
|
||||
inc pStack Discard hFILE
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
|
|
|
@ -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
|
|
@ -54,7 +54,7 @@ STDIO.Put1 >PUSHWI K.IOBuf buf
|
|||
inc write 1 byte
|
||||
>PUSHA
|
||||
|
||||
jsr K.FWrite
|
||||
STDIO.Write jsr K.FWrite
|
||||
bcc .9
|
||||
|
||||
tay
|
||||
|
@ -108,15 +108,7 @@ K.PutS >STYA .1+1
|
|||
txa
|
||||
>PUSHA
|
||||
|
||||
jsr K.FWrite
|
||||
bcc .99
|
||||
|
||||
tay
|
||||
bne .99
|
||||
|
||||
>POP 5 pop hFile, buffer & len
|
||||
|
||||
.99 rts
|
||||
bra STDIO.Write
|
||||
*/--------------------------------------
|
||||
* # fputs (BLOCKING)
|
||||
* Write Str to hFILE
|
||||
|
@ -166,14 +158,8 @@ K.FPutS lda (pStack)
|
|||
pla
|
||||
>PUSHA push len LO
|
||||
|
||||
jsr K.Write
|
||||
bcc .8
|
||||
|
||||
tay
|
||||
bne .8
|
||||
|
||||
>POP 5
|
||||
rts
|
||||
jsr STDIO.Write
|
||||
bcs K.FPutS.RTS
|
||||
|
||||
.8 >POP 2
|
||||
|
||||
|
@ -381,10 +367,10 @@ K.FOpen jsr PFT.CheckPath4
|
|||
inc pStack discard filename
|
||||
inc pStack
|
||||
|
||||
jmp IO.Open
|
||||
jmp UNISTD.Open
|
||||
|
||||
.9 >POP 6
|
||||
.99 rts
|
||||
rts
|
||||
*/--------------------------------------
|
||||
* # FClose
|
||||
* Close a file
|
||||
|
@ -399,7 +385,7 @@ K.FOpen jsr PFT.CheckPath4
|
|||
K.FClose jsr PFT.CheckNodeA
|
||||
bcs K.FRead.RTS
|
||||
|
||||
jmp IO.Close
|
||||
jmp UNISTD.Close
|
||||
*/--------------------------------------
|
||||
* # FRead (BLOCKING)
|
||||
* Read bytes from file
|
||||
|
@ -577,7 +563,7 @@ K.FEOF jsr PFT.CheckNodeA
|
|||
.DA STDIO.IOERR BDEV
|
||||
.DA STDIO.IOERR LNK
|
||||
.DA STDIO.IOERR DSOCK
|
||||
.DA IO.EOF.SSOCK
|
||||
.DA SOCK.EOF
|
||||
.DA PIPE.EOF
|
||||
*/--------------------------------------
|
||||
* # FTell
|
||||
|
|
|
@ -21,13 +21,14 @@ K.Open jsr PFT.CheckPath1
|
|||
stz IO.Open.AUXTYPE
|
||||
stz IO.Open.AUXTYPE+1
|
||||
*--------------------------------------
|
||||
IO.Open ldx #5 /dev/
|
||||
UNISTD.Open ldx #5 /dev/
|
||||
cpx K.MLI.PATH
|
||||
bcs .8
|
||||
|
||||
.1 lda K.MLI.PATH,x
|
||||
cmp IO.DEV-1,x
|
||||
bne .8
|
||||
|
||||
dex
|
||||
bne .1
|
||||
*--------------------------------------
|
||||
|
@ -37,8 +38,10 @@ IO.Open ldx #5 /dev/
|
|||
|
||||
jsr K.GetDevByName
|
||||
bcs .9
|
||||
*--------------------------------------
|
||||
stx IO.hDevNod pFD set by GetDevByName
|
||||
|
||||
>STYA pFD
|
||||
|
||||
stx IO.hDevNod
|
||||
|
||||
lda (pFD) #S.FD.T
|
||||
tax
|
||||
|
@ -47,11 +50,11 @@ IO.Open ldx #5 /dev/
|
|||
.2
|
||||
* .DA STDIO.IOERR REG
|
||||
.DA STDIO.IOERR DIR
|
||||
.DA IO.OPEN.DEV
|
||||
.DA IO.OPEN.DEV
|
||||
.DA DEV.OPEN
|
||||
.DA DEV.OPEN
|
||||
.DA STDIO.IOERR LNK
|
||||
.DA IO.OPEN.SOCK
|
||||
.DA IO.OPEN.SOCK
|
||||
.DA SOCK.OPEN
|
||||
.DA SOCK.OPEN
|
||||
.DA PIPE.OPEN
|
||||
|
||||
.8 jmp FS.OPEN.REG
|
||||
|
@ -68,16 +71,16 @@ IO.Open ldx #5 /dev/
|
|||
*\--------------------------------------
|
||||
K.Close jsr DEV.GetPFD
|
||||
|
||||
IO.Close lda (pFD) #S.FD.T
|
||||
UNISTD.Close lda (pFD) #S.FD.T
|
||||
tax
|
||||
jmp (.1,x)
|
||||
.1 .DA FS.CLOSE.REG
|
||||
.DA FS.CLOSE.DIR
|
||||
.DA IO.CLOSE.DEV
|
||||
.DA IO.CLOSE.DEV
|
||||
.DA DEV.CLOSE
|
||||
.DA DEV.CLOSE
|
||||
.DA STDIO.IOERR LNK
|
||||
.DA IO.CLOSE.SOCK
|
||||
.DA IO.CLOSE.SOCK
|
||||
.DA SOCK.CLOSE
|
||||
.DA SOCK.CLOSE
|
||||
.DA PIPE.CLOSE
|
||||
*/--------------------------------------
|
||||
* # read
|
||||
|
@ -103,11 +106,11 @@ UNISTD.Read lda (pFD) #S.FD.T
|
|||
jmp (.1,x)
|
||||
.1 .DA FS.READ.REG
|
||||
.DA STDIO.IOERR DIR
|
||||
.DA IO.READ.CDEV
|
||||
.DA DEV.READ
|
||||
.DA STDIO.IOERR BDEV
|
||||
.DA STDIO.IOERR LNK
|
||||
.DA STDIO.IOERR DSOCK
|
||||
.DA IO.READ.SSOCK
|
||||
.DA SOCK.READ
|
||||
.DA PIPE.READ
|
||||
*/--------------------------------------
|
||||
* # write
|
||||
|
@ -133,65 +136,12 @@ UNISTD.Write lda (pFD) #S.FD.T
|
|||
jmp (.1,x)
|
||||
.1 .DA FS.WRITE.REG
|
||||
.DA STDIO.IOERR DIR
|
||||
.DA IO.WRITE.CDEV
|
||||
.DA DEV.WRITE
|
||||
.DA STDIO.IOERR BDEV
|
||||
.DA STDIO.IOERR LNK
|
||||
.DA STDIO.IOERR DSOCK
|
||||
.DA IO.WRITE.SSOCK
|
||||
.DA SOCK.WRITE
|
||||
.DA PIPE.WRITE
|
||||
*--------------------------------------
|
||||
IO.OPEN.DEV ldx #IOCTL.OPEN
|
||||
lda IO.hDevNod
|
||||
jsr DEV.pDrvJmp
|
||||
bcs IO.RTS
|
||||
*--------------------------------------
|
||||
IO.OPEN.SOCK lda IO.hDevNod
|
||||
clc
|
||||
|
||||
IO.RTS rts
|
||||
*--------------------------------------
|
||||
IO.CLOSE.DEV ldx #IOCTL.CLOSE
|
||||
lda IO.hDevNod
|
||||
jmp DEV.pDrvJmp
|
||||
*--------------------------------------
|
||||
IO.READ.CDEV ldx #IOCTL.READ
|
||||
.HS 2C BIT ABS
|
||||
*--------------------------------------
|
||||
IO.WRITE.CDEV ldx #IOCTL.WRITE
|
||||
|
||||
>PULLW K.S.IOCTL+S.IOCTL.BYTECNT
|
||||
>PULLW K.S.IOCTL+S.IOCTL.BUFPTR
|
||||
|
||||
inc pStack pop hFD
|
||||
|
||||
>LDYAI K.S.IOCTL
|
||||
jsr DEV.pDrvJmp
|
||||
bcs .9
|
||||
|
||||
>LDYA K.S.IOCTL+S.IOCTL.BYTECNT
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
IO.CLOSE.SOCK ldy #S.FD.SSOCK.CLOSE
|
||||
.HS 2C BIT ABS
|
||||
*--------------------------------------
|
||||
IO.EOF.SSOCK ldy #S.FD.SSOCK.EOF
|
||||
.HS 2C BIT ABS
|
||||
*--------------------------------------
|
||||
IO.READ.SSOCK ldy #S.FD.SSOCK.READ
|
||||
.HS 2C BIT ABS
|
||||
*--------------------------------------
|
||||
IO.WRITE.SSOCK ldy #S.FD.SSOCK.WRITE
|
||||
|
||||
lda (pFD),y
|
||||
tax Function Offset in LIB
|
||||
|
||||
ldy #S.FD.SSOCK.IOH
|
||||
lda (pFD),y
|
||||
jsr K.GetMemPtr
|
||||
>STYA .1+1
|
||||
lda IO.hFD
|
||||
.1 jmp $FFFF SELF MODIFIED
|
||||
*/-------------------------------------
|
||||
* # LSeek
|
||||
* Set the file-position indicator for hFD
|
||||
|
@ -204,7 +154,7 @@ IO.WRITE.SSOCK ldy #S.FD.SSOCK.WRITE
|
|||
* `>PUSHB whence`
|
||||
* `>SYSCALL fseek`
|
||||
*\-------------------------------------
|
||||
K.LSeek
|
||||
*K.LSeek
|
||||
|
||||
*/--------------------------------------
|
||||
* # ChOwn
|
||||
|
|
|
@ -81,6 +81,7 @@ D1.B .PH $D000
|
|||
.INB usr/src/sys/kernel.s.unistd
|
||||
.INB usr/src/sys/kernel.s.stdio
|
||||
.INB usr/src/sys/kernel.s.dev
|
||||
.INB usr/src/sys/kernel.s.sock
|
||||
.INB usr/src/sys/kernel.s.pipe
|
||||
.EP
|
||||
D1.S .EQ *-D1.B
|
||||
|
|
Loading…
Reference in New Issue