A2osX/LIB/LIBTCPIP.S.txt

313 lines
6.9 KiB
Plaintext
Raw Normal View History

2017-12-22 21:24:30 +00:00
NEW
PREFIX /A2OSX.BUILD
2017-12-22 21:24:30 +00:00
AUTO 4,1
2015-03-14 21:48:35 +00:00
.LIST OFF
.OP 65C02
.OR $2000
2018-07-23 06:28:47 +00:00
.TF LIB/LIBTCPIP.O
2015-03-14 21:48:35 +00:00
*--------------------------------------
2018-07-23 06:28:47 +00:00
.INB INC/MACROS.I
.INB INC/A2OSX.I
.INB INC/MLI.ERR.I
.INB INC/NIC.I
.INB INC/ETH.I
.INB INC/LIBTCPIP.I
2015-03-14 21:48:35 +00:00
*--------------------------------------
ZPFrameInPtr .EQ ZPLIB
ZPFrameInLen .EQ ZPLIB+2
ZPDataInPtr .EQ ZPLIB+4
ZPDataInLen .EQ ZPLIB+6
ZPFrameOutPtr .EQ ZPLIB+8
ZPFrameOutLen .EQ ZPLIB+10
ZPDataOutPtr .EQ ZPLIB+12
ZPDataOutLen .EQ ZPLIB+14
ZPPtrIP .EQ ZPLIB+16
ZPPtrMAC .EQ ZPLIB+18
ZPPtrDNS .EQ ZPLIB+20
ZPPtrSKT .EQ ZPLIB+22
ZPCachePtr .EQ ZPLIB+24
ZPTmpPtr1 .EQ ZPLIB+26
ZPTmpPtr2 .EQ ZPLIB+28
ZPTmpPtr3 .EQ ZPLIB+30
2015-03-14 21:48:35 +00:00
*--------------------------------------
2015-06-03 18:30:57 +00:00
* File Header (16 Bytes)
2015-03-14 21:48:35 +00:00
*--------------------------------------
CS.START cld
jmp (.1,x)
2015-06-03 18:30:57 +00:00
.DA #$61 6502,Level 1 (65c02)
.DA #1 BIN Layout Version 1
.DA 0
.DA CS.END-CS.START
.DA 0
.DA 0
.DA 0
*--------------------------------------
* Relocation Table
*--------------------------------------
2015-03-14 21:48:35 +00:00
.1 .DA LIB.LOAD
.DA LIB.UNLOAD
.DA SET.IPCFG
.DA GET.IPCFG
.DA POLL
2018-07-23 15:28:42 +00:00
.DA PULSE
2015-03-14 21:48:35 +00:00
.DA ARP.CLEAR
.DA ARP.QUERY
.DA ARP.ADD
.DA ARP.GetCACHE
2015-03-14 21:48:35 +00:00
.DA DNS.CLEAR
.DA DNS.QUERY
.DA DNS.ADD
.DA DNS.GetCACHE
2015-03-14 21:48:35 +00:00
.DA HST.GETBYNAME
.DA HST.GETBYADDR
.DA SKT.New
2018-07-23 15:28:42 +00:00
.DA SKT.Close
.DA SKT.GetTable
.DA SKT.Get
2018-07-23 15:28:42 +00:00
.DA SKT.Accept
.DA SKT.MkNod
.DA SKT.Write
.DA SKT.Read
2018-07-23 15:28:42 +00:00
.DA SKT.ReadFrame
2015-03-14 21:48:35 +00:00
*--------------------------------------
L.IPCFG .DA IPCFG
L.ARP.REQ .DA ARP.REQ
L.ARP.REP .DA ARP.REP
L.DNS.SOCKET .DA DNS.SOCKET
L.DNS.MSG .DA DNS.MSG
2015-03-14 21:48:35 +00:00
L.ARP.CACHE .DA ARP.CACHE
L.DNS.CACHE .DA DNS.CACHE
L.SKT.Template .DA SKT.Template
2018-05-25 19:03:31 +00:00
L.HST.SScanF .DA HST.SScanF
L.TmpByte .DA TmpByte
2018-07-23 06:28:47 +00:00
L.IOCTL .DA IOCTL
L.DCB.NIC .DA DCB.NIC
L.TCP.IN.JMP .DA TCP.IN.JMP.CLOSED
.DA TCP.IN.JMP.LISTEN
.DA TCP.IN.JMP.SYNSENT
.DA TCP.IN.JMP.SYNRCVD
.DA TCP.IN.JMP.ESTBLSH
.DA TCP.IN.JMP.CLWAIT
.DA TCP.IN.JMP.LASTACK
.DA TCP.IN.JMP.FINWT1
.DA TCP.IN.JMP.FINWT2
.DA TCP.IN.JMP.CLOSING
.DA TCP.IN.JMP.TIMEWT
2015-03-14 21:48:35 +00:00
.DA 0
*--------------------------------------
LIB.LOAD ldx RefCount
bne .8
2018-07-10 15:33:13 +00:00
sta FD.SSOCK+S.FD.HANDLER
2015-03-14 21:48:35 +00:00
jsr ARP.CLEAR
jsr DNS.CLEAR
>LDYAI K.SKTTABLE.SIZE*S.SOCKET
2018-07-23 06:28:47 +00:00
>SYSCALL getmem0
2017-02-10 07:29:58 +00:00
bcs .9
stx hSocketTable
.8 inc RefCount
clc
2017-02-10 07:29:58 +00:00
.9 rts
2015-03-14 21:48:35 +00:00
*--------------------------------------
LIB.UNLOAD dec RefCount
2018-07-23 06:28:47 +00:00
bne LIB.UNLOAD.8
lda hSocketTable
2018-07-23 06:28:47 +00:00
beq LIB.UNLOAD.8
2017-02-13 07:26:18 +00:00
2018-07-18 15:30:42 +00:00
>SYSCALL FreeMem
2017-02-13 07:26:18 +00:00
2018-07-23 06:28:47 +00:00
LIB.UNLOAD.8 clc
2015-03-14 21:48:35 +00:00
rts
*--------------------------------------
2018-07-23 06:28:47 +00:00
POLL >PUSHW L.IOCTL
>PUSHBI IOCTL.READ
lda IPCFG+S.IPCFG.HDEV
>SYSCALL IOCTL
2017-01-29 21:47:19 +00:00
bcs .99 No Frame
2018-07-23 06:28:47 +00:00
sta hFrameIn
2018-07-23 06:28:47 +00:00
ldx #S.IOCTL.BUFPTR
.10 lda IOCTL,x Get Frame Ptr & Len
sta ZPFrameInPtr,x
inx
cpx S.IOCTL.BUFPTR+4
bne .10
2017-01-29 21:47:19 +00:00
ldy #S.ETH.ETHERTYPE
lda (ZPFrameInPtr),y
2017-01-29 21:47:19 +00:00
tax
iny
lda (ZPFrameInPtr),y
2017-01-29 21:47:19 +00:00
cmp #S.ETH.ETHERTYPE.ARP
bne .1
cpx /S.ETH.ETHERTYPE.ARP
bne .1
jmp ARP.IN
.1 cmp #S.ETH.ETHERTYPE.IP
bne .9
cpx /S.ETH.ETHERTYPE.IP
bne .9
2017-01-29 21:47:19 +00:00
jmp IP.IN
.9 lda hFrameIn
2018-07-23 06:28:47 +00:00
beq LIB.UNLOAD.8
2018-07-18 15:30:42 +00:00
>SYSCALL FreeMem
2018-07-23 06:28:47 +00:00
2017-01-29 21:47:19 +00:00
.99 rts
*--------------------------------------
* Expire = every sec
* Retry = every 100 msec
*--------------------------------------
2018-07-23 15:28:42 +00:00
PULSE and #S.EVT.F.T1SEC
beq .1
jsr ARP.EXPIRE
jsr DNS.EXPIRE
2017-01-29 21:47:19 +00:00
.1 jsr DNS.POLL
jmp FRM.RETRY
*--------------------------------------
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
2018-07-12 15:20:39 +00:00
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
2015-03-14 21:48:35 +00:00
clc
rts
2015-03-14 21:48:35 +00:00
*--------------------------------------
.INB /A2OSX.SRC/LIB/LIBTCPIP.S.ARP
.INB /A2OSX.SRC/LIB/LIBTCPIP.S.CFG
.INB /A2OSX.SRC/LIB/LIBTCPIP.S.DNS
.INB /A2OSX.SRC/LIB/LIBTCPIP.S.FRM
.INB /A2OSX.SRC/LIB/LIBTCPIP.S.HST
.INB /A2OSX.SRC/LIB/LIBTCPIP.S.ICMP
.INB /A2OSX.SRC/LIB/LIBTCPIP.S.IP
.INB /A2OSX.SRC/LIB/LIBTCPIP.S.SKT
.INB /A2OSX.SRC/LIB/LIBTCPIP.S.TCP
.INB /A2OSX.SRC/LIB/LIBTCPIP.S.UDP
*--------------------------------------
2015-03-14 21:48:35 +00:00
CS.END
*--------------------------------------
2018-07-23 06:28:47 +00:00
ARP.REQ .DA S.ARP Frame size
ARP.REQ.DSTMAC .HS FFFFFFFFFFFF
ARP.REQ.SRCMAC .BS 6
ARP.REQ.ETYPE .DA /S.ETH.ETHERTYPE.ARP
.DA #S.ETH.ETHERTYPE.ARP
.HS 0001.0800.06.04
ARP.REQ.OP .DA /S.ARP.OPERATION.REQ
.DA #S.ARP.OPERATION.REQ
ARP.REQ.SHA .BS 6
ARP.REQ.SPA .BS 4
ARP.REQ.THA .BS 6
ARP.REQ.TPA .BS 4
*--------------------------------------
2018-07-23 06:28:47 +00:00
ARP.REP .DA S.ARP Frame size
ARP.REP.DSTMAC .BS 6
ARP.REP.SRCMAC .BS 6
ARP.REP.ETYPE .DA /S.ETH.ETHERTYPE.ARP
.DA #S.ETH.ETHERTYPE.ARP
.HS 0001.0800.06.04
ARP.REP.OP .DA /S.ARP.OPERATION.REP
.DA #S.ARP.OPERATION.REP
ARP.REP.SHA .BS 6
ARP.REP.SPA .BS 4
ARP.REP.THA .BS 6
ARP.REP.TPA .BS 4
*--------------------------------------
DNS.SOCKET .DA #S.SOCKET.SOCK.DGRAM
.BS 3
DNS.SOCKET.SA .BS 4
DNS.SOCKET.SP .DA 0 Dynamic
DNS.SOCKET.DA .BS 4
DNS.SOCKET.DP .DA UDP.PORT.DNS
*--------------------------------------
DNS.MSG.LEN .BS 2
2016-03-15 17:16:14 +00:00
DNS.MSG
DNS.MSG.ID .BS 2
.DA /S.DNS.F.RD Flags=query
.DA #S.DNS.F.RD
.DA $100 QDCOUNT
.BS 6 ANCOUNT,NSCOUNT,ARCOUNT
2016-03-15 17:16:14 +00:00
DNS.MSG.NAME .BS K.DNS.MAXLEN+6
*--------------------------------------
IPCFG .BS S.IPCFG
ARP.CACHE .BS K.ARPCACHE.SIZE*S.ARPCACHE
DNS.CACHE .BS K.DNSCACHE.SIZE*S.DNSCACHE
FRM.QUEUE.Tail .BS 1
FRM.QUEUE.Head .BS 1
FRM.QUEUE.hMem .BS K.FRMQUEUE.SIZE
FRM.QUEUE.State .BS K.FRMQUEUE.SIZE
FRM.QUEUE.Retry .BS K.FRMQUEUE.SIZE
2018-07-23 15:28:42 +00:00
FRM.QUEUE.LenL .BS K.FRMQUEUE.SIZE
FRM.QUEUE.LenH .BS K.FRMQUEUE.SIZE
*--------------------------------------
RefCount .DA #0
2017-02-10 07:29:58 +00:00
hSocketTable .BS 1
2017-02-13 07:26:18 +00:00
DYNPORT.LAST .DA K.DYNPORT.START
hDNSSocket1 .BS 1
hDNSSocket2 .BS 1
2016-03-15 17:16:14 +00:00
DNS.HostName .BS K.DNS.MAXLEN+1
DNS.TmpCache .BS S.DNSCACHE
2016-03-16 07:19:54 +00:00
ARP.TmpCache .BS S.ARP
SKT.Template .BS S.SOCKET
SKT.TCBCache .BS S.TCB
TmpByte .BS 1
TmpDWord .BS 4
TmpOffset .BS 2
2017-01-29 21:47:19 +00:00
hFrameIn .BS 1
hFrameOut .BS 1
bTextMode .BS 1
2018-05-25 19:03:31 +00:00
HST.SScanF .AZ "%d.%d.%d.%d"
2017-02-13 07:26:18 +00:00
IP.ID .BS 2
2016-03-15 17:16:14 +00:00
IP.CHECKSUM .BS 4
2018-07-10 15:33:13 +00:00
FD.SSOCK .BS 1 S.FD.HANDLER
.DA #S.FD.T.SSOCK
.BS 1 S.FD.SSOCK.HSKT
.DA #0 S.FD.SSOCK.OPEN
.DA #0 S.FD.SSOCK.CLOSE
.DA #0
.DA #0
2018-07-10 15:33:13 +00:00
.DA #0 S.FD.SSOCK.STATUS
2018-07-23 06:28:47 +00:00
IOCTL .BS S.IOCTL
DCB.NIC .BS S.DCB.NIC
2015-03-14 21:48:35 +00:00
*--------------------------------------
MAN
SAVE /A2OSX.SRC/LIB/LIBTCPIP.S
2015-03-14 21:48:35 +00:00
ASM