A2osX/LIB/LIBTCPIP.S.txt

307 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
.TF /A2OSX.BUILD/LIB/LIBTCPIP.O
2015-03-14 21:48:35 +00:00
*--------------------------------------
.INB /A2OSX.BUILD/INC/MACROS.I
.INB /A2OSX.BUILD/INC/A2OSX.I
2017-12-22 21:24:30 +00:00
.INB /A2OSX.BUILD/INC/MLI.ERR.I
.INB /A2OSX.BUILD/INC/NIC.I
.INB /A2OSX.BUILD/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
.DA PULSEA
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
.DA SKT.CLOSEA
.DA SKT.GETTABLE
.DA SKT.GETA
.DA SKT.AcceptA
.DA SKT.MkNodA
.DA SKT.Write
.DA SKT.Read
.DA SKT.ReadA
.DA SKT.PutC
.DA SKT.PutS
.DA SKT.GetC.A
.DA SKT.GetS
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
L.HST.SSScanF .DA HST.SSScanF
L.TmpByte .DA TmpByte
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
sta NODE.SSOCK+S.NODE.HANDLER
2015-03-14 21:48:35 +00:00
jsr ARP.CLEAR
jsr DNS.CLEAR
>LDYAI K.SKTTABLE.SIZE*S.SOCKET
>SYSCALL GetMem0.YA
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
bne .8
lda hSocketTable
2017-02-13 07:26:18 +00:00
beq .8
>SYSCALL FreeMem.A
2017-02-13 07:26:18 +00:00
.8 clc
2015-03-14 21:48:35 +00:00
rts
*--------------------------------------
POLL >PUSHB IPCFG+S.IPCFG.HDEV
>PUSHBI DEVMGR.READBLOCK
>PUSHW 0
>SYSCALL IOCTL
2017-01-29 21:47:19 +00:00
bcs .99 No Frame
stx hFrameIn
>STYA ZPFrameInPtr
lda (ZPFrameInPtr) Get Frame Len
sta ZPFrameInLen
ldy #1
lda (ZPFrameInPtr),y
sta ZPFrameInLen+1
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
>SYSCALL FreeMem.A
2017-01-29 21:47:19 +00:00
.99 rts
*--------------------------------------
* Expire = every sec
* Retry = every 100 msec
*--------------------------------------
PULSEA 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
>LDAXI 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
*--------------------------------------
ARP.REQ .DA S.ARP-2 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
*--------------------------------------
ARP.REP .DA S.ARP-2 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
*--------------------------------------
RefCount .DA #0
2017-02-10 07:29:58 +00:00
hSocketTable .BS 1
2016-01-10 22:17:49 +00:00
DevFlags .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
HST.SSScanF .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
NODE.SSOCK .BS 1 S.NODE.HANDLER
.DA #S.NODE.T.SSOCK
.BS 1 S.NODE.SSOCK.HSKT
.DA #0 S.NODE.SSOCK.OPEN
.DA #0 S.NODE.SSOCK.CLOSE
.DA #0
.DA #0
.DA #0 S.NODE.SSOCK.STATUS
2015-03-14 21:48:35 +00:00
*--------------------------------------
MAN
SAVE /A2OSX.SRC/LIB/LIBTCPIP.S
2015-03-14 21:48:35 +00:00
ASM