Let's talk ASM-One !!
Just like many assemblers, ASM-One has been around for years.
So here's a little story about all those years.
The early years
ASM-One was originaly made by Rune-Gram Madsen (better known in the scene
as Promax). He programmed ASM-One in 700 hours during a 4 month period.
Before writing ASM-One Rune made some improvements to a resourced version
of Seka. He, however, had much more ideas for improvements than he
could fit into the ugly resourced version of Seka. He therefore started
coding ASM-One from scratch.
Rune made a deal with DMV Verlag (a German company) to sell ASM-One as a
commercial program. Unfortunally this didn't turned out the way he
had expected. The guy that signed the contract left the company 2 months later
and Rune had to threaten them with lawers and such to get DMV to do
things they had promised to do (like advertising).
All in all, ASM-One sold about 500 copies. Rune bought his first PC for
the money he earned, finished his studies on Computer Science, and started
as a consultant developing software.
Currently Rune is in his 30's, and with three people he is the owner of
a small software company (about 13 people).
This version sold by DMV was version V1.01 of ASM-One. It came with
documentation and such.
Shortly after this version, V1.02 was posted to BBS'ses around the world
by a group called Venture. Looking at what was fixed, it was very
unlikely that this was done by a group that had resourced ASM-One
V1.01. However, it did fix some very intresting bugs (see here).
Allthough V1.01 was a commercial version of ASM-One, it was just
as easy released on the BBS'ses as would V1.02.
TFA kicks in !!
Price (coder of TFA) was very impressed by ASM-One V1.01. It generaly
had the same GUI as Seka, but when it came to assembling, it was
simply a league on it's own. Price found it so impressive that he
started resourcing ASM-One. Because he had some things he wanted to
add (like DLC command's for file actions, and Sinus creating - which
was then heavily used for scrollers and a like, normaly you had to
write the code that generated the sinus and grab it from memory).
Price used the time between V1.01 and V1.02 to get a better
understanding of the source of ASM-One. Picking out the parts he
wanted to change. When V1.02 came out, Price did yet another
resource, and started making the planned changes.
Originaly however, it was never the idea to release this altered
version of ASM-One. This version of ASM-One was only ment to be used
by TFA's coders. But other coders that saw it working at parties
got interested and wanted a copy of TFA's version of ASM-One aswell.
Months went by after V1.02 was released. But no new version of
ASM-One was brought to the market. And after many months of waiting
for a new version of ASM-One, Price finally decided that a new version
would probaly never be released. He therefore renamed TFA's version of
ASM-One to ASM-One V1.05 and released in october 1991.
From that time on, Price started to add more and more usefull stuff to
ASM-One with every release. For Example: V1.20 was the first version to
work with the new GUI stuff in KS/WB 2.x, V1.25 was the first version
to support the other Motorola CPU's, MMU's and FPU's.
In the mean time, more people had resourced ASM-One, and made their
own version. Most notorius was Deftronic/Crionics, he released
Trash'm-One. Time after time Deftronic said that Trash'm-One was
NOT based on TFA's version of ASM-One. But every time Deftronic
made this claim, Price was able to proof beyond doubt that Deftronic
was lying. Price mentioned various times that he did not understood
why Deftronic reacted this way. Deftronic added many usefull features
to Trash'm-One (like the ADDWATCH and INCLINK directive, various binary
monitors and even the possibility to add your own assembler !!).
Finally Deftronic got hold of the original source of ASM-One. He
added his extra's and released it as Trash'm-One V2.0. Unfortunally,
the original version of ASM-One had no support for the 020++ and other
Motorola processors, thus neither did Trash'm-One V2.0. It also missed
many other features that Price had added. Making Trash'm-One only
limited intresting. It was also the last version Deftronic released.
And so, by 1995/96, TFA's version of ASM-One was left as the only assembler
based on the original V1.02 of ASM-One.
When Boushh picked up ASM-One
However, by this time Price had less and less time to work on ASM-One.
I (Boushh) thought this was a shame. ASM-One was still much in use, but
updates became very rare. I finaly presuaded Price to let me have a
look at ASM-One, because I had some things I wanted to change or fix.
Price helped me to fix some stuff, and he also helped me to add some extra
features (which was: to be able to select your own Font, a request of
Vital (then running our Swedish HQ)). This version was released as V1.30.
This was also the last version that used out of the blue version numbers.
Up till V1.30, version numbers where made up. They had no relation to
the actual source code numbering. Price based the new version number on
how much new features where added. But when I took over the project, I
found it very difficult to just make up a number. This project was new
for me (actually: it was my first real project ever, and a BIG one to
with much responsibility since it was used by almost every one at that
time), and I didn't know which additions would be enough to make up a
new version number.
However, the source of ASM-One was numbered. Years ago it started with 001,
and with every change made, this number was increased. By the time I
got in, the number was 371. I therefore decided to use the first two numbers
as version numbers. Leaving the last number (and many times even letters) to
save little changes (the source number is currenlty know as the revision number).
In 1998 I finaly started to realy work on ASM-One. The big part that was
bugging me was the MMU part. I had received many complains about the MMU
support of ASM-One. And when I read through the Motorola manual, I noticed
indeed many mistakes. So I started fixing these 1 by 1.
Then I stumbled on the addressing modes. ASM-One did by far not support
all of them. Specially the modes that gave the possibility to leave out
arguments and worked with brackets where mostly NOT supported.
I spend literally days and days to figure out what was wrong. Using MONAM
and DevPac as reference. I also had many discusions about what could be
left out, and how ASM-One should work with an Outer Displacement.
The first breakthrough was when I discovered that labels that where used
in 020++ addressing modes needed to be added to the 32 bit relocation
table. With this fixed I could test Price's his solution, and change it
when I found something that was incorrect. However, Price had coded this
part between the original routines, using as as little code as was
necessary. This resulted in very dense pieces of coding. A change here
could have disasterous effects on another part.
Finaly I decided to write my own parser routines. Sure, it may not be
as compact, but it does the job very well. And it lent itself prefectly
for changes afterwards. And most importantly: I knew what was happening.
In this time, I released various Beta versions of ASM-One to get response
on what I had coded. It was not untill 1999 and V1.39 that a new final
version of ASM-One was released.
By then I felt that I was done for the most of the things I wanted to change.
It was not untill the Mekka Symposium 2K-1 that I felt I needed to
take drastical measures to keep ASM-One in the market.
What had happend: Ever since Deftronic stopped with Trash'm-One, ASM-One
had no competition. But by 1999 Solo/Genetic had released AsmPro. Which was
based on ASM-One V1.28 (which was never released officially, by the way B-)
The main difference between ASM-One and AsmPro was that AsmPro worked with
RTG. It could open a screen on graphics cards that became more and more
popular with Amiga users.
At the MekkaSymposium 2k-1 I thought that this was the reason why everbody
used AsmPro instead of ASM-One. So at that party I started to code a RTG
GUI for ASM-One. And even thought I had to leave the party early, I had
some sort of a workable GUI by the end of that day.
At home I progged on, and this resulted in the first ever ASM-One which
could open a screen on a graphics card (V1.42-RTG). However, I had
much difficulty matching my new code with the old ASM-One code. Since
most of the labels where still those from Resource. Luckely I
received the original source of ASM-One V1.02 by then.
At that time I thought the labels where just fine as they where. And that
adding V1.02 labels would not have much of an impact. Well, I was VERY VERY
wrong about that. If it wasn't for these labels, you would not be
looking at ASM-One as it is today. Because these same labels made
me realize that my first 'draft' of a RTG version of ASM-One was simply
a hopeless excersise.
So there was no V1.44 RTG release. Infact, I ripped all the RTG stuff
from ASM-One and started from scratch after I had added the V1.02 labels.
In just 25 days (!!!) I was able to make 95% of ASM-One work with RTG.
This resulted in V1.45 RTG. I then took a few extra days to combine the
old graphic routines with the RTG routines so ASM-One would work with
both (something I had promised when I started adding RTG to ASM-One).
This resulted in V1.46. Which on top could also work with source with more
than 65535 lines (that is: all line based functions, including the
Show Lines option in the editor) would reset to 0 when line 65535 was
reached. As form V1.46, ASM-One could display lines up to number
999.999. But internally it can work with 4 bilion lines.
And V1.46 was also the first version that was able to Copy and Past to/from
But the funny thing is, that I started on the RTG part because I thought
that was the reason everyone used AsmPro. But in reality this was because
ASM-One had some serious bugs that made it very unstable on 68000 machines,
or when working with FPU code B-)
And this brings us up to V1.47. Which was the first version of ASM-One
ever that was able to (dis)assemble PPC code. You can even mix up
PPC and 68K coding in the same source. It is also (I believe) the
first ever Free Amiga Assembler to support the PPC's AltiVec !!!!
Unfortunaly, I got very little reaction on this extra feature of
ASM-One. I can't test it myself, thus untill somebody is willing
to tell me what maybe wrong with the current PPC support, there
will be no furter additions made.
Well, that is some history, ain't it ? Sorry that it's so long,
but I had some extra information and wanted to make the history
of ASM-One more complete than it was.
In all these years ASM-One has been used by many Amiga coders (both
professional and free-time). And yet again it's the only ASM-One
version currently being still developed. Again another competitor
has stopped (AsmPro).
And what will the future bring to ASM-One ? Well, I don't know.
The only thing that I know for sure is that I'll keepon working
on ASM-One untill the day that I think it doesn't make any sence
any more. And if that happens, I'll contribute the source of
ASM-One to the Amiga community so other people can continue
the legacy of ASM-One......
Boushh of TFA
Copyright © 1995-2006 by TFA, Artists with an Attitude