home *** CD-ROM | disk | FTP | other *** search
/ Frostbyte's 1980s DOS Shareware Collection / floppyshareware.zip / floppyshareware / FORTH / FRASRC11.ZIP / TARGA.H < prev    next >
C/C++ Source or Header  |  1989-06-04  |  10KB  |  344 lines

  1. /* targa.h */
  2.  
  3.  
  4. #ifndef TARGA
  5. #define TARGA
  6.  
  7. #include    <dos.h>
  8.  
  9.  
  10. extern unsigned int _dataseg;
  11.  
  12. /****************************************************************/
  13.  
  14. #ifdef __TURBOC__
  15. #    define        PEEK(a,b,c,d)        movedata( b, a, _DS, c, d)
  16. #    define        POKE(a,b,c,d)        movedata( _DS, c, b, a, d )
  17. #    define        OUTPORTB    outportb
  18. #    define        INPORTB        inportb
  19. #    define        OUTPORTW    outport
  20. #    define        INPORTW        inport
  21. #else
  22. #    define        PEEK(a,b,c,d)        movedata( b, a, _dataseg, c, d)
  23. #    define        POKE(a,b,c,d)        movedata( _dataseg, c, b, a, d )
  24. #    define        OUTPORTB    outp
  25. #    define        INPORTB        inp
  26. #    define        OUTPORTW    outpw
  27. #    define        INPORTW        inpw
  28. #endif
  29.  
  30. #define  FALSE     0
  31. #ifdef TRUE
  32.  #undef TRUE
  33. #endif
  34. #define  TRUE    1
  35.  
  36. /****************************************************************/
  37.  
  38. #define TSEG            0xA000
  39. #define TIOBASE        0x220
  40.  
  41.  
  42. /****************************************************************/
  43.  
  44.  
  45. #define        TYPE_8        8
  46. #define        TYPE_16        16
  47. #define        TYPE_24        24
  48. #define        TYPE_32        32
  49. #define        TYPE_M8        -8
  50.  
  51. /*
  52.  * TARGA: 400 to 482 rows x 512 pixels/row X 16 bits/pixel     
  53.  */
  54.  
  55. #define XMIN                0
  56. #define    YMIN                0
  57. #define    XMAX                512            /*    maximum X value */
  58. #define    YMAX                512            /*    maximum Y value */
  59. #define XRES                512            /*    X resolution */
  60. #define YRES                512            /*    Y Resolution */
  61. #define    YVISMAX            (2*targa->LinesPerField)    /*    Maximum visible Y coordinate */
  62. #define    YVISMIN            0                /*        Minimum visible Y coordiate */
  63. #define DEF_ROWS         400            /*    Default number of rows */
  64.  
  65. #define IOBASE        targa->iobase        /* io base location of graphics registers */
  66. #define MEMSEG        targa->memloc        /*  use the variable so we can use */
  67. #define SCNSEG        targa->memloc        /*  the one defined in TARGA */
  68. #define SRCBANK        (targa->memloc+0x0800)    /*  use high-bank as source bank */
  69. #define DESTBANK    targa->memloc        /*  use lo-bank as destination bank */
  70.  
  71. /*    Output register definitions     */
  72. #define MODEREG        (IOBASE+0xC00)        /* Mode Register address */
  73. #define MASKREG        (IOBASE+0x800)        /* Mask Registers */
  74. #define UNDERREG     (IOBASE+0x800)        /* Underscan register */
  75. #define OVERREG        (IOBASE+0x802)        /* overscan register */
  76. #define DESTREG        (IOBASE+0x802)     /* Address of Page Select Lower Register */
  77. #define SRCREG        (IOBASE+0x803)     /* Address of Page Select Upper Register */
  78. #define VCRCON        (IOBASE+0x400)     /* Address of Contrast/VidSrc Register */
  79. #define BLNDREG        VCRCON
  80. #define    SATHUE         (IOBASE+0x402)        /* Satuation/Hue Register address */
  81. #define DRREG            (IOBASE+0x401)        /* ADDRESS OF Controller Write Register */
  82. #define VERTPAN        (IOBASE+0x403)     /* Address of Vertical Pan Register */
  83. #define BORDER        (IOBASE)                    /* Address of Page Select Lower Register */
  84.  
  85. /*    Input register definitions  */
  86. #define VIDEOSTATUS    (IOBASE+0xC02)    /* Video Status Register */
  87. #define RASTERREG        (IOBASE+0xC00)    /* Raster counter register */
  88.  
  89. /*    Default register values     */
  90. #define DEF_MODE 1                        /*    Default mode register value */
  91.                                                             /*    Memory selected, 512x512, 1x */
  92.                                                             /*    Display mode */
  93. #define DEF_MASK                 0            /*    default memory mask */
  94. #define    DEF_SATURATION    0x4        /* default saturation value */
  95. #define    DEF_HUE                    0x10    /* default hue value */
  96. #define    DEF_CONTRAST        0x10    /* default contrast value */
  97. #define    DEF_VIDSRC            0             /* default video source value - Composite */
  98. #define DEF_VERTPAN         56         /*    assumes 400-line output */
  99. #define DEF_BORDER            0            /*    default border color */
  100.  
  101.  
  102. /*    MASK AND SHIFT VALUE FOR REGISTERS CONTAINING SUBFIELDS     */
  103. /*
  104.  *        ******************************************************
  105.  *                    MODE REGISTERS
  106.  *        ******************************************************
  107.  */
  108. #define MSK_MSEL    0xfffC        /*    memory select bits */
  109. #define SHF_MSEL    0x0000
  110. #define MSEL            1
  111.  
  112. #define MSK_IBIT    0xfffb        /*    Interlace bit */
  113. #define SHF_IBIT    2
  114.  
  115. #define MSK_RES        0xFFC7         /*        disp. resolution and screen select bits */
  116. #define SHF_RES        3
  117. #define S0_512X512_0        0        /*        512x512 resolution screen */
  118. #define S1_512X512_1        1
  119. #define S2_512X256_0        2        /*        512x256 resolution screen 0 */
  120. #define S3_512X256_1        3        /*        512x256 resolution screen 1 */
  121. #define S4_256X256_0        4        /*        256x256 resolution screen 0 */
  122. #define S5_256X256_1        5        /*            ....        */
  123. #define S6_256X256_2        6
  124. #define S7_256X256_3        7
  125.  
  126. #define MSK_REGWRITE    0xFFBF    /*    mask for display register write */
  127. #define SHF_REGWRITE    6
  128. #define REGINDEX            0                /*    to write an index value */
  129. #define REGVALUE            1                /*    to write a value */
  130.  
  131. #define MSK_BIT9            0xFF7F    /*    maks for high-order bit of DR's */
  132. #define SHF_BIT9            7        
  133.  
  134. #define MSK_TAPBITS        0xFCFF    /*    mask for setting the tap bits */
  135. #define SHF_TAPBITS        8    
  136.  
  137. #define    MSK_ZOOM            0xF3FF    /*    Mask for zoom factor */
  138. #define SHF_ZOOM            10
  139.  
  140. #define MSK_DISPLAY        0xCFFF    /*    Mask for display mode */
  141. #define SHF_DISPLAY        12
  142. #define MEMORY_MODE        0
  143. #define LIVE_FIXED        1
  144. #define OVERLAY_MODE    2
  145. #define LIVE_LIVE            3
  146. #define DEF_DISPLAY        0
  147.  
  148. #define MSK_CAPTURE        0xBFFF    /*    Mask for capture bit */
  149. #define SHF_CAPTURE        14
  150.  
  151. #define MSK_GENLOCK        0x7FFF    /*    MASK FOR GENLOCK */
  152. #define SHF_GENLOCK        15
  153. #define DEF_GENLOCK        0
  154.  
  155. /*    Video status input register     */
  156. #define FIELDBIT            0x0001
  157. #define VIDEOLOSS         0x0002
  158.  
  159. /*    VIDEO SOURCE/CONTROL REGISTER     */
  160. #define MSK_CONTRAST        0xFFC1
  161. #define SHF_CONTRAST        1
  162. #define MAX_CONTRAST        0x1f
  163.  
  164. #define MSK_RGBORCV            0xBF
  165. #define SHF_RGBORCV            6
  166. #define RGB                            1
  167. #define CV                            0
  168.  
  169. #define MSK_VCRORCAMERA    0x7F
  170. #define SHF_VCRORCAMERA    7
  171. #define VCR                            1
  172. #define CAMERA                    0
  173.  
  174. /*     HUE/SATUATION REGISTER    */
  175. #define    MSK_HUE                    0xE0
  176. #define SHF_HUE                    0
  177. #define MAX_HUE                    0x1f
  178.  
  179. #define MSK_SATURATION    0x1F
  180. #define SHF_SATURATION    5
  181. #define MAX_SATURATION    0x07
  182.  
  183.  
  184. /*
  185.  *    *********************************************
  186.  *            Display register settings
  187.  *    *********************************************
  188.  *
  189.  *    Screen Positioning Registers:
  190.  *        DR 0-3
  191.  */
  192. #define    LEFTBORDER        0
  193. #define    DEF_LEFT            85
  194. #define    MIN_LEFT            75
  195. #define    MAX_LEFT            95
  196. #define    RIGHTBORDER        1
  197. #define    DEF_RIGHT            (DEF_LEFT+256)
  198. #define    TOPBORDER            2
  199. #define    DEF_TOP                40
  200. #define    MIN_TOP                20
  201. #define    BOTTOMBORDER    3
  202. #define    DEF_BOTTOM        (DEFTOP+DEFROWS/2)
  203. #define    MAX_BOTTOM        261
  204.  
  205. /*    REgisters which track 0-3     */
  206. #define    DR8                8
  207. #define PRESHIFT    DR8
  208. #define    EQU_DR8        DR0
  209. #define DR9                9
  210. #define EQU_DR9        DR1
  211. #define DR10            10
  212. #define EQU_DR10    DR2
  213. #define DR11            11
  214. #define EQU_DR11    DR3
  215.  
  216. /*    REQUIRED REGISTERS    */
  217. #define    DR4                4
  218. #define    DEF_DR4        352
  219. #define    DR5                5
  220. #define    DEF_DR5        1
  221. #define    DR6                6
  222. #define    DEF_DR6        0
  223. #define    DR7                7
  224. #define    DEF_DR7        511
  225. #define    DR12            12
  226. #define    DEF_DR12    20
  227. #define    DR13            13
  228. #define    DEF_DR13    22
  229. #define    DR14            14
  230. #define    DEF_DR14    0
  231. #define    DR15            15
  232. #define    DEF_DR15    511
  233. #define    DR16            16
  234. #define    DEF_DR16    0
  235. #define    DR17            17
  236. #define    DEF_DR17    0
  237. #define    DR18            18
  238. #define    DEF_DR18    0
  239. #define    DR19            19
  240. #define    DEF_DR19    4
  241.  
  242. /* interlace mode register & parameters */
  243. #define DR20                    20
  244. #define    INTREG                0x14
  245. #define DEF_INT                0        /*    default to interlace mode 0 */
  246. #define MSK_INTERLACE 0x0003
  247.  
  248. /**************************************************************/
  249.  
  250.  
  251. typedef struct {
  252.             /*    Board Configuration */
  253.     int        memloc;                    /* memory segment */
  254.     int        iobase;                    /*  IOBASE segment */
  255.     int        BytesPerPixel;  /* number of words per pixel */
  256.     int        RowsPerBank;       /* number of row per 64K bank */
  257.     int        MaxBanks;                /*   maximum bank id */
  258.     int        AddressShift;     /*   number of bits to shift address */
  259.  
  260.         /*    Control registers */
  261.     int        mode;                        /*  mode register */
  262.     int        Mask;                        /*  mask register */
  263.     int        PageMode;                /*  current page mode (screen res. and page) */
  264.     unsigned  PageLower;    /*  Lower Page Select register */
  265.     unsigned  PageUpper;    /*  upper Page select register */
  266.     int        VCRCon;                    /*  VCRContract register */
  267.     int        SatHue;                    /* Hue and Saturation register */
  268.     long    BorderColor;        /*  Border color register */
  269.     int        VertShift;                /*  Vertical Pan Register */
  270.     int        PanXOrig, PanYOrig;    /* x,y pan origin */
  271.  
  272.         /* TARGA-SET PARAMETERS */ 
  273.     int  boardType;                /*  See TYPE_XX  IN THIS FILE */
  274.         /*  FOR DEFINITION OF Board Types */
  275.     int      xOffset;                    /* X-offset */
  276.     int      yOffset;                    /*  Y-Offset */
  277.     int      LinesPerField;        /*  maximum visible row count */
  278.     int      InterlaceMode;        /*  desired interlace mode */
  279.     int      AlwaysGenLock;        /*  Genlock always on or not  */
  280.     int      Contrast;                /*  Desired Contrast */
  281.     int      Hue;                            /*  Desired Hue */
  282.     int      Saturation;            /*  Desired Satuation */
  283.     int      RGBorCV;                    /*  CV or RGB Input */
  284.     int      VCRorCamera;            /*  VCR or Camera */
  285.     int      ovrscnAvail, ovrscnOn; /*  ovrscnAvail   1  if Overscan installed */
  286.                                                             /*  ovrscnOn  1 if overscan is stretching */
  287.         /*    Display Registers */
  288.     int    DisplayRegister[22];
  289.  
  290. } TARStruct;
  291.  
  292.  
  293. /****************************************************************/
  294. /*  Data Definitions */
  295.  
  296. #ifdef TARGA_DATA
  297. #        define    _x_
  298. #        define    eq( val )    =val
  299. #else
  300. #        define    _x_    extern
  301. #        define    eq( val )
  302. #endif
  303.  
  304. _x_ int    tseg        eq(    TSEG );
  305. _x_ int    tiobase    eq(    TIOBASE );
  306.  
  307. _x_ TARStruct        tstructure;
  308. _x_ TARStruct        *targa;
  309.  
  310. #undef    _x_
  311. #undef    eq
  312.  
  313. /**************************************************************************/
  314. /* tinit.c */
  315. extern int  GraphInit( int board );
  316. extern void GraphEnd( void );
  317.  
  318. /* tsubs.c */
  319. extern void VCenterDisplay( int nLines );
  320. extern void SetDispReg( int reg, int value );
  321. extern int  VWait( void );
  322. extern void SetVBorder( int top, int bottom );
  323. extern void SetRGBorCV( int type );
  324. extern void SetVCRorCamera( int type );
  325. extern void SetBorderColor( long * color );
  326. extern void SetMask( int mask );
  327. extern void SetVertShift( int preshift );
  328. extern void SetOverscan( int mode );                             
  329. extern void SetInterlace( int type );
  330. extern void SetBlndReg( int value );
  331. extern void TSetMode( int mode );
  332. extern void SetContrast( int level );
  333. extern void SetHue( int level );
  334. extern void SetSaturation( int level );
  335. extern int  GetPageMode( void );
  336. extern void SetHBorder(int left, int right );
  337. extern int  GetLine( int port  );
  338.  
  339. /* erase.c */
  340. extern void Erase( int color );
  341.  
  342. #endif
  343.  
  344.