The Signetics 2650 - The MESSUI Place
The Signetics 2650 - The MESSUI Place
The Signetics 2650 - The MESSUI Place
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
0111■10111,<br />
emeMemisallw<br />
<strong>2650</strong> SOFTWARE PACKAGE RECORDING<br />
|t is called by typing<br />
G1100sAAAAsBBBBsCCCCr, where<br />
AAAA and BBBB are the start and finish<br />
respectively of the present memory<br />
range occupied by the block to be<br />
moved (i.e., the source range), and<br />
CCCC is the start of the memory range<br />
to which it is to be moved (i.e., the<br />
destination range).<br />
After moving the data, the block<br />
move routine automatically returns<br />
control to PIPBUG. <strong>The</strong> routine was<br />
written by Ian Binnie.<br />
<strong>The</strong> accompanying block search<br />
routine is designed to search through a<br />
designated memory range for a<br />
specified pattern in two adjacent<br />
locations. Wherever the pattern is<br />
found, the routine prints out the address<br />
of the second byte of the pattern.<br />
It may therefore be used to find specific<br />
instructions in a program, or data in a<br />
table. It can search any desired memory<br />
range, even a range which flows over a<br />
<strong>2650</strong> page boundary.<br />
<strong>The</strong> block search routine is designed<br />
to be used in conjunction with the<br />
block move routine, and this is why the<br />
two are combined on the record.<br />
However the two are quite independent,<br />
and may be separated if desired.<br />
As supplied the block search routine<br />
occupies 1190 — 11D7, but it is<br />
relocatable and may be moved<br />
anywhere in page 0.<br />
To call the block search routine, type<br />
G1190sAAAAsBBBBsXXXX, where<br />
AAAA and BBBB are the start and finish<br />
respectively of the memory range to be<br />
searched, and XXXX is the two-byte<br />
pattern to be found. <strong>The</strong> routine will<br />
print out the locations at which it is<br />
found, and then return control to<br />
PIPBUG. <strong>The</strong> block search routine uses<br />
PIPBUG subroutines STRT, GNUM,<br />
CRLF and BOUT. It was written by Craig<br />
Barratt.<br />
4. TAPE VERIFIER<br />
After you have dumped a program<br />
from your system's memory onto paper<br />
tape or cassette using PIPBUG, this<br />
verifier program lets you check that the<br />
tape or cassette has a faithful copy. It<br />
does this by reading the tape or<br />
cassette, and comparing it with the<br />
original still residing in the system<br />
memory. If there are any errors, the<br />
verifier program will type out an appropriate<br />
message. Otherwise it will<br />
type out "TAPE OK".<br />
<strong>The</strong> verifier checks for both address<br />
and data BCC (block control character)<br />
errors on the tape or cassette, as well as<br />
for data byte errors. Currently the<br />
%erifier occupies memory locations<br />
1360 — 13F3 inclusive. However it may<br />
be moved to any desired part of page 0<br />
by modifying the contents of the instruction<br />
bytes currently in addresses<br />
13B6 and 13B7. <strong>The</strong> five least significant<br />
bits of the byte in the first location and<br />
the full byte in the second must correspond<br />
to the address of the byte SIX<br />
BYTES after the second of the two<br />
bytes, for correct printout of the<br />
verifier messages.<br />
Thus currently these bytes are 37 and<br />
BD, corresponding to address 13BD. If<br />
the verifier were moved to occupy 760-<br />
7F3, you would thus need to change the<br />
contents of 7B6 and 7B7 to 27 and BD<br />
respectively. If it were moved to occupy<br />
500-593, the contents of 556 and<br />
557 would need to be changed to 25<br />
and 5D respectively. Note that the sixth<br />
least significant bit of the first of the<br />
two bytes is always set; this is for correct<br />
indexing.<br />
To use the verifier, simply call it by<br />
typing G1360r. <strong>The</strong>n feed in the tape or<br />
cassette, as if you were loading it. Note,<br />
however, that for correct operation the<br />
original program on the tape or<br />
cassette must still be resident<br />
. .<br />
in the<br />
system memory. <strong>The</strong> verifier will either<br />
type out a message as soon as it finds an<br />
error, or will give the "TAPE OK" signal<br />
at the end of the tape. After giving a<br />
message the verifier returns control<br />
back to PIPBUG.<br />
<strong>The</strong> verifier uses PIPBUG subroutines<br />
CRLF, CHIN, BIN and COUT. It was<br />
written by the author.<br />
5. DISASSEMBLER<br />
This program may be used to examine<br />
a program or part of a program<br />
in your system's memory, and produce<br />
both a hexadecimal listing and a<br />
reconstruction of the program in<br />
mnemonic or assembly language. This<br />
allows convenient analysis of programs,<br />
and is also of value in tracking down<br />
subtle logic errors, errors in program<br />
entry and errors in calculating relative<br />
addresses and PC-relative branches.<br />
Not all of the codes in the <strong>2650</strong> instruction<br />
set are translated into<br />
mnemonic form by the disassembler;<br />
some infrequently used codes are ignored.<br />
However all commonly used<br />
codes are translated, and absolute ad-<br />
dresses are calculated for relative addressing<br />
instructions. This allows very<br />
convenient program analysis. However<br />
please note that the program does not<br />
calculate the absolute address correctly<br />
for relative indirect addressing instructions<br />
which are "forward referencing"<br />
— i.e., those which reference higher<br />
addresses.lt does calculate the correct<br />
address for those which are backward<br />
referencing.<br />
<strong>The</strong> disassembler listing is 31<br />
characters wide, making it suitable for<br />
use with almost every kind of terminal<br />
and printer. It occupies the memory<br />
range OF00 — 1082, and is not easily<br />
moved.<br />
To use the disassembler, call it by typing<br />
GFOOsAAAAsBBBBr, where AAAA<br />
and BBBB are the start and finish of the<br />
range in memory occupied by the<br />
program or section of program to be<br />
disassembled. For long programs, the<br />
disassembler will pause after listing<br />
about 64 lines to allow manual form<br />
feeding. To ,continue the listing, type<br />
any character on the terminal<br />
keyboard. Control is returned to<br />
PIPBUG at the end of the listing.<br />
<strong>The</strong> disassembler uses PIPBUG subroutines<br />
STRT, GNUM, BOUT, AGAP,<br />
CRLF, CHIN, COUT and FORM. It was<br />
written by Ian Binnie, with<br />
modifications by the author.<br />
6. TAPE MEASURE<br />
If you acquire a program on paper<br />
tape or cassette in <strong>Signetics</strong> Absolute<br />
Object Format, it is usually easy enough<br />
to feed it into your system and try it out.<br />
However in order to list it or disassemble<br />
it for analysis, one needs to know its<br />
length or the range it occupies in<br />
memory. This program is designed to<br />
read programs stored on paper tapes or<br />
cassettes, and print out the memory<br />
range of each block. It prints out this<br />
information at the end of the tape or<br />
cassette, as a small table having one line<br />
per block.<br />
<strong>The</strong> program occupies the range 440<br />
4FE, and is not easily relocated. It<br />
also requires RAM buffer area above<br />
4FE, for storage of block start and finish<br />
addresses during reading. Four bytes of<br />
storage are required for each block on<br />
the tape to be measured. To use the<br />
program, simply call it by typing G440r,<br />
ELECTRONICS Australia, April, 1978 83