Dec 292017
32-bit programmers calculator.
File PROGAID.ZIP from The Programmer’s Corner in
Category Miscellaneous Language Source Code
32-bit programmers calculator.
File Name File Size Zip Size Zip Type
PROGAID.DOC 14007 4370 deflated
PROGAID.EXE 26439 15281 deflated

Download File PROGAID.ZIP Here

Contents of the PROGAID.DOC file



V e r 1 . 1

b y



Progaid is a 32 bit multi-function programmers
calculator for the IBM-PC/XT/AT and compatibles The
registered Copywrited version is memory resident and the
demo Shareware version is not. The only other
difference between the two is the inclusion of the
program title screen before the help screen. If you
find that this package fills your needs then I recommend
that you send $30.00 for the memory resident version.
The demo version can be given freely to others in the
shareware spirit but the memory resident version is NOT
to be given to any other person, as it is neither share-
ware nor public domain. It is a commercial product. A
contribution of $10 or more is appreciated if you use
this shareware version.


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 the lower right
group is in octal format. The line below these groups
is a status line with the following definitions. On a
color monitor the selected word will be in white. Users
with a monochrome monitor will have to look at the
status line to see which <1 or 2> is the selected word.

A. NUMBER BASE for data input. (16, 10, 8)
B. SELECTED WORD for data entry and single
operand instructions.
C. Screen CHARACTER read from the low order byte
of the selected word.
D. Character in the ATTRIBUTE (color) code of
the low order byte of the selected word.
E. A MNEMONIC for the last operation 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.


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). Two special data input modes are specified
when the characters <%> and <-> are hit. <%> 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 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 QUIT
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. <1-2>, <1-3> and <2-3> 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
the selected word. Use of 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.


Help Self explanatory!
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)
1-3 (Wrd1) <--> (Wrd3)


Quit Self explanatory!
Seg (LoWord_Wrd1 * 16)+(LoWord_Wrd2) -->(Wrd3)
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)
1-2 (Wrd1) <--> (Wrd2)
Div (Wrd1)/(Wrd2) -->(Wrd3)
2-3 (Wrd2) <--> (Wrd3)


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)


SCod scancode of next key(s) hit --> (Sel Wrd)
Peek (Wrd3) = long word pointed to by segmented
address in selected 32-bit word.

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

6. A few notes on the history and development of
PROGAID may be interesting. PROGAID was originally
concieved on a TRS-80 Color Computer and written in
interpreted BASIC. It was a bear in basic and I decided
on a complete re-write for the IBM-XT. I wrote the
program, memory resident driver for .exe, window
routines and all user librarys on the Microsoft C
Optomizing 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
handeling 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. 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
PROGAID 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 progaid that doesn't require
as a wakeup key or interrupt 67h 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 adaptor. It
can not however be used with Microsoft Windows! A second
Memory Resident version is supplied when you register
that uses Int 65h and as a
wakeup key in case Int 67h or conflict
with other programs you may be using.

7. 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 contributing via
the shareware concept. For $30.00 you will receive the
memory resident versions of PROGAID with more complete
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. If you use this
version and find it useful but have no need of the
memory resident version then a contribution of $10 or
more would be appreciated. I repeat THIS IS NOT
and requires a fee if used for a period of more then 30

Make check payable to William A. Dickson!

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

Atten: Bill Dickson

Phone: 215-666-6554

Messages can be left for me at HOMER BBS 215-269-9592!
Registered users will receive free support and upgrades
at a modest handeling fee.

 December 29, 2017  Add comments

Leave a Reply