IBM6153(4) —
NAME
ibm6153, apa8 − IBM 6153 Advanced Monochrome Graphics Display interface
SYNOPSIS
pseudo-device apaeight
DESCRIPTION
The IBM 6153 Advanced Monochrome Graphics Display is a 12-inch CRT with gray-white phosphor, driven at 92 Hz interlaced. It provides a monochrome, all-points-addressable, bit-mapped display with 393,216 points on the screen (720 displayable pixels on each of 512 displayable lines). All pixels are directly accessible by the CPU. The display adapter provides hardware assist features including a write mask to protect bit fields within a byte, a barrel shifter to rotate bits within a byte, and a logic unit to combine source bytes before they are written into the bit map.
The display adapter is a single PC/AT card installed in the I/O bus as a sixteen-bit device. The display appears to the system as two separate memory areas: a 128k block of system memory (beginning at 0xf4d00000), and 16 bytes of I/O space (addressed from 0x160 through 0x16f). The 128k block defines both the visible frame buffer and the hidden, off-screen memory area. For each of the 512 scan lines, the first 90 bytes (720 pixels) are visible; the last 38 bytes (304 pixels) are hidden. The 16 bytes of I/O space access the display adapter’s control registers.
There are several different read and write modes plus several different masks and operations described in the IBM RT PC Hardware Technical Reference Volume II, Advanced Monochrome Graphics Display Adapter. Below is the interaction of these modes and user read/writes to display memory. Remember all read and writes are shorts (16 bit values).
Definitions:
∗addrThe “high” byte addressed by the user.
∗addr+
The “low” byte addressed by the user. Note this could be either left, right, up, or down from addr depending on the settings of the Increment/Decrement (Address Counter Mode) and X/Y (Address counter Stepping) in the Data Control Register.
sy1The “high” byte specified (or read) by the user.
sy2
The “low” byte specified (or read) by the user.
dm1
data mask 1
dm2
data mask 2
wm1
write mask 1
wm2
write mask 2
d1
internal date register 1
d2
internal date register 2
d3
internal date register 3
rot(x)x is rotated the amount specified by the rotate count in the Data Control Register.
func(a,b)
The output of the logical function unit operating on a and b. The actual function is specified by the Logical Unit Function Control bits in the Data Control Register.
modeThe Memory Mode bits in the Data Control Register.
&8 bit and.
|8 bit or.
~
8 bit ones compliment.
Modes:
System Read Operation (load half, mode == any)
d1 = ∗addr
d2 = ∗addr+
sy1 = ∗addr (only if mode == 00)
sy2 = ∗addr+ (only if mode == 00)
System Write Operation (store half, mode == 00)
∗addr = (wm1 & ∗addr) | (~wm1 & func(sy1 & dm1,rot(d2) & dm2))
∗addr+= (wm2 & ∗addr+)| (~wm2 & func(sy2 & dm1,rot(d1) & dm2))
Overlay Write Operation (store half, mode == 01)
∗addr = (wm1 & ∗addr) | (~wm1 & func(sy1 & dm1,rot(d2) & dm2))
∗addr+= (wm2 & ∗addr+)| (~wm2 & func(sy2 & dm1,rot(d1) & dm2))
wm1 = sy1
wm2 = sy2
Adapter Write Operation (store half, mode == 10)
∗addr = (wm1 & ∗addr) | (~wm1 & func(d3 & dm1,rot(d2) & dm2))
∗addr+= (wm2 & ∗addr+)| (~wm2 & func(rot(d2)&dm1,rot(d1)&dm2))
d3 = rot(d2)
d2 = d1
Automatic Read/Write Operation (store half, mode == 11)
∗addr = (wm1 & ∗addr) | (~wm1 & func(d3 & dm1,rot(d2) & dm2))
∗addr+= (wm2 & ∗addr+)| (~wm2 & func(rot(d2)&dm1,rot(d1)&dm2))
d3 = d2
d2 = d1
d1 = ∗addr
The display operates as /dev/ttyapa8 in glass tty (the default) mode and /dev/apa8 in window-manager mode:
-Glass tty mode initialization consists of the downloading of a character font into the adapter card, followed by a cursor home and screen clear. In this mode, the display driver emulates a smart terminal, similar to an IBM 3101, and can be /dev/console.
-In window-manager mode, a user-level process, such as a window manager, can directly control the display device hardware, loading picture data, accessing display buffers, etc. When a process opens /dev/apa8, output intended for /dev/ttyapa8 is buffered by the kernel until later (see bufemul(4)). The process must then open /dev/bus to access the display and control memory areas for manipulation if bit 0x8 is not set in the minor device number. Glass tty mode is reentered when /dev/apa8 is closed.
DIAGNOSTICS
None.
ERRORS
The following errors can be returned by the interface:
[ENODEV] Nonexistent display (on open, close, read, write, or ioctl);
Unavailable display (on open): user processes are denied access to this display (see consoles(5), setscreen(8)).
[EIO] Made an attempt to close a display device that was not open.
[EBUSY]The display has already been opened by a user process.
NOTES
Ibm6153 is not supported on the IBM 6152 Academic System.
FILES
/dev/apa8
/dev/ttyapa8
/dev/console
SEE ALSO
bufemul(4), bus(4), cons(4), ibm5081(4), ibm5151(4), ibm5154(4), ibm6154(4), ibm6155(4), ibm8514(4), ibmaed(4), ibmemul(4), kbdemul(4), tty(4), vga(4)
“IBM/4.3 Console Emulators” in Volume II, Supplementary Documents
BUGS
Access to the PC/AT I/O and memory busses through /dev/apa8, when bit 0x8 is set in the minor device number, is not limited to the apa8 addresses.
PRPQs 5799-WZQ/5799-PFF: IBM/4.3 — July 1987