1

Witam,

Jeśli kogoś zainteresuje, to proszę bardzo:
https://bitbucket.org/sqward/sv2011_invitro

What can be asserted without proof can be dismissed without proof.

2

chodzi o to? http://www.pouet.net/prod.php?which=57787
git, już sciągam
sporo waży - 142.6 MB
cegły nawrzucaliście? ;)

Lynx I / Mega ST 1 / 7800 / Portfolio / Lynx II / Jaguar / TT030 / Mega STe / 800 XL / 1040 STe / Falcon030 / 65 XE / 520 STm / SM124 / SC1435
DDD HDD / AT Speed C16 / TF536 / SDrive / PAK68/3 / Lynx Multi Card / LDW Super 2000 / XCA12 / SkunkBoard / CosmosEx / SatanDisk / UltraSatan / USB Floppy Drive Emulator / Eiffel / SIO2PC / Crazy Dots / PAM Net
http://260ste.atari.org

3

O to. są tam wszystkie źródłowe obrazki itp.

What can be asserted without proof can be dismissed without proof.

4 Ostatnio edytowany przez saulot (2011-11-18 05:23:07)

Jakby ktoś nie zauważył to tam jest jedna bardzo użyteczna rzecz pt. "mikrostartup". Chodzi o to, że nie jesteśmy już uwiązani do bibliotek standardowych libc itd, itp przy korzystaniu z gcc 4.xx.
I tak binarka spadła do ok. 1,5kb z 65kb (tyle zajmował minimalny program ze printf()).

Właśnie testuję ze sconsem budowę minimalnego setup'u ;P. Jak zabangla dam znać.

=========================================
[www] https://nokturnal.pl
[ 16/32 bit Atari development wiki] https://bus-error.nokturnal.pl

5

okiej,
rzecz o mikrostartupie i odchudzaniu binarek w nowym gcc 4.3.x jest tutaj:
http://bus-error.nokturnal.pl/tiki-read … ticleId=12

Są dwie wersje dla C i C++.

=========================================
[www] https://nokturnal.pl
[ 16/32 bit Atari development wiki] https://bus-error.nokturnal.pl

A czy ten mikrostartup jest kompatybilny z ARGV?

Atari: FireBee, (Falcon030 CT60e SuperVidel SvEthlana CTPCI), TT, (520ST Pak030 Frak PuPla Panther), (520ST 4MB ST RAM 8MB TT RAM CosmosEx SC1435), (1040STFM UltraSatan SM124), (1040STE 4MB ST RAM 8MB TT RAM CosmosEx NetUSBee SM144 SC1224), 260ST, 520 ST+, (MEGA ST SM125), (65XE Rapidus U1MB VBXE SIDE2 SIO2PC), (Jaguar SkunkBoard), Lynx II, 2x Portfolio

7

co to znaczy być kompatybilnym z argv? chodzi o przyjmowanie zmiennej liczby parametrów? nie wiem, ale możesz sprawdzić. jak nie działa to trzeba zrobić. Mi to do szczęścia nie było potrzebne, a Sqward chciał tylko demo odpalić ;).

=========================================
[www] https://nokturnal.pl
[ 16/32 bit Atari development wiki] https://bus-error.nokturnal.pl

Nie. Chodzi o przekazywanie atrybutów przez zmienne środowiskowe.
Btw. Draco030 swego czasu też to robił, jest to element jego programików pod FreeMiNTa, a tu: http://www.obta.uw.edu.pl/~draco/atari/atari.html

Atari: FireBee, (Falcon030 CT60e SuperVidel SvEthlana CTPCI), TT, (520ST Pak030 Frak PuPla Panther), (520ST 4MB ST RAM 8MB TT RAM CosmosEx SC1435), (1040STFM UltraSatan SM124), (1040STE 4MB ST RAM 8MB TT RAM CosmosEx NetUSBee SM144 SC1224), 260ST, 520 ST+, (MEGA ST SM125), (65XE Rapidus U1MB VBXE SIDE2 SIO2PC), (Jaguar SkunkBoard), Lynx II, 2x Portfolio

9

nie jest mi to jakoś specjalnie do szczęścia potrzebne..

=========================================
[www] https://nokturnal.pl
[ 16/32 bit Atari development wiki] https://bus-error.nokturnal.pl

10

Nie jest

What can be asserted without proof can be dismissed without proof.

Ale jak by było, można by to wciągnąć do mintliba jako zamiennik oryginalnego crt0 i wszyscy by na tym skorzystali.

Atari: FireBee, (Falcon030 CT60e SuperVidel SvEthlana CTPCI), TT, (520ST Pak030 Frak PuPla Panther), (520ST 4MB ST RAM 8MB TT RAM CosmosEx SC1435), (1040STFM UltraSatan SM124), (1040STE 4MB ST RAM 8MB TT RAM CosmosEx NetUSBee SM144 SC1224), 260ST, 520 ST+, (MEGA ST SM125), (65XE Rapidus U1MB VBXE SIDE2 SIO2PC), (Jaguar SkunkBoard), Lynx II, 2x Portfolio

12

Ok, każdy może skorzystać, bo są źródła. Ja nie mogę się tym zająć (nie jest mi to po drodze), Sqward pewnie też nie (mamy swoje projekty).
Jako uzupełnienie mogę jeszcze dodać, że na atari forum(chyba Nyh), ktoś przepisał wszystkie podstawowe funkcje C (lub ich większość) w assemblerze.
Można to wykorzystać.

=========================================
[www] https://nokturnal.pl
[ 16/32 bit Atari development wiki] https://bus-error.nokturnal.pl

No, to akurat w mintlib/gcc jest już od jakiegoś czasu.

Atari: FireBee, (Falcon030 CT60e SuperVidel SvEthlana CTPCI), TT, (520ST Pak030 Frak PuPla Panther), (520ST 4MB ST RAM 8MB TT RAM CosmosEx SC1435), (1040STFM UltraSatan SM124), (1040STE 4MB ST RAM 8MB TT RAM CosmosEx NetUSBee SM144 SC1224), 260ST, 520 ST+, (MEGA ST SM125), (65XE Rapidus U1MB VBXE SIDE2 SIO2PC), (Jaguar SkunkBoard), Lynx II, 2x Portfolio

14

Tak, ale od mintliba i całej tej ferajny profesjonalistów z mintlisty to wolę się trzymać z daleka.

What can be asserted without proof can be dismissed without proof.

15

sqward: bez przesadyzmu ;) stosunek sygnału do szumu jest wysoki to prawda i jest kilku nawet niezłych spammerów ;)
A na poważnie, to znajdziesz tam na pewno kilku sensownych ludzi, a to że nie ma wyznaczonego kierunku i jest bezwład to inna sprawa.

=========================================
[www] https://nokturnal.pl
[ 16/32 bit Atari development wiki] https://bus-error.nokturnal.pl

16

Racja. Przesadziłem trochę. Przydałby się jakiś Linus, który by to wszystko za mordę trzymał.

What can be asserted without proof can be dismissed without proof.

17

pytanie do fachowców, co to jest:
- crt0
- mintlib (funkcje gemdos minta??)
- czemu binarki na ST spod GCC sa takie duze

dzięki

Lynx I / Mega ST 1 / 7800 / Portfolio / Lynx II / Jaguar / TT030 / Mega STe / 800 XL / 1040 STe / Falcon030 / 65 XE / 520 STm / SM124 / SC1435
DDD HDD / AT Speed C16 / TF536 / SDrive / PAK68/3 / Lynx Multi Card / LDW Super 2000 / XCA12 / SkunkBoard / CosmosEx / SatanDisk / UltraSatan / USB Floppy Drive Emulator / Eiffel / SIO2PC / Crazy Dots / PAM Net
http://260ste.atari.org

18 Ostatnio edytowany przez saulot (2011-12-08 23:57:44)

- crt0 to standardowy kod który jest potrzebny do wystartowania programu. Każdy kompilator to ma. Jak piszesz program w asmie to też jest rutynowy startup (mshrink() i inne cuda). Wikipedia mówi to: http://en.wikipedia.org/wiki/Crt0

- mintlib to biblioteka standardowa FreeMinta, która ma funkcje/interfejsy podobne do unixowych i dzięki temu można robić porty różnych narzędzi i w ogóle używać unixowych programów na FreeMiNcie (przynajmniej ja to tak rozumiem). To jest teżtaki pośrednik między użytkownikiem, a systemem operacyjnym. Tam są też wszystkie nagłówki i dzięki temu jest dostęp do funkcji systemowych Atari (BIOS/XBIOS etc.)

- to przez samo gcc (to nie jest kwestia platformy docelowej tj. binarki są tak duże, że odpalanie ich na ST pożera dosyć sporo zasobów pamięciowych, na falconach z 14mb albo tt ramem ten problem jest nie istotny), w starszych wersjach np. gcc 2.95 ten problem nie występował, w nowszych wersjach sprawa się pogorszyła (nie jestem ekspertem, więc nie wiem dokładnie dlaczego tak się stało). Ale to nie jest problem tylko na naszej platformie. Tak na pierwszy rzut oka wygląda na to, że zawsze dołączana jest standardowa biblioteka i masa różnych symboli, wbudowanych funkcji itp. (gazylion rzeczy) i binarka nawet z głupim 'Helloł world' dużo waży. Jak zajrzysz do przykładów i zobaczysz mapę symboli to się przekonasz o czym mowa.

GCC w tej chwili jako jeden z niewielu obsługuje standard C C99, który wg mnie jest wygodniejszy niż ten stary skostniały ANSI C i z tego co wiem żaden z natywnych kompilatorów (no może z wyjątkiem VBCC, AHCC trudno mi powiedzieć, bo się nie zagłębiałem) go nie obsługuje. To głównie dlatego go używam.

=========================================
[www] https://nokturnal.pl
[ 16/32 bit Atari development wiki] https://bus-error.nokturnal.pl

19

Binarki spod gcc na ST są duże ponieważ ST nie ma dynamicznych bibliotek. Pod linuxem (i nawet pod windowsem) całe crt0 i biblioteka standardowa są linkowane dynamicznie więc binarki są małe (bo zawierają tylko kod programu). Natomiast na ST wszystko jest wlinkowywane do pliku wynikowego. Dlatego taka wielkość. Mój startup poprostu daje tyle funkcjonalności, że odpala funkcję main() i dalej musisz sobie radzić sam :)

What can be asserted without proof can be dismissed without proof.

20

to właściwie dotyczy ogólnie wszystkich modeli Atari, na ST skutki są najbardziej bolesne (bo ma mało pamięci(np. 512kb) i fajnie by było programy odpalać z dyskietki DD ;>).
I to nie chodzi o samo tylko crt0 zlinkowane statycznie, tylko ,że rozmiar crt0 (porównajcie sobie je z wersją dla Pure C) w gcc jest spory i doklejane są jeszcze rzeczy z kosmosu i to "z partyzanta" czy ich potrzebujesz czy nie. Linkowanie statyczne bibliotek dodatkowych pomijam.

=========================================
[www] https://nokturnal.pl
[ 16/32 bit Atari development wiki] https://bus-error.nokturnal.pl

Z GCC 2.95 problem wygląda dokładnie tak samo.

W skrócie polega on na tym, że aby 'wystartować' program w C zgodnie ze wszystkimi specyfikacjami Atari (np. wspomniane przeze mnie wcześniej ARGV), trzeba się trochę narobić. Dlatego crt0 zawiera w sobie prawie całą bibliotekę stdlib, string itp. Dlaczego? Bo wykorzystuje kilka funkcji które tam są, a linker (i gcc, a przynajmniej ich kompilacja na atari) nie potrafi usunąć nieużywanych funkcji.

Z punktu widzenia aplikacji Unixowych, to nie ma takiego wielkiego znaczenia - one zazwyczaj i tak wykorzystują te biblioteki, więc one i tak znalazłyby się w końcowej binarce. Jeśli jednak się ich nie wykorzystuje, lub wykorzystuje w bardzo ograniczonym stopniu, to niestety binarka jest trochę przerośnięta. Nie ma to wielkiego wpływu na szybkość samego programu.

Atari: FireBee, (Falcon030 CT60e SuperVidel SvEthlana CTPCI), TT, (520ST Pak030 Frak PuPla Panther), (520ST 4MB ST RAM 8MB TT RAM CosmosEx SC1435), (1040STFM UltraSatan SM124), (1040STE 4MB ST RAM 8MB TT RAM CosmosEx NetUSBee SM144 SC1224), 260ST, 520 ST+, (MEGA ST SM125), (65XE Rapidus U1MB VBXE SIDE2 SIO2PC), (Jaguar SkunkBoard), Lynx II, 2x Portfolio

22

gdzie można znaleźć zrółdo tego crt0 z GCC dla Atari ST?

Lynx I / Mega ST 1 / 7800 / Portfolio / Lynx II / Jaguar / TT030 / Mega STe / 800 XL / 1040 STe / Falcon030 / 65 XE / 520 STm / SM124 / SC1435
DDD HDD / AT Speed C16 / TF536 / SDrive / PAK68/3 / Lynx Multi Card / LDW Super 2000 / XCA12 / SkunkBoard / CosmosEx / SatanDisk / UltraSatan / USB Floppy Drive Emulator / Eiffel / SIO2PC / Crazy Dots / PAM Net
http://260ste.atari.org

W mintlibie. Najprościej ściągnąć z CVSa, http://wiki.sparemint.org/index.php/CVS

Atari: FireBee, (Falcon030 CT60e SuperVidel SvEthlana CTPCI), TT, (520ST Pak030 Frak PuPla Panther), (520ST 4MB ST RAM 8MB TT RAM CosmosEx SC1435), (1040STFM UltraSatan SM124), (1040STE 4MB ST RAM 8MB TT RAM CosmosEx NetUSBee SM144 SC1224), 260ST, 520 ST+, (MEGA ST SM125), (65XE Rapidus U1MB VBXE SIDE2 SIO2PC), (Jaguar SkunkBoard), Lynx II, 2x Portfolio

24

adamk: to nie może być tak samo, skoro w gcc 2.95 binarki jeszcze były akceptowalnej wielkości.

=========================================
[www] https://nokturnal.pl
[ 16/32 bit Atari development wiki] https://bus-error.nokturnal.pl

25

Adam Klobukowski napisał/a:

W mintlibie. Najprościej ściągnąć z CVSa, http://wiki.sparemint.org/index.php/CVS

dzięki, rozumiem że ten CRT0 to jakiś plik? jak on się nazywa?

Lynx I / Mega ST 1 / 7800 / Portfolio / Lynx II / Jaguar / TT030 / Mega STe / 800 XL / 1040 STe / Falcon030 / 65 XE / 520 STm / SM124 / SC1435
DDD HDD / AT Speed C16 / TF536 / SDrive / PAK68/3 / Lynx Multi Card / LDW Super 2000 / XCA12 / SkunkBoard / CosmosEx / SatanDisk / UltraSatan / USB Floppy Drive Emulator / Eiffel / SIO2PC / Crazy Dots / PAM Net
http://260ste.atari.org