mirror of
https://github.com/A2osX/A2osX.git
synced 2024-08-12 14:29:33 +00:00
Kernel 0.9.2
This commit is contained in:
parent
2803696706
commit
2c0e0d15f7
Binary file not shown.
Binary file not shown.
@ -64,7 +64,7 @@ CS.RUN >LIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG is TCPIP loaded ?
|
|||||||
bmi CS.RUN.IPOK
|
bmi CS.RUN.IPOK
|
||||||
|
|
||||||
>LDYA L.MSG.IPKO
|
>LDYA L.MSG.IPKO
|
||||||
>SYSCALL printf
|
>SYSCALL puts
|
||||||
lda #K.E.SYN
|
lda #K.E.SYN
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
@ -93,7 +93,7 @@ CS.RUN.IPOK ldy #S.PS.ARGC
|
|||||||
bra .99
|
bra .99
|
||||||
|
|
||||||
.9 >LDYA L.MSG.USAGE
|
.9 >LDYA L.MSG.USAGE
|
||||||
.99 >SYSCALL printf
|
.99 >SYSCALL puts
|
||||||
lda #K.E.SYN
|
lda #K.E.SYN
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
@ -112,6 +112,7 @@ CS.RUN.HOSTOK lda #1
|
|||||||
dex
|
dex
|
||||||
bpl .1
|
bpl .1
|
||||||
|
|
||||||
|
>PUSHBI 6
|
||||||
>LDYA L.MSG.HOSTOK
|
>LDYA L.MSG.HOSTOK
|
||||||
>SYSCALL printf
|
>SYSCALL printf
|
||||||
|
|
||||||
@ -129,14 +130,13 @@ CS.RUN.OPENSKT ldx #3
|
|||||||
bcc .2
|
bcc .2
|
||||||
|
|
||||||
>LDYA L.MSG.SKTKO
|
>LDYA L.MSG.SKTKO
|
||||||
>SYSCALL printf
|
>SYSCALL puts
|
||||||
lda #K.E.SYN
|
lda #K.E.SYN
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.2 txa
|
.2 txa
|
||||||
ldy #hSocket
|
>STA.G hSocket
|
||||||
sta (pData),y
|
|
||||||
|
|
||||||
.9 lda #0
|
.9 lda #0
|
||||||
sec
|
sec
|
||||||
@ -181,11 +181,11 @@ Wait.TimeOut sec
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.END
|
CS.END
|
||||||
LIBTCPIP .AZ "libtcpip.o"
|
LIBTCPIP .AZ "libtcpip.o"
|
||||||
MSG.IPKO .AZ "TCP/IP Not Loaded/Configured.\r\n"
|
MSG.IPKO .AZ "TCP/IP Not Loaded/Configured."
|
||||||
MSG.USAGE .AZ "Usage : TELNET <ip|host> [port]\r\n"
|
MSG.USAGE .AZ "Usage : TELNET <ip|host> [port]"
|
||||||
MSG.UNKNOWN .AZ "%s: Unknown host\r\n"
|
MSG.UNKNOWN .AZ "%s: Unknown host\r\n"
|
||||||
MSG.HOSTOK .AZ "Connecting to %d.%d.%d.%d (%s) ...\r\n"
|
MSG.HOSTOK .AZ "Connecting to %d.%d.%d.%d (%s) ...\r\n"
|
||||||
MSG.SKTKO .AZ "Failed to Open Socket.\r\n"
|
MSG.SKTKO .AZ "Failed to Open Socket."
|
||||||
hLIBTCPIP .BS 1
|
hLIBTCPIP .BS 1
|
||||||
TimeOut.ms .BS 2
|
TimeOut.ms .BS 2
|
||||||
Socket .DA #S.SOCKET.SOCK.STREAM
|
Socket .DA #S.SOCKET.SOCK.STREAM
|
||||||
|
@ -11,11 +11,9 @@ AUTO 4,1
|
|||||||
.INB INC/MLI.ERR.I
|
.INB INC/MLI.ERR.I
|
||||||
.INB INC/NIC.I
|
.INB INC/NIC.I
|
||||||
.INB INC/NIC.91C96.I
|
.INB INC/NIC.91C96.I
|
||||||
.INB INC/LIBTCPIP.I
|
.INB INC/ETH.I
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ZPTmpPTR .EQ ZPDRV
|
ZPArgPtr .EQ ZPDRV
|
||||||
Size .EQ ZPDRV+2
|
|
||||||
Counter .EQ ZPDRV+4
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* File Header (16 Bytes)
|
* File Header (16 Bytes)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
@ -25,21 +23,31 @@ CS.START cld
|
|||||||
.DA #1 DRV Layout Version 1
|
.DA #1 DRV Layout Version 1
|
||||||
.DA 0
|
.DA 0
|
||||||
.DA CS.END-CS.START Code Length
|
.DA CS.END-CS.START Code Length
|
||||||
.DA DEV.HEADER-CS.START Device Header Offset
|
.DA 0
|
||||||
.DA DRV.CS.START-CS.START Driver Code Offset
|
.DA 0
|
||||||
.DA DRV.CS.END-DRV.CS.START Drv Code Length
|
.DA 0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Relocation Table
|
* Relocation Table
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
L.MSG.DETECT .DA MSG.DETECT
|
L.MSG.DETECT .DA MSG.DETECT
|
||||||
L.MSG.DETECT.OK .DA MSG.DETECT.OK
|
L.MSG.DETECT.OK .DA MSG.DETECT.OK
|
||||||
L.MSG.DETECT.KO .DA MSG.DETECT.KO
|
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
|
.DA 0 End Of Reloc Table
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
Dev.Detect >STYA Args
|
Dev.Detect >STYA ARGS
|
||||||
|
|
||||||
>LDYA L.MSG.DETECT
|
>LDYA L.MSG.DETECT
|
||||||
>SYSCALL printf
|
>SYSCALL puts
|
||||||
|
|
||||||
ldx #$70
|
ldx #$70
|
||||||
ldy #7
|
ldy #7
|
||||||
@ -51,7 +59,7 @@ Dev.Detect >STYA Args
|
|||||||
cmp #DEVID
|
cmp #DEVID
|
||||||
beq .3
|
beq .3
|
||||||
|
|
||||||
.2 dec DEV.HEADER.NAME+3
|
.2 dec FD.DEV.NAME+3
|
||||||
txa
|
txa
|
||||||
sec
|
sec
|
||||||
sbc #$10
|
sbc #$10
|
||||||
@ -60,7 +68,7 @@ Dev.Detect >STYA Args
|
|||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
>LDYA L.MSG.DETECT.KO
|
>LDYA L.MSG.DETECT.KO
|
||||||
>SYSCALL printf
|
>SYSCALL puts
|
||||||
|
|
||||||
lda #MLI.E.NODEV
|
lda #MLI.E.NODEV
|
||||||
sec
|
sec
|
||||||
@ -70,61 +78,128 @@ Dev.Detect >STYA Args
|
|||||||
lda #A2osX.S.NIC
|
lda #A2osX.S.NIC
|
||||||
sta A2osX.S,y
|
sta A2osX.S,y
|
||||||
|
|
||||||
>LDYA ARGS
|
jsr Dev.ParseArgs
|
||||||
>STYA ZPTmpPTR
|
bcs .9
|
||||||
|
|
||||||
lda (ZPTmpPTR)
|
.8 >PUSHW L.FD.DEV.NAME
|
||||||
beq .4
|
>PUSHBI 2
|
||||||
|
|
||||||
sec
|
|
||||||
ror USERMAC
|
|
||||||
>SYSCALL GetMemPtr
|
|
||||||
>STYA ZPTmpPTR
|
|
||||||
jsr DecodeMac
|
|
||||||
bcc .4
|
|
||||||
lda #K.E.SYN
|
|
||||||
sec
|
|
||||||
rts
|
|
||||||
|
|
||||||
.4 >PUSHW L.DEV.HEADER.NAME
|
|
||||||
>LDYA L.MSG.DETECT.OK
|
>LDYA L.MSG.DETECT.OK
|
||||||
>SYSCALL printf
|
>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
|
clc
|
||||||
rts
|
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
|
CS.END
|
||||||
MSG.DETECT .AZ "LanCeGS/SMSC91C96 Driver.\r\n"
|
ARGS .BS 2
|
||||||
|
MSG.DETECT .AZ "LanCeGS/SMSC91C96 Driver."
|
||||||
MSG.DETECT.OK .AZ "LanCeGS/SMSC91C96 Installed As Device : %S\r\n"
|
MSG.DETECT.OK .AZ "LanCeGS/SMSC91C96 Installed As Device : %S\r\n"
|
||||||
MSG.DETECT.KO .AZ "Hardware Not Found.\r\n"
|
MSG.DETECT.KO .AZ "Hardware Not Found."
|
||||||
Args .BS 2
|
SSCANF.MAC .AZ "%h:%h:%h:%h:%h:%h"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Device Header (16 Bytes)
|
FD.DEV .DA #S.FD.T.CDEV
|
||||||
*--------------------------------------
|
.DA #0 HANDLER
|
||||||
DEV.HEADER cld
|
.DA #0 BUSID
|
||||||
jmp (DRV.CS.START,x)
|
.DA #0 DEVID
|
||||||
.DA #0
|
.DA 0 BUSPTR
|
||||||
.BS 6
|
.BS 2 DRVPTR
|
||||||
DEV.HEADER.NAME .AZ "ETH7"
|
FD.DEV.NAME .AZ "ETH7" NAME
|
||||||
|
.HS 000000
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Driver Code
|
* Driver Code
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DRV.CS.START .DA STATUS
|
ZPIOCTL .EQ ZPDRV
|
||||||
.DA READBLOCK
|
ZPBufPtr .EQ ZPDRV+2
|
||||||
.DA WRITEBLOCK
|
Size .EQ ZPDRV+4
|
||||||
|
Counter .EQ ZPDRV+6
|
||||||
|
*--------------------------------------
|
||||||
|
DRV.CS.START cld
|
||||||
|
jmp (.1,x)
|
||||||
|
.1 .DA STATUS
|
||||||
|
.DA A2osX.BADCALL
|
||||||
|
.DA A2osX.BADCALL
|
||||||
.DA A2osX.BADCALL
|
.DA A2osX.BADCALL
|
||||||
.DA A2osX.BADCALL
|
.DA A2osX.BADCALL
|
||||||
.DA A2osX.BADCALL
|
.DA A2osX.BADCALL
|
||||||
.DA OPEN
|
.DA OPEN
|
||||||
.DA CLOSE
|
.DA CLOSE
|
||||||
.DA A2osX.BADCALL
|
.DA READ
|
||||||
.DA A2osX.BADCALL
|
.DA WRITE
|
||||||
L.DEVSTAT .DA DEVSTAT
|
.DA A2osX.BADCALL IRQ
|
||||||
.DA 0 end or relocation
|
.DA 0 end or relocation
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
STATUS lda #S.DIB.NIC.STATUS.10
|
STATUS >STYA ZPIOCTL
|
||||||
sta LINK.STATUS
|
|
||||||
|
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
|
||||||
|
bpl .2
|
||||||
|
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
STATUS.DCB cmp #S.IOCTL.STATCODE.GETDCB
|
||||||
|
bne STATUS.9
|
||||||
|
|
||||||
|
stz DCB+S.DCB.NIC.LINK
|
||||||
|
|
||||||
ldx DEVSLOTx0
|
ldx DEVSLOTx0
|
||||||
|
|
||||||
@ -133,234 +208,43 @@ STATUS lda #S.DIB.NIC.STATUS.10
|
|||||||
lda L91C96.0.EPHSR+1,x
|
lda L91C96.0.EPHSR+1,x
|
||||||
and /L91C96.0.EPHSR.LINK
|
and /L91C96.0.EPHSR.LINK
|
||||||
beq .1
|
beq .1
|
||||||
lda LINK.STATUS
|
|
||||||
ora #S.DIB.NIC.STATUS.OK
|
|
||||||
sta LINK.STATUS
|
|
||||||
|
|
||||||
.1 lda L91C96.0.TCR,x
|
lda #S.DCB.NIC.LINK.OK
|
||||||
|
tsb DCB+S.DCB.NIC.LINK
|
||||||
|
|
||||||
|
lda L91C96.0.TCR,x
|
||||||
lda L91C96.0.TCR+1,x
|
lda L91C96.0.TCR+1,x
|
||||||
and /L91C96.0.TCR.FDSE
|
and /L91C96.0.TCR.FDSE
|
||||||
bne .2
|
beq .1
|
||||||
lda LINK.STATUS
|
|
||||||
ora #S.DIB.NIC.STATUS.FD
|
|
||||||
sta LINK.STATUS
|
|
||||||
|
|
||||||
.2 >LDYA L.DEVSTAT
|
lda #S.DCB.NIC.LINK.FD
|
||||||
clc
|
tsb DCB+S.DCB.NIC.LINK
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
READBLOCK ldx DEVSLOTx0
|
|
||||||
lda #2
|
|
||||||
sta L91C96.BSR,x
|
|
||||||
|
|
||||||
lda L91C96.2.IST,x
|
|
||||||
and #L91C96.2.IST.RCV
|
|
||||||
bne READBLOCK.RxOK
|
|
||||||
lda #MLI.E.EOF
|
|
||||||
sec
|
|
||||||
rts
|
|
||||||
|
|
||||||
READBLOCK.RxOK lda #L91C96.2.PTR.RCVD+L91C96.2.PTR.AUTOI+L91C96.2.PTR.READ
|
|
||||||
sta L91C96.2.PTR,x
|
|
||||||
lda /L91C96.2.PTR.RCVD+L91C96.2.PTR.AUTOI+L91C96.2.PTR.READ
|
|
||||||
sta L91C96.2.PTR+1,x
|
|
||||||
|
|
||||||
lda L91C96.2.DATA,x Get Frame Status Word (lo)
|
|
||||||
lda L91C96.2.DATA,x Get Frame Status Word (HI)
|
|
||||||
|
|
||||||
asl
|
|
||||||
asl
|
|
||||||
asl #$10 = odd?
|
|
||||||
asl if odd, CS
|
|
||||||
|
|
||||||
lda L91C96.2.DATA,x get lo byte count
|
|
||||||
sbc #5 compute Size
|
|
||||||
sta Size
|
|
||||||
eor #$ff
|
|
||||||
sta Counter
|
|
||||||
tay
|
|
||||||
|
|
||||||
lda L91C96.2.DATA,x get hi byte count
|
|
||||||
sbc #0
|
|
||||||
sta Size+1
|
|
||||||
eor #$ff
|
|
||||||
sta Counter+1
|
|
||||||
eor #$ff
|
|
||||||
|
|
||||||
|
.1 ldy #S.IOCTL.BUFPTR
|
||||||
|
lda (ZPIOCTL),y
|
||||||
|
sta .4+1
|
||||||
iny
|
iny
|
||||||
bne .1
|
lda (ZPIOCTL),y
|
||||||
|
sta .4+2
|
||||||
|
|
||||||
inc
|
ldx #S.DCB.NIC-1
|
||||||
.1 iny
|
|
||||||
bne .11
|
|
||||||
|
|
||||||
inc
|
.3 lda DCB,x
|
||||||
.11 >SYSCALL getmem
|
.4 sta $ffff,x SELF MODIFIED
|
||||||
bcs .99
|
|
||||||
>STYA ZPTmpPTR
|
|
||||||
stx .8+1
|
|
||||||
sty .8+3
|
|
||||||
sta .8+5
|
|
||||||
|
|
||||||
lda Size
|
|
||||||
sta (ZPTmpPTR)
|
|
||||||
ldy #1
|
|
||||||
lda Size+1
|
|
||||||
sta (ZPTmpPTR),y
|
|
||||||
|
|
||||||
iny
|
|
||||||
|
|
||||||
ldx DEVSLOTx0
|
|
||||||
|
|
||||||
.2 inc Counter
|
|
||||||
bne .21
|
|
||||||
inc Counter+1
|
|
||||||
beq .4
|
|
||||||
|
|
||||||
.21 lda L91C96.2.DATA,x
|
|
||||||
sta (ZPTmpPTR),y
|
|
||||||
iny
|
|
||||||
bne .3
|
|
||||||
inc ZPTmpPTR+1
|
|
||||||
|
|
||||||
.3 inc Counter
|
|
||||||
bne .31
|
|
||||||
inc Counter+1
|
|
||||||
beq .4
|
|
||||||
|
|
||||||
.31 lda L91C96.2.DATA,x
|
|
||||||
sta (ZPTmpPTR),y
|
|
||||||
iny
|
|
||||||
bne .2
|
|
||||||
inc ZPTmpPTR+1
|
|
||||||
bra .2
|
|
||||||
|
|
||||||
.4 lda #L91C96.2.MMUCR.REMREL
|
|
||||||
sta L91C96.2.MMUCR,x
|
|
||||||
|
|
||||||
.8 ldx #$ff hMem
|
|
||||||
ldy #$ff PtrLO
|
|
||||||
lda #$ff PtrHI
|
|
||||||
clc
|
|
||||||
.99 rts
|
|
||||||
*--------------------------------------
|
|
||||||
WRITEBLOCK >STYA ZPTmpPTR
|
|
||||||
|
|
||||||
ldx DEVSLOTx0
|
|
||||||
lda #2
|
|
||||||
sta L91C96.BSR,x
|
|
||||||
|
|
||||||
lda (ZPTmpPTR)
|
|
||||||
sta Size
|
|
||||||
eor #$ff
|
|
||||||
sta Counter
|
|
||||||
eor #$ff
|
|
||||||
|
|
||||||
clc
|
|
||||||
adc #6 3 WORDs more Status, len & Control
|
|
||||||
|
|
||||||
bne .10
|
|
||||||
clc LO byte is 0, no need for an extra empty page
|
|
||||||
|
|
||||||
.10 ldy #1
|
|
||||||
lda (ZPTmpPTR),y
|
|
||||||
sta Size+1
|
|
||||||
eor #$ff
|
|
||||||
sta Counter+1
|
|
||||||
eor #$ff
|
|
||||||
|
|
||||||
adc #0
|
|
||||||
|
|
||||||
.1 ora #L91C96.2.MMUCR.ALLOC
|
|
||||||
sta L91C96.2.MMUCR,x
|
|
||||||
|
|
||||||
ldy #0
|
|
||||||
|
|
||||||
.2 lda L91C96.2.IST,x
|
|
||||||
and #L91C96.2.IST.ALLOC
|
|
||||||
bne .3
|
|
||||||
dey
|
|
||||||
bne .2
|
|
||||||
|
|
||||||
lda #MLI.E.EOF
|
|
||||||
sec
|
|
||||||
rts
|
|
||||||
|
|
||||||
.3 lda L91C96.2.AAR,x
|
|
||||||
sta L91C96.2.PNR,x
|
|
||||||
|
|
||||||
lda #L91C96.2.PTR.AUTOI
|
|
||||||
sta L91C96.2.PTR,x
|
|
||||||
lda /L91C96.2.PTR.AUTOI
|
|
||||||
sta L91C96.2.PTR+1,x
|
|
||||||
|
|
||||||
ldy #S.ETH.SRCMAC+5 Add Src MAC Address
|
|
||||||
ldx #5
|
|
||||||
.4 lda MAC,x
|
|
||||||
sta (ZPTmpPTR),y
|
|
||||||
dey
|
|
||||||
dex
|
dex
|
||||||
bpl .4
|
bpl .3
|
||||||
|
|
||||||
ldx DEVSLOTx0
|
|
||||||
stz L91C96.2.DATA,x write fake status word
|
|
||||||
stz L91C96.2.DATA,x
|
|
||||||
|
|
||||||
lda Size
|
|
||||||
pha
|
|
||||||
eor #$01
|
|
||||||
lsr
|
|
||||||
pla
|
|
||||||
adc #$05 add 5 if odd, 6 if even
|
|
||||||
sta L91C96.2.DATA,x
|
|
||||||
lda Size+1
|
|
||||||
adc #$00
|
|
||||||
sta L91C96.2.DATA,x
|
|
||||||
|
|
||||||
ldy #2
|
|
||||||
|
|
||||||
.5 inc Counter
|
|
||||||
bne .51
|
|
||||||
inc Counter+1
|
|
||||||
beq .70
|
|
||||||
|
|
||||||
.51 lda (ZPTmpPTR),y
|
|
||||||
iny
|
|
||||||
bne .6
|
|
||||||
inc ZPTmpPTR+1
|
|
||||||
|
|
||||||
.6 inc Counter
|
|
||||||
bne .61
|
|
||||||
inc Counter+1
|
|
||||||
beq .71
|
|
||||||
|
|
||||||
.61 sta L91C96.2.DATA,x
|
|
||||||
lda (ZPTmpPTR),y
|
|
||||||
sta L91C96.2.DATA,x
|
|
||||||
iny
|
|
||||||
bne .5
|
|
||||||
inc ZPTmpPTR+1
|
|
||||||
bra .5
|
|
||||||
|
|
||||||
.70 lda #0
|
|
||||||
sta L91C96.2.DATA,x
|
|
||||||
sta L91C96.2.DATA,x
|
|
||||||
bra .8
|
|
||||||
|
|
||||||
.71 sta L91C96.2.DATA,x
|
|
||||||
lda #%00100000 signal an extra (odd) byte
|
|
||||||
sta L91C96.2.DATA,x
|
|
||||||
|
|
||||||
.8 lda #L91C96.2.MMUCR.NQPKT
|
|
||||||
sta L91C96.2.MMUCR,x
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 sec
|
STATUS.9 lda #MLI.E.BADCTL
|
||||||
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
OPEN jsr CLOSE
|
OPEN jsr CLOSE
|
||||||
|
|
||||||
|
* ldx DEVSLOTx0 Done by CLOSE
|
||||||
|
|
||||||
lda #L91C96.0.TCR.FDSE+L91C96.0.TCR.FUDPLX+L91C96.0.TCR.PADEN+L91C96.0.TCR.TXENA
|
lda #L91C96.0.TCR.FDSE+L91C96.0.TCR.FUDPLX+L91C96.0.TCR.PADEN+L91C96.0.TCR.TXENA
|
||||||
sta L91C96.0.TCR,x
|
sta L91C96.0.TCR,x
|
||||||
lda /L91C96.0.TCR.FDSE+L91C96.0.TCR.FUDPLX+L91C96.0.TCR.PADEN+L91C96.0.TCR.TXENA
|
lda /L91C96.0.TCR.FDSE+L91C96.0.TCR.FUDPLX+L91C96.0.TCR.PADEN+L91C96.0.TCR.TXENA
|
||||||
@ -384,14 +268,14 @@ OPEN jsr CLOSE
|
|||||||
bmi .2
|
bmi .2
|
||||||
|
|
||||||
.1 lda L91C96.1.IAR,x
|
.1 lda L91C96.1.IAR,x
|
||||||
sta MAC,y
|
sta S.DCB.NIC.MAC,y
|
||||||
inx
|
inx
|
||||||
iny
|
iny
|
||||||
cpy #6
|
cpy #6
|
||||||
bne .1
|
bne .1
|
||||||
bra .3
|
bra .3
|
||||||
|
|
||||||
.2 lda MAC,y
|
.2 lda S.DCB.NIC.MAC,y
|
||||||
sta L91C96.1.IAR,x
|
sta L91C96.1.IAR,x
|
||||||
inx
|
inx
|
||||||
iny
|
iny
|
||||||
@ -429,22 +313,253 @@ CLOSE ldx DEVSLOTx0
|
|||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
READ php
|
||||||
|
sei
|
||||||
|
|
||||||
|
>STYA ZPIOCTL
|
||||||
|
|
||||||
|
ldx DEVSLOTx0
|
||||||
|
lda #2
|
||||||
|
sta L91C96.BSR,x
|
||||||
|
|
||||||
|
lda L91C96.2.IST,x
|
||||||
|
and #L91C96.2.IST.RCV
|
||||||
|
bne .1
|
||||||
|
lda #MLI.E.EOF
|
||||||
|
|
||||||
|
.9 plp
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
|
||||||
|
.1 lda #L91C96.2.PTR.RCVD+L91C96.2.PTR.AUTOI+L91C96.2.PTR.READ
|
||||||
|
sta L91C96.2.PTR,x
|
||||||
|
lda /L91C96.2.PTR.RCVD+L91C96.2.PTR.AUTOI+L91C96.2.PTR.READ
|
||||||
|
sta L91C96.2.PTR+1,x
|
||||||
|
|
||||||
|
lda L91C96.2.DATA,x Get Frame Status Word (lo)
|
||||||
|
lda L91C96.2.DATA,x Get Frame Status Word (HI)
|
||||||
|
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
asl #$10 = odd?
|
||||||
|
asl if odd, CS
|
||||||
|
|
||||||
|
lda L91C96.2.DATA,x get lo byte count
|
||||||
|
sbc #5 compute Size
|
||||||
|
sta Size
|
||||||
|
pha
|
||||||
|
ldy #S.IOCTL.BYTECNT
|
||||||
|
sta (ZPIOCTL),y
|
||||||
|
eor #$ff
|
||||||
|
sta Counter
|
||||||
|
|
||||||
|
lda L91C96.2.DATA,x get hi byte count
|
||||||
|
sbc #0
|
||||||
|
sta Size+1
|
||||||
|
iny
|
||||||
|
sta (ZPIOCTL),y
|
||||||
|
eor #$ff
|
||||||
|
sta Counter+1
|
||||||
|
eor #$ff
|
||||||
|
|
||||||
|
ply
|
||||||
|
|
||||||
|
>SYSCALL getmem
|
||||||
|
bcs .9
|
||||||
|
>STYA ZPBufPtr
|
||||||
|
stx .8+1
|
||||||
|
|
||||||
|
phy
|
||||||
|
ldy #S.IOCTL.BUFPTR+1
|
||||||
|
sta (ZPIOCTL),y
|
||||||
|
dey
|
||||||
|
pla
|
||||||
|
sta (ZPIOCTL),y
|
||||||
|
|
||||||
|
ldx DEVSLOTx0
|
||||||
|
|
||||||
|
ldy #0
|
||||||
|
|
||||||
|
.2 inc Counter
|
||||||
|
bne .21
|
||||||
|
inc Counter+1
|
||||||
|
beq .4
|
||||||
|
|
||||||
|
.21 lda L91C96.2.DATA,x
|
||||||
|
sta (ZPBufPtr),y
|
||||||
|
iny
|
||||||
|
bne .3
|
||||||
|
inc ZPBufPtr+1
|
||||||
|
|
||||||
|
.3 inc Counter
|
||||||
|
bne .31
|
||||||
|
inc Counter+1
|
||||||
|
beq .4
|
||||||
|
|
||||||
|
.31 lda L91C96.2.DATA,x
|
||||||
|
sta (ZPBufPtr),y
|
||||||
|
iny
|
||||||
|
bne .2
|
||||||
|
inc ZPBufPtr+1
|
||||||
|
bra .2
|
||||||
|
|
||||||
|
.4 lda #L91C96.2.MMUCR.REMREL
|
||||||
|
sta L91C96.2.MMUCR,x
|
||||||
|
|
||||||
|
.8 ldx #$ff hMem
|
||||||
|
|
||||||
|
plp
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
WRITE php
|
||||||
|
sei
|
||||||
|
|
||||||
|
>STYA ZPIOCTL
|
||||||
|
|
||||||
|
ldx DEVSLOTx0
|
||||||
|
|
||||||
|
lda #2
|
||||||
|
sta L91C96.BSR,x
|
||||||
|
|
||||||
|
ldy #S.IOCTL.BYTECNT
|
||||||
|
lda (ZPIOCTL),y
|
||||||
|
sta Size
|
||||||
|
eor #$ff
|
||||||
|
sta Counter
|
||||||
|
eor #$ff
|
||||||
|
|
||||||
|
clc
|
||||||
|
adc #6 3 WORDs more Status, len & Control
|
||||||
|
|
||||||
|
bne .10
|
||||||
|
clc LO byte is 0, no need for an extra empty page
|
||||||
|
|
||||||
|
.10 iny
|
||||||
|
lda (ZPIOCTL),y
|
||||||
|
sta Size+1
|
||||||
|
eor #$ff
|
||||||
|
sta Counter+1
|
||||||
|
eor #$ff
|
||||||
|
|
||||||
|
adc #0
|
||||||
|
|
||||||
|
.1 ora #L91C96.2.MMUCR.ALLOC
|
||||||
|
sta L91C96.2.MMUCR,x
|
||||||
|
|
||||||
|
ldy #0
|
||||||
|
|
||||||
|
.2 lda L91C96.2.IST,x
|
||||||
|
and #L91C96.2.IST.ALLOC
|
||||||
|
bne .3
|
||||||
|
dey
|
||||||
|
bne .2
|
||||||
|
|
||||||
|
lda #MLI.E.EOF
|
||||||
|
|
||||||
|
.9 plp
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
|
||||||
|
.3 lda L91C96.2.AAR,x
|
||||||
|
sta L91C96.2.PNR,x
|
||||||
|
|
||||||
|
lda #L91C96.2.PTR.AUTOI
|
||||||
|
sta L91C96.2.PTR,x
|
||||||
|
lda /L91C96.2.PTR.AUTOI
|
||||||
|
sta L91C96.2.PTR+1,x
|
||||||
|
|
||||||
|
ldy #S.IOCTL.BUFPTR
|
||||||
|
lda (ZPIOCTL),y
|
||||||
|
sta ZPBufPtr
|
||||||
|
iny
|
||||||
|
lda (ZPIOCTL),y
|
||||||
|
sta ZPBufPtr+1
|
||||||
|
|
||||||
|
ldy #S.ETH.SRCMAC+5 Add Src MAC Address
|
||||||
|
ldx #5
|
||||||
|
.4 lda S.DCB.NIC.MAC,x
|
||||||
|
sta (ZPBufPtr),y
|
||||||
|
dey
|
||||||
|
dex
|
||||||
|
bpl .4
|
||||||
|
|
||||||
|
ldx DEVSLOTx0
|
||||||
|
stz L91C96.2.DATA,x write fake status word
|
||||||
|
stz L91C96.2.DATA,x
|
||||||
|
|
||||||
|
lda Size
|
||||||
|
pha
|
||||||
|
eor #$01
|
||||||
|
lsr
|
||||||
|
pla
|
||||||
|
adc #$05 add 5 if odd, 6 if even
|
||||||
|
sta L91C96.2.DATA,x
|
||||||
|
lda Size+1
|
||||||
|
adc #$00
|
||||||
|
sta L91C96.2.DATA,x
|
||||||
|
|
||||||
|
ldy #2
|
||||||
|
|
||||||
|
.5 inc Counter
|
||||||
|
bne .51
|
||||||
|
inc Counter+1
|
||||||
|
beq .70
|
||||||
|
|
||||||
|
.51 lda (ZPBufPtr),y
|
||||||
|
iny
|
||||||
|
bne .6
|
||||||
|
inc ZPBufPtr+1
|
||||||
|
|
||||||
|
.6 inc Counter
|
||||||
|
bne .61
|
||||||
|
inc Counter+1
|
||||||
|
beq .71
|
||||||
|
|
||||||
|
.61 sta L91C96.2.DATA,x
|
||||||
|
lda (ZPBufPtr),y
|
||||||
|
sta L91C96.2.DATA,x
|
||||||
|
iny
|
||||||
|
bne .5
|
||||||
|
inc ZPBufPtr+1
|
||||||
|
bra .5
|
||||||
|
|
||||||
|
.70 lda #0
|
||||||
|
sta L91C96.2.DATA,x
|
||||||
|
sta L91C96.2.DATA,x
|
||||||
|
bra .8
|
||||||
|
|
||||||
|
.71 sta L91C96.2.DATA,x
|
||||||
|
lda #%00100000 signal an extra (odd) byte
|
||||||
|
sta L91C96.2.DATA,x
|
||||||
|
|
||||||
|
.8 lda #L91C96.2.MMUCR.NQPKT
|
||||||
|
sta L91C96.2.MMUCR,x
|
||||||
|
|
||||||
|
plp
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
DRV.CS.END
|
DRV.CS.END
|
||||||
DEVSLOTx0 .BS 1
|
DEVSLOTx0 .BS 1
|
||||||
USERMAC .BS 1
|
USERMAC .BS 1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DEVSTAT .DA #0
|
DIB .DA #0
|
||||||
.BS 3 size
|
.DA #0,#0,#0 size
|
||||||
>PSTR "LanCEGS/L91C96"
|
>PSTR "LanCEGS/L91C96"
|
||||||
.BS 1
|
.BS 1
|
||||||
.DA #S.DIB.T.NET
|
.DA #S.DIB.T.NIC
|
||||||
.BS 1 Subtype
|
.BS 1 Subtype
|
||||||
.BS 2 Version
|
.BS 2 Version
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
FLAGS .DA #0
|
DCB .DA #S.DCB.T.NIC
|
||||||
LINK.STATUS .BS 1 OK/DUPLEX/SPEED
|
.BS 1 FLAGS
|
||||||
MAC .BS 6
|
.BS 1 LINK
|
||||||
|
.DA #S.DCB.NIC.SPEED.10
|
||||||
|
.HS 000E3A123456 MAC
|
||||||
|
.BS 12 IP/MASK/GW
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
DRV.END
|
||||||
MAN
|
MAN
|
||||||
SAVE /A2OSX.SRC/DRV/LANCEGS.DRV.S
|
SAVE /A2OSX.SRC/DRV/LANCEGS.DRV.S
|
||||||
ASM
|
ASM
|
||||||
|
@ -177,7 +177,7 @@ DRV.CS.START cld
|
|||||||
.DA A2osX.BADCALL
|
.DA A2osX.BADCALL
|
||||||
.DA A2osX.BADCALL
|
.DA A2osX.BADCALL
|
||||||
.DA A2osX.BADCALL
|
.DA A2osX.BADCALL
|
||||||
.DA CONTROL
|
.DA A2osX.BADCALL
|
||||||
.DA A2osX.BADCALL
|
.DA A2osX.BADCALL
|
||||||
.DA OPEN
|
.DA OPEN
|
||||||
.DA CLOSE
|
.DA CLOSE
|
||||||
@ -216,8 +216,7 @@ STATUS >STYA ZPIOCTL
|
|||||||
|
|
||||||
STATUS.DCB cmp #S.IOCTL.STATCODE.GETDCB
|
STATUS.DCB cmp #S.IOCTL.STATCODE.GETDCB
|
||||||
bne STATUS.9
|
bne STATUS.9
|
||||||
lda #S.DCB.NIC.SPEED.10
|
|
||||||
sta DCB+S.DCB.NIC.SPEED
|
|
||||||
stz DCB+S.DCB.NIC.LINK
|
stz DCB+S.DCB.NIC.LINK
|
||||||
|
|
||||||
ldx DEVSLOTx0
|
ldx DEVSLOTx0
|
||||||
@ -269,32 +268,10 @@ STATUS.9 lda #MLI.E.BADCTL
|
|||||||
sec
|
sec
|
||||||
rts
|
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
|
OPEN jsr CLOSE
|
||||||
|
|
||||||
|
* ldx DEVSLOTx0 Done by CLOSE
|
||||||
|
|
||||||
lda /PP.RxCTL
|
lda /PP.RxCTL
|
||||||
sta PacketPagePTR+1,x
|
sta PacketPagePTR+1,x
|
||||||
lda #PP.RxCTL
|
lda #PP.RxCTL
|
||||||
@ -569,7 +546,7 @@ DIB .DA #0
|
|||||||
DCB .DA #S.DCB.T.NIC
|
DCB .DA #S.DCB.T.NIC
|
||||||
.BS 1 FLAGS
|
.BS 1 FLAGS
|
||||||
.BS 1 LINK
|
.BS 1 LINK
|
||||||
.BS 1 SPEED
|
.DA #S.DCB.NIC.SPEED.10
|
||||||
.HS 000E3A123456 MAC
|
.HS 000E3A123456 MAC
|
||||||
.BS 12 IP/MASK/GW
|
.BS 12 IP/MASK/GW
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -187,7 +187,11 @@ DRV.CS.START cld
|
|||||||
.DA A2osX.BADCALL
|
.DA A2osX.BADCALL
|
||||||
.DA A2osX.BADCALL
|
.DA A2osX.BADCALL
|
||||||
.DA A2osX.BADCALL
|
.DA A2osX.BADCALL
|
||||||
|
.DO U2AI=1
|
||||||
.DA CONTROL
|
.DA CONTROL
|
||||||
|
.ELSE
|
||||||
|
.DA A2osX.BADCALL
|
||||||
|
.FIN
|
||||||
.DA A2osX.BADCALL
|
.DA A2osX.BADCALL
|
||||||
.DA OPEN
|
.DA OPEN
|
||||||
.DA CLOSE
|
.DA CLOSE
|
||||||
@ -248,6 +252,7 @@ STATUS.9 lda #MLI.E.BADCTL
|
|||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
.DO U2AI=1
|
||||||
CONTROL >STYA ZPIOCTL
|
CONTROL >STYA ZPIOCTL
|
||||||
|
|
||||||
ldy #S.IOCTL.CTRLCODE
|
ldy #S.IOCTL.CTRLCODE
|
||||||
@ -269,8 +274,7 @@ CONTROL >STYA ZPIOCTL
|
|||||||
dex
|
dex
|
||||||
bpl .2
|
bpl .2
|
||||||
|
|
||||||
clc
|
.FIN
|
||||||
rts
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
OPEN jsr CLOSE
|
OPEN jsr CLOSE
|
||||||
|
|
||||||
|
@ -296,10 +296,10 @@ note : '$VAR' does NOT expand Variable
|
|||||||
| Mouse.DRV | Working | Apple Mouse Card,//c Mouse Port | 0.9.1 |
|
| Mouse.DRV | Working | Apple Mouse Card,//c Mouse Port | 0.9.1 |
|
||||||
| DHGR.DRV | Working | 560x192 Mono/16 colors Mixed-Mode support | 0.9.1 |
|
| DHGR.DRV | Working | 560x192 Mono/16 colors Mixed-Mode support | 0.9.1 |
|
||||||
| ---- | ------ | ------- | ----- |
|
| ---- | ------ | ------- | ----- |
|
||||||
| LanCeGS.DRV | Working | | 0.9.1 |
|
| LanCeGS.DRV | Working | | 0.92 |
|
||||||
| Uthernet.DRV | Working | | 0.92 |
|
| Uthernet.DRV | Working | | 0.92 |
|
||||||
| Uthernet2.DRV | Working | | 0.92 |
|
| Uthernet2.DRV | Working | | 0.92 |
|
||||||
| Uther2.AI.DRV | In Progress | With ARP/IP Offloading | 0.9 |
|
| Uther2.AI.DRV | In Progress | With ARP/IP Offloading | 0.92 |
|
||||||
|
|
||||||
## BIN,External Shell commands:
|
## BIN,External Shell commands:
|
||||||
| Name | Status | Comment | K.Ver |
|
| Name | Status | Comment | K.Ver |
|
||||||
|
Loading…
Reference in New Issue
Block a user