File:  [RetroPC.NET] / xmil / io / cgrom.c
Revision 1.1: download - view: text, annotated - select for diffs
Sun Aug 1 14:31:30 2004 JST (21 years, 3 months ago) by yui
Branches: MAIN
CVS tags: HEAD
initialize

#include	"compiler.h"
#include	"pccore.h"
#include	"iocore.h"
#include	"font.h"


void IOOUTCALL cgrom_o(UINT port, REG8 value) {

	switch(port & 0x0f) {
		case 0:				// 0x0e80
			cgrom.reg[0] = value;
			break;

		case 1:				// 0x0e81
			cgrom.reg[1] = value;
			break;

		case 2:				// 0x0e82
			cgrom.face = (LOADINTELWORD(cgrom.reg) & (~15));
			break;
	}
}

REG8 IOINPCALL cgrom_i(UINT port) {

	REG8	ret;

	ret = 0;
	port &= 0x000f;
	if (cgrom.reg[1]) {
		switch(port) {
			case 0:			// 0x0e80
				ret = font_knjx1[cgrom.face + cgrom.count];
				cgrom.flag |= 1;
				break;

			case 1:			// 0x0e81
				ret = font_knjx1[cgrom.face + cgrom.count + FONTX1_LR];
				cgrom.flag |= 2;
				break;
		}
		if (cgrom.flag == 3) {
			cgrom.flag = 0;
			cgrom.count = (cgrom.count + 1) & 15;
		}
	}
	else {
		if (port == 0) {			// 0x0e80
			if (cgrom.reg[0] >= 0x30) {
				ret = 0x40 + ((cgrom.reg[0] - 0x30) * 6);
			}
			else {
				ret = 0x01 + ((cgrom.reg[0] - 0x21) * 6);
			}
		}
	}
	return(ret);
}


// ----

void cgrom_reset(void) {

	ZeroMemory(&cgrom, sizeof(cgrom));
}


RetroPC.NET-CVS <cvs@retropc.net>