A2osX/SBIN/TCPIP.S.txt
2017-08-25 17:02:16 +02:00

222 lines
4.6 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

PR#3
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6
.LIST OFF
.OP 65C02
.OR $2000
.TF /A2OSX.BUILD/SBIN/TCPIP
*--------------------------------------
.INB /A2OSX.BUILD/INC/MACROS.I
.INB /A2OSX.BUILD/INC/A2OSX.I
.INB /A2OSX.BUILD/INC/LIBTCPIP.I
*--------------------------------------
ZPIPCfgPtr .EQ ZPBIN
ZPIPDevPtr .EQ ZPBIN+2
*--------------------------------------
* File Header (16 Bytes)
*--------------------------------------
CS.START cld
jmp (.1,x)
.DA #$61 6502,Level 1 (65c02)
.DA #1 BIN Layout Version 1
.DA 0
.DA CS.END-CS.START Code Length To Relocate
.DA 0
.DA 0
.DA 0
*--------------------------------------
* Relocation Table
*--------------------------------------
.1 .DA CS.INIT
.DA CS.RUN
.DA CS.DOEVENT
.DA CS.QUIT
L.LIBTCPIP .DA LIBTCPIP
L.DEVNAME .DA DEVNAME
L.MSG.DEV.KO .DA MSG.DEV.KO
L.MSG.DEV.OK .DA MSG.DEV.OK
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.HOSTS .DA HOSTS
L.IPCFG .DA IPCFG
.DA 0
*--------------------------------------
CS.INIT >LDYA L.LIBTCPIP
>SYSCALL LoadLibYA
bcs .99
sta hLIBTCPIP
jsr CS.INIT.DEV
bcs .99
jsr CFG.Read continue even if error opening CFG file
lda IPCFG+S.IPCFG.HOSTNAME
bne .4
ldy DefaultHostName
.2 lda DefaultHostName,y
sta IPCFG+S.IPCFG.HOSTNAME,y
dey
bpl .2
.3 lda A2osX.TIMER16
jsr A2CharAX
sta IPCFG+S.IPCFG.HOSTNAME+7
stx IPCFG+S.IPCFG.HOSTNAME+8
lda A2osX.TIMER16+1
jsr A2CharAX
sta IPCFG+S.IPCFG.HOSTNAME+9
stx IPCFG+S.IPCFG.HOSTNAME+10
.4 >PUSHW L.IPCFG
>LIBCALL hLIBTCPIP,LIBTCPIP.SET.IPCFG
lda (pPs)
ora #S.PS.F.EVENT Now accept events
sta (pPs)
clc
.99 rts
*--------------------------------------
CS.INIT.DEV >LDYA L.DEVNAME
>SYSCALL GetDevByNameYA
bcc .1
inc DEVNAME+4
lda DEVNAME+4
cmp #'8'
bne CS.INIT.DEV
>LDYA L.MSG.DEV.KO
>SYSCALL PrintF.YA
lda #$28 MLI.ERR.NODEV
sec
rts
.1 >STYA ZPIPDevPtr
>STYA NetDevJmp+1
stx hNetDev
stx IPCFG+S.IPCFG.HDEV
>PUSHW L.DEVNAME
>LDYA L.MSG.DEV.OK
>SYSCALL PrintF.YA
ldx #DEVMGR.OPEN
jsr NetDevJmp
bcs .9
ldx #DEVMGR.STATUS
jsr NetDevJmp
bcs .9
>STYA ZPIPDevPtr
ldy #S.DEVSTAT+2 MAC
ldx #S.IPCFG.MAC
.2 lda (ZPIPDevPtr),y
sta IPCFG,x
iny
inx
cpx #S.IPCFG.MAC+6
bne .2
clc
rts
.9 sec
rts
*--------------------------------------
CS.RUN >LIBCALL hLIBTCPIP,LIBTCPIP.POLL
clc
rts
*--------------------------------------
CS.DOEVENT lda (pEvent)
bpl .9
>LIBCALL hLIBTCPIP,LIBTCPIP.PULSEA
.9 sec never discard TIME event
rts
*--------------------------------------
CS.QUIT lda IPCFG+S.IPCFG.HDEV
beq .1
ldx #DEVMGR.CLOSE
jsr NetDevJmp
.1 lda hLIBTCPIP
>SYSCALL UnloadLibA
clc
rts
*--------------------------------------
A2CharAX pha
lsr
lsr
lsr
lsr
and #$0F
ora #$30
cmp #'9'+1
bcc .1
adc #6
.1 tax
pla
and #$0F
ora #$30
cmp #'9'+1
bcc .8
adc #6
.8 rts
*--------------------------------------
NetDevJmp jmp *
*--------------------------------------
.INB /A2OSX.SRC/SBIN/TCPIP.S.CFG
*--------------------------------------
CS.END
*--------------------------------------
LIBTCPIP >PSTR "libtcpip.o"
DEVNAME >PSTR "ETH1"
MSG.DEV.KO >CSTR "TCPIP:No Device Found, exiting.\r\n"
MSG.DEV.OK >CSTR "TCPIP:Bound To Device : %S\r\n"
MSG.CFG >CSTR "TCPIP:Reading %S..."
MSG.CFG.KO >CSTR "Failed!!! [%h]\r\n"
MSG.CFG.OK >CSTR "OK.\r\n"
*--------------------------------------
HOSTNAME >PSTR "${A2OSX}ETC/HOSTNAME"
TCPIP.CONF >PSTR "${A2OSX}ETC/TCPIP.CONF"
HOSTS >PSTR "${A2OSX}ETC/HOSTS"
DefaultHostName >PSTR "a2osx-XXXX"
CFG.Keywords >PSTR "DOMAIN"
>PSTR "IP"
>PSTR "MASK"
>PSTR "GW"
>PSTR "DNS1"
>PSTR "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.DNS1
.DA #S.IPCFG.DNS2
hLIBTCPIP .BS 1
hNetDev .BS 1
IPCFG .BS S.IPCFG
CFG.hCfgFile .BS 1
CFG.hCfgPath .BS 1
CFG.FileLen .BS 2
CFG.Keyword .BS 1
CFG.StrBuf .BS 4
CFG.HexByte .BS 1
CFG.IP .BS 5
*--------------------------------------
MAN
SAVE /A2OSX.SRC/SBIN/TCPIP.S
ASM