Processor Tech Access, Vol 1, Number 1 Access_v1n1 Access V1n1

User Manual: access_v1n1

Open the PDF directly: View PDF PDF.
Page Count: 12

DownloadProcessor Tech Access, Vol 1, Number 1 Access_v1n1 Access V1n1
Open PDF In BrowserView PDF
Published by Wible/Rampton Advertising, San Francisco. Volume One, Number One, February 1977

75C per issue

A Letter from the Editor
"The flowers, the gorgeous, mystic multi-colored
flowers are not the flowers of life, but people, yes
people are the true flowers of life: and it has been a
most precious pleasure to have temporarily strolled in
your garden."
Lord Buckley

No, this isn't a poetry journal or
philosophical tract, but we do feel that Lord
Buckley elucidates the concept behind the
Processor Technology newsletter: its contents
will be the kind of information that allows you
to expand the creative applications of your
personal computing system.
ACCESS is dedicated to the creation of a
personal dialog between us at PTC and you, the
people using our products, because we believe
that it's important for you to understand your
present system well enough to use it effectively,
before you become trapped in the "bigger
means better" syndrome.
Hence there will be no advertising of any
kind in ACCESS, and no thinly disguised
pitches aimed at getting you to part with your
hard earned money for the unneccessary
duplication of existing hardware.
Each issue will contain articles,
engineering/application bulletins, and software
(PROGRAM) listings which we think will help
you get more fun out of owning your computer.
All we expect from you in return is what's
known in technical and psychological circles as
feedback. If you have devised a neat hardware
modification or written a nifty program, send it
to us and you'll get no financial remuneration.
You'll just get the glory of seeing your name in
print. Very spiritual, eh what?
Aram Attarian II

Subscription Information
ACCESS will be published every six weeks.
This first issue is being sent free to all of our
customers. If you like what you see, we hope
you'll send us $4.00 for a year's subscription so
we can keep the info coming. Write to us at
Processor Technology, 6200 Hollis Street,
Emeryville, CA 94608.

One to One Communication
Open two-way communication is our goal,
and it would be great to have unlimited time to
rap with you over the phone. But we can't
manage that logistically, so we are instituting
procedures that will get your questions
answered efficiently, without eliminating the
personal touch.
You can get through to our engineers and
technical staff any time between 9:30 and noon
or 1:30 and 4, Monday through Friday. The
number is (415) 652-8080. They'll try to
answer your technical questions and provide
more detailed product information than you
may glean from our literature. It helps a lot if
you think out your questions before you call,
maybe make a few notes. It helps, too, if you
have the manual and/or equipment handy to
the phone. The easier it is for you to figure out
exactly what we're talking about (and vice
versa), the more help we can give in one phone
call and the more phone calls we can handle.
We'll also be happy to answer your questions if
you drop us a letter.
There are two or three situations in
which calling us isn't the fastest way to get
help. If you have a problem with a Processor

Technology product which you purchased
from a local dealer, try your dealer first.
They're all authorized to service the products
they sell, precisely because they can give you
faster and more personalized service than
anybody can by mail. Our dealers all have
diagnostic tapes available now, so if you need
a PTC product tested it can be handled on the
spot.
If you need a defective part replaced,
just mail it to us with a note of explanation.
There's nothing we can do about it over the
phone anyway, so you might as well save
yourself the time. (Naturally, it helps if your
explanation is as clear and concise as
possible. but we can't all he Hemingways.) If
you need service that isn't covered by your
warranty, please enclose a check for the
$20.00 minimum service charge. If the cost
exceeds that (heaven forbid!) you will be
notified before we proceed with the service.
If you do send in one of our products for
repair, please send only the defective board.
For obvious reasons, we cannot be
responsible for the care and feeding of your
monitors, keyboards or other products from
other manufacturers.

MATCHMAKING-Software Division
Since most important programs are written
for a particular system, modifications are
sometimes in order to improve compatibility
with your system. We'll be passing on more
good ideas as we come across them; here are
two dealing with MITS BASIC and the VDM.
MITS 12K Extended Disk and the VDM
If you don't have a 3P+S interface, you can
still use the BASIC program in your VDM
manual to link MITS 12K Extended Disc to
your VDM driver. Simply change these six
lines in the listing of VDM-1 to BASIC link
appearing on page AV-18 of your VDM
manual, and then run the program as explained
there. Change the statements to read as
follows:

0106 FOR Y=L TO L+419
0140 POKE G,195:POKE G+1,0:POKE G+2,P:POKE G+3,0
0160 DATA195,151,1001,195,156,1001,245,229,213,197
0162 DATA205,58,1000,193,209,195,147,1001,245,58
0232 DATA0,0,6,225,241,193,201,254,26,195,142
0234 DATA13,254,127,202,142,13,195,46,1000

MITS 8K or 12K BASIC and the VDM
If you have I/O ports that are assigned 20 and
21 instead of 0 and 1, you'll need to make five
statement changes in the VDM-1 to BASIC
link program in your VDM manual. The
listing appears on pp. AV-17 to AV-19 of the
manual, and should be modified as follows:
0078 IF A=219 AND 11=16 GOTO 92
0080 IF A=219 AND B=17 THEN I=K:GOTO 106
0152 DATA219,255,31,210,13,1000,219,16,230,2000
0224 DATA201,219,16,230,6000,201,58,140,1001,254
0228 DATA201,219,17,230,127,254,1,202,46,1000

MATCHMAKING-Hardware Division
When you're combining equipment from
different manufacturers, optimum
performance often depends on specific
information about the idiosyncracies of
their connections. Owner's manuals
can't cover every permutation and
combination, so think of this feature as a
running supplement that gets down to
cases.
3P+S and the OP 80A
We've had a lot of inquiries about using the
OP-80A high speed manual punchpaper
tape reader with the 3P+S, so we asked
Oliver Audio Engineering for the straight
scoop on interconnecting it with the 3P+S
interface. Note that the OP-80A
acknowledge line must be programmed for
a negative true (ack) signal. We've also
heard from many of our customers that the
use of black tape and rolled tape (instead of
fanfold) produces more accurate data
transfer, using the OP-80.

PT 4KRA Memory Boards and the
Motorola M6800

are suggested.) Presence of
a "1" on either line will
cause the address decoder
to switch its comparison to
to the status port address.
The status port will therefore
respond to any address
whose top six bits are set by
jumpers (see your VDM-1
manual), and whose bits
8 and 9 are zero. The loworder 8 bits are not decoded
during status port response.

The following diagram should help you
expand your M6800 system with minimum
headaches. Note that the M6800 can drive 2
4KRA cards at reduced clock rates without
bus drivers; however, full buffering is
recommended.
CONNECTING PROCESSOR
TECHNOLOGY 4KRA MEMORY CARD
FOR USE IN MOTOROLA M6800
SYSTEMS

PWR

Externally generated signal
consisting of VMA • Φ2 • R/W

MWRITE

Inverted PWR

PDBIN

Externally generated signal
consisting of VMA • Φ2 • R/W

XRDY, PRDY Not used
Note that +8V, +16V and -16V are still required
to operate the board, and that 6800 systems
designed for all 5-volt operation may have to be
augmented. Simple unregulated supplies will
perform well, but care should be taken not to
exceed +10V on the +8V line to avoid excessive
dissipation in the +5V regulator.

3P+S/OP-80A
INTERFACE

What's the Best Monitor
for your Sol or VDM-1?

VDM-1 and the 6800 Microprocessor

Announcing the
SOL USERS GROUP!
The Sol Users Group was recently organized
by members of the Homebrew Computer
Club in Palo Alto; SUG is not affiliated in
any way with Processor Tech-nology. The
purposes of SUG are to exchange software
and other applications, and to create
standards. If plenty of interest is shown, a
Sol Newsletter will be published and sent to
members.
If you own or have ordered a Sol, send your
name, address, phone number and ideas to:
Bill Burns
4190 Maybell Way
Palo Alto, CA 94306
(Please don't call.)

Page 2

The VDM-1 can live quite happily with your
6800 if a small amount of signal processing is
performed externally.
Signals which may be directly used by the
6800 system are:
ADR0-ADR15 High-active address
DO0-DO7,
High-active data lines. They
DI0-DI7
may be connected in parallel
to form a bi-directional data
bus if necessary.
Signals which require conversion or
re-interpretation:
PSYNC
Connect to high-active VMA
(Valid Memory Address)
Φ2
Connect to Φ1 clock
Pin 4 of IC 18 Break connection to Pin 3
(74LS132 )
and connect to Pin 2
SINP, SOUT

Connect to the highestorder address bits which are
"1" when registers are
addressed. (Bits 14 and 15

That's one of the questions we're asked
most frequently. We always recommend a
black & white monitor designed for use with
closed circuit TV systems or videotape
recorders. Check your local Processor
Technology dealer for good sources; they're
up on that sort of thing.
If you want to use a regular black &
white TV, try for a solid state model with an
isolation transformer. In either case,
remember that you don't have to spend a lot
of money to get a decent picture, so let the
rest of the family enjoy that big screen super
color set.

ACCESS.

PROCESSOR TECHNOLOGY

Editor: Aram Attarian II
Publisher: Wible/Rampton Advertising,
727 15th Avenue, San Francisco, CA 94118
ACCESS is published approximately every six
weeks. Subscription rate: $4 per year, from
Processor Technology Corp., 6800 Hollis St.,
Emeryville, CA 94608.
ACCESS Copyright © February 1977 by
Processor Technology Corp. All Rights Reserved.
Material in this publication may not be
reproduced in any form without permission from
Processor Technology Corp.

Interfacing a Keyboard and VDM with ALS-8, using the 3P+S.
To get your keyboard connection up and
running, you'll need to connect 7 data lines,
the keyboard strobe, and ground to the J2
connector of your 3P+S. Figure 1 shows the
typical keyboard connections.
USING A KEYBOARD AND THE VDM
WITH THE ALS-8

The keyboard strobe. This circuit tells the
processor when a key has been pressed.
You'll need to install an additional IC
(preferably in a 16 pin DIP socket) in the
unused IC pad in the lower right corner of
your 3P+S, and connect it to pin 7 of J2. It's
used to condition the strobe. Use a 74LS109
or 74109. (Figure 2)

To wire the 74109:
1) Connect pins 2 and 3 to ground.
2) Pins 16 (VCC) and 8 (GND) are already
connected on board.
3) Connect pin 1 to pin 1 of IC 15 to provide
a pull-up connection.
4) Connect pin 5 to pin 11 of IC 15 to reset
the flip-flop when data has been accepted.
5) Connect pin 7 to a point on 3P+S leading
to J2 pin 12. This point will go low when
the strobe occurs.
6) Connect pin 4 to a point on 3P+S leading
to J2 pin 7, the point where the strobe
from the keyboard will be connected.
The data lines. Either seven or eight data
lines are used to transmit the ASCII code for
the key being pressed to the computer.
They're connected to the B port inputs of the
3P+S in the following manner:

Keyboard 3P+S J2
Signal
Connector Data Bit
Bit 1
Z
D0
Bit 2
Y
D1
Bit 3
X
D2
Bit 4
W
D3
Bit 5
V
D4
Bit 6
U
D5
Bit 7
T
D6
Bit 8*
S
D7
*Pin J2-S is left unconnected if your keyboard
doesn't have an eighth bit.
Ground, +5V, -12V. These provide power
for the circuitry of the keyboard. Ground is
simply connected to pin 12 of J2. +5V and
-12V (regulated) should be provided by a
separate power supply. Some KYBDS only
require +5V Figure 3 shows an example of
one, assembled on a small piece of perf board
and attached to the keyboard or main frame.
Jumper it to the keyboard connector.
ASSEMBLE ON SMALL PIECE OF PERF
BOARD AND ATTACH TO KYBD OR
MAINFRAME AND JUMPER TO KYBD
CONNECTOR

3) Type IODR/SYSIO/0 FE77, then hit the
return key. Again, address light A13
should blink.
4) Now hit Space, Space, Return; wait a
moment and then hit Control Z. The
screen should now be blank.
5) Hit Control S. The word SPEED? should
now appear in the lower left corner of the
screen. If it doesn't, you may have to
adjust the horizontal and vertical controls
on the VDM to get this message onto the
visible portion of the screen.
6) Type 1; you should get an automatic
carriage return, then type DUMP 0 FFFF
and hit Return. Memory will now dump
on the VDM display. You can hit the
Escape key to stop the dump.
7) Now you're ready to start programming
with the ALS-8! Try some of the
examples from the ALS-8 manual to
familiarize yourself with its operation.
Hoare's Law of Large Programs
Inside every large program is a small
program struggling to get out.

Good News for our
Customers in Europe:
VDM-1 and the European
50 Hz Standard

Jumper areas. Only two are important for
the keyboard interface: Area A must be
jumpered for address 0 (i.e., all to ground),
and Area B must be jumpered from left to
center, to set port A at 0 (status) and port B at
1 (data) to correspond to Processor
Technology software.
Testing the interface with ALS-8.
1) Turn on the computer and examine location
E000H. When you hit Run, the address lights
should look like this:
A15 A14 A13 A12 All A10 A9 A8
•
•
o
•
o
o
o •
• = Light on

o = Light out

2) Be sure the keyboard is sending upper case
characters. Type EXEC E024, then hit the
carriage return key. Address light A13
should blink instantaneously at this point.

The European television standard
maintains the same horizontal rate as the U.S.
(15,750 Hz), but it defines a raster of 625
lines at a field rate of 50 Hz. The effect is to
increase the number of scan lines on the
screen.
It's quite easy to modify your VDM-1 to
work on this standard. Simply disconnect pin
5 of IC 8 from pin 6, and reconnect it to
ground (pin 4). This increases the modulus of
the counter to 8 in the VDISP time, resulting
in 4 extra character lines (52 scan lines) on the
display. The total is now 312 scan lines per
field, the equivalent of 624 per frame.
The field rate should be close enough to
50 Hz to reduce any swim effects to less than
0.1 Hz. You may have some trouble
centering the display in the frame, because the
standoff time to VSYNC from the bottom of
the display is still on the 60 Hz standard. If
the effect is objectionable, increase Resistor
R 34 in series with the VPOS control.
Rule of Accuracy
When working toward the solution of a
problem it always helps you to know the
answer.
Sattinger's Law
It works better if you plug it in.
Page 3

Newett Awl's Choo Choo Train
Or, Idle Fantasies on a VDM Screen

0000
0000
0000
0000
0000
0000
0000
0000
0000
0001
0003
0006
0009
000B
000C
000D
000E
000F
0012
0015
0018
001A
001D
0020
0022
0025
0028
002A
002D
0030
0032
0035
0038
003A
003D
0040
0042
0045
0048
004A
004D
0050
0050
0051
0053
0054
0055
0058
0059
0059
005C
005E
0061
0063
0066
0068
006B
006E
0071
0074
0077
007A
007D
0080
0083
0086
0089
008C
008F
0092
0095
0098
009B

AF
D3
21
01
36
23
0B
AF
A8
C2
21
11
06
CD
11
06
CD
11
06
CD
11
06
CD
11
06
CD
11
06
CD
11
06
CD
C3

C8
84 01
00 08
20

09
F7
00
0F
50
2B
0D
50
30
09
50
34
04
50
3B
02
50
3C
01
50
3E
01
50
59

00
02
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00

19
36 6F
23
05
C2 51 00
C9
21
36
21
36
21
36
2A
22
2A
22
2A
22
2A
22
2A
22
2A
22
22
2A
22
2A
22
2A

A6
16
A9
07
AB
6E
66
AE
68
B0
6A
B2
6C
E5
6E
E7
70
E9
EB
72
ED
74
EF
76

04
04
04
01
04
01
04
01
04
01
04
01
04
01
04
04
01
04
01
04
01

0000
0010
0020
0030
0040
0050
0060
0070
0071
0072
0080
0090
0100
0110
0120
0130
0140
0150
0160
0170
0180
0190
0200
0210
0220
0230
0240
0250
0260
0270
0280
0290
0300
0310
0320
0330
0340
0350
0360
0370
0380
0390
0400
0410
0420
0430
0440
0450
0460
0470
0480
0490
0500
0510
0520
0530
0540
0550
0560
0570
0580
0590
0600
0610
0620
0630
0640
0650
0660
0670
0680
0690
0700

(continued on page 11)

Page 4

Once upon a time, in a curious little
place, there was a Sol system and a programmer sitting around with nothing to do. So
Newett Awl decided to tell his computer a
bedtime story, and VDM-1 helped him out by
drawing the pictures.
Try it on your system. Ol' Uncle Sol
makes a great babysitter.
TRAIN

EMPTY

.
SMO1
SMO2

.
ENGINE

XRA
OUT
LXI
XSI
MVI
INX
DCX
XRA
XRA
JNZ
LXI
LXI
MVI
CALL
LXI
MVI
CALL
LXI
MVI
CALL
LXI
MVI
CALL
LXI
MVI
CALL
LXI
MVI
CALL
LXI
MVI
CALL
JMP
DAD
MVI
INX
DCR
JNZ
RET

A
ONCE UPON A TIME,
0C8H
IN A CURIOUS LITTLE PLACE
H,SHED
THERE WAS
B,2048
..A TINY TRAIN
M,20H
..AND IT STAYED IN A
H
..TINY SHED
B
..THAT WAS ALL EMPTY
A
B
EMPTY
H,CLOUD .. EXCEPT FOR A HUGE
D,0
B,15 B
SMO1
I
D,43
L
B,13
L
SMO1
O
D,48
W
B,9
Y
SMO1
D,52
C
B,4
L
SMO1
O
D,59
U
B,2
D
SMO1
D,60
O
B,1
F
SMO1
D,62
S
B,1
M
SMO1
O
ENGIN
K
E
D
M,SMOKE
.. COUGH
H
B
.. COUGH
SMO2
.
COMING OUT OF THE STACK OF

LXI
MVI
LXI
MVI
LXI
MVI
LHLD
SHLD
LHLD
SHLD
LHLD
SHLD
LHLD
SHLD
LHLD
SHLD
LHLD
SHLD
SHLD
LHLD
SHLD
LHLD
SHLD
LHLD

H,SHED+322H A TINY LOCOMOTIVE
M,16H WITH A LITTLE SMOKESTAK
H,SHED+325H AND A LITTLE BELL
M,07H
H,SHED+327H ..AND A TINY DOME
M,6EH
CAB1
..AND A CAB
SHED+32AH WITH WINDOWS
CAB2
.. SO THAT YOU COULD
SHED+32CH SEE INTO WHERE THE
CAB3
.. ENGINEER AND THE
SHED+32EH FIREMAN SAT.
BOI1
.. IT HAD A BEAUTIFUL
SHED+361H POLISHED
BOI2
.. BRASS
SHED+363H BOILER
BOI3
.. WITH
SHED+365H THE NUMBER
SHED+367H "99" ON THE
BOI4
.. SIDE OF
SHED+369H THE CAB
BOI5
.. BUT YOU COULDN'T
SHED+36BH SEE EITHER THE
BOI6
.. ENGINEER OR THE

Ups and Downs
or How to Type in Upper
Case Only without Shifting
If you have a keyboard with both upper
and lower case operation, the frequent shifts
are a pain when you're entering alphanumeric data. Here's a simple cure that sets
data bit D5 low when a lower case alphabetic character is output from the keyboard,
thus presenting it to the computer as upper
case.
You'll need two chips, either a 7404 and
a 7408 or a 74LS04 and a 74LS08. (Either
pair works fine.) Install them on a small
piece of perf board as shown in the diagram,
and tie all unused inputs to +5V.
The pins you'll be using on the 04 chip
are 3, 5, 9, 11, and 13; on the 08 chip use 4,
5, 9, 10, 12, and 13.

Application News
Ham Computer Based on
Sol Terminal System

FLASH ~~ VDM
Access Flicker
Eliminated
That blasted flicker you get whenever
the VDM memory is being frequently
accessed occurs because the screen is
blanked for a very short time whenever the
processor reads or writes to memory. You
can eliminate it by modifying the timing
system so than VDM memory is accessed
only when the beam of the picture tube is off
the visible portion of the screen. The VDM
has a timing signal that indicates this
condition, and you can use it to synchronize
access to display memory.
Connect a jumper wire from pin 13 of IC
39 to pin 5 of IC 39. This hooks up an
unused section of IC 39 to DI bit 1. Connect
a wire from IC 39 pin 14 to IC 15 pin 9.
(This allows programs which access the
VDM memory to use the timing signal.)
Now when C8 is input, bit 1 will be low
whenever the display memory can be
accessed.
We'll explore the implications further in
the next issue, and provide an example
program or two.
Murphy's Law of Thermodynamic
Things get worse under pressure.
Lowery's Law
If it jams—force it. If it breaks, it needed
replacing anyway.

SYSTEM 4000 ham computer was developed by Curtis Electro Devices, Inc., Box
4090, Mountain View, Ca. 94040. The company makes ham keyers and an industrial
line of PROM programmers. We asked the
president, John G. Curtis, to comment on
working with the Sol system; he did all of
the hardware and software work himself,
developing programs for the Sol Terminal on
ALTAIR with ALS-8, VDM 1, 40K of
RAM, 3P+ 1, Tarbell cassette system,
Bytesaver, ASR-33 TTY, and Motorola
video monitor. Jack's report was glowing:
"I had no previous experience or trainin
software development. It was all learned on
the fly from books and practical experience.
(Try, try and try again!!!) . . . Not too much
assistance was required. The ALS-8 is easy
to use and the Simulator program is
absolutely essential. The Editor is also
absolutely necessary. (Everything is
necessary!!)...
"The Sol went together with a minimum
of effort and trouble even though it was one
of the first units actually put on the line.
There were things which didn't work but
with the help of PTC (especially Bob Marsh
and Aram) things were put in order in a
hurry.
"In my opinion, the Sol terminal is the
most ideal small computer system available
today (certainly at that price) and every
needed feature is there. For our purposes it
was absolutely ideal from every standpoint.
We are now able to get the computer into the
hamshack on a commercial basis. This has
been predicted for sometime, now it has
happened."

System 4000 Ham
Computer
The SYSTEM 4000 is a full scale standard
desk top minicomputer specially equipped with
firmware programs and interfaces for the
amateur radio operator. Being a stand-alone
computer, it can also run business, educational,
scientific or games programs.
The SYSTEM 40000 is derived from the
Sol terminal Computer and can take advantage
of Processor Technology's programs and
accessories. System 4000 uses the standard
S-100 bus for plug-in accessory boards, and
the owner can add or exchange PROM
integrated circuits to update the system.
Features:
Morse reader, capable of receiving code at
speeds of 6-250 WPM (or higher). CRT or
TTY output, selectable for upper and lower
case.
Paddle keyer, with dot= and dash memory,
iambic and full self completion. CRT or TTY
printout.
Keyboard keyer, sends Morse from keyboard.
CRT or TTY output.
ASCII terminal, half or full duplex.
Complete details can be obtained by writing to:
Curtis Electro Devices, Inc., P O. Box 4090,
Mountain View, Ca. 94040.
Murphy's Third Law
In any field of scientific endeavor, anything
that can go wrong will go wrong.
Sevarenid's Law
The chief cause of problems is solutions.
Brooks's Law
Adding manpower to a late software project
makes it later.
O'Tooles's Commentary on Murphy's Laws
Murphy was an optimist.
Page 5

Where the %×
×&*# is
Emeryville?

A major purpose of this newsletter is helping
you stomp out the bugs that inev-itably
occur even in the best of systems. Bug
Squad will be a regular feature. We'll tackle
the problems we've encountered most
frequently, and you're also invited to send in
any problems that have been bugging you.
Send solutions, too, if you've found them.
Share the wealth.
For starters, here's how to fix a few of
the bugs that crept into early Sol systems:

Emeryville, Ca., is located at the foot of the
Oakland Bay Bridge, squeezed between
Oakland and Berkeley. Neither wishes to
claim it. Emeryville consists largely of
mudflats and factories, the principle
landmarks being a highrise apartment
complex called Watergate (no relation), a
shoreline assemblage of driftwood
sculptures, and Processor Technology.
Before the rise of Processor Technology, the
main industry was legal gambling clubs.
We, however, plan to put Emeryville on the
map.

overvoltage protection of the crowbar
circuit.
The squasher: Make the modification here
by adding the components shown and
cutting appropriate traces (as shown).

Memory Protect/Unprotect Lines
The bug: Erratic behavior when early
Sol-PC, Sol-10, and Sol-20 units are used
with S-100 bus compatible memory modules.
The squasher: On early Sol circuit boards, the
protect (pin 70) and unprotect (pin 20) lines are
floating. Simply ground bus line 70 on the Sol
PCB itself to disable the memory protect signal.
Current Loop Source
The bug: R23, a 470 ohm 1/2w resistor, is
incorrectly tied to +5 on early Sol PC
boards, producing less than a full 20mA
current to teletype connections.
The squasher: Reconnect R23 to + 12V which
is only 1/4" away. Check to make sure that
R29 remains connected to +5V. We suggest
that the 20mA current loop connections (such
as for ASR33) be made as follows:

Consol Source Listing
For those of you who haven't seen it yet,
here's the source list for the minimum Sol
operating System, CONSOL. It provides all
necessary display routines, along with
standardized calling points for input/output
operations.
-== CONSOL ==COPYRIGHT 1976

Accidental Avalanche
The bug: On some Sol Power Supply REG
Boards, the SCR1 (MCR 106-2 ) in the +5
volt regulated supply will intermittently go
into the avalanche mode. This draws
sufficient current to drop the +5 volt to
about +1V This modification will prevent the
accidental triggering, but will retain the

Page 6

C000
C000
C000
C000
C000
C000
C000
C000
C000
C000
C000
C000
C000
C000
C000
C000
C000
C000
C000
C000
C000
C000
C000
C000
C000
C000
C000
C000
C000
C000
C000
C000
C000
C000
C000
C000
C000
C000
C000
C000
C000
C000
C000
C000
C000
C000
C000 00
C001 C3 65 C2
C004
C004
C004

0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049
0050
0051

*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*

*****
*
* * *
*
*****

**
*

*
**

*
*
*
*
******

SYSTEM SOLFTWARE
<<>>

CONSOL

<<>>

VERSION: 1.0:5
RELEASE: 10.11.76

COMMANDS ARE ALSO AVAILABLE TO ENTER DATA TO MEMORY
AND TO DISPLAY MEMORY DATA ON THE SCREEN. AN EXECUTE
COMMAND IS PROVIDED TO ALLOW PROGRAM EXCUTION OUTSIDE
OF THE CONSOL PROM AND PROVISION IS MADE FOR CASSETTE
TAPE LOAD OF PROGRAMS OR DATA.
NOTE: CONSOL,SOLOS AND SOLED ARE REGISTERED TRADEMARKS
OF:
PROCESSOR TECHNOLOGY CORP.
EMERYVILLE,CALIF
THE FOLLOWING CODE IS THE PROPERTY OF PROCESSOR
TECHNOLOGY CORP. IT IS DISTRIBUTED ON A 'PERSONAL USE
BASIS FOR THE BENIFIT OF SoL SYSTEM OWNERS. ALL FORMS
OF THE CODE ARE COPYRIGHT 1976 BY PROCESSOR TECHNOLOGY
AND ALL RIGHTS THERIN ARE RESERVED.

BGIN
*
*
*

AUTO-STARTUP CODE
DB
JMP

0
STRTA

FOUR PHASE WONDER

C004
C004
C004
C004
C004
C004
C004
C004
C004
C004
C004
C004
C004
C004
C004
C004
C004
C004
C004
C004
C004
C004
C004
C004
C004 3A
C007 E6
C009 E5
C00A 21
C00D 07
C00E 85
C00F 6F
C010 C3
C013
C013
C013
C013
C013
C013
C013
C013
C013
C013
C013
C013
C013
C013
C013 3A
C016 E6
C018 E5
C019 21
C01C 07
C01D 85
C01E 6F
C01F C3
C022
C022
C022
C022
C022
C022
C022
C022 DB
C024 E6
C026 C9
C027
C027
C027
C027
C027
C027
C027
C027 E1
C028 CD
C02B C2
C02E DB
C030 C9
C031
C031
C031
C031
C031 DB
C033 E6
C035 C9
C036
C036
C036
C036
C036 E1
C037 CD
C03A CA
C03D DB
C03F C9
C040
C040
C040
C040
C040 E1
C041 DB
C043 17
C044 D2
EMPTY
C047 78
C048 D3
C04A C9
C048
C04B
C048
C048
C04B
C04B
C04B
C048
C04B
C04B
C04B
C04B
C04B
C04B
C04B
C04B
C04B
C04B
C04B
C04B
C04B
C04B
C04B E5
C04C D5
C04D C5
C04E F5
C04F 78
SCREEN!
C050 21
C053 CD
C056
C056 CD
C059 7E
C05A F6
C05C 77
C05D F1
C05E C1
C05F D1
C060 E1

03 C8
03
84 C1

71 C0

04 C8
03
8C C1

71 C0

FA
01

22 C0
28 C0
FC

F8
40

31 C0
37 C0
F9

F8
41 C0
F9

65 C1
62 C0
21 C1
80

0052
0053
0054
0055
0056
0057
0058
0059
0060
0061
0062
0063
0064
0065
0066
0067
0068
0069
0070
0071
0072
0073
0074
0075
0076
0077
0078
0079
0080
0081
0082
0083
0084
0085
0086
0087
0088
0089
0090
0091
0092
0093
0094
0095
0096
0097
0098
0099
0100
0101
0102
0103
0104
0105
0106
0107
0108
0109
0110
0111
0112
0113
0114
0115
0116
0117
0118
0119
0120
0121
0122
0123
0124
0125
0126
0127
0128
0129
0130
0131
0132
0133
0134
0135
0136
0137
0138
0139
0140
0141
0142
0143
0144
0145
0146
0147
0148
0149
0150
0151
0152
0153
0154
0155
0156
0157
0158
0159
0160
0161
0162
0163
0164
0165
0166
0167
0168
0169
0170
0171
0172
0173
0174
0175
0176
0177
0178
0179
0180
0181

*
----= SoL SYSTEM I/O ROUTINES =----*
*
THE FOLLOWING CODE IS STANDARDIZED FOR ALL SoL SYSTEM
*
SOLFTWARE IT PROVIDES COMMON ENTRY POINTS FOR INPUT AND
*
OUTPUT OPERATIONS. CONSOL DOES NOT HAVE PROVISION FOR
*
PARALLEL I/O OPERATIONS BECAUSE OF SPACE LIMITATIONS.
*
*
*
*
*
JUMP TABLE INPUT/OUTPUT ROUTINES
*
*
THIS ROUTINE OUTPUTS THE CHARACTER IN REGISTER 'B' TO
* THE OUTPUT DEVICE POINTED TO BY THE CURRENT OUTPUT SELECT
* REGISTER. THE DEVICES ARE DEFINED AS FOLLOWS:
*
*
0 - VDM SCREEN
*
1 - SERIAL OUTPUT PORT
*
2 - PARALLEL OUTPUT PORT (NOT AVAILABLE ON CONSOL)
*
3 - ERROR HANDLER
*
*
ENTRY AT: SOUT SELECTS CURRENT OUTPUT DEVICE
*
AOUT SELECTS DEVICE IN REGISTER 'A'
*
SOUT
LDA
OPORT
GET PORT NUMBER FROM MEMORY LOCATION
AOUT
ANI
3
KEEP IT IN CONTROL
PUSH
H
WE'LL RESTORE IT LATER
LXI
H,OTAB
POINT TO TABLE
RLC
.
COMPUTE ADDRESS
ADD
L
MOV
L,A
WE HAVE IT
JMP
DISPT
GO TO HL....
*
*
*
*
THIS ROUTINE INPUTS A CHARACTER TO REGISTER 'A' FROM
* THE CURRENT INPUT DEVICE POINTED TO BY THE CURRENT INPUT
* SELECT REGISTER.
*
*
ENTRY POINTS ARE DEFINED:
*
*
0 - KEYBOARD INPUT
*
1 - SERIAL INPUT
*
2 - PARALLEL INPUT (NOT AVAILABLE ON CONSOL)
*
3 - ERROR HANDLER
*
SINP
LDA
IPORT
GET PORT NUMBER FROM MEMORY LOCATION
AINP
ANI
3
WE MUST BE REASONABLE
PUSH
H
SAVE H&L
LXI
H,ITAB
POINT TO TABLE
RLC
.
THE MATH
ADD
L
MOV
L,A
DONE
JMP
DISPT
WE HAVE THE ADDRESS ... GO TO HEAVEN
*
*
*
KEYBOARD INPUT STATUS CHECK
*
* THIS ROUTINE TESTS THE KEYBOARD STATUS AND RETURNS
* WITH THE TEST BITS SET.
*
KSTAT
IN
STAPT
GET STATUS WORD
ANI
KDR
TEST KEYBOARD BIT
RET
.
FLAGS ARE SET
*
*
*
KEYBOARD DATA INPUT
*
* THIS ROUTINE, ENTRY AT KREAD, GETS THE DATA FROM THE
* KEYBOARD. ON RETURN THE CHARACTER IS IN REGISTER 'A'.
*
KREA1
POP
H
JUMP TABLE ENTRY POINT
KREAD
CALL
KSTAT
CHECK STATUS
JNZ
KREAD
WAIT FOR INPUT
IN
KDATA
GET DATA
RET
.
GO BACK WITH IT
*
*
*
SERIAL INPUT STATUS CHECK
*
SSTAT
IN
SERST
GET SERIAL STATUS WORD
ANI
SDR
TEST FOR SERIAL DATA READY
RET
.
FLAGS ARE SET
*
*
*
SERIAL DATA INPUT
*
SREA1
POP
H
RESTORE HL FROM JUMP TABLE ENTRY
SREAD
CALL
SSTAT
NORMAL ENTRY POINT
JZ
SREAD
WAIT FOR INPUT
IN
SDATA
GET DATA BYTE
RET
.
WE HAVE IT
*
*
*
SERIAL DATA OUTPUT
*
SEROT
POP
H
JUMP TABLE ENTRY POINT
SDROT
IN
SERST
GET PORT STATUS
RAL
.
PUT HIGH BIT IN CARRY
JNC
SDROT
LOOP UNTIL TRANSMITTER BUFFER IS
MOV
OUT
RET

A,B
SDATA
.

GET THE CHARACTER BACK
SEND IT OUT
AND WE'RE DONE

*
*
*
*
*
*
VIDEO DISPLAY DRIVER ROUTINES
*
*
* THESE ROUTINES ALLOW FOR STANDARD VIDEO TERMINAL
* OPERATIONS. ON ENTRY, THE CHARACTER FOR OUTPUT IS IN
* REGISTER B AND ALL REGISTERS ARE UNALTERED ON RETURN.
*
*
THE 'CONSOL' VERSION OF THIS ROUTINE IS A MINIMUM
* IMPLEMENTATION OF ROUTINES ORIGINATED BY:
*
*
IAN KETTLEBOROUGH
*
OF
*
COLLEGE STATION, TEXAS
*
*
SOLOS AND SOLED CONTAIN THE ESC SEQUENCES AND OTHER
* FULL IMPLEMENTATION FEATURES.
*
VDMOT
PUSH
H
SAVE EVERYBODY
VDMO1
PUSH
D
ENTRY FROM DEVICE SELECT
PUSH
B
PUSH
PSW
MOV
A,B
SAVE IN B...STRIP PARITY BEFORE

0182
0183
0184 *
0185 GOBACK
0186
0187
0188
0189 GOBK
0190
0191
0192

LXI
CALL

H,TBL
TSRCH

CALL
MOV
ORI
MOV
POP
POP
POP
POP

VDADD
A,M
80H
M,A
PSW
B
D
H

GO PROCESS
GET SCREEN ADDRESS
CURSOR IS BACK ON
RESTORE ALL REGISTERS

C061
C062
C062
C062
C063
C064
C067
C068
C069
C06C
C06D
C070
C071
C071
C071
C071
C071
C071
C071
C072
C073
C074
C075
C076
C076
C076
C077
C078
C07B
C07B
C07B
C07C
C07D
C07E
C080
C081
C081
C081
C081
C084
C085
C087
C088
C08B
C08D
C090
C093
C095
C098
C098
C098
C098
C099
C09C
C09D
C0A0
C0A1
C0A4
C0A7
C0A8
C0AA
C0AD
C0AD
C0AD
C0AD
C0B0
C0B1
C0B4
C0B6
C0B7
C0B8
C0BB
C0BE
C0BF
C0C1
C0C4
C0C5
C0C5
C0C5
C0C5
C0C8
C0CA
C0CA
C0CB
C0CC
C0CE
C0D1
C0D3
C0D6
C0D6
C0D7
C0DA
C0DD
C0DD
C0DF
C0E2
C0E3
C0E3
C0E3
C0E6
C0E9
C0EB
C0EC
C0EE
C0EF
C0F0
C0F3
C0F3
C0F3
C0F3
C0F4
C0F7
C0FA
C0FA
C0FA
C0FA
C0FD
C0FF
C100
C101
C104
C104
C104
C104
C107
C108
C109
C10A
C10D
C10D
C10D
C10D
C110
C111
C112
C113
C116
C117
C117
C117
C117
C11A
C11C
C11D

C9
7E
B7
CA 7B C0
B8
23
C2 76 C0
E5
CD 3D C1
E1

7E
23
66
6F
E9
23
23
C3 62 C0
78
B7
C8
FE 7F
C8

CD
78
E6
77
3A
FE
DA
3A
FE
C2

AF
32
4F
CD
AF
CD
3A
3C
E6
C3

3A
3C
32
FE
D8
AF
32
3A
3C
E6
32
C9

21 C1
7F
00
3F
AD
01
0F
AD

C8
C0
C8
C0

00 C8
28 C1
E9 C0
02 C8
0F
DD C0

00 C8
00 C8
40
00 C8
01 C8
0F
01 C8

21 00 CC
36 A0
23
7C
FE
D2
36
C3

D0
D6 C0
20
CA C0

AF
32 01 C8
32 00 C8
D3 FE
32 02 C8
C9
CD
3A
FE
D0
36
23
3C
C3

21 C1
00 C8
40
20
E9 C0

AF
32 00 C8
C3 C1 C0

3A 01 C8
FE 0F
C8
3C
C3 C1 C0

3A 01 C8
B7
C8
3D
C3 C1 C0

3A 00 C8
B7
C8
3D
32 00 C8
C9

3A 00 C8
FE 3F
C8
3C

0193
0194
0195
0196
0197
0198
0199
0200
0201
0202
0203
0204
0205
0206
0207
0208
0209
0210
0211
0212
0213
0214
0215
0216
0217
0218
0219
0220
0221
0222
0223
0224
0225
0226
0227
0228
0229
0230
0231
0232
0233
0234
0235
0236
0237
0238
0239
0240
0241
0242
0243
0244
0245
0246
0247
0248
0249
0250
0251
0252
0253
0254
0255
0256
0257
0258
0259
0260
0261
0262
0263
0264
0265
0266
0267
0268
0269
0270
0271
0272
0273
0274
0275
0276
0277
0278
0279
0280
0281
0282
0283
0284
0285
0286
0287
0288
0289
0290
0291
0292
0293
0294
0295
0296
0297
0298
0299
0300
0301
0302
0303
0304
0305
0306
0307
0308
0309
0310
0311
0312
0313
0314
0315
0316
0317
0318
0319
0320
0321
0322
0323
0324
0325
0326
0327
0328
0329
0330
0331
0332
0333
0334
0335
0336

*
*
TSRCH

RET

.

MOV
ORA
JZ
CMP
INX
JNZ
PUSH
CALL
POP

A,M
A
CHAR
B
H
NEXT
H
CREM
H

EXIT FROM VDMOT
GET CHR FROM TABLE
ZERO IS THE LAST
TEST THE CHR
POINT FORWARD
FOUND ONE ... SAVE ADDRESS
REMOVE CURSOR

*
*
*
THIS ROUTINE DISPATCHES TO THE ADDRESS POINTED TO
* BY THE HL REGISTER PAIR. THE RETURN ADDRESS IS THE
* LAST ENTRY ON THE STACK.
*
DISPT
MOV
A,M
GET LOW BYTE
INX
H
MOV
H,M
AND THE HIGH
MOV
L,A
WE HAVE PLACED THEM BOTH
PCHL
.
GO TO IT
*
*
NEXT
INX
H
GO TO NEXT
INX
H
JMP
TSRCH
*
*
CHAR
MOV
A,B
GET CHARACTER
ORA
A
RZ
.
RETURN IF A NULL
CPI
7FH
IS IT A DEL?
RZ
.
GO BACK IF SO
*
*
*
OCHAR
CALL
VDADD
GET SCREEN ADDRESS
MOV
A,B
GET CHARACTER FOR OUTPUT
ANI
7FH
NO HIGH BITS GO PAST HERE
MOV
M,A
PUT CHR ON SCREEN
LDA
NCHAR
GET CHARACTER POSITION
CPI
63
END OF LINE?
JC
OK
LDA
LINE
CPI
15
END OF SCREEN?
JNZ
OK
*
*
END OF SCREEN...ROLL UP ONE LINE
*
SCROLL
XRA
A
STA
NCHAR
BACK TO FIRST CHAR POSITION
SROL
MOV
C,A
CALL
VDAD
CALCULATE LINE TO BE BLANKED
XRA
A
CALL
CLIN1
CLEAR IT
LDA
BOT
INR
A
ANI
0FH
JMP
ERAS3
*
*
INCREMENT LINE COUNTER IF NECESSARY
*
OK
LDA
NCHAR
GET CHR POSITION
INR
A
STA
NCHAR
STORE THE NEW
CPI
64
RC
XRA
A
WE'RE PAST THE END... REWIND THE COUNT
STA
NCHAR
LDA
LINE
GET THE LINE COUNT
INR
A
ANI
0FH
MOD 15 INCREMENT
CUR
STA
LINE
STORE THE NEW
RET
*
*
ERASE SCREEN
*
PERSE
LXI
H,VDMEM
POINT TO SCREEN
MVI
M,80H+' ' THIS IS THE CURSOR
*
ERAS1
INX
H
BUMP THE COUNT
MOV
A,H
GET HIGH ORDER
CPI
0D0H
THE TOP
JNC
ERAS2
MVI
M,' '
PUT IN A BLANK
JMP
ERAS1
*
ERAS2
XRA
A
STA
LINE
ZERO LINE
STA
NCHAR
LEFT SIDE OF SCREEN
*
ERAS3
OUT
DSTAT
RESET SCROLL PARAMETERS
STA
BOT
BEGINNING OF TEXT OFFSET
RET
*
*
CLINE
CALL
VDADD
GET CURRENT SCREEN ADDRESS
LDA
NCHAR
CURRENT CURSOR POSITION
CLIN1
CPI
64
NO MORE THAN 63
RNC
.
ALL DONE
MVI
M,' '
ALL SPACED OUT
INX
H
INR
A
JMP
CLIN1
LOOP TO END OF LINE
*
*
HOME CURSOR
*
PHOME
XRA
A
STA
NCHAR
JMP
CUR
*
* MOVE CURSOR DOWN ONE LINE
*
PDOWN
LDA
LINE
CPI
15
RZ
.
HOW FAR IS DOWN?
INR
A
JMP
CUR
*
* ROUTINE TO MOVE THE CURSOR UP ONE LINE
*
PUP
LDA
LINE
GET LINE COUNT
ORA
A
RZ
.
DON'T GO MORE UP THAN UP
DCR
A
JMP
CUR
*
* MOVE CURSOR LEFT ONE POSITION
*
PLEFT
LDA
NCHAR
ORA
A
RZ
.
DON'T GO MORE BACK THAN BACK
DCR
A
PCUR
STA
NCHAR
RET
*
*
CURSOR RIGHT ONE POSITION
*
PRIT
LDA
NCHAR
CPI
63
RZ
.
HOW RIGHT CAN WE BE?
INR
A

Page 7

C11E
C121
C121
C121
C121
C121
C121
C121
C121
C121
C121
C124
C125
C128
C129
C12C
C12D
C12E
C12F
C130
C132
C133
C135
C136
C137
C138
C13A
C13B
C13C
C13D
C13D
C13D
C13D
C140
C141
C143
C144
C145
C145
C145
C145
C148
C14B
C14D
C14E
C14E
C14E
C14E
LINE
C151
C152
C155
C155
C155
C155
C158
C15A
C15D
C15E
C161
C161
C162
C165
C165
C165
C165
C165
C165
C165
C165
C166
C168
C169
C16B
C16C
C16E
C16F
C171
C172
C174
C175
C177
C178
C17A
C17B
C17D
C17E
C180
C181
C183
C184
C184
C184
C184
C186
C188
C18A
C18C
C18C
C18C
C18C
C18E
C190
C192
C194
C194
C194
C194
C194
C194
C194
C196
C198
C19A
C19C
C19E
C1A0
C1A2
C1A4
C1A6
C1A8
C1AA
C1AC
C1AD
C1AD
C1AD
C1AD
C1AD
C1AE
C1B1
C1B4
C1B4
C1B4
C1B4
C1B4
C1B4
C1B4
C1B4
C1B4
C1B4
C1B7
C1BA
C1BD
C1C0

C3 13 C1

3A
4F
3A
6F
3A
85
0F
0F
6F
E6
57
3E
82
67
7D
E6
81
6F
C9

00 C8
01 C8
02 C8

03
CC

C0

CD 21 C1
7E
E6 7F
77
C9

CD 0D C1
CD 21 C1
36 20
C9

CD E3 C0
AF
C3 13 C1

3A
FE
D2
3C
C3

01 C8
0F
61 C1
C1 C0

AF
C3 9C C0

8B
C5
97
04
9A
FA
81
0D
93
17
8E
F3
0D
4E
0A
55
5F
45
80
B4
00

C0
C1
C0
C1
C1
C0
C1
C1
C1
C1

4C
40
AD
AD

C0
C0
C1
C1

27
36
AD
AD

C0
C0
C1
C1

54
70
44
A1
45
07
45
35
54
39
42
00
00

45
C2
55
C2
4E
C3
58
C3
4C
C3
41
00

AF
32 04 C8
32 03 C8

31
CD
CD
CD
C3

00
12
C3
E1
B4

CC
C2
C1
C1
C1

Page 8

0337
0338
0339
0340
0341
0342
0343
0344
0345
0346
0347
0348
0349
0350
0351
0352
0353
0354
0355
0356
0357
0358
0359
0360
0361
0362
0363
0364
0365
0366
0367
0368
0369
0370
0371
0372
0373
0374
0375
0376
0377
0378
0379
0380
0381
0382
0383
0384
0385
0386
0387
0388
0389
0390
0391
0392
0393
0394
0395
0396
0397
0398
0399
0400
0401
0402
0403
0404
0405
0406
0407
0408
0409
0410
0411
0412
0413
0414
0415
0416
0417
0418
0419
0420
0421
0422
0423
0424
0425
0426
0427
0428
0429
0430
0431
0432
0433
0434
0435
0436
0437
0438
0439
0440
0441
0442
0443
0444
0445
0446
0447
0448
0449
0450
0451
0452
0453
0454
0455
0456
0457
0458
0459
0460
0461
0462
0463
0464
0465
0466
0467
0468
0469
0470
0471
0472
0473
0474
0475
0476
0477
0478
0479

JMP
PCUR
*
*
ROUTINE TO CALCULATE SCREEN ADDRESS
*
*
ENTRY AT:
RETURNS:
*
*
VDADD CURRENT SCREEN ADDRESS
*
VDAD2 ADDRESS OF CURRENT LINE, CHAR 'C'
*
VDAD
LINE 'A', CHARACTER POSITION 'C'
*
VDADD
LDA
NCHAR
GET CHARACTER POSITION
MOV
C,A
IC' KEEPS IT
VDAD2
LDA
LINE
LINE POSITION
VDAD
MOV
L,A
INTO 'L'
LDA
BOT
GET TEXT OFFSET
ADD
L
ADD IT TO THE LINE POSITION
RRC
.
TIMES TWO
RRC
.
MAKES FOUR
MOV
L,A
L HAS IT
ANI
3
MOD THREE FOR LATER
MOV
D,A
MVI
A,'
THE PROMPT
JMP
VDMOT
PUT IT ON THE SCREEN
*
CRLF
MVI
B,LF
LINE FEED
CALL
VDMOT
MVI
B,CR
CARRIAGE RETURN
JMP
VDMOT
PUT IT OUT AND RETURN
*
*
* SCAN OVER UP TO 12 CHARACTERS LOOKING FOR A BLANK
*
SBLK
MVI
C,12
MAXIMUM COMMAND STRING
SBLK1
LDAX
D
CPI
BLANK
JZ
SCHR
GOT A BLANK NOW SCAN PAST IT
INX
D
DCR
C
NO MORE THAN TWELVE
JNZ
SBLK1
RET
.
GO BACK WITH ZERO FLAG SET
*
*
* SCAN PAST UP TO 10 BLANK POSITIONS LOOKING FOR
* A NON BLANK CHARACTER.
*
SCHR
MVI
C,10
SCAN TO FIRST NON BLANK CHR WITHIN 10
SCHR1
LDAX
D
GET NEXT CHARACTER
CPI
SPACE
RNZ
.
WE'RE PAST THEM
INX
D
NEXT SCAN ADDRESS
DCR
C
RZ
.
COMMAND ERROR
JMP
SCHR1
KEEP LOOPING
*
* THIS ROUTINE SCANS OVER CHARACTERS, PAST BLANKS AND
* CONVERTS THE FOLLOWING ADDRESS TO HEX. ERRORS RETURN TO
* THE ERROR HANDLER.
*
SCONV
CALL
SBLK
JZ
ERR1
*
* THIS ROUTINE CONVERTS ASCII DIGITS INTO BINARY FOLLOWING
* A STANDARD HEX CONVERSION. THE SCAN STOPS WHEN AN ASCII
* SPACE IS ENCOUNTERED. PARAMETER ERRORS REPLACE THE ERROR
* CHARACTER ON THE SCREEN WITH A QUESTION MARK.
*
SHEX
LXI
H,0
CLEAR H & L
SHE1
LDAX
D
GET CHARACTER
CPI
20H
IS IT A SPACE?
RZ
.
IF SO
*
HCONV
DAD
H
MAKE ROOM FOR THE NEW ONE
DAD
H
DAD
H
DAD
H
CALL
HCOV1
DO THE CONVERSION
JNC
ERR1
NOT VALID HEXIDECIMAL VALUE
ADD
L
MOV
L,A
MOVE IT IN
INX
D
BUMP THE POINTER
JMP
SHE1
*
HCOV1
SUI
48
REMOVE ASCII BIAS
CPI
10
RC
.
IF LESS THAN 9
SUI
7
IT'S A LETTER??
CPI
10H

C264
C265
C265
C265
C265
C265
C265
C266
C267
C26A
C26A
C26B
C26C
C26D
C270
C270
C270
C270
C270
C270
C270
C270
C270
C270
C270
C270
C270
C270
C270
C273
C276
C279
C279
C27C
C27F
C281
C282
C284
C287
C28A
C28D
C28D
C290
C293
C296
C298
C29A
C29B
C29E
C2A1
C2A1
C2A1
C2A1
C2A1
C2A1
C2A1
C2A1
C2A1
C2A1
C2A1
C2A1
C2A1
C2A1
C2A1
C2A1
C2A1
C2A1
C2A4
C2A5
C2A8
C2A9
C2AC
C2AD
C2B0
C2B1
C2B4
C2B4
C2B5
C2B6
C2B7
C2B7
C2BA
C2BC
C2BE
C2C1
C2C4
C2C7
C2C9
C2C9
C2CA
C2CB
C2CE
C2D1
C2D4
C2D5
C2D6
C2D7
C2DA
C2DD
C2DD
C2DD
C2DD
C2DE
C2E1
C2E2
C2E2
C2E5
C2E7
C2EA
C2EA
C2EB
C2EC
C2ED
C2EE
C2EF
C2F2
C2F3
C2F3
C2F5
C2F7
C2F9
C2FC
C2FE
C2FF
C302
C302
C302
C302
C303
C304
C305
C306
C307
C307
C307
C307
C307
C307
C307
C307
C307
C307
C307

C9

AF
4F
21 00 C8
77
23
0C
C2 6A C2

31 00 CC
CD ED C3
CD C5 C0
CD
C2
DB
47
E6
CA
CD
C3

22 C0
90 C2
FC

CD
CD
CA
DB
E6
47
CD
C3

41 C0
31 C0
79 C2
F9
7F

CD
E5
CD
E1
CA
E5
CD
D1
C3

80
8D C2
4B C0
90 C2

4B C0
79 C2

3E C2
32 C2
B4 C2
44 C2
B6 C2

54
5D
EB
CD
DB
FE
CA
CD
CD
0E
7E
C5
CD
CD
D2
C1
23
0D
C2
C3

1A
FC
80
B4
DD
E5
10

C2
C1
C2
C2

E2 C2
02 C3
B4 C1

C9 C2
B7 C2

7C
CD EA C2
7D
CD EA C2
06 20
C3 4B C0
4F
0F
0F
0F
0F
CD F3 C2
79
E6
C6
FE
DA
C6
47
C3

0F
30
3A
FE C2
07
4B C0

7D
93
7C
9A
C9

CD 3E C2

0623
0624
0625
0626
0627
0628
0629
0630
0631
0632
0633
0634
0635
0636
0637
0638
0639
0640
0641
0642
0643
0644
0645
0646
0647
0648
0649
0650
0651
0652
0653
0654
0655
0656
0657
0658
0659
0660
0661
0662
0663
0664
0665
0666
0667
0668
0669
0670
0671
0672
0673
0674
0675
0676
0677
0678
0679
0680
0681
0682
0683
0684
0685
0686
0687
0688
0689
0690
0691
0692
0693
0694
0695
0696
0697
0698
0699
0700
0701
0702
0703
0704
0705
0706
0707
0708
0709
0710
0711
0712
0713
0714
0715
0716
0717
0718
0719
0720
0721
0722
0723
0724
0725
0726
0727
0728
0729
0730
0731
0732
0733
0734
0735
0736
0737
0738
0739
0740
0741
0742
0743
0744
0745
0746
0747
0748
0749
0750
0751
0752
0753
0754
0755
0756
0757
0758
0759
0760
0761
0762
0763
0764
0765

RET
.
WITH TEST IN HAND
*
*
*
SYSTEM START UP, CLEAR PART OF RAM AND SET STACK
* POINTER, FALLING THROUGH TO TERMINAL MODE.
*
STRTA
XRA
A
MOV
C,A
WE CLEAR THE FIRST 256 BYTES
LXI
H,SYSRAM
POINT TO SYSTEM RAM
*
CLERA
MOV
M,A
INX
H
INR
C
JNZ
CLERA
CLEAR FIRST 256 BYTES
*
*
*
*
TERM COMMAND
*
*
THIS ROUTINE GETS CHARACTERS FROM THE SYSTEM KEYBOARD
* AND OUTPUTS THEM TO THE SERIAL OUTPUT PORT. IT IS
* INTENDED TO CONFIGURE THE SoL AS A STANDARD VIDEO
* TERMINAL. COMMAND KEYS ARE NOT OUTPUT TO THE OUTPUT
* PORT BUT ARE INTERPRETED AS DIRECT SoL COMMANDS.
* THE MODE COMMAND, RECEIVED BY THE KEYBOARD, PUTS THE
* SoL IN THE COMMAND MODE.
*
*
TERM
LXI
SP,SYSTP
SET STACK POINTER
CALL
TOFF
SLOW DOWN THE TAPES
CALL
PERSE
CLEAR THE SCREEN
*
KIN
CALL
KSTAT
IS THERE ONE WAITINGI
JNZ
TIN
IN
KDATA
GET THE CHARACTER
MOV
B,A
ANI
80H
COMMAND KEY?
JZ
TOUT
CALL
VDMOT
PROCESS IT
JMP
TIN
*
TOUT
CALL
SDROT
OUTPUT IT TO THE SERIAL PORT
TIN
CALL
SSTAT
GET SERIAL STATUS
JZ
KIN
LOOP IF NOT
IN
SDATA
GET DATA
ANI
7FH
NO HIGH BITS FROM HERE
MOV
B,A
IT'S OUTPUT FROM 'B'
CALL
VDMOT
PUT IT ON THE SCREEN
JMP
KIN
LOOP OVER AND OVER
*
*
*
*
DUMP COMMAND
*
*
THIS ROUTINE DUMPS CHARACTERS FROM MEMORY TO THE
* CURRENT OUTPUT DEVICE. (WITH CONSOL ALL OUTPUT GOES TO
* THE SCREEN). ALL VALUES ARE DESPLAYED AS ASCII HEX.
*
* THE COMMAND FORM IS AS FOLLOWS:
*
*
DUmp addr1 addr2
*
*
THE VALUES FROM ADDR1 TO ADDR2 ARE THEN OUTPUT TO THE
* OUTPUT DEVICE. IF ONLY ADDR1 IS SPECIFIED THEN THE
* VALUE AT THAT ADDRESS IS OUTPUT.
*
DUMP
CALL
SCONV
SCAN TO FIRST ADDRESS AND CONVERT IT
PUSH
H
SAVE THE VALUE
CALL
SCHR
GET THE NEXT
POP
H
JZ
POVER
NO SECOND VALUE
PUSH
H
CALL
SHEX
GET SECOND
POP
D
THIS IS THE FIRST
JMP
NPASS
MIND BENDERS
*
POVER
MOV
D,H
NO SECOND PARAMETER COPY FIRST TO DE
MOV
E,L
NPASS
XCHG
.
HL HAS START, DE HAS END
*
DLOOP
CALL
CRLF
IN
KDATA
CPI
MODE
MODE KEY' WILL ESCAPE THE DUMP
JZ
COMND
CALL
ADOUT
OUTPUT ADDRESS
CALL
BOUT
ANOTHER SPACE TO KEEP IT PRETTY
MVI
C,16
VALUES PER LINE
*
DLP1
MOV
A,M
GET THE CHR
PUSH
B
SAVE VALUE COUNT
CALL
HBOUT
SEND IT OUT WITH A BLANK
CALL
ACOMP
COMPARE ADDRESSES
JNC
COMND
ALL DONE
POP
B
VALUES PER LINE
INX
H
DCR
C
BUMP THE LINE COUNT
JNZ
DLP1
NOT ZERO IF MORE FOR THIS LINE
JMP
DLOOP
DO A LFCR BEFORE THE NEXT
*
*
OUTPUT HL AS HEX 16 BIT VALUE
*
ADOUT
MOV
A,H
H FIRST
CALL
HEOUT
MOV
A,L
THEN L FOLLOWED BY A SPACE
*
HBOUT
CALL
HEOUT
BOUT
MVI
B,' '
JMP
VDMOT
CONSOL PUTS IT ON THE SCREEN
*
HEOUT
MOV
C,A
GET THE CHARACTER
RRC
RRC
.
MOVE THE HIGH FOUR DOWN
RRC
RRC
CALL
HEOU1
PUT THEM OUT
MOV
A,C
THIS TIME THE-LOW FOUR
*
HEOU1
ANI
0FH
FOUR ON THE FLOOR
ADI
48
WE WORK WITH ASCII HERE
CPI
58
0-9?
JC
OUTH
YUPI
ADI
7
MAKE IT A LETTER
OUTH
MOV
B,A
OUTPUT IT FROM REGISTER 'B'
JMP
VDMOT
*
*
COMPARE DE AND HL
*
ACOMP
MOV
A,L
SUB
E
MOV
A,H
SBB
D
RET
.
FLAGS ARE SET
*
*
*
ENTER COMMAND
*
*
THIS ROUTINE GETS VALUES FROM THE KEYBOARD AND ENTERS
* THEM INTO MEMORY. THE INPUT VALUES ARE SCANNED FOLLOWING
* A STANDARD 'GCLIN' INPUT SO ON SCREEN EDITING MAY TAKE
* PLACE PRIOR TO THE LINE TERMINATOR. A BACK SLASH '/'
* ENDS THE ROUTINE AND-RETURNS CONTROL TO THE COMMAND MODE.
*
ENTER
CALL
SCONV
SCAN OVER CHARS AND GET ADDRESS

C30A
C30B
C30B
C30E
C310
C313
C316
C318
C31B
C31C
C31C
C31E
C321
C324
C325
C327
C32A
C32D
C32E
C32F
C330
C331
C332
C335
C335
C335
C335
C335
C335
C335
C335
C335
C335
C335
C335
C338
C339
C339
C339
C339
C339
C339
C339
C339
C339
C339
C339
C339
C339
C33C
C33F
C342
C343
C345
C347
C34A
C34A
C34B
C34D
C34F
C352
C354
C354
C357
C35A
C35A
C35D
C35E
C361
C361
C362
C363
C366
C369
C36A
C36B
C36E
C370
C370
C372
C373
C373
C376
C377
C378
C379
C37A
C37B
C37C
C37D
C380
C380
C383
C386
C386
C388
C38B
C38E
C38E
C38E
C38E
C38E
C38F
C391
C394
C394
C394
C394
C396
C398
C39A
C39D
C39F
C3A0
C3A3
C3A4
C3A7
C3A7
C3A7
C3A7
C3AA
C3AB
C3AE
C3AE
C3AE
C3AE
C3B1
C3B4
C3B4
C3B7
C3B8
C3B9
C3BA
C3BB
C3BC
C3BD
C3BE
C3C1
C3C1
C3C1
C3C1
C3C1
C3C1

E5
CD
06
CD
CD
0E
CD
EB

1A
3A
CC
3D
01
25

C2

0E
CD
CA
1A
FE
CA
CD
7D
E1
77
23
E5
C3

03
34 C2
0B C3

C1
C1
C1

2F
B4 C1
44 C2

1C C3

CD 3E C2
E9

CD
CA
CD
7D
E6
3E
C2

24 C2
4A C3
44 C2
01
20
4B C3

AF
F6
D3
CD
DB

C0
FA
F1 C3
FB

CD 94 C3
C2 54 C3
2A 0C C8
EB
2A 0E C8
7A
B3
CA
01
EB
09
D2
06

ED C3
00 FF
E1 C3
00

0E 00
EB
CD C6 C3
77
23
A9
2F
91
4F
05
C2 73 C3
CD C1 C3
CA 61 C3
06 07
CD 4B C0
C3 B4 C1

EB
36 3F
C3 B4 C1

06
DB
E6
CA
DB
B7
C2
05
C2

0A
FA
40
96 C3
FB
94 C3
96 C3

CD C6 C3
3D
C2 A7 C3

21 05 C8
01 00 10
CD C6 C3
77
23
A9
2F
91
4F
05
C2 B4 C3

CD C6 C3

0766
0767
0768
0769
0770
0771
0772
0773
0775
0776
0777
0000
0778
0779
0780
0781
0782
0783
0784
0785
0786
0787
0788
0789
0790
0791
0792
0793
0794
0795
0796
0797
0798
0799
0800
0801
0802
0803
0804
0805
0806
0807
0808
0809
0810
0811
0812
0813
0814
0815
0816
0817
0818
0819
0820
0821
0822
0823
0824
0825
0826
0827
0828
0829
0830
0831
0832
0833
0834
0835
0836
0837
0838
0839
0840
0841
0842
0843
0844
0845
0000
0846
0847
0848
0849
0850
0851
0852
0853
0854
0855
0856
0857
0858
0859
0860
0861
0862
0863
0864
0865
0866
0867
0868
0869
0870
0871
0872
0873
0874
0875
0876
0877
0878
0879
0880
0881
0882
0883
0884
0885
0886
0887
0888
0889
0890
0891
0892
0893
0894
0895
0896
0897
0898
0899
0900
0901
0902
0903
0904
0905
0906
0907

*
ENLOP

*
ENLO1
ENLO2

PUSH

H

SAVE ADDRESS

CALL
MVI
CALL
CALL
MVI
CALL
XCHG

CRLF
B,':'
CONT
CREM
C,1
VDAD2
.

GET LINE OF INPUT
REMOVE THE CURSOR
START SCAN
GET ADDRESS
....TO DE

MVI
CALL
JZ
LDAX
CPI
JZ
CALL
MOV
POP
MOV
INX
PUSH
JMP

C,3
NO MORE THAN THREE SPACES BETWEEN VALUES
SCHR1 SCAN TO NEXT VALUE
ENLOP
LAST ENTRY FOUND START NEW LINE
D
GET THE CHR
'/'
COMMAND TERMINATOR?
COMND
IF SO...
SHEX
CONVERT VALUE
A,L
GET LOW PART AS CONVERTED
H
GET MEMORY ADDRESS
M,A
PUT IN THE VALUE
H
H
BACK GOES THE ADDRESS
ENLO1
CONTINUE THE SCAN

*
*
*
*
EXECUTE COMMAND
*
*
THIS ROUTINE GETS THE FOLLOWING PARAMETER AND DOES A
* PROGRAM JUMP TO THE LOCATION GIVEN BY IT. IF PROPER
* STACK OPERATIONS ARE USED WITHIN THE EXTERNAL PROGRAM
* IT CAN DO A STANDARD 'RET'URN TO THE CONSOL COMMAND MODE.
*
*
EXEC
CALL
SCONV
SCAN PAST BLANKS AND GET PARAMETER
PCHL
GO ........ (AMD TAKE NOTE)
*
*
*
*
TAPE LOAD COMMAND
*
*
THIS ROUTINE READS FROM EITHER TAPE UNIT PLACING
* THE READ DATA INTO MEMORY. WHILE SPACE WITHIN CONSOL
* DOES NOT ALLOW FOR 'STANDARD' TAPE ROUTINES THIS
* COMMAND WILL LOAD SoL- BASIC5 AND OTHER STANDARD SoL
* SYSTEM SOLFTWARE FOR DIRECT EXECUTION.
*
*
TLOAD
CALL
SBLK
SCAN TO SPEED PARAMETER
JZ
DFLT
DEFAULT TO HIGH SPEED IF NONE
CALL
SHEX
CONVERT IT
MOV
A,L
GET VALUE
ANI
1
ONLY BIT ZERO COUNTS
MVI
A,32
PRETEND ITS SLOW
JNZ
SETSP
*
DFLT
XRA
A
MAKE IT FAST
SETSP
ORI
TAPE1+TAPE2 CONSOL STARTS BOTH TAPES
OUT
STAPT
START TAPES AND SELECT SPEED
CALL
DELAY
WAIT WHILE THE TAPE UNIT WINDS UP
IN
TDATA
CLEAR THE UART FLAGS
*
TLOD1
CALL
RHEAD
READ PAST HEADER
JNZ
TLOD1
IF ERROR START OVER
*
LHLD
BLOCK
GET BLOCK SIZE
XCHG
.
...TO DE
LHLD
LOADR
GET LOAD ADDRESS
*
LOLOOP
MOV
A,D
GET COUNT
ORA
E
JZ
TOFF
COUNT IS ZERO-TURN OFF TAPE AND RETURN
LXI
B,-256
THIS MANY PRIOR TO CRC TEST
XCHG
.
COUNT TO HL
DAD
B
A LITTLE MATH
JNC
LBLK
NO CARRY, IT'S THE LAST BLOCK
MVI
B,0
256 TO READ
*
RDBLK
MVI
C,0
ZERO THE CRC
XCHG
.
ROUND ROBIN
*
RTBYT
CALL
TAPIN
GET CHARACTER
MOV
M,A
STORE IT
INX
H
BUMP MEMORY LOCATION
XRA
C
UPDATE THE CRC
CMA
SUB
C
MOV
C,A
STORE THE NEW
DCR
B
COUNT DOWN
JNZ
RTBYT
STILL MORE IF NOT ZERO
*
CALL
CRCCK
CHECK CRC AND FALL THROUGH TO ERROR IF NO GOOD
JZ
LOLOOP
TEST OK
*
TERR
MVI
B,'G'-40H BELL CHARACTER
CALL
VDMOT
PUT IT ON THE SCREEN
JMP
COMND
*
*
*
CONSOL ERROR HANDLER
*
ERR1
XCHG
.
GET SCAN ADDRESS
ERR2
MVI
M,'?'
PUT A QUESTION MARK THERE
JMP
COMND
AND GO TO COMMAND MODE
*
*
READ THE HEADER
*
RHEAD
MVI
B,10
FIND 10 NULLS
RHEA1
IN
STAPT
GET A BYTE
ANI
TDR
JZ
RHEA1
IN
TDATA
IGNORE ERROR CONDITIONS
ORA
A
ZERO?
JNZ
RHEAD
DCR
B
JNZ
RHEA1
LOOP UNTIL 10 IN A ROW
*
*
WAIT FOR THE START CHARACTER
*
SOHL
CALL
TAPIN
DCR
A
JNZ
SOHL
WAIT FOR A '1'
*
*
NOW GET THE HEADER
*
LXI
H,THEAD
POINT TO BUFFER
LXI
B,HLEN*256 LENGTH OF HEADER IN 'B',C>
*
*
*
VDM PARAMETERS
*
VDMEM
EQU
0CC00H
VDM SCREEN MEMORY
*
*
*
KEYBOARD SPECIAL KEY ASSIGNMENTS
*
DOWN
EQU
9AH
UP
EQU
97H
LEFT
EQU
81H
RIGHT
EQU
93H
LOADK
EQU
8CH
LOAD KEY
MODE
EQU
80H
CLEAR
EQU
8BH
HOME
EQU
08EH
BACKS
EQU
5FH
BACKSPACE
LF
EQU
10
CR
EQU
13
BLANK
EQU
' '
SPACE
EQU
BLANK
CX
EQU
'X'-40H
*
*
PORT ASSIGNMENTS
*
STAPT
EQU
0FAH
STATUS PORT GENERAL
SERST
EQU
0F8H
SERIAL STATUS PORT
SDATA
EQU
0F9H
SERIAL DATA
TDATA
EQU
0FBH
TAPE DATA
KDATA
EQU
0FCH
KEYBOARD DATA
PDATA
EQU
0FDH
PARALLEL DATA
DSTAT
EQU
0FEH
VDM DISPLAY PARAMETER PORT
SENSE
EQU
0FFH
SENSE SWITCHES
*
*
*
*
BIT ASSIGNMENT MASKS
*
SCD
EQU
1
SERIAL CARRIER DETECT
SDSR
EQU
2
SERIAL DATA SET READY
SPE
EQU
4
SERIAL PARITY ERROR
SFE
EQU
8
SERIAL FRAMING ERROR
SOE
EQU
16
SERIAL OVERRUN ERROR
SCTS
EQU
32
SERIAL CLEAR TO SEND
SDR
EQU
64
SERIAL DATA READY
STBE
EQU
128
SERIAL TRANSMITTER BUFFER EMPTY
*
KDR
EQU
1
KEYBOARD DATA READY
PDR
EQU
2
PARALLEL DATA READY
PXDR
EQU
4
PARALLEL DEVICE READY
TFE
EQU
8
TAPE FRAMING ERROR
TOE
EQU
16
TAPE OVERFLOW ERROR
TDR
EQU
64
TAPE DATA READY
TTBE
EQU
128
TAPE TRANSMITTER BUFFER EMPTY
*
SOK
EQU
1
SCROLL OK FLAG
*
TAPE1
EQU
64
TAPE ONE 'ON' BIT
TAPE2
EQU
128
TAPE TWO
*
*
*
*
*
SoL SYSTEM GLOBAL AREA
*
ORG
0C800H
START OF 1K RAM AREA
*
SYSRAM
EQU
$
START OF SYSTEM RAM
SYSTP
EQU
$+1024
STACK IS AT THE TOP
*
*
*
CONSOL PARAMETER AREA
*
NCHAR
DS
1
CURRENT CHARACTER POSITION
LINE
DS
1
CURRENT LINE POSITION
BOT
DS
1
BEGINNING OF TEXT DISPLACEMENT
OPORT
DS
1
OUTPUT PORT
IPORT
DS
1
INPUT PORT
*
*
*
THEAD
DS
5
NAME
DS
1
THIS BYTE MUST BE ZERO
HTYPE
DS
1
TYPE
BLOCK
DS
2
BLOCK SIZE
LOADR
DS
2
LOAD ADDRESS
XEQAD
DS
2
AUTO EXECUTE ADDRESS
HSPR
DS
3
SPARES
*
HLEN
EQU
$-THEAD
LENGTH OF HEADER
*
*

ACOMP
BACKS
BOT
CLERA
COMTA
CRCCK
CUR
DISPT
DOWN
ENLO2
ERAS2
ERROT
GOBAC
HCOV1
HOME
ITAB
KREA1
LEFT
LOADR
NCOM
OK
PBACK
PDOWN
PLEFT
PROCS
RDBLK
RIGHT
SC
SCONV
SDR
SEROT
SHE1
SOHL
SPE
SSTAT
SYSRA
TAPIN
TERM
TIN
TOFF
TTBL
VDADD
XEQAD

C302
005F
C802
C26A
C194
C3C1
C0C1
C071
009A
C324
COD6
C1AD
C056
C25B
008E
C18C
CO27
0081
C80E
C20B
COAD
C145
COFA
C1OD
C1D2
C370
OO93
C161
C23E
0040
C040
C247
C3A7
0004
C031
C800
C3C6
C270
C290
C3ED
0080
C121
C810

ADOUT
BGIN
BOUT
CLIN1
CONT
CREM
CX
DLOOP
DSTAT
ENLOP
ERAS3
EXEC
GOBK
HEOU1
HSPR
KDATA
KREAD
LF
LOLOO
NEXT
OPORT
PCR
PDR
PLF
PROMP
RHEA1
RTBYT
SCD
SCROL
SDROT
SERST
SHEX
SOK
SREA1
SIAPT
SYSTP
TBL
TERR
TLOAD
TOUT
UP
VDMEM

C2DD
C001
C2E5
C0E9
C1CC
C13D
0018
C2B7
00FE
C30B
C0DD
C335
C05D
C2F3
C812
00FC
C028
000A
C361
C076
C803
C14E
0002
C155
C212
C396
C373
0001
C098
C041
00F8
C244
0001
C036
00FA
CC00
C165
C386
C339
C28D
0097
CC00

AINP
BLANK
CHAR
CLINE
COPRC
CRLF
DELAY
DLOP1
DUMP
ENTER
ERR1
FDCOM
HBOUT
HEOUT
HTYPE
KDR
KSTAT
LINE
MODE
NPASS
OTAB
PCUR
PERSE
POVER
PUP
RHEAD
SBLK
SCHR
SCTS
SDSR
SETSP
SINP
SOUT
SREAD
STBE
TAPE1
TDATA
TFE
TLOD1
TREDY
VDAD
VDMO1

C016
0020
C07B
C0E3
C1E1
C21A
C3F1
C3F4
C2A1
C307
C38E
C1F4
C2E2
C2EA
C80B
0001
C022
C801
0080
C2B6
C184
C113
C0C5
C2B4
C104
C394
C224
C232
0020
0002
C34B
C013
C004
C037
0080
0040
00FB
0008
C354
C3D7
C128
C04C

AOUT
BLOCK
CLEAR
COMND
CR
CRPRC
DFLT
DLP1
ENLO1
ERAS1
ERR2
GCLIN
HCONV
HLEN
IPORT
KIN
LBLK
LOADK
NCHAR
OCHAR
OUTH
PDATA
PHOME
PRIT
PXDR
RHED1
SBLK1
SCHR1
SDATA
SENSE
SFE
SOE
SPACE
SROL
STRTA
TAPE2
TDR
THEAD
TOE
TSRCH
VDAD2
VDMOT

C007
C80C
008B
C1B4
000D
C1DD
C34A
C2C9
C31C
C0CA
C38F
C1C3
C24B
0010
C804
C279
C3E1
008C
C800
C081
C2FE
00FD
C0F3
C117
0004
C3B4
C226
C234
00F9
00FF
0008
0010
0020
C09C
C265
0080
0040
C805
0010
C062
C125
C04B

(continued from page 4)
009E
00A1
00A4
00A7
00AA
00AD
00B0
00B3
00B6
00B9
00BC
00BF
00C2
00C5
00C8
00CB
00CD
00CE
00CF
00D0
00D1
00D4
00D7
00D8
00DB
00DC
00DD
00DE
00DF
00E0
00E1
00E2
00E4
00E7
00EA
00ED
00ED
00F0
00F1
00F4
00F7
00F8
00F9
00FA
00FB
00FE
00FF
00FF
0102
0104
0105
0106
0107
0108
0109
010A
010B
010E
010F
010F
0112
0113
0114
0116
0119
011A
011B
011D
0120
0123
0123
0125
0126
0127
012A
012B
012C
012D
012E
0131
0131
0133
0136
0139
013C

22
2A
22
2A
22
22
22
2A
22
2A
22
2A
22
01
21
36
03
23
AF
A8
C2
21
EB
21
7E
23
EB
77
23
7C
EB
FE
C2
CD
C3

F1
78
24
7A
26
28
2A
7C
2C
7E
2E
80
30
DF
62
19

04
01
05
01
05
05
05
01
05
01
05
01
05
FF
05

01
C5
CD
CD
C1
0B
AF
A8
C2
C9

40 03

CB 00
00 CC
84 01

D0
DB 00
ED 00
D4 00

FF 00
0F 01

F0 00

21 01 CC
0E D0
7E
2B
77
23
23
7C
B9
C2 04 01
C9
21
7E
23
FE
C2
23
7E
FE
C2
11

00 CC
06
12 01
11
31 01
7E 14

06 07
72
05
CA 52 01
23
73
23
05
C2 25 01
FE
C2
11
C3
FE

14
3C 01
2D 13
23 01
13

0710
0720
0730
0740
0750
0760
0770
0780
0780
0800
0810
0820
0830
0840
8850
0860
0870
0880
0890
0900
0910
0920
0930
0940
0950
0960
0970
0980
0990
1000
1010
1020
1030
1040
1050
1060
1070
1080
1090
1100
1110
1120
1130
1140
1150
1160
1170
1180
1190
1200
1210
1220
1230
1240
1250
1260
1270
1280
1290
1300
1310
1320
1330
1340
1350
1360
1370
1380
1390
1400
1410
1420
1430
1440
1450
1460
1470
1480
1490
1500
1510
1520
1530
1540
1550

RAILS

HOSTL
FIRE

.
TRAVL
CHOO

.
STROK
COAL

.
TURN
HISS

FOUND
AXLE

.
AXL1
AXL2

.
NXT1

NXT2

SHLD
LHLD
SHLD
LHLD
SHLD
SHLD
SHLD
LHLD
SHLD
LHLD
SHLD
LHLD
SHLD
LXI
LXI
MVI
INX
INX
XRA
XRA
JNZ
LXI
XCHG
LXI
MOV
INX
XCHG
MOV
INX
MOV
XCHG
CPI
JNZ
CALL
JMP

SHED+36DH FIREMAN
FRA1
.. THE LITTLE ENGINE
SHED+3A0H ALSO
FRA2
.. HAD A COWCATCHER
SHED+3A2H AND LOTS OF FUNNY
SHED+3A4H WHEELS AND THE
SHED+3A6H THINGS THAT CONNECTED
FRA3
.. AND TWO VERY TINY
SHED+3A8H WHEELS AT THE VERY
FRA4
.. VERY BACK
SHED+3AAH ALTOGETHER IT LOOKED
FRA5
.. QUITE LONELY AND YET
SHED+3ACH IT APPEARED VERY
B,-21H . FUNNY JUST SITTING
H,SHED+3DEH THERE ON THE
M,19H .. RAILS
B
.. WITH NOTHING AT ALL
H
.. EVER
A
.. TO DO
B
..
W E L L !
RAILS .. LET'S RUN IT JUST FOR FUN
H,RRY GET TRAIN OUT OF SHED
.
MOVE IT FROM SHED
H,SHED
A,M
LIGHT FIRE
H

LXI
PUSH
CALL
CALL
POP
DCX
XRA
XRA
JNZ
RET

B,64.13 MAKE TRIP 13 MILES
B
CHUFF ONCE
STROK MAKE FORWARD MOTION
TURN
TURN WHEELS
B
B
CLICK ODOMETER
A
B
13 MILES YET?
CHOO
NO
.
DO NEXT TRIP

LXI
MVI
MOV
DCX
MOV
INX
INX
MOV
CMP
JNZ
RET

H,0CC01H MOVE DOWN THE TRACK
C,0D0H
A,M
ADD MORE COAL
H
M,A
H
H
A,H
C
ENOUGH COAL?
COAL
NO, PUT MORE ON!

LXI
MOV
INX
CPI
JNZ
INX
MOV
CPI
JNZ
LXI

H,0CC00H TURN WHEELS
A,M
H
6
FIND COWCATCHER
HISS
LOOK AGAIN
H
A,M
11H
WHAT QUARTER TURN?
NXT1
D,147EH NEXT QUARTER TURN

MVI
MOV
DCR
JZ
INX
MOV
INX
DCR
JNZ

B,7
M,D
B
WORK
H
M,E
H
B
AXL2

CPI
JNZ
LXI
JMP
CPI

14H
QUARTER TURN
NXT2
D,132DH
AXL1
13H
QUARTER TURN

M,A
H
A,H

..MOVE IT

0D0H
END OF YARD?
FIRE
NO, MAKE MORE STEAM!
TRAVL GO TAKE TRIP
HOSTLE NO ROUND TRIPS, JUST DO AGAIN

DO 4 AXLES
WHEELS MOVED HERE
LAST WHEEL?
I'VE BEEN WORKIN'...
..ON THE RAILROAD..
(SIDE RODS MOVED HERE)
..ALL THE LIVE..
..LONG DAY.....

Page 11

013E
0141
0144
0147
0149
014C
014F
0152
0152
0155
0156
0158
015A
015D
015E
015F
0162
0163
0163
0163
0166
0166
0166
0166
0166
0168
016A
016C
016E
0170
0172
0174
0176
0178
017A
017C
017E
0180
0182
0184
0185
0185
0185

C2
11
C3
FE
C2
11
C3

47
5F
23
12
1A
2D
23

01
12
01

01
0B
DB
E6
C2
AF
A8
C2
C9

B8 0B

01
11
01

00
40
63 01
55 01

C3 60 E0

01
10
7E
28
0A
0A
0A
39
5D
06
11
11
6F
6F
19
00

10
5D
20
0A
19
0A
5B
39
20
20
2D
20
2D
20
19

1560
1570
1580
1590
1600
1610
1620
1630
1640
1650
1660
1670
1680
1690
1700
1710
1720
1730
1740
1750
1760
1770
1780
1790
1800
1810
1820
1830
1840
1850
1860
1870
1880
1890
1900
1910
1920
1930
1940
1950
1960
1970

NXT3

.
WORK
OIL

JNZ
LXI
JMP
CPI
JNZ
LXI
JMP

NXT3
D,125FH
AXL1
12H
QUARTER TURN
AXLE
D,112DH
AXL1

LXI
DCX
IN
ANI
JNZ
XRA
XRA
JNZ
RET

B,3000
B,
0
RDA
QUIT
A
B
OIL

DID THE CONDUCTOR
..FLAG US DOWN?
QUITTIN' TIME
NO, THEN HIGHBALL
NO SQUEEKS, PLEASE!

.
. PUT A JUMP TO WHEREVER YOU NEED TO RETURN IN THE NEXT
QUIT
JMP
ALS8
..YOUR RETURN LINK GOES HERE
.
RDA
EQU
40H
PUT YOUR DATA READY FLAG HERE
RRY
EQU
0CC00H
SMOKE
EQU
6FH
SMOKE CHARACTER
CAB1
DW
1001H CAB DESCRIPTION
CAB2
DW
5D10H "
"
CAB3
DW
207EH "
"
BOI1
DW
0A28H BOILER DESCRIPTION
BOI2
DW
190AH "
"
BOI3
DW
0A0AH "
"
BOI4
DW
5B0AH "
"
BOI5
DW
3939H "
"
BOI6
DW
205DH "
"
FRA1
DW
2006H FRAME DESCRIPTION
FRA2
DW
2D11H "
"
FRA3
DW
2011H "
"
FRA4
DW
2D6FH "
"
FRA5
DW
206FH "
"
TIES
DW
1919H TIES DESCRIPTION
SHED
NOP
.
THIS IS SHED AREA
CLOUD
EQU
$+0172H BEGINNING OF CLOUD
.

:10000000AFD3C82184010100083620230BAFA8C2090021F702110000060F07
:1A001A00CD5000112B00060DCD50001130000609CD50001134000604CD506A
:1A00340000113B000602CD5000113C000601CD5000113E000601CD5000C39A
:1A004E00590019366F2305C25100C921A604361621A904360721AB04366EE7
:1A0068002A660122AE042A680122B0042A6A0122B2042A6C0122E5042A6E09
:1A0082000122E7042A700122E90422EB042A720122ED042A740122EF042A0D
:1A009C00760122F1042A78012224052A7A01222605222805222A052A7C0195
:1A00B600222C052A7E01222E052A800122300501DFFF21620536190323AF52
:1A00D000A8C2CB002100CCEB2184017E23EB77237CEBFED0C2DB00CDED00B1
:1A00EA00C3D400014003C5CDFF00CD0F01C10BAFA8C2F000C92101CC0ED049
:1A0104007E2B7723237CB9C20401C92100CC7E23FE06C21201237EFE11C2DD
:1A011E003101117E1406077205CA520123732305C22501FE14C23C01112D5C
:1A01380013C32301FE13C24701115F12C32301FE12C21A01112D11C323010C
:1A01520001B80B0BDB00E640C26301AFA8C25501C9C300060110105D7E2046
:1A016C00280A0A190A0A0A5B39395D200620112D11206F2D6F20191900CB
:00



Source Exif Data:
File Type                       : PDF
File Type Extension             : pdf
MIME Type                       : application/pdf
PDF Version                     : 1.2
Linearized                      : No
Page Count                      : 12
Creator                         : Microsoft Word
Create Date                     : Saturday, January 15, 2000 11:29:54 PM
Title                           : Processor Tech Access, Vol 1, Number 1
Author                          : OCR'd and formatted by Jim Battle
Producer                        : Acrobat PDFWriter 3.02 for Windows
Subject                         : 
EXIF Metadata provided by EXIF.tools

Navigation menu