CP/M -CP/M

CP/M
CPM-86.png
Uma captura de tela do CP/M-86
Desenvolvedor Pesquisa Digital, Inc. , Gary Kildall
Escrito em PL/M , Linguagem Assembly
estado de trabalho Histórico
Modelo de origem Originalmente de código fechado , agora de código aberto
lançamento inicial 1974 ; 49 anos atrás ( 1974 )
Último lançamento 3.1/1983 ; 40 anos atrás ( 1983 )
Disponível em Inglês
Método de atualização Reinstalação
Gerenciador de pacotes Nenhum
plataformas Intel 8080 , Intel 8085 , Zilog Z80 , Zilog Z8000 , Intel 8086 , Motorola 68000
tipo de kernel kernel monolítico
Influenciado por RT-11 , OS/8

Interface de usuário padrão
Interface de linha de comando (CCP.COM)
Licença Originalmente proprietário , agora semelhante ao BSD
Sucedido por MP/M , CP/M-86
Website oficial Página de pesquisa digital CP/M

CP /M , originalmente significando Control Program/Monitor e mais tarde Control Program for Microcomputers , é um sistema operacional de mercado de massa criado em 1974 para microcomputadores baseados em Intel 8080/85 por Gary Kildall da Digital Research, Inc. executando tarefas em processadores de 8 bits e não mais que 64 kilobytes de memória, as versões posteriores do CP/M adicionaram variações multiusuário e foram migradas para processadores de 16 bits .

A combinação de computadores de barramento CP/M e S-100 tornou-se um padrão inicial na indústria de microcomputadores. Essa plataforma de computador foi amplamente usada nos negócios no final da década de 1970 e em meados da década de 1980. O CP/M aumentou o tamanho do mercado tanto para hardware quanto para software, reduzindo consideravelmente a quantidade de programação necessária para instalar um aplicativo no computador de um novo fabricante. Um importante impulsionador da inovação de software foi o advento de microcomputadores (comparativamente) de baixo custo rodando CP/M, pois programadores independentes e hackers os compravam e compartilhavam suas criações em grupos de usuários . O CP/M acabou sendo substituído pelo DOS após a introdução do IBM PC em 1981 .

História

Anúncio do CP/M na edição de 29 de novembro de 1982 da revista InfoWorld

História antiga

Gary Kildall desenvolveu originalmente o CP/M em 1974, como um sistema operacional para rodar em um sistema de desenvolvimento Intel Intellec-8 , equipado com uma unidade de disquete Shugart Associates de 8 polegadas conectada por meio de um controlador de disquete personalizado . Foi escrito no próprio PL/M ( Linguagem de Programação para Microcomputadores ) de Kildall. Vários aspectos do CP/M foram influenciados pelo sistema operacional TOPS-10 do computador mainframe DECsystem-10 , que Kildall usou como ambiente de desenvolvimento. Um dos primeiros licenciados externos do CP/M foi a Gnat Computers , um dos primeiros desenvolvedores de microcomputadores de San Diego, Califórnia . Em 1977, a empresa obteve a licença para usar o CP/M 1.0 para qualquer micro que desejasse por US$ 90. Em um ano, a demanda por CP/M foi tão alta que a Digital Research conseguiu aumentar a licença para dezenas de milhares de dólares.

Sob a direção de Kildall, o desenvolvimento do CP/M 2.0 foi realizado principalmente por John Pierce em 1978. Kathryn Strutynski , uma amiga de Kildall da Naval Postgraduate School (NPS), tornou-se a quarta funcionária da Digital Research Inc. Ela começou depurando o CP/M 2.0 e, posteriormente, tornou-se influente como principal desenvolvedora do CP/M 2.2 e do CP/M Plus. Outros desenvolvedores iniciais da base CP/M incluíram Robert "Bob" Silberstein e David "Dave" K. Brown.

CP/M originalmente significava "Control Program/Monitor", um nome que implica um monitor residente — um precursor primitivo do sistema operacional. No entanto, durante a conversão do CP/M em um produto comercial, documentos de registro de marca arquivados em novembro de 1977 deram ao produto o nome de "Programa de Controle para Microcomputadores". O nome CP/M segue um esquema de nomenclatura predominante na época, como na linguagem PL/M de Kildall e PL/P ( Linguagem de Programação para Prime ) da Prime Computer , ambas sugerindo a PL/I da IBM ; e o sistema operacional CP/CMS da IBM , que Kildall havia usado quando trabalhava no NPS. Essa renomeação de CP/M foi parte de um esforço maior de Kildall e sua esposa com a parceira de negócios, Dorothy McEwen, para converter o projeto pessoal de Kildall de CP/M e o compilador PL/M contratado pela Intel em uma empresa comercial. Os Kildalls pretendiam estabelecer a marca Digital Research e suas linhas de produtos como sinônimo de "microcomputador" na mente do consumidor, semelhante ao que a IBM e a Microsoft juntas realizaram com sucesso ao tornar o "computador pessoal" sinônimo de suas ofertas de produtos. A Intergalactic Digital Research, Inc. foi posteriormente renomeada por meio de um registro de mudança de nome corporativo para Digital Research, Inc.

Sucesso inicial

Cartão Apple CP/M com manual

Em setembro de 1981, a Digital Research vendeu mais de260 000 licenças CP/M; A InfoWorld afirmou que o mercado real provavelmente era maior por causa das sublicenças. Muitas empresas diferentes produziram computadores baseados em CP/M para muitos mercados diferentes; a revista afirmou que "o CP/M está a caminho de se estabelecer como o sistema operacional para computadores pequenos". As empresas optaram por oferecer suporte ao CP/M por causa de sua grande biblioteca de software. A Xerox 820 rodava o sistema operacional porque "onde existem literalmente milhares de programas escritos para ela, seria imprudente não tirar vantagem disso", disse a Xerox. (A Xerox incluiu um manual de Howard W. Sams CP/M como compensação pela documentação da Digital Research, que a InfoWorld em 1982 descreveu como atroz.) Em 1984, a Columbia University usou o mesmo código-fonte para construir binários Kermit para mais de uma dúzia de CP/ Sistemas M, mais uma versão genérica. O sistema operacional foi descrito como um " barramento de software ", permitindo que vários programas interagissem com diferentes hardwares de maneira padronizada. Programas escritos para CP/M eram normalmente portáveis ​​entre diferentes máquinas, geralmente exigindo apenas a especificação das sequências de escape para controle da tela e da impressora. Essa portabilidade tornou o CP/M popular, e muito mais software foi escrito para CP/M do que para sistemas operacionais executados em apenas uma marca de hardware. Uma restrição à portabilidade era que certos programas usavam o conjunto de instruções estendido do processador Z80 e não operavam em um processador 8080 ou 8085. Outro eram as rotinas gráficas, especialmente em jogos e programas gráficos, que geralmente eram específicos da máquina, pois usavam acesso direto ao hardware para obter velocidade, ignorando o sistema operacional e o BIOS (esse também era um problema comum nas primeiras máquinas DOS).

Bill Gates afirmou que a série Apple II com um Z-80 SoftCard era a plataforma de hardware CP/M mais popular. Muitas marcas diferentes de máquinas executavam o sistema operacional, alguns exemplos notáveis ​​sendo o Altair 8800 , o IMSAI 8080 , os luggables Osborne 1 e Kaypro e os computadores MSX . O sistema compatível com CP/M mais vendido de todos os tempos foi provavelmente o Amstrad PCW . No Reino Unido, o CP/M também estava disponível nos computadores educacionais da Research Machines (com o código-fonte do CP/M publicado como um recurso educacional) e para o BBC Micro quando equipado com um coprocessador Z80. Além disso, estava disponível para a série Amstrad CPC , Commodore 128 , TRS-80 e modelos posteriores do ZX Spectrum . O CP/M 3 também foi usado no NIAT, um computador portátil personalizado projetado para uso interno da  AC Nielsen com 1 MB de memória SSD .

Multi usuário

Em 1979, um derivado do CP/M compatível com vários usuários foi lançado. O MP/M permitia que vários usuários se conectassem a um único computador, usando vários terminais para fornecer a cada usuário uma tela e um teclado. Versões posteriores rodavam em processadores de 16 bits.

CP/M Plus

Guia do Sistema CP/M Plus (CP/M 3)

A última versão de 8 bits do CP/M foi a versão 3, geralmente chamada de CP/M Plus, lançada em 1983. Seu BDOS foi projetado por Brown. Ele incorporou o gerenciamento de memória de comutação de banco de MP/M em um sistema operacional de tarefa única de usuário único compatível com aplicativos CP/M 2.2. O CP/M 3 poderia, portanto, usar mais de 64 KB de memória em um processador 8080 ou Z80. O sistema pode ser configurado para suportar a marcação de data de arquivos. O software de distribuição do sistema operacional também incluía um montador e um vinculador de realocação. O CP/M 3 estava disponível para a última geração de computadores de 8 bits, notavelmente o Amstrad PCW , o Amstrad CPC , o ZX Spectrum +3 , o Commodore 128 , máquinas MSX e o Radio Shack TRS-80 Modelo 4 .

versões de 16 bits

Distribuição de disquete DEC PRO-CP/M-80 para o coprocessador Z80-A em uma série DEC Professional 3xx

Também havia versões do CP/M para algumas CPUs de 16 bits .

A primeira versão da família de 16 bits foi CP/M-86 para o Intel 8086 em novembro de 1981. Kathryn Strutynski era a gerente de projeto da linha de sistemas operacionais CP/M-86 em desenvolvimento. Neste ponto, o CP/M original de 8 bits tornou-se conhecido pelo retrônimo CP/M-80 para evitar confusão.

Esperava-se que o CP/M-86 fosse o sistema operacional padrão dos novos PCs IBM , mas a DRI e a IBM não conseguiram negociar os termos de desenvolvimento e licenciamento. Em vez disso, a IBM voltou-se para a Microsoft, e a Microsoft entregou o PC DOS baseado no 86-DOS . Embora o CP/M-86 tenha se tornado uma opção para o IBM PC depois que o DRI ameaçou uma ação legal, ele nunca superou o sistema da Microsoft. A maioria dos clientes foi repelida pelo preço significativamente maior que a IBM cobrava pelo CP/M-86 em relação ao PC DOS ( US$ 240 e US$ 40, respectivamente).

Quando a Digital Equipment Corporation (DEC) lançou o Rainbow 100 para competir com a IBM, ele veio com CP/M-80 usando um chip Z80, CP/M-86 ou MS-DOS usando um microprocessador 8088, ou CP/M- 86 /80 usando ambos. As CPUs Z80 e 8088 rodaram simultaneamente. Um benefício do Rainbow era que ele podia continuar rodando software CP/M de 8 bits, preservando o possível investimento considerável do usuário à medida que ele entrava no mundo de 16 bits do MS-DOS. Uma adaptação semelhante de processador duplo para o CompuPro System 816  [ sr ] foi denominada CP/M 8-16 . A adaptação do CP/M-86 para o Zenith Z-100 baseado em 8085/8088 também suportava a execução de programas para ambas as CPUs.

Logo após o CP/M-86, outra versão de 16 bits do CP/M foi o CP/M-68K para o Motorola 68000 . A versão original do CP/M-68K em 1982 foi escrita em Pascal/MT+68k , mas foi portada para C posteriormente. O CP/M-68K, já rodando nos sistemas Motorola EXORmacs , era inicialmente para ser usado no computador Atari ST , mas a Atari decidiu usar um sistema operacional de disco mais novo chamado GEMDOS . O CP/M-68K também foi usado nos computadores SORD M68 e M68MX.

Em 1982, também houve uma porta do CP/M-68K para o Zilog Z8000 de 16 bits para o Olivetti M20 , escrito em C , denominado CP/M-8000 .

Essas versões de 16 bits do CP/M exigiam que os programas aplicativos fossem recompilados para as novas CPUs. Alguns programas escritos em linguagem assembly podem ser traduzidos automaticamente para um novo processador. Uma ferramenta para isso era o XLT86 da Digital Research , que traduzia o código-fonte .ASM do processador Intel 8080 para o código-fonte .A86 do Intel 8086. O tradutor também otimizaria a saída para o tamanho do código e cuidaria das convenções de chamada, de modo que o CP Os programas /M-80 e MP/M-80 podem ser transferidos para as plataformas CP/M-86 e MP/M-86 automaticamente. O próprio XLT86 foi escrito em PL/I-80 e estava disponível para plataformas CP/M-80, bem como para VAX/VMS .

Deslocamento por MS-DOS

Muitos esperavam que o CP/M fosse o sistema operacional padrão para computadores de 16 bits. Em 1980, a IBM abordou a Digital Research, por sugestão de Bill Gates , para licenciar uma versão futura do CP/M para seu novo produto, o IBM Personal Computer . Após a falha em obter um acordo de não divulgação assinado , as negociações falharam e a IBM contratou a Microsoft para fornecer um sistema operacional. O produto resultante, o MS-DOS , logo começou a superar o CP/M.

Muitos dos conceitos e mecanismos básicos das primeiras versões do MS-DOS se assemelhavam aos do CP/M. Internos, como estruturas de dados de manipulação de arquivos, eram idênticos e ambos se referiam a unidades de disco com uma letra ( A:, B:, etc.). A principal inovação do MS-DOS foi seu sistema de arquivos FAT . Essa similaridade facilitou a portabilidade de software CP/M popular, como WordStar e dBase . No entanto, o conceito do CP/M de áreas de usuário separadas para arquivos no mesmo disco nunca foi portado para o MS-DOS. Como o MS-DOS tinha acesso a mais memória (já que poucos IBM PCs eram vendidos com menos de 64 KB de memória, enquanto o CP/M podia rodar em 16 KB, se necessário), mais comandos foram incorporados ao shell de linha de comando, tornando o MS - DOS -DOS um pouco mais rápido e fácil de usar em computadores baseados em disquete.

Embora um dos primeiros periféricos para o IBM PC tenha sido uma placa de expansão do tipo SoftCard que permitia executar o software CP/M de 8 bits, a InfoWorld afirmou em 1984 que os esforços para introduzir o CP/M no mercado doméstico não tiveram sucesso e a maioria O software CP/M era muito caro para usuários domésticos. Em 1986, a revista afirmou que a Kaypro havia interrompido a produção de modelos baseados em CP/M de 8 bits para se concentrar nas vendas de sistemas compatíveis com MS-DOS, muito depois que a maioria dos outros fornecedores havia encerrado a produção de novos equipamentos e software para CP/M. O CP/M rapidamente perdeu participação de mercado à medida que o mercado de microcomputação mudou para a plataforma compatível com IBM e nunca recuperou sua antiga popularidade. A revista Byte , na época uma das principais revistas da indústria de microcomputadores, basicamente deixou de cobrir os produtos CP/M alguns anos após o lançamento do IBM PC. Por exemplo, em 1983 ainda havia alguns anúncios de placas S-100 e artigos sobre software CP/M, mas em 1987 eles não eram mais encontrados na revista.

Versões posteriores do CP/M-86 fizeram progressos significativos em desempenho e usabilidade e tornaram-se compatíveis com o MS-DOS. Para refletir essa compatibilidade, o nome foi alterado e CP/M-86 se tornou DOS Plus , que por sua vez se tornou DR-DOS .

ZCPR

ZCPR (a substituição do processador de comando Z80) foi introduzido em 2 de fevereiro de 1982 como um substituto para o processador de comando de console padrão da Digital Research (CCP) e foi inicialmente escrito por um grupo de amadores de computador que se autodenominavam "The CCP Group". Eles eram Frank Wancho, Keith Petersen (o arquivista por trás da Simtel na época), Ron Fowler, Charlie Strom, Bob Mathias e Richard Conn. Richard era, de fato, a força motriz desse grupo (todos os quais mantinham contato por e-mail ).

ZCPR1 foi lançado em um disco lançado pela SIG/M (Special Interest Group/Microcomputers), uma parte do Amateur Computer Club de New Jersey .

ZCPR2 foi lançado em 14 de fevereiro de 1983. Foi lançado como um conjunto de dez discos da SIG/M. O ZCPR2 foi atualizado para 2.3 e também foi lançado no código 8080, permitindo o uso do ZCPR2 nos sistemas 8080 e 8085.

ZCPR3 foi lançado em 14 de julho de 1984, como um conjunto de nove discos da SIG/M. O código para ZCPR3 também poderia ser compilado (com recursos reduzidos) para o 8080 e seria executado em sistemas que não tivessem o microprocessador Z80 necessário. Os recursos do ZCPR a partir da versão 3 incluíam shells, aliases, redirecionamento de E/S, controle de fluxo, diretórios nomeados, caminhos de pesquisa, menus personalizados, senhas e ajuda online. Em janeiro de 1987, Richard Conn parou de desenvolver o ZCPR e a Echelon pediu a Jay Sage (que já tinha um ZCPR 3.1 aprimorado em particular) para continuar trabalhando nele. Assim, o ZCPR 3.3 foi desenvolvido e lançado. O ZCPR 3.3 não suportava mais a série 8080 de microprocessadores e adicionava mais recursos de qualquer atualização na linha ZCPR. O ZCPR 3.3 também incluiu um complemento completo de utilitários com recursos consideravelmente estendidos. Embora apoiado entusiasticamente pela base de usuários do CP/M da época, o ZCPR sozinho foi insuficiente para retardar o fim do CP/M.

Modelo de hardware

Computador Sanco 8001, rodando em CP/M 2.2 (1982)
Cartucho CP/M para o Commodore 64

Um sistema CP/M mínimo de 8 bits conteria os seguintes componentes:

  • Um terminal de computador usando o conjunto de caracteres ASCII
  • Um microprocessador Intel 8080 (e mais tarde o 8085) ou Zilog Z80
    • Os processadores NEC V20 e V30 suportam um modo de emulação 8080 que pode executar CP/M de 8 bits em um computador PC DOS/MS-DOS equipado, embora qualquer PC também possa executar o CP/M-86 de 16 bits.
  • Pelo menos 16 kilobytes de RAM , começando no endereço 0
  • Um meio de inicializar o primeiro setor do disquete
  • Pelo menos uma unidade de disquete

O único sistema de hardware que o CP/M, vendido pela Digital Research, suportaria era o Intel 8080 Development System. Os fabricantes de sistemas compatíveis com CP/M personalizaram partes do sistema operacional para sua própria combinação de memória instalada, unidades de disco e dispositivos de console. O CP/M também rodaria em sistemas baseados no processador Zilog Z80, já que o Z80 era compatível com o código 8080. Embora o núcleo distribuído da Digital Research do CP/M (BDOS, CCP, comandos transientes principais) não usasse nenhuma das instruções específicas do Z80, muitos sistemas baseados no Z80 usavam o código Z80 no BIOS específico do sistema e muitos aplicativos eram dedicados para máquinas CP/M baseadas em Z80.

Posteriormente, a Digital Research fez parceria com a Zilog e a American Microsystems para produzir o Personal CP/M, uma versão baseada em ROM do sistema operacional destinada a sistemas de baixo custo que poderiam ser equipados sem unidades de disco. Apresentado pela primeira vez no Sharp MZ-800, um sistema baseado em cassete com unidades de disco opcionais, o Personal CP/M foi descrito como tendo sido "reescrito para aproveitar as vantagens do conjunto de instruções Z-80 aprimorado" em vez de preservar a portabilidade com o 8080 A American Microsystems anunciou um microprocessador compatível com Z80, o S83, apresentando 8 KB de ROM no pacote para o sistema operacional e BIOS, juntamente com lógica abrangente para interface com dispositivos RAM dinâmicos de 64 kilobits.

Na maioria das máquinas, o bootstrap era um gerenciador de inicialização mínimo em ROM combinado com alguns meios de comutação mínima de banco ou um meio de injetar código no barramento (uma vez que o 8080 precisa ver o código de inicialização no endereço 0 para inicialização, enquanto o CP/M precisa RAM lá); para outros, esse bootstrap tinha que ser inserido na memória usando os controles do painel frontal toda vez que o sistema era iniciado.

O CP/M usava o conjunto ASCII de 7 bits. Os outros 128 caracteres possibilitados pelo byte de 8 bits não foram padronizados. Por exemplo, um Kaypro os usava para caracteres gregos e as máquinas Osborne usavam o 8º conjunto de bits para indicar um caractere sublinhado. WordStar usou o 8º bit como um marcador de fim de palavra. Os sistemas CP/M internacionais geralmente usam a norma ISO 646 para conjuntos de caracteres localizados, substituindo certos caracteres ASCII por caracteres localizados, em vez de adicioná-los além do limite de 7 bits.

Componentes

Nas versões de 8 bits, durante a execução, o sistema operacional CP/M carregado na memória tinha três componentes:

  • Sistema Básico de Entrada/Saída (BIOS),
  • Sistema operacional de disco básico (BDOS),
  • Processador de comando do console (CCP).

O BIOS e o BDOS residiam na memória, enquanto o CCP residia na memória, a menos que fosse substituído por um aplicativo, caso em que era recarregado automaticamente após o término da execução do aplicativo. Vários comandos transitórios para utilitários padrão também foram fornecidos. Os comandos temporários residiam em arquivos com a extensão .COM no disco.

O BIOS controlava diretamente os componentes de hardware além da CPU e da memória principal. Continha funções como entrada e saída de caracteres e leitura e gravação de setores do disco. O BDOS implementou o sistema de arquivos CP/M e algumas abstrações de entrada/saída (como redirecionamento) na parte superior do BIOS. O PCCh pegava os comandos do usuário e os executava diretamente (comandos internos como DIR para mostrar um diretório ou ERA para excluir um arquivo) ou carregava e iniciava um arquivo executável com o nome fornecido (comandos transitórios como PIP.COM para copiar arquivos ou STAT.COM para mostrar vários arquivos e informações do sistema). Aplicativos de terceiros para CP/M também eram comandos essencialmente transitórios.

Os comandos BDOS, CCP e transientes padrão eram os mesmos em todas as instalações de uma determinada revisão do CP/M, mas a parte do BIOS sempre foi adaptada ao hardware específico.

Adicionar memória a um computador, por exemplo, significava que o sistema CP/M precisava ser reinstalado para permitir que programas transitórios usassem o espaço de memória adicional. Um programa utilitário (MOVCPM) foi fornecido com distribuição de sistema que permitiu realocar o código objeto para diferentes áreas de memória. O programa utilitário ajustou os endereços nas instruções de salto absoluto e chamada de sub-rotina para novos endereços exigidos pelo novo local do sistema operacional na memória do processador. Essa versão recém-corrigida poderia então ser salva em um novo disco, permitindo que os programas aplicativos acessem a memória adicional disponibilizada ao mover os componentes do sistema. Uma vez instalado, o sistema operacional (BIOS, BDOS e CCP) era armazenado em áreas reservadas no início de qualquer disco que seria utilizado para inicializar o sistema. Na inicialização, o bootloader (geralmente contido em um chip de firmware ROM) carregaria o sistema operacional do disco na unidade A:.

Pelos padrões modernos, o CP/M era primitivo, devido às extremas restrições de tamanho do programa. Com a versão 1.0, não havia provisão para detectar um disco alterado. Se um usuário trocasse de disco sem reler manualmente o diretório do disco, o sistema gravaria no novo disco usando as informações do diretório do disco antigo, arruinando os dados armazenados no disco. A partir da versão 1.1 ou 1.2 em diante, alterar um disco e tentar gravar nele antes de seu diretório ser lido causaria a sinalização de um erro fatal. Isso evitou sobrescrever o disco, mas exigiu uma reinicialização e perda dos dados que deveriam ser armazenados no disco.

A maior parte da complexidade em CP/M foi isolada no BDOS e, em menor grau, no CCP e nos comandos transitórios. Isso significava que, ao portar o número limitado de rotinas simples no BIOS para uma plataforma de hardware específica, todo o sistema operacional funcionaria. Isso reduziu significativamente o tempo de desenvolvimento necessário para dar suporte a novas máquinas e foi uma das principais razões para o uso generalizado do CP/M. Hoje, esse tipo de abstração é comum à maioria dos sistemas operacionais (uma camada de abstração de hardware ), mas na época do nascimento do CP/M, os sistemas operacionais eram normalmente destinados a rodar em apenas uma plataforma de máquina e os projetos multicamadas eram considerados desnecessários.

Processador de comando do console

Captura de tela mostrando uma listagem de diretório CP/M 3.0 usando o DIRcomando em um computador doméstico Commodore 128

O Processador de Comando do Console, ou CCP, aceitava a entrada do teclado e transmitia os resultados ao terminal. O próprio CP/M funcionaria com um terminal de impressão ou um terminal de vídeo. Todos os comandos CP/M devem ser digitados na linha de comando . O console geralmente exibiria o A>prompt, para indicar a unidade de disco padrão atual. Quando usado com um terminal de vídeo, isso normalmente seria seguido por um cursor piscante fornecido pelo terminal. O CCP aguardaria a entrada do usuário. Um comando interno do CCP, no formato letra da unidade seguida por dois pontos, pode ser usado para selecionar a unidade padrão. Por exemplo, digitar B:e pressionar Enter no prompt de comando alteraria a unidade padrão para B, e o prompt de comando passaria B>a indicar essa alteração.

A interface de linha de comando do CP/M foi padronizada após os sistemas operacionais da Digital Equipment , como RT-11 para o PDP-11 e OS/8 para o PDP-8 . Os comandos assumem a forma de uma palavra-chave seguida por uma lista de parâmetros separados por espaços ou caracteres especiais. Semelhante a um shell integrado do Unix , se um comando interno foi reconhecido, ele foi executado pelo próprio CCP. Caso contrário, ele tentaria encontrar um arquivo executável na unidade de disco atualmente registrada e (em versões posteriores) na área do usuário, carregá-lo e passar quaisquer parâmetros adicionais da linha de comando. Estes foram referidos como programas "transitórios". Após a conclusão, o CP/M recarregava a parte do CCP que havia sido substituída pelos programas aplicativos — isso dava aos programas transitórios um espaço de memória maior.

Os próprios comandos às vezes podem ser obscuros. Por exemplo, o comando para duplicar arquivos foi nomeado PIP(Peripheral-Interchange-Program), o nome do antigo utilitário DEC usado para esse fim. O formato dos parâmetros dados a um programa não era padronizado, de modo que não havia um único caractere de opção que diferenciasse as opções dos nomes dos arquivos. Programas diferentes poderiam usar e usaram caracteres diferentes.

O processador de comandos do console CP/M inclui DIR , ERA , REN , SAVE , TYPE e USER como comandos integrados . Comandos transitórios em CP/M incluem ASM , DDT , DUMP , ED , LOAD , MOVCPM  [ pl ] , PIP , STAT , SUBMIT e SYSGEN .

O CP/M Plus (CP/M Versão 3) inclui DIR (exibe a lista de arquivos de um diretório, exceto aqueles marcados com o atributo SYS), DIRSYS / DIRS (lista os arquivos marcados com o atributo SYS no diretório), ERASE / ERA ( excluir um arquivo), RENAME / REN (renomear um arquivo), TYPE / TYP (exibir o conteúdo de um arquivo de caracteres ASCII) e USER / USE (alterar o número do usuário) como comandos integrados: CP/M 3 permite ao usuário abreviar os comandos internos. Os comandos transitórios no CP/M 3 incluem COPYSYS , DATE , DEVICE , DUMP , ED , GET , HELP , HEXCOM , INITDIR , LINK , MAC , PIP , PUT , RMAC , SET , SETDEF , SHOW , SID , SUBMIT e XREF .

Sistema operacional de disco básico

O Basic Disk Operating System, ou BDOS, fornecia acesso a operações como abrir um arquivo, enviar para o console ou imprimir. Os programas aplicativos carregariam os registradores do processador com um código de função para a operação e endereços para parâmetros ou buffers de memória e chamariam um endereço fixo na memória. Como o endereço era o mesmo independente da quantidade de memória no sistema, os programas aplicativos seriam executados da mesma forma para qualquer tipo ou configuração de hardware.

Sistema Básico de Entrada e Saída

Anúncio do CP/M na edição de 11 de dezembro de 1978 da revista InfoWorld

O sistema básico de entrada e saída ou BIOS fornece as funções de nível mais baixo exigidas pelo sistema operacional.

Isso incluía a leitura ou gravação de caracteres únicos no console do sistema e a leitura ou gravação de um setor de dados do disco. O BDOS manipulava parte do buffer de dados do disquete, mas antes do CP/M 3.0 ele assumia um tamanho de setor de disco fixo em 128 bytes, como usado em disquetes de 8 polegadas de densidade única . Como a maioria dos formatos de disco de 5,25 polegadas usava setores maiores, o bloqueio e desbloqueio e o gerenciamento de uma área de buffer de disco eram tratados por código específico do modelo no BIOS.

A personalização era necessária porque as opções de hardware não eram limitadas pela compatibilidade com nenhum padrão popular. Por exemplo, alguns fabricantes usaram um terminal de computador separado, enquanto outros projetaram um sistema de exibição de vídeo integrado integrado. As portas seriais para impressoras e modems podem usar diferentes tipos de chips UART e os endereços de porta não foram corrigidos. Algumas máquinas usavam E/S mapeadas em memória em vez do espaço de endereço de E/S 8080. Todas essas variações no hardware foram ocultadas de outros módulos do sistema pelo uso do BIOS, que usava pontos de entrada padrão para os serviços necessários para executar o CP/M, como E/S de caracteres ou acesso a um bloco de disco. Como o suporte para comunicação serial com um modem era muito rudimentar no BIOS ou pode não ter existido, era prática comum para programas CP/M que usavam modems ter uma sobreposição instalada pelo usuário contendo todo o código necessário para acessar uma máquina específica. porta serial.

Formulários

Distribuição 5+Disquetes de 14 polegadas e embalagem para a última versão (versão 4) do programa de processamento de texto WordStar lançado para CP/M de 8 bits

WordStar , um dos primeiros processadores de texto amplamente usados , e dBase , um antigo e popular programa de banco de dados para microcomputadores, foram originalmente escritos para CP/M. Dois primeiros esboços , KAMAS (Knowledge and Mind Amplification System) e seu sucessor reduzido, Out-Think (sem recursos de programação e refeito para compatibilidade com 8080/V20) também foram escritos para CP/M, embora posteriormente reescritos para MS-DOS. O Turbo Pascal , o ancestral do Borland Delphi , e o Multiplan , o ancestral do Microsoft Excel , também estrearam no CP/M antes que as versões do MS-DOS fossem disponibilizadas. VisiCalc , o primeiro programa de planilhas, foi disponibilizado para CP/M. Outra empresa, a Sorcim , criou sua planilha SuperCalc para CP/M, que viria a se tornar líder de mercado e padrão de fato em CP/M. A Supercalc passaria a ser uma concorrente no mercado de planilhas no mundo MS-DOS. AutoCAD , um aplicativo CAD da Autodesk estreou no CP/M. Vários compiladores e interpretadores para linguagens de programação populares da época (como BASIC , Turbo Pascal da Borland , FORTRAN e até PL/I ) estavam disponíveis, entre eles vários dos primeiros produtos da Microsoft .

O software CP/M geralmente vem com instaladores que o adaptam a uma ampla variedade de computadores. O código-fonte dos programas BASIC era facilmente acessível e a maioria das formas de proteção contra cópia era ineficaz no sistema operacional. O proprietário de um Kaypro II, por exemplo, obteria um software no formato Xerox 820 e o copiaria e executaria a partir de discos no formato Kaypro.

A falta de gráficos padronizados suportava videogames limitados , mas vários jogos baseados em texto e personagens foram portados , como Telengard , Gorillas , Hamurabi , Lunar Lander , junto com a ficção interativa inicial, incluindo a série Zork e Colossal Cave Adventure . A Infocom, especialista em aventuras de texto , foi uma das poucas editoras a lançar consistentemente seus jogos no formato CP/M. A Lifeboat Associates começou a coletar e distribuir software "gratuito" escrito pelo usuário. Um dos primeiros foi o XMODEM , que permitia transferências confiáveis ​​de arquivos via modem e linha telefônica. Outro programa nativo do CP/M foi o processador de linhas KAMAS .

Área do Programa Transitório

A memória de leitura/gravação entre o endereço hexadecimal 0100 e o endereço mais baixo do BDOS era a Área de Programa Transitório (TPA) disponível para programas aplicativos CP/M. Embora todos os processadores Z80 e 8080 possam endereçar 64 kilobytes de memória, a quantidade disponível para programas aplicativos pode variar, dependendo do projeto do computador em particular. Alguns computadores usaram grandes partes do espaço de endereço para coisas como BIOS ROMs ou memória de exibição de vídeo. Como resultado, alguns sistemas tinham mais memória TPA disponível do que outros. A troca de banco era uma técnica comum que permitia que os sistemas tivessem um grande TPA enquanto trocavam ROM ou espaço de memória de vídeo conforme necessário. O CP/M 3.0 também permitia que partes do BDOS estivessem na memória de comutação de banco.

Aplicação de depuração

O CP/M veio com uma ferramenta de depuração dinâmica, apelidada de DDT (após o inseticida, ou seja, um matador de bugs ), que permitia que a memória e os módulos do programa fossem examinados e manipulados, e permitia que um programa fosse executado passo a passo.

programas residentes

Originalmente, o CP/M não suportava o equivalente a programas TSR ( terminate and stay resident ) como no DOS. Os programadores poderiam escrever software que pudesse interceptar certas chamadas do sistema operacional e estender ou alterar sua funcionalidade. Usando esse recurso, os programadores desenvolveram e venderam programas de acessórios de mesa auxiliares , como o SmartKey , um utilitário de teclado para atribuir qualquer sequência de bytes a qualquer tecla. O CP/M 3, no entanto, adicionou suporte para extensões de sistema residente (RSX) dinamicamente carregáveis . Um chamado arquivo de comando nulo pode ser usado para permitir que o CCP carregue um RSX sem um programa transitório. Soluções semelhantes como RSMs (para Resident System Modules ) também foram adaptadas para sistemas CP/M 2.2 por terceiros.

Instalação de software

Embora o CP/M fornecesse alguma abstração de hardware para padronizar a interface para E/S de disco ou E/S de console, os programas aplicativos ainda exigiam instalação para fazer uso de todos os recursos de equipamentos como impressoras e terminais. Freqüentemente, eles eram controlados por sequências de escape que precisavam ser alteradas para diferentes dispositivos. Por exemplo, a sequência de escape para selecionar negrito em uma impressora seria diferente entre os fabricantes e, às vezes, entre os modelos dentro da faixa de um fabricante. Este procedimento não foi definido pelo sistema operacional; um usuário normalmente executaria um programa de instalação que permitiria a seleção de uma variedade de dispositivos ou permitiria a edição recurso por recurso das sequências de escape necessárias para acessar uma função. Isso teve que ser repetido para cada programa de aplicativo, pois não havia serviço de sistema operacional central fornecido para esses dispositivos.

Os códigos de inicialização para cada modelo de impressora devem ser escritos no aplicativo. Para usar um programa como o Wordstar com mais de uma impressora (digamos, uma impressora matricial rápida ou uma impressora margarida mais lenta, mas com qualidade de apresentação ), uma versão separada do Wordstar tinha que ser preparada e uma tinha que carregar o Wordstar versão correspondente à impressora selecionada (e sair e recarregar para trocar de impressora).

formatos de disco

O formato de densidade única e lado único do IBM System/34 e IBM 3740 é o formato de disquete padrão de 8 polegadas do CP/M . Não existe nenhum formato de disco CP/M padrão de 5,25 polegadas, com Kaypro, Morrow Designs , Osborne e outros, cada um usando o seu próprio. A InfoWorld estimou em setembro de 1981 que "cerca de duas dúzias de formatos eram populares o suficiente para que os criadores de software tivessem que considerá-los para alcançar o mercado mais amplo possível". JRT Pascal , por exemplo, forneceu versões em disco de 5,25 polegadas para North Star , Osborne, Apple, Heath hard sector e soft sector , e Superbrain , e uma versão de 8 polegadas. A Ellis Computing também ofereceu seu software para ambos os formatos Heath e 16 outros formatos de 5,25 polegadas, incluindo duas modificações TRS-80 CP/M diferentes.

Certos formatos de disco eram mais populares do que outros. A maioria dos softwares estava disponível no formato Xerox 820 e outros computadores, como o Kaypro II, eram compatíveis com ele. Nenhum fabricante isolado, no entanto, prevaleceu na era de 5,25 polegadas de uso do CP/M, e os formatos de disco muitas vezes não eram portáteis entre os fabricantes de hardware. Um fabricante de software teve que preparar uma versão separada do programa para cada marca de hardware em que seria executado. Com alguns fabricantes (Kaypro é um exemplo), não havia sequer padronização entre os diferentes modelos da empresa. Devido a essa situação, os programas de tradução de formato de disco, que permitiam que uma máquina lesse muitos formatos diferentes, tornaram-se populares e reduziram a confusão, assim como programas como o Kermit, que permitiam a transferência de dados e programas de uma máquina para outra usando as portas seriais que a maioria das máquinas CP/M tinha.

Vários formatos foram usados ​​dependendo das características de sistemas particulares e, até certo ponto, das escolhas dos projetistas. Opções suportadas pelo CP/M para controlar o tamanho das áreas reservadas e de diretório no disco e o mapeamento entre os setores lógicos do disco (conforme vistos pelos programas CP/M) e os setores físicos conforme alocados no disco. Havia muitas maneiras de personalizar esses parâmetros para cada sistema, mas, uma vez definidos, não existia uma maneira padronizada de um sistema carregar parâmetros de um disco formatado em outro sistema.

O grau de portabilidade entre diferentes máquinas CP/M dependia do tipo de drive de disco e controlador usado, já que muitos tipos diferentes de disquete existiam na era CP/M tanto no formato de 8 polegadas quanto no formato de 5,25 polegadas. Os discos podem ser setorizados rígidos ou flexíveis, densidade simples ou dupla, face única ou dupla, 35 trilhas, 40 trilhas, 77 trilhas ou 80 trilhas, e o layout, tamanho e intercalação do setor também podem variar amplamente. Embora os programas de tradução possam permitir que o usuário leia os tipos de disco de diferentes máquinas, o tipo de unidade e o controlador também foram fatores. Em 1982, os discos de 5,25 polegadas de um lado e 40 faixas do setor flexível tornaram-se o formato mais popular para distribuir software CP/M, pois eram usados ​​pelas máquinas de nível de consumidor mais comuns da época, como o Apple II, TRS-80, Osborne 1, Kaypro II e IBM PC. Um programa de tradução permitia ao usuário ler qualquer disco em sua máquina que tivesse um formato semelhante - por exemplo, o Kaypro II podia ler discos TRS-80 , Osborne , IBM PC e Epson . Outros tipos de disco, como 80 trilhas ou setores rígidos, eram completamente impossíveis de ler. A primeira metade dos discos de dupla face (como os do Epson QX-10) podia ser lida porque o CP/M acessava as faixas do disco sequencialmente com a faixa 0 sendo a primeira (mais externa) faixa do lado 1 e a faixa 79 (em um 40- disco de trilha) sendo a última trilha (mais interna) do lado 2. Os usuários do Apple II não conseguiam usar nada além do formato GCR da Apple e, portanto, tinham que obter o software CP/M em discos de formato Apple ou então transferi-lo via link serial.

O mercado fragmentado de CP/M, exigindo que os distribuidores armazenassem vários formatos de discos ou investissem em equipamentos de duplicação multiformato, em comparação com os formatos de disco IBM PC mais padronizados , foi um fator que contribuiu para a rápida obsolescência do CP/M após 1981.

Uma das últimas máquinas notáveis ​​com capacidade para CP/M a aparecer foi o Commodore 128 em 1985, que tinha um Z80 para suporte a CP/M além de seu modo nativo usando uma CPU derivada de 6502. O uso do CP/M exigia uma unidade de disco 1571 ou 1581 que pudesse ler discos de formato MFM de 40 trilhas de setor flexível .

O primeiro computador a usar uma unidade de disquete de 3,5 polegadas, o Sony SMC-70 , rodava CP/M 2.2. O laptop Commodore 128 , Bondwell-2 , Micromint/Ciarcia SB-180, MSX e TRS-80 Modelo 4 (rodando Montezuma CP/M 2.2) também suportava o uso de CP/M com disquetes de 3,5 polegadas. CP/AM, a versão de CP/M da Applied Engineering para o Apple II, também suportava discos de 3,5 polegadas (bem como discos RAM em cartões RAM compatíveis com o Cartão de Expansão de Memória Apple II) . O Amstrad PCW executou CP/M usando unidades de disquete de 3 polegadas no início e depois trocou para as unidades de 3,5 polegadas.

Sistema de arquivo

Os nomes de arquivo foram especificados como uma string de até oito caracteres, seguidos por um ponto, seguido por uma extensão de nome de arquivo de até três caracteres ( formato de nome de arquivo "8.3" ). A extensão geralmente identifica o tipo do arquivo. Por exemplo, .COMindicou um arquivo de programa executável e .TXTindicou um arquivo contendo texto ASCII . Caracteres em nomes de arquivos inseridos no prompt de comando foram convertidos em letras maiúsculas, mas isso não foi imposto pelo sistema operacional. Programas ( MBASIC é um exemplo notável) foram capazes de criar nomes de arquivos contendo letras minúsculas, que então não poderiam ser facilmente referenciados na linha de comando.

Cada unidade de disco era identificada por uma letra de unidade , por exemplo, unidade Ae unidade B. Para se referir a um arquivo em uma unidade específica, a letra da unidade foi prefixada ao nome do arquivo, separada por dois pontos, por exemplo, A:FILE.TXT. Sem nenhuma letra de unidade prefixada, o acesso era aos arquivos na unidade padrão atual.

O tamanho do arquivo foi especificado como o número de registros de 128 bytes (correspondendo diretamente aos setores do disco em unidades de 8 polegadas) ocupados por um arquivo no disco. Não havia uma maneira geralmente suportada de especificar tamanhos de arquivo exatos em bytes. O tamanho atual de um arquivo foi mantido no bloco de controle de arquivo (FCB) do arquivo pelo sistema operacional. Uma vez que muitos programas aplicativos (como editores de texto ) preferem lidar com arquivos como sequências de caracteres em vez de sequências de registros, por convenção, os arquivos de texto terminam com um caractere de controle Z ( ASCII SUB , hexadecimal 1A). Determinar o final de um arquivo de texto , portanto, envolvia examinar o último registro do arquivo para localizar o controle-Z final. Isso também significava que inserir um caractere control-Z no meio de um arquivo geralmente tinha o efeito de truncar o conteúdo do texto do arquivo.

Com o advento de unidades de disco fixas e removíveis maiores, foram empregadas fórmulas de desbloqueio de disco que resultaram em mais blocos de disco por bloco de alocação de arquivo lógico. Embora isso permitisse tamanhos de arquivo maiores, também significava que o menor arquivo que poderia ser alocado aumentava de tamanho de 1  KB (em unidades de densidade única) para 2 KB (em unidades de densidade dupla) e assim por diante, até 32 KB para um arquivo contendo apenas um único byte. Isso tornava o uso ineficiente do espaço em disco se o disco contivesse um grande número de arquivos pequenos.

Carimbos de data e hora de modificação de arquivo não eram suportados em versões até CP/M 2.2, mas eram um recurso opcional em MP/M e CP/M 3.0.

O CP/M 2.2 não tinha subdiretórios na estrutura de arquivos, mas fornecia 16 áreas de usuário numeradas para organizar arquivos em um disco. Para alterar o usuário, basta digitar "Usuário X" no prompt de comando, sendo X o número do usuário. A segurança era inexistente e considerada desnecessária em um computador pessoal. O conceito da área de usuário era tornar a versão de usuário único do CP/M compatível com sistemas MP/M multiusuário. Um patch comum para o CP/M e sistemas operacionais derivados era tornar uma área de usuário acessível ao usuário independente da área de usuário atualmente definida. Um comando USER permitia que a área do usuário fosse alterada para qualquer área de 0 a 15. O usuário 0 era o padrão. Se alguém mudasse para outro usuário, como o USUÁRIO 1, o material salvo no disco para este usuário só estaria disponível para o USUÁRIO 1; O USUÁRIO 2 não seria capaz de vê-lo ou acessá-lo. No entanto, os arquivos armazenados na área USER 0 eram acessíveis a todos os outros usuários; sua localização foi especificada com um caminho preliminar , já que os arquivos do USUÁRIO 0 eram visíveis apenas para alguém conectado como USUÁRIO 0. O recurso da área do usuário sem dúvida tinha pouca utilidade em pequenos disquetes, mas era útil para organizar arquivos em máquinas com disco rígido drives . A intenção do recurso era facilitar o uso do mesmo computador para diferentes tarefas. Por exemplo, uma secretária pode fazer a entrada de dados , então, após trocar de área de USUÁRIO, outro funcionário pode usar a máquina para fazer o faturamento sem que seus arquivos se misturem.

Gráficos

Saída de texto MBASIC exibida em um monitor monocromático típico da época

Embora os sistemas S-100 com capacidade gráfica existissem desde a comercialização do barramento S-100 , o CP/M não fornecia nenhum suporte gráfico padronizado até 1982 com GSX (Graphics System Extension). Devido à pequena quantidade de memória disponível, os gráficos nunca foram um recurso comum associado aos sistemas operacionais CP/M de 8 bits. A maioria dos sistemas só pode exibir gráficos e diagramas de arte ASCII rudimentares no modo de texto ou usando um conjunto de caracteres personalizado . Alguns computadores da linha Kaypro e do TRS-80 Modelo 4 tinham hardware de vídeo com suporte a caracteres gráficos de blocos, e estes eram acessíveis a programadores montadores e programadores BASIC usando o comando CHR$. O Modelo 4 pode exibir gráficos de 640 por 240 pixels com uma placa opcional de alta resolução.

Derivativos

SCP derivado do CP/M rodando em um robotron PC 1715 da Alemanha Oriental
CP/J versão 2.21 rodando em um Elwro 804 Junior

Vários derivados do CP/M-80 existiam no antigo bloco oriental sob vários nomes, incluindo 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 e outros. Havia também derivados do CP/M-86 denominados SCP1700 , CP/K e K8918-OS . Eles foram produzidos pelo VEB Robotron da Alemanha Oriental e outros.

Legado

Vários comportamentos exibidos pelo Microsoft Windows são resultado da compatibilidade com versões anteriores do MS-DOS, que por sua vez tentou alguma compatibilidade com versões anteriores do CP/M. A letra da unidade e as convenções de nome de arquivo 8.3 no MS-DOS (e versões anteriores do Windows) foram originalmente adotadas do CP/M. Os caracteres curinga correspondentes usados ​​pelo Windows (? e *) são baseados nos do CP/M, assim como os nomes de arquivo reservados usados ​​para redirecionar a saída para uma impressora ("PRN:") e o console ("CON:"). Os nomes das unidades A e B foram usados ​​para designar as duas unidades de disquete que os sistemas CP/M geralmente usavam; quando os discos rígidos apareceram, eles foram designados C, que sobreviveram no MS-DOS como o C:\>prompt de comando. O caractere de controle^Z que marca o final de alguns arquivos de texto também pode ser atribuído ao CP/M. Vários comandos no DOS foram modelados a partir dos comandos CP/M; alguns deles até carregavam o mesmo nome, como DIR, REN/RENAME ou TYPE (e ERA/ERASE em DR-DOS). Extensões de arquivo como .TXTou .COMainda são usadas para identificar tipos de arquivo em muitos sistemas operacionais.

Em 1997 e 1998, a Caldera lançou alguns binários CP/M 2.2 e código-fonte sob uma licença de código aberto , também permitindo a redistribuição e modificação de arquivos de pesquisa digital coletados posteriormente relacionados às famílias CP/M e MP/M por meio do "The Site não oficial do CP/M" desde 1997. Após a morte de Olmstead em 12 de setembro de 2001, a licença de distribuição foi atualizada e expandida por Lineo , que entretanto se tornou o proprietário desses ativos da Digital Research, em 19 de outubro de 2001. Em outubro de 2014, para Para marcar o 40º aniversário da primeira apresentação do CP/M, o Computer History Museum lançou as primeiras versões do código-fonte do CP/M.

A partir de 2018, há um número de pessoas e grupos ativos de vintage, hobby e retro-computadores , e algumas pequenas empresas comerciais, ainda desenvolvendo e suportando plataformas de computador que usam CP/M (principalmente 2.2) como o sistema operacional host.

Veja também

Referências

Leitura adicional

links externos