atarionline.pl Dlaczego OPTION i OPTION? - Forum Atarum

    Jeśli chcesz wziąć udział w dyskusjach na forum - zaloguj się. Jeżeli nie masz loginu - poproś o członkostwo.

    • :
    • :

    Vanilla 1.1.4 jest produktem Lussumo. Więcej informacji: Dokumentacja, Forum.

      • 1:
         
        CommentAuthorjhusak
      • CommentTime22 Jul 2025 09:38 zmieniony
       
      Nie za bardzo rozumiem, dlaczego nie spopularyzowało się wyłączanie basica przez loadery, jak jest niepotrzebny i przeszkadza. To przecież kilka rozkazów…
      Może dlatego, że nie było to popularyzowane rozwiązanie przez Atari i przez popularne książki (typu Atari Basic) tylko ten option i option?

      1. Jak wsadzamy kartridż, problem znika.

      2. Przecież loader może wyłączać Basic, czy są takie loadery?

      To klasyczne przerzucenie odpowiedzialności na użytkownika, w innych platformach raczej nie występuje ten problem, Basic zawsze jest i się go wyłącza albo i nie.

      Powodem też może być masowe (?) swego czasu kopiowanie zawartości kartridży w sposób typu „zrzut pamięci”, ale gdyby nie było Option na starcie wymuszone byłyby inne rozwiązania, a tak jest bałagan.

      Jakieś inne przemyślenia macie?


      Tu, że nie jest to wiedza ogólna a na dodatek problem skomplikowany.
      ->link<-

      Pod tym linkiem jest opisana procedura wyłączania Basica mająca kilkadziesiąt bajtów, bo zerowanie pamięci w różnych obszarach …
      • 2:
         
        CommentAuthorPeri Noid
      • CommentTime22 Jul 2025 10:22 zmieniony
       
      Ja mam wrażenie, że to wywodzi się z czasów 400/800 i 1200XL, gdzie Basica nie było na pokładzie. W tych kompach Option nie spełniał swojego zadania (czy w ogóle był odpowiadający mu kod w OS?). Potem, jak już się pojawiło XL/XE sporo programów było już napisane i stąd konieczność wciskania Option. Zresztą, jak by się zachowało 400/800 przy próbie wyłączenia nieistniejącego Basica? Dodawanie detekcji to więcej kodu...
      • 3: CommentAuthortebe
      • CommentTime22 Jul 2025 10:54
       
      BASIC OFF dołączony do 'Mad Pascala'
      ->link<-
      • 4:
         
        CommentAuthorjhusak
      • CommentTime22 Jul 2025 14:11 zmieniony
       
      No i git, my tu gadu gadu a tebe robi.

      Fakt, prawdopodobnie zaszłość i "szybki fix" - zwalmy to na userów.

      Natomiast uważam, że dzisiejsze xexy powinny basic wyłączać, z wyjątkiem sizecodingu.
      • 5:
         
        CommentAuthorgienekp
      • CommentTime22 Jul 2025 22:49 zmieniony
       
      Też się kiedyś nad tym zastanawiałem. Cały ten problem OPTIONa to jakieś niedopatrzenie/niechlujstwo. Zupełnie dziwna sprawa.

      No bo jak jest loader, czy to dosowy czy jakiś kasetowy to leci xex i po co mu BASIC? Jak program będzie potrzebował basica to sobie w INIT włączy i po sprawie.

      Mało tego, sam program, skoro potrzebuje jakąś konfigurację rom/basic itp. to powinien sobie to ustawić (nie patrząc na loader). Tak jak pstrykamy OS-em tak i BASICa można ogarnąć. Przecież to jest jeden i ten sam rejestr.
      • 6: CommentAuthorKonstantyn
      • CommentTime22 Jul 2025 23:27
       
      Ja myślę, może się mylę, że kiedyś wciśnięcie OPTION było traktowane przez producenta i odbiorców jak voodoo. Obecnie może być uciążliwe przy obsłudze wszelakiej maści wgrywadełek chociażby.
      • 7:
         
        CommentAuthorKrótki
      • CommentTime23 Jul 2025 08:58 zmieniony
       
      Z punktu widzenia producenta oprogramowania, im mniej zależności od sprzętu tym lepiej. "Przecież producent komputerów w każdym kolejnym nowym modelu robi jakieś zmiany w znaczeniu PORTB - co jeśli następna zmiana zgubi kompatybilność wsteczną? Przecież jest już Buk wie ile rozszerzeń pamięci robiących jakieś-tam machlojki z PIA, w tym i takie które zmieniają znaczenie bitu włączającego BASIC - czy ja mam je wszystkie testować? Lepiej niech już użytkownik wciska ten Option tak jak Atari przykazało, przynajmniej nie będę musiał wydawać poprawionej wersji programu gdy trafi się komputer niezgodny ze standardem".
      • 8: CommentAuthorgregor2
      • CommentTime23 Jul 2025 10:29 zmieniony
       
      Całkiem możliwe, że zwyczajnie zapomnieli dodać do ROM odpowiednią procedurę, a gdy się zorientowali, to nie było już miejsca, a i komputery były u ludzi.
      Skoro Atari400/800 na początku sprzedawany był z pamięcią RAM 4k i 8k, to odłączanie BASIC nie miało sensu.
      Zresztą, Atari dużo czerpało z architektury Apple II, np. DOS i Atari-BASIC zostały praktycznie przeniesione z Apple II, a skoro tam taki mechanizm był niepotrzebny, to moze zapomnieli dodać ?
      Jak wspomina Paul Laughton, gdy tworzył DOS zakontraktowany dla Atari, najpierw uruchomili jego emulator na Apple II i na nim programowali.
      Dodatkowo, Atari miało doświadczenie z konsolami do gier, więc może sugerowali się tym, że OPTION to tak naprawdę opcja na starcie, czy chcemy komputer, czy konsolę, więc potraktowali BASIC jak kazdy cartridge z grą.
      • 9: CommentAuthor0xF
      • CommentTime23 Jul 2025 23:26 zmieniony
       
      Rzeczywiście to zbędne utrudnienie. Zgadzam się, że wszystkie programy z wyjątkiem sizecodingu powinny odłączać BASIC.

      Ale to drobnostka: na znacznie popularniejszej platformie trzeba wklepywać
      LOAD "*",8,1

      Co myślał twórca tego?
      • 10:
         
        CommentAuthorjhusak
      • CommentTime24 Jul 2025 00:28 zmieniony
       
      Dlatego nie używam C64, ani Spectrum, ani Amstrada :)
      • 11: CommentAuthorgregor2
      • CommentTime24 Jul 2025 00:31 zmieniony
       
      @0xF
      To akurat żadna tajemnica, komenda bez 1 wczytuje dane pod adres z wektora w pamięci, co może być przydatne, jeśli z jakiegoś powodu zmieniono adres startowy dla BASIC i/lub chcesz dograć dane do programu wczytanego wcześniej.
      Lub wgrać plik binarny pod dowolny adres w RAM.
      Wersja z "1" przydaje się do danych binarnych, które muszą być wgrane pod konkretny adres zapisany w nagłówku pliku.

      Na pewno żadna z wersji nie odłącza BASIC-a.
      • 12:
         
        CommentAuthorjhusak
      • CommentTime24 Jul 2025 09:17
       
      Tu nie chodzi o tajemnicę, tylko o woodoo. A jak się plik z dyskietki ładuje na C64? Szczyt hakerstwa :)
      • 13: CommentAuthormono
      • CommentTime24 Jul 2025 10:42
       
      Na Atari grę ładuje się wkładając cartridge do gniazda.
      • 14:
         
        CommentAuthorjhusak
      • CommentTime25 Jul 2025 08:03
       
      Przeca napisałem na samym początku :)
      • 15: CommentAuthormono
      • CommentTime25 Jul 2025 09:23
       
      O przepraszam. Nikt nie czyta - wszyscy piszą.
      • 16: CommentAuthorgregor2
      • CommentTime25 Jul 2025 19:18 zmieniony
       

      jhusak:

      1. Jak wsadzamy kartridż, problem znika.

      Nie jestem tego pewien.
      Znalazlem OS,A na AppleII, wszystko czyli AtariBASIC ,DOS,ASEMBLER/Edytor miesci sie na 1 dyskietce i tak bylo sprzedawane,
      Atari sprzedawalo to samo juz jako 2 cartridge + 1 dyskietka.

      Wyglada ze problem znikal razem z pieniedzmi z kieszeni.
      • 17: CommentAuthormono
      • CommentTime25 Jul 2025 19:25
       
      To jest dobra sytuacja kiedy problem znika wraz z pieniędzmi z kieszeni. Gorzej kiedy pieniądze znikają a problem nie znika.
      • 18:
         
        CommentAuthortdc
      • CommentTime27 Jul 2025 01:30 zmieniony
       
      To mi przypomina opis jednego z naszych, który zachorował kupił dwa testy w aptece i każdy dał mu inny wynik.
      To taka sytuacja gdy odpowiedz składająca się z 1 bitu jaką udziela "urządzenie" to o wiele za mało ;):P
      Trzeba bigfarmę posłać na szkolenia informatyczne, aby ogarnęli kwestię co to 1 bit (na Atari OPTION to też 1 bit ale na wejściu).
      • 19:
         
        CommentAuthorpancio
      • CommentTime27 Jul 2025 04:44
       
      Pokrętnie acz pięknie :-) TeDec! Brakowało mi twoich barwnych metafor :-)
      • 20:
         
        CommentAuthorgienekp
      • CommentTime27 Jul 2025 10:56 zmieniony
       
      Chwilka, ale chyba cartridge nie wyłącza BASICa tylko go przykrywa? Tzn. jak cart ma funkcję odpięcia się od szyny to wtedy jak nie było OPTION to wejdzie BASIC. Czyli w zasadzie gra na carcie, też powinna po boot BASIC wyłączyć.
      Chyba, że coś bredzę i jest jeszcze inaczej?
      • 21: CommentAuthorlzd
      • CommentTime27 Jul 2025 12:58
       
      Rozwinę myśl Peri Noid.

      Atari 800 miało 48 kB. Włożenie kartridża A przykrywało 8 kB RAMu ($A000-$BFFF). PortB obsługiwał joysticki, więc nie było możliwości wyłączenia kartridża innej niż przez jego fizyczne wyjęcie. Programy pisane przed serią XL, jedynie co mogły zrobić, to sprawdzić, czy w obszarze kartridża jest RAM albo ROM i wyświetlić stosowny komunikat - to te bardziej eleganckie - albo się po prostu wyłożyć. Pojawienie się 800 XL z wbudowanym Basiciem narzuciło dodanie możliwości jego programowego odłączenia, ale starsze programy nie wiedziały o tej możliwości, więc użytkownik zamiast wyciągania kartridża musiał przytrzymać Option. Można zastanowić się, dlaczego nie odwrócono działania klawisza.

      Oczywiście nowsze programy mogłyby odłączać Basic samodzielnie, ale to wymagałoby dodatkowego kodu sprawdzającego model komputera, bo nie w każdym PortB odpowiada za pamięć, co zajmowałoby niepotrzebnie cenną pamięć.
    1.  
      Quite simple:

      - with SELECT you can make selections (select 1 or 2 players, select difficulty, etc.)
      - OPTION gives you options, e.g. the option to boot with or without Basic

      Tada, solved it.

      On a more serious note, a Basic-off routine requires approx. 45 (or 55 ?) additional Bytes for a program. Not much, if you ask me, so every programmer that does not program in Basic should use it. Some programs also require page 0 or page 1 or the RAM under Basic to be cleared, this costs some more bytes, but should also be no problem.

      Such a Basic-off routine cannot switch off a cart, so it would not work for Atari 400/800/1200XL and it would also not work if there is a Basic cart (e.g. Atari Basic Rev. A or Altirra Basic) in your XL/XE cartridge slot. Also unsure what happens on the XEGS, since a lot of its bevaviour depends on the presence (or not) of a keyboard.
      • 23:
         
        CommentAuthorgienekp
      • CommentTime28 Jul 2025 09:17 zmieniony
       
      Dobra, to taki fikołek:

      Chcemy zrobić grę w BASICu ale uruchamianą z cartridea :). Wygląda na to, że włączone ATARI z cartridge, przykryje nam BASIC. Ale OS tak naprawdę to tego BASICa nie wyłączy.

      Jeżeli cart ma przełączane banki i może je programowo odłączyć, a potrzebujemy RAM pod BASICem (czyli gra nie BASICowa) to na tym carcie musi być procedura wyłączenia BASICa. Problemu nie ma jak na carcie są wszystkie procedury i nie korzystamy z OSa. Wtedy zwykły zapis do PORTB odłączy wszystko i mamy praktycznie cały RAM. A jak potrzeba OSa to trzeba poustawiać te memtopy itd. to już ustaliliśmy.

      Ale, my robimy program w BASICu. I chcemy tych zasobów mieć jak najwięcej. Przełączanie się pomiędzy cartem/BASICem/ramem robi się dość kłopotliwe. Raz miałem taką potrzebę i poszedłem na totalnego lenia. Cartridgey mają teraz sporą pojemność, więc całego BASICa skopiowałem do banku carta i teraz jak potrzebuje jakieś dodatkowe dane to USRem można to w miarę łatwo przekładać. Ale czy jest jakaś inna ładniejsza metoda?

      No i powstaje pytanie poboczne, skoro BASIC to w zasadzie wlutowany cart. To czy OSa też dałoby się tak zrobić? Robił ktoś przekompilowanie OSa na zakres adresowy $8000-$BFFF? Czy procedury otwierania trybów graficznych potrafią zrobić "GRAPHICS 7" ale żeby obraz był hen daleko gdzieś na $E000?
      • 24: CommentAuthorwoj76
      • CommentTime28 Jul 2025 09:30
       
      Przecież to gdzie leży OS jest podyktowane tym jak chip ROM OS jest podlutowany na płycie i od chipa MMS, można sobie kompilować OS ile chcesz, nic z tego się nie ulepi.
      • 25:
         
        CommentAuthorPeri Noid
      • CommentTime28 Jul 2025 11:35
       
      Na logikę (lamerską), jak się odepnie OS i co tam jeszcze potrzeba, a na carcie jest wersja "przelokowana" w inne miejsca oraz zmieniona jest tablica skoków funkcji systemowych oraz uruchamia się oprogramowanie korzystające wyłącznie z tej tablicy, to powinno to działać. Tak mówi logika. Byle by nie przykrywać żadnych obszarów, gdzie leżą jakieś rejestry bo to jest raczej sprzętowe.
      • 26: CommentAuthorgregor2
      • CommentTime28 Jul 2025 13:00 zmieniony
       
      Atari 800 miało 48 kB

      Nie do końca, np. według pierwszej instrukcji obsługi oba modele 400 i 800 były dostarczane z 8 kB RAM, 48 kB to w tym czasie raczej dla milionerów.
      We wczesnej instrukcji do 800 jest ciekawa informacja, że rozbudowa do 48 kB odłączała oba gniazda cartridge.
      Analizowałem schematy i wychodzi, że 400 w ogóle nie miała mechanizmu odłączania cartridge, za to w 800 jest ciekawiej, bo taki mechanizm jest, tylko że ze schematu wychodzi, że nigdzie nie jest podłączony lub schemat w dokumentacji jest niekompletny.
      No i wygląda, że w schemacie są błędy (być może celowe).

      Podobno w Atari obawiano sie ze pamiec RAM pod Cartem pozwoli na uruchamianie pirackich kopi gier w RAM.
      • 27:
         
        CommentAuthorgienekp
      • CommentTime28 Jul 2025 13:52 zmieniony
       
      @woj76
      To jak podlutowany i gdzie leży to wiadmo, ale z którego miejsca wykonują się procedury to już sprawa dyskusyjna.

      @Peri Noid
      Dokładnie o to mi chodzi. Tylko cały OS musiałby być ładnie w ASM opisany, wszystko na etykietkach. Wtedy nawet kompilacja fragmentami zadziała. Np. bez obsługi SIO (bo idziemy z carta).

      gregor2:

      Podobno w Atari obawiano sie ze pamiec RAM pod Cartem pozwoli na uruchamianie pirackich kopi gier w RAM.

      River Raid xexowy ładuje się w adres carta tylko jakiś wirtuoz zneutralizował kod samozapisu w adres carta.

      OK, to pomijając OPTION i włączanie BASICa. Mam carta co ma ziliard banków i nie potrzebuje za dużo RAM (niech będzie że 8kB). To czy da się zrobić grę która ruszy z carta na modelach od 400 do XL/XE bez żadnych kłopotów? Czy trafimy na jakieś inne bariery na magistrali?
      • 28:
         
        CommentAuthorPeri Noid
      • CommentTime28 Jul 2025 15:17
       
      Obstawiam, że się da - tylko gra musiałaby mądrze korzystać z pierwszych 16KB pamięci RAM. Jeśli cart jest zamapowany i widoczny to przełączanie banków zależy wyłącznie od jego implementacji - przecież nie trzeba do tego używać żadnej logiki komputera (strzelam - zapis na ostatnią stronę pamięci carta powoduje przełączenie banku, wyłapujesz to na carcie i tam przełączasz który bank jest serwowany do komputera).
      • 29:
         
        CommentAuthorgienekp
      • CommentTime28 Jul 2025 18:09
       
      Tak, przełączanie banków to wewnętrzna sprawa carta.

      Ale czy w tym ATARI 400 to cała magistrala wszystkich układów sięga na całe 16bit? Np ustawię P/M na $8000 to zadziała? Jeżeli tak, to w zasadzie to jest komp tylko z mniejszą ilością RAM.

      No to w sumie projektanci z tym OPTION przekombinowali. OPTION powinien być opcją włączenia BASICa, a nie opcją wyłączenia BASICa tam gdzie on jest wbudowany.
      • 30: CommentAuthorgregor2
      • CommentTime28 Jul 2025 18:12
       
      Przy ograniczeniu do 8 kB RAM powinno działać na większości, o ile nie wszystkich, które trafiły do sprzedaży.
      O ile Atari opracowało metodę zwiększania RAM o 8 kB, to we wczesnym okresie do niektórych firm programistycznych trafiły modele z 4 kB RAM, które później przerabiano na 8 kB. Nie ma pewności, czy trafiły one do sklepow, ale bywały u producentow oprogramowania , być może były to jakieś modele nieprzeznaczone do sprzedaży.
      Taki cartridge jest możliwy, do przełączania banków możesz wykorzystać obszar I/O D5xx, który jest doprowadzony od Atari 400.