fix bug in ATTRIB for 64 kb cluster

This commit is contained in:
Tolik 2025-07-05 02:48:01 +10:00
parent e6aa5aa304
commit 058f5e4859
21 changed files with 298 additions and 222 deletions

View File

@ -1,9 +1,9 @@
////////////////////////////////////////////////////////////////////////
; INPUT: HL - "C:\DIR1\DIR2\filename.ext",#00
; A - ATTRIB
; B - MODE
; B = #00 GET ATTRIB
; B = #01 SET ATTRIB
; B - MODE:
; 0 GET ATTRIB
; 1 SET ATTRIB
; OUTPUT: A - ATTRIB
////////////////////////////////////////////////////////////////////////
ATTRIB: ;!TEST Current Dir ;[x] 15/10/23
@ -15,6 +15,10 @@ ATTRIB: ;!TEST Current Dir ;[x] 15/10/23
POP BC
POP HL
RET C
; ­  á«ãç © ç⥭¨ï ¤«ï ®¡å®¤  ¯à®¢¥àª¨ CHECK_64kb_CLUSTER
LD A,1
LD (OPEN_FN.TMP),A
;
LD A,C
;
;
@ -27,7 +31,7 @@ ATTRIB: ;!TEST Current Dir ;[x] 15/10/23
CALL .OPENATR ;R002
RET C
;!TEST ;[x] 16/11/23 optimize get attribute
LD A,(HANDBUF + FAT_DIRECTORY_RECORD.ATTRIBUT)
LD A,(CORE_BUFFERS.HANDBUF + FAT_DIRECTORY_RECORD.ATTRIBUT)
;LD B,(IY+_sFM.ATTRIBUT)
;PUSH BC
;CALL CLOSE
@ -46,7 +50,6 @@ ATTRIB: ;!TEST Current Dir ;[x] 15/10/23
LD (OPEN_FN.TMP),A
;
CALL .OPENATR ;R002
;!TEST ;[x] 16/11/23 optimize get attribute
CALL NC,OPEN_FN.FM
;
POP BC
@ -60,27 +63,22 @@ ATTRIB: ;!TEST Current Dir ;[x] 15/10/23
RET C
LD A,B
RET
;R002
;
;
; ¢ë室: ¥á«¨ CF = 0, â® DE = record index
;!TEST 9/11/23 record index
.OPENATR: ;!TEST ;[x] 16/11/23 optimize get attribute
;LD (OPEN.TMP),A ; à ¡. ï祩ª  (§¤¥áì  âਡãâ § ¯¨á¨)
;
CALL SetPath_GetName ; â¥áâ ­  ¤®¯ãáâ. ¨¬ï ¨ ­ áâà. ­  ¤¨áª
.OPENATR: CALL SetPath_GetName ; â¥áâ ­  ¤®¯ãáâ. ¨¬ï ¨ ­ áâà. ­  ¤¨áª
RET C
; [ ] 26/06/2024
CALL CHECK_64kb_CLUSTER
; ¥á«¨ íâ® ­¥ ç⥭¨¥, â® ¯à®¢¥à塞 à §¬¥à ª« áâ¥à 
LD A,(OPEN_FN.TMP)
AND A
CALL Z,CHECK_64kb_CLUSTER
RET C
;
CALL MASK
RET C
LD A,FAT_ATTR.NoVolID
;!TEST ;[x] 16/11/23 optimize get attribute
JP SEARCH.Custom
;CALL SEARCH.Custom
;RET C ; § ¯¨áì ­¥ ­ ©¤¥­ 
;JP OPEN.FM ; ­  ¯®¨áª ᢮¡. ¤¥áªà¨¯â®à 
;
;
; [ ] ; !TODO ¤«ï ª®¬ ­¤ë LABEL ¢ Shell
; 1. ¯à®¢¥à¨âì çâ® ¢ HL 㪠§ ­  ⮫쪮 ¬¥âª  ¢ ª ¢ë窠å

View File

@ -28,7 +28,7 @@ CHDIR_FN:
;
CHDIR: CALL SetPath_GetName ; â¥áâ ­  ¤®¯ãáâ. ¨¬ï ¨ ­ áâà. ­  ¤¨áª
RET C
LD HL,TMPNAME
LD HL,CORE_BUFFERS.TMPNAME
LD A,(HL)
OR A
RET Z

View File

@ -57,8 +57,8 @@ CREATE: ;!TEST Current Dir ;[x] 15/10/23 ;CREATE_FN:
;
;no_file_found
.DO: ; FAT_DIRECTORY_RECORD.NAME + .EXT
LD HL,MASKARE
LD DE,HANDBUF
LD HL,CORE_BUFFERS.MASKARE
LD DE,CORE_BUFFERS.HANDBUF
LD BC,11
LDIR
EX DE,HL

View File

@ -125,7 +125,7 @@ EX_PATH: EXX
EXX
EX AF,AF'
.PAT0: LD DE,TMPBUF
LD BC,#0D01 ;!HARDCODE áç¥â稪¨
LD BC,256*TMPBUF.Size + 1 ; áç¥â稪¨
.PAT1: LD A,(HL)
CALL UPPER ; a..z -> A..Z
LD (DE),A
@ -226,12 +226,17 @@ EX_PATH: EXX
SET PATH_PR,A
EX AF,AF'
JP .PAT0
;!TODO ¯¥à¥­¥áâ¨/§ ¬¥­¨âì ­  ®¡é¨©
TMPBUF: DB " ",#00 ; 12 ¯à®¡¥«®¢
;
;TMPBUF: DB " ",#00 ; 13 ¯à®¡¥«®¢ + 0
;TMPBUF: DB " ",#00 ; 12 ¯à®¡¥«®¢ + 0
TMPBUF EQU CORE_BUFFERS.TMPNAME
.Size EQU CORE_BUFFERS.TMPNAME.Size
NM_DRIVE: DW NM_DRIVE_A
NM_NAME: DW NM_NAME_A
NM_EXTN: DW NM_EXTN_A
NM_PATH: DW NM_PATH_A
;!TODO ¯¥à¥­¥áâ¨/§ ¬¥­¨âì ­  ®¡é¨© ¡ãä¥à
NM_DRIVE_A: BLOCK 9,0
NM_NAME_A: DB " ",#00 ; 12 能恣市恥
NM_EXTN_A: DB " ",0

View File

@ -235,7 +235,7 @@ RETFAR: LD B,DSS_Error.sys.UNEXPECTED_APP_TRMN
; …᫨ à áè. ä ©«  § ¤ ­®, áà ¢­¨âì ¥£® á "exe".
;-------------------------------------------------
TST_EXT: LD HL,EXE_EXT ; "EXE"
LD DE,MASKARE+8
LD DE,CORE_BUFFERS.MASKARE.Ext
LD B,3
LD A,(DE)
CP ' '
@ -478,7 +478,7 @@ M_PSP: LD HL,(CORE_BUFFERS.EXEBUFF.LD_ADDR)
LD (HL),A
INC HL
.YP_ESLA: EX DE,HL
LD HL,TMPNAME
LD HL,CORE_BUFFERS.TMPNAME
.loop: LD A,(HL)
LDI
CP ' '+1

View File

@ -31,7 +31,7 @@ F_FIRST: CALL .INIT_VARS
LD A,(.SEARCH_ATTRIBUT)
CALL SEARCH.Custom
RET C
LD HL,MASKARE
LD HL,CORE_BUFFERS.MASKARE
.DTABUF+1: LD DE,0
LD BC,FAT_DIRECTORY_RECORD.ATTRIBUT ; ª®¯¨à㥬 .NAME ¨ .EXT
LDIR
@ -43,13 +43,13 @@ F_FIRST: CALL .INIT_VARS
LD BC,FAT_DIRECTORY_RECORD
ADD IX,BC
LD (F_NEXT.CURHND),IX
LD HL,HANDBUF + FAT_DIRECTORY_RECORD.RESERVED_NT
LD BC,HANDBUF.SIZE - FAT_DIRECTORY_RECORD.RESERVED_NT
LD HL,CORE_BUFFERS.HANDBUF + FAT_DIRECTORY_RECORD.RESERVED_NT
LD BC,CORE_BUFFERS.HANDBUF.SIZE - FAT_DIRECTORY_RECORD.RESERVED_NT
LDIR
LD A,(HANDBUF + FAT_DIRECTORY_RECORD.ATTRIBUT)
LD A,(CORE_BUFFERS.HANDBUF + FAT_DIRECTORY_RECORD.ATTRIBUT)
LD (DE),A
INC DE
LD HL,HANDBUF
LD HL,CORE_BUFFERS.HANDBUF
.FNDMODE+1: LD A,0
OR A
JR NZ,.FIND_M2
@ -87,7 +87,7 @@ F_NEXT:
RET Z
LD (F_FIRST.DTABUF),DE
EX DE,HL
LD DE,MASKARE
LD DE,CORE_BUFFERS.MASKARE
LD BC,11 ;!HARDCODE
LDIR

View File

@ -13,13 +13,14 @@ MKDIR:
CCF
RET
;
; Entry point ;!TEST Current Dir ;[x] 15/10/23
; Entry point
.B: PUSH HL
CALL DIR_PATH_CHECK
POP HL
RET C
CALL .START
PUSH AF
;Current Dir
LD HL,CORE_BUFFERS.CurrentDirectory
CALL CHDIR
POP AF
@ -36,6 +37,7 @@ MKDIR:
;!TEST optimization à ­¥¥ SetPath_GetName 㦥 § £à㧨« ¤¨à¥ªâ®à¨î
;CALL LOADDIR ; ¯à®ç¨â âì ᯨ᮪ ª â «®£ 
;
;[ ] cdfs
CALL SEARCH.Dir ; ¯®¨áª § ¯¨á¨ ª â «®£  ¢ ᯨ᪥ ¤¨áª 
; [x] fixed a bug with incorrect search when there were too many files in the directory 12/03/2024
; LD A,DSS_Error.sys.DIR_EXISTS
@ -59,8 +61,8 @@ MKDIR:
;
CALL WRITE_TO_FAT ; § ¯¨á âì ¢ ª¥è FAT-  ­®¬¥à ª« áâ¥à 
CALL WRITE_FAT_TABLE ; ¯®¤ª«. ¡ ­ªã ª¥è  FAT ¨ § ¯¨á âì ¥£® ­  ¤¨áª
LD HL,MASKARE
LD DE,HANDBUF
LD HL,CORE_BUFFERS.MASKARE
LD DE,CORE_BUFFERS.HANDBUF
LD BC,11
LDIR
EX DE,HL
@ -113,7 +115,7 @@ MKDIR:
DJNZ .loop3
; ᪮¯¨à®¢ âì ¡ ©âë 11..31 FAT_DIRECTORY_RECORD
INC HL
LD DE,HANDBUF+FAT_DIRECTORY_RECORD.ATTRIBUT ; ï祩ª   âਡã⮢ ä ©« 
LD DE,CORE_BUFFERS.HANDBUF+FAT_DIRECTORY_RECORD.ATTRIBUT ; ï祩ª   âਡã⮢ ä ©« 
EX DE,HL
LD BC,21 ; !HARDCODE
LDIR
@ -139,14 +141,14 @@ MKDIR:
;
;LD IX,HANDBUF
XOR A
LD (HANDBUF + FAT_DIRECTORY_RECORD.FIRST_CLUSTER_L),A
LD (HANDBUF + FAT_DIRECTORY_RECORD.FIRST_CLUSTER_L+1),A
LD (HANDBUF + FAT_DIRECTORY_RECORD.FIRST_CLUSTER_H),A
LD (HANDBUF + FAT_DIRECTORY_RECORD.FIRST_CLUSTER_H+1),A
LD DE,HANDBUF + FAT_DIRECTORY_RECORD.ATTRIBUT ; ï祩ª   âਡã⮢ ä ©« 
LD (CORE_BUFFERS.HANDBUF + FAT_DIRECTORY_RECORD.FIRST_CLUSTER_L),A
LD (CORE_BUFFERS.HANDBUF + FAT_DIRECTORY_RECORD.FIRST_CLUSTER_L+1),A
LD (CORE_BUFFERS.HANDBUF + FAT_DIRECTORY_RECORD.FIRST_CLUSTER_H),A
LD (CORE_BUFFERS.HANDBUF + FAT_DIRECTORY_RECORD.FIRST_CLUSTER_H+1),A
LD DE,CORE_BUFFERS.HANDBUF + FAT_DIRECTORY_RECORD.ATTRIBUT ; ï祩ª   âਡã⮢ ä ©« 
.copy_dir_record:
EX DE,HL
LD BC,HANDBUF.SIZE - FAT_DIRECTORY_RECORD.ATTRIBUT ; 21
LD BC,CORE_BUFFERS.HANDBUF.SIZE - FAT_DIRECTORY_RECORD.ATTRIBUT ; 21
LDIR
POP AF
OUT (SLOT3),A

View File

@ -44,8 +44,8 @@ OPEN_FN: ;!TEST Current Dir ;[x] 15/10/23
;
LD D,YH
LD E,YL
LD HL,HANDBUF
LD BC,HANDBUF.SIZE
LD HL,CORE_BUFFERS.HANDBUF
LD BC,CORE_BUFFERS.HANDBUF.SIZE
LDIR
.TMP+1: LD A,0
LD (IY+_sFM.ACCESS_MODE),A

View File

@ -71,7 +71,7 @@ RENAME: ;!TEST Current Dir ;[x] 15/10/23
SET_PAGE_X DIRPAGE
EX AF,AF'
;
LD HL,MASKARE
LD HL,CORE_BUFFERS.MASKARE
LD D,XH
LD E,XL
LD BC,11

View File

@ -42,10 +42,10 @@ RMDIR: ;!TEST Current Dir ;[x] 15/10/23
CALL LOADDIR
CALL SEARCH.Dir
RET C
; fat32
LD HL,(HANDBUF+FAT_DIRECTORY_RECORD.FIRST_CLUSTER_H)
; fat32 ; [ ] CDFS
LD HL,(CORE_BUFFERS.HANDBUF + FAT_DIRECTORY_RECORD.FIRST_CLUSTER_H)
EXX
LD HL,(HANDBUF+FAT_DIRECTORY_RECORD.FIRST_CLUSTER_L)
LD HL,(CORE_BUFFERS.HANDBUF + FAT_DIRECTORY_RECORD.FIRST_CLUSTER_L)
PUSH IX ;!TODO record index. ¢®§¬®¦­®, çâ® ¬®¦¥â á«®¬ âìáï, ¥á«¨ ¡®«ìè¥ áâà ­¨æë
;
;!TODO <20>à®æ¥¤ãà  ¯®«­®£® ¢ëç¨â뢠­¨ï ª â «®£  (¢á¥ ª« áâ¥àë). Œ®¦­® § ¤¥©á⢮¢ âì ¢ ¤àã£¨å ¬¥áâ å

View File

@ -216,7 +216,6 @@ SAVETXT: PUSH AF
.NOSAVET: POP AF
RET
;-----------------------------------------------------------------------
BACKTXT: PUSH AF
.VMODE+1: LD A,#00
;BIT 7,A

View File

@ -70,7 +70,7 @@ SetPath_GetName:
RET NZ
INC HL
;
.dir_loop: LD DE,TMPNAME
.dir_loop: LD DE,CORE_BUFFERS.TMPNAME
LD BC,#0DFF
.loop: LD A,(HL)
INC HL
@ -88,20 +88,20 @@ SetPath_GetName:
RET
;
.done: XOR A
LD (TMPNAME),A
LD (CORE_BUFFERS.TMPNAME),A
RET
;
.DIR_NAME: XOR A
LD (DE),A
PUSH HL
LD HL,TMPNAME
LD HL,CORE_BUFFERS.TMPNAME
CALL OPENDIR
POP HL
RET C
JR .dir_loop
;
; <20>ãä¥à ¨¬¥­¨ 8.3 ä®à¬ â 
TMPNAME: DZ ' ' ; 12 ¯à®¡¥«®¢ ¨ 0 ;!FIXIT ª ¡ãä¥à ¬
;TMPNAME: DZ ' ' ; 12 ¯à®¡¥«®¢ ¨ 0 ;!FIXIT ª ¡ãä¥à ¬
;----------------------------------------------------------------------;
@ -218,8 +218,8 @@ OPENDSK: ;!TEST DRV.Open
; DE - 11 bytes filename
; RET: C=2 FILE WITHOUT EXTENTION
; C=1 FILE WITH EXTENTION
MASK: LD HL,TMPNAME
.name: LD DE,MASKARE
MASK: LD HL,CORE_BUFFERS.TMPNAME
.name: LD DE,CORE_BUFFERS.MASKARE
.custom: PUSH HL
PUSH DE
LD H,D
@ -399,7 +399,7 @@ DIR_PATH_CHECK: LD A,(HL)
;----------------------------------------------------------------------;
CHECK_NAME: LD HL,MASKARE
CHECK_NAME: LD HL,CORE_BUFFERS.MASKARE
.custom: LD BC,11 ;!HARDCODE
LD A,"?"
CPIR

View File

@ -69,26 +69,20 @@ RST_0x10: JP RST_10
RST_0x18: PUSH AF
PUSH BC
DRV_PG_NUMBER+2:
LD BC,0*256+SLOT0
LD BC,SLOT0 + 0*256
JP PORTAL.out_MAIN
////////////////////////////////////////////////////////////////////////
;NOT USED
;FS API
////////////////////////////////////////////////////////////////////////
_mInfoBLOCK #20-$,#FF
RST_0x20: JP RST_20
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
RST_20:
RST_28:
NOPS: LD A,DSS_Error.sys.INVALID_FUNCTION
SCF
RET
RST_0x20: PUSH AF
PUSH BC
FS_PG_NUMBER+2: LD BC,SLOT0 + 0*256
JP PORTAL.out_MAIN
////////////////////////////////////////////////////////////////////////
@ -101,6 +95,15 @@ RST_0x28: JP RST_28
////////////////////////////////////////////////////////////////////////
RST_28:
NOPS: LD A,DSS_Error.sys.INVALID_FUNCTION
SCF
RET
////////////////////////////////////////////////////////////////////////
;MOUSE API
////////////////////////////////////////////////////////////////////////
_mInfoBLOCK #30-$,#FF
@ -171,6 +174,20 @@ RST_10: PUSH HL
////////////////////////////////////////////////////////////////////////
; in: C - áâà ­¨æ  ¤«ï ¯®¤ª«î祭¨ï
; out: A - áâà ­¨æ  ª®â®à ï ¡ë«  ¯®¤ª«î祭 
SET_PAGE_X: LD B,high BANKTBL
LD A,(BC)
LD B,A
LD C,SLOT3
IN A,(SLOT3)
OUT (C),B
RET
////////////////////////////////////////////////////////////////////////
;DRIVE PAGE SWITCH
////////////////////////////////////////////////////////////////////////
_mInfoBLOCK #80-$,0
@ -194,6 +211,14 @@ CLEAR_BUFFER_AND_INIT_PROC:
LD BC,CLEAR_ZONE.size - 1
LD (HL),A
LDIR
;!TODO ¯¥à¥­¥á⨠¢ _sBuffers ¢ ­ ç «® ¥éñ ¡ãä¥àë á ¯à®¡¥« ¬¨ ¢ ­ ç «¥ à ¡®âë
LD HL,CORE_BUFFERS.TMPNAME
LD DE,CORE_BUFFERS.TMPNAME + 1
LD BC,CORE_BUFFERS.TMPNAME.Size - 1
LD A," "
LD (HL),A
LDIR
;
LD HL,':'*256 + 'X'
LD (CORE_BUFFERS.CurrentPath),HL
LD A,'\' ;
@ -321,7 +346,7 @@ DSS_API_TABLE:
/*
;!FIXIT ª ¡ãä¥à ¬
; Œ áᨢ «®£. ­®¬¥à®¢ ¡ ­®ª à áè¨à¥­¨ï DSS
BANKTBL: BLOCK USING_MEMPAGES+1,#FF ; +1 ¤«ï COREPAGE
@ -333,16 +358,24 @@ MASKARE: BLOCK 8,0 ;
BLOCK 3,0 ; à áè.
BLOCK 21,0 ; 11+21=32
;
*/
DISPLAY "DOS-MAIN end address: ",/H,$-1
BANKTBL EQU ($ & #FF00) + (1<?($ & #FF)) * #100
.Size EQU USING_MEMPAGES + 2
;> > > > > > > > > > > > > > > > BUFFERS < < < < < < < < < < < < < < < <
CLEAR_ZONE.start EQU $
CLEAR_ZONE.start EQU BANKTBL + BANKTBL.Size
MODULE CORE_BUFFERS
BUFFERSplace _sBuffers=$
BUFFERSplace _sBuffers = CLEAR_ZONE.start
TMPNAME EQU BUFFERSplace.TMPNAME
.Size EQU 8+1+3+1 ; <20>ãä¥à ¨¬¥­¨ 8.3 + 0
HANDBUF EQU BUFFERSplace.HANDBUF
.SIZE EQU FAT_DIRECTORY_RECORD
MASKARE _sMASKARE = BUFFERSplace.MASKARE
FM_BUF _sFM = BUFFERSplace.FileManipulator
.Size EQU _sFM
.FullSize EQU FMCOUNT*FM_BUF.Size
@ -387,17 +420,30 @@ CLEAR_ZONE.size EQU _sBuffers
DISPLAY "CLEAR_ZONE.End ", /H, CLEAR_ZONE.start + CLEAR_ZONE.size
DISPLAY "--- --- --- --- --- --- --- ---"
EXPORT BANKTBL
EXPORT CLEAR_ZONE.start
EXPORT CLEAR_ZONE.size
EXPORT CORE_BUFFERS.BUFFERSplace
EXPORT CORE_BUFFERS.HANDBUF
EXPORT CORE_BUFFERS.HANDBUF.SIZE
EXPORT CORE_BUFFERS.MASKARE
EXPORT CORE_BUFFERS.TMPNAME
EXPORT CORE_BUFFERS.FM_BUF
EXPORT CORE_BUFFERS.FM_BUF.Size
EXPORT CORE_BUFFERS.FM_BUF.FullSize
EXPORT CORE_BUFFERS.FS_Buffer
EXPORT CORE_BUFFERS.EXEBUFF
EXPORT CORE_BUFFERS.XSTACK
EXPORT CORE_BUFFERS.XSTACK.Spoint
EXPORT CORE_BUFFERS.BUFFER
EXPORT CORE_BUFFERS.SECTOR_BUFFER
EXPORT CORE_BUFFERS.MemoryTable
EXPORT CORE_BUFFERS.CurrentPath
EXPORT CORE_BUFFERS.CurrentDirectory
EXPORT CORE_BUFFERS.CurrentDirectory.DEPTH
EXPORT CORE_BUFFERS.WorkDirectory
;
EXPORT CORE_BUFFERS.WorkDirectory.DEPTH
;> > > > > > > > > > > > > > > > BUFFERS < < < < < < < < < < < < < < < <
@ -413,7 +459,7 @@ CLEAR_ZONE.size EQU _sBuffers
ASSERT "Warning! ENVVALUE != BUFFER"
ENDIF
DISPLAY "FAT MODULE SIZE: ",/A,FAT_MODULE_SIZE
DISPLAY "MODULE SIZE: ",/A,MODULE_SIZE
DISPLAY "DEPLOY end address: ",/H,$
DISPLAY "Space for DRV-MAIN: ",/A,#4000-$," bytes."

View File

@ -30,18 +30,25 @@
ENDM
;
; ;
; MACRO SET_PAGE_X new_page
; LD A,(BANKTBL + new_page)
; LD B,A
; LD C,SLOT3
; IN A,(SLOT3)
; OUT (C),B
; ENDM
; ;
;
MACRO SET_PAGE_X new_page
LD A,(BANKTBL+new_page)
LD B,A
LD C,SLOT3
IN A,(SLOT3)
OUT (C),B
LD C,new_page
CALL SET_PAGE_X
ENDM
;
;
; MACRO BUFFER_KEYINTER
; _mInfoALIGN 256,0

View File

@ -1,18 +1,8 @@
;[BEGIN]
;//MODULE: FAT
;//CREATE: 19-05-1998 AUTHOR: Denis Parinov
;//UPDATE: 24-10-1999 DNS Restore module
;---------------------------------------------------------------
;Rev Date Name Description
;---------------------------------------------------------------
;R08 14-11-2002 DNS IMPROVE BPB-FUNCTION
;R07 17-12-1999 DNS BUG FIX SIGNATURE #55AA AT 510 OFFSET
;RY01 16-11-1999 DNS ERROR READING FAT CHAIN
;RX01 10-02-1999 DNS UPGRADE FAT CASH
;---------------------------------------------------------------
; [ ] RST_FS
;----------------------------------------------------------------------;
FAT_MODULE_START EQU $
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
; MODULE FAT_FS
MODULE_START EQU $
SET_FSInfo: LD A,(CORE_BUFFERS.FS_Buffer.FAT_TYPE)
@ -65,6 +55,7 @@ READ_BPB: LD C,Dss.DRV.GetBPB
WRITE_FSinfo: LD IX,(CORE_BUFFERS.FS_Buffer.FSINFO_Sector)
LD HL,0
;JR WRITE_SECTOR
;
; ‡ ¯¨á âì ᥪâ®à ¨§ SECTOR_BUFFER
; ‚室: HL:IX = Logical Block (sector)
WRITE_SECTOR: LD BC,1*256 + Dss.DRV.Write
@ -176,7 +167,7 @@ SEARCH:
OR D
JR NZ,.next_record
;
.found_attr: LD HL,MASKARE
.found_attr: LD HL,CORE_BUFFERS.MASKARE
LD D,XH
LD E,XL
LD B,11
@ -199,9 +190,9 @@ SEARCH:
; EXX
PUSH IX
;
LD HL,HANDBUF
LD HL,CORE_BUFFERS.HANDBUF
EX DE,HL
LD BC,HANDBUF.SIZE
LD BC,CORE_BUFFERS.HANDBUF.SIZE
LDIR
;!TEST 9/11/23 record index
POP DE
@ -308,7 +299,7 @@ FINDDIR: SET_PAGE_X DIRPAGE
LD A,(IX + FAT_DIRECTORY_RECORD.ATTRIBUT)
AND FAT_ATTR.DIRECTORY
JR Z,.next_step
LD HL,MASKARE
LD HL,CORE_BUFFERS.MASKARE
LD D,XH
LD E,XL
EX DE,HL
@ -489,13 +480,13 @@ OPENDIR: LD IY,CORE_BUFFERS.FM_BUF
JR Z,.REROOT
;
.no_root: EXX
LD HL,MASKARE
LD DE,MASKARE+1
LD HL,CORE_BUFFERS.MASKARE
LD DE,CORE_BUFFERS.MASKARE+1
LD BC,10 ;!HARDCODE
LD (HL),' '
LDIR
EXX
LD DE,MASKARE
LD DE,CORE_BUFFERS.MASKARE
.loop: LDI
LD A,(HL)
OR A
@ -630,8 +621,8 @@ WRT_HND:
.WRT_HN2: ;LD D,XH
;LD E,XL
EX DE,HL
LD HL,HANDBUF
LD BC,HANDBUF.SIZE
LD HL,CORE_BUFFERS.HANDBUF
LD BC,CORE_BUFFERS.HANDBUF.SIZE
LDIR
EX AF,AF'
OUT (SLOT3),A
@ -2784,6 +2775,6 @@ CHECK_64kb_CLUSTER:
;
;----------------------------------------------------------------------;
FAT_MODULE_SIZE EQU $-FAT_MODULE_START
;//MODULE: FAT
;[END]
MODULE_SIZE EQU $ - MODULE_START
; ENDMODULE
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;

View File

@ -20,6 +20,12 @@ RD_BPB: CALL READ_BPB ; [ ] cdfs
;ロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロ;
INCLUDE "FAT.ASM"
INCLUDE "CDFS.ASM"

View File

@ -117,8 +117,18 @@
ENDS
;
STRUCT _sMASKARE
.Name BLOCK 8,0 ; ¨¬ï ä ©« 
.Ext BLOCK 3,0 ; à áè.
.Data BLOCK 21,0 ; 11+21=32
ENDS
; <EFBFBD>ãä¥à ¨¬¥­¨ 8.3 ä®à¬ â 
;
STRUCT _sBuffers
.TMPNAME BLOCK 8+4+1,0 ; <EFBFBD>ãä¥à ¨¬¥­¨ 8.3 + 0
.HANDBUF BLOCK FAT_DIRECTORY_RECORD,0
.MASKARE _sMASKARE
.FileManipulator _sFM ; 44 bytes + 44 bytes * (FMCOUNT-1)
.FM_RESERVE BLOCK _sFM * (FMCOUNT-1),0 ;
.FS_Buffer _sFS_Buffer

View File

@ -131,7 +131,7 @@ ENVADDR EQU #E400
;FAT_CACHE EQU #C000
FMCOUNT EQU 10 ; Š®«¨ç¥á⢮ ä ©«®¢ëå ¬ ­¨¯ã«ïâ®à®¢
HANDBUF.SIZE EQU FAT_DIRECTORY_RECORD
;HANDBUF.SIZE EQU FAT_DIRECTORY_RECORD
;----------------------------------------------------;
;

View File

@ -69,7 +69,7 @@ DEPLOY: ;Allocate memory
IN A,(SLOT3)
PUSH AF
IN A,(SLOT0)
LD (DRV_CONTENT + DRV_PAGE.MAIN_PAGE_NUMBER),A ;!TEST
LD (DRV_CONTENT + DRV_PAGE.MAIN_PAGE_NUMBER),A
OUT (SLOT3),A
;
LD A,C
@ -97,6 +97,18 @@ DEPLOY: ;Allocate memory
LDIR
IN A,(SLOT3)
LD (DRV_PG_NUMBER),A
; [ ] CDFS prepare
/*
SET_PAGE_X FSPAGE
;
LD HL,FS_CONTENT
LD DE,#C000
LD BC,FS_CONTENT.SIZE
LDIR
IN A,(SLOT3)
LD (FS_PG_NUMBER),A
*/
;
POP AF
OUT (SLOT3),A
AND A