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:**
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
CC = OK, CS = ERROR
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.

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -541,8 +541,6 @@ CS.RUN.Rename ldy #hDstFullPath
ldy #hSrcFullPath
jsr CS.RUN.GetPathY
>PUSHYA
>SYSCALL Rename
rts

View File

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

View File

@ -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,36 +396,40 @@ READ >STYA ZPIOCTL
.1 lda RTDATA+1,x discard RxStatus
lda RTDATA,x
lda RTDATA+1,x
sta Size+1
ldy RTDATA,x get RxLength
sty Size
lda RTDATA+1,x get RxLength
ldy #S.IOCTL.BYTECNT+1
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
>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

View File

@ -1,6 +1,7 @@
NEW
PREFIX /A2OSX.BUILD
AUTO 4,1
# put hostname here (max 15 caracters)
a2osx-host
MAN
TEXT ETC/HOSTNAME

View File

@ -2,6 +2,6 @@ NEW
PREFIX /A2OSX.BUILD
AUTO 4,1
# 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
TEXT ETC/HOSTS

View File

@ -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
@ -742,9 +741,7 @@ CS.RUN.WriteBMAndTbl
>LEA.G FileOffset
>PUSHYA
>PUSHBI SYS.FSeek.SET
>LDA.G hOutputFile
>PUSHA
>LDA.G hOutputFile
>SYSCALL FSeek
bcs .9

View File

@ -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
@ -397,15 +397,15 @@ S.FD.DIR.REF .EQ 2
S.FD.DIR.IOBUF .EQ 3
S.FD.DIR.EL .EQ 4
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.DEV.BUSID .EQ 2
S.FD.DEV.DEVID .EQ 3
S.FD.DEV.BUSPTR .EQ 4 word
S.FD.DEV.DRVPTR .EQ 6 word
S.FD.DEV.NAME .EQ 8 C-String
S.FD.DEV.BUSPTR .EQ 4 word
S.FD.DEV.DRVPTR .EQ 6 word
S.FD.DEV.NAME .EQ 8 C-String
*
S.FD.DEV .EQ 16
*--------------------------------------
@ -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

View File

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

View File

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

View File

@ -58,4 +58,4 @@ SSC.CTL.B115200 .EQ %00000000
*--------------------------------------
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
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

View File

@ -1,8 +1,6 @@
PR#3
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6
PREFIX /A2OSX.BUILD
AUTO 4,1
.LIST OFF
*--------------------------------------
* GFX Devices
@ -11,7 +9,7 @@ S.DIB.GFX.F .EQ S.DIB
S.DIB.GFX.S .EQ S.DIB+1
S.DIB.GFX.W .EQ S.DIB+2
S.DIB.GFX.H .EQ S.DIB+4
S.DIB.GFX .EQ S.DIB+6
S.DIB.GFX .EQ S.DIB+6
*--------------------------------------
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
*--------------------------------------
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
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
*--------------------------------------
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

View File

@ -1,8 +1,6 @@
PR#3
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6
PREFIX /A2OSX.BUILD
AUTO 4,1
.LIST OFF
.OP 65C02
*--------------------------------------

View File

@ -1,8 +1,6 @@
PR#3
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6
PREFIX /A2OSX.BUILD
AUTO 4,1
.LIST OFF
.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.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

View File

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

View File

@ -1,8 +1,6 @@
PR#3
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 1000
PREFIX /A2OSX.BUILD
AUTO 4,1
*--------------------------------------
* ROM Standard Routines
*--------------------------------------

View File

@ -1,8 +1,6 @@
PR#3
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6
PREFIX /A2OSX.BUILD
AUTO 4,1
.LIST OFF
.OP 65C02
*--------------------------------------

View File

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

View File

@ -1,8 +1,6 @@
PR#3
NEW
PREFIX /A2OSX.BUILD
LOMEM $C00
INC 1
AUTO 6
AUTO 4,1
.LIST OFF
*--------------------------------------
* CS8900A IO Registers

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -125,7 +125,7 @@ ARP.AddFromFrameInPtr
*--------------------------------------
ARP.IN ldy #S.ARP.TPA+3
ldx #3
.1 lda (ZPFrameInPtr),y
cmp IPCFG+S.IPCFG.IP,x
bne ARP.IN.EXIT
@ -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

View File

@ -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
ldx #$15
lda CFG.FileLen+1
bne .1 File is more than 256....?
.1 jsr CFG.Read.GetS
bcs .8
ldx CFG.FileLen
beq .9 len is 0 !!!
lda (ZPTmpPtr1)
beq .1 empty line...
cmp #'#
beq .1 comment...
.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...
ldy #$ff
lda CFG.Keyword
bne .3
ldy UsrBuf256
lda UsrBuf256+1,y
cmp #35 DOMAIN too long!!!
bcs .1
sta IPCFG+S.IPCFG.DOMAIN
ldx #0
.2 lda UsrBuf256+2,y
sta IPCFG+S.IPCFG.DOMAIN,x
beq .1
inx
iny
.2 iny
lda (ZPTmpPtr1),y
beq .3
cmp #' '
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
.9 jsr CFG.Read.CleanUp
.6 lda (ZPTmpPtr2)
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
.3 jsr CFG.ScanIP
bcs .1
CFG.Read.dnsdomain
lda (ZPTmpPtr2)
sec
adc ZPTmpPtr1
sta ZPTmpPtr1
bcc .1
inc ZPTmpPtr1+1
.1 ldy #$ff
ldy CFG.Keyword
lda CFG.Keyword.Map,y
tax
ldy #0
.4 lda CFG.IP+1,y
sta IPCFG,x
inx
iny
cpy #4
bne .4
lda CFG.Keyword
cmp #1
bne .1
lda #S.IPCFG.STATUS.OK
sta IPCFG
bra .1
.8 jsr CFG.Read.CleanUp
clc
rts
.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
.8 jsr CFG.Read.CleanUp
clc
rts
.9 jsr CFG.Read.CleanUp
sec
.1 jsr CFG.Read.GetS
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
*--------------------------------------
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
.9 rts
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

View File

@ -131,7 +131,7 @@ DNS.REQUEST lda hDNSSocket1
*\--------------------------------------
DNS.Add >PULLW ZPPtrDNS Get host string
>PULLW ZPPtrIP Get host IP address
ldy #3
.1 lda (ZPPtrIP),y
@ -218,13 +218,13 @@ DNS.FIND.BY.NAME
DNS.UPDATE.BY.ID
>LDYA L.DNS.CACHE
>STYA ZPCachePtr
ldx #K.DNSCACHE.SIZE
.1 lda (ZPCachePtr)
beq .6 empty DNS cache entry?
bmi .6 resolved ?
ldy #S.DNSCACHE.ID
lda (ZPCachePtr),y
cmp DNS.TmpCache+S.DNSCACHE.ID
@ -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
@ -376,7 +378,7 @@ DNS.POLL lda hDNSSocket1
DNS.DecodeMsg sta hFrameIn
>SYSCALL GetMemPtr
>STYA ZPFrameInPtr
ldy #S.DNS.F+1
lda (ZPFrameInPtr),y
and /S.DNS.F.QR
@ -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)

View File

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

View File

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

View File

@ -50,7 +50,7 @@ IP.ComputeChecksum
stz IP.CHECKSUM+2
stz IP.CHECKSUM+3
ldy #2
ldy #0
.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.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
@ -132,9 +141,12 @@ LIB.LOAD ldx RefCount
>LDYAI K.SKTTABLE.SIZE*S.SOCKET
>SYSCALL getmem0
bcs .9
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

View File

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

View File

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

View File

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

View File

@ -1,8 +1,6 @@
PR#3
NEW
PREFIX /A2OSX.BUILD
LOMEM $A00
INC 1
AUTO 6
AUTO 4,1
.LIST OFF
*--------------------------------------
CSH.OPChars .AS "!~+-*/%=&|^&<>"

View File

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

View File

@ -159,7 +159,7 @@ CS.RUN >LDA.G bReadMode READ Command ?
>SYSCALL GetChar
bcs .8
>STZ.G bPause
.13 jsr CheckSleep

View File

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

View File

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

View File

@ -8,15 +8,18 @@ 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
.9 rts CC
@ -25,16 +28,16 @@ K.GetDevByID cmp DevMgr.DevCnt
* **In:**
* Y,A = Ptr to device name (C-String)
* **Out:**
* CC = OK, CS = ERROR
* X = DEVID
* Y,A = FD
* CC = OK, CS = ERROR
* 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
@ -139,7 +143,8 @@ K.MKDev >STYA .1+1
.2 sta $ffff,x SELF MODIFIED
dex
bpl .1
lda DevMgr.DevCnt
inc DevMgr.DevCnt
rts

View File

@ -31,15 +31,25 @@ K.LoadTxtFile pha
*\--------------------------------------
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:**

View File

@ -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,9 +101,11 @@ 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
jmp K.FRead
.1 jmp K.FWrite
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
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,28 +263,19 @@ 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
* `int pipe(int pipefd[2]);`
* ## 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

View File

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

View File

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

View File

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

View File

@ -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,19 +735,17 @@ 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
@ -735,9 +753,12 @@ K.SScanF >STYA ZPPtr2 String to Scan
bne .11
inc ZPPtr1+1
.11 cmp #'%' Escape?
.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
@ -790,7 +821,8 @@ K.SScanF >STYA ZPPtr2 String to Scan
lda (pStack),y
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
.1 ldy #S.FD.REG.IOBUF
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
ldy #2
dey
.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
*--------------------------------------

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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