mirror of
https://github.com/A2osX/A2osX.git
synced 2024-05-31 16:41:30 +00:00
Kernel 0.9.2
This commit is contained in:
parent
ea144535e5
commit
45cd7d04fa
|
@ -39,19 +39,20 @@ A = DevID
|
||||||
**Out:**
|
**Out:**
|
||||||
CC = OK, CS = ERROR
|
CC = OK, CS = ERROR
|
||||||
Y,A = FD
|
Y,A = FD
|
||||||
|
X = hFD
|
||||||
|
|
||||||
# GetDevByName
|
# GetDevByName
|
||||||
**In:**
|
**In:**
|
||||||
Y,A = Ptr to device name (C-String)
|
Y,A = Ptr to device name (C-String)
|
||||||
**Out:**
|
**Out:**
|
||||||
CC = OK, CS = ERROR
|
CC = OK, CS = ERROR
|
||||||
X = DEVID
|
Y,A = FD
|
||||||
Y,A = FD
|
X = DevID
|
||||||
|
|
||||||
# GetDevStatus
|
# GetDevStatus
|
||||||
|
|
||||||
## C
|
## C
|
||||||
`int getdevstatus ( int devid, S.DIB * dstat );`
|
`int getdevstatus ( short int hFD, S.DIB * dstat );`
|
||||||
|
|
||||||
## ASM
|
## ASM
|
||||||
**In:**
|
**In:**
|
||||||
|
@ -221,13 +222,13 @@ note : if file is created on ProDOS : T=TXT,X=$0000
|
||||||
# IOCTL
|
# IOCTL
|
||||||
|
|
||||||
## C
|
## C
|
||||||
`int ioctl(int devid, int request, void * param );`
|
`int ioctl(short int hFD, int request, void * param );`
|
||||||
|
|
||||||
## ASM
|
## ASM
|
||||||
**In:**
|
**In:**
|
||||||
`PUSHWI param`
|
`PUSHWI param`
|
||||||
`PUSHBI request`
|
`PUSHBI request`
|
||||||
`lda devid`
|
`lda hFD`
|
||||||
`>SYSCALL IOCTL`
|
`>SYSCALL IOCTL`
|
||||||
**Out:**
|
**Out:**
|
||||||
Y,A = ...
|
Y,A = ...
|
||||||
|
@ -504,7 +505,7 @@ return a hFILE to a new FIFO
|
||||||
Print A (char) to hFILE
|
Print A (char) to hFILE
|
||||||
|
|
||||||
## C
|
## C
|
||||||
`int fputc ( int character, hFILE stream );`
|
`int fputc ( hFILE stream , int character );`
|
||||||
|
|
||||||
## ASM
|
## ASM
|
||||||
**In:**
|
**In:**
|
||||||
|
@ -667,7 +668,10 @@ Read formatted data from string
|
||||||
|
|
||||||
## ASM
|
## ASM
|
||||||
**In:**
|
**In:**
|
||||||
`>PUSHBI Argument Byte count`
|
`>PUSHW ptr`
|
||||||
|
`...`
|
||||||
|
`>PUSHBI bytecount`
|
||||||
|
`>PUSHWI format`
|
||||||
+ %i : short int
|
+ %i : short int
|
||||||
+ %d : byte
|
+ %d : byte
|
||||||
+ %I : int
|
+ %I : int
|
||||||
|
@ -678,13 +682,10 @@ Read formatted data from string
|
||||||
+ %H : HEX word
|
+ %H : HEX word
|
||||||
+ %s : string
|
+ %s : string
|
||||||
|
|
||||||
`>PUSHW ptr`
|
TODO : %10s
|
||||||
`...`
|
|
||||||
`>PUSHBI bytecount`
|
|
||||||
`>PUSHWI format`
|
|
||||||
`>LDYA s`
|
`>LDYA s`
|
||||||
**Out:**
|
**Out:**
|
||||||
Y,A = Number of arguments filled.
|
A = Number of arguments filled.
|
||||||
|
|
||||||
# FOpen
|
# FOpen
|
||||||
Open a file
|
Open a file
|
||||||
|
@ -750,8 +751,7 @@ Write bytes to file
|
||||||
`>PUSHW ptr`
|
`>PUSHW ptr`
|
||||||
`lda hFILE`
|
`lda hFILE`
|
||||||
`>SYSCALL fwrite`
|
`>SYSCALL fwrite`
|
||||||
|
**Out:**
|
||||||
# Out:
|
|
||||||
Y,A = Bytes Written
|
Y,A = Bytes Written
|
||||||
|
|
||||||
# FFlush
|
# FFlush
|
||||||
|
@ -767,13 +767,14 @@ int fflush(hFILE stream);
|
||||||
Set the file-position indicator for hFILE
|
Set the file-position indicator for hFILE
|
||||||
|
|
||||||
## C
|
## C
|
||||||
`int fseek(hFILE stream, long offset, int whence);`
|
`int fseek(hFILE stream, long offset, short int whence);`
|
||||||
|
|
||||||
## ASM
|
## ASM
|
||||||
**In:**
|
**In:**
|
||||||
PUSHW = Ptr to Offset (DWORD)
|
`>PUSHBI whence`
|
||||||
PUSHB = From
|
`>PUSHL offset`
|
||||||
PUSHB = hFILE
|
`lda stream`
|
||||||
|
`>SYSCALL fseek`
|
||||||
|
|
||||||
# FEOF
|
# FEOF
|
||||||
Test the end-of-file indicator for hFILE
|
Test the end-of-file indicator for hFILE
|
||||||
|
@ -793,18 +794,24 @@ Return the current value of the file-position indicator
|
||||||
|
|
||||||
## ASM
|
## ASM
|
||||||
**In:**
|
**In:**
|
||||||
PUSHW = Ptr to Offset (DWORD)
|
`lda stream`
|
||||||
PUSHB = hFILE
|
`>SYSCALL ftell`
|
||||||
**Out:**
|
**Out:**
|
||||||
Offset = Offset
|
On stack (long)
|
||||||
|
|
||||||
# Remove
|
# Remove
|
||||||
|
|
||||||
# Rename
|
# Rename
|
||||||
Rename a file
|
Rename a file
|
||||||
|
|
||||||
|
## C
|
||||||
|
`int rename(const char *oldpath, const char *newpath);`
|
||||||
|
|
||||||
|
## ASM
|
||||||
**In:**
|
**In:**
|
||||||
PUSHW = New Name
|
`>PUSHW newpath`
|
||||||
PUSHW = Old Name
|
`>LDYA oldpath`
|
||||||
|
`>SYSCALL rename`
|
||||||
**Out:**
|
**Out:**
|
||||||
|
|
||||||
# strtof
|
# strtof
|
||||||
|
|
Binary file not shown.
Binary file not shown.
|
@ -1,8 +1,6 @@
|
||||||
PR#3
|
|
||||||
PREFIX /A2OSX.BUILD
|
|
||||||
NEW
|
NEW
|
||||||
INC 1
|
PREFIX /A2OSX.BUILD
|
||||||
AUTO 8
|
AUTO 4,1
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* ****** START OF MLI QUIT CODE ******
|
* ****** START OF MLI QUIT CODE ******
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
PR#3
|
|
||||||
PREFIX /A2OSX.BUILD
|
|
||||||
NEW
|
NEW
|
||||||
INC 1
|
PREFIX /A2OSX.BUILD
|
||||||
AUTO 8
|
AUTO 4,1
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
.OP 65C02
|
.OP 65C02
|
||||||
.OR $2000
|
.OR $2000
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
PR#3
|
|
||||||
PREFIX /A2OSX.BUILD
|
|
||||||
NEW
|
NEW
|
||||||
INC 1
|
PREFIX /A2OSX.BUILD
|
||||||
AUTO 6
|
AUTO 4,1
|
||||||
ECHO *** A2osX Startup Script ***
|
ECHO *** A2osX Startup Script ***
|
||||||
SET PS1='$PWD'
|
SET PS1='$PWD'
|
||||||
# Main Screen
|
# Main Screen
|
||||||
|
|
|
@ -43,9 +43,9 @@ CS.INIT >LDYA L.LIBTCPIP
|
||||||
>SYSCALL LoadLib
|
>SYSCALL LoadLib
|
||||||
sta hLIBTCPIP
|
sta hLIBTCPIP
|
||||||
|
|
||||||
.8 lda (pPs)
|
* lda (pPs)
|
||||||
ora #S.PS.F.EVENT Now accept events
|
* ora #S.PS.F.EVENT Now accept events
|
||||||
sta (pPs)
|
* sta (pPs)
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -62,6 +62,7 @@ CS.RUN.ADD cmp #2
|
||||||
>PUSHEA.G DST.IP+2
|
>PUSHEA.G DST.IP+2
|
||||||
>PUSHEA.G DST.IP+1
|
>PUSHEA.G DST.IP+1
|
||||||
>PUSHEA.G DST.IP
|
>PUSHEA.G DST.IP
|
||||||
|
>PUSHBI 8 4 PTRs
|
||||||
>PUSHW L.SSCANF.IP
|
>PUSHW L.SSCANF.IP
|
||||||
lda #1
|
lda #1
|
||||||
>SYSCALL GetArg
|
>SYSCALL GetArg
|
||||||
|
|
|
@ -12,8 +12,9 @@ AUTO 4,1
|
||||||
.INB INC/ETH.I
|
.INB INC/ETH.I
|
||||||
.INB INC/LIBTCPIP.I
|
.INB INC/LIBTCPIP.I
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ZPIPCfgPtr .EQ ZPBIN
|
pIPCFG .EQ ZPBIN
|
||||||
ZPDevPtr .EQ ZPBIN+2
|
pFD .EQ ZPBIN+2
|
||||||
|
pDEV .EQ ZPBIN+4
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* File Header (16 Bytes)
|
* File Header (16 Bytes)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -68,22 +69,22 @@ CS.RUN >LDYA L.MSG0
|
||||||
>SYSCALL printf
|
>SYSCALL printf
|
||||||
|
|
||||||
>LIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG
|
>LIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG
|
||||||
>STYA ZPIPCfgPtr
|
>STYA pIPCFG
|
||||||
|
|
||||||
ldy #S.IPCFG.HDEV
|
ldy #S.IPCFG.hFD
|
||||||
lda (ZPIPCfgPtr),y
|
lda (pIPCFG),y
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
>LDYA L.MSG0.NL
|
>LDYA L.MSG0.NL
|
||||||
>SYSCALL printf
|
>SYSCALL printf
|
||||||
jmp CS.RUN.DONE
|
jmp CS.RUN.DONE
|
||||||
|
|
||||||
.1 >STA.G DevID
|
.1 >STA.G FD.ETH
|
||||||
>SYSCALL GetDevByID
|
>SYSCALL GetMemPtr
|
||||||
>STYA ZPDevPtr S.FD
|
>STYA pFD
|
||||||
|
|
||||||
>PUSHEA.G DIB
|
>PUSHEA.G DIB
|
||||||
>LDA.G DevID
|
>LDA.G FD.ETH
|
||||||
>SYSCALL GetDevStatus
|
>SYSCALL GetDevStatus
|
||||||
|
|
||||||
>LEA.G DCB.NIC
|
>LEA.G DCB.NIC
|
||||||
|
@ -93,7 +94,7 @@ CS.RUN >LDYA L.MSG0
|
||||||
|
|
||||||
>PUSHEA.G IOCTL
|
>PUSHEA.G IOCTL
|
||||||
>PUSHBI IOCTL.STATUS
|
>PUSHBI IOCTL.STATUS
|
||||||
>LDA.G DevID
|
>LDA.G FD.ETH
|
||||||
>SYSCALL IOCTL
|
>SYSCALL IOCTL
|
||||||
|
|
||||||
CS.RUN.DUMP >LDYA L.MSG0.L
|
CS.RUN.DUMP >LDYA L.MSG0.L
|
||||||
|
@ -112,14 +113,14 @@ CS.RUN.DUMP >LDYA L.MSG0.L
|
||||||
|
|
||||||
lda #S.FD.DEV.NAME
|
lda #S.FD.DEV.NAME
|
||||||
clc
|
clc
|
||||||
adc ZPDevPtr
|
adc pFD
|
||||||
tay
|
tay
|
||||||
lda /S.FD.DEV.NAME
|
lda /S.FD.DEV.NAME
|
||||||
adc ZPDevPtr+1
|
adc pFD+1
|
||||||
|
|
||||||
>PUSHYA
|
>PUSHYA
|
||||||
|
|
||||||
>PUSHB.G DevID
|
>PUSHB.G FD.ETH
|
||||||
|
|
||||||
>LDYA L.MSG1.DEV
|
>LDYA L.MSG1.DEV
|
||||||
>SYSCALL printf
|
>SYSCALL printf
|
||||||
|
@ -185,7 +186,7 @@ CS.RUN.LINK >LDYA L.MSG1.LINK.OK
|
||||||
|
|
||||||
CS.RUN.DUMPIP >LDYA L.MSG2
|
CS.RUN.DUMPIP >LDYA L.MSG2
|
||||||
>SYSCALL printf
|
>SYSCALL printf
|
||||||
lda (ZPIPCfgPtr)
|
lda (pIPCFG)
|
||||||
and #S.IPCFG.STATUS.OK
|
and #S.IPCFG.STATUS.OK
|
||||||
beq .11
|
beq .11
|
||||||
|
|
||||||
|
@ -198,7 +199,7 @@ CS.RUN.DUMPIP >LDYA L.MSG2
|
||||||
|
|
||||||
ldy #S.IPCFG.DHCPSRVR+3
|
ldy #S.IPCFG.DHCPSRVR+3
|
||||||
ldx #4
|
ldx #4
|
||||||
.2 >PUSHB (ZPIPCfgPtr),y
|
.2 >PUSHB (pIPCFG),y
|
||||||
dey
|
dey
|
||||||
dex
|
dex
|
||||||
bne .2
|
bne .2
|
||||||
|
@ -207,7 +208,7 @@ CS.RUN.DUMPIP >LDYA L.MSG2
|
||||||
|
|
||||||
ldy #S.IPCFG.IP+7 IP/MASK
|
ldy #S.IPCFG.IP+7 IP/MASK
|
||||||
ldx #8
|
ldx #8
|
||||||
.3 >PUSHB (ZPIPCfgPtr),y
|
.3 >PUSHB (pIPCFG),y
|
||||||
dey
|
dey
|
||||||
dex
|
dex
|
||||||
bne .3
|
bne .3
|
||||||
|
@ -216,7 +217,7 @@ CS.RUN.DUMPIP >LDYA L.MSG2
|
||||||
|
|
||||||
ldy #S.IPCFG.GW+3
|
ldy #S.IPCFG.GW+3
|
||||||
ldx #4
|
ldx #4
|
||||||
.4 >PUSHB (ZPIPCfgPtr),y
|
.4 >PUSHB (pIPCFG),y
|
||||||
dey
|
dey
|
||||||
dex
|
dex
|
||||||
bne .4
|
bne .4
|
||||||
|
@ -225,26 +226,26 @@ CS.RUN.DUMPIP >LDYA L.MSG2
|
||||||
|
|
||||||
ldy #S.IPCFG.DNS1+7
|
ldy #S.IPCFG.DNS1+7
|
||||||
ldx #8
|
ldx #8
|
||||||
.5 >PUSHB (ZPIPCfgPtr),y
|
.5 >PUSHB (pIPCFG),y
|
||||||
dey
|
dey
|
||||||
dex
|
dex
|
||||||
bne .5
|
bne .5
|
||||||
>LDYA L.MSG2.DNS
|
>LDYA L.MSG2.DNS
|
||||||
>SYSCALL printf
|
>SYSCALL printf
|
||||||
|
|
||||||
lda ZPIPCfgPtr
|
lda pIPCFG
|
||||||
clc
|
clc
|
||||||
adc #S.IPCFG.DOMAIN
|
adc #S.IPCFG.DOMAIN
|
||||||
tay
|
tay
|
||||||
lda ZPIPCfgPtr+1
|
lda pIPCFG+1
|
||||||
adc #0
|
adc #0
|
||||||
>PUSHYA
|
>PUSHYA
|
||||||
|
|
||||||
lda ZPIPCfgPtr
|
lda pIPCFG
|
||||||
clc
|
clc
|
||||||
adc #S.IPCFG.HOSTNAME
|
adc #S.IPCFG.HOSTNAME
|
||||||
tay
|
tay
|
||||||
lda ZPIPCfgPtr+1
|
lda pIPCFG+1
|
||||||
adc #0
|
adc #0
|
||||||
>PUSHYA
|
>PUSHYA
|
||||||
|
|
||||||
|
@ -273,7 +274,7 @@ MSG0.L .AZ "Loaded\r\n"
|
||||||
MSG0.NL .AZ "Not Loaded\r\n"
|
MSG0.NL .AZ "Not Loaded\r\n"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MSG1.DEV .AS "\r\nDevice Configuration :\r\n"
|
MSG1.DEV .AS "\r\nDevice Configuration :\r\n"
|
||||||
.AS " DevID : $%h\r\n"
|
.AS " FD.ETH : $%h\r\n"
|
||||||
.AS " Device Name : %s\r\n"
|
.AS " Device Name : %s\r\n"
|
||||||
.AS " Device Type : %S\r\n"
|
.AS " Device Type : %S\r\n"
|
||||||
.AZ " HW Address : %02h:%02h:%02h:%02h:%02h:%02h\r\n"
|
.AZ " HW Address : %02h:%02h:%02h:%02h:%02h:%02h\r\n"
|
||||||
|
@ -299,7 +300,7 @@ hLIBTCPIP .BS 1
|
||||||
.DUMMY
|
.DUMMY
|
||||||
.OR 0
|
.OR 0
|
||||||
DS.START
|
DS.START
|
||||||
DevID .BS 1
|
FD.ETH .BS 1
|
||||||
IOCTL .BS S.IOCTL
|
IOCTL .BS S.IOCTL
|
||||||
DIB .BS S.DIB
|
DIB .BS S.DIB
|
||||||
DCB.NIC .BS S.DCB.NIC
|
DCB.NIC .BS S.DCB.NIC
|
||||||
|
|
|
@ -50,13 +50,15 @@ CS.RUN >LDYA L.MSG0
|
||||||
bcs .7
|
bcs .7
|
||||||
|
|
||||||
>STYA ZPPTR1 S.FD
|
>STYA ZPPTR1 S.FD
|
||||||
|
txa
|
||||||
|
>STA.G DEV.FD
|
||||||
|
|
||||||
jsr DumpFD
|
jsr DumpFD
|
||||||
|
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>PUSHEA.G DEV.DIB
|
>PUSHEA.G DEV.DIB
|
||||||
>LDA.G DEV.ID
|
>LDA.G DEV.FD
|
||||||
>SYSCALL GetDevStatus
|
>SYSCALL GetDevStatus
|
||||||
bcs .6
|
bcs .6
|
||||||
|
|
||||||
|
@ -167,6 +169,7 @@ MSG.SFLAGS .AS "BWRLNEIO"
|
||||||
.OR 0
|
.OR 0
|
||||||
DS.START
|
DS.START
|
||||||
DEV.ID .BS 1
|
DEV.ID .BS 1
|
||||||
|
DEV.FD .BS 1
|
||||||
DEV.DIB .BS S.DIB
|
DEV.DIB .BS S.DIB
|
||||||
DEV.SFLAGS .BS 9
|
DEV.SFLAGS .BS 9
|
||||||
DS.END
|
DS.END
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
PR#3
|
|
||||||
PREFIX /A2OSX.BUILD
|
|
||||||
NEW
|
NEW
|
||||||
INC 1
|
PREFIX /A2OSX.BUILD
|
||||||
AUTO 6
|
AUTO 4,1
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
.OP 65C02
|
.OP 65C02
|
||||||
.OR $2000
|
.OR $2000
|
||||||
|
|
|
@ -541,8 +541,6 @@ CS.RUN.Rename ldy #hDstFullPath
|
||||||
ldy #hSrcFullPath
|
ldy #hSrcFullPath
|
||||||
jsr CS.RUN.GetPathY
|
jsr CS.RUN.GetPathY
|
||||||
|
|
||||||
>PUSHYA
|
|
||||||
|
|
||||||
>SYSCALL Rename
|
>SYSCALL Rename
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
PR#3
|
|
||||||
PREFIX /A2OSX.BUILD
|
|
||||||
NEW
|
NEW
|
||||||
INC 1
|
PREFIX /A2OSX.BUILD
|
||||||
AUTO 6
|
AUTO 4,1
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
.OP 65C02
|
.OP 65C02
|
||||||
.OR $2000
|
.OR $2000
|
||||||
|
|
|
@ -167,8 +167,7 @@ FD.DEV.NAME .AZ "ETH7" NAME
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ZPIOCTL .EQ ZPDRV
|
ZPIOCTL .EQ ZPDRV
|
||||||
ZPBufPtr .EQ ZPDRV+2
|
ZPBufPtr .EQ ZPDRV+2
|
||||||
Size .EQ ZPDRV+4
|
Counter .EQ ZPDRV+4
|
||||||
Counter .EQ ZPDRV+6
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DRV.CS.START cld
|
DRV.CS.START cld
|
||||||
jmp (.1,x)
|
jmp (.1,x)
|
||||||
|
@ -397,36 +396,40 @@ READ >STYA ZPIOCTL
|
||||||
.1 lda RTDATA+1,x discard RxStatus
|
.1 lda RTDATA+1,x discard RxStatus
|
||||||
lda RTDATA,x
|
lda RTDATA,x
|
||||||
|
|
||||||
lda RTDATA+1,x
|
lda RTDATA+1,x get RxLength
|
||||||
sta Size+1
|
ldy #S.IOCTL.BYTECNT+1
|
||||||
|
|
||||||
ldy RTDATA,x get RxLength
|
sta (ZPIOCTL),y
|
||||||
sty Size
|
pha
|
||||||
|
eor #$ff
|
||||||
|
sta Counter+1
|
||||||
|
|
||||||
|
lda RTDATA,x
|
||||||
|
dey
|
||||||
|
sta (ZPIOCTL),y
|
||||||
|
tay
|
||||||
|
eor #$ff
|
||||||
|
sta Counter
|
||||||
|
|
||||||
|
pla
|
||||||
|
|
||||||
>SYSCALL getmem
|
>SYSCALL getmem
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>STYA ZPBufPtr
|
>STYA ZPBufPtr
|
||||||
stx .8+1
|
stx .8+1
|
||||||
|
|
||||||
ldy #S.IOCTL.BYTECNT
|
phy
|
||||||
|
ldy #S.IOCTL.BUFPTR+1
|
||||||
lda Size
|
|
||||||
sta (ZPIOCTL),y
|
sta (ZPIOCTL),y
|
||||||
eor #$ff
|
dey
|
||||||
sta Counter
|
pla
|
||||||
|
|
||||||
iny
|
|
||||||
|
|
||||||
lda Size+1
|
|
||||||
sta (ZPIOCTL),y
|
sta (ZPIOCTL),y
|
||||||
eor #$ff
|
|
||||||
sta Counter+1
|
|
||||||
|
|
||||||
ldy #0
|
|
||||||
|
|
||||||
ldx DEVSLOTx0
|
ldx DEVSLOTx0
|
||||||
|
|
||||||
|
ldy #0
|
||||||
|
|
||||||
.2 inc Counter
|
.2 inc Counter
|
||||||
bne .3
|
bne .3
|
||||||
inc Counter+1
|
inc Counter+1
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
NEW
|
NEW
|
||||||
PREFIX /A2OSX.BUILD
|
PREFIX /A2OSX.BUILD
|
||||||
AUTO 4,1
|
AUTO 4,1
|
||||||
|
# put hostname here (max 15 caracters)
|
||||||
a2osx-host
|
a2osx-host
|
||||||
MAN
|
MAN
|
||||||
TEXT ETC/HOSTNAME
|
TEXT ETC/HOSTNAME
|
||||||
|
|
|
@ -2,6 +2,6 @@ NEW
|
||||||
PREFIX /A2OSX.BUILD
|
PREFIX /A2OSX.BUILD
|
||||||
AUTO 4,1
|
AUTO 4,1
|
||||||
# put your IP address and your hostname and aliases below
|
# put your IP address and your hostname and aliases below
|
||||||
1.2.3.4 myserver.mydomain myserver
|
1.2.3.4 myserver.mydomain myserver
|
||||||
MAN
|
MAN
|
||||||
TEXT ETC/HOSTS
|
TEXT ETC/HOSTS
|
||||||
|
|
|
@ -251,7 +251,6 @@ CS.RUN ldy #S.FNT.dfBreakChar
|
||||||
>PUSHYA
|
>PUSHYA
|
||||||
>PUSHBI SYS.FSeek.SET
|
>PUSHBI SYS.FSeek.SET
|
||||||
>LDA.G hOutputFile
|
>LDA.G hOutputFile
|
||||||
>PUSHA
|
|
||||||
>SYSCALL FSeek
|
>SYSCALL FSeek
|
||||||
bcc .1
|
bcc .1
|
||||||
.9 rts
|
.9 rts
|
||||||
|
@ -742,9 +741,7 @@ CS.RUN.WriteBMAndTbl
|
||||||
>LEA.G FileOffset
|
>LEA.G FileOffset
|
||||||
>PUSHYA
|
>PUSHYA
|
||||||
>PUSHBI SYS.FSeek.SET
|
>PUSHBI SYS.FSeek.SET
|
||||||
>LDA.G hOutputFile
|
>LDA.G hOutputFile
|
||||||
>PUSHA
|
|
||||||
|
|
||||||
>SYSCALL FSeek
|
>SYSCALL FSeek
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
|
|
|
@ -78,7 +78,7 @@ SYS.Stat .EQ $04
|
||||||
SYS.MKDir .EQ $06
|
SYS.MKDir .EQ $06
|
||||||
SYS.MKNod .EQ $08
|
SYS.MKNod .EQ $08
|
||||||
SYS.MKFIFO .EQ $0A
|
SYS.MKFIFO .EQ $0A
|
||||||
* .EQ $0C
|
SYS.FStat .EQ $0C
|
||||||
* .EQ $0E
|
* .EQ $0E
|
||||||
|
|
||||||
SYS.OpenDir .EQ $10
|
SYS.OpenDir .EQ $10
|
||||||
|
@ -116,8 +116,8 @@ SYS.FWrite .EQ $36
|
||||||
SYS.FFlush .EQ $38
|
SYS.FFlush .EQ $38
|
||||||
SYS.FSeek .EQ $3A
|
SYS.FSeek .EQ $3A
|
||||||
SYS.FSeek.SET .EQ $00
|
SYS.FSeek.SET .EQ $00
|
||||||
SYS.FSeek.CUR .EQ $01
|
SYS.FSeek.CUR .EQ $02
|
||||||
SYS.FSeek.END .EQ $02
|
SYS.FSeek.END .EQ $04
|
||||||
SYS.FTell .EQ $3C
|
SYS.FTell .EQ $3C
|
||||||
SYS.FEOF .EQ $3E
|
SYS.FEOF .EQ $3E
|
||||||
|
|
||||||
|
@ -397,15 +397,15 @@ S.FD.DIR.REF .EQ 2
|
||||||
S.FD.DIR.IOBUF .EQ 3
|
S.FD.DIR.IOBUF .EQ 3
|
||||||
S.FD.DIR.EL .EQ 4
|
S.FD.DIR.EL .EQ 4
|
||||||
S.FD.DIR.EPB .EQ 5
|
S.FD.DIR.EPB .EQ 5
|
||||||
S.FD.DIR.FC .EQ 6 word
|
S.FD.DIR.FC .EQ 6 word
|
||||||
*
|
*
|
||||||
S.FD.DIR .EQ 8
|
S.FD.DIR .EQ 8
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
S.FD.DEV.BUSID .EQ 2
|
S.FD.DEV.BUSID .EQ 2
|
||||||
S.FD.DEV.DEVID .EQ 3
|
S.FD.DEV.DEVID .EQ 3
|
||||||
S.FD.DEV.BUSPTR .EQ 4 word
|
S.FD.DEV.BUSPTR .EQ 4 word
|
||||||
S.FD.DEV.DRVPTR .EQ 6 word
|
S.FD.DEV.DRVPTR .EQ 6 word
|
||||||
S.FD.DEV.NAME .EQ 8 C-String
|
S.FD.DEV.NAME .EQ 8 C-String
|
||||||
*
|
*
|
||||||
S.FD.DEV .EQ 16
|
S.FD.DEV .EQ 16
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -567,4 +567,4 @@ S.STAT.P.DEVBLOCKS .EQ 59 BYTE
|
||||||
S.STAT .EQ 64
|
S.STAT .EQ 64
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE /A2OSX.BUILD/INC/A2OSX.I
|
SAVE INC/A2OSX.I
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
PR#3
|
|
||||||
PREFIX /A2OSX.BUILD
|
|
||||||
NEW
|
NEW
|
||||||
INC 1
|
PREFIX /A2OSX.BUILD
|
||||||
AUTO 6
|
AUTO 4,1
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* AppleSoft ZP
|
* AppleSoft ZP
|
||||||
|
@ -82,4 +80,4 @@ ATN .EQ $F09E
|
||||||
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE /A2OSX.BUILD/INC/APPLESOFT.I
|
SAVE INC/APPLESOFT.I
|
||||||
|
|
|
@ -1,12 +1,10 @@
|
||||||
PR#3
|
|
||||||
PREFIX /A2OSX.BUILD
|
|
||||||
NEW
|
NEW
|
||||||
INC 1
|
PREFIX /A2OSX.BUILD
|
||||||
AUTO 6
|
AUTO 4,1
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ATGetInfo .EQ $02
|
ATGetInfo .EQ $02
|
||||||
ATLookupName .EQ $10
|
ATLookupName .EQ $10
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE /A2OSX.BUILD/INC/APPLETALK.I
|
SAVE INC/APPLETALK.I
|
||||||
|
|
|
@ -58,4 +58,4 @@ SSC.CTL.B115200 .EQ %00000000
|
||||||
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE /A2OSX.BUILD/INC/COM.6551.I
|
SAVE INC/COM.6551.I
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
PR#3
|
|
||||||
PREFIX /A2OSX.BUILD
|
|
||||||
NEW
|
NEW
|
||||||
INC 1
|
PREFIX /A2OSX.BUILD
|
||||||
AUTO 6
|
AUTO 4,1
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Le Chat Mauve : EVE
|
* Le Chat Mauve : EVE
|
||||||
|
@ -25,4 +23,4 @@ LOCKRES.OFF .EQ $C0BE W
|
||||||
LOCKRES.ON .EQ $C0BF W
|
LOCKRES.ON .EQ $C0BF W
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE /A2OSX.BUILD/INC/GFX.EVE.I
|
SAVE INC/GFX.EVE.I
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
PR#3
|
|
||||||
PREFIX /A2OSX.BUILD
|
|
||||||
NEW
|
NEW
|
||||||
INC 1
|
PREFIX /A2OSX.BUILD
|
||||||
AUTO 6
|
AUTO 4,1
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* GFX Devices
|
* GFX Devices
|
||||||
|
@ -11,7 +9,7 @@ S.DIB.GFX.F .EQ S.DIB
|
||||||
S.DIB.GFX.S .EQ S.DIB+1
|
S.DIB.GFX.S .EQ S.DIB+1
|
||||||
S.DIB.GFX.W .EQ S.DIB+2
|
S.DIB.GFX.W .EQ S.DIB+2
|
||||||
S.DIB.GFX.H .EQ S.DIB+4
|
S.DIB.GFX.H .EQ S.DIB+4
|
||||||
S.DIB.GFX .EQ S.DIB+6
|
S.DIB.GFX .EQ S.DIB+6
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE /A2OSX.BUILD/INC/GFX.I
|
SAVE INC/GFX.I
|
||||||
|
|
|
@ -228,4 +228,4 @@ S.FON.Break .EQ 7
|
||||||
S.FON .EQ 8
|
S.FON .EQ 8
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE /A2OSX.BUILD/INC/GUI.I
|
SAVE INC/GUI.I
|
||||||
|
|
|
@ -93,4 +93,4 @@ RRAMWRAMBNK1 .EQ $C08B RR
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
*CLRC8ROM .EQ $CFFF R, Release C800-CFFF Rom Space for all cards
|
*CLRC8ROM .EQ $CFFF R, Release C800-CFFF Rom Space for all cards
|
||||||
MAN
|
MAN
|
||||||
SAVE /A2OSX.BUILD/INC/IO.I
|
SAVE INC/IO.I
|
||||||
|
|
|
@ -99,10 +99,10 @@ K.STACKTOP .EQ $03ED XFer !!! down to $3E0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* free $0C00->$17FF = $C00 (3072) Aux
|
* free $0C00->$17FF = $C00 (3072) Aux
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
FD.Table.hMem .EQ $0C00 K.Dev.MAX
|
Dev.Table.hFD .EQ $0C00 K.Dev.MAX
|
||||||
FD.Table.F .EQ $0C20 K.Dev.MAX
|
Dev.Table.F .EQ $0C20 K.Dev.MAX
|
||||||
FD.Table.PTRLO .EQ $0C40 K.Dev.MAX
|
Dev.Table.pFDLO .EQ $0C40 K.Dev.MAX
|
||||||
FD.Table.PTRHI .EQ $0C60 K.Dev.MAX
|
Dev.Table.pFDHI .EQ $0C60 K.Dev.MAX
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PS.Table.hMem .EQ $0D00 K.PS.MAX
|
PS.Table.hMem .EQ $0D00 K.PS.MAX
|
||||||
PS.Table.PID .EQ $0D20 K.PS.MAX
|
PS.Table.PID .EQ $0D20 K.PS.MAX
|
||||||
|
@ -162,6 +162,6 @@ H.BIN.EXE.REL.TABLE .EQ 16
|
||||||
H.BIN.DRV.REL.TABLE .EQ 2 Including main jmp
|
H.BIN.DRV.REL.TABLE .EQ 2 Including main jmp
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE /A2OSX.BUILD/INC/KERNEL.I
|
SAVE INC/KERNEL.I
|
||||||
LOAD /A2OSX.SRC/SYS/KERNEL.S
|
LOAD /A2OSX.SRC/SYS/KERNEL.S
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
PR#3
|
|
||||||
PREFIX /A2OSX.BUILD
|
|
||||||
NEW
|
NEW
|
||||||
INC 1
|
PREFIX /A2OSX.BUILD
|
||||||
AUTO 6
|
AUTO 4,1
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
.OP 65C02
|
.OP 65C02
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
PR#3
|
|
||||||
PREFIX /A2OSX.BUILD
|
|
||||||
NEW
|
NEW
|
||||||
INC 1
|
PREFIX /A2OSX.BUILD
|
||||||
AUTO 6
|
AUTO 4,1
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
.OP 65C02
|
.OP 65C02
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
|
|
@ -77,7 +77,7 @@ S.IPCFG.STATUS.ROFFER .EQ %00000010 OFFER Received
|
||||||
S.IPCFG.STATUS.SREQ .EQ %00000100 REQUEST Sent
|
S.IPCFG.STATUS.SREQ .EQ %00000100 REQUEST Sent
|
||||||
S.IPCFG.STATUS.RACK .EQ %00001000 ACK Received
|
S.IPCFG.STATUS.RACK .EQ %00001000 ACK Received
|
||||||
S.IPCFG.STATUS.OK .EQ %10000000 Fully configured (static or DHCP)
|
S.IPCFG.STATUS.OK .EQ %10000000 Fully configured (static or DHCP)
|
||||||
S.IPCFG.HDEV .EQ 1
|
S.IPCFG.hFD .EQ 1
|
||||||
S.IPCFG.MAC .EQ 2
|
S.IPCFG.MAC .EQ 2
|
||||||
S.IPCFG.DHCPSRVR .EQ 8
|
S.IPCFG.DHCPSRVR .EQ 8
|
||||||
S.IPCFG.IP .EQ 12
|
S.IPCFG.IP .EQ 12
|
||||||
|
|
|
@ -351,8 +351,8 @@ AUTO 4,1
|
||||||
dec
|
dec
|
||||||
bne :1
|
bne :1
|
||||||
pla
|
pla
|
||||||
rts
|
|
||||||
.FIN
|
.FIN
|
||||||
|
rts
|
||||||
.EM
|
.EM
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* General WORD Manipulation Macros
|
* General WORD Manipulation Macros
|
||||||
|
@ -378,8 +378,8 @@ AUTO 4,1
|
||||||
tya
|
tya
|
||||||
sta ]1,]2
|
sta ]1,]2
|
||||||
.ELSE
|
.ELSE
|
||||||
sta ]1+1
|
|
||||||
sty ]1
|
sty ]1
|
||||||
|
sta ]1+1
|
||||||
.FIN
|
.FIN
|
||||||
.EM
|
.EM
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
PR#3
|
|
||||||
PREFIX /A2OSX.BUILD
|
|
||||||
NEW
|
NEW
|
||||||
INC 1
|
PREFIX /A2OSX.BUILD
|
||||||
AUTO 1000
|
AUTO 4,1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* ROM Standard Routines
|
* ROM Standard Routines
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
PR#3
|
|
||||||
PREFIX /A2OSX.BUILD
|
|
||||||
NEW
|
NEW
|
||||||
INC 1
|
PREFIX /A2OSX.BUILD
|
||||||
AUTO 6
|
AUTO 4,1
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
.OP 65C02
|
.OP 65C02
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
PR#3
|
|
||||||
PREFIX /A2OSX.BUILD
|
|
||||||
NEW
|
NEW
|
||||||
INC 1
|
PREFIX /A2OSX.BUILD
|
||||||
AUTO 6
|
AUTO 4,1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.7-4.6/+/jb-dev/sysroot/usr/include/arpa/telnet.h
|
* https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.7-4.6/+/jb-dev/sysroot/usr/include/arpa/telnet.h
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
PR#3
|
NEW
|
||||||
PREFIX /A2OSX.BUILD
|
PREFIX /A2OSX.BUILD
|
||||||
LOMEM $C00
|
AUTO 4,1
|
||||||
INC 1
|
|
||||||
AUTO 6
|
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* CS8900A IO Registers
|
* CS8900A IO Registers
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
PR#3
|
|
||||||
PREFIX /A2OSX.BUILD
|
|
||||||
NEW
|
NEW
|
||||||
INC 1
|
PREFIX /A2OSX.BUILD
|
||||||
AUTO 6
|
AUTO 4,1
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* SMSC L91C96 IO Registers
|
* SMSC L91C96 IO Registers
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
PR#3
|
|
||||||
PREFIX /A2OSX.BUILD
|
|
||||||
NEW
|
NEW
|
||||||
INC 1
|
PREFIX /A2OSX.BUILD
|
||||||
AUTO 6
|
AUTO 4,1
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* WIZnet W5100 IO Registers
|
* WIZnet W5100 IO Registers
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
PR#3
|
|
||||||
PREFIX /A2OSX.BUILD
|
|
||||||
NEW
|
NEW
|
||||||
INC 1
|
PREFIX /A2OSX.BUILD
|
||||||
AUTO 6
|
AUTO 4,1
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* PRODOS Constants
|
* PRODOS Constants
|
||||||
|
@ -135,4 +133,4 @@ MACHID.CLK .EQ %00000001
|
||||||
*KVERSION .EQ $BFFF
|
*KVERSION .EQ $BFFF
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE /A2OSX.BUILD/INC/PRODOS.I
|
SAVE INC/PRODOS.I
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
PR#3
|
|
||||||
PREFIX /A2OSX.BUILD
|
|
||||||
NEW
|
NEW
|
||||||
INC 1
|
PREFIX /A2OSX.BUILD
|
||||||
AUTO 6
|
AUTO 4,1
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* //c Mouse Port, IIe Mouse Card
|
* //c Mouse Port, IIe Mouse Card
|
||||||
|
@ -39,4 +37,4 @@ MOUSEMODx.INTMOVE .EQ %00000010
|
||||||
MOUSEMODx.ACTIVE .EQ %00000001
|
MOUSEMODx.ACTIVE .EQ %00000001
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE /A2OSX.BUILD/INC/XY.MOUSE.I
|
SAVE INC/XY.MOUSE.I
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
PR#3
|
|
||||||
PREFIX /A2OSX.BUILD
|
|
||||||
NEW
|
NEW
|
||||||
INC 1
|
PREFIX /A2OSX.BUILD
|
||||||
AUTO 6
|
AUTO 4,1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* ProDOS Reserved ZP Location 00-1F,56-FF
|
* ProDOS Reserved ZP Location 00-1F,56-FF
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -29,4 +27,4 @@ RNDL .EQ $4E RANDOM NUMBER LOW
|
||||||
RNDH .EQ $4F RANDOM NUMBER HIGH
|
RNDH .EQ $4F RANDOM NUMBER HIGH
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE /A2OSX.BUILD/INC/ZP.I
|
SAVE INC/ZP.I
|
||||||
|
|
|
@ -125,7 +125,7 @@ ARP.AddFromFrameInPtr
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ARP.IN ldy #S.ARP.TPA+3
|
ARP.IN ldy #S.ARP.TPA+3
|
||||||
ldx #3
|
ldx #3
|
||||||
|
|
||||||
.1 lda (ZPFrameInPtr),y
|
.1 lda (ZPFrameInPtr),y
|
||||||
cmp IPCFG+S.IPCFG.IP,x
|
cmp IPCFG+S.IPCFG.IP,x
|
||||||
bne ARP.IN.EXIT
|
bne ARP.IN.EXIT
|
||||||
|
@ -142,8 +142,10 @@ ARP.IN ldy #S.ARP.TPA+3
|
||||||
beq ARP.IN.REP
|
beq ARP.IN.REP
|
||||||
|
|
||||||
ARP.IN.EXIT lda hFrameIn
|
ARP.IN.EXIT lda hFrameIn
|
||||||
|
beq .8
|
||||||
|
stz hFrameIn
|
||||||
>SYSCALL FreeMem
|
>SYSCALL FreeMem
|
||||||
clc
|
.8 clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
ARP.IN.REQ ldy #S.ARP.SPA+3
|
ARP.IN.REQ ldy #S.ARP.SPA+3
|
||||||
|
@ -165,8 +167,10 @@ ARP.IN.REQ ldy #S.ARP.SPA+3
|
||||||
dex
|
dex
|
||||||
bpl .2
|
bpl .2
|
||||||
|
|
||||||
>LDYA L.ARP.REP
|
>PUSHWI S.ARP
|
||||||
jsr ARP.Send.YA
|
>PUSHW L.ARP.REP
|
||||||
|
lda IPCFG+S.IPCFG.hFD
|
||||||
|
>SYSCALL write
|
||||||
|
|
||||||
bra ARP.IN.EXIT
|
bra ARP.IN.EXIT
|
||||||
|
|
||||||
|
@ -221,8 +225,10 @@ ARP.QUERY.I jsr ARP.FIND.BY.IP
|
||||||
dex
|
dex
|
||||||
bpl .4
|
bpl .4
|
||||||
|
|
||||||
>LDYA L.ARP.REQ
|
>PUSHWI S.ARP
|
||||||
jsr ARP.Send.YA
|
>PUSHW L.ARP.REQ
|
||||||
|
lda IPCFG+S.IPCFG.hFD
|
||||||
|
>SYSCALL write
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
lda #K.ARP.PENDING.TTL
|
lda #K.ARP.PENDING.TTL
|
||||||
|
@ -236,12 +242,6 @@ ARP.QUERY.I jsr ARP.FIND.BY.IP
|
||||||
sec
|
sec
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ARP.Send.YA >STYA IOCTL+S.IOCTL.BUFPTR
|
|
||||||
>LDYAI S.ARP
|
|
||||||
>STYA IOCTL+S.IOCTL.BYTECNT
|
|
||||||
|
|
||||||
jmp FRM.Send.IOCTL
|
|
||||||
*--------------------------------------
|
|
||||||
ARP.FIND.BY.IP >LDYA L.ARP.CACHE
|
ARP.FIND.BY.IP >LDYA L.ARP.CACHE
|
||||||
>STYA ZPCachePtr
|
>STYA ZPCachePtr
|
||||||
|
|
||||||
|
|
|
@ -5,11 +5,12 @@ AUTO 4,1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* PULLW = PTR to S.IPCFG
|
* PULLW = PTR to S.IPCFG
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CFG.Init >LDYA L.DEVNAME
|
CFG.Init >PUSHBI 0
|
||||||
>SYSCALL GetDevByName
|
>LDYA L.DEVNAME
|
||||||
|
>SYSCALL open
|
||||||
bcc .1
|
bcc .1
|
||||||
inc DEVNAME+3
|
inc DEVNAME+8
|
||||||
lda DEVNAME+3
|
lda DEVNAME+8
|
||||||
cmp #'8'
|
cmp #'8'
|
||||||
bne CFG.Init
|
bne CFG.Init
|
||||||
|
|
||||||
|
@ -20,54 +21,25 @@ CFG.Init >LDYA L.DEVNAME
|
||||||
.9 sec
|
.9 sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.1 stx IPCFG+S.IPCFG.HDEV
|
.1 sta IPCFG+S.IPCFG.hFD
|
||||||
|
|
||||||
>PUSHW L.DEVNAME
|
>PUSHW L.DEVNAME
|
||||||
>LDYA L.MSG.DEV.OK
|
>LDYA L.MSG.DEV.OK
|
||||||
>SYSCALL printf
|
>SYSCALL printf
|
||||||
|
|
||||||
>PUSHWI 0
|
CFG.EtcFiles >LDYAI 256
|
||||||
>PUSHBI IOCTL.OPEN
|
>SYSCALL GetMem
|
||||||
lda IPCFG+S.IPCFG.HDEV
|
bcc .1
|
||||||
>SYSCALL IOCTL
|
rts
|
||||||
bcs .9
|
|
||||||
|
|
||||||
>LDYA L.DCB.NIC
|
.1 >STYA ZPTmpPtr1
|
||||||
>STYA IOCTL+S.IOCTL.BUFPTR
|
stx CFG.hBuf
|
||||||
lda #S.IOCTL.STATCODE.GETDCB
|
|
||||||
sta IOCTL+S.IOCTL.STATCODE
|
|
||||||
|
|
||||||
>PUSHW L.IOCTL
|
>PUSHW L.HOSTNAME
|
||||||
>PUSHBI IOCTL.STATUS
|
>LDYA L.MSG.CFG
|
||||||
lda IPCFG+S.IPCFG.HDEV
|
|
||||||
>SYSCALL IOCTL
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
ldx #5
|
|
||||||
|
|
||||||
.2 lda DCB.NIC+S.DCB.NIC.MAC,x
|
|
||||||
sta IPCFG+S.IPCFG.MAC,x
|
|
||||||
sta ARP.REQ.SRCMAC,x
|
|
||||||
sta ARP.REQ.SHA,x
|
|
||||||
sta ARP.REP.SRCMAC,x
|
|
||||||
sta ARP.REP.SHA,x
|
|
||||||
dex
|
|
||||||
bpl .2
|
|
||||||
|
|
||||||
ldx #3
|
|
||||||
|
|
||||||
.3 lda IPCFG+S.IPCFG.IP,x
|
|
||||||
sta ARP.REQ.SPA,x
|
|
||||||
sta ARP.REP.SPA,x
|
|
||||||
sta DNS.SOCKET.SA,x
|
|
||||||
dex
|
|
||||||
bpl .3
|
|
||||||
|
|
||||||
CFG.EtcFiles >LDYA L.MSG.CFG
|
|
||||||
>SYSCALL printf
|
>SYSCALL printf
|
||||||
|
|
||||||
jsr CFG.Read.HOSTNAME
|
jsr CFG.Read.HOSTNAME
|
||||||
jsr CFG.Read.Result
|
|
||||||
|
|
||||||
lda IPCFG+S.IPCFG.HOSTNAME
|
lda IPCFG+S.IPCFG.HOSTNAME
|
||||||
bne .4
|
bne .4
|
||||||
|
@ -75,7 +47,7 @@ CFG.EtcFiles >LDYA L.MSG.CFG
|
||||||
ldy #$ff
|
ldy #$ff
|
||||||
|
|
||||||
.2 iny
|
.2 iny
|
||||||
lda DefaultHostName,y
|
lda CFG.DefaultHost,y
|
||||||
sta IPCFG+S.IPCFG.HOSTNAME,y
|
sta IPCFG+S.IPCFG.HOSTNAME,y
|
||||||
bne .2
|
bne .2
|
||||||
|
|
||||||
|
@ -94,137 +66,273 @@ CFG.EtcFiles >LDYA L.MSG.CFG
|
||||||
>SYSCALL printf
|
>SYSCALL printf
|
||||||
|
|
||||||
jsr CFG.Read.TCPIP.CONF
|
jsr CFG.Read.TCPIP.CONF
|
||||||
jsr CFG.Read.Result
|
|
||||||
|
|
||||||
>PUSHW L.HOSTS
|
lda IPCFG+S.IPCFG.IP
|
||||||
|
beq .5
|
||||||
|
|
||||||
|
lda #S.IPCFG.STATUS.OK
|
||||||
|
sta IPCFG+S.IPCFG.STATUS
|
||||||
|
|
||||||
|
.5 >PUSHW L.HOSTS
|
||||||
>LDYA L.MSG.CFG
|
>LDYA L.MSG.CFG
|
||||||
>SYSCALL printf
|
>SYSCALL printf
|
||||||
|
|
||||||
jsr CFG.Read.HOSTS
|
jsr CFG.Read.HOSTS
|
||||||
jsr CFG.Read.Result
|
|
||||||
|
|
||||||
jmp SET.IPCFG.I
|
jsr SET.IPCFG.I
|
||||||
*--------------------------------------
|
|
||||||
CFG.Read.Result bcc .1
|
lda CFG.hBuf
|
||||||
>PUSHA
|
>SYSCALL freemem
|
||||||
>LDYA L.MSG.CFG.KO
|
|
||||||
bra .2
|
.9 rts
|
||||||
.1 >LDYA L.MSG.CFG.OK
|
|
||||||
.2 >SYSCALL printf
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CFG.Read.HOSTNAME
|
CFG.Read.HOSTNAME
|
||||||
>LDYA L.HOSTNAME
|
>LDYA L.HOSTNAME
|
||||||
jsr CFG.Read.LoadFile
|
jsr CFG.Read.Open
|
||||||
|
jsr CFG.Read.Result
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
* read 15 chars MAX, until CR or EOF
|
.1 jsr CFG.Read.GetS
|
||||||
|
bcs .8
|
||||||
ldx #$15
|
|
||||||
lda CFG.FileLen+1
|
|
||||||
bne .1 File is more than 256....?
|
|
||||||
|
|
||||||
ldx CFG.FileLen
|
lda (ZPTmpPtr1)
|
||||||
beq .9 len is 0 !!!
|
beq .1 empty line...
|
||||||
|
cmp #'#
|
||||||
|
beq .1 comment...
|
||||||
|
|
||||||
.1 ldy #0
|
ldy #0
|
||||||
|
|
||||||
.2 lda (ZPTmpPtr1),y
|
.2 lda (ZPTmpPtr1),y
|
||||||
cmp #13
|
|
||||||
beq .8 A CR, end of name
|
|
||||||
|
|
||||||
sta IPCFG+S.IPCFG.HOSTNAME,y
|
sta IPCFG+S.IPCFG.HOSTNAME,y
|
||||||
|
beq .8 end of name
|
||||||
|
|
||||||
iny
|
iny
|
||||||
dex
|
cpy #15
|
||||||
bne .2
|
bne .2
|
||||||
|
|
||||||
.8 lda #0
|
.8 clc
|
||||||
sta IPCFG+S.IPCFG.HOSTNAME,y
|
.HS B0 BCS
|
||||||
|
.9 sec
|
||||||
jsr CFG.Read.CleanUp
|
jmp CFG.Read.Close
|
||||||
clc
|
|
||||||
rts
|
|
||||||
|
|
||||||
.9 jsr CFG.Read.CleanUp
|
|
||||||
sec
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CFG.Read.TCPIP.CONF
|
CFG.Read.TCPIP.CONF
|
||||||
>LDYA L.TCPIP.CONF
|
>LDYA L.TCPIP.CONF
|
||||||
jsr CFG.Read.LoadFile
|
jsr CFG.Read.Open
|
||||||
|
jsr CFG.Read.Result
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
.1 jsr CFG.GetLine
|
.1 jsr CFG.Read.GetS
|
||||||
bcs .8
|
bcs .8
|
||||||
|
|
||||||
jsr CFG.GetKeyword
|
lda (ZPTmpPtr1)
|
||||||
bcs .1
|
beq .1 empty line...
|
||||||
|
cmp #'#
|
||||||
|
beq .1 comment...
|
||||||
|
|
||||||
|
ldy #$ff
|
||||||
|
|
||||||
lda CFG.Keyword
|
.2 iny
|
||||||
bne .3
|
lda (ZPTmpPtr1),y
|
||||||
|
beq .3
|
||||||
ldy UsrBuf256
|
cmp #' '
|
||||||
|
|
||||||
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
|
bne .2
|
||||||
|
|
||||||
|
.3 lda L.CFG.Keywords
|
||||||
|
sta ZPTmpPtr2
|
||||||
|
lda L.CFG.Keywords+1
|
||||||
|
sta ZPTmpPtr2+1
|
||||||
|
|
||||||
|
ldx #0
|
||||||
|
|
||||||
|
.4 phy save keyword len
|
||||||
|
|
||||||
|
tya
|
||||||
|
cmp (ZPTmpPtr2)
|
||||||
|
bne .6
|
||||||
|
|
||||||
|
.5 lda (ZPTmpPtr2),y
|
||||||
|
dey
|
||||||
|
cmp (ZPTmpPtr1),y
|
||||||
|
bne .6
|
||||||
|
tya
|
||||||
|
bne .5
|
||||||
|
|
||||||
|
ply discard keyword len
|
||||||
|
jsr .80
|
||||||
bra .1
|
bra .1
|
||||||
|
|
||||||
.9 jsr CFG.Read.CleanUp
|
.6 lda (ZPTmpPtr2)
|
||||||
sec
|
sec
|
||||||
|
adc ZPTmpPtr2
|
||||||
|
sta ZPTmpPtr2
|
||||||
|
bcc .7
|
||||||
|
inc ZPTmpPtr2+1
|
||||||
|
|
||||||
|
.7 inx
|
||||||
|
inx
|
||||||
|
ply reset keyword len
|
||||||
|
|
||||||
|
lda (ZPTmpPtr2)
|
||||||
|
bne .4
|
||||||
|
|
||||||
|
bra .1
|
||||||
|
|
||||||
|
.8 clc
|
||||||
|
.HS B0 BCS
|
||||||
|
.9 sec
|
||||||
|
jmp CFG.Read.Close
|
||||||
|
|
||||||
|
.80 jmp (J.CFG.Keywords,x)
|
||||||
|
*--------------------------------------
|
||||||
|
CFG.Read.address
|
||||||
|
ldx #S.IPCFG.IP+3
|
||||||
|
bra CFG.Read.IP
|
||||||
|
CFG.Read.netmask
|
||||||
|
ldx #S.IPCFG.MASK+3
|
||||||
|
bra CFG.Read.IP
|
||||||
|
CFG.Read.gateway
|
||||||
|
ldx #S.IPCFG.GW+3
|
||||||
|
bra CFG.Read.IP
|
||||||
|
CFG.Read.nameserver
|
||||||
|
ldx #S.IPCFG.DNS1+3
|
||||||
|
lda IPCFG,x
|
||||||
|
beq CFG.Read.IP
|
||||||
|
ldx #S.IPCFG.DNS2+3
|
||||||
|
|
||||||
|
CFG.Read.IP ldy #3
|
||||||
|
|
||||||
|
.1 txa
|
||||||
|
clc
|
||||||
|
adc L.IPCFG
|
||||||
|
pha
|
||||||
|
lda L.IPCFG+1
|
||||||
|
adc #0
|
||||||
|
>PUSHA @IP[3][2][1][0]
|
||||||
|
pla
|
||||||
|
>PUSHA
|
||||||
|
dex
|
||||||
|
dey
|
||||||
|
bpl .1
|
||||||
|
|
||||||
|
>PUSHBI 8 4 PTRs on stack
|
||||||
|
>PUSHW L.HST.SScanF
|
||||||
|
|
||||||
|
lda (ZPTmpPtr2)
|
||||||
|
sec
|
||||||
|
adc ZPTmpPtr1
|
||||||
|
tay
|
||||||
|
|
||||||
|
lda ZPTmpPtr1+1
|
||||||
|
adc #0
|
||||||
|
|
||||||
|
>SYSCALL SScanF
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.3 jsr CFG.ScanIP
|
CFG.Read.dnsdomain
|
||||||
bcs .1
|
lda (ZPTmpPtr2)
|
||||||
|
sec
|
||||||
|
adc ZPTmpPtr1
|
||||||
|
sta ZPTmpPtr1
|
||||||
|
bcc .1
|
||||||
|
inc ZPTmpPtr1+1
|
||||||
|
|
||||||
|
.1 ldy #$ff
|
||||||
|
|
||||||
ldy CFG.Keyword
|
.2 iny
|
||||||
lda CFG.Keyword.Map,y
|
lda (ZPTmpPtr1),y
|
||||||
tax
|
sta IPCFG+S.IPCFG.DOMAIN,y
|
||||||
ldy #0
|
beq .8
|
||||||
|
cpy #K.DNS.MAXLEN
|
||||||
.4 lda CFG.IP+1,y
|
bne .2
|
||||||
sta IPCFG,x
|
lda #0
|
||||||
inx
|
sta IPCFG+S.IPCFG.DOMAIN,y
|
||||||
iny
|
.8 rts
|
||||||
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
|
CFG.Read.HOSTS >LDYA L.HOSTS
|
||||||
|
jsr CFG.Read.Open
|
||||||
jsr CFG.Read.LoadFile
|
jsr CFG.Read.Result
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
|
|
||||||
.8 jsr CFG.Read.CleanUp
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
|
|
||||||
.9 jsr CFG.Read.CleanUp
|
.1 jsr CFG.Read.GetS
|
||||||
sec
|
bcs .8
|
||||||
|
|
||||||
|
lda (ZPTmpPtr1)
|
||||||
|
beq .1 empty line...
|
||||||
|
cmp #'#
|
||||||
|
beq .1 comment...
|
||||||
|
|
||||||
|
jsr CFG.Read.HOSTS.Scan
|
||||||
|
bcs .1
|
||||||
|
|
||||||
|
cmp #5
|
||||||
|
bcc .1 less than 5 parameters, ignore
|
||||||
|
beq .2 no alias
|
||||||
|
|
||||||
|
>LDYA L.CFG.ALIAS
|
||||||
|
jsr CFG.DNS.Add
|
||||||
|
|
||||||
|
.2 >LDYA L.CFG.HOSTNAME
|
||||||
|
jsr CFG.DNS.Add
|
||||||
|
|
||||||
|
bra .1
|
||||||
|
|
||||||
|
.8 clc
|
||||||
|
.HS B0 BCS
|
||||||
|
.9 sec
|
||||||
|
jmp CFG.Read.Close
|
||||||
|
*--------------------------------------
|
||||||
|
CFG.Read.HOSTS.Scan
|
||||||
|
>PUSHW L.CFG.ALIAS
|
||||||
|
>PUSHW L.CFG.HOSTNAME
|
||||||
|
|
||||||
|
ldx #3
|
||||||
|
|
||||||
|
.2 txa
|
||||||
|
clc
|
||||||
|
adc L.CFG.IP
|
||||||
|
tay
|
||||||
|
lda L.CFG.IP+1
|
||||||
|
adc #0
|
||||||
|
>PUSHYA @IP[3][2][1][0]
|
||||||
|
|
||||||
|
dex
|
||||||
|
bpl .2
|
||||||
|
|
||||||
|
>PUSHBI 12 6 PTRs on stack
|
||||||
|
>PUSHW L.CFG.HOSTS.SScanF
|
||||||
|
>LDYA ZPTmpPtr1
|
||||||
|
|
||||||
|
>SYSCALL SScanF
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CFG.Read.LoadFile
|
CFG.DNS.ADD >STYA ZPTmpPtr1
|
||||||
stz CFG.hCfgFile
|
|
||||||
|
>LDYA L.CFG.IP
|
||||||
|
>STYA ZPTmpPtr2
|
||||||
|
|
||||||
|
>PUSHYA
|
||||||
|
>PUSHW ZPTmpPtr1
|
||||||
|
jsr DNS.Add
|
||||||
|
|
||||||
|
>PUSHW ZPTmpPtr1
|
||||||
|
|
||||||
|
ldy #3
|
||||||
|
|
||||||
|
.1 lda (ZPTmpPtr2),y
|
||||||
|
>PUSHA
|
||||||
|
dey
|
||||||
|
bpl .1
|
||||||
|
|
||||||
|
>LDYA L.MSG.DNS.ADD
|
||||||
|
bcc .8
|
||||||
|
>LDYA L.MSG.DNS.ERR
|
||||||
|
.8 >SYSCALL printf
|
||||||
|
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
CFG.Read.Open stz CFG.hCfgFile
|
||||||
stz CFG.hCfgPath
|
stz CFG.hCfgPath
|
||||||
|
|
||||||
>SYSCALL ExpandStr
|
>SYSCALL ExpandStr
|
||||||
|
@ -233,21 +341,19 @@ CFG.Read.LoadFile
|
||||||
stx CFG.hCfgPath
|
stx CFG.hCfgPath
|
||||||
pha
|
pha
|
||||||
|
|
||||||
>PUSHWI 0 Aux type
|
>PUSHWI 0
|
||||||
>PUSHBI 4 S.FI.T.TXT
|
>PUSHBI 6 S.FI.T.TXT
|
||||||
>PUSHBI SYS.FOpen.R
|
>PUSHBI SYS.FOpen.R
|
||||||
|
|
||||||
pla
|
pla
|
||||||
>SYSCALL LoadFile
|
>SYSCALL fopen
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
stx CFG.hCfgFile
|
sta CFG.hCfgFile
|
||||||
>STYA CFG.FileLen
|
* clc
|
||||||
txa
|
.9 rts
|
||||||
>SYSCALL GetMemPtr
|
|
||||||
>STYA ZPTmpPtr1
|
|
||||||
.9 rts
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CFG.Read.CleanUp
|
CFG.Read.Close php
|
||||||
pha
|
pha
|
||||||
lda CFG.hCfgPath
|
lda CFG.hCfgPath
|
||||||
beq .1
|
beq .1
|
||||||
|
@ -255,168 +361,28 @@ CFG.Read.CleanUp
|
||||||
|
|
||||||
.1 lda CFG.hCfgFile
|
.1 lda CFG.hCfgFile
|
||||||
beq .8
|
beq .8
|
||||||
>SYSCALL FreeMem
|
>SYSCALL fclose
|
||||||
|
|
||||||
.8 pla
|
.8 pla
|
||||||
|
plp
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CFG.GetLine stz UsrBuf256
|
CFG.Read.Result php
|
||||||
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
|
bcc .1
|
||||||
.9 rts
|
>PUSHA
|
||||||
|
>LDYA L.MSG.CFG.KO
|
||||||
|
bra .2
|
||||||
|
|
||||||
.8 clc
|
.1 >LDYA L.MSG.CFG.OK
|
||||||
|
.2 >SYSCALL printf
|
||||||
|
|
||||||
|
plp
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
CFG.Read.GetS >PUSHWI 255
|
||||||
|
>PUSHW ZPTmpPtr1
|
||||||
|
lda CFG.hCfgFile
|
||||||
|
>SYSCALL fgets
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CFG.A2CharAX pha
|
CFG.A2CharAX pha
|
||||||
|
@ -447,7 +413,38 @@ SET.IPCFG >PULLW ZPTmpPtr1 IPCFG
|
||||||
cpy #S.IPCFG
|
cpy #S.IPCFG
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
SET.IPCFG.I lda DCB.NIC+S.DCB.NIC.FLAGS
|
SET.IPCFG.I >LDYA L.DCB.NIC
|
||||||
|
>STYA IOCTL+S.IOCTL.BUFPTR
|
||||||
|
lda #S.IOCTL.STATCODE.GETDCB
|
||||||
|
sta IOCTL+S.IOCTL.STATCODE
|
||||||
|
|
||||||
|
>PUSHW L.IOCTL
|
||||||
|
>PUSHBI IOCTL.STATUS
|
||||||
|
lda IPCFG+S.IPCFG.hFD
|
||||||
|
>SYSCALL IOCTL
|
||||||
|
bcs *
|
||||||
|
|
||||||
|
ldx #5
|
||||||
|
|
||||||
|
.10 lda DCB.NIC+S.DCB.NIC.MAC,x
|
||||||
|
sta IPCFG+S.IPCFG.MAC,x
|
||||||
|
sta ARP.REQ.SRCMAC,x
|
||||||
|
sta ARP.REQ.SHA,x
|
||||||
|
sta ARP.REP.SRCMAC,x
|
||||||
|
sta ARP.REP.SHA,x
|
||||||
|
dex
|
||||||
|
bpl .10
|
||||||
|
|
||||||
|
ldx #3
|
||||||
|
|
||||||
|
.11 lda IPCFG+S.IPCFG.IP,x
|
||||||
|
sta ARP.REQ.SPA,x
|
||||||
|
sta ARP.REP.SPA,x
|
||||||
|
sta DNS.SOCKET.SA,x
|
||||||
|
dex
|
||||||
|
bpl .11
|
||||||
|
|
||||||
|
lda DCB.NIC+S.DCB.NIC.FLAGS
|
||||||
and #S.DCB.NIC.FLAGS.ARPOFFLOAD
|
and #S.DCB.NIC.FLAGS.ARPOFFLOAD
|
||||||
beq .2
|
beq .2
|
||||||
|
|
||||||
|
@ -463,7 +460,7 @@ SET.IPCFG.I lda DCB.NIC+S.DCB.NIC.FLAGS
|
||||||
|
|
||||||
>PUSHW L.IOCTL
|
>PUSHW L.IOCTL
|
||||||
>PUSHBI IOCTL.CONTROL
|
>PUSHBI IOCTL.CONTROL
|
||||||
lda IPCFG+S.IPCFG.HDEV
|
lda IPCFG+S.IPCFG.hFD
|
||||||
>SYSCALL IOCTL
|
>SYSCALL IOCTL
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
|
|
|
@ -131,7 +131,7 @@ DNS.REQUEST lda hDNSSocket1
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
DNS.Add >PULLW ZPPtrDNS Get host string
|
DNS.Add >PULLW ZPPtrDNS Get host string
|
||||||
>PULLW ZPPtrIP Get host IP address
|
>PULLW ZPPtrIP Get host IP address
|
||||||
|
|
||||||
ldy #3
|
ldy #3
|
||||||
|
|
||||||
.1 lda (ZPPtrIP),y
|
.1 lda (ZPPtrIP),y
|
||||||
|
@ -218,13 +218,13 @@ DNS.FIND.BY.NAME
|
||||||
DNS.UPDATE.BY.ID
|
DNS.UPDATE.BY.ID
|
||||||
>LDYA L.DNS.CACHE
|
>LDYA L.DNS.CACHE
|
||||||
>STYA ZPCachePtr
|
>STYA ZPCachePtr
|
||||||
|
|
||||||
ldx #K.DNSCACHE.SIZE
|
ldx #K.DNSCACHE.SIZE
|
||||||
|
|
||||||
.1 lda (ZPCachePtr)
|
.1 lda (ZPCachePtr)
|
||||||
beq .6 empty DNS cache entry?
|
beq .6 empty DNS cache entry?
|
||||||
bmi .6 resolved ?
|
bmi .6 resolved ?
|
||||||
|
|
||||||
ldy #S.DNSCACHE.ID
|
ldy #S.DNSCACHE.ID
|
||||||
lda (ZPCachePtr),y
|
lda (ZPCachePtr),y
|
||||||
cmp DNS.TmpCache+S.DNSCACHE.ID
|
cmp DNS.TmpCache+S.DNSCACHE.ID
|
||||||
|
@ -264,6 +264,7 @@ DNS.FIND.FREE >LDYA L.DNS.CACHE
|
||||||
|
|
||||||
lda #K.DNSCACHE.SIZE
|
lda #K.DNSCACHE.SIZE
|
||||||
sta TmpOffset
|
sta TmpOffset
|
||||||
|
|
||||||
lda #$ff
|
lda #$ff
|
||||||
sta TmpDWord
|
sta TmpDWord
|
||||||
sta TmpDWord+1
|
sta TmpDWord+1
|
||||||
|
@ -359,15 +360,16 @@ DNS.FREE ldy #S.DNSCACHE.hNAME
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DNS.POLL lda hDNSSocket1
|
DNS.POLL lda hDNSSocket1
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
jsr SKT.ReadFrame
|
jsr SKT.ReadFrame
|
||||||
bcs .8
|
bcs .1
|
||||||
|
|
||||||
jsr DNS.DecodeMsg
|
jsr DNS.DecodeMsg
|
||||||
|
|
||||||
lda hDNSSocket2
|
.1 lda hDNSSocket2
|
||||||
beq .8
|
beq .8
|
||||||
jsr SKT.ReadFrame
|
jsr SKT.ReadFrame
|
||||||
bcs .8
|
bcs .8
|
||||||
|
|
||||||
jsr DNS.DecodeMsg
|
jsr DNS.DecodeMsg
|
||||||
|
|
||||||
.8 clc
|
.8 clc
|
||||||
|
@ -376,7 +378,7 @@ DNS.POLL lda hDNSSocket1
|
||||||
DNS.DecodeMsg sta hFrameIn
|
DNS.DecodeMsg sta hFrameIn
|
||||||
>SYSCALL GetMemPtr
|
>SYSCALL GetMemPtr
|
||||||
>STYA ZPFrameInPtr
|
>STYA ZPFrameInPtr
|
||||||
|
|
||||||
ldy #S.DNS.F+1
|
ldy #S.DNS.F+1
|
||||||
lda (ZPFrameInPtr),y
|
lda (ZPFrameInPtr),y
|
||||||
and /S.DNS.F.QR
|
and /S.DNS.F.QR
|
||||||
|
@ -482,7 +484,8 @@ DNS.DecodeMsg sta hFrameIn
|
||||||
jsr DNS.UPDATE.BY.ID
|
jsr DNS.UPDATE.BY.ID
|
||||||
|
|
||||||
.9 lda hFrameIn
|
.9 lda hFrameIn
|
||||||
>SYSCALL FreeMem
|
* >SYSCALL FreeMem
|
||||||
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DNS.CSTR2DNS lda (ZPPtrDNS)
|
DNS.CSTR2DNS lda (ZPPtrDNS)
|
||||||
|
|
|
@ -210,7 +210,7 @@ FRM.SendIP ldx #3 Copy SRC.IP even if IP offload
|
||||||
jsr IP.SetDestMAC
|
jsr IP.SetDestMAC
|
||||||
bcs FRM.Queue
|
bcs FRM.Queue
|
||||||
|
|
||||||
.6 jsr FRM.Send.Out
|
.6 jsr FRM.Send
|
||||||
|
|
||||||
bcs FRM.Queue
|
bcs FRM.Queue
|
||||||
|
|
||||||
|
@ -257,21 +257,21 @@ FRM.Retry ldx FRM.QUEUE.Tail
|
||||||
lda FRM.QUEUE.hMem,x
|
lda FRM.QUEUE.hMem,x
|
||||||
>SYSCALL GetMemPtr
|
>SYSCALL GetMemPtr
|
||||||
>STYA ZPFrameOutPtr
|
>STYA ZPFrameOutPtr
|
||||||
>STYA IOCTL+S.IOCTL.BUFPTR
|
|
||||||
|
|
||||||
ldx FRM.QUEUE.Tail
|
ldx FRM.QUEUE.Tail
|
||||||
|
|
||||||
|
lda FRM.QUEUE.LenL,x
|
||||||
|
sta ZPFrameOutLen
|
||||||
|
lda FRM.QUEUE.LenH,x
|
||||||
|
sta ZPFrameOutLen+1
|
||||||
|
|
||||||
lda FRM.QUEUE.State,x
|
lda FRM.QUEUE.State,x
|
||||||
cmp #ERR.DEV+1 Device error ?
|
cmp #ERR.DEV+1 Device error ?
|
||||||
bcc .1 yes, retry sending...
|
bcc .1 yes, retry sending...
|
||||||
jsr IP.SetDestMAC Err is ARP or higher, retry getting MAC
|
jsr IP.SetDestMAC Err is ARP or higher, retry getting MAC
|
||||||
bcs .2 still error getting dest MAC
|
bcs .2 still error getting dest MAC
|
||||||
|
|
||||||
.1 lda FRM.QUEUE.LenL,x
|
.1 jsr FRM.Send try sending again to DRV
|
||||||
sta IOCTL+S.IOCTL.BYTECNT
|
|
||||||
lda FRM.QUEUE.LenH,x
|
|
||||||
sta IOCTL+S.IOCTL.BYTECNT+1
|
|
||||||
|
|
||||||
jsr FRM.Send.IOCTL try sending again to DRV
|
|
||||||
bcc .3
|
bcc .3
|
||||||
|
|
||||||
.2 ldx FRM.QUEUE.Tail save error...
|
.2 ldx FRM.QUEUE.Tail save error...
|
||||||
|
@ -293,16 +293,11 @@ FRM.Retry ldx FRM.QUEUE.Tail
|
||||||
|
|
||||||
.8 rts
|
.8 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
FRM.Send.Out >LDYA ZPFrameOutPtr
|
FRM.Send >PUSHW ZPFrameOutLen
|
||||||
>STYA IOCTL+S.IOCTL.BUFPTR
|
>PUSHW ZPFrameOutPtr
|
||||||
>LDYA ZPFrameOutLen
|
lda IPCFG+S.IPCFG.hFD
|
||||||
>STYA IOCTL+S.IOCTL.BYTECNT
|
|
||||||
|
|
||||||
FRM.Send.IOCTL >PUSHW L.IOCTL
|
>SYSCALL write
|
||||||
>PUSHBI IOCTL.WRITE
|
|
||||||
lda IPCFG+S.IPCFG.HDEV
|
|
||||||
|
|
||||||
>SYSCALL IOCTL
|
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
|
|
|
@ -69,8 +69,9 @@ ICMP.IN.ECHOREQ ldy #S.IP.DST+3
|
||||||
jmp FRM.SendIP
|
jmp FRM.SendIP
|
||||||
|
|
||||||
ICMP.IN.EXIT lda hFrameIn
|
ICMP.IN.EXIT lda hFrameIn
|
||||||
|
beq .8
|
||||||
>SYSCALL FreeMem
|
>SYSCALL FreeMem
|
||||||
rts
|
.8 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ICMP.IN.ECHOREP jsr IP.FillSKT.TemplateSrcDst
|
ICMP.IN.ECHOREP jsr IP.FillSKT.TemplateSrcDst
|
||||||
|
|
||||||
|
@ -128,12 +129,14 @@ ICMP.IN.ECHOREP jsr IP.FillSKT.TemplateSrcDst
|
||||||
bne .3
|
bne .3
|
||||||
|
|
||||||
.9 lda hFrameIn
|
.9 lda hFrameIn
|
||||||
|
beq .99
|
||||||
>SYSCALL FreeMem
|
>SYSCALL FreeMem
|
||||||
|
.99 clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ICMP.ComputeChecksum
|
ICMP.ComputeChecksum
|
||||||
>PUSHW ZPFrameOutLen
|
>PUSHW ZPFrameOutLen
|
||||||
>PUSHWI S.ICMP.TYPE-2
|
>PUSHWI S.ICMP.TYPE
|
||||||
|
|
||||||
ldy #S.ICMP.CHECKSUM
|
ldy #S.ICMP.CHECKSUM
|
||||||
lda #0
|
lda #0
|
||||||
|
|
|
@ -50,7 +50,7 @@ IP.ComputeChecksum
|
||||||
stz IP.CHECKSUM+2
|
stz IP.CHECKSUM+2
|
||||||
stz IP.CHECKSUM+3
|
stz IP.CHECKSUM+3
|
||||||
|
|
||||||
ldy #2
|
ldy #0
|
||||||
|
|
||||||
.1 clc
|
.1 clc
|
||||||
|
|
||||||
|
|
|
@ -89,10 +89,22 @@ L.MSG.DEV.OK .DA MSG.DEV.OK
|
||||||
L.MSG.CFG .DA MSG.CFG
|
L.MSG.CFG .DA MSG.CFG
|
||||||
L.MSG.CFG.KO .DA MSG.CFG.KO
|
L.MSG.CFG.KO .DA MSG.CFG.KO
|
||||||
L.MSG.CFG.OK .DA MSG.CFG.OK
|
L.MSG.CFG.OK .DA MSG.CFG.OK
|
||||||
|
L.MSG.DNS.ADD .DA MSG.DNS.ADD
|
||||||
|
L.MSG.DNS.ERR .DA MSG.DNS.ERR
|
||||||
L.HOSTNAME .DA HOSTNAME
|
L.HOSTNAME .DA HOSTNAME
|
||||||
L.TCPIP.CONF .DA TCPIP.CONF
|
L.TCPIP.CONF .DA TCPIP.CONF
|
||||||
L.HOSTS .DA HOSTS
|
L.HOSTS .DA HOSTS
|
||||||
L.IPCFG .DA IPCFG
|
L.IPCFG .DA IPCFG
|
||||||
|
L.CFG.IP .DA CFG.IP
|
||||||
|
L.CFG.HOSTNAME .DA CFG.HOSTNAME
|
||||||
|
L.CFG.ALIAS .DA CFG.ALIAS
|
||||||
|
L.CFG.HOSTS.SScanF .DA CFG.HOSTS.SScanF
|
||||||
|
L.CFG.Keywords .DA CFG.Keywords
|
||||||
|
J.CFG.Keywords .DA CFG.Read.address
|
||||||
|
.DA CFG.Read.netmask
|
||||||
|
.DA CFG.Read.gateway
|
||||||
|
.DA CFG.Read.nameserver
|
||||||
|
.DA CFG.Read.dnsdomain
|
||||||
L.ARP.REQ .DA ARP.REQ
|
L.ARP.REQ .DA ARP.REQ
|
||||||
L.ARP.REP .DA ARP.REP
|
L.ARP.REP .DA ARP.REP
|
||||||
L.DNS.SOCKET .DA DNS.SOCKET
|
L.DNS.SOCKET .DA DNS.SOCKET
|
||||||
|
@ -122,9 +134,6 @@ LIB.LOAD ldx RefCount
|
||||||
|
|
||||||
sta FD.SSOCK+S.FD.HANDLER
|
sta FD.SSOCK+S.FD.HANDLER
|
||||||
|
|
||||||
jsr CFG.Init
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
jsr ARP.CLEAR
|
jsr ARP.CLEAR
|
||||||
|
|
||||||
jsr DNS.CLEAR
|
jsr DNS.CLEAR
|
||||||
|
@ -132,9 +141,12 @@ LIB.LOAD ldx RefCount
|
||||||
>LDYAI K.SKTTABLE.SIZE*S.SOCKET
|
>LDYAI K.SKTTABLE.SIZE*S.SOCKET
|
||||||
>SYSCALL getmem0
|
>SYSCALL getmem0
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
stx hSocketTable
|
stx hSocketTable
|
||||||
|
|
||||||
|
jsr CFG.Init
|
||||||
|
bcs .9
|
||||||
|
|
||||||
.8 inc RefCount
|
.8 inc RefCount
|
||||||
|
|
||||||
clc
|
clc
|
||||||
|
@ -143,12 +155,12 @@ LIB.LOAD ldx RefCount
|
||||||
LIB.UNLOAD dec RefCount
|
LIB.UNLOAD dec RefCount
|
||||||
bne LIB.UNLOAD.8
|
bne LIB.UNLOAD.8
|
||||||
|
|
||||||
lda IPCFG+S.IPCFG.HDEV
|
lda IPCFG+S.IPCFG.hFD
|
||||||
beq .1
|
beq .1
|
||||||
|
|
||||||
>PUSHWI 0
|
>PUSHWI 0
|
||||||
>PUSHBI IOCTL.CLOSE
|
>PUSHBI IOCTL.CLOSE
|
||||||
lda IPCFG+S.IPCFG.HDEV
|
lda IPCFG+S.IPCFG.hFD
|
||||||
>SYSCALL IOCTL
|
>SYSCALL IOCTL
|
||||||
|
|
||||||
.1 lda hSocketTable
|
.1 lda hSocketTable
|
||||||
|
@ -161,19 +173,17 @@ LIB.UNLOAD.8 clc
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
POLL >PUSHW L.IOCTL
|
POLL >PUSHW L.IOCTL
|
||||||
>PUSHBI IOCTL.READ
|
>PUSHBI IOCTL.READ
|
||||||
lda IPCFG+S.IPCFG.HDEV
|
lda IPCFG+S.IPCFG.hFD
|
||||||
>SYSCALL IOCTL
|
>SYSCALL IOCTL
|
||||||
bcs .99 No Frame
|
bcs .99 No Frame
|
||||||
|
|
||||||
sta hFrameIn
|
sta hFrameIn
|
||||||
|
ldx #3
|
||||||
|
|
||||||
ldx #S.IOCTL.BUFPTR
|
.10 lda IOCTL+S.IOCTL.BUFPTR,x Get Frame Ptr & Len
|
||||||
|
|
||||||
.10 lda IOCTL,x Get Frame Ptr & Len
|
|
||||||
sta ZPFrameInPtr,x
|
sta ZPFrameInPtr,x
|
||||||
inx
|
dex
|
||||||
cpx S.IOCTL.BUFPTR+4
|
bpl .10
|
||||||
bne .10
|
|
||||||
|
|
||||||
ldy #S.ETH.ETHERTYPE
|
ldy #S.ETH.ETHERTYPE
|
||||||
lda (ZPFrameInPtr),y
|
lda (ZPFrameInPtr),y
|
||||||
|
@ -206,7 +216,8 @@ POLL >PUSHW L.IOCTL
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PULSE and #S.EVT.F.T1SEC
|
PULSE and #S.EVT.F.T1SEC
|
||||||
beq .1
|
beq .1
|
||||||
jsr ARP.EXPIRE
|
|
||||||
|
* jsr ARP.EXPIRE
|
||||||
jsr DNS.EXPIRE
|
jsr DNS.EXPIRE
|
||||||
|
|
||||||
.1 jsr DNS.POLL
|
.1 jsr DNS.POLL
|
||||||
|
@ -247,37 +258,33 @@ GetDynPort inc DYNPORT.LAST
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.END
|
CS.END
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DEVNAME .AZ "ETH1"
|
DEVNAME .AZ "/DEV/ETH1"
|
||||||
MSG.DEV.KO .AZ "TCPIPD:No Device Found, exiting.\r\n"
|
MSG.DEV.KO .AZ "TCPIPD:No Device Found, exiting.\r\n"
|
||||||
MSG.DEV.OK .AZ "TCPIPD:Bound To Device : %s\r\n"
|
MSG.DEV.OK .AZ "TCPIPD:Bound To Device : %s\r\n"
|
||||||
MSG.CFG .AZ "TCPIPD:Reading %s..."
|
MSG.CFG .AZ "TCPIPD:Reading %s..."
|
||||||
MSG.CFG.KO .AZ "Failed!!! [%h]\r\n"
|
MSG.CFG.KO .AZ "Failed!!! [%h]\r\n"
|
||||||
MSG.CFG.OK .AZ "OK.\r\n"
|
MSG.CFG.OK .AZ "OK.\r\n"
|
||||||
|
MSG.DNS.ADD .AZ "Added static host %d.%d.%d.%d %s\r\n"
|
||||||
|
MSG.DNS.ERR .AZ "***ERROR adding static host %d.%d.%d.%d %s\r\n"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
HOSTNAME .AZ "${A2OSX}ETC/HOSTNAME"
|
HOSTNAME .AZ "${A2OSX}ETC/HOSTNAME"
|
||||||
TCPIP.CONF .AZ "${A2OSX}ETC/TCPIP.CONF"
|
TCPIP.CONF .AZ "${A2OSX}ETC/TCPIP.CONF"
|
||||||
HOSTS .AZ "${A2OSX}ETC/HOSTS"
|
HOSTS .AZ "${A2OSX}ETC/HOSTS"
|
||||||
DefaultHostName .AZ "a2osx-XXXX"
|
*--------------------------------------
|
||||||
CFG.Keywords >PSTR "DOMAIN"
|
CFG.DefaultHost .AZ "a2osx-XXXX"
|
||||||
>PSTR "IP"
|
CFG.Keywords >PSTR "address"
|
||||||
>PSTR "MASK"
|
>PSTR "netmask"
|
||||||
>PSTR "GW"
|
>PSTR "gateway"
|
||||||
>PSTR "DNS1"
|
>PSTR "nameserver"
|
||||||
>PSTR "DNS2"
|
>PSTR "dnsdomain"
|
||||||
CFG.Keyword.Map .DA #0 End Of Keyword table and NA Keyword
|
.DA #0
|
||||||
.DA #S.IPCFG.IP
|
CFG.hBuf .BS 1
|
||||||
.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.hCfgPath .BS 1
|
||||||
CFG.FileLen .BS 2
|
CFG.hCfgFile .BS 1
|
||||||
CFG.Keyword .BS 1
|
CFG.IP .BS 4
|
||||||
CFG.StrBuf .BS 4
|
CFG.HostName .BS K.DNS.MAXLEN+1
|
||||||
CFG.HexByte .BS 1
|
CFG.Alias .BS K.DNS.MAXLEN+1
|
||||||
CFG.IP .BS 5
|
CFG.HOSTS.SScanF .AZ "%d.%d.%d.%d %s %s"
|
||||||
UsrBuf256 .BS 256
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
FD.SSOCK .BS 1 S.FD.HANDLER
|
FD.SSOCK .BS 1 S.FD.HANDLER
|
||||||
.DA #S.FD.T.SSOCK
|
.DA #S.FD.T.SSOCK
|
||||||
|
@ -294,7 +301,7 @@ IPCFG .BS S.IPCFG
|
||||||
ARP.CACHE .BS K.ARPCACHE.SIZE*S.ARPCACHE
|
ARP.CACHE .BS K.ARPCACHE.SIZE*S.ARPCACHE
|
||||||
DNS.CACHE .BS K.DNSCACHE.SIZE*S.DNSCACHE
|
DNS.CACHE .BS K.DNSCACHE.SIZE*S.DNSCACHE
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ARP.REQ .DA S.ARP Frame size
|
ARP.REQ .EQ *
|
||||||
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
|
||||||
|
@ -307,7 +314,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 Frame size
|
ARP.REP .EQ *
|
||||||
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
|
||||||
|
|
|
@ -63,7 +63,7 @@ CS.INIT >LDYA L.LIBTCPIP
|
||||||
and #S.IPCFG.STATUS.OK
|
and #S.IPCFG.STATUS.OK
|
||||||
bne .99 Already Configured, exit
|
bne .99 Already Configured, exit
|
||||||
|
|
||||||
ldy #S.IPCFG.HDEV
|
ldy #S.IPCFG.hFD
|
||||||
lda (ZPIPCfgPtr),y
|
lda (ZPIPCfgPtr),y
|
||||||
beq .98
|
beq .98
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
PR#3
|
|
||||||
PREFIX /A2OSX.BUILD
|
|
||||||
NEW
|
NEW
|
||||||
INC 1
|
PREFIX /A2OSX.BUILD
|
||||||
AUTO 6
|
AUTO 4,1
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
.OP 65C02
|
.OP 65C02
|
||||||
.OR $2000
|
.OR $2000
|
||||||
|
|
|
@ -1,8 +1,7 @@
|
||||||
PR#3
|
PR#3
|
||||||
PREFIX /A2OSX.BUILD
|
|
||||||
NEW
|
NEW
|
||||||
INC 1
|
PREFIX /A2OSX.BUILD
|
||||||
AUTO 6
|
AUTO 4,1
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
.OP 65C02
|
.OP 65C02
|
||||||
.OR $2000
|
.OR $2000
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
PR#3
|
NEW
|
||||||
PREFIX /A2OSX.BUILD
|
PREFIX /A2OSX.BUILD
|
||||||
LOMEM $A00
|
AUTO 4,1
|
||||||
INC 1
|
|
||||||
AUTO 6
|
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CSH.OPChars .AS "!~+-*/%=&|^&<>"
|
CSH.OPChars .AS "!~+-*/%=&|^&<>"
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
PR#3
|
NEW
|
||||||
PREFIX /A2OSX.BUILD
|
PREFIX /A2OSX.BUILD
|
||||||
LOMEM $A00
|
AUTO 4,1
|
||||||
INC 1
|
|
||||||
AUTO 6
|
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CSH.hBuf .BS 1
|
CSH.hBuf .BS 1
|
||||||
|
|
|
@ -159,7 +159,7 @@ CS.RUN >LDA.G bReadMode READ Command ?
|
||||||
|
|
||||||
>SYSCALL GetChar
|
>SYSCALL GetChar
|
||||||
bcs .8
|
bcs .8
|
||||||
|
|
||||||
>STZ.G bPause
|
>STZ.G bPause
|
||||||
|
|
||||||
.13 jsr CheckSleep
|
.13 jsr CheckSleep
|
||||||
|
|
|
@ -10,10 +10,6 @@ AUTO 4,1
|
||||||
.INB INC/A2OSX.I
|
.INB INC/A2OSX.I
|
||||||
.INB INC/ETH.I
|
.INB INC/ETH.I
|
||||||
.INB INC/LIBTCPIP.I
|
.INB INC/LIBTCPIP.I
|
||||||
.INB INC/MLI.ERR.I
|
|
||||||
*--------------------------------------
|
|
||||||
ZPIPCfgPtr .EQ ZPBIN
|
|
||||||
ZPDevStatusPtr .EQ ZPBIN+2
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* File Header (16 Bytes)
|
* File Header (16 Bytes)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -25,7 +21,7 @@ CS.START cld
|
||||||
.DA CS.END-CS.START CS
|
.DA CS.END-CS.START CS
|
||||||
.DA DS.END-DS.START DS
|
.DA DS.END-DS.START DS
|
||||||
.DA #64 SS
|
.DA #64 SS
|
||||||
.DA #4 ZP
|
.DA #0 ZP
|
||||||
.DA 0
|
.DA 0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Relocation Table
|
* Relocation Table
|
||||||
|
|
|
@ -383,12 +383,15 @@ CORE.ScrSel and #$0F
|
||||||
|
|
||||||
tax
|
tax
|
||||||
|
|
||||||
lda A2osX.SCRNDEVS-1,x
|
lda A2osX.SCRNDEVS-1,x Get DevID
|
||||||
beq .8 No device claimed this screen
|
beq .8 No device claimed this screen
|
||||||
|
|
||||||
stx A2osX.ASCREEN set active screen
|
stx A2osX.ASCREEN set active screen
|
||||||
|
|
||||||
pha
|
>SYSCALL GetDevByID
|
||||||
|
bcs .8
|
||||||
|
phx
|
||||||
|
|
||||||
>PUSHWI 0 Param
|
>PUSHWI 0 Param
|
||||||
>PUSHBI IOCTL.CONTROL request
|
>PUSHBI IOCTL.CONTROL request
|
||||||
pla ID
|
pla ID
|
||||||
|
|
|
@ -8,15 +8,18 @@ AUTO 4,1
|
||||||
* **Out:**
|
* **Out:**
|
||||||
* CC = OK, CS = ERROR
|
* CC = OK, CS = ERROR
|
||||||
* Y,A = FD
|
* Y,A = FD
|
||||||
|
* X = hFD
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.GetDevByID cmp DevMgr.DevCnt
|
K.GetDevByID cmp DevMgr.DevCnt
|
||||||
bcs K.GetDev.NODEV
|
bcs K.GetDev.NODEV
|
||||||
|
|
||||||
tax
|
tax
|
||||||
|
|
||||||
ldy FD.Table.PTRLO,x
|
lda Dev.Table.hFD,x
|
||||||
lda FD.Table.PTRHI,x
|
pha
|
||||||
|
ldy Dev.Table.pFDLO,x
|
||||||
|
lda Dev.Table.pFDHI,x
|
||||||
|
plx
|
||||||
|
|
||||||
* clc
|
* clc
|
||||||
|
|
||||||
.9 rts CC
|
.9 rts CC
|
||||||
|
@ -25,16 +28,16 @@ K.GetDevByID cmp DevMgr.DevCnt
|
||||||
* **In:**
|
* **In:**
|
||||||
* Y,A = Ptr to device name (C-String)
|
* Y,A = Ptr to device name (C-String)
|
||||||
* **Out:**
|
* **Out:**
|
||||||
* CC = OK, CS = ERROR
|
* CC = OK, CS = ERROR
|
||||||
* X = DEVID
|
* Y,A = FD
|
||||||
* Y,A = FD
|
* X = DevID
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.GetDevByName >STYA ZPPtr1
|
K.GetDevByName >STYA ZPPtr1
|
||||||
|
|
||||||
ldx #0
|
ldx #0
|
||||||
|
|
||||||
.1 ldy FD.Table.PTRLO,x
|
.1 ldy Dev.Table.pFDLO,x
|
||||||
lda FD.Table.PTRHI,x
|
lda Dev.Table.pFDHI,x
|
||||||
|
|
||||||
>STYA ZPPtr2
|
>STYA ZPPtr2
|
||||||
|
|
||||||
|
@ -72,7 +75,7 @@ K.GetDev.9 rts
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # GetDevStatus
|
* # GetDevStatus
|
||||||
* ## C
|
* ## C
|
||||||
* `int getdevstatus ( int devid, S.DIB * dstat );`
|
* `int getdevstatus ( short int hFD, S.DIB * dstat );`
|
||||||
* ## ASM
|
* ## ASM
|
||||||
* **In:**
|
* **In:**
|
||||||
* `>PUSHWI S.DIB`
|
* `>PUSHWI S.DIB`
|
||||||
|
@ -85,7 +88,7 @@ K.GetDevStatus pha
|
||||||
>PULLW K.S.IOCTL+S.IOCTL.BUFPTR
|
>PULLW K.S.IOCTL+S.IOCTL.BUFPTR
|
||||||
|
|
||||||
pla
|
pla
|
||||||
jsr K.GetDevByID
|
jsr K.GetMemPtr
|
||||||
bcs K.GetDev.9
|
bcs K.GetDev.9
|
||||||
|
|
||||||
>STYA pFD
|
>STYA pFD
|
||||||
|
@ -114,6 +117,7 @@ K.GetDevStatus pha
|
||||||
* A = DEVID
|
* A = DEVID
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.MKDev >STYA .1+1
|
K.MKDev >STYA .1+1
|
||||||
|
|
||||||
ldx DevMgr.DevCnt
|
ldx DevMgr.DevCnt
|
||||||
cmp #K.DEV.MAX
|
cmp #K.DEV.MAX
|
||||||
beq .9
|
beq .9
|
||||||
|
@ -124,14 +128,14 @@ K.MKDev >STYA .1+1
|
||||||
phx
|
phx
|
||||||
|
|
||||||
ldx DevMgr.DevCnt
|
ldx DevMgr.DevCnt
|
||||||
sta FD.Table.PTRHI,x
|
sta Dev.Table.pFDHI,x
|
||||||
tya
|
tya
|
||||||
sta FD.Table.PTRLO,x
|
sta Dev.Table.pFDLO,x
|
||||||
pla
|
pla
|
||||||
sta FD.Table.hMem,x
|
sta Dev.Table.hFD,x
|
||||||
|
|
||||||
.10 lda #$ff SELF MODIFIED
|
.10 lda #$ff SELF MODIFIED
|
||||||
sta FD.Table.F,x
|
sta Dev.Table.F,x
|
||||||
|
|
||||||
ldx #S.FD.DEV-1
|
ldx #S.FD.DEV-1
|
||||||
|
|
||||||
|
@ -139,7 +143,8 @@ K.MKDev >STYA .1+1
|
||||||
.2 sta $ffff,x SELF MODIFIED
|
.2 sta $ffff,x SELF MODIFIED
|
||||||
dex
|
dex
|
||||||
bpl .1
|
bpl .1
|
||||||
|
|
||||||
|
lda DevMgr.DevCnt
|
||||||
inc DevMgr.DevCnt
|
inc DevMgr.DevCnt
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
|
|
@ -31,15 +31,25 @@ K.LoadTxtFile pha
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.LoadFile clc
|
K.LoadFile clc
|
||||||
ror FIO.bTXT
|
ror FIO.bTXT
|
||||||
|
|
||||||
jsr K.FOpen
|
jsr K.FOpen
|
||||||
bcs .9
|
bcc .12
|
||||||
sta FIO.hFile
|
rts
|
||||||
|
|
||||||
jsr FIO.GetSize
|
.12 sta FIO.hFile
|
||||||
bcs .99
|
|
||||||
|
|
||||||
>LDYA FIO.FSize
|
pha
|
||||||
|
>PUSHWI K.S.Stat
|
||||||
|
pla
|
||||||
|
|
||||||
|
jsr K.FStat
|
||||||
|
bcs .11
|
||||||
|
|
||||||
|
lda K.S.Stat+S.STAT.SIZE+3
|
||||||
|
ora K.S.Stat+S.STAT.SIZE+2
|
||||||
|
bne .10
|
||||||
|
|
||||||
|
>LDYA K.S.Stat+S.STAT.SIZE
|
||||||
|
|
||||||
bit FIO.bTXT Add 1 to buffer size for ending 0
|
bit FIO.bTXT Add 1 to buffer size for ending 0
|
||||||
bpl .1
|
bpl .1
|
||||||
|
@ -47,15 +57,16 @@ K.LoadFile clc
|
||||||
bne .1
|
bne .1
|
||||||
inc
|
inc
|
||||||
bne .1
|
bne .1
|
||||||
lda #K.E.FTB
|
|
||||||
bra .99
|
.10 lda #K.E.FTB
|
||||||
|
.11 bra .99
|
||||||
|
|
||||||
.1 jsr K.GetMem
|
.1 jsr K.GetMem
|
||||||
bcs .99
|
bcs .99
|
||||||
>STYA FIO.Mem
|
>STYA FIO.Mem
|
||||||
stx .8+1
|
stx .8+1
|
||||||
|
|
||||||
>PUSHW FIO.FSize
|
>PUSHW K.S.Stat+S.STAT.SIZE
|
||||||
>PUSHW FIO.Mem
|
>PUSHW FIO.Mem
|
||||||
lda FIO.hFile
|
lda FIO.hFile
|
||||||
jsr K.FRead
|
jsr K.FRead
|
||||||
|
@ -97,45 +108,9 @@ K.LoadFile clc
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
FIO.GetSize stz FIO.FPos
|
|
||||||
stz FIO.FPos+1
|
|
||||||
stz FIO.FPos+2
|
|
||||||
stz FIO.FPos+3
|
|
||||||
|
|
||||||
>PUSHWI FIO.FPos
|
|
||||||
>PUSHBI SYS.FSeek.END
|
|
||||||
>PUSHB FIO.hFile
|
|
||||||
jsr K.FSeek
|
|
||||||
bcs .99
|
|
||||||
|
|
||||||
>PUSHWI FIO.FPos
|
|
||||||
>PUSHB FIO.hFile
|
|
||||||
jsr K.FTell
|
|
||||||
bcs .99
|
|
||||||
|
|
||||||
lda FIO.FPos+2
|
|
||||||
ora FIO.FPos+3
|
|
||||||
bne .98 too big!
|
|
||||||
|
|
||||||
>LDYA FIO.FPos
|
|
||||||
>STYA FIO.FSize
|
|
||||||
|
|
||||||
stz FIO.FPos
|
|
||||||
stz FIO.FPos+1
|
|
||||||
|
|
||||||
>PUSHWI FIO.FPos
|
|
||||||
>PUSHBI SYS.FSeek.SET
|
|
||||||
>PUSHB FIO.hFile
|
|
||||||
jmp K.FSeek
|
|
||||||
|
|
||||||
.98 lda #K.E.FTB
|
|
||||||
.99 rts
|
|
||||||
*--------------------------------------
|
|
||||||
FIO.bTXT .BS 1
|
FIO.bTXT .BS 1
|
||||||
FIO.hFile .BS 1
|
FIO.hFile .BS 1
|
||||||
FIO.FPos .BS 4
|
|
||||||
FIO.Mem .BS 2
|
FIO.Mem .BS 2
|
||||||
FIO.FSize .BS 2
|
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # ChTyp
|
* # ChTyp
|
||||||
* **In:**
|
* **In:**
|
||||||
|
|
|
@ -18,7 +18,7 @@ K.Open jsr PFT.CheckPathYA check if not /mnt
|
||||||
|
|
||||||
K.Open.I jsr IO.SetMLIPathYA local pathname...
|
K.Open.I jsr IO.SetMLIPathYA local pathname...
|
||||||
|
|
||||||
ldx #5 /DEV/
|
ldx #5 $/DEV/
|
||||||
cpx K.MLI.PATH
|
cpx K.MLI.PATH
|
||||||
bcs K.Open.REG
|
bcs K.Open.REG
|
||||||
|
|
||||||
|
@ -28,44 +28,47 @@ K.Open.I jsr IO.SetMLIPathYA local pathname...
|
||||||
dex
|
dex
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
K.Open.DEV ldy #K.MLI.PATH+6 skip L/DEV/
|
K.Open.DEV >LDYAI K.MLI.PATH+6 skip $/DEV/
|
||||||
lda /K.MLI.PATH+6
|
|
||||||
|
|
||||||
jsr K.GetDevByName
|
jsr K.GetDevByName
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>STYA pFD
|
>STYA pFD
|
||||||
stx .8+1 DEVID
|
stx .1+1 DEVID
|
||||||
|
|
||||||
ldy #S.FD.DEV.DRVPTR
|
ldy #S.FD.DEV.DRVPTR
|
||||||
lda (pFD),y
|
lda (pFD),y
|
||||||
sta .1+1
|
sta .2+1
|
||||||
iny
|
iny
|
||||||
lda (pFD),y
|
lda (pFD),y
|
||||||
sta .1+2
|
sta .2+2
|
||||||
|
|
||||||
>PULLA get flags
|
>PULLA get flags
|
||||||
lda .8+1 pass A=DEVID To Driver
|
|
||||||
|
.1 lda #$ff SELF MODIFIED pass A=DEVID To Driver
|
||||||
ldx #IOCTL.OPEN
|
ldx #IOCTL.OPEN
|
||||||
.1 jsr $ffff SELF MODIFIED
|
.2 jsr $ffff SELF MODIFIED pDRV
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
.8 lda #$ff SELF MODIFIED
|
ldx .1+1
|
||||||
|
lda Dev.Table.hFD,x
|
||||||
.99 rts
|
.99 rts
|
||||||
|
|
||||||
.9 >RET 1 discard flags
|
.9 >RET 1 discard flags
|
||||||
|
|
||||||
K.Open.REG >LDYAI K.MLI.PATH
|
K.Open.REG >LDYAI K.MLI.PATH
|
||||||
>STYA K.MLI.PARAMS+1
|
>STYA K.MLI.PARAMS+1
|
||||||
|
bra *
|
||||||
lda (pStack)
|
lda (pStack)
|
||||||
* sta K.S.IOCTL
|
* sta K.S.IOCTL
|
||||||
|
|
||||||
>RET 1
|
>RET 1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* int close(int fd);
|
* int close(short int hFD);
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
K.Close jsr K.GetMemPtr
|
K.Close jsr K.GetMemPtr
|
||||||
|
bcs .9
|
||||||
|
|
||||||
>STYA pFD
|
>STYA pFD
|
||||||
|
|
||||||
lda (pFD) #S.FD.T
|
lda (pFD) #S.FD.T
|
||||||
|
@ -80,6 +83,10 @@ K.Close jsr K.GetMemPtr
|
||||||
.DA STDIO.IOERR DSOCK
|
.DA STDIO.IOERR DSOCK
|
||||||
.DA IO.CLOSE.SSOCK
|
.DA IO.CLOSE.SSOCK
|
||||||
.DA IO.CLOSE.FIFO
|
.DA IO.CLOSE.FIFO
|
||||||
|
|
||||||
|
.9 lda #MLI.E.NODEV
|
||||||
|
sec
|
||||||
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
IO.CLOSE.REG
|
IO.CLOSE.REG
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -94,9 +101,11 @@ IO.CLOSE.FIFO clc
|
||||||
* ## C
|
* ## C
|
||||||
* `int read(int fd, void *buf, size_t count);`
|
* `int read(int fd, void *buf, size_t count);`
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.Read jsr IO.SELECT
|
K.Read jsr K.GetMemPtr
|
||||||
bcs K.Read.9
|
bcs K.Write.9
|
||||||
|
|
||||||
|
>STYA pFD
|
||||||
|
|
||||||
>PULLW K.S.IOCTL+S.IOCTL.BUFPTR
|
>PULLW K.S.IOCTL+S.IOCTL.BUFPTR
|
||||||
>PULLW K.S.IOCTL+S.IOCTL.BYTECNT
|
>PULLW K.S.IOCTL+S.IOCTL.BYTECNT
|
||||||
|
|
||||||
|
@ -112,14 +121,14 @@ IO.Read.I lda (pFD) #S.FD.T
|
||||||
.DA STDIO.IOERR DSOCK
|
.DA STDIO.IOERR DSOCK
|
||||||
.DA IO.READ.SSOCK
|
.DA IO.READ.SSOCK
|
||||||
.DA IO.READ.FIFO
|
.DA IO.READ.FIFO
|
||||||
|
|
||||||
K.Read.9 >RET 4
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* int write(int fd, const void *buf, size_t count);
|
* int write(int fd, const void *buf, size_t count);
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
K.Write jsr IO.SELECT
|
K.Write jsr K.GetMemPtr
|
||||||
bcs K.Write.9
|
bcs K.Write.9
|
||||||
|
|
||||||
|
>STYA pFD
|
||||||
|
|
||||||
>PULLW K.S.IOCTL+S.IOCTL.BUFPTR
|
>PULLW K.S.IOCTL+S.IOCTL.BUFPTR
|
||||||
>PULLW K.S.IOCTL+S.IOCTL.BYTECNT
|
>PULLW K.S.IOCTL+S.IOCTL.BYTECNT
|
||||||
|
|
||||||
|
@ -136,20 +145,24 @@ IO.Write.I lda (pFD) #S.FD.T
|
||||||
.DA IO.WRITE.SSOCK
|
.DA IO.WRITE.SSOCK
|
||||||
.DA IO.WRITE.FIFO
|
.DA IO.WRITE.FIFO
|
||||||
|
|
||||||
K.Write.9 >RET 4
|
K.Write.9 lda #MLI.E.NODEV
|
||||||
|
>RET 4
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
IO.READ.REG clc
|
IO.READ.REG ldx #MLIREAD
|
||||||
.HS B0 BCS
|
.HS 2C BIT ABS
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
IO.WRITE.REG sec
|
IO.WRITE.REG ldx #MLIWRITE
|
||||||
>PUSHW K.S.IOCTL+S.IOCTL.BYTECNT
|
|
||||||
>PUSHW K.S.IOCTL+S.IOCTL.BUFPTR
|
|
||||||
ldy #S.FD.REG.REF
|
ldy #S.FD.REG.REF
|
||||||
lda (pFD),y
|
lda (pFD),y
|
||||||
bcs .1
|
sta K.MLI.PARAMS+1
|
||||||
|
>LDYA K.S.IOCTL+S.IOCTL.BUFPTR
|
||||||
jmp K.FRead
|
>STYA K.MLI.PARAMS+2
|
||||||
.1 jmp K.FWrite
|
>LDYA K.S.IOCTL+S.IOCTL.BYTECNT
|
||||||
|
>STYA K.MLI.PARAMS+4
|
||||||
|
|
||||||
|
lda #4 Param Count = 4 for MLIREAD & MLIWRITE
|
||||||
|
jsr GP.MLICall
|
||||||
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
IO.READ.CDEV ldx #IOCTL.READ
|
IO.READ.CDEV ldx #IOCTL.READ
|
||||||
.HS 2C BIT ABS
|
.HS 2C BIT ABS
|
||||||
|
@ -223,19 +236,21 @@ IO.WRITE.FIFO ldy #S.FD.FIFO.S
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # IOCTL
|
* # IOCTL
|
||||||
* ## C
|
* ## C
|
||||||
* `int ioctl(int devid, int request, void * param );`
|
* `int ioctl(short int hFD, int request, void * param );`
|
||||||
* ## ASM
|
* ## ASM
|
||||||
* **In:**
|
* **In:**
|
||||||
* `PUSHWI param`
|
* `PUSHWI param`
|
||||||
* `PUSHBI request`
|
* `PUSHBI request`
|
||||||
* `lda devid`
|
* `lda hFD`
|
||||||
* `>SYSCALL IOCTL`
|
* `>SYSCALL IOCTL`
|
||||||
* **Out:**
|
* **Out:**
|
||||||
* Y,A = ...
|
* Y,A = ...
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.IOCTL jsr IO.SELECT
|
K.IOCTL jsr K.GetMemPtr
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
|
>STYA pFD
|
||||||
|
|
||||||
ldy #S.FD.DEV.DRVPTR
|
ldy #S.FD.DEV.DRVPTR
|
||||||
lda (pFD),y
|
lda (pFD),y
|
||||||
sta .8+1
|
sta .8+1
|
||||||
|
@ -248,28 +263,19 @@ K.IOCTL jsr IO.SELECT
|
||||||
|
|
||||||
>PULLYA param
|
>PULLYA param
|
||||||
|
|
||||||
|
|
||||||
.8 jmp $ffff SELF MODIFIED x = op
|
.8 jmp $ffff SELF MODIFIED x = op
|
||||||
|
|
||||||
.9 >RET 3
|
.9 lda #MLI.E.NODEV
|
||||||
|
>RET 3
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # pipe
|
* # pipe
|
||||||
* ## C
|
* ## C
|
||||||
* `int pipe(int pipefd[2]);`
|
* `int pipe(int pipefd[2]);`
|
||||||
* ## ASM
|
* ## ASM
|
||||||
* **In:**
|
* **In:**
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
IO.SELECT cmp DevMgr.DevCnt
|
K.Pipe
|
||||||
bcs .9
|
.9 sec
|
||||||
|
|
||||||
tax
|
|
||||||
|
|
||||||
ldy FD.Table.PTRLO,x
|
|
||||||
lda FD.Table.PTRHI,x
|
|
||||||
>STYA pFD
|
|
||||||
rts
|
|
||||||
|
|
||||||
.9 lda #MLI.E.NODEV
|
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
IO.PullMLIPath >PULLYA
|
IO.PullMLIPath >PULLYA
|
||||||
|
|
|
@ -190,13 +190,13 @@ K.IrqH.Switch inc IRQ.Tick
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
K.IrqH.DEV ldx #0
|
K.IrqH.DEV ldx #0
|
||||||
|
|
||||||
.1 lda FD.Table.F,x
|
.1 lda Dev.Table.F,x
|
||||||
and #S.DIB.S.IRQ
|
and #S.DIB.S.IRQ
|
||||||
beq .2
|
beq .2
|
||||||
|
|
||||||
lda FD.Table.PTRLO,x
|
lda Dev.Table.pFDLO,x
|
||||||
sta $fe
|
sta $fe
|
||||||
lda FD.Table.PTRHI,x
|
lda Dev.Table.pFDHI,x
|
||||||
sta $ff
|
sta $ff
|
||||||
|
|
||||||
ldy #S.FD.DEV.DRVPTR
|
ldy #S.FD.DEV.DRVPTR
|
||||||
|
|
|
@ -12,7 +12,7 @@ K.SYSCALL.JMP .DA 0 $00
|
||||||
.DA K.MKDir
|
.DA K.MKDir
|
||||||
.DA K.MKNod
|
.DA K.MKNod
|
||||||
.DA K.MKFIFO
|
.DA K.MKFIFO
|
||||||
.DA 0
|
.DA K.FStat
|
||||||
.DA 0
|
.DA 0
|
||||||
|
|
||||||
.DA K.OpenDir $10
|
.DA K.OpenDir $10
|
||||||
|
|
|
@ -4,16 +4,51 @@ AUTO 4,1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* # FStat
|
* # FStat
|
||||||
* Return information about a hfile
|
* Return information about a hfile
|
||||||
* ## ASM
|
* ## C
|
||||||
* `int fstat(int fd, struct stat *statbuf);`
|
* `int fstat(short int hFILE, struct stat *statbuf);`
|
||||||
* ## ASM
|
* ## ASM
|
||||||
* **In:**
|
* **In:**
|
||||||
* PUSHW = PTR to S.STAT buffer
|
* `>PUSHW statbuf`
|
||||||
* PUSHB = hFile
|
* `lda hFILE`
|
||||||
|
* `>SYSCALL fstat`
|
||||||
* **Out:**
|
* **Out:**
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
*jsr PFT.CheckNodeSTK
|
K.FStat jsr PFT.CheckNodeA
|
||||||
|
jsr K.GetMemPtr
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
>STYA pFD
|
||||||
|
|
||||||
|
lda #S.FD.REG
|
||||||
|
clc
|
||||||
|
adc pFD
|
||||||
|
tay
|
||||||
|
lda /S.FD.REG
|
||||||
|
adc pFD+1
|
||||||
|
jsr K.Stat.I
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
ldy #S.FD.DIR.REF
|
||||||
|
lda (pFD),y
|
||||||
|
sta K.MLI.PARAMS+1
|
||||||
|
>MLICALL MLIGETEOF
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
ldy #S.STAT.SIZE+3
|
||||||
|
lda #0
|
||||||
|
jsr K.Stat.StoreY
|
||||||
|
|
||||||
|
ldx #2
|
||||||
|
|
||||||
|
.1 dey
|
||||||
|
lda K.MLI.PARAMS+2,x
|
||||||
|
jsr K.Stat.StoreY
|
||||||
|
dex
|
||||||
|
bpl .1
|
||||||
|
|
||||||
|
.99 rts
|
||||||
|
|
||||||
|
.9 >RET 2
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # Stat
|
* # Stat
|
||||||
* Return information about a file
|
* Return information about a file
|
||||||
|
@ -27,7 +62,7 @@ AUTO 4,1
|
||||||
* **Out:**
|
* **Out:**
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.Stat jsr PFT.CheckPathYA
|
K.Stat jsr PFT.CheckPathYA
|
||||||
jsr STDIO.SetMLIPathYA
|
K.Stat.I jsr STDIO.SetMLIPathYA
|
||||||
|
|
||||||
>PULLW K.Stat.StoreY+1
|
>PULLW K.Stat.StoreY+1
|
||||||
|
|
||||||
|
@ -132,8 +167,8 @@ K.MKDir jsr PFT.CheckPathYA
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.MkNod jsr K.GetDevByName Y,A=NAME
|
K.MkNod jsr K.GetDevByName Y,A=NAME
|
||||||
bcs .9
|
bcs .9
|
||||||
>STYA .1+1
|
>STYA .1+1 pFD
|
||||||
stx .2+1
|
stx .2+1 devID
|
||||||
|
|
||||||
ldy #S.FD.T
|
ldy #S.FD.T
|
||||||
lda (pFD),y
|
lda (pFD),y
|
||||||
|
@ -194,15 +229,15 @@ K.MKFIFO >LDYAI 256
|
||||||
|
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>STYA ZPPtr1
|
>STYA pFD
|
||||||
|
|
||||||
ldy #S.FD.T
|
ldy #S.FD.T
|
||||||
lda #S.FD.T.FIFO
|
lda #S.FD.T.FIFO
|
||||||
sta (ZPPtr1),y
|
sta (pFD),y
|
||||||
|
|
||||||
iny S.FD.FIFO.hMem
|
iny S.FD.FIFO.hMem
|
||||||
.1 lda #$ff Self Modified
|
.1 lda #$ff Self Modified
|
||||||
sta (ZPPtr1),y
|
sta (pFD),y
|
||||||
txa
|
txa
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
|
@ -5,7 +5,7 @@ AUTO 4,1
|
||||||
* # FPutC
|
* # FPutC
|
||||||
* Print A (char) to hFILE
|
* Print A (char) to hFILE
|
||||||
* ## C
|
* ## C
|
||||||
* `int fputc ( int character, hFILE stream );`
|
* `int fputc ( hFILE stream , int character );`
|
||||||
* ## ASM
|
* ## ASM
|
||||||
* **In:**
|
* **In:**
|
||||||
* A : character
|
* A : character
|
||||||
|
@ -32,7 +32,10 @@ K.PutChar sta K.IOBuf
|
||||||
ldy #S.PS.hStdOut
|
ldy #S.PS.hStdOut
|
||||||
lda (pPs),y
|
lda (pPs),y
|
||||||
|
|
||||||
K.PutChar.1 jsr IO.SELECT
|
K.PutChar.1 jsr K.GetMemPtr
|
||||||
|
bcs K.PutS.9
|
||||||
|
|
||||||
|
>STYA pFD
|
||||||
|
|
||||||
ldx #1
|
ldx #1
|
||||||
|
|
||||||
|
@ -59,7 +62,7 @@ K.PutS >STYA K.S.IOCTL+S.IOCTL.BUFPTR
|
||||||
ldy #S.PS.hStdOut
|
ldy #S.PS.hStdOut
|
||||||
lda (pPs),y
|
lda (pPs),y
|
||||||
jsr K.FPutS.I
|
jsr K.FPutS.I
|
||||||
bcs .9
|
bcs K.PutS.9
|
||||||
|
|
||||||
lda #13
|
lda #13
|
||||||
sta K.IOBuf
|
sta K.IOBuf
|
||||||
|
@ -67,7 +70,7 @@ K.PutS >STYA K.S.IOCTL+S.IOCTL.BUFPTR
|
||||||
sta K.IOBuf+1
|
sta K.IOBuf+1
|
||||||
ldx #2
|
ldx #2
|
||||||
bra K.PutChar.X
|
bra K.PutChar.X
|
||||||
.9 rts
|
K.PutS.9 rts
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # FPutS
|
* # FPutS
|
||||||
* Write Str to FILE
|
* Write Str to FILE
|
||||||
|
@ -92,8 +95,10 @@ K.FPutS pha
|
||||||
|
|
||||||
pla
|
pla
|
||||||
|
|
||||||
K.FPutS.I jsr IO.SELECT
|
K.FPutS.I jsr K.GetMemPtr
|
||||||
bcs *
|
bcs K.PutS.9
|
||||||
|
|
||||||
|
>STYA pFD
|
||||||
|
|
||||||
ldy #0
|
ldy #0
|
||||||
ldx #0
|
ldx #0
|
||||||
|
@ -178,14 +183,20 @@ K.SPrintF >STYA pIOBuf Out Buffer
|
||||||
>PULLW ZPPtr1 format
|
>PULLW ZPPtr1 format
|
||||||
bra K.PrintF.1
|
bra K.PrintF.1
|
||||||
|
|
||||||
K.FPrintF jsr IO.SELECT A = hFILE
|
K.FPrintF jsr K.GetMemPtr A = hFILE
|
||||||
|
|
||||||
|
|
||||||
|
>STYA pFD
|
||||||
|
|
||||||
>PULLW ZPPtr1 format
|
>PULLW ZPPtr1 format
|
||||||
bra K.PrintF.0
|
bra K.PrintF.0
|
||||||
|
|
||||||
K.PrintF >STYA ZPPtr1 format
|
K.PrintF >STYA ZPPtr1 format
|
||||||
ldy #S.PS.hStdOut
|
ldy #S.PS.hStdOut
|
||||||
lda (pPs),y
|
lda (pPs),y
|
||||||
jsr IO.SELECT
|
|
||||||
|
jsr K.GetMemPtr
|
||||||
|
>STYA pFD
|
||||||
|
|
||||||
K.PrintF.0 >LDYAI K.IOBuf
|
K.PrintF.0 >LDYAI K.IOBuf
|
||||||
>STYA pIOBuf
|
>STYA pIOBuf
|
||||||
|
@ -610,7 +621,10 @@ PrintF.Flush jmp IO.Write.I
|
||||||
* Y,A: s
|
* Y,A: s
|
||||||
* CC = success
|
* CC = success
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.FGetS pha
|
K.FGetS pha save hFILE
|
||||||
|
|
||||||
|
>PULLW ZPPtr1 s
|
||||||
|
|
||||||
>PULLA
|
>PULLA
|
||||||
sec
|
sec
|
||||||
sbc #2
|
sbc #2
|
||||||
|
@ -621,10 +635,11 @@ K.FGetS pha
|
||||||
eor #$ff
|
eor #$ff
|
||||||
sta ZPPtr2+1 !n
|
sta ZPPtr2+1 !n
|
||||||
|
|
||||||
>PULLW ZPPtr1 s
|
|
||||||
pla
|
pla
|
||||||
jsr IO.SELECT
|
jsr K.GetMemPtr
|
||||||
bcs .9
|
bcs .99
|
||||||
|
|
||||||
|
>STYA pFD
|
||||||
|
|
||||||
jsr K.GetC.I
|
jsr K.GetC.I
|
||||||
bcs .9
|
bcs .9
|
||||||
|
@ -652,7 +667,7 @@ K.FGetS pha
|
||||||
lda #0
|
lda #0
|
||||||
sta (ZPPtr1)
|
sta (ZPPtr1)
|
||||||
pla
|
pla
|
||||||
rts
|
.99 rts
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # GetChar
|
* # GetChar
|
||||||
* Get char from StdIn
|
* Get char from StdIn
|
||||||
|
@ -676,9 +691,11 @@ K.GetChar ldy #S.PS.hStdIn
|
||||||
* CC = success
|
* CC = success
|
||||||
* A = char
|
* A = char
|
||||||
*\-----------a---------------------------
|
*\-----------a---------------------------
|
||||||
K.GetC jsr IO.SELECT
|
K.GetC jsr K.GetMemPtr
|
||||||
bcs K.GetC.9
|
bcs K.GetC.9
|
||||||
|
|
||||||
|
>STYA pFD
|
||||||
|
|
||||||
K.GetC.I >LDYAI K.IOBuf
|
K.GetC.I >LDYAI K.IOBuf
|
||||||
>STYA K.S.IOCTL+S.IOCTL.BUFPTR
|
>STYA K.S.IOCTL+S.IOCTL.BUFPTR
|
||||||
lda #1
|
lda #1
|
||||||
|
@ -705,7 +722,10 @@ BCDBUF .EQ ARG
|
||||||
* `int sscanf ( const char * s, const char * format, ... );`
|
* `int sscanf ( const char * s, const char * format, ... );`
|
||||||
* ## ASM
|
* ## ASM
|
||||||
* **In:**
|
* **In:**
|
||||||
* `>PUSHBI Argument Byte count`
|
* `>PUSHW ptr`
|
||||||
|
* `...`
|
||||||
|
* `>PUSHBI bytecount`
|
||||||
|
* `>PUSHWI format`
|
||||||
* + %i : short int
|
* + %i : short int
|
||||||
* + %d : byte
|
* + %d : byte
|
||||||
* + %I : int
|
* + %I : int
|
||||||
|
@ -715,19 +735,17 @@ BCDBUF .EQ ARG
|
||||||
* + %h : HEX byte
|
* + %h : HEX byte
|
||||||
* + %H : HEX word
|
* + %H : HEX word
|
||||||
* + %s : string
|
* + %s : string
|
||||||
* `>PUSHW ptr`
|
* TODO : %10s
|
||||||
* `...`
|
|
||||||
* `>PUSHBI bytecount`
|
|
||||||
* `>PUSHWI format`
|
|
||||||
* `>LDYA s`
|
* `>LDYA s`
|
||||||
* **Out:**
|
* **Out:**
|
||||||
* Y,A = Number of arguments filled.
|
* A = Number of arguments filled.
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.SScanF >STYA ZPPtr2 String to Scan
|
K.SScanF >STYA ZPPtr2 String to Scan
|
||||||
>PULLW ZPPtr1 format
|
>PULLW ZPPtr1 format
|
||||||
|
|
||||||
stz .5+1
|
stz .5+1 reset LStack Ptr
|
||||||
|
stz .80+1 rest Arg processed
|
||||||
|
|
||||||
.1 lda (ZPPtr1) End Of format?
|
.1 lda (ZPPtr1) End Of format?
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
|
@ -735,9 +753,12 @@ K.SScanF >STYA ZPPtr2 String to Scan
|
||||||
bne .11
|
bne .11
|
||||||
inc ZPPtr1+1
|
inc ZPPtr1+1
|
||||||
|
|
||||||
.11 cmp #'%' Escape?
|
.11 cmp #'%' Escape ?
|
||||||
beq .2
|
beq .2
|
||||||
|
|
||||||
|
cmp #' ' Space ?
|
||||||
|
beq .12
|
||||||
|
|
||||||
cmp (ZPPtr2) Same char in string?
|
cmp (ZPPtr2) Same char in string?
|
||||||
bne .9
|
bne .9
|
||||||
|
|
||||||
|
@ -746,6 +767,14 @@ K.SScanF >STYA ZPPtr2 String to Scan
|
||||||
inc ZPPtr2+1
|
inc ZPPtr2+1
|
||||||
bra .1
|
bra .1
|
||||||
|
|
||||||
|
.12 inc ZPPtr2 Space....
|
||||||
|
bne .14
|
||||||
|
inc ZPPtr2+1
|
||||||
|
|
||||||
|
.14 cmp (ZPPtr2) another one ?
|
||||||
|
beq .12
|
||||||
|
bne .1
|
||||||
|
|
||||||
.2 lda (ZPPtr1) Get specifier after %
|
.2 lda (ZPPtr1) Get specifier after %
|
||||||
beq .9 unexpected End of format after "%" ?
|
beq .9 unexpected End of format after "%" ?
|
||||||
|
|
||||||
|
@ -775,9 +804,11 @@ K.SScanF >STYA ZPPtr2 String to Scan
|
||||||
sec ByteCnt byte
|
sec ByteCnt byte
|
||||||
adc (pStack) ... ByteCnt
|
adc (pStack) ... ByteCnt
|
||||||
sta pStack CC
|
sta pStack CC
|
||||||
|
|
||||||
|
.80 lda #$ff SELF MODIFIED Arg porcessed
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.5 lda #$FF SELF MODIFIED
|
.5 lda #$FF SELF MODIFIED LStack Ptr
|
||||||
cmp (pStack)
|
cmp (pStack)
|
||||||
beq .99 CS
|
beq .99 CS
|
||||||
|
|
||||||
|
@ -790,7 +821,8 @@ K.SScanF >STYA ZPPtr2 String to Scan
|
||||||
lda (pStack),y
|
lda (pStack),y
|
||||||
sta ZPPtr3+1 get VAR Ptr
|
sta ZPPtr3+1 get VAR Ptr
|
||||||
sty .5+1
|
sty .5+1
|
||||||
|
|
||||||
|
inc .80+1 parsed one more arg!
|
||||||
jmp (K.SScanFJMP,x)
|
jmp (K.SScanFJMP,x)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
K.SScanFTBL .DA #'i,#1,#'d,#1,#'I,#2,#'D,#2,#'l,#4,#'u,#4,#'h,#1,#'H,#2,#'s,#2
|
K.SScanFTBL .DA #'i,#1,#'d,#1,#'I,#2,#'D,#2,#'l,#4,#'u,#4,#'h,#1,#'H,#2,#'s,#2
|
||||||
|
@ -838,15 +870,16 @@ K.SScanF.S ldy #$ff
|
||||||
lda (ZPPtr2),y
|
lda (ZPPtr2),y
|
||||||
sta (ZPPtr3),y
|
sta (ZPPtr3),y
|
||||||
beq K.SScanF.Fwd
|
beq K.SScanF.Fwd
|
||||||
cmp #' '
|
eor #' '
|
||||||
bne .1
|
bne .1
|
||||||
iny
|
sta (ZPPtr3),y
|
||||||
|
|
||||||
K.SScanF.Fwd tya Y=char count parsed
|
K.SScanF.Fwd tya Y=char count parsed
|
||||||
clc
|
clc
|
||||||
adc ZPPtr2
|
adc ZPPtr2
|
||||||
sta ZPPtr2
|
sta ZPPtr2
|
||||||
bcc .8
|
bcc .8
|
||||||
|
clc
|
||||||
inc ZPPtr2+1
|
inc ZPPtr2+1
|
||||||
.8 rts
|
.8 rts
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
|
@ -910,16 +943,34 @@ K.FOpen jsr PFT.CheckPathYA
|
||||||
bcc K.FOpen.10
|
bcc K.FOpen.10
|
||||||
K.FOpen.9 rts
|
K.FOpen.9 rts
|
||||||
|
|
||||||
K.FOpen.10 >LDYAI S.FD.REG
|
K.FOpen.10 lda #S.FD.REG
|
||||||
|
sec
|
||||||
|
adc K.MLI.PATH
|
||||||
|
tay
|
||||||
|
lda #0
|
||||||
|
|
||||||
jsr K.GetMem0
|
jsr K.GetMem0
|
||||||
bcs K.FOpen.9
|
bcs K.FOpen.9
|
||||||
|
|
||||||
>STYA ZPPtr1
|
>STYA pFD
|
||||||
stx .8+1
|
stx .8+1
|
||||||
|
|
||||||
|
ldx #0
|
||||||
|
ldy #S.FD.REG
|
||||||
|
|
||||||
|
.1 inx
|
||||||
|
lda K.MLI.PATH,x
|
||||||
|
sta (pFD),y
|
||||||
|
iny
|
||||||
|
cpx K.MLI.PATH
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
sta (pFD),y
|
||||||
|
|
||||||
* ldy #S.FD.T Done by GetMem0
|
* ldy #S.FD.T Done by GetMem0
|
||||||
* lda #S.FD.T.REG
|
* lda #S.FD.T.REG
|
||||||
* sta (ZPPtr1),y
|
* sta (pFD),y
|
||||||
|
|
||||||
jsr STDIO.SetIOBUF
|
jsr STDIO.SetIOBUF
|
||||||
bcs .98
|
bcs .98
|
||||||
|
@ -929,7 +980,7 @@ K.FOpen.10 >LDYAI S.FD.REG
|
||||||
|
|
||||||
lda K.MLI.PARAMS+5 get ref_num
|
lda K.MLI.PARAMS+5 get ref_num
|
||||||
ldy #S.FD.REG.REF
|
ldy #S.FD.REG.REF
|
||||||
sta (ZPPtr1),y
|
sta (pFD),y
|
||||||
|
|
||||||
sta K.MLI.PARAMS+1 Next MLI Calls are REF_NUM based
|
sta K.MLI.PARAMS+1 Next MLI Calls are REF_NUM based
|
||||||
|
|
||||||
|
@ -990,16 +1041,16 @@ K.FClose jsr PFT.CheckNodeA
|
||||||
sta .8+1
|
sta .8+1
|
||||||
|
|
||||||
jsr K.GetMemPtr
|
jsr K.GetMemPtr
|
||||||
>STYA ZPPtr1
|
>STYA pFD
|
||||||
|
|
||||||
ldy #S.FD.REG.REF
|
ldy #S.FD.REG.REF
|
||||||
lda (ZPPtr1),y
|
lda (pFD),y
|
||||||
beq .1
|
beq .1
|
||||||
sta K.MLI.PARAMS+1
|
sta K.MLI.PARAMS+1
|
||||||
>MLICALL MLICLOSE
|
>MLICALL MLICLOSE
|
||||||
|
|
||||||
.1 ldy #S.FD.REG.IOBUF
|
.1 ldy #S.FD.REG.IOBUF
|
||||||
lda (ZPPtr1),y
|
lda (pFD),y
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
jsr K.FreeMem
|
jsr K.FreeMem
|
||||||
|
@ -1033,7 +1084,7 @@ K.FRead jsr PFT.CheckNodeA
|
||||||
* `>PUSHW ptr`
|
* `>PUSHW ptr`
|
||||||
* `lda hFILE`
|
* `lda hFILE`
|
||||||
* `>SYSCALL fwrite`
|
* `>SYSCALL fwrite`
|
||||||
* # Out:
|
* **Out:**
|
||||||
* Y,A = Bytes Written
|
* Y,A = Bytes Written
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.FWrite jsr PFT.CheckNodeA
|
K.FWrite jsr PFT.CheckNodeA
|
||||||
|
@ -1063,24 +1114,22 @@ K.FFlush jsr PFT.CheckNodeA
|
||||||
* # FSeek
|
* # FSeek
|
||||||
* Set the file-position indicator for hFILE
|
* Set the file-position indicator for hFILE
|
||||||
* ## C
|
* ## C
|
||||||
* `int fseek(hFILE stream, long offset, int whence);`
|
* `int fseek(hFILE stream, long offset, short int whence);`
|
||||||
* ## ASM
|
* ## ASM
|
||||||
* **In:**
|
* **In:**
|
||||||
* PUSHW = Ptr to Offset (DWORD)
|
* `>PUSHBI whence`
|
||||||
* PUSHB = From
|
* `>PUSHL offset`
|
||||||
* PUSHB = hFILE
|
* `lda stream`
|
||||||
|
* `>SYSCALL fseek`
|
||||||
*\-------------------------------------
|
*\-------------------------------------
|
||||||
K.FSeek jsr PFT.CheckNodeSTK
|
K.FSeek jsr PFT.CheckNodeA
|
||||||
>PULLA
|
|
||||||
jsr STDIO.GetRefNum
|
jsr STDIO.GetRefNum
|
||||||
>PULLA FROM
|
>PULLA FROM
|
||||||
tax
|
tax
|
||||||
>PULLW ZPPtr1
|
>PULLW ZPPtr1 offset LW
|
||||||
|
>PULLW ZPPtr2 offset HW
|
||||||
cpx #SYS.FSeek.END+1
|
cpx #SYS.FSeek.END+1
|
||||||
bcs .98
|
bcs .98
|
||||||
txa
|
|
||||||
asl
|
|
||||||
tax
|
|
||||||
|
|
||||||
jmp (.1,x)
|
jmp (.1,x)
|
||||||
|
|
||||||
|
@ -1108,7 +1157,7 @@ K.FSeek jsr PFT.CheckNodeSTK
|
||||||
clc
|
clc
|
||||||
|
|
||||||
.81 lda K.MLI.PARAMS+2,y
|
.81 lda K.MLI.PARAMS+2,y
|
||||||
adc (ZPPtr1),y
|
adc ZPPtr1,y
|
||||||
sta K.MLI.PARAMS+2,y
|
sta K.MLI.PARAMS+2,y
|
||||||
|
|
||||||
iny
|
iny
|
||||||
|
@ -1177,27 +1226,23 @@ K.FEOF.MARK .BS 3
|
||||||
* `long ftell(hFILE stream);`
|
* `long ftell(hFILE stream);`
|
||||||
* ## ASM
|
* ## ASM
|
||||||
* **In:**
|
* **In:**
|
||||||
* PUSHW = Ptr to Offset (DWORD)
|
* `lda stream`
|
||||||
* PUSHB = hFILE
|
* `>SYSCALL ftell`
|
||||||
* **Out:**
|
* **Out:**
|
||||||
* Offset = Offset
|
* On stack (long)
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.FTell jsr PFT.CheckNodeSTK
|
K.FTell jsr PFT.CheckNodeA
|
||||||
>PULLA
|
|
||||||
jsr STDIO.GetRefNum
|
jsr STDIO.GetRefNum
|
||||||
>PULLW ZPPtr1
|
|
||||||
>MLICALL MLIGETMARK
|
>MLICALL MLIGETMARK
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
ldy #3
|
|
||||||
|
|
||||||
lda #0
|
lda #0
|
||||||
sta (ZPPtr1),y
|
>PUSHA
|
||||||
|
|
||||||
|
ldy #2
|
||||||
|
|
||||||
dey
|
|
||||||
|
|
||||||
.1 lda K.MLI.PARAMS+2,y
|
.1 lda K.MLI.PARAMS+2,y
|
||||||
sta (ZPPtr1),y
|
>PUSHA
|
||||||
dey
|
dey
|
||||||
bpl .1
|
bpl .1
|
||||||
|
|
||||||
|
@ -1212,13 +1257,17 @@ K.Remove jsr PFT.CheckPathYA
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # Rename
|
* # Rename
|
||||||
* Rename a file
|
* Rename a file
|
||||||
|
* ## C
|
||||||
|
* `int rename(const char *oldpath, const char *newpath);`
|
||||||
|
* ## ASM
|
||||||
* **In:**
|
* **In:**
|
||||||
* PUSHW = New Name
|
* `>PUSHW newpath`
|
||||||
* PUSHW = Old Name
|
* `>LDYA oldpath`
|
||||||
|
* `>SYSCALL rename`
|
||||||
* **Out:**
|
* **Out:**
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.Rename jsr PFT.CheckPathSTK
|
K.Rename jsr PFT.CheckPathYA
|
||||||
jsr STDIO.PullMLIPath
|
jsr STDIO.SetMLIPathYA
|
||||||
>PULLW .1+1
|
>PULLW .1+1
|
||||||
|
|
||||||
ldy #0
|
ldy #0
|
||||||
|
@ -1264,13 +1313,13 @@ STDIO.SetIOBUF >LDYAI 1024 get a ProDOS IOBUF
|
||||||
>STYA K.MLI.PARAMS+3 Save Ptr to IOBUF for MLIOPEN call
|
>STYA K.MLI.PARAMS+3 Save Ptr to IOBUF for MLIOPEN call
|
||||||
txa
|
txa
|
||||||
ldy #S.FD.REG.IOBUF
|
ldy #S.FD.REG.IOBUF
|
||||||
sta (ZPPtr1),y
|
sta (pFD),y
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
STDIO.GetRefNum jsr K.GetMemPtr
|
STDIO.GetRefNum jsr K.GetMemPtr
|
||||||
>STYA ZPPtr1
|
>STYA pFD
|
||||||
ldy #S.FD.REG.REF
|
ldy #S.FD.REG.REF
|
||||||
lda (ZPPtr1),y
|
lda (pFD),y
|
||||||
sta K.MLI.PARAMS+1
|
sta K.MLI.PARAMS+1
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
PR#3
|
|
||||||
PREFIX /A2OSX.BUILD
|
|
||||||
NEW
|
NEW
|
||||||
INC 1
|
PREFIX /A2OSX.BUILD
|
||||||
AUTO 6
|
AUTO 4,1
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
.OP 65C02
|
.OP 65C02
|
||||||
.OR $2000
|
.OR $2000
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
PR#3
|
|
||||||
PREFIX /A2OSX.BUILD
|
|
||||||
NEW
|
NEW
|
||||||
INC 1
|
PREFIX /A2OSX.BUILD
|
||||||
AUTO 6
|
AUTO 4,1
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
.OP 65C02
|
.OP 65C02
|
||||||
.OR $2000
|
.OR $2000
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
PR#3
|
|
||||||
PREFIX /A2OSX.BUILD
|
|
||||||
NEW
|
NEW
|
||||||
INC 1
|
PREFIX /A2OSX.BUILD
|
||||||
AUTO 6
|
AUTO 4,1
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
.OP 65C02
|
.OP 65C02
|
||||||
.OR $2000
|
.OR $2000
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
PR#3
|
|
||||||
PREFIX /A2OSX.BUILD
|
|
||||||
NEW
|
NEW
|
||||||
INC 1
|
PREFIX /A2OSX.BUILD
|
||||||
AUTO 6
|
AUTO 4,1
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ERR.Codes .DA #MLI.E.IO
|
ERR.Codes .DA #MLI.E.IO
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
PR#3
|
|
||||||
NEW
|
NEW
|
||||||
INC 1
|
|
||||||
AUTO 6
|
|
||||||
PREFIX /A2OSX.BUILD
|
PREFIX /A2OSX.BUILD
|
||||||
|
AUTO 4,1
|
||||||
echo \fBuilding A2OSX.BOOT Media...
|
echo \fBuilding A2OSX.BOOT Media...
|
||||||
format S6D1 A2OSX.BOOT
|
format S6D1 A2OSX.BOOT
|
||||||
echo Copying Files...
|
echo Copying Files...
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
PR#3
|
|
||||||
NEW
|
NEW
|
||||||
INC 1
|
|
||||||
AUTO 6
|
|
||||||
PREFIX /A2OSX.BUILD
|
PREFIX /A2OSX.BUILD
|
||||||
|
AUTO 4,1
|
||||||
echo \fBuilding A2OSX.DEV Media...
|
echo \fBuilding A2OSX.DEV Media...
|
||||||
format S6D2 A2OSX.DEV
|
format S6D2 A2OSX.DEV
|
||||||
echo Copying Files...
|
echo Copying Files...
|
||||||
|
|
Loading…
Reference in New Issue
Block a user