Watch Dog Timer (WDT) for ESP8266

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.

Resources

My primary resource for researching ESP8266 WDT was:

ESP8266: Watchdog functions

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

ESP.wdtDisable();

The SW WDT is enabled with:

ESP.wdtEnable(msecs)

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

ESP.wdtFeed();

Summary

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.

 

Advertisements
Posted in c-esp8266 | Tagged , , | Leave a comment

ESP8266 Temp Sensor Monitor Lab Notes

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:

  • How can I connect to the ESP8266 via my phone to assign it to my WIFI network.
  • How can I read multiple temperature sensors
  • How can I provide the data via a phone readable website

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:

Resources

These are the primary websites I used when developing this software:

TCP library:
https://arduino-esp8266.readthedocs.io/en/latest/esp8266wifi/readme.html

Soft Access Point Examples:
https://arduino-esp8266.readthedocs.io/en/latest/esp8266wifi/soft-access-point-examples.html

Arduino WIFI examples:
https://42bots.com/tutorials/esp8266-wifi-tutorial-arduino-ide/

Wiring Multiple Sensors to Arduino:
https://lastminuteengineers.com/multiple-ds18b20-arduino-tutorial/

Covers installing libraries into esp8266, reading a single sensor, reading multiple sensors
https://randomnerdtutorials.com/esp8266-ds18b20-temperature-sensor-web-server-with-arduino-ide/

WDT:
https://techtutorialsx.com/2017/01/21/esp8266-watchdog-functions/

Programming ESP8266 with Arduino IDE

These instructions discuss getting Arduino IDE running for ESP8266:

https://dzone.com/articles/programming-the-esp8266-with-the-arduino-ide-in-3

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

https://www.digikey.com/en/maker/blogs/2017/configure-your-esp8266-wifi-module-with-new-wifi-manager

which uses the code in this git library

https://github.com/tzapu/WiFiManager

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

https://randomnerdtutorials.com/esp8266-web-server/

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:

https://lastminuteengineers.com/multiple-ds18b20-arduino-tutorial/

My schematic is as follows:

With the hardware configured, I then installed the OneWire and Dallas temp sensors libraries as outlined here:

Guide for DS18B20 Temperature Sensor with Arduino

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:

http://www.xyfyx.com/files/esp8266-tempSensorMonitor.zip

Posted in c-esp8266 | Leave a comment

Raspberry PI (RPI) USB Drive Performance

Several years ago I put a USB hard drive on my development RPI using procedures like this:

https://www.raspberrypi.org/forums/viewtopic.php?f=29&t=44177

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.

Posted in c-rpi | Leave a comment

Playing Old Interactive Fiction Games on the HP3000

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:

http://www.xyfyx.com/files/hp3000Sim.zip

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:

This will start the emulator, the HP3000 will boot up and quickly get you to the colon input prompt:

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:

Tips

  • The HP3000 console allows only upper case input. As far as I know, none of these old games will have issues with upper case only. In fact, some have issues with lower case.
  • The HP3000 console doesn’t show a cursor thus back spacing can be difficult. Control-X will erase the entire line.
  • If uppercase only / no cursor troubles you, you can connect to the emulator (127.0.0.1) using port 1054.
  • Exit the menu by typing X followed by ENTER.
  • Exit the menu and logoff by typing EXIT followed by ENTER.
  • Don’t forget to SHUTDOWN – The HP3000 doesn’t like unexpected halts any more than Windows or Linux. Type Control-A to get the ‘=’ prompt, then type SHUTDOWN to shut the operating system down in an orderly fashion.

 

Posted in c-retro | Tagged , | Leave a comment

Woof Off! PCB Files

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:

http://www.xyfyx.com/files/WoofOffFabSMD.zip

While the PTH version is here:

http://www.xyfyx.com/files/WoofOffFabTHT.zip

Posted in c-electronics | Tagged , | 1 Comment

Upgrade HP3000 SIMH Disk Drive from HP7920 to HP7925

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.

SYSDUMP

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
Posted in c-retro, Uncategorized | Tagged | Leave a comment

Using Kermit to Transfer files to/from SIMH HP3000

After talking to another HP3000 SIMH user who had no viable way to transfer files to the HP3000, I set out to look for something a bit easier than create a simH tape. OK, using kermit still isn’t simple, but it is a little more accessible.

Back before the internet, files were transferred between mini computers, like the HP3000, and PCs using file transfer programs such as Kermit. There were others such as xmodem, ymodem, and zmodem. I’m using Kermit because I have access to a copy that will work on top of telnet.

Forgetting for a moment about telnet, here is roughly how kermit works. From your PC, you  connect to the HP3000 over a serial or modem connection. You run kermit on the hp3000, and tell it whether to send or receive a file. You then tell the local software whether to send or receive a file. The two programs would then perform the transfer for you. Pretty clumsy by today’s standards.

The first thing you will need is Kermit for the HP3000. I found the source for an HP3000 version at http://www.columbia.edu/kermit/archive.html#hp. This link includes just the source, but I’ve compiled it for you and put it on a simH format tape so it is easy to copy to the HP3000.

Note to self: this version of kermit requires the abortsess intrinsic which is not available on the old version of MPE being used by simH. I deleted those 2 lines which really shouldn’t be a problem as I’m not anticipating needing the HP3000 to abort my session after transfer is complete.

I assume you are running HP3000 SIMH from the distribution I made available in my blog. If not, you may need to alter directory locations in the examples.

Restore Kermit on HP3000

  • To get the HP3000 binary of kermit, download this zip file which contains the simH tape:

http://www.xyfyx.com/files/kermit.tap.zip

  • Inside of the zip file you will find a single file, kermit.tap. Move it to your c:\hp3000Sim directory.
C:\hp3000Sim>dir kermit.tap
 Volume in drive C is c180104
 Volume Serial Number is D6EF-2751

 Directory of C:\hp3000Sim

08/24/2019  09:55 AM            74,360 kermit.tap
               1 File(s)         74,360 bytes
               0 Dir(s)  354,664,509,440 bytes free
  • Fire up your HP3000 emulator if you haven’t already. Then mount the tape as read only:
HP3000 / MPE V E.01.00 (BASE E.01.00). FRI, AUG 23, 1991, 4:47 PM
: <<<press control-E>>>
Simulation stopped, P: 071144 (PAUS 0)
sim> attach -r ms0 kermit.tap
MS: unit is read only
sim> go

9:31/10/Vol (unlabelled) mounted on LDEV# 7
  • Log in as manager.sys and restore kermit:
:HELLO MANAGER.SYS

CPU=1. CONNECT=1. SAT, AUG 24, 1991, 10:01 AM
10:01/#S3/16/LOGOFF ON LDEV #20

10:01/#S4/17/LOGON FOR: MANAGER.SYS,PUB ON LDEV #20
HP3000 / MPE V E.01.00 (BASE E.01.00). SAT, AUG 24, 1991, 10:01 AM
:FILE T;DEV=7
:RESTORE *T;@.PUB.SYS;OLDDATE;SHOW;KEEP
?10:01/#S4/17/IS "T" ON LDEV#7 (Y/N)?
<<<NOTE: You must type control-A here to get the '=' prompt>>>
=REPLY 17,Y
<<<The '17' matches the reply request PIN# of 17 in the request to mount "T">>>
SAT, AUG 24, 1991, 10:01 AM

  FILES RESTORED = 3

    FILE    .GROUP   .ACCOUNT   LDN  ADDRESS
    KERMIT  .PUB     .SYS       1    %275302
    JOBINFOU.PUB     .SYS       1    %277142
    JOBINFOI.PUB     .SYS       1    %252747

  FILES NOT RESTORED = 0

:LISTF KERMIT,2
ACCOUNT=  SYS         GROUP=  PUB

FILENAME  CODE  ------------LOGICAL RECORD-----------  ----SPACE----
                  SIZE  TYP        EOF      LIMIT R/B  SECTORS #X MX
KERMIT    PROG    128W  FB         221        221   1      222  1  1

:LISTF JOBINFO@,2
ACCOUNT=  SYS         GROUP=  PUB
FILENAME  CODE  ------------LOGICAL RECORD-----------  ----SPACE----
                  SIZE  TYP        EOF      LIMIT R/B  SECTORS #X MX
JOBINFOI           72B  FA          18         18  18       12  1  1
JOBINFOU  USL     128W  FB          54        400   1      201  1  2

Test Kermit

Unless you’ve already installed the JOBINFO intrinsic, kermit will fail:

:RUN KERMIT
UNRESOLVED PROG EXTERNAL JOBINFO
SL BINDING ERROR (LOAD ERR 27)
UNABLE TO LOAD PROGRAM TO BE RUN. (CIERR 625)
:

That just means that kermit is trying to access the jobinfo intrinsic which is not part of this old version of MPE. Fortunately, Keven Miller wrote a freeware version we can install.

:SEGMENTER
HP32050A.01.08 SEGMENTER/3000 (C) HEWLETT-PACKARD CO 1985
-USL JOBINFOU
-SL SL.PUB.SYS
-ADDSL JOBINFO
-EXIT

END OF SUBSYSTEM
:

and now kermit will run:

:RUN KERMIT

HP 3000 KERMIT VERSION: 12 JULY 1994
Works best with PC Kermit V2.31 or newer.
You can now use PARM= on RUN stmt to specify TAKE file.

KERMIT3000>EXIT

END OF PROGRAM
:

Installing Kermit on Your PC

I found a version of Kermit that will run on top of telnet here:

http://www.kermit.wwarthen.com/Download.htm

If that link ever goes away, I kept a copy of the 32bit zip version here:

http://www.xyfyx.com/files/kw32v085.zip

My preference was to copy the zip file and unzip it into c:\kermit.

After installing, start the PC kermit and it will look like this:

Configure Kermit on Your PC

Kermit needs to be configured to use TCP/Telnet to access the host. This example assumes that you have the hp3000Sim on your local host and are using port 1054 for telnet access to the simulator.

  • In the menu, go to Configure | session and set the connection to tcpip:

  • Go to Configure | Communications and set host to localhost (or the proper value) and port to 1054:

  • Now go to Session | Connect. This should connect to the HP3000 and you will see
Connect to the HP3000 simulator ATCD device, line <n>
  • Press the Enter key a few times and you should get a ‘:’. In kermit, I suggest you always logon using term type 18:
:hello manager.sys;term=18

Term=18 tells the HP not to use the its proprietary flow control.

Now that the settings are correct, I saved mine using File | Save As and saved them as kermitsettings.krm for future use.

Test Download of A File

Let’s download a file from the HP3000 to verify everything works.

  • In Kermit for PC, type
:run kermit.pub.sys

HP 3000 KERMIT VERSION: 12 JULY 1994
Works best with PC Kermit V2.31 or newer.
You can now use PARM= on RUN stmt to specify TAKE file.

KERMIT3000>
  • We are going to download a file called dumpmini, so we tell Kermit for HP to SEND that file:
KERMIT3000>send dumpmini.pub.sys
Escape back to your local KERMIT and enter the RECEIVE command
  • The HP is now ready to send the file, so on kermit for PC, we select Kermit | Receive and the transfer occurs:

Note: When you type EXIT into the kermit for HP3000, you will see nothing. This is because Kermit has turned off echo.

On old character mode operating systems such as MPE, every character you type is sent to the HP3000 and then the HP3000 echos it back to the monitor so you can verify it was received properly. On an old 300 baud modem, noise sometimes garbled terminal I/O so this was a way for you to verify your input.

Echo during a file transfer would be bad, so it gets turned off. Oddly, kermit doesn’t turn it back on. No worries, just type ESC+: and echo is turned on. ESC+; turns it off.

Review the Downloaded File

Kermit for PC doesn’t have a way to specify where files are downloaded on the PC. If you manually set the configuration, files will get downloaded to the c:\kermit directory. If you open a settings file (.krm), then the files are downloaded to that directory. Crazy! When I figured this out, I put a copy of my krm file in c:\tmp, so files would download there.

Let’s take a quick look at the file downloaded to verify it looks right. Since I downloaded dumpmini.pub.sys, the file will be found in c:\tmp\dumpmini.pub.sys:

What the??? What are those numbers to the right? Welcome to the age of punched cards.

In MPE, ASCII files can be numbered or unnumbered. Source code for programs were almost always numbered. Most of the computer languages for the HP3000 allowed you to use columns 1-72 for code and then columns 73-80 contained a sequence number. This sequence number came directly from the days of punch cards and was held over on disk files. COBOL was a little different. The sequence number was in columns 1-6, giving you columns 7-80 for the program.

Sequence numbers on punched cards could sometimes be very handy if you dropped the card deck. You could run the cards thru a sorter to resequence the deck. Not that that was a particularly fast operation as you could only sort on one column at a time.

HP editors took sequence numbers into account and would display them in a nicer format:

/t dumpmini
  File numbered
  Record length: 80    bytes
  Number of records: 79
  File code: 0
/l all
    1     !JOB FIELD.SUPPORT,PUB
    2     !EDITOR
    3     S SHORT;AQ
    4                                                       S.O. Ref.#____________
    5
    6                             HP SERVICE REQUEST FORM   SR #_________(HP only)
    7
    8     ************************************************************************
    9     Customer report no.________________                     Date__________

Downloading Multiple Files from the HP3000

You can use kermit’s SERVE mode to download multiple files.

  • On kermit for HP3000, type SERVE:
KERMIT3000>serve
Entering SERVER mode - escape back to your local KERMIT
  • Now, in kermit for PC, select Kermit | Get. This brings up a window where you can type in a file name, or use a wild card such as jobinfo@

Note: In the Get windows, you cannot specify group/account name (e.g. jobinfo@.pub.sys). This means you must be logged into the group where the files reside to use the get command.

MPE’s File Structure

Before we can transmit files to the HP3000, you need to have a basic understanding of the file structure because it is very different from Linux/dos.

In Linux/dos, you only specify if a file is ASCII(text) or binary. Even that distinction is just a convention. In Linux an ASCII file is read sequentially and <LF><CR> indicates the end of the line.

On the HP3000, you specify if the file is ASCII or binary, and the length of each record. You can also specify how many records there are per block, the maximum number of records.

Further, a file must be built via the BUILD command, specifying all of these options before it can be accessed. Sometimes the program will do this for you, but it must be done.

A BUILD command with all options looks like:

                                                         F   BINARY
    :BUILD filereference[;REC=[recsize][,[blockfactor][,[U][,      ]]]]
                                                         V   ASCII

          [;DISC=[numrec][,[numextents[,[initalloc]]]]]

A normal ‘text’ file in MPE (such as for source code) would contain 80 byte fixed length ASCII records. Fixed length records are almost always used. Most editors work better with fixed length records. To build such a file with 1000 records, I would use:

:BUILD myfile;REC=-80,,F,ASCII;DISC=1000

As seen above, text records are normally a fixed length of 72 or 80 bytes. To get a Linux/DOS type file where the records are variable length, you could use:

:BUILD myfile;REC=-254,,F,ASCII;DISC=1000

Using Kermit Options to Specify File Structure Automatically

Fortunately, the writer of Kermit for HP3000 took into account this complexity and came up with a few standard formats you can automatically use:

KERMIT3000>set receive ?

The SET RECEIVE parameter is used to alter the
default conditions regarding file reception.
The various options are:

SET RECEIVE DEVICE
SET RECEIVE FCODE
SET RECEIVE BINARY
SET RECEIVE RECLEN
SET RECEIVE FIXREC
SET RECEIVE BLOCKF
SET RECEIVE MAXREC
SET RECEIVE MAXEXT
SET RECEIVE SAVESP
SET RECEIVE PROG
SET RECEIVE TEXT
SET RECEIVE TXT80
SET RECEIVE BIN128
SET RECEIVE EXPTAB

Before transmitting the file to the HP3000, you can specify one of these options to create the appropriate structure:

  • TXT80 – files are received in ASCII, fixed 80 byte record lengths. The normal format for HP text editors. Lines > 80 characters are truncated! If that is an issue, use TEXT.
  • TEXT – files are received in ASCII, variable record lengths (max 254). If you are sending a PC text file with long line lengths, this is the best format.
  • BIN128 – upload file as binary, variable 128 word (256byte) record lengths. This would allow transfer of binary PC files to the HP3000.
  • PROG – if you are trying to transfer a program between HP3000’s, you would download it from the source HP to the PC in binary form. Then upload it to the destination PC using the SET RECEIVE PROG option so the file is properly setup as an executable file.
  • MAXREC – specifies the maximum # of records. If the default (5000) results in a failure because the file is too small, increase the max using this setting.

Upload a File to HP3000

In this example, I’m going to upload source code for a pascal program that simply prints “Hello World” on my PC to the HP3000, then compile it on the HP3000.

To do the transfer, start Kermit for PC, open the settings file for TCPIP settings, login as manager.sys,tmp (we want the source code in the TMP.SYS group, not PUB.SYS which is meant for system files), and start kermit on the HP3000.

We will use SET RECEIVE TEXT to allow uploading of a normal PC file which may have line lengths > 80 bytes. Finally, tell Kermit for HP3000 to RECIEVE world.tmp:

Now use Kermit | Send to send the source file that is on the PC.

The file has been uploaded properly:

:listf world,2
ACCOUNT=  SYS         GROUP=  TMP       

FILENAME  CODE  ------------LOGICAL RECORD-----------  ----SPACE----
                  SIZE  TYP        EOF      LIMIT R/B  SECTORS #X MX
WORLD             254B  VA           8       5000   1      314  1 32

Because the file is in variable record format (VA as type in above example), I would like to convert it to fixed format using EDIT/3000 so my editor of choice, QUAD, will work.

I use EDIT/3000, which can handle variable length records, to convert from variable to fixed, set the record length to 72, and then keep it as a numbered file. I do this using SET FORMAT=DEFAULT.

I know my longest line is <= 72 bytes. If it were longer, after using SET FORMAT=DEFAULT I could then set the length using SET LENGTH=nn.

:editor
HP32201A.7.16 EDIT/3000 SAT, AUG 24, 1991, 1:57 PM
(C) HEWLETT-PACKARD CO. 1984
/t world
FILE UNNUMBERED
/set format=default
/set fixed
WARNING - 'LENGTH' 254RESET TO 72
WARNING - 'RIGHT' 254RESET TO 72
*** WARNING *** DEFAULT VALUES SET FOR LENGTH, RIGHT, FROM, DELTA, REAR.
/verify all
1 program world;
^(1 )
LINES = 60
POLL = TRUE (I.E. BATCH = FALSE)
REAR = TRUE (I.E. FRONT = FALSE)
DELTA = 1
CURRENT DEPTH = 0, THE DEPTH LIMIT = 10
RIGHT =72
LENGTH = 72
LONG = TRUE (I.E. SHORT = FALSE)
TIME = 50
TOTAL NUMBER OF CURRENT LINES = 8
FROM = 1
LEFT = 1
FIXED = TRUE(I.E. VARIABLE = FALSE)
SIZE = 0
DISPLAY = TRUE (I.E. QUIET = FALSE)
FORMAT=DEFAULT
NO TABS USED
FILES:
WORK: K2361357
KEEP:
TEXT: WORLD.TMP.SYS SAT, AUG 24, 1991, 1:57 PM
JOIN:
/k world2
/e

END OF SUBSYSTEM
:

Here is a look at the cleaned up file, using QUAD:

:t world2

QUAD -- JHK, Quest Software, KWS, Summit Information Systems, June, 1991

/TABS 8,12,16,20,24,28,32,36,40,44,48,52,56,60,64,68,72; T *QTEXT
/T *QTEXT
File numbered
Record length: 80 bytes
Number of records: 8
File code: 0
/l all
1 program world(input, output);
2
3 begin
4
5 writeln('Hello World');
6
7 end.
8
/e

END OF PROGRAM
:

Finally we will compile and run it. For MPE there are 3 steps to go from source to running a program: compile, prep (link in other O/Ses), and run. These can all be combined into a single command, PASCALGO:

:pascalgo world2

PAGE 1 HEWLETT-PACKARD HP32106A.01.32 PASCAL/V (C) HEWLETT-PACKARD
CO. 1985 SAT, AUG 24, 1991, 2:12 PM

0 1.000 0 program world(input, output); 
0 2.000 0 
0 3.000 1 begin 
0 4.000 1 
0 5.000 1 writeln('Hello World'); 
1 6.000 1 
1 7.000 1 end. 
1 8.000 0

NUMBER OF ERRORS = 0 NUMBER OF WARNINGS = 0
PROCESSOR TIME 0: 0: 0 ELAPSED TIME 0: 0: 0
NUMBER OF LINES = 8 LINES/MINUTE = 48000.0

END OF COMPILE

END OF PREPARE

Hello World

END OF PROGRAM
:

Works! My last step for this section is to save the executable program to disk because I’m going to want it again in the next section:

:save $oldpass,worldp
:listf worldp,2
ACCOUNT=  SYS         GROUP=  TMP
FILENAME  CODE  ------------LOGICAL RECORD-----------  ----SPACE----
                  SIZE  TYP        EOF      LIMIT R/B  SECTORS #X MX
WORLDP    PROG    128W  FB           7          7   1        8  1  1

Copying a Program Between Two SIMH HP3000’s

The last procedure I’d like to document is how to move a program file from one SIMH HP3000 to another. In this example, I’ll use the same SIMH HP3000 as source and destination, but you will get the idea. I will copy the WORLDP program I just compiled above.

Get Kermit running on your PC and on the HP3000. On Kermit for HP3000, type

KERMIT3000>send worldp.tmp

On kermit for PC, do a kermit | receive from the menu.

The worldp executable program is now in c:\tmp:

C:\tmp>dir worldp.tmp
Volume in drive C is c180104
Volume Serial Number is D6EF-2751

Directory of C:\tmp

08/24/2019 02:22 PM           1,792 WORLDP.TMP
           1 File(s)          1,792 bytes
           0 Dir(s) 354,643,628,032 bytes free

I will now upload the file to the same HP3000, renaming it WORLDX.

In Kermit for HP3000, type

SET RECEIVE PROG
RECEIVE WORLDX.TMP

In Kermit for PC select Kermit | Send from the menu.

Once done, you can check the download occurred. WORLDX should have the same characteristics as WORLDP:

:listf world@,2
ACCOUNT=  SYS         GROUP=  TMP       
FILENAME  CODE  ------------LOGICAL RECORD-----------  ----SPACE----
                  SIZE  TYP        EOF      LIMIT R/B  SECTORS #X MX
WORLD             254B  VA           8       5000   1      314  1 32
WORLD2             80B  FA           8          8   3        4  1  1
WORLDP    PROG    128W  FB           7          7   1        8  1  1
WORLDX    PROG    128W  FB           7          7   1        8  1  1

Finally run it as a test:

:run worldx

Hello World

END OF PROGRAM

 

Posted in c-retro, Uncategorized | Tagged | Leave a comment

Copy files from an HP3000/XL Computer System to a SIMH HP3000/Classic

In my prior post, Instructions for Emulating an HP3000 with SIMH, my enclosed PDF of instructions discusses getting files onto the SIMH HP3000 using Reflections or creating a SIMH format tape.

Both of these options have limitations if you want to move files from a real HP3000 or a Stromasys VM HP3000.

Keven Miller, of http://www.3kranger.com, gave me a better way. I will document his procedure here.

You are going to need a couple of programs written by Keven to convert files between tape formats.

Installing the Tape Conversion Programs

To handle the tape conversions, you will need 2 programs: tapecpyv and tapesim.

Download the proper File

If you want to transmit the file to your real/stromasys HP3000 via ftp, download taputilt.std.bin.

If you want to transmit the file to your real/stromasys HP3000 via WRQ Reflections, download taputilt.std.wrq.

Uploading tapeutilt.std.bin via FTP

Transfer the tapeutilt file to the PUB.SYS directory of your HP3000. If you have FTP running on your HP3000, this is probably the easiest method:

C:\tmp>ftp hp3000
Connected to hp3000.xxxxxxx.net.
220 HP ARPA FTP Server [A0010A02] (C) Hewlett-Packard Co. 1990
User (hp3000.xxxxxxx.net:(none)): manager.sys
331 Password required for MANAGER.SYS. Syntax: userpass,acctpass
Password:
230 User logged on
ftp> bin
200 Type set to I.
ftp> put taputilt.std.bin taputilt.pub.sys;rec=128,,f,binary;code=store
200 PORT command ok.
150 File: taputilt.pub.sys;rec=128,,f,binary;code=store opened; data connection will be opened
226 Transfer complete.
ftp: 178944 bytes sent in 0.41Seconds 440.75Kbytes/sec.
ftp> quit
221 Server is closing command connection

Uploading taputilt.std.wrq via Reflections

  • Connect to your HP3000 and login as manager.sys.
  • File | Transfer and setup the transfer as follows:

Local name is the file on your PC to be uploaded. Host file name is the name of the file on your HP3000. Make sure you use the WRQ protocol and Labels.

Restore the TAPUTILT Store to Disk File

  • The taputilt file should now be on PUB.SYS:
HP3000  Release: C.65.00   User Version: C.65.00   SAT, JUL  6, 2019,  1:14 PM
MPE/iX  HP31900 C.25.06  Copyright Hewlett-Packard 1987.  All rights reserved.
:listf tap@.pub.sys,2
ACCOUNT=  SYS         GROUP=  PUB     

FILENAME  CODE  ------------LOGICAL RECORD-----------  ----SPACE----
                  SIZE  TYP        EOF      LIMIT R/B  SECTORS #X MX

TAPUTILT  STORE   128W  FB         699   16776959   1     1024  3 32


:
  • Verify tape contents:
:file t=taputilt;dev=disc
:restore *t;@.@.@;listdir
          >> TURBO-STORE/RESTORE  VERSION  C.65.05  B5152AA  <<
                    (C) 1986 HEWLETT-PACKARD CO.

RESTORE  *t;@.@.@;LISTDIR

SAT, JUL  6, 2019,  1:18 PM


MPE/iX MEDIA DIRECTORY

MEDIA NAME        : STORE/RESTORE-HP/3000.MPEXL  
MEDIA VERSION     : MPE/iX 08.50 FIXED ASCII
MEDIA NUMBER      : 1

MEDIA CREATION DATE
FRI, JUL  5, 2019,  6:20 PM

STORE  tape@;*t;show

MEDIA CREATED WITH THE FOLLOWING OPTIONS

MEDIA RECORD SIZE : 32768
INTERLEAVE DEPTH  : 1

FILENAME GROUP    ACCOUNT  CREATOR               MEDIA    SET
TAPECOPY.PUB     .SYS      MANAGER .SYS      >=      1      
TAPECPYV.PUB     .SYS      MANAGER .SYS      >=      1      
TAPESIM .PUB     .SYS      MANAGER .SYS      >=      1      
TAPESIMC.PUB     .SYS      MANAGER .SYS      >=      1      

:
  • Restore Files to PUB.SYS:
:restore *t;@.PUB.SYS;olddate;show;keep
>> TURBO-STORE/RESTORE VERSION C.65.05 B5152AA <<
(C) 1986 HEWLETT-PACKARD CO.

RESTORE *t;@.PUB.SYS;OLDDATE;SHOW;KEEP

SAT, JUL 6, 2019, 1:25 PM


WILL RESTORE 4 FILES ; NUMBER OF FILES ON MEDIA 4

FILENAME GROUP ACCOUNT VOLUME RESTRICTIONS SECTORS CODE MEDIA
TAPECOPY.PUB .SYS DISC :C 192 NMPRG 1
TAPECPYV.PUB .SYS DISC :C 176 PROG 1
TAPESIM .PUB .SYS DISC :C 128 NMPRG 1
TAPESIMC.PUB .SYS DISC :C 192 1

FILES RESTORED : 4

:

The Procedure

In this example, I’m going to move my TREK73 program from my Stromasys VM HP3000 to my SIMH HP3000. Here is the actual file as it exists on the Stromasys VM:

:listf trek@,2
ACCOUNT=  XXXXXXXX     GROUP=  PUB     

FILENAME  CODE  ------------LOGICAL RECORD-----------  ----SPACE----
                  SIZE  TYP        EOF      LIMIT R/B  SECTORS #X MX

TREK73    PROG    128W  FB         516        516   1      528  1  1

Store Files to Physical Tape in TRANSPORT Format

A classic HP3000 can only restore classic formatted tapes which are created using the STORE command with the TRANSPORT option. Unfortunately you can only use the TRANSPORT option when creating a physical tape.

So, if you have a real HP3000 you are going to create a physical tape. For the Stromasys VM we will do a normal store to tape which will create a file in the VMWare VM called /home/a202/ldev7.img.

  • Examine any existing ldev7.img file and move it as necessary. This procedure will overwrite any existing ldev7.img file.
  • Mount the tape using loadtape or online:
:x loadtape 7

LoadTape.A.05
Loading LDEV 7...
Putting LDEV 7 online...
LDEV 7 is (or soon will be) online.

END OF PROGRAM
:showdev 7
LDEV AVAIL OWNERSHIP VOLID DEN ASSOCIATION

7 AVAIL (W) (Nolabel) 1600
  • Set up file equation for tape drive:
:file t;dev=tape
  • Store the file to tape using the transport option:
:store trek73.pub.xxxxxxx;*t;transport;show
MPE-XL Transport Store-Restore, C.45.05 (C) Hewlett-Packard Co., 1988.
STORE TREK73.PUB.XXXXXXX;*T;TRANSPORT;SHOW
FRI, JUN 14, 2019, 3:57 PM

FILENAME.GROUP .ACCOUNT LDN ADDRESS REEL SECTORS CODE

TREK73  .PUB   .XXXXXXX * 1 $0000C537  1     517 PROG

FILES STORED: 1

Convert Physical Tape to SIMH formatted Tape

  • Reload the tape:
:x loadtape 7

LoadTape.A.05
Loading LDEV 7...
Putting LDEV 7 online...
LDEV 7 is (or soon will be) online.

END OF PROGRAM
:
  • The tape now contains trek73.pub.xxxxxxx, stored in a format that MPE/V can read. Now we copy that back to disk using tapecpyv:
:file tapein;dev=tape
:file diskout=trek73s
:tapecpyv td

TapeCopy 3.0s
!! Control-Y enabled
Opening tape "TAPEIN" 
Tape: TAPEIN Recsize 32760 Dev 7
Data: CMSTORE FRI, JUN 14, 2019, 3:57 PM Reel 1 Maxbuf 4096
File: TREK73S.PUB.XXXXXXX Recsize 256 EOF 0 Fcode CMSTR
Limit 16776959
20 blks 10 marks min/max 24/8192 519 diskrec 
Closing files ... done.

END OF PROGRAM
:listf trek@,2
ACCOUNT=  XXXXXXX     GROUP=  PUB     

FILENAME  CODE  ------------LOGICAL RECORD-----------  ----SPACE----
                  SIZE  TYP        EOF      LIMIT R/B  SECTORS #X MX

TREK73    PROG    128W  FB         516        516   1      528  1  1
TREK73S   2504    128W  FB         519        519   1      528  3  *
  • TREK73S now contains a disk image of a classic STORE tape.
  • Now use the tapesim program to convert the classic store tape to a SIMH formatted tape:
:tapesim "trek73s trek73t"
TAPESIM 1.02 Convert STD file to SIMH
Open trek73s read
Open trek73t write
!! Control-Y interrupt enabled.
!! Endian Big
Size 00020700 (519 records)
Posn 00020700 
Closing trek73t
Closing trek73s
:listf trek@,2
ACCOUNT= XXXXXXX GROUP= PUB

FILENAME CODE ------------LOGICAL RECORD----------- ----SPACE----
                   SIZE TYP EOF LIMIT R/B SECTORS #X MX

TREK73    PROG    128W  FB         516        516   1      528  1  1
TREK73S   2504    128W  FB         519        519   1      528  3  *
TREK73T   2508    128W  FB         519       1519   1      768  3  8
  • TREK73T contains the SIMH tape image.
  • Download the TREK73T file from the HP3000. Since mine is running FTP server, I will use FTP:
C:\>ftp hpdude
Connected to hpdude.xxxxxxx.net.
220 HP ARPA FTP Server [A0012H15] (C) Hewlett-Packard Co. 2000 [PASV SUPPORT]
User (hpdude.xxxxxx.net:(none)): dan.xxxxxxx
331 Password required for DAN.XXXXXXX. Syntax: [,]acctpass
Password:
230 User logged on
ftp> bin
200 Type set to I.
ftp> get trek73t trek73t.tap
200 PORT command ok.
150 File: trek73t opened; data connection will be opened
226 Transfer complete.
ftp: 132864 bytes received in 0.09Seconds 1413.45Kbytes/sec.
ftp> quit
221 Server is closing command connection

C:\>dir trek*
Volume in drive C is c180104
Volume Serial Number is D6EF-2751

Directory of C:\

07/05/2019 03:45 PM 132,864 trek73t.tap
              1 File(s) 132,864 bytes
              0 Dir(s) 351,378,993,152 bytes free

C:\>

Restore Files on the SIMH HP3000

Important: The Classic HP3000 RESTORE command can only restore files back to the same group/account they were stored from. Not only must you have the same group and account, but the user that created the original file as well.

  • Make sure you have the appropriate account structure implemented on the SIMH HP3000 before attempting to restore.
  • On the SIMH HP3000, attach the file to the tape drive:
<control-E>
Simulation stopped, P: 071264 (PAUS 0)
sim> attach -r ms0 c:\trek73t.tap
MS: unit is read only
Tape Image 'c:\trek73t.tap' scanned as SIMH format.
contains 132536 bytes of tape data (20 records, 8 tapemarks)
136 bytes of unexamined data remain in the tape image file
sim> go
15:51/10/Vol (unlabelled) mounted on LDEV# 7

:
  • Now restore the file to the SIMH HP3000:
:RESTORE *T;@.@.XXXXXXX;OLDDATE;SHOW;KEEP
?15:56/#S3/22/LDEV# FOR "T" ON TAPE (NUM)?
=REPLY 22,7
FRI, JUL 5, 1991, 3:57 PM

FILES RESTORED = 1

FILE .GROUP .ACCOUNT LDN ADDRESS

TREK73 .PUB .XXXXXXX 1 %603300

FILES NOT RESTORED = 0

:LISTF TREK73,2
ACCOUNT= XXXXXXX GROUP= PUB
FILENAME  CODE  ------------LOGICAL RECORD-----------  ----SPACE----
                  SIZE  TYP        EOF      LIMIT R/B  SECTORS #X MX

TREK73    PROG    128W  FB         516        516   1      517  1  1

:RUN TREK73

TREK73! DO YOU WANT INSTRUCTIONS ? N
CAPTAIN: MY LAST NAME IS

 

 

Posted in c-retro, Uncategorized | Tagged | 2 Comments

How to Keep a Bolt from Falling out of your Socket Driver (Petroleum Jelly Bolt Holder)

Had to change the EGR valve in my diesel. Was reviewing a video on how to do this when the guy showed a totally cool ‘tip’ on how to keep bolts (or nuts) in a socket driver. I thought this was so cool I googled it and didn’t see anyone else discuss the tip, so I’ll post it myself.

This has been a forever issue for me. I’ve lost more bolts into my engine compartment than I can even remember. Without fail, they lodge somewhere deep where I cannot see them or get them. There must be a Murphy’s Law on this.

I’ve got some grabbers that work on tiny parts and my small drivers are usually magnetized, but larger bolts using my 1/4″ tools have always been problematic.

The guy’s tip is super simple: stick the bolt head in petroleum jelly. That will hold it in the socket. If that doesn’t have enough grip, stick the socket in. That should get you some reasonable holding power.

To give FordTechMaculoco credit, here is his video:

Posted in c-Misc | Tagged | 1 Comment

Instructions for Emulating an HP3000 with SIMH

The HP3000  minicomputer was the primary system I programmed from 1978 until 1993 when I moved into networking. I have so many fond memories of that system. I knew the hardware and software backward and forward. I was fortunate enough to have access to the operating system (MPE) source code so I really knew what made it tick. Let’s just say I was a serious HP3000 nerd!

Here is the HP3000 Series III that I used in the 1980’s:

The No Smoking sign was NECESSARY (and often ignored). We had several programmers that smoked like chimneys and they had no trouble sitting at the console while puffing away.

Any way, SIMH has recently added the HP3000 Classic architecture (16 bit stack-oriented) to their list of simulations.

I slogged through building a system and then adding several programs that are really necessary to use it such as PCLINK and QUAD.

Below is a link to a zip file that is my running HP3000 environment. You just need to unzip it into c:\hp3000Sim, and run the hp.bat file to bring the simulation up.

You will also find my HP3000 simh setup notes.pdf which explains how I made the changes I made (such as getting the PCLINK file transfer program installed). It also includes some usage notes and notes about the games that I installed as well.

http://www.xyfyx.com/files/hp3000Sim.zip

Jul 2019 Update:

You find an alternative method of transferring files from a real HP3000 to the SIMH HP3000 here:

Copy files from an HP3000/XL Computer System to a SIMH HP3000/Classic

 

Posted in c-retro | Tagged | 10 Comments