August 22, 2025

Sun 3 bootrom souce - fire up the 3/80

The help menu for the Sun 3/80 shows these three additional commands that we don't have in the 3/160 code.
^a                                       | Display Phys and Virtual Addresses
^t [addr]                                | Translate virtual addr to physical
^r                                       | Read On Board Device Registers

Find it and power it up

My 3/80 is stored in a big static bag in a big plastic organizer tub. I dig it out, connect the power supply and a serial cable and flip the switch. We get a lot more output than from the 3/160 prom:
Sun-3/80 Boot PROM Selftest (Rev. 3.0.2)
 (Press  to abort tests or  for the Loop Menu)
System Enable Register Read Test {pass 0x00000001}  17:19:11
PROM Checksum Test {pass 0x00000001}  17:19:11

TOD [Clock/Calender] Test {pass 0x00000001}  17:19:12
I/O Mapper RAM Write/Write/Read Test {pass 0x00000001}  17:19:13
I/O Mapper RAM Address Test {pass 0x00000001}  17:19:13
I/O Mapper RAM 3-Pattern Test {pass 0x00000001}  17:19:14

Memory Address Test {pass 0x00000001}  17:19:15 0
Memory Read Byte Alignment Test {pass 0x00000001}  17:19:30
Memory Write Byte Alignment Test {pass 0x00000001}  17:19:30
Bus Error Register Test {pass 0x00000001}  17:19:31
Level 1 Interrupt Test {pass 0x00000001}  17:19:31
Level 2 Interrupt Test {pass 0x00000001}  17:19:31
Level 3 Interrupt Test {pass 0x00000001}  17:19:32
Parity Memory Forced Error Test {pass 0x00000001}  17:19:32
Configuration Memory Check  {pass 0x00000001}  17:19:33
LANCE Controller Check  {pass 0x00000001}  17:19:33
ESP SCSI Controller Check  {pass 0x00000001}  17:19:34
Floppy Controller Check  {pass 0x00000001}  17:19:34
Printer Controller Check  {pass 0x00000001}  17:19:34


END OF SELFTEST # 0x00000001 (SELFTEST PASSED).
#PASSED = 0x00000001, #FAILED = 0x00000000



Type a Character within 10 seconds to enter the Menu Tests...(e for echo mode)
No Keyboard Found: Using RS232 Port A as input!
Selftest Completed.

Sun Workstation, Model Sun-3/80 Series.
ROM Rev 3.0.2, 16MB memory installed
ID PROM invalid.
Auto-boot in progress...
ERROR: missing or invalid ID prom
ERROR: missing or invalid ID prom
le: No Carrier
ERROR: missing or invalid ID prom
le: No Carrier
ERROR: missing or invalid ID prom
Requesting Internet address for 0:0:0:0:0:0
le: No Carrier
I send a break character to get to the prompt, then:
*** break sent ***

Abort at 0xFEFF23E6.
>
>h
Boot PROM Monitor Commands

----------------------------------------------------------------------------
a [digit]                                | Open CPU Addr Reg (0-7)
b [dev([cntrl],[unit],[part])]           | Boot a file
c [addr]                                 | Continue program at Addr
d [digit]                                | Open CPU Data Reg (0-7)
e [addr]                                 | Open Addr as 16 bit word
f [beg_addr] [end_addr] [patt] [bwl]     | Fill Memory
g [addr]                                 | Go to Address
h                                        | Display this Help Menu
k [number]                               | Reset (0)CPU, (1)PMMU, (2)System
l [addr]                                 | Open Addr as 32 bit long
m [A] [B] [addr]                         | Open TIA or TIB Table
----------------------------------------------------------------------------

Hit Any Key to Continue through Help Menu
----------------------------------------------------------------------------

o [addr]                                 | Open Addr as 8 bit byte
p [addr]                                 | Open Page Map
q [addr]                                 | Open EEPROM
r [reg]                                  | Open CPU Regs (i.e. PC)
s [digit]                                | Set/Query Function Code (0-7)
t [y/n/c]                                | Trace: Yes/No/Continue
u [arg]                                  | Select Console Device
v [beg_addr] [end_addr] [bwl]            | Display Memory
w [addr] [string]                        | Vector
x                                        | Extended Diag Tests
z [addr]                                 | Set Breakpoint
^a                                       | Display Phys and Virtual Addresses
^t [addr]                                | Translate virtual addr to physical
^r                                       | Read On Board Device Registers
----------------------------------------------------------------------------

>^r
TC: (0x80D07660) CRP: (0x7FFF0003) (0xFFA000)
SYS ENA: (0x8000) INT: (0x81) BERR: (0x20) VBR: (0xFEF72000)
MEM ERR CNTRL: (0x50505050) MEM ERR ADDR: (0xFFE818)


>^a
Devcie:         Virtual Address: Physical Address:
Keybrd Mouse    0xFEF00000:      0x62000000:
Serial Port     0xFEF02000:      0x62002000:
EEPROM          0xFEF04000:      0x64000000:
TOD             0xFEF06000:      0x640007F8:
Mem Err Reg     0xFEF09000:      0x61001000:
Int Reg         0xFEF0B400:      0x61001400:
le Ethernet     0xFEF0E000:      0x65002000:
Sys ENA Reg     0xFEF16000:      0x61000000:
Bus ERR Reg     0xFEF18400:      0x61000400:
IDPROM          0xFEF047D8:      0x640007D8:
VIDEOMEM_BASE   0xFEF20000:      0x50400000:
P4 Video Reg    0xFEF1E000:      0x50300000:
P4 DAC          0xFEF0C000:      0x50200000:
P4 Overlay      0xFEF20000:      0x50400000:
P4 ENA Plane    0xFEF40000:      0x50600000:
IOMAPPER        0xFEF66000:      0x60000000:
FDC             0xFEF7A000:      0x6E000000:
FDC_CNTRL_REG   0xFEF7A400:      0x6E000400:
FDC_VEC_REG     0xFEF7A800:      0x6E000800:
PRINTER_PORT    0xFEF8003C:      0x6F00003C:
Compare the above list to these addresses I have located in the 3/160 source code:
EEPROM -- 0x6400_0000  (0xfef0_4000 virtual)
TOD    -- 0x6400_07f8  (0xfef0_6000 virtual)
IDPROM -- 0x6100_0C00  (0xfef1_cc00 virtual)
Also note that the serial port virtual addresses are the same for the 3/160 and the 3/80. This means that standalone demo code I have written should run unchanged.
Feedback? Questions? Drop me a line!

Tom's Computer Info / tom@mmto.org