108 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			NASM
		
	
	
	
	
	
			
		
		
	
	
			108 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			NASM
		
	
	
	
	
	
| ;
 | ||
| 	MACRO _mCMOS_MAX_TEST
 | ||
| 	 ASSERT CMOS.MAX_ADDRESS = #7F, "WARNING!!! Logick broken with BIT 7 check"
 | ||
| 	 BIT	7,D
 | ||
| 	 SCF
 | ||
| 	 RET	NZ
 | ||
| 	ENDM
 | ||
| ;
 | ||
| 
 | ||
| ;!FIXIT ¯® ¤®ª¥   äãªæ¨î ¤®«¦¥ ¯¥à¥¤ ¢ë室®¬ CF áâ ¢¨âìáï
 | ||
| CMOS_EMU_WR:
 | ||
| 	PUSH DE
 | ||
| 
 | ||
| 	LD C,SLOT3
 | ||
| 	IN B,(C)
 | ||
| 	LD E,SYS_PAGE
 | ||
| 	OUT (C),E
 | ||
| 	LD E,D
 | ||
| 	LD D,#FF
 | ||
| 	LD (DE),A
 | ||
| 	OUT (C),B
 | ||
| 
 | ||
| 	POP DE
 | ||
| 	RET
 | ||
| ;
 | ||
| 
 | ||
| ; § ¯¨áì ¢ CMOS
 | ||
| ;!FIXIT ¯¥à¥¤¥« âì ¯® ¤®ª¥   „ «« á ¨ § ¯¨áì ¢ ï祩ª¨ ç á®¢
 | ||
| CMOS_WR:	; [x]
 | ||
| 		 _mCMOS_MAX_TEST
 | ||
| 		;
 | ||
| 		CALL CMOS_TEST
 | ||
| 		JR C,CMOS_EMU_WR
 | ||
| .WR:		LD BC,CMOS.Port.Address.Write
 | ||
| 		OUT (C),D
 | ||
| 		LD BC,CMOS.Port.Data.Write
 | ||
| 		OUT (C),A
 | ||
| 		RET
 | ||
| ;
 | ||
| 
 | ||
| ;!FIXIT ¯® ¤®ª¥   äãªæ¨î ¤®«¦¥ ¯¥à¥¤ ¢ë室®¬ CF áâ ¢¨âìáï
 | ||
| CMOS_EMU_RD:	PUSH	DE
 | ||
| 		LD	C,SLOT3
 | ||
| 		IN	B,(C)
 | ||
| 		LD	E,SYS_PAGE
 | ||
| 		OUT	(C),E
 | ||
| 		LD	E,D
 | ||
| 		LD	D, high SYS_PAGE.CMOS_EMULATOR
 | ||
| 		LD	A,(DE)
 | ||
| 		OUT	(C),B
 | ||
| 		POP	DE
 | ||
| 		RET
 | ||
| ;
 | ||
| 
 | ||
| ; ç⥨¥ ¨§ CMOS
 | ||
| CMOS_RD:	; [x]
 | ||
| 		 _mCMOS_MAX_TEST
 | ||
| 		;
 | ||
| 		CALL	CMOS_TEST
 | ||
| 		JR	C,CMOS_EMU_RD
 | ||
| .RD:		LD	BC,CMOS.Port.Address.Write
 | ||
| 		OUT	(C),D
 | ||
| 		LD	BC,CMOS.Port.Data.Read
 | ||
| 		IN	A,(C)
 | ||
| 		RET
 | ||
| ;
 | ||
| 
 | ||
| ;<3B>஢¥àª   «¨ç¨ï CMOS
 | ||
| CMOS_TEST:
 | ||
| 	PUSH AF
 | ||
| 	PUSH DE
 | ||
| 	PUSH BC
 | ||
| 
 | ||
| 	LD D,CMOS.TEST_CELL	; [x] à ìè¥ ¯¨á «® ¢ ï祩ªã 祪-á㬬ë
 | ||
| 	CALL CMOS_RD.RD
 | ||
| 	LD E,A
 | ||
| 	CPL
 | ||
| 	CALL CMOS_WR.WR
 | ||
| 	CALL CMOS_RD.RD
 | ||
| 	CPL
 | ||
| 	CP E
 | ||
| 	LD A,E
 | ||
| 	JR NZ,.CMOS_ERR
 | ||
| 	CALL CMOS_WR.WR
 | ||
| 
 | ||
| 	POP BC
 | ||
| 	POP DE
 | ||
| 	POP AF
 | ||
| 	AND A
 | ||
| 	RET
 | ||
| 	;
 | ||
| .CMOS_ERR:
 | ||
| 	CALL CMOS_WR.WR
 | ||
| 	POP BC
 | ||
| 	POP DE
 | ||
| 	POP AF
 | ||
| 	SCF
 | ||
| 	RET
 | ||
| 
 | ||
| ; <20>¥ ¯®àâ¨â HL
 | ||
| ; GET_CMOS_VALUE:	LD	A,L
 | ||
| ; 		CALL	CMOS_RD
 | ||
| ; 		AND	H
 | ||
| ; .loop:		RRCA
 | ||
| ; 		RRC	H
 | ||
| ; 		JR	NC,.loop
 | ||
| ; 		RLCA
 | ||
| ; 		RET  | 
