© Arcom Control Systems Ltd 1983 |
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. |
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.
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
(
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.
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.
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.
L4 Power from +5V line (standard configuration) |
=== o-o \ o |
Power from Arcbus and PL1 connector standby line | === o-o \ o |
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 |
L7 |
L8 |
|
2K RAMs (default configuration) | === o o / o |
o o-o === |
8K RAMs | === o-o o |
o / o-o === |
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 === |
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) |
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.
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.
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.
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:
new program
This puts the start-of-program pointer to the start of RAM, so that you can enter a new BASIC program.
old program
If you have already entered a program, and wish to preserve it after a reset, use this option.
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.
run in EPROM
If you wish to use the monitor facilities, use this option.
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.
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.
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.
Turn off power
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
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.
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.
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.
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.
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
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.
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
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)
C1,5 4.7 µF C2,3 6.8 pF C4 100 nF 50V C6 C7,8 100 nF
XL1 7.3278 MHz crystal
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
1 o RS232 data in 2 o GND 3 o RS232 data out 4 o -12V 5 o +12V
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)
1 o 28V to 35V 2 o GND
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
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.
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 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:
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.
An assembly offset can be used.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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 '.')
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 |
refers to: Board ID ARC 40 V2 and later circuit diagram and parts list. |
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 AMENDMENTR6 220 R6B S.O.T. R7 47k R8 4k7 R9 3k6 R10 750 TR2 BC182 D6 1N4148 REG1 LM317LZ C4 100N 50V |
|||||
DRAWN | TRACED | CHECKED | APPROVED | DATE | SCALE |
8AZ |
DRAWING No.MS003/A |