Synthetic programming (HP-41): Difference between revisions

Content deleted Content added
m Stub
 
(33 intermediate revisions by 11 users not shown)
Line 1:
{{Wikifyuse dmy dates|date=September 20092023|cs1-dates=y}}
{{use list-defined references|date=September 2023}}
__NOTOC__
'''Synthetic programming''' ('''SP''') is an advanced technique offor [[Mathematical programming|programming]] the [[HP-41C]] rangeand of[[Elektronika B3-34]] [[Programmable_calculatorProgrammable calculator|calculators]], involving creating [[Instruction_Instruction (computer_sciencecomputer science)|instructions]] (or combinations of instructions and operands) that cannot be obtained using the standard capabilities of the calculator.<ref name="IEEE"/>
 
Some HP-41C instructions are coded in memory using multiple [[variable-length instruction set|multiple byte]]s. 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 (ie''i.e.'' using the calculator as described in the user's manual.). {{anchor|Byte grabber}}Synthetic programming uses a [[Software_bugsoftware bug|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''.
'''Synthetic programming''' is an advanced technique of [[programming]] the [[HP-41C]] range of [[Programmable_calculator|calculators]], involving creating [[Instruction_(computer_science)|instructions]] (or combinations of instructions and operands) that cannot be obtained using the standard capabilities of the calculator.
 
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.
Some HP-41C instructions are coded in memory using multiple [[byte]]s. 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 (ie using the calculator as described in the user's manual.) Synthetic programming uses a [[Software_bug|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.
 
==HP-15C==
Synthetic programming is also possible on the (original) [[HP-15C]].<ref>{{cite web |title=HP-15C Synthetics |date=2023-01-30 |orig-date=2004 |author-first=Eric L. "Brouhaha" |author-last=Smith |url=http://www.brouhaha.com/~eric/hpcalc/hp15c/tennant83.html |access-date=2023-09-25 |url-status=live |archive-url=https://web.archive.org/web/20230925194842/http://www.brouhaha.com/~eric/hpcalc/hp15c/tennant83.html |archive-date=2023-09-25}}</ref><ref>{{cite web |title=HP 15C Synthetics and Synthetic Programming |language=en |url=https://www.youtube.com/watch?v=7b6rQtSNnqY |access-date=2022-08-10}}</ref>
 
==See also==
* [[Casio FX-602P series]]
* [[Illegal opcode]]
* [[Logic synthesis]]
* [[NOMAS (support)]]
* [[Overlapping instructions]]
* [[Self-modifying code]]
* [[Side effect (computer science)]]
* [[Variable-length instruction set]]
* [[Yeggogology]] (Cyrillic: "Еггогология")
 
==References==
{{reflist |refs=
<ref name="IEEE">{{cite journal |doi=10.1109/MAHC.2011.63 |title=Once Upon a Pocket: Programmable Calculators from the Late 1970s and Early 1980s and the Social Networks Around Them |date=2012 |author-last1=Ristanovic |author-first1=Dejan |author-last2=Proti |author-first2=Jelica |journal=[[IEEE Annals of the History of Computing]] |volume=34 |issue=3 |s2cid=15888694 |pages=55–66}}</ref>
}}
 
==Further reading==
* {{cite book |title=Synthetic Programming on the HP-41C |author-last=Wickes |author-first=William C. |date=1980 |isbn=0-96252580-4}}
* {{cite book |author-last=Jarett |author-first=Keith |date=1982 |title=HP-41 Synthetic Programming Made Easy |___location=United States |publisher=Synthetix}}
* {{cite book |title=Inside the HP-41C |author-last=Dodin |author-first=Jean-Daniel |date=1985 |isbn=0-9612174-4-8}}
* {{cite book |title=Extend Your HP-41 |author-last=Mier-Jędrzejowicz |author-first=Włodzimierz "Włodek" Anthony Christopher |date=1985 |isbn=0-9510733-0-3}}
* {{cite book |title=HP-41 Advanced Programming Tips |author-last1=McCornack |author-first1=Alan |author-last2=Jarett |author-first2=Keith |date=1987 |isbn=0-9612174-6-4}}
* {{cite web |title=Microcode-Level Calculator Simulation |author-first=Eric |author-last=Smith |___location=Hewlett-Packard Handheld Conference in San Jose, California, USA |date=2004-09-26 |url=http://nonpareil.brouhaha.com/microcode_simulation.pdf}}
* http://www.jeffcalc.hp41.eu/divers/files/ppcjt-v1n3.pdf<!-- https://web.archive.org/web/20230923192857/http://www.jeffcalc.hp41.eu/divers/files/ppcjt-v1n3.pdf -->
 
[[Category:{{HP calculators|41]]}}
 
[[Category:HP programmable calculators| Synthetic programming]]
 
[[Category:Programmable calculators]]
[[Category:HP calculators|41]]
{{compu-prog-stub}}