X-Git-Url: http://4ch.mooo.com/gitweb/?a=blobdiff_plain;f=16%2Fsod8086%2Fid_vl.h;fp=16%2Fsod8086%2Fid_vl.h;h=9c1510cb850a8e7401a0b1a4817ade2f5ba2b36f;hb=7499dc78fbb151b6daac45f2643a15bf1b40beb7;hp=0000000000000000000000000000000000000000;hpb=7d64848c7d76d161021f09ccfd121ad6bbb28121;p=16.git diff --git a/16/sod8086/id_vl.h b/16/sod8086/id_vl.h new file mode 100755 index 00000000..9c1510cb --- /dev/null +++ b/16/sod8086/id_vl.h @@ -0,0 +1,161 @@ +// ID_VL.H + +// wolf compatability + +#define MS_Quit Quit + +void Quit (char *error); + +//=========================================================================== + + +#define SC_INDEX 0x3C4 +#define SC_RESET 0 +#define SC_CLOCK 1 +#define SC_MAPMASK 2 +#define SC_CHARMAP 3 +#define SC_MEMMODE 4 + +#define CRTC_INDEX 0x3D4 +#define CRTC_H_TOTAL 0 +#define CRTC_H_DISPEND 1 +#define CRTC_H_BLANK 2 +#define CRTC_H_ENDBLANK 3 +#define CRTC_H_RETRACE 4 +#define CRTC_H_ENDRETRACE 5 +#define CRTC_V_TOTAL 6 +#define CRTC_OVERFLOW 7 +#define CRTC_ROWSCAN 8 +#define CRTC_MAXSCANLINE 9 +#define CRTC_CURSORSTART 10 +#define CRTC_CURSOREND 11 +#define CRTC_STARTHIGH 12 +#define CRTC_STARTLOW 13 +#define CRTC_CURSORHIGH 14 +#define CRTC_CURSORLOW 15 +#define CRTC_V_RETRACE 16 +#define CRTC_V_ENDRETRACE 17 +#define CRTC_V_DISPEND 18 +#define CRTC_OFFSET 19 +#define CRTC_UNDERLINE 20 +#define CRTC_V_BLANK 21 +#define CRTC_V_ENDBLANK 22 +#define CRTC_MODE 23 +#define CRTC_LINECOMPARE 24 + + +#define GC_INDEX 0x3CE +#define GC_SETRESET 0 +#define GC_ENABLESETRESET 1 +#define GC_COLORCOMPARE 2 +#define GC_DATAROTATE 3 +#define GC_READMAP 4 +#define GC_MODE 5 +#define GC_MISCELLANEOUS 6 +#define GC_COLORDONTCARE 7 +#define GC_BITMASK 8 + +#define ATR_INDEX 0x3c0 +#define ATR_MODE 16 +#define ATR_OVERSCAN 17 +#define ATR_COLORPLANEENABLE 18 +#define ATR_PELPAN 19 +#define ATR_COLORSELECT 20 + +#define STATUS_REGISTER_1 0x3da + +#define PEL_WRITE_ADR 0x3c8 +#define PEL_READ_ADR 0x3c7 +#define PEL_DATA 0x3c9 + + +//=========================================================================== + +#define SCREENSEG 0xa000 + +#define SCREENWIDTH 80 // default screen width in bytes +#define MAXSCANLINES 200 // size of ylookup table + +#define CHARWIDTH 2 +#define TILEWIDTH 4 + +//=========================================================================== + +extern unsigned bufferofs; // all drawing is reletive to this +extern unsigned displayofs,pelpan; // last setscreen coordinates + +extern unsigned screenseg; // set to 0xa000 for asm convenience + +extern unsigned linewidth; +extern unsigned ylookup[MAXSCANLINES]; + +extern boolean screenfaded; +extern unsigned bordercolor; + +//=========================================================================== + +// +// VGA hardware routines +// + +#define VGAWRITEMODE(x) asm{\ +cli;\ +mov dx,GC_INDEX;\ +mov al,GC_MODE;\ +out dx,al;\ +inc dx;\ +in al,dx;\ +and al,252;\ +or al,x;\ +out dx,al;\ +sti;} + +#define VGAMAPMASK(x) asm{cli;mov dx,SC_INDEX;mov al,SC_MAPMASK;mov ah,x;out dx,ax;sti;} +#define VGAREADMAP(x) asm{cli;mov dx,GC_INDEX;mov al,GC_READMAP;mov ah,x;out dx,ax;sti;} + + +void VL_Startup (void); +void VL_Shutdown (void); + +void VL_SetVGAPlane (void); +void VL_SetTextMode (void); +void VL_DePlaneVGA (void); +void VL_SetVGAPlaneMode (void); +void VL_ClearVideo (byte color); + +void VL_SetLineWidth (unsigned width); +void VL_SetSplitScreen (int linenum); + +void VL_WaitVBL (int vbls); +void VL_CrtcStart (int crtc); +void VL_SetScreen (int crtc, int pelpan); + +void VL_FillPalette (int red, int green, int blue); +void VL_SetColor (int color, int red, int green, int blue); +void VL_GetColor (int color, int *red, int *green, int *blue); +void VL_SetPalette (byte far *palette); +void VL_GetPalette (byte far *palette); +void VL_FadeOut (int start, int end, int red, int green, int blue, int steps); +void VL_FadeIn (int start, int end, byte far *palette, int steps); +void VL_ColorBorder (int color); + +void VL_Plot (int x, int y, int color); +void VL_Hlin (unsigned x, unsigned y, unsigned width, unsigned color); +void VL_Vlin (int x, int y, int height, int color); +void VL_Bar (int x, int y, int width, int height, int color); + +void VL_MungePic (byte far *source, unsigned width, unsigned height); +void VL_DrawPicBare (int x, int y, byte far *pic, int width, int height); +void VL_MemToLatch (byte far *source, int width, int height, unsigned dest); +void VL_ScreenToScreen (unsigned source, unsigned dest,int width, int height); +void VL_MemToScreen (byte far *source, int width, int height, int x, int y); +void VL_MaskedToScreen (byte far *source, int width, int height, int x, int y); + +void VL_DrawTile8String (char *str, char far *tile8ptr, int printx, int printy); +void VL_DrawLatch8String (char *str, unsigned tile8ptr, int printx, int printy); +void VL_SizeTile8String (char *str, int *width, int *height); +void VL_DrawPropString (char *str, unsigned tile8ptr, int printx, int printy); +void VL_SizePropString (char *str, int *width, int *height, char far *font); + +void VL_TestPaletteSet (void); +