Homebrew Mini-Computer based on Z80 CPU

armandoacostawong@gmail.com

:: Design Considerations

Minicomputer vs. Personal Computer

The use of a Z80 microprocessor calls for a personal computer (or "home computer" as they were referred at that time). However, LC-81 is not planned as such; it won't never have a keyboard, a video monitor and much less a mouse. Instead, it offers a traditional console made of switches and lamps that better resembles a DEC PDP11 than an Sinclair.

The design is modular and consequently extensible. Modules comprise entire equipments in a 19 inches industrial rack. It does not have a "user" but an "operator". It may have users in the future if I manage to run a Time Sharing system on it in which case those users would sit behind dump terminals possibly away from the physical machine, but there is no plans for doing so at this moment.

True minicomputer in the 70s had many uses apart from Time Sharing. They were utilized to control machinery and to analyze scientific data in laboratories among others (worth to mention that of function as network routers in the ARPANET). LC-81 is much less powerful than those real machines but my plans as per applications are more in that direction.

The naked bare metal

On power-on or reset, the machine does not boot. It rather goes to Halt mode awaiting for the operator to enter code into memory with a Console made of switches and lamps and then to press the START button to actually fire the action. In fact, Hardware and Software are separate entities in the LC-81; the machine by itself possesses no intelligence; that must be provided in a second step as part of the manual operation.

It does not mean however that all the software must be entered that way. Software will surely reside in storage and part of the System Environment resides in EPROM. But the operator will always need to perform an explicit Load operation to put the software into action. That is also true for the operating system.

Private and Shared Memory

The memory contained into the Master Controller Unit (MC) is said to be "private" because it is isolated from the EXT-BUS by the mean of 3rd-state buffers so no external device can gain access to it in any way.

It is possible to build an external Memory Unit to provide "shared" memory. That would be the one used by DMA capable peripherals.

The use of a separate private and shared memory allows for concurrent operations between DMA operations and normal software execution as long as this takes place in private memory.

Daisy Chained interrupt architecture

The bus connecting all units in the LC-81 has only one line for interrupt request (IRQ) and one for interrupt acknowledge (IAK). Multiple nested interrupts are possible, however, because those lines are daisy-chained among units. The peripheral asserting the interrupt request opens the chain behind it to prevent others to interrupt, taking priority this way in the event of simultaneous interrupt requests.

This fashion is common in embedded systems based on Z80 as it was also common in minicomputers. This contrasts with having multiple IRQ lines in the bus and presents the advantage of simplicity in the bus at the expense of making things more complex in the peripheral design.

Considerations for Storage

Storage technology for the LC-81 minicomputer must be "historically correct". Flash drive, for example, is not a good choice in that respect. Real legacy devices, however, such as paper punch tapes are out of my reach so I am considering intermediate solutions such as audio tapes, floppy drives and EPROM cartridges.

In general, I am more mentally oriented to tapes rather than disks. One reason is simplicity, the other is that working with tapes is interesting because of the limitations imposed by its sequential nature.

Terminology

The terminology employed in the documentation of this project tries to reflect the historical context that LC-81 represents (1970s). It also tries to avoid confusion with terms found in modern systems such as UNIX and PCs.

For example, the operating system (currently under development) is referred as to a "Control Program". That term has been borrowed from IBM System/360's batch processing system. That is because my Control Program is being designed for batch processing rather than time-sharing.