• Please review our updated Terms and Rules here

Tek 405x web-browser emulator

Dave, I ran into something in the emulator that I wanted to ask you about.

I had updated my 4051 Checksum program to show all the ROMs, Option Slots and ROM Expanders.

When I run it on the 405x emulator it shows an Option ROM in Slot 1. What Option ROM is that?

Click image for larger version  Name:	screen (22).png Views:	0 Size:	20.3 KB ID:	1228305

Otherwise - all the internal ROMs and Backpack Overflow ROMs match the values posted in MDC's original CHECKSUM program.

I posted the program file on my repo - there is also a zip file if a direct download of the program doesn't work with the emulator.
I used the "universal" emulator file - which does not modify any of the control characters for print control.

https://github.com/mmcgraw74/Tektronix-4051-4052-4054-Program-Files/blob/master/4051%20ROM%20Checksums%20with%20ROM%20Expanders%20 Oct2021.UNI

******** Update ***********
Looks like I found this ROM in Tek4051Rom.js

Last ROM in the file:

Code:
// 8800 to 8FFF (0800 in length)
this.DERROM = [
0x40,0x51,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x44,0x45,0x52, // DER1
0x31,0x20,0x20,0x88,0x20,0x00,0x00,0x00, // @8820
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x39,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 8820 : 39 = RTS

Looks like a debug Option ROM with an RTS?

Works fine :)

Monty
 
Last edited:
He he - I forgot about that Easter Egg :)!

I coded that up after you posted the documentation for creating option ROMs to test it out...

Dave
 
I have just posted an update that includes a feature to import/export files from Monty's Arduino-based 4924 emulator. This update also includes the recent random number generator fix by Dave.
 
I have just posted an update that includes a feature to import/export files from Monty's Arduino-based 4924 emulator. This update also includes the recent random number generator fix by Dave.

One bug remaining in your latest drop - INPUT@2:A$ in the 405x emulator is no longer working.

Dave put this GPIB primary device address 2 in the 405x emulator to return the date and time from the PC to the emulator.

My BENCHMARKS.txt program in the emulator Programs folder uses this command to time each of the benchmarks.

BENCHMARKS hangs on line 110 - which is the INPUT@2:A$ command.

It looks to me like you replaced both Dave's original GPIB primary address 1 - for OLDing a program AND GPIB address 2 for date/time with your web storage code (which I really like!)

Can you enable GPIB @2 again? I see the original code, but believe it is no longer inside the GPIB processing loop.

Also you changed the PC key mapping for the Tektronix ":" key from the single-quote key to the 'normal PC key' shift-semicolon?
It looks like you remapped all the PC keys to work directly as Tektronix keys?
Lets put that in the release notes too :)
 
Last edited:
Lots of new features in WaveyDipole's branch of the Tektronix 405x emulator plus web-storage:
  • Web-storage
    • Can load a single file or entire folder of "tape" files compatible with the new hardware 4924 GPIB Arduino Tape Emulator into the web-browser based 405x Emulator!
    • Supports menu programs loading and running other files by file number in the web-storage folder
  • Maps PC keys to Tektronix keys - including supporting CAPS LOCK!
  • True Random Number Generator (thanks Dave!!)
Here is the link to WaveyDipole's branch of the 405x emulator:
https://github.com/Twilight-Logic/Tek405xEmulator

I have uploaded a Games.tape archive file and a Games.zip file to my Tektronix 4050 program repository:
Here is the link to the zip file:
https://github.com/mmcgraw74/Tektronix-4051-4052-4054-Program-Files/blob/master/Games.zip
  • Download and unzip WaveyDipoles's branch of the latest 405x emulator with web-storage
  • Download and unzip my Games.zip
  • Run the new emulator by double-clicking the jsTEKTRONIX4051_universal.html file in the unzipped emulator folder
    • Chrome web browser will launch the emulator in a new tab
  • Click the "start" button, then click the storage button at the bottom of the emulator screen
  • Select "Storage Archive" in the pulldown next to the Import button
  • Click the Import button - use the file explorer pop-up window to select the Games.tape file
  • You should see a restore complete pop-up message. Close this message window.
  • Click on the pulldown next to Select and you should see a list of file numbers (see screenshot below)
  • Click the Cancel button to close the Storage window
  • Type the following three commands in the emulator window - which selects file 1 (Games Menu) and load it into the emulator. @5 is the GPIB address of the web-storage file system.
    • FIND@5:1
    • OLD@5:
    • RUN
Here is the screenshot of the Storage pop-up window after Importing the Games.tape storage archive (there are 37 files in this archive):

Click image for larger version  Name:	Import the Games.tape on web-storage emulator.png Views:	0 Size:	313.9 KB ID:	1228577

Here is the Games Menu (file 1):

Click image for larger version  Name:	Games Menu on web-storage emulator.png Views:	0 Size:	338.1 KB ID:	1228578
The Games menu detects which 4050 computer model is running (since it also runs on the physical 4051/4052/4054 computers with the 4924 GPIB Tape Emulator), and since the 405x emulator is detected as a 4051 - the Adventure program is not available as a selection since it requires a 4052 or 4054 computer:

Here is the graphical Star Trek game - games menu selection 8:

Click image for larger version  Name:	Startrek on web-storage emulator.png Views:	0 Size:	360.7 KB ID:	1228579

Enjoy! This is a lot of fun!
 
Last edited:
One bug remaining in your latest drop - INPUT@2:A$ in the 405x emulator is no longer working.

Dave put this GPIB primary device address 2 in the 405x emulator to return the date and time from the PC to the emulator.

My BENCHMARKS.txt program in the emulator Programs folder uses this command to time each of the benchmarks.

BENCHMARKS hangs on line 110 - which is the INPUT@2:A$ command.

It looks to me like you replaced both Dave's original GPIB primary address 1 - for OLDing a program AND GPIB address 2 for date/time with your web storage code (which I really like!)

Can you enable GPIB @2 again? I see the original code, but believe it is no longer inside the GPIB processing loop.

Also you changed the PC key mapping for the Tektronix ":" key from the single-quote key to the 'normal PC key' shift-semicolon?
It looks like you remapped all the PC keys to work directly as Tektronix keys?
Lets put that in the release notes too :)

OLD@1: should still work, but, you have to drop or load a program into the viewer window (just as one previously had to navigate and open a file) or load one from storage and then click Select. This takes you back to the emulator screen where you can type OLD@1: This will load the program currently displayed in the viewer regardless of whether it is saved in storage or not.

I was not aware of the INPUT@2: feature but I will investigate the problem.

BTW, yes, I did some work on the keyboard replacing the original deprecated JavaScript function used for capturing keystrokes with its current equivalent. That did require a change of approach and considerable re-working of the key map. I was focused on other developments and forgot to mention it.

NOTE: there was a bug that prevented OLD@1: from working as described. Please see the comment below.
 
Last edited:
I tested OLD@1: this morning and found that there was a bug that prevented it from working. I have updated Staorage.js which fixes the problem. It should now work as described above.

I also tested the INPUT@2: feature with the following commands:

INPUT@2:A$
PRINT A$

I was able to obtain a date in each case. I tested on both Chromium and Firefox on Linux, as well as Edge on Windows 10. To be absolutely sure, I also downloaded the copy from the repository and tested that as well and also had no problem getting a date. However, I then found that when the BENCHMARKS.txt was run it did not return a timestamp. I subsequently found that that INPUT@2:A$ stopped working after uploading ANY program into the emulator. Clicking Reset was insufficient and to get it working again it was necessary to re-load the emulator and start again. I think I have found and fixed the problem and the benchmark program now seems to work. I have uploaded an update.
 

Attachments

  • montys-benchmarks.png
    montys-benchmarks.png
    11.3 KB · Views: 1
Last edited:
I tested OLD@1: this morning and found that there was a bug that prevented it from working. I have updated Staorage.js which fixes the problem. It should now work as described above.

I also tested the INPUT@2: feature with the following commands:

INPUT@2:A$
PRINT A$

I was able to obtain a date in each case. I tested on both Chromium and Firefox on Linux, as well as Edge on Windows 10. To be absolutely sure, I also downloaded the copy from the repository and tested that as well and also had no problem getting a date. However, I then found that when the BENCHMARKS.txt was run it did not return a timestamp. I subsequently found that that INPUT@2:A$ stopped working after uploading ANY program into the emulator. Clicking Reset was insufficient and to get it working again it was necessary to re-load the emulator and start again. I think I have found and fixed the problem and the benchmark program now seems to work. I have uploaded an update.

Thanks for the fix for INPUT@2: !!

I downloaded your latest emulator branch and looks like your fix works great!

I added to each print statement in BENCHMARK - the values I recorded in 1978 on my 4051 at work - see my post #46 in this thread in 2018:
https://www.vcfed.org/forum/forum/ge...588#post777588

and my screenshot of running BENCHMARK which added the original results for comparison:

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==


I don't understand your screenshot - the first two test results are very different than mine, and are the simplest loops.

Can you rerun your test on the emulator?

Here is my updated BENCHMARK.txt program (LFs added in notepad for forum post readability)


Code:
90 REM PAGE
95 PRINT "Monty's 4051 Benchmarks - 10000 For/Next Loops"
96 PRINT
100 PRINT "Simple Loop 4051 result: 46 sec"
110 INPUT@2:A$
112 PRINT A$
113 GOSUB 900
114 T=S
119 FOR I=1 TO 10000
120 NEXT I
121 INPUT@2:A$
125 PRINT A$;
130 GOSUB 900
140 T=S-T
150 PRINT " Time= ";T
160 PRINT
200 PRINT "Loop X=X+1 4051 result: 105 sec"
210 INPUT@2:A$
212 PRINT A$
214 GOSUB 900
215 T=S
217 X=0
218 FOR I=1 TO 10000
219 X=X+1
220 NEXT I
221 INPUT@2:A$
225 PRINT A$;
230 GOSUB 900
240 T=S-T
250 PRINT " Time= ";T
260 PRINT
300 PRINT "Loop X=X+1+I 4051 result: 128 sec"
310 INPUT@2:A$
312 PRINT A$
313 GOSUB 900
314 T=S
317 X=0
318 FOR I=1 TO 10000
319 X=X+1+I
320 NEXT I
321 INPUT@2:A$
325 PRINT A$;
330 GOSUB 900
340 T=S-T
350 PRINT " Time= ";T
360 PRINT
400 PRINT "Loop X=X*1.01 4051 result: 138 sec"
410 INPUT@2:A$
412 PRINT A$
413 GOSUB 900
414 T=S
417 X=1
418 FOR I=1 TO 10000
419 X=X*1.01
420 NEXT I
421 INPUT@2:A$
425 PRINT A$;
430 GOSUB 900
440 T=S-T
450 PRINT " Time= ";T
460 PRINT
500 PRINT "Loop X=X*1.01*1.01 4051 result: 199 sec"
510 INPUT@2:A$
512 PRINT A$
513 GOSUB 900
514 T=S
517 X=1
518 FOR I=1 TO 10000
519 X=X*1.01*1.01
520 NEXT I
521 INPUT@2:A$
525 PRINT A$;
530 GOSUB 900
540 T=S-T
550 PRINT " Time= ";T
560 PRINT
600 PRINT "Loop X=SIN(PI) 4051 result: 442 sec"
610 INPUT@2:A$
612 PRINT A$
613 GOSUB 900
614 T=S
617 X=0
618 FOR I=1 TO 10000
619 X=SIN(PI)
620 NEXT I
621 INPUT@2:A$
625 PRINT A$;
630 GOSUB 900
640 T=S-T
650 PRINT " Time= ";T
660 PRINT
700 PRINT "Loop X=RND(-1) 4051 result: 183 sec"
710 INPUT@2:A$
712 PRINT A$
713 GOSUB 900
714 T=S
717 X=0
718 FOR I=1 TO 10000
719 X=RND(-1)
720 NEXT I
721 INPUT@2:A$
725 PRINT A$;
730 GOSUB 900
740 T=S-T
750 PRINT " Time= ";T
760 END
900 REM CALCULATE number of seconds in HH:MM:SS part of A$
910 B$=SEG(A$,11,2)
920 S=VAL(B$)*3600
930 B$=SEG(A$,14,2)
940 S=S+VAL(B$)*60
950 B$=SEG(A$,17,2)
960 S=S+VAL(B$)
970 RETURN
1000 END

- and I would love to see your result running it on your 4051 with the new tape emulator.
Of course you should run the no-timer version below and manually time the tests (I use my iphone stopwatch for that).

Here is a no-timer version of the BENCHMARK to run on 4051 or 4052/4054 with no timer support

Code:
90 REM PAGE
95 PRINT "Monty's 4051 Benchmarks - 10000 For/Next Loops"
96 PRINT
100 PRINT "Simple Loop 4051 result: 46 sec"
119 FOR I=1 TO 10000
120 NEXT I
160 PRINT
190 X=0
200 PRINT "Loop X=X+1 4051 result: 105 sec"
218 FOR I=1 TO 10000
219 X=X+1
220 NEXT I
260 PRINT
290 X=0
300 PRINT "Loop X=X+1+I 4051 result: 128 sec"
318 FOR I=1 TO 10000
319 X=X+1+I
320 NEXT I
360 PRINT
390 X=1
400 PRINT "Loop X=X*1.01 4051 result: 138 sec"
418 FOR I=1 TO 10000
419 X=X*1.01
420 NEXT I
460 PRINT
490 X=1
500 PRINT "Loop X=X*1.01*1.01 4051 result: 199 sec"
518 FOR I=1 TO 10000
519 X=X*1.01*1.01
520 NEXT I
560 PRINT
590 X=0
600 PRINT "Loop X=SIN(PI) 4051 result: 442 sec"
618 FOR I=1 TO 10000
619 X=SIN(PI)
620 NEXT I
660 PRINT
690 X=0
700 PRINT "Loop X=RND(-1) 4051 result: 183 sec"
718 FOR I=1 TO 10000
719 X=RND(-1)
720 NEXT I
760 END
 
Its probably because I navigated away from the page several times. The emulator tends to pause when another tab is selected in the browser and resumes when one goes back to the emulator tab. I will re-run it without interruption when I get a chance and run the no-timer version on the 4051 as well.
 
This is the uninterrupted benchmark test run on the Tek 4051 emulator in Chromium. It is much closer to the indicated intervals.
I will post the result on the actual Tek 4051 when i get a chance to run it.
 

Attachments

  • benchmark-test.png
    benchmark-test.png
    12.9 KB · Views: 2
Last edited:
The results on the real Tek 4051 are in!

I loaded the BENCHMARK with no timer code from nikola-wan's previous post on to the 4051 and started the stopwatch as I hit enter after typing the RUN command and marked the time at the start of each new calculation interval with results as follows:

0 sec -> start
46 sec
2 min 32 sec
4 min 40 sec
6 min 57 sec
10 min 16 sec
17 min 37 sec
20 min 40 sec <- end.

Calculating the number of seconds difference between each timestamp gives intervals as follows:

46 sec
105 sec
129 sec
137 sec
199 sec
441 sec
183 sec

This is very close indeed to the times indicated by the program prompts. Since it can take a second or so for the mind and eye to process that something has happened on the screen and take a mental snapshot of the time on the stopwatch, a variance of a second give or take is perhaps to be expected.
 

Attachments

  • benchmarks-no-timer-real-4015.jpg
    benchmarks-no-timer-real-4015.jpg
    139.7 KB · Views: 1
Last edited:
The results on the real Tek 4051 are in!

I loaded the BENCHMARK with no timer code from nikola-wan's previous post on to the 4051 and started the stopwatch as I hit enter after typing the RUN command and marked the time at the start of each new calculation interval with results as follows:

0 sec -> start
46 sec
2 min 32 sec
4 min 40 sec
6 min 57 sec
10 min 16 sec
17 min 37 sec
20 min 40 sec <- end.

Calculating the number of seconds difference between each timestamp gives intervals as follows:

46 sec
105 sec
129 sec
137 sec
199 sec
441 sec
183 sec

This is very close indeed to the times indicated by the program prompts. Since it can take a second or so for the mind and eye to process that something has happened on the screen and take a mental snapshot of the time on the stopwatch, a variance of a second give or take is perhaps to be expected.

Your results are perfect. I misstyped my original 4051 result for the Simple Loop - it was 46 seconds not 45.
Back in 1978 I didn't have a stop watch, so I did what you did - wrote down the current time and calculated the seconds after the test run.

I'm enjoying playing the games on my 4054A!

BTW - did you see my PM?
 
Monty:

I am intrigued by WaveyDipole's emulator with web-storage, but I have not been able to repeat the steps as indicated.

So far, I can get to the point where I can locate and select the Games.tape file, but I never see the "restore complete" pop-up.

Trying this in Google Chrome.

One other thought - I did try the "drag and drop" with a BASIC program file, it seems to fill the File Content Viewer nicely, but I can't seem to complete the operation to add it to the emulator so I can list it.

Thoughts? Feel free to DM me on this if you want to continue off the public forum, I can't originate, but I should be able to reply.

Regards,

Nelson
 
Nelson,

I'm glad to see someone trying @WaveyDipole's fork of the 4051 emulator!

BTW - @WaveyDipole has just pushed a request to merge his fork of the emulator back into the main 405xEmulator by @daver2 and @Philcogrump.

I've been using it heavily to develop and test many of the new programs I've developed or recovered and posted on my repo.

This emulator was developed while @WaveyDipole and I had the Flash Drive under development - so it also has several settings that I don't use.

Here is what I do use:

  1. jsTEKTRONIX4051_universal.html Run this file in the Tek405xEmulator-master folder after unzipping the emulator.
    • This emulator file is 100% compatible with programs that run directly on the real 4051/4052/4054 hardware (limited by 4051 32KB RAM and other options or BASIC commands that may not be available on the 4051) as it only supports carriage return as the delimiter for ASCII end-of-line and does NOT modify ASCII program control characters used heavily in PRINT statements for formatting.
    • I call the emulator the 4051 Emulator since it is designed around the 4051 hardware and only supports 4051 BASIC ROM CALLs and 32KB of RAM. @daver2 and @Philcogrump have been working to create a 4052 emulator which will likely be a separate project, due to completely different hardware.
    • @WaveyDipole's fork of the 405xEmulator adds several features that increase usability (direct PC keyboard support, Flash Drive compatibility - allowing emulator programs to access DATA files and other PROGRAM files. Only limitation is all the files must be in a single directory.
    • He also added 4050E01 8-slot ROM Expander to the emulator which includes the 4051R05 BINARY Program Loader ROM Pack and 4051R12 Graphics Enhancement (aka Fast Graphics) ROM Pack. This gives the emulator the ability to run my latest 4050 program uploads that include R12 Graphics - like my new Pictures folder, and support BINARY programs for 4x faster program loading!
    • The original emulator jsTEKTRONIX4051.html has CR+LF for each ASCII line and modifies ALL other control characters with character-backspace-underscore and therefore can ONLY run programs in that format (original 4051 Emulator program file format) - NONE of which can be run on the real 4050 computers.
  2. Storage window - I always change the format to 4050 Tape Emulator files.
    • The Single File and Storage Archive were older file formats friendly to javascript but NOT COMPATIBLE with 4050 computers.
  3. Storage Drag and Drop If you drag a 4050 ASCII program or data file (now the emulator also supports BINARY programs and BINARY data files) from your PC file explorer into the storage window- the emulator attempts to detect the file number, file type, and file description.
    • If the PC file is one of the files from an unzipped Flash Drive zip image - and the emulator detects the file number already exists in the emulator storage - it will pop up a message asking if you want to overwrite the file in storage. If the PC filename is NOT in Flash Drive format (described in my Flash Drive User Guide) - then the emulator will likely NOT detect a file number, file type or file description - AND it may not run correctly as it likely hasn't been modified for Flash Drive operation.
    • If I am trying to create the proper Flash Drive file header (PC filename) for a .UNI version of an older repository program using the emulator, I manually enter a file number in F#:, type in a description in Desc:, pick a Type: and Usage: and then select the Save button to store the file in the emulator.
  4. Export 4050 Tape Emulator Files will create a 4050files.zip of all the files in 4051 emulator storage.
    • Unzip this set of files to your PC
    • Windows uses a true-type font in the File Explorer window - so the flash drive filename format will look a bit wonky - but if you run cmd (Command Prompt) dir on that folder it will match my flash drive TLIST program output since Command Prompt uses a fixed point font.
  5. Flash Drive emulates a Tektronix 4924 GPIB Tape Drive
    • Flash Drive is hard-coded to GPIB Primary Address 5
    • 4050 Programs that access other program or data files from internal tape need @5 added to the 4050 BASIC FIND, OLD, APPEND, SAVE, INPUT, PRINT, READ, WRITE, BOLD, BSAVE, BAPPEN and CLOSE tape commands using the syntax published in the 4050 documentation. No option ROM Pack is needed in any 4051, 4052, 4054 or A-Series 4052A or 4054A computer to use the Flash Drive. However, some programs in the FlashDrive.zip file image may require Option ROMs such as R12, RTC or 4054 Option 30 to run.
    • Some 4050 Programs used GPIB secondary addresses to issue tape commands instead of the commands above as shown on page 41 of the 4050 BASIC Reference booklet. For example CALL "BAPPEN" and CALL "BSAVE" don't use GPIB secondary address 1, they use undocumented secondary address 17 since the BINARY program file behavior is different than the 4050 BASIC ROM ASCII program file SAVE/APPEND behavior.
    • Flash Drive uses FAT filesystem long filename support to store the tape file header as the filename instead of in the first data block like the internal tape and 4924 tape drive. The only 4050 programs I have recovered on old tapes that use INPUT and PRINT commands to access and modify the file header are utilities to add descriptions to the tape file header. The Flash Drive uses secondary address 19 to access and modify the Flash Drive filename - which is the secondary address listed in the manual for LIST/TLIST.
    • Flash Drive added one GPIB command - CD (change directory) - using GPIB secondary address 9 with INPUT and PRINT commands with the directory name as an ASCII string parameter. The 4050 table of GPIB secondary addresses lists 9 as DIRECTORY - which was used by the 4907 Floppy Drive system. This CD command allows the Flash Drive to switch from one "tape" to another tape with a single command.
    • 4050 BASIC TLIST only works with the internal tape - NOT the 4924 Tape drive NOR the Flash Drive. I wrote a TLIST program for the Flash Drive to emulate the 4050 BASIC TLIST by inputting the Flash Drive filename for each file in the current directory and printing that filename to the screen.
  6. LAST file is very important to 4050 BASIC tape commands and the Flash Drive.
    • Without a LAST file in each Flash Drive (or 4051 Emulator with Flash Drive support) directory, a FIND command and my TLIST program for the Flash Drive will hang as the command to FIND a file will never end.
  7. MARK command works in the Flash Drive and 4051 Emulator exactly like the 4050 internal tape and 4924 tape drive to create NEW files.
    • First FIND@5:X where X is the file number of any existing file - typically the LAST file
    • MARK@5:Y,1000 will create Y NEW files in numeric sequence starting at file X of size 1000 bytes
    • The MARK command will finish by creating a LAST file at the file number following the Y NEW files.
    • NOTE: if X is an existing PROGRAM or DATA file - MARK will be deleting and replacing that file with a NEW file, all other existing files with higher file numbers with ALSO be deleted!
  8. Max number of Files per Directory I have arbitrarily picked 117 as the maximum number of files supported in the Flash Drive and 4051 Emulator. The largest number of files I have found on a recovered tape so far has been 104 files on the Tektronix 4050 System Software Tape (4050 BASIC command demo and tutorial).
    • Flash Drive Reserved Files: 118-124
    • 118 Binary Test Program - used in First Time Setup to test for R05 BINARY Program Loader ROM PACK
    • 119 TLIST - provides TLIST program. In ROOT directory allows selecting a DIRECTORY supported in the MAIN Menu. In all the other directories TLIST will only list the files in that DIRECTORY.
    • 120 Favorite Dir - DATA file in all directories, contains the directory, filenumber (and in the future whether the program is ASCII or BINARY) for all of the MAIN MENU items.
    • 121 RTC AutoLoad program - used for 4052 or 4054 computers with @Jos
 
Wow - I didn't finish my edits on the 4051 Emulator and Flash Drive:

  • Reserved Files continued
    • 121 RTC Auto Load program - used for 4052 or 4054 computers with @jdreesen 4052 Multifunction Module (aka MFM) which emulates the 8-slot 4050E01 and also adds the TransEra RTC-741 real-time-clock (and Tektronix 4052 RS-232 Printer Interface). My First Time Setup can detect the RTC ROM and adds a question on whether the user wants Auto Load to the last Main Menu program and directory or no Auto Load when the 4052 or 4054 computer is powered on.
    • 122 Directories - DATA file listing the curated directories used in the MAIN Menu program.
    • 123 Configuration- DATA file containing the First Time Setup discovered options for your 4050 computer:
      • 4050 Model - 1-7: 4051, 4052, 4052A, 4054, 4054A, 4054 with Option 30, 4054A with Option 30)
      • 4050 Name - String variable with model name above
      • 1 Second Time Delay index for FOR/NEXT loop - numeric variable found in Tektronix factory CYCLE TEST Tape
      • Memory Size - 0=32KB, 1=64KB
      • Option 30 - 0=NO, 1=YES
      • R05 BINARY PROGRAM LOADER ROM PACK - 0=NO, 1=YES (Standard in all 4052/4054 BASIC ROM)
      • R12 Graphics Enhancement ROM PACK - 0=NO, 1=YES
      • RTC - 0=NO, 1=YES TransEra 741-RTC ROM for the 4052/4054. Also included in @jdreesen 4052/4054 Multifunction ROM Pack (along with 4052 RS-232 Printer Interface)
      • 4052/4054 Diagnostic ROM Pack - 0=NO, 1=YES Available from @jdreesen
    • 124 LAST - indicates end of the files in this directory. This file MUST be included in every directory or the FIND command and my file 119 TLIST programs will hang.
  • Flash Drive First Time Setup will run the very first time you power on your 4050 computer.
  • Subsequently the Main Menu will use the discovered options in file 123 to show only the menu items that work with your 4050 options.
Hope this helps!

Here are my Get Started steps for the 4051 Emulator:

  1. Download the latest FlashDrive.zip file image from: https://github.com/mmcgraw74/Tektronix-4051-4052-4054-Program-Files/tree/master/Flash_Drive
    • Unzip to get all the Flash Drive directories and 4050 Program and Data files for the Flash Drive or 4051 Emulator
  2. Download the latest 4051 Emulator as a zip file from: https://github.com/Twilight-Logic/Tek405xEmulator
    • Unzip to a directory
    • Double-click jsTEKTRONIX4051_universal.html to run the 4051 Emulator in Chrome
  3. Click the mute button if you want to mute the keyclick and "Bell" sounds (R12 Music is not supported on the 4051 Emulator yet)
  4. Click the start button to start the emulator (you will now see a blinking rectangular cursor on the display)
  5. Click the storage button
    • Change "Single file" to "4050 Tape Emulator files"
    • Click Import and OK and navigate to the Flash Drive "Pictures" directory in the file explorer window
    • Select all the files in that folder and click the Open button and then click OK to start the import to the emulator
    • Wait until the LAST file 124 is shown in the storage window, then click the Cancel button on the bottom right of the storage window to return to the emulator screen
  6. Run the Pictures Menu program by typing:
    • FIND@5:1
    • OLD@5:
    • RUN
    • Select a Picture to view or press Enter to see all of them
Enjoy!
 
@daver2 ,

Have you been working on your Tektronix 4052 or 4052 Emulator lately?

I was looking at a file that you shared some time back with the TEKTRONIX4052.js file.

That 4052 file was missing the constant ROM at E000 in the RAM address space (which they only used the last 8K of the 16K)

I don't know the source of those ROM images, but I think there could be another issue with them, based on my 'discovery' or 're-discovery' of the 4052 v5.1 ROM space fragmentation.

Jos posted a TEK_Supplied_CRC_Lists.pdf dated July 22, 1983 with his 4052 Diagnostic ROM Pack files.

On page B-2 there is a note about using the Diagnostic ROM Pack to read CRCs of 4052A/4054A or 4052/4054 with v5.1 firmware.

1658628621504.png
This note puzzled me until now, and my 4052 CRC dump program using the Diagnostic ROM Pack CALL "CRC" shows CRC values for U820A,B,C,D and U870A,B,C,D which match the V5.1 firmware versions in that same document.

In order to get my program to match the Tek document I had to change the memory range for several of the ROMs.

I think you will need to adjust the ROMs in your emulator as I believe you are using 4052 v5.1 ROM images.

In my latest 4052 CRC program (today), I have changed the comments to include the ROM range for the A,B,C,D subdivisions of U820 and U870 as shown in my photo:

1658629408278.png

Note that the memory address ranges for U820 segments are NOT contiguous and different sizes!
U820A is larger than the U820C and U820D ranges and U820B is the largest segment.

This change in v1.5 ROM decoding may be keeping your 4052 emulator from working.

And I also discovered in this exercise that the 4052A/4054A MAS boards have an additional EVEN/ODD pair of ROMs decoded in the 0-3FFF Bankswitch area!

Apparently the Diagnostic ROM was not changed to add CRC tests for those 'new' ROMs.

I added both of them (U845 and U863) to my CRC test program - if the program detects the computer is a 4052A or 4054A and here is my 4054A test output including those ROMs:

1658630247396.png

I kept the same address ranges for my CRC tests as on the 4052 - although that may not be correct as the A-Series decode for the ROM space is a single decoder with four outputs. The CONSTANT ROM decoder is different as it is decoded on the high end of RAM address range.
 
I posted my latest CRC v20 program:
https://github.com/mmcgraw74/Tektronix-4051-4052-4054-Program-Files/blob/master/Jos%20MFM%20test%20files/4%20%20%20%20%20%20ASCII%20%20%20PROG%204052%20Checksum%20%20%20%205983

Sorry about the long filename - the filename is in Flash Drive format.

Here are the parameters the program feeds to CALL "CRC" to check each ROM.
The first number includes not only the start and stop addresses but also the bankswitch bits which decode not only the ROM Backpack Slots (up to four on A-Series) but also 4050E01 ROM Expanders. The second number is the expected CRC from the Tektronix CRC List for that version, followed by my comment field.

Data statements at the beginning of the program have 4052 ROM Pack CRCs and Names if the CRC of the first ROM matches the statement.


Code:
204 DATA "E000FF0001000000","37D1","U810  E000 Constant ROM"
206 DATA "4000440000000000","AA78","U820A 4000-43FF ROM   "
208 DATA "4800800000000000","5A02","U820B 4800-7FFF ROM   "
210 DATA "8000C00000000000","F246","U825  8000-BFFF ROM   "
211 DATA "C000000000000000","A551","U835  C000-FFFF ROM   "
212 DATA "0000000000000000","9B47","U845  0000-3FFF ROM   "
213 DATA "0001000100000000","A6FF","U863  ODD for U845    "
214 DATA "4001440100000000","F95F","U870A ODD for U820A   "
216 DATA "4801800100000000","5C7E","U870B ODD for U820B   "
218 DATA "8001C00100000000","67CB","U880  ODD for U825    "
220 DATA "C001000100000000","69A0","U885  ODD for U835    "
222 DATA "E001FF0101000000","ADDD","U893  ODD Constant ROM"
224 DATA "4400460000000000","A680","U820C 4400-45FF ROM   "
226 DATA "4600480000000000","79B5","U820D 4600-47FF ROM   "
228 DATA "4401460100000000","4BD7","U870C ODD for U870C   "
230 DATA "4601480100000000","133E","U870D ODD for U870D   "
232 DATA "0000100000200000","0000","Left  SLOT    41      "
234 DATA "0000100000280000","0000","Right SLOT    51      "
236 DATA "0000200000300000","0000","Left Expander  41     "
238 DATA "0000200000310000","0000","Left Expander  42     "
240 DATA "0000200000320000","0000","Left Expander  43     "
242 DATA "0000200000330000","0000","Left Expander  44     "
244 DATA "0000200000340000","0000","Left Expander  45     "
246 DATA "0000200000350000","0000","Left Expander  46     "
248 DATA "0000200000360000","0000","Left Expander  47     "
250 DATA "0000200000370000","0000","Left Expander  48     "
252 DATA "0000200000380000","0000","Right Expander 51     "
254 DATA "0000200000390000","0000","Right Expander 52     "
256 DATA "00002000003A0000","0000","Right Expander 53     "
258 DATA "00002000003B0000","0000","Right Expander 54     "
260 DATA "00002000003C0000","0000","Right Expander 55     "
262 DATA "00002000003D0000","0000","Right Expander 56     "
264 DATA "00002000003E0000","0000","Right Expander 57     "
266 DATA "00001000003F0000","0000","Right Expander 58     "
 
Monty:

Returning to WaveyDipole's emulator with storage, I have been able to follow the Get Started steps for the 4051 Emulator procedure above to load the Games.Tape, however, I have been unable to discover the process to load and run a Single File. I can Select the file and see it in the popup window, but the program does not appear in memory when I run the LIST command.

Can you tell me what the steps are once I see the program in the popup window?

Nelson
 
The Emulator works like the 4051 with a Flash Drive for single file load - per my instructions for the Flash Drive posted here:
https://github.com/mmcgraw74/Tektronix-4051-4052-4054-Program-Files/blob/master/Flash_Drive/GPIB_Flash_Drive_User_Guide_July_20_2022.pdf:

After loading the file into the storage popup window click CANCEL button to close the popup window.

Now begin typing on the emulator window:

FIND@5:X (where X is the file number loaded into storage)
OLD@5: (loads the ASCII PROGRAM file into memory. you can now list the program)
RUN
 
Monty:

Thanks, that was what I needed.

In effect, I am "building" a tape in the storage popup window by importing individual program files, assigning them a unique file number, and saving the bundle to the emulator's "tape drive."

At that point, on exiting the storage popup, I can load the individual program file using the sequence you provided above.

What interested me here was your 4051 Memory Dump program since you are writing to the emulated 4051 screen from an assembly language program.

Thanks again -

Nelson
 
Back
Top