|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T a
Length: 4989 (0x137d)
Types: TextFile
Names: »apa8c.h«
└─⟦a0efdde77⟧ Bits:30001252 EUUGD11 Tape, 1987 Spring Conference Helsinki
└─⟦526ad3590⟧ »EUUGD11/gnu-31mar87/X.V10.R4.tar.Z«
└─⟦2109abc41⟧
└─⟦this⟧ »./X.V10R4/libibm/libsrc/apa8c.h«
/* $Header: apa8c.h,v 10.1 86/11/19 10:45:18 jg Exp $ */
/* apa8c.h - Definitions and macros required to access APA8C
*
* Defines required to support APA8C
*
* Author:
* Scott Bates
* Brown University
* IRIS, Box 1946
* Providence, RI 02912
*
*
* Copyright (c) 1986 Brown University
*
* Permission to use, copy, modify and distribute this software and its
* documentation for any purpose and without fee is hereby granted, provided
* that the above copyright notice appear in all copies, and that both
* that copyright notice and this permission notice appear in supporting
* documentation, and that the name of Brown University not be used in
* advertising or publicity pertaining to distribution of the software
* without specific, written prior permission. Brown University makes no
* representations about the suitability of this software for any purpose.
* It is provided "as-is" without express or implied warranty.
*/
#define SCREEN_BASE (0xF4D20000) /* base address for screen bitmap */
#define XDEV_ID XDEV_IBMAPA8C /* device id for info structure */
#define REAL_SCREEN_WIDTH 1024 /* number of bits/line for apa8c */
#define REAL_SCREEN_HEIGHT 512 /* Number of lines on apa8c */
#define X_SCREEN_WIDTH 720 /* number of bits/line for apa8c display */
#define X_SCREEN_HEIGHT 512 /* visible lines on the screen */
#define SCREEN_DEVICE "/dev/apa8c" /* device name */
#define MOUSE_DEVICE "/dev/msapa8c" /* device name of mouse for display */
#define CURSOR_TYPE SOFT_CURSOR /* apa8c uses software cursor */
#define DISPLAY_INIT() apa8c_init() /* display initialization routine */
/*
* Control register (short)
*/
#define APA8C_FC 0xF0000150
/*
* Data mask registers (2 each 8 bits)
*/
#define APA8C_DM 0xF0000152
/*
* Color Plane Select register.
*/
#define CPS_REG 0xF0000154
/*
* Foreground/ Background register.
*/
#define FGBG_REG 0xF0000156
/*
* Video Look-up Table register.
*/
#define VLT_REG 0xF0000158
/*
* bits 0-2 rotate count
*/
#define DCR_ROTMASK 0x0007
/*
* bits 3-5 logic unit function control
*/
#define DCR_FCMASK 0x0038
#define DCR_FCOR 0x0028
#define DCR_FCNOR 0x0038
#define DCR_FCPA 0x0010
#define DCR_FCPB 0x0000
#define DCR_FCPNA 0x0030
#define DCR_FCPNB 0x0020
#define DEFAULT_FUNC DCR_FCPNB
#define HIDDEN_FUNC DCR_FCPA
#define RDWR_FUNC DCR_FCPA
/*
* 6-7 reserved
*/
/*
* 8-9 memory mode
*/
#define DCR_MEMMODE 0x0300
#define DCR_SWR 0x0000
#define DCR_ISWR 0x0100
#define DCR_ADWR 0x0200
#define DCR_AURW 0x0300
/*
* 10 inc/dec of the address counter
*/
#define DCR_DEC 0x0400
#define DCR_INC ~0x0400
/*
* 11 x/y stepping
*/
#define DCR_X 0x0800
#define DCR_Y ~0x0800
/*
* 12 1 means block transfer
*/
#define DCR_BT 0x1000
/*
* 13 1 means interrupt enable
*/
#define DCR_IEN 0x2000
/*
* 14 1 means Sync enable
*/
#define DCR_SEN 0x4000
/*
* 15 1 means Video enable
*/
#define DCR_VEN 0x8000
/*
* Data Mask Register masks (typically are the
* inverse of each other)
*/
#define DM_A 0xFF00
#define DM_B 0x00FF
#define CLEAR_DM 0x0000
#define DEFAULT_DM DM_B
#define HIDDEN_DM DM_A
#define RDWR_DM DM_A
/*
* Values for the writemask.
*/
#define NOMASK 0x0000
#define MASKBYTE2 0x00FF
#define MASKBYTE1 0xFF00
/*
* Values for the color plane select register.
*/
#define DEFAULT_CPS 0x001F;
/*
* Values for the foreground/background register.
*/
#define DEFAULT_FGBG 0x00F0;
/*
* Color definitions (not all colors are defined)
*/
#define DARK_RED 0x0100
#define DARK_GREEN 0x0400
#define DARK_BLUE 0x1000
#define RED 0x0200
#define GREEN 0x0800
#define BLUE 0x2000
#define LIGHT_RED 0x0300
#define LIGHT_GREEN 0x0C00
#define LIGHT_BLUE 0x3000
#define BLACK 0x0000
#define WHITE 0x3F00
/*
* Defines to work with the Video Look-up table.
* foreground = 1 bits background = 0 bits
* (Note: In "X" zero bits are black and one bits are white)
*/
#define VLT_SIZE 16
#define FG_COLOR WHITE
#define BG_COLOR DARK_GREEN
/*
* Bitmap to BUS address offsets. All address offsets in the bitmap area
* must be multiplied by 2 before being used as BUS offsets.
*/
#define BM_TO_BUS(n) ((n) << 1)
/*
* The physical bitmap addresses on the apa8C adaptor card
* go from 0000 to 0xFFFF. (the size of a short or word, 16 bits addresses
* these spots.
*/
#define MAXOFFSET 0xFFFF
/*
* This is defined to be the last scan line in the hidden area.
* It is needed because the side affect of setting the writemask registers
* is the mask is also written to the bitmap.
*/
#define WRMASK_SCREEN_BASE \
(*(u_short *)(SCREEN_BASE + BM_TO_BUS(MAXOFFSET - 1)))
#define SET_APA8C_FC(control_info) { \
*(u_short *) APA8C_FC = (u_short)(control_info); \
}
#define SET_APA8C_WRITEMASK(mask) { \
SET_APA8C_FC(DCR_SEN | DCR_VEN | DCR_ISWR | DCR_X | DCR_FCOR); \
WRMASK_SCREEN_BASE = (u_short) mask; \
}
#define SET_APA8C_DATAMASK(mask) { \
*(u_short *)APA8C_DM = (u_short) mask; \
}