Kernel 0.92

This commit is contained in:
Rémy GIBERT 2018-12-19 17:45:09 +01:00
parent b71302d05d
commit 15caee549d
6 changed files with 131 additions and 140 deletions

Binary file not shown.

View File

@ -15,10 +15,15 @@ X.DELETE.SOURCE .EQ 0
*--------------------------------------
MAX.COL .EQ 4
*--------------------------------------
ZPPtr1 .EQ ZPBIN
ZPPtr2 .EQ ZPBIN+2
ZPFileName .EQ ZPBIN+4
ZPFileStat .EQ ZPBIN+6
.DUMMY
.OR ZPBIN
ZS.START
ZPPtr1 .BS 2
ZPPtr2 .BS 2
ZPFileName .BS 2
ZPFileStat .BS 2
ZS.END
.ED
*--------------------------------------
* File Header (16 Bytes)
*--------------------------------------
@ -26,11 +31,12 @@ CS.START cld
jmp (.1,x)
.DA #$61 6502,Level 1 (65c02)
.DA #1 BIN Layout Version 1
.DA 0
.DA CS.END-CS.START CS
.DA DS.END-DS.START DS
.DA #64 SS
.DA #8 ZP
.DA #0 S.PS.F.EVENT
.DA #0
.DA CS.END-CS.START Code Size (without Constants)
.DA DS.END-DS.START Data SegmentSize
.DA #64 Stack Size
.DA #ZS.END-ZS.START Zero Page Size
.DA 0
*--------------------------------------
* Relocation Table
@ -49,7 +55,10 @@ L.PRODOS.FT.TXT .DA PRODOS.FT.TXT
L.FMT.DateTime .DA FMT.DateTime
.DA 0
*--------------------------------------
CS.INIT
CS.INIT clc
rts
*--------------------------------------
CS.RUN
.1 >INC.G ArgCount
>SYSCALL ArgV
bcs .6
@ -79,38 +88,38 @@ CS.INIT
.4 >LDYA ZPPtr1
jsr InitSrcDirYA
bcs .9
bcc .1 scan for any other args
bra .1 scan for any other args
.9 rts
.6 >LDA.G index do we have a Source dir ?
bne .8
bne CS.RUN.LOOP
.7 ldy #S.PS.hPREFIX
ldy #S.PS.hPREFIX
lda (pPs),y
>SYSCALL GetMemPtr
jsr InitSrcDirYA
bcs .9
.8 clc
.9 rts
bcs .9
*--------------------------------------
CS.RUN >SYSCALL GetChar
bcs .10 no char
CS.RUN.LOOP >SLEEP
>SYSCALL GetChar
bcs .2 no char
cmp #$03 Ctrl-C
beq .92 Abort....
bne .1 Abort....
rts CS
cmp #$13 Ctrl-S
bne .10
.1 cmp #$13 Ctrl-S
bne .2
>LDA.G bPause
eor #$ff
sta (pData),y
bne .80
bne CS.RUN.LOOP
.10 >LDA.G bPause
bne .80 Pause...
.2 >LDA.G bPause
bne CS.RUN.LOOP
jsr GetEntry
bcs .9
@ -143,10 +152,21 @@ CS.RUN >SYSCALL GetChar
cmp #$0F Directory ?
bne .6
jmp CS.RUN.DIR
.5 jmp CS.RUN.DEV
.6 jmp CS.RUN.FILE
jsr CS.RUN.PRINT.DIR
bcs .99
bra .8
.5 jsr CS.RUN.PRINT.DEV
bcs .99
bra .8
.6 jsr CS.RUN.PRINT.FILE
bcs .99
.8 jsr GetNextEntry
bcc .92
.9 ldy #bLong
lda (pData),y
bmi .91
@ -155,20 +175,20 @@ CS.RUN >SYSCALL GetChar
bcs .99
.91 jsr LeaveSubDir
bcs .92
bcs .98
jsr BasePath..
jsr GetNextEntry
.8 jsr GetNextEntry
.80 clc
rts
.92 jmp CS.RUN.LOOP
.92 lda #0
.98 lda #0
sec
.99 rts
*--------------------------------------
CS.RUN.DEV >LDA.G bLong
bpl CS.RUN.DIR
CS.RUN.PRINT.DEV
>LDA.G bLong
bpl CS.RUN.PRINT.DIR
ldy #S.STAT.P.DEVBLOCKS+1
>PUSHB (ZPFileStat),y
@ -197,14 +217,13 @@ CS.RUN.DEV >LDA.G bLong
>LDYA ZPFileName
jsr EnterSubDirYA
bcs .9
jsr CS.RUN.ENTER.MSG
rts
jmp CS.RUN.ENTER.MSG
.8 jsr GetNextEntry
clc
.8 clc
.9 rts
*--------------------------------------
CS.RUN.DIR >LDA.G bAllmostAll
CS.RUN.PRINT.DIR
>LDA.G bAllmostAll
bmi .10
lda (ZPFileName)
@ -219,7 +238,7 @@ CS.RUN.DIR >LDA.G bAllmostAll
>LDYA L.MSG.DIR
>SYSCALL printf
bcs .9
bcs .99
ldy #0
@ -250,7 +269,8 @@ CS.RUN.DIR >LDA.G bAllmostAll
>PUSHBI 8
>LDYA L.MSG.DIREXT
>SYSCALL printf
bcs .9
.99 bcs .9
.5 ldy #bRecurse
lda (pData),y
@ -266,14 +286,13 @@ CS.RUN.DIR >LDA.G bAllmostAll
>LDYA ZPFileName
jsr EnterSubDirYA
bcs .9
jsr CS.RUN.ENTER.MSG
rts
jmp CS.RUN.ENTER.MSG
.8 jsr GetNextEntry
clc
.8 clc
.9 rts
*--------------------------------------
CS.RUN.FILE ldy #bLong
CS.RUN.PRINT.FILE
ldy #bLong
lda (pData),y
bmi .1
@ -283,10 +302,7 @@ CS.RUN.FILE ldy #bLong
>SYSCALL printf
bcs .9
jsr CS.RUN.UpdateColCnt
jsr GetNextEntry
clc
rts
jmp CS.RUN.UpdateColCnt
.1 jsr CS.RUN.PUSHDATES
@ -319,10 +335,7 @@ CS.RUN.FILE ldy #bLong
>PUSHBI 16
>LDYA L.MSG.FILEEXT
>SYSCALL printf
bcs .9
jsr GetNextEntry
clc
.9 rts
*--------------------------------------
CS.RUN.PUSHDATES
@ -379,10 +392,7 @@ CS.RUN.PUSHDATES
rts
*--------------------------------------
CS.RUN.UpdateColCnt
ldy #ColCount
lda (pData),y
inc
sta (pData),y
>INC.G ColCount
cmp #MAX.COL
bne CS.RUN.NewLine.8
@ -390,8 +400,7 @@ CS.RUN.UpdateColCnt
sta (pData),y
bra CS.RUN.NewLine.1
*--------------------------------------
CS.RUN.NewLine ldy #ColCount
lda (pData),y
CS.RUN.NewLine >LDA.G ColCount
beq CS.RUN.NewLine.8
CS.RUN.NewLine.1
lda #13

View File

@ -19,3 +19,5 @@ hDstBasePath .BS 1
*--------------------------------------
MAN
SAVE USR/SRC/BIN/X.FILEENUM.G
LOAD USR/SRC/BIN/LS.S
ASM

View File

@ -312,12 +312,8 @@ InitDstDirYA >SYSCALL RealPath
GetNextEntry jsr GetEntry
bcs .9
ldy #0
.10 iny
lda (ZPFileName),y Save actual file len for setting up
bne .10
phy new offset later
jsr GetFilenameLen Save actual file len for setting up
pha new offset later
lda ZPFileStat
clc
@ -331,12 +327,8 @@ GetNextEntry jsr GetEntry
lda (ZPFileName) are we at end of this buffer ?
beq .1 yes, go read next one ...
sec
adc ZPFileName
sta ZPFileStat
lda ZPFileName+1
adc #0
sta ZPFileStat+1
jsr GetFilenameLen
jsr SetFileStatPtr
jsr GetoDIRENT
@ -368,27 +360,16 @@ GetNextEntry jsr GetEntry
.1 pla
jsr GetEntry.ReadDir
bcs .9
lda (ZPFileName)
beq .99
ldy #0
.2 iny
lda (ZPFileName),y
bne .2
tya
sec
adc ZPFileName
sta ZPFileStat
lda ZPFileName+1
adc #0
sta ZPFileStat+1
jsr GetFilenameLen
beq GetNextEntry.99
jsr SetFileStatPtr
clc
.9 rts
.99 sec
GetNextEntry.99 sec
rts
*--------------------------------------
GetEntry jsr GethDIRENT
@ -399,9 +380,7 @@ GetEntry jsr GethDIRENT
lda (ZPFileName) Empty !!!
bne .8
* txa
* >SYSCALL FreeMem
sec
rts
@ -420,18 +399,8 @@ GetEntry jsr GethDIRENT
adc (pData),y
sta ZPFileName+1 ZPFileName=ZPFileName+oDIRENT
.8 ldy #0
.81 iny
lda (ZPFileName),y
bne .81
tya
sec
adc ZPFileName
sta ZPFileStat
lda ZPFileName+1
adc #0
sta ZPFileStat+1
.8 jsr GetFilenameLen
jsr SetFileStatPtr
clc
.9 rts
@ -589,7 +558,7 @@ BasePath..1 lda (pData),y
>STYA ZPPtr1 save full path
ldy #0
ldy #$ff
.1 iny
lda (ZPPtr1),y get len
@ -609,6 +578,24 @@ BasePath..1 lda (pData),y
rts
*--------------------------------------
GetFilenameLen ldy #$ff
.1 iny
lda (ZPFileName),y
bne .1
tya
rts
*--------------------------------------
SetFileStatPtr sec
adc ZPFileName
sta ZPFileStat
lda ZPFileName+1
adc #0
sta ZPFileStat+1
rts
*--------------------------------------
GethDIR ldy #index
lda (pData),y
clc

View File

@ -91,15 +91,12 @@ IO.OPEN.9 sec
IO.OPEN.RTS rts
*--------------------------------------
IO.OPEN.REG >MLICALL MLIGETFILEINFO
bcc K.IO.OPEN.REG.E Already Exists
bcc IO.OPEN.REG.E Already Exists
bit K.Open.FLAGS Create if not exists ?
bpl IO.OPEN.9 No, return MLI error
lda #S.FI.A.FULL Yes, Create...
sta K.MLI.PARAMS+3 Access
ldx #2
ldx #2 Yes, Create...
.1 lda K.Open.TYPE,x
sta K.MLI.PARAMS+4,x File type,Aux type
@ -107,19 +104,11 @@ IO.OPEN.REG >MLICALL MLIGETFILEINFO
bpl .1
lda #S.FI.ST.STD
sta K.MLI.PARAMS+7
ldx #3
.2 lda DATELO,x
sta K.MLI.PARAMS+8,x
dex
bpl .2
>MLICALL MLICREATE
jsr IO.MLI.CREATE
bcs IO.OPEN.RTS
K.IO.OPEN.REG.E >LDYAI S.FD.REG
IO.OPEN.REG.E >LDYAI S.FD.REG
ldx #S.MEM.F.INIT0+S.MEM.F.FD
jsr MEM.GetMem.YAX
bcs IO.OPEN.RTS
@ -203,6 +192,21 @@ IO.OPEN.SSOCK
IO.OPEN.PIPE
clc
rts
*--------------------------------------
IO.MLI.CREATE sta K.MLI.PARAMS+7 Storage Type
ldx #3
.1 lda DATELO,x
sta K.MLI.PARAMS+8,x Create Date/Time
dex
bpl .1
lda #S.FI.A.FULL
sta K.MLI.PARAMS+3 Access
>MLICALL MLICREATE
rts
*/--------------------------------------
* # close
* ## C

View File

@ -148,25 +148,14 @@ K.Stat.DST .DA #S.STAT.P.TYPE
* A = EC
*\-------------------------------------
K.MKDir jsr PFT.CheckPathYA
bcs K.MKDir.RTS
bcs K.Stat.9
lda #S.FI.A.FULL
sta K.MLI.PARAMS+S.FI.A
lda #S.FI.T.DIR
sta K.MLI.PARAMS+S.FI.T
sta K.MLI.PARAMS+4
stz K.MLI.PARAMS+5
stz K.MLI.PARAMS+6
lda #S.FI.ST.DIR
sta K.MLI.PARAMS+S.FI.ST
* jsr DATETIME
ldx #3
.1 lda DATELO,x
sta K.MLI.PARAMS+8,x
dex
bpl .1
>MLICALL MLICREATE
K.MKDir.RTS rts
jmp IO.MLI.CREATE
*/--------------------------------------
* # MkNod
* Create a special or ordinary file.
@ -189,14 +178,14 @@ K.MkNod >STYA ZPPtr1 pathname
>PULLB K.S.STAT+S.STAT.DEV
jsr K.GetMemPtr
bcs K.MKDir.RTS
bcs K.MKNOD.RTS
>STYA pFD
>LDYA ZPPtr1
ldx K.S.STAT+S.STAT.DEV
jsr STAT.NewhNodeYAX
bcs K.MKDir.RTS
bcs K.MKNOD.RTS
lda (pFD) #S.FD.T
@ -218,7 +207,7 @@ STAT.MKNOD.DSOCK
STAT.MKNOD.SSOCK
STAT.MKNOD.PIPE
clc
rts
K.MKNOD.RTS rts
*/--------------------------------------
* # MKFIFO
* return a hFILE to a new FIFO