Synthetic programming (SP) is an advanced technique for programming the HP-41C and Elektronika B3-34 calculators, involving creating instructions (or combinations of instructions and operands) that cannot be obtained using the standard capabilities of the calculator. [1]
Some HP-41C instructions are coded in memory using multiple bytes. Some of these sequence of bytes correspond to instructions the calculator is able to execute, but these cannot be entered in the program memory using conventional program entry methods (i.e. using the calculator as described in the user's manual). Synthetic programming uses a bug in the calculator firmware to enter those byte sequences as a sequence of other instructions, then partially skipping halfway through the first instruction, so that the calculator believes the end of the first instruction is actually the beginning of a new one. This was called byte jumper or byte grabber.
It is not clear if the creators behind the HP-41 were aware of all these "black holes". HP did not officially support these techniques, but probably was intrigued by the strange operations and in some cases allowed enthusiasts to practice in their offices and helped to improve it among a whole sense of curiosity.
Synthetic programming is also possible on the (original) HP-15C. [2] [3]
An electronic calculator is typically a portable electronic device used to perform calculations, ranging from basic arithmetic to complex mathematics.
In computer programming, machine code is computer code consisting of machine language instructions, which are used to control a computer's central processing unit (CPU). Although decimal computers were once common, the contemporary marketplace is dominated by binary computers; for those computers, machine code is "the binary representation of a computer program which is actually read and interpreted by the computer. A program in machine code consists of a sequence of machine instructions ."
Reverse Polish notation (RPN), also known as reverse Łukasiewicz notation, Polish postfix notation or simply postfix notation, is a mathematical notation in which operators follow their operands, in contrast to prefix or Polish notation (PN), in which operators precede their operands. The notation does not need any parentheses for as long as each operator has a fixed number of operands.
In computer science, threaded code is a programming technique where the code has a form that essentially consists entirely of calls to subroutines. It is often used in compilers, which may generate code in that form or be implemented in that form themselves. The code may be processed by an interpreter or it may simply be a sequence of machine code call instructions.
In computer science, self-modifying code is code that alters its own instructions while it is executing – usually to reduce the instruction path length and improve performance or simply to reduce otherwise repetitively similar code, thus simplifying maintenance. The term is usually only applied to code where the self-modification is intentional, not in situations where code accidentally modifies itself due to an error such as a buffer overflow.
The HP 49/50 series are Hewlett-Packard (HP) manufactured graphing calculators. They are the successors of the popular HP 48 series.
The HP-41C series are programmable, expandable, continuous memory handheld RPN calculators made by Hewlett-Packard from 1979 to 1990. The original model, HP-41C, was the first of its kind to offer alphanumeric display capabilities. Later came the HP-41CV and HP-41CX, offering more memory and functionality.
The HP-42S RPN Scientific is a programmable RPN Scientific hand held calculator introduced by Hewlett-Packard in 1988. It has advanced functions suitable for applications in mathematics, linear algebra, statistical analysis, computer science and others.
Programmable calculators are calculators that can automatically carry out a sequence of operations under control of a stored program. Most are Turing complete, and, as such, are theoretically general-purpose computers. However, their user interfaces and programming environments are specifically tailored to make performing small-scale numerical computations convenient, rather than general-purpose use.
The Hewlett-Packard Voyager series of calculators were introduced by Hewlett-Packard in 1981. All members of this series are programmable, use Reverse Polish Notation, and feature continuous memory. Nearly identical in appearance, each model provided different capabilities and was aimed at different user markets.
The HP-19C and HP-29C were scientific/engineering pocket calculators made by Hewlett-Packard between 1977 and 1979. They were the most advanced and last models of the "20" family and included Continuous Memory as a standard feature.
The Saturn family of 4-bit (datapath) microprocessors was developed by Hewlett-Packard in the 1980s first for the HP-71B handheld computer and then later for various HP calculators. It succeeded the Nut family of processors used in earlier calculators. The original Saturn chip was first used in the HP-71B hand-held BASIC-programmable computer, introduced in 1984. Later models of the family powered the popular HP 48 series of calculators. The HP48SX and HP48S were the last models to use genuine Saturn processors manufactured by HP. Later calculator models used Saturn processors manufactured by NEC. The HP 49 series initially used the Saturn CPU as well, until the NEC fab could no longer manufacture the processor for technical reasons in 2003. Therefore, starting with the HP 49g+ model in 2003, the calculators switched to a Samsung S3C2410 processor with an ARM920T core which ran an emulator of the Saturn hardware in software. In 2000, the HP 39G and HP 40G were the last calculators introduced based on the actual NEC fabricated Saturn hardware. The last calculators based on the Saturn emulator were the HP 39gs, HP 40gs and HP 50g in 2006, as well as the 2007 revision of the hp 48gII. The HP 50g, the last calculator utilizing this emulator, was discontinued in 2015 when Samsung stopped producing the ARM processor on which it was based.
The HP-15C is a high-end scientific programmable calculator of Hewlett-Packard's Voyager series produced between 1982 and 1989.
The HP-16C Computer Scientist is a programmable pocket calculator that was produced by Hewlett-Packard between 1982 and 1989. It was specifically designed for use by computer programmers, to assist in debugging. It is a member of the HP Voyager series of programmable calculators. It was the only programmer's calculator ever produced by HP, though many later HP calculators have incorporated most of the 16C's functions.
The Olivetti Programma 101, also known as Perottina or P101, is one of the first "all in one" commercial desktop programmable calculators, although not the first. Produced by Italian manufacturer Olivetti, based in Ivrea, Piedmont, and invented by the Italian engineer Pier Giorgio Perotto, the P101 used many features of large computers of that period. It was launched at the 1964 New York World's Fair; volume production started in 1965. A futuristic design for its time, the Programma 101 was priced at $3,200 (equivalent to $29,700 in 2022). About 44,000 units were sold, primarily in the US.
The HP-34C continuous memory calculator was an advanced scientific programmable calculator of the HP 30 series. It was produced between 1979 and 1983.
The HP 35s (F2215A) is a Hewlett-Packard non-graphing programmable scientific calculator. Although it is a successor to the HP 33s, it was introduced to commemorate the 35th anniversary of the HP-35, Hewlett-Packard's first pocket calculator. HP also released a limited production anniversary edition with shiny black overlay and engraving "Celebrating 35 years".
Keystroke programming describes a specific way of programming by which each keystroke on a device or application is recorded in some way and then played back so that the recorded key-presses can be repeated multiple times. Keystroke programming is most commonly but not exclusively found in programmable calculators, but there are keystroke-programmable software applications, too, for example Vim
Elektronika B3-34 was a Soviet programmable calculator. It was released in 1980 and was sold for 85 rubles.
In computing FOCAL character set refers to a group of 8-bit single byte character sets introduced by Hewlett-Packard since 1979. It was used in several RPN calculators supporting the FOCAL programming language, like the HP-41C/CV/CX as well as the later HP-42S, which was introduced in 1988 and produced up to 1995. As such, it is also used by SwissMicros' DM41/L, both introduced in 2015, and is implicitly supported by the DM42, introduced in 2017.