mirror of
https://github.com/A2osX/A2osX.git
synced 2025-02-05 23:30:15 +00:00
Kernel version 0.8 : MLI API Removed
This commit is contained in:
parent
7984c2ba74
commit
f6e3d2e9b3
@ -28,10 +28,10 @@ K.GetArgC jsr S.InitArgPtr1
|
||||
* CC : Y,A = PStr To Arg[A]
|
||||
* CS : Out Of Bound
|
||||
*--------------------------------------
|
||||
K.GetArgA sta K.GetArgA.Idx
|
||||
K.GetArgA sta .2+1
|
||||
jsr S.InitArgPtr1
|
||||
|
||||
lda K.GetArgA.Idx
|
||||
lda .2+1
|
||||
beq .8
|
||||
|
||||
ldx #0
|
||||
@ -39,7 +39,7 @@ K.GetArgA sta K.GetArgA.Idx
|
||||
.1 lda (ZPQuickPtr1)
|
||||
beq .9
|
||||
|
||||
cpx K.GetArgA.Idx
|
||||
.2 cpx #$ff Self Modified
|
||||
beq .8
|
||||
|
||||
jsr S.NextArgPtr1
|
||||
@ -67,8 +67,6 @@ S.NextArgPtr1 lda ZPQuickPtr1
|
||||
inc ZPQuickPtr1+1
|
||||
.8 rts
|
||||
*--------------------------------------
|
||||
K.GetArgA.Idx .BS 1
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE SYS/KERNEL.S.ARG
|
||||
LOAD SYS/KERNEL.S
|
||||
|
@ -34,7 +34,15 @@ K.LoadBinYA >STYA K.LoadBin.Filename
|
||||
clc
|
||||
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 SYS.FOPEN.R
|
||||
>PUSHW K.LoadBin.Filename
|
||||
@ -47,27 +55,8 @@ K.LoadBinYA >STYA K.LoadBin.Filename
|
||||
jsr K.GetMemPtrA
|
||||
>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
|
||||
|
||||
bit RRAMWRAMBNK1
|
||||
bit RRAMWRAMBNK1
|
||||
|
||||
bcs .98 relocation error, dicard Code segment
|
||||
|
||||
>LDYA K.LoadBin.Filename get back bin path
|
||||
|
@ -507,26 +507,6 @@ K.READDIRA.AddToBuf
|
||||
inc ZPQuickPtr4+1
|
||||
.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
|
||||
lda #2 Block size is $200 for ProDOS
|
||||
sta (ZPQuickPtr3),y
|
||||
|
@ -46,14 +46,8 @@ K.LoadDrvYA >STYA K.LoadDrv.CmdArray
|
||||
|
||||
bcs .97
|
||||
|
||||
bit RRAMWRAMBNK2
|
||||
bit RRAMWRAMBNK2
|
||||
|
||||
jsr K.InsDrv
|
||||
|
||||
bit RRAMWRAMBNK1
|
||||
bit RRAMWRAMBNK1
|
||||
|
||||
bcs .97
|
||||
|
||||
ldy #S.DEV.F
|
||||
|
@ -144,7 +144,7 @@ K.FCLOSEA.1 ldy #S.FILE.PRODOS.REF
|
||||
*--------------------------------------
|
||||
K.FREAD jsr K.PFTCheckFileSTK
|
||||
>PULLA
|
||||
jsr FIL.SetupPrt1A
|
||||
jsr FILE.SetupPrt1A
|
||||
>PULLW MLICALL.PARAMS+4
|
||||
>PULLW MLICALL.PARAMS+2
|
||||
>MLICALL MLIREAD
|
||||
@ -162,7 +162,7 @@ K.FREAD jsr K.PFTCheckFileSTK
|
||||
*--------------------------------------
|
||||
K.FWRITE jsr K.PFTCheckFileSTK
|
||||
>PULLA
|
||||
jsr FIL.SetupPrt1A
|
||||
jsr FILE.SetupPrt1A
|
||||
>PULLW MLICALL.PARAMS+4
|
||||
>PULLW MLICALL.PARAMS+2
|
||||
>MLICALL MLIWRITE
|
||||
@ -175,7 +175,7 @@ K.FWRITE jsr K.PFTCheckFileSTK
|
||||
* A = hFILE
|
||||
*--------------------------------------
|
||||
K.FFLUSHA jsr K.PFTCheckFileA
|
||||
jsr FIL.SetupPrt1A
|
||||
jsr FILE.SetupPrt1A
|
||||
>MLICALL MLIFLUSH
|
||||
rts
|
||||
*--------------------------------------
|
||||
@ -188,7 +188,7 @@ K.FFLUSHA jsr K.PFTCheckFileA
|
||||
*--------------------------------------
|
||||
K.FSEEK jsr K.PFTCheckFileSTK
|
||||
>PULLA
|
||||
jsr FIL.SetupPrt1A
|
||||
jsr FILE.SetupPrt1A
|
||||
>PULLB K.FSEEK.FROM
|
||||
>PULLW K.FSEEK.OFFSET
|
||||
>PULLW K.FSEEK.OFFSET+2
|
||||
@ -245,7 +245,7 @@ K.FSEEK.OFFSET .BS 4
|
||||
* Y,A,X = Offset
|
||||
*--------------------------------------
|
||||
K.FTELLA jsr K.PFTCheckFileA
|
||||
K.FTELLA.1 jsr FIL.SetupPrt1A
|
||||
K.FTELLA.1 jsr FILE.SetupPrt1A
|
||||
>MLICALL MLIGETMARK
|
||||
bcs .9
|
||||
>LDYA MLICALL.PARAMS+2
|
||||
@ -262,7 +262,7 @@ K.FTELLA.1 jsr FIL.SetupPrt1A
|
||||
* CS :
|
||||
*--------------------------------------
|
||||
K.FEOFA jsr K.PFTCheckFileA
|
||||
jsr FIL.SetupPrt1A
|
||||
jsr FILE.SetupPrt1A
|
||||
jsr K.FTELLA.1
|
||||
bcs .9
|
||||
>STYA K.FEOFA.MARK
|
||||
@ -304,43 +304,48 @@ K.RENAME jsr K.PFTCheckPathSTK
|
||||
*--------------------------------------
|
||||
* K.STAT
|
||||
* 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 S.STAT buffer
|
||||
*--------------------------------------
|
||||
K.FSTAT jsr K.PFTCheckPathSTK
|
||||
K.STAT jsr K.PFTCheckPathSTK
|
||||
>PULLW MLICALL.PARAMS+1
|
||||
>PULLW ZPQuickPtr2
|
||||
>MLICALL MLIGETFILEINFO
|
||||
bcs .9
|
||||
>LDYAI MLICALL.PARAMS+3
|
||||
|
||||
jsr FILE.MLI2STAT.Types
|
||||
clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
FIL.SetupPrt1A jsr K.GetMemPtrA
|
||||
FILE.SetupPrt1A jsr K.GetMemPtrA
|
||||
>STYA ZPQuickPtr1
|
||||
ldy #S.FILE.PRODOS.REF
|
||||
lda (ZPQuickPtr1),y
|
||||
sta MLICALL.PARAMS+1
|
||||
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
|
||||
SAVE SYS/KERNEL.S.FILE
|
||||
LOAD SYS/KERNEL.S
|
||||
|
@ -5,30 +5,6 @@ INC 1
|
||||
AUTO 6
|
||||
.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
|
||||
* in :
|
||||
* PULLW = PSTR to File Name (PSTRING)
|
||||
@ -78,10 +54,11 @@ K.FileSearch >PULLW ZPQuickPtr4 ZPQuickPtr1 trashed by ExpandPStrYA
|
||||
cmp (ZPQuickPtr4)
|
||||
bne .4
|
||||
|
||||
stx KrnBuf256 set string length
|
||||
stx KrnBuf256 set string length
|
||||
|
||||
>LDYAI KrnBuf256
|
||||
jsr K.MLIGetFileInfoYA
|
||||
>PUSHWI KrnSTAT
|
||||
>PUSHWI KrnBuf256
|
||||
jsr K.STAT
|
||||
bcs .1 Failed...retry next path...
|
||||
|
||||
lda K.FileSearch.hSrch Discard Expanded hSrch list
|
||||
@ -95,7 +72,6 @@ K.FileSearch >PULLW ZPQuickPtr4 ZPQuickPtr1 trashed by ExpandPStrYA
|
||||
sec
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
K.FileSearch.File .BS 2
|
||||
K.FileSearch.hSrch .BS 1
|
||||
K.FileSearch.Index .BS 1
|
||||
*--------------------------------------
|
||||
|
@ -5,14 +5,16 @@ INC 1
|
||||
AUTO 6
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
* A2osX.SYSCALL (AUXLC to AUXLC)
|
||||
* SYSCALL (AUXLC to AUXLC)
|
||||
* Used by user & kernel for inter bank Calls
|
||||
* In:
|
||||
* X = SYSfnc.Index
|
||||
* Y,A = free for Inline param
|
||||
*--------------------------------------
|
||||
A2osX.GP.Start jmp A2osX.SYSCALL1
|
||||
jmp A2osX.SYSCALL1
|
||||
*--------------------------------------
|
||||
* LIBCALL (AUXLC to AUXLC)
|
||||
* Used by user
|
||||
* In:
|
||||
* Y = LIB.ID
|
||||
* X = LIBfnc.Index
|
||||
@ -20,7 +22,8 @@ A2osX.GP.Start jmp A2osX.SYSCALL1
|
||||
*--------------------------------------
|
||||
jmp A2osX.LIBCALL1
|
||||
*--------------------------------------
|
||||
* Kernel.MLICALL (AUXLC to MAINLC)
|
||||
* MLICALL (AUXLC to MAINLC)
|
||||
* Used by Kernel
|
||||
* In:
|
||||
* X = MLI Function
|
||||
* A = Param Count
|
||||
@ -35,46 +38,66 @@ A2osX.GP.Start jmp A2osX.SYSCALL1
|
||||
jmp (pDev) pDevJmp
|
||||
.BS $BE20-*
|
||||
*--------------------------------------
|
||||
GO.Reset jsr GO.AUXLC
|
||||
GO.Reset jsr GO.A2osX
|
||||
jmp K.KernelRun
|
||||
*--------------------------------------
|
||||
A2osX.SYSCALL1 phx
|
||||
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)
|
||||
* *** MUST BE REINTRANT ***
|
||||
*--------------------------------------
|
||||
A2osX.LIBCALL1 pha
|
||||
phx
|
||||
tya
|
||||
>SYSCALL SYS.GetMemPtrA
|
||||
>STYA .1+1
|
||||
plx
|
||||
A2osX.SYSCALL1 bit KERNEL.SYSCALL.FLAGS,x
|
||||
bpl .8 in $E000, no BNK change
|
||||
|
||||
sta .7+1 save A (Func Arg)
|
||||
|
||||
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
|
||||
.1 jmp $FFFF
|
||||
jmp (pLib)
|
||||
*--------------------------------------
|
||||
A2osX.MLICALL1 jsr GO.MAINLC
|
||||
stx .1
|
||||
A2osX.MLICALL1 stx .1
|
||||
sta MLICALL.PARAMS
|
||||
jsr GO.ProDOS
|
||||
jsr MLI
|
||||
.1 .BS 1
|
||||
.DA MLICALL.PARAMS
|
||||
jsr GO.AUXLC
|
||||
jsr GO.A2osX
|
||||
rts
|
||||
*--------------------------------------
|
||||
GO.MAINLC asl RDLCBNK2 We re coming from AUXLC, saving bank...
|
||||
ror A2osX.SaveLCBNK
|
||||
GO.ProDOS lda $D000 We re coming from AUXLC, saving bank...
|
||||
sta GO.A2osX.BNK+1
|
||||
|
||||
php
|
||||
clc
|
||||
.HS 2C bit abs
|
||||
|
||||
GO.AUXLC php
|
||||
GO.A2osX php
|
||||
sec
|
||||
|
||||
sei
|
||||
@ -96,7 +119,7 @@ GO.AUXLC php
|
||||
|
||||
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
|
||||
@ -108,11 +131,7 @@ GO.AUXLC php
|
||||
sta CLRALTZP
|
||||
bra GO.EXIT
|
||||
|
||||
.2 bit A2osX.SaveLCBNK Go AUXLC....Previous Go MAINLC Coming from BNK2 ?
|
||||
bmi .3
|
||||
ldx #RRAMWRAMBNK1
|
||||
.HS 2C bit abs
|
||||
.3 ldx #RRAMWRAMBNK2
|
||||
GO.A2osX.BNK ldx #$FF Self Modified
|
||||
|
||||
bit $C000,x
|
||||
bit $C000,x
|
||||
@ -129,9 +148,8 @@ GO.EXIT sty pStack
|
||||
ldx A2osX.SaveX
|
||||
lda A2osX.SaveA
|
||||
plp
|
||||
GO.EXIT.JMP jmp $FFFF
|
||||
GO.EXIT.JMP jmp $FFFF Self Modified
|
||||
*--------------------------------------
|
||||
A2osX.SaveLCBNK .BS 1
|
||||
A2osX.SaveA .BS 1
|
||||
A2osX.SaveX .BS 1
|
||||
A2osX.SaveY .BS 1
|
||||
@ -140,14 +158,6 @@ BrkHandler bra *
|
||||
*--------------------------------------
|
||||
IrqHandler bra *
|
||||
*--------------------------------------
|
||||
A2osX.GP.End .EQ *
|
||||
*--------------------------------------
|
||||
* CONTROL SECTION :
|
||||
*--------------------------------------
|
||||
.DO A2osX.GP.End>$BEDF
|
||||
ERROR:GP too big
|
||||
.FIN
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE SYS/KERNEL.S.GP
|
||||
LOAD SYS/KERNEL.S
|
||||
|
@ -71,7 +71,7 @@ Kernel.Init2 >LDAXI MSG.Init2
|
||||
>LDAXI MSG.Setup
|
||||
jsr PrintCStrAX
|
||||
|
||||
jsr GO.AUXLC
|
||||
jsr GO.A2osX
|
||||
|
||||
jsr K.IrqMgrInit
|
||||
bcs *
|
||||
@ -86,7 +86,7 @@ Kernel.Init2 >LDAXI MSG.Init2
|
||||
jsr K.TskMgrInit
|
||||
bcs *
|
||||
|
||||
jsr GO.MAINLC Make sure MAIN ZP...
|
||||
jsr GO.ProDOS Make sure MAIN ZP...
|
||||
lda RROMBNK1 ... & ROM is enabled for X.PRINT.F
|
||||
|
||||
>LDAXI MSG.Init2.OK
|
||||
|
@ -43,7 +43,7 @@ KERNEL.SYSCALL .DA K.GetMem $00
|
||||
.DA K.GetEnvYA
|
||||
.DA K.UnsetEnvYA
|
||||
*--------------------------------------
|
||||
.DA K.MLICreateFile $40
|
||||
.DA 0 $40
|
||||
.DA 0
|
||||
.DA 0
|
||||
.DA 0
|
||||
@ -52,32 +52,32 @@ KERNEL.SYSCALL .DA K.GetMem $00
|
||||
.DA 0
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
.DA K.MLIGetFileInfoYA $50
|
||||
.DA 0 $50
|
||||
.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 $70
|
||||
.DA 0
|
||||
.DA 0
|
||||
.DA 0
|
||||
.DA 0
|
||||
.DA 0
|
||||
.DA 0
|
||||
.DA K.FOPEN $60
|
||||
.DA K.FCLOSEA
|
||||
.DA K.FREAD
|
||||
.DA K.FWRITE
|
||||
.DA K.FFLUSHA
|
||||
.DA K.FSEEK
|
||||
.DA K.FTELLA
|
||||
.DA K.FEOFA
|
||||
*--------------------------------------
|
||||
.DA K.REMOVEYA $70
|
||||
.DA K.RENAME
|
||||
.DA K.STAT
|
||||
.DA 0
|
||||
.DA K.OPENDIRYA
|
||||
.DA K.READDIRA
|
||||
.DA K.CLOSEDIRA
|
||||
.DA K.MKDIRYA
|
||||
*--------------------------------------
|
||||
.DA K.GetDevByIDA $80
|
||||
.DA 0
|
||||
@ -97,7 +97,7 @@ KERNEL.SYSCALL .DA K.GetMem $00
|
||||
.DA K.Sleep
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
.DA K.CheckPrefixYA $A0
|
||||
.DA 0 $A0
|
||||
.DA K.FileSearch
|
||||
.DA K.GetFullPathYA
|
||||
.DA 0
|
||||
@ -133,26 +133,32 @@ KERNEL.SYSCALL .DA K.GetMem $00
|
||||
.DA K.DecOutA
|
||||
.DA K.DecOutYA
|
||||
*--------------------------------------
|
||||
.DA K.FOPEN $E0
|
||||
.DA K.FCLOSEA
|
||||
.DA K.FREAD
|
||||
.DA K.FWRITE
|
||||
.DA K.FFLUSHA
|
||||
.DA K.FSEEK
|
||||
.DA K.FTELLA
|
||||
.DA K.FEOFA
|
||||
.DA 0 $E0
|
||||
.DA 0
|
||||
.DA 0
|
||||
.DA 0
|
||||
.DA 0
|
||||
.DA 0
|
||||
.DA 0
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
.DA K.REMOVEYA $F0
|
||||
.DA K.RENAME
|
||||
.DA K.STAT
|
||||
.DA K.FSTAT
|
||||
.DA K.OPENDIRYA
|
||||
.DA K.READDIRA
|
||||
.DA K.CLOSEDIRA
|
||||
.DA K.MKDIRYA
|
||||
.DA 0 $F0
|
||||
.DA 0
|
||||
.DA 0
|
||||
.DA 0
|
||||
.DA 0
|
||||
.DA 0
|
||||
.DA 0
|
||||
.DA 0
|
||||
|
||||
*--------------------------------------
|
||||
* LO Byte :
|
||||
* #RRAMWRAMBNK1 or #RRAMWRAMBNK2
|
||||
* LO Byte :
|
||||
*--------------------------------------
|
||||
KERNEL.SYSCALL.FLAGS
|
||||
.DA 0 $00
|
||||
*--------------------------------------
|
||||
.DA 0 $00 : MEM $E000
|
||||
.DA 0
|
||||
.DA 0
|
||||
.DA 0
|
||||
@ -161,7 +167,7 @@ KERNEL.SYSCALL.FLAGS
|
||||
.DA 0
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
.DA 0 $10
|
||||
.DA 0 $10 : STR $D001
|
||||
.DA 0
|
||||
.DA 0
|
||||
.DA 0
|
||||
@ -170,14 +176,22 @@ KERNEL.SYSCALL.FLAGS
|
||||
.DA 0
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
.DA 0 $20
|
||||
.DA 0
|
||||
.DA 0
|
||||
.DA 0
|
||||
.DA $80
|
||||
.DA $80
|
||||
.DA $80
|
||||
.DA $80
|
||||
.DA #RRAMWRAMBNK2 $20 : BIN,DRV,LIB (REL) $D002
|
||||
.DA #0
|
||||
.DA #RRAMWRAMBNK2
|
||||
.DA #0
|
||||
.DA #RRAMWRAMBNK2
|
||||
.DA #0
|
||||
.DA 0
|
||||
|
||||
.DA #RRAMWRAMBNK2 $28 : TIME $D002
|
||||
.DA #0
|
||||
.DA #RRAMWRAMBNK2
|
||||
.DA #0
|
||||
.DA #RRAMWRAMBNK2
|
||||
.DA #0
|
||||
.DA #RRAMWRAMBNK2
|
||||
.DA #0
|
||||
*--------------------------------------
|
||||
.DA 0 $30
|
||||
.DA 0
|
||||
|
@ -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
|
@ -5,9 +5,26 @@ INC 1
|
||||
AUTO 6
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
* In :
|
||||
* PULLW/Y,A = PATH (PSTR)
|
||||
* Out :
|
||||
* K.PFTAdd
|
||||
* In :
|
||||
* Out :
|
||||
*--------------------------------------
|
||||
K.PFTAdd
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
* K.PFTRemove
|
||||
* In :
|
||||
* Out :
|
||||
*--------------------------------------
|
||||
K.PFTRemove
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
* K.PFTCheckPath___
|
||||
* In :
|
||||
* PULLW/Y,A = PATH (PSTR)
|
||||
* Out :
|
||||
*--------------------------------------
|
||||
K.PFTCheckPathSTK
|
||||
lda (pStack) read PTR.LO on top of stack
|
||||
@ -63,9 +80,10 @@ K.PFTCheckPathYA
|
||||
ldx S.PFT.SYSCALL
|
||||
rts
|
||||
*--------------------------------------
|
||||
* In :
|
||||
* PULLB/A = hFILE/hDIR
|
||||
* Out :
|
||||
* K.PFTCheck___
|
||||
* In :
|
||||
* PULLB/A = hFILE/hDIR
|
||||
* Out :
|
||||
*--------------------------------------
|
||||
K.PFTCheckFileSTK
|
||||
lda (pStack) read hFILE on top of stack
|
||||
|
@ -38,7 +38,7 @@ ZPQuickPtr4 .EQ ZPKERNEL+6
|
||||
*--------------------------------------
|
||||
* Kernel Init Stage 3
|
||||
*--------------------------------------
|
||||
jsr GO.AUXLC
|
||||
jsr GO.A2osX
|
||||
|
||||
jsr Kernel.Init3
|
||||
>DEBUGOA
|
||||
@ -61,13 +61,13 @@ A2osX.BE00.END .EQ *
|
||||
*--------------------------------------
|
||||
A2osX.D001 .EQ *
|
||||
.PH $D000
|
||||
.DA #RRAMWRAMBNK1
|
||||
.INB SYS/KERNEL.S.RUN
|
||||
.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.ENV
|
||||
.INB SYS/KERNEL.S.CIO
|
||||
.INB SYS/KERNEL.S.FIO
|
||||
.INB SYS/KERNEL.S.EVT
|
||||
.INB SYS/KERNEL.S.TSK
|
||||
.INB SYS/KERNEL.S.PS
|
||||
@ -78,8 +78,15 @@ A2osX.D001.END .EQ *
|
||||
*--------------------------------------
|
||||
A2osX.D002 .EQ *
|
||||
.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.TIME
|
||||
.INB SYS/KERNEL.S.FILE
|
||||
.INB SYS/KERNEL.S.DIR
|
||||
.INB SYS/KERNEL.S.PFT
|
||||
.EP
|
||||
A2osX.D002.END .EQ *
|
||||
*--------------------------------------
|
||||
@ -90,19 +97,14 @@ A2osX.E000 .EQ *
|
||||
.INB SYS/KERNEL.S.JMP
|
||||
.INB SYS/KERNEL.S.IRQ
|
||||
.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
|
||||
*--------------------------------------
|
||||
.INB SYS/KERNEL.S.DEV
|
||||
.EP
|
||||
A2osX.E000.END .EQ *
|
||||
*--------------------------------------
|
||||
* CONTROL SECTION :
|
||||
*--------------------------------------
|
||||
.LIST ON
|
||||
*--------------------------------------
|
||||
@ -112,6 +114,22 @@ A2osX.D002.SIZE .EQ A2osX.D002.END-A2osX.D002
|
||||
A2osX.E000.SIZE .EQ A2osX.E000.END-A2osX.E000
|
||||
*--------------------------------------
|
||||
.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
|
||||
SAVE SYS/KERNEL.S
|
||||
ASM
|
||||
|
Loading…
x
Reference in New Issue
Block a user