mirror of
https://github.com/A2osX/A2osX.git
synced 2025-02-16 18:30:26 +00:00
Kernel 0.9.2
This commit is contained in:
parent
f5fa2094c1
commit
3ad3f9fd18
@ -684,6 +684,7 @@ Read formatted data from string
|
||||
|
||||
TODO : %10s
|
||||
`>LDYA s`
|
||||
`>SYSCALL sscanf`
|
||||
**Out:**
|
||||
A = Number of arguments filled.
|
||||
|
||||
|
Binary file not shown.
Binary file not shown.
@ -92,12 +92,15 @@ CS.RUN.IPOK ldy #S.PS.ARGC
|
||||
lda #1
|
||||
>SYSCALL GetArg
|
||||
>PUSHYA
|
||||
>PUSHBI 2
|
||||
>LDYA L.MSG.UNKNOWN
|
||||
>SYSCALL printf
|
||||
bra .99
|
||||
|
||||
.9 >LDYA L.MSG.USAGE
|
||||
.99 >SYSCALL puts
|
||||
lda #K.E.SYN
|
||||
>SYSCALL puts
|
||||
|
||||
.99 lda #K.E.SYN
|
||||
sec
|
||||
rts
|
||||
|
||||
|
@ -995,7 +995,7 @@ DIB .DA #S.DIB.S.WRITE+S.DIB.S.READ
|
||||
>PSTR "ANSI 80c Console"
|
||||
.DA #S.DIB.T.CHAR
|
||||
.DA #0
|
||||
.DA KVER
|
||||
.DA K.VER
|
||||
*--------------------------------------
|
||||
DRV.END
|
||||
MAN
|
||||
|
@ -372,11 +372,11 @@ CLOSE ldx DEVSLOTx0
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
READ >STYA ZPIOCTL
|
||||
|
||||
php
|
||||
READ php
|
||||
sei
|
||||
|
||||
>STYA ZPIOCTL
|
||||
|
||||
ldx DEVSLOTx0
|
||||
|
||||
lda /PP.RxEvent
|
||||
@ -461,27 +461,11 @@ READ >STYA ZPIOCTL
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
WRITE >STYA ZPIOCTL
|
||||
|
||||
ldy #S.IOCTL.BUFPTR
|
||||
lda (ZPIOCTL),y
|
||||
sta ZPBufPtr
|
||||
iny
|
||||
lda (ZPIOCTL),y
|
||||
sta ZPBufPtr+1
|
||||
|
||||
ldx #5
|
||||
ldy #S.ETH.SRCMAC+5
|
||||
|
||||
.10 lda DCB+S.DCB.NIC.MAC,x
|
||||
sta (ZPBufPtr),y
|
||||
dey
|
||||
dex
|
||||
bpl .10
|
||||
|
||||
php
|
||||
WRITE php
|
||||
sei
|
||||
|
||||
>STYA ZPIOCTL
|
||||
|
||||
ldx DEVSLOTx0
|
||||
|
||||
lda /PP.TxCMD.LID+PP.TxCMD.TxStartFULL
|
||||
@ -520,11 +504,30 @@ WRITE >STYA ZPIOCTL
|
||||
bne .1
|
||||
|
||||
.9 lda #MLI.E.EOF
|
||||
|
||||
plp
|
||||
sec
|
||||
rts
|
||||
|
||||
WRITE.1 ldy #0
|
||||
WRITE.1 ldy #S.IOCTL.BUFPTR
|
||||
lda (ZPIOCTL),y
|
||||
sta ZPBufPtr
|
||||
iny
|
||||
lda (ZPIOCTL),y
|
||||
sta ZPBufPtr+1
|
||||
|
||||
ldx #5
|
||||
ldy #S.ETH.SRCMAC+5
|
||||
|
||||
.10 lda DCB+S.DCB.NIC.MAC,x
|
||||
sta (ZPBufPtr),y
|
||||
dey
|
||||
dex
|
||||
bpl .10
|
||||
|
||||
ldx DEVSLOTx0
|
||||
|
||||
ldy #0
|
||||
|
||||
.1 inc Counter
|
||||
bne .2
|
||||
@ -568,6 +571,7 @@ DCB .DA #S.DCB.T.NIC
|
||||
.BS 1 LINK
|
||||
.BS 1 SPEED
|
||||
.HS 000E3A123456 MAC
|
||||
.BS 12 IP/MASK/GW
|
||||
*--------------------------------------
|
||||
DRV.END
|
||||
MAN
|
||||
|
@ -11,12 +11,9 @@ AUTO 4,1
|
||||
.INB INC/MLI.ERR.I
|
||||
.INB INC/NIC.I
|
||||
.INB INC/NIC.W5100.I
|
||||
.INB INC/LIBTCPIP.I
|
||||
.INB INC/ETH.I
|
||||
*--------------------------------------
|
||||
ZPTmpPTR .EQ ZPDRV
|
||||
RXTX.Size .EQ ZPDRV+2
|
||||
Counter .EQ ZPDRV+4
|
||||
Offset .EQ ZPDRV+6
|
||||
ZPArgPtr .EQ ZPDRV
|
||||
*--------------------------------------
|
||||
* File Header (16 Bytes)
|
||||
*--------------------------------------
|
||||
@ -26,21 +23,31 @@ CS.START cld
|
||||
.DA #1 DRV Layout Version 1
|
||||
.DA 0
|
||||
.DA CS.END-CS.START Code Length
|
||||
.DA DEV.HEADER-CS.START Device Header Offset
|
||||
.DA DRV.CS.START-CS.START Driver Code Offset
|
||||
.DA DRV.CS.END-DRV.CS.START Drv Code Length
|
||||
.DA 0
|
||||
.DA 0
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
* Relocation Table
|
||||
*--------------------------------------
|
||||
L.MSG.DETECT .DA MSG.DETECT
|
||||
L.MSG.DETECT.OK .DA MSG.DETECT.OK
|
||||
L.MSG.DETECT.KO .DA MSG.DETECT.KO
|
||||
L.DEV.HEADER.NAME .DA DEV.HEADER.NAME
|
||||
L.DRV.CS.START .DA DRV.CS.START
|
||||
L.FD.DEV .DA FD.DEV
|
||||
L.FD.DEV.NAME .DA FD.DEV.NAME
|
||||
L.SSCANF.MAC .DA SSCANF.MAC
|
||||
L.MAC0 .DA DCB+S.DCB.NIC.MAC
|
||||
L.MAC1 .DA DCB+S.DCB.NIC.MAC+1
|
||||
L.MAC2 .DA DCB+S.DCB.NIC.MAC+2
|
||||
L.MAC3 .DA DCB+S.DCB.NIC.MAC+3
|
||||
L.MAC4 .DA DCB+S.DCB.NIC.MAC+4
|
||||
L.MAC5 .DA DCB+S.DCB.NIC.MAC+5
|
||||
.DA 0 End Of Reloc Table
|
||||
*--------------------------------------
|
||||
Dev.Detect >STYA Args
|
||||
Dev.Detect >STYA ARGS
|
||||
|
||||
>LDYA L.MSG.DETECT
|
||||
>SYSCALL printf
|
||||
>SYSCALL puts
|
||||
|
||||
ldx #$70+$88
|
||||
ldy #7
|
||||
@ -75,7 +82,7 @@ Dev.Detect >STYA Args
|
||||
cmp #2000
|
||||
beq .3
|
||||
|
||||
.2 dec DEV.HEADER.NAME+3
|
||||
.2 dec FD.DEV.NAME+3
|
||||
txa
|
||||
sec
|
||||
sbc #$10
|
||||
@ -84,7 +91,7 @@ Dev.Detect >STYA Args
|
||||
bne .1
|
||||
|
||||
>LDYA L.MSG.DETECT.KO
|
||||
>SYSCALL printf
|
||||
>SYSCALL puts
|
||||
|
||||
lda #MLI.E.NODEV
|
||||
sec
|
||||
@ -94,250 +101,177 @@ Dev.Detect >STYA Args
|
||||
lda #A2osX.S.NIC
|
||||
sta A2osX.S,y
|
||||
|
||||
>LDYA ARGS
|
||||
>STYA ZPTmpPTR
|
||||
jsr Dev.ParseArgs
|
||||
bcs .9
|
||||
|
||||
lda (ZPTmpPTR)
|
||||
bne .4
|
||||
|
||||
lda #$00
|
||||
sta MAC
|
||||
lda #$08
|
||||
sta MAC+1
|
||||
lda #$DC
|
||||
sta MAC+2
|
||||
lda A2osX.RANDOM16
|
||||
eor A2osX.TIMER16
|
||||
sta MAC+3
|
||||
eor A2osX.RANDOM16+1
|
||||
sta MAC+4
|
||||
eor A2osX.TIMER16+1
|
||||
sta MAC+5
|
||||
bra .8
|
||||
|
||||
.4 jsr DecodeMac
|
||||
bcc .8
|
||||
lda #K.E.SYN
|
||||
sec
|
||||
rts
|
||||
|
||||
.8 >PUSHW L.DEV.HEADER.NAME
|
||||
.8 >PUSHW L.FD.DEV.NAME
|
||||
>PUSHBI 2
|
||||
>LDYA L.MSG.DETECT.OK
|
||||
>SYSCALL printf
|
||||
|
||||
>PUSHWI DRV.END
|
||||
>PUSHWI DRV.CS.END
|
||||
>PUSHWI DRV.CS.START
|
||||
>LDYA L.DRV.CS.START
|
||||
>SYSCALL InsDrv
|
||||
bcs .9
|
||||
>STYA FD.DEV+S.FD.DEV.DRVPTR
|
||||
|
||||
>LDYA L.FD.DEV
|
||||
>SYSCALL MKDEV
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
Dev.ParseArgs >LDYA ARGS
|
||||
>STYA ZPArgPTR
|
||||
lda (ZPArgPTR)
|
||||
bne .1
|
||||
|
||||
lda A2osX.RANDOM16
|
||||
eor A2osX.TIMER16
|
||||
sta DCB+S.DCB.NIC.MAC+3
|
||||
eor A2osX.RANDOM16+1
|
||||
sta DCB+S.DCB.NIC.MAC+4
|
||||
eor A2osX.TIMER16+1
|
||||
sta DCB+S.DCB.NIC.MAC+5
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
.INB /A2OSX.SRC/DRV/X.NET.DRV.S
|
||||
|
||||
.1 >PUSHW L.MAC5
|
||||
>PUSHW L.MAC4
|
||||
>PUSHW L.MAC3
|
||||
>PUSHW L.MAC2
|
||||
>PUSHW L.MAC1
|
||||
>PUSHW L.MAC0
|
||||
>PUSHBI 12 6 x byte PTRs
|
||||
>PUSHW L.SSCANF.MAC
|
||||
>LDYA ZPArgPtr
|
||||
>SYSCALL sscanf
|
||||
bcc .8
|
||||
|
||||
lda #K.E.SYN
|
||||
sec
|
||||
.8 rts
|
||||
*--------------------------------------
|
||||
CS.END
|
||||
MSG.DETECT .AZ "UtherNet2/W5100 Driver.\r\n"
|
||||
MSG.DETECT.OK .AZ "UtherNet2/W5100 Installed As Device : %S\r\n"
|
||||
MSG.DETECT.KO .AZ "Hardware Not Found.\r\n"
|
||||
Args .BS 2
|
||||
ARGS .BS 2
|
||||
MSG.DETECT .AZ "UtherNet2/W5100 Driver."
|
||||
MSG.DETECT.OK .AZ "UtherNet2/W5100 Installed As Device : %s\r\n"
|
||||
MSG.DETECT.KO .AZ "Hardware Not Found."
|
||||
SSCANF.MAC .AZ "%h:%h:%h:%h:%h:%h"
|
||||
*--------------------------------------
|
||||
* Device Header (16 Bytes)
|
||||
*--------------------------------------
|
||||
DEV.HEADER cld
|
||||
jmp (DRV.CS.START,x)
|
||||
.DA #0
|
||||
.BS 6
|
||||
DEV.HEADER.NAME .AZ "ETH7"
|
||||
FD.DEV .DA #S.FD.T.CDEV
|
||||
.DA #0 HANDLER
|
||||
.DA #0 BUSID
|
||||
.DA #0 DEVID
|
||||
.DA 0 BUSPTR
|
||||
.BS 2 DRVPTR
|
||||
FD.DEV.NAME .AZ "ETH7" NAME
|
||||
.HS 000000
|
||||
*--------------------------------------
|
||||
* Driver Code
|
||||
*--------------------------------------
|
||||
DRV.CS.START .DA STATUS
|
||||
.DA READBLOCK
|
||||
.DA WRITEBLOCK
|
||||
ZPIOCTL .EQ ZPDRV
|
||||
ZPBufPtr .EQ ZPDRV+2
|
||||
Counter .EQ ZPDRV+4
|
||||
Offset .EQ ZPDRV+6
|
||||
RXTX.Size .EQ ZPDRV+8
|
||||
*--------------------------------------
|
||||
DRV.CS.START cld
|
||||
jmp (.1,x)
|
||||
.1 .DA STATUS
|
||||
.DA A2osX.BADCALL
|
||||
.DA A2osX.BADCALL
|
||||
.DA A2osX.BADCALL
|
||||
.DA CONTROL
|
||||
.DA A2osX.BADCALL
|
||||
.DA OPEN
|
||||
.DA CLOSE
|
||||
.DA A2osX.BADCALL
|
||||
.DA A2osX.BADCALL
|
||||
L.DEVSTAT .DA DEVSTAT
|
||||
.DA READ
|
||||
.DA WRITE
|
||||
.DA A2osX.BADCALL IRQ
|
||||
.DA 0 end or relocation
|
||||
*--------------------------------------
|
||||
STATUS >LDYA L.DEVSTAT
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
READBLOCK ldx DEVSLOTx0
|
||||
STATUS >STYA ZPIOCTL
|
||||
|
||||
>AR.SELECT S0.RX.RSR
|
||||
lda W5100.DR,x get the received size HI
|
||||
ora W5100.DR,x LO
|
||||
bne READBLOCK.RxOK
|
||||
|
||||
lda #MLI.E.EOF
|
||||
|
||||
sec
|
||||
rts
|
||||
|
||||
READBLOCK.RxOK >AR.SELECT S0.RX.RD
|
||||
lda W5100.DR,x get the received ptr HI
|
||||
sta offset+1
|
||||
ldy W5100.DR,x get the received ptr LO
|
||||
sty offset
|
||||
|
||||
and /RXTX.MASK
|
||||
ora /RX.BASE
|
||||
sta W5100.AR,x
|
||||
tya
|
||||
sta W5100.AR+1,x
|
||||
ldy #S.IOCTL.STATCODE
|
||||
lda (ZPIOCTL),y
|
||||
beq .1
|
||||
|
||||
lda W5100.DR,x get RX.Size HI
|
||||
sta RXTX.Size+1
|
||||
cmp #S.IOCTL.STATCODE.GETDIB
|
||||
bne STATUS.DCB
|
||||
|
||||
ldy W5100.DR,x get RX.Size LO
|
||||
sty RXTX.Size
|
||||
|
||||
>SYSCALL getmem
|
||||
bcs .99
|
||||
>STYA ZPTmpPTR
|
||||
stx .8+1
|
||||
sty .8+3
|
||||
sta .8+5
|
||||
|
||||
lda RXTX.Size
|
||||
sec
|
||||
sbc #2 Header Size
|
||||
sta (ZPTmpPTR)
|
||||
eor #$ff
|
||||
sta Counter
|
||||
|
||||
ldy #1
|
||||
|
||||
lda RXTX.Size+1
|
||||
sbc #0
|
||||
sta (ZPTmpPTR),y
|
||||
eor #$ff
|
||||
sta Counter+1
|
||||
|
||||
ldx DEVSLOTx0
|
||||
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 inc Counter
|
||||
bne .3
|
||||
inc Counter+1
|
||||
beq .4
|
||||
|
||||
.3 lda W5100.DR,x
|
||||
sta (ZPTmpPTR),y
|
||||
iny
|
||||
bne .2
|
||||
inc ZPTmpPTR+1
|
||||
bne .2
|
||||
|
||||
.4 >AR.SELECT S0.RX.RD
|
||||
|
||||
lda Offset
|
||||
clc
|
||||
adc RXTX.Size
|
||||
pha save LO
|
||||
|
||||
lda Offset+1
|
||||
adc RXTX.Size+1
|
||||
|
||||
sta W5100.DR,x write HI
|
||||
pla
|
||||
sta W5100.DR,x write LO
|
||||
|
||||
>AR.SELECT S0.CR
|
||||
lda #W5100.AR.S0.CR.RCVD
|
||||
sta W5100.DR,x
|
||||
|
||||
.8 ldx #$ff hMem
|
||||
ldy #$ff PtrLO
|
||||
lda #$ff PtrHI
|
||||
clc
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
WRITEBLOCK >STYA ZPTmpPTR
|
||||
|
||||
lda (ZPTmpPTR)
|
||||
sta RXTX.Size
|
||||
eor #$ff
|
||||
sta Counter
|
||||
|
||||
ldy #1
|
||||
lda (ZPTmpPTR),y
|
||||
sta RXTX.Size+1
|
||||
eor #$ff
|
||||
sta Counter+1
|
||||
|
||||
ldx DEVSLOTx0
|
||||
>AR.SELECT S0.TX.FSR
|
||||
|
||||
lda W5100.DR,x get send size HI
|
||||
ldy W5100.DR,x LO
|
||||
cpy RXTX.Size
|
||||
sbc RXTX.Size+1
|
||||
bcs WRITEBLOCK.1
|
||||
|
||||
lda #MLI.E.EOF
|
||||
sec
|
||||
rts
|
||||
|
||||
WRITEBLOCK.1 ldy #S.ETH.SRCMAC+5
|
||||
ldx #5
|
||||
.1 lda MAC,x
|
||||
sta (ZPTmpPTR),y
|
||||
dey
|
||||
.2 lda DIB,x
|
||||
.3 sta $ffff,x SELF MODIFIED
|
||||
dex
|
||||
bpl .1
|
||||
|
||||
ldx DEVSLOTx0
|
||||
bpl .2
|
||||
|
||||
>AR.SELECT S0.TX.WR
|
||||
lda W5100.DR,x Get HI
|
||||
ldy W5100.DR,x Get LO
|
||||
and /RXTX.MASK
|
||||
ora /TX.BASE
|
||||
sta W5100.AR,x Write HI
|
||||
sta Offset+1
|
||||
tya
|
||||
sta W5100.AR+1,x Write LO
|
||||
sta Offset
|
||||
|
||||
ldy #2
|
||||
|
||||
.2 inc Counter
|
||||
bne .3
|
||||
|
||||
inc Counter+1
|
||||
beq .8
|
||||
|
||||
.3 lda (ZPTmpPTR),y
|
||||
sta W5100.DR,x
|
||||
iny
|
||||
bne .2
|
||||
inc ZPTmpPTR+1
|
||||
bne .2
|
||||
|
||||
.8 >AR.SELECT S0.TX.WR
|
||||
|
||||
lda Offset
|
||||
clc
|
||||
adc RXTX.Size
|
||||
pha save LO
|
||||
rts
|
||||
|
||||
lda Offset+1
|
||||
adc RXTX.Size+1
|
||||
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
|
||||
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
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
STATUS.9 lda #MLI.E.BADCTL
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CONTROL >STYA ZPIOCTL
|
||||
|
||||
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
|
||||
bpl .2
|
||||
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
OPEN jsr CLOSE
|
||||
|
||||
* ldx DEVSLOTx0 Done by CLOSE
|
||||
|
||||
lda #W5100.MR.AI+W5100.MR.IND
|
||||
sta W5100.MR,x
|
||||
|
||||
@ -345,7 +279,7 @@ OPEN jsr CLOSE
|
||||
|
||||
ldy #0
|
||||
|
||||
.1 lda MAC,y
|
||||
.1 lda DCB+S.DCB.NIC.MAC,y
|
||||
sta W5100.DR,x
|
||||
iny
|
||||
cpy #6
|
||||
@ -368,6 +302,7 @@ OPEN jsr CLOSE
|
||||
rts
|
||||
*--------------------------------------
|
||||
CLOSE ldx DEVSLOTx0
|
||||
|
||||
lda #W5100.MR.RST
|
||||
sta W5100.MR,x
|
||||
|
||||
@ -382,19 +317,228 @@ CLOSE ldx DEVSLOTx0
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
READ php
|
||||
sei
|
||||
|
||||
>STYA ZPIOCTL
|
||||
|
||||
ldx DEVSLOTx0
|
||||
|
||||
>AR.SELECT S0.RX.RSR
|
||||
lda W5100.DR,x get the received size HI
|
||||
ora W5100.DR,x LO
|
||||
bne .1
|
||||
|
||||
lda #MLI.E.EOF
|
||||
|
||||
.9 plp
|
||||
sec
|
||||
rts
|
||||
|
||||
.1 >AR.SELECT S0.RX.RD
|
||||
lda W5100.DR,x get the received ptr HI
|
||||
sta offset+1
|
||||
ldy W5100.DR,x get the received ptr LO
|
||||
sty offset
|
||||
|
||||
and /RXTX.MASK
|
||||
ora /RX.BASE
|
||||
sta W5100.AR,x
|
||||
tya
|
||||
sta W5100.AR+1,x
|
||||
|
||||
lda W5100.DR,x get RX.Size HI
|
||||
sta RXTX.Size+1
|
||||
|
||||
ldy W5100.DR,x get RX.Size LO
|
||||
sty RXTX.Size
|
||||
|
||||
>SYSCALL getmem
|
||||
bcs .9
|
||||
|
||||
>STYA ZPBufPtr
|
||||
stx .8+1
|
||||
|
||||
phy
|
||||
ldy #S.IOCTL.BUFPTR+1
|
||||
sta (ZPIOCTL),y
|
||||
dey
|
||||
pla
|
||||
sta (ZPIOCTL),y
|
||||
|
||||
ldy #S.IOCTL.BYTECNT
|
||||
|
||||
lda RXTX.Size
|
||||
sec
|
||||
sbc #2 Header Size
|
||||
sta (ZPIOCTL),y
|
||||
eor #$ff
|
||||
sta Counter
|
||||
|
||||
iny
|
||||
|
||||
lda RXTX.Size+1
|
||||
sbc #0
|
||||
sta (ZPIOCTL),y
|
||||
eor #$ff
|
||||
sta Counter+1
|
||||
|
||||
ldx DEVSLOTx0
|
||||
|
||||
ldy #0
|
||||
|
||||
.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
|
||||
|
||||
.4 >AR.SELECT S0.RX.RD
|
||||
|
||||
lda Offset
|
||||
clc
|
||||
adc RXTX.Size
|
||||
pha save LO
|
||||
|
||||
lda Offset+1
|
||||
adc RXTX.Size+1
|
||||
|
||||
sta W5100.DR,x write HI
|
||||
pla
|
||||
sta W5100.DR,x write LO
|
||||
|
||||
>AR.SELECT S0.CR
|
||||
lda #W5100.AR.S0.CR.RCVD
|
||||
sta W5100.DR,x
|
||||
|
||||
.8 ldx #$ff SELF MODIFIED hMem
|
||||
|
||||
plp
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
WRITE php
|
||||
sei
|
||||
|
||||
>STYA ZPIOCTL
|
||||
|
||||
ldx DEVSLOTx0
|
||||
|
||||
ldy #S.IOCTL.BYTECNT
|
||||
lda (ZPIOCTL),y
|
||||
sta RXTX.Size
|
||||
eor #$ff
|
||||
sta Counter
|
||||
|
||||
iny
|
||||
lda (ZPIOCTL),y
|
||||
sta RXTX.Size+1
|
||||
eor #$ff
|
||||
sta Counter+1
|
||||
|
||||
>AR.SELECT S0.TX.FSR
|
||||
|
||||
lda W5100.DR,x get send size HI
|
||||
ldy W5100.DR,x LO
|
||||
cpy RXTX.Size
|
||||
sbc RXTX.Size+1
|
||||
bcs WRITE.1
|
||||
|
||||
lda #MLI.E.EOF
|
||||
|
||||
plp
|
||||
sec
|
||||
rts
|
||||
|
||||
WRITE.1 ldy #S.IOCTL.BUFPTR
|
||||
lda (ZPIOCTL),y
|
||||
sta ZPBufPtr
|
||||
iny
|
||||
lda (ZPIOCTL),y
|
||||
sta ZPBufPtr+1
|
||||
|
||||
ldy #S.ETH.SRCMAC+5
|
||||
ldx #5
|
||||
|
||||
.1 lda DCB+S.DCB.NIC.MAC,x
|
||||
sta (ZPBufPtr),y
|
||||
dey
|
||||
dex
|
||||
bpl .1
|
||||
|
||||
ldx DEVSLOTx0
|
||||
|
||||
>AR.SELECT S0.TX.WR
|
||||
lda W5100.DR,x Get HI
|
||||
ldy W5100.DR,x Get LO
|
||||
and /RXTX.MASK
|
||||
ora /TX.BASE
|
||||
sta W5100.AR,x Write HI
|
||||
sta Offset+1
|
||||
tya
|
||||
sta W5100.AR+1,x Write LO
|
||||
sta Offset
|
||||
|
||||
ldy #0
|
||||
|
||||
.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
|
||||
|
||||
.8 >AR.SELECT S0.TX.WR
|
||||
|
||||
lda Offset
|
||||
clc
|
||||
adc RXTX.Size
|
||||
pha save LO
|
||||
|
||||
lda Offset+1
|
||||
adc RXTX.Size+1
|
||||
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
|
||||
|
||||
plp
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
DRV.CS.END
|
||||
DEVSLOTx0 .BS 1
|
||||
*--------------------------------------
|
||||
DEVSTAT .DA #0
|
||||
.BS 3 size
|
||||
DIB .DA #0
|
||||
.DA #0,#0,#0 size
|
||||
>PSTR "UtherNetII/W5100"
|
||||
.DA #S.DIB.T.NET
|
||||
.DA #S.DIB.T.NIC
|
||||
.BS 1 Subtype
|
||||
.BS 2 Version
|
||||
.DA K.VER Version
|
||||
*--------------------------------------
|
||||
FLAGS .DA #0
|
||||
LINK.STATUS .DA #S.DIB.NIC.STATUS.OK+S.DIB.NIC.STATUS.FD+S.DIB.NIC.STATUS.100
|
||||
MAC .BS 6
|
||||
DCB .DA #S.DCB.T.NIC
|
||||
.DA #0 FLAGS
|
||||
.DA #S.DCB.NIC.LINK.OK+S.DCB.NIC.LINK.FD
|
||||
.DA #S.DCB.NIC.SPEED.100
|
||||
.HS 0008DC123456 MAC
|
||||
.BS 12 IP/MASK/GW
|
||||
*--------------------------------------
|
||||
DRV.END
|
||||
MAN
|
||||
SAVE /A2OSX.SRC/DRV/UTHERNET2.DRV.S
|
||||
ASM
|
||||
|
@ -2,7 +2,7 @@ NEW
|
||||
PREFIX /A2OSX.BUILD
|
||||
AUTO 4,1
|
||||
*--------------------------------------
|
||||
KVER .EQ $5C00 92.0
|
||||
K.VER .EQ $5C00 92.0
|
||||
K.ENV.SIZE .EQ 256
|
||||
K.FLT.MAX .EQ 4
|
||||
K.EVT.MAX .EQ 4
|
||||
|
@ -298,7 +298,7 @@ note : '$VAR' does NOT expand Variable
|
||||
| ---- | ------ | ------- | ----- |
|
||||
| LanCeGS.DRV | Working | | 0.9.1 |
|
||||
| Uthernet.DRV | Working | | 0.92 |
|
||||
| Uthernet2.DRV | Working | | 0.9.1 |
|
||||
| Uthernet2.DRV | Working | | 0.92 |
|
||||
| Uther2.AI.DRV | In Progress | With ARP/IP Offloading | 0.9 |
|
||||
|
||||
## BIN,External Shell commands:
|
||||
@ -351,8 +351,8 @@ note : '$VAR' does NOT expand Variable
|
||||
## DEV tools:
|
||||
| Name | Status | Comment | K.Ver |
|
||||
| ---- | ------ | ------- | ----- |
|
||||
| MEMDUMP | Working | Tool to track memory leak| 0.92 |
|
||||
| ASM | In Progress | S-C MASM based multi CPU assembler | 0.9.1 |
|
||||
| MEMDUMP | Working | | 0.9.1 |
|
||||
| ---- | ------ | ------- | ----- |
|
||||
| RPCDUMP | Working | tool based on UDP socket API, renamed from RPCINFO | 0.9.1 |
|
||||
|
||||
|
@ -117,7 +117,7 @@ CS.RUN.LOOP
|
||||
|
||||
.4 jsr Wait.Timeout
|
||||
bcc .1
|
||||
>PUSHWI KVER
|
||||
>PUSHWI K.VER
|
||||
>PUSHBI 2
|
||||
>LDYA L.MSG.GREETINGS
|
||||
>SYSCALL printf
|
||||
|
@ -138,7 +138,7 @@ CS.INIT jsr SetPWD
|
||||
.1 jsr HIS.Init
|
||||
bcs .9
|
||||
|
||||
>PUSHWI KVER
|
||||
>PUSHWI K.VER
|
||||
>PUSHBI 2
|
||||
>LDYA L.MSG.GREETINGS
|
||||
>SYSCALL printf
|
||||
|
@ -27,7 +27,7 @@ DRV.DiskII.DIB .DA #S.DIB.S.BLOCK+S.DIB.S.WRITE+S.DIB.S.READ
|
||||
.BS 4
|
||||
.DA #S.DIB.T.DISKII
|
||||
.DA #0
|
||||
.DA KVER
|
||||
.DA K.VER
|
||||
*--------------------------------------
|
||||
* DRV.RamDrive
|
||||
* X = IOCTL
|
||||
@ -61,7 +61,7 @@ DRV.RamDrive.DIB
|
||||
>PSTR "ProDOS /RAM Disk"
|
||||
.DA #S.DIB.T.RAM
|
||||
.DA #0
|
||||
.DA KVER
|
||||
.DA K.VER
|
||||
*--------------------------------------
|
||||
* DRV.BlkDevice
|
||||
* X = IOCTL
|
||||
@ -94,7 +94,7 @@ DRV.BlkDevice.DIB
|
||||
>PSTR "ProDOS Block Dev"
|
||||
.DA #S.DIB.T.PRODOS
|
||||
.DA #0
|
||||
.DA KVER
|
||||
.DA K.VER
|
||||
*--------------------------------------
|
||||
* IOCTL to BLK protocol converter
|
||||
* in : pIOCTL (AUX)
|
||||
@ -222,7 +222,7 @@ DRV.NULL.DIB .DA #S.DIB.S.WRITE+S.DIB.S.READ+S.DIB.S.OPENED
|
||||
.BS 5
|
||||
.DA #S.DIB.T.CHAR
|
||||
.DA #0
|
||||
.DA KVER
|
||||
.DA K.VER
|
||||
*--------------------------------------
|
||||
* SYS DEVICE
|
||||
*--------------------------------------
|
||||
@ -520,7 +520,7 @@ DRV.SYS.DIB .DA #S.DIB.S.WRITE+S.DIB.S.READ+S.DIB.S.OPENED
|
||||
>PSTR "A2osX SYS Screen"
|
||||
.DA #S.DIB.T.CHAR
|
||||
.DA #0
|
||||
.DA KVER
|
||||
.DA K.VER
|
||||
*--------------------------------------
|
||||
DRV.SYS.CH .BS 1
|
||||
DRV.SYS.CV .BS 1
|
||||
|
Loading…
x
Reference in New Issue
Block a user