mirror of
https://github.com/A2osX/A2osX.git
synced 2024-10-10 12:23:45 +00:00
Kernel version 0.8 : DIR API work in progress, JMP table reorg
This commit is contained in:
parent
2762254eef
commit
951b7b3ea3
@ -164,10 +164,12 @@ SYS.FreeStockObject .EQ $0E
|
|||||||
SYS.NewPStrYA .EQ $10
|
SYS.NewPStrYA .EQ $10
|
||||||
SYS.PStrCpy .EQ $12
|
SYS.PStrCpy .EQ $12
|
||||||
SYS.PStrCat .EQ $14
|
SYS.PStrCat .EQ $14
|
||||||
SYS.PStrUprYA .EQ $16
|
SYS.PStrMatch .EQ $16
|
||||||
|
|
||||||
|
SYS.PStrUprYA .EQ $18
|
||||||
|
SYS.PStrLwrYA .EQ $1A
|
||||||
|
|
||||||
SYS.PStr2StrArrayYA .EQ $1A
|
SYS.PStr2StrArrayYA .EQ $1E
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SYS.LoadDrvYA .EQ $20
|
SYS.LoadDrvYA .EQ $20
|
||||||
SYS.LoadLibYA .EQ $22
|
SYS.LoadLibYA .EQ $22
|
||||||
@ -190,10 +192,10 @@ SYS.UnsetEnvYA .EQ $3E
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SYS.MLICreateFile .EQ $40
|
SYS.MLICreateFile .EQ $40
|
||||||
|
|
||||||
SYS.MLICreateDirYA .EQ $44
|
|
||||||
|
|
||||||
SYS.MLIDestroyYA .EQ $48
|
|
||||||
SYS.MLIRename .EQ $4A
|
|
||||||
|
|
||||||
SYS.MLISetFileInfo .EQ $4C
|
SYS.MLISetFileInfo .EQ $4C
|
||||||
|
|
||||||
|
|
||||||
@ -219,7 +221,7 @@ SYS.MLISetEOF .EQ $6C
|
|||||||
SYS.MLIGetEOFA .EQ $70
|
SYS.MLIGetEOFA .EQ $70
|
||||||
SYS.MLISetBuf .EQ $72
|
SYS.MLISetBuf .EQ $72
|
||||||
SYS.MLIGetBuf .EQ $74
|
SYS.MLIGetBuf .EQ $74
|
||||||
SYS.MLIGetTime .EQ $76
|
|
||||||
|
|
||||||
SYS.MLIAllocIRQ .EQ $78
|
SYS.MLIAllocIRQ .EQ $78
|
||||||
SYS.MLIDeallocIRQ .EQ $7A
|
SYS.MLIDeallocIRQ .EQ $7A
|
||||||
@ -512,8 +514,8 @@ S.STAT.MTIME .EQ 26 DWORD
|
|||||||
S.STAT.CTIME .EQ 30 DWORD
|
S.STAT.CTIME .EQ 30 DWORD
|
||||||
S.STAT.BLOCKS .EQ 34 DWORD
|
S.STAT.BLOCKS .EQ 34 DWORD
|
||||||
S.STAT.BLKSIZE .EQ 38 WORD
|
S.STAT.BLKSIZE .EQ 38 WORD
|
||||||
S.STAT.TYPE .EQ 40
|
S.STAT.TYPE .EQ 40 BYTE
|
||||||
S.STAT.AUXTYPE .EQ 41
|
S.STAT.AUXTYPE .EQ 41 WORD
|
||||||
*
|
*
|
||||||
S.STAT .EQ 43
|
S.STAT .EQ 43
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
@ -543,8 +545,11 @@ S.DIR.F .EQ 1
|
|||||||
S.DIR.F.NOMORE .EQ $80
|
S.DIR.F.NOMORE .EQ $80
|
||||||
S.DIR.PRODOS.REF .EQ 2
|
S.DIR.PRODOS.REF .EQ 2
|
||||||
S.DIR.PRODOS.IOBUF .EQ 3
|
S.DIR.PRODOS.IOBUF .EQ 3
|
||||||
|
S.DIR.PRODOS.EL .EQ 4
|
||||||
S.DIR.PRODOS .EQ 4
|
S.DIR.PRODOS.EPB .EQ 5
|
||||||
|
S.DIR.PRODOS.FC .EQ 6
|
||||||
|
*
|
||||||
|
S.DIR.PRODOS .EQ 8
|
||||||
* no S.DIR
|
* no S.DIR
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* S.DIRENT for ReadDir
|
* S.DIRENT for ReadDir
|
||||||
|
@ -47,9 +47,12 @@ S.FILEINFO.ACCESS.RN .EQ $40
|
|||||||
S.FILEINFO.ACCESS.D .EQ $80
|
S.FILEINFO.ACCESS.D .EQ $80
|
||||||
S.FILEINFO.ACCESS.FULL .EQ $C3
|
S.FILEINFO.ACCESS.FULL .EQ $C3
|
||||||
S.FILEINFO.TYPE .EQ $04
|
S.FILEINFO.TYPE .EQ $04
|
||||||
|
S.FILEINFO.TYPE.DIR .EQ $0F
|
||||||
|
S.FILEINFO.TYPE.SYS .EQ $FF
|
||||||
S.FILEINFO.AUXTYPE .EQ $05
|
S.FILEINFO.AUXTYPE .EQ $05
|
||||||
S.FILEINFO.TOTALBLOCKS .EQ $05
|
S.FILEINFO.TOTALBLOCKS .EQ $05
|
||||||
S.FILEINFO.STORETYPE .EQ $07
|
S.FILEINFO.STORETYPE .EQ $07
|
||||||
|
S.FILEINFO.STORETYPE.DIR .EQ $0D
|
||||||
S.FILEINFO.BLOCKSUSED .EQ $08
|
S.FILEINFO.BLOCKSUSED .EQ $08
|
||||||
S.FILEINFO.MODDATE .EQ $0A
|
S.FILEINFO.MODDATE .EQ $0A
|
||||||
S.FILEINFO.MODTIME .EQ $0C
|
S.FILEINFO.MODTIME .EQ $0C
|
||||||
|
@ -219,20 +219,251 @@ S.READDIRA.ROOT stz MLICALL.PARAMS+1 All Volumes
|
|||||||
>LDYA ZPQuickPtr4
|
>LDYA ZPQuickPtr4
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
S.READDIRA.DIR ldy #S.DIR.PRODOS.REF
|
||||||
|
lda (ZPQuickPtr1),y
|
||||||
|
sta MLICALL.PARAMS+1
|
||||||
|
|
||||||
S.READDIRA.DIR
|
>PUSHWI 512 Get a 512 bytes buffer for reading dir...
|
||||||
ldx #3
|
>PUSHBI 0
|
||||||
ldy #S.STAT.TYPE
|
jsr S.GetMem
|
||||||
|
bcs .99
|
||||||
|
stx S.READDIRA.hMem
|
||||||
|
|
||||||
.7 lda MLICALL.PARAMS+S.FILEINFO.TYPE,x
|
>STYA MLICALL.PARAMS+2 For reading
|
||||||
sta (ZPQuickPtr3),y
|
|
||||||
iny
|
|
||||||
dex
|
|
||||||
bne .7
|
|
||||||
|
|
||||||
|
pha
|
||||||
|
tya
|
||||||
|
* clc CC from S.GetMem
|
||||||
|
adc #4 Skip 4 bytes linked list
|
||||||
|
tay
|
||||||
|
pla
|
||||||
|
adc #0
|
||||||
|
|
||||||
|
>STYA ZPQuickPtr2 PTR to Buffer for PASS #1
|
||||||
|
>STYA ZPQuickPtr3 PTR to Buffer for PASS #2
|
||||||
|
|
||||||
|
>LDYAI 512
|
||||||
|
>STYA MLICALL.PARAMS+4
|
||||||
|
>MLICALL MLIREAD Read A block from directory
|
||||||
|
bcs .98
|
||||||
|
|
||||||
|
ldy #S.DIR.PRODOS.EL Check if first run....
|
||||||
|
lda (ZPQuickPtr1),y
|
||||||
|
bne .2 no, we have all we need....
|
||||||
|
|
||||||
|
ldy #$23+3
|
||||||
|
.1 lda (ZPQuickPtr2),y Get EntryLength.... From Block
|
||||||
|
sta EntryLength-$23,y
|
||||||
|
dey
|
||||||
|
bpl .1
|
||||||
|
bra .4
|
||||||
|
|
||||||
|
.98 pha
|
||||||
|
lda S.READDIRA.hMem
|
||||||
|
jsr S.FreeMemA
|
||||||
|
pla
|
||||||
|
sec
|
||||||
|
.99 rts
|
||||||
|
|
||||||
|
.2 ldy #S.DIR.PRODOS.EL+3
|
||||||
|
|
||||||
|
.3 lda(ZPQuickPtr1),y get this session parameters from S.DIR
|
||||||
|
sta EntryLength-S.DIR.PRODOS.EL,y
|
||||||
|
dey
|
||||||
|
bpl .3
|
||||||
|
|
||||||
|
.4 ldx EntryCount
|
||||||
|
cpx EntryPerBlock
|
||||||
|
|
||||||
|
lda EntryCount+1
|
||||||
|
sbc #0
|
||||||
|
bcc .5 We have less than EPB to read
|
||||||
|
ldx EntryPerBlock
|
||||||
|
|
||||||
|
.5 stx EntryCountIB
|
||||||
|
stz EntryCount2Return
|
||||||
|
|
||||||
|
lda #1 For Ending 0
|
||||||
|
sta BufSize
|
||||||
|
stz BufSize+1
|
||||||
|
|
||||||
|
* pass #1 compute BufSize.....
|
||||||
|
|
||||||
|
.51 lda (ZPQuickPtr2) X = EntryCount In This Block
|
||||||
|
beq .7 Free slot....goto next
|
||||||
|
|
||||||
|
jsr S.READDIR.CHK
|
||||||
|
|
||||||
|
.7 lda ZPQuickPtr2
|
||||||
|
clc
|
||||||
|
adc EntryLength
|
||||||
|
sta ZPQuickPtr2
|
||||||
|
bcc .71
|
||||||
|
inc ZPQuickPtr2+1
|
||||||
|
|
||||||
|
.71 dex
|
||||||
|
bne .51
|
||||||
|
|
||||||
|
* pass #2 Fill Buffer...
|
||||||
|
|
||||||
|
>PUSHW BufSize Get a BufSize bytes buffer for storing results
|
||||||
|
>PUSHBI S.MEM.F.INIT0 make sure 0 fiiled
|
||||||
|
jsr S.GetMem
|
||||||
|
bcs .98
|
||||||
|
stx S.READDIRA.hDIR
|
||||||
|
>STYA ZPQuickPtr4
|
||||||
|
|
||||||
|
.72 jsr DecEntryCount
|
||||||
|
bcc .80 no more file to list...
|
||||||
|
|
||||||
|
lda (ZPQuickPtr3)
|
||||||
|
beq .78
|
||||||
|
|
||||||
|
jsr S.READDIRA.ADD
|
||||||
|
|
||||||
|
.78 lda ZPQuickPtr3
|
||||||
|
clc
|
||||||
|
adc EntryLength
|
||||||
|
sta ZPQuickPtr3
|
||||||
|
bcc .79
|
||||||
|
inc ZPQuickPtr3+1
|
||||||
|
|
||||||
|
.79 dec EntryCountIB
|
||||||
|
beq .72
|
||||||
|
|
||||||
|
.80
|
||||||
|
* lda #0 S.MEM.F.INIT0 already did this
|
||||||
|
* sta (ZPQuickPtr4) Ending 0
|
||||||
|
|
||||||
|
ldy #S.DIR.PRODOS.EL+3
|
||||||
|
.8 lda EntryLength-S.DIR.PRODOS.EL,y Store back this session prameters to S.DIR
|
||||||
|
sta (ZPQuickPtr1),y
|
||||||
|
dey
|
||||||
|
bpl .8
|
||||||
|
|
||||||
|
jsr .98 Discard READBUFFER
|
||||||
|
|
||||||
|
lda S.READDIRA.hDIR
|
||||||
|
tax
|
||||||
|
jsr S.GetMemPtrA
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
S.READDIR.CHK tay save LEN
|
||||||
|
|
||||||
|
and #$F0 get storage_type
|
||||||
|
cmp #$E0 directory header ?
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
inc EntryCount2Return yes, return 2 ".."
|
||||||
|
lda #S.STAT+3 add "#.." string + S.STAT
|
||||||
|
jsr S.READDIRA.AddBufSize
|
||||||
|
bra .2 go add "." Entry
|
||||||
|
|
||||||
|
|
||||||
|
.1 cmp #$F0 Volume header ?
|
||||||
|
bne .3
|
||||||
|
|
||||||
|
.2 lda #S.STAT+2 add "#." string + S.STAT
|
||||||
|
bra .4
|
||||||
|
|
||||||
|
.3 tya
|
||||||
|
and #$F get filename len
|
||||||
|
sec Add 1 for LEN
|
||||||
|
adc #S.STAT
|
||||||
|
|
||||||
|
.4 jsr S.READDIRA.AddBufSize
|
||||||
|
inc EntryCount2Return
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
S.READDIRA.ADD and #$F0
|
||||||
|
cmp #$F0 Volume header ?
|
||||||
|
bne .10
|
||||||
|
|
||||||
|
lda #1
|
||||||
|
jsr S.READDIRA.AddToBuf
|
||||||
|
lda #'.'
|
||||||
|
jsr S.READDIRA.AddToBuf
|
||||||
|
|
||||||
|
ldy #$25 total_blocks
|
||||||
|
lda (ZPQuickPtr3),y
|
||||||
|
tax
|
||||||
|
iny
|
||||||
|
lda (ZPQuickPtr3),y
|
||||||
|
|
||||||
|
ldy #S.STAT.BLOCKS+1
|
||||||
|
sta (ZPQuickPtr4),y
|
||||||
|
dey
|
||||||
|
txa
|
||||||
|
sta (ZPQuickPtr4),y
|
||||||
|
|
||||||
|
.10 cmp #$E0 directory header ?
|
||||||
|
bne .20
|
||||||
|
|
||||||
|
lda #2
|
||||||
|
jsr S.READDIRA.AddToBuf
|
||||||
|
lda #'.'
|
||||||
|
jsr S.READDIRA.AddToBuf
|
||||||
|
jsr S.READDIRA.AddToBuf
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.20 cmp #$D0 directory ?
|
||||||
|
bne .30
|
||||||
|
|
||||||
|
lda (ZPQuickPtr3)
|
||||||
|
and #$0F get filename len
|
||||||
|
tax
|
||||||
|
jsr S.READDIRA.AddToBuf
|
||||||
|
ldy #1
|
||||||
|
|
||||||
|
.21 lda (ZPQuickPtr3),y
|
||||||
|
jsr S.READDIRA.AddToBuf
|
||||||
|
iny
|
||||||
|
dex
|
||||||
|
bne .21
|
||||||
|
|
||||||
|
|
||||||
|
.30
|
||||||
|
|
||||||
|
.80 lda ZPQuickPtr4
|
||||||
|
clc
|
||||||
|
adc #S.STAT
|
||||||
|
sta ZPQuickPtr4
|
||||||
|
bcc .8
|
||||||
|
inc ZPQuickPtr4+1
|
||||||
|
.8 rts
|
||||||
|
*--------------------------------------
|
||||||
|
S.READDIRA.AddBufSize
|
||||||
|
clc
|
||||||
|
adc BufSize
|
||||||
|
sta BufSize
|
||||||
|
bcc .9
|
||||||
|
inc BufSize+1
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
S.READDIRA.AddToBuf
|
||||||
|
sta (ZPQuickPtr4)
|
||||||
|
inc ZPQuickPtr4
|
||||||
|
bne .8
|
||||||
|
inc ZPQuickPtr4+1
|
||||||
|
.8 rts
|
||||||
|
*--------------------------------------
|
||||||
|
DecEntryCount lda EntryCount
|
||||||
|
sec
|
||||||
|
sbc #1
|
||||||
|
sta EntryCount
|
||||||
|
bcs .9 CS, 0 or more
|
||||||
|
lda EntryCount+1
|
||||||
|
sbc #0
|
||||||
|
sta EntryCount+1 CC, we reached $ffff
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
S.READDIRA.hMem .BS 1
|
||||||
|
S.READDIRA.hDIR .BS 1
|
||||||
|
*--------------------------------------
|
||||||
* In :
|
* In :
|
||||||
* A = hDIR
|
* A = hDIR
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
@ -259,19 +490,24 @@ S.CLOSEDIRA.1 ldy #S.DIR.PRODOS.REF
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
S.MKDIRYA jsr S.PFTCHECKPATHYA
|
S.MKDIRYA jsr S.PFTCHECKPATHYA
|
||||||
>STYA MLICALL.PARAMS+1
|
>STYA MLICALL.PARAMS+1
|
||||||
lda #$C3
|
lda #S.FILEINFO.ACCESS.FULL
|
||||||
sta MLICALL.PARAMS+3 Access
|
sta MLICALL.PARAMS+S.FILEINFO.ACCESS
|
||||||
lda #$0F
|
lda #S.FILEINFO.TYPE.DIR
|
||||||
sta MLICALL.PARAMS+4 type=Directory
|
sta MLICALL.PARAMS+S.FILEINFO.TYPE
|
||||||
lda #$0D Storage=Linked List
|
lda #S.FILEINFO.STORETYPE.DIR
|
||||||
sta MLICALL.PARAMS+7
|
sta MLICALL.PARAMS+S.FILEINFO.STORETYPE
|
||||||
>MLICALL MLICREATE
|
>MLICALL MLICREATE
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
hONLINE .BS 1
|
hONLINE .BS 1
|
||||||
hDIRENT .BS 1
|
hDIRENT .BS 1
|
||||||
BufSize .BS 2
|
BufSize .BS 2
|
||||||
EntryCount .BS 1
|
EntryLength .BS 1
|
||||||
|
EntryPerBlock .BS 1
|
||||||
|
EntryCount .BS 2
|
||||||
|
EntryCountIB .BS 1
|
||||||
|
EntryCount2Return .BS 1
|
||||||
|
|
||||||
VolName .BS 17
|
VolName .BS 17
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
|
@ -198,432 +198,6 @@ S.LoadFile.hMem .BS 1
|
|||||||
S.LoadFile.Mem .BS 2
|
S.LoadFile.Mem .BS 2
|
||||||
S.LoadFile.Len .BS 2
|
S.LoadFile.Len .BS 2
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* S.ListDirInitYA
|
|
||||||
* in :
|
|
||||||
* Y,A = PSTR /DIR,/DIR/*.?s
|
|
||||||
* out :
|
|
||||||
* A = hMem of Dir Listing
|
|
||||||
*--------------------------------------
|
|
||||||
S.ListDirInitYA >STYA ZPQuickPtr3 Store path
|
|
||||||
|
|
||||||
lda (ZPQuickPtr3)
|
|
||||||
tay
|
|
||||||
ldx #0
|
|
||||||
|
|
||||||
.1 lda (ZPQuickPtr3),y reverse read path until '/' found
|
|
||||||
cmp #'/'
|
|
||||||
beq .2
|
|
||||||
inx
|
|
||||||
dey
|
|
||||||
bne .1
|
|
||||||
|
|
||||||
.2 stx TmpFileName store file pattern len in buffer
|
|
||||||
txa
|
|
||||||
beq .4 no pattern ?
|
|
||||||
|
|
||||||
lda (ZPQuickPtr3)
|
|
||||||
tay
|
|
||||||
|
|
||||||
.3 lda (ZPQuickPtr3),y
|
|
||||||
sta TmpFileName,x
|
|
||||||
dey
|
|
||||||
dex
|
|
||||||
bne .3
|
|
||||||
|
|
||||||
tya
|
|
||||||
sta (ZPQuickPtr3) remove pattern from path
|
|
||||||
|
|
||||||
.4 >PUSHWI S.LISTDIR.SIZE get LISTDIR Struct
|
|
||||||
>PUSHBI S.MEM.F.INIT0 reset all bytes
|
|
||||||
jsr S.GetMem
|
|
||||||
bcs .99
|
|
||||||
|
|
||||||
stx S.ListDirInitYA.hDir
|
|
||||||
>STYA ZPQuickPtr4 Store LISTDIR Struct
|
|
||||||
|
|
||||||
>LDYA ZPQuickPtr3
|
|
||||||
jsr S.NewPStrYA
|
|
||||||
bcs .99
|
|
||||||
|
|
||||||
txa
|
|
||||||
ldy #S.LISTDIR.hPATH
|
|
||||||
sta (ZPQuickPtr4),y
|
|
||||||
|
|
||||||
lda TmpFileName
|
|
||||||
beq .5
|
|
||||||
>LDYAI TmpFileName
|
|
||||||
jsr S.NewPStrYA
|
|
||||||
bcs .99
|
|
||||||
|
|
||||||
txa
|
|
||||||
ldy #S.LISTDIR.hPATTERN
|
|
||||||
sta (ZPQuickPtr4),y
|
|
||||||
|
|
||||||
.5 lda (ZPQuickPtr3)
|
|
||||||
cmp #1 length = 1 ? ('/')
|
|
||||||
bne .6
|
|
||||||
|
|
||||||
jsr S.ListDirInitAV
|
|
||||||
bcs .98
|
|
||||||
lda S.ListDirInitYA.hDir
|
|
||||||
rts
|
|
||||||
|
|
||||||
.6 jsr S.ListDirInitAD
|
|
||||||
bcs .98
|
|
||||||
lda S.ListDirInitYA.hDir
|
|
||||||
rts
|
|
||||||
|
|
||||||
.98 pha
|
|
||||||
lda S.ListDirInitYA.hDir Discard S.LISTDIR
|
|
||||||
jsr S.ListDirCloseA
|
|
||||||
pla
|
|
||||||
.99 sec
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
S.ListDirInitYA.hDir .BS 1
|
|
||||||
*--------------------------------------
|
|
||||||
S.ListDirInitAV >PUSHWI 256
|
|
||||||
>PUSHBI 0
|
|
||||||
jsr S.GetMem
|
|
||||||
bcs .99
|
|
||||||
>PUSHYA push buffer for online call
|
|
||||||
txa
|
|
||||||
sta (ZPQuickPtr4) save hONLINE buffer
|
|
||||||
>PUSHBI 0 All devices
|
|
||||||
jsr S.MLIOnline
|
|
||||||
bcs .98
|
|
||||||
ldy #S.LISTDIR.ONLINEPTR
|
|
||||||
|
|
||||||
* lda #0 make index point first Entry
|
|
||||||
* sta (ZPQuickPtr4),y
|
|
||||||
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
|
|
||||||
.98 lda (ZPQuickPtr4)
|
|
||||||
jsr S.FreeMemA
|
|
||||||
.99 sec
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
S.ListDirInitAD
|
|
||||||
* lda #0
|
|
||||||
* sta (ZPQuickPtr4) reset hONLINE
|
|
||||||
|
|
||||||
>LDYA ZPQuickPtr3 Open DIR
|
|
||||||
jsr S.MLIOpenYA
|
|
||||||
bcs .99
|
|
||||||
ldy #S.LISTDIR.REFNUM
|
|
||||||
sta (ZPQuickPtr4),y save ref_num
|
|
||||||
txa
|
|
||||||
ldy #S.LISTDIR.hIOBUF
|
|
||||||
sta (ZPQuickPtr4),y save ProDOS IO buffer hMem
|
|
||||||
|
|
||||||
>PUSHWI 512 get Read buffer
|
|
||||||
>PUSHBI 0
|
|
||||||
jsr S.GetMem
|
|
||||||
bcs .99
|
|
||||||
txa
|
|
||||||
ldy #S.LISTDIR.hREADBUF save Read Buffer hMem
|
|
||||||
sta (ZPQuickPtr4),y
|
|
||||||
jsr S.ListDirReadBlock
|
|
||||||
bcs .99
|
|
||||||
>STYA ZPQuickPtr1
|
|
||||||
|
|
||||||
ldy #$23 get entry_length
|
|
||||||
lda (ZPQuickPtr1),y
|
|
||||||
ldy #S.LISTDIR.EL
|
|
||||||
sta (ZPQuickPtr4),y
|
|
||||||
|
|
||||||
ldy #$24 get entry_per_block
|
|
||||||
lda (ZPQuickPtr1),y
|
|
||||||
ldy #S.LISTDIR.EPB
|
|
||||||
sta (ZPQuickPtr4),y
|
|
||||||
|
|
||||||
ldy #$25 get File_count LO
|
|
||||||
lda (ZPQuickPtr1),y
|
|
||||||
clc
|
|
||||||
adc #1 Add 1 for VOL/DIR Header
|
|
||||||
ldy #S.LISTDIR.FC
|
|
||||||
sta (ZPQuickPtr4),y
|
|
||||||
|
|
||||||
ldy #$26 get File_count HI
|
|
||||||
lda (ZPQuickPtr1),y
|
|
||||||
adc #0
|
|
||||||
ldy #S.LISTDIR.FC+1
|
|
||||||
sta (ZPQuickPtr4),y
|
|
||||||
|
|
||||||
* ldy #S.LISTDIR.FI
|
|
||||||
* lda #0
|
|
||||||
* sta (ZPQuickPtr4),y
|
|
||||||
* iny
|
|
||||||
* sta (ZPQuickPtr4),y set FI to $0000
|
|
||||||
clc
|
|
||||||
.99 rts
|
|
||||||
*--------------------------------------
|
|
||||||
* S.DirListNextA
|
|
||||||
* A = S.LISTDIR hMEM
|
|
||||||
* out :
|
|
||||||
* A = hMem To Dir Entry
|
|
||||||
*--------------------------------------
|
|
||||||
S.ListDirNextA jsr S.GetMemPtrA Get PTR to S.LISTDIR
|
|
||||||
>STYA R.CX
|
|
||||||
lda (R.CX) Online Data?
|
|
||||||
beq S.ListDirNextAD no,list files
|
|
||||||
*--------------------------------------
|
|
||||||
S.ListDirNextAV jsr S.GetMemPtrA
|
|
||||||
>STYA ZPQuickPtr1 ZPQuickPtr1 = Online DATA
|
|
||||||
.10 ldy #S.LISTDIR.ONLINEPTR
|
|
||||||
lda (R.CX),y
|
|
||||||
cmp #16
|
|
||||||
beq .9
|
|
||||||
|
|
||||||
inc
|
|
||||||
sta (R.CX),y
|
|
||||||
dec
|
|
||||||
asl
|
|
||||||
asl
|
|
||||||
asl
|
|
||||||
asl
|
|
||||||
tay
|
|
||||||
|
|
||||||
lda (ZPQuickPtr1),y
|
|
||||||
and #$0F
|
|
||||||
beq .10
|
|
||||||
|
|
||||||
sta TmpFileName
|
|
||||||
ldx #0
|
|
||||||
.1 iny
|
|
||||||
inx
|
|
||||||
lda (ZPQuickPtr1),y
|
|
||||||
sta TmpFileName,x
|
|
||||||
cpx TmpFileName
|
|
||||||
bne .1
|
|
||||||
|
|
||||||
>PUSHWI 16
|
|
||||||
>PUSHBI 0
|
|
||||||
jsr S.GetMem
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
>STYA ZPQuickPtr2
|
|
||||||
|
|
||||||
ldy #15
|
|
||||||
.2 lda TmpFileName,y
|
|
||||||
sta (ZPQuickPtr2),y
|
|
||||||
dey
|
|
||||||
bpl .2
|
|
||||||
|
|
||||||
lda (ZPQuickPtr2) Mark Record as "VOL"
|
|
||||||
ora #$C0
|
|
||||||
sta (ZPQuickPtr2)
|
|
||||||
|
|
||||||
txa Get back hMem of Volume.Name
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
|
|
||||||
.9 sec
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
S.ListDirNextAD stz S.ListDirNext.hRec Reset Return Record hMem
|
|
||||||
ldy #S.LISTDIR.FI File Index = File count ?
|
|
||||||
lda (R.CX),y
|
|
||||||
ldy #S.LISTDIR.FC
|
|
||||||
cmp (R.CX),y
|
|
||||||
bne .1
|
|
||||||
ldy #S.LISTDIR.FI+1
|
|
||||||
lda (R.CX),y
|
|
||||||
ldy #S.LISTDIR.FC+1
|
|
||||||
cmp (R.CX),y
|
|
||||||
bne .1
|
|
||||||
sec yes, exit no more file
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
.1 ldy #S.LISTDIR.EIB Entry Index in block = Entry per block ?
|
|
||||||
lda (R.CX),y
|
|
||||||
ldy #S.LISTDIR.EPB
|
|
||||||
cmp (R.CX),y
|
|
||||||
bne .2
|
|
||||||
jsr S.ListDirReadBlock
|
|
||||||
bcc .3
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
.2 ldy #S.LISTDIR.hREADBUF
|
|
||||||
lda (R.CX),y
|
|
||||||
jsr S.GetMemPtrA
|
|
||||||
.3 >STYA R.AX R.AX = READ BUFFER
|
|
||||||
ldy #S.LISTDIR.BLKPTR
|
|
||||||
lda (R.CX),y
|
|
||||||
clc
|
|
||||||
adc R.AX
|
|
||||||
sta R.AX
|
|
||||||
iny
|
|
||||||
lda (R.CX),y
|
|
||||||
adc R.AX+1
|
|
||||||
sta R.AX+1
|
|
||||||
|
|
||||||
lda (R.AX) Is is a deleted file ? (storage_type=0)
|
|
||||||
and #$F0
|
|
||||||
beq .5
|
|
||||||
|
|
||||||
cmp #$F0 Volume header ?
|
|
||||||
beq .30 yes, do not filter
|
|
||||||
cmp #$E0 Directory header ?
|
|
||||||
beq .30 yes, do not filter
|
|
||||||
|
|
||||||
ldy #S.LISTDIR.hPATTERN any filter ?
|
|
||||||
lda (R.CX),y
|
|
||||||
beq .30
|
|
||||||
|
|
||||||
jsr S.GetMemPtrA
|
|
||||||
>PUSHYA push Filter PTR
|
|
||||||
|
|
||||||
lda (R.AX)
|
|
||||||
and #$0F
|
|
||||||
sta TmpFileName
|
|
||||||
tay
|
|
||||||
.31 lda (R.AX),y
|
|
||||||
sta TmpFileName,y
|
|
||||||
dey
|
|
||||||
bne .31
|
|
||||||
|
|
||||||
>PUSHWI TmpFileName push Filename PTR
|
|
||||||
jsr S.PStrMatch
|
|
||||||
bcs .5 no match
|
|
||||||
|
|
||||||
.30 ldy #S.LISTDIR.EL Get Entry length
|
|
||||||
lda (R.CX),y
|
|
||||||
tay
|
|
||||||
lda #0
|
|
||||||
>PUSHYA Get an entry_length buffer
|
|
||||||
>PUSHBI 0
|
|
||||||
jsr S.GetMem
|
|
||||||
bcs .99
|
|
||||||
>STYA R.BX R.BX = DEST RECORD
|
|
||||||
stx S.ListDirNext.hRec
|
|
||||||
|
|
||||||
ldy #S.LISTDIR.EL
|
|
||||||
lda (R.CX),y
|
|
||||||
tay
|
|
||||||
dey
|
|
||||||
.4 lda (R.AX),y
|
|
||||||
sta (R.BX),y
|
|
||||||
dey
|
|
||||||
bpl .4
|
|
||||||
|
|
||||||
.5 ldy #S.LISTDIR.EIB Set ENTRY INDEX IN BLOCK +=1
|
|
||||||
lda (R.CX),y
|
|
||||||
inc
|
|
||||||
sta (R.CX),y
|
|
||||||
|
|
||||||
ldy #S.LISTDIR.EL Set BLOCK PTR +=entry_length
|
|
||||||
lda (R.CX),y
|
|
||||||
ldy #S.LISTDIR.BLKPTR
|
|
||||||
clc
|
|
||||||
adc (R.CX),y
|
|
||||||
sta (R.CX),y
|
|
||||||
iny
|
|
||||||
lda (R.CX),y
|
|
||||||
adc #0
|
|
||||||
sta (R.CX),y
|
|
||||||
|
|
||||||
lda (R.AX)
|
|
||||||
and #$E0 is storage_type = $F or $E ?
|
|
||||||
cmp #$E0 yes, do NOT increase FI
|
|
||||||
bne .6
|
|
||||||
|
|
||||||
ldy #S.LISTDIR.FI Increase FILE INDEX
|
|
||||||
lda (R.CX),y
|
|
||||||
inc
|
|
||||||
sta (R.CX),y
|
|
||||||
bne .6
|
|
||||||
iny
|
|
||||||
lda (R.CX),y
|
|
||||||
inc
|
|
||||||
sta (R.CX),y
|
|
||||||
|
|
||||||
.6 lda S.ListDirNext.hRec
|
|
||||||
bne .8
|
|
||||||
jmp S.ListDirNextAD Nothing to return, start over for next file entry
|
|
||||||
|
|
||||||
.8 clc
|
|
||||||
rts
|
|
||||||
|
|
||||||
.99 sec
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
* S.ListDirReadBlock
|
|
||||||
* In :
|
|
||||||
* CX = LISTDIR
|
|
||||||
* Out :
|
|
||||||
* Y,A = READ BUFFER
|
|
||||||
*--------------------------------------
|
|
||||||
S.ListDirReadBlock
|
|
||||||
ldy #S.LISTDIR.REFNUM
|
|
||||||
lda (R.CX),y get ref_num
|
|
||||||
sta MLICALL.PARAMS+1
|
|
||||||
ldy #S.LISTDIR.hREADBUF
|
|
||||||
lda (R.CX),y get READ BUFFER
|
|
||||||
jsr S.GetMemPtrA
|
|
||||||
>STYA MLICALL.PARAMS+2
|
|
||||||
>LDYAI 512
|
|
||||||
>STYA MLICALL.PARAMS+4
|
|
||||||
>MLICALL MLIREAD
|
|
||||||
bcs .9
|
|
||||||
ldy #S.LISTDIR.BLKPTR set BLKPTR to $0004
|
|
||||||
lda #4
|
|
||||||
sta (R.CX),y
|
|
||||||
iny
|
|
||||||
lda #0
|
|
||||||
sta (R.CX),y
|
|
||||||
ldy #S.LISTDIR.EIB set EIB to 0
|
|
||||||
sta (R.CX),y
|
|
||||||
>LDYA MLICALL.PARAMS+2
|
|
||||||
.9 rts
|
|
||||||
*--------------------------------------
|
|
||||||
S.ListDirNext.hRec .BS 1
|
|
||||||
*--------------------------------------
|
|
||||||
* S.DirListCloseA
|
|
||||||
* in :
|
|
||||||
* A = hS.LISTDIR
|
|
||||||
*--------------------------------------
|
|
||||||
S.ListDirCloseA pha
|
|
||||||
jsr S.GetMemPtrA
|
|
||||||
>STYA ZPQuickPtr1
|
|
||||||
ldy #S.LISTDIR.REFNUM
|
|
||||||
lda (ZPQuickPtr1),y
|
|
||||||
beq .1
|
|
||||||
jsr S.MLICloseA
|
|
||||||
bcs * If Close Failed, we cannot free IOBUF
|
|
||||||
|
|
||||||
.1 ldy #S.LISTDIR.hIOBUF
|
|
||||||
lda (ZPQuickPtr1),y
|
|
||||||
beq .2
|
|
||||||
jsr S.FreeMemA
|
|
||||||
|
|
||||||
.2 ldy #S.LISTDIR.hREADBUF
|
|
||||||
lda (ZPQuickPtr1),y
|
|
||||||
beq .3
|
|
||||||
jsr S.FreeMemA
|
|
||||||
|
|
||||||
.3 ldy #S.LISTDIR.hONLINE
|
|
||||||
lda (ZPQuickPtr1),y
|
|
||||||
beq .4
|
|
||||||
jsr S.FreeMemA
|
|
||||||
|
|
||||||
.4 ldy #S.LISTDIR.hPATTERN
|
|
||||||
lda (ZPQuickPtr1),y
|
|
||||||
beq .5
|
|
||||||
jsr S.FreeMemA
|
|
||||||
|
|
||||||
.5 ldy #S.LISTDIR.hPATH
|
|
||||||
lda (ZPQuickPtr1),y
|
|
||||||
beq .6
|
|
||||||
jsr S.FreeMemA
|
|
||||||
|
|
||||||
.6 pla
|
|
||||||
jsr S.FreeMemA
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
TmpFileName .BS 16
|
TmpFileName .BS 16
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
|
@ -12,18 +12,18 @@ KERNEL.SYSCALL .DA S.GetMem $00
|
|||||||
.DA S.GetMemPtrA
|
.DA S.GetMemPtrA
|
||||||
.DA S.GetMemByIDA
|
.DA S.GetMemByIDA
|
||||||
.DA S.GetMemByNameYA
|
.DA S.GetMemByNameYA
|
||||||
.DA 0
|
.DA S.LoadStockObjectYA
|
||||||
.DA 0
|
.DA S.GetStockObjectA
|
||||||
.DA 0
|
.DA S.FreeStockObject
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.DA S.NewPStrYA $10
|
.DA S.NewPStrYA $10
|
||||||
.DA S.PStrCpy
|
.DA S.PStrCpy
|
||||||
.DA S.PStrCat
|
.DA S.PStrCat
|
||||||
|
.DA S.PStrMatch
|
||||||
.DA S.PStrUprYA
|
.DA S.PStrUprYA
|
||||||
.DA 0
|
.DA S.PStrLwrYA
|
||||||
|
.DA 0
|
||||||
.DA S.PStr2StrArrayYA
|
.DA S.PStr2StrArrayYA
|
||||||
.DA 0
|
|
||||||
.DA 0
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.DA S.LoadDrvYA $20
|
.DA S.LoadDrvYA $20
|
||||||
.DA S.LoadLibYA
|
.DA S.LoadLibYA
|
||||||
@ -45,17 +45,17 @@ KERNEL.SYSCALL .DA S.GetMem $00
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.DA S.MLICreateFile $40
|
.DA S.MLICreateFile $40
|
||||||
.DA 0
|
.DA 0
|
||||||
.DA S.MLICreateDirYA
|
|
||||||
.DA 0
|
.DA 0
|
||||||
.DA S.MLIDestroyYA
|
.DA 0
|
||||||
.DA S.MLIRename
|
.DA 0
|
||||||
|
.DA 0
|
||||||
.DA S.MLISetFileInfo
|
.DA S.MLISetFileInfo
|
||||||
.DA 0
|
.DA 0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.DA S.MLIGetFileInfoYA $50
|
.DA S.MLIGetFileInfoYA $50
|
||||||
.DA S.MLIOnline
|
.DA S.MLIOnline
|
||||||
.DA 0
|
.DA 0
|
||||||
.DA S.MLISetPrefixYA
|
.DA 0
|
||||||
.DA 0
|
.DA 0
|
||||||
.DA S.MLIGetPrefixYA
|
.DA S.MLIGetPrefixYA
|
||||||
.DA 0
|
.DA 0
|
||||||
@ -65,19 +65,19 @@ KERNEL.SYSCALL .DA S.GetMem $00
|
|||||||
.DA S.MLIRead
|
.DA S.MLIRead
|
||||||
.DA S.MLIWrite
|
.DA S.MLIWrite
|
||||||
.DA S.MLICloseA
|
.DA S.MLICloseA
|
||||||
.DA S.MLIFlushA
|
.DA 0
|
||||||
.DA S.MLISetMark
|
.DA 0
|
||||||
.DA S.MLIGetMarkA
|
.DA 0
|
||||||
.DA S.MLISetEOF
|
.DA 0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.DA S.MLIGetEOFA $70
|
.DA S.MLIGetEOFA $70
|
||||||
.DA S.MLISetBuf
|
.DA 0
|
||||||
.DA S.MLIGetBuf
|
.DA 0
|
||||||
.DA S.MLIGetTime
|
.DA 0
|
||||||
.DA S.MLIAllocIRQ
|
.DA 0
|
||||||
.DA S.MLIDeallocIRQA
|
.DA 0
|
||||||
.DA S.MLIReadBlock
|
.DA 0
|
||||||
.DA S.MLIWriteBlock
|
.DA 0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.DA S.GetDevByIDA $80
|
.DA S.GetDevByIDA $80
|
||||||
.DA 0
|
.DA 0
|
||||||
@ -102,9 +102,9 @@ KERNEL.SYSCALL .DA S.GetMem $00
|
|||||||
.DA S.GetFullPathYA
|
.DA S.GetFullPathYA
|
||||||
.DA S.LoadFileYA
|
.DA S.LoadFileYA
|
||||||
.DA 0
|
.DA 0
|
||||||
.DA S.ListDirInitYA
|
.DA 0
|
||||||
.DA S.ListDirNextA
|
.DA 0
|
||||||
.DA S.ListDirCloseA
|
.DA 0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.DA 0 $B0
|
.DA 0 $B0
|
||||||
.DA 0
|
.DA 0
|
||||||
@ -174,10 +174,10 @@ KERNEL.SYSCALL.FLAGS
|
|||||||
.DA 0
|
.DA 0
|
||||||
.DA 0
|
.DA 0
|
||||||
.DA 0
|
.DA 0
|
||||||
.DA 0
|
.DA $80
|
||||||
.DA 0
|
.DA $80
|
||||||
.DA 0
|
.DA $80
|
||||||
.DA 0
|
.DA $80
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.DA 0 $30
|
.DA 0 $30
|
||||||
.DA 0
|
.DA 0
|
||||||
|
@ -405,6 +405,12 @@ S.GetMemByNameYA
|
|||||||
.9 sec
|
.9 sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
S.LoadStockObjectYA
|
||||||
|
*--------------------------------------
|
||||||
|
S.GetStockObjectA
|
||||||
|
*--------------------------------------
|
||||||
|
S.FreeStockObject
|
||||||
|
*--------------------------------------
|
||||||
S.SetLoMem
|
S.SetLoMem
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
@ -12,28 +12,10 @@ S.MLICreateFile >PULLW MLICALL.PARAMS+1
|
|||||||
>PULLB MLICALL.PARAMS+4 File type
|
>PULLB MLICALL.PARAMS+4 File type
|
||||||
>PULLW MLICALL.PARAMS+5 Aux type
|
>PULLW MLICALL.PARAMS+5 Aux type
|
||||||
lda #$01 Storage=Standard Files
|
lda #$01 Storage=Standard Files
|
||||||
bra S.MLICreate
|
sta MLICALL.PARAMS+7
|
||||||
*--------------------------------------
|
|
||||||
S.MLICreateDirYA
|
|
||||||
>STYA MLICALL.PARAMS+1
|
|
||||||
lda #$C3
|
|
||||||
sta MLICALL.PARAMS+3 Access
|
|
||||||
lda #$0F
|
|
||||||
sta MLICALL.PARAMS+4 type=Directory
|
|
||||||
lda #$0D Storage=Linked List
|
|
||||||
S.MLICreate sta MLICALL.PARAMS+7
|
|
||||||
>MLICALL MLICREATE
|
>MLICALL MLICREATE
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
S.MLIDestroyYA >STYA MLICALL.PARAMS+1
|
|
||||||
>MLICALL MLIDESTROY
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
S.MLIRename >PULLW MLICALL.PARAMS+3
|
|
||||||
>PULLW MLICALL.PARAMS+1
|
|
||||||
>MLICALL MLIRENAME
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
* S.MLISetFileInfo
|
* S.MLISetFileInfo
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
S.MLISetFileInfo
|
S.MLISetFileInfo
|
||||||
@ -70,11 +52,6 @@ S.MLIOnline >PULLB MLICALL.PARAMS+1
|
|||||||
>MLICALL MLIONLINE
|
>MLICALL MLIONLINE
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
S.MLISetPrefixYA
|
|
||||||
>STYA MLICALL.PARAMS+1
|
|
||||||
>MLICALL MLISETPREFIX
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
S.MLIGetPrefixYA
|
S.MLIGetPrefixYA
|
||||||
>STYA MLICALL.PARAMS+1
|
>STYA MLICALL.PARAMS+1
|
||||||
>MLICALL MLIGETPREFIX
|
>MLICALL MLIGETPREFIX
|
||||||
@ -162,28 +139,6 @@ S.MLICloseA sta MLICALL.PARAMS+1
|
|||||||
>MLICALL MLICLOSE
|
>MLICALL MLICLOSE
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
S.MLIFlushA sta MLICALL.PARAMS+1
|
|
||||||
>MLICALL MLIFLUSH
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
S.MLISetMark
|
|
||||||
*--------------------------------------
|
|
||||||
* S.MLIGetMarkA
|
|
||||||
* in :
|
|
||||||
* A = ref_num
|
|
||||||
* out :
|
|
||||||
* Y,A,X = EOF
|
|
||||||
*--------------------------------------
|
|
||||||
S.MLIGetMarkA sta MLICALL.PARAMS+1
|
|
||||||
>MLICALL MLIGETMARK
|
|
||||||
bcs .9
|
|
||||||
>LDYA MLICALL.PARAMS+2
|
|
||||||
ldx MLICALL.PARAMS+4
|
|
||||||
clc
|
|
||||||
.9 rts
|
|
||||||
*--------------------------------------
|
|
||||||
S.MLISetEOF
|
|
||||||
*--------------------------------------
|
|
||||||
* S.MLIGetEOF
|
* S.MLIGetEOF
|
||||||
* in :
|
* in :
|
||||||
* A = ref_num
|
* A = ref_num
|
||||||
@ -198,32 +153,6 @@ S.MLIGetEOFA sta MLICALL.PARAMS+1
|
|||||||
clc
|
clc
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
S.MLISetBuf clc
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
S.MLIGetBuf clc
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
S.MLIGetTime >MLICALL MLIGETTIME
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
S.MLIAllocIRQ >PULLW MLICALL.PARAMS+2
|
|
||||||
>MLICALL MLIALLOCIRQ
|
|
||||||
bcs .9
|
|
||||||
lda MLICALL.PARAMS+1
|
|
||||||
.9 rts
|
|
||||||
*--------------------------------------
|
|
||||||
S.MLIDeallocIRQA
|
|
||||||
sta MLICALL.PARAMS+1
|
|
||||||
>MLICALL MLIDEALLOCIRQ
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
S.MLIReadBlock clc
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
S.MLIWriteBlock clc
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
MAN
|
MAN
|
||||||
SAVE SYS/KERNEL.S.MLI
|
SAVE SYS/KERNEL.S.MLI
|
||||||
LOAD SYS/KERNEL.S
|
LOAD SYS/KERNEL.S
|
||||||
|
@ -93,30 +93,6 @@ S.PStrCat >PULLW ZPQuickPtr2 save DST
|
|||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* S.PStrUpr
|
|
||||||
* IN:
|
|
||||||
* Y,A = PTR to String (PSTRING)
|
|
||||||
* OUT:
|
|
||||||
* Uppercased String in Buffer
|
|
||||||
*--------------------------------------
|
|
||||||
S.PStrUprYA >STYA ZPQuickPtr1
|
|
||||||
|
|
||||||
lda (ZPQuickPtr1)
|
|
||||||
tay
|
|
||||||
|
|
||||||
.1 lda (ZPQuickPtr1),y convert to UPPERCASE
|
|
||||||
cmp #'a'
|
|
||||||
bcc .2
|
|
||||||
cmp #'z'+1
|
|
||||||
bcs .2
|
|
||||||
eor #$20
|
|
||||||
sta (ZPQuickPtr1),y
|
|
||||||
.2 dey
|
|
||||||
bne .1
|
|
||||||
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
* S.PStrMatch
|
* S.PStrMatch
|
||||||
* IN:
|
* IN:
|
||||||
* PULLB = PTR to String (PSTRING)
|
* PULLB = PTR to String (PSTRING)
|
||||||
@ -191,6 +167,36 @@ S.PStrMatch >PULLW ZPQuickPtr2 pull String
|
|||||||
.9 sec
|
.9 sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
* S.PStrUprYA
|
||||||
|
* S.PStrLwrYA
|
||||||
|
* IN:
|
||||||
|
* Y,A = PTR to String (PSTRING)
|
||||||
|
* OUT:
|
||||||
|
* Uppercased/lowercased String in Buffer
|
||||||
|
*--------------------------------------
|
||||||
|
S.PStrUprYA ldx #0
|
||||||
|
.HS 2C bit abs
|
||||||
|
S.PStrLwrYA ldx #2
|
||||||
|
>STYA ZPQuickPtr1
|
||||||
|
|
||||||
|
lda (ZPQuickPtr1)
|
||||||
|
tay
|
||||||
|
|
||||||
|
.1 lda (ZPQuickPtr1),y
|
||||||
|
cmp S.PstrUprLwr,x
|
||||||
|
bcc .2
|
||||||
|
cmp S.PstrUprLwr+1,x
|
||||||
|
bcs .2
|
||||||
|
eor #$20
|
||||||
|
sta (ZPQuickPtr1),y
|
||||||
|
.2 dey
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
S.PstrUprLwr .AS "azAZ"
|
||||||
|
*--------------------------------------
|
||||||
* S.PStr2StrArrayYA
|
* S.PStr2StrArrayYA
|
||||||
* In :
|
* In :
|
||||||
* Y,A = PTR to String
|
* Y,A = PTR to String
|
||||||
|
@ -77,6 +77,7 @@ A2osX.D001.END .EQ *
|
|||||||
A2osX.D002 .EQ *
|
A2osX.D002 .EQ *
|
||||||
.PH $D000
|
.PH $D000
|
||||||
.INB SYS/KERNEL.S.REL
|
.INB SYS/KERNEL.S.REL
|
||||||
|
.INB SYS/KERNEL.S.TIME
|
||||||
.EP
|
.EP
|
||||||
A2osX.D002.END .EQ *
|
A2osX.D002.END .EQ *
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
@ -93,7 +94,6 @@ A2osX.E000 .EQ *
|
|||||||
.INB SYS/KERNEL.S.TSK
|
.INB SYS/KERNEL.S.TSK
|
||||||
.INB SYS/KERNEL.S.PS
|
.INB SYS/KERNEL.S.PS
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.INB SYS/KERNEL.S.TIME
|
|
||||||
.INB SYS/KERNEL.S.PFT
|
.INB SYS/KERNEL.S.PFT
|
||||||
.INB SYS/KERNEL.S.FILE
|
.INB SYS/KERNEL.S.FILE
|
||||||
.INB SYS/KERNEL.S.DIR
|
.INB SYS/KERNEL.S.DIR
|
||||||
|
Loading…
Reference in New Issue
Block a user