This commit is contained in:
Anatoliy Belyanskiy 2023-11-25 08:28:06 +10:00
parent 743cc31493
commit d8e1695ca0
4 changed files with 53 additions and 65 deletions

@ -1 +1 @@
Subproject commit 18269745815d90e76686f5693e0cb45f8f31741c Subproject commit 349ba286106d21a77cf3f8a25b6f7c952eccb046

View File

@ -117,7 +117,6 @@ SELHH: EXX
LD A,IDE.Chanel.Primary LD A,IDE.Chanel.Primary
SELCHAN: SELCHAN:
OUT (IDE.Chanel.Set),A ;R02 OUT (IDE.Chanel.Set),A ;R02
LD A,(IY+IDE.HDD_INIT_TABLE.DriveType) LD A,(IY+IDE.HDD_INIT_TABLE.DriveType)
CP IDE.Device.HDD ;!FIXIT ¢®§¬®¦­®, ­ å७ ­¥ ­ã¦­®, ¯®â®¬ã-çâ® ¥á«¨ CD, â® ¯à¨«¥â¨â ¢ ¤à ©¢¥à CD CP IDE.Device.HDD ;!FIXIT ¢®§¬®¦­®, ­ å७ ­¥ ­ã¦­®, ¯®â®¬ã-çâ® ¥á«¨ CD, â® ¯à¨«¥â¨â ¢ ¤à ©¢¥à CD
LD A,(IY+IDE.HDD_INIT_TABLE.DRV_Flags) LD A,(IY+IDE.HDD_INIT_TABLE.DRV_Flags)
@ -128,7 +127,7 @@ SELCHAN:
EXX EXX
RET Z RET Z
NODRIVE: NODRIVE:
LD A,2 ;!HARDCODE LD A,BIOS.Error.BadDrvNumber
SCF SCF
RET RET
@ -239,13 +238,13 @@ HDD_5x.LONG_READ:
ADD IX,BC ADD IX,BC
LD B,C LD B,C
ADC HL,BC ADC HL,BC
EX AF,AF' ;EX AF,AF' ;!TEST 21/11/23
JR RST8RDR JR RST8RDR
RNOT256 ADD IX,BC RNOT256 ADD IX,BC
LD C,B LD C,B
ADC HL,BC ADC HL,BC
EX AF,AF' ;EX AF,AF' ;!TEST 21/11/23
JR RST8RDR JR RST8RDR
HERRRD0 LD B,A HERRRD0 LD B,A
@ -265,14 +264,13 @@ HERRRD0 LD B,A
LD C,A LD C,A
LD A,B LD A,B
LD B,C LD B,C
SCF ;R03 ;R03
EX AF,AF' ;R03 SCF
RST8RDR: ;EX AF,AF' ;!TEST 21/11/23
;
RESTORE_PORTY RST8RDR: RESTORE_PORTY
POP IY POP IY
EX AF,AF' ;EX AF,AF' ;!TEST 21/11/23
RET RET
;READ SECTOR(S) ;READ SECTOR(S)
RDS000: CALL SELECTH RDS000: CALL SELECTH
@ -401,13 +399,13 @@ HDD_5x.LONG_WRITE:
ADD IX,BC ADD IX,BC
LD B,C LD B,C
ADC HL,BC ADC HL,BC
EX AF,AF' ;EX AF,AF'
JR RST8WRR JR RST8WRR
WNOT256 ADD IX,BC WNOT256 ADD IX,BC
LD C,B LD C,B
ADC HL,BC ADC HL,BC
EX AF,AF' ;EX AF,AF'
JR RST8WRR JR RST8WRR
HERRWR0 LD B,A HERRWR0 LD B,A
@ -427,14 +425,13 @@ HERRWR0 LD B,A
LD C,A LD C,A
LD A,B LD A,B
LD B,C LD B,C
;R03
SCF ;R03 SCF ;R03
EX AF,AF' ;R03 ;!FIXIT ­ ¬ã¤à¨« ®­ çñâ ¢ í⮬ R03 ;EX AF,AF' ;R03 ;!FIXIT ­ ¬ã¤à¨« ®­ çñâ ¢ í⮬ R03
RST8WRR EXX ;
POP BC RST8WRR: RESTORE_PORTY
OUT (C),B
EXX
POP IY POP IY
EX AF,AF' ;EX AF,AF'
RET RET
;WRITE SECTOR(S) ;WRITE SECTOR(S)
@ -451,6 +448,7 @@ WRS000:
PUSH AF PUSH AF
PUSH DE PUSH DE
;[x] CMOS Write Protect Disabled
IF HDDwriteProtect IF HDDwriteProtect
PUSH BC PUSH BC
LD D,#1D ;!HARDCODE CMOS Write Protect LD D,#1D ;!HARDCODE CMOS Write Protect
@ -462,7 +460,7 @@ WRS000:
POP AF POP AF
EX AF,AF' EX AF,AF'
LD XL,0 LD XL,0
LD A,8 ;WRITE PROTECT LD A,BIOS.Error.WriteProtect
SCF SCF
RET RET
ENDIF ENDIF
@ -483,13 +481,12 @@ WRS002: EXX
EXX EXX
RET C RET C
//DI ;DI
IN A,(SLOT3) IN A,(SLOT3)
EX AF,AF' EX AF,AF'
LD A,XH LD A,XH
OUT (SLOT3),A OUT (SLOT3),A
LD BC,IDE.Write.Data LD BC,IDE.Write.Data
;LD D,#20 ;LD D,#20
LD D,512/WRITE_OUTI_DUPs LD D,512/WRITE_OUTI_DUPs
WRS003: WRS003:
@ -542,18 +539,13 @@ WRS003:
;VERIFY SECTOR(S) ;VERIFY SECTOR(S)
HDD_5x.VERIFY: HDD_5x.VERIFY:
PUSH IY PUSH IY
SAFE_PORTY_2 SAFE_PORTY_2
PUSH IX PUSH IX
PUSH HL PUSH HL
CALL VRS000 CALL VRS000
POP HL POP HL
POP IX POP IX
EXX RESTORE_PORTY
POP BC
OUT (C),B
EXX
POP IY POP IY
RET RET
;[]================================================================[#54] ;[]================================================================[#54]
@ -679,9 +671,7 @@ CHS005: INC A
WAITPRT: WAITPRT:
LD BC,IDE.Read.Status LD BC,IDE.Read.Status
LD HL,#0000 ; § ¤¥à¦ª  ;!HARDCODE LD HL,#0000 ; § ¤¥à¦ª  ;!HARDCODE
.loop: PUSH HL .loop: PUSH HL
.loop2: IN A,(C) .loop2: IN A,(C)
AND D AND D
CP E CP E
@ -690,12 +680,12 @@ WAITPRT:
LD A,L LD A,L
OR H OR H
JP NZ,.loop2 JP NZ,.loop2
;
POP HL POP HL
DEC L DEC L
JR NZ,.loop JR NZ,.loop
;
.error: LD A,4 ;!HARDCODE error number .error: LD A,BIOS.Error.WaitPort
SCF SCF
RET RET
.ok: POP HL .ok: POP HL
@ -711,7 +701,7 @@ WAITPRT:
HDD_5x.DETECT: HDD_5x.DETECT:
CP #84 ;!HARDCODE max HDD drives (#80,#81,#82,#83) CP #84 ;!HARDCODE max HDD drives (#80,#81,#82,#83)
CCF CCF
RET C JR C,.error
LD HL,IDE.INIT_TBL_IDE0.DriveType LD HL,IDE.INIT_TBL_IDE0.DriveType
AND 3 AND 3
@ -736,5 +726,6 @@ HDD_5x.DETECT:
CP IDE.Device.HDD CP IDE.Device.HDD
RET Z RET Z
SCF SCF
.error: LD A,BIOS.Error.BadDrvNumber
RET RET
;[]================================================================[#57] ;[]================================================================[#57]

View File

@ -179,7 +179,6 @@ FN_HDD_READ_BPB:
RET C RET C
CALL HD_BPB_PREP CALL HD_BPB_PREP
RET C RET C
JR HD_RD_L1 JR HD_RD_L1
@ -251,12 +250,12 @@ HD_READ_CONT:
DUP 16 DUP 16
INI ; ¢á¥£® 16 à § INI - ®¯â¨¬ «ì­®. INI ; ¢á¥£® 16 à § INI - ®¯â¨¬ «ì­®.
EDUP EDUP
JP NZ,.loop_read1 JR NZ,.loop_read1
.loop_read2: .loop_read2:
DUP 16 DUP 16
INI ; ¢á¥£® 16 à § INI - ®¯â¨¬ «ì­®. INI ; ¢á¥£® 16 à § INI - ®¯â¨¬ «ì­®.
EDUP EDUP
JP NZ,.loop_read2 JR NZ,.loop_read2
LD A,H LD A,H
OR L OR L
@ -303,14 +302,14 @@ HD_WR_L2:
JP Z,HD_RET JP Z,HD_RET
LD BC,IDE.Write.Data LD BC,IDE.Write.Data
LD D,32 LD D,32 ;!HARDCODE § ¢¨á¨â ®â áçñâ稪  DUP ¢ HD_WR_LOOP
HD_WR_LOOP: HD_WR_LOOP:
DUP 16 DUP 16
OUTI ; ¢á¥£® 16 à § OUTI - ®¯â¨¬ «ì­®. OUTI ; ¢á¥£® 16 à § OUTI - ®¯â¨¬ «ì­®.
EDUP EDUP
DEC D DEC D
JP NZ,HD_WR_LOOP JR NZ,HD_WR_LOOP
LD A,H LD A,H
OR L OR L
@ -599,53 +598,51 @@ HD_CALC_SECS:
BIT 6,A BIT 6,A
JR NZ,HDD_LBA JR NZ,HDD_LBA
POP BC ; á­¨¬ ¥¬ §­ ç¥­¨¥ ¤«ï ª®à४⭮£® ret POP BC ; á­¨¬ ¥¬ §­ ç¥­¨¥ ¤«ï ª®à४⭮£® ret
;
LD A,XH LD A,XH
AND A AND A
SCF SCF
RET NZ ; ®è¨¡ª , ᫨誮¬ ¡®«ì让 HDD RET NZ ; ®è¨¡ª , ᫨誮¬ ¡®«ì让 HDD
; IX,DE -  ¡á®«îâ­ë© ­®¬¥à ᥪâ®à 
; IX,DE -  ¡á®«îâ­ë© ­®¬¥à ᥪâ®à 
PUSH IX PUSH IX
POP HL POP HL
;
IN A,(SLOT3) IN A,(SLOT3)
LD C,A LD C,A
LD A,SYS_PAGE LD A,SYS_PAGE
OUT (SLOT3),A OUT (SLOT3),A
LD A,C LD A,C
LD (SYS_PAGE.COPY_SLOT3),A LD (SYS_PAGE.COPY_SLOT3),A
; HL,DE - ­®¬¥à ᥪâ®à 
; HL,DE - ­®¬¥à ᥪâ®à  ; BC - ç¨á«® ᥪâ®à®¢ ­  樫¨­¤à¥
; BC - ç¨á«® ᥪâ®à®¢ ­  樫¨­¤à¥
LD BC,(SYS_PAGE.HD_IDF_ADR.sec_cyl) ; ç¨á«® ᥪâ®à®¢ ­  樫¨­¤à¥ LD BC,(SYS_PAGE.HD_IDF_ADR.sec_cyl) ; ç¨á«® ᥪâ®à®¢ ­  樫¨­¤à¥
LD A,16 ; HL,DE à §¤¥«¨âì ­  BC LD A,16 ; HL,DE à §¤¥«¨âì ­  BC
SCF SCF
DIV_LOOP: .DIV_LOOP:
EX DE,HL EX DE,HL
ADD HL,HL ADD HL,HL
EX DE,HL EX DE,HL
ADC HL,HL ADC HL,HL
;
SBC HL,BC ; áà ¢­¨âì HL ¨ BC SBC HL,BC ; áà ¢­¨âì HL ¨ BC
JR NC,NO_ADD ; ¯¥à¥­®á  ­¥ ¡ë«® - +1! JR NC,.NO_ADD ; ¯¥à¥­®á  ­¥ ¡ë«® - +1!
ADD HL,BC ADD HL,BC
DEC A DEC A
JR NZ,DIV_LOOP JR NZ,.DIV_LOOP
JR DIV_END JR .DIV_END
NO_ADD: .NO_ADD:
INC DE INC DE
DEC A DEC A
JR NZ,DIV_LOOP JR NZ,.DIV_LOOP
DIV_END: .DIV_END:
; DE - १ã«ìâ â, HL - ®áâ â®ª ; DE - १ã«ìâ â, HL - ®áâ â®ª
; DE - 樫¨­¤à ; DE - 樫¨­¤à
LD A,(SYS_PAGE.HD_IDF_ADR+12) ; !HARDCODE .sectors LD A,(SYS_PAGE.HD_IDF_ADR+12) ; !HARDCODE .sectors
; A - ç¨á«® ᥪâ®à®¢ ­  ¤®à®¦ª¥ ; A - ç¨á«® ᥪâ®à®¢ ­  ¤®à®¦ª¥
; HL - ­®¬¥à ᥪâ®à  ¢ 樫¨­¤à¥ ; HL - ­®¬¥à ᥪâ®à  ¢ 樫¨­¤à¥
LD B,0 LD B,0
LD C,A LD C,A
; LD BC,(MS_BPB+S_P_T) ; —ˆ‘‹Ž …ŠŽ<E28099>Ž <20>€ „Ž<E2809E>ކЅ ;LD BC,(MS_BPB+S_P_T) ; —ˆ‘‹Ž …ŠŽ<E28099>Ž <20>€ „Ž<E2809E>ކЅ
XOR A XOR A
HD_CALC_LOOP2: HD_CALC_LOOP2:
SBC HL,BC SBC HL,BC

Binary file not shown.