mirror of
https://github.com/A2osX/A2osX.git
synced 2024-12-31 14:29:28 +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
|
||||
L.LIBTCPIP .DA LIBTCPIP
|
||||
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
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
@ -52,24 +56,17 @@ CS.INIT >LDYA L.LIBTCPIP
|
||||
|
||||
ldy #S.PS.hARGS
|
||||
lda (pPs),y
|
||||
bne .10
|
||||
bne .1
|
||||
>LDYA L.MSG.HELP
|
||||
>SYSCALL SYS.PSTROutYA
|
||||
lda #0
|
||||
sec
|
||||
rts
|
||||
|
||||
.10 ldx #0
|
||||
.1 stz IPCFG,x
|
||||
inx
|
||||
cpx #S.IPCFG
|
||||
bne .1
|
||||
|
||||
jsr CS.INIT.DEV
|
||||
|
||||
.1 jsr CS.INIT.DEV
|
||||
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
|
||||
lda IPCFG,x
|
||||
@ -105,23 +102,28 @@ CS.INIT.DEV ldy #S.PS.hARGS
|
||||
sta hDEVNAME save DevName for discard
|
||||
>SYSCALL SYS.GetDevByNameA
|
||||
bcs .98
|
||||
>STYA pDev
|
||||
>STYA pNetDevJmp+1
|
||||
txa
|
||||
sta hDev
|
||||
sta hNetDev
|
||||
ldx #S.IPCFG.HDEV
|
||||
sta IPCFG,x
|
||||
|
||||
ldx #DEVMGR.OPEN
|
||||
jsr pDevJmp
|
||||
jsr pNetDevJmp
|
||||
bcs .98
|
||||
|
||||
ldx #DEVMGR.GETINFO
|
||||
jsr pDevJmp
|
||||
jsr pNetDevJmp
|
||||
bcs .98
|
||||
>STYA ZPIPDevPtr
|
||||
|
||||
ldy #1
|
||||
lda (ZPIPDevPtr),y
|
||||
sta DEVFLAGS
|
||||
|
||||
iny
|
||||
ldx #S.IPCFG.MAC
|
||||
|
||||
.1 lda (ZPIPDevPtr),y
|
||||
sta IPCFG,x
|
||||
iny
|
||||
@ -140,37 +142,6 @@ CS.INIT.DEV ldy #S.PS.hARGS
|
||||
.99 sec
|
||||
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
|
||||
rts
|
||||
*--------------------------------------
|
||||
@ -180,7 +151,7 @@ CS.DOEVENT lda (pEvent)
|
||||
|
||||
ldy #S.EVT.hDEV
|
||||
lda (pEvent),y
|
||||
cmp hDev
|
||||
cmp hNetDev
|
||||
beq CS.DOEVENT.NET
|
||||
.9 sec
|
||||
rts
|
||||
@ -260,187 +231,16 @@ CS.DOEVENT.NET ldy #S.EVT.DATALO Get Frame hMem
|
||||
.99 sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.QUIT lda hDev
|
||||
>SYSCALL SYS.GetDevByIDA
|
||||
>STYA pDev
|
||||
|
||||
ldx #DEVMGR.CLOSE
|
||||
jsr pDevJmp
|
||||
CS.QUIT ldx #DEVMGR.CLOSE
|
||||
jsr pNetDevJmp
|
||||
|
||||
lda hLIBTCPIP
|
||||
>SYSCALL SYS.UnloadLibA
|
||||
clc
|
||||
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
|
||||
>STYA ZPIPCfgPtr
|
||||
@ -504,19 +304,46 @@ CopyFramePtr12 dey
|
||||
bne CopyFramePtr12
|
||||
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
|
||||
*--------------------------------------
|
||||
LIBTCPIP >PSTRING "libtcpip.o"
|
||||
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"
|
||||
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
|
||||
hDEVNAME .BS 1
|
||||
hDev .BS 1
|
||||
hCfgFileName .BS 1
|
||||
hCfgFile .BS 1
|
||||
hCfgFileLen .BS 2
|
||||
hNetDev .BS 1
|
||||
DEVFLAGS .BS 1
|
||||
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
|
||||
SAVE SBIN/TCPIP.S
|
||||
|
Loading…
Reference in New Issue
Block a user