CP/M -CP/M

CP/M
CPM-86.png
Et skærmbillede af CP/M-86
Udvikler Digital Research, Inc. , Gary Kildall
Skrevet i PL/M , Forsamlingssprog
Arbejdstilstand Historisk
Kildemodel Oprindeligt lukket kilde , nu åben kilde
Første udgivelse 1974 ; 49 år siden ( 1974 )
Seneste udgivelse 3.1 / 1983 ; 40 år siden ( 1983 )
Tilgængelig i engelsk
Opdateringsmetode Geninstallation
Pakkeansvarlig Ingen
Platforme Intel 8080 , Intel 8085 , Zilog Z80 , Zilog Z8000 , Intel 8086 , Motorola 68000
Kernel type Monolitisk kerne
Påvirket af RT-11 , OS/8
Standard
brugergrænseflade
Kommandolinjegrænseflade (CCP.COM)
Licens Oprindeligt proprietær , nu BSD- lignende
Efterfulgt af MP/M , CP/M-86
Officiel hjemmeside Digital Research CP/M side

CP/M , der oprindeligt stod for Control Program/Monitor og senere Control Program for Microcomputers , er et massemarkedsoperativsystem skabt i 1974 til Intel 8080 / 85 -baserede mikrocomputere af Gary Kildall fra Digital Research, Inc. Oprindeligt begrænset til enkelt- opgaver på 8-bit processorer og ikke mere end 64 kilobyte hukommelse, senere versioner af CP/M tilføjede multi-user variationer og blev migreret til 16-bit processorer .

Kombinationen af ​​CP/M og S-100 buscomputere blev en tidlig standard i mikrocomputerindustrien. Denne computerplatform blev meget brugt i erhvervslivet gennem slutningen af ​​1970'erne og ind i midten af ​​1980'erne. CP/M øgede markedsstørrelsen for både hardware og software ved i høj grad at reducere mængden af ​​programmering, der kræves for at installere en applikation på en ny producents computer. En vigtig drivkraft for softwareinnovation var fremkomsten af ​​(forholdsvis) billige mikrocomputere, der kører CP/M, da uafhængige programmører og hackere købte dem og delte deres kreationer i brugergrupper . CP/M blev til sidst fortrængt af DOS efter introduktionen af ​​IBM PC'en i 1981 .

Historie

CP/M-annonce i 29. november 1982-udgaven af ​​magasinet InfoWorld

Tidlig historie

Gary Kildall udviklede oprindeligt CP/M i løbet af 1974, som et operativsystem til at køre på et Intel Intellec-8- udviklingssystem, udstyret med et Shugart Associates 8-tommers diskettedrev forbundet via en brugerdefineret diskettecontroller . Den blev skrevet i Kildals egen PL/M ( Programmeringssprog for mikrocomputere ). Forskellige aspekter af CP/M blev påvirket af TOPS-10- operativsystemet på DECsystem-10 mainframe-computeren , som Kildall havde brugt som udviklingsmiljø. En tidlig ekstern licenstager af CP/M var Gnat Computers , en tidlig mikrocomputerudvikler fra San Diego, Californien . I 1977 fik virksomheden licens til at bruge CP/M 1.0 til enhver mikro, de ønskede, for $90. Inden for året var efterspørgslen efter CP/M så høj, at Digital Research var i stand til at øge licensen til titusindvis af dollars.

Under Kildalls ledelse blev udviklingen af ​​CP/M 2.0 for det meste udført af John Pierce i 1978. Kathryn Strutynski , en ven af ​​Kildall fra Naval Postgraduate School (NPS) gange, blev den fjerde medarbejder i Digital Research Inc. i begyndelsen af ​​1979. Hun startede med at fejlfinde CP/M 2.0 og blev senere indflydelsesrig som nøgleudvikler for CP/M 2.2 og CP/M Plus. Andre tidlige udviklere af CP/M-basen omfattede Robert "Bob" Silberstein og David "Dave" K. Brown.

CP/M stod oprindeligt for "Control Program/Monitor", et navn, der antyder en resident monitor — en primitiv forløber for operativsystemet. Men under omdannelsen af ​​CP/M til et kommercielt produkt gav varemærkeregistreringsdokumenter indleveret i november 1977 produktets navn som "Kontrolprogram for mikrocomputere". CP/M-navnet følger et fremherskende navneskema på den tid, som i Kildalls PL/M-sprog og Prime Computers PL/P ( Programming Language for Prime ), hvilket begge antyder IBMs PL/I ; og IBM's CP/CMS- operativsystem, som Kildall havde brugt, da han arbejdede på NPS. Denne omdøbning af CP/M var en del af en større indsats fra Kildall og hans kone sammen med forretningspartneren Dorothy McEwen for at omdanne Kildalls personlige projekt af CP/M og den Intel-kontrakterede PL/M compiler til en kommerciel virksomhed. The Kildals havde til hensigt at etablere Digital Research-mærket og dets produktlinjer som synonymt med "mikrocomputer" i forbrugerens sind, svarende til hvad IBM og Microsoft sammen senere med succes opnåede ved at gøre "personlig computer" synonymt med deres produkttilbud. Intergalactic Digital Research, Inc. blev senere omdøbt til Digital Research, Inc.

Indledende succes

Apple CP/M-kort med manual

I september 1981 havde Digital Research solgt mere end260 000 CP/M-licenser; InfoWorld udtalte, at det faktiske marked sandsynligvis var større på grund af underlicenser. Mange forskellige virksomheder producerede CP/M-baserede computere til mange forskellige markeder; bladet udtalte, at "CP/M er godt på vej til at etablere sig som operativsystemet til små computere" . Virksomhederne valgte at støtte CP/M på grund af deres store bibliotek af software. Xerox 820 kørte operativsystemet, fordi "hvor der bogstaveligt talt er tusindvis af programmer skrevet til det, ville det være uklogt ikke at udnytte det", sagde Xerox. (Xerox inkluderede en Howard W. Sams CP/M-manual som kompensation for Digital Researchs dokumentation, som InfoWorld i 1982 beskrev som grusom.) I 1984 brugte Columbia University den samme kildekode til at bygge Kermit- binære filer til mere end et dusin forskellige CP/ M-systemer plus en generisk version. Operativsystemet blev beskrevet som en " softwarebus ", der tillader flere programmer at interagere med forskellig hardware på en standardiseret måde. Programmer skrevet til CP/M var typisk bærbare mellem forskellige maskiner, og krævede normalt kun specifikation af escape-sekvenserne til kontrol af skærmen og printeren. Denne portabilitet gjorde CP/M populær, og meget mere software blev skrevet til CP/M end til operativsystemer, der kun kørte på ét hardwaremærke. En begrænsning af portabilitet var, at visse programmer brugte det udvidede instruktionssæt fra Z80-processoren og ikke ville fungere på en 8080- eller 8085-processor. En anden var grafikrutiner, især i spil og grafikprogrammer, som generelt var maskinspecifikke, da de brugte direkte hardwareadgang til hastighed, uden om OS og BIOS (dette var også et almindeligt problem i tidlige DOS-maskiner).

Bill Gates hævdede, at Apple II-serien med et Z-80 SoftCard var den mest populære CP/M-hardwareplatform. Mange forskellige mærker af maskiner kørte operativsystemet, nogle bemærkelsesværdige eksempler var Altair 8800 , IMSAI 8080 , Osborne 1 og Kaypro bagagebærerne og MSX -computere. Det bedst sælgende CP/M-kompatible system nogensinde var sandsynligvis Amstrad PCW . I Storbritannien var CP/M også tilgængelig på Research Machines undervisningscomputere (med CP/M-kildekoden udgivet som en uddannelsesressource) og til BBC Micro , når den var udstyret med en Z80 co-processor. Desuden var den tilgængelig til Amstrad CPC- serien, Commodore 128 , TRS-80 og senere modeller af ZX Spectrum . CP/M 3 blev også brugt på NIAT, en brugerdefineret håndholdt computer designet til AC Nielsens interne brug med 1  MB SSD - hukommelse.

Flerbruger

I 1979 blev et multi-user kompatibelt derivat af CP/M frigivet. MP/M tillod flere brugere at oprette forbindelse til en enkelt computer ved at bruge flere terminaler til at give hver bruger en skærm og et tastatur. Senere versioner kørte på 16-bit processorer.

CP/M Plus

CP/M Plus (CP/M 3) Systemvejledning

Den sidste 8-bit version af CP/M var version 3, ofte kaldet CP/M Plus, udgivet i 1983. Dens BDOS blev designet af Brown. Det inkorporerede bankskiftehukommelsesstyringen af ​​MP/M i et enkeltbruger-enkelt-opgave-operativsystem, der er kompatibelt med CP/M 2.2-applikationer. CP/M 3 kunne derfor bruge mere end 64 KB hukommelse på en 8080 eller Z80 processor. Systemet kunne konfigureres til at understøtte datostempling af filer. Operativsystemets distributionssoftware inkluderede også en flyttende assembler og linker. CP/M 3 var tilgængelig til den sidste generation af 8-bit computere, især Amstrad PCW , Amstrad CPC , ZX Spectrum +3 , Commodore 128 , MSX maskiner og Radio Shack TRS-80 Model 4 .

16-bit versioner

DEC PRO-CP/M-80 floppy-disk distribution til Z80-A co-processor i en DEC Professional 3xx serie

Der var også versioner af CP/M til nogle 16-bit CPU'er.

Den første version i 16-bit familien var CP/M-86 til Intel 8086 i november 1981. Kathryn Strutynski var projektleder for den udviklende CP/M-86 linje af operativsystemer. På dette tidspunkt blev den originale 8-bit CP/M kendt under retroonymet CP /M-80 for at undgå forvirring.

CP/M-86 forventedes at være standardoperativsystemet for de nye IBM-pc'er , men DRI og IBM var ude af stand til at forhandle udviklings- og licensvilkår. IBM henvendte sig til Microsoft i stedet, og Microsoft leverede PC DOS baseret på 86-DOS . Selvom CP/M-86 blev en mulighed for IBM PC'en, efter at DRI truede med sagsanlæg, overhalede den aldrig Microsofts system. De fleste kunder blev frastødt af den betydeligt højere pris, IBM tog for CP/M-86 over PC DOS ( henholdsvis 240 USD og 40 USD).

Da Digital Equipment Corporation (DEC) udgav Rainbow 100 for at konkurrere med IBM, kom den med CP/M-80 ved hjælp af en Z80-chip, CP/M-86 eller MS-DOS ved hjælp af en 8088 mikroprocessor eller CP/M- 86 /80 ved at bruge begge. Z80 og 8088 CPU'erne kørte samtidig. En fordel ved Rainbow var, at den kunne fortsætte med at køre 8-bit CP/M-software, hvilket bevarer en brugers muligvis betydelige investering, da de bevægede sig ind i 16-bit-verdenen af ​​MS-DOS. En lignende dual-processor tilpasning til CompuPro System 816  [ sr ] fik navnet CP/M 8-16 . CP/M-86-tilpasningen til den 8085/8088-baserede Zenith Z-100 understøttede også kørende programmer til begge dets CPU'er.

Kort efter CP/M-86 var en anden 16-bit version af CP/M CP/M-68K til Motorola 68000 . Den originale version af CP/M-68K i 1982 blev skrevet i Pascal/MT+68k , men den blev senere overført til C. CP/M-68K, der allerede kører på Motorola EXORmacs- systemerne, skulle oprindeligt bruges i Atari ST- computeren, men Atari besluttede at gå med et nyere diskoperativsystem kaldet GEMDOS . CP/M-68K blev også brugt på SORD M68 og M68MX computere.

I 1982 var der også en port fra CP/M-68K til 16-bit Zilog Z8000 til Olivetti M20 , skrevet i C , med navnet CP/M-8000 .

Disse 16-bit versioner af CP/M krævede, at applikationsprogrammer blev re-kompileret til de nye CPU'er. Nogle programmer skrevet i assemblersprog kan automatisk oversættes til en ny processor. Et værktøj til dette var Digital Researchs XLT86 , som oversatte .ASM-kildekoden til Intel 8080-processoren til .A86-kildekoden for Intel 8086. Oversætteren ville også optimere outputtet for kodestørrelse og tage sig af kaldekonventioner, så CP /M-80- og MP/M-80- programmer kan automatisk porteres til CP/M-86- og MP/M-86- platformene. XLT86 selv blev skrevet i PL/I-80 og var tilgængelig til CP/M-80 platforme såvel som til VAX/VMS .

Forskydning af MS-DOS

Mange forventede, at CP/M ville være standardoperativsystemet til 16-bit computere. I 1980 henvendte IBM sig til Digital Research, på Bill Gates ' forslag, for at licensere en kommende version af CP/M til sit nye produkt, IBM Personal Computer . Da det ikke lykkedes at opnå en underskrevet fortrolighedsaftale , mislykkedes forhandlingerne, og IBM indgik i stedet kontrakt med Microsoft om at levere et operativsystem. Det resulterende produkt, MS-DOS , begyndte snart at sælge mere end CP/M.

Mange af de grundlæggende begreber og mekanismer i tidlige versioner af MS-DOS lignede dem i CP/M. Interne elementer som filhåndteringsdatastrukturer var identiske, og begge refererede til diskdrev med et bogstav ( A:, B:, osv.). MS-DOS's vigtigste innovation var dets FAT- filsystem . Denne lighed gjorde det lettere at portere populær CP/M-software som WordStar og dBase . CP/M's koncept med separate brugerområder for filer på samme disk blev dog aldrig porteret til MS-DOS. Da MS-DOS havde adgang til mere hukommelse (da få IBM-pc'er blev solgt med mindre end 64 KB hukommelse, mens CP/M kunne køre i 16 KB om nødvendigt), blev der indbygget flere kommandoer i kommandolinjeskallen, hvilket gjorde MS -DOS noget hurtigere og lettere at bruge på floppy-baserede computere.

Selvom en af ​​de første perifere enheder til IBM PC'en var et SoftCard-lignende udvidelseskort, der lod den køre 8-bit CP/M-software, udtalte InfoWorld i 1984, at bestræbelserne på at introducere CP/M til hjemmemarkedet stort set havde været mislykkede, og de fleste CP/M-software var for dyrt for hjemmebrugere. I 1986 udtalte magasinet, at Kaypro havde stoppet produktionen af ​​8-bit CP/M-baserede modeller for at koncentrere sig om salg af MS-DOS-kompatible systemer, længe efter at de fleste andre leverandører havde ophørt med produktionen af ​​nyt udstyr og software til CP/M. CP/M mistede hurtigt markedsandele, da mikrocomputermarkedet flyttede til den IBM-kompatible platform, og det genvandt aldrig sin tidligere popularitet. Byte magazine, på det tidspunkt et af de førende branchemagasiner for mikrocomputere, holdt op med at dække CP/M-produkter inden for få år efter introduktionen af ​​IBM PC'en. For eksempel var der i 1983 stadig nogle få annoncer for S-100-tavler og artikler om CP/M-software, men i 1987 fandtes disse ikke længere i bladet.

Senere versioner af CP/M-86 gjorde betydelige fremskridt med hensyn til ydeevne og brugervenlighed og blev gjort kompatible med MS-DOS. For at afspejle denne kompatibilitet blev navnet ændret, og CP/M-86 blev til DOS Plus , som igen blev til DR-DOS .

ZCPR

ZCPR (Z80 Command Processor Replacement) blev introduceret den 2. februar 1982 som en drop-in erstatning for standarden Digital Research console command processor (CCP) og blev oprindeligt skrevet af en gruppe computerhobbyister, der kaldte sig "The CCP Group". De var Frank Wancho, Keith Petersen (arkivaren bag Simtel på det tidspunkt), Ron Fowler, Charlie Strom, Bob Mathias og Richard Conn. Richard var faktisk den drivende kraft i denne gruppe (som alle holdt kontakt via e-mail ).

ZCPR1 blev udgivet på en disk sat ud af SIG/M (Special Interest Group/Microcomputers), en del af Amateur Computer Club i New Jersey .

ZCPR2 blev udgivet den 14. februar 1983. Den blev udgivet som et sæt på ti diske fra SIG/M. ZCPR2 blev opgraderet til 2.3 og blev også udgivet i 8080-kode, hvilket tillader brugen af ​​ZCPR2 på 8080- og 8085-systemer.

ZCPR3 blev udgivet den 14. juli 1984, som et sæt på ni diske fra SIG/M. Koden til ZCPR3 kunne også kompileres (med reducerede funktioner) til 8080 og ville køre på systemer, der ikke havde den nødvendige Z80 mikroprocessor. Funktioner i ZCPR fra version 3 inkluderede skaller, aliaser, I/O-omdirigering, flowkontrol, navngivne mapper, søgestier, brugerdefinerede menuer, adgangskoder og onlinehjælp. I januar 1987 stoppede Richard Conn med at udvikle ZCPR, og Echelon bad Jay Sage (som allerede havde en privat forbedret ZCPR 3.1) om at fortsætte arbejdet med det. Således blev ZCPR 3.3 udviklet og frigivet. ZCPR 3.3 understøttede ikke længere 8080-serien af ​​mikroprocessorer og tilføjede de fleste funktioner fra enhver opgradering i ZCPR-serien. ZCPR 3.3 inkluderede også et komplet supplement af hjælpeprogrammer med betydeligt udvidede muligheder. Selvom ZCPR var entusiastisk støttet af datidens CP/M-brugerbase, var ZCPR alene utilstrækkelig til at bremse CP/Ms død.

Hardware model

Sanco 8001 computer, kører under CP/M 2.2 (1982)
CP/M patron til Commodore 64

Et minimalt 8-bit CP/M-system ville indeholde følgende komponenter:

  • En computerterminal , der bruger ASCII- tegnsættet
  • En Intel 8080 (og senere 8085) eller Zilog Z80 mikroprocessor
    • NEC V20- og V30- processorerne understøtter en 8080-emuleringstilstand, der kan køre 8-bit CP/M på en PC DOS/MS-DOS-computer, der er udstyret således, selvom enhver pc også kan køre 16-bit CP/M-86.
  • Mindst 16 kilobyte RAM , begyndende ved adresse 0
  • Et middel til at bootstrap den første sektor af disketten
  • Mindst et diskettedrev

Det eneste hardwaresystem, som CP/M, som solgt af Digital Research, ville understøtte, var Intel 8080 Development System. Producenter af CP/M-kompatible systemer tilpassede dele af operativsystemet til deres egen kombination af installeret hukommelse, diskdrev og konsolenheder. CP/M ville også køre på systemer baseret på Zilog Z80-processoren, da Z80 var kompatibel med 8080-kode. Mens den Digital Research distribuerede kerne af CP/M (BDOS, CCP, kernetransientkommandoer) ikke brugte nogen af ​​de Z80-specifikke instruktioner, brugte mange Z80-baserede systemer Z80-kode i den systemspecifikke BIOS, og mange applikationer var dedikeret til Z80-baserede CP/M-maskiner.

Digital Research gik efterfølgende sammen med Zilog og American Microsystems for at producere Personal CP/M, en ROM-baseret version af operativsystemet rettet mod billigere systemer, der potentielt kunne udstyres uden diskdrev. Personal CP/M blev først vist i Sharp MZ-800, et kassettebaseret system med valgfrie diskdrev. Personal CP/M blev beskrevet som at være blevet "omskrevet for at drage fordel af det forbedrede Z-80 instruktionssæt" i modsætning til at bevare portabiliteten med 8080 American Microsystems annoncerede en Z80-kompatibel mikroprocessor, S83, med 8 KB in-pack ROM til operativsystemet og BIOS, sammen med omfattende logik til interfacing med 64-kilobit dynamiske RAM-enheder.

På de fleste maskiner var bootstrap en minimal bootloader i ROM kombineret med nogle midler til minimalt bankskifte eller et middel til at indsprøjte kode på bussen (da 8080'eren skal se boot-koden på adresse 0 for opstart, mens CP/M har brug for RAM der); for andre skulle denne bootstrap indtastes i hukommelsen ved hjælp af frontpanelkontroller, hver gang systemet blev startet.

CP/M brugte 7-bit ASCII-sættet. De andre 128 tegn muliggjort af 8-bit byten var ikke standardiserede. For eksempel brugte en Kaypro dem til græske tegn, og Osborne -maskiner brugte det 8. bitsæt til at angive et understreget tegn. WordStar brugte den 8. bit som en slutningsmarkør. Internationale CP/M-systemer brugte oftest ISO 646- normen for lokaliserede tegnsæt, og erstattede visse ASCII-tegn med lokaliserede tegn i stedet for at tilføje dem ud over 7-bit-grænsen.

Komponenter

I 8-bit versionerne, mens det kører, havde CP/M-operativsystemet indlæst i hukommelsen tre komponenter:

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

BIOS'en og BDOS'en var hukommelsesresident, mens CCP'en var hukommelsesresident, medmindre den blev overskrevet af en applikation, i hvilket tilfælde den automatisk blev genindlæst, efter at applikationen var færdig med at køre. Der blev også leveret en række forbigående kommandoer til standardværktøjer. De forbigående kommandoer lå i filer med filtypenavnet .COM på disken.

BIOS'en styrede direkte andre hardwarekomponenter end CPU'en og hovedhukommelsen. Det indeholdt funktioner såsom tegninput og -output og læsning og skrivning af disksektorer. BDOS implementerede CP/M -filsystemet og nogle input/output-abstraktioner (såsom omdirigering) oven på BIOS. CCP'et tog brugerkommandoer og udførte dem enten direkte (interne kommandoer såsom DIR for at vise en mappe eller ERA for at slette en fil) eller indlæste og startede en eksekverbar fil med det givne navn (forbigående kommandoer såsom PIP.COM til at kopiere filer eller STAT.COM for at vise forskellige fil- og systemoplysninger). Tredjepartsapplikationer til CP/M var også i det væsentlige forbigående kommandoer.

BDOS-, CCP- og standardtransientkommandoer var de samme i alle installationer af en bestemt revision af CP/M, men BIOS-delen var altid tilpasset den bestemte hardware.

Tilføjelse af hukommelse til en computer betød f.eks., at CP/M-systemet skulle geninstalleres for at tillade transiente programmer at bruge den ekstra hukommelsesplads. Et hjælpeprogram (MOVCPM) blev forsynet med systemdistribution, der gjorde det muligt at flytte objektkoden til forskellige hukommelsesområder. Hjælpeprogrammet justerede adresserne i absolutte spring- og subrutineopkaldsinstruktioner til nye adresser, der kræves af den nye placering af operativsystemet i processorhukommelsen. Denne nyligt korrigerede version kunne derefter gemmes på en ny disk, hvilket tillader applikationsprogrammer at få adgang til den ekstra hukommelse, der stilles til rådighed ved at flytte systemkomponenterne. Når det var installeret, blev operativsystemet (BIOS, BDOS og CCP) gemt i reserverede områder i begyndelsen af ​​enhver disk, som ville blive brugt til at starte systemet op. Ved opstart vil bootloaderen (normalt indeholdt i en ROM-firmwarechip) indlæse operativsystemet fra disken i drevet A:.

Efter moderne standarder var CP/M primitiv på grund af de ekstreme begrænsninger på programstørrelse. Med version 1.0 var der ingen mulighed for at detektere en ændret disk. Hvis en bruger skiftede diske uden manuelt at genlæse diskbiblioteket, ville systemet skrive på den nye disk ved hjælp af den gamle disks biblioteksinformation, hvilket ødelægger de data, der er gemt på disken. Fra version 1.1 eller 1.2 og fremefter vil en ændring af en disk og derefter forsøge at skrive til den, før dens bibliotek blev læst, medføre, at der signaleres en fatal fejl. Dette undgik at overskrive disken, men krævede en genstart og tab af de data, der skulle gemmes på disken.

Størstedelen af ​​kompleksiteten i CP/M var isoleret i BDOS og i mindre grad CCP og forbigående kommandoer. Dette betød, at ved at portere det begrænsede antal simple rutiner i BIOS til en bestemt hardwareplatform, ville hele OS fungere. Dette reducerede markant den nødvendige udviklingstid til at understøtte nye maskiner, og var en af ​​hovedårsagerne til CP/M's udbredte brug. I dag er denne form for abstraktion fælles for de fleste OS'er (et hardwareabstraktionslag ), men på tidspunktet for CP/M's fødsel var OS'er typisk beregnet til kun at køre på én maskinplatform, og flerlagsdesign blev anset for unødvendigt.

Konsol kommandoprocessor

Skærmbillede, der viser en CP/M 3.0-mappeliste ved hjælp af DIRkommandoen på en Commodore 128 hjemmecomputer

Console Command Processor, eller CCP, accepterede input fra tastaturet og formidlede resultater til terminalen. CP/M selv ville fungere med enten en printterminal eller en videoterminal. Alle CP/M-kommandoer skulle indtastes på kommandolinjen . Konsollen vil oftest vise A>prompten for at angive det aktuelle standarddiskdrev. Når det bruges sammen med en videoterminal, vil dette normalt blive efterfulgt af en blinkende markør leveret af terminalen. CCP'en ville afvente input fra brugeren. En intern CCP-kommando med formen drevbogstav efterfulgt af et kolon kan bruges til at vælge standarddrevet. Hvis du f.eks. indtaster B:og trykker på enter ved kommandoprompten, ændres standarddrevet til B, og kommandoprompten vil så blive B>til at angive denne ændring.

CP/M's kommandolinjegrænseflade var mønstret efter operativsystemerne fra Digital Equipment , såsom RT-11 til PDP-11 og OS/8 til PDP-8 . Kommandoer havde form af et nøgleord efterfulgt af en liste over parametre adskilt af mellemrum eller specialtegn. I lighed med en indbygget Unix-skal , hvis en intern kommando blev genkendt, blev den udført af CCP'et selv. Ellers ville den forsøge at finde en eksekverbar fil på det aktuelt loggede diskdrev og (i senere versioner) brugerområde, indlæse den og sende den eventuelle yderligere parametre fra kommandolinjen. Disse blev omtalt som "forbigående" programmer. Ved afslutningen ville CP/M genindlæse den del af CCP'en, der var blevet overskrevet af applikationsprogrammer - dette tillod forbigående programmer en større hukommelsesplads.

Selve kommandoerne kunne nogle gange være uklare. For eksempel blev kommandoen til at duplikere filer navngivet PIP(Peripheral-Interchange-Program), navnet på det gamle DEC- værktøj, der blev brugt til det formål. Formatet af parametre, der blev givet til et program, var ikke standardiseret, så der var ikke et enkelt valgtegn, der adskilte indstillinger fra filnavne. Forskellige programmer kunne og brugte forskellige tegn.

CP/M-konsollens kommandoprocessor inkluderer DIR , ERA , REN , SAVE , TYPE og USER som indbyggede kommandoer . Forbigående kommandoer i CP/M inkluderer ASM , DDT , DUMP , ED , LOAD , MOVCPM  [ pl ] , PIP , STAT , SUBMIT og SYSGEN .

CP/M Plus (CP/M Version 3) inkluderer DIR (vis liste over filer fra en mappe undtagen dem, der er markeret med SYS-attributten), DIRSYS / DIRS (listefiler markeret med SYS-attributten i mappen), ERASE / ERA ( slet en fil), RENAME / REN (omdøb en fil), TYPE / TYP (viser indholdet af en ASCII-tegnfil) og USER / USE (skift brugernummer) som indbyggede kommandoer: CP/M 3 giver brugeren mulighed for at forkorte de indbyggede kommandoer. Forbigående kommandoer i CP/M 3 inkluderer COPYSYS , DATE , DEVICE , DUMP , ED , GET , HELP , HEXCOM , INITDIR , LINK , MAC , PIP , PUT , RMAC , SET , SETDEF , SHOW , SID , og ​​X SUB .

Grundlæggende diskoperativsystem

Basic Disk Operating System, eller BDOS, gav adgang til sådanne handlinger som åbning af en fil, output til konsollen eller udskrivning. Applikationsprogrammer vil indlæse processorregistre med en funktionskode for operationen og adresser til parametre eller hukommelsesbuffere og kalde en fast adresse i hukommelsen. Da adressen var den samme uafhængigt af mængden af ​​hukommelse i systemet, ville applikationsprogrammer køre på samme måde for enhver type eller konfiguration af hardware.

Basic Input Output System

CP/M-annonce i 11. december 1978-udgaven af ​​magasinet InfoWorld

Basic Input Output System eller BIOS, forsynede med det laveste niveau af funktioner, der kræves af operativsystemet.

Disse omfattede læsning eller skrivning af enkelte tegn til systemkonsollen og læsning eller skrivning af en sektor af data fra disken. BDOS'et håndterede noget af bufferlagringen af ​​data fra disketten, men før CP/M 3.0 antog det en disksektorstørrelse fastsat til 128 bytes, som brugt på 8-tommers disketter med enkeltdensitet . Da de fleste 5,25-tommer diskformater brugte større sektorer, blev blokering og deblokering og styring af et diskbufferområde håndteret af modelspecifik kode i BIOS.

Tilpasning var påkrævet, fordi hardwarevalg ikke var begrænset af kompatibilitet med nogen populær standard. For eksempel brugte nogle producenter en separat computerterminal, mens andre designede et indbygget integreret videodisplaysystem. Serielporte til printere og modemer kunne bruge forskellige typer UART- chips, og portadresserne blev ikke fastsat. Nogle maskiner brugte hukommelseskortet I/O i stedet for 8080 I/O-adresserummet. Alle disse variationer i hardwaren blev skjult for andre moduler i systemet ved brug af BIOS, som brugte standardindgangspunkter for de tjenester, der kræves for at køre CP/M, såsom karakter I/O eller adgang til en diskblok. Da understøttelse af seriel kommunikation til et modem var meget rudimentær i BIOS eller kan have været fraværende helt, var det almindelig praksis, at CP/M-programmer, der brugte modemer, havde et brugerinstalleret overlay, der indeholdt al den kode, der kræves for at få adgang til en bestemt maskine. serie Port.

Ansøgninger

Fordeling 5+1⁄4 - tommers disketter og emballage til den sidste version (version 4) af WordStar tekstbehandlingsprogram udgivet til 8-bit CP/M

WordStar , en af ​​de første udbredte tekstbehandlere , og dBase , et tidligt og populært databaseprogram til mikrocomputere, blev oprindeligt skrevet til CP/M. To tidlige outliners , KAMAS (Knowledge and Mind Amplification System) og dets nedskæringsefterfølger Out-Think (uden programmeringsfaciliteter og ombygget til 8080/V20-kompatibilitet) blev også skrevet til CP/M, men senere omskrevet til MS-DOS. Turbo Pascal , forfaderen til Borland Delphi , og Multiplan , forfaderen til Microsoft Excel , debuterede også på CP/M, før MS-DOS-versioner blev tilgængelige. VisiCalc , det første regnearksprogram nogensinde, blev gjort tilgængeligt for CP/M. Et andet firma, Sorcim , skabte sit SuperCalc- regneark til CP/M, som ville fortsætte med at blive markedsleder og de facto standard på CP/M. Supercalc ville fortsætte med at være en konkurrent på regnearksmarkedet i MS-DOS-verdenen. AutoCAD , en CAD-applikation fra Autodesk debuterede på CP/M. Et væld af compilere og tolke til datidens populære programmeringssprog (såsom BASIC , Borlands Turbo Pascal , FORTRAN og endda PL/I ) var tilgængelige, blandt dem flere af de tidligste Microsoft- produkter .

CP/M-software kom ofte med installationsprogrammer , der tilpassede den til en lang række computere. Kildekoden til BASIC-programmer var let tilgængelig, og de fleste former for kopibeskyttelse var ineffektive på operativsystemet. En Kaypro II-ejer ville for eksempel anskaffe software i Xerox 820-format og derefter kopiere det til og køre det fra diske i Kaypro-format.

Manglen på standardiseret grafik understøtter begrænsede videospil , men forskellige karakter- og tekstbaserede spil blev porteret , såsom Telengard , Gorillas , Hamurabi , Lunar Lander , sammen med tidlig interaktiv fiktion , herunder Zork- serien og Colossal Cave Adventure . Teksteventyrspecialist Infocom var en af ​​de få udgivere, der konsekvent udgav deres spil i CP/M-format . Lifeboat Associates begyndte at indsamle og distribuere brugerskrevet "gratis" software. En af de første var XMODEM , som tillod pålidelige filoverførsler via modem og telefonlinje. Et andet program, der er hjemmehørende i CP/M, var outline-processoren KAMAS .

Forbigående programområde

Læse-/skrivehukommelsen mellem adresse 0100 hexadecimal og den laveste adresse på BDOS var det transiente programområde (TPA), der er tilgængeligt for CP/M-applikationsprogrammer. Selvom alle Z80- og 8080-processorer kunne adressere 64 kilobyte hukommelse, kan mængden til rådighed for applikationsprogrammer variere afhængigt af designet af den pågældende computer. Nogle computere brugte store dele af adresserummet til f.eks. BIOS ROM'er eller videoskærmhukommelse. Som følge heraf havde nogle systemer mere TPA-hukommelse tilgængelig end andre. Bankskifte var en almindelig teknik, der gjorde det muligt for systemer at have en stor TPA, mens de skiftede ROM eller videohukommelsesplads efter behov. CP/M 3.0 tillod også, at dele af BDOS'en var i bank-switched hukommelse.

Debugging applikation

CP/M kom med et Dynamic Debugging Tool, kaldet DDT (efter insekticidet, dvs. en bug -killer), som tillod hukommelses- og programmoduler at blive undersøgt og manipuleret, og tillod et program at blive eksekveret et trin ad gangen.

Beboerprogrammer

CP/M understøttede oprindeligt ikke det, der svarer til TSR-programmer ( terminate and stay resident ) som under DOS. Programmører kunne skrive software, der kunne opsnappe visse operativsystemopkald og udvide eller ændre deres funktionalitet. Ved at bruge denne funktion udviklede og solgte programmører hjælpeprogrammer til skrivebordstilbehør , såsom SmartKey , et tastaturværktøj til at tildele enhver streng af bytes til enhver tast. CP/M 3 tilføjede dog understøttelse af dynamisk indlæsbare Resident System Extensions (RSX). En såkaldt null-kommandofil kunne bruges til at tillade CCP at indlæse en RSX uden et forbigående program. Lignende løsninger som RSM'er (til Resident System Modules ) blev også eftermonteret til CP/M 2.2-systemer af tredjeparter.

Software installation

Selvom CP/M leverede en vis hardwareabstraktion for at standardisere grænsefladen til disk I/O eller konsol I/O, krævede applikationsprogrammer stadig typisk installation for at gøre brug af alle funktionerne i sådant udstyr som printere og terminaler. Disse blev ofte styret af flugtsekvenser , som skulle ændres for forskellige enheder. For eksempel ville escape-sekvensen for at vælge fed skrift på en printer have været forskellig blandt producenter og nogle gange blandt modeller inden for en producents udvalg. Denne procedure blev ikke defineret af operativsystemet; en bruger vil typisk køre et installationsprogram, der enten tillader valg fra en række enheder, eller tillader funktion-for-funktion redigering af de escape-sekvenser, der kræves for at få adgang til en funktion. Dette skulle gentages for hvert applikationsprogram, da der ikke var nogen central operativsystemtjeneste til rådighed for disse enheder.

Initialiseringskoderne for hver printermodel skulle skrives ind i applikationen. For at bruge et program som Wordstar med mere end én printer (f.eks. en hurtig dot-matrix printer eller en langsommere, men præsentationskvalitet daisy wheel printer), skulle en separat version af Wordstar forberedes, og man skulle indlæse Wordstar version, der svarede til den valgte printer (og afsluttes og genindlæses for at skifte printer).

Diskformater

IBM System/34 og IBM 3740 's single-density, single-sided format er CP/M's standard 8-tommer floppy-disk format . Der findes ikke noget standard 5,25-tommer CP/M-diskformat, hvor Kaypro, Morrow Designs , Osborne og andre bruger hver deres. InfoWorld vurderede i september 1981, at "omkring to dusin formater var populære nok til, at softwareskabere måtte overveje dem for at nå det bredest mulige marked". JRT Pascal , for eksempel, leverede versioner på 5,25-tommers disk til North Star , Osborne, Apple, Heath hård sektor og blød sektor , og Superbrain , og en 8-tommer version. Ellis Computing tilbød også sin software til begge Heath-formater og 16 andre 5,25-tommer formater inklusive to forskellige TRS-80 CP/M-modifikationer.

Visse diskformater var mere populære end andre. Det meste software var tilgængeligt i Xerox 820-formatet, og andre computere såsom Kaypro II var kompatible med det. Ingen enkelt producent herskede dog i 5,25-tommers æra med CP/M-brug, og diskformater var ofte ikke bærbare mellem hardwareproducenter. En softwareproducent skulle udarbejde en separat version af programmet for hvert hardwaremærke, det skulle køre på. Hos nogle producenter (Kaypro er et eksempel), var der ikke engang standardisering på tværs af virksomhedens forskellige modeller. På grund af denne situation blev diskformatoversættelsesprogrammer, som gjorde det muligt for en maskine at læse mange forskellige formater, populære og reducerede forvirringen, ligesom programmer som Kermit, der tillod overførsel af data og programmer fra én maskine til en anden ved hjælp af de serielle porte , der de fleste CP/M-maskiner havde.

Forskellige formater blev brugt afhængigt af særlige systemers egenskaber og til en vis grad designernes valg. CP/M-understøttede muligheder for at kontrollere størrelsen af ​​reserverede områder og biblioteksområder på disken, og kortlægningen mellem logiske disksektorer (som set af CP/M-programmer) og fysiske sektorer som allokeret på disken. Der var mange måder at tilpasse disse parametre til hvert system, men når de var blevet indstillet, eksisterede der ingen standardiseret måde for et system at indlæse parametre fra en disk formateret på et andet system.

Graden af ​​portabilitet mellem forskellige CP/M-maskiner afhang af typen af ​​diskdrev og controller, der blev brugt, da der eksisterede mange forskellige diskettetyper i CP/M-æraen i både 8-tommer og 5,25-tommer format. Diske kan være hårde eller bløde sektorer, enkelt eller dobbelt tæthed, enkelt eller dobbeltsidet, 35 spor, 40 spor, 77 spor eller 80 spor, og sektorlayoutet, størrelsen og interleave kan også variere meget. Selvom oversættelsesprogrammer kunne give brugeren mulighed for at læse disktyper fra forskellige maskiner, var drevtypen og controlleren også faktorer. I 1982 var bløde, enkeltsidede 40-spors 5,25-tommers diske blevet det mest populære format at distribuere CP/M-software på, da de blev brugt af datidens mest almindelige maskiner på forbrugerniveau, som f.eks. Apple II, TRS-80, Osborne 1, Kaypro II og IBM PC. Et oversættelsesprogram tillod brugeren at læse alle diske på sin maskine, der havde et lignende format - for eksempel kunne Kaypro II læse TRS-80 , Osborne , IBM PC og Epson diske. Andre disktyper som f.eks. 80 spor eller hårde sektorer var fuldstændig umulige at læse. Den første halvdel af dobbeltsidede diske (som dem på Epson QX-10) kunne læses, fordi CP/M fik adgang til diskspor sekventielt med spor 0 som det første (yderste) spor på side 1 og spor 79 (på en 40- track disk) er det sidste (inderste) spor på side 2. Apple II-brugere var ikke i stand til at bruge andet end Apples GCR-format og var derfor nødt til at anskaffe CP/M-software på Apple-formatdiske eller overføre det via serielt link.

Det fragmenterede CP/M-marked, der kræver, at distributører enten lagerfører flere formater af diske eller investerer i multiformat duplikeringsudstyr, sammenlignet med de mere standardiserede IBM PC- diskformater, var en medvirkende årsag til den hurtige forældelse af CP/M efter 1981.

En af de sidste bemærkelsesværdige CP/M-kompatible maskiner, der dukkede op, var Commodore 128 i 1985, som havde en Z80 til CP/M-understøttelse ud over dens oprindelige tilstand ved hjælp af en 6502-afledt CPU. Brug af CP/M krævede enten et 1571 eller 1581 diskdrev, som kunne læse soft-sektor 40-spors MFM -format diske.

Den første computer, der brugte et 3,5-tommers diskettedrev, Sony SMC-70 , kørte CP/M 2.2. Commodore 128 , Bondwell-2 bærbare, Micromint/Ciarcia SB-180, MSX og TRS-80 Model 4 (der kører Montezuma CP/M 2.2) understøttede også brugen af ​​CP/M med 3,5-tommers disketter. CP/AM, Applied Engineerings version af CP/M til Apple II, understøttede også 3,5-tommers diske (samt RAM-diske på RAM-kort, der er kompatible med Apple II Memory Expansion Card). Amstrad PCW kørte CP/M ved hjælp af 3-tommer diskettedrev i starten og skiftede senere til 3,5 tommers drev.

Filsystem

Filnavne blev angivet som en streng på op til otte tegn efterfulgt af et punktum efterfulgt af en filtypenavn på op til tre tegn ( "8.3" filnavnformat ). Udvidelsen identificerede normalt filens type. For eksempel .COMangivet en eksekverbar programfil og .TXTangivet en fil indeholdende ASCII- tekst. Tegn i filnavne indtastet ved kommandoprompten blev konverteret til store bogstaver, men dette blev ikke håndhævet af operativsystemet. Programmer ( MBASIC er et bemærkelsesværdigt eksempel) var i stand til at oprette filnavne indeholdende små bogstaver, som så ikke nemt kunne refereres til på kommandolinjen.

Hvert diskdrev blev identificeret med et drevbogstav , for eksempel drev Aog drev B. For at henvise til en fil på et bestemt drev blev drevbogstavet sat foran filnavnet, adskilt af et kolon, f.eks A:FILE.TXT. Uden drevbogstav foranstillet var adgang til filer på det aktuelle standarddrev.

Filstørrelsen blev angivet som antallet af 128-byte- poster (svarende direkte til disksektorer på 8-tommers drev) optaget af en fil på disken. Der var ingen generelt understøttet måde at angive byte-eksakte filstørrelser. Den aktuelle størrelse på en fil blev vedligeholdt i filens filkontrolblok (FCB) af operativsystemet. Da mange applikationsprogrammer (såsom teksteditorer ) foretrækker at behandle filer som sekvenser af tegn i stedet for som sekvenser af poster, blev tekstfiler efter konvention afsluttet med et kontrol-Z- tegn ( ASCII SUB , hexadecimal 1A). Bestemmelse af slutningen af ​​en tekstfil involverede derfor at undersøge den sidste post i filen for at finde den afsluttende kontrol-Z. Dette betød også, at indsættelse af et kontrol-Z-tegn i midten af ​​en fil normalt havde den effekt, at filens tekstindhold blev afkortet.

Med fremkomsten af ​​større flytbare og faste diskdrev blev der anvendt formler til diskafblokering, hvilket resulterede i flere diskblokke pr. logisk filallokeringsblok. Selvom dette gav mulighed for større filstørrelser, betød det også, at den mindste fil, der kunne tildeles, øgedes i størrelse fra 1  KB (på enkeltdensitetsdrev) til 2 KB (på dobbeltdensitetsdrev) og så videre, op til 32 KB for en fil, der kun indeholder en enkelt byte. Dette gav ineffektiv brug af diskplads, hvis disken indeholdt et stort antal små filer.

Tidsstempler for filændringer blev ikke understøttet i udgivelser op til CP/M 2.2, men var en valgfri funktion i MP/M og CP/M 3.0.

CP/M 2.2 havde ingen undermapper i filstrukturen, men gav 16 nummererede brugerområder til at organisere filer på en disk. For at skifte bruger skulle man blot skrive "Bruger X" ved kommandoprompten, hvor X er brugernummeret. Sikkerhed var ikke-eksisterende og anses for unødvendig på en personlig computer. Brugerområdekonceptet var at gøre single-user-versionen af ​​CP/M noget kompatibel med multi-user MP/M-systemer. En fælles patch til CP/M og afledte operativsystemer var at gøre ét brugerområde tilgængeligt for brugeren uafhængigt af det aktuelt indstillede brugerområde. En USER-kommando gjorde det muligt at ændre brugerområdet til et hvilket som helst område fra 0 til 15. Bruger 0 var standard. Hvis man skiftede til en anden bruger, såsom BRUGER 1, ville det materiale, der er gemt på disken for denne bruger, kun være tilgængeligt for BRUGER 1; BRUGER 2 ville ikke være i stand til at se den eller få adgang til den. Filer gemt i USER 0-området var dog tilgængelige for alle andre brugere; deres placering blev angivet med en indledende sti , da filerne i BRUGER 0 kun var synlige for nogen, der var logget ind som BRUGER 0. Brugerområde-funktionen havde uden tvivl lidt nytte på små disketter, men den var nyttig til at organisere filer på maskiner med harddisk kører . Hensigten med funktionen var at lette brugen af ​​den samme computer til forskellige opgaver. For eksempel kunne en sekretær foretage dataindtastning , og derefter, efter at have skiftet BRUGER-område, kunne en anden medarbejder bruge maskinen til at udføre fakturering uden at deres filer blandes sammen.

Grafik

MBASIC- tekstoutput vist på en monokrom skærm, der er typisk for det tidspunkt

Selvom grafikkompatible S-100-systemer eksisterede fra kommercialiseringen af ​​S-100-bussen , leverede CP/M ikke nogen standardiseret grafikunderstøttelse før 1982 med GSX (Graphics System Extension). På grund af den lille mængde tilgængelig hukommelse, var grafik aldrig en almindelig funktion forbundet med 8-bit CP/M-operativsystemer. De fleste systemer kunne kun vise rudimentære ASCII- grafikdiagrammer og -diagrammer i teksttilstand eller ved at bruge et brugerdefineret tegnsæt . Nogle computere i Kaypro- linjen og TRS-80 Model 4 havde videohardware, der understøttede blokgrafiske tegn, og disse var tilgængelige for assembler-programmører og BASIC-programmører ved hjælp af CHR$-kommandoen. Model 4 kunne vise 640 gange 240 pixel grafik med et valgfrit højopløsningskort.

Derivater

CP/M-afledt SCP kører på en østtysk robotron PC 1715
CP/J version 2.21 kører på en Elwro 804 Junior

En række CP/M-80-derivater eksisterede i den tidligere østblok under forskellige navne, herunder 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 og andre. Der var også CP/M-86-derivater ved navn SCP1700 , CP/K og K8918-OS . De blev produceret af det østtyske VEB Robotron m.fl.

Eftermæle

En række adfærd udvist af Microsoft Windows er et resultat af bagudkompatibilitet med MS-DOS, som igen forsøgte en vis bagudkompatibilitet med CP/M. Drevbogstavet og 8.3 filnavnekonventioner i MS-DOS (og tidlige Windows - versioner) blev oprindeligt overtaget fra CP/M. De matchende jokertegn , der bruges af Windows (? og *), er baseret på dem i CP/M, ligesom de reserverede filnavne, der bruges til at omdirigere output til en printer ("PRN:") og konsollen ( "CON:"). Drevnavnene A og B blev brugt til at betegne de to diskettedrev, som CP/M-systemer typisk brugte; når harddiske dukkede op, blev de betegnet C, som overlevede i MS-DOS som kommandoprompt . Kontroltegnet , der markerer slutningen af ​​nogle tekstfiler, kan også tilskrives CP/M. Forskellige kommandoer i DOS blev modelleret efter CP/M-kommandoer; nogle af dem bar endda det samme navn, som DIR, REN/RENAME eller TYPE (og ERA/ERASE i DR-DOS). Filtypenavne som eller bruges stadig til at identificere filtyper på mange operativsystemer. C:\>^Z.TXT.COM

I 1997 og 1998 udgav Caldera nogle CP/M 2.2-binære filer og kildekode under en open source-licens , hvilket også muliggjorde omfordeling og modifikation af yderligere indsamlede digitale forskningsfiler relateret til CP/M- og MP/M-familierne gennem Tim Olmsteads "The Uofficielt CP/M-websted" siden 1997. Efter Olmsteads død den 12. september 2001 blev distributionslicensen opdateret og udvidet af Lineo , som i mellemtiden var blevet ejer af disse Digital Research-aktiver, den 19. oktober 2001. I oktober 2014 til Markerer 40-året for den første præsentation af CP/M, udgav Computerhistorisk Museum tidlige kildekodeversioner af CP/M.

Fra 2018 er der en række aktive vintage-, hobby- og retrocomputerfolk og -grupper og nogle små kommercielle virksomheder, der stadig udvikler og understøtter computerplatforme, der bruger CP/M (for det meste 2.2) som værtsoperativsystem.

Se også

Referencer

Yderligere læsning

eksterne links