2015-03-14 21:48:35 +00:00
|
|
|
|
PR#3
|
2015-06-03 18:30:57 +00:00
|
|
|
|
PREFIX /A2OSX.SRC
|
2015-03-14 21:48:35 +00:00
|
|
|
|
NEW
|
|
|
|
|
INC 1
|
|
|
|
|
AUTO 6
|
|
|
|
|
.LIST OFF
|
|
|
|
|
.OP 65C02
|
|
|
|
|
.OR $2000
|
2015-06-03 18:30:57 +00:00
|
|
|
|
.TF /A2OSX.BOOT/LIB/LIBTCPIP.O
|
2015-03-14 21:48:35 +00:00
|
|
|
|
*--------------------------------------
|
|
|
|
|
.INB INC/MACROS.I
|
|
|
|
|
.INB INC/A2OSX.I
|
|
|
|
|
.INB INC/LIBTCPIP.I
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
ZPFrameBase1 .EQ ZPLIB
|
|
|
|
|
ZPFrameLen1 .EQ ZPLIB+2
|
|
|
|
|
ZPFramePtr1 .EQ ZPLIB+4
|
2016-01-16 22:04:22 +00:00
|
|
|
|
ZPPtrIP .EQ ZPLIB+12
|
|
|
|
|
ZPPtrMAC .EQ ZPLIB+14
|
|
|
|
|
ZPPtrDNS .EQ ZPLIB+16
|
|
|
|
|
ZPPtrSKT .EQ ZPLIB+18
|
|
|
|
|
ZPTmpPtr1 .EQ ZPLIB+20
|
|
|
|
|
ZPTmpPtr2 .EQ ZPLIB+22
|
2016-03-13 22:09:00 +00:00
|
|
|
|
ZPTmpPtr3 .EQ ZPLIB+24
|
|
|
|
|
ZPDataPtr .EQ ZPLIB+26
|
|
|
|
|
ZPDataLen .EQ ZPLIB+28
|
2016-03-15 17:16:14 +00:00
|
|
|
|
ZPCachePtr .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 NEW.ICMP.FRAME
|
|
|
|
|
.DA NEW.TCP.FRAME
|
|
|
|
|
.DA NEW.UDP.FRAME
|
|
|
|
|
.DA NEW.IP.FRAME
|
|
|
|
|
.DA NEW.ARP.FRAME
|
|
|
|
|
.DA NEW.ETH.FRAME
|
|
|
|
|
|
|
|
|
|
.DA SEND.ICMP.FRAME
|
|
|
|
|
.DA SEND.TCP.FRAME
|
|
|
|
|
.DA SEND.UDP.FRAME
|
|
|
|
|
.DA SEND.IP.FRAME
|
2016-03-20 22:16:01 +00:00
|
|
|
|
.DA $ffff SEND.ARP.FRAME
|
|
|
|
|
.DA $ffff SEND.ETH.FRAME
|
2015-03-14 21:48:35 +00:00
|
|
|
|
|
|
|
|
|
.DA ARP.CLEAR
|
|
|
|
|
.DA ARP.QUERY
|
|
|
|
|
.DA ARP.ADD
|
|
|
|
|
.DA ARP.GETCACHE
|
|
|
|
|
|
|
|
|
|
.DA DNS.CLEAR
|
|
|
|
|
.DA DNS.QUERY
|
|
|
|
|
.DA DNS.ADD
|
|
|
|
|
.DA DNS.GETCACHE
|
|
|
|
|
|
2016-03-13 22:09:00 +00:00
|
|
|
|
.DA RCVD.FRAMEA
|
2016-03-20 22:16:01 +00:00
|
|
|
|
.DA PULSEA
|
2016-01-16 22:04:22 +00:00
|
|
|
|
|
|
|
|
|
.DA SKT.NEW
|
2016-03-13 22:09:00 +00:00
|
|
|
|
.DA $FFFF
|
|
|
|
|
.DA SKT.ACCEPTA
|
2016-01-16 22:04:22 +00:00
|
|
|
|
.DA SKT.SENDA
|
|
|
|
|
.DA SKT.SEND
|
|
|
|
|
.DA SKT.RCVDA
|
2016-03-13 22:09:00 +00:00
|
|
|
|
.DA $FFFF
|
|
|
|
|
.DA SKT.CLOSEA
|
2016-01-16 22:04:22 +00:00
|
|
|
|
.DA SKT.GETTABLE
|
2016-03-13 22:09:00 +00:00
|
|
|
|
.DA SKT.GETA
|
|
|
|
|
|
|
|
|
|
.DA HST.GETBYNAME
|
|
|
|
|
.DA HST.GETBYADDR
|
2015-03-14 21:48:35 +00:00
|
|
|
|
*--------------------------------------
|
|
|
|
|
L.IPCFG .DA IPCFG
|
2016-03-13 22:09:00 +00:00
|
|
|
|
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
|
2016-01-16 22:04:22 +00:00
|
|
|
|
L.SKT.TABLE .DA SKT.TABLE
|
2016-03-13 22:09:00 +00:00
|
|
|
|
L.TmpSocket .DA TmpSocket
|
|
|
|
|
L.TCP.MSG .DA TCP.MSG
|
2015-03-14 21:48:35 +00:00
|
|
|
|
.DA 0
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
LIB.LOAD lda bFirstLoad
|
2015-09-13 20:35:07 +00:00
|
|
|
|
bne .8
|
2015-03-14 21:48:35 +00:00
|
|
|
|
jsr ARP.CLEAR
|
|
|
|
|
jsr DNS.CLEAR
|
2016-03-13 22:09:00 +00:00
|
|
|
|
|
|
|
|
|
>LDYAI K.DYNPORT.START
|
2016-01-16 22:04:22 +00:00
|
|
|
|
>STYA DYNPORT.LAST
|
2016-03-13 22:09:00 +00:00
|
|
|
|
|
2015-03-14 21:48:35 +00:00
|
|
|
|
inc bFirstLoad
|
2016-03-13 22:09:00 +00:00
|
|
|
|
|
2015-03-14 21:48:35 +00:00
|
|
|
|
.8 clc
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
LIB.UNLOAD clc
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
* PULLW = PTR to S.IPCFG
|
|
|
|
|
*--------------------------------------
|
2016-01-16 22:04:22 +00:00
|
|
|
|
SET.IPCFG >PULLW ZPTmpPtr1
|
|
|
|
|
ldy #0
|
|
|
|
|
.1 lda (ZPTmpPtr1),y
|
2015-03-14 21:48:35 +00:00
|
|
|
|
sta IPCFG,y
|
2016-01-16 22:04:22 +00:00
|
|
|
|
iny
|
|
|
|
|
cpy #S.IPCFG
|
2015-03-14 21:48:35 +00:00
|
|
|
|
bne .1
|
2016-01-16 22:04:22 +00:00
|
|
|
|
|
2016-03-13 22:09:00 +00:00
|
|
|
|
ldx #5
|
|
|
|
|
.2 lda IPCFG+S.IPCFG.MAC,x
|
|
|
|
|
sta ARP.REQ.SRCMAC,x
|
|
|
|
|
sta ARP.REQ.SHA,x
|
|
|
|
|
sta ARP.REP.SRCMAC,x
|
|
|
|
|
sta ARP.REP.SHA,x
|
|
|
|
|
dex
|
|
|
|
|
bpl .2
|
|
|
|
|
|
|
|
|
|
ldx #3
|
|
|
|
|
.3 lda IPCFG+S.IPCFG.IP,x
|
|
|
|
|
sta ARP.REQ.SPA,x
|
|
|
|
|
sta ARP.REP.SPA,x
|
|
|
|
|
sta DNS.SOCKET.SA,x
|
|
|
|
|
dex
|
|
|
|
|
bpl .3
|
|
|
|
|
|
2016-01-16 22:04:22 +00:00
|
|
|
|
lda IPCFG+S.IPCFG.HDEV
|
|
|
|
|
|
2016-01-09 22:36:24 +00:00
|
|
|
|
>SYSCALL SYS.GetDevByIDA
|
|
|
|
|
>STYA NetDevJmp+1
|
2016-01-10 22:17:49 +00:00
|
|
|
|
|
|
|
|
|
ldx #DEVMGR.GETINFO
|
|
|
|
|
jsr NetDevJmp
|
|
|
|
|
|
|
|
|
|
>STYA ZPTmpPtr2
|
|
|
|
|
ldy #S.DEVINFO.FLAGS
|
|
|
|
|
lda (ZPTmpPtr2),y
|
|
|
|
|
sta DevFlags
|
2016-03-13 22:09:00 +00:00
|
|
|
|
and #S.DEVINFO.NET.FLAGS.ARPOFFLOAD
|
|
|
|
|
beq .4
|
2016-01-09 22:36:24 +00:00
|
|
|
|
|
|
|
|
|
>LDYA ZPTmpPtr1
|
2016-01-10 22:17:49 +00:00
|
|
|
|
ldx #DEVMGR.SETIPCFG
|
|
|
|
|
jsr NetDevJmp
|
|
|
|
|
|
2016-03-13 22:09:00 +00:00
|
|
|
|
.4 lda hDNSSocket1
|
|
|
|
|
beq .41
|
|
|
|
|
jsr SKT.CLOSEA
|
|
|
|
|
|
|
|
|
|
.41 lda hDNSSocket2
|
|
|
|
|
beq .42
|
|
|
|
|
jsr SKT.CLOSEA
|
|
|
|
|
|
|
|
|
|
.42 lda IPCFG+S.IPCFG.DNS1
|
|
|
|
|
beq .6
|
|
|
|
|
|
|
|
|
|
ldx #3
|
|
|
|
|
.5 lda IPCFG+S.IPCFG.DNS1,x
|
|
|
|
|
sta DNS.SOCKET.DA,x
|
|
|
|
|
dex
|
|
|
|
|
bpl .5
|
|
|
|
|
|
|
|
|
|
>PUSHW L.DNS.SOCKET
|
|
|
|
|
jsr SKT.NEW
|
|
|
|
|
bcs .9
|
|
|
|
|
|
|
|
|
|
stx hDNSSocket1
|
|
|
|
|
|
|
|
|
|
.6 lda IPCFG+S.IPCFG.DNS2
|
|
|
|
|
beq .8
|
|
|
|
|
|
|
|
|
|
ldx #3
|
|
|
|
|
.7 lda IPCFG+S.IPCFG.DNS2,x
|
|
|
|
|
sta DNS.SOCKET.DA,x
|
|
|
|
|
dex
|
|
|
|
|
bpl .7
|
|
|
|
|
|
|
|
|
|
>PUSHW L.DNS.SOCKET
|
|
|
|
|
jsr SKT.NEW
|
|
|
|
|
bcs .9
|
|
|
|
|
|
|
|
|
|
stx hDNSSocket2
|
|
|
|
|
|
|
|
|
|
.8 >LDYA ZPTmpPtr1
|
2015-03-14 21:48:35 +00:00
|
|
|
|
clc
|
2016-03-13 22:09:00 +00:00
|
|
|
|
.9 rts
|
2015-03-14 21:48:35 +00:00
|
|
|
|
*--------------------------------------
|
2016-01-16 22:04:22 +00:00
|
|
|
|
* grab a copy on the fly for lib function
|
|
|
|
|
* OUT :
|
|
|
|
|
* Y,A = PTR to S.IPCFG
|
2015-03-14 21:48:35 +00:00
|
|
|
|
*--------------------------------------
|
2016-01-16 22:04:22 +00:00
|
|
|
|
GET.IPCFG >LDYA L.IPCFG
|
2015-03-14 21:48:35 +00:00
|
|
|
|
clc
|
2016-01-16 22:04:22 +00:00
|
|
|
|
rts
|
2015-03-14 21:48:35 +00:00
|
|
|
|
*--------------------------------------
|
2016-03-20 22:16:01 +00:00
|
|
|
|
* Expire = every sec
|
|
|
|
|
* Retry = every 100 msec
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
PULSEA asl
|
|
|
|
|
bpl .1
|
|
|
|
|
jsr ARP.EXPIRE
|
|
|
|
|
* jsr DNS.EXPIRE
|
|
|
|
|
.1 jmp FRM.RETRY
|
|
|
|
|
*--------------------------------------
|
2016-01-16 22:04:22 +00:00
|
|
|
|
ToLowerCaseA cmp #'A'
|
|
|
|
|
bcc .1
|
|
|
|
|
cmp #'Z'+1
|
|
|
|
|
bcs .1
|
|
|
|
|
adc #$20
|
|
|
|
|
.1 rts
|
2015-03-14 21:48:35 +00:00
|
|
|
|
*--------------------------------------
|
2016-01-16 22:04:22 +00:00
|
|
|
|
GetDynPort inc DYNPORT.LAST
|
|
|
|
|
bne .1
|
|
|
|
|
inc DYNPORT.LAST+1
|
|
|
|
|
lda DYNPORT.LAST
|
|
|
|
|
sec
|
|
|
|
|
sbc #K.DYNPORT.END
|
|
|
|
|
lda DYNPORT.LAST+1
|
|
|
|
|
sbc /K.DYNPORT.END
|
|
|
|
|
bcs .1
|
2016-03-13 22:09:00 +00:00
|
|
|
|
>LDAXI K.DYNPORT.START
|
2016-01-16 22:04:22 +00:00
|
|
|
|
>STAX DYNPORT.LAST
|
|
|
|
|
rts CC
|
|
|
|
|
|
|
|
|
|
.1 >LDAX DYNPORT.LAST
|
2015-03-14 21:48:35 +00:00
|
|
|
|
clc
|
2016-01-16 22:04:22 +00:00
|
|
|
|
rts
|
2015-03-14 21:48:35 +00:00
|
|
|
|
*--------------------------------------
|
2016-01-16 22:04:22 +00:00
|
|
|
|
DecDataLen lda ZPDataLen
|
|
|
|
|
bne .1
|
|
|
|
|
lda ZPDataLen+1
|
|
|
|
|
beq .9
|
|
|
|
|
dec ZPDataLen+1
|
|
|
|
|
.1 dec ZPDataLen
|
|
|
|
|
lda #$FF Make NZ
|
|
|
|
|
.9 rts
|
2015-10-19 20:35:00 +00:00
|
|
|
|
*--------------------------------------
|
2016-01-16 22:04:22 +00:00
|
|
|
|
NetDevJmp jmp *
|
2015-03-14 21:48:35 +00:00
|
|
|
|
*--------------------------------------
|
2016-01-16 22:04:22 +00:00
|
|
|
|
.INB LIB/LIBTCPIP.S.FRM
|
2015-03-14 21:48:35 +00:00
|
|
|
|
.INB LIB/LIBTCPIP.S.ARP
|
2016-01-16 22:04:22 +00:00
|
|
|
|
.INB LIB/LIBTCPIP.S.IP
|
|
|
|
|
.INB LIB/LIBTCPIP.S.ICMP
|
|
|
|
|
.INB LIB/LIBTCPIP.S.UDP
|
|
|
|
|
.INB LIB/LIBTCPIP.S.TCP
|
2015-03-14 21:48:35 +00:00
|
|
|
|
.INB LIB/LIBTCPIP.S.DNS
|
2016-01-16 22:04:22 +00:00
|
|
|
|
.INB LIB/LIBTCPIP.S.SKT
|
2016-03-13 22:09:00 +00:00
|
|
|
|
.INB LIB/LIBTCPIP.S.HST
|
2016-01-09 22:36:24 +00:00
|
|
|
|
*--------------------------------------
|
2015-03-14 21:48:35 +00:00
|
|
|
|
CS.END
|
|
|
|
|
*--------------------------------------
|
2016-03-13 22:09:00 +00:00
|
|
|
|
IPCFG .BS S.IPCFG
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
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
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
TCP.MSG .DA S.TCP-2+4 +4 bytes for MSS option
|
|
|
|
|
.BS 12 ETH:MAC+MAC
|
|
|
|
|
.DA /S.ETH.ETHERTYPE.IP
|
|
|
|
|
.DA #S.ETH.ETHERTYPE.IP
|
|
|
|
|
|
|
|
|
|
.DA $0045 IP:
|
|
|
|
|
.BS 6 LEN+ID+Frag
|
|
|
|
|
.DA #K.IP.TTL
|
|
|
|
|
.DA #S.IP.PROTOCOL.TCP
|
|
|
|
|
.BS 2 Checksum
|
|
|
|
|
.BS 8 IP:DST,SRC
|
|
|
|
|
|
|
|
|
|
.BS 4 TCP:Ports
|
|
|
|
|
.BS 8 SEQ,ACK
|
|
|
|
|
.DA #$60 6 DWORD
|
|
|
|
|
.BS 1 Options
|
|
|
|
|
.DA /K.TCP.WSIZE
|
|
|
|
|
.DA #K.TCP.WSIZE
|
|
|
|
|
.BS 4 CHK,URG
|
|
|
|
|
.HS 0204 MSS option
|
|
|
|
|
.DA /K.TCP.MSS
|
|
|
|
|
.DA #K.TCP.MSS
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
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
|
|
|
|
|
.BS 16
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
DNS.MSG.LEN .BS 2
|
2016-03-15 17:16:14 +00:00
|
|
|
|
DNS.MSG
|
|
|
|
|
DNS.MSG.ID .BS 2
|
2016-03-13 22:09:00 +00:00
|
|
|
|
.DA /S.DNS.F.RD Flags=query
|
2016-03-20 22:16:01 +00:00
|
|
|
|
.DA #S.DNS.F.RD
|
2016-03-13 22:09:00 +00:00
|
|
|
|
.DA $100 QDCOUNT
|
|
|
|
|
.BS 6 ANCOUNT,NSCOUNT,ARCOUNT
|
2016-03-15 17:16:14 +00:00
|
|
|
|
DNS.MSG.NAME .BS K.DNS.MAXLEN+6
|
2016-03-13 22:09:00 +00:00
|
|
|
|
*--------------------------------------
|
|
|
|
|
ARP.CACHE .BS K.ARPCACHE.SIZE*S.ARPCACHE
|
|
|
|
|
DNS.CACHE .BS K.DNSCACHE.SIZE*S.DNSCACHE
|
|
|
|
|
SKT.TABLE .BS K.SKTTABLE.SIZE*S.SOCKET
|
2016-03-20 22:16:01 +00:00
|
|
|
|
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
|
2016-03-13 22:09:00 +00:00
|
|
|
|
*--------------------------------------
|
2015-03-14 21:48:35 +00:00
|
|
|
|
bFirstLoad .DA #0
|
2016-01-10 22:17:49 +00:00
|
|
|
|
DevFlags .BS 1
|
2016-03-15 17:16:14 +00:00
|
|
|
|
DYNPORT.LAST .BS 2
|
2016-03-13 22:09:00 +00:00
|
|
|
|
hDNSSocket1 .BS 1
|
|
|
|
|
hDNSSocket2 .BS 1
|
2016-03-15 17:16:14 +00:00
|
|
|
|
DNS.HostNameLen .BS 1
|
|
|
|
|
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
|
2016-03-13 22:09:00 +00:00
|
|
|
|
TmpDWord .BS 4
|
|
|
|
|
TmpSocket .BS S.SOCKET
|
|
|
|
|
hFrame1 .BS 1
|
2016-01-16 22:04:22 +00:00
|
|
|
|
hSocket .BS 1
|
2016-01-09 22:36:24 +00:00
|
|
|
|
TmpOffset .BS 2
|
2016-03-13 22:09:00 +00:00
|
|
|
|
HST.DecStr .BS 4
|
|
|
|
|
HST.IP .BS 5
|
2016-03-15 17:16:14 +00:00
|
|
|
|
IP.CHECKSUM .BS 4
|
2015-03-14 21:48:35 +00:00
|
|
|
|
*--------------------------------------
|
|
|
|
|
MAN
|
|
|
|
|
SAVE LIB/LIBTCPIP.S
|
|
|
|
|
ASM
|