Executing Machine Code on the Tektronix 4051

Josh Dersch derschjo at mail.msu.edu
Sun Feb 22 19:28:52 CST 2009


Looks like your memory is not too bad... the documented method for 
calling ROM code (in expansion packs) is via the "CALL" command with a 
string that names the function to be called.  (i.e. I have the EDITOR 
rom, and that's invoked by doing 'CALL "EDITOR"').

Well, I just tried this:

A$="ABCDEF"
CALL "EXEC",A$

And the machine immediately reset and gave me a system error :).  So it 
seems evident that this was executing the string as machine code (and 
crashing horribly).

Further experimentation reveals that the string can only contain 
hexadecimal digits (strings containing other characters returns an I/O 
error), so I'm wagering that the "EXEC" call does a simple translation 
from the hex string to bytecodes, then executes it.

Now to work out various sundry details like calling conventions, where 
the code is in memory when it's executed (so I can do jumps) and then 
onto more fun things like doing something useful!

Thanks!
Josh

Rick Bensene wrote:
> I recall that there was a way to make the 4051 execute machine code.  I
> don't remember the exact method, but I remember that the bytes of 6800
> machine code were encoded into a character string using the CHR$()
> function.  For example, hex 43 would turn into CHR$(67), or a "C".   The
> bytes were put into a string with the limit of program size being the
> max. size of a character string.  The next part is where my memory fails
> me -- there was a way to cause the  BASIC interpreter to branch to the
> first character in the string, executing the code there.  It involved
> doing the transfer in such a way that it was if the code was branched to
> with a "jump to subroutine" call, and when the code was complete, a
> "return from subroutine" instruction would be in the code, and that
> would cause a branch back to the BASIC interpreter. As I'm writing this,
> a statement called EXEC$ or something along those lines pops into my
> head.  
>
> I don't know if this is any help at all, but I really clearly remember
> seeing 4051 programs (I worked at Tektronix from 1977 to 1990, and did a
> lot of tinkering with 4051/2/4) that filled character strings with
> hand-assembled machine code, and had a means to execute it.  Hopefully
> someone can find some docs that might substantiate these memories and
> solve the mystery.
>
> Rick Bensene
> The Old Calculator Museum
> http://oldcalculatormuseum.com
>
>
>
>
>
>   



More information about the cctech mailing list