• HP 4957 Success!

    David Kuder12/30/2018 at 05:36 0 comments

    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.

  • Replicating Success

    David Kuder12/25/2018 at 07:10 0 comments

    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.

  • GitHub Repo now live

    David Kuder12/25/2018 at 01:53 2 comments

    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!

  • The AHCS Christmas Party

    David Kuder12/18/2018 at 04:38 0 comments

    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:

    • Figure out how to get the 80C88 in charge of the disk drive to do useful things...  Like maybe loading and saving data files for us?
    • Asteroids and other games ported from Texas Instruments calculators... (Tetris port came from here)
    • Figure out what all these extra CPUs/MCUs are doing (There's 5 processors with 4 different instruction sets!)
    • Video hacking! - Is there a way to change the CRTC parameters to output a different resolution like the 4957?  Can we lock onto the video refresh and race the beam for doubling or quadrupling the vertical resolution?
    • GPIO/USART expansion - Making our own PODs
    • CP/M with HP 120 (9122) compatible disks...

  • The Keyboard Matrix

    David Kuder12/03/2018 at 05:23 0 comments

    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.

  • Basic-80

    David Kuder11/30/2018 at 06:29 0 comments

    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.

  • The story so far...

    David Kuder11/25/2018 at 15:13 0 comments

    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.