Sony SOBAX 2500 Calculator: Theory of Operation
Sony 2500 Calculator
Theory of Operation
&
Summary User Manual
bhilpert / madrona.ca
2024 Oct
Rendition: 2025-Jul-13
1
Table of Contents
Introduction
• Architectural Overview
3
4
Implementation of Logic
5
Timing
6
Channel Layer
8
Register Layer
• Realign-Rotate Process
13
13
Digits
• DX Digit
• DY Digit
• DN Digit
• DM Digit
• DF & DFp Digits
15
15
15
16
16
16
Counters
• DPC - Decimal Point Counter
• CJ - Utility Counter
• CK - Utility Counter
17
17
18
18
Flags
• µA Flag: SST, PBRD, PQPA
• µB Flag: SNML, PNEG
• µC Flag: PNEWN2, PPHE
• µD Flag: RDD>0, PPH2
• µS Flag: SPARM, SSKIP
• µY Flag: DY.W, PDPE
• µØ Flag: INTØ, PQRDØ, RNDØ
• RDNEG Flag
19
19
19
19
20
20
20
20
20
2
Procedure Layer
• PM - Procedure State Machine
• Main Loop
• Zero-Blanking
• Rounding
• CLR-ALL & CLR-ENTRY
• NML-ENTRY & PNEWN Flag
• MEM-CLR & MEM-IN
• MEM-OUT
• REVERSE
• QUEUE-OP
• ADD/SUB
• MULTIPLY
• DIVIDE
• SQUARE-ROOT
21
21
21
21
22
23
23
24
24
25
25
25
26
27
27
Supervisor Layer
• SM - Supervisor State Machine
• SPC - Program Counter
• Execution & the EXEC Flag
• AUTO Mode
• LIST Mode
• LEARN Mode
• EDIT Mode
• IDLE
• DIGIT & the SNML Flag
• MEM-SET & the SMSET Flag
• JUMP & the SSKIP Flag
• Non-Code Operations
31
31
31
32
33
33
34
35
35
36
36
36
37
Appendix 1 - Table of PM States
38
Appendix 2 - List of Operations
42
Appendix 3 - Summary User Manual
• Registers
• Keys
• Switches
• Indicator Lamps
• Programming Notes
• Program Example 1
• Program Example 2
• Program Example 3
• Program Example 4
• Program Example 4a
43
43
43
45
45
46
47
48
49
50
51
Introduction
The Sony 2500 is a programmable desktop calculator from 1969. A schematic was produced
from a reverse-engineering of a 2500 unit. A logic simulation was produced from the
schematic. This commentary is intended as accompaniment to the reverse-engineered
schematic, having been produced from analysis of the schematic and exercise of the
simulation.
Proviso: There remain areas and aspects of the design not covered in this commentary.
Descriptions are not promised to be comprehensive, e.g. the Table of PM States may not
specify all actions occurring in some state.
[reference]: Text within square brackets is a reference to some page, figure or component:
[15]
page in this document
[SCH.15] page in schematic document
[SCX.3]
page in schematic appendix document
[E216.3] pin 3 of IC E216 in schematic
3
Architectural Overview
The Sony 2500 is a bit-serial design using a single magnetostrictive acoustic delay line for
number and user-program storage. Conceptually, the architecture can be construed into 4
layers:
User / Keyboard
Supervisor Layer
Procedure Layer
Register Layer
Channel Layer
• Channel Layer
At the lowest level, the Channel Layer deals with the details of
multiplexing the single delay-line into a set of 15 registers. Each register
as presented to the Register Layer is an independant recycling bitstream
of 64 bits each.
• Register Layer
The Register Layer interprets the bitstreams from the Channel Layer as
16 digits of 4 bits/digit. Some of the bitstreams are used for number
storage and some for storage of user-entered programs.
For numbers, this layer performs bit-level intra-register operations such
as the serial addition of bits and digit normalisation.
For program storage, this layer delivers an addressed instruction to the
upper layers for execution as directed by the Supervisor Layer. A
program instruction is a 4-bit function code stored in a register digit.
• Procedure Layer
The Procedure Layer sees the number registers as a sequence of digits.
It performs the arithmetic functions and sequences actions such as
moving operands and results between registers. The state machine PM
controls procedure execution.
• Supervisor Layer
The Supervisor Layer deals with keyboard activity and execution of the
user program. The state machine SM controls these actions. The
Supervisor Layer accesses the Register layer for the user-program
storage.
4
Electronic Implementation of Logic
The logic of the 2500 is implemented with a small family of SSI integrated circuits produced
by, and proprietary to, Sony. This family is referred to here as the 500 series [SCX.8]. There
are 4 types of ICs from this family used in the 2500, though there are understood to be a
small number of additional ICs in the family. The 504 flip-flop IC type is further divided into 3
subtypes of -30 -40 -50. This was likely a post-production grading for speed.
The 500 series uses bipolar NPN transistors operating in current-sinking mode. Vcc is +4V.
Logic 0 is low-impedance to GND, logic 1 is high-impedance to GND.
• Inputs
Inputs are frequently left unconnected. Such inputs are seen in logic
terms as 1.
• Outputs
The gate outputs do not have load or pull-up resistors. The flip-flop
outputs do have load resistors of ~ 1.1K.
Multiple gate outputs may be connected together to form a wired-AND
gate (negative-logic OR).
• Flip-flops
FF outputs transition on the 1-edge (positive) of the Ø input.
The G (Gate) input controls whether the JK input state will update the
outputs or not, when a 1-edge at the Ø input occurs. If G=1, normal JK
operation takes place. If G=0 the outputs will not change, i.e. equivalent
to J=0 & K=0.
The flip-flops do not have asynchronous set or reset inputs. They can
however, be asynchronously set and reset via collector triggerring by
asserting 0 at an output, e.g. asserting 0 to the Q~ output sets the FF to
Q=1.
5
Timing
The system timing is tied tightly to the operation of the acoustic delay-line providing storage.
The delay-line presents a requirement of precise data timing to maintain sychronism with any
drift in latency. In other delay-line implementations this may be provided by a crystalcontrolled master clock. The 2500 takes an alternative approach. The master clock is an RC
astable flip-flop functioning as the VCO in a phase-locked-loop arrangement with a phase
comparator and the delay-line in the loop. This is discussed further in the Channel Layer
section. For following commentary refer to the Timing Diagram [SCX.1].
• Master Clock
The master clock is the astable flip-flop formed from QF13,18. QF19 is
a local voltage regulator for the master clock. The output from this
astable is buffered to produce the master clock signal ØS.
The frequency of the astable can be adjusted by varying the QF13,18
base bias via Darlington pair QF16,17. This functions then, as the
voltage-control input for the PLL VCO.
• Channel Slicing
ØS sets the raw bit rate for writing-to and reading-from the delay line.
The delay line is time-division multiplexed into 16 channels. The
channels are delineated in time by the ØS Counter (ØSC) and identified
as ØS0::15. ØSC is a straightforward 16-stage 1-of-16 ring counter.
• ØB
Selected outputs from ØSC feed flip-flop [F408.9] to produce a signal
ØB which has a cycle period equal to a full 16-state cycle of ØSC. The
duty cycle of ØB is designed in conjunction with the register allocation of
the delay line channels (see RS cycling).
ØB is the register-level bit clock for the serial processing of numbers,
with the 1-edge delineating these bits. At the register layer and above,
all flip-flops are clocked by ØB. The G input to the FFs is then used - if
necessary - to control the bit periods at which transitions occur.
• Bits of Digits
A digit is comprised of 4 bits. The bits of a digit are delineated in time by
the ØB Counter (ØBC). ØBC is a 2-stage switch-tail ring counter. The
bits of a digit are identified as ØB0,1,2,3 corresponding to bit weights
1,2,4,W, though not all need to be decoded from ØBC to actual signals.
• Digits of Numbers A number is comprised of 16 digits. The digits are delineated by the ØD
Counter (ØDC). ØDC is an SR16-type counter. By default it produces
the full 16-state SR16 sequence. The ØDC state is decoded to signals
ØD0::15 with ØD0 corresponding to digit 0 (LSD) of a number.
ØDC provides a simple example of the use of the G inputs of the flipflops. The G inputs are fed by ØB3, resulting in the JK state updating
the flip-flops on the 1-edge of ØB at the end of ØB3. The counter
transitions thus occur at the end of digit periods.
• Extended NC
Assertion of PNCEXT (Number Cycle EXTend) extends the ØDC
sequence to 17 states by inserting an additional digit period (ØDEXT)
between digits ØD11 & ØD12. This is used when the digit registers
DX,DY,DN are inserted into the register bit-loops during processing.
6
• Numbers
A full 16- or 17-digit cycle of ØDC then, constitutes a number cycle.
Signal ØEON (End of Number) is a pulse produced during the last bit of
a number cycle (ØB3 of ØD15).
• State Transitions
State cycles for the execution state machines SM & PM are synonymous
with number cycles.
The G inputs of the SM & PM state-register flip-flops (SM.n,PM.n) are
fed by ØEON, with ØB feeding the Ø input. SM & PM state transitions
thus take place on the 1-edge of ØB at the end of ØB3 of ØD15.
7
Channel Layer
The channel layer provides the storage for numbers and user programs.
The channel layer is comprised of the acoustic delay line (ADL), its read and write amplifiers,
the clock synchronisation circuitry, the flip-flops DLRCV, DLa, DLap, DLb, and a set of flipflops and gates for multiplexing and demultiplexing the delay line into bitstreams to present to
the register layer. While the ADL provides the vast majority of the storage, the delay-line in
full includes storage provided by some of the ancillary flip-flops [SCX.4].
• Physical
The ADL is a magnetostrictive acoustic delay-line operated in the
longitudinal mode. The wire forming the storage medium is ~ 362 cm
long, looped into a coil of 10 turns. At each end is a transducer solenoid,
one for write and one for read.
• Channels
As mentioned in the timing commentary, the delay-line is multiplexed into
16 channels. 15 of the channels become a register each. The
remaining channel is injected with a fixed pattern to provide a sync
signal to the phase comparator of the master clock PLL. The time period
for a channel will be referred to as a slice and are identified as ØS0::15.
• Storage
Each channel provides 64 bits of storage. Interpreted as a register the
64 bits are 16 digits of 4 bits each. For 16 registers, the full delay-line
loop needs to be 1024=16*64 bits [SCX.4]. Four of the 1024 bits are
provided outside the ADL. DLa with DLap provide one bit of the four, DLc
is one, the remaining two are the multiple flip-flops of the demultiplexed
registers where a bit resides for 2 slice periods before being written back
to the ADL. The ADL then, must store 1020 bits.
• ADL bit injection
Bits are injected into the ADL on the 0-edge of ØS. This is the middle of
a channel-slice period when the state of channel-bits is stable in flip-flop
storage.
The 0-edge of ØS triggers the injection monostable flip-flop [QF21,27] to
produce a pulse of ~ 500nS. This pulse is gated by the 1-state of a
multiplexed channel-bit ADLINJ [F310.6] to drive current in the ADL write
solenoid [QF30].
• ADL bit exit
The degenerated pulses from the ADL read solenoid are first AC
amplified [2 in ADL,QF2,4], then re-formed into binary pulses of again
~ 500nS [QF5,7], to appear as signal ADLRD.
• ADL sync
For a given latency in the ADL, the frequency of the master clock must
be such that bits are injected into the delay line at a rate whereby 1020
bits will reside between the write and read solenoids.
Channel 0 of the delay line is used to carry sync marker bits. These
markers are injected regularly into the channel [F412.3] from the timing
system, they are not recycled per se. Re-formed pulses from the ADL
are gated with timing signals to extract the anticipated sync markers.
The sync markers are fed to a phase comparator for comparison with a
signal from the timing counters. Variations in time between the markers
and the timing system signal adjusts a charge pump which maintains the
8
voltage level into the master-clock frequency-control input.
• Charge pump
F306.3, F306.5, Q14,15 and associated components form the charge
pump.
Capacitor CF24 is the charge storage. Resistors RF44,45,48 present a
determined discharge rate for CF24. CF24 is charged by asserting 1 at
either of the two control inputs driven by TNUPC and TNUPF (Tune UP
Course & Fine). TNUPC=1 turns on QF14 to charge CF24 quickly
through the low-R emitter resistor. TNUPF=1 turns on QF15 but the
charge rate is slower due to the much higher R of RF48.
The voltage on CF24 (TNV) feeds the frequency control input to the
master clock. The high-gain Darlington-pair QF16,QF17 reduces the
load on CF24 so the discharge rate will be in better accordance with the
engineered rate set by RF44,45,48.
• Achieving sync
In normal operation, the phase comparison is made at slice-period
resolution while updated at a per-digit rate. At power-on, the initial
master-clock frequency will be some distance from the needed target,
requiring a wider capture range to bring the frequency closer to target.
The frequency must be resolved to the precision of a particular slice in
the full number cycle.
There are two phase comparators that resolve the synchronisation to
different levels of precision: a coarse comparator (TNUPC) that will be
used to bring sync into number-cycle precision, and a fine comparator
(TNUPF) that will be used to then bring sync into channel-slice precision
and maintain it there.
In the following commentary, functioning of the TNUPF comparator
during normal, post-initialisation operation will be described first,
followed by the TNUPC comparator, and then the process of achieving
sync during initialisation. Reference also the phase comparator timing
diagrams [SCX.2].
• Fine tuning
The TNUPF flip-flop [QF9,12] is triggered at a per-digit rate but its duty
cycle will vary with the error of the master-clock from the ØS target
frequency. The target is not a fixed frequency, rather it is dependant on
the delay period of the ADL which may vary.
During ØB3, TNUPF is set 1 at the beginning of ØS10 [F308.6] and
cleared 0 by an extracted sync marker from the ADL [F308.5]. The lower
the ØS frequency, the longer the TNUPF 1-period, thus a lower ØS
frequency charges up CF24 more, raising the ØS frequency.
The sync marker pulses are expected during ØS14 [F308.3]. The sync
markers were injected during ØS2 of ØB0 [F412.3]. ØS14 of ØB3 is 4
slices earlier than this to compensate for the 4 bits of the delay line in
flip-flops, outside the ADL. The sync markers are isolated further into
the 2nd half of ØS [F308.11] – this is significant in the resolution
precision of the loop operation.
The loop response is slower than the per-digit update rate. In practice,
9
the ØS10-to-ØS14 charge period is not long enough to fully compensate
for discharge. In observation of unit 620175, the ØS frequency slowly
lowers over ~ 11 digit periods till the 2 nd half of the ØS14 period slips
beyond the sync markers and the markers are in the 1 st half. TNUPF is
then no longer cleared 0, instead continuing 1 through the digit period,
this condition persisting for ~ 8 digit periods when the frequency is high
enough to bring the 2nd half of ØS14 back to the markers. This
correction cycle repeats with some jitter of ~ ±1 digit [SCX.2].
The net result is the ØS frequency is maintained such that the 0-edge of
the re-formed read pulses from the ADL are synchronous with the 0edge of ØS. The ADL delay from injected pulse to re-formed pulse is:
delay(ADL) = 1020 • period(ØS) – 500nS
The 500nS being due to the injected pulse starting on the 0-edge of ØS
whereas the re-formed pulse ends on the 0-edge of ØS.
• Coarse tuning
The coarse phase comparator TNUPC is formed from two flip-flops
[F305].
F305.9=1 for the period of ØS11 to the end of ØS0 during EON. If a
sync marker is received outside of this period, TNUPCp asserts 1 to
enable fast charging of CF24 to bring up TNV and raise the frequency of
ØS. Eventually the F305.9 1-period coincides with the sync marker and
TNUPCp is cleared 0 to stop the fast charging.
• Sync init process
There are two RC power-on-reset circuits: those of CF4 & CF34, with
CF34 being the longer. Initialisation proceeds in several stages [SCX.2].
Note TNRDY, TNUPCp and TNUPC are electrically the same signal.
0. Power up: CF34 is not charged; once power and basic circuit
operation has stabilised, INIT=1. CF4 is not charged, so
TNRDY=0, suppressing coarse tuning of CF24. Charge pump
capacitor CF24 is not charged and the ØS frequency starts out
being low. Sync markers are injected once every number cycle
[F412.6,1].
1. EON capture: As CF4 charges, TNRDY eventually asserts 1,
enabling the coarse-tuning phase comparator [F305.3] to assert
TNUPC=1 till the EON sub-pulse [F305.9] coincides with the
sync markers. Once this is achieved, this phase comparator is
essentially out-of-the-picture and the fine-tuning phase
comparator takes over.
2. Channel capture: As INIT is still 1, sync marker gating into the
fine-tuning phase comparator is enabled to select sync markers
during ØS14 of only EON [F307.5,6]. The ØS frequency is now
slowly raised further to pull ØS14 to coincide with the sync
markers.
3. Normal operation: Once CF34 charges sufficiently, INIT goes 0,
and the sync marker injection and gating switches to the perdigit rate of normal operation, as described previously. The
10
coarse-tuning phase comparator is also formally disabled
[F305.2].
• Power-off
When power is turned off, the charge in a 10µF capacitor charged to
100V is dumped in part into CF38 to turn on QF20. This discharges both
CF24 and CF34 so a quick re-power-on is ensured to perform the full
initialisation cycle. CF4 is discharged by a reverse diode to V+4.
The 10µF@100V charge is also distributed to dump through the ADL
delay-medium wire. This is curious but may have something to do with
magnetising the wire to enhance or maintain the magnetostrictive
characteristic.
• ADL bit recovery
The DLRCV flip-flop is the initial receiving flip-flop of read pulses from
the ADL. DLRCV is not an additive bit in the delay loop though, rather, it
overlaps in time with the last bit of the ADL. DLRCV is cleared 0 at the
beginning of a slice period, the appropriate bit pulse from the ADL then
has a window of (less than) one slice period to exit the ADL and set
DLRCV=1 before the bit is clocked out of DLRCV to DLa.
DLa is gated by DLRCV to toggle when DLRCV=1. DLap holds the prior
state of DLa and the two feed an XOR gate [F303.3,6;F304.1]. The
output of the XOR is 1 if DLa toggled. The net storage or delay is only
one bit after DLRCV – DLap is not additive to the delay. It is not clear
why this toggle-with-transition-detector was used to transform the 1s
from DLRCV to a transition and then back to 1s – perhaps to avoid a
differential feed from the capacitor-coupled DLRCV flip-flop.
• Channel allocation The 16 channels of the delay line are allocated per the table following.
The channel identification corresponds to the slice period during which
bits of the associated register appear in flip-flop DLb – the last delay line
stage prior to demultiplexing. Included are the DM and SPr values which
will select the RS registers.
Delay-Line Channel Allocation
• Multiplexing
Channel
ØS
Use
0
Sync
1
DM
SPr
Channel
ØS
Use
DM
SPr
8
RM7 RP5 0xD
0x0
RA
9
RM5 RP7 0xB
0x2
2
RD
10
RM6 RP6 0xC
0x4
3
RB
11
RP2
0x6
4
RM3
0x3
12
RP3
0x3
5
RM4
0x4
13
RP1
0x5
6
RM1
0x1
14
RP4
0x1
7
RM2
0x2
15
RT
To present the channels as registers they are demultiplexed into the set
11
of flip-flops RD,A,B,T,S. The recovered channel bits are distributed into
these flip-flops as they exit DLb. After two slice periods they are recycled
back into the delay-line, e.g. note the two-slice difference between
F405.11 and F412.10.
The bits none-the-less persist in the demultiplex flip-flops for longer,
through the 1-edge of ØB. This is the transition or processing edge at
the register level, thus the bits in these flip-flops are simultaneously
available for inter-operation at the register level, such as summing two of
them.
• RT logic differs
The logic for multiplexing RT differs from the other registers
[F404.4,F408.4]. [F404.4] is loaded at the same time as DLb. [F408.4]
is collector-set by level from RTw rather than by edge. It is not clear why
this was done, perhaps to avoid a clocked transition for RT channel-bits
which would otherwise occur on the transition edge for register-bits, or
due to the logic being too slow for the half-slice preparation period before
the bit is written to the ADL.
• RS registers
11 channels are allocated to the 7 user memories (RMn) and user
program storage (RPn). Collectively, they are referred to as the RS
registers.
These registers share the bitstream RS. Only one of these registers can
be accessed at a time. The selection is determined by the ØSn signal
fed to [E314.2]. The bit stream of the currently selected RS register
appears as signal RS.
• RS cycling
Normally, all the RS registers - including that selected - loop internally in
the channel layer through flip-flops RSc & RSd [F407.9,F407.4]. These
two flip-flops provide the 2 bits of storage to complete the data-loop
length of these registers. A gate in this path is enabled to pass data
during the 0 period of ØB [F410.12]. The duty cycle of ØB has been
chosen such that it is 0 for the write-periods of the RS register channels
and 1 for the write-period of the others [F408.7,8], thus the others are
prohibited from cycling via this path.
• RS write
To write to an RS register it must be selected, the desired bit stream fed
to RSw, and RSwENB asserted 1.
RSwENB=1 enables flip-flops [F409.9,F409.4]. These flip-flops delay
the selected slice phase 2 slice-periods. For the delayed slice phase, the
normal RS recycle path is disabled [F410.11] and a data bit from RSw
enabled for injection to the ADL [F410.10].
12
Register Layer
The objective of the register layer is to provide to the procedure layer an interface that deals
with multi-digit decimal numbers. The task of the register layer then, is to perform the
operations internal to registers: arithmetic operations at the bit level, digit normalisation, digit
shifting, transferring register contents between registers, etc.
The channel layer provides 15 64-bit registers to the register layer. Four registers - RD,A,B,T
- are presented as individual bit-streams. The remaining 11, referred to as the RS registers,
share a bit-stream as RS.
• Register RD
RD is the displayed number, be it an operand being entered or a result.
• Register RA
RA is an operand and results register.
• Register RB
Between operations RB contains a prior operand; during operations RB
is used as an internal temporary.
• Register RT
With tally mode enabled, the tally sum accumulates in RT.
• Registers RS
4 of the RS registers are dedicated to M1,2,3,4; 4 are dedicated to
program storage; and 3 may be either memory or program storage.
Long programs will abrogate M5,6,7 in descending order.
• Digit encoding
The 4-bit digits of a number use a 1242 bit-weight decimal encoding, not
standard BCD [SCX.7]. The 2nd '2' bit will be referred to as the 'W' bit to
distinguish them.
As with BCD encoding, the binary sum of two 1242 digits requires
correction (normalisation) to the 1242 encoding. This is performed in
DX.
• Negative numbers For registers RA,B,T,Mn, the stored value is a signed number in 9'scomplement format. The 16th digit (ØD15) will be 9 for negative and 0
for positive. Using 9's-complement format results in there being both a
positive zero and a negative zero, this is consequential for user
programming (see JUMP instruction).
For RD, the stored value remains as a positive magnitude but with flag
RDNEG indicating the sign (negative=1). When needed for arithmetic,
the RD bitstream is inverted or not, in accordance with the sign, by an
XNOR gate [C414.5,C413.5,6] to become bitstream RDCOMP.
Realign-Rotate Process
The register layer is not entirely free of constraints from the channel layer. The bits presented
to the register layer are not consistent over the entire ØB period. However, they are
guaranteed to be aligned and stable across the 1-edge of ØB when the register layer bit
transitions occur.
• Conundrum
As mentioned in the channel layer commentary, an operation involving
two registers can be performed at the 1-edge of ØB where the register
bits are mutually stable.
13
In storing the result of such an inter-operation however, a problem
arises. The current register-bit period has now ended, so injecting a
result value into the register channel will place it in a subsequent bit
period where it will be out of alignment with the other registers.
• Realignment
Resolving this involves a process:
• The bit-loop for up to 3 registers is extended from 16 to 17 digits by
inserting a digit register (DX,DY,DN) into their path.
• The number cycle is extended to 17 digits by assertion of PNCEXT.
PNCEXT is a subset of the states of PM.
• Now, during a number cycle, for the extended registers, bits are
written to the delay line after the additional digit delay of DX,DY,DN.
At the end of the number cycle all is well for these registers: though
they were written into a later absolute location in the delay line, due
to the extended number cycle the digit timing periods were also
delayed, so the data and the timing remain in alignment.
• Unfortunately, the registers which were not extended are now out of
alignment with the extended registers and the timing: they have
effectively been rotated down one digit. The solution to this is to
keep doing it: the register and number cycle extension is maintained
for enough number cycles to total 16, at the completion of which the
out-of-alignment registers will have rotated into alignment with the
extended registers. The extensions can now be removed.
• Tracking with CK
The extended number cycles are tracked by counter CK. Before PM is
released to execute a procedure, CK is sent home during S1 [B307.5].
During the procedure execution, for each extended number cycle, CK is
incremented [B206.9]. Before a PM procedure ends, state P03 or P04 is
entered. This state loops until CK returns to home [D316.10], to
complete 16 extended cycles.
• Realign example
An example of this is the MEM-IN procedure [SCX.5]. In P02, RD is
added to RS. RS is extended with DX, RD is extended with DN and the
number cycle extended, for one number cycle through P02. After P02,
P03 is executed in a loop for 15 number cycles with the extensions
continued.
14
Digits
There are six 4-bit shift registers used for intermediate storage of digits. 'Digit' here is 4-bits,
but not just digits of a number. Functions are also encoded and stored in 4-bit digits.
The digits are DX, DY, DN, DM, DF & DFp. DX, DY & DN may be inserted in number-register
bit-loops for extension to 17 digits but they additionally provide facilities distinct to each.
DX Digit
DX is the arithmetic adder, and is an extension digit, usually for RA. It has two bit-stream
inputs for the operands, a bit-stream sum output and a carry output. DX adds the two input
bitstreams and performs sum correction for the 124W encoding.
• Adder
The adder is formed by the gates between the A.W, B.W and X.4 flipflops. The operand half-adder (XOR) is formed from [B215.6,B216.3,
B212.5]. The carry half-adder is [213.6,212.6,wired-NORN].
• Normalisation
In processing the operand bitstreams, the adder performs a binary
addition of two 124W-format digits from the DXa and DXb inputs. The
sum however, is not in 124W format, so must be corrected - normalised to 124W.
The scheme for doing this normalisation is to wait till the end of the digit
period when the lower 3 bits of the binary sum have been formed and
stored in the DX flip-flops (the sum W bit has not yet been formed due to
the adder being located between the 3rd and 4th bits). In the next bitperiod (ØB0), this state is assessed by combinatorial logic and
appropriate corrections applied to the bits of the digit on the shift at the
end of ØB0. [B112.1,B212.11,B214.11].
DY Digit
DY can increment a digit, and is an extension digit, usually for RB. The increment facility is
used in multiplication for reducing the multiplier digits, and in division and square-root for
building quotient digits.
• Increment
The flip-flop [C103.4] functions as a carry flag. Incrementing the digit
value in DY starts with setting this carry flag for the first bit of the digit
[C205.9,11]. The carry is added to the bitstream in the XOR formed with
[C203.3,5,etc.]. The carry persists until the operand bit from the
bitstream is 0, at which point the carry is cleared [C103.6].
• Normalisation
As the DY data value is 124W encoded, normalisation of the sum as in
DX is also required here. However, because the sum is following a
known sequence - to wit, that of incrementing - a simplified normalisation
scheme can be employed: the only situation where normalisation is
necessary is when 4 is incremented to 5 - the 0b0101 sum must be
corrected to 0b1011.
This correction is accomplished by suppressing the bit shift of the 3
lower bits of DY for the first bit of the subsequent digit period [C202.3]. 1
goes out for the 1-bit, while the 0b101 4,2,1 bit sequence is effectively
15
shifted up 1 bit to the W,4,2 positions. The net result is 0b1011 is shifted
out as the sum.
DN Digit
DN holds an entered numeral, and is an extension digit, usually for RD. It may be loaded in
parallel from the keyboard or serially from program storage.
DM Digit
DM stores a 124W-format decimal numeral received either from the keyboard or program
store to indicate the currently-selected memory register.
DF & DFp Digits
• DF
DF holds a code for the function being performed. Like DN, It may be
loaded in parallel from the keyboard or serially from program storage.
• DFp
DFp contains the function code of the most recent prior function
executed.
• Function Codes
Function codes are a 4-bit hex value [SCX.7].
16
Counters
SR16-Type Counters
There are five 4-bit counters in the system:
ØDC Timing Digit Counter
DPC Decimal Point Counter
CJ
Multi-use utility counter
CK
Multi-use utility counter
SPd Program Counter - digit portion
All these counters are formed as a shift register ring with feedback which - unmodified produces a full 16-state sequence as shown in the table below. These will be referred to as
SR16-type counters. The values in the table derive from bit weights 8,4,2,1 applied first-tolast to the shift register flip-flops. The table shows the count arbitrarily starting with value 0.
SR16-type Counter Sequence
Count:
0
1
2
3
4
5
6
7
8
9
10 11 12 13 14 15
Value:
0
8
4
A
5
2
9
C
6
B
D
E
F
7
3
1
Note these are not common switch-tail ring counters. The point of using the SR16 design
was presumably that it is synchronous, provides full state-utilisation of the flip-flops, but
requires far less state logic than a 4-bit synchronous binary counter.
• Home state
None of these counters have an explicit reset input. Instead, for those
necessary, they are gated to clock to some home value and then
stopped. This home state may be deemed to be the beginning of the
count cycle. The home value is not the same for all the counters - the
reason for the lack of consistency being unapparent.
DPC - Decimal Point Counter
DPC maintains the user-selected position of the decimal point in the display.
• Sequence
The SR16 sequence is modified to 15 states:
[31084A529C6BDE7]
0xF is absent from the sequence.
• Home state
When DPC=3 the output DP is asserted, activating the DP cathodes of
the Nixies.
• Operation
DPC is continuously active, incrementing at each digit transition except
ØD15 [B206.3]. As a 15-state counter it thus maintains synchronism
with the 16-digit number-cycle. For example, if DPC=3 during ØD5, the
DP of the 5th LSD Nixie is illuminated. As the Nixies are right-side DP,
there are then 4 fractional digits in the display.
• Initial
At power-on, DPC is set to value 6 at the beginning of number cycles
17
(ØB0 of ØD0) by the pulses of INITP. This determines the initial startup
position of the DP and corresponds to 4 fractional digits.
• DP shift down
To shift the selected DP position down, DPC will receive an extra
increment during a count loop. In subsequent loop cycles then, DPC=3
will occur one digit earlier. The additional increment is performed at
ØD15 [B205.3].
• DP shift up
To shift the selected DP position up, one increment of DPC will be
inhibited during a count loop. Subsequently, DPC=3 will occur one digit
later. The increment at ØD0 is inhibited [B306.3].
• Thousands marks With thousands input DPCTH=1, DP=1 when DPC=8,5,C,D as well as
when DPC=3.
• Units digit
An additional output, UNITØD, asserts when DPC=7, which is one digit
period prior to DPC=3. This marks the digit period when the units digit is
being processed (is output from the register bit-streams).
CJ - Utility Counter
Multi-use utility counter.
• Sequence
CJ follows the full SR16 count sequence.
[31084A529C6BDEF7]
• Home state
In states PM=0bx0xx0, CJ is set to 3: CJ is incremented till stopped by
CJ=3 [B301.6].
• Serial load
With SM.1=1, CJ is serially loaded from RPF [B403.10]. The counter
feedback is suppressed during the load.
• Uses
Number-entry, zero-blanking, CHECK mode function display, procedure
loop counter.
CK - Utility Counter
Multi-use utility counter.
• Sequence
CK follows the full SR16 count sequence:
[F731084A529C6BDE]
• Home state
During S1, CK is set to 0xF.
B209.6=1 when CK≠0xF.
With SM.1=1 and B209.6=1, CK is
incremented on each digit [B208.6]. When CK=0xF, B209.6 is set 0,
disabling the incrementing.
• Output DPCTH
DPCTH=1 when CK=0xE or CK=0xF.
• Uses
Thousands marks, register realign-rotate.
18
Flags
There are a dozen flip-flops in the design serving as binary flags.
A number of these flags are as individuals shared for multiple uses where the uses do not
overlap in time. These flags are given a base name of µa along with additional names
descriptive of the specific uses.
For flags with a single use, most are not mentioned in this section, rather being described in
context in an according section.
µA Flag: SST, PBRD, PQPA
• SST
Supervisor Start. See EXEC Flag [32].
• PBRD
Blank Rounding Digits. See Zero-Blanking [21].
• PQPA
Square-root Pair-Aligned. See SQUARE-ROOT [27].
µB Flag: SNML, PNEG
• SNML
See DIGIT [36].
• PNEG
During arithmetic procedures PNEG tracks the sign of the result. It is
manipulated by the following:
• Operand sign capture: During P0A, RA is assessed and PNEG
set 1 if RA is negative [D208.5], as
indicated by the MSB.
• Result sign capture:
During P06, RA is assessed for negative
[D205.5,6]. See ADD/SUBTRACT [25].
• Result sign tracking:
During P16, PNEG is toggled if RD is
negative [D115.6].
µC Flag: PNEWN2, PPHE
• PNEWN2
Operand Management. For an operation which produces a semantically
new number, this flag carries indication over the idle period to then set
PNEWN.
PNEWN2 is cleared 0 in P17 at completion of an arithmetic operation
[D110.7,9].
PNEWN2 is set 1 at the end of P0A during a recall operation (MEM-OUT,
KTREAD, REVERSE) [D109.8,D108.11].
PNEWN2 is set 1 during intermediate binary arithmetic operations (not
completed by the '=' key) [D109.3].
At the beginning of P0A, if PNEWN2=1 then PNEWN is set 1
[D111.6,D108.1], that is, PNEWN picks up the PNEWN2=1 status from
the previous procedure.
• PPHE
Phase End. See SQUARE-ROOT [27].
19
µD Flag: RDD>0, PPH2
• RDD>0
RD Digit is greater than 0. Set 1 at the end of a digit period if the digit
which has just exited RD is not 0. An illuminated zero (0b1000) is
recognised as 0.
• PPH2
Phase 2. See SQUARE-ROOT [27].
µS Flag: SPARM, SSKIP
• SPARM
Program Parameter. When in LEARN Mode, SPARM=1 indicates a
STOP instruction for parameter entry needs to be entered in the program
store. See LEARN Mode [34].
• SSKIP
Skip Instructions. During program execution (AUTO Mode), SSKIP=1
indicates instructions are to be skipped, as opposed to performed
(SSKIP=0). See JUMP [36].
µY Flag: DY.W, PDPE
DY is not needed during number entry, allowing the W-bit flip-flop of DY to be employed in
secondary service as a flag:
• PDPE
Decimal Point Entered. Indicates the DP key has been pressed and
numeral entry is now in the fractional digits. See NML-ENTRY [23].
µØ Flag: INTØ, PQRDØ, (RNDØ)
This flag will assert for some portion of a number cycle. What portion is dependant on the PM
procedure.
• INTØ
During P09,P08 & P18, asserts 1 for the integral digit periods.
• PQRDØ
Asserts 1 during the digit periods of the radicand in RB [B205.10]. See
SQUARE-ROOT [27].
• RNDØ
During P14, RNDØ asserts 1 for the digit periods from the rounding digit
and up. See Rounding [22].
RDNEG Flag
RDNEG is a sign flag for RD. RDNEG=1 indicates RD is to be treated as a negative number,
even though it is not in complement form.
• CS key
Pressing the CS key toggles RDNEG [D405.7,D207.8].
• Copy from PNEG
During P13 and P17, RDNEG is copied from the state of PNEG
[D408.6,D405.5].
• Subtract
Subtraction operations toggle RDNEG [D104.5].
20
Procedure Layer
PM - Procedure State Machine
The Procedure State Machine sequences procedure execution. The current state is stored in
binary in a register of 5 flip-flops. 25 of the 32 possible states are used. State values are
presented as Pxx where xx is a 2-digit hex value.
The decoding of PM states from binary is heavily optimised for necessity, with the
consequence of being frequently obscuring of intention. For example, at some point in a
procedure the algorithmic intention of a single state may be decoded by only 3 bits, leaving 2
bits of freedom and 4 possible states, but is acceptable because other algorithmic
circumstance excludes 3 of the 4 states from occurring at this point or are unused states.
State transition logic determines which state-register bits are to be cleared or set to get from
the current state to a target state, though to note, the toggle facility of the JK flop-flops is used
at times.
For all commentary on PM, see the Table of PM States [38] and the PM State Graph [SCX.6].
Main Loop
The various procedures are situated in a main execution loop. P09 is a wait state for PM when inactive PM loops in P09. PM is kicked out of P09-wait under 3 circumstances:
- at the end of S1. As SM leaves S1 to head to S0, it kicks PM to either P08 [E408.6],
or P0A [E408.6,E408.3].
- by assertion of KSCS (DP-Shift or Change-Sign). PM heads to P00 [D416.7,D209.2].
- by assertion of KCA or KCE (Clear operations). PM heads to P00 [D416.9,D209.1].
P0A unblanks RD so it is ready for use during a function procedure.
At the end of a function procedure, the realign-rotate process is performed by P03 or P04. If
exiting from P04, a dummy pass through P00 is performed. This pass is not necessary and is
merely a consequence of minimising the state-transition logic. Execution proceeds to zeroblanking of RD, and PM enters P09 to wait for another kick from SM. DF is cleared of the
function code (DF=0) in P01, or P00.
Zero-blanking
Blanking of leading zeroes in the display is accomplished by modifying zero digits in RD for
the period spent in wait-and-display state P09. Zeroes which are to be illuminated are
modified to value 0b1000 (not a value in the 124W decimal encoding set) while blanked
zeroes remain as value 0.
The zero-blanking modification of RD takes place in the main execution loop after the
completion of function procedures, prior to going to P09. In consequence, RD must also be
unblanked prior to function procedure execution after leaving P09.
The zero-blanking algorithm is based on the equation:
16 digits = z(# of integral digits = 0) + n(# of integral digits > 0) + f(# of fractional digits)
21
The blanking and unblanking involves 3 states:
• P01
RD is assessed in prepara