CP/M
CP/M, originalmente significando Control Program/Monitor e mais tarde Control Program for Microcomputers, é um sistema operacional para o mercado de massa criado em 1974 para microcomputadores baseados em Intel 8080/85 por Gary Kildall da Digital Research, Inc. Inicialmente confinado a tarefas únicas em processadores de 8 bits e não mais do que 64 kilobytes de memória, versões posteriores do CP/M adicionaram variações multiusuário e foram migrados para processadores de 16 bits.
A combinação dos computadores de barramento CP/M e S-100 tornou-se um dos primeiros padrões na indústria de microcomputadores. Essa plataforma de computador foi amplamente utilizada nos negócios no final da década de 1970 e meados da década de 1980. O CP/M aumentou o tamanho do mercado de hardware e software, reduzindo bastante 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, à medida que 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órico
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 de 8 polegadas da Shugart Associates com interface 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 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. Durante o 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, amiga de Kildall da Naval Postgraduate School (NPS), tornou-se a quarta funcionária da Digital Research Inc. no início de 1979. Ela começou depurando o CP/M 2.0 e mais tarde tornou-se influente como desenvolvedora chave do CP/M 2.2 e CP/M Plus. Outros desenvolvedores iniciais da base CP/M incluíram Robert "Bob" Silberstein e David 'Dave' K. Marrom.
CP/M originalmente significava “Programa de Controle/Monitor”, um nome que implica um monitor residente – um precursor primitivo do sistema operacional. No entanto, durante a conversão do CP/M em produto comercial, os documentos de registro de marca protocolados em novembro de 1977 deram o nome do produto como “Programa de Controle para Microcomputadores”. O nome CP/M segue um esquema de nomenclatura predominante da época, como na linguagem PL/M de Kildall e no PL/P da Prime Computer (Programming Language for Prime), ambos sugerindo o PL/I da IBM; e o sistema operacional CP/CMS da IBM, que Kildall usou quando trabalhava no NPS. Essa renomeação do 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 CP/M de Kildall e o compilador PL/M contratado pela Intel em um empreendimento comercial. Os Kildall 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 mais tarde ao tornar o “computador pessoal” mais acessível. sinônimo de suas ofertas de produtos. foi posteriormente renomeada por meio de um pedido de mudança de nome corporativo para Digital Research, Inc.
Sucesso inicial
Em setembro de 1981, a Digital Research havia vendido mais de 260.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 "CP/M está a caminho de se estabelecer como o sistema operacional para pequenos computadores". As empresas optaram por oferecer suporte ao CP/M devido à sua grande biblioteca de software. A Xerox 820 executou 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 CP/M de Howard W. Sams como compensação pela documentação da Digital Research, que a InfoWorld em 1982 descreveu como atroz.) Em 1984, a Universidade de Columbia usou o mesmo código-fonte para construa binários Kermit para mais de uma dúzia de sistemas CP/M diferentes, além de uma versão genérica. O sistema operacional foi descrito como um “barramento de software”, permitindo que vários programas interajam com diferentes hardwares de forma padronizada. Os programas escritos para CP/M eram tipicamente portáteis 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 que rodavam em apenas uma marca de hardware. Uma restrição à portabilidade era que certos programas usavam o conjunto estendido de instruções do processador Z80 e não operavam em um processador 8080 ou 8085. Outra eram as rotinas gráficas, especialmente em jogos e programas gráficos, que geralmente eram específicas 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 SoftCard Z-80 era a plataforma de hardware CP/M mais popular. Muitas marcas diferentes de máquinas rodavam o sistema operacional, alguns exemplos notáveis são o Altair 8800, o IMSAI 8080, os bagageiros 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 em computadores educacionais Research Machines (com o código-fonte 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 A. C. Nielsen com 1 MB de memória SSD.
Multiusuário
Em 1979, um derivado do CP/M compatível com multiusuários foi lançado. O MP/M permitiu 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
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 do MP/M em um sistema operacional de usuário único e tarefa única 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 carimbo de data de arquivos. O software de distribuição do sistema operacional também incluía um montador e um vinculador relocados. O CP/M 3 estava disponível para a última geração de computadores de 8 bits, notadamente 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
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 o CP/M-86 para o Intel 8086 em novembro de 1981. Kathryn Strutynski foi a gerente de projeto da linha de sistemas operacionais CP/M-86 em evolução. 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 recorreu à 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 a DRI ameaçou uma ação legal, ele nunca superou o sistema da Microsoft. A maioria dos clientes sentiu repulsa 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 funcionaram simultaneamente. Um benefício do Rainbow era que ele poderia continuar a rodar software CP/M de 8 bits, preservando o investimento possivelmente considerável do usuário à medida que ele migrava para o mundo de 16 bits do MS-DOS. Uma adaptação semelhante de processador duplo para o CompuPro System 816
foi denominada CP/M 8- 16. A adaptação 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 escrito em Pascal/MT+68k, mas foi portado para C posteriormente. O CP/M-68K, já rodando nos sistemas EXORmacs da Motorola, foi inicialmente para ser usado no computador Atari ST, mas a Atari decidiu usar um sistema operacional de disco mais recente chamado GEMDOS. CP/M-68K também foi usado nos computadores SORD M68 e M68MX.
Em 1982, havia também uma portagem 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 foi o XLT86 da Digital Research, que traduziu o código-fonte.ASM do processador Intel 8080 em código-fonte.A86 para o Intel 8086. O tradutor também otimizaria a saída para o tamanho do código e cuidaria das convenções de chamada., para que os programas CP/M-80 e MP/M-80 pudessem ser portados 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, na empresa de Bill Gates. sugestão, licenciar uma versão futura do CP/M para seu novo produto, o IBM Personal Computer. Após a falha na obtenção de um acordo de confidencialidade assinado, as negociações falharam e a IBM contratou a Microsoft para fornecer um sistema operacional. O produto resultante, MS-DOS, logo começou a vender mais que 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 o sistema de arquivos FAT. Essa semelhança tornou mais fácil portar softwares CP/M populares 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 PCs IBM 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 disquetes.
Embora um dos primeiros periféricos para o IBM PC tenha sido uma placa de expansão semelhante ao SoftCard que permitia executar software CP/M de 8 bits, a InfoWorld declarou em 1984 que os esforços para introduzir o CP/M para o mercado doméstico não teve sucesso e a maior parte do 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 de a maioria dos outros fornecedores terem cessado a produção de novos equipamentos e software para CP/M. O CP/M perdeu rapidamente participação de mercado à medida que o mercado de microcomputação mudou para a plataforma compatível com IBM e nunca recuperou sua popularidade anterior. A revista Byte, na época uma das principais revistas do setor de microcomputadores, basicamente deixou de cobrir os produtos CP/M poucos anos após a introdução 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 estes já não eram encontrados na revista.
Versões posteriores do CP/M-86 fizeram avanços significativos em desempenho e usabilidade e foram compatíveis com o MS-DOS. Para refletir essa compatibilidade, o nome foi alterado e CP/M-86 tornou-se DOS Plus, que por sua vez tornou-se DR-DOS.
ZCPR
ZCPR (substituição do processador de comando Z80) foi lançado em 2 de fevereiro de 1982 como um substituto imediato para o processador de comando do console (CCP) padrão da Digital Research e foi inicialmente escrito por um grupo de amadores de informática que se autodenominavam "O Grupo CCP". Eles eram Frank Wancho, Keith Petersen (o arquivista por trás do Simtel na época), Ron Fowler, Charlie Strom, Bob Mathias e Richard Conn. Richard foi, de fato, a força motriz deste grupo (todos os quais mantiveram 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 Nova Jersey.
ZCPR2 foi lançado em 14 de fevereiro de 1983. Foi lançado como um conjunto de dez discos pela 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 possuíssem 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 de forma privada) para continuar trabalhando nele. Assim, o ZCPR 3.3 foi desenvolvido e lançado. O ZCPR 3.3 não suporta mais a série 8080 de microprocessadores e adicionou o máximo de recursos de qualquer atualização na linha ZCPR. O ZCPR 3.3 também incluiu um conjunto completo de utilitários com capacidades consideravelmente ampliadas. Embora apoiado com entusiasmo pela base de usuários do CP/M da época, o ZCPR por si só foi insuficiente para retardar o desaparecimento do CP/M.
Modelo de hardware
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 isolamento 8080 que pode executar CP/M de 8 bits em um computador DOS/MS-DOS PC tão 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 para arrancar o primeiro setor da disquete
- Pelo menos uma unidade de disquete
O único sistema de hardware que o CP/M, vendido pela Digital Research, suportaria seria 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 funcionaria 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 do CP/M da Digital Research (BDOS, CCP, comandos transientes principais) não usasse nenhuma das instruções específicas do Z80, muitos sistemas baseados em Z80 usavam código Z80 no BIOS específico do sistema, e muitos aplicativos eram dedicados para máquinas CP/M baseadas em Z80.
A Digital Research posteriormente fez parceria com a Zilog e a American Microsystems para produzir o Personal CP/M, uma versão do sistema operacional baseada em ROM destinada a sistemas de baixo custo que poderiam ser potencialmente 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 aprimorado de instruções Z-80”. em vez de preservar a portabilidade com o 8080. A American Microsystems anunciou um microprocessador compatível com Z80, o S83, com 8 KB de ROM integrada para o sistema operacional e BIOS, juntamente com lógica abrangente para interface com dispositivos de RAM dinâmica de 64 kilobits. O preço unitário do S83 foi cotado em US$ 32 em quantidades de 1.000 unidades.
Na maioria das máquinas o bootstrap era um bootloader mínimo em ROM combinado com algum meio de troca mínima de banco ou um meio de injetar código no barramento (já que o 8080 precisa ver o código de boot no endereço 0 para inicialização, enquanto o CP /M precisa de RAM lá); para outros, esse bootstrap precisava ser inserido na memória usando os controles do painel frontal sempre que o sistema era iniciado.
CP/M usou 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 usou para caracteres gregos, e as máquinas Osborne usaram o conjunto de 8 bits para indicar um caractere sublinhado. WordStar usou o 8º bit como marcador de final de palavra. Os sistemas CP/M internacionais usavam mais comumente 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 de 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; nesse caso, ele era recarregado automaticamente após a conclusão da execução do aplicativo. Vários comandos transitórios para utilitários padrão também foram fornecidos. Os comandos transitórios residiam em arquivos com a extensão.COM no disco.
O BIOS controlava diretamente outros 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) no BIOS. O CCP pegava 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árias informações de arquivos e 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 revisão específica 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 do sistema que permitiu realocar o código objeto para diferentes áreas da memória. O programa utilitário ajustou os endereços nas instruções de salto absoluto e chamada de sub-rotina para os novos endereços exigidos pela nova localização do sistema operacional na memória do processador. Esta versão recém-corrigida poderia então ser salva em um novo disco, permitindo que os programas aplicativos acessassem a memória adicional disponibilizada pela movimentação dos 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 restrições extremas no tamanho do programa. Com a versão 1.0 não havia possibilidade de detecção de um disco alterado. Se um usuário alterasse os discos 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 escrever nele antes de seu diretório ser lido causaria a sinalização de um erro fatal. Isso evitou a substituição do disco, mas exigiu uma reinicialização e perda dos dados que deveriam ser armazenados no disco.
A maior parte da complexidade do CP/M foi isolada no BDOS e, em menor grau, no CCP e nos comandos transientes. Isso significava que, ao portar o número limitado de rotinas simples do BIOS para uma plataforma de hardware específica, todo o sistema operacional funcionaria. Isso reduziu significativamente o tempo de desenvolvimento necessário para suportar 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 normalmente eram destinados a rodar em apenas uma plataforma de máquina, e os projetos multicamadas eram considerados desnecessários.
Processador de comandos do console
O Console Command Processor, ou CCP, aceitava entradas do teclado e transmitia os resultados ao terminal. O próprio CP/M funcionaria com um terminal de impressão ou com um terminal de vídeo. Todos os comandos do CP/M tiveram que ser digitados na linha de comando. O console geralmente exibiria o prompt A>
, 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 de letra de unidade seguida de 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 se tornaria B>
para 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 assumiram a forma de uma palavra-chave seguida por uma lista de parâmetros separados por espaços ou caracteres especiais. Semelhante a um shell Unix integrado, se um comando interno fosse reconhecido, ele seria 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 transmitir quaisquer parâmetros adicionais a partir da linha de comando. Estes foram referidos como "transitórios" programas. Após a conclusão, o CP/M recarregaria a parte do CCP que havia sido sobrescrita pelos programas aplicativos – isso permitia 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 chamava-se PIP
(Peripheral-Interchange-Program), nome do antigo utilitário DEC usado para esse fim. O formato dos parâmetros atribuídos a um programa não era padronizado, de modo que não existia um único caractere de opção que diferenciasse as opções dos nomes dos arquivos. Diferentes programas poderiam e usaram caracteres diferentes.
O processador de comandos do console CP/M inclui DIR, ERA, REN, SAVE, TYPE e USER como comandos integrados. Os comandos transitórios no CP/M incluem ASM, DDT, DUMP, ED, LOAD, MOVCPM
, PIP, STAT, ENVIAR e SYSGEN.CP/M Plus (CP/M Versão 3) inclui DIR (exibe lista de arquivos de um diretório exceto aqueles marcados com o atributo SYS), DIRSYS / DIRS (lista 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 o usuário abrevie os comandos integrados. 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 abertura de um arquivo, saída para o console ou impressão. Os programas aplicativos carregariam os registros 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 do sistema, os programas aplicativos seriam executados da mesma maneira para qualquer tipo ou configuração de hardware.
Sistema Básico de Entrada e Saída
O Basic Input Output System 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 cuidava de parte do buffer de dados do disquete, mas antes do CP/M 3.0 ele assumia um tamanho de setor de disco fixado 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 o desbloqueio e o gerenciamento de uma área de buffer do disco eram feitos por código específico do modelo no BIOS.
A personalização era necessária porque as escolhas 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. As portas seriais para impressoras e modems podiam usar diferentes tipos de chips UART e os endereços das portas não eram fixos. Algumas máquinas usavam E/S mapeada 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 ter estado totalmente ausente, 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.
Aplicativos
WordStar, um dos primeiros processadores de texto amplamente utilizados, e dBase, um antigo e popular programa de banco de dados para microcomputadores, foram originalmente escritos para CP/M. Dois primeiros delineadores, KAMAS (Knowledge and Mind Amplification System) e seu sucessor Out-Think (sem recursos de programação e refeitos para compatibilidade com 8080/V20) também foram escritos para CP/M, embora posteriormente reescritos para MS-DOS. Turbo Pascal, o ancestral do Borland Delphi, e 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 planilha, foi disponibilizado para CP/M. Outra empresa, a Sorcim, criou sua planilha SuperCalc para CP/M, que se tornaria líder de mercado e padrão de fato em CP/M. Supercalc viria a ser um concorrente no mercado de planilhas no mundo MS-DOS. AutoCAD, um aplicativo CAD da Autodesk estreou no CP/M. Uma série de 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 eram ineficazes no sistema operacional. Um proprietário do Kaypro II, por exemplo, obteria software no formato Xerox 820, depois o copiaria e executaria a partir de discos no formato Kaypro.
A falta de gráficos padronizados suporta videogames limitados, mas vários jogos baseados em personagens e texto foram portados, como Telengard, Gorillas, Hamurabi, Lunar Lander, juntamente com as primeiras ficções interativas, incluindo a série Zork e Colossal Cave Adventure. A especialista em aventuras de texto Infocom foi uma das poucas editoras a lançar consistentemente seus jogos no formato CP/M. A Lifeboat Associates começou a coletar e distribuir artigos "gratuitos' escritos pelos usuários. Programas. Um dos primeiros foi o XMODEM, que permitiu transferências confiáveis de arquivos via modem e linha telefônica. Outro programa nativo do CP/M foi o processador de contorno KAMAS.
Área do Programa Transitório
A memória de leitura/escrita entre o endereço 0100 hexadecimal e o endereço mais baixo do BDOS era a Transient Program Area (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 design do computador específico. Alguns computadores usavam 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 permitiu que partes do BDOS estivessem na memória comutada por banco.
Depurando aplicativo
O CP/M veio com uma ferramenta de depuração dinâmica, apelidada de DDT (em homenagem ao 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 uma etapa de cada vez. tempo.
Programas residentes
O CP/M originalmente não suportava programas equivalentes a terminar e permanecer residente (TSR) 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 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 Resident System Extensions (RSX) carregáveis dinamicamente. Um chamado arquivo de comando nulo poderia ser usado para permitir que o CCP carregasse um RSX sem um programa transitório. Soluções semelhantes, como RSMs (para Módulos de Sistema Residente), 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 normalmente 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 teria sido diferente entre os fabricantes e, às vezes, entre os modelos dentro da linha do 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 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 aplicativo, uma vez que não havia serviço de sistema operacional central fornecido para esses dispositivos.
Os códigos de inicialização de cada modelo de impressora tiveram que ser gravados 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 teve que ser preparada e foi necessário carregar o Wordstar versão que correspondia à impressora selecionada (e sair e recarregar para trocar de impressora).
Formatos de disco
O formato de densidade única e face única 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 usando cada um 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, setor rígido e setor suave de Heath 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 diferentes do TRS-80 CP/M.
Certos formatos de disco eram mais populares que outros. A maior parte do software estava disponível no formato Xerox 820, e outros computadores como o Kaypro II eram compatíveis com ele. Nenhum fabricante, entretanto, prevaleceu na era de uso de CP/M de 5,25 polegadas, e os formatos de disco muitas vezes não eram portáteis entre 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 houve sequer padronização entre os diferentes modelos da empresa. Devido a esta situação, programas de tradução de formatos de disco, que permitiam a uma máquina ler muitos formatos diferentes, tornaram-se populares e reduziram a confusão, assim como programas como o Kermit, que permitia 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 específicos 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 setores do disco lógico (como visto pelos programas CP/M) e 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 nenhuma maneira padronizada para 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 unidade de disco e controlador usado, uma vez que existiam muitos tipos diferentes de disquetes na era CP/M nos formatos de 8 e 5,25 polegadas. Os discos podem ser setorizados rígidos ou flexíveis, de densidade simples ou dupla, de 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 pudessem permitir ao usuário ler tipos de disco de máquinas diferentes, o tipo de unidade e o controlador também eram fatores. Em 1982, discos de 5,25 polegadas de setor flexível, de face única e 40 trilhas se tornaram o formato mais popular para distribuição de software CP/M, pois eram usados pelas máquinas de consumo 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 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) pode ser lida porque o CP/M acessa as trilhas do disco sequencialmente, com a trilha 0 sendo a primeira trilha (mais externa) do lado 1 e a trilha 79 (em um 40- track disk) sendo a última trilha (mais interna) do lado 2. Os usuários do Apple II não podiam usar nada além do formato GCR da Apple e então tiveram que obter o software CP/M em discos no formato Apple ou então transferi-lo via link serial.
O mercado fragmentado de CP/M, exigindo que os distribuidores estocassem múltiplos 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 do 6502. O uso do CP/M exigia uma unidade de disco 1571 ou 1581 que pudesse ler discos no 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 Commodore 128, laptop Bondwell-2, Micromint/Ciarcia SB-180, MSX e TRS-80 Modelo 4 (executando Montezuma CP/M 2.2) também suportava o uso de CP/M com disquetes de 3,5 polegadas. CP/AM, versão do CP/M da Applied Engineering para o Apple II, também suportava discos de 3,5 polegadas (bem como discos RAM em cartões de RAM compatíveis com a placa de expansão de memória Apple II). O Amstrad PCW executou CP/M usando unidades de disquete de 3 polegadas inicialmente e depois mudou para unidades de 3,5 polegadas.
Sistema de arquivos
Os nomes dos arquivos foram especificados como uma sequência de até oito caracteres, seguida 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 identificava o tipo do arquivo. Por exemplo, .COM
indicava um arquivo de programa executável e .TXT
indicava um arquivo contendo texto ASCII. Os caracteres nos nomes de arquivos inseridos no prompt de comando foram convertidos para letras maiúsculas, mas isso não foi imposto pelo sistema operacional. Os programas (MBASIC é um exemplo notável) foram capazes de criar nomes de arquivos contendo letras minúsculas, que não poderiam ser facilmente referenciadas na linha de comando.
Cada unidade de disco foi identificada por uma letra de unidade, por exemplo, unidade A
e 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 File Control Block (FCB) do arquivo pelo sistema operacional. Como 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 eram finalizados com um caractere control-Z (ASCII SUB, hexadecimal 1A). Determinar o final de um arquivo de texto envolveu, portanto, examinar o último registro do arquivo para localizar o controle Z de terminação. 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.
Os carimbos de data/hora de modificação de arquivo não eram compatíveis com versões anteriores ao CP/M 2.2, mas eram um recurso opcional no MP/M e no 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 mudar de usuário bastava 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 os sistemas operacionais CP/M e derivados era tornar uma área de usuário acessível ao usuário, independente da área de usuário atualmente definida. Um comando USER permitiu que a área do usuário fosse alterada para qualquer área de 0 a 15. O usuário 0 era o padrão. Caso se mudasse para outro usuário, como USUÁRIO 1, o material salvo no disco para este usuário ficaria disponível apenas para o USUÁRIO 1; O USUÁRIO 2 não conseguiria vê-lo ou acessá-lo. Porém, 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, uma vez que os arquivos do USER 0 eram visíveis apenas para alguém logado como USER 0. O recurso de área do usuário provavelmente tinha pouca utilidade em disquetes pequenos, mas era útil para organizar arquivos em máquinas com disco rígido. unidades. A intenção do recurso era facilitar o uso do mesmo computador para tarefas diferentes. Por exemplo, uma secretária poderia fazer a entrada de dados e, depois de trocar de área de USUÁRIO, outro funcionário poderia usar a máquina para fazer o faturamento sem que seus arquivos se misturassem.
Gráficos
Embora existissem sistemas S-100 com capacidade gráfica desde a comercialização do barramento S-100, a CP/M não forneceu 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ó podia exibir gráficos e diagramas artísticos ASCII rudimentares em 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 para caracteres gráficos de bloco e eram acessíveis a programadores assembler 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.
Derivados
Oficial
Algumas empresas fizeram melhorias oficiais do CP/M com base no código-fonte da Digital Research. Um exemplo é o IMDOS para o computador IMSAI 8080 fabricado pela IMS Associates, Inc., um clone do famoso Altair 8800.
Compatível
Outros sistemas operacionais compatíveis com CP/M foram desenvolvidos de forma independente e não fizeram uso do código da Digital Research. Alguns exemplos contemporâneos foram:
- Cromemco CDOS de Cromemco
- MSX-DOS para a gama MSX de computadores é compatível com CP/M e pode executar programas CP/M.
- O Epson QX-10 enviado com uma escolha de CP/M ou o TPM-II compatível ou TPM-III.
- O SAM Coupé compatível com o British ZX Spectrum tinha um sistema operacional opcional compatível CP/M-2.2 chamado Pro-DOS.
- Os computadores da série 6xxx (baseados em disco) e da série PCW foram empacotados com um pacote de disco CP/M.
- O Husky (computador) executou um carregador de programa baseado em menus ROM chamado DEMOS que poderia executar muitas aplicações CP/M.
- ZSDOS é um substituto BDOS para CP/M-80 2.2 escrito por Harold F. Bower e Cameron W. Cotrill.
- CPMish é um novo sistema operacional compatível com FOSS CP/M 2.2 que originalmente não continha nenhum código DR. Ele inclui ZSDOS como seu BDOS e ZCPR (veja anteriormente) como processador de comando. Desde Bryan Sparks, o presidente dos proprietários do DR Lineo, concedeu permissão em 2022 para modificar e redistribuir o código CP/M, o desenvolvedor David Given está atualizando o CPMish com algumas partes do original DR CP/M.
- LokiOS é um sistema operacional compatível CP/M 2.2. A versão 0.9 foi lançada publicamente em 2023 por David Kitson como um exercício solo-escrito do Sistema Operacional, destinado ao Projeto Open Spectrum e inclui código fonte para o BIOS, BDOS e Command-line_interface, bem como outros aplicativos e drivers de suporte. A distribuição também inclui código de origem DR original e um utilitário para permitir que os usuários para componentes do sistema operacional hot-swap (por exemplo, BDOS, CCP) na mosca.
Melhorias
Alguns sistemas operacionais compatíveis com CP/M ampliaram a funcionalidade básica a ponto de excederem em muito o original, por exemplo, o TurboDOS com capacidade para multiprocessador.
Bloco Oriental
Existiam vários derivados do CP/M-80 no antigo Bloco de Leste sob vários nomes, incluindo SCP (Programa de Controle de Usuário Único
), 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 CP/M-86 denominados SCP1700, CP/K e K8918-OS. Eles foram produzidos pela 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 nas primeiras versões do Windows) foram originalmente adotadas no CP/M. Os caracteres curinga correspondentes usados pelo Windows (? e *) são baseados naqueles do CP/M, assim como os nomes de arquivos 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 normalmente usavam; quando os discos rígidos apareceram, eles foram designados como C, que sobreviveu no MS-DOS como o prompt de comando C:>
. O caractere de controle ^Z marcando 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 .TXT
ou .COM
ainda são usadas para identificar tipos de arquivos em muitos sistemas operacionais.
Em 1997 e 1998, a Caldera lançou alguns binários e códigos-fonte do CP/M 2.2 sob uma licença de código aberto, permitindo também a redistribuição e modificação de outros arquivos coletados da Digital Research relacionados às famílias CP/M e MP/M por meio de Tim O "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 ampliada 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 marcar o 40º aniversário da primeira apresentação do CP/M, o Museu de História da Computação lançou as primeiras versões do código-fonte do CP/M.
A partir de 2018, há uma série de pessoas e grupos ativos de computadores vintage, de hobby e retro, e algumas pequenas empresas comerciais, ainda desenvolvendo e dando suporte a plataformas de computador que usam CP/M (principalmente 2.2) como sistema operacional host.
Contenido relacionado
BIOS
Abatis
Kazaa