mirror of
https://github.com/A2osX/A2osX.git
synced 2025-01-13 08:29:46 +00:00
Kernel 0.93+
This commit is contained in:
parent
202df2c52d
commit
5ee518ca8d
Binary file not shown.
@ -45,14 +45,18 @@ Dev.Detect >STYA ARGS
|
||||
|
||||
>LDYA L.MSG.DETECT
|
||||
>SYSCALL puts
|
||||
|
||||
ldx #$70+$88
|
||||
ldy #7
|
||||
|
||||
.1 lda A2osX.S,y IO based detection, avoid scanning in Disk Controller IO!!!!
|
||||
bne .2
|
||||
|
||||
lda #W5100.MR.RST
|
||||
sta W5100.MR,x
|
||||
|
||||
lda #0
|
||||
|
||||
.10 dec give some time....
|
||||
bne .10
|
||||
|
||||
@ -65,13 +69,16 @@ Dev.Detect >STYA ARGS
|
||||
lda W5100.MR,x
|
||||
cmp #W5100.MR.AI+W5100.MR.IND
|
||||
bne .2
|
||||
|
||||
>AR.SELECT RTR
|
||||
lda W5100.DR,x Get RTR HI
|
||||
cmp /2000
|
||||
bne .2
|
||||
|
||||
lda W5100.DR,x Get RTR LO
|
||||
cmp #2000
|
||||
beq .3
|
||||
|
||||
.2 dec FD.DEV.NAME+3
|
||||
txa
|
||||
sec
|
||||
@ -79,33 +86,41 @@ Dev.Detect >STYA ARGS
|
||||
tax
|
||||
dey
|
||||
bne .1
|
||||
|
||||
>LDYA L.MSG.DETECT.KO
|
||||
>SYSCALL puts
|
||||
|
||||
lda #MLI.E.NODEV
|
||||
sec
|
||||
rts
|
||||
|
||||
.3 stx DEVSLOTx0
|
||||
sty DEVSLOT0x
|
||||
|
||||
lda #A2osX.S.NIC
|
||||
sta A2osX.S,y
|
||||
|
||||
jsr Dev.ParseArgs
|
||||
bcs .9
|
||||
.8 >PUSHW L.FD.DEV.NAME
|
||||
|
||||
>PUSHW L.FD.DEV.NAME
|
||||
>PUSHBI 2
|
||||
>LDYA L.MSG.DETECT.OK
|
||||
>SYSCALL printf
|
||||
|
||||
>PUSHWI DRV.END
|
||||
>PUSHWI DRV.CS.END-DRV.CS.START
|
||||
>PUSHWI DRV.CS.START
|
||||
>LDYA L.DRV.CS.START
|
||||
>SYSCALL InsDrv
|
||||
bcs .9
|
||||
|
||||
>STYA FD.DEV+S.FD.DEV.DRVPTR
|
||||
>PUSHW L.FD.DEV.NAME
|
||||
>LDYA L.FD.DEV
|
||||
>SYSCALL MKDEV
|
||||
bcs .9
|
||||
|
||||
ldx DEVSLOT0x
|
||||
lda #A2osX.S.NIC
|
||||
sta A2osX.S,x
|
||||
@ -116,6 +131,7 @@ Dev.ParseArgs >LDYA ARGS
|
||||
>STYA ZPArgPTR
|
||||
lda (ZPArgPTR)
|
||||
bne .1
|
||||
|
||||
lda A2osX.RANDOM16
|
||||
eor A2osX.TIMER16
|
||||
sta DCB+S.DCB.NIC.MAC+3
|
||||
@ -125,6 +141,7 @@ Dev.ParseArgs >LDYA ARGS
|
||||
sta DCB+S.DCB.NIC.MAC+5
|
||||
clc
|
||||
rts
|
||||
|
||||
.1 >PUSHW L.MAC5
|
||||
>PUSHW L.MAC4
|
||||
>PUSHW L.MAC3
|
||||
@ -136,8 +153,9 @@ Dev.ParseArgs >LDYA ARGS
|
||||
>LDYA ZPArgPtr
|
||||
>SYSCALL sscanf
|
||||
bcc .8
|
||||
|
||||
lda #E.SYN
|
||||
sec
|
||||
* sec
|
||||
.8 rts
|
||||
*--------------------------------------
|
||||
CS.END
|
||||
@ -192,44 +210,41 @@ DRV.CS.START cld
|
||||
*--------------------------------------
|
||||
STATUS >STYA ZPIOCTL
|
||||
|
||||
jsr GET.BUFPTR
|
||||
|
||||
ldy #S.IOCTL.STATCODE
|
||||
lda (ZPIOCTL),y
|
||||
beq .1
|
||||
|
||||
cmp #S.IOCTL.STATCODE.GETDIB
|
||||
bne STATUS.DCB
|
||||
ldx #S.DIB-1
|
||||
.HS 2C bit abs
|
||||
.1 ldx #3
|
||||
|
||||
ldy #S.IOCTL.BUFPTR
|
||||
lda (ZPIOCTL),y
|
||||
sta .3+1
|
||||
iny
|
||||
lda (ZPIOCTL),y
|
||||
sta .3+2
|
||||
.2 lda DIB,x
|
||||
.3 sta $ffff,x SELF MODIFIED
|
||||
dex
|
||||
ldy #S.DIB-1
|
||||
.HS 2C bit abs
|
||||
|
||||
.1 ldy #3
|
||||
|
||||
.2 lda DIB,y
|
||||
sta (ZPBufPtr),y
|
||||
dey
|
||||
bpl .2
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
STATUS.DCB cmp #S.IOCTL.STATCODE.GETDCB
|
||||
bne STATUS.9
|
||||
|
||||
.1 ldy #S.IOCTL.BUFPTR
|
||||
lda (ZPIOCTL),y
|
||||
sta .3+1
|
||||
iny
|
||||
lda (ZPIOCTL),y
|
||||
sta .3+2
|
||||
ldx #S.DCB.NIC-1
|
||||
.2 lda DCB,x
|
||||
.3 sta $ffff,x SELF MODIFIED
|
||||
dex
|
||||
bpl .2
|
||||
ldy #S.DCB.NIC-1
|
||||
|
||||
.1 lda DCB,y
|
||||
sta (ZPBufPtr),y
|
||||
dey
|
||||
bpl .1
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
STATUS.9 lda #MLI.E.BADCTL
|
||||
sec
|
||||
rts
|
||||
@ -237,31 +252,32 @@ STATUS.9 lda #MLI.E.BADCTL
|
||||
.DO U2AI=1
|
||||
CONTROL >STYA ZPIOCTL
|
||||
|
||||
jsr GET.BUFPTR
|
||||
|
||||
ldy #S.IOCTL.CTRLCODE
|
||||
lda (ZPIOCTL),y
|
||||
cmp #S.IOCTL.CTRLCODE.SETDCB
|
||||
bne STATUS.9
|
||||
.1 ldy #S.IOCTL.BUFPTR
|
||||
lda (ZPIOCTL),y
|
||||
sta .2+1
|
||||
iny
|
||||
lda (ZPIOCTL),y
|
||||
sta .2+2
|
||||
ldx #S.DCB.NIC-1
|
||||
.2 lda $ffff,x SELF MODIFIED
|
||||
sta DCB,x
|
||||
dex
|
||||
|
||||
ldy #S.DCB.NIC-1
|
||||
|
||||
.2 lda (ZPBufPtr),y
|
||||
sta DCB,y
|
||||
dey
|
||||
bpl .2
|
||||
|
||||
bra OPEN.I
|
||||
.FIN
|
||||
*--------------------------------------
|
||||
OPEN lda #S.DIB.S.OPENED
|
||||
bit DIB+S.DIB.S
|
||||
beq .10
|
||||
beq OPEN.I
|
||||
|
||||
lda #MLI.E.OPEN
|
||||
sec
|
||||
rts
|
||||
.10 jsr CLOSE
|
||||
|
||||
OPEN.I jsr CLOSE
|
||||
|
||||
* ldx DEVSLOTx0 Done by CLOSE
|
||||
|
||||
@ -299,30 +315,40 @@ OPEN lda #S.DIB.S.OPENED
|
||||
>AR.SELECT GAR
|
||||
|
||||
ldy #0
|
||||
|
||||
.2 lda DCB+S.DCB.NIC.GW,y
|
||||
sta W5100.DR,x
|
||||
iny
|
||||
cpy #4
|
||||
bne .2
|
||||
|
||||
* >AR.SELECT SUBR Implicit, next to GAR
|
||||
ldy #0
|
||||
|
||||
.3 lda DCB+S.DCB.NIC.MASK,y
|
||||
sta W5100.DR,x
|
||||
iny
|
||||
cpy #4
|
||||
bne .3
|
||||
|
||||
>AR.SELECT SIPR
|
||||
|
||||
ldy #0
|
||||
|
||||
.4 lda DCB+S.DCB.NIC.IP,y
|
||||
sta W5100.DR,x
|
||||
iny
|
||||
cpy #4
|
||||
bne .4
|
||||
.FIN
|
||||
|
||||
>AR.SELECT S0.CR
|
||||
lda #W5100.AR.S0.CR.OPEN
|
||||
sta W5100.DR,x
|
||||
|
||||
lda #S.DIB.S.OPENED
|
||||
tsb DIB+S.DIB.S
|
||||
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
@ -337,9 +363,19 @@ CLOSE ldx DEVSLOTx0
|
||||
lda $C019
|
||||
.2 eor $C019
|
||||
bpl .2
|
||||
|
||||
lda #S.DIB.S.OPENED
|
||||
trb DIB+S.DIB.S
|
||||
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
READWRITE.9 lda #E.NODATA
|
||||
|
||||
READWRITE.99 plp
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
READ php
|
||||
sei
|
||||
|
||||
@ -350,13 +386,7 @@ READ php
|
||||
>AR.SELECT S0.RX.RSR
|
||||
lda W5100.DR,x get the received size HI
|
||||
ora W5100.DR,x LO
|
||||
bne .1
|
||||
|
||||
lda #E.NODATA
|
||||
|
||||
.9 plp
|
||||
sec
|
||||
rts
|
||||
beq READWRITE.9
|
||||
|
||||
.1 >AR.SELECT S0.RX.RD
|
||||
lda W5100.DR,x get the received ptr HI
|
||||
@ -372,15 +402,18 @@ READ php
|
||||
|
||||
.DO U2AI=1
|
||||
ldy #0
|
||||
|
||||
.10 lda W5100.DR,x
|
||||
sta RX.IP,y
|
||||
iny
|
||||
cpy #4
|
||||
bne .10
|
||||
|
||||
ldy W5100.DR,x get RX.Size HI
|
||||
sty RXTX.Size+1
|
||||
lda W5100.DR,x get RX.Size LO
|
||||
sta RXTX.Size
|
||||
|
||||
clc
|
||||
adc #S.IP
|
||||
pha
|
||||
@ -395,7 +428,7 @@ READ php
|
||||
.FIN
|
||||
|
||||
>SYSCALL2 getmem
|
||||
bcs .9
|
||||
bcs READWRITE.99
|
||||
|
||||
>STYA ZPBufPtr
|
||||
phx
|
||||
@ -443,6 +476,7 @@ READ php
|
||||
.DO U2AI=1
|
||||
ldx #3
|
||||
ldy #S.IP.SRC+3
|
||||
|
||||
.11 lda RX.IP,x
|
||||
sta (ZPBufPtr),y
|
||||
dey
|
||||
@ -458,12 +492,15 @@ READ php
|
||||
|
||||
.2 inc Counter
|
||||
bne .3
|
||||
|
||||
inc Counter+1
|
||||
beq .4
|
||||
|
||||
.3 lda W5100.DR,x
|
||||
sta (ZPBufPtr),y
|
||||
iny
|
||||
bne .2
|
||||
|
||||
inc ZPBufPtr+1
|
||||
bne .2
|
||||
|
||||
@ -518,18 +555,12 @@ WRITE php
|
||||
ldy W5100.DR,x LO
|
||||
cpy RXTX.Size
|
||||
sbc RXTX.Size+1
|
||||
bcs WRITE.1
|
||||
bcs .10
|
||||
|
||||
jmp READWRITE.9
|
||||
|
||||
.10 jsr GET.BUFPTR
|
||||
|
||||
lda #E.NODATA
|
||||
plp
|
||||
sec
|
||||
rts
|
||||
WRITE.1 ldy #S.IOCTL.BUFPTR
|
||||
lda (ZPIOCTL),y
|
||||
sta ZPBufPtr
|
||||
iny
|
||||
lda (ZPIOCTL),y
|
||||
sta ZPBufPtr+1
|
||||
.DO U2AI=1
|
||||
>AR.SELECT S0.DIPR
|
||||
ldy #S.IP.DST
|
||||
@ -539,6 +570,7 @@ WRITE.1 ldy #S.IOCTL.BUFPTR
|
||||
iny
|
||||
cpy #S.IP.DST+4
|
||||
bne .1
|
||||
|
||||
>AR.SELECT S0.PROTO
|
||||
ldy #S.IP.PROTOCOL
|
||||
lda (ZPBufPtr),y
|
||||
@ -546,6 +578,7 @@ WRITE.1 ldy #S.IOCTL.BUFPTR
|
||||
.ELSE
|
||||
ldy #S.ETH.SRCMAC+5
|
||||
ldx #5
|
||||
|
||||
.1 lda DCB+S.DCB.NIC.MAC,x
|
||||
sta (ZPBufPtr),y
|
||||
dey
|
||||
@ -569,17 +602,21 @@ WRITE.1 ldy #S.IOCTL.BUFPTR
|
||||
.ELSE
|
||||
ldy #0
|
||||
.FIN
|
||||
|
||||
.2 inc Counter
|
||||
bne .3
|
||||
|
||||
inc Counter+1
|
||||
beq .8
|
||||
|
||||
.3 lda (ZPBufPtr),y
|
||||
sta W5100.DR,x
|
||||
iny
|
||||
bne .2
|
||||
|
||||
inc ZPBufPtr+1
|
||||
bne .2
|
||||
bra .2
|
||||
|
||||
.8 >AR.SELECT S0.TX.WR
|
||||
lda Offset
|
||||
clc
|
||||
@ -590,6 +627,7 @@ WRITE.1 ldy #S.IOCTL.BUFPTR
|
||||
sta W5100.DR,x write HI
|
||||
pla
|
||||
sta W5100.DR,x write LO
|
||||
|
||||
>AR.SELECT S0.CR
|
||||
lda #W5100.AR.S0.CR.SEND
|
||||
sta W5100.DR,x
|
||||
@ -598,6 +636,14 @@ WRITE.1 ldy #S.IOCTL.BUFPTR
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
GET.BUFPTR ldy #S.IOCTL.BUFPTR
|
||||
lda (ZPIOCTL),y
|
||||
sta ZPBufPtr
|
||||
iny
|
||||
lda (ZPIOCTL),y
|
||||
sta ZPBufPtr+1
|
||||
rts
|
||||
*--------------------------------------
|
||||
DRV.CS.END
|
||||
DEVSLOTx0 .BS 1
|
||||
*--------------------------------------
|
||||
|
@ -17,42 +17,53 @@ CFG.SET >PULLW ZPTmpPtr1 IPCFG
|
||||
sta ARP.REP.SHA,x
|
||||
dex
|
||||
bpl .2
|
||||
|
||||
ldx #3
|
||||
|
||||
.3 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 .3
|
||||
|
||||
lda IPCFG+S.NETCFG.DevFlags
|
||||
and #S.DCB.NIC.FLAGS.ARPOFFLOAD
|
||||
beq .5
|
||||
|
||||
>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.NETCFG.DevID
|
||||
>SYSCALL2 IOCTL
|
||||
|
||||
ldx #11 IP/MASK/GW
|
||||
|
||||
.4 lda IPCFG+S.IPCFG.IP,x
|
||||
sta DCB.NIC+S.DCB.NIC.IP,x
|
||||
dex
|
||||
bpl .4
|
||||
lda S.IOCTL.CTRLCODE.SETDCB
|
||||
sta S.IOCTL.CTRLCODE
|
||||
|
||||
lda #S.IOCTL.CTRLCODE.SETDCB
|
||||
sta IOCTL+S.IOCTL.CTRLCODE
|
||||
|
||||
>PUSHW L.IOCTL
|
||||
>PUSHBI IOCTL.CONTROL
|
||||
lda IPCFG+S.NETCFG.DevID
|
||||
>SYSCALL2 IOCTL
|
||||
bcs .9
|
||||
|
||||
.5 lda hDNSSocket
|
||||
beq .6
|
||||
|
||||
jsr SKT.Shutdown
|
||||
stz hDNSSocket
|
||||
|
||||
.6 lda IPCFG+S.IPCFG.DNS1
|
||||
beq .8
|
||||
|
||||
@ -68,6 +79,7 @@ CFG.SET >PULLW ZPTmpPtr1 IPCFG
|
||||
lda hDNSSocket
|
||||
jsr SKT.Bind
|
||||
bcs .9
|
||||
|
||||
>LDYAI UDP.PORT.DNS
|
||||
>STYA SA.REMOTE+S.SOCKADDR.PORT
|
||||
>PUSHW L.SA.REMOTE
|
||||
|
@ -90,6 +90,7 @@ CS.INIT.DEV >PUSHBI 0
|
||||
lda #MLI.E.NODEV
|
||||
sec
|
||||
rts
|
||||
|
||||
.8 sta DevID
|
||||
|
||||
>PUSHW L.DEVNAME
|
||||
|
@ -17,9 +17,12 @@ K.GetDevByName >STYA ZPPtr1 requested dev name
|
||||
sta ZPPtr2
|
||||
lda Dev.Table,x
|
||||
beq K.GetDev.NODEV
|
||||
|
||||
adc /S.FD.DEV
|
||||
sta ZPPtr2+1
|
||||
|
||||
ldy #$ff
|
||||
|
||||
.2 iny
|
||||
lda (ZPPtr1),y
|
||||
cmp (ZPPtr2),y
|
||||
@ -27,10 +30,12 @@ K.GetDevByName >STYA ZPPtr1 requested dev name
|
||||
|
||||
ora (ZPPtr2),y Both char are 0 ?
|
||||
bne .2 no....loop
|
||||
.3 ldy Dev.Table-1,x
|
||||
.4 lda Dev.Table,x
|
||||
|
||||
ldy Dev.Table-1,x
|
||||
lda Dev.Table,x
|
||||
clc
|
||||
rts
|
||||
|
||||
.7 inx
|
||||
inx
|
||||
cpx #K.DEV.MAX*2+1
|
||||
@ -81,56 +86,72 @@ K.GetDevStatus.I
|
||||
* ## RETURN VALUE
|
||||
* A = hDEV
|
||||
*\--------------------------------------
|
||||
K.MKDev jsr SHARED.SPtr1PPtr2 ptr1=fd, ptr2=name
|
||||
K.MKDev jsr SHARED.SPtr1PPtr2 ptr1=fd, ptr2=name
|
||||
|
||||
ldx DevMgr.DevIdx
|
||||
cpx #K.DEV.MAX*2+1
|
||||
beq .9
|
||||
|
||||
ldy #$ff
|
||||
ldx #S.FD.DEV
|
||||
|
||||
.1 iny Get DEV name length
|
||||
inx compute FD+NAME+\0 in X
|
||||
lda (ZPPtr2),y
|
||||
bne .1
|
||||
|
||||
txa
|
||||
tay
|
||||
lda #0
|
||||
|
||||
jsr MEM.GetKrnlBuf
|
||||
bcs .99
|
||||
|
||||
>STYA pFD
|
||||
>STYA .4+1
|
||||
|
||||
ldx DevMgr.DevIdx
|
||||
sta Dev.Table,x
|
||||
tya
|
||||
sta Dev.Table-1,x
|
||||
|
||||
ldy #S.FD.DEV-1
|
||||
|
||||
.2 lda (ZPPtr1),y
|
||||
sta (pFD),y
|
||||
dey
|
||||
bpl .2
|
||||
|
||||
ldy #$ff
|
||||
ldx #S.FD.DEV-1
|
||||
|
||||
.3 iny
|
||||
inx
|
||||
lda (ZPPtr2),y
|
||||
.4 sta $ffff,x
|
||||
bne .3
|
||||
|
||||
>LDYAI K.IOBuf
|
||||
>STYA K.S.IOCTL+S.IOCTL.BUFPTR
|
||||
|
||||
lda #S.IOCTL.STATCODE.STATUS
|
||||
jsr K.GetDevStatus.I
|
||||
bcs .99
|
||||
|
||||
lda K.IOBuf Get Status byte
|
||||
bit #S.DIB.S.IRQ
|
||||
beq .8
|
||||
|
||||
ldx #0
|
||||
|
||||
.5 lda IRQ.Vectors+1,x
|
||||
beq .7
|
||||
|
||||
inx
|
||||
inx
|
||||
cpx #K.IRQDEV.MAX*2+1
|
||||
bne .5
|
||||
|
||||
.9 lda #E.OOH
|
||||
* sec
|
||||
.99 rts
|
||||
|
Loading…
x
Reference in New Issue
Block a user