]> granicus.if.org Git - nethack/commitdiff
*** empty log message ***
authorjwalz <jwalz>
Sat, 5 Jan 2002 21:05:57 +0000 (21:05 +0000)
committerjwalz <jwalz>
Sat, 5 Jan 2002 21:05:57 +0000 (21:05 +0000)
sys/msdos/pcvideo.h [new file with mode: 0644]

diff --git a/sys/msdos/pcvideo.h b/sys/msdos/pcvideo.h
new file mode 100644 (file)
index 0000000..25cf932
--- /dev/null
@@ -0,0 +1,283 @@
+/*   SCCS Id: @(#)pcvideo.h   3.3     94/06/07                      */
+/*   Copyright (c) NetHack PC Development Team 1993, 1994           */
+/*   NetHack may be freely redistributed.  See license for details. */
+/*                                                                  */
+/*
+ * pcvideo.h - Hardware video support definitions and prototypes
+ *                                                  
+ *Edit History:
+ *     Initial Creation              M. Allison      93/10/30
+ *
+ */
+
+#ifndef PCVIDEO_H
+#define PCVIDEO_H
+
+#include "portio.h"
+
+# ifdef SCREEN_BIOS
+#  if !defined(PC9800)
+# define MONO_CHECK            /* Video BIOS can do the check       */ 
+#  endif
+# endif
+
+# ifdef SCREEN_DJGPPFAST
+/*# define MONO_CHECK          /* djgpp should be able to do check  */
+# endif
+
+/*
+ * PC interrupts
+ */
+# ifdef PC9800
+#define CRT_BIOS       0x18
+#define DOS_EXT_FUNC   0xdc
+#define DIRECT_CON_IO  0x10
+# else
+#define VIDEO_BIOS  0x10
+# endif
+#define DOSCALL            0x21
+
+
+/*
+ * Video BIOS functions
+ */
+# if defined(PC9800)
+#define SENSEMODE      0x0b    /* Sense CRT Mode */
+
+#define PUTCHAR                0x00    /* Put Character */
+#define SETATT         0x02    /* Set Attribute */
+#define SETCURPOS      0x03    /* Set Cursor Position */
+#define CURSOR_RIGHT   0x08    /* Move Cursor Right */
+#define CURSOR_LEFT    0x09    /* Move Cursor Left */
+#define SCREEN_CLEAR   0x0a    /* Clear Screen */
+#define LINE_CLEAR     0x0b    /* Clear Line */
+# else
+#define SETCURPOS   0x02    /* Set Cursor Position */
+# endif
+
+#define GETCURPOS   0x03    /* Get Cursor Position */
+#define GETMODE     0x0f    /* Get Video Mode */
+#define SETMODE     0x00    /* Set Video Mode */
+#define SETPAGE     0x05    /* Set Video Page */
+#define FONTINFO    0x1130  /* Get Font Info */
+#define SCROLL      0x06    /* Scroll or initialize window */
+#define PUTCHARATT  0x09    /* Write attribute & char at cursor */
+
+/*
+ * VGA Specific Stuff
+ */
+# ifdef SCREEN_VGA
+/* #define HW_PANNING          /* Hardware panning enabled */
+#define USHORT         unsigned short
+#define MODE640x480    0x0012  /* Switch to VGA 640 x 480 Graphics mode */
+#define MODETEXT       0x0003  /* Switch to Text mode 3 */
+
+#ifdef HW_PANNING
+#define PIXELINC 16    /* How much to increment by when panning */
+/*#define PIXELINC 1   /* How much to increment by when panning */
+#define SCREENBYTES   128
+#define CharRows  30
+#define VERT_RETRACE     {while (!(inportb(crt_status) & 0x08)); }
+#define VERT_RETRACE_END  {while ( (inportb(crt_status) & 0x08)); }
+#else
+#define SCREENBYTES    80
+#endif
+
+#define CharacterWidth 8
+#define SCREENHEIGHT   480
+#define SCREENWIDTH (SCREENBYTES * CharacterWidth)
+#define VIDEOSEG       0xa000
+#define FONT_PTR_SEGMENT 0x0000
+#define FONT_PTR_OFFSET         0x010C
+#define SCREENPLANES   4
+#define COLORDEPTH     16
+#define egawriteplane(n)       { outportb(0x3c4,2); outportb(0x3c5,n); }
+#define egareadplane(n)                { outportb(0x3ce,4); outportb(0x3cf,n); }
+#define col2x8(c)      ((c) * 8) 
+#define col2x16(c)     ((c) * 16)
+#define col2x(c)       ((c) * 2)
+#define row2y(c)       ((c) * 16)
+#define MAX_ROWS_PER_CELL 16
+#define MAX_COLS_PER_CELL 16
+#define MAX_BYTES_PER_CELL 2           /* MAX_COLS_PER_CELL/8 */
+#define ROWS_PER_CELL  MAX_ROWS_PER_CELL
+#define COLS_PER_CELL  MAX_COLS_PER_CELL
+#define BYTES_PER_CELL MAX_BYTES_PER_CELL
+
+struct cellplane {
+       char image[MAX_ROWS_PER_CELL][MAX_BYTES_PER_CELL];
+};
+       
+struct planar_cell_struct {
+       struct cellplane plane[SCREENPLANES];
+};
+
+struct overview_cellplane {
+       char image[MAX_ROWS_PER_CELL][1];
+};
+
+struct overview_planar_cell_struct {
+       struct overview_cellplane plane[SCREENPLANES];
+};
+
+
+
+# endif        /* SCREEN_VGA */
+
+
+/*
+ * Default color Indexes for hardware palettes
+ * 
+ * Do not change the values below.
+ * These are the color mappings defined by the particular video 
+ * hardware/mode.  You can rearrange the NetHack color mappings at
+ * run-time via the defaults.nh "videocolors" and "videoshades"
+ * settings.
+ *
+ */
+
+# if defined(SCREEN_BIOS) || defined(SCREEN_DJGPPFAST) 
+#define M_BLACK                8
+#define M_WHITE                15
+#define M_GRAY                 7       /* low-intensity white */
+#define M_RED                  4
+#define M_GREEN                2
+#define M_BROWN                6       /* low-intensity yellow */
+#define M_BLUE                 1
+#define M_MAGENTA              5
+#define M_CYAN                 3
+#define M_ORANGE               12
+#define M_BRIGHTGREEN          10
+#define M_YELLOW               14
+#define M_BRIGHTBLUE           9
+#define M_BRIGHTMAGENTA        13
+#define M_BRIGHTCYAN           11
+
+#define M_TEXT                M_GRAY
+#define BACKGROUND_COLOR      0
+#define ATTRIB_NORMAL         M_TEXT   /* Normal attribute */
+#define ATTRIB_INTENSE        M_WHITE  /* Intense White */
+#define ATTRIB_MONO_NORMAL    0x01     /* Underlined,white */
+#define ATTRIB_MONO_UNDERLINE 0x01     /* Underlined,white */
+#define ATTRIB_MONO_BLINK     0x87     /* Flash bit, white */
+#define ATTRIB_MONO_REVERSE   0x70     /* Black on white */
+# endif /*SCREEN_BIOS || SCREEN_DJGPPFAST */
+
+# if  defined(SCREEN_VGA) || defined(SCREEN_8514)
+#define BACKGROUND_VGA_COLOR   0
+#define ATTRIB_VGA_NORMAL     CLR_GRAY /* Normal attribute */
+#define ATTRIB_VGA_INTENSE    13       /* Intense White 94/06/07 palette chg*/
+# endif /*SCREEN_VGA || SCREEN_8514*/
+
+# if defined(PC9800)
+static unsigned char attr98[CLR_MAX] = {
+       0xe1,  /*  0 white            */
+       0x21,  /*  1 blue             */
+       0x81,  /*  2 green            */
+       0xa1,  /*  3 cyan             */
+       0x41,  /*  4 red              */
+       0x61,  /*  5 magenta          */
+       0xc1,  /*  6 yellow           */
+       0xe1,  /*  7 white            */
+       0xe1,  /*  8 white            */
+       0x25,  /*  9 reversed blue    */
+       0x85,  /* 10 reversed green   */
+       0xa5,  /* 11 reversed cyan    */
+       0x45,  /* 12 reversed red     */
+       0x65,  /* 13 reversed magenta */
+       0xc5,  /* 14 reversed yellow  */
+       0xe5,  /* 15 reversed white   */
+};
+# endif
+
+# ifdef SIMULATE_CURSOR
+#define CURSOR_HEIGHT    3     /* this should go - MJA */
+/* cursor styles */
+#define CURSOR_INVIS     0     /* cursor not visible at all            */
+#define CURSOR_FRAME     1     /* block around the current tile        */
+#define CURSOR_UNDERLINE 2     /* thin line at bottom of the tile      */
+#define CURSOR_CORNER    3     /* cursor visible at the 4 tile corners */
+#define NUM_CURSOR_TYPES 4     /* number of different cursor types     */
+#define CURSOR_DEFAULT_STYLE CURSOR_CORNER 
+#define CURSOR_DEFAULT_COLOR M_GRAY
+/* global variables for cursor */
+extern int cursor_type;
+extern int cursor_flag;
+extern int cursor_color;
+# endif
+
+
+/*
+ *   Function Prototypes
+ *
+ */
+
+#define E extern
+
+/* ### video.c ### */
+
+# ifdef SIMULATE_CURSOR
+E void NDECL(DrawCursor);
+E void NDECL(HideCursor);
+# endif
+
+/* ### vidtxt.c ### */
+
+# ifdef NO_TERMS
+E void NDECL(txt_backsp);
+E void NDECL(txt_clear_screen);
+E void FDECL(txt_cl_end,(int,int));
+E void NDECL(txt_cl_eos);
+E void NDECL(txt_get_scr_size);
+E void FDECL(txt_gotoxy,(int,int));
+E int  NDECL(txt_monoadapt_check);
+E void NDECL(txt_nhbell);
+E void FDECL(txt_startup,(int*,int*));
+E void FDECL(txt_xputs, (const char *, int, int));
+E void FDECL(txt_xputc, (CHAR_P, int));
+
+/* ### vidvga.c ### */
+
+#  ifdef SCREEN_VGA
+E void NDECL(vga_backsp);
+E void FDECL(vga_clear_screen,(int));
+E void FDECL(vga_cl_end,(int,int));
+E void FDECL(vga_cl_eos,(int));
+E int  NDECL(vga_detect);
+#   ifdef SIMULATE_CURSOR
+E void NDECL(vga_DrawCursor);
+#   endif
+E void FDECL(vga_DisplayCell, (struct planar_cell_struct *, int, int));
+E void FDECL(vga_DisplayCell_O, 
+                       (struct overview_planar_cell_struct *, int, int));
+E void NDECL(vga_Finish);
+E char __far *NDECL(vga_FontPtrs);
+E void NDECL(vga_get_scr_size);
+E void FDECL(vga_gotoloc,(int,int));
+#   ifdef POSITIONBAR
+E void FDECL(vga_update_positionbar, (char *));
+#   endif
+#   ifdef SIMULATE_CURSOR
+E void NDECL(vga_HideCursor);
+#   endif
+E void NDECL(vga_Init);
+E void FDECL(vga_SwitchMode, (unsigned int));
+E void FDECL(vga_SetPalette, (char *));
+E void NDECL(vga_tty_end_screen);
+E void FDECL(vga_tty_startup,(int*,int*));
+E void FDECL(vga_WriteChar, (int, int, int, int));
+E void FDECL(vga_WriteStr, (char *, int, int, int, int));
+E void FDECL(vga_xputs, (const char *, int, int));
+E void FDECL(vga_xputc, (CHAR_P, int));
+E void FDECL(vga_xputg, (int, int, unsigned));
+E void FDECL(vga_userpan, (BOOLEAN_P));
+E void FDECL(vga_overview, (BOOLEAN_P));
+E void FDECL(vga_traditional, (BOOLEAN_P));
+E void NDECL(vga_refresh);
+#  endif /* SCREEN_VGA */
+# endif /* NO_TERMS   */
+
+#undef E
+
+#endif /* PCVIDEO_H  */
+/* pcvideo.h */