Sprinter-Core/src/bios/exp/FUNC_CMOS.ASM
Anatoliy Belyanskiy 8dd4f966c2 ...
2023-07-01 04:43:02 +10:00

103 lines
1.2 KiB
NASM
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

;
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
CMOS_WR:
;!TEST
_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:
;!TEST
_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
CALL CMOS_RD.RD
LD E,A
CPL
CALL CMOS_WR.WR
CALL CMOS_RD.RD
CPL
CP E
JR NZ,.CMOS_ERR
LD A,E
CALL CMOS_WR.WR
POP BC
POP DE
POP AF
AND A
RET
.CMOS_ERR:
LD A,E
CALL CMOS_WR.WR
POP BC
POP DE
POP AF
SCF
RET