nikola-wan
Veteran Member
As I was working on the Tektronix 4052R14 GPIB Enhancement ROM Pack powerup "incompatible" message, I discovered the 4052A/4054A ROMs contain five undocumented CALLs!
These calls are located in the 16KB BASIC ROMs at address 0000-3FFF hex.
The 4052 and 4054 have 64KB of BASIC ROM located in the ROM Data Space B and an additional 8KB of CONSTANTS ROM located at E000-FFFF (minus the top 256 bytes of I/O space) in the RAM Data Space A which also provides up to 56KB of RAM for programs and data.
Here is a screenshot of the HxD program decoding the 000-0220 hex part of the ROM Data Space B:
The 4052/4054 16K bytes of ROM from 0000-3FFF hex is the bank-switch ROM area which can be replaced by any of the backpack Option ROM Packs based upon a CALL to a routine in that Option ROM Pack.
Each 4052/4054 ROM Pack contains several important data items at the beginning which are used by the BASIC ROM to detect Option ROM Packs at powerup, initialize the ROM Packs and record the Option ROM CALL names:
Each CALL name can contain up to six ASCII characters - and CALL names shorter than six characters file the remaining characters with a space. The next two bytes contain the hex starting address for that CALL.
Undocumented CALLs were not published in the Tektronix 4050 Programmers Manual.
However the Tektronix Tekniques Winter 1982 Vol 6 No4 newsletter introduced a 4052A/4054A Assembler program on Tekniques Vol6 No4 Tape T1 which I have posted on my Tektronix 4050 Program repository:
Tekniques Vol6 No4 Tape1
The description in the newsletter reported CALL "EXEC" and when I read the 4052A/4054A assembler documentation they explained the underlined E in the CALL is typed as Ctrl-E.
If you look at the highlighted bytes in the HxD screenshot it begins with hex 05 58 45 43 20 20 and the ASCII decode on the right shows ".XEC ". The byte 05 hex is ASCII ENQ control character which can be typed in Tek 4050 BASIC as Ctrl-E! So the subsequent two bytes: 18FA indicate the start address of the CALL "EXEC" routine is at 18FA hex!
The table of Option ROM CALLs is terminated by byte 00. I noticed six more CALLs followed CALL "EXEC" - all of them starting with a control character:
Here is my table of those CALL names and their corresponding addresses - including CALL "EXEC":
Using an underlined character for the control character - here are the undocumented CALLs:
CALL "EXEC" jumps to 4052A/4054A assembly code
CALL "CLIST" displays all the detected ROM CALLs including Option ROM Packs
CALL "VLIST" displays all the BASIC variables currently defined or dimensioned and their values
CALL "LXL"
CALL "LXA"
CALL "AXA"
CALL "NTA"
CALL "NTL"
Tektronix Tekniques Fall 1983 Vol 7 No 3 page 35 in the Programming Tips section had a note about "4050A Commands Aid Program Development" and detailed the CALL "CLIST" and CALL "VLIST" commands.
I have never seen any documentation on the remaining five commands - but I suspect they are for debug. It would be great if they were for assembly language debug
By the way - I found CALL "EXEC" in the 4052/4054 ROM files posted here 4052 Firmware v5.1 (wow).
That call doesn't work on my 4052 - maybe I need to check my ROMs against the ROMs posted above.
These calls are located in the 16KB BASIC ROMs at address 0000-3FFF hex.
The 4052 and 4054 have 64KB of BASIC ROM located in the ROM Data Space B and an additional 8KB of CONSTANTS ROM located at E000-FFFF (minus the top 256 bytes of I/O space) in the RAM Data Space A which also provides up to 56KB of RAM for programs and data.
Here is a screenshot of the HxD program decoding the 000-0220 hex part of the ROM Data Space B:
The 4052/4054 16K bytes of ROM from 0000-3FFF hex is the bank-switch ROM area which can be replaced by any of the backpack Option ROM Packs based upon a CALL to a routine in that Option ROM Pack.
Each 4052/4054 ROM Pack contains several important data items at the beginning which are used by the BASIC ROM to detect Option ROM Packs at powerup, initialize the ROM Packs and record the Option ROM CALL names:
- Detect Option ROM: Bank switch a potential Option ROM into ROM space. If address offset 0010 and 0011 contained hex 4052 then store the bank switch location for this Option ROM for use with all the detected CALLs below.
- Record the Option ROM CALL names: Record the six character CALL names found starting at offset 001D, followed by their two-byte hex word starting address until hex byte 00 indicates end of CALL name table.
- Record the Option ROM common functions: POWERINGUP, INITIALIZE, DELETING_ALL, CLOSE_FILE (from Michael D. Cranford 4051 ROM Notes) hex 16-bit words starting at offset 0012 until hex 00 indicates end of common function table.
Each CALL name can contain up to six ASCII characters - and CALL names shorter than six characters file the remaining characters with a space. The next two bytes contain the hex starting address for that CALL.
Undocumented CALLs were not published in the Tektronix 4050 Programmers Manual.
However the Tektronix Tekniques Winter 1982 Vol 6 No4 newsletter introduced a 4052A/4054A Assembler program on Tekniques Vol6 No4 Tape T1 which I have posted on my Tektronix 4050 Program repository:
Tekniques Vol6 No4 Tape1
The description in the newsletter reported CALL "EXEC" and when I read the 4052A/4054A assembler documentation they explained the underlined E in the CALL is typed as Ctrl-E.
If you look at the highlighted bytes in the HxD screenshot it begins with hex 05 58 45 43 20 20 and the ASCII decode on the right shows ".XEC ". The byte 05 hex is ASCII ENQ control character which can be typed in Tek 4050 BASIC as Ctrl-E! So the subsequent two bytes: 18FA indicate the start address of the CALL "EXEC" routine is at 18FA hex!
The table of Option ROM CALLs is terminated by byte 00. I noticed six more CALLs followed CALL "EXEC" - all of them starting with a control character:
Here is my table of those CALL names and their corresponding addresses - including CALL "EXEC":
Code:
<Ctrl E>XEC 18FA
<Ctrl C>L<Ctrl I>S<Ctrl T> 0B88
<Ctrl V>L<Ctrl I>S<Ctrl T> 0C86
<Ctrl L>XL 12F8
<Ctrl L>XA 142D
<Ctrl A>XA 1578
<Ctrl N>TA 16EF
<Ctrl N>TL 17AC
Using an underlined character for the control character - here are the undocumented CALLs:
CALL "EXEC" jumps to 4052A/4054A assembly code
CALL "CLIST" displays all the detected ROM CALLs including Option ROM Packs
CALL "VLIST" displays all the BASIC variables currently defined or dimensioned and their values
CALL "LXL"
CALL "LXA"
CALL "AXA"
CALL "NTA"
CALL "NTL"
Tektronix Tekniques Fall 1983 Vol 7 No 3 page 35 in the Programming Tips section had a note about "4050A Commands Aid Program Development" and detailed the CALL "CLIST" and CALL "VLIST" commands.
I have never seen any documentation on the remaining five commands - but I suspect they are for debug. It would be great if they were for assembly language debug
By the way - I found CALL "EXEC" in the 4052/4054 ROM files posted here 4052 Firmware v5.1 (wow).
That call doesn't work on my 4052 - maybe I need to check my ROMs against the ROMs posted above.
Attachments
Last edited: