Ruud's Commodore Site Home  Email

IEEE





The story of this document

All the older CBM/PET-Commodores are equipped with an IEEE-488 interface. Due to the lack of any documentation on Internet about the technical background of IEEE for these Commodores on Internet, I started to collect all kind information I could lay my hands on to make my own electronic manual.
Everything in this manual is based on the original concept. Where Commodore did something else, I will mention this


The history

The IEEE bus was developed by Hewlett-Packard to connect and control programmable instruments and they called it HP-IB. The interface quickly became very popular in the computer industry. The IEEE comittee gave it its present number and renamed it to GPIB (General Purpose Interface Bus). But it is better known under the number given by the IEEE comittee: IEEE-448.
Commodore used the IEEE-448 bus to connect their floppy disks and printers to their computers. With the development of the VIC-20 they started to use another bus, but one still partly based on the IEEE-488. Instead of sending the data parallel, it is serialized. This bus became known as the IEC bus.


IEEE-488 Overview

You can connect three type of devices to the IEEE-488 bus:
- Listeners
- Talkers
- Controllers

Some devices can perform more than one of these functions. The standard allows a maximum of 31 devices to be connected on the same bus. A minimum system consists of one Controller and one Talker or Listener, for example a CBM 8032 computer and a CBM 8023 printer.
A Listener is a device that can read data from the bus when instructed by the Controller. A Talker writes data to the bus when instructed. It is possible to have several Controllers on the bus but only one may be active at any given time: the Active Controller. The Active Controller may pass control to another controller that in turn can pass it back or pass it to yet another controller. The Controller can set up a talker and a group of listeners so that it is possible to send data between groups of devices as well.
If you have more Controllers connected to each other, only one can be active at the start-up-time. This Controller is called the System Controller.
We can connect more CBM computers to the same bus without any problem as long as we take care of the fact that only one computer is performing a command at the time. In IEEE-488 terms: you, the user, acts as the System Controller, allowing one of the connected computers to be an Active Controller for the time being.


Interface Signals

The IEEE-488 interface system consists of 16 signal lines and 8 ground lines. The 16 signal lines are divided into 3 groups: 8 data lines, 3 handshakelines, and 5 interface management lines.




Resulting scheme

Line          NRFD   NDAC   DAV    ATN    EOI    IFC    REN    SQR
            | I  O | I  O | I  O | I  O | I  O | I  O | I  O | I  O | 
------------|------|------|------|------|------|------|------|------| 
Listener    |    X |    X | X    | X    | X    | X    |      |      | 
Talker      | X    | X    |    X | X    |    X | X    |      |      | 
Controller  | X  X | X  X | X  X | X  X | X  X |    X |    G | X    |
X marks line used as "I = Input" or "O = Output"
The block Controller/REN is marked G because a CBM doesn't use this line. In this case it is hardware-wired to GROUND.


Service Request and Serial Polling

If a device encounters a problem or a pre-programmed condition, it can activate the SQR-line by setting it (L). If the Controller detects this request, it can initiate a 'Serial Poll' by transmitting the command SPE ($18) on the bus. It then places an address on the bus, activates ATN (which makes the addressed device a talker) an de-activates it.
If the device requested service, it will respond by setting DIO7 (L). It may indicate the nature of the request by setting other lines low as well. The Controller can now take appropriate actions.
When all devices have been polled, the controller terminates the serial poll by issuing the command SPD ($19).


Device Addresses

The IEEE-488 standard allows up to 31 devices to be interconnected on one bus. Each device is assigned a unique primary address, ranging from 0-30, by setting the address switches on the device. A secondary address may also be specified, ranging from 0-31. See the device documentation for more information on how to set the device primary and optional secondary address.
Commodore has assigned the addresses 0 till 3 to internal devices: keyboard, cassette recorder #1, cassette recorder #2/RS232-interface and screen. Drive-addresses can range from 8 to 15. Printer-address can range from 4 to 7.


The hardware

Looking at the schematic of a PET, like the 3008, you'll see that the MC3446 is used as the driver for almost all the signals. According to "The PET revealed" by Nick Hampshire, these ICs have 'Open Collector'-outputs which means you can interconnect them without any fear of 'blowing up' a computer or device.
Other models are equipped with the SN75160 and the SN75161 from Texas Instruments. These ICs are drivers especially developed for IEEE-488.
The major difference between the two types is that when using the MC3446, you need one separate in- and output line for every IEEE-line, together 32 lines. This means two 6522s or 6520s. For the SN-drivers you only need 19 lines or one 6525.


The SN75160

You can roughly describe the 75160 as a bi-directional 8-bit bus interface. (like the 74245)


The SN75161

The SN75161 is used to buffer the handshake- and interface managementlines. There is some internal logic to steer the output as follows:
                                         |  ATN
                                |  NDAC  |  IFC
                                |  NRFD  |  REN
  ATN  |  TE   |  DC   ||  EOI  |  DAVV  |  SQR
-------------------------------------------------
   L   |   L   |   L   ||   O   |   O    |   O
   L   |   L   |   H   ||   I   |   O    |   I
   L   |   H   |   L   ||   O   |   I    |   O
   L   |   H   |   H   ||   I   |   I    |   I
   H   |   L   |   L   ||   O   |   O    |   O
   H   |   L   |   H   ||   O   |   O    |   I
   H   |   H   |   L   ||   I   |   I    |   O
   H   |   H   |   H   ||   I   |   I    |   I
In words: ATN, IFC, REN and SQR are outputs if DC = (L), else inputs. DAVV,NDAC and NRFD are outputs if TE = (L), else inputs. EOI behaves like DAVV when ATN = (H), else like SQR.


Physical Characteristics

You can link devices in either a linear, star or combination configuration using a shielded 24-conductor cable. The standard IEEE-488 cable has both a plug and receptacle connector on both ends. This connector is the Amphenol CHAMP or Cinch Series 57 MICRO RIBBON type. (it looks like a Centronics connector, but smaller) As far as I know all Commodore peripheral devices, like floppy-disks, and the CBM-8xxx series are equipped with this type of connector. The other CBMs and PETs are equipped with a male edge connector. (like the userport of a C64 or VIC-20)

Pin  Signal              Abbreviation  Source
---  ----------------    ------------  ------------------
 1   Data Bit 1          DIO1          Talker
 2   Data Bit 2          DIO2          Talker
 3   Data Bit 3          DIO3          Talker
 4   Data Bit 4          DIO4          Talker
 5   End Or Indentity    EOI           Talker/Controller
 6   Data Valid          DAV           Controller
 7   Not Ready For Data  NRFD          Listener
 8   No Data Accepted    NDAC          Listener
 9   Interface Clear     IFC           Controller
10   Service Request     SRQ           Talker
11   Attention           ATN           Controller
12   Shield 
13   Data Bit 5          DIO5          Talker
14   Data Bit 6          DIO6          Talker
15   Data Bit 7          DIO7          Talker
16   Data Bit 8          DIO8          Talker
17   Remote Enabled      REN           Controller
18	Ground DAV
19	Ground NRFD
20	Ground NDAC
21	Ground IFC
22	Ground SRQ
23	Ground ATN
24	Logical Ground



Credits:





Having questions or comment? You want more Info?
You can email me here.