Sprinter-Core/src/bios/exp/FUNC_CMOS.ASM
2024-12-18 00:17:38 +10:00

108 lines
1.4 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
;!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