ZX_RAM_ID

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

View File

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

Binary file not shown.