mirror of
https://github.com/A2osX/A2osX.git
synced 2024-05-31 16:41:30 +00:00
Kernel 0.9.2
This commit is contained in:
parent
6e9fe36875
commit
dc285bcbc0
Binary file not shown.
Binary file not shown.
|
@ -1,11 +1,11 @@
|
||||||
NEW
|
NEW
|
||||||
PREFIX /A2OSX.BUILD
|
PREFIX /A2OSX.BUILD
|
||||||
AUTO 4,1
|
AUTO 4,1
|
||||||
IP=192.168.1.150
|
address 192.168.1.150
|
||||||
MASK=255.255.255.0
|
netmask 255.255.255.0
|
||||||
GW=192.168.1.254
|
gateway 192.168.1.254
|
||||||
DNS1=192.168.1.2
|
nameserver 192.168.1.2
|
||||||
DNS2=192.168.1.1
|
nameserver 192.168.1.254
|
||||||
DOMAIN=coincoin.hd.free.fr
|
dnsdomain coincoin.hd.free.fr
|
||||||
MAN
|
MAN
|
||||||
TEXT ETC/TCPIP.CONF
|
TEXT ETC/TCPIP.CONF
|
||||||
|
|
|
@ -101,7 +101,7 @@ SYS.GetC .EQ $24
|
||||||
SYS.GetChar .EQ $26
|
SYS.GetChar .EQ $26
|
||||||
SYS.FPutS .EQ $28
|
SYS.FPutS .EQ $28
|
||||||
SYS.PutS .EQ $2A
|
SYS.PutS .EQ $2A
|
||||||
* .EQ $2C
|
SYS.FGetS .EQ $2C
|
||||||
* .EQ $2E
|
* .EQ $2E
|
||||||
|
|
||||||
SYS.FOpen .EQ $30
|
SYS.FOpen .EQ $30
|
||||||
|
|
|
@ -5,23 +5,43 @@ AUTO 4,1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* PULLW = PTR to S.IPCFG
|
* PULLW = PTR to S.IPCFG
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SET.IPCFG >PULLW ZPTmpPtr1 IPCFG
|
CFG.Init >LDYA L.DEVNAME
|
||||||
|
>SYSCALL GetDevByName
|
||||||
|
bcc .1
|
||||||
|
inc DEVNAME+3
|
||||||
|
lda DEVNAME+3
|
||||||
|
cmp #'8'
|
||||||
|
bne CFG.Init
|
||||||
|
|
||||||
|
>LDYA L.MSG.DEV.KO
|
||||||
|
>SYSCALL printf
|
||||||
|
|
||||||
|
lda #MLI.E.NODEV
|
||||||
|
.9 sec
|
||||||
|
rts
|
||||||
|
|
||||||
|
.1 stx IPCFG+S.IPCFG.HDEV
|
||||||
|
|
||||||
|
>PUSHW L.DEVNAME
|
||||||
|
>LDYA L.MSG.DEV.OK
|
||||||
|
>SYSCALL printf
|
||||||
|
|
||||||
|
>PUSHWI 0
|
||||||
|
>PUSHBI IOCTL.OPEN
|
||||||
|
lda IPCFG+S.IPCFG.HDEV
|
||||||
|
>SYSCALL IOCTL
|
||||||
|
bcs .9
|
||||||
|
|
||||||
>LDYA L.DCB.NIC
|
>LDYA L.DCB.NIC
|
||||||
>STYA IOCTL+S.IOCTL.BUFPTR
|
>STYA IOCTL+S.IOCTL.BUFPTR
|
||||||
lda #S.IOCTL.STATCODE.GETDCB
|
lda #S.IOCTL.STATCODE.GETDCB
|
||||||
sta IOCTL+S.IOCTL.STATCODE
|
sta IOCTL+S.IOCTL.STATCODE
|
||||||
|
|
||||||
ldx #IOCTL.STATUS
|
>PUSHW L.IOCTL
|
||||||
jsr SET.IPCFG.IOCTL
|
>PUSHBI IOCTL.STATUS
|
||||||
|
lda IPCFG+S.IPCFG.HDEV
|
||||||
ldy #0
|
>SYSCALL IOCTL
|
||||||
|
bcs .9
|
||||||
.1 lda (ZPTmpPtr1),y
|
|
||||||
sta IPCFG,y
|
|
||||||
iny
|
|
||||||
cpy #S.IPCFG
|
|
||||||
bne .1
|
|
||||||
|
|
||||||
ldx #5
|
ldx #5
|
||||||
|
|
||||||
|
@ -43,34 +63,421 @@ SET.IPCFG >PULLW ZPTmpPtr1 IPCFG
|
||||||
dex
|
dex
|
||||||
bpl .3
|
bpl .3
|
||||||
|
|
||||||
lda DCB.NIC+S.DCB.NIC.FLAGS
|
CFG.EtcFiles >LDYA L.MSG.CFG
|
||||||
and #S.DCB.NIC.FLAGS.ARPOFFLOAD
|
>SYSCALL printf
|
||||||
|
|
||||||
|
jsr CFG.Read.HOSTNAME
|
||||||
|
jsr CFG.Read.Result
|
||||||
|
|
||||||
|
lda IPCFG+S.IPCFG.HOSTNAME
|
||||||
|
bne .4
|
||||||
|
|
||||||
|
ldy #$ff
|
||||||
|
|
||||||
|
.2 iny
|
||||||
|
lda DefaultHostName,y
|
||||||
|
sta IPCFG+S.IPCFG.HOSTNAME,y
|
||||||
|
bne .2
|
||||||
|
|
||||||
|
.3 lda A2osX.TIMER16
|
||||||
|
jsr CFG.A2CharAX
|
||||||
|
sta IPCFG+S.IPCFG.HOSTNAME+6
|
||||||
|
stx IPCFG+S.IPCFG.HOSTNAME+7
|
||||||
|
|
||||||
|
lda A2osX.TIMER16+1
|
||||||
|
jsr CFG.A2CharAX
|
||||||
|
sta IPCFG+S.IPCFG.HOSTNAME+8
|
||||||
|
stx IPCFG+S.IPCFG.HOSTNAME+9
|
||||||
|
|
||||||
|
.4 >PUSHW L.TCPIP.CONF
|
||||||
|
>LDYA L.MSG.CFG
|
||||||
|
>SYSCALL printf
|
||||||
|
|
||||||
|
jsr CFG.Read.TCPIP.CONF
|
||||||
|
jsr CFG.Read.Result
|
||||||
|
|
||||||
|
>PUSHW L.HOSTS
|
||||||
|
>LDYA L.MSG.CFG
|
||||||
|
>SYSCALL printf
|
||||||
|
|
||||||
|
jsr CFG.Read.HOSTS
|
||||||
|
jsr CFG.Read.Result
|
||||||
|
|
||||||
|
jmp SET.IPCFG.I
|
||||||
|
*--------------------------------------
|
||||||
|
CFG.Read.Result bcc .1
|
||||||
|
>PUSHA
|
||||||
|
>LDYA L.MSG.CFG.KO
|
||||||
|
bra .2
|
||||||
|
.1 >LDYA L.MSG.CFG.OK
|
||||||
|
.2 >SYSCALL printf
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
CFG.Read.HOSTNAME
|
||||||
|
>LDYA L.HOSTNAME
|
||||||
|
jsr CFG.Read.LoadFile
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
* read 15 chars MAX, until CR or EOF
|
||||||
|
|
||||||
|
ldx #$15
|
||||||
|
lda CFG.FileLen+1
|
||||||
|
bne .1 File is more than 256....?
|
||||||
|
|
||||||
|
ldx CFG.FileLen
|
||||||
|
beq .9 len is 0 !!!
|
||||||
|
|
||||||
|
.1 ldy #0
|
||||||
|
|
||||||
|
.2 lda (ZPTmpPtr1),y
|
||||||
|
cmp #13
|
||||||
|
beq .8 A CR, end of name
|
||||||
|
|
||||||
|
sta IPCFG+S.IPCFG.HOSTNAME,y
|
||||||
|
iny
|
||||||
|
dex
|
||||||
|
bne .2
|
||||||
|
|
||||||
|
.8 lda #0
|
||||||
|
sta IPCFG+S.IPCFG.HOSTNAME,y
|
||||||
|
|
||||||
|
jsr CFG.Read.CleanUp
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
.9 jsr CFG.Read.CleanUp
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
CFG.Read.TCPIP.CONF
|
||||||
|
>LDYA L.TCPIP.CONF
|
||||||
|
jsr CFG.Read.LoadFile
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
.1 jsr CFG.GetLine
|
||||||
|
bcs .8
|
||||||
|
|
||||||
|
jsr CFG.GetKeyword
|
||||||
|
bcs .1
|
||||||
|
|
||||||
|
lda CFG.Keyword
|
||||||
|
bne .3
|
||||||
|
|
||||||
|
ldy UsrBuf256
|
||||||
|
|
||||||
|
lda UsrBuf256+1,y
|
||||||
|
cmp #35 DOMAIN too long!!!
|
||||||
|
bcs .1
|
||||||
|
|
||||||
|
sta IPCFG+S.IPCFG.DOMAIN
|
||||||
|
ldx #0
|
||||||
|
|
||||||
|
.2 lda UsrBuf256+2,y
|
||||||
|
sta IPCFG+S.IPCFG.DOMAIN,x
|
||||||
|
beq .1
|
||||||
|
inx
|
||||||
|
iny
|
||||||
|
bne .2
|
||||||
|
bra .1
|
||||||
|
|
||||||
|
.9 jsr CFG.Read.CleanUp
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
|
||||||
|
.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
|
||||||
|
|
||||||
|
.8 jsr CFG.Read.CleanUp
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
CFG.Read.HOSTS >LDYA L.HOSTS
|
||||||
|
|
||||||
|
jsr CFG.Read.LoadFile
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
|
||||||
|
.8 jsr CFG.Read.CleanUp
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
.9 jsr CFG.Read.CleanUp
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
CFG.Read.LoadFile
|
||||||
|
stz CFG.hCfgFile
|
||||||
|
stz CFG.hCfgPath
|
||||||
|
|
||||||
|
>SYSCALL ExpandStr
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
stx CFG.hCfgPath
|
||||||
|
pha
|
||||||
|
|
||||||
|
>PUSHWI 0 Aux type
|
||||||
|
>PUSHBI 4 S.FI.T.TXT
|
||||||
|
>PUSHBI SYS.FOpen.R
|
||||||
|
pla
|
||||||
|
>SYSCALL LoadFile
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
stx CFG.hCfgFile
|
||||||
|
>STYA CFG.FileLen
|
||||||
|
txa
|
||||||
|
>SYSCALL GetMemPtr
|
||||||
|
>STYA ZPTmpPtr1
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
CFG.Read.CleanUp
|
||||||
|
pha
|
||||||
|
lda CFG.hCfgPath
|
||||||
|
beq .1
|
||||||
|
>SYSCALL FreeMem
|
||||||
|
|
||||||
|
.1 lda CFG.hCfgFile
|
||||||
|
beq .8
|
||||||
|
>SYSCALL FreeMem
|
||||||
|
|
||||||
|
.8 pla
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
CFG.GetLine stz UsrBuf256
|
||||||
|
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 UsrBuf256,x
|
||||||
|
cmp #'='
|
||||||
|
bne .3
|
||||||
|
txa
|
||||||
|
dec
|
||||||
|
tay
|
||||||
|
.3 cpx #64 line too long ?
|
||||||
|
bne .1
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
|
||||||
|
.8 tya = found ?
|
||||||
|
beq .9
|
||||||
|
|
||||||
|
sta UsrBuf256
|
||||||
|
txa
|
||||||
|
sec
|
||||||
|
sbc UsrBuf256
|
||||||
|
sta UsrBuf256+1,y
|
||||||
|
stz UsrBuf256+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 (ZPTmpPtr1)
|
||||||
|
inc ZPTmpPtr1
|
||||||
|
bne .9
|
||||||
|
inc ZPTmpPtr1+1 NZ
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
CFG.GetKeyword stz CFG.Keyword
|
||||||
|
|
||||||
|
ldx #0
|
||||||
|
|
||||||
|
.1 phx
|
||||||
|
ldy #0
|
||||||
|
|
||||||
|
.2 lda CFG.Keywords,x
|
||||||
|
cmp UsrBuf256,y
|
||||||
|
bne .3
|
||||||
|
cpy UsrBuf256
|
||||||
beq .4
|
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 UsrBuf256
|
||||||
|
|
||||||
|
.1 ldy #0
|
||||||
|
.11 lda UsrBuf256+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 UsrBuf256+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
|
||||||
|
*--------------------------------------
|
||||||
|
CFG.A2CharAX pha
|
||||||
|
lsr
|
||||||
|
lsr
|
||||||
|
lsr
|
||||||
|
lsr
|
||||||
|
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
|
||||||
|
*--------------------------------------
|
||||||
|
SET.IPCFG >PULLW ZPTmpPtr1 IPCFG
|
||||||
|
|
||||||
|
ldy #0
|
||||||
|
|
||||||
|
.1 lda (ZPTmpPtr1),y
|
||||||
|
sta IPCFG,y
|
||||||
|
iny
|
||||||
|
cpy #S.IPCFG
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
SET.IPCFG.I lda DCB.NIC+S.DCB.NIC.FLAGS
|
||||||
|
and #S.DCB.NIC.FLAGS.ARPOFFLOAD
|
||||||
|
beq .2
|
||||||
|
|
||||||
ldx #11
|
ldx #11
|
||||||
|
|
||||||
.31 lda IPCFG+S.IPCFG.IP,x
|
.1 lda IPCFG+S.IPCFG.IP,x
|
||||||
sta DCB.NIC+S.DCB.NIC.IP,x
|
sta DCB.NIC+S.DCB.NIC.IP,x
|
||||||
dex
|
dex
|
||||||
bpl .31
|
bpl .1
|
||||||
|
|
||||||
* lda S.IOCTL.CTRLCODE.SETDCB same as lda S.IOCTL.STATCODE.GETDCB
|
lda S.IOCTL.CTRLCODE.SETDCB
|
||||||
* sta S.IOCTL.CTRLCODE same as sta S.IOCTL.STATCODE
|
sta S.IOCTL.CTRLCODE
|
||||||
|
|
||||||
ldx #IOCTL.CONTROL
|
>PUSHW L.IOCTL
|
||||||
jsr SET.IPCFG.IOCTL
|
>PUSHBI IOCTL.CONTROL
|
||||||
|
lda IPCFG+S.IPCFG.HDEV
|
||||||
|
>SYSCALL IOCTL
|
||||||
|
bcs .9
|
||||||
|
|
||||||
.4 lda hDNSSocket1
|
.2 lda hDNSSocket1
|
||||||
beq .41
|
beq .3
|
||||||
jsr SKT.Close
|
jsr SKT.Close
|
||||||
stz hDNSSocket1
|
stz hDNSSocket1
|
||||||
|
|
||||||
.41 lda hDNSSocket2
|
.3 lda hDNSSocket2
|
||||||
beq .42
|
beq .4
|
||||||
jsr SKT.Close
|
jsr SKT.Close
|
||||||
stz hDNSSocket2
|
stz hDNSSocket2
|
||||||
|
|
||||||
.42 lda IPCFG+S.IPCFG.DNS1
|
.4 lda IPCFG+S.IPCFG.DNS1
|
||||||
beq .6
|
beq .6
|
||||||
|
|
||||||
ldx #3
|
ldx #3
|
||||||
|
@ -110,13 +517,6 @@ SET.IPCFG >PULLW ZPTmpPtr1 IPCFG
|
||||||
|
|
||||||
.8 clc
|
.8 clc
|
||||||
.9 rts
|
.9 rts
|
||||||
|
|
||||||
SET.IPCFG.IOCTL >PUSHW L.IOCTL
|
|
||||||
txa
|
|
||||||
>PUSHA
|
|
||||||
lda IPCFG+S.IPCFG.HDEV
|
|
||||||
>SYSCALL IOCTL
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* grab a copy on the fly for lib function
|
* grab a copy on the fly for lib function
|
||||||
* OUT :
|
* OUT :
|
||||||
|
|
|
@ -83,6 +83,15 @@ CS.START cld
|
||||||
.DA SKT.Read
|
.DA SKT.Read
|
||||||
.DA SKT.ReadFrame
|
.DA SKT.ReadFrame
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
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
|
L.IPCFG .DA IPCFG
|
||||||
L.ARP.REQ .DA ARP.REQ
|
L.ARP.REQ .DA ARP.REQ
|
||||||
L.ARP.REP .DA ARP.REP
|
L.ARP.REP .DA ARP.REP
|
||||||
|
@ -110,9 +119,14 @@ L.TCP.IN.JMP .DA TCP.IN.JMP.CLOSED
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
LIB.LOAD ldx RefCount
|
LIB.LOAD ldx RefCount
|
||||||
bne .8
|
bne .8
|
||||||
|
|
||||||
sta FD.SSOCK+S.FD.HANDLER
|
sta FD.SSOCK+S.FD.HANDLER
|
||||||
|
|
||||||
|
jsr CFG.Init
|
||||||
|
bcs .9
|
||||||
|
|
||||||
jsr ARP.CLEAR
|
jsr ARP.CLEAR
|
||||||
|
|
||||||
jsr DNS.CLEAR
|
jsr DNS.CLEAR
|
||||||
|
|
||||||
>LDYAI K.SKTTABLE.SIZE*S.SOCKET
|
>LDYAI K.SKTTABLE.SIZE*S.SOCKET
|
||||||
|
@ -122,13 +136,22 @@ LIB.LOAD ldx RefCount
|
||||||
stx hSocketTable
|
stx hSocketTable
|
||||||
|
|
||||||
.8 inc RefCount
|
.8 inc RefCount
|
||||||
|
|
||||||
clc
|
clc
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
LIB.UNLOAD dec RefCount
|
LIB.UNLOAD dec RefCount
|
||||||
bne LIB.UNLOAD.8
|
bne LIB.UNLOAD.8
|
||||||
|
|
||||||
lda hSocketTable
|
lda IPCFG+S.IPCFG.HDEV
|
||||||
|
beq .1
|
||||||
|
|
||||||
|
>PUSHWI 0
|
||||||
|
>PUSHBI IOCTL.CLOSE
|
||||||
|
lda IPCFG+S.IPCFG.HDEV
|
||||||
|
>SYSCALL IOCTL
|
||||||
|
|
||||||
|
.1 lda hSocketTable
|
||||||
beq LIB.UNLOAD.8
|
beq LIB.UNLOAD.8
|
||||||
|
|
||||||
>SYSCALL FreeMem
|
>SYSCALL FreeMem
|
||||||
|
@ -224,6 +247,53 @@ GetDynPort inc DYNPORT.LAST
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.END
|
CS.END
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
DEVNAME .AZ "ETH1"
|
||||||
|
MSG.DEV.KO .AZ "TCPIPD:No Device Found, exiting.\r\n"
|
||||||
|
MSG.DEV.OK .AZ "TCPIPD:Bound To Device : %s\r\n"
|
||||||
|
MSG.CFG .AZ "TCPIPD:Reading %s..."
|
||||||
|
MSG.CFG.KO .AZ "Failed!!! [%h]\r\n"
|
||||||
|
MSG.CFG.OK .AZ "OK.\r\n"
|
||||||
|
*--------------------------------------
|
||||||
|
HOSTNAME .AZ "${A2OSX}ETC/HOSTNAME"
|
||||||
|
TCPIP.CONF .AZ "${A2OSX}ETC/TCPIP.CONF"
|
||||||
|
HOSTS .AZ "${A2OSX}ETC/HOSTS"
|
||||||
|
DefaultHostName .AZ "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
|
||||||
|
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
|
||||||
|
UsrBuf256 .BS 256
|
||||||
|
*--------------------------------------
|
||||||
|
FD.SSOCK .BS 1 S.FD.HANDLER
|
||||||
|
.DA #S.FD.T.SSOCK
|
||||||
|
.BS 1 S.FD.SSOCK.HSKT
|
||||||
|
.DA #0 S.FD.SSOCK.OPEN
|
||||||
|
.DA #0 S.FD.SSOCK.CLOSE
|
||||||
|
.DA #0
|
||||||
|
.DA #0
|
||||||
|
.DA #0 S.FD.SSOCK.STATUS
|
||||||
|
*--------------------------------------
|
||||||
|
IOCTL .BS S.IOCTL
|
||||||
|
DCB.NIC .BS S.DCB.NIC
|
||||||
|
IPCFG .BS S.IPCFG
|
||||||
|
ARP.CACHE .BS K.ARPCACHE.SIZE*S.ARPCACHE
|
||||||
|
DNS.CACHE .BS K.DNSCACHE.SIZE*S.DNSCACHE
|
||||||
|
*--------------------------------------
|
||||||
ARP.REQ .DA S.ARP Frame size
|
ARP.REQ .DA S.ARP Frame size
|
||||||
ARP.REQ.DSTMAC .HS FFFFFFFFFFFF
|
ARP.REQ.DSTMAC .HS FFFFFFFFFFFF
|
||||||
ARP.REQ.SRCMAC .BS 6
|
ARP.REQ.SRCMAC .BS 6
|
||||||
|
@ -266,9 +336,6 @@ DNS.MSG.ID .BS 2
|
||||||
.BS 6 ANCOUNT,NSCOUNT,ARCOUNT
|
.BS 6 ANCOUNT,NSCOUNT,ARCOUNT
|
||||||
DNS.MSG.NAME .BS K.DNS.MAXLEN+6
|
DNS.MSG.NAME .BS K.DNS.MAXLEN+6
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
IPCFG .BS S.IPCFG
|
|
||||||
ARP.CACHE .BS K.ARPCACHE.SIZE*S.ARPCACHE
|
|
||||||
DNS.CACHE .BS K.DNSCACHE.SIZE*S.DNSCACHE
|
|
||||||
FRM.QUEUE.Tail .BS 1
|
FRM.QUEUE.Tail .BS 1
|
||||||
FRM.QUEUE.Head .BS 1
|
FRM.QUEUE.Head .BS 1
|
||||||
FRM.QUEUE.hMem .BS K.FRMQUEUE.SIZE
|
FRM.QUEUE.hMem .BS K.FRMQUEUE.SIZE
|
||||||
|
@ -296,16 +363,6 @@ bTextMode .BS 1
|
||||||
HST.SScanF .AZ "%d.%d.%d.%d"
|
HST.SScanF .AZ "%d.%d.%d.%d"
|
||||||
IP.ID .BS 2
|
IP.ID .BS 2
|
||||||
IP.CHECKSUM .BS 4
|
IP.CHECKSUM .BS 4
|
||||||
FD.SSOCK .BS 1 S.FD.HANDLER
|
|
||||||
.DA #S.FD.T.SSOCK
|
|
||||||
.BS 1 S.FD.SSOCK.HSKT
|
|
||||||
.DA #0 S.FD.SSOCK.OPEN
|
|
||||||
.DA #0 S.FD.SSOCK.CLOSE
|
|
||||||
.DA #0
|
|
||||||
.DA #0
|
|
||||||
.DA #0 S.FD.SSOCK.STATUS
|
|
||||||
IOCTL .BS S.IOCTL
|
|
||||||
DCB.NIC .BS S.DCB.NIC
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE /A2OSX.SRC/LIB/LIBTCPIP.S
|
SAVE /A2OSX.SRC/LIB/LIBTCPIP.S
|
||||||
|
|
|
@ -1,381 +0,0 @@
|
||||||
NEW
|
|
||||||
PREFIX /A2OSX.BUILD
|
|
||||||
AUTO 4,1
|
|
||||||
.LIST OFF
|
|
||||||
*--------------------------------------
|
|
||||||
CFG.Read >PUSHW L.HOSTNAME
|
|
||||||
>LDYA L.MSG.CFG
|
|
||||||
>SYSCALL printf
|
|
||||||
|
|
||||||
jsr CFG.Read.HOSTNAME
|
|
||||||
jsr CFG.Read.Result
|
|
||||||
|
|
||||||
lda IPCFG+S.IPCFG.HOSTNAME
|
|
||||||
bne .4
|
|
||||||
|
|
||||||
ldy #$ff
|
|
||||||
|
|
||||||
.2 iny
|
|
||||||
lda DefaultHostName,y
|
|
||||||
sta IPCFG+S.IPCFG.HOSTNAME,y
|
|
||||||
bne .2
|
|
||||||
|
|
||||||
.3 lda A2osX.TIMER16
|
|
||||||
jsr CFG.A2CharAX
|
|
||||||
sta IPCFG+S.IPCFG.HOSTNAME+6
|
|
||||||
stx IPCFG+S.IPCFG.HOSTNAME+7
|
|
||||||
|
|
||||||
lda A2osX.TIMER16+1
|
|
||||||
jsr CFG.A2CharAX
|
|
||||||
sta IPCFG+S.IPCFG.HOSTNAME+8
|
|
||||||
stx IPCFG+S.IPCFG.HOSTNAME+9
|
|
||||||
|
|
||||||
.4 >PUSHW L.TCPIP.CONF
|
|
||||||
>LDYA L.MSG.CFG
|
|
||||||
>SYSCALL printf
|
|
||||||
|
|
||||||
jsr CFG.Read.TCPIP.CONF
|
|
||||||
jsr CFG.Read.Result
|
|
||||||
|
|
||||||
>PUSHW L.HOSTS
|
|
||||||
>LDYA L.MSG.CFG
|
|
||||||
>SYSCALL printf
|
|
||||||
|
|
||||||
jsr CFG.Read.HOSTS
|
|
||||||
*--------------------------------------
|
|
||||||
CFG.Read.Result bcc .1
|
|
||||||
>PUSHA
|
|
||||||
>LDYA L.MSG.CFG.KO
|
|
||||||
bra .2
|
|
||||||
.1 >LDYA L.MSG.CFG.OK
|
|
||||||
.2 >SYSCALL printf
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
CFG.Read.HOSTNAME
|
|
||||||
>LDYA L.HOSTNAME
|
|
||||||
jsr CFG.Read.LoadFile
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
* read 15 chars MAX, until CR or EOF
|
|
||||||
|
|
||||||
ldx #$15
|
|
||||||
lda CFG.FileLen+1
|
|
||||||
bne .1 File is more than 256....?
|
|
||||||
|
|
||||||
ldx CFG.FileLen
|
|
||||||
beq .9 len is 0 !!!
|
|
||||||
|
|
||||||
.1 ldy #0
|
|
||||||
|
|
||||||
.2 lda (ZPIPCfgPtr),y
|
|
||||||
cmp #13
|
|
||||||
beq .8 A CR, end of name
|
|
||||||
|
|
||||||
sta IPCFG+S.IPCFG.HOSTNAME,y
|
|
||||||
iny
|
|
||||||
dex
|
|
||||||
bne .2
|
|
||||||
|
|
||||||
.8 lda #0
|
|
||||||
sta IPCFG+S.IPCFG.HOSTNAME,y
|
|
||||||
|
|
||||||
jsr CFG.Read.CleanUp
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
|
|
||||||
.9 jsr CFG.Read.CleanUp
|
|
||||||
sec
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
CFG.Read.TCPIP.CONF
|
|
||||||
>LDYA L.TCPIP.CONF
|
|
||||||
jsr CFG.Read.LoadFile
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
.1 jsr CFG.GetLine
|
|
||||||
bcs .8
|
|
||||||
|
|
||||||
jsr CFG.GetKeyword
|
|
||||||
bcs .1
|
|
||||||
|
|
||||||
lda CFG.Keyword
|
|
||||||
bne .3
|
|
||||||
|
|
||||||
ldy UsrBuf256
|
|
||||||
|
|
||||||
lda UsrBuf256+1,y
|
|
||||||
cmp #35 DOMAIN too long!!!
|
|
||||||
bcs .1
|
|
||||||
|
|
||||||
sta IPCFG+S.IPCFG.DOMAIN
|
|
||||||
ldx #0
|
|
||||||
|
|
||||||
.2 lda UsrBuf256+2,y
|
|
||||||
sta IPCFG+S.IPCFG.DOMAIN,x
|
|
||||||
beq .1
|
|
||||||
inx
|
|
||||||
iny
|
|
||||||
bne .2
|
|
||||||
bra .1
|
|
||||||
|
|
||||||
.9 jsr CFG.Read.CleanUp
|
|
||||||
sec
|
|
||||||
rts
|
|
||||||
|
|
||||||
.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
|
|
||||||
|
|
||||||
.8 jsr CFG.Read.CleanUp
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
CFG.Read.HOSTS >LDYA L.HOSTS
|
|
||||||
|
|
||||||
jsr CFG.Read.LoadFile
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
|
|
||||||
.8 jsr CFG.Read.CleanUp
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
|
|
||||||
.9 jsr CFG.Read.CleanUp
|
|
||||||
sec
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
CFG.Read.LoadFile
|
|
||||||
stz CFG.hCfgFile
|
|
||||||
stz CFG.hCfgPath
|
|
||||||
|
|
||||||
>SYSCALL ExpandStr
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
stx CFG.hCfgPath
|
|
||||||
pha
|
|
||||||
|
|
||||||
>PUSHWI 0 Aux type
|
|
||||||
>PUSHBI 4 S.FI.T.TXT
|
|
||||||
>PUSHBI SYS.FOpen.R
|
|
||||||
pla
|
|
||||||
>SYSCALL LoadFile
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
stx CFG.hCfgFile
|
|
||||||
>STYA CFG.FileLen
|
|
||||||
txa
|
|
||||||
>SYSCALL GetMemPtr
|
|
||||||
>STYA ZPIPCfgPtr
|
|
||||||
.9 rts
|
|
||||||
*--------------------------------------
|
|
||||||
CFG.Read.CleanUp
|
|
||||||
pha
|
|
||||||
lda CFG.hCfgPath
|
|
||||||
beq .1
|
|
||||||
>SYSCALL FreeMem
|
|
||||||
|
|
||||||
.1 lda CFG.hCfgFile
|
|
||||||
beq .8
|
|
||||||
>SYSCALL FreeMem
|
|
||||||
|
|
||||||
.8 pla
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
CFG.GetLine stz UsrBuf256
|
|
||||||
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 UsrBuf256,x
|
|
||||||
cmp #'='
|
|
||||||
bne .3
|
|
||||||
txa
|
|
||||||
dec
|
|
||||||
tay
|
|
||||||
.3 cpx #64 line too long ?
|
|
||||||
bne .1
|
|
||||||
sec
|
|
||||||
rts
|
|
||||||
|
|
||||||
.8 tya = found ?
|
|
||||||
beq .9
|
|
||||||
|
|
||||||
sta UsrBuf256
|
|
||||||
txa
|
|
||||||
sec
|
|
||||||
sbc UsrBuf256
|
|
||||||
sta UsrBuf256+1,y
|
|
||||||
stz UsrBuf256+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 UsrBuf256,y
|
|
||||||
bne .3
|
|
||||||
cpy UsrBuf256
|
|
||||||
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 UsrBuf256
|
|
||||||
|
|
||||||
.1 ldy #0
|
|
||||||
.11 lda UsrBuf256+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 UsrBuf256+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
|
|
||||||
*--------------------------------------
|
|
||||||
CFG.A2CharAX pha
|
|
||||||
lsr
|
|
||||||
lsr
|
|
||||||
lsr
|
|
||||||
lsr
|
|
||||||
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
|
|
||||||
*--------------------------------------
|
|
||||||
MAN
|
|
||||||
SAVE /A2OSX.SRC/SBIN/TCPIPD.S.CFG
|
|
||||||
LOAD /A2OSX.SRC/SBIN/TCPIPD.S
|
|
||||||
ASM
|
|
|
@ -35,16 +35,6 @@ CS.START cld
|
||||||
.DA CS.DOEVENT
|
.DA CS.DOEVENT
|
||||||
.DA CS.QUIT
|
.DA CS.QUIT
|
||||||
L.LIBTCPIP .DA LIBTCPIP
|
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
|
.DA 0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.INIT >LDYA L.LIBTCPIP
|
CS.INIT >LDYA L.LIBTCPIP
|
||||||
|
@ -52,14 +42,6 @@ CS.INIT >LDYA L.LIBTCPIP
|
||||||
bcs .99
|
bcs .99
|
||||||
sta hLIBTCPIP
|
sta hLIBTCPIP
|
||||||
|
|
||||||
jsr CS.INIT.DEV
|
|
||||||
bcs .99
|
|
||||||
|
|
||||||
jsr CFG.Read continue even if error opening CFG file
|
|
||||||
|
|
||||||
>PUSHW L.IPCFG
|
|
||||||
>LIBCALL hLIBTCPIP,LIBTCPIP.SET.IPCFG
|
|
||||||
|
|
||||||
lda (pPs)
|
lda (pPs)
|
||||||
ora #S.PS.F.EVENT Now accept events
|
ora #S.PS.F.EVENT Now accept events
|
||||||
sta (pPs)
|
sta (pPs)
|
||||||
|
@ -67,38 +49,6 @@ CS.INIT >LDYA L.LIBTCPIP
|
||||||
clc
|
clc
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.INIT.DEV >LDYA L.DEVNAME
|
|
||||||
>SYSCALL GetDevByName
|
|
||||||
bcc .1
|
|
||||||
inc DEVNAME+3
|
|
||||||
lda DEVNAME+3
|
|
||||||
cmp #'8'
|
|
||||||
bne CS.INIT.DEV
|
|
||||||
|
|
||||||
>LDYA L.MSG.DEV.KO
|
|
||||||
>SYSCALL printf
|
|
||||||
|
|
||||||
lda #MLI.E.NODEV
|
|
||||||
sec
|
|
||||||
rts
|
|
||||||
|
|
||||||
.1 txa
|
|
||||||
>STA.G hDev
|
|
||||||
sta IPCFG+S.IPCFG.HDEV
|
|
||||||
|
|
||||||
>PUSHW L.DEVNAME
|
|
||||||
>LDYA L.MSG.DEV.OK
|
|
||||||
>SYSCALL printf
|
|
||||||
|
|
||||||
>PUSHWI 0
|
|
||||||
>PUSHBI IOCTL.OPEN
|
|
||||||
>LDA.G hDev
|
|
||||||
>SYSCALL IOCTL
|
|
||||||
rts
|
|
||||||
|
|
||||||
.9 sec
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
CS.RUN >LIBCALL hLIBTCPIP,LIBTCPIP.POLL
|
CS.RUN >LIBCALL hLIBTCPIP,LIBTCPIP.POLL
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
@ -110,62 +60,19 @@ CS.DOEVENT lda (pEvent)
|
||||||
.9 sec never discard TIME event
|
.9 sec never discard TIME event
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.QUIT >LDA.G hDev
|
CS.QUIT lda hLIBTCPIP
|
||||||
beq .1
|
|
||||||
|
|
||||||
>PUSHWI 0
|
|
||||||
>PUSHBI IOCTL.CLOSE
|
|
||||||
>LDA.G hDev
|
|
||||||
>SYSCALL IOCTL
|
|
||||||
|
|
||||||
.1 lda hLIBTCPIP
|
|
||||||
>SYSCALL UnloadLib
|
>SYSCALL UnloadLib
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
|
||||||
.INB /A2OSX.SRC/SBIN/TCPIPD.S.CFG
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.END
|
CS.END
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
LIBTCPIP .AZ "libtcpip.o"
|
LIBTCPIP .AZ "libtcpip.o"
|
||||||
DEVNAME .AZ "ETH1"
|
|
||||||
MSG.DEV.KO .AZ "TCPIPD:No Device Found, exiting.\r\n"
|
|
||||||
MSG.DEV.OK .AZ "TCPIPD:Bound To Device : %s\r\n"
|
|
||||||
MSG.CFG .AZ "TCPIPD:Reading %s..."
|
|
||||||
MSG.CFG.KO .AZ "Failed!!! [%h]\r\n"
|
|
||||||
MSG.CFG.OK .AZ "OK.\r\n"
|
|
||||||
*--------------------------------------
|
|
||||||
HOSTNAME .AZ "${A2OSX}ETC/HOSTNAME"
|
|
||||||
TCPIP.CONF .AZ "${A2OSX}ETC/TCPIP.CONF"
|
|
||||||
HOSTS .AZ "${A2OSX}ETC/HOSTS"
|
|
||||||
DefaultHostName .AZ "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
|
hLIBTCPIP .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
|
|
||||||
UsrBuf256 .BS 256
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.DUMMY
|
.DUMMY
|
||||||
.OR 0
|
.OR 0
|
||||||
DS.START
|
DS.START
|
||||||
hDev .BS 1
|
|
||||||
DS.END .ED
|
DS.END .ED
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
|
|
|
@ -70,7 +70,7 @@ K.PutS >STYA K.S.IOCTL+S.IOCTL.BUFPTR
|
||||||
* # FPutS
|
* # FPutS
|
||||||
* Write Str to FILE
|
* Write Str to FILE
|
||||||
* ## C
|
* ## C
|
||||||
* `int fputs ( const char * str, hFILE stream );`
|
* `int fputs (hFILE stream, const char * str );`
|
||||||
* **In:**
|
* **In:**
|
||||||
* PUSHB : hFILE
|
* PUSHB : hFILE
|
||||||
* Y,A: str
|
* Y,A: str
|
||||||
|
@ -100,6 +100,28 @@ K.FPutS.I jsr IO.SELECT
|
||||||
stx K.S.IOCTL+S.IOCTL.BYTECNT+1
|
stx K.S.IOCTL+S.IOCTL.BYTECNT+1
|
||||||
jmp IO.Write.I
|
jmp IO.Write.I
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
|
* # FGetS
|
||||||
|
* read bytes from stream into the array
|
||||||
|
* pointed to by s, until n-1 bytes are read, or a <newline> is read and
|
||||||
|
* transferred to s, or an end-of-file condition is encountered. The
|
||||||
|
* string is then terminated with a null byte.
|
||||||
|
* ## C
|
||||||
|
* `char *fgets(hFILE stream, char * s, int n);`
|
||||||
|
* ## ASM
|
||||||
|
* **In:**
|
||||||
|
* `>PUSHW n`
|
||||||
|
* `>PUSHW s`
|
||||||
|
* `lda hFILE`
|
||||||
|
* `>SYSCALL fgets`
|
||||||
|
* **Out:**
|
||||||
|
* Y,A: s
|
||||||
|
* CC = success
|
||||||
|
*\--------------------------------------
|
||||||
|
K.FGetS
|
||||||
|
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
*/--------------------------------------
|
||||||
* # PrintF/SPrintF/FPrintF
|
* # PrintF/SPrintF/FPrintF
|
||||||
* Prints C-Style String
|
* Prints C-Style String
|
||||||
* ## C
|
* ## C
|
||||||
|
@ -642,6 +664,7 @@ BCDBUF .EQ ARG
|
||||||
* + %U : dword
|
* + %U : dword
|
||||||
* + %h : HEX byte
|
* + %h : HEX byte
|
||||||
* + %H : HEX word
|
* + %H : HEX word
|
||||||
|
* + %s : string
|
||||||
* `>PUSHW ptr`
|
* `>PUSHW ptr`
|
||||||
* `...`
|
* `...`
|
||||||
* `>PUSHBI bytecount`
|
* `>PUSHBI bytecount`
|
||||||
|
@ -681,12 +704,11 @@ K.SScanF >STYA ZPPtr2 String to Scan
|
||||||
bne .21
|
bne .21
|
||||||
inc ZPPtr1+1
|
inc ZPPtr1+1
|
||||||
|
|
||||||
.21 ldx #K.SScanFJMP-K.SScanFTBL-2
|
.21 ldx #K.SScanFCNT-K.SScanFTBL-1
|
||||||
|
|
||||||
.3 cmp K.SScanFTBL,x
|
.3 cmp K.SScanFTBL,x
|
||||||
beq .4
|
beq .4
|
||||||
dex
|
dex
|
||||||
dex
|
|
||||||
bpl .3
|
bpl .3
|
||||||
|
|
||||||
.9 jsr .8
|
.9 jsr .8
|
||||||
|
@ -717,13 +739,13 @@ K.SScanF >STYA ZPPtr2 String to Scan
|
||||||
iny
|
iny
|
||||||
sty K.SScanF.ByteIdx
|
sty K.SScanF.ByteIdx
|
||||||
|
|
||||||
lda K.SScanFTBL+1,x Get VAR size
|
|
||||||
jmp (K.SScanFJMP,x)
|
jmp (K.SScanFJMP,x)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
K.SScanF.ByteCnt .BS 1
|
K.SScanF.ByteCnt .BS 1
|
||||||
K.SScanF.ByteIdx .BS 1
|
K.SScanF.ByteIdx .BS 1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
K.SScanFTBL .DA #'i,#1,#'d,#1,#'I,#2,#'D,#2,#'l,#4,#'u,#4,#'h,#1,#'H,#2
|
K.SScanFTBL .DA #'i,#'d,#'I,#'D,#'l,#'u,#'h,#'H,#'s
|
||||||
|
K.SScanFCNT .DA #1, #1, #2, #2, #4, #4, #1, #2
|
||||||
K.SScanFJMP .DA K.SScanF.I
|
K.SScanFJMP .DA K.SScanF.I
|
||||||
.DA K.SScanF.D
|
.DA K.SScanF.D
|
||||||
.DA K.SScanF.II
|
.DA K.SScanF.II
|
||||||
|
@ -732,28 +754,26 @@ K.SScanFJMP .DA K.SScanF.I
|
||||||
.DA K.SScanF.U
|
.DA K.SScanF.U
|
||||||
.DA K.SScanF.H
|
.DA K.SScanF.H
|
||||||
.DA K.SScanF.HH
|
.DA K.SScanF.HH
|
||||||
|
.DA K.SScanF.S
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
K.SScanF.I
|
K.SScanF.I
|
||||||
K.SScanF.D
|
K.SScanF.D
|
||||||
K.SScanF.II
|
K.SScanF.II
|
||||||
K.SScanF.DD
|
K.SScanF.DD
|
||||||
K.SScanF.L
|
K.SScanF.L
|
||||||
K.SScanF.U pha Save VAL size
|
K.SScanF.U lda K.SScanFTBL+1,x Get VAR size
|
||||||
|
pha Save VAL size
|
||||||
|
|
||||||
jsr STDLIB.GetDec
|
jsr STDLIB.GetDec
|
||||||
bra K.SScanF.GetVAL
|
bra K.SScanF.GetVAL
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
K.SScanF.HH
|
K.SScanF.HH
|
||||||
K.SScanF.H pha
|
K.SScanF.H lda K.SScanFTBL+1,x Get VAR size
|
||||||
|
pha
|
||||||
|
|
||||||
jsr STDLIB.GetHex
|
jsr STDLIB.GetHex
|
||||||
|
|
||||||
K.SScanF.GetVAL tya Y=char count parsed
|
K.SScanF.GetVAL jsr K.SScanF.Fwd Y=char count parsed
|
||||||
clc
|
|
||||||
adc ZPPtr2
|
|
||||||
sta ZPPtr2
|
|
||||||
bcc .1
|
|
||||||
inc ZPPtr2+1
|
|
||||||
|
|
||||||
.1 ply get back VAL size
|
.1 ply get back VAL size
|
||||||
|
|
||||||
|
@ -763,6 +783,24 @@ K.SScanF.GetVAL tya Y=char count parsed
|
||||||
bne .2
|
bne .2
|
||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
K.SScanF.S ldy #$ff
|
||||||
|
|
||||||
|
.1 iny
|
||||||
|
lda (ZPPtr2),y
|
||||||
|
sta (ZPPtr3),y
|
||||||
|
beq K.SScanF.Fwd
|
||||||
|
cmp #' '
|
||||||
|
bne .1
|
||||||
|
iny
|
||||||
|
|
||||||
|
K.SScanF.Fwd tya Y=char count parsed
|
||||||
|
clc
|
||||||
|
adc ZPPtr2
|
||||||
|
sta ZPPtr2
|
||||||
|
bcc .8
|
||||||
|
inc ZPPtr2+1
|
||||||
|
.8 rts
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # FOpen
|
* # FOpen
|
||||||
* Open a file
|
* Open a file
|
||||||
|
|
Loading…
Reference in New Issue
Block a user