Tektronix 1230 Logic Analyzer
Made in the 1980s, the Tektronix 1230 is a general purpose logic analyzer that supports a maximum of 64 channels with up to 2048 bytes of memory per channel. Despite being huge and heavy compared to today’s tiny and portable equivalents (such as the Saleae USB logic analyzer), the 1230 certainly still has its place nowadays, for example to debug older 8-bit designs such as Z80 systems, or simply as an educational tool in a digital electronics class.
I got mine from eBay, still in good condition after all these years. The CRT is working well and bright, with no burned-in marks that are typical of old CRTs:
The device comes with a Centronics parallel port and a DB25 RS232 serial port at the back:
The parallel port supports printing to certain Epson-compatible printer models manufactured in the 1980s. The DB25 (not DB9 like most serial ports found on modern devices) serial port is for communication with the PC using a proprietary MS-DOS application, which is nowhere to be found nowadays. The pinout of the serial port can be found in the notes page of the serial port settings:
The device has sockets to connect up to 4 probes, for a maximum of 64 input channels. Tektronix P6444/P6443 probes are supported. Both types of probes are almost identical, with P6444 being active whereas P6443 is a passive probe. My unit did not come with any probes so I had to purchase a P6444 probe from eBay:
The probe has the following control pins: EXT, CLK 1, CLK 2, QUAL as well as input pins D0-D15 for channels 0 to 15. The CLK pins are only needed if the logic analyzer is configured to use a synchronous clock, in which case CLK 1/CLK 2 will decide when the logic analyzer begins to capture signal samples. Whether the trigger is done on a rising edge or a falling edge is decided by the CLK 1/CLK 2 DIP switches in the centre of the probe box.
The QUAL pin is for signal qualification (enabled via the QUAL OFF/QUAL ON DIP switches). Its operation is described in the manual of the Tektronix 1240, a later but similar model:
I leave it as an exercise for the reader to experiment with the qualifier settings and understand how they actually work after reading this article.
The unit boots up to the main menu, divided into 3 different categories: Setup, Data and Utility:
The Utility menu group contains device time and parallel/serial port settings. It also provides options to save the current setup to be restored later. Important settings that control the data acquisition behaviour are found in the Setup and Data menu groups.
Although the time settings allow years between 1900-2099, the year would jump back to 1914 even if 2014 is selected after a reboot. Some sort of Y2K issues, I believe.
Pressing the NOTES key on any screen will show the instruction text for that screen. To print a screenshot of the current screen, double pressing the NOTES key. Pressing the D key while in the Printer Port menu will print the contents of the currently active memory bank.
The Timebase menu allows you to set the type of timebase for each probe (synchronous/asynchronous), the rate of sampling (for asynchronous timebase), and the voltage threshold for low/high signals. The default threshold is 1.4V, which means that any signal above 1.4V will be considered as logic high. With this setting, the logic analyzer supports both TTL and CMOS signals.
Channel group configuration
The Channel Groups menu allows you to configure the the grouping of different input channels:
The interface is not user-friendly at all here, but that is typical for a machine of this era, isn’t it? The display shows several channel groups (GPA, GPB, GPC, etc.), with each channel supporting binary (BIN), octal (OCT) or hexadecimal (HEX) radix. The channel definition strings have several lines showing which channels in which probes belong to the specified channel groups. The first line is the probe name (A, B, C or D) and the next 2 lines are the channel number (00 to 15). For example, in the above screenshot, channel group GPA is in binary format, uses timebase T1 with positive polarity and contains channels 00 to 15 in probe A.
The Trigger menu defines the conditions of the input signal which, if met, will cause the logic analyzer to start capturing samples:
The above display means: if value A occurs 1 times, start capturing the data and fill the sample memory. Moving the cursor to the Condition (“A”) field allows you to configure how the value is evaluated:
This is perhaps the most complicated screen in this logic analyzer. Further information is available in the device’s help page for the screen.
Data acquisition configuration
The logic analyzer has 4 memory banks, each holding up to 2048 data points. It has two display modes for captured data: timing and state. In timing mode, signal levels (low/high) are displayed. In state mode, values of 0 or 1 as captured, or if configured, their hexadecimal, octal or ASCII equivalents, are displayed.
The Run Control menu allows you to configure how the input data will be captured and displayed, such as which memory bank (1-4) to be used for sample storage and the default display mode to be shown after the signal has been captured.
The Mem Select menu allows you to select the active memory bank. It also shows a summary of the current timebase settings:
Timing and state diagram
After setting the necessary configurations, press the START button to start capturing the input signals. The logic analyzer will proceed to wait for the trigger conditions to be met. To stop waiting, press the STOP button.
Once the trigger conditions are met, the device will start to capture the signals until its memory is full and show the signal timing diagram (or the state diagram if configured in the Run Control menu):
You can scroll between the captured samples using the arrow keys, or zoom in or out by pressing F, followed by 4 or 5 to change the resolution. The following shows the timing diagram when zoomed out:
Below is the state diagram of the captured signal, when viewed in binary mode:
The radix can be changed to octal or hexadecimal by pressing 2:
ASCII data capture
Interestingly, the radix of the state diagram can also be changed to ASCII. To test this, I wrote a PIC program to output all characters of the ASCII string “Hello World” to PORTB of a PIC, with sufficient delay after each character. I then connected the probe channels to the output pins (RB0-RB7) and captured the output data. The following is the result when asynchronous timebase is used for capturing:
Although characters such as ‘o’, ‘d’, ‘H’, ‘r’, which apparently come from the original “Hello world” string, can be seen, they are not in order, with some characters appearing more than once. This is explained by the fact that the clock is asynchronous and different from the rate at which the output at PORTB is changed, resulting in wrongly sampled data.
To improve the display, I used another pin on the PIC to indicate when the output value changes. This pin will remain low for most of the time and will only be set to high for a short duration whenever the output value on PORTB is changed to a different character. I then connected this pin to the CLK pin on the probe, and set the timebase to synchronous. After capturing the signal again, this is the output screen:
Here “SP” stands for “space” (ASCII code 32). “Hello world” can now be seen clearly in the output, with characters in order and not repeated.
Capturing narrow pulses
Out of curiosity, I decided to test how fast a signal this logic analyzer can capture. This can be done by writing a PIC program to toggle an output pin at a fast rate, and trying to capture that signal. In my tests, the shortest pulse that the logic analyzer can capture is around 80ns:
This is the corresponding display of the same signal on a Rigol DS1052E oscilloscope:
With these tests, I guess the highest signal frequency that the 1230 can reliably work with is around 10-15MHz. Faster signals may not be captured properly due to slow sampling rates and lack of available memory.
Interestingly, although the rate of the asynchronous clock can be set to 10nS or 20 nS, only half the usual channel memory will be available in this configuration, causing the channel groups and trigger conditions to be automatically modified to exclude channels that are unavailable. Fortunately, the 1230 will prompt you about this before making the changes:
The 1230 can also act as a digitizing oscilloscope and show the actual signal waveform with an appropriate add-on card. The following is the screen output when such a module is installed:
With the appropriate add-on cards installed, the 1230 can also disassemble instructions for the Z80/8085/68K processsors or decode the RS232 protocol using the Disassembly menu.
Unfortunately my unit does not come with any add-on cards and none of these cards can be found on eBay nowadays. Therefore, selecting the Disassembly menu will just display an error message saying “Disassembly requires personality module”.
Not surprisingly, getting this logic analyzer to print its screenshot or memory contents is a challenge nowadays, as the only supported printing method is via an Epson-compatible printer through a parallel port, which has disappeared from most desktop computers ever since the introduction of USB. To workaround this, I have developed a tool which uses a PIC24 to emulate a parallel port printer and stores the printout onto an SD card. The printout can later be converted to a bitmap image (.BMP) by using a Windows program.
This is the completed tool when assembled on a stripboard using a ST7735 LCD to display output messages:
See this article for the full source code and other details about the tool.
Most of the screenshots from the logic analyzer in this article were captured using this tool. The same tool can also be used to capture the device memory contents by pressing the D key while in the Printer Port menu. The output looks like below:
Memory | Range is 0000 to 1023 | Timebase 1 | sync 10 uS Loc GPA bin 0000 10001000 0001 10001000 0002 01110111 0003 01110111 0004 01110111 0005 01110111 0006 10001000
The 1230 prints its screenshots as graphics but prints its memory as text. In text mode, Epson escape codes are used to support simple text formatting (e.g. bold). The Windows software I developed can only convert the graphics output to a BMP file. For the memory printout, you can simply read the output file directly using any text editor – most will remove the escape codes (ASCII code < 32) automatically.
Composite video output
There is a BNC socket, marked as “Video Out”, at the back of the logic analyzer. To test the video output, I salvaged a BNC connector from an old oscilloscope probe and made a BNC to RCA adapter:
This is the video signal shown on my oscilloscope:
The signal clearly resembles a monochrome composite PAL signal, albeit with a high peak-to-peak voltage (2.5V). It displays well on my old CRT TV:
And on my 21″ LCD monitor, with the help of a composite-to-VGA converter:
There are some distortions in the video display, with the bottom and top of the display cut off. This may be due to noises in the video cable or limitations of the video output capabilities.
There is a nice little feature on the Tektronix 1230 and similar models. When you power it up and the welcome screen shows, press the STOP button before anything else and a bar will show up with the programmers names near the bottom of the screen. The following video demonstrates this on a Tektronix 1225, which is functionally equivalent to the 1230 but supports only three probe ports:
After testing the overall functionality of the logic analyzer, I decided to perform a teardown of the probe to see its internal components. This is the front and the back of the probe’s circuit board:
Apart from some Tek proprietary components such as TEK 165 2304 01, there are also quite a few 74-series ICs and some MC10H350P PECL to TTL translators. Except for the processing unit in the center of the board, no other ICs are socketed, making it hard to repair if there are issues.
The Tektronix 1230 belongs to a family of functionally similar logic analyzers manufactured by Tektronix, with the most important difference being the number of probe ports:
- Tektronix 1230: four probe ports
- Tektronix 1225: three probe ports
- Tektronix 1220: two probe ports
- Tektronix 1205: only one single probe port; probes are incompatible with the other models.
The only useful information I found for the Tektronix 1230 on the Internet is from an old document with basic technical specifications of the 1230 and some information on the different types of supported add-on cards. I also found here part of the datasheet for the 1205.
The 1230 uses four EPROMs, two 27C64 for the printer ROM and two 27C256 for the main operating system. The contents of the ROM can be found here. The OS ROMs are labelled 160-5178-02 and 160-5179-03 whereas the printer ROMs are labelled 160-5530-00 and 160-5531-01. The ROM dumps for the 1225 can be downloaded here.
Watch the TekTronix 1230 training videos here, converted from the original VHS training tapes made by Tektronix. Also refer to the Tek Wiki article about the 1230 and detailed instructions on how to rebuild the keypad. Thanks a lot to Lubomir for his hard work in documenting the repair process.
The complete operator’s manual for the Tektronix 1225 can be downloaded here (many thanks to Floopy for helping to scan the files). I have also used Adobe Acrobat to OCR the document, making it easier to search for text. Also, various manuals for the Tektronix 1240, a newer model, can be downloaded from here.
Rigol DS1054Z, GW-INSTEK GDS1054B and Hantek DSO4084C digital oscilloscopes
Capturing data from a Tektronix 1230 logic analyzer by emulating a parallel port printer
12 thoughts on “Tektronix 1230 Logic Analyzer”
Great post, thanks for sharing! I love the old Tek stuff, and document my own adventures on my own blog. I'm also one of the occasional contributors to the tek wiki, http://proxy.w140.com/tekwiki/wiki/. Mind if I link your entry there?
Did you ever dig up a manual? I'm trying to decide between a 1241 or a 1230 as my next source of entertainment
Sure, feel free to link to this article from the Tek wiki or from your site. I'd love to have more people reading my post.
I am still trying to find the manual for this unit. There are some sellers on eBay offering the manual, but the price is not reasonable. I have yet to find an online PDF version of the manual.
As for the choice between the 1241 and 1230, I'd go for the 1241 if one is available as it has more features and lots of documentation available on the net. I picked the 1230 only because it's available for a cheap price from my local surplus reseller.
PS: Thanks for sharing the link to your blog too. Tons of useful information on vintage Tektronix test equipment
I am having the above product ,in good working condition .If any body is interested you can contact me in 8124996286 . I reside in Chennai
The above product , Tektronix 1230 Logic Analyzer is for sale . Anyone interested can please contact me.. Ph: 8124996286
Good working condition.
Tektronix 1230 Logic Analyzer looks interesting. Anyone still using this kind of devices. Is there any updated model available nowadays in a market. plz, tell is yes.
The Tektronix 1230 and it’s brother 1220, 1225 are obscure models. The difference between the 1225 and the 1230 is the number of probe ports. The 1220 has two, the 1225 three and the 1230 four. The only inconvenience about this line of logic analyzer, is the lack of information and documentation. Most of us who have one is because we’ve either found it in a local surplus, or it was being thrown out. The probes are what usually make people stand back from buying a unit. They are hard to find at a descent price. I scanned the manual to the 1225/1220 and Toughdev has it. I don’t know where he will post it or when he will.
Yes, I have the manuals sent from you. I have also OCR’ed it and searching the PDF will be a bit easier. Will update the article this weekend with the links to the manual and the 1230 ROMs dump when I disassemble the machine.
Nice to see this page about the Tektronix 1230. I do have the same and I still use it sometimes for my microcontroller projects. I know there are better USB capture devices nowadays but the 1230 is still very decent. Ofcourse it doesn’t support features like auto-decoding modern protocols such as SPI or I2C.
Addon cards are hard to find nowadays. My device has 2 probe-boards (makes 32 channel in total) and a printer output card.
I do have the original 1230 User Manual in good condition. Maybe I can scan it if someone is interested.
Thanks for sharing. My unit originally had one addon card which was faulty and had to be removed. Despite searching on eBay for months, I was never able to find another addon card at a reasonable price. Still, I like the 1230 and its user interface, somewhat primitive but can be useful for certain projects. Do share with me the scanned 1230 user manual. I’d love to have it
Thanks for writing this up. I’ve recently acquired 1230 and your article has been of great help. I’m currently waiting for the probes to arrive and I’ll surely be building the parallel printer emulator too.
I’d be very thankful for a manual too.
By the way — my machine hasn’t been taken good care of and the keypad was rusty to the point most of the keys didn’t work. I’ve had to restore it and I’ve documented the process with the intent of putting it to the tekwiki. Unfortunately, I’m unable to get an account there.
Perhaps someone reading this has an account and could upload it for me? Here’s my draft: http://v6.sk/~lkundrak/tek/repair.html, with the wiki format here: http://v6.sk/~lkundrak/tek/repair.wiki and all the files archived here http://v6.sk/~lkundrak/tek.tar
Hi Lubomir Rintel,
Glad you find the article useful. I have contacted you via email.
I’m curious about the RS-232 adapter. My machine came without one and I guess they’re impossible to come by nowadays; however the ROM images are around there and I suppose they should be pretty simple to build.
The parallel port adapter I have is essentially a 2764 ROM and a 8255 PPI behind a 245 xceiver with some control signals and a handful of gates that generate the chip selects — I suppose that what they decode is just some high address lines. I’d expect the serial card to be mostly the same, just with a 8250 UART in place of the 8255 PPI and a pair of 1488/1489 drivers for RS-232 levels. Perhaps there’s also +12V for those drivers.
What I’m unsure about is the memory map. I’m also not familiar with 6502 and I’m unable to tell which addresses are being used from the ROM images. I didn’t ring out the lines on the processor board.
I’m wondering if anyone who has the serial board could ring out where do the second to fifth lines in the top row and fifth one in the bottom row go (looking at the component side with the connector facing up), or at least take a picture of both sides of the board?
I’ve redrawn the printer board, here’s the schematic: http://v6.sk/~lkundrak/prt1230/pr1230-schematic.pdf (complete kicad project at http://v6.sk/~lkundrak/prt1230/)
It’s not beautiful, but could be helpful if anyone else would look into building an extension card.