...
This commit is contained in:
		
							parent
							
								
									c8d95662c8
								
							
						
					
					
						commit
						d3c7979b19
					
				| @ -1 +1 @@ | ||||
| Subproject commit 84d47b2818758fdceda21ecf2953324c1f339858 | ||||
| Subproject commit 713bcf1538ff822231da15aed4d8fb7611ebe205 | ||||
										
											Binary file not shown.
										
									
								
							| @ -44,7 +44,7 @@ | ||||
| ; 	POP	AF | ||||
| ; 	RET | ||||
| HD_BPB_PREP: | ||||
| 	; [ ] 27/01/2023 | ||||
| 	; [x] 27/01/2024 ⥯¥àì ०¨¬ ᯥªâà㬠 à ¡®â ¥â á «î¡ë¬ à §¤¥«®¬ HDD | ||||
| 	 ;LD	D,A | ||||
| 	 ;IN	A,(SLOT3) | ||||
| 	 ;EX	AF,AF' | ||||
| @ -238,7 +238,7 @@ FN_HDD_READ_BPB: | ||||
| 	CALL	HD_WAIT | ||||
| 	RET	C | ||||
| 	CALL	HD_BPB_PREP | ||||
| 	JR	NC,HD_RD_L1 | ||||
| 	JR	NC,FN_HDD_READ.L1 | ||||
| 	RET | ||||
| 
 | ||||
| 
 | ||||
| @ -254,7 +254,7 @@ FN_HDD_READ_NEXT: | ||||
| 	CALL HD_WAIT | ||||
| 	RET C | ||||
| 	CALL NEXT_ADD_SEC | ||||
| 	JR HD_RD_L1 | ||||
| 	JR FN_HDD_READ.L1 | ||||
| 
 | ||||
| 
 | ||||
| ; HL - BUFER, A - PAGE | ||||
| @ -266,44 +266,25 @@ FN_HDD_READ: | ||||
| 	CALL HD_WAIT | ||||
| 	CALL NC,HD_PREPARE | ||||
| 	RET C | ||||
| HD_RD_L1: | ||||
| 	EXX | ||||
| .L1:	EXX | ||||
| 	LD C,SLOT3 | ||||
| 	IN B,(C) | ||||
| 	EXX | ||||
| 	OUT (SLOT3),A | ||||
| 	EX AF,AF' | ||||
| 
 | ||||
| 	; | ||||
| 	SAFE_PORTY | ||||
| 
 | ||||
| 	; | ||||
| 	LD BC,IDE.Write.Command | ||||
| 	LD A,IDE.ATA.ReadSectorsWithRetry | ||||
| 	OUT (C),A | ||||
| HD_RD_L2: | ||||
| 	WAIT_HDD | ||||
| 
 | ||||
| .L2:	WAIT_HDD | ||||
| 	;BIT IDE.ControlBit.DataRequest,A | ||||
| 	AND IDE.ControlByte.DataRequest | ||||
| 	JR NZ,HD_READ_CONT | ||||
| 
 | ||||
| 	ZERO_PORTY | ||||
| HD_RET: | ||||
| 	EXX | ||||
| 	OUT (C),B | ||||
| 	EXX | ||||
| 	LD BC,IDE.Read.Error | ||||
| 	IN A,(C) | ||||
| 	AND A | ||||
| 	SCF | ||||
| 	RET NZ | ||||
| 
 | ||||
| 	EX AF,AF' | ||||
| 	AND A | ||||
| 	RET | ||||
| 
 | ||||
| HD_READ_CONT: | ||||
| 	JR Z,HD_RET_PortY | ||||
| 	; | ||||
| 	;HD_READ_CONT | ||||
| 	LD BC,IDE.Read.Data | ||||
| 
 | ||||
| .loop_read1: | ||||
| 	DUP 16 | ||||
| 	 INI								; ¢á¥£® 16 à § INI - ®¯â¨¬ «ì®. | ||||
| @ -314,21 +295,38 @@ HD_READ_CONT: | ||||
| 	 INI								; ¢á¥£® 16 à § INI - ®¯â¨¬ «ì®. | ||||
| 	EDUP | ||||
|         JR NZ,.loop_read2 | ||||
| 
 | ||||
| 	; | ||||
| 	LD A,H | ||||
| 	OR L | ||||
| 	JR NZ,HD_RD_L2 | ||||
| 
 | ||||
| 	JR NZ,.L2 | ||||
| 	; | ||||
| 	LD A,SYS_PAGE | ||||
| 	OUT (SLOT3),A | ||||
| 	EX AF,AF' | ||||
| 	LD HL,SYS_PAGE.RAMD_FAT | ||||
| 	LD H,high SYS_PAGE.RAMD_FAT | ||||
| 	LD L,A | ||||
| 	LD A,(HL) | ||||
| 	OUT (SLOT3),A | ||||
| 	EX AF,AF' | ||||
| 	LD HL,#C000							; !!!!! | ||||
| 	JR HD_RD_L2 | ||||
| 	JR .L2 | ||||
| 
 | ||||
| 
 | ||||
| HD_RET_PortY: | ||||
| 	ZERO_PORTY | ||||
| HD_RET:	EXX | ||||
| 	OUT (C),B | ||||
| 	EXX | ||||
| 	LD BC,IDE.Read.Error | ||||
| 	IN A,(C) | ||||
| 	AND A | ||||
| 	SCF | ||||
| 	RET NZ | ||||
| 	; | ||||
| 	EX AF,AF' | ||||
| 	AND A | ||||
| 	RET | ||||
| 
 | ||||
| 
 | ||||
| ; HL - BUFER, A - PAGE | ||||
| FN_HDD_WRITE: | ||||
| @ -357,7 +355,7 @@ HD_WR_L2: | ||||
| 	WAIT_HDD | ||||
| 
 | ||||
| 	BIT IDE.ControlBit.DataRequest,A | ||||
| 	JP Z,HD_RET | ||||
| 	JR Z,HD_RET | ||||
| 
 | ||||
|         LD	BC,IDE.Write.Data | ||||
|         LD	D,32	;!HARDCODE § ¢¨á¨â ®â áçñâ稪  DUP ¢ HD_WR_LOOP | ||||
| @ -376,7 +374,7 @@ HD_WR_LOOP: | ||||
| 	LD	A,SYS_PAGE | ||||
| 	OUT	(SLOT3),A | ||||
| 	EX	AF,AF' | ||||
| 	LD	HL,SYS_PAGE.RAMD_FAT | ||||
| 	LD	H,high SYS_PAGE.RAMD_FAT | ||||
| 	LD	L,A | ||||
| 	LD	A,(HL) | ||||
| 	OUT	(SLOT3),A | ||||
| @ -384,6 +382,7 @@ HD_WR_LOOP: | ||||
| 	LD	HL,#C000						;!!!!! | ||||
| 	JR	HD_WR_L2 | ||||
| 
 | ||||
| ; [ ] ¯®ª  à ¡®â ¥â ⮫쪮 á ®¤¨¬ ª  «®¬ (¯®-áâ à®¬ã) | ||||
| FN_HDD_RECAL: | ||||
| 	LD	A,IDE.Drive.Master | ||||
| 	LD	BC,IDE.Write.DeviceHead | ||||
| @ -407,34 +406,82 @@ FN_HDD_RECAL: | ||||
| ;	CALL HD_CMD_EXE | ||||
| ;	RET | ||||
| 
 | ||||
| 
 | ||||
| ; [x] 28/01/2024 à ¡®â ¥â á® ¢á¥¬¨ ª  « ¬¨ | ||||
| FN_HDD_TEST_IDE: | ||||
| 	LD	E,#00 | ||||
| 	LD	BC,IDE.Write.DeviceHead | ||||
| 	LD	A,IDE.Drive.Master | ||||
| 	OUT	(C),A | ||||
| 
 | ||||
| 	CALL	TEST_HDD_DRV | ||||
| 
 | ||||
| 	JR	NZ,NO_HDD1 | ||||
| 	SET	0,E | ||||
| NO_HDD1: | ||||
| 	LD	BC,IDE.Write.DeviceHead | ||||
| 	LD	A,IDE.Drive.Slave | ||||
| 	OUT	(C),A | ||||
| 
 | ||||
| 	CALL	TEST_HDD_DRV | ||||
| 
 | ||||
| 	JR	NZ,NO_HDD2 | ||||
| 	SET	1,E | ||||
| NO_HDD2: | ||||
| 	LD	A,E | ||||
| 	; TEST Secondary Chanel  | ||||
| 	LD	A,IDE.Chanel.Secondary | ||||
| 	OUT	(IDE.Chanel.Set),A | ||||
| 	CALL	.TEST_CHANEL | ||||
| 	SLA	E | ||||
| 	SLA	E | ||||
| 	; TEST Primary Chanel  | ||||
| 	LD	A,IDE.Chanel.Primary | ||||
| 	OUT	(IDE.Chanel.Set),A | ||||
| 	CALL	.TEST_CHANEL | ||||
| ; 	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||||
| ; 	LD	BC,IDE.Write.DeviceHead | ||||
| ; 	LD	A,IDE.Drive.Master | ||||
| ; 	OUT	(C),A | ||||
| ; 	; | ||||
| ; 	CALL	TEST_HDD_DRV | ||||
| ; 	; | ||||
| ; 	JR	NZ,.NO_HDD1 | ||||
| ; 	SET	0,E | ||||
| ; .NO_HDD1: | ||||
| ; 	LD	BC,IDE.Write.DeviceHead | ||||
| ; 	LD	A,IDE.Drive.Slave | ||||
| ; 	OUT	(C),A | ||||
| ; 	; | ||||
| ; 	CALL	TEST_HDD_DRV | ||||
| ; 	; | ||||
| ; 	JR	NZ,.NO_HDD2 | ||||
| ; 	SET	1,E | ||||
| ; .NO_HDD2: | ||||
| ; 	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||||
| ; | ||||
| ; 	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||||
| 	LD	C,SLOT3 | ||||
| 	IN	B,(C) | ||||
| 	LD	A,SYS_PAGE | ||||
| 	OUT	(SLOT3),A | ||||
| 	; | ||||
| 	LD	A,(SYS_PAGE.CURRENT_HDD) | ||||
| 	OUT	(C),B | ||||
| 	CP	#FF | ||||
| 	JR	Z,.exit | ||||
| 	AND	1 | ||||
| 	JR	Z,.exit | ||||
| 	LD	A,IDE.Chanel.Secondary | ||||
| 	OUT	(IDE.Chanel.Set),A | ||||
| ; 	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||||
| .exit:	LD	A,E | ||||
| 	AND	A | ||||
| 	SCF  | ||||
| 	RET	Z							; HDD absent ! | ||||
| 	AND	A | ||||
| 	RET  | ||||
| 
 | ||||
| .TEST_CHANEL: | ||||
| 	LD	BC,IDE.Write.DeviceHead | ||||
| 	LD	A,IDE.Drive.Master | ||||
| 	OUT	(C),A | ||||
| 	; | ||||
| 	CALL	TEST_HDD_DRV | ||||
| 	; | ||||
| 	JR	NZ,.NO_HDD1 | ||||
| 	SET	0,E | ||||
| .NO_HDD1: | ||||
| 	LD	BC,IDE.Write.DeviceHead | ||||
| 	LD	A,IDE.Drive.Slave | ||||
| 	OUT	(C),A | ||||
| 	; | ||||
| 	CALL	TEST_HDD_DRV | ||||
| 	; | ||||
| 	RET	NZ | ||||
| 	SET	1,E | ||||
| 	RET | ||||
| 	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||||
| 
 | ||||
| ;-----------------------------------[DIFFERENT] | ||||
| ; <20>¥ ¤®«¦  ¯®àâ¨âì ॣ¨áâà E!!! | ||||
| @ -446,7 +493,7 @@ TEST_HDD_DRV: | ||||
|  IF IDE_Optimization | ||||
| 	INC C | ||||
| 	OUT (C),H							; IDE.Write.Sector | ||||
| 
 | ||||
| 	; | ||||
| 	DEC C | ||||
| 	INC B | ||||
| 	IN A,(C)							; ????? IDE.Write.Counter+#100 | ||||
| @ -497,7 +544,7 @@ TEST_HDD_DRV: | ||||
| ; 	RET | ||||
| 
 | ||||
| 
 | ||||
| ; [ ] 07/01/2024 bit1: Primary/Secondary, bit0 - master/slave, bit2..3: ¨á¯®«ì§ãî騩áï à §¤¥« ¢ MBR | ||||
| ; [x] 07/01/2024 bit1: Primary/Secondary, bit0 - master/slave, bit2..3: ¨á¯®«ì§ãî騩áï à §¤¥« ¢ MBR | ||||
| ; !TODO ᤥ« âì à ¡®âã á ¯¥à¥¬¥ë¬¨ ¡¨®á  SYS_PAGE.IDE_0..3 | ||||
| FN_HDD_PART: | ||||
| 	DI | ||||
| @ -554,7 +601,7 @@ FN_HDD_PART: | ||||
| 	SCF | ||||
| 	JR	.exit | ||||
| 
 | ||||
| ; [ ] 27/01/2024  ¤ ¯â¨à®¢   ¤«ï ª®à४⮩ à ¡®âë á FN_HDD_PART | ||||
| ; [x] 27/01/2024  ¤ ¯â¨à®¢   ¤«ï ª®à४⮩ à ¡®âë á FN_HDD_PART | ||||
| FN_HDD_INIT: | ||||
| 	LD	C,SLOT3 | ||||
| 	IN	B,(C) | ||||
| @ -645,10 +692,6 @@ FN_HDD_INIT: | ||||
| 	OUT	(SLOT3),A | ||||
| 	LD	A,IDE.ATA.InitializeDeviceParameters			; SET HDD PARAMETERS | ||||
| 	CALL	HD_CMD_EXE | ||||
| 	; | ||||
| 	; | ||||
| 	; | ||||
| 	; | ||||
| 	RET | ||||
| HD_CMD_EXE: | ||||
| 	CALL	HD_WAIT | ||||
| @ -782,7 +825,7 @@ HD_CALC_SECS: | ||||
| 	AND	A | ||||
| 	RET | ||||
| 
 | ||||
| ; [ ] 27/01/2024 ⥯¥àì ०¨¬ ᯥªâà㬠 à ¡®â ¥â á «î¡ë¬ à §¤¥«®¬ HDD | ||||
| ; [x] 27/01/2024 ⥯¥àì ०¨¬ ᯥªâà㬠 à ¡®â ¥â á «î¡ë¬ à §¤¥«®¬ HDD | ||||
| SET_BPB_OFFSET: | ||||
| 	LD	A,SYS_PAGE | ||||
| 	LD	HL,SYS_PAGE.MS_BPB | ||||
| @ -804,7 +847,7 @@ SET_BPB_OFFSET: | ||||
| 	LD	B,A | ||||
| 	; | ||||
| 	LD	HL,SYS_PAGE.MS_BPB-16 + #01BE	;!HARDCODE ᬥ饨¥ ®â  ç «  ᥪâ®à  ¤«ï â ¡«¨æë à §¤¥«®¢ c ¯¥à¢ë¬ ᥪâ®à®¬ LBA ¤«ï ¯¥à¢®£® à §¤¥«  | ||||
| 	LD	DE,16					;!HARDCODE à §¬¥à ¯®«ï ®¯¨á â¥«ï à §¤¥«  | ||||
| 	LD	DE,16				;!HARDCODE à §¬¥à ¯®«ï ®¯¨á â¥«ï à §¤¥«  | ||||
| .loop:	ADD	HL,DE | ||||
| 	DJNZ	.loop | ||||
| 	; | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Anatoliy Belyanskiy
						Anatoliy Belyanskiy