mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 01:11:48 +03:00
fix bug in ATTRIB for 64 kb cluster
This commit is contained in:
parent
e6aa5aa304
commit
058f5e4859
@ -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 㪠§ ⮫쪮 ¬¥âª ¢ ª ¢ëçª å
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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>à®æ¥¤ãà ¯®«®£® ¢ëç¨âë¢ ¨ï ª â «®£ (¢á¥ ª« áâ¥àë). Œ®¦® § ¤¥©á⢮¢ âì ¢ ¤àã£¨å ¬¥áâ å
|
||||
|
||||
@ -193,7 +193,7 @@ SAVETXT: PUSH AF
|
||||
LD L,#28
|
||||
.SVTEXT1: LD (BACKTXT.WinMax),HL
|
||||
LD DE,#0000
|
||||
LD A,(BANKTBL+TXTPAGE)
|
||||
LD A,(BANKTBL + TXTPAGE)
|
||||
LD B,A
|
||||
|
||||
LD C,BIOS.WIN_COPY
|
||||
@ -216,7 +216,6 @@ SAVETXT: PUSH AF
|
||||
.NOSAVET: POP AF
|
||||
RET
|
||||
;-----------------------------------------------------------------------
|
||||
|
||||
BACKTXT: PUSH AF
|
||||
.VMODE+1: LD A,#00
|
||||
;BIT 7,A
|
||||
@ -230,7 +229,7 @@ BACKTXT: PUSH AF
|
||||
LD IX,#C000
|
||||
.WinMax+1: LD HL,#2050
|
||||
LD DE,#0000
|
||||
LD A,(BANKTBL+TXTPAGE)
|
||||
LD A,(BANKTBL + TXTPAGE)
|
||||
LD B,A
|
||||
LD C,BIOS.WIN_RESTORE
|
||||
;[x] 29/9/23
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
@ -190,10 +207,18 @@ PORTAL.out_MAIN:
|
||||
CLEAR_BUFFER_AND_INIT_PROC:
|
||||
XOR A
|
||||
LD HL,CLEAR_ZONE.start
|
||||
LD DE,CLEAR_ZONE.start+1
|
||||
LD BC,CLEAR_ZONE.size-1
|
||||
LD DE,CLEAR_ZONE.start + 1
|
||||
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."
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
|
||||
@ -20,6 +20,12 @@ RD_BPB: CALL READ_BPB ; [ ] cdfs
|
||||
|
||||
|
||||
|
||||
;ロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロロ;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
INCLUDE "FAT.ASM"
|
||||
INCLUDE "CDFS.ASM"
|
||||
|
||||
|
||||
@ -301,7 +301,7 @@ SETUP_CURSORS:
|
||||
;
|
||||
in a,(SLOT3)
|
||||
push af ; 甌縲. <20>珥
|
||||
ld a,(BANKTBL+TXTPAGE) ; 2-© «®£. ®¬¥à áâà ¨æë à áè. „Ž‘
|
||||
ld a,(BANKTBL + TXTPAGE) ; 2-© «®£. ®¬¥à áâà ¨æë à áè. „Ž‘
|
||||
out (SLOT3),a
|
||||
|
||||
; ; <20><>腮碎 瓱痰. Л<><D09B><EFBFBD><EFBFBD>.
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
;----------------------------------------------------;
|
||||
;
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
Reference in New Issue
Block a user