PR#3
PREFIX /A2OSX.SRC
NEW
INC 1
AUTO 6
				.LIST OFF	
				.OP	65C02
*--------------------------------------
K.ARPCACHE.SIZE .EQ 10
K.DNSCACHE.SIZE .EQ 10
K.SKTTABLE.SIZE	.EQ 64
K.FRMQUEUE.SIZE	.EQ 16
K.FRMSEND.RETRY	.EQ 10
K.ETH.FRAME.LEN	.EQ 1514
K.ARP.TTL		.EQ 600
K.ARP.PENDING.TTL .EQ 10
K.DNS.PENDING.TTL .EQ 10
K.IP.TTL		.EQ 64
K.DNS.MAXLEN	.EQ 64
K.DYNPORT.START	.EQ 49152
K.DYNPORT.END	.EQ 65535
K.TCP.MSS		.EQ K.ETH.FRAME.LEN-20-20-14
K.TCP.WSIZE		.EQ K.TCP.MSS
*--------------------------------------
LIBTCPIP.SET.IPCFG		.EQ 4
LIBTCPIP.GET.IPCFG		.EQ 6

LIBTCPIP.NEW.ICMP.FRAME	.EQ 8
*LIBTCPIP.NEW.TCP.FRAME	.EQ 10
*LIBTCPIP.NEW.UDP.FRAME	.EQ 12
*LIBTCPIP.NEW.IP.FRAME	.EQ 14
*LIBTCPIP.NEW.ARP.FRAME	.EQ 16
*LIBTCPIP.NEW.ETH.FRAME	.EQ 18

LIBTCPIP.SEND.ICMP.FRAME	.EQ 20
*LIBTCPIP.SEND.TCP.FRAME	.EQ 22
*LIBTCPIP.SEND.UDP.FRAME	.EQ 24
*LIBTCPIP.SEND.IP.FRAME	.EQ 26
*LIBTCPIP.SEND.ARP.FRAME	.EQ 28
*LIBTCPIP.SEND.ETH.FRAME	.EQ 30

LIBTCPIP.ARP.CLEAR		.EQ 32
LIBTCPIP.ARP.QUERY		.EQ 34
LIBTCPIP.ARP.ADD		.EQ 36
LIBTCPIP.ARP.GETCACHE	.EQ 38

LIBTCPIP.DNS.CLEAR		.EQ 40
LIBTCPIP.DNS.QUERY		.EQ 42
LIBTCPIP.DNS.ADD		.EQ 44
LIBTCPIP.DNS.GETCACHE	.EQ 46

LIBTCPIP.RCVD.FRAMEA	.EQ 48
LIBTCPIP.PULSEA			.EQ 50

LIBTCPIP.SKT.NEW		.EQ 52
*LIBTCPIP.SKT.LISTEN		.EQ 54 
LIBTCPIP.SKT.ACCEPTA	.EQ 56
LIBTCPIP.SKT.SENDA		.EQ 58
LIBTCPIP.SKT.SEND		.EQ 60
LIBTCPIP.SKT.RCVDA		.EQ 62	
*LIBTCPIP.SKT.RCVD			.EQ 64
LIBTCPIP.SKT.CLOSEA		.EQ 66
LIBTCPIP.SKT.GETTABLE	.EQ 68	
LIBTCPIP.SKT.GETA		.EQ 70

LIBTCPIP.HST.GETBYNAME	.EQ 72
LIBTCPIP.HST.GETBYADDR	.EQ 74
*--------------------------------------
ERR.SKT.OOS			.EQ $BF
ERR.SKT.BUSY		.EQ $BE
ERR.SKT.BAD			.EQ $BD

ERR.DNS.PENDING		.EQ $B9
ERR.DNS.ERROR		.EQ $B8

ERR.ARP				.EQ $B7

ERR.ARP.PENDING		.EQ $B5
ERR.ARP.ERROR		.EQ $B4

ERR.DEV				.EQ $B3

ERR.DEV.NOBUFFER	.EQ $B1
ERR.DEV.NOFRAME		.EQ $B0
*--------------------------------------
TCP.PORT.TELNET		.EQ 23
UDP.PORT.DNS		.EQ 53
UDP.PORT.DHCPC		.EQ 68
UDP.PORT.DHCPS		.EQ 67
UDP.PORT.PMAP		.EQ 111
*--------------------------------------
S.IPCFG.STATUS		.EQ 0
S.IPCFG.STATUS.OFF		.EQ %00000000	TCPIP Unconfigured
S.IPCFG.STATUS.SDISC	.EQ %00000001	DISCOVERY Sent
S.IPCFG.STATUS.ROFFER	.EQ %00000010	OFFER Received
S.IPCFG.STATUS.SREQ		.EQ %00000100	REQUEST Sent
S.IPCFG.STATUS.RACK		.EQ %00001000	ACK Received
S.IPCFG.STATUS.OK		.EQ %10000000	Fully configured (static or DHCP)
S.IPCFG.HDEV		.EQ 1
S.IPCFG.MAC			.EQ 2
S.IPCFG.DHCPSRVR	.EQ 8
S.IPCFG.IP			.EQ 12
S.IPCFG.MASK		.EQ 16
S.IPCFG.GW			.EQ 20
S.IPCFG.DNS1		.EQ 24
S.IPCFG.DNS2		.EQ 28
S.IPCFG.HOSTNAME	.EQ 32				1+15 char PSTR
S.IPCFG.DOMAIN		.EQ 48				1+35 char PSTR
*
S.IPCFG				.EQ 128
*--------------------------------------
S.ARPCACHE.STATUS	.EQ 0
S.ARPCACHE.STATUS.PENDING	.EQ 1
S.ARPCACHE.STATUS.STATIC	.EQ 2
S.ARPCACHE.STATUS.RESOLVED	.EQ 128
S.ARPCACHE.TTL		.EQ 2
S.ARPCACHE.IP		.EQ 6
S.ARPCACHE.MAC		.EQ 10
*
S.ARPCACHE			.EQ 16
*--------------------------------------
S.DNSCACHE.STATUS	.EQ 0
S.DNSCACHE.STATUS.PENDING	.EQ 1
S.DNSCACHE.STATUS.STATIC	.EQ 2
S.DNSCACHE.STATUS.RESOLVED	.EQ 128
S.DNSCACHE.hNAME	.EQ 1
S.DNSCACHE.ID		.EQ 2				Store Message.Id in cache (pending req.)
S.DNSCACHE.TTL		.EQ 4
S.DNSCACHE.IP		.EQ 8
*
S.DNSCACHE			.EQ 12
*--------------------------------------
S.SOCKET.SOCK		.EQ 0
S.SOCKET.SOCK.DGRAM		.EQ 1
S.SOCKET.SOCK.STREAM	.EQ	2

S.SOCKET.SO			.EQ 1
S.SOCKET.SO.DEBUG		.EQ $01
S.SOCKET.SO.ACCEPTCONN	.EQ $02
S.SOCKET.SO.REUSEADDR	.EQ $04
S.SOCKET.SO.KEEPALIVE	.EQ $08
S.SOCKET.SO.DONTROUTE	.EQ $10
S.SOCKET.SO.BROADCAST	.EQ $20
S.SOCKET.SO.USELOOPBACK	.EQ $40
S.SOCKET.SO.LINGER		.EQ $80

S.SOCKET.STATUS		.EQ 2
S.SOCKET.STATUS.CLOSED	.EQ 0
S.SOCKET.STATUS.LISTEN	.EQ 1
S.SOCKET.STATUS.SYNSENT	.EQ 2
S.SOCKET.STATUS.SYNRCVD	.EQ 3
S.SOCKET.STATUS.ESTBLSH	.EQ 4
S.SOCKET.STATUS.CLWAIT	.EQ 5
S.SOCKET.STATUS.LASTACK	.EQ 6
S.SOCKET.STATUS.FINWT1	.EQ 7
S.SOCKET.STATUS.FINWT2	.EQ 8
S.SOCKET.STATUS.CLOSING	.EQ 9
S.SOCKET.STATUS.TIMEWT	.EQ 10

*S.SOCKET.PARENT		.EQ 3
S.SOCKET.SRC.ADDR	.EQ 4
S.SOCKET.SRC.PORT	.EQ 8
S.SOCKET.DST.ADDR	.EQ 10
S.SOCKET.DST.PORT	.EQ 14
* Listen type Queue
S.SOCKET.LQ.HEAD	.EQ 16
S.SOCKET.LQ.TAIL	.EQ 17
S.SOCKET.LQ			.EQ 18
S.SOCKET.LQ.MAX		.EQ 14				14 hSocket
* Datagram type Queue
S.SOCKET.DQ.HEAD	.EQ 16
S.SOCKET.DQ.TAIL	.EQ 17
S.SOCKET.DQ			.EQ 18
S.SOCKET.DQ.MAX		.EQ 14				14 hMem (frames)
* Stream type Queue
S.SOCKET.SQ.hInMem	.EQ 16
S.SOCKET.SQ.hOutMem	.EQ 17
S.SOCKET.SQ.SIZE	.EQ 18
S.SOCKET.SQ.HEAD	.EQ 20
S.SOCKET.SQ.TAIL	.EQ 22
S.SOCKET.SQ.SEQNUM	.EQ 24
S.SOCKET.SQ.ACKNUM	.EQ 28
*
S.SOCKET			.EQ 32
*--------------------------------------
S.ETH.FRAMELEN		.EQ 0
S.ETH.DSTMAC		.EQ 2
S.ETH.SRCMAC		.EQ 8
S.ETH.ETHERTYPE		.EQ 14
S.ETH.ETHERTYPE.IP	.EQ $800
S.ETH.ETHERTYPE.ARP	.EQ $806
*
S.ETH				.EQ 2+6+6+2
*--------------------------------------
S.ARP.HTYPE			.EQ	S.ETH+0			$0001
S.ARP.PTYPE			.EQ	S.ETH+2			$0800
S.ARP.HLEN			.EQ	S.ETH+4			$06
S.ARP.PLEN			.EQ	S.ETH+5			$04
S.ARP.OPERATION		.EQ	S.ETH+6			REQ=$0001,REPLY=$0002
S.ARP.OPERATION.REQ	.EQ 1
S.ARP.OPERATION.REP	.EQ 2
S.ARP.SHA			.EQ S.ETH+8			Sender MAC	
S.ARP.SPA			.EQ S.ETH+14		Sender IP	
S.ARP.THA			.EQ S.ETH+18		Target MAC	
S.ARP.TPA			.EQ S.ETH+24		Target IP	
*
S.ARP				.EQ S.ETH+28
*--------------------------------------
S.IP.V.IHL.DSCP.ECN	.EQ S.ETH+0			$0045, IPV4,HDR=5DWORDs
S.IP.TOTAL.LENGTH	.EQ	S.ETH+2
S.IP.IDENTIFICATION	.EQ	S.ETH+4			$0000
S.IP.FRAGMENT.FLAGS	.EQ	S.ETH+6
S.IP.TTL			.EQ	S.ETH+8
S.IP.PROTOCOL		.EQ	S.ETH+9
S.IP.PROTOCOL.ICMP	.EQ	1
S.IP.PROTOCOL.TCP	.EQ	6
S.IP.PROTOCOL.UDP	.EQ	17
S.IP.HDR.CHECKSUM	.EQ	S.ETH+10
S.IP.SRC			.EQ S.ETH+12
S.IP.DST			.EQ S.ETH+16
*
S.IP				.EQ S.ETH+20
*--------------------------------------
S.ICMP.TYPE			.EQ S.IP+0
S.ICMP.TYPE.ECHOREP	.EQ 0
S.ICMP.TYPE.UNREACH	.EQ 3
S.ICMP.TYPE.ECHOREQ	.EQ 8
S.ICMP.CODE			.EQ S.IP+1
S.ICMP.CHECKSUM		.EQ S.IP+2
S.ICMP.IDENTIFIER	.EQ S.IP+4
S.ICMP.SEQUENCE		.EQ S.IP+6
*
S.ICMP				.EQ S.IP+8
*--------------------------------------
S.UDP.SRCPORT		.EQ S.IP+0
S.UDP.DSTPORT		.EQ S.IP+2
S.UDP.LENGTH		.EQ S.IP+4
S.UDP.CHECKSUM		.EQ S.IP+6			$0000 = DISABLE
*
S.UDP				.EQ S.IP+8
*--------------------------------------
S.TCP.SRCPORT		.EQ S.IP+0
S.TCP.DSTPORT		.EQ S.IP+2
S.TCP.SEQ.NUMBER	.EQ S.IP+4
S.TCP.ACK.NUMBER	.EQ S.IP+8
S.TCP.DATAOFFSET	.EQ S.IP+12
S.TCP.DATAOFFSET20	.EQ $50
S.TCP.OPTIONS		.EQ S.IP+13
S.TCP.OPTIONS.URG	.EQ %00100000
S.TCP.OPTIONS.ACK	.EQ %00010000
S.TCP.OPTIONS.PSH	.EQ %00001000
S.TCP.OPTIONS.RST	.EQ %00000100
S.TCP.OPTIONS.SYN	.EQ %00000010
S.TCP.OPTIONS.FIN	.EQ %00000001
S.TCP.WINDOW		.EQ S.IP+14
S.TCP.CHECKSUM		.EQ S.IP+16
S.TCP.URGPTR		.EQ S.IP+18
*
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.F				.EQ S.UDP+2
S.DNS.F.QR				.EQ %10000000.00000000
S.DNS.F.OPCODE.I		.EQ %01000000.00000000
S.DNS.F.OPCODE.S		.EQ %00100000.00000000
S.DNS.F.AA				.EQ %00000100.00000000
S.DNS.F.TC				.EQ %00000010.00000000
S.DNS.F.RD				.EQ %00000001.00000000
S.DNS.F.RA				.EQ %00000000.10000000
S.DNS.F.RCODE.FRMT		.EQ %00000000.00000001
S.DNS.F.RCODE.SRVR		.EQ %00000000.00000010
S.DNS.F.RCODE.UKWN		.EQ %00000000.00000011
S.DNS.F.RCODE.NIMP		.EQ %00000000.00000100
S.DNS.F.RCODE.DENY		.EQ %00000000.00000101
S.DNS.QDCOUNT		.EQ S.UDP+4
S.DNS.ANCOUNT		.EQ S.UDP+6
S.DNS.NSCOUNT		.EQ S.UDP+8
S.DNS.ARCOUNT		.EQ S.UDP+10
*
S.DNS				.EQ S.UDP+12
*--------------------------------------
S.DNS.QTYPE.A		.EQ 1
S.DNS.QTYPE.NS		.EQ 2
S.DNS.QTYPE.CNAME	.EQ 5
S.DNS.QTYPE.SOA		.EQ 6
S.DNS.QTYPE.WKS		.EQ 11
S.DNS.QTYPE.PTR		.EQ 12
S.DNS.QTYPE.MX		.EQ 15
S.DNS.QTYPE.SRV		.EQ 33
S.DNS.QTYPE.ANY		.EQ 255
S.DNS.QCLASS.IN		.EQ 1
*--------------------------------------
MAN
SAVE INC/LIBTCPIP.I
