Skip to content
This repository was archived by the owner on Nov 19, 2024. It is now read-only.

Latest commit

 

History

History
158 lines (141 loc) · 3.71 KB

File metadata and controls

158 lines (141 loc) · 3.71 KB
#ifndef	GRAPHICS_MONITOR_H
#define	GRAPHICS_MONITOR_H
/*
**	$Filename: graphics/monitor.h $
**	$Release: 2.04 Includes, V37.4 $
**	$Revision: 37.0 $
**	$Date: 91/01/07 $
**
**	graphics monitorspec definintions
**
**	(C) Copyright 1985-1999 Amiga, Inc.
**	    All Rights Reserved
*/

#ifndef	EXEC_SEMAPHORES_H
#include	<exec/semaphores.h>
#endif

#ifndef	GRAPHICS_GFXNODES_H
#include	<graphics/gfxnodes.h>
#endif

#ifndef	GRAPHICS_GFX_H
#include	<graphics/gfx.h>
#endif

struct	MonitorSpec
{
struct	ExtendedNode	ms_Node;
UWORD	ms_Flags;
LONG	ratioh;
LONG	ratiov;
UWORD	total_rows;
UWORD	total_colorclocks;
UWORD	DeniseMaxDisplayColumn;
UWORD	BeamCon0;
UWORD	min_row;
struct	SpecialMonitor	*ms_Special;
UWORD	ms_OpenCount;
LONG	(*ms_transform)();
LONG	(*ms_translate)();
LONG	(*ms_scale)();
UWORD	ms_xoffset;
UWORD	ms_yoffset;
struct	Rectangle	ms_LegalView;
LONG	(*ms_maxoscan)();	/* maximum legal overscan */
LONG	(*ms_videoscan)();	/* video display overscan */
UWORD	DeniseMinDisplayColumn;
ULONG	DisplayCompatible;
struct	List DisplayInfoDataBase;
struct	SignalSemaphore DisplayInfoDataBaseSemaphore;
ULONG	ms_reserved00;
ULONG	ms_reserved01;
};

#define	TO_MONITOR	0
#define	FROM_MONITOR	1
#define	STANDARD_XOFFSET	9
#define	STANDARD_YOFFSET	0
#define	REQUEST_NTSC	1
#define	REQUEST_PAL	2
#define	REQUEST_SPECIAL	4
#define	REQUEST_A2024	8

#define	DEFAULT_MONITOR_NAME	"default.monitor"
#define	NTSC_MONITOR_NAME	"ntsc.monitor"
#define	PAL_MONITOR_NAME	"pal.monitor"
#define	STANDARD_MONITOR_MASK	( REQUEST_NTSC | REQUEST_PAL )

#define	STANDARD_NTSC_ROWS	262
#define	STANDARD_PAL_ROWS	312
#define	STANDARD_COLORCLOCKS	226
#define	STANDARD_DENISE_MAX	455
#define	STANDARD_DENISE_MIN	93
#define	STANDARD_NTSC_BEAMCON	( 0x0000 )
#define	STANDARD_PAL_BEAMCON	( DISPLAYPAL )

#define	SPECIAL_BEAMCON	( VARVBLANK | LOLDIS | VARVSYNC | VARBEAM | CSBLANK )

#define	MIN_NTSC_ROW	21
#define	MIN_PAL_ROW	29
#define	STANDARD_VIEW_X	0x81
#define	STANDARD_VIEW_Y	0x2C
#define	STANDARD_HBSTRT	0x06
#define	STANDARD_HSSTRT	0x0B
#define	STANDARD_HSSTOP	0x1C
#define	STANDARD_HBSTOP	0x2C
#define	STANDARD_VBSTRT	0x0122
#define	STANDARD_VSSTRT	0x02A6
#define	STANDARD_VSSTOP	0x03AA
#define	STANDARD_VBSTOP	0x1066

#define	VGA_COLORCLOCKS (STANDARD_COLORCLOCKS/2)
#define	VGA_TOTAL_ROWS	(STANDARD_NTSC_ROWS*2)
#define	VGA_DENISE_MIN	59
#define	MIN_VGA_ROW	29
#define	VGA_HBSTRT	0x08
#define	VGA_HSSTRT	0x0E
#define	VGA_HSSTOP	0x1C
#define	VGA_HBSTOP	0x1E
#define	VGA_VBSTRT	0x0000
#define	VGA_VSSTRT	0x0153
#define	VGA_VSSTOP	0x0235
#define	VGA_VBSTOP	0x0CCD

#define	VGA_MONITOR_NAME	"vga.monitor"

#define	VGA70_COLORCLOCKS (STANDARD_COLORCLOCKS/2)
#define	VGA70_TOTAL_ROWS 449
#define	VGA70_DENISE_MIN 59
#define	MIN_VGA70_ROW	35
#define	VGA70_HBSTRT	0x08
#define	VGA70_HSSTRT	0x0E
#define	VGA70_HSSTOP	0x1C
#define	VGA70_HBSTOP	0x1E
#define	VGA70_VBSTRT	0x0000
#define	VGA70_VSSTRT	0x02A6
#define	VGA70_VSSTOP	0x0388
#define	VGA70_VBSTOP	0x0F73

#define	VGA70_BEAMCON	(SPECIAL_BEAMCON ^ VSYNCTRUE)
#define	VGA70_MONITOR_NAME	"vga70.monitor"

#define	BROADCAST_HBSTRT	0x01
#define	BROADCAST_HSSTRT	0x06
#define	BROADCAST_HSSTOP	0x17
#define	BROADCAST_HBSTOP	0x27
#define	BROADCAST_VBSTRT	0x0000
#define	BROADCAST_VSSTRT	0x02A6
#define	BROADCAST_VSSTOP	0x054C
#define	BROADCAST_VBSTOP	0x1C40
#define	BROADCAST_BEAMCON	( LOLDIS | CSBLANK )
#define	RATIO_FIXEDPART	4
#define	RATIO_UNITY	(1 << RATIO_FIXEDPART)

struct	AnalogSignalInterval
{
UWORD	asi_Start;
UWORD	asi_Stop;
};

struct	SpecialMonitor
{
struct	ExtendedNode	spm_Node;
UWORD	spm_Flags;
int	(*do_monitor)();
int	(*reserved1)();
int	(*reserved2)();
int	(*reserved3)();
struct	AnalogSignalInterval	hblank;
struct	AnalogSignalInterval	vblank;
struct	AnalogSignalInterval	hsync;
struct	AnalogSignalInterval	vsync;
};

#endif	/* GRAPHICS_MONITOR_H */