Like you, we are Amiga fans and we do not want this computer to remain just a museum exhibit. We believe that it can gain new users and be, as it used to be, an ideal solution for home use.

The most important problem now is the lack of new software. We decided to do something to change it.

We are working on a modern programming language and framework that will dramatically reduce the time it takes to create Amiga programs and allow even a novice programmer to do it, being also an ideal environment for learning programming.

Our framework called API2 can be used with both the C language and our new language. To illustrate how much easier and faster it is to program using our framework, below are two C programs doing exactly the same, wait one second and then display the words "Time is up!". The one on the left uses API2, the one on the right uses only the standard functions provided by AmigaOS.


#include <api2/api2.h>
#include <stdio.h>

int main()
{
    var application = AFCreateApplication();
    var timer = AFCreateTimer();
    
    AFAddEventHandlerFunction(timer, AFTimeIsUp, NULL,
        func (void, () { printf("Time is up!\n"); }));
        
    AFSetTimeout(timer, 1000);
    AFSetEnabled(timer, true);   
    AFRunMainLoop(application);
    
    return 0;
}

#include <exec/types.h>
#include <devices/timer.h>
#include <clib/exec_protos.h>
#include <clib/alib_protos.h>
#include <stdio.h>
#include <stdbool.h>

int main()
{
    struct timerequest *timeRequest;
    struct MsgPort *timerMsgPort;
    struct Message *timerMessage;
    int result = 0;

    if ((timerMsgPort = CreatePort(0, 0)))
    {
        if ((timeRequest = (struct timerequest*) CreateExtIO
            (timerMsgPort, sizeof(struct timerequest))))
        {
            if (!OpenDevice(TIMERNAME, UNIT_MICROHZ,
                (struct IORequest*) timeRequest, 0L))
            {
                timeRequest->tr_node.io_Command
                    = TR_ADDREQUEST;                
                timeRequest->tr_time.tv_secs  = 1;
                timeRequest->tr_time.tv_micro = 0;

                SendIO((struct IORequest*) timeRequest);
                
                while (true)
                {
                    WaitPort(timerMsgPort);
                    
                    if ((timerMessage = GetMsg(timerMsgPort)))
                    {
                        printf("Time is up!\n");
                        
                        ReplyMsg(timerMessage);
                        break;
                    }
                }

                CloseDevice((struct IORequest*) timeRequest);
            }
            else
            {
                printf("Error: could not OpenDevice\n");
                result = 1;
            }

            DeleteExtIO((struct IORequest*) timeRequest);
        }
        else
        {
            printf("Error: could not create IORequest\n");
            result = 1;
        }

        DeletePort(timerMsgPort);
    }
    else
    {
        printf("Error: could not CreatePort\n");
        result = 1;
    }
    
    return result;
}

The program using the API2 is several times shorter, easier to read, it is much harder to make a mistake in it and it can be written without problems even by a novice programmer, in addition to understand what it does, you do not even have to look at the documentation.

API2 is not only about easier and quicker programming. There are also a lot of new components supporting the implementation of various aspects of the application. For example, user interface animations:

screenshots/Animation.gif

FAQ

  1. Will API2 be released for AmigaOS3.x/AROS/MorphOS?

    API2 is from the very beginning designed and developed with all AmigaOS like system in mind.

  2. Will programs written with API2 be much larger than existing programs?

    As the example above shows, programs using API2 are not bigger but much smaller then these using only AmigaOS functions.

  3. Are programs using API2 slower than existing programs?

    During the design and development of API2, great effort is done to make its components work faster than other solutions of this type intended for AmigaOS like systems.

  4. Will the same program using the API2 be able to run on all AmigaOS like systems?

    API2 provides compatibility at the source code level between all AmigaOS like systems, so it is enough to recompile the application for a given system.

  5. What is already ready?

    The most important and the most arduous work is done. Basic functionalities are ready and they are foundation on which other elements are build. Some components of the user interface are very advanced and other non-visual ones as well.

  6. Is AmigaOS3.x really treated as just as important as NG systems in this project?

    Yes.

  7. When will API2 be ready?

    To get the basic planned functionality about half a year of one full-time developer work is needed.

  8. How can I support the work on API2?

    We run crowdfunding campaign on Patreon so you can support project development there. If you want to do this, click here.


To keep development going quickly and to reduce time between successive editions from years to months, at least one person must work on this project full time. To make it possible, funding is needed to cover the costs of salary, social security and taxes. If you like this project and want it to progress, please support it at Patreon

There is also another option. If you have a software project that you want to create, you can outsource it to TRIFLE, which will invest some of the profits in the development of API2.


Amiga and AmigaOS are either registered trademarks or trademarks of their owner.