1

(13 odpowiedzi, napisanych Programowanie - 16/32bit)

sqward napisał/a:

Właśnie zauważyłem, że plik *.c kompilujesz to assemblera. Więc porostu zobacz jak kompilator przekazuje paramenty w skompilowanym kodzie..

Właśnie zrobiłem jak piszesz, no i już wiem jak przekazywane są parametry, czego efektem jest ten działający kod :)

#include "gemdos.h"
#include "types.h"

int main()
{
    write_str("Hello world\0");
    getchar();
    pterm();

    return 0;
}
#ifndef    _GEMDOS_H_
#define    _GEMDOS_H_

extern void write_str(const u8 *s);
extern s32 getchar(void);
extern void pterm(void);

#endif
_write_str
    move.l (4,a7), a0
    pea (a0)
    move.w    #GEMDOS__writestr,-(A7)
    trap        #GEMDOS
    addq.l    #6,A7
    rts

_getchar
    move.w    #GEMDOS__getchar,-(A7)
    trap        #GEMDOS
    addq.l    #2,A7
    rts

_pterm
    clr.l -(a7)
    trap #1

2

(13 odpowiedzi, napisanych Programowanie - 16/32bit)

@jury
O to chodziło... Dzięki! Działa... :)

@Cyprian
Zaznajomię się.
Ciekawy silnik gry.

@Adam Klobukowski
Dzięki za rady. Z tego libc może kiedyś skorzystam. Na razie chcę dobrze opanować asembler i poczuć na niskim poziomie hardware Atari. Na razie, korzystanie z gotowego libc w C nie sprawiłoby mi przyjemności programując Atari, bo to jak lizanie lodów przez szybę.

@sqward
Wszystko już działa. Instrukcja rts już nie wyświetla bomb. Zmieniałem też kolejność wywołania procedur z poziomu języka C, dodałem nawet pętle w C, i zdaje się, że wszystko działa poprawnie i w poprawnej kolejności.

Nie wiem tylko jak z poziomu asemblera pobierać przekazane parametry z C.

3

(13 odpowiedzi, napisanych Programowanie - 16/32bit)

Adam Klobukowski napisał/a:

To wszystko powinno być opisane w dokumentacji vasm/vbcc

Poświęciłem dzisiaj kilka godzin na przeglądanie dokumentacji vasm/vbcc, ale nadal nie wiem jak połączyć plik .s z plikiem .c
Ok, zostaję w czystym asemblerze...

Mam tak, ale to nie działa...

vbcc -quiet test.c -o="test.s"
vasm -nocase -devpac -m68000 -Faout -phxass -no-opt -o GEMDOS.o GEMDOS.s
vasm -nocase -devpac -m68000 -Faout -phxass -no-opt -o test.o test.s
vlink -b ataritos -o ppp.tos GEMDOS.o test.o

4

(13 odpowiedzi, napisanych Programowanie - 16/32bit)

Adam Klobukowski napisał/a:

Nie prościej użyć jakiejś gotowej biblioteki? Zakładam że zależy Ci na rozmiarze, więc polecam libcmini (https://github.com/freemint/libcmini)

Wolałbym najpierw pobawić się moim sposobem i opanować podstawy asemblera i programowania pod Atari ST.
Jak już się pobawię, to wtedy ewentualnie skorzystam z jakiejś gotowej biblioteki libc.

Chcę tylko połączyć plik .s z plikiem .c w jedną binarkę... Nie wiem jak...

Adam Klobukowski napisał/a:

Zakładam że zależy Ci na rozmiarze, więc polecam libcmini

No nie wiem... Moje hello world w asemblerze ma ok. 80 bajtów...

creates a binary with 11794 byts. About a tenth of the size.

Witam,

Jak skompilować plik .s razem z plikiem .c do binarki *.tos ?

Chcę połączyć plik .s z plikiem .c w jedną binarkę, ale nie wiem jak...

Korzystam z vasm oraz vbcc.

Męczę się już z tym od paru godzin...

[PLIK MAIN.C]

extern void wait1(void);
extern void exit1(void);

int main()
{
    wait1();
    exit1();

    return 0;
}

[PLIK GEMDOS.S]

GEMDOS equ 1

GEMDOS__getchar equ 1
GEMDOS__writestr equ 9
GEMDOS__supervisor equ 32

    section text

_wait1
    move.w    #GEMDOS__getchar,-(A7)
    trap        #GEMDOS
    addq.l    #2,A7
    rts

_exit1
    clr.l -(a7)
    trap #1

    public _wait1
    public _exit1

Mam tak, ale to nie działa...

vbcc -quiet test.c -o="test.s"
vasm -nocase -devpac -m68000 -Faout -phxass -no-opt -o GEMDOS.o GEMDOS.s
vasm -nocase -devpac -m68000 -Faout -phxass -no-opt -o test.o test.s
vlink -b ataritos -o ppp.tos GEMDOS.o test.o

Jeszcze mam pytanie jak z poziomu asemblera pobrać parametr podany przy wywołaniu funkcji w C ?

6

(98 odpowiedzi, napisanych Scena - 16/32bit)

Kto z was był na DECRUNCH 2016 we Wrocławiu ?
https://www.youtube.com/watch?v=SmHCh6FzD2o

7

(5 odpowiedzi, napisanych Programowanie - 16/32bit)

Taki super tutorial znalazłem.

MarkeyJester’s Motorola 68000 Beginner’s Tutorial
http://mrjester.hapisan.com/04_MC68/

8

(6 odpowiedzi, napisanych Programowanie - 16/32bit)

Dzięki bardzo.
A znacie może jakiś darmowy kurs GFA BASIC w internecie? Bo z książkę będzie trudno załatwić, a bardzo mi zależy na nauce tego języka ;\

Skąd mogę ściągnąć Vasm, albo jakiś inny waszym zdaniem lepszy?

9

(6 odpowiedzi, napisanych Programowanie - 16/32bit)

Witam.

Poszukuję w internecie kompilatora GFA Basic pod Atari ST, oraz jakiś kurs GFA BASICa. Niestety nigdzie nie mogę znaleźć.

Poszukuję również jakiegoś Assemblera pod Atari ST... Jaki proponujecie i skąd mogę ściągnąć? Czy VASM jest dobry?

Proszę, podzielcie się tym co poszukuję bo bardzo mi na tym zależy.
Po latach chciałbym powrócić do swojego Atari ST.