Reverse engineering and building applications for the HP 4952A Protocol Analyzer
To make the experience fit your profile, pick a username and tell us what interests you.
We found and based on your interests.
So not only does Basic-80 run on the HP 4952A, success on the HP 4957A as well!
The two models share a quite a bit hardware wise, with the ‘57 having some apps built in, and some of the POD hardware built-in as well. My buddy Flash was kind enough to provide a ‘57 for further testing and fun.
Over to the left in the links section you can find links to various pages on the HP Computer Museum to download the HP utility software for downloading applications to the 495X Protocol Analyzers, various software that came with the PODs, and general information that is useful for replicating my success.
5XREMOTE.EXE is a 16-Bit DOS application for transferring files back and forth, and doing various remote control tasks. This software works fine in DOSBox if you set your serial port up using directserial in the dosbox config file. While the 4952 supports 19200 baud for the remote connection, the DOS software only appears to support upto 9600 baud.
Hey folks, I've uploaded a good portion of the code I've got so far to GitHub here. Some / many of these examples are buggy or very limited in scope. If you have a different firmware revision, many of the examples will surely crash as I've not implemented anything to generate the extern table for the runtime linker yet. Yep, HP had the foresight to implement dynamic linking on the 4952 so you could run apps compiled for a different firmware build.
The basic sources included don't currently compile as they are based around a different keyboard routine I've not posted yet, but that should change in the next couple days.
Merry Christmas friends!
We had great fun at the 2018 Atlanta Historical Computing Society Christmas Party turned Hackathon for the HP 4952A. After quite a bit of poking and prodding, BASIC-80 with a simple keymap was rendered working. Without a full understanding of the MMU and which banks are usable there was only just enough room to have shifted and unshifted keymaps working with the terribly hacked together keyboard routines. We however were able to stuff a few tiny programs in the 8KB of usable memory while playing around and letting folks try their hand at typing on the two dozen or so builds. There is a somewhat working Tetris port, the input routines, game logic, and text output is working, but I've got some work to do on the "graphics" glue. There are some useful characters in the font which allow turning the 32x16 text display into a 64x32 graphics display which will come in handy for rendering the playfield.
Interesting things to explore in the near future:
I decided the easiest way to find the keyboard I/O was to do a read scan of all the I/O addresses I found the HP firmware to be reading... This did the trick!
Keyboard I/O is at port $D0, writing to this port outputs the row selects, and reading from it gives the matching columns.
Some trial and error later, we have our keymaps:
_keymatrix_unmodified: defb 080h, '^', ']', '\\', '[', 'z', 'y', 'x' defb 'w', 'v', 'u', 't', 's', 'r', 'q', 'p' defb 'o', 'n', 'm', 'l', 'k', 'j', 'i', 'h' defb 'g', 'f', 'e', 'd', 'c', 'b', 'a', '@' defb '/', '.', '-', ',', ';', ':', '9', '8' defb '7', '6', '5', '4', '3', '2', '1', '0' defb ' ', 0feh, 0fdh, 00ah, 0f9h, 0f8h, 0f7h, 0f6h defb 0efh, 0e5h, 0e4h, 0e3h, 0e2h, 0e1h, 0e0h, 0ech _keymatrix_shifted: defb 080h, '~', '}', '|', '{', 'Z', 'Y', 'X' defb 'W', 'V', 'U', 'T', 'S', 'R', 'Q', 'P' defb 'O', 'N', 'M', 'L', 'K', 'J', 'I', 'H' defb 'G', 'F', 'E', 'D', 'C', 'B', 'A', '`' defb '/', '>', '=', '<', '+', '*', ')', '(' defb 027h, '&', '%', '$', '#', '"', '!', '_' defb ' ', 0feh, 0fdh, 00ah, 0f9h, 0f8h, 0f7h, 0f6h defb 0efh, 0ebh, 0eah, 0e9h, 0e8h, 0e7h, 0e6h, 0ech _keymatrix_control: defb 080h, 01eh, 01dh, 01ch, 01bh, 01ah, 019h, 018h defb 017h, 016h, 015h, 014h, 013h, 012h, 011h, 010h defb 00fh, 00eh, 00dh, 00ch, 00bh, 00ah, 009h, 008h defb 007h, 006h, 005h, 004h, 003h, 002h, 001h, 000h defb 01fh, 0ffh, 0ffh, 0ffh, 0ffh, 0ffh, 0ffh, 0ffh defb 0ffh, 0ffh, 0ffh, 0ffh, 0ffh, 0ffh, 0ffh, 0ffh defb 0a0h, 0feh, 0fdh, 00ah, 0f3h, 0f2h, 0f5h, 0f4h defb 0edh, 0e5h, 0e4h, 0e3h, 0e2h, 0e1h, 0e0h, 0eeh
I've got a basic routine down that scans the matrix, and some iffy getkey routines that need better debouncing / key-release handling. This is almost to the point of making Basic-80 usable (though without serial or disk I/O, it is of limited use) and makes some basic games playable.
So, I've gotten Microsoft Basic-80 running, but as I've not found the keyboard, serial, or disk I/O yet, all it can do is proudly proclaim that it has 32KB of free memory at it's disposal.
Work began shortly after acquiring the HP 4952A on November 10, 2018. The HP Computer Museum has many great resources on these Protocol Analyzers in the 495x series, including the 4952A. There we can get some disk images (unfortunately in TD0 format) with most of the software and examples HP released. The service manual (with schematics) isn't available from anywhere I've found - however the 4951C service manual is available.
With this in hand, some examination of the boards, and dumping of the ROMs we can confirm that there are significant similarities between the models. Eventually I would love to have full low-level documentation on the IO & Memory maps.
At this point I have deciphered the menu data formats, the runtime linker used in HP's applications, and how to do some basic text output.
Create an account to leave a comment. Already have an account? Log In.
Another issue - My 4951 doesn't want to execute your apps - somehow it detect compatibility and saying "application is not compatible with 4951". Hmmm...
Already changed all 4952 to 4951 but this is not enough :)
next stage - to disassemble binaries from floppy disk and try to understand what a mess
How did you upload your version of Basic to the system? I am looking to try and replicate your success, but am not sure really where to start
Can anyone help me.
I have old DOS utility software as 5xdir.exe, 5xload.exe, editmenu.exe, editeve.exe, data2eve.exe, but i dont know how I could exmaine the data. If I remenber right there was some software which read eve-file and could either print the data or store it into a text-file.
Can anybody helpm me.
br
Matti
If anyone in France is interested, or outside, there is one for sale for 40 euros plus postage on leboncoin dot fr sales site, titled as "HP18179A Protocol Analyser Computer"
I don't know the seller, so can't garantee its working condition.
After reading this I impulse bought a 52 as a cute retro terminal for a number of SBC projects I have. But when it arrived no floppies and no POD. I checked the 79 schematics but rather complicated...
The POD interface looks relatively simple if you eliminate stuff you don’t strictly need. An RS232 voltage shifter is really the only thing you *need*.
There is another ZIP with the 4957PC files, which are basically just the contents of the TD0 images.
Have you found schematics for the 4952A? I would like to build an RS422 pod for mine.
Some pod schematics can be found on the HP Computer Museum site under the 4951A technical manual. Pods are shared across the 495x line, though the 4957 will prefer it's internal interfaces to external pods. An eventual goal is to document the pod interface fully, finding out where all the PIO/SIO chips are in the i/o map. I want to build a simple joystick interface for Atari style controllers that directly connects to the pod interface (insanity, I know).
Thanks, I found schematics for the pods as you described!
We started working on the same project a few weeks apart! I got a 4952A for Christmas and started with a full teardown and trying to figure out its memory map.
We should pool our resources!
https://hackaday.io/project/163027-hp-4952a-turned-general-purpose-cpm-machine
Become a member to follow this project and never miss any updates
By using our website and services, you expressly agree to the placement of our performance, functionality, and advertising cookies. Learn More
I'm trying to play tetris on my HP4195C. But I can't compile the sources from repo - All .asm files except tetris.asm were successfuly conveted to .app
I also noticed that tetris.asm file seems to be just disasm as other files hase some include options.
Could you help with file compilation?