800-0345 Sun-1 System Reference Manual Jul82
800-0345 Sun-1 System Reference Manual Jul82
Copyright 1982
Sun Microsystems, Inc.
2310 Walsh Avenue
Santa Clara, CA 95051
(lt08) 7lt8-9900
SUN-1 SYSTEM REFERENCE MANUAL
CONTENTS
CONTENTS. • • • • • • • • • • • • • • • • • • • • •.• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • i
LIST OF FIGURES ••••••••••••••••••••••••••••••••••••••••••••••••••••• iv
LIST OF T.ABLES •••••••••••••••••••••••••••••••••• " • • • • • • • • • • • • • • • • • • • iv
Vl.0 draft of July 27, 1982 (c) 1982 Sun Hicrosystems, Inc.
SUN-1 SYSTEM REFERENCE MANUAL Page ii
Vl.0 draft of July 27, 1982 (c) 1982 Sun ~licrosystems, Inc.
SUN-1 SYSTEM REFERENCE MANUAL Page iv
LIST OF FIGURES
LIST OF TABLES
Wiring of UARTs..................................................... 5
Usage of timers...................................................... 5
Card cage configuration ••••••••••••••••••••••••••••••••••••••••••••• 14
S-record format ••••••••••••••••••••••••••••••••••••••••••••••••••••• 27
Monitor exception messages •••••••••••••••••••••••••••••••••••••••••• 29
Information saved on bus errors ••••••••••••••••••••••••••••••••••••• 31
Processor logical address space ••••••••••••••••••••••••••••••••••••• 34
Segment map protection codes •••••••••••••••••••••••••••••••••••••••• 40
Page map address space codes •••••••••••••••••••••••••••••••••••••••• 41
Sun keyboard control characters ••••••••••••••••••••••••••••••••••••• 50
V1.0 draft of July 27, 1982 (c) 1982 Sun ~licrosystems, Inc.
SUN-1 SYSTEM REFERENCE MANUAL
1• INTRODUCTION
1.1. Description
V1.0 draft of July 27, 1982 (c) 1982 Sun Hicrosystems, Inc.
SUN-1 SYSTEM REFERENCE MANUAL Page 2
3HBIT ETHERNET
SERIAL-A
POWER- -ON S\.JITCH
FAN,.
i-lOUSE
FUSE
o 0
POWER CORD o 0
~~
o 0
KEYBOARD
etc. See the chapter on "Installation" below for information about con-
necting peripheral equipment to the Sun Workstation.
The Sun 68000 board generates the 20 address lines on the standard
IEEE 796 Bus. Using these 20 address lines, the board can address up to
one megabyte of memory and one megabyte of input/output locations.
If the 68000 accesses the Multibus and does not receive a data
transfer acknowledge within 1 to 3 milliseconds, the access will be
aborted via bus error. The timeout period in the Sun processor board
includes the" Multibus acquisition time. Thus, if a peripheral device
locks up the bus for more than 1 millisecond, timeout can occur.
V1.0 draft of July 27, 1982 (c) 1982 Sun Microsystems, Inc.
SUN-1 SYSTEM REFERENCE MANUAL Page 4
MicroBar, Inc.
Attn: Rich Boberg
1120 San Antonio Rd.
Palo Alto, CA 94303
415-964-2862
Literature Department
Intel Corporation
3065 Bowers Avenue
Sant~ Clara, CA 95051
408-987-8080
V1.0 draft of July 27, 1982 . (c) 1982 Sun Microsystems, -Inc~--'
SUN-1 SYSTEM REFERENCE MANUAL Page 5
2.2.1. UARTs
The Intel 8274 or NEe 7201 dual UARTs are wired as follows:
2.2.2. Timers
The AMD 9513 timer chip is configured with an input frequency of 5
MHz and FOUT of 2.5 MHz (connected to Gate 1). It contains five timers,
whose usage is described in the following table:
Operating Normal
Timer Usage Mode Frequency
2 User timer.
OUT causes INT6.
V1.0 draft of July 27, 1982 (0) 1982 Sun Hicrosystems, Inc.
SUN-1 SYSTEM REFERENCE MANUAL Page 6
The standard address for the graphics board is OxCOOOO. Any addi-
tional graphics boards are placed at successively lower addresses.
The following table indicates which switch to set for each of the
possible addresses. Note that ONLY the indicated switch should be
turned on; all other switches should be in the off position.
SUN-1 SYSTEM REFERENCE MANUAL Page 1
• Bit-Manipu1ation
• Function Selection
Host
,.....
RasterOP
,... Frame ..., Video
Processor Hardware Buffer Monitor
OxOOOOO 8
Ox20000 7
Ox40000 6
Ox60000 5
Ox80000 4
OxAOOOO 3
OxCOOOO 2 (standard setting)
OxEOOOO 1
V1.0 draft of July 21, 1982 (c) 1982 Sun Microsystems, Inc.
SUN-1 SYSTEM REFERENCE MANUAL Page 8
Multibus
Base Address
C~
1 8
I
Figure GBOAR~. Sun Graphics Board.
The video display monitor currently supplied with the Sun-1 Work-
station is the Ball Model HD17H CRT Data Display. This is a solid-
state, raster-scan, high-density data terminal display with 17 inch
diagonal screen size in a horizontal format. The service manual for
this display is supplied with your workstation:
2.6. Keyboard
VT100 Kevboard
1035030 Keyboard
The keyboard cable attaches to main workstation unit via the back
panel KEYBOARD connector (see figure BACKPANEL in section 1.2 above).
See the next chapter, "Installation" for more information.
V1.0 draft of July 21, 1982 (c) 1982 Sun Microsystems, Inc.
SUN-1 SYSTEM REFERENCE MANUAL Page 10
The Ethernet board has two octal dip-switches: one to select the
Mult1bus base address and one to select the local Ethernet host address.
The location of these switches is shown in figure ETHERNET.
The Ethernet interface communicates with the host CPU via four read
and four write registers located in Multibus I/O space. The registers
are located on successive word (16-bit) boundaries starting on a 256-
byte boundary within the 64K Multibus I/O space. Only the eight high-
order address bits are decoded for the selection of the board. To
select the l-lul ti bus base address, take addre .... s bi ts A8 •• A15 of" the
desired address and encode them into dip-switch S505. Switch #1 1s the
least significant bit, and "1" bits correspond to "on" switches. By
convention, Ox100 is the normal address for the first ~thernet board,
and subsequent boards (if any) are placed at successively higher
addresses.
V1.0 draft of July 27, 1982 ~ c) 1982 Sun Hicrosy stems, Inc.
. sUN-1 SYSTEM REFERENCE ·-MANUAL- Page 11-·
Coax Cable: I I
Ethernet Connector
Multibus Ethernet
Base Add ress Host Address
(5505) (5507)
:0 :0
Figure ETHERNET. Sun 3 MBit/sec Ethernet installation.
Four sets of straps and two a-bit dip-switches are provided for
configuring the disk controller board. For UNIX. on the Sun-1, the M3
jumper must be installed and switch 85 on dip-switch S2 must be ON.
Switches #7 and 8 on dip-switch S1 must be set as follows:
The Chrislin CI-8086 dyn~ic RAM memory bo~rd interf~ces to the Sun
processor through the Multibus. Full specifications can be found in the
supplied manual:
V1.0 draft 9f July 27, 1982 ~:) 1982 Sun Micros¥stems, Inc.
r __ ·~_" _ _ _ , __ ,
-'SON~l SYST.EM REFERENCE MANUAL
.- ....
Control Data Lark Power Supply and I/O Adapter (PIO), Volume 1
(Hardware Installation/Operation Manual)
The Lark subsystem connects to the Sun-1 via the standard SMD A and
B connectors. See the next chapter on "Installation".
2.11. Fujitsu Disk Subsystem
V1.0 draft of July 27, 1982 (c) 1982 Sun Nicrosystems, Inc.
SUN-1 SYSTEM REFERENCE MANUAL Page 14
3. INSTALLATION
TOP
1 Sun
memory expansion 2
2 Sun
memory expansion 1
3 Sun
processor board
4 Bus
master 1
5 Bus
master 2
6~ Mul tibus memory, optional (graphics, other)
Y lL Sun graphics board
--- ' - D)Ul-;. ~
BOTTOM
Note that the processor board and Sun memory expansion boards (if
V1.0 draft of July 27, 1982 ( c) 1982 Sun Hicrosy stems, Inc.
SUN-1 SYSTEM REFERENCE MANUAL Page 15
any) MUST be located in slots 1,2, or 3, since only these slots have
the P2 edge connectors used by the Sun expansion memory.
"Bus Masters" are Multibus devices which initiate data transfers,
such as the Sun processor board and the Interphase SMD 2180 disk con-
trollers. Bus master(s), if present, must be placed in consecutive
slots immediately below the processor board as shown in the diagram. In
the Sun-1, the processor board is always configured as the highest-
~; iority Multibus Master; see section 2.2.3 "Multibus Priority" above
for more information.
(2) Remove tha six screws securing the tray, three on each side of the
black SUN-1 pedestal.
(3) Carefully pull the tray out the back of the pedestal. Do not force
it. Gently move cables out of the way as necessary.
(4) Before removing a card, oarefully note the location and orientation
of all cables attached to it. It may help to mark the flat ribbon
cables with a felt-tipped marker. Note that, on most of the ribbon
cables, pin I' is distinguished by some marking, e.g. the red edge
of the cable. This edge generally faces toward the front of· the
workstation at the point where the cable plugs into a header on the
edge of a cirouit card.
(5) Before removing any cards, it is necessary to remove the two black
plates (know as ftcard cage restraints") at each end of the PCB
tray. Remove' any cables that are in the way, and extract or insert
the desired card(s). To remove a card, simultaneously lift the two
plastic levers provided for this purpose at each upper corner of
the card. When inserting a card, make sure that it seats all the
V1.0 draft of July 27, 1982 (c) 1982 Sun ~~crosystems, Inc.
SUN-l SYSTEM REFERENCE MANUAL Page 16
way into the card cage. Pay attention to the position of the cards
in the card cage (see "Card Cage Configuration" above). Observe
that the Multibus edge connectors inside the card cage permit only
one "right way" to install a card.
(7) Slide the processor card back into the Multibus card cage. Do not
force; carefully fold internal cables into the enclosure. After
you are satisfied that the installation is correct, replace the six
screws securing the tray on the sides of the black display pede-
stal.
(8) To prepare the Sun-1 for operation, see the section "Set-up" below.
The Sun graphics board has one edge-connected cable with six
color-coded wires, connecting it to the (black & white) video display
monitor. The side of the plug where most of the wires are connected is
OPPOSITE to pin 11 and should face inboard, i.e. toward the back of the
workstation. Th~:: pin #1 side of the plug is the side where no wires are
connected and may also have a distinguishing mark on the plug itself;
this side faces forward when plugged in correctly.
~O
The processor board has two~pin connectors (headers), one nearer
the front of the workstation~ and the other nearer the back of the
Vl.0 draft _ Of July 27, 1982 ,,_!c) 1982 Sun Hicrosystems~ _ Inc.
SUN-1 SYSTEM REFERENCE MANUAL Page 17
The SMD 2180 disk controller board connects internally to the back
panel via industry standard A and B cables. The larger header nearest
the front of the workstation is the A connector; this is connected
directly to the back panel SMD A connector. As usual, the cable plugs
into the header with the highlighted edge (pin 11) toward the front of
the worstation. The four smaller connectors are the B connectors for up
to four storage module drives. Cable number 1 is the farthest forward,
i.e. closest to the A connector; if your workstation is configured for
only one disk drive, the int~rnal B cable for it will be plugged in
there. Additional drives would take consecutive pOSitions toward the
rear of the controller board. As above, the B cables are inserted with
pin 11 facing the front of the workstation.
3.6. set-up
3.6.1. Keyboard
The Sun keyboard should be plugged into the connector labeled "Key-
board" on the back panel. If you wish to use the Sun keyboard as your
console input device (as is normally done) you must power-on the work-
station AFTER plugging in the keyboard. See section 4.1 "Getting
Started" for more details.
Vl.0 draft of July 27, 1982 (c) 1982 Sun Microsystems, Inc.
...
Page --18~~:':'
Note that serial port A provides the CTS, RTS, and DTR control
lines in additj-'n to the transmit and receive l1nes, while port B pro-
vides only transmit and receive. This may make line B unsuitable for
connection to devices such as modems which require use of the control
11nes. Consult a hardware technician or Sun if assistance is needed.
Note also that Serial-A 1s a DeE port, which means that you can
connect most terminals or printers directly to this port, while you
probably need to interpose a "null modem". if you wish to connect a
modem or another computer. Serial-B, on the other hand, is a DTE port
which permits direct connection of modems, computers, and the like
(assuming, as noted above, that the control lines are not required)
while requiring a null modem for attaching most terminals. Getting the
cabling right 1s a problem wi· :.ch should be familiar to anyone who has
had to connect RS-232 equipment; sometimes it is most easily solved by
experimentation.
Your Sun-1 may have been supplied with either of two optional disk
SUbsystems: the Control Data Lark Module Drive Model 9455, or the
Fujitsu Model M2312 disk drive. Both of these units use the industry
standard SMD interface which is supported by the Interphase SMD 2180
disk controller supplied with your disk subsystem. It is possible to
attach up to four disk drives to a single SMD 2180 controller; however,
at present you cannot mix Lark and Fujitsu drives on the same con-
troller.
The disk subsystem is attached to the Sun Workstation via two flat
ribbon cables. The (wider) control or "A" cable plugs into the SMD-A
connector on the Sun back panel; the (narrower) data or ffB" cable for
-each of up to four drives plugs into one of the four SMD-B connectors on
the back panel. If two disk controller boards are used, you will have
to route the second set of A and B internal connecting cables around the
top or side of the back panel to bring them outside of the enclosure.
The head assembly of the Fujitsu must be locked during shipment and
should be locked any time the drive is to be moved, even from table to
table. It must be unlocked before the drive can be used. To unlock it
for use, open the disk subsystem enclosure by removing the screws on the
Sides, and follow the directions in section 3.5 of the Fujitsu Microdisk
Drives CE Manual.
V1.0 draft of July 27, 1982 (c) 1982 Sun Microsystems, Inc.
. - _.-
SUN-1 SYSTEM REFERENCE MANUAL Page 19
Like the Fujitsu, the Lark's head mechanism is locked for shipping
and must be released before use. The manufacturer specifies that the
carriage is to be locked any time the drive is to be moved, even from
table to table. To release the lock, open the disk subsystem enclosure,
and back off the screw labeled "carriage lock" until it is flush with
the top of the top cover on the drive. The lock is set by turning off
power to the drive and turning the locking screw in until it is observed
to engage the carriage mechanism and a slight resistance is felt.
(2) The cartridge loading door cannot be opened unless power 1s on AND
the disks are "spun down" (at rest).
(3) With the power on and a cartridge installed, the disks are made to
spi: up by pressing the START-STOP button on the disk subsystem's
front panel. When the button latches in, the disks will spin up.
While they are spinning up, the green light on the START-STOP but-
ton will flash and the disks will not yet be usable by the Sun-l.
When the green light burns steadily (a few minutes after preSSing
START-STOP) the disk is ready to use.
(4) The disks are made to spin down by pressing the start-stop button
again to return it to the "out" position. The green light flashes
while the disks are spinning down. The cartridge door cannot be
opened until the disks are completely spun down, as indicated by
the green light going out. This takes about a minute.
(5) When power is on and the disks are ft lly spun down, the cartridge
door can be opened by squeezing upward on the latch button located
in the top of the indentation in the door.
(6) After opening the door, you can eject the cartridge by pushing down
firmly on the open door. Always keep the door closed when the
drive is not in use. The manufacturer recommends keeping a spare
unused cartridge in the drive when it is not in use.
V1.0 draft of July 27, 1982 (c) 1982 Sun Microsystems, Inc.
SUN-1 SYSTEM REFERENCE MANUAL Page 20
(8) To prevent the fixed disk from being written, push in the FlXED-
PROT button on the front pa~el of the disk subsystem. The button
will latch in and the red light will burn steadily. To write-
enable the fixed disk, push the button again and the red light will
extinguish. This button may be switched to the in or out position
at any time.
(9) To write-protect the cartridge, move the small black toggle on the
edge of the cartridge to the position labeled WRITE PROTECT. To
allow the cartridge to be written, slide the toggle to the WRITE
ENABLE position.
(10) If the Lark detects a fault condition (for example, you attempt to
read the disk when it is not completely spun up) the red light in
the FIXED-PROT button will flash on and off to alert you to the
error condition. You can clear this signal by pressing the FIXED-
PROT button twice.
3.6.5. Mouse
3.7. UNIX
If UNIX was supplied with your Sun-1 system, consult the accompany-
ing document, "Installing and Operating UNIX on the Sun Workstation".
V1.0 draft of July 27, 1982 (c) 1982 Sun }Vlicrosy~t~ms, _ Inc.
SUN-:-1 SYS!El-f REFERENCE MANUAL Page 21
After the Sun-1 Workstation has been properly installed (see the
preceding chapter), the workstation and disk sUbsystem (if present) can
be powered on. The "ON" position of the back panel power switch is to
the left as you face the back panel.
After a few seconds, the monitor should identify itself on the con-
sole terminal, with a message looking like
If this t.t1essage does not appear, and repeated use of the Power switch
has no effect, make sure that power is being supplied from the outlet
and that the Sun's fuse 1s not burned out. If you still have no suc-
cess, consult chapter 6 for recommended diagnostic procedures, or con-
tact your Sun Hicrosystems service organization.
above the Sun Monitor message, and the system doesn't respond to input
from the keyboard, the likelihood is that one of the latching keys (CAPS
LOCK or SHIFT LOCK) is latched in the down POf' ::.ion, which prevents the
keyboard from sending an idle signal to the monitor. Releasing all
latched keys should solve the problem; if not, check the keyboard cable
and connector to make sure that a proper connection exists. If the con-
nection appears sound, try powering the workstation off and on again.
If the problem persists, there is probably a defect in the keyboard or
keyboard cable. Contact your service organization or Sun for assis-
tance.
_.2. UNIX
If your Sun-1 is supplied with the UNIX operating system, the first
thing you will typically do after powering-up the system is to initiate
("boot") UNIX using the monitor's Boot command. After booting, most of
your interaction with the Sun-1 will be with UNIX rather than directly
with the ROM monitor. To get started, see the accompanying document
titled "Installing and Operating UNIX on the Sun Workstation". A com-
plete reference on UNIX 1s provided in the UNIX Programmer's Manual,
also suppli.ed. After you have familiarized yourself with the features
of·UNIX on the Sun, we suggest that you return to this chapter and scan
V1.0 draft of July 21, 1982 (c) 1982 Sun Hicrosystems, Inc.
SUN-1 SYSTEM REFERENCE MANUAL Page 22
Vl.0 draft of July 27, 1982 (c) 1982 Sun Microsystems, Inc.
~~ .... ~ _ •• 4 •.. _____ _
-'SUN-1 .'SYSTEM REFERENCE" MANUAL Page 23
restores the refresh function and allows memory to be examined for diag-
nosis.
All monitor I/O is done using "busy-waits", and the code runs at
the highest interrupt priority. Therefore, if a user program 1s inter-
rupted by typing the Abort sequence on the console terminal or with some
other exception, the monitor will run correctly unless its global data
area has been damaged. If the user program is then continued, it should
be unaffected by the interruption save for the possible loss of some
console I/O interrupts.
<verb><space>-[<argument>]<return>
The <verb> part is always one alphabetic character; case does not
matter. <Space>- means that any number of spaces is skipped here.
<Argument> is normally a hexadecimal number or a single letter; again,
case does not matter. Square brackets n[ ]" indicate that the argument
portion may be optional. When typing commands, <backspace> and <delete>
V1.0 draft of July 27, 1982 (c) 1982 Sun Microsystems, Inc.
SUN-1 SYSTEM REFERENCE MANUAL Page 24
>e 1234
001234: 23CF? 5678
001236: OOOO? q
>d
DO: 00000001?
D1: 00000231? Of00
D2: 01203405? q
>
dv
(u,p)
and name
B dk(0,2)unix
B dk(0,2)diag
The parameters dv, u, p, and name are passed to the boot
routine, which interprets them as follows:
E addr Open the word at memory address addr; odd addresses are
rounded down.
V1.0 draft of July 27, 1982 (c) 1982 Sun Microsystems, Inc.
SUN-1 SYSTEM REFERENCE MANUAL Page 26
o addr Opens the byte location specified. The byte vs. word
distinction can be a problem on the Multibus, since some
Multibus boards follow the 8086 convention for byte ord-
ering within words, which is the reverse of the 68000
convention. See section 2.1 above for further details.
One of the primary uses of the moni to is to load programs into the
processor's memory. Programs can be loaded via a serial line connected
to a host computer, referred to as "down-line loading".
1. The letter S.
3. A two digit (one byte) count between 04 and FF, giving the total
number of bytes 1n the address, data, and checksum (items 4, 5, and
6).
4. A three-byte address (six hex digits).
5. n-4 bytes of data, where n 1s the count given in 3. Each byte con-
sists of two hex digits from 00 to FF •
V1.0 draft of July 27, 1982 (c) 1982 Sun Microsystems, Inc.
SUN-l SYSTEM REFERENCE MANUAL Page 28
6. A one-byte (two dig1 t) checksum. The checksum' ~~st 1s that the sum
of the bytes in items 3 through 6 must be congruent to 255 mod 256,
1.e. must have (hex) FF in the least significant byte.
S2080d3144190031f03b
S2080d31483310ca055f
S2080d314cOOOOl12339
SB040d314A73
These four S-records load twelve bytes into memo:" '? starting at location
Oxd3144. The starting PC is Oxd314A. The byt~s ~hich ru'e loaded are:
190031f033100a0500001123
Suppose the file we want to load is oalled test.dl and the host
command to download a file is "dlx <filename>". Assuming that you have
used "transparent" mode to log into the host computer and initialize its
command environment appropriately, you should then "escape" from tran-
sparent mode. Then, issue the command
L dlx test.dl
This will transmit the command ndlx test.dl" to the host, and then cause
the monitor to accept subsequent commands from the host. The monitor
sends a backslash character to the host ~. an it 1s ready to begin
receiving S-records. When the down-load is complete, the host should
send a nun monitor command, switching monitor input back to the console
keyboard. You can then start your program with the G command. Nor-
mally, the current PC will have been set by the downloader to be the
entry point of the program; if not, you can specify a starting address
with G.
You can abort a download by hitting the nBreak n key on the oonsole
terminal, changing to transparent mode via "U t", and interrupting the
host. Down-line loading a file not in S-record format will probably
cause strange behavior, therefore the host program should check the data
it 1s downloading.
4.6. Traps
Exception: Tr at <pc)
Break at E£.
Trace trap at ~
Abort at ~
V1.0 draft of July 27, 1982 (c) 1982 Sun Microsystems, Inc.
SUN-1 SYSTEM REFERENCE MANUAL Page 30
Protection Error
A reference was made to the <access-address> (see below) which is
not allowed by the segment map for the access mode in effect at the
time of the trap. For example, a program tried to write to a seg-
ment mapped read-only. (Note that the monitor always runs in
supervisor mode, even after a trap from user mode.)
- Timeout Error
A Multibus reference timed out; usually, this means that a device
or memory was referenced but is not plugged into the card cage, or
is not working right.
- Pari ty Error
The wrong parity was seen on a read from on-board memory.
- Watchdog Error
The watchdog timer expired and caused a bus error.
. -
To assist the user in diagnosing bus error and address error excep-
tions, the monitor saves various processor state information at the
beginning of its global data area. The address of this area is
currently defined to be Ox200j however, the monitor will always store
this address as a longword at location 0, so you will always be able to
find the information by 1ndirecting through location O. You can examine
this data with the "E" monitor command.
V1.0 draft of July 27, 1982 (c) 1982 Sun ~licrosystems, Inc.
SUN-1 SYSTEM REFERENCE MANUAL Page 32
Note that the registers saved in locations Ox208 through Ox253 are in
exactly the same order and format in which they are displayed when )'ou
type the "Dn command to the mOnitor, then keep hitting RETURN.
On the Sun processor board, one of the five on-board timers 1s con-
nected so that if it ever goes off, the "Reset" line is asserted and the
processor is restarted as if the power had just come on. The monitor
attempts to prevent this by recycling the timer each time it goes
through its memory refresh routine.
You can then start or resume your program with the C (or possibly
G) command. Execution will proceed until the trap is reached, at which
point you will get a message such as
Break at 001000
At this point, you may examine registers, memory, etc. You may also
clear the BPT or set a new one. You may continue using the C command,
which will execute the nbroken" instruction, and ] .. ave the breakpoint
still set.
If you load a new program while a BPT is set, the monitor will nor-
mally be able to detect this. On the other hand, if you give the Kl
command ("Medium Reset") while a BPT is set, and then set a new one, the
monitor will be confused if the first trap is taken.
V1.0 draft of July 27, 1982 (c) 1982 Sun Microsystems, Inc.
SUN-1 SYSTEM REFERENCE MANUAL Page 34
5.1. Processor
The Sun processor is provided with a map so that you can map pages
of 2K bytes anywhere in your address space. The structure of a virtual
address is described in the Memory Management section.
Two other physical address spaces are mapped into the memory
address space. Address from Ox100000 to Ox1EFFFF are mapped to Multibus
memory space addresses 0 to OEFFFF, respectively. The first 64K bytes
of MultiBus I/O space is mapped at the top of the virtual address space,
at addresses from Ox1FOOOO to Ox1FFFFF. Most commercially available
Multibus I/O devices use this space.
OxAOOODO - OxBFFFFF Page map. The page map entry used to map some vir-
tual address X is addressed at virtual address X +
OxAOOOOO. Note that the segment map entries for
virtual address X should be set up before accessing
the page map entries since the segment map entries
determine which page map entries are accessed.
In "boot state", the state of the system after reset, read and exe-
cute accesses to any location OxOzzzzz in mapped addresss space are
redirected to come from the corresponding location Ox2zzzzz (in the
PROMO address space), but write accesses to the mapped address space go
to on board RAM. Also, all interrupts (including normally "non-
maskable" ones) are inhibited. In this way it is possible to initialize
RAM just after reset. Boot state is exited by writing to the PROMO
address space.
System space errors are caused when a logical address greater than
or equal to Ox200000 is accessed in user mode. These addresses are
reserved for supervisor state to address the on-board system facilities.
A segment map error indicates that the protection bits in the segment
map did not allow the type of operation attempted. A page map error is
caused by accessing an invalid page. Timeout errors occur for off-board
references to the Multibus that are not acknowledged within one to three
milliseconds. Most likely, nonexistent memory or a nonexistent device
has been addressed. (There are no timeouts for on-board references
because the on-board bus is synchronous and all cycles are always ack-
nowledged.) Parity errors occur if a byte or word with odd parity is
read from local RAM. Since parity can only be checked at the end of a
memory read cycle, the 68000 cannot abort the cycle in which the error
occured, but the next cycle.
V1.0 draft of July 27, 1982 (c) 1982 Sun Microsystems, Inc.
SUN-1 SYSTEM REFERENCE MANUAL Page 36
disabled. Such a write may be done at any time (from supervisor state).
When a bus error occurs the cause of the error can be determined by
checking whether the attempted access was to system space in user mode,
whether a mapped access violated the segment protection code, or whether
the page referenced was nonexistent. If none of the above caused the
exception, then the exception was a timeout for bus accesses, or a par-
ity error caused by local accesses in the previous memory cycle.
5.1.3. Interrupts
5.1 .4 • Initialization
5.2.1. Overview
The page size is 2048 bytes, the segment size is 32K bytes (giving
16 pages per segment), and up to 16 contexts can be mapped concurrently.
The maximum logical address space for a context is .1024 pages (2M
bytes). The maximum physical address space that can be mapped simul-
taneously 1s 2M bytes.
V1.0 draft of July 27, 1982 (c) 1982 Sun ~dcrosystems, Inc.
SUN-1 SYSTEM REFERENCE MANUAL Page 38
(6)
IR.:....d l
Protection
,.,
r
(2) (2) (12)
I ~dr...
(4) physic al
Space
l add~8S s'
r
(23 bit s)
Page Control
(11)
Each context has its own virtual address space. Sharing and inter-
context communication may be implemented by writing the same values into
the segment or page maps of multiple contexts.
V1.0 draft of July 27, -1982- ('?) 1982 Sun Hicrosy stems,_ Inc.
SUN-1 SYSTEM REFE~ENCE MANU~
~~ ~ -
. Page· 39
11 1 oj Logical
segment #
I...r;;<~----- Ignored ------..;,.> _
.
I
23 21 20 15 14 o
Segment map data format:
-.-
CunBnt Protection
context • code 0 0 Page Map Pointer • Read only
15 12 11 676 5 o
Logical
segment #
Page # -..<c----- Ignored
23 21 20 15 14 11 10 o
Page map data format: Page types:
00 = On -board memory
Physical page address 01 = Nonexistent
I Current
context •
I<--- Ignored --------::>r-I • .Write only
15 12 11 o
Figure MMADDR. Addressing Scheme for Segment and Page ¥~p Entries.
V1.0 draft of July 27, 1982 (c) 1982 Sun Microsystems, Inc.
SUN-1 SYSTEM REFERENCE MANUAL Page 40
Each virtual address space th~s bas 64 segments. Each segment can
be mapped to 16 pages (32K bytes) or can be made inaccessible. The 16
page map entries pointed to by the segment map entry determine whether
each 2K page exists and where it is located.
5.2.4. Protection
Access by Access by
Code Supervisor User Exampl e of Use
----------- ----------- ~~-------------
0 ------ None None Unused segment
1 --x--- Execute None System code
2 r----- Read None System fixed data
3 r-x--- Read, execute None Mixed system code/data
4 l"W---- Read, write None System variable data
5 rwx--- Full None Mixed system code/data
6 1"--1"-- Read Read U~er fixed data
7 rw-r-- Read, write Read System -> user transfer
8 r--rw- Read Read, write User variable data
9 rw-rw- Read, write Read, write System <-> user data
10 rw-r-x Read, write Read, execute User-only code
11 l"W-rwx Read, write Full User-generated code
12 r-xr-x Read, execute Read, execute Shared code
13 rwxr-x Full Read, execute System-generated, shared
14 rwx--x Full Execute Proprietary code
15 rwxrwx Full Full Unprotected
The page map handles the paging and the allocation of physical
memory. A page map entry also indicates the physical address space in
which a page is located, such as on-board or off-board memory. Further,
the page map assists demand paging algorithms by maintaining reference
and modified bits for each page.
The 6 bits from the segment map entry concatenated with the next ~
logical address bits from the 68000 form an index into the page map.
Thus each segment accesses a block of 16 consecutive pages.
Vl.0 draft of July 27, 1982 (e) 1982 Sun Microsystems, 1nc.-
SUN-1 SYSrEM REFERENCE MANU~ Page 41
o- on-board memory
t - nonexistent
2 - Multibus memory
3 - Multibus I/O
The page map entry used to map some virtual address X is addressed
at virtual address X + OxAOOOOO. Note that the segment map entries for
virtual address X should be set up before accessing the page map entries
since the segment map entries determine which page map entries are
accessed.
V1.0 draft of July 27, 1982 (c) 1982 Sun Microsystems, Inc.
SUN-1 SYSTEM REFERmCE MANUAL Page 42
char *v_in1tsp;
Ini tial System Stack Pointer loaded by hardware reset.
lnt (*v_startmon)();
Initial Program Counter loaded by hardware reset.
char *v_SunRev;
Revision level of moni tor and hardware. This points to the
string which is printed at power-up_ The current rev: ":ion
level is Rev C.
long .v_SerialNum;
Serial number of this Sun. This is cutrently not imple-
mented.
long *v_MemorySize;
Size in bytes of physical memory on the processor board and
memory expansion boards. This does not include Multibus
memory.
GlobDes *v_GlobPtr;
Points to the monitor's Global Ram structure, which con-
tains all global variables used by the monitor. Various of
these are also pointed to by specific entries in the Vecto"
Table. This pointer should not be used without a gooa
understanding of what it's pointing to ••• which is hard to
obtain without listings of the mOnitor source.
int (*v-putchar)(c);
char c;
Prints the specified character on the current output sink.
If c is a linefeed (ttnewline n ), it is preceded by a car-
riage return. The output is done using busy-waiting; that
is, if the output sink is a serial port, and it cannot
accept a character to transmit, putchar() waits until it
can. Output to the frame buffer always occurs immediately.
lnt (*v_mayget){);
Attempts to return the next character from the current
input source. If a character is pending, the result is in
the range 0 - 255. Returns -1 if no character is pending.
mayget() does not echo, regardless of the setting of
EchoDn.
int (*v_mayput)(c)
char c;
Att~mpts to put a character to the current output sink.
Returns 0 if it did or -1 if it didn't (because the current
output sink was a serial line, and it was busy).
V1.0 draft of July 27, 1982 (c) 1982 Sun ~licrosystems, Inc.
SUN-1 SYSTEM REFERENCE MANUAL Page 44
int (.v-&etkeY)()j
If no key has been struck, returns NOKEY (defined as -1).
Otherwise, returns either the up/down key code or a byte of
ASCII for the next key struck, depending on the setting of
v_translation (see below).
int (.v_lnitGetkey)();
Initializes the polled side of the parallel keyboard inter-
face. Must be called once before getkey is first called.
Called by the monitor after a reset, so user programs will
typically not need to call it.
keyboard ••v_CurKeyboard;
Address of the current keyboard translation tables. See
Appendix D for a listing of ~he current tables. The tables
are in ROM, but the pointer to them is in RAM, and may be
modified if you construct your own tables. If you do, see
SetTable() and keyentry() below.
keymap • (.v_SetTable)(shiftmask)j
unsigned int shiftmaskj
This routine returns the address of the keymap in effect
for the current keycode, based on which shift keys are
currently depressed and whether the current key is moving
up or down. Shiftmask is a bit vector which encodes the
current position of "shift-like" keys and the direction of
the current keystroke. See the header file "keyboard.h" in
Appendix D.
,Vl.O draft of July 27. 1982 (c) 1982 Sun Microsy_stems, Inc.
SUN-1 SYSTEM REFERENCE -MANUAL Pag~ 45
keybuftype .v_Keybuf;
The circular buffer which holds up/down key codes. This is
filled at memory refresh time (every 2 ms or so) as key
codes are received from the keyboard, and emptied asynchro-
nously by calls to getkey().
1nt (.v_finit)(G);
struct dpyglobals *G;
Frame buffer initialization routine. G points to the ter-
minal emulator's global workspace. Two entries in the
workspace must be filled; the first longword must contain
the virtual address of the frame buffer, and the second
must contain the virtual address of a 4096-byte work area.
finite) fills the work area with ,i_ts character font defini-
tion, which is stored in compressed form in the ROM. typi-
cally, callers just use the workspace used by the monitor,
which is accessible in the Vector Table as v_FBAddr (see
below). The monitor calls finite) after a reset, so if a
frame buffer exists at the usual physical address, typical
user programs will not need to call finite).
int (*v_fwritechar){c,G);
char c;
struct dpyglobals *G;
Writes the character c to the frame buffer "terminal". G
points to the terminal emulator's global workspace; the
address of the workspace used by the monitor is accessible
as v_FBAddr in the Vector Table (see below). The monitor
implements an ANSI standard (X3.64) compatible terminal in
software. It also includes vector-drawing capabilities
similar to the Tektronix ~01~. Details of the escape code
sequences supported are in the section "Frame Buffer Termi-
nal Emulation", below.
long .v_FBAddr;
Virtual address of the frame buffer. This resides at the
beginning of the terminal emulation global workspace, hence
FBAddr can be passed as the "G" parameter to routines
V1.0 draft of July 21, 1982 (c) 1982 Sun Microsystems, Inc.
SUN-1 SYSTEM REFERENCE MANUAL Page 46
int (*v_fwrstr)(addr,len,G);
unsigned char .addr;
short len;
struct dpyglobals' *G;
Writes a string of characters to the frame buffer "termi-
nal", more efficiently than a sequence of calls to fwri-
techar. Addr points to a character string of length len.
G points to the terminal emulator's global workspace; the
address of the workspace used by the monitor is accessible
in the Vector T~ble as v-1BAddr (see above).
The mor .tor does not currently support the optional mouse. There
is one entry in the Vecto,' Table for it, however. This entry,
v_MouseBuf ,is currently always zero.
. V1.0 draft of July 27, 1982 (c) 1982 Sun Microsystems, Inc •
SUN-l SYSTEM BE"FERENCE MANUAL
(·v_KeyFrsh) ();
This contains the address of the monitor's refresh inter-
rupt service routine. This address is normally contained
in the hardware vector pointer for interrupt level 7 (non-
maskable interrupt) at location Ox7C. If an operating sys-
tem or standalone program wants to change or augment the
refresh routine, it should set the hardware vector to point
to its code, and have its code jump to KeyFrsh() when done.
If an operating system or standalone program wants to
change the refresh routine, it may restore the hardware
vector from here when it wants to change back. Note that
this entry, while declared as a function, is NOT a C func-
tion and cannot be called as one. It is called by inter-
rupt hardware, and returns with the "rte" instruction
instead of the subroutine's "rts".
lnt (*v_AbortEnt)();
This contains the address within the monitor of its "Abort"
entry point. It an interrupt routine (such as a replace-
ment refresh routine) wishes to allow the user to suspend
the current program and enter the monitor, it can enter at
this location. The routine must enter by a "jmp" to Abor-
tEnt. Upon entry, all registers must have the same values
they had on entry to the interrupt routine, and there must
be no extraneous data on the supervisor stack (beyond the
SR and PC stacked by the interrupt). Once entered by Abor-
tEnt, the monitor will print an "Abort at xxxxxx" message
and accept commands from the user. If a "c" command is
entered, it will restore all the registel'''s to their values
on entry at AbortEnt, then restore the PC and SR from what
was on the stack on entry at AbortEnt, resuming the main-
line program. The monitor's refresh routine uses AbortEnt
if the "Abort sequence" (Erase EOF then A) is typed on the
console keyboard, or if a serial line is selected as
current input source and its BREAK key is pressed.
int .v_RefrCnt
This integer value contains a millisecond counter which is
incremented by the monitor's refresh routine. Since the
refresh routine runs every 2 milliseconds, the counter is
always incremented by 2. Due to uncommon conditions
resulting from Multibus accesses to nonexistent memory or
devices, this counter will run slightly "slow", 50 it is
not suitable for a wall-clock value. It can be used for
low-precision timing, though; for example, it is u5ed to
implement auto-repeat for the console keyboard.
V1.0 draft of July 27, 1982 (c) 1982 Sun Microsystems, Inc.
SUN-1 SYSTEM REFEREJ.JCE MANUAL Page ~8
These Vector Table entries permit routines in the second prom set
(U102 and U104) to access common command-parsing and simple output for-
matting routines in the first prom set. They will not be documented
here other than to list their names: linbuf, lineptr, linesize, getline,
getone, peekchar, gethexbyte, ge tnum , message, printhex, diagret.
User programs read from the keyboard by calling getkey() via the
ROM vector table (see the preceding section, "ROM Vector Table"). By
default, getkey returns ASCII codes; it can be persuaded to return key
up/down codes by modifying the variable translation, also accessible
thru the Vector Table.
--
Vl.0 draft of July 27, 1982 ..( c) 1982 Sun t-l1crosystems, Inc.-
SUN-1SYSTEM REFERENCE MANUAL Page 49
REP!
(Key 1124) This key is a s,;~cond CTRL key, not a repeat key.
BACK TAB
(Key C113) This is a DEL key, generating Ox7F (Delete or Ru-
bout).
ERASE EOF, ERASE EOL, TAB SET, TAB CLR, LINE INS, LINE DEL,
CHAR IN S, eH AR DEL
(Keys #1, 2, 3,21,25, 27, 49, 51) Not implemented. These
J-::eys are i(9lored.
CLR
(Key 126) Generates ~L (FF, Form Feed, oxe).
unlabeled function keys
(Keys 15-18) These keys are ignored.
SHIFT LOCK
(Key 076) Same as SHIFT keys. This key is unlocked by
pressing either SHIFT key.
V1.0 draft of July 27. 1982 (c) 1982 Sun Microsystems, Inc.
SUN-1 SYSTEM REFERENCE MANUAL Page 50
CAPS LOCK
(Key 129) Causes letter keys to generate uppercase letters;
no other keys are affected.
Note: When the monitor is using UART A or B for the console input,
Abort is caused by a BREAK.
Spe~1al keys: the arrow and HOME keys generate ANSI standard con-
trol sequences (ESC [ A, B, C, D, and H).
V1.0 draft of July 27, 1982 (c) 1982 Sun Microsystems, Inc.
·-
- .
:~N-l 'SYS.TEM REFERENCEMANU~ ...
.Page 5-1
-
~
12 DC2 CTRL-R
13 DC3 CTRL-S
14 DC4 CTRL-T
15 NAK CTRL-U
16 SYN CTRL-V
17 ETB CTRL-W
18 CAN CTRL-X
19 EM CTRL-Y
1a SUB CTRL-Z
1b ESC ESC, CTRL-[
1c FS CTRL-\
ld GS CTRL-]
1e RS CTRL- '"
lf US CTRL-_
Although there are 1024 by 1024 pixels in the frame buffer, only a
region 800 pixels high by 1024 pixels wide is displayed on the video
screen, as shown in Figure SCREEN. The pixels not displayed (1024 by
224) are still accessible, and may be used as a cache to store bit maps
which are not visible but which may be moved (or copied) into the visi-
ble region br or-e of the raster operations described below.
The pixels in the frame buffer are addressed via <X,Y> coordinates
(column and row), with the upper left hand corner of the display
corresponding to <0,0>. Positive X displacement is to the right; posi-
tive Y displacement is downward. The frame buffer allows the access of
up to sixteen horizontally adjacent pixels on one read or write cycle
(one access to the graphical memory). This yields increased bandwidth
when a contiguous group of pixels is operated on by the same function.
5.5.2. RasterOps
Vl.0 draft of July 27, 1982 (c) 1982 Sun Mlcrosystems, Inc.
SUN-1 SYSTEM REFERENCE MANUAL Page 52
00 )(
'I
0,7991------"'-_---------1
1023,1023
•
••
•" •
o •
•
.•
< *
••
••••
•• ••
.........
•
..... .
•••••••
..,........
••••••••
\
Ost +- Constant
Ost +- Src
Ost to Ost OR Src AND Pat
Ost .. Ost AND NOT Src
Ost to Dst XOR Src
The Pat, Src, and Dst columns in the table form an index running
from zero (000) through seven (111). The eight bits of the result
column uniquely specify the desired boolean function, and these are pre-
cisely the eight bits which are to be loaded into the frame buffer's
FUNCTION register. By convention, the least significant bit of the
function appears at the top of the table, hence this fun~~ion (Sro OR
Dst) is represented by the eight-bit value (hex) EE. Examples of other
function encodings are 0 (clear destination bits), FF (set destination
bits), and CC (copy source to destination).
The Sun graphics system allows all 256 possible RasterOp functions,
although only a few are used in practice.
V1.0 draft of July 27, 1982 (0) 1982 Sun Microsystems, Inc.
SUN-1 SYSTEM REFERENCE MANUAL Page 5It
Data Bus
Unit
Y4
. Vl.O draft of July 27, 1982 (c) 1982 Sun I-'d.crosystems, Inc.
-SUN-1" -SYSTEM_ REFERENCE- MANUAL-
The destination register holds the data that is being modified with
a read-modifY-write cycle on update operations in the frame buffer.
The function register specifies how the function unit combines des-
tination, source, and mask data when data is written into the frame
buffer memory_ The eight-bit contents of the function register selects
one of the 256 possible RasterOps for three boolean operands. See sec-
tion "RasterOps" above for details.
The actual width of an update operation is set via the width regis-
ter from one to sixteen pixels.
The Video Enable bit turns on video to the mOnitor; the screen appears
blank when this bit 1s off. The Interrupt Enable bit enables interrupts
on the level selected. When enabled, an interrupt is generated at the
V1.0 draft of July 27, 1982 (c) 1982 Sun Hicrosystems, Inc.
SUN-1 SYSTEM REFERENCE MANUAL Page 56
(3) Data from the Multibus is written into the selected register on the
graphics board (source, mask, function, width, or control), or the
data is ignored if no register is selected.
(4) The contents of the addressed (x,y) frame buffer location are read
into the destination register.
(5) If and only i f an update is requested, the data stored in the des-
tination, source, and mask registers are combined according to the
preselected function and new data is written back into the
addressed frame buffer location.
On a read cycle, four things happen. The first two are the same as
for the case of a write cycle.
_0
V1.0 draft .of July 27, 1982 ,( c) 01982 ~\ln Microsystems, Inc.
!~ "
. ~uN-f SYSiEM ··REFERENCE .MANUAL
(3) Data is read from the addressed (x,y) location in the frame buffer
into the selected register on the graphics board.
(4) The data then stored in the source register is returned to the
Multibus, correctly bit-aligned with the bus data lines.
The frame buffer is never updated on a read cycle and the update bit is
ignored for read cycles.
A one-deep FIFO decouples the graphics board from the Sun proces-
sor. Processor requests are latched on the graphics board and are sub-
sequently executed independently and in parallel with the processor.
This makes the frame buffer a zero-access-time device as long as the
request rate does not exceed one request per microsecond. Since nor-
mally streams of data are being transferred, the pipelining maximizes
throughput.
V1.0 draft of July 27, 1982 (c) 1982 Sun Hicrosy stems, Inc.
SUN-1 SYSTEM REFERENCE MANUAL Page 58
~~~~~__~~~~~~1~3~.~1~2__~~_____ ~~________~-r~
2·1
lOl07
o· No Operation
L o· Function
1· Width
2· Control
3· Interrupt
cl •• r
1 • Load Atlx. Regllte"
2· Load Source Re~llter
3. Load Pattern Regllte, (Mask)
copy operations. If they are set to 3, the mask register will be loaded
from the data bus. If the Update bit is also set in any of these cases,
then the RasterOp will be performed and the frame buffer modified after
the specified register is loaded. all in the same bus cycle.
The low order bit (bit 0) of the address must always be zero.
V1.0 draft of July 27, 1982 (c) 1982 Sun Hicrosystems, Inc.
SUN-1 SYSTEM REFERENCE MANUAL Page 60
CTRL-X or
Spaces are included only for readability; these characters must occur in
the given sequence without the intervening spaces. ESC represents the
ASCII Escape character (ESC, CTRL-[, Ox1b). The next character is a
left square bracket "[n (Ox5b). The <params> are a sequence of zero or
more decimal numbers made up of digits between 0 and 9, separated by
semicolons. <Char> represents a function character, which is different
for each control sequence. Some examples of ~Jntactically legal escape
sequences are (again, ESC represent the single cbaracter Escape):
ESC[m
ESC[7m
ESC[33;54A
ESC[123;456;O;;3jB
Syntactically legal ANSI escape sequences which are not currently inter-
preted by the Sun terminal will be ignored.
)
-V1.0 draft of July 21, -1982 - _~( c) - , 982 Sun Hicrosy stems, Inc.
--- --- -- _. - --::- '--'--'~'- --::- .-~--:-- -----
for functions which set a mode, the initial setting of the mode.
The initial settings are restored on k1 or k2 reset, or by calling
finite) (see "ROM Vector Table").
CTRL-G (Ox7)
Bell
The Sun-1 Workstation is not equipped with an audible bell. It
"rings the bell- by flashing the entire screen.
CTRL-H (Ox8)
.BACKSPACE
The cursor moves one position to the left on the current line.
If it is already at the left edge of the screen, nothing hap-
pens.
CTRL-I (Ox9)
TAB
The cursor moves right on the current line to the next tab stop.
The tab stops are fixed at every multiple of 8 columns. If the
cursor is already at the right edge of the screen, nothing hap-
pens; otherwise the cursor moves right a minimum of one and a
maximum of eight character posi tions.
CTRL-J (OxA)
Line-feed
The cursor moves down one line, remaining at the same character
position on the line.
CTRL-L (oxe)
Form-feed
The cursor is postioned to the Home position (upper-left corner)
and the entire screen is blanked.
V1.0 draft of July 27, 1982 (c) 1982 Sun Hicrosy stems, Inc.
SUN-1 SYSTEM REFERENCE MANUAL Page 62
CTRL-M (OxD)
RETURN
The cursor moves to the leftmost character ·position on the
current 1 ine.
CTRL-[ (Ox1B)
ESC
This is the Escape character. It. initiates a control sequence
if followed immediately by a left bracket "[ft. Otherwise it is
ignored.
ESC[#@
INSERT CHARACTER (ICH)
Takes one parameter, # (default 1). Makes room for I characters
at the current cursor position by shifting to the right by #
character positions the tail of the current line starting at the
current cursor position inclusive. The' vacated positions at
the cursor are filled with blanks; the rightmost I character po-
sitions shift off the line and are lost. The position of the
cursor is unchanged.
ESC[IA
CURSOR UP (CUU)
Takes one parameter, I (default 1). Moves the cursor up ,
lines. If the cursor is fewer than I lines from the top of the
screen, moves the cursor to the topmost line on the screen. The
character position of the cursor on the line is unchanged.
ESC[IB
CURSOR DOWN (CUD)
Takes one parameter, I (default 1). Moves the CUrSor down D
lines. if the cursor is fewer than IJ. lines fl'om the bottom of
the screen, moves the cursor to the last line on the screen.
The character position of the cursor on the line is unchanged.
ESC[ Ie
CURSOR FOWARD (CUF)
Takes one parameter, I (default 1). Moves the cursor to the
right by I character positions on the current line. If the cur-
sor 1s fewer than I positions from the right edge of the screen,
moves the cursor to the rightmost position on the current line.
ESC[ liD
CURSOR BACKWARD (CUB)
Takes one parameter, I (default 1). Moves the cursor to the
left by' character positions on the current line. If the cur-
sor is fewer than I positions from the left edge of the screen,
moves the cursor to the leftmost position on the current line •
ESC[IE
CURSOR NEXT LINE (eNL)
Takes one parameter, I (default 1). Positions the cursor at the
leftmost character position on the D-th line below the current
line. If the current line is less than D lines from the bottom
of the screen, postions the cursor at the leftmost character po-
sition on the bottom line.
ESC[11;'2t
HORIZONTAL AND VERTICAL POSITION (HVP)
or
ESC['1;'2H
CURSOR POSITION (CUP)
These two escape sequences are equivalent. Takes two parame-
ters, 11 and ~2 (default 1, 1). Moves the cursor to the g2-th
character position on the U1-th line. Character positions are
numbered from 1 at the left edge of the screen; line positions
are numbered from 1 at the top of the screen. Hence, if both
parameters are omitted, the default action moves the cursor to
the ~ome position (upper left co~ner).
ESC[J
ERASE IN DISPLAY (ED)
Takes no parameters. Erases from the current cursor position
inclusive to the end of the screen. In other words, erases from
the current cursor position inclusive to the end o~ the current
line and all lines below the current line. The cursor position
is unchanged.
ESCUe:
ERASE IN LINE (EL)
Take~ nQ param~ters. Erases from the current cursor position
inclusive to the end of the current line. The cursor position
is unchanged.
ESC[IL
INSERT LINE (lL)
Takes one parameter, # (default 1). Makes room for I new lines
starting at the current line by scrolling down by I lines the
portion of the screen from the current line inclusive to the
bottom. The I new lines at the cursor are filled with blanks;
the bottom I lines shift off the bottom of the screen and are
lost. The position of the cursor on the screen is unchanged.
V1.0 draft of July 27, 1982 (c) 1982 Sun Microsystems, Inc.
SUN-1 SYSTEM REFERENCE MANUAL Page 64
ESC[IM
DELETE LINE (DL)
Takes one parameter, I (default 1). Deletes II line~ beginning
with the current line. The portion of the screen from the
current line inclusive to the bottom is scrolled upward by ,
lines. The # new lines scrolling onto the bottom of the screen
are filled with blanks; the I old lines beginning at the cursor
line are deleted. The position of the cursor on the screen 1s
unchanged.
ESC[IP
DELETE CHARACTER (DCH)
Takes one parameter, # (default 1). Deletes I characters start-
ing with the current cursor position. Shifts to the left by I
character poSitions the tail of the current line from the
current cursor position inclusive to the end of the line.
Blanks are shifted into the rightmost 11 character positions.
The position of the cursor on the screen is unchanged.
ESC[Im
SELECT GRAPHIC RENDITION (SGH)
Takes one parameter, I (default 0). Note that, unlike most es-
cape sequences, the parameter defaults to zero if omitted. In-
vokes the graphic rendition specified by the parameter. All
following printing characters in the data stream are rendered
according to the parameter until the next occurrence of this es-
cape sequence in the data stream. Currently only two graphic
renditions are defined:
o Normal rendition.
7 Negative (reverse) image.
ESC[p
Set screen mode to black-on-white.
Takes no parameters. Sets the screen mode to black-~n-white.
If the screen mode is already black-on-white, has no effect. In
this mode blanks display as solid white, other characters as
black-on-white. The cursor is a solid black block. Characters
displayed in negative image rendition (see "Select Graphic Ren-
dition" above) will be white-on-'.i,ack in this mode. This is the
initial setting of the screen mode on reset.
V1.0 draft of July 27, 1982 (c) 1982 Sun t-1ic~osystem~, Inc.
SUN:" 1 . SYSTEM RE·FERENCE MANUAL Page 65
ESC[q
Set screen mode to white-on-black.
Takes no parameters. Sets the screen mode to white-cn-black.
If the screen mode is already white-on-black, has no effect. In
this mode blanks display as solid black, other characters as
white-on-black. The cursor is a solid white block. Characters
displayed in negative image rendition (see "Select Graphic Ren-
dition" above) will be black-on-white in this mode. The initial
setting of the screen mode on reset is the alternative mode,
black on white.
ESC[lr
Set number of scroll lines.
Takes one parameter, I (default 1). Sets to D an internal regis-
ter which determines how many lines the screen will scroll up
when a line-feed function is performed with the cursor on the
bottom line. See the description of the Line-feed (CTRL-J) con-
trol function above for details.
Vl.O draft of July 27, 1982 (c) 1982 Sun Microsystems, Inc.
SUN-1 SYSTEM REFERENCE MANUAL Page 66
P lowers pen
A move right
D move up
B move left
H move down
All other characters cause exit from incremental plotting mode and are
intrpreted as Alpha mode characters.
V1.0 draft of July 27, 1982 (c) 1982 Sun Microsystems, Inc.
Note that each move occurs in increments of 1 in the 4014
"extended" 12-bit coordinate ~stem. Since the Sun only uses 10-bit
coordinates, no motion will be visible until at least four increments
have occurred in the X or Y direction. In other words, the increments
occur within 4x4 squares which are mapped to single pixels on the Sun
frame burfer.
CTRL-] (OxlD) Enter graph mode, first vector dark, follwing vec-
tors written.
CTRL-] CTRL-G (Ox1D07) Enter graph mode, all following vectors written.
The font table, which is accessible to user program via the ROM
vector table, contains a bit map for each printable character. The font
table 1s organized as an array of 96 elements; each element is an array
of CHRSHOli'£S shortwords (CHRSHORTS is a constant currently defined as
20). Only the high-order CHRWIDTH bits of each (16-bit) she ~tword are
used (CHRWIDTH is a constant currently defined as 12). An ASCII charac-
ter c (32 <= c < 128) 1s displayed in a rectangular region 12 pixels
wide by 22 pixels high, as follows:
(4) The next row of pixels from the top 1s displayed from the high-
order 12 bits of the first shortword in the font table entry. The
most significant bit appears leftmost on the screen.
(5) The next 19 rows of pixels are produced respectively from the next
19" shortwords in the font table entry.
V1.0 draft of July 27, 1982 (c) 1982 Sun Hicrosystems, Inc.
SUN-1 SYSTEM REFERENCE MANUAL Page 68
6• DIAG NOSTICS
After IT, boards are put into a burn-in rack where they are sub-
jected to power-cycling and high temperatures for a minimum of three
days. The burned-in boards are then retested at the voltage margins.
Vl.0 draft of July 27, 1982 (c) 1982 Sun Microsystems, Inc.
---"--- -- - -- ,------ ~- -
- -- '.-- ..
After the diagnostic PROMs have been installed, simply powering the
machine on will run the diagnostics. An error-free run should display
the following information:
Initially, the diagnostics test out the timer and UART circuitry.
If there is an error at this pOint, the diagnostics will halt. If you
cannot get any diagnostic output through the UART, contact your Sun
~licrosystems service organization for assistance.
Next, boot state is exited. In boot state, all interrupts are dis-
abled, so while leaving boot state, it is possible that another board in
the system is erroneously generating an interrupt when it should not be.
If you fail to get the NO BAD INTERRUPTS message, remove the boards in
the system (other than the processor board) one by one and re-run the
diagnostics until the bad board has been identified.
The diagnostics next test out the context registers, the segment
maps, the page maps, on-board memory, and Multibus memory. The diagnos-
tics print out the test numbers as the tests are invoked, and any faulty
chips are listed. Tests 1 to 9 diagnose the segment maps, tests 21 to
29 diagnose the page maps, tests 41 to 51 diagnose on-board memory, test
61 checks the 64K RAMs storing parity data, and tests 81 to 91 check
Multibus memory. Multibus memory tests are not run if there is no
Multibus memory in your system.
V1.0 draft of July 27, 1982 (c) 1982 Sun Microsystems, Inc~
SUN-1 SYSTEM REFERENCE MANUAL Page 70
2) Remove the six screws securing the tray on the sides of the SUN-1.
4) Identify the processor board. This is the board with the ribbon
cable which connects to the back panel keyboard connector (see fig-
ure BACKPANEL in section 1.2).
5) Remove any cables that are in the way, and extract the proce5sor
board.
9) Check that each PROM is inserted with pin 1 (the end with the small
indentation) toward the nearest edge of the board, i.e. away from
the Multibus connector.
10) Check that all pins on the PROMs have properly gone into their
sockets.
11) Put the processor board back into the Multibus card cage.
14) Power the system ON, and the diagnostics will begin execution.
15) If the diagnostics show any error other than one in the format "BAD
64K A:OOOOOO W:OOOO R:OOOO", contact your Sun Microsystems service
organization. To decode 64K RAM error information, see the next
section.
All 64K RAM errors display the address at which the error occurred,
the data written to that location, and the data read from that location.
All Addresses and data are displayed in hexadecimal. If the error is in
V1.0 draft of July 27, 1982 (c) 1982 Sun Microsy~tems, Inc.
-.. . .
SUN-1 SYSTEM REFERENCE MANUAL Page 71
The bad chips are at locations M0100 and M0208 on the processor board
and these can be replaced with 150ns 64K RAMs as supplied by Sun
Microsystems for spares.
Note that bad chip locations are only shown for those boards in the
on-board memory space. No chip locations are given for bad Hultibus
memory since the diagnostics cannot distinguish v_ifferent types of
Multibus memory boards.
The memory locations given by the diagn(·stics are the same as those
printed on the PC boards. However, these locations have been obscured
by the sockets placed on the boards, so given a memory location, the
thousands digit specifies the board number, the hundreds digit specifies
the row in the memory array, and the ten and ones digits specify the
column number in the memory array.
The first 32K on the card correspond to the top row of chips (with
the Mul tibus connector at the bottom of the card). The second, third,
and fourth sets of 32K correspond, respectively, to the second, third,
and fourth rows of chips on the card.
The RAM chips used on Chryslin's 128K boards are 200ns 16K RAMs
with +5 and -12 voltage levels. If these 16K RAMs are not readily
available and you need temporary spares, you can either disable one sec-
tion of 32K bytes on the board (UNIX, ho~ever, needs at least 128K bytes
of Multibus memory), or· yank the parity chips from one section of 32K
bytes and disable parity interrupts from the boards.
V1.0 draft of July 27, 1982 (c) 1982 Sun Microsystems, Inc.
-SUN-1 SiSTEMHEFERENCE MANUAi- ,~
-Page 73
Ie Since xPointer and yPointer are declared pointers to words (short *),
e the C compiler implicitly left-shifts x and y by one bit before
* adding them to the pointers (as required by the frame buffer):
xPointer += x;
yPointer += Yi
V1.0 draft of July 21, 1982 (c) 1982 Sun Microsystems, Inc.
SUN-l SYSTEM REFEREllCE MANUAL Page 74
·xPointer = OJ
.yPointer++ = .cursorPointer++;
V1.0 draft of July 27, 1982 .~(c) 1982 Sun Microsystemst Inc.
sun:"f SYSTEM REFERENCE-MANUAL- Page 75
Ie framebuf.h
* Copyright 1982 by Sun Microsystems, Inc •
-,
• lowest order bit is ignored, so word addressing works efficiently:
*'*'
I define GXselectX (0«11) /* the address is loaded into
# define GXuele.ctx (0«11) '*
an X register
,
# define GXselecty (1«11)
define GXselecty (1«11)
'* the address is loaded into
'* a Y register *'*'
,.* There are four sets of X and Y register pairs, selected
..*, by the following bits:
I define GXaddressSetO (0«12)
# define GXaddressSetl (1«12)
# define GXaddressSet2 (2«12)
I define GXaddressSet3 (3«12)
# define GXsetO (0«12)
# define GXsetl (1«12)
I define GXset2 (2«12)
I define GXset3 (3«12)
#
#
*' define
define
GXnone
GXothers
(0«14)
(1«14)
# define GXsource (2«14)
I define GXmask (3«14)
# define GXpat (3«14)
V1.0 draft of July 27, 1982 (e) 1982 Sun Microsystems, Inc.
SUN-l SYSTEM REFERENCE MANUAL Page 76
*1
, define GXfunction I(short *) (GXBase + GXset3 + GXothers + (0«1»
I define GXwidth '{short ')(GXBase + GXset3 + GXothers + (1«1»
I define GXcontrol '(short ')(GXBase + GXset3 + GXothers + (2«1»
I define GXintClear '(short I) (GXBase + GXset3 + GXothers + (3«1) )
II
I These may appear in statement contexts to just set the X and Y
I registers of set number zero to the given values:
1/
# define GXsetX(X) I(short 1)(GXBase + GXselectX + «X)«1» =1
I define GXsety(y) I(short 1)(GXBase + GXselectY + «Y)«1» =1
Vl.0 draft of July 21, 1982 (e) 1982 Sun Microsystems, Inc.
SUN-fSYSTEM REFERENCE MANUAL Page 77
This appendix contains the C-language header file which defines the
Sun Monitor ROM Vector Table.
,-
• sunromvec.h
• Copyright 1982 by Sun Microsystems, Inc.
-
• The entries start at location Ox200000 [very first thing in the
- Prom].
-•
• The easiest way to reference elements of this vector is to say:
• *RomVecPtr->xxx
-••
- as in:
• (*RomVecPtr->v~utchar)(c)j
•• Thisis pretty cheap as it only generates movl Ox2000xx,aO jsr aO@
• That's 2 bytes longer, and 4 cycles longer, than a simple subroutine
• call.
•• If you don't want your programs to depend on the absolut~ location of
• the EPROMs in current Sun processor boards, you can reference this
• vector via a pointer in location 4 instead. Just replace "RomVecPtr"
• in the expression with nRomV~cAddr". This indirects thru location 4,
* so it takes another 4 bytes of move instructions (16 cycles) per
-,
• reference ( movl Ox4,aO; movl aO@(xx),aO; jar aO@).
struct sunromvec {
'*
Ie Monitor and hardware revision and identification
char *v_SunRev;
long *v_SerialNum; *' *'
Revision level of moDi tor & hardware *'
'* Serial number of this Sun
long .v_MemorySize; 1* Physical onboard.memory size
1* Monitor-managed single-character input and output *'
unsigned char (*v-&etchar)();'* Get char from cur input source */
int (*v-putchar){); '* Put char to current output sink
int (*v_mayget)(); ,.Maybe get char from current input source./
*'
int ('v_mayput)(); I' Maybe put char to current output sink '/
unsigned char 'v_EchoOn;I' Should getchar echo its input? '/
unsigned char *v_InSource;I' Input source selector '/
unsigned char 'v_OutSink; I ' Output sink selector '/
I' Monitor-managed keyboard input (scanned by monitor refresh routine) 'I
int ('v-Eetkey)(); I ' Get next translated key if one exists 'I
int ('v_lnitGetkey)(); I' Initialize before first getkey 'I
unsigned int *v_translation;I' Keyboard translation selector ' I
unsigned char 'v_Keybld; I' Upldown keyboard ID byte '1
keyboard '*V_CurKeyboard;I' Address of current keyboard defn
struct '1
keymap • ('v_SetTable)();/' Address of current shift->table
mapper '1
keybuftype 'v_Keybuf; I ' Upldown keycode buffer '1
I' Monitor-managed framebuffer output and terminal emulation '1
int ('v_fin1t)(); I ' Framebuffer initialization routine '1
int (Iv_fwritechar)(); I ' Write a character to FB "terminal" '1
long 'v-1BAddr; I' Address of frame buffer we are using '/
char ''v_FontTable;/' Address of font table for FB "terminal" ' I
int ('Y_fwrstr)(); " Write a string to FB -- faster ' I
,. Monitor-managed mouse inpt;.t (scanned by monitor refreLh routine) '1
int 'Y_MouseBuf; I' Placeholder for Mouse input buffer *1
I' Monitor-managed line input and parsing '1
unsigned char 'Y_linbuf; I ' The line input buffer 'I
unsigned char "v_lineptr; I' Current pointer into linbuf '1
int 'Y_linesize; I ' Total length of line in linbuf '1
int ('Y-Eetline)(); I' Fill linbuf from current input source '1
unsigned char ('v-8etone)(); I ' Get next char from linbuf II
unsigned char ('v-peekchar)();/' Peek at next char
without reading it II
int ('v-8ethexbyte)()j/' Get next 2 chars and xlate to binary I,
1*
int (*v-setnum)();
Monitor-managed phrase output to current output sink *'
II Get next numerics and xlate to binary II
int (*v_SetSeg)();
address space *'
I' Set segment map entry X in context C '1
short (*v_GetSeg)(); /1 Get segment map entry X from context C II
II Refresh related information II
int (*v_KeyFrsh)();I' Address that oughta be in level 7 vector *1
int ('AbortEnt)(); /' Monitor entry point from keyboard abort II
int 'Y_RefrCnt; I' Refresh routines's millisecond count */
I' Assorted useful things added after the first bunch 'I
int ('v_bedecode)(); I ' Bus error decoding routine II
Vl.0 draft of July 27, 1982 ,_(6) 1982 Sun Jlicros;ystem~~ Inc.
- -""1---
This appendix contains the C-language definitions for the Sun key-
board.
1* keyboard.h
* Copyright 1982 by Sun Microsystems, Inc.
*'
#ifndef GETKEYPORT
,*• How to get the current key code being presented by the 8048
•• GETKEYPORT reads the raw port; GETKEY deglitches it.
*,
'define GETKEYPORT ( .(unsigned char*) OxEOOOOO )
Idefine GETKEY(key) \
while (GETKEYPORT 1= ( (key) = GETKEYPORT ) );
*'
'define NOTPRESENT OxFF '*'*
Keyboard is not plugged in *'
'*
'define IDLEKEY OX7F Keyboard is idle; i.e. no keys down *'
'*
See comments above re keyboard id's which might follow IDLEKEYs. *'
Idefine PRESSED
'define RELEASED
OxOO
Ox80
Ox80 bit off means key was pressed *1
1* Ox80 bit on means key was released *'
#define ABORTKEY1
#define ABORTKEY2
Ox01
71
'*'*
First key of abort seq - ERASE EOF
2nd key of abort seq - "An *' *'
1* The above is horribly Micro Switch 103SD dependent. *1
V1.0 draft of July 27, 1982 (c) 1982 Sun Microsystems, Inc.
SUN-1 SYSTEM REFERENCE MANUAL Page 80
,*
* Keyboard ID codes ••• transmitted by the various keyboards
after the IDLEKEY code. See top of file for more details.
*
*'
#define KB_UNKNOWN
'define KB_MS_' 03SD32
OxOD
OxOO
I· Unknown keyboard *'
1* Micro Switch 103SD32-2 .1
#define KB_MS_VT100 OxOl 1* Micro Switch VT100 compatible
SD-02~99 *'
,-* These are the states that the keyboard scanner can be in.
*
-
*1
#define
It starts out in AWAITIDLE state.
I-
* Translation options for getkey()
/.
I These bits can appear in the result of TR_NONE getkey()s.
I,
'define STATEOF(key)
'define KEYOF(key)
( key & Ox80 )
( key & OX7F )
'* O=key down, Ox80=key up 1/
/* The key number that moved II
Idefine NOKEY ( -1 ) ,I The argument was 0, and no
key was depressed. II
,I
* These bits can appear in the result of TR_ASCII getkey()s.
II
II NOKEY can appear if the getkey()'s arg was 0 (no waiting) *1
Idefine METABIT 0 /1 Meta key depressed with key II
'define METAMASK Ox000080
II other "bucky" bits can be defined at will. See "BUCKYBITS" below. *1
/1
I This defines the bit positions used within "shiftmask" to
• indicate the "pressed" (1) or "released" (0) state of shift keys.
• Both the bit numbers, and the aggregate masks, are defined.
I
*'
#define CAPSLOCK o '* Caps Lock key *'
Idefine CAPSMASK
Idefine SHIFTLOCK , Ox0001
'*'*
Shift Lock key *'
'define LEFTSHIFT 2 Left-hand shift key.'
'define RIGHTSHIFT 3 ,- Right-hand shift key *1
Idefine SHIFTMASK OxOOOE
#define LEFTCTRL
Idefine RIGHTCTRL
'define CTRLMASK
4
5
Ox0030
'*
'* Left-hand control key *1
Right-hand control key *1
1* unused •••
Idefine UPHASK
Ox0040
Ox0080
*'
I-
- This defines the format of translation tables.
*- A translation table is 128 bytes of ttentries", which are bytes
- (un3igr~ed ch~'s). The LOP 4 bits of each entry are decoded by
• a case statement 1n getkey.c. If the entry 15 less than Ox8D,
• it is sent out as an ASCII character (possibly with bucky bits
• OR-ed in). "Special tt entries are Ox80 or greater, and invoke
- more complicated actions.
*'
typedef unsigned char keymap [128]; '-maps keycodes to actions *'
typedef struct {
key map *Normal, .Shifted, .Caps, .Control, .Up;
int
} keyboard;
Idl eShifts;
'*
All keymaps of a keyboard, plus. .,
Idefine SHI~: TKEYS Ox80 1* thru Ox8F. This key helps to determine the
translation table used. The bit
position of its bit in "shiftmasktt
is added to the entry, eg
SHIFTKEYS+LEFTCTRL. When this entry is
invoked, the bit in "shiftmask" is
toggled. Depending which tables you put
it in, this works well for hold-down
keys or press-on, press~off keys. .,
'define BUCKYBITS Ox90'* thru Ox9F. This key determines the state of
one of the ftbucky" bits above the
returned ASCII character. This is
basically a way to pass mode-key-up/down
information back to the caller with each
"real" key depressed. The concept, and
name "bucky" (derivation unknown) comes
from the MIT/SAIL "TV" system ••• they had
TOP, META, CTRL, and a few other bucky
bits. The bit position of its bit in
"buckybits", minus 7, is added to the
entry; eg bit Ox00000400 is BUCKYBITS+3.
Vl.0 draft of July 21, 1982 (c) 1982 Sun Hicrosystems, Inc.
SUN-1 SYSTEM REFERENCE MANUAL Page 82
,I
data •• ,
Definitions for the individual string numbers:
'define HOME OxOO
I,
Idefine UP Ox01
Idefine DOWN Ox02
Idefine LEFT Ox03
Idefine RIGHT OxOlt
,I string numbers 5 thru F are reserved. Users making custom entries,
take them from F downward to postpone confusion. I,
,I combinations OxCO-OxFF reserved for more argument-taking entries 1/
lendif GETKEYPORT
II
I End of keyboard.h
*'
,........................................................................
•* keytables.c
* Copyright 1982 by Sun Mlcrosystems, Inc.
•* This module contains the translation tables for the up-down encoded
* Sun keyboard.
.,
•* A fuller explanation of the entries is in keyboard.h •
linclude "keyboard.h"
keymap KTMSlc[ 1 ] = {
'* *'
0 HOLE,
,. 8 *1 OOPS,
OOPS,
OOPS,
OOPS,
OOPS,
OOPS,
OOPS,
HOLE,
OOPS,
OOPS,
OOPS,
OOPS,
OOPS,
OOPS,
OOPS,
'* 16 *1 OOPS,
,. 24 ., HOLE,
OOPS,
OOPS,
OOPS,
'\f' ,
c ( , [ , ), HOL E ,
OOPS, HOLE,
OOPS, •+ ' , '- , ,
SHIFTKEYS+CAPSLOCK,
'1', '2',
,. 32 ., '3', '4' , '5', '6', '7 ' , '8' , '9', '0',
'*'* *' '-',
40
48 ., HOLE,
'-I ,
OOPS,
"~I, '\b',
STRING+UP,
OOPS,
HOLE,
HOLE,
'7' ,
\t ' ,
'Sf,
'q',
'9',
'w' ,
.
t
,. 56 '1 'e', 'r', , t' , 'y' , 'u' , 'i' , '0 t , t p' ,
,. 64 ., '{', '1', - , , HOLE, '4' , 5' , '6' , HOLE,
'*
t
72 *1 STRING+LEFT,
STRING+HOME,
STRING+RIGHT,
HOLE, SHIFTKEYS+SHIFTLOCK,
,.120 I,
'*112 .1 NOP,
HOLE,
Ox7F,
HOLE,
'0', NOP, '.',
SHIFTKEYS+LEFTCTRL,
, "
HOLE, HOLE,
SHIFTKEYS+ RIG HTCTRL ,
HOLE,
V1.0 draft of July 27, 1982 (c) 1982 Sun Microsystems, Inc.
SUN-1 SYSTEM REFERENCE MANUAL Page 84
", SHIFTKEYS+RIGHTCTRL,
HOLE, HOLE, HOLE,
};
V1.0 draft of July 27, 1982 ·:(c) 1982 Sun Microsystems, Inc.
:. .- .-.~
+RIGHTSH
'*112 *1 NOP, Ox7F, '0', NOP, '.', HOLE, HOLE, HOLE,
'*120 *1 HOLE, HOLE, SHIFTKEYS+LEFTCTRL,
, " SHIFTKEYS+RIGHTCTRL,
HOLE, HOLE, HOLE,
};
STRING+RIGHT,
HOLE, SHIFTKEYS+SHIFTLOCK,
c(tA'), c('S'), c('D'),
I· 80 fr/ c('F'), e('G'), e(tH'), cC'J'), c('K'), c('L'), OOPS, OOPS,
1* 88 *' e(t\\,),
'\r I , HOLE, OOPS, OOPS, OOPS, HOLE, OOPS,
'* 96 *1 STRING+DOWN,
OOPS, HOLE, HOLE, SHIFTKEYS+LEFTSHIFT,
C('Z'), c('X'), cC'C'),
'*104 1:/ C('V'), e('B'), cC'N'), cC'M'), OOPS, OOPS, OOPS, SHIFTKEY
+RIGHTSH
'*112 *1 NOI, OX7F, OOPS, NOP, OOPS, HOLE, HOLE, HOLE,
'*120 f:1 HOLE, HOLE, SHIFTKEYS+LEFTCT~,
'\0' , SHIFTKEYS+RIGHTCTRL,
HOLE, HOLE, HOLE,
I;
V1.0 draft of July 27, 1982 (c) 1982 Sun Vdcrosystems, Inc.
SUN-1 SYSTEM REFERENCE MANUAL Page 86
'·112.,., NOP,
HOLE,
Nap,
HOLE,
NOP, Nap, Nap,
SHIFTKEYS+LEFTCTRL,
HOLE, HOLE,
+RIGHTSH
HOLE,
'·120
Nap, SHIFTKEYS+RIGHTCTRL,
HOLE, HOLE, HOLE,
};
,.....................................................................,
,. Index table for the whole shebang
, ••••••••••••••••••••••••••••••••••••••••••••••••••••••• •••••••••••• , ~*
*'
keyboard *KeyTables[] = { KIMS };
,. Keyboard String Table
., The first byte of each string is its length, the rest is data •
char
char
StrHome[] = "\003\033[H";
StrUp[] = "\003\033[A"; ,.,.,. home
up·, *'
char
char
StrDown[] = "\OO3\033[B";
StrLeft[] = "\OO3\033[D"j ,.,. down .,
lef .,
char
char
StrRight[] = "\OO3\033[C"j
StrEmpty[] = ""; ,. Right .,
unused string .,
char .KeyStringTab[16] = { I. foo .1
StrHome, StrUp, StrDown, StrLeft,
StrRlght, StrEmpty, StrEmpty, StrErnpty,
StrEmpty, StrEmpty, StrEmpty, StrEmpty,
StrEmpty, StrEmpty, StrEmpty, StrEmpty,
}
9 September 1982
ERRATA for SUN-1 System Reference Manual, Version 1.0 Draft of 27 July, 1982
Page 14, Card cage configuration. The diagram and description of the
7-slot card cage is not correct. It does correctly descirbe the 6-slot
card cage, if slot 7 is deleted and the graphics card is placed in slot
6. A new figure will be included in the next revision.
Page 16, last paragraph. u16-pin" should read 50-pin".
Page 18, last paragraph. The instructions are incorrect .. The knob
for unlocking the heads on the Fujitsu is located underneath the
unit. It is accessed through a hole near the center of the bottom
of the enclosure.