Jak Ty jesteśmy fanami Amigi i nie chcemy aby, komputer ten pozostał tylko eksponatem muzealnym. Wierzymy, że może on zdobyć nowych użytkowników i być jak kiedyś idealnym rozwiązaniem do użytku domowego.

Najważniejszym obecnie problemem jest brak nowego oprogramowania. Postanowiliśmy zrobić coś, aby to zmienić.

Pracujemy nad nowoczesnym językiem programowania i biblioteką, które radykalnie skrócą czas wytwarzania programów na Amigę i umożliwią to nawet początkującym programistą, będąc przy okazji też idealnym środowiskiem do nauki programowania.

Nasza biblioteka, nazywająca się API2, może być wykorzystana zarówno w języku C jaki i naszym nowym języku. Aby zobrazować o ile prościej i szybciej programuje się przy jej użyciu, poniżej zamieściliśmy dwa programy w języku C robiące dokładnie to samo, gdy minie jedna sekunda wyświetlają napis "Time is up!", ten po lewej wykorzystuje API2, ten po prawej używa tylko standardowych funkcji udostępnianych przez 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;
}

Program używający API2 jest kilka razy krótszy, czytelniejszy, dużo trudniej zrobić w nim błąd i może go, bez problemu, napisać nawet początkujący programista, ponadto aby zrozumieć co robi nie trzeba nawet patrzeć do dokumentacji.

API2 to nie tylko łatwiejsze i szybsze programowanie. To także dużo nowych komponentów wspomagających realizację różnych aspektów działania aplikacji. Na przykład animacji interfejsu użytkownika:

screenshots/Animation.gif

FAQ

  1. Czy API2 jest przeznaczone dla AmigaOS3.x/AROS/MorphOS?

    API2 jest od samego początku projektowane i pisane z myślą o wszystkich amisystemach.

  2. Czy programy w API2 nie będą dużo większe od dotychczasowych programów?

    Jak pokazuje przedstawiony powyżej przykład, programy używające API2 nie tylko nie są większe, są wręcz dużo mniejsze.

  3. Czy programy używające API2 nie będą wolniejsze od dotychczasowych programów?

    Podczas projektowania i pisania API2 położono duży nacisk na to, aby jego komponenty działały szybciej niż inne rozwiązania tego typu przeznaczone dla amisystemów.

  4. Czy ten sam program używający API2 będę mógł uruchomić na wszystkich systemach amigowych?

    API2 zapewnia kompatybilność na poziomie kodów źródłowych między wszystkimi amisystemami. Wystarczy więc przekompilować aplikację dla danego systemu.

  5. Co już jest gotowe?

    Gotowe jest to co najważniejsze i najbardziej żmudne, czyli podstawowe funkcjonalności, na których bazują wszystkie inne. Bardzo zaawansowane są też niektóre komponenty interfejsu użytkownika i inne niewizualne, a stanowiące istotne elementy podczas budowy aplikacji.

  6. Czy naprawdę AmigaOS3.x jest traktowany w tym projekcie jako tak samo ważny jak systemy NG?

    Tak.

  7. Kiedy API2 będzie gotowe?

    Aby uzyskać podstawową planowaną funkcjonalność potrzeba około pół roku pracy jednej osoby na cały etat.

  8. Jak mogę wesprzeć prace nad API2?

    Prowadzimy kampanie crowdfundingową na Patreonie i tam można wspierać rozwój projektu. Jeżeli chcesz to zrobić to kliknij tutaj.


Aby prace przebiegały sprawnie i szybko, a czas między kolejnymi wydaniami był mierzony w miesiącach, a nie latach, co najmniej jedna osoba musi pracować nad tym projektem na pełen etat. By było to możliwe potrzebne jest finansowanie, które pokryje koszty pensji, ZUSu i podatków. Jeżeli chcesz aby ten projekt się rozwijał wesprzyj go na Patreonie

Jest też inna możliwość. Jeżeli masz projekt softwarowy, którego wykonanie chcesz zlecić, możesz powierzyć jego realizację firmie TRIFLE, która część zysków zainwestuje w rozwój API2.


Amiga i AmigaOS są zastrzeżonymi znakami towarowymi lub znakami towarowymi ich właściciela.