Spójrzcie na schemat Atari - w szczególności MMU, OS i BASIC - jak uaktywniane są te ROM-y. Jakie są Waszym zdaniem skutki zapisu dowolnej danej do włączonego ROM ?

Czyli np. STA $c000 gdy OS jest włączony ?

Zastanówcie się ...

pomidor

2

Zapewne krótkotrwały konflikt na magistrali danych. Przewidujesz coś innego?

Ceterum censeo Germaniam esse delendam.

3

Generalnie MMU, który uaktywnia m.in. ROM, gdy pojawi się adres, np. $C000 "aktywuje" ROM, i powoduje, że niezależnie od stanu linii R/W zawartość szyny danych atarki jest "zwarta" z magistralą danych ROM-u - czyli na magistrali danych może dojść do sytuacji, że "jedynka zewrze się z zerem" ;)

4 Ostatnio edytowany przez electron (2009-07-29 20:50:29)

No właśnie .... czyli jest to pewien problem ... Może konstruktorzy przyjęli jakieś założenie lub wiedzieli coś więcej (np. wiedzieli coś o rezystancjach tranzystorów na wyjściach ROM / CPU), ale na pewno nie jest to zdrowa sytuacja. Jestem troszkę zniesmaczony - przez to nie mogę zrobić dla vbxe pewnego ciekawego rozwiązania dostępu do pamięci. Generalnie trzeba naprawić MMU przez dodanie do niego nogi R/W, bo teraz amatorką bije po oczach.

pomidor

5

Zapewne przyjęli założenie, że ewentualne zapisy, które przecież nie wiążą się z niebezpieczeństwem dla układów, mogą być zignorowane. Dodatkowe wejście MMU to konieczność zastosowania większego (i droższego) układu. W czym Ci to konkretnie przeszkadza?

Ceterum censeo Germaniam esse delendam.

6 Ostatnio edytowany przez electron (2009-07-29 21:09:41)

które przecież nie wiążą się z niebezpieczeństwem dla układów

Czy możesz to uzasadnić ?

Przeszkadza mi w zrobieniu przeźroczystego zapisu "poprzez ROM" do pamięci VBXE podpiętej w obszarze ROM-u.

pomidor

7 Ostatnio edytowany przez jer (2009-07-29 21:40:24)

E tam, zaraz zmieniać MMU. A wyciągnąć nogi danych ROMU z druku i podłączyć przez 244 lub 245 sterowane R/W. Lebo multipleksem jakowymś...

Kiedyś tak zrobiłem karta SRAM do ST. Z lenistwa zrobiłem na switchu zapis/odczyt. Działało jakiś czas.

8

Połączenie ze sobą dwóch wyjść NMOS o przeciwnych stanach spowoduje przepływ prądu o natężeniu rzędu 30-40mA. W omawianej sytuacji taki stan będzie trwał mniej więcej połowę czasu. Nic strasznego. W życiu nie zdarzyło mi się uszkodzenie jakiegokolwiek układu cyfrowego przez zwarcie ze sobą wyjść. Zresztą w celach naukowych możesz wykonać eksperyment polegający na odczytaniu zawartości $C000, wykonaniu EOR #$FF i zapisie z powrotem w nieskończonej pętli. Można się założyć o każde pieniądze, że nic się nie stanie.

Ceterum censeo Germaniam esse delendam.

9 Ostatnio edytowany przez Simius (2009-07-29 22:16:49)

jer napisał/a:

E tam, zaraz zmieniać MMU. A wyciągnąć nogi danych ROMU z druku i podłączyć przez 244 lub 245 sterowane R/W. Lebo multipleksem jakowymś...

Kiedyś tak zrobiłem karta SRAM do ST. Z lenistwa zrobiłem na switchu zapis/odczyt. Działało jakiś czas.

Po co aż tyle roboty? Nie lepiej odciąć jedną nogę ROM-u  (-OE) i podłączyć ją do odwróconego w fazie R/-W ?

Ceterum censeo Germaniam esse delendam.

10

Weźmy pod uwagę, że nie zawsze są to wyjścia NMOS, ponieważ czasami wkładamy zamiast ROMU nowoczesne (w miarę) układy FLASH itp. Procesory też zdarza się wymieniać.

Oczywiście każdy wie: "tak jest od 30 lat i działa" ...

pomidor

11

To prawda. Bufory CMOS są trochę wydajniejsze w stanie wysokim. Można się spodziewać przepływu jakichś 50-60mA. Biorąc jednak pod uwagę fakt, że nie ma szans na częstszy zapis niż raz na 4 cykle zegara, a prąd będzie płynął przez około pół cyklu, daje to średnio 6-8mA. Jakbyś trafił jakiś szczególnie szybki, wysokoprądowy FLASH to może dwa razy więcej. Chwilowe prądy tak czy owak płyną duże, bo przeładowują pojemności, więc od tej strony nie ma powodu się przejmować. Zresztą o czym tu gadać. I tak musisz wyłączać ROM, bo prawidłowego zapisu w tych warunkach nie będzie.

Ceterum censeo Germaniam esse delendam.

12

Programik dla chcących sprawdzić, co GTIA widzi na szynie:

ATR    equ    1
    ift    ATR
    opt    h-
    dta    $96,2,a(8),a($80)
:10    dta    0
    org    $600
    dta    0,1,a($600,$e477)
    els
    org    $606
main
    eif

    mva    #$7c    $2c1
    mva    #$70    ^01
    mva    #3    ^09
    mva    #2    ^1d

frame
    ldx    #{cmp 0}
    lda    #8
    and    ^2f
    sne
    ldx    #{cmp 0,x}
    stx    op
    lda    #3
    cmp:rne    ^4b
line
    sta    ^4a
    nop
    nop
op    cmp    0,x
    lda    #0 ; <-
    sta    $c000,y
    iny
    bne    line
    beq    frame    !

    ift    ATR
:$680-*    dta    0
    els
    run    main
    eif
    end

U mnie:
bity 7,6,5,4,0 = z ROMu,
bit 3 = AND ROMu i zapisu 6502,
bity 2 i 1 różnie - zwykle ROM, ale czasami AND.

BASIC wygląda na podłączony dobrze (zmiana $c000 na $a000 i uruchomienie z BASICiem) - widać bajt zapisywany przez 6502.

https://www.youtube.com/watch?v=jofNR_WkoCE

13

Domyślam się, że to, co dla mnie wygląda jak krzaczki, to zapewne MADS? Nie chce mi się tego tłumaczyć na piechotę na bardziej zrozumiały język, więc idea jest dla mnie nieznana, ale mam poważne wątpliwości, czy GTIA jest w stanie odczytać z szyny cokolwiek w jakikolwiek sposób w cyklu, w którym to CPU ma do niej dostęp.

Ceterum censeo Germaniam esse delendam.

14

Oczywiście xasm.

GTIA pobiera kształty PMG przez szynę danych. Jeśli w ANTICu nie włączy się DMA dla PMG, GTIA bierze co leci.

https://www.youtube.com/watch?v=jofNR_WkoCE