mirror of https://github.com/A2osX/A2osX.git
Kernel 0.92+
This commit is contained in:
parent
78a02b11b6
commit
dfed36d689
Binary file not shown.
|
@ -0,0 +1,264 @@
|
|||
NEW
|
||||
PREFIX
|
||||
AUTO 4,1
|
||||
.LIST OFF
|
||||
.OP 65C02
|
||||
.OR $2000
|
||||
.TF BIN/AARP
|
||||
*--------------------------------------
|
||||
.INB INC/MACROS.I
|
||||
.INB INC/A2OSX.I
|
||||
.INB INC/ETH.I
|
||||
.INB INC/LIBETALK.I
|
||||
*--------------------------------------
|
||||
TIMEOUT.MAX .EQ 40 40*100ms = 4 sec.
|
||||
*--------------------------------------
|
||||
ZPPTR1 .EQ ZPBIN
|
||||
*--------------------------------------
|
||||
* 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 CS
|
||||
.DA DS.END-DS.START DS
|
||||
.DA #16 SS
|
||||
.DA #2 ZP
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
* Relocation Table
|
||||
*--------------------------------------
|
||||
.1 .DA CS.INIT
|
||||
.DA CS.RUN
|
||||
.DA CS.DOEVENT
|
||||
.DA CS.QUIT
|
||||
L.LIBETALK .DA LIBETALK
|
||||
L.SSCANF.ADDR .DA SSCANF.ADDR
|
||||
L.SSCANF.MAC .DA SSCANF.MAC
|
||||
L.MSG.Usage .DA MSG.Usage
|
||||
L.MSG0 .DA MSG0
|
||||
L.MSG1 .DA MSG1
|
||||
L.MSG2 .DA MSG2
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
CS.INIT >LDYA L.LIBETALK
|
||||
>SYSCALL LoadLib
|
||||
bcs .9
|
||||
sta hLIBETALK
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CS.RUN >LIBCALL hLIBETALK,LIBETALK.GETCFG
|
||||
>STYA ZPPTR1
|
||||
|
||||
* lda (ZPPTR1)
|
||||
* bmi .1
|
||||
|
||||
* jmp CS.RUN.ERR
|
||||
|
||||
.1 ldy #S.PS.ARGC
|
||||
lda (pPs),y
|
||||
cmp #1
|
||||
bcs .2
|
||||
jmp CS.RUN.DUMP
|
||||
|
||||
.2 >PUSHEA.G DST.ADDR+3
|
||||
>PUSHEA.G DST.ADDR+1
|
||||
|
||||
>PUSHBI 4 2 Ptrs
|
||||
|
||||
>PUSHW L.SSCANF.ADDR
|
||||
lda #1
|
||||
>SYSCALL ArgV
|
||||
>SYSCALL sscanf
|
||||
bcs CS.RUN.ERR
|
||||
|
||||
ldy #S.PS.ARGC
|
||||
lda (pPs),y
|
||||
cmp #1
|
||||
beq CS.RUN.QUERY
|
||||
|
||||
cmp #3
|
||||
bne CS.RUN.ERR
|
||||
jmp CS.RUN.ADD
|
||||
|
||||
CS.RUN.ERR >PUSHBI 0
|
||||
>LDYA L.MSG.Usage
|
||||
>SYSCALL printf
|
||||
|
||||
lda #E.SYN
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN.QUERY jsr Init.Timeout
|
||||
|
||||
.1 >PUSHEA.G DST.MAC
|
||||
>PUSHEA.G DST.ADDR
|
||||
>LIBCALL hLIBETALK,LIBETALK.AARP.QUERY
|
||||
bcc .2 success, print & exit
|
||||
|
||||
jsr Wait.TimeOut
|
||||
bcs .8
|
||||
|
||||
>SLEEP
|
||||
>SYSCALL GetChar
|
||||
bcs .1
|
||||
cmp #3
|
||||
beq .9
|
||||
bra .1
|
||||
|
||||
.2 ldx #5
|
||||
ldy #DST.MAC+5
|
||||
|
||||
.3 >PUSHB (pData),y
|
||||
dey
|
||||
dex
|
||||
bpl .3
|
||||
|
||||
ldx #3
|
||||
ldy #DST.ADDR+3
|
||||
|
||||
.4 >PUSHB (pData),y
|
||||
dey
|
||||
dex
|
||||
bne .4
|
||||
|
||||
>PUSHBI 8
|
||||
>LDYA L.MSG2
|
||||
>SYSCALL printf
|
||||
|
||||
.8 lda #0
|
||||
|
||||
.9 sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN.ADD >PUSHEA.G DST.MAC+5
|
||||
>PUSHEA.G DST.MAC+4
|
||||
>PUSHEA.G DST.MAC+3
|
||||
>PUSHEA.G DST.MAC+2
|
||||
>PUSHEA.G DST.MAC+1
|
||||
>PUSHEA.G DST.MAC
|
||||
|
||||
>PUSHBI 12 6 Ptrs
|
||||
|
||||
>PUSHW L.SSCANF.MAC
|
||||
lda #2
|
||||
>SYSCALL ArgV
|
||||
|
||||
>SYSCALL sscanf
|
||||
bcs .9
|
||||
|
||||
>PUSHEA.G DST.MAC
|
||||
>PUSHEA.G DST.ADDR
|
||||
>LIBCALL hLIBETALK,LIBETALK.AARP.ADD
|
||||
clc
|
||||
.8 rts
|
||||
|
||||
.9 jmp CS.RUN.ERR
|
||||
*--------------------------------------
|
||||
CS.RUN.DUMP >LIBCALL hLIBETALK,LIBETALK.AARP.GETCACHE
|
||||
>STYA ZPPTR1
|
||||
|
||||
>LDYA L.MSG0
|
||||
>SYSCALL puts
|
||||
|
||||
ldx #K.AARPCACHE.SIZE
|
||||
|
||||
.1 lda (ZPPTR1)
|
||||
beq .4
|
||||
|
||||
ldy #S.AARPCACHE.ADDR+3
|
||||
>PUSHB (ZPPTR1),y
|
||||
dey
|
||||
>PUSHB (ZPPTR1),y
|
||||
dey
|
||||
>PUSHB (ZPPTR1),y
|
||||
|
||||
ldy #S.AARPCACHE.MAC+6
|
||||
|
||||
.3 dey
|
||||
>PUSHB (ZPPTR1),y
|
||||
cpy #S.AARPCACHE.MAC
|
||||
bne .3
|
||||
|
||||
ldy #S.AARPCACHE.TTL+1
|
||||
>PUSHB (ZPPTR1),y
|
||||
dey
|
||||
>PUSHB (ZPPTR1),y
|
||||
|
||||
>PUSHB (ZPPTR1)
|
||||
|
||||
>PUSHBI 12
|
||||
>LDYA L.MSG1
|
||||
phx
|
||||
>SYSCALL printf
|
||||
plx
|
||||
>DEBUG
|
||||
|
||||
.4 lda ZPPTR1
|
||||
clc
|
||||
adc #S.AARPCACHE
|
||||
sta ZPPTR1
|
||||
bcc .5
|
||||
inc ZPPTR1+1
|
||||
.5 dex
|
||||
bne .1
|
||||
|
||||
.8 lda #0 tell TSKMGR that all done ok, but
|
||||
sec we do not want to stay in memory
|
||||
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 hLIBETALK
|
||||
beq .8
|
||||
>SYSCALL UnloadLib
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
Init.Timeout ldy #TimeOut
|
||||
lda #TIMEOUT.MAX
|
||||
sta (pData),y
|
||||
rts
|
||||
*--------------------------------------
|
||||
Wait.TimeOut sec
|
||||
ldy #TimeOut
|
||||
lda (pData),y
|
||||
beq .9
|
||||
clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CS.END
|
||||
LIBETALK .AZ "libetalk"
|
||||
SSCANF.ADDR .AZ "%D.%d"
|
||||
SSCANF.MAC .AZ "%h:%h:%h:%h:%h:%h"
|
||||
MSG.Usage .AS "Usage : AARP, display AARP cache\r\n"
|
||||
.AS " AARP network.nod, query cache or network\r\n"
|
||||
.AZ " AARP network.nod HH:HH:HH:HH:HH:HH, add a static AARP record in Cache\r\n"
|
||||
MSG0 .AZ "STS TTL MAC Address network.nod"
|
||||
MSG1 .AZ "$%h %5D %h:%h:%h:%h:%h:%h %D.%d\r\n"
|
||||
MSG2 .AZ "%D%d is at %h:%h:%h:%h:%h:%h\r\n"
|
||||
hLIBETALK .BS 1
|
||||
*--------------------------------------
|
||||
DS.START
|
||||
DST.ADDR .BS 4
|
||||
DST.MAC .BS 6
|
||||
TimeOut .BS 1
|
||||
DS.END
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/BIN/AARP.S
|
||||
ASM
|
|
@ -0,0 +1,533 @@
|
|||
NEW
|
||||
PREFIX
|
||||
AUTO 4,1
|
||||
.LIST OFF
|
||||
.OP 65C02
|
||||
.OR $2000
|
||||
.TF BIN/ETCONFIG
|
||||
*--------------------------------------
|
||||
.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/LIB.NET.I
|
||||
.INB INC/LIBETALK.I
|
||||
*--------------------------------------
|
||||
TIMEOUT.MAX .EQ 200 20 sec.
|
||||
PROBE.MAX .EQ 10
|
||||
*--------------------------------------
|
||||
.DUMMY
|
||||
.OR ZPBIN
|
||||
ZS.START
|
||||
pETKCFG .BS 2
|
||||
ZPFrameBase .BS 2
|
||||
ZPFramePtr .BS 2
|
||||
ZPTmpPtr1 .BS 2
|
||||
ZPTmpPtr2 .BS 2
|
||||
ZPTmpPtr3 .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.LIBETALK .DA LIBETALK
|
||||
L.MSG.USAGE .DA MSG.USAGE
|
||||
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
|
||||
L.MSG1.LINK.OK .DA MSG1.LINK.OK
|
||||
L.MSG1.LINK.KO .DA MSG1.LINK.KO
|
||||
L.MSG1.LINKSPEED .DA MSG1.LINKSPEED
|
||||
L.MSG1.DPLX.FD .DA MSG1.DPLX.FD
|
||||
L.MSG1.DPLX.HD .DA MSG1.DPLX.HD
|
||||
L.MSG2 .DA MSG2
|
||||
L.MSG2.C .DA MSG2.C
|
||||
L.MSG2.U .DA MSG2.U
|
||||
L.MSG2.ADDR .DA MSG2.ADDR
|
||||
L.MSG2.ROUTER .DA MSG2.ROUTER
|
||||
L.MSG2.OBJECT .DA MSG2.OBJECT
|
||||
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.CFG.DefaultHost .DA CFG.DefaultHost
|
||||
L.ETKCFG .DA ETKCFG
|
||||
L.ETKCFG.OBJECT .DA ETKCFG+S.ETKCFG.OBJECT+1
|
||||
L.IOCTL .DA IOCTL
|
||||
*--------------------------------------
|
||||
L.MSG.PROBE .DA MSG.PROBE
|
||||
L.MSG.PROBE.KO .DA MSG.PROBE.KO
|
||||
L.MSG.PROBE.OK .DA MSG.PROBE.OK
|
||||
L.AARP.PRB .DA AARP.PRB
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
CS.INIT >LDYA L.LIBETALK
|
||||
>SYSCALL LoadLib
|
||||
bcs .9
|
||||
sta hLIBETALK
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CS.RUN >LIBCALL hLIBETALK,LIBETALK.GETCFG
|
||||
>STYA pETKCFG
|
||||
|
||||
ldy #S.ETKCFG-1
|
||||
|
||||
.1 lda (pETKCFG),y
|
||||
sta ETKCFG,y
|
||||
dey
|
||||
bpl .1
|
||||
|
||||
lda ETKCFG+S.NETCFG.DevID
|
||||
bne CS.RUN.SETUP
|
||||
|
||||
>LDYA L.MSG.NODEV
|
||||
>SYSCALL puts
|
||||
lda #MLI.E.NODEV
|
||||
sec
|
||||
rts
|
||||
|
||||
CS.RUN.SETUP jsr CS.RUN.PROBE
|
||||
|
||||
jsr CS.RUN.DUMP
|
||||
|
||||
.8 lda #0
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN.DUMP >PUSHEA.G DIB
|
||||
lda ETKCFG+S.NETCFG.DevID
|
||||
>SYSCALL GetDevStatus
|
||||
|
||||
>LEA.G DCB.NIC
|
||||
>STYA IOCTL+S.IOCTL.BUFPTR
|
||||
lda #S.IOCTL.STATCODE.GETDCB
|
||||
sta IOCTL+S.IOCTL.STATCODE
|
||||
|
||||
>PUSHW L.IOCTL
|
||||
>PUSHBI IOCTL.STATUS
|
||||
lda ETKCFG+S.NETCFG.DevID
|
||||
>SYSCALL IOCTL
|
||||
|
||||
CS.RUN.DUMPNIC ldy #DCB.NIC+S.DCB.NIC.MAC+5
|
||||
ldx #6
|
||||
|
||||
.1 lda (pData),y
|
||||
>PUSHA
|
||||
dey
|
||||
dex
|
||||
bne .1
|
||||
|
||||
>PUSHEA.G DIB+S.DIB.IDS
|
||||
|
||||
ldx ETKCFG+S.NETCFG.DevID
|
||||
lda Dev.Table-1,x
|
||||
clc
|
||||
adc #S.FD.DEV
|
||||
tay
|
||||
lda Dev.Table,x
|
||||
adc /S.FD.DEV
|
||||
|
||||
>PUSHYA
|
||||
|
||||
lda ETKCFG+S.NETCFG.DevID
|
||||
>PUSHA
|
||||
>PUSHBI 11
|
||||
>LDYA L.MSG1.DEV
|
||||
>SYSCALL printf
|
||||
|
||||
>LDA.G DCB.NIC+S.DCB.NIC.FLAGS
|
||||
and #S.DCB.NIC.FLAGS.ARPOFFLOAD
|
||||
beq .2
|
||||
|
||||
lda #1
|
||||
|
||||
.2 >PUSHA
|
||||
>PUSHBI 1
|
||||
>LDYA L.MSG1.DEV.ARP
|
||||
>SYSCALL printf
|
||||
|
||||
>LDA.G DCB.NIC+S.DCB.NIC.FLAGS
|
||||
and #S.DCB.NIC.FLAGS.IPOFFLOAD
|
||||
|
||||
beq .3
|
||||
|
||||
lda #1
|
||||
.3
|
||||
>PUSHA
|
||||
>PUSHBI 1
|
||||
>LDYA L.MSG1.DEV.IP
|
||||
>SYSCALL printf
|
||||
|
||||
>LDA.G DCB.NIC+S.DCB.NIC.LINK
|
||||
and #S.DCB.NIC.LINK.OK
|
||||
bne CS.RUN.LINK
|
||||
|
||||
>LDYA L.MSG1.LINK.KO
|
||||
>SYSCALL puts
|
||||
bra CS.RUN.DUMPNET
|
||||
|
||||
CS.RUN.LINK >LDYA L.MSG1.LINK.OK
|
||||
>SYSCALL puts
|
||||
|
||||
>PUSHBI 0
|
||||
>LDYA L.MSG1.LINKSPEED
|
||||
>SYSCALL printf
|
||||
|
||||
>LDA.G DCB.NIC+S.DCB.NIC.SPEED
|
||||
and #$0F
|
||||
tax
|
||||
|
||||
.4 phx
|
||||
lda #'0'
|
||||
>SYSCALL PutChar
|
||||
plx
|
||||
dex
|
||||
bne .4
|
||||
|
||||
>LDA.G DCB.NIC+S.DCB.NIC.LINK
|
||||
and #S.DCB.NIC.LINK.FD
|
||||
bne .5
|
||||
|
||||
>LDYA L.MSG1.DPLX.HD
|
||||
bra .6
|
||||
|
||||
.5 >LDYA L.MSG1.DPLX.FD
|
||||
.6 >SYSCALL puts
|
||||
|
||||
CS.RUN.DUMPNET >PUSHBI 0
|
||||
>LDYA L.MSG2
|
||||
>SYSCALL printf
|
||||
lda ETKCFG+S.ETKCFG.NodID
|
||||
beq .11
|
||||
|
||||
>LDYA L.MSG2.C
|
||||
bra .10
|
||||
|
||||
.11 >LDYA L.MSG2.U
|
||||
|
||||
.10 >SYSCALL puts
|
||||
|
||||
>PUSHB ETKCFG+S.ETKCFG.NodID
|
||||
>PUSHW ETKCFG+S.ETKCFG.NetID
|
||||
|
||||
>PUSHBI 3
|
||||
>LDYA L.MSG2.ADDR
|
||||
>SYSCALL printf
|
||||
|
||||
>PUSHB ETKCFG+S.ETKCFG.Router
|
||||
>PUSHW ETKCFG+S.ETKCFG.NetID
|
||||
|
||||
>PUSHBI 3
|
||||
>LDYA L.MSG2.ROUTER
|
||||
>SYSCALL printf
|
||||
|
||||
>PUSHW L.ETKCFG.OBJECT
|
||||
|
||||
>PUSHBI 2
|
||||
>LDYA L.MSG2.OBJECT
|
||||
>SYSCALL printf
|
||||
|
||||
lda #0 tell TSKMGR that all done ok, but
|
||||
sec we do not want to stay in memory
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN.PROBE >PUSHBI 0
|
||||
>LDYA L.MSG.PROBE
|
||||
>SYSCALL printf
|
||||
|
||||
ldx #5
|
||||
|
||||
.20 lda ETKCFG+S.NETCFG.MAC,x
|
||||
sta AARP.PRB.SHA,x
|
||||
dex
|
||||
bpl .20
|
||||
|
||||
lda #$58
|
||||
sta AARP.PRB.SPA+2
|
||||
sta AARP.PRB.TPA+2
|
||||
sta ETKCFG+S.ETKCFG.NetID
|
||||
|
||||
lda A2osX.RANDOM16+1
|
||||
lda #$06
|
||||
sta AARP.PRB.SPA+1
|
||||
sta AARP.PRB.TPA+1
|
||||
sta ETKCFG+S.ETKCFG.NetID+1
|
||||
|
||||
lda A2osX.RANDOM16
|
||||
lda #$3A
|
||||
bne .1
|
||||
inc
|
||||
|
||||
.1 cmp #$FE
|
||||
bcc .2
|
||||
|
||||
eor #$80
|
||||
bne .2
|
||||
inc
|
||||
|
||||
.2 sta AARP.PRB.SPA+3
|
||||
sta AARP.PRB.TPA+3
|
||||
sta ETKCFG+S.ETKCFG.NodID
|
||||
|
||||
lda #PROBE.MAX
|
||||
>STA.G PROBE.CNT
|
||||
|
||||
.3 >LDYA L.AARP.PRB
|
||||
>STYA IOCTL+S.IOCTL.BUFPTR
|
||||
>LDYAI AARP.PRB.LEN
|
||||
>STYA IOCTL+S.IOCTL.BYTECNT
|
||||
>PUSHW L.IOCTL
|
||||
>PUSHBI IOCTL.WRITE
|
||||
lda ETKCFG+S.NETCFG.DevID
|
||||
>SYSCALL IOCTL
|
||||
|
||||
>SLEEP
|
||||
|
||||
>DEC.G PROBE.CNT
|
||||
bne .3
|
||||
|
||||
>LDYA L.MSG.PROBE
|
||||
>SYSCALL puts
|
||||
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CFG.EtcFiles >LDYAI 256
|
||||
>SYSCALL GetMem
|
||||
bcc .1
|
||||
rts
|
||||
|
||||
.1 >STYA ZPTmpPtr1
|
||||
stx CFG.hBuf1
|
||||
|
||||
>LDYA L.HOSTNAME
|
||||
jsr CFG.Read.PrintF
|
||||
jsr CFG.Read.HOSTNAME
|
||||
|
||||
lda ETKCFG+S.ETKCFG.OBJECT
|
||||
bne .4
|
||||
|
||||
>PUSHW A2osX.TIMER16
|
||||
>PUSHBI 2
|
||||
>PUSHW L.CFG.DefaultHost
|
||||
>LDYA L.ETKCFG.OBJECT
|
||||
>SYSCALL sprintf
|
||||
lda #11
|
||||
sta ETKCFG+S.ETKCFG.OBJECT
|
||||
|
||||
.4 >PUSHW L.ETKCFG
|
||||
>LIBCALL hLIBETALK,LIBETALK.SETCFG
|
||||
|
||||
lda CFG.hBuf1
|
||||
>SYSCALL freemem
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CFG.Read.PrintF >PUSHYA
|
||||
>PUSHBI 2
|
||||
>LDYA L.MSG.CFG
|
||||
>SYSCALL printf
|
||||
rts
|
||||
*--------------------------------------
|
||||
CFG.Read.HOSTNAME
|
||||
>LDYA L.HOSTNAME
|
||||
jsr CFG.Read.Open
|
||||
jsr CFG.Read.Result
|
||||
bcs .9
|
||||
|
||||
.1 jsr CFG.Read.GetS
|
||||
bcs .8
|
||||
|
||||
lda (ZPTmpPtr1)
|
||||
beq .1 empty line...
|
||||
cmp #'#
|
||||
beq .1 comment...
|
||||
|
||||
ldy #0
|
||||
|
||||
.2 lda (ZPTmpPtr1),y
|
||||
beq .8 end of name
|
||||
sta ETKCFG+S.ETKCFG.OBJECT,y
|
||||
|
||||
iny
|
||||
cpy #32
|
||||
bne .2
|
||||
|
||||
.8 tya
|
||||
sta ETKCFG+S.ETKCFG.OBJECT
|
||||
|
||||
clc
|
||||
.HS B0 BCS
|
||||
.9 sec
|
||||
jmp CFG.Read.Close
|
||||
*--------------------------------------
|
||||
CFG.Read.Result bcc .1
|
||||
>PUSHA
|
||||
>PUSHBI 1
|
||||
>LDYA L.MSG.CFG.KO
|
||||
>SYSCALL printf
|
||||
sec
|
||||
rts
|
||||
|
||||
.1 >LDYA L.MSG.CFG.OK
|
||||
>SYSCALL puts
|
||||
rts
|
||||
*--------------------------------------
|
||||
CFG.Read.Open stz CFG.hCfgFile
|
||||
|
||||
pha
|
||||
|
||||
>PUSHWI 0
|
||||
>PUSHBI S.FI.T.TXT
|
||||
>PUSHBI O.RDONLY
|
||||
|
||||
pla
|
||||
>SYSCALL fopen
|
||||
bcs .9
|
||||
|
||||
sta CFG.hCfgFile
|
||||
* clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CFG.Read.Close php
|
||||
pha
|
||||
|
||||
CFG.Read.Close2
|
||||
lda CFG.hCfgFile
|
||||
beq .8
|
||||
>SYSCALL fclose
|
||||
|
||||
.8 pla
|
||||
plp
|
||||
rts
|
||||
*--------------------------------------
|
||||
CFG.Read.GetS >PUSHWI 255
|
||||
>PUSHW ZPTmpPtr1
|
||||
lda CFG.hCfgFile
|
||||
>SYSCALL fgets
|
||||
rts
|
||||
*--------------------------------------
|
||||
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 hLIBETALK
|
||||
beq .8
|
||||
>SYSCALL UnloadLib
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
Init.Timeout ldy #TimeOut
|
||||
lda #TIMEOUT.MAX
|
||||
sta (pData),y
|
||||
rts
|
||||
*--------------------------------------
|
||||
Wait.TimeOut ldy #TimeOut
|
||||
lda (pData),y
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.END
|
||||
LIBETALK .AZ "libetalk"
|
||||
hLIBETALK .BS 1
|
||||
*--------------------------------------
|
||||
MSG.USAGE .AZ "Usage : ETCONFIG\r\n"
|
||||
*--------------------------------------
|
||||
MSG.NODEV .AZ "EtherTalk not bound to any device."
|
||||
*--------------------------------------
|
||||
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"
|
||||
.AZ " HW Address : %02h:%02h:%02h:%02h:%02h:%02h\r\n"
|
||||
MSG1.DEV.ARP .AZ " ARP Offload : %d\r\n"
|
||||
MSG1.DEV.IP .AS " IP Offload : %d\r\n"
|
||||
.AZ " Link Status : "
|
||||
MSG1.LINK.OK .AZ "OK"
|
||||
MSG1.LINK.KO .AZ "Media Disconnected"
|
||||
MSG1.LINKSPEED .AZ " Link Speed : 1"
|
||||
MSG1.DPLX.FD .AZ " Mbit/s,Full Duplex"
|
||||
MSG1.DPLX.HD .AZ " Mbit/s,Half Duplex"
|
||||
*--------------------------------------
|
||||
MSG2 .AZ "EtherTalk Configuration : "
|
||||
MSG2.C .AZ "Configured"
|
||||
MSG2.U .AZ "Not Configured"
|
||||
MSG2.ADDR .AZ " Network/Node : %D/%d\r\n"
|
||||
MSG2.ROUTER .AZ " Router : %D/%d\r\n"
|
||||
MSG2.OBJECT .AZ " Object Name : %S\r\n"
|
||||
*--------------------------------------
|
||||
MSG.CFG .AZ "ETCONFIG:Reading %s..."
|
||||
MSG.CFG.KO .AZ "Not Found. [%h]\r\n"
|
||||
MSG.CFG.OK .AZ "OK."
|
||||
*--------------------------------------
|
||||
HOSTNAME .AZ "${ROOT}ETC/HOSTNAME"
|
||||
*--------------------------------------
|
||||
CFG.DefaultHost .AZ "a2osx-%H"
|
||||
*--------------------------------------
|
||||
MSG.PROBE .AZ "ETCONFIG:Acquiring NODE..."
|
||||
MSG.PROBE.KO .AZ "ETCONFIG:Time Out [%h].\r\n"
|
||||
MSG.PROBE.OK .AZ "ETCONFIG:Success\n"
|
||||
*--------------------------------------
|
||||
ETKCFG .BS S.ETKCFG
|
||||
CFG.hCfgFile .BS 1
|
||||
CFG.hBuf1 .BS 1
|
||||
*--------------------------------------
|
||||
AARP.PRB .HS 090007FFFFFF S.ETH.DSTMAC
|
||||
AARP.PRB.SRCMAC .BS 6
|
||||
.DA #0,#36 S.ETH.802.3.LENGTH
|
||||
.HS AA S.ETH.802.2.DSTSAP
|
||||
.HS AA S.ETH.802.2.SRCSAP
|
||||
.HS 03 S.ETH.802.2.CTRL
|
||||
.HS 00.00.00.80.F3 S.ETH.SNAP.PROTO
|
||||
.HS 00.01.80.9B.06.04
|
||||
.HS 0003 Probe
|
||||
AARP.PRB.SHA .BS 6
|
||||
AARP.PRB.SPA .BS 4
|
||||
AARP.PRB.THA .BS 6
|
||||
AARP.PRB.TPA .BS 4
|
||||
.BS AARP.PRB+60-*
|
||||
AARP.PRB.LEN .EQ 60
|
||||
IOCTL .BS S.IOCTL
|
||||
*--------------------------------------
|
||||
.DUMMY
|
||||
.OR 0
|
||||
DS.START
|
||||
DIB .BS S.DIB
|
||||
DCB.NIC .BS S.DCB.NIC
|
||||
PROBE.CNT .BS 1
|
||||
TimeOut .BS 1
|
||||
DS.END .ED
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/SBIN/ETCONFIG.S
|
||||
ASM
|
|
@ -5,17 +5,21 @@ AUTO 4,1
|
|||
*--------------------------------------
|
||||
S.ETH.DSTMAC .EQ 0
|
||||
S.ETH.SRCMAC .EQ 6
|
||||
*--------------------------------------
|
||||
S.ETH.EII.TYPE .EQ 12
|
||||
S.ETH.EII.TYPE.IP .EQ $800
|
||||
S.ETH.EII.TYPE.ARP .EQ $806
|
||||
*
|
||||
S.ETH.EII .EQ 14
|
||||
*
|
||||
*--------------------------------------
|
||||
S.ETH.802.3.LENGTH .EQ 12
|
||||
S.ETH.802.2.DSTSAP .EQ 14
|
||||
S.ETH.802.2.SRCSAP .EQ 15
|
||||
S.ETH.802.2.CTRL .EQ 16
|
||||
S.ETH.SNAP.PROTO .EQ 17
|
||||
|
||||
S.ETH.SNAP.PROTO .EQ 20
|
||||
S.ETH.SNAP.PROTO.AARP .EQ $80F3
|
||||
S.ETH.SNAP.PROTO.DDP .EQ $809B
|
||||
*
|
||||
S.ETH.SNAP .EQ 22
|
||||
*--------------------------------------
|
||||
|
|
|
@ -4,17 +4,79 @@ AUTO 4,1
|
|||
.LIST OFF
|
||||
.OP 65C02
|
||||
*--------------------------------------
|
||||
K.AARPCACHE.SIZE .EQ 10
|
||||
K.AARP.TTL .EQ 600
|
||||
K.AARP.PENDING.TTL .EQ 10
|
||||
K.AROUTER.TTL .EQ 500 50 sec
|
||||
*--------------------------------------
|
||||
LIBETALK.SETCFG .EQ 4
|
||||
LIBETALK.GETCFG .EQ 6
|
||||
|
||||
LIBETALK.INCOMING .EQ 8
|
||||
LIBETALK.PULSE .EQ 10
|
||||
|
||||
LIBETALK.AARP.Clear .EQ 12
|
||||
LIBETALK.AARP.Query .EQ 14
|
||||
LIBETALK.AARP.Add .EQ 16
|
||||
LIBETALK.AARP.GetCache .EQ 18
|
||||
*--------------------------------------
|
||||
S.ETKCFG.STATUS .EQ 0
|
||||
S.ETKCFG.DevID .EQ 1
|
||||
S.ETKCFG.MAC .EQ 2
|
||||
ERR.AARP.PENDING .EQ $B5
|
||||
*--------------------------------------
|
||||
*S.ETKCFG.STATUS .EQ 0
|
||||
*S.ETKCFG.DevID .EQ 1
|
||||
*S.ETKCFG.MAC .EQ 4
|
||||
S.ETKCFG.ADDR .EQ 10
|
||||
S.ETKCFG.NetID .EQ 11
|
||||
S.ETKCFG.NodID .EQ 13
|
||||
S.ETKCFG.Router .EQ 14
|
||||
S.ETKCFG.OBJECT .EQ 15 L+32
|
||||
*
|
||||
S.ETKCFG .EQ 8
|
||||
S.ETKCFG .EQ 48
|
||||
*--------------------------------------
|
||||
S.AARP.HTYPE .EQ S.ETH.SNAP+0 $0001
|
||||
S.AARP.PTYPE .EQ S.ETH.SNAP+2 $809B
|
||||
S.AARP.HLEN .EQ S.ETH.SNAP+4 $06
|
||||
S.AARP.PLEN .EQ S.ETH.SNAP+5 $04
|
||||
S.AARP.OPERATION .EQ S.ETH.SNAP+6 REQ=$0001,REPLY=$0002,PROBE=$0003
|
||||
S.AARP.OPERATION.REQ .EQ 1
|
||||
S.AARP.OPERATION.REP .EQ 2
|
||||
S.AARP.SHA .EQ S.ETH.SNAP+8 Sender MAC
|
||||
S.AARP.SPA .EQ S.ETH.SNAP+14 Sender IP
|
||||
S.AARP.THA .EQ S.ETH.SNAP+18 Target MAC
|
||||
S.AARP.TPA .EQ S.ETH.SNAP+24 Target IP
|
||||
*
|
||||
S.AARP .EQ S.ETH.SNAP+28
|
||||
*--------------------------------------
|
||||
S.AARPCACHE.S .EQ 0
|
||||
S.AARPCACHE.S.PENDING .EQ 1
|
||||
S.AARPCACHE.S.STATIC .EQ 2
|
||||
S.AARPCACHE.S.RESOLVED .EQ 128
|
||||
S.AARPCACHE.TTL .EQ 2
|
||||
S.AARPCACHE.ADDR .EQ 6
|
||||
S.AARPCACHE.MAC .EQ 10
|
||||
*
|
||||
S.AARPCACHE .EQ 16
|
||||
*--------------------------------------
|
||||
S.DDP1.DATALEN .EQ S.ETH.SNAP
|
||||
S.DDP1.DST.SKT .EQ S.ETH.SNAP+2
|
||||
S.DDP1.SRC.SKT .EQ S.ETH.SNAP+3
|
||||
S.DDP1.TYPE .EQ S.ETH.SNAP+4
|
||||
*
|
||||
S.DDP1 .EQ S.ETH.SNAP+5
|
||||
*--------------------------------------
|
||||
S.DDP2.DATALEN .EQ S.ETH.SNAP
|
||||
S.DDP2.CHECKSUM .EQ S.ETH.SNAP+2
|
||||
S.DDP2.DST.NET .EQ S.ETH.SNAP+4
|
||||
S.DDP2.SRC.NET .EQ S.ETH.SNAP+6
|
||||
S.DDP2.DST.NOD .EQ S.ETH.SNAP+8
|
||||
S.DDP2.SRC.NOD .EQ S.ETH.SNAP+9
|
||||
S.DDP2.DST.SKT .EQ S.ETH.SNAP+10
|
||||
S.DDP2.SRC.SKT .EQ S.ETH.SNAP+11
|
||||
S.DDP2.TYPE .EQ S.ETH.SNAP+12
|
||||
*
|
||||
S.DDP2 .EQ S.ETH.SNAP+13
|
||||
*--------------------------------------
|
||||
S.RTMP
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE INC/LIBETALK.I
|
||||
|
|
|
@ -0,0 +1,386 @@
|
|||
NEW
|
||||
PREFIX
|
||||
AUTO 4,1
|
||||
.LIST OFF
|
||||
*/--------------------------------------
|
||||
* # AARP.Clear
|
||||
* Clear AARP Cache
|
||||
* **In:**
|
||||
* ## RETURN VALUE
|
||||
*\--------------------------------------
|
||||
AARP.Clear ldx #K.AARPCACHE.SIZE*S.AARPCACHE
|
||||
|
||||
.1 stz AARP.CACHE-1,x
|
||||
dex
|
||||
bne .1
|
||||
clc
|
||||
rts
|
||||
*/--------------------------------------
|
||||
* # AARP.Query
|
||||
* Query AARP Cache and returns HW address
|
||||
* **In:**
|
||||
* PUSHW PTR to MAC (to fill)
|
||||
* PUSHW PTR to ADDR
|
||||
* ## RETURN VALUE
|
||||
* CC: hit: MAC filled
|
||||
* CS: missed
|
||||
*\--------------------------------------
|
||||
AARP.Query >PULLW ZPPtrADDR ADDR
|
||||
>PULLW ZPPtrMAC MAC
|
||||
|
||||
ldy #3
|
||||
.1 lda (ZPPtrADDR),y
|
||||
sta AARP.TmpCache+S.AARPCACHE.ADDR,y
|
||||
dey
|
||||
bpl .1
|
||||
jsr AARP.QUERY.I
|
||||
bcs .9
|
||||
|
||||
ldy #5
|
||||
.2 lda AARP.TmpCache+S.AARPCACHE.MAC,y
|
||||
sta (ZPPtrMAC),y
|
||||
dey
|
||||
bpl .2
|
||||
clc
|
||||
.9 rts
|
||||
*/--------------------------------------
|
||||
* # AARP.Add
|
||||
* Add a static AARP cache record
|
||||
* **In:**
|
||||
* PUSHW PTR to MAC
|
||||
* PUSHW PTR to IP
|
||||
*\--------------------------------------
|
||||
AARP.Add >PULLW ZPPtrADDR ADDR
|
||||
>PULLW ZPPtrMAC MAC
|
||||
|
||||
stz AARP.TmpCache+S.AARPCACHE.TTL
|
||||
stz AARP.TmpCache+S.AARPCACHE.TTL+1
|
||||
|
||||
ldy #3
|
||||
|
||||
.1 lda (ZPPtrADDR),y
|
||||
sta AARP.TmpCache+S.AARPCACHE.ADDR,y
|
||||
dey
|
||||
bpl .1
|
||||
|
||||
ldy #5
|
||||
|
||||
.2 lda (ZPPtrMAC),y
|
||||
sta AARP.TmpCache+S.AARPCACHE.MAC,y
|
||||
dey
|
||||
bpl .2
|
||||
|
||||
lda #S.AARPCACHE.S.RESOLVED+S.AARPCACHE.S.STATIC
|
||||
|
||||
AARP.ADD.I sta AARP.TmpCache
|
||||
|
||||
jsr AARP.FIND.BY.ADDR
|
||||
bcc .1
|
||||
jsr AARP.FIND.FREE
|
||||
|
||||
.1 ldy #S.AARPCACHE-1
|
||||
|
||||
.2 lda AARP.TmpCache,y
|
||||
sta (ZPCachePtr),y
|
||||
dey
|
||||
bpl .2
|
||||
|
||||
clc
|
||||
rts
|
||||
*/--------------------------------------
|
||||
* # AARP.GetCache
|
||||
* Return a Ptr to AARP Cache Table
|
||||
* **In:**
|
||||
* ## RETURN VALUE
|
||||
* Y,A = PTR to AARP.CACHE
|
||||
*\--------------------------------------
|
||||
AARP.GetCache >LDYA L.AARP.CACHE
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
* PRIVATE
|
||||
*--------------------------------------
|
||||
AARP.AddFromFrameInPtr
|
||||
ldy #S.DDP2.SRC.NET
|
||||
|
||||
lda (ZPFrameInPtr),y
|
||||
sta AARP.TmpCache+S.AARPCACHE.ADDR+1,x
|
||||
iny
|
||||
lda (ZPFrameInPtr),y
|
||||
sta AARP.TmpCache+S.AARPCACHE.ADDR+2,x
|
||||
iny
|
||||
iny
|
||||
lda (ZPFrameInPtr),y
|
||||
sta AARP.TmpCache+S.AARPCACHE.ADDR+3,x
|
||||
|
||||
ldy #S.ETH.SRCMAC+5
|
||||
ldx #5
|
||||
|
||||
.2 lda (ZPFrameInPtr),y
|
||||
sta AARP.TmpCache+S.AARPCACHE.MAC,x
|
||||
dey
|
||||
dex
|
||||
bpl .2
|
||||
|
||||
lda #K.AARP.TTL
|
||||
sta AARP.TmpCache+S.AARPCACHE.TTL
|
||||
lda /K.AARP.TTL
|
||||
sta AARP.TmpCache+S.AARPCACHE.TTL+1
|
||||
|
||||
lda #S.AARPCACHE.S.RESOLVED
|
||||
jmp AARP.ADD.I
|
||||
*--------------------------------------
|
||||
AARP.IN bra .10
|
||||
|
||||
ldy #S.AARP.TPA+3
|
||||
ldx #3
|
||||
|
||||
.1 lda (ZPFrameInPtr),y
|
||||
cmp ETKCFG+S.ETKCFG.ADDR,x
|
||||
bne AARP.IN.EXIT
|
||||
dey
|
||||
dex
|
||||
bpl .1
|
||||
|
||||
.10 ldy #S.AARP.OPERATION+1 HI byte
|
||||
|
||||
lda (ZPFrameInPtr),y
|
||||
cmp #S.AARP.OPERATION.REQ
|
||||
beq AARP.IN.REQ
|
||||
|
||||
cmp #S.AARP.OPERATION.REP
|
||||
beq AARP.IN.REP
|
||||
|
||||
AARP.IN.EXIT lda hFrameIn
|
||||
beq .8
|
||||
stz hFrameIn
|
||||
>SYSCALL FreeMem
|
||||
.8 clc
|
||||
rts
|
||||
|
||||
AARP.IN.REQ ldy #S.AARP.SPA+3
|
||||
ldx #3
|
||||
|
||||
.1 lda (ZPFrameInPtr),y
|
||||
sta AARP.REP.TPA,x
|
||||
dey
|
||||
dex
|
||||
bpl .1
|
||||
|
||||
ldy #S.AARP.SHA+5
|
||||
ldx #5
|
||||
|
||||
.2 lda (ZPFrameInPtr),y
|
||||
sta AARP.REP.DSTMAC,x
|
||||
sta AARP.REP.THA,x
|
||||
dey
|
||||
dex
|
||||
bpl .2
|
||||
|
||||
>LDYA L.AARP.REP
|
||||
jsr AARP.Send
|
||||
|
||||
bra AARP.IN.EXIT
|
||||
|
||||
AARP.IN.REP lda #K.AARP.TTL
|
||||
sta AARP.TmpCache+S.AARPCACHE.TTL
|
||||
lda /K.AARP.TTL
|
||||
sta AARP.TmpCache+S.AARPCACHE.TTL+1
|
||||
|
||||
ldy #S.AARP.SPA+3
|
||||
ldx #3
|
||||
|
||||
.1 lda (ZPFrameInPtr),y
|
||||
sta AARP.TmpCache+S.AARPCACHE.ADDR,x
|
||||
dey
|
||||
dex
|
||||
bpl .1
|
||||
|
||||
ldy #S.AARP.SHA+5
|
||||
ldx #5
|
||||
|
||||
.2 lda (ZPFrameInPtr),y
|
||||
sta AARP.TmpCache+S.AARPCACHE.MAC,x
|
||||
dey
|
||||
dex
|
||||
bpl .2
|
||||
|
||||
lda #S.AARPCACHE.S.RESOLVED
|
||||
|
||||
jsr AARP.ADD.I
|
||||
jmp AARP.IN.EXIT
|
||||
*--------------------------------------
|
||||
AARP.QUERY.I jsr AARP.FIND.BY.ADDR
|
||||
bcs .3 send an AARP request
|
||||
|
||||
lda (ZPCachePtr) get status...
|
||||
bpl .9 Pending...
|
||||
|
||||
ldy #S.AARPCACHE.MAC
|
||||
|
||||
.2 lda (ZPCachePtr),y
|
||||
sta AARP.TmpCache,y
|
||||
iny
|
||||
cpy #S.AARPCACHE.MAC+6
|
||||
bne .2
|
||||
|
||||
ldy #S.AARPCACHE.TTL
|
||||
lda #K.AARP.TTL
|
||||
sta (ZPCachePtr),y
|
||||
iny
|
||||
lda /K.AARP.TTL
|
||||
sta (ZPCachePtr),y
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
.3 ldx #3
|
||||
|
||||
.4 lda AARP.TmpCache+S.AARPCACHE.ADDR,x
|
||||
sta AARP.REQ.TPA,x
|
||||
dex
|
||||
bpl .4
|
||||
|
||||
>LDYA L.AARP.REQ
|
||||
jsr AARP.Send
|
||||
bcs .99
|
||||
|
||||
lda #K.AARP.PENDING.TTL
|
||||
sta AARP.TmpCache+S.AARPCACHE.TTL
|
||||
stz AARP.TmpCache+S.AARPCACHE.TTL+1
|
||||
|
||||
lda #S.AARPCACHE.S.PENDING
|
||||
jsr AARP.ADD.I
|
||||
|
||||
.9 lda #ERR.AARP.PENDING
|
||||
sec
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
AARP.FIND.BY.ADDR
|
||||
>LDYA L.AARP.CACHE
|
||||
>STYA ZPCachePtr
|
||||
|
||||
lda #K.AARPCACHE.SIZE
|
||||
sta TmpOffset
|
||||
|
||||
.1 lda (ZPCachePtr)
|
||||
beq .3
|
||||
|
||||
ldx #3
|
||||
ldy #S.AARPCACHE.ADDR+3
|
||||
|
||||
.2 lda AARP.TmpCache+S.AARPCACHE.ADDR,x
|
||||
cmp (ZPCachePtr),y
|
||||
bne .3
|
||||
dey
|
||||
dex
|
||||
bpl .2
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
.3 lda ZPCachePtr
|
||||
clc
|
||||
adc #S.AARPCACHE
|
||||
sta ZPCachePtr
|
||||
bcc .8
|
||||
inc ZPCachePtr+1
|
||||
|
||||
.8 dec TmpOffset
|
||||
bne .1
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
AARP.FIND.FREE >LDYA L.AARP.CACHE
|
||||
>STYA ZPCachePtr
|
||||
|
||||
lda #$ff
|
||||
sta TmpDWord
|
||||
sta TmpDWord+1
|
||||
|
||||
ldx #K.AARPCACHE.SIZE
|
||||
|
||||
.1 lda (ZPCachePtr)
|
||||
beq .8
|
||||
bpl .6
|
||||
|
||||
ldy #S.AARPCACHE.TTL
|
||||
lda (ZPCachePtr),y
|
||||
sec
|
||||
sbc TmpDWord
|
||||
iny
|
||||
lda (ZPCachePtr),y
|
||||
sbc TmpDWord+1
|
||||
bcc .6
|
||||
|
||||
lda (ZPCachePtr),y
|
||||
sta TmpDWord+1
|
||||
dey
|
||||
lda (ZPCachePtr),y
|
||||
sta TmpDWord
|
||||
|
||||
>LDYA ZPCachePtr
|
||||
>STYA ZPTmpPtr1 save lowest TTL slot ...
|
||||
|
||||
.6 lda ZPCachePtr
|
||||
clc
|
||||
adc #S.AARPCACHE
|
||||
sta ZPCachePtr
|
||||
bcc .7
|
||||
inc ZPCachePtr+1
|
||||
|
||||
.7 dex
|
||||
bne .1
|
||||
|
||||
>LDYA ZPTmpPtr1
|
||||
>STYA ZPCachePtr
|
||||
lda #0
|
||||
sta (ZPCachePtr)
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
AARP.EXPIRE >LDYA L.AARP.CACHE
|
||||
>STYA ZPCachePtr
|
||||
|
||||
ldx #K.AARPCACHE.SIZE
|
||||
|
||||
.1 lda (ZPCachePtr)
|
||||
beq .2
|
||||
and #S.AARPCACHE.S.STATIC
|
||||
bne .2
|
||||
|
||||
ldy #S.AARPCACHE.TTL
|
||||
sec
|
||||
lda (ZPCachePtr),y
|
||||
sbc #1
|
||||
sta (ZPCachePtr),y
|
||||
iny
|
||||
lda (ZPCachePtr),y
|
||||
sbc #0
|
||||
sta (ZPCachePtr),y
|
||||
bcs .2
|
||||
|
||||
lda #0
|
||||
sta (ZPCachePtr)
|
||||
|
||||
.2 lda ZPCachePtr
|
||||
clc
|
||||
adc #S.AARPCACHE
|
||||
sta ZPCachePtr
|
||||
bcc .3
|
||||
inc ZPCachePtr+1
|
||||
|
||||
.3 dex
|
||||
bne .1
|
||||
rts
|
||||
*--------------------------------------
|
||||
AARP.Send >STYA IOCTL+S.IOCTL.BUFPTR
|
||||
>LDYAI S.AARP
|
||||
>STYA IOCTL+S.IOCTL.BYTECNT
|
||||
jmp FRM.Send.IOCTL
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/LIB/LIBETALK.S.AARP
|
||||
LOAD USR/SRC/LIB/LIBETALK.S
|
||||
ASM
|
|
@ -0,0 +1,35 @@
|
|||
NEW
|
||||
PREFIX
|
||||
AUTO 4,1
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
CFG.SET >PULLW ZPTmpPtr1 ETKCFG
|
||||
|
||||
ldy #S.ETKCFG-1
|
||||
|
||||
.1 lda (ZPTmpPtr1),y
|
||||
sta ETKCFG,y
|
||||
dey
|
||||
bpl .1
|
||||
|
||||
ldx #5
|
||||
|
||||
.2 lda ETKCFG+S.NETCFG.MAC,x
|
||||
sta AARP.REQ.SRCMAC,x
|
||||
sta AARP.REQ.SHA,x
|
||||
sta AARP.REP.SRCMAC,x
|
||||
sta AARP.REP.SHA,x
|
||||
dex
|
||||
bpl .2
|
||||
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CFG.GET >LDYA L.ETKCFG
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/LIB/LIBETALK.S.CFG
|
||||
LOAD USR/SRC/LIB/LIBETALK.S
|
||||
ASM
|
|
@ -0,0 +1,12 @@
|
|||
NEW
|
||||
PREFIX
|
||||
AUTO 4,1
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
DDP.IN clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/LIB/LIBETALK.S.DDP
|
||||
LOAD USR/SRC/LIB/LIBETALK.S
|
||||
ASM
|
|
@ -0,0 +1,11 @@
|
|||
NEW
|
||||
PREFIX
|
||||
AUTO 4,1
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/LIB/LIBETALK.S.ELAP
|
||||
LOAD USR/SRC/LIB/LIBETALK.S
|
||||
ASM
|
|
@ -0,0 +1,23 @@
|
|||
NEW
|
||||
PREFIX
|
||||
AUTO 4,1
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
*--------------------------------------
|
||||
FRM.Send ldx #3
|
||||
|
||||
.1 lda ZPFrameOutPtr,x Get Frame Ptr & Len
|
||||
sta IOCTL+S.IOCTL.BUFPTR,x
|
||||
dex
|
||||
bpl .1
|
||||
|
||||
FRM.Send.IOCTL >PUSHW L.IOCTL
|
||||
>PUSHBI IOCTL.WRITE
|
||||
lda ETKCFG+S.NETCFG.DevID
|
||||
>SYSCALL IOCTL
|
||||
rts
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/LIB/LIBETALK.S.FRM
|
||||
LOAD USR/SRC/LIB/LIBETALK.S
|
||||
ASM
|
|
@ -0,0 +1,11 @@
|
|||
NEW
|
||||
PREFIX
|
||||
AUTO 4,1
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/LIB/LIBETALK.S.RTMP
|
||||
LOAD USR/SRC/LIB/LIBETALK.S
|
||||
ASM
|
|
@ -10,6 +10,7 @@ AUTO 4,1
|
|||
.INB INC/A2OSX.I
|
||||
.INB INC/NIC.I
|
||||
.INB INC/ETH.I
|
||||
.INB INC/LIB.NET.I
|
||||
.INB INC/LIBETALK.I
|
||||
*--------------------------------------
|
||||
ZPFrameInPtr .EQ ZPLIB
|
||||
|
@ -24,8 +25,12 @@ ZPFrameOutLen .EQ ZPLIB+10
|
|||
ZPDataOutPtr .EQ ZPLIB+12
|
||||
ZPDataOutLen .EQ ZPLIB+14
|
||||
|
||||
ZPIOCTL .EQ ZPLIB+16
|
||||
ZPTmpPtr1 .EQ ZPLIB+18
|
||||
ZPPtrADDR .EQ ZPLIB+16
|
||||
ZPPtrMAC .EQ ZPLIB+18
|
||||
|
||||
ZPCachePtr .EQ ZPLIB+24
|
||||
ZPTmpPtr1 .EQ ZPLIB+26
|
||||
|
||||
*--------------------------------------
|
||||
* File Header (16 Bytes)
|
||||
*--------------------------------------
|
||||
|
@ -49,45 +54,68 @@ CS.START cld
|
|||
|
||||
.DA INCOMING
|
||||
.DA PULSE
|
||||
|
||||
.DA AARP.CLEAR
|
||||
.DA AARP.QUERY
|
||||
.DA AARP.ADD
|
||||
.DA AARP.GetCACHE
|
||||
|
||||
L.IOCTL .DA IOCTL
|
||||
|
||||
L.AARP.REQ .DA AARP.REQ
|
||||
L.AARP.REP .DA AARP.REP
|
||||
|
||||
L.AARP.CACHE .DA AARP.CACHE
|
||||
*--------------------------------------
|
||||
L.ETKCFG .DA ETKCFG
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
LIB.LOAD
|
||||
*--------------------------------------
|
||||
LIB.UNLOAD
|
||||
LIB.LOAD ldx RefCount
|
||||
bne .8
|
||||
|
||||
jsr AARP.CLEAR
|
||||
|
||||
.8 inc RefCount
|
||||
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CFG.SET >PULLW ZPTmpPtr1 IPCFG
|
||||
|
||||
ldy #0
|
||||
|
||||
.1 lda (ZPTmpPtr1),y
|
||||
sta ETKCFG,y
|
||||
iny
|
||||
cpy #S.ETKCFG
|
||||
bne .1
|
||||
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CFG.GET >LDYA L.ETKCFG
|
||||
LIB.UNLOAD dec RefCount
|
||||
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
INCOMING sta hFrameIn
|
||||
>PULLW ZPIOCTL
|
||||
|
||||
|
||||
>PULLW ZPTmpPtr1
|
||||
ldy #S.IOCTL.BUFPTR+3
|
||||
|
||||
.1 lda (ZPIOCTL),y Get Frame Ptr & Len
|
||||
.1 lda (ZPTmpPtr1),y Get Frame Ptr & Len
|
||||
sta ZPFrameInPtr-S.IOCTL.BUFPTR,y
|
||||
dey
|
||||
bpl .1
|
||||
|
||||
ldy #S.ETH.SNAP.PROTO
|
||||
lda (ZPFrameInPtr),y
|
||||
tax
|
||||
iny
|
||||
lda (ZPFrameInPtr),y
|
||||
|
||||
sec
|
||||
cmp #S.ETH.SNAP.PROTO.AARP
|
||||
bne .2
|
||||
cpx /S.ETH.SNAP.PROTO.AARP
|
||||
bne .2
|
||||
|
||||
jmp AARP.IN
|
||||
|
||||
.2 cmp #S.ETH.SNAP.PROTO.DDP
|
||||
bne .9
|
||||
cpx /S.ETH.SNAP.PROTO.DDP
|
||||
bne .9
|
||||
|
||||
jmp DDP.IN
|
||||
|
||||
.9 sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
*--------------------------------------
|
||||
|
@ -97,11 +125,57 @@ PULSE and #S.EVT.F.T1SEC
|
|||
beq .9
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
.INB USR/SRC/LIB/LIBETALK.S.AARP
|
||||
.INB USR/SRC/LIB/LIBETALK.S.CFG
|
||||
.INB USR/SRC/LIB/LIBETALK.S.DDP
|
||||
.INB USR/SRC/LIB/LIBETALK.S.ELAP
|
||||
.INB USR/SRC/LIB/LIBETALK.S.FRM
|
||||
.INB USR/SRC/LIB/LIBETALK.S.RTMP
|
||||
*--------------------------------------
|
||||
CS.END
|
||||
*--------------------------------------
|
||||
AARP.REQ .HS 090007FFFFFF S.ETH.DSTMAC
|
||||
AARP.REQ.SRCMAC .BS 6
|
||||
.DA #0,#36 S.ETH.802.3.LENGTH
|
||||
.HS AA S.ETH.802.2.DSTSAP
|
||||
.HS AA S.ETH.802.2.SRCSAP
|
||||
.HS 03 S.ETH.802.2.CTRL
|
||||
.HS 00.00.00.80.F3 S.ETH.SNAP.PROTO
|
||||
.HS 00.01.80.9B.06.04
|
||||
.HS 0001 Request
|
||||
AARP.REQ.SHA .BS 6
|
||||
AARP.REQ.SPA .BS 4
|
||||
AARP.REQ.THA .BS 6
|
||||
AARP.REQ.TPA .BS 4
|
||||
.BS AARP.REQ+60-*
|
||||
AARP.REQ.LEN .EQ 60
|
||||
*--------------------------------------
|
||||
AARP.REP .EQ *
|
||||
AARP.REP.DSTMAC .BS 6
|
||||
AARP.REP.SRCMAC .BS 6
|
||||
.DA #0,#36 S.ETH.802.3.LENGTH
|
||||
.HS AA S.ETH.802.2.DSTSAP
|
||||
.HS AA S.ETH.802.2.SRCSAP
|
||||
.HS 03 S.ETH.802.2.CTRL
|
||||
.HS 00.00.00.80.F3 S.ETH.SNAP.PROTO
|
||||
.HS 00.01.80.9B.06.04
|
||||
.HS 0002 Response
|
||||
AARP.REP.SHA .BS 6
|
||||
AARP.REP.SPA .BS 4
|
||||
AARP.REP.THA .BS 6
|
||||
AARP.REP.TPA .BS 4
|
||||
.BS AARP.REP+60-*
|
||||
AARP.REP.LEN .EQ 60
|
||||
*--------------------------------------
|
||||
RefCount .BS 1
|
||||
IOCTL .BS S.IOCTL
|
||||
hFrameIn .BS 1
|
||||
ETKCFG .BS S.ETKCFG
|
||||
AARP.CACHE .BS K.AARPCACHE.SIZE*S.AARPCACHE
|
||||
AARP.TmpCache .BS S.AARPCACHE
|
||||
TmpDWord .BS 4
|
||||
TmpOffset .BS 2
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/LIB/LIBETALK.S
|
||||
|
|
|
@ -446,7 +446,7 @@ RefCount .DA #0
|
|||
DYNPORT.LAST .DA K.DYNPORT.START
|
||||
hDNSSocket .BS 1
|
||||
DNS.TmpCache .BS S.DNSCACHE
|
||||
ARP.TmpCache .BS S.ARP
|
||||
ARP.TmpCache .BS S.ARPCACHE
|
||||
*--------------------------------------
|
||||
SKT.Index .BS 1
|
||||
SKT.TABLE .BS K.SKTTABLE.SIZE
|
||||
|
|
|
@ -130,7 +130,6 @@ CS.INIT.LIBS lda LibCnt
|
|||
|
||||
ldy LibCnt
|
||||
sta hLIBs,y
|
||||
inc LibCnt
|
||||
|
||||
tay
|
||||
ldx #LIBNET.GETCFG
|
||||
|
@ -154,6 +153,16 @@ CS.INIT.LIBS lda LibCnt
|
|||
dex
|
||||
bpl .2
|
||||
|
||||
* >PUSHW pNETCFG
|
||||
|
||||
* ldy LibCnt
|
||||
* lda hLIBs,y
|
||||
* tay
|
||||
|
||||
* ldx #LIBNET.SETCFG
|
||||
* jsr A2osX.LIBCALL
|
||||
|
||||
inc LibCnt
|
||||
lda LibCnt
|
||||
cmp #LIB.MAX
|
||||
bne .1
|
||||
|
|
Loading…
Reference in New Issue