Assembly language interface, Commands – Remote Processing RPC-30 User Manual

Page 20

Advertising
background image

RAM MEMORY

CHAPTER 5

Page 18

RPC-30

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 tha t a reset occ urre 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, depe nding 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 pe rfor med aga in. W hen all thre e sets
disagree, then you must take action appropriate to the
situation.

Another technique to ch eck for v alid mem ory is
checksums. Simply writing a program to add the values
in RAM and com pare it against a number is a good
check. H owever, you cannot tell which data element
was corrupted.

Instances of data corr uption are rar e. T hey do increase
as the board power is cycled or reset. You should be
aware that data corruption is not impossible and there are
methods to detect and co rrec t it.

ASSEMBLY LANGUAGE INTERFACE

A s se m b ly la n gu a ge p r og r a m s ( in c lu d in g co m p il e d C )
must start from segment 0. Use the CAMBASIC CALL
s ta t em e n t t o e x ec u te a n a s se m b ly la n gu a ge p r og r a m .

A specific area of RAM should be reserved for the
program . This is to prevent strings and variables from
corrupting that area of RAM . U se the SYS(1) and
SYS(2) statements to do this. SYS(1) retur ns the lowest
memory location while SYS(2) returns the upper
location. Run the pr ogram first to ma ke sure v ariable
memory has been allocated before running these SYS

comm ands. F ailure to do so may r esult in an address
that is not really free for assembly language pr ogram 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

2.

W r i te a pr o g ra m to d ow n lo a d c o de . S om e
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 EEPROM (U8) (using INP)
and trans fer it to RA M (using POKE ). Y ou would
have to use an external programm er to place the
code above CAMBASIC code.

I n al l c a se s , it is b es t t o l oa d co d e i nt o R A M f r om a
"secure" source. E ven though RAM is battery backed,
over time there is the possibility it could be corrupted.

Below is an exa mple of loa ding and r unning an asse mbly
l a ng u ag e pr o g ra m .

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 m ade by the
MAKED B program included with PC SmartLINK.

Line 2000 calls the pro gram listed below . It toggles J3
line 13.

IN

A,(2)

LD

B,A

A N D

0FEH

O U T

(2),A

LD

A , B

OR

1

O U T

(2),A

RET

COMMANDS

The following is a list of CAM BASIC commands used
w it h R A M .

Comm and

Function

CALL

Calls an assembly language routine

CLEAR

Clears strings and allocates string space

PEEK

Return s a byte

DPEEK

Returns a 16 bit value

PEEK$

Returns a string

FPEEK

Returns a floating point number

POKE

Stores a by te

DPOKE

Stores a 16 bit value

POKE$

Stores a string

FPOKE

Stores a floating point number

Advertising