Kernel 0.93+

This commit is contained in:
Rémy GIBERT 2019-10-23 11:34:25 +02:00
parent 202df2c52d
commit 5ee518ca8d
5 changed files with 142 additions and 62 deletions

Binary file not shown.

View File

@ -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
*--------------------------------------

View File

@ -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

View File

@ -90,6 +90,7 @@ CS.INIT.DEV >PUSHBI 0
lda #MLI.E.NODEV
sec
rts
.8 sta DevID
>PUSHW L.DEVNAME

View File

@ -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