Electronics > Projects, Designs, and Technical Stuff

Tektronix 4924 Tape Drive Emulator

(1/64) > >>

I have started this thread at the request of a contributor (mmcgraw74) to my other thread regarding the AR488 GPIB interface. This would be a specific use case for a GPIB interface in device mode and would need to interpret the GPIB secondary address as commands being issued to the "tape drive" . Data sent to the "tape drive" would be stored on an SD Card.

mmcgraw74, provided a reference to a manual which contains detailed information on how the Tek 4050 communicates with the 4924 tape drive:


From this information is ought to be possible to re-construct the operation of the tape drive.

The thread here also discusses the project:


Since the tape drive is a device, the requirement for the emulator differ considerably from the requirements for the AR488 controller. Both needs to communicate over GPIB, but the emulator, being a device, does not require controller features nor the complete Prologix command set. Furthermore, data received from GPIB does not need to be sent/received over USB (virtual COM port) but sent to an SD Flash card. The emulator will require the means to accept secondary addresses as commands. These secondary addresses, when received, will need to be mapped to a specific emulator command handlers. As a device, there is no requirement to conform to the Prologix command syntax at all, although some means of setting at least a GPIB address would need to be provided.

Rather than adding to the AR488 code base, the sensible way to proceed seems to be to start a new project, stripped the AR488 code down the the functionality required for running in device mode and then build up the secondary address handling and SD Flash handling routines.

I have an HP 9135A disc drive which might also be useful for testing.


The 8-inch referred to 8-inch floppy drives in the Tektronix 4907 :)

The tape drive is a Tektronix 4924 with a 3M DC300 tape.

I have configured my 4924 tape drive (and expect the tape emulator) to respond to GPIB address 5.

The 'parsing' of commands to the tape drive (and tape drive emulator) is just based on the MSA = My Secondary Address - with the primary address matching the GPIB address 5 for the emulator as a Talker or a Listener.

Here is a list of the MSA commands (My Secondary Address in Tektronix vocabulary = MSA) that I believe need to be supported by the emulator.

"Action" column indicates what the emulator needs to do.  Note than several commands map to the same action on the emulator (and tape drive).
I believe this is because the 4050 will be doing all the work and each GPIB byte transfer should be written or read from a file.

The Tek 4050 computers handled string and binary variables differently with headers generated by the 4050 for binary variables.  The tape drive just writes the bytes from the 4050 or reads the bytes and sends them to the 4050 for most of the BASIC commands.

I believe the list of commands (MSA) will offer complete compatibility between the 4050 and the 4924 tape drive:

--- Code: ---/*
   Tektronix 4924 Tape Emulator device Commands
   Principle of operation:
   - Listen for 4924 GPIB primary address plus secondary address
   - Primary address (My Primary Address - MPA) indicates whether 4924 is talker or listener
   - Secondary address (My Secondary Address - MSA) = command
   Device MSA command numbers (assuming Emulator is GPIB device number 5)
   MPA MSA Action Data?  4050 BASIC statement
   37 12 Print Y       - PRINT  @5: <variable(s)>
   37 15 Print Y - WRITE  @5: <binary>
   37 1 Print Y - SAVE @5: <binary program in memory>
   37 27 Find Y - FIND   @5: <file#>
   37 28 Mark Y - MARK   @5: <# files,size in bytes>
   37 7 Kill Y - KILL   @5: <file#>
   37 29      Secret N - SECRET @5: <mark current file header with Secret flag>
   37 2 Close N - PRINT@5,2: <close current file>
   37 0 StatIN Y - PRINT@5,0: <w,x,y,z> send tape drive environment parameters
   37 9 CD Y - PRINT@5,9: <change directory to path$> **new cmd for EMULATOR**

   Device Talk commands (assuming Emulator is GPIB device number 5)

   69 13 Input Y       - INPUT  @5: <variable(s)>
   69 14 Input Y - READ   @5: <binary variable(s)>
   69 4 Input Y - OLD    @5: <binary program>
   69 0 StatOUT Y  - INPUT@5,0: <w,x,y,z> get tape drive environment parameters
   69   9       Header  Y - INPUT@5,9: <return current file header string>
   69 6 Type Y - TYPE   @5: <return type of next data in file>
   69 19 Tlist Y - TLIST  @5: <return header info for every file>
   69 30 Error Y - INPUT@5,30: <return error code and clear SRQ>

--- End code ---


I have more info on how the Tektronix 4050 BASIC handles the tape header, binary header, etc in my Arduino file:


I believe once we get the secondary addresses for primary address 5, I can begin to write the code for each of the commands.


Bumping this thread.

Waveydipole - have you had a chance to work on this fork of your AR488 project?


[0] Message Index

[#] Next page

There was an error while thanking
Go to full version