Willkommen bei atarixle

Diese Seite behandelt die ATARI-8-Bit-Computerserie und speziell die Benutzeroberflächen "BOSS-XL", "BOSS-XE" und "BOSS-X", die hier als Freeware erhältlich sind.

Blog

April04

... letzter Blog-Eintrag

unix2atari8.c

Ein kleines Programm, um UNIX-Text in Atari-8-Bit-Text umzuwandeln. Hauptsächlich geht es um den Zeilenumbruch. Mehr tut das Programm momentan nicht.

unix2atari8.c:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include"str_replace.c"

int main(int argc, char* argv[]) {
    // printf("argc = %d\n", argc);
    unsigned char replace[]={155, 0};
    
    // replace[0]=(unsigned char)155; replace[1]=(unsigned char)0;
    
    if (argc<2) {
        printf("usage: %s unix_text_files\n", argv[0]);
        return 0;
    }
    
    if ((strcmp(argv[1], "--help") && strcmp(argv[1], "-h"))==0) {
        printf("\nreplaces UNIX linebreaks with Atari's CHR$(155)\n");
        printf("Outputs are named CONV0001.TXT, CONV0002.TXT and so on\n");
        printf("which works well with most Atari-DOSses and Emulators\n");
        printf("Files will be overwritten WITHOUT ANY WARNING!\n\n");
        return 0;
    }
    
    for(int i=1; i<argc; i++) {
        // printf("arg[%d]=\"%s\"\n", i, argv[i]);
        FILE *fp;
        
        fp=fopen(argv[i], "r");
        
        if (fp==NULL) {
            printf("File \"%s\" not found\n", argv[i]);
        } else {
            char *unix_text, *atari8_text;
            size_t size;
            char filename[20];
            fseek(fp, 0, SEEK_END); // seek to end of file
            size = ftell(fp); // get current file pointer
            fseek(fp, 0, SEEK_SET); // seek back to beginning of file
            // proceed with allocating memory and reading the file
            unix_text=(char*)malloc(size+1);
            fread(unix_text, 1, size, fp);
            fclose(fp);
            sprintf(filename, "CONV%04d.TXT", i);
            atari8_text=str_replace(unix_text, "\n", replace);
            if (atari8_text==NULL) {
                printf("Nothing to convert in file \"%s\"\n", argv[i]);
            } else {
                printf("Writing converted file \"%s\" to \"%s\"\n", argv[i], filename);
                fp=fopen(filename, "wb");
                fwrite(atari8_text, 1, size, fp);
                fclose(fp);
                free(atari8_text);
            }
            free(unix_text);
        }
    }
    
    return 0;
}

Das Programm bedient sich eines Code-Schnipsels, den ich im Netz gefunden habe:

str_replace.c
// You must free the result if result is non-NULL.
char* str_replace(char* orig, char* rep, char* with) {
    char* result; // the return string
    char* ins;    // the next insert point
    char* tmp;    // varies
    int len_rep;  // length of rep (the string to remove)
    int len_with; // length of with (the string to replace rep with)
    int len_front; // distance between rep and end of last rep
    int count;    // number of replacements

    // sanity checks and initialization
    if (!orig || !rep)
        return NULL;
    len_rep = strlen(rep);
    if (len_rep == 0)
        return NULL; // empty rep causes infinite loop during count
    if (!with)
        with = "";
    len_with = strlen(with);

    // count the number of replacements needed
    ins = orig;
    for (count = 0; tmp = strstr(ins, rep); ++count) {
        ins = tmp + len_rep;
    }

    tmp = result = malloc(strlen(orig) + (len_with - len_rep) * count + 1);

    if (!result)
        return NULL;

    // first time through the loop, all the variable are set correctly
    // from here on,
    //    tmp points to the end of the result string
    //    ins points to the next occurrence of rep in orig
    //    orig points to the remainder of orig after "end of rep"
    while (count--) {
        ins = strstr(orig, rep);
        len_front = ins - orig;
        tmp = strncpy(tmp, orig, len_front) + len_front;
        tmp = strcpy(tmp, with) + len_with;
        orig += len_front + len_rep; // move to next "end of rep"
    }
    strcpy(tmp, orig);
    return result;
}

Kompiliert wird das ganze unter Linux mit cc unix2atari8.c -o unix2atari8.

Neuigkeiten

Juni252020

Atari-Veranstaltungen in Zeiten der Corona-Pandemie

Hallo,

heute wende ich mich mit einer persönlichen Bitte an Euch.

Wie Ihr sicher wisst, pflege ich einen Veranstaltungskalender, in dem ich größtenteils die Veranstaltungsprogramme aus dem ABBUC-Kalender übernehme und den Ihr als Abonnement an Eurem Smartphone oder PC nutzen könnt. Auch dient dieser als Quelle für die Kategorie "ABBUC-Veranstaltungskalender" auf meiner Startseite. Nun habe ich diesen Kalender bereits lange Zeit vor der Corona-Pandemie angelegt und pflege in der Regel kaum Änderungen ein.
Seid deshalb bitte darum angehalten, Euch über das tatsächliche Stattfinden beim Veranstalter zu informieren. Meist ist ein Link zum Veranstalter, oder aber auch zur Quelle des Informationstextes hinterlegt.

Also, bleibt gesund und bis bald!

... aktive ABBUC-Forenthemen

Warning: file_get_contents(https://www.abbuc.de/community/forum/search.php?st=14&sk=t&sd=d&sr=topics&search_id=active_topics): failed to open stream: HTTP request failed! HTTP/1.0 404 Not Found in /home/atarixle/files/libs/abbuc_forum/latest_abbuc_posts.php on line 18
ABBUC-Veranstaltungskalender

Mai22

ABBUC in Berlin
in 1 Woche und 2 Tagen, ab 12:00 Uhr

Berlin, Johannisthal

mehr Informationen unter http://www.abbuc.de/~atarixle/AIB/ und im ABBUC-Forum unter http://www.abbuc.de/community/forum/viewtopic.php?f=17&t=8635

ABBUC-Veranstaltungskalender

Juni03

Silly Venture 2020
in 3 Wochen
von Do, 03.06.2021 bis So, 06.06.2021, ab 15:00 Uhr

Danzig

Silly Venture 2k20 - uniting all ATARI scenes since 2000!

[PL] Zapraszamy serdecznie na 12-stą już edycję największej imprezy dla fanów konsol i komputerów firmy Atari na świecie! Tym razem świętować będziemy 20-ste urodziny... "Silly Venture"! Dołączcie do nas! W zeszłym roku pobiliśmy rekord jeśli chodzi o liczbę uczestników oraz prac oddanych na konkursy! Stawmy czoło faktom: ponad 250 uczestników! Ponad 130 prac konkursowych! A wszystko to na imprezie dedykowanej tylko ATARI! Bez Waszego udziału nie byłoby to możliwe - wielkie dzięki! Legenda trwa. Po prostu musi. Long live Atari demoscene!

Gastgeber: Michał Michałowski und Sylwia Michałowska

[UK] We cordially invite you to the 12th edition of the largest event for fans of Atari consoles and computers in the world! This time we are celebrating our 20th anniversary... "Silly Venture"! Join us! Last year we broke the record in terms of the number of participants and works submitted for competitions! Just face the facts: over 250 visitors! Over 130 compo entries! All of that at an ATARI-only party! Without your participation this would not be possible - many thanks! The legend continues. Just has to. Long live the Atari demoscene!

Inhalt

... weitere News
erfahrt, was es Neues auf dieser Homepage gibt
ABBUC in Berlin
ABBUC in Berlin (AiB) ist unsere neue Regionalgruppe, die sich alle acht Wochen in Berlin trifft.
Fujiama
das mittlerweile größte Atari-8-Bit- und auch markenoffene Treffen des Landes
Blog
... weil's jeder macht. Hoffentlich vernachlässige ich dadurch nicht meine News-Seite
Software
über meine Software: BOSS, HTML-Viewer, Datenbank...
Tipps & Tricks
Ein paar kleine Spielereien mit dem ATARI, die nichts mit Spielen zu tun haben, manchmal aber ganz nützlich sein können.
downloads
was alles zum kostenlosen Download bereitssteht
Events
vergangene und kommende ATARI-Veranstaltungen, die ich besuchte und besuchen werde
Standards
Einige Hinweise zu Turbo-BASIC und mehreren DOS-Versionen
Links
Was gibt es sonst noch im Internet
Sitemap
Komplettübersicht über alle Seiten
E-Mail
meine E-Mail-Adresse