
DATA MEMORY CHAPTER 5
Page 14 RPC-2300
Upon reset, the calibration value is checked. If the value
at address 0 agrees with address 100 and 200, then no
corruption occurred. When address 0 and 100 agree but
not 200, then this indicates that a reset occurre d while
updating the third set. The first data set can be trusted.
The third data set simply needs to be updated.
When the first two sets do not agree, then you know that
the first data is corrupted. If the second and third set
agree, then, depending upon the system r equireme nts,
the first set could be "corrected" using the old data. The
user or other device could be alerted that a calibration
(or other ) must be performed again. W hen all thre e sets
disagree, then you must take action appropriate to the
situation.
Another technique to ch eck for valid mem ory is
checksum s. Sim ply write a progr am to add the values in
RAM and compare it against a number is a good check.
However, you cannot tell which data element was
corrupted.
Instances of data corruption are rar e. T hey do increase
as the board power is cycled or reset.
ASSEMBLY LANGUAGE INTERFACE
Assembly language programs (including compiled C)
must start from segment 0. Use the CAM BASIC II
CALL statement to execute an assembly language
program.
A specific area of RAM should be reserved for the
program. This is to prevent strings and variables from
corrupting that area of RAM . Use the SYS(1) and
SYS(2) statements to do this. SYS(1) returns the low_wt
memory location while SYS(2) returns the upper
location. Run the program first to make sure variable
memory has been allocated before running these SYS
commands. F ailure to do so may r esult in address
returned that are not really free for assembly language
program s.
There are sever al ways to put a program in mem ory,
depending upon your application.
1. Use DATA statements and POKE the code into
segment 0 RAM.
2. Write a program to download code. Some
applications are connected to a larger system which
"initializes" its systems. Using INKEY $ or COM $,
code is received and then poked into memory using
POKE$.
3. Read the code from the EPROM (U3) (using INP)
and transfer it to RAM (using POKE).
4. Some space is available in the CAMBASIC II
ROM . Space from about 6C00H to 7F FFH is
available in ver sion 1.0. T he starting address w ill
probably change in the future with different
CAMBASIC II versions. Y ou may burn your
assembly language pr ogram in U1 and CAL L in
from BASIC.
In all cases, it is best to load code into RAM from a
"secure" source. E ven though RAM is battery backed,
over time there is the possibility it could be corrupted.
Below is an example of loading and running an asse mbly
language program.
100 FOR N = &FB00 TO &FB0C
110 READ A
120 POKE N,A
130 NEXT
900 DATA &DB, 2, &47, &E6, &FE, &D3
910 DATA 2, &78, &F6, 1, &D3, 2, &C9
2000 CALL &FB00
Lines 100 to 130 load the program into RAM. DATA
statements may be entered manually or made by the
MAKED B program included with PC SmartLINK.
Line 2000 calls the program listed below. It toggles J2
line 13.
IN A,(2)
LD B,A
AND 0FEH
OUT (2),A
LD A,B
OR 1
OUT (2),A
RET
COMMANDS
The following is a list of CAMBASIC II commands used
with RAM.
Command Function
CALL Calls an assembly language routine
Kommentare zu diesen Handbüchern