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
     
    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 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 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 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
     
    gienekp - Pisz do Draco, on raczej ma :)
    • 6: CommentAuthortebe
    • CommentTime7 Apr 2023 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 zmieniony
     
    Ten z AtariWiki chyba nie pod MADa jest
    ERROR: Unknown directive .PAGE


    EDIT.
    Panie Draco, jest prośba... ;)
    • 8: CommentAuthormono
    • CommentTime7 Apr 2023
     
    • 9: CommentAuthorilmenit
    • CommentTime7 Apr 2023
     
    Jest na moim githubie ->link<-
    • 10:
       
      CommentAuthorgienekp
    • CommentTime7 Apr 2023
     
    @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
     
    -o:
    • 12: CommentAuthortebe
    • CommentTime8 Apr 2023 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
     
    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 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
     
    ->link<-

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