Czy istnieje program, który pozwalałby załadować 8 lub 16 kilowy obraz typowego carta z pliku w odpowiedni obszar pamięci i odpaliłby go zgodnie z danymi zawartymi w nagłówku tego dumpa? Jeżeli nie, to czy są jakieś przeszkody techniczne, które by to definitywnie uniemożliwiały? Pomijam możliwość sterowania MMU przez kod carta, który spowodowałby niepożądane odłączenie ramu z wgranym juz dumpem.

2

nie wszystkie daloby sie zaladowac...
https://github.com/dmlloyd/atari800/blo … C/cart.txt

http://atari.pl/hsc/ad.php?i=1.

3 Ostatnio edytowany przez Pin (2019-12-16 23:45:59)

Jest emulator cartów pod Sparta DOS X i VBXE. VBXE staje się cartem, a emulator przepisując dane analizuje zawartość i odpowiednio modyfikuje plik *.car tak, by odwołania szły w odpowiednio inne miejsce.

Chyba, że chodziło o coś innego ;)

Kontakt: pin@usdk.pl

4

ale wiesz ze wystarczy dodac nalowek zeby cart byl rozpoznawany jako binary file z adresem ladowania i dodac wektor run

http://atari.pl/hsc/ad.php?i=1.

5

O to mi mniej więcej chodziło, czy się da odpalić dump wczytując go z pliku na gołym xl/xe pod $8000 i robiąc skok w odpowiednie miejsce. Popatrzę na budowę nagłówków tu i tam. I popróbuję na początek zrobić ręcznie exeka z dumpa carta, takiego który nie ma bankowania, no bo wiadomo.

6 Ostatnio edytowany przez mono (2019-12-17 19:47:56)

Da się. Zależnie od typu carta wykonuje się najpierw CARTINI a potem ewentualnie CARTRUN: http://atariki.krap.pl/index.php/Cartri … C4%99ci%29
Ale zanim się tego dokona proponuję zresetować POKEY-a.

Edit: Niektóre gry potrafią nadpisać fragment obszaru carta, więc nie wszystko się tak da odpalić bez modyfikacji programu.

Edit 2: Nie pamiętam dokładnie, ale między CARTINI a CARTRUN może też być konieczne ustawienie RAMTOP i ponowne otwarcie E:

Edit 3: Coś w tej podobie:

  org $2000

  lda #%00000000
  sta SKCTL ;$D20F
  ldy #8
?clr sta POKEY,y  ;$D200
  dey
  bpl ?clr
  lda #%00000011
  sta SKCTL  ;$D20F
  jsr ?init
  ldx #$00
  lda #CLOSE ;$0C
  sta ICCMD,x ;$342
  jsr JCIOMAIN ;$E456
  lda #>$A000    ;$8000 dla 16K
  sta RAMTOP ;$6A
  lda #OPEN ;$03
  sta ICCMD,x
  lda #<e
  sta ICBUFA,x ;$344
  lda #>e
  sta ICBUFA+1,x
  lda #RW ;%1100
  sta ICAX1,x ;$34A
  txa
  sta ICAX2,x ;$34B
  jsr JCIOMAIN
?run jmp (CARTRUN) ;$BFFA
?init jmp (CARTINI) ;$BFFE

e .byte 'E:',$9B

  run $2000

Edit 4: Być może RAMTOP trzeba ustawić przed wywołaniem CARTINI, no i trzeba pamiętać że pamięć wtedy jest czysta, więc może przyda się jeszcze jakiś kod czyszczący od $400 do RAMTOP. Żeby zrobić to odpornym na RESET trzeba by jeszcze ustawić COLDST, BOOT oraz CASINI/DOSINI i DOSVEC na adresy odpowiednio ?init i ?run.

Edit 5: Spotkałem się z cartami, które inaczej inicjalizują się po włączeniu komputera a inaczej po RESET zależnie od flagi WARMST.

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

7

Dzięki za wskazówki - przetrawiam...

8 Ostatnio edytowany przez xxl (2019-12-17 19:04:51)

mozna tez tak:

        org $D36D
        .HE FF

        org $8000-$10
        ins 'MoonPatrol.car'

        org $BFFD
        .HE 4C
        RUN $BFFD


:D


===
i binarka

Post's attachments

car_nalowek.obx 16.04 kb, liczba pobrań: 7 (od 2019-12-17) 

Tylko zalogowani mogą pobierać załączniki.
http://atari.pl/hsc/ad.php?i=1.

9

XXL - do niebankowanych cartów owszem.

Kontakt: pin@usdk.pl

10

przeczytaj pierwszy post.

http://atari.pl/hsc/ad.php?i=1.

11

Carty 8K i 16K o które pyta Autor chyba nigdy nie były bankowane...

Moja kolekcja: Atari 1040STe (4MB), Atari 1040STfm (4MB, BLiTTER, AT-ONCE+), Atari 800XE (SIMM EXP 1MB), Atari 800XL (RAMBO XL 256kB), Atari 600XL (64kB), Sinclair ZX SPECTRUM+ (48kB), TIMEX Computer 2048 (48kB), Commodore A600 (2MB+4MB, HDD CF 4GB), Commodore C64C.

12

a - faktycznie, umknęło mi ;)

Kontakt: pin@usdk.pl

13 Ostatnio edytowany przez laborant (2019-12-18 22:56:47)

Patrzę na ten nagłówek pliku od XXL-a i widzę, że ma on 2 bloki. Drugi w nim to obraz carta w formacie .car i ładowany jest z przesunięciem w dół o $10 (pod $7FF0) aby odrzucić pierwsze 16 zbędnych bajtów pliku .car. Ok, jasne. Ale nie wiem co daje ustawienie 255 w komórce $D36D z pierwszego bloku. Patrzę po manualach, ten obszar adresów należy do PIA, ale co konkretnie robi ten rejestr?

edit. ślepiąc dalej i pomijając listing, dopatrzyłem się faktycznie 4 bloków w tym pliku.

14

to jest PORTB

http://atari.pl/hsc/ad.php?i=1.

15 Ostatnio edytowany przez laborant (2019-12-18 23:18:40)

Wydaje mi się, że PORTB przełączający obszary i funkcje tych obszarów pamięci to $D301.  Więc nie wiem, czy myślimy o tym samym i jest pomyłka w tym loaderze, czy jednak nie połapałem się o co chodzi z tym $D36D.  Pewnie to drugie.

Edit. ale jak to PORTB to przynajmniej wiem czemu 255, więc znów krok do przodu.

16

rownie dobrze moze byc $D33D, $D3F9. PORTB zaadresujesz na stronie D3 dowolna wartoscia, wazne zeby najmlodsze dwa bity mialy postac 01
                 
czyli adres %1101 0011 xxxx xx01

pod x mozesz dac losowe wartosci 0/1

http://atari.pl/hsc/ad.php?i=1.

17

nie słuchajcie tego szarlatana. PortB jest na $D301 :)

Kontakt: pin@usdk.pl

18

Atari tak chciało...

19

Pin napisał/a:

nie słuchajcie tego szarlatana. PortB jest na $D301 :)

Popieram... trza człekowi wyjaśnić, że pozostałe adresy to rejestry/cienie a nie zaciemnać kod adresami z tyłka! :-)

https://systemembedded.eu/ ... https://www.youtube.com/watch?v=GwS7Es1x6mw
""Ja bardzo przepraszam, ale podejrzenia panów są całkowicie bezpodstawne. Ja niczym nie handluję. Ta pani przyszła do mnie w tym Pancake-u i w nim wychodzi.""
ABBUC Member #319. Preferowana forma kontaktu: email

20

laborant napisał/a:

Wydaje mi się, że PORTB przełączający obszary i funkcje tych obszarów pamięci to $D301.  Więc nie wiem, czy myślimy o tym samym i jest pomyłka w tym loaderze, czy jednak nie połapałem się o co chodzi z tym $D36D.  Pewnie to drugie.

Edit. ale jak to PORTB to przynajmniej wiem czemu 255, więc znów krok do przodu.

To proste - jak masz ULTIMATE to Ci nie zadziała, jak chciał XXL dając powtórzony rejestr. To zwykła zawiść i nie powiem co jeszcze, bo mnie dely zbanuje, ale przychodzi mi słowo na k kończące się na o.

Sikor umarł...

21

Czy chodzi o kaletnictwo?:-)

22

Przypominam, że temat dotyczy loadera obrazów kartridży. Kolejny wykolejający post spowoduje przyznanie nagród przewidzianych w regulaminie.

Czy możecie wyjaśnić, Stirlitz, dlaczego wasz służbowy adres stirlitz@rsha.gov.de ma aliasa justas@gru.su?
Nie czytam PM. Proszę używać e-mail.

23 Ostatnio edytowany przez xxl (2019-12-19 09:02:53)

Sikor napisał/a:

To proste - jak masz ULTIMATE to Ci nie zadziała

Nie prawda. Bledne dzialanie atari z ta modyfikacja objawia sie przy zapisie powyzej $D380 a wiec uzyty adres $D36D jest bezpieczny rowniez dla Ultimate1MB.

http://atari.pl/hsc/ad.php?i=1.

24

Ok, to już wszystko jasne. Myślę, że te zapętlone rejestry w tym obszarze to nie cienie, a raczej zapas ramu na nieokreślone rejestry jakiegoś rozbudowanego PIA w przyszłości.

25

może to PIA jest po prostu uproszczone, poszli po kosztach, gdyby miał reagować na ściśle określony zakres to wymagałby pewnie kilku dodatkowych układów , bramek

nie znam się, więc się wypowiadam :)

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C