jac@paul.rutgers.edu (Jonathan A. Chandross) (02/11/91)
Submitted-by: Doug Gwyn
Posting-number: Volume 1, Source:23
Archive-name: gsos/driver/apw/video
Architecture: ONLY_2gs
Version-number: 1.00
This package includes a replacement for the APW VIDEO.H header file,
using prototypes (thus requires ORCA/C) and with extensive usage
comments so one can leave the manual on the shelf while hacking on
applications for Apple's Video Overlay Card or other compatible
devices. A utility is included for printing the status of the
Video I/O Interface tool set.
=ReadMe
- "ReadMe" file for VIDEO OVERLAY CARD UTILITY
-
-This package includes a replacement for the APW VIDEO.H header file,
-using prototypes (thus requires ORCA/C) and with extensive usage
-comments so one can leave the manual on the shelf while hacking on
-applications for Apple's Video Overlay Card or other compatible
-devices. A utility is included for printing the status of the
-Video I/O Interface tool set.
-
-This "apack"ed archive contains the following source files:
-
-ReadMe this file
-
-Video.h prototyped replacement for 2/ORCACDEFS/VIDEO.H
-
-VIDEO.DATA a section to be added to 6/DISASM.DATA to allow
- the Orca Disassembler to handle Video I/O
- Interface tool set calls
-
-vocstatus.cc source code for a Video I/O Interface tool set
- status printer to be compiled for a hosted (shell)
- environment
-
-mk.vocstatus a script for APW/Orca shell to compile and link
- the "vocstatus" utility
-
-The "vocstatus" utility simply polls the Video tool set (# 33)
-and prints on stdout what it discovers about the status of
-everything known to the Video I/O Interface tool set. The main
-purpose of this program is to safely exercise the Video tool set.
-
-For some reason, I cannot get the "vocstatus" utility to reliably
-execute the VDGGStatus() polling section without a system crash.
-I am not good at IIGS debugging, but it appears to me to be
-crashing in the Orca run-time support. There is a conditional-
-compilation flag "TRY_GG_STUFF" that can be #defined to enable
-the troublesome section of code, if you'd like to help track down
-the problem.
-
-
-AUTHOR: Douglas A. Gwyn <Gwyn@BRL.MIL>
-STATUS: Public domain
-CREDIT: Based on information gleaned from the VOC Developer Notes.
-SYSTEM: Apple IIGS only
-LANG.: ORCA/C
-OS: GS/OS, APW/Orca environment
-VERSION: 1.00
-
=VIDEO.DATA
-0021 --- Video I/O Interface ---
-0121 VDBootInit
-0221 VDStartup
-0321 VDShutDown
-0421 VDVersion
-0521 VDReset
-0621 VDStatus
-0921 VDInStatus
-0A21 VDInSetStd
-0B21 VDInGetStd
-0C21 VDInConvAdj
-0D21 VDKeyControl
-0E21 VDKeyStatus
-0F21 VDKeySetKCol
-1021 VDKeyGetKRCol
-1121 VDKeyGetKGCol
-1221 VDKeyGetKBCol
-1321 VDKeySetKDiss
-1421 VDKeyGetKDiss
-1521 VDKeySetNKDiss
-1621 VDKeyGetNKDiss
-1721 VDOutSetStd
-1821 VDOutGetStd
-1921 VDOutControl
-1A21 VDOutStatus
-1B21 VDGetFeatures
-1C21 VDInControl
-1D21 VDGGControl
-1E21 VDGGStatus
-
=Video.h
-/*
- video.h -- definitions for Apple's Video Overlay Card on Apple IIGS
- (ORCA/C version)
-
- last edit: 08-Feb-1991 D A Gwyn
-
- Tool # 33 is the Video tool set. The following,
- adapted from Apple's <VIDEO.h>, describes its programmer interface:
- */
-
-#ifndef __VIDEO__
-#define __VIDEO__ /* avoids redefinition, for speed */
-
-/* Video tool set routines: */
-
-extern pascal void VDBootInit(void) /* tool locator init hook */
- inline(0x0121, 0xE10000L);
-/* DO NOT CALL THIS! */
-/* No error codes. */
-
-extern pascal void VDStartUp(void) /* initialize the toolset */
- inline(0x0221, 0xE10000L);
-/* Error codes: */
-#define vdNoVideoDevice 0x2110 /* no video device found */
-#define vdAlreadyStarted 0x2111 /* video tool set already started */
-
-extern pascal void VDShutDown(void) /* terminate the toolset */
- inline(0x0321, 0xE10000L);
-/* No error codes. */
-
-extern pascal unsigned VDVersion(void) /* return toolset version */
- inline(0x0421, 0xE10000L);
-/* No error codes. */
-
-extern pascal void VDReset(void) /* system reset hook */
- inline(0x0521, 0xE10000L);
-/* DO NOT CALL THIS! */
-/* No error codes. */
-
-extern pascal unsigned VDStatus(void) /* test if toolset active */
- inline(0x0621, 0xE10000L);
-/* false 0 /* toolset not currently active */
-/* true 1 /* toolset currently active */
-/* Error codes: */
-/* vdNoVideoDevice 0x2110 /* no video device present */
-
-extern pascal unsigned VDInStatus(unsigned Selector) /* ret inp status */
- inline(0x0921, 0xE10000L);
-/* values for "Selector": */
-#define vdGenlock 0x32 /* return genlock control state */
-/* return values: */
-#define vdDisable 0x00 /* genlock disabled */
-#define vdEnable 0x01 /* genlock enabled */
-#define vdVideoDetect 0x33 /* is video detected? */
-#define vdFalse 0x00 /* video not detected */
-#define vdTrue 0x01 /* video detected */
-#define vdGenlocked 0x34 /* is genlock established? */
-/* vdFalse 0x00 /* not genlocked */
-/* vdTrue 0x01 /* genlocked */
-/* Error codes: */
-#define vdInvalidSelector 0x2112 /* invalid selector specified */
-
-extern pascal void VDInSetStd(unsigned InStandard) /* select inp std */
- inline(0x0A21, 0xE10000L);
-/* values for "InStandard": */
-#define vdNone 0x00 /* input disabled? */
-#define vdNTSC 0x01 /* NTSC video */
-#define vdPAL 0x02 /* PAL video */
-#define vdSECAM 0x04 /* SECAM video */
-#define vdSNTSC 0x08 /* SNTSC (Y/C) video */
-#define vdSPAL 0x10 /* SPAL (Y/C) video */
-#define vdSSECAM 0x20 /* SSECAM (Y/C) video */
-#define vdRGB60 0x40 /* RGB (60 Hz) */
-#define vdRGB50 0x80 /* RGB (50 Hz) */
-/* Error codes: */
-#define vdInvalidParam 0x2113 /* invalid parameter specified */
-
-extern pascal unsigned VDInGetStd(void) /* return input standard */
- inline(0x0B21, 0xE10000L);
-/* return values: */
-/* vdNone 0x00 /* input not available */
-/* vdNTSC 0x01 /* NTSC video */
-/* vdPAL 0x02 /* PAL video */
-/* vdSECAM 0x04 /* SECAM video */
-/* vdSNTSC 0x08 /* SNTSC (Y/C) video */
-/* vdSPAL 0x10 /* SPAL (Y/C) video */
-/* vdSSECAM 0x20 /* SSECAM (Y/C) video */
-/* vdRGB60 0x40 /* RGB (60 Hz) */
-/* vdRGB50 0x80 /* RGB (50 Hz) */
-/* No error codes. */
-
-extern pascal void VDInConvAdj(unsigned Selector, unsigned AdjFunction)
- /* adjust video input */
- inline(0x0C21, 0xE10000L);
-/* values for "Selector": */
-#define vdInHueAdj 0x09 /* adjust input hue */
-/* values for "AdjFunction": */
-#define vdAdjInc 0x50 /* increment value */
-#define vdAdjDec 0x51 /* decrement value */
-#define vdAdjSave 0x52 /* save settings in NVRAM */
-#define vdInSatAdj 0x0A /* adjust input saturation */
-/* vdAdjInc 0x50 /* increment value */
-/* vdAdjDec 0x51 /* decrement value */
-/* vdAdjSave 0x52 /* save settings in NVRAM */
-/* Error codes: */
-/* vdInvalidSelector 0x2112 /* invalid selector specified */
-/* vdInvalidParam 0x2113 /* invalid parameter specified */
-
-extern pascal void VDKeyControl(unsigned Selector,
- unsigned KeyerCtrlVal) /* set keying */
- inline(0x0D21, 0xE10000L);
-/* values for "Selector": */
-#define vdKeyEnhDiss 0x10 /* enable/disable enhanced diss. */
-/* values for "KeyerCtrlValue": */
-/* vdDisable 0x00 /* disable enh. dissolve */
-/* vdEnable 0x01 /* enable enh. dissolve */
-#define vdKColorEnable 0x64 /* enable/disable key color */
-/* vdDisable 0x00 /* disable key color */
-/* vdEnable 0x01 /* enable key color */
-/* Error codes: */
-/* vdInvalidSelector 0x2112 /* invalid selector specified */
-/* vdInvalidParam 0x2113 /* invalid parameter specified */
-
-extern pascal unsigned VDKeyStatus(unsigned Selector) /* return keying */
- inline(0x0E21, 0xE10000L);
-/* values for "Selector": */
-/* vdKeyEnhDiss 0x10 /* is enhanced dissolve enabled? */
-/* return values: */
-/* vdDisable 0x00 /* enh. dissolve disabled */
-/* vdEnable 0x01 /* enh. dissolve enabled */
-/* vdKColorEnable 0x64 /* is key color enabled? */
-/* vdDisable 0x00 /* key color disabled */
-/* vdEnable 0x01 /* key color enabled */
-/* Error codes: */
-/* vdInvalidSelector 0x2112 /* invalid selector specified */
-
-extern pascal void VDKeySetKCol(unsigned RedValue, unsigned GreenValue,
- unsigned BlueValue) /* set key color */
- inline(0x0F21, 0xE10000L);
-/* Values are 16-bit (left adjusted); get significance from VDGetFeatures */
-/* Error codes: */
-/* vdInvalidParam 0x2113 /* invalid parameter specified */
-
-extern pascal unsigned VDKeyGetKRCol(void) /* return key red value */
- inline(0x1021, 0xE10000L);
-/* Value is 16-bit (left adjusted); get significance from VDGetFeatures */
-/* No error codes. */
-
-extern pascal unsigned VDKeyGetKGCol(void) /* return key green value */
- inline(0x1121, 0xE10000L);
-/* Value is 16-bit (left adjusted); get significance from VDGetFeatures */
-/* No error codes. */
-
-extern pascal unsigned VDKeyGetKBCol(void) /* return key blue value */
- inline(0x1221, 0xE10000L);
-/* Value is 16-bit (left adjusted); get significance from VDGetFeatures */
-/* No error codes. */
-
-extern pascal void VDKeySetKDiss(unsigned KDissolve)
- /* set key dissolve level */
- inline(0x1321, 0xE10000L);
-/* Dissolve level 0 => all graphics, 65535 => all video */
-/* Error codes: */
-/* vdInvalidParam 0x2113 /* invalid parameter specified */
-
-extern pascal unsigned VDKeyGetKDiss(void) /* return key diss. level */
- inline(0x1421, 0xE10000L);
-/* Dissolve level 0 => all graphics, 65535 => all video */
-/* No error codes. */
-
-extern pascal void VDKeySetNKDiss(unsigned NKDissolve)
- /* set nonkey diss. level */
- inline(0x1521, 0xE10000L);
-/* Dissolve level 0 => all graphics, 65535 => all video */
-/* Error codes: */
-/* vdInvalidParam 0x2113 /* invalid parameter specified */
-
-extern pascal unsigned VDKeyGetNKDiss(void) /* return nonkey dissolve */
- inline(0x1621, 0xE10000L);
-/* Dissolve level 0 => all graphics, 65535 => all video */
-/* No error codes. */
-
-extern pascal void VDOutSetStd(unsigned OutStandard)
- /* set output std */
- inline(0x1721, 0xE10000L);
-/* values for "OutStandard": */
-/* vdNone 0x00 /* video output disabled? */
-/* vdNTSC 0x01 /* NTSC video */
-/* vdPAL 0x02 /* PAL video */
-/* vdSECAM 0x04 /* SECAM video */
-/* vdSNTSC 0x08 /* SNTSC (Y/C) video */
-/* vdSPAL 0x10 /* SPAL (Y/C) video */
-/* vdSSECAM 0x20 /* SSECAM (Y/C) video */
-/* RGB output is always available, but its framing depends on output std. */
-/* Error codes: */
-/* vdInvalidParam 0x2113 /* invalid parameter specified */
-
-extern pascal unsigned VDOutGetStd(void) /* return output standard */
- inline(0x1821, 0xE10000L);
-/* return values: */
-/* vdNone 0x00 /* video not available */
-/* vdNTSC 0x01 /* NTSC video */
-/* vdPAL 0x02 /* PAL video */
-/* vdSECAM 0x04 /* SECAM video */
-/* vdSNTSC 0x08 /* SNTSC (Y/C) video */
-/* vdSPAL 0x10 /* SPAL (Y/C) video */
-/* vdSSECAM 0x20 /* SSECAM (Y/C) video */
-/* RGB output is always available, but its framing depends on output std. */
-/* No error codes. */
-
-extern pascal void VDOutControl(unsigned Selector,
- unsigned OutCtrlValue) /* outp. controls */
- inline(0x1921, 0xE10000L);
-/* values for "Selector": */
-#define vdOutSetup 0x0D /* control composite output setup */
-/* values for "OutCtrlValue": */
-/* vdDisable 0x00 /* disable output setup */
-/* vdEnable 0x01 /* enable output setup */
-#define vdOutChromaFltr 0x0E /* enable/disable chroma filter */
-/* vdDisable 0x00 /* disable chroma filter */
-/* vdEnable 0x01 /* enable chroma filter */
-#define vdOutExtBlank 0x0F /* select blanking source */
-#define vdExternal 0x00 /* pass through blanking */
-#define vdGraphics 0x01 /* blanking from graphics */
-#define vdTextMonoOver 0x14 /* select monochrome text mode */
-/* vdDisable 0x00 /* normal */
-/* vdEnable 0x01 /* monochr. text override */
- /* (requires vdAux) */
-/* Error codes: */
-/* vdInvalidSelector 0x2112 /* invalid selector specified */
-/* vdInvalidParam 0x2113 /* invalid parameter specified */
-
-extern pascal unsigned VDOutStatus(unsigned Selector) /* ret out status */
- inline(0x1A21, 0xE10000L);
-/* values for "Selector": */
-/* vdOutSetup 0x0D /* is comp. output setup enabled? */
-/* return values: */
-/* vdDisable 0x00 /* output setup disabled */
-/* vdEnable 0x01 /* output setup enabled */
-/* vdOutChromaFltr 0x0E /* is chroma filter enabled? */
-/* vdDisable 0x00 /* chroma filter disabled */
-/* vdEnable 0x01 /* chroma filter enabled */
-/* vdOutExtBlank 0x0F /* query blanking source */
-/* vdExternal 0x00 /* passing thru blanking */
-/* vdGraphics 0x01 /* blanking from graphics */
-/* vdTextMonoOver 0x14 /* query monochrome text mode */
-/* vdDisable 0x00 /* normal */
-/* vdEnable 0x01 /* monochr. text override */
-#define vdVerticalBlank 0x82 /* in vertical blanking interval? */
-#define vdActiveVideo 0x00 /* in video display */
-#define vdVBlank 0x01 /* in vertical blank */
-/* Error codes: */
-/* vdInvalidSelector 0x2112 /* invalid selector specified */
-
-extern pascal unsigned VDGetFeatures(unsigned Selector)
- inline(0x1B21, 0xE10000L);
-/* values for "Selector": */
-#define vdVideoOverlay 0x01 /* is video overlay available? */
-/* return values: */
-#define vdNotAvail 0x00 /* video is not available */
-#define vdAvail 0x01 /* video is available */
-#define vdFrameGrabber 0x02 /* is frame grabber available? */
-/* vdNotAvail 0x00 /* grabber not available */
-/* vdAvail 0x01 /* grabber available */
-#define vdInVStandards 0x03 /* return avail. input standards */
-/* the following return values are bit flags: */
-/* vdNone 0x00 /* input not available */
-/* vdNTSC 0x01 /* NTSC video */
-/* vdPAL 0x02 /* PAL video */
-/* vdSECAM 0x04 /* SECAM video */
-/* vdSNTSC 0x08 /* SNTSC (Y/C) video */
-/* vdSPAL 0x10 /* SPAL (Y/C) video */
-/* vdSSECAM 0x20 /* SSECAM (Y/C) video */
-/* vdRGB60 0x40 /* RGB (60 Hz) */
-/* vdRGB50 0x80 /* RGB (50 Hz) */
-#define vdOutVStandards 0x04 /* return avail. output standards */
-/* the following return values are bit flags: */
-/* vdNone 0x00 /* output not available */
-/* vdNTSC 0x01 /* NTSC video */
-/* vdPAL 0x02 /* PAL video */
-/* vdSECAM 0x04 /* SECAM video */
-/* vdSNTSC 0x08 /* SNTSC (Y/C) video */
-/* vdSPAL 0x10 /* SPAL (Y/C) video */
-/* vdSSECAM 0x20 /* SSECAM (Y/C) video */
-/* RGB output is always available, but its framing depends on output std. */
-#define vdKeyDissLevels 0x05 /* return # key dissolve levels */
-#define vdNKeyDissLevels 0x06 /* return # nonkey diss. levels */
-#define vdAdjSideEffect 0x07 /* adjustments saved upon switch? */
-#define vdNo 0x00 /* not saved upon switch */
-#define vdYes 0x01 /* saved upon switch */
-#define vdKeyColorBits 0x08 /* return # signif key color bits */
-/* vdInHueAdj 0x09 /* has input hue adjustment? */
-/* vdNotAvail 0x00 /* hue adj. not available */
-/* vdAvail 0x01 /* hue adj. available */
-/* vdInSatAdj 0x0A /* has input saturation adj.? */
-/* vdNotAvail 0x00 /* sat adj. not available */
-/* vdAvail 0x01 /* sat adj. available */
-#define vdInContrastAdj 0x0B /* has input contrast adjustment? */
-/* vdNotAvail 0x00 /* con adj. not available */
-/* vdAvail 0x01 /* con adj. available */
-#define vdInBrightAdj 0x0C /* has input brightness adj.? */
-/* vdNotAvail 0x00 /* bri adj. not available */
-/* vdAvail 0x01 /* bri adj. available */
-/* vdOutSetup 0x0D /* supports compos. output setup? */
-/* vdNotAvail 0x00 /* setup not available */
-/* vdAvail 0x01 /* setup available */
-/* vdOutChromaFltr 0x0E /* has output chroma filter? */
-/* vdNotAvail 0x00 /* filter not available */
-/* vdAvail 0x01 /* filter available */
-/* vdOutExtBlank 0x0F /* can pass blanking int through? */
-/* vdNotAvail 0x00 /* interval not available */
-/* vdAvail 0x01 /* interval available */
-/* vdKeyEnhDiss 0x10 /* supports enhanced dissolve? */
-/* vdNotAvail 0x00 /* enhanced not available */
-/* vdAvail 0x01 /* enhanced available */
-#define vdLineInterrupt 0x11 /* supports scan-line interrupts? */
-/* vdNotAvail 0x00 /* intrs. not available */
-/* vdAvail 0x01 /* intrs. available */
-#define vdGGBus 0x12 /* disable Apple bus interface? */
-/* vdNotAvail 0x00 /* cannot disable II bus */
-/* vdAvail 0x01 /* can disable II bus */
-#define vdDualOut 0x13 /* motherboard/card both present? */
-/* vdNotAvail 0x00 /* only video card avail. */
-/* vdAvail 0x01 /* both generators avail. */
-/* vdTextMonoOver 0x14 /* supports text monochrome? */
-/* vdNotAvail 0x00 /* override not available */
-/* vdAvail 0x01 /* override available */
-/* Error codes: */
-/* vdInvalidSelector 0x2112 /* invalid selector specified */
-
-extern pascal void VDInControl(unsigned Selector, unsigned InCtrlValue)
- /* control video input */
- inline(0x1C21, 0xE10000L);
-/* values for "Selector": */
-/* vdGenlock 0x32 /* enable/disable input genlock */
-/* values for "InCtrlValue": */
-/* vdDisable 0x00 /* disable genlock */
-/* vdEnable 0x01 /* enable genlock */
-/* Error codes: */
-/* vdInvalidSelector 0x2112 /* invalid selector specified */
-/* vdInvalidParam 0x2113 /* invalid parameter specified */
-
-extern pascal void VDGGControl(unsigned Selector, unsigned GGCtrlValue)
- /* control graphics gen. */
- inline(0x1D21, 0xE10000L);
-/* values for "Selector": */
-/* vdLineInterrupt 0x11 /* control scan-line interrupts */
-/* values for "GGCtrlValue": */
-/* vdDisable 0x00 /* disable interrupts */
-/* vdEnable 0x01 /* enable interrupts */
-/* vdGGBus 0x12 /* control Apple II bus interface */
-/* vdDisable 0x00 /* disable II generator */
-/* vdEnable 0x01 /* enable II generator */
-#define vdMainPageLin 0xC8 /* main memory page linearization */
-/* vdDisable 0x00 /* don't linearize (old) */
-/* vdEnable 0x01 /* linearize (SHR) */
-#define vdRAMPageSel 0xC9 /* RAM page select (aux. default) */
-#define vdAux 0x00 /* auxiliary (0xE1) bank */
-#define vdMain 0x10 /* main (0xE0) bank */
-#define vdInterlace 0x30 /* interlace main & aux. */
-#define vdVBLInterrupt 0xCA /* control vert blank. interrupts */
-/* vdDisable 0x00 /* disable interrupts */
-/* vdEnable 0x01 /* enable interrupts */
-#define vdInterlaceMode 0xCB /* enable/disable interlace mode */
-/* vdDisable 0x00 /* disable interlace */
-/* vdEnable 0x01 /* enable interlace */
-#define vdClearVBLInt 0xCC /* clear vert. blanking interrupt */
-#define vdNil 0x00
-#define vdClearLineInt 0xCD /* clear the scan-line interrupt */
-/* vdNil 0x00
-/* Error codes: */
-/* vdInvalidSelector 0x2112 /* invalid selector specified */
-/* vdInvalidParam 0x2113 /* invalid parameter specified */
-
-extern pascal unsigned VDGGStatus(unsigned Selector) /* get gen. state */
- inline(0x1E21, 0xE10000L);
-/* values for "Selector": */
-/* vdLineInterrupt 0x11 /* query scan-line interrupts */
-/* return values: */
-/* vdDisable 0x00 /* interrupts disabled */
-/* vdEnable 0x01 /* interrupts enabled */
-/* vdGGBus 0x12 /* query Apple II bus interface */
-/* vdDisable 0x00 /* II generator disabled */
-/* vdEnable 0x01 /* II generator enabled */
-/* vdMainPageLin 0xC8 /* query main page linearization */
-/* vdDisable 0x00 /* not linearized (old) */
-/* vdEnable 0x01 /* linearized (SHR) */
-/* vdRAMPageSel 0xC9 /* query RAM page selection */
-/* vdAux 0x00 /* auxiliary (0xE1) bank */
-/* vdMain 0x10 /* main (0xE0) bank */
-/* vdInterlace 0x30 /* interlaced main & aux. */
-/* vdVBLInterrupt 0xCA /* query vert blanking interrupts */
-/* vdDisable 0x00 /* interrupts disabled */
-/* vdEnable 0x01 /* interrupts enabled */
-/* vdInterlaceMode 0xCB /* query interlace mode */
-/* vdDisable 0x00 /* interlace disabled */
-/* vdEnable 0x01 /* interlace enabled */
-#define vdDisplayField 0xCE /* query current display field */
-#define vdField0 0x00 /* in display field # 0 */
-#define vdField1 0x01 /* in display field # 1 */
-#define vdVBLIntRequest 0xCF /* test for vert blank. interrupt */
-/* vdFalse 0x00 /* interrupt requested */
-/* vdTrue 0x01 /* no interrupt requested */
-#define vdLineIntRequest 0xD0 /* test for scan-line interrupt */
-/* vdFalse 0x00 /* interrupt requested */
-/* vdTrue 0x01 /* no interrupt requested */
-/* Error codes: */
-/* vdInvalidSelector 0x2112 /* invalid selector specified */
-
-/* Additional error codes: */
-
-#define vdUnImplemented 0x21FF /* unimplemented routine called */
-
-/* Additional, unused definitions from Apple's <VIDEO.h>: */
-
-#define vdOff 0x00
-#define vdOn 0x01
-
-#endif /* __VIDEO__ */
=mk.vocstatus
-* mk.vocstatus -- build "vocstatus" utility (for shell environment)
-
-* last edit: 08-Feb-1991 D A Gwyn
-
-compile vocstatus.cc keep=vocstatus
-link vocstatus keep=vocstatus
-
=vocstatus.cc
-/*
- vocstatus -- prints current VOC status to stdout
-
- last edit: 08-Feb-1991 D A Gwyn
-*/
-/*#define TRY_GG_STUFF /* to turn on the troublesome section of code */
-
-#include <stdio.h>
-
-#if __STDC__
-#include <stdlib.h>
-#endif
-
-#ifndef EXIT_SUCCESS
-#define EXIT_SUCCESS 0
-#endif
-
-#ifndef EXIT_FAILURE
-#define EXIT_FAILURE (-1)
-#endif
-
-#include <Locator.h> /* Tool Locator tool set (# 1) defs. etc. */
-#include <Video.h> /* Video tool set (# 33) definitions etc. */
-
-#define vdTOOL_NUMBER 33 /* really should be in <Video.h> */
-
-#ifndef __ORCAC__
-static int
-toolerror()
- {
- extern int _toolErr;
-
- return _toolErr;
- }
-#endif
-
-int
-main( argc, argv )
- int argc;
- char *argv[];
- {
- register unsigned value,
- status;
-
- LoadOneTool( vdTOOL_NUMBER, 0 );
-
- switch ( toolerror() )
- {
- case 0:
- break;
-
- case toolNotFoundErr:
- printf( "*** Couldn't load Video tool (# %d) ***\n",
- vdTOOL_NUMBER
- );
- exit( EXIT_FAILURE );
-
- default:
- printf( "*** Unexpected error 0x%04X from LoadOneTool ***\n",
- toolerror()
- );
- exit( EXIT_FAILURE );
- }
-
- if ( status = VDStatus() )
- printf( "Video toolset was already active\n" );
-
- switch ( toolerror() )
- {
- case 0:
- break;
-
- case vdNoVideoDevice:
- printf( "*** No video device installed ***\n" );
- exit( EXIT_FAILURE );
-
- default:
- printf( "*** Unknown error 0x%04X from VDStatus ***\n",
- toolerror()
- );
-/* exit( EXIT_FAILURE ); */
- }
-
- if ( !status )
- {
- VDStartUp();
-
- switch ( toolerror() )
- {
- case 0:
- break;
-
- case vdNoVideoDevice:
- printf( "*** No video device installed ***\n" );
- exit( EXIT_FAILURE );
-
- default:
- printf( "*** Unexpected error 0x%04X from VDStartUp ***\n",
- toolerror()
- );
- exit( EXIT_FAILURE );
- }
- }
-
- printf( "Video toolset version: %u\n", VDVersion() );
-
- printf( "Video overlay is%s available\n",
- VDGetFeatures( vdVideoOverlay ) ? "" : " not"
- );
-
- printf( "Frame grabber is%s available\n",
- VDGetFeatures( vdFrameGrabber ) ? "" : " not"
- );
-
- if ( (value = VDGetFeatures( vdInVStandards )) == vdNone )
- printf( "Input is not available\n" );
- else {
- struct {
- unsigned bit;
- char *name;
- } *p,
- list[] =
- {
- vdNTSC, "NTSC video",
- vdPAL, "PAL video",
- vdSECAM, "SECAM video",
- vdSNTSC, "SNTSC (Y/C) video",
- vdSPAL, "SPAL (Y/C) video",
- vdSSECAM, "SSECAM (Y/C) video",
- vdRGB60, "RGB (60 Hz)",
- vdRGB50, "RGB (50 Hz)",
- vdNone, 0
- };
-
- printf( "Inputs available:\n" );
-
- for ( p = list; p->name; ++p )
- if ( value & p->bit )
- printf( " %s\n", p->name );
- }
-
- if ( (value = VDGetFeatures( vdOutVStandards )) == vdNone )
- printf( "Output other than RGB is not available\n" );
- else {
- struct {
- unsigned bit;
- char *name;
- } *p,
- list[] =
- {
- vdNTSC, "NTSC video",
- vdPAL, "PAL video",
- vdSECAM, "SECAM video",
- vdSNTSC, "SNTSC (Y/C) video",
- vdSPAL, "SPAL (Y/C) video",
- vdSSECAM, "SSECAM (Y/C) video",
- vdNone, 0
- };
-
- printf( "Outputs other than RGB available:\n" );
-
- for ( p = list; p->name; ++p )
- if ( value & p->bit )
- printf( " %s\n", p->name );
- }
-
- printf( "# key dissolve levels: %u\n",
- VDGetFeatures( vdKeyDissLevels )
- );
-
- printf( "# nonkey dissolve levels: %u\n",
- VDGetFeatures( vdNKeyDissLevels )
- );
-
- printf( "Adjustments are%s saved upon switch\n",
- VDGetFeatures( vdAdjSideEffect ) ? "" : " not"
- );
-
- printf( "# significant key color bits: %u\n",
- VDGetFeatures( vdKeyColorBits )
- );
-
- printf( "%s input hue adjustment\n",
- VDGetFeatures( vdInHueAdj ) ? "Has" : "Does not have"
- );
-
- printf( "%s input saturation adjustment\n",
- VDGetFeatures( vdInSatAdj ) ? "Has" : "Does not have"
- );
-
- printf( "%s input contrast adjustment\n",
- VDGetFeatures( vdInContrastAdj ) ? "Has" : "Does not have"
- );
-
- printf( "%s input brightness adjustment\n",
- VDGetFeatures( vdInBrightAdj ) ? "Has" : "Does not have"
- );
-
- printf( "%s composite output setup\n",
- VDGetFeatures( vdOutSetup ) ? "Supports" : "Does not support"
- );
-
- printf( "%s output chroma filter\n",
- VDGetFeatures( vdOutChromaFltr ) ? "Has" : "Does not have"
- );
-
- printf( "Can%s pass blanking interval through\n",
- VDGetFeatures( vdOutExtBlank ) ? "" : "not"
- );
-
- printf( "%s enhanced dissolve\n",
- VDGetFeatures( vdKeyEnhDiss ) ? "Supports" : "Does not support"
- );
-
- printf( "%s scan-line interrupts\n",
- VDGetFeatures( vdLineInterrupt ) ? "Supports" : "Does not support"
- );
-
- printf( "Can%s disable Apple II bus interface\n",
- VDGetFeatures( vdGGBus ) ? "" : "not"
- );
-
- printf( "Motherboard generator is%s also available\n",
- VDGetFeatures( vdDualOut ) ? "" : " not"
- );
-
- printf( "%s text monochrome mode\n",
- VDGetFeatures( vdTextMonoOver ) ? "Supports" : "Does not support"
- );
-
- printf( "Genlock is %s\n",
- VDInStatus( vdGenlock ) ? "enabled" : "disabled"
- );
-
- printf( "Video is%s detected\n",
- VDInStatus( vdVideoDetect ) ? "" : " not"
- );
-
- printf( "Genlock is%s established\n",
- VDInStatus( vdGenlocked ) ? "" : " not"
- );
-
- if ( (value = VDInGetStd()) == vdNone )
- printf( "No input standard currently set\n" );
- else {
- struct {
- unsigned bit;
- char *name;
- } *p,
- list[] =
- {
- vdNTSC, "NTSC video",
- vdPAL, "PAL video",
- vdSECAM, "SECAM video",
- vdSNTSC, "SNTSC (Y/C) video",
- vdSPAL, "SPAL (Y/C) video",
- vdSSECAM, "SSECAM (Y/C) video",
- vdRGB60, "RGB (60 Hz)",
- vdRGB50, "RGB (50 Hz)",
- vdNone, 0
- };
-
- printf( "Input standard currently set:\n" );
-
- for ( p = list; p->name; ++p )
- if ( value & p->bit )
- printf( " %s\n", p->name );
- /* should be only one, but proceed anyway */
- }
-
- printf( "Enhanced dissolve is %s\n",
- VDKeyStatus( vdKeyEnhDiss ) ? "enabled" : "disabled"
- );
-
- printf( "Key color is %s\n",
- VDKeyStatus( vdKColorEnable ) ? "enabled" : "disabled"
- );
-
- printf( "Key color: (R: 0x%04X, G: 0x%04X, B: 0x%04X)\n",
- VDKeyGetKRCol(), VDKeyGetKGCol(), VDKeyGetKBCol()
- );
-
- printf( "Key dissolve level: %u\n", VDKeyGetKDiss() );
-
- printf( "Nonkey dissolve level: %u\n", VDKeyGetNKDiss() );
-
- if ( (value = VDOutGetStd()) == vdNone )
- printf( "No output standard other than RGB currently set\n" );
- else {
- struct {
- unsigned bit;
- char *name;
- } *p,
- list[] =
- {
- vdNTSC, "NTSC video",
- vdPAL, "PAL video",
- vdSECAM, "SECAM video",
- vdSNTSC, "SNTSC (Y/C) video",
- vdSPAL, "SPAL (Y/C) video",
- vdSSECAM, "SSECAM (Y/C) video",
- vdRGB60, "RGB (60 Hz)",
- vdRGB50, "RGB (50 Hz)",
- vdNone, 0
- };
-
- printf( "Output standard other than RGB currently set:\n" );
-
- for ( p = list; p->name; ++p )
- if ( value & p->bit )
- printf( " %s\n", p->name );
- /* should be only one, but proceed anyway */
- }
-
- printf( "Composite output setup is %s\n",
- VDOutStatus( vdOutSetup ) ? "enabled" : "disabled"
- );
-
- printf( "Output chroma filter is %s\n",
- VDOutStatus( vdOutChromaFltr ) ? "enabled" : "disabled"
- );
-
- printf( "Output blanking is obtained from %s\n",
- VDOutStatus( vdOutExtBlank ) ? "graphics" : "video input"
- );
-
- printf( "Monochrome text override is %s\n",
- VDOutStatus( vdTextMonoOver ) ? "enabled" : "disabled"
- );
-
- printf( "Display scan is%s in the vertical blanking interval\n",
- VDOutStatus( vdVerticalBlank ) ? "" : "not"
- );
-
-#ifdef TRY_GG_STUFF /* usually crashes when I try it */
-
- printf( "Scan-line interrupts are %s\n",
- VDGGStatus( vdLineInterrupt ) ? "enabled" : "disabled"
- );
-
- printf( "Apple II bus generator is %s\n",
- VDGGStatus( vdGGBus ) ? "enabled" : "disabled"
- );
-
- printf( "Main page linearization is %s\n",
- VDGGStatus( vdMainPageLin ) ? "enabled (SHR)" : "disabled (DHR)"
- );
-
- value = VDGGStatus( vdRAMPageSel );
- printf( "RAM pages obtained from %s bank\n",
- value == vdAux ? "auxiliary" : value == vdMain ? "main" :
- value == vdInterlace ? "interlaced main and auxiliary" :
- "*** unknown ***"
- );
-
- printf( "Vertical-blanking interrupts are %s\n",
- VDGGStatus( vdVBLInterrupt ) ? "enabled" : "disabled"
- );
-
- printf( "Current display field: %u\n", VDGGStatus( vdDisplayField ) );
-
- printf( "Vertical-blanking interrupt is%s requested\n",
- VDGGStatus( vdVBLIntRequest ) ? " not" : ""
- );
-
- printf( "Scan-line interrupt is%s requested\n",
- VDGGStatus( vdLineIntRequest ) ? " not" : ""
- );
-
-#endif /* TRY_GG_STUFF */
-
- if ( !status )
- {
- VDShutDown();
-
- switch ( toolerror() )
- {
- case 0:
- break;
-
- default:
- printf( "*** Unexpected error 0x%04X from VDShutDown ***\n",
- toolerror()
- );
- exit( EXIT_FAILURE );
- }
- }
-
- UnloadOneTool( vdTOOL_NUMBER );
-
- switch ( toolerror() )
- {
- case 0:
- break;
-
- default:
- printf( "*** Unexpected error 0x%04X from UnloadOneTool ***\n",
- toolerror()
- );
- exit( EXIT_FAILURE );
- }
-
- return EXIT_SUCCESS;
- }
-
+ END OF ARCHIVE