Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ monitor(8S) — SunOS 4.0.3

Media Vault

Software Library

Restoration Projects

Artifacts Sought

MONITOR(8S)  —  MAINTENANCE COMMANDS

NAME

monitor − system ROM monitor

SYNOPSIS

L1−A BREAK

DESCRIPTION

The CPU board of the Sun workstation contains an EPROM (or set of EPROMs), called the monitor, that controls the system during startup.  The monitor tests the system before attempting to boot the operating system. If you interrupt the boot procedure by holding down L1 while typing a or A on the workstation keyboard (or BREAK if the console is a dumb terminal) the monitor issues the prompt:

>

and accepts commands interactively. 

USAGE

Commands

+|− Increment or decrement the current address and display the contents of the new location. 

^C source destination n
(caret-C) Copy, byte-by-byte a block of length n from the source address to the destination address. 

^I program (caret-I) Display the compilation date and location of program.

^T virtual_address
(caret-T) Display the physical address to which virtual_address is mapped. 

a [n] [action]...(Sun-2 and Sun-3 systems only)
Open A−register (cpu address register) n, and perform indicated actions.  The number n can be any value from 0 to 7, inclusive.  The default value is 0.  A hexadecimal action argument assigns the value you supply to the register n. A non-hex action terminates command input. 

b [ !  ] [ device [ (c,u,p) ] ] [ pathname ] [ arguments_list ]

b[?] Reset appropriate parts of the system and bootstrap a program. A ‘!’ (preceding the device argument) prevents the system reset from occurring.  Programs can be loaded from various devices (such as a disk, tape or Ethernet).  ‘b’ with no arguments will cause a default boot, either from a disk, or from an Ethernet controller.  ‘b?’ displays all boot devices and their device arguments, where device is one of:

ie Intel Ethernet

le Lance Ethernet (Sun-2, Sun-3, Sun-4 systems only)

sd SCSI disk

st SCSI 1/4" tape

mt Tape Master 9-track 1/2" tape (Sun-2, Sun-3, Sun-4 systems only)

xd Xylogics 7053 disk (Sun-2, Sun-3, Sun-4 systems only)

xt Xylogics 1/2" tape (Sun-2, Sun-3, Sun-4 systems only)

xy Xylogics 440/450 disk (Sun-2, Sun-3, Sun-4 systems only)

fd Diskette (Sun386i system only)

c A controller number (0 if only one controller),

u A unit number (0 if only one driver), and

p A partition. 

pathname A pathname for a program such as /stand/diag.  /vmunix is the default. 

arguments_list
A list of up to seven arguments to pass to the program being booted.

c [virtual_address]
Resume execution of a program.  When given, virtual_address is the address at which execution will resume.  The default is the current PC (EIP on Sun386i systems).  Registers are restored to the values shown by the a, d, and r commands (for Sun-2 and Sun-3 systems), or by the d and r commands (for Sun-4 systems), or by the d command (for Sun386i systems). 

d [window_number](Sun-4 systems only)
Display (dump) the state of the processor. The processor state is observable only after:

• An unexpected trap was encountered. 

• A user program dropped into the monitor (by calling abortent).

• The user manually entered the monitor by typing L1−A or BREAK. 

The display consists of the following:

• The special registers: PSR, PC, nPC, TBR, WIM and Y

• Eight global registers, and

• 24 window registers (8 in, 8 local, and 8 out), corresponding to one of the 7 available windows.  If a Floating-Point Unit is on board, its status register along with its 32 floating-point registers are also shown.

window_number
Display the indicated window_number, which can be any value between 0 and 6, inclusive.  If no window is specified and the PSR’s current window pointer contains a valid window number, registers from the window that was active just prior to entry into the monitor are displayed.  Otherwise, registers from window 0 are displayed. 

d(Sun386i systems only)
Display (dump) the state of the processor. This display consists of the registers, listed below:

Processor Registers: EAX, ECX, EDX, ESI, EDI, ESP, EBP, EFLAGS, EIP

Segment Registers: ES, CS, SS, DS, FS, GS

Memory Management Registers:
GDTR, LDTR, IDTR, TR

Control Registers: CR0, CR2, CR3

Debug Registers: DR0, DR1 , DR2 , DR3, DR6, DR7

Test Registers: TR6, TR7

The processor’s state is observable only after an unexpected trap, a user program has “dropped” into the monitor (by calling monitor function abortentor) or the user has manually “broken ” into the monitor (by typing L1−A on the Workstation console, or BREAK on the dumb terminal’s keyboard. 

d [n][action]...(Sun-2 and Sun-3 systems only)
Open D−register (cpu data register) n, and perform indicated actions. The number n can be any value from 0 to 7, inclusive.  The default is 0.  See the a command for a description of action.

e [virtual_address][action] ...
Open the 16 bit word at virtual_address (default zero).  On Sun-2, Sun-3, and Sun-4 systems, the address is interpreted in the address space defined by the s command.  See the a command for a description of action.

f virtual_address1 virtual_address2 pattern [size](Sun-3 and Sun-4 systems only)
Fill the bytes, words or long words from virtual_address1 (lower) to virtual_address2 (higher) with the constant, pattern. The size argument can take one of the following values

b byte format (the default)

w word format

l long word format

For example, the following command fills the address block from 0x1000 to 0x2000 with the word pattern, 0xABCD:

f 1000 2000 ABCD W

g [vector] [argument]

g [virtual_address] [argument]
Goto (jump to) a predetermined or default routine (first form), or to a user-specified routine (second form).  The value of argument is passed to the routine.  If the vector or virtual_address argument is omitted, the value in the PC is used as the address to jump to. 

To set up a predetermined routine to jump to, a user program must, prior to executing the monitor’s g command, set the variable ∗romp->v_vector_cmd to be equal to the virtual address of the desired routine.  Predetermined routines need not necessarily return control to the monitor. 

The default routine, defined by the monitor, prints the user-supplied vector according to the format supplied in argument. This format can be one of:

%x hexadecimal

%d decimal

g0 (Sun-2, Sun-3, and Sun-4 only)
When the monitor is running as a result of the system being interrupted, force a panic and produce a crash dump.

g4
When the monitor is running as a result of the system being interrupted, force a kernel stack trace.

h(Sun-3 and Sun-4 and Sun386i systems)
Display the help menu for monitor commands and their descriptions. To return to the monitor’s basic command level, press ESCAPE or q before pressing RETURN. 

i [cache_data_offset] [action]...(Sun-3/200 series and Sun-4 systems only)
Modify cache data RAM command.  Display and/or modify one or more of the
Modify cache data RAM command.  Display and/or modify one or more of the cache data addresses.  See the a command for a description of action.

j [cache_tag_offset] [action]...(Sun-3/200 series and Sun-4 systems only)
Modify cache tag RAM command.  Display and/or modify the contents of one or more of the cache tag addresses.  See the a command for a description of action.

k [reset_level]
Reset the system.  If reset_level is:

0 CPU reset only (Sun-2 and Sun-3 systems).  Reset VMEbus, interrupt registers, video monitor (Sun-4 systems).  This is the default.  Reset video (Sun386i systems). 

1 Software reset. 

2 Power-on reset.  Resets and clears the memory.  Runs the EPROM-based diagnostic self test, which can take several minutes, depending upon how much memory is being tested. 

kb
Display the system banner.

l [virtual_address][action]...
Open the long word (32 bit) at memory address virtual_address (default zero).  On Sun-2, Sun-3 and Sun-4 systems, the address is interpreted in the address space defined by the s command (below).  See the a command for a description of action.

m [virtual_address][action]...
Open the segment map entry that maps virtual_address (default zero).  On Sun-2, Sun-3 and Sun-4 systems, the address is interpreted in the address space defined by the s command.  Not supported on Sun386i.  See the a command for a description of action.

nd(Sun386i systems only)

ne

ni
Disable, enable, or invalidate the cache, respectively

o [virtual_address][action]...
Open the byte location specified  by
virtual_address (default zero).  On Sun-2, Sun-3 and Sun-4 systems, the address is interpreted in the address space defined by the s command.  See the a command for a description of action.

p [virtual_address][action]...
Open the page map entry that maps virtual_address (default zero) in the address space defined by the s command.  See the a command for a description of action.

p [port_address] [[nonhex_char [hex_value] | hex_value] ...](Sun386i systems only)
Display or modify the contents of one or more port I/O addresses in byte mode.  Each port address is treated as a 8-bit unit.  The optional port_address, argument, which is a 16-bit quantity, specifies the initial port I/O address. See the e command for argument descriptions. 

q [eeprom_offset][action]...(Sun-3 and Sun-4 systems only)
Open the EEPROM eeprom_offset (default zero) in the EEPROM address space.  All addresses are referenced from the beginning or base of the EEPROM in physical address space, and a limit check is performed to insure that no address beyond the EEPROM physical space is accessed.  On Sun386i systems, open the NVRAM nvram_offset (default zero).  This command is used to display or modify configuration parameters, such as: the amount of memory to test during self test, whether to display a standard or custom banner, if a serial port (A or B) is to be the system console, etc.  See the a command for a description of action.

r [reg_name] [[nonhex_char [hex_value] | hex_value] ...]  (Sun386i systems only)
Display or modify one or more of the processor registers. If reg_name is specified (2 or 3 characters from the above list), that register is displayed first.  The default is EAX.  See note on register availability under the command d (for Sun386i systems).  See the e command for argument descriptions. 

s [step_count]  (Sun386i systems only)
Single step the execution of the interrupted program.  The step_count argument specifies the number of single steps to execute before displaying the monitor prompt.  The default is 1. 

r [register_number][action]...(Sun-2 and Sun-3 systems only)
Display and/or modify the register indicated. register_number can be one of:

CA 68020 Cache Address Register

CC 68020 Cache Control Register

CX 68020 System and User Context

DF Destination Function code

IS 68020 Interrupt Stack Pointer

MS 68020 Master Stack Pointer

PC Program Counter

SC 68010 System Context

SF Source Function code

SR Status Register

SS 68010 Supervisor Stack Pointer

UC 68010 User Context

US User Stack Pointer

VB Vector Base

Alterations to these registers (except SC and UC) do not take effect until the next c command is executed.  See the a command for a description of action.

r [register_number](Sun-4 systems only)

r [register_type]

r [w window_number]
Display and/or modify one or more of the IU or FPU registers. 

A hexadecimal register_number can be one of:

0x00—0x0f window(0,i0)—window(0,i7), window(0,i0)—window(0,i7)

0x16—0x1f window(1,i0)—window(1,i7), window(1,i0)—window(1,i7)

0x20—0x2f window(2,i0)—window(2,i7), window(2,i0)—window(2,i7)

0x30—0x3f window(3,i0)—window(3,i7), window(3,i0)—window(3,i7)

0x40—0x4f window(4,i0)—window(4,i7), window(4,i0)—window(4,i7)

0x50—0x5f window(5,i0)—window(5,i7), window(5,i0)—window(5,i7)

0x60—0x6f window(6,i0)—window(6,i7), window(6,i0)—window(6,i7)

0x70—0x77 g0, g1, g2, g3, g4, g5, g6, g7

0x78—0x7d PSR, PC, nPC, WIM, TBR, Y

0x7e—0x9e FSR, f0—f31

Register numbers can only be displayed after an unexpected trap, a user program has entered the monitor using the abortent function, or the user has entered the monitor by manually typing L1−A or BREAK. 

If a register_type is given, the first register of the indicated type is displayed.  register_type can be one of:

f floating-point

g global

s special

If w and a window_number (0—6) are given, the first in-register within the indicated window is displayed.  If window_number is omitted, the window that was active just prior to entering the monitor is used.  If the PSR’s current window pointer is invalid, window 0 is used. 

s [code](Sun-2 and Sun-3 systems only)
Set or query the address space to be used by subsequent memory access commands. code is one of:

0 undefined

1 user data space

2 user program space

3 user control space

4 undefined

5 supervisor data space

6 supervisor program space

7 supervisor control space

If code is omitted, s displays the current address space. 

s [asi](Sun-4 systems only)
Set or display the Address Space Identifier.  With no argument, s displays the current Address Space Identifier.  The asi value can be one of:

0x2 control space

0x3 segment table

0x4 Page table

0x8 user instruction

0x9 supervisor instruction

0xa user data

0xb supervisor data

0xc flush segment

0xd flush page

0xe flush context

0xf cache data

t [program](Sun-3 systems only)
Trace the indicated standalone program. Works only with programs that do not affect interrupt vectors.

u [echo]

u [ port ] [ options ] [ baud_rate ]

u[ u ] [ virtual_address ]
With no arguments, display the current I/O device characteristics including: current input device, current output device, baud rates for serial ports A and B, an input-to-output echo indicator, and virtual addresses of mapped UART devices.  With arguments, set or configure the current I/O device.  With the u argument (uu...), set the I/O device to be the virtual_address of a UART device currently mapped. 

echo Can be either e to enable input to be echoed to the output device, or ne, to indicate that input is not echoed. 

port Assign the indicated port to be the current I/O device.  port can be one of:

a serial port A

b serial port B (except on Sun386i systems)

k the workstation keyboard

s the workstation screen

baud_rate Any legal baud rate. 

options can be any combination of:

i input

o output

u UART

e echo input to output

ne do not echo input

r reset indicated serial port (a and b ports only)

If either a or b is supplied, and no options are given, the serial port is assigned for both input and output.  If k is supplied with no options, it is assigned for input only.  If s is supplied with no options, it is assigned for output only. 

v virtual_address1 virtual_address2 [size](Sun-3 and Sun-4 systems only)
Display the contents of virtual_address1 (lower) virtual_address2 (higher) in the format specified by size:

b byte format (the default)

w word format

l long word format

Enter return to pause for viewing; enter another return character to resume the display.  To terminate the display at any time, press the space bar. 

For example, the following command displays the contents of virtual address space from address 0x1000 to 0x2000 in word format:

v 1000 2000 W

w [virtual_address][argument](Sun-3 and Sun-4 systems only)
Set the execution vector to a predetermined or default routine. Pass virtual_address and argument to that routine. 

To set up a predetermined routine to jump to, a user program must, prior to executing the monitor’s w command, set the variable ∗romp->v_vector_cmd to be equal to the virtual address of the desired routine.  Predetermined routines need not necessarily return control to the monitor. 

The default routine, defined by the monitor, prints the user-supplied vector according to the format supplied in argument. This format can be one of:

%x hexadecimal

%d decimal

x(Sun-3 and Sun-4 systems only)
Display a menu of extended tests. These diagnostics permit additional testing of such things as the I/O port connectors, video memory, workstation memory and keyboard, and boot device paths.

yc context_number(Sun-4 systems only)

yp|s context_number virtual_address
Flush the indicated context, context page, or context segment.

c flush context context_number

p flushe the page beginning at virtual_address within context context_number

s flush the segment beginning at virtual_address within context context_number

z [number] [breakpoint_virtual_address [type] [len]]  (Sun386i systems only)
Set or reset breakpoints for debugging. With no arguments, this command displays the existing breakpoints. The number argument is a values from 0 to 3, corresponding to the processor debug registers, DR0 to DR3, respectively.  Up to 4 distinct breakpoints can be specified.  If number is not specified then the monitor chooses a breakpoint number.  The breakpoint_virtual_address argument specifies the breakpoint address.  The type argument can be one of:

x Instruction Execution breakpoint (the default)

m for Data Write only breakpoint

r Data Reads and Writes only breakpoint. 

The len argument can be one of: ‘b’, ‘w’, or ‘l’, corresponding to the breakpoint field length of byte, word, or long-word, respectively.  The default is ‘b’.  Since the breakpoints are set in the on-chip registers, an instruction breakpoint can be placed in ROM code or in code shared by several tasks.  If the number argument is specified but not breakpoint_virtual_address, the corresponding breakpoint is reset.

z [virtual_address](Sun-3 systems only)
Set a breakpoint at virtual_address in the address space selected by the s command. 

FILES

/vmunix

Sun Release 4.0  —  Last change: 25 March 1989

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