mirror of
https://github.com/Tolik-Trek/Sprinter-BIOS.git
synced 2026-11-08 11:09:53 +03:00
107 lines
1.3 KiB
NASM
107 lines
1.3 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
|
|
;
|
|
|
|
; ¥ ¬¥ïâì 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: ; [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
|
|
;
|
|
|
|
; ¥ ¬¥ïâì 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
|
|
;
|
|
|
|
;�஢¥àª «¨ç¨ï 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
|
|
|
|
; �¥ ¯®àâ¨â HL
|
|
; GET_CMOS_VALUE: LD A,L
|
|
; CALL CMOS_RD
|
|
; AND H
|
|
; .loop: RRCA
|
|
; RRC H
|
|
; JR NC,.loop
|
|
; RLCA
|
|
; RET |