mirror of
https://github.com/A2osX/A2osX.git
synced 2025-03-11 16:36:36 +00:00
Kernel version 0.8 : FILE/DIR migration in BIN/EDIT
This commit is contained in:
parent
61e5918375
commit
2ed4cf6587
BIN
A2OSX.BOOT.po
BIN
A2OSX.BOOT.po
Binary file not shown.
BIN
A2OSX.SRC.po
BIN
A2OSX.SRC.po
Binary file not shown.
@ -550,6 +550,7 @@ Prompt.Save cmp #3
|
||||
lda (pData),y
|
||||
beq .11
|
||||
>SYSCALL SYS.FreeMemA
|
||||
|
||||
.11 >LDYA pData
|
||||
>SYSCALL SYS.NewPStrYA
|
||||
|
||||
|
187
BIN/EDIT.S.txt
187
BIN/EDIT.S.txt
@ -96,92 +96,39 @@ J.CTRL .DA Ctrl.Invalid
|
||||
.DA Ctrl.Invalid
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
CS.INIT stz hFile
|
||||
stz TmpFilename
|
||||
stz TmpLen
|
||||
stz TmpLen+1
|
||||
|
||||
lda #$ff
|
||||
CS.INIT lda #$ff
|
||||
ldy #bSaved
|
||||
sta (pData),y
|
||||
|
||||
>SYSCALL SYS.GetArgC
|
||||
cmp #1
|
||||
beq .1
|
||||
beq .1 No arg, new file....
|
||||
|
||||
lda #1
|
||||
>SYSCALL SYS.GetArgA
|
||||
|
||||
>SYSCALL SYS.GetFullPathYA
|
||||
stx TmpFilename
|
||||
|
||||
>SYSCALL SYS.LoadFileYA
|
||||
bcs .1
|
||||
|
||||
stx hFile
|
||||
>STYA TmpLen
|
||||
|
||||
.1 >LDYA TmpLen
|
||||
iny
|
||||
bne .2
|
||||
inc
|
||||
|
||||
.2 >PUSHYA
|
||||
>PUSHBI S.MEM.F.INIT0
|
||||
>SYSCALL SYS.GetMem
|
||||
bcs .98
|
||||
|
||||
>STYA ZPPTR2
|
||||
txa
|
||||
ldy #hBuffer
|
||||
sta (pData),y
|
||||
|
||||
lda hFile
|
||||
beq .7
|
||||
|
||||
>SYSCALL SYS.GetMemPtrA
|
||||
>STYA ZPPTR1
|
||||
|
||||
>LDYA TmpLen
|
||||
>STYA TmpCount
|
||||
|
||||
ldy #0
|
||||
|
||||
.5 jsr DecTmpCount
|
||||
beq .6
|
||||
lda (ZPPTR1),y
|
||||
sta (ZPPTR2),y
|
||||
iny
|
||||
bne .5
|
||||
inc ZPPTR1+1
|
||||
inc ZPPTR2+1
|
||||
bra .5
|
||||
|
||||
.6 lda hFile
|
||||
>SYSCALL SYS.FreeMemA
|
||||
|
||||
.7 ldy #FileLen
|
||||
lda TmpLen
|
||||
sta (pData),y
|
||||
iny
|
||||
lda TmpLen+1
|
||||
sta (pData),y
|
||||
|
||||
lda TmpFilename
|
||||
ldy #hFileName
|
||||
sta (pData),y
|
||||
|
||||
lda (pPs)
|
||||
jsr LoadFile
|
||||
bcc .8 if CS, Failed to load file, keep name, but new file....
|
||||
|
||||
.1 >PUSHWI 1 buffer size = 0 (+ 1 for ending 0)
|
||||
>PUSHBI S.MEM.F.INIT0
|
||||
>SYSCALL SYS.GetMem
|
||||
bcs .9
|
||||
|
||||
txa
|
||||
ldy #hBuffer FileLen already set to 0
|
||||
sta (pData),y
|
||||
|
||||
.8 lda (pPs)
|
||||
ora #S.PS.F.EVENT Now accept events
|
||||
sta (pPs)
|
||||
clc
|
||||
rts
|
||||
|
||||
.98 lda hFile
|
||||
beq .99
|
||||
>SYSCALL SYS.FreeMemA
|
||||
sec
|
||||
.99 rts
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CS.RUN ldy #bCancel
|
||||
lda (pData),y
|
||||
@ -391,25 +338,81 @@ CS.QUIT ldy #hBuffer
|
||||
>SYSCALL SYS.CoutA
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
SaveFile >PUSHWI 0 Aux type
|
||||
>PUSHBI 4 type=TXT
|
||||
>PUSHBI $C3 access=RW
|
||||
LoadFile >PUSHWI 0 Aux type
|
||||
>PUSHBI 4 S.FILEINFO.TYPE.TXT
|
||||
>PUSHBI SYS.FOPEN.R
|
||||
ldy #hFileName
|
||||
lda (pData),y
|
||||
>SYSCALL SYS.GetMemPtrA
|
||||
>PUSHYA
|
||||
>SYSCALL SYS.MLICreateFile
|
||||
bcc .1
|
||||
cmp #$47 File Exists error?
|
||||
bne .9 no, sec;rts
|
||||
|
||||
.1 ldy #hFileName
|
||||
lda (pData),y
|
||||
>SYSCALL SYS.GetMemPtrA
|
||||
>SYSCALL SYS.MLIOpenYA
|
||||
|
||||
>PUSHYA
|
||||
>SYSCALL SYS.LoadFile
|
||||
bcs .9
|
||||
sta hFile
|
||||
stx TmpByte
|
||||
|
||||
stx hMem
|
||||
>STYA TmpLen
|
||||
iny
|
||||
bne .2
|
||||
inc +1 for ending zero
|
||||
|
||||
.2 >PUSHYA
|
||||
>PUSHBI S.MEM.F.INIT0
|
||||
>SYSCALL SYS.GetMem
|
||||
bcs .98
|
||||
|
||||
>STYA ZPPTR2
|
||||
txa
|
||||
ldy #hBuffer
|
||||
sta (pData),y
|
||||
|
||||
lda hMem
|
||||
|
||||
>SYSCALL SYS.GetMemPtrA
|
||||
>STYA ZPPTR1
|
||||
|
||||
>LDYA TmpLen
|
||||
>STYA TmpCount
|
||||
|
||||
ldy #0
|
||||
|
||||
.5 jsr DecTmpCount
|
||||
beq .6
|
||||
lda (ZPPTR1),y
|
||||
sta (ZPPTR2),y
|
||||
iny
|
||||
bne .5
|
||||
inc ZPPTR1+1
|
||||
inc ZPPTR2+1
|
||||
bra .5
|
||||
|
||||
.6 lda hMem
|
||||
>SYSCALL SYS.FreeMemA
|
||||
|
||||
.7 ldy #FileLen
|
||||
lda TmpLen
|
||||
sta (pData),y
|
||||
iny
|
||||
lda TmpLen+1
|
||||
sta (pData),y
|
||||
|
||||
.98 pha
|
||||
lda hMem
|
||||
beq .9
|
||||
>SYSCALL SYS.FreeMemA
|
||||
pla
|
||||
sec
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
SaveFile >PUSHWI 0 Aux type
|
||||
>PUSHBI 4 S.FILEINFO.TYPE.TXT
|
||||
>PUSHBI SYS.FOPEN.X+SYS.FOPEN.W
|
||||
ldy #hFileName
|
||||
lda (pData),y
|
||||
|
||||
>SYSCALL SYS.GetMemPtrA
|
||||
|
||||
>PUSHYA
|
||||
|
||||
ldy #FileLen+1
|
||||
>PUSHB (pData),y
|
||||
@ -421,21 +424,7 @@ SaveFile >PUSHWI 0 Aux type
|
||||
>SYSCALL SYS.GetMemPtrA
|
||||
>PUSHYA
|
||||
|
||||
>PUSHB hFile
|
||||
>SYSCALL SYS.MLIWrite
|
||||
bcs .99
|
||||
|
||||
jsr .99
|
||||
clc
|
||||
rts
|
||||
|
||||
.99 pha
|
||||
lda hFile
|
||||
>SYSCALL SYS.MLICloseA
|
||||
lda TmpByte
|
||||
>SYSCALL SYS.FreeMemA
|
||||
pla
|
||||
.9 sec
|
||||
>SYSCALL SYS.SaveFile
|
||||
rts
|
||||
*--------------------------------------
|
||||
DecTmpCount lda TmpCount
|
||||
@ -492,7 +481,7 @@ MSG.HELP >PSTRING "All commands: (* = Not yet implemented)"
|
||||
.HS 00
|
||||
EscChars >PSTRING "DBAC"
|
||||
EscAscii .HS 04080A0B15
|
||||
hFile .BS 1
|
||||
hMem .BS 1
|
||||
TmpFilename .BS 1
|
||||
TmpByte .BS 1
|
||||
TmpLen .BS 2
|
||||
|
@ -37,20 +37,6 @@ ZPDRV .EQ $80
|
||||
ZPBIN .EQ $90
|
||||
ZPLIB .EQ $A0 32 bytes for TCPIP
|
||||
*--------------------------------------
|
||||
R.VCPU16 .EQ $F0
|
||||
R.AX .EQ R.VCPU16
|
||||
R.AL .EQ R.VCPU16
|
||||
R.AH .EQ R.VCPU16+$1
|
||||
R.BX .EQ R.VCPU16+$2
|
||||
R.BL .EQ R.VCPU16+$2
|
||||
R.BH .EQ R.VCPU16+$3
|
||||
R.CX .EQ R.VCPU16+$4
|
||||
R.CL .EQ R.VCPU16+$4
|
||||
R.CH .EQ R.VCPU16+$5
|
||||
R.DX .EQ R.VCPU16+$6
|
||||
R.DL .EQ R.VCPU16+$6
|
||||
R.DH .EQ R.VCPU16+$7
|
||||
*--------------------------------------
|
||||
* Memory Map
|
||||
*--------------------------------------
|
||||
A2osX.SaveSM .EQ $100 Aux
|
||||
@ -234,6 +220,8 @@ SYS.GetDevByNameYA .EQ $84
|
||||
SYS.GetDevInfoA .EQ $86
|
||||
|
||||
SYS.GetKeyboardEvent .EQ $88
|
||||
SYS.MKNOD .EQ $8C
|
||||
SYS.MKFIFO .EQ $8E
|
||||
*--------------------------------------
|
||||
SYS.ExecProcessNewEnvYA .EQ $90
|
||||
SYS.ExecProcessYA .EQ $92
|
||||
@ -247,11 +235,9 @@ SYS.Sleep .EQ $9C
|
||||
SYS.CheckPrefixYA .EQ $A0
|
||||
SYS.FileSearch .EQ $A2
|
||||
SYS.GetFullPathYA .EQ $A4
|
||||
SYS.LoadFileYA .EQ $A6
|
||||
SYS.LoadFile .EQ $A6
|
||||
|
||||
SYS.ListDirInitYA .EQ $AA
|
||||
SYS.ListDirNextA .EQ $AC
|
||||
SYS.ListDirCloseA .EQ $AE
|
||||
SYS.SaveFile .EQ $A8
|
||||
*--------------------------------------
|
||||
SYS.AddNetCfg .EQ $B0
|
||||
SYS.SetNetCfg .EQ $B2
|
||||
@ -281,7 +267,7 @@ SYS.FOPEN.A .EQ $04 Append
|
||||
SYS.FOPEN.T .EQ $08 Open/Append in Text mode
|
||||
SYS.FOPEN.X .EQ $80 Create if not exists
|
||||
|
||||
SYS.FCLOSE .EQ $E2
|
||||
SYS.FCLOSEA .EQ $E2
|
||||
SYS.FREAD .EQ $E4
|
||||
SYS.FWRITE .EQ $E6
|
||||
|
||||
@ -295,13 +281,13 @@ SYS.FEOF .EQ $EE
|
||||
|
||||
SYS.REMOVE .EQ $F0
|
||||
SYS.RENAME .EQ $F2
|
||||
SYS.OPENDIRYA .EQ $F4
|
||||
SYS.READDIRA .EQ $F6
|
||||
SYS.STAT .EQ $F4
|
||||
SYS.FSTAT .EQ $F6
|
||||
|
||||
SYS.CLOSEDIRA .EQ $F8
|
||||
SYS.MKDIRYA .EQ $FA
|
||||
SYS.MKNOD .EQ $FC
|
||||
SYS.MKFIFO .EQ $FE
|
||||
SYS.OPENDIRYA .EQ $F8
|
||||
SYS.READDIRA .EQ $FA
|
||||
SYS.CLOSEDIRA .EQ $FC
|
||||
SYS.MKDIRYA .EQ $FE
|
||||
*--------------------------------------
|
||||
* ProDOS ERROR CODES : $00->$5F
|
||||
* Lib ERROR CODES : $80->$BF
|
||||
|
@ -47,11 +47,13 @@ S.FILEINFO.ACCESS.RN .EQ $40
|
||||
S.FILEINFO.ACCESS.D .EQ $80
|
||||
S.FILEINFO.ACCESS.FULL .EQ $C3
|
||||
S.FILEINFO.TYPE .EQ $04
|
||||
S.FILEINFO.TYPE.TXT .EQ $04
|
||||
S.FILEINFO.TYPE.DIR .EQ $0F
|
||||
S.FILEINFO.TYPE.SYS .EQ $FF
|
||||
S.FILEINFO.AUXTYPE .EQ $05
|
||||
S.FILEINFO.TOTALBLOCKS .EQ $05
|
||||
S.FILEINFO.STORETYPE .EQ $07
|
||||
S.FILEINFO.STORETYPE.STD .EQ $01
|
||||
S.FILEINFO.STORETYPE.DIR .EQ $0D
|
||||
S.FILEINFO.BLOCKSUSED .EQ $08
|
||||
S.FILEINFO.MODDATE .EQ $0A
|
||||
|
@ -13,8 +13,8 @@ AUTO 6
|
||||
* In :
|
||||
* PULLW = PATH (PSTR)
|
||||
* PULLB = MODE
|
||||
* SYS.FOPEN.R .EQ $01 //Ignored (No ProDOS equivalent)
|
||||
* SYS.FOPEN.W .EQ $02 //Ignored (No ProDOS equivalent)
|
||||
* SYS.FOPEN.R .EQ $01 if R and !exists -> ERROR
|
||||
* SYS.FOPEN.W .EQ $02 if W and !exists -> CREATE
|
||||
* SYS.FOPEN.A .EQ $04 Append
|
||||
* SYS.FOPEN.T .EQ $08 Open/Append in Text mode
|
||||
* SYS.FOPEN.X .EQ $80 Create if not exists
|
||||
@ -31,18 +31,19 @@ S.FOPEN jsr S.PFTCHECKPATHSTK
|
||||
>PULLW S.FOPEN.AUXTYPE
|
||||
|
||||
>MLICALL MLIGETFILEINFO
|
||||
>DEBUG
|
||||
bcc .10 Already Exists
|
||||
|
||||
bit S.FOPEN.MODE Create if not exists ?
|
||||
bpl .9 No, return MLI error
|
||||
|
||||
lda #$C3 Yes, Create...
|
||||
lda #S.FILEINFO.ACCESS.FULL Yes, Create...
|
||||
sta MLICALL.PARAMS+3 Access
|
||||
lda S.FOPEN.TYPE
|
||||
sta MLICALL.PARAMS+4 File type
|
||||
>LDYA S.FOPEN.AUXTYPE
|
||||
>STYA MLICALL.PARAMS+5 Aux type
|
||||
lda #$01 Storage=Standard Files
|
||||
lda #S.FILEINFO.STORETYPE.STD
|
||||
sta MLICALL.PARAMS+7
|
||||
>MLICALL MLICREATE
|
||||
bcc .10
|
||||
@ -293,6 +294,16 @@ S.RENAME jsr S.PFTCHECKPATHYA
|
||||
>MLICALL MLIRENAME
|
||||
rts
|
||||
*--------------------------------------
|
||||
S.STAT jsr S.PFTCHECKPATHYA
|
||||
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
S.FSTAT jsr S.PFTCHECKFILEA
|
||||
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
FIL.SetupPrt1A jsr S.GetMemPtrA
|
||||
>STYA ZPQuickPtr1
|
||||
ldy #S.FILE.PRODOS.REF
|
||||
|
@ -133,6 +133,42 @@ S.GetFullPathYA >STYA ZPQuickPtr3 Ptr1 & 2 used by StrCpy
|
||||
.9 sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
* S.LoadFile
|
||||
* in :
|
||||
* PULLW = PATH (Handled by....
|
||||
* PULLB = MODE ...
|
||||
* PULLB = TYPE ...
|
||||
* PULLW = AUXTYPE ...FOPEN)
|
||||
* out :
|
||||
* Y,A = File Length
|
||||
* X = hMem of Loaded File
|
||||
*--------------------------------------
|
||||
S.LoadFile jsr S.FOPEN
|
||||
bcs .9
|
||||
|
||||
sta S.LoadFile.hFile
|
||||
|
||||
jsr S.FSTATA
|
||||
>PUSHW S.LoadFile.Mem
|
||||
|
||||
>PUSHW S.LoadFile.Len
|
||||
|
||||
>PUSHB S.LoadFile.hFile
|
||||
jsr S.FREAD
|
||||
bcs .99
|
||||
|
||||
jsr .99
|
||||
clc
|
||||
rts
|
||||
|
||||
.99 pha
|
||||
lda S.LoadFile.hFile
|
||||
jsr S.FCLOSEA
|
||||
pla
|
||||
sec
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
* S.LoadFileYA
|
||||
* in :
|
||||
* Y,A = FilePath (PSTRING)
|
||||
@ -192,14 +228,47 @@ S.LoadFileYA jsr S.MLIOpenYA
|
||||
.99 sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
S.LoadFile.hRef .BS 1
|
||||
S.LoadFile.hBuf .BS 1
|
||||
* PULLW = SrcPtr
|
||||
* PULLW = SrcLen
|
||||
* PULLW = PATH (Handled by....
|
||||
* PULLB = MODE ...
|
||||
* PULLB = TYPE ...
|
||||
* PULLW = AUXTYPE ...FOPEN)
|
||||
*--------------------------------------
|
||||
S.SaveFile >PULLW S.LoadFile.Mem
|
||||
>PULLW S.LoadFile.Len
|
||||
|
||||
jsr S.FOPEN
|
||||
bcs .9
|
||||
|
||||
sta S.LoadFile.hFile
|
||||
|
||||
>PUSHW S.LoadFile.Mem
|
||||
|
||||
>PUSHW S.LoadFile.Len
|
||||
|
||||
>PUSHB S.LoadFile.hFile
|
||||
jsr S.FWRITE
|
||||
bcs .99
|
||||
|
||||
jsr .99
|
||||
clc
|
||||
rts
|
||||
|
||||
.99 pha
|
||||
lda S.LoadFile.hFile
|
||||
jsr S.FCLOSEA
|
||||
pla
|
||||
sec
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
S.LoadFile.Filename .BS 2
|
||||
S.LoadFile.hFile .BS 1
|
||||
S.LoadFile.hMem .BS 1
|
||||
S.LoadFile.Mem .BS 2
|
||||
S.LoadFile.Len .BS 2
|
||||
*--------------------------------------
|
||||
TmpFileName .BS 16
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE SYS/KERNEL.S.FIO
|
||||
LOAD SYS/KERNEL.S
|
||||
|
@ -101,7 +101,7 @@ KERNEL.SYSCALL .DA S.GetMem $00
|
||||
.DA S.FileSearch
|
||||
.DA S.GetFullPathYA
|
||||
.DA S.LoadFileYA
|
||||
.DA 0
|
||||
.DA S.SaveFile
|
||||
.DA 0
|
||||
.DA 0
|
||||
.DA 0
|
||||
@ -144,12 +144,12 @@ KERNEL.SYSCALL .DA S.GetMem $00
|
||||
*--------------------------------------
|
||||
.DA S.REMOVEYA $F0
|
||||
.DA S.RENAME
|
||||
.DA S.STAT
|
||||
.DA S.FSTAT
|
||||
.DA S.OPENDIRYA
|
||||
.DA S.READDIRA
|
||||
.DA S.CLOSEDIRA
|
||||
.DA S.MKDIRYA
|
||||
.DA 0
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
KERNEL.SYSCALL.FLAGS
|
||||
.DA 0 $00
|
||||
|
@ -69,6 +69,8 @@ A2osX.D001 .EQ *
|
||||
.INB SYS/KERNEL.S.ARG
|
||||
.INB SYS/KERNEL.S.ENV
|
||||
.INB SYS/KERNEL.S.EVT
|
||||
.INB SYS/KERNEL.S.TSK
|
||||
.INB SYS/KERNEL.S.PS
|
||||
.EP
|
||||
A2osX.D001.END .EQ *
|
||||
*--------------------------------------
|
||||
@ -91,8 +93,6 @@ A2osX.E000 .EQ *
|
||||
.INB SYS/KERNEL.S.BIN
|
||||
.INB SYS/KERNEL.S.DRV
|
||||
.INB SYS/KERNEL.S.LIB
|
||||
.INB SYS/KERNEL.S.TSK
|
||||
.INB SYS/KERNEL.S.PS
|
||||
*--------------------------------------
|
||||
.INB SYS/KERNEL.S.PFT
|
||||
.INB SYS/KERNEL.S.FILE
|
||||
|
Loading…
x
Reference in New Issue
Block a user