103 lines
1.2 KiB
NASM
103 lines
1.2 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
|
||
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 |