mirror of
https://github.com/A2osX/A2osX.git
synced 2024-10-09 14:55:05 +00:00
Split in separe SRC file, Static IP config supported : etc/tcpip.conf
This commit is contained in:
parent
854930da78
commit
b1e65588a9
99
SBIN/TCPIP.S.ARP.txt
Normal file
99
SBIN/TCPIP.S.ARP.txt
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
PR#3
|
||||||
|
PREFIX /A2OSX.SRC
|
||||||
|
NEW
|
||||||
|
INC 1
|
||||||
|
AUTO 6
|
||||||
|
.LIST OFF
|
||||||
|
*--------------------------------------
|
||||||
|
ARPListener jsr GetIPCFG
|
||||||
|
|
||||||
|
ldy #S.ARP.TPA
|
||||||
|
ldx #S.IPCFG.IP
|
||||||
|
|
||||||
|
.1 lda (ZPFrameBase1),y
|
||||||
|
cmp IPCFG,x
|
||||||
|
bne .9
|
||||||
|
iny
|
||||||
|
inx
|
||||||
|
cpx #S.IPCFG.IP+4
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
ldy #S.ARP.OPERATION+1 HI byte
|
||||||
|
lda (ZPFrameBase1),y
|
||||||
|
cmp #S.ARP.OPERATION.REQ
|
||||||
|
beq ARPListener.REQ
|
||||||
|
|
||||||
|
cmp #S.ARP.OPERATION.REP
|
||||||
|
beq ARPListener.REP
|
||||||
|
|
||||||
|
.9 clc Discard any other ARP frames
|
||||||
|
rts
|
||||||
|
|
||||||
|
ARPListener.REP >LDAXI S.ARP.SHA
|
||||||
|
jsr SetFramePtr1AX
|
||||||
|
>PUSHW ZPFramePtr1
|
||||||
|
>LDAXI S.ARP.SPA
|
||||||
|
jsr SetFramePtr1AX
|
||||||
|
>PUSHW ZPFramePtr1
|
||||||
|
>LIBCALL hLIBTCPIP,LIBTCPIP.ARP.ADD
|
||||||
|
clc
|
||||||
|
ARPListener.RTS rts
|
||||||
|
|
||||||
|
ARPListener.REQ >LIBCALL hLIBTCPIP,LIBTCPIP.NEW.ARP.FRAME
|
||||||
|
bcs ARPListener.RTS
|
||||||
|
|
||||||
|
phx
|
||||||
|
>STYA ZPFrameBase2
|
||||||
|
ldy #S.ARP.OPERATION+1
|
||||||
|
lda #S.ARP.OPERATION.REP
|
||||||
|
sta (ZPFrameBase2),y
|
||||||
|
|
||||||
|
>LDAXI S.ARP.SHA
|
||||||
|
jsr SetFramePtr1AX
|
||||||
|
|
||||||
|
>LDAXI S.ETH.DSTMAC
|
||||||
|
jsr SetFramePtr2AX
|
||||||
|
|
||||||
|
ldy #6
|
||||||
|
jsr CopyFramePtr12
|
||||||
|
|
||||||
|
>LDAXI S.ARP.THA
|
||||||
|
jsr SetFramePtr2AX
|
||||||
|
|
||||||
|
ldy #10 IP(4) + MAC(6)
|
||||||
|
jsr CopyFramePtr12
|
||||||
|
|
||||||
|
>PUSHW ZPFramePtr1 still point to SHA
|
||||||
|
>LDAXI S.ARP.SPA
|
||||||
|
jsr SetFramePtr1AX
|
||||||
|
>PUSHW ZPFramePtr1
|
||||||
|
>LIBCALL hLIBTCPIP,LIBTCPIP.ARP.ADD
|
||||||
|
|
||||||
|
ldx #5
|
||||||
|
ldy #S.ARP.SHA+5
|
||||||
|
.4 lda IPCFG+S.IPCFG.MAC,x
|
||||||
|
sta (ZPFrameBase2),y
|
||||||
|
dey
|
||||||
|
dex
|
||||||
|
bpl .4
|
||||||
|
|
||||||
|
ldx #3
|
||||||
|
ldy #S.ARP.SPA+3
|
||||||
|
.5 lda IPCFG+S.IPCFG.IP,x
|
||||||
|
sta (ZPFrameBase2),y
|
||||||
|
dey
|
||||||
|
dex
|
||||||
|
bpl .5
|
||||||
|
|
||||||
|
>PUSHW ZPFrameBase2
|
||||||
|
>LIBCALL hLIBTCPIP,LIBTCPIP.SEND.ARP.FRAME
|
||||||
|
|
||||||
|
pla
|
||||||
|
>SYSCALL SYS.FreeMemA
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
MAN
|
||||||
|
SAVE SBIN/TCPIP.S.ARP
|
||||||
|
LOAD SBIN/TCPIP.S
|
||||||
|
ASM
|
270
SBIN/TCPIP.S.CFG.txt
Normal file
270
SBIN/TCPIP.S.CFG.txt
Normal file
@ -0,0 +1,270 @@
|
|||||||
|
PR#3
|
||||||
|
PREFIX /A2OSX.SRC
|
||||||
|
NEW
|
||||||
|
INC 1
|
||||||
|
AUTO 6
|
||||||
|
.LIST OFF
|
||||||
|
*--------------------------------------
|
||||||
|
CFG.Read >PUSHW L.HOSTNAME
|
||||||
|
>LDYA L.MSG.CFG
|
||||||
|
>SYSCALL SYS.PSTROutYA
|
||||||
|
|
||||||
|
jsr CFG.Read.HOSTNAME
|
||||||
|
bcc .1
|
||||||
|
>PUSHA
|
||||||
|
>LDYA L.MSG.CFG.KO
|
||||||
|
>SYSCALL SYS.PSTROutYA
|
||||||
|
bra .2
|
||||||
|
|
||||||
|
.1 >LDYA L.MSG.CFG.OK
|
||||||
|
>SYSCALL SYS.PSTROutYA
|
||||||
|
|
||||||
|
.2 >PUSHW L.TCPIP.CONF
|
||||||
|
>LDYA L.MSG.CFG
|
||||||
|
>SYSCALL SYS.PSTROutYA
|
||||||
|
|
||||||
|
jsr CFG.Read.TCPIP.CONF
|
||||||
|
bcc .3
|
||||||
|
>PUSHA
|
||||||
|
>LDYA L.MSG.CFG.KO
|
||||||
|
>SYSCALL SYS.PSTROutYA
|
||||||
|
bra .4
|
||||||
|
.3 >LDYA L.MSG.CFG.OK
|
||||||
|
>SYSCALL SYS.PSTROutYA
|
||||||
|
.4 rts
|
||||||
|
*--------------------------------------
|
||||||
|
CFG.Read.HOSTNAME
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
CFG.Read.TCPIP.CONF
|
||||||
|
>LDYA L.TCPIP.CONF
|
||||||
|
>SYSCALL SYS.LoadFileYA
|
||||||
|
bcs .99
|
||||||
|
stx CFG.hCfgFile
|
||||||
|
>STYA CFG.FileLen
|
||||||
|
txa
|
||||||
|
>SYSCALL SYS.GetMemPtrA
|
||||||
|
>STYA ZPIPCfgPtr
|
||||||
|
|
||||||
|
.1 jsr CFG.GetLine
|
||||||
|
bcs .89
|
||||||
|
|
||||||
|
jsr CFG.GetKeyword
|
||||||
|
bcs .1
|
||||||
|
|
||||||
|
lda CFG.Keyword
|
||||||
|
bne .3
|
||||||
|
|
||||||
|
ldy TmpBuffer256
|
||||||
|
|
||||||
|
lda TmpBuffer256+1,y
|
||||||
|
cmp #35 DOMAIN too long!!!
|
||||||
|
bcs .1
|
||||||
|
|
||||||
|
sta IPCFG+S.IPCFG.DOMAIN
|
||||||
|
ldx #0
|
||||||
|
|
||||||
|
.2 lda TmpBuffer256+2,y
|
||||||
|
sta IPCFG+S.IPCFG.DOMAIN,x
|
||||||
|
beq .1
|
||||||
|
inx
|
||||||
|
iny
|
||||||
|
bne .2
|
||||||
|
bra .1
|
||||||
|
|
||||||
|
.3 jsr CFG.ScanIP
|
||||||
|
bcs .1
|
||||||
|
|
||||||
|
ldy CFG.Keyword
|
||||||
|
lda CFG.Keyword.Map,y
|
||||||
|
tax
|
||||||
|
ldy #0
|
||||||
|
|
||||||
|
.4 lda CFG.IP+1,y
|
||||||
|
sta IPCFG,x
|
||||||
|
inx
|
||||||
|
iny
|
||||||
|
cpy #4
|
||||||
|
bne .4
|
||||||
|
lda CFG.Keyword
|
||||||
|
cmp #1
|
||||||
|
bne .1
|
||||||
|
lda #S.IPCFG.STATUS.OK
|
||||||
|
sta IPCFG
|
||||||
|
bra .1
|
||||||
|
|
||||||
|
.89 lda CFG.hCfgFile
|
||||||
|
>SYSCALL SYS.FreeMemA
|
||||||
|
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
.99 sec
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
CFG.GetLine stz TmpBuffer256
|
||||||
|
ldx #0
|
||||||
|
ldy #0
|
||||||
|
|
||||||
|
.1 jsr CFG.GetChar
|
||||||
|
bne .2 end of file?
|
||||||
|
txa
|
||||||
|
bne .8
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
|
||||||
|
.2 cmp #$0D
|
||||||
|
beq .8 end of line
|
||||||
|
inx
|
||||||
|
sta TmpBuffer256,x
|
||||||
|
cmp #'='
|
||||||
|
bne .3
|
||||||
|
txa
|
||||||
|
dec
|
||||||
|
tay
|
||||||
|
.3 cpx #64 line too long ?
|
||||||
|
bne .1
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
|
||||||
|
.8 tya = found ?
|
||||||
|
beq .9
|
||||||
|
|
||||||
|
sta TmpBuffer256
|
||||||
|
txa
|
||||||
|
sec
|
||||||
|
sbc TmpBuffer256
|
||||||
|
sta TmpBuffer256+1,y
|
||||||
|
stz TmpBuffer256+1,x End with 0 for ScanIP
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
.9 sec
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
CFG.GetChar lda CFG.FileLen
|
||||||
|
bne .1
|
||||||
|
lda CFG.FileLen+1
|
||||||
|
beq .9
|
||||||
|
dec CFG.FileLen+1
|
||||||
|
.1 dec CFG.FileLen
|
||||||
|
lda (ZPIPCfgPtr)
|
||||||
|
inc ZPIPCfgPtr
|
||||||
|
bne .9
|
||||||
|
inc ZPIPCfgPtr+1 NZ
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
CFG.GetKeyword stz CFG.Keyword
|
||||||
|
|
||||||
|
ldx #0
|
||||||
|
|
||||||
|
.1 phx
|
||||||
|
ldy #0
|
||||||
|
|
||||||
|
.2 lda CFG.Keywords,x
|
||||||
|
cmp TmpBuffer256,y
|
||||||
|
bne .3
|
||||||
|
cpy TmpBuffer256
|
||||||
|
beq .4
|
||||||
|
inx
|
||||||
|
iny
|
||||||
|
bne .2
|
||||||
|
plx
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
|
||||||
|
.3 inc CFG.Keyword
|
||||||
|
plx
|
||||||
|
txa
|
||||||
|
sec
|
||||||
|
adc CFG.Keywords,x
|
||||||
|
tax
|
||||||
|
lda CFG.Keywords,x
|
||||||
|
bne .1
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
|
||||||
|
.4 plx
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
CFG.ScanIP stz CFG.IP
|
||||||
|
|
||||||
|
ldx TmpBuffer256
|
||||||
|
|
||||||
|
.1 ldy #0
|
||||||
|
.11 lda TmpBuffer256+2,x
|
||||||
|
beq .3
|
||||||
|
cmp #'0'
|
||||||
|
bcc .2
|
||||||
|
cmp #'9'+1
|
||||||
|
bcs .2
|
||||||
|
cpy #3
|
||||||
|
beq .9
|
||||||
|
iny
|
||||||
|
sta CFG.StrBuf,y
|
||||||
|
inx
|
||||||
|
bra .11
|
||||||
|
|
||||||
|
.2 cmp #'.'
|
||||||
|
bne .9
|
||||||
|
|
||||||
|
.3 sty CFG.StrBuf
|
||||||
|
lda CFG.IP
|
||||||
|
cmp #4
|
||||||
|
beq .9
|
||||||
|
jsr CFG.Dec2Hex
|
||||||
|
bcs .9
|
||||||
|
lda CFG.HexByte
|
||||||
|
inc CFG.IP
|
||||||
|
ldy CFG.IP
|
||||||
|
sta CFG.IP,y
|
||||||
|
inx
|
||||||
|
lda TmpBuffer256+1,x
|
||||||
|
bne .1
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
.9 sec
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
CFG.Dec2Hex sec
|
||||||
|
ldy CFG.StrBuf
|
||||||
|
beq .9
|
||||||
|
|
||||||
|
lda CFG.StrBuf+1
|
||||||
|
and #$0f
|
||||||
|
sta CFG.HexByte
|
||||||
|
|
||||||
|
ldy #1
|
||||||
|
|
||||||
|
.1 cpy CFG.StrBuf
|
||||||
|
beq .8
|
||||||
|
iny
|
||||||
|
lda CFG.HexByte
|
||||||
|
asl CFG.HexByte
|
||||||
|
bcs .9
|
||||||
|
asl CFG.HexByte
|
||||||
|
bcs .9
|
||||||
|
adc CFG.HexByte
|
||||||
|
bcs .9
|
||||||
|
asl
|
||||||
|
bcs .9
|
||||||
|
sta CFG.HexByte
|
||||||
|
lda CFG.StrBuf,y
|
||||||
|
and #$0f
|
||||||
|
adc CFG.HexByte
|
||||||
|
sta CFG.HexByte
|
||||||
|
bcc .1
|
||||||
|
.9 rts
|
||||||
|
|
||||||
|
.8 clc
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
|
||||||
|
MAN
|
||||||
|
SAVE SBIN/TCPIP.S.CFG
|
||||||
|
LOAD SBIN/TCPIP.S
|
||||||
|
ASM
|
50
SBIN/TCPIP.S.DNS.txt
Normal file
50
SBIN/TCPIP.S.DNS.txt
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
PR#3
|
||||||
|
PREFIX /A2OSX.SRC
|
||||||
|
NEW
|
||||||
|
INC 1
|
||||||
|
AUTO 6
|
||||||
|
.LIST OFF
|
||||||
|
*--------------------------------------
|
||||||
|
DNSListener ldy #S.DNS.F+1
|
||||||
|
lda (ZPFrameBase1),y
|
||||||
|
and /S.DNS.F.QR
|
||||||
|
beq .9
|
||||||
|
|
||||||
|
ldy #S.DNS.ANCOUNT+1
|
||||||
|
lda (ZPFrameBase1),y
|
||||||
|
beq .9
|
||||||
|
|
||||||
|
ldy #S.DNS.QDCOUNT+1
|
||||||
|
lda (ZPFrameBase1),y
|
||||||
|
tax
|
||||||
|
beq .3 no QUERY to skip
|
||||||
|
|
||||||
|
ldy #S.DNS Read query
|
||||||
|
|
||||||
|
.1 lda (ZPFrameBase1),y
|
||||||
|
beq .2
|
||||||
|
iny
|
||||||
|
bne .1
|
||||||
|
.2 tya
|
||||||
|
clc
|
||||||
|
adc #4 Skip QTYPE & QCLASS
|
||||||
|
tay
|
||||||
|
dex skip another QUERY ?
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
.3 iny skip high byte of offset
|
||||||
|
iny skip lo byte of offset
|
||||||
|
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
.9 sec
|
||||||
|
rts
|
||||||
|
|
||||||
|
*--------------------------------------
|
||||||
|
|
||||||
|
*--------------------------------------
|
||||||
|
MAN
|
||||||
|
SAVE SBIN/TCPIP.S.DNS
|
||||||
|
LOAD SBIN/TCPIP.S
|
||||||
|
ASM
|
58
SBIN/TCPIP.S.ICMP.txt
Normal file
58
SBIN/TCPIP.S.ICMP.txt
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
PR#3
|
||||||
|
PREFIX /A2OSX.SRC
|
||||||
|
NEW
|
||||||
|
INC 1
|
||||||
|
AUTO 6
|
||||||
|
.LIST OFF
|
||||||
|
*--------------------------------------
|
||||||
|
ICMPListener ldy #S.ICMP.TYPE
|
||||||
|
lda (ZPFrameBase1),y
|
||||||
|
cmp #S.ICMP.TYPE.ECHOREQ
|
||||||
|
bne .9
|
||||||
|
|
||||||
|
jsr GetIPCFG
|
||||||
|
|
||||||
|
ldy #S.IP.DST
|
||||||
|
ldx #S.IPCFG.IP
|
||||||
|
.10 lda (ZPFrameBase1),y
|
||||||
|
cmp IPCFG,x
|
||||||
|
bne .9
|
||||||
|
iny
|
||||||
|
inx
|
||||||
|
cpx #S.IPCFG.IP+4
|
||||||
|
bne .10
|
||||||
|
|
||||||
|
>LIBCALL hLIBTCPIP,LIBTCPIP.NEW.ICMP.FRAME
|
||||||
|
bcs .9
|
||||||
|
phx
|
||||||
|
>STYA ZPFrameBase2
|
||||||
|
ldy #S.ICMP.TYPE
|
||||||
|
lda #S.ICMP.TYPE.ECHOREP
|
||||||
|
sta (ZPFrameBase2),y
|
||||||
|
jsr MakeIPReply
|
||||||
|
|
||||||
|
ldy #S.ICMP.IDENTIFIER
|
||||||
|
.1 lda (ZPFrameBase1),y
|
||||||
|
sta (ZPFrameBase2),y
|
||||||
|
iny
|
||||||
|
cpy #ZPFrameLen1
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
>PUSHW ZPFrameLen1
|
||||||
|
>PUSHW ZPFrameBase2
|
||||||
|
>LIBCALL hLIBTCPIP,LIBTCPIP.SEND.ICMP.FRAME
|
||||||
|
|
||||||
|
pla
|
||||||
|
>SYSCALL SYS.FreeMemA
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
.9 sec
|
||||||
|
rts
|
||||||
|
|
||||||
|
*--------------------------------------
|
||||||
|
|
||||||
|
*--------------------------------------
|
||||||
|
MAN
|
||||||
|
SAVE SBIN/TCPIP.S.ICMP
|
||||||
|
LOAD SBIN/TCPIP.S
|
||||||
|
ASM
|
277
SBIN/TCPIP.S.txt
277
SBIN/TCPIP.S.txt
@ -41,7 +41,11 @@ CS.START cld
|
|||||||
.DA CS.QUIT
|
.DA CS.QUIT
|
||||||
L.LIBTCPIP .DA LIBTCPIP
|
L.LIBTCPIP .DA LIBTCPIP
|
||||||
L.MSG.HELP .DA MSG.HELP
|
L.MSG.HELP .DA MSG.HELP
|
||||||
L.CFGFILENAME .DA CFGFILENAME
|
L.MSG.CFG .DA MSG.CFG
|
||||||
|
L.MSG.CFG.KO .DA MSG.CFG.KO
|
||||||
|
L.MSG.CFG.OK .DA MSG.CFG.OK
|
||||||
|
L.HOSTNAME .DA HOSTNAME
|
||||||
|
L.TCPIP.CONF .DA TCPIP.CONF
|
||||||
L.IPCFG .DA IPCFG
|
L.IPCFG .DA IPCFG
|
||||||
.DA 0
|
.DA 0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
@ -52,24 +56,17 @@ CS.INIT >LDYA L.LIBTCPIP
|
|||||||
|
|
||||||
ldy #S.PS.hARGS
|
ldy #S.PS.hARGS
|
||||||
lda (pPs),y
|
lda (pPs),y
|
||||||
bne .10
|
bne .1
|
||||||
>LDYA L.MSG.HELP
|
>LDYA L.MSG.HELP
|
||||||
>SYSCALL SYS.PSTROutYA
|
>SYSCALL SYS.PSTROutYA
|
||||||
lda #0
|
lda #0
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.10 ldx #0
|
.1 jsr CS.INIT.DEV
|
||||||
.1 stz IPCFG,x
|
|
||||||
inx
|
|
||||||
cpx #S.IPCFG
|
|
||||||
bne .1
|
|
||||||
|
|
||||||
jsr CS.INIT.DEV
|
|
||||||
|
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
* jsr CS.INIT.CFGFILE continue even if error opening CFG file
|
jsr CFG.Read continue even if error opening CFG file
|
||||||
|
|
||||||
ldx #S.IPCFG.HOSTNAME
|
ldx #S.IPCFG.HOSTNAME
|
||||||
lda IPCFG,x
|
lda IPCFG,x
|
||||||
@ -105,23 +102,28 @@ CS.INIT.DEV ldy #S.PS.hARGS
|
|||||||
sta hDEVNAME save DevName for discard
|
sta hDEVNAME save DevName for discard
|
||||||
>SYSCALL SYS.GetDevByNameA
|
>SYSCALL SYS.GetDevByNameA
|
||||||
bcs .98
|
bcs .98
|
||||||
>STYA pDev
|
>STYA pNetDevJmp+1
|
||||||
txa
|
txa
|
||||||
sta hDev
|
sta hNetDev
|
||||||
ldx #S.IPCFG.HDEV
|
ldx #S.IPCFG.HDEV
|
||||||
sta IPCFG,x
|
sta IPCFG,x
|
||||||
|
|
||||||
ldx #DEVMGR.OPEN
|
ldx #DEVMGR.OPEN
|
||||||
jsr pDevJmp
|
jsr pNetDevJmp
|
||||||
bcs .98
|
bcs .98
|
||||||
|
|
||||||
ldx #DEVMGR.GETINFO
|
ldx #DEVMGR.GETINFO
|
||||||
jsr pDevJmp
|
jsr pNetDevJmp
|
||||||
bcs .98
|
bcs .98
|
||||||
>STYA ZPIPDevPtr
|
>STYA ZPIPDevPtr
|
||||||
|
|
||||||
ldy #1
|
ldy #1
|
||||||
|
lda (ZPIPDevPtr),y
|
||||||
|
sta DEVFLAGS
|
||||||
|
|
||||||
|
iny
|
||||||
ldx #S.IPCFG.MAC
|
ldx #S.IPCFG.MAC
|
||||||
|
|
||||||
.1 lda (ZPIPDevPtr),y
|
.1 lda (ZPIPDevPtr),y
|
||||||
sta IPCFG,x
|
sta IPCFG,x
|
||||||
iny
|
iny
|
||||||
@ -140,37 +142,6 @@ CS.INIT.DEV ldy #S.PS.hARGS
|
|||||||
.99 sec
|
.99 sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.INIT.CFGFILE >LDYA L.CFGFILENAME
|
|
||||||
>SYSCALL SYS.ExpandPStrYA
|
|
||||||
bcs .99
|
|
||||||
sta hCfgFileName
|
|
||||||
>SYSCALL SYS.LoadFileA
|
|
||||||
bcs .98
|
|
||||||
stx hCfgFile
|
|
||||||
>STYA hCfgFileLen
|
|
||||||
txa
|
|
||||||
>SYSCALL SYS.GetMemPtrA
|
|
||||||
>STYA ZPIPCfgPtr
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.89 lda hCfgFile
|
|
||||||
>SYSCALL SYS.FreeMemA
|
|
||||||
|
|
||||||
lda hCfgFileName
|
|
||||||
>SYSCALL SYS.FreeMemA
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
|
|
||||||
.98 pha
|
|
||||||
lda hCfgFileName
|
|
||||||
>SYSCALL SYS.FreeMemA
|
|
||||||
pla
|
|
||||||
|
|
||||||
.99 sec
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
CS.RUN clc
|
CS.RUN clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
@ -180,7 +151,7 @@ CS.DOEVENT lda (pEvent)
|
|||||||
|
|
||||||
ldy #S.EVT.hDEV
|
ldy #S.EVT.hDEV
|
||||||
lda (pEvent),y
|
lda (pEvent),y
|
||||||
cmp hDev
|
cmp hNetDev
|
||||||
beq CS.DOEVENT.NET
|
beq CS.DOEVENT.NET
|
||||||
.9 sec
|
.9 sec
|
||||||
rts
|
rts
|
||||||
@ -260,187 +231,16 @@ CS.DOEVENT.NET ldy #S.EVT.DATALO Get Frame hMem
|
|||||||
.99 sec
|
.99 sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.QUIT lda hDev
|
CS.QUIT ldx #DEVMGR.CLOSE
|
||||||
>SYSCALL SYS.GetDevByIDA
|
jsr pNetDevJmp
|
||||||
>STYA pDev
|
|
||||||
|
|
||||||
ldx #DEVMGR.CLOSE
|
|
||||||
jsr pDevJmp
|
|
||||||
|
|
||||||
lda hLIBTCPIP
|
lda hLIBTCPIP
|
||||||
>SYSCALL SYS.UnloadLibA
|
>SYSCALL SYS.UnloadLibA
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* PRIVATE
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ARPListener jsr GetIPCFG
|
|
||||||
|
|
||||||
ldy #S.ARP.TPA
|
|
||||||
ldx #S.IPCFG.IP
|
|
||||||
|
|
||||||
.1 lda (ZPFrameBase1),y
|
|
||||||
cmp IPCFG,x
|
|
||||||
bne .9
|
|
||||||
iny
|
|
||||||
inx
|
|
||||||
cpx #S.IPCFG.IP+4
|
|
||||||
bne .1
|
|
||||||
|
|
||||||
ldy #S.ARP.OPERATION+1 HI byte
|
|
||||||
lda (ZPFrameBase1),y
|
|
||||||
cmp #S.ARP.OPERATION.REQ
|
|
||||||
beq ARPListener.REQ
|
|
||||||
|
|
||||||
cmp #S.ARP.OPERATION.REP
|
|
||||||
beq ARPListener.REP
|
|
||||||
|
|
||||||
.9 clc Discard any other ARP frames
|
|
||||||
rts
|
|
||||||
|
|
||||||
ARPListener.REP >LDAXI S.ARP.SHA
|
|
||||||
jsr SetFramePtr1AX
|
|
||||||
>PUSHW ZPFramePtr1
|
|
||||||
>LDAXI S.ARP.SPA
|
|
||||||
jsr SetFramePtr1AX
|
|
||||||
>PUSHW ZPFramePtr1
|
|
||||||
>LIBCALL hLIBTCPIP,LIBTCPIP.ARP.ADD
|
|
||||||
clc
|
|
||||||
ARPListener.RTS rts
|
|
||||||
|
|
||||||
ARPListener.REQ >LIBCALL hLIBTCPIP,LIBTCPIP.NEW.ARP.FRAME
|
|
||||||
bcs ARPListener.RTS
|
|
||||||
|
|
||||||
phx
|
|
||||||
>STYA ZPFrameBase2
|
|
||||||
ldy #S.ARP.OPERATION+1
|
|
||||||
lda #S.ARP.OPERATION.REP
|
|
||||||
sta (ZPFrameBase2),y
|
|
||||||
|
|
||||||
>LDAXI S.ARP.SHA
|
|
||||||
jsr SetFramePtr1AX
|
|
||||||
|
|
||||||
>LDAXI S.ETH.DSTMAC
|
|
||||||
jsr SetFramePtr2AX
|
|
||||||
|
|
||||||
ldy #6
|
|
||||||
jsr CopyFramePtr12
|
|
||||||
|
|
||||||
>LDAXI S.ARP.THA
|
|
||||||
jsr SetFramePtr2AX
|
|
||||||
|
|
||||||
ldy #10 IP(4) + MAC(6)
|
|
||||||
jsr CopyFramePtr12
|
|
||||||
|
|
||||||
>PUSHW ZPFramePtr1 still point to SHA
|
|
||||||
>LDAXI S.ARP.SPA
|
|
||||||
jsr SetFramePtr1AX
|
|
||||||
>PUSHW ZPFramePtr1
|
|
||||||
>LIBCALL hLIBTCPIP,LIBTCPIP.ARP.ADD
|
|
||||||
|
|
||||||
ldx #5
|
|
||||||
ldy #S.ARP.SHA+5
|
|
||||||
.4 lda IPCFG+S.IPCFG.MAC,x
|
|
||||||
sta (ZPFrameBase2),y
|
|
||||||
dey
|
|
||||||
dex
|
|
||||||
bpl .4
|
|
||||||
|
|
||||||
ldx #3
|
|
||||||
ldy #S.ARP.SPA+3
|
|
||||||
.5 lda IPCFG+S.IPCFG.IP,x
|
|
||||||
sta (ZPFrameBase2),y
|
|
||||||
dey
|
|
||||||
dex
|
|
||||||
bpl .5
|
|
||||||
|
|
||||||
>PUSHW ZPFrameBase2
|
|
||||||
>LIBCALL hLIBTCPIP,LIBTCPIP.SEND.ARP.FRAME
|
|
||||||
|
|
||||||
pla
|
|
||||||
>SYSCALL SYS.FreeMemA
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ICMPListener ldy #S.ICMP.TYPE
|
|
||||||
lda (ZPFrameBase1),y
|
|
||||||
cmp #S.ICMP.TYPE.ECHOREQ
|
|
||||||
bne .9
|
|
||||||
|
|
||||||
jsr GetIPCFG
|
|
||||||
|
|
||||||
ldy #S.IP.DST
|
|
||||||
ldx #S.IPCFG.IP
|
|
||||||
.10 lda (ZPFrameBase1),y
|
|
||||||
cmp IPCFG,x
|
|
||||||
bne .9
|
|
||||||
iny
|
|
||||||
inx
|
|
||||||
cpx #S.IPCFG.IP+4
|
|
||||||
bne .10
|
|
||||||
|
|
||||||
>LIBCALL hLIBTCPIP,LIBTCPIP.NEW.ICMP.FRAME
|
|
||||||
bcs .9
|
|
||||||
phx
|
|
||||||
>STYA ZPFrameBase2
|
|
||||||
ldy #S.ICMP.TYPE
|
|
||||||
lda #S.ICMP.TYPE.ECHOREP
|
|
||||||
sta (ZPFrameBase2),y
|
|
||||||
jsr MakeIPReply
|
|
||||||
|
|
||||||
ldy #S.ICMP.IDENTIFIER
|
|
||||||
.1 lda (ZPFrameBase1),y
|
|
||||||
sta (ZPFrameBase2),y
|
|
||||||
iny
|
|
||||||
cpy #ZPFrameLen1
|
|
||||||
bne .1
|
|
||||||
|
|
||||||
>PUSHW ZPFrameLen1
|
|
||||||
>PUSHW ZPFrameBase2
|
|
||||||
>LIBCALL hLIBTCPIP,LIBTCPIP.SEND.ICMP.FRAME
|
|
||||||
|
|
||||||
pla
|
|
||||||
>SYSCALL SYS.FreeMemA
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
.9 sec
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
DNSListener ldy #S.DNS.F+1
|
|
||||||
lda (ZPFrameBase1),y
|
|
||||||
and /S.DNS.F.QR
|
|
||||||
beq .9
|
|
||||||
|
|
||||||
ldy #S.DNS.ANCOUNT+1
|
|
||||||
lda (ZPFrameBase1),y
|
|
||||||
beq .9
|
|
||||||
|
|
||||||
ldy #S.DNS.QDCOUNT+1
|
|
||||||
lda (ZPFrameBase1),y
|
|
||||||
tax
|
|
||||||
beq .3 no QUERY to skip
|
|
||||||
|
|
||||||
ldy #S.DNS Read query
|
|
||||||
|
|
||||||
.1 lda (ZPFrameBase1),y
|
|
||||||
beq .2
|
|
||||||
iny
|
|
||||||
bne .1
|
|
||||||
.2 tya
|
|
||||||
clc
|
|
||||||
adc #4 Skip QTYPE & QCLASS
|
|
||||||
tay
|
|
||||||
dex skip another QUERY ?
|
|
||||||
bne .1
|
|
||||||
|
|
||||||
.3 iny skip high byte of offset
|
|
||||||
iny skip lo byte of offset
|
|
||||||
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
|
|
||||||
.9 sec
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
GetIPCFG >LIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG
|
GetIPCFG >LIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG
|
||||||
>STYA ZPIPCfgPtr
|
>STYA ZPIPCfgPtr
|
||||||
@ -504,19 +304,46 @@ CopyFramePtr12 dey
|
|||||||
bne CopyFramePtr12
|
bne CopyFramePtr12
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
pNetDevJmp jmp *
|
||||||
|
*--------------------------------------
|
||||||
|
.INB SBIN/TCPIP.S.CFG
|
||||||
|
.INB SBIN/TCPIP.S.ARP
|
||||||
|
.INB SBIN/TCPIP.S.DNS
|
||||||
|
.INB SBIN/TCPIP.S.ICMP
|
||||||
|
*--------------------------------------
|
||||||
CS.END
|
CS.END
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
LIBTCPIP >PSTRING "libtcpip.o"
|
LIBTCPIP >PSTRING "libtcpip.o"
|
||||||
MSG.HELP >PSTRING "Usage: TCPIP ETHx\n"
|
MSG.HELP >PSTRING "Usage: TCPIP ETHx\n"
|
||||||
CFGFILENAME >PSTRING "${A2OSX}ETC/TCPIP.CONF"
|
MSG.CFG >PSTRING "Reading : %S..."
|
||||||
|
MSG.CFG.KO >PSTRING "Failed!!! [%h]\n"
|
||||||
|
MSG.CFG.OK >PSTRING "OK.\n"
|
||||||
|
HOSTNAME >PSTRING "${A2OSX}ETC/HOSTNAME"
|
||||||
|
TCPIP.CONF >PSTRING "${A2OSX}ETC/TCPIP.CONF"
|
||||||
DefaultHostName >CSTRING "a2osx-host"
|
DefaultHostName >CSTRING "a2osx-host"
|
||||||
|
CFG.Keywords >PSTRING "DOMAIN"
|
||||||
|
>PSTRING "IP"
|
||||||
|
>PSTRING "MASK"
|
||||||
|
>PSTRING "GW"
|
||||||
|
>PSTRING "DNS1"
|
||||||
|
>PSTRING "DNS2"
|
||||||
|
CFG.Keyword.Map .DA #0 End Of Keyword table and NA Keyword
|
||||||
|
.DA #S.IPCFG.IP
|
||||||
|
.DA #S.IPCFG.MASK
|
||||||
|
.DA #S.IPCFG.GW
|
||||||
|
.DA #S.IPCFG.DNS
|
||||||
|
.DA #S.IPCFG.DNS+4
|
||||||
hLIBTCPIP .BS 1
|
hLIBTCPIP .BS 1
|
||||||
hDEVNAME .BS 1
|
hDEVNAME .BS 1
|
||||||
hDev .BS 1
|
hNetDev .BS 1
|
||||||
hCfgFileName .BS 1
|
DEVFLAGS .BS 1
|
||||||
hCfgFile .BS 1
|
|
||||||
hCfgFileLen .BS 2
|
|
||||||
IPCFG .BS S.IPCFG Get in cache for faster access with ,X
|
IPCFG .BS S.IPCFG Get in cache for faster access with ,X
|
||||||
|
CFG.hCfgFile .BS 1
|
||||||
|
CFG.FileLen .BS 2
|
||||||
|
CFG.Keyword .BS 1
|
||||||
|
CFG.StrBuf .BS 4
|
||||||
|
CFG.HexByte .BS 1
|
||||||
|
CFG.IP .BS 5
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE SBIN/TCPIP.S
|
SAVE SBIN/TCPIP.S
|
||||||
|
Loading…
Reference in New Issue
Block a user