Other notes

You should read documentation on the internal structure of RPL objects (www.hpcalc.org has good documentation)

D0, D1, Ba and Da are used by the system (next RPL instruction pointer, RPL stack pointer (@@object on level 1 of the stack), start of free memory and free memory in 5 nibble blocks). The SAVE instruction will save these registers in dedicated memory areas, the LOADRPL instruction will restore them and continue the execution in the system.

Please consult documentation on memory mapping for more information.

New instructions

In addition to the F fields, the following new instructions have been created:

r=s.f, r=r+s.f, r=r-s.f, r=r*s.f, r=r/s.f, r=r%s.f (modulo) r=-s-1.f (logical not), r=-s.f (mathematical not), r=r<s.f (left shift), r=r>s.f (right shift), r=r^s.f (logical xor).

r=1.f (alias for r=r/r.f) has also been created.

Notes:

1.Any combination of the A, B, C and D registers can be used (notated r and s here)

2.All fields (including F1-F7 fields) are valid

3.MASD will always choose the shortest version of the instruction (e.g.: A=A+B.A will use the standard C0 encoding AND affect the carry)

4.The carry is not affected by these instructions.

The following additional new instructions have been added (see description in the ASM syntax section):

NATIVE? $hex

GOSLOW

REMON

CONFIGD

HST=1.x

WSCREEN

SERIAL

BIGAPP?

?HST=1.x { }

SETTIME

OUTBYT

RESETOS

SETFLD(1-7)

SETLNED

MOVEUP

REFRESHD

OFF

SETOFFD

MOVEDN

AUTOTEST

RPL2

HSCREEN

ARMSYS

ACCESSSD

KEYDN

UNCNFGD

ARMSAT

PORTTAG?

CRTMP

GETTIME

REMOFF

MIDAPP?

BEEP2

 

 

 

Skips

Skips are a first step from ML to a third generation language, even if they are only another way to write ASM instructions.

Skips are wonderful as they allow you to:

-structure your program

-avoid using gotos

-make programs and piece of code that can be easily copied and pasted (because there is no label)

6-20 The Development Library