Temat: Na ile pamięci można liczyć w STE?

Hej. Mój pierwszy wątek w tym dziale smile
Może trochę dziwne pytanie, ale wiecie, wychodzę z atari 8-bit, a tam takimi rzeczami ludzie się martwię wink
Interesuje mnie kwestia jak to jest z pamięcią w STE. Zakładając że ma się 4 MB na pokładzie, to na ile z tego można liczyć, że będzie dostępne dla dema, żeby nie ukisić systemu (a w szczególności, żeby sterownik dysku działał)?
Zaglądając do Sysinfo widzę u mnie (a także w Hatari), że membottom jest poniżej $20000, a memtop opiera się o pamięć ekranu.
Czy można zakładać, że w konfiguracji w której ktoś chce uruchomić demo membottom nie przekroczy $20000? a dokładniej, że mój program nie załaduje się powyżej tego adresu)? A jak to jest z memtop? Czy coś tam może być załadowanego przez system, czy zawsze jest tam wolne do phystop? Czy poprawnym jest założenie, że wszystko pomiędzy może być bezpiecznie dostępne dla dema?

Oczywiście rozumiem systemowe mechanizmy zarządania pamięcią, wołanie mshrink() itp. Pytanie tyczy się tylko tego ile system jest w stanie mi dać.

Ostatnio edytowany przez laoo/ng (2021-02-09 10:32:04)

laoo/ng

2

Odp: Na ile pamięci można liczyć w STE?

Nigdy tego nie wiesz. Wystarczy, że ktoś zainstaluje NVDI z dużym cachem na fonty wektorowe i pół mega zniknie. Najlepszym rozwiązaniem jest Mshrink() zaraz po odpaleniu programu i potem Malloc tego co potrzebujesz, ewentualnie error jeśli Malloc() zawiódł.

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

3

Odp: Na ile pamięci można liczyć w STE?

Ja się raz rozbiłem o rozmiar cache w konfiguracji HDDrivera. U mnie i większości osób działało (Polygon Discount) a u paru z inna konfiguracja juz nie (oczywiście zwis bo nie zrobilem error handlingu hehe). Co prawda to było na F030 i wiedziałem, że jestem na styk, ale wniosek jaki mam to jednak zostawić trochę zapasu (ile to niestety nie wiem) i zrobić dobry error handling jak pisze Sqward.

Ostatnio edytowany przez mkm (2021-02-09 12:04:42)

Maciek
--------
Atari 65XE + Ultimate 1MB + Stereo + SIO2SD | Atari 520STE + 4MB + UltraSatan | Atari Falcon 030 + CT60e + 14MB ST + 256MB TT + 68882  + CF + Netusbee | Amiga 500 + 1MB + Gotek | Amiga 600 + 2MB Chip + 8MB Fast + CF

4

Odp: Na ile pamięci można liczyć w STE?

Oczywiście zawsze znajdzie się jakaś maszyna z takimi sterownikami, które zajmą absurdalnie dużo pamięci. Bardziej interesujący jest przypadek rozsądnej konfiguracji jakie ludzie mają na biurkach i oglądają na nich dema. Nie twierdzę, że chcę wymagać na maksa, tylko właśnie się zastanawiam jaki wyznaczyć sobie górny limit, bo gdy demo będzie już napisane i okaże się, że jednak przesadziłem, to już będzie trochę późno. Jak 4MB to 64*64kB to nie wiem czy 60*64kB jest jeszcze rozsądnie osiągalne, czy bliżej 56*64kB albo jeszcze mniej.

laoo/ng

5

Odp: Na ile pamięci można liczyć w STE?

@laoo/ng Czy demo będzie korzystać z systemu operacyjnego (np.doładowywać dane z dysku)? Jeśli nie, to cała pamięć jest Twoja.
Jeśli jednak tak, to zaznacz w pliku tekstowym że demo wymaga np. 3,7MB. Użytkownik będzie mógł dostosować swoje środowisko do wymagań  dezaktywując NVDI, zmniejszając ilość cache HDDrivera, wyłączając akcesoria itp.

Swoją drogą, na dużym Atari, często używane są programy do zarządzania profilami (typu XBoot) uruchamiania komputera, np pod Demo, pod aplikacje itp.

Ostatnio edytowany przez Cyprian (2021-02-09 14:58:18)

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

6

Odp: Na ile pamięci można liczyć w STE?

Nie znam dokladnej wartosci. Jedyne co mi przychodzi to empiryczny test. Zrób sobie bianarki testowe które maja kilka wariantów wielkości rezerwowanego bloku bss. Albo jedna ktora ma test w pętli z mallociem i zobacz kiedy zwroci Ci bład. Test przeprowadziłbym na rh majac clean boot, ale ladujac sam driver hdd (ktory?), bo tak zakladam dema sa puszczane na parties. Mówisz o STE wiec można by dyskutować czy TOS 1.6 i 2.06 zachowa się dokładnie tak samo - nie wiem. Aha, wez tez pod wzglad ze sam player muzyki moze tez wewnatrz zrobic Ci malloc (np ztcp gdy masz muzyke ym z perkusja na dma sound o ile nic nie mieszam). PS podpytaj tez ludzi na #atariscne na ircnet - dobre zrodlo wiedzy o 16&32bit

EDIT: pomysł Cypriana z podaniem info o pamięci w pliku NFO jest także spoko imho

Ostatnio edytowany przez mkm (2021-02-09 14:55:52)

Maciek
--------
Atari 65XE + Ultimate 1MB + Stereo + SIO2SD | Atari 520STE + 4MB + UltraSatan | Atari Falcon 030 + CT60e + 14MB ST + 256MB TT + 68882  + CF + Netusbee | Amiga 500 + 1MB + Gotek | Amiga 600 + 2MB Chip + 8MB Fast + CF

7

Odp: Na ile pamięci można liczyć w STE?

Demo będzie doładowywane z dysku, bo muzyka będzie strumieniem (więc odpada problem alloców playera muzyczki). Ja mam dość czyste atari STE (TOS 2.06) z 4MB RAMu na którym mam tylko sterownik Putnika do Ultra Satana. Nic poza tym. Nie byłem po prostu pewny, czy ta konfiguracja nie jest zbyt syntetyczna i czy ludzie nie mają załadowanych więcej rzeczy, bo jestem zupełnie zielony w kwestii "co się miewa" w STkach, a nie chciałem zgrzytów jeśli okaże się, że uruchomi się tylko u mnie.
W każdym razie skoro padła tu liczba 3.7 MB, to póki co uznam to za górny limit, jaki można wymagać i słuszna informacja, żeby jasno zdefiniować w opisie ile się wymaga i ludzie będą mogli się do tego dostosować (w granicach rozsądku). Dzięki!

Ostatnio edytowany przez laoo/ng (2021-02-09 15:10:25)

laoo/ng

8

Odp: Na ile pamięci można liczyć w STE?

A te 3.7 to Cyprian podałeś jako faktyczną estymatę czy tylko przykład? wink

Maciek
--------
Atari 65XE + Ultimate 1MB + Stereo + SIO2SD | Atari 520STE + 4MB + UltraSatan | Atari Falcon 030 + CT60e + 14MB ST + 256MB TT + 68882  + CF + Netusbee | Amiga 500 + 1MB + Gotek | Amiga 600 + 2MB Chip + 8MB Fast + CF

9

Odp: Na ile pamięci można liczyć w STE?

Ja myślę, że przykład, ale mnie zadowala i będę podpierał się autorytetem tego wytrawnego STkowca wink

laoo/ng

10

Odp: Na ile pamięci można liczyć w STE?

Jest to bezpieczna wielkość z mojej głowy.
Z tego co pamiętam to u mnie HDDriver z pamięcią cache zajmował około 64kB. TOS zajmuje również nie więcej niż kilkadziesiąt KB. Dodałem 200kB na jakieś akcesoria i wyszło mi 3.7MB

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

11

Odp: Na ile pamięci można liczyć w STE?

Jesli ktos uzywa HDDrivera tak jak ja mam TOS 2.06 (na razie tylko) i uruchamiam z wicisnietym CTRL to mi pokazuje dokladnie , 3952546, jesli uruchomie Hddrivera z w cisnietym jeszcze klawiszem ESC (hddriver zajmuje mimilna pamieć) to TOS pokazuje 3959146.

Uzywam US jako hdd.

Ostatnio edytowany przez Kroll (2021-02-09 20:33:02)

Falcon CT63, CTPCI + Radeon 9250, napęd MO Fujitsu 230 MB oraz naped Syquest 230 MB, Nagrywarka Yamaha CDRW 2100, Napęd DVD-ROM, Netusbee, Skaner EPSON GT8000/Falcon 030, Ram 14 MB, karta CF 16 GB/Hades 060, CD-ROM, Nagrywarka Yamaha CDR, karta sieciowa, napęd Syquest 44 MB/Atari TT 030; 10 MB ST-Ramu, 64 MB TT-Ramu, Zewnętrzny naped CD-ROM, napęd MO Fujitsu 230 MB, karta graficzna MEGA Vision 300 Netusbee/Atari Jaguar + Skunkboard, Atari 65 XE + SIDE

Odp: Na ile pamięci można liczyć w STE?

Najwięcej możesz wycisnąć robiąc trackdemo, wtedy teoretycznie możesz mieć prawie całą pamięć -pierwszy kilobajt i -TOS. Jeżeli demo ma być odpalane z TOSa, to zrób jak sugerował Sqward - na starcie Mshrink (bo TOS normalnie przydziela procesowi całą dostępną pamięć) i potem Malloc. Innym rozwiązaniem jest użycie sekcji BSS, wówczas gdy wolnej pamięci będzie za mało TOS da o tym komunikat. Generalnie wydaje mi się że spokojnie można liczyć na 3.5MB i naprawdę ciężko mi sobie wyobrazić (na ten moment wink) demo które potrzebowałoby więcej.  To co wskazał Kroll to też nie jest ostateczna wartość bo Hddrivera można różnie skonfigurować, i wówczas będzie różnie.

A jak bardzo potrzebujesz dużo pamięci, możesz wykorzystać TTram, ale ilość STków które go mają można policzyć prawdopodobnie na palcach jednej ręki. Ja mam, więc mi nie przeszkadza tongue

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

13

Odp: Na ile pamięci można liczyć w STE?

@Kroll - Dzięki, widzę, że można wycisnąć naprawdę dużo, więc jest sporo marginesu.
@Adam - Planujemy demo plikowe doczytujące się z HD na STE i nie mam pojęcia co wyjdzie z kompatybilności z większymi Atarkami, więc na pewno ograniczę się do standardowej pamięci ST.
Nie rozumiem jeszcze do końca zależności mshrink i malloc. Planuję zrobić proces, który będzie zajmował malutko (mało code, data i bss), który rozejrzy się po zmiennych systemowych sprawdzając ile jest pamięci i wtedy zrobi mshrink na tyle pamięci ile mu potrzeba. Nie wyczytałem w docach, żeby mshrinkiem dało się tylko zmniejszać pamięć a nie powiększać, dlatego nie zakładałem, że będę wołał malloc (mam negatywne odczucia  co do runtime'owego zarządzania pamięci).

laoo/ng

14

Odp: Na ile pamięci można liczyć w STE?

Co prawda moje doświadczenie w ST jest małe, ale ja to robię tak, że definiuję odpowiednio dużą sekcję BSS i niech TOS się martwi (choć chyba nic mojego póki co nie wymaga więcej jak 520 smile ).

15

Odp: Na ile pamięci można liczyć w STE?

No jest wiele opcji. Rozwiązanie z odpowiednią sekcją BSS chyba jest najprostsze, bo TOS sam wyświetli odpowiedni komunikat jak pamięci będzie za mało. Wyobrażam sobie, że takie bardziej zaawansowane scenariusze pewnie mają znaczenie przy większych Atarkach, które mają multitasking, ale w przypadku zwykłego ST ze zwykłym TOSem i tak wychodzi na jedno.
Doczytałem jeszcze teraz dokumentację i rzeczywiście przeczytałem, że TOS przydziela zawsze wszystko, a mshrink (alternatywna nazwa setblock) rezerwuje konkretny obszar, więc nie ma tam mowy o zwiększaniu pamięci bo i tak na starcie ma się maksa.

laoo/ng

16

Odp: Na ile pamięci można liczyć w STE?

laoo/ng napisał/a:

Doczytałem jeszcze teraz dokumentację i rzeczywiście przeczytałem, że TOS przydziela zawsze wszystko, a mshrink (alternatywna nazwa setblock) rezerwuje konkretny obszar, więc nie ma tam mowy o zwiększaniu pamięci bo i tak na starcie ma się maksa.

Mshrink zmniejsza wielkość przydzielonego bloku
Malloc/Mxalloc rezwerwują obszar pamięci

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

17

Odp: Na ile pamięci można liczyć w STE?

Używanie sekcji BSS jest o tyle niebezpieczne, że nie możesz być pewny czy program jest załadowany do ST czy TT ramu. Dlatego lepiej jest mimo wszystko zrobić Mxalloc. Zależy od pedantyczności programisty smile

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

18

Odp: Na ile pamięci można liczyć w STE?

Drugi rozdział Atari Compendium opisuje format pliku GEMDOSowego. Pod offsetem 0x16 jest pole PRGFLAGS, które ma bity określające do jakiej pamięci ma być załadowany proces.
@sqward wg tego opisu jeżeli ustawi się te pole na 0 to program nie zostanie załadowany do TT ramu. Źle to rozumiem, czy to nie są dobre informacje?

laoo/ng

19

Odp: Na ile pamięci można liczyć w STE?

Dobrze zrozumiałeś, ale user może to zmienić. Polecam ustawienie bitu FASTLOAD jeśli nie chcesz, żeby TOS czyścił całą pamięć dostępną po załadowaniu programu (tej której się pozbywasz robiąć Mshrink).

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

20

Odp: Na ile pamięci można liczyć w STE?

Tak. FASTLOAD brzmi fajnie.
W sumie... teraz zaświtała mi w głowie idea, że tylko bufory na pamięć ekranu, DMA sampli i dysku oraz cokolwiek dotykam blitterem muszą być w ST ramie, a cała reszta mogłaby być też i w TT ramie. Nie wiem tylko, czy to jest warte zachodu w porównaniu do wymagania, aby po prostu było wolne dla dema (max) 3.7 MB ST ramu, skoro liczbę STków z TT ramem można liczyć wg Adama na palcach jednej ręki, a nie zakładam, żeby demo odpalało się poprawnie na TT albo Falconie.

Żebyście tylko nie rozumieli mnie źle. Nie planuję potworka zjadającego cały RAM. Pytałem się tylko o limity, których nie można przekroczyć, bo będę pisał narzędzia, które mi tą pamięcią będą automatycznie zarządzały i chcę je jakoś nastroić kiedy mają wywalać błąd.
W każdym razie wielkie dzięki, bo dużo się z tego wątku dowiedziałem.

Ostatnio edytowany przez laoo/ng (2021-02-10 12:48:01)

laoo/ng

21

Odp: Na ile pamięci można liczyć w STE?

Zawsze się znajdzie ktoś komu się nie podoba, że demo nie działa na 1MB smile

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