Retrieving the Planar ID

Assembly Routine
BASIC Routine

List of Known Planar IDs
List of Planar ADFs

Content by David L. Beem (original HERE). Edited by Tomáš Slavotínek.


"Planar" is IBM-speak for what other computer manufacturers call a motherboard. Starting from the Micro Channel computer systems, which introduced hardware that could be identified and configured with software, IBM (and other licensed manufacturers producing Micro Channel systems or planars) set a semi-unique (there are several duplicates) 16-bit "Planar ID" so that software can identify the planar it is operating on. Most, but not all, systems that have a Planar ID will have a Micro Channel bus (there is also the dual bus MCA/PCI Server 320/520 planar, and the dual bus EISA/PCI Server 320/520 planar, both with Planar IDs) so the CheckMCA routine normally should be run before trying to retrieve a Planar ID. The Planar ID value is gained by clearing the Most Significant Bit ("MSB") on port 94h, getting the high byte value from port 101h, then the low byte value from port 100h. Once you have retrieved the Planar ID, set the MSB for port 94h again.

Note: These routines do not incorporate any I/O port read delays and may get inconsistent and/or inaccurate results on some planars.

Assembly Routine

; PlanarID Assembly routine
; This routine retrieves the MCA planar ID.
; The CheckMCA routine should be run first to
; make sure it is a Micro Channel computer.
; Entry:
;     None
; Exit:
;     AX = Planar ID

PlanarID	proc	near
		out	94h,7Fh
		mov	DX,101h
		in 	AL,DX
		mov	AH,AL
		dec	DX
		in	AL,DX
		out	94h,0FFh
PlanarID	endp

BASIC Routine

' PlanarID BASIC function
' This function retrieves the MCA planar ID.
	OUT &H94, &H7F
	HighByte = INP(&H101)
	LowByte = INP(&H100)
	PlanarID = (HighByte * 256) + LowByte
	OUT &H94, &HFF

Content created and/or collected by:
Louis F. Ohland, Peter H. Wendt, David L. Beem, William R. Walsh, Tatsuo Sunagawa, Tomáš Slavotínek, Jim Shorney, Tim N. Clarke, Kevin Bowling, and many others.

Ardent Tool of Capitalism is maintained by Tomáš Slavotínek.
Last update: 08 May 2024 - Changelog | About | Legal & Contact