J151 SC88PIO
Because the SC88PIO can be configured in so many different ways, it is difficult to make many general recommendations about using it, mainly because the software will determine exactly how it is used. There are two obvious situations where it can be employed, and a summary of them may suggest other possibilities.
As a target system, the SC88PIO runs software created on another computer, which is transferred either by blowing an EPROM or by downloading machine-code into RAM. A useful approach is to have a machine code monitor in the EPROM1 socket, so that the code can be debugged.
The XPC software package is designed to simplify using the SC88PIO as a target system, with a PC as the host. It consists of a debug/monitor EPROM for the SC88PIO, and a 3.5" or 5.25" disk for the PC. Code can be developed on the PC using assembler, C, or Arcom's multi-tasking BASIC compiler. It is then downloaded via a serial link using the XPC file transfer feature, and can then be debugged on the SC88PIO using the PC as a terminal.
The SC88PIO can be expanded to a disk-based system running Concurrent DOS with the addition of a disk-controller board and a memory board. Concurrent DOS is a powerful multi-tasking operating system, and it may be expanded to a multi-user operating system with the addition of one or more serial I/O boards to provide extra communication channels. C, BASIC or assembler can all be run under Concurrent DOS, then ROMmed for use in stand-alone target systems.
There are some general points to note when using the board for the first time.
If you are using it with any other STE board on the bus, the backplane must be terminated. This is partly to reduce reflections, although these are not usually serious on short buses, and partly because some lines are open-collector and require pull-ups.
A reset switch may be connected to connector PL2.
Boards are tested with jumpers in the standard configuration as shown in Section 4. If you have altered the jumpers and the board does not work, restore the jumpers to the original setting and try it again before returning it for repair.
If you are using the board without Concurrent DOS, you will find the 80188 machine-code monitor extremely useful when getting started, as it contains (besides the usual monitor functions) code for initialising the board. If you want to start from scratch, the following notes may help.
The chip-select for EPROM (UMCS) should be set up first, so that you can jump to the start of EPROM and then continue initialising. The LMCS must be programmed before any stack or memory operations are done with the on-board memory.
The peripheral chip-selects must be set up, by programming the PACS and MPCS registers, to allow access to the on-board SCC. Values to use are given in Sections 5 and 6. The SCC requires some initialisation code, and it is strongly advised that you obtain and read the SCC technical manual before doing anything unusual. The example program in Appendix D shows how to set up the SCC.
There are three counter/timers in the 80188. One has no external connections so it can only be used internally for interrupt or DMA timing, or as a clock.
The other two countertimers have two main uses. They may be used to provide a bus time-out function, or as independent counter/timers for user I/O on PL4. Note that Concurrent DOS uses the bus time-out function to size memory and detect the presence or absence of STEbus peripheral boards, sand so will not run without bus time-out detection.
Links 15 and 16 define how the counter/timers are used. See Section 4 for details.
It is recommended that you read the 80188 technical manual for details on how to use the counter/timers. A simple example is to have a free-running counter pulsing an output pin. To do this, write COO3 to the control register of timer 0 (at FF56), and FFFF to the maximum count A and B registers (at FF52 and FF54). If CTOin (PL4 pin 45) is open (high), then CTOout (PL4 pin 39) will flash with a period of approximately 62 milliseconds (about 16 times per second). Note that LK15 and LK16 must connect counterr/timer 0 to PL4.
Timers 0 and 1 may be programmed to produce a bus timeout function. The input to T0 is the bus driver enable line; TO output is wired to T1 input, and T1 output going low will take the CPU out of the wait-state. For this to happen, it is necessary to set T0 up as a free-running timer which is stopped by the active-low bus-driver enable signal: T1 must be set up to be retriggered by pulses on its input (which is connected to T0 output). If T1 then fails to be retriggered by T0 it will time out. It can also generate an interrupt when it times out so that the CPU is aware that a timeout has occurred.
If 80188 instructions are used in test and set" operations for communication between processors on the bus, they should be prefixed with the LOCK prefix. This will prevent the bus request from going away until the instruction is complete.
There are three 8-bit parallel I/O ports, accessible via PL4. This connector conforms to the Arcom standard 50-way digital signal conditioner scheme, so a wide range of digital SCBs can be used. For example, optoisolation, relay, and high-current drivers will all connect to the SC88PIO. The three ports are comprised of groups 0-2 on PL4 (see Appendix B).
Group 0 is output only, with 24mA sink and 2.6mA source capability. Group 1 is input only, with optional input latching. The maximum low-level input current is -400µA. The input buffer IC26 is a transparent latch. It is transparent when its control line is (PL4 pin 12) is high, which it is by default when there is nothing connected to it due to the pull-up resistor R15. If PL4 pin 12 goes low, data will be latched until it goes high again. Data can be read at any time.
Group 2 can be input or output, because it has input buffers wired to open-collector outputs pulled up with 4k7 resistors. To use a particular bit as an input, write a 1 to it. The corresponding output transistor will be turned off and that pin will be pulled up by a 4k7 resistor. Your external circuitry can then drive that pin high or low. To use a pin as an output, simply write a 0 or 1 to it. A zero will make the output transistor conduct; it can then sink up to 40mA (peak). A one will let a 4k7 resistor pull the line up to 5V.
I/O ports of this type have several uses. One is where inputs and outputs are mixed within a group. Another is where they may be read back to verify an output. This allows you to check the integrity of an output, for example to check for shorts or excess noise on the lines.
The SC88PIO has two battery-backed static RAM chips, providing 64k or 256k of non-volatile memory. The memory protection chips (IC14 and IC19) will switch automatically between the supply, the STEbus VSTBY, and the on-board battery to find the highest supply. If this is below 4.5V, the memory will be write protected. RAM data retention depends on temperature, humidity, and the amount of charge in the battery, but this should typically be several months. Discharge current can be measured from the voltage across R7. R7 also governs the charge rate, and is set for continuous trickle-charge. If the board is only to be used intermittently, consider reducing R7.