Kernel 0.92

This commit is contained in:
Rémy GIBERT 2019-01-14 16:37:56 +00:00
parent c6f0b1fa51
commit fa3964ddff
9 changed files with 119 additions and 172 deletions

Binary file not shown.

View File

@ -1,39 +0,0 @@
NEW
PREFIX
AUTO 4,1
.LIST OFF
*--------------------------------------
* PULLW = PTR to S.IPCFG
*--------------------------------------
DEV.Bind >PUSHBI 0
>LDYA L.DEVNAME
>SYSCALL open
bcc .1
inc DEVNAME+8
lda DEVNAME+8
cmp #'8'
bne DEV.Bind
>LDYA L.MSG.DEV.KO
>SYSCALL puts
lda #MLI.E.NODEV
sec
rts
.1 ldy #S.IPCFG.DevID
sta (pIPCFG),y
>PUSHW L.DEVNAME
>PUSHBI 2
>LDYA L.MSG.DEV.OK
>SYSCALL printf
clc
rts
*--------------------------------------
MAN
SAVE USR/SRC/SBIN/IPCONFIG.S.DEV
LOAD USR/SRC/SBIN/IPCONFIG.S
ASM

View File

@ -6,10 +6,6 @@ AUTO 4,1
DHCP.INIT lda (pIPCFG)
and #S.IPCFG.STATUS.OK
bne .99 Already Configured, exit
ldy #S.IPCFG.DevID
lda (pIPCFG),y
beq .98
ldy #S.IPCFG-1
@ -39,8 +35,6 @@ DHCP.INIT lda (pIPCFG)
clc
.9 rts
.98 >LDYA L.MSG.DHCP.ND
bra .90
.99 >LDYA L.MSG.DHCP.NA
.90 >SYSCALL puts

View File

@ -17,23 +17,12 @@ CFG.EtcFiles >LDYAI 256
lda IPCFG+S.IPCFG.HOSTNAME
bne .4
ldy #$ff
>PUSHW A2osX.TIMER16
>PUSHBI 2
>PUSHW L.CFG.DefaultHost
>LDYA L.IPCFG.HOSTNAME
>SYSCALL sprintf
.2 iny
lda CFG.DefaultHost,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 >LDYA L.TCPIP.CONF
jsr CFG.Read.PrintF
jsr CFG.Read.TCPIP.CONF
@ -48,8 +37,6 @@ CFG.EtcFiles >LDYAI 256
jsr CFG.Read.PrintF
jsr CFG.Read.HOSTS
>LIBCALL hLIBTCPIP,LIBTCPIP.SETCFG
lda CFG.hBuf1
>SYSCALL freemem
@ -381,36 +368,7 @@ CFG.Read.GetS >PUSHWI 255
>PUSHW ZPTmpPtr1
lda CFG.hCfgFile
>SYSCALL fgets
* bcs .9
* >LDYA ZPTmpPtr1
* >SYSCALL puts
.9 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
*--------------------------------------
* grab a copy on the fly for lib function
* OUT :
* Y,A = PTR to S.IPCFG
*--------------------------------------
GET.IPCFG >LDYA L.IPCFG
clc
rts
*--------------------------------------
MAN

View File

@ -55,9 +55,7 @@ CS.START cld
.DA CS.QUIT
L.LIBTCPIP .DA LIBTCPIP
L.MSG.USAGE .DA MSG.USAGE
L.MSG0 .DA MSG0
L.MSG0.NL .DA MSG0.NL
L.MSG0.L .DA MSG0.L
L.MSG.NODEV .DA MSG.NODEV
L.MSG1.DEV .DA MSG1.DEV
L.MSG1.DEV.ARP .DA MSG1.DEV.ARP
L.MSG1.DEV.IP .DA MSG1.DEV.IP
@ -74,9 +72,6 @@ L.MSG2.IP .DA MSG2.IP
L.MSG2.GW .DA MSG2.GW
L.MSG2.DNS .DA MSG2.DNS
L.MSG2.HOSTNAME .DA MSG2.HOSTNAME
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
@ -90,13 +85,14 @@ L.DCB.NIC .DA DCB.NIC
L.CFG.IP .DA CFG.IP
L.HST.SScanF .DA HST.SScanF
L.CFG.HOSTS.SScanF .DA CFG.HOSTS.SScanF
L.CFG.DefaultHost .DA CFG.DefaultHost
L.IPCFG.HOSTNAME .DA IPCFG+S.IPCFG.HOSTNAME
L.CFG.Keywords .DA CFG.Keywords
J.CFG.Keywords .DA CFG.Read.address
.DA CFG.Read.netmask
.DA CFG.Read.gateway
.DA CFG.Read.nameserver
.DA CFG.Read.dnsdomain
.DA 0
*--------------------------------------
* DHCP
*--------------------------------------
@ -106,10 +102,10 @@ L.MSG.DHCP.CFG1 .DA MSG.DHCP.CFG1
L.MSG.DHCP.CFG2 .DA MSG.DHCP.CFG2
L.MSG.DHCP.KO .DA MSG.DHCP.KO
L.MSG.DHCP.OK .DA MSG.DHCP.OK
L.MSG.DHCP.ND .DA MSG.DHCP.ND
L.MSG.DHCP.NA .DA MSG.DHCP.NA
L.DHCP.DISC .DA DHCP.DISC
L.DHCP.REQ .DA DHCP.REQ
.DA 0
*--------------------------------------
CS.INIT >LDYA L.LIBTCPIP
>SYSCALL LoadLib
@ -118,10 +114,24 @@ CS.INIT >LDYA L.LIBTCPIP
.9 rts
*--------------------------------------
CS.RUN
.1 >INC.G ArgCount
CS.RUN >LIBCALL hLIBTCPIP,LIBTCPIP.GETCFG
>STYA pIPCFG
ldy #S.IPCFG.DevID
lda (pIPCFG),y
bne .1
>LDYA L.MSG.NODEV
>SYSCALL puts
lda #MLI.E.NODEV
sec
rts
.1 sta IPCFG+S.IPCFG.DevID
>INC.G ArgIndex
>SYSCALL ArgV
bcs .7
bcs .4
>STYA ZPPtr1
@ -151,24 +161,28 @@ CS.RUN
sta (pData),y
bra .1
.7
*--------------------------------------
CS.RUN.STATUS >PUSHBI 0
>LDYA L.MSG0
>SYSCALL printf
.4 lda (pIPCFG) S.IPCFG.STATUS
bne CS.RUN.DUMP
>LIBCALL hLIBTCPIP,LIBTCPIP.GETCFG
>STYA pIPCFG
jsr CFG.EtcFiles
ldy #S.IPCFG.DevID
* jsr DHCP.INIT
* bcs .8
* jsr DHCP.RUN
* jsr DHCP.QUIT
.8 >PUSHW L.IPCFG
>LIBCALL hLIBTCPIP,LIBTCPIP.SETCFG
* lda #0
* sec
* rts
*--------------------------------------
CS.RUN.DUMP ldy #S.IPCFG.DevID
lda (pIPCFG),y
bne .1
>LDYA L.MSG0.NL
>SYSCALL puts
jmp CS.RUN.DONE
.1 tax
tax
lda Dev.Table,x
sta pFD
lda Dev.Table+1,x
@ -190,10 +204,7 @@ CS.RUN.STATUS >PUSHBI 0
lda (pIPCFG),y
>SYSCALL IOCTL
CS.RUN.DUMP >LDYA L.MSG0.L
>SYSCALL puts
ldy #DCB.NIC+S.DCB.NIC.MAC+5
CS.RUN.DUMPNIC ldy #DCB.NIC+S.DCB.NIC.MAC+5
ldx #6
.1 lda (pData),y
@ -360,7 +371,7 @@ CS.RUN.DUMPIP >PUSHBI 0
>LDYA L.MSG2.HOSTNAME
>SYSCALL printf
CS.RUN.DONE lda #0 tell TSKMGR that all done ok, but
lda #0 tell TSKMGR that all done ok, but
sec we do not want to stay in memory
rts
*--------------------------------------
@ -392,26 +403,27 @@ Wait.TimeOut ldy #TimeOut
lda (pData),y
rts
*--------------------------------------
.INB USR/SRC/SBIN/IPCONFIG.S.DEV
.INB USR/SRC/SBIN/IPCONFIG.S.DHCP
.INB USR/SRC/SBIN/IPCONFIG.S.ETC
*--------------------------------------
CS.END
LIBTCPIP .AZ "libtcpip2"
hLIBTCPIP .BS 1
*--------------------------------------
OptionList >PSTR "DESdes"
OptionVars .DA #bDHCP,#bETC,#bSet,#bDHCP,#bETC,#bSet
OptionList >PSTR "DEde"
OptionVars .DA #bDHCP,#bETC,#bDHCP,#bETC
*--------------------------------------
MSG.USAGE .AS "Usage : IPCONFIG <switches>\r\n"
.AS " -D : Try to get IP address from DHCP\r\n"
.AS " -E : Read ETC files\r\n"
.AZ " -S : Set/Reset TCPIP configuration (-E, then -D if required)\r\n"
*--------------------------------------
MSG0 .AZ "TCP/IP Status : "
MSG0.L .AZ "Loaded"
MSG0.NL .AZ "Not Loaded"
MSG.NODEV .AZ "TCP/IP not bound to any device."
*--------------------------------------
MSG1.DEV .AS "Device Configuration :\r\n"
IPCFG .BS S.IPCFG
IOCTL .BS S.IOCTL
*--------------------------------------
MSG1.DEV .AS "NIC Device Configuration :\r\n"
.AS " Device ID : $%h\r\n"
.AS " Device Name : %s\r\n"
.AS " Device Type : %S\r\n"
@ -433,13 +445,9 @@ MSG2.IP .AZ " IP/Mask : %d.%d.%d.%d/%d.%d.%d.%d\r\n"
MSG2.GW .AZ " Gateway : %d.%d.%d.%d\r\n"
MSG2.DNS .AZ " DNS : %d.%d.%d.%d,%d.%d.%d.%d\r\n"
MSG2.HOSTNAME .AZ " Hostname : %s.%s\r\n"
hLIBTCPIP .BS 1
*--------------------------------------
DEVNAME .AZ "/DEV/ETH1"
MSG.DEV.KO .AZ "No Device Found, exiting."
MSG.DEV.OK .AZ "Bound To Device : %s\r\n"
MSG.CFG .AZ "Reading %s..."
MSG.CFG.KO .AZ "Failed!!! [%h]\r\n"
MSG.CFG.KO .AZ "Not Found. [%h]\r\n"
MSG.CFG.OK .AZ "OK."
MSG.DNS.ADD .AZ " - Adding static host %d.%d.%d.%d %s..."
*--------------------------------------
@ -448,7 +456,7 @@ TCPIP.CONF .AZ "${ROOT}ETC/TCPIP.CONF"
HOSTS .AZ "${ROOT}ETC/HOSTS"
HST.SScanF .AZ "%d.%d.%d.%d"
*--------------------------------------
CFG.DefaultHost .AZ "a2osx-XXXX"
CFG.DefaultHost .AZ "a2osx-%H"
CFG.Keywords >PSTR "address"
>PSTR "netmask"
>PSTR "gateway"
@ -462,13 +470,11 @@ CFG.hCfgPath .BS 1
CFG.hCfgFile .BS 1
CFG.IP .BS 4
CFG.HOSTS.SScanF .AZ "%d.%d.%d.%d %s %s"
IPCFG .BS S.IPCFG
*--------------------------------------
MSG.DHCP.CFG1 .AZ "Searching for DHCP servers..."
MSG.DHCP.CFG2 .AZ "Reply from DHCP Server at %d.%d.%d.%d, requesting...\r\n"
MSG.DHCP.KO .AZ "Time Out [%h].\r\n"
MSG.DHCP.OK .AZ "Success:[IP=%d.%d.%d.%d/%d.%d.%d.%d]\r\n"
MSG.DHCP.ND .AZ "No Device, exiting."
MSG.DHCP.NA .AZ "TCPIP Already configured, exiting."
*--------------------------------------
SA.LOCAL .DA #AF.INET S.SOCKADDR.AF
@ -522,11 +528,9 @@ DHCP.REQ.LEN .EQ *-DHCP.REQ
.DUMMY
.OR 0
DS.START
ArgCount .BS 1
ArgIndex .BS 1
bDHCP .BS 1
bETC .BS 1
bSet .BS 1
IOCTL .BS S.IOCTL
DIB .BS S.DIB
DCB.NIC .BS S.DCB.NIC
TimeOut .BS 1

View File

@ -10,6 +10,12 @@ LIBETALK.GETCFG .EQ 6
LIBETALK.INCOMING .EQ 8
LIBETALK.PULSE .EQ 10
*--------------------------------------
S.ETKCFG.STATUS .EQ 0
S.ETKCFG.DevID .EQ 1
S.ETKCFG.MAC .EQ 2
*
S.ETKCFG .EQ 8
*--------------------------------------
MAN
SAVE INC/LIBETALK.I
LOAD USR/SRC/LIB/LIBETALK.S

View File

@ -10,6 +10,7 @@ AUTO 4,1
.INB INC/A2OSX.I
.INB INC/NIC.I
.INB INC/ETH.I
.INB INC/LIBETALK.I
*--------------------------------------
ZPFrameInPtr .EQ ZPLIB
ZPFrameInLen .EQ ZPLIB+2
@ -24,6 +25,7 @@ ZPDataOutPtr .EQ ZPLIB+12
ZPDataOutLen .EQ ZPLIB+14
ZPIOCTL .EQ ZPLIB+16
ZPTmpPtr1 .EQ ZPLIB+18
*--------------------------------------
* File Header (16 Bytes)
*--------------------------------------
@ -42,21 +44,36 @@ CS.START cld
.1 .DA LIB.LOAD
.DA LIB.UNLOAD
.DA SETCFG
.DA GETCFG
.DA CFG.SET
.DA CFG.GET
.DA INCOMING
.DA PULSE
*--------------------------------------
L.ETKCFG .DA ETKCFG
.DA 0
*--------------------------------------
LIB.LOAD
*--------------------------------------
LIB.UNLOAD
clc
rts
*--------------------------------------
SETCFG
CFG.SET >PULLW ZPTmpPtr1 IPCFG
ldy #0
.1 lda (ZPTmpPtr1),y
sta ETKCFG,y
iny
cpy #S.ETKCFG
bne .1
clc
rts
*--------------------------------------
GETCFG
CFG.GET >LDYA L.ETKCFG
clc
rts
*--------------------------------------
@ -64,29 +81,27 @@ INCOMING sta hFrameIn
>PULLW ZPIOCTL
ldy #S.IOCTL.BUFPTR+3
ldx #3
.1 lda (ZPIOCTL),y
sta ZPFrameInPtr,x
.1 lda (ZPIOCTL),y Get Frame Ptr & Len
sta ZPFrameInPtr-S.IOCTL.BUFPTR,y
dey
dex
bpl .1
sec
rts
*--------------------------------------
* Expire = every sec
* Retry = every 100 msec
*--------------------------------------
* A = S.EVT.F
*--------------------------------------
PULSE and #S.EVT.F.T1SEC
beq .1
beq .9
.1 clc
rts
.9 rts
*--------------------------------------
CS.END
*--------------------------------------
hFrameIn .BS 1
ETKCFG .BS S.ETKCFG
*--------------------------------------
MAN
SAVE USR/SRC/LIB/LIBETALK.S

View File

@ -189,12 +189,14 @@ LIB.UNLOAD.8 clc
rts
*--------------------------------------
INCOMING sta hFrameIn
ldx #3
>PULLW ZPTmpPtr1
ldy #S.IOCTL.BUFPTR+3
.10 lda IOCTL+S.IOCTL.BUFPTR,x Get Frame Ptr & Len
sta ZPFrameInPtr,x
dex
bpl .10
.1 lda (ZPTmpPtr1),y Get Frame Ptr & Len
sta ZPFrameInPtr-S.IOCTL.BUFPTR,y
dey
bpl .1
ldy #S.ETH.EII.TYPE
lda (ZPFrameInPtr),y
@ -203,24 +205,23 @@ INCOMING sta hFrameIn
lda (ZPFrameInPtr),y
cmp #S.ETH.EII.TYPE.ARP
bne .1
bne .2
cpx /S.ETH.EII.TYPE.ARP
bne .1
bne .2
jmp ARP.IN
.1 cmp #S.ETH.EII.TYPE.IP
.2 cmp #S.ETH.EII.TYPE.IP
bne .9
cpx /S.ETH.EII.TYPE.IP
bne .9
jmp IP.IN
.9 lda hFrameIn
>SYSCALL FreeMem
.99 rts
.9 sec
rts
*--------------------------------------
* A = S.EVT.F
* Expire = every sec
* Retry = every 100 msec
*--------------------------------------

View File

@ -18,7 +18,7 @@ AUTO 4,1
.DUMMY
.OR ZPBIN
ZS.START
* MyPtr .BS 2
pIPCFG .BS 2
ZS.END
.ED
*--------------------------------------
@ -70,7 +70,7 @@ CS.RUN >PUSHBI 0
sec
rts
.1 sta hFD
.1 sta DevID
>PUSHW L.DEVNAME
>PUSHBI 2
@ -81,6 +81,13 @@ CS.RUN >PUSHBI 0
>SYSCALL LoadLib
bcs .2
sta hLIBTCPIP
>LIBCALL hLIBTCPIP,LIBTCPIP.GETCFG
>STYA pIPCFG
ldy #S.IPCFG.DevID
lda DevID
sta (pIPCFG),y
.2 >LDYA L.LIBETALK
>SYSCALL LoadLib
@ -92,7 +99,7 @@ CS.RUN.LOOP >SLEEP
>PUSHW L.IOCTL
>PUSHBI IOCTL.READ
lda hFD
lda DevID
>SYSCALL IOCTL
bcs CS.RUN.LOOP No Frame
@ -129,6 +136,7 @@ CS.DOEVENT lda (pEvent)
.1 ldx hLIBETALK
beq .9
lda (pEvent)
>LIBCALL hLIBETALK,LIBETALK.PULSE
@ -147,7 +155,7 @@ CS.QUIT lda hLIBTCPIP
.2 >PUSHWI 0
>PUSHBI IOCTL.CLOSE
lda hFD
lda DevID
>SYSCALL IOCTL
clc
@ -156,11 +164,11 @@ CS.QUIT lda hLIBTCPIP
CS.END
*--------------------------------------
DEVNAME .AZ "/DEV/ETH1"
MSG.DEV.KO .AZ "No Device Found, exiting."
MSG.DEV.OK .AZ "Bound To Device : %s\r\n"
MSG.DEV.KO .AZ "NETWORKD:No Device Found, exiting."
MSG.DEV.OK .AZ "NETWORKD:Bound To Device : %s\r\n"
LIBTCPIP .AZ "libtcpip2"
LIBETALK .AZ "libetalk"
hFD .BS 1
DevID .BS 1
hLIBTCPIP .BS 1
hLIBETALK .BS 1
IOCTL .BS S.IOCTL