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

View File

@ -71,7 +71,7 @@ SetPath_GetName:
INC HL INC HL
; ;
.dir_loop: LD DE,CORE_BUFFERS.TMPNAME .dir_loop: LD DE,CORE_BUFFERS.TMPNAME
LD BC,#0DFF LD BC,256*CORE_BUFFERS.TMPNAME.Size + #FF
.loop: LD A,(HL) .loop: LD A,(HL)
INC HL INC HL
CP '\' ; 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 ;!TEST Current Dir ;[x] 15/10/23
DIR_PATH_CHANGE: DIR_PATH_CHANGE:

View File

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

View File

@ -2221,20 +2221,10 @@ BLOCK_READ: LD (READ.PointerOnBuffer),IX
; HL:DE / A => DE:BC, H=0, L - ®áâ â®ª ; HL:DE / A => DE:BC, H=0, L - ®áâ â®ª
CALL DIV_by_Shifts CALL DIV_by_Shifts
PUSH HL ; ®áâ â®ª 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 BC ; ¬« ¤è¥¥ á«®¢® ­®¬¥à  ª« áâ¥à 
PUSH DE ; [x] fat32 áâ à襥 á«®¢® ­®¬¥à  ª« áâ¥à  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 CALL CHECK_FIRST_CLUSTER
JR Z,.fast_exit_4 JR Z,.fast_exit_4
CALL GetSavedCluster CALL GetSavedCluster
@ -2273,7 +2263,7 @@ BLOCK_READ: LD (READ.PointerOnBuffer),IX
DJNZ .loop1_big 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 DE ; [x] fat32 áâ à襥 á«®¢® ­®¬¥à  ª« áâ¥à 
POP BC ; ¬« ¤è¥¥ á«®¢® ­®¬¥à  ª« áâ¥à  POP BC ; ¬« ¤è¥¥ á«®¢® ­®¬¥à  ª« áâ¥à 
CALL SaveGotCluster CALL SaveGotCluster
@ -2285,21 +2275,21 @@ BLOCK_READ: LD (READ.PointerOnBuffer),IX
LD A,C LD A,C
SUB E SUB E
LD C,A LD C,A
CP B ; (SectorsPerCluster - ®áâ â®ª) - ª®«¨ç¥á⢮ ᥪâ®à®¢ ¤«ï ç⥭¨ï CP B ; (SectorsPerCluster - ®áâ â®ª) - ª®«¨ç¥á⢮ ᥪâ®à®¢ ¤«ï ç⥭¨ï
JR C,.skip1 ; SIZE > RESIDUE CLUSTER JR C,.skip1 ; SIZE > RESIDUE CLUSTER
LD C,B ; SIZE < CLUSTER LD C,B ; SIZE < CLUSTER
.skip1: LD A,B .skip1: LD A,B
SUB C SUB C
LD B,A LD B,A
; ;
EXX EXX
PUSH HL ; ­®¬¥à ª« áâ¥à  áâ àè ï ç áâì PUSH HL ; ­®¬¥à ª« áâ¥à  áâ àè ï ç áâì
EXX EXX
PUSH HL ; ­®¬¥à ª« áâ¥à  ¬« ¤è ï ç áâì PUSH HL ; ­®¬¥à ª« áâ¥à  ¬« ¤è ï ç áâì
PUSH BC ; B = ª®«¨ç¥á⢮ ᥪâ®à®¢ ­  ¤®ç¨âªã, C = (SectorsPerCluster - ®áâ â®ª) «¨¡® ª®«¨ç¥á⢮ ᥪâ®à®¢ ¤«ï ç⥭¨ï PUSH BC ; B = ª®«¨ç¥á⢮ ᥪâ®à®¢ ­  ¤®ç¨âªã, C = (SectorsPerCluster - ®áâ â®ª) «¨¡® ª®«¨ç¥á⢮ ᥪâ®à®¢ ¤«ï ç⥭¨ï
PUSH DE ; D = 0, E = ®áâ â®ª DIV_by_Shifts PUSH DE ; D = 0, E = ®áâ â®ª DIV_by_Shifts
CALL CLUSTER_TO_SECTOR CALL CLUSTER_TO_SECTOR
POP DE ; D = 0, E = ®áâ â®ª DIV_by_Shifts POP DE ; D = 0, E = ®áâ â®ª DIV_by_Shifts
ADD IX,DE ADD IX,DE
JR NC,.skip2 JR NC,.skip2
INC HL INC HL
@ -2310,7 +2300,7 @@ BLOCK_READ: LD (READ.PointerOnBuffer),IX
RST ToDSS.DRV RST ToDSS.DRV
; ;
JR C,.Error JR C,.Error
POP BC ; B = ª®«¨ç¥á⢮ ᥪâ®à®¢ ­  ¤®ç¨âªã, C = (SectorsPerCluster - ®áâ â®ª) «¨¡® ª®«¨ç¥á⢮ ᥪâ®à®¢ ¤«ï ç⥭¨ï POP BC ; B = ª®«¨ç¥á⢮ ᥪâ®à®¢ ­  ¤®ç¨âªã, C = (SectorsPerCluster - ®áâ â®ª) «¨¡® ª®«¨ç¥á⢮ ᥪâ®à®¢ ¤«ï ç⥭¨ï
LD HL,(READ.PointerOnBuffer) LD HL,(READ.PointerOnBuffer)
LD DE,(CORE_BUFFERS.FS_Buffer.BytesPerSector) LD DE,(CORE_BUFFERS.FS_Buffer.BytesPerSector)
;!TEST ;!TEST
@ -2320,12 +2310,12 @@ BLOCK_READ: LD (READ.PointerOnBuffer),IX
DJNZ .loop2 DJNZ .loop2
; ;
LD (READ.PointerOnBuffer),HL LD (READ.PointerOnBuffer),HL
POP DE ; ­®¬¥à ª« áâ¥à  ¬« ¤è ï ç áâì POP DE ; ­®¬¥à ª« áâ¥à  ¬« ¤è ï ç áâì
EXX EXX
POP HL ; ­®¬¥à ª« áâ¥à  áâ àè ï ç áâì POP HL ; ­®¬¥à ª« áâ¥à  áâ àè ï ç áâì
EXX EXX
OR A OR A
RET Z ; ª®«¨ç¥á⢮ ᥪâ®à®¢ ­  ¤®ç¨âªã = 0? RET Z ; ª®«¨ç¥á⢮ ᥪâ®à®¢ ­  ¤®ç¨âªã = 0?
LD B,A LD B,A
; ;
.loop4: LD HL,CORE_BUFFERS.FS_Buffer.SectorsPerCluster .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 MODULE_SIZE EQU $ - MODULE_START
; ENDMODULE ; ENDMODULE
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ; ;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1 +1 @@
525 526

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