Reference / Apple II family

Apple II Technical Note Misc #8 — Pascal 1.1 Firmware Protocol ID Bytes

The complete text of the only Apple-published specification for the Pascal 1.1 firmware protocol used to identify Apple II peripheral cards. Includes the canonical $Cn0C device-signature/instance-ID values for all Pascal-1.1-compliant Apple products.

Verified April 25, 2026
apple-iipascal-firmwarereferenceretrocomputing
↓ Download PDF

This is the complete text of Apple II Technical Note Misc #8: Pascal 1.1 Firmware Protocol ID Bytes, originally written by Cameron Birse in December 1986 and revised by Matt Deatherage in November 1988. It is the only document Apple ever formally published describing the Pascal 1.1 firmware protocol used to identify Apple II peripheral cards. Captured here as a reference for the CP/M Videx investigation and any other research that needs to detect Pascal-1.1-compliant cards.

Source: Apple II Technical Notes, Developer CD Volume 2, September 1989 — pages 394-395. The full PDF of the September 1989 Technical Notes collection (1.4 MB, ~535 pages, all topics) is preserved at /reference/apple-ii-technical-notes-1989-09.pdf. The text below is just Misc #8; converting the rest of the collection to markdown is a future task.

The original is reproduced below with no edits beyond layout for web rendering.


Apple II Miscellaneous

#8: Pascal 1.1 Firmware Protocol ID Bytes

Revised by: Matt Deatherage   November 1988 Written by: Cameron Birse   December 1986

This Technical Note documents the Pascal 1.1 Firmware Protocol ID bytes for Apple II peripheral cards and ports.


Background

Apple II Pascal 1.1 introduced a firmware protocol called, not surprisingly, the Pascal 1.1 Firmware Protocol. A card following this protocol could be identified by the following ID bytes, where n is the slot in which the card resides:

AddressValueDefinition
$Cn05$38ID byte (from Pascal 1.0)
$Cn07$18ID byte (from Pascal 1.0)
$Cn0B$01Generic signature of cards with Pascal 1.1 Protocol
$Cn0C$ciDevice signature byte

$Cn0C was interpreted as two nibbles. The high-order nibble, c, was defined as the device signature. This signature was a pre-defined value determining what kind of device was connected (i.e., printer, modem, joystick, clock, etc.). The low-order nibble, i, was defined as a unique identifier, so you could tell one printer from another, for example.

Developer Technical Support no longer maintains a list of assignments for the i nibble in this protocol. Since, by definition, the Pascal 1.1 Protocol only has room for 16 uniquely identified devices of each signature, it is easy to see that the Apple II family has outgrown the definition.

Following is a table which lists the values of the Pascal 1.1 Firmware Protocol ID bytes for some Apple products which follow the protocol. Previous versions of this Note listed ID bytes for products which did not follow the protocol. Do not attempt to identify devices which do not follow the protocol by checking these ID bytes. This method will not work and should be avoided.

For example, trying to conclusively identify a 3.5” disk drive, SCSI hard drive, memory expansion card, or other SmartPort device using these ID bytes could be disastrous. For any SmartPort device, you should look for the ProDOS Block Device ID bytes ($Cn01 = $20, $Cn03 = $00, $Cn05 = $03), then look for the additional SmartPort ID byte ($Cn07 = $00). Once you have identified SmartPort, you should make a SmartPort STATUS call to determine the nature and types of connected devices. By this definition, ProDOS block devices and SmartPort devices cannot follow the Pascal 1.1 Firmware Protocol.


Pascal 1.1 Devices

Apple II Peripheral Cards

Card$Cn05$Cn07$Cn0B$Cn0C
Super Serial Card (or port)$38$18$01$31
Apple 80 Column Card$38$18$01$88
Apple II Mouse Card$38$18$01$20

Apple IIc Ports

1st version ($FBBF = $FF)

SlotPort$Cn05$Cn07$Cn0B$Cn0C
1Serial Port$38$18$01$31
2Serial Port$38$18$01$31
380 Columns$38$18$01$88
4Mouse$38$18$01$20

2nd version ($FBBF = $00)

SlotPort$Cn05$Cn07$Cn0B$Cn0C
1Serial Port$38$18$01$31
2Serial Port$38$18$01$31
380 Columns$38$18$01$88
4Mouse$38$18$01$20
7AppleTalk$38$18$01$31

3rd version ($FBBF = $03), 4th version ($FBBF = $04), and 5th version ($FBBF = $05)

SlotPort$Cn05$Cn07$Cn0B$Cn0C
1Serial Port$38$18$01$31
2Serial Port$38$18$01$31
380 Columns$38$18$01$88
7Mouse$38$18$01$20

Apple IIGS Ports (ROM 1.0 and 2.0)

SlotPort$Cn05$Cn07$Cn0B$Cn0C
1Serial Port$38$18$01$31
2Serial Port$38$18$01$31
380 Columns$38$18$01$88
4Mouse Port$38$18$01$20
7AppleTalk$38$18$01$31

ProDOS and SmartPort Devices

These devices use a different identification protocol — not the Pascal 1.1 Firmware Protocol.

Device$Cn01$Cn03$Cn05$Cn07
Generic ProDOS Block Device$20$00$03$xx
SmartPort Device$20$00$03$00

END OF FILE TN.Misc.008


Notes on Reading This Document

Synthesized observations about the published $Cn0C values, since Apple never explicitly published the device-signature nibble registry but the table above implicitly defines several of them:

c nibbleClass (inferred from published cards)
$2Mouse / pointing device (Apple II Mouse Card = $20; IIc/IIGS mouse port = $20)
$3Serial / communications interface (Apple Super Serial Card = $31; IIc/IIGS serial ports and AppleTalk = $31)
$880-column display card (Apple 80 Column Card = $88; IIc/IIGS slot 3 80-column = $88)

Third-party cards followed similar conventions. The Videx Videoterm — not in Apple’s official table because it’s not an Apple product — declares $CB0C = $82: device signature $8 (display), instance ID $2. That’s consistent with Apple’s $8 = 80-column display assignment, just with a different instance ID to distinguish it from Apple’s own card (which uses instance $8).

Important practical limit, restated from the Tech Note itself: do not try to identify ProDOS block devices, SmartPort devices, SCSI cards, 3.5” drives, memory expansion cards, or anything else not in the table above using these bytes. Those cards do not implement the Pascal 1.1 protocol and probing them this way may produce false matches.

Document

Your browser doesn't support inline PDF viewing.

↓ Download the PDF directly

Having trouble viewing? Download the PDF and open it locally.

← All Reference Docs