Kernel version 0.8 : MLI API Removed

This commit is contained in:
Rémy GIBERT 2016-09-26 18:00:52 +02:00
parent 7984c2ba74
commit f6e3d2e9b3
12 changed files with 217 additions and 332 deletions

View File

@ -28,10 +28,10 @@ K.GetArgC jsr S.InitArgPtr1
* CC : Y,A = PStr To Arg[A] * CC : Y,A = PStr To Arg[A]
* CS : Out Of Bound * CS : Out Of Bound
*-------------------------------------- *--------------------------------------
K.GetArgA sta K.GetArgA.Idx K.GetArgA sta .2+1
jsr S.InitArgPtr1 jsr S.InitArgPtr1
lda K.GetArgA.Idx lda .2+1
beq .8 beq .8
ldx #0 ldx #0
@ -39,7 +39,7 @@ K.GetArgA sta K.GetArgA.Idx
.1 lda (ZPQuickPtr1) .1 lda (ZPQuickPtr1)
beq .9 beq .9
cpx K.GetArgA.Idx .2 cpx #$ff Self Modified
beq .8 beq .8
jsr S.NextArgPtr1 jsr S.NextArgPtr1
@ -67,8 +67,6 @@ S.NextArgPtr1 lda ZPQuickPtr1
inc ZPQuickPtr1+1 inc ZPQuickPtr1+1
.8 rts .8 rts
*-------------------------------------- *--------------------------------------
K.GetArgA.Idx .BS 1
*--------------------------------------
MAN MAN
SAVE SYS/KERNEL.S.ARG SAVE SYS/KERNEL.S.ARG
LOAD SYS/KERNEL.S LOAD SYS/KERNEL.S

View File

@ -34,7 +34,15 @@ K.LoadBinYA >STYA K.LoadBin.Filename
clc clc
rts rts
.3 >PUSHWI $2000 Aux type .3 >PUSHWI KrnBuf256
>PUSHW K.LoadBin.Filename
jsr K.STAT Look for AUXTYPE
bcs .99
>LDYA KrnBuf256+S.STAT.AUXTYPE
>STYA K.LoadBin.OldBase
>PUSHYA
>PUSHBI 6 S.FILEINFO.TYPE.BIN >PUSHBI 6 S.FILEINFO.TYPE.BIN
>PUSHBI SYS.FOPEN.R >PUSHBI SYS.FOPEN.R
>PUSHW K.LoadBin.Filename >PUSHW K.LoadBin.Filename
@ -47,27 +55,8 @@ K.LoadBinYA >STYA K.LoadBin.Filename
jsr K.GetMemPtrA jsr K.GetMemPtrA
>STYA K.LoadBin.NewBase >STYA K.LoadBin.NewBase
>LDYA K.LoadBin.Filename
jsr K.MLIGetFileInfoYA Get File Info for AUXTYPE
bcs .98
>STYA ZPQuickPtr1
ldy #2 get AUXTYPE
lda (ZPQuickPtr1),y
sta K.LoadBin.OldBase
iny
lda (ZPQuickPtr1),y
sta K.LoadBin.OldBase+1
bit RRAMWRAMBNK2
bit RRAMWRAMBNK2
jsr K.InsBin jsr K.InsBin
bit RRAMWRAMBNK1
bit RRAMWRAMBNK1
bcs .98 relocation error, dicard Code segment bcs .98 relocation error, dicard Code segment
>LDYA K.LoadBin.Filename get back bin path >LDYA K.LoadBin.Filename get back bin path

View File

@ -507,26 +507,6 @@ K.READDIRA.AddToBuf
inc ZPQuickPtr4+1 inc ZPQuickPtr4+1
.8 rts .8 rts
*-------------------------------------- *--------------------------------------
lda MLICALL.PARAMS+S.FILEINFO.ACCESS
cmp #S.FILEINFO.ACCESS.FULL
bne .5
lda #S.STAT.MODE.XO+S.STAT.MODE.WO+S.STAT.MODE.RO
bra .6
.5 and #S.FILEINFO.ACCESS.R
beq .6
lda #S.STAT.MODE.XO+S.STAT.MODE.RO
.6 ldy #S.STAT.MODE
sta (ZPQuickPtr3),y
ldy #S.STAT.BLOCKS
lda MLICALL.PARAMS+S.FILEINFO.AUXTYPE
sta (ZPQuickPtr3),y
iny
lda MLICALL.PARAMS+S.FILEINFO.AUXTYPE
sta (ZPQuickPtr3),y
ldy #S.STAT.BLKSIZE+1 ldy #S.STAT.BLKSIZE+1
lda #2 Block size is $200 for ProDOS lda #2 Block size is $200 for ProDOS
sta (ZPQuickPtr3),y sta (ZPQuickPtr3),y

View File

@ -46,14 +46,8 @@ K.LoadDrvYA >STYA K.LoadDrv.CmdArray
bcs .97 bcs .97
bit RRAMWRAMBNK2
bit RRAMWRAMBNK2
jsr K.InsDrv jsr K.InsDrv
bit RRAMWRAMBNK1
bit RRAMWRAMBNK1
bcs .97 bcs .97
ldy #S.DEV.F ldy #S.DEV.F

View File

@ -144,7 +144,7 @@ K.FCLOSEA.1 ldy #S.FILE.PRODOS.REF
*-------------------------------------- *--------------------------------------
K.FREAD jsr K.PFTCheckFileSTK K.FREAD jsr K.PFTCheckFileSTK
>PULLA >PULLA
jsr FIL.SetupPrt1A jsr FILE.SetupPrt1A
>PULLW MLICALL.PARAMS+4 >PULLW MLICALL.PARAMS+4
>PULLW MLICALL.PARAMS+2 >PULLW MLICALL.PARAMS+2
>MLICALL MLIREAD >MLICALL MLIREAD
@ -162,7 +162,7 @@ K.FREAD jsr K.PFTCheckFileSTK
*-------------------------------------- *--------------------------------------
K.FWRITE jsr K.PFTCheckFileSTK K.FWRITE jsr K.PFTCheckFileSTK
>PULLA >PULLA
jsr FIL.SetupPrt1A jsr FILE.SetupPrt1A
>PULLW MLICALL.PARAMS+4 >PULLW MLICALL.PARAMS+4
>PULLW MLICALL.PARAMS+2 >PULLW MLICALL.PARAMS+2
>MLICALL MLIWRITE >MLICALL MLIWRITE
@ -175,7 +175,7 @@ K.FWRITE jsr K.PFTCheckFileSTK
* A = hFILE * A = hFILE
*-------------------------------------- *--------------------------------------
K.FFLUSHA jsr K.PFTCheckFileA K.FFLUSHA jsr K.PFTCheckFileA
jsr FIL.SetupPrt1A jsr FILE.SetupPrt1A
>MLICALL MLIFLUSH >MLICALL MLIFLUSH
rts rts
*-------------------------------------- *--------------------------------------
@ -188,7 +188,7 @@ K.FFLUSHA jsr K.PFTCheckFileA
*-------------------------------------- *--------------------------------------
K.FSEEK jsr K.PFTCheckFileSTK K.FSEEK jsr K.PFTCheckFileSTK
>PULLA >PULLA
jsr FIL.SetupPrt1A jsr FILE.SetupPrt1A
>PULLB K.FSEEK.FROM >PULLB K.FSEEK.FROM
>PULLW K.FSEEK.OFFSET >PULLW K.FSEEK.OFFSET
>PULLW K.FSEEK.OFFSET+2 >PULLW K.FSEEK.OFFSET+2
@ -245,7 +245,7 @@ K.FSEEK.OFFSET .BS 4
* Y,A,X = Offset * Y,A,X = Offset
*-------------------------------------- *--------------------------------------
K.FTELLA jsr K.PFTCheckFileA K.FTELLA jsr K.PFTCheckFileA
K.FTELLA.1 jsr FIL.SetupPrt1A K.FTELLA.1 jsr FILE.SetupPrt1A
>MLICALL MLIGETMARK >MLICALL MLIGETMARK
bcs .9 bcs .9
>LDYA MLICALL.PARAMS+2 >LDYA MLICALL.PARAMS+2
@ -262,7 +262,7 @@ K.FTELLA.1 jsr FIL.SetupPrt1A
* CS : * CS :
*-------------------------------------- *--------------------------------------
K.FEOFA jsr K.PFTCheckFileA K.FEOFA jsr K.PFTCheckFileA
jsr FIL.SetupPrt1A jsr FILE.SetupPrt1A
jsr K.FTELLA.1 jsr K.FTELLA.1
bcs .9 bcs .9
>STYA K.FEOFA.MARK >STYA K.FEOFA.MARK
@ -304,43 +304,48 @@ K.RENAME jsr K.PFTCheckPathSTK
*-------------------------------------- *--------------------------------------
* K.STAT * K.STAT
* In : * In :
* PULLB = hFILE
* PULLW = PTR to S.STAT buffer
*--------------------------------------
K.STAT jsr K.PFTCheckFileA
>PULLA
jsr FIL.SetupPrt1A
>PULLW ZPQuickPtr2
>MLICALL MLIGETFILEINFO
bcs .9
>LDYAI MLICALL.PARAMS+3
.9 rts
*--------------------------------------
* K.FSTAT
* In :
* PULLW = PTR to Filename * PULLW = PTR to Filename
* PULLW = PTR to S.STAT buffer * PULLW = PTR to S.STAT buffer
*-------------------------------------- *--------------------------------------
K.FSTAT jsr K.PFTCheckPathSTK K.STAT jsr K.PFTCheckPathSTK
>PULLW MLICALL.PARAMS+1 >PULLW MLICALL.PARAMS+1
>PULLW ZPQuickPtr2 >PULLW ZPQuickPtr2
>MLICALL MLIGETFILEINFO >MLICALL MLIGETFILEINFO
bcs .9 bcs .9
>LDYAI MLICALL.PARAMS+3 jsr FILE.MLI2STAT.Types
clc
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
FIL.SetupPrt1A jsr K.GetMemPtrA FILE.SetupPrt1A jsr K.GetMemPtrA
>STYA ZPQuickPtr1 >STYA ZPQuickPtr1
ldy #S.FILE.PRODOS.REF ldy #S.FILE.PRODOS.REF
lda (ZPQuickPtr1),y lda (ZPQuickPtr1),y
sta MLICALL.PARAMS+1 sta MLICALL.PARAMS+1
rts rts
*-------------------------------------- *--------------------------------------
FILE.MLI2STAT.Types
lda MLICALL.PARAMS+S.FILEINFO.ACCESS
cmp #S.FILEINFO.ACCESS.FULL
bne .1
lda #S.STAT.MODE.XO+S.STAT.MODE.WO+S.STAT.MODE.RO
bra .2
.1 and #S.FILEINFO.ACCESS.R
beq .2
lda #S.STAT.MODE.XO+S.STAT.MODE.RO
.2 ldy #S.STAT.MODE
sta (ZPQuickPtr3),y
ldy #S.STAT.BLOCKS
lda MLICALL.PARAMS+S.FILEINFO.AUXTYPE
sta (ZPQuickPtr3),y
iny
lda MLICALL.PARAMS+S.FILEINFO.AUXTYPE+1
sta (ZPQuickPtr3),y
rts
*--------------------------------------
MAN MAN
SAVE SYS/KERNEL.S.FILE SAVE SYS/KERNEL.S.FILE
LOAD SYS/KERNEL.S LOAD SYS/KERNEL.S

View File

@ -5,30 +5,6 @@ INC 1
AUTO 6 AUTO 6
.LIST OFF .LIST OFF
*-------------------------------------- *--------------------------------------
* PUBLIC
*--------------------------------------
K.CheckPrefixYA >STYA MLICALL.PARAMS+1
>STYA ZPQuickPtr1
lda (ZPQuickPtr1)
beq .98
tax
ldy #1
lda (ZPQuickPtr1),y
cmp #'/'
bne .98
cpx #1 "/" allowed for listing online volumes
beq .8
>MLICALL MLIGETFILEINFO
bcs .98 No, invalid path...
lda MLICALL.PARAMS+4 Check file type
cmp #$0F Directory?
bne .98
.8 clc
rts
.98 lda #SYSMGR.ERRIDIR
.99 sec
rts
*--------------------------------------
* K.FileSearch * K.FileSearch
* in : * in :
* PULLW = PSTR to File Name (PSTRING) * PULLW = PSTR to File Name (PSTRING)
@ -78,10 +54,11 @@ K.FileSearch >PULLW ZPQuickPtr4 ZPQuickPtr1 trashed by ExpandPStrYA
cmp (ZPQuickPtr4) cmp (ZPQuickPtr4)
bne .4 bne .4
stx KrnBuf256 set string length stx KrnBuf256 set string length
>LDYAI KrnBuf256 >PUSHWI KrnSTAT
jsr K.MLIGetFileInfoYA >PUSHWI KrnBuf256
jsr K.STAT
bcs .1 Failed...retry next path... bcs .1 Failed...retry next path...
lda K.FileSearch.hSrch Discard Expanded hSrch list lda K.FileSearch.hSrch Discard Expanded hSrch list
@ -95,7 +72,6 @@ K.FileSearch >PULLW ZPQuickPtr4 ZPQuickPtr1 trashed by ExpandPStrYA
sec sec
.99 rts .99 rts
*-------------------------------------- *--------------------------------------
K.FileSearch.File .BS 2
K.FileSearch.hSrch .BS 1 K.FileSearch.hSrch .BS 1
K.FileSearch.Index .BS 1 K.FileSearch.Index .BS 1
*-------------------------------------- *--------------------------------------

View File

@ -5,14 +5,16 @@ INC 1
AUTO 6 AUTO 6
.LIST OFF .LIST OFF
*-------------------------------------- *--------------------------------------
* A2osX.SYSCALL (AUXLC to AUXLC) * SYSCALL (AUXLC to AUXLC)
* Used by user & kernel for inter bank Calls
* In: * In:
* X = SYSfnc.Index * X = SYSfnc.Index
* Y,A = free for Inline param * Y,A = free for Inline param
*-------------------------------------- *--------------------------------------
A2osX.GP.Start jmp A2osX.SYSCALL1 jmp A2osX.SYSCALL1
*-------------------------------------- *--------------------------------------
* LIBCALL (AUXLC to AUXLC) * LIBCALL (AUXLC to AUXLC)
* Used by user
* In: * In:
* Y = LIB.ID * Y = LIB.ID
* X = LIBfnc.Index * X = LIBfnc.Index
@ -20,7 +22,8 @@ A2osX.GP.Start jmp A2osX.SYSCALL1
*-------------------------------------- *--------------------------------------
jmp A2osX.LIBCALL1 jmp A2osX.LIBCALL1
*-------------------------------------- *--------------------------------------
* Kernel.MLICALL (AUXLC to MAINLC) * MLICALL (AUXLC to MAINLC)
* Used by Kernel
* In: * In:
* X = MLI Function * X = MLI Function
* A = Param Count * A = Param Count
@ -35,46 +38,66 @@ A2osX.GP.Start jmp A2osX.SYSCALL1
jmp (pDev) pDevJmp jmp (pDev) pDevJmp
.BS $BE20-* .BS $BE20-*
*-------------------------------------- *--------------------------------------
GO.Reset jsr GO.AUXLC GO.Reset jsr GO.A2osX
jmp K.KernelRun jmp K.KernelRun
*-------------------------------------- *--------------------------------------
A2osX.SYSCALL1 phx * *** MUST BE REINTRANT ***
bit KERNEL.SYSCALL.FLAGS,x
bmi .2
ldx #RRAMWRAMBNK1
.HS 2C
.2 ldx #RRAMWRAMBNK2
bit $C000,x
bit $C000,x
plx
jmp (KERNEL.SYSCALL,x)
*-------------------------------------- *--------------------------------------
A2osX.LIBCALL1 pha A2osX.SYSCALL1 bit KERNEL.SYSCALL.FLAGS,x
phx bpl .8 in $E000, no BNK change
tya
>SYSCALL SYS.GetMemPtrA sta .7+1 save A (Func Arg)
>STYA .1+1
plx lda KERNEL.SYSCALL.FLAGS+1,x Get Target BNK
cmp $D000 #RRAMWRAMBNK1 or #RRAMWRAMBNK2
beq .7 same as actual BNK...go restore A and JMP
stx .6+1 save X (Func ID)
tax set Target BNK in x
lda $D000 get source BNK
bit $C000,x switch to Target BNK
bit $C000,x
pha
jsr .7 go to kernel.....
stx .5+1 save X
plx get back Source BNK
bit $C000,x
bit $C000,x
.5 ldx #$FF Self Modified
rts Unmodified Carry
.6 ldx #$FF Self Modified
.7 lda #$FF Self Modified
.8 jmp (KERNEL.SYSCALL,x)
*--------------------------------------
A2osX.LIBCALL1 pha No need to save X, K.GetMemPtrA will leave it unmodified
tya Get LIB hMem in A
jsr K.GetMemPtrA Get LIB Code Segment (MemMgr in $E000, no BNK change)
>STYA pLib
pla pla
.1 jmp $FFFF jmp (pLib)
*-------------------------------------- *--------------------------------------
A2osX.MLICALL1 jsr GO.MAINLC A2osX.MLICALL1 stx .1
stx .1
sta MLICALL.PARAMS sta MLICALL.PARAMS
jsr GO.ProDOS
jsr MLI jsr MLI
.1 .BS 1 .1 .BS 1
.DA MLICALL.PARAMS .DA MLICALL.PARAMS
jsr GO.AUXLC jsr GO.A2osX
rts rts
*-------------------------------------- *--------------------------------------
GO.MAINLC asl RDLCBNK2 We re coming from AUXLC, saving bank... GO.ProDOS lda $D000 We re coming from AUXLC, saving bank...
ror A2osX.SaveLCBNK sta GO.A2osX.BNK+1
php php
clc clc
.HS 2C bit abs .HS 2C bit abs
GO.AUXLC php GO.A2osX php
sec sec
sei sei
@ -96,7 +119,7 @@ GO.AUXLC php
ldy pStack ldy pStack
bcs .2 if CS, go AUXLC bcs GO.A2osX.BNK if CS, go AUXLC
bit RRAMWRAMBNK1 Go MAINLC (ProDOS), always BNK1 bit RRAMWRAMBNK1 Go MAINLC (ProDOS), always BNK1
bit RRAMWRAMBNK1 bit RRAMWRAMBNK1
@ -108,11 +131,7 @@ GO.AUXLC php
sta CLRALTZP sta CLRALTZP
bra GO.EXIT bra GO.EXIT
.2 bit A2osX.SaveLCBNK Go AUXLC....Previous Go MAINLC Coming from BNK2 ? GO.A2osX.BNK ldx #$FF Self Modified
bmi .3
ldx #RRAMWRAMBNK1
.HS 2C bit abs
.3 ldx #RRAMWRAMBNK2
bit $C000,x bit $C000,x
bit $C000,x bit $C000,x
@ -129,9 +148,8 @@ GO.EXIT sty pStack
ldx A2osX.SaveX ldx A2osX.SaveX
lda A2osX.SaveA lda A2osX.SaveA
plp plp
GO.EXIT.JMP jmp $FFFF GO.EXIT.JMP jmp $FFFF Self Modified
*-------------------------------------- *--------------------------------------
A2osX.SaveLCBNK .BS 1
A2osX.SaveA .BS 1 A2osX.SaveA .BS 1
A2osX.SaveX .BS 1 A2osX.SaveX .BS 1
A2osX.SaveY .BS 1 A2osX.SaveY .BS 1
@ -140,14 +158,6 @@ BrkHandler bra *
*-------------------------------------- *--------------------------------------
IrqHandler bra * IrqHandler bra *
*-------------------------------------- *--------------------------------------
A2osX.GP.End .EQ *
*--------------------------------------
* CONTROL SECTION :
*--------------------------------------
.DO A2osX.GP.End>$BEDF
ERROR:GP too big
.FIN
*--------------------------------------
MAN MAN
SAVE SYS/KERNEL.S.GP SAVE SYS/KERNEL.S.GP
LOAD SYS/KERNEL.S LOAD SYS/KERNEL.S

View File

@ -71,7 +71,7 @@ Kernel.Init2 >LDAXI MSG.Init2
>LDAXI MSG.Setup >LDAXI MSG.Setup
jsr PrintCStrAX jsr PrintCStrAX
jsr GO.AUXLC jsr GO.A2osX
jsr K.IrqMgrInit jsr K.IrqMgrInit
bcs * bcs *
@ -86,7 +86,7 @@ Kernel.Init2 >LDAXI MSG.Init2
jsr K.TskMgrInit jsr K.TskMgrInit
bcs * bcs *
jsr GO.MAINLC Make sure MAIN ZP... jsr GO.ProDOS Make sure MAIN ZP...
lda RROMBNK1 ... & ROM is enabled for X.PRINT.F lda RROMBNK1 ... & ROM is enabled for X.PRINT.F
>LDAXI MSG.Init2.OK >LDAXI MSG.Init2.OK

View File

@ -43,7 +43,7 @@ KERNEL.SYSCALL .DA K.GetMem $00
.DA K.GetEnvYA .DA K.GetEnvYA
.DA K.UnsetEnvYA .DA K.UnsetEnvYA
*-------------------------------------- *--------------------------------------
.DA K.MLICreateFile $40 .DA 0 $40
.DA 0 .DA 0
.DA 0 .DA 0
.DA 0 .DA 0
@ -52,32 +52,32 @@ KERNEL.SYSCALL .DA K.GetMem $00
.DA 0 .DA 0
.DA 0 .DA 0
*-------------------------------------- *--------------------------------------
.DA K.MLIGetFileInfoYA $50 .DA 0 $50
.DA 0 .DA 0
.DA 0 .DA 0
.DA 0 .DA 0
.DA 0 .DA 0
.DA 0 .DA 0
.DA 0 .DA 0
.DA K.MLIOpenYA
*--------------------------------------
.DA K.MLINewLine $60
.DA K.MLIRead
.DA K.MLIWrite
.DA K.MLICloseA
.DA 0
.DA 0
.DA 0
.DA 0 .DA 0
*-------------------------------------- *--------------------------------------
.DA 0 $70 .DA K.FOPEN $60
.DA 0 .DA K.FCLOSEA
.DA 0 .DA K.FREAD
.DA 0 .DA K.FWRITE
.DA 0 .DA K.FFLUSHA
.DA 0 .DA K.FSEEK
.DA 0 .DA K.FTELLA
.DA K.FEOFA
*--------------------------------------
.DA K.REMOVEYA $70
.DA K.RENAME
.DA K.STAT
.DA 0 .DA 0
.DA K.OPENDIRYA
.DA K.READDIRA
.DA K.CLOSEDIRA
.DA K.MKDIRYA
*-------------------------------------- *--------------------------------------
.DA K.GetDevByIDA $80 .DA K.GetDevByIDA $80
.DA 0 .DA 0
@ -97,7 +97,7 @@ KERNEL.SYSCALL .DA K.GetMem $00
.DA K.Sleep .DA K.Sleep
.DA 0 .DA 0
*-------------------------------------- *--------------------------------------
.DA K.CheckPrefixYA $A0 .DA 0 $A0
.DA K.FileSearch .DA K.FileSearch
.DA K.GetFullPathYA .DA K.GetFullPathYA
.DA 0 .DA 0
@ -133,26 +133,32 @@ KERNEL.SYSCALL .DA K.GetMem $00
.DA K.DecOutA .DA K.DecOutA
.DA K.DecOutYA .DA K.DecOutYA
*-------------------------------------- *--------------------------------------
.DA K.FOPEN $E0 .DA 0 $E0
.DA K.FCLOSEA .DA 0
.DA K.FREAD .DA 0
.DA K.FWRITE .DA 0
.DA K.FFLUSHA .DA 0
.DA K.FSEEK .DA 0
.DA K.FTELLA .DA 0
.DA K.FEOFA .DA 0
*-------------------------------------- *--------------------------------------
.DA K.REMOVEYA $F0 .DA 0 $F0
.DA K.RENAME .DA 0
.DA K.STAT .DA 0
.DA K.FSTAT .DA 0
.DA K.OPENDIRYA .DA 0
.DA K.READDIRA .DA 0
.DA K.CLOSEDIRA .DA 0
.DA K.MKDIRYA .DA 0
*--------------------------------------
* LO Byte :
* #RRAMWRAMBNK1 or #RRAMWRAMBNK2
* LO Byte :
*-------------------------------------- *--------------------------------------
KERNEL.SYSCALL.FLAGS KERNEL.SYSCALL.FLAGS
.DA 0 $00 *--------------------------------------
.DA 0 $00 : MEM $E000
.DA 0 .DA 0
.DA 0 .DA 0
.DA 0 .DA 0
@ -161,7 +167,7 @@ KERNEL.SYSCALL.FLAGS
.DA 0 .DA 0
.DA 0 .DA 0
*-------------------------------------- *--------------------------------------
.DA 0 $10 .DA 0 $10 : STR $D001
.DA 0 .DA 0
.DA 0 .DA 0
.DA 0 .DA 0
@ -170,14 +176,22 @@ KERNEL.SYSCALL.FLAGS
.DA 0 .DA 0
.DA 0 .DA 0
*-------------------------------------- *--------------------------------------
.DA 0 $20 .DA #RRAMWRAMBNK2 $20 : BIN,DRV,LIB (REL) $D002
.DA 0 .DA #0
.DA 0 .DA #RRAMWRAMBNK2
.DA 0 .DA #0
.DA $80 .DA #RRAMWRAMBNK2
.DA $80 .DA #0
.DA $80 .DA 0
.DA $80
.DA #RRAMWRAMBNK2 $28 : TIME $D002
.DA #0
.DA #RRAMWRAMBNK2
.DA #0
.DA #RRAMWRAMBNK2
.DA #0
.DA #RRAMWRAMBNK2
.DA #0
*-------------------------------------- *--------------------------------------
.DA 0 $30 .DA 0 $30
.DA 0 .DA 0

View File

@ -1,117 +0,0 @@
PR#3
PREFIX /A2OSX.SRC
NEW
INC 1
AUTO 6
.LIST OFF
*--------------------------------------
* PUBLIC
*--------------------------------------
K.MLICreateFile >PULLW MLICALL.PARAMS+1
>PULLB MLICALL.PARAMS+3 Access
>PULLB MLICALL.PARAMS+4 File type
>PULLW MLICALL.PARAMS+5 Aux type
lda #$01 Storage=Standard Files
sta MLICALL.PARAMS+7
>MLICALL MLICREATE
rts
*--------------------------------------
* K.MLIGetFileInfoYA
* in :
* Y,A = FileName
* out :
* Y,A = PTR To Buffer (L=15)
*--------------------------------------
K.MLIGetFileInfoYA
>STYA MLICALL.PARAMS+1
>MLICALL MLIGETFILEINFO
bcs .9
>LDYAI MLICALL.PARAMS+3
.9 rts
*--------------------------------------
* K.MLIOpenYA
* in :
* YA = FileName
* out :
* A = ref_num
* X = buf hMem
*--------------------------------------
K.MLIOpenYA >STYA MLICALL.PARAMS+1
>PUSHWI 1024 get a ProDOS IO buffer
>PUSHBI S.MEM.F.ALIGN+S.MEM.F.NOMOVE
jsr K.GetMem
bcs .99
phx save Prodos Buffer hMem
>STYA MLICALL.PARAMS+3
>MLICALL MLIOPEN
bcs .98
lda MLICALL.PARAMS+5 get ref_num
plx get back Prodos Buffer hMem
rts CC
.98 plx get back Prodos Buffer hMem
pha save MLI error
txa
jsr K.FreeMemA discard Prodos Buffer
pla get back MLI error
sec
.99 rts
*--------------------------------------
* K.MLINewline
* in :
* PULLB = ref_num
* PULLB = Enable Mask
* PULLB = Newline Char
*--------------------------------------
K.MLINewLine >PULLB MLICALL.PARAMS+1
>PULLB MLICALL.PARAMS+2
>PULLB MLICALL.PARAMS+3
>MLICALL MLINEWLINE
rts
*--------------------------------------
* K.MLIRead
* in :
* PULLB = ref_num
* PULLW = Dest PTR
* PULLW = Bytes To Read
* out :
* Y,A = Bytes Read
*--------------------------------------
K.MLIRead >PULLB MLICALL.PARAMS+1
>PULLW MLICALL.PARAMS+2
>PULLW MLICALL.PARAMS+4
>MLICALL MLIREAD
bcs .9
>LDYA MLICALL.PARAMS+6
.9 rts
*--------------------------------------
* K.MLIWrite
* in :
* PULLB = ref_num
* PULLW = Src PTR
* PULLW = Bytes To Write
* out :
* Y,A = Bytes Written
*--------------------------------------
K.MLIWrite >PULLB MLICALL.PARAMS+1
>PULLW MLICALL.PARAMS+2
>PULLW MLICALL.PARAMS+4
>MLICALL MLIWRITE
bcs .9
>LDYA MLICALL.PARAMS+6
.9 rts
*--------------------------------------
* K.MLICloseA
* in :
* A = ref_num
* out :
*--------------------------------------
K.MLICloseA sta MLICALL.PARAMS+1
>MLICALL MLICLOSE
rts
*--------------------------------------
MAN
SAVE SYS/KERNEL.S.MLI
LOAD SYS/KERNEL.S
ASM

View File

@ -5,9 +5,26 @@ INC 1
AUTO 6 AUTO 6
.LIST OFF .LIST OFF
*-------------------------------------- *--------------------------------------
* In : * K.PFTAdd
* PULLW/Y,A = PATH (PSTR) * In :
* Out : * Out :
*--------------------------------------
K.PFTAdd
clc
rts
*--------------------------------------
* K.PFTRemove
* In :
* Out :
*--------------------------------------
K.PFTRemove
clc
rts
*--------------------------------------
* K.PFTCheckPath___
* In :
* PULLW/Y,A = PATH (PSTR)
* Out :
*-------------------------------------- *--------------------------------------
K.PFTCheckPathSTK K.PFTCheckPathSTK
lda (pStack) read PTR.LO on top of stack lda (pStack) read PTR.LO on top of stack
@ -63,9 +80,10 @@ K.PFTCheckPathYA
ldx S.PFT.SYSCALL ldx S.PFT.SYSCALL
rts rts
*-------------------------------------- *--------------------------------------
* In : * K.PFTCheck___
* PULLB/A = hFILE/hDIR * In :
* Out : * PULLB/A = hFILE/hDIR
* Out :
*-------------------------------------- *--------------------------------------
K.PFTCheckFileSTK K.PFTCheckFileSTK
lda (pStack) read hFILE on top of stack lda (pStack) read hFILE on top of stack

View File

@ -38,7 +38,7 @@ ZPQuickPtr4 .EQ ZPKERNEL+6
*-------------------------------------- *--------------------------------------
* Kernel Init Stage 3 * Kernel Init Stage 3
*-------------------------------------- *--------------------------------------
jsr GO.AUXLC jsr GO.A2osX
jsr Kernel.Init3 jsr Kernel.Init3
>DEBUGOA >DEBUGOA
@ -61,13 +61,13 @@ A2osX.BE00.END .EQ *
*-------------------------------------- *--------------------------------------
A2osX.D001 .EQ * A2osX.D001 .EQ *
.PH $D000 .PH $D000
.DA #RRAMWRAMBNK1
.INB SYS/KERNEL.S.RUN .INB SYS/KERNEL.S.RUN
.INB SYS/KERNEL.S.STR .INB SYS/KERNEL.S.STR
.INB SYS/KERNEL.S.CIO
.INB SYS/KERNEL.S.FIO
.INB SYS/KERNEL.S.MLI
.INB SYS/KERNEL.S.ARG .INB SYS/KERNEL.S.ARG
.INB SYS/KERNEL.S.ENV .INB SYS/KERNEL.S.ENV
.INB SYS/KERNEL.S.CIO
.INB SYS/KERNEL.S.FIO
.INB SYS/KERNEL.S.EVT .INB SYS/KERNEL.S.EVT
.INB SYS/KERNEL.S.TSK .INB SYS/KERNEL.S.TSK
.INB SYS/KERNEL.S.PS .INB SYS/KERNEL.S.PS
@ -78,8 +78,15 @@ A2osX.D001.END .EQ *
*-------------------------------------- *--------------------------------------
A2osX.D002 .EQ * A2osX.D002 .EQ *
.PH $D000 .PH $D000
.DA #RRAMWRAMBNK2
.INB SYS/KERNEL.S.BIN
.INB SYS/KERNEL.S.DRV
.INB SYS/KERNEL.S.LIB
.INB SYS/KERNEL.S.REL .INB SYS/KERNEL.S.REL
.INB SYS/KERNEL.S.TIME .INB SYS/KERNEL.S.TIME
.INB SYS/KERNEL.S.FILE
.INB SYS/KERNEL.S.DIR
.INB SYS/KERNEL.S.PFT
.EP .EP
A2osX.D002.END .EQ * A2osX.D002.END .EQ *
*-------------------------------------- *--------------------------------------
@ -90,19 +97,14 @@ A2osX.E000 .EQ *
.INB SYS/KERNEL.S.JMP .INB SYS/KERNEL.S.JMP
.INB SYS/KERNEL.S.IRQ .INB SYS/KERNEL.S.IRQ
.INB SYS/KERNEL.S.MEM .INB SYS/KERNEL.S.MEM
.INB SYS/KERNEL.S.BIN
.INB SYS/KERNEL.S.DRV
.INB SYS/KERNEL.S.LIB
*--------------------------------------
.INB SYS/KERNEL.S.PFT
.INB SYS/KERNEL.S.FILE
.INB SYS/KERNEL.S.DIR
*-------------------------------------- *--------------------------------------
* Make sure KERNEL.S.DEV is the last one * Make sure KERNEL.S.DEV is the last one
*-------------------------------------- *--------------------------------------
.INB SYS/KERNEL.S.DEV .INB SYS/KERNEL.S.DEV
.EP .EP
A2osX.E000.END .EQ * A2osX.E000.END .EQ *
*--------------------------------------
* CONTROL SECTION :
*-------------------------------------- *--------------------------------------
.LIST ON .LIST ON
*-------------------------------------- *--------------------------------------
@ -112,6 +114,22 @@ A2osX.D002.SIZE .EQ A2osX.D002.END-A2osX.D002
A2osX.E000.SIZE .EQ A2osX.E000.END-A2osX.E000 A2osX.E000.SIZE .EQ A2osX.E000.END-A2osX.E000
*-------------------------------------- *--------------------------------------
.LIST OFF .LIST OFF
.DO A2osX.BE00.SIZE>$E0
.LIST ON
* !!!!!!!!!!!!! ERROR:GP too big !!!!!!!!!!!!
.LIST OFF
.FIN
.DO A2osX.D001.SIZE>$1000
.LIST ON
* !!!!!!!!!!!!! ERROR:BNK1 too big !!!!!!!!!!
.LIST OFF
.FIN
.DO A2osX.D002.SIZE>$1000
.LIST ON
* !!!!!!!!!!!!! ERROR:BNK2 too big !!!!!!!!!!
.LIST OFF
.FIN
*--------------------------------------
MAN MAN
SAVE SYS/KERNEL.S SAVE SYS/KERNEL.S
ASM ASM