XROM ROM Manual
© Ángel M. Martin
Page1 of 14
18.07.2016
HP-41 Module
“XROM”ROM
Overview
The XROM Module contains a collection of MCODE function utilities with the usability and
convenience themes in mind. Some are taken from relatively obscure modules, such as the
Proto-CODER and the NFCROM – and others are from bigger collections or less-known modules,
in an attempt to increase their usage and to provide a more portable vehicle for all users.
It comes without saying that thanks and credit should go to the original authors as listed in the
function table below, with the new functions shown in white background. For the most part the
other functions are modified only slightly to take advantage of Library#4 routines – which is
therefore required for this module. You’re nevertheless encouraged to read the original module
manuals for additional insights.
This module is designed to be used independently from others – except the Library#4. There’s
very little redundancy with the RAMPAGE or TOOLBOX modules, and therefore can also be used
as an extension to them.
XROM Function
Description
Author
Source
31,00
-XROM ROM Section Header
Ángel Martin
This project
31,01
AFCN? _
Function Data
Poul Kaarup
PK Collection
31,02
ASRCH _
Fuction Data
Klaus Huppertz
Prisma Magazine 1/90
31,03
CPUF
CPU Frequency
Doug Wilder
BLDROM
31,04
JUMP1 _
Mcode J1 Codes
Poul Kaarup
PK Collection
31,05
JUMP3 _
Mcode J3 Codes
Poul Kaarup
PK Collection
31,06
HEX2ROM _
Hex to Xrom
Greg McClure
GJM ROM
31,07
HEX2RM+ _
ditto - appended
Greg McClure
GJM ROM
31,08
OSREV
OS revision
Nelson F. Crowle
NFC ROM
31,09
PCAT _
Port Catalog
Mark Power
Debugger ROM
31,10
PROMT _
Custom Hex Prompt
Nelson F. Crowle
NFC ROM
31,11
ROM2HEX _
Xrom to Hex
Greg McClure
GJM ROM
31,12
ROM2HX+ _
Ditto - appended
Greg McClure
GJM ROM
31,13
SPLASH
Splash Screen
Nelson F. Crowle
This project
31,14
XROM _ _:_ _
Call any Xrom function
Clifford Stern
Mcode for Beginners
31,15
XROM$ _
Lists XROM calls in program
Klaus Huppertz
Prisma Magazine 4/90
31,16
?LIB4
Lib#4 Existence Test
Ángel Martin
This project
31,17
-}-}-}-\/\/-}-}
Section Header
Ángel Martin
This project
31,18
DEBUG
Debug
Clifford Stern
Mcode for Beginners
31,19
LOOP
Loop
Clifford Stern
Mcode for Beginners
XROM ROM Manual
© Ángel M. Martin
Page2 of 14
18.07.2016
31,20
RSLCT
Ram selection
Clifford Stern
Mcode for Beginners
31,21
-XROM RAM
Section Header
Ángel Martin
This project
31,22
BJUMP _ _
Byte Jumper
Nelson F. Crowle
NFC ROM
31,23
BYTE _ _ _
Enters Byte
Klaus Huppertz
Prisma Mag 2-3/91
31,24
CDOWN _ _
Curtain Down
Greg McClure
GJM ROM
31,25
CUP _ _
Curtain Up
Greg McClure
GJM ROM
31,26
CURT?
Finds Curtain location
Poul Kaarup
PK Collection
31,27
CURTAIN _ _ _
Sets curtain
Poul Kaarup
PK Collection
31,28
GETST _ _
Get Status XM File
Ángel Martin
This project
31,29
INSBYT#
Insert Byte
Fritz Ferwerda
ML ROM
31,30
KAFLP
KA Flip (all keys)
Ángel Martin
This project
31,31
KYFLP _
Key Flip
Ángel Martin
This project
31,32
KYOFF
Suspend Key
Fritz Ferwerda
ML ROM
31,33
LB _ _ _
Load Byte
Fritz Ferwerda
ML ROM
13,34
LOADB _ _
RAM Byte Editor
Nelson F. Crowle
PCODER_1A
31,35
LODB _ _
Load Byte(s)
Nelson F. Crowle
NFC ROM
31,36
PC<>RTN
Exchanges PC and RTN-1
W&W GmbH
CCD Module
31,37
PRBYTES _ _
Print Buffer Bytes
HP Co.
HP-IL Devel
31,38
POPADR
Pops RTN addr
Håkan Thörgren
RAMBOX Module
31,39
POPRTN
Pops complete RTN Stack
Poul Kaarup
PK Collection
31,40
PUSHRTN
Pushes complete RTN stack
Poul Kaarup
PK Collection
31,41
RTN?
any address in stack?
Doug Wilder
BLDROM
31,42
RTNS
RTN Stack levels
Ángel Martin
This project
31,43
RCLBYT#
Recall byte
Fritz Ferwerda
ML ROM
31,44
STOBYT#
Store Byte
Fritz Ferwerda
ML ROM
31,45
SAVEST _ _
Saves Status in XM File
Ángel Martin
This project
31,46
STVIEW
Stack View
Ángel Martin
This project
31,47
XMXEQ _
Calls program in XM
Klaus Huppertz
Prisma Mag 4/89 p14
31,48
XRCL _ _
Extended-Reg Recall
Ángel Martin
This project
31,49
XSTO _ _
Extended-Reg Store
Ángel Martin
This project
31,50
XX<> _ _
Extended-Reg Exchange
Ángel Martin
This project
Splash Screen. (by Nelson F. Crowle)
The ultimate display demo that unfortunately does not work on V41 but will beautifully show on
real machines (41-CL included). Watch the letters moving across the LCD window to form the
welcome message
“#4 ON-LINE”
. Seeing is believing!
XROM ROM Manual
© Ángel M. Martin
Page3 of 14
18.07.2016
XROM to and from HEX bytes. (by Greg McClure)
Sometimes it is needed to translate between XROM indents (##,##) and the FOCAL bytes that
represent the XROM function (Ax, xx). Function
HEX2ROM
prompts
H”A_”_ _
and expects three
hex digits (of which the first can’t be > 7). On successful entry of the 3
rd
hex digit the
corresponding XROM value will be placed into the Alpha register and displayed in the form:
“
XROM_ _ , _ _”
.
Function
ROM2HEX
does the reverse. It prompts
ROM: _ _ , _ _
and expects 4 decimal values
(with max for the first pair is 31, and max for the second pair is 63). On successful entry of the
4
th
decimal digit the corresponding hex bytes will be placed in the Alpha register and displayed in
the form: “
HEX’_ _:_ _
”
If at any time during entry for any of these function the opposite function is desired, pressing the
“
H
” key will switch to the opposite routine (
ROM2HEX
<>
HEX2ROM
).
<-->
Appendedto ALPHA versions
Function
HEX2RM+
prompts
H”A_”_ _
and expects three hex digits (of which the first can’t be
> 7). On successful entry of the 3
rd
hex digit the corresponding XROM value will be appended to
the Alpha register and displayed in the form: “
XROM_ _ , _ _”
.
Function
ROM2HX+
does the reverse. It prompts
ROM: _ _ , _ _
and expects 4 decimal values
(max for the first pair is 31, max for the second pair is 63). On successful entry of the 4
th
decimal digit the corresponding hex bytes will be appended to the Alpha register and displayed in
the form: “
HEX’_ _:_ _
”
If at any time during entry for any of these function the opposite function is desired, pressing the
“
H
” key will toggle between opposite routines (
ROM2HX+
<>
HEX2RM+
).
Calling XROM Functions (Clifford Stern)
This is one of my favorite-ever functions: use it to call a function from any plug-in module by
entering the function id# numbers at the prompts. A beautiful example of superb MCODE
programming that uses the OS routines to its best.
XROM ROM Manual
© Ángel M. Martin
Page 4 of 14
18.07.2016
Subroutine RTN Stack Functions.
This groups deals with the RTN Stack. The OS has provision for up to six levels of subroutines;
that is your FOCAL programs can have up to five chained XEQ calls to other programs or
subroutines.
The program pointer (PC) and the first two pendingreturn addresses are stored in status registers
b(12), the third is stored as two halves on each register, and the remaining three in status
register a(11).
b(12):
R
3
A
D
R
2
A
D
R
1
P
C
N
T
13
12
11
10
9
8
7
6
5
4
3
2
1
0
a(11):
A
D
R
6
A
D
R
5
A
D
R
4
A
D
13
12
11
10
9
8
7
6
5
4
3
2
1
0
Getting Information on Subroutine Levels usage.
•
RTN?
is a test function that checks whether any return level exists. The result is YES/NO
depending on the case, and in a program execution the following line will be skipped it
false.
•
RTNS
returns the number of pending RTN levels to the X register. Obviously the result
will be zero if executed in manual mode, as no pending subroutines exist. The stack is
lifted.
•
POPADR
removes one pending routine address off the RTN stack and shifts the rest one
level down. No output to X is produced (so it’s more like XQ>GO despite its name).
•
PC<>RTN
exchanges the program counter and the first RTN address. In a running
program this causes the execution to jump back to the pending address and then return
to the calling point, i.e. it is effectively another way to execute the subroutine twice.
Extending the Subroutine Levels capacity.
(by Poul Kaarup)
You can use these functions to push and pop the entire RTN stack into a buffer (id#7) in the I/O
area.
•
PUSHRTN
saves the contents of the RTN stack in the buffer and resets it to zero for an
extended RTN stack with 6 more levels capacity.
•
POPRTN
overwrites the current (extended) RTN stack with the buffer contents saved
previously (i.e. the original RTN stack).
These functions are obviously meant to be used as a pair. Note also that the buffer#7 will be
erased when you switch the calculator OFF.
XROM ROM Manual
© Ángel M. Martin
Page 5 of 14
18.07.2016
Saving Status Registers in X-Memory.
You can use functions
SAVEST _ _
and
GETST _ _
to make backup copies of the status
registers into X-Memory files, and to restore their contents back to the status area. The functions
prompt for the number of status registers to include in those back-up files, which must be at
least one and not more than 16.
For example if you just want to save the stack registers T,Z,Y,X, and L then you’d enter “5” in
the prompt (since the count always starts with register T as the first one). The file name is
expected to be in ALPHA - thus register M (and possibly N) would be partially used by the
function itself.
These functions are programmable. In a running program the number of status registers is taken
from the program line after the function – which won’t be entered into the X register but as the
prompt value instead.
The Status files have a dedicated file type in X-Memory. If you’re using the AMC_OS/X Module,
then theirentries will be marked with the ‘T” prefix during the enumeration:
Playing with Key Assignments.
This module adds a couple of brand-new KA-related routines that you may find interesting. Their
mission is to flip the key assignments on a given key or for the complete keyboard – so that the
shifted and un-shifted assignments are mutually toggled.
•
KAFLP
toggles all key assignments – turning shifted ones into non-shifted, and vice-
versa. This will only leave unassigned keys unchanged, but will reverse the assignments if
only one assignment exists for the keys.
•
KYFLP_
prompts for a key to perform the same task on an individual key basis. The
prompt includes the back-arrow key but will ignore the toggle keys (ON/USER &
PRGM/ALPHA)
•
KYOFF _
prompts for a key to temporarily suspend
its user assignments. You can restore
them using LKAON from the AMC_OS/X or RAMPage modules.
In case you wonder why bother with this functionality, having the ability to toggle a key’s USER
key assignments becomes very handy if you have two function launchers assigned to that key. A
good example is with the SandMath, SandMatrix and 41Z modules – the three of them
“competing” for prime time on the [Σ+] key. Flipping the assignments will save you a lot of
[SHIFT] key pressings to access the functions within those launchers.
XROM ROM Manual
© Ángel M. Martin
Page 6 of 14
18.07.2016
A touch of PRISMA Utilities.(by Klaus Huppertz)
These four functions are interesting utility examples taken from PRISMA, the German User’s club
magazine. They were contributed by Klaus Huppertz.
ASRCH_
returns information on the function or FOCAL program which name is entered at the
prompt (or in ALPHA during a running program). The information returned is quite complete,
including the HEX number, the address and the type (User Code or, MCode). This version will
also look for PROGRAM files in X-Memory if no function OR focal program (in main memory)
exists with that name. –.For example, executing
ASRCH
on itself it returns: “9BFD M A7:C2”
BYTE _ _ _
is a byte-loading function, a very popular subject in the old days. It will let you enter
the byte with value in the prompt at the current program counter location (PC), no more no less.
Be careful where you perform the insertion as it may create havoc if you break the Label chain.
More about this subject in next section of the manual.
XROM$_
prompts for a FOCAL program andscansthe program looking for all the XROM calls
included in it, showing either the section header for the module if it’s plugged in, or the XROM
function id# if the module is not present.The listing is sequential, and you need to press R/S to
see the next match. It’s therefore very handy to find out the XROM dependencies of your FOCAL
code. Note however that it will not work on FOCAL programs loaded in plug-in ROMs.
XMXEQ _
is an X-Mem Program File caller – but one that allows the program file to be in any of
the X-Mem modules – the only limitation is that the code cannot cross the voids between
modules. Should such a contingency occur, the function will warn you with a “broken goose”
message:
The “
NONEXISTENT
” message will be shown if the file is not found or is not a PROGRAM file
Notice for all ALPHA prompting functions
. - in manual mode the ALPHA prompt is offered
automatically, no need to press the ALPHA key to start typing it. In a running program the
function/program name is expected to be in ALPHA.
XROM ROM Manual
© Ángel M. Martin
Page 7 of 14
18.07.2016
Curtain functions. (by Greg McClure)
The absolute register number that marks the location of R00 is often called the “curtain”. Its
value is kept in one of the system stack registers (c to be specific), as most synthetic
programmers know. The system moves this value up or down depending on how many registers
are specified with the SIZE instruction. A trick used by some synthetic programmers is to raise or
lower the value of the “curtain” in a program.
If the value is raised by n, then R0 thru Rn-1 are hidden, and Rn becomes R0, Rn+1 becomes
R1, etc. If the value is subsequently lowered by n (which must be done before exiting the
program for reasons explained next) then these hidden registers are recovered and the original
register numbers are restored.
Actually, when the “curtain” is raised in this way, the n registers affected temporarily become
program steps as far as the O/S is concerned. Since this could confuse the system when doing a
CAT 1, “curtain” raising and lowering should be used carefully. In addition, if a PACK occurs
while the “curtain” is raised like this, the hidden registers could easily (and probably will) change
values. If the “curtain” is raised to temporarily save registers, it should be lowered back before
doing these system functions (CAT 1 or PACK, or similar functions).
Conversely, if the “curtain” is lowered and not raised back to its original value, certain labels and
ENDs could be modified by simple RCL, STO and X<> instructions. This messes up the chain of
CAT 1 and can lead to MEMORY LOST. However, used properly, “curtain” manipulation can be of
great use to a programmer that needs to call a subroutine that uses the same registers as
another program.
•
Function
CURT?
returns to the X-register the absolute address (in decimal)
corresponding to the current location of the curtain.
•
Function
CURTAIN _ _ _
sets the curtain to the absolute address entered either in the
three-digit prompt if used in manual mode, or contained in the X register when used in a
program; but always as a decimal number.
•
Function
CUP
_ _ raises the curtain up. The function will prompt for the number of
registers to hide. If this function is entered in a program, the number of registers to hide
should be entered as a value after the
CUP
function. This will be interpreted as the
argument of
CUP
, not as a value to enter into X. It must be followed by a non-numeric
entry function or the CPU will get confused.
•
Function
CDOWN _ _
lowers the curtain down. The function will prompt for the number
of registers to restore. If this function is entered in a program, the number of registers
to restore should be entered as a value after the
CDOWN
function. This will be
interpreted as the argument of
CDOWN
, not as a value to enter into X. It must be
followed by a non-numeric entry function or the CPU will get confused.
XROM ROM Manual
© Ángel M. Martin
Page 8 of 14
18.07.2016
Loading Bytes. (N. F. Crowle and others)
If you lived through the days of byte jumpers and load bytes’ challenges, you’ll no doubt have
fond memories of what it was like to work with synthetics and PPC ROM routines. Here’s a few
MCODE functions that should rekindle your appreciation for those chores, now from an MCODE
perspective.
A few functions come from the NFC ROM and the ProtoCoder_1A. Consider them modern day
versions of some of those vintage routines, with a usability and convenience twist added by the
MCODE implementation; as well as speed.
BJUMP __
is a byte jumper utility that prompts for the number of bytes to jump over, counted
from the current PC. If you see no use for this function you can go ahead and ignore it
altogether, but it sure would have been nice to have it back then…
LB _ _ _
is an MCODE version of the Load Bytes routines. Enter the byte value in decimal format
at its prompt, from 000 to 255 – to have the corresponding byte written in RAM at the current PC
location. See the byte table in appendix-1 for details.
LODB _ _
(( _ _), _ _) is a very ingenious approach to solve the multi-byte loader problem. This
function will prompt additional fields depending on the previous inputs – to complete the
sequence required for 2-byte and three-byte instructions. The inputs are expected in
Hexadecimal format, from 00 up to FF. See byte table for details.
Example: to enter ΣREG IND 25 you can use the prompt values “99” and “99” at the initial and
subsequent prompts (see the display below at the point of the last digit input):
This function is not finished – but it works for the majority of 2- and 3-byte combinations as is. It
was later superseded by a more systematic RAM-editor version in the Proto-Coder ROM, which is
described below, but I think it still has a place for this module.
LOADB _ _
is a more capable RAM Editor that can be used to review and edit the contents at
the byte level. It takes the starting position from the current PC location, and presents a prompt
that shows the current register and byte number, as well as the byte value:
At this point you can use the [SHIFT]/[SST]keys to move up and down in memory, the [ENTER^]
key to null the byte at that location, the [RCL] key to input a new RAM address, the [R/S] key to
terminate the function and return to the OS, or the back-arrow key to edit the byte with a new
value. Be careful with the changes you make, and be aware that pressing back arrow will require
editing the byte value (i.e. no cancel from it).
XROM ROM Manual
© Ángel M. Martin
Page 9 of 14
18.07.2016
INSBYT#
,
STOBYT#
, and
RCLBYT#
are taken from the ML ROM and use a direct approach
to inserting, storing and recalling bytes in RAM. They expect the RAM location to be in the
“BRRR“ format (b: byte number within the register, from 0-6; RRR: absolute register address in
hex).
The RAM location needs to be formatted in the two Least-Significant Bytes of the X register (or Y-
register for
INSBYT#
and
STOBYT#
) as a binary number – which can be accomplished using
any direct hex entry function, such as PROMT described below.
Function
INSBYT#
SAVEBYT#
RCLBYT#
X Input
Byte value in decimal
Bute value in decimal
BRRR as binary
Y Input
BRRR as binary
BRRR as binary
n/a
PROMT
_ is a general-purpose, direct HEX entry function. The number of Hex digits to enter is
provided at ist own prompt in manual mode, or in the X register if used in a program. The result
is placed in X as a binary number – with as many valid digits as the number of fields in the
prompt.
For example, to prepare the RAM location “60FF“ using
PROMT
, you first enter “4“ at the
function prompt and then the four hex digits of the address directly. The result is placed in the X
register ready for the byte functions to use.
Note: This function is very similar to HPROMPT, included both in the HEPAX and the Hepax_Dis-
Assembler Modules.
Function Information. (by Poul Kaarup)
AFCN?
_ Displays information about a function in several sections or lines. R/S brings up the
next lines of information. Back-arrow aborts the function. The function name is to be entered at
the ALPHA prompt.
For native HP41 functions (like DEC):
•
ADR= 132B the functions address
i.e. OS ROM
•
DEC= 004,095 the decimal value
input to get DEC
•
HEX= 04,5F the hexadecimal value
to get DEC
•
MAINFRAME indicates a native HP41
function
For plug-in modules (like AFCN?):
•
ADR= B295 the functions address ie
ROM
•
DEC= 161,078 the decimal value
input to get AFCN?
•
HEX= A1,4E the hexadecimal value
to get AFCN?
•
XROM 05,14 XROM# for AFCN?
XROM ROM Manual
© Ángel M. Martin
Page 10 of 14
18.07.2016
MCODE Jumps. (by Poul Kaarup)
These two functions are taken from the PK_Collection. With them you can find out the hex codes
corresponding to the jumping distances for type-3 jumps, or for jump-to locations for type-1
jumps.
Simply type the function name
JUMP1
or
JUMP3
to start building the prompts. The functions
are clever enough to only let you input the allowed characters, as follows:
•
J
UMP1_
shows a question mark “?” and waits for your input. At this point it expects
either “
C
” or “
N
” for the Carry- or not-Carry flavors, then you follow suit by entering
either “
G
” or “
X
’ for the GO or XEQ version of the jump.
•
JUMP3_
shows “
J
” and waits for your input – which can only be either “
C
” or “
N
” for the
carry- and not-carry flavors; then you follow suit with “
-
“ or “
+
” to indicate the jumping
direction, and finally the distance value in bytes in HEX (!).
These functions are not programmable. The overlay below summarizes all the options for them
as described above. In all cases the back-arrow key will take you back to the previous stage of
the prompt, or terminate the function if already at the “root” level.
Note that a set of equivalent functions is available in the TOOLBOX module, as follows:
JUMP1
JUMP3
?NC GO _ _ _ _
JC
Value in X
?NC XQ _ _ _ _
JNC Value in X
?C GO _ _ _ _
?C XQ _ _ _ _
XROM ROM Manual
© Ángel M. Martin
Page 11 of 14
18.07.2016
Extended Registers Storage.
If you’ve ever run out of data registers and wished there was a “back-door” mechanism to use in
emergencies, then you should find this section interesting. These functions operate on a I/O
buffer located below the .END. and above the Key assignment area.
The buffer holds five extra registers for standard data storage, labeled XR-01 to XR-05 (therefore
there’s no XR-00 to speak of). Just enter the index for the extended register in the prompt and
the data will be stored, recalled, or exchanged with the stack X-register – as if they were
standard data registers.
•
XRCL _ _
recalls to the X register the content of the extended reg. which index is
provided in the prompt, or in the next program line if used in a running program.
•
XSTO _ _
stores the X-register in the extended reg. given in the prompt, or in the next
program line if used in a running program.
•
XX<> _ _
exchanges the contents of the X-register and the extended reg. which index is
provided in the prompt, or in the next program line if used in a running program.
It you enter a non-valid index number (basically anything except 1,2,3,4,5) the prompt will be
maintained - without an error condition – until you either cancel the function or enter a valid
value. In program mode this will show a
NONEXISTENT
message and the execution will halt.
The buffer will be created the first time you save data in the extended registers, or attempt to
retrieve it from them. The buffer registers XR-01 and XR-02 are shared by the RTN stack
PUSH/POP functions, so be careful not to override their content if both features need to be used
together. This buffer is not automatically created by the XROM module so the data will not
survive a power-on/off cycle.
XROM ROM Manual
© Ángel M. Martin
Page 12 of 14
18.07.2016
Other Functions. (Diverse authors)
PRBYTES
Prints the bytes in an I/O buffer in hexadecimal format. The bytes are printed starting
from the buffer pointer and ending and the end of the buffer. If the HP-82143A printer is plugged
in, it’ll be used for printing. If not, the HP-IL printer will be used only if flag 33 is clear and there
is no other controller on the loop. The mode switch on either printer must be set to TRACE or
NORM, or flag 15 or flag 16 must be set for HP-IL printers other than the HP 82162A. if neither
printer is present, the bytes will be displayed at about two bytes per second. Pressing [R/S] will
exit the function. Pressing any other key will slow the display rate to about one byte per second.
Note that this version of
PRBYTES
is a prompting function. It will accept as input in its prompt
any buffer id# on the I/O area, and not only the IL-Devel buffer type (with id# 12). If other
buffer type is used, the pointer will be taken as 0 (top of the buffer) and the enumeration will
only work properly assuming the buffer size is a multiple of seven.
PCAT
Accesses a CATalog enumeration starting at the page provided in the function prompt. For
example, press “5” to start with the TIME Module, or “7” to commence at page-7. The catalog
will only show the header functions (those which names start with a hyphen), so it’s up to you to
stop it and press ENTER^ to see the functions included under each section.
CPUF
returns a suitable surrogate for the CPU frequency.
This function
is a curious gem, although
I’m not completely sure I managed to transcribe it well. It’s supposed to return the number of
CPU cycles per second, so I thought it’d be ideal for the CL given the different TURBO modes.
Alas, it always returns the same value (1,126.316), irrespective of the TURBO setting. This is
about 6 times bigger than the normal HP-41 result, (167,333) for what is worth. We have Doug
Wilder to thank (again) for writing it, using the Time module to keep pace with things.
OSREV
shows the revisions of the three OS ROMS in pages 0-2, for example for an unmodified
41-CX it returns:
XROM ROM Manual
© Ángel M. Martin
Page 13 of 14
18.07.2016
Debugging functions. (Clifford Stern)
These three functions are taken from Ken Emery’s book “MCODE for Beginners“. Refer to that
source for additional information on usage and limitations. Also you should be aware that Mark
Power‘s DEBUGGER Module is a vastly superior approach to this purposes!!
•
DEBUG
Inserts a break-point in an MCODE program and halts execution at that point,
allowing you to see the CPU registers and pointers
•
LOOP
Allows you to debug a loop within an MCODE program
•
RSLCT
Allows you to see the RAMSLCT pointer and the T register
XROM ROM Manual
© Ángel M. Martin
Page 14 of 14
18.07.2016
Appendix 0.- HP-41 Byte Table
Document Outline - /HP-41 Module
- “XROM”ROM
- Splash Screen. (by Nelson F. Crowle)
- XROM to and from HEX bytes. (by Greg McClure)
- Calling XROM Functions (Clifford Stern)
- Curtain functions. (by Greg McClure)
- Function Information. (by Poul Kaarup)
- MCODE Jumps. (by Poul Kaarup)
- Extended Registers Storage.
- If you’ve ever run out of data registers and wished there was a “back-door” mechanism to use in emergencies, then you should find this section interesting. These functions operate on a I/O buffer located below the .END. and above the Key assignment ar...
- The buffer holds five extra registers for standard data storage, labeled XR-01 to XR-05 (therefore there’s no XR-00 to speak of). Just enter the index for the extended register in the prompt and the data will be stored, recalled, or exchanged with the...
- XRCL _ _ recalls to the X register the content of the extended reg. which index is provided in the prompt, or in the next program line if used in a running program.
- XSTO _ _ stores the X-register in the extended reg. given in the prompt, or in the next program line if used in a running program.
- XX<> _ _ exchanges the contents of the X-register and the extended reg. which index is provided in the prompt, or in the next program line if used in a running program.
- Other Functions. (Diverse authors)
- Debugging functions. (Clifford Stern)
Dostları ilə paylaş: |