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