Operating instructions

0255
ZO
E2
eo
LOA
DO
JSR
0258
A6
FE
LOX
o25A
EC
4A
86
CPX
0250
DO
07
BNE
o25F
A6
FF
LOX
0261
EC
4B
A6
CPX
0264
Fo
11
BEQ
0200
ZO
86
8B
BEGIN
0203
AD
80
0205
20
B6
80
0208
AD
02
AD
oZoB
29
BF
0200
80
02
AD
0210
A9
00
0212
80
DB
AD
0215
A9
IF
0217
80
04
AD
o21A
20
82
80
LoAOA
0210
20
DE
80
LoAOB
0220
C9
ZA
0222
Fo
06
0224
C9
16
0226
DO
F2
0228
Fo
F3
LoADC
LOA
MODE
CLEAR
NOT
IN
SYNC
BIT
ANOIM
$BF
STA
MODE
JSR
RDBYTX
READ
PAST
IC
JSR
RDBYTX
GET
SAL
FROM
TAPE
JSR
CHKT
ADD
TO
CHECKSUM
STA
BUFADL
SAVE
JSR
ROBYTX
GET
EAL
FROM
TAPE
JSR
CHKT
ADD
TO
CHECKSUM
STA
BUFADH
SAVE
JSR
RDBYTX
GET
EAL
FROM
TAPE
JSR
CHKT
ADD
TO
CHECKSUM
STA
EAL
SAVE
JSR
RCBYTX
GET
EAH
FROM
TAPE
JSR
CHKT
ADD
TO
CHECKSUM
STA
EAH
SAVE
RDBYTH
GET
NEW
BYTE
BUFADL
IF
NOT
END
-
OF
-
DATA
+Jl
EAL
LoADE
BUFADH
EAH
LOAOF
$AooB
$AooC
JSR
ACCESS
LOYIM
$80
SET
MODE
=
HIGH
SPEED
JSR
START
INITALIZE
LDA
DORIN
SET
INPUT
PORT
ANDIM
$BF
STA
DORIN
LOAIM
$00
STA
VIAACR
LOAIM
CLKCON
SET
UP
CLOCK
STA
LATCHL
STORE
IN
LO
LATCH
JSR
SYNC
GET
IN
SYNC
JSR
ROCHTX
READ
CHARACTER
CMPIM
$2A
IF
NOT
START
OF
DATA
BEQ
LOAOC
CMPIM
SYN
THEN
IF
NOT
IN
SYNC
BNE
LOADA
THEN
RESTART
SYNC
SEARCH
BEQ
LOAOB
ELSE
KEEP
LOOKING
FOR
*
ELSE
START
OF
DATA
VIAACR
*
VIAPCR
*
LOADE
JSR
CHKT
THEN
UPDATE
CHECKSUM
LDYIM
$00
IF
BAD
COMPARE
CMPIY
BUFADL
BNE
LOADG
[HEN
ISSUE
ERROR
MESSAGE
INC
BUFADL
ELSE
INC
COMPARE
ADDRESS
BNE
LOADD
INC
BUFACH
BNE
LOAOC
LOOP
ELSE
CHECK
FOR
/
CHARACTER
LOADF
CMPIM
$ZF
IF
NOT
/
BNE
LOADH
[HEN
ERROR
JSR
ROBYTX
ELSE
IF
CHECKSUM
IS
GoOC
CMP
CHKL
BNE
LOADH
JSR
RDBYT
X
CMP
CHKH
BNE
LOADH
THEN
EXIT
OK
LDXIM
$CC
5
TOP
TAPE
STX
VIAPCR
LDAIM
$6F
ISSUE
OK
MESSAGE
0266
ZO
78
8E
0269
AD
00
o26B
01
FE
0260
DO
3D
026F
E6
FE
0271
DO
E2
OZ73
E6
FF
0275
DO
DE
o2ZA
A5
FO
022C
29
BF
oZZE
85
FO
0230
2028
8E
0233
ZO
28
8E
0236
ZO
78
8E
0239
85
FE
o23B
ZO
28
8E
o23E
ZO
78
8E
0241
85
FF
0243
20
Z8
BE
0246
ZO
78
8E
OZ49
80
4A
86
oZ4C
ZO
Z8
8E
o24F
ZO
78
8E
025Z
80
4B
A6
0200
OZOO
0277
C9
2F
0279
DO
43
o27B
20
Z8
8E
oZ7E
CC
36
A6
0281
DO
3B
0283
20
Z8
BE
0286
CD
37
A6
0289
DO
33
o28B
A2
CC
0280
8E
DC
AD
0290
A9
6F
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:
06ZO:
0630:
0640:
0650:
0660:
0670:
0680:
0690:
0700:
0710:
0720:
0730:
0740:
0750:
0760:
0770:
0780:
0790:
0800:
0810:
08ZO:
0830:
0840:
0850:
0860:
0870:
0880:
0890:
0900:
0910:
0920:
0930:
0940:
0950:
0960:
0970:
0980:
0990:
1000:
1010:
1020:
1030:
1040:
Messages
If the tape agrees with the data in
memory and the checksum is correct
then the message
"good"
appears on
the LED's. If the checksum is in error
(even though the data compared correct-
ly) then the message
"CSUM"
appears
on the LED's. If any data is in error then
the address
of
the first compare error
appears on the LED's and the program
terminates without checking the
re-
mainder
of
the data on tape.
Programming Hints
I'd like to pass along a few sugges-
tions to you SYMMERS
just
getting into
programming. Begin your program's
(code) at location '200 (page two).
Do
not
put anything (code, preset constants)
in-
to page one. Any constants you need in
page zero should
be
initialized by your
program. Do not set constants in page
zero and then store them on tape along
with your code.
Do
not use spare system
RAM
for code, constants, or temporary
data
storage. Begin all tape saves at
location
'200".
Avoid saving page one on
tape. I urge
you to follow these sugges-
tions as it will make your programmi
tasks
just
a
bit
easier.
20:36
MICRO
--
The 6502 Journal
January, 1980