Microcontroller based 1970s/1980s HP Style RPN Pocket Calculator author Neil Franklin, last modification 2011.10.15 Situation --------- lots of displeasure with current commercial calculator situation functionality and quality have gone down the drain since the mid-1990s although the situation is slightly improving at HP, with 35S and 20B/30B stuff that was available 20..30 years ago, should be today standard/improved instead we get lots of bugs, and slow fix rate (33S) or not at all (35S) and no flashable RPN scientific, so no software fixing/repurposing generally old "only best is good enough" attitude to design and manufacture has been replaced with cheap unattentive "slightly above middle" attitude also annoying traits, seem to be deliberate, here to stay, at increasing rate questionable key arrangements (shifted OFF, shifted STO) even more questionable slow menues instead of direct shift keys and even worse slower step through menues instead of menu keys questionable styling, todays awfull "artist" roundist/flowed/melted look or even worse emo styling "laughing face" keyboards, like 10BII or 33S instead of old "form follows function", which gave stuff own character actually the entire degeneration of design since the end of the 1980s generally the 1980s were the peak of design, no 1970s garishnous sufficient technology available, and not yet cost cutter mentalily they are like all other products the result of industrial design processes and consequently victims of entire capital/marketing/styling/costcuting world which has been steadily degenerating everything since about the mid-1980s result of this not anymore optimally usable, missing stuff, quality level old industrial calculators from better times before still exist but they are are limited in number, and out of production and many are dumped or lost or broken, and rest are also dieing slowly this guarantees running out at some time in future, needing replacement are subject to finding seldom ones, and being able to afford desirable ones also richest collectors are grabbing up everything, because originals this guarantees most people running out far earlier, needing replacement and even these were the result of those days industrial design processes in particular technology limited memory size and processor speed so were also never optimal for what everyone wanted, or would have liked just each person at some time found their nearest fit, became fan of that but most have no problems in imagining an "optimal" model that never was in particularly HP made spectacularly new and strongly varying stuff some great, some very personal, some missfitting, some awfull in both new and old we see an case of the classical closed design problem few insiders determine, what selection the many users get presented which results in an very small selection of possible options/variants vs a large amount of individuals ideas of what they would like and they do that with lots of pressures limiting what these options can be on one side vendors limits in knowledge what the users would like to have an on the other side vendors limits on what will give them enough profit in particular competing to give shareholders maximally attractive profit in commercial hardware this is unavoidable because of lowering market cost requires volume manufacturing, requires expensive tooling and distribution that requires capital, that dependancy makes firms subservent to capital place at lowest cost in investment and parts and labour, lowest risk design and fastest to market, largest market share, aim at widest average taste designers get limited by this, consumers only get that offered to them this totally non satisfying cheap and bland result is known as crapitalism realistically looked at, industrial design has always sucked because of this we just did not have any better choice, had to put up, take it or leave it Changes ------- now the times are changing, as the result of modern technology that industrial-only design situation changed with self-programmable chips because todays parts allow own manufacturing to be done by hobbyists allow us to make our own stuff, or at least customise generic stuff minicomputers allowed hardware->software, for those that could pay for them that laid the base for DECs control systems and HPs lab automation systems and started off software projects coming from universities, often shared the Dartmouth College minicomputer Basic stuff, the Berkeley Unix stuff microprocessors + PROM/EPROM/EEPROM/Flash + SRAM/DRAM memories reduced costs allowing anyone to get into computers and software, low cost, even at home gave second half 1970s home and easly 1980s personal computer revolution and in the first half 1980s also workstations, later open source Unixes but these require many wires, large cases, 40pin CPUs and 24/28pin memories and 20..40pin for IO stuff, or even many TTL, so no calculators from this could just about fit in an pocketable/bagable computer, 75C/71B style there were a small amount of pocket computers based on microprocessors but these were quite a bit larger than calculators, volume * 2..5 those days calculators used 1bit or 4bit, serial or multiplexed buses small even with early 1970s DIP cases, 20pin CPUs and 8pin memories early microcontrollers got size down to one chip and need no bus wires at all but were initially only mask ROM based, until EPROM based ones appeared and still after that were limited to one chip, small amounts of memory 8752 (1982, NMOS, 8k*8 ROM, 256*8 RAM) is enough for 30regs woodstock/spice the CMOS 87C52 would even go for 10C, and 3/4 reduced space 11C/12C/16C too small for powerfull calcs like 41C, unless using just as CPU emulator needs external memory chips and connecting wires/pins, like 8052 Basic and this loses all the size advantages of microcontrollers possible with external serial Flash memory chips, like PIC Basic Stamp uses only 18pin PIC and 8pin Flash, small calculator sized chips but no SRAMs in this size, even today only FRAM, as Flash replacement modern microcontrollers Flash based, ISP (re)progamming also have lots of Flash and SRAM, no external needed, internal also faster allows nearly any hardware design, at high power levels, and low battery in next to no parts and space, particularly with SOIC or TQFP cases together with standard pushbuttons and display parts and battery holders this gives entire electronics/internals for any random desired calculator but today usually only manual/hobby mechanical fabrication techniques available just PCB with parts on it, no plastic case and keys, looks like hobby project what is still missing is an set of industrial style plastic parts in particular the keys, and secondary the actual case now micromanufacturing and even desktop/personal manufacturing are spreading allows full hardware design with automated PCB and case manufacturing at least automate all difficult stuff, manually just solder and assembly this allows getting out from under c(r)apitalist rule/profit, focus on user now full hardware and firmware can be constructed and written by users all the open source advantages of Linux and BSD, also at hardware level Alternatives ------------ software modify/repurpose existing industrial device reuse complete hardware, gives result without any electronics or mechanics premade calculator style keyboard, display, batteries, and proper size just reflash with own software, pure programming project, easy to do but only a few limited models available, at HP these are currenty only 3 20B/30B, Pioneer keyboard layout, compact flashable ARM replacement for the Saturn/SunPlus based 17B/17BII/17BII+ may also become future replacement for Saturn/SunPlus 32S/32SII/33S/35S is potential hardware for making an own 32S/32SII or 42S follow up is being used for Paul Dale and Walter B WP-34S repurposing project based on 34C, with 41C/42S and 32S/32SII extensions, no Alpha but 7segment display limits it badly, has no full line alpha abilities has only an main 7seg line, plus auxillary matrix+ann half+half line only sign+12*(7seg+dot+comma)+expsign+3*7seg +43x6matrix for small font labels/varnames, too small for menus +11ann bunched up in corner, looks ugly when no label space in use far less than 17B/17BII/17BII+ (or 27S or 42S) 131x16 bitmap (22x2char) no chance for 6 key menues to compensate for only 1 shift key also no chance for showing 2 stack levels or 2 program lines even quite a bit less than 14B (or 22S or 32S/32SII) 12*5x7 char bitmap let allone extended 33S/35S 2-line displays, no complex, no X: and Y: not even chance for 32S/32SII style 4-of-6 keys mode select menues actually less than 41C 12*14seg, which can display upper case Alpha or in extended "Halfnut" 41CV/CX even full lower case Alpha only little more than non-Alpha 10B (or 20S/21S) sign+12*7seg+11ann main 7seg line actually identical, just plus 3 small non-dot 7seg and 43x6matrix for prompts, not enough for menues or program steps requires HP to use an "step through 1 item at a time" menu system is even slower than the 6key menues on any Clamshell or Pioneer this also means that display can only support key coordinate programs at the standard of 1970s LEDs or Voyagers or low end (7seg) Pioneers or use 43x6matrix up in the corner, just Prgm/Alpha, fits 11char 3x6 as is being done in the WP-34S project, insufficient for an 41C strictly 7seg can do "mixed case" A..Z alpha, plus a little bit more would be quite a step backwards from last 25..30 years of Alpha the WP-34S repurposing project is also using this, 12char+3char this may be enough display for an 10programs/290steps business machine with step through menues, and not even merged keycodes (below an 12C) but not enough for an decent programmable scientific calculator the situation is same as with 18C 2k being OK for an business calc but then in 28C the same 2k failed as base for powerfull RPL calc problem comes from only single chip hardware, from extreme cost cutting separate controller and LCD chips were acceptable in lesser 33S and 35S and most likely also used in 17BII+ and 17BII+Silver with more LCD shows problem with industrial setting, cost cutting to the bone even single old SED1250/AX6120/PT6520 chip offers 61x16=976 segment enough for up to 2-line 28*(14seg+colondot+dot+comma) +24ann or even 3-line 19*(14seg+cdot+dot+comma) +7ann or even 4-line 14*(14seg+cdot+dot+comma) +24ann or even 4-line 7seg+12*(14seg+cdot+dot+comma)+4*exp7seg +20ann or even 2-line 13*(5x7matrix+dot+comma) +14ann and even the 400 segments of the ARM chip used are not used optimally comparing with 41C at 216 segments, w/o colon dot 204, 2nd line 192 would be good enough for 2-line 12*(14seg+dot+comma) +16ann or 2-line sign+10*(14seg+dot+comma)+expsign+3*exp7seg +34ann or better 2-line 7seg+10*(14seg+dot+comma)+4*exp7seg +10ann or unlikely 2-line 11*(14seg+dot+comma)+expsign+3*exp7seg +4ann or better above with last 14seg without dot+comma and with 8ann or unlikely small font 2-line 13*(3x5matrix) +10ann or unlikely smallish font 2-line 11*(3x6matrix) +4ann or possibly 1-line 14*(5x5matrix+dot+comma) +22ann or above with 15*(5x5matrix) without dot+comma and with 15ann or unlikely 1-line 11*(5x7matrix) +15ann if HP had delivered any of these, I would be repurposing 20B/30B there would be no sufficiently large reason for making own hardware 12C, Voyager keyboard layout, compact and cute flashable ARM replacement for the older Nut/SunPlus based 12C, "12C+" could become revived 15C, "15C+", shown Sep 2008, but nothing since claims that this is mainly due to lack of sales channel access yet annother problem with industrial setting, requiring mass sales the display limits it even worse than the 20B/30B only sign plus 10digit 7Seg, lowest display HP ever made, same as on 3x only sign+10*(7seg+dot+comma)+9ann, even 2 digits less th 10B 20S/21S this is a fundamental Voyager (and Spice) Problem, as low cost systems so only potential for making an own 15C or 16C revival, nothing else unfortunately just binary replacing the Nut firmware is impossible there is no JTAG interface for reading/writing flash like in 20B/30B claims because of EMI, but newer 30B has JTAG again, same shielding only special 3wire RS232 cable, only for developers, on request and the SAM-BA bootloader software prevents readout/modify/reload because it can only be activated by pin that erases the flash and Nut emulator is not available to add firmware, will need rewrite and not even an real SDK like for 20B/30B, just sample program amount of work is not justifyable for 7seg keycode programm Voyagers with 128k of Flash surprising that 15C firmware is not inside every 12C with 3*10bit in 32bit/4Byte gives 12C 8kByte + 15C 2*8kByte = 24k with 2*10bit in 2*16bit/4Byte gives 12C 12kByte + 15C 2*12kByte = 36k SRAM 56bit in 2*32bit/8Byte gives 12C 40*8Byte + 15C 2*40*8Byte = 960 switchable as it is in HPs official 12C+15C iPhone Applet use an setting in test menu for 12C-only/15C-only/12C+15C selection battery out and Pr Error and Reset all switch (back to) 12C-only in later case use ON-2 and ON-5 to switch beween using the two no hardware, no new keyboard, not even picture, no manual or packaging no adverts, no sales channel, no sales staff education, no service just make it known to 15C fans as an non-official "easter egg" from what firmware revision (for upgrades, by HP or anyone w cable) and from what serial no factory installed (for new buyers) then user just needs to modify the keyboard legends, if so desired 28 unshifted are same, 5 f-shifted are same (and 20 more are blank) 7 g-shifted are same (and 6 more are blank) remove 11+14+26=51 and then mark 11+34+32=77 of 3*39=117 this would cost max one day programming, few days including testing perhaps few more for management and political battles low cost addition, even for 10..15day * $1000/day = $10-15'000 would have given a good chance to add 10..100'000 of more sales both new 15C-only sales, and 2nd to 12C+15C users modifying keyb assuming profit of $1..10 per device about, 30'000*3=$100'000 not exactly an large profitmaker, but certainly no loss either could also add 16C firmware, same Flash and SRAM as 12C needs adds 16C-only sales, and 2nd to 15C+16C users modifying keyb and even 3rd to 12C+15C+16C users modifying keyb but they failled to add this even in the iPhone Applet although that would have also required an 3rd keyboard artwork that they failed to even do this can only be internal politics battle real hardware vs "only" functions (and no hardware) vs nothing or simply an environment discouraging even thi level of ideas this shows even more problems with the industrial design setting 48S/etc, largest keyboards and displays and case ROM+SRAMcard Saturn (48*) or ROM+SRAMcard ARM (49*) or Flash ARM (50*) keyboard full Pioneer width, and full classic/41C inkl switch row height and display twice of 18C/19B/28C/28S and four times 17B/27S/42S size and also has bidirectional infrared and special 4-pin connector RS232 allows loading of new software, and backups, and external programming can be (re-)programmed in SysRPL or even in Saturn Assembler just require 128k+ RAM memory, 48SX +128k, 48GX or 48G+, or 49G, or 50G actually better hardware for repurposing, uses SRAM, no flashing needed and has normal RS232 for loading stuff into it, PC access, Inet access this was used for an 42S emulator, even using original 42S firmware but requires original 42S to copy firmware, defeated its purpose but has largest size of all HP originals, far more than pocket size nowhere near the compactness of Voyagers or Pioneers, or even 41C/CV/CX and like 42S, the 48* are also old historics, are not made any more also defeats purpose, although they are a lot plentifull and cheaper 50G new, and Flash, lots of it, but not exactly an mechanically good HP has keyboard feel issues, keys bouncing, small missplaced enter all key layout fixed, only legends changes poss, "overwrite" with stickers or modify case with side slits to allow holding an overlay with tabs or simply blank out legends, use software to show, like 41C press/"NULL" or overpaint keys with the desired legends, use an paint pen or similar or even just user stickers, although they will need frequent replacing HP claims 20B custom keyboard from 2000 up, custom LCD from 10'000 up but then ignores well estimated 30'000-100'000 market for 15C revival hardware modify/repurpose existing industrial device reuse complete mechanics, keys, cases, LCDs, batteryholders, ev beeper, ev IR only "brainswap", replace electronics, new PCB and chips, with flashable or unlikely reuse part PCB (LCD+keyboard+battery+IR), only CPU part new use as mechanics any cheaply available (current or unliked or died) model 10B/20S/21S would allow an "30S", or non-14seg 41C, or 25/29C/33E/34C but these have less display than only-reflashing 20B/30B, more than 12C only gains having own choice of CPU, and 20S/21S scientific keys 14B/22S allow an exact 32S/32SII, even with just character based LCD chip because they are the same hardware, right down to the LCD glas but 14B like 20B/30B limits to financial keys, unless using 22S scient 17B/17BII/17BII+/27S allow "37S" or 42S, with an bitmap based LCD chip because they are the same hardware, right down to the LCD glas but SED1250/AX6120/PT6520 chips minus few pixels width, only 122 of 131 and at least the 27S are also liked devices, no modding, only dead ones OTOH many 17B/17BII/17BII+/17BII+Silver been made, easy to get 18C/19B/19BII/28C/28S even allow an double hight 42S, minus few pixel width but are claimed to be the worst HPs to dismantle, and is worst case ever 35S between 14B/22S/32S and 17B/17BII/17BII+/27S, 2 lines character display available today, hardware is quite decent for new stuff, scientific keys but quite large and key drops, also serious firmware crash bugs and for 3 years no ROM fixes, and is mostly software problems and non-flashable ROM, requires replacing chip and for this also board actually 2 chips there, CPU (small blob) and LCD ctrl (large blob) strictly only replace first, but what wiring, easier entire board dead Voyager, or running old non Flash 12C would allow any Voyager but no real advantage over reflashing the Flash 12C only brainfix for an dead 10C/11C/15C/16C, w scientific or computer keys dead 41C would even allow extended 41C or (display)subset 42S multi-PCB + flexprint design, not even PCB chop needed for LCD controller would be like the NEWT project, a FPGA 50* 41C mainboard replacement of course this will only work with an dead 41C/CV/CX, are also seldom and also only with the older multi-PCB "Fullnut" models, no "Halfnut" dead LED model could be revived or even converted to more desirable one or even to something entirely better, 7seg LEDs can also do 7seg alpha at least in an Woodstock/2x no PCB chopping is needed and dead ACT (or ROM or RAM) Woodstocks are quite common, est 25..50% this could even be named the "Woodstock Revival Board" :-) but in 3x may be difficult, would require own flexprint or more work but this still limits to keyboard layout+legends that the chosen original has in particular if that was an business model, like the 10B/14B/17B/17BII only better if taking an scientific 20S/21S or 22S or 35S as base even then 20S/21S and 22S algebraic and 33S and 35S questionable layout and also limits display what the original had, but that may be acceptable at least most displays are better than flashable 20B/30B or 12C have but requires own board w LCD controller, in microcontroller or separ chip single SED1250/AX6120/PT6520 for 61x16=976 or dual SED1250/AX6120/PT6520 for 122x32 or each one of above ???0 with an ???1 extension for 141x16 or just an HD44780 for 14B/22S or 35S, annunciators als 1x1 "chars" this is not needed for an 41C with its separate LCD board, PIOs Nut Bus nor for any LED models, simply drive directly from normal PIOs or alternatively replace board and LCD, own CPU and own LCD module gives more choice, bitmap possible, LCD controller built in, less wiring analog also on LED models own 14seg/16seg/5x7matrix LED modules and requires sacrificing an original, no problem if business or alg model or if it is an already electrically dead one, thus reviving the rest or if an newly produced 35S, as these are neither seldom nor historic so this is limited to modding a few single ones, no general solution as most of the base models are also seldom and dieing, only a respite purely virtual, run emulator on existing touchscreen PDA/smartphone/gameconsole strictly not microcontrollers, but usually based on System on Chip (SoC) which is the large brother of microcontrollers, with memory external is software "repurposing" an device (in "" as this is often intended) allows any random display and keyboard layout+legends, every user their own some like this because displayed keyboard can adapt/chance to anything and can even change at runtime, show many shift levels key codes and can even switch between different calculator models, for diff jobs and uses existing hardware, which the user may already own and carry around and is only a software project, easy unless system software gets in way but such screens are very small, which may be compensated with dualscreen this is not exactly a great thing, unless smallness is required and touch screens lack haptics of an real keyboard, tapping on dead surface some users regard this as acceptable, nice for them, not for others also some users have probles with touchscreens no registering reliably keyboard PDA/smartphone would allow typing, like command line emulators but they are still only QWERTY, not fast special calculator function keys and often only 4 or even 3 rows of keys, even require shift for 0..9 usage would be at the level of an Unix/Linux "dc" (or "bc") calculator or at the level of an non-calc pocket computer, 75C or 100LX style or more likely at the level of Emu41 or Emu71 running on an 100LX or even run as emulators on an full PC, such as laptop or netbook which is where the Nonpareil emulator(s) come from, CPU emu and HP firmware and also the Emu41 and Emu71, originally for DOS desktop/laptop PCs but enormously large size and long boot time and QWERTY keyboard as above because of this I use 41CV next to my PC at home, even when PC is running actually HP offers an official 12C+15C (but no 16C) Applet for iPhone and Win vs mult open source Nonpareil ports, cheaper, have 4 of 5 Voyagers in them and also open source 41C/CV/CX ports, with all extension modules once again shows even more problems with industrial design setting multiple announced and failed geek projects of series production calculators can be proper open source hardware, and calculator-specific keyboard could theoretically have ideal feature set, Flash and alpha/bitmap display but a calculator is in the first approximation its keyboard which defines its functions and documentation of and inferface/access to with then an display above, which only defines its output abilities and random invisible replacable mechanism plus power supply inside and near random case wrapped around all, which only defines size/holding so an decent project requires an real keyboard and case plastics these then result in large NRE costs for injection molds, requires capital which requires volume manufacturing identical copies for recuperating this lands the project back in the same position that industry is in all the same problems that limit what is possible and how much variable but 1000s of potential buyers all want different keyboards as their "ideal" fitting many users desires is impossible, all want something different this starts with keyboard layouts, and then snowballs with key legends just see all the "HP revive which model" threads, no agreement just most desirable 67+29C+34C+41CV+15C+16C+71B+32S|32SII+42S+48SX|48GX then add the many "my ideal calculator" keyboard layout/legend sketches and the total lack of agreement on what/which/how it should be see OpenRPN, Open45s, etc, mainly drowned in feature list discussions have not even agreement on Pioneer vertical or Voyager horizontal forms some love one or the other of these, and others hate one or the other even take most universal, vertical, with Pioneer width + classic height lose Voyager, wide for classic/41C, wide+high for 2x/3x, high for Pioneer so may mean better do Pioneer-only layout, save extra 2 key rows/space gives still original layout for all 17B/17BII/27S/32S/32SII/42S fans and still fairly easy to adapt older models, like 41C->42S was done but the result is nearly the same as repurposing existing Flash 20B/30B just far better display, more memory, overlay holder, possibly extra keys is even nearer to repurposing existing SRAM based 48/etc actually this would result in an nearly 48/etc size/layout keyboard just smaller (less display, possibly less keys), and with overlay holder alternative of basing it on Voyager competes with the Flash 12C but could also be done for better display, more memory, overlay holder and anything else (classic/41C, 2x/3x, 71B) is most likely too specialised limits sales to an specific subgroup by being that, even less volume result is, this even this "most universal" will already not sell well and anything else will sell even worse, no large amount, fail let allone how much display, char 2x20 vs 4x20 vs 2x40 vs bitmap 128x32 pure LCD vs backlighted LCD vs OLED, and tradoffs with battery time then add hardware variants, such as IO or storage media, USB, and so on ... let allone actual basic calculator circuits, what chip to use most agree on basic 4-banger functions (but already disagree on R-UP) most logs (but vary bases/arrangements), usually trig (but vary on HYP) some complex (but how/where enter/function/dispay), or matrix (how enter) diverge on programming (don't use up keys vs absolutely neccessary) then comes RPN-only vs also-Alg keys, and Equation/Matrix editing or not not to mention any RPN+RPL hybrids, or even Basic, and QWERTY or not that already prevents any attempt at one layout+legends set so no volume keyboard manufacture is possible, centerpiece of calculator and note that HP was also limited here, would offer improvement so perhaps only standard "4-banger" arithmetic on keys, rest use blank keys like early 35, or 41C Blanknut style, as everyone wants different ones from both 0..9, dot, next-to-dot?, +|-|*|/, ENTER, CHS, EEX, <- next-to-dot, HP has pi (35) or Sigma+ (80/45/22/27/37/10C/11C/12C/15C) or R/S (65/55/25/67/29/33/34/38/41/32S/32S/32SII) or CLX (70) or DSP (21) or % (31/32) or CHS (16C) or = (algebraics) because this position varies a lot leave it blank, user selects no special f/g keys, user may want 0or1or2or3, or diff places or colours no "top", these rows as vary strongly (logs, trig, stats, finance) no Alpha, may want none or Alpha manues or different charset or colour but even 4-banger swaps numbers/ops from Classic/2x/3x/41C to Clam/Pioneer and the ON key will most likely will fix its position, and force that using stickers for legends not friendly or robust, use printable overlays for these overlay holder like 41C, even just "hook slits" like 41C bottom overlay no problem for "f" functions, even with 41C/32S/32SII like alpha even 20S/32SII/48SX-like "f"+"g" functions both on overlay is possible use 65 "f"/"f^-1" or 67/34C "f"/"g" style grouping to reduce size but unshifted functions are missing, these are also needed for "top" possibly can group some, as in sin/sin-1, but rest fails here this situation precludes any form of series manufacturing, will never fit and therefore actually requires individual small scale manufacturing because this OpenRPN aimed 2 layouts, Voyager and Pioneer, but split volume still volume manufacturing and then customisation with laser etched keys with such odds not surprisingly nothing ever came from any such project and not surprising that OpenRPN folded, most likely failed financing Richard Ottosen DIY-RPN, actual running (and few copied) calculator project shown at http://www.brouhaha.com/~eric/hpcalc/hhc2005/hhc-hw10.pdf the name stands for Do It Yourself RPN calculator someone has even suggested an [hp] 180deg rotated to [dy] logo first wanted to do 25, then with Eric Smith changed to doing an 41CV can be used for anything classic/2x/3x/41, that is anything pre-Voyager uses only off the shelf parts, no custom stuff, allows single ones as result no NRE cost problems and their assorted volume manufacturing and so also allows anyone to make their own, as they like/want it used an PIC ASM rewrite of Nonpareil code, and standard HP firmware this is possible because all HP firmware before 71B is not restricted available 35/45/55/80 21/25 32E/33C/34C/37E/38C 41CV/41CX 11C/12C/15C/16C but no 65/70 or 25C/27/29C or 67/97 or 31E/33E 10C and excludes all Saturn based machines, inclusive all RPL and all Pioneer except 71B+Forth where entire source code has been published like 41C tact key keyboad, fixed layout, but printed legends allow favourite model overlay with scaled photo of original, gives true keyshape/colour/shading actually technique of foil keypads, printed behind transparent plastic I have known since early 1990s that printer can be small mans CNC machine seeing this project really drove home the possibilities+implications has also same flexibility as picture "skins" in PC audio/video players which is what PC emulator and PDA/phone calculators basically are using just that it is an actual hardware printout, not runtime switchable only the physical key count and shape is fixed, needs only a few shapes and because there is no series production, just basic technology everyone can wire an own layout (just new printed circuit board) even easier own key legends (just new overlay), so any calculator classics and 67, and nearly alike 41C (if switch->key and LED->LCD) smaller size 2x/3x with one row less, subset of above (if done like 41C) Voyager 1xC, and Basics 75C and 71B all different, 3 specialised Clamshell 18C/19B/28C/28S, also another 1 specialised, and lots of work Pioneer 10B/14B/17B/20S/21S/22S/27S/32S/32SII/42S all same layout is also widened "switchless small size 2x/3x", standard HP of decades Charlemagne 48S/etc, largest, pioneer width, 41C+1 rows but despite tact keys with click, only print surface, no key shape haptics this partially compensated for with foil small holes punched at each key at least with printout over keys no TI style wobbly key feeling of tact but no website, no construction plans or prints, only PDF of presentation(s) Smith has website, but no further information, not even code in Nonpareil and deleted Nonpareil Voyagers, suggests working with HP, on new 12C/15C? HPM Forum entries confirm contributions to 12C Nonpareil C->ARM port near future fabber/3D-printer/solid-modeller/rapid-prototyper techniques allow "printing" of near random 3D shapes of wax or theroplast or metal with an simple generated bitmap/voxelmap "image" controlling it these are rapidly changing the plastic (and metal) manufacturing landscape can make all hereto difficult/expensive/impossible parts from just bits because up to now all milling/routing/drilling/lathing is subtractive only moulding/founding/smithing are reshaping, but require much tooling with fabbing (and printing) new third way, additive, from nothing, no tool industrially mainly used for models and prototyping, developement time but will allow single part plastic keys and cases to be made, on desktop this is being called micromanufacturing or desktop/personal manufacturing this analog to single part custom "prototype" PCBs already available today or the single copy BoD (Book on Demand) printed books also available this will solve the problems with professional looking keys and case without any NRE cost or volume manufactur, just design the bits and print some can already do mixed plastic+metal inlays, make PCBs without etching and perhaps then extend to maing special connectors (such as HP-IL) would even allow an 3x series like solderless designs, no soldering required as that only requires an shaped piece of plastic to hold the chips that would allow entire caclulator to just be fabber and standard parts user must then just assemble them, like self-assemble furnature but at present AFAIK only single-colour parts, no double shot like keys although this is mainly limit of fineness of current detail achievable and of having no multi-material/colour deposition mechanisms will require users colorising them, make channels to fill with marker pen or possibly missuse metal-in-plastic PCB trace making for lettering keys but fabbers are fairly expensive ($5to6digit) and so also the parts made need to expect upper $3digit for set of calculator parts, only the plastic dwarfs the upper $2digit for electronics and PCB parts by large factor and half of those electronics costs are the 35-40 tact keys needed biggest problem will be autogenerating the varying input files to would allow users to have any favourite models hardware characteristics just define them in some high level description file, and "compile" Project Idea ------------ as the result of above notes and thoughts behind them decided that DIY-RPN is presently the best basic approach original is not available, so only take the idea, make an own variant of it decided later with fabbers more advanced version as runner up project more designing work and difficulties, less assembling work and dificulties looks like something for an future project, after basics built up in particular base for randon users making many calculators, have impact anyone can make small series runs, own model, or build/config to order improve on DIY-RPN keyboard, make it with better haptics, better key design for that use print-and-cutout, wrapped around small key profile blocks for this ideally print out onto self adhesive paper, else glue them or even better cover/wrap/stick with self adhesive transparent foil rest of construction from my own EPROM reader + EEPROM/Flash burner/reader frame from PCB material, multiple parts then wired/soldered together reminded of that by David L Jones uWatch RPN/Alg Casio like calculator watch shown at http://calcwatch.com/index.html note that Jones critisises his design, "only for novelty", needs professional as experienced industrial designer thinks in consumer/marketing attitudes in doing so he ignores non-volume/industrial flexibility/individuality gain for that nonindustrial techniques needed, and styling acceptable tradeoff this will then ultimatively be resolved with fabbers, best of both worlds like all my other projects off the shelf perfboard, no custom printed circuit just deliver documentation for part placement and wiring netlist so anyone can wire their own layouts, modifications, rearrange, any calc is circuit equivalent of delivering open source, not closed binary but at the price of everyone having to manually "compile"/wire it target audience obviously makers, prefer doing own over consume-only lazy this is mainly an problem with producing PCBs, do not want to etch stuff PCB services require CAD program vector file formats to generate PCB data this could be also the main problem with fabber 3D CAD file formats which are required to generate shape data files but would be compensated for with no wiring any more, assembly by anyone at least as long as they can insert and solder same size parts onto PCBs consequently only deliver technology research, and example implementation and all the pointers what/where/howmuch to modify, for other examples later found out about RepRap.org and Fab@Home.org low cost DIY fabbers Fab@Home traditionally fabricated, relatively cheap $4digit, syringe based RepRap replicate itsself, even cheaper $3digit, more assembly, extruder based and as entire device comparable to only about 2-3 calculators at auction or any X/Y/Z personal CNC (like McWire), then just add an fabber toolhead also RepStrap projects based on such, make RepRap without parent RepRap costs will become mute with these, fabber lot cheaper, and so also parts with this the plastic parts costs fall to or below electronics components in particular as only buying generic material, not renting or work time RepRap strictly needs an 3mm plastic wire, not generic plastic balls/chips but old printhead also ball version, use variant of that to make wire reading about them also cleared up file format situation fabber industry standard STL file format, ASCII, defining sets of triangles these should be autogeneratable by processing an definition file gets translated to G-Code for standard CNC machine control, M for print or alternative directly generate G-Code "plotting" at "assembler level" prevents "rope pushing" problem, prodding compiler to do right thing also PCB industry standard Gerber file format, ASCII, for PCB photo/drill so should also be autogeneratable by processing same definition file or alternative G-Code for CNC milling PCB, or even fabber plastic+metal with this file format problems look managable, are documented and simple so these may change all the manufacturing method stuff that started this file as it reduces all fabbing problems to near/below manufacturing by hand possibly instead go direct for fabbing, leave out manual version keys do pioneer style "plastic spring" keys plus "faceplate" covering them or even make "faceplate" removable, instead of using an overlay over fixed would allow an stack of faceplates, switch to desired one or even make the entire keyboard removable, switch to desired one would allow all key tops, but is more bulky to transport key legends possibly by printing onto the keys or dual material keys RepRap limited to 0.5mm nozzle, HP41 keys Font 2..3mm, only 4..6pixel but 0.3mm has already been done by experimenter, just slower, 7..10pixel and this is also nearer to the line strength used on originals down to 0.1mm is claimed to be possible, but printhead then difficult so could go to 0.2 if plot turns out to expand by up to 50% the hight of "plot" layers is already only 0.3mm, 3.3layers/mm given by diameter 0.5mm, flattended to 0.5mm hor x 0.3mm ver would most likely become 0.3 hor x 0.2mm ver, if finer printhead used bigger problem is that there is currently no multicolor printhead both 5-colour and high-res 0.1mm printhead are low priority extensions but 2 heads has been done, although only with older problem mechanics Fab@Home limited to 4* syringe diameter, down to 4*0.0x, has 2-syringe head but from using syringes instead or extruder more material+precision limit this seems to be materials choice problem, from what it can handle this head has been adaptet to run on RepRap, so basic device gives choice best would be multimaterial/-colour machine, plot text first then build background, should then automatically fill around text this even can result in double shot like keys buildup strictly these are both 3D "pen" plotters, not 3D "bitmap" printers RepRap 0.5mm is "pen" diameter, with 0.1mm for CNC/plotter movements so it should be able to plot key legend decently, and then fill around or text embedded into grooves on top layer(s) of key, may be faster and work as good as an engraving filled with paint same also faceplate+overlays, one complete layer, 2nd with text in it or if even above fails, can try plotting onto completed keys just one layer with other plastic colour, could be quite stable this would be equivalent to "printing on", but "print" is 0.3mm plastic so no problems with rubbing off, no need for double shot like stuff or in worst case fall back to printing labels and sticking onto keys would be no worse than repurposing, still random layouts+cases plastic with conductors inlayed could even be used instead of perfboard/PCB no need for PCB shape/size milling or hole drilling or trace etching both of this will allow using SMD or even TQFP parts which is impossible or at least difficult with 2.54mm raster perfboard or even require SMD parts, to reduce problems with making holes in particular series of near spaced holes, 2.54mm for DIP ICs perfboard-style 0.8mm holes require 2.54-0.8=1.74mm material/rings unter 1.74/2=0.87mm then series of rings, above ring and series of Cs has been done experimentally in 2004 by RepRap founders, but then dropped was part of their aim, all special/specific parts manufacturable and this includes electronics boards, but then not followed through or missuse fabbers CNC robot for milling+routing+drilling PCBs should be stable enough for drilling, but milling may be an problem or make an board and then "draw" conductors on it with silver pen the same type of pen used for mending PCB traces, in pen holder head colleague has done this with modded 2D pen plotter on epoxy board but apparently it did not work very well, multilayer problems with 0.3mm thickness this would even allow multilayer with wiring inside conductors step up one layer with "well" and uper layer drawing parts on both side with "2 boards back to back" design or turn over "first" board and build "second" on its back would be both disconnected, vias from top to top layers either hole through board, and wire, as part on both sides or at/around edge of board, as if one board "folded" in middle but both of above have not yet got an dual printhead to do this and in particular no special printhead for low melting point metal there are experiments with an spool of wire, dispense from that possibly add an plastic frame for 3x style solderless construction allows fast assembly by anyone, or fast and cheap as service for others inlayed conductors actually automatically offer this as one variant the other being "soldering" parts in while filling the inlays TODO: get an 3x series original, preferably an 34C for also functions (33E/33C functions are very lot like 25/25C, have already got an 25C) possibly also other series I do not have, 55,65/67,32S/32SII,28C,48SX for this go for an tour around 2nd hand shops and flea markets Shapes and Models ----------------- HP has made only 4 basic mechanical forms, with 2 shapes and 2 sizes the 4 combinations of vertical and horizontal, with small/thin and big/thick and in some of them then multiple (sub-)variants, key counts and labels vertical+big/thick for Classic/Woodstock/Spice/Coconut (and Charlemagne) styles advantages: some single hand, large batteries, large display easy Classic x5/x0 1|2switch 3rows*5key 1row*(Enter+3key) 4rows*(1key+3wide) set the standard "35 key" pattern, rest are all variations of this all 3 above top row 1 or 2 switches, left one always power, right progr display LED 15 7seg with "internal" dot, 65 also magcard writer/reader case thickness is no problem for 3*AA, originals had exactly that this would allow powering LEDs, like in Classic/2x/3x originals also 45->46 and 80->81 desktop printer models, based on 9805 case+printer ignore these here, as no pronter mechanism, better separate printer Woodstock 2x 2switches 2rows*5key 1row*(Enter+3key) 4rows*(1key+3wide) reduced to 30 key pattern, so just smaller key matrix display LED 12 7seg with dot case size is problem for 3*AA, originals had only 2*AA can be solved by using an 2.5..5.5V chip at 3V, red LEDs also 2V+ OK also 21->91 and 22->92 desktop printer models and 29C->19C handheld printer model based on 10 case+printer Woodstock 67 uses with Woodstock/2x chip technology but Classic/65 keyboard+magcard+battery, so no problem here also 67->97 desktop printer model with magcard Spice 3x 1|2switches 2rows*5key 1row*(Enter+3key) 4rows*(1key+3wide) basically just mechanically cheaper reworked woodstocks, solderless from 1982/83 on redesigned without solderless, at time already Voyagers display LED 11 7seg with dot+comma, are the last LED models case thickness is same problem for 3*AA, originals also had only 2*AA neither magcard nor printer models Coconut 41C 1row*4button 3rows*5key 1row*(Enter+3key) 4rows*(1key+3wide) back to full 35 key layout, plus partial/special row, gives 38matrix+1on internally wired Nut CPU as (5(O)x8(I))+1(INT), enter using 2 positions ALPHA/PRGM/USER as 5th "logical column" right of numbers, ON = left+INT display LCD 12 14seg with dot+comma+2nddot and 12 annunciators at bottom first calculator with Alpha display and keyboard mode case thickness is no problem for 3*AA, originals even had 4*N also no problem to put in multiple chips, originals have ca 10, in DIPs is min 20mm and max 30mm thick, all others similar, 65/67 even +5mm slightly over 75mm widest point, 2x are only slightly over 65mm widest main special feature 4 module slots/ports, expandable, makes it a computer allows optional magcard or printer, and also more RAM, ROMs, wand, HP-IL as result no standard magcard, no any printer models, add if you want Charlemagne 48SX/etc 4rows*6key 1row*(Enter+4key) 4rows*(1key+4wide) larger number of keys, larger matrix, more PIO pins, 48matrix+1on display LCD 131x64 bitmap, 8line 131/6=22char, annunciators expandability reduced to 2 large memcard slots, and 4pin RS232 and bidir IR case thickness is no problem for 3*AA, originals also had 3*AA and is a large case, large slots, size comparable to 41C+magcard horizontal+big/thick for 75C/75D and 71B and also 95LX/100LX/200LX styles advantages: special purpose, large batteries, QWERTY normal 75C/75D and 71B for BASIC instead of RPN, with QWERTY keyboard (71B +num) large number of keys, larger matrix, more pins, 64matrix|54matrix+1on same type of layout also for any other pocket computer style project 75C/75D 1row*12key 4row*13key, switch on top edge display LCD apparently ca 30 5x7matrix, assumed annunciators at bottom 71B 4row*(10+4)key, -1 for 2-row vertical Enter here (all Saturn?) keyboard is pure PIO out+in registers, no encoder display LCD 132x8 bitmap, 132/6=22char, annunciators at left and right various forms of module slots/ports, expandable, makes them into computers 75C/75D 3 extern ROM, 1 intern RAM (magcard + HP-IL built in) 71B 4 extern ROM/RAM, 1 intern magcard, 1 intern HP-IL 71B is a really great calculator, perhaps the best HP ever made with Forth/Assember and HP-41/HP-71 Translator very universal but both of these require the same E0000 hard ROM address range with HP-IL + 82163A (or even 82198A) video + 9114A floppy a full computer 95LX/100LX/200LX for MS-DOS and Lotus, QWERTY+num, large size, lid display same situation as for 75C/75D and 71B, plus far larger display in lid in 95LX own smaller LCD, not PC compatible, only special software in 100LX/200LX display LCD 640x200 4 or 16 graylevel CGA graphics main difference would be device plus lid with display, lots of thickness and difficult to build an reliable hinge and cable, many firms failled expandability reduced to 1 PCMCIA slot, and 4/10/10pin RS232 and bidir IRDA but that has turned out to be just enough, both in the 48SX and here particularly if PCMCIA is an n*10MB Flash card, and RS232 als comms Calc App only 19BII style software, with Alg/RPN and Bus/Sci switch but can add emu41 or emu71 or qbasic or Forth or even C compiler 100LX actually really great piece of computer hardware, perhaps best ever complete pocket computer, video + disk, and would be so even if non-DOS horizontal+small/thin for Voyager styles advantages: special purpose, thin, fits before PC keyboard Voyager 1xC 4rows*10key, -1 for 2-row vertical Enter goes from 4 + 36-1(enter) to 40-1(enter) layout, also gives 39 keys internally wired Nut CPU as 5(O)x(7(I)+1(INT)), enter using 2 positions columns "5U", outer to inner pairs, each 2*4 vertic, ON/f/g/... all INT display LCD 1 sign(ann) 10 7seg with dot+comma and 9 annunciators at bottom no Alpha disp/key whatsoever, back to pre-41C days, are 2x/3x replacement case only min 10mm and max 15mm thick, has nothing underneath keyboard but are nearly 130mm wide, lots of space next to display will only fit one chip under LCD and 3*LR44/SR44 next to both of them or one chip next to LCD and 2*CR2032 beneath both of them this may require going for smaller TQFP parts, which is undesirable no expandability whatsoever, back to pre-41C days, are 2x/3x replacement vertical+small/thin for (Champion/)Pioneer styles advantages: some single hand (not Champion), thin (Ch lim), high display easy Champion 18C+19B+28C+28S main 2rows*6key 1row*(Enter+4key) 4rows*(1key+4wide) + in lid 5rows*6key 1row*(Space+4key) display LCD 137x32 bitmap, 4line 137/6=23char, annunciators back to woodstock/spice hight, but 1 column wider, 36matrix+1on+35matrix and even wider with the hinge, and lots wider when unfolded each keyboard flatness Voyager or worse, display/elecronics/battery double less width, no space next to display, but decent above and underneath and difficult to build an reliable hinge and cable, many firms failled no expandability or reduced to unidirectional IR (only for printer) Pioneer 1xB+2xS+3xS+4xS 2rows*6key 1row*(Enter+4key) 4rows*(1key+4wide) small display LCD 1 sign 12 7seg with dot+comma 11 annunciators at bottom medium display LCD 12 5x7matrix, annunciators at bottom and top large display LCD 131x16 bitmap, 2line 131/6=22char, annunciators at top back to woodstock/spice hight, but 1 column wider, 36matrix+1on, no hinge same flatness as Voyager, less width, no space next to display, but above are not quite 80mm at widest point, more keys but nearer together will also only fit one chip under LCD and 3*LR44/SR44 above both of them or one chip above LCD and 2*CR2032 beneath both of them this may also require going for smaller TQFP parts, which is undesirable no expandability or reduced to unidirectional IR (only for printer) TODO: document HP keyboard legends, what included in which models and where design own layout derived from usefull sci/stat/binary/program feature set Model Selection --------------- Ottosen DIY-PRN did an 25 and then upgraded to an 41C, Smith just an 41C both run Smiths C to PIC ASM ported Nonpareil Woodstock/Nut UCODE emulation with original HP 25 or 41C firmware running on that, for all complex stuff Jones did an own design Watch, no clone, runs entirely own written software like the Free42 software-only written from scratch 42S emulator does neccessary to avoid every user extracting own software, as it is restricted don't go for an specific model, but rather design the basics for all so that anyone can make their device, with layout for their favourite model be that an actual historic HP or an HP-inspired own "ideal" combination make base technology files, and then model configuration files analog to Nonpareil CPU emulators plus model descriptions+firmware for project ensure base technology can be used for vertical and horizontal and for thin/small and thick/large systems, so that any choice goes my own "ideal" model is RPN style software display at least 12x1 to 16x2 characters (enough for 41C or even 42S text) or far better 122x32 graph (superior to 17B/27S/42S, near 18C/19B/28C/28S) can simulate 7seg or 14seg, dots/commas between characters, annunciators can even do 2-line 7seg or 14seg, for X and Y or XR and XI or do an i41CX style 1-line plus an smaller Y/Z/T/L line can even do 4-line 5x7matrix program editing and limited graphing or even use this for full 4-line X/Y/Z/T, with width for *R and *I dual shift keys, like most of 2x and 3x and 1xC and 20S and 32SII/33S/35S this gets rid of the worst design deficit of the 41C/CV/CX a wonderfull naming and key assigning system, and few/no keys to use it use f gold and g blue colour for 2 shifted functions preferably standard stuff unshifted and g-shifted, because overlay for f unlikely use tripple shift keys like on 65 f/f-1/g or 67+34C f/g/h three functions in direct access are good enough, and less messy visuals for this rest the named functions like on 41C/CV/CX are sufficient for alpha use colour white/next like 32S/48S or red/onkey like 35S alpha default lower case, f for upper case, g for numerals/punctuation with all the alpha mode extensions of 41C and 42S style software and are similar to the 9810 extensions over the 9100 the 42S software seems to be improved 41CV+Advance module plus 64bit, complex, matrix, 44char Alpha, limited binary application but requires menu dependancy, often costs the second display line and it lacks all the 41CX Xfunc/Xmem text editor and timer stuff and 41C keyboard overlays and expansion are missing on Pioneer type cases and so prevents usable redefining of keyboard mode, only custom menu also 41C+32S style alpha on/next keys is far better than 42S alpha menu also 41C/CV/CX VASM firmware source code is available, can be used as base and also has an living community extending it, such as NoVRAM and 41Z unlikely port 41C and modules to Saturn style CPU, for more digits and mem the 71B Basic and Forth/Asm firmware source is also available to plunder but the 41/71 Translator emulation module seems to not be available and claims it is an real translator, not an 41C running on Saturn and some form of saving and loading programs and/or PC communications at least RS232, even if only inverted 5V TxD/RxD, extern 5 to 12V inverters actually better only inverted 5V TxD/RxD, simpler to other controllers functions add others of 11C/15C and in particular others of 16C actually the "underappreciated" 20S would be near ideal feature set if it were not an Alg/non-RPN, and not 7seg display and Keycode Programs 42S has most of this feature set (and a lot more), so I use one of these but 16C only small subset, and in form of limited application mode/menu this derived from 41C Advantage module, just 32->36bit, and better UI 41CV has nearly all that I want, is just lacking all 16C stuff better analog to 15C style 41Z Complex, also an 16C style 41N Integer not 41B Base, because B also used for Basic and Business, confusable this is great 41C/CV/CX advantage, expandable to anything, best system of one ignores the larger "computer" Basic calcs, 75C and 71B for own vertical arrangement, go for Classic/2x/3x/41C with 4+5 columns not Champion/Pioneer/Charlemagne with 5+6 columns, as too wide possibly go for an 2x size narrow case, for single handed use or halfway between 2x and 3x, more space but still small most likely classic/41C rows, for the extra row at top, more keys this also allows this vertical to have same 39 keys as voyager horizontal possibly combine with an higher multiline display, at cost of "ON" row use SGM+ for ON, OFF and USER and PRGM shifted, (f,g,)ALPHA unshifted better multiline and keys at cost of calculator longer than originals aim for same keys+display+battery surface as voyagers, thinner and higher "above" row ON and mode keys, but flat ON plus 3 normal keys, like Voyager allows all with exeption of ON to have shift levels, for 39+f38+g38 keys top row were the keys most "replaced", on 80/70 with the 5 TVM keys which basically amounted to an always active built in TVM program on 65/67 with local labels A..E, and 67 shift a..e which were used by any program, including any TVM programs for these on 11C/15C top left half with (shifted or USER-unshifted) labels A..E on 16C top left 6/10ths with Hex entry A..F on Champion/Pioneer/Charlemagne with the 6 menu keys, possibly shared including also for Hex entry A..F, even on the minimal non-menu 20S so put most replaceable "defaults", SGM+/S-,HYP/CLS,SIN/S-1,COS/C-1,TAN/T-1 which are also senseless in Integer mode, freeing the keys for Hex A..E this allows using them for local labels A..E, like on 65/67 and 41C USER with shifts above as fA..E (not as a..e), allows also below as gA..E these are all local labels of the current selected program f-shifted position is the easiest for overlays to replace so place above "defaults" functions on top and g-shifted front second row are more likely to stay, not be replaced by programs but still allow larger programs useing labels F..J to grab these, like 41C and also shifted local with labels fF..J (not f..j) and gF..J here also standard functions on top and g-shifted front, f for overlays put all extended maths stuff (% D%, 1/x y^x, sqrt x^2, LOG 10^x, LN e^x) F is needed together with top row A..E for Hex entry so also place there an function which makes no sense in Integer mode third row then for for all f-shift/g-shift/ALPHA/STO/RCL stuff from here on use all 3 positions for standard stuff, on f most replacable f can be overlayed by assigning, to trigger programs global labels including starting/switching/ending of programs using A..E,F..J so these f levels will be first filled with assigned keys, 41C style and then further with +|-|*|/ keys and 0..9 keys, for many programs unlikely have USER flag exchange entire keyboard, not really needed to 2 rows can "fall through" to keyboard function, if no local label and switching to an "empty" program with no local labels, gives all so only other rows assigned global label block default keys permanently possibly make USER flag only select/deselect assignment processing XEQ SST (and all other programming stuff) can be on shifted keys as XEQ Alpha Alpha is slow anyway, and we have enough assign space and the rest ist seldom typed, and usually only in program editor fourth row normal ENTER/CHS/EEX/<-- keys, shifted for complex/vector/matrix leaves open where to place x<>y and R-DN (and possibly R-UP), use 2nd shift bottom 4 rows classic, leftmost column operations, 3 right columns numbers for own horizontal arrangement, go for Voyager, possibly modified possibly this layout on an slightly larger device, but smaller than 71B possibly combine with an larger display, higher than original, 2-line top row left half 5 keys, place as above the most replacable stuff, stat+trig for Hex use top left 6 keys like 16C, so top of "middle column" will be F so that should also have an non-integer finction on it, like EEX, not CHS unlikely have USER flag exchange top and f-shifted, like on Voyagers this wastes 5 f-shift on A..E, and is less capable than 41C USER mode specially if 41C extended to A..J, fA..J, gA..J plus USER assignments second row left half 5 keys, place as above all extended maths third row left half 5 keys, no need for f-shift/g-shift/ALPHA(on) here can fit STO/RCL, x<>y and R-DN (and possibly R-UP), any programm stuff bottom row left half 5 keys, for ON/f/g/ALPHA(on) and left-half-horiz-ENTER this gets ON out of way, not above or in top 3 rows, nor on side of case all rows middle column 6 for EEX/CHS/<- and right-half-horiz-ENTER for this EEX on top, unlike Voyagers, because use for Hex F, dont loose CHS all rows right side 7..10 Voyager, 3 columns numbers, 1 column operatiors same 4x4 of main arithmetic keys, digits and operators, sigma or pi or R/S alpha mode legends, switched on/off by mode key, in 4th column of bottom row with f-shift/capitals/bigger and g-shift/numbers/other, are PC-like shifts but also calculator-like "sticky" shift if nothing pressed while down horizontal Enter key, in middle of bottom row, is also ideal Space key allows top 3 rows with full 10-wide QWERTY layout for convenient typing unshifted, next to key, like 32S/32SII or 48/49/50, not 41C or 42S q w e r t y u i o p a s d f g h j k l Bsp (Bsp = Backspace, remove last) z x c v b n m . , ? On f-s g-s Alph Space <- -> ^- -v (f-s = f-shift = caps/bigger) (g-s = g-shift = numbers/other) (Alph = Alpha mode (on/)off) (arrows are left/right/up/down) f-shifted, caps + bigger (punctuation, space and movements) Q W E R T Y U I O P A S D F G H J K L Del (Del = Delete, remove current) Z X C V B N M : ; ! On f-s g-s O/I Tab |<- ->| |^- -v| (O/I = switch Overwrite/Insert) (arrows are home/end/top/bot) (alternat home/end/pgup/pgdn) (alternat mark/select l/r/u/d) g-shifted, numerics + enter + other (mainly operators and ASCII art) " # % @ = \ 7 8 9 / ( ) [ ] { } 4 5 6 * ` ' < > | _ 1 2 3 - On f-s g-s Ctrl Enter 0 . ^ + (CTRL = use for edit funct) (such as search, replace, ...) (or cut/copy/paste/undo, ...) (. duplicate when g-s is down) I personally regard single handed use of "verticals" as not really realistic is usable on Woodstocks, still sort of usable on Spices just do-able on Classics and Coconuts, near impossible on Pioneers (tested with 25C, 37E, 45, 41CV, 42S, the later is too wide and light) so I always use vertical 2-handed anyway, hold in one, type with other gives problem that force goes from one hand to the other, trough arms+body and therefore horizontal 2-handed is no problem for me, no loss and force of thumbs goes to fingers of same hand, not through arms, better and uses 2 thumbs instead of 1 finger and hand moving, is a lot faster ("tested" this by writing 150k of notes on an 100LX in 4 weeks on tour) throw in the advantage of top line space for Hex entry A..F without requiring the wide 5+6 keys wide Clamshell and Pioneer cases throw in the advantage of possible QWERTY text entry, habitual and find fast which beats 41C/CV/CX or 32S/32SII alpha keys or even worse 42S alpha menus so I prefer the horizontal layouts, as the superior system, HP deserted that never really supported it, only minimal display Voyagers, 75C/71B and xLX while I already knew this before HPs, on Sharp EL-5100 and PC-1211/PC-1500 at present Voyager would be most likely candidate for an pure unaltered clone just an Nut CPU emulator with multiple switchable original firmware(s) on it also the 11C/12C/15C/16C firmwares are available, and the Nut CPU is known lost of people want an 15C, many an 16C, are both expensive 2nd hand better an switchable 15C or 16C, carry only one calc, have both functions software could be an "4 in 1" switchable, each with own ROM and RAM space use ON+digit to select, with digit: 1=11C, 2=12C, 5=15C, 6=16C or even full 10 virtual calculators switchable, like Linux virtual consoles each off/11C/12C/15C/16C modes and : calculator:model indicator keyboards legends only for the most preferable models, 15C and 16C 11C no own (use 15C, is similar), 12C no own (as I have no interest) switchable with overlays or entire skin or unlikely keyboard swapable either go for an "Blanknut" style, with just the common keys unshifted or even entirely with blank keys, all unshifted and shifts on overlays possibly keys with an horizontal enter key, STO/RCL above, <- at left is internally just <- and ENTER positions swapped with STO and RCL likely/better do an "14C" (= 41C in Voyager shape), has same key count just better display for 41C, but no ports as no space, full RAM, flash ROM this combines the best case shape with the best firmware, ideal 41C ROM of 3*4k and RAM of 5*16 is same as 15C ROM of 2*6k and RAM of 2*40 ROM for 11C/12C/"14C"/15C/16C is (6+6+12+6+12)*10bit=42k*1.25=52.5kByte RAM for one of each is (40+40+80+40+80)*7byte=280*7=1960=2k for an "14CV" add QuadMem to above 256*7=1792=1.75k controllers with 64k/4k and 128k/16k and 256k/8k are available if 128k16k Flash microcontroller allow adding of 41C expansion ROMs can be Complex or Integer or anything else, gives Alpha+15C+16C in one even the small 64k/4k will fit all 5 with the CV QuadMem in 64k Flash no expansion, unless only 14C ROMs in there, no Voyagers so there is no need for ROM or RAM expansion modules or slots allow adding RAM from 41C up to 41CV in 1..5 * 64reg steps, size vs space this also allows "plugging" in/out of RAM modules, module pulling tricks 128k/16k possibly Xmem in 0..3 steps, or alternat HEPAX 0..1 (on/off) keyboard requires "remapping" of 41C keys, f-shifted and Alpha move also but Alpha becomes jumbled, may need different mapping, f-shift also better adapt firmware, as not only binary available, also VASM source this allows going for an QWERTY layout, faster, additionally to horiz QWERTY also makes horizontal ENTER more desirable either as near as possible to 11C/15C keys or as near as possible to 41C also as side effect of this ON/f-shift/Alpha or f-shift above ON possibly for vertical fans also 41C case, narrower and higher than Pioneer with exactly same feature selection as in horizontal Voyager shape just different case geometry option, and keyboard layout variation unlikely also offer "51C" (= 15C in vertical) and "61C" (= 16C in vertical) here only keyboard "remapping" possible, as no VASM source code, disass? unlikely later do an "17C" and "71C" (= 71B in Voyager and 41C shapes) both are smaller than the original 71B wide and thick horizontal case but both also do not offer the 71B QWERTY plus separate numbers keyboard keyboard switching Calculator/Alpha keymode in Saturn emulator IO stuff Calculator with right 71B numbers + f-shift + g-shift and left 71B f-shift functions on unshift + f-shift + g-shift Alpha then with unshift 71B Alpha, g-shift case, f-shift digits this mode is key layout compatible with above QWERTY Alpha layout adapting firmware also possible, as also assembler source available including even the Forth/Assembler Module display no 7seg or 14seg, is low-res bitmap, simulate with 2x2 pixels but then 132x8 scales up to to 264x16, no such wide/flat LCDs available do halfway linebreak, 2 * 132x16 above each other, where annunciators will require virtual calcs switching Nut vs Saturn emu, not just firmware and controller memory is insufficient for 71B and others in one 128k Flash fits only just emu+base(64k)+Forth/Asm(48k) 16k fits slightly less than 17.5k (plus display and emu) because of such problems no good solution for 71B, so no dedicated 71B case if anything then just an completely separate second software world more likely second project, go for an 100LX style case with LCD in lid Voyager keyboard as above, or an 100LX style or even 71B style here definitely go for an horizontal ENTER, for better QWERTY input use an 320x240 (QVGA) LCD module, also one with built in controller/VRAM then use for displays as in Emu41 and Emu71, calc display + more for 41 calc 12*14seg with annunciators + i41CX style Y/Z/T/L above 2 panes, each list of registers, left from R0, right from SigmaREG replacable with rest of system registers, or printer, or besser video video also allows Esc sequences, and replacement PRGM mode editor for 71B calc 22*5x7matrix with annunciators, no stack, no regs above 1 or 2 panes, possibly Basic variables, or even Basic expressions replacable with printer or better video, for DISPLAY IS, ev 80char unlikely only DISPLAY IS to video, no space for built in line for switching Nut vs Saturn emu make an simple operationg system would be based on MS-DOS style command line, with a few Unix extensions in particular multiple virtual consoles running multiple programs console switch starts/switches processes with Nutemu and Saturnemu progs each called with the desired firmware handed in as parameter can also on other consoles run "native" note editor program or even other non-calculator CPU emulators with their firmware for many and large programs use external parallel Flash and SRAM there is enough space to treat controller as an custom switchable CPU only OS/switcher and emulators and CPU regs and mem map in controller all emulated CPUs memory mapped into external Flash or SRAM for this go for largest parallel chips, 2Mx8 Flash and 1Mx8 SRAM totally blue sky third project, simple desktop keyboard computer entire computer in full size keyboard, like 1980s home computers but with above MS-DOS derived/extended OS and powerfull applications with multiple (up to 3 or 4) vertical 480x640 (or 480x800) LCD pannels lots of external memory, possibly an ARM controller or even an ARM SoC USB host for own peripherals, and USB device to simulate/replace PC key+mou and can as side effect of this also be used as an USB spy Keyboard Construction --------------------- this is the central bit of making an calculator the keyboard determines the look and feel and functions and so usability at first approximation a calculator is just keyboard+(disp+(CPU+bat+))case main calculator hardware problem/work is mechanical construction mostly the keyboard, and also the frame/case, not CPU or LCD or software this section was the initial reason to start this file, collect my ideas Ottosen used standard tact keys, overlay with modded and scaled photo this gets around the large problem of many specialised double shot key molds this removes costly industrial molding process, replaced by single printing and allows everyone to print own key legends, any model with same layout while still giving "click" feedback, and foil also prevents wobble feeling this is what made his design such an great idea, broke the logjam alternative would be dome keys, as used behind non-membrane foil keypads these my allow an flatter design, bit LCD modules may limit that anyway lacking is haptics of tactile feedback where the keys are, and looks with dome keys that would be slightly improved, can be felt as bumps Ottosen used small holes in the protective foil, allows blind finding project aim is improve on this, fully sculptured keys, proper look and feel combination of "hingeplate+keys" and "faceplate" near like real HP keyboards designing this mechanism was the start of this project idea and file both of these should be removable, like the overlays on the 41C are use originals 25C 41CV 11C 42S 20S 100LX to look at size/shape details wrap top paper+foil of keys, around an key profile wooden wedge underneath chop all wedges from an key profiled bar, giving all angles at front/top/back the length 3+3.5+0mm is key front+top like 41CV, for like 25C 2+4+0.5mm the height 1.5+1mm is key base+slope like 41CV, for like 25C 2.5+0.5mm 25C keywidth normal 7mm (space 4.5), enter 18.5, wide 8 (space 7) 41CV keywidth normal 7.5mm (space 4.5), enter 19.5, wide 8.5 (space 7.5) 20S keywidth normal 7.5mm (space 4.5), enter 19.5, wide 10 (space 5) paper+foil 1, cut shape for around beneath/side/top/side/beneath of each key this with extensions for top/back/beneath and top/front/beneath this(/these) part(s) carries all top and front legends printed on it(/then) paper+foil 2, "hingeplate" foil under key, "stopper" extending out after back "hinge" extending out after front, to main "grid" part holding all keys this part is just entirely in the fitting key background colour this with keys can be replaced, but more expensive to make than faceplate paper+foil 3, "faceplate" foil with all above below or next to keys legends this has holes smaller than part 2, so that "stopper" hits this from bottom this not bound to hingeplate, can be replaced easier, like 41C overlays stiffeners, beneath foil 1, with large holes, key with stopper fits through these also add thickness to overcome tact key height, and also heft this may be PCB material or other plastic or wood all stiffners + keyb PCB layers held together by many wire loops these may be inverted U wire loops, soldered onto keyb PCB then have keys in contact, slightly pressing on tact keys, no dead travel .-- pap+foil 2 angles from here on, side cuts start here | | .-- pap+foil 2 stopper hits pap+foil 3 here | | | key wedge | key legends: | + paper+foil 1 | front/g top above/f | wrapped around | (alpha right of g or next to key) V V |< 3+3.5+0mm >| 41CV |< 2+4+0.5mm >| 25C | _______ h=1.5+1mm | ________ | h=2.5+0.5mm pap+foil 3 ===== __--""|p+f 1 | ============= _--"| p+f 1 \ ===== pap+foil 2 ======|______|______|== ============:____|________|== === =:--. .-------. .--:===:--. .-------. .-- 1mm/ stiffeners/ -:--' .-----------. `--:---:--' .-----------. `-- 0.65mm /spacers -:--. | | .--:---:--. | | .-- non-electr -:--' | tact key | `--:---:--' | | `-- 4mm PCBs -:--. | | .--:---:--. | | .-- -:--' | | `--:---:--' | | `-- keyb PCB -:-------------------------:---:------------------------- 1.5mm =:-------------------------:===:------------------------- | ' ' '| ' | ' ' | wire loop | | | wiring |<---- 5*100mil = 12.7mm ---->| ca 2.5mm notes: the 5*100mil are fairly exact for 25C, 41CV is 3% less, 20S is 5% less the height 1mm/0.65mm is the pressable part of the tact key mechanism TODO: make an experimental keyboard using this technique, as that is central at present I have an stack of used perfboard PCB rests, wire and solder and set of 15 tact switches, no self adhesive transparent foil (easy to get) also no printer, but test can be hand sketched patterns, test for mechanics and most important no time, so experiment how good this works is outstanding totally other design would be to make transparent plastic keys and front pannel and then place an photo of keys and all legends between it and tact keys would require using an transparent material, plastic/acrylic, how to shape it this looks like it will be the big weakness of this alternate design may require the photo to be distorted, precorrection, if keys act as lenses this could also be an problem to make, weakness of this alternate design would require similar insertion and holding mechanism as Ottosen uses but would OTOH remove need for an keyset and overlay holding mechanism and also allow fast changes, and simple user print own different one alternatively drop this entirely, use fabber for propper keys direct in plastic for this go for Pioneer style "keys on springs", not separate keys and hinges or perhaps easier go for earlier "separate keys on hinges" approach can for this copy the well accessible Spice/3x keyboard design make "springs" keyboard an separate part from rest of case top, replacable this either because key legends change or because springs get broken this would have to fit into an recangle hole in front of case top with some form of "stopper" so it does not fall out, ledge around edge with separate keys this is not relevant, good reason for using them perhaps try dome switches instead of tact switches, flatter, goes w real keys unlikely drop switches altogether, use direct HP style PCB+dome+key as no way to produce down spring metal domes or Voyager style bands make faceplate an separate part, flat with vertical edge around it keyboard inserted into faceplate and both together inserted into case could allow keyboard without ledge, faceplate in way, faceplate w ledge alternatively go for removable user printable faceplate, blank below TODO: make an experimental keyboard using this technique, as that is other way get an RepRap/RepStrap/CNC style doityourself fabber require space for brown/white/blue printheads for keys with top+front legends or 4 heads for ochre if also faceplate or overlays without colour changes alternatively with one colour just blank keys, write/print on them faceplate use normal printer, with s-shift and g-shift and ev non-shift while at it try if CNC robot also usable for PCB milling+routing+drilling will require removable printhead assembly, and PCB holder fittings on tray alternatively experiment with fabbing an PCB, drawing conductors on/in it try making pioneer style plastic springs holding the keys, and notches try keys with built in legends, try plotting text and filling around them or alternatively just "plotting" onto solid keys, may be enough make keyboard faceplate with holes, or else will need printer and cutting out Case Construction ----------------- this is other mechanical bit that makes big difference, appart from keyboard determines look and size and holding and stability, and so also usability Ottosen used glued 14 layers of laser-cut 1/16" acrylic this is regarded by him as small mans rapid prototyping, only $2digit cost with slit inside battery compartment for slipping in printed key legends card Smith used perforated and folded together mylar foil printed key legends card inside before folding together Jones simply used blank PCB on top of switches, plastic around batteries printed key legends onto top side of PCB, not above keys, as direct exposed decided to use expanded mechanical technique of my EEPROM/Flash burner/reader that was basically an stack, first an PCB (with wiring and parts) then distance by spacers, and outside layer(s) hard transparent foil held together by screws, heads visible on top, bottom into "feet" modify this, for outside also using non-electrical PCB material keep with spacers, but ev also PCB(s) for this, hold together by wires strictly not an case, but good enough to hold and protect internals and has full geek styling, recognizable as something different then expand this "chasis" with foil+paper "wrapper" made like keyboard plates around the sides and top+bottom, then folded like cardboard box, removable provides the entire visible styling and colour and printing on it *** diagram shown not to scale *** shown vertically at far larger scale than horizontally, due to ASCII limits and only with reduced amount of key rows, to shorten horizontally one possible construction / layering space of keyboard is: blocks + tact keys + key PCB + wiring = 2.5 + 5 + 1.5 + 1.5 = 10.5mm thick, just fits Voyager or Pioneer space of CPU is: CPU components + CPU PCB + wiring = 4 + 1.5 + 1.5 = 7mm but of this effective only: + connector + 2nd PCB = 2.5 + 1.5 = + 4mm space for CPU components + LCD is: blocks + tact keys + 1st PCB + connector = 2.5 + 5 + 1.5 + 2.5 = 10.5mm, enough for 6.5mm LCD and 4mm DIP40 CPU or go for 1.2+1.5mm TQFP44 CPU and get 7.8mm for LCD or even 1.2mm TQFP44 CPU under PCB, full 10.5mm for LCD or use an longer connector, at cost of more thickness to that bottom PCB + air for angle: max 5mm -> 11 + 4 + 1.5 + max3.5= max20mm far nearer to Voyager/Pioneer 15 than to Classic/Woodstock/Spice/Coconut 30 for full Classic/Woodstock/Spice/Coconut longer connector, more CPU hight also run CPU board further under keyboard, more CPU surface batteries next to LCD for Voyager, above LCD for Pioneer can be large, under top of keyb/disp for Classic/Woodstock/Spice/Coconut this would then allow 3*AA, and using original 7seg LEDs or bitmap OLED possibly with CPU PCB flowing around batteries, like Woodstocks CPU PCB held to keyb PCB by connector, soldered at both ends, permanent LCD PCB held to CPU PCB by LCD connector(s), pluged or soldered into CPU top PCB held to keyb PCB by wire loops, soldered at both ends, permanent bot PCB held to keyb+CPU PCBs by wire loops, or side walls w slits for PCBs side walls give shape viewed fr side, entire side hight LCD, protects keys then fold "wrapper" styling paper+foil around all PCBs and sides folded like an box, lid at top to access batteries, tab insert into back the foil goes over LCD, but paper has hole to see through, so only foil with exeption of LCD only keys+face+wrapper paper+foil are user visible so these define entire visuals, color and print, for any users taste key blocks .---________---. top paper+foil keys+overlay .--. .--. .--. .--. .--. |==[""""""""]==| top chassis PCB paper+fo .--|___|-|___|-|___|-|___|-|___|--'= [ ] | |=side p+f |== |"| = |"| = |"| = |"| = |"| ==== [ ] | LCD unit |==.---.=.---.=.---.=.---.=.---.== [ ] | stiffen PCB |==| |=| tact keys |=| |== ========== | LCD PCB |==| |=| |=| |=| |=| |== : `-----' _| LCD ctrl keyb PCB |=================================== : ["""""] | | | `- - -`- wiring- -`- - -`- || :,[ ],| | CPU components bot PCB |======== ===============| CPU PCB bot pap+fo `--------""""""""======== `- wiring - - | ^^^^^^^^--------""""""""======== | |=side pap+foil ^^^^^^^^--------""""""""| bot chassis PCB ^^^^^^^^' bot paper+foil again here alternatively drop entirely, use fabber for propper case in plastic 2 shells, or possible with 41C style "edge" in between them hold together 4 screws at corners, or hook at bottom and 2 screws at top at top hole for inserting the keyboard, cheaper to replace it with newer at back lid for battery access to holder, lid tab possibly on outside Display ------- after keyboard and case the display is the third part that the user sees/feels and as such it also "makes" an good calculator, or its limits "break" one just see the step down from 41C 12*14seg alpha to Voyager 10*7seg or the differences of the 3 types of Pioneers, 7seg vs matrix vs bitmap or the limits of the 20B/30B, only 7seg plus small 1 menu item bitmap there exist many display variants, depending on desired style and abilities visuals ranging from 7seg over 14|16seg and matrix to even bitmap sizes from 1 line 8|10|12|15|16 over 2 lines 12|15|16 to 4 lines 16|20 technology variants LCD or LEDs or other exotic ones baseline standard is (12|16|20)x(1|2|4)char 5x7font LCD module, as in DIY-RPN these are all compatible, based on the Hitachi HD44780 chip or its clones but usually limited to JIS-0201 ASCII+Katakana ROM characters usually without descenders, and with only 8 graphic characters available but should suffice for square/root, noneq/less-eq/more-eq, angle, sigma and limited to 5x7 font, no high-res for less chars, no simulate 7seg/14seg and these often need negative voltage for contrast, power converter very unlikely any size (usuall 1 line) of 7seg LCD module too limiting in use, no real alpha capability offers no advantage over repurposing existing flashable ARM 20B/30B that gives sign, 12+3 7seg (first 12 with dot+comma), 12annunciators and not even over repurposing existing flashable ARM 12C that gives sign, 10 7seg with dot+comma, 9annunciators extremely unlikely make an own LCD glas would allow going for an multiline wide 14|16seg display, own annunciators all that at optimal size, not too high, size like in 17B/17BII/27S/42S is ideal from the possibilities and styling, exact fitting display but doing this requires own specialised LCD glas making and tooling as would be difficult to get single parts made for each buyer that violates the basic off-the-shelf non-volume manufacturing aim could only be done with orderign a set, and selling them to users unless there exist "single part" custom LCD services, like for PCBs I have never heard of any of these, but have not looked for them either also requires special LCD driver chip, or limited choice controller w driver AVR only has 25x4=100 (0.8mm TQFP64) or 40x4=160 (0.5mm TQFP100) segments 100 is only good enough for sign+10*(7seg+dot+comma)+9ann (Spice/Voyager) or sign+11*(7seg+dot+comma)+0ann (possibly partial Woodstock) and 160 only enough for 16*(7seg+dot+comma)+16ann (4/3 10B/20S/21S) or 9*(14seg+cdot+dot+comma)+7ann (2/3 41C, had 216 segments) or 10*(14seg+dot+comma)+0ann or 10*(14seg+dot)+10ann (5/6 non-:; 41C) even ARM has only 40x10=400 (TQFP128) (is chip used in 20B/30B and 12C) see comments there for the various arrangements this chip could do for more need separate LCD chip, SED1520/AX6120/PT6520 61x16=976 segments allows 2-line 28char or 3-line 16char or 4-line 14char with full 41C style 14seg+cdot+dot+comma, and even extra exponent 7seg pair of these give then even 122x32=3904 segments, can do near anything are after all intended for graphics, 4-line 20-char of 6x8matrix even extensible with SED1521/AX6121/PT6521, 80x0, for 141x16 or 202x32 and even separate LCD controller chips are usually at least 0.635mm QFP and as such easier than the 0.5mm TQFP or ARM and large AVR actual requirements are quickly in the separate LCD chip class 41C documented 72x3=216, more than largest AVR, would need ARM 36x6=216 12C claims original 50x2=100 reworked 25x4=100 (SunPlus 101, ARM 101/104) that just nicely fits TQFP64 AVR, but too limited, for that use ARM 12C 10B/20S/21S counted as 120 (12/10 of 12C), in unknown arrangement that already fails the TQFP64 AVR, requires 3/4 of an TQFP100 AVR 14B/22S/32S/32SII estimated at around 450-460 (seems to be 12*(5x7+n)) that is already just above the TQFP128 ARM, requires special controller 17B/17BII/17BII+/27S/42S seems to be at 131x16=2096 that is way into special controller territory, needs even multichip is why 20B/30B has lot less display than 17BII+/42S, even less than 32SII but lot better usage could have been made within the TQFP128 ARM limits better standard 122x32 bitmap LCD module these are mostly compatible, based on SED1520/AX6120/PT6520 chips, 2 of them resolution 122x32 is nearly twice of 131x16 17B/17BII/17BII+/27S/42S nearly full 137x32 of 18C/19B/19BII/28C/28S, nearly half of 131x64 48S/etc 122pixel intended for 20char, as opposed to HP 131/137pixel for 22/23char possibly wider 144/160/180/192x32, but seldom, models usually single source bitmap no only allows graphics and graphing, but also allows own soft fonts own line count, character shapes, dots/commas, annunciators, menus gives 4-line 20char 5x7(6x8)matrix, but no dot/comma and no annunciators or 3-line 15char 5x8(6x9)matrix + 1x3(2x9)comma, with 3x5(4x5) annun or 2-line 12char 7x11(8x13)matrix + 1x3(2x13)comma, with 3x5(4x6) annun or 1-line above + (4*6=24)char 4x7(5x8)matrix + 0x1(0x8)comma [][] [][] [][] [][] [][] [] [] [][] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [][] [][] [][] [][] [][] [] [][] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [][] [][] [][] [][] [][] [][] [] [] [] [] [] [][][][][] [][][][][] [][][][][] [][][][] [][] [] [][] [] [][] [] [][] [] [][] [] [][] [] [][] [] [][] [] [][] [][] [] [][] [][] [] [][] [][] [] [] [][][] [] [] [][][] [] [] [][][] [] [] [][][] [] [][][] [] [] [][][] [] [] [][][] [] [] [][][] [][] [][] [][] [][] [][] [][] [][] [] [] [][][] [] [] [][][] [] [] [][][] [] [] [][][] [] [][][] [] [] [][][] [] [] [][][] [] [] [][][] [][] [] [][] [][] [] [][] [][] [] [][] [][] [] [][] [] [][] [] [][] [] [][] [] [][] [] [][] [] [][] [] [][][][][] [] [][][][][] [] [][][][][] [] [][][][] [] [] [] [] [] [][] [][][] [][] [][] [][] [] [][] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [][][] [][] [] [][] [] [] [] [] [] [] [] [] [] [] [] [] [] [][][] [] [] [][] [][][] [] [] [][] [] [] [] [] [][] or 2-line 11digit 7x11(8x13)matrix + 2x3(3x13)comma, with 3x5(4x6) annun or 1-line above + (4*5=20)char 3x5(4x7)matrix + 1x2(2x7)comma [][] [][] [][] [][] [][] [] [] [][] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [][] [][] [][] [][] [][] [] [][] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [][] [][] [][] [][] [][] [][] [] [] [] [] [] [][][][][] [][][][][] [][][][][] [] [] [][][] [] [] [][][] [] [] [][][] [] [] [][] [][] [][] [][] [][] [][] [][] [][] [][] [][] [][] [][] [][] [][] [] [][][] [] [] [][][] [] [] [][][] [] [] [][][][][] [][][][][] [][][][][] [] [] [] [] [] [] [] [] [][] [][] [][] [][] [][] [][] [][] [][] [][] [][] [][] [][] [][] [][] [] [][][] [] [][] [] [][][] [] [][] [] [][][] [] [][] [] [][][][][] [][] [][][][][] [][] [][][][][] [][] [] [][] [][] [][] [] [] [] [] [] [][] [][][] [][] [] [][] [] [] [] [] [] [] [] [] [] [] [] [] [][][] [][] [][][] [][] [] [] [] [] [] [] [] [] [] [][] [][][] [] [] [] [][] even different settings in run (large font) and program (many lines) mode same flexibility as using PC/PDA/smartphone displays, which are good but with real keys, where PC/PDA/smartphone all fail for software offer character mode, also segment mode, bitmap als fallback also offer switch 1-line and n-line modes for old and new software also allow variants with bitmap menu instead of bottom 7seg/14seg data also these often have internal contrast power converter, or will accept 0V but may require internal LED lighting, driving up power, don't use it and LED lighting makes them thicker, possibly dismantle, own frame or PCB possibly large bitmap LCD in lid, like 95LX/100LX/200LX, only as later version LCDs exist as large large 160x96 or 240x128 or even 320x240 QVGA modules but calc + lid makes it thick, min 25mm, not really pocketable any more and hinge and cabling problems, lots of work, and generall expense and some/many of these are colour displays, require backlighting and use lots of power, requires even thicker for batteries, in hinge OTOH gives a nice small portable device, still way below an netbook and simply one of the coolest cases ever made, totally impressive better compact portable calculator while on the move and at home add larger external VGA monitor/beamer, using SoftVGA like an 41C or 71B on move, with home added HP-IL and 82163 video adaptor or go for 2 devices, compact calculator and larger small computer but a large display while on the move is also very desirable in particular if used as notetaker, and not just as calculator possibly 7seg LEDs small DIL12 4*7seg modules still exist, but 25mm high, no 2 lines possible self lighting, but large power usage 1mA per segment, 3*4*avg5seg=60mA will require large batteries AAA or AA, no buttons like LR44 or CR2032 but 7seg no real alpha capability, reduce programming to key coordinates strictly 7seg can do "mixed case" A..Z alpha, plus a little bit more 16 upper case: A, C, E, F, G, I, J, K, L, M, P, S, V, W, X, Z (I=1 S=5 and Z=2 clash, K and V are awfull, M is questionable) (W/X confusable with U/H, W because reversed M, X no other choice 10 lower case: b, d, h, n, o, q, r, t, u, y (and could do: c, g, i) (h not H because X, o not O because 0 and u, u not U because W) _ _ _ _ _ _ |_| |_ | _| |_ |_ | |_ | | |_| | | | | | |_| |_ |_| |_ | |_| | | | _| |_ |_ | | _ _ _ _ _ _ |_| |_| _ |_ |_ |_| | | |_| |_| _| | | |_| | | | _| |_ |_| | |_| | | _| |_ in particular also non-alphabetic characters are really difficult to do these may need writing out as words to be usably legible + - * / ^ = <= > [ ] % ! ? @ [sigma] _ _ _ _ _ - _ _| _ |_| _| | | _ |_ _| | | _| | _| | | |_ | | _ _ |_ _| | . |.| .|_ |_ this would be quite a step backwards from last 25..30 years of Alpha even just 41C style 14 segment is so much better than this and that is vastly preferable for 41C/42S like alpha mode so only use such 7seg-only for totally retro style Woodstock or Spice for "RRREEEDDD LLLEEEDDDs!!!" group, 25/25C/27/29C and 33E/33C/34C fans very unlikely 5x7matrix LEDs there still exist SLR2016 19x10mm 4char 5x7pixel 128char ASCII++ modules could use 3/4/5 of these for 12/16/20char in 57/76/95mm width unlikely even use 2 lines of these, at 2*10=20mm height but these want 1mA per pixel, from 3*4*avg15pix=180mA to 2*5*4*avg15pix=600mA this is an serious battery killer, will need AA or rechargables and charger and no decimal point after digit/character, use separate extra char place dot OK in 35/45/55/65/67/70/80 18C/19B/19BII/28C/28S 17B/17BII/27S/42S 48S/etc but because of this only really an candidate for an Classic clone and there 4 modules for 15(16) char is too wide, 71mm, so forget this more likely 14|16seg LEDs there also still exist DL1414T 17.5x20mm 16seg 64char ASCII-- modules look more like 7seg, when only numbers, but full Alpha when it is wanted and also SLR2016 chip/abilities in DL1414T size/pinout as DLR1414 for in case someone wants same PCB/case with 5x7matrix display choice could use 3/4/5 of these for 12/16/20char in 53/71/89mm width but like with 4*7seg modules, not quite 25mm high, no 2 lines possible but also 1mA per segment, though less segments than pixels, 4*4*avg7seg=112mA will still require large batteries AA or AAA, but no need for rechargables and also no decimal point after digit/character, use separate extra char dot so these are more fitting for an Classic, full retro looks plus Alpha but only 3 will fit, 12 char, 4 is wider than Classic display window TODO: try out an test part of DL1414T that I have got for its font AVR proto board adaptor with D0..6 = D0..6, A0..1 = D5..6, /CS = D7 extremely unlikely 7seg VFD, may possibly even exist with 14seg but problems with parts availability, size of what is available, and 100V unlikely proprietary 1/8bit bus 128x22 bitmap OLED, thin, self lighting but no standard, proprietary controller chips, only single source, yellow and requires 3V (limits AVR to 10MHz, or 5V and 3*0.7V diodes to reduce) and uses 300mW of power, from 14V power converter, 60mA|5V + conv losses Electronics ----------- this can be varied as much as one wants, these are just my preferences after all electronics only defines what software runs, that defines usage and none of the current elecronics parts limit software significantly microcontroller AVR instead of PIC18, more speed and more memory and I know it, like it, have software tools and ISP device for it have in drawer 2 ATmega32 (32k Flash, 2k RAM, 40pin, 32IO, 4.5-5.5V) and 2 ATmega664 (64k Flash, 4k RAM, 40pin, 32IO, 2.5-5.5V) this is enough for all 4 Voyagers plus unexpanded 41CV and 3 ATmega168 (16k Flash, 1k RAM, 28pin, 20-23IO, 2.5V-5.5V) most likely on no usability in this project, too fex pins, small mem possibility get ATmega1284 (128k Flash, 16k RAM, 40pin, 32IO, 2.5-5.5V) this is an full 71B 64k ROM + Forth/Assembler 32+16k ROM + Saturn emu + not quite 17.5k RAM + a bit for Saturn emu state or an maxed out 41CV 64k*10 ROM + sys+(Xfunc-or-8kHEPAX) RAMs strongly preferred no TQFP parts, so no 64pin or even worse 100pin parts but acceptable if neccessary for space reasons, and TQFP44 suffices 1k RAM enough for any pre-41, or even unexpanded 41C (80reg*7=560Byte) 2k is 41C with 3 modules or 28C, 4k is over 41CV with X-Functions (or 41CX) 8k is over 41CX with full 2 X-Memory expansions and equal to 42S 16k over double 41CX with XFunc and 2 XMem or better an 8kHEPAX or double an 42S or full an 71B or half an 28S also can runtime write UCODE into Flash, like that in 41C program modules so RAM is only needed for variables, and UCODE editing buffer result of this no need for external EEPROM/Flash/SRAM chip(s) and wiring unless wanting big 32k+ SRAM size, full 28S or 32k 42S or 48S/etc style alternatively large 64|128kx8 serial FRAM chip, and ev serial 512k|1Mx8 Flash could then go up to 4..8 64|128kx8 FRAMs, 256..1024k RAM and/or also 4..8 Flash, mostly as ROM/Flash disk, partitioned/filesystem possibly even allowing 8pin serial FRAM or Flash as modules suggests even making an multichip system, small ATtiny CPU (but keyboard?) with user visible memory only the external 8pin Flash+FRAM chips but bit more wiring, slower than internal SRAM, not much improvement most likely only interesting as full pocket computer or home computer then better use ARM91SAM7S, 55MHz 32bit, up to 512k Flash and 64k SRAM but 0.5mm TQFP64 case and lots of analog auxillary components needed or with that case space use TQFP64 0.8mm AVR w ext 8bit parallel memory enough space for TQFP64 + SOIC20 (74HCT373) + 2*SOIC28|32 (ROM+RAM) which then allows up to 2Mx8 Flash and 512kx8 SRAM OTOH the 41C/CV/CX had 40pin CPU+keyboard, 3..6 8pin ROMs, 5..6 8pin SRAMs so unless an Voyager/Pioneer size requirement this is no problem also AVR Timer2 async 32kHz for 41C/CV Timer module or 41CX built in Timer but only in ATmega, not ATtiny, so no small ATtiny based 41C timer module OTOH only requires T-Osc quarz, no capacitors, only run if on, so add quarz unlikely also Main-Osc quarz + 2 capacitors, 10->20MHz not worth space use ATmega32 requires 3*1.5V batteries, all later allow 1*3V lithium disk but my ISP and debug adapters also both require 4.5-5.5V, so prefer that in the end voltage will most likely be decided by the display unit keyboard PIOs and standard tact keys as scan matrix, size 30..64 keys, (4..8)*8matrix can be any amount and arrangement, fitting whatever design user wants only one or max two keys at a time, multiple would need diodes and space only scan when not calculating, vs also timer and scan into queue/buffer possibly also a few slider switches, for power or mode selection(s) would all be digital input data, power switch not actually in VCC line simply send CPU and display to sleep until interrupt, like on 41C unlikely 2 separate keyboard+display "terminal" and "main" AVRs all pins go to k+d anyway, that AVR must be large, no wiring simplification then CPU would need to be small, all ATtiny problems there no built in Timer, external SPI Timer chip, also needs ext SPI Flash+FRAM or CPU also ATmega (28pin), then 2 largeish, plus Flash+FRAM, even worse and adds inter AVR communication, ev twice quarz+caps, costs pins and violates entire simple keyboard plus one chip plus display design so not justifiable for little bit of occational parallel processing only for large calculator, with "main" AVR lots of slot/port /SS pins even then only for using 2 DIP40 instead of going for an TQFP64 case display connection for HD44780 LCD standard 4/8bit bus, simply use PIOs same SED1520/AX6120/PT6520 LCD standard 1/8bit bus, simply use SPI or PIOs for simple 7segment needs separate LCD controller chip or in-microcontroller same for any own LCD glas, just many more segments to make it worth doing for 7seg LEDs simply drive from PIOs, matrix scanning same 5x7matrix or 16seg LEDs 7bit bus, simply use PIOs for VFD big interface+power mess, reason against anything like that for OLED standard 1/8bit bus like in SED1520/AX6120/PT6520 LCD devices sound quite likely an 41C 17B/27S/42S 18C/28C 48S/etc style beeper, 1bit PIO usefull for implementing warnings or alarm clock functions ports/comms usage would be for data transfer and software install/backup and peripherals no need for software/ROM or RAM expansion modules, as enough Flash and SRAM would be purely for IO, adding external devices or controlling stuff already given are the TxD/RxD pins of the debug-extend AVR ISP connector directly offer "TTL level inverse RS232" to random microcontroller TxD/RxD no 2 times 12V convert power needed, and no large or custom connectors can be used with external +/-12V adapter for transfering stuff to PC either to an PC built in RS232 port, or with external USBtoRS232 dongle this is basicall what the 48S/etc and all models after it have offered while running as RS232 also 3 SPI ISP pins free, usable for handshake and "unused" ISP pin to further random PIO pin, best next to SPI, as /SS gives 4 handshake lines for DTR+DSR+CTS+RTS, only DCD and RI missing allows 12V adaptor near full 100LX 10pin set, not 48S/etc 4pin subset software have "default" RS232 command line in CPU emulator firmware allow operations at granularity of read/write emu ROMs and registers this including the effect of ROM or RAM mapping systems current setting also allow MCODE running on system to "grab" RS232, offer its own cmd line allow granularity of user regs, programs, X-Func files, HEPAX files this including the effects of register allocation by the system also already given are the SPI pins of the AVR ISP connector while running as SPI Master also TxD+RxD+/SS free for 3 slaves /SSes and when running as SPI slave /SS usable for that, and still TxD/RxD free if 40pin/32IO AVR possibly run out one spare Px0..7 port, 2nd 10pin header sensibly also the one with the UART on it, would then allow expanded RS232 could be used for random small control or demo things to be attached but only if enough space, so unlikely to do this variant better go for just ISP/debug comms and 2nd uC for any PIOs alternatively implement an entire ports or bus system, for multiple devices SPI, multiple ports, with each separate /SS, near 41C like 4 module slots but without ROM/RAM, only IO, and IO address "decoded" in AVR, many pins and this requires multiple port connectors, large size and pin count possible on an 41C or 71B size, but not on Voyager or Pioneer size SPI no bus, unless with no /SS address transmit to extra shiftreg then /SS if local shiftreg address = port ID key bits I2C/TWI or USART MPCM bus, smaller, one port/connector, no multi /SS pins can be used to drive an daisy chain of random length of devices but requires each device to then habe an further output connector transmitted addr requires address setting and device selection in device address on bus, if multiple port also pin keyed IDs fully 41C like I2C/TWI or USART MPCM allow no multiple ports, as that requires multiple long device cables after short bus inside calculator distance may be limited to in-calculator modules, no cables to devices these could though be "interface" controllers, own cable to device better just single connector for small, then external system for flexible use ISP as SPI master with external TxD/RxD/SS driven 3:8 demuxer, 7 port or ISP as SPI or TxD/RxD to external AVR port splitter or bus adaptor would allow multiple continuing USART MPCM + SPI + I2S/TWI ports/buses or go for an HP-IL like ring, or even fully compatible with HP-IL with any ports/bus/ring variant multiple extern devices, full computer sys SoftVGA + large 9810/9830 or PC style keyboard + MMC/SD slot + Ethernet together with serial Flash + FRAM ext mem even large enough for mail/web unlikely IR LED(s), if anything IR then 48S/etc like bidirectional better use IRDA, so usable for IR communication with an mobile phone or PC but also missusable for unidirectional standard HP IR printing but that can also be done as external module on ISP GND+5V+TxD/RxD pins and IR is not really suited for an bus or other form of multi devices unlikely SD card, if any "diskspace" then 1-4M S-EEPROM/S-Flash on port/bus or use external module on ISP pins with ATtiny based MMC/SD "card reader" for large 100LX style case go for 1 or better 2 SD cards, with OS+filer very unlikely Bluetooth, usefull for missuse as BT keyboard for mobile phone but most likely way over an single digit mA power budget also better as external module on ISP GND+5V+TxD/RxD pins, ev own power definitely no WLAN or even GSM/GPRS, too complicated and time consuming way too much power usage, too large or awfull small chips, too much cost possibly on 100LX style use an GSM/UMTS module, like OpenMoko uses definitely no USB Host, requires far too much power, min 100mA @ 5V unlikely even full USB Device, lot of program work, and not really needed better TTL "RS232" with ext +/-12V adapter and normal RS232 or USBtoRS232 or make own special 5V USBtoRS232, avoid 12V convert and large connector unlikely USBtoRS232 adaptor built in, with only std USB device connector better external, modular, reusable, calc smaller, SPI and RS232 pins free OTOH internal reduces clutter by cable salad, and is always available and can also be used to power calculator while developing or crunching better own USBtoRS232 adaptor use its RS232 status lines for bitbanging SPI but slow, so only minimal bootstrap, then have that use RS232 for rest this bootstrap/loader should be Arduino compatible, for tool reuse would allow bootstrap of "dead" new device, or saving "bricked" device after that only fast with RS232, and later that for backup/installs ideal own USBtoRS232 with own AVR, bitbanging only to once program that then use that for fast hardware SPI programming target AVR, basic level with its own avrdude like command line interface, and hex/kermit files would be generic, any AVR, not just calc, AVR Flash/SRAM/EEPROM level only 1 USB RS232 requires switchover from/to target AVR to/from progr AVR wires RS232 for comms, SPI 3 for progr, so use /SS for this default 1 from target allows programmer, 0 from target for target using power supply and "switch" bat mAh AA 2700, AAA 1200, N 1000, LR44 80, SR44 120, CR2032 220, CR123A 1500 AA/AAA/N alkaline high drain, LR44/SR44 alkaline/silveroxide unknown drain CR2032 lithium manganese low drain (max 3mA, pulse 15mA) CR123A lithium manganese high drain camera rechargables NiMH AA 2300, AAA 900, no special formats, but only 1.2V or possibly even go for solar cells, as in lots of 4-banger calcs but apparently very little power, unless quite a size is installed CMOS and LCD low current, normal LR/SR or CR, no rechargables and charger CMOS with SRAM sub 1uA currents allow Continuous Memory even from 1*3V CR 220mAH/1uA=25year or 3*1.5V LR/SR 80|120/0.001=9|13.5 so no physical on/off switch is needed any more simply place CPU and display into sleep Mode, current around 1uA need some way for switching off LCD controller chip, worst case extern this is also done on modern commercial CMOS+LCD calculators, since 41C off by keypress and software, on by wakeup IRQ from key or timer so ON key not in key matrix, fixes its position, no worse than switch unless modern chip with random PIO pin change interrupts alternatively LED display, require more power, larger batteries 1mA per segment/pixel, gives (1x10..2x20)*(5seg|7seg|15pix)=60..600mA gives AA 4.5..45h, AAA 2..20h, N 1.5..15h, CR123 2.5..25h so even with this no rechargables and charger, unless externally but can still do Continuous Memory without hard switch, if LEDs unpowered no problem with passive 7seg, but with active 16seg/5x7matrix n*2..3mA this is the main reason to not go for LED type display, even if original Software -------- own "ideal" models will require writing own firmware, not just binary reuse use/extend existing HP firmware, where source is available possibly make an Nut emulator, like in new 12C or Nonpareil, "NutAVR" and then directly use available 41C/15C/16C Nut code, and extend 41C this reduces work considerably, particularly with 41C VASM source separate ROM/MCODE and RAM/Data+UCODE adress spaces for AVR Flash+SRAM but is desirable to write MCODE, offer MLDL|HEPAX like features can be as an small RAM, one module size, then flash finished into ROMs queer memory widths 56but/7Byte RAM and 10bit/1.25Byte ROM require either space wasting or slower address transformation/extraction possibly Nut with ROM and/or registers address and/or width extensions unlikely ROM from 64k*10 to 64k*16, likely RAM from 1k*56 to 4|64k*64 and possibly merge address spaces, for Harward->vonNeumann usage which is an side effect of the MLDL RAM and HEPAX stuff which is what HP actually already did, resulted in their Saturn processor which is an evolved Nut processor, next generation, but no RPN software or even make an Saturn emulator, like in all newer ARM HPs, "SatAVR" processor registers same/similar, just 56bit/7Byte -> 64bit/8Byte gives 2 extra mantissa digits and software uses exponent sign bits not really that needed, and exponent extension works also on Nut allows for less parameter tests, no 4bit cut off at 14 bits, only at 16 and no 3bit cut off at 7 bytes, only at 8, easier for emulator but also slightly slower processing, 8 bytes instead of 7 bytes instruction set [1|2]*10bit -> [3..7]*4bit the basic 8+2 format is now (4+4)+4, with 2->4 at front/LSBs allows 4096 instead of 1024 instructions, lots of additions returnstack 4->8 levels, now interrupts, still biggest limit, not in RAM Nut already did the large change to stack in RAM, exen if fixed length was done for Alpha, ths enabled 15C complex and 16C variable widths memory Harward -> vonNeuman and addressing 56|10bit word instr|data -> 4bit nibble instr+data in particular entire separate 20bit adressing stuff, regs and moves this enabled implementing Forth and later the RPL stuff on it allow merged ROM/Flash+registers/SRAM, can execute code from RAM so no problems with MCODE functions in RAM or UCODE programs in ROM no need for CXISA, or even MLDLorHEPAX like architecture extensions far more address range, 64k*10 + 1k*56bit -> 1M*4bit (= 512k*8 or 333k*12 or 64k*64), goes a lot further without switching but for modern memory sizes possibly requires 48GX like extensions so no strong need to extend this architecture, can stay fully compatible unless going for 48GX memory mapping, or expanding to 24bit addresses but both these only make sense with added external memory chips simply map this 15/16:1/16 to AVR Flash and SRAM, gives 480k:32k or alternatively go for 1:1 AVR Flash and SRAM, gives 256k:256k allows more RAM, and then half of ROM space switchable ROMs/RAMdisks no address hiding, show full AVR contents, inkl Flash vectors code running in emulator must then respect already used space full AVR data space, registers and IO, allows drivers in Saturn code map AVR interrupts into emulator space, for drivers there using them AVR emulator code is then pure CPU emulator without IO devices in it but there ist no available Saturn code, HP started restricting code then Nut gives 5 of 8 of the greatest HPs, 67, 34C, 41C/CV/CX, 15C and 16C no restrictions, all exept 67 have Nonpareil firmware images and 41CX also emu41 firmware images, including some modules 41C also has entire source available, and active modding community and is only one with Alpha programming, no need for key cordinates software can run external video as printer, display only specials Saturn needed for other 3 of them 8, 71B, 42S, 48SX 71B has source readable and semiusable but still restricted and also has emu71 firmware images, including few modules but no RPN, only Basic + Forth/Assembler, 41Translator not there only usable if one wants an Basic or Forth system software can run external video as display for everything, and key 42S has nothing available, that would be nearest to an RPN has no external IO other than IR Printer 48SX has docs but is not usable, and only RPL, 41Trans not either has as external only RS232, no external video stuff the Saturn is Nut evolution, transliterate existing 41C Nut to Saturn the 2 architectures are actually quite similar, so easy for this but is quite a lot of work, in addition to Saturn larger emulator and result is incompatible with Nut modules, new 4th Saturn platform not worth all the work for just more adress space and clean 64bit as microcontroller-only fits in Nut adress space, no gain and microcontroller + extern soon outruns Saturn, need mapping anyway so it looks like Nut+MLDL|HEPAX is more attractive, despite its limits if besser is wanted, then own software (such as Forth or SysRPL like) and then also own processor for it, optimised, full VM in the AVR or design own machine code, similar to Nut, but instr 8bit not 10bit go for an Saturn like 8*8=64bit word, for easy address calculation and fast 8bit operation on AVR registers and Flash and RAM possibly smaller 24bit (or 32bit) adresses for faster and compacter while 16MByte instead of 1Mnibble/512kByte space, no mapping 8bit data allows merging of Flash and SRAM into one large address space like on all Saturn based devices (71B, 28C/S, Pioneer, 48S/etc) adresses are split, 0..n = *8 SRAM addreses, -n..-1 = *4 Flash adresses pass through AVR IO (8bit) and interrupts into emulator, drivers in there AVR emulator code is also pure CPU emulator without IO devices in it slightly reduced only 256 math, drop one 8er group use that for encoding "breakouts" for other 3 256 groups 2 of them as 2*8bit, long goto/gosub as 4 of 3*8bit or an AVR derived 3+5+3+5=16bit 2-address instruction set 32*64bit direct regs, but also 5bit in-instruction constants and for larger 64bit after-instruction immediates but difficult to decode 16bit instructions in AVR emulator code or easier decoded 8051 derived 5+3=8bit 1-address instruction set only 8*64bit direct regs, enough for calculator engine and for constants 1..8byte/8..64bit immediates or go for an Transputer like 16*16 8bit instruction+operand set a few for goto/gosub, a few for ldc/pfx/nfx/opr, rest about 10 arithmet and then even uses an small stack for the opr operandless instr separate 0..15 nibble shift/rotate and mask, op, rotate, or merge or go for Forth/SysRPL like, direct/indirect address lists + code tokens or even subroutine threaded, call 1bit+addr, rest (8-1)+n*8bit tokens tokens i21 like integer 5bit/32instr + constant 5+8bit/32instr+256data + fp/64bit 6bit/64instr, 8*8 operation*nibble + some addr/24bit stuff with 256byte data and return stacks, in AVR SRAM, possibly multiple but needs transliterating existing Nut code to own, and extend that then brings all the compatibility problems, no existing modules at least allows then optimal performance, no emu + vm dual layers or as no compatibility, own code, go for an Forth/SysRPL like structure or no emulator, transliterate existing Nut code directly to AVR, and extend but this would cost an CALL for each complex instruction, fp/64bit stuff an that may be all instructions, because of 56bit or 64bit operation so this just ends up wasting space, for calls instead of tokens and this would force separate Harward address spaces, separate code read and all the 2 instruction sources problems that plagued the 41C firmware making if more difficult to put UCODE in Flash and no MCODE in SRAM OTOH the 41C seems to have managed this without user visible problems but claims of because of this quite a few problems within the firmware definitely want UCODE execution from Flash, not only MCODE there, compacter even if Flash is only the built in stuff, no plugable 41C program modules because can still be written in SRAM and then copied to flash and back if with any form of emulation and own MCODE, that also executable from RAM allows local MCODE development without having to constantly flash stuff should be at least as easy as with an MLDL or HEPAX or clone of them also allows loading MCODE (and UCODE) from device AVRs Flash into RAM allows devices to add commands, as if CPU executable ROMs in them without having to fetch instructions from device while running TODO: detailled reread Nut and Saturn, sketch out both instruction sets also detailled reread 41CV VASM and 71B Forth and 48SX SysRPL documentation if going for full own software, basic design here central position is CPU accumulator+registers, plus memory registers begin of memory for fixed system block, then rest allocatable for that preferably simple SIZE like, not malloc/free+garbagecollect data formats ideal use tagged data (are not real RPL style objects) for small stuff less cost than RPL object types, costs adds on large stuff because no separate tag short word, but then each word more tag space tags top 4bit of first 8bit, single|first word 0x..7x, continuations 8x..Fx low 4bit of first 8bit, part of number, or string length (as 8bit chars) 0x/1x float, 1*4tag/sign + 3*4sign/exp + 12*4mant, most flexible display modes as fixed, sci, eng, possibly "all" 2x/3x fixed, 1*4tag/sign + 15*4data, 3 digits more resolution display mode allways as fixed (anything else is senseless) 4x/5x integer, 1*4tag/sign + 15*4data, 6 more digits state display modes as 2,8,16,64uue,64sixel,64mime and 10,12,36,40/rad50, 60 6x string, 1*4tag + 1*4count (0..7) + 7*8char 7x varname/filename (but not LBL/GTO/GSB), format as in string 8x/9x continuation complex i part, float, for rect format Ax continuation complex angle part, pos float, for polar format Bx continuation(s) string 2th..nth 0..7 char group Cx/Dx continuation(s) vector 2nd..nth element, float (cpx r part) Ex/Fx continuation(s) matrix 2nd..nth row, float (cpx r part) different types are merged by power matrix>vector>complex>float>fixed>integer if same power, just different fractions or bases, merged by seniority the older/base element on stack dominates, newer/modifying is converted phasor (U,I) complex *|/ r|i complex (R,C,L,Z) -> phasor complex (U,I) hex integer +|-|*|/ bin or dec integer -> hex integer float mantissa and exponent and each sign shift exponent to be compatible, compute, normalise exponent either left normalised like IEEE, or right normalised like ints addition and subtraction with DAA instruction to make it BCD multiplication and division as loops, multiplication fast with AVR MUL transcendentals by Taylor/MacLaurin series/polynomes, like most BASICs unless some better/faster algorithm is simpler to do, such as CORDIC very likely functions to split/merge 1float<->2fixeds use RPL style tagged "objects", but not RPL input typing/visible delimiters enter fixed as straighforward numbers, is the default if it fits enter floats with normal CHS (change sign) EEX (enter exponent) enter complex with EIM (enter imaginary) or EAN (enter angle) EAN use shift +/- (is generalised), so EIP use shift EEX (+i* like *10^) enter vectors ENE (enter next element), and matrix ENR (enter next row) ENE use other-shift EEX/EIP (also 2 dim), so ENR use other-shift CHS/EAN but also merge/insert/extract/unmerge with <->CPL, <->VEC, <->MATR, etc or simply use the above keys, if no data before them, or after CONV for binary use an integer input mode, and base submodes, like on 16C provide base submodes for bin/oct/dec/12/hex/36/40/64 after entry record in each data tag what base submode it had display anything as entered or computed, irrespective of current input mode have results inherit mode specialities from the stacked inputs stack user selectable size 1-256, for fitting space vs use SIZE ENTER to set how many stack elements there are default to HP standard 4 or ANSI Forth recommended 32 elements no unlimited size, as then no T, and no full rotate or Horner possible no growing like RPL, just filling, no "empty" stack, clear sets to 0 no stack littering, no need to empty/ungrow, just forget/ignore older as circular buffer, with hidden address pointer, wrap around data direct in stack, no pointers, no malloc or garbage collection multiregister data use multiple stack regs, operations treat them as one this for complex, vector/matrix, string, array, list, longint STO|RCL multiregister data goes to multiple registers user enters "base" register number for this group, used until base+n-1 user must manage/omit multiple used register numbers, else overwrite these are not one opaque RPL style "objects" (actually compound data) lastx|history also 1-256, for multiple arguments and previous commands SIZE Rv to set how many history elements there are default to HP standard 1 or maximum of any calculator function copy entire x block to history-x, ev before that if space history-y... or before that if still space history from previous operations to/from registers STO|RCL|x<> [+|-|*|/|etc] is chosen by any of <1digit>|.<2digit>|..<3digit>|"" scratch space is simply numbered, preallocated, like fixed size stack no RPL variable name littering, no need to delete/remove scratch stuff numbered 1digit ist faster to type, and usually enough for scratch space for more use dot, and then gain 100 more, are then always enough worst case can use doubledot, and then gain 1000 more named only for longer lasting stuff, remember what it is about name after STO|RCL|x<>, no artificial name objects (or address objects) no need for RPL evaluate on recall, no need for ' to prevent evaluation the optional [+|-|*|/|etc] allows storage arithmetic, STO to mem, RCL ??? flag setting if STO leaves (requires post-drop) or drops (requires pre-dup) have leaves (post-drop) as default, less accidents and losses manipulate stack STO|RCL|x<> ENTER X|Y|Z|T possibly STO|RCL ENTER <1digit>|.<2digit>|..<3digit> into larger stack but these would amount to the Forth disliked PICK and ROLL commands better use >R and R> or local variables for this sort of stuff lastx|history arguments STO|RCL ENTER L and/or better STO|RCL Rv X|Y|Z|T or alternatively no lastx at all, just an undo command, or both also dedicated x<>y (= x<> ENTER Y) and lastx (= RCL ENTER L) and Rup (= RCL ENTER T) keys, as tradition expects these to be here indirect adressing STO|RCL RCL key RCL used for this because of recalling indir var, also like on 9810 after RCL offer +/- for autopostincrement/-predecrement indirect addr do not confuse this with storage arithmetic, [+|-|*|/] before the ind RCL combined with stack STO|RCL RCL ENTER X|Y|Z|T for temp calculated addr indirect+indexed adressing STO|RCL|x<> RCL * key * used for this because of mnemonic effect of "more than + 1" is same <1digit>|.<2digit>|..<3digit> as for stack elements combined with 2nd indirect STO|RCL RCL * RCL combined with stack STO|RCL RCL * ENTER X|Y|Z|T temp calc offset can be used as STO|RCL * , for implementing stats in user code with stats data in main memory, accessable the normal STO|RCL way use together with program-local "STATBASE" for stats registers allows full 41X style sigma-reg movable stats registers to/from arrays with STO|RCL|x<> ARRAY create and (re-)dimension named arrays with SIZE ARRAY "" for variable SIZE ARRAY RCL or SIZE ARRAY ENTER X|Y|Z|T read array size back with RCL SIZE ARRAY "" dimensioned named arrays are recognized, STO|RCL ARRAY is facultative it is only needed for arrays as subset of numbered registers delete arrays with SIZE ARRAY 0 "", ARRAY is again facultative also use SIZE 0 "" for deleting normal named variables numbered scratch space is inside an undeletable array with name "REGS" SIZE STO is an equivalent of SIZE ARRAY "REGS" can be used as STO|RCL [ARRAY] "STATS", for implem stats in user code with stats data in separate named array, safe from main memory flags are an single integer register, therefore max 60 of them per register alternative 2 int, for 1 int user and 1 int system or 2 int, for 1 int all r/w, 1 int all ro stuff or even 3 int, for 1 int user, 1 int system rw, 1 int system ro use STO|RCL|x<> FLAG SET|CLR|INV OR|AND|XOR to set/clear/inver flags is chosen by any of or - or + or "" or ALL also used for all mode settings, but also STO|RCL MODE for comfort FIX/SCI/ENG/SI, digits, DEG/RAG/GRAD, complex conv, FLOAT/INT, int base also various VIEW/SHOW variant, full mantissa, complex i/ang, near ENG/SI chop status/flags/stack/history/namedvars/programs off from end of memory reduces unnamed registers, for remaining registers REGS? function leave backdoor to modifying system state, like 41C synthetic programming used better as an official STO|RCL R/S(=STATE) |"" for this or offer an "SYSTEM" named array for all system state possibly also offer an even more general STO|RCL|x<> STO full memory access this would allow anything, most flexible, also most difficult to use data entry direct into top of stack, no RPL style command/entry line always show top of stack, no switching to command line display or go for "temporary" stack element, as "data line" stack editing requires the non-intuitive "stack lift" discussion but gets rid of even worse command line vs top of stack dualism issues without data entry active <- then becomes a full DROP (not just CLx) new data entry then lifts stack, not overwrites an 0 from above CLx ENTER is number separator and DUP, not command line to stack and DUP keyboard input to command codes/tokens, then interprete those or alternatively go for full SysRPL address lists, indir threading would allow implementeing much as user code, as fast as Forth programm mode record key sequences, and after RUN command interprete them codes as series of 8bit values, like in most HPs before Saturn 3*4bit perhaps like in 15C byte count predictable from opcode, for easy SST/BST or alternatively go for an SysRPL style list of addresses as shorter 16bit CPU register offsets or full 32bit addresses in this case question of direct or indirect threading, speed vs space or even subroutine threading, depending on if code from SRAM goes display them as alpha commands, not as key coordinates programs code space separate from variables, in place editable definitely no artificial program objects as pseudo-data and no RPL << code >> and no '' RCL EDIT '' STO or VISIT and no 2 different code formats for command line and edit mode also in program editor no << and >> and no wastefull indenting programs are an editable part of memory, no messing that up with objects commands are also names/labels with code behind, and not pseudo-data consequently no artificial "executing of objects", just passive recall clear division of RCL data/things/space and XEQ code/actions/time code space automatically extended into registers, but risks overwrites perhaps use SIZE STO for register range warning or error programm editing as separate mode, enter it by PROG key, no << and >> program editing on base of line-by-line disassemble/edit/(re-)assemble editor with multiline display showing multiple code lines possibly with wide display on each line multiple-command "stanzas" in this case linebreak whenever control flow changes, exept calls with SoftVGA external video display, many line display, long lines definitely show multiple commands as stanzas, and mult lines allows even multiple routines visible at same time, full screen editor offer all of above for SRAM (editing) and Flash (view only, copy to edit) for this structure Flash compatible with SRAM structure incl builtins also naming in Flash compatible with SRAM naming, as one or few libs built in routines are offered as libraries of functions, . var names have program counter for edit/execute point editor move down and up with SST(/FST) and BST to any label with GTO LBL |"" (no GTO .) to begin/end with GTO LBL BST/SST, no packing or adding END instr show bytes, or even better register+subbyte, not artificial line numbering at end of program show size info, register is there, just add free mem packing done automatically at exit, no command, for manual exit/reenter and for new program border/splitting in run mode something, before edit in run mode GTO and GTO LBL for positioning FST and BST for steping both directions without execution and XEQ or R/S or SST for running allow comments embedded in code, make more readable, just non stacked string also allow at begin of program an help text, list with help key may be same data as an Forth stack effect command plus then more text, all comments until first non-comment code labels for all GTO/XEQ/subroutines/programs, max 7(?) chars, like variables but also retain numeric labels, so allow LBL <1digit>|.<2digit>|"" minimal one-routine programs require no label, run with R/S from top labels only needed for later entry points, jump over top stuff all A..J labels direct keyboard call, also with fA..J, gA..J also offer structured programming, conditionals and loops without any labels in programs also conditionals (condit-skip vs if/case?) loops (skip/conti-skip vs endless/while/until/djnz/for/break) oldfashioned with labels and jumps, but also offer structured syntaxes indirect jumps with GTO RCL <1digit>|.<2digit>|"" subroutines XEQ