Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ ibm6154(4) — AOS 4.3

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

bufemul(4)

bus(4)

cons(4)

ibm5081(4)

ibm5151(4)

ibm5154(4)

ibm6153(4)

ibm6155(4)

ibm8514(4)

ibmaed(4)

ibmemul(4)

kbdemul(4)

tty(4)

vga(4)

IBM6154(4)  —  

NAME

ibm6154, apa8c − IBM 6154 Advanced Color Graphics Display interface

SYNOPSIS

pseudo-device apaeightc

DESCRIPTION

The IBM 6154 Advanced Color Graphics Display is a 14-inch CRT with a 0.3mm dot-pitch shadow mask, driven at 92 Hz interlaced.  It provides a color, all-points-addressable, bit-mapped display with 393,216 points on the screen. The display adapter provides a 256k bit-map translated to 720 displayable pixels on each of 512 displayable lines, 4 bits per pixel. The bit-map is organized as 4 planes (64k per plane). Each pixel can take one of 16 colors selected from a 64-color palette.  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. In addition, a plane select register and foreground/background register are provided as a means to select individual planes or all planes for update with pre-programmed foreground/background color data. The color palette is provided with a 4-bit to 6-bit lookup memory. Each of the 16 entries contains two bits per primary color (red, red intense, green, green intense, blue, blue intense).  The default values for the apa8c color table are:
 

0black 8dark gray
1blue 9dark blue
2green10dark green
3cyan11orange
4red12dark red
5violet13pink
6yellow14yellow-orange
7light gray15white

 

The display adapter is a single PC/AT card installed in the I/O bus as a sixteen-bit device. To be upward-compatible with the IBM 6153, the display appears to the system as two separate memory areas: a 128k block of system memory (beginning at 0xf4d20000), and 16 bytes of I/O space (addressed from 0x150 through 0x15f).  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 Color 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/ttyap8c in glass tty (the default) mode and /dev/apa8c 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/apa8c, output intended for /dev/ttyap8c 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/apa8c 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

Ibm6154 is not supported on the IBM 6152 Academic System. 

FILES

/dev/apa8c
/dev/ttyap8c
/dev/console

SEE ALSO

bufemul(4), bus(4), cons(4), ibm5081(4), ibm5151(4), ibm5154(4), ibm6153(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/apa8c, when bit 0x8 is set in the minor device number, is not limited to the apa8c addresses. 

PRPQs 5799-WZQ/5799-PFF: IBM/4.3  —  July 1987

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026