===== ARC Firmware =====
ARC firmware is the menu-driven firmware that Alpha systems use to boot Windows NT. It implements the [[wp>Advanced_RISC_Computing|Advanced RISC Computing]] (ARC) specification, which standardizes features of RISC computers including their firmware. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/debian-alpha-mbox/1998-December.mbox#L6768|"Re: Booting problem"]], Nikita Schmidt, debian-alpha, 22 Dec 1998)] [(>{{wiki:hardware:systems:alphaserver_1000:alphaserver_1000_service_guide.pdf?linkonly|AlphaServer 1000 Service Guide}})]
There are three families of ARC firmware on Alpha:
* **ARC** (Windows NT ARC firmware, also "ARC Multiboot" or "ARC console"): Digital's original firmware, used on the Jensen, Multia, AlphaStation 200 and 250, AlphaServer 1000 and 2100, and the Digital Semiconductor evaluation boards and motherboards up to the [[hardware:motherboards:pc164|AlphaPC 164]].
* **AlphaBIOS**: the successor to ARC, with a different user interface. Digital introduced it with the Alpha XLT series. [(>AlphaBIOS-HOWTO, Linux-Alpha archive, ftp.digital.com, 19 Dec 1996)]
* **ARCSBIOS**: firmware written by Deskstation for its Ruffian boards (see [[#arcsbios|ARCSBIOS]]).
"ARC BIOS" and "ARCBIOS" are used informally for both ARC and AlphaBIOS. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1998-August.mbox#L53599|"Re: SCSI-2 and AS200/233"]], Alan Young, axp-list, 23 Aug 1998)] "ARCS" in Alpha/Linux usage refers to Deskstation's firmware, not to [[wp>Advanced_RISC_Computing#ARCS|SGI's ARCS]].
Systems intended for OpenVMS and Tru64 UNIX use the [[software:firmware:srm|SRM console]] instead. Some systems carry both, and can switch between them (see [[#switching_to_srm|Switching to SRM]]).
Where SRM is available, it is preferred for Linux over MILO, whose PALcode is less complete than SRM's (see [[software:boot_loaders:milo#palcode|MILO: PALcode]] and [[software:firmware#choosing_firmware_for_linux|Choosing firmware for Linux]]). [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1999-September.mbox#L12590|"Re: SRM vs. AlphaBIOS"]], Phillip Ezolt, axp-list, 7 Sep 1999)] [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/2000-July.mbox#L75|"Re: MILO upgrades don't work"]], Jeff Sturm, axp-list, 1 Jul 2000)] Linux 6.10 removed support for processors older than the EV56 (21164A) and for the Alpha XL, so a system without SRM can run a current kernel only if it has an EV56 or later processor. [(>[[https://git.kernel.org/torvalds/c/430ad3f0ddd7|"alpha: remove LCA and APECS based machines"]], Linux 6.10)] [(>[[https://git.kernel.org/torvalds/c/a4184174be36|"alpha: drop pre-EV56 support"]], Linux 6.10)]
==== Switching to SRM ====
* **ARC:** Supplementary menu, "Set up the system...", then "Switch to OpenVMS or OSF console" (on later versions "Switch to OpenVMS or Digital UNIX console"), then "Switch to OSF", and power-cycle. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1996-March.mbox#L4787|"Jensen-HOWTO: First pass"]], Jim Paradis, axp-list, 15 Mar 1996)] [(>{{wiki:software:firmware:alphaserver_2000_2100_2100a_firmware_reference_guide.pdf?linkonly|AlphaServer 2000/2100/2100A Firmware Reference Guide}})] On the evaluation boards, this is under "Machine specific setup...". [(>{{wiki:hardware:motherboards:common:srm_console_user_guide.pdf?linkonly|Alpha SRM Console for Alpha Microprocessor Motherboards User's Guide}}, p. 2-21)]
* **AlphaBIOS:** in Advanced CMOS Setup, set "Console Selection" to "Digital UNIX Console (SRM)" or "OpenVMS Console (SRM)", then save with F10. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1999-August.mbox#L38797|"RE: Alpha taxonomy"]], John Jemiolo, axp-list, 26 Aug 1999)] [(>{{wiki:software:firmware:alphaserver_800_users_guide.pdf?linkonly|AlphaServer 800 User's Guide}}, p. 7-46)]
* **Single-image boards:** the AlphaPC 164, 164LX, and 164SX hold only one firmware in flash, so switching requires flashing the other firmware. [(>{{wiki:hardware:motherboards:common:srm_console_user_guide.pdf?linkonly|Alpha SRM Console for Alpha Microprocessor Motherboards User's Guide}}, p. 2-20)] On the AlphaPC 164LX and 164SX, this is done with "Upgrade AlphaBIOS" and a floppy containing the SRM image (''LX164SRM.ROM'' or ''SX164SRM.ROM''). [(>{{wiki:hardware:motherboards:pc164lx:alphapc_v5.7_firmware_release_notes.pdf?linkonly|AlphaPC 164SX/164LX/164 Firmware Update Procedures (V5.7)}}, p. 11)]
Switching from SRM back to ARC or AlphaBIOS is described in [[software:firmware:srm#switching_to_arc_or_alphabios|SRM Console: Switching to ARC or AlphaBIOS]].
=== By system ===
^ System ^ Firmware ^ Switching to SRM ^
| [[hardware:motherboards:pc64|AlphaPC 64]] (Cabriolet) | ARC and SRM in flash | ARC "Machine Specific Setup", select Digital UNIX, and power-cycle. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1999-November.mbox#L28390|"Re: FW: True64 on Cabriolet"]], Bob Palladino, axp-list, 12 Nov 1999)] |
| [[hardware:systems:avanti|AlphaStation 200]] (Avanti) | Early units have ARC and SRM; later units only one | Load SRM from the firmware CD with ''update srm'' at the update utility's prompt, then power-cycle. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/comp-unix-osf-misc-mbox/googlegroups-1996-February.mbox#L70|"Re: how to load arc firmware."]], Kenny House, comp.unix.osf.misc, 20 Feb 1996)] |
| [[hardware:systems:miata|Personal Workstation]] (Miata) | AlphaBIOS; flash holds SRM as well | AlphaBIOS "Console Selection"; SRM may first have to be installed from the firmware CD. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/debian-alpha-mbox/2005-June.mbox#L4706|"Re: PWS AlphaBIOS to SRM"]], Jay Estabrook, debian-alpha, 9 Jun 2005)] |
| [[hardware:systems:noritake|AlphaStation 600A]] | AlphaBIOS and SRM | Select Digital UNIX or OpenVMS from the AlphaBIOS Boot menu. [(>{{wiki:hardware:systems:alphastation_600a:alphastation_600a_user_information.pdf?linkonly|AlphaStation 600A User Information}}, p. 1-14)] |
| [[hardware:systems:noritake|AlphaServer 800]] | SRM, which starts AlphaBIOS | AlphaBIOS "Console Selection", or press the Halt button in. [(>{{wiki:software:firmware:alphaserver_800_users_guide.pdf?linkonly|AlphaServer 800 User's Guide}}, p. 6-1)] |
| [[hardware:motherboards:pc264dp|AlphaPC 264DP]] | SRM, which starts AlphaBIOS | AlphaBIOS "Console Selection", set to "Tru64 UNIX (SRM Console)", then reset. [(>{{wiki:hardware:motherboards:pc264dp:pc264dp_user_manual.pdf?linkonly|AlphaPC 264DP User's Manual}}, p. 6-2)] |
| [[hardware:motherboards:pc164lx|AlphaPC 164LX]] | One image: AlphaBIOS or SRM | Flash ''lx164srm.rom'' with "Upgrade AlphaBIOS". [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/2004-October.mbox#L888|"SRM on 164LX"]], Steven Moix, axp-list, 4 Oct 2004)] [(>{{wiki:hardware:motherboards:pc164lx:alphapc_v5.7_firmware_release_notes.pdf?linkonly|AlphaPC 164SX/164LX/164 Firmware Update Procedures (V5.7)}}, p. 11)] |
| [[hardware:motherboards:pc164sx|AlphaPC 164SX]] | One image: AlphaBIOS or SRM | Flash ''sx164srm.rom'' with "Upgrade AlphaBIOS"; an older interim SRM may have to be flashed before the current one. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/tru64-unix-managers-mbox/2000-January.mbox#L17373|"SUMMARY: Linux --> Tru64 on AlphaPC 164SX"]], Gernot Salzer, tru64-unix-managers, 13 Jan 2000)] |
| [[hardware:motherboards:up1000|UP1000]] | AlphaBIOS; SRM from API | Flash API's SRM images from floppy with the fail-safe diagnostics, selected by the Recover Firmware jumper (J43), with J42 also on 1-2 as in the manual's Reload ADE setting. API recommended reinstalling Linux afterwards. [(>''install.txt'', UP1000 SRM A5.6 beta, [[https://github.com/alphalinux/firmware/tree/master/api/UP1000|alphalinux/firmware]])] |
| [[hardware:motherboards:pc164rx|AlphaPC 164RX]] | AlphaBIOS only | Not possible. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/2000-August.mbox#L9150|"Re: switching from ARC back to SRM"]], Jay Estabrook, axp-list, 16 Aug 2000)] |
| [[hardware:motherboards:pc164ux|AlphaPC 164UX, 164BX]] (Ruffian) | ARCSBIOS only | Not possible. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1999-September.mbox#L29483|"Re: AlphaBios vs SRM"]], Rich Payne, axp-list, 15 Sep 1999)] |
| [[hardware:systems:xl|Alpha XL]], [[hardware:systems:alcor|Alpha XLT]] | ARC or AlphaBIOS only | Not possible. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/2004-September.mbox#L5923|"Alpha Core ISO Images"]], Jay Estabrook, axp-list, 29 Sep 2004)] |
The SRM image for the AlphaPC 164LX, ''lx164srm.rom'', is kept in the [[https://github.com/alphalinux/firmware|alphalinux/firmware]] repository with the other firmware listed in [[software:firmware#obtaining_and_updating_firmware|Firmware: Obtaining and updating firmware]]. After the first SRM start, the settings for a serial console and for booting Linux unattended are described in [[documentation:srm#serial_console|Using the SRM Console: Serial console]] and [[documentation:installation#booting_the_installed_system|Installation: Booting the installed system]].
The Alpha XL series has only ARC or AlphaBIOS, and no SRM. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1998-January.mbox#L25578|"Re: Does DEC have a clue?"]], Jay Estabrook, axp-list, 20 Jan 1998)] Sources disagree about the Digital Server 3300: one describes it as having no SRM, [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/2000-May.mbox#L11764|"Re: DEC ALPHA 3305"]], William H. Magill, axp-list, 21 May 2000)] while another says that the Digital Server 3300, 5300, and 7300 can be switched to SRM but will not boot Digital UNIX or OpenVMS from it. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1999-November.mbox#L13782|"RE: Compaq to offer Tru64 for $99"]], John Jemiolo, axp-list, 5 Nov 1999)] See [[#conflicting_information|Conflicting information]].
==== Windows NT and Linux ====
The firmware reads the operating system loader from the disk and runs it, and provides I/O services to the loader through ARC callback routines. The loader then loads the Windows NT HAL and PALcode, and the kernel switches to that PALcode. [(>{{wiki:documentation:references:alpha_axp_system_reference_manual_v6.pdf?linkonly|Alpha AXP System Reference Manual, Version 6 (1994)}}, Part II-C, section 1.1)] ARC also stays in memory after Windows NT boots so that NT can make callbacks. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1996-December.mbox#L21083|"Re: Confusion re SRM, ARC, MILO, etc."]], David A Rusling, axp-list, 14 Dec 1996)]
ARC and AlphaBIOS provide PALcode for Windows NT, which Linux cannot use, so they cannot load a Linux kernel directly. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1998-January.mbox#L26796|"Re: Does DEC have a clue?"]], Jay Estabrook, axp-list, 21 Jan 1998)] [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/cooker-axp-mbox/2000-November.mbox#L201|"Re: AlphaBIOS boot problem - anything possible to do to trace ?"]], Rich Payne, cooker-axp, 11 Nov 2000)] Linux on these systems is booted through [[software:boot_loaders:milo|MILO]], which supplies its own PALcode and reclaims all of the memory used by the firmware. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1996-December.mbox#L21083|"Re: Confusion re SRM, ARC, MILO, etc."]], David A Rusling, axp-list, 14 Dec 1996)] The [[hardware:motherboards:up1000|UP1000]] uses APB instead of MILO. [(>{{wiki:hardware:motherboards:up1000:up1000_user_manual.pdf?linkonly|UP1000 User Manual}}, p. 4-14)] The BSDs, which need the OSF/1 PALcode, boot only from SRM. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/milo-list-mbox/1999-July.mbox#L1|"MILO thoughts (Was Re: MILO init-command)"]], Martin Lucina, milo-list, 11 Jul 1999)] [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/freebsd-alpha-mbox/1999-April.mbox#L3081|"Re: MILO for fbsd?"]], Andrew Gallatin, freebsd-alpha, 8 Apr 1999)]
The instruction set is the same under either PALcode, but little else is: under the Windows NT PALcode, interrupts, virtual memory (with a 32-bit address space and two-level page tables), traps, and process structures all differ from the OSF/1 PALcode. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/freebsd-alpha-mbox/1998-October.mbox#L4635|"Re: PALcode"]], Jason Thorpe, freebsd-alpha, 10 Oct 1998)] MILO therefore has to carry its own PALcode and switch to it. ARC also cannot read a BSD disklabel. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/freebsd-alpha-mbox/1998-October.mbox#L4692|"PALcode"]], David Seifert, freebsd-alpha, 9 Oct 1998)]
==== ARC ====
=== Menus ===
ARC is operated from a set of text menus. [(>{{wiki:hardware:motherboards:common:windows_nt_installation_guide.pdf?linkonly|Alpha Microprocessors Motherboard Windows NT 3.51 and 4.0 Installation Guide}}, pp. 15-24)]
* **Boot menu:** "Boot Windows NT", "Boot an alternate operating system...", "Run a program...", and "Supplementary menu...". "Run a program" runs any ARC application, given its path.
* **Supplementary menu:** "Install new firmware...", "Install Windows NT from CD-ROM", "Set up the system...", and "Display hardware configuration".
* **Setup menu:** set the time, default environment variables, default configuration, boot selections, autoboot, machine-specific settings (including switching to SRM), and editing environment variables directly.
=== Device names ===
ARC names devices by a path of bus, controller, and device, e.g. ''scsi(0)disk(1)rdisk(0)partition(1)''. ''multi()'' devices are on the system board (keyboard and serial ports), ''eisa()'' devices are on the EISA bus (video and floppy on the AlphaServer 2100), and ''scsi()'' devices are SCSI disks and CD-ROMs. [(>{{wiki:software:firmware:alphaserver_2000_2100_2100a_firmware_reference_guide.pdf?linkonly|AlphaServer 2000/2100/2100A Firmware Reference Guide}}, p. 3-22)] [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1999-March.mbox#L3740|"RE: MILO and PC164"]], James Livingston, axp-list, 2 Mar 1999)]
=== Environment variables ===
^ Variable ^ Meaning ^
| ''CONSOLEIN'', ''CONSOLEOUT'' | Console input and output devices |
| ''FWSEARCHPATH'' | Search path for files; defaults to the system partition |
| ''AUTOLOAD'' | ''Y'' to boot automatically, ''N'' to stay in the firmware |
| ''COUNTDOWN'' | Seconds to wait before booting automatically; defaults to 10 |
Sources: [(>{{wiki:software:firmware:alphaserver_2000_2100_2100a_firmware_reference_guide.pdf?linkonly|AlphaServer 2000/2100/2100A Firmware Reference Guide}}, pp. 3-38 to 3-39)]
Each boot selection is a set of variables:
^ Variable ^ Meaning ^
| ''LOADIDENTIFIER'' | Name of the boot selection |
| ''SYSTEMPARTITION'' | Partition containing the operating system loader |
| ''OSLOADER'' | Full path of the operating system loader |
| ''OSLOADPARTITION'' | Partition containing the operating system |
| ''OSLOADFILENAME'' | Operating system directory, e.g. ''\WINNT35'' |
| ''OSLOADOPTIONS'' | String passed to the operating system |
Sources: [(>{{wiki:software:firmware:alphaserver_2000_2100_2100a_firmware_reference_guide.pdf?linkonly|AlphaServer 2000/2100/2100A Firmware Reference Guide}}, p. 4-3)]
The firmware passes ''SYSTEMPARTITION'', ''OSLOADFILENAME'', ''OSLOADPARTITION'', and ''OSLOADOPTIONS'' to the loader it runs. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/milo-list-mbox/1999-September.mbox#L271|"Re: Milo 2.2 - things are becoming generic."]], Nikita Schmidt, milo-list, 8 Sep 1999)]
=== System partition ===
The ARC specification requires a DOS-formatted primary partition, the system partition, to hold operating system loaders. The specification requires ARC systems to read both FAT12 and FAT16 but to create only FAT16. [(>[[https://www.netbsd.org/docs/Hardware/Machines/ARC/riscspec.pdf|Advanced RISC Computing Specification]], Version 1.2, MIPS Technology, 1992, p. 43)] ARC only understands PC (fdisk) partition tables, not BSD disklabels. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1998-August.mbox#L53775|"Re: SCSI-2 and AS200/233"]], Alan Young, axp-list, 23 Aug 1998)]
Older ARC versions cannot create a system partition; ''arcinst.exe'' from the Windows NT CD, started with "Run a program", does this. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1998-September.mbox#L32455|"Re: ARC boot options qstn"]], Bill Roman, axp-list, 19 Sep 1998)] [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1997-April.mbox#L10280|"Re: Linux/NT dual boot (Was: Moving to Digtal Alpha system"]], Maurice W. Hilarius, axp-list, 4 Apr 1997)]
=== Booting MILO ===
ARC runs ''linload.exe'', a small ARC program that loads MILO and switches to MILO's PALcode. MILO then relocates itself and boots Linux. [(>{{wiki:software:boot_loaders:milo_howto.pdf?linkonly|Alpha Miniloader Howto}}, section 5.1)] A typical boot selection is: [(>{{wiki:software:boot_loaders:milo_howto.pdf?linkonly|Alpha Miniloader Howto}}, section 5.1)]
LOADIDENTIFIER=Linux
SYSTEMPARTITION=multi(0)disk(0)fdisk(0)
OSLOADER=multi(0)disk(0)fdisk(0)\linload.exe
OSLOADPARTITION=multi(0)disk(0)fdisk(0)
OSLOADFILENAME=\noname.arc
OSLOADOPTIONS=
* ''OSLOADFILENAME'' names the MILO image. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/milo-list-mbox/1999-September.mbox#L271|"Re: Milo 2.2 - things are becoming generic."]], Nikita Schmidt, milo-list, 8 Sep 1999)]
* MILO runs the contents of ''OSLOADOPTIONS'' as a command, e.g. ''boot sda2:vmlinux.gz'', which allows unattended booting. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1996-May.mbox#L9693|"Re: MILO on Multia: environment corruption?"]], Stephen C. Tweedie, axp-list, 14 May 1996)]
* The required ''linload.exe'' version, and other ways to start MILO, are described in [[software:boot_loaders:milo#from_arc_or_alphabios|MILO: From ARC or AlphaBIOS]].
=== Jensen ===
The Jensen (DEC 2000 AXP, DECpc AXP 150), supported by Linux 6.9 and earlier, has both ARC and SRM, and Linux on it is booted from SRM; see [[hardware:systems:jensen|Jensen]]. [(>''Jensen-HOWTO'', Jim Paradis, Linux-Alpha archive, April 1996)] [(>[[https://git.kernel.org/torvalds/c/f81f335a56a8|"alpha: remove DECpc AXP150 (Jensen) support"]], Linux 6.10)]
==== AlphaBIOS ====
AlphaBIOS replaced ARC with the Alpha XLT series. [(>AlphaBIOS-HOWTO, Linux-Alpha archive, ftp.digital.com, 19 Dec 1996)] Digital Semiconductor used it on the [[hardware:motherboards:pc164lx|AlphaPC 164LX]] and [[hardware:motherboards:pc164sx|AlphaPC 164SX]]; its earlier boards kept ARC. [(>''dsc-software-alpha.html'', Digital Semiconductor web site, c. 1998)] The AlphaBIOS release notes of July 1999 list these supported products: [(>''AlphaBIOS Release Notes'', Compaq, July 1999, on the Alpha Systems Firmware Update V7.3 CD)]
* AlphaPC 164LX, 164RX, 164SX, and 264DP
* AlphaServer 800, 1000 5/xxx, 1000A 5/xxx, 1200, 4000, 4100, and DS20
* AlphaStation 255 and 600A
* Alpha XLT
* Compaq Professional Workstation XP1000
* Digital Personal Workstation and Digital Ultimate Workstation
* Digital Server 3000/3300, 5000/5300, and 7000/7300
The final V7.3 firmware CD also includes AlphaBIOS for the AlphaServer 4000, 4100, 8200, 8400, GS140, DS10, DS20, and ES40. [(>''FWREADME.TXT'' files, Alpha Systems Firmware Update V7.3 CD)]
=== Setup ===
AlphaBIOS Setup is entered by pressing F2 during startup. Its main menu offers "Display System Configuration...", "Upgrade AlphaBIOS", "Hard Disk Setup", "CMOS Setup...", "Install Windows NT", "Utilities", and "About AlphaBIOS...". [(>{{wiki:software:firmware:alphaserver_800_users_guide.pdf?linkonly|AlphaServer 800 User's Guide}}, p. 7-20)] [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1999-August.mbox#L38797|"RE: Alpha taxonomy"]], John Jemiolo, axp-list, 26 Aug 1999)]
* **CMOS Setup** sets the date, time, floppy and keyboard type, and "Auto Start". Advanced CMOS Setup (F6) includes "Console Selection" and SCSI BIOS emulation. [(>{{wiki:hardware:motherboards:common:windows_nt_installation_guide.pdf?linkonly|Alpha Microprocessors Motherboard Windows NT 3.51 and 4.0 Installation Guide}}, pp. 5-6)] [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1998-April.mbox#L37209|"Re: Automating boot process"]], Greg Lindahl, axp-list, 23 Apr 1998)]
* **Hard Disk Setup** creates and formats partitions, including the FAT system partition. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1998-September.mbox#L32455|"Re: ARC boot options qstn"]], Bill Roman, axp-list, 19 Sep 1998)]
* **Utilities** has "OS Selection Setup...", "Run ECU from floppy...", and "Run Maintenance Program...". [(>{{wiki:software:firmware:alphaserver_800_users_guide.pdf?linkonly|AlphaServer 800 User's Guide}}, p. 7-36)] An operating system selection has a boot name, boot file, OS path, and OS options. [(>{{wiki:software:firmware:alphaserver_800_users_guide.pdf?linkonly|AlphaServer 800 User's Guide}}, pp. 7-38 to 7-39)]
On a serial console, ARC and AlphaBIOS require a VT220-compatible terminal. Control keys stand in for function keys, e.g. C-b for F2 and C-u for F10. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1998-October.mbox#L50594|"Re: serial console & 5.66"]], Stephen J. Gaudet, axp-list, 1 Oct 1998)] [(>{{wiki:software:firmware:alphaserver_800_users_guide.pdf?linkonly|AlphaServer 800 User's Guide}}, p. 7-50)] [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/2000-August.mbox#L8289|"RE: switching from ARC back to SRM"]], William H. Magill, axp-list, 14 Aug 2000)] AlphaBIOS 5.66 and later boot without a keyboard on the AlphaPC 164LX and 164SX. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1998-September.mbox#L56813|"AlphaBios 5.66: LX now auto-booting without keyboard attached!"]], Andreas Haumer, axp-list, 29 Sep 1998)]
=== Booting MILO ===
To boot MILO, add an operating system selection in "OS Selection Setup" with ''\linload.exe'' as the boot file on the FAT partition and ''\'' as the OS path, and put a MILO command such as ''boot sda2:vmlinux.gz'' in the OS options. AlphaBIOS warns that the selection is not valid, which only matters for Windows NT. [(>AlphaBIOS-HOWTO, Linux-Alpha archive, ftp.digital.com, 19 Dec 1996)]
* ''linload.exe'' 1.3 or later is required; see [[software:boot_loaders:milo#from_arc_or_alphabios|MILO: From ARC or AlphaBIOS]].
* AlphaBIOS only lists primary partitions (1 to 4). [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1999-September.mbox#L14239|"Re: SRM vs. AlphaBIOS"]], Helge Kreutzmann, axp-list, 8 Sep 1999)]
* On the UP1000, AlphaBIOS loads APB, which reads the AlphaBIOS boot configuration to find the kernel. An SRM console is also available for the UP1000, and is preferred (see [[software:firmware:srm#system_support|SRM Console: System support]]). [(>{{wiki:hardware:motherboards:up1000:up1000_user_manual.pdf?linkonly|UP1000 User Manual}}, pp. 4-14 to 4-15)] APB and old MILO versions hardcode the old kernel start address, so kernels booted by them must be built with ''CONFIG_ALPHA_LEGACY_START_ADDRESS'' (see [[documentation:kernel#kernel_start_address|Kernel]]). [(>[[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/alpha/Kconfig.debug?h=v7.3-rc1|arch/alpha/Kconfig.debug]], Linux 7.3)] [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/2000-June.mbox#L18501|"Re: Linux-2.4.0-test2"]], Richard Henderson, axp-list, 24 Jun 2000)] [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/2000-November.mbox#L29979|"Re: 2.40test10 working?"]], Rich Payne, axp-list, 16 Nov 2000)]
=== AlphaBIOS on SRM systems ===
On AlphaServers and workstations that support both Windows NT and Digital UNIX, AlphaBIOS is a separate, compressed image in flash. SRM always starts first, and then loads AlphaBIOS if ''os_type'' is ''nt'' or the ''alphabios'' command is entered. [(>{{wiki:software:firmware:alphaserver_4000_4100_v6.0_firmware_release_notes.pdf?linkonly|AlphaServer 4100/4000 Firmware Release Notes (V6.0)}})] [(>{{wiki:hardware:motherboards:pc264dp:pc264dp_user_manual.pdf?linkonly|AlphaPC 264DP User's Manual}}, p. 6-1)] AlphaBIOS moved to a new location in flash in version 5.67, which requires SRM 5.3 or later. [(>''AlphaBIOS Release Notes'', Compaq, July 1999, on the Alpha Systems Firmware Update V7.3 CD)]
==== Updating firmware ====
* **ARC:** "Install new firmware" in the Supplementary menu searches the CD-ROM and floppy for ''FWUPDATE.EXE'' and runs it. [(>''update.txt'', AXPpci33 firmware update instructions, Digital, 3 Aug 1995)] Versions before 4.42 can only run it from a floppy. [(>{{wiki:hardware:motherboards:common:srm_console_user_guide.pdf?linkonly|Alpha SRM Console for Alpha Microprocessor Motherboards User's Guide}}, pp. 2-12 to 2-13)]
* **AlphaBIOS:** "Upgrade AlphaBIOS" searches the CD-ROM and then the floppy for an update. On the AlphaPC 164LX, the floppy holds ''lx164nt.rom''. [(>{{wiki:hardware:motherboards:common:windows_nt_installation_guide.pdf?linkonly|Alpha Microprocessors Motherboard Windows NT 3.51 and 4.0 Installation Guide}}, p. 5)] [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1997-November.mbox#L27224|"Re: XLT300 and more hardware questions"]], Aspen Systems Technical Support, axp-list, 23 Nov 1997)] Version 5.69 changed the search order to CD-ROM, floppy, then network. [(>''AlphaBIOS Release Notes'', Compaq, July 1999, on the Alpha Systems Firmware Update V7.3 CD)] On AlphaServers with SRM, "Upgrade AlphaBIOS" starts the Loadable Firmware Update utility. [(>{{wiki:software:firmware:alphaserver_800_users_guide.pdf?linkonly|AlphaServer 800 User's Guide}}, p. 7-21)]
==== Versions ====
^ Firmware ^ Version ^ Notes ^
| ARC | 4.58 | April 1999 interim release; allows a zeroed time-of-year clock to be set [(>''ARC Firmware V4.58'' release notes, April 1999, on the Alpha Systems Firmware Update V7.3 CD)] [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1999-April.mbox#L10409|"ARC version 4.58 (URL)"]], Bill Roman, axp-list, 6 Apr 1999)] |
| AlphaBIOS | 5.66 | Adds SCSI BIOS emulation on CIA systems; limits operating system selections to three [(>''AlphaBIOS Release Notes'', Compaq, July 1999, on the Alpha Systems Firmware Update V7.3 CD)] |
| AlphaBIOS | 5.68 | Adds 21264 support [(>''AlphaBIOS Release Notes'', Compaq, July 1999, on the Alpha Systems Firmware Update V7.3 CD)] |
| AlphaBIOS | 5.71 | Last version, for the DS10 and DS20 [(>{{wiki:software:firmware:alpha_systems_firmware_update_v7.3_release_notes_overview.pdf?linkonly|Alpha Systems Firmware Update V7.3 Release Notes Overview}}, p. 10)] |
==== ARCSBIOS ====
Deskstation wrote its own ARC-compatible firmware, ARCSBIOS, for the Ruffian (the [[hardware:motherboards:pc164ux|AlphaPC 164UX]] and 164BX), along with an ARCS program, ''ldmilo'', to load MILO. The Ruffian has no SRM, ARC, or AlphaBIOS. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1997-July.mbox#L2762|"Re: Deskstation Ruffian compatibility"]], Dean Hall, axp-list, 3 Jul 1997)] [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-hardware-mbox/2000-March.mbox#L336|"Re: Various UX questions"]], Ron Farrer, axp-hardware, 10 Mar 2000)]
* ''ldmilo'' ignores ''OSLOADFILENAME''. It differs from ''linload.exe'' because ARCSBIOS lacks Digital's vendor callback vector. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/milo-list-mbox/1999-September.mbox#L685|"Re: Milo 2.2 - things are becoming generic."]], Nikita Schmidt, milo-list, 9 Sep 1999)]
* ARCSBIOS requires the VGA card to be in a 64-bit slot and beeps three times otherwise. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1999-March.mbox#L62368|"Re: Alpha newbie Q's about UX."]], Paul Jakma, axp-list, 20 Mar 1999)]
* The ARCSBIOS documentation describes no serial console support. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-hardware-mbox/2000-March.mbox#L97|"Re: Various UX questions"]], Ron Farrer, axp-hardware, 9 Mar 2000)]
* Deskstation's ARC firmware and HAL were developed independently of Digital's. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1996-February.mbox#L5967|"re: Linux on a Deskstation Raptor 3 - System?"]], Neal Crook, axp-list, 20 Feb 1996)]
==== Known issues ====
* **Time-of-year clock:** ARC and AlphaBIOS store the year relative to 1980. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/debian-alpha-mbox/2000-April.mbox#L2166|"Re: potato install-items"]], David Huggins-Daines, debian-alpha, 8 Apr 2000)] Linux detects the epoch at boot and prints e.g. ''rtc: ARC console epoch (1980) detected''. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/debian-alpha-mbox/1999-September.mbox#L1164|"ARC time on slink"]], Dragos-Anton Manolescu, debian-alpha, 12 Sep 1999)] The epochs used by SRM, and the problem they cause when the same machine also boots from SRM, are described in [[software:firmware:srm#known_issues|SRM Console: Known issues]].
* **Video cards:** ARC and AlphaBIOS initialize VGA cards with an x86 BIOS emulator. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1996-April.mbox#L11197|"RE: Which graphics accelerator should one use for Linux-Alpha XL266?"]], David A Rusling, axp-list, 23 Apr 1996)] nVidia TNT2 cards fail in it. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-hardware-mbox/2000-February.mbox#L249|"Re: ASUS V3800 TNT2"]], Rich Payne, axp-hardware, 18 Feb 2000)] AlphaBIOS allows no BIOS emulation if a Digital TGA card is installed. [(>''AlphaBIOS Release Notes'', Compaq, July 1999, on the Alpha Systems Firmware Update V7.3 CD)] If ARC cannot use the graphics card, it uses the serial port. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1996-September.mbox#L10519|"S3 BIOS"]], Bernd Lind, axp-list, 10 Sep 1996)]
* **SCSI boot devices:** BusLogic controllers cannot be used to boot MILO from ARC or AlphaBIOS. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1997-June.mbox#L15694|"Re: Any1 with a working PC164!"]], Jay A Estabrook, axp-list, 13 Jun 1997)]
* **ECU availability:** EISA systems need the ECU floppy, which contains proprietary code and cannot be freely distributed. [(>''readme.txt'', ECU directory, ftp.digital.com)] [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/debian-alpha-mbox/2002-July.mbox#L490|"Sound on AS500/500"]], M. Grabert, debian-alpha, 2 Jul 2002)]
==== Conflicting information ====
The following sources conflict with each other or with the account given above. They are listed here for further investigation.
* **Whether Windows NT systems can switch to SRM**
* [[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/2000-August.mbox#L8289|"RE: switching from ARC back to SRM"]], William H. Magill, axp-list, 14 Aug 2000: "I believe that there was only ever one box which had NO SRM console accessable by setting the CMOS "console selection".
* [[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/2000-May.mbox#L11764|"Re: DEC ALPHA 3305"]], William H. Magill, axp-list, 21 May 2000: "the 3300 series has no SRM console; it has the ARC console only."
* [[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1999-November.mbox#L13782|"RE: Compaq to offer Tru64 for $99"]], John Jemiolo, axp-list, 5 Nov 1999: "You can switch the 33,53,73 to srm console, but they will still not boot unix or vms."
* **Whether ''OSLOADOPTIONS'' reaches MILO**
* [[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1996-May.mbox#L9693|"Re: MILO on Multia: environment corruption?"]], Stephen C. Tweedie, axp-list, 14 May 1996: "that variable's contents will be executed as a command line by MILO when it starts up."
* [[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1996-December.mbox#L20166|"Maximum Memory size"]], Brian Cruikshank, axp-list, 13 Dec 1996: "The OSLOADOPTIONS does not seem to be sent to Milo."
* **Last AlphaBIOS on the ES40**
* ''FWREADME.TXT'' for the ES40 on the V7.3 firmware CD lists AlphaBIOS V5.71.
* {{wiki:software:firmware:alpha_systems_firmware_update_v7.3_release_notes_overview.pdf?linkonly|Alpha Systems Firmware Update V7.3 Release Notes Overview}}, p. 10, lists no Windows NT firmware for the ES40.
==== Documentation ====
^ Document ^ Part number ^ Date ^
| [[https://www.netbsd.org/docs/Hardware/Machines/ARC/riscspec.pdf|Advanced RISC Computing Specification]], Version 1.2 | | 1992 |
| {{wiki:hardware:motherboards:common:windows_nt_installation_guide.pdf?linkonly|Alpha Microprocessors Motherboard Windows NT 3.51 and 4.0 Installation Guide}} (ARC and AlphaBIOS menus on the Digital Semiconductor motherboards) | EC-QLUAH-TE | October 1997 |
| {{wiki:software:firmware:alphaserver_2000_2100_2100a_firmware_reference_guide.pdf?linkonly|AlphaServer 2000/2100/2100A Firmware Reference Guide}} (ARC environment variables, boot selections, and device names) | EK-AXPFW-RM.C01 | December 1995 |
| {{wiki:software:firmware:alphaserver_800_users_guide.pdf?linkonly|AlphaServer 800 User's Guide}} (AlphaBIOS, chapter 7) | EK-ASV80-UG.B01 | November 1997 |
| {{wiki:software:firmware:alpha_systems_firmware_update_v7.3_release_notes_overview.pdf?linkonly|Alpha Systems Firmware Update V7.3 Release Notes Overview}} | AA-RGKNV-TS | April 2007 |
| {{wiki:hardware:motherboards:pc164lx:alphapc_v5.7_firmware_release_notes.pdf?linkonly|AlphaPC 164SX/164LX/164 Motherboards Firmware Update Procedures, V5.7}} | | March 2000 |
| {{wiki:documentation:references:alpha_axp_system_reference_manual_v6.pdf?linkonly|Alpha AXP System Reference Manual, Version 6}} (Part II-C describes how Windows NT uses the ARC firmware) | | 1994 |
{{tag>software firmware}}