summaryrefslogblamecommitdiffstatshomepage
path: root/src/mess/video/pc1251.c
blob: ecf4a6aed5f96d82f63b162e01964c8b02eea48b (plain) (tree)
































































































                                  
                                           
 
                                        



                                                        
                                             
 
                                                         
                                  




                
                                                                                                                 
 

                       









                                                                                    
                                                                                           





                                                            
                                                                                           




                                                            
                                                                                          
                                                           
                                                                                          
                                                             
                                                                                          
                                                            
                                                                                          
                                                           
                                                                                          
                                                            
                                                                                          
                                                            
                                                                                          
                                                            
                                                                                          

                                 

                                       

                 
#include "emu.h"

#include "includes/pocketc.h"
#include "includes/pc1251.h"

static const POCKETC_FIGURE busy={
	"11  1 1  11 1 1",
	"1 1 1 1 1   1 1",
	"11  1 1  1  1 1",
	"1 1 1 1   1  1",
	"11   1  11   1e"
}, def={
	"11  111 111",
	"1 1 1   1",
	"1 1 111 11",
	"1 1 1   1",
	"11  111 1e"
}, shift={
	" 11 1 1 1 111 111",
	"1   1 1 1 1    1",
	" 1  111 1 11   1",
	"  1 1 1 1 1    1",
	"11  1 1 1 1    1e"
}, hyp={
	"1 1 1 1 11",
	"1 1 1 1 1 1",
	"111 1 1 11",
	"1 1  1  1",
	"1 1  1  1e"
}, de={
	"11  111",
	"1 1 1",
	"1 1 111",
	"1 1 1",
	"11  111e"
}, g={
	" 11",
	"1",
	"1 1",
	"1 1",
	" 11e"
}, rad={
	"11   1  11",
	"1 1 1 1 1 1",
	"11  111 1 1",
	"1 1 1 1 1 1",
	"1 1 1 1 11e"
}, braces={
	" 1 1",
	"1   1",
	"1   1",
	"1   1",
	" 1 1e"
}, m={
	"1   1",
	"11 11",
	"1 1 1",
	"1   1",
	"1   1e"
}, e={
	"111",
	"1",
	"111",
	"1",
	"111e"
}, run={
	"11  1 1 1  1",
	"1 1 1 1 11 1",
	"11  1 1 1 11",
	"1 1 1 1 1  1",
	"1 1  1  1  1e"
}, pro={
	"11  11   1  ",
	"1 1 1 1 1 1",
	"11  11  1 1",
	"1   1 1 1 1",
	"1   1 1  1e"
}, japan={
	"  1  1  11   1  1  1",
	"  1 1 1 1 1 1 1 11 1",
	"  1 111 11  111 1 11",
	"1 1 1 1 1   1 1 1  1",
	" 1  1 1 1   1 1 1  1e"
}, sml={
	" 11 1 1 1",
	"1   111 1",
	" 1  1 1 1",
	"  1 1 1 1",
	"11  1 1 111e"
}, rsv={
	"11   11 1   1",
	"1 1 1   1   1",
	"11   1   1 1",
	"1 1   1  1 1",
	"1 1 11    1e"
};

READ8_MEMBER(pc1251_state::pc1251_lcd_read)
{
	UINT8 data = m_reg[offset&0xff];
	logerror("pc1251 read %.3x %.2x\n",offset,data);
	return data;
}

WRITE8_MEMBER(pc1251_state::pc1251_lcd_write)
{
	logerror("pc1251 write %.3x %.2x\n",offset,data);
	m_reg[offset&0xff] = data;
}

#define DOWN 62
#define RIGHT 68

UINT32 pc1251_state::screen_update_pc1251(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
	int x, y, i, j;
	int color[2];

	bitmap.fill(11, cliprect);

	/* HJB: we cannot initialize array with values from other arrays, thus... */
	color[0] = 7; //pocketc_colortable[PC1251_CONTRAST][0];
	color[1] = 8; //pocketc_colortable[PC1251_CONTRAST][1];

	for (x=RIGHT,y=DOWN, i=0; i<60; x+=3)
	{
		for (j=0; j<5; j++, i++, x+=3)
			drawgfx_opaque(bitmap, cliprect, screen.machine().gfx[0], m_reg[i],
					PC1251_CONTRAST,0,0,
					x,y);
	}
	for (i=0x7b; i>=0x40; x+=3)
	{
		for (j=0; j<5; j++, i--, x+=3)
			drawgfx_opaque(bitmap, cliprect, screen.machine().gfx[0], m_reg[i],
					PC1251_CONTRAST,0,0,
					x,y);
	}

	pocketc_draw_special(bitmap, RIGHT+134, DOWN-10, de,
						m_reg[0x3c] & 0x08 ? color[1] : color[0]);
	pocketc_draw_special(bitmap, RIGHT+142, DOWN-10, g,
						m_reg[0x3c] & 0x04 ? color[1] : color[0]);
	pocketc_draw_special(bitmap, RIGHT+146, DOWN-10, rad,
						m_reg[0x3d] & 0x04 ? color[1] : color[0]);
	pocketc_draw_special(bitmap, RIGHT+18, DOWN-10, def,
						m_reg[0x3c] & 0x01 ? color[1] : color[0]);
	pocketc_draw_special(bitmap, RIGHT, DOWN-10, shift,
						m_reg[0x3d] & 0x02 ? color[1] : color[0]);
	pocketc_draw_special(bitmap, RIGHT+38, DOWN-10, pro,
						m_reg[0x3e] & 0x01 ? color[1] : color[0]);
	pocketc_draw_special(bitmap, RIGHT+53, DOWN-10, run,
						m_reg[0x3e] & 0x02 ? color[1] : color[0]);
	pocketc_draw_special(bitmap, RIGHT+68, DOWN-10, rsv,
						m_reg[0x3e] & 0x04 ? color[1] : color[0]);

	/* 0x3c 1 def?, 4 g, 8 de
	   0x3d 2 shift, 4 rad, 8 error
	   0x3e 1 pro?, 2 run?, 4rsv?*/
	return 0;
}