Cromemco Z-l Monitor User manual

Z
-1
MONITOR
Crolllellleo
Specialist.
in
computer
peripherals
2432
Ch.rleston
Rd.,
Moun"'n
View, CA
94043
•(415) 964-1400

CROMEMCO
Z-l
MONITOR
Copyright
1976
by
CROMEMCO
lK
Version
The
Z-l
Monitor
makes
it
possible
to
control
computers
which
use
the
CROMEMCO
Zpu™
from
a
terminal
keyboard.
It
includes
executive
commands
to
examine
and
change
memory,
make a
binary
or
an
ASCII dump
of
memory, move
and
compare
blocks
of
memory,
output
a
byte
of
data
to
any
port,
read
and
write
binary
paper
tapes,
and
program
2708
and
2704
proms
using
the
CROMEMCO
BYTESAVER.
Transfer
of
control
to
a
program
in
memory
can
be
commanded
from
the
keyboard
with
up
to
five
breakpoints
set
and
with
the
initial
contents
of
the
ZPU
registers
specified.
When
a
breakpoint
is
encountered
during
execution,
control
is
transferred
back
to
the
monitor
and
the
contents
of
all
22
ZPU
registers
are
stored
and
displayed.
These
register
values
can
be
examined
and
changed.
before
execution
of
the
program
is
resumed.
The
Z-l
Monitor
was
designed
to
be
flexible
as
well
as
powerful.
For
example,
the
monitor
does
not
require
the
user
to
address
a
RAM
board
at
a
special
place
in
memory
for
its
own
use.
Rather,
it
finds
the
highest
page
of
RAM
active
in
the
machine
and
places
its
stack
and
temporary
storage
area
there.
(The
top
4AH
or
74
bytes
of
this
page
should
be
reserved
for
system
use.)
The
monitor
is
also
flexible
in
its
command
format.
It
will
accept
command
words
of
any
length,
but
it
only
looks
at
the
first
and
last
characters
typed
in.
This
allows
the
use
of
either
longer
expressions
for
their
mnemonic
value
or
shorter
expressions
for
their
brevity.
For
example,
any
of
the
following

-2-
OR
DI8PLAYR
D8PR
causes
the
contents
of
all
22
user-registers
to
be
displayed
on
the
terminal.
Many
of
the
commands
apply
to
a
range
of
memory.
For
example:
MOV
2408 240A
BODO
will
move
the
contents
of
locations
2408
through
240A
to
BOOO
through
B003.
Another
way
to
accomplish
the
same
thing
is
by
means
of
the
swath~operator.
Thus:
MOV
2408 83
BOOO
will
move
to
BOOO
a
swath
of
3
bytes
starting
at
2408.
The
format
is
free-form
with
respect
to
spaces.
MOV
2408 S 3
MOV
240883
MV
240883
BOOO
BODO
BOOO
All
have
the
same
effect.
Note
that
at
least
one
space
follows
the
command word
and
at
least
one
space
separates
a
pair
of
numeric
operands
such
as
13
1
and
'BOOO
I•

-~-
USE
OF
THE
MONITOR
Set
the
power-on
jump
switch
on
the
ZPU
card
to
E(1110
binary).
Whenever
the
computer
is
reset
control
will
then
immediately
pass
to
the
monitor.
If
the
ZPU
is
installed
in
the
CROMEMCO
Z_lTM
computer,
depress
CARRIAGE
RETURN
from
2
to
3
times.
This
will
set
the
UART
on
the
serial
interface
card
to
the
baud
rate
of
the
terminal
being
used.
When
used
with
a
serial
interface
card
with
baud
rate
fixed
to
that
of
the
terminal,
simply
depress
CARRIAGE
RETURN
twice.
The
monitor
will
respond
CROMEMCO
MONl.O
C.l976
followed
by
a
prompt
':'.
The
monitor
is
then
ready
to
accept
commands
from
the
keyboard.
When
entering
an
address
as
the
operand
of
acommand,
only
the
last
four
digits
typed
in
are
retained.
For
example:
12345
is
read
as
2345.
Therefore,
if
a
wrong
digit
is
entered,
continue
typing
until
the
last
four
digits
are
correct.
There
is
a
hazard
with
this,
however.
An
extra
'F'
inadvertently
typed
when
tlFFF'
is
desired
yields
'FFFF'
instead.

-4-
When
atwo
digit
number,
such
as
a
data
byte
is
entered,
only
the
last
two
digits
typed
are
retained.
If
the
monitor
detects
an
error
condition,
the
command
is
aborted,
a
I?'
is
printed
followed
by
the
prompt
I:'
for
the
next
command.
Any command may
be
aborted
from
the
keyboard
either
when
the
monitor
is
requesting
further
input,
or
during
print-out,
by
depressing
ESCAPE.
For
teletypes
ESCAPE
is
the
same
as
CONTROL-
SHIFT-K.
For
most
other
terminals
it
is
CONTROL
SEMI-COLON.
Two
cautions
should
be
noted.
when
using
the
MOV
or
the
PRGM
commands,
be
careful
not
to
overwrite
the
system
stack
and
temporary
storage
area
which
resides
in
the
upper
4AH
or
72
bytes
of
active
RAM
installed
in
the
machine.
When
the
computer
is
reset,
the
monitor
is
also
reset.
If
a
user
program
is
executing
at
the
time
with
breakpoints
set,
then
these
breakpoints
will
remain
in
the
user
program
until
removed
by
hand.
(The
normal
procedure
is
for
the
monitor
to
restore
the
user
program
code
whenever
a
breakpoint
is
executed.)
The
monitor
assumes
that
data
transfer
occurs
on
I/O
port
1.
Status
flags
are
transmitted
over
input
port
O.
The
Data
Available
Flag
is
on
bit
6
of
input
port
O.
The
Transmitter
Buffer
Empty
flag
is
on
bit
7
of
input
port
o.

-5-
COMMANDS
1.
DSPM
(Start)
(Stop)
(CARRIAGE
RETURN)
Display
memory
(OM
is
the
short
form)
starting
with
location
Start
and
ending
with
Stop.
As
with
all
2-operand
commands,
the
swath-operator
may
be
used
instead.
DSPM
(Start)
S
(Swath
width)
(CR).
2.
DSPR
(CR)
Example:
:DSPM
100
S 3
0100:
AB
34 7F
Display
registers
(DR).
The
22
registers
are
displayed
with
the
following
format:
OOPC
OAOF
AAFF
OOSP
OBOC
ODOE
BBCC
DDEE
OHOL
HHLL
orOT
OOlX
DalY
where
the
placement
of
a
I-byte
register,
such
as
A
is
indi-
cated
by
"OA",
of
a
2-byte
register,
such
as
the
program
counter,
PC,
by
"DOPC",
and
of
a
primed
register,
such
as
A'
by
"AA". The T
register,
by
the
way,
contains
I
if
interrupts
were
enabled
when
the
monitor
was
entered,
and
0
otherwise.
3.
GO
(CR)
Resumes
execution
at
the
location
contained
in
the
user
pro-
gram
counter,
pc.
GO
(Addr)
(CR)
Begins
execution
at
Addr.

-6-
4.
GO/
(bpI)
(Bp2)
•••
(CR)
Resumes
execution
at
the
location
of
PC
with
breakpoints
set
BpI,
Bp2,
....
(Up
to
5
breakpoints
may
be
set.)
GO
(Addr)/(Bpl)
(Bp2)
..•
(CR)
Begins
execution
at
Addr
with
the
indicated
breakpoints
set.
All
breakpoints
are
cleared
upon
re-entry
of
the
monitor
from
a
breakpoint.
5.
MOV
(Start)
(Stop)
(Destination)
(CR)
Move
(MV)
the
contents
of
memory
beginning
with
Start
and
ending
with
Stop
to
Destination.
After
the
move,
the
monitor
verifies
that
source
and
destination
are
the
same.
This
will
result
in
a
print-out
of
discrepancies
which
are
not
really
errors
after
certain
types
of
overlapping
moves.
However,
this
print-out
can
be
terminated
by
depressing
ESCAPE.
The
MOV
command
can
be
used
to
fill
a
block
of
memory
with
a
constant.
For
example,
to
enter
zeros
between
locations
lao.
and
100,
use
the
8B8M
command
to
enter
a
at
location
100,
and
then
move 100
through
10C
to
101:
MOV
100
laC
101
Care
should
be
taken
not
to
overwrite
the
system
stack
which
resides
in
the
upper
4AH
or
74
bytes
of
active
RAM.
6.
OUT
(Data
Byte)
(Port)
Output
(OT)
Data
Byte
to
Port.
One
use
of
this
command
is

-7-
to
select
banks
on
CROMEMCO
memory
boards.
When
the
monitor
is
first
entered
on
power-up
or
reset,
it
selects
bank
0
and
turns
off
all
other
memory
banks.
Either
a
software
output
or
a
monitor
serves
to
change
the
bank
selection.
output
a
byte
with
bit
n
high.
output
to
port
40
hex
To
select
bank
n
Bank
Output
byte
0
01
102
2
04
308
4
10
520
640
780
For
example,
the
following
command
selects
bank
4
OUT
10
40
7.
PRGM
(Source)
(Source-end)
(Destination)
Program
(PM)
from
Source
through
Source-end
into
proms
beginning
at
Destination.
If
the
length
of
the
source
is
not
a
multiple
of
400H
(1024
decimal)
or
if
the
destination
does
not
begin
at
a400H
boundary,
the
monitor
will
reject
the
command.
(Multiples
of
400H
end
in
000,
400,
800,
or
COO.)
8.
READ
(Start)
(Stop)
(CR)
Read
(RD)
input
from
paper
tape
reader
or
console
and
store
in
memory
beginning
at
Start.

-9-
9.
SUBM
(Addr)
(SPACE)
Substitute
memory (8M).
Displays
the
contents
of
Addr
and
outputs
a
DOT,
'.',
as
a
prompt
for
the
substituted
value.
If
no
change
is
desired,
type
another
'.'.
Otherwise,
enter
the
new
value.
The
monitor
accepts
hex
digits
until
it
gets
a
delimiter,
such
as
a
SPACE
or
DOT,
retaining
the
last
2
digits
entered
as
the
value.
After
it
receives
a
delimiter,
the
monitor
outputs
the
contents
of
the
next
sequential
memory
location
with
a
DOT
prompt.
To
terminate,
depress
ESCAPE.
10.
8UBR
(Register)
(SPACE)
Where
Register
may
be
PC,
SP,
A,
F,
B,
C,
0,
E,
H,
L,
I,
T
(Interrupts-enabled
state),
X
(IX),
Y
(IY),
A',
B',
C',
01,
E',
FT,
H',
or
LT.
Substitute
register
(SR).
This
works
like
the
Substitute
-
memory command
with
two
exceptions.
(1)
When
SUbstituting,
for
the
value
of
a
2-byte
register,
the
monitor
retains
the
last
4
digits
before
the
delimiter,
and
(2)
after
accepting
the
substitution
value
for
one
register,
it
awaits
entry
of
the
ID
of
the
next
register.
11.
VRFY
(Start)
(Stop)
(Destination)
(CR)
Verify
(VY)
that
the
block
of
memory
between
Start
and
Stop
contains
the
same
values
as
the
block
beginning
at
Destina-
tion.
The
address
and
contents
are
printed
for
each
discre-
pancy
found.
12.
WRIT
(Start)
(Stop)
(CR)
write
(WT)
the
contents
of
memory
locations
between
Start

-9-
and
Stop
on
the
console
or
paper
tape
punch.
This
is
useful
for
punching
binary
or
ASCII
paper
tapes
of
the
contents
of
memory,
and
for
looking
at
the
ASCII
contents
of
memory
on
the
console.
when
punching
a
paper
tape,
it
is
often
desirable
to
punch
a
series
of
nulls
as
a
leader.
This
can
be
done
by
filling
about
60
hex
bytes
preceding
the
desired
memory
block
with
zeros
(see
the
MOV
command)
and
writing
out
the
whole
thing
beginning
with
the
nulls.
{Depress
CARRIAGE
RETURN
at
the
end
of
the
WRIT
command
before
turning
on
the
paper-tape
punch
in
order
to
avoid
punching
an
extra
CARRIAGE
RETURN,
LINE FEED,
RUB-OUT
at
the
beginning
of
the
tape.

-10-
CROMEMCO
Z-l
MONITOR
SOURCE
LISTING
,ex
AF
,AF"
,PRIME-ABLE
REG
FLAG
'2-BYTE
REG
FLAG
'ROOM
FOR
TEMP
STORAGE
,RST
LOCATION
'DIFF
BETW
LO~ER
&
UPPER
CA
'MUST
BE
THE
HIGHER
OF
PAGES.
800H
OFDH
OEIH
NON-RAM
6
6
BOH
-40H
07
J
BH
ODH
OAH
o
40H
BOH
I
16H
30H
20H
Eau
eQU
0005 *
lOO6PPAGE
EOU
0007 *A
PAIR
OF
0010
PSW
EOU
.0015
SP
Eeu
.0016
PF
SOU
000
I 7
R2F
EQU
0020
BELL
EOU
0025
ESC
SOU
.0030
CR
EOU
.0035 LF
EQU
.0040
STAT
EOU
,0045
DAV
EQU
D050
TBE
EOU
0055
DATA
EQU
0060
TEMPS
EOU
0065
RSTLC
EOU
00'70
CASE
EOU
.0075 *
0080 *
Z80
OP-COOES
0085 JR
EQU
ISH
0090
JRC
EQU
3SH
0095
JRNC
EOU
30H
OlOO
JRZ
EOU
28H
0105
JRNZ
EOU
21H
01
Ja
DJNZ
EOU
10H
011.5
EXAF
EOU
08
0120
EXX
EOU
OD9H
0125
RLD
EOU
aEOH
OJ30
RLDI
EOU
6FH
0135
CPI
EOU
OEOH
8140 CPII
EOU
OAIH
0145
CPIR
EQU
OEOH
0150 CPIRI
EOU
OBlH
0155
LOI
EOU
oEDH
0160 LOll
EOU
tAOH
0165
LOIR
EQU
OEOH
0170
LOIRI
EQU
IBOH
0115
LOO
EQU
oeOH
0180
LOOI
EOU
GA8H
0185
LDDR
EOU
OEDH
0190
LOORI
EOU
DBSH
0195
SET5A
EOU
OCBH
0200
ST5AI
EOU
OEFH
0205
'*
0210
IX
0215
IV
6220
*
EOOO
EOOO
SOOO
EOOO
EOOO
EOOO
EOOO
EDOO
EOOO
EOOO
EOOO
EGaO
EI.IOO
EOOO
EOOO
EOOO
EOOO
EOGO
EOOO
EOOO
EOOO
EOOG
EOOO
EOOO
EOoo
EOOO
EOOO
E000
EOIO
EOOO
EOOI
EO.OO
EOOO
EOGO
EOOO
EOOO
Eooa
EOOO
EQOO
EOQQ
EMO
EOOO
Eooa
Eeoo
EOOG
EOCO
EDna
EOQO

.
-11-
'FORCE
USER
SP
TIl
,PO
INT
TO
PROM
,POP
IX,STORAGE
PNTR
'SELECT
BANK
0
'DID
IT
CHANGE?
'UseR I&
INTERRUPT
ENABLE
'ssc
HL,DE.
BACK
TO
UPC,HI
,(
CY
WAS
SET
BY
"'DAD
D')
A,
J
40H
H,OOFFH-TEMPS+2
H
A,M
M
M
JRZ
INIT-$-I
M'YES.
RESTORE
IT.
D,PPAGE
H
H
M,D
M,O
,BP
STACK
END
MARK
A,L
'SAVE
H
'STORAGE
FOR
BPSP,LO
M,A 'STORE
BPSP
,LO
D,DUHL2-2
o
'TO
END
OF
REG
STORAGE
'SiS
SP
oeDH
52H
H
IX
H
MV!
MOV
DCX
MOV
LXI
DAD
SPHL
MVI
our
LXI
OCR
MOV
INR
CMP
DB
DB
DCR
DB
DB
PUSH
DB
POP
MVI
DCX
DCX
MOV
0225 *DISPLACEMENTS
FROM
IX
OF
HI
BYTE
OF
REG
PAIRS
0230
DUPC
EOU
•
0235
CUSP
EOU-2
G2~0
DUAF
Eau
-4
0245
DUBC
Eau
-6
0250
DUDe
Eau
-8
0255
CUHL
EOU
-JI
...
0260
-DIH!
EQU
...
_~
2
0265
DUIX
SOU
-I~
0270
DUlY
EOU
-J6
0275
DUAF2
EOU
'-18
0280
DUBC2
EOU
-20
0285
DUCE2
SOU
-22
0290
DUHL2
Eau
-24
0295 *
0300
*.,
START
0305 *
ENTER
MONITOR
FROM
RESET
0310
*
0315 *
,.
(1)320
*
ORO
OEOOOH
.0325 *
0330
0.335
0340
*
0345 *
PLACE
SYS
STACK
AT
HIGHEST
PAGE
OF
0350
*
AVAILABLE
RAM.
0355
*
ALLOW
RCX)M
FOR
TEI\(P
STORAGE.
0360
*
0365
0370 INIT
0385
0390
0395
0400
0405
0410
O~15
*
U440
*
HL
NOW
POINTS
TO
BP
STACK
END
0445 *
0455
0465
0470
0475
0480
04dl
04d2
0483
*
0484
0485
0~86
0487
O~B8
0489
*
0490
O~91
0492
0~93
O~95
*
EooO
EOCW
EooO
EOOO
EooO
SOOO
EOOO
EOOO
ENO
EOOO
EOOO
EOOO
EOOO
EOOO
EOOO
EOOO
EOOa
EOOO
EOOO
EODO
EoOO
EOOO
3E 01
E002
03
40
EOO~
EOO"
E8G~
EOO~
EOO~
EOO~
21
EB
00
E007 25
Eooa
7E
E009
3~
EOOA
BE
EOOB
28
EOOC
FA
EOOD
35
EGOE
EOOE
EOOE
EOOE
36
00
EOIO
70
EOII 28
.E012 77
EOJ
3II E6
FF
EOl6
19
EOl7
F9
EOl8
EOIS
ED
EOJ9
52
EOIA E5
EOIB
DO
EOIC EI
EOID
EeliD
16
E I
EOI F
2B
el20
2B
E021
72
E022

-12-
PAGE
'SAVE
,UAF
,UBC
,UDE
,UHL
'HEADING
ICAN
WE
IREAD
IA
CR?
'DID
IT
CHANGE?
'SET
BAUD
RATE
I
USP
(USER-SP)
ITO
STACK
I
ADJUST
BRKPT
RET
AODR
' .
H
PSW
B
D
H
STAT
GBYTE
GBYTE
7FH
CR
JR
CMND-$-1
A,006H
,300
BAUD
BAUD
A,OF4H
'110
BAUD
BAUD
JRNZ
INITI-$-I
H,OOFFH-TEMPS
H
IDECRM
MEM
A,M
M
let
JRZ
SV'MSI-$-l
H,HEAD
PMSG
H
H,4
SP
XTHL
DCX
XTHL
LXI
OCR
MOV
INR
CMP
DB
DB
PUSH
PUSH
PUSH
PUSH
DB
DB
LXI
CALL
PUSH
LXI
DAD
XTHL
MVI
CALL.
MVI
CNZ
DB
DB
OUT
CALL
CALL
ANI
CPI
RET
u500 *
SET
BAUD
RATE
0505
*
0510
INI!I
0515
0520
.0525
0537
0538
0540
*
0545
0550
0555
*
056(9
0565
0566
*
O~67
*
0568
BAUD
0569
0570
0571
0572
0513
0515
*
0580 •
ENTER
MON
ITOR
FR()~
BRKPT
0585 *
0590 *
SAVE
MACH.INE
STATE.
SAVES
ALL
REGS
~n""'L.oIJ&Ju"v
0595 *SP,
FINDS
THE
TOP
OF
RAM
INSTALLED
IN
MACHINE
0600 *&
S~ITCHES
fHE
STACK
THERE.
J605
*
0610
SVMS
0615
0620
u625 *
0630
0635
0640
0645
0650
*
0655
0660
0665
0670
0675 *
0680 *
FIND
SYS
STACK
AGAIN
0685 *
0690
0695
SVMS
I
0710
0715
0720
0725
0730
E022
E022
E022
3E
08
E024
CD
36
EO
E027
3E
F4
E029
C4
36
EO
E02C
20
E020
F4
E02E
E02E
21
94
E3
8031
CD
OC
E2
E034
E034 18
E035
.66
E036
E036
E036 03
00
E038
CD
41
EI
E036
CD
41
El
E03E
E6
7F
E040
FE
00
8042
C9
E043
E043
E04'"
EOl3
E043
8143
E043
E043
E3
E044 28
E045
E3
E046
E046
E5
E047
21
04
00
E04A
39
E048
E3
E04C
E04(.;
F5
E040
C5
E04E
D5
E04F
E5
E050
E050
E050
E050
2.1
E9
00
E053
25
E054
7E
E055 34
E056
BE
E057
2d
1:058
FA

-1'3-
RESTORE
IT.
,LO
A,
I
,UIF
(USER-I
&
USER-IFF)
,ro
IX
(POINTS
TO
UPC)
'IFF?
,PNTS
TO
BPRA,
HI
BYTE
'TRANSFER
TO
SYS
STACK
'PUSH
I
Xl
U
IX
'YES.
'PUSH
IX
'POINTS
TO
BPSP,LO
,BPSP
NOW
IN
Hl
'UBC2
,UDE2
,UHL2
,SYS
SP
'DE
HAS
CURRENT
VALUE
OF
UR
'HL
HAS
CURRENT
VALUE
OF
POINTS
TO
UR
M
EXAF
PS~
EXX
B
D
H
IX
H
H
H
L,M
OEOH
57H
C,O
SVMS3
C
USER-I
FF
B,A
B
IX
H
IY
H
'PUSH
IY,
UIY
B,DUPC-DUHL+I
.a
+PNTS
TO
upe.
HI·
BYTe
H
IX
H
OCR
DB
PUSH
POP
INX
MOV
DB
PUSH
DB
PUSH
PUSH
PUSH
DB
PUSH
DB
PUSH
LXI
DAD
PUSH
DB
POP
0735
0140
*
0745
XCHG
0750
LXI
H,
II
0755
DAD
SP
0760
LXI
B,12
0765
DB
LDDR
0770
DB
LDDRI
0115
INX
0
01dO *
51'S
SP
AND
POINTS
TO
0785
INX
H
0790
*
USER
SP
AND
ALSO
0795
XCHO
oaoo
SPHL
uo05
*
0810
DB
0815
DB
0820
MVI
0825
JPO
0830
INR
0835 *C
NOW
HOLDS
OS"'"
SVMS3
MOV
0845
PUSH
0859
*
0855
0860
OS65
0870
0875
0880
0885
0890
0895
0900
*
0905
0910
0915
0920
0925
0930
0935
*
0940
*
0945
0950
0955
0960
0965
0970
*
0975 *
CLEAR
ALL
BRKPIS
0989
*
EOS9
35
EQ5A
E05A
EB
EOSB
21
OB
00
E05E
39
E.5F
01
OC
00
1:062
ED
E063
88
E06
.. 13
E065
E065
23
E0-66
E066
EB
E061
F9
E06S
E06d
ED
E069
51
E06A
OE
00
E06C
E2
70
EO
E06F
OC
E010
E070
..
7
E071
C5
E072
E072
DO
E073
E5
E014FD
E075
E5
E076
01
OB
00
E01Q
09
E07A
E5
E07a
DO
E07C
EI
E07D
ECUD
08
E~7E
F5
E07F
09
EOSO
C5
E081
05
E082
E5
EOS3
E083
EOS3
DO
E084
E5
EOt:55
El
EOS6 23
EOB7
6S
E08a
EOB8
EOSd

-14-
BEl()~
'A"
'DISPLAY
USER
REGISTERS
'TIMES
2
I+
TBl
ADDR
I
RESTOR
E
CONTENTS
TO
MEM
I
BP
srK
EMPTY
1
ISET
UP
RETURN
'TO
CMND
'A
&C
HAVE
CMND
DELIMITER
•
ADJU
ST
8PSP
A,M
A
JRZ
CLBP2-$-1
A,l
H
M,A
H
D,M
H
E,M
H
A~M
o
H
JR
CLBP1-$-1
D,CMNDI
o
Ate
DSPR
H
o
E,M
H
D,M
"A"+CASE
'.lA'
OR
ABO~E1
JRC
ERROR-$-I
2'.50
I"
y,
OR
BELOW
1
IIF
NOT,
CONTINUE
CALL
OCX
MOV
DCX
MOV
DCX
MOV
STAX
DCX
DB
DB
MOV
ORA
DB
DB
.
CALL
CRLF
LX
IH,
PRMPT
CALL
PMSG
HL
NOW
PNTS
TO
rBl
ADDR
CALL
GCMND
IDE
GETS
LETTER
-
XCHG
DAD
DAD
MOV
INX
MOV
XCHG
LXI
PUSH
MOV
PCHL
0985
CLBP
I
0990
0995
IQO
1005 *
1010
iOl5
1020
1025
1030
1035
J040
1045
I05e
1055
1060 *
1065 CLBP2
MOV
1070
DCX
1075
MOV
10dO
*
I120
JI25
*
1130 *
GET
I-BYTE
COMMAND.
I135 *
RETURNS
VALUE
IN
HL
&
JUMPS
TO
THAT
ADOR.
1140
*
I145
CMND
1147
CMNDI
1150
J
155
*
1160
1165
.1170
J175
'J
dO
1185
.1190
J195
1200
1205
120:7
1210
1215 *
1416 *
1417
*
1418 *
REJECTS
ALL
BUT
ALPHABETIC
CHARACTERS.
1.19
*
RETURNS
THE
CHAR
LESS
THEASC
II
VALUE
OF
'A'.
1420 *
1421
ABCYZ
SUI
1422
DB
1423
DB
1424
CPI
1425
Re
E08B
7E
E08.9
B1
E08A
28
EOBB
GA
EoBe
EOSC
2B
EOBD
56
EOdE
28
B08F
5E
Ef)90
2B
E091
7E
E092
12
E093 26
E()9~
18
E895
F2
E096
E096
70
E097
28
E098
77
E099
E099
CO
F5EO
E09C
E09C
E09C
E09C
E09C
CD
OC
EI
E09F
21
63
E3
EOA:2
CD
OC
E2
EOA5
EOAS
CD
IA
E2
EOAB
EB
EOA9
29
EQAA
19
EOAB5E
EOAC
23
EOA056
t:OAt.
EB
EOAF
11
9F
EO
EOB2
05
EOBJ
79
EOB4
E9
SOB5
EOB5
EOBS
EOBS
E.,;BS
EOB5
EOB5
06
61
EOB7
38
EOB8
03
EOB9FE
19
EOBS
08

-15-
'PRINT
~
?
<BELL>~
'PUSH
IX
'INCREMENT
I
ITERAT
IONS
1360
ITERATIONS
'SAVE
*
OF
ITERATIONS
'SOURCE
TO
DE,INCRM
TO
BC,
'SAVE
LATEST
DELIMITER
'IS
INCRM
A
MULT
OF
102.1
'SAVE
'MOVE
IT
'RETRIEVE
,INCRM
TO
HL
,RESeT
CY
,sac
HL,BC
'SOURCE
BACK
TO
HL
'NEW
INCRM
B
JR
CMND-$-J
IGET
NEn
CMND
PSQS
IX
H
H
D,DUHL2-I-DUPC
o
PSW
PSW
B
B,
1024
B
MVE
B
B,181
B
LD2N
PSW
A,B
3
C
JRNZ
ERROR-$-)
PS~
'LAST
DELIMITER
L1
NCR
'SOURCE
TO
HL,
DEST
TO
DE
A,D
'IS
DEST
A
MULT
OF
1024?
3
E
JRNZ
ERROR-$-I
"'VI
PUSH
CALL
PUSH
MOV
ANI
ORA
DB
DB
POP
CALL
MOV
ANI
ORA
DB
DB
1
~26
*
1427 *
1430 *
ERROR
&
ESCAPE.
RETURNS
TO
CMND
WITH
SP
1~3S
*
POINTING
TO
SAVED-REG
AREA
<UHL2).
1440
*
1445
ERROR
CALL
14S0
ESCPE
DB
1455
PUSH
1460
POP
1465
LXI
J470
DAD
1475 SPHL
1480
DB
1485
DB
1
~90
*
1~95
*
1530 *
PROGRAM
PROMS.
ABORTS
IF
DESTINATION
1535 *
IS
NOT
ON
A
IK
(400H)
BOUNDARY,
SWATH
1.540
*
WIDTH
IS
NOT
A
t4ULTIPLE
OF
IK.
1550
*
1570 *
1575
PROG
15dO
PROOI
1590
1595
1600
1605
1610
615
620
623
625
635
640
645
650
655
660 *
665
PROG3
POP
670
PUSH
1675
PUSH
1685
LXI
1687
PUSH
1690 CALL
1691
POP
1730
XTHL
1737
ORA
J74(')
DB
1745
DB
1750
XTHL
1755
POP
EOB~
EOSC
EOBi..::
EOSC
EOBC
EOSe
CD
09
E2
EOBF
DO
EOCO
E5
EOCl
EI
EOC2
II
E7
FF
EOCS
19
EOC6
F9
EOC
I
18
EOC8
03
EOC9
EOC9
EOC9
EOC9
EOC9
EOC9
EOC9
EOC9
06
85
EOCB
CS
EO.cc.
CD
70
EI
E'CF F5
EODa
78
EODI
E6
03
EOD3
BI
EOD~
20
EODS
E6
EOD6
FI
E007
CD
dE
El
EoDA
7A
EODB
E6
03
EOOO
83
EeDE
20
EODf
DC
EOEO
EoEO
Fl
EOEJ
F5
EOE2
C5
EClE3
,0100
04
EOE6
CS
EOE7
CD
S6
E2
EOEA
CI
EOEB
EJ
l::OEC
B7
EOED
ED
EO£E42
cOEF
E3
EOFO
Cl

-16-
,UAF
THRU
UIY
,SAVE
THE
CHAR
,UAF2
THRU
UHL2
'PRINT 2
BYTES
PNTED
TO
B
'PUSH
IX
'POINTS
TO
upe
,upe
&
USP
JRNZ
PROO3-
$-1
'LOOP
I F I
NCRM
NOT
0
PSW
'CLEAN
UP
'BACK
TO
CMND
PS~
STAT
DAV
JRZ
PCHR2-$-1
DATA
7FH
ESC
JRZ
ESCPE-$-I
STAT
TBE
JRZ
PCHR2-$-1
PS~
DATA
CRLF
IX
H
H
B,2
PREGS
8,7
PREGS
B,"
P2BMS
DJNZ
PREGS-$-I
BEl()~)
PUSH
IN
ANI
DB
DB
IN
ANI
DB
DB
POP
RET
CPI
DB
DB
CALL
DB
PUSH
POP
MVI
CALL
MI/I
CALL
MVI
CALL
DB
DB
(CONTINUE
176a
1765
1167
1115
J7dO *
1
782
*
COr.tMAND
1785 *
1800 *
DISPLAY
THE
USE~
REGISTERS.
J
805
*
18100SPR
1815
1820
1825
1830
1835
1840
I
d45
1850
1055
PREGS
1860
1865
1870 *
. I
d7S
*
1880 *
1885 *
PRINT
CR
&LF.
PR2SERVES
ALL
REGS
BUT
A.
1890 *
1895
CRLF
MV
IA,
CR
1900 *
(CONTINUE
BELOW)
1905 *
1910
*
915 *
PRINT
THE
CHARACTER
IN
THE
A-REGISTER.
(CHECKS
920
*
INPUT
FOR
ESCAPE.)
PRESERVES
ALL
REGS.
925 *
930
PCHR
935
940
945
950
955
960
965 *
970 PCHRI
1975
1980
1985 *
1996
PCHR2
IN
1995
ANI
2000
DB
2005
DB
2010
pOP
2015
OUT
EOFI
20
EOF2
ED
EOF3
Fl
E'F4
C9
EOFS
EOF5
EOF5
EOFS
EOF5
EOF5
CD
OC
Et
EOF8
DO
EOF9
E5
E0FA
EI
SOFB
16
02
EOFD
CD
07
EI
E.00
06
07
E
02
CD
07
1:
I
E
05
06
04
E
07
CO
4A
El
E
OA
10
E
OB
FB
E
OC
E
DC
E
OC
E
OC
E
OC
E
OC
3E
00
E
OE
E
DE
E
OE
El0E
EJIE
EIOE
EIOE
F5
EIOF
DB
00
E
til
E6
40
EI13
28
E I J4
OS
EllS
DB
0 I
E.l17
E6
7F
EI19
EJ
19
,FE
I B
Ell
B
28
Ell
C
A2
E.IID
EIIO
DB
00
EIIF
E680
EI21
28
EI22
FA
EI23
Fl
EI24
03
01

-17-
A,15
PNM
H
PNM
H
PS~
H
H,LFNN
eft
PMSG
H
PSW
STAT
DAV
JRZ
GBYfE-$-1
DATA
A,20H
JR
PCHR-$-.I
GBYTE
7FH
'A"'
JRC
GCHRI-$-I
2CJ>H
'CONVERT
TO
LO~ER-CASSE
PSW
'SAVE
THE
CHAR
JR
PCHRI-$-I 'PRINT IT
CALL
ANI
CPI
DB
DB
ORI
PUSH
DB
DB
PUSH
PUSH
LXI
CPI
CZ
POP
POP
RET
2020
2025
2030
2035
2040
2045
2050
2055
,,060 *
2065 *
2070 *
OET
CHARACTER.
RETURNS
IT
IN
A.
CONVERTS
2075
*
ALPHA
CHARS
TO
LCMER-CASE.
ALTERS F.
2080
*
2085
GCHR
20d7
2090
2095
2100
2105
2110
GCHR
J
2.112
2115
211 6*
2-111··*
2118
GBYfE
IN
2119
AN
I
2120
DB
.
2121
DB
2122
IN
,_
2123
RET
212·4 *
2J25 *
PRINT
2
BYTES
IN
(HL) &
(HL
-
I).
21JO
*
DECREMENTS
HL
BY
2.
ALTERS
A.
PRESERVES
OTHERS
2135 *
2140
P2BMS
CALL
2145
DCX
2150
CALL
2155
DCX
2160
*
2165 *
2170 *
PRINTS
SPACE.
PRESERVES
ALL
REGS
BUT
A.
217.5
*
21dO
SPACE
MVI
2185
DB
2190
DB
2195
*
2200
*
2205
*
IF
HL
IS
A
MULTIPLE
OF
16,
DO
PADDR.
2210 *
2215
CKI68
MVI
2220
*
2225 *
EI26
F5
6127
E5
6128
21
80
E3
EI2B
FE
OD
E12D
CC
OC
E2
EI30
EI
EI31 FI
E132
C9
EI33
EI,33
E133
EI33
E
l,33
E133
CD
41
EI
EI36
E6
7F
1::138
FE
41
EI3A
38
EI3B e2
E
13C
F6
20
EI3E
F5
EI3F
18
EI40
D8
EI41
E141
EI41
DB
00
EI43
E6
40
EI45
28
EI46
FA
EI47
DB
01
EI49
C9
EI4A
EI4A
EI4A
EI4A
EI4A
CD
E5
El
EI4D
2B
EI4E
CD
E5
EI
EI51
28
EL52
EI52
EI52
EI52
EI:52
3E
20
1::154
18
EI55 B8
EI56
EI56
E156
EI56
E156
3E
OF
EI58
EI58

-18-
L
A
IYES
GNHL
'INCREMENT
TO
HL
JR
LD2N2-S-1
CRLF
PNHL
A,'
II
JR
PCHR-$-)
GNHL
INI
TO
HL,
DELIMITER
TO
A
'SAVEN
I
I-N
DE
SKSG
IGET
NEXT
NON-SPACE
CHAR
'SI+CASE
'SWATH?
.
JRNZ
LD2NI-$-1
CALL
XCHG
CALL
CPI
DB
DB
XRA
CALL
DB
DB
2230 *
ENTER
WITH
A
CONTAINING
N.
IF
HL
IS
A
MUL-
.2235
*
TIPLE
OF
N+I,
00
PADDR.
2240 •
2245
CKBNO
ANA
2250
RNZ
-,L5S *
2260 *
2265 *
PRINT
THE
NUMBER
IN
HL,
FOLLOWED
8Y
A
COLON.
2270 *
PRESERVES
ALL
REGS
EXCEPT
A.
2275 *
2280
PAOOR
CALL
22d5
PADRI
CALL
2290
MVI
2295
DB
2300
DB
2305
*
2310
*
2325 *
LOAD
nw
NUMBERS.
F{)LL()~
WITH
A
CRLF.
2.330 *
2335
L2NCR
CALL
LD2N
2340 *
2345 *
SK
IP
INITIAL
SPACES.
2350 *
IF
DELIMITER
NOT
A
CR,
ERROR
2355 *
2360
SKSGC
CALL
SKSG
ILOOK
FOR
A
NON-SPACE
2365
CP
I
CR
ICR?
23'70
JNZ
ERROR
2375
RET
23dO *
2385
*
L,j90 *
LOAD
Two
NUMBERS.
LOADS
DE
WITH
THE
BEGINNING
2395 *
ADDR,
NI.
LOADS
BC
&
HL
WITH
THE
INCREMENT
2400 *N2-NJ+)
(OR
WITH
~2
IF
THE
OPR
IS
'51).
2405 *
RETURNS
~ITH
LAST
DELIMITER
IN
A.
2420 *
2440 *
245.5
LD2N
2460
2465
2475
2476
2477
2478 *
2480
2485
2505
2510
25J I*
2512
LD2NI
CALL
GNHL
'INCREMENT
2513
ORA
A
'CLEAR
CY
2515
DB
OEOH
Isac
HL.DE
Elsa
EISd
EI5tt
E
158
AS
EI59
CO
EI5A
EISA
EISA
EI5A
EISA
ELSA
CO
..
OC
E1
EI5D
CD
DA
EI
EI60
3E
3A
EI62
18
EI63
AA
EI64
EI64
EIO
..
EI64
EI64
CD
70
EI
EI67
EI67
EI61
EI67
EI67
CD
DI
EI
EI6A
FE
00
EI6C
C2
Be
EO
EI6F
C9
.
EI70
EI70
EI70
EI70
EI70
El70
EI70
EI70
EI70
CD
97
EI
E-173EB
E
1'74
CD
DI
EI
E177
FE
73
EI1920
EI7A
06
EI18
EI7B
AF
EI7C
CD
97
EI
EI7F 18
EI80
07
EI81
.EIBI
CD
97
EI
EI84
87
Ela5
ED

-19-
fSC
GETS
THE
INCRM
,N2-NI
'INCLUDE
END
POINT
'IF
HEX
SHIFT
INTO
HL
'RESTORE
CHAR
'SKIP
SPACES,
LOAD
HL
'WAIT
FOR
A
CR
ONHL
SKSGC
A,L
52H
H
BtH
e,L
CALL
CALL
MOV
XCHG
RET
.
2520
DB
2525
INX
2550
LD2N2
MOV
2555
MOV
2565
RET
2570 *
2575 *
2580
*
LOAD
3
OPERANDS.
HL
GETS
SOURCE,
DE
THE
~5B5
*
3RD
OPERAND,
BC
THE
INCREMENT
&A
THE
2590 *
LOW
BYTE
OF
THE
3RD
OPERAND.
2595 *
2600 L03N
CALL
LD2N
2605 *
(CONTINUE
BEL()~)
26JO
*
2615 *
£620
*
TRANSFER
DE
TO
HL.
ENTER
WITH
SPACE
OR
2625 *
1ST
DIlHT
OF
NUMBER
IN
A.
GET
NUMBBR
2630 *
INTI)
DE
WITH
LO.,
BYTE
ALSO
TO
A.
2635 *
FIN1SHES
WITH
A
CRLF.
2640
*
2645
LINCR
2650
2655
2660
2665
2670 *
2675 *
2680 *
CLEARS
HL.
IF
ENTeRED
WITH
HEX
CHAR
IN"A,
2685 *
SHIFTS
IT
INTO
HL.
()/W,
IGNORES
LEADING
2690 *
SPACES.
FIRST
CHAR
MUST
BE
HEX.
CONTINUES
2695 *
SHIFT
UNTIL
A
NON-HEX
CHAR
RECEIVED
&
THEN
2700 *
RETURNS
WITH
THE
LATTER
IN
A.
2115 *
PRESERVES
B,C,D,E.
2720 *
2730 *
2735
GNHL
PUSH
B'SAVE
2740
GNHLJ
LXI
H,O
'CLEAR
BUFFER
2745 *SIRIP
LEADING
SPACES
&
GET
CHAR
2750
CALL
SKSG
2700 *
FIRST
CHAR
MUST
BE
HEX
27d5
CALL
HEXSH
IIF
HEX,
SHIFT
INTO
HL
2790
JC
ERROR
,O/W,
RETRY
2795
GNHL3
CALL
GCHR
2840
GNHL5
CALL
HEXSH
2845
MOV
A,
B
2850
DB
JRNC
2855
DB
GNHLJ-$-I
UF
HEX,
CONTINUE
2860
POP
B
'IF
NON-HEX,
DONE
2865
RET
2870
*
Ef86 52
EJ87
23
Elsa
44
EI89 40
EI8A
C9
EIBB
EIB8
EI8B
EI8B
EI8B
EISB
EIBB
CD
70
EI
ElSE
EI8E
EI8E
EI8E
EI8E
EI8E
EIBE
EI8E
ElSE
CD
97
51
EI91
CO
67
El
EI94
70·
El95
EB
EI96
C9
EI97
EI97
EI97
EI97
E197
El97
EI91
EI97
E
97
E
97
E97
C5
E
.98
21
00
.00
E
98
E98
CD
DI
EI
E
9E
E
9E
CD
AF
EI
EAIDA
BC
EO
E
A4
CD
33
EI
E
A7
CD
AF
EI
E
AA
78
E
AB
30
E
AC
F7
EJAD
CI
EIAE
C9
EIAF
Other Cromemco Monitor manuals