atarionline.pl Ładowanie z kasety od $900 - 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.  
    Jeszcze jedno pytanie do obcykanych Atarowców :)

    Żeby zmieścić się w 600XL ładuję gierkę od $900, narażając się użytkownikom DOSa :)

    Nie mogę jednak takiego programu załadować z .cas za pomocą loadera z wykrzyknikiem. Czy wykrzyknik potrzebuje jakichś danych poniżej $2000 pozostawionych w stanie niezniszczonym?
    • 2: CommentAuthorxxl
    • CommentTime24 Mar 2013
     
    jesli piszesz program, ktory ma byc wczytany z kasety to wyprodukuj go w wersji boot (mads to wspiera) nie bedziesz potrzebowal loadera z wykrzyknikiem bedziesz mogl ladowac program napawde "nisko". dla dyskietki tez mozna tak zrobic ale wygodniej jest dla dysku uzyc jakiegos inicjalizera/game dosa wtedy mozesz ladowac pliki binarne tez duzo nizej
    • 3: CommentAuthorseban
    • CommentTime24 Mar 2013
     
    w słynny już "!", ładuje się od $700 i zajmuje 5 rekordów po 128 bajtów. Więc obszar $700-$980 masz niejako wyłączony z użytku. Nie patrzyłem w kod "!" więc nie wiem czy powyżej $980 nie robi sobie jakiegoś bufora na dane.
    • 4: CommentAuthorxxl
    • CommentTime24 Mar 2013
     
    no wlasnie, sa jakies alternatywne loadery kasetowe? wydaje mi sie ze nie powinien taki programik zajmowac wiecej jak 256 bajtow
    • 5: CommentAuthorseban
    • CommentTime24 Mar 2013
     
    Hej!

    Na pewno są, ja kiedyś w ramach "wakacyjnej" nudy napisałem kilka. W pierwszym podejściu zaczynałem od 3 rekordów po 128 bajtów. Skończyłem na wyniku poniżej 256 bajtów. Tylko gdzie ja to mam? ;/ pewnie gdzieś na moich kasetach leży. Zapewne szybciej będzie napisać nowy loader niż szukać tego po starych kasetach :]

    Przypomniało mi się iż nawet jakiś program kopiujący docelowo popełniłem który nagrywał docelowy plik tak iż po 3-rekordach loadera, leciał od razu program typu "file", bez 20 sek. przerwy. Całość po nagraniu na kasetę było jakby jednym plikiem. Ładowało się jednak tak że po 3 rek. odpalał się mój loader i czytał resztę danych.

    "!" normalnie otwiera następny plik poprzez CIO, i czyta z urządzenia "C:".
    • 6:
       
      CommentAuthormgr_inz_rafal
    • CommentTime24 Mar 2013 zmieniony
     
    Najwyższe miejsce, z którego mogę wystartować to $9E1 - niestety wtedy wykrzyknik też sobie nie radzi.

    Zaraz sprawdzę jak zadziała wersja boot.

    No i przyłączam się do pytania xxl'a o jakiś krótszy loader kasetowy.

    ------
    Edit: No dobra, jak wygenerować wersję "boot" w MADS?
    • 7: CommentAuthorxxl
    • CommentTime24 Mar 2013
     
    program typu boot ma inny naglowek. wylacz gnerowanie naglowka w mads i stworz wlasciwy. 6 bajtow: $00,ilosc rekordow - rekord ma 128 bajtow,adres ladowania - moze byc chyba nawet $480 dla kasety,adres inicjowania po reset. taki program zostanie uruchomiony od 6 bajtu czyli zaraz po naglowku. trzeba tylko pamietac ze naglowek jest czescia programu - nie jak w pliku binarnym. program typu boot moze miec tylko jednego org'a
    • 8:
       
      CommentAuthormgr_inz_rafal
    • CommentTime24 Mar 2013 zmieniony
     

    xxl:

    program typu boot moze miec tylko jednego org'a
    Kurde, to mi utrudni sprawę, ale jak nie będzie wyjścia to pokombinuję...

    Ale z drugiej strony napisałem sobie prosty programik "wchodzący" od $900 i udało się go uruchomić wykrzyknikiem. Może problem tkwi w czymś innym niż adres startu, np. właśnie w kilku orgach, których ! nie ogarnia.

    ------------
    Edit: Dobra, sprawdziłem. ! radzi sobie dobrze z kilkoma orgami.

    Edit2: Pobawiłem się jeszcze trochę i wyszło mi na to, że ! zaczyna się gubić w momencie, gdy do kodu dodam taki fragment
    .
    music equ $2ce9 ; --> $3432

    org music
    dta b($a0)
    dta b($e3)
    dta b($ed)
    dta b($e3)
    dta b($a0)
    dta b($e4)
    dta b($e1)
    dta b($f4)
    ... i tutaj dalsze dane muzyczki

    W momencie, gdy zakomentuję "org" program poprawnie wczytuje się z pliku .cas.

    Strange...
    • 9: CommentAuthorVidol
    • CommentTime24 Mar 2013
     
    a nie prosciej bedzie gre spakowac niz kombinowac z bootem?
    • 10:
       
      CommentAuthormgr_inz_rafal
    • CommentTime24 Mar 2013 zmieniony
     
    @Vidol
    Kurde, próbowałem pakować Exomizerem, ale plik wynikowy nie uruchamiał mi się na 600XL :(

    Ale problem już rozwiązany po egipsku (czyli silikon i udeptanie sandałem) :)

    Przekonstruowałem kod tak, aby mieć jednego org-a głównego, ładującego program od $9E1 (akurat wtedy DL jest idealnie od $2000). Następnie ciągiem leci kod programu, display lista, muzyka i player. Po tym wszystkim, jeszcze przed $3fff (limit 600XL) udało mi się upchnąć font, sprity i pamięć ekranu.

    Wykrzyknik ładuje to poprawnie :)

    Minus jest taki, że jak znajdę jakiegoś buga, to albo muszę zmienić adres ładowania albo "przekompilować" od nowa muzę i playera :(

    -------------
    Edit: Musiałem też niestety wywalić wyłączanie BASICa, bo program z kasety nie startował (po wczytaniu na ekranie zostawał wykrzyknik).

    org $d301
    .byte $ff
    • 11: CommentAuthorseban
    • CommentTime24 Mar 2013
     
    jak znajdę chwilę to albo znajdę mój loader albo napiszę nowy :P
  2.  
    @seban
    Z góry bardzo dziękuję :)

    PS. A na 600XL loader z wykrzyknikiem nie wyświetla wykrzyknika :) Ale wczytuje :)
    • 13: CommentAuthorbob_er
    • CommentTime24 Mar 2013
     
    Bo ten ! na ekranie to jest właściwie bug :). Niegroźny, ale zawsze. Szczegóły: ->link<-
    • 14: CommentAuthorxxl
    • CommentTime24 Mar 2013
     
    @seban: z przyjemnoscia poczytam. mam pytanie, przy initach zatrzymujesz silnik i/lub regulujesz dlugosc przerwy. regulacja dlugosci rekordy, zmiany szybkosci, program kopiujacy... jest co opisywac. moze jakis artek na ten temat?
  3.  
    @bob_er
    Jeśli to prawda to tym bardziej dziwne, że:
    1. tak się ten loader rozpowszechnił w świecie
    2. nie ma dla niego oczywistej alternatywy
    • 16: CommentAuthorpirx
    • CommentTime24 Mar 2013
     
    org $d301
    .byte $ff

    to w zasadzie
    lda #$ff
    sta $d301
  4.  
    @pirx
    A czy już po załadowaniu programu nie jest za późno na wyłączanie BASICa?
    • 18: CommentAuthorxxl
    • CommentTime24 Mar 2013
     
    a ma to jakies znaczenie w przypadku 600xl? chyba nie ma pamieci powyzej $3fff wiec czy wylaczysz basic czy nie jeden pieron.
    • 19:
       
      CommentAuthormgr_inz_rafal
    • CommentTime24 Mar 2013 zmieniony
     
    @xxl
    Pewnie zdecydowanie częściej i tak będę odpalał tę grę na 800xl z SIO2SD, więc warto byłoby zaoszczędzić na wciskaniu OPTION. Jednakże wolę mieć jedną wersję gry na kasety, dyskietki, 600xl, 800xl i inne, dlatego na razie zostawiam sprawę tak jak jest, bo mi się wszystko w końcu wczytuje :)
    • 20: CommentAuthorxxl
    • CommentTime24 Mar 2013
     
    ale jesli bedzie dzialac na 600xl to na 800xl nie ma znaczenia czy bedzie basic wlaczony/wylaczony
    • 21: CommentAuthorxxl
    • CommentTime24 Mar 2013
     
  5.  
    Fakt, masz rację.

    Za mocno się już dziś zakręciłem, żeby dostrzec tę prawidłowość.
  6.  
    @xxl
    Dzięki! JBW Tape Boot ładnie wciągnął całą grę bez żadnych zmian w źródle :) I do tego z ładnym napisem podczas ładowania.

    Mam podejrzenie, że ! owszem, obsługuje wielokrotne org, ale chyba tylko wtedy, gdy nie znajduje się po nich zbyt dużo danych.

    Np. taki program jak poniżej nie wchodzi za pomocą wykrzyknika po skonwertowaniu do .cas.

    .
    opt h+l+

    org $3000
    dupa jmp dupa

    org $2000
    dta d"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
    dta d"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
    dta d"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
    dta d"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
    dta d"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
    dta d"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
    dta d"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
    dta d"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
    dta d"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
    dta d"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
    dta d"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
    dta d"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
    dta d"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
    dta d"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
    dta d"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
    dta d"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
    dta d"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
    dta d"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
    dta d"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
    dta d"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"

    org $4000
    dta d"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"
    dta d"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"
    dta d"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"
    dta d"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"
    dta d"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"
    dta d"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"
    dta d"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"
    dta d"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"
    dta d"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"
    dta d"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"
    dta d"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"
    dta d"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"
    dta d"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"
    dta d"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"
    dta d"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"
    dta d"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"
    dta d"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"
    dta d"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"
    dta d"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"
    dta d"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"

    org $700
    dta d"DD"

    org $6000
    dta d"CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC"
    dta d"CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC"
    dta d"CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC"
    dta d"CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC"
    dta d"CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC"
    dta d"CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC"
    dta d"CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC"
    dta d"CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC"
    dta d"CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC"
    dta d"CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC"
    dta d"CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC"
    dta d"CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC"
    dta d"CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC"
    dta d"CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC"
    dta d"CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC"
    dta d"CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC"
    dta d"CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC"
    dta d"CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC"
    dta d"CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC"
    dta d"CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC"

    org $02e0
    .dw $3000

    end
    • 24: CommentAuthorxxl
    • CommentTime25 Mar 2013
     
    na pierwszy rzut oka problemem moze byc to:

    org $700
    dta d"DD"
    • 25:
       
      CommentAuthormgr_inz_rafal
    • CommentTime25 Mar 2013 zmieniony
     
    Zapomniałem, żeby nie ładować nic tam, gdzie siedzi wykrzyknik. Ale po zmianie powyższego fragmentu na

    org $5000
    dta d"DD"

    również się nie wczytuje.
    • 26: CommentAuthorVidol
    • CommentTime25 Mar 2013
     
    moze poszczegolne bloki musza miec te sama dlugosc?
    • 27: CommentAuthorseban
    • CommentTime25 Mar 2013
     
    a skąd wiesz że się nie ładuje? :) jaki jest efekt?
  7.  
    Bo po załadowaniu pod $6000 mam np. same $ff, $ff, $ff...
    • 29: CommentAuthorseban
    • CommentTime25 Mar 2013
     
    czyżby kolejny błąd w "!" :) aż mnie zaintrygowałeś, sprawdzę ;)
    • 30:
       
      CommentAuthormgr_inz_rafal
    • CommentTime25 Mar 2013 zmieniony
     
    A Tobie działa? :) Czuję tu jakieś drugie dno... ;-)

    ---------
    Edit:
    OK, aż sprawdziłem raz jeszcze. No i muszę przeprosić: to Altirra ustawiona na 16k...


    Dobra, to więcej nie drążę :) Jakby co, to po party mogę udostępnić plik .xex, którego nie mogłem załadować wykrzyknikiem, dopóki nie pozbyłem się orgów. JBW wessał go jak szatan :)
    • 31: CommentAuthorseban
    • CommentTime25 Mar 2013
     
    No u mnie działa ;) sprawdziłem xasm-em, mads-em, etc. :) wyniki testów leżą tutaj...

    ->link<-
    • 32: CommentAuthorseban
    • CommentTime25 Mar 2013
     
    Hej!

    Jeszcze mały offtopic, do XXL-a:

    "@seban: z przyjemnoscia poczytam. mam pytanie, przy initach zatrzymujesz silnik i/lub regulujesz dlugosc przerwy. regulacja dlugosci rekordy, zmiany szybkosci, program kopiujacy... jest co opisywac. moze jakis artek na ten temat? "

    Co do zatrzymywania silnika przy segmentach INIT, to tak zatrzymywałem silnik i do kompletu wydłużałem przerwy, gdy w danym rekordzie występował segment INIT. Na początku nie chciałem wcale zatrzymywać silnika, ale problem się pojawiał gdy gra miała intro, które zatrzymywało proces ładowania :) Samo zatrzymanie silnika powodowało więcej szkód niż pożytku (zagięcie taśmy, konieczność odczekania chwili po włączeniu silnika, etc.)

    Jak się kiedyś nie miało stacji to nawet magnetofon sprawiał radochę i tworzenie różnych programów użytkowych dla tegoż wynalazku :)

    Żadnego przyspieszania nie było, standardowe 600bodów. Jak teraz sobie przypominam to trochę tego softu dla magnetofonu napisałem (standard [FSK] i Turbo [PWM], głownie T2000), tyle że nie wiem gdzie to wszystko mam ;/ Czeka mnie chyba przegrzebanie kaset :P