+ READ_PORTS, * FN_HDD_PART и FN_HDD_INIT переделаны
This commit is contained in:
		
							parent
							
								
									84e81ef7df
								
							
						
					
					
						commit
						832cbf9460
					
				| @ -1 +1 @@ | ||||
| Subproject commit e7e58e7b816a25137a0a253321164e863bbe782e | ||||
| Subproject commit 5cb5d02cf145ff2d6d14fca5a5f9a5fb2ec6a673 | ||||
										
											Binary file not shown.
										
									
								
							| @ -235,8 +235,8 @@ TAB_FNS: | ||||
|         DB      low  CMOS_RD                            ; #F6  | ||||
|         DB      low  CMOS_WR                            ; #F7  | ||||
|         DB      low  SET_PORTS                          ; #F8  | ||||
|         DB      low  READ_PORTS                         ; #F9  !TODO | ||||
|         DB      low  WRITE_PORTS                        ; #FA  !TODO | ||||
|         DB      low  READ_PORTS                         ; #F9  [x] 26/01/2024 | ||||
|         DB      low     FN_RESERVED			; #FA  [x] 26/01/2024 ¥ à ¡®â «  ¨ ¥ 㦠, ¤ã¡«¨àã¥â SET_PORTS | ||||
|         DB      low  GOTO_SPEC                          ; #FB  Goto Spectrum! | ||||
|         DB      low     FN_RESERVED                     ; #FC  | ||||
|         DB      low  REINIT                             ; #FD  | ||||
| @ -428,7 +428,7 @@ TAB_FNS: | ||||
|         DB      high CMOS_WR        | ||||
|         DB      high SET_PORTS  | ||||
|         DB      high READ_PORTS     | ||||
|         DB      high WRITE_PORTS    | ||||
|         DB      high    FN_RESERVED | ||||
|         DB      high GOTO_SPEC      | ||||
|         DB      high    FN_RESERVED | ||||
|         DB      high REINIT       | ||||
|  | ||||
| @ -582,72 +582,94 @@ DCP_CONFIG: | ||||
| ;-----------------------------------------------------------------------; | ||||
| ; | ||||
| 
 | ||||
| ;----------------------------------------------------------------------; | ||||
| ;[x] 26/01/2024 | ||||
| READ_PORTS: | ||||
| 	CALL	SET_PORTS.Prepare | ||||
| 	LD	BC,0 | ||||
| 	IN	B,(C) | ||||
| 	JR	SET_PORTS.End | ||||
| 
 | ||||
| ;[x] 26/01/2024 | ||||
| ; WRITE_PORTS: | ||||
| ; 	SCF | ||||
| ; 	RET | ||||
| ;----------------------------------------------------------------------; | ||||
| 
 | ||||
| ; | ||||
| ;-----------------------------------------------------------------------; | ||||
| ;[x] ’¥¯¥àì íâ® ¥ 㦮: CALL from 3D13h! Žáâ®à®¦¥¥ á ¯à¥à뢠¨ï¬¨, «ãçè¥ £ á¨âì, ç⮡ ¥ ᡨâì ᨣ « DOS_ON | ||||
| ; in:  A - ¢ãâ२© ¯®àâ, B - § ç¥¨¥ ¤«ï § ¯¨á¨ ¢® ¢ãâ२© ¯®àâ | ||||
| ; out: B - áâ à®¥ § ç¥¨¥ ¢ãâ॥£® ¯®àâ ; <20>¥à¥¤ ¢ë室®¬ ¢®ááâ  ¢«¨¢ ¥âáï ª®ä  ¯à®¯¨á  ï ¢ CONFIG_DE. | ||||
| SET_PORTS: | ||||
|         EX      AF,AF' | ||||
| 	 ;[x] SET_PORTS: no need to call from #3D13 and DI. 31/12/23 | ||||
| 	  AND	A | ||||
| 	  LD	A,R | ||||
| 	  PUSH	AF | ||||
| 	  DI | ||||
| 	  CALL	DOS_ON | ||||
| 	 ; | ||||
|          LD     A,CNF_PORT.CNF_0 + ROM.BIOS | ||||
|          OUT    (SYS_PORT.ROM),A | ||||
| 	 ; | ||||
|          LD     C,SLOT2                                                 ; ¯®«ãç¨âì áâà ¨æã | ||||
|          IN     D,(C) | ||||
| 	 ; | ||||
|          LD     A,DCP_PAGE                                              ; ãáâ ®¢¨âì ®¢ãî | ||||
|          OUT    (C),A | ||||
| 	 ; | ||||
|          LD     A,(#8000)                                               ; á®åà ¨âì â® çâ® ¡ë«® | ||||
|          LD     L,A | ||||
|          LD     A,(#8200) | ||||
|          LD     H,A | ||||
|         EX      AF,AF'							; áâà ¨æ  | ||||
| 	CALL	.Prepare | ||||
| 	; | ||||
|         LD      (#8000),A                                               ; ãáâ ®¢¨âì ¢ãâ२© ¯®àâ | ||||
|         LD      (#8200),A | ||||
| 	EX	AF,AF' | ||||
| 	 LD	A,B | ||||
| 	 LD	BC,0 | ||||
| 	EX	AF,AF' | ||||
| 	; | ||||
|         EX      AF,AF' | ||||
|          LD     A,B | ||||
|          LD     BC,0 | ||||
|         EX      AF,AF' | ||||
| 	; —⥨¥ ¯®àâ  | ||||
| 	IN	A,(C) | ||||
| 	; ‡ ¯¨áì ¯®àâ  | ||||
| 	EX	AF,AF' | ||||
| 	 OUT	(C),A							; ãáâ ®¢¨âì ®¢®¥ § ç¥¨¥ ¯®àâ  | ||||
| 	EX	AF,AF' | ||||
| 	; | ||||
|         IN      A,(C) | ||||
| 	LD	B,A							; ¯à®è«®¥ á®áâ®ï¨¥ ¯®àâ  | ||||
| 	; | ||||
|         EX      AF,AF' | ||||
|          OUT    (C),A                                                   ; ãáâ ®¢¨âì ®¢®¥ § ç¥¨¥ ¯®àâ  | ||||
|         EX      AF,AF' | ||||
| .End:	LD	A,DCP_PAGE						; ãáâ ®¢¨âì DCP | ||||
| 	LD	C,SLOT2 | ||||
| 	OUT	(C),A | ||||
| 	LD	A,L | ||||
| 	LD	(#8000),A						; ¢¥àãâì ¯®àâ | ||||
| 	LD	A,H | ||||
| 	LD	(#8200),A						; ¢¥àãâì ¯®àâ | ||||
| 	; | ||||
|         LD      B,A | ||||
|         LD      A,L | ||||
|         LD      (#8000),A                                               ; ¢¥àãâì ¯®àâ | ||||
|         LD      A,H | ||||
|         LD      (#8200),A                                               ; ¢¥àãâì ¯®àâ | ||||
| 
 | ||||
|         LD      C,SLOT2 | ||||
|         LD      A,SYS_PAGE | ||||
|         OUT     (C),A | ||||
|         LD      A,(SYS_PAGE.CONFIG_DE-#4000) | ||||
|         OUT     (C),D                                                   ; ¢¥àãâì áâà ¨æã | ||||
|         OUT     (SYS_PORT.ROM),A | ||||
| 	LD	A,SYS_PAGE | ||||
| 	OUT	(C),A | ||||
| 	LD	A,(SYS_PAGE.CONFIG_DE-#4000) | ||||
| 	OUT	(C),D							; ¢¥àãâì áâà ¨æã | ||||
| 	OUT	(SYS_PORT.ROM),A | ||||
| 	; | ||||
| 	CALL	DOS_OFF | ||||
| 	; | ||||
| 	;[x] SET_PORTS: no need to call from #3D13 and DI. 31/12/23 | ||||
| 	 POP	AF | ||||
| 	 RET	PO | ||||
| 	 BIT	2,E | ||||
| 	 RET	Z | ||||
| 	 EI | ||||
| 	 RET | ||||
| 	 ; | ||||
| 	 ;AND	A | ||||
| 	 ;RET | ||||
| 	; | ||||
| .Prepare: | ||||
| 	EX	AF,AF' | ||||
| 	 ;[x] SET_PORTS: no need to call from #3D13 and DI. 31/12/23 | ||||
| 	  AND	A | ||||
| 	  LD	A,R | ||||
| 	  PUSH	AF | ||||
| 	  POP	DE | ||||
| 	  DI | ||||
| 	  CALL	DOS_ON | ||||
| 	 ; | ||||
| 	 LD	A,CNF_PORT.CNF_0 + ROM.BIOS | ||||
| 	 OUT	(SYS_PORT.ROM),A | ||||
| 	 ; | ||||
| 	 LD	C,SLOT2                                                 ; ¯®«ãç¨âì áâà ¨æã | ||||
| 	 IN	D,(C) | ||||
| 	 ; | ||||
| 	 LD	A,DCP_PAGE                                              ; ãáâ ®¢¨âì ®¢ãî | ||||
| 	 OUT	(C),A | ||||
| 	 ; | ||||
| 	 LD	A,(#8000)                                               ; á®åà ¨âì â® çâ® ¡ë«® | ||||
| 	 LD	L,A | ||||
| 	 LD	A,(#8200) | ||||
| 	 LD	H,A | ||||
| 	EX	AF,AF'							; áâà ¨æ  | ||||
| 	; | ||||
| 	LD	(#8000),A                                               ; ãáâ ®¢¨âì ¢ãâ२© ¯®àâ | ||||
| 	LD	(#8200),A | ||||
| 	OUT	(C),D                                                   ; ¢¥àãâì áâà ¨æã	 | ||||
| 	RET | ||||
| ;-----------------------------------------------------------------------; | ||||
| ; | ||||
| @ -596,15 +596,15 @@ SET_DOS_OFF: | ||||
| 
 | ||||
| ; | ||||
| FDD.SET720: | ||||
|         LD A,#01			;!HARDCODE  | ||||
|         OUT (#BD),A			;!HARDCODE  | ||||
|         LD A,FDD_Density.SET_720 | ||||
|         OUT (FDD_Density),A | ||||
|         RET | ||||
| ; | ||||
| 
 | ||||
| ; | ||||
| FDD.SET1440: | ||||
|         LD A,#21			;!HARDCODE  | ||||
|         OUT (#BD),A			;!HARDCODE  | ||||
|         LD A,FDD_Density.SET_1440 | ||||
|         OUT (FDD_Density),A | ||||
|         RET | ||||
| ; | ||||
| 
 | ||||
|  | ||||
| @ -7,32 +7,89 @@ | ||||
|  ENDM | ||||
| ;______________________________________________________________________: | ||||
| ; | ||||
| ;-- | ||||
| 
 | ||||
| ; GET_BPB_OFFSET: | ||||
| ; 	;LD A,SYS_PAGE | ||||
| ; 	;LD HL,MS_BPB | ||||
| ; 	PUSH	AF | ||||
| ; 	PUSH	HL | ||||
| ; 	LD	B,1 | ||||
| ; 	LD	IX,#0000 | ||||
| ; 	LD	DE,#0000 | ||||
| ; 	CALL	FN_HDD_READ | ||||
| ; 	POP	IX | ||||
| ; 	POP	AF | ||||
| ; 	PUSH	AF | ||||
| ; 	PUSH	IX | ||||
| ; 	LD	DE,#01BE	;!HARDCODE ᬥ饨¥ ®â  ç «  ᥪâ®à  ¤«ï â ¡«¨æë à §¤¥«®¢ | ||||
| ; 	ADD	IX,DE | ||||
| ; 	; | ||||
| ; 	EX	AF,AF' | ||||
| ; 	 IN	A,(SLOT3) | ||||
| ; 	EX	AF,AF' | ||||
| ; 	OUT	(SLOT3),A | ||||
| ; 	; | ||||
| ; 	LD	E,(IX+8)	; ¯¥à¢ë© ᥪâ®à (LBA)  ç «  à §¤¥«  (DWORD) | ||||
| ; 	LD	D,(IX+9) | ||||
| ; 	LD	L,(IX+10) | ||||
| ; 	LD	H,(IX+11) | ||||
| ; 	; | ||||
| ; 	EX	AF,AF' | ||||
| ; 	 OUT	(SLOT3),A | ||||
| ; 	EX	AF,AF'	 | ||||
| ; 	; | ||||
| ; 	PUSH	HL | ||||
| ; 	POP	IX | ||||
| ; 	POP	HL | ||||
| ; 	POP	AF | ||||
| ; 	RET | ||||
| HD_BPB_PREP: | ||||
| 	LD	D,A | ||||
| 	IN	A,(SLOT3) | ||||
| 	EX	AF,AF' | ||||
| 	LD	A,SYS_PAGE | ||||
| 	OUT	(SLOT3),A | ||||
| 	LD	A,(SYS_PAGE.HD_IDF_ADR.sectors) | ||||
| 	LD	E,A | ||||
| 	EX	AF,AF' | ||||
| 	OUT	(SLOT3),A | ||||
| 	LD	A,D | ||||
| 	LD	D,#00 | ||||
| 	LD	IX,#0000 | ||||
| 	LD	B,#01 | ||||
| 	; [ ] 27/01/2023 | ||||
| 	 ;LD	D,A | ||||
| 	 ;IN	A,(SLOT3) | ||||
| 	 ;EX	AF,AF' | ||||
| 	 ; LD	A,SYS_PAGE | ||||
| 	 ; OUT	(SLOT3),A | ||||
| 	 ; LD	A,(SYS_PAGE.HD_IDF_ADR.sectors) | ||||
| 	 ; LD	E,A | ||||
| 	 ;EX	AF,AF' | ||||
| 	 ;OUT	(SLOT3),A | ||||
| 	 ;LD	A,D | ||||
| 	 ;LD	D,#00 | ||||
| 	 ;LD	IX,#0000 | ||||
| 	 ;LD	B,#01 | ||||
| 
 | ||||
| 
 | ||||
| 	 LD	B,A | ||||
| 	 IN	A,(SLOT3) | ||||
| 	 EX	AF,AF' | ||||
| 	  LD	A,SYS_PAGE | ||||
| 	  OUT	(SLOT3),A | ||||
| 	  LD	A,(SYS_PAGE.CURRENT_HDD) | ||||
| 	  INC	A | ||||
| 	  JR	NZ,.configured | ||||
| 	  ; | ||||
| 	  LD	A,(SYS_PAGE.HD_IDF_ADR.sectors) | ||||
| 	  LD	E,A | ||||
| 	  LD	D,#00 | ||||
| 	  LD	IX,#0000 | ||||
| 	  JR	.done | ||||
| 	  ; | ||||
| .configured: | ||||
| 	  LD	IX,(SYS_PAGE.HDD_PARTITION_OFFSET+2) | ||||
| 	  LD	DE,(SYS_PAGE.HDD_PARTITION_OFFSET) | ||||
| .done:	 EX	AF,AF' | ||||
| 	 OUT	(SLOT3),A | ||||
| 	 LD	A,B | ||||
| 	 LD	B,#01 | ||||
| 	; | ||||
| HD_PREPARE: | ||||
| 	PUSH	AF | ||||
| 	PUSH	HL | ||||
| 	CALL	HD_CALC_SECS | ||||
| 	JR	NC,.L1 | ||||
| 	POP	HL | ||||
| 	POP	AF | ||||
| 	SCF  | ||||
| 	RET  | ||||
| 
 | ||||
| .L1:	LD A,B | ||||
| 	JR	C,.error | ||||
| 	; | ||||
| 	LD A,B | ||||
| 	LD BC,IDE.Write.Counter						; “áâ ®¢¨âì ç¨á«® ᥪâ®à®¢ ¤«ï § ¯¨á¨ | ||||
| 	OUT (C),A | ||||
| 
 | ||||
| @ -57,13 +114,16 @@ HD_PREPARE: | ||||
| 	AND #F0								; !!!!!  ¯®á¬®âà¥âì | ||||
| 	OR H | ||||
| 	INC B								; IDE.Write.DeviceHead | ||||
| 
 | ||||
| 	OUT (C),A | ||||
| 
 | ||||
| 	POP HL								; BUFER & PAGE | ||||
| 	POP AF | ||||
| 	AND A | ||||
| 	RET | ||||
| 	; | ||||
| .error:	POP	HL | ||||
| 	POP	AF | ||||
| 	SCF  | ||||
| 	RET  | ||||
| 
 | ||||
| 
 | ||||
| NEXT_ADD_SEC: | ||||
| @ -222,7 +282,8 @@ HD_RD_L1: | ||||
| HD_RD_L2: | ||||
| 	WAIT_HDD | ||||
| 
 | ||||
| 	BIT IDE.ControlBit.DataRequest,A | ||||
| 	;BIT IDE.ControlBit.DataRequest,A | ||||
| 	AND IDE.ControlByte.DataRequest | ||||
| 	JR NZ,HD_READ_CONT | ||||
| 
 | ||||
| 	ZERO_PORTY | ||||
| @ -404,45 +465,114 @@ TEST_HDD_DRV: | ||||
| 	IN A,(C)							; ????? IDE.Write.Sector+#100 | ||||
| 	CP H | ||||
| 	RET | ||||
| /* | ||||
| TEST_HDD_DRV: | ||||
| ; EXTENDED.ASM variant | ||||
| 	LD	HL,#00FF						;????? | ||||
| 	LD	BC,IDE.Write.CylinderLow | ||||
| 	OUT	(C),L | ||||
|  IF IDE_Optimization | ||||
| 	INC C | ||||
| 	OUT	(C),H							; IDE.Write.CylinderHigh | ||||
| 
 | ||||
| ; TEST_HDD_DRV: | ||||
| ; ; EXTENDED.ASM variant | ||||
| ; 	LD	HL,#00FF						;????? | ||||
| ; 	LD	BC,IDE.Write.CylinderLow | ||||
| ; 	OUT	(C),L | ||||
| ;  IF IDE_Optimization | ||||
| ; 	INC C | ||||
| ; 	OUT	(C),H							; IDE.Write.CylinderHigh | ||||
| 					 | ||||
| 	INC B | ||||
| 	DEC C | ||||
| 	IN	A,(C)							; ????? ’ãâ ॣ¨áâà BC = #0254 - çâ® §  ¯®àâ â ª®© ¨ çâ® ®ââ㤠 ¯à®ç¨â ¥âáï? | ||||
| 	CP	L | ||||
| 	RET	NZ | ||||
| 	INC C | ||||
| ; 	INC B | ||||
| ; 	DEC C | ||||
| ; 	IN	A,(C)							; ????? ’ãâ ॣ¨áâà BC = #0254 - çâ® §  ¯®àâ â ª®© ¨ çâ® ®ââ㤠 ¯à®ç¨â ¥âáï? | ||||
| ; 	CP	L | ||||
| ; 	RET	NZ | ||||
| ; 	INC C | ||||
| 
 | ||||
|  ELSE | ||||
| 	LD	BC,IDE.Write.CylinderHigh | ||||
| 	OUT	(C),H | ||||
| 	LD	BC,#0254						;???!!!! | ||||
| 	IN	A,(C) | ||||
| 	CP	L | ||||
| 	RET	NZ | ||||
| 	LD	BC,#0255						;???!!!! | ||||
|  ENDIF | ||||
| ;  ELSE | ||||
| ; 	LD	BC,IDE.Write.CylinderHigh | ||||
| ; 	OUT	(C),H | ||||
| ; 	LD	BC,#0254						;???!!!! | ||||
| ; 	IN	A,(C) | ||||
| ; 	CP	L | ||||
| ; 	RET	NZ | ||||
| ; 	LD	BC,#0255						;???!!!! | ||||
| ;  ENDIF | ||||
| 
 | ||||
| 	IN	A,(C)							; ????? ’ãâ ॣ¨áâà BC = #0255 - çâ® §  ¯®àâ â ª®© ¨ çâ® ®ââ㤠 ¯à®ç¨â ¥âáï? | ||||
| 	CP	H | ||||
| 	RET | ||||
| */ | ||||
| ; 	IN	A,(C)				; ????? ’ãâ ॣ¨áâà BC = #0255 - çâ® §  ¯®àâ â ª®© ¨ çâ® ®ââ㤠 ¯à®ç¨â ¥âáï? | ||||
| ; 	CP	H | ||||
| ; 	RET | ||||
| 
 | ||||
| 
 | ||||
| FN_HDD_INIT: | ||||
| 	LD	BC,IDE.Write.DeviceHead | ||||
| ; [ ] 07/01/2024 bit1: Primary/Secondary, bit0 - master/slave, bit2..3: ¨á¯®«ì§ãî騩áï à §¤¥« ¢ MBR | ||||
| ; !TODO ᤥ« âì à ¡®âã á ¯¥à¥¬¥ë¬¨ ¡¨®á  SYS_PAGE.IDE_0..3 | ||||
| FN_HDD_PART: | ||||
| 	DI | ||||
| 	PUSH	BC | ||||
| 	PUSH	HL | ||||
| 	; | ||||
| 	EX	AF,AF' | ||||
| 	IN	A,(SLOT3) | ||||
| 	EX	AF,AF' | ||||
| 	; | ||||
| 	LD	C,A | ||||
| 	AND	2 | ||||
| 	LD	A,IDE.Chanel.Primary | ||||
| 	JR	Z,.SET_CH | ||||
| 	LD	A,IDE.Chanel.Secondary | ||||
| .SET_CH: | ||||
| 	OUT	(IDE.Chanel.Set),A | ||||
| 	; | ||||
| 	LD	A,C | ||||
| 	PUSH	AF | ||||
| 	AND	1 | ||||
| 	; | ||||
| 	LD	A,IDE.Drive.Slave | ||||
| 	JR	NZ,.SET_Master_Slave | ||||
| 	; | ||||
| 	LD	A,IDE.Drive.Master | ||||
| .SET_Master_Slave: | ||||
| 	LD	BC,IDE.Write.DeviceHead | ||||
| 	OUT	(C),A | ||||
| 	CALL	TEST_HDD_DRV | ||||
| 	JR	NZ,.ABSENT | ||||
| 	JR	NZ,.Error | ||||
| 	; | ||||
| 	CALL	FN_HDD_INIT.L3 | ||||
| 	JR	C,.Error | ||||
| 	; | ||||
| 	POP	BC | ||||
| 	LD	A,SYS_PAGE | ||||
| 	OUT	(SLOT3),A | ||||
| 	;e tu | ||||
| 	LD	A,B | ||||
| 	LD	(SYS_PAGE.CURRENT_HDD),A | ||||
| 	; | ||||
| 	EX	AF,AF' | ||||
| 	OUT	(SLOT3),A | ||||
| 	; | ||||
| 	CALL	SET_BPB_OFFSET | ||||
| 	;AND	A | ||||
| .exit:	POP	HL | ||||
| 	POP	BC | ||||
| 	EI | ||||
| 	RET | ||||
| 	; | ||||
| .Error:	POP	AF | ||||
| 	SCF | ||||
| 	JR	.exit | ||||
| 
 | ||||
| ; [ ] 27/01/2024  ¤ ¯â¨à®¢   ¤«ï ª®à४⮩ à ¡®âë á FN_HDD_PART | ||||
| FN_HDD_INIT: | ||||
| 	LD	C,SLOT3 | ||||
| 	IN	B,(C) | ||||
| 	LD	A,SYS_PAGE | ||||
| 	OUT	(SLOT3),A | ||||
| 	; | ||||
| 	LD	A,(SYS_PAGE.CURRENT_HDD) | ||||
| 	OUT	(C),B | ||||
| 	INC	A | ||||
| 	JR	Z,FN_HDD_PART | ||||
| 	CALL	TEST_HDD_DRV | ||||
| 	SCF | ||||
| 	RET	NZ | ||||
| 	; LD	BC,IDE.Write.DeviceHead | ||||
| 	; LD	A,IDE.Drive.Master | ||||
| 	; OUT	(C),A | ||||
| 	; CALL	TEST_HDD_DRV | ||||
| 	; JR	NZ,.ABSENT | ||||
| 	; | ||||
| .L3:	WAIT_HDD | ||||
| 	LD	BC,IDE.Write.Command | ||||
| @ -450,17 +580,20 @@ FN_HDD_INIT: | ||||
| 	OUT	(C),A | ||||
| 	WAIT_HDD | ||||
| 	BIT	IDE.ControlBit.DataRequest,A | ||||
| 	JR	NZ,.L2 | ||||
| 	;JR	NZ,.L2 | ||||
| 	SCF  | ||||
| 	RET  | ||||
| .ABSENT: | ||||
| 	LD	BC,IDE.Write.DeviceHead | ||||
| 	LD	A,IDE.Drive.Slave | ||||
| 	OUT	(C),A | ||||
| 	CALL	TEST_HDD_DRV | ||||
| 	JR	Z,.L3 | ||||
| 	SCF  | ||||
| 	RET  | ||||
| 	RET 	Z | ||||
| 	;JR	NZ,.L2 | ||||
| 	;SCF  | ||||
| 	;RET  | ||||
| ; .ABSENT: | ||||
| ; 	LD	BC,IDE.Write.DeviceHead | ||||
| ; 	LD	A,IDE.Drive.Slave | ||||
| ; 	OUT	(C),A | ||||
| ; 	CALL	TEST_HDD_DRV | ||||
| ; 	JR	Z,.L3 | ||||
| ; 	SCF  | ||||
| ; 	RET  | ||||
| 	; | ||||
| .L2:	LD	BC,IDE.Read.Data | ||||
| 	LD	HL,SYS_PAGE.HD_IDF_ADR | ||||
| @ -503,13 +636,18 @@ FN_HDD_INIT: | ||||
| 	LD	BC,IDE.Write.DeviceHead | ||||
| 	OUT	(C),H | ||||
| 	LD	A,(SYS_PAGE.HD_IDF_ADR.sectors)			        ; ç¨á«® ᥪâ®à®¢ | ||||
| .HDD_CONFIGURED: | ||||
| 	LD	BC,IDE.Write.Counter | ||||
| 	OUT	(C),A | ||||
| 	LD	A,D | ||||
| 	OUT	(SLOT3),A | ||||
| 	LD	A,IDE.ATA.InitializeDeviceParameters			; SET HDD PARAMETERS | ||||
| 	;CALL	HD_CMD_EXE | ||||
| 	;RET | ||||
| 	CALL	HD_CMD_EXE | ||||
| 	; | ||||
| 	; | ||||
| 	; | ||||
| 	; | ||||
| 	RET | ||||
| HD_CMD_EXE: | ||||
| 	CALL	HD_WAIT | ||||
| 	RET	C | ||||
| @ -642,60 +780,44 @@ HD_CALC_SECS: | ||||
| 	AND	A | ||||
| 	RET | ||||
| 
 | ||||
| ; [ ] 07/01/2024 bit0: Primary/Secondary, bit1 - master/slave, bit2..3: ¨á¯®«ì§ãî騩áï à §¤¥« ¢ MBR | ||||
| ; !TODO ᤥ« âì à ¡®âã á ¯¥à¥¬¥ë¬¨ ¡¨®á  SYS_PAGE.IDE_0..3 | ||||
| FN_HDD_PART: | ||||
| 	DI | ||||
| 	PUSH	BC | ||||
| 	PUSH	HL | ||||
| 	; | ||||
| 	EX	AF,AF' | ||||
| 	IN	A,(SLOT3) | ||||
| 	EX	AF,AF' | ||||
| 	; | ||||
| 	LD	C,A | ||||
| 	AND	1 | ||||
| 	LD	A,IDE.Chanel.Primary | ||||
| 	JR	Z,.SET_CH | ||||
| 	LD	A,IDE.Chanel.Secondary | ||||
| .SET_CH: | ||||
| 	OUT	(IDE.Chanel.Set),A | ||||
| 	; | ||||
| 	LD	A,C | ||||
| 	PUSH	AF | ||||
| 	AND	2 | ||||
| 	; | ||||
| 	LD	A,IDE.Drive.Slave | ||||
| 	JR	NZ,.SET_Master_Slave | ||||
| 	; | ||||
| 	LD	A,IDE.Drive.Master | ||||
| .SET_Master_Slave: | ||||
| 	LD	BC,IDE.Write.DeviceHead | ||||
| 	OUT	(C),A | ||||
| 	CALL	TEST_HDD_DRV | ||||
| 	JR	NZ,.Error | ||||
| 	CALL	FN_HDD_INIT.L3 | ||||
| 	JR	C,.Error | ||||
| 	; | ||||
| 	POP	BC | ||||
| ; [ ] 27/01/2024 ⥯¥àì ०¨¬ ᯥªâà㬠 à ¡®â ¥â á «î¡ë¬ à §¤¥«®¬ HDD | ||||
| SET_BPB_OFFSET: | ||||
| 	LD	A,SYS_PAGE | ||||
| 	OUT	(SLOT3),A | ||||
| 	; | ||||
| 	LD	A,B | ||||
| 	LD	(SYS_PAGE.CURRENT_HDD),A | ||||
| 	LD	HL,SYS_PAGE.MS_BPB | ||||
| 	LD	IX,#0000 | ||||
| 	LD	DE,#0000 | ||||
| 	LD	B,1 | ||||
| 	CALL	FN_HDD_READ | ||||
| 	; | ||||
| 	EX	AF,AF' | ||||
| 	 IN	A,(SLOT3) | ||||
| 	EX	AF,AF' | ||||
| 	OUT	(SLOT3),A | ||||
| 	; | ||||
| 	AND	A | ||||
| .exit:	POP	HL | ||||
| 	POP	BC | ||||
| 	EI | ||||
| 	RET | ||||
| 	LD	A,(SYS_PAGE.CURRENT_HDD) | ||||
| 	RRCA | ||||
| 	RRCA | ||||
| 	AND	3 | ||||
| 	INC	A | ||||
| 	LD	B,A | ||||
| 	; | ||||
| .Error:	POP	AF | ||||
| 	SCF | ||||
| 	JR	.exit | ||||
| 	LD	HL,SYS_PAGE.MS_BPB-16 + #01BE	;!HARDCODE ᬥ饨¥ ®â  ç «  ᥪâ®à  ¤«ï â ¡«¨æë à §¤¥«®¢ c ¯¥à¢ë¬ ᥪâ®à®¬ LBA ¤«ï ¯¥à¢®£® à §¤¥«  | ||||
| 	LD	DE,16					;!HARDCODE à §¬¥à ¯®«ï ®¯¨á â¥«ï à §¤¥«  | ||||
| .loop:	ADD	HL,DE | ||||
| 	DJNZ	.loop | ||||
| 	; | ||||
| 	LD	A,8 | ||||
| 	ADD	L | ||||
| 	LD	L,A | ||||
| 	LD	DE,SYS_PAGE.HDD_PARTITION_OFFSET | ||||
| 	LD	C,4 | ||||
| 	LDIR | ||||
| 	; | ||||
| 	EX	AF,AF' | ||||
| 	 OUT	(SLOT3),A | ||||
| 	EX	AF,AF'	 | ||||
| 	RET | ||||
| 
 | ||||
| ; ENDMODULE | ||||
| ;************************************************ | ||||
| 
 | ||||
|  | ||||
| @ -271,14 +271,14 @@ FN_TURBO: | ||||
| 
 | ||||
| ;!FIXIT ¬¥ï¥¬ ¯«®â®áâì - ¬¥ï¥¬ ¢ á¨á⥬®© áâà ¨æ¥ ¨äã ®¡ í⮬ | ||||
| .SET_FDD_720: | ||||
| 	LD A,1 | ||||
| 	OUT (#BD),A                                                     ; !HARDCODE | ||||
| 	LD A,FDD_Density.SET_720 | ||||
| 	OUT (FDD_Density),A | ||||
| 	AND A | ||||
| 	RET | ||||
| ;!FIXIT ¬¥ï¥¬ ¯«®â®áâì - ¬¥ï¥¬ ¢ á¨á⥬®© áâà ¨æ¥ ¨äã ®¡ í⮬ | ||||
| .SET_FDD_1440: | ||||
| 	LD A,#21 | ||||
| 	OUT (#BD),A                                                     ; !HARDCODE | ||||
| 	LD A,FDD_Density.SET_1440 | ||||
| 	OUT (FDD_Density),A | ||||
| 	AND A | ||||
| 	RET | ||||
| 
 | ||||
| @ -308,18 +308,14 @@ FN_TURBO: | ||||
| 	RET | ||||
| ;----------------------------------------------------------------------; | ||||
| 
 | ||||
| ;----------------------------------------------------------------------; | ||||
| READ_PORTS:                                                             ; !TODO ᤥ« âì | ||||
| WRITE_PORTS:                                                            ; !TODO ᤥ« âì | ||||
|         SCF | ||||
|         RET | ||||
| ;----------------------------------------------------------------------; | ||||
| 
 | ||||
| ;----------------------------------------------------------------------; | ||||
| ;!TODO | ||||
| ;FN_GET_SYS_VAR: | ||||
| ; ‚室:  HL - ®¬¥à á¨á⥬®© ¯¥à¥¬¥®© | ||||
| ; ‚ë室: HL - § ç¥¨¥ á¨á⥬®© ¯¥à¥¬¥®© | ||||
| ;	RET | ||||
| ;----------------------------------------------------------------------; | ||||
| 
 | ||||
| 
 | ||||
| ;!TODO ᪮¬¯®®¢ âì | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Anatoliy Belyanskiy
						Anatoliy Belyanskiy