mirror of
https://github.com/A2osX/A2osX.git
synced 2025-01-11 10:29:46 +00:00
Kernel 0.92
This commit is contained in:
parent
145217f291
commit
6480b38e1a
Binary file not shown.
@ -26,7 +26,7 @@
|
||||
<Keywords name="Folders in comment, close"></Keywords>
|
||||
<Keywords name="Keywords1">.BS
.DA
.AS
.AT
.AZ
.EQ
.MA
.EM
.OR
.TF
.LIST
.HS
.IN
.INB
.OP
.TA
.EM
.PH
.EP
.DUMMY
.ED</Keywords>
|
||||
<Keywords name="Keywords2">adc
and
asl
bit
brk
clc
cld
cli
clv
cmp
cpx
cpy
dec
dex
dey
eor
inc
inx
iny
lda
ldx
ldy
lsr
nop
ora
rmb
rol
ror
rti
rts
sbc
sec
sed
sei
smb
sta
stp
stx
sty
stz
tax
tay
trb
tsb
tsx
txa
txs
tya
wai</Keywords>
|
||||
<Keywords name="Keywords3">$
%
/
#
&</Keywords>
|
||||
<Keywords name="Keywords3">$
%
/
#
&
^</Keywords>
|
||||
<Keywords name="Keywords4">.1
.2
.3
.4
.5
.6
.7
.8
.9
</Keywords>
|
||||
<Keywords name="Keywords5">AUTO
MAN
LOAD
SAVE
ASM
CREATE
INC
LOMEM
PREFIX
PR#
NEW
BLOAD
BSAVE
TEXT
DELETE
.DO
.ELSE
.FIN</Keywords>
|
||||
<Keywords name="Keywords6">pha
php
phx
phy
pla
plp
plx
ply</Keywords>
|
||||
|
@ -9,6 +9,7 @@ DEV.Bind >PUSHBI 0
|
||||
>LDYA L.DEVNAME
|
||||
>SYSCALL open
|
||||
bcc .1
|
||||
|
||||
inc DEVNAME+8
|
||||
lda DEVNAME+8
|
||||
cmp #'8'
|
||||
@ -21,7 +22,8 @@ DEV.Bind >PUSHBI 0
|
||||
sec
|
||||
rts
|
||||
|
||||
.1 sta IPCFG+S.IPCFG.hFD
|
||||
.1 ldy #S.IPCFG.hFD
|
||||
sta (pIPCFG),y
|
||||
|
||||
>PUSHW L.DEVNAME
|
||||
>PUSHBI 2
|
||||
|
@ -3,47 +3,17 @@ PREFIX
|
||||
AUTO 4,1
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
* Relocation Table
|
||||
*--------------------------------------
|
||||
.1 .DA CS.INIT
|
||||
.DA CS.RUN
|
||||
.DA CS.DOEVENT
|
||||
.DA CS.QUIT
|
||||
L.LIBTCPIP .DA LIBTCPIP
|
||||
L.IPCFG .DA IPCFG
|
||||
L.SA.LOCAL .DA SA.LOCAL
|
||||
L.SA.REMOTE .DA SA.REMOTE
|
||||
L.MSG.CFG1 .DA MSG.CFG1
|
||||
L.MSG.CFG2 .DA MSG.CFG2
|
||||
L.MSG.CFG.KO .DA MSG.CFG.KO
|
||||
L.MSG.CFG.OK .DA MSG.CFG.OK
|
||||
L.MSG.CFG.ND .DA MSG.CFG.ND
|
||||
L.MSG.CFG.NA .DA MSG.CFG.NA
|
||||
L.DHCP.DISC .DA DHCP.DISC
|
||||
L.DHCP.REQ .DA DHCP.REQ
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
CS.INIT >LDYA L.LIBTCPIP
|
||||
>SYSCALL LoadLib
|
||||
bcs .9
|
||||
sta hLIBTCPIP
|
||||
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG
|
||||
bcs .9
|
||||
|
||||
>STYA ZPIPCfgPtr
|
||||
|
||||
lda (ZPIPCfgPtr)
|
||||
DHCP.INIT lda (pIPCFG)
|
||||
and #S.IPCFG.STATUS.OK
|
||||
bne .99 Already Configured, exit
|
||||
|
||||
ldy #S.IPCFG.hFD
|
||||
lda (ZPIPCfgPtr),y
|
||||
lda (pIPCFG),y
|
||||
beq .98
|
||||
|
||||
ldy #S.IPCFG-1
|
||||
|
||||
.1 lda (ZPIPCfgPtr),y
|
||||
.1 lda (pIPCFG),y
|
||||
sta IPCFG,y
|
||||
dey
|
||||
bne .1
|
||||
@ -69,20 +39,20 @@ CS.INIT >LDYA L.LIBTCPIP
|
||||
clc
|
||||
.9 rts
|
||||
|
||||
.98 >LDYA L.MSG.CFG.ND
|
||||
.98 >LDYA L.MSG.DHCP.ND
|
||||
bra .90
|
||||
.99 >LDYA L.MSG.CFG.NA
|
||||
.99 >LDYA L.MSG.DHCP.NA
|
||||
|
||||
.90 >SYSCALL puts
|
||||
lda #0
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN >PUSHBI 0 no protocol
|
||||
DHCP.RUN >PUSHBI 0 no protocol
|
||||
lda #S.SOCKET.T.DGRAM
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Socket
|
||||
bcc .1
|
||||
.9 jmp CS.RUN.KO
|
||||
.9 jmp DHCP.RUN.KO
|
||||
|
||||
.1 >STA.G hSocket
|
||||
pha
|
||||
@ -100,105 +70,108 @@ CS.RUN >PUSHBI 0 no protocol
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Connect
|
||||
bcs .9
|
||||
|
||||
>LDYA L.MSG.CFG1
|
||||
>LDYA L.MSG.DHCP.CFG1
|
||||
>SYSCALL puts
|
||||
|
||||
jsr Init.Timeout
|
||||
|
||||
CS.RUN.SDISC >PUSHWI DHCP.DISC.LEN
|
||||
DHCP.RUN.SDISC >PUSHWI DHCP.DISC.LEN
|
||||
>PUSHW L.DHCP.DISC
|
||||
>LDA.G hSocket
|
||||
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Send
|
||||
bcc .1
|
||||
jmp CS.RUN.KO
|
||||
jmp DHCP.RUN.KO
|
||||
|
||||
.1 lda #S.IPCFG.STATUS.SDISC
|
||||
sta IPCFG
|
||||
|
||||
CS.RUN.ROFFER >SLEEP
|
||||
DHCP.RUN.ROFFER >SLEEP
|
||||
|
||||
jsr CS.RUN.SKT.RCVD
|
||||
jsr DHCP.RUN.SKT.RCVD
|
||||
bcc .1
|
||||
jsr Wait.Timeout
|
||||
bne CS.RUN.ROFFER
|
||||
bne DHCP.RUN.ROFFER
|
||||
|
||||
lda #1
|
||||
jmp CS.RUN.KO
|
||||
jmp DHCP.RUN.KO
|
||||
|
||||
.1 jsr CheckDHCPOffer
|
||||
|
||||
bcs CS.RUN.ROFFER
|
||||
bcs DHCP.RUN.ROFFER
|
||||
|
||||
lda #S.IPCFG.STATUS.ROFFER
|
||||
sta IPCFG
|
||||
|
||||
CS.RUN.SREQ ldx #3
|
||||
DHCP.RUN.SREQ ldx #3
|
||||
|
||||
.1 >PUSHB IPCFG+S.IPCFG.DHCPSRVR,x
|
||||
dex
|
||||
bpl .1
|
||||
|
||||
>PUSHBI 4
|
||||
>LDYA L.MSG.CFG2
|
||||
>LDYA L.MSG.DHCP.CFG2
|
||||
>SYSCALL printf
|
||||
|
||||
>PUSHWI DHCP.REQ.LEN
|
||||
>PUSHW L.DHCP.REQ
|
||||
>LDA.G hSocket
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Send
|
||||
bcs CS.RUN.KO
|
||||
bcs DHCP.RUN.KO
|
||||
|
||||
lda #S.IPCFG.STATUS.SREQ
|
||||
sta IPCFG
|
||||
|
||||
CS.RUN.RACK >SLEEP
|
||||
DHCP.RUN.RACK >SLEEP
|
||||
|
||||
jsr CS.RUN.SKT.RCVD
|
||||
jsr DHCP.RUN.SKT.RCVD
|
||||
bcc .1
|
||||
jsr Wait.Timeout
|
||||
bne CS.RUN.RACK
|
||||
bne DHCP.RUN.RACK
|
||||
lda #2
|
||||
bra CS.RUN.KO
|
||||
bra DHCP.RUN.KO
|
||||
|
||||
.1 jsr CheckDHCPAck
|
||||
bcs CS.RUN.RACK
|
||||
bcs DHCP.RUN.RACK
|
||||
|
||||
CS.RUN.OK lda #S.IPCFG.STATUS.OK
|
||||
DHCP.RUN.OK lda #S.IPCFG.STATUS.OK
|
||||
sta IPCFG
|
||||
|
||||
>PUSHW L.IPCFG
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.SET.IPCFG
|
||||
|
||||
ldx #3
|
||||
|
||||
.1 lda IPCFG+S.IPCFG.MASK,x
|
||||
>PUSHA
|
||||
dex
|
||||
bpl .1
|
||||
|
||||
ldx #3
|
||||
|
||||
.2 lda IPCFG+S.IPCFG.IP,x
|
||||
>PUSHA
|
||||
dex
|
||||
bpl .2
|
||||
|
||||
>PUSHBI 8
|
||||
>LDYA L.MSG.CFG.OK
|
||||
>LDYA L.MSG.DHCP.OK
|
||||
>SYSCALL printf
|
||||
lda #0 Leave with NO ERROR
|
||||
sec
|
||||
rts
|
||||
|
||||
CS.RUN.KO pha
|
||||
DHCP.RUN.KO pha
|
||||
>PUSHA
|
||||
>PUSHBI 1
|
||||
>LDYA L.MSG.CFG.KO
|
||||
>LDYA L.MSG.DHCP.KO
|
||||
>SYSCALL printf
|
||||
pla
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN.SKT.RCVD >LDA.G hSocket
|
||||
DHCP.RUN.SKT.RCVD
|
||||
>LDA.G hSocket
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Recv
|
||||
bcs .9
|
||||
>STA.G hFrame
|
||||
@ -207,29 +180,12 @@ CS.RUN.SKT.RCVD >LDA.G hSocket
|
||||
>STYA ZPFrameBase
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CS.DOEVENT lda (pEvent)
|
||||
bpl .9 is it a TIMER event?
|
||||
|
||||
ldy #TimeOut
|
||||
lda (pData),y
|
||||
beq .9
|
||||
|
||||
dec
|
||||
sta (pData),y
|
||||
|
||||
.9 sec do not discard TIMER event
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.QUIT >LDA.G hSocket
|
||||
DHCP.QUIT >LDA.G hSocket
|
||||
beq .1
|
||||
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Shutdown
|
||||
|
||||
.1 lda hLIBTCPIP
|
||||
beq .8
|
||||
>SYSCALL UnloadLib
|
||||
|
||||
.8 clc
|
||||
.1 clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CheckDHCPOffer jsr CheckDHCPXID
|
||||
@ -307,10 +263,6 @@ CheckDHCPOffer jsr CheckDHCPXID
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN.DISCARD >LDA.G hFrame
|
||||
>SYSCALL FreeMem
|
||||
rts
|
||||
*--------------------------------------
|
||||
GetDHCPOption cmp #S.DHCP.OPTIONS.MASK
|
||||
bne .1
|
||||
ldx #S.IPCFG.MASK
|
||||
@ -400,6 +352,10 @@ CheckDHCPAck jsr CheckDHCPXID
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN.DISCARD >LDA.G hFrame
|
||||
>SYSCALL FreeMem
|
||||
rts
|
||||
*--------------------------------------
|
||||
CheckDHCPXID ldy #S.DHCP.XID+3
|
||||
ldx #3
|
||||
|
||||
@ -416,79 +372,6 @@ CheckDHCPXID ldy #S.DHCP.XID+3
|
||||
.9 sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
Init.Timeout ldy #TimeOut
|
||||
lda #TIMEOUT.MAX
|
||||
sta (pData),y
|
||||
rts
|
||||
*--------------------------------------
|
||||
Wait.TimeOut ldy #TimeOut
|
||||
lda (pData),y
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.END
|
||||
LIBTCPIP .AZ "libtcpip"
|
||||
MSG.CFG1 .AZ "DHCPCLNT:Searching for DHCP servers..."
|
||||
MSG.CFG2 .AZ "DHCPCLNT:Reply from DHCP Server at %d.%d.%d.%d, requesting...\r\n"
|
||||
MSG.CFG.KO .AZ "DHCPCLNT:Time Out [%h].\r\n"
|
||||
MSG.CFG.OK .AZ "DHCPCLNT:Success:[IP=%d.%d.%d.%d/%d.%d.%d.%d]\r\n"
|
||||
MSG.CFG.ND .AZ "DHCPCLNT:No Device, exiting."
|
||||
MSG.CFG.NA .AZ "DHCPCLNT:TCPIP Already configured, exiting."
|
||||
hLIBTCPIP .BS 1
|
||||
IPCFG .BS S.IPCFG
|
||||
*--------------------------------------
|
||||
SA.LOCAL .DA #AF.INET S.SOCKADDR.AF
|
||||
.BS 1
|
||||
.HS 00.00.00.00 S.SOCKADDR.ADDR
|
||||
.DA UDP.PORT.DHCPC S.SOCKADDR.PORT
|
||||
*--------------------------------------
|
||||
SA.REMOTE .DA #AF.INET S.SOCKADDR.AF
|
||||
.BS 1
|
||||
.HS FF.FF.FF.FF S.SOCKADDR.ADDR
|
||||
.DA UDP.PORT.DHCPS S.SOCKADDR.PORT
|
||||
*--------------------------------------
|
||||
DHCP.DISC .HS 01010600 OP,HTYPE,HLEN,HOPS
|
||||
DHCP.DISC.XID .BS 4
|
||||
.HS 0000 SECS
|
||||
.DA S.DHCP.FLAGS.BRDCST
|
||||
.HS 00000000 CIADDR
|
||||
DHCP.DISC.YIADDR .HS 00000000
|
||||
.HS 00000000 SIADDR
|
||||
DHCP.DISC.GIADDR .HS 00000000
|
||||
DHCP.DISC.CHADDR .HS 00000000.00000000.00000000.00000000
|
||||
.BS 64 SNAME
|
||||
.BS 128 FILE
|
||||
.HS 63825363 COOKIE
|
||||
.HS 3501 OPT
|
||||
.DA #S.DHCP.OPTIONS.DHCPDiscover
|
||||
.HS 37040103060FFF
|
||||
DHCP.DISC.LEN .EQ *-DHCP.DISC
|
||||
*--------------------------------------
|
||||
DHCP.REQ .HS 01010600 OP,HTYPE,HLEN,HOPS
|
||||
DHCP.REQ.XID .BS 4
|
||||
.HS 0000 SECS
|
||||
.DA S.DHCP.FLAGS.BRDCST
|
||||
.HS 00000000 CIADDR
|
||||
DHCP.REQ.YIADDR .HS 00000000
|
||||
.HS 00000000 SIADDR
|
||||
DHCP.REQ.GIADDR .HS 00000000
|
||||
DHCP.REQ.CHADDR .HS 00000000.00000000.00000000.00000000
|
||||
.BS 64 SNAME
|
||||
.BS 128 FILE
|
||||
.HS 63825363 COOKIE
|
||||
.HS 3501 OPT
|
||||
.DA #S.DHCP.OPTIONS.DHCPRequest
|
||||
.HS 3204
|
||||
DHCP.REQ.OPT.REQIP .BS 4
|
||||
.HS 3604
|
||||
DHCP.REQ.OPT.SVRIP .BS 4
|
||||
.HS FF
|
||||
DHCP.REQ.LEN .EQ *-DHCP.REQ
|
||||
*--------------------------------------
|
||||
DS.START
|
||||
TimeOut .BS 1
|
||||
hSocket .BS 1
|
||||
hFrame .BS 1
|
||||
DS.END
|
||||
MAN
|
||||
SAVE USR/SRC/SBIN/IPCONFIG.S.DHCP
|
||||
LOAD USR/SRC/SBIN/IPCONFIG.S
|
||||
|
@ -48,7 +48,7 @@ CFG.EtcFiles >LDYAI 256
|
||||
jsr CFG.Read.PrintF
|
||||
jsr CFG.Read.HOSTS
|
||||
|
||||
jsr SET.IPCFG.I
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Set.IPCFG
|
||||
|
||||
lda CFG.hBuf1
|
||||
>SYSCALL freemem
|
||||
@ -326,7 +326,7 @@ CFG.DNS.ADD >STYA ZPTmpPtr1
|
||||
|
||||
>PUSHYA
|
||||
>PUSHW ZPTmpPtr1
|
||||
jsr DNS.Add
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.DNS.Add
|
||||
*--------------------------------------
|
||||
CFG.Read.Result bcc .1
|
||||
>PUSHA
|
||||
@ -405,92 +405,6 @@ CFG.A2CharAX pha
|
||||
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 >LDYA L.DCB.NIC
|
||||
>STYA IOCTL+S.IOCTL.BUFPTR
|
||||
lda #S.IOCTL.STATCODE.GETDCB
|
||||
sta IOCTL+S.IOCTL.STATCODE
|
||||
|
||||
>PUSHW L.IOCTL
|
||||
>PUSHBI IOCTL.STATUS
|
||||
lda IPCFG+S.IPCFG.hFD
|
||||
>SYSCALL IOCTL
|
||||
bcs *
|
||||
|
||||
ldx #5
|
||||
|
||||
.10 lda DCB.NIC+S.DCB.NIC.MAC,x
|
||||
sta IPCFG+S.IPCFG.MAC,x
|
||||
sta ARP.REQ.SRCMAC,x
|
||||
sta ARP.REQ.SHA,x
|
||||
sta ARP.REP.SRCMAC,x
|
||||
sta ARP.REP.SHA,x
|
||||
dex
|
||||
bpl .10
|
||||
|
||||
ldx #3
|
||||
|
||||
.11 lda IPCFG+S.IPCFG.IP,x
|
||||
sta SA.LOCAL+S.SOCKADDR.ADDR,x
|
||||
sta ARP.REQ.SPA,x
|
||||
sta ARP.REP.SPA,x
|
||||
dex
|
||||
bpl .11
|
||||
|
||||
lda DCB.NIC+S.DCB.NIC.FLAGS
|
||||
and #S.DCB.NIC.FLAGS.ARPOFFLOAD
|
||||
beq .2
|
||||
|
||||
ldx #11
|
||||
|
||||
.1 lda IPCFG+S.IPCFG.IP,x
|
||||
sta DCB.NIC+S.DCB.NIC.IP,x
|
||||
dex
|
||||
bpl .1
|
||||
|
||||
lda S.IOCTL.CTRLCODE.SETDCB
|
||||
sta S.IOCTL.CTRLCODE
|
||||
|
||||
>PUSHW L.IOCTL
|
||||
>PUSHBI IOCTL.CONTROL
|
||||
lda IPCFG+S.IPCFG.hFD
|
||||
>SYSCALL IOCTL
|
||||
bcs .9
|
||||
|
||||
.2 lda hDNSSocket
|
||||
beq .3
|
||||
jsr SKT.Shutdown
|
||||
stz hDNSSocket
|
||||
|
||||
.3 lda IPCFG+S.IPCFG.DNS1
|
||||
beq .8
|
||||
|
||||
>PUSHBI 0 no protocol
|
||||
lda #S.SOCKET.T.DGRAM
|
||||
jsr SKT.Socket
|
||||
bcs .9
|
||||
|
||||
sta hDNSSocket
|
||||
|
||||
stz SA.LOCAL+S.SOCKADDR.PORT
|
||||
stz SA.LOCAL+S.SOCKADDR.PORT+1
|
||||
|
||||
>PUSHW L.SA.LOCAL
|
||||
lda hDNSSocket
|
||||
jsr SKT.Bind
|
||||
|
||||
.8 clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
* grab a copy on the fly for lib function
|
||||
* OUT :
|
||||
* Y,A = PTR to S.IPCFG
|
||||
|
@ -8,10 +8,15 @@ AUTO 4,1
|
||||
*--------------------------------------
|
||||
.INB INC/MACROS.I
|
||||
.INB INC/A2OSX.I
|
||||
.INB INC/KERNEL.I
|
||||
.INB INC/MLI.I
|
||||
.INB INC/MLI.E.I
|
||||
.INB INC/NIC.I
|
||||
.INB INC/ETH.I
|
||||
.INB INC/LIBTCPIP.I
|
||||
.INB INC/NET.DHCP.I
|
||||
*--------------------------------------
|
||||
TIMEOUT.MAX .EQ 200 20 sec.
|
||||
*--------------------------------------
|
||||
.DUMMY
|
||||
.OR ZPBIN
|
||||
@ -20,6 +25,13 @@ ZPPtr1 .BS 2
|
||||
pIPCFG .BS 2
|
||||
pFD .BS 2
|
||||
pDEV .BS 2
|
||||
ZPIPCfgPtr .BS 2
|
||||
ZPFrameBase .BS 2
|
||||
ZPFramePtr .BS 2
|
||||
ZPTmpPtr1 .BS 2
|
||||
ZPTmpPtr2 .BS 2
|
||||
ZPTmpPtr3 .BS 2
|
||||
*--------------------------------------
|
||||
ZS.END
|
||||
.ED
|
||||
*--------------------------------------
|
||||
@ -73,8 +85,33 @@ L.MSG.DNS.ADD .DA MSG.DNS.ADD
|
||||
L.HOSTNAME .DA HOSTNAME
|
||||
L.TCPIP.CONF .DA TCPIP.CONF
|
||||
L.HOSTS .DA HOSTS
|
||||
L.IPCFG .DA IPCFG
|
||||
L.IOCTL .DA IOCTL
|
||||
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.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
|
||||
*--------------------------------------
|
||||
L.SA.LOCAL .DA SA.LOCAL
|
||||
L.SA.REMOTE .DA SA.REMOTE
|
||||
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
|
||||
*--------------------------------------
|
||||
CS.INIT >LDYA L.LIBTCPIP
|
||||
>SYSCALL LoadLib
|
||||
bcs .9
|
||||
@ -164,13 +201,15 @@ CS.RUN.DUMP >LDYA L.MSG0.L
|
||||
|
||||
>PUSHEA.G DIB+S.DIB.IDS
|
||||
|
||||
lda #S.FD.DEV.NAME
|
||||
clc
|
||||
adc pFD
|
||||
tay
|
||||
lda /S.FD.DEV.NAME
|
||||
adc pFD+1
|
||||
|
||||
>LDA.G FD.ETH
|
||||
ldx #$ff
|
||||
|
||||
.11 inx
|
||||
cmp Dev.Table.hFD,x
|
||||
bne .11
|
||||
|
||||
lda Dev.Table.hPath,x
|
||||
>SYSCALL GetMemPtr
|
||||
>PUSHYA
|
||||
|
||||
>PUSHB.G FD.ETH
|
||||
@ -323,7 +362,16 @@ CS.RUN.DONE lda #0 tell TSKMGR that all done ok, but
|
||||
sec we do not want to stay in memory
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.DOEVENT sec
|
||||
CS.DOEVENT lda (pEvent)
|
||||
bpl .9 is it a TIMER event?
|
||||
|
||||
>LDA.G TimeOut
|
||||
beq .9
|
||||
|
||||
dec
|
||||
sta (pData),y
|
||||
|
||||
.9 sec do not discard TIMER event
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.QUIT lda hLIBTCPIP
|
||||
@ -332,8 +380,19 @@ CS.QUIT lda hLIBTCPIP
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
Init.Timeout ldy #TimeOut
|
||||
lda #TIMEOUT.MAX
|
||||
sta (pData),y
|
||||
rts
|
||||
*--------------------------------------
|
||||
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 "libtcpip"
|
||||
@ -351,7 +410,7 @@ MSG0.L .AZ "Loaded"
|
||||
MSG0.NL .AZ "Not Loaded"
|
||||
*--------------------------------------
|
||||
MSG1.DEV .AS "Device Configuration :\r\n"
|
||||
.AS " FD.ETH : $%h\r\n"
|
||||
.AS " Device ID : $%h\r\n"
|
||||
.AS " Device Name : %s\r\n"
|
||||
.AS " Device Type : %S\r\n"
|
||||
.AZ " HW Address : %02h:%02h:%02h:%02h:%02h:%02h\r\n"
|
||||
@ -385,6 +444,7 @@ MSG.DNS.ADD .AZ " - Adding static host %d.%d.%d.%d %s..."
|
||||
HOSTNAME .AZ "${ROOT}ETC/HOSTNAME"
|
||||
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.Keywords >PSTR "address"
|
||||
@ -400,6 +460,62 @@ 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
|
||||
.BS 1
|
||||
.HS 00.00.00.00 S.SOCKADDR.ADDR
|
||||
.DA UDP.PORT.DHCPC S.SOCKADDR.PORT
|
||||
*--------------------------------------
|
||||
SA.REMOTE .DA #AF.INET S.SOCKADDR.AF
|
||||
.BS 1
|
||||
.HS FF.FF.FF.FF S.SOCKADDR.ADDR
|
||||
.DA UDP.PORT.DHCPS S.SOCKADDR.PORT
|
||||
*--------------------------------------
|
||||
DHCP.DISC .HS 01010600 OP,HTYPE,HLEN,HOPS
|
||||
DHCP.DISC.XID .BS 4
|
||||
.HS 0000 SECS
|
||||
.DA S.DHCP.FLAGS.BRDCST
|
||||
.HS 00000000 CIADDR
|
||||
DHCP.DISC.YIADDR .HS 00000000
|
||||
.HS 00000000 SIADDR
|
||||
DHCP.DISC.GIADDR .HS 00000000
|
||||
DHCP.DISC.CHADDR .HS 00000000.00000000.00000000.00000000
|
||||
.BS 64 SNAME
|
||||
.BS 128 FILE
|
||||
.HS 63825363 COOKIE
|
||||
.HS 3501 OPT
|
||||
.DA #S.DHCP.OPTIONS.DHCPDiscover
|
||||
.HS 37040103060FFF
|
||||
DHCP.DISC.LEN .EQ *-DHCP.DISC
|
||||
*--------------------------------------
|
||||
DHCP.REQ .HS 01010600 OP,HTYPE,HLEN,HOPS
|
||||
DHCP.REQ.XID .BS 4
|
||||
.HS 0000 SECS
|
||||
.DA S.DHCP.FLAGS.BRDCST
|
||||
.HS 00000000 CIADDR
|
||||
DHCP.REQ.YIADDR .HS 00000000
|
||||
.HS 00000000 SIADDR
|
||||
DHCP.REQ.GIADDR .HS 00000000
|
||||
DHCP.REQ.CHADDR .HS 00000000.00000000.00000000.00000000
|
||||
.BS 64 SNAME
|
||||
.BS 128 FILE
|
||||
.HS 63825363 COOKIE
|
||||
.HS 3501 OPT
|
||||
.DA #S.DHCP.OPTIONS.DHCPRequest
|
||||
.HS 3204
|
||||
DHCP.REQ.OPT.REQIP .BS 4
|
||||
.HS 3604
|
||||
DHCP.REQ.OPT.SVRIP .BS 4
|
||||
.HS FF
|
||||
DHCP.REQ.LEN .EQ *-DHCP.REQ
|
||||
*--------------------------------------
|
||||
.DUMMY
|
||||
.OR 0
|
||||
@ -412,6 +528,9 @@ FD.ETH .BS 1
|
||||
IOCTL .BS S.IOCTL
|
||||
DIB .BS S.DIB
|
||||
DCB.NIC .BS S.DCB.NIC
|
||||
TimeOut .BS 1
|
||||
hSocket .BS 1
|
||||
hFrame .BS 1
|
||||
DS.END .ED
|
||||
*--------------------------------------
|
||||
MAN
|
||||
|
@ -397,7 +397,7 @@ READ php
|
||||
bcs .9
|
||||
|
||||
>STYA ZPBufPtr
|
||||
stx .8+1
|
||||
phx
|
||||
|
||||
phy
|
||||
ldy #S.IOCTL.BUFPTR+1
|
||||
@ -433,7 +433,7 @@ READ php
|
||||
inc ZPBufPtr+1
|
||||
bne .2
|
||||
|
||||
.8 lda #$ff SELF MODIFIED hMem
|
||||
.8 pla hMem
|
||||
|
||||
plp
|
||||
clc
|
||||
|
16
INC/LIBETALK.I.txt
Normal file
16
INC/LIBETALK.I.txt
Normal file
@ -0,0 +1,16 @@
|
||||
NEW
|
||||
PREFIX
|
||||
AUTO 4,1
|
||||
.LIST OFF
|
||||
.OP 65C02
|
||||
*--------------------------------------
|
||||
LIBETALK.SETCFG .EQ 4
|
||||
LIBETALK.GETCFG .EQ 6
|
||||
|
||||
LIBETALK.INCOMING .EQ 8
|
||||
LIBETALK.PULSE .EQ 10
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE INC/LIBETALK.I
|
||||
LOAD USR/SRC/LIB/LIBETALK.S
|
||||
ASM
|
93
LIB/LIBETALK.S.txt
Normal file
93
LIB/LIBETALK.S.txt
Normal file
@ -0,0 +1,93 @@
|
||||
NEW
|
||||
PREFIX
|
||||
AUTO 4,1
|
||||
.LIST OFF
|
||||
.OP 65C02
|
||||
.OR $2000
|
||||
.TF LIB/LIBETALK
|
||||
*--------------------------------------
|
||||
.INB INC/MACROS.I
|
||||
.INB INC/A2OSX.I
|
||||
.INB INC/NIC.I
|
||||
.INB INC/ETH.I
|
||||
*--------------------------------------
|
||||
ZPFrameInPtr .EQ ZPLIB
|
||||
ZPFrameInLen .EQ ZPLIB+2
|
||||
|
||||
ZPDataInPtr .EQ ZPLIB+4
|
||||
ZPDataInLen .EQ ZPLIB+6
|
||||
|
||||
ZPFrameOutPtr .EQ ZPLIB+8
|
||||
ZPFrameOutLen .EQ ZPLIB+10
|
||||
|
||||
ZPDataOutPtr .EQ ZPLIB+12
|
||||
ZPDataOutLen .EQ ZPLIB+14
|
||||
|
||||
ZPIOCTL .EQ ZPLIB+16
|
||||
*--------------------------------------
|
||||
* 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
|
||||
.DA 0
|
||||
.DA 0
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
* Relocation Table
|
||||
*--------------------------------------
|
||||
.1 .DA LIB.LOAD
|
||||
.DA LIB.UNLOAD
|
||||
|
||||
.DA SETCFG
|
||||
.DA GETCFG
|
||||
|
||||
.DA INCOMING
|
||||
.DA PULSE
|
||||
*--------------------------------------
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
LIB.LOAD clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
LIB.UNLOAD clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
SETCFG
|
||||
*--------------------------------------
|
||||
GETCFG
|
||||
*--------------------------------------
|
||||
INCOMING sta hFrameIn
|
||||
>PULLW ZPIOCTL
|
||||
|
||||
ldy #S.IOCTL.BUFPTR+3
|
||||
ldx #3
|
||||
|
||||
.1 lda (ZPIOCTL),y
|
||||
sta ZPFrameInPtr,x
|
||||
dey
|
||||
dex
|
||||
bpl .1
|
||||
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
* Expire = every sec
|
||||
* Retry = every 100 msec
|
||||
*--------------------------------------
|
||||
PULSE and #S.EVT.F.T1SEC
|
||||
beq .1
|
||||
|
||||
.1 clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.END
|
||||
*--------------------------------------
|
||||
hFrameIn .BS 1
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/LIB/LIBETALK.S
|
||||
ASM
|
176
SBIN/NETWORKD.S.txt
Normal file
176
SBIN/NETWORKD.S.txt
Normal file
@ -0,0 +1,176 @@
|
||||
NEW
|
||||
PREFIX
|
||||
AUTO 4,1
|
||||
.LIST OFF
|
||||
.OP 65C02
|
||||
.OR $2000
|
||||
.TF SBIN/NETWORKD
|
||||
*--------------------------------------
|
||||
.INB INC/MACROS.I
|
||||
.INB INC/A2OSX.I
|
||||
.INB INC/MLI.E.I
|
||||
.INB INC/ETH.I
|
||||
.INB INC/LIBTCPIP.I
|
||||
.INB INC/LIBETALK.I
|
||||
*--------------------------------------
|
||||
* Zero Page Segment, up to 32 bytes
|
||||
*--------------------------------------
|
||||
.DUMMY
|
||||
.OR ZPBIN
|
||||
ZS.START
|
||||
* MyPtr .BS 2
|
||||
ZS.END
|
||||
.ED
|
||||
*--------------------------------------
|
||||
* File Header (16 Bytes)
|
||||
*--------------------------------------
|
||||
CS.START cld
|
||||
jmp (.1,x)
|
||||
.DA #$61 6502,Level 1 (65c02)
|
||||
.DA #1 BIN Layout Version 1
|
||||
.DA #S.PS.F.EVENT
|
||||
.DA #0
|
||||
.DA CS.END-CS.START Code Size (without Constants)
|
||||
.DA DS.END-DS.START Data SegmentSize
|
||||
.DA #16 Stack Size
|
||||
.DA #ZS.END-ZS.START Zero Page Size
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
* Relocation Table
|
||||
*--------------------------------------
|
||||
.1 .DA CS.INIT
|
||||
.DA CS.RUN
|
||||
.DA CS.DOEVENT
|
||||
.DA CS.QUIT
|
||||
L.DEVNAME .DA DEVNAME
|
||||
L.MSG.DEV.OK .DA MSG.DEV.OK
|
||||
L.MSG.DEV.KO .DA MSG.DEV.KO
|
||||
L.LIBTCPIP .DA LIBTCPIP
|
||||
L.LIBETALK .DA LIBETALK
|
||||
L.IOCTL .DA IOCTL
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
CS.INIT clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN >PUSHBI 0
|
||||
>LDYA L.DEVNAME
|
||||
>SYSCALL open
|
||||
bcc .1
|
||||
|
||||
inc DEVNAME+8
|
||||
lda DEVNAME+8
|
||||
cmp #'8'
|
||||
bne CS.RUN
|
||||
|
||||
>LDYA L.MSG.DEV.KO
|
||||
>SYSCALL puts
|
||||
|
||||
lda #MLI.E.NODEV
|
||||
sec
|
||||
rts
|
||||
|
||||
.1 sta hFD
|
||||
|
||||
>PUSHW L.DEVNAME
|
||||
>PUSHBI 2
|
||||
>LDYA L.MSG.DEV.OK
|
||||
>SYSCALL printf
|
||||
|
||||
* >LDYA L.LIBTCPIP
|
||||
* >SYSCALL LoadLib
|
||||
* bcs .2
|
||||
* sta hLIBTCPIP
|
||||
|
||||
.2 >LDYA L.LIBETALK
|
||||
>SYSCALL LoadLib
|
||||
bcs .3
|
||||
sta hLIBETALK
|
||||
|
||||
.3
|
||||
CS.RUN.LOOP >SLEEP
|
||||
|
||||
>PUSHW L.IOCTL
|
||||
>PUSHBI IOCTL.READ
|
||||
lda hFD
|
||||
>SYSCALL IOCTL
|
||||
bcs CS.RUN.LOOP No Frame
|
||||
|
||||
sta hFrameIn
|
||||
|
||||
ldx hLIBTCPIP
|
||||
beq .1
|
||||
|
||||
* >PUSHW L.IOCTL
|
||||
* lda hFrameIn
|
||||
|
||||
* >LIBCALL hLIBTCPIP,LIBTCPIP.INCOMING
|
||||
* bcc CS.RUN.LOOP
|
||||
|
||||
.1 ldx hLIBETALK
|
||||
beq .9
|
||||
|
||||
>PUSHW L.IOCTL
|
||||
lda hFrameIn
|
||||
>LIBCALL hLIBETALK,LIBETALK.INCOMING
|
||||
bcc CS.RUN.LOOP
|
||||
|
||||
.9 lda hFrameIn
|
||||
>SYSCALL freemem
|
||||
|
||||
bra CS.RUN.LOOP
|
||||
*--------------------------------------
|
||||
CS.DOEVENT lda (pEvent)
|
||||
bpl .9
|
||||
|
||||
ldx hLIBTCPIP
|
||||
beq .1
|
||||
* >LIBCALL hLIBTCPIP,LIBTCPIP.PULSE
|
||||
|
||||
.1 ldx hLIBETALK
|
||||
beq .9
|
||||
lda (pEvent)
|
||||
>LIBCALL hLIBETALK,LIBETALK.PULSE
|
||||
|
||||
.9 sec never discard TIME event
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.QUIT lda hLIBTCPIP
|
||||
beq .1
|
||||
|
||||
>SYSCALL UnloadLib
|
||||
|
||||
.1 lda hLIBETALK
|
||||
beq .2
|
||||
|
||||
>SYSCALL UnloadLib
|
||||
|
||||
.2 >PUSHWI 0
|
||||
>PUSHBI IOCTL.CLOSE
|
||||
lda hFD
|
||||
>SYSCALL IOCTL
|
||||
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.END
|
||||
*--------------------------------------
|
||||
DEVNAME .AZ "/DEV/ETH1"
|
||||
MSG.DEV.KO .AZ "No Device Found, exiting."
|
||||
MSG.DEV.OK .AZ "Bound To Device : %s\r\n"
|
||||
LIBTCPIP .AZ "libtcpip"
|
||||
LIBETALK .AZ "libetalk"
|
||||
hFD .BS 1
|
||||
hLIBTCPIP .BS 1
|
||||
hLIBETALK .BS 1
|
||||
IOCTL .BS S.IOCTL
|
||||
hFrameIn .BS 1
|
||||
*--------------------------------------
|
||||
.DUMMY
|
||||
.OR 0
|
||||
DS.START
|
||||
DS.END .ED
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/SBIN/NETWORKD.S
|
||||
ASM
|
@ -88,13 +88,21 @@ CS.RUN jsr Init.Timeout
|
||||
|
||||
CS.RUN.INIT ldx #3
|
||||
ldy #S.IPCFG.IP+3
|
||||
|
||||
.1 lda (ZPIPCfgPtr),y
|
||||
sta SA.LOCAL+S.SOCKADDR.ADDR,x
|
||||
dey
|
||||
dex
|
||||
bpl .1
|
||||
|
||||
>PUSHBI 0 no protocol
|
||||
lda #1
|
||||
>SYSCALL ArgV
|
||||
bcs CS.RUN.PORTOK
|
||||
|
||||
>SYSCALL atoi
|
||||
>STYA SA.LOCAL+S.SOCKADDR.PORT
|
||||
|
||||
CS.RUN.PORTOK >PUSHBI 0 no protocol
|
||||
lda #S.SOCKET.T.STREAM
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Socket
|
||||
bcs .9
|
||||
|
Loading…
x
Reference in New Issue
Block a user