M O N T G O M E R Y S O F T W A R E
E Q U A T O R
V e r 1 . 0
B I L L D I C K S O N
1. PROGRAM SUMMARY:
EQUATOR is a 32 bit multi-function programmers
utility for the IBM-PC/XT/AT and compatibles. This
Copywrited Shareware version is memory resident and
fully functional. If you find that this package fills
your needs then I HIGHLY recommend that you send $25.00
to receive your registered copy of the latest version.
This demo version can be given freely to others in the
shareware spirit but registered copies are NOT to be
given to any other person, as they are neither share-
ware nor public domain. A registered copy of EQUATOR IS
a commercial product.
2. SCREEN LAYOUT:
Word #1 11111111111111111111111111110101 FFFFFFF5
Word #2 00000000000000000000000000000100 00000004
Word #3 00111111111111111111111111111101 3FFFFFFD
Word #1 -0000000011 4294967285 [ASCI] 37777777765
Word #2 +0000000004 0000000004 [ASCI] 00000000004
Word #3 -0000000002 1073741821 [ASCI] 07777777775
Status BASE:10 SELWD:1 ATTR FUNC:DIVIDE
DECIMAL UNSIGNED ASCI OCTAL
There are 5 groups of 3 32-bit words. The words
are numbered 1, 2 and 3, from top to bottom. The upper
left group is in binary, shaded in hex-char format. The
upper right shaded group is in hexadecimal format. The
lower left group is in signed decimal format. The lower
middle group is unsigned decimal and ascii and the lower
right group is in octal format. The line below these
groups is a status line with the following definitions.
On any monitor the selected word will be in reverse.
A. NUMBER BASE for data input. (16, 10, 8)
B. SELECTED WORD for data entry and single
C. Character in the ATTRIBUTE (color) code of
the low order byte of the selected word.
D. A MNEMONIC for the last function performed.
When numeric data is entered (in selected base)
there is an additional line that appears with a cursor
for entering data to the SELECTED word. The 3 words in
each group are numbered 1-3, from top to bottom. Word 3
is a results word and cannot have data entered directly.
The other 2 words are used as the operands for functions
and will accept data when selected.
3. DATA ENTRY:
Data entered will always be entered into the
selected word in the selected base. Entering data in
the selected base is simply to start typing the number.
If the character is valid for the selected base, the
data prompt line will appear with a cursor. There is no
restriction on character case for hex input. The input
routine will only allow valid characters for the current
number base up to a maximum character count as dictated
by the base you are in. (dec=10, hex=8, oct=11 and
Three special data input modes are specified
when the characters <*> or <%> or <-> are hit. <*>
opens input for ascii characters, <%> opens data input
in binary regardless of the current base. <-> hit when
IN DECIMAL BASE will input signed numbers otherwise
unsigned decimal input defaults. is the only
editing key valid when entering data. A new feature is
that when data is entered into the selected word the
selected word # will be toggled. This is more logical
then having to enter data and change the selected word
every time. If you want the selected word to remain as
it was before data entry, just hit twice. Any
time either of the keys are hit the selected
word # will toggle <1 <--> 2>.
With a few exceptions, which will be noted,
functions work as follows in the four groups below.
1. SINGLE OPERAND FUNCTIONS such as not, neg,
etc. work like this: function is performed
on the selected word and the result is stored
in word #3. The selected word is unchanged.
2. DOUBLE OPERAND FUNCTIONS such as and, or,
add, etc. work as such: (word #1) function
(word #2) --> (word #3)
3. SPECIAL FUNCTIONS are used to change number
BASE, change selected WORD, HELP, and CLR
and do exactly what they imply
4. The following functions work differently
then the functions in groups 1 and 2. SEXB
and SEXW are used to extend the sign bit of
the selected word. SEXB extends the sign of
the low order byte of the selected word to 32
bits and SEXW extends the sign of the low
order word to 32 bits. Both of these
functions are done directly to the selected
word. , and swap the
words. eg: (word #1) <--> (word #2). SCOD is
a way to view IBM-PC keyboard scancodes
exactly as they are received from the
keyboard. The scancode is put into the low
order 16 bits of word #3. Use of PrtSc> or will function as they
usually do. and will
return 0 as the memory resident driver strips
it from the keyboard stream.
The Inc and Dec functions work directly
on the selected word. The SIGN function
converts Word #3 to the signed decimal value.
The PEEK function puts the longword result in
word #3 and also adds 4 to the segmented
address in word #1 to set up for peeking the
next long word addr.
RULR is a separate sub-program with many
powerful ruler functions that will be
explained later. TR08 and TR16 are used to
truncate word #3 to display byte, word
results. SXB3 and SXW3 are used to sign
extend word #3 to byte, word, results. POKE
is used to poke the low order byte in word #2
to the segmented address in word #1. USE
CAUTION with the poke function because a
careless POKE can bring your system to it's
knees or possibly worse.
5. FUNCTION KEYS:
HELP Displays HELP screen.
BASE Toggles the input base (16 -->10 -->8)
ADD (Wrd1) + (Wrd2) -->(Wrd3)
NEG -(Sel Wrd) -->(Wrd3)
INC (Sel Wrd)+1 -->(Sel Wrd)
SHR * (Wrd1) Shift Right (Wrd2) -->(Wrd3)
OR (Wrd1) OR (Wrd2) -->(Wrd3)
AND (Wrd1) AND (Wrd2) -->(Wrd3)
MUL (Wrd1) * (Wrd2) -->(Wrd3)
SW13 SWAP (Wrd1) <--> (Wrd3)
WITH SHIFT KEY:
CLR Clear all three words.
FIND Search for data in Wrd2 at address Wrd1
SUB (Wrd1) - (Wrd2) -->(Wrd3)
NOT 1's complement(Sel Wrd) -->(Wrd3)
DEC (Sel Wrd) - 1 -->(Sel Wrd)
SHL * (Wrd1) Shift Left (Wrd2) -->(Wrd3)
XOR (Wrd1) Xclusive Or (Wrd2) -->(Wrd3)
SW12 SWAP (Wrd1) <--> (Wrd2)
DIV (Wrd1) / (Wrd2) -->(Wrd3)
SW23 SWAP (Wrd2) <--> (Wrd3)
WITH ALT KEY:
MOD (Wrd1) modulus (Wrd2) -->(Wrd3)
ROLB * (Wrd1)Rotate left byte(Wrd2) -->(Wrd3)
ROLW * (Wrd1)Rotate left word(Wrd2) -->(Wrd3)
ROLL * (Wrd1)Rotate left long(Wrd2) -->(Wrd3)
RORB * (Wrd1)Rotate right byte(Wrd2) -->(Wrd3)
RORW * (Wrd1)Rotate right word(Wrd2) -->(Wrd3)
RORL * (Wrd1)Rotate right long(Wrd2) -->(Wrd3)
SEXB @ sign extend byte(Sel Wrd) -->(Sel Wrd)
SEXW @ sign extend word(Sel Wrd) -->(Sel Wrd)
SUM (Sel Wrd) + (Wrd3) --> (Wrd3)
WITH CNTRL KEY:
SCOD scancode of next key(s) hit --> (Wrd3)
PEEK (Wrd3) = long word pointed to by address
in Wrd1. Wrd1 = (Wrd1)+4
SIGN $ Converts (Word #3) hex, dec, bin and octal
to the SIGNED decimal value in Word #3.
TR16 $ Truncate Wrd3 to low order 16 bit word.
TR08 $ Truncate Wrd3 to low order 8-bit byte.
POKE Poke byte Wrd2 to seg. address Wrd1.
RULR Electronic ruler subprogram. (See below)
SXB3 $ Sign extend low byte Wrd3.
SXW3 $ Sign extend low word Wrd3.
MOVW Relocate EQUATOR window on screen.
Toggles the selected word # (1 <--> 2)
* Wrd2 contains the number of shifts or rotates. Max # is
7 for byte, 15 for word, and 31 for long. A mask is
used on word two if it is greater then the max.
@ Works on low order byte and word. Done DIRECTLY to the
$ Conversions done to results word (#3) only!
Toggles the ASCII display mode as
follows. Shows ascii in reverse mode
the way numeric longwords are stored and
when the display is high intensity green
the characters are displayed as they
appear in memory. The second mode is
better for PEEK ing at text and the 1st
mode shows you the char as they appear
in the numeric data bytes.
Toggles ascii characters displayed mode
from readable text char only to extended
graphics char display.
6. ELECTRONIC RULER
This sub-program has its own screen and supplies
many screen measuring functions to aid you in laying out
text screens on the CGA or Monochrome adaptor equipped
PC's. While in the RULER mode Wrd1 will always show
the cursor position ROW number. Wrd2 will show the
cursor position column number and Wrd3 will show the
absolute screen address for the adapter, AND PAGE you
are currently in. Future versions will also include the
EGA's optional 43 row text screen.
Data displayed will always reflect the current
cursor position, which you can change with numerous keys
which will be described below. When cursor is moved
past any screen boundaries it will wrap around.