переделка AUTOIDE
This commit is contained in:
		
							parent
							
								
									0ef0c41481
								
							
						
					
					
						commit
						4a3574fe3f
					
				| @ -1 +1 @@ | ||||
| Subproject commit 25ac1c89f4ce070e041437ddbcdd18ab2ab223be | ||||
| Subproject commit 8371051031cac61e25740ba6cf9f2acacdc783b7 | ||||
| @ -300,8 +300,9 @@ RW_ATA_SECTORs:	PUSH	BC		;  | ||||
| 		POP	BC		; ¯à¨§ ª short/long ¢ C | ||||
| 		RET	C | ||||
| 		; | ||||
| 		EXX  | ||||
| 		 CALL	WAITPRT | ||||
| 		EXX | ||||
| 		 LD	DE,256*(IDE.CtrlByte.Busy+IDE.CtrlByte.Ready) + IDE.CtrlByte.Ready | ||||
| 		 CALL	WAITPRT.custom | ||||
| 		EXX  | ||||
| 		RET	C | ||||
| 		; | ||||
| @ -547,8 +548,9 @@ ATA_5x_VERIFY:	PUSH	IY | ||||
| .VERIFY:	LD	C,IDE.Device.HDD | ||||
| 		CALL	SELECT_DRIVE | ||||
| 		RET	C | ||||
| 		EXX  | ||||
| 		 CALL	WAITPRT | ||||
| 		EXX | ||||
| 		 LD	DE,256*(IDE.CtrlByte.Busy+IDE.CtrlByte.Ready) + IDE.CtrlByte.Ready | ||||
| 		 CALL	WAITPRT.custom | ||||
| 		EXX  | ||||
| 		RET	C | ||||
| 		;PUSH	DE | ||||
| @ -664,7 +666,7 @@ DIV32X:	;HL:DE / BC => DE:IX HL-OSTATOK | ||||
| ; D - MASK | ||||
| ; E - PATTERN | ||||
| ; !!! ¥ª®â®àë¥ äãªæ¨¨  ¤¥îâáï, çâ®   ¢ë室¥ ¢á¥£¤  ZF | ||||
| WAITPRT:	LD	DE,256*(IDE.CtrlByte.Busy+IDE.CtrlByte.Ready+IDE.CtrlByte.Error)+IDE.CtrlByte.Ready | ||||
| WAITPRT:	LD	DE,256*(IDE.CtrlByte.Busy+IDE.CtrlByte.Ready+IDE.CtrlByte.Error) + IDE.CtrlByte.Ready | ||||
| .custom:	LD	BC,IDE.Read.Status | ||||
| 		LD	HL,#0000		; § ¤¥à¦ª  ;!HARDCODE | ||||
| 		; | ||||
|  | ||||
| @ -51,12 +51,14 @@ SELECT_DRIVE:	AND	#0F | ||||
| 		 LD	BC,IDE.Write.DeviceHead | ||||
| 		 OUT	(C),A | ||||
| 		 ; | ||||
| 		 LD	A,high IDE.Read.Status | ||||
| .del_me:	 LD	A,high IDE.Read.Status | ||||
| 		 IN	A,(low IDE.Read.Status) | ||||
| 		 AND	IDE.CtrlByte.Busy | ||||
| 		 JR	Z,.notBusy | ||||
| 		 LD	B,32 | ||||
| 		 DJNZ	$ | ||||
| 		 ; 漭摵兒恥<E58592>言 <20>丰鄏左 | ||||
| 		  ;JR	NZ,.del_me | ||||
| 		  JR	Z,.notBusy | ||||
| 		  LD	B,32 | ||||
| 		  DJNZ	$ | ||||
| 		 ; | ||||
| .notBusy:	 LD	A,H | ||||
| 		EXX  | ||||
|  | ||||
| @ -96,6 +96,7 @@ IDE3		EQU	#C1D8 | ||||
| HALT: | ||||
| .Time_2s	EQU 100 | ||||
| .SMALL		EQU 200		; 04 ᥪ | ||||
| .MEDIUM		EQU 400		; 08 ᥪ | ||||
| .BIG		EQU 1550	; 31 ᥪ | ||||
| WAIT: | ||||
| .IDE		EQU #0000 | ||||
| @ -137,7 +138,7 @@ WAIT: | ||||
|  ENDM | ||||
| 
 | ||||
| /////////////////////////////////////////////////////////////////////[v] | ||||
| START:	CALL	SetUP_CHANELS | ||||
| START:	;CALL	Nop_CHANELS | ||||
| 	; | ||||
| 	IN	A,(SLOT3) | ||||
| 	EX	AF,AF' | ||||
| @ -172,8 +173,8 @@ START:	CALL	SetUP_CHANELS | ||||
| 	;[x] save hdd parameters to cmos for "setup" in settings | ||||
| 	 CALL	WRITING | ||||
| 	; | ||||
| 	CALL	ScreenPOS.CRLF | ||||
| 	RET | ||||
| 	JP	ScreenPOS.CRLF | ||||
| 	;RET | ||||
| /////////////////////////////////////////////////////////////////////[^] | ||||
| 
 | ||||
| 
 | ||||
| @ -200,7 +201,6 @@ AUTODETECT: | ||||
| 
 | ||||
| 
 | ||||
| /////////////////////////////////////////////////////////////////////[v] | ||||
| ; !HARDCODE § ¬¥¨âì ç¨á«    ¬¥âª¨ ¢ í⮩ ¯à®æ¥¤ãॠ| ||||
| STEP1_GETCMOS: | ||||
| 	LD	(MasterSlave),A | ||||
| 	LD	H,A		;SAVE DRIVE NUMBER | ||||
| @ -225,12 +225,12 @@ STEP1_GETCMOS: | ||||
| 	LD	L,msgStrings.detectIdeSecMA | ||||
| 	JR	Z,.choose | ||||
| 	; | ||||
| 	DEC	A | ||||
| 	;DEC	A | ||||
| 	LD	BC,CMOS_CELL.DrivesSetup_2.Mask.SecIDEslave | ||||
| 	LD	L,msgStrings.detectIdeSecSL | ||||
| 	JR	Z,.choose | ||||
| 	SCF | ||||
| 	RET | ||||
| 	;JR	Z,.choose | ||||
| 	;SCF | ||||
| 	;RET | ||||
| 	;0 - AUTODETECT | ||||
| 	;1 - GETTING FROM SETUP | ||||
| 	;2 - CD-ROM (ATAPI device) | ||||
| @ -269,7 +269,7 @@ AUTODETECTING:	CALL	DETECTORS.CheckChanel | ||||
| 		JR	C,.IDE_ABSENT | ||||
| 
 | ||||
| 		CALL	Bug31SecCheck | ||||
| 		JR	C,.next | ||||
| 		JR	NC,.next | ||||
| 
 | ||||
| 		LD	HL,PAUSES.HALT.BIG | ||||
| 		CALL	BITS_WAITS.Clear_BUSY | ||||
| @ -286,7 +286,6 @@ AUTODETECTING:	CALL	DETECTORS.CheckChanel | ||||
| 		CALL	DETECTORS.IdentDevCheck | ||||
| 		JR	C,.IDE_ABSENT | ||||
| 		JR	Z,.Its_ATA | ||||
| 
 | ||||
| 		; enter point for ATAPI in setup		 | ||||
| .Its_ATAPI:	CALL	DETECTORS.IdentPDevChk | ||||
| 		JR	C,.IDE_ABSENT | ||||
| @ -304,11 +303,15 @@ AUTODETECTING:	CALL	DETECTORS.CheckChanel | ||||
| 		;	 | ||||
| .IDE_ABSENT:	LD	A,IDE.Device.NONE | ||||
| 		LD	(IDEDEV),A	 | ||||
| 		LD	A,IDE.CMD.ATA.Nop | ||||
|  		LD	BC,IDE.Write.Command | ||||
|  		OUT	(C),A | ||||
| 		DEC	B | ||||
| 		IN	A,(C)			; IDE.Read.Status | ||||
| 		;LD	A,IDE.CMD.ATA.Nop | ||||
|  		;LD	BC,IDE.Write.Command | ||||
|  		;OUT	(C),A | ||||
| 		;; | ||||
| 		; ;DEC	B | ||||
| 		; PAUSE_DJNZ 0 | ||||
| 		; LD	BC,IDE.Read.Status | ||||
| 		;; | ||||
| 		;IN	A,(C)			; IDE.Read.Status | ||||
| 		SCF  | ||||
| 		RET  | ||||
| /////////////////////////////////////////////////////////////////////[^] | ||||
| @ -337,7 +340,7 @@ SETUP_FROM_CMOS: | ||||
| 	LDIR  | ||||
| 	; | ||||
| 	CALL	Bug31SecCheck | ||||
| 	JR	C,.step2 | ||||
| 	JR	NC,.step2 | ||||
| 	; | ||||
| 	LD	HL,PAUSES.HALT.BIG | ||||
| 	CALL	BITS_WAITS.Clear_BUSY | ||||
| @ -447,8 +450,9 @@ IDESPEC:	IN	A,(SLOT3) | ||||
| 		 LD	(IY+IDE.HDD_INIT_TABLE.MediaParameters),%0000'0001 | ||||
| 		 LD	B,100	; áçñâ稪 ¯®¯ë⮪ (1 ¯®¯ë⪠ - 1 HALT) | ||||
| .get_error_loop: PUSH	BC | ||||
| 		 LD	HL,ATAPI_CMD_PACKET.TEST_UNIT_READY | ||||
| 		 CALL	EXEC_PACKET_COMMAND.start | ||||
| 		 ;LD	HL,ATAPI_CMD_PACKET.TEST_UNIT_READY | ||||
| 		 ;CALL	EXEC_PACKET_COMMAND.start | ||||
| 		 CALL	EXEC_TEST_CMD | ||||
| 		 POP	BC | ||||
| 		 JR	NC,.s_size | ||||
| 		 ; | ||||
| @ -458,7 +462,7 @@ IDESPEC:	IN	A,(SLOT3) | ||||
| 		 ; | ||||
| 		 HALT | ||||
| 		 DJNZ	.get_error_loop | ||||
| 		 ; | ||||
| 		; | ||||
| 		; [ ] sector size ATAPI | ||||
| .s_size:	 LD	DE,IDENTIFY_DEVICE_BUFFER.ReservedWord224	; ¯à®á⮠㦥 ¡ë« ¡ãä¥à | ||||
| 		 CALL	ATAPI_READ_CAPACITY_DATA | ||||
| @ -541,11 +545,6 @@ BITS_WAITS: | ||||
| 	; Pause for clear BUSY and DATA REQUEST | ||||
| .Clear_BUSY:	LD	BC,IDE.Read.Status | ||||
| 		IN	A,(C) | ||||
| 		;!TEST for normal bus with pull-ups | ||||
| 		 ;CP	#FF | ||||
| 		 ;SCF | ||||
| 		 ;RET	Z | ||||
| 		; | ||||
| 		AND	IDE.CtrlByte.Busy; + IDE.CtrlByte.DataRequest | ||||
| 		RET	Z | ||||
| 		; | ||||
| @ -607,16 +606,17 @@ SKIPKEY: | ||||
| 	RET	Z | ||||
| 	EXX  | ||||
| 	 LD	HL,#3E00        ;!HARDCODE | ||||
| 	 AND	A | ||||
| 	 XOR	A | ||||
| 	 SBC	HL,DE | ||||
| 	EXX  | ||||
| 	SCF  | ||||
| 	CCF  | ||||
| 	RET	NZ | ||||
| 	LD	A,0 | ||||
| 	;A=0 | ||||
| 	LD	(SKIP),A | ||||
| 	SCF  | ||||
| 	RET  | ||||
| 	INC	A | ||||
| 	SCF | ||||
| 	RET		;ZF=0, CF=1  | ||||
| /////////////////////////////////////////////////////////////////////[^] | ||||
| 
 | ||||
| 
 | ||||
| @ -664,9 +664,43 @@ SaveToCMOS: | ||||
| 	JP	WRITCMS | ||||
| /////////////////////////////////////////////////////////////////////[^] | ||||
| 
 | ||||
| 
 | ||||
| /////////////////////////////////////////////////////////////////////[v] | ||||
| RESET_Slave_ATAPI: | ||||
| ; Check bug with 31 sec freeze | ||||
| ; Bug31SecCheck:	LD	A,(MasterSlave) | ||||
| ; 		AND	1 | ||||
| ; 		RET	NZ | ||||
| ; 		; | ||||
| ; 		LD	HL,PAUSES.HALT.Time_2s | ||||
| ; 		CALL	BITS_WAITS.Clear_BUSY | ||||
| ; 		CCF | ||||
| ; 		RET	C | ||||
| ; 		; | ||||
| ; .RESET_Slave_ATAPI: | ||||
| ; 		LD	A,IDE.Drive.Slave | ||||
| ; 		LD	BC,IDE.Write.DeviceHead | ||||
| ; 		OUT	(C),A | ||||
| ; 		PAUSE_DJNZ 16 | ||||
| ; 		LD	BC,IDE.Write.Command | ||||
| ; 		LD	A,IDE.CMD.ATAPI.Reset | ||||
| ; 		OUT	(C),A | ||||
| ; 		PAUSE_DJNZ 16 | ||||
| ; 		LD	A,IDE.Drive.Master | ||||
| ; 		LD	BC,IDE.Write.DeviceHead | ||||
| ; 		OUT	(C),A | ||||
| ; 		RET | ||||
| /////////////////////////////////////////////////////////////////////[^] | ||||
| /////////////////////////////////////////////////////////////////////[v] | ||||
| ; Check bug with 31 sec freeze | ||||
| Bug31SecCheck:	LD	A,(MasterSlave) | ||||
| 		AND	1 | ||||
| 		RET	Z | ||||
| 		; | ||||
| 		LD	HL,PAUSES.HALT.Time_2s | ||||
| 		CALL	BITS_WAITS.Clear_BUSY | ||||
| 		RET	NC | ||||
| 		JR	NZ,.skip | ||||
| 		; | ||||
| .RESET_Slave_ATAPI: | ||||
| 		LD	A,IDE.Drive.Slave | ||||
| 		LD	BC,IDE.Write.DeviceHead | ||||
| 		OUT	(C),A | ||||
| @ -679,40 +713,26 @@ RESET_Slave_ATAPI: | ||||
| 		LD	BC,IDE.Write.DeviceHead | ||||
| 		OUT	(C),A | ||||
| 		RET | ||||
| 		; | ||||
| .skip:		POP	BC			; ¡ « á á⥪  | ||||
| 		JP	AUTODETECTING.IDE_ABSENT | ||||
| /////////////////////////////////////////////////////////////////////[^] | ||||
| 
 | ||||
| 
 | ||||
| /////////////////////////////////////////////////////////////////////[v] | ||||
| ; Check bug with 31 sec freeze | ||||
| Bug31SecCheck:	LD	A,(MasterSlave) | ||||
| 		AND	1 | ||||
| 		RET	NZ | ||||
| 		; | ||||
| 		LD	HL,PAUSES.HALT.Time_2s | ||||
| 		CALL	BITS_WAITS.Clear_BUSY | ||||
| 		CCF | ||||
| GETPARAM:	LD	HL,PAUSES.WAIT.IDE | ||||
| 		LD	DE,IDE.CtrlByte.DataRequest * 256 + IDE.CtrlByte.DataRequest | ||||
| 		CALL	BITS_WAITS.WAIT_PRT | ||||
| 		RET	C | ||||
| 		LD	BC,IDE.Read.Data | ||||
| 		LD	HL,IDENTIFY_DEVICE_BUFFER | ||||
| 		INIR  | ||||
| 		INIR  | ||||
| 		CALL	IDESPEC | ||||
| 		; [x] save hdd parameters to cmos for "setup" in settings | ||||
| 		 CALL	SaveToCMOS | ||||
| 		; | ||||
| 		JP	RESET_Slave_ATAPI | ||||
| /////////////////////////////////////////////////////////////////////[^] | ||||
| 
 | ||||
| 
 | ||||
| /////////////////////////////////////////////////////////////////////[v] | ||||
| GETPARAM: | ||||
| 	LD	HL,PAUSES.WAIT.IDE | ||||
| 	LD	DE,IDE.CtrlByte.DataRequest * 256 + IDE.CtrlByte.DataRequest | ||||
| 	CALL	BITS_WAITS.WAIT_PRT | ||||
| 	RET	C | ||||
| 	LD	BC,IDE.Read.Data | ||||
| 	LD	HL,IDENTIFY_DEVICE_BUFFER | ||||
| 	INIR  | ||||
| 	INIR  | ||||
| 	CALL	IDESPEC | ||||
| 	; [x] save hdd parameters to cmos for "setup" in settings | ||||
| 	 CALL	SaveToCMOS | ||||
| 	; | ||||
| 	AND	A | ||||
| 	RET  | ||||
| 		AND	A | ||||
| 		RET  | ||||
| /////////////////////////////////////////////////////////////////////[^] | ||||
| 
 | ||||
| 
 | ||||
| @ -747,13 +767,16 @@ DETECTORS: | ||||
| 		 | ||||
| 		PAUSE_DJNZ 0 | ||||
| 		 | ||||
| 		LD	HL,PAUSES.HALT.SMALL | ||||
| 		;LD	HL,PAUSES.HALT.SMALL | ||||
| 		LD	HL,PAUSES.HALT.MEDIUM | ||||
| 		LD	BC,IDE.Read.Status | ||||
| 		;DEC	B | ||||
| 		; | ||||
| .loop:		IN	A,(C) | ||||
| 		SCF | ||||
| 		RET	Z | ||||
| 		; old CF bug fix | ||||
| 		 CP	IDE.CtrlByte.Ready + IDE.CtrlByte.SeekComplete | ||||
| 		 RET	Z | ||||
| 		; | ||||
| 		AND	IDE.CtrlByte.Busy + IDE.CtrlByte.DataRequest + IDE.CtrlByte.Error | ||||
| 		CP	IDE.CtrlByte.Error | ||||
| @ -763,20 +786,19 @@ DETECTORS: | ||||
| 		DEC	HL | ||||
| 		LD	A,H | ||||
| 		OR	L | ||||
| 		;SCF | ||||
| 		;RET	Z			; Absent | ||||
| 		JR	Z,.nop_exit | ||||
| 		;JR	Z,.nop_exit | ||||
| 		 SCF | ||||
| 		 RET	Z			; Absent | ||||
| 		; | ||||
| 		CALL	SKIPKEY | ||||
| 		RET	C			; Skipped = Absent | ||||
| 		; | ||||
| 		JR	.loop | ||||
| 		; | ||||
| .nop_exit:	IN	A,(C) | ||||
| 		CP	IDE.CtrlByte.Ready + IDE.CtrlByte.SeekComplete | ||||
| 		RET	Z			; old CF bug fix | ||||
| 		SCF | ||||
| 		RET				; Absent | ||||
| ; .nop_exit:	IN	A,(C) | ||||
| ; 		CP	IDE.CtrlByte.Ready + IDE.CtrlByte.SeekComplete | ||||
| ; 		RET	Z			; old CF bug fix | ||||
| ; 		SCF | ||||
| ; 		RET				; Absent | ||||
| ;-------; | ||||
| 
 | ||||
| ;-------; | ||||
| @ -808,10 +830,31 @@ DETECTORS: | ||||
| .non_ATA:	LD	BC,IDE.Read.Error | ||||
| 		IN	A,(C) | ||||
| 		AND	IDE.ErrorByte.Abort | ||||
| 		RET	NZ			; ATAPI | ||||
| 		; check signature #0114EB | ||||
| 		 ;RET	NZ			; ATAPI | ||||
| 		 ;SCF | ||||
| 		 ;RET				; Absent | ||||
| 		 SCF | ||||
| 		 RET	Z			; Absent | ||||
| 		 LD	C,low IDE.Read.Sector | ||||
| 		 IN	A,(C) | ||||
| 		 DEC	A | ||||
| 		 ;CF=1 | ||||
| 		 RET	NZ | ||||
| 		 ; | ||||
| 		 INC	C			; LD BC,IDE.Read.CylinderLow | ||||
| 		 IN	L,(C) | ||||
| 		 INC	C			; LD BC,IDE.Read.CylinderHigh | ||||
| 		 IN	H,(C) | ||||
| 		 ;AND	A | ||||
| 		 LD	BC,#EB14 - 1	; CF=1 | ||||
| 		 SBC	HL,BC | ||||
| 		 SCF | ||||
| 		 RET	NZ | ||||
| 		 ;A=0, CF=1 | ||||
| 		 ADC	A,A			; CF=0,ZF=0 | ||||
| 		 RET				; ATAPI | ||||
| 		; | ||||
| 		SCF				; Absent | ||||
| 		RET | ||||
| ;-------; | ||||
| 
 | ||||
| ;-------; | ||||
| @ -858,20 +901,24 @@ DETECTORS: | ||||
| 
 | ||||
| 
 | ||||
| /////////////////////////////////////////////////////////////////////[v] | ||||
| SetUP_CHANELS: | ||||
|  IFUSED	Nop_CHANELS | ||||
| Nop_CHANELS: | ||||
| 	LD	A,1 | ||||
| 	CALL	.CMD | ||||
| 	LD	A,3 | ||||
| 	CALL	.CMD | ||||
| 	LD	A,0 | ||||
| 	XOR	A	; LD A,0 | ||||
| 	CALL	.CMD | ||||
| 	LD	A,2 | ||||
| .CMD:	CALL	SELECT_IDE | ||||
| 	PAUSE_DJNZ 32 | ||||
| 	PAUSE_DJNZ 0 | ||||
| 	 LD	BC,IDE.Write.Command | ||||
| 	 LD	H,IDE.CMD.ATA.Nop | ||||
| 	 OUT	(C),H | ||||
| 	PAUSE_DJNZ 32 | ||||
| 	PAUSE_DJNZ 0 | ||||
| 	LD	BC,IDE.Read.Status | ||||
| 	IN	A,(C) | ||||
| 	RET | ||||
| 	; Disable INTRQ | ||||
| 	; LD	BC,IDE.Write.DeviceControl | ||||
| 	; LD	A,%0000'0010 | ||||
| @ -880,7 +927,7 @@ SetUP_CHANELS: | ||||
| 	; ; | ||||
| 	; CALL	DisableStandBy | ||||
| 	; PAUSE_DJNZ 32 | ||||
| 	RET | ||||
|  ENDIF | ||||
| /////////////////////////////////////////////////////////////////////[^] | ||||
| 
 | ||||
| 
 | ||||
|  | ||||
| @ -777,6 +777,7 @@ INFO_MESSAGE: | ||||
| 	CALL	TSETUP		;!TODO ¬®¦¥â ¯¨åãâì ¥ñ   ¯à¥à뢠¨ï? | ||||
| 
 | ||||
| 	CALL	CONFIGURE_IDE_DRIVES.START | ||||
| 	;CALL	CONFIGURE_IDE_DRIVES.Nop_CHANELS | ||||
| 	CALL	CTRLKEY | ||||
| 	LD	A,B | ||||
| 	; [x] 05/07/2024 <CTRL for Recovery> | ||||
|  | ||||
| @ -617,15 +617,15 @@ GET_CMOS_VALUE: | ||||
| 	RET  | ||||
| 
 | ||||
| ; [x] ç⮡ ¥ ¢«¥§«® ªã¤  ¥  ¤® | ||||
| READCMS: | ||||
| 	LD	D,high CMOSARE | ||||
| 	LD	E,A | ||||
| 	CP	CMOS.USED_MAX_ADDRESS+1 | ||||
| 	JR	NC,.error	 | ||||
| 	LD	A,(DE) | ||||
| 	RET | ||||
| .error:	SCF | ||||
| 	RET  | ||||
| READCMS:	LD	D,high CMOSARE | ||||
| 		LD	E,A | ||||
| 		CP	CMOS.USED_MAX_ADDRESS+1 | ||||
| 		JR	NC,.error	 | ||||
| 		LD	A,(DE) | ||||
| 		RET | ||||
| 		; | ||||
| .error:		SCF | ||||
| 		RET  | ||||
| 
 | ||||
| ; [x] ç⮡ ¥ ¢«¥§«® ªã¤  ¥  ¤® | ||||
| WRITCMS: | ||||
| @ -688,25 +688,22 @@ READING: | ||||
| 	JR	NZ,.loop | ||||
| 	RET  | ||||
| 
 | ||||
| WRITING: | ||||
| 	CALL	CHEKSUM | ||||
| 	LD	B,H | ||||
| 	LD	A,CMOS.Cell.CheckSum | ||||
| 	CALL	WRITCMS | ||||
| 	LD	D,CMOS.USED_MIN_ADDRESS                                                   ; !HARDCODE CMOS  | ||||
| .loop: | ||||
| 	LD	H,high CMOSARE | ||||
| 	LD	L,D | ||||
| 	LD	A,(HL) | ||||
| 	PUSH	DE | ||||
|         CALL    CMOS_WR | ||||
| 
 | ||||
| 	POP	DE | ||||
| 	LD	A,CMOS.USED_MAX_ADDRESS+1 | ||||
| 	INC	D | ||||
| 	CP	D | ||||
| 	JR	NZ,.loop | ||||
| 	RET  | ||||
| WRITING:	CALL	CHEKSUM | ||||
| 		LD	B,H | ||||
| 		LD	A,CMOS.Cell.CheckSum | ||||
| 		CALL	WRITCMS | ||||
| 		LD	D,CMOS.USED_MIN_ADDRESS | ||||
| .loop:		LD	H,high CMOSARE | ||||
| 		LD	L,D | ||||
| 		LD	A,(HL) | ||||
| 		PUSH	DE | ||||
|         	CALL    CMOS_WR | ||||
| 		POP	DE | ||||
| 		LD	A,CMOS.USED_MAX_ADDRESS+1 | ||||
| 		INC	D | ||||
| 		CP	D | ||||
| 		JR	NZ,.loop | ||||
| 		RET  | ||||
| 
 | ||||
| SETDEFX: | ||||
| 	LD	A,#FF | ||||
|  | ||||
										
											Binary file not shown.
										
									
								
							
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Tolik
						Tolik