mirror of https://github.com/A2osX/A2osX.git
Kernel 0.9.2
This commit is contained in:
parent
6e9fe36875
commit
dc285bcbc0
Binary file not shown.
Binary file not shown.
|
@ -1,11 +1,11 @@
|
|||
NEW
|
||||
PREFIX /A2OSX.BUILD
|
||||
AUTO 4,1
|
||||
IP=192.168.1.150
|
||||
MASK=255.255.255.0
|
||||
GW=192.168.1.254
|
||||
DNS1=192.168.1.2
|
||||
DNS2=192.168.1.1
|
||||
DOMAIN=coincoin.hd.free.fr
|
||||
address 192.168.1.150
|
||||
netmask 255.255.255.0
|
||||
gateway 192.168.1.254
|
||||
nameserver 192.168.1.2
|
||||
nameserver 192.168.1.254
|
||||
dnsdomain coincoin.hd.free.fr
|
||||
MAN
|
||||
TEXT ETC/TCPIP.CONF
|
||||
|
|
|
@ -101,7 +101,7 @@ SYS.GetC .EQ $24
|
|||
SYS.GetChar .EQ $26
|
||||
SYS.FPutS .EQ $28
|
||||
SYS.PutS .EQ $2A
|
||||
* .EQ $2C
|
||||
SYS.FGetS .EQ $2C
|
||||
* .EQ $2E
|
||||
|
||||
SYS.FOpen .EQ $30
|
||||
|
|
|
@ -5,23 +5,43 @@ AUTO 4,1
|
|||
*--------------------------------------
|
||||
* PULLW = PTR to S.IPCFG
|
||||
*--------------------------------------
|
||||
SET.IPCFG >PULLW ZPTmpPtr1 IPCFG
|
||||
CFG.Init >LDYA L.DEVNAME
|
||||
>SYSCALL GetDevByName
|
||||
bcc .1
|
||||
inc DEVNAME+3
|
||||
lda DEVNAME+3
|
||||
cmp #'8'
|
||||
bne CFG.Init
|
||||
|
||||
>LDYA L.MSG.DEV.KO
|
||||
>SYSCALL printf
|
||||
|
||||
lda #MLI.E.NODEV
|
||||
.9 sec
|
||||
rts
|
||||
|
||||
.1 stx IPCFG+S.IPCFG.HDEV
|
||||
|
||||
>PUSHW L.DEVNAME
|
||||
>LDYA L.MSG.DEV.OK
|
||||
>SYSCALL printf
|
||||
|
||||
>PUSHWI 0
|
||||
>PUSHBI IOCTL.OPEN
|
||||
lda IPCFG+S.IPCFG.HDEV
|
||||
>SYSCALL IOCTL
|
||||
bcs .9
|
||||
|
||||
>LDYA L.DCB.NIC
|
||||
>STYA IOCTL+S.IOCTL.BUFPTR
|
||||
lda #S.IOCTL.STATCODE.GETDCB
|
||||
sta IOCTL+S.IOCTL.STATCODE
|
||||
|
||||
ldx #IOCTL.STATUS
|
||||
jsr SET.IPCFG.IOCTL
|
||||
|
||||
ldy #0
|
||||
|
||||
.1 lda (ZPTmpPtr1),y
|
||||
sta IPCFG,y
|
||||
iny
|
||||
cpy #S.IPCFG
|
||||
bne .1
|
||||
>PUSHW L.IOCTL
|
||||
>PUSHBI IOCTL.STATUS
|
||||
lda IPCFG+S.IPCFG.HDEV
|
||||
>SYSCALL IOCTL
|
||||
bcs .9
|
||||
|
||||
ldx #5
|
||||
|
||||
|
@ -43,34 +63,421 @@ SET.IPCFG >PULLW ZPTmpPtr1 IPCFG
|
|||
dex
|
||||
bpl .3
|
||||
|
||||
lda DCB.NIC+S.DCB.NIC.FLAGS
|
||||
and #S.DCB.NIC.FLAGS.ARPOFFLOAD
|
||||
CFG.EtcFiles >LDYA L.MSG.CFG
|
||||
>SYSCALL printf
|
||||
|
||||
jsr CFG.Read.HOSTNAME
|
||||
jsr CFG.Read.Result
|
||||
|
||||
lda IPCFG+S.IPCFG.HOSTNAME
|
||||
bne .4
|
||||
|
||||
ldy #$ff
|
||||
|
||||
.2 iny
|
||||
lda DefaultHostName,y
|
||||
sta IPCFG+S.IPCFG.HOSTNAME,y
|
||||
bne .2
|
||||
|
||||
.3 lda A2osX.TIMER16
|
||||
jsr CFG.A2CharAX
|
||||
sta IPCFG+S.IPCFG.HOSTNAME+6
|
||||
stx IPCFG+S.IPCFG.HOSTNAME+7
|
||||
|
||||
lda A2osX.TIMER16+1
|
||||
jsr CFG.A2CharAX
|
||||
sta IPCFG+S.IPCFG.HOSTNAME+8
|
||||
stx IPCFG+S.IPCFG.HOSTNAME+9
|
||||
|
||||
.4 >PUSHW L.TCPIP.CONF
|
||||
>LDYA L.MSG.CFG
|
||||
>SYSCALL printf
|
||||
|
||||
jsr CFG.Read.TCPIP.CONF
|
||||
jsr CFG.Read.Result
|
||||
|
||||
>PUSHW L.HOSTS
|
||||
>LDYA L.MSG.CFG
|
||||
>SYSCALL printf
|
||||
|
||||
jsr CFG.Read.HOSTS
|
||||
jsr CFG.Read.Result
|
||||
|
||||
jmp SET.IPCFG.I
|
||||
*--------------------------------------
|
||||
CFG.Read.Result bcc .1
|
||||
>PUSHA
|
||||
>LDYA L.MSG.CFG.KO
|
||||
bra .2
|
||||
.1 >LDYA L.MSG.CFG.OK
|
||||
.2 >SYSCALL printf
|
||||
rts
|
||||
*--------------------------------------
|
||||
CFG.Read.HOSTNAME
|
||||
>LDYA L.HOSTNAME
|
||||
jsr CFG.Read.LoadFile
|
||||
bcs .9
|
||||
|
||||
* read 15 chars MAX, until CR or EOF
|
||||
|
||||
ldx #$15
|
||||
lda CFG.FileLen+1
|
||||
bne .1 File is more than 256....?
|
||||
|
||||
ldx CFG.FileLen
|
||||
beq .9 len is 0 !!!
|
||||
|
||||
.1 ldy #0
|
||||
|
||||
.2 lda (ZPTmpPtr1),y
|
||||
cmp #13
|
||||
beq .8 A CR, end of name
|
||||
|
||||
sta IPCFG+S.IPCFG.HOSTNAME,y
|
||||
iny
|
||||
dex
|
||||
bne .2
|
||||
|
||||
.8 lda #0
|
||||
sta IPCFG+S.IPCFG.HOSTNAME,y
|
||||
|
||||
jsr CFG.Read.CleanUp
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 jsr CFG.Read.CleanUp
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CFG.Read.TCPIP.CONF
|
||||
>LDYA L.TCPIP.CONF
|
||||
jsr CFG.Read.LoadFile
|
||||
bcs .9
|
||||
|
||||
.1 jsr CFG.GetLine
|
||||
bcs .8
|
||||
|
||||
jsr CFG.GetKeyword
|
||||
bcs .1
|
||||
|
||||
lda CFG.Keyword
|
||||
bne .3
|
||||
|
||||
ldy UsrBuf256
|
||||
|
||||
lda UsrBuf256+1,y
|
||||
cmp #35 DOMAIN too long!!!
|
||||
bcs .1
|
||||
|
||||
sta IPCFG+S.IPCFG.DOMAIN
|
||||
ldx #0
|
||||
|
||||
.2 lda UsrBuf256+2,y
|
||||
sta IPCFG+S.IPCFG.DOMAIN,x
|
||||
beq .1
|
||||
inx
|
||||
iny
|
||||
bne .2
|
||||
bra .1
|
||||
|
||||
.9 jsr CFG.Read.CleanUp
|
||||
sec
|
||||
rts
|
||||
|
||||
.3 jsr CFG.ScanIP
|
||||
bcs .1
|
||||
|
||||
ldy CFG.Keyword
|
||||
lda CFG.Keyword.Map,y
|
||||
tax
|
||||
ldy #0
|
||||
|
||||
.4 lda CFG.IP+1,y
|
||||
sta IPCFG,x
|
||||
inx
|
||||
iny
|
||||
cpy #4
|
||||
bne .4
|
||||
lda CFG.Keyword
|
||||
cmp #1
|
||||
bne .1
|
||||
lda #S.IPCFG.STATUS.OK
|
||||
sta IPCFG
|
||||
bra .1
|
||||
|
||||
.8 jsr CFG.Read.CleanUp
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CFG.Read.HOSTS >LDYA L.HOSTS
|
||||
|
||||
jsr CFG.Read.LoadFile
|
||||
bcs .9
|
||||
|
||||
|
||||
.8 jsr CFG.Read.CleanUp
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 jsr CFG.Read.CleanUp
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CFG.Read.LoadFile
|
||||
stz CFG.hCfgFile
|
||||
stz CFG.hCfgPath
|
||||
|
||||
>SYSCALL ExpandStr
|
||||
bcs .9
|
||||
|
||||
stx CFG.hCfgPath
|
||||
pha
|
||||
|
||||
>PUSHWI 0 Aux type
|
||||
>PUSHBI 4 S.FI.T.TXT
|
||||
>PUSHBI SYS.FOpen.R
|
||||
pla
|
||||
>SYSCALL LoadFile
|
||||
bcs .9
|
||||
|
||||
stx CFG.hCfgFile
|
||||
>STYA CFG.FileLen
|
||||
txa
|
||||
>SYSCALL GetMemPtr
|
||||
>STYA ZPTmpPtr1
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CFG.Read.CleanUp
|
||||
pha
|
||||
lda CFG.hCfgPath
|
||||
beq .1
|
||||
>SYSCALL FreeMem
|
||||
|
||||
.1 lda CFG.hCfgFile
|
||||
beq .8
|
||||
>SYSCALL FreeMem
|
||||
|
||||
.8 pla
|
||||
rts
|
||||
*--------------------------------------
|
||||
CFG.GetLine stz UsrBuf256
|
||||
ldx #0
|
||||
ldy #0
|
||||
|
||||
.1 jsr CFG.GetChar
|
||||
bne .2 end of file?
|
||||
txa
|
||||
bne .8
|
||||
sec
|
||||
rts
|
||||
|
||||
.2 cmp #$0D
|
||||
beq .8 end of line
|
||||
inx
|
||||
sta UsrBuf256,x
|
||||
cmp #'='
|
||||
bne .3
|
||||
txa
|
||||
dec
|
||||
tay
|
||||
.3 cpx #64 line too long ?
|
||||
bne .1
|
||||
sec
|
||||
rts
|
||||
|
||||
.8 tya = found ?
|
||||
beq .9
|
||||
|
||||
sta UsrBuf256
|
||||
txa
|
||||
sec
|
||||
sbc UsrBuf256
|
||||
sta UsrBuf256+1,y
|
||||
stz UsrBuf256+1,x End with 0 for ScanIP
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CFG.GetChar lda CFG.FileLen
|
||||
bne .1
|
||||
lda CFG.FileLen+1
|
||||
beq .9
|
||||
dec CFG.FileLen+1
|
||||
.1 dec CFG.FileLen
|
||||
lda (ZPTmpPtr1)
|
||||
inc ZPTmpPtr1
|
||||
bne .9
|
||||
inc ZPTmpPtr1+1 NZ
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CFG.GetKeyword stz CFG.Keyword
|
||||
|
||||
ldx #0
|
||||
|
||||
.1 phx
|
||||
ldy #0
|
||||
|
||||
.2 lda CFG.Keywords,x
|
||||
cmp UsrBuf256,y
|
||||
bne .3
|
||||
cpy UsrBuf256
|
||||
beq .4
|
||||
inx
|
||||
iny
|
||||
bne .2
|
||||
plx
|
||||
sec
|
||||
rts
|
||||
|
||||
.3 inc CFG.Keyword
|
||||
plx
|
||||
txa
|
||||
sec
|
||||
adc CFG.Keywords,x
|
||||
tax
|
||||
lda CFG.Keywords,x
|
||||
bne .1
|
||||
sec
|
||||
rts
|
||||
|
||||
.4 plx
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CFG.ScanIP stz CFG.IP
|
||||
|
||||
ldx UsrBuf256
|
||||
|
||||
.1 ldy #0
|
||||
.11 lda UsrBuf256+2,x
|
||||
beq .3
|
||||
cmp #'0'
|
||||
bcc .2
|
||||
cmp #'9'+1
|
||||
bcs .2
|
||||
cpy #3
|
||||
beq .9
|
||||
iny
|
||||
sta CFG.StrBuf,y
|
||||
inx
|
||||
bra .11
|
||||
|
||||
.2 cmp #'.'
|
||||
bne .9
|
||||
|
||||
.3 sty CFG.StrBuf
|
||||
lda CFG.IP
|
||||
cmp #4
|
||||
beq .9
|
||||
jsr CFG.Dec2Hex
|
||||
bcs .9
|
||||
lda CFG.HexByte
|
||||
inc CFG.IP
|
||||
ldy CFG.IP
|
||||
sta CFG.IP,y
|
||||
inx
|
||||
lda UsrBuf256+1,x
|
||||
bne .1
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CFG.Dec2Hex sec
|
||||
ldy CFG.StrBuf
|
||||
beq .9
|
||||
|
||||
lda CFG.StrBuf+1
|
||||
and #$0f
|
||||
sta CFG.HexByte
|
||||
|
||||
ldy #1
|
||||
|
||||
.1 cpy CFG.StrBuf
|
||||
beq .8
|
||||
iny
|
||||
lda CFG.HexByte
|
||||
asl CFG.HexByte
|
||||
bcs .9
|
||||
asl CFG.HexByte
|
||||
bcs .9
|
||||
adc CFG.HexByte
|
||||
bcs .9
|
||||
asl
|
||||
bcs .9
|
||||
sta CFG.HexByte
|
||||
lda CFG.StrBuf,y
|
||||
and #$0f
|
||||
adc CFG.HexByte
|
||||
sta CFG.HexByte
|
||||
bcc .1
|
||||
.9 rts
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CFG.A2CharAX pha
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
ora #$30
|
||||
cmp #'9'+1
|
||||
bcc .1
|
||||
adc #6
|
||||
.1 tax
|
||||
pla
|
||||
and #$0F
|
||||
ora #$30
|
||||
cmp #'9'+1
|
||||
bcc .8
|
||||
adc #6
|
||||
.8 rts
|
||||
*--------------------------------------
|
||||
SET.IPCFG >PULLW ZPTmpPtr1 IPCFG
|
||||
|
||||
ldy #0
|
||||
|
||||
.1 lda (ZPTmpPtr1),y
|
||||
sta IPCFG,y
|
||||
iny
|
||||
cpy #S.IPCFG
|
||||
bne .1
|
||||
|
||||
SET.IPCFG.I lda DCB.NIC+S.DCB.NIC.FLAGS
|
||||
and #S.DCB.NIC.FLAGS.ARPOFFLOAD
|
||||
beq .2
|
||||
|
||||
ldx #11
|
||||
|
||||
.31 lda IPCFG+S.IPCFG.IP,x
|
||||
.1 lda IPCFG+S.IPCFG.IP,x
|
||||
sta DCB.NIC+S.DCB.NIC.IP,x
|
||||
dex
|
||||
bpl .31
|
||||
bpl .1
|
||||
|
||||
* lda S.IOCTL.CTRLCODE.SETDCB same as lda S.IOCTL.STATCODE.GETDCB
|
||||
* sta S.IOCTL.CTRLCODE same as sta S.IOCTL.STATCODE
|
||||
lda S.IOCTL.CTRLCODE.SETDCB
|
||||
sta S.IOCTL.CTRLCODE
|
||||
|
||||
ldx #IOCTL.CONTROL
|
||||
jsr SET.IPCFG.IOCTL
|
||||
>PUSHW L.IOCTL
|
||||
>PUSHBI IOCTL.CONTROL
|
||||
lda IPCFG+S.IPCFG.HDEV
|
||||
>SYSCALL IOCTL
|
||||
bcs .9
|
||||
|
||||
.4 lda hDNSSocket1
|
||||
beq .41
|
||||
.2 lda hDNSSocket1
|
||||
beq .3
|
||||
jsr SKT.Close
|
||||
stz hDNSSocket1
|
||||
|
||||
.41 lda hDNSSocket2
|
||||
beq .42
|
||||
.3 lda hDNSSocket2
|
||||
beq .4
|
||||
jsr SKT.Close
|
||||
stz hDNSSocket2
|
||||
|
||||
.42 lda IPCFG+S.IPCFG.DNS1
|
||||
.4 lda IPCFG+S.IPCFG.DNS1
|
||||
beq .6
|
||||
|
||||
ldx #3
|
||||
|
@ -110,13 +517,6 @@ SET.IPCFG >PULLW ZPTmpPtr1 IPCFG
|
|||
|
||||
.8 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 :
|
||||
|
|
|
@ -83,6 +83,15 @@ CS.START cld
|
|||
.DA SKT.Read
|
||||
.DA SKT.ReadFrame
|
||||
*--------------------------------------
|
||||
L.DEVNAME .DA DEVNAME
|
||||
L.MSG.DEV.KO .DA MSG.DEV.KO
|
||||
L.MSG.DEV.OK .DA MSG.DEV.OK
|
||||
L.MSG.CFG .DA MSG.CFG
|
||||
L.MSG.CFG.KO .DA MSG.CFG.KO
|
||||
L.MSG.CFG.OK .DA MSG.CFG.OK
|
||||
L.HOSTNAME .DA HOSTNAME
|
||||
L.TCPIP.CONF .DA TCPIP.CONF
|
||||
L.HOSTS .DA HOSTS
|
||||
L.IPCFG .DA IPCFG
|
||||
L.ARP.REQ .DA ARP.REQ
|
||||
L.ARP.REP .DA ARP.REP
|
||||
|
@ -110,9 +119,14 @@ L.TCP.IN.JMP .DA TCP.IN.JMP.CLOSED
|
|||
*--------------------------------------
|
||||
LIB.LOAD ldx RefCount
|
||||
bne .8
|
||||
|
||||
|
||||
sta FD.SSOCK+S.FD.HANDLER
|
||||
|
||||
jsr CFG.Init
|
||||
bcs .9
|
||||
|
||||
jsr ARP.CLEAR
|
||||
|
||||
jsr DNS.CLEAR
|
||||
|
||||
>LDYAI K.SKTTABLE.SIZE*S.SOCKET
|
||||
|
@ -122,13 +136,22 @@ LIB.LOAD ldx RefCount
|
|||
stx hSocketTable
|
||||
|
||||
.8 inc RefCount
|
||||
|
||||
clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
LIB.UNLOAD dec RefCount
|
||||
bne LIB.UNLOAD.8
|
||||
|
||||
lda hSocketTable
|
||||
lda IPCFG+S.IPCFG.HDEV
|
||||
beq .1
|
||||
|
||||
>PUSHWI 0
|
||||
>PUSHBI IOCTL.CLOSE
|
||||
lda IPCFG+S.IPCFG.HDEV
|
||||
>SYSCALL IOCTL
|
||||
|
||||
.1 lda hSocketTable
|
||||
beq LIB.UNLOAD.8
|
||||
|
||||
>SYSCALL FreeMem
|
||||
|
@ -224,6 +247,53 @@ GetDynPort inc DYNPORT.LAST
|
|||
*--------------------------------------
|
||||
CS.END
|
||||
*--------------------------------------
|
||||
DEVNAME .AZ "ETH1"
|
||||
MSG.DEV.KO .AZ "TCPIPD:No Device Found, exiting.\r\n"
|
||||
MSG.DEV.OK .AZ "TCPIPD:Bound To Device : %s\r\n"
|
||||
MSG.CFG .AZ "TCPIPD:Reading %s..."
|
||||
MSG.CFG.KO .AZ "Failed!!! [%h]\r\n"
|
||||
MSG.CFG.OK .AZ "OK.\r\n"
|
||||
*--------------------------------------
|
||||
HOSTNAME .AZ "${A2OSX}ETC/HOSTNAME"
|
||||
TCPIP.CONF .AZ "${A2OSX}ETC/TCPIP.CONF"
|
||||
HOSTS .AZ "${A2OSX}ETC/HOSTS"
|
||||
DefaultHostName .AZ "a2osx-XXXX"
|
||||
CFG.Keywords >PSTR "DOMAIN"
|
||||
>PSTR "IP"
|
||||
>PSTR "MASK"
|
||||
>PSTR "GW"
|
||||
>PSTR "DNS1"
|
||||
>PSTR "DNS2"
|
||||
CFG.Keyword.Map .DA #0 End Of Keyword table and NA Keyword
|
||||
.DA #S.IPCFG.IP
|
||||
.DA #S.IPCFG.MASK
|
||||
.DA #S.IPCFG.GW
|
||||
.DA #S.IPCFG.DNS1
|
||||
.DA #S.IPCFG.DNS2
|
||||
CFG.hCfgFile .BS 1
|
||||
CFG.hCfgPath .BS 1
|
||||
CFG.FileLen .BS 2
|
||||
CFG.Keyword .BS 1
|
||||
CFG.StrBuf .BS 4
|
||||
CFG.HexByte .BS 1
|
||||
CFG.IP .BS 5
|
||||
UsrBuf256 .BS 256
|
||||
*--------------------------------------
|
||||
FD.SSOCK .BS 1 S.FD.HANDLER
|
||||
.DA #S.FD.T.SSOCK
|
||||
.BS 1 S.FD.SSOCK.HSKT
|
||||
.DA #0 S.FD.SSOCK.OPEN
|
||||
.DA #0 S.FD.SSOCK.CLOSE
|
||||
.DA #0
|
||||
.DA #0
|
||||
.DA #0 S.FD.SSOCK.STATUS
|
||||
*--------------------------------------
|
||||
IOCTL .BS S.IOCTL
|
||||
DCB.NIC .BS S.DCB.NIC
|
||||
IPCFG .BS S.IPCFG
|
||||
ARP.CACHE .BS K.ARPCACHE.SIZE*S.ARPCACHE
|
||||
DNS.CACHE .BS K.DNSCACHE.SIZE*S.DNSCACHE
|
||||
*--------------------------------------
|
||||
ARP.REQ .DA S.ARP Frame size
|
||||
ARP.REQ.DSTMAC .HS FFFFFFFFFFFF
|
||||
ARP.REQ.SRCMAC .BS 6
|
||||
|
@ -266,9 +336,6 @@ DNS.MSG.ID .BS 2
|
|||
.BS 6 ANCOUNT,NSCOUNT,ARCOUNT
|
||||
DNS.MSG.NAME .BS K.DNS.MAXLEN+6
|
||||
*--------------------------------------
|
||||
IPCFG .BS S.IPCFG
|
||||
ARP.CACHE .BS K.ARPCACHE.SIZE*S.ARPCACHE
|
||||
DNS.CACHE .BS K.DNSCACHE.SIZE*S.DNSCACHE
|
||||
FRM.QUEUE.Tail .BS 1
|
||||
FRM.QUEUE.Head .BS 1
|
||||
FRM.QUEUE.hMem .BS K.FRMQUEUE.SIZE
|
||||
|
@ -296,16 +363,6 @@ bTextMode .BS 1
|
|||
HST.SScanF .AZ "%d.%d.%d.%d"
|
||||
IP.ID .BS 2
|
||||
IP.CHECKSUM .BS 4
|
||||
FD.SSOCK .BS 1 S.FD.HANDLER
|
||||
.DA #S.FD.T.SSOCK
|
||||
.BS 1 S.FD.SSOCK.HSKT
|
||||
.DA #0 S.FD.SSOCK.OPEN
|
||||
.DA #0 S.FD.SSOCK.CLOSE
|
||||
.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
|
||||
|
|
|
@ -1,381 +0,0 @@
|
|||
NEW
|
||||
PREFIX /A2OSX.BUILD
|
||||
AUTO 4,1
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
CFG.Read >PUSHW L.HOSTNAME
|
||||
>LDYA L.MSG.CFG
|
||||
>SYSCALL printf
|
||||
|
||||
jsr CFG.Read.HOSTNAME
|
||||
jsr CFG.Read.Result
|
||||
|
||||
lda IPCFG+S.IPCFG.HOSTNAME
|
||||
bne .4
|
||||
|
||||
ldy #$ff
|
||||
|
||||
.2 iny
|
||||
lda DefaultHostName,y
|
||||
sta IPCFG+S.IPCFG.HOSTNAME,y
|
||||
bne .2
|
||||
|
||||
.3 lda A2osX.TIMER16
|
||||
jsr CFG.A2CharAX
|
||||
sta IPCFG+S.IPCFG.HOSTNAME+6
|
||||
stx IPCFG+S.IPCFG.HOSTNAME+7
|
||||
|
||||
lda A2osX.TIMER16+1
|
||||
jsr CFG.A2CharAX
|
||||
sta IPCFG+S.IPCFG.HOSTNAME+8
|
||||
stx IPCFG+S.IPCFG.HOSTNAME+9
|
||||
|
||||
.4 >PUSHW L.TCPIP.CONF
|
||||
>LDYA L.MSG.CFG
|
||||
>SYSCALL printf
|
||||
|
||||
jsr CFG.Read.TCPIP.CONF
|
||||
jsr CFG.Read.Result
|
||||
|
||||
>PUSHW L.HOSTS
|
||||
>LDYA L.MSG.CFG
|
||||
>SYSCALL printf
|
||||
|
||||
jsr CFG.Read.HOSTS
|
||||
*--------------------------------------
|
||||
CFG.Read.Result bcc .1
|
||||
>PUSHA
|
||||
>LDYA L.MSG.CFG.KO
|
||||
bra .2
|
||||
.1 >LDYA L.MSG.CFG.OK
|
||||
.2 >SYSCALL printf
|
||||
rts
|
||||
*--------------------------------------
|
||||
CFG.Read.HOSTNAME
|
||||
>LDYA L.HOSTNAME
|
||||
jsr CFG.Read.LoadFile
|
||||
bcs .9
|
||||
|
||||
* read 15 chars MAX, until CR or EOF
|
||||
|
||||
ldx #$15
|
||||
lda CFG.FileLen+1
|
||||
bne .1 File is more than 256....?
|
||||
|
||||
ldx CFG.FileLen
|
||||
beq .9 len is 0 !!!
|
||||
|
||||
.1 ldy #0
|
||||
|
||||
.2 lda (ZPIPCfgPtr),y
|
||||
cmp #13
|
||||
beq .8 A CR, end of name
|
||||
|
||||
sta IPCFG+S.IPCFG.HOSTNAME,y
|
||||
iny
|
||||
dex
|
||||
bne .2
|
||||
|
||||
.8 lda #0
|
||||
sta IPCFG+S.IPCFG.HOSTNAME,y
|
||||
|
||||
jsr CFG.Read.CleanUp
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 jsr CFG.Read.CleanUp
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CFG.Read.TCPIP.CONF
|
||||
>LDYA L.TCPIP.CONF
|
||||
jsr CFG.Read.LoadFile
|
||||
bcs .9
|
||||
|
||||
.1 jsr CFG.GetLine
|
||||
bcs .8
|
||||
|
||||
jsr CFG.GetKeyword
|
||||
bcs .1
|
||||
|
||||
lda CFG.Keyword
|
||||
bne .3
|
||||
|
||||
ldy UsrBuf256
|
||||
|
||||
lda UsrBuf256+1,y
|
||||
cmp #35 DOMAIN too long!!!
|
||||
bcs .1
|
||||
|
||||
sta IPCFG+S.IPCFG.DOMAIN
|
||||
ldx #0
|
||||
|
||||
.2 lda UsrBuf256+2,y
|
||||
sta IPCFG+S.IPCFG.DOMAIN,x
|
||||
beq .1
|
||||
inx
|
||||
iny
|
||||
bne .2
|
||||
bra .1
|
||||
|
||||
.9 jsr CFG.Read.CleanUp
|
||||
sec
|
||||
rts
|
||||
|
||||
.3 jsr CFG.ScanIP
|
||||
bcs .1
|
||||
|
||||
ldy CFG.Keyword
|
||||
lda CFG.Keyword.Map,y
|
||||
tax
|
||||
ldy #0
|
||||
|
||||
.4 lda CFG.IP+1,y
|
||||
sta IPCFG,x
|
||||
inx
|
||||
iny
|
||||
cpy #4
|
||||
bne .4
|
||||
lda CFG.Keyword
|
||||
cmp #1
|
||||
bne .1
|
||||
lda #S.IPCFG.STATUS.OK
|
||||
sta IPCFG
|
||||
bra .1
|
||||
|
||||
.8 jsr CFG.Read.CleanUp
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CFG.Read.HOSTS >LDYA L.HOSTS
|
||||
|
||||
jsr CFG.Read.LoadFile
|
||||
bcs .9
|
||||
|
||||
|
||||
.8 jsr CFG.Read.CleanUp
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 jsr CFG.Read.CleanUp
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CFG.Read.LoadFile
|
||||
stz CFG.hCfgFile
|
||||
stz CFG.hCfgPath
|
||||
|
||||
>SYSCALL ExpandStr
|
||||
bcs .9
|
||||
|
||||
stx CFG.hCfgPath
|
||||
pha
|
||||
|
||||
>PUSHWI 0 Aux type
|
||||
>PUSHBI 4 S.FI.T.TXT
|
||||
>PUSHBI SYS.FOpen.R
|
||||
pla
|
||||
>SYSCALL LoadFile
|
||||
bcs .9
|
||||
|
||||
stx CFG.hCfgFile
|
||||
>STYA CFG.FileLen
|
||||
txa
|
||||
>SYSCALL GetMemPtr
|
||||
>STYA ZPIPCfgPtr
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CFG.Read.CleanUp
|
||||
pha
|
||||
lda CFG.hCfgPath
|
||||
beq .1
|
||||
>SYSCALL FreeMem
|
||||
|
||||
.1 lda CFG.hCfgFile
|
||||
beq .8
|
||||
>SYSCALL FreeMem
|
||||
|
||||
.8 pla
|
||||
rts
|
||||
*--------------------------------------
|
||||
CFG.GetLine stz UsrBuf256
|
||||
ldx #0
|
||||
ldy #0
|
||||
|
||||
.1 jsr CFG.GetChar
|
||||
bne .2 end of file?
|
||||
txa
|
||||
bne .8
|
||||
sec
|
||||
rts
|
||||
|
||||
.2 cmp #$0D
|
||||
beq .8 end of line
|
||||
inx
|
||||
sta UsrBuf256,x
|
||||
cmp #'='
|
||||
bne .3
|
||||
txa
|
||||
dec
|
||||
tay
|
||||
.3 cpx #64 line too long ?
|
||||
bne .1
|
||||
sec
|
||||
rts
|
||||
|
||||
.8 tya = found ?
|
||||
beq .9
|
||||
|
||||
sta UsrBuf256
|
||||
txa
|
||||
sec
|
||||
sbc UsrBuf256
|
||||
sta UsrBuf256+1,y
|
||||
stz UsrBuf256+1,x End with 0 for ScanIP
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CFG.GetChar lda CFG.FileLen
|
||||
bne .1
|
||||
lda CFG.FileLen+1
|
||||
beq .9
|
||||
dec CFG.FileLen+1
|
||||
.1 dec CFG.FileLen
|
||||
lda (ZPIPCfgPtr)
|
||||
inc ZPIPCfgPtr
|
||||
bne .9
|
||||
inc ZPIPCfgPtr+1 NZ
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CFG.GetKeyword stz CFG.Keyword
|
||||
|
||||
ldx #0
|
||||
|
||||
.1 phx
|
||||
ldy #0
|
||||
|
||||
.2 lda CFG.Keywords,x
|
||||
cmp UsrBuf256,y
|
||||
bne .3
|
||||
cpy UsrBuf256
|
||||
beq .4
|
||||
inx
|
||||
iny
|
||||
bne .2
|
||||
plx
|
||||
sec
|
||||
rts
|
||||
|
||||
.3 inc CFG.Keyword
|
||||
plx
|
||||
txa
|
||||
sec
|
||||
adc CFG.Keywords,x
|
||||
tax
|
||||
lda CFG.Keywords,x
|
||||
bne .1
|
||||
sec
|
||||
rts
|
||||
|
||||
.4 plx
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CFG.ScanIP stz CFG.IP
|
||||
|
||||
ldx UsrBuf256
|
||||
|
||||
.1 ldy #0
|
||||
.11 lda UsrBuf256+2,x
|
||||
beq .3
|
||||
cmp #'0'
|
||||
bcc .2
|
||||
cmp #'9'+1
|
||||
bcs .2
|
||||
cpy #3
|
||||
beq .9
|
||||
iny
|
||||
sta CFG.StrBuf,y
|
||||
inx
|
||||
bra .11
|
||||
|
||||
.2 cmp #'.'
|
||||
bne .9
|
||||
|
||||
.3 sty CFG.StrBuf
|
||||
lda CFG.IP
|
||||
cmp #4
|
||||
beq .9
|
||||
jsr CFG.Dec2Hex
|
||||
bcs .9
|
||||
lda CFG.HexByte
|
||||
inc CFG.IP
|
||||
ldy CFG.IP
|
||||
sta CFG.IP,y
|
||||
inx
|
||||
lda UsrBuf256+1,x
|
||||
bne .1
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CFG.Dec2Hex sec
|
||||
ldy CFG.StrBuf
|
||||
beq .9
|
||||
|
||||
lda CFG.StrBuf+1
|
||||
and #$0f
|
||||
sta CFG.HexByte
|
||||
|
||||
ldy #1
|
||||
|
||||
.1 cpy CFG.StrBuf
|
||||
beq .8
|
||||
iny
|
||||
lda CFG.HexByte
|
||||
asl CFG.HexByte
|
||||
bcs .9
|
||||
asl CFG.HexByte
|
||||
bcs .9
|
||||
adc CFG.HexByte
|
||||
bcs .9
|
||||
asl
|
||||
bcs .9
|
||||
sta CFG.HexByte
|
||||
lda CFG.StrBuf,y
|
||||
and #$0f
|
||||
adc CFG.HexByte
|
||||
sta CFG.HexByte
|
||||
bcc .1
|
||||
.9 rts
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CFG.A2CharAX pha
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
ora #$30
|
||||
cmp #'9'+1
|
||||
bcc .1
|
||||
adc #6
|
||||
.1 tax
|
||||
pla
|
||||
and #$0F
|
||||
ora #$30
|
||||
cmp #'9'+1
|
||||
bcc .8
|
||||
adc #6
|
||||
.8 rts
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE /A2OSX.SRC/SBIN/TCPIPD.S.CFG
|
||||
LOAD /A2OSX.SRC/SBIN/TCPIPD.S
|
||||
ASM
|
|
@ -35,16 +35,6 @@ CS.START cld
|
|||
.DA CS.DOEVENT
|
||||
.DA CS.QUIT
|
||||
L.LIBTCPIP .DA LIBTCPIP
|
||||
L.DEVNAME .DA DEVNAME
|
||||
L.MSG.DEV.KO .DA MSG.DEV.KO
|
||||
L.MSG.DEV.OK .DA MSG.DEV.OK
|
||||
L.MSG.CFG .DA MSG.CFG
|
||||
L.MSG.CFG.KO .DA MSG.CFG.KO
|
||||
L.MSG.CFG.OK .DA MSG.CFG.OK
|
||||
L.HOSTNAME .DA HOSTNAME
|
||||
L.TCPIP.CONF .DA TCPIP.CONF
|
||||
L.HOSTS .DA HOSTS
|
||||
L.IPCFG .DA IPCFG
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
CS.INIT >LDYA L.LIBTCPIP
|
||||
|
@ -52,14 +42,6 @@ CS.INIT >LDYA L.LIBTCPIP
|
|||
bcs .99
|
||||
sta hLIBTCPIP
|
||||
|
||||
jsr CS.INIT.DEV
|
||||
bcs .99
|
||||
|
||||
jsr CFG.Read continue even if error opening CFG file
|
||||
|
||||
>PUSHW L.IPCFG
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.SET.IPCFG
|
||||
|
||||
lda (pPs)
|
||||
ora #S.PS.F.EVENT Now accept events
|
||||
sta (pPs)
|
||||
|
@ -67,38 +49,6 @@ CS.INIT >LDYA L.LIBTCPIP
|
|||
clc
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
CS.INIT.DEV >LDYA L.DEVNAME
|
||||
>SYSCALL GetDevByName
|
||||
bcc .1
|
||||
inc DEVNAME+3
|
||||
lda DEVNAME+3
|
||||
cmp #'8'
|
||||
bne CS.INIT.DEV
|
||||
|
||||
>LDYA L.MSG.DEV.KO
|
||||
>SYSCALL printf
|
||||
|
||||
lda #MLI.E.NODEV
|
||||
sec
|
||||
rts
|
||||
|
||||
.1 txa
|
||||
>STA.G hDev
|
||||
sta IPCFG+S.IPCFG.HDEV
|
||||
|
||||
>PUSHW L.DEVNAME
|
||||
>LDYA L.MSG.DEV.OK
|
||||
>SYSCALL printf
|
||||
|
||||
>PUSHWI 0
|
||||
>PUSHBI IOCTL.OPEN
|
||||
>LDA.G hDev
|
||||
>SYSCALL IOCTL
|
||||
rts
|
||||
|
||||
.9 sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN >LIBCALL hLIBTCPIP,LIBTCPIP.POLL
|
||||
clc
|
||||
rts
|
||||
|
@ -110,62 +60,19 @@ CS.DOEVENT lda (pEvent)
|
|||
.9 sec never discard TIME event
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.QUIT >LDA.G hDev
|
||||
beq .1
|
||||
|
||||
>PUSHWI 0
|
||||
>PUSHBI IOCTL.CLOSE
|
||||
>LDA.G hDev
|
||||
>SYSCALL IOCTL
|
||||
|
||||
.1 lda hLIBTCPIP
|
||||
CS.QUIT lda hLIBTCPIP
|
||||
>SYSCALL UnloadLib
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
.INB /A2OSX.SRC/SBIN/TCPIPD.S.CFG
|
||||
*--------------------------------------
|
||||
CS.END
|
||||
*--------------------------------------
|
||||
LIBTCPIP .AZ "libtcpip.o"
|
||||
DEVNAME .AZ "ETH1"
|
||||
MSG.DEV.KO .AZ "TCPIPD:No Device Found, exiting.\r\n"
|
||||
MSG.DEV.OK .AZ "TCPIPD:Bound To Device : %s\r\n"
|
||||
MSG.CFG .AZ "TCPIPD:Reading %s..."
|
||||
MSG.CFG.KO .AZ "Failed!!! [%h]\r\n"
|
||||
MSG.CFG.OK .AZ "OK.\r\n"
|
||||
*--------------------------------------
|
||||
HOSTNAME .AZ "${A2OSX}ETC/HOSTNAME"
|
||||
TCPIP.CONF .AZ "${A2OSX}ETC/TCPIP.CONF"
|
||||
HOSTS .AZ "${A2OSX}ETC/HOSTS"
|
||||
DefaultHostName .AZ "a2osx-XXXX"
|
||||
CFG.Keywords >PSTR "DOMAIN"
|
||||
>PSTR "IP"
|
||||
>PSTR "MASK"
|
||||
>PSTR "GW"
|
||||
>PSTR "DNS1"
|
||||
>PSTR "DNS2"
|
||||
CFG.Keyword.Map .DA #0 End Of Keyword table and NA Keyword
|
||||
.DA #S.IPCFG.IP
|
||||
.DA #S.IPCFG.MASK
|
||||
.DA #S.IPCFG.GW
|
||||
.DA #S.IPCFG.DNS1
|
||||
.DA #S.IPCFG.DNS2
|
||||
hLIBTCPIP .BS 1
|
||||
IPCFG .BS S.IPCFG
|
||||
CFG.hCfgFile .BS 1
|
||||
CFG.hCfgPath .BS 1
|
||||
CFG.FileLen .BS 2
|
||||
CFG.Keyword .BS 1
|
||||
CFG.StrBuf .BS 4
|
||||
CFG.HexByte .BS 1
|
||||
CFG.IP .BS 5
|
||||
UsrBuf256 .BS 256
|
||||
*--------------------------------------
|
||||
.DUMMY
|
||||
.OR 0
|
||||
DS.START
|
||||
hDev .BS 1
|
||||
DS.END .ED
|
||||
*--------------------------------------
|
||||
MAN
|
||||
|
|
|
@ -70,7 +70,7 @@ K.PutS >STYA K.S.IOCTL+S.IOCTL.BUFPTR
|
|||
* # FPutS
|
||||
* Write Str to FILE
|
||||
* ## C
|
||||
* `int fputs ( const char * str, hFILE stream );`
|
||||
* `int fputs (hFILE stream, const char * str );`
|
||||
* **In:**
|
||||
* PUSHB : hFILE
|
||||
* Y,A: str
|
||||
|
@ -100,6 +100,28 @@ K.FPutS.I jsr IO.SELECT
|
|||
stx K.S.IOCTL+S.IOCTL.BYTECNT+1
|
||||
jmp IO.Write.I
|
||||
*/--------------------------------------
|
||||
* # FGetS
|
||||
* read bytes from stream into the array
|
||||
* pointed to by s, until n-1 bytes are read, or a <newline> is read and
|
||||
* transferred to s, or an end-of-file condition is encountered. The
|
||||
* string is then terminated with a null byte.
|
||||
* ## C
|
||||
* `char *fgets(hFILE stream, char * s, int n);`
|
||||
* ## ASM
|
||||
* **In:**
|
||||
* `>PUSHW n`
|
||||
* `>PUSHW s`
|
||||
* `lda hFILE`
|
||||
* `>SYSCALL fgets`
|
||||
* **Out:**
|
||||
* Y,A: s
|
||||
* CC = success
|
||||
*\--------------------------------------
|
||||
K.FGetS
|
||||
|
||||
clc
|
||||
rts
|
||||
*/--------------------------------------
|
||||
* # PrintF/SPrintF/FPrintF
|
||||
* Prints C-Style String
|
||||
* ## C
|
||||
|
@ -642,6 +664,7 @@ BCDBUF .EQ ARG
|
|||
* + %U : dword
|
||||
* + %h : HEX byte
|
||||
* + %H : HEX word
|
||||
* + %s : string
|
||||
* `>PUSHW ptr`
|
||||
* `...`
|
||||
* `>PUSHBI bytecount`
|
||||
|
@ -681,12 +704,11 @@ K.SScanF >STYA ZPPtr2 String to Scan
|
|||
bne .21
|
||||
inc ZPPtr1+1
|
||||
|
||||
.21 ldx #K.SScanFJMP-K.SScanFTBL-2
|
||||
.21 ldx #K.SScanFCNT-K.SScanFTBL-1
|
||||
|
||||
.3 cmp K.SScanFTBL,x
|
||||
beq .4
|
||||
dex
|
||||
dex
|
||||
bpl .3
|
||||
|
||||
.9 jsr .8
|
||||
|
@ -717,13 +739,13 @@ K.SScanF >STYA ZPPtr2 String to Scan
|
|||
iny
|
||||
sty K.SScanF.ByteIdx
|
||||
|
||||
lda K.SScanFTBL+1,x Get VAR size
|
||||
jmp (K.SScanFJMP,x)
|
||||
*--------------------------------------
|
||||
K.SScanF.ByteCnt .BS 1
|
||||
K.SScanF.ByteIdx .BS 1
|
||||
*--------------------------------------
|
||||
K.SScanFTBL .DA #'i,#1,#'d,#1,#'I,#2,#'D,#2,#'l,#4,#'u,#4,#'h,#1,#'H,#2
|
||||
K.SScanFTBL .DA #'i,#'d,#'I,#'D,#'l,#'u,#'h,#'H,#'s
|
||||
K.SScanFCNT .DA #1, #1, #2, #2, #4, #4, #1, #2
|
||||
K.SScanFJMP .DA K.SScanF.I
|
||||
.DA K.SScanF.D
|
||||
.DA K.SScanF.II
|
||||
|
@ -732,28 +754,26 @@ K.SScanFJMP .DA K.SScanF.I
|
|||
.DA K.SScanF.U
|
||||
.DA K.SScanF.H
|
||||
.DA K.SScanF.HH
|
||||
.DA K.SScanF.S
|
||||
*--------------------------------------
|
||||
K.SScanF.I
|
||||
K.SScanF.D
|
||||
K.SScanF.II
|
||||
K.SScanF.DD
|
||||
K.SScanF.L
|
||||
K.SScanF.U pha Save VAL size
|
||||
K.SScanF.U lda K.SScanFTBL+1,x Get VAR size
|
||||
pha Save VAL size
|
||||
|
||||
jsr STDLIB.GetDec
|
||||
bra K.SScanF.GetVAL
|
||||
*--------------------------------------
|
||||
K.SScanF.HH
|
||||
K.SScanF.H pha
|
||||
K.SScanF.H lda K.SScanFTBL+1,x Get VAR size
|
||||
pha
|
||||
|
||||
jsr STDLIB.GetHex
|
||||
|
||||
K.SScanF.GetVAL tya Y=char count parsed
|
||||
clc
|
||||
adc ZPPtr2
|
||||
sta ZPPtr2
|
||||
bcc .1
|
||||
inc ZPPtr2+1
|
||||
K.SScanF.GetVAL jsr K.SScanF.Fwd Y=char count parsed
|
||||
|
||||
.1 ply get back VAL size
|
||||
|
||||
|
@ -763,6 +783,24 @@ K.SScanF.GetVAL tya Y=char count parsed
|
|||
bne .2
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
K.SScanF.S ldy #$ff
|
||||
|
||||
.1 iny
|
||||
lda (ZPPtr2),y
|
||||
sta (ZPPtr3),y
|
||||
beq K.SScanF.Fwd
|
||||
cmp #' '
|
||||
bne .1
|
||||
iny
|
||||
|
||||
K.SScanF.Fwd tya Y=char count parsed
|
||||
clc
|
||||
adc ZPPtr2
|
||||
sta ZPPtr2
|
||||
bcc .8
|
||||
inc ZPPtr2+1
|
||||
.8 rts
|
||||
*/--------------------------------------
|
||||
* # FOpen
|
||||
* Open a file
|
||||
|
|
Loading…
Reference in New Issue