AmigaCOMAL &
why literally nobody is using this programming language since several decades?

Written by: www.lived.ch, Misel Zivanovic in September/October/November 2025
small updates and corrections on 13.12.2025
All here is offered as is. I am taking no responsibility in case of any damages!
In case you are unsure of how to use it. Then just better don't use the programming environment AmigaCOMAL!
 
A FEW WORDS ABOUT COMAL {in general}

COMAL-80 {8bit version of COMAL} was used mainly in schools back in the 80's. Its roots are however much older, somewhere around 1972/3 when Borge Christensen and Benedict Løfstedt made a decision to change the BASIC world. And they actually managed to do exactly that and COMAL-80 {first available for Z80 Microprocessor and that's why the 80 in COMAL} was born as a result.

The language mission was to replace normal, regular BASIC in schools because that one was difficult to read and understand while mostly written without any spaces {SPACE} or any structures! The result was well known as a BASIC-Spaghetti-Code.

Mostly even the programmers had no clue what was all about after some time.
COMAL-80 was way better in regard of that and it actually did not allow to write any kind of Spaghetti-Code.
And it was much faster than regular BASIC. Even faster than Commodore C128 BASIC 7 in FAST Mode {2MHz} when COMAL-80 was running just in 1MHz Mode.

Check here the examples:

  1. This is part of the code from my game which is still a Work in Progress for Commodore C128
  2. MultiColor in COMAL-80 and how to change individual color segment {LowRes-Graphics}

No need to comment what's better read- and understandable for the third party

(1) Spaghetti-Code-C128-BASIC7 (2) COMAL-80-Structured-BASIC

I actually discovered COMAL-80 not so long ago and was really so positively surprised that it made me program a game for it which is also finished in the meanwhile. I went so far to have it run with the same code on Commodore C64 and C128, natively. Because C128 is offering 10KB more memory, the actual version is only Commodore C128 compaible, but i am offering also the old one as a free download.

Next big mission of COMAL {UniCOMAL} or better said of the COMAL creators was the portability.
As i have mentioned above already, you could write a code which is going to run on every computer where COMAL was installed and you wouldn't need to worry about a thing. For that purpose, COMAL common BASIC keywords were available. Basically, you could use CP/M COMAL, write a program and it would run without problems also on C64 or Schneider CPC without any modifications.

Actually, by knowing the systems, you could even go beyond common BASIC keywords and make your program 100% compatible anyway. You would just execute the code which is needed for the individual computer {It's what i did for my COMAL-80 game, so it's proven fact that it'll work and can be done}

Impossible to tell how many people are actually using COMAL-80 nowadays, but it is definitely more than people who are using AmigaCOMAL these days or perhaps the past 30 years.

Beside beeing a Commodore C128 'slave', you can also count me in as an addicted Amiga 'slave' and that was a personal computer I received after the Commodore C128. To say it more precisely, i got my Amiga first 4-5 years later or better said 1989-1990.

I was actively involved into all Amiga events until 1997 and then from time to time when Amiga fever called me back.
All these years i never have heard a thing of or about AmigaCOMAL. Even when I accidentaly found COMAL-80, i thought it's just a language for the 8bit computers because it was available as a cartridge {or nowadays as .crt file}

After finding out how also Amiga version was/is available, i had no time to explore it because i was busy with other things.
Eventually time has finally come to explore the COMAL version for Amiga.

Close to one month i am now searching all there is about AmigaCOMAL and was practically very shocked to experience how there isn't much about it. When you search on YouTube, Facebook etc., you'll going to find absolutely nothing. The worst thing that could happen to any programming language is missing books, manuals, instructions and exactly that is what happen to AmigaCOMAL {well to be completely honest: only things that are existing are AmigaCOMAL PDF-Book for AmigaCOMAL v2.03 and a text file for AmigaCOMAL v3.x} and both of them are point to 3rd party learning material like IntuitionLibrary from Commodore and different DOS and C Books {more about it later}

Other sources like major computer magazines also had zero interest in supporting AmigaCOMAL.
All that led to only one possible outcome: It was like AmigaCOMAL never existed!

Even ComalToday magazine which is well known for Comal support {USA}, could not push AmigaCOMAL to more popularity, especially not because they were closing doors short after the AmigaCOMAL reached version 3.x. That was all in the beginning of the 90's.

I dare to say that the last 30 years not one living soul has touched {installed} AmigaCOMAL because there is absolutely nothing available about it or for it {I'll ignore here quickly the Comal Today, USA, for now}. Talking here about Europe because it is a programming language developed here. Even tho, there were 2 companies involed in developing the AmigaCOMAL:

  • MyTech {Alder COMAL, Mexico}
  • ComWare {Danish Company}

I wasn't able to find any MyTech {Alder} AmigaCOMAL version, so i guess there is never going to be something available. According to ComalToday, MyTech AmigaCOMAL was 4x slower than ComWare AmigaCOMAL. Silence afterwards, so maybe AmigaCOMAL from MyTech never saw any daylight!?

That leaves us with ComWare AmigaCOMAL or better said it leaves us with AmigaCOMAL which was developed by, at the beginning, Freddy Dan Dalgas Kristiansen & Svend Daugaard Pedersen with assistance from Borge Christensen, the father of COMAL!

ComWare is appearing as distributor for AmigaCOMAL v1.x. Later AmigaCOMAL v2.x had as a distributor UniCOMAL {well known for 8bit COMAL-80), and AmigaCOMAL v3.4 was then a one man army project fully developed and supported only by Svend Daugaard Pedersen {thank you very much} until beginning of the 1996, when he made a decision to stop the development. Unfortunately, nobody else took the mission to continue the AmigaCOMAL journey back then.

So the last AmigaCOMAL version 3.4 is closed to 30 years old {we are counting 2025 now, 4th of October}

Another interesting fact about AmigaCOMAL is how, when it came out, people were asked to port their existing 8bit COMAL-80 programs to AmigaCOMAL. This might sound a little bit crazy approach to push the AmigaCOMAL, but why not?
It would just show one of the major strenght of COMAL in general, the portability and compatibility.

This resulted in over 20 applications for AmigaCOMAL, however, who knows where that floppy disk might be.
It was offered to all buyers of AmigaCOMAL back then, but today it is nowhere available for download.

 


AmigaCOMAL UNFORTUNATELY ISN'T USED AT ALL AND ANSWERS TO FOLLOWING
QUESTIONS ARE NEEDED:

{All answered in the following text further below or at least i hope so}

  • What exactly went wrong with AmigaCOMAL?
  • Why is it so unwanted category {compared to COMAL-80}
  • Why it wasn't used for 3 decades?
  • Where is AmigaCOMAL actually?
  • Why it is only good to be a dust collector when COMAL-80 is so magically wonderful!
  • Is the lack of interest really justified?

TO GET THE ANSWERS TO THESE QUESTIONS AND MORE, WE ARE GOING TO EXEMINE
THREE AmigaCOMAL VERSIONS
:

 
 
AmigaCOMAL Version 1.4
Combiner {to make standalone files}
Document Version 1.0.0

{All you can see here below {examples} was achieved with Cloanto's Amiga Forever emulator with following specs}:

  • Amiga 500/2000
  • Kickstart 2.05, Workbench 2.10 {KS 3.1 and WB3.1}
  • Turbocard with 68030/28MHz/56MHz CPU
  • 1 MB CHIP {Graphics} RAM
  • 2-8 MB FAST RAM
  • Hard Disk {dh0:, Workbench}, {dh1:, Work}, {dh2:, ShareDrive}
 
What is nowhere to be found, is the release of AmigaCOMAL v1.0 which is leaving us with AmigaCOMAL v1.4, start position number 1 of this investigation.

AmigaCOMAL 1.4 is downloadable as an .adf file and it contains AmigaCOMAL and a bunch of Programs {actually tokenized source codes}. No manuals, books, instructions etc. in digital form are part of the disk and i also was unable to find while anything while searching for it. You are on your own in regard of everything and so the first thing i clicked was the Install icon and noticed that the preset :AmigaCOMAL.Preferences won't work and the same for the rest of the folder path!
Solution: You must use the full path to point to the file {e.g. dh1:Coding/COMAL14/AmigaCOMAL.Preferences} and then the same for the {suggested folder} folders. Except for the LSTFiles! It is missing {and Programs is suggested as a default instead}. I didn't want it so and have created LSTFiles folder and change the path to there within the during the {Preferences} Install process.
It easy, no worries!

Same was than valid for the folders {e.g. dh1:Coding/COMAL14/Packages}
If you don't do it that way, you won't be able to USE the packages and it will result in error.

The next obstacle was loading a file over the menu PROJECT/Load because even with the version 1.4, there was still no sign of any kind of file requester {if you know AmigaBASIC from back in 1985 you'll know what i mean}. To get to your files, you practically need to know a name of every file you want to load, but first you must type the full path to the location where they are located. And that is again making us do this {dh1:Coding/COMAL14/Programs/}
It isn't all so bad! You need to type it just once... {the full* Path}, however, to know all the program names is another story {that was always a pain when working with AmigaBASIC which was available 1985, but this is end of 1989! and nothing changed?}

*Alternative solution would be to make an assignment in User-Startup:

{e.g. assign ComalCode: dh1:Coding/COMAL14/Programs}
{doing so, you would type just ComalCode in Path field { instead of the full Path} and then name of the .sav file {source code}, e.g. lines in File field}

AmigaCOMAL14-MenuLoad AmigaCOMAL14-DOS-Load

Well, good thing is, with AmigaCOMAL you can access disk drives and floppy disk directly inside of the source code listing. I find that very cool and it actually works pretty well. So, loading any programs is suddenly no big deal. Done within few seconds!

Here are the DOS commands you'll need to sucessfuly navigate through the folder structure:

  • DIR will list the content of the active folder
  • CD "/" will bring you one folder back within the active folder path
  • CD "folder name" will change to that folder
  • LOAD "file name" will load the file {no need to write filename.sav, just the filename}
  • SAVE "file name" will save the file as filename.sav {.sav is added automatically}
  • LIST "file name" will list the file as a text file {.lst file ending is added automatically}
  • ENTER ".lst name" will load the Listed file {saved with LIST "file name"}

NOTE: No need to write filename ending .LST to know what it is. It's automatically added when LISTED for saving!
SAME when you load a listed file with ENTER

IMPORTANT TO KNOW:
SAVE, LOAD and LIST are not part of the DOS commands here!
LIST will list the source code you have loaded {with LOAD}. It also can be used to list the tokenized source code as a text file and save it {as mentioned above}. I added them here because you need them to successfuly achieve your goals!

For example, if you are writting a larger code and want to navigate quicker through the code to exemine it with a text file viewer {i reccommend the TextView for that task}. You can quick LIST the code to RAM DISK with a simple command:

LIST "RAM:lines"

This will list the code as readable text file and it can be opened with a TextView.
In fact, you could also open it with ED {Editor} make changes, save it, and load it with ENTER in AmigaCOMAL {ENTER "RAM:lines"} and it will load and you can run it without any issues!

What's on the flopy disk ? {except the missing manuals!}

  • Programs folder. Examples {a mix of Danish and English 'world' made it difficult to read the included code comments}
  • Install file {compiled! Ergo it looks like written in AmigaCOMAL itself}
  • PublicDomain Folder containing a Cruncher {No idea if that really was a part of the original AmigaCOMAL disk!?}
  • Packages folder with included packages, read keywords.
  • More file {{a text reader}. Perhaps there was some kind of instruction included in the past, but went missing!?}
  • LSTFiles folder {i had to make that one for text listings of the tokenized source code}
  • Well... nothing more!

Not much there to start with, but we actually did came so far without sweating a lot. Not giving up now, right!

So what do we need to start coding a few examples? Exactly, we need well known classic common BASIC keywords for AmigaCOMAL and you can grab them right here: AmigaCOMAL v1.4 COMMON KEYWORDS {incl. examples}

Now let us write a small program, which could actually lead to a mini Workbench game!

0005 USE GRAPHICS
0010 // by www.lived.ch, October-2025
0020 result:=0; fight:=0
0030 graphicswindow(0) // our WB-Window
0035 cs // clears the screen
0040 CURSOR 1,1 // Cursor to left upper corner
0050 LOOP
0060 PRINT AT 1,1: "***********************************"
0070 PRINT AT 2,1: "Welcome to my AmigaCOMAL v1.4 SHOW!"
0080 PRINT AT 3,1: "***********************************"
0090 INPUT AT 5,1,1: "Choose one category [1-3] : ": round$
0100 IF round$ IN "0123456789" THEN
0110 round$:=round$(1:1); result:=val(round$)
0120 IF result>=1 AND result<=3 THEN
0130 result:=result*7; fight:=1
0140 ENDIF
0150 ELSE
0155 cs
0160 ENDIF
0170 IF fight=1 THEN EXIT
0180 ENDLOOP
0190 PRINT AT 7,1: "We are playing "+str$(result)+" rounds today"
0210 PRINT AT 9,1: "Press any key"
0220 WAIT
0230 END

This is a nice little and not complicated code using just {almost} common BASIC keywords.
Exception is of course the linking of the GRAPHICS package to handle the window and clear it. Nothing fancy alltogether and pretty much very easy to understand. That's a quickly done program running on Workbench.

And what a luck, in the meanwhile i was able to find a compiler which is compatible with the AmigaCOMAL v1.4
Which means you can create a standalone application in no time which can run without the neccesity to have AmigaCOMAL installed on target computer. I did exactly that and already the first try all was good and running, as you can see further below.:

Compiling the Source Code is no magic!
All you must do is copy the content of the Compiler folder {from ComalDev floppy, 4 files} to RAM.
Then copy also the AmigaCOMAL source code file you wish to compile to RAM:

Before you double click the Compile Icon,click on it JUST ONCE and go to MENU and choose, Icon/Information. This will open a window where you can set the Tool Type {the path to your AmigaCOMAL v1.40 Packages folder!}
When that is done, double click on Compile Icon and type RAM:{the name of your source code}. e.g. RAM:Example-01

Second option is to use CLI {Shell} and quickly write a line of code to compile it!

compile Example-01 -p ram: -u dh1:Coding/COMAL14/Packages
{of course, this is so in my case and if you have this differently, you need to modify the line accordingly}

AmigaComal140-Compiler AmigaComal140-Example-01 AmigaCOMAL140-CompilerReady AmigaCOMAL140-CompileProcess

{SCREENSHOTS are showing how to compile AmigaCOMAL v1.4 Source Code}

 

Wasn't so really difficult. Easy to use even without any detailed instruction and despite all the fact that are talking for COMAL or AmigaCOMAL it never really managed to make big waves in the past and also not during the past 30 years.
No coming back and no celebration related to AmigaCOMAL

I was exploring AmigaCOMAL the past weeks and I assume how the answer to the first question lies in the strategy of COMAL or AmigaCOMAL to be promoted and known as a school software without any competion. That was somehow closed environment without any options to really spread out of it and conquer to world.
On one hand that was a good strategy and it actually worked well! Teachers are Professor were alltogether happy and satisfied with COMAL and it was used at schools and at home
On the other hand it led to a business disaster ouside of the school and the language was ignored by literally everyone and everywhere. It just wasn't sufficient enough to make major computer magazines happy!

One of the reason is the incapabilty of the COMAL language to completely use the native hardware. It was limited to a certain level of usage and only if it was noticed how additional functionality could be helpful in different ways, it was added. Not one second earlier!

That is a no go for computer magazines which always wanted to show what can be done with the hardware. For that reason they inroduced tons of tips und tricks and make billions of listings {I always typed them until the doctor has ring the bell, haha}
And COMAL, even if it was great, it put a hardware usage limitation to establish COMAL program portability and compatibility.
It just wasn't that for the thirsty audience outside of the schools.
To bad COMAL makers didn't recognized that and made a parallel version of COMAL which would be a native master not cearing about the portability and compatibility.

Such "small" things led to following: even today 5th of October 2025 there is not one word about AmigaCOMAL existing under the category AMIGA PROGRAMMING LANGUAGES!

https://en.wikipedia.org/wiki/Amiga_programming_languages

WikiPedia-NoAmigaCOMAL

Can you imagine that? Well, even if you can't, it's a pure reality!
{Have to mention tho, how under COMAL there is a small mentioning existing. Namely how COMAL also runs on AMIGA!}

You might say the only place where AmigaCOMAL was known is the USA and Canada thanks to Comal Today magazine {which was managaed by a bunch of volunteers who gave blood and sweat to support the language which totally convinced them}. Not without any reasons because COMAL is great, it's just the parents were obviously not so the business gurus, but i guess they reached their goals in the 80's anyway {maybe not to the percentage they wanted, but still} and made a lot of students feel better in giving them the oportunity to use COMAL, instead of normal BASIC. The difference is clearly there as i have shown at the beginning of this writing}

AmigaCOMAL was born in 1989 {probably the 1.0 version if such thing has ever existed?}.
Or maybe it did started with the version 1.4 because COMAL was well known as COMAL 0.14, despite the fact how COMAL-80 v2.0.1 hit the market long time ago. So there is a small {number} connection.
It soon has started to update and withing few weeks it already has reach the version 2.0! and practically over night it went to version 2.03 at the beginning of 1990. Shortly after, also the version 2.04 and 2.04L and 2,10 were ready.

However, that is also having it's dark sides! Sure, the updates were delivered, but they were incompatible to any previous versions because the source code was saved tokenized and exactly that wasn't the same with every new realease.
As a result, source code and the packages were each time incompatible and you had to convert them first in order to use them with the newest release.

Making the source code compatible wasn't actually so difficult, hower time consuming nevertheless, especially if you had a lot of source code. Not even talking about the packages which were counting above 30 and converting them practically every few weeks, well i don't know. Probably not all were just happy about it.

Long before the last AmigaCOMAL v2.10 hit the market, development of the version AmigaCOMAL 3.x was running full speed ahead and of course it had negative impact on the v2.xx. Not just that AmigaCOMAL v2.xx was buggy, it also didn't get necessary attention anymore and a lot of minor bugs are still alive {especially in the version 2.03 which i could test}.
Even the following releases are having the same bugs, namly the version AmigaCOMAL 2.04, AmigaCOMAL 2.04L and AmigaCOMAL 2.10.

All that because of the AmigaCOMAL version 3.x

Comal Today people sugessted to wait and not to update to AmigaReleases 2.04/L and 2.10, and buy AmigaCOMAL 3.x instead.
Of course, when you know how bugs won't be fixed, that was the only logical solution and suggestion.

And so here we are, AmigaCOMAL v3.01!
This one is available {downloadable}, however it looks exactly like the version 3.4 which is available in Aminet and that one was tested and it isn't quite bug free too and the manual isn't reflecting all changes, but it is good nevertheless.

More about this subject {much} later!

Allright, i guess we have driftet a bit away from the AmigaCOMAL v1.4, so lets go back right here {hehe...}

I was experimenting with the shortcuts and found out how following combinations are quite handy:
{there is more, but these are the most useful}
{while trying all out, i switched to Italic and underline!Looks like there is no way back! Had to restart AmigaCOMAL}
{Therefore: AVOID following combo CTRL + P, R, S, T !!!}

 
AmigaCOMAL Key-ShortCuts {no specific order}
{COMBO} {FUNCTION}
CTRL + L This clears the {source code} screen completely
CTRL + W Positioning the cursor to the top of the screen
CTRL + X Positioning the cursor to the bottom screen
CTRL + A Clears the line only to the right from cursor
CTRL + B Clears all from the cursor to the bottom of the screen
CTRL + Z Characters Insert Mode ON
CTRL + Y Characters Insert Mode OFF {overwrite}
CTRL + N Insert one line {e.g. to add a line between 10 and 20}
You don't need to go down to the end of the listing or to overwrite the exising line with the new line number!
 

As we slowly know by now, AmigaCOMAL is based on built-in COMMON BASIC Keywords and also the Packages. Packages are having file name ending .PCK {that was changed in later versions}.

In COMAL-80, Packages were written in assembler and you really had to be THE most wanted assembler Guru on the planet {Earth} to write a package for it. Even tho, there are some books existing for it which are seating to bring some light into the darkness! Why it isn't working? Well, there is no assembler Guru guy existing who can explain to a mortal guys {like we are, right} how it is done... They can write 300 pages full of cryptical explainations and telling stories how easy it is, however end of the day you wouldn't even know how the write the first 5 lines of assembly code. They just can't do it, but have other skills therefore!

What? COMAL writing COMAL Packages! Why didn't you tell us immediately!?

Yes, you can write Packages directly using AmigaCOMAL and extend the functionality without touching any Assembler or even C {actually C knowledge would not be so bad because AmigaCOMAL has a lot of things common with C or C++, however it's not quite the same and sometimes also very difficult to understand. Syntax was therefore often changed in the upcoming AmigaCOMAL version to make it better accessible. Not always combined with success, unfortunately}

Anyway, writting a package is now super easy and you can then link it with the USE command, e.g. 0010 USE ourellipse
That's it, no more assembler or whatever!

Let's do it!
We will make a package that is going to draw 50 color ellipses/circles accross the window with just a single command:
Here we go:

Making a COMAL .pck Package {AmigaCOMAL v1.4} How to use it {it's very simple!}
This looks huge, but only because we are also taking care of the limitations, meaning, we are limiting the number of inner circles, the value of the radius and are replacing values outside of our limitations. As you can see, it's practically a regular Procedure with added EXPORT command and it must be a CLOSED procedure!
Using the Package is fairly easy.
You need to call the Package itself and then also the GRAPHICS Package again to meet the requirements for the graphicswindow(0)
NOTE: Packages are saved incl. the extension .pck, e.g.
SAVE "OurEllipse.pck"
The best way to make Packages is to NOT create a Package immediately, but to test it first as a normal FUNCtion or PROCedure and when it's working well, turn it to a Package!
Programs/Listings are NOT saved with the file extension! e.g. SAVE "EllipseDemo" or when listed to file: LIST "EllipseDemo", or LIST "RAM:EllipseDemo" to save it to RAM: and not into the active folder!
   

0010 // Our First AmigaCOMAL Package
0020 // 5th of October 2025
0030
0040 USE GRAPHICS
0050 EXPORT ourellipse(,)
0060
0070 PROC ourellipse(innercircle,x,y,xrad,yrad) CLOSED
0080 IF innercircle>0 AND innercircle<15 THEN
0090 IF xrad<1 OR xrad>30 THEN
0100 xrad:=30
0110 ENDIF
0120 IF yrad<1 OR yrad>30 THEN
0130 yrad:=30
0140 ENDIF
0150 FOR a:=0 TO innercircle STEP 2 DO
0160 ellipse(x,y,xrad-a,yrad-a)
0170 ENDFOR a
0180 ELSE
0190 PRINT AT 2,1: "[ InnerCircle: 1-15 max! None ]"
0200 PRINT AT 3,1: "[ X-Radius : 1-30 max! Default 30 ]"
0210 PRINT AT 4,1: "[ Y-Radius : 1-30 max! Default 30 ]"
0220 ENDIF
0230 ENDPROC ourellipse

0010 // OurEllipse - ExampleCode
0020 // by www.lived.ch, 2025
0030
0040 USE OURELLIPSE
0050 USE GRAPHICS
0060 graphicswindow(0)
0070 cs
0080 FOR b:=1 TO 50 DO
0090 pencolor(rnd(4,15))
0100 xarea:=rnd(30,width-30)
0110 yarea:=rnd(30,height-30)
0120 ourellipse(10,xarea,yarea,30,15)
0130 ENDFOR b
0140 PRINT AT 1,1: "Press Any Key To EXIT"
0150 WAIT
0160 END

NOTE:
This Package can be listed with the keyword LISTPACK and the content can be seen with LISTPACK ourellipse.

You can at any time load the Package and modify it as you wish to adapt it to your needs! {always DISCARD old Packages before you use new modified versions with the same name!}

On the right you can see the result.

OurEllipsePackageDemo
   
If we watch this Package example carefully, it can be noticed how the message will appear only if the inner circle value isn't within the limits. If other values are not good, no message will appear, however, the value itself will be changed anyway.
Of course, I'll leave that to you to find a solution. It's just a few more IF THEN...
And of course, if you'll need additional variable, you need to define them within the procedure because it is CLOSED one.
   
VERY IMPORTANT {DISCARD command}
What you also should know and memorize is how USE Package is behaving. That is concerning the modification of the Package you have used once, 0010 USE OURELLIPSE and than you have noticed it isn't quite that, how about some changes.
When modification is done and saved { save "OurEllipse.pck" }, you load your program again to make the usage of the OurEllipse Package, however, not much has changed!
And it isn't because the old Package is still active in the memory and it won't be replaced by another, newer version, when the same file {Package} name is used!
What you MUST do to activate the newest modified Package is use the command: DISCARD {in direct mode, no lines}. When you start your program again, your new modified Package will be active and the change you have made will be visible.
   

In regard of Amiga Resolutions, it is important to know how Circle(100,100,50) want result in a circle if the resolution is set yo High Resolution PAL 640x256. The result will be pretty much oval. However, if the resolution is High Resolution PAL interlaced, then it will be pretty much a round solution.
It means you always need to calculate the proper values in case of non-interlaced PAL resolution.
In terms of COLOR, this example is making usage of 16 COLOR REGISTERS and that means that your AmigaCOMAL.Preferences and Workbench must be set to 4 Bitplanes {=16 COLORS} in order to not get any errors hier!
And if you do get an error, now you know where to search for the solutions {alternative approach would be to use PCGRAPHICS Package because there you could set or use graphicscreen(4) which is then indipendant from your Workbench setting and it would give you 16 COLORS! .

Okay, so much about the Packages. That wasn't so difficult and i hope i managed to explain it understandable!

 
THE WORLD OF C and C++ {or not quite} in AmigaCOMAL 1.4

Somewhere in all these informations so far, I've mentioned how COMAL-80 is a combo of BASIC and PASCAL.
The programmers of AmigaCOMAL went a bit further and have made out of it a combination of BASIC, PASCAL, C and C++ programming language. Especially the last to 'horses' will very probably let any BASIC/PASCAL user sweat. And AmigaCOMAL C and C++ will let you sweat even more and give you on top of that a good portion of PITA {Pain in the ass!}
I honestly have no idea why the two programmers made that decision?!

While COMAL-80 with BASIC {common BASIC keywords + easy understandable commands} / PASCAL {the structure of the PASCAL} combo, really can be described as a brilliant move and honorable stategy, the AmigaCOMAL with addition of extra PASCAL, C, C++ element mix {which aren'y really PASCAL, C or C++, but something that could be their distant cousin} was a huge and big mistake! {in my opinion!}.Nevertheless, the programmers pushed that strategy until the very end, beginning of 1996 {and now AmigaCOMAL isn't even listed as an Amiga programming language, as mentioned already! That's really sad, but after i am done here, the world will know and talk about it, hehe}

Is it now PASCAL, C or C++ or is it not?
When you look at it from the San Francisco bridge, you might think it is PASCAL, C and C++, and then, when you come closer and want to feel it, you think: Who change the template!? That;s not what i have seen before while standing on the bridge!

Well, it is, that's what you have seen! No mistakes. It's just the picture is changing to closer your get!
To make it even worst than is, the syntax of AmigaCOMAL PASCAL, C and C++ implementation is a strange mix and it was changed with new releases and you basically had to start from scratch.
Even the last version {AmigaCOMAL v3.4} still only could be decribed as a distance cousin of PASCAL,C ^ C++ combo. Lucklily, it wasn't so unnecessarly too complicated as everything before and the PASCAL influance was practically taken away {not the structure, but the syntax {thanx God and thank you developer}}

 
WINDOW MAGIC WITH AmigaCOMAL version of C & C++

{ Why i think AmigaCOMAL made a deadly mistake by using a mix of PASCAL, C and C++ structure in a BASIC programming language, can clearly be seen in these examples below. AmigaCOMAL was first available in September 1989 and already in November 1989 they managed to jump to a version 2.0! BlitzBasic 2 came out at the beginning of 1990.
With one eye closed, we can say they came out the same day with different visions:

  • BlitzBasic remains BASIC the whole run and has its clear and unique identity.
  • AmigaCOMAL obviously has some identity issues and can't decide what's gonna be: BASIC, PASCAL, C, C++

As already mentioned, AmigaCOMAL as BASIC and structured source code PASCAL style is a part where fun knows no end. However, when you jump over that fence, it's not so fun anymore. It's not BASIC, it's not C and it's not C++, it's a mix of everything and very difficult to digest. Especially because you need like at least 6 different additional books to master that and have skills to convert it to AmigaCOMAL version of PASCAL, C and C++!

Not saying it isn't managable, but the problem is that someone who wants to learn C, C++ or PASCAL for that matter sure isn't going to get busy with AmigaCOMAL to do that!! And on the opposite side, someone who want's to get his hands dirty with BASIC, sure wont' be very excited to also learn C, C++ and PASCAL {or better said their distant cousin because it's not real C,C++ or PASCAL}

Okay, now let us check the examples right here below:

 

AmigaCOMAL v1.4 (OpenWindow) Result:
{this is needed to open a window with a user specifications}  
0010
0020 USE SYSTEM
0030 USE WINDOWS
0040
0050 POINTER demo'window@ TO window@
0060 demo'name$:="DemoWindow"
0070 open'window(demo'window@,demo'name$)
0075 page
0080 PRINT AT 1,1: "Press SPACE to close the window!"
0090 LOOP
0100 IF key$=chr$(32) THEN
0110 nowindow
0120 EXIT
0130 ENDIF
0140 ENDLOOP
0150 END
0160 PROC open'window(REF windowptr@,REF name$) CLOSED
0170 POINTER mynewwindow@ TO newwindow@
0180 allocate(mynewwindow@)
0190 mynewwindow@:=newwindow@
0200 mynewwindow@.leftedge%:=50
0210 mynewwindow@.topedge%:=50
0220 mynewwindow@.type%:=comalstruct@.exec_io@.screentype%
0230 mynewwindow@.screen#:=comalstruct@.exec_io@.screen#
0240 mynewwindow@.width%:=550
0250 mynewwindow@.height%:=150
0260 mynewwindow@.flags#:=windowdrag#+windowclose#+windowdepth#+activate#
0270 mynewwindow@.title#:=^name$+4
0280 mynewwindow@.idcmpflags#:=$200 // windowclose
0290 ^windowptr@:=openwindow(^mynewwindow@)
0300 deallocate(mynewwindow@)
0310 ENDPROC open'window
0320
0330 PROC nowindow
0340 IF ^demo'window@<>0 THEN closewindow(^demo'window@)
0350 ENDPROC nowindow

AmigaCOMAL-140-C

AmigaCOMAL14-Window

   
Amiga BlitzBasic 2 {Release 1.0} Result:
{And this is needed to do the same in BlitzBasic}  
WBStartup
WbToScreen 1
WBenchToFront_
Window 1,50,50,550,150,$1008,"DemoWindow",1,2
MouseWait
WBenchToBack_
End

BlitzBasic2-Code

BlitzBASIC-2-DemoWin

Do i really need to ask why out of 100, 100 took BlitzBasic and 0 AmigaCOMAL!?
Truth is, AmigaCOMAL isn't so bad at all, but the DESTRUCTIVE LACK of books and manual makes it impossible to learn and share the experience! There also aren't many useful examples existing. {when AmigaCOMAL came out, people were asked to port their existing COMAL programs to AmigaCOMAL. That sure didn't included Intuition part and rest of the Amiga Libraries.
   

In addition to AmigaCOMAL Book for the version 2.10, there was also a book available where all the Packages are described in detail. Not even God can find that one {it means, when it's still in someone's basement, then sure nobody will find it online {that's including www.archive.org}}

Here is the proof of existance {text block where additional manual is mentioned}:

"In the catalogue Packages all the packages are supplied as standard with AmigaCOMAL.
They are all described in the manual you have I hope in front of
you. Let's take a look at two of the packages, namely Iff and IntuiSupport"

However, that one is standing heaviliy in conflict with the following statement in the same book {of AmigaCOMAL v2.10}:

"The AmigaCOMAL system consists of this manual and one disk. You are
encouraged to make a working copy of the disk and use the copy only."

I assume they just forgot to delete or edit this statement because the example is existing. But who knows?
Let us hope the mentioned manual does exist!

With this book in your pocket, all the cryptical commands represented in AmigaCOMAL as a mix of PASCAL, C and C++, suddenly would not be the problem!
Apart from missing manuals, the existing once were written very cheap and in many cases you were just fast forwarded to external books to catch up {such procedure is understandable when just two guys were working on the AmigaCOMAL project and there was surely no spare time available to write fancy books about it too}

Here are the books, we all are talking about:
{Now you really can't run away and must write an application with AmigaCOMAL v1.4 for Amiga}
{Hey, i am not kidding! ;-) }

And not to forget the AmigaDOS because you can access DOS commands from AmigaCOMAL.
{This book is covering pretty much everything in regard of AmigaDOS}

These Books can be useful for all version of AmigaCOMAL in one or another way.
In case you are interested in programming on Amiga with AmigaCOMAL, you'll need all of them {you'll sure enough need them also if you decide to start your programming career with other Amiga programming languages too. And there are many}

Now i will quickly jump to the Packages again, because there is a thing that is extremely bothering me and i would really love to know what the creators exactly were thinking? I mean, the way how it is presented, it's absolutely useless and makes also absolutely no sense at all. As you know, i made a list of all Packages and also the keywords and if description of those keywords would have been more detailed then probably we would not even need that book no one is having to be able to use AmigaCOMAL properly nowadays.

Hier an example of what i mean:

PROC pckprintitext(i0#,i1#,i2#,i3#)
{AmigaCOMAL v1.4 - Procedure to bring text to window}
{What is this exactly? Why not with more details!}
{Literally all descriptions are like that, crazy}
{and totally unusable}

Then i went to Amiga Intuition Reference Guide and there it is like this here and if nothing else, we got more information about it, but aren't really so far to write "Hello World!" inside of the window!

PrintIText (RPort, IText, LeftOffset, TopOffset)
RPort = pointer to the RastPort to receive the text.
IText = pointer to an IntuiText structure.
LeftOffset = offset added to IntuiTextx coordinate.
TopOffset = offset added to IntuiTexty coordinate.

I am by no means a C, C++, C# or whatever C guy and i refused to ever touch it because it makes no sense to write > 50 lines of source code to write two words into the memory where it is then going to be visible on the screen.

Anyway, IText isn't something like text string, e.g. "Hello World!", no, it's just a pointer to an IntuiText structure. It actually means then you first must have that structure created and that looks like this:
{and this is C language, who knows how it would look in AmigaCOMAL Syntax!? I found nothing, so can't tell}

struct IntuiText
{
UBYTE FrontPen, BackPen;
UBYTE DrawMode;
SHORT LeftEdge;
SHORT TopEdge;
struct TextAttr *ITextFont;
UBYTE *IText;
struct IntuiText *NextText;
}

And if you now think that's it! No, it's not.... There is this fancy RPort. As we see it, it's also needed and it's not just something like , i don't know, e.g. PORT 100, no, that one is big like two 500 Pages books! This is now from the AmigaCOMAL v2.10 book because there is nothing else available, but it will demonstrate well what i mean:

RECORD rastport@
FIELD layer#
POINTER bitmap@ TO bitmap@
POINTER areaptrn%
FIELD tmpras#
FIELD areainfo#
FIELD gelsinfo#
FIELD mask!
FIELD fgpen!, bgpen!, aolpen!
FIELD dramde!
FIELD areaptsz!
FIELD Linpatcnt!
FIELD durmy!
FIELD flags%
FIELD lineptrn%
FIELD cp_x%, cp_y%
FIELD minterms!(8)
FIELD penwidth%, penheight%
FIELD font#
FIELD algostyle!
FIELD txflags!
FIELD txheight%, txwidth%
FIELD txbaseline%
FIELD txspacing%
FIELD rp_user#
FIELD wordreserved%(7)
FIELD longreserved#(2)
FIELD reserved!(8)
ENDRECORD rastport@

Really! All that to write two words?!

My grandmother was old and she had no clues about the computers, but she knew well how not always the smart people are winning the competition. Developers of AmigaCOMAL were smart, no doubt about that, but they lost completely! Made a language which nobody was using and nobody is using and it is not even listed among all available Amiga programming languages!

Hell, i just hope my text can destroy the statistic and make 1-2 out of zero AmigaCOMAL users!
 
Latest now you probably stopped wondering why AmigaCOMAL is so unused and unknown these days or better said the past three decades. However, we touched only the version of AmigaCOMAL v1.4 there are still two more to go and maybe we will find out how it wasn't really justified to let AmigaCOMAL be a dust collector for so many decades!
 
We are closing here the AmigaCOMAL v1.4 section for now.
It was a mixed journey and i honestly hope that one day {before i turn 100!} some nice person is going to upload all those nice little books and manuals for AmigaCOMAL v1.4.
 
 
 

AmigaCOMAL Version 2.03
PDF BOOK for AmigaCOMAL V2.10
Document Version 1.0.0

What is this floppy disk offering?

AmigaCOMAL v2.03 with Danish explaination in regard of most things, inncluding some examples. This was of course unfortunate, especially because Americans {I mean Hollywood here} made sure we must speak English and not Danish language in Europe. Well, that was the first obstacle to enjoy AmigaCOMAL-v2.03.
Of course, with our previous experience with AmigaCOMAL-v1.4 it probably would not be a big deal to install it. However, thinking how 1.4 = 2.03 would be the same, is just wrong! Therefore i have decided to translate all docs {Files in Danish language} on the floppy to English.
That took me a while, but it was a challenging task. Btw. you can download the original floppy disk of AmigaCOMAL-v2.03 {Danish-Language} and also my AmigaCOMAL-v2/03 compilation with some addition and the mentioned translated documentation {all in English, main download}. That is a .7zip and installation text is included.
Basically you just need to run the install script or not if you place the AmigaCOMAL folder like this:

Work:Coding/AmigaCOMAL

So we have all that in English and it was already useful the next second!
Because of the AmigaCompiler, which is now included on the floppy, the installation procedure cannot be done as mentione in the manual. And what i find interesting here, it's not the installation cannot be done! What is more music for my ears, is that we now know that there was or still is a Manual for AmigaCOMAL-v2.03

So people, who have it! Upload it now! Stop wasting precious time! Thank you very much!

Now that you have all you need to become the AmigaCOMAL-v2/03 king, let's continue with exploring this version of the programming language nobody is using.

I checked the Programs folder first because there is no real manual for this version existing {and available AmigaCOMAL-v2.10 PDF Book is not really compatible and mentioned examples in the book are missing as a Package on the floppy disk}

So what do we have?

         
AmigaCOMAL-v2.03-Dansk AC203-LibraryAccess LibraryAccess-1 LibraryAccess-2 AC203-MouseDemo
         
Let's move straight to the point, also here the PASCAL, C, C++ gang is omnipresence and it's again cryptical, impossible to understand why exactly this combo is sleeping in the same bed with madam BASIC also in this version!?
 
We won't bother with that part because it is pointless without any book or manual where everything it is properly explained. Hopefully that will be soon differently, meaning: what are you waiting people? Upload it finally!
 

Can't tell if it is fair to compare it again with BlitzBasic, however this MouseDemo looks like a car with parts that actually aren't necessary to get the engine running... In BlitzBasic you have MouseX and MouseY, MouseButton.

That are unbeatable adventages of any emulator. Quickly switching or even having active all three WB versions at the same time.
I tried MouseDemo because i wanted to see if it's going to work from WB1.3 to WB3.1.
It's wasn't working with Woekbench3.1, but did with WB1.3 and WB2.10. Luckily it did not crash the system and AmigaCOMAL also did not crash. It must be just a minor problem.

What negatively surprized me, it's not showing the mouse coordinates in real time, but it just doing a coordinates stamp when you press the mouse button. 32 lines of code just for that is a bit strange, not to mention how complex it is compared to BlitzBasic.

AmigaCOMAL File Requester MouseDemo I think we know that one!
MouseDemo MouseDemo-1 KnownFileRequester
     

As we know, ENTER is used to load a listed program {with LIST "MyProgram"} and you'll need to use it because Compiler was added, there wasn't sufficient space on the flopy disk to leave examples as the .sav files {tokenized source code} on the disk and therefore everything was listed {now i thought to just copy/pase the examples from AmigaCOMAL v1.4 disk because they are the same, however it didn't work! The .sav files are not compatible {as tokenized version} with AmigaCOMAL v2.03}

Ergo, you must ENTER them to make them useable and compatible {.LST file are just text files}.
By writting ENTER "" a file requester will open and now you can load only .LST files {Same is valid for the LOAD command! It can load only .SAV files}. There is no option to LOAD listed files by using the MENU.
Btw. a file REQUESTER was added in the version 2.0 of AmigaCOMAL {It is actually file request used also in VIEW too}

I tried few examples more to see if they'll work under Workbench 3.1 and they actually do work {mostly}. It's just that most of them are using graphicscreen{0) as the screen {or window}. If there is a library call, then it isn't working. If we calculate all this together, it can be concluded how AmigaCOMAL v2.03 is compatible with Workbench 3.1, however only partly.
Actually in Comal Today, it is mentioned how AmigaCOMAL v2.04 is now running under AmigaWorkbench 2.x, so my best guess is, it's normal for the version 2.03 to NOT be compatible with the Workbench 3.1 {because nobody ever said that compatibilty is given or existing}: Simply said: DO NOT USE IT WITH AMIGA WORKBENCH 3.1!

 
Except the FILE REQUESTER, AmigaCOMAL v2.03 or actually the whole AmigaCOMAL 2.xx? familiy probably might be quite the same compared to AmigaCOMAL v1.4.

Due to the lack of any manuals, It's impossible to test or tell that for sure.
I pushed my self anyway to make most out of it and have, as mentioned, gathered all i could find in regard of AmigaCOMAL v2.xx and i hope that compilation can motivate one or two of you reading this, to try AmigaCOMAL out {thanks in advance}

Closing the AmigaCOMAL v2.03 chapter for now {note how i will add information as soon as discover something worth mentioning in regard of individual AmigaCOMAL versions}

 

AmigaCOMAL Version 3.4
PDF Guide - {this was an Amiga .doc file. I made a PDF file out of it and corrected some typos! Still WIP Status!}
Document Version 1.0.0

I also got the AmigaCOMAL v3.01, but that one looks so the same as the version 3.4 that i thought it would make no sense to check both of them {not even one MENU point is different and the existing .DOC file is still talking about v3.01 sometimes.

It is also mentioned how this version of the document is NOT fully reflecting all changes compared to previous versions.
Which actually only means how there are things existing which are active and implemented, but we can't use them because there is no instruction available for it.

The command syntax is also with the version 3.4 useless the same way as all other versions were offering before.
If at least that would have been made properly this time, maybe AmigaCOMAL V3.4 could have been THE MAJOR AMIGA BASIC language to make Amiga system applications with ease. Unfortunately, it wasn't and the only title this programming environment earned was just another version of AmigaCOMAL as a dust collector {what a shame!}

You might think that there surely must be something or many things better because the difference between v3.01 and v3.4 is several years if counted that way, but it could also mean that even if version and time difference is big, not much time was invested into programming anyway.

And on top of that, it was a one man army project at the end! Programming, writing the manual and having a "normal life" under control can sometimes be exhausting. So we can be glad and thankful even if 1 day additionally was invested.
Not to mention how AmigaCOMAL v2.xx and AmigaCOMAL v3.x were developed parallel!
And we know how there is always a child whom the parents are liking more than the other one {they'll never admit so, tho, haha}

And so it came how it came, the final result is that AmigfaCOMAL v3.x received more candies than the AmigaCOMAL v2.xx
So let me list what how i experienced AmigaCOMAL v3.4 {compared to v1.4 and v2.03}:

  • It's easier to install {all are easy actually, but v3.4 requires less time to do it}
  • It is still AmigaCOMAL, but with major changes in regard of access to library functionality, easier, different approach!
    {Too bad it wasn't done already from the version 2.0 because that would have been a game changer and i am sure more
    people would have shown interest in AmigaCOMAL}
  • It still can be installed and used under Workbench 1.3, but with limited functionality. Still better than nothing
  • It needs significanly less code to achieve the same as with previous AmigaCOMAL versions
    {You could say: it's going towards BlitzBasic and than also not because it still can get {managable} cryptical}
  • While Packages were beneficial for COMAL-80 {8bit-COMAL}, like around 10, the AmigaCOMAL v3.4 is
    having over 40 and they aren't Packages anymore. We are talking Modules now {like IBM COMAL had it}
    It can take a while until you have all under control {not possible actually!}
  • PREFS cannot run under WB 1.3 {It's mentioned not to use it, but it isn't mentioned it'll force you to RESET Amiga}
  • PREFS won't RESET Amiga while using WB 2.10, but you won't be able to start it. It's breaking up.
    {i checked with snoopdos by didn't want to bother further. I just copied .prefs file i saved with WB3.1 over}
  • PREFS runs only under WB 3.1 {as it looks!...}
  • Luckily you can use Tool Types to set all needed. Check PDF Manuals for details.
 
The Comal Intuition Tools (CIT) is saving the day!

Normally the creation of Intuition items involves filling out special structures with special values. If the item is used to act on response from a user (such as gadgets or menus) you also have to work with message ports,signals and messages. And you must evaluate each message to find out what to do.

"By using CIT it is much easier. All the necessary structures are filled automatically with standard values that can be changed by calling object methods. You don't have to know anything about ports, signals and messages and the evaluation of a user action is done by the objects."

 

To be honest, CIT is just partly saving the day because many BASIC things are missing.
For example, you are unable to modify the default Amiga color palette. And that is bad for not only two reasons:

  1. Default color palette of Workbench 2.1 and Workbench 3.1 aren't the same
  2. Your application will look differently depending on the Workbench
  3. You are forced to use just 4 {3} colors to keep the same look on both Workbench versions!

It is probably involving the knowledge of the C language, but why it's needed for a BASIC!!!? language!

 
This is not leading to a good end! A second later, it's breaking up! Only WB 3.1 can master PREFS file!
AC3.4-PrefsUnderWB1.3 AC3.4-PREFSUnderWB2.10 AC3.4-PREFSUnderWB3.1
     
 

So far I did not manage to write "Hello World" in the C like structured Window and like someone was listening, there is an example doing exactly that! I would immediately sign the papers where it is written how lucky bastard I am, haha...
Quickly loading the CITText and MENU/Execute... AND NOTHING! It's giving me an error {Wrong Number of Arguments in Function or Procedure}
I went to check the manual and there is this example mentioned and it looks 1:1 the same as written in example {check the 2nd screenshot to see it}. So i was thinking maybe it just won't run with WB 3.1 and went to check how things will do under Workbench 2.1 {Workbench 1.3 is not supported by CIT Keywords}...
Nothing much is going on also here. WB 2.1 is bringing the same error message. This example clearly isn't working.

Keyword Syntax is clear:

PROC Font(Name$,Height OF SHORT)

I found the solution few days later after reading again how the existing document is actually not reflecting all the changes. So i came back to this example and thought: if the wrong number of arguments is a problem, how about adding a few numbers and see what will happen!

 
TextDemo Error Message, insufficient arguments! Well, let's add some.. And working!
AC34-HelloWorld AC34-Error AC34-Arguments AC34-Arguments-1
This looks much easier than the AmigaCOMAL v2.xx torture process just to write ;Hello World" Procedure correct, Book and Example exactly the same, no typo and this example still just won't run. Complaining about missing arguments!? I came back few days later to try this...It looks already was better than without the addional argument. And wow! It's actually working. Working on WB2.1 {WB1.3 isn't supported}
 

Compared to previous versions of AmigaCOMAL, I can tell that this is like night and day.

  • Setting a window is easy like drinking a glass of water {It is still kinda structured, but smarter!}
  • Bringing some text on the screen produces no sweating at all! Beautiful like watching the sunset...
  • Mastering Window and Text attributes! A dream...
    {Why`not already in 1989?, Mr. AmigaCOMAL, Why?!}

Look at this example below... Not joking, but with AmigaCOMAL v1.x or 2,xx i would probably need like 3 months to achieve this like it is shown below {I am including no manual and the mix of PASCAL, C, C++ combo which is very difficult to understand and there is some kind of learn-resistance when it is coming to your brain camouflaged as BASIC, which clearly it isn't}
But all good now, AmigaCOMAL v3.4 has learned from its past mistakes and I can finally present my first few lines of Text on the Workbench screen as a standalone application for Amiga WB2.1!

 

VERY BIG PINK WARNING!

BEFORE YOU COMBINE YOUR AmigaCOMAL v3.4 SOURCE CODE, READ THIS BELOW!:

It is crucial to know this here:
I did {or we did if you are following all this} compile/combine- already with AmigaCOMAL 1.4 and 2.03!
{It's the same as with v1.4 just newer Compiler which is then AmigaCOMAL v2.03 comptible}

And there, the source code is remaining untouched and additional files are created to represent the standalone executable file.
AmigaCOMAL v3.4 is doing this differently!

That means:
WITH COMBINE COMMAND OF AmigaCOMAL v3.4 the SOURCE CODE IS USED TO MAKE THE EXECUTABLE FILE, NO COPY OF IT IS MADE like with AmigaCOMAL v1.4 or v2.03!

YOUR SOURCE CODE WILL BE GONE!
ALWAYS USE A COPY OF THE SOURCE CODE TO CREATE EXECUTABLE FILE(S)!

 

It can actually be so easy! Save source code to RAM: with Save as "newname" And then COMBINE it there to create executable
AC34MyText AC34-SaveToRAMFirst AC34-SourceCodeToStandAlone
  Source code {download} WB2.1 only
Looks like WB 3.1 isn't supported!? And see...Now it is working! Not for long...!
AC34-CITText-B31 AC34-AndWorking...

AC34-Crash

{However, without using Text.Font(), topaz.font will be used and is OK!} ...or so i I thought... Text.Font("fontname.font",0,fontsize) is crashing the system under Workbench 3.1!
You could also not use the Text.Font command! Then topaz.font , size 8 will be always used. That will do, but that's another limitation!
{problem resolved with my own fonts}

UPDATE!: {This is exhausting!}
I couldn't let it be, so I checked the packages and found out how this :

PROC Font(Name$,Height OF SHORT)

should've look like this:

PROC Font(Name$,Width OF SHORT, Height OF SHORT)

Now the problem is:
Amiga fonts aren't rarely proportional and while the FONTSIZE {HEIGHT} is fix, the WIDTH is not {as mandatory!}
So you would practically need to set this for every single character! Impossible!

I guess there must be some default value, however 0 and 1 aren't correct in Workbench 3.1 investigation case!
I tried different numbers and from 8 font is readable, but not really usable and it looks ugly on non-proportional fonts.
It will however work and not crash under Workbench 3.1
My thoughts were to make or find a few larger proportional fonts for title purposes.
That would partly resolve the AmigaCOMAL-V3.4/Font/Workbench 3.1 problem.

At the moment, Workbench 2.1 is more compatible in regard of fonts and you can basically use everything!

 

KEYWORDS & FRIENDS

It is noticeable how important it is if things aren't written correctly.
AmigaCOMAL v3.4 is obviously very strickt in regard of that and the error messages are't really pointing you into the right direction especially when the command looks ok, but it isn't, you don't look there any furter, normally.
However, after a while you get used to it and know where you need to check and what must be improved or corrected.

DIM MyCHARacters OF CITTEXT is really strictly to be taken like you wrote it!
That means from now on, the prefix to all text attributes must be written just like that or it will tell you it isn't defined.

  • MyCHARacters.Transparent(TRUE) will work
  • MyCharacters.Transparent(TRUE) will not work

So it's best not to make any fancy name structures or you'll get lost very quickly!

 
And while we are already talking about the fancy names, there is an option to automaticaly make all keyword be written as a capital characters! Unfortunatelly, that is not working very well. I guess not everything was finished before AmigaCOMAL v3.4 was left to die... It means how more might be effected than just one keyword syntax. I am coming back to our first issue:
  • PROC Font(Name$,Height OF SHORT) {incorrect, producing an Error! Not working at all}
    MyFont.Font("Topaz.font",11)
  • PROC Font(Name$, 1, Height OF SHORT) {Working stable with Workbench 2.1, not working with WB 3.1}
    MyFont.Font("Topaz.font",1,11)
  • PROC Font(Name$, 0, Height OF SHORT) {this will work with WB 2.1 and 3.1, however WB3.1 is crashing!!!!}
    MyFont.Font("Topaz.font",1,11)
    DO NOT USE THIS COMMAND WITH WB 3.1! It crashes the SYSTEM!
  • setrgb(1,15,0,15) {Entry original .doc file, will not work}
    SetRGB will work {You find this correct writting after checking the module content}
    {I made correction in the PDF File}
    {And PDF File is actually the original Amiga text .doc file included with AmigaCOMAL v3.4}
    {My doing was to correct it, reformat, made it be MS Word compatible and converted to PDF}
    {Still a work in progress tho}
  • Now the next I got is Str$, where correct writing is STR$, Syntax: STR$(format$,num)
  • USE cittext {will work}
  • DIM MyText OF cittext {will not work}
    DIM MyText OF CITText {will work}
  • It can be assumed how there is much much more!
    Because Keyword recognition just isn't doing its part!
    And when you write something like:
    if a>10 then b:=100
    It will not work! You must write IF a>10 THEN b:=100
    So the EDITOR's mood is depending on the weather! Some things are automatically correct, others aren't!
  • For b=1 to 1000 DO {is incorrect and will not work!}
    FOR b=1 TO 1000 DO {will work}

I made correctiosn in the PDF-Manual for some these already, but I am probably just scratching the surface.
Can't tell because there is still a long way to go to check everything, but step by step is also leading to success {usually}.

 
AmigaCOMAL is having this very nasty AmigaCOMAL Execute window. Sure, it is also a window, but it is following you like a shadow. Sometimes it is useful, especially when you quickly need to print results without bothering 100 lines of code to create additional window and activate all necessary Ports and Pointers to write "Hello World"
Well, that was so until and with the AmigaCOMAL v2.10!

AmigaCOMAL v3.4 is, as we know now, much more user friendly and we need like few lines of code and can output text. That gave me some motivation to, again, challenge the AmigaCOMAL v3.4!
Because i disabled this nasty Execute Window, there results could not be seen, namely Mouse-Coordinates.

With the knowledge from previous example, that was quickly resolved and here we go now {again}:

 
Modified Mouse Button/Coordinates Example! The Palette problem! No way to change the default colors {*TEXT}
AC34MouseCoordinates AC34-TePalette
Source Code {WB2.1 only}
After the MyFont Font(... removal also with WB 3.1 should be okay) Check this here below!
 
 

*This is now the next {10.10.2025, Friday} day and while i had fun yesterday, today i wanted to modify the color palette and create my own to use it for upcoming tests... And see there... I wasted the whole day and couldn't find any command/keyword which is going to do the job for me... There is the already mentioned SetRGB and GetRGB, however, that is effecting only PENCOLOR(x) when graphics drawing is on the menu.
When you do a line and make SetRGB (5.0,0,15), PenColor(5) then your line will be blue one.
When you do SetRGB (5,0,0,15, PenColor(5), Text.Print(10,10,"DemoText") then your Text is Pink/Violet/Magenta

Basically, SetRGB had no influance in regard of the Text. The 264 pages document explaining AmigaCOMAL 3.4 is actually covering just a small fraction of all commands/keywords {there are 55 Libraries/Modules available}, so actually there are now exactly 45 Libraries/Modules nobody is talking about and nobody knows how to use them...

It looked like it went into more than wishful direction, made a 180 degree turn and is now running in opposite direction! AmigaCOMAL makes it possible {imagine that!}

Now, the existing color palette isn't really so bad, but it is limiting the creativity potential for many reasons. Most important one is: Colors are repeating after a while {only WB 3.1, not WB 2.1}! That is not something we should let slide like that. It's an Amiga and not good old Commodore C64 with a fix color palette. Also a default Workbench 2.1 color palette and Workbench 3.1 isn't the same.

Ability to set your own color palette, equal one, is practically a must!

Hell, who would ever thought that there is nothing to change the TEXT color inside of 55 libraries and, i don't know exactly, but probably like 1000 commands/keywords all combined! Yes, you can call that absolutely crazy!

There is a PALETTE command, but you can't do a lot with that!
That was only implemented to keep the AmigaCOMAL backwards compatible with the 8bit-COMAL, COMAL-80!
Yes, you can write C64 or C128 COMAL code with AmigaCOMAL and it will work on C64!

As it looks now, the CIT Modules were just added on top of the AmigaCOMAL chaos {which is existing since 1989!} and the included. document is mostly explaining just CIT Modules properly. Everything else is practically still the same as with AmigaCOMAL 1.4 -> v2.10 {v2.03} and not mentioned in this AmigaCOMAL v.3.4 document {Manual} which is of course a huge obstacle for every BASIC beginner!

And I thought AmigaCOMAL v3.4 could save the AmigaCOMAL family disaster...

I admit, I thought wrong...
{NEVERTHELESS, AmigaCOMAL V3.4 is more user friendly than any other AmigaCOMAL version before!}

You still need a respectful amount of PASCAL, C and C++ knowledge to master AmigaCOMAL v3.4 beyond Button-, Text-, RadioGadgets, PRINT and INPUT, Draw, Circle and especially to use it to create any System applications!

That will scare away all potential AmigaCOMAL BASIC! user!
And it is successfully doing exactly that concidering the fact how AmigaCOMAL is totally unused the past decades!

 

16 Color Workbench 3.1, AmigaCOMAL 3.4 AmigaCOMAL v3.4 ColorPalette problem! 16 Color Workbench 2.1, AmigaCOMAL 3.4
AC34-DefaultColors I have no idea how to change the color palette for TEXT information in AmigaCOMAL v3.4
Manual is 264 pages, but not one word is wasted on that... I was searching through the Libraries/Modules but have found nothing {and if, then it was for the graphics part and not the TEXT {even if Amiga itself has no real TEXT-SCREEN it did not work. Color palette couldn't be modified}... It is how it is!
AC34-DefPaletteWB21
     
 
WE ARE NOT GIVING UP YET!

The CIT Modules are still sufficient to create a thing or two and have fun in the process of creating. However, what I am going to give up is the combo Workbench 3.1 and AmigaCOMAL 3.1. This Combo is far away from being compatible as soon as you do anything with the library access. It will crash like invited to the crash party.

That means how the perfect partner for this 30 years old language is still ONLY Workbench 2.1 and DEFINITELY NOT Workbench 3.1 {even tho, AmigaCOMAL is from 1996, it carries the roots from 1989 and the old bagage and dark basements inside of AmigaCOMAL v3.4 are having conflict with Workbench 3.1}

THE STATEMENTS ABOVE AREN'T CORRECT ANYMORE!
COMMANDS WERE MODIFIED, HOWEVER NOT THE MANUALS!
THE USAGE OF THEM CAUSED SERIOUS CRASHES!
 
FEW DAYS LATER!, 12th of October 2025
 

Normally, AmigaCOMAL v3.4 and Workbench 3.1 are working hand in hand and this FONT problem came out of nowhere, especially because under Workbench 2.1 everything was/is working nice.

After discovering that the command syntax for font isn't correct and that the correct one would force you to use fix WIDTH fonts and all i had was 8px wide and for the title not so great. Other fonts were causing AmigaCOMAL v3.4 crashes!
Well, to make it short, i created my own 10px x 10px {High Resolution} fonts and now i am using that and it is working fine, no more crashes under Workbench 3.1. I'll probably make a few more, larger, title fonts. Did not thought it's going to be so easy {font were created with Workbench 1.3!!! Just to let you know!}

We can say how this problem is resolved!

In the meanwhile I was also busy with programming. That was actually easier now too because nothing is crashing!
See it for yourself... Practically almost finished {not realy}

Rich-LaMoc v.03 {unavailable} for now What is it?
AC34Rich-LaMoc It is a small program that will let you choose the lottery system you want to play and how many numbers!
Everything is random generated, no hocus-pocus-abracadabra!
Still work in progress and to do list is adding possible systems and get rid of the random double numbers.
Was thinking about adding a possibility to choose a region, e.g. just random numbers between 20-38, well something like that.
If you win, my share is 3% {can be more too, haha}
   
Few weeks later! RichLaMoc V1.01 Was all achieved?
RichLaMocV1.01 I guess it is!
Will run under Workbench 2.1 and Workbench 3.1
All you need are some extra fonts which are part of the package. It was made for Croatian lottery!
But it could probably be adapted to any other lottery system. Just don't expect me to do it!
With the possibilitiey to set a specific range of numbers, you can exctually make this compatible and for the lottery of any country, e.g. GERMAN LOTTERY 6/49, Austria is having 6/45, same as croatia! {
   
 
That's it!
My AmigaCOMAL journey is not going any further.

In general it can be concluded, that in case you want to start with AmigaCOMAL, then choose the version 3.4

All other versions aren't really usable and way to complex for a BASIC language because it is requesting from you to also know C language, C++ and PASCAL in SPECIAL AmigaCOMAL version which changed with every new AmigaCOMAL version. And i really mean to KNOW IT PERFECTLY WELL and on top of that, it's not really C syntax, it is something in-between!
It is actually no wonder that literally nobody is using AmigaCOMAL and some are using 8-bit COMAL which is less complicated.

Even if AmigaCOMAL v3.4 is very good, it is still lacking the basics! {as said already}
I wasn't able to make my own color palette!
Therefore i was limited to preset colors which aren't the same when using Workbench 2.1 or Workbench 3.1

I guess there is a way, however, without a proper book where it is explained, you can forget it!

Is the AmigaCOMAL v3.4 really the final one?

I strongly assume it is because the development was stopped already beginning of 1996!
Hope to get an update and fixes for some minor problems, is equal to zero!

What also would be highly welcome, is to get a REAL compiler!
AmigaCOMAL is since the beginning selling AmigaCOMAL Compiler as a compiler, but it actually never was a compiler!
It's just putting all used packages and the source code into one big file to make it run as a standalone application!

That really is far away from being a compiled file {but still, standalone is a standalone file and it's executable without having AmigaCOMAL installed}. AmigaCOMAL 3.4 is calling it COMBINER, which is at least the truth compared to previous missleadings and assmuming it would make it run faster after the compile process.

Compiler actually wouldn't really be necessary if all modules were written in assembler, but they aren't.

 
I guess, I can count on you as a new AmigaCOMAL user, right!