ARC40

ARCbus Z8

Microcontroller

User’s Manual

Contents

Section

  1. Introduction
  2. Circuit description
  3. Links and options
  4. Memory Map
  5. Using the ARC40
  6. Baud Rates
  7. EPROM Programming and Reading
  8. Parallel I/O
  9. Serial I/O
  10. Fault Finding Guide

Appendix

  1. Component List
  2. Connections
  3. Specification
  4. Example Program
  5. Circuit Diagram
  6. Z8 Data
  7. Software

© Arcom Control Systems Ltd 1983


Revision History

Manual PCB Comments
v1 iss 2
v1 iss 3
v1 iss 4
  1983-08-09 ARC40.
1986-11-13 ARC40.
1987-11-13 ARC40. A5 created.

1. Introduction

The ARC40 is a complete development system that runs BASIC on a single Eurocard, yet is so versatile that it can also be used as a stand-alone controller with no extra hardware. If you should need to add extra I/O, the ARC40 is bus compatible with Arcom's range of peripheral boards, which includes A/D and D/A converters, digital and power I/O and an IEEE488 interface.

This manual describes the ARC40 computer and explains how to use it. A separate software manual describes the monitor routines, and the Zilog Z8 BASIC/DEBUG manual describes the BASIC interpreter. We decided to make the ARC40 as powerful as we could, so we designed in the most advanced components, including the Zilog Z8671 microcomputer, a PAL (Programmable Array Logic) device for decoding and strobes, and CMOS RAM. Then we added an EPROM programmer and extra I/O.

The microcomputer is described in detail in the Zilog Z8671 Microcomputer Technical Manual. It has many useful features, including a BASIC interpreter, serial and parallel I/O, counter/timers and on-chip RAM. A version of the Z8 without the BASIC interpreter, the Z8681, can also run on the board with some component changes.

If you need to use machine code on the Z8, Arcom have produced an assembler EPROM which replaces the monitor EPROM. This allows you to mix assembly language and BASIC, so you can choose between the speed of machine code and the convenience of BASIC. A CP/M disk-based assembler is also available. This is useful for large assembly language programs.

The PAL device is used to combine the function of many TTL devices into one package. It provides chip selects, direction control for buffers, and strobe signals. The CMOS RAMs can be 2K or 8K, giving a maximum on board capacity of 16K. There is a separate power line so that a battery can be used to preserve the RAM contents when the computer is powered down. The EPROM programmer section is very versatile. It can program 2K, 4K, 8K, or 16K EPROMs, all of which can be used in the EPROM memory socket on board.

The ARC40 is very cost-effective as a computer, but to reduce cost even further in production, Arcom have developed the ARC42 minimum chip computer, which has many of the features of the ARC40 except the EPROM programmer, yet occupies only half of a single Eurocard. The other half of the Eurocard has a 0.1" grid of holes so that you can add your own components, for prototyping or production. We do offer a custom design service for quantity production, based on the ARC42. Please contact us for further details.


2. Circuit Description

The Z8 microcomputer IC1, produces multiplexed low-order address/data signals which are latched by IC10 for the RAM and EPROM addresses. IC8 inverts and buffers the address strobe. Switches S1, 2 and 3 are read by the Z8671 through buffer IC4 after reset to determine the UART baud rate.

IC9 is a PAL, configured to produce read and write strobes and chip select signals. The negative-going read and write strobes (RD and WR) are the width of the corresponding Z8 data strobe, with a delay of approximately 20ns through the PAL. They are provided because many peripheral chips and memory devices require this form of strobe. The memory map (Appendix B) defines the locations of memory chips and I/O devices.

Link L8 serves a special purpose. It sets IC9 to allocate memory for either 2K or 8K RAMs. The RAM is not aliased and the memory sizing program on the Z8671 will set up the pointers correctly.

Resistor network RN2 should be installed if the Z8671 is used, so that the address lines are pulled up during the reset sequence. Note that a different PAL is required to run a Z8671.

Resistors R2 and R3 pull the RAM chip selects up to the RAM power, so that current consumption is minimised if a standby power supply is used for data retention.

IC2 and 3 part of IC4 buffer the Z8 lines onto the ARCbus to protect the Z8 and increase the bus driving capability. They are permanently enabled, but IC2 only reads in (B to A) for data reads above %8000 that do not access the PIO.

IC13 is an 8255 PIO which has 24 I/O lines configurable as either input or output. The 24 lines are arranged as three 8-bit I/O ports, ports A, B, and C. The memory map shows the positions of these ports and of the control register which configures them. The PIO has three functions; it can drive (via the 16- pin header P7) the EPROM programming socket (IC16), it can be a general purpose I/O device on connector P5 with IC14 and 15 acting as buffers, or it can take signals translated from RS232 levels by IC11 and 12 via jumpers L2 and L3.

The EPROM programming voltage is generated by TR1, 2 and 3, which regulate the 28-35V input into connector P4 from an external power supply to either 25V or 21V depending on header configuration. This supply is switched by bit 7 of Port C of the 8255 PPI going high, and LED D3 comes on when this bit is high.


3. Links And Options

Link positions

There are link options to:

The jumper area near P1 contains links L5, L6, and L7 (used to set RAM and EPROM sizes), and L4 which selects the source of RAM power. Jumper L8 (between IC4 and IC9) must also be changed if RAM size is to be altered.

Link areas 2 and 3. Extra RS232 receivers

If links L2 and L3 are made, and PPI port C bits 4-7 are set up as inputs, then extra receivers to the RS232 connector can be used. Note that EPROMs cannot be used if these links are made.

Link area 4. RAM Power
L4

Power from +5V line (standard configuration)

===
o-o
 \ 
  o
Power from Arcbus and PL1 connector standby line
===
o-o
 \ 
  o

Link areas 5 and 6. EPROM size
  L5 L6
2K EPROMs type 2716
===
o o
 /
o o
===
  o
 /
o o
4K or 8K EPROMs type 2732 or 2764

(standard configuration)

===
o o
 /
o o
===
  o
 /
o o
16K EPROMs type 27128
===
o o
 /
o o
===
  o
 /
o o

Link areas 7 and 8. RAM size
  L7 L8
2K RAMs (default configuration)
===
o o
 /
o
  o

o-o
===
8K RAMs
===
o-o

o
  o
 /
o-o
===

Link areas 9 and 10. PPI buffer direction

Links L9 and L10 allow IC15 and 14 respectively (the PPI buffers) to be either input, output, or have their direction controlled by PPI port C bits 0 and 1 respectively. Note that EPROM can only be programmed if the buffers are outputs or IC14 and 15 are removed.

IC15 [14] is an output driver (standard configuration)
L9 [L10]
===
o o
  |
o o
===
IC15 [14] is an input receiver
L9 [L10]
===
o o
  |
o o
===
IC15 [14] is under PPI port C bit 0 [1]
L9 [L10]
===
o o
  |
o o
===

4. Memory Map

  Start Contents
0K 0000 Z8 internal registers and BASIC interpreter ROM
2K 0800 Not used
4K 1000 EPROM (IC7)
16K 4000 2K RAM (IC5) S4 on 8K RAM (IC5)
4800 2K RAM (IC6) S4 on
  Empty

2K RAMs are not echoed

 
6000 8K RAM (IC6)
 
 
 
32K 8000 Empty
33K 8400 Empty
34K 8800 Used by ARCbus peripherals
63K FC00 Baud rate switches (Read Only)

Note:

  1. EPROMs of less than 16K are aliased within the EPROM memory space.
  2. EPROMs of 2K, 4K, and 8K have their locations zero staring at %1000 in the memory map. Only 12K of a 16K EPROM can be accessed, however, and locations accessed are not in the same order as they occur in the EPROM. This is because address lines A12 and A13 are swapped over so that an 8K EPROM can be accessed normally. If a 16K EPROM is considered as four 4K blocks, labelled 0, 1, 2, 3 with 'normal' address wiring, the order that these sections are accessed by the ARC40, with 'swapped' address wiring, is 2, 1, 3 with 0 not accessed at all. It is possible to access a 16K EPROM in the 'correct' order by unswapping the address line. To do this, open link L5 and cut the track connecting to pin 2 of the EPROM, and wire pin 26 to A13 and pin 2 to A12. Block 0 can be accessed if the PAL is changed.

5. Using The ARC40

Let us assume that you wish to develop a program in BASIC and put it into the EPROM, so that ARC40 will execute the program on power-up. We will use a 4K EPROM, because that is how the ARC40 is initially configured.

In outline, you enter the program into RAM and test it, debugging and editing as necessary, then use the EPROM programming routine in the monitor to copy it into a new EPROM, then replace the monitor EPROM with the one you have just created. It really is very simple. Now we go through the process in more detail.

  1. Apply power

    The ARC40 needs +5V at about 0.5A, and +12V and -12V at about 20mA each for the RS232 buffers. You can connect this either to the 5 in connector marked P1, or via the backplane (see Appendix C for a pin list).

    DO NOT plug your power supply into the 5-pin connectors marked RS232. To program an EPROM , an additional supply of +28V to +35V is required. This is connected to the 2-pin connector P4, where pin 1 is the positive voltage and pin 2 is ground. Arcom do manufacture a power supply that produces all these voltages.

    NOTE: MAKE CONNECTIONS TO THE BOARD, AND TO P4 IN PARTICULAR, WITH ALL POWER SUPPLIES SWITCHED OFF.

  2. Establish communication with your terminal

    Your terminal should use RS232 with no handshaking. Three wires connect it to the ARC40: data in, data out and ground. Note that there are two 5-pin RS232 connectors on the ARC40, labelled RS232 A and RS232 B. Use the one marked RS232 A for the terminal. Pin 1 is marked and this is data in (i.e. from the terminal), pin 2 (next one along) is signal ground and pin 3 is data out (i.e to the terminal). The next two pins are -12V and +12V. On a D25 connector (on a terminal) pin 2 is signal out, pin 7 is ground and pin 3 is signal in (to the terminal) (normally).

    Having wired up a connector, you should set the baud rate. The three dual-in- line switches S1,2 and 3 do this. Section 4 has the details about switch settings and baud rates. For example, 1200 baud is set by S1 down (off), S2 up (pushed in direction of arrow), S3 down. The computer determines the baud rate by reading the switches at power-up on after a reset. The terminal and computer baud rate must match. If the terminal does not display the character that you typed at the keyboard, a mismatch in the baud rate is the probable cause.

  3. Hit reset

    The reset switch is the flat push-button switch near the RS232 connectors.

    On a reset, the ARC40 reads the monitor EPROM and displays a menu of possible actions, as follows:

    1. new program

      This puts the start-of-program pointer to the start of RAM, so that you can enter a new BASIC program.

    2. old program

      If you have already entered a program, and wish to preserve it after a reset, use this option.

    3. copy monitor

      This copies the monitor from EPROM into RAM, so that you can add your own commands, or use bits in your own programs.

    4. run in EPROM

      If you wish to use the monitor facilities, use this option.

  4. Enter a new program

    Use option 1 on the menu, and type in your program. A suitable test program might be:

     1 INPUT A,B 
    10 PRINT A*B
    20 GOTO 1 

    When you have debugged and edited the program (not a difficult job for that example), you can put it into an EPROM.

  5. Get back into the monitor

    To do this you have to set the start-of-program pointer (register pair 8) to the start of the monitor. Note that the symbol used by Zilog to denote a register pair is the up-arrow symbol. Because the monitor start is at %1020, to set the pointer, type:

    ^8 = %1020

    Typing:

    LIST

    will now list the monitor routines.

  6. Program an EPROM

    The 5V power line to the EPROM programming socket is switched by S4, on the DIL switch. It should be set "down" (i.e. off) before inserting or removing an EPROM from the socket, and set "up" in the direction of the arrow, before programming or reading an EPROM in the socket.

    You need an erased 2764 EPROM. Note that this is a 28-pin device. Some EPROMs (e.g. 2716, 2732) have only 24 pins, and these devices should be placed in the "lower" 24 pins of the 28-pin ZIF socket, furthest away from the lever. Orient the EPROM so that the end with the notch is nearest the lever. Turn S4 on and ensure +28V to +35V is on the board.

    The EPROM programming routine is at line number 30060, so to program the EPROM, type:

    GOTO 30060

    and answer the question about EPROM size by typing:

    2

    for an 8K EPROM. Your BASIC program starts at the start of RAM, which is at %4000, and the program end is recorded in register pair ^4, plus a stack reserve of 32 bytes (see pages 6-11 and 6-12 of the BASIC/DEBUG manual for more information on the registers), so the answer to "RAM start address?" is

    %4000

    and to "end address?" is:

    ^4-32

    and to "EPROM address?" is:

    %20

    This latter response is because we want your program to run at the autostart address of %1020 (see the BASIC/DEBUG manual page 6-2); the EPROM locations for programming are referred to the start at the EPROM, and the EPROM, when plugged into the monitor socket, starts at %1000, so the autostart location is %20 bytes up from the start of EPROM. The EPROM will now be checked for erasure, programmed and verified. The red LED comes on when the 25V driver is enabled - note that this does not prove that you have actually supplied programming volts to the board. If the EPROM programs correctly, no error message is given. If you get an error message before the LED comes on, it means that the EPROM has not been fully erased, and you may either try to program it (it may not program correctly), or abandon the attempt. After programming, which may take some while for a large EPROM, the EPROM is checked, and any discrepancies between the EPROM contents and the corresponding memory contents displayed on the terminal.

  7. Turn off power

  8. Test your new EPROM

    Remove the monitor EPROM and replace it with the one you just programmed - check the orientation and the location in the socket. Turn on power and your new program should start running

  9. Altering a Program in EPROM

    It is possible that your new program will require modification once it is in an EPROM. Unfortunately you cannot usually reprogram an EPROM until it has been erased, so you must copy the EPROM into RAM, modify the program in RAM and program a new EPROM.

    There is a monitor utility for copying EPROM's into RAM and setting BASIC pointers so that the program works as if it had been typed in. Type:

    GOTO 30090

    and answer:

    %20

    for the EPROM start address, then:

    100

    (say) for the end address, and:

    4000

    for the address in RAM. The monitor will then return to the menu, and you type:

    2

    for an old program. You can then edit the program in RAM and produce another EPROM.


6. Baud Rates

Switches S1,S2 and S3 are read by the Z8671 at power-up to determine the UART baud rate. This may be subsequently changed by altering the value in register 244. The table below shows the switch settings and value in register 244 for various baud rates, assuming a 7.3278MHz crystal.

Baud	Switch (U = switch up = logic low, - =switch down)
Rate	setting
	S1,2,3	Value in register 244
110	U - -	175
150	U U U	128
300	- - -	 64
1200	- U -	 16
2400	U U -	  8
4800	- - U	  4
9600	U - U	  2
19200	- U U	  1

The baud rate may be changed after initialisation by altering register 244. For example, the command:

@244=16

changes the baud rate to 1200. If you do this as part of your program in EPROM, switches S1,2 and 3 can be used as an input device.


7. EPROM Programming and Reading

There is an EPROM programming routine in the monitor for programming 2,4,8 or 16K EPROMs. It verifies that the EPROM is erased (i.e. contains %FF), programs it and verifies the programming. The operation of programming an EPROM consists of sending an address in the EPROM as one byte on Port B of IC13 and some bits (depending on EPROM size) on Port C; the data byte is set up on Port A, and a programming pulse sent via a bit on Port C. Programming volts are switched on by another Port C bit at the start of programming.

In order to cope with different types of EPROM, a header socket (P7) is provided into which the correct header plug should be inserted.

Pin 1 of the header socket is next to the 'P7' on the board.

NOTE: YOUR EPROM WILL PROBABLY BE DESTROYED IF YOU USE THE WRONG HEADER PLUG.

Three different header plugs are required, as shown here. The 2732 header plug is supplied with the board. An Intel (21V) 2732 requires that pins 6 and 10 of the header plug be connected together.

  2716
(25V
VPP)
  2732
(25V
VPP)
  2764 &
27128
(both
21V
VPP)

pin 1
   U
o     o

o-----o

o   /-o
   / 
o-/   o
|
o     o

o   /-o
   / 
o-/   o

o-----o
 
   U
o     o

o-----o

o-----o

o-----o

o     o

o   /-o
   / 
o-/   o

o     o
 
   U
o     o

o-\   o
   \
o   \-o

o-----o

o     o

o-----o
      |
o     o

o     o

There is also an EPROM reading routine in the monitor which allows you to read an EPROM into RAM, so that the BASIC may be edited or amended, then copied into another EPROM. You must have the correct header plug to be able to read back successfully.


8. Parallel I/O

There are two ways to perform input/output operations. when you are not programming EPROMs the PPI (IC13) may be used as a general purpose parallel I/O device, and the Z8 itself has two 8-bit I/O ports (ports 2 and 3). The Z8 ports must be set up to have the correct characteristics. The Z8 Technical Manual gives full details, but the registers involved are shown in Appendix D. Register 246 defines Port 2 bits as either input or output (0=output for the corresponding bit) and register 247 bit 0 defines Port 2 pull-ups as either active or open-drain (1=active), and sets up Port 3 functions as inputs and outputs, serial I/O, handshakes or timer I/O. Note that these registers, like some other Z8 registers, are WRITE ONLY, and their contents cannot be read back. Once ports are set up, for example by:

@246 = 0
@247 = %41

to make Port 2 all outputs and Port 3 inputs and outputs, they are accessed by reading from or writing to their port numbers. For example:

@2 = 10%

will set bit 4 of Port 2 high, and:

F = @3

will read the Port 3 (lower nibble) contents into variable F. Note that bit 0 will be the serial input line.

The PPI is memory-mapped and is quite simple to use. To send a bit pattern to a port, you write to the memory address of that port. To read a bit pattern from a port, you read from the memory address of the port. The address of Port A is %F8000, Port B is %F900 and Port C is %FA00. In addition there is the control register at %FB00. The control register is written to in order to define which ports are input and which are output. To correspond with this, the buffers IC14 and 15 must be set to the appropriate direction, otherwise the drivers in the PPI will be shorting out those in the buffers.

In other words, each link setting (L9 and L10) corresponds to a unique port configuration. The port configurations are set by writing a control word to the control register at %FB00, and a table of allowable control words and their corresponding directions is shown below:

Control Word (hex) Port A
%F800
Port C
%FA00
Port B
%F900
80 out out out
82 in
89 in out
8B in
90 in out out
92 in
99 in out
9B in

Note that Port C can also be configured to be half and half output. The Port C directions are controlled by bit 3 (upper nibble) and bit 0 (lower nibble) of the control register. Setting the bit high makes the corresponding half of Port C input, and vice versa.

On reset, IC13 is set with all ports as input, and it is recommended that you change links in this mode (%9B as the control word) or with the power off.

As an example, if we wish to have 8 output lines on Port A, 8 input lines on Port B, the upper half of Port C input and the lower half or Port C output, the control word is %8A and link L9 is:

o o
 /
o o

The control word is set by typing:

@FB00= %8A

and Port A can be controlled by:

@F800 = %80

to set the MSB, and so on. Port B is read, for example into variable X, by typing:

x=@%F900

and Port C is read by:

Y=@%FA00

Note that only the four MSBs are meaningful in this case. Bit 1 of Port C can be set by:

@FA00 = 2

9. Serial I/O

The main serial I/O port is the 5-pin connector RS232A. This buffers the Z8 serial lines with IC11 and 12, and has +12V and -12V outputs. Diode D1 is in series with IC11 output so that TTL level signals can also be accepted via the bus D7.

The RS232B connector has two buffers on IC12 permanently wired, and input buffers can be connected if links L2 and L3 are used. In this case, the most- significant bits of Port C of IC13 must be configured as inputs and EPROMs cannot be programmed.


A. Component List

Semiconductors

IC1		Z8761
IC2,3		LS245
IC14,15		LS245
IC4		LS367
IC5		6116
IC6		6116
IC7		EPROM
IC8		LS04
IC9		PAL10L8
IC10		LS373
IC11		1489
IC12		1488
IC13		8255
REG1		LM317
TR1,2		BC182
D1,2,6,7	IN4148
D3		LED

Resistors

R1		1k0
R2,3,5,8	4k7
R4,6		220R
R7		47k
R9		3k6
RN1		4k7 x 5 SIL
RN2		4k7 x 8 SIL (only on ARC42 with Z8681)

Capacitors

C1,5		4.7 µF
C2,3		6.8 pF
C4		100 nF 50V
C6	
C7,8		100 nF

Miscellaneous

XL1		7.3278 MHz crystal

B. Connections

ARCbus

PL1. Power connector 5-pin Berg

1 o +5V 
2 o GND Mating connector Berg part number
3 o VSBY 65240-005 (shell)
4 o -12V 76357-401 (crimps)
5 o +12V 

RS232A. Serial I/O connector 10 way ribbon-cable

1 o RS232 data in
2 o GND 
3 o RS232 data out
4 o -12V
5 o +12V

RS232B. Serial I/O connector 10 way ribbon-cable

1 o RS232 data in (port C bit 5)
2 o GND 
3 o RS232 data out (port C bit 3)
4 o RS232 data out (port C bit 2)
5 o RS232 data in (port C bit 7)

PL4. VPP EPROM programming voltage

1 o 28V to 35V
2 o GND

PL5. Parallel I/O connector

GND  1 o o 2  PB0
PB1  3 o o 4  PB2
PB3  5 o o 6  PB4
PB5  7 o o 8  PB6
PB7  9 o o 10 PC0
PC1 11 o o 12 PC2
PC3 13 o o 14 PC4
PC5 15 o o 16 PC6
PC7 17 o o 18 PA0
PA1 19 o o 20 PA2
PA3 21 o o 22 PA4
PA5 23 o o 24 PA6
PA7 25 o o 26 GND

C. Specification


D. Example Program


E. Circuit Diagram


F. Z8 Data

Zilog Z8 data


G. Software

ABC1 BASIC Compiler

Z8 Basic Compiler in EPROM Arcom's impressively compact BASIC Compiler accepts a standard Z8 BASIC program, producing an equivalent machine code version. This performs the same tasks as the original, interpreted BASIC, but more than thirty times faster, depending on the program.

ABC1 will accept almost all Z8 BASIC programs without modification and provides some useful and relevant extensions to Z8 BASIC, such as FOR-NEXT loops, a logical OR function, input/ output redirection and asynchronous scanning for external events.

The compiler is very easy to use. A complete program can be compiled from a single command and a second command runs the code instantly. Compilation itself is fast, typically at the rate of 10 lines per second, and comprehensive error checking is included. Any lines containing errors are listed, together with an indication of the error location within the line. In the case of a run-time error, an explanatory message is displayed.

The compiler is extremely economical in memory usage, consisting of 4.3K of Z8 machine code. Only 2.2K of this has to be present when a compiled program is being run, however. ABC1 is supplied in an 8K EPROM, so the extra space has been used for helpful utility programs, including a simple, but effective, line editor. Also included is an enhanced monitor configured for an ARC40 computer so that programming the machine code and initialisation routines into the target EPROM is almost automatic. The compiler requires a fully-functioning Z8 processor, so a test for the presence of such a device is built-in.

ABC1 makes Z8 programs easier to write and debug, and very much faster to execute. It allows the engineer to try out an interpreted version of the program first, before moving to a fast, ROM-able version of the code.

Click here for firmware.

RZ8 and XZ8 Assemblers

Zilog's Z8 BASIC/DEBUG is powerful and fast enough for many control program tasks. And with Arcom's compact Z8 BASIC compiler, ABC1, execution speed is greatly improved.

However, some users will have requirements that can be met only by the full flexibility of machine code. For these specialist uses, Arcom offers two Z8 assemblers: RZ8, which runs on the Arc computer itself; and XZ8, a cross-assembler which produces machine code for the Arc from a separate (CP/M) development computer.

The two assemblers differ in speed, power and ease of use. For example, if short interrupt service routines have to be written, then a simple, flexible assembler like the RZ8 will be just right. For more sophisticated assembly language programs, a computer with powerful utility programs can increase programmer productivity. If you have a CP/M-based machine then the XZ8 cross-assembler is the ideal development software.

The RZ8 Resident Assembler in EPROM

The RZ8 is a compact but powerful assembler which is supplied in an EPROM for use on the Arc 40-series computers. The assembler was originally developed by Zilog, whose cooperation and assistance we gratefully acknowledge. It has been extended and modified by Arcom for use on the Arc range of computers. The assembler translates lines of Z8 assembly-language source code stored in one area of memory into the equivalent Z8 machine code instruction in another area of memory. These instructions may be executed directly by the Arc or programmed into an EPROM for autostart operation. The assembler is exceptionally easy to use. You give each line of assembly language source code a line number, exactly as if you were entering a BASIC program. You can use the line numbers to edit your source code, again just like BASIC. The line numbers are also used for relative and absolute jumps. The assembler will produce executable machine code in memory from this source and check for errors. If there are problems, use the Arc's unique reset recovery system to preserve your source code so you can debug and reassemble it. Lines of assembly language source code may be freely mixed with lines of BASIC programs. BASIC programs can even invoke the assembler. The Arcom RZ8 has some important advantages over other resident assemblers for the Z8:

  1. It produces a full listing at the terminal while it is assembling so that you can see the code in hex and in assembly language.

  2. An assembly offset can be used.

  3. It will accept upper and lower case mnemonics and comments - so code can be both self-documenting and attractive to read.

The RZ8 is supplied in a 4K EPROM, which also contains an upgraded Arc monitor with demonstration programs. Because many users will already have the Zilog PLZ/ASM assembly language manual, this may be bought separately.

Click here for firmware.

The XZ8 Cross-Assembler

The ZX8 is a cross-assembler which runs on CP/M computer systems. It reads standard Zilog Z8 mnemonics from a disk file and produces a full listing and an industry-standard hex format output file. This file may be loaded into the Arc with a Z8 machine code load program, supplied as in source code form. Many pseudo-ops and mnemonics for registers are available and up to 400 labels can be used. The XZ8 runs in 8080 or Z80 CP/M systems with at least 44K of memory available.

Arcom now supply version 3.00 of XZ8. It includes several enhancements, such as the ability to mix BASIC source text with assembler code for the Zilog Z8671 in the same program. The handling of symbolic addressing has been extended, and an 'INCLUDE' facility allows source code modules from one or more separate files to be assembled as part of the main program. Supplied with the user's manual and Zilog's PLZ/ASM assembly language manual, XZ8 is available on 8" single-sided single-density disks, although other formats may be supplied to special order.


ARC40 Software Manual

Introduction

The monitor supplied with the ARC40 occupies roughly half of a 4K 2732 EPROM, the other half may be filled with user-written routines or may be occupied by an RZ8 assembler. If you wish to use the RZ8 with the ARCHO series computers, note that it is slightly different from the original RZ8, and you should order part number RZ8-4 and state which ARC40 series computer it will be used with. The monitor is written partly in BASIC and partly in assembler, and listings of both are given later in this manual. The BASIC routines are called by a GOTO to their line number: The line numbers are greater than 30000 so that you may put them at the end of your BASIC program if you wish.

The first part of the BASIC is a menu, to allow you to direct what will happen after a reset or on power-up. After that, routines are supplied for cassette operation, EPROM programming and reading, memory alteration and display.

BASIC Routines

line numbers

1 - 8 Menu

There are four possible actions you can take after a reset.

1 New program

This sets up the BASIC pointers to RAM, so that you can type in a new program, as described in the BASIC/DEBUG manual.

2 Old program

This is designed to let you preserve an existing program after a reset. It works by using a different I/O driver from normal; the program is read not from the keyboard, but from RAM, back into RAM. This sets up the BASIC pointers correctly. Once you have used this option, you can edit your BASIC program as normal, but you should note that the first line of your program will be renumbered to line 1.

3 Copy monitor

If you wish to incorporate bits of the monitor into your own program, use this option to copy the monitor into RAM, then add your program to it.

Run from EPROM

You may wish to use the monitor routines directly after a reset, so this option sets the start-of-program pointer to ROM leaves you in the monitor.

2000 - 30034 (cassette writing)

BASIC programs may be stored on cassette with the appropriate hardware, and the routine puts an ASCII character at the start of the file as an identifier. It also changed the I/O control block pointer to an I/O control block which puts out several nulls after each line, so that, on reading, the BASIC interpreter has time to store the line and update pointers.

30040 - 30041 Cassette reading

This routine gets the I/O control block back to normal, and waits for identifier character at the start of the file before reading it in.

30060 - 30089 EPROM programming

You can program 2, 4, 8 or 16K EPROMS with this routine. You have to specify the EPROM type, the start address of the data (usually in RAM) that you wish to program, the end address, and the start location in EPROM. Note that the start location in EPROM is referenced to the start of EPROM, and EPROMs are memory-mapped to start at %1000, 30 that if you wish to create an EPROM to run at the autostart address of %1020, the start address in EPROM should be %20 here.

30090 - 30093 EPROM reading

It is possible to read an EPROM put in the programming socket back into RAM, so that the program can be modified and put into another EPROM. This routine asks for EPROM size, start location of data in EPROM, end location and start address in RAM to put the data into. When it has copied the EPROM, it returns to the menu. Note that you should not copy an EPROM larger than your available RAM, otherwise you will overwrite the stack and crash the program.

30200 - 30201 Memory modification

This routine displays sequential memory locations in hex, and waits for you to type either a new data byte (prefixed by '%' if in hex) or the character 'n' if you do not wish to change the location. It may be aborted by typing an illegal number (e.g. the character '.')

30210 Memory examination

This routine displays memory in both hex and ASCII given an initial address. It may be paused and restarted by typing control-S', and stopped by an 'ESCAPE' character.

A. Cassette Reading and Writing:

If the monitor routines are not in RAM, the following sequences will read and write labelled files.

(a) Writing

Enter the following (where (CR) = carriage return)

^28=%17F0 (CR)
"$n":list (CR)

Switch recorder on before second (CR). (n represents the file identification character).

(b) Reading

Enter the following

^28=39	(if this has been previously changed) 
go@%1700, &nn

(where 'nn' is the hex equivalent of the file identification character, for example %32 for file number 2).

B. EPROM routines

Machine code has been used to speed up the checking and copying of EPROMS. (For example the routine at 30090 will read a 4K EPROM into RAM in less than a second). When using the EPROM routines, note that the "EPROM addr.' and 'EPROM start addr.' parameters are relative to the start of the EPROM. For example, this latter parameter should be 32 if you are programming an EPROM to run at the autostart address of %1020.

C. Memory display

The routine at 30210 displays memory in hex with ASCII equivalents. The listing can be halted using CNTL S' and resumed by hitting any other key. The listing can be aborted by entering "ESCAPE', either before or after a CNTL S'.

D. Memory modify

The routine at 30200 allows individual memory locations to be examined and altered. To leave a location unchanged enter N (CR) (or n (CR)). To abort enter .(CR) (or other non-alphanumeric character).

E. Loader routine

The routine at 30300 jumps to a program to load Intel format hex files Hata memory. This is intended for use with the XZ8 cross-assembler.


...

Modification Sheet 003
number 003

Date
1984.03.01

refers to:

Board ID ARC 40 V2 and later circuit diagram and parts list.

A: Programming Voltage Circuit

The programming voltage regulator section has been altered to improve stability. A programmable regulator is used instead of the Zener Diodes. The circuit diagram is shown below.

ARC 40 CIRCUIT DIAGRAM AMENDMENT

PARTS LIST AMENDMENT

R6	220
R6B	S.O.T.
R7	47k
R8	4k7
R9	3k6
R10	750
TR2	BC182
D6	1N4148
REG1	LM317LZ
C4	100N	50V
   
DRAWNTRACEDCHECKEDAPPROVEDDATESCALE
8AZ

DRAWING No.

MS003/A