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

View File

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

View File

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

View File

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