13.02.2013 Views

The Signetics 2650 - The MESSUI Place

The Signetics 2650 - The MESSUI Place

The Signetics 2650 - The MESSUI Place

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!