Tas is an assembler that assembles the Motorola Time Processor Unit
microcode. This unit is used on various Motorola MPUs, such as some
683xxx members, some CPU16 based chips and some PPC based controllers.
The TPU is quite a nice piece of hardware, it is a microcontroller
that deals with pin states and the passage of time. It is user
programmable, it has its special micro-instruction set.
Like DSPs, the TPU has a very high level of parallelism in it, therefore
the instruction set is rather special and the whole assembly language is
somewhat weird at the first glance (and at any further glances :-).

I wrote the assembler for it because there are only two other versions 
that I know of:
An official assembler, that you can buy from Motorola and runs on
Windows (maybe DOS too, used to be DOS only) and a free version, 
from Motorola again, that runs under DOS. The Windows one comes with 
extensive docs, the free one with none. In addition, Motorola does not 
give you the microcode programming docs without buying the official 
assembler. This policy IMHO sucks, but that's not relevant now. 
By the way, the document is called TPUMASMREF/D1.

Since I do not use Windows and try not to use DOS either, I decided to 
write an assembler myself that I can use on Linux. Armed with my 5 year 
old docs I jumped on it and this assembler is the result.
Added bonus that I've learned some yacc/lex :-)
Note that because my docs are so old, this assembler only assembles
TPU1 (or TPU) code. I have no idea what the differences between
TPU1 and TPU2 are. If you do and you are willing to share this info,
tell it to me and I will update the assembler to assemble for TPU2 too.

I assembled the public TPU mask sets (A and G) with tas and compared
the result against the Moto free assembler's. The S-records are
identical, with both masks. Others compared the compilatipon results of 
their proprietary microcodes against the Motorola assembler and found the
results be identical.
This, of course, does not guarantee that there are no bugs in the assembler 
but probably nothing fundamental. Anyway, as we know, free SW is always AS IS. 
So is commercial SW, but that's an other issue.

While writing the assembler, I figured that my documentation disagreed
with reality in a few places. You can read the 'MOTO_DIFFS' file for 
details. In fact, you have to read it if you want to compile the mask sets.

The only docs coming with the assembler is a man page, however, it 
(hopefully) contains enough information to let you use it.

This assembler is released under GPL 2.0, read the usual LICENSE file 
for details. The standard disclaimer applies, that is, you use it on your
own risk, neither me nor Bendor Research Pty. Ltd. is liable for any damages,
injuries, bad luck, etc. that has arisen because of using this program, 
its docs, etc. In addition, the assembler is provided AS IS, with no warranty 
and no guarantee whatsoever that it will work or be useful or that its docs 
are correct. You've heard it all before anyway.

If you want to port it or install it, read the INSTALL file.

If you find bugs or have problems using it, write to me at 
the address below. If you have TPU related questions, however,
you should look for someone else, since I'm a beginner in regards to
TPU programming myself.

If you have no problems but you port it to some other platform or
you just simply use it, I'd appreciate if you dropped me a note.
Since I'm not a native English speaker, corrections of my (mis)usage
of the language and spelling errors are most welcome.

Happy TPU-ing !

Zoltan Kocsi (a.k.a. Kocsonya)
Bendor Research Pty. Ltd.
zoltan@bendor.com.au
