Image Map Image Map
Page 7 of 7 FirstFirst ... 34567
Results 61 to 63 of 63

Thread: Tektronix 4051 / 4052 / 4052A / 4054 / 4054A Program Archives

  1. #61



    I understand

    My backlog of Tektronix projects includes getting back to work on the GPIB tape drive emulator with microSD card storage.

    I've been having too much fun with the 4907 Floppy drive system - and running my port of Adventure to Tek BASIC


  2. #62

    Default Tektronix 4052/4054 - TransEra ROM Packs - ROM images uploaded to github

    I finally uploaded my ROM captures from the TransEra ROM Packs and board photos to my github repository of Tektronix programs:

    I captured the ROMs from all four ROM Packs including:

    741-RTC Real Time Clock
    750-SPU Super Utilities (use General Utilities Manual)
    752-ADC 16-channel, 12-bit Analog to Digital Converter
    764-RAM Auxiliary Memory (unfortunately - I don't have that Auxiliary Memory enclosure).

    Most of the user manuals for the above ROM Packs are already posted on bitsavers at

    I uploaded my scan of the Analog to Digital Converter manual to the same folder as my ROM images for that Pack.

    Here is the Readme for my github folder with the ROM images and board photos:

  3. #63

    Default Latest Tektronix 4052 / 4054 Tape Dump Program

    I have been using the TransEra Super Utilities ROM Pack to recover all the files from a Tektronix 4050 tape including SECRET files with a single program.

    Someone may be able to decipher the Tektronix SECRET program algorithm.
    I managed to decode in the 1970's the last program on the System Tape - which was a SECRET program to test DRAM memory.
    I was able to read the BINARY blocks of the SECRET program file - and because the program is completely print statements until the last three lines - I wrote an equivalent BASIC program line by line, saved it as SECRET and compared with the System Tape file until the bytes matched.
    The last three lines in that file were FIND X - where X was the next file on the tape, READ A$, then CALL "EXEC", A$.

    Since I had the Tektronix 8002 Development System along with the 4051, I looked at the data returned on the READ - it was ASCII characters from 0 to ?, which I theorized could be ASCII HEX.
    I translated the string in to HEX and manually disassembled the suspected 6800 program.
    Yes it was HEX, and the program basically wrote and verified AA55 through the entire RAM address space - including the assembly program and then hung.
    That's why the print statements at the beginning of the program indicated you would have to power cycle the computer after the program finished.

    I then used the undocumented CALL "EXEC" command to write my own assembly programs for the Tektronix - including my own music program (PWM to the speaker), and others including dumping the Tektronix BASIC ROM to the screen and triggering the 4631 printer to print the screen, PAGE, and continue I still have those printouts. I found that putting a RTN in the assembly program would return control to the next line in the BASIC program after the CALL "EXEC".

    The program listing for my Tektronix 4050 Tape Dump program below has been uploaded to the TransEra 750 Super Utilities ROM Pack folder.

    The CALL commands in the program use the Super Utilities ROM to find and read every 256 byte block on a tape and send the data to the PC using the RS232 serial interface in the backpack.

    For performance, when the blocks are from an ASCII program or ASCII data file - the blocks read are simply transmitted directly over serial.
    If the blocks are from a BINARY or SECRET file - the 256 bytes are converted into 512 ASCII HEX characters with the routine starting at line 590, and then the 512 HEX characters are transmitted to the PC over serial.

    The Tape Dump for the Tektronix General Utilities Tape is in the Super Utilities folder:

    I suggest you download the file and examine it with Notepad++.

    The first 256 byte block of any Tektronix 4050 tape file is the file header and the file type is at a specific starting location in this block. The first number in the header is the tape file number. The last number in that line is the number of 256 byte blocks that were MARKed for this file.

    You will notice that the first four files in this tape dump are SECRET programs, and there is a line of text at the beginning of the first block after the header block: "TUT TUT TUT -- THIS IS A SECRET FILE"

    This is the message printed to the screen by the BASIC ROM if you attempt to READ the file from BASIC.

    I have not written the BASIC program using the Super Utilities ROM PACK to restore one of my tape dumps to a blank tape - but it should not be very difficult:
    Read the first character string from the file - that is the header
    Extract the file number and number of 256 byte blocks
    FIND that file number (0 if the tape is blank and you are MARKing FILE 1)
    MARK 1,SIZE where size is 256*NumberOfBlocks
    Use the Super Utilities CALL commands to write each block (including full 256 byte header block)
    If another file header is READ from the dump file - extract the file number and number of blocks and MARK 1,NewFileSize and continue
    Here is my current Tape Dump program listing:
    **** Note: I just noticed my program uses the 4052A/4054A BASIC feature with multi-character variable names like "Bin$" Change those names to single character for 4052/4054 computers ***

    100 PRINT "CAPTURE COMPLETE TAPE - Monty McGraw SEP 2019"
    120 INPUT B
    130 B=B-1
    150 REM ***
    170 DIM T1(6),T2(6)
    180 READ T1
    190 READ T2
    200 DATA 1,6,10,19,28,36
    210 DATA 4,3,8,8,7,7
    220 DIM A$(258)
    230 PRINT "FILE#: ";
    240 FIND B+1
    250 CALL "OPEN?",G,H
    260 CALL "TBACK"
    270 CALL "TREAD",A$
    280 CALL "FILE?",A
    290 CALL "TYPE?",D,E,F
    300 IF B=A THEN 530
    320 A=B+1
    330 B=A
    335 PRINT @40:A$;
    340 PRINT @40:
    350 PRINT @40:
    360 PRINT A;"/";
    370 B=A
    380 FIND A
    390 CALL "OPEN?",G,H
    400 CALL "TBACK"
    410 CALL "TREAD",A$
    420 PRINT @40:A$
    430 CALL "TYPE?",D,E,F
    440 F1=F+1+(F>1)*2*E
    450 F$=SEG(T$,T1(F1),T2(F1))
    460 PRINT F$;
    470 IF D<>1 THEN 490
    480 PRINT " SECRET";
    490 PRINT "  ";
    500 CALL "TREAD",A$
    510 CALL "FILE?",A
    520 F1=F+1+(F>1)*2*E
    530 IF F1=1 THEN 570
    540 IF D=1 OR F1=4 OR F1=6 THEN 590
    550 PRINT @40:A$;
    560 IF A<>-1 THEN 270
    570 PRINT "DONE"
    580 END 
    590 FOR I=1 TO 256
    600 Bin$=SEG(A$,I,1)
    610 Bin=ASC(Bin$)
    620 High=INT(Bin/16)
    630 Low=Bin-High*16
    640 High$=CHR(High+48+7*(High>9))
    650 Low$=CHR(Low+48+7*(Low>9))
    660 PRINT @40:High$;Low$;
    670 NEXT I
    680 GO TO 270
    Last edited by nikola-wan; November 9th, 2019 at 08:12 AM.


Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts