Kernel 0.9.2

This commit is contained in:
Rémy GIBERT 2018-07-23 08:28:47 +02:00
parent a8aba43c15
commit 1b089829c4
25 changed files with 516 additions and 361 deletions

Binary file not shown.

Binary file not shown.

View File

@ -10,14 +10,14 @@ INSDRV CONSOLE.DRV
# Serial Login
#INSDRV SSC.DRV 9600,N,8,1,X
INSDRV SSC.I.DRV 9600,N,8,1,X
STARTPROC GETTY CON ${A2OSX}SBIN/LOGIN
STARTPROC GETTY COM2 ${A2OSX}SBIN/LOGIN
STARTPROC GETTY /DEV/CON ${A2OSX}SBIN/LOGIN
STARTPROC GETTY /DEV/COM2 ${A2OSX}SBIN/LOGIN
#INSDRV PIC.DRV
# Network Section
INSDRV UTHERNET.DRV 000E3A123456
INSDRV UTHERNET.DRV 00:0E:3A:12:34:56
#INSDRV LANCEGS.DRV
#INSDRV UTHER2.AI.DRV 0008DC123456
#INSDRV UTHERNET2.DRV 0008DC123456
#INSDRV UTHER2.AI.DRV 00:08:DC:12:34:56
#INSDRV UTHERNET2.DRV 00:08:DC:12:34:56
#STARTPROC TCPIP
#STARTPROC DHCPCLNT
#STARTPROC TELNETD

View File

@ -156,7 +156,7 @@ READBLOCK ldx DEVSLOTx0
lda L91C96.2.IST,x
and #L91C96.2.IST.RCV
bne READBLOCK.RxOK
lda #ERR.DEV.NOFRAME
lda #MLI.E.EOF
sec
rts
@ -282,7 +282,7 @@ WRITEBLOCK >STYA ZPTmpPTR
dey
bne .2
lda #ERR.DEV.NOBUFFER
lda #MLI.E.EOF
sec
rts

View File

@ -169,7 +169,7 @@ READBLOCK ldx DEVSLOTx0
ora W5100.DR,x LO
bne READBLOCK.RxOK
lda #ERR.DEV.NOFRAME
lda #MLI.E.EOF
sec
READBLOCK.RTS rts
@ -309,7 +309,7 @@ WRITEBLOCK >STYA ZPTmpPTR
sbc RXTX.Size+1
bcs WRITEBLOCK.1
lda #ERR.DEV.NOBUFFER
lda #MLI.E.EOF
sec
rts

View File

@ -4,18 +4,16 @@ AUTO 4,1
.LIST OFF
.OP 65C02
.OR $2000
.TF /A2OSX.BUILD/DRV/UTHERNET.DRV
.TF DRV/UTHERNET.DRV
*--------------------------------------
.INB /A2OSX.BUILD/INC/MACROS.I
.INB /A2OSX.BUILD/INC/A2OSX.I
.INB /A2OSX.BUILD/INC/MLI.ERR.I
.INB /A2OSX.BUILD/INC/NIC.I
.INB /A2OSX.BUILD/INC/NIC.8900A.I
.INB /A2OSX.BUILD/INC/LIBTCPIP.I
.INB INC/MACROS.I
.INB INC/A2OSX.I
.INB INC/MLI.ERR.I
.INB INC/NIC.I
.INB INC/NIC.8900A.I
.INB INC/ETH.I
*--------------------------------------
ZPTmpPTR .EQ ZPDRV
Size .EQ ZPDRV+2
Counter .EQ ZPDRV+4
ZPArgPtr .EQ ZPDRV
*--------------------------------------
* File Header (16 Bytes)
*--------------------------------------
@ -25,19 +23,29 @@ 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
>LDYA L.MSG.DETECT
>SYSCALL printf
@ -60,7 +68,7 @@ Dev.Detect >STYA ARGS
cmp #DEVID
beq .3
.2 dec DEV.HEADER.NAME+3
.2 dec FD.DEV.NAME+3
txa
sec
sbc #$10
@ -85,77 +93,132 @@ Dev.Detect >STYA ARGS
sta PacketPagePTR,x
lda PacketPageDATA+1,x
sta DEVSTAT+S.DIB.VERSION+1 set Hardware version
sta DIB+S.DIB.VERSION+1 set Hardware version
lda PacketPageDATA,x
sta DEVSTAT+S.DIB.VERSION
sta DIB+S.DIB.VERSION
>LDYA ARGS
>STYA ZPTmpPTR
jsr Dev.ParseArgs
bcs .9
.8 >PUSHW L.FD.DEV.NAME
>LDYA L.MSG.DETECT.OK
>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
lda (ZPTmpPTR)
bne .4
.9 rts
*--------------------------------------
Dev.ParseArgs >LDYA ARGS
>STYA ZPArgPTR
lda (ZPArgPTR)
bne .1
lda #$00
sta MAC
lda #$0E
sta MAC+1
lda #$3A
sta MAC+2
lda A2osX.RANDOM16
eor A2osX.TIMER16
sta MAC+3
sta DCB+S.DCB.NIC.MAC+3
eor A2osX.RANDOM16+1
sta MAC+4
sta DCB+S.DCB.NIC.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
>LDYA L.MSG.DETECT.OK
>SYSCALL printf
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
ARGS .BS 2
MSG.DETECT .AZ "UtherNet/CS8900A Driver.\r\n"
MSG.DETECT.OK .AZ "UtherNet/CS8900A Installed As Device : %s\r\n"
MSG.DETECT.KO .AZ "Hardware Not Found.\r\n"
ARGS .BS 2
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" NAME
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
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 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 lda #S.DIB.NIC.STATUS.10
sta LINK.STATUS
STATUS >STYA ZPIOCTL
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
lda #S.DCB.NIC.SPEED.10
sta DCB+S.DCB.NIC.SPEED
stz DCB+S.DCB.NIC.LINK
ldx DEVSLOTx0
lda /PP.LineST
@ -168,11 +231,10 @@ STATUS lda #S.DIB.NIC.STATUS.10
and #PP.LineST.LinkOK
beq .1
lda LINK.STATUS
ora #S.DIB.NIC.STATUS.OK
sta LINK.STATUS
lda #S.DCB.NIC.LINK.OK
tsb DCB+S.DCB.NIC.LINK
.1 lda /PP.TestCTL
lda /PP.TestCTL
sta PacketPagePTR+1,x
lda #PP.TestCTL
sta PacketPagePTR,x
@ -180,187 +242,55 @@ STATUS lda #S.DIB.NIC.STATUS.10
lda PacketPageDATA+1,x
ldy PacketPageDATA,x
and /PP.TestCTL.FDX
beq .2
beq .1
lda LINK.STATUS
ora #S.DIB.NIC.STATUS.FD
sta LINK.STATUS
.2 >LDYA L.DEVSTAT
clc
rts
*--------------------------------------
READBLOCK php
sei
ldx DEVSLOTx0
lda /PP.RxEvent
sta PacketPagePTR+1,x
lda #PP.RxEvent
sta PacketPagePTR,x
lda PacketPageDATA+1,x
ldy PacketPageDATA,x
and /PP.RxEvent.RxOK+PP.RxEvent.IA+PP.RxEvent.Brdcast+PP.RxEvent.Runt
bne .1
lda #ERR.DEV.NOFRAME
.9 plp
sec
rts
.1 lda RTDATA+1,x discard RxStatus
lda RTDATA,x
lda RTDATA+1,x
sta Size+1
lda RTDATA,x get RxLength
sta Size
clc
adc #2
tay
lda Size+1
adc #0
>SYSCALL getmem
bcs .9
>STYA ZPTmpPTR
stx .8+1
sty .8+3
sta .8+5
lda Size
sta (ZPTmpPTR)
eor #$ff
sta Counter
ldy #1
lda Size+1
sta (ZPTmpPTR),y
eor #$ff
sta Counter+1
lda #S.DCB.NIC.LINK.FD
tsb DCB+S.DCB.NIC.LINK
.1 ldy #S.IOCTL.BUFPTR
lda (ZPIOCTL),y
sta .3+1
iny
lda (ZPIOCTL),y
sta .3+2
ldx DEVSLOTx0
.2 inc Counter
bne .3
inc Counter+1
beq .8
ldx #S.DCB.NIC-1
.3 lda RTDATA,x
sta (ZPTmpPTR),y
iny
bne .4
inc ZPTmpPTR+1
.4 inc Counter
bne .5
inc Counter+1
beq .8
.5 lda RTDATA+1,x
sta (ZPTmpPTR),y
iny
bne .2
inc ZPTmpPTR+1
bne .2
.8 ldx #$ff hMem
ldy #$ff PtrLO
lda #$ff PtrHI
plp
clc
rts
*--------------------------------------
WRITEBLOCK php
sei
>STYA ZPTmpPTR
ldx #5
ldy #S.ETH.SRCMAC+5
.10 lda MAC,x
sta (ZPTmpPTR),y
dey
.2 lda DCB,x
.3 sta $ffff,x SELF MODIFIED
dex
bpl .10
bpl .2
ldx DEVSLOTx0
lda /PP.TxCMD.LID+PP.TxCMD.TxStartFULL
sta TxCMD+1,x
lda #PP.TxCMD.LID+PP.TxCMD.TxStartFULL
sta TxCMD,x
ldy #1
lda (ZPTmpPTR),y
sta TxLength+1,x
eor #$ff
sta Counter+1
lda (ZPTmpPTR)
sta TxLength,x
eor #$ff
sta Counter
lda /PP.BusST
sta PacketPagePTR+1,x
lda #PP.BusST
sta PacketPagePTR,x
ldy #16
.1 lda PacketPageDATA+1,x
and /PP.BusST.Rdy4TxNOW
bne WRITEBLOCK.1
lda PacketPageDATA,x
and #PP.BusST.TxBidErr
bne .9
dey
bne .1
.9 lda #ERR.DEV.NOBUFFER
plp
sec
clc
rts
WRITEBLOCK.1 ldy #2
STATUS.9 lda #MLI.E.BADCTL
sec
rts
*--------------------------------------
CONTROL >STYA ZPIOCTL
.1 inc Counter
bne .2
inc Counter+1
beq .8
ldy #S.IOCTL.CTRLCODE
lda (ZPIOCTL),y
cmp #S.IOCTL.CTRLCODE.SETDCB
bne STATUS.9
.2 lda (ZPTmpPTR),y
sta RTDATA,x
.1 ldy #S.IOCTL.BUFPTR
lda (ZPIOCTL),y
sta .2+1
iny
bne .3
inc ZPTmpPTR+1
lda (ZPIOCTL),y
sta .2+2
.3 inc Counter
bne .4
inc Counter+1
beq .8
ldx #S.DCB.NIC-1
.4 lda (ZPTmpPTR),y
sta RTDATA+1,x
iny
bne .1
inc ZPTmpPTR+1
bne .1
.2 lda $ffff,x SELF MODIFIED
sta DCB,x
dex
bpl .2
.8 plp
clc
rts
rts
*--------------------------------------
OPEN jsr CLOSE
@ -379,15 +309,15 @@ OPEN jsr CLOSE
lda #PP.MAC
sta PacketPagePTR,x
>LDYA MAC
>LDYA DCB+S.DCB.NIC.MAC
>STYA PacketPageDATA,x
>LDYAI PP.MAC+2
>STYA PacketPagePTR,x
>LDYA MAC+2
>LDYA DCB+S.DCB.NIC.MAC+2
>STYA PacketPageDATA,x
>LDYAI PP.MAC+4
>STYA PacketPagePTR,x
>LDYA MAC+4
>LDYA DCB+S.DCB.NIC.MAC+4
>STYA PacketPageDATA,x
lda /PP.LineCTL
@ -400,6 +330,9 @@ OPEN jsr CLOSE
lda #PP.LineCTL.LID+PP.LineCTL.SerRxOn+PP.LineCTL.SerTxOn+PP.LineCTL.10BaseT
sta PacketPageDATA,x
lda #S.DIB.S.OPENED
tsb DIB+S.DIB.S
clc
rts
*--------------------------------------
@ -432,22 +365,200 @@ CLOSE ldx DEVSLOTx0
iny
bne .1
.8 clc
.8 lda #S.DIB.S.OPENED
trb DIB+S.DIB.S
clc
rts
*--------------------------------------
READ >STYA ZPIOCTL
php
sei
ldx DEVSLOTx0
lda /PP.RxEvent
sta PacketPagePTR+1,x
lda #PP.RxEvent
sta PacketPagePTR,x
lda PacketPageDATA+1,x
ldy PacketPageDATA,x
and /PP.RxEvent.RxOK+PP.RxEvent.IA+PP.RxEvent.Brdcast+PP.RxEvent.Runt
bne .1
lda #MLI.E.EOF
.9 plp
sec
rts
.1 lda RTDATA+1,x discard RxStatus
lda RTDATA,x
lda RTDATA+1,x
sta Size+1
ldy RTDATA,x get RxLength
sty Size
>SYSCALL getmem
bcs .9
>STYA ZPBufPtr
stx .8+1
lda Size
eor #$ff
sta Counter
ldy #1
lda Size+1
eor #$ff
sta Counter+1
ldy #0
ldx DEVSLOTx0
.2 inc Counter
bne .3
inc Counter+1
beq .8
.3 lda RTDATA,x
sta (ZPBufPtr),y
iny
bne .4
inc ZPBufPtr+1
.4 inc Counter
bne .5
inc Counter+1
beq .8
.5 lda RTDATA+1,x
sta (ZPBufPtr),y
iny
bne .2
inc ZPBufPtr+1
bne .2
.8 lda #$ff SELF MODIFIED hMem
plp
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
sei
ldx DEVSLOTx0
lda /PP.TxCMD.LID+PP.TxCMD.TxStartFULL
sta TxCMD+1,x
lda #PP.TxCMD.LID+PP.TxCMD.TxStartFULL
sta TxCMD,x
ldy #S.IOCTL.BYTECNT+1
lda (ZPIOCTL),y
sta TxLength+1,x
eor #$ff
sta Counter+1
dey
lda (ZPIOCTL),y
sta TxLength,x
eor #$ff
sta Counter
lda /PP.BusST
sta PacketPagePTR+1,x
lda #PP.BusST
sta PacketPagePTR,x
ldy #16
.1 lda PacketPageDATA+1,x
and /PP.BusST.Rdy4TxNOW
bne WRITE.1
lda PacketPageDATA,x
and #PP.BusST.TxBidErr
bne .9
dey
bne .1
.9 lda #MLI.E.EOF
plp
sec
rts
WRITE.1 ldy #0
.1 inc Counter
bne .2
inc Counter+1
beq .8
.2 lda (ZPBufPtr),y
sta RTDATA,x
iny
bne .3
inc ZPBufPtr+1
.3 inc Counter
bne .4
inc Counter+1
beq .8
.4 lda (ZPBufPtr),y
sta RTDATA+1,x
iny
bne .1
inc ZPBufPtr+1
bne .1
.8 plp
clc
rts
*--------------------------------------
DRV.CS.END
DEVSLOTx0 .BS 1
*--------------------------------------
DEVSTAT .DA #0
.BS 3 size
DIB .DA #0
.DA #0,#0,#0 size
>PSTR "Uthernet/CS8900A"
.DA #S.DIB.T.NET
.DA #S.DIB.T.NIC
.BS 1 Subtype
.BS 2 Version
*--------------------------------------
FLAGS .DA #0
LINK.STATUS .BS 1 OK/DUPLEX/SPEED
MAC .BS 6
DCB .DA #S.DCB.T.NIC
.BS 1 FLAGS
.BS 1 LINK
.BS 1 SPEED
.HS 000E3A123456 MAC
*--------------------------------------
DRV.END
MAN
SAVE /A2OSX.SRC/DRV/UTHERNET.DRV.S
ASM

View File

@ -169,7 +169,7 @@ READBLOCK ldx DEVSLOTx0
ora W5100.DR,x LO
bne READBLOCK.RxOK
lda #ERR.DEV.NOFRAME
lda #MLI.E.EOF
sec
rts
@ -276,7 +276,7 @@ WRITEBLOCK >STYA ZPTmpPTR
sbc RXTX.Size+1
bcs WRITEBLOCK.1
lda #ERR.DEV.NOBUFFER
lda #MLI.E.EOF
sec
rts

View File

@ -1 +1,6 @@
apple2-host
NEW
PREFIX /A2OSX.BUILD
AUTO 4,1
a2osx-host
MAN
TEXT ETC/HOSTNAME

View File

@ -0,0 +1,7 @@
NEW
PREFIX /A2OSX.BUILD
AUTO 4,1
# put your IP address and your hostname and aliases below
# 1.2.3.4 myserver.mydomain myserver
MAN
TEXT ETC/HOSTS

View File

@ -3,7 +3,7 @@ PREFIX /A2OSX.BUILD
AUTO 4,1
IP=192.168.1.150
MASK=255.255.255.0
GW=192.168.1.1
GW=192.168.1.254
DNS1=192.168.1.2
DNS2=192.168.1.1
DOMAIN=coincoin.hd.free.fr

View File

@ -327,6 +327,9 @@ S.IOCTL.ADDRPTR .EQ 6 3 BYTES
*
S.IOCTL .EQ 9
*--------------------------------------
S.DCB.T .EQ 0
S.DCB.T.NIC .EQ $12
*--------------------------------------
S.DIB.S .EQ 0
S.DIB.S.BLOCK .EQ %10000000
S.DIB.S.WRITE .EQ %01000000

15
INC/ETH.I.txt Normal file
View File

@ -0,0 +1,15 @@
NEW
PREFIX /A2OSX.BUILD
AUTO 4,1
.LIST OFF
*--------------------------------------
S.ETH.DSTMAC .EQ 0
S.ETH.SRCMAC .EQ 6
S.ETH.ETHERTYPE .EQ 12
S.ETH.ETHERTYPE.IP .EQ $800
S.ETH.ETHERTYPE.ARP .EQ $806
*
S.ETH .EQ 6+6+2
*--------------------------------------
MAN
SAVE INC/ETH.I

View File

@ -70,9 +70,6 @@ ERR.ARP.PENDING .EQ $B5
ERR.ARP.ERROR .EQ $B4
ERR.DEV .EQ $B3
ERR.DEV.NOBUFFER .EQ $B1
ERR.DEV.NOFRAME .EQ $B0
*--------------------------------------
UDP.PORT.DNS .EQ 53
UDP.PORT.PMAP .EQ 111
@ -189,15 +186,6 @@ S.TCB.OUTACKNUM .EQ 32 Send:ACK to send to remote
*
S.TCB .EQ 36
*--------------------------------------
S.ETH.FRAMELEN .EQ 0
S.ETH.DSTMAC .EQ 2
S.ETH.SRCMAC .EQ 8
S.ETH.ETHERTYPE .EQ 14
S.ETH.ETHERTYPE.IP .EQ $800
S.ETH.ETHERTYPE.ARP .EQ $806
*
S.ETH .EQ 2+6+6+2
*--------------------------------------
S.ARP.HTYPE .EQ S.ETH+0 $0001
S.ARP.PTYPE .EQ S.ETH+2 $0800
S.ARP.HLEN .EQ S.ETH+4 $06

View File

@ -8,6 +8,7 @@ AUTO 6
*$00 - No Error
MLI.E.BADCALL .EQ $01 Bad Call Number
*MLI.E.BADCNT .EQ $04 Bad Parameter Count
*MLI.E.BUSERR .EQ $06 Communications Error
MLI.E.BADCTL .EQ $21 Invalid Status Code
*MLI.E.IRQFULL .EQ $25 Interrupt Table Full
MLI.E.IO .EQ $27 I/O Error
@ -30,12 +31,12 @@ MLI.E.EOF .EQ $4C End of File, No More Data
MLI.E.BEYEOF .EQ $4D Beyond EOF
MLI.E.LOCKED .EQ $4E File Access Error, File Locked
MLI.E.OPEN .EQ $50 File Already Open
*$51 - Directory Structure Damaged
*$53 - Invalid Parameter
*$55 - Too Many Volumes
*$56 - Bad Buffer Address
*$57 - Duplicate Volume
*$5A - File Structure Damaged
* .EQ $51 Directory Structure Damaged
* .EQ $53 Invalid Parameter
* .EQ $55 Too Many Volumes
* .EQ $56 Bad Buffer Address
* .EQ $57 Duplicate Volume
* .EQ $5A File Structure Damaged
*--------------------------------------
MAN
SAVE /A2OSX.BUILD/INC/MLI.ERR.I

View File

@ -5,17 +5,22 @@ AUTO 4,1
*--------------------------------------
* NIC Devices
*--------------------------------------
S.DIB.NIC.FLAGS .EQ S.DIB
S.DIB.NIC.FLAGS.ARPOFFLOAD .EQ %00000001
S.DIB.NIC.FLAGS.IPOFFLOAD .EQ %00000010
S.DIB.NIC.STATUS .EQ S.DIB+1
S.DIB.NIC.STATUS.OK .EQ $80
S.DIB.NIC.STATUS.FD .EQ $40
S.DIB.NIC.STATUS.10 .EQ $01
S.DIB.NIC.STATUS.100 .EQ $02
S.DIB.NIC.STATUS.1000 .EQ $03
S.DIB.NIC.MAC .EQ S.DIB+2
S.DIB.NIC .EQ S.DIB+8
S.DCB.NIC.FLAGS .EQ 1
S.DCB.NIC.FLAGS.ARPOFFLOAD .EQ %00000001
S.DCB.NIC.FLAGS.IPOFFLOAD .EQ %00000010
S.DCB.NIC.LINK .EQ 2
S.DCB.NIC.LINK.OK .EQ $80
S.DCB.NIC.LINK.FD .EQ $40
S.DCB.NIC.SPEED .EQ 3
S.DCB.NIC.SPEED.10 .EQ $01
S.DCB.NIC.SPEED.100 .EQ $02
S.DCB.NIC.SPEED.1000 .EQ $03
S.DCB.NIC.MAC .EQ 4
S.DCB.NIC.IP .EQ 10
S.DCB.NIC.MASK .EQ 14
S.DCB.NIC.GW .EQ 18
*
S.DCB.NIC .EQ 22
*--------------------------------------
MAN
SAVE /A2OSX.BUILD/INC/NIC.I
SAVE INC/NIC.I

View File

@ -126,7 +126,7 @@ MD5 >STYA ZPDataPtr
>PULLW ZPHashPtr
>PULLYA
>SYSCALL StrLen.YA
>SYSCALL strlen
>STYA ZPDataLen
.1 jsr MD5Init

View File

@ -32,21 +32,32 @@ SET.IPCFG >PULLW ZPTmpPtr1
sta DNS.SOCKET.SA,x
dex
bpl .3
lda IPCFG+S.IPCFG.HDEV
>SYSCALL GetDevStatus
>LDYA L.DCB.NIC
>STYA IOCTL+S.IOCTL.BUFPTR
lda S.IOCTL.STATCODE.GETDCB
sta S.IOCTL.STATCODE
ldx IOCTL.STATUS
jsr SET.IPCFG.IOCTL
>STYA ZPTmpPtr2
ldy #S.DIB.NIC.FLAGS
lda (ZPTmpPtr2),y
sta DevFlags
and #S.DIB.NIC.FLAGS.ARPOFFLOAD
lda DCB.NIC+S.DCB.NIC.FLAGS
and #S.DCB.NIC.FLAGS.ARPOFFLOAD
beq .4
>PUSHB IPCFG+S.IPCFG.HDEV
>PUSHBI DEVMGR.CONTROL
>PUSHW ZPTmpPtr1
>SYSCALL IOCTL
ldx #11
.31 lda IPCFG+S.IPCFG.IP,x
sta DCB.NIC+S.DCB.NIC.IP,x
dex
bpl .31
* lda S.IOCTL.CTRLCODE.SETDCB same as lda S.IOCTL.STATCODE.GETDCB
* sta S.IOCTL.CTRLCODE same as sta S.IOCTL.STATCODE
lda IPCFG+S.IPCFG.HDEV
jsr SET.IPCFG.IOCTL
.4 lda hDNSSocket1
beq .41
@ -99,6 +110,13 @@ SET.IPCFG >PULLW ZPTmpPtr1
.8 >LDYA ZPTmpPtr1
clc
.9 rts
SET.IPCFG.IOCTL >PUSHW L.IOCTL
txa
>PUSHA
lda IPCFG+S.IPCFG.HDEV
>SYSCALL IOCTL
rts
*--------------------------------------
* grab a copy on the fly for lib function
* OUT :

View File

@ -154,7 +154,7 @@ DNS.ADD.I sta DNS.TmpCache
jsr DNS.FIND.FREE
>LDYA ZPPtrDNS
>SYSCALL NewStr.YA
>SYSCALL newstr
bcs .9
txa
ldy #S.DNSCACHE.hNAME
@ -489,7 +489,7 @@ DNS.CSTR2DNS lda (ZPPtrDNS)
beq .9
>LDYA ZPPtrDNS
>SYSCALL StrLen.YA
>SYSCALL strlen
tax
bne .9

View File

@ -15,33 +15,26 @@ FRM.NewIP stx .8+1
>STYA ZPDataOutLen
cpx #S.IP.PROTOCOL.TCP
bne .1
lda #S.TCP-2
lda #S.TCP
bra .4
.1 cpx #S.IP.PROTOCOL.UDP
bne .2
lda #S.UDP-2
lda #S.UDP
bra .4
.2 lda #S.IP-2
.2 lda #S.IP
bra .4
.4 sta .5+1 save Header len for reset later
clc
adc ZPDataOutLen
sta ZPFrameOutLen
pha
tay
lda #0
adc ZPDataOutLen+1
sta ZPFrameOutLen+1
tax
pla
adc #2
tay
txa
adc #0
>SYSCALL getmem
bcs .9
@ -49,13 +42,7 @@ FRM.NewIP stx .8+1
stx hFrameOut
>STYA ZPFrameOutPtr
lda ZPFrameOutLen
sta (ZPFrameOutPtr)
ldy #1
lda ZPFrameOutLen+1
sta (ZPFrameOutPtr),y
iny
ldy #0
.5 ldx #$ff Self Modified, header length
@ -75,8 +62,8 @@ FRM.NewIP stx .8+1
adc ZPFrameOutPtr+1
sta ZPDataOutPtr+1
lda DevFlags
and #S.DIB.NIC.FLAGS.IPOFFLOAD
lda DCB.NIC+S.DCB.NIC.FLAGS
and #S.DCB.NIC.FLAGS.IPOFFLOAD
bne .7
ldy #S.ETH.ETHERTYPE
@ -135,8 +122,8 @@ FRM.SendIP ldx #3 Copy SRC.IP even if IP offload
dex
bpl .1
lda DevFlags
and #S.DIB.NIC.FLAGS.IPOFFLOAD
lda DCB.NIC+S.DCB.NIC.FLAGS
and #S.DCB.NIC.FLAGS.IPOFFLOAD
bne .21
ldy #S.IP.TOTAL.LENGTH+1
@ -198,13 +185,13 @@ FRM.SendIP ldx #3 Copy SRC.IP even if IP offload
lda ZPFrameOutLen
sec
sbc #S.IP-2
sbc #S.IP
ldy #S.UDP.LENGTH+1
sta (ZPFrameOutPtr),y
lda ZPFrameOutLen+1
sbc /S.IP-2
sbc /S.IP
dey
sta (ZPFrameOutPtr),y
@ -216,8 +203,8 @@ FRM.SendIP ldx #3 Copy SRC.IP even if IP offload
bne .5
jsr ICMP.ComputeChecksum
.5 lda DevFlags
and #S.DIB.NIC.FLAGS.ARPOFFLOAD
.5 lda DCB.NIC+S.DCB.NIC.FLAGS
and #S.DCB.NIC.FLAGS.ARPOFFLOAD
bne .6
jsr IP.SetDestMAC
@ -297,11 +284,12 @@ FRM.Retry ldx FRM.QUEUE.Tail
.8 rts
*--------------------------------------
FRM.Send.YA pha
>PUSHB IPCFG+S.IPCFG.HDEV
>PUSHBI DEVMGR.WRITEBLOCK
pla
>PUSHYA
FRM.Send.YA *****>PUSHYA
>PUSHW L.IOCTL
>PUSHBI IOCTL.WRITE
lda IPCFG+S.IPCFG.HDEV
>SYSCALL IOCTL try sending again to DRV
rts
*--------------------------------------

View File

@ -61,6 +61,8 @@ ICMP.IN.ECHOREQ ldy #S.IP.DST+3
jsr ARP.ADD.I
lda hFrameIn
stz hFrameIn
sta hFrameOut DO NOT DISCARD this frame,it is SOURCE frame!!!
>LDYA ZPFrameInPtr
>STYA ZPFrameOutPtr

View File

@ -302,7 +302,7 @@ SKT.AcceptA jsr SKT.GetA.I
*\--------------------------------------
SKT.MkNodA sta .1+1
>LDYAI S.FD.SSOCK
>SYSCALL GetMem0.YA
>SYSCALL getmem0
bcs .9
>STYA ZPTmpPtr1
@ -1138,7 +1138,7 @@ SKT.AckDataToSktOut
.8 rts
*--------------------------------------
SKT.NewTCB >LDYAI S.TCB
>SYSCALL GetMem0.YA
>SYSCALL getmem0
bcs .9
>STYA .4+1

View File

@ -4,13 +4,14 @@ AUTO 4,1
.LIST OFF
.OP 65C02
.OR $2000
.TF /A2OSX.BUILD/LIB/LIBTCPIP.O
.TF LIB/LIBTCPIP.O
*--------------------------------------
.INB /A2OSX.BUILD/INC/MACROS.I
.INB /A2OSX.BUILD/INC/A2OSX.I
.INB /A2OSX.BUILD/INC/MLI.ERR.I
.INB /A2OSX.BUILD/INC/NIC.I
.INB /A2OSX.BUILD/INC/LIBTCPIP.I
.INB INC/MACROS.I
.INB INC/A2OSX.I
.INB INC/MLI.ERR.I
.INB INC/NIC.I
.INB INC/ETH.I
.INB INC/LIBTCPIP.I
*--------------------------------------
ZPFrameInPtr .EQ ZPLIB
ZPFrameInLen .EQ ZPLIB+2
@ -96,6 +97,8 @@ L.DNS.CACHE .DA DNS.CACHE
L.SKT.Template .DA SKT.Template
L.HST.SScanF .DA HST.SScanF
L.TmpByte .DA TmpByte
L.IOCTL .DA IOCTL
L.DCB.NIC .DA DCB.NIC
L.TCP.IN.JMP .DA TCP.IN.JMP.CLOSED
.DA TCP.IN.JMP.LISTEN
.DA TCP.IN.JMP.SYNSENT
@ -117,7 +120,7 @@ LIB.LOAD ldx RefCount
jsr DNS.CLEAR
>LDYAI K.SKTTABLE.SIZE*S.SOCKET
>SYSCALL GetMem0.YA
>SYSCALL getmem0
bcs .9
stx hSocketTable
@ -127,30 +130,31 @@ LIB.LOAD ldx RefCount
.9 rts
*--------------------------------------
LIB.UNLOAD dec RefCount
bne .8
bne LIB.UNLOAD.8
lda hSocketTable
beq .8
beq LIB.UNLOAD.8
>SYSCALL FreeMem
.8 clc
LIB.UNLOAD.8 clc
rts
*--------------------------------------
POLL >PUSHB IPCFG+S.IPCFG.HDEV
>PUSHBI DEVMGR.READBLOCK
>PUSHW 0
POLL >PUSHW L.IOCTL
>PUSHBI IOCTL.READ
lda IPCFG+S.IPCFG.HDEV
>SYSCALL IOCTL
bcs .99 No Frame
stx hFrameIn
>STYA ZPFrameInPtr
sta hFrameIn
lda (ZPFrameInPtr) Get Frame Len
sta ZPFrameInLen
ldy #1
lda (ZPFrameInPtr),y
sta ZPFrameInLen+1
ldx #S.IOCTL.BUFPTR
.10 lda IOCTL,x Get Frame Ptr & Len
sta ZPFrameInPtr,x
inx
cpx S.IOCTL.BUFPTR+4
bne .10
ldy #S.ETH.ETHERTYPE
lda (ZPFrameInPtr),y
@ -173,7 +177,9 @@ POLL >PUSHB IPCFG+S.IPCFG.HDEV
jmp IP.IN
.9 lda hFrameIn
beq LIB.UNLOAD.8
>SYSCALL FreeMem
.99 rts
*--------------------------------------
* Expire = every sec
@ -222,7 +228,7 @@ GetDynPort inc DYNPORT.LAST
*--------------------------------------
CS.END
*--------------------------------------
ARP.REQ .DA S.ARP-2 Frame size
ARP.REQ .DA S.ARP Frame size
ARP.REQ.DSTMAC .HS FFFFFFFFFFFF
ARP.REQ.SRCMAC .BS 6
ARP.REQ.ETYPE .DA /S.ETH.ETHERTYPE.ARP
@ -235,7 +241,7 @@ ARP.REQ.SPA .BS 4
ARP.REQ.THA .BS 6
ARP.REQ.TPA .BS 4
*--------------------------------------
ARP.REP .DA S.ARP-2 Frame size
ARP.REP .DA S.ARP Frame size
ARP.REP.DSTMAC .BS 6
ARP.REP.SRCMAC .BS 6
ARP.REP.ETYPE .DA /S.ETH.ETHERTYPE.ARP
@ -275,7 +281,6 @@ FRM.QUEUE.Retry .BS K.FRMQUEUE.SIZE
*--------------------------------------
RefCount .DA #0
hSocketTable .BS 1
DevFlags .BS 1
DYNPORT.LAST .DA K.DYNPORT.START
hDNSSocket1 .BS 1
hDNSSocket2 .BS 1
@ -301,6 +306,8 @@ FD.SSOCK .BS 1 S.FD.HANDLER
.DA #0
.DA #0
.DA #0 S.FD.SSOCK.STATUS
IOCTL .BS S.IOCTL
DCB.NIC .BS S.DCB.NIC
*--------------------------------------
MAN
SAVE /A2OSX.SRC/LIB/LIBTCPIP.S

View File

@ -143,7 +143,7 @@ CFG.Read.LoadFile
stz CFG.hCfgFile
stz CFG.hCfgPath
>SYSCALL ExpandStr.YA
>SYSCALL ExpandStr
bcs .9
stx CFG.hCfgPath

View File

@ -8,6 +8,7 @@ AUTO 4,1
*--------------------------------------
.INB /A2OSX.BUILD/INC/MACROS.I
.INB /A2OSX.BUILD/INC/A2OSX.I
.INB /A2OSX.BUILD/INC/ETH.I
.INB /A2OSX.BUILD/INC/LIBTCPIP.I
.INB /A2OSX.BUILD/INC/MLI.ERR.I
*--------------------------------------
@ -87,7 +88,7 @@ CS.INIT >LDYA L.LIBTCPIP
.99 rts
*--------------------------------------
CS.INIT.DEV >LDYA L.DEVNAME
>SYSCALL GetDevByName.YA
>SYSCALL GetDevByName
bcc .1
inc DEVNAME+3
lda DEVNAME+3
@ -108,14 +109,14 @@ CS.INIT.DEV >LDYA L.DEVNAME
>LDYA L.MSG.DEV.OK
>SYSCALL printf
>PUSHB.G hDev
>PUSHBI DEVMGR.OPEN
>PUSHWI 0
>PUSHBI IOCTL.OPEN
>LDA.G hDev
>SYSCALL IOCTL
bcs .9
>LDA.G hDev
>SYSCALL GetDevStatus
sdfsdfsdfsf >SYSCALL GetDevStatus
bcs .9
>STYA ZPDevStatusPtr
@ -150,9 +151,9 @@ CS.DOEVENT lda (pEvent)
CS.QUIT >LDA.G hDev
beq .1
>PUSHA
>PUSHBI DEVMGR.CLOSE
>PUSHWI 0
>PUSHBI IOCTL.CLOSE
>LDA.G hDev
>SYSCALL IOCTL
.1 lda hLIBTCPIP

View File

@ -627,11 +627,10 @@ BCDBUF .EQ ARG
* # SScanF
* Read formatted data from string
* ## C
* `int sscanf ( const char * s, const char * format, ...);`
* `int sscanf ( const char * s, const char * format, ... );`
* ## ASM
* **In:**
* `>PUSHBI Argument Byte count`
* `>PUSHWI format`
* + %i : short int
* + %d : byte
* + %I : int
@ -640,6 +639,10 @@ BCDBUF .EQ ARG
* + %U : dword
* + %h : HEX byte
* + %H : HEX word
* `>PUSHW ptr`
* `...`
* `>PUSHBI bytecount`
* `>PUSHWI format`
* `>LDYA s`
* **Out:**
* Y,A = Number of arguments filled.
@ -647,6 +650,7 @@ BCDBUF .EQ ARG
K.SScanF >STYA ZPPtr2 String to Scan
>PULLW ZPPtr1 format
>PULLB K.SScanF.ByteCnt
stz K.SScanF.ByteIdx
.1 lda (ZPPtr1) End Of format?
@ -694,7 +698,7 @@ K.SScanF >STYA ZPPtr2 String to Scan
.8 lda pStack
clc
adc K.SScanF.ByteCnt
adc K.SScanF.ByteCnt ...
sta pStack CC
.99 rts
*--------------------------------------