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

View File

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

View File

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

View File

@ -4,18 +4,16 @@ AUTO 4,1
.LIST OFF .LIST OFF
.OP 65C02 .OP 65C02
.OR $2000 .OR $2000
.TF /A2OSX.BUILD/DRV/UTHERNET.DRV .TF DRV/UTHERNET.DRV
*-------------------------------------- *--------------------------------------
.INB /A2OSX.BUILD/INC/MACROS.I .INB INC/MACROS.I
.INB /A2OSX.BUILD/INC/A2OSX.I .INB INC/A2OSX.I
.INB /A2OSX.BUILD/INC/MLI.ERR.I .INB INC/MLI.ERR.I
.INB /A2OSX.BUILD/INC/NIC.I .INB INC/NIC.I
.INB /A2OSX.BUILD/INC/NIC.8900A.I .INB INC/NIC.8900A.I
.INB /A2OSX.BUILD/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,19 +23,29 @@ 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 printf
@ -60,7 +68,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
@ -85,77 +93,132 @@ Dev.Detect >STYA ARGS
sta PacketPagePTR,x sta PacketPagePTR,x
lda PacketPageDATA+1,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 lda PacketPageDATA,x
sta DEVSTAT+S.DIB.VERSION sta DIB+S.DIB.VERSION
>LDYA ARGS jsr Dev.ParseArgs
>STYA ZPTmpPTR 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) .9 rts
bne .4 *--------------------------------------
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 lda A2osX.RANDOM16
eor A2osX.TIMER16 eor A2osX.TIMER16
sta MAC+3 sta DCB+S.DCB.NIC.MAC+3
eor A2osX.RANDOM16+1 eor A2osX.RANDOM16+1
sta MAC+4 sta DCB+S.DCB.NIC.MAC+4
eor A2osX.TIMER16+1 eor A2osX.TIMER16+1
sta MAC+5 sta DCB+S.DCB.NIC.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
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
ARGS .BS 2
MSG.DETECT .AZ "UtherNet/CS8900A Driver.\r\n" MSG.DETECT .AZ "UtherNet/CS8900A Driver.\r\n"
MSG.DETECT.OK .AZ "UtherNet/CS8900A Installed As Device : %s\r\n" MSG.DETECT.OK .AZ "UtherNet/CS8900A Installed As Device : %s\r\n"
MSG.DETECT.KO .AZ "Hardware Not Found.\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) 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" NAME 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 CONTROL
.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
lda #S.DCB.NIC.SPEED.10
sta DCB+S.DCB.NIC.SPEED
stz DCB+S.DCB.NIC.LINK
ldx DEVSLOTx0 ldx DEVSLOTx0
lda /PP.LineST lda /PP.LineST
@ -168,11 +231,10 @@ STATUS lda #S.DIB.NIC.STATUS.10
and #PP.LineST.LinkOK and #PP.LineST.LinkOK
beq .1 beq .1
lda LINK.STATUS lda #S.DCB.NIC.LINK.OK
ora #S.DIB.NIC.STATUS.OK tsb DCB+S.DCB.NIC.LINK
sta LINK.STATUS
.1 lda /PP.TestCTL lda /PP.TestCTL
sta PacketPagePTR+1,x sta PacketPagePTR+1,x
lda #PP.TestCTL lda #PP.TestCTL
sta PacketPagePTR,x sta PacketPagePTR,x
@ -180,187 +242,55 @@ STATUS lda #S.DIB.NIC.STATUS.10
lda PacketPageDATA+1,x lda PacketPageDATA+1,x
ldy PacketPageDATA,x ldy PacketPageDATA,x
and /PP.TestCTL.FDX and /PP.TestCTL.FDX
beq .2 beq .1
lda LINK.STATUS lda #S.DCB.NIC.LINK.FD
ora #S.DIB.NIC.STATUS.FD tsb DCB+S.DCB.NIC.LINK
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
.1 ldy #S.IOCTL.BUFPTR
lda (ZPIOCTL),y
sta .3+1
iny iny
lda (ZPIOCTL),y
sta .3+2
ldx DEVSLOTx0 ldx #S.DCB.NIC-1
.2 inc Counter
bne .3
inc Counter+1
beq .8
.3 lda RTDATA,x .2 lda DCB,x
sta (ZPTmpPTR),y .3 sta $ffff,x SELF MODIFIED
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
dex dex
bpl .10 bpl .2
ldx DEVSLOTx0 clc
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
rts rts
WRITEBLOCK.1 ldy #2 STATUS.9 lda #MLI.E.BADCTL
sec
rts
*--------------------------------------
CONTROL >STYA ZPIOCTL
.1 inc Counter ldy #S.IOCTL.CTRLCODE
bne .2 lda (ZPIOCTL),y
inc Counter+1 cmp #S.IOCTL.CTRLCODE.SETDCB
beq .8 bne STATUS.9
.2 lda (ZPTmpPTR),y .1 ldy #S.IOCTL.BUFPTR
sta RTDATA,x lda (ZPIOCTL),y
sta .2+1
iny iny
bne .3 lda (ZPIOCTL),y
inc ZPTmpPTR+1 sta .2+2
.3 inc Counter ldx #S.DCB.NIC-1
bne .4
inc Counter+1
beq .8
.4 lda (ZPTmpPTR),y .2 lda $ffff,x SELF MODIFIED
sta RTDATA+1,x sta DCB,x
iny dex
bne .1 bpl .2
inc ZPTmpPTR+1
bne .1
.8 plp
clc clc
rts rts
*-------------------------------------- *--------------------------------------
OPEN jsr CLOSE OPEN jsr CLOSE
@ -379,15 +309,15 @@ OPEN jsr CLOSE
lda #PP.MAC lda #PP.MAC
sta PacketPagePTR,x sta PacketPagePTR,x
>LDYA MAC >LDYA DCB+S.DCB.NIC.MAC
>STYA PacketPageDATA,x >STYA PacketPageDATA,x
>LDYAI PP.MAC+2 >LDYAI PP.MAC+2
>STYA PacketPagePTR,x >STYA PacketPagePTR,x
>LDYA MAC+2 >LDYA DCB+S.DCB.NIC.MAC+2
>STYA PacketPageDATA,x >STYA PacketPageDATA,x
>LDYAI PP.MAC+4 >LDYAI PP.MAC+4
>STYA PacketPagePTR,x >STYA PacketPagePTR,x
>LDYA MAC+4 >LDYA DCB+S.DCB.NIC.MAC+4
>STYA PacketPageDATA,x >STYA PacketPageDATA,x
lda /PP.LineCTL lda /PP.LineCTL
@ -400,6 +330,9 @@ OPEN jsr CLOSE
lda #PP.LineCTL.LID+PP.LineCTL.SerRxOn+PP.LineCTL.SerTxOn+PP.LineCTL.10BaseT lda #PP.LineCTL.LID+PP.LineCTL.SerRxOn+PP.LineCTL.SerTxOn+PP.LineCTL.10BaseT
sta PacketPageDATA,x sta PacketPageDATA,x
lda #S.DIB.S.OPENED
tsb DIB+S.DIB.S
clc clc
rts rts
*-------------------------------------- *--------------------------------------
@ -432,22 +365,200 @@ CLOSE ldx DEVSLOTx0
iny iny
bne .1 bne .1
.8 clc .8 lda #S.DIB.S.OPENED
trb DIB+S.DIB.S
clc
rts 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 DRV.CS.END
DEVSLOTx0 .BS 1 DEVSLOTx0 .BS 1
*-------------------------------------- *--------------------------------------
DEVSTAT .DA #0 DIB .DA #0
.BS 3 size .DA #0,#0,#0 size
>PSTR "Uthernet/CS8900A" >PSTR "Uthernet/CS8900A"
.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
.BS 1 SPEED
.HS 000E3A123456 MAC
*--------------------------------------
DRV.END
MAN MAN
SAVE /A2OSX.SRC/DRV/UTHERNET.DRV.S SAVE /A2OSX.SRC/DRV/UTHERNET.DRV.S
ASM ASM

View File

@ -169,7 +169,7 @@ READBLOCK ldx DEVSLOTx0
ora W5100.DR,x LO ora W5100.DR,x LO
bne READBLOCK.RxOK bne READBLOCK.RxOK
lda #ERR.DEV.NOFRAME lda #MLI.E.EOF
sec sec
rts rts
@ -276,7 +276,7 @@ WRITEBLOCK >STYA ZPTmpPTR
sbc RXTX.Size+1 sbc RXTX.Size+1
bcs WRITEBLOCK.1 bcs WRITEBLOCK.1
lda #ERR.DEV.NOBUFFER lda #MLI.E.EOF
sec sec
rts 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 AUTO 4,1
IP=192.168.1.150 IP=192.168.1.150
MASK=255.255.255.0 MASK=255.255.255.0
GW=192.168.1.1 GW=192.168.1.254
DNS1=192.168.1.2 DNS1=192.168.1.2
DNS2=192.168.1.1 DNS2=192.168.1.1
DOMAIN=coincoin.hd.free.fr DOMAIN=coincoin.hd.free.fr

View File

@ -327,6 +327,9 @@ S.IOCTL.ADDRPTR .EQ 6 3 BYTES
* *
S.IOCTL .EQ 9 S.IOCTL .EQ 9
*-------------------------------------- *--------------------------------------
S.DCB.T .EQ 0
S.DCB.T.NIC .EQ $12
*--------------------------------------
S.DIB.S .EQ 0 S.DIB.S .EQ 0
S.DIB.S.BLOCK .EQ %10000000 S.DIB.S.BLOCK .EQ %10000000
S.DIB.S.WRITE .EQ %01000000 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.ARP.ERROR .EQ $B4
ERR.DEV .EQ $B3 ERR.DEV .EQ $B3
ERR.DEV.NOBUFFER .EQ $B1
ERR.DEV.NOFRAME .EQ $B0
*-------------------------------------- *--------------------------------------
UDP.PORT.DNS .EQ 53 UDP.PORT.DNS .EQ 53
UDP.PORT.PMAP .EQ 111 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.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.HTYPE .EQ S.ETH+0 $0001
S.ARP.PTYPE .EQ S.ETH+2 $0800 S.ARP.PTYPE .EQ S.ETH+2 $0800
S.ARP.HLEN .EQ S.ETH+4 $06 S.ARP.HLEN .EQ S.ETH+4 $06

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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