• Please review our updated Terms and Rules here

HP 1650/1651 Logic Analyzer Disk Images

Thanks! I think this page gives all the information I need.

The LIF file system looks simple : no sub-directories and no file fragmentation.

I've been working on a tool to extract data from floppy disk images (for the floppies I was dumping). It's still in development and I'll add LIF to it.
Until know, I did something for DOS (non standard), CPM, UCSD Pascal and Prologue (French OS from early 80's). In term of complexity, LIF looks similar to USCD Pascal.
 
Last edited:
Not a 1650 question, strictly, but one of my "bucket list" items is figuring out the file format (DOS filesystem) for a 1663 logic analyzer. Anyone have a clue?
 
I also have a HP 1661A, do you think this is similar to the 1663 ? Can you point to a 1663 floppy image that has the DOS file-system ?
What is wrong with these floppies, they can't be read by a PC ?
 
Not a 1650 question, strictly, but one of my "bucket list" items is figuring out the file format (DOS filesystem) for a 1663 logic analyzer. Anyone have a clue?

Do you mean the format of the internal hard drive of the 1660C / 1660E series?

(The 1660A / 1660C / 1660E series floppy format should be standard DOS, and also supports LIF).
 
I just did the dump of the system floppy I have for the HP 1661A (that is also for the 1663A). It is given as a MS-DOS floppy.
The file system is indeed a DOS file system. I can open the generated .img file in WinImage for instance.

The structure is the following:
Code:
DOS floppy summary:
 - sectorSize_ = 512
 - numBootSectors = 1
 - fatNumSectors = 9
 - fatNumReplications = 2
 - rootDirNumSectors = 14
 - numSectorsPerCluster = 1
  - [volume] A166X

What is strange is more in the files themselves, because each sector containing a files starts with '00 FE' !
It means that when you extract files, you get '00 FE' every 512 bytes.

I assume some post-processing is needed to get the actual file content.
 
Do you mean the format of the internal hard drive of the 1660C / 1660E series?

(The 1660A / 1660C / 1660E series floppy format should be standard DOS, and also supports LIF).
No, I recognize the MSDOS file system on the disks. What is the internal structure of each file type?
 
No, I recognize the MSDOS file system on the disks. What is the internal structure of each file type?

Well that's more complicated.

There are system files, which I assume are 68000 executable code in some unknown file structure. I don't know if anyone has tried to reverse engineer those and gotten anywhere. Maybe a standard pSOS file format, but unfortunately pSOS documentation might not exist anywhere. I think Al has looked and never found any.

There are configuration files, which might be easier to reverse engineer, and maybe people have already done that.

There are saved module capture files. Maybe some people have tried to reverse engineer those and gotten somewhere.

And there IA files, which are the .R file output of the 10391B tool, wrapped in a simple file format. I understand the IA file format well enough (but not off the top of my head) to turn IA files back into equivalent 10391B .S file source code.
 
Here is the image of the MS-DOS HP 166XA OS floppy I have (I've put IMD and IMG files).

When you look at sectors containing file data, there is "00 FF" every 100h bytes.
I looked in the LIF floppy of the 1650A and it is the same.

It's like if files were split in chunks of 256 bytes, each with a header (or marker), and maybe with the CRC too somewhere ?
 

Attachments

I know we're deviating a little bit from the topic at hand, but I am highly interested in understanding the (similar sounding) format I've seen with my HP 16500B/16556D logic analyzer capture files. I love this analyzer, but it is frustrating trying to navigate the traces on the LA itself, where it can take many seconds to redraw the screen. I'm sure it was well worth the wait in the 1990s, though.

I pulled the `._d` file and noticed it was actually an LIF file system, encapsulating the single file `WS_FILE.#c123`. After examining this oddly named file, I noticed it started with `00 FE`, a pattern which continued regularly throughout the file. Realizing that it reflected the length of the bytes to follow up until the next 16-bit length specifier, I wrote a basic parser extract the data from these packets, where I then could proceed with identifying the data I actually needed to extract (in this case, address and data from an NEC V40).

If anyone wants to work together to document the capture files for various modules, count me in. Here's hoping all of the LA modules are highly similar in capture file format. I broached this with the HP test equipment mailing list and didn't get much traction.
 
I pulled the `._d` file and noticed it was actually an LIF file system, encapsulating the single file `WS_FILE.#c123`. After examining this oddly named file, I noticed it started with `00 FE`, a pattern which continued regularly throughout the file. Realizing that it reflected the length of the bytes to follow up until the next 16-bit length specifier, I wrote a basic parser extract the data from these packets, where I then could proceed with identifying the data I actually needed to extract (in this case, address and data from an NEC V40).

There is something similar going on with the wrapper that gets added around IA .R files when they go through the download process (MMEM:DOWNLOAD -15614) to the analyzer. The original .R file gets chunked up into 0x00FE length records, in addition to having a descriptive file header prepended to it.
 
I have a 1670G, and its roms and other bits are LIF files internally. they start as "HFSILF" and have at 0x100 "WS_FILE", and can see the 00 FE records.
 
Here is the image of the MS-DOS HP 166XA OS floppy I have (I've put IMD and IMG files).

When you look at sectors containing file data, there is "00 FF" every 100h bytes.
I looked in the LIF floppy of the 1650A and it is the same.

It's like if files were split in chunks of 256 bytes, each with a header (or marker), and maybe with the CRC too somewhere ?

Oh, now I see what you mean. While I was aware of that 254-byte / 0x00FE length record chunking for the IA files, I never noticed that was also going on with the system files. (I originally though you meant every other 256 bytes in a file was filled with repeating 0x00 0xFE bytes, not just a single two byte occurrence).

HP-166XA-OS_SYSTEM.png
 
My 1663 inquiry comes from setting up a configuration, recording waveforms and saving the result. I'd like to be able to understand the format of the save file--or at least export the waveform and trigger/timing data. I suspect that the information is also applicable to the LIF format disks.

I dislike setting up the LA for a complicated trace punching buttons, moving cursors, etc. It would be nice if I could do it offline on a standard PC. It's such a drag that I'll sometimes put the LA back on the shelf and grab my oscilloscope and probe things out the hard way.
 
Isn't there a way to grab data from the HP logic analyzer and store it on a PC thanks to a HP-IB link ?
This could prevent the problems related to storing data on the floppy disk.
I'm not familiar yet with HP-IB, but this is something I'm starting to investiguate.
 
Isn't there a way to grab data from the HP logic analyzer and store it on a PC thanks to a HP-IB link ?
This could prevent the problems related to storing data on the floppy disk.
I'm not familiar yet with HP-IB, but this is something I'm starting to investiguate.

Grabbing the acquisition data by itself over the GPIB interface should be reasonably straightforward after a GPIB interface connection and programming environment is all set up and working.

Postprocessing the acquisition data in some useful way after it is transferred to a PC might be a lot more complicated.

The details may vary slightly from one logic analyzer mainframe and acquisition module to another, but they should roughly be the same as what is documented in this 1660A series specific programming manual:

Agilent Technologies 1660A/AS-Series Logic Analyzers
Programmer’s Guide
Publication number 01660-97033
Second edition, January 2000
https://www.keysight.com/us/en/assets/9018-40441/programming-guides/9018-40441.pdf

Page 26-2

Introduction
The DATA and SETup commands are SYSTem commands that allow
you to send and receive block data between the 1660-series logic
analyzer and a controller. Use the DATA instruction to transfer
acquired timing and state data, and the SETup instruction to transfer
instrument configuration data. This is useful for:

• Re-loading to the logic analyzer
• Processing data later
• Processing data in the controller

This chapter explains how to use these commands.
The format and length of block data depends on the instruction being
used, the configuration of the instrument, and the amount of acquired
data. The length of the data block can be up to 409,760 bytes in the
1660A.

The SYSTem:DATA section describes each part of the block data as it
will appear when used by the DATA instruction. The beginning byte
number, the length in bytes, and a short description is given for each
part of the block data. This is intended to be used primarily for
processing of data in the controller.


Page 36-17
Programming Examples
Transferring the logic analyzer acquired data

This program uses the SYSTem:DATA query to transfer acquired data to
your controller. It is useful for getting acquired data for setting up the logic
analyzer by the controller at a later time. This query differs from the
SYSTem:SETup query because it transfers only the acquired data.

You should always precede the SYSTem:DATA query and command with the
SYSTem:SETup query and command if the acquired data depends on a specific
configuration. If you are only interested in the acquired data for post
processing in the controller and the data is not dependent on the configuration,
you can use the SYSTem:DATA query and command alone.
 
I dislike setting up the LA for a complicated trace punching buttons, moving cursors, etc. It would be nice if I could do it offline on a standard PC. It's such a drag that I'll sometimes put the LA back on the shelf and grab my oscilloscope and probe things out the hard way.

Sometimes it can be easier and quicker to edit a text file with all of the configuration setup command and send that to the analyzer through the GPIB, RS-232, or Ethernet interface than it would be go through all of the button presses on the analyzer front panel. And also quicker to fix any mistakes or make any changes by editing and resending the command file.

For example, here is an example command text file for setting up a Z-80 CPU state trace, which would be tedious to set up through the front panel:

Code:
:SELECT 1
:MACHINE1:NAME 'Z80'
:MACHINE1:ASSIGN 1,2,3,4
:MACHINE1:TYPE STATE
:MACHINE2:TYPE OFF
:MACHINE2:ASSIGN NONE
:MACHINE1:SFORMAT:CLOCK1 SLAVE
:MACHINE1:SFORMAT:CLOCK2 SLAVE
:MACHINE1:SFORMAT:MASTER K, RISING
:MACHINE1:SFORMAT:MASTER L, RISING
:MACHINE1:SFORMAT:MASTER J, OFF
:MACHINE1:SFORMAT:MASTER M, OFF
:MACHINE1:SFORMAT:SLAVE  J, BOTH
:MACHINE1:SFORMAT:SLAVE  K, OFF
:MACHINE1:SFORMAT:SLAVE  L, OFF
:MACHINE1:SFORMAT:SLAVE  M, OFF
:MACHINE1:SFORMAT:REMOVE ALL
:MACHINE1:SFORMAT:LABEL 'ADDR',  POSITIVE, #H0, #H0000, #H0000, #H0000, #HFFFF
:MACHINE1:SFORMAT:LABEL 'DATA',  POSITIVE, #H0, #H0000, #H0000, #H00FF, #H0000
:MACHINE1:SFORMAT:LABEL 'STAT',  POSITIVE, #H0, #H0000, #H0000, #H0F00, #H0000
:MACHINE1:SFORMAT:LABEL '/WR',   POSITIVE, #H0, #H0000, #H0000, #H0100, #H0000
:MACHINE1:SFORMAT:LABEL '/IORQ', POSITIVE, #H0, #H0000, #H0000, #H0200, #H0000
:MACHINE1:SFORMAT:LABEL '/RFSH', POSITIVE, #H0, #H0000, #H0000, #H0400, #H0000
:MACHINE1:SFORMAT:LABEL '/M1 ',  POSITIVE, #H0, #H0000, #H0000, #H0800, #H0000
:MMEMORY:CD '\INVASM', INTERNAL0
:MMEMORY:LOAD:IASSEMBLER 'IZ80_P', INTERNAL0, 1, 1
:MMEMORY:CD '\', INTERNAL0
:MACHINE1:SYMBOL:REMOVE
:MACHINE1:SYMBOL:WIDTH 'STAT', 12
:MACHINE1:SYMBOL:BASE  'STAT', BINARY
:MACHINE1:SYMBOL:PATTERN 'STAT', 'INT ACK',         '#B0101'
:MACHINE1:SYMBOL:PATTERN 'STAT', 'OPCODE FETCH',    '#B0111'
:MACHINE1:SYMBOL:PATTERN 'STAT', 'REFRESH',         '#B1011'
:MACHINE1:SYMBOL:PATTERN 'STAT', 'I/O WRITE',       '#B1100'
:MACHINE1:SYMBOL:PATTERN 'STAT', 'I/O READ',        '#B1101'
:MACHINE1:SYMBOL:PATTERN 'STAT', 'MEM WRITE',       '#B1110'
:MACHINE1:SYMBOL:PATTERN 'STAT', 'MEM READ',        '#B1111'
:MACHINE1:STRIGGER:CLEAR ALL
:MACHINE1:STRIGGER:TAG TIME
:MACHINE1:SLIST:REMOVE
:MACHINE1:SLIST:COLUMN 1, 'TAGS', ABSOLUTE
:MACHINE1:SLIST:COLUMN 2, 'ADDR', HEXADECIMAL
:MACHINE1:SLIST:COLUMN 3, 'DATA', HEXADECIMAL
:MACHINE1:SLIST:COLUMN 4, 'DATA', IASSEMBLER
:MACHINE1:SLIST:COLUMN 5, 'STAT', SYMBOL
:MACHINE1:SWAVEFORM:REMOVE
:MACHINE1:SWAVEFORM:INSERT 'ADDR', OVERLAY
:MACHINE1:SWAVEFORM:INSERT 'DATA', OVERLAY
:MACHINE1:SWAVEFORM:INSERT 'STAT', OVERLAY
 
on my 1670G, it has ethernet, so you can FTP or Telnet into it and get files that way, its running a wonky slim unix underneath (and has an old X11 server so you can actually remotely run it on your desktop).

i think some of the 1661 models also support X11
 
If the old school classic HP logic analyzer has an ethernet interface, it supports Telnet, FTP, and remote display on an X server. The Telnet interface can be used for remote programming. The FTP interface can be used for file transfers, remote programming, and screenshot captures.

HP 1660 series:
  • HP 1660A mono CRT, 4K sample depth, floppy only, no LAN option (1994)
    HP 1660AS add 2 channel, 1 GSa/s, 250MHz, 8K sample per channel scope
  • HP 1660C mono CRT, 4K sample depth, hard drive, LAN with Opt 015 (1996)
    HP 1660CS add 2 channel, 1 GSa/s, 250MHz, 8K sample per channel scope
  • HP 1660E color LCD, 4K sample depth, hard drive, LAN standard (1999)
    HP 1660ES adds 2 channel, 2 GSa/s, 500MHz, 32K sample per channel scope
    HP 1660EP adds 32 channel 256K vector depth per channel pattern generator
  • 1670A, 1670D, 1670E, 1670G 136 channels
  • 1671A, 1671D, 1671E, 1671G 102 channels
  • 1672A, 1672D, 1672E, 1672G 68 channels

HP 1670 series, all have a hard drive, and LAN standard:
  • HP 1670A mono CRT, 64K sample depth standard, 500K sample depth with Opt 030 (1996)
  • HP 1670D mono CRT, 64K sample depth standard, 1M sample depth with Opt 30 (1997)
  • HP 1670E color LCD, 1M sample depth standard (1999)
  • Agilent 1670G color LCD, 64K sample depth standard, 256K sample depth with Opt 001, 2M sample depth with Opt 002, Scope with Opt 003, PatGen with Opt 004 (2000)
  • 1670A, 1670D, 1670E, 1670G 136 channels
  • 1671A, 1671D, 1671E, 1671G 102 channels
  • 1672A, 1672D, 1672E, 1672G 68 channels
  • 1673G 34 channels

HP 16500 series:
  • 16500A floppy only, no LAN option
  • 16500B hard drive, LAN option, 16505A interface option
  • 16500C hard drive, LAN standard, 16505A interface standard
The 16505A is an HP 9000 712 workstation with a special GUI application which can control a 16500B or 16500C over a SCSI interface. The GUI is similar to the first version of the 16700 series GUI.
 
Back
Top