GET_ADDR_IN_DIR_CACHE

This commit is contained in:
Tolik Trek 2026-01-06 00:20:55 +10:00
parent 3c8e693290
commit a404ff43cb
7 changed files with 84 additions and 22 deletions

0
.tmp/disasm.list Normal file
View File

View File

@ -16,11 +16,6 @@
; BIOS 3.06 § £à㦠¥â ®¤¨­ ᥪâ®à § £àã§ç¨ª  ¨ ¯¥à¥¤ ñâ ¥¬ã ã¯à ¢«¥­¨¥.
; 0 - ®à¨£¨­ «ì­ë© ¢ à¨ ­â § ¯ã᪠ DSS, 1 - ¢ à¨ ­â ‘ ©¬ ­ 
DEFINE ORIGINAL_DSS 0
; 1 - ¡ã¤¥â £à㧨âì ¢¥àá¨î ‘ ©¬ ­  ¨ ®á­®¢­ãî. 0 - ⮫쪮 ®á­®¢­ãî.
DEFINE UNIVERSAL_BOOT 1
;------------------------------------------------------------------------------
ORG_ADDRESS EQU #8000
MAX_SECTORS_PER_PAGE EQU #20 ;¬ ªá¨¬ «ì­®¥ ª®«-¢® ᥪâ®à®¢ ¢ áâà ­¨æ¥ ;!TODO   ¥á«¨ ᥪâ®à ¡®«ìè¥ 512?

View File

@ -64,7 +64,7 @@ RENAME: ; Current Dir 15/10/23
LD BC,11
LDIR
;
CALL DELETE_LFN_RECORDS ; [ ] 膉𠼻平言 <20>祠嶁 LFN
;CALL DELETE_LFN_RECORDS ; [ ] 膉𠼻平言 <20>祠嶁 LFN
;
EX AF,AF'
OUT (SLOT3),A

View File

@ -41,6 +41,7 @@ RMDIR: ; Current Dir 15/10/23
LD HL,(CORE_BUFFERS.HANDBUF + FAT_DIRECTORY_RECORD.FIRST_CLUSTER_L)
PUSH IX ;!TODO record index. ¢®§¬®¦­®, çâ® ¬®¦¥â á«®¬ âìáï, ¥á«¨ ¡®«ìè¥ áâà ­¨æë
;
;!FIXIT ;[ ] big dir. ¯à®¢¥àïâì, çâ® ¯ãá⮩ ç¥à¥§ ­®¢ë© ¢ë§®¢ Find.
;!TODO <20>à®æ¥¤ãà  ¯®«­®£® ¢ëç¨â뢠­¨ï ª â «®£  (¢á¥ ª« áâ¥àë). Œ®¦­® § ¤¥©á⢮¢ âì ¢ ¤àã£¨å ¬¥áâ å
.read_dir_big_loop:
PUSH HL

View File

@ -860,7 +860,7 @@ WRITE_DIR_HANDLE:
POP DE
RET
;----------------------------------------------------------------------;
ASSERT 0 "TODO!"
ASSERT 0 "TODO! GET_ADDR_IN_DIR_CACHE"
;!TODO
; .DIRSIZE ¯®¬¥è ¥â ¥á«¨ ¢ ªíè ¡ã¤¥â ¤à㣠ï áâà ­¨æ ?
; LOAD_SAVE_DIR_PREPARE ¢®§¬®¦­® ­¥ ­ã¦¥­, ­ã¦­® ⮫쪮 ãáâ ­®¢¨âì ¯à ¢¨«ì­®¥ ᬥ饭¨¥ ¢ FM
@ -896,6 +896,7 @@ SAVEDIR: ;!TODO optimize
OUT (SLOT3),A
RET
;
; FAT12-16
.SaveRootDir: LD HL,(CORE_BUFFERS.FS_Buffer.RootDirFirstSector_H) ;!TODO ¢®§¬®¦­®, 墠â¨â LD HL,0
LD IX,(CORE_BUFFERS.FS_Buffer.RootDirFirstSector_L)
LD A,(CORE_BUFFERS.FS_Buffer.DirSizeInSectors)
@ -1453,12 +1454,36 @@ FS_Buffer:
; FAT_X 12-16-32
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
; ‚室: IX - 㪠§ â¥«ì ­  ­®¬¥à § ¯¨á¨ ¢ ª â «®£¥
; ‚ë室: HL - ᬥ饭¨¥ ¢ SLOT3 ­  § ¯¨áì ¢ ª â «®£¥
GET_ADDR_IN_DIR_CACHE:
LD A,3
PUSH IX
POP HL
RR H
;
RR L
RRA
RR L
RRA
RR L
RRA
LD H,L
LD L,A
LD A,H
OR #C0
LD H,A
RET
; “¤ «ï¥â § ¯¨áì ¢ ª â «®£¥ ¨ ®á¢®¡®¦¤ ¥â § ­ïâãî æ¥¯®çªã ª« áâ¥à®¢
; ‚室: IX - 㪠§ â¥«ì ­  㤠«ï¥¬ãî § ¯¨áì ¢ DIRPAGE
; ¢ Š<>˜ ¤¨à¥ªâ®à¨¨ ¤®«¦­  ¡ëâì § £à㦥­  ç áâì á ­ã¦­®© § ¯¨áìî
;!TODO record index. ¢®§¬®¦­®, çâ® ¬®¦¥â á«®¬ âìáï, ¥á«¨ ¡®«ìè¥ áâà ­¨æë
DELETE_REC_FAT: SET_PAGE_X DIRPAGE
EX AF,AF'
CALL DELETE_LFN_RECORDS ; [ ] big dir ; [x] 膉𠼻平言 <20>祠嶁 LFN
;CALL DELETE_LFN_RECORDS ; [ ] big dir ; [x] 㤠«¥­¨¥ § ¯¨á¨ LFN
LD (IX + FAT_DIRECTORY_RECORD.NAME),#E5 ; ¯à¨§­ ª 㤠«¥­¨ï ä ©« 
; fat32
LD L,(IX+FAT_DIRECTORY_RECORD.FIRST_CLUSTER_H) ; ü ¯¥à¢®£® ª« áâ¥à 

View File

@ -3,17 +3,19 @@
; REN, RENAME. <20>¥à¥¨¬¥­®¢ âì ä ©«
;
;///////////////////////////////////////////////////
cmd_rename:
ex de,hl
ld de,Buffers.work.buffer1;
ld c,Dss.GSwitch
cmd_rename: EX DE,HL
LD DE,Buffers.work.buffer1;
LD C,Dss.GSwitch
RST ToDSS
ld de,Buffers.work.buffer+256;
ld c,Dss.GSwitch
;
LD DE,Buffers.work.buffer + 256;
LD C,Dss.GSwitch
RST ToDSS
ld hl,Buffers.work.buffer1;
ld de,Buffers.work.buffer+256;
ld c,Dss.Rename
;
LD HL,Buffers.work.buffer1;
LD DE,Buffers.work.buffer + 256;
LD C,Dss.Rename
RST ToDSS
call c,print_err_message ; ¢ë¢®¤ á®®¡é¥­¨ï
ret
;
CALL C,print_err_message ; ¢ë¢®¤ á®®¡é¥­¨ï
RET

View File

@ -263,6 +263,45 @@ LOAD_SAVE_DIR_PREPARE:
#1FFFE0 & #1FC000 ᬥ饭¨¥ ­  ­ã¦­ë© ¡«®ª ¯® #4000 ¡ ©â®¢
#1FFFE0 & #3FFF ¤à¥á ­ã¦­®© ¯®§¨æ¨¨ ¢ ªíè
(#1FFFE0 & #1FC000)<<2 ¤¢¨£ ¥¬ ¡ ©â 2 ¨ 3 ç⮡ ¯®«ãç¨âì ­®¬¥à ¡«®ª 
3025
#0BD1 ­®¬¥à § ¯¨á¨
#017A20 ᬥ饭¨¥ ­  § ¯¨áì ¢ ä ©«¥ ¤¨à¥ªâ®à¨¨
#017A20 & #1FC000 = #014000 ᬥ饭¨¥ ­  ­ã¦­ë© ¡«®ª ¯® #4000 ¡ ©â®¢
#017A20 & #3FFF = #3A20 ¤à¥á ­ã¦­®© ¯®§¨æ¨¨ ¢ ªíè
(#017A20 & #1FC000)<<2 = #50000 ¤¢¨£ ¥¬ ¡ ©â 2 ¨ 3 ç⮡ ¯®«ãç¨âì ­®¬¥à ¡«®ª 
1011 1101 0001
0001 1101 0001
0000 1110 1000 1000
0000 0111 0100 0100
0000 0011 1010 0010
A E
00000001 11010001 +
10000000 11101000
01000000 01110100
00100000 00111010
0010 0000 0011 1010
E A
0011 1010 0010 0000
0001 0111 1010 0010 0000
0000 0011 1010 0010 0000
0001 0100 0000 0000 0000
XOR A
PUSH IX
POP DE
RR D
;
RR E
RRA
RR E
RRA
RR E
RRA
*/
;----------------------------------------------------------------------;