atarionline.pl MADS - ładowanie xex 64k+ - 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: CommentAuthorcalypso2k
    • CommentTime7 Sep 2013
     
    elo,
    załóżmy, że mam 320kb pamięci i chciałbym załadować xex o nieomal tej wielkości. W źródle robię cobie INS "dupa.raw".
    W jaki sposób mogę najprościej zapisać taki xex, że co 8kb będzie blok przełączający banki i kolejny ładujący następne 8kb i tak w kółko, aż załaduję całe dane?
    • 2: CommentAuthortebe
    • CommentTime7 Sep 2013
     
    mads daje taki mechanizm, w przykładach znajdziesz plik xms_banks.asm

    ogólnie sprowadza się to do tego że piszesz kod przełączający bank, ładujesz ten kod do pamięci, potem wywołujesz go przed każdym nowym bankiem przez INI zmien_bank, po takim INI-cie występuje blok ładujący już dane od $4000 itd.
    • 3: CommentAuthorxxl
    • CommentTime7 Sep 2013
     
    > że co 8kb będzie blok przełączający banki i kolejny ładujący następne 8kb i tak w kółko

    te banki maja po 16kb
    • 4: CommentAuthorcalypso2k
    • CommentTime8 Sep 2013
     
    hmm... skomplikowane, myślałem, że jakoś łatwiej będzie :)

    ale o to chodziło, podziękował ślicznie.
    • 5: CommentAuthorxxl
    • CommentTime8 Sep 2013 zmieniony
     
    jesli poruszasz sie w standardzie a130 (4 dodatkowe banki) to mozesz to zrobic tak:

    org portb
    .byte bank0
    org $4000
    ins "16kb0.dat"

    org portb
    .byte bank1
    org $4000
    ins "16kb1.dat"

    itd.

    niestety powyzj 128k dodatkowej pamieci mamy na atari "psi" standard ;-) i musisz sprawdzac ktore banki sa dostepne a ktore nie jak radzil Tebe.
    • 6: CommentAuthorcalypso2k
    • CommentTime8 Sep 2013 zmieniony
     
    Zadałem pytanie ogólne o samą idee i akurat podałem przykład, że mam 320kb :)
    Tak naprawdę potrzebuję napchać grafiki do VBXE w celach developerskich - wygodnie mieć wszystko na raz w RAM/VRAM i się bawić, niż doczytywać.

    Przykład bardzo fajny - dziękuję.

    edit
    PS dla potomnych: powyższe wywody nie zmuszają nas do cięcia naszych danych w bloki 16kb - pseudo rozkaz INS pozwala na użycie offset'u i długości danych pakowanych do xex, odpowiednio manipulując tymi parametrami w danym miejscu xex'a możemy umieścić to co nam akurat potrzebne.