1 Ostatnio edytowany przez siudym (2022-12-19 19:59:32)

Mam problem z uruchomieniem prostego kodu z użyciem formatu Cart'a. Asembler MADS. Kompiluje mi się jako 16KB .OBX, uruchomiony w Altirra wyskakuje okno wyboru typu Cartridge'a - wybieram 16K i na tym się kończy i nic nie działa.

Dopiero zaczynam cokolwiek na ATARI tak więc prosze o wyrozumiałość ;)

- Co jest źle w kodzie?
- Mam ustawiony CART TYPE 1 ale kompiluje się jako 16KB, dlaczego?
- Gdy mamy ROM wielkości 8KB zaczyna się od 8000 czy A000 ?
- Proszę o wszelkie info o formacie CAR, czy jak chcę ROM wielkosci 16KB to automaycznie wyłączy się BASIC czy muszę to zrobić dodatkowo.


    OPT O+ H- F+ C- ?+

CART_CRC = 0
CART_TYPE = 1                ; Standard 8KB Cartridge.

    .BYTE 'CART'
    .BYTE [CART_TYPE >> 24] & $FF
    .BYTE [CART_TYPE >> 16] & $FF
    .BYTE [CART_TYPE >> 8] & $FF
    .BYTE [CART_TYPE >> 0] & $FF
    .BYTE [CART_CRC >> 24] & $FF
    .BYTE [CART_CRC >> 16] & $FF
    .BYTE [CART_CRC >> 8] & $FF
    .BYTE [CART_CRC >> 0] & $FF
    .BYTE $00
    .BYTE $00
    .BYTE $00
    .BYTE $00

;#########################

SDMCTL = $022F
SDLSTL = $0230                ; Display List starting address.
CHBAS  = $02f4                ; CHaRacter Base Register.
COLOR0 = $02c4                ; Color for %01.
COLOR1 = $02c5                ; Color for %10.
COLOR2 = $02c6                ; Color for %11 (Normal).
COLOR3 = $02c7                ; Color for %11 (Inverse).
COLOR4 = $02c8                ; Color for %00 (BGR).

Charset = $3C00                ; CHaRacter Set.
Screen = $4000                ; Screen Buffer.
Blank8 = $70                ; 8 Blank Lines.
LMS = $40                ; Load Memory Scan.
JVB = $41                ; Jump while VBlank.

Antic2 = 2                ; Antic mode 2.
Antic5 = 5                ; Antic mode 5.

Gray_Medium = $06
Gray_Light = $0A
Green = $c2
Brown = $22
Black = $00

;#########################

    ORG $8000

;#########################

Start:

    LDA #%00100001
    STA SDMCTL

    MWA #DList SDLSTL

    MVA #>Charset CHBAS

    LDX #$00

Loop:

    MVA Chars,x Charset+8,x            ; Set-Up CHaRacter Set.
    INX
    CPX #16
    BNE Loop
                        ; Change Colors.
    mva #Gray_Medium COLOR0            ; %01.
    mva #Gray_Light COLOR1            ; %10.
    mva #green COLOR2            ; %11.
    mva #brown COLOR3            ; %11 (Inverse).
    mva #black COLOR4            ; %00.

    LDY #$00

Loop2:

    MVA Scene,y Screen,y
    INY
    CPY #40
    BNE Loop2

    JMP *                    ; Forever Loop.

DList:                

    .BYTE Blank8, Blank8, Blank8
    .BYTE Antic5 + LMS, <Screen, >Screen
    .BYTE Antic5, Antic5, Antic5, Antic5, Antic5, Antic5
    .BYTE Antic5, Antic5, Antic5, Antic5, Antic5
    .BYTE JVB, <DList, >DList

Scene:

    .BYTE 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2

Chars:

    .BYTE %10101010
    .BYTE %10100101
    .BYTE %01010101
    .BYTE %00000000
    .BYTE %01010010
    .BYTE %01010010
    .BYTE %01010010
    .BYTE %00000000
    
    .BYTE %01001010
    .BYTE %01001010
    .BYTE %00001001
    .BYTE %00000000
    .BYTE %10101001
    .BYTE %10010101
    .BYTE %01010101
    .BYTE %00000000

    ORG $BFFA

    .WORD $FFFF
    .BYTE $00
    .BYTE %00000000
    .WORD Start

end

2

org $8000 zamień na org $A000 ($C000-$8000=$4000 czyli 16KB). Albo CART_TYPE na 2 (16KB cartridge).
BASIC wyłączy się automatycznie.

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

3

Nic nie daje niestety, robiłem tak :/

4

OK. Po zmianie na org $A000 atari800 to uruchamia. A Altirra nie. Co oznacza, że atari800 nie sprawdza sumy kontrolnej, a Altirra sprawdza i dlatego nie uruchamia.
Po aktualizacji sumy ($001f70e7) Altirra odpala.
W załączniku źródło i kod. I narzędzie do updatu sumy.
Łańcuch kompilacji:
$ mads -o:cart.car cart.asx
$ ./carsum.py cart.car
Bez aktualizacji sumy kontrolnej Altirra zapytała o rodzaj cartridge'a, co oznacza że traktuje to jak czysty ROM (co oczywiście jest bzdurą, bo przecież jest nagłówek carta).

Post's attachments

carsum.py 1.36 kb, liczba pobrań: 9 (od 2022-12-19) 

cart.asx 2.61 kb, liczba pobrań: 3 (od 2022-12-19) 

cart.car 8.02 kb, liczba pobrań: 4 (od 2022-12-19) 

Tylko zalogowani mogą pobierać załączniki.
hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje

5

Kurcze juz wczesniej walczylem jak uruchomic ten carsum i dalej mi nie dziala:

CMD -> python carsum.py cart.car

- Niestety nie dziala (WIN 10) i mam jedynie krotki komentarz po uruchomieniu: "Nie mo" :)

Cos poradzisz?

6

A ściągnąłeś i zainstalowałes pythona 3?

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

7 Ostatnio edytowany przez siudym (2022-12-20 16:56:55)

Juz mialem wczesniej Python 3.10.

EDIT: Musialo cos sie wypierniczyc w rejestrze, bo zainstalowalem ponownie i teraz jest OK :)

Gdybym chciał aby ten kod uruchomił się na ATARI 5200 na co muszę zwrócić uwagę?
Czy są jakieś zmiany w rejestrach, czy wszystko ogranicza się do "usztywnienia" mapy pamięci czyli RAM $0000-3FFF i CART $4000-BFFF a reszta bez większych zmian?