• Please review our updated Terms and Rules here

Tektronix 4050 GPIB Flash Drive - now available

Thanks for the Flash Drive comments.

1. I believe I have a solution working where First Time Setup asks whether you want RTC Auto Load. If you don't answer "Y" then the FTS will skip sending any !SETPU commands to the RTC to leave existing !SETPU program alone. This will then disable the RTC Auto Load feature.
  • Of course I have also extended the Main Menu to support not only remembering the directory but also the file number of an item selected in the Main Menu, so all the Main Menu items can be 'Favorite', example Invader I at file 38 in Games.
  • I'm also working to add one more parameter to the Main Menu selections - whether the program is ASCII or BINARY, as my tests show BINARY is about 4x faster to load on the 4051 Emulator and 4054A than ASCII. This would also help the loading of the Main Menu which is now about 10KB.
3-5. Yes, I will have these fixed that in my next Flash Drive image
6. SVG>FG is still in Dev like some of the other folders. I'll put in a curated folder in the next image.
7. Absolutely!
8. Another great feature request. UDK20 for return to Main Menu is also a good one. Some games (Star Trek) use 10 UDKs so standardizing on Shift-F10 sounds like a great feature, but that means adding UDKs to all the programs - or maybe figuring out how to use APPEND instead of OLD might preserve the Menu UDKs like in the Option 30 Demo and Games!
 
In re 8, I wouldn't think it's necessary to change all the games, demos, and other programs, even though that means that the command often wouldn't be at your fingertips. Just having it on the menu programs would be a really convenient addition. I also think the idea of trying to patch via APPEND is a great idea!

I'll tell you what I really want, but I'll start with a question. How easy would it be to make an expansion ROM pack that contains BASIC code instead of machine code?

I don't need the EDITOR ROM pack; what I'd want in that space instead is something closer to a modern Unix shell command line for the Flash Drive. I want to CALL "FDSH" (that's "Flash Drive Shell") from BASIC and then find myself in an environment where I can type ls for TLIST, pwd to get the current Flash Drive directory, cd to change the current directory, load 12 to do FIND@5:12, OLD@5:, and perhaps a few more commands besides that for file management, tape formatting, and so on. Not everyone will have a @jdreesen Multi Function Module, but for those that do, there's a chance for a very convenient interface that's always available.

I asked about BASIC vs. machine code as I don't think I have the proficiency yet to write 4050-series assembly right now! But maybe the requirements of (a) printing to the screen (b) getting keyboard input, (c) GPIB device I/O, and (d) controlling the state of the BASIC interpreter are sufficiently straightforward that I should be more brave!

ETA/PS: I'll have to reshoot the R12 ICE RACES video --- looking at it now, the refresh rate I set on my camera made things look a lot more dire than they actually are in real life. I'll get it eventually...
 
Last edited:
In re 8, I wouldn't think it's necessary to change all the games, demos, and other programs, even though that means that the command often wouldn't be at your fingertips. Just having it on the menu programs would be a really convenient addition. I also think the idea of trying to patch via APPEND is a great idea!

I'll tell you what I really want, but I'll start with a question. How easy would it be to make an expansion ROM pack that contains BASIC code instead of machine code?

I don't need the EDITOR ROM pack; what I'd want in that space instead is something closer to a modern Unix shell command line for the Flash Drive. I want to CALL "FDSH" (that's "Flash Drive Shell") from BASIC and then find myself in an environment where I can type ls for TLIST, pwd to get the current Flash Drive directory, cd to change the current directory, load 12 to do FIND@5:12, OLD@5:, and perhaps a few more commands besides that for file management, tape formatting, and so on. Not everyone will have a @jdreesen Multi Function Module, but for those that do, there's a chance for a very convenient interface that's always available.

I asked about BASIC vs. machine code as I don't think I have the proficiency yet to write 4050-series assembly right now! But maybe the requirements of (a) printing to the screen (b) getting keyboard input, (c) GPIB device I/O, and (d) controlling the state of the BASIC interpreter are sufficiently straightforward that I should be more brave!

ETA/PS: I'll have to reshoot the R12 ICE RACES video --- looking at it now, the refresh rate I set on my camera made things look a lot more dire than they actually are in real life. I'll get it eventually...
Yes, just changing the Menu programs would be much simpler.

On your 'real' request - you should copy the 4052/4054 Assembler uni-format directory into the Flash Drive (and shorten the directory name to 10 characters):
https://github.com/mmcgraw74/Tektronix-4051-4052-4054-Program-Files/tree/master/4052A-4054A-Assembler/4052A-Assembler%20uni%20format

Then read the assembler instructions pdf in the .. directory.

My two example assembler programs were 6800 code for MINIBUG - which is part of the 4052/4054 instruction set, but I directly sent the output to my laptop using the I/O address of the serial port.

You should be able to use the 'real' 4052 assembler instruction set, we just have to figure out how to make a CALL to the BASIC ROM entry points listed at the end of the assembler doc.

Then your assembly program can take advantage of all the BASIC and option ROM CALLs.

I found a couple of c-compilers for the 6800 on this SWPTC site: http://www.evenson-consulting.com/swtpc/fufu_downloads.htm
so you could even compile a small shell for the 4052/4054.

The Flex OS for the 6800 is very tiny - there are porting instructions for the Flex OS I saw somewhere.

It would be nice to have Flex OS ported to the 4050 - we could run SWTPC Flex programs :)
 
Here's an unlisted YouTube video of my latest attempt to record R12 ICE RACES:


This time I brilliantly managed to avoid focusing the shot correctly, so I'll have to make a third attempt at some point. On the bright side, while still not a perfect reproduction of what it's like to see in real life, the flickering in the video is much closer to my experience of playing the game on the 4054A here.

For comparison, here is the original ICE RACES for Option 30.


As a most minor critique of the R12 port, I'd say that the suspenseful countdown at the beginning of the race could perhaps go a little faster so that we're sooner experiencing exciting racing action :)
 
Last edited:
One advantage in my R12 port of ICE RACES was I eliminated the time delay on the instruction screen where the 4054A is computing each of the two car vector objects at 12 rotation angles of 30 degrees and loading each object into the Option 30 as an independent object. Since you have the Option 30 - you don't see the car objects being generated because the program sets VISIBILITY to 0 during this process.

Of course there is a difference in Option 30 object format and R12 object format. Option 30 expects object data to be centered in an object with each vector being a floating point relative X,Y MOVE or relative X,Y DRAW.

R12 object format is in 10-bit absolute integer values stored in three 7-bit ASCII characters. So my program to generate the R12 car objects used the same relative car size, but I used Virtual Graph Paper: https://virtual-graph-paper.com/ to draw the car body and car number, then manually measured absolute coordinates from the bottom left corner to develop the MOVE and DRAW absolute vectors. Then I used an excel spreadsheet with macros I developed to calculate the relative MOVE and DRAW vectors to create the car object generation program DATA statements - so I could use part of the original program and see the car objects being drawn on the screen for debug. Of course, now I needed to create the R12 string variables with 10-bit integer absolute graphics data units (GDU), so I used the INPUT@32,24:X,Y command to retrieve the current move or draw endpoint in absolute GDUs as each car was drawn on the screen. Then I used the R12 CALL "DEFINE",A$,G,X,Y command to generate the first car object MOVE or DRAW vector add those three ASCII characters to A$ at vector index G, until all the DATA statements were read, and then I executed a WRITE A$ to a BINARY data file. Then the code rotates that car object by 30 degrees and my code wrote the next R12 object to B$ and so on for car1 then car2 for 24 string variables up to X$ (whew!).

Then I modified the program to load the 24 objects into 24 strings A$ to X$ - which happens in a couple of seconds on the instruction screen - MUCH faster than the Option 30 car initialization! I don't think there is a way to load Option 30 refresh objects from files - so each game appears to load Option 30 from the BASIC program before they can use the objects. Then I copy the current car R12 image based on rotation into Y$ for car 1 and Z$ for car 2 for display during the game. Now we are out of string variables - so I had to mod the user input questions to be numeric answers only.

My code to generate R12 objects from Option 30 DATA statements could be leveraged to port other Option 30 Games to R12 graphics - but ICE RACES had the fewest vectors to draw and the result leads me to believe porting the other games with more complex vectors will be slower and unplayable. :(

It also shows the value of the 4054 Option 30 which is a refresh graphics accelerator, able to draw multiple objects in refresh mode MUCH faster than even the 4054 with R12 Fast Graphics can handle. And these Option 30 objects are being drawn at the same time the 4054 is executing the BASIC program!

This also explains why selecting lower vector car objects in your video does not significantly improve the R12 ICE RACES drawing rate. The R12 object refresh rate is being bound by the 4054 running the program logic to move the cars and then stops to draw a single R12 car object at a time.

I really NEED an Option 30 board for my 4054A! :biggrin:

I just changed the countdown clock to halve the previous delay - should work closer to 1 second now.

zip of updated R12 ICE RACE file 1 attached.
 

Attachments

  • R12 ICE RACE.zip
    4.9 KB · Views: 1
Last edited:
Flash Drive News!


July 20B 2022 Flash Drive update - New Features and Fixes:

New Features:
  • Picture menu automatically selects R12 Menu if R12 ROM detected or NEW pure software Picture menu
  • Adventure (64KB only) from Main Menu loads BINARY program - 7x speedup over ASCII program load
  • RTC Auto Load updated to include support for BINARY program loading example: Adventure :biggrin:
  • Added Option30 Games to Main Menu
  • Added File Browser to Main Menu, UDK support for TLIST, Directory List and Change Directory
  • Updated Flash Drive User Guide
  • Updated Flash Drive Arduino firmware in AR488_Store to July 12 2022 version 0.05.85
Fixes:
  • RTC Auto Load feature is now selectable during first time setup
  • Fixed menu links to Pictures, SVG>FG
  • Fixed R12 ICE RACES countdown clock for 4054

Also the Tektronix 4051 Emulator has been updated to work with this Flash Drive release (limited to one Flash Drive directory at a time)!
https://github.com/Twilight-Logic/Tek405xEmulator

and a pull request on this version has been submitted to the main 405x Emulator site.

Please post comments, feature requests, bug reports - AND assembled Flash Drive requests to this thread!

Enjoy
 
Last edited:
This Flash Drive release will be the one I will demo on my 4054A at VCF West 2022 Aug 6-7 at The Computer Museum!
 
I created a new vector graphics picture to add to my Flash Drive Pictures Menu: 007 Sub Car 1977

1659272742369.png


I had just finished watching "The Spy Who Loved Me" with Roger Moore and Barbara Bach on Friday and I wanted to create a vector graphics picture of the submarine car for my exhibit at VCF West 2022 next Saturday and Sunday.

I found a nice drawing of this car: https://www.washingtonpost.com/graphics/entertainment/auto-bond/ and used GIMP and Inkscape to create an hpgl plotter file, which I then transformed into Tektronix R12/Fast Graphics vector format with my SVG2FG BASIC program running on my 4052. The resulting vector file is only 6KB!

This article
https://www.hotcars.com/the-truth-behind-james-bonds-1977-lotus-esprit-used-in-the-spy-who-loved-me/ indicates the Lotus Esprit S1 was converted into a submersible by Perry Oceanographic and was piloted by a retired Navy Seal - Don Griffin!

Elon Musk bought the submersible in 2013 for almost $1M!

I imagine the Tektronix 4050 computer engineers enjoyed this movie like I did. Most of the vector graphics pictures in the R12 Graphics Enhancement Demo were created my Michael D Cranford in the late 1970's when he designed the Fast Graphics ROM Pack for the 4051 - that was used to create the 4051 R12 ROM Pack and the 4052/4054 R12 ROM Pack.

I will be demonstrating the huge performance improvement this ROM Pack made on vector graphics performance on my Tektronix 4054A at VCF West 2022 Aug 6-7, with my Flash Drive providing all the program and data files and @jdreesen's 4052/4054 Multi-Function ROM Pack will be providing the 4052R12 Graphics Enhancement ROM and TransEra 741-Real Time Clock which my Flash Drive uses to Auto-Load the last program launched from my Flash Drive Main Menu when the 4054A computer is turned on.
 
Last edited:
I just posted a youtube video of Spacelab drawing files that I converted from PLOT10 format to 4050R12 Graphics Enhancement ROM (Fast Graphics) format that can be displayed on any 4051/4052/4054 computer with my Flash Drive plus R12 or Fast Graphics ROM.

https://youtu.be/yimthgRiGAM

Spacelab R12 on my new 4054A.png
 
@stepleton and @WaveyDipole

I've been researching why some of the Option 30 Demo files are not loading properly - and I found a temporary workaround.

Several files (4, 25 and a couple of others) fail to CALL "BAPPEN",5;5000 and the load fails until you press BREAK.
BASIC reports that it stopped in line 88 - but there is no line 88!

The reason I suspect an issue with the Flash Drive is the next FIND command after the BREAK (or double BREAK) gets a GPIB error. But if I recall the FIND command and try again it succeeds which indicates to me that the Flash Drive was hung until the next FIND command was issued.

I did an experiment and deleted the last two lines in those files - 64000 something - that had to do with saving to a 4907 floppy disk. Then I BSAVED the file and ran the menu again selecting the previous file and it fixed the BAPPEN issue.

My suspicion looking at the problematic original binary files - they appear to be exactly a multiple of 256 bytes - which may be a pointer to the issue with loading it from the Flash Drive. By deleting those two lines from those files - the files will have pad characters to fill out the last 256 byte block.

Tom, here is a new zip of the Option 30 Demo folder for you to try.

Some of the programs auto continue after a short wait (which I increased to 5 seconds), others require you to press a key like "S" or RETURN to continue.

In the last file 25 I changed the UDK 10 to return to the Option 30 Menu and edited the Menu item 1 to return to the flash drive Main Menu.

I'll do a video of the whole Option 30 in a couple of days.
 

Attachments

  • Opt30Demo-Sep5.zip
    101.7 KB · Views: 1
Last edited:
I just posted the latest Flash Drive file image zip on my github repo:
https://github.com/mmcgraw74/Tektronix-4051-4052-4054-Program-Files/tree/master/Flash_Drive

It includes my updates from my exhibit at VCF West 2022 in August plus even newer pictures like my latest droid B2EMO from the new Disney+ series "ANDOR"

B2EMO on my 4054A.jpg

Plus new Work In Progress Spacelab folder and SVG2FG new files converting Tektronix 4012/4014 plot10 files to Tektronix 4050R12 Fast Graphics image files for viewing WITHOUT using the Terminal Emulation ROM!

In fact - some of the PLOT10 files are larger than even my 64KB 4054A memory - so my viewer READS and then displays a block of 1000 vectors at a time so even the 4051 computer - or the latest fork of the 4051 Emulator program can display these images like the 57KB GPLANET PLOT10 file converted to R12 format is 75KB but is now able to be displayed on not only any 4051, 4052 or 4054 with the 4050R12 Graphics Enhancement ROM but ALSO the 4051 Emulator which includes my Flash Drive support to access the data file AND the 4051 R12 ROM!

GPLANET-on-4051Emulator.png

This is the 4051 Emulator screen copy of GPLANET - which loaded and ran in only 4 minutes and 14 seconds!!
 
My 4054A displayed GPLANET in 44 seconds! 2.5x faster than my previous GPLANET youtube video where I connected my laptop over serial at 9600 baud to my 4054 and used the serial Terminal Emulator ROM to display the original PLOT10 file.

Now I don't need the laptop or serial and get graphics much faster.

See my short youtube video:

https://www.youtube.com/watch?v=W2VXdR9rbgU

1664806675971.png
 
Hi Nikola, I have a Tek 4051. which I just got going after 30 years in a container. While I was browsing for schematics I noticed your GPIB-Flash. It looks very nice.
Are you still selling them?
How much is the DIY- Build myself version and does it come with a pre-loaded SD card pre-loaded firmware?

Regards,
Kerry
With lots of help on the software, my GPIB Flash Drive for Tektronix 4050 graphics computers is now available!!

View attachment 1242312

4050 GPIB Flash Drive Features

1. Completely replaces 4050 internal tape drive for ALL program and data storage
2. Ready to run with 35 games and 33 R12/Fast Graphics pictures pre-installed on MicroSD card
3. MicroSD card provides Gigabytes of program data and storage
a. Plug MicroSD into USB-MicroSD adapter (not supplied) to transfer program & data files to/from your PC
4. Faster access and loading of all files than internal tape
5. Stores each ‘tape’ in separate folder – 100’s of tapes can be stored on same Flash Drive
6. Compatible with all Tektronix 4051, 4052, 4052A, 4054 and 4054A computers
7. Supports all 4050 BASIC GPIB tape commands:
a. FIND, MARK, KILL, OLD, BOLD, APPEND, PRINT, INPUT, READ, WRITE
8. Plugs into 4050 GPIB connector – no ROM backpack slots required
9. Flash Drive Micro-USB power cord included

I've just uploaded the User Guide, MicroSD files, and Arduino code to my github repository:

https://github.com/mmcgraw74/Tektronix-4051-4052-4054-Program-Files/tree/master/Flash_Drive

You can build it yourself or I can assemble it for you.
 
Hi Nikola, I have a Tek 4051. which I just got going after 30 years in a container. While I was browsing for schematics I noticed your GPIB-Flash. It looks very nice.
Are you still selling them?
How much is the DIY- Build myself version and does it come with a pre-loaded SD card pre-loaded firmware?

Regards,
Kerry
Kerry,

Congratulations on getting your Tektronix 4051 computer working!

Yes, I am still selling completely assembled and tested Flash Drives with my latest Arduino Flash Drive firmware and including a new microSD card pre-loaded with my latest Flash Drive image.

As you may already know - my Flash Drive image is available on my Tektronix 4050 program github repository: https://github.com/mmcgraw74/Tektronix-4051-4052-4054-Program-Files which contains many directories of programs I have not had a chance to modify for operation with my Flash Drive. These programs could be easily edited to support the flash drive by replacing the internal tape drive commands like FIND and OLD with FIND@5: and OLD@5: and copying the modified program file to the microSD card. You will also need to edit the filename of that program to match the format of an ASCII PROGRAM file in that folder - and change the file number at the beginning of the file name. I typically do this in the Root folder of the Flash Drive which is the default folder when the Flash Drive is powered on.

I suggest copying the name of Root file 10 as follows: 10 ASCII PROG SVG_vector_FG 3099 and pasting it as the filename of your new program - but changing the file number from 10 to 70 for example and replacing the description with your file description like this: 70 ASCII PROG Test_________ 3099 where I have inserted underline characters so the description has the same length as SVG_vector_FG in the original filename as the Flash Drive Arduino program uses the character location of the fields like File Number, ASCII, PROG, Description and File Size to maintain compatibility with 4050 BASIC commands to an external GPIB tape drive.

You would then access your new file 70 after powering on your 4051 and Flash Drive by typing these BASIC immediate commands:
FIND@5:70
OLD@5:
RUN

The DIY Flash Drive instructions in my user manual is for someone that is familiar with Arduino and electronics assembly. They will order a PCB and the other parts themselves, upload the Flash Drive firmware to the Arduino and format and load a Flash Drive image to the micro SD card.

I suggest you also consider purchasing the vintagetek.org MaxiROM 10-in-1 ROM Pack for your 4051. https://www.ebay.com/itm/115334406750
MaxiROM 10-in-1 ROM PACK includes ten 4051 option ROMs including the 4051R12 Graphics Enhancement ROM Pack which speeds up displaying graphics 10x over standard 4050 BASIC MOVE/DRAW commands. Several of my Flash Drive programs including the Picture Menu and the Invader I (R12 only) game take advantage of the Fast Graphics/R12 option ROM. My Flash Drive also supports displaying the Pictures without the R12 ROM in the MaxiROM - but it is a lot slower. MaxiROM also contains the 4051 BINARY PROGRAM LOADER option ROM which will load programs about 7x faster than ASCII programs.

I have just sent you a PM with the price of my assembled Flash Drive.

Monty
 
I forgot to mention - you will need to supply a USB power supply - which is like the power supply for your cellphone - to power the Flash Drive.
My assembled Flash Drive comes with the USB power cable - but not the USB power supply which is different for different countries.
 
I have updated my Flash Drive repository with the latest FlashDrive zip file of programs, updated User Guide and README.
https://github.com/mmcgraw74/Tektronix-4050-GPIB-Flash-Drive


I also updated my Flash_Drive folder in my programs repository with the same new content:
https://github.com/mmcgraw74/Tektronix-4051-4052-4054-Program-Files/tree/master/Flash_Drive

Here are the new features for this release from the README:

Oct 5 2023 Flash Drive zip file update - New Features and Fixes:

New Features:

  • Vectrex Joystick Interface added to Flash Drive Firmware!!
  • New faster Main Menu loading! ROOT/1 quickly loads and determines if it can load ROOT/2 which is BINARY Menu on ROOT/5 which is ASCII Menu
  • Automatic detection of moving Flash Drive to different model of 4050 computer and automatically forces Configuration Detect in Main Menu
  • New Main Menu which shows new programs with asterisk
New Programs:

  • Battlestar Galactica "Cylon Attack" game for both R12 and Option 30 (requires Tek 4952 joystick or Flash Drive /w Vectrex Joystick)
  • Bitmap Pictures like Mandelorian and Grogu that I demonstrated at VCF Southwest 2023
  • PLOT10 Pictures that I just got working for R12
  • Spacelab Pics for R12 that have new R12 image files based on my latest PLOT10 creator and viewer
  • Asteroids Work in Progress for Option 30
Fixes:

  • PLOT10 to R12 creator output files now work on 4051/4052/4054 with R12 or Fast Graphics ROM Packs
 
I just posted updated Flash Drive zip files and updated Flash Drive User Guide 29 December 2023 version:
https://github.com/mmcgraw74/Tektronix-4051-4052-4054-Program-Files/tree/master/Flash_Drive

The User Guide update includes more instructions on configuring Arduino to install the latest firmware - and minor corrections to the doc.

The Flash Drive zip file includes the latest Menu program - now corrected to run on 4051 computers (I wish someone had told me there were issues with first time setup - I found and fixed them for the 405x Emulator).

The zip also includes the latest Star Wars work-in-progress R12 game and data files, and the Calibrate programs - both now included in the Flash Drive Main Menu.

When you run the Main Menu launcher (file 1 in ROOT), if it finds the config file 123 only contains a 0, the launcher will run file 5 - the ASCII version of the Main Menu. This will start the first time setup to detect your particular 4050 computer model and any option ROMs. If you have a 4051 with the R05 BINARY PROGRAM LOADER ROM Pack (or MAXIROM Pack) - then subsequent runs of the Main Menu launcher program will be faster - since it will load the file 2 BINARY version of the MAIN Menu! All 4052 & 4054 computers have the BINARY PROGRAM LOADER code in the main BASIC ROMs.

Reading or Writing BINARY DATA files are supported in all 4050 computers - whether or not you have an R05 ROM.

Here is the screenshot of the latest Flash Drive Main Menu:

Flash Drive Main Menu - Dec 2023.png
 
Back
Top