diff options
author | Curt Coder <curtcoder@mail.com> | 2012-09-14 16:37:26 +0000 |
---|---|---|
committer | Curt Coder <curtcoder@mail.com> | 2012-09-14 16:37:26 +0000 |
commit | aed1c5bf74f9c24708d2043f547659d0c4676824 (patch) | |
tree | 83fa5001f921356bcabb34145db32f88e01f79be /src/mess/video | |
parent | 002948d06ea3e0a5bcce53f23336a0cdc55846f7 (diff) |
Rewrote the SAA5050 Teletext character generator. Removed saa505x.c which was used by bbc.c, and refactored all drivers to use the new implementation. [Curt Coder]
Diffstat (limited to 'src/mess/video')
-rw-r--r-- | src/mess/video/abc800.c | 108 | ||||
-rw-r--r-- | src/mess/video/bbc.c | 46 | ||||
-rw-r--r-- | src/mess/video/p2000m.c | 2 | ||||
-rw-r--r-- | src/mess/video/saa505x.c | 3589 | ||||
-rw-r--r-- | src/mess/video/saa505x.h | 45 |
5 files changed, 63 insertions, 3727 deletions
diff --git a/src/mess/video/abc800.c b/src/mess/video/abc800.c index e7b32bdaa9a..daebfd22479 100644 --- a/src/mess/video/abc800.c +++ b/src/mess/video/abc800.c @@ -14,6 +14,19 @@ #define VERTICAL_PORCH_HACK 29 +static const rgb_t PALETTE[] = +{ + RGB_BLACK, + MAKE_RGB(0xff, 0x00, 0x00), // red + MAKE_RGB(0x00, 0xff, 0x00), // green + MAKE_RGB(0xff, 0xff, 0x00), // yellow + MAKE_RGB(0x00, 0x00, 0xff), // blue + MAKE_RGB(0xff, 0x00, 0xff), // magenta + MAKE_RGB(0x00, 0xff, 0xff), // cyan + RGB_WHITE +}; + + //************************************************************************** // HIGH RESOLUTION GRAPHICS @@ -50,33 +63,15 @@ WRITE8_MEMBER( abc800_state::hrc_w ) offs_t abc800c_state::translate_trom_offset(offs_t offset) { - int row = offset >> 7; - int col = offset & 0x7f; - - if (col >= 80) row += 16; - else if (col >= 40) row += 8; - - return (row * 40) + (col % 40); -} - - -//------------------------------------------------- -// char_ram_r - character RAM read -//------------------------------------------------- - -READ8_MEMBER( abc800c_state::char_ram_r ) -{ - return saa5050_videoram_r(m_trom, translate_trom_offset(offset)); -} + int row = offset / 40; + int col = offset % 40; + offset = ((row & 0x07) * 0x80) + col; -//------------------------------------------------- -// char_ram_w - character RAM write -//------------------------------------------------- + if (row & 0x08) offset += 0x28; + if (row & 0x10) offset += 0x50; -WRITE8_MEMBER( abc800c_state::char_ram_w ) -{ - saa5050_videoram_w(m_trom, translate_trom_offset(offset), data); + return offset; } @@ -84,7 +79,7 @@ WRITE8_MEMBER( abc800c_state::char_ram_w ) // hr_update - high resolution screen update //------------------------------------------------- -void abc800c_state::hr_update(bitmap_ind16 &bitmap, const rectangle &cliprect) +void abc800c_state::hr_update(bitmap_rgb32 &bitmap, const rectangle &cliprect) { UINT16 addr = 0; @@ -104,19 +99,16 @@ void abc800c_state::hr_update(bitmap_ind16 &bitmap, const rectangle &cliprect) if (color) { - rgb_t rgb = palette_entry_get_color(machine().palette, bitmap.pix16(y, x)); - bool black = !RGB_RED(rgb) && !RGB_GREEN(rgb) && !RGB_BLUE(rgb); + bool black = bitmap.pix32(y, x) == RGB_BLACK; bool opaque = !BIT(fgctl, 3); if (black || opaque) { - color += 128; + bitmap.pix32(y, x) = PALETTE[color]; + bitmap.pix32(y, x + 1) = PALETTE[color]; - bitmap.pix16(y, x) = color; - bitmap.pix16(y, x + 1) = color; - - bitmap.pix16(y + 1, x) = color; - bitmap.pix16(y + 1, x + 1) = color; + bitmap.pix32(y + 1, x) = PALETTE[color]; + bitmap.pix32(y + 1, x + 1) = PALETTE[color]; } } @@ -145,42 +137,20 @@ void abc800_state::video_start() //------------------------------------------------- -// VIDEO_START( abc800c ) -//------------------------------------------------- - -void abc800c_state::video_start() -{ - abc800_state::video_start(); - - // initialize palette - palette_set_color_rgb(machine(), 128+0, 0x00, 0x00, 0x00); // black - palette_set_color_rgb(machine(), 128+1, 0xff, 0x00, 0x00); // red - palette_set_color_rgb(machine(), 128+2, 0x00, 0xff, 0x00); // green - palette_set_color_rgb(machine(), 128+3, 0xff, 0xff, 0x00); // yellow - palette_set_color_rgb(machine(), 128+4, 0x00, 0x00, 0xff); // blue - palette_set_color_rgb(machine(), 128+5, 0xff, 0x00, 0xff); // magenta - palette_set_color_rgb(machine(), 128+6, 0x00, 0xff, 0xff); // cyan - palette_set_color_rgb(machine(), 128+7, 0xff, 0xff, 0xff); // white -} - - -//------------------------------------------------- // SCREEN_UPDATE( abc800c ) //------------------------------------------------- -UINT32 abc800c_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +UINT32 abc800c_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) { // clear screen - bitmap.fill(get_black_pen(machine()), cliprect); + bitmap.fill(RGB_BLACK, cliprect); // draw text if (!BIT(m_fgctl, 7)) { - saa5050_update(m_trom, bitmap, cliprect); + m_trom->screen_update(screen, bitmap, cliprect); } - saa5050_frame_advance(m_trom); - // draw HR graphics hr_update(bitmap, cliprect); @@ -189,15 +159,18 @@ UINT32 abc800c_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, //------------------------------------------------- -// saa5050_interface trom_intf +// SAA5050_INTERFACE( trom_intf ) //------------------------------------------------- -static const saa5050_interface trom_intf = +READ8_MEMBER( abc800c_state::char_ram_r ) { - SCREEN_TAG, - 0, // starting gfxnum - 40, 24, 40, // x, y, size - 0 // rev y order + return m_char_ram[translate_trom_offset(offset)]; +} + +static SAA5050_INTERFACE( trom_intf ) +{ + DEVCB_DRIVER_MEMBER(abc800c_state, char_ram_r), + 40, 24, 40 // x, y, size }; @@ -214,12 +187,7 @@ MACHINE_CONFIG_FRAGMENT( abc800c_video ) MCFG_SCREEN_SIZE(480, 480) MCFG_SCREEN_VISIBLE_AREA(0, 480-1, 0, 480-1) - MCFG_PALETTE_LENGTH(128+8) - MCFG_PALETTE_INIT(saa5050) - - MCFG_GFXDECODE(saa5050) - - MCFG_SAA5050_ADD(SAA5052_TAG, trom_intf) + MCFG_SAA5052_ADD(SAA5052_TAG, XTAL_12MHz/2, trom_intf) MACHINE_CONFIG_END diff --git a/src/mess/video/bbc.c b/src/mess/video/bbc.c index d9554e74fb2..05ac2730f6c 100644 --- a/src/mess/video/bbc.c +++ b/src/mess/video/bbc.c @@ -18,7 +18,7 @@ #include "emu.h" #include "includes/bbc.h" -#include "saa505x.h" +#include "video/saa5050.h" #include "video/mc6845.h" /************************************************************************ @@ -191,7 +191,6 @@ int returned_pixels[6]; static MC6845_UPDATE_ROW( vid_update_row ) { - bbc_state *state = device->machine().driver_data<bbc_state>(); const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); @@ -199,9 +198,8 @@ static MC6845_UPDATE_ROW( vid_update_row ) if (state->m_videoULA_teletext_normal_select) { - - teletext_LOSE_w(state->m_saa505x, 0,0); - teletext_LOSE_w(state->m_saa505x, 0,1); + state->m_trom->lose_w(1); + state->m_trom->lose_w(0); for(int x_pos=0; x_pos<x_count; x_pos++) { @@ -211,25 +209,38 @@ static MC6845_UPDATE_ROW( vid_update_row ) returned_pixel_count=0; + state->m_trom->write((state->m_Teletext_Latch&0x3f)|(state->m_Teletext_Latch&0x40)); - teletext_F1(state->m_saa505x); - - teletext_data_w(state->m_saa505x, 0, (state->m_Teletext_Latch&0x3f)|(state->m_Teletext_Latch&0x40)); + state->m_trom->f1_w(1); + state->m_trom->f1_w(0); if (((ma>>13)&1)==0) { state->m_Teletext_Latch=0; } else { - state->m_Teletext_Latch=(state->m_BBC_Video_RAM[calculate_video_address(state,ma+x_pos,ra)]&0x7f); + state->m_Teletext_Latch=(state->m_BBC_Video_RAM[calculate_video_address(state,ma+x_pos,ra)]); } for(int pixelno=0;pixelno<6;pixelno++) { - int col=returned_pixels[pixelno]; + state->m_trom->tr6_w(1); + state->m_trom->tr6_w(0); - bitmap.pix32(y, (x_pos*state->m_pixels_per_byte)+pixelno)=palette[col]; - } + int col=state->m_trom->get_rgb(); + + int r = BIT(col, 0) * 0xff; + int g = BIT(col, 1) * 0xff; + int b = BIT(col, 2) * 0xff; + rgb_t rgb = MAKE_RGB(r, g, b); + + bitmap.pix32(y, (x_pos*state->m_pixels_per_byte)+pixelno) = rgb; + } + } + if (ra == 18) + { + state->m_trom->lose_w(1); + state->m_trom->lose_w(0); } } else @@ -268,7 +279,7 @@ static MC6845_UPDATE_ROW( vid_update_row ) static WRITE_LINE_DEVICE_HANDLER( bbc_vsync ) { bbc_state *bstate = device->machine().driver_data<bbc_state>(); - teletext_DEW(bstate->m_saa505x); + bstate->m_trom->dew_w(state); } @@ -287,14 +298,6 @@ const mc6845_interface bbc_mc6845_intf = }; -void bbc_draw_RGB_in(device_t *device, int offset,int data) -{ - if (returned_pixel_count<6) - returned_pixels[returned_pixel_count++]=7-data; - -} - - /************************************************************************ @@ -360,7 +363,6 @@ static void common_init(running_machine &machine, int memorySize) state->m_VideoULA_CR_counter = 0; set_pixel_lookup(state); - state->m_saa505x = machine.device("saa505x"); state->m_BBC_Video_RAM = state->memregion("maincpu")->base(); state->m_memorySize=memorySize; diff --git a/src/mess/video/p2000m.c b/src/mess/video/p2000m.c index 0f8875e6e65..2b073ed22fa 100644 --- a/src/mess/video/p2000m.c +++ b/src/mess/video/p2000m.c @@ -20,7 +20,7 @@ VIDEO_START_MEMBER(p2000t_state,p2000m) SCREEN_UPDATE_IND16( p2000m ) { p2000t_state *state = screen.machine().driver_data<p2000t_state>(); - UINT8 *videoram = state->m_p_videoram; + UINT8 *videoram = state->m_videoram; int offs, sx, sy, code, loop; for (offs = 0; offs < 80 * 24; offs++) diff --git a/src/mess/video/saa505x.c b/src/mess/video/saa505x.c deleted file mode 100644 index 1b7ad3a24b3..00000000000 --- a/src/mess/video/saa505x.c +++ /dev/null @@ -1,3589 +0,0 @@ -/************************************************************************ -SAA505X Teletext - -Variant Character set -5050 English -5051 German -5052 Swedish -5053 Italian -5054 Belgian -5055 US ASCII -5056 Hebrew -5057 Cyrillic - -Pins -1 Vss ground -18 Vdd positive supply -17 NC not connected - -Data In --------- -4-10 D1 to D7 in character data inputs - -16 ~TLC out transmitted large character - -Colour Our ----------- -21 Y out monochrome video output -22 Blue out blue video output -23 Green out green video output -24 Red out red video output -25 BLAN out blanking output - -Display Control ---------------- -27 PO in picture on in[ut -28 DE in display enable input - -Remote Control Data Decoder and Store -------------------------------------- -2 ~SI in/out superimposer -3 ~DATA in remote control data -11 DLIM in remote control data clock -12 ~GLR in general line reset - -Timing Generator/Flash Counter ------------------------------- -13 DEW in data entry window -19 TR6 in 6MHz input -20 F1 in 1MHz input -26 LOSE in load output shift register enable - -Character Rounding ------------------- -14 CRS in character rounding select -15 ~BCS in big character select - - - - -Characters are output every 1us with a pixel dot rate of 6MHz. -Each character is 6 x 10 pixels - -This device was designed to work over the top of a Television picture, -so the BLAN blanking output is used to blank out the television signal under control -of the PO and DE inputs and the box control characters. - -13 DEW Data Entry Window ------------------------- -This input signal resets the internal ROM row address counter prior to the desplay peroid. -It is also used internally to derive the 'flash' period. - -20 F1 ------ -This input is a 1MHz equal mark/space ration signal. It is used to latch the 7-bit parallel character data into the input latches. - -26 LOSE Load output shift register enable ------------------------------------------ -This input resets the internal control character flip-flops prior to the start of each display line. -This signal also defails the character display period. - - -*/ - -#include "emu.h" -#include "saa505x.h" - - -/* Normal Character Set */ - -static const char teletext_saa5050_characters[96*60]={ - // 0x20 ' ' - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x21 '!' - 0,0,0,0,0,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,0,0,0,0, - 0,0,0,1,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x22 '"' - 0,0,0,0,0,0, - 0,0,1,0,1,0, - 0,0,1,0,1,0, - 0,0,1,0,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x23 ' British Pound' - 0,0,0,0,0,0, - 0,0,0,1,1,0, - 0,0,1,0,0,1, - 0,0,1,0,0,0, - 0,1,1,1,0,0, - 0,0,1,0,0,0, - 0,0,1,0,0,0, - 0,1,1,1,1,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x24 '$' - 0,0,0,0,0,0, - 0,0,1,1,1,0, - 0,1,0,1,0,1, - 0,1,0,1,0,0, - 0,0,1,1,1,0, - 0,0,0,1,0,1, - 0,1,0,1,0,1, - 0,0,1,1,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x25 '%' - 0,0,0,0,0,0, - 0,1,1,0,0,0, - 0,1,1,0,0,1, - 0,0,0,0,1,0, - 0,0,0,1,0,0, - 0,0,1,0,0,0, - 0,1,0,0,1,1, - 0,0,0,0,1,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x26 '&' - 0,0,0,0,0,0, - 0,0,1,0,0,0, - 0,1,0,1,0,0, - 0,1,0,1,0,0, - 0,0,1,0,0,0, - 0,1,0,1,0,1, - 0,1,0,0,1,0, - 0,0,1,1,0,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x27 ''' - 0,0,0,0,0,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x28 '(' - 0,0,0,0,0,0, - 0,0,0,0,1,0, - 0,0,0,1,0,0, - 0,0,1,0,0,0, - 0,0,1,0,0,0, - 0,0,1,0,0,0, - 0,0,0,1,0,0, - 0,0,0,0,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x29 ')' - 0,0,0,0,0,0, - 0,0,1,0,0,0, - 0,0,0,1,0,0, - 0,0,0,0,1,0, - 0,0,0,0,1,0, - 0,0,0,0,1,0, - 0,0,0,1,0,0, - 0,0,1,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x2a '*' - 0,0,0,0,0,0, - 0,0,0,1,0,0, - 0,1,0,1,0,1, - 0,0,1,1,1,0, - 0,0,0,1,0,0, - 0,0,1,1,1,0, - 0,1,0,1,0,1, - 0,0,0,1,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x2b '+' - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,1,1,1,1,1, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x2c ',' - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,1,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x2d '-' - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,1,1,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x2e '.' - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,1,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x2f '/' - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,1, - 0,0,0,0,1,0, - 0,0,0,1,0,0, - 0,0,1,0,0,0, - 0,1,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x30 '0' - 0,0,0,0,0,0, - 0,0,0,1,0,0, - 0,0,1,0,1,0, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,0,1,0,1,0, - 0,0,0,1,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x31 '1' - 0,0,0,0,0,0, - 0,0,0,1,0,0, - 0,0,1,1,0,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,1,1,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x32 '2' - 0,0,0,0,0,0, - 0,0,1,1,1,0, - 0,1,0,0,0,1, - 0,0,0,0,0,1, - 0,0,0,1,1,0, - 0,0,1,0,0,0, - 0,1,0,0,0,0, - 0,1,1,1,1,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x33 '3' - 0,0,0,0,0,0, - 0,1,1,1,1,1, - 0,0,0,0,0,1, - 0,0,0,0,1,0, - 0,0,0,1,1,0, - 0,0,0,0,0,1, - 0,1,0,0,0,1, - 0,0,1,1,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x34 '4' - 0,0,0,0,0,0, - 0,0,0,0,1,0, - 0,0,0,1,1,0, - 0,0,1,0,1,0, - 0,1,0,0,1,0, - 0,1,1,1,1,1, - 0,0,0,0,1,0, - 0,0,0,0,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x35 '5' - 0,0,0,0,0,0, - 0,1,1,1,1,1, - 0,1,0,0,0,0, - 0,1,1,1,1,0, - 0,0,0,0,0,1, - 0,0,0,0,0,1, - 0,1,0,0,0,1, - 0,0,1,1,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x36 '6' - 0,0,0,0,0,0, - 0,0,0,1,1,0, - 0,0,1,0,0,0, - 0,1,0,0,0,0, - 0,1,1,1,1,0, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,0,1,1,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x37 '7' - 0,0,0,0,0,0, - 0,1,1,1,1,1, - 0,0,0,0,0,1, - 0,0,0,0,1,0, - 0,0,0,1,0,0, - 0,0,1,0,0,0, - 0,0,1,0,0,0, - 0,0,1,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x38 '8' - 0,0,0,0,0,0, - 0,0,1,1,1,0, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,0,1,1,1,0, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,0,1,1,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x39 '9' - 0,0,0,0,0,0, - 0,0,1,1,1,0, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,0,1,1,1,1, - 0,0,0,0,0,1, - 0,0,0,0,1,0, - 0,0,1,1,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x3a ':' - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,1,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,1,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x3b ';' - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,1,0,0, - 0,0,0,0,0,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,1,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x3c '<' - 0,0,0,0,0,0, - 0,0,0,0,1,0, - 0,0,0,1,0,0, - 0,0,1,0,0,0, - 0,1,0,0,0,0, - 0,0,1,0,0,0, - 0,0,0,1,0,0, - 0,0,0,0,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x3d '=' - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,1,1,1,1,1, - 0,0,0,0,0,0, - 0,1,1,1,1,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x3e '>' - 0,0,0,0,0,0, - 0,0,1,0,0,0, - 0,0,0,1,0,0, - 0,0,0,0,1,0, - 0,0,0,0,0,1, - 0,0,0,0,1,0, - 0,0,0,1,0,0, - 0,0,1,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x3f '?' - 0,0,0,0,0,0, - 0,0,1,1,1,0, - 0,1,0,0,0,1, - 0,0,0,0,1,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,0,0,0,0, - 0,0,0,1,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x40 '@' - 0,0,0,0,0,0, - 0,0,1,1,1,0, - 0,1,0,0,0,1, - 0,1,0,1,1,1, - 0,1,0,1,0,1, - 0,1,0,1,1,1, - 0,1,0,0,0,0, - 0,0,1,1,1,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x41 'A' - 0,0,0,0,0,0, - 0,0,0,1,0,0, - 0,0,1,0,1,0, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,1,1,1,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x42 'B' - 0,0,0,0,0,0, - 0,1,1,1,1,0, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,1,1,1,0, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,1,1,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x43 'C' - 0,0,0,0,0,0, - 0,0,1,1,1,0, - 0,1,0,0,0,1, - 0,1,0,0,0,0, - 0,1,0,0,0,0, - 0,1,0,0,0,0, - 0,1,0,0,0,1, - 0,0,1,1,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x44 'D' - 0,0,0,0,0,0, - 0,1,1,1,1,0, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,1,1,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x45 'E' - 0,0,0,0,0,0, - 0,1,1,1,1,1, - 0,1,0,0,0,0, - 0,1,0,0,0,0, - 0,1,1,1,1,0, - 0,1,0,0,0,0, - 0,1,0,0,0,0, - 0,1,1,1,1,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x46 'F' - 0,0,0,0,0,0, - 0,1,1,1,1,1, - 0,1,0,0,0,0, - 0,1,0,0,0,0, - 0,1,1,1,1,0, - 0,1,0,0,0,0, - 0,1,0,0,0,0, - 0,1,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x47 'G' - 0,0,0,0,0,0, - 0,0,1,1,1,0, - 0,1,0,0,0,1, - 0,1,0,0,0,0, - 0,1,0,0,0,0, - 0,1,0,0,1,1, - 0,1,0,0,0,1, - 0,0,1,1,1,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x48 'H' - 0,0,0,0,0,0, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,1,1,1,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x49 'I' - 0,0,0,0,0,0, - 0,0,1,1,1,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,1,1,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x4a 'J' - 0,0,0,0,0,0, - 0,0,0,0,0,1, - 0,0,0,0,0,1, - 0,0,0,0,0,1, - 0,0,0,0,0,1, - 0,0,0,0,0,1, - 0,1,0,0,0,1, - 0,0,1,1,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x4b 'K' - 0,0,0,0,0,0, - 0,1,0,0,0,1, - 0,1,0,0,1,0, - 0,1,0,1,0,0, - 0,1,1,0,0,0, - 0,1,0,1,0,0, - 0,1,0,0,1,0, - 0,1,0,0,0,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x4c 'L' - 0,0,0,0,0,0, - 0,1,0,0,0,0, - 0,1,0,0,0,0, - 0,1,0,0,0,0, - 0,1,0,0,0,0, - 0,1,0,0,0,0, - 0,1,0,0,0,0, - 0,1,1,1,1,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x4d 'M' - 0,0,0,0,0,0, - 0,1,0,0,0,1, - 0,1,1,0,1,1, - 0,1,0,1,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x4e 'N' - 0,0,0,0,0,0, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,1,0,0,1, - 0,1,0,1,0,1, - 0,1,0,0,1,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x4f 'O' - 0,0,0,0,0,0, - 0,0,1,1,1,0, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,0,1,1,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x50 'P' - 0,0,0,0,0,0, - 0,1,1,1,1,0, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,1,1,1,0, - 0,1,0,0,0,0, - 0,1,0,0,0,0, - 0,1,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x51 'Q' - 0,0,0,0,0,0, - 0,0,1,1,1,0, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,1,0,1, - 0,1,0,0,1,0, - 0,0,1,1,0,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x52 'R' - 0,0,0,0,0,0, - 0,1,1,1,1,0, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,1,1,1,0, - 0,1,0,1,0,0, - 0,1,0,0,1,0, - 0,1,0,0,0,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x53 'S' - 0,0,0,0,0,0, - 0,0,1,1,1,0, - 0,1,0,0,0,1, - 0,1,0,0,0,0, - 0,0,1,1,1,0, - 0,0,0,0,0,1, - 0,1,0,0,0,1, - 0,0,1,1,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x54 'T' - 0,0,0,0,0,0, - 0,1,1,1,1,1, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x55 'U' - 0,0,0,0,0,0, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,0,1,1,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x56 'V' - 0,0,0,0,0,0, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,0,1,0,1,0, - 0,0,1,0,1,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x57 'W' - 0,0,0,0,0,0, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,1,0,1, - 0,1,0,1,0,1, - 0,1,0,1,0,1, - 0,0,1,0,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x58 'X' - 0,0,0,0,0,0, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,0,1,0,1,0, - 0,0,0,1,0,0, - 0,0,1,0,1,0, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x59 'Y' - 0,0,0,0,0,0, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,0,1,0,1,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x5a 'Z' - 0,0,0,0,0,0, - 0,1,1,1,1,1, - 0,0,0,0,0,1, - 0,0,0,0,1,0, - 0,0,0,1,0,0, - 0,0,1,0,0,0, - 0,1,0,0,0,0, - 0,1,1,1,1,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x5b Left Arrow - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,1,0,0, - 0,0,1,0,0,0, - 0,1,1,1,1,1, - 0,0,1,0,0,0, - 0,0,0,1,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x5c ' 1/2 symbol' - 0,0,0,0,0,0, - 0,1,0,0,0,0, - 0,1,0,0,0,0, - 0,1,0,0,0,0, - 0,1,0,1,1,0, - 0,0,0,0,0,1, - 0,0,0,0,1,0, - 0,0,0,1,0,0, - 0,0,0,1,1,1, - 0,0,0,0,0,0 -, // 0x5d Right Arrow - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,1,0,0, - 0,0,0,0,1,0, - 0,1,1,1,1,1, - 0,0,0,0,1,0, - 0,0,0,1,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x5e Up Arrow - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,1,0,0, - 0,0,1,1,1,0, - 0,1,0,1,0,1, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x5f '#' - 0,0,0,0,0,0, - 0,0,1,0,1,0, - 0,0,1,0,1,0, - 0,1,1,1,1,1, - 0,0,1,0,1,0, - 0,1,1,1,1,1, - 0,0,1,0,1,0, - 0,0,1,0,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x60 '_' - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,1,1,1,1,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x61 'a' - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,1,1,1,0, - 0,0,0,0,0,1, - 0,0,1,1,1,1, - 0,1,0,0,0,1, - 0,0,1,1,1,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x62 'b' - 0,0,0,0,0,0, - 0,1,0,0,0,0, - 0,1,0,0,0,0, - 0,1,1,1,1,0, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,1,1,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x63 'c' - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,1,1,1,1, - 0,1,0,0,0,0, - 0,1,0,0,0,0, - 0,1,0,0,0,0, - 0,0,1,1,1,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x64 'd' - 0,0,0,0,0,0, - 0,0,0,0,0,1, - 0,0,0,0,0,1, - 0,0,1,1,1,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,0,1,1,1,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x65 'e' - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,1,1,1,0, - 0,1,0,0,0,1, - 0,1,1,1,1,1, - 0,1,0,0,0,0, - 0,0,1,1,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x66 'f' - 0,0,0,0,0,0, - 0,0,0,0,1,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,1,1,1,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x67 'g' - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,1,1,1,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,0,1,1,1,1, - 0,0,0,0,0,1, - 0,0,1,1,1,0 -, // 0x68 'h' - 0,0,0,0,0,0, - 0,1,0,0,0,0, - 0,1,0,0,0,0, - 0,1,1,1,1,0, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x69 'i' - 0,0,0,0,0,0, - 0,0,0,1,0,0, - 0,0,0,0,0,0, - 0,0,1,1,0,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,1,1,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x6a 'j' - 0,0,0,0,0,0, - 0,0,0,1,0,0, - 0,0,0,0,0,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,1,0,0,0, - 0,0,0,0,0,0 -, // 0x6b 'k' - 0,0,0,0,0,0, - 0,0,1,0,0,0, - 0,0,1,0,0,0, - 0,0,1,0,0,1, - 0,0,1,0,1,0, - 0,0,1,1,0,0, - 0,0,1,0,1,0, - 0,0,1,0,0,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x6c 'l' - 0,0,0,0,0,0, - 0,0,1,1,0,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,1,1,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x6d 'm' - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,1,1,0,1,0, - 0,1,0,1,0,1, - 0,1,0,1,0,1, - 0,1,0,1,0,1, - 0,1,0,1,0,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x6e 'n' - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,1,1,1,1,0, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x6f 'o' - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,1,1,1,0, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,0,1,1,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x70 'p' - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,1,1,1,1,0, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,1,1,1,0, - 0,1,0,0,0,0, - 0,1,0,0,0,0 -, // 0x71 'q' - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,1,1,1,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,0,1,1,1,1, - 0,0,0,0,0,1, - 0,0,0,0,0,1 -, // 0x72 'r' - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,1,0,1,1, - 0,0,1,1,0,0, - 0,0,1,0,0,0, - 0,0,1,0,0,0, - 0,0,1,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x73 's' - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,1,1,1,1, - 0,1,0,0,0,0, - 0,0,1,1,1,0, - 0,0,0,0,0,1, - 0,1,1,1,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x74 't' - 0,0,0,0,0,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,1,1,1,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,0,0,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x75 'u' - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,0,1,1,1,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x76 'v' - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,0,1,0,1,0, - 0,0,1,0,1,0, - 0,0,0,1,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x77 'w' - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,1,0,1, - 0,1,0,1,0,1, - 0,0,1,0,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x78 'x' - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,1,0,0,0,1, - 0,0,1,0,1,0, - 0,0,0,1,0,0, - 0,0,1,0,1,0, - 0,1,0,0,0,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x79 'y' - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,0,1,1,1,1, - 0,0,0,0,0,1, - 0,0,1,1,1,0 -, // 0x7a 'z' - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,1,1,1,1,1, - 0,0,0,0,1,0, - 0,0,0,1,0,0, - 0,0,1,0,0,0, - 0,1,1,1,1,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x7b 'one fourth symbol' - 0,0,0,0,0,0, - 0,0,1,0,0,0, - 0,0,1,0,0,0, - 0,0,1,0,0,0, - 0,0,1,0,0,1, - 0,0,0,0,1,1, - 0,0,0,1,0,1, - 0,0,0,1,1,1, - 0,0,0,0,0,1, - 0,0,0,0,0,0 -, // 0x7c '|' - 0,0,0,0,0,0, - 0,0,1,0,1,0, - 0,0,1,0,1,0, - 0,0,1,0,1,0, - 0,0,1,0,1,0, - 0,0,1,0,1,0, - 0,0,1,0,1,0, - 0,0,1,0,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x7d ' three fourths symbol' - 0,0,0,0,0,0, - 0,1,1,0,0,0, - 0,0,0,1,0,0, - 0,1,1,0,0,0, - 0,0,0,1,0,0, - 0,1,1,0,0,1, - 0,0,0,0,1,1, - 0,0,0,1,0,1, - 0,0,0,1,1,1, - 0,0,0,0,0,1 -, // 0x7e Divide - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,1,0,0, - 0,0,0,0,0,0, - 0,1,1,1,1,1, - 0,0,0,0,0,0, - 0,0,0,1,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x7f Block - 0,0,0,0,0,0, - 0,1,1,1,1,1, - 0,1,1,1,1,1, - 0,1,1,1,1,1, - 0,1,1,1,1,1, - 0,1,1,1,1,1, - 0,1,1,1,1,1, - 0,1,1,1,1,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -}; - - -/* Graphics Character Set */ - -static const char teletext_graphics[96*60]={ - // 0x20 - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x21 - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x22 - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x23 - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x24 - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x25 - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x26 - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x27 - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x28 - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x29 - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x2a - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x2b - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x2c - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x2d - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x2e - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x2f - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x30 - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0 -, // 0x31 - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0 -, // 0x32 - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0 -, // 0x33 - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0 -, // 0x34 - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0 -, // 0x35 - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0 -, // 0x36 - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0 -, // 0x37 - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0 -, // 0x38 - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0 -, // 0x39 - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0 -, // 0x3a - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0 -, // 0x3b - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0 -, // 0x3c - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0 -, // 0x3d - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0 -, // 0x3e - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0 -, // 0x3f - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0 -, // 0x40 '@' - 0,0,0,0,0,0, - 0,0,1,1,1,0, - 0,1,0,0,0,1, - 0,1,0,1,1,1, - 0,1,0,1,0,1, - 0,1,0,1,1,1, - 0,1,0,0,0,0, - 0,0,1,1,1,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x41 'A' - 0,0,0,0,0,0, - 0,0,0,1,0,0, - 0,0,1,0,1,0, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,1,1,1,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x42 'B' - 0,0,0,0,0,0, - 0,1,1,1,1,0, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,1,1,1,0, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,1,1,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x43 'C' - 0,0,0,0,0,0, - 0,0,1,1,1,0, - 0,1,0,0,0,1, - 0,1,0,0,0,0, - 0,1,0,0,0,0, - 0,1,0,0,0,0, - 0,1,0,0,0,1, - 0,0,1,1,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x44 'D' - 0,0,0,0,0,0, - 0,1,1,1,1,0, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,1,1,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x45 'E' - 0,0,0,0,0,0, - 0,1,1,1,1,1, - 0,1,0,0,0,0, - 0,1,0,0,0,0, - 0,1,1,1,1,0, - 0,1,0,0,0,0, - 0,1,0,0,0,0, - 0,1,1,1,1,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x46 'F' - 0,0,0,0,0,0, - 0,1,1,1,1,1, - 0,1,0,0,0,0, - 0,1,0,0,0,0, - 0,1,1,1,1,0, - 0,1,0,0,0,0, - 0,1,0,0,0,0, - 0,1,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x47 'G' - 0,0,0,0,0,0, - 0,0,1,1,1,0, - 0,1,0,0,0,1, - 0,1,0,0,0,0, - 0,1,0,0,0,0, - 0,1,0,0,1,1, - 0,1,0,0,0,1, - 0,0,1,1,1,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x48 'H' - 0,0,0,0,0,0, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,1,1,1,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x49 'I' - 0,0,0,0,0,0, - 0,0,1,1,1,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,1,1,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x4a 'J' - 0,0,0,0,0,0, - 0,0,0,0,0,1, - 0,0,0,0,0,1, - 0,0,0,0,0,1, - 0,0,0,0,0,1, - 0,0,0,0,0,1, - 0,1,0,0,0,1, - 0,0,1,1,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x4b 'K' - 0,0,0,0,0,0, - 0,1,0,0,0,1, - 0,1,0,0,1,0, - 0,1,0,1,0,0, - 0,1,1,0,0,0, - 0,1,0,1,0,0, - 0,1,0,0,1,0, - 0,1,0,0,0,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x4c 'L' - 0,0,0,0,0,0, - 0,1,0,0,0,0, - 0,1,0,0,0,0, - 0,1,0,0,0,0, - 0,1,0,0,0,0, - 0,1,0,0,0,0, - 0,1,0,0,0,0, - 0,1,1,1,1,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x4d 'M' - 0,0,0,0,0,0, - 0,1,0,0,0,1, - 0,1,1,0,1,1, - 0,1,0,1,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x4e 'N' - 0,0,0,0,0,0, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,1,0,0,1, - 0,1,0,1,0,1, - 0,1,0,0,1,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x4f 'O' - 0,0,0,0,0,0, - 0,0,1,1,1,0, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,0,1,1,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x50 'P' - 0,0,0,0,0,0, - 0,1,1,1,1,0, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,1,1,1,0, - 0,1,0,0,0,0, - 0,1,0,0,0,0, - 0,1,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x51 'Q' - 0,0,0,0,0,0, - 0,0,1,1,1,0, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,1,0,1, - 0,1,0,0,1,0, - 0,0,1,1,0,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x52 'R' - 0,0,0,0,0,0, - 0,1,1,1,1,0, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,1,1,1,0, - 0,1,0,1,0,0, - 0,1,0,0,1,0, - 0,1,0,0,0,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x53 'S' - 0,0,0,0,0,0, - 0,0,1,1,1,0, - 0,1,0,0,0,1, - 0,1,0,0,0,0, - 0,0,1,1,1,0, - 0,0,0,0,0,1, - 0,1,0,0,0,1, - 0,0,1,1,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x54 'T' - 0,0,0,0,0,0, - 0,1,1,1,1,1, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x55 'U' - 0,0,0,0,0,0, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,0,1,1,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x56 'V' - 0,0,0,0,0,0, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,0,1,0,1,0, - 0,0,1,0,1,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x57 'W' - 0,0,0,0,0,0, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,1,0,1, - 0,1,0,1,0,1, - 0,1,0,1,0,1, - 0,0,1,0,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x58 'X' - 0,0,0,0,0,0, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,0,1,0,1,0, - 0,0,0,1,0,0, - 0,0,1,0,1,0, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x59 'Y' - 0,0,0,0,0,0, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,0,1,0,1,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x5a 'Z' - 0,0,0,0,0,0, - 0,1,1,1,1,1, - 0,0,0,0,0,1, - 0,0,0,0,1,0, - 0,0,0,1,0,0, - 0,0,1,0,0,0, - 0,1,0,0,0,0, - 0,1,1,1,1,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x5b Left Arrow - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,1,0,0, - 0,0,1,0,0,0, - 0,1,1,1,1,1, - 0,0,1,0,0,0, - 0,0,0,1,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x5c '?' - 0,0,0,0,0,0, - 0,1,0,0,0,0, - 0,1,0,0,0,0, - 0,1,0,0,0,0, - 0,1,0,1,1,0, - 0,0,0,0,0,1, - 0,0,0,0,1,0, - 0,0,0,1,0,0, - 0,0,0,1,1,1, - 0,0,0,0,0,0 -, // 0x5d Right Arrow - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,1,0,0, - 0,0,0,0,1,0, - 0,1,1,1,1,1, - 0,0,0,0,1,0, - 0,0,0,1,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x5e Up Arrow - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,1,0,0, - 0,0,1,1,1,0, - 0,1,0,1,0,1, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x5f '#' - 0,0,0,0,0,0, - 0,0,1,0,1,0, - 0,0,1,0,1,0, - 0,1,1,1,1,1, - 0,0,1,0,1,0, - 0,1,1,1,1,1, - 0,0,1,0,1,0, - 0,0,1,0,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, // 0x60 - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1 -, // 0x61 - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1 -, // 0x62 - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1 -, // 0x63 - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1 -, // 0x64 - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1 -, // 0x65 - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1 -, // 0x66 - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1 -, // 0x67 - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1 -, // 0x68 - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1 -, // 0x69 - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1 -, // 0x6a - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1 -, // 0x6b - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1 -, // 0x6c - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1 -, // 0x6d - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1 -, // 0x6e - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1 -, // 0x6f - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1 -, // 0x70 - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1 -, // 0x71 - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1 -, // 0x72 - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1 -, // 0x73 - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1 -, // 0x74 - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1 -, // 0x75 - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1 -, // 0x76 - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1 -, // 0x77 - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1 -, // 0x78 - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1 -, // 0x79 - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1 -, // 0x7a - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1 -, // 0x7b - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1 -, // 0x7c - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1 -, // 0x7d - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,0,0,0, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1 -, // 0x7e - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 0,0,0,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1 -, // 0x7f - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1, - 1,1,1,1,1,1 -}; - -/* Separated Graphics Character Set */ - -static const char teletext_separated_graphics[96*60]={ - // Character ' ' (32) - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, - // Character '!' (33) - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, - // Character '"' (34) - 0,0,0,1,1,0, - 0,0,0,1,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, - // Character '#' (35) - 1,1,0,1,1,0, - 1,1,0,1,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, - // Character '$' (36) - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, - // Character '%' (37) - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 0,0,0,0,0,0, - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, - // Character '&' (38) - 0,0,0,1,1,0, - 0,0,0,1,1,0, - 0,0,0,0,0,0, - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, - // Character ''' (39) - 1,1,0,1,1,0, - 1,1,0,1,1,0, - 0,0,0,0,0,0, - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, - // Character '(' (40) - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,1,1,0, - 0,0,0,1,1,0, - 0,0,0,1,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, - // Character ')' (41) - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,1,1,0, - 0,0,0,1,1,0, - 0,0,0,1,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, - // Character '*' (42) - 0,0,0,1,1,0, - 0,0,0,1,1,0, - 0,0,0,1,1,0, - 0,0,0,0,0,0, - 0,0,0,1,1,0, - 0,0,0,1,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, - // Character '+' (43) - 1,1,0,1,1,0, - 1,1,0,1,1,0, - 0,0,0,0,0,0, - 0,0,0,1,1,0, - 0,0,0,1,1,0, - 0,0,0,1,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, - // Character ',' (44) - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 1,1,0,1,1,0, - 1,1,0,1,1,0, - 1,1,0,1,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, - // Character '-' (45) - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 0,0,0,0,0,0, - 1,1,0,1,1,0, - 1,1,0,1,1,0, - 1,1,0,1,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, - // Character '.' (46) - 0,0,0,1,1,0, - 0,0,0,1,1,0, - 0,0,0,0,0,0, - 1,1,0,1,1,0, - 1,1,0,1,1,0, - 1,1,0,1,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, - // Character '/' (47) - 1,1,0,1,1,0, - 1,1,0,1,1,0, - 0,0,0,0,0,0, - 1,1,0,1,1,0, - 1,1,0,1,1,0, - 1,1,0,1,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, - // Character '0' (48) - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 0,0,0,0,0,0 -, - // Character '1' (49) - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 0,0,0,0,0,0 -, - // Character '2' (50) - 0,0,0,1,1,0, - 0,0,0,1,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 0,0,0,0,0,0 -, - // Character '3' (51) - 1,1,0,1,1,0, - 1,1,0,1,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 0,0,0,0,0,0 -, - // Character '4' (52) - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 0,0,0,0,0,0, - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 0,0,0,0,0,0 -, - // Character '5' (53) - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 0,0,0,0,0,0, - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 0,0,0,0,0,0, - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 0,0,0,0,0,0 -, - // Character '6' (54) - 0,0,0,1,1,0, - 0,0,0,1,1,0, - 0,0,0,0,0,0, - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 0,0,0,0,0,0, - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 0,0,0,0,0,0 -, - // Character '7' (55) - 1,1,0,1,1,0, - 1,1,0,1,1,0, - 0,0,0,0,0,0, - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 0,0,0,0,0,0, - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 0,0,0,0,0,0 -, - // Character '8' (56) - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,1,1,0, - 0,0,0,1,1,0, - 0,0,0,1,1,0, - 0,0,0,0,0,0, - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 0,0,0,0,0,0 -, - // Character '9' (57) - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,1,1,0, - 0,0,0,1,1,0, - 0,0,0,1,1,0, - 0,0,0,0,0,0, - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 0,0,0,0,0,0 -, - // Character ':' (58) - 0,0,0,1,1,0, - 0,0,0,1,1,0, - 0,0,0,0,0,0, - 0,0,0,1,1,0, - 0,0,0,1,1,0, - 0,0,0,1,1,0, - 0,0,0,0,0,0, - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 0,0,0,0,0,0 -, - // Character ';' (59) - 1,1,0,1,1,0, - 1,1,0,1,1,0, - 0,0,0,0,0,0, - 0,0,0,1,1,0, - 0,0,0,1,1,0, - 0,0,0,1,1,0, - 0,0,0,0,0,0, - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 0,0,0,0,0,0 -, - // Character '<' (60) - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 1,1,0,1,1,0, - 1,1,0,1,1,0, - 1,1,0,1,1,0, - 0,0,0,0,0,0, - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 0,0,0,0,0,0 -, - // Character '=' (61) - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 0,0,0,0,0,0, - 1,1,0,1,1,0, - 1,1,0,1,1,0, - 1,1,0,1,1,0, - 0,0,0,0,0,0, - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 0,0,0,0,0,0 -, - // Character '>' (62) - 0,0,0,1,1,0, - 0,0,0,1,1,0, - 0,0,0,0,0,0, - 1,1,0,1,1,0, - 1,1,0,1,1,0, - 1,1,0,1,1,0, - 0,0,0,0,0,0, - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 0,0,0,0,0,0 -, - // Character '?' (63) - 1,1,0,1,1,0, - 1,1,0,1,1,0, - 0,0,0,0,0,0, - 1,1,0,1,1,0, - 1,1,0,1,1,0, - 1,1,0,1,1,0, - 0,0,0,0,0,0, - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 0,0,0,0,0,0 -, - // Character '@' (64) - 0,0,0,0,0,0, - 0,0,1,1,1,0, - 0,1,0,0,0,1, - 0,1,0,1,1,1, - 0,1,0,1,0,1, - 0,1,0,1,1,1, - 0,1,0,0,0,0, - 0,0,1,1,1,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, - // Character 'A' (65) - 0,0,0,0,0,0, - 0,0,0,1,0,0, - 0,0,1,0,1,0, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,1,1,1,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, - // Character 'B' (66) - 0,0,0,0,0,0, - 0,1,1,1,1,0, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,1,1,1,0, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,1,1,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, - // Character 'C' (67) - 0,0,0,0,0,0, - 0,0,1,1,1,0, - 0,1,0,0,0,1, - 0,1,0,0,0,0, - 0,1,0,0,0,0, - 0,1,0,0,0,0, - 0,1,0,0,0,1, - 0,0,1,1,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, - // Character 'D' (68) - 0,0,0,0,0,0, - 0,1,1,1,1,0, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,1,1,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, - // Character 'E' (69) - 0,0,0,0,0,0, - 0,1,1,1,1,1, - 0,1,0,0,0,0, - 0,1,0,0,0,0, - 0,1,1,1,1,0, - 0,1,0,0,0,0, - 0,1,0,0,0,0, - 0,1,1,1,1,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, - // Character 'F' (70) - 0,0,0,0,0,0, - 0,1,1,1,1,1, - 0,1,0,0,0,0, - 0,1,0,0,0,0, - 0,1,1,1,1,0, - 0,1,0,0,0,0, - 0,1,0,0,0,0, - 0,1,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, - // Character 'G' (71) - 0,0,0,0,0,0, - 0,0,1,1,1,0, - 0,1,0,0,0,1, - 0,1,0,0,0,0, - 0,1,0,0,0,0, - 0,1,0,0,1,1, - 0,1,0,0,0,1, - 0,0,1,1,1,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, - // Character 'H' (72) - 0,0,0,0,0,0, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,1,1,1,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, - // Character 'I' (73) - 0,0,0,0,0,0, - 0,0,1,1,1,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,1,1,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, - // Character 'J' (74) - 0,0,0,0,0,0, - 0,0,0,0,0,1, - 0,0,0,0,0,1, - 0,0,0,0,0,1, - 0,0,0,0,0,1, - 0,0,0,0,0,1, - 0,1,0,0,0,1, - 0,0,1,1,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, - // Character 'K' (75) - 0,0,0,0,0,0, - 0,1,0,0,0,1, - 0,1,0,0,1,0, - 0,1,0,1,0,0, - 0,1,1,0,0,0, - 0,1,0,1,0,0, - 0,1,0,0,1,0, - 0,1,0,0,0,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, - // Character 'L' (76) - 0,0,0,0,0,0, - 0,1,0,0,0,0, - 0,1,0,0,0,0, - 0,1,0,0,0,0, - 0,1,0,0,0,0, - 0,1,0,0,0,0, - 0,1,0,0,0,0, - 0,1,1,1,1,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, - // Character 'M' (77) - 0,0,0,0,0,0, - 0,1,0,0,0,1, - 0,1,1,0,1,1, - 0,1,0,1,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, - // Character 'N' (78) - 0,0,0,0,0,0, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,1,0,0,1, - 0,1,0,1,0,1, - 0,1,0,0,1,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, - // Character 'O' (79) - 0,0,0,0,0,0, - 0,0,1,1,1,0, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,0,1,1,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, - // Character 'P' (80) - 0,0,0,0,0,0, - 0,1,1,1,1,0, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,1,1,1,0, - 0,1,0,0,0,0, - 0,1,0,0,0,0, - 0,1,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, - // Character 'Q' (81) - 0,0,0,0,0,0, - 0,0,1,1,1,0, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,1,0,1, - 0,1,0,0,1,0, - 0,0,1,1,0,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, - // Character 'R' (82) - 0,0,0,0,0,0, - 0,1,1,1,1,0, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,1,1,1,0, - 0,1,0,1,0,0, - 0,1,0,0,1,0, - 0,1,0,0,0,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, - // Character 'S' (83) - 0,0,0,0,0,0, - 0,0,1,1,1,0, - 0,1,0,0,0,1, - 0,1,0,0,0,0, - 0,0,1,1,1,0, - 0,0,0,0,0,1, - 0,1,0,0,0,1, - 0,0,1,1,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, - // Character 'T' (84) - 0,0,0,0,0,0, - 0,1,1,1,1,1, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, - // Character 'U' (85) - 0,0,0,0,0,0, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,0,1,1,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, - // Character 'V' (86) - 0,0,0,0,0,0, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,0,1,0,1,0, - 0,0,1,0,1,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, - // Character 'W' (87) - 0,0,0,0,0,0, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,1,0,1,0,1, - 0,1,0,1,0,1, - 0,1,0,1,0,1, - 0,0,1,0,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, - // Character 'X' (88) - 0,0,0,0,0,0, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,0,1,0,1,0, - 0,0,0,1,0,0, - 0,0,1,0,1,0, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, - // Character 'Y' (89) - 0,0,0,0,0,0, - 0,1,0,0,0,1, - 0,1,0,0,0,1, - 0,0,1,0,1,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, - // Character 'Z' (90) - 0,0,0,0,0,0, - 0,1,1,1,1,1, - 0,0,0,0,0,1, - 0,0,0,0,1,0, - 0,0,0,1,0,0, - 0,0,1,0,0,0, - 0,1,0,0,0,0, - 0,1,1,1,1,1, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, - // Character '[' (91) - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,1,0,0, - 0,0,1,0,0,0, - 0,1,1,1,1,1, - 0,0,1,0,0,0, - 0,0,0,1,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, - // Character '\' (92) - 0,0,0,0,0,0, - 0,1,0,0,0,0, - 0,1,0,0,0,0, - 0,1,0,0,0,0, - 0,1,0,1,1,0, - 0,0,0,0,0,1, - 0,0,0,0,1,0, - 0,0,0,1,0,0, - 0,0,0,1,1,1, - 0,0,0,0,0,0 -, - // Character ']' (93) - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,1,0,0, - 0,0,0,0,1,0, - 0,1,1,1,1,1, - 0,0,0,0,1,0, - 0,0,0,1,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, - // Character '^' (94) - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,1,0,0, - 0,0,1,1,1,0, - 0,1,0,1,0,1, - 0,0,0,1,0,0, - 0,0,0,1,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, - // Character '_' (95) - 0,0,0,0,0,0, - 0,0,1,0,1,0, - 0,0,1,0,1,0, - 0,1,1,1,1,1, - 0,0,1,0,1,0, - 0,1,1,1,1,1, - 0,0,1,0,1,0, - 0,0,1,0,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0 -, - // Character '`' (96) - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,1,1,0, - 0,0,0,1,1,0, - 0,0,0,0,0,0 -, - // Character 'a' (97) - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,1,1,0, - 0,0,0,1,1,0, - 0,0,0,0,0,0 -, - // Character 'b' (98) - 0,0,0,1,1,0, - 0,0,0,1,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,1,1,0, - 0,0,0,1,1,0, - 0,0,0,0,0,0 -, - // Character 'c' (99) - 1,1,0,1,1,0, - 1,1,0,1,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,1,1,0, - 0,0,0,1,1,0, - 0,0,0,0,0,0 -, - // Character 'd' (100) - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,1,1,0, - 0,0,0,1,1,0, - 0,0,0,0,0,0 -, - // Character 'e' (101) - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 0,0,0,0,0,0, - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,1,1,0, - 0,0,0,1,1,0, - 0,0,0,0,0,0 -, - // Character 'f' (102) - 0,0,0,1,1,0, - 0,0,0,1,1,0, - 0,0,0,0,0,0, - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,1,1,0, - 0,0,0,1,1,0, - 0,0,0,0,0,0 -, - // Character 'g' (103) - 1,1,0,1,1,0, - 1,1,0,1,1,0, - 0,0,0,0,0,0, - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,1,1,0, - 0,0,0,1,1,0, - 0,0,0,0,0,0 -, - // Character 'h' (104) - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,1,1,0, - 0,0,0,1,1,0, - 0,0,0,1,1,0, - 0,0,0,0,0,0, - 0,0,0,1,1,0, - 0,0,0,1,1,0, - 0,0,0,0,0,0 -, - // Character 'i' (105) - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,1,1,0, - 0,0,0,1,1,0, - 0,0,0,1,1,0, - 0,0,0,0,0,0, - 0,0,0,1,1,0, - 0,0,0,1,1,0, - 0,0,0,0,0,0 -, - // Character 'j' (106) - 0,0,0,1,1,0, - 0,0,0,1,1,0, - 0,0,0,0,0,0, - 0,0,0,1,1,0, - 0,0,0,1,1,0, - 0,0,0,1,1,0, - 0,0,0,0,0,0, - 0,0,0,1,1,0, - 0,0,0,1,1,0, - 0,0,0,0,0,0 -, - // Character 'k' (107) - 1,1,0,1,1,0, - 1,1,0,1,1,0, - 0,0,0,0,0,0, - 0,0,0,1,1,0, - 0,0,0,1,1,0, - 0,0,0,1,1,0, - 0,0,0,0,0,0, - 0,0,0,1,1,0, - 0,0,0,1,1,0, - 0,0,0,0,0,0 -, - // Character 'l' (108) - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 1,1,0,1,1,0, - 1,1,0,1,1,0, - 1,1,0,1,1,0, - 0,0,0,0,0,0, - 0,0,0,1,1,0, - 0,0,0,1,1,0, - 0,0,0,0,0,0 -, - // Character 'm' (109) - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 0,0,0,0,0,0, - 1,1,0,1,1,0, - 1,1,0,1,1,0, - 0,0,0,0,0,0, - 0,0,0,1,1,0, - 0,0,0,1,1,0, - 0,0,0,0,0,0 -, - // Character 'n' (110) - 0,0,0,1,1,0, - 0,0,0,1,1,0, - 0,0,0,0,0,0, - 1,1,0,1,1,0, - 1,1,0,1,1,0, - 1,1,0,1,1,0, - 0,0,0,0,0,0, - 0,0,0,1,1,0, - 0,0,0,1,1,0, - 0,0,0,0,0,0 -, - // Character 'o' (111) - 1,1,0,1,1,0, - 1,1,0,1,1,0, - 0,0,0,0,0,0, - 1,1,0,1,1,0, - 1,1,0,1,1,0, - 1,1,0,1,1,0, - 0,0,0,0,0,0, - 0,0,0,1,1,0, - 0,0,0,1,1,0, - 0,0,0,0,0,0 -, - // Character 'p' (112) - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 1,1,0,1,1,0, - 1,1,0,1,1,0, - 0,0,0,0,0,0 -, - // Character 'q' (113) - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 1,1,0,1,1,0, - 1,1,0,1,1,0, - 0,0,0,0,0,0 -, - // Character 'r' (114) - 0,0,0,1,1,0, - 0,0,0,1,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 1,1,0,1,1,0, - 1,1,0,1,1,0, - 0,0,0,0,0,0 -, - // Character 's' (115) - 1,1,0,1,1,0, - 1,1,0,1,1,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 1,1,0,1,1,0, - 1,1,0,1,1,0, - 0,0,0,0,0,0 -, - // Character 't' (116) - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 0,0,0,0,0,0, - 1,1,0,1,1,0, - 1,1,0,1,1,0, - 0,0,0,0,0,0 -, - // Character 'u' (117) - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 0,0,0,0,0,0, - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 0,0,0,0,0,0, - 1,1,0,1,1,0, - 1,1,0,1,1,0, - 0,0,0,0,0,0 -, - // Character 'v' (118) - 0,0,0,1,1,0, - 0,0,0,1,1,0, - 0,0,0,0,0,0, - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 0,0,0,0,0,0, - 1,1,0,1,1,0, - 1,1,0,1,1,0, - 0,0,0,0,0,0 -, - // Character 'w' (119) - 1,1,0,1,1,0, - 1,1,0,1,1,0, - 0,0,0,0,0,0, - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 0,0,0,0,0,0, - 1,1,0,1,1,0, - 1,1,0,1,1,0, - 0,0,0,0,0,0 -, - // Character 'x' (120) - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,1,1,0, - 0,0,0,1,1,0, - 0,0,0,1,1,0, - 0,0,0,0,0,0, - 1,1,0,1,1,0, - 1,1,0,1,1,0, - 0,0,0,0,0,0 -, - // Character 'y' (121) - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,1,1,0, - 0,0,0,1,1,0, - 0,0,0,1,1,0, - 0,0,0,0,0,0, - 1,1,1,1,1,0, - 1,1,1,1,1,0, - 0,0,0,0,0,0 -, - // Character 'z' (122) - 0,0,0,1,1,0, - 0,0,0,1,1,0, - 0,0,0,0,0,0, - 0,0,0,1,1,0, - 0,0,0,1,1,0, - 0,0,0,1,1,0, - 0,0,0,0,0,0, - 1,1,0,1,1,0, - 1,1,0,1,1,0, - 0,0,0,0,0,0 -, - // Character '{' (123) - 1,1,0,1,1,0, - 1,1,0,1,1,0, - 0,0,0,0,0,0, - 0,0,0,1,1,0, - 0,0,0,1,1,0, - 0,0,0,1,1,0, - 0,0,0,0,0,0, - 1,1,0,1,1,0, - 1,1,0,1,1,0, - 0,0,0,0,0,0 -, - // Character '|' (124) - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 0,0,0,0,0,0, - 1,1,0,1,1,0, - 1,1,0,1,1,0, - 1,1,0,1,1,0, - 0,0,0,0,0,0, - 1,1,0,1,1,0, - 1,1,0,1,1,0, - 0,0,0,0,0,0 -, - // Character '}' (125) - 1,1,0,0,0,0, - 1,1,0,0,0,0, - 0,0,0,0,0,0, - 1,1,0,1,1,0, - 1,1,0,1,1,0, - 1,1,0,1,1,0, - 0,0,0,0,0,0, - 1,1,0,1,1,0, - 1,1,0,1,1,0, - 0,0,0,0,0,0 -, - // Character '~' (126) - 0,0,0,1,1,0, - 0,0,0,1,1,0, - 0,0,0,0,0,0, - 1,1,0,1,1,0, - 1,1,0,1,1,0, - 1,1,0,1,1,0, - 0,0,0,0,0,0, - 1,1,0,1,1,0, - 1,1,0,1,1,0, - 0,0,0,0,0,0 -, - // Character '' (127) - 1,1,0,1,1,0, - 1,1,0,1,1,0, - 0,0,0,0,0,0, - 1,1,0,1,1,0, - 1,1,0,1,1,0, - 1,1,0,1,1,0, - 0,0,0,0,0,0, - 1,1,0,1,1,0, - 1,1,0,1,1,0, - 0,0,0,0,0,0 -}; - - -typedef struct -{ - int data; - int lose; - - const char *lookup; - const char *graphics; - int colour; - int rcolour; - int bgcolour; - int start_line; - int double_height; - int double_height_set; - int double_height_offset; - int linecount; - int flash; - int holdgraphics; - int lastcode; - - int frame_count; - const saa505x_interface *intf; -} teletext_t; - - -INLINE teletext_t *get_safe_token( device_t *device ) -{ - assert(device != NULL); - assert(device->type() == SAA505X); - - return (teletext_t *)downcast<saa505x_device *>(device)->token(); -} - -static DEVICE_START( saa505x ) -{ - teletext_t *tt = get_safe_token(device); - tt->lookup=teletext_saa5050_characters; - tt->graphics=teletext_graphics; - tt->colour=7; - tt->intf = (const saa505x_interface *)device->static_config(); -} - -const device_type SAA505X = &device_creator<saa505x_device>; - -saa505x_device::saa505x_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) - : device_t(mconfig, SAA505X, "SAA505x Video", tag, owner, clock) -{ - m_token = global_alloc_array_clear(UINT8, sizeof(teletext_t)); -} - -//------------------------------------------------- -// device_config_complete - perform any -// operations now that the configuration is -// complete -//------------------------------------------------- - -void saa505x_device::device_config_complete() -{ -} - -//------------------------------------------------- -// device_start - device-specific startup -//------------------------------------------------- - -void saa505x_device::device_start() -{ - DEVICE_START_NAME( saa505x )(this); -} - - - -void teletext_data_w(device_t *device, int offset, int data) -{ - teletext_t *tt = get_safe_token(device); - tt->data=data & 0x7f; -} - -void teletext_DEW(device_t *device) -{ - teletext_t *tt = get_safe_token(device); - tt->linecount=18; - tt->double_height=0; - tt->double_height_set=0; - tt->double_height_offset=0; - tt->frame_count=(tt->frame_count+1)%50; -} - -void teletext_LOSE_w(device_t *device, int offset, int data) -{ - teletext_t *tt = get_safe_token(device); - - if ((data)&&(!tt->lose)) - { - - tt->lookup=teletext_saa5050_characters; - tt->colour=7; - tt->bgcolour=0; - tt->graphics=teletext_graphics; - tt->linecount=(tt->linecount+1)%19; - tt->start_line=0; - tt->double_height=0; - tt->flash=0; - tt->holdgraphics=0; - tt->lastcode=0x20; - - // only check the double height stuff if at the first row of a new line - if (!tt->linecount) - { - tt->double_height_offset=((!tt->double_height_set)||tt->double_height_offset)?0:10; - tt->double_height_set=0; - } - - } - - tt->lose=data; -} - - -void teletext_F1(device_t *device) -{ - teletext_t *tt = get_safe_token(device); - int sc1; - int code; - code=tt->data; - - switch (code) - { - // 0x00 Not used - - case 0x01: case 0x02: case 0x03: case 0x04: - case 0x05: case 0x06: case 0x07: - tt->lookup=teletext_saa5050_characters; - tt->colour=code; - break; - - - case 0x08: // Flash - tt->flash=tt->frame_count<20?1:0; - break; - case 0x09: // Steady - tt->flash=0; - break; - - // 0x0a End Box NOT USED - // 0x0b Start Box NOT USED - - case 0x0c: // Normal Height - tt->double_height=0; - tt->start_line=0; - break; - case 0x0d: // Double Height - tt->double_height=1; - tt->double_height_set=1; - tt->start_line=tt->double_height_offset; - break; - - // 0x0e S0 NOT USED - // 0x0f S1 NOT USED - // 0x10 DLE NOT USED - - case 0x11: case 0x12: case 0x13: case 0x14: - case 0x15: case 0x16: case 0x17: - tt->lookup=tt->graphics; - tt->colour=code&0x07; - break; - - // 0x18 Conceal Display - - case 0x19: // Contiguois Graphics - tt->graphics=teletext_graphics; - if (tt->lookup!=teletext_saa5050_characters) - tt->lookup=tt->graphics; - break; - case 0x1a: // Separated Graphics - tt->graphics=teletext_separated_graphics; - if (tt->lookup!=teletext_saa5050_characters) - tt->lookup=tt->graphics; - break; - - // 0x1b ESC NOT USED - - case 0x1c: // Black Background - tt->bgcolour=0; - break; - case 0x1d: // New Background - tt->bgcolour=tt->colour; - break; - - case 0x1e: - tt->holdgraphics=1; - break; - - case 0x1f: - tt->holdgraphics=0; - break; - } - - if (tt->lose) - { - tt->rcolour=tt->flash?tt->bgcolour:tt->colour; - if (code<0x20) { - if (tt->holdgraphics) { - code=tt->lastcode; - } else { - code=0x20; - } - } - tt->lastcode=code; - code=(code-0x20)*60+(6*(((tt->linecount/2)+tt->start_line)>>tt->double_height)); - for(sc1=0;sc1<6;sc1++) - { - (tt->intf->out_Pixel_func)(device,0,tt->lookup[code++]?tt->rcolour:tt->bgcolour); - } - } else { - - (tt->intf->out_Pixel_func)(device,0,0); - (tt->intf->out_Pixel_func)(device,0,0); - (tt->intf->out_Pixel_func)(device,0,0); - (tt->intf->out_Pixel_func)(device,0,0); - (tt->intf->out_Pixel_func)(device,0,0); - (tt->intf->out_Pixel_func)(device,0,0); - } -} diff --git a/src/mess/video/saa505x.h b/src/mess/video/saa505x.h deleted file mode 100644 index d7fc9610687..00000000000 --- a/src/mess/video/saa505x.h +++ /dev/null @@ -1,45 +0,0 @@ -/************************************************************************ - saa505x - - MESS Driver By: - - Gordon Jefferyes - mess_bbc@gjeffery.dircon.co.uk - - ************************************************************************/ - - -typedef struct _saa505x_interface saa505x_interface; -struct _saa505x_interface -{ - void (*out_Pixel_func)(device_t *device, int offset, int data); -}; - -void teletext_DEW(device_t *device); -void teletext_LOSE_w(device_t *device, int offset, int data); -void teletext_data_w(device_t *device, int offset, int data); -void teletext_F1(device_t *device); - -class saa505x_device : public device_t -{ -public: - saa505x_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); - ~saa505x_device() { global_free(m_token); } - - // access to legacy token - void *token() const { assert(m_token != NULL); return m_token; } -protected: - // device-level overrides - virtual void device_config_complete(); - virtual void device_start(); -private: - // internal state - void *m_token; -}; - -extern const device_type SAA505X; - - -#define MCFG_SAA505X_VIDEO_ADD(_tag, _intf) \ - MCFG_DEVICE_ADD(_tag, SAA505X, 0) \ - MCFG_DEVICE_CONFIG(_intf) |