Autor Wątek: CPC by ZorrO  (Przeczytany 2598 razy)

ZorrO

  • ****
  • Wiadomości: 293
  • Miejsce pobytu:
    UK
  • CPC AGA PSX
CPC by ZorrO
« dnia: 2024.11.11, 00:13:16 »
Po resecie obszar między Basiciem a grafiką jest zapełniany masą parametrów tzw zmienne systemowe oraz tzn tablicą skoków i potem w tle na przerwaniach po 50 a niektóre nawet po 300 razy na sekundę wykonuje pewne skoki do ROMu z tej tablicy skoków i modyfikuje niektóre z tych zmiennych.
A gdy przełączysz pod ten adres gdzie sie one znajdują blok z RAMdysku który tej tablicy i tych zmiennych nie ma to sie natychmiast zawiesi. Tak szczerze to pierwsze słyszę że w ogóle da sie to na CPC zrobić. Bo gdzieś czytałem że pod adresem &0000 jest albo ROM z OSem (nie mylić z Amsdosem), albo początek RAMu z Basiciem, pod adresem &8000 ZAWSZE jest RAM z końcówką Basica i tymi danymi systemowymi, pod &C000 podłączony jest RAM pamięci ekranu, albo któryś z 16KB bloków z pozostałych ROMów, poczynając od ROMu Basica i Amsdosa w modelach z podłączoną stacją, a kończąc na cudach wszelakich tkwiących w Expansion Port, a pod &4000 i tylko tam można podłaczać 16KB bloki RAMdysku, nigdy więcej niż jeden taki blok na raz.
Dopiero w modelu Plus jest opcja by bloki RAMdysku podłączać także pod adres &C000, z czego korzysta program B-ASIC (tylko dla plusów), i reorganizuje pamięć, by trzymać listingi tego rozszerzonego B-ASICa tam gdzie normalnie była pamięć graficzna, a pamięc graficzną ma domyślnie tam gdzie stary CPC miał Basic, co ułatwia korzystanie z Overscanów, bez gryzienia sie z listingami Basica. Ale nie dam głowy że moja wiedza na temat przełączania bloków jest pełna.

Mapa bloków pamięci w CPC 6128. Każdy blok ma 16KB. Ale tylko 4 z nich można na raz podłączyć do procesora.
Dlatego pod adresy podane w pierwszej kolumnie w razie potrzeby są podłączane inne bloki.
W CPC 664 nie ma Ramdysku a w CPC 464 nie ma także Amsdosa.
----------------------------     ------ - - -
| &FFFF  |  ROM   |  ROM   |     | Tu się podłącza wszelkie inne zewnetrzne ROMy.
| &C000  | Basic  | Amsdos |     |         <- Tu w RAM od &C000 jest pamięć ekranu, ale można to zmienić.
----------------------------     ------ - - -
| &BFFF  |     <- Tu jest tablica skoków, stos, i dane systemowe które zawsze są w tym samym miejscu.
| &8000  |     <- Tu gdzieś jest HIMEM, granica między Basiciem a kodem maszynowym, ale można ją obniżać.
----------------------------------------------     ------ - - -
| &7FFF  | RamDysk| RamDysk| RamDysk| RamDysk|     | Tu się podłącza wszelkie
| &4000  |  204   |  205   |  206   |  207   |     | inne zewnętrzne RAMy.
----------------------------------------------     ------ - - -
| &3FFF  |  ROM   |
| &0000  | CPC OS |    <- Tu w RAM od &170 zaczyna się program w Basicu.
-------------------

pi_nio

  • **
  • Wiadomości: 61
  • Miejsce pobytu:
    Bytom
Odp: CPC by ZorrO
« Odpowiedź #1 dnia: 2024.11.11, 09:55:11 »
zawiesi się tylko wtedy kiedy przełączysz blok pamięci, w który aktualnie wykonujesz program i w nowym bloku nie będzie jego kontynuacji.
Szczęśliwy posiadacz zasilacza do Amstrada 6128,  kabla RGB -> SCART, kabla do FDD i cudnego USB floppy Zaxona:) Moje marzenie: SAM Coupe ;_;

ZorrO

  • ****
  • Wiadomości: 293
  • Miejsce pobytu:
    UK
  • CPC AGA PSX
Odp: CPC by ZorrO
« Odpowiedź #2 dnia: 2024.11.11, 21:27:51 »
Jak przełączyć (sprzętowo) aby drugie 64K działało jako pierwsze 64K.
https://www.youtube.com/watch?v=LLVHJO-aj3Q&list=PLmbYPqkyiASzW4qc1NOZCIBwb82tjtz_e

Myślę że gdyby to sie dało zrobić programowo to użyłby takiego sposobu.
W 2im filmie na tej playliście jest jak podłączyć 1MB.