mirror of
https://github.com/A2osX/A2osX.git
synced 2024-09-28 18:55:10 +00:00
Kernel 0.9.2
This commit is contained in:
parent
8bcf18386a
commit
005c2ee1c6
Binary file not shown.
Binary file not shown.
@ -37,28 +37,35 @@ L.LIBTCPIP .DA LIBTCPIP
|
|||||||
L.SSCANF.IP .DA SSCANF.IP
|
L.SSCANF.IP .DA SSCANF.IP
|
||||||
L.MSG0 .DA MSG0
|
L.MSG0 .DA MSG0
|
||||||
L.MSG1 .DA MSG1
|
L.MSG1 .DA MSG1
|
||||||
|
L.MSG.USAGE .DA MSG.USAGE
|
||||||
.DA 0
|
.DA 0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.INIT >LDYA L.LIBTCPIP
|
CS.INIT >LDYA L.LIBTCPIP
|
||||||
>SYSCALL LoadLib
|
>SYSCALL LoadLib
|
||||||
sta hLIBTCPIP
|
sta hLIBTCPIP
|
||||||
|
|
||||||
* lda (pPs)
|
|
||||||
* ora #S.PS.F.EVENT Now accept events
|
|
||||||
* sta (pPs)
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN ldy #S.PS.ARGC
|
CS.RUN ldy #S.PS.ARGC
|
||||||
lda (pPs),y
|
lda (pPs),y
|
||||||
bne CS.RUN.ADD
|
cmp #1
|
||||||
|
bne .1
|
||||||
jmp CS.RUN.DUMP
|
jmp CS.RUN.DUMP
|
||||||
*--------------------------------------
|
|
||||||
CS.RUN.ADD cmp #2
|
|
||||||
beq .1
|
|
||||||
jmp .9
|
|
||||||
|
|
||||||
.1 >PUSHEA.G DST.IP+3
|
.1 cmp #3
|
||||||
|
beq CS.RUN.ADD
|
||||||
|
|
||||||
|
>PUSHBI 0
|
||||||
|
>LDYA L.MSG.USAGE
|
||||||
|
|
||||||
|
>SYSCALL printf
|
||||||
|
|
||||||
|
lda #E.SYN
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
CS.RUN.ADD >PUSHEA.G DST.IP+3
|
||||||
>PUSHEA.G DST.IP+2
|
>PUSHEA.G DST.IP+2
|
||||||
>PUSHEA.G DST.IP+1
|
>PUSHEA.G DST.IP+1
|
||||||
>PUSHEA.G DST.IP
|
>PUSHEA.G DST.IP
|
||||||
@ -152,10 +159,12 @@ CS.QUIT lda hLIBTCPIP
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.END
|
CS.END
|
||||||
LIBTCPIP .AZ "libtcpip"
|
LIBTCPIP .AZ "libtcpip"
|
||||||
|
hLIBTCPIP .BS 1
|
||||||
SSCANF.IP .AZ "%d.%d.%d.%d"
|
SSCANF.IP .AZ "%d.%d.%d.%d"
|
||||||
MSG0 .AZ "STS TR.ID Hostname IP Address TTL"
|
MSG0 .AZ "STS TR.ID Hostname IP Address TTL"
|
||||||
MSG1 .AZ "$%h $%H %32s %03d.%03d.%03d.%03d %u\r\n"
|
MSG1 .AZ "$%h $%H %32s %03d.%03d.%03d.%03d %u\r\n"
|
||||||
hLIBTCPIP .BS 1
|
MSG.USAGE .AS "Usage : Add a static entry, DNSINFO <host> <IP>\r\n"
|
||||||
|
.AZ " Dump DNS Cache, DNSINFO \r\n"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DS.START
|
DS.START
|
||||||
DST.IP .BS 4
|
DST.IP .BS 4
|
||||||
|
@ -39,7 +39,6 @@ CS.START cld
|
|||||||
.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
|
||||||
L.SA.LOCAL.AD .DA SA.LOCAL+S.SOCKADDR.ADDR
|
|
||||||
L.SA.REMOTE .DA SA.REMOTE
|
L.SA.REMOTE .DA SA.REMOTE
|
||||||
L.SA.REMOTE.AD .DA SA.REMOTE+S.SOCKADDR.ADDR
|
L.SA.REMOTE.AD .DA SA.REMOTE+S.SOCKADDR.ADDR
|
||||||
L.MSG.IPKO .DA MSG.IPKO
|
L.MSG.IPKO .DA MSG.IPKO
|
||||||
@ -75,8 +74,17 @@ CS.RUN >LIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG is TCPIP loaded ?
|
|||||||
|
|
||||||
CS.RUN.IPOK ldy #S.PS.ARGC
|
CS.RUN.IPOK ldy #S.PS.ARGC
|
||||||
lda (pPs),y
|
lda (pPs),y
|
||||||
|
cmp #2
|
||||||
beq .9
|
bcc .9
|
||||||
|
|
||||||
|
ldy #S.IPCFG.IP+3
|
||||||
|
ldx #3
|
||||||
|
|
||||||
|
.1 lda (ZPIPCfgPtr),y
|
||||||
|
sta SA.LOCAL+S.SOCKADDR.ADDR,x
|
||||||
|
dey
|
||||||
|
dex
|
||||||
|
bpl .1
|
||||||
|
|
||||||
jsr Init.Timeout
|
jsr Init.Timeout
|
||||||
|
|
||||||
@ -105,13 +113,10 @@ CS.RUN.IPOK ldy #S.PS.ARGC
|
|||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
CS.RUN.HOSTOK ldy #S.PS.ARGC
|
CS.RUN.HOSTOK lda #2
|
||||||
lda (pPs),y
|
|
||||||
cmp #2
|
|
||||||
bcc CS.RUN.PORTOK
|
|
||||||
|
|
||||||
lda #2
|
|
||||||
>SYSCALL ArgV
|
>SYSCALL ArgV
|
||||||
|
bcs CS.RUN.PORTOK
|
||||||
|
|
||||||
>SYSCALL atoi
|
>SYSCALL atoi
|
||||||
>STYA SA.REMOTE+S.SOCKADDR.PORT
|
>STYA SA.REMOTE+S.SOCKADDR.PORT
|
||||||
|
|
||||||
@ -152,7 +157,8 @@ CS.RUN.OPENSKT >PUSHBI 0 no protocol
|
|||||||
.2 >PUSHW L.SA.REMOTE
|
.2 >PUSHW L.SA.REMOTE
|
||||||
>LDA.G hSocket
|
>LDA.G hSocket
|
||||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Connect
|
>LIBCALL hLIBTCPIP,LIBTCPIP.Connect
|
||||||
|
bcs .9
|
||||||
|
|
||||||
>LDYA L.MSG.SKTOK
|
>LDYA L.MSG.SKTOK
|
||||||
>SYSCALL puts
|
>SYSCALL puts
|
||||||
|
|
||||||
@ -164,7 +170,6 @@ CS.RUN.OPENSKT >PUSHBI 0 no protocol
|
|||||||
>STA.G hBuf
|
>STA.G hBuf
|
||||||
|
|
||||||
CS.RUN.LOOP >SLEEP
|
CS.RUN.LOOP >SLEEP
|
||||||
|
|
||||||
>PUSHWI BUFSIZE
|
>PUSHWI BUFSIZE
|
||||||
>PUSHW ZPBufPtr
|
>PUSHW ZPBufPtr
|
||||||
>LDA.G hSocket
|
>LDA.G hSocket
|
||||||
@ -179,14 +184,15 @@ CS.RUN.LOOP >SLEEP
|
|||||||
>PUSHW ZPBufPtr
|
>PUSHW ZPBufPtr
|
||||||
ldy #S.PS.hStdOut
|
ldy #S.PS.hStdOut
|
||||||
lda (pPs),y
|
lda (pPs),y
|
||||||
>SYSCALL write
|
>SYSCALL fwrite
|
||||||
bcs .11
|
bcs .11
|
||||||
|
|
||||||
.2 >PUSHWI BUFSIZE
|
.2 >PUSHWI BUFSIZE
|
||||||
>PUSHW ZPBufPtr
|
>PUSHW ZPBufPtr
|
||||||
ldy #S.PS.hStdIn
|
ldy #S.PS.hStdIn
|
||||||
lda (pPs),y
|
lda (pPs),y
|
||||||
>SYSCALL read
|
|
||||||
|
>SYSCALL fread
|
||||||
bcc .3
|
bcc .3
|
||||||
tay
|
tay
|
||||||
beq CS.RUN.LOOP no char from STDIN
|
beq CS.RUN.LOOP no char from STDIN
|
||||||
@ -198,14 +204,20 @@ CS.RUN.LOOP >SLEEP
|
|||||||
cmp #3 Ctrl-C
|
cmp #3 Ctrl-C
|
||||||
beq CS.RUN.USER
|
beq CS.RUN.USER
|
||||||
|
|
||||||
>PUSHW ZPBufLen
|
.4 >PUSHW ZPBufLen
|
||||||
>PUSHW ZPBufPtr
|
>PUSHW ZPBufPtr
|
||||||
>LDA.G hSocket
|
>LDA.G hSocket
|
||||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Write
|
>LIBCALL hLIBTCPIP,LIBTCPIP.Write
|
||||||
|
|
||||||
bcs CS.RUN.SKTERR
|
bcc .8
|
||||||
|
|
||||||
jmp CS.RUN.LOOP
|
tay
|
||||||
|
bne CS.RUN.SKTERR
|
||||||
|
|
||||||
|
* >SLEEP
|
||||||
|
* bra .4
|
||||||
|
|
||||||
|
.8 jmp CS.RUN.LOOP
|
||||||
|
|
||||||
.9 lda #0
|
.9 lda #0
|
||||||
sec
|
sec
|
||||||
|
@ -106,8 +106,16 @@ DNS.REQUEST lda hDNSSocket
|
|||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DNS.REQUEST.SEND
|
DNS.REQUEST.SEND
|
||||||
|
ldy #3
|
||||||
* TODO : >PUSHW L.SOCKADDR.DNS1....DNS2
|
.1 lda IPCFG+S.IPCFG.DNS1,y
|
||||||
|
sta SA.REMOTE+S.SOCKADDR.ADDR,y
|
||||||
|
dey
|
||||||
|
bpl .1
|
||||||
|
|
||||||
|
>LDYAI UDP.PORT.DNS
|
||||||
|
>STYA SA.REMOTE+S.SOCKADDR.PORT
|
||||||
|
|
||||||
|
>PUSHW L.SA.REMOTE
|
||||||
|
|
||||||
>PUSHW DNS.MSG.LEN
|
>PUSHW DNS.MSG.LEN
|
||||||
>PUSHW L.DNS.MSG
|
>PUSHW L.DNS.MSG
|
||||||
@ -415,7 +423,7 @@ DNS.DecodeMsg sta hFrameIn
|
|||||||
>SYSCALL GetMemPtr
|
>SYSCALL GetMemPtr
|
||||||
>STYA ZPFrameInPtr
|
>STYA ZPFrameInPtr
|
||||||
|
|
||||||
ldy #S.DNS.F+1
|
ldy #S.DNS.F
|
||||||
lda (ZPFrameInPtr),y
|
lda (ZPFrameInPtr),y
|
||||||
and /S.DNS.F.QR
|
and /S.DNS.F.QR
|
||||||
beq .9
|
beq .9
|
||||||
|
@ -16,22 +16,19 @@ AUTO 4,1
|
|||||||
* CC: A = hSOCKET
|
* CC: A = hSOCKET
|
||||||
* CS: A = EC
|
* CS: A = EC
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
SKT.Socket tax type (RAW,DGRAM,SEQPACKET,STREAM)
|
SKT.Socket tax
|
||||||
|
|
||||||
>PULLA get protocol (RAW)
|
>PULLA get protocol (RAW)
|
||||||
|
|
||||||
SKT.Socket.I jmp (J.SKT.Socket,x)
|
SKT.Socket.I jmp (J.SKT.Socket,x)
|
||||||
|
|
||||||
SKT.Socket.RAW ldy #S.SOCKET socket.size
|
SKT.Socket.RAW ldy #S.SOCKET
|
||||||
bra SKT.Socket.DSOCK
|
bra SKT.Socket.DSOCK
|
||||||
SKT.Socket.DGRAM
|
SKT.Socket.DGRAM
|
||||||
lda #S.IP.PROTOCOL.UDP
|
lda #S.IP.PROTOCOL.UDP
|
||||||
ldy #S.SOCKET socket.size
|
ldy #S.SOCKET
|
||||||
bra SKT.Socket.DSOCK
|
bra SKT.Socket.DSOCK
|
||||||
SKT.Socket.SEQPACKET
|
SKT.Socket.SEQPACKET
|
||||||
lda #S.IP.PROTOCOL.TCP
|
lda #S.IP.PROTOCOL.TCP
|
||||||
ldy #S.SOCKET.TCP socket.size
|
ldy #S.SOCKET.TCP
|
||||||
|
|
||||||
SKT.Socket.DSOCK
|
SKT.Socket.DSOCK
|
||||||
stx FD.DSOCK+S.SOCKET.T save type
|
stx FD.DSOCK+S.SOCKET.T save type
|
||||||
sta FD.DSOCK+S.SOCKET.PROTO ICMP,UDP,TCP
|
sta FD.DSOCK+S.SOCKET.PROTO ICMP,UDP,TCP
|
||||||
@ -40,27 +37,27 @@ SKT.Socket.DSOCK
|
|||||||
bcs .9
|
bcs .9
|
||||||
>STYA ZPTmpPtr1
|
>STYA ZPTmpPtr1
|
||||||
stx FD.DSOCK+S.FD.DSOCK.HSKT
|
stx FD.DSOCK+S.FD.DSOCK.HSKT
|
||||||
|
|
||||||
jsr SKT.Socket.FindFree
|
jsr SKT.Socket.FindFree
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
ldy #FD.DSOCK.SIZE-1
|
ldy #FD.DSOCK.SIZE-1
|
||||||
|
|
||||||
.1 lda FD.DSOCK,y
|
.1 lda FD.DSOCK,y
|
||||||
sta (ZPTmpPtr1),y
|
sta (ZPTmpPtr1),y
|
||||||
dey
|
dey
|
||||||
bpl .1
|
bpl .1
|
||||||
|
|
||||||
txa
|
txa
|
||||||
clc
|
clc
|
||||||
.9 rts
|
.9 rts
|
||||||
|
|
||||||
SKT.Socket.STREAM
|
SKT.Socket.STREAM
|
||||||
lda #S.IP.PROTOCOL.TCP
|
lda #S.IP.PROTOCOL.TCP
|
||||||
ldy #S.SOCKET.TCP
|
ldy #S.SOCKET.TCP
|
||||||
|
|
||||||
stx FD.SSOCK+S.SOCKET.T save type
|
stx FD.SSOCK+S.SOCKET.T save type
|
||||||
sta FD.SSOCK+S.SOCKET.PROTO ICMP,UDP,TCP
|
sta FD.SSOCK+S.SOCKET.PROTO
|
||||||
lda #0 Y = socket.size
|
lda #0 Y = socket.size
|
||||||
>SYSCALL GetMem0
|
>SYSCALL GetMem0
|
||||||
bcs .9
|
bcs .9
|
||||||
@ -116,22 +113,21 @@ SKT.Socket.FindFree
|
|||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
SKT.bind >SYSCALL GetMemPtr
|
SKT.bind >SYSCALL GetMemPtr
|
||||||
>STYA ZPPtrSKT
|
>STYA ZPPtrSKT
|
||||||
|
|
||||||
jsr SKT.PullLocAddr
|
jsr SKT.PullLocAddr
|
||||||
|
|
||||||
lda SKT.LOC.ADDR+S.SOCKADDR.PORT
|
lda SKT.LOC.ADDR+S.SOCKADDR.PORT
|
||||||
bne .1
|
bne .1
|
||||||
ldx SKT.LOC.ADDR+S.SOCKADDR.PORT+1
|
ldx SKT.LOC.ADDR+S.SOCKADDR.PORT+1
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
jsr GetDynPort
|
jsr GetDynPort
|
||||||
|
|
||||||
sta SKT.LOC.ADDR+S.SOCKADDR.PORT
|
sta SKT.LOC.ADDR+S.SOCKADDR.PORT
|
||||||
stx SKT.LOC.ADDR+S.SOCKADDR.PORT+1
|
stx SKT.LOC.ADDR+S.SOCKADDR.PORT+1
|
||||||
|
|
||||||
.1 jsr SKT.FindMatchingLoc
|
.1 jsr SKT.FindMatchingLoc
|
||||||
bcc .9
|
bcc .9
|
||||||
|
|
||||||
jsr SKT.SetLocAddr
|
jsr SKT.SetLocAddr
|
||||||
|
|
||||||
clc
|
clc
|
||||||
@ -142,7 +138,7 @@ SKT.bind >SYSCALL GetMemPtr
|
|||||||
rts
|
rts
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # Connect
|
* # Connect
|
||||||
* Iinitiate a connection on a socket
|
* Initiate a connection on a socket
|
||||||
* ## C
|
* ## C
|
||||||
* `int connect(hFD fd, const struct sockaddr *addr);`
|
* `int connect(hFD fd, const struct sockaddr *addr);`
|
||||||
* ## ASM
|
* ## ASM
|
||||||
@ -163,71 +159,27 @@ SKT.connect >SYSCALL GetMemPtr
|
|||||||
lda (ZPPtrSKT),y
|
lda (ZPPtrSKT),y
|
||||||
tax
|
tax
|
||||||
jmp (J.SKT.connect,x)
|
jmp (J.SKT.connect,x)
|
||||||
|
|
||||||
SKT.connect.RAW
|
SKT.connect.RAW
|
||||||
SKT.connect.DGRAM
|
SKT.connect.DGRAM
|
||||||
|
|
||||||
jsr SKT.SetRemAddr
|
jsr SKT.SetRemAddr
|
||||||
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
SKT.connect.STREAM
|
SKT.connect.STREAM
|
||||||
>LDYAI K.TCP.WSIZE
|
|
||||||
>SYSCALL getmem
|
|
||||||
bcs SKT.connect.99
|
|
||||||
txa
|
|
||||||
|
|
||||||
ldy #S.SOCKET.SQ.hInMem
|
|
||||||
sta (ZPPtrSKT),y
|
|
||||||
|
|
||||||
>LDYAI K.TCP.WSIZE
|
|
||||||
>SYSCALL getmem
|
|
||||||
bcs SKT.connect.99
|
|
||||||
txa
|
|
||||||
|
|
||||||
ldy #S.SOCKET.SQ.hOutMem
|
|
||||||
sta (ZPPtrSKT),y
|
|
||||||
|
|
||||||
SKT.connect.SEQPACKET
|
SKT.connect.SEQPACKET
|
||||||
ldy #S.SOCKET.TCP.S
|
|
||||||
lda (ZPPtrSKT),y
|
|
||||||
bne SKT.connect.9
|
|
||||||
|
|
||||||
jsr SKT.SetRemAddr
|
jsr SKT.SetRemAddr
|
||||||
|
jsr SKT.NewTCB
|
||||||
|
bcs SKT.connect.99
|
||||||
|
|
||||||
lda #K.TCP.WSIZE
|
|
||||||
ldy #S.SOCKET.TCP.INFREE
|
|
||||||
sta (ZPPtrSKT),y
|
|
||||||
ldy #S.SOCKET.TCP.OUTFREE
|
|
||||||
sta (ZPPtrSKT),y
|
|
||||||
|
|
||||||
lda /K.TCP.WSIZE
|
|
||||||
ldy #S.SOCKET.TCP.INFREE
|
|
||||||
sta (ZPPtrSKT),y
|
|
||||||
ldy #S.SOCKET.TCP.OUTFREE
|
|
||||||
sta (ZPPtrSKT),y
|
|
||||||
|
|
||||||
ldy #S.SOCKET.TCP.OUTNEXTSEQ
|
|
||||||
|
|
||||||
.2 lda A2osX.TIMER16-S.SOCKET.TCP.OUTNEXTSEQ,y
|
|
||||||
sta (ZPPtrSKT),y
|
|
||||||
iny
|
|
||||||
cpy #S.SOCKET.TCP.OUTNEXTSEQ+4
|
|
||||||
bne .2
|
|
||||||
|
|
||||||
lda #S.TCP.OPTIONS.SYN
|
lda #S.TCP.OPTIONS.SYN
|
||||||
jsr TCP.OUT.SendOptA Send SYN
|
jsr TCP.OUT.SendOptA Send SYN
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
ldy #S.SOCKET.TCP.S
|
|
||||||
lda #S.SOCKET.TCP.S.SYNSENT
|
lda #S.SOCKET.TCP.S.SYNSENT
|
||||||
sta (ZPPtrSKT),y
|
sta SKT.TmpCache+S.SOCKET.TCP.S
|
||||||
|
|
||||||
clc
|
jmp SKT.StoreTCB
|
||||||
.9 rts
|
|
||||||
|
|
||||||
SKT.connect.9 lda #ERR.SKT.BAD
|
.9 lda #ERR.SKT.BAD
|
||||||
sec
|
sec
|
||||||
SKT.connect.99 rts
|
SKT.connect.99 rts
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
@ -358,9 +310,7 @@ SKT.shutdown >SYSCALL GetMemPtr
|
|||||||
>SYSCALL FreeMem
|
>SYSCALL FreeMem
|
||||||
bra .1
|
bra .1
|
||||||
|
|
||||||
.8 lda #0
|
.8 clc
|
||||||
sta (ZPPtrSKT)
|
|
||||||
clc
|
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 lda #ERR.SKT.BAD
|
.9 lda #ERR.SKT.BAD
|
||||||
@ -474,7 +424,7 @@ SKT.Write >SYSCALL GetMemPtr
|
|||||||
ldy #S.SOCKET.TCP.S
|
ldy #S.SOCKET.TCP.S
|
||||||
lda (ZPPtrSKT),y
|
lda (ZPPtrSKT),y
|
||||||
cmp #S.SOCKET.TCP.S.ESTBLSH
|
cmp #S.SOCKET.TCP.S.ESTBLSH
|
||||||
bne .91
|
bcc .90 Not yet established...no data
|
||||||
|
|
||||||
jsr SKT.AddDataToSktOut will call SKT.GetTCB
|
jsr SKT.AddDataToSktOut will call SKT.GetTCB
|
||||||
bcs .90
|
bcs .90
|
||||||
@ -509,11 +459,16 @@ SKT.Write >SYSCALL GetMemPtr
|
|||||||
* CC: A = hMem
|
* CC: A = hMem
|
||||||
* CS: A = EC
|
* CS: A = EC
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
SKT.RecvFrom sec
|
SKT.RecvFrom pha
|
||||||
|
>PULLW ZPTmpPtr1 addr
|
||||||
|
pla
|
||||||
|
|
||||||
|
sec
|
||||||
.HS 90 BCC
|
.HS 90 BCC
|
||||||
SKT.Recv clc
|
SKT.Recv clc
|
||||||
php
|
|
||||||
|
|
||||||
|
php
|
||||||
|
|
||||||
>SYSCALL GetMemPtr
|
>SYSCALL GetMemPtr
|
||||||
>STYA ZPPtrSKT
|
>STYA ZPPtrSKT
|
||||||
|
|
||||||
@ -544,13 +499,12 @@ SKT.Recv clc
|
|||||||
tay
|
tay
|
||||||
lda (ZPPtrSKT),y
|
lda (ZPPtrSKT),y
|
||||||
plp
|
plp
|
||||||
bcc .9
|
bcc .9 Exit with CC and A=hFrame
|
||||||
|
|
||||||
pha
|
pha
|
||||||
>SYSCALL GetMemPtr
|
>SYSCALL GetMemPtr
|
||||||
>STYA ZPFrameInPtr
|
>STYA ZPFrameInPtr
|
||||||
|
|
||||||
>PULLW ZPTmpPtr1 addr
|
|
||||||
|
|
||||||
ldy #S.IP.SRC
|
ldy #S.IP.SRC
|
||||||
|
|
||||||
.2 lda (ZPFrameInPtr),y
|
.2 lda (ZPFrameInPtr),y
|
||||||
@ -625,41 +579,35 @@ SKT.Send clc
|
|||||||
>STYA ZPPtrSKT
|
>STYA ZPPtrSKT
|
||||||
plp
|
plp
|
||||||
|
|
||||||
|
>PULLW ZPDataInPtr
|
||||||
|
>PULLW ZPDataInLen
|
||||||
|
|
||||||
bcc .1
|
bcc .1
|
||||||
|
|
||||||
jsr SKT.PullRemAddr
|
jsr SKT.PullRemAddr
|
||||||
|
jsr SKT.SetRemAddr
|
||||||
|
|
||||||
.1 >PULLW ZPDataInPtr
|
.1 ldy #S.SOCKET.T
|
||||||
>PULLW ZPDataInLen
|
|
||||||
|
|
||||||
ldy #S.SOCKET.T
|
|
||||||
lda (ZPPtrSKT),y
|
lda (ZPPtrSKT),y
|
||||||
tax
|
tax
|
||||||
jmp (J.SKT.send,x)
|
jmp (J.SKT.send,x)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SKT.Send.RAW ldy #S.SOCKET.PROTO
|
SKT.Send.RAW ldy #S.SOCKET.PROTO
|
||||||
lda (ZPPtrSKT),y
|
lda (ZPPtrSKT),y
|
||||||
|
|
||||||
tax
|
tax
|
||||||
>LDYA ZPDataInLen
|
>LDYA ZPDataInLen
|
||||||
jsr FRM.NewIP
|
jsr FRM.NewIP
|
||||||
bcs SKT.Send.9
|
bcs SKT.Send.9
|
||||||
|
|
||||||
bra SKT.Send.DGRAM.8
|
bra SKT.Send.DGRAM.8
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SKT.Send.DGRAM ldx #S.IP.PROTOCOL.UDP
|
SKT.Send.DGRAM ldx #S.IP.PROTOCOL.UDP
|
||||||
>LDYA ZPDataInLen
|
>LDYA ZPDataInLen
|
||||||
jsr FRM.NewIP
|
jsr FRM.NewIP
|
||||||
bcs SKT.Send.9
|
bcs SKT.Send.9
|
||||||
|
|
||||||
jsr SKT.SetFrameOutTCPUDPPorts
|
jsr SKT.SetFrameOutTCPUDPPorts
|
||||||
|
|
||||||
SKT.Send.DGRAM.8
|
SKT.Send.DGRAM.8
|
||||||
|
|
||||||
jsr SKT.SetFrameOutDstIP
|
jsr SKT.SetFrameOutDstIP
|
||||||
|
|
||||||
jsr SKT.CopyDataInToOut
|
jsr SKT.CopyDataInToOut
|
||||||
|
|
||||||
jmp FRM.SendIP
|
jmp FRM.SendIP
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SKT.Send.STREAM lda #ERR.SKT.BAD
|
SKT.Send.STREAM lda #ERR.SKT.BAD
|
||||||
@ -685,9 +633,7 @@ SKT.GetTable >LDYA L.SKT.Table
|
|||||||
* PRIVATE
|
* PRIVATE
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SKT.PullLocAddr >PULLW ZPTmpPtr1
|
SKT.PullLocAddr >PULLW ZPTmpPtr1
|
||||||
|
|
||||||
ldy #S.SOCKADDR-1
|
ldy #S.SOCKADDR-1
|
||||||
|
|
||||||
.1 lda (ZPTmpPtr1),y
|
.1 lda (ZPTmpPtr1),y
|
||||||
sta SKT.LOC.ADDR,y
|
sta SKT.LOC.ADDR,y
|
||||||
dey
|
dey
|
||||||
@ -695,9 +641,7 @@ SKT.PullLocAddr >PULLW ZPTmpPtr1
|
|||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SKT.PullRemAddr >PULLW ZPTmpPtr1
|
SKT.PullRemAddr >PULLW ZPTmpPtr1
|
||||||
|
|
||||||
ldy #S.SOCKADDR-1
|
ldy #S.SOCKADDR-1
|
||||||
|
|
||||||
.1 lda (ZPTmpPtr1),y
|
.1 lda (ZPTmpPtr1),y
|
||||||
sta SKT.REM.ADDR,y
|
sta SKT.REM.ADDR,y
|
||||||
dey
|
dey
|
||||||
@ -705,7 +649,6 @@ SKT.PullRemAddr >PULLW ZPTmpPtr1
|
|||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SKT.SetLocAddr ldy #S.SOCKET.LOC.ADDR
|
SKT.SetLocAddr ldy #S.SOCKET.LOC.ADDR
|
||||||
|
|
||||||
.1 lda SKT.LOC.ADDR+S.SOCKADDR.ADDR-S.SOCKET.LOC.ADDR,y
|
.1 lda SKT.LOC.ADDR+S.SOCKADDR.ADDR-S.SOCKET.LOC.ADDR,y
|
||||||
sta (ZPPtrSKT),y
|
sta (ZPPtrSKT),y
|
||||||
iny
|
iny
|
||||||
@ -714,7 +657,6 @@ SKT.SetLocAddr ldy #S.SOCKET.LOC.ADDR
|
|||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SKT.SetRemAddr ldy #S.SOCKET.REM.ADDR
|
SKT.SetRemAddr ldy #S.SOCKET.REM.ADDR
|
||||||
|
|
||||||
.1 lda SKT.REM.ADDR+S.SOCKADDR.ADDR-S.SOCKET.REM.ADDR,y
|
.1 lda SKT.REM.ADDR+S.SOCKADDR.ADDR-S.SOCKET.REM.ADDR,y
|
||||||
sta (ZPPtrSKT),y
|
sta (ZPPtrSKT),y
|
||||||
iny
|
iny
|
||||||
@ -724,105 +666,118 @@ SKT.SetRemAddr ldy #S.SOCKET.REM.ADDR
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SKT.FindMatchingLocRem
|
SKT.FindMatchingLocRem
|
||||||
ldx #0
|
ldx #0
|
||||||
|
|
||||||
.1 lda SKT.TABLE,x
|
.1 lda SKT.TABLE,x
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
phx
|
phx
|
||||||
>SYSCALL GetMemPtr
|
>SYSCALL GetMemPtr
|
||||||
>STYA ZPTmpPtr1
|
>STYA ZPTmpPtr1
|
||||||
plx
|
plx
|
||||||
|
|
||||||
ldy #0
|
ldy #S.SOCKET.AF
|
||||||
|
lda (ZPTmpPtr1),y
|
||||||
|
cmp #AF.INET
|
||||||
|
bne .8
|
||||||
|
|
||||||
|
ldy #S.SOCKET.LOC.ADDR
|
||||||
|
|
||||||
.2 lda (ZPTmpPtr1),y
|
.2 lda (ZPTmpPtr1),y
|
||||||
bne .4
|
bne .4
|
||||||
|
|
||||||
ldy #S.SOCKET.LOC.PORT This Socket is bound to 0.0.0.0,check only LOC port
|
ldy #S.SOCKET.LOC.PORT This Socket is bound to 0.0.0.0,check only LOC port
|
||||||
|
|
||||||
.3 lda (ZPTmpPtr1),y
|
.3 lda (ZPTmpPtr1),y
|
||||||
|
|
||||||
.4 cmp SKT.LOC.ADDR+S.SOCKADDR.ADDR-S.SOCKET.LOC.ADDR,y
|
.4 cmp SKT.LOC.ADDR+S.SOCKADDR.ADDR-S.SOCKET.LOC.ADDR,y
|
||||||
bne .8
|
bne .8
|
||||||
iny
|
iny
|
||||||
cpy #S.SOCKET.REM.ADDR
|
cpy #S.SOCKET.LOC.PORT+2
|
||||||
bne .3
|
bne .3
|
||||||
|
|
||||||
lda SKT.REM.ADDR+S.SOCKADDR.ADDR
|
|
||||||
cmp #$ff FF.FF.FF.FF, Broadcast ?
|
|
||||||
bne .5
|
|
||||||
|
|
||||||
ldy #S.SOCKET.O
|
ldy #S.SOCKET.O
|
||||||
|
lda (ZPTmpPtr1),y
|
||||||
|
and #S.SOCKET.O.ACCEPTCONN
|
||||||
|
beq .6
|
||||||
|
|
||||||
|
ldy #S.TCP.OPTIONS Listening, only SYN packet....
|
||||||
|
lda (ZPFrameInPtr),y
|
||||||
|
cmp #S.TCP.OPTIONS.SYN
|
||||||
|
beq .7 a SYN recieved on a LISTEN socket, ok
|
||||||
|
bne .8 bad packet for this listening
|
||||||
|
|
||||||
|
.6 lda SKT.REM.ADDR+S.SOCKADDR.ADDR
|
||||||
|
cmp #$ff FF.FF.FF.FF, Broadcast ?
|
||||||
|
bne .41
|
||||||
|
|
||||||
|
* ldy #S.SOCKET.O
|
||||||
lda (ZPTmpPtr1),y
|
lda (ZPTmpPtr1),y
|
||||||
and #S.SOCKET.O.BROADCAST
|
and #S.SOCKET.O.BROADCAST
|
||||||
beq .9 this socket does not accept broadcast
|
beq .9 this socket does not accept broadcast
|
||||||
|
|
||||||
ldy #S.SOCKET.REM.PORT Boradcast, check port only
|
ldy #S.SOCKET.REM.PORT Boradcast, check port only
|
||||||
|
bra .5
|
||||||
|
|
||||||
|
.41 ldy #S.SOCKET.REM.ADDR
|
||||||
|
|
||||||
.5 lda (ZPTmpPtr1),y
|
.5 lda (ZPTmpPtr1),y
|
||||||
cmp SKT.REM.ADDR+S.SOCKADDR.ADDR-S.SOCKET.REM.ADDR,y
|
cmp SKT.REM.ADDR+S.SOCKADDR.ADDR-S.SOCKET.REM.ADDR,y
|
||||||
bne .9 wrong remote host, exit....
|
bne .8 wrong remote host, exit....
|
||||||
iny
|
iny
|
||||||
cpy #S.SOCKET.REM.PORT+2
|
cpy #S.SOCKET.REM.PORT+2
|
||||||
bne .5
|
bne .5
|
||||||
|
|
||||||
>LDYA ZPTmpPtr1 x = SKT.TABLE index
|
.7 >LDYA ZPTmpPtr1 x = SKT.TABLE index
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.8 inx
|
.8 inx
|
||||||
cpx #K.SKTTABLE.SIZE
|
cpx #K.SKTTABLE.SIZE
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
.9 sec
|
.9 sec
|
||||||
|
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SKT.FindMatchingLoc
|
SKT.FindMatchingLoc
|
||||||
|
|
||||||
ldy #S.SOCKET.LOC.PORT+1
|
|
||||||
phy
|
|
||||||
|
|
||||||
ldx #0
|
ldx #0
|
||||||
|
|
||||||
.1 lda SKT.TABLE,x
|
.1 lda SKT.TABLE,x
|
||||||
beq .7
|
beq .7
|
||||||
|
|
||||||
phx
|
phx
|
||||||
>SYSCALL GetMemPtr
|
>SYSCALL GetMemPtr
|
||||||
>STYA ZPTmpPtr1
|
>STYA ZPTmpPtr1
|
||||||
plx
|
plx
|
||||||
|
|
||||||
ply
|
ldy #S.SOCKET.AF
|
||||||
phy
|
lda (ZPTmpPtr1),y
|
||||||
|
cmp #AF.INET
|
||||||
|
bne .7
|
||||||
|
|
||||||
|
ldy #S.SOCKET.LOC.ADDR
|
||||||
|
|
||||||
.2 lda (ZPTmpPtr1),y
|
.2 lda (ZPTmpPtr1),y
|
||||||
cmp SKT.LOC.ADDR+S.SOCKADDR.ADDR-S.SOCKET.LOC.ADDR,y
|
cmp SKT.LOC.ADDR+S.SOCKADDR.ADDR-S.SOCKET.LOC.ADDR,y
|
||||||
bne .7
|
bne .7
|
||||||
dey
|
iny
|
||||||
cpy #S.SOCKET.LOC.ADDR-1
|
cpy #S.SOCKET.LOC.PORT+2
|
||||||
bne .2
|
bne .2
|
||||||
|
|
||||||
ply
|
|
||||||
|
|
||||||
>LDYA ZPTmpPtr1 x = SKT.TABLE index
|
>LDYA ZPTmpPtr1 x = SKT.TABLE index
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.7 inx
|
.7 inx
|
||||||
cpx #K.SKTTABLE.SIZE
|
cpx #K.SKTTABLE.SIZE
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
ply
|
|
||||||
|
|
||||||
* sec
|
* sec
|
||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* ZPPtrSKT -> actual socket
|
* ZPPtrSKT -> actual socket
|
||||||
* A = hSocket or hFrame
|
* A = hSocket or hFrame
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SKT.AddToQueueA sta .2+1
|
SKT.AddToQueueA pha
|
||||||
ldy #S.SOCKET.HQ.HEAD
|
ldy #S.SOCKET.HQ.HEAD
|
||||||
lda (ZPPtrSKT),y
|
lda (ZPPtrSKT),y
|
||||||
tax
|
tax
|
||||||
@ -830,24 +785,25 @@ SKT.AddToQueueA sta .2+1
|
|||||||
cmp #S.SOCKET.HQ.MAX
|
cmp #S.SOCKET.HQ.MAX
|
||||||
bne .1
|
bne .1
|
||||||
lda #0
|
lda #0
|
||||||
|
|
||||||
.1 ldy #S.SOCKET.HQ.TAIL
|
.1 ldy #S.SOCKET.HQ.TAIL
|
||||||
cmp (ZPPtrSKT),y
|
cmp (ZPPtrSKT),y
|
||||||
beq .9 Queue full!!
|
beq .9 Queue full!!
|
||||||
|
|
||||||
ldy #S.SOCKET.HQ.HEAD
|
ldy #S.SOCKET.HQ.HEAD
|
||||||
sta (ZPPtrSKT),y
|
sta (ZPPtrSKT),y
|
||||||
txa
|
txa
|
||||||
clc
|
clc
|
||||||
adc #S.SOCKET.HQ
|
adc #S.SOCKET.HQ
|
||||||
tay
|
tay
|
||||||
|
|
||||||
.2 lda #$ff
|
pla
|
||||||
sta (ZPPtrSKT),y
|
sta (ZPPtrSKT),y
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 sec
|
.9 pla dicard hFrame
|
||||||
|
* sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* From TCP.IN
|
* From TCP.IN
|
||||||
@ -860,7 +816,7 @@ SKT.AddDataToSktIn
|
|||||||
lda SKT.TmpCache+S.SOCKET.TCP.INFREE+1
|
lda SKT.TmpCache+S.SOCKET.TCP.INFREE+1
|
||||||
sbc ZPDataInLen+1
|
sbc ZPDataInLen+1
|
||||||
bcc .9 Not enough room in Q
|
bcc .9 Not enough room in Q
|
||||||
|
|
||||||
ldy #S.TCP.SEQNUM+3
|
ldy #S.TCP.SEQNUM+3
|
||||||
ldx #3
|
ldx #3
|
||||||
|
|
||||||
@ -870,7 +826,7 @@ SKT.AddDataToSktIn
|
|||||||
dey
|
dey
|
||||||
dex
|
dex
|
||||||
bpl .10
|
bpl .10
|
||||||
|
|
||||||
ldy #S.SOCKET.SQ.hInMem
|
ldy #S.SOCKET.SQ.hInMem
|
||||||
lda (ZPPtrSKT),y
|
lda (ZPPtrSKT),y
|
||||||
>SYSCALL GetMemPtr
|
>SYSCALL GetMemPtr
|
||||||
@ -884,15 +840,15 @@ SKT.AddDataToSktIn
|
|||||||
lda ZPTmpPtr1+1
|
lda ZPTmpPtr1+1
|
||||||
adc SKT.TmpCache+S.SOCKET.TCP.INHEAD+1
|
adc SKT.TmpCache+S.SOCKET.TCP.INHEAD+1
|
||||||
sta ZPTmpPtr2+1 Make ZPTmpPtr2=base+Tail
|
sta ZPTmpPtr2+1 Make ZPTmpPtr2=base+Tail
|
||||||
|
|
||||||
lda ZPDataInLen
|
lda ZPDataInLen
|
||||||
eor #$FF
|
eor #$FF
|
||||||
tax
|
tax
|
||||||
|
|
||||||
lda ZPDataInLen+1
|
lda ZPDataInLen+1
|
||||||
eor #$FF
|
eor #$FF
|
||||||
pha
|
pha
|
||||||
|
|
||||||
ldy #0
|
ldy #0
|
||||||
|
|
||||||
.1 inx
|
.1 inx
|
||||||
@ -900,9 +856,9 @@ SKT.AddDataToSktIn
|
|||||||
pla
|
pla
|
||||||
inc
|
inc
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
pha
|
pha
|
||||||
|
|
||||||
.2 lda (ZPDataInPtr),y
|
.2 lda (ZPDataInPtr),y
|
||||||
sta (ZPTmpPtr2)
|
sta (ZPTmpPtr2)
|
||||||
iny
|
iny
|
||||||
@ -912,7 +868,7 @@ SKT.AddDataToSktIn
|
|||||||
.3 inc ZPTmpPtr2
|
.3 inc ZPTmpPtr2
|
||||||
bne .4
|
bne .4
|
||||||
inc ZPTmpPtr2+1
|
inc ZPTmpPtr2+1
|
||||||
|
|
||||||
.4 inc SKT.TmpCache+S.SOCKET.TCP.INHEAD
|
.4 inc SKT.TmpCache+S.SOCKET.TCP.INHEAD
|
||||||
bne .1
|
bne .1
|
||||||
inc SKT.TmpCache+S.SOCKET.TCP.INHEAD+1
|
inc SKT.TmpCache+S.SOCKET.TCP.INHEAD+1
|
||||||
@ -920,7 +876,7 @@ SKT.AddDataToSktIn
|
|||||||
cmp /K.TCP.WSIZE
|
cmp /K.TCP.WSIZE
|
||||||
bne .1
|
bne .1
|
||||||
stz SKT.TmpCache+S.SOCKET.TCP.INHEAD+1
|
stz SKT.TmpCache+S.SOCKET.TCP.INHEAD+1
|
||||||
|
|
||||||
lda ZPTmpPtr1 Dst Ptr=Buffer Base
|
lda ZPTmpPtr1 Dst Ptr=Buffer Base
|
||||||
sta ZPTmpPtr2
|
sta ZPTmpPtr2
|
||||||
lda ZPTmpPtr1+1
|
lda ZPTmpPtr1+1
|
||||||
@ -929,31 +885,31 @@ SKT.AddDataToSktIn
|
|||||||
|
|
||||||
.9 sec
|
.9 sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.8 lda SKT.TmpCache+S.SOCKET.TCP.INFREE
|
.8 lda SKT.TmpCache+S.SOCKET.TCP.INFREE
|
||||||
sec
|
sec
|
||||||
sbc ZPDataInLen
|
sbc ZPDataInLen
|
||||||
sta SKT.TmpCache+S.SOCKET.TCP.INFREE
|
sta SKT.TmpCache+S.SOCKET.TCP.INFREE
|
||||||
|
|
||||||
lda SKT.TmpCache+S.SOCKET.TCP.INFREE+1
|
lda SKT.TmpCache+S.SOCKET.TCP.INFREE+1
|
||||||
sbc ZPDataInLen+1
|
sbc ZPDataInLen+1
|
||||||
sta SKT.TmpCache+S.SOCKET.TCP.INFREE+1
|
sta SKT.TmpCache+S.SOCKET.TCP.INFREE+1
|
||||||
|
|
||||||
lda SKT.TmpCache+S.SOCKET.TCP.INUSED
|
lda SKT.TmpCache+S.SOCKET.TCP.INUSED
|
||||||
clc
|
clc
|
||||||
adc ZPDataInLen
|
adc ZPDataInLen
|
||||||
sta SKT.TmpCache+S.SOCKET.TCP.INUSED
|
sta SKT.TmpCache+S.SOCKET.TCP.INUSED
|
||||||
|
|
||||||
lda SKT.TmpCache+S.SOCKET.TCP.INUSED+1
|
lda SKT.TmpCache+S.SOCKET.TCP.INUSED+1
|
||||||
adc ZPDataInLen+1
|
adc ZPDataInLen+1
|
||||||
sta SKT.TmpCache+S.SOCKET.TCP.INUSED+1
|
sta SKT.TmpCache+S.SOCKET.TCP.INUSED+1
|
||||||
|
|
||||||
clc
|
clc
|
||||||
|
|
||||||
lda SKT.TmpCache+S.SOCKET.TCP.INLASTSEQNUM+3
|
lda SKT.TmpCache+S.SOCKET.TCP.INLASTSEQNUM+3
|
||||||
adc ZPDataInLen
|
adc ZPDataInLen
|
||||||
sta SKT.TmpCache+S.SOCKET.TCP.INLASTSEQNUM+3
|
sta SKT.TmpCache+S.SOCKET.TCP.INLASTSEQNUM+3
|
||||||
|
|
||||||
lda SKT.TmpCache+S.SOCKET.TCP.INLASTSEQNUM+2
|
lda SKT.TmpCache+S.SOCKET.TCP.INLASTSEQNUM+2
|
||||||
adc ZPDataInLen+1
|
adc ZPDataInLen+1
|
||||||
sta SKT.TmpCache+S.SOCKET.TCP.INLASTSEQNUM+2
|
sta SKT.TmpCache+S.SOCKET.TCP.INLASTSEQNUM+2
|
||||||
@ -993,20 +949,20 @@ SKT.GetDataFromSktIn
|
|||||||
lda ZPTmpPtr1+1
|
lda ZPTmpPtr1+1
|
||||||
adc SKT.TmpCache+S.SOCKET.TCP.INTAIL+1
|
adc SKT.TmpCache+S.SOCKET.TCP.INTAIL+1
|
||||||
sta ZPTmpPtr2+1
|
sta ZPTmpPtr2+1
|
||||||
|
|
||||||
lda ZPDataInLen
|
lda ZPDataInLen
|
||||||
eor #$FF
|
eor #$FF
|
||||||
tax
|
tax
|
||||||
|
|
||||||
lda ZPDataInLen+1
|
lda ZPDataInLen+1
|
||||||
eor #$FF
|
eor #$FF
|
||||||
pha
|
pha
|
||||||
|
|
||||||
stz ZPTmpPtr3 Reset byte counter
|
stz ZPTmpPtr3 Reset byte counter
|
||||||
stz ZPTmpPtr3+1
|
stz ZPTmpPtr3+1
|
||||||
|
|
||||||
ldy #0
|
ldy #0
|
||||||
|
|
||||||
.1 inx Check if room left in dest buffer
|
.1 inx Check if room left in dest buffer
|
||||||
bne .2
|
bne .2
|
||||||
pla
|
pla
|
||||||
@ -1014,60 +970,60 @@ SKT.GetDataFromSktIn
|
|||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
pha
|
pha
|
||||||
|
|
||||||
.2 lda SKT.TmpCache+S.SOCKET.TCP.INTAIL
|
.2 lda SKT.TmpCache+S.SOCKET.TCP.INTAIL
|
||||||
eor SKT.TmpCache+S.SOCKET.TCP.INHEAD
|
eor SKT.TmpCache+S.SOCKET.TCP.INHEAD
|
||||||
bne .3
|
bne .3
|
||||||
lda SKT.TmpCache+S.SOCKET.TCP.INTAIL+1
|
lda SKT.TmpCache+S.SOCKET.TCP.INTAIL+1
|
||||||
eor SKT.TmpCache+S.SOCKET.TCP.INHEAD+1
|
eor SKT.TmpCache+S.SOCKET.TCP.INHEAD+1
|
||||||
beq .7 no more data....
|
beq .7 no more data....
|
||||||
|
|
||||||
.3 lda (ZPTmpPtr2)
|
.3 lda (ZPTmpPtr2)
|
||||||
pha
|
pha
|
||||||
|
|
||||||
inc SKT.TmpCache+S.SOCKET.TCP.INTAIL
|
inc SKT.TmpCache+S.SOCKET.TCP.INTAIL
|
||||||
bne .4
|
bne .4
|
||||||
|
|
||||||
inc SKT.TmpCache+S.SOCKET.TCP.INTAIL+1
|
inc SKT.TmpCache+S.SOCKET.TCP.INTAIL+1
|
||||||
lda SKT.TmpCache+S.SOCKET.TCP.INTAIL+1
|
lda SKT.TmpCache+S.SOCKET.TCP.INTAIL+1
|
||||||
cmp /K.TCP.WSIZE
|
cmp /K.TCP.WSIZE
|
||||||
bne .4
|
bne .4
|
||||||
|
|
||||||
stz SKT.TmpCache+S.SOCKET.TCP.INTAIL+1
|
stz SKT.TmpCache+S.SOCKET.TCP.INTAIL+1
|
||||||
lda ZPTmpPtr1
|
lda ZPTmpPtr1
|
||||||
sta ZPTmpPtr2
|
sta ZPTmpPtr2
|
||||||
lda ZPTmpPtr1+1
|
lda ZPTmpPtr1+1
|
||||||
sta ZPTmpPtr2+1
|
sta ZPTmpPtr2+1
|
||||||
bra .5
|
bra .5
|
||||||
|
|
||||||
.4 inc ZPTmpPtr2
|
.4 inc ZPTmpPtr2
|
||||||
bne .5
|
bne .5
|
||||||
inc ZPTmpPtr2+1
|
inc ZPTmpPtr2+1
|
||||||
|
|
||||||
.5 pla get back data....
|
.5 pla get back data....
|
||||||
|
|
||||||
.6 sta (ZPDataInPtr),y
|
.6 sta (ZPDataInPtr),y
|
||||||
iny
|
iny
|
||||||
bne .61
|
bne .61
|
||||||
inc ZPDataInPtr+1
|
inc ZPDataInPtr+1
|
||||||
|
|
||||||
.61 inc ZPTmpPtr3
|
.61 inc ZPTmpPtr3
|
||||||
bne .1
|
bne .1
|
||||||
inc ZPTmpPtr3+1
|
inc ZPTmpPtr3+1
|
||||||
|
|
||||||
bra .1
|
bra .1
|
||||||
|
|
||||||
.7 pla discard byte counter HI
|
.7 pla discard byte counter HI
|
||||||
|
|
||||||
.8 lda ZPTmpPtr3 Do we have transfered something?
|
.8 lda ZPTmpPtr3 Do we have transfered something?
|
||||||
ora ZPTmpPtr3+1
|
ora ZPTmpPtr3+1
|
||||||
beq .9
|
beq .9
|
||||||
|
|
||||||
lda SKT.TmpCache+S.SOCKET.TCP.INFREE
|
lda SKT.TmpCache+S.SOCKET.TCP.INFREE
|
||||||
clc
|
clc
|
||||||
adc ZPTmpPtr3
|
adc ZPTmpPtr3
|
||||||
sta SKT.TmpCache+S.SOCKET.TCP.INFREE
|
sta SKT.TmpCache+S.SOCKET.TCP.INFREE
|
||||||
|
|
||||||
lda SKT.TmpCache+S.SOCKET.TCP.INFREE+1
|
lda SKT.TmpCache+S.SOCKET.TCP.INFREE+1
|
||||||
adc ZPTmpPtr3+1
|
adc ZPTmpPtr3+1
|
||||||
sta SKT.TmpCache+S.SOCKET.TCP.INFREE+1
|
sta SKT.TmpCache+S.SOCKET.TCP.INFREE+1
|
||||||
@ -1085,16 +1041,16 @@ SKT.GetDataFromSktIn
|
|||||||
clc
|
clc
|
||||||
adc ZPTmpPtr3
|
adc ZPTmpPtr3
|
||||||
sta SKT.TmpCache+S.SOCKET.TCP.OUTACKNUM+3
|
sta SKT.TmpCache+S.SOCKET.TCP.OUTACKNUM+3
|
||||||
|
|
||||||
lda SKT.TmpCache+S.SOCKET.TCP.OUTACKNUM+2
|
lda SKT.TmpCache+S.SOCKET.TCP.OUTACKNUM+2
|
||||||
adc ZPTmpPtr3+1
|
adc ZPTmpPtr3+1
|
||||||
sta SKT.TmpCache+S.SOCKET.TCP.OUTACKNUM+2
|
sta SKT.TmpCache+S.SOCKET.TCP.OUTACKNUM+2
|
||||||
|
|
||||||
bcc .80
|
bcc .80
|
||||||
inc SKT.TmpCache+S.SOCKET.TCP.OUTACKNUM+1
|
inc SKT.TmpCache+S.SOCKET.TCP.OUTACKNUM+1
|
||||||
bne .80
|
bne .80
|
||||||
inc SKT.TmpCache+S.SOCKET.TCP.OUTACKNUM
|
inc SKT.TmpCache+S.SOCKET.TCP.OUTACKNUM
|
||||||
|
|
||||||
.80 jsr SKT.StoreTCB
|
.80 jsr SKT.StoreTCB
|
||||||
|
|
||||||
ldy #S.SOCKET.TCP.O
|
ldy #S.SOCKET.TCP.O
|
||||||
@ -1103,11 +1059,10 @@ SKT.GetDataFromSktIn
|
|||||||
sta (ZPPtrSKT),y
|
sta (ZPPtrSKT),y
|
||||||
|
|
||||||
jsr TCP.OUT.I SKT.GetTCB already called, Try to ACK read DATA
|
jsr TCP.OUT.I SKT.GetTCB already called, Try to ACK read DATA
|
||||||
|
|
||||||
>LDYA ZPTmpPtr3
|
>LDYA ZPTmpPtr3
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9
|
.9
|
||||||
* lda #0 NO DATA
|
* lda #0 NO DATA
|
||||||
sec
|
sec
|
||||||
@ -1138,15 +1093,15 @@ SKT.AddDataToSktOut
|
|||||||
lda ZPTmpPtr1+1
|
lda ZPTmpPtr1+1
|
||||||
adc SKT.TmpCache+S.SOCKET.TCP.OUTHEAD+1
|
adc SKT.TmpCache+S.SOCKET.TCP.OUTHEAD+1
|
||||||
sta ZPTmpPtr2+1 Make ZPTmpPtr2=base+Tail
|
sta ZPTmpPtr2+1 Make ZPTmpPtr2=base+Tail
|
||||||
|
|
||||||
lda ZPDataInLen
|
lda ZPDataInLen
|
||||||
eor #$FF
|
eor #$FF
|
||||||
tax
|
tax
|
||||||
|
|
||||||
lda ZPDataInLen+1
|
lda ZPDataInLen+1
|
||||||
eor #$FF
|
eor #$FF
|
||||||
pha
|
pha
|
||||||
|
|
||||||
ldy #0
|
ldy #0
|
||||||
|
|
||||||
.1 inx
|
.1 inx
|
||||||
@ -1154,9 +1109,9 @@ SKT.AddDataToSktOut
|
|||||||
pla
|
pla
|
||||||
inc
|
inc
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
pha
|
pha
|
||||||
|
|
||||||
.2 lda (ZPDataInPtr),y
|
.2 lda (ZPDataInPtr),y
|
||||||
sta (ZPTmpPtr2)
|
sta (ZPTmpPtr2)
|
||||||
iny
|
iny
|
||||||
@ -1166,7 +1121,7 @@ SKT.AddDataToSktOut
|
|||||||
.3 inc ZPTmpPtr2
|
.3 inc ZPTmpPtr2
|
||||||
bne .4
|
bne .4
|
||||||
inc ZPTmpPtr2+1
|
inc ZPTmpPtr2+1
|
||||||
|
|
||||||
.4 inc SKT.TmpCache+S.SOCKET.TCP.OUTHEAD
|
.4 inc SKT.TmpCache+S.SOCKET.TCP.OUTHEAD
|
||||||
bne .1
|
bne .1
|
||||||
inc SKT.TmpCache+S.SOCKET.TCP.OUTHEAD+1
|
inc SKT.TmpCache+S.SOCKET.TCP.OUTHEAD+1
|
||||||
@ -1174,7 +1129,7 @@ SKT.AddDataToSktOut
|
|||||||
cmp /K.TCP.WSIZE
|
cmp /K.TCP.WSIZE
|
||||||
bne .1
|
bne .1
|
||||||
stz SKT.TmpCache+S.SOCKET.TCP.OUTHEAD+1
|
stz SKT.TmpCache+S.SOCKET.TCP.OUTHEAD+1
|
||||||
|
|
||||||
lda ZPTmpPtr1 Dst Ptr=Buffer Base
|
lda ZPTmpPtr1 Dst Ptr=Buffer Base
|
||||||
sta ZPTmpPtr2
|
sta ZPTmpPtr2
|
||||||
lda ZPTmpPtr1+1
|
lda ZPTmpPtr1+1
|
||||||
@ -1183,7 +1138,7 @@ SKT.AddDataToSktOut
|
|||||||
|
|
||||||
.9 sec
|
.9 sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.8 lda SKT.TmpCache+S.SOCKET.TCP.OUTFREE
|
.8 lda SKT.TmpCache+S.SOCKET.TCP.OUTFREE
|
||||||
sec
|
sec
|
||||||
sbc ZPDataInLen
|
sbc ZPDataInLen
|
||||||
@ -1191,7 +1146,7 @@ SKT.AddDataToSktOut
|
|||||||
lda SKT.TmpCache+S.SOCKET.TCP.OUTFREE+1
|
lda SKT.TmpCache+S.SOCKET.TCP.OUTFREE+1
|
||||||
sbc ZPDataInLen+1
|
sbc ZPDataInLen+1
|
||||||
sta SKT.TmpCache+S.SOCKET.TCP.OUTFREE+1
|
sta SKT.TmpCache+S.SOCKET.TCP.OUTFREE+1
|
||||||
|
|
||||||
lda SKT.TmpCache+S.SOCKET.TCP.OUTUSED
|
lda SKT.TmpCache+S.SOCKET.TCP.OUTUSED
|
||||||
clc
|
clc
|
||||||
adc ZPDataInLen
|
adc ZPDataInLen
|
||||||
@ -1199,7 +1154,7 @@ SKT.AddDataToSktOut
|
|||||||
lda SKT.TmpCache+S.SOCKET.TCP.OUTUSED+1
|
lda SKT.TmpCache+S.SOCKET.TCP.OUTUSED+1
|
||||||
adc ZPDataInLen+1
|
adc ZPDataInLen+1
|
||||||
sta SKT.TmpCache+S.SOCKET.TCP.OUTUSED+1
|
sta SKT.TmpCache+S.SOCKET.TCP.OUTUSED+1
|
||||||
|
|
||||||
lda SKT.TmpCache+S.SOCKET.TCP.OUTTOSEND
|
lda SKT.TmpCache+S.SOCKET.TCP.OUTTOSEND
|
||||||
clc
|
clc
|
||||||
adc ZPDataInLen
|
adc ZPDataInLen
|
||||||
@ -1207,8 +1162,7 @@ SKT.AddDataToSktOut
|
|||||||
lda SKT.TmpCache+S.SOCKET.TCP.OUTTOSEND+1
|
lda SKT.TmpCache+S.SOCKET.TCP.OUTTOSEND+1
|
||||||
adc ZPDataInLen+1
|
adc ZPDataInLen+1
|
||||||
sta SKT.TmpCache+S.SOCKET.TCP.OUTTOSEND+1
|
sta SKT.TmpCache+S.SOCKET.TCP.OUTTOSEND+1
|
||||||
jsr SKT.StoreTCB
|
jmp SKT.StoreTCB
|
||||||
rts
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* From TCP.OUT
|
* From TCP.OUT
|
||||||
* Src : hOutMem/OUTTAIL
|
* Src : hOutMem/OUTTAIL
|
||||||
@ -1217,7 +1171,7 @@ SKT.AddDataToSktOut
|
|||||||
SKT.GetDataFromSktOut
|
SKT.GetDataFromSktOut
|
||||||
ldy #S.SOCKET.SQ.hOutMem
|
ldy #S.SOCKET.SQ.hOutMem
|
||||||
lda (ZPPtrSKT),y
|
lda (ZPPtrSKT),y
|
||||||
|
|
||||||
>SYSCALL GetMemPtr
|
>SYSCALL GetMemPtr
|
||||||
>STYA ZPTmpPtr1 Make ZPTmpPtr1=buffer base
|
>STYA ZPTmpPtr1 Make ZPTmpPtr1=buffer base
|
||||||
|
|
||||||
@ -1229,15 +1183,15 @@ SKT.GetDataFromSktOut
|
|||||||
lda ZPTmpPtr1+1
|
lda ZPTmpPtr1+1
|
||||||
adc SKT.TmpCache+S.SOCKET.TCP.OUTTAILNEXT+1
|
adc SKT.TmpCache+S.SOCKET.TCP.OUTTAILNEXT+1
|
||||||
sta ZPTmpPtr2+1
|
sta ZPTmpPtr2+1
|
||||||
|
|
||||||
lda ZPDataOutLen
|
lda ZPDataOutLen
|
||||||
eor #$FF
|
eor #$FF
|
||||||
tax
|
tax
|
||||||
|
|
||||||
lda ZPDataOutLen+1
|
lda ZPDataOutLen+1
|
||||||
eor #$FF
|
eor #$FF
|
||||||
pha
|
pha
|
||||||
|
|
||||||
ldy #0
|
ldy #0
|
||||||
|
|
||||||
.1 inx
|
.1 inx
|
||||||
@ -1245,9 +1199,9 @@ SKT.GetDataFromSktOut
|
|||||||
pla
|
pla
|
||||||
inc
|
inc
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
pha
|
pha
|
||||||
|
|
||||||
.2 lda (ZPTmpPtr2)
|
.2 lda (ZPTmpPtr2)
|
||||||
sta (ZPDataOutPtr),y
|
sta (ZPDataOutPtr),y
|
||||||
iny
|
iny
|
||||||
@ -1257,7 +1211,7 @@ SKT.GetDataFromSktOut
|
|||||||
.3 inc ZPTmpPtr2
|
.3 inc ZPTmpPtr2
|
||||||
bne .4
|
bne .4
|
||||||
inc ZPTmpPtr2+1
|
inc ZPTmpPtr2+1
|
||||||
|
|
||||||
.4 inc SKT.TmpCache+S.SOCKET.TCP.OUTTAILNEXT
|
.4 inc SKT.TmpCache+S.SOCKET.TCP.OUTTAILNEXT
|
||||||
bne .1
|
bne .1
|
||||||
inc SKT.TmpCache+S.SOCKET.TCP.OUTTAILNEXT+1
|
inc SKT.TmpCache+S.SOCKET.TCP.OUTTAILNEXT+1
|
||||||
@ -1265,7 +1219,7 @@ SKT.GetDataFromSktOut
|
|||||||
cmp /K.TCP.WSIZE
|
cmp /K.TCP.WSIZE
|
||||||
bne .1
|
bne .1
|
||||||
stz SKT.TmpCache+S.SOCKET.TCP.OUTTAILNEXT+1
|
stz SKT.TmpCache+S.SOCKET.TCP.OUTTAILNEXT+1
|
||||||
|
|
||||||
lda ZPTmpPtr1 Dst Ptr=Buffer Base
|
lda ZPTmpPtr1 Dst Ptr=Buffer Base
|
||||||
sta ZPTmpPtr2
|
sta ZPTmpPtr2
|
||||||
lda ZPTmpPtr1+1
|
lda ZPTmpPtr1+1
|
||||||
@ -1279,7 +1233,7 @@ SKT.GetDataFromSktOut
|
|||||||
lda SKT.TmpCache+S.SOCKET.TCP.OUTTOSEND+1
|
lda SKT.TmpCache+S.SOCKET.TCP.OUTTOSEND+1
|
||||||
sbc ZPDataOutLen+1
|
sbc ZPDataOutLen+1
|
||||||
sta SKT.TmpCache+S.SOCKET.TCP.OUTTOSEND+1
|
sta SKT.TmpCache+S.SOCKET.TCP.OUTTOSEND+1
|
||||||
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
@ -1302,22 +1256,21 @@ SKT.AckDataToSktOut
|
|||||||
dey
|
dey
|
||||||
dex
|
dex
|
||||||
bpl .1
|
bpl .1
|
||||||
|
|
||||||
lda TmpDWord+3
|
lda TmpDWord+3
|
||||||
ldx TmpDWord+2
|
ldx TmpDWord+2
|
||||||
bne .2
|
bne .2
|
||||||
tay
|
tay
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
.2 clc
|
.2 clc
|
||||||
adc SKT.TmpCache+S.SOCKET.TCP.OUTTAIL
|
adc SKT.TmpCache+S.SOCKET.TCP.OUTTAIL
|
||||||
sta SKT.TmpCache+S.SOCKET.TCP.OUTTAIL
|
sta SKT.TmpCache+S.SOCKET.TCP.OUTTAIL
|
||||||
|
|
||||||
txa
|
txa
|
||||||
adc SKT.TmpCache+S.SOCKET.TCP.OUTTAIL+1
|
adc SKT.TmpCache+S.SOCKET.TCP.OUTTAIL+1
|
||||||
and /K.TCP.WSIZE-1
|
and /K.TCP.WSIZE-1
|
||||||
sta SKT.TmpCache+S.SOCKET.TCP.OUTTAIL+1
|
sta SKT.TmpCache+S.SOCKET.TCP.OUTTAIL+1
|
||||||
|
|
||||||
lda SKT.TmpCache+S.SOCKET.TCP.OUTFREE
|
lda SKT.TmpCache+S.SOCKET.TCP.OUTFREE
|
||||||
clc
|
clc
|
||||||
adc TmpDWord+3
|
adc TmpDWord+3
|
||||||
@ -1325,7 +1278,7 @@ SKT.AckDataToSktOut
|
|||||||
lda SKT.TmpCache+S.SOCKET.TCP.OUTFREE+1
|
lda SKT.TmpCache+S.SOCKET.TCP.OUTFREE+1
|
||||||
adc TmpDWord+2
|
adc TmpDWord+2
|
||||||
sta SKT.TmpCache+S.SOCKET.TCP.OUTFREE+1
|
sta SKT.TmpCache+S.SOCKET.TCP.OUTFREE+1
|
||||||
|
|
||||||
lda SKT.TmpCache+S.SOCKET.TCP.OUTUSED
|
lda SKT.TmpCache+S.SOCKET.TCP.OUTUSED
|
||||||
sec
|
sec
|
||||||
sbc TmpDWord+3
|
sbc TmpDWord+3
|
||||||
@ -1333,57 +1286,83 @@ SKT.AckDataToSktOut
|
|||||||
lda SKT.TmpCache+S.SOCKET.TCP.OUTUSED+1
|
lda SKT.TmpCache+S.SOCKET.TCP.OUTUSED+1
|
||||||
sbc TmpDWord+2
|
sbc TmpDWord+2
|
||||||
sta SKT.TmpCache+S.SOCKET.TCP.OUTUSED+1
|
sta SKT.TmpCache+S.SOCKET.TCP.OUTUSED+1
|
||||||
|
|
||||||
.8 rts
|
.8 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SKT.GetTCB ldy #S.SOCKET.TCP-S.SOCKET
|
SKT.NewTCB ldx #S.SOCKET
|
||||||
|
|
||||||
.1 dey
|
.1 stz SKT.TmpCache,x
|
||||||
lda (ZPPtrSKT),y
|
inx
|
||||||
sta SKT.TmpCache,y
|
cpx #S.SOCKET.TCP
|
||||||
cpy #S.SOCKET
|
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
|
>LDYAI K.TCP.WSIZE
|
||||||
|
>STYA SKT.TmpCache+S.SOCKET.TCP.INFREE
|
||||||
|
>SYSCALL getmem
|
||||||
|
bcs SKT.StoreTCB.RTS
|
||||||
|
txa
|
||||||
|
ldy #S.SOCKET.SQ.hInMem
|
||||||
|
sta (ZPPtrSKT),y
|
||||||
|
|
||||||
|
>LDYAI K.TCP.WSIZE
|
||||||
|
>STYA SKT.TmpCache+S.SOCKET.TCP.OUTFREE
|
||||||
|
>SYSCALL getmem
|
||||||
|
bcs SKT.StoreTCB.RTS
|
||||||
|
txa
|
||||||
|
ldy #S.SOCKET.SQ.hOutMem
|
||||||
|
sta (ZPPtrSKT),y
|
||||||
|
|
||||||
|
ldx #3
|
||||||
|
|
||||||
|
.2 lda A2osX.TIMER16,x
|
||||||
|
sta SKT.TmpCache+S.SOCKET.TCP.OUTNEXTSEQ,x
|
||||||
|
dex
|
||||||
|
bpl .2
|
||||||
|
*--------------------------------------
|
||||||
|
SKT.StoreTCB ldy #S.SOCKET
|
||||||
|
.1 lda SKT.TmpCache,y
|
||||||
|
sta (ZPPtrSKT),y
|
||||||
|
iny
|
||||||
|
cpy #S.SOCKET.TCP
|
||||||
|
bne .1
|
||||||
|
clc Make CC for successfull exit
|
||||||
|
SKT.StoreTCB.RTS
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SKT.StoreTCB ldy #S.SOCKET.TCP-S.SOCKET
|
SKT.GetTCB ldy #S.SOCKET
|
||||||
|
.1 lda (ZPPtrSKT),y
|
||||||
.1 dey
|
sta SKT.TmpCache,y
|
||||||
lda SKT.TmpCache,y
|
iny
|
||||||
sta (ZPPtrSKT),y
|
cpy #S.SOCKET.TCP
|
||||||
cpy #S.SOCKET
|
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SKT.Destroy ldy #S.SOCKET.SQ.hOutMem
|
SKT.Destroy ldy #S.SOCKET.SQ.hOutMem
|
||||||
lda (ZPPtrSKT),y
|
lda (ZPPtrSKT),y
|
||||||
beq .1
|
beq .1
|
||||||
>SYSCALL FreeMem
|
>SYSCALL FreeMem
|
||||||
|
|
||||||
.1 ldy #S.SOCKET.SQ.hInMem
|
.1 ldy #S.SOCKET.SQ.hInMem
|
||||||
lda (ZPPtrSKT),y
|
lda (ZPPtrSKT),y
|
||||||
beq .2
|
beq .2
|
||||||
>SYSCALL FreeMem
|
>SYSCALL FreeMem
|
||||||
|
|
||||||
.2 lda #0
|
.2 clc
|
||||||
sta (ZPPtrSKT)
|
|
||||||
clc
|
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SKT.SetFrameOutDstIP
|
SKT.SetFrameOutDstIP
|
||||||
ldy #S.SOCKET.REM.ADDR
|
ldy #S.SOCKET.REM.ADDR
|
||||||
ldx #4
|
ldx #4
|
||||||
|
|
||||||
.1 lda (ZPPtrSKT),y
|
.1 lda (ZPPtrSKT),y
|
||||||
pha
|
pha
|
||||||
iny
|
iny
|
||||||
dex
|
dex
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
ldy #S.IP.DST+3
|
ldy #S.IP.DST+3
|
||||||
ldx #4
|
ldx #4
|
||||||
|
|
||||||
.2 pla
|
.2 pla
|
||||||
sta (ZPFrameOutPtr),y
|
sta (ZPFrameOutPtr),y
|
||||||
dey
|
dey
|
||||||
|
@ -4,13 +4,12 @@ AUTO 4,1
|
|||||||
.LIST OFF
|
.LIST OFF
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
TCP.IN jsr FRM.GetTargetSKT.TCPUDP
|
TCP.IN jsr FRM.GetTargetSKT.TCPUDP
|
||||||
>DEBUG
|
|
||||||
|
|
||||||
jsr SKT.FindMatchingLocRem
|
jsr SKT.FindMatchingLocRem
|
||||||
bcs TCP.IN.JMP.CLOSED no socket, go discard
|
bcs TCP.IN.JMP.CLOSED no socket, go discard
|
||||||
|
|
||||||
>STYA ZPPtrSKT
|
>STYA ZPPtrSKT
|
||||||
|
|
||||||
ldy #S.SOCKET.PROTO
|
ldy #S.SOCKET.PROTO
|
||||||
lda (ZPPtrSKT),y
|
lda (ZPPtrSKT),y
|
||||||
cmp #S.IP.PROTOCOL.TCP
|
cmp #S.IP.PROTOCOL.TCP
|
||||||
@ -35,20 +34,15 @@ TCP.IN.JMP.CLOSED
|
|||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
TCP.IN.JMP.LISTEN
|
TCP.IN.JMP.LISTEN
|
||||||
ldy #S.TCP.OPTIONS SYN Received, send SYN.ACK packet
|
|
||||||
lda (ZPFrameInPtr),y
|
|
||||||
cmp #S.TCP.OPTIONS.SYN
|
|
||||||
bne TCP.IN.JMP.CLOSED
|
|
||||||
|
|
||||||
ldy #S.SOCKET.T Create a new client socket
|
ldy #S.SOCKET.T Create a new client socket
|
||||||
lda (ZPPtrSKT),y
|
lda (ZPPtrSKT),y
|
||||||
tax Same type a listening socket
|
tax Same type a listening socket
|
||||||
|
iny #S.SOCKET.PROTO
|
||||||
|
lda (ZPPtrSKT),y
|
||||||
|
|
||||||
jsr SKT.Socket.I get new socket in ZPTmpPtr1
|
jsr SKT.Socket.I get new socket in ZPTmpPtr1
|
||||||
bcs TCP.IN.JMP.CLOSED
|
bcs TCP.IN.JMP.CLOSED
|
||||||
|
|
||||||
txa
|
|
||||||
|
|
||||||
jsr SKT.AddToQueueA Queued successfully ?
|
jsr SKT.AddToQueueA Queued successfully ?
|
||||||
|
|
||||||
bcs TCP.IN.JMP.CLOSED no, discard frame and new socket
|
bcs TCP.IN.JMP.CLOSED no, discard frame and new socket
|
||||||
@ -57,27 +51,26 @@ TCP.IN.JMP.LISTEN
|
|||||||
|
|
||||||
lda ZPTmpPtr1
|
lda ZPTmpPtr1
|
||||||
sta ZPPtrSKT
|
sta ZPPtrSKT
|
||||||
ldaZPTmpPtr1+1
|
lda ZPTmpPtr1+1
|
||||||
sta ZPPtrSKT+1
|
sta ZPPtrSKT+1
|
||||||
|
|
||||||
jsr TCP.IN.ACKTheSYN
|
jsr SKT.SetLocAddr
|
||||||
|
jsr SKT.SetRemAddr
|
||||||
|
|
||||||
|
jsr SKT.NewTCB
|
||||||
|
bcs .99
|
||||||
|
|
||||||
jsr SKT.StoreTCB
|
jsr TCP.IN.ACKTheSYN
|
||||||
|
|
||||||
lda #S.TCP.OPTIONS.SYN+S.TCP.OPTIONS.ACK
|
lda #S.TCP.OPTIONS.SYN+S.TCP.OPTIONS.ACK
|
||||||
jsr TCP.OUT.SendOptA SYN received, Send SYN.ACK
|
jsr TCP.OUT.SendOptA SYN received, Send SYN.ACK
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
ldy #S.SOCKET.TCP.S
|
|
||||||
lda #S.SOCKET.TCP.S.SYNRCVD
|
lda #S.SOCKET.TCP.S.SYNRCVD
|
||||||
sta (ZPPtrSKT),y
|
sta SKT.TmpCache+S.SOCKET.TCP.S
|
||||||
|
jmp SKT.StoreTCB
|
||||||
|
|
||||||
clc
|
.9 lda #ERR.SKT.OOS
|
||||||
rts
|
|
||||||
|
|
||||||
.9 lda #0 error
|
|
||||||
sta (ZPPtrSKT) clear this socket
|
|
||||||
lda #ERR.SKT.OOS
|
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
TCP.IN.JMP.SYNSENT
|
TCP.IN.JMP.SYNSENT
|
||||||
@ -109,10 +102,8 @@ TCP.IN.JMP.SYNSENT
|
|||||||
jsr TCP.OUT.SendOptA SYN.ACK recieved, Send, ACK
|
jsr TCP.OUT.SendOptA SYN.ACK recieved, Send, ACK
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
ldy #S.SOCKET.TCP.S
|
|
||||||
lda #S.SOCKET.TCP.S.ESTBLSH
|
lda #S.SOCKET.TCP.S.ESTBLSH
|
||||||
sta (ZPPtrSKT),y
|
sta SKT.TmpCache+S.SOCKET.TCP.S
|
||||||
|
|
||||||
jmp SKT.StoreTCB
|
jmp SKT.StoreTCB
|
||||||
|
|
||||||
.9 lda #S.TCP.OPTIONS.RST
|
.9 lda #S.TCP.OPTIONS.RST
|
||||||
@ -143,9 +134,8 @@ TCP.IN.JMP.SYNRCVD
|
|||||||
dex
|
dex
|
||||||
bpl .1
|
bpl .1
|
||||||
|
|
||||||
ldy #S.SOCKET.TCP.S
|
|
||||||
lda #S.SOCKET.TCP.S.ESTBLSH
|
lda #S.SOCKET.TCP.S.ESTBLSH
|
||||||
sta (ZPPtrSKT),y
|
sta SKT.TmpCache+S.SOCKET.TCP.S
|
||||||
jmp SKT.StoreTCB
|
jmp SKT.StoreTCB
|
||||||
|
|
||||||
.8 clc
|
.8 clc
|
||||||
@ -185,12 +175,13 @@ TCP.IN.JMP.ESTBLSH
|
|||||||
ldy #S.SOCKET.TCP.S
|
ldy #S.SOCKET.TCP.S
|
||||||
lda #S.SOCKET.TCP.S.CLWAIT
|
lda #S.SOCKET.TCP.S.CLWAIT
|
||||||
sta (ZPPtrSKT),y
|
sta (ZPPtrSKT),y
|
||||||
|
jmp SKT.StoreTCB
|
||||||
|
|
||||||
.8 clc
|
.8 clc
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
TCP.IN.JMP.CLWAIT
|
TCP.IN.JMP.CLWAIT
|
||||||
clc Wait for SKT.CloseA from Daemon
|
clc Wait for SKT.shutdown
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
TCP.IN.JMP.LASTACK
|
TCP.IN.JMP.LASTACK
|
||||||
|
@ -133,16 +133,16 @@ J.TCP.IN .DA TCP.IN.JMP.CLOSED
|
|||||||
.DA TCP.IN.JMP.TIMEWT
|
.DA TCP.IN.JMP.TIMEWT
|
||||||
J.SKT.Socket .DA SKT.Socket.RAW
|
J.SKT.Socket .DA SKT.Socket.RAW
|
||||||
.DA SKT.Socket.DGRAM
|
.DA SKT.Socket.DGRAM
|
||||||
.DA SKT.Socket.STREAM
|
|
||||||
.DA SKT.Socket.SEQPACKET
|
.DA SKT.Socket.SEQPACKET
|
||||||
|
.DA SKT.Socket.STREAM
|
||||||
J.SKT.connect .DA SKT.connect.RAW
|
J.SKT.connect .DA SKT.connect.RAW
|
||||||
.DA SKT.connect.DGRAM
|
.DA SKT.connect.DGRAM
|
||||||
.DA SKT.connect.STREAM
|
|
||||||
.DA SKT.connect.SEQPACKET
|
.DA SKT.connect.SEQPACKET
|
||||||
|
.DA SKT.connect.STREAM
|
||||||
J.SKT.send .DA SKT.send.RAW
|
J.SKT.send .DA SKT.send.RAW
|
||||||
.DA SKT.send.DGRAM
|
.DA SKT.send.DGRAM
|
||||||
.DA SKT.send.STREAM
|
|
||||||
.DA SKT.send.SEQPACKET
|
.DA SKT.send.SEQPACKET
|
||||||
|
.DA SKT.send.STREAM
|
||||||
.DA 0
|
.DA 0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
LIB.LOAD ldx RefCount
|
LIB.LOAD ldx RefCount
|
||||||
@ -211,7 +211,6 @@ POLL >PUSHW L.IOCTL
|
|||||||
jmp IP.IN
|
jmp IP.IN
|
||||||
|
|
||||||
.9 lda hFrameIn
|
.9 lda hFrameIn
|
||||||
beq LIB.UNLOAD.8
|
|
||||||
>SYSCALL FreeMem
|
>SYSCALL FreeMem
|
||||||
|
|
||||||
.99 rts
|
.99 rts
|
||||||
@ -222,11 +221,10 @@ POLL >PUSHW L.IOCTL
|
|||||||
PULSE and #S.EVT.F.T1SEC
|
PULSE and #S.EVT.F.T1SEC
|
||||||
beq .1
|
beq .1
|
||||||
|
|
||||||
* jsr ARP.EXPIRE
|
jsr ARP.EXPIRE
|
||||||
* jsr DNS.EXPIRE
|
jsr DNS.EXPIRE
|
||||||
|
|
||||||
.1
|
.1 jsr DNS.POLL
|
||||||
* jsr DNS.POLL
|
|
||||||
jmp FRM.RETRY
|
jmp FRM.RETRY
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
GetDynPort inc DYNPORT.LAST
|
GetDynPort inc DYNPORT.LAST
|
||||||
@ -319,9 +317,9 @@ FD.DSOCK.SIZE .EQ *-FD.DSOCK
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
FD.SSOCK .DA #S.FD.T.SSOCK
|
FD.SSOCK .DA #S.FD.T.SSOCK
|
||||||
.BS 1 S.FD.HANDLER
|
.BS 1 S.FD.HANDLER
|
||||||
.BS 1 S.FD.DSOCK.HSKT
|
.BS 1 S.FD.SSOCK.HSKT
|
||||||
.DA #0 S.FD.DSOCK.OPEN
|
.DA #0 S.FD.SSOCK.OPEN
|
||||||
.DA #0 S.FD.DSOCK.CLOSE
|
.DA #0 S.FD.SSOCK.CLOSE
|
||||||
.DA #LIBTCPIP.Read
|
.DA #LIBTCPIP.Read
|
||||||
.DA #LIBTCPIP.Write
|
.DA #LIBTCPIP.Write
|
||||||
.DA #0 S.FD.DSOCK.STATUS
|
.DA #0 S.FD.DSOCK.STATUS
|
||||||
|
@ -55,6 +55,7 @@ CS.RUN ldy #S.PS.ARGC
|
|||||||
>PUSHBI O.RDWR
|
>PUSHBI O.RDWR
|
||||||
lda #1
|
lda #1
|
||||||
>SYSCALL ArgV get /dev/xxx
|
>SYSCALL ArgV get /dev/xxx
|
||||||
|
|
||||||
>SYSCALL fopen
|
>SYSCALL fopen
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
|
@ -40,14 +40,14 @@ CS.START cld
|
|||||||
.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
|
||||||
L.NOD.Template .DA NOD.Template
|
|
||||||
L.NOD.Name .DA NOD.Name
|
|
||||||
L.MSG.TCPWAIT .DA MSG.TCPWAIT
|
L.MSG.TCPWAIT .DA MSG.TCPWAIT
|
||||||
L.MSG.INITOK .DA MSG.INITOK
|
L.MSG.INITOK .DA MSG.INITOK
|
||||||
L.MSG.TCPIPERR .DA MSG.TCPIPERR
|
L.MSG.TCPIPERR .DA MSG.TCPIPERR
|
||||||
L.MSG.SKTERR .DA MSG.SKTERR
|
L.MSG.SKTERR .DA MSG.SKTERR
|
||||||
L.MSG.ABORT .DA MSG.ABORT
|
L.MSG.ABORT .DA MSG.ABORT
|
||||||
L.MSG.INCOMING .DA MSG.INCOMING
|
L.MSG.INCOMING .DA MSG.INCOMING
|
||||||
|
L.NOD.Template .DA NOD.Template
|
||||||
|
L.CMD.Template .DA CMD.Template
|
||||||
.DA 0
|
.DA 0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.INIT >LDYA L.LIBTCPIP
|
CS.INIT >LDYA L.LIBTCPIP
|
||||||
@ -163,6 +163,8 @@ CS.RUN.CLIENT sta (pData),y
|
|||||||
>SYSCALL GetMemPtr
|
>SYSCALL GetMemPtr
|
||||||
>STYA ZPSktPtr
|
>STYA ZPSktPtr
|
||||||
|
|
||||||
|
>PUSHB.G hClientSocket
|
||||||
|
|
||||||
ldx #3
|
ldx #3
|
||||||
ldy #S.SOCKET.REM.ADDR+3
|
ldy #S.SOCKET.REM.ADDR+3
|
||||||
|
|
||||||
@ -171,24 +173,34 @@ CS.RUN.CLIENT sta (pData),y
|
|||||||
dex
|
dex
|
||||||
bpl .3
|
bpl .3
|
||||||
|
|
||||||
>PUSHB.G hClientSocket
|
|
||||||
|
|
||||||
>PUSHBI 5
|
>PUSHBI 5
|
||||||
>LDYA L.MSG.INCOMING
|
>LDYA L.MSG.INCOMING
|
||||||
>SYSCALL printf
|
>SYSCALL printf
|
||||||
bcs .9
|
|
||||||
|
|
||||||
>PUSHB.G hClientSocket
|
>PUSHB.G hClientSocket
|
||||||
>PUSHBI 1
|
>PUSHBI 1
|
||||||
>PUSHWI L.NOD.Template
|
>PUSHW L.NOD.Template
|
||||||
>LDYAI L.NOD.Name
|
>LEA.G NodBuf
|
||||||
>SYSCALL sprintf
|
>SYSCALL sprintf
|
||||||
|
|
||||||
>PUSHB.G hClientSocket
|
>PUSHB.G hClientSocket
|
||||||
>PUSHW 0
|
>PUSHW 0
|
||||||
>LDYAI L.NOD.Name
|
>LEA.G NodBuf
|
||||||
>SYSCALL mknod
|
>SYSCALL mknod
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
>PUSHEA.G NodBuf
|
||||||
|
>PUSHBI 2
|
||||||
|
>PUSHW L.CMD.Template
|
||||||
|
>LEA.G CmdBuf
|
||||||
|
>SYSCALL sprintf
|
||||||
|
|
||||||
|
>LEA.G CmdBuf
|
||||||
|
>SYSCALL puts
|
||||||
|
|
||||||
|
>PUSHBI S.PS.F.DUPENV
|
||||||
|
>LEA.G CmdBuf
|
||||||
|
>SYSCALL execl
|
||||||
|
|
||||||
.8 clc
|
.8 clc
|
||||||
.9 rts
|
.9 rts
|
||||||
@ -221,8 +233,7 @@ CS.QUIT ldx #CONN.MAX
|
|||||||
dex
|
dex
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
ldy #hSrvSocket
|
>LDA.G hSrvSocket
|
||||||
lda (pData),y
|
|
||||||
beq .3
|
beq .3
|
||||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Shutdown
|
>LIBCALL hLIBTCPIP,LIBTCPIP.Shutdown
|
||||||
|
|
||||||
@ -253,22 +264,14 @@ MSG.TCPIPERR .AZ "TELNETD:TCP/IP Not initialized properly"
|
|||||||
MSG.SKTERR .AZ "TELNETD:Listen Error."
|
MSG.SKTERR .AZ "TELNETD:Listen Error."
|
||||||
MSG.ABORT .AZ "TELNETD:User Aborted."
|
MSG.ABORT .AZ "TELNETD:User Aborted."
|
||||||
MSG.INCOMING .AZ "TELNETD:Incoming Connection [SKT=%h] From : %d.%d.%d.%d\r\n"
|
MSG.INCOMING .AZ "TELNETD:Incoming Connection [SKT=%h] From : %d.%d.%d.%d\r\n"
|
||||||
CMD.LINE .AS "${A2OSX}SBIN/GETTY "
|
*--------------------------------------
|
||||||
|
NOD.Template .AZ "/DEV/TTY%h"
|
||||||
.AZ " ${A2OSX}SBIN/LOGIN"
|
CMD.Template .AZ "${A2OSX}SBIN/GETTY %s ${A2OSX}SBIN/LOGIN"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SA.LOCAL .DA #AF.INET S.SOCKADDR.AF
|
SA.LOCAL .DA #AF.INET S.SOCKADDR.AF
|
||||||
.BS 1
|
.BS 1
|
||||||
.BS 4 S.SOCKADDR.ADDR
|
.BS 4 S.SOCKADDR.ADDR
|
||||||
.DA TCP.PORT.TELNET
|
.DA TCP.PORT.TELNET
|
||||||
*--------------------------------------
|
|
||||||
SA.REMOTE .DA #AF.INET S.SOCKADDR.AF
|
|
||||||
.BS 1
|
|
||||||
.BS 4 S.SOCKADDR.ADDR
|
|
||||||
.BS 2 S.SOCKADDR.PORT
|
|
||||||
*--------------------------------------
|
|
||||||
NOD.Template .AZ "/DEV/TTY%h"
|
|
||||||
NOD.Name .AZ " "
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.DUMMY
|
.DUMMY
|
||||||
.OR 0
|
.OR 0
|
||||||
@ -278,7 +281,8 @@ SktIndex .BS 1
|
|||||||
hSrvSocket .BS 1
|
hSrvSocket .BS 1
|
||||||
hClientSocket .BS 1
|
hClientSocket .BS 1
|
||||||
TimeOut .BS 1
|
TimeOut .BS 1
|
||||||
|
NodBuf .BS 11
|
||||||
|
CmdBuf .BS 65
|
||||||
DS.END
|
DS.END
|
||||||
.ED
|
.ED
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -45,17 +45,45 @@ IO.Open.I jsr STDIO.SetMLIPathYA
|
|||||||
>LDYAI K.MLI.PATH+6 skip $/DEV/
|
>LDYAI K.MLI.PATH+6 skip $/DEV/
|
||||||
|
|
||||||
jsr K.GetDevByName
|
jsr K.GetDevByName
|
||||||
bcs IO.OPEN.RTS
|
bcc .7
|
||||||
|
|
||||||
>STYA pFD
|
ldx #0
|
||||||
phx DEVID
|
|
||||||
|
.10 lda Nod.Table.hPath,x
|
||||||
|
beq .6
|
||||||
|
jsr K.GetMemPtr
|
||||||
|
>STYA ZPPtr1
|
||||||
|
|
||||||
|
ldy #0
|
||||||
|
|
||||||
|
.2 lda (ZPPtr1),y
|
||||||
|
iny
|
||||||
|
cmp K.MLI.PATH,y
|
||||||
|
bne .6
|
||||||
|
cmp #0 end of string ?
|
||||||
|
bne .2
|
||||||
|
|
||||||
|
txa return hFILE
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
.6 inx
|
||||||
|
cpx #K.NOD.MAX
|
||||||
|
bne .10
|
||||||
|
|
||||||
|
lda #MLI.E.NODEV
|
||||||
|
* sec
|
||||||
|
rts no OF found
|
||||||
|
|
||||||
|
.7 >STYA pFD
|
||||||
|
phx DEVID/hFILE
|
||||||
|
|
||||||
lda (pFD) #S.FD.T
|
lda (pFD) #S.FD.T
|
||||||
tax
|
tax
|
||||||
pla
|
pla
|
||||||
jmp (.2,x)
|
jmp (.8,x)
|
||||||
|
|
||||||
.2 .DA STDIO.IOERR REG
|
.8 .DA STDIO.IOERR REG
|
||||||
.DA STDIO.IOERR DIR
|
.DA STDIO.IOERR DIR
|
||||||
.DA IO.OPEN.CDEV
|
.DA IO.OPEN.CDEV
|
||||||
.DA STDIO.IOERR BDEV
|
.DA STDIO.IOERR BDEV
|
||||||
|
@ -239,9 +239,8 @@ Mem.NextSlot lda ZPMemMgrSPtr
|
|||||||
K.FreeMem.ERR >PUSHA
|
K.FreeMem.ERR >PUSHA
|
||||||
>PUSHBI 1
|
>PUSHBI 1
|
||||||
|
|
||||||
>PUSHWI K.FreeMem.ERR1
|
>LDYAI K.FreeMem.ERR1
|
||||||
lda #DEVID.SYS
|
>SYSCALL printf
|
||||||
>SYSCALL fprintf
|
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
@ -314,14 +313,13 @@ K.FreeMem tay
|
|||||||
|
|
||||||
>PUSHYA
|
>PUSHYA
|
||||||
>PUSHBI 2
|
>PUSHBI 2
|
||||||
>PUSHWI K.FreeMem.ERR2
|
>LDYAI K.FreeMem.ERR2
|
||||||
lda #DEVID.SYS
|
>SYSCALL printf
|
||||||
>SYSCALL fprintf
|
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
K.FreeMem.ERR1 .AZ "FreeMem:Bad hMem:%h."
|
K.FreeMem.ERR1 .AZ "FreeMem:Bad hMem:%h.\r\n"
|
||||||
K.FreeMem.ERR2 .AZ "FreeMem:hMem already freed At $%H."
|
K.FreeMem.ERR2 .AZ "FreeMem:hMem already freed At $%H.\r\n"
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # GetMemPtr
|
* # GetMemPtr
|
||||||
* A = hMem
|
* A = hMem
|
||||||
|
Loading…
Reference in New Issue
Block a user