work in progress

This commit is contained in:
Tolik Trek 2025-10-11 15:46:43 +10:00
parent 9aae937142
commit 7a40f43798
13 changed files with 296 additions and 324 deletions

View File

@ -6,7 +6,7 @@
; 1 SET ATTRIB
; OUTPUT: A - ATTRIB
////////////////////////////////////////////////////////////////////////
ATTRIB: ;!TEST Current Dir ;[x] 15/10/23
ATTRIB: ; Current Dir ;[x] 15/10/23
LD C,A
;
PUSH HL
@ -25,20 +25,9 @@ ATTRIB: ;!TEST Current Dir ;[x] 15/10/23
INC B
DJNZ .B_1
; B = 0
.READ: ;!TEST ;[x] 16/11/23 optimize get attribute
;XOR A
;
CALL .OPENATR ;R002
.READ: CALL .OPENATR ;R002
RET C
;!TEST ;[x] 16/11/23 optimize get attribute
LD A,(CORE_BUFFERS.HANDBUF + FAT_DIRECTORY_RECORD.ATTRIBUT)
;LD B,(IY+_sFM.ATTRIBUT)
;PUSH BC
;CALL CLOSE
;POP BC
;RET C
;LD A,B
;
LD A,(CORE_BUFFERS.HANDBUF + FAT_DIRECTORY_RECORD.ATTRIBUT)
RET
;
.B_1: DJNZ .B_2
@ -46,9 +35,7 @@ ATTRIB: ;!TEST Current Dir ;[x] 15/10/23
.WRITE_FN: AND FAT_ATTR.NoVolID ; [x] 2/12/23 ä¨ªá ¤«ï volume ID
.WRITE: PUSH AF
XOR A
;!TEST ;[x] 16/11/23 optimize get attribute
LD (OPEN_FN.TMP),A
;
LD (OPEN_FN.TMP),A
CALL .OPENATR ;R002
CALL NC,OPEN_FN.FM
;

View File

@ -71,7 +71,7 @@ SetPath_GetName:
INC HL
;
.dir_loop: LD DE,CORE_BUFFERS.TMPNAME
LD BC,#0DFF
LD BC,256*CORE_BUFFERS.TMPNAME.Size + #FF
.loop: LD A,(HL)
INC HL
CP '\' ;
@ -208,111 +208,6 @@ OPENDSK: ;!TEST DRV.Open
;----------------------------------------------------------------------;
;----------------------------------------------------------------------;
; ŹŕĄ®ˇŕ §®˘ âě ¨¬ď 8.3 -> 11 ä®ŕ¬ â
; ˘ĺ®¤: hl = 8.3 ¨¬ď
; de = ˇăäĄŕ ¨¬Ą­¨ 11 ᨬ˘. ä®ŕ¬ â 
; Żŕ¨ ®č¨ˇŞĄ CF - ­Ą¤®Ż. ¨¬ď
;
; HL - MASK "file*.t??"
; DE - 11 bytes filename
; RET: C=2 FILE WITHOUT EXTENTION
; C=1 FILE WITH EXTENTION
MASK: LD HL,CORE_BUFFERS.TMPNAME
.name: LD DE,CORE_BUFFERS.MASKARE
.custom: PUSH HL
PUSH DE
LD H,D
LD L,E
INC DE
LD (HL),' '
LD BC,10 ;!HARDCODE = size (FileName + Extension - 1)
LDIR
POP DE
POP HL
LD A,(HL)
CP '.' ;R007
SCF ;R007
JR Z,.MASKB ;R007
CP ' '+1
.MASKB: LD A,DSS_Error.sys.INVALID_NAME
RET C
LD BC,#0902 ; B - áçĄâ稪
.MASK1: LD A,(HL)
CP ' '+1
CCF
RET NC
;
CP '*'
JR Z,.MASK3
CP '.'
JR Z,.MASK5
CP '"'
JR Z,.MASK_ERR
CP '+'
JR Z,.MASK_ERR
CP ','
JR Z,.MASK_ERR
CP '/'
JR Z,.MASK_ERR
CP ':'
JR Z,.MASK_ERR
CP ';'
JR Z,.MASK_ERR
CP '<'
JR Z,.MASK_ERR
CP '='
JR Z,.MASK_ERR
CP '>'
JR Z,.MASK_ERR
CP '['
JR Z,.MASK_ERR
CP '\'
JR Z,.MASK_ERR
CP ']'
JR Z,.MASK_ERR
CP '|'
JR Z,.MASK_ERR
CALL UPPER ; a..z -> A..Z
.MASK2: LD (DE),A
INC HL
INC DE
DJNZ .MASK1
;
.MASK_ERR: LD A,DSS_Error.sys.INVALID_NAME
SCF
RET
;
.MASK3: LD A,'?'
INC HL
DJNZ .MASK6
JR .MASK_ERR
;
.MASK6: LD (DE),A
INC DE
DJNZ .MASK6
LD B,1
JR .MASK1
;
.MASK5: LD A,' '
INC HL
DJNZ .MASK4
LD B,4
DEC C
JR NZ,.MASK1
JR .MASK_ERR
;
.MASK4: LD (DE),A
INC DE
DJNZ .MASK4
LD B,4
DEC C
JR NZ,.MASK1
JR .MASK_ERR
;----------------------------------------------------------------------;
;----------------------------------------------------------------------;
;!TEST Current Dir ;[x] 15/10/23
DIR_PATH_CHANGE:

View File

@ -1,12 +1,6 @@
;[BEGIN]
;//MODULE: DRV-MAIN AUTHOR: Denis Parinov
;//CREATE: 2003-03-12
;---------------------------------------------------------------
;Rev Date Name Description
;---------------------------------------------------------------
;R00 2003-03-19 DNS Initial version
;---------------------------------------------------------------
DRV_MODULE_START EQU $
MODULE DRIVES_DRIVER
MODULE_START EQU $
; ORG #0000
;PAGEDRV EQU 0
@ -194,8 +188,8 @@ A0066: JP DRV_PAGE.NMI ;
////////////////////////////////////////////////////////////////////////
; <[DRIVE PAGE SWITCH]> ;
BLOCK PORTAL.RSTx18_SWITCH_ADDRESS-$-(PORTAL.out_DRV.switch - PORTAL.out_DRV),#C7
PORTAL.out_DRV: PUSH BC
BLOCK PORTAL.RSTx18_SWITCH_ADDRESS-$-(PORTAL.out.switch - PORTAL.out),#C7
PORTAL.out: PUSH BC
.RETBANK+2: LD BC,SLOT0 + 0*256; ;!!!!! ReScnDRV ¨á¯®«ì§ã¥â íâ® §­ ç¥­¨¥
.switch: OUT (C),B
ASSERT $!=84,'-> Portal error!';
@ -204,10 +198,10 @@ PORTAL.out_DRV: PUSH BC
POP BC
POP AF
.ADCALL+1: CALL DISPATCH ; ¯ âç¨âáï ­  INTDISK
JR NC,PORTAL.out_DRV
JR NC,PORTAL.out
OR DSS_Error.DRV_MASK
SCF
JP PORTAL.out_DRV
JP PORTAL.out
////////////////////////////////////////////////////////////////////////
@ -228,7 +222,7 @@ DRV_PAGE.LDRIVE: DB #00
DISPATCH:
LD HL,INTDISK
LD (PORTAL.out_DRV.ADCALL),HL
LD (PORTAL.out.ADCALL),HL
INITDVC_RET_DRIVE:
CALL INITDVC
LD A,(DRV_PAGE.LDRIVE)
@ -295,7 +289,7 @@ LOGDRV EQU DEVICE + DEVICE.End
;-----------------------[ram_disk-drv.asm table]-----------------------;
; <E28099>ˆ€ ‘ŽŽ’‚…’‘’‚ˆŸ Œ…†„“ ”ˆ‡ˆ—…‘ŠˆŒ <20>ŽŒ…<C592>ŽŒ <20>€Œ„ˆŠ€ ˆ …ƒŽ RAM-DISK ID
; Log Number: DB RAM_Drive_Log_Number, RAM_Drive_ID ;(BIOS 0-15), (Block ID for BIOS)
RAMDTBL EQU LOGDRV + LOGDRV.Size
RAMDTBL EQU LOGDRV +DRIVES_DRIVER.LOGDRV.Size
.TBL_Entry EQU 2
.Size EQU .TBL_Entry * MAX_RAMDRIVES
; RAMDTBL: DUP MAX_RAMDRIVES * RAMDTBL.TBL_Entry
@ -311,10 +305,10 @@ RAMDTBL EQU LOGDRV + LOGDRV.Size
MODULE OLD_TABLES
;
;--------------------------[shared.asm table]--------------------------;
DEVICE EQU @RAMDTBL + @RAMDTBL.Size
.TBL_Entry EQU @DEVICE.TBL_Entry
.Size: EQU @DEVICE.Size
.End EQU @DEVICE.End
DEVICE EQU @DRIVES_DRIVER.RAMDTBL + @DRIVES_DRIVER.RAMDTBL.Size
.TBL_Entry EQU @DRIVES_DRIVER.DEVICE.TBL_Entry
.Size: EQU @DRIVES_DRIVER.DEVICE.Size
.End EQU @DRIVES_DRIVER.DEVICE.End
;----------------------------------------------------------------------;
;
@ -326,8 +320,8 @@ DEVICE EQU @RAMDTBL + @RAMDTBL.Size
;+09 FREE
;+15
LOGDRV EQU DEVICE + DEVICE.End
.TBL_Entry EQU @LOGDRV.TBL_Entry
.Size EQU @LOGDRV.Size
.TBL_Entry EQU @DRIVES_DRIVER.LOGDRV.TBL_Entry
.Size EQU @DRIVES_DRIVER.LOGDRV.Size
;----------------------------------------------------------------------;
;
@ -335,15 +329,15 @@ LOGDRV EQU DEVICE + DEVICE.End
;-----------------------[ram_disk-drv.asm table]-----------------------;
; <E28099>ˆ€ ‘ŽŽ’‚…’‘’‚ˆŸ Œ…†„“ ”ˆ‡ˆ—…‘ŠˆŒ <20>ŽŒ…<C592>ŽŒ <20>€Œ„ˆŠ€ ˆ …ƒŽ RAM-DISK ID
; Log Number: DB RAM_Drive_Log_Number, RAM_Drive_ID ;(BIOS 0-15), (Block ID for BIOS)
RAMDTBL EQU LOGDRV + LOGDRV.Size
.TBL_Entry EQU @RAMDTBL.TBL_Entry
.Size EQU @RAMDTBL.Size
RAMDTBL EQU LOGDRV + DRIVES_DRIVER.LOGDRV.Size
.TBL_Entry EQU @DRIVES_DRIVER.RAMDTBL.TBL_Entry
.Size EQU @DRIVES_DRIVER.RAMDTBL.Size
; RAMDTBL: DUP MAX_RAMDRIVES * RAMDTBL.TBL_Entry
; DB #FF
; EDUP
; .Size EQU $-RAMDTBL
;----------------------------------------------------------------------;
ENDMODULE
ENDMODULE ;OLD_TABLES
////////////////////////////////////////////////////////////////////////;
;DISPLAY "DEVICE start: ", /H, DEVICE
@ -355,14 +349,15 @@ RAMDTBL EQU LOGDRV + LOGDRV.Size
;
;DRV_TEMP_BUFFER:
DRV_MODULE_START.Size EQU (OLD_TABLES.RAMDTBL + OLD_TABLES.RAMDTBL.Size) - DRV_MODULE_START
DISPLAY "DRV MODULE SIZE: ",/A,DRV_MODULE_START.Size
MODULE_START.Size EQU (OLD_TABLES.RAMDTBL + OLD_TABLES.RAMDTBL.Size) - MODULE_START
DISPLAY "DRV MODULE SIZE: ",/A,MODULE_START.Size
;!TODO
;---------[256 bytes stack for return pages of RST #18 callers]--------;
; #3F00 - #4000
DRV_PAGE.RSTx18_RET_PAGES EQU #4000
;----------------------------------------------------------------------;
; ASSERT ((#4000-DRV_TEMP_BUFFER-256) > (DEVICE.Size + LOGDRV.Size + RAMDTBL.Size)), "No space for DRV_TEMP_BUFFER in DRV-MAIN page"
; ASSERT ((#4000-DRV_TEMP_BUFFER-256) > (DEVICE.Size +DRIVES_DRIVER.LOGDRV.Size + RAMDTBL.Size)), "No space for DRV_TEMP_BUFFER in DRV-MAIN page"
; ENDMODULE
; OUTEND
;[END]
;[END]
ENDMODULE ;DRIVES_DRIVER

View File

@ -368,11 +368,11 @@ BANKTBL EQU ($ & #FF00) + (1<?($ & #FF)) * #100
CLEAR_ZONE.start EQU BANKTBL + BANKTBL.Size
MODULE CORE_BUFFERS
BUFFERSplace _sBuffers = CLEAR_ZONE.start
TMPNAME EQU BUFFERSplace.TMPNAME
TMPNAME EQU BUFFERSplace.TMPNAME ; +-
.Size EQU 8+1+3+1 ; <20>ãä¥à ¨¬¥­¨ 8.3 + 0
HANDBUF EQU BUFFERSplace.HANDBUF
HANDBUF EQU BUFFERSplace.HANDBUF ; -
.SIZE EQU FAT_DIRECTORY_RECORD
MASKARE _sMASKARE = BUFFERSplace.MASKARE
MASKARE _sMASKARE = BUFFERSplace.MASKARE ; -
.Size EQU _sMASKARE
FM_BUF _sFM = BUFFERSplace.FileManipulator
.Size EQU _sFM

View File

@ -2221,20 +2221,10 @@ BLOCK_READ: LD (READ.PointerOnBuffer),IX
; HL:DE / A => DE:BC, H=0, L - ®áâ â®ª
CALL DIV_by_Shifts
PUSH HL ; ®áâ â®ª DIV_by_Shifts
; [x] GET/SAVE CLUSTER NUMBER BEFORE/AFTER READ/WRITE
; GET/SAVE CLUSTER NUMBER BEFORE/AFTER READ/WRITE
PUSH BC ; ¬« ¤è¥¥ á«®¢® ­®¬¥à  ª« áâ¥à 
PUSH DE ; [x] fat32 áâ à襥 á«®¢® ­®¬¥à  ª« áâ¥à 
;
; EXX
; LD L,(IY+_sFM.FS_REC.FIRST_CLUSTER_H) ; START CLUSTER High
; LD H,(IY+_sFM.FS_REC.FIRST_CLUSTER_H+1)
; LD A,L
; OR H
; EXX
; LD L,(IY+_sFM.FS_REC.FIRST_CLUSTER_L) ; START CLUSTER Low
; LD H,(IY+_sFM.FS_REC.FIRST_CLUSTER_L+1)
; OR L
; OR H
CALL CHECK_FIRST_CLUSTER
JR Z,.fast_exit_4
CALL GetSavedCluster
@ -2273,7 +2263,7 @@ BLOCK_READ: LD (READ.PointerOnBuffer),IX
DJNZ .loop1_big
;;;;
;
;[x] GET/SAVE CLUSTER NUMBER BEFORE/AFTER READ/WRITE
; GET/SAVE CLUSTER NUMBER BEFORE/AFTER READ/WRITE
POP DE ; [x] fat32 áâ à襥 á«®¢® ­®¬¥à  ª« áâ¥à 
POP BC ; ¬« ¤è¥¥ á«®¢® ­®¬¥à  ª« áâ¥à 
CALL SaveGotCluster
@ -2285,21 +2275,21 @@ BLOCK_READ: LD (READ.PointerOnBuffer),IX
LD A,C
SUB E
LD C,A
CP B ; (SectorsPerCluster - ®áâ â®ª) - ª®«¨ç¥á⢮ ᥪâ®à®¢ ¤«ï ç⥭¨ï
JR C,.skip1 ; SIZE > RESIDUE CLUSTER
LD C,B ; SIZE < CLUSTER
CP B ; (SectorsPerCluster - ®áâ â®ª) - ª®«¨ç¥á⢮ ᥪâ®à®¢ ¤«ï ç⥭¨ï
JR C,.skip1 ; SIZE > RESIDUE CLUSTER
LD C,B ; SIZE < CLUSTER
.skip1: LD A,B
SUB C
LD B,A
;
EXX
PUSH HL ; ­®¬¥à ª« áâ¥à  áâ àè ï ç áâì
EXX
PUSH HL ; ­®¬¥à ª« áâ¥à  ¬« ¤è ï ç áâì
PUSH BC ; B = ª®«¨ç¥á⢮ ᥪâ®à®¢ ­  ¤®ç¨âªã, C = (SectorsPerCluster - ®áâ â®ª) «¨¡® ª®«¨ç¥á⢮ ᥪâ®à®¢ ¤«ï ç⥭¨ï
PUSH DE ; D = 0, E = ®áâ â®ª DIV_by_Shifts
PUSH HL ; ­®¬¥à ª« áâ¥à  áâ àè ï ç áâì
EXX
PUSH HL ; ­®¬¥à ª« áâ¥à  ¬« ¤è ï ç áâì
PUSH BC ; B = ª®«¨ç¥á⢮ ᥪâ®à®¢ ­  ¤®ç¨âªã, C = (SectorsPerCluster - ®áâ â®ª) «¨¡® ª®«¨ç¥á⢮ ᥪâ®à®¢ ¤«ï ç⥭¨ï
PUSH DE ; D = 0, E = ®áâ â®ª DIV_by_Shifts
CALL CLUSTER_TO_SECTOR
POP DE ; D = 0, E = ®áâ â®ª DIV_by_Shifts
POP DE ; D = 0, E = ®áâ â®ª DIV_by_Shifts
ADD IX,DE
JR NC,.skip2
INC HL
@ -2310,7 +2300,7 @@ BLOCK_READ: LD (READ.PointerOnBuffer),IX
RST ToDSS.DRV
;
JR C,.Error
POP BC ; B = ª®«¨ç¥á⢮ ᥪâ®à®¢ ­  ¤®ç¨âªã, C = (SectorsPerCluster - ®áâ â®ª) «¨¡® ª®«¨ç¥á⢮ ᥪâ®à®¢ ¤«ï ç⥭¨ï
POP BC ; B = ª®«¨ç¥á⢮ ᥪâ®à®¢ ­  ¤®ç¨âªã, C = (SectorsPerCluster - ®áâ â®ª) «¨¡® ª®«¨ç¥á⢮ ᥪâ®à®¢ ¤«ï ç⥭¨ï
LD HL,(READ.PointerOnBuffer)
LD DE,(CORE_BUFFERS.FS_Buffer.BytesPerSector)
;!TEST
@ -2320,12 +2310,12 @@ BLOCK_READ: LD (READ.PointerOnBuffer),IX
DJNZ .loop2
;
LD (READ.PointerOnBuffer),HL
POP DE ; ­®¬¥à ª« áâ¥à  ¬« ¤è ï ç áâì
POP DE ; ­®¬¥à ª« áâ¥à  ¬« ¤è ï ç áâì
EXX
POP HL ; ­®¬¥à ª« áâ¥à  áâ àè ï ç áâì
POP HL ; ­®¬¥à ª« áâ¥à  áâ àè ï ç áâì
EXX
OR A
RET Z ; ª®«¨ç¥á⢮ ᥪâ®à®¢ ­  ¤®ç¨âªã = 0?
RET Z ; ª®«¨ç¥á⢮ ᥪâ®à®¢ ­  ¤®ç¨âªã = 0?
LD B,A
;
.loop4: LD HL,CORE_BUFFERS.FS_Buffer.SectorsPerCluster
@ -2775,6 +2765,111 @@ CHECK_64kb_CLUSTER:
;
;----------------------------------------------------------------------;
;----------------------------------------------------------------------;
; <20>८¡à §®¢ âì ¨¬ï 8.3 -> 11 ä®à¬ â
; ¢å®¤: hl = 8.3 ¨¬ï
; de = ¡ãä¥à ¨¬¥­¨ 11 ᨬ¢. ä®à¬ â 
; ¯à¨ ®è¨¡ª¥ CF - ­¥¤®¯. ¨¬ï
;
; HL - MASK "file*.t??"
; DE - 11 bytes filename
; RET: C=2 FILE WITHOUT EXTENTION
; C=1 FILE WITH EXTENTION
MASK: LD HL,CORE_BUFFERS.TMPNAME
.name: LD DE,CORE_BUFFERS.MASKARE
.custom: PUSH HL
PUSH DE
LD H,D
LD L,E
INC DE
LD (HL),' '
LD BC,10 ;!HARDCODE = size (FileName + Extension - 1)
LDIR
POP DE
POP HL
LD A,(HL)
CP '.' ;R007
SCF ;R007
JR Z,.MASKB ;R007
CP ' '+1
.MASKB: LD A,DSS_Error.sys.INVALID_NAME
RET C
LD BC,#0902 ; B - áç¥â稪
.MASK1: LD A,(HL)
CP ' '+1
CCF
RET NC
;
CP '*'
JR Z,.MASK3
CP '.'
JR Z,.MASK5
CP '"'
JR Z,.MASK_ERR
CP '+'
JR Z,.MASK_ERR
CP ','
JR Z,.MASK_ERR
CP '/'
JR Z,.MASK_ERR
CP ':'
JR Z,.MASK_ERR
CP ';'
JR Z,.MASK_ERR
CP '<'
JR Z,.MASK_ERR
CP '='
JR Z,.MASK_ERR
CP '>'
JR Z,.MASK_ERR
CP '['
JR Z,.MASK_ERR
CP '\'
JR Z,.MASK_ERR
CP ']'
JR Z,.MASK_ERR
CP '|'
JR Z,.MASK_ERR
CALL UPPER ; a..z -> A..Z
.MASK2: LD (DE),A
INC HL
INC DE
DJNZ .MASK1
;
.MASK_ERR: LD A,DSS_Error.sys.INVALID_NAME
SCF
RET
;
.MASK3: LD A,'?'
INC HL
DJNZ .MASK6
JR .MASK_ERR
;
.MASK6: LD (DE),A
INC DE
DJNZ .MASK6
LD B,1
JR .MASK1
;
.MASK5: LD A,' '
INC HL
DJNZ .MASK4
LD B,4
DEC C
JR NZ,.MASK1
JR .MASK_ERR
;
.MASK4: LD (DE),A
INC DE
DJNZ .MASK4
LD B,4
DEC C
JR NZ,.MASK1
JR .MASK_ERR
;----------------------------------------------------------------------;
MODULE_SIZE EQU $ - MODULE_START
; ENDMODULE
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;

View File

@ -1,3 +1,5 @@
FS_MODULE_START EQU $
;----------------------------------------------------------------------;
; [x] fat32 ; [ ] CDFS
RD_BPB: CALL READ_BPB ; [ ] cdfs

View File

@ -10,8 +10,8 @@ ReScanDRV:
; 1. ª®¯¨à㥬 ¢ ¡ãä¥à â ¡«¨æë DEVICE, LOGDRV, RAMDTBL
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -;
LD HL,DEVICE
LD DE,OLD_TABLES.DEVICE
LD BC,OLD_TABLES.DEVICE - DEVICE
LD DE,DRIVES_DRIVER.OLD_TABLES.DEVICE
LD BC,DRIVES_DRIVER.OLD_TABLES.DEVICE - DEVICE
LDIR
;
LD A,.NUMBER_OF_SUBTABLES
@ -24,7 +24,7 @@ ReScanDRV:
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -;
; 3. áà ¢­¨¢ ¥¬ § ¯¨á¨ áâ àëå â ¡«¨æ á ­®¢ë¬¨:
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -;
LD HL,OLD_TABLES.DEVICE
LD HL,DRIVES_DRIVER.OLD_TABLES.DEVICE
LD B,DSS_MAX_DRIVES_AMOUNT
.tbl_scanNew_mainLoop:
PUSH BC
@ -55,7 +55,7 @@ ReScanDRV:
; HDD! ‘¢¥àª  ¯® â ¡«¨æ¥ LOGDRV
JP Z,SCAN_TABLES.HARD_DRV
; RD?
LD HL,RAMDSK_DRV.API_TABLE
LD HL,DRIVES_DRIVER.RAMDSK_DRV.API_TABLE
AND A
SBC HL,DE
; RAM Drive! ‘¢¥àª  ¯® â ¡«¨æ¥ RAMDTBL
@ -86,11 +86,11 @@ ReScanDRV:
INC HL
LD (OLD_TABLES_CURRENT),HL
EXX
LD HL,OLD_TABLES.LOGDRV - LOGDRV
LD HL,DRIVES_DRIVER.OLD_TABLES.LOGDRV - LOGDRV
LD B,DSS_MAX_DRIVES_AMOUNT
EXX
; ­ å®¤¨¬ ¢ áâ à®© DEVICE ¯¥à¢ãî ᢮¡®¤­ãî ï祩ªã (¯à®¢¥à塞 á ª®­æ  ¢ ­ ç «®)
LD IX,OLD_TABLES.DEVICE + OLD_TABLES.DEVICE.Size - OLD_TABLES.DEVICE.TBL_Entry
LD IX,DRIVES_DRIVER.OLD_TABLES.DEVICE + OLD_TABLES.DEVICE.Size - OLD_TABLES.DEVICE.TBL_Entry
LD IY,LOGDRV
LD DE,-OLD_TABLES.DEVICE.TBL_Entry ; ¤¢¨£ ¥¬áï ¯® â ¡«¨æ¥ ­ § ¤
LD B,DSS_MAX_DRIVES_AMOUNT
@ -119,9 +119,9 @@ ReScanDRV:
; 6. § ¬¥­ï¥¬ ­®¢ë¥ â ¡«¨æë ­  ¬®¤¨ä¨æ¨à®¢ ­­ë¥ áâ àë¥
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -;
LD HL,OLD_TABLES.DEVICE
LD HL,DRIVES_DRIVER.OLD_TABLES.DEVICE
LD DE,DEVICE
LD BC,OLD_TABLES.DEVICE - DEVICE
LD BC,DRIVES_DRIVER.OLD_TABLES.DEVICE - DEVICE
LDIR
;
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -;
@ -167,13 +167,13 @@ ReScanDRV:
;-----------------------[]
Fill_if_Exists:
.tbl+1: LD B,ReScanDRV.NUMBER_OF_SUBTABLES
.tbl+1: LD B,DRIVES_DRIVER.ReScanDRV.NUMBER_OF_SUBTABLES
DJNZ 1F
; B=1, RAMDTBL
LD A,RAMDTBL.TBL_Entry
LD IY,RAMDTBL
LD A,DRIVES_DRIVER.RAMDTBL.TBL_Entry
LD IY,DRIVES_DRIVER.RAMDTBL
CALL .RUN
LD DE,RAMDSK_DRV.API_TABLE
LD DE,DRIVES_DRIVER.RAMDSK_DRV.API_TABLE
RET NC
LD A,(.tbl)
DEC A ;!!!!! ¬®¦¥â ¡ëâì ¯¥à¥¯®«­¥­¨¥
@ -182,7 +182,7 @@ Fill_if_Exists:
;
1: DJNZ 1F
; B=2, LOGDRV
LD A,LOGDRV.TBL_Entry
LD A,DRIVES_DRIVER.LOGDRV.TBL_Entry
LD IY,LOGDRV
CALL .RUN
LD DE,IDE_DRV.API_TABLE
@ -191,7 +191,7 @@ Fill_if_Exists:
LD A,(.tbl)
DEC A ;!!!!! ¬®¦¥â ¡ëâì ¯¥à¥¯®«­¥­¨¥
LD (.tbl),A
LD HL,OLD_TABLES.RAMDTBL
LD HL,DRIVES_DRIVER.OLD_TABLES.RAMDTBL
LD (OLD_TABLES_CURRENT),HL
EXX
LD B,MAX_RAMDRIVES
@ -287,14 +287,14 @@ Find_Record:
RAM_DRV:
; <20>®«ãç ¥¬ ­®¬¥à à ¬¤¨áª  ¢ OLD_TABLES.RAMDTBL
LD A,B
LD BC,OLD_TABLES.RAMDTBL
CALL RAMDSK_DRV.GET_RAMDRV_NUM.skip_tbl
LD BC,DRIVES_DRIVER.OLD_TABLES.RAMDTBL
CALL DRIVES_DRIVER.RAMDSK_DRV.GET_RAMDRV_NUM.skip_tbl
LD (.cur_drv),BC
AND #0F
LD C,A ; ­®¬¥à à ¬¤¨áª 
; ˆé¥¬ ¢ ­®¢®© â ª®© ¦¥ ­®¬¥à à ¬¤¨áª 
LD B,MAX_RAMDRIVES
LD DE,RAMDTBL
LD DE,DRIVES_DRIVER.RAMDTBL
.loop: LD A,(DE)
SUB C
JR Z,.found
@ -317,51 +317,51 @@ RAM_DRV:
DEC HL
LD (HL),#FF
EX DE,HL
JP ReScanDRV.nextN2
JP DRIVES_DRIVER.ReScanDRV.nextN2
;
.found: DEC A
; § â¨à ¥¬ ¢ ­®¢®© â ¡«¨æ¥ ᮢ¯ ¢è¨© ¤à ©¢ (ç⮡ «¥£ç¥ ¡ë«® ¯ àá¨âì ®á⠢襥áï)
LD (DE),A
DEC DE
LD (DE),A
JP ReScanDRV.nextN
JP DRIVES_DRIVER.ReScanDRV.nextN
;-----[]
HARD_DRV:
LD L,B
LOGDRV_ENTRY_FIND OLD_TABLES.LOGDRV
LD IX,LOGDRV
LD DE,LOGDRV.TBL_Entry
LOGDRV_ENTRY_FIND @DRIVES_DRIVER.OLD_TABLES.LOGDRV
LD IX,DRIVES_DRIVER.LOGDRV
LD DE,DRIVES_DRIVER.LOGDRV.TBL_Entry
LD B,DSS_MAX_DRIVES_AMOUNT
;
.loop: LD A,(IY+LOGDRV.PHISICAL_DRV_NUMBER)
.loop: LD A,(IY+DRIVES_DRIVER.LOGDRV.PHISICAL_DRV_NUMBER)
;CP #FF
;JR Z,.skip
CP (IX+LOGDRV.PHISICAL_DRV_NUMBER)
CP (IX+DRIVES_DRIVER.LOGDRV.PHISICAL_DRV_NUMBER)
JR NZ,.skip
;
LD A,(IY+LOGDRV.SECTOR_OFFSET)
CP (IX+LOGDRV.SECTOR_OFFSET)
LD A,(IY+DRIVES_DRIVER.LOGDRV.SECTOR_OFFSET)
CP (IX+DRIVES_DRIVER.LOGDRV.SECTOR_OFFSET)
JR NZ,.skip
LD A,(IY+LOGDRV.SECTOR_OFFSET+1)
CP (IX+LOGDRV.SECTOR_OFFSET+1)
LD A,(IY+DRIVES_DRIVER.LOGDRV.SECTOR_OFFSET+1)
CP (IX+DRIVES_DRIVER.LOGDRV.SECTOR_OFFSET+1)
JR NZ,.skip
LD A,(IY+LOGDRV.SECTOR_OFFSET+2)
CP (IX+LOGDRV.SECTOR_OFFSET+2)
LD A,(IY+DRIVES_DRIVER.LOGDRV.SECTOR_OFFSET+2)
CP (IX+DRIVES_DRIVER.LOGDRV.SECTOR_OFFSET+2)
JR NZ,.skip
LD A,(IY+LOGDRV.SECTOR_OFFSET+3)
CP (IX+LOGDRV.SECTOR_OFFSET+3)
LD A,(IY+DRIVES_DRIVER.LOGDRV.SECTOR_OFFSET+3)
CP (IX+DRIVES_DRIVER.LOGDRV.SECTOR_OFFSET+3)
JR NZ,.skip
LD A,(IY+LOGDRV.SIZE_IN_SECTORS)
CP (IX+LOGDRV.SIZE_IN_SECTORS)
LD A,(IY+DRIVES_DRIVER.LOGDRV.SIZE_IN_SECTORS)
CP (IX+DRIVES_DRIVER.LOGDRV.SIZE_IN_SECTORS)
JR NZ,.skip
LD A,(IY+LOGDRV.SIZE_IN_SECTORS+1)
CP (IX+LOGDRV.SIZE_IN_SECTORS+1)
LD A,(IY+DRIVES_DRIVER.LOGDRV.SIZE_IN_SECTORS+1)
CP (IX+DRIVES_DRIVER.LOGDRV.SIZE_IN_SECTORS+1)
JR NZ,.skip
LD A,(IY+LOGDRV.SIZE_IN_SECTORS+2)
CP (IX+LOGDRV.SIZE_IN_SECTORS+2)
LD A,(IY+DRIVES_DRIVER.LOGDRV.SIZE_IN_SECTORS+2)
CP (IX+DRIVES_DRIVER.LOGDRV.SIZE_IN_SECTORS+2)
JR NZ,.skip
LD A,(IY+LOGDRV.SIZE_IN_SECTORS+3)
CP (IX+LOGDRV.SIZE_IN_SECTORS+3)
LD A,(IY+DRIVES_DRIVER.LOGDRV.SIZE_IN_SECTORS+3)
CP (IX+DRIVES_DRIVER.LOGDRV.SIZE_IN_SECTORS+3)
JR Z,.found
;
.skip: ADD IX,DE
@ -369,7 +369,7 @@ HARD_DRV:
; ‡€<E280A1>ˆœ <20><20>€‰„…<E2809E>
; ƒà®å ¥¬ áâ àãî § ¯¨áì ¢ OLD_TABLES.LOGDRV
LD A,#FF
LD (IY+LOGDRV.PHISICAL_DRV_NUMBER),A
LD (IY+DRIVES_DRIVER.LOGDRV.PHISICAL_DRV_NUMBER),A
; „®áâ ñ¬ ¯®«®¦¥­¨¥ ¢ OLD_TABLES.DEVICE
POP HL
; „®áâ ñ¬ è £ ®¡é¥£® 横«  ¤«ï ¯®«ã祭¨ï «®£.­®¬¥à  ¤à ©¢  ¢ KILL_FM
@ -378,14 +378,14 @@ HARD_DRV:
; ƒà®å ¥¬ ”Œ ¨ § ¯¨áì ¢ OLD_TABLES.DEVICE
CALL KILL_FM
;
JP ReScanDRV.nextN2
JP DRIVES_DRIVER.ReScanDRV.nextN2
;
.found: ; § â¨à ¥¬ ¢ ­®¢®© â ¡«¨æ¥ ᮢ¯ ¢è¨© ¤à ©¢ (ç⮡ «¥£ç¥ ¡ë«® ¯ àá¨âì ®á⠢襥áï)
LD (IX+LOGDRV.PHISICAL_DRV_NUMBER),#FF
JP ReScanDRV.nextN
LD (IX+DRIVES_DRIVER.LOGDRV.PHISICAL_DRV_NUMBER),#FF
JP DRIVES_DRIVER.ReScanDRV.nextN
;
; CD_ROM:
; JP ReScanDRV.nextN
; JP DRIVES_DRIVER.ReScanDRV.nextN
;-----[]
; ‚•Ž„: HL - ⥪ãé ï § ¯¨áì ¢ â ¡«¨æ¥ DEVICE
; B - è £ ®¡é¥£® 横« 
@ -395,7 +395,7 @@ KILL_FM:;
LD C,A
; ¢â몠¥¬ áâà ­¨æã ï¤à  á â ¡«¨æ¥© ä ©«®¢ëå ¬ ­¨¯ã«ïâ®à®¢
PUSH BC
LD A,(PORTAL.out_DRV.RETBANK)
LD A,(DRIVES_DRIVER.PORTAL.out.RETBANK)
LD B,A
LD C,SLOT3
IN A,(SLOT3)
@ -425,31 +425,29 @@ KILL_FM:;
ENDMODULE
;-----------------------[]
/*
[DRIVE TABLES] .Size == DEVICE.Size + LOGDRV.Size + RAMDTBL.Size == 78+1 + 416 + 32 == 526
; [DRIVE TABLES] .Size == DEVICE.Size +DRIVES_DRIVER.LOGDRV.Size + RAMDTBL.Size == 78+1 + 416 + 32 == 526
; «®£¨ç¥áª¨© ­®¬¥à ãáâனá⢠ +  ¤à¥á ®¡à ¡®â稪 .
; <EFBFBD>®à浪®¢ë© ­®¬¥à * 3 = ¡ãª¢  ¤¨áª  + "A"
DEVICE EQU $
.TBL_Entry EQU 3
.End EQU 1 + $ + DSS_MAX_DRIVES_AMOUNT * .TBL_Entry ; ¤«ï á⮯-¡ ©â  #FF
.Size EQU .End - $
; ; «®£¨ç¥áª¨© ­®¬¥à ãáâனá⢠ +  ¤à¥á ®¡à ¡®â稪 .
; ; <EFBFBD>®à浪®¢ë© ­®¬¥à * 3 = ¡ãª¢  ¤¨áª  + "A"
; DEVICE EQU $
; .TBL_Entry EQU 3
; .End EQU 1 + $ + DSS_MAX_DRIVES_AMOUNT * .TBL_Entry ; ¤«ï á⮯-¡ ©â  #FF
; .Size EQU .End - $
;+00 BYTE MASTER/SLAVE PHISICAL DRIVE NUMBER #80/#81/...
;+01 LONG SECTOR OFFSET
;+05 LONG SIZE IN SECTORS
;+09 LONG Volume Serial Number in HEX ; [ ] ;!TODO
;+13 WORD FREE
;+15 BYTE FREE
; ‹®£¨ç¥áª¨© ­®¬¥à à §¤¥« .
;<EFBFBD>®¬¥à £à㯯ë = «®£¨ç¥áª¨© ­®¬¥à à §¤¥«  HDD ¨§ DEVICE
LOGDRV EQU DEVICE + DEVICE.Size
.TBL_Entry EQU 16
.Size EQU DSS_MAX_DRIVES_AMOUNT * .TBL_Entry
; ;+00 BYTE MASTER/SLAVE PHISICAL DRIVE NUMBER #80/#81/...
; ;+01 LONG SECTOR OFFSET
; ;+05 LONG SIZE IN SECTORS
; ;+09 LONG Volume Serial Number in HEX ; [ ] ;!TODO
; ;+13 WORD FREE
; ;+15 BYTE FREE
; ; ‹®£¨ç¥áª¨© ­®¬¥à à §¤¥« .
; ;<EFBFBD>®¬¥à £à㯯ë = «®£¨ç¥áª¨© ­®¬¥à à §¤¥«  HDD ¨§ DEVICE
; LOGDRV EQU DEVICE + DEVICE.Size
; .TBL_Entry EQU 16
; .Size EQU DSS_MAX_DRIVES_AMOUNT * .TBL_Entry
; <E28099>ˆ€ ‘ŽŽ’‚…’‘’‚ˆŸ Œ…†„“ ”ˆ‡ˆ—…‘ŠˆŒ <20>ŽŒ…<C592>ŽŒ <20>€Œ„ˆŠ€ ˆ …ƒŽ RAM-DISK ID
; Log Number: DB RAM_DRIVE_NUMBER, RAM_DRIVE_ID
RAMDTBL EQU $ + DEVICE.Size + LOGDRV.Size
.TBL_Entry EQU 2
.Size EQU .TBL_Entry * MAX_RAMDRIVES
*/
; ; <E28099>ˆ€ ‘ŽŽ’‚…’‘’‚ˆŸ Œ…†„“ ”ˆ‡ˆ—…‘ŠˆŒ <20>ŽŒ…<C592>ŽŒ <20>€Œ„ˆŠ€ ˆ …ƒŽ RAM-DISK ID
; ; Log Number: DB RAM_DRIVE_NUMBER, RAM_DRIVE_ID
; RAMDTBL EQU $ + DEVICE.Size +DRIVES_DRIVER.LOGDRV.Size
; .TBL_Entry EQU 2
; .Size EQU .TBL_Entry * MAX_RAMDRIVES

View File

@ -129,7 +129,7 @@ INITDVC: XOR A
LD HL,DEVICE
LD (HL),#FF
LD DE,DEVICE+1
LD BC,DEVICE.Size + LOGDRV.Size + RAMDTBL.Size - 1
LD BC,DEVICE.Size +DRIVES_DRIVER.LOGDRV.Size + RAMDTBL.Size - 1
LDIR
; FDD ¤¥¢ ©áë
CALL FDD_DRV.Init ; ã§­ âì ç¨á«® FDD-¤¥¢ ©á®¢
@ -140,8 +140,8 @@ INITDVC: XOR A
LD DE,IDE_DRV.API_TABLE
CALL MAKEDVC
; RAM-¤¨áª¨
CALL RAMDSK_DRV.Init
LD DE,RAMDSK_DRV.API_TABLE
CALL DRIVES_DRIVER.RAMDSK_DRV.Init
LD DE,DRIVES_DRIVER.RAMDSK_DRV.API_TABLE
CALL MAKEDVC
XOR A
RET

View File

@ -223,7 +223,7 @@ Init: PUSH IY
XOR A
LD (.count),A
;
LD HL,LOGDRV
LD HL,DRIVES_DRIVER.LOGDRV
LD (LOGDRV_OFFSET),HL
LD IX,SYS_PAGE.TMP_BUFFER
@ -313,14 +313,14 @@ SelectDrive: PUSH DE
LD A,BIOS.Error.UnknownDevice
JR C,.error_pop
;
LOGDRV_ENTRY_FIND LOGDRV
LOGDRV_ENTRY_FIND @DRIVES_DRIVER.LOGDRV
;
POP HL
CALL .get_data
JR C,.error_pop2
;
POP DE
LD A,(IY+LOGDRV.PHISICAL_DRV_NUMBER)
LD A,(IY+DRIVES_DRIVER.LOGDRV.PHISICAL_DRV_NUMBER)
RET
;
.error_pop: POP HL
@ -332,11 +332,11 @@ SelectDrive: PUSH DE
LD A,BIOS.Error.UnknownDevice
RET C
;
LD E,(IY+LOGDRV.SECTOR_OFFSET)
LD D,(IY+LOGDRV.SECTOR_OFFSET+1)
LD E,(IY+DRIVES_DRIVER.LOGDRV.SECTOR_OFFSET)
LD D,(IY+DRIVES_DRIVER.LOGDRV.SECTOR_OFFSET+1)
ADD IX,DE
LD E,(IY+LOGDRV.SECTOR_OFFSET+2)
LD D,(IY+LOGDRV.SECTOR_OFFSET+3)
LD E,(IY+DRIVES_DRIVER.LOGDRV.SECTOR_OFFSET+2)
LD D,(IY+DRIVES_DRIVER.LOGDRV.SECTOR_OFFSET+3)
ADC HL,DE
LD A,BIOS.Error.SectorNotFound
RET
@ -424,9 +424,9 @@ GetParams: EX DE,HL
PUSH IX
PUSH IY
;
LOGDRV_ENTRY_FIND LOGDRV
LOGDRV_ENTRY_FIND @DRIVES_DRIVER.LOGDRV
;
LD A,(IY+LOGDRV.PHISICAL_DRV_NUMBER) ;MASTER/SLAVE PHISICAL DRIVE NUMBER #80/#81/...
LD A,(IY+DRIVES_DRIVER.LOGDRV.PHISICAL_DRV_NUMBER) ;MASTER/SLAVE PHISICAL DRIVE NUMBER #80/#81/...
PUSH IY
LD C,BIOS.DRV_GET_PAR
RST ToBIOS
@ -451,13 +451,13 @@ GetParams: EX DE,HL
PUSH DE
AND A
LD DE,#FFFF
LD L,(IY+LOGDRV.SIZE_IN_SECTORS+0)
LD H,(IY+LOGDRV.SIZE_IN_SECTORS+1)
LD L,(IY+DRIVES_DRIVER.LOGDRV.SIZE_IN_SECTORS+0)
LD H,(IY+DRIVES_DRIVER.LOGDRV.SIZE_IN_SECTORS+1)
SBC HL,DE
JR NZ,.ReDEFINE_SP
;
LD L,(IY+LOGDRV.SIZE_IN_SECTORS+2)
LD H,(IY+LOGDRV.SIZE_IN_SECTORS+3)
LD L,(IY+DRIVES_DRIVER.LOGDRV.SIZE_IN_SECTORS+2)
LD H,(IY+DRIVES_DRIVER.LOGDRV.SIZE_IN_SECTORS+3)
SBC HL,DE
JR Z,.ReDEFINE_Skip
;
@ -490,13 +490,13 @@ GetParams: EX DE,HL
RLA
;
; SECTORS ON LOGICAL DISK
LD E,(IY+LOGDRV.SIZE_IN_SECTORS+0)
LD D,(IY+LOGDRV.SIZE_IN_SECTORS+1)
LD L,(IY+LOGDRV.SIZE_IN_SECTORS+2)
LD H,(IY+LOGDRV.SIZE_IN_SECTORS+3)
LD E,(IY+DRIVES_DRIVER.LOGDRV.SIZE_IN_SECTORS+0)
LD D,(IY+DRIVES_DRIVER.LOGDRV.SIZE_IN_SECTORS+1)
LD L,(IY+DRIVES_DRIVER.LOGDRV.SIZE_IN_SECTORS+2)
LD H,(IY+DRIVES_DRIVER.LOGDRV.SIZE_IN_SECTORS+3)
;
;[x] 17.12.2023 § £à㧪  á  ªâ¨¢­®£® à §¤¥« ,   ­¥ á ¯¥à¢®£®
LD C,(IY+LOGDRV.PARTITION_RECORD_NUM) ; ­®¬¥à ¯ àâ¨æ¨¨ ¢ MBR ¤¨áª 
LD C,(IY+DRIVES_DRIVER.LOGDRV.PARTITION_RECORD_NUM) ; ­®¬¥à ¯ àâ¨æ¨¨ ¢ MBR ¤¨áª 
;
;[ ] 04/01/2025 ¢®§¢à é¥­¨¥ à §¬¥à  ᥪâ®à 
; 00 - undefined
@ -511,7 +511,7 @@ GetParams: EX DE,HL
;EX AF,AF'
LD B,A
;
LD A,(IY+LOGDRV.PHISICAL_DRV_NUMBER) ;MASTER/SLAVE PHISICAL DRIVE NUMBER #80/#81/...
LD A,(IY+DRIVES_DRIVER.LOGDRV.PHISICAL_DRV_NUMBER) ;MASTER/SLAVE PHISICAL DRIVE NUMBER #80/#81/...
EX AF,AF'
;
AND A
@ -559,7 +559,7 @@ MediaCheck: PUSH IY
SCF
; [ ] media changed
.next_step: PUSH AF ; ‘®å࠭塞 CF ¨ ª®¤ ®è¨¡ª¨ UNKNOWN_FORMAT, ¥á«¨ CF=1
LD A,(IY + LOGDRV.PHISICAL_DRV_NUMBER)
LD A,(IY +DRIVES_DRIVER.LOGDRV.PHISICAL_DRV_NUMBER)
LD C,BIOS.DRV_GET_PAR ;[ ] media change ¯¥à¥¤¥« âì «®£¨ªã âãâ ¨ ¢ ¡¨®á? ; !FIXIT
PUSH IY
RST ToBIOS
@ -574,7 +574,7 @@ MediaCheck: PUSH IY
POP IY
RET
;
.next_check: BIT 1,(IY + LOGDRV.MediaParameters)
.next_check: BIT 1,(IY +DRIVES_DRIVER.LOGDRV.MediaParameters)
JR NZ,.Reinit
;
POP AF ; ‚®ááâ ­ ¢«¨¢ ¥¬ CF ¨ ª®¤ ®è¨¡ª¨ UNKNOWN_FORMAT, ¥á«¨ CF=1
@ -604,8 +604,8 @@ MediaCheck: PUSH IY
; [ ] custorm sector size
CHECK_IDE_SECTOR_SIZE: ;RET
LD E,(IY+LOGDRV.SECTOR_SIZE)
LD D,(IY+LOGDRV.SECTOR_SIZE+1)
LD E,(IY+DRIVES_DRIVER.LOGDRV.SECTOR_SIZE)
LD D,(IY+DRIVES_DRIVER.LOGDRV.SECTOR_SIZE+1)
PUSH HL
LD HL,-DSS_MAX_SECTOR_SIZE - 1
ADD HL,DE
@ -618,10 +618,10 @@ ReDEFINE_PARTITIONS:
LD B,A ; HDD_INIT_TABLE.RemovableMedia
LD A,DSS_MAX_DRIVES_AMOUNT - 1 ; ®£à ­¨ç¨â¥«ì, ç⮡ ­¥ ¤¥â¥ªâ¨âì ¡®«ìè¥ 1 à §¤¥« 
LD (Init.count),A
LD A,(IY + LOGDRV.PHISICAL_DRV_NUMBER)
LD A,(IY +DRIVES_DRIVER.LOGDRV.PHISICAL_DRV_NUMBER)
LD (CURRENT_DRIVE.Number),A
LD (LOGDRV_OFFSET),IY
;RES 1,(IY + LOGDRV.MediaParameters) - á¡à á뢠¥âáï ¢ DEFINE_PARTITIONS
;RES 1,(IY +DRIVES_DRIVER.LOGDRV.MediaParameters) - á¡à á뢠¥âáï ¢ DEFINE_PARTITIONS
;LD B,%0000'0011 ;!HARDCODE drive changed, removable media
JP DEFINE_PARTITIONS
@ -718,7 +718,7 @@ Exec_BIOS: PUSH IY
CP BIOS.Error.ATAPI.UnitAttention
SCF
RET NZ
SET 1,(IY + LOGDRV.MediaParameters)
SET 1,(IY +DRIVES_DRIVER.LOGDRV.MediaParameters)
RET
;
@ -759,26 +759,26 @@ DEFINE_PARTITIONS:
LD E,XL
;BPB SECTOR
LD IX,(LOGDRV_OFFSET)
LD (IX + LOGDRV.SECTOR_OFFSET + 0),E
LD (IX + LOGDRV.SECTOR_OFFSET + 1),D
LD (IX + LOGDRV.SECTOR_OFFSET + 2),L
LD (IX + LOGDRV.SECTOR_OFFSET + 3),H
LD (IX +DRIVES_DRIVER.LOGDRV.SECTOR_OFFSET + 0),E
LD (IX +DRIVES_DRIVER.LOGDRV.SECTOR_OFFSET + 1),D
LD (IX +DRIVES_DRIVER.LOGDRV.SECTOR_OFFSET + 2),L
LD (IX +DRIVES_DRIVER.LOGDRV.SECTOR_OFFSET + 3),H
LD E,(IY + BOOT_SECTOR.Partition.Size_LBA + 0)
LD D,(IY + BOOT_SECTOR.Partition.Size_LBA + 1)
LD L,(IY + BOOT_SECTOR.Partition.Size_LBA + 2)
LD H,(IY + BOOT_SECTOR.Partition.Size_LBA + 3)
;SIZE DISK
LD (IX + LOGDRV.SIZE_IN_SECTORS + 0),E
LD (IX + LOGDRV.SIZE_IN_SECTORS + 1),D
LD (IX + LOGDRV.SIZE_IN_SECTORS + 2),L
LD (IX + LOGDRV.SIZE_IN_SECTORS + 3),H
LD (IX +DRIVES_DRIVER.LOGDRV.SIZE_IN_SECTORS + 0),E
LD (IX +DRIVES_DRIVER.LOGDRV.SIZE_IN_SECTORS + 1),D
LD (IX +DRIVES_DRIVER.LOGDRV.SIZE_IN_SECTORS + 2),L
LD (IX +DRIVES_DRIVER.LOGDRV.SIZE_IN_SECTORS + 3),H
; [ ] sector size
CALL GetSectorSize
LD IX,(LOGDRV_OFFSET)
LD (IX + LOGDRV.SECTOR_SIZE),C
LD (IX + LOGDRV.SECTOR_SIZE + 1),B
LD (IX +DRIVES_DRIVER.LOGDRV.SECTOR_SIZE),C
LD (IX +DRIVES_DRIVER.LOGDRV.SECTOR_SIZE + 1),B
LD A,(CURRENT_DRIVE.Removable)
LD (IX + LOGDRV.MediaParameters),A
LD (IX +DRIVES_DRIVER.LOGDRV.MediaParameters),A
;[x] 17.12.2023 § £à㧪  á  ªâ¨¢­®£® à §¤¥« ,   ­¥ á ¯¥à¢®£®
.ExtendedPartitionFlag+1:
LD A,0
@ -790,7 +790,7 @@ DEFINE_PARTITIONS:
PUSH BC
LD A,+(_sMBR_PARTITION_TABLE / _sMBR_PARTITION_RECORD) ; Number of entries in the partition table
SUB B
.not_supported: LD (IX + LOGDRV.PARTITION_RECORD_NUM),A
.not_supported: LD (IX +DRIVES_DRIVER.LOGDRV.PARTITION_RECORD_NUM),A
;
CALL INC_DRV_COUNT
RET NC
@ -817,8 +817,8 @@ DEFINE_PARTITIONS:
JP .NextPartition ; à §¤¥« ­¥ ¯®¤¤¥à¦¨¢ ¥âáï
;
.set_drv_tbl: LD A,(CURRENT_DRIVE.Number)
LD (IX + LOGDRV.PHISICAL_DRV_NUMBER),A
LD DE,LOGDRV.TBL_Entry ;DSKITEM
LD (IX +DRIVES_DRIVER.LOGDRV.PHISICAL_DRV_NUMBER),A
LD DE,DRIVES_DRIVER.LOGDRV.TBL_Entry ;DSKITEM
ADD IX,DE
LD (LOGDRV_OFFSET),IX
RET
@ -849,20 +849,20 @@ DEFINE_PARTITIONS:
.set_LOGDRV: ;BPB SECTOR ;!TODO ¥á«¨ CD-ROM, â® ¤à㣮© ­®¬¥à ᥪâ®à 
LD IX,(LOGDRV_OFFSET)
LD A,(CURRENT_DRIVE.Removable)
LD (IX + LOGDRV.MediaParameters),A
LD (IX +DRIVES_DRIVER.LOGDRV.MediaParameters),A
XOR A
LD (IX + LOGDRV.SECTOR_OFFSET + 0),A
LD (IX + LOGDRV.SECTOR_OFFSET + 1),A
LD (IX + LOGDRV.SECTOR_OFFSET + 2),A
LD (IX + LOGDRV.SECTOR_OFFSET + 3),A
LD (IX +DRIVES_DRIVER.LOGDRV.SECTOR_OFFSET + 0),A
LD (IX +DRIVES_DRIVER.LOGDRV.SECTOR_OFFSET + 1),A
LD (IX +DRIVES_DRIVER.LOGDRV.SECTOR_OFFSET + 2),A
LD (IX +DRIVES_DRIVER.LOGDRV.SECTOR_OFFSET + 3),A
; [ ] SIZE DISK
LD (IX + LOGDRV.SIZE_IN_SECTORS + 0),E
LD (IX + LOGDRV.SIZE_IN_SECTORS + 1),D
LD (IX + LOGDRV.SIZE_IN_SECTORS + 2),L
LD (IX + LOGDRV.SIZE_IN_SECTORS + 3),H
LD (IX +DRIVES_DRIVER.LOGDRV.SIZE_IN_SECTORS + 0),E
LD (IX +DRIVES_DRIVER.LOGDRV.SIZE_IN_SECTORS + 1),D
LD (IX +DRIVES_DRIVER.LOGDRV.SIZE_IN_SECTORS + 2),L
LD (IX +DRIVES_DRIVER.LOGDRV.SIZE_IN_SECTORS + 3),H
; [ ] sector size
LD (IX + LOGDRV.SECTOR_SIZE),C
LD (IX + LOGDRV.SECTOR_SIZE + 1),B
LD (IX +DRIVES_DRIVER.LOGDRV.SECTOR_SIZE),C
LD (IX +DRIVES_DRIVER.LOGDRV.SECTOR_SIZE + 1),B
RET
;
; ¢å®¤: B - bit0=1 removable, bit1=1 drive changed, bit7..2 reserved
@ -981,8 +981,8 @@ DEFINE_PARTITIONS:
LD C,XL
CALL .set_LOGDRV
LD A,(CURRENT_DRIVE.Removable)
LD (IX + LOGDRV.MediaParameters),A
LD (IX + LOGDRV.PARTITION_RECORD_NUM),#FF
LD (IX +DRIVES_DRIVER.LOGDRV.MediaParameters),A
LD (IX +DRIVES_DRIVER.LOGDRV.PARTITION_RECORD_NUM),#FF
CALL .set_drv_tbl
JP INC_DRV_COUNT
;
@ -1028,7 +1028,7 @@ EXT_Partition: ;CURRENT PARTITION TABLE
.Low: DW #0000
.High: DW #0000
;
LOGDRV_OFFSET: DW LOGDRV ;POINTER ON CURRENT DISK RECORD
LOGDRV_OFFSET: DW DRIVES_DRIVER.LOGDRV ;POINTER ON CURRENT DISK RECORD
;=======================================================================
ENDMODULE
ENDMODULE ;IDE_DRV

View File

@ -190,7 +190,7 @@
; MACRO CALL GET_RAMDRV_NUM
; LD BC,RAMDTBL
; LD BC,DRIVES_DRIVER.RAMDTBL
; SLA A
; ADD A,C
; LD C,A
@ -316,7 +316,7 @@ WriteLong: PUSH BC
; ; LD (S_P_P),A
; LD BC,#0*256 + BIOS.GET_RAMD_ST ; <20>®«ã祭¨¥ ¨¤¥­â¨ä¨ª â®à  ¡«®ª , ­ §­ ç¥­­®£® ­  RAM-Disk
; LD DE,RAMDTBL
; LD DE,DRIVES_DRIVER.RAMDTBL
; .initLoop:
; PUSH BC
; LD A,B
@ -335,11 +335,11 @@ WriteLong: PUSH BC
; JP 1F
; .noDRV: POP BC
; 1: INC B
; LD A,RAMDTBL.Size / RAMDTBL.TBL_Entry
; LD A,DRIVES_DRIVER.RAMDTBL.Size / RAMDTBL.TBL_Entry
; CP B
; JR NZ,.initLoop
; LD HL,RAMDTBL ;!FIXIT LD HL,-RAMDTBL
; LD HL,DRIVES_DRIVER.RAMDTBL ;!FIXIT LD HL,-RAMDTBL
; EX DE,HL
; AND A ;!FIXIT ----
; SBC HL,DE ;!FIXIT ADD HL,DE
@ -368,7 +368,7 @@ Init:
; LD (S_P_P),A
LD BC,0*256+BIOS.GET_RAMD_ST ; <20>®«ã祭¨¥ ¨¤¥­â¨ä¨ª â®à  ¡«®ª , ­ §­ ç¥­­®£® ­  RAM-Disk
LD DE,RAMDTBL
LD DE,DRIVES_DRIVER.RAMDTBL
.initLoop: PUSH BC
LD A,B
PUSH DE
@ -390,11 +390,11 @@ Init:
;
.noDRV: POP BC
.skip_pop: INC B
LD A,RAMDTBL.Size/RAMDTBL.TBL_Entry
LD A,DRIVES_DRIVER.RAMDTBL.Size/DRIVES_DRIVER.RAMDTBL.TBL_Entry
CP B
JR NZ,.initLoop
LD HL,RAMDTBL ;!FIXIT LD HL,-RAMDTBL
LD HL,DRIVES_DRIVER.RAMDTBL ;!FIXIT LD HL,-RAMDTBL
EX DE,HL
AND A ;!FIXIT ----
SBC HL,DE ;!FIXIT ADD HL,DE
@ -516,7 +516,7 @@ GenIOCTL: BIT 7,B
; .RSETPRM: AND A
; RET
GET_RAMDRV_NUM: LD BC,RAMDTBL
GET_RAMDRV_NUM: LD BC,DRIVES_DRIVER.RAMDTBL
.skip_tbl: ADD A,A
ADD A,C
LD C,A

View File

@ -63,13 +63,13 @@ F_START: DI
DEPLOY: ;Allocate memory
LD BC,USING_MEMPAGES*256 + BIOS.GetMem
RST ToBIOS
RET C
RET C
LD C,A
;
IN A,(SLOT3)
PUSH AF
IN A,(SLOT0)
LD (DRV_CONTENT + DRV_PAGE.MAIN_PAGE_NUMBER),A
IN A,(SLOT0)
LD (DRV_CONTENT + DRIVES_DRIVER.DRV_PAGE.MAIN_PAGE_NUMBER),A
OUT (SLOT3),A
;
LD A,C
@ -82,7 +82,7 @@ DEPLOY: ;Allocate memory
IN A,(SLOT0)
LD (HL),A
; ¤«ï API ¤à ©¢¥à  ¬ë誨
LD (MOUSE_HANDLER.CorePage),A
LD (DRIVES_DRIVER.MOUSE_HANDLER.CorePage),A
LD A,(BANKTBL + DRVPAGE)
LD (RST_0x30.drv_page),A
;
@ -111,6 +111,6 @@ DEPLOY: ;Allocate memory
;
POP AF
OUT (SLOT3),A
AND A
AND A
RET
;-----------------------------------------------------------------------;

View File

@ -1 +1 @@
525
526

@ -1 +1 @@
Subproject commit a0e68ce3a19bd47537585e49bfbf5e45fab197a1
Subproject commit 1dabd783c85be491b704d038f9efabbaf8fe697e