søndag 4. juni 2017

RC2014 CP/M

Dette er et innlegg relatert til RC2014, og vil mer eller mindre være mine egne notater relatert til konfigurasjon og installasjon av operativsystemet CP/M ved bruk av Compact Flash som lagringsenhet.

Control Program/Monitor (CP/M)

Operativsystemet CP/M, i følge Wikipedia offisielt registrert med varemerket Control Program for Microcomputers, ble utviklet rundt 1976 av Gary Kildahl for å lette bruken av datamaskiner. Der Basic i seg selv i hovedsak var en måte å programmere på en datamaskin, så var dette et operatisvsystem der man fikk komplette programmer for å utføre de mest grunnleggende tingene på en datamaskin.

Av funksjoner som var inkludert så må det nevnes at en av de mer sentrale må være muligheten til å forholde oss til filer på lagringsenheter fremfor å håndtere blokker av data direkte - med andre ord et filsystem. Hans opprinnelige måte å håndtere de ulike enhetene ved bruk av bokstaver lever helt frem til den dag i dag, så dersom du vil klage på noen for at man må sjonglere på A: og C: så er altså dette mannen man må skylde på, hans definisjon av hvordan man angir et filnavn - navn og så en tre-bokstavs endelse etter formål - er også en av hans bidrag.

Høres veldig ut som MS DOS, ikke sant? Slik historien går så nektet Gray Kildahl å undertegne en konfidensialitetsavtale som ville forhindret han å holde programvaren tilgjengelig for folk flest - det skulle være et lavkostnadsalternativ! Omsider kom det på plass en kontrakt der IBM skulle ha enerett på salg av CP/M, sleipt nok hadde IBM til da klart å lage en kopi av systemet som ble kalt DOS (Disk Operating System, rett og slett fordi det krevde en diskettstasjon). Takket være rom for tolkning i avtalen kunne IBM selv bestemme utsalgsprisen, noe de utnyttet for å sette prisen på CP/M til det femdobbelte av DOS til tross for at innsalgsprisen i utgangspunktet var billigere enn det de tok for DOS.

For de av oss som gikk på barneskolen på 80-tallet så husker man sikkert en maskin kalt Tiki, disse kjørte et operativsystem kalt KP/M. Dette var essensielt sett en ulisensiert kopi av CP/M med enkelte tilpasninger - selskapet bak ble selvsagt saksøkt ettersom dette tross alt var organisert piratkopiering, men i og med at lovene fortsatt ikke var i stand til å håndtere annet enn en tyveri av fysiske gjenstander så slapp de unna med det. Stiller ting i et litt annet lys.

Nok avsporinger, videre selve systemet...

Systemkrav

  • Intel 8080-prosessor
    • Zilog Z80 er bakoverkompatibel med Intel 8080
  • 16 KB RAM plassert på $0000-$3FFF
  • CP/M bootloader
  • Diskett-stasjon
RC2014-prosessoren er allerede støttet av CP/M, så der trenger man heldigvis ikke gjøre noe - greit å allerede ha noe av det man trenger fra starten av. Derimot når det kommer til minnet så begynner man å få problemer, dersom man tar en titt på RC2014 Memory Map så ser man at vi allerede bruker $0000-$1FFF til ROM - minnet er også plassert fra $8000-$FFFF, ingen av disse to er med andre ord plassert der vi trenger dem!

De opprinnelige modulene støtter heller ikke rekonfigurasjon av adressene for RAM og ROM (vi trenger denne til CP/M bootloader), vi må med andre ord bytte ut disse to. Modulene som trengs i tillegg er følgende:
  • RC2014 64K RAM
  • RC2014  Pageable ROM
Med dette oppsettet vil vi få på plass en ekstra blokk med minne, det vil si totalt 64K tilgjengelig hukommelse - helt absurd mye, i alle fall sett opp mot at man på den tiden betalte i dyre dommer for minnebrikker med en størrelse med 1, 2, eller 4 KB kapasitet per brikke! I utgangspunktet løser dette ingenting i forhold til overlappingen i adresserommet, men som den sistnevnte modulen indikerer så støtter disse modulene en teknikk kalt "paging". Dette betyr i dette tilfellet at man kan aktivere (page inn) eventuelt deaktivere (page ut) disse modulene fra programvaren.



Paging kan også hentyde på å veksle hvilken vindu man ser innenfor en enkelt brikke, på den måten kan man benytte seg av langt større RAM-brikker til tross for at maskinen i seg selv kun kan adressere 64K direkte. Uansett, det er den førstnevnte betydningen av teknikken som vi skal benytte oss av her, så dersom dette ikke var forståelig så er ikke det så nøye.

Bildene ovenfor viser hvordan dette er koblet sammen, den grønne kabelen mellom modulene sørger for at RAM pages inn når ROM pages ut. Pass også på å sette opp jumperne slik som det er angitt her, dette tar utgangspunkt i EPROM med CP/M bootloader levert fra skaperen av RC2014 (dersom du har lagt denne opp selv, korriger page-selection deretter).

CP/M bootloader er et enkelt program som tar for seg å starte opp systemet, denne vil på mange utgjøre funksjonene til det vi i dag refererer til som en BIOS (grovt forenklet; grunnleggende rutiner for å lese ut data tilstrekkelig for å starte et annet operativsystem). Det er denne programvaren som i vårt tilfelle kommer til å bruke paging-teknikken for å løse problemene våre med overlappende adresser...

Ved oppstart vil bootloader være plassert i ROM på adressene $0000-$1FFF, det første den vil gjøre er kopiere seg selv til RAM plassert fra $8000-$FFFF og dermed page ut ROM og så page inn det andre minnebrikken på adressene $0000-$7FFF. For å få rutinene sine på korrekt sted igjen, så vil den igjen kopiere seg selv over i ram på adressene $0000-$1FFF.

Det siste vi trenger er altså en diskett-stasjon, men utover å ha gått så langt som å spore opp en diskettstasjon med tilhørende kontroll-brikke så har jeg enda ikke fått startet på denne delen av prosjektet. En enklere metode som oftest benyttes i disse dager når det kommer til lignende retro-prosjekter er derimot å benytte seg av Compact Flash for denne delen av systemet. Med andre ord så har funnet en bruk for RC2014 IDE Compact Flash modulen jeg har brukt så mye tid på å snekre sammen.


Ingen kommentarer:

Legg inn en kommentar