mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 09:21:47 +03:00
...
This commit is contained in:
parent
883bbf0aeb
commit
22f9ae494c
@ -163,7 +163,7 @@ MKDIR:
|
|||||||
LD E,L
|
LD E,L
|
||||||
INC DE
|
INC DE
|
||||||
LD (HL),0
|
LD (HL),0
|
||||||
LD BC,512-65 ;!HARDCODE sector size
|
LD BC,512-65 ;!HARDCODE ;!FIXIT ; [ ] sector size
|
||||||
LDIR
|
LDIR
|
||||||
;
|
;
|
||||||
POP HL ; áâ à訩 ®¬¥à ᥪâ®à
|
POP HL ; áâ à訩 ®¬¥à ᥪâ®à
|
||||||
@ -197,7 +197,7 @@ MKDIR:
|
|||||||
JR Z,.skip_clean
|
JR Z,.skip_clean
|
||||||
;
|
;
|
||||||
LD DE,CORE_BUFFERS.SECTOR_BUFFER+1
|
LD DE,CORE_BUFFERS.SECTOR_BUFFER+1
|
||||||
LD BC,511 ;!HARDCODE sector size
|
LD BC,511 ;!HARDCODE ;!FIXIT ; [ ] sector size
|
||||||
LD (HL),0
|
LD (HL),0
|
||||||
LDIR
|
LDIR
|
||||||
.skip_clean: ;
|
.skip_clean: ;
|
||||||
|
|||||||
@ -110,7 +110,7 @@ READ: LD (.R_POINT),HL
|
|||||||
;
|
;
|
||||||
EXX
|
EXX
|
||||||
POP DE
|
POP DE
|
||||||
LD HL,512 ;!HARDCODE sector size!
|
LD HL,512 ;!HARDCODE ;!FIXIT ; [ ] sector size
|
||||||
AND A
|
AND A
|
||||||
SBC HL,DE
|
SBC HL,DE
|
||||||
LD B,H
|
LD B,H
|
||||||
|
|||||||
@ -152,7 +152,7 @@ WRITE: ;!TEST ;!TODO 5/12/23 ; [ ]
|
|||||||
EXX
|
EXX
|
||||||
POP DE
|
POP DE
|
||||||
JP C,.ERR1
|
JP C,.ERR1
|
||||||
LD HL,512 ;!HARDCODE sector size!
|
LD HL,512 ;!HARDCODE ;!FIXIT ; [ ] sector size
|
||||||
AND A
|
AND A
|
||||||
SBC HL,DE
|
SBC HL,DE
|
||||||
LD B,H
|
LD B,H
|
||||||
|
|||||||
@ -254,8 +254,9 @@ DEVICE EQU $
|
|||||||
;+01 LONG SECTOR OFFSET
|
;+01 LONG SECTOR OFFSET
|
||||||
;+05 LONG SIZE IN SECTORS
|
;+05 LONG SIZE IN SECTORS
|
||||||
;+09 BYTE PARTITION RECORD NUMBER (in drive MBR)
|
;+09 BYTE PARTITION RECORD NUMBER (in drive MBR)
|
||||||
;+09 FREE
|
;+10 WORD Sector Size
|
||||||
;+15
|
;+12 FREE
|
||||||
|
;
|
||||||
LOGDRV EQU DEVICE + DEVICE.End
|
LOGDRV EQU DEVICE + DEVICE.End
|
||||||
.TBL_Entry EQU 16
|
.TBL_Entry EQU 16
|
||||||
.Size EQU DSS_MAX_DRIVES_AMOUNT * .TBL_Entry
|
.Size EQU DSS_MAX_DRIVES_AMOUNT * .TBL_Entry
|
||||||
@ -264,6 +265,11 @@ LOGDRV EQU DEVICE + DEVICE.End
|
|||||||
.SECTOR_OFFSET EQU 1
|
.SECTOR_OFFSET EQU 1
|
||||||
.SIZE_IN_SECTORS EQU 5
|
.SIZE_IN_SECTORS EQU 5
|
||||||
.PARTITION_RECORD_NUM EQU 9
|
.PARTITION_RECORD_NUM EQU 9
|
||||||
|
.SECTOR_SIZE EQU 10 ; word
|
||||||
|
.RemovableMedia EQU 12 ; bit0=1 removable, bit1=1 drive changed, bit7..2 reserved
|
||||||
|
.Reserved_1 EQU 13
|
||||||
|
.Reserved_1 EQU 14
|
||||||
|
.Reserved_1 EQU 15
|
||||||
; ‚•Ž„: L - «®£¨ç¥áª¨© ®¬¥à ¢ â ¡«¨æ¥
|
; ‚•Ž„: L - «®£¨ç¥áª¨© ®¬¥à ¢ â ¡«¨æ¥
|
||||||
; ‚›•Ž„: IY - ç «® § ¯¨á¨
|
; ‚›•Ž„: IY - ç «® § ¯¨á¨
|
||||||
; <20>Ž<EFBFBD>’ˆ’: HL, IY. HL<-->DE
|
; <20>Ž<EFBFBD>’ˆ’: HL, IY. HL<-->DE
|
||||||
|
|||||||
@ -1599,7 +1599,7 @@ SET_FAT32_CACHE_BLOCK_CHANGED_REGION:
|
|||||||
JR Z,.set_region
|
JR Z,.set_region
|
||||||
;
|
;
|
||||||
.loop: SLA H
|
.loop: SLA H
|
||||||
AND A
|
;AND A
|
||||||
SUB L
|
SUB L
|
||||||
JR NZ,.loop
|
JR NZ,.loop
|
||||||
;
|
;
|
||||||
@ -1676,20 +1676,16 @@ WRITE_TO_FAT: LD DE,(CORE_BUFFERS.FatBuffer.END_CHAIN_CLUSTER_L) ;
|
|||||||
INC HL ; ®¬¥à ª« áâ¥à
|
INC HL ; ®¬¥à ª« áâ¥à
|
||||||
LD (HL),D
|
LD (HL),D
|
||||||
.exit: ;
|
.exit: ;
|
||||||
IF FAST_FAT_CASHE
|
|
||||||
; [ ] ã᪮२¥ à ¡®âë á ªí襬 FAT
|
; [ ] ã᪮२¥ à ¡®âë á ªí襬 FAT
|
||||||
CALL SET_FAT32_CACHE_BLOCK_CHANGED_REGION
|
CALL SET_FAT32_CACHE_BLOCK_CHANGED_REGION
|
||||||
;
|
;
|
||||||
ENDIF
|
|
||||||
POP AF ; ¢®ááâ. ¯®àâ
|
POP AF ; ¢®ááâ. ¯®àâ
|
||||||
POP HL
|
POP HL
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
IFN FAST_FAT_CASHE
|
|
||||||
; [x] 2/12/23 FAT ¥ ¢á¥£¤ ¬®£ § ¯¨á âìáï HDD
|
; [x] 2/12/23 FAT ¥ ¢á¥£¤ ¬®£ § ¯¨á âìáï HDD
|
||||||
LD A,#FF
|
;LD A,#FF
|
||||||
LD (CORE_BUFFERS.FatBuffer.CacheUpdated),A
|
;LD (CORE_BUFFERS.FatBuffer.CacheUpdated),A
|
||||||
;
|
;
|
||||||
ENDIF
|
|
||||||
; CF = 0
|
; CF = 0
|
||||||
RET
|
RET
|
||||||
;
|
;
|
||||||
@ -1862,7 +1858,6 @@ WRITE_FAT_TABLE:
|
|||||||
LD B,E ; MAX ç¨á«® ᥪâ®à®¢ ¤«ï çâ¥¨ï ¢ ªíè
|
LD B,E ; MAX ç¨á«® ᥪâ®à®¢ ¤«ï çâ¥¨ï ¢ ªíè
|
||||||
LD A,(CORE_BUFFERS.FatBuffer.SectorsPerFAT_H)
|
LD A,(CORE_BUFFERS.FatBuffer.SectorsPerFAT_H)
|
||||||
LD (.sub_A),A
|
LD (.sub_A),A
|
||||||
;LD DE,(CORE_BUFFERS.BootSector.SectorsPerFAT16) ; ᥪâ®à®¢ FAT
|
|
||||||
LD DE,(CORE_BUFFERS.FatBuffer.SectorsPerFAT_L)
|
LD DE,(CORE_BUFFERS.FatBuffer.SectorsPerFAT_L)
|
||||||
AND A
|
AND A
|
||||||
LD A,C
|
LD A,C
|
||||||
@ -1970,17 +1965,14 @@ WRITE_FAT_TABLE:
|
|||||||
LD XL,E
|
LD XL,E
|
||||||
; HL:IX - ᬥ饨¥ ¢ãâà¨ à §¤¥« ç «® 㦮£® ¡«®ª FAT
|
; HL:IX - ᬥ饨¥ ¢ãâà¨ à §¤¥« ç «® 㦮£® ¡«®ª FAT
|
||||||
LD A,(CORE_BUFFERS.FatBuffer.CacheUpdated)
|
LD A,(CORE_BUFFERS.FatBuffer.CacheUpdated)
|
||||||
IF FAST_FAT_CASHE
|
|
||||||
CP #FF
|
CP #FF
|
||||||
JR NZ,.SAVE_NOT_ALL_BLOCK
|
JR NZ,.SAVE_NOT_ALL_BLOCK
|
||||||
ENDIF
|
|
||||||
;
|
;
|
||||||
LD DE,FATPAGE.cache ; ®âªã¤
|
LD DE,FATPAGE.cache ; ®âªã¤
|
||||||
LD A,(CORE_BUFFERS.FatBuffer.DRIVE) ; ®¬¥à ¤¨áª
|
LD A,(CORE_BUFFERS.FatBuffer.DRIVE) ; ®¬¥à ¤¨áª
|
||||||
LD C,Dss.DRV.Write
|
LD C,Dss.DRV.Write
|
||||||
JP ToDSS.DRV
|
JP ToDSS.DRV
|
||||||
;
|
;
|
||||||
IF FAST_FAT_CASHE
|
|
||||||
.SAVE_NOT_ALL_BLOCK:
|
.SAVE_NOT_ALL_BLOCK:
|
||||||
; A = CORE_BUFFERS.FatBuffer.CacheUpdated
|
; A = CORE_BUFFERS.FatBuffer.CacheUpdated
|
||||||
; HL:IX - ᬥ饨¥ ¢ãâà¨ à §¤¥« ç «® 㦮£® ¡«®ª FAT
|
; HL:IX - ᬥ饨¥ ¢ãâà¨ à §¤¥« ç «® 㦮£® ¡«®ª FAT
|
||||||
@ -2042,9 +2034,6 @@ WRITE_FAT_TABLE:
|
|||||||
POP DE
|
POP DE
|
||||||
POP AF
|
POP AF
|
||||||
RET
|
RET
|
||||||
; DJNZ .region_loop
|
|
||||||
; RET
|
|
||||||
ENDIF
|
|
||||||
;-----------------------------------------------------------------------
|
;-----------------------------------------------------------------------
|
||||||
;
|
;
|
||||||
;[x] fat32 ;!TEST
|
;[x] fat32 ;!TEST
|
||||||
@ -2390,7 +2379,6 @@ BLOCK_READ: LD (READ.PointerOnBuffer),IX
|
|||||||
;
|
;
|
||||||
.ECL1: AND A
|
.ECL1: AND A
|
||||||
RET
|
RET
|
||||||
|
|
||||||
;-----------------------------------------------------------------------
|
;-----------------------------------------------------------------------
|
||||||
|
|
||||||
; [x] fat32
|
; [x] fat32
|
||||||
|
|||||||
@ -31,7 +31,7 @@
|
|||||||
; ®¬¥à ¢¥àᨨ (0..9)
|
; ®¬¥à ¢¥àᨨ (0..9)
|
||||||
VERS EQU 1
|
VERS EQU 1
|
||||||
; ®¬¥à ¬®¤¨ä¨ª 樨 (0..99)
|
; ®¬¥à ¬®¤¨ä¨ª 樨 (0..99)
|
||||||
MODF EQU 70
|
MODF EQU 71
|
||||||
; ®¬¥à ¡¨«¤ (0..999)
|
; ®¬¥à ¡¨«¤ (0..999)
|
||||||
BUILD EQU lua_BUILD
|
BUILD EQU lua_BUILD
|
||||||
;
|
;
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
999
|
0
|
||||||
@ -28,7 +28,6 @@
|
|||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
DEFINE CHANGE_FREE_CLU_AFTER_DEL 1
|
DEFINE CHANGE_FREE_CLU_AFTER_DEL 1
|
||||||
DEFINE FAST_FAT_CASHE 1
|
|
||||||
|
|
||||||
SERVICE_SECTORS:
|
SERVICE_SECTORS:
|
||||||
.FAT12 EQU #0FEF
|
.FAT12 EQU #0FEF
|
||||||
@ -94,6 +93,8 @@ FAT_CACHE:
|
|||||||
;.Part_Mask_12 EQU ((1<<(.bytes_record_12*8)) / (.Size/2))-1
|
;.Part_Mask_12 EQU ((1<<(.bytes_record_12*8)) / (.Size/2))-1
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
;
|
;
|
||||||
|
DEFINE DSS_MAX_SECTOR_SIZE 512
|
||||||
|
|
||||||
DSS_MAX_DRIVES_AMOUNT EQU 26
|
DSS_MAX_DRIVES_AMOUNT EQU 26
|
||||||
DEFINE MAX_RAMDRIVES 16
|
DEFINE MAX_RAMDRIVES 16
|
||||||
DEFINE NeedSafePort_Y 1
|
DEFINE NeedSafePort_Y 1
|
||||||
|
|||||||
@ -289,16 +289,26 @@ SELHDD: PUSH DE
|
|||||||
PUSH HL
|
PUSH HL
|
||||||
;
|
;
|
||||||
LD L,A
|
LD L,A
|
||||||
|
;
|
||||||
LOGDRV_ENTRY_FIND LOGDRV
|
LOGDRV_ENTRY_FIND LOGDRV
|
||||||
; !HARDCODE
|
;
|
||||||
LD E,(IY+1)
|
; [ ] custorm sector size
|
||||||
LD D,(IY+2)
|
CALL CHECK_IDE_SECTOR_SIZE
|
||||||
|
RLA
|
||||||
|
;
|
||||||
|
;
|
||||||
|
LD E,(IY+LOGDRV.SECTOR_OFFSET)
|
||||||
|
LD D,(IY+LOGDRV.SECTOR_OFFSET+1)
|
||||||
ADD IX,DE
|
ADD IX,DE
|
||||||
LD E,(IY+3)
|
LD E,(IY+LOGDRV.SECTOR_OFFSET+2)
|
||||||
LD D,(IY+4)
|
LD D,(IY+LOGDRV.SECTOR_OFFSET+3)
|
||||||
POP HL
|
POP HL
|
||||||
ADC HL,DE
|
ADC HL,DE
|
||||||
LD A,(IY+0) ;DRIVE NUMBER
|
; [ ] custom sector size
|
||||||
|
;JR C,.exit
|
||||||
|
RRA
|
||||||
|
;
|
||||||
|
.exit: LD A,(IY+LOGDRV.PHISICAL_DRV_NUMBER)
|
||||||
POP DE
|
POP DE
|
||||||
RET
|
RET
|
||||||
|
|
||||||
@ -367,6 +377,16 @@ HFRTRAC LD A,DSS_Error.drv.GENERAL_FAILURE
|
|||||||
; bit2 - reserved "0" (MAY BE OTHER)
|
; bit2 - reserved "0" (MAY BE OTHER)
|
||||||
; bit1 - reserved "0" (MAY BE OTHER)
|
; bit1 - reserved "0" (MAY BE OTHER)
|
||||||
; bit0 - Primary/Secondary Chanel
|
; bit0 - Primary/Secondary Chanel
|
||||||
|
; B - ;[ ] sector size ;!TODO
|
||||||
|
; 00 - undefined
|
||||||
|
; 01 - 128 bytes
|
||||||
|
; 02 - 256 bytes
|
||||||
|
; 04 - 512 bytes
|
||||||
|
; 08 - 1024 bytes
|
||||||
|
; 16 - 2048 bytes
|
||||||
|
; 32 - 4096 bytes
|
||||||
|
; 64 - 8192 bytes
|
||||||
|
; 128 - 16384 bytes
|
||||||
HGETPRM:
|
HGETPRM:
|
||||||
EX DE,HL
|
EX DE,HL
|
||||||
LD BC,#55AA
|
LD BC,#55AA
|
||||||
@ -397,6 +417,13 @@ HGETPRM:
|
|||||||
LD A,B
|
LD A,B
|
||||||
LD B,D
|
LD B,D
|
||||||
EXX
|
EXX
|
||||||
|
;[ ] 04/01/2025 ¢®§¢à 饨¥ à §¬¥à ᥪâ®à
|
||||||
|
EX AF,AF'
|
||||||
|
LD A,XH
|
||||||
|
LD E,XL
|
||||||
|
RL E
|
||||||
|
RLA
|
||||||
|
;
|
||||||
; SECTORS ON LOGICAL DISK
|
; SECTORS ON LOGICAL DISK
|
||||||
LD E,(IY+LOGDRV.SIZE_IN_SECTORS+0)
|
LD E,(IY+LOGDRV.SIZE_IN_SECTORS+0)
|
||||||
LD D,(IY+LOGDRV.SIZE_IN_SECTORS+1)
|
LD D,(IY+LOGDRV.SIZE_IN_SECTORS+1)
|
||||||
@ -406,7 +433,19 @@ HGETPRM:
|
|||||||
;[x] 17.12.2023 § £à㧪 á ªâ¨¢®£® à §¤¥« , ¥ á ¯¥à¢®£®
|
;[x] 17.12.2023 § £à㧪 á ªâ¨¢®£® à §¤¥« , ¥ á ¯¥à¢®£®
|
||||||
LD C,(IY+LOGDRV.PARTITION_RECORD_NUM) ; ®¬¥à ¯ àâ¨æ¨¨ ¢ MBR ¤¨áª
|
LD C,(IY+LOGDRV.PARTITION_RECORD_NUM) ; ®¬¥à ¯ àâ¨æ¨¨ ¢ MBR ¤¨áª
|
||||||
;
|
;
|
||||||
EX AF,AF'
|
;[ ] 04/01/2025 ¢®§¢à 饨¥ à §¬¥à ᥪâ®à
|
||||||
|
; 00 - undefined
|
||||||
|
; 01 - 128 bytes
|
||||||
|
; 02 - 256 bytes
|
||||||
|
; 04 - 512 bytes
|
||||||
|
; 08 - 1024 bytes
|
||||||
|
; 16 - 2048 bytes
|
||||||
|
; 32 - 4096 bytes
|
||||||
|
; 64 - 8192 bytes
|
||||||
|
; 128 - 16384 bytes
|
||||||
|
;EX AF,AF'
|
||||||
|
LD B,A
|
||||||
|
;
|
||||||
LD A,(IY+LOGDRV.PHISICAL_DRV_NUMBER) ;MASTER/SLAVE PHISICAL DRIVE NUMBER #80/#81/...
|
LD A,(IY+LOGDRV.PHISICAL_DRV_NUMBER) ;MASTER/SLAVE PHISICAL DRIVE NUMBER #80/#81/...
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
;
|
;
|
||||||
@ -434,6 +473,16 @@ CHEK_H: ;LD A,#FF
|
|||||||
RET
|
RET
|
||||||
|
|
||||||
|
|
||||||
|
; [ ] custorm sector size
|
||||||
|
CHECK_IDE_SECTOR_SIZE:
|
||||||
|
LD E,(IY+LOGDRV.SECTOR_SIZE)
|
||||||
|
LD D,(IY+LOGDRV.SECTOR_SIZE+1)
|
||||||
|
LD HL,DSS_MAX_SECTOR_SIZE
|
||||||
|
AND A
|
||||||
|
SBC HL,DE
|
||||||
|
RET
|
||||||
|
;
|
||||||
|
|
||||||
; DE - ADDRESS
|
; DE - ADDRESS
|
||||||
; A - DRIVE
|
; A - DRIVE
|
||||||
GBPB_H: PUSH IY
|
GBPB_H: PUSH IY
|
||||||
@ -441,20 +490,27 @@ GBPB_H: PUSH IY
|
|||||||
LD L,A
|
LD L,A
|
||||||
;
|
;
|
||||||
LOGDRV_ENTRY_FIND LOGDRV
|
LOGDRV_ENTRY_FIND LOGDRV
|
||||||
; !HARDCODE
|
;
|
||||||
LD E,(IY+1)
|
; [ ] custorm sector size
|
||||||
LD D,(IY+2)
|
CALL CHECK_IDE_SECTOR_SIZE
|
||||||
LD L,(IY+3)
|
JR C,.error
|
||||||
LD H,(IY+4)
|
;
|
||||||
|
LD E,(IY+LOGDRV.SECTOR_OFFSET)
|
||||||
|
LD D,(IY+LOGDRV.SECTOR_OFFSET+1)
|
||||||
|
LD L,(IY+LOGDRV.SECTOR_OFFSET+2)
|
||||||
|
LD H,(IY+LOGDRV.SECTOR_OFFSET+3)
|
||||||
LD XL,E
|
LD XL,E
|
||||||
LD XH,D
|
LD XH,D
|
||||||
LD A,(IY+0)
|
LD A,(IY+LOGDRV.PHISICAL_DRV_NUMBER)
|
||||||
POP DE
|
POP DE
|
||||||
POP IY
|
POP IY
|
||||||
LD BC,1*256 + BIOS.DRV_READ
|
LD BC,1*256 + BIOS.DRV_READ
|
||||||
JP ToBIOS
|
JP ToBIOS
|
||||||
|
;
|
||||||
|
.error: POP DE
|
||||||
|
POP IY
|
||||||
|
LD A,DSS_Error.drv.UNKNOWN_FORMAT
|
||||||
|
RET
|
||||||
;HL:IX - SECTOR
|
;HL:IX - SECTOR
|
||||||
; DE - ADDRESS
|
; DE - ADDRESS
|
||||||
; B - COUNTER
|
; B - COUNTER
|
||||||
@ -463,9 +519,10 @@ GBPB_H: PUSH IY
|
|||||||
;READ SECTOR
|
;READ SECTOR
|
||||||
LREADH: PUSH IY
|
LREADH: PUSH IY
|
||||||
CALL SELHDD
|
CALL SELHDD
|
||||||
|
JR C,.error ; [ ] custorm sector size
|
||||||
LD C,BIOS.DRV_READ_LONG
|
LD C,BIOS.DRV_READ_LONG
|
||||||
RST ToBIOS
|
RST ToBIOS
|
||||||
POP IY
|
.error: POP IY
|
||||||
RET
|
RET
|
||||||
|
|
||||||
;HL:IX - SECTOR
|
;HL:IX - SECTOR
|
||||||
@ -477,9 +534,10 @@ LREADH: PUSH IY
|
|||||||
LWRITEH:
|
LWRITEH:
|
||||||
PUSH IY
|
PUSH IY
|
||||||
CALL SELHDD
|
CALL SELHDD
|
||||||
|
JR C,.error ; [ ] custorm sector size
|
||||||
LD C,BIOS.DRV_WRITE_LONG
|
LD C,BIOS.DRV_WRITE_LONG
|
||||||
RST ToBIOS
|
RST ToBIOS
|
||||||
POP IY
|
.error: POP IY
|
||||||
RET
|
RET
|
||||||
|
|
||||||
;HL:IX - SECTOR
|
;HL:IX - SECTOR
|
||||||
@ -489,9 +547,10 @@ LWRITEH:
|
|||||||
;WRITE SECTOR
|
;WRITE SECTOR
|
||||||
WRITEH: PUSH IY
|
WRITEH: PUSH IY
|
||||||
CALL SELHDD
|
CALL SELHDD
|
||||||
|
JR C,.error ; [ ] custorm sector size
|
||||||
LD C,BIOS.DRV_WRITE
|
LD C,BIOS.DRV_WRITE
|
||||||
RST ToBIOS
|
RST ToBIOS
|
||||||
POP IY
|
.error: POP IY
|
||||||
RET
|
RET
|
||||||
|
|
||||||
;HL:IX - SECTOR
|
;HL:IX - SECTOR
|
||||||
@ -501,9 +560,10 @@ WRITEH: PUSH IY
|
|||||||
;READ SECTOR
|
;READ SECTOR
|
||||||
READH: PUSH IY
|
READH: PUSH IY
|
||||||
CALL SELHDD
|
CALL SELHDD
|
||||||
|
JR C,.error ; [ ] custorm sector size
|
||||||
LD C,BIOS.DRV_READ
|
LD C,BIOS.DRV_READ
|
||||||
RST ToBIOS
|
RST ToBIOS
|
||||||
POP IY
|
.error: POP IY
|
||||||
RET
|
RET
|
||||||
|
|
||||||
;HL:IX - SECTOR
|
;HL:IX - SECTOR
|
||||||
@ -595,12 +655,23 @@ DEFINE_PARTITIONS:
|
|||||||
;SCF
|
;SCF
|
||||||
;RET
|
;RET
|
||||||
.check_atapi: LD A,(DRV_NUM)
|
.check_atapi: LD A,(DRV_NUM)
|
||||||
|
LD B,A
|
||||||
AND #F0
|
AND #F0
|
||||||
CP DRIVE_CODES.SPRINTER.ATAPI
|
CP DRIVE_CODES.SPRINTER.ATAPI
|
||||||
SCF
|
SCF
|
||||||
RET NZ
|
RET NZ
|
||||||
;
|
;
|
||||||
; No Media
|
; No Media
|
||||||
|
;!TODO sector size
|
||||||
|
LD A,B
|
||||||
|
LD C,BIOS.DRV_GET_PAR
|
||||||
|
RST ToBIOS
|
||||||
|
JR NC,.no_err
|
||||||
|
;
|
||||||
|
LD IX,#FFFF
|
||||||
|
.no_err: LD D,XH
|
||||||
|
LD E,XL
|
||||||
|
;
|
||||||
XOR A
|
XOR A
|
||||||
;BPB SECTOR
|
;BPB SECTOR
|
||||||
LD IX,(OFFSECT)
|
LD IX,(OFFSECT)
|
||||||
@ -613,6 +684,10 @@ DEFINE_PARTITIONS:
|
|||||||
LD (IX + LOGDRV.SIZE_IN_SECTORS + 1),A
|
LD (IX + LOGDRV.SIZE_IN_SECTORS + 1),A
|
||||||
LD (IX + LOGDRV.SIZE_IN_SECTORS + 2),A
|
LD (IX + LOGDRV.SIZE_IN_SECTORS + 2),A
|
||||||
LD (IX + LOGDRV.SIZE_IN_SECTORS + 3),A
|
LD (IX + LOGDRV.SIZE_IN_SECTORS + 3),A
|
||||||
|
; [ ] sector size
|
||||||
|
LD (IX + LOGDRV.SECTOR_SIZE),E
|
||||||
|
LD (IX + LOGDRV.SECTOR_SIZE + 1),D
|
||||||
|
;
|
||||||
; ¤«ï ¯à ¢¨«ì®£® ¢ë室 ¨§ ¯ àá¥à à §¤¥«®¢
|
; ¤«ï ¯à ¢¨«ì®£® ¢ë室 ¨§ ¯ àá¥à à §¤¥«®¢
|
||||||
LD B,1
|
LD B,1
|
||||||
PUSH BC
|
PUSH BC
|
||||||
|
|||||||
@ -293,11 +293,11 @@ GenIOCTL: BIT 7,B
|
|||||||
; BC' - SECTORS PER TRACK ON PHISICAL DISK
|
; BC' - SECTORS PER TRACK ON PHISICAL DISK
|
||||||
; A' - PHISICAL DRIVE NUMBER
|
; A' - PHISICAL DRIVE NUMBER
|
||||||
; A - EXTENDED INFORMATION
|
; A - EXTENDED INFORMATION
|
||||||
; D1..D3 - "0" RESERVED (MAY BE OTHER)
|
|
||||||
; D4 - DEVICE MASTER/SLAVE
|
|
||||||
; D5 - "1" RESERVED
|
|
||||||
; D6 - ADDRESSING MODE LBA/CHS
|
|
||||||
; D7 - "1" RESERVED
|
; D7 - "1" RESERVED
|
||||||
|
; D6 - ADDRESSING MODE LBA/CHS
|
||||||
|
; D5 - "1" RESERVED
|
||||||
|
; D4 - DEVICE MASTER/SLAVE
|
||||||
|
; D1..D3 - "0" RESERVED (MAY BE OTHER)
|
||||||
.GetParams: EX DE,HL
|
.GetParams: EX DE,HL
|
||||||
LD BC,#55AA
|
LD BC,#55AA
|
||||||
AND #0F
|
AND #0F
|
||||||
|
|||||||
@ -393,6 +393,13 @@ HGETPRM:
|
|||||||
LD A,B
|
LD A,B
|
||||||
LD B,D
|
LD B,D
|
||||||
EXX
|
EXX
|
||||||
|
;[ ] 04/01/2025 ¢®§¢à 饨¥ à §¬¥à ᥪâ®à
|
||||||
|
EX AF,AF'
|
||||||
|
LD A,XH
|
||||||
|
LD E,XL
|
||||||
|
RL E
|
||||||
|
RLA
|
||||||
|
;
|
||||||
; SECTORS ON LOGICAL DISK
|
; SECTORS ON LOGICAL DISK
|
||||||
LD E,(IY+LOGDRV.SIZE_IN_SECTORS+0)
|
LD E,(IY+LOGDRV.SIZE_IN_SECTORS+0)
|
||||||
LD D,(IY+LOGDRV.SIZE_IN_SECTORS+1)
|
LD D,(IY+LOGDRV.SIZE_IN_SECTORS+1)
|
||||||
@ -402,7 +409,19 @@ HGETPRM:
|
|||||||
;[x] 17.12.2023 § £à㧪 á ªâ¨¢®£® à §¤¥« , ¥ á ¯¥à¢®£®
|
;[x] 17.12.2023 § £à㧪 á ªâ¨¢®£® à §¤¥« , ¥ á ¯¥à¢®£®
|
||||||
LD C,(IY+LOGDRV.PARTITION_RECORD_NUM) ; ®¬¥à ¯ àâ¨æ¨¨ ¢ MBR ¤¨áª
|
LD C,(IY+LOGDRV.PARTITION_RECORD_NUM) ; ®¬¥à ¯ àâ¨æ¨¨ ¢ MBR ¤¨áª
|
||||||
;
|
;
|
||||||
EX AF,AF'
|
;[ ] 04/01/2025 ¢®§¢à 饨¥ à §¬¥à ᥪâ®à
|
||||||
|
; 00 - undefined
|
||||||
|
; 01 - 128 bytes
|
||||||
|
; 02 - 256 bytes
|
||||||
|
; 04 - 512 bytes
|
||||||
|
; 08 - 1024 bytes
|
||||||
|
; 16 - 2048 bytes
|
||||||
|
; 32 - 4096 bytes
|
||||||
|
; 64 - 8192 bytes
|
||||||
|
; 128 - 16384 bytes
|
||||||
|
;EX AF,AF'
|
||||||
|
LD B,A
|
||||||
|
;
|
||||||
LD A,(IY+LOGDRV.PHISICAL_DRV_NUMBER) ;MASTER/SLAVE PHISICAL DRIVE NUMBER #80/#81/...
|
LD A,(IY+LOGDRV.PHISICAL_DRV_NUMBER) ;MASTER/SLAVE PHISICAL DRIVE NUMBER #80/#81/...
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
;
|
;
|
||||||
@ -437,14 +456,14 @@ GBPB_H: PUSH IY
|
|||||||
LD L,A
|
LD L,A
|
||||||
;
|
;
|
||||||
LOGDRV_ENTRY_FIND LOGDRV
|
LOGDRV_ENTRY_FIND LOGDRV
|
||||||
; !HARDCODE
|
;
|
||||||
LD E,(IY+1)
|
LD E,(IY+LOGDRV.SECTOR_OFFSET)
|
||||||
LD D,(IY+2)
|
LD D,(IY+LOGDRV.SECTOR_OFFSET+1)
|
||||||
LD L,(IY+3)
|
LD L,(IY+LOGDRV.SECTOR_OFFSET+2)
|
||||||
LD H,(IY+4)
|
LD H,(IY+LOGDRV.SECTOR_OFFSET+3)
|
||||||
LD XL,E
|
LD XL,E
|
||||||
LD XH,D
|
LD XH,D
|
||||||
LD A,(IY+0)
|
LD A,(IY+LOGDRV.SECTOR_OFFSET.PHISICAL_DRV_NUMBER)
|
||||||
POP DE
|
POP DE
|
||||||
POP IY
|
POP IY
|
||||||
LD BC,1*256 + BIOS.DRV_READ
|
LD BC,1*256 + BIOS.DRV_READ
|
||||||
|
|||||||
@ -149,37 +149,37 @@ INITDVC: XOR A
|
|||||||
; ˆ¨æ¨¨à®¢ âì â ¡«¨æã ¯¥à¥å®¤®¢ ¤¥¢ ©á .
|
; ˆ¨æ¨¨à®¢ âì â ¡«¨æã ¯¥à¥å®¤®¢ ¤¥¢ ©á .
|
||||||
; ¢å®¤: de= ¤à¥á ®¡à ¡®â稪 ¤¥¢ ©á
|
; ¢å®¤: de= ¤à¥á ®¡à ¡®â稪 ¤¥¢ ©á
|
||||||
; a=ç¨á«® ¤¥¢ ©á®¢ (0=¥â)
|
; a=ç¨á«® ¤¥¢ ©á®¢ (0=¥â)
|
||||||
MAKEDVC: LD C,A
|
MAKEDVC: LD C,A
|
||||||
LD HL,DRV_PAGE.LDRIVE ; ï祩ª ®¬¥à ¯®á«. ¤¨áª
|
LD HL,DRV_PAGE.LDRIVE ; ï祩ª ®¬¥à ¯®á«. ¤¨áª
|
||||||
ADD A,(HL)
|
ADD A,(HL)
|
||||||
LD (HL),A
|
LD (HL),A
|
||||||
;!TEST ;[ ] ®¯â¨¬¨§¨à®¢ âì ¡ë«® «¥ì
|
;!TEST ;[ ] ®¯â¨¬¨§¨à®¢ âì ¡ë«® «¥ì
|
||||||
CP DSS_MAX_DRIVES_AMOUNT+1
|
CP DSS_MAX_DRIVES_AMOUNT+1
|
||||||
JR C,1F
|
JR C,1F
|
||||||
LD (HL),DSS_MAX_DRIVES_AMOUNT
|
LD (HL),DSS_MAX_DRIVES_AMOUNT
|
||||||
SUB DSS_MAX_DRIVES_AMOUNT
|
SUB DSS_MAX_DRIVES_AMOUNT
|
||||||
NEG
|
NEG
|
||||||
ADD C
|
ADD C
|
||||||
JP 2F
|
JP 2F
|
||||||
;
|
;
|
||||||
1: LD A,C
|
1: LD A,C
|
||||||
OR A
|
OR A
|
||||||
RET Z ; ¥â ¤¥¢ ©á®¢
|
RET Z ; ¥â ¤¥¢ ©á®¢
|
||||||
2: LD C,0 ; á¡à.
|
2: LD C,0 ; á¡à.
|
||||||
LD HL,(PDEVICE) ; ⥪. ¯®«®¦. ¢ â ¡«¨æ¥
|
LD HL,(PDEVICE) ; ⥪. ¯®«®¦. ¢ â ¡«¨æ¥
|
||||||
.loop: LD (HL),C ; ®¬¥à «®£.¤à ©¢ í⮣® ãáâனáâ¢
|
.loop: LD (HL),C ; ®¬¥à «®£.¤à ©¢ í⮣® ãáâனáâ¢
|
||||||
INC HL
|
INC HL
|
||||||
LD (HL),E ; de= ¤à¥á ®¡à ¡®â稪
|
LD (HL),E ; de= ¤à¥á ®¡à ¡®â稪
|
||||||
INC HL
|
INC HL
|
||||||
LD (HL),D
|
LD (HL),D
|
||||||
INC HL
|
INC HL
|
||||||
INC C ; ++®¬¥à ¤à ©¢
|
INC C ; ++®¬¥à ¤à ©¢
|
||||||
DEC A
|
DEC A
|
||||||
JR NZ,.loop
|
JR NZ,.loop
|
||||||
LD (PDEVICE),HL
|
LD (PDEVICE),HL
|
||||||
DEC A
|
DEC A
|
||||||
LD (HL),A
|
LD (HL),A
|
||||||
RET
|
RET
|
||||||
|
|
||||||
|
|
||||||
;!FIXIT ¯®¯¥à¥¤¥«ë¢ âì âã⠢맮¢ë ç¥à¥§ â®çª¨ ¢å®¤ ⨯ RST ¨«¨ ¢ë§®¢ë ⨯ LD C,0 : CALL HDDRIVE ¯àï¬ë¥
|
;!FIXIT ¯®¯¥à¥¤¥«ë¢ âì âã⠢맮¢ë ç¥à¥§ â®çª¨ ¢å®¤ ⨯ RST ¨«¨ ¢ë§®¢ë ⨯ LD C,0 : CALL HDDRIVE ¯àï¬ë¥
|
||||||
@ -192,10 +192,9 @@ INTDISK:
|
|||||||
CP #FF
|
CP #FF
|
||||||
JR NZ,.noNeedRescan
|
JR NZ,.noNeedRescan
|
||||||
CP C
|
CP C
|
||||||
;JR Z,INITDVC_RET_DRIVE
|
|
||||||
JR Z,ReScanDRV
|
JR Z,ReScanDRV
|
||||||
.noNeedRescan:
|
|
||||||
;
|
;
|
||||||
|
.noNeedRescan:
|
||||||
PUSH HL
|
PUSH HL
|
||||||
PUSH BC
|
PUSH BC
|
||||||
_CALC_DEVICE_ENTRY DEVICE
|
_CALC_DEVICE_ENTRY DEVICE
|
||||||
|
|||||||
@ -87,7 +87,7 @@ cmd_info: CALL Get_Path
|
|||||||
POP BC
|
POP BC
|
||||||
PUSH BC
|
PUSH BC
|
||||||
LD A,C
|
LD A,C
|
||||||
CP "C"
|
CP "C" - "A"
|
||||||
JR C,.ItIsFDD
|
JR C,.ItIsFDD
|
||||||
LD DE,Dss.DRV.GenIOCTL.Enter
|
LD DE,Dss.DRV.GenIOCTL.Enter
|
||||||
LD BC,Dss.DRV.GenIOCTL.GetParams
|
LD BC,Dss.DRV.GenIOCTL.GetParams
|
||||||
@ -98,18 +98,20 @@ cmd_info: CALL Get_Path
|
|||||||
LD DE,Buffers.bat_params.PRM5 ; Drive size
|
LD DE,Buffers.bat_params.PRM5 ; Drive size
|
||||||
CALL ncopy_string
|
CALL ncopy_string
|
||||||
JR .print_info_2
|
JR .print_info_2
|
||||||
; HL:DE * 512 = A:HL:H'L'
|
; HL:DE * 512 = A:H'L':HL ;!HARDCODE sector size
|
||||||
.calc_size: RL E
|
.calc_size: RL E
|
||||||
RL D
|
RL D
|
||||||
RL L
|
RL L
|
||||||
RL H
|
RL H
|
||||||
LD C,E
|
|
||||||
LD A,H
|
LD A,H
|
||||||
|
EX AF,AF
|
||||||
|
LD A,E
|
||||||
LD H,L
|
LD H,L
|
||||||
LD L,D
|
LD L,D
|
||||||
EXX
|
EXX
|
||||||
LD H,C
|
LD H,A
|
||||||
LD L,0
|
LD L,0
|
||||||
|
EX AF,AF
|
||||||
JR .convert_hex
|
JR .convert_hex
|
||||||
;
|
;
|
||||||
.Collect_Msg: DZ " A: <WAITING>\r" ; ¯ âç¨âáï ¡ãª¢ ¤à ©¢ ¢ 横«¥
|
.Collect_Msg: DZ " A: <WAITING>\r" ; ¯ âç¨âáï ¡ãª¢ ¤à ©¢ ¢ 横«¥
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
437
|
444
|
||||||
@ -1 +1 @@
|
|||||||
Subproject commit 6f28f9f83e4737733b76053891bd9be121aed186
|
Subproject commit 7ef1dd98b491068d5a9ded34f5ff51430b7fa7e7
|
||||||
Loading…
Reference in New Issue
Block a user