atarionline.pl Omijanie RTS - 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.  
    Hej,
    Niby mi działa, ale wolę dopytać :)

    W specyficznym przypadku chcę powrócić z procedury nie do kodu, który ją wywołał, tylko do kodu, który wywołał kod ją wywołujący. Czyli jakby zrobić dwa RTS w jednym.

    Nie mogę zrobić RTS, które wróci do RTS, które wróci tam gdzie chcę, gdyż w wyniku działania procedury to drugie RTS znika.

    Przechodzę do pytania: Czy to, że w takim przypadku przed RTS wstawiam 2xPLA jest wystarczające?
    • 2: CommentAuthorwieczor
    • CommentTime12 Sep 2015 zmieniony
     
    Powinno, ale ja bym to zrobił inaczej; po prostu w specyficznym przypadku (kiedy chcesz wrócić do procedury nadrzędnej) skakał bym do tej podrzędnej przez JMP zamiast JSR :) Wtedy RTS wróci do nadrzędnej. Szybciej.

    Edit: teraz naszła mnie refleksja, że to można zrobić, jeśli wiesz, że specyficzny przypadek wystąpił przed wywołaniem procedury podrzędnej, bo jeśli wiesz to dopiero w środku, to faktycznie plapla trzeba zrobić :)
  2.  
    Właśnie wiem dopiero w środku, tam zapada decyzja, czy w pamięci jest właściwy kod, czy też trzeba doczytać go z dysku (i tym samym nadpisać wywoływacza).

    W takim razie zostaje "plapla" :)
    • 4: CommentAuthorgorgh
    • CommentTime12 Sep 2015
     
    pla
    pla
    rts
    • 5: CommentAuthorbob_er
    • CommentTime12 Sep 2015
     
    Czy to jest metoda elegancka to nie wiem.
    Ale w podobny sposób kiedyś zmieniałem punkt powrotu z przerwania.
    • 6: CommentAuthorxxl
    • CommentTime12 Sep 2015
     
    w xB obsluga bledow transmisji z tego korzysta.

    mozna tez rozwazyc uzycie tsx przed jrs a txs po decyzji gdzie wracamy... oszczednosc czasu pla/pla to 8 cykli tsx/txs to 4 cykle.
    • 7: CommentAuthor0xF
    • CommentTime12 Sep 2015
     
    pla
    pla
    rts
    to standardowe rozwiązanie tego problemu. Można je znaleźć nawet w Atari BASIC pod adresem $B66C.
    • 8: CommentAuthormono
    • CommentTime12 Sep 2015
     
    pla
    pla
    rts
    Metoda z tsx i wstawieniem adresu powrotu na bok jest wykorzystywana przez mechanizm wyjątków w SDX (U_SFAIL, U_FAIL, U_XFAIL).