Dec 282017
 
EQUATOR is a 32-bit multi-function programmers utility.
File EQUATORA.ZIP from The Programmer’s Corner in
Category Miscellaneous Language Source Code
EQUATOR is a 32-bit multi-function programmers utility.
File Name File Size Zip Size Zip Type
EQREAD.ME 815 424 deflated
EQUATOR.DOC 24666 7359 deflated
EQUATORS.EXE 36139 21206 deflated

Download File EQUATORA.ZIP Here

Contents of the EQUATOR.DOC file







-------------------------------------
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 y

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:


BINARY HEX

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

Input Data

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
operand instructions.
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
bin=32).

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>.


4. FUNCTIONS:

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
selected word.

$ 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.

Key will toggle one of two coordinate bases for
row and col. C-BASE 0 should be used when getting
cursor coordinates based on row 0-24 and column 0-79.
C-BASE 1 (default) is used for coordinate base using row
1-25 and column 1-80 schemes.

When hit while cursor is at row, col (1,1) of a
Window layout, will fudge the row column coordinates to
be relative to that window. To return to screen
relative mode simply move the cursor to absolute upper
left corner of screen and hit again.

Will put you at the upper left corner of the
screen.

Will put you to the upper left corner of a
Window if defined, otherwise it acts like .

Puts you at the lower right corner of screen.

or start and end a marking sequence
which can be used in 1 of 2 ways.

1. Position cursor and hit either key, then
reposition cursor and hit either key again.
The ROW-COUNT and COL-COUNT will show the
number of rows, cols occupied by this region.
2. If the lower left corner is marked FIRST,
then the upper right corner is marked, you
can hit to append that text to a file
named EQUATOR.CUT in the current directory.

Cut text marked and append to file EQUATOR.CUT
with trailing spaces removed.

Move cursor 1 col to the left
or right.

or Move cursor 1 row up or down.

or Move cursor 10 columns to
the right.

or Move cursor 10 columns
to the left.

or Move cursor 5 rows up or down.

Return to EQUATOR main program.

7. EQUATOR HISTORY:

EQUATOR is a vastly more powerful extension of
an older program by the name of PROGAID. Even with the
addition of many more functions, an added ASCI display
and input mode and faster neater screen updates, EQUATOR
actually takes up about 6K less memory. I wrote the
program, memory resident driver for .exe, window
routines and all user libraries on the Microsoft C
Optimizing Compiler Ver 5.0 and the Microsoft Macro
Assembler. I thought of using Quickbasic 4.0 but only
for a fleeting instant. C is ideally suited for
handling these data types and operations. The window is
as basic as possible so as to cover as little as
possible of the programmers file when used in the memory
resident mode. Use MOVW to reposition EQUATOR's window.

I have tested the memory resident version with
Procomm, PC-Write, Quickbasic 3.0 and 4.0, Quick C Ver
1.0, PC-File Plus, VP-Planner, Codeview, Debug and GW-
Basic and it functions perfectly. If EQUATOR fails with
a software package it is probably the fault of that
package snatching the keyboard vector and not allowing
lower level TSR's access to the vector. Any TSR loaded
on top of EQUATOR that doesn't require
as a wakeup key or interrupt 66h as a vector, should
function well if written properly. This program should
run on IBM-XT's, PC's, AT's, and compatibles with a CGA
or Monochrome display adapter. A second Memory Resident
version is supplied when you register that uses Int 65h
and as a wakeup key in case
Int 66h or conflict with other
programs you may be using.


8. SIGNED VS UNSIGNED RESULTS:

Due to the fact that some signed decimal results
are totally different from the unsigned result when the
MOD, DIV and SHR functions are done, some confusion can
result. Results are accurate for signed and unsigned
decimal. This causes two possible areas of confusion.
The Hex, Oct, and Bin results reflect the UNSIGNED
DECIMAL answer AT ALL TIMES and they may not jive with
the signed decimal answer. Also, when word 3 is swapped
with 1 or 2, the signed decimal value in word 3 will be
converted to unsigned before swapping. This prevents
the confusion of an operand containing two totally
different decimal numbers. All of this confusion is
created by the fact that signed and unsigned operations
can give totally different results and both functions
are performed to their corresponding decimal answers.
If you wanted to have the Hex, Oct, and Bin reflect the
signed results, use the function SIGN to
convert Word #3 to represent the signed decimal result.
When inequality between signed and unsigned decimal
occurs, the signed decimal result in Word #3 will be in
blinking red. When the SHR function is done, the signed
result is indicative of an arithmetic shift right and
the unsigned result is a logical shift right.

Eg: -2 and 4294967294 both convert to FFFFFFFE
in 32-bit 2's complement notation therefore they are
considered equal. -11/4 will give entirely different
decimal results. Both convert to an entirely different
Hex number. Try this operation and use the SIGN F3> function on the result to see what I mean. 2 other
functions were added to allow truncation of the results
(Word #3) to 16-bit word , and 8-bit byte
.


9. OVERFLOW IN RESULTS:

Overflow and Underflow conditions are not
flagged in Ver 1.0. In Assembly language and 'C' this
is also the case. The results are shown just as 'C'
performs them so you can visually see the results. An
experienced 'C' or Assembly language programmer can
observe the results and see that they are not logical
due to overflow or underflow. Basic programmers have
the (Dubious!) advantage of having these conditions
flagged as an error. Future versions of EQUATOR may
include detection for these conditions, but for the
present I feel it is an advantage to see these results.
Just beware that at times a signed result can be valid
and not the unsigned (or the reverse). This only
pertains to arithmetic functions. Eg: FFFFFFFF+FFFFFFFF
does not really equal FFFFFFFE in an unsigned operation,
but (-1)+(-1) does indeed equal -2. A full chapter on
this subject could be presented, but as this is
fundamental to programming, I leave it to the user to
pursue this topic.


10. SHAREWARE:

This product is the result of many hours of work
and if more development goes into this piece of software
and others as well, depends on users registering via the
shareware concept. For $25.00 you will receive the
latest registered versions of EQUATOR with any updates
to documentation. Pa. residents need not add sales tax
as the price is reduced exactly the amount of the 6%.
Please feel free to distribute this arced file with no
changes made to any person or BBS. I repeat THIS IS NOT
FREEWARE OR PUBLIC DOMAIN SOFTWARE. It is copywrited
and requires a fee if used for a period of more then 30
days.



Make check payable to William A. Dickson!
Commercial site licences available!

Address: Montgomery Software
2828 Egypt Rd. #D101
Audubon, Pa 19407

Atten: Bill Dickson


Phone: 215-666-6554

Messages can be left for me at ASGARD BBS 215-430-6166!

Registered users will receive free support and upgrades
at a modest handling fee.



 December 28, 2017  Add comments

Leave a Reply