Quick video to remind me the proper way to start / stop my HP3000 – a procedure I do very infrequently.
Quick video to remind me the proper way to start / stop my HP3000 – a procedure I do very infrequently.
Short answer: Yes, but slowly.
I have a small electric inductive burner I can run from my generator and a similar propane burner with a converter that allows it to run from either small green propane tanks or a larger 5G style tank.
I’m not consistent at keeping fuel supplies available for either of these cooking methods, though. So I considered getting a canned fuel stove and a supply of canned fuel I can keep stored.
I have a bucket of emergency food, but much of that food relies on having access to boiling water. So my question is: can canned fuel boil water?
Reviews and Q&A on Amazon seem to be mixed and nothing on the Sterno site (that I found) indicates it does or does not. So it is time to setup an experiment.
Full disclosure: this is not a highly accurate experiment, but it should give me a yea/nay on whether I want to rely on canned fuel.
My setup is straight forward: a stove, canned fuel, and a fairly accurate thermometer.
I used Sterno canned heat for fuel:
The cook stove is from Coghlan’s:
A cuisinart sauce pan:
and an exectech multimeter with temperature sensor:
First question: how hot is the flame? In general I was seeing 330F. It would sometimes go as high as 650F, but just briefly.
I tried 3 different experiments:
Here is a table of each experiment showing the temperature of the water as time passed:
In summary, you must cover the pan or the water will never boil. Even then it is pretty slow to get boiling.
To bring 2 cups of water to boil consumes 1/2 the 2.6 oz can of fuel. To add food to the water, get it back to boiling, and cook would certainly go thru the whole can and take roughly the full 45 minutes the can would last.
This is a little to slow for my taste, so I’ll stick to propane though I might buy a box of fuel just to use for heating (rather than boiling) food.
Feb 2020 Update:
I purchased a propane stove like this ($37 at local sporting goods store):
Then did the 2 cup water test using this setup:
I set the burner 2 notches back from high (high just seemed to me like too much heat was being wasted). It took 3 minutes, 40 seconds to heat 2 cups in this scenario.
I haven’t been keen on using 1lb propane bottles as possible emergency fuel as I don’t want to keep a decent quantity of tanks stored anywhere. But I do have 3 5G propane tanks I use in the BBQ, deck heater, and spare.
I found I can just keep a few 1lb propane bottle and refill them with this:
Instructions can be found easily on the web. It’s not the safest thing to do I imagine, but would do in a pinch.
One of my biggest issues with Windows 10 is the fact that it updates itself whenever the heck it wants. Yes, there is some control, but not enough. I have multiple Win10 systems that are left off for months and when I turn them on, they immediately start updating (downloading) when all I want to do is run a quick test, and just turn it back off.
With all prior versions of Windows, I turn off auto updates, then do a periodic update on all systems simultaneously. I may blow a whole morning doing so, but it is on my own schedule.
I recently found Windows Update Blocker or WUG. It turns auto updating off allowing me to do the updating on the same cycle I update all of my other machines.
I’ve installed it into a test system and I’m watching it. That system had been off for months and it’s not updating, so I it looks like WUB works as advertised.
WUB 1.5 can be found here:
I use stable versions of the Lazarus/Free Pascal compiler for my production projects. Decades of experience has left me very leery of the latest and greatest of any software.
For Lazarus, that means going to SourceForge (https://sourceforge.net/projects/lazarus/files/) and using a x.x.2 or greater version of the compiler. x.x.0 is forbidden in my book and even x.x.1 typically I avoid.
This is all fine and dandy until I find a bug in the compiler, and I cannot come up with a reasonable work around.
When an error is found with no resolution, I report it to the compiler writers. Without fail, the first question will be – can you reproduce it with the trunk compiler (the absolute most recent). Not that I can blame them. The bug may well already be fixed and they don’t want to waste time chasing down problems already fixed.
This means I need to be able to create a trunk version of the compiler on demand.
In the past, I’ve manually built the Lazarus compiler on Windows system. It is not a simple process but I know the procedure and can get a compiler running in a few hours. One downside to manually building the compiler is it will interfere with any existing Lazarus compiler, so the manual build should be done in a clean VM.
This week I found myself in the same predicament, except the bug is occurring only on the MacOS platform. I can just barely manage getting my production software to run on this platform. Manually building a compiler would be very time-consuming for me.
As I was researching the build process for MacOS I stumbled across the FPCUPDELUXEprogram. You tell it the version of Free Pascal and the version of Lazarus you want, it will download the code from the SVN along with the proper bootstrap compiler, then build everything for you. Further, the install is completely isolated from the rest of the system so any production Lazarus compiler is not impacted. YES!
I installed FPCUPDELUXE on my Mac system and used it to build FPC/Lazarus 3.0.4/Trunk. In about 1/2 an hour I had a usable compiler.
The FPCUPDELUXE program can be found here:
I needed to build the 64bit MacOS compiler, so I downloaded
Note: On MacOS, FPUPDELUXE must be installed properly into the Applications folder. I didn’t do that on my first attempt and had some access issues.
When you start FPUPDELUXE you will see:
About 30 minutes later you will have a running compiler. So much easier than the manual method!
Once the compile is done, you will find a link to the Lazarus program in your home directory:
Compiling Specific Revision
I discovered rather than just compiling trunk, I needed trunk up to a specific revision.
Click on setup, for Lazarus Branch, select trunk. For revision, enter the revision you want (62400 in my case).
After you enter the revision, it is recalled when you restart fpcupdeluxe.
While messing with an ESP8266 for the past couple of days, I decided I should look into how the watch dog timer operates.
Turns out the WDT is enabled automatically for the ESP8266. Most of the library routines reset it so you may never even know it is running unless your program hangs in a loop.
My primary resource for researching ESP8266 WDT was:
Hardware and Software Timers
There is a hardware WDT and a software WDT. The HW WDT is always running and will reset the MCU after about 6 seconds if the HW WDT timer is not reset.
The SW WDT seems to reset the MCU at 1.5 about seconds. You can enable/disable the SW WDT, but not the HW WDT. There seems to be little point in disabling the SW WDT as you must reset it to also reset the HW WDT.
Enabling the Software WDT
As previously mentioned, the SW WDT is running by default. If you wish to disable it, the SW WDT is disabled with
The SW WDT is enabled with:
While you must pass a timeout value to wdtEnable, it is currently ignored.
Resetting, Kicking, Feeding the Dog
As mentioned before, most of the libraries will automatically reset the WDT for you so you should not have to do so. But if you are doing something compute bound that will take more than a second or so, you should manually reset the timer with
Unlike Teensy and Arduino, WDT is very easy to use. The downside is when the timer pops, the system just resets. You can’t jump to some code to handle the reset.
I recently set up an ESP8266 to monitor 3 Dallas DS18B20 temperature sensors and act as a web server to allow viewing of the data on a smart phone.
This was an experiment to try a few things:
This is the first time I’ve played with IoT hardware in a couple years now. I found it has become way easier to locate and install libraries and those libraries just work. In the past it was all a crap-shoot and took much more work. The resulting program for this project really just glues together libraries that do all of the hard work.
This blog post is a summary of those experiments which provided a workable little monitor:
These are the primary websites I used when developing this software:
Soft Access Point Examples:
Arduino WIFI examples:
Wiring Multiple Sensors to Arduino:
Covers installing libraries into esp8266, reading a single sensor, reading multiple sensors
Programming ESP8266 with Arduino IDE
These instructions discuss getting Arduino IDE running for ESP8266:
Once followed, I compiled and downloaded the standard blink program into my NodeMCU (0.9) to verify connectivity.
Soft Access Point Set up
My first goal was to allow configuring the ESP8266’s WIFI connection to my LAN using my phone which is now the common method for handling a device like this.
I assumed I would be writing a fair amount of code. Not true, ends up there is a library that handles the process completely. After you call, wifiManager.resetSettings, your ESP8266 is connected to the LAN. It handles everything for you.
The primary resource I used to figure this out is
which uses the code in this git library
Creating a Web Server
Arduino web servers are nothing new and I’ve created a few myself. I set up a test server using instructions from
When creating the HTML for this server, at first everything was showing up small on my phone. I wanted it to fill the phone. I found the following HTML code solved that problem:
<head> <meta name="viewport" content="width=device-width, initial-scale=1">
Further, I wanted the content to refresh every 15 seconds so I also needed:
<meta http-equiv="refresh" content=15>
Reading Multiple Dallas DS18B20 Temperature Sensors
Once I had a running web server that was formatting, the next step was to wire up some sensors and read them.
I primarily used this resource to get the wiring correct:
My schematic is as follows:
Once the code for the temp sensors was running, I merged that also into the final project code.
The final code can be found here:
Several years ago I put a USB hard drive on my development RPI using procedures like this:
I knew it helped, but not really to what extent.
Today, I had to upgrade the RPI from Wheezy to Jessie to Stretch. My SD card based RPIs took 1 long day or two 8 hour days to do the update.
The development RPI running the USB hard drive was upgraded in 1/2 a day, if even that. Clearly the USB system is much faster.
(Note: as of Apr 2020, these games are available online. If you would rather play them online rather than install the SIMH emulator, see https://wp.me/p3PlCO-D3).
Last year I posted instructions on extracting and running the SIMH HP3000 emulation. I have found that many people downloading this file are doing so to run the Interactive Games on that system: WARP and MANSION.
I decided to make loading the games a little easier, and also got the ADVENTURE (Colossal Cave) game running as well as it was always my favorite.
Install the Software
First, download the zip file from:
Extract all files of hp3000Sim.zip into c:\hp3000Sim. Note: if you extract into a different directory you will need to fixup the hp.bat file.
Start the Emulator
In c:\hp3000Sim, double click on hp.bat file:
Playing the Games
To get to the games, you must logon as MGR.GAMES. Once you do this, a logon UDC will start a text-based menu system:
Now just type in the number assigned to the game and press ENTER to begin playing it.
For example, to start Adventure, type 1 followed by enter:
Göran Cronström graciously shared the PCB CAD files he made for the Woof Off! project. He created both a SMD version and a PTH version. Awesome, and thanks Göran!
The SMD version is here:
While the PTH version is here:
The virtual hard drive that came with SIMH is a 55MB HP7920 disk drive. With just the O/S installed, there isn’t a lot of space left on this drive. This HP3000 can also emulate a 120MB HP7925.
This procedure will step you through backing the HP3000 up, creating an HP7925, then restoring the files onto the new hard drive. I’ve wanted to do this 2 times now, so I will write down the process for posterity.
You need to copy the O/S and all the files to tape. This is done with the SYSDUMP command.
Earlier versions of SIMH hung trying to do a SYSDUMP. I obtained simh-4.0-current–2019-05-07-52a31597.zip and extracted the hp3000.exe from it.
:HELLO MANAGER.SYS CPU=1. CONNECT=1. SUN, AUG 25, 1991, 4:11 PM 16:11/#S1/14/LOGOFF ON LDEV #20 16:11/#S2/15/LOGON FOR: MANAGER.SYS,PUB ON LDEV #20 HP3000 / MPE V E.01.00 (BASE E.01.00). SUN, AUG 25, 1991, 4:11 PM :<<type control-E>> Simulation stopped, P: 071144 (PAUS 0) sim> attach ms0 sysdump-190825.tape MS: creating new file sim> go 16:11/10/Vol (unlabelled) mounted on LDEV# 7 :FILE T;DEV=7 :SYSDUMP *T ANY CHANGES? ENTER DUMP DATE? 0 ENTER DUMP FILE SUBSET(S) @.@.@ LIST FILES DUMPED? N ?16:12/#S2/16/IS "T" ON LDEV#7 (Y/N)? <<type control-A to get "=" prompt>> =REPLY 16,Y STORE/RESTORE, VERSION 2 (C) 1981 HEWLETT-PACKARD CO. SUN, AUG 25, 1991, 4:12 PM LOADLIST.PUB .SYS NOT STORED:(S/R 55) FILE IN USE FOR WRITING LOG0016 .PUB .SYS NOT STORED:(S/R 55) FILE IN USE FOR WRITING SL .PUB .SYS NOT STORED:(S/R 55) FILE IN USE FOR WRITING FILES STORED: 535 FILES NOT STORED: 3 **WARNING** FOLLOWING SYSTEM FILES NOT DUMPED <<This is fine>> HIOCTAP0.PUB.SYS HIOCIPR0.PUB.SYS IONRDR0.PUB.SYS END OF SUBSYSTEM : <<type control-A to get "=" prompt>> =SHUTDOWN SESSION ABORTED BY SYSTEM MANAGEMENT CPU=5. CONNECT=12. SUN, AUG 25, 1991, 4:22 PM 16:22/#S2/15/LOGOFF ON LDEV #20 16:22/1/ALL JOBS LOGGED OFF SHUT Programmed halt, CIR: 030377 (HALT 17), P: 161440 (BR P-1) sim> exit
Create a SIM script file with the following contents. I will call this myreload.sim.
set -n console log=mpe-1-reload.log set console DEL=177 set cpu idle=10 set ds0 7925,format attach -n ds0 mpe.7925.disc set ms0 7970E attach -r ms0 sysdump-190825.tape deposit SWCH 003006 load assert 01.112247=046022 deposit 01.112247 021360
mpe.7225.disc will be the file containing the contents of the new HP7925 disk drive.
sysdump-190825.tape is the name of the tape file I just created above.
Now Start the HP using the new SIM script:
C:\hp3000Sim>hp3000 myreload.sim HP 3000 simulator V4.0-0 Current git commit id: 52a31597 Logging to file "mpe-1-reload.log" C:/hp3000Sim/myreload.sim-5> attach -n ds0 mpe.7925.disc DS: creating new file C:/hp3000Sim/myreload.sim-7> attach -r ms0 sysdump-190825.tape MS: unit is read only Cold load complete, P: 177661 (LOAD Q-12)
The last step is to remove the HP7920 from the configuration, add the HP7925, and once that is done, the system will load the tape onto the new drive.
Type GO to start the system and follow the example:
sim> go HP32002E.01.00 WHICH OPTION <COLDSTART/RELOAD/UPDATE>? RELOAD WHICH OPTION <SPREAD/COMPACT/RESTORE/ACCOUNTS/NULL>? SPREAD ANY CHANGES? Y LOAD MAP? MEMORY SIZE = 512.? I/O CONFIGURATION CHANGES? Y LIST I/O DEVICES? HIGHEST DRT = 36.? LOGICAL DEVICE #? 1 DRT #? 0 LOGICAL DEVICE #? 1 DRT #? 4 UNIT #? 0 SOFTWARE CHANNEL #? 0 TYPE? 0 SUB TYPE? 9 RECORD WIDTH? 128 OUTPUT DEVICE? 0 ACCEPT JOBS/SESSIONS? ACCEPT DATA? INTERACTIVE? DUPLICATIVE? ENABLE SEEKAHEAD? INITIALLY SPOOLED? DRIVER NAME? IOMDISC1 DEVICE CLASSES? DISC,SPOOL IS DISC A SERIAL DISC CLASS? N IS DISC A FOREIGN DISC CLASS?N IS SPOOL A SERIAL DISC CLASS? N IS SPOOL A FOREIGN DISC CLASS?N LOGICAL DEVICE #? MAX # OF OPEN SPOOLFILES = 20.? LIST I/O DEVICES? Y LOG DRT U C T SUB REC OUTPUT MODE DRIVER DEVICE DEV # N H Y TYPE TERMINAL WIDTH DEV NAME CLASSES # I A P TYPE SPEED T N E 1 4 0 0 0 9 128 0 IOMDISC1 DISC SPOOL 6 14 0 0 32 2 66 0 S IOLPRT0 LP 7 6 0 0 24 0 128 0 IOTAPE0 TAPE 8 6 1 0 24 0 128 0 IOTAPE0 TAPE 9 6 2 0 24 0 128 0 IOTAPE0 TAPE 10 6 3 0 24 0 128 LP JA IOTAPE0 JOBTAPE 20 7 0 0 16 0 18 ?? 40 20 JAID IOTERM0 TERM 21 7 1 0 16 0 10 ?? 40 21 JAID IOTERM0 TERM 22 7 2 0 16 1 10 ?? 40 22 JAID IOTERM0 TERM 23 7 3 0 16 0 10 ?? 40 23 JAID IOTERM0 TERM 24 7 4 0 16 0 10 ?? 40 24 JAID IOTERM0 TERM 25 7 5 0 16 0 10 ?? 40 25 JAID IOTERM0 TERM 26 7 6 0 16 0 10 ?? 40 26 JAID IOTERM0 TERM 27 7 7 0 16 0 10 ?? 40 27 JAID IOTERM0 TERM 28 7 8 0 16 0 10 ?? 40 28 JAID IOTERM0 TERM 29 7 9 0 16 0 10 ?? 40 29 JAID IOTERM0 TERM 30 7 10 0 16 0 10 ?? 40 30 JAID IOTERM0 TERM 31 7 11 0 16 0 10 ?? 40 31 JAID IOTERM0 TERM 32 7 12 0 16 0 10 ?? 40 32 JAID IOTERM0 TERM 33 7 13 0 16 0 10 ?? 40 33 JAID IOTERM0 TERM 34 7 14 0 16 0 10 ?? 40 34 JAID IOTERM0 TERM 35 7 15 0 16 0 10 ?? 40 35 JAID IOTERM0 TERM CLASS CHANGES? LIST I/O DEVICES? LIST ADDITIONAL DRIVERS? I/O CONFIGURATION CHANGES? DISC VOLUME CHANGES? Y LIST VOLUME TABLE? Y VOLUME # NAME LOG DEV # 1 MH7920U0 0 DELETE VOLUME? Y ENTER VOLUME NAME? MH7920U0 ENTER VOLUME NAME? LIST VOLUME TABLE? NON-SYSTEM VOLUME ON LDEV 1 ADD TO SYSTEM VOLUME SET? Y ENTER VOLUME NAME? MH7925U0 LOGICAL PACK SIZE IN CYLINDERS = 815.? LIST DEFECTIVE TRACK/SECTOR INFORMATION? DELETE TRACK? LIST VOLUME TABLE? Y VOLUME # NAME LOG DEV # 1 MH7925U0 1 LIST VIRTUAL MEMORY DEVICE ALLOCATION? Y VOLUME NAME LDEV # VM ALLOCATION MH7925U0 1 0 ENTER VOLUME NAME , SIZE IN KILOSECTORS? MH7925U0,10 ENTER VOLUME NAME , SIZE IN KILOSECTORS? VIRTUAL MEMORY CHANGES? Y LIST VIRTUAL MEMORY DEVICE ALLOCATION? Y VOLUME NAME LDEV # VM ALLOCATION MH7925U0 1 10 ENTER VOLUME NAME , SIZE IN KILOSECTORS? VIRTUAL MEMORY CHANGES? DISABLE LOGGING? MAX # OF SPOOLFILE KILOSECTORS? =128? # OF SECTORS PER SPOOLFILE EXTENT = 384.? 2 FILES NOT FOUND - ANOTHER TAPE SET AVAILABLE?N NOT ALL FILES FOUND - LIST? BANK 0 DEPENDENT MEMORY USED - 14004 << make up any date < 1/1/2000 >> DATE (M/D/Y)?6/12/91 TIME (H:M)?20:48 WED, JUN 12, 1991, 8:48 PM? (Y/N)Y LOG FILE NUMBER 29 ON *WELCOME* :HELLO OPERATOR.SYS;HIPRI 20:48/13/SP#6/SPOOLED OUT 20:48/#S1/14/LOGON FOR: OPERATOR.SYS,OPERATOR ON LDEV #20
That’s it! On a real classic HP3000, that would have taken hours. I spent many a long night in my youth doing just that.
Just to check that everything is roughly correct:
:HELLO MANAGER.SYS CPU=1. CONNECT=2. SAT, JUN 1, 1991, 8:49 PM 20:49/#S1/14/LOGOFF ON LDEV #20 20:49/#S2/15/LOGON FOR: MANAGER.SYS,PUB ON LDEV #20 HP3000 / MPE V E.01.00 (BASE E.01.00). SAT, JUN 1, 1991, 8:49 PM :REPORT TMP.@ ACCOUNT FILESPACE-SECTORS CPU-SECONDS CONNECT-MINUTES /GROUP COUNT LIMIT COUNT LIMIT COUNT LIMIT GAMES 8902 ** 20 ** 410 ** /TMP 4870 ** 1 ** 3 ** HPOFFICE 0 ** 0 ** 0 ** HPPL85 0 ** 0 ** 0 ** HPPL87 0 ** 0 ** 0 ** HPPL89 1140 ** 0 ** 0 ** HPPL96 0 ** 0 ** 0 ** ITF3000 0 ** 0 ** 0 ** SUPPORT 38073 ** 0 ** 0 ** SYS 39284 ** 44 ** 1016 ** /TMP 0 ** 0 ** 0 ** TELESUP 1559 ** 0 ** 0 ** :
The last step is to fix the SIMH startup script to use the new hard drive. Most likely you are using the mpe-auto.sim. script. Edit it and change 7920 to 7925 everywhere:
; Set the disc mode and attach the disc image file. set ds0 7925 attach -e ds0 mpe.7925.disc