atarionline.pl ATARI ROM w ASM - 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:
         
        CommentAuthorgienekp
      • CommentTime7 Apr 2023 17:04
       
      Czy gdzieś, kiedyś, ktoś wykonał tytaniczną pracę i zamienił ROM ATARI na kod assemblera, taki dla MADSa?
      Szukałem, ale nie znalazłem.

      No jakby było z nazwami procedur i nazwami rejestrów to byłby ideał.
      • 2: CommentAuthordss
      • CommentTime7 Apr 2023 18:04 zmieniony
       
      Zdaje się, że książki wydawnictwa SOETO to opisywały. A konkretniej to Wojciech Zientara.
      ->link<-
      Przy czym ten kod z książek jest raczej albo pod MAC/65 albo pod EASMD. Nie wiem - być może też pójdzie na MADS-ie?
      • 3:
         
        CommentAuthorgienekp
      • CommentTime7 Apr 2023 18:04 zmieniony
       
      Zientary to znam. Ale szukam pliku asm, takiego, że jak puszczę przez MAD asemblera to wyskoczy dokładnie taki sam BIN.

      Chyba trzeba napisać taki szybki disassembler. Przepisać nazwy funkcji z Zientary i niech automat wypuści kod.
      • 4: CommentAuthoradi
      • CommentTime7 Apr 2023 19:04 zmieniony
       
      Po co pisać, są online np.:
      ->link<-

      Albo zrzucić to, co dissassembluje w monitorze emulator Atari800.
      Ten ostatni będzie od razu miał nazwy funkcji.
      • 5:
         
        CommentAuthorAlex
      • CommentTime7 Apr 2023 19:04
       
      gienekp - Pisz do Draco, on raczej ma :)
      • 6: CommentAuthortebe
      • CommentTime7 Apr 2023 19:04 zmieniony
       
      ->link<-

      ; THIS IS THE MODIFIED SEPTEMBER ATARI 400/800 COMPUTER OPERATING
      ; SYSTEM LISTING. MODIFIED TO ASSEMBLE ON THE MICROTEC CROSS
      ; ASSEMBLER.
      ; THIS VERSION IS THE ONE WHICH WAS BURNED INTO ROM.
      ; THERE IS A RESIDUAL PIECE OF CODE WHICH IS FOR LNBUG. THIS
      ; IS AT LOCATION $9000 WHICH IS NOT IN ROM.
      • 7:
         
        CommentAuthorgienekp
      • CommentTime7 Apr 2023 19:04 zmieniony
       
      Ten z AtariWiki chyba nie pod MADa jest
      ERROR: Unknown directive .PAGE


      EDIT.
      Panie Draco, jest prośba... ;)
      • 8: CommentAuthormono
      • CommentTime7 Apr 2023 19:04
       
      • 9: CommentAuthorilmenit
      • CommentTime7 Apr 2023 20:04
       
      Jest na moim githubie ->link<-
      • 10:
         
        CommentAuthorgienekp
      • CommentTime7 Apr 2023 22:04
       
      @ilmenit

      to Ci sie kompiluje madsem?

      daje:
      mads Atari_XL_OS_Rev.2.asm -o atarios.bin

      i dostaje
      mads 2.1.3
      Syntax: mads source [switches]
      (...)
      • 11: CommentAuthormono
      • CommentTime8 Apr 2023 08:04
       
      -o:
      • 12: CommentAuthortebe
      • CommentTime8 Apr 2023 10:04 zmieniony
       
      ->link<-

      2.1.3 kiedy to było ?

      mads.exe Atari_XL_OS_Rev.2.asm -fv:0
      Writing listing file...
      Writing object file...
      17960 lines of source assembled in 3 pass
      16384 bytes written to the object file
      • 13:
         
        CommentAuthorgienekp
      • CommentTime8 Apr 2023 14:04
       
      no brakowało DWUKROPKA :)

      Kompiluje się... Ale w zasadzie nie idzie tego dotykać, bo każda podmianka robi potencjalne przesunięcie. No i rozjeżdżają się adresy procedur.

      A w zasadzie to ja nie potrzebuje mieć zdisaseblowane wszystko, tylko, żebym wiedział, gdzie w romie jest jakaś luka, taka mało potrzebna na ewentualne dodatki.

      No to wykombinowałem taki program, że czyta ROM, nakłada na to adresy od Zientary i blokuje je poleceniem ORG. Następnie wypluwa ASM, gdzie po kompilacji mam identyczny wynik. Ale jak wykasuję dany obszar między ORGami to reszta siedzi na starym miejscu. A jak przekroczę obszar to MADs mi mówi, że za dużo. Czyli automat pilnuje.

      Docelowo zrobię loader ROMa na carta i po włączeniu w init carta wyłączy się OS. A na RAM pod nim skopiuje się nowy upgrade i dalej poleci "po nowemu". Jak programy nie będą pstrykać PORTB to w zasadzie patch powinien być cały czas aktywny.
      • 14:
         
        CommentAuthorgienekp
      • CommentTime9 Apr 2023 09:04 zmieniony
       
      Napisałem sobie takie prosty disassembler, tak żeby mi MADS robił potem bina dokładnie w 100%. Z ROMów, które mam jeden jest XL a drugi XE. Ponieważ disassembler robi mi kody asm szablonowo to łatwo je porównywać jako TXT.

      Takie dwie ciekawostki:

      1. ROMy XE i XL różnią się przestawieniem kolejności dla dwóch instrukcji (po co?). Dodatkowo różnią się zestawem znaków międzynarodowych (czyli ATARI dla różnych regionów miał różny zestaw znaków?). No są jeszcze inne sumy kontrolne i coś inaczej w kodach dla nowego urządzenia, ale to nie ważne.

      2. Przed zestawem znaków międzynarodowych jest szczelina wyrównująca wypełniona zerami. Może dałoby się tam upchnąć poprawkę BUGa dla magnetofonu? Bo chyba programistom z ATARI tak na styk nie wyszło wypełnienie ROMu. Więc gdzieś jakaś szpara musiała wyjść.
      ;------------------------------------------------
      ORG $CB56

      ;
      ; obliczenie sumy kontrolnej listy liniowej
      ;
      CHCKFF LDY #$11
      LDA #$00
      CLC
      ADC ($4A),Y
      DEY
      BPL *-3
      ADC #$00
      EOR #$FF
      RTS
      dta $00,$00,$00,$00,$00,$00,$00,$00
      dta $00,$00,$00,$00,$00,$00,$00,$00
      dta $00,$00,$00,$00,$00,$00,$00,$00
      dta $00,$00,$00,$00,$00,$00,$00,$00
      dta $00,$00,$00,$00,$00,$00,$00,$00
      dta $00,$00,$00,$00,$00,$00,$00,$00
      dta $00,$00,$00,$00,$00,$00,$00,$00
      dta $00,$00,$00,$00,$00,$00,$00,$00
      dta $00,$00,$00,$00,$00,$00,$00,$00
      dta $00,$00,$00,$00,$00,$00,$00,$00
      dta $00,$00,$00,$00,$00,$00,$00,$00
      dta $00,$00,$00,$00,$00,$00,$00,$00
      dta $00,$00,$00,$00,$00,$00,$00,$00
      dta $00,$00,$00,$00,$00,$00,$00,$00
      dta $00,$00,$00,$00,$00,$00,$00,$00
      dta $00,$00,$00,$00,$00,$00,$00,$00
      dta $00,$00,$00,$00,$00,$00,$00,$00
      dta $00,$00,$00,$00,$00,$00,$00,$00
      dta $00,$00,$00,$00,$00,$00,$00,$00
      dta $00,$00,$00
      ;------------------------------------------------
      ORG $CC00

      ;
      ; zestaw znaków międzynarodowych
      ;
      • 15: CommentAuthortebe
      • CommentTime9 Apr 2023 12:04
       
      ->link<-

      dis6502 (Free Pascal Compiler) na stronie Madteamu
      • 16:
         
        CommentAuthorjhusak
      • CommentTime9 Apr 2023 16:04
       
      Rom xe wygląda na późniejszy, bo najpierw się zapisuje cień, a potem ewentualnie rejestr. Poprawka rzadko występujacego błędu.