atarionline.pl Atari 800XL Mapa Pamięci - Procedury OS (nie DOS) - 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: CommentAuthoriSiek
      • CommentTime5 Dec 2024 16:12 zmieniony
       
      Cześć,

      to znowu ja. Tym razem z trochę inną kwestią. Nadal uczę się programować i staram się zrozumieć jak najwięcej aspektów i tajemnic Atari samego w sobie.

      Dzisiaj na tapetę chciałem wziąć temat związany z procedurami (pod-programami) OS, które w krótki sposób są przedstawiane w książkach - mapy pamięci - Wojciecha Zientary (a dokładniej w tym przypadku, w ich re-edycjach).

      Bardzo się cieszę, że są one wymienione wg adresów, jednak ich bolączką jest lakoniczny opis funkcjonalności. O ile ze skrótowej nazwy, jak i krótkiego opisu można się coś domyśleć, o tyle jest problem z ich użyciem (brak przykładów). Skąd wiecie (może polecicie jakieś inne źródła w Internecie lub drukowane publikacje) jakich parametrów te pod-programy oczekują i w jaki sposób je przekazać do nich? Jak wiemy sposobów może być kilka ale jak nie błądzić?

      Na przykładzie, testowałem sobie pisanie po ekranie w ATASCII i chciałem do tego celu użyć procedury PUTLINE ($c642). Problem w tym, że nie wiedziałem jak dostarczyć do niej argumenty. Więc metodą prób i błędów, odkryłem, że argumenty (w tym przypadku) dostarczamy przez stos.

      Popełniłem sobie taki kod:

      org $0600

      TXT .byte 'Strasznie dluga linia tekstu!',$9b
      WRITELN = $c642

      BEGIN
      ldx #<TXT
      txa
      pha
      ldy #>TXT
      tya
      pha
      jsr WRITELN

      jmp *

      END.

      run BEGIN


      W tym przypadku wynik uzyskujemy bezpośrednio na ekranie, co nie musi być prawdą dla innych procedur. Mogą one przekazywać wartość zwrotną w inny sposób. No właśnie, i jak tego też się dowiedzieć?

      Nie mam chęci w ten sposób sprawdzać wszystkich dostępnych pod-programów, aby znaleźć jak przekazywać argumenty i odbierać wyniki. Macie jakiś dobry sposób na to żeby móc sprawdzić to w systemie lub innych książkach? Jak wy sobie z tym poradziliście w początkach kariery programistycznej? :)

      Jak zawsze, ślicznie wszystkim z góry dziękuję za okazaną pomoc.
      • 2: CommentAuthoriSiek
      • CommentTime5 Dec 2024 18:12
       
      OK, wygląda na to, że w trybie debugowania w Altira, można skoczyć pod adres procedury, wyciągnąć z niej kody OP, porównać z tabelą kodów aby poznać mnemoniki i postarać się zrozumieć co to robi.

      Właśnie sobie analizuję wyżej wspomnianą procedurę PUTLINE
      • 3: CommentAuthormarok
      • CommentTime5 Dec 2024 18:12
       
      W przeszłości trochę zaglądałem (trudno to nazwać studiowaniem) do jednej z książek z tej serii.

      Więc, wydaje mi się, że problem z użyciem procedur OS jest taki, że wcale ich tak często się nie używa we własnych celach i tak jakby na własną rękę.
      Powodem tego jest możliwość przesunięcia w pamięci poszczególnych procedur w różnych wersjach ROM.

      Są jednak od tego wyjątki i przewidziana specjalna ścieżka użycia procedur OS a ma to związek z tzw. tablicą skoków do procedur systemowych ("legalnego użycia").
      Wygląda mi na to (będąc słabo zorientowany) że nie jest ich zbyt wiele:

      ->link<-

      Ale tak w ogóle, pewnie znajdą się też inne głosy, spojrzenia i wskazówki, które będą lepiej odpowiadać na Twoje zapotrzebowanie, ponieważ na pewno takie korzystanie z procedur OS też ma miejsce i swoich zwolenników.
      • 4: CommentAuthormarok
      • CommentTime5 Dec 2024 18:12
       
      porównać z tabelą kodów aby poznać mnemoniki


      czyżby chodziło tutaj o samą deasemblację kodu procedury?

      tego na pewno nie trzeba robić pod emulatorem!
      • 5: CommentAuthorZenon
      • CommentTime5 Dec 2024 19:12 zmieniony
       
      Jest taka książka PORADNIK PROGRAMISTY ATARI - ZIENTARY. Opisane są niektóre tematy interesujące cię.
      Np, PUTLINE opisano na str. 101
      • 6: CommentAuthortebe
      • CommentTime5 Dec 2024 19:12
       
      putline

      ->link<-
      • 7: CommentAuthoriSiek
      • CommentTime5 Dec 2024 19:12
       
      @marok Dziękuję, tak, taką tablicę skoków też posiadam. Mnie ogólnie chodziło jak prawidłowo wywołać te pod-programy i przekazać im parametry. Rozumiem, iż nie są zbyt często używane, bo pewnie można sobie napisać lepsze, własne. Na początkowym etapie nauki jednak chciałem i to zrozumieć oraz wykorzystać w dość szybki sposób do prostych zastosowań. Jeśli chodzi o "mnemoniki" to osobiście niczego nie deasembluje, sam skok pod adres pod-programu w Altira wyświetla zawartość załadowanej pamięci i tam przeglądam co to robi.

      @Zenon wielkie dzięki, mam książkę pod tym tytułem ale na stronie 101 niestety jest coś innego (skrótowe objaśnienie mnemoników assemblera). Możliwe, że to ta kolejna część, którą mam zamówioną z Retronis, która będzie miała swoją premierę w okolicach Świąt. Poszukam sobie PDF w międzyczasie i zobaczę, czy to o tę właśnie chodzi.
      • 8: CommentAuthoriSiek
      • CommentTime5 Dec 2024 19:12
       
      @tebe Dziękuję! O coś właśnie takiego mi chodziło i to się dokładnie pokrywa z tym co przeglądałem w pamięci pod Altirą. Jutro na spokojnie przejrzę sobie cały dział "Niezbędnik kodera" na tamtej stronie! Coś mi się wydaje, że znajdę tam większość odpowiedzi na swoje pytania :)