Photo of the component side of
the board.
I tested all four of the capacitors from
C7 through C10, and found they all had a good value (about
1100uF). Their ESR all tested to be ~0.05 ohms, and
their insulation resistance was in the MegOhm range. As
a result, I judged them all undamaged and installed them back
into the board.
On power up, the unloaded power supply
board still produced a soft ticking noise, but no burning
smell. I reasoned that the Switched Mode Power Supply
may need a minimum load, and was perhaps shutting down due to
lack of load. The voltages I measured on the output
connector was as follows. Top reading is on the left
most terminal:
- 4.8
- 4.8
- 4.8
- 4.8
- Return / ground
- Return
- Return
- Return
- 3.5V
- Return
- -5
- Return
- 12V
- Return
- -12V
- Return
- 10.7V
- -5.2V
- 11.2V
- Return
I then powered down and plugged in the
scope. On subsequent power up, success! The fan
spun up and the passed self-test. I then reinstalled the
disk drive and the cover and the test after that the system
worked normally.
Transferring
Data
The analyzer has a 25-pin female RS-232
port in the back, and I decided to see if I could transfer
data gathered by the analyzer for further processing on a PC.
With some experimentation I found out that I could
capture the data, as many as 1024 samples with a single pod.
Adapter cable information is below.
| Male 25 pin D (LA) |
Female 9 pin D (PC) |
Function
|
| 2 |
2 |
* Data to PC >
|
| 3 |
3 |
* Data to LA <
|
4
|
7
|
RTS >
|
5
|
8
|
CTS <
|
6
|
6
|
DSR <
|
| 7 |
5 |
* Return Ref
|
8
|
1
|
DCD <
|
| 20 |
4
|
DTR >
|
Adapter to connect the serial
output to a PC.
">" are data to PC, "*" are for minimal interface.
(Ref: page 3-3 of
programming
manual).
My notes on setting this up (on Logic Analyzer):
- I/O -> I/O Port Configuration.
- Use 9600,8,N,1 speed
- In "Printer
Information", Select "Alternate"
- Setup LA for "State"
and "State Listing" display.
- I/O -> Print
All. Then "Select"
- You can hit
"Stop" to Halt
Example capture stream with Hyperterm:
PIA
- STATE
LISTING
Label >
R/_W
RS DATABS
SPARE
CS
Base >
Symbol Bin
Hex
Bin
Hex
+0000
READ
01
00
1
5
+0001
WRITE
01
00
1
5
+0002
WRITE
00
7F
1
5
+0003
WRITE
01
34
0
5
+0004
READ
00
00
0
5
+0005
WRITE
00
00
0
5
+0006
READ
11
00
0
5
+0007
WRITE
11
00
0
5
+0008
WRITE
10
FF
0
5
+0009
WRITE
11
34
0
5
+0010
READ
10
00
0
5
+0011
WRITE
10
00
0
5
The above is a capture of the pins on a PIA on a System 9 board
upon startup.
Floppy Drive Emulation
Being mechanical, the floppy drive has
always been a concern for me. In July 2024, I started
having problems with reading a few of the disks that have
always worked fine. The original floppy is the Sony 3.5"
MP-F52W-30 that spins at 600 rpm and is Double Density
(DD). I found out that there are a few floppy drive
emulators and the one most often used and available for a low
price on Amazon was the
Gotek
SFR1M44-U100.
One objective I had was to figure out a way to have _both_ the
floppy and the Gotek connected, and switch manually from one
to the other. In this manner, I could copy over all the
configuration and setup files that I had on my floppies.
Fortunately, these drives come with enable lines (called Drive
Select in the manual), and my intent was to use these and a
manual toggle switch to go from one to the other.
I worked on my own at first and tried the factory firmware
that comes on the Gotek. That did not succeed and the
Analyzer did not recognize the drive. It would beep
after power up with a Disk Error. In my research I found
that there are some firmware alternatives such as "HxC" that
are developed by private individuals. And although there
were no details, someone had
interfaced
an HxC to a 1652B in the past.
HxC has a powerful firmware customizer that allows you to put
in all kinds of options to modify the drive behavior, which is
useful as the Sony drive is not exactly the common PC
format. Despite my best efforts, the closest I got was
to be able to boot off the floppy, switch to the Gotek, and
format the Gotek. But copying files to it still did not
work. In desperation, I reached out on the
HxC user
forum, and
Jeff
the administrator was able to help me solve the
problem. The exchange is documented in
this
thread. In the end, the problem was found to be
specific to the MCU chip on my Gotek (QFN32 version of the
AT32F415). Jeff had to move the Disk Change line to an
unused pin, and I was finally able to use the Gotek to boot
from and store my user files.
To replicate this setup, you will need to modify three areas:
1) Ribbon Cable, 2) Gotek, and 3) the USB stick.
1. Preparing the ribbon cable
Per page 12 of the datasheet (link below), we can see that the
power feed is integrated onto the 34-pin drive
connector. The first thing I had to do was modify the
ribbon cable to interrupt and intercept the power. I did
this by purchasing a
34-pin
male-female extender, and then pressed on a new 34-pin
IDC female connector into the middle of it, which will be the
tap for the Gotek.

The "Y" cable made from a male-female 34-pin extender.
The following mods were performed:
- 5V was interrupted and wired past the middle
connector. Power was split off for the Gotek
(red).
- 12V was interrupted and wired across to supply the
floppy drive (yellow wire).
- Pin 1 (Disk Reset) was interrupted and wired across
the Gotek. Since the Gotek grounds pin 1, it
disrupted eject detection.
- The bypass line for Pin 1 is connected to Gotek Pin
4. On the board, this line goes to J8-JK
terminal.
- Pin 10 (Drive Select 0) was interrupted and used to
select between the two drives. Pin 10 of the
desired drive is grounded by a toggle switch to select
it. The Logic Analyzer does not actively toggle
the Drive Selects and always has pin 10 low.
- Ground/Return (three lines) were tapped for the
Gotek power connector (black).
- I also added a second female 34-pin IDC connector so
I could monitor the signals with another Logic
Analyzer (Monitor).
The technique I used was to gently use a razor to part two
conductors and then observe closely how they separate to
make sure you don't cut into the insulator. The
above interrupts 12 of the 17 conductors of one row.
It looks a bit messy but doing it this way is the best way
I know of doing this many splices.
The Monitor connector above was very useful in allowing me
access to figure out why the initial code loads were not
working. I connected a second logic analyzer to this
location to monitor the control signals.

Example waveforms showing signals on the ribbon
cable. It provided Jeff from
HxC insight into what the interaction was with his code
and the Analyzer.
More in the HxC forum thread.

Two drives connected to the Logic Analyzer.
In the image above, you can see the two drives plugged in.
2. Preparing the drive
I followed the instructions on the HxC site to
program
a bootloader onto the chip, and programmed
custom
firmware from the HxC site for the drive. This
writes over the factory firmware. I then followed Jeff
instructions and wired Pin 4 on the ribbon to an unused MCU
input. This line does not exist in a normal PC disk
drive but is used by the Analyzer to know when a new floppy
has been inserted. The only other mod is to insert the
S0 jumper to connect the above signal through. There is
a file package in the links below with more details.
3. Preparing the USB stick
I formatted a USB stick with FAT32 and copied over the
configuration file (.CFG) and the .HFE file that Jeff sent me
to it. The bootable HFE file has the same revision of
System file that I have (rev 2.11), but this also includes the
"Inverse Assembler". I have not encountered this before
and do not know what that is. But I was able to use this
system image just fine after deleting the Assembler
files. Each HFE file forms an image of a floppy, and you
can have many in one USB stick. The images are selected
by pushing the black buttons on the Gotek and the numerical
display will show which images the Analyzer will see.
This is super convenient compared to swapping out
floppies. The HFE files can also be backed up on the
PC. In my situation, disks 0 and 1 are boot images, disk
2 and 3 has my Logic Analyzer configuration files. Disk
4 boots the system up in scope mode, and Disk 5 has scope mode
configuration files.
In use
The image below shows the finished single drive configuration
after the development and the copying over of the
configuration files. I also shot a video but of the dual
drive configuration to show the disk switching in action.
LIF File Tools
The individual scope configuration files on
the floppy disks have the
.LIF format.
These are encapsulated in the .HFE file on the USB stick, each
representing a floppy image.
A
user on the HXC forum was kind enough to develop some
python code to parse the files and allow individual
manipulation of the configurations using
hxcfe.
First, convert the .HFE into combined .LIF volume (Windows
command line):
hxcfe -finput:filename.hfe -conv:RAW_LOADER -foutput:filename.lif
Then with this
python program, you can to various manipulations on the
LIF, such as directory listing, extracting or inserting one
scope configuration, etc.
python lifutils.py dir filename.lif
python lifutils.py rm filename.lif NAME_TO_DELETE
python lifutils.py get filename.lif NAME_TO_FETCH
python lifutils.py put filename.lif NAME_TO_UPLOAD
python lifutils.py pack filename.lif
Finally convert the .LIF back into an .HFE with this
XML file so that the scope can read and use them.
See here
for the thread on this topic.
Software Capture of Screen Print
The other mechanical input/output of this
old device is screen captures. It supports printing via
serial (or HI-IB) to a Thinkjet printer. I decided to
try and see if I could convert this stream to an image.
I first started with the capture of the serial stream and
pulled the result up on my Neo Hex Viewer. From what I
could see on page A-2 of the
Thinkjet
Owner's Manual, the graphics commands are preceded by 6
byte header consisting of "<ESC>*b74W" (hex
1b,2a,62,37,47,57). I could see these packets in the
file, but the packet is a lot longer than expected and
interspersed with additional random bytes. See below,
with the benefit of hindsight, I know the first (top) line of
the image is a line of black pixels. So the packet
should only contain 0xff bytes. But there are many
characters interspersed.

Hex view of one packet in the captured stream.
Looking at the viewer above, you can see
the packet header in the top-left. After the 'W' is
the start of the pixels (top row of image), and they should
all be 0xff. Counting the number of good 0xff bytes,
we have 74 (decimal). That matches the expected
quantity in the packet header. Total length of the
packet is 192 (decimal), or 118 extra bytes.
The first rendering of this stream produces the image
below. You can see these columns of garbage data
breaking up the image. What is interesting is that
these are perfect columns. So they must be produced by
the Logic Analyzer and not the PC or cable doing the
capture. I initially only had a three wire interface
(marked by * in the table above), and added the handshake
lines. But that did not resolve the issue. I
found that using "None" or "XON/XOFF" for flow control
produced the same results.

Initial result of converted stream.
I decided to add a filter to the software
that notes which byte locations in the first packet do not
contain the 0xff, and since they are perfect columns, the
same bytes in the next packet are also ignored. By
doing this I could filter out the bad columns. The
result is below. What is nice about this algorithm is
that it can also handle a stream that is not corrupted.

Successful conversion to bitmap of stream. The image is
600x400.
Compare to a
photo.
As for Logic Analyzer setup, I found that
configuring for Thinkjet or Quietjet produced the same
files. Using Laserjet would produce packets that are 87
bytes of payload (compare to 74 above). I did not parse
them. Setting to "Alternate" produced a file without
discernible headers, but I could see a similar corruption
interspersed between the graphics data. Setting width to
13.5" or 8.5" did not affect the data file that I could
see. I also found that printing faster than 2400 baud
would cause data corruption. This unfortunately means
each print takes over two minutes. An example of running
at 19200 is shown
here.
Incidentally, during the writing of the conversion program, I
needed a bit of software to produce a bitmap file. I
would have needed to find out the convention and figure out
how to write out an pixel array to file, etc. Instead of
that I decided to use ChatGPT to write this code block for
me. I simply used the prompt "
simple
bitmap generator C code", and it produced code that
worked immediately. Further use showed a small error in
the ordering of the RGB bits in the code, but I was surprised
how easy it was to do it this way.
Update. I decided to use my scope to look at the RS232
stream to try and explain the errors when transferring at high
baud rates. To my surprise, I saw no issues with the
waveform. The transitions were sharp and there was a big
open eye. This made me wonder if the problem was related
to the non-ASCII data being transferred. I decided to
switch to a USB RS232 device and that actually made the
problem worse. The stored files were much larger and
many of the packet headers were now corrupted. I then
used a
Sena
SS100 serial to Ethernet adapter. To my surprise,
the captured files were much smaller (35Kbytes) and had no
corruption. So in the end, it appears that my
conclusions were incorrect and the high rate errors and bad
columns were related to the receiver and not the Logic
Analyzer. I did not modify my converter app as it
handles the clean files just fine. Another data point is
that I have in the past been able to transfer many kbytes of
data when in State mode, but that is almost all ASCII type
data. This screen print is binary in nature.
A
zip file
of the Bitmap converter can be downloaded with the following
files:
- cap.bin - Raw captured stream from HP1652B (with column
issue).
- print2bmp.cpp - source code
- print2bmp.exe - console app to convert above capture to
bitmap
Low Cost Alternative
During the construction of the
antenna compass
project, I wanted to be able to have the SPI stream from the
3-axis magnetometer automatically decoded into bytes and whole
messages. I found an inexpensive logic analyzer unit
from Sparkfun for less than $30. The really powerful
feature is serial stream decoding with the PulseView software
package, and many protocols have been contributed by the
community including SPI and UART. I suspect this unit is
a clone of a
Saleae
product as the PulseView configuration has that name.
This unit features an 8-channel input and it comes with a
ribbon pin header. I arranged the 8 inputs in the same
order as half of the
HP header
so that the two can be interchanged.
Low cost logic analyzer with RS232 breakout
board (top).
PulseView with SPI interface decoded.