Kernel 0.9.2

This commit is contained in:
Rémy GIBERT 2018-08-08 17:13:37 +02:00
parent ea144535e5
commit 45cd7d04fa
67 changed files with 829 additions and 805 deletions

View File

@ -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.

View File

@ -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 ******

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -58,4 +58,4 @@ SSC.CTL.B115200 .EQ %00000000
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE /A2OSX.BUILD/INC/COM.6551.I SAVE INC/COM.6551.I

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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
*-------------------------------------- *--------------------------------------

View File

@ -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
*-------------------------------------- *--------------------------------------

View File

@ -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

View File

@ -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
*-------------------------------------- *--------------------------------------

View File

@ -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
*-------------------------------------- *--------------------------------------

View File

@ -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
*-------------------------------------- *--------------------------------------

View File

@ -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
*-------------------------------------- *--------------------------------------

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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 "!~+-*/%=&|^&<>"

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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:**

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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
*-------------------------------------- *--------------------------------------

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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...

View File

@ -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...

View File

@ -1,8 +1,6 @@
PR#3
PREFIX /A2OSX.BUILD
NEW NEW
INC 1 PREFIX /A2OSX.BUILD
AUTO 6 AUTO 4,1
PREFIX /A2OSX.BUILD PREFIX /A2OSX.BUILD
-A2OSX.SYSTEM -A2OSX.SYSTEM
MAN MAN