eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaCP/M i 64kBRe: CP/M i 64kB
  • Data: 2019-02-27 12:45:41
    Temat: Re: CP/M i 64kB
    Od: d...@w...pl szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    W dniu niedziela, 24 lutego 2019 17:11:23 UTC+1 użytkownik Sebastian Biały napisał:

    > Widzę po necie że istniały komputery CP/M z 64kB RAM. Zakładając że choć
    > troche tego ram było zastapione ROM (np. bios) to pytanie brzmi: czy w
    > CP/M dało się w jakiś sposób uzyskać te *prawie* 64kB dla programu usera
    > czy też BIOS, BDOS i interpreter zajmowały zawsze swoje i dla programów
    > zostawało mniej?
    >
    > Szukam sobie po stronach o cp/m i jakoś nie znalazłem informacji że np.
    > istniało jakieś api do stronicowania pamięci.
    >
    > Wstępnie zakładam że BIOS mógł być w ROM ale BDOS i interpreter były w
    > ramie i nie dało się ich wyłączyć.

    Wracając do oryginalnego tematu.
    CP/M był na 8080 bez żadnych wynalazków typu stronicowanie.
    System zajmował:
    - 256B od adresu 0,
    - oraz licząc od 0xffff do tyłu BIOS i BDOS - tyle, ile było trzeba.

    System był jednoprocesowy, więc cała pozostała pamięć była do dyspozycji dla jednego,
    działającego w danym momencie procesu.
    Czy był to interpreter poleceń CCP (czyli trzecia część CP/M) czy inny proces, który
    mógł się ładować w miejsce CCP (i po zakończeniu tego procesu odpowiedni system call
    ładował CCP z dyskietki do pamięci) - wszystko jedno.
    Ale żaden program nie mógł ruszyć pamięci BIOSu i BDOSu - nic mu oczywiście fizycznie
    nie zabraniało, ale jak to zrobił, to prędzej czy później komputer wymagał resetu.
    Czy kod BIOS i BDOS siedział sobie w RAMie czy ROMie, to już inwencja projektanta
    konkretnego komputera.
    Pewnie nawet tak by się dało zadrutować, żeby adresy 0x0000, 0x0001 i 0x0002 dawały
    zawsze odpowiednią komendę JMP - tyle że to też trzeba by przełączać.
    Dynks polegał na tym, że przy starcie komputera ten akurat JMP nie dawałby dobrego
    efektu - potrzebny był taki JMP, co skoczy do bootstrapu, który oczywiście może być w
    ROM, ew. odłączanym, albo pozostającym i marnującym przestrzeń adresową.
    Zastanawiałem się, jaką minimalną wielkość może mieć taki bootstrap - oraz ile z
    niego musi być na adresie 0 (ciekawe, czy to z powodu CPM 8086 nie zaczyna po resecie
    wykonywać kodu od 0 tylko od bodajże 0xf0000?)?
    Pewnie na adresie 0 wystarczą 3 bajty, czyli odpowiedni JMP (w razie czego dałoby się
    to przy każdym starcie komputera wprowadzać przełącznikami na płycie czołowej ;) a
    reszta w ROM.
    Ale jakby nie było ROM - to ile czasu musiałoby trwać takie wprowadzanie bootstrapu?
    Może dałoby się skorzystać z jakiejś funkcji BIOS CP/M, gdyby był w ROM - np. tego
    odczytu sektora, wtedy wystarczyłoby wprowadzenie parametrów, wywołanie tego syscalla
    i skok do wgranego sektora...

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: