OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [tags/] [MW_0_8_9PRE7/] [mw/] [src/] [drivers/] [vgainit.c] - Diff between revs 674 and 1765

Only display areas with differences | Details | Blame | View Log

Rev 674 Rev 1765
/*
/*
 * Copyright (c) 1999 Greg Haerr <greg@censoft.com>
 * Copyright (c) 1999 Greg Haerr <greg@censoft.com>
 * Copyright (c) 1991 David I. Bell
 * Copyright (c) 1991 David I. Bell
 * Permission is granted to use, distribute, or modify this source,
 * Permission is granted to use, distribute, or modify this source,
 * provided that this copyright notice remains intact.
 * provided that this copyright notice remains intact.
 *
 *
 * Alternate EGA/VGA Screen Driver Init, direct hw programming
 * Alternate EGA/VGA Screen Driver Init, direct hw programming
 */
 */
#include "device.h"
#include "device.h"
#include "vgaplan4.h"
#include "vgaplan4.h"
 
 
#ifdef __rtems__
#ifdef __rtems__
#define ROMFONT         0        /* =0 no bios rom fonts available*/
#define ROMFONT         0        /* =0 no bios rom fonts available*/
#else
#else
#define ROMFONT         1       /* =1 uses PC rom fonts */
#define ROMFONT         1       /* =1 uses PC rom fonts */
#endif
#endif
 
 
/* Define one and only one of the following to be nonzero*/
/* Define one and only one of the following to be nonzero*/
#define VGA_ET4000      0        /* TSENG LABS ET4000 chip 800x600*/
#define VGA_ET4000      0        /* TSENG LABS ET4000 chip 800x600*/
#define VGA_STANDARD    1       /* standard VGA 640x480*/
#define VGA_STANDARD    1       /* standard VGA 640x480*/
#define EGA_STANDARD    0        /* standard EGA 640x350*/
#define EGA_STANDARD    0        /* standard EGA 640x350*/
 
 
#define DONE    0
#define DONE    0
#define IN      1
#define IN      1
#define OUT     2
#define OUT     2
 
 
#define RAM_SCAN_LINES  32      /* number of scan lines in fonts in RAM */
#define RAM_SCAN_LINES  32      /* number of scan lines in fonts in RAM */
#define FONT_CHARS      256     /* number of characters in font tables */
#define FONT_CHARS      256     /* number of characters in font tables */
#define CHAR_WIDTH      8       /* number of pixels for character width */
#define CHAR_WIDTH      8       /* number of pixels for character width */
 
 
#define PALREG  0x3c0
#define PALREG  0x3c0
#define SEQREG  0x3c4
#define SEQREG  0x3c4
#define SEQVAL  0x3c5
#define SEQVAL  0x3c5
#define GRREG   0x3ce
#define GRREG   0x3ce
#define GRVAL   0x3cf
#define GRVAL   0x3cf
#define ATTRREG 0x3da
#define ATTRREG 0x3da
#define CRTCREG 0x3d4
#define CRTCREG 0x3d4
#define CRTCVAL 0x3d5
#define CRTCVAL 0x3d5
 
 
#define GENREG1 0x3c2
#define GENREG1 0x3c2
#define GENREG2 0x3cc
#define GENREG2 0x3cc
#define GENREG3 0x3ca
#define GENREG3 0x3ca
 
 
#define DATA_ROTATE     3       /* register number for data rotate */
#define DATA_ROTATE     3       /* register number for data rotate */
 
 
typedef struct {
typedef struct {
  int action;
  int action;
  int port1;
  int port1;
  int data1;
  int data1;
  int port2;
  int port2;
  int data2;
  int data2;
} REGIO;
} REGIO;
 
 
/* extern data*/
/* extern data*/
#if ROMFONT
#if ROMFONT
extern FARADDR          rom_char_addr;          /* address of ROM font*/
extern FARADDR          rom_char_addr;          /* address of ROM font*/
extern int              ROM_CHAR_HEIGHT;        /* ROM character height*/
extern int              ROM_CHAR_HEIGHT;        /* ROM character height*/
#endif
#endif
 
 
/* local data*/
/* local data*/
extern REGIO            graphics_on[];
extern REGIO            graphics_on[];
extern REGIO            graph_off[];
extern REGIO            graph_off[];
 
 
/* entry points*/
/* entry points*/
void            ega_hwinit(void);
void            ega_hwinit(void);
void            ega_hwterm(void);
void            ega_hwterm(void);
 
 
/* local routines*/
/* local routines*/
static void writeregs(REGIO *rp);
static void writeregs(REGIO *rp);
static void out_word(unsigned int p,unsigned int d);
static void out_word(unsigned int p,unsigned int d);
static void setmode(int mode);
static void setmode(int mode);
 
 
void
void
ega_hwinit(void)
ega_hwinit(void)
{
{
        writeregs(graphics_on);
        writeregs(graphics_on);
}
}
 
 
void
void
ega_hwterm(void)
ega_hwterm(void)
{
{
  setmode(MWMODE_COPY);
  setmode(MWMODE_COPY);
 
 
  /* Copy character table from ROM back into bit plane 2 before turning
  /* Copy character table from ROM back into bit plane 2 before turning
   * off graphics.
   * off graphics.
   */
   */
  out_word(SEQREG, 0x0100);     /* syn reset */
  out_word(SEQREG, 0x0100);     /* syn reset */
  out_word(SEQREG, 0x0402);     /* cpu writes only to map 2 */
  out_word(SEQREG, 0x0402);     /* cpu writes only to map 2 */
  out_word(SEQREG, 0x0704);     /* sequential addressing */
  out_word(SEQREG, 0x0704);     /* sequential addressing */
  out_word(SEQREG, 0x0300);     /* clear synchronous reset */
  out_word(SEQREG, 0x0300);     /* clear synchronous reset */
 
 
  out_word(GRREG, 0x0204);      /* select map 2 for CPU reads */
  out_word(GRREG, 0x0204);      /* select map 2 for CPU reads */
  out_word(GRREG, 0x0005);      /* disable odd-even addressing */
  out_word(GRREG, 0x0005);      /* disable odd-even addressing */
 
 
#if ROMFONT
#if ROMFONT
  {
  {
          FARADDR       srcoffset;
          FARADDR       srcoffset;
          FARADDR       destoffset;
          FARADDR       destoffset;
          int           data;
          int           data;
          int           ch;
          int           ch;
          int           row;
          int           row;
 
 
          srcoffset = rom_char_addr;
          srcoffset = rom_char_addr;
          destoffset = EGA_BASE;
          destoffset = EGA_BASE;
          for (ch = 0; ch < FONT_CHARS; ch++) {
          for (ch = 0; ch < FONT_CHARS; ch++) {
                for(row = 0; row < ROM_CHAR_HEIGHT; row++) {
                for(row = 0; row < ROM_CHAR_HEIGHT; row++) {
                        data = GETBYTE_FP(srcoffset++);
                        data = GETBYTE_FP(srcoffset++);
                        PUTBYTE_FP(destoffset++, data);
                        PUTBYTE_FP(destoffset++, data);
                }
                }
                destoffset += (RAM_SCAN_LINES - ROM_CHAR_HEIGHT);
                destoffset += (RAM_SCAN_LINES - ROM_CHAR_HEIGHT);
          }
          }
  }
  }
#endif
#endif
 
 
  /* Finally set the registers back for text mode. */
  /* Finally set the registers back for text mode. */
  writeregs(graph_off);
  writeregs(graph_off);
}
}
 
 
/* Set the graphics registers as indicated by the given table */
/* Set the graphics registers as indicated by the given table */
static void
static void
writeregs(REGIO *rp)
writeregs(REGIO *rp)
{
{
  for (; rp->action != DONE; rp++) {
  for (; rp->action != DONE; rp++) {
        switch (rp->action) {
        switch (rp->action) {
            case IN:
            case IN:
                        inp(rp->port1);
                        inp(rp->port1);
                        break;
                        break;
            case OUT:
            case OUT:
                        outp(rp->port1, rp->data1);
                        outp(rp->port1, rp->data1);
                        if (rp->port2)
                        if (rp->port2)
                                outp(rp->port2, rp->data2);
                                outp(rp->port2, rp->data2);
                        break;
                        break;
        }
        }
  }
  }
}
}
 
 
/* Output a word to an I/O port. */
/* Output a word to an I/O port. */
static void
static void
out_word(unsigned int p,unsigned int d)
out_word(unsigned int p,unsigned int d)
{
{
  outp(p, d & 0xff);
  outp(p, d & 0xff);
  outp(p + 1, (d >> 8) & 0xff);
  outp(p + 1, (d >> 8) & 0xff);
}
}
 
 
 
 
/* Values for the data rotate register to implement drawing modes. */
/* Values for the data rotate register to implement drawing modes. */
static unsigned char mode_table[MWMODE_MAX + 1] = {
static unsigned char mode_table[MWMODE_MAX + 1] = {
  0x00, 0x18, 0x10, 0x08,       /* COPY, XOR, AND, OR implemented*/
  0x00, 0x18, 0x10, 0x08,       /* COPY, XOR, AND, OR implemented*/
  0x00, 0x00, 0x00, 0x00,       /* no VGA HW for other modes*/
  0x00, 0x00, 0x00, 0x00,       /* no VGA HW for other modes*/
  0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00,
};
};
 
 
/* Set the drawing mode.
/* Set the drawing mode.
 * This is either SET, OR, AND, or XOR.
 * This is either SET, OR, AND, or XOR.
 */
 */
static void
static void
setmode(int mode)
setmode(int mode)
{
{
  if (mode > MWMODE_MAX)
  if (mode > MWMODE_MAX)
        return;
        return;
  outp(GRREG, DATA_ROTATE);
  outp(GRREG, DATA_ROTATE);
  outp(GRVAL, mode_table[mode]);
  outp(GRVAL, mode_table[mode]);
}
}
 
 
 
 
#if VGA_ET4000
#if VGA_ET4000
 
 
/* VGA 800x600 16-color graphics (BIOS mode 0x29).
/* VGA 800x600 16-color graphics (BIOS mode 0x29).
 */
 */
static REGIO graphics_on[] = {
static REGIO graphics_on[] = {
  /* Reset attr F/F */
  /* Reset attr F/F */
  IN, ATTRREG, 0, 0, 0,
  IN, ATTRREG, 0, 0, 0,
 
 
  /* Disable palette */
  /* Disable palette */
  OUT, PALREG, 0, 0, 0,
  OUT, PALREG, 0, 0, 0,
 
 
  /* Reset sequencer regs */
  /* Reset sequencer regs */
  OUT, SEQREG, 0, SEQVAL, 0,
  OUT, SEQREG, 0, SEQVAL, 0,
  OUT, SEQREG, 1, SEQVAL, 1,
  OUT, SEQREG, 1, SEQVAL, 1,
  OUT, SEQREG, 2, SEQVAL, 0x0f,
  OUT, SEQREG, 2, SEQVAL, 0x0f,
  OUT, SEQREG, 3, SEQVAL, 0,
  OUT, SEQREG, 3, SEQVAL, 0,
  OUT, SEQREG, 4, SEQVAL, 6,
  OUT, SEQREG, 4, SEQVAL, 6,
 
 
  /* Misc out reg */
  /* Misc out reg */
  OUT, GENREG1, 0xe3, 0, 0,
  OUT, GENREG1, 0xe3, 0, 0,
 
 
  /* Sequencer enable */
  /* Sequencer enable */
  OUT, SEQREG, 0, SEQVAL, 0x03,
  OUT, SEQREG, 0, SEQVAL, 0x03,
 
 
  /* Unprotect crtc regs 0-7 */
  /* Unprotect crtc regs 0-7 */
  OUT, CRTCREG, 0x11, CRTCVAL, 0,
  OUT, CRTCREG, 0x11, CRTCVAL, 0,
 
 
  /* Crtc */
  /* Crtc */
  OUT, CRTCREG, 0, CRTCVAL, 0x7a,
  OUT, CRTCREG, 0, CRTCVAL, 0x7a,
  OUT, CRTCREG, 1, CRTCVAL, 0x63,
  OUT, CRTCREG, 1, CRTCVAL, 0x63,
  OUT, CRTCREG, 2, CRTCVAL, 0x64,
  OUT, CRTCREG, 2, CRTCVAL, 0x64,
  OUT, CRTCREG, 3, CRTCVAL, 0x1d,
  OUT, CRTCREG, 3, CRTCVAL, 0x1d,
  OUT, CRTCREG, 4, CRTCVAL, 0x68,
  OUT, CRTCREG, 4, CRTCVAL, 0x68,
  OUT, CRTCREG, 5, CRTCVAL, 0x9a,
  OUT, CRTCREG, 5, CRTCVAL, 0x9a,
  OUT, CRTCREG, 6, CRTCVAL, 0x78,
  OUT, CRTCREG, 6, CRTCVAL, 0x78,
  OUT, CRTCREG, 7, CRTCVAL, 0xf0,
  OUT, CRTCREG, 7, CRTCVAL, 0xf0,
  OUT, CRTCREG, 8, CRTCVAL, 0x00,
  OUT, CRTCREG, 8, CRTCVAL, 0x00,
  OUT, CRTCREG, 9, CRTCVAL, 0x60,
  OUT, CRTCREG, 9, CRTCVAL, 0x60,
  OUT, CRTCREG, 10, CRTCVAL, 0x00,
  OUT, CRTCREG, 10, CRTCVAL, 0x00,
  OUT, CRTCREG, 11, CRTCVAL, 0x00,
  OUT, CRTCREG, 11, CRTCVAL, 0x00,
  OUT, CRTCREG, 12, CRTCVAL, 0x00,
  OUT, CRTCREG, 12, CRTCVAL, 0x00,
  OUT, CRTCREG, 13, CRTCVAL, 0x00,
  OUT, CRTCREG, 13, CRTCVAL, 0x00,
  OUT, CRTCREG, 14, CRTCVAL, 0x00,
  OUT, CRTCREG, 14, CRTCVAL, 0x00,
  OUT, CRTCREG, 15, CRTCVAL, 0x00,
  OUT, CRTCREG, 15, CRTCVAL, 0x00,
  OUT, CRTCREG, 16, CRTCVAL, 0x5c,
  OUT, CRTCREG, 16, CRTCVAL, 0x5c,
  OUT, CRTCREG, 17, CRTCVAL, 0x8e,
  OUT, CRTCREG, 17, CRTCVAL, 0x8e,
  OUT, CRTCREG, 18, CRTCVAL, 0x57,
  OUT, CRTCREG, 18, CRTCVAL, 0x57,
  OUT, CRTCREG, 19, CRTCVAL, 0x32,
  OUT, CRTCREG, 19, CRTCVAL, 0x32,
  OUT, CRTCREG, 20, CRTCVAL, 0x00,
  OUT, CRTCREG, 20, CRTCVAL, 0x00,
  OUT, CRTCREG, 21, CRTCVAL, 0x5b,
  OUT, CRTCREG, 21, CRTCVAL, 0x5b,
  OUT, CRTCREG, 22, CRTCVAL, 0x75,
  OUT, CRTCREG, 22, CRTCVAL, 0x75,
  OUT, CRTCREG, 23, CRTCVAL, 0xc3,
  OUT, CRTCREG, 23, CRTCVAL, 0xc3,
  OUT, CRTCREG, 24, CRTCVAL, 0xff,
  OUT, CRTCREG, 24, CRTCVAL, 0xff,
 
 
  /* Graphics controller */
  /* Graphics controller */
  OUT, GENREG2, 0x00, 0, 0,
  OUT, GENREG2, 0x00, 0, 0,
  OUT, GENREG3, 0x01, 0, 0,
  OUT, GENREG3, 0x01, 0, 0,
  OUT, GRREG, 0, GRVAL, 0x00,
  OUT, GRREG, 0, GRVAL, 0x00,
  OUT, GRREG, 1, GRVAL, 0x00,
  OUT, GRREG, 1, GRVAL, 0x00,
  OUT, GRREG, 2, GRVAL, 0x00,
  OUT, GRREG, 2, GRVAL, 0x00,
  OUT, GRREG, 3, GRVAL, 0x00,
  OUT, GRREG, 3, GRVAL, 0x00,
  OUT, GRREG, 4, GRVAL, 0x00,
  OUT, GRREG, 4, GRVAL, 0x00,
  OUT, GRREG, 5, GRVAL, 0x00,
  OUT, GRREG, 5, GRVAL, 0x00,
  OUT, GRREG, 6, GRVAL, 0x05,
  OUT, GRREG, 6, GRVAL, 0x05,
  OUT, GRREG, 7, GRVAL, 0x0f,
  OUT, GRREG, 7, GRVAL, 0x0f,
  OUT, GRREG, 8, GRVAL, 0xff,
  OUT, GRREG, 8, GRVAL, 0xff,
 
 
  /* Reset attribute flip/flop */
  /* Reset attribute flip/flop */
  IN, ATTRREG, 0, 0, 0,
  IN, ATTRREG, 0, 0, 0,
 
 
  /* Palette */
  /* Palette */
  OUT, PALREG, 0, PALREG, 0x00,
  OUT, PALREG, 0, PALREG, 0x00,
  OUT, PALREG, 1, PALREG, 0x01,
  OUT, PALREG, 1, PALREG, 0x01,
  OUT, PALREG, 2, PALREG, 0x02,
  OUT, PALREG, 2, PALREG, 0x02,
  OUT, PALREG, 3, PALREG, 0x03,
  OUT, PALREG, 3, PALREG, 0x03,
  OUT, PALREG, 4, PALREG, 0x04,
  OUT, PALREG, 4, PALREG, 0x04,
  OUT, PALREG, 5, PALREG, 0x05,
  OUT, PALREG, 5, PALREG, 0x05,
  OUT, PALREG, 6, PALREG, 0x06,
  OUT, PALREG, 6, PALREG, 0x06,
  OUT, PALREG, 7, PALREG, 0x07,
  OUT, PALREG, 7, PALREG, 0x07,
  OUT, PALREG, 8, PALREG, 0x38,
  OUT, PALREG, 8, PALREG, 0x38,
  OUT, PALREG, 9, PALREG, 0x39,
  OUT, PALREG, 9, PALREG, 0x39,
  OUT, PALREG, 10, PALREG, 0x3a,
  OUT, PALREG, 10, PALREG, 0x3a,
  OUT, PALREG, 11, PALREG, 0x3b,
  OUT, PALREG, 11, PALREG, 0x3b,
  OUT, PALREG, 12, PALREG, 0x3c,
  OUT, PALREG, 12, PALREG, 0x3c,
  OUT, PALREG, 13, PALREG, 0x3d,
  OUT, PALREG, 13, PALREG, 0x3d,
  OUT, PALREG, 14, PALREG, 0x3e,
  OUT, PALREG, 14, PALREG, 0x3e,
  OUT, PALREG, 15, PALREG, 0x3f,
  OUT, PALREG, 15, PALREG, 0x3f,
  OUT, PALREG, 16, PALREG, 0x01,
  OUT, PALREG, 16, PALREG, 0x01,
  OUT, PALREG, 17, PALREG, 0x00,
  OUT, PALREG, 17, PALREG, 0x00,
  OUT, PALREG, 18, PALREG, 0x0f,
  OUT, PALREG, 18, PALREG, 0x0f,
  OUT, PALREG, 19, PALREG, 0x00,
  OUT, PALREG, 19, PALREG, 0x00,
 
 
  /* Enable palette */
  /* Enable palette */
  OUT, PALREG, 0x20, 0, 0,
  OUT, PALREG, 0x20, 0, 0,
 
 
  /* End of table */
  /* End of table */
  DONE, 0, 0, 0, 0
  DONE, 0, 0, 0, 0
};
};
 
 
 
 
/* VGA 80x25 text (BIOS mode 3).
/* VGA 80x25 text (BIOS mode 3).
 */
 */
static REGIO graph_off[] = {
static REGIO graph_off[] = {
  /* Reset attr F/F */
  /* Reset attr F/F */
  IN, ATTRREG, 0, 0, 0,
  IN, ATTRREG, 0, 0, 0,
 
 
  /* Disable palette */
  /* Disable palette */
  OUT, PALREG, 0, 0, 0,
  OUT, PALREG, 0, 0, 0,
 
 
  /* Reset sequencer regs */
  /* Reset sequencer regs */
  OUT, SEQREG, 0, SEQVAL, 1,
  OUT, SEQREG, 0, SEQVAL, 1,
  OUT, SEQREG, 1, SEQVAL, 1,
  OUT, SEQREG, 1, SEQVAL, 1,
  OUT, SEQREG, 2, SEQVAL, 3,
  OUT, SEQREG, 2, SEQVAL, 3,
  OUT, SEQREG, 3, SEQVAL, 0,
  OUT, SEQREG, 3, SEQVAL, 0,
  OUT, SEQREG, 4, SEQVAL, 2,
  OUT, SEQREG, 4, SEQVAL, 2,
 
 
  /* Misc out reg */
  /* Misc out reg */
  OUT, GENREG1, 0x63, 0, 0,
  OUT, GENREG1, 0x63, 0, 0,
 
 
  /* Sequencer enable */
  /* Sequencer enable */
  OUT, SEQREG, 0, SEQVAL, 3,
  OUT, SEQREG, 0, SEQVAL, 3,
 
 
  /* Unprotect crtc regs 0-7 */
  /* Unprotect crtc regs 0-7 */
  OUT, CRTCREG, 0x11, CRTCVAL, 0,
  OUT, CRTCREG, 0x11, CRTCVAL, 0,
 
 
  /* Crtc */
  /* Crtc */
  OUT, CRTCREG, 0, CRTCVAL, 0x5f,        /* horiz total */
  OUT, CRTCREG, 0, CRTCVAL, 0x5f,        /* horiz total */
  OUT, CRTCREG, 1, CRTCVAL, 0x4f,       /* horiz end */
  OUT, CRTCREG, 1, CRTCVAL, 0x4f,       /* horiz end */
  OUT, CRTCREG, 2, CRTCVAL, 0x50,       /* horiz blank */
  OUT, CRTCREG, 2, CRTCVAL, 0x50,       /* horiz blank */
  OUT, CRTCREG, 3, CRTCVAL, 0x82,       /* end blank */
  OUT, CRTCREG, 3, CRTCVAL, 0x82,       /* end blank */
  OUT, CRTCREG, 4, CRTCVAL, 0x55,       /* horiz retrace */
  OUT, CRTCREG, 4, CRTCVAL, 0x55,       /* horiz retrace */
  OUT, CRTCREG, 5, CRTCVAL, 0x81,       /* end retrace */
  OUT, CRTCREG, 5, CRTCVAL, 0x81,       /* end retrace */
  OUT, CRTCREG, 6, CRTCVAL, 0xbf,       /* vert total */
  OUT, CRTCREG, 6, CRTCVAL, 0xbf,       /* vert total */
  OUT, CRTCREG, 7, CRTCVAL, 0x1f,       /* overflows */
  OUT, CRTCREG, 7, CRTCVAL, 0x1f,       /* overflows */
  OUT, CRTCREG, 8, CRTCVAL, 0x00,       /* row scan */
  OUT, CRTCREG, 8, CRTCVAL, 0x00,       /* row scan */
  OUT, CRTCREG, 9, CRTCVAL, 0x4f,       /* max scan line */
  OUT, CRTCREG, 9, CRTCVAL, 0x4f,       /* max scan line */
  OUT, CRTCREG, 10, CRTCVAL, 0x00,      /* cursor start */
  OUT, CRTCREG, 10, CRTCVAL, 0x00,      /* cursor start */
  OUT, CRTCREG, 11, CRTCVAL, 0x0f,      /* cursor end */
  OUT, CRTCREG, 11, CRTCVAL, 0x0f,      /* cursor end */
  OUT, CRTCREG, 12, CRTCVAL, 0x0e,      /* start high addr */
  OUT, CRTCREG, 12, CRTCVAL, 0x0e,      /* start high addr */
  OUT, CRTCREG, 13, CRTCVAL, 0xb0,      /* low addr */
  OUT, CRTCREG, 13, CRTCVAL, 0xb0,      /* low addr */
  OUT, CRTCREG, 14, CRTCVAL, 0x16,      /* cursor high */
  OUT, CRTCREG, 14, CRTCVAL, 0x16,      /* cursor high */
  OUT, CRTCREG, 15, CRTCVAL, 0x30,      /* cursor low */
  OUT, CRTCREG, 15, CRTCVAL, 0x30,      /* cursor low */
  OUT, CRTCREG, 16, CRTCVAL, 0x9c,      /* vert retrace */
  OUT, CRTCREG, 16, CRTCVAL, 0x9c,      /* vert retrace */
  OUT, CRTCREG, 17, CRTCVAL, 0x8e,      /* retrace end */
  OUT, CRTCREG, 17, CRTCVAL, 0x8e,      /* retrace end */
  OUT, CRTCREG, 18, CRTCVAL, 0x8f,      /* vert end */
  OUT, CRTCREG, 18, CRTCVAL, 0x8f,      /* vert end */
  OUT, CRTCREG, 19, CRTCVAL, 0x28,      /* offset */
  OUT, CRTCREG, 19, CRTCVAL, 0x28,      /* offset */
  OUT, CRTCREG, 20, CRTCVAL, 0x1f,      /* underline */
  OUT, CRTCREG, 20, CRTCVAL, 0x1f,      /* underline */
  OUT, CRTCREG, 21, CRTCVAL, 0x96,      /* vert blank */
  OUT, CRTCREG, 21, CRTCVAL, 0x96,      /* vert blank */
  OUT, CRTCREG, 22, CRTCVAL, 0xb9,      /* end blank */
  OUT, CRTCREG, 22, CRTCVAL, 0xb9,      /* end blank */
  OUT, CRTCREG, 23, CRTCVAL, 0xa3,      /* crt mode */
  OUT, CRTCREG, 23, CRTCVAL, 0xa3,      /* crt mode */
  OUT, CRTCREG, 24, CRTCVAL, 0xff,      /* line compare */
  OUT, CRTCREG, 24, CRTCVAL, 0xff,      /* line compare */
 
 
  /* Graphics controller */
  /* Graphics controller */
  OUT, GENREG2, 0x00, 0, 0,
  OUT, GENREG2, 0x00, 0, 0,
  OUT, GENREG3, 0x01, 0, 0,
  OUT, GENREG3, 0x01, 0, 0,
  OUT, GRREG, 0, GRVAL, 0x00,
  OUT, GRREG, 0, GRVAL, 0x00,
  OUT, GRREG, 1, GRVAL, 0x00,
  OUT, GRREG, 1, GRVAL, 0x00,
  OUT, GRREG, 2, GRVAL, 0x00,
  OUT, GRREG, 2, GRVAL, 0x00,
  OUT, GRREG, 3, GRVAL, 0x00,
  OUT, GRREG, 3, GRVAL, 0x00,
  OUT, GRREG, 4, GRVAL, 0x00,
  OUT, GRREG, 4, GRVAL, 0x00,
  OUT, GRREG, 5, GRVAL, 0x10,
  OUT, GRREG, 5, GRVAL, 0x10,
  OUT, GRREG, 6, GRVAL, 0x0e,
  OUT, GRREG, 6, GRVAL, 0x0e,
  OUT, GRREG, 7, GRVAL, 0x00,
  OUT, GRREG, 7, GRVAL, 0x00,
  OUT, GRREG, 8, GRVAL, 0xff,
  OUT, GRREG, 8, GRVAL, 0xff,
 
 
  /* Reset attribute flip/flop */
  /* Reset attribute flip/flop */
  IN, ATTRREG, 0, 0, 0,
  IN, ATTRREG, 0, 0, 0,
 
 
  /* Palette */
  /* Palette */
  OUT, PALREG, 0, PALREG, 0x00,
  OUT, PALREG, 0, PALREG, 0x00,
  OUT, PALREG, 1, PALREG, 0x01,
  OUT, PALREG, 1, PALREG, 0x01,
  OUT, PALREG, 2, PALREG, 0x02,
  OUT, PALREG, 2, PALREG, 0x02,
  OUT, PALREG, 3, PALREG, 0x03,
  OUT, PALREG, 3, PALREG, 0x03,
  OUT, PALREG, 4, PALREG, 0x04,
  OUT, PALREG, 4, PALREG, 0x04,
  OUT, PALREG, 5, PALREG, 0x05,
  OUT, PALREG, 5, PALREG, 0x05,
  OUT, PALREG, 6, PALREG, 0x06,
  OUT, PALREG, 6, PALREG, 0x06,
  OUT, PALREG, 7, PALREG, 0x07,
  OUT, PALREG, 7, PALREG, 0x07,
  OUT, PALREG, 8, PALREG, 0x10,
  OUT, PALREG, 8, PALREG, 0x10,
  OUT, PALREG, 9, PALREG, 0x11,
  OUT, PALREG, 9, PALREG, 0x11,
  OUT, PALREG, 10, PALREG, 0x12,
  OUT, PALREG, 10, PALREG, 0x12,
  OUT, PALREG, 11, PALREG, 0x13,
  OUT, PALREG, 11, PALREG, 0x13,
  OUT, PALREG, 12, PALREG, 0x14,
  OUT, PALREG, 12, PALREG, 0x14,
  OUT, PALREG, 13, PALREG, 0x15,
  OUT, PALREG, 13, PALREG, 0x15,
  OUT, PALREG, 14, PALREG, 0x16,
  OUT, PALREG, 14, PALREG, 0x16,
  OUT, PALREG, 15, PALREG, 0x17,
  OUT, PALREG, 15, PALREG, 0x17,
  OUT, PALREG, 16, PALREG, 0x08,
  OUT, PALREG, 16, PALREG, 0x08,
  OUT, PALREG, 17, PALREG, 0x00,
  OUT, PALREG, 17, PALREG, 0x00,
  OUT, PALREG, 18, PALREG, 0x0f,
  OUT, PALREG, 18, PALREG, 0x0f,
  OUT, PALREG, 19, PALREG, 0x00,
  OUT, PALREG, 19, PALREG, 0x00,
 
 
  /* Enable palette */
  /* Enable palette */
  OUT, PALREG, 0x20, 0, 0,
  OUT, PALREG, 0x20, 0, 0,
 
 
  /* End of table */
  /* End of table */
  DONE, 0, 0, 0, 0
  DONE, 0, 0, 0, 0
};
};
 
 
#endif
#endif
 
 
 
 
#if VGA_STANDARD
#if VGA_STANDARD
 
 
/* VGA 640x480 16-color graphics (BIOS mode 0x12).
/* VGA 640x480 16-color graphics (BIOS mode 0x12).
 */
 */
static REGIO graphics_on[] = {
static REGIO graphics_on[] = {
  /* Reset attr F/F */
  /* Reset attr F/F */
  IN, ATTRREG, 0, 0, 0,
  IN, ATTRREG, 0, 0, 0,
 
 
  /* Disable palette */
  /* Disable palette */
  OUT, PALREG, 0, 0, 0,
  OUT, PALREG, 0, 0, 0,
 
 
  /* Reset sequencer regs */
  /* Reset sequencer regs */
  OUT, SEQREG, 0, SEQVAL, 0,
  OUT, SEQREG, 0, SEQVAL, 0,
  OUT, SEQREG, 1, SEQVAL, 1,
  OUT, SEQREG, 1, SEQVAL, 1,
  OUT, SEQREG, 2, SEQVAL, 0x0f,
  OUT, SEQREG, 2, SEQVAL, 0x0f,
  OUT, SEQREG, 3, SEQVAL, 0,
  OUT, SEQREG, 3, SEQVAL, 0,
  OUT, SEQREG, 4, SEQVAL, 6,
  OUT, SEQREG, 4, SEQVAL, 6,
 
 
  /* Misc out reg */
  /* Misc out reg */
  OUT, GENREG1, 0xe3, 0, 0,
  OUT, GENREG1, 0xe3, 0, 0,
 
 
  /* Sequencer enable */
  /* Sequencer enable */
  OUT, SEQREG, 0, SEQVAL, 0x03,
  OUT, SEQREG, 0, SEQVAL, 0x03,
 
 
  /* Unprotect crtc regs 0-7 */
  /* Unprotect crtc regs 0-7 */
  OUT, CRTCREG, 0x11, CRTCVAL, 0,
  OUT, CRTCREG, 0x11, CRTCVAL, 0,
 
 
  /* Crtc */
  /* Crtc */
  OUT, CRTCREG, 0, CRTCVAL, 0x5f,
  OUT, CRTCREG, 0, CRTCVAL, 0x5f,
  OUT, CRTCREG, 1, CRTCVAL, 0x4f,
  OUT, CRTCREG, 1, CRTCVAL, 0x4f,
  OUT, CRTCREG, 2, CRTCVAL, 0x50,
  OUT, CRTCREG, 2, CRTCVAL, 0x50,
  OUT, CRTCREG, 3, CRTCVAL, 0x82,
  OUT, CRTCREG, 3, CRTCVAL, 0x82,
  OUT, CRTCREG, 4, CRTCVAL, 0x54,
  OUT, CRTCREG, 4, CRTCVAL, 0x54,
  OUT, CRTCREG, 5, CRTCVAL, 0x80,
  OUT, CRTCREG, 5, CRTCVAL, 0x80,
  OUT, CRTCREG, 6, CRTCVAL, 0x0b,
  OUT, CRTCREG, 6, CRTCVAL, 0x0b,
  OUT, CRTCREG, 7, CRTCVAL, 0x3e,
  OUT, CRTCREG, 7, CRTCVAL, 0x3e,
  OUT, CRTCREG, 8, CRTCVAL, 0x00,
  OUT, CRTCREG, 8, CRTCVAL, 0x00,
  OUT, CRTCREG, 9, CRTCVAL, 0x40,
  OUT, CRTCREG, 9, CRTCVAL, 0x40,
  OUT, CRTCREG, 10, CRTCVAL, 0x00,
  OUT, CRTCREG, 10, CRTCVAL, 0x00,
  OUT, CRTCREG, 11, CRTCVAL, 0x00,
  OUT, CRTCREG, 11, CRTCVAL, 0x00,
  OUT, CRTCREG, 12, CRTCVAL, 0x00,
  OUT, CRTCREG, 12, CRTCVAL, 0x00,
  OUT, CRTCREG, 13, CRTCVAL, 0x00,
  OUT, CRTCREG, 13, CRTCVAL, 0x00,
  OUT, CRTCREG, 14, CRTCVAL, 0x00,
  OUT, CRTCREG, 14, CRTCVAL, 0x00,
  OUT, CRTCREG, 15, CRTCVAL, 0x59,
  OUT, CRTCREG, 15, CRTCVAL, 0x59,
  OUT, CRTCREG, 16, CRTCVAL, 0xea,
  OUT, CRTCREG, 16, CRTCVAL, 0xea,
  OUT, CRTCREG, 17, CRTCVAL, 0x8c,
  OUT, CRTCREG, 17, CRTCVAL, 0x8c,
  OUT, CRTCREG, 18, CRTCVAL, 0xdf,
  OUT, CRTCREG, 18, CRTCVAL, 0xdf,
  OUT, CRTCREG, 19, CRTCVAL, 0x28,
  OUT, CRTCREG, 19, CRTCVAL, 0x28,
  OUT, CRTCREG, 20, CRTCVAL, 0x00,
  OUT, CRTCREG, 20, CRTCVAL, 0x00,
  OUT, CRTCREG, 21, CRTCVAL, 0xe7,
  OUT, CRTCREG, 21, CRTCVAL, 0xe7,
  OUT, CRTCREG, 22, CRTCVAL, 0x04,
  OUT, CRTCREG, 22, CRTCVAL, 0x04,
  OUT, CRTCREG, 23, CRTCVAL, 0xe3,
  OUT, CRTCREG, 23, CRTCVAL, 0xe3,
  OUT, CRTCREG, 24, CRTCVAL, 0xff,
  OUT, CRTCREG, 24, CRTCVAL, 0xff,
 
 
  /* Graphics controller */
  /* Graphics controller */
  OUT, GENREG2, 0x00, 0, 0,
  OUT, GENREG2, 0x00, 0, 0,
  OUT, GENREG3, 0x01, 0, 0,
  OUT, GENREG3, 0x01, 0, 0,
  OUT, GRREG, 0, GRVAL, 0x00,
  OUT, GRREG, 0, GRVAL, 0x00,
  OUT, GRREG, 1, GRVAL, 0x00,
  OUT, GRREG, 1, GRVAL, 0x00,
  OUT, GRREG, 2, GRVAL, 0x00,
  OUT, GRREG, 2, GRVAL, 0x00,
  OUT, GRREG, 3, GRVAL, 0x00,
  OUT, GRREG, 3, GRVAL, 0x00,
  OUT, GRREG, 4, GRVAL, 0x00,
  OUT, GRREG, 4, GRVAL, 0x00,
  OUT, GRREG, 5, GRVAL, 0x00,
  OUT, GRREG, 5, GRVAL, 0x00,
  OUT, GRREG, 6, GRVAL, 0x05,
  OUT, GRREG, 6, GRVAL, 0x05,
  OUT, GRREG, 7, GRVAL, 0x0f,
  OUT, GRREG, 7, GRVAL, 0x0f,
  OUT, GRREG, 8, GRVAL, 0xff,
  OUT, GRREG, 8, GRVAL, 0xff,
 
 
  /* Reset attribute flip/flop */
  /* Reset attribute flip/flop */
  IN, ATTRREG, 0, 0, 0,
  IN, ATTRREG, 0, 0, 0,
 
 
  /* Palette */
  /* Palette */
  OUT, PALREG, 0, PALREG, 0x00,
  OUT, PALREG, 0, PALREG, 0x00,
  OUT, PALREG, 1, PALREG, 0x01,
  OUT, PALREG, 1, PALREG, 0x01,
  OUT, PALREG, 2, PALREG, 0x02,
  OUT, PALREG, 2, PALREG, 0x02,
  OUT, PALREG, 3, PALREG, 0x03,
  OUT, PALREG, 3, PALREG, 0x03,
  OUT, PALREG, 4, PALREG, 0x04,
  OUT, PALREG, 4, PALREG, 0x04,
  OUT, PALREG, 5, PALREG, 0x05,
  OUT, PALREG, 5, PALREG, 0x05,
  OUT, PALREG, 6, PALREG, 0x06,
  OUT, PALREG, 6, PALREG, 0x06,
  OUT, PALREG, 7, PALREG, 0x07,
  OUT, PALREG, 7, PALREG, 0x07,
  OUT, PALREG, 8, PALREG, 0x38,
  OUT, PALREG, 8, PALREG, 0x38,
  OUT, PALREG, 9, PALREG, 0x39,
  OUT, PALREG, 9, PALREG, 0x39,
  OUT, PALREG, 10, PALREG, 0x3a,
  OUT, PALREG, 10, PALREG, 0x3a,
  OUT, PALREG, 11, PALREG, 0x3b,
  OUT, PALREG, 11, PALREG, 0x3b,
  OUT, PALREG, 12, PALREG, 0x3c,
  OUT, PALREG, 12, PALREG, 0x3c,
  OUT, PALREG, 13, PALREG, 0x3d,
  OUT, PALREG, 13, PALREG, 0x3d,
  OUT, PALREG, 14, PALREG, 0x3e,
  OUT, PALREG, 14, PALREG, 0x3e,
  OUT, PALREG, 15, PALREG, 0x3f,
  OUT, PALREG, 15, PALREG, 0x3f,
  OUT, PALREG, 16, PALREG, 0x01,
  OUT, PALREG, 16, PALREG, 0x01,
  OUT, PALREG, 17, PALREG, 0x00,
  OUT, PALREG, 17, PALREG, 0x00,
  OUT, PALREG, 18, PALREG, 0x0f,
  OUT, PALREG, 18, PALREG, 0x0f,
  OUT, PALREG, 19, PALREG, 0x00,
  OUT, PALREG, 19, PALREG, 0x00,
 
 
  /* Enable palette */
  /* Enable palette */
  OUT, PALREG, 0x20, 0, 0,
  OUT, PALREG, 0x20, 0, 0,
 
 
  /* End of table */
  /* End of table */
  DONE, 0, 0, 0, 0
  DONE, 0, 0, 0, 0
};
};
 
 
 
 
/* VGA 80x25 text (BIOS mode 3).
/* VGA 80x25 text (BIOS mode 3).
 */
 */
static REGIO graph_off[] = {
static REGIO graph_off[] = {
  /* Reset attr F/F */
  /* Reset attr F/F */
  IN, ATTRREG, 0, 0, 0,
  IN, ATTRREG, 0, 0, 0,
 
 
  /* Disable palette */
  /* Disable palette */
  OUT, PALREG, 0, 0, 0,
  OUT, PALREG, 0, 0, 0,
 
 
  /* Reset sequencer regs */
  /* Reset sequencer regs */
  OUT, SEQREG, 0, SEQVAL, 1,
  OUT, SEQREG, 0, SEQVAL, 1,
  OUT, SEQREG, 1, SEQVAL, 1,
  OUT, SEQREG, 1, SEQVAL, 1,
  OUT, SEQREG, 2, SEQVAL, 3,
  OUT, SEQREG, 2, SEQVAL, 3,
  OUT, SEQREG, 3, SEQVAL, 0,
  OUT, SEQREG, 3, SEQVAL, 0,
  OUT, SEQREG, 4, SEQVAL, 2,
  OUT, SEQREG, 4, SEQVAL, 2,
 
 
  /* Misc out reg */
  /* Misc out reg */
  OUT, GENREG1, 0x63, 0, 0,
  OUT, GENREG1, 0x63, 0, 0,
 
 
  /* Sequencer enable */
  /* Sequencer enable */
  OUT, SEQREG, 0, SEQVAL, 3,
  OUT, SEQREG, 0, SEQVAL, 3,
 
 
  /* Unprotect crtc regs 0-7 */
  /* Unprotect crtc regs 0-7 */
  OUT, CRTCREG, 0x11, CRTCVAL, 0,
  OUT, CRTCREG, 0x11, CRTCVAL, 0,
 
 
  /* Crtc */
  /* Crtc */
  OUT, CRTCREG, 0, CRTCVAL, 0x5f,        /* horiz total */
  OUT, CRTCREG, 0, CRTCVAL, 0x5f,        /* horiz total */
  OUT, CRTCREG, 1, CRTCVAL, 0x4f,       /* horiz end */
  OUT, CRTCREG, 1, CRTCVAL, 0x4f,       /* horiz end */
  OUT, CRTCREG, 2, CRTCVAL, 0x50,       /* horiz blank */
  OUT, CRTCREG, 2, CRTCVAL, 0x50,       /* horiz blank */
  OUT, CRTCREG, 3, CRTCVAL, 0x82,       /* end blank */
  OUT, CRTCREG, 3, CRTCVAL, 0x82,       /* end blank */
  OUT, CRTCREG, 4, CRTCVAL, 0x55,       /* horiz retrace */
  OUT, CRTCREG, 4, CRTCVAL, 0x55,       /* horiz retrace */
  OUT, CRTCREG, 5, CRTCVAL, 0x81,       /* end retrace */
  OUT, CRTCREG, 5, CRTCVAL, 0x81,       /* end retrace */
  OUT, CRTCREG, 6, CRTCVAL, 0xbf,       /* vert total */
  OUT, CRTCREG, 6, CRTCVAL, 0xbf,       /* vert total */
  OUT, CRTCREG, 7, CRTCVAL, 0x1f,       /* overflows */
  OUT, CRTCREG, 7, CRTCVAL, 0x1f,       /* overflows */
  OUT, CRTCREG, 8, CRTCVAL, 0x00,       /* row scan */
  OUT, CRTCREG, 8, CRTCVAL, 0x00,       /* row scan */
  OUT, CRTCREG, 9, CRTCVAL, 0x4f,       /* max scan line */
  OUT, CRTCREG, 9, CRTCVAL, 0x4f,       /* max scan line */
  OUT, CRTCREG, 10, CRTCVAL, 0x00,      /* cursor start */
  OUT, CRTCREG, 10, CRTCVAL, 0x00,      /* cursor start */
  OUT, CRTCREG, 11, CRTCVAL, 0x0f,      /* cursor end */
  OUT, CRTCREG, 11, CRTCVAL, 0x0f,      /* cursor end */
  OUT, CRTCREG, 12, CRTCVAL, 0x0e,      /* start high addr */
  OUT, CRTCREG, 12, CRTCVAL, 0x0e,      /* start high addr */
  OUT, CRTCREG, 13, CRTCVAL, 0xb0,      /* low addr */
  OUT, CRTCREG, 13, CRTCVAL, 0xb0,      /* low addr */
  OUT, CRTCREG, 14, CRTCVAL, 0x16,      /* cursor high */
  OUT, CRTCREG, 14, CRTCVAL, 0x16,      /* cursor high */
  OUT, CRTCREG, 15, CRTCVAL, 0x30,      /* cursor low */
  OUT, CRTCREG, 15, CRTCVAL, 0x30,      /* cursor low */
  OUT, CRTCREG, 16, CRTCVAL, 0x9c,      /* vert retrace */
  OUT, CRTCREG, 16, CRTCVAL, 0x9c,      /* vert retrace */
  OUT, CRTCREG, 17, CRTCVAL, 0x8e,      /* retrace end */
  OUT, CRTCREG, 17, CRTCVAL, 0x8e,      /* retrace end */
  OUT, CRTCREG, 18, CRTCVAL, 0x8f,      /* vert end */
  OUT, CRTCREG, 18, CRTCVAL, 0x8f,      /* vert end */
  OUT, CRTCREG, 19, CRTCVAL, 0x28,      /* offset */
  OUT, CRTCREG, 19, CRTCVAL, 0x28,      /* offset */
  OUT, CRTCREG, 20, CRTCVAL, 0x1f,      /* underline */
  OUT, CRTCREG, 20, CRTCVAL, 0x1f,      /* underline */
  OUT, CRTCREG, 21, CRTCVAL, 0x96,      /* vert blank */
  OUT, CRTCREG, 21, CRTCVAL, 0x96,      /* vert blank */
  OUT, CRTCREG, 22, CRTCVAL, 0xb9,      /* end blank */
  OUT, CRTCREG, 22, CRTCVAL, 0xb9,      /* end blank */
  OUT, CRTCREG, 23, CRTCVAL, 0xa3,      /* crt mode */
  OUT, CRTCREG, 23, CRTCVAL, 0xa3,      /* crt mode */
  OUT, CRTCREG, 24, CRTCVAL, 0xff,      /* line compare */
  OUT, CRTCREG, 24, CRTCVAL, 0xff,      /* line compare */
 
 
  /* Graphics controller */
  /* Graphics controller */
  OUT, GENREG2, 0x00, 0, 0,
  OUT, GENREG2, 0x00, 0, 0,
  OUT, GENREG3, 0x01, 0, 0,
  OUT, GENREG3, 0x01, 0, 0,
  OUT, GRREG, 0, GRVAL, 0x00,
  OUT, GRREG, 0, GRVAL, 0x00,
  OUT, GRREG, 1, GRVAL, 0x00,
  OUT, GRREG, 1, GRVAL, 0x00,
  OUT, GRREG, 2, GRVAL, 0x00,
  OUT, GRREG, 2, GRVAL, 0x00,
  OUT, GRREG, 3, GRVAL, 0x00,
  OUT, GRREG, 3, GRVAL, 0x00,
  OUT, GRREG, 4, GRVAL, 0x00,
  OUT, GRREG, 4, GRVAL, 0x00,
  OUT, GRREG, 5, GRVAL, 0x10,
  OUT, GRREG, 5, GRVAL, 0x10,
  OUT, GRREG, 6, GRVAL, 0x0e,
  OUT, GRREG, 6, GRVAL, 0x0e,
  OUT, GRREG, 7, GRVAL, 0x00,
  OUT, GRREG, 7, GRVAL, 0x00,
  OUT, GRREG, 8, GRVAL, 0xff,
  OUT, GRREG, 8, GRVAL, 0xff,
 
 
  /* Reset attribute flip/flop */
  /* Reset attribute flip/flop */
  IN, ATTRREG, 0, 0, 0,
  IN, ATTRREG, 0, 0, 0,
 
 
  /* Palette */
  /* Palette */
  OUT, PALREG, 0, PALREG, 0x00,
  OUT, PALREG, 0, PALREG, 0x00,
  OUT, PALREG, 1, PALREG, 0x01,
  OUT, PALREG, 1, PALREG, 0x01,
  OUT, PALREG, 2, PALREG, 0x02,
  OUT, PALREG, 2, PALREG, 0x02,
  OUT, PALREG, 3, PALREG, 0x03,
  OUT, PALREG, 3, PALREG, 0x03,
  OUT, PALREG, 4, PALREG, 0x04,
  OUT, PALREG, 4, PALREG, 0x04,
  OUT, PALREG, 5, PALREG, 0x05,
  OUT, PALREG, 5, PALREG, 0x05,
  OUT, PALREG, 6, PALREG, 0x06,
  OUT, PALREG, 6, PALREG, 0x06,
  OUT, PALREG, 7, PALREG, 0x07,
  OUT, PALREG, 7, PALREG, 0x07,
  OUT, PALREG, 8, PALREG, 0x10,
  OUT, PALREG, 8, PALREG, 0x10,
  OUT, PALREG, 9, PALREG, 0x11,
  OUT, PALREG, 9, PALREG, 0x11,
  OUT, PALREG, 10, PALREG, 0x12,
  OUT, PALREG, 10, PALREG, 0x12,
  OUT, PALREG, 11, PALREG, 0x13,
  OUT, PALREG, 11, PALREG, 0x13,
  OUT, PALREG, 12, PALREG, 0x14,
  OUT, PALREG, 12, PALREG, 0x14,
  OUT, PALREG, 13, PALREG, 0x15,
  OUT, PALREG, 13, PALREG, 0x15,
  OUT, PALREG, 14, PALREG, 0x16,
  OUT, PALREG, 14, PALREG, 0x16,
  OUT, PALREG, 15, PALREG, 0x17,
  OUT, PALREG, 15, PALREG, 0x17,
  OUT, PALREG, 16, PALREG, 0x08,
  OUT, PALREG, 16, PALREG, 0x08,
  OUT, PALREG, 17, PALREG, 0x00,
  OUT, PALREG, 17, PALREG, 0x00,
  OUT, PALREG, 18, PALREG, 0x0f,
  OUT, PALREG, 18, PALREG, 0x0f,
  OUT, PALREG, 19, PALREG, 0x00,
  OUT, PALREG, 19, PALREG, 0x00,
 
 
  /* Enable palette */
  /* Enable palette */
  OUT, PALREG, 0x20, 0, 0,
  OUT, PALREG, 0x20, 0, 0,
 
 
  /* End of table */
  /* End of table */
  DONE, 0, 0, 0, 0
  DONE, 0, 0, 0, 0
};
};
 
 
#endif
#endif
 
 
 
 
#if EGA_STANDARD
#if EGA_STANDARD
 
 
/* EGA 640x350 16-color graphics (BIOS mode 0x10).
/* EGA 640x350 16-color graphics (BIOS mode 0x10).
 */
 */
static REGIO graphics_on[] = {
static REGIO graphics_on[] = {
  /* Reset attr F/F */
  /* Reset attr F/F */
  IN, ATTRREG, 0, 0, 0,
  IN, ATTRREG, 0, 0, 0,
 
 
  /* Disable palette */
  /* Disable palette */
  OUT, PALREG, 0, 0, 0,
  OUT, PALREG, 0, 0, 0,
 
 
  /* Reset sequencer regs */
  /* Reset sequencer regs */
  OUT, SEQREG, 0, SEQVAL, 0,
  OUT, SEQREG, 0, SEQVAL, 0,
  OUT, SEQREG, 1, SEQVAL, 1,
  OUT, SEQREG, 1, SEQVAL, 1,
  OUT, SEQREG, 2, SEQVAL, 0x0f,
  OUT, SEQREG, 2, SEQVAL, 0x0f,
  OUT, SEQREG, 3, SEQVAL, 0,
  OUT, SEQREG, 3, SEQVAL, 0,
  OUT, SEQREG, 4, SEQVAL, 6,
  OUT, SEQREG, 4, SEQVAL, 6,
 
 
  /* Misc out reg */
  /* Misc out reg */
  OUT, GENREG1, 0xa7, 0, 0,
  OUT, GENREG1, 0xa7, 0, 0,
 
 
  /* Sequencer enable */
  /* Sequencer enable */
  OUT, SEQREG, 0, SEQVAL, 0x03,
  OUT, SEQREG, 0, SEQVAL, 0x03,
 
 
  /* Unprotect crtc regs 0-7 */
  /* Unprotect crtc regs 0-7 */
  OUT, CRTCREG, 0x11, CRTCVAL, 0,
  OUT, CRTCREG, 0x11, CRTCVAL, 0,
 
 
  /* Crtc */
  /* Crtc */
  OUT, CRTCREG, 0, CRTCVAL, 0x5b,
  OUT, CRTCREG, 0, CRTCVAL, 0x5b,
  OUT, CRTCREG, 1, CRTCVAL, 0x4f,
  OUT, CRTCREG, 1, CRTCVAL, 0x4f,
  OUT, CRTCREG, 2, CRTCVAL, 0x53,
  OUT, CRTCREG, 2, CRTCVAL, 0x53,
  OUT, CRTCREG, 3, CRTCVAL, 0x37,
  OUT, CRTCREG, 3, CRTCVAL, 0x37,
  OUT, CRTCREG, 4, CRTCVAL, 0x52,
  OUT, CRTCREG, 4, CRTCVAL, 0x52,
  OUT, CRTCREG, 5, CRTCVAL, 0x00,
  OUT, CRTCREG, 5, CRTCVAL, 0x00,
  OUT, CRTCREG, 6, CRTCVAL, 0x6c,
  OUT, CRTCREG, 6, CRTCVAL, 0x6c,
  OUT, CRTCREG, 7, CRTCVAL, 0x1f,
  OUT, CRTCREG, 7, CRTCVAL, 0x1f,
  OUT, CRTCREG, 8, CRTCVAL, 0x00,
  OUT, CRTCREG, 8, CRTCVAL, 0x00,
  OUT, CRTCREG, 9, CRTCVAL, 0x00,
  OUT, CRTCREG, 9, CRTCVAL, 0x00,
  OUT, CRTCREG, 10, CRTCVAL, 0x00,
  OUT, CRTCREG, 10, CRTCVAL, 0x00,
  OUT, CRTCREG, 11, CRTCVAL, 0x00,
  OUT, CRTCREG, 11, CRTCVAL, 0x00,
  OUT, CRTCREG, 12, CRTCVAL, 0x00,
  OUT, CRTCREG, 12, CRTCVAL, 0x00,
  OUT, CRTCREG, 13, CRTCVAL, 0x00,
  OUT, CRTCREG, 13, CRTCVAL, 0x00,
  OUT, CRTCREG, 14, CRTCVAL, 0x00,
  OUT, CRTCREG, 14, CRTCVAL, 0x00,
  OUT, CRTCREG, 15, CRTCVAL, 0x00,
  OUT, CRTCREG, 15, CRTCVAL, 0x00,
  OUT, CRTCREG, 16, CRTCVAL, 0x5e,
  OUT, CRTCREG, 16, CRTCVAL, 0x5e,
  OUT, CRTCREG, 17, CRTCVAL, 0x2b,
  OUT, CRTCREG, 17, CRTCVAL, 0x2b,
  OUT, CRTCREG, 18, CRTCVAL, 0x5d,
  OUT, CRTCREG, 18, CRTCVAL, 0x5d,
  OUT, CRTCREG, 19, CRTCVAL, 0x28,
  OUT, CRTCREG, 19, CRTCVAL, 0x28,
  OUT, CRTCREG, 20, CRTCVAL, 0x0f,
  OUT, CRTCREG, 20, CRTCVAL, 0x0f,
  OUT, CRTCREG, 21, CRTCVAL, 0x5f,
  OUT, CRTCREG, 21, CRTCVAL, 0x5f,
  OUT, CRTCREG, 22, CRTCVAL, 0x0a,
  OUT, CRTCREG, 22, CRTCVAL, 0x0a,
  OUT, CRTCREG, 23, CRTCVAL, 0xe3,
  OUT, CRTCREG, 23, CRTCVAL, 0xe3,
  OUT, CRTCREG, 24, CRTCVAL, 0xff,
  OUT, CRTCREG, 24, CRTCVAL, 0xff,
 
 
  /* Graphics controller */
  /* Graphics controller */
  OUT, GENREG2, 0x00, 0, 0,
  OUT, GENREG2, 0x00, 0, 0,
  OUT, GENREG3, 0x01, 0, 0,
  OUT, GENREG3, 0x01, 0, 0,
  OUT, GRREG, 0, GRVAL, 0x00,
  OUT, GRREG, 0, GRVAL, 0x00,
  OUT, GRREG, 1, GRVAL, 0x00,
  OUT, GRREG, 1, GRVAL, 0x00,
  OUT, GRREG, 2, GRVAL, 0x00,
  OUT, GRREG, 2, GRVAL, 0x00,
  OUT, GRREG, 3, GRVAL, 0x00,
  OUT, GRREG, 3, GRVAL, 0x00,
  OUT, GRREG, 4, GRVAL, 0x00,
  OUT, GRREG, 4, GRVAL, 0x00,
  OUT, GRREG, 5, GRVAL, 0x00,
  OUT, GRREG, 5, GRVAL, 0x00,
  OUT, GRREG, 6, GRVAL, 0x05,
  OUT, GRREG, 6, GRVAL, 0x05,
  OUT, GRREG, 7, GRVAL, 0x0f,
  OUT, GRREG, 7, GRVAL, 0x0f,
  OUT, GRREG, 8, GRVAL, 0xff,
  OUT, GRREG, 8, GRVAL, 0xff,
 
 
  /* Reset attribute flip/flop */
  /* Reset attribute flip/flop */
  IN, ATTRREG, 0, 0, 0,
  IN, ATTRREG, 0, 0, 0,
 
 
  /* Palette */
  /* Palette */
  OUT, PALREG, 0, PALREG, 0x00,
  OUT, PALREG, 0, PALREG, 0x00,
  OUT, PALREG, 1, PALREG, 0x01,
  OUT, PALREG, 1, PALREG, 0x01,
  OUT, PALREG, 2, PALREG, 0x02,
  OUT, PALREG, 2, PALREG, 0x02,
  OUT, PALREG, 3, PALREG, 0x03,
  OUT, PALREG, 3, PALREG, 0x03,
  OUT, PALREG, 4, PALREG, 0x04,
  OUT, PALREG, 4, PALREG, 0x04,
  OUT, PALREG, 5, PALREG, 0x05,
  OUT, PALREG, 5, PALREG, 0x05,
  OUT, PALREG, 6, PALREG, 0x06,
  OUT, PALREG, 6, PALREG, 0x06,
  OUT, PALREG, 7, PALREG, 0x07,
  OUT, PALREG, 7, PALREG, 0x07,
  OUT, PALREG, 8, PALREG, 0x38,
  OUT, PALREG, 8, PALREG, 0x38,
  OUT, PALREG, 9, PALREG, 0x39,
  OUT, PALREG, 9, PALREG, 0x39,
  OUT, PALREG, 10, PALREG, 0x3a,
  OUT, PALREG, 10, PALREG, 0x3a,
  OUT, PALREG, 11, PALREG, 0x3b,
  OUT, PALREG, 11, PALREG, 0x3b,
  OUT, PALREG, 12, PALREG, 0x3c,
  OUT, PALREG, 12, PALREG, 0x3c,
  OUT, PALREG, 13, PALREG, 0x3d,
  OUT, PALREG, 13, PALREG, 0x3d,
  OUT, PALREG, 14, PALREG, 0x3e,
  OUT, PALREG, 14, PALREG, 0x3e,
  OUT, PALREG, 15, PALREG, 0x3f,
  OUT, PALREG, 15, PALREG, 0x3f,
  OUT, PALREG, 16, PALREG, 0x01,
  OUT, PALREG, 16, PALREG, 0x01,
  OUT, PALREG, 17, PALREG, 0x00,
  OUT, PALREG, 17, PALREG, 0x00,
  OUT, PALREG, 18, PALREG, 0x0f,
  OUT, PALREG, 18, PALREG, 0x0f,
  OUT, PALREG, 19, PALREG, 0x00,
  OUT, PALREG, 19, PALREG, 0x00,
 
 
  /* Enable palette */
  /* Enable palette */
  OUT, PALREG, 0x20, 0, 0,
  OUT, PALREG, 0x20, 0, 0,
 
 
  /* End of table */
  /* End of table */
  DONE, 0, 0, 0, 0
  DONE, 0, 0, 0, 0
};
};
 
 
 
 
/* EGA 80x25 text (BIOS mode 3).
/* EGA 80x25 text (BIOS mode 3).
 */
 */
static REGIO graph_off[] = {
static REGIO graph_off[] = {
  /* Reset attr F/F */
  /* Reset attr F/F */
  IN, ATTRREG, 0, 0, 0,
  IN, ATTRREG, 0, 0, 0,
 
 
  /* Disable palette */
  /* Disable palette */
  OUT, PALREG, 0, 0, 0,
  OUT, PALREG, 0, 0, 0,
 
 
  /* Reset sequencer regs */
  /* Reset sequencer regs */
  OUT, SEQREG, 0, SEQVAL, 1,
  OUT, SEQREG, 0, SEQVAL, 1,
  OUT, SEQREG, 1, SEQVAL, 1,
  OUT, SEQREG, 1, SEQVAL, 1,
  OUT, SEQREG, 2, SEQVAL, 3,
  OUT, SEQREG, 2, SEQVAL, 3,
  OUT, SEQREG, 3, SEQVAL, 0,
  OUT, SEQREG, 3, SEQVAL, 0,
  OUT, SEQREG, 4, SEQVAL, 3,
  OUT, SEQREG, 4, SEQVAL, 3,
 
 
  /* Misc out reg */
  /* Misc out reg */
  OUT, GENREG1, 0xa7, 0, 0,
  OUT, GENREG1, 0xa7, 0, 0,
 
 
  /* Sequencer enable */
  /* Sequencer enable */
  OUT, SEQREG, 0, SEQVAL, 3,
  OUT, SEQREG, 0, SEQVAL, 3,
 
 
  /* Crtc */
  /* Crtc */
  OUT, CRTCREG, 0, CRTCVAL, 0x5b,        /* horiz total */
  OUT, CRTCREG, 0, CRTCVAL, 0x5b,        /* horiz total */
  OUT, CRTCREG, 1, CRTCVAL, 0x4f,       /* horiz end */
  OUT, CRTCREG, 1, CRTCVAL, 0x4f,       /* horiz end */
  OUT, CRTCREG, 2, CRTCVAL, 0x53,       /* horiz blank */
  OUT, CRTCREG, 2, CRTCVAL, 0x53,       /* horiz blank */
  OUT, CRTCREG, 3, CRTCVAL, 0x37,       /* end blank */
  OUT, CRTCREG, 3, CRTCVAL, 0x37,       /* end blank */
  OUT, CRTCREG, 4, CRTCVAL, 0x51,       /* horiz retrace */
  OUT, CRTCREG, 4, CRTCVAL, 0x51,       /* horiz retrace */
  OUT, CRTCREG, 5, CRTCVAL, 0x5b,       /* end retrace */
  OUT, CRTCREG, 5, CRTCVAL, 0x5b,       /* end retrace */
  OUT, CRTCREG, 6, CRTCVAL, 0x6c,       /* vert total */
  OUT, CRTCREG, 6, CRTCVAL, 0x6c,       /* vert total */
  OUT, CRTCREG, 7, CRTCVAL, 0x1f,       /* overflows */
  OUT, CRTCREG, 7, CRTCVAL, 0x1f,       /* overflows */
  OUT, CRTCREG, 8, CRTCVAL, 0x00,       /* row scan */
  OUT, CRTCREG, 8, CRTCVAL, 0x00,       /* row scan */
  OUT, CRTCREG, 9, CRTCVAL, 0x0d,       /* max scan line */
  OUT, CRTCREG, 9, CRTCVAL, 0x0d,       /* max scan line */
  OUT, CRTCREG, 10, CRTCVAL, 0x00,      /* cursor start */
  OUT, CRTCREG, 10, CRTCVAL, 0x00,      /* cursor start */
  OUT, CRTCREG, 11, CRTCVAL, 0x0f,      /* cursor end */
  OUT, CRTCREG, 11, CRTCVAL, 0x0f,      /* cursor end */
  OUT, CRTCREG, 12, CRTCVAL, 0x00,      /* start high addr */
  OUT, CRTCREG, 12, CRTCVAL, 0x00,      /* start high addr */
  OUT, CRTCREG, 13, CRTCVAL, 0x00,      /* low addr */
  OUT, CRTCREG, 13, CRTCVAL, 0x00,      /* low addr */
  OUT, CRTCREG, 14, CRTCVAL, 0x00,      /* cursor high */
  OUT, CRTCREG, 14, CRTCVAL, 0x00,      /* cursor high */
  OUT, CRTCREG, 15, CRTCVAL, 0x00,      /* cursor low */
  OUT, CRTCREG, 15, CRTCVAL, 0x00,      /* cursor low */
  OUT, CRTCREG, 16, CRTCVAL, 0x5e,      /* vert retrace */
  OUT, CRTCREG, 16, CRTCVAL, 0x5e,      /* vert retrace */
  OUT, CRTCREG, 17, CRTCVAL, 0x2b,      /* retrace end */
  OUT, CRTCREG, 17, CRTCVAL, 0x2b,      /* retrace end */
  OUT, CRTCREG, 18, CRTCVAL, 0x5d,      /* vert end */
  OUT, CRTCREG, 18, CRTCVAL, 0x5d,      /* vert end */
  OUT, CRTCREG, 19, CRTCVAL, 0x28,      /* offset */
  OUT, CRTCREG, 19, CRTCVAL, 0x28,      /* offset */
  OUT, CRTCREG, 20, CRTCVAL, 0x0f,      /* underline */
  OUT, CRTCREG, 20, CRTCVAL, 0x0f,      /* underline */
  OUT, CRTCREG, 21, CRTCVAL, 0x5e,      /* vert blank */
  OUT, CRTCREG, 21, CRTCVAL, 0x5e,      /* vert blank */
  OUT, CRTCREG, 22, CRTCVAL, 0x0a,      /* end blank */
  OUT, CRTCREG, 22, CRTCVAL, 0x0a,      /* end blank */
  OUT, CRTCREG, 23, CRTCVAL, 0xa3,      /* crt mode */
  OUT, CRTCREG, 23, CRTCVAL, 0xa3,      /* crt mode */
  OUT, CRTCREG, 24, CRTCVAL, 0xff,      /* line compare */
  OUT, CRTCREG, 24, CRTCVAL, 0xff,      /* line compare */
 
 
  /* Graphics controller */
  /* Graphics controller */
  OUT, GENREG2, 0x00, 0, 0,
  OUT, GENREG2, 0x00, 0, 0,
  OUT, GENREG3, 0x01, 0, 0,
  OUT, GENREG3, 0x01, 0, 0,
  OUT, GRREG, 0, GRVAL, 0x00,
  OUT, GRREG, 0, GRVAL, 0x00,
  OUT, GRREG, 1, GRVAL, 0x00,
  OUT, GRREG, 1, GRVAL, 0x00,
  OUT, GRREG, 2, GRVAL, 0x00,
  OUT, GRREG, 2, GRVAL, 0x00,
  OUT, GRREG, 3, GRVAL, 0x00,
  OUT, GRREG, 3, GRVAL, 0x00,
  OUT, GRREG, 4, GRVAL, 0x00,
  OUT, GRREG, 4, GRVAL, 0x00,
  OUT, GRREG, 5, GRVAL, 0x10,
  OUT, GRREG, 5, GRVAL, 0x10,
  OUT, GRREG, 6, GRVAL, 0x0e,
  OUT, GRREG, 6, GRVAL, 0x0e,
  OUT, GRREG, 7, GRVAL, 0x00,
  OUT, GRREG, 7, GRVAL, 0x00,
  OUT, GRREG, 8, GRVAL, 0xff,
  OUT, GRREG, 8, GRVAL, 0xff,
 
 
  /* Reset attribute flip/flop */
  /* Reset attribute flip/flop */
  IN, ATTRREG, 0, 0, 0,
  IN, ATTRREG, 0, 0, 0,
 
 
  /* Palette */
  /* Palette */
  OUT, PALREG, 0, PALREG, 0x00,
  OUT, PALREG, 0, PALREG, 0x00,
  OUT, PALREG, 1, PALREG, 0x01,
  OUT, PALREG, 1, PALREG, 0x01,
  OUT, PALREG, 2, PALREG, 0x02,
  OUT, PALREG, 2, PALREG, 0x02,
  OUT, PALREG, 3, PALREG, 0x03,
  OUT, PALREG, 3, PALREG, 0x03,
  OUT, PALREG, 4, PALREG, 0x04,
  OUT, PALREG, 4, PALREG, 0x04,
  OUT, PALREG, 5, PALREG, 0x05,
  OUT, PALREG, 5, PALREG, 0x05,
  OUT, PALREG, 6, PALREG, 0x14,
  OUT, PALREG, 6, PALREG, 0x14,
  OUT, PALREG, 7, PALREG, 0x07,
  OUT, PALREG, 7, PALREG, 0x07,
  OUT, PALREG, 8, PALREG, 0x38,
  OUT, PALREG, 8, PALREG, 0x38,
  OUT, PALREG, 9, PALREG, 0x39,
  OUT, PALREG, 9, PALREG, 0x39,
  OUT, PALREG, 10, PALREG, 0x3a,
  OUT, PALREG, 10, PALREG, 0x3a,
  OUT, PALREG, 11, PALREG, 0x3b,
  OUT, PALREG, 11, PALREG, 0x3b,
  OUT, PALREG, 12, PALREG, 0x3c,
  OUT, PALREG, 12, PALREG, 0x3c,
  OUT, PALREG, 13, PALREG, 0x3d,
  OUT, PALREG, 13, PALREG, 0x3d,
  OUT, PALREG, 14, PALREG, 0x3e,
  OUT, PALREG, 14, PALREG, 0x3e,
  OUT, PALREG, 15, PALREG, 0x3f,
  OUT, PALREG, 15, PALREG, 0x3f,
  OUT, PALREG, 16, PALREG, 0x08,
  OUT, PALREG, 16, PALREG, 0x08,
  OUT, PALREG, 17, PALREG, 0x00,
  OUT, PALREG, 17, PALREG, 0x00,
  OUT, PALREG, 18, PALREG, 0x0f,
  OUT, PALREG, 18, PALREG, 0x0f,
  OUT, PALREG, 19, PALREG, 0x00,
  OUT, PALREG, 19, PALREG, 0x00,
 
 
  /* Enable palette */
  /* Enable palette */
  OUT, PALREG, 0x20, 0, 0,
  OUT, PALREG, 0x20, 0, 0,
 
 
  /* End of table */
  /* End of table */
  DONE, 0, 0, 0, 0
  DONE, 0, 0, 0, 0
};
};
 
 
#endif
#endif
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.