1

Temat: exomizer self extracting executable

Z tego co rozumiem to exomizer umie robić self-extracting-executable z wejsciowego xex (jeśli nie to poproszę o korektę!). Nie ukrywam, że pogubiłem się parametrach wywołania i nie do końca je rozumiem (brak znajomości platformy heh). Czy mógłbym poprosić o przykład gotowej komendy generującej self-exetracting-executable? :) Dodatkowo chciałem spytać czy po rozpakowaniu zachowany jest alignment etc i wszystko działa "magicznie" z automatu jak orginalna binarka czy o coś dodatkowo trzeba się martwić?

Maciek
--------
Atari 65XE + Ultimate 1MB + Stereo + SIO2SD | Atari 520STE + 4MB + UltraSatan | Atari Falcon 030 + CT60e + 14MB ST + 256MB TT + 68882  + CF + Netusbee | Amiga 500 + 1MB + Gotek | Amiga 600 + 2MB Chip + 8MB Fast + CF

2

Odp: exomizer self extracting executable

Odsyłam do wątku: http://www.atari.org.pl/forum/viewtopic.php?id=13947
Ja robię tak:

exomizer sfx sys -n -t 168 -s "lda \#0 sta \$$22f sta \$$d400" -o prog.xex prog.obx

Parametr -s zawiera kawałek kodu wygaszającego ekran podczas rozpakowania - możesz go usunąć.
prog.obx to jest oryginalna binarka, prog.xex to wynik.
Poza tym niczym się nie przejmuję. Pakowałem programy od $2000..$BFFF - w innych obszarach nie próbowałem.
Używam exomizera v2.0.11 bo nowsze były narowiste.

hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje

3

Odp: exomizer self extracting executable

Dzięki mono! Zweryfikuję czy to u mnie działa i wrazie pytań wrócę tutaj. Mam jeszcze jedno laickie pytanie: jaka jest roznica miedzy obx i xex? (używam mads pod wudsn i on generuje xex, musze zmienić jakąs konfigurację czy jest to tozsame?)

Maciek
--------
Atari 65XE + Ultimate 1MB + Stereo + SIO2SD | Atari 520STE + 4MB + UltraSatan | Atari Falcon 030 + CT60e + 14MB ST + 256MB TT + 68882  + CF + Netusbee | Amiga 500 + 1MB + Gotek | Amiga 600 + 2MB Chip + 8MB Fast + CF

4

Odp: exomizer self extracting executable

Tnx mono! Wszystko działa:) obx i xex jako input zdają się być tu tozsame...

Maciek
--------
Atari 65XE + Ultimate 1MB + Stereo + SIO2SD | Atari 520STE + 4MB + UltraSatan | Atari Falcon 030 + CT60e + 14MB ST + 256MB TT + 68882  + CF + Netusbee | Amiga 500 + 1MB + Gotek | Amiga 600 + 2MB Chip + 8MB Fast + CF

5

Odp: exomizer self extracting executable

.obx i .xex są tożsame. MADS uruchomiony z paluch domyślnie przyjmuje rozszerzenie .obx - najwyraźniej WUDSN mu to przestawia.

hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje

6

Odp: exomizer self extracting executable

Zgadza się - domyślnie WUDSN ustawia rozszerzenie .xex - ale można to ustawić w parametrach.

Post's attachments

Zrzut ekranu 2019-03-18 o 09.38.18.png 73.97 kb, nikt jeszcze nie pobierał tego pliku. 

Tylko zalogowani mogą pobierać załączniki.
Tomasz Wojtkowiak
Atari 800XL / U1MB / Sophia 2 / Sio2IDE & CF 512 MB

7

Odp: exomizer self extracting executable

mono napisał/a:
exomizer sfx sys -n -t 168 -s "lda \#0 sta \$$22f sta \$$d400" -o prog.xex prog.obx

A czy ok jest wrzucenie w kodzik "-s" czegoś ala "lda #$fe sta $D301" co wylączy rom i pozwoli na dekompresje executable powyżej $BFFF? Altirra to łykneła, nie wiem jak prawdziwy sprzęt? Takie rozwiązanie jest spoko czy to faux pas?

Maciek
--------
Atari 65XE + Ultimate 1MB + Stereo + SIO2SD | Atari 520STE + 4MB + UltraSatan | Atari Falcon 030 + CT60e + 14MB ST + 256MB TT + 68882  + CF + Netusbee | Amiga 500 + 1MB + Gotek | Amiga 600 + 2MB Chip + 8MB Fast + CF

8

Odp: exomizer self extracting executable

Tam już jest $FE, bo użyliśmy profilu Atari XL/XE (-t 168):

2000: A0 24     LDY #$24
2002: 78        SEI
2003: A9 00     LDA #$00
2005: 8D 0E D4  STA $D40E   ;NMIEN

2008: A9 00     LDA #$00
200A: 8D 2F 02  STA $022F   ;SDMCTL
200D: 8D 00 D4  STA $D400   ;DMACTL

2010: A9 FE     LDA #$FE
2012: 8D 01 D3  STA $D301   ;PORTB

więc nic nie trzeba robić.

hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje

9

Odp: exomizer self extracting executable

Dzięki mono,
To niespodzianka. Pozwolę się Ciebie pomęczyć by zrozumieć dokładnie... czy w takim razie po skoku do rozpakowanej binarki mamy z automatu wylaczony rom? Wydaje mi się, że tak nie jest (nie jestem pewien), bo to by narzucało wymagania na pakowany program. Czy on po załadowaniu i rozpakowaniu danych z powrotem mapuje rom przywracajac portb a dane sobie siedzą i czekaja az glowny program jesli chce go to wylaczy juz swiadomie?

Ostatnio edytowany przez mkm (2019-06-18 11:45:52)

Maciek
--------
Atari 65XE + Ultimate 1MB + Stereo + SIO2SD | Atari 520STE + 4MB + UltraSatan | Atari Falcon 030 + CT60e + 14MB ST + 256MB TT + 68882  + CF + Netusbee | Amiga 500 + 1MB + Gotek | Amiga 600 + 2MB Chip + 8MB Fast + CF

10

Odp: exomizer self extracting executable

Tak wygląda moment przed wejściem do rozpakowanego programu użytkownika:

601C: A9 FF     LDA #$FF
601E: 8D 01 D3  STA $D301   ;PORTB
6021: A9 40     LDA #$40
6023: 8D 0E D4  STA $D40E   ;NMIEN
6026: 58        CLI
6027: 4C CA 86  JMP $86CA

To $86CA to jest mój program już po dekompresji. Tak więc w chwili wejścia do Twojego programu masz włączony OS ROM i wyłączony BASIC.

Ograniczenia exomizera są niestety :/ Obszar na którym operuje exomizer to teoretycznie $0000..$CFFF. $D800..$FFFF nie jest brany pod uwagę.
Ja wszystkie moje dotychczasowe programiki, które kompresowałem sfx'em umieszczałem między $2000..$BFFF i w razie potrzeby sam przepisywałem rozpakowany kod pod ROM albo poniżej $2000.

Ostatnio edytowany przez mono (2019-06-18 18:53:24)

hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje

11

Odp: exomizer self extracting executable

Wszystko jasne! dzięki!

Maciek
--------
Atari 65XE + Ultimate 1MB + Stereo + SIO2SD | Atari 520STE + 4MB + UltraSatan | Atari Falcon 030 + CT60e + 14MB ST + 256MB TT + 68882  + CF + Netusbee | Amiga 500 + 1MB + Gotek | Amiga 600 + 2MB Chip + 8MB Fast + CF