mirror of
https://github.com/A2osX/A2osX.git
synced 2025-02-27 00:30:55 +00:00
Kernel version 0.9 : TCPIP, larger S.SOCKET struct to handle more cached values, INC files splitted in smaller files
This commit is contained in:
parent
0631f052aa
commit
66600f0c4d
BIN
A2OSX.BOOT.po
BIN
A2OSX.BOOT.po
Binary file not shown.
BIN
A2OSX.DEV.po
BIN
A2OSX.DEV.po
Binary file not shown.
BIN
A2OSX.SRC.po
BIN
A2OSX.SRC.po
Binary file not shown.
@ -339,7 +339,7 @@ Socket.Src.Addr .BS 4
|
|||||||
Socket.Src.Port .DA 0 Dynamic
|
Socket.Src.Port .DA 0 Dynamic
|
||||||
Socket.Dst.Addr .BS 4
|
Socket.Dst.Addr .BS 4
|
||||||
Socket.Dst.Port .DA 0 Identifier
|
Socket.Dst.Port .DA 0 Identifier
|
||||||
.BS 16
|
.BS S.SOCKET-16
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ICMP.Request .DA #S.ICMP.TYPE.ECHOREQ
|
ICMP.Request .DA #S.ICMP.TYPE.ECHOREQ
|
||||||
.DA #0 CODE
|
.DA #0 CODE
|
||||||
|
47
INC/DHCP.I.txt
Normal file
47
INC/DHCP.I.txt
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
PR#3
|
||||||
|
PREFIX /A2OSX.SRC
|
||||||
|
NEW
|
||||||
|
INC 1
|
||||||
|
AUTO 6
|
||||||
|
.LIST OFF
|
||||||
|
.OP 65C02
|
||||||
|
*--------------------------------------
|
||||||
|
S.DHCP.OP .EQ S.UDP+0 1 = BOOTREQUEST, 2 = BOOTREPLY
|
||||||
|
S.DHCP.OP.BOOTREQUEST .EQ 1
|
||||||
|
S.DHCP.OP.BOOTREPLY .EQ 2
|
||||||
|
S.DHCP.HTYPE .EQ S.UDP+1 1 = ETHERNET
|
||||||
|
S.DHCP.HTYPE.ETHERNET .EQ 1
|
||||||
|
S.DHCP.HLEN .EQ S.UDP+2 6 (MAC len)
|
||||||
|
S.DHCP.HLEN.ETHERNET .EQ 6
|
||||||
|
S.DHCP.HOPS .EQ S.UDP+3 0
|
||||||
|
S.DHCP.XID .EQ S.UDP+4 client : random number
|
||||||
|
S.DHCP.SECS .EQ S.UDP+8
|
||||||
|
S.DHCP.FLAGS .EQ S.UDP+10
|
||||||
|
S.DHCP.FLAGS.BRDCST .EQ %10000000
|
||||||
|
S.DHCP.CIADDR .EQ S.UDP+12
|
||||||
|
S.DHCP.YIADDR .EQ S.UDP+16
|
||||||
|
S.DHCP.SIADDR .EQ S.UDP+20
|
||||||
|
S.DHCP.GIADDR .EQ S.UDP+24
|
||||||
|
S.DHCP.CHADDR .EQ S.UDP+28
|
||||||
|
S.DHCP.SNAME .EQ S.UDP+44
|
||||||
|
S.DHCP.FILE .EQ S.UDP+108
|
||||||
|
S.DHCP.COOKIE .EQ S.UDP+236
|
||||||
|
S.DHCP.OPTIONS .EQ S.UDP+240
|
||||||
|
S.DHCP.OPTIONS.DHCPDiscover .EQ 1
|
||||||
|
S.DHCP.OPTIONS.DHCPOffer .EQ 2
|
||||||
|
S.DHCP.OPTIONS.DHCPRequest .EQ 3
|
||||||
|
S.DHCP.OPTIONS.DHCPDecline .EQ 4
|
||||||
|
S.DHCP.OPTIONS.DHCPAck .EQ 5
|
||||||
|
S.DHCP.OPTIONS.DHCPNak .EQ 6
|
||||||
|
S.DHCP.OPTIONS.DHCPRelease .EQ 7
|
||||||
|
S.DHCP.OPTIONS.DHCPInform .EQ 8
|
||||||
|
S.DHCP.OPTIONS.MASK .EQ 1
|
||||||
|
S.DHCP.OPTIONS.GW .EQ 3
|
||||||
|
S.DHCP.OPTIONS.DNS .EQ 6
|
||||||
|
S.DHCP.OPTIONS.DOMAIN .EQ 15
|
||||||
|
S.DHCP.OPTIONS.END .EQ 255
|
||||||
|
*
|
||||||
|
S.DHCP .EQ S.UDP+240
|
||||||
|
*--------------------------------------
|
||||||
|
MAN
|
||||||
|
SAVE /A2OSX.DEV/INC/DHCP.I
|
@ -20,7 +20,8 @@ K.DNS.MAXLEN .EQ 64
|
|||||||
K.DYNPORT.START .EQ 49152
|
K.DYNPORT.START .EQ 49152
|
||||||
K.DYNPORT.END .EQ 65535
|
K.DYNPORT.END .EQ 65535
|
||||||
K.TCP.MSS .EQ K.ETH.FRAME.LEN-20-20-14
|
K.TCP.MSS .EQ K.ETH.FRAME.LEN-20-20-14
|
||||||
K.TCP.WSIZE .EQ K.TCP.MSS
|
K.TCP.WSIZE .EQ 2048
|
||||||
|
K.TCP.WMASK .EQ 2047
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
LIBTCPIP.SET.IPCFG .EQ 4
|
LIBTCPIP.SET.IPCFG .EQ 4
|
||||||
LIBTCPIP.GET.IPCFG .EQ 6
|
LIBTCPIP.GET.IPCFG .EQ 6
|
||||||
@ -180,10 +181,14 @@ S.SOCKET.SQ.INHEAD .EQ 16
|
|||||||
S.SOCKET.SQ.INTAIL .EQ 18
|
S.SOCKET.SQ.INTAIL .EQ 18
|
||||||
S.SOCKET.SQ.OUTHEAD .EQ 20
|
S.SOCKET.SQ.OUTHEAD .EQ 20
|
||||||
S.SOCKET.SQ.OUTTAIL .EQ 22
|
S.SOCKET.SQ.OUTTAIL .EQ 22
|
||||||
S.SOCKET.SQ.SEQNUM .EQ 24
|
S.SOCKET.SQ.INFREE .EQ 24
|
||||||
S.SOCKET.SQ.ACKNUM .EQ 28
|
S.SOCKET.SQ.OUTFREE .EQ 26
|
||||||
*
|
*
|
||||||
S.SOCKET .EQ 32
|
*
|
||||||
|
S.SOCKET.SQ.SEQNUM .EQ 32
|
||||||
|
S.SOCKET.SQ.ACKNUM .EQ 36
|
||||||
|
*
|
||||||
|
S.SOCKET .EQ 40
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
S.ETH.FRAMELEN .EQ 0
|
S.ETH.FRAMELEN .EQ 0
|
||||||
S.ETH.DSTMAC .EQ 2
|
S.ETH.DSTMAC .EQ 2
|
||||||
@ -259,43 +264,6 @@ S.TCP.URGPTR .EQ S.IP+18
|
|||||||
*
|
*
|
||||||
S.TCP .EQ S.IP+20
|
S.TCP .EQ S.IP+20
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
S.DHCP.OP .EQ S.UDP+0 1 = BOOTREQUEST, 2 = BOOTREPLY
|
|
||||||
S.DHCP.OP.BOOTREQUEST .EQ 1
|
|
||||||
S.DHCP.OP.BOOTREPLY .EQ 2
|
|
||||||
S.DHCP.HTYPE .EQ S.UDP+1 1 = ETHERNET
|
|
||||||
S.DHCP.HTYPE.ETHERNET .EQ 1
|
|
||||||
S.DHCP.HLEN .EQ S.UDP+2 6 (MAC len)
|
|
||||||
S.DHCP.HLEN.ETHERNET .EQ 6
|
|
||||||
S.DHCP.HOPS .EQ S.UDP+3 0
|
|
||||||
S.DHCP.XID .EQ S.UDP+4 client : random number
|
|
||||||
S.DHCP.SECS .EQ S.UDP+8
|
|
||||||
S.DHCP.FLAGS .EQ S.UDP+10
|
|
||||||
S.DHCP.FLAGS.BRDCST .EQ %10000000
|
|
||||||
S.DHCP.CIADDR .EQ S.UDP+12
|
|
||||||
S.DHCP.YIADDR .EQ S.UDP+16
|
|
||||||
S.DHCP.SIADDR .EQ S.UDP+20
|
|
||||||
S.DHCP.GIADDR .EQ S.UDP+24
|
|
||||||
S.DHCP.CHADDR .EQ S.UDP+28
|
|
||||||
S.DHCP.SNAME .EQ S.UDP+44
|
|
||||||
S.DHCP.FILE .EQ S.UDP+108
|
|
||||||
S.DHCP.COOKIE .EQ S.UDP+236
|
|
||||||
S.DHCP.OPTIONS .EQ S.UDP+240
|
|
||||||
S.DHCP.OPTIONS.DHCPDiscover .EQ 1
|
|
||||||
S.DHCP.OPTIONS.DHCPOffer .EQ 2
|
|
||||||
S.DHCP.OPTIONS.DHCPRequest .EQ 3
|
|
||||||
S.DHCP.OPTIONS.DHCPDecline .EQ 4
|
|
||||||
S.DHCP.OPTIONS.DHCPAck .EQ 5
|
|
||||||
S.DHCP.OPTIONS.DHCPNak .EQ 6
|
|
||||||
S.DHCP.OPTIONS.DHCPRelease .EQ 7
|
|
||||||
S.DHCP.OPTIONS.DHCPInform .EQ 8
|
|
||||||
S.DHCP.OPTIONS.MASK .EQ 1
|
|
||||||
S.DHCP.OPTIONS.GW .EQ 3
|
|
||||||
S.DHCP.OPTIONS.DNS .EQ 6
|
|
||||||
S.DHCP.OPTIONS.DOMAIN .EQ 15
|
|
||||||
S.DHCP.OPTIONS.END .EQ 255
|
|
||||||
*
|
|
||||||
S.DHCP .EQ S.UDP+240
|
|
||||||
*--------------------------------------
|
|
||||||
S.DNS.ID .EQ S.UDP+0
|
S.DNS.ID .EQ S.UDP+0
|
||||||
S.DNS.F .EQ S.UDP+2
|
S.DNS.F .EQ S.UDP+2
|
||||||
S.DNS.F.QR .EQ %10000000.00000000
|
S.DNS.F.QR .EQ %10000000.00000000
|
||||||
|
58
INC/MLI.ERR.I.txt
Normal file
58
INC/MLI.ERR.I.txt
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
PR#3
|
||||||
|
PREFIX /A2OSX.SRC
|
||||||
|
NEW
|
||||||
|
INC 1
|
||||||
|
AUTO 6
|
||||||
|
.LIST OFF
|
||||||
|
*--------------------------------------
|
||||||
|
*$00 - No Error
|
||||||
|
*$01 - Bad Call Number
|
||||||
|
*$04 - Bad Parameter Count
|
||||||
|
*$25 - Interrupt Table Full
|
||||||
|
*$27 - I/O Error
|
||||||
|
*$28 - No Device Connected
|
||||||
|
*$2B - Write Protected
|
||||||
|
*$2E - Disk Switched
|
||||||
|
*$2F - Device Offline
|
||||||
|
*$40 - Invalid Pathname
|
||||||
|
*$42 - Maximum Number of Files Open
|
||||||
|
*$43 - Invalid Reference Number
|
||||||
|
*$44 - Directory Not Found
|
||||||
|
*$45 - Volume Not Found
|
||||||
|
*$46 - File Not Found
|
||||||
|
*$47 - Duplicate File Name
|
||||||
|
*$48 - Volume Full
|
||||||
|
*$49 - Directory Full
|
||||||
|
*$4A - Incompatible File Format
|
||||||
|
*$4B - Unsupported Storage Type
|
||||||
|
*$4C - End of File, No More Data
|
||||||
|
*$4D - Beyond EOF
|
||||||
|
*$4E - File Access Error, File Locked
|
||||||
|
*$50 - File Already Open
|
||||||
|
*$51 - Directory Structure Damaged
|
||||||
|
*$53 - Invalid Parameter
|
||||||
|
*$55 - Too Many Volumes
|
||||||
|
*$56 - Bad Buffer Address
|
||||||
|
*$57 - Duplicate Volume
|
||||||
|
*$5A - File Structure Damaged
|
||||||
|
*--------------------------------------
|
||||||
|
MLI.ERR.BADCALL .EQ $01
|
||||||
|
*MLI.ERR.BADCNT .EQ $04
|
||||||
|
*MLI.ERR.IRQFULL .EQ $25
|
||||||
|
MLI.ERR.IO .EQ $27
|
||||||
|
MLI.ERR.NODEV .EQ $28
|
||||||
|
MLI.ERR.WRTPROT .EQ $2B
|
||||||
|
MLI.ERR.DSKSWIT .EQ $2E
|
||||||
|
MLI.ERR.INVPATH .EQ $40
|
||||||
|
MLI.ERR.FCBFULL .EQ $42
|
||||||
|
MLI.ERR.BADREF .EQ $43
|
||||||
|
MLI.ERR.PNOTFND .EQ $44
|
||||||
|
MLI.ERR.VNOTFND .EQ $45
|
||||||
|
MLI.ERR.FNOTFND .EQ $46
|
||||||
|
MLI.ERR.DUPFILE .EQ $47
|
||||||
|
MLI.ERR.OVERRUN .EQ $48
|
||||||
|
MLI.ERR.VOLFULL .EQ $49
|
||||||
|
MLI.ERR.EOF .EQ $4C
|
||||||
|
*--------------------------------------
|
||||||
|
MAN
|
||||||
|
SAVE /A2OSX.DEV/INC/MLI.ERR.I
|
@ -63,55 +63,6 @@ S.FILEINFO.CREATETIME .EQ $10
|
|||||||
*
|
*
|
||||||
S.FILEINFO .EQ $12
|
S.FILEINFO .EQ $12
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
*$00 - No Error
|
|
||||||
*$01 - Bad Call Number
|
|
||||||
*$04 - Bad Parameter Count
|
|
||||||
*$25 - Interrupt Table Full
|
|
||||||
*$27 - I/O Error
|
|
||||||
*$28 - No Device Connected
|
|
||||||
*$2B - Write Protected
|
|
||||||
*$2E - Disk Switched
|
|
||||||
*$2F - Device Offline
|
|
||||||
*$40 - Invalid Pathname
|
|
||||||
*$42 - Maximum Number of Files Open
|
|
||||||
*$43 - Invalid Reference Number
|
|
||||||
*$44 - Directory Not Found
|
|
||||||
*$45 - Volume Not Found
|
|
||||||
*$46 - File Not Found
|
|
||||||
*$47 - Duplicate File Name
|
|
||||||
*$48 - Volume Full
|
|
||||||
*$49 - Directory Full
|
|
||||||
*$4A - Incompatible File Format
|
|
||||||
*$4B - Unsupported Storage Type
|
|
||||||
*$4C - End of File, No More Data
|
|
||||||
*$4D - Beyond EOF
|
|
||||||
*$4E - File Access Error, File Locked
|
|
||||||
*$50 - File Already Open
|
|
||||||
*$51 - Directory Structure Damaged
|
|
||||||
*$53 - Invalid Parameter
|
|
||||||
*$55 - Too Many Volumes
|
|
||||||
*$56 - Bad Buffer Address
|
|
||||||
*$57 - Duplicate Volume
|
|
||||||
*$5A - File Structure Damaged
|
|
||||||
*--------------------------------------
|
|
||||||
MLI.ERR.BADCALL .EQ $01
|
|
||||||
*MLI.ERR.BADCNT .EQ $04
|
|
||||||
*MLI.ERR.IRQFULL .EQ $25
|
|
||||||
MLI.ERR.IO .EQ $27
|
|
||||||
MLI.ERR.NODEV .EQ $28
|
|
||||||
MLI.ERR.WRTPROT .EQ $2B
|
|
||||||
MLI.ERR.DSKSWIT .EQ $2E
|
|
||||||
MLI.ERR.INVPATH .EQ $40
|
|
||||||
MLI.ERR.FCBFULL .EQ $42
|
|
||||||
MLI.ERR.BADREF .EQ $43
|
|
||||||
MLI.ERR.PNOTFND .EQ $44
|
|
||||||
MLI.ERR.VNOTFND .EQ $45
|
|
||||||
MLI.ERR.FNOTFND .EQ $46
|
|
||||||
MLI.ERR.DUPFILE .EQ $47
|
|
||||||
MLI.ERR.OVERRUN .EQ $48
|
|
||||||
MLI.ERR.VOLFULL .EQ $49
|
|
||||||
MLI.ERR.EOF .EQ $4C
|
|
||||||
*--------------------------------------
|
|
||||||
MLI .EQ $BF00
|
MLI .EQ $BF00
|
||||||
*JSPARE .EQ $BF03
|
*JSPARE .EQ $BF03
|
||||||
DATETIME .EQ $BF06
|
DATETIME .EQ $BF06
|
||||||
|
@ -1,56 +0,0 @@
|
|||||||
PR#3
|
|
||||||
PREFIX /A2OSX.SRC
|
|
||||||
NEW
|
|
||||||
INC 1
|
|
||||||
AUTO 6
|
|
||||||
*--------------------------------------
|
|
||||||
S.NODE.SOCK.SO .EQ 2
|
|
||||||
S.NODE.SOCK.SO.DEBUG .EQ $01
|
|
||||||
S.NODE.SOCK.SO.ACCEPTCONN .EQ $02
|
|
||||||
S.NODE.SOCK.SO.REUSEADDR .EQ $04
|
|
||||||
S.NODE.SOCK.SO.KEEPALIVE .EQ $08
|
|
||||||
S.NODE.SOCK.SO.DONTROUTE .EQ $10
|
|
||||||
S.NODE.SOCK.SO.BROADCAST .EQ $20
|
|
||||||
S.NODE.SOCK.SO.USELOOPBACK .EQ $40
|
|
||||||
S.NODE.SOCK.SO.LINGER .EQ $80
|
|
||||||
|
|
||||||
S.NODE.SOCK.S .EQ 3
|
|
||||||
S.NODE.SOCK.S.CLOSED .EQ 0
|
|
||||||
S.NODE.SOCK.S.LISTEN .EQ 1
|
|
||||||
S.NODE.SOCK.S.SYNSENT .EQ 2
|
|
||||||
S.NODE.SOCK.S.SYNRCVD .EQ 3
|
|
||||||
S.NODE.SOCK.S.ESTBLSH .EQ 4
|
|
||||||
S.NODE.SOCK.S.CLWAIT .EQ 5
|
|
||||||
S.NODE.SOCK.S.LASTACK .EQ 6
|
|
||||||
S.NODE.SOCK.S.FINWT1 .EQ 7
|
|
||||||
S.NODE.SOCK.S.FINWT2 .EQ 8
|
|
||||||
S.NODE.SOCK.S.CLOSING .EQ 9
|
|
||||||
S.NODE.SOCK.S.TIMEWT .EQ 10
|
|
||||||
|
|
||||||
S.NODE.SOCK.SRC.ADDR .EQ 4
|
|
||||||
S.NODE.SOCK.SRC.PORT .EQ 8
|
|
||||||
S.NODE.SOCK.DST.ADDR .EQ 10
|
|
||||||
S.NODE.SOCK.DST.PORT .EQ 14
|
|
||||||
* Listen type Queue
|
|
||||||
S.NODE.SOCK.LQ.HEAD .EQ 16
|
|
||||||
S.NODE.SOCK.LQ.TAIL .EQ 17
|
|
||||||
S.NODE.SOCK.LQ .EQ 18
|
|
||||||
S.NODE.SOCK.LQ.MAX .EQ 14 14 hSocket
|
|
||||||
* Datagram type Queue
|
|
||||||
S.NODE.SOCK.DQ.HEAD .EQ 16
|
|
||||||
S.NODE.SOCK.DQ.TAIL .EQ 17
|
|
||||||
S.NODE.SOCK.DQ .EQ 18
|
|
||||||
S.NODE.SOCK.DQ.MAX .EQ 14 14 hMem (frames)
|
|
||||||
* Stream type Queue
|
|
||||||
S.NODE.SOCK.SQ.hInMem .EQ 16
|
|
||||||
S.NODE.SOCK.SQ.hOutMem .EQ 17
|
|
||||||
S.NODE.SOCK.SQ.SIZE .EQ 18
|
|
||||||
S.NODE.SOCK.SQ.HEAD .EQ 20
|
|
||||||
S.NODE.SOCK.SQ.TAIL .EQ 22
|
|
||||||
S.NODE.SOCK.SQ.SEQNUM .EQ 24
|
|
||||||
S.NODE.SOCK.SQ.ACKNUM .EQ 28
|
|
||||||
*
|
|
||||||
S.NODE.SOCK .EQ 32
|
|
||||||
*--------------------------------------
|
|
||||||
MAN
|
|
||||||
SAVE /A2OSX.DEV/INC/SOCKET.I
|
|
@ -163,25 +163,125 @@ SKT.SEND.UDP lda #S.IP.PROTOCOL.UDP
|
|||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SKT.SEND.TCP ldy #S.SOCKET.STREAM.hOutMem
|
SKT.SEND.TCP ldy #S.SOCKET.STATUS
|
||||||
|
lda (ZPPtrSKT),y
|
||||||
|
and #S.SOCKET.STATUS.MASK
|
||||||
|
cmp #S.SOCKET.STATUS.ESTBLSH
|
||||||
|
beq .10
|
||||||
|
|
||||||
|
lda #MLI.ERR.IO
|
||||||
|
* sec CS from cmp
|
||||||
|
rts
|
||||||
|
|
||||||
|
.10 ldy #S.SOCKET.STREAM.hOutMem
|
||||||
lda (ZPPtrSKT),y
|
lda (ZPPtrSKT),y
|
||||||
>SYSCALL GetMemPtrA
|
>SYSCALL GetMemPtrA
|
||||||
>STYA ZPTmpPtr1 Make ZPTmpPtr1=buffer base
|
>STYA ZPTmpPtr1 Make ZPTmpPtr1=buffer base
|
||||||
|
|
||||||
ldy #S.SOCKET.SQ.OUTHEAD
|
ldy #S.SOCKET.SQ.OUTFREE
|
||||||
lda (ZPPtrSKT),y
|
lda (ZPPtrSKT),y
|
||||||
* clc
|
sec
|
||||||
adc ZPDataInLen
|
sbc ZPDataInLen
|
||||||
tax
|
tax
|
||||||
|
|
||||||
iny
|
iny
|
||||||
lda (ZPPtrSKT),y
|
lda (ZPPtrSKT),y
|
||||||
|
sbc ZPDataInLen+1 X,A = new OUTFREE
|
||||||
|
bcc .91
|
||||||
|
|
||||||
|
sta (ZPPtrSKT),y
|
||||||
|
dey
|
||||||
|
txa
|
||||||
|
sta (ZPPtrSKT),y Update Socket OUTFREE
|
||||||
|
|
||||||
|
ldy #S.SOCKET.SQ.OUTHEAD
|
||||||
|
lda (ZPPtrSKT),y
|
||||||
|
tax
|
||||||
|
clc
|
||||||
|
adc ZPDataInLen
|
||||||
|
sta (ZPPtrSKT),y
|
||||||
|
|
||||||
|
iny
|
||||||
|
lda (ZPPtrSKT),y
|
||||||
|
pha
|
||||||
adc ZPDataInLen+1
|
adc ZPDataInLen+1
|
||||||
|
and /K.TCP.WMASK
|
||||||
|
sta (ZPPtrSKT),y Update Socket new OUTHEAD
|
||||||
|
|
||||||
|
txa X,PHA=OUTHEAD
|
||||||
|
clc
|
||||||
|
adc ZPTmpPtr1
|
||||||
|
sta ZPTmpPtr2
|
||||||
|
pla
|
||||||
|
pha
|
||||||
|
adc ZPTmpPtr1+1 Ptr1=Current Base
|
||||||
|
sta ZPTmpPtr1+2 Ptr2=Current Base+OUTHEAD
|
||||||
|
|
||||||
|
stx ZPTmpPtr3
|
||||||
|
pla
|
||||||
|
clc
|
||||||
|
adc /65536-K.TCP.WSIZE
|
||||||
|
sta ZPTmpPtr3+1 Ptr3=!(K.TCP.WSIZE-OUTHEAD)
|
||||||
|
|
||||||
|
lda ZPDataInLen
|
||||||
|
eor #$ff
|
||||||
|
sta ZPDataInLen
|
||||||
|
|
||||||
|
lda ZPDataInLen+1
|
||||||
|
eor #$ff
|
||||||
|
sta ZPDataInLen+1 ZPDataInLen=!ZPDataInLen
|
||||||
|
|
||||||
|
ldy #0
|
||||||
|
|
||||||
|
.1 inc ZPTmpPtr3 Reached the TOP of buf ?
|
||||||
|
bne .2
|
||||||
|
inc ZPTmpPtr3+1
|
||||||
|
beq .5
|
||||||
|
|
||||||
|
.2 inc ZPDataInLen
|
||||||
|
bne .3
|
||||||
|
inc ZPDataInLen+1
|
||||||
|
beq .80
|
||||||
|
|
||||||
|
.3 lda (ZPDataInPtr),y
|
||||||
|
sta (ZPTmpPtr2)
|
||||||
|
iny
|
||||||
|
bne .4
|
||||||
|
|
||||||
|
inc ZPDataInPtr+1
|
||||||
|
|
||||||
|
.4 inc ZPTmpPtr2
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
inc ZPTmpPtr2+1
|
||||||
|
bra .1
|
||||||
|
|
||||||
|
.5 inc ZPDataInLen
|
||||||
|
bne .6
|
||||||
|
inc ZPDataInLen+1
|
||||||
|
beq .80
|
||||||
|
|
||||||
|
.6 lda (ZPDataInPtr),y
|
||||||
|
sta (ZPTmpPtr1)
|
||||||
|
iny
|
||||||
|
bne .7
|
||||||
|
|
||||||
|
inc ZPDataInPtr+1
|
||||||
|
|
||||||
|
.7 inc ZPTmpPtr1
|
||||||
|
bne .5
|
||||||
|
|
||||||
|
inc ZPTmpPtr1+1
|
||||||
|
bra .6
|
||||||
|
|
||||||
|
.80 clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
clc
|
.91 lda #MLI.ERR.VOLFULL
|
||||||
|
sec
|
||||||
.9 rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SKT.SEND.RAW ldy #S.SOCKET.RAW.PROTO
|
SKT.SEND.RAW ldy #S.SOCKET.RAW.PROTO
|
||||||
lda (ZPPtrSKT),y
|
lda (ZPPtrSKT),y
|
||||||
@ -208,7 +308,13 @@ SKT.SEND.RAW ldy #S.SOCKET.RAW.PROTO
|
|||||||
|
|
||||||
.9 sec
|
.9 sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*/--------------------------------------
|
||||||
|
* #SKT.RcvdA (DGRAM,RAW)
|
||||||
|
* ##In :
|
||||||
|
* A = hSocket
|
||||||
|
* ##Out :
|
||||||
|
* A = hFrame
|
||||||
|
*\--------------------------------------
|
||||||
SKT.RCVDA jsr SKT.GetA.I
|
SKT.RCVDA jsr SKT.GetA.I
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
@ -238,6 +344,14 @@ SKT.RCVDA jsr SKT.GetA.I
|
|||||||
|
|
||||||
.99 sec
|
.99 sec
|
||||||
.9 rts
|
.9 rts
|
||||||
|
*/--------------------------------------
|
||||||
|
* #SKT.Read (STREAM)
|
||||||
|
* ##In :
|
||||||
|
* A = hSocket
|
||||||
|
* ##Out :
|
||||||
|
* A = hFrame
|
||||||
|
*\--------------------------------------
|
||||||
|
SKT.Read
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SKT.CLOSEA cmp #K.SKTTABLE.SIZE
|
SKT.CLOSEA cmp #K.SKTTABLE.SIZE
|
||||||
bcs SKT.GetA.9
|
bcs SKT.GetA.9
|
||||||
|
@ -194,6 +194,20 @@ TCP.IN.JMP.SYNRCVD
|
|||||||
lda #S.SOCKET.STATUS.ESTBLSH
|
lda #S.SOCKET.STATUS.ESTBLSH
|
||||||
sta (ZPPtrSKT),y
|
sta (ZPPtrSKT),y
|
||||||
|
|
||||||
|
ldy #S.SOCKET.SQ.INFREE
|
||||||
|
lda #K.TCP.WSIZE
|
||||||
|
sta (ZPPtrSKT),y
|
||||||
|
iny
|
||||||
|
lda /K.TCP.WSIZE
|
||||||
|
sta (ZPPtrSKT),y
|
||||||
|
|
||||||
|
ldy #S.SOCKET.SQ.OUTFREE
|
||||||
|
lda #K.TCP.WSIZE
|
||||||
|
sta (ZPPtrSKT),y
|
||||||
|
iny
|
||||||
|
lda /K.TCP.WSIZE
|
||||||
|
sta (ZPPtrSKT),y
|
||||||
|
|
||||||
>PUSHW K.TCP.WSIZE
|
>PUSHW K.TCP.WSIZE
|
||||||
>PUSHBI 0
|
>PUSHBI 0
|
||||||
>SYSCALL GetMem
|
>SYSCALL GetMem
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
PR#3
|
PR#3
|
||||||
PREFIX /A2OSX.SRC
|
PREFIX /A2OSX.SRC
|
||||||
LOMEM $A00
|
LOMEM $900
|
||||||
INC 1
|
INC 1
|
||||||
AUTO 6
|
AUTO 6
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
@ -10,6 +10,7 @@ AUTO 6
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.INB /A2OSX.DEV/INC/MACROS.I
|
.INB /A2OSX.DEV/INC/MACROS.I
|
||||||
.INB /A2OSX.DEV/INC/A2OSX.I
|
.INB /A2OSX.DEV/INC/A2OSX.I
|
||||||
|
.INB /A2OSX.DEV/INC/MLI.ERR.I
|
||||||
.INB /A2OSX.DEV/INC/LIBTCPIP.I
|
.INB /A2OSX.DEV/INC/LIBTCPIP.I
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ZPFrameInPtr .EQ ZPLIB
|
ZPFrameInPtr .EQ ZPLIB
|
||||||
|
@ -448,7 +448,7 @@ Socket .DA #S.SOCKET.SOCK.DGRAM
|
|||||||
.DA UDP.PORT.DHCPC Socket.Src.Port
|
.DA UDP.PORT.DHCPC Socket.Src.Port
|
||||||
.HS FF.FF.FF.FF Socket.Dst.Addr
|
.HS FF.FF.FF.FF Socket.Dst.Addr
|
||||||
.DA UDP.PORT.DHCPS Socket.Dst.Port
|
.DA UDP.PORT.DHCPS Socket.Dst.Port
|
||||||
.BS 16
|
.BS S.SOCKET-16
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DHCP.DISC .HS 01010600 OP,HTYPE,HLEN,HOPS
|
DHCP.DISC .HS 01010600 OP,HTYPE,HLEN,HOPS
|
||||||
DHCP.DISC.XID .BS 4
|
DHCP.DISC.XID .BS 4
|
||||||
|
Loading…
x
Reference in New Issue
Block a user