CP/M -CP/M

CP/M
CPM-86.png
En skärmdump av CP/M-86
Utvecklare Digital Research, Inc. , Gary Kildall
Skrivet i PL/M , Assembly språk
Arbetstillstånd Historisk
Källmodell Ursprungligen stängd källkod , nu öppen källkod
Initial release 1974 ; 49 år sedan ( 1974 )
Senaste släppningen 3.1 / 1983 ; 40 år sedan ( 1983 )
Tillgänglig i engelsk
Uppdateringsmetod Ominstallation
Pakethanterare Ingen
Plattformar Intel 8080 , Intel 8085 , Zilog Z80 , Zilog Z8000 , Intel 8086 , Motorola 68000
Typ av kärna Monolitisk kärna
Påverkad av RT-11 , OS/8
Standardanvändargränssnitt
_
Kommandoradsgränssnitt (CCP.COM)
Licens Ursprungligen proprietär , nu BSD- liknande
Efterträdde av MP/M , CP/M-86
Officiell hemsida Digital Research CP/M-sida

CP/M , som ursprungligen står för Control Program/Monitor och senare Control Program for Microcomputers , är ett massmarknadsoperativsystem skapat 1974 för Intel 8080 / 85 -baserade mikrodatorer av Gary Kildall från Digital Research, Inc. Ursprungligen begränsat till singel- Uppdrag på 8-bitars processorer och högst 64 kilobyte minne, senare versioner av CP/M lade till fleranvändarvarianter och migrerades till 16-bitars processorer .

Kombinationen av CP/M och S-100 bussdatorer blev en tidig standard inom mikrodatorindustrin. Denna datorplattform användes flitigt i näringslivet under slutet av 1970-talet och in i mitten av 1980-talet. CP/M ökade marknadens storlek för både hårdvara och mjukvara genom att kraftigt minska mängden programmering som krävs för att installera en applikation på en ny tillverkares dator. En viktig drivkraft för mjukvaruinnovation var tillkomsten av (jämförelsevis) lågkostnadsmikrodatorer som kör CP/M, eftersom oberoende programmerare och hackare köpte dem och delade sina skapelser i användargrupper . CP/M fördrevs så småningom av DOS efter 1981 års introduktion av IBM PC .

Historia

CP/M-annons i numret av InfoWorld magazine den 29 november 1982

Tidig historia

Gary Kildall utvecklade ursprungligen CP/M under 1974, som ett operativsystem för att köras på ett Intel Intellec-8- utvecklingssystem, utrustat med en Shugart Associates 8-tums diskettenhet ansluten via en anpassad diskettkontroller . Den skrevs i Kildals eget PL/M ( Programming Language for Microcomputers ). Olika aspekter av CP/M påverkades av operativsystemet TOPS-10 i stordatorn DECsystem-10 , som Kildall hade använt som utvecklingsmiljö. En tidig extern licenstagare av CP/M var Gnat Computers , en tidig mikrodatorutvecklare från San Diego, Kalifornien . 1977 beviljades företaget licensen att använda CP/M 1.0 för vilken mikro de önskade för $90. Inom året var efterfrågan på CP/M så hög att Digital Research kunde öka licensen till tiotusentals dollar.

Under Kildalls ledning utfördes utvecklingen av CP/M 2.0 mestadels av John Pierce 1978. Kathryn Strutynski , en vän till Kildall från Naval Postgraduate School (NPS) gånger, blev den fjärde medarbetaren på Digital Research Inc. i början av 1979. Hon började med att felsöka CP/M 2.0 och blev senare inflytelserik som nyckelutvecklare för CP/M 2.2 och CP/M Plus. Andra tidiga utvecklare av CP/M-basen var Robert "Bob" Silberstein och David "Dave" K. Brown.

CP/M stod ursprungligen för "Control Program/Monitor", ett namn som antyder en inbyggd monitor — en primitiv föregångare till operativsystemet. Men under omvandlingen av CP/M till en kommersiell produkt gav varumärkesregistreringsdokument som inlämnades i november 1977 produktens namn som "Kontrollprogram för mikrodatorer". CP/M-namnet följer ett rådande namnschema för tiden, som i Kildals PL/M-språk, och Prime Computers PL/P ( Programming Language for Prime ), båda antyder IBM:s PL/I ; och IBM:s CP/CMS- operativsystem, som Kildall hade använt när han arbetade på NPS. Detta byte av CP/M var en del av en större ansträngning av Kildall och hans fru med affärspartnern Dorothy McEwen för att omvandla Kildalls personliga projekt med CP/M och den Intel-kontrakterade PL/M-kompilatorn till ett kommersiellt företag. Familjen Kildalls hade för avsikt att etablera varumärket Digital Research och dess produktlinjer som synonymt med "mikrodator" i konsumentens sinne, liknande vad IBM och Microsoft tillsammans senare lyckades åstadkomma genom att göra "persondator" synonymt med deras produkterbjudanden. Intergalactic Digital Research, Inc. döptes senare om till Digital Research, Inc.

Initial framgång

Apple CP/M-kort med manual

I september 1981 hade Digital Research sålt mer än260 000 CP/M-licenser; InfoWorld uppgav att den faktiska marknaden sannolikt var större på grund av underlicenser. Många olika företag producerade CP/M-baserade datorer för många olika marknader; tidningen konstaterade att "CP/M är på god väg att etablera sig som operativsystemet för små datorer" . Företagen valde att stödja CP/M på grund av dess stora bibliotek av mjukvara. Xerox 820 körde operativsystemet eftersom "där det finns bokstavligen tusentals program skrivna för den, skulle det vara oklokt att inte dra nytta av det", sa Xerox. (Xerox inkluderade en Howard W. Sams CP/M-manual som kompensation för Digital Researchs dokumentation, som InfoWorld 1982 beskrev som grym.) År 1984 använde Columbia University samma källkod för att bygga Kermit -binärer för mer än ett dussin olika CP/ M-system, plus en generisk version. Operativsystemet beskrevs som en " mjukvarubuss ", som tillåter flera program att interagera med olika hårdvara på ett standardiserat sätt. Program skrivna för CP/M var vanligtvis portabla mellan olika maskiner och krävde vanligtvis endast specifikationen av escape-sekvenserna för kontroll av skärmen och skrivaren. Denna portabilitet gjorde CP/M populär, och mycket mer mjukvara skrevs för CP/M än för operativsystem som kördes på bara ett maskinvarumärke. En begränsning av portabiliteten var att vissa program använde den utökade instruktionsuppsättningen för Z80-processorn och inte skulle fungera på en 8080- eller 8085-processor. En annan var grafikrutiner, särskilt i spel och grafikprogram, som i allmänhet var maskinspecifika eftersom de använde direkt hårdvaruåtkomst för hastighet, förbi OS och BIOS (detta var också ett vanligt problem i tidiga DOS-maskiner).

Bill Gates hävdade att Apple II-serien med ett Z-80 SoftCard var den enskilt mest populära CP/M-hårdvaruplattformen. Många olika märken av maskiner körde operativsystemet, några anmärkningsvärda exempel är Altair 8800 , IMSAI 8080 , Osborne 1 och Kaypro luggables och MSX -datorer. Det mest sålda CP/M-kapabla systemet genom tiderna var förmodligen Amstrad PCW . I Storbritannien var CP/M också tillgängligt på Research Machines utbildningsdatorer (med CP/M-källkoden publicerad som en utbildningsresurs) och för BBC Micro när den var utrustad med en Z80 co-processor. Dessutom var den tillgänglig för Amstrad CPC- serien, Commodore 128 , TRS-80 och senare modeller av ZX Spectrum . CP/M 3 användes också på NIAT, en anpassad handdator designad för AC Nielsens internt bruk med 1  MB SSD - minne .

Fleranvändare

1979 släpptes ett fleranvändarkompatibelt derivat av CP/M. MP/M gjorde det möjligt för flera användare att ansluta till en enda dator, med hjälp av flera terminaler för att förse varje användare med en skärm och ett tangentbord. Senare versioner körde på 16-bitars processorer.

CP/M Plus

CP/M Plus (CP/M 3) Systemguide

Den senaste 8-bitarsversionen av CP/M var version 3, ofta kallad CP/M Plus, släppt 1983. Dess BDOS designades av Brown. Den inkorporerade bankväxlingsminneshanteringen för MP/M i ett enanvändar-operativsystem för en uppgift som är kompatibelt med CP/M 2.2-applikationer. CP/M 3 skulle därför kunna använda mer än 64 KB minne på en 8080- eller Z80-processor. Systemet skulle kunna konfigureras för att stödja datumstämpling av filer. Distributionsmjukvaran för operativsystemet inkluderade också en flyttande assembler och länk. CP/M 3 var tillgänglig för den senaste generationen av 8-bitars datorer, särskilt Amstrad PCW , Amstrad CPC , ZX Spectrum +3 , Commodore 128 , MSX -maskiner och Radio Shack TRS-80 Model 4 .

16-bitars versioner

DEC PRO-CP/M-80 diskettdistribution för Z80-A co-processor i en DEC Professional 3xx-serie

Det fanns versioner av CP/M för vissa 16-bitars processorer också.

Den första versionen i 16-bitarsfamiljen var CP/M-86 för Intel 8086 i november 1981. Kathryn Strutynski var projektledare för den utvecklande CP/M-86-serien av operativsystem. Vid denna tidpunkt blev den ursprungliga 8-bitars CP/M känd av retronamnet CP/M-80 för att undvika förvirring.

CP/M-86 förväntades bli standardoperativsystemet för de nya IBM-datorerna , men DRI och IBM kunde inte förhandla fram utvecklings- och licensvillkor. IBM vände sig till Microsoft istället, och Microsoft levererade PC DOS baserad på 86-DOS . Även om CP/M-86 blev ett alternativ för IBM PC efter att DRI hotade rättsliga åtgärder, gick den aldrig om Microsofts system. De flesta kunder stöttes bort av det betydligt högre pris IBM tog ut för CP/M-86 över PC DOS ( 240 USD respektive 40 USD).

När Digital Equipment Corporation (DEC) lade ut Rainbow 100 för att konkurrera med IBM, kom den med CP/M-80 med ett Z80-chip, CP/M-86 eller MS-DOS med en 8088-mikroprocessor, eller CP/M- 86 /80 med båda. Z80- och 8088-processorerna kördes samtidigt. En fördel med Rainbow var att den kunde fortsätta att köra 8-bitars CP/M-programvara, vilket bevarar en användares möjligen betydande investering när de flyttade in i 16-bitarsvärlden av MS-DOS. En liknande dubbelprocessoranpassning för CompuPro System 816  [ sr ] fick namnet CP/M 8-16 . CP/M-86-anpassningen för den 8085/8088-baserade Zenith Z-100 stödde också körprogram för båda dess processorer.

Strax efter CP/M-86 var en annan 16-bitarsversion av CP/M CP/M-68K för Motorola 68000 . Den ursprungliga versionen av CP/M-68K 1982 skrevs i Pascal/MT+68k, men den portades till C senare. CP/M-68K, som redan kördes på Motorola EXORmacs -system, skulle ursprungligen användas i Atari ST -datorn, men Atari bestämde sig för att gå med ett nyare skivoperativsystem som heter GEMDOS . CP/M-68K användes också på datorerna SORD M68 och M68MX.

1982 fanns det också en port från CP/M-68K till 16-bitars Zilog Z8000 för Olivetti M20, skriven i C , med namnet CP/M-8000 .

Dessa 16-bitarsversioner av CP/M krävde att applikationsprogram skulle kompileras om för de nya CPU:erna. Vissa program skrivna i assemblerspråk kan automatiskt översättas för en ny processor. Ett verktyg för detta var Digital Researchs XLT86 , som översatte .ASM-källkod för Intel 8080-processorn till .A86-källkod för Intel 8086. Översättaren skulle också optimera utdata för kodstorlek och ta hand om anropskonventioner, så att CP /M-80- och MP/M-80- program kan portas till CP/M-86- och MP/M-86- plattformarna automatiskt. XLT86 i sig skrevs i PL/I-80 och var tillgänglig för CP/M-80-plattformar såväl som för VAX/VMS .

Förskjutning av MS-DOS

Många förväntade sig att CP/M skulle vara standardoperativsystemet för 16-bitars datorer. 1980 kontaktade IBM Digital Research, på Bill Gates förslag, för att licensiera en kommande version av CP/M för sin nya produkt, IBM Personal Computer . Efter misslyckandet med att få ett undertecknat sekretessavtal misslyckades samtalen, och IBM ingick istället avtal med Microsoft om att tillhandahålla ett operativsystem. Den resulterande produkten, MS-DOS , började snart sälja mer än CP/M.

Många av de grundläggande koncepten och mekanismerna i tidiga versioner av MS-DOS liknade de för CP/M. Interna komponenter som filhanteringsdatastrukturer var identiska och båda hänvisade till diskenheter med en bokstav ( , , A:etc. B:). MS-DOS främsta innovation var dess FAT- filsystem . Denna likhet gjorde det lättare att portera populära CP/M-program som WordStar och dBase . Men CP/M:s koncept med separata användarområden för filer på samma disk portades aldrig till MS-DOS. Eftersom MS-DOS hade tillgång till mer minne (eftersom få IBM-datorer såldes med mindre än 64 KB minne, medan CP/M kunde köras i 16 KB vid behov), byggdes fler kommandon in i kommandoradsskalet , vilket gjorde MS -DOS något snabbare och lättare att använda på diskettbaserade datorer.

Även om en av de första kringutrustningarna för IBM PC var ett SoftCard-liknande expansionskort som lät den köra 8-bitars CP/M-programvara, konstaterade InfoWorld 1984 att ansträngningarna att introducera CP/M på hemmamarknaden i stort sett hade varit misslyckade och de flesta CP/M-programvara var för dyr för hemanvändare. 1986 uppgav tidningen att Kaypro hade stoppat produktionen av 8-bitars CP/M-baserade modeller för att koncentrera sig på försäljningen av MS-DOS-kompatibla system, långt efter att de flesta andra leverantörer hade upphört med produktionen av ny utrustning och mjukvara för CP/M. CP/M tappade snabbt marknadsandelar när mikrodatormarknaden flyttade till den IBM-kompatibla plattformen, och den återtog aldrig sin tidigare popularitet. Byte magazine, vid den tiden en av de ledande branschtidningarna för mikrodatorer, upphörde i princip att täcka CP/M-produkter inom några år efter introduktionen av IBM PC. Till exempel, 1983 fanns det fortfarande några annonser för S-100-kort och artiklar om CP/M-programvara, men 1987 fanns dessa inte längre i tidningen.

Senare versioner av CP/M-86 gjorde betydande framsteg i prestanda och användbarhet och gjordes kompatibla med MS-DOS. För att återspegla denna kompatibilitet ändrades namnet, och CP/M-86 blev DOS Plus , som i sin tur blev DR-DOS .

ZCPR

ZCPR (Z80 Command Processor Replacement) introducerades den 2 februari 1982 som en drop-in ersättare för standarden Digital Research console command processor (CCP) och skrevs ursprungligen av en grupp datorhobbyister som kallade sig "The CCP Group". De var Frank Wancho, Keith Petersen (arkivarien bakom Simtel på den tiden), Ron Fowler, Charlie Strom, Bob Mathias och Richard Conn. Richard var faktiskt den drivande kraften i denna grupp (som alla höll kontakten via e-post). ).

ZCPR1 släpptes på en skiva som släpptes av SIG/M (Special Interest Group/Microcomputers), en del av Amateur Computer Club of New Jersey .

ZCPR2 släpptes den 14 februari 1983. Den släpptes som en uppsättning av tio skivor från SIG/M. ZCPR2 uppgraderades till 2.3 och släpptes även i 8080-kod, vilket tillåter användning av ZCPR2 på 8080- och 8085-system.

ZCPR3 släpptes den 14 juli 1984, som en uppsättning av nio skivor från SIG/M. Koden för ZCPR3 kunde också kompileras (med reducerade funktioner) för 8080 och skulle köras på system som inte hade den erforderliga Z80 -mikroprocessorn. Funktioner i ZCPR från och med version 3 inkluderade skal, alias, I/O-omdirigering, flödeskontroll, namngivna kataloger, sökvägar, anpassade menyer, lösenord och onlinehjälp. I januari 1987 slutade Richard Conn att utveckla ZCPR, och Echelon bad Jay Sage (som redan hade en privat förbättrad ZCPR 3.1) att fortsätta arbetet med den. Således utvecklades och släpptes ZCPR 3.3. ZCPR 3.3 stödde inte längre 8080-serien av mikroprocessorer och lade till de flesta funktionerna i alla uppgraderingar i ZCPR-serien. ZCPR 3.3 inkluderade också ett komplett utbud av verktyg med avsevärt utökade möjligheter. Även om ZCPR entusiastiskt stöddes av den tidens CP/M-användarbas, var ZCPR ensamt otillräckligt för att bromsa CP/Ms undergång.

Hårdvarumodell

Sanco 8001-dator, körs under CP/M 2.2 (1982)
CP/M-kassett för Commodore 64

Ett minimalt 8-bitars CP/M-system skulle innehålla följande komponenter:

  • En datorterminal som använder ASCII- teckenuppsättningen
  • En Intel 8080 (och senare 8085) eller Zilog Z80 mikroprocessor
    • NEC V20- och V30- processorerna stöder ett 8080-emuleringsläge som kan köra 8-bitars CP/M på en PC DOS/MS-DOS-dator så utrustad, även om vilken PC som helst kan också köra 16-bitars CP/M-86.
  • Minst 16 kilobyte RAM , med början på adress 0
  • Ett sätt att bootstrapa den första sektorn på disketten
  • Minst en diskettenhet

Det enda hårdvarusystemet som CP/M, som säljs av Digital Research, skulle stödja var Intel 8080 Development System. Tillverkare av CP/M-kompatibla system anpassade delar av operativsystemet för sin egen kombination av installerat minne, diskenheter och konsolenheter. CP/M skulle också köras på system baserade på Zilog Z80-processorn eftersom Z80 var kompatibel med 8080-kod. Medan den distribuerade kärnan av CP/M från Digital Research (BDOS, CCP, transientkommandon) inte använde någon av de Z80-specifika instruktionerna, använde många Z80-baserade system Z80-kod i det systemspecifika BIOS, och många applikationer var dedikerade till Z80-baserade CP/M-maskiner.

Digital Research samarbetade därefter med Zilog och American Microsystems för att producera Personal CP/M, en ROM-baserad version av operativsystemet som syftar till billigare system som potentiellt skulle kunna utrustas utan diskenheter. Personal CP/M, som först presenterades i Sharp MZ-800, ett kassettbaserat system med valfria diskenheter, beskrevs som att ha "skrivits om för att dra fördel av den förbättrade Z-80-instruktionsuppsättningen" i motsats till att bevara portabiliteten med 8080 American Microsystems tillkännagav en Z80-kompatibel mikroprocessor, S83, med 8 KB ROM i paketet för operativsystemet och BIOS, tillsammans med omfattande logik för gränssnitt med 64-kilobit dynamiska RAM-enheter.

På de flesta maskiner var bootstrap en minimal bootloader i ROM kombinerat med något sätt för minimal bankväxling eller ett sätt att injicera kod på bussen (eftersom 8080 behöver se startkod på adress 0 för uppstart, medan CP/M behöver RAM där); för andra måste denna bootstrap läggas in i minnet med hjälp av frontpanelens kontroller varje gång systemet startades.

CP/M använde 7-bitars ASCII-uppsättningen. De andra 128 tecknen som möjliggjordes av 8-bitarsbyten var inte standardiserade. Till exempel använde en Kaypro dem för grekiska tecken, och Osborne -maskiner använde den 8:e bituppsättningen för att indikera ett understruket tecken. WordStar använde den åttonde biten som en slutmarkör för ordet. Internationella CP/M-system använde oftast ISO 646 -normen för lokaliserade teckenuppsättningar, och ersatte vissa ASCII-tecken med lokaliserade tecken istället för att lägga till dem utanför 7-bitarsgränsen.

Komponenter

I 8-bitarsversionerna, medan det kördes, hade CP/M-operativsystemet som laddades in i minnet tre komponenter:

  • Basic Input/Output System (BIOS),
  • Basic Disk Operating System (BDOS),
  • Console Command Processor (CCP).

BIOS och BDOS var minnesresidenta, medan CCP:n var minnesresidenta såvida de inte skrevs över av ett program, i vilket fall det automatiskt laddades om efter att programmet slutat köras. Ett antal övergående kommandon för standardverktyg tillhandahölls också. De övergående kommandona fanns i filer med filtillägget .COM på disken.

BIOS styrde direkt andra hårdvarukomponenter än processorn och huvudminnet. Den innehöll funktioner som teckeninmatning och -utdata och läsning och skrivning av skivsektorer. BDOS implementerade CP/M -filsystemet och vissa in-/utdataabstraktioner (som omdirigering) ovanpå BIOS. CCP tog användarkommandon och antingen körde dem direkt (interna kommandon som DIR för att visa en katalog eller ERA för att ta bort en fil) eller laddade och startade en körbar fil med det angivna namnet (övergående kommandon som PIP.COM för att kopiera filer eller STAT.COM för att visa olika fil- och systeminformation). Tredjepartsapplikationer för CP/M var också i huvudsak övergående kommandon.

BDOS, CCP och standardövergående kommandon var desamma i alla installationer av en viss version av CP/M, men BIOS-delen anpassades alltid till den specifika hårdvaran.

Att lägga till minne till en dator, till exempel, innebar att CP/M-systemet måste installeras om för att transienta program skulle kunna använda det extra minnesutrymmet. Ett verktygsprogram (MOVCPM) försågs med systemdistribution som gjorde det möjligt att flytta objektkoden till olika minnesområden. Verktygsprogrammet justerade adresserna i absoluta hopp och subrutinanropsinstruktioner till nya adresser som krävs av den nya platsen för operativsystemet i processorminnet. Denna nyligen korrigerade version kan sedan sparas på en ny disk, vilket gör att applikationsprogram kan komma åt det extra minne som görs tillgängligt genom att flytta systemkomponenterna. När det väl installerats lagrades operativsystemet (BIOS, BDOS och CCP) i reserverade områden i början av en disk som skulle användas för att starta upp systemet. Vid uppstart skulle starthanteraren (vanligtvis i ett chip för ROM-firmware) ladda operativsystemet från disken i enheten A:.

Med moderna standarder var CP/M primitivt på grund av de extrema begränsningarna för programstorlek. Med version 1.0 fanns det ingen möjlighet att detektera en ändrad disk. Om en användare bytte disk utan att manuellt läsa om diskkatalogen skulle systemet skriva på den nya disken med hjälp av den gamla diskens kataloginformation, vilket förstör data lagrad på disken. Från version 1.1 eller 1.2 och framåt skulle ett fatalt fel signaleras om du byter en disk och sedan försöker skriva till den innan dess katalog lästes. Detta undvek att skriva över disken men krävde en omstart och förlust av data som skulle lagras på disken.

Majoriteten av komplexiteten i CP/M isolerades i BDOS, och i mindre utsträckning, CCP och transientkommandon. Detta innebar att genom att porta det begränsade antalet enkla rutiner i BIOS till en viss hårdvaruplattform skulle hela operativsystemet fungera. Detta minskade avsevärt utvecklingstiden som behövdes för att stödja nya maskiner, och var en av huvudorsakerna till CP/M:s utbredda användning. Idag är den här typen av abstraktion gemensam för de flesta operativsystem (ett hårdvaruabstraktionslager ), men vid tiden för CP/M:s födelse var OS vanligtvis avsedda att köras på endast en maskinplattform, och flerskiktsdesign ansågs onödig.

Konsol kommandoprocessor

Skärmdump som visar en CP/M 3.0-kataloglista med kommandot DIRpå en Commodore 128 hemdator

Console Command Processor, eller CCP, accepterade input från tangentbordet och förmedlade resultat till terminalen. CP/M i sig skulle fungera med antingen en utskriftsterminal eller en videoterminal. Alla CP/M-kommandon måste skrivas in på kommandoraden . Konsolen visar oftast A>prompten för att indikera den nuvarande standarddisken. När den används med en videoterminal följs detta vanligtvis av en blinkande markör från terminalen. KKP skulle invänta input från användaren. Ett internt CCP-kommando, med formen enhetsbeteckning följt av ett kolon, kan användas för att välja standardenhet. Om du till exempel skriver B:och trycker på enter vid kommandotolken ändras standardenheten till B, och kommandotolken skulle då bli B>för att indikera denna ändring.

CP/M:s kommandoradsgränssnitt mönstrades efter operativsystemen från Digital Equipment , såsom RT-11 för PDP-11 och OS/8 för PDP-8 . Kommandon tog formen av ett nyckelord följt av en lista med parametrar separerade med mellanslag eller specialtecken. I likhet med ett inbyggt Unix-skal , om ett internt kommando kändes igen, utfördes det av KKP själv. Annars skulle den försöka hitta en körbar fil på den för närvarande loggade hårddisken och (i senare versioner) användarområdet, ladda den och skicka eventuella ytterligare parametrar till den från kommandoraden. Dessa kallades "övergående" program. När det var klart skulle CP/M ladda om den del av CCP:n som hade skrivits över av applikationsprogram – detta tillät transienta program ett större minnesutrymme.

Kommandona i sig kan ibland vara oklara. Till exempel, kommandot för att duplicera filer namngavs PIP(Peripheral-Interchange-Program), namnet på det gamla DEC -verktyget som användes för detta ändamål. Formatet på parametrar som gavs till ett program var inte standardiserat, så att det inte fanns något enskilt alternativtecken som skilde alternativ från filnamn. Olika program kunde och använde olika tecken.

CP/M-konsolens kommandoprocessor inkluderar DIR , ERA , REN , SAVE , TYPE och USER som inbyggda kommandon . Transientkommandon i CP/M inkluderar ASM , DDT , DUMP , ED , LOAD , MOVCPM  [ pl ] , PIP , STAT , SUBMIT och SYSGEN .

CP/M Plus (CP/M version 3) inkluderar DIR (visa lista över filer från en katalog förutom de som är markerade med SYS-attributet), DIRSYS / DIRS (lista filer markerade med SYS-attributet i katalogen), ERASE / ERA ( radera en fil), RENAME / REN (byta namn på en fil), TYPE / TYP (visa innehållet i en ASCII-teckenfil) och USER / USE (ändra användarnummer) som inbyggda kommandon: CP/M 3 låter användaren förkorta de inbyggda kommandona. Transientkommandon i CP/M 3 inkluderar COPYSYS , DATUM , DEVICE , DUMP , ED , GET , HELP , HEXCOM , INITDIR , LINK , MAC , PIP , PUT , RMAC , SET , SETDEF , SHOW , SID , SID , SUB och X.

Grundläggande skivoperativsystem

Basic Disk Operating System, eller BDOS, gav åtkomst till sådana operationer som att öppna en fil, skriva ut till konsolen eller skriva ut. Tillämpningsprogram skulle ladda processorregister med en funktionskod för operationen och adresser för parametrar eller minnesbuffertar och anropa en fast adress i minnet. Eftersom adressen var densamma oberoende av mängden minne i systemet, skulle applikationsprogram köras på samma sätt för alla typer eller konfigurationer av hårdvara.

Basic Input Output System

CP/M-annons i numret av InfoWorld magazine den 11 december 1978

Basic Input Output System eller BIOS, tillhandahöll de lägsta nivåfunktionerna som krävs av operativsystemet.

Dessa inkluderade att läsa eller skriva enstaka tecken till systemkonsolen och läsa eller skriva en sektor av data från disken. BDOS hanterade en del av buffringen av data från disketten, men före CP/M 3.0 antog den en skivsektorstorlek fastställd till 128 byte, som används på 8-tums disketter med enkel densitet . Eftersom de flesta 5,25-tums diskformat använde större sektorer, hanterades blockeringen och avblockeringen och hanteringen av ett diskbuffertområde av modellspecifik kod i BIOS.

Anpassning krävdes eftersom hårdvaruval inte begränsades av kompatibilitet med någon populär standard. Till exempel använde vissa tillverkare en separat datorterminal, medan andra designade ett inbyggt integrerat videodisplaysystem. Seriella portar för skrivare och modem kunde använda olika typer av UART- chips, och portadresserna var inte fixerade. Vissa maskiner använde minnesmappad I/O istället för 8080 I/O-adressutrymmet. Alla dessa variationer i hårdvaran gömdes från andra moduler i systemet med hjälp av BIOS, som använde standardingångar för de tjänster som krävdes för att köra CP/M såsom tecken I/O eller åtkomst till ett diskblock. Eftersom stöd för seriell kommunikation till ett modem var mycket rudimentärt i BIOS eller kan ha saknats helt, var det vanligt att CP/M-program som använde modem hade en användarinstallerad överlagring som innehåller all kod som krävs för att komma åt en viss maskins serieport.

Ansökningar

Distribution 5+1⁄4 - tums disketter och paket för den senaste versionen (version 4) av WordStar ordbehandlingsprogram släppt för 8-bitars CP/M

WordStar , en av de första allmänt använda ordbehandlare , och dBase , ett tidigt och populärt databasprogram för mikrodatorer, skrevs ursprungligen för CP/M. Två tidiga outliners , KAMAS (Knowledge and Mind Amplification System) och dess nedskärningsefterföljare Out-Think (utan programmeringsmöjligheter och omarbetade för 8080/V20-kompatibilitet) skrevs också för CP/M, fastän de senare skrevs om för MS-DOS. Turbo Pascal , förfader till Borland Delphi , och Multiplan , förfader till Microsoft Excel , debuterade också på CP/M innan MS-DOS-versioner blev tillgängliga. VisiCalc , det första kalkylbladsprogrammet någonsin, gjordes tillgängligt för CP/M. Ett annat företag, Sorcim , skapade sitt SuperCalc- kalkylblad för CP/M, som skulle fortsätta att bli marknadsledande och de facto standard för CP/M. Supercalc skulle fortsätta att vara en konkurrent på kalkylarksmarknaden i MS-DOS-världen. AutoCAD , en CAD-applikation från Autodesk debuterade på CP/M. En mängd kompilatorer och tolkar för den tidens populära programmeringsspråk (som BASIC , Borlands Turbo Pascal , FORTRAN och till och med PL/I ) fanns tillgängliga, bland dem flera av de tidigaste Microsoft - produkterna.

CP/M-programvaran kom ofta med installatörer som anpassade den till en mängd olika datorer. Källkoden för BASIC-program var lättillgänglig och de flesta former av kopieringsskydd var ineffektiva på operativsystemet. En Kaypro II-ägare skulle till exempel skaffa programvara i Xerox 820-format och sedan kopiera den till och köra den från diskar i Kaypro-format.

Bristen på standardiserad grafik stöder begränsade videospel , men olika karaktärs- och textbaserade spel portades, såsom Telengard , Gorillas , Hamurabi , Lunar Lander , tillsammans med tidig interaktiv fiktion inklusive Zork -serien och Colossal Cave Adventure . Textäventyrsspecialisten Infocom var en av få utgivare som konsekvent släppte sina spel i CP/M-format . Lifeboat Associates började samla in och distribuera användarskriven "gratis" programvara. En av de första var XMODEM , som möjliggjorde pålitliga filöverföringar via modem och telefonlinje. Ett annat program som är inbyggt i CP/M var konturprocessorn KAMAS .

Övergående programområde

Läs-/skrivminnet mellan adress 0100 hexadecimal och den lägsta adressen för BDOS var Transient Program Area (TPA) tillgängligt för CP/M-applikationsprogram. Även om alla Z80- och 8080-processorer kunde adressera 64 kilobyte minne, kan mängden tillgänglig för applikationsprogram variera, beroende på utformningen av den specifika datorn. Vissa datorer använde stora delar av adressutrymmet för sådana saker som BIOS ROM eller bildskärmsminne. Som ett resultat hade vissa system mer tillgängligt TPA-minne än andra. Bankväxling var en vanlig teknik som gjorde att system kunde ha en stor TPA samtidigt som de bytte ut ROM- eller videominnesutrymme efter behov. CP/M 3.0 tillät att delar av BDOS också fanns i bankväxlat minne.

Felsökningsprogram

CP/M kom med ett Dynamic Debugging Tool, smeknamnet DDT (efter insekticiden, dvs. en bugg -dödare), som gjorde det möjligt att undersöka och manipulera minnes- och programmoduler och att ett program kunde köras ett steg i taget.

Residentprogram

CP/M stödde ursprungligen inte motsvarigheten till TSR-program ( terminate and stay resident) som under DOS. Programmerare kan skriva programvara som kan avlyssna vissa operativsystemsamtal och utöka eller ändra deras funktionalitet. Med denna funktion utvecklade och sålde programmerare extra skrivbordstillbehörsprogram , som SmartKey , ett tangentbordsverktyg för att tilldela vilken sträng av byte som helst till vilken tangent som helst. CP/M 3 lade dock till stöd för dynamiskt laddningsbara Resident System Extensions (RSX). En så kallad null-kommandofil skulle kunna användas för att tillåta CCP att ladda en RSX utan ett övergående program. Liknande lösningar som RSM (för inbyggda systemmoduler ) eftermonterades också till CP/M 2.2-system av tredje part.

Mjukvaruinstallation

Även om CP/M tillhandahöll viss hårdvaruabstraktion för att standardisera gränssnittet till disk-I/O eller konsol-I/O, krävde applikationsprogram fortfarande vanligtvis installation för att kunna använda alla funktioner hos sådan utrustning som skrivare och terminaler. Ofta styrdes dessa av flyktsekvenser som måste ändras för olika enheter. Till exempel skulle flyktsekvensen för att välja fetstil på en skrivare ha skiljt sig mellan tillverkare och ibland bland modeller inom tillverkarens sortiment. Denna procedur definierades inte av operativsystemet; en användare skulle vanligtvis köra ett installationsprogram som antingen skulle tillåta val från en rad enheter, eller så tillåta funktion-för-funktion redigering av de escape-sekvenser som krävs för att komma åt en funktion. Detta måste upprepas för varje applikationsprogram, eftersom det inte fanns någon central operativsystemtjänst för dessa enheter.

Initieringskoderna för varje skrivarmodell måste skrivas in i programmet. För att använda ett program som Wordstar med mer än en skrivare (t.ex. en snabb matrisskrivare eller en långsammare men presentationskvalitetsskrivare) måste en separat version av Wordstar förberedas och man måste ladda Wordstar version som motsvarade den valda skrivaren (och avslutar och laddar om för att byta skrivare).

Diskformat

IBM System/34 och IBM 3740: s enkeldensitet, enkelsidiga format är CP/M:s standardformat för 8-tums disketter . Det finns inget standard 5,25-tums CP/M-diskformat, med Kaypro, Morrow Designs , Osborne och andra som var och en använder sina egna. InfoWorld uppskattade i september 1981 att "ungefär två dussin format var tillräckligt populära för att programvaruskapare var tvungna att överväga dem för att nå den bredaste möjliga marknaden". JRT Pascal tillhandahöll till exempel versioner på 5,25-tumsskivor för North Star , Osborne, Apple, Heath hårdsektor och mjuk sektor , och Superbrain , och en 8-tumsversion. Ellis Computing erbjöd också sin mjukvara för båda Heath-formaten och 16 andra 5,25-tumsformat inklusive två olika TRS-80 CP/M-modifieringar.

Vissa diskformat var mer populära än andra. De flesta program var tillgängliga i Xerox 820-format, och andra datorer som Kaypro II var kompatibla med det. Ingen enskild tillverkare rådde dock under 5,25-tumseran av CP/M-användning, och diskformat var ofta inte bärbara mellan hårdvarutillverkare. En mjukvarutillverkare var tvungen att förbereda en separat version av programmet för varje märke av hårdvara som det skulle köras på. Hos vissa tillverkare (Kaypro är ett exempel) fanns det inte ens standardisering över företagets olika modeller. På grund av denna situation blev diskformatöversättningsprogram, som gjorde det möjligt för en maskin att läsa många olika format, populära och minskade förvirringen, liksom program som Kermit, som tillät överföring av data och program från en maskin till en annan med de seriella portarna som de flesta CP/M-maskiner hade.

Olika format användes beroende på egenskaperna hos särskilda system och i viss mån designernas val. CP/M-stödda alternativ för att styra storleken på reserverade områden och katalogområden på disken, och mappningen mellan logiska disksektorer (som ses av CP/M-program) och fysiska sektorer som allokeras på disken. Det fanns många sätt att anpassa dessa parametrar för varje system, men när de väl hade ställts in fanns det inget standardiserat sätt för ett system att ladda parametrar från en disk formaterad på ett annat system.

Graden av portabilitet mellan olika CP/M-maskiner berodde på vilken typ av diskenhet och styrenhet som användes eftersom många olika disketttyper fanns i CP/M-eran i både 8-tums och 5,25-tumsformat. Diskar kan vara hårda eller mjuka sektorer, enkel- eller dubbeldensitet, enkel- eller dubbelsidig, 35 spår, 40 spår, 77 spår eller 80 spår, och sektorlayouten, storleken och interfolieringen kan också variera kraftigt. Även om översättningsprogram kunde tillåta användaren att läsa disktyper från olika maskiner, var enhetstypen och styrenheten också faktorer. År 1982 hade mjuksektorn, enkelsidiga, 40-spårs 5,25-tumsdiskar blivit det mest populära formatet att distribuera CP/M-programvara på eftersom de användes av den tidens vanligaste datorer på konsumentnivå, som t.ex. Apple II, TRS-80, Osborne 1, Kaypro II och IBM PC. Ett översättningsprogram gjorde det möjligt för användaren att läsa alla diskar på sin maskin som hade ett liknande format – till exempel kunde Kaypro II läsa TRS-80 , Osborne , IBM PC och Epson -diskar. Andra disktyper som 80 spår eller hårdsektorer var helt omöjliga att läsa. Den första halvan av dubbelsidiga skivor (som de på Epson QX-10) kunde läsas eftersom CP/M fick åtkomst till skivspår sekventiellt med spår 0 som det första (yttersta) spåret på sida 1 och spår 79 (på en 40- spårskiva) är det sista (innersta) spåret på sida 2. Apple II-användare kunde inte använda något annat än Apples GCR-format och var därför tvungna att skaffa CP/M-programvara på Apple-formatskivor eller överföra den via seriell länk.

Den fragmenterade CP/M-marknaden, som kräver att distributörer antingen lagerför flera format av diskar eller investerar i multiformatsdupliceringsutrustning, jämfört med de mer standardiserade IBM PC- diskformaten, var en bidragande orsak till den snabba inkuransen av CP/M efter 1981.

En av de sista anmärkningsvärda CP/M-kapabla maskinerna som dök upp var Commodore 128 1985, som hade en Z80 för CP/M-stöd förutom sitt ursprungliga läge med en 6502-derivativ CPU. Att använda CP/M krävde antingen en 1571- eller 1581 -diskenhet som kunde läsa diskar i mjuksektorn med 40-spår MFM -format.

Den första datorn som använde en 3,5-tums diskettenhet, Sony SMC-70 , körde CP/M 2.2. Commodore 128 , Bondwell-2 laptop, Micromint/Ciarcia SB-180, MSX och TRS-80 Model 4 (som kör Montezuma CP/M 2.2) stödde också användningen av CP/M med 3,5-tums disketter. CP/AM, Applied Engineerings version av CP/M för Apple II, stödde också 3,5-tumsdiskar (liksom RAM-diskar på RAM-kort som är kompatibla med Apple II Memory Expansion Card). Amstrad PCW körde CP/M med 3-tums diskettenheter först och bytte senare till 3,5-tumsenheter.

Filsystem

Filnamn specificerades som en sträng på upp till åtta tecken, följt av en punkt, följt av en filnamnstillägg på upp till tre tecken (" 8.3" filnamnsformat ). Tillägget identifierade vanligtvis typen av fil. Indikerade till exempel .COMen körbar programfil och .TXTindikerade en fil som innehåller ASCII- text. Tecken i filnamn som angavs vid kommandotolken konverterades till versaler, men detta upprätthölls inte av operativsystemet. Program ( MBASIC är ett anmärkningsvärt exempel) kunde skapa filnamn som innehåller små bokstäver, som sedan inte lätt kunde refereras till på kommandoraden.

Varje diskenhet identifierades av en enhetsbeteckning , till exempel enhet Aoch enhet B. För att referera till en fil på en specifik enhet, var enhetsbeteckningen prefixerad till filnamnet, avgränsad med ett kolon, A:FILE.TXTt.ex. Utan någon enhetsbeteckning prefixet var åtkomst till filer på den aktuella standardenheten.

Filstorleken angavs som antalet 128-byte- poster (motsvarande direkt till disksektorer på 8-tumsenheter) som upptas av en fil på disken. Det fanns inget allmänt stödd sätt att specificera byte-exakta filstorlekar. Den nuvarande storleken på en fil behölls i filens filkontrollblock (FCB) av operativsystemet. Eftersom många applikationsprogram (som textredigerare ) föredrar att hantera filer som teckensekvenser snarare än som sekvenser av poster, avslutades textfiler enligt konvention med ett kontroll-Z- tecken ( ASCII SUB , hexadecimal 1A). Att bestämma slutet av en textfil innebar därför att undersöka den sista posten i filen för att lokalisera den avslutande kontroll-Z. Detta innebar också att insättning av ett kontroll-Z-tecken i mitten av en fil vanligtvis hade effekten av att trunkera filens textinnehåll.

Med tillkomsten av större flyttbara och fasta diskenheter användes formler för avblockering av diskar, vilket resulterade i fler diskblock per logiskt filallokeringsblock. Även om detta möjliggjorde större filstorlekar, innebar det också att den minsta filen som kunde allokeras ökade i storlek från 1  KB (på enkeldensitetsenheter) till 2 KB (på dubbeldensitetsenheter) och så vidare, upp till 32 KB för en fil som bara innehåller en enda byte. Detta ledde till ineffektiv användning av diskutrymme om disken innehöll ett stort antal små filer.

Tidsstämplar för filändring stöddes inte i utgåvor upp till CP/M 2.2, men var en valfri funktion i MP/M och CP/M 3.0.

CP/M 2.2 hade inga underkataloger i filstrukturen, men tillhandahöll 16 numrerade användarområden för att organisera filer på en disk. För att byta användare var man tvungen att helt enkelt skriva "Användare X" vid kommandotolken, X är användarnumret. Säkerheten var obefintlig och ansågs onödig på en persondator. Användarområdeskonceptet var att göra enanvändarversionen av CP/M något kompatibel med fleranvändar-MP/M-system. En vanlig patch för CP/M och derivata operativsystem var att göra ett användarområde tillgängligt för användaren oberoende av det för närvarande inställda användarområdet. Ett USER-kommando gjorde att användarområdet kunde ändras till valfritt område från 0 till 15. Användare 0 var standard. Om man ändrade till en annan användare, såsom ANVÄNDARE 1, skulle materialet som sparats på disken för denna användare endast vara tillgängligt för ANVÄNDARE 1; ANVÄNDARE 2 skulle inte kunna se den eller komma åt den. Däremot var filer lagrade i USER 0-området tillgängliga för alla andra användare; deras plats specificerades med en prefatory sökväg , eftersom filerna för USER 0 endast var synliga för någon som var inloggad som USER 0. Användarområdesfunktionen hade utan tvekan lite nytta på små disketter, men den var användbar för att organisera filer på maskiner med hårddiskar . driver . Avsikten med funktionen var att underlätta användningen av samma dator för olika uppgifter. Till exempel kan en sekreterare göra datainmatning och sedan, efter att ha bytt ANVÄNDARE-område, kan en annan anställd använda maskinen för att göra fakturering utan att deras filer blandas ihop.

Grafik

MBASIC- textutmatning visas på en monokrom monitor som är typisk för den tiden

Även om grafikkompatibla S-100-system fanns från kommersialiseringen av S-100-bussen , gav CP/M inget standardiserat grafikstöd förrän 1982 med GSX (Graphics System Extension). På grund av den lilla mängden tillgängligt minne var grafik aldrig en vanlig funktion förknippad med 8-bitars CP/M-operativsystem. De flesta system kunde bara visa rudimentära ASCII- grafikdiagram och diagram i textläge eller genom att använda en anpassad teckenuppsättning . Vissa datorer i Kaypro- linjen och TRS-80 Model 4 hade videohårdvara som stödde blockgrafiktecken, och dessa var tillgängliga för assembler-programmerare och BASIC-programmerare med CHR$-kommandot. Model 4 kunde visa 640 gånger 240 pixlar grafik med ett valfritt högupplöst kort.

Derivat

CP/M-derivat SCP som körs på en östtysk robotron PC 1715
CP/J version 2.21 körs på en Elwro 804 Junior

Ett antal CP/M-80-derivat fanns i det tidigare östblocket under olika namn, inklusive SCP ( Single User Control Program  [ de ] ), SCP/M, CP/A, CP/J, CP/KC, CP/KSOB , CP/L, CP/Z, MICRODOS, BCU880, ZOAZ, OS/M, TOS/M, ZSDOS, M/OS, COS-PSA, DOS-PSA, CSOC, CSOS, CZ-CPM och andra. Det fanns också CP/M-86-derivat med namnet SCP1700 , CP/K och K8918-OS . De producerades av östtyska VEB Robotron och andra.

Arv

Ett antal beteenden som uppvisas av Microsoft Windows är ett resultat av bakåtkompatibilitet med MS-DOS, som i sin tur försökte göra en viss bakåtkompatibilitet med CP/M. Enhetsbokstaven och 8.3 filnamnskonventioner i MS-DOS (och tidiga Windows - versioner) antogs ursprungligen från CP/M. Jokertecken som matchar tecknen som används av Windows (? och *) är baserade på de för CP/M, liksom de reserverade filnamnen som används för att omdirigera utdata till en skrivare ("PRN:") och konsolen ( "CON:") . Enhetsnamnen A och B användes för att beteckna de två diskettenheter som CP/M-system vanligtvis använde; när hårddiskar dök upp, betecknades de C, som överlevde i MS-DOS som kommandotolken . Kontrolltecknet som markerar slutet på vissa textfiler kan också tillskrivas CP/M . Olika kommandon i DOS modellerades efter CP/M-kommandon; några av dem bar till och med samma namn, som DIR, REN/RENAME eller TYPE (och ERA/ERASE i DR-DOS). Filtillägg som eller används fortfarande för att identifiera filtyper på många operativsystem. C:\>^Z.TXT.COM

1997 och 1998 släppte Caldera några CP/M 2.2-binärfiler och källkod under en öppen källkodslicens , vilket även möjliggjorde omfördelning och modifiering av ytterligare insamlade Digital Research-filer relaterade till CP/M- och MP/M-familjerna genom Tim Olmsteads "The Inofficiell CP/M-webbplats" sedan 1997. Efter Olmsteads död den 12 september 2001 uppdaterades distributionslicensen och utökades av Lineo , som under tiden hade blivit ägare till dessa Digital Research-tillgångar, den 19 oktober 2001. I oktober 2014, till markerar 40-årsjubileet av den första presentationen av CP/M, släppte Computer History Museum tidiga källkodsversioner av CP/M.

Från och med 2018 finns det ett antal aktiva vintage-, hobby- och retrodatormänniskor och -grupper, och några små kommersiella företag, som fortfarande utvecklar och stödjer datorplattformar som använder CP/M (mestadels 2.2) som värdoperativsystem.

Se även

Referenser

Vidare läsning

externa länkar