Evan wrote:
To be clear: do you not consider the P101 a
"computer" at all? If so,
then
what's your distinction between
"calculator" and "computer" when the
101
has conditional branching?
I guess I didn't really explain my thoughts about the differences in my
diatribe.
I am referencing "programmable calculators", not calculators in general.
A plain old calculator is not a computer in any way, as it has no way to
program it or store a program.
I would argue that certin non-progammable calcualtors which ahve the
internal architecutre of a computer (this is a procesosr running a
program, albeit one stored in ROM) are possibly dedicated or embedded
computers.
I limit the scope of my definition during the timeframe from 1963 (when
the Mathatron was introduced) through around 1972, when the HP 9830 came
about. That machine really blurred the line between programmable
calculator and computer. Even though the machine was (in my opinion) a
computer, it was conceived by HP's calculator division, and was marketed
as an advanced programmable calculator. =20
I think the HP9830 is a computer by any reasonable definitio on of
'computer'. It's user-rpgrammable in what is normally considered ot be a
computer language (BASIC). It can handle text as well as numbers
(although to do anything other than simply prining labels for inputs and
results youy need an add-on String Variable ROM). The intenral
archtecutre is certianly that of a computer.
I heard somewhere that the reson it was called a calculaotrs is much the
same reaons that DEC made Programmed Data Processors (and not
'computers'). At the time, everybody 'knew' what a computer was. A thing
you rented from IBM that lived in an air-conditioned room and which
needed a grounp of people to run it. A calculator on the otehr hand was a
thing consitign a few thousand dolalrs that you put on a desk or lab
bench and plugged into the mains.
Engineers/scientiests knew what they were getting when they ordered an
HP9830. But by calling it a calculator, there were no problems in the
company ordering/accounts department :-)
=20
An interesting factor that calculator companies took into account when
classifying their machines as "programmable calculators" versus
"computers" is that from a marketing standpoint in the early 1970's,
computers were intimidating to people, while calculators were much more
familiar to people in business and government. Thus, even more advanced
machines made after this timeframe, such as HP's 9825, were marketed as
programmable calculators rather than computers, though the machine was
definitely more of a computer than a programmable calculator. The term
programmable calculator allowed these machines to sneak through the bean
counters who generally went into panic when they saw the term "computer"
on a purchase requisition.
I should haev read on before typign my reply :-)
I am also considering just the base device itself, without add on
peripherals in cases where such were available.
* Primarily has input, and is operated through, a keyboard that
has a numeric keypad (0-9), and discrete function keys for mathematical
& programming operations. Lacks an alphanumeric keyboard.
One definition I'ev heard is the 'key per function' one. A calculator has
a 'SIN' key, on a computer you type it out as 3 letters. Alas this makes
the Sinclair ZX80./81/Spectrum a 'calculator'....
* Operates primarily as a decimal math machine,
meaning its
registers store numbers in BCD (Binary-Coded Decimal), Excess-3, or
other 4-bit representations of decimal digits, and the ALU is generally
not a pure binary device (most ALUs were 4-bit parallel BCD adders, or
bit-serial adders that had correction circuitry to handle inter-bit and
inter-digit carry).
FWIOW, the HP9810/20/30 ALU is bit-serial for binary operations and 4-bit
parallel for BSCD addition.
* Don't have the ability to perform Boolean logic
operations
(bitwise AND, OR, NOT and derivatives) as built-in functions.
So the HP16C is not a calculator :-)
[...]
* No interrupt handling architecture. I/O is
typically polled or
handled by pausing execution until an I/O is completed.
The HP9810/20/30 have an interrupt line. It's tested my the CPU microocde
at the start of every machine instruction.
For interest, here's the bit of microcode that does it :
---------------------
Incremnt PC -- Note on entry to this section, BC is normally clear
if BC is set, then P is incremnted by 2 -- thus skiping the next
machine instruction
0202 : 7d4708c : TTM=0;TTT=1;SC=3(UTS);X=5(TTP);R=1(PTR);ALU=7(ADD);BRC=0
0202 : 7d4708c : IQN=0;XTR=1;clk=0;sec=1;pri=c;
0202 : 7d4708c : M,P = (1) ADD (P);
0202 : 7d4708c : clocks=1; goto (1603)
Add 1 to LSB of P (result also in M)
1603 : 4d47ec0 : TTM=0;TTT=1;SC=0(ZTS);X=5(TTP);R=1(PTR);ALU=7(ADD);BRC=0
1603 : 4d47ec0 : IQN=0;XTR=1;clk=e;sec=9;pri=0;
1603 : 4d47ec0 : M,P = (0) ADD (P);
1603 : 4d47ec0 : clocks=15; goto (1612)
Add 0 to rest of P (thus adding 0001h to P)
1612 : cf31b28 : TTM=1;TTT=1;SC=0(ZTS);X=7(NOP);R=6(RDM);ALU=4(ZTTCBC);BRC=0
1612 : cf31b28 : IQN=0;XTR=1;clk=b;sec=4;pri=8;
1612 : cf31b28 : = (0) ZTTCBC (); RDM ;
1612 : cf31b28 : clocks=12; goto (0616)
Fetch -- Read next machine instruction from memory into T
0616 : d085fac : TTM=1;TTT=1;SC=2(TTS);X=0(TTQ);R=0(UTR);ALU=1(AND);BRC=1
0616 : d085fac : IQN=0;XTR=1;clk=f;sec=5;pri=c;
0616 : d085fac : Q = (T) AND (1);
0616 : d085fac : clocks=16; if (QNR) goto (1213,1212)
And transfer it into Q. Handle I/O service request, or go to instruction
decode routine
---------------------
I/O service request handler. This does an I/O operation with Q=0,
clearing the service reuqest F/F. It then executes the instruction at
location 0002, but doesn't load P. In fact P is decremented so that at
the end of the instruction (or subroutine if the instruction at location
2 is JSM, which it normally is), the current instruction is re-fetched
and executed.
1212 : fd47f44 : TTM=1;TTT=1;SC=3(UTS);X=5(TTP);R=1(PTR);ALU=7(ADD);BRC=0
1212 : fd47f44 : IQN=0;XTR=1;clk=f;sec=8;pri=4;
1212 : fd47f44 : P = (1) ADD (P);
1212 : fd47f44 : clocks=16; goto (1602)
Add FFFFh to P, thus decrementing it (BC is always clear on entry to this
routine, having been cleared in the fetch routine at 1612).
1602 : 4077060 : TTM=0;TTT=1;SC=0(ZTS);X=0(TTQ);R=7(ZTR);ALU=3(ZTT);BRC=0
1602 : 4077060 : IQN=0;XTR=1;clk=0;sec=c;pri=0;
1602 : 4077060 : M,Q = (0) ZTT (0);
1602 : 4077060 : clocks=1; goto (1616)
Shift a 0 into M and Q
1616 : c173e80 : TTM=1;TTT=1;SC=0(ZTS);X=0(TTQ);R=7(ZTR);ALU=6(IORSBC);BRC=0
1616 : c173e80 : IQN=0;XTR=1;clk=e;sec=1;pri=0;
1616 : c173e80 : Q = (0) IORSBC (0);
1616 : c173e80 : clocks=15; goto (1617)
Shift 15 more 0s into Q, set carry. Q is now clear
1617 : 4f77e37 : TTM=0;TTT=1;SC=0(ZTS);X=7(NOP);R=7(ZTR);ALU=7(ADD);BRC=0
1617 : 4f77e37 : IQN=0;XTR=1;clk=e;sec=6;pri=7;
1617 : 4f77e37 : M = (0) ADD (0);
1617 : 4f77e37 : clocks=15; goto (1111)
Add 15 0's to M. BC is set, so M ends up containing 0002 (address of I/O
service machine instruction)
1111 : ce4e097 : TTM=1;TTT=1;SC=0(ZTS);X=7(NOP);R=1(PTR);ALU=3(ZTT);BRC=0
1111 : ce4e097 : IQN=1;XTR=0;clk=0;sec=3;pri=7;
1111 : ce4e097 : = (0) ZTT (A/B,P); IOS;
1111 : ce4e097 : clocks=1; IQN(QBC); goto (1612)
Start an I/O operation. Q, and in particular Q(10) is clear, so the service
reqeust FF is reset. Then go to the Fetch routine to execute the
instruction at location 0002h
* The HP 9100A/B and 9810/9820/9821 match most of
these, though
self-modifying code was possible on the 9100's, although rather tedious
to do. These machines could be significantly increased in capabilities
with add-ons, but again, I'm only considering the base unit and not
add-ons.
I would argue that the fact a machine cna be expanded, particularly if
new funcitons can be addded (e.g. by add-on ROMs), rahter htan just
connecting it to a printer, say, then the machine is more like a computer
than a calcualtor.
-tony