• Please review our updated Terms and Rules here

Tektronix 4041 computer from the early 1980's - WORKING!!

nikola-wan

Veteran Member
Joined
Mar 7, 2018
Messages
1,302
Location
Texas, USA
I had purchased two of these Tektronix 4041 computers in 2000 after acquiring my 4052 computer.

I thought I would use them as GPIB test automation controllers for a TM500 with relay modules and digital multimeter - but never got around to doing that project.

I did capture the ROMs and plan to post them on my Tektronix 4050 github repository.

Both of the 4041 had the Programming Development Option ROMs, and one also had Graphics ROMs, Plotting ROMs, Signal Processing, and Utility #1 ROMs!

I purchased the 4041 Operating and BASIC Programming manuals, but never had the Option ROM manuals. I found they have been posted on bitsavers - I'll have to check them out.

I plugged both units in - both powered up and completed self tests - both have 512KB of RAM.

The Tektronix 4041 used a Motorola 68000 CPU, and had similar BASIC ROM commands to the 4051/4052/4054.

The 4041 has a one line text display and a built in DC100 tape drive and small thermal printer. The thermal printer isn't working on the one I tested today, maybe when I test the other one - the printer will work.

Here is a photo of the 4041 - auto loaded the System Verification tape that I had!

attachment.php


I had received the 4041 System Verification tape from Stan Griffiths in 2000, along with a box of 4051 tapes.

All three DC100 tapes I had with my 4041 had broken drive belts. I got the tapes working with 4 1/4 inch Plastibands from Amazon:

attachment.php


Here is a photo of the CPU board - there is a small board on the left on top of the CPU board with the ROMs - so you can't see the 68000 CPU.

attachment.php


Searching the web - it appears no one has posted the service manual for the 4041.

The tape on top of the 4041 had a label I wrote: "SERIAL 1 mcm 5/24/00".

Looking at the operators manual - it indicates that you can configure the 4041 console to use an external terminal (but you have to load a program from tape to do that).

In order to create a program on the 4041 you must have the Programming Development option ROMs - and use the keyboard connector on the front panel.

I never had the keyboard and must have hacked into the four-pin LEMO connector on the front panel. The manuals don't give a pinout for that connector, but I saw a groups.io post this morning that indicated it is 5V serial TX/RX, so I must have also used a level converter to create the SERIAL 1 program.

When I was able to auto load the SERIAL 1 tape - I hooked up my laptop with a USB serial converter, but had to experiment to remember the port speed and configuration. It was 9600 7S1 with XON/XOFF.

My next post will list the SERIAL 1 program, and the directory listing of the System Verification Tape.
 
Last edited:
I spent quite a while today recovering all the files on the 4041 System Verification Version 2.8 tape.

Here is the directory listing of all the files on that tape:

Code:
SYSVER 2.8 29-APR-85 09:46:04  SOFT ERRORS = 0        
 FILE  FILE  LENGTH  START  NUMBER         LAST       
 NAME  TYPE IN BYTES RECORD OF REC. MODIFICATION  DATE
------ ---- -------- ------ ------- ------------------
AUTOLD  IT     2550     5     10    13-SEP-84 16:08:00
TERMIN  IT     8160    15     32    13-SEP-84 16:08:00
SYSVER  IT     3570    47     14    13-SEP-84 16:09:00
CONFIG  AS      510    61      2    01-JAN-81 00:02:00
                255                                   
PROCED  IT     1020    64      4    13-SEP-84 16:09:00
LINK    IT      765    68      3    13-SEP-84 16:09:00
DISP    IT     1275    71      5    13-SEP-84 16:09:00
KEYPAD  IT     1530    76      6    13-SEP-84 16:09:00
PRINTE  IT      765    82      3    13-SEP-84 16:09:00
TAPE    IT     4590    85     18    13-SEP-84 16:10:00
SOFTER  IT      765   103      3    13-SEP-84 16:10:00
IO      IT     4590   106     18    13-SEP-84 16:10:00
                255                                   
TIMER   IT     1530   125      6    13-SEP-84 16:10:00
PDKYBD  IT     4335   131     17    13-SEP-84 16:11:00
GPIB    IT     2040   148      8    13-SEP-84 16:11:00
GPIBLB  IT     3315   156     13    13-SEP-84 16:11:00
GPIBCO  IT     2040   169      8    13-SEP-84 16:11:00
SLAVE   IT     3315   177     13    13-SEP-84 16:11:00
MASTER  IT     1785   190      7    13-SEP-84 16:12:00
PAUS    IT      765   197      3    13-SEP-84 16:12:00
TPCAL   IT     1275   200      5    13-SEP-84 16:12:00
PTRCAL  IT     1020   205      4    13-SEP-84 16:12:00
FRMAT   IT     1020   209      4    13-SEP-84 16:12:00
TSTPTN  IT     2040   213      8    13-SEP-84 16:12:00
CHKOPT  IT     1275   221      5    18-SEP-84 13:04:00
OPT2    IT      765   226      3    13-SEP-84 16:12:00
HELP    IT     3060   229     12    13-SEP-84 16:12:00
PDTEST  IT      255   241      1    13-SEP-84 16:12:00
SCSI    IT     2550   242     10    13-SEP-84 16:13:00
TSYSVR  AS     4080   252     16    13-SEP-84 16:13:00
TSCSI   AS     3315   268     13    13-SEP-84 16:13:00
TDIR    AS     2295   281      9    01-JAN-81 00:25:00
              94605

I created a new github repository for the Tektronix 4041 GPIB Controller:

https://github.com/mmcgraw74/Tektronix-4041-GPIB-Controller

I have posted all the files recovered from the tape, and added a folder with the ASCII text version - as all the programs were written to the tape in ITEM form (Tektronix binary).

I will be posting all the ROMs that I captured back in 2000 when I finish converting them to binary.

One of the most interesting is the Utility ROMs that include a PROM File System! They talk about a kit to program tape files into a PROM that will then boot the 4041 if the AUTOLD file is on the PROM.
 
Here is a photo of the Tektronix 4041 Option ROM carrier tray with all the available Options:

attachment.php


There was a Utility ROM #2 but apparently it was added to the internal ROMs at some version - don't know how to check if I have that yet.

This tray is behind the grill in front of the 4041 - grill is removed and off to the side of the ROM carrier tray in this photo.

Monty
 
I just uploaded all the Option ROM files, and the combined 16-bit files to my 4041 github repository. I checked all the individual binary ROM checksums against what my Data I/O reported in 2000 when I captured the files - everything checks out.
 
Nice system, I guess that these machines were mostly used for laboratory use?
It looks a bit like a PLC. How do the ROM modules connect to the system? Are there pins at the bottom?
 
Nice system, I guess that these machines were mostly used for laboratory use?
It looks a bit like a PLC. How do the ROM modules connect to the system? Are there pins at the bottom?

Roland,

Yes, Tektronix targeted the 4041 as a GPIB controller to automate testing.
Tektronix also had a product line of modular GPIB test equipment that plugged into TM5000 power chassis.

Here is a photo I found of a TM5000 chassis with digital multimeter, programmable power supplies, signal generators, relay modules, A to D and D to A converters, ...

attachment.php


Not a very glamorous application - but I imagine this gear has been in continuous use in labs since the 1982 introduction.

There are still 4041's and TM5000's for sale on EBAY.

I have a TM5000 with digital multimeter, relay modules and A/D modules - I plan to post more info on that in the future.

My other thought in reviving my 4041's - they have similar BASIC commands to the 4050 computers, and support using the 4050 computers as graphics terminals.
Since the 4041 has a 68000 with 512KB of memory - I want to experiment with the 4041 driving my 4052 and 4054A computers.
 
Nice system, I guess that these machines were mostly used for laboratory use?
It looks a bit like a PLC. How do the ROM modules connect to the system? Are there pins at the bottom?

Roland,

I didn't answer your second question - the ROM carrier has an edge card connector on the back that connects all the ROMs to the 68000 memory bus.

attachment.php


The Molex sockets in the ROM carrier were designed to mate with each EPROM with the leads bent around Molex leadframes, with keys to prevent the EPROMs from being inserted backwards.

attachment.php


The bottom of the ROM carrier has slots that create twelve ejectors to push each of the EPROMs out of the carrier socket. The brown posts in the middle of each socket in the photo above are connected to the ejectors.

attachment.php


Here is the back view of the Option ROM holder with one EPROM removed. Note each end of the leadframe has different key shapes on both ends to prevent EPROMs being installed upside down.

attachment.php
 
Success! I made a copy of the 4041 System Verification Tape!

Success! I made a copy of the 4041 System Verification Tape!

I successfully created a copy of the System Verification tape and tested it on my 4041 without the ROM Carrier and Program Development ROMs installed!

Quite an effort - I received the 15 DC100A NOS tapes Sunday and spent the rest of the day trying to record on one of them - unsuccessfully.
The belt was not broken when I took off the shrink wrap - but it broke immediately when I pressed the AUTO LOAD button on the front panel.

I replaced the belt with one of the 4 1/4" Plastibands and tried multiple times to format the tape but kept getting errors. The band kept popping off and the tape head was getting clogged with 'tape shed' and the two guide posts collected 'tape shed' and the tape would stick.

An internet search turned up a youtube video from Curious Marc that itemized several different issues with trying to recover the data from old DC100 tapes in an HP computer - I was seeing most of those issues with these NOS tapes. I believe these five tapes are from 1993, a second box 1992 and the third box from 1991 - based on the publishing date on one of the papers inside the case with each tape.

The solution recommended in the video was to 'bake' the tapes at 135 degrees F in a dehydrator.

I went looking for tape 'baking' instructions, and http://qicreader.blogspot.com/p/tape-baking.html said his best results were from baking for two days.

I opened up the other four tapes, removed the plastic belt rollers, the capstan and taped the two drive reels together as recommended with the tape directly between the two reels.

I have an Excalibur dehydrator and set the control to 135F. I put all five NOS tapes in the dehydrator, numbering each on the 'invisible tape'. I measured the temp of the tapes multiple times during the two days with an infrared temp sensor - got within one degree of 135F every measurement.

Instructions indicated letting the cartridges cool for an hour - I waited longer than that.

First I tried reassembling tape #1 that I was unable to use on Sunday - with a fresh Plastiband belt. The 4041 kept indicating an Invalid Tape error. Possibly from previous recording attempts.

I then put tape #1 aside and picked tape #2, fresh band, plugged it in and got CRC error when I pressed AUTO Load. I was able to format the tape and began writing one file at a time to the tape, checking the directory list after each operation. I had to replace the belt a couple of times, and retension a couple of times, but got all the files written.

Here is the resulting directory list of my first System Verification Tape copy. Notice that I didn't put a tape name in the FORMAT command, and didn't SET TIME until several files were recorded.

My process steps were not quite correct - here is a new sequence, after you have bootstrapped the console to COMM: (COMM0: if you have two serial ports)

1 - SET TIME
2 - Format the tape, recommend adding the parameter to name the tape
3 - Select an ASCII file to SEND with Realterm
4 - Start the transfer - you will see the lines of the program on the Realterm window
5 - Select the Realterm console window in order to type commands to the 4041
6 - SAVE "filename(OPE=NEW,CLI=YES,FOR=ITEM)"
7 - If you don't get an error, type DIR and check that 'filename' is at the end of the DIR and the correct type (IT) and filesize. If error, DELETE FILE "filename" and do STEP 6
8 - LOAD "COMM:" then press front panel "ABORT" button. This clears the previous program in memory.
9 - now repeat starting with STEP 3 until done

Here is my tape copy long directory list. Only file that didn't match length with original is the last file TSCSI.ASC.
I actually I wrote both the TDIR and CONFIG files in 2000 - note the file dates are the 4041 default of 1981 if the SET TIME command is not run.

From the timestamps - it took me three hours to write the files to the tape.

Code:
           01-JAN-81 00:15:50  SOFT ERRORS = 21       
 FILE  FILE  LENGTH  START  NUMBER         LAST       
 NAME  TYPE IN BYTES RECORD OF REC. MODIFICATION  DATE
------ ---- -------- ------ ------- ------------------
AUTOLD  IT     2550     5     10    01-JAN-81 00:28:00
TERMIN  IT     8160    15     32    01-JAN-81 00:40:00
SYSVER  IT     3570    47     14    01-JAN-81 00:44:00
CONFIG  AS     1020    61      4    01-JAN-81 00:50:00
PROCED  IT     1020    65      4    01-JAN-81 00:59:00
LINK    IT      765    69      3    01-JAN-81 01:01:00
DISP    IT     1275    72      5    03-JUN-20 19:33:00
KEYPAD  IT     1530    77      6    03-JUN-20 19:37:00
PRINTE  IT      765    83      3    03-JUN-20 19:41:00
TAPE    IT     4590    86     18    03-JUN-20 19:43:00
SOFTER  IT      765   104      3    03-JUN-20 19:45:00
IO      IT     4590   107     18    03-JUN-20 19:48:00
TIMER   IT     1530   125      6    03-JUN-20 19:49:00
PDKYBD  IT     4335   131     17    03-JUN-20 20:01:00
GPIB    IT     2040   148      8    03-JUN-20 20:10:00
GPIBLB  IT     3315   156     13    03-JUN-20 20:12:00
GPIBCO  IT     2040   169      8    03-JUN-20 20:13:00
SLAVE   IT     3315   177     13    03-JUN-20 20:15:00
MASTER  IT     1785   190      7    03-JUN-20 20:17:00
PAU     IT      765   197      3    03-JUN-20 20:21:00
TPCAL   IT     1275   200      5    03-JUN-20 20:23:00
PTRCAL  IT     1020   205      4    03-JUN-20 20:25:00
FRMAT   IT     1020   209      4    03-JUN-20 20:27:00
TSTPTN  IT     2040   213      8    03-JUN-20 20:37:00
CHKOPT  IT     1275   221      5    03-JUN-20 20:39:00
OPT2    IT      765   226      3    03-JUN-20 20:56:00
HELP    IT     3060   229     12    03-JUN-20 21:00:00
PDTEST  IT      255   241      1    03-JUN-20 21:05:00
SCSI    IT     2550   242     10    03-JUN-20 21:07:00
TSYSVR  AS     4080   252     16    03-JUN-20 21:09:00
TSCSI   AS     4590   268     18    03-JUN-20 21:19:00
              98685                                   
*
 
I paid for scans of the latest 4041 Controller Service Manual (Vol1 070-6965-00 and Vol2 070-6966-00), and the 4041 DDU (disk drive unit) service manual (070-5853-00).

Here is a snapshot of the pdf front page of the service manuals:

attachment.php


attachment.php


If you would like either set of scans please send me a PM on this forum.

Monty
 
The first two volumes of the service manual scans indicated a Volume 3, I now have that volume - here is a screenshot of the first page.

attachment.php


This Volume covers 4041 with serial numbers below 69999, with the original memory expansion board.

Both my 4041 have lower serial numbers - so this volume will be very helpful.

Monty
 
My first 4041 game - a port of my 4051 Artillery program

My first 4041 game - a port of my 4051 Artillery program

I just completed porting my Tektronix 4051 Artillery program to the Tektronix 4041 GPIB Controller - which used my Tektronix 4052 in terminal mode to display the graphics and provide the keyboard input!

Here is a screenshot - it looks just like running Artillery on my 4052 :)

attachment.php


Since 4041 BASIC is newer than 4050 BASIC, many of the commands are the same.

The Graphics commands were added to the 4041 in an option ROM, so they require an "RCALL" to the graphics command, such as:

RCALL "DRAW" x,y

instead of a DRAW x,y command.

I couldn't find a ROTATE command, so replaced four occurrences in my program with computed DRAW commands.

Also, the RND function initializes and runs a little different than the 4050 RND function.

Otherwise - I'm satisfied with the result!

I want to experiment with the 4041 graphics commands where I select the 4014 19" storage terminal as the target - supposed to be emulated by my 4054 in terminal mode.

I have created a GAMES folder in my 4041 github repository and uploaded my 4041 Artillery program and the above screenshot:

https://github.com/mmcgraw74/Tektronix-4041-GPIB-Controller/tree/master/GAMES
 
I just completed porting my Tektronix 4051 Artillery program to the Tektronix 4041 GPIB Controller - which used my Tektronix 4052 in terminal mode to display the graphics and provide the keyboard input!

Here is a screenshot - it looks just like running Artillery on my 4052 :)

attachment.php


Since 4041 BASIC is newer than 4050 BASIC, many of the commands are the same.

The Graphics commands were added to the 4041 in an option ROM, so they require an "RCALL" to the graphics command, such as:

RCALL "DRAW" x,y

instead of a DRAW x,y command.

I couldn't find a ROTATE command, so replaced four occurrences in my program with computed DRAW commands.

Also, the RND function initializes and runs a little different than the 4050 RND function.

Otherwise - I'm satisfied with the result!

I want to experiment with the 4041 graphics commands where I select the 4014 19" storage terminal as the target - supposed to be emulated by my 4054 in terminal mode.

I have created a GAMES folder in my 4041 github repository and uploaded my 4041 Artillery program and the above screenshot:

https://github.com/mmcgraw74/Tektronix-4041-GPIB-Controller/tree/master/GAMES

very nice work. So well done
 
'New' 4041 with DDU disk drive unit

'New' 4041 with DDU disk drive unit

I just received my EBAY purchase of another 4041 - this one included the Option 03 4041DDU SCSI 10MB Shugart 5 1/4 inch ST-506 disk drive and a Panasonic 5 1/4 inch 360KB floppy drive with cable.

attachment.php


The auction indicated they were working at the time they were taken out of service - I'm not so sure of that, but both 4041 and DDU powered up during my test last night.

However, even though the 4041 powered up, showed v2.1 firmware and 512KB of memory, the LED display showed a prompt, so I suspected it did not load any AUTOLD file from the DDU.

There are SCSI DIP switches on the 4041 rear panel for SCSI Option 03, one of which changes the default storage from internal tape drive to DDU hard disk - and that switch was set to DDU hard disk.

Looking at the front of the DDU, I could see the hard drive LED blinking three times, repeatedly. The DDU service manual indicated in the Shugart hard drive section that this meant the spindle failed to come up to speed :(

I turned off both units and changed that rear DIP switch to tape as default storage unit, powered up the 4041 with one of my 4041 tapes with an AUTOLD file, but got an error on the LED display indicating 840 Lamp/Servo tape failure.

The tape did not move, so it appears I need to troubleshoot the tape Lamp circuit.

In the meantime, I pulled off the right side cover and did my front panel keyboard resistor mod to allow my USB to TTL serial adapter to be used with the front panel keyboard connector.
This mod is needed to remove a very strong pulldown resistor and decrease the pullup resistor so the TX pin from the keyboard can be driven with a TTL output of a USB to TTL serial interface.

attachment.php


  • Power off the 4041.
  • Remove the 4041 two rear plastic "corners" securing the right panel and slide off the right panel.
  • I dipped my desolder braid in flux, place the braid on the pad and apply your hot soldering iron to the braid and resistor lead to suck the solder completely from the pad. Be sure to cut off the braid and apply fresh flux before desoldering the pad for each resistor.
  • Unsolder and lift the 'left' side of the two resistors closest to the unused J86 connector as shown in my resistor mod photo: 4041 Resistor Mod
  • Solder a 1K ohm resistor into the hole (I first cut the resistor lead down to .25 inch).
  • Then solder the tomb-stoned 1K ohm resistor to the lower resistor and clip off any extra leads per my photo
  • Replace the right side panel to ensure proper 4041 cooling.
  • Connect your TTL Serial interface ground to the top left keyboard connector female contact.
  • Connect your TTL Serial interface TX to the lower left keyboard connector male pin.
  • Configure your TTL Serial interface for 4800N2 speed, parity, stop bits.
  • Power on the 4041 and you should be able to type on your PC using the TTL Serial interface - and see your typed characters on the front panel LED

I only use this TTL Serial interface to bootstrap to the rear panel COMM0 interface (if you have the Programmer ROMs installed in the ROM tray behind the front panel grill):
  1. Type "SET DRIVER "COMM0(BAU=9600,FLA=BID,EDIT=STORAGE):"
  2. Type "SET CONSOLE "COMM0(ECHO=YES):"

I find the EDIT=STORAGE parameter is easier to use when correcting PC typing errors, as the console will echo back each character you are deleting.

After the 4041 keyboard mod, I used my PC to type the command to format a DDU 5 1/4" floppy, and to run the DDU service manual program to do write and read performance tests on the floppy.

I got 1117 Bytes per second, which meets the 1000 bytes per second listed in the floppy spec.

So my DDU SCSI controller and floppy drive are working and I've ordered a Seagate 40MB ST-506 drive to replace the failed Shugart drive.

I also noticed my new 4041 has a newer CPU board which includes the 512KB of DRAM on the CPU board and also only has four EPROMs!
Two EPROMs are 27512 for 128KB of BASIC System ROM, the other two are 27256 Option 10 ROMs.

Option 10 added the Graphics, Plotting, Signal Processing and Utility 1 ROMs that previously were in the ROM drawer behind the front grill.
This 4041 had the ROM drawer with the BASIC Program Development ROMs.

attachment.php


attachment.php


The 4041 service manual indicates 4041 serial numbers B070100 and above have this CPU board, mine is S/N B071623.

The service manual also indicates two of the EPROMs contain 128KB of system ROMs - 28KB more than the earlier 4041 CPU boards. I believe the additional 28KB includes the Utility 2 ROM only available for these CPU boards.

The service manual indicates the Option 10 for this CPU board is the two additional 27256 EPROMs (64KB), which contain the R01 Graphics, R02 Plotting, R03 Signal Processing, and R04 Utility1 option ROMs; which leaves room in the ROM drawer for developer ROMs to be installed.

I ran the 4041 BASIC ASK$("ROMPACKS") command and got the list of all the above option 10 ROMs plus the UTL2 ROM.

I captured the four CPU board EPROMs and two Option 03 SCSI EPROMs and posted them on my github repository for the 4051:

github.com/mmcgraw74/Tektronix-4041-GPIB-Controller/4041 ROMs
 
Seem like fun little machines. Quite a lot on Ebay I see, but all in the US. Never seen one on this side I'm afraid, but then again I should not be picking up new projects !

Jos
 
I fixed my 'new' 4041 tape drive by gently pushing the stuck drive capstan with a bamboo stick - it looks like the tape head had never been used.

I fixed my 4041 thermal printer by following the instructions in the service manual - no need to remove the printer from the case, just rotate the timing housing, then lock the housing (I used fingernail polish).

attachment.php


Right after I got my 4041DDU - it stopped working, and I checked the power pins of the floppy drive power connector and the +5V pin was only reading 1 volt :(
I thought my DDU power supply was at fault, and took it out of the DDU and powered it with no outputs connected and the +5V, 12V and 24V outputs were fine.

I put the power supply back into the DDU and just plugged in the floppy power plug, powered on and the floppy connector +5V and +12V voltages checked ok.

Then powered the DDU off and added power to the SCSI controller and cabled up the floppy - powered on and could read the floppy I had created.
I even added power to the original hard drive that has the stuck spindle - the 4041 was able to read the directory of the floppy disk I created and the hard disk was reported as unformatted.

Now my 4041 DDU was back to working (floppy drive only) like when I got it last week.

I received a Seagate ST-251 20MB hard disk which I had ordered to try to replace the original stuck Shugart hard disk.
I pulled out the Shugart, plugged in the Seagate drive - and everything powered up.
Formatted the Seagate from the 4041 and copied my 4041 tape AUTOLD file to the hard disk.
Then powered both the DDU and 4041 off, and turned on the DIP switch to set the DDU hard disk as the SYS DEV device instead of the tape.

Turned on the DDU, waited for the disk to spin up, then turned on the 4041 and the hard drive light flashed once when the 4041 read the AUTOLD file and my COMM0 console was working fine!

Now I want to experiment using the floppy and hard disk to simplify the process of making the System Verification tapes.

The 5.25 inch double-sided floppy has a formatted capacity of 327 KB, about twice the capacity of the DC100 tape.
The 5.25 inch hard disk has a formatted capacity of 10.6 MB (over 32 floppies or 60 tapes).

One missing feature on the 4041DDU floppy and hard drive is multiple directories on a disk.
The DDU has a flat file system with six character filenames - like the internal tape drive.

The good news is the 512KB memory capacity of the 4041 can hold all of the files of an entire tape in memory.
I'm thinking I can write a single 4041 program that will format and copy all the System Verification files to a tape.

This would dramatically reduced the time required to create a System Verification tape from almost two hours to probably less than one hour.

Here is a photo of my 4041 which 'booted' from the 4041DDU hard disk! (5.25 inch floppy works too!)

attachment.php
 
I'm also looking into replacing the tape with a custom ROM Drawer using the 4041R04 UTILITY PROM file system.

This is described on page 6-2 of the 4041 Utility ROM manual on bitsavers.org.

Basically, tape files can be programmed into a special EPROM installed in the ROM drawer. If the filename is AUTOLD, then the PROM files on that EPROM are automatically used as the system disk on powerup instead of the tape drive.

I have made some progress understanding the 4041 tape file system, by writing a tape dump program that dumps every block on the tape to the comm port, and the data is captured by the PC Realterm application.

The 4041 tape file system is very simple, the tape directory is in four 256 byte blocks at the beginning of the tape.
Each file created on the tape is listed in a 16 byte field in one of the tape directory blocks, which includes filename, file type (ITEM or ASCII), starting block, ending block, and time/date stamp.

See the example PROM file system list on page 6-2.

If you run the directory command on a tape with the long parameter: DIR "(long=yes)", you see the start and end blocks.

What is not shown in the description is the format of the EPROM that contains the info that the 4041 recognizes as the PROM file system instead of an option ROM image.

I may have to disassemble the UTILITY ROM code to figure that out.

I believe a hint of the PROM data format is at the end of the UTILITY ROM binary image from 3C40 through 3C9F, which looks like the text displayed at the beginning of a tape directory, and "PROM:" at the end may be the information in the EPROM that triggers the 4041 to use the UTILITY ROM PROM file system. Or the beginning of the PROM may just have code that jumps into the PROM filesystem entry point in the Utility ROM, which would then create the PROM: device from the data in the PROM.

I got the 4041 PROM Accessory Kit user manual from vintagetek.org - they haven't yet posted it on the Tekwiki 4041 page, but it indicates that a 4041 tape in that kit contained the program to 'build' the s-record images that would be used to burn the desired tape files into an EPROM. I have not found that Accessory kit available - it would be nice if one of the forum users has that kit :)

Another very useful Utility ROM feature is listed on page 6-1, the SOFT ROMPACK loader.

This feature loads an option ROM from a 4041 tape file! The bad news is - the option ROM files could be requested from Tektronix if you owned the UTILITY ROM option.

I also plan to experiment with putting my captured OPTION ROM images into tape files and use the UTILITY ROM "Loadroms" call to try to load them into memory.

The Utility ROM manual indicates you cannot load a ROMPACK into memory if the ROMPACK is already installed, so my tests of this feature will be done on my 'older' 4041, where I can remove an option ROM from the drawer and try to load the image from tape.
 
Looking for 68000 disassembler help

Looking for 68000 disassembler help

I worked this past weekend on disassembling the 4041R04 UTILITY1 ROM image that I posted on my github site:
https://github.com/mmcgraw74/Tektro...r/blob/master/4041 ROMs/4041UTILITY-16bit.BIN

The best results I had were with the "m68kdis" program that I found at https://github.com/cr1901/m68kdis which I compiled from the source files on Ubuntu Linux for Windows 10.

This UTILITY1 option ROM adds several ROMCALLs to the 4041, which are shown immediately after the Copyright message at the beginning of the UTILITY ROM.

Most of this UTILITY1 ROM are text statements - typically error messages for 4041 BASIC that are not referenced by this option ROM.

However two of the text strings are referenced by the code in the disassembly and are the PROM list directory header strings shown in the PROM directory example below - and are therefore associated one of the functions I'm interested in: "PROM0".

PROM0 is a 4041 UTILITY1 ROM function that provides a file system similar to the 4041 tape file system - but the data is in an Option ROM slot!

This function is described on page 7-1 in the 4041 UTILITY1 ROM manual posted on bitsavers.org:
http://www.bitsavers.org/pdf/tektronix/404x/070-4699-00_4041R04_Utility_ROMPack_Jul1985.pdf

This page describes the PROM file system as automatically detecting the 'files' in an option slot in the option ROM carrier (which has six slots - each with two 8Kx8 EPROMs each in special sockets - see my photo below):
attachment.php


The three 4041 latest service manuals -03 were scanned at my request from microfiche by a volunteer at vintagetek.org (fabulous collection of Tektronix microfiche! with an index of their collection) and posted on TekWiki 4041 page.
4041 Service Manual 1 page 2-17 indicates the six 16KB (two 8KB EPROMs) Option ROMs in the ROM Carrier are decoded at addresses xF8000 to F9FFFF.

What I am trying to figure out from the UTILITY ROM code is:
  1. What values at the beginning of the 16bit EPROM indicate it contains a PROM file system. All the Option ROMs have "M68K" at the beginning to indicate an Option ROM. I tried using "PROM:" in an image I created last night, but it is not detected.
  2. What is the format of the PROM file system in the EPROMs. I would think it could be the same as the primitive tape file system.

I believe I understand most of the 4041 DC100 tape file system - I wrote a 4041 BASIC program that dumps every 256 byte record on one of my tapes with several programs.

Here is the beginning of the dump of my tape:

Code:
games      01-JAN-81 00:02:19  SOFT ERRORS = 0        
 FILE  FILE  LENGTH  START  NUMBER         LAST       
 NAME  TYPE IN BYTES RECORD OF REC. MODIFICATION  DATE
------ ---- -------- ------ ------- ------------------
AUTOLD  AS      255     5      1    27-AUG-20 09:29:00
ARTLRY  AS     3060     6     12    27-AUG-20 09:31:00
SARTLR  AS     6630    18     26    27-AUG-20 18:11:00
MTPACK  AS     1020    44      4    08-SEP-20 09:51:00
TDUMP   AS     1275    48      5    08-SEP-20 20:40:00
TDUMPI  IT     1530    53      6    08-SEP-20 20:41:00
             155040                                   
Tektronix 4041 Tape Dump

Address			DATA
          0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F   Text Characters
Record 1
0        67 61 6D 65 73 20 20 20 20 20 20 54 45 4B 20 34   games      TEK 4
1        34 30 34 31 20 32 2E 31 20 02 00 03 00 9A 02 30   4041 2.1 ......0
2        31 2D 4A 41 4E 2D 38 31 20 30 30 3A 30 32 3A 31   1-JAN-81 00:02:1
3        39 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   9...............
4        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
5        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
6        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
7        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
8        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
9        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
A        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
B        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
C        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
D        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
E        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
F        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
Record 2
0        41 55 54 4F 4C 44 05 00 01 00 41 53 14 11 B2 5D   AUTOLD....AS...]
1        5D 41 52 54 4C 52 59 06 00 0C 00 41 53 14 11 B2   ]ARTLRY....AS...
2        5F 53 41 52 54 4C 52 12 00 1A 00 41 53 14 11 B4   _SARTLR....AS...
3        8B 4D 54 50 41 43 4B 2C 00 04 00 41 53 14 12 82   .MTPACK,...AS...
4        73 54 44 55 4D 50 20 30 00 05 00 41 53 14 12 85   sTDUMP 0...AS...
5        28 54 44 55 4D 50 49 35 00 06 00 49 54 14 12 85   (TDUMPI5...IT...
6        29 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   )...............
7        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
8        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
9        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
A        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
B        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
C        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
D        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
E        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
F        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
Record 3
0        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
1        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
2        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
3        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
4        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
5        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
6        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
7        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
8        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
9        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
A        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
B        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
C        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
D        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
E        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
F        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
Record 4
0        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
1        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
2        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
3        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
4        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
5        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
6        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
7        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
8        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
9        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
A        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
B        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
C        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
D        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
E        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
F        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
Record 5
0        31 30 30 53 65 74 20 64 72 69 76 22 63 6F 6D 6D   100Set driv"comm
1        6D 30 28 62 61 75 64 3D 39 36 30 30 2C 66 6C 61   m0(baud=9600,fla
2        3D 62 69 64 2C 65 64 69 74 3D 73 74 6F 72 61 67   =bid,edit=storag
3        65 29 3A 22 0D 31 31 30 53 65 74 20 63 6F 6E 73   e):".110Set cons
4        22 63 6F 6D 6D 30 28 65 63 68 6F 3D 79 65 73 29   "comm0(echo=yes)
5        3A 22 0D 00 00 00 00 00 00 00 00 00 00 00 00 00   :"..............
6        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
7        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
8        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
9        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
A        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
B        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
C        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
D        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
E        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
F        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
Record 6
0        31 30 30 49 6E 69 74 20 0D 31 30 32 52 65 6D 20   100Init .102Rem 
1        20 53 65 74 20 64 72 69 76 65 72 20 22 43 4F 4D    Set driver "COM
2        4D 31 28 42 41 55 44 3D 39 36 30 30 2C 46 4C 41   M1(BAUD=9600,FLA
3        3D 42 49 44 2C 45 44 49 54 3D 53 54 4F 52 41 47   =BID,EDIT=STORAG
4        45 29 3A 22 0D 31 30 33 52 65 6D 20 53 65 74 20   E):".103Rem Set 
5        63 6F 6E 73 6F 6C 65 20 22 43 4F 4D 4D 31 28 45   console "COMM1(E
6        43 48 4F 3D 59 45 53 29 3A 22 0D 31 30 34 4F 70   CHO=YES):".104Op
7        65 6E 23 31 2C 22 43 4F 4D 4D 30 3A 22 0D 31 30   en#1,"COMM0:".10
8        35 52 63 61 6C 22 47 49 4E 49 54 22 2C 31 2C 34   5Rcal"GINIT",1,4
9        30 35 32 2C 31 0D 31 31 30 44 69 6D 20 68 28 31   052,1.110Dim h(1
A        32 39 29 2C 61 31 28 32 29 2C 61 32 28 32 29 2C   29),a1(2),a2(2),
B        62 31 28 34 29 2C 62 32 28 34 29 2C 6C 28 32 29   b1(4),b2(4),l(2)
C        0D 31 31 35 5A 3D 30 0D 31 32 30 4E 3D 32 0D 31   .115Z=0.120N=2.1
D        32 35 41 31 3D 72 6E 64 28 2D 31 29 0D 31 33 30   25A1=rnd(-1).130
E        52 65 73 74 20 31 34 30 0D 31 34 30 44 61 74 61   Rest 140.140Data
F        20 35 2C 31 31 30 2C 39 30 2C 39 30 2C 2D 31 2C    5,110,90,90,-1,

First, my program prints a directory listing of the tape, then each of the 256 byte records in hex and character similar to DOS debug.

Tape Record1 begins with the name of the tape, then the 4041 firmware version, followed by the timedate stamp of when the tape was formatted. In this tape, I did not set the time before formatting :(

Tape Record2 through Record4 are a simple list of the files with starting record# and #records in 16-bit HEX, file type (AS=ASCII, IT=ITEM binary), followed by the time/date the file was recorded.

Tape Record5 is the first file - named AUTOLD, which is automatically loaded if the tape is installed when the 4041 is powered on. This file is in ASCII - which requires the two Program Development option ROMs be installed, which include the BASIC parser for ASCII programs. Note that each BASIC program statement is terminated by carriage return just like the 4050 graphics computers.

Tape Record6 is the beginning of the second program named ARTLRY (my port of my 4050 Artillery game to the 4041 using a 4052 as the graphics terminal). 4041 tape file system is limited to six character file names.

Here is the PROM file system listing example from the UTILITY manual:

Code:
File  Type Size    Creation Date
____  ____ ____ __________________
AUTOLD AS  1215 16-DEC-82 13:41:37
BACKUP AS  1728 16-DEC-82 13:44:23
SQUISH AS  2537 16-DEC-82 13:48:54 
NEWRBT IT  3959 16-DEC-82 14:03:34

It is not specifically stated, but I believe the PROM file system will only support ONE file system EPROM slot, similar to the Tape file system only supports one tape.

This will limit the size of the PROM file system to 16KB which is the maximum size for each of the six PROM slots.

Notice in my photo of the 4041 ROM Carrier - that it is completely full - so you can't use the PROM file system :(

That ROM Carrier was in one of my two 4041 computers, which had the original CPU board in one slot in the backplane with a second slot for the memory.

When I looked at my third 4041 that had the disk drive DDU option - it had the newer CPU board with integrated memory and only two sockets for BASIC ROM and two sockets for Option 10 ROMs!

The service manuals indicate that Option 10 contained the four option ROMs in my ROM Carrier photo: Graphics, Plotting, Signal Processing, and Utility1 - which freed up ROM carrier slots for the PROM file system, or newer Option ROMs!

The UTILITY1 ROM also included a second interesting feature, LOADROMS, which allowed an option ROM to be loaded from a file on tape.

This would allow the original 4041's to have a PROM file system in one option slot and load the 'missing' option ROM from tape after the system booted.

Bottom line - DC100 tapes are even more scarce than DC300 tapes, AND many of the 4041 owners do NOT have the Program Development ROMs which would allow them to load and save programs to a PC with the RS-232 port on the 4041.

A working DC100 tape (or even more scarce - a working disk drive unit) with the correct AUTOLD file is required to initialize the COMM port and set it as the CONSOLE.

I believe the service manual schematic diagram for the ROM carrier shows that it would be very easy to create a ROM Carrier with two 64Kbit EPROMs containing the Program Development ROMs, Utility1 ROM and PROM file system, that would automatically boot a 4041 without a tape drive to an RS-232 console to a PC.

I created a simple image with a duplicate of the tape file system capture above with only the AUTOLD file - but I did not see a PROM file system after the 4041 booted. I think I'm missing the correct characters at the beginning of the ROM that will be identified as a PROM file system by the UTILITY1 ROM - not an Option ROM.
 
Last edited:
Back
Top