Algumas experiências por diversão com CP/M-86. O foco está no IBM XT CP/M-86 e nos derivados no PC. Mas a maioria das ferramentas trabalha com o Just4Fun V20-MBC SBC.
A fonte do documento CP/M-86, fontes e binários é http://www.cpm.z80.de.
Uma distribuição limpa e kernel estão disponíveis em https://github.com/tsupplis/cpm86-kernel. Essa distribuição está funcionando bem em ambientes virtuais, corrigidos com todos os patches conhecidos, 'y2k' amigável (ele contém a versão do TOD, quais fontes estão neste projeto) e amigáveis.
INF: Usage: ls [-h] | [-a] [-p] [-s|-r] [-l|-b] filepat
INF: File listing utility
INF: where filepat is [user/]filespec with wildcard
INF: -h for help
INF: -a for all files (including system)
INF: -p for for pausing one screen at a time
INF: -s for alphabetic sorting
INF: -r for reverse alphabetic sorting
INF: -l for long listing
INF: -b for basic listing
INF: Usage: rm [-h] | [-a][-i] filepat
INF: File delete utility
INF: where filepat is [user/]filespec with wildcard
INF: -h for help
INF: -a to include both dir and sys files
INF: -i for user validation per file
INF: -f force file deletion even if read only
INF: Usage: more -h | [infile]
INF: File paging utility
INF: where infile is [user/]filespec
INF: -h for help
INF: Usage: write -h | [-a] filename
INF: File write/create utility
INF: where filename is [user/]filespec
INF: -h for help
INF: -a to happen to existing file
(Ctrl-C ou Ctrl-Z usado para terminar a entrada)
INF: Usage: dump -h | [-p][-r] [infile]
INF: Hexa file dump utility
INF: where infile is [user/]filespec
INF: -h for help
INF: -p pausing every page
INF: -r raw output
INF: Usage: mode -h | option option ...
INF: Console configuration utility
INF: -h for help
INF: and options:
INF: cls Clear screen
INF: cursor=on Show cursor
INF: cursor=off Hide cursor
INF: statln=on Show status line
INF: statln=off Hide status line
INF: status= Set status line message
INF: fg= Set foreground color (1-F)
INF: bg= Set background color (1-F)
INF: Usage: touch [-h] | filespec
INF: Empty file creation utility
INF: -h for help
INF: Usage: wc [-h] | [-a] filepat [filepat] ...
INF: File word/line/character count utility
INF: where filepat is [user/]filespec with wildcard
INF: -h for help
INF: -a to include both dir and sys files
INF: Usage: printenv [-h]
INF: Display environment variables
INF: -h for help
Para o status, ( s: espaço, \: , u: superior, l: inferior)
As ferramentas ATINIT, RTCINIT e PCEINIT fornecem um dump de configuração rápida equivalente a quais CP/M-86 1.1 exibem na inicialização
CP/M-86 1.1, BDO 2.2
Hardware Configuration:
- System Memory: 640Kb
- Available Memory: 607Kb
- Math Coprocessor: No
- Floppy Drive(s): 2
- Hard Disk(s): 1
- Parallel Port(s): 1
- Serial Port(s): 2
Date now: 2021-9-27 22:17:39.0
Todas as ferramentas C (rm, ls, modo, mais, gravação, despejo) se beneficiam do padrão de especificação do arquivo do asteca C: [Usuário]/[drive]: [FileSpec]. Além disso, os redirecionamentos básicos <arquivo e> são suportados.
A menos que mencionado o contrário, todas as ferramentas estão trabalhando
Para os seguintes operacionais, apenas as ferramentas de arquivos funcionam bem. Interagir com o BIOS é geralmente proibido (Atinit/Attime e Pceinit/Pcetime) ...
Esses sistemas operacionais funcionam incrivelmente bem no PCE em imagens de disquete e HD. Este emulador é simples, pequeno e funciona. Fantástico...


LINK86 Linkage Editor 02/Feb/87 Version 2.02
Cross Linker: DOS -> CPM-86 & CDOS-286 1/2/86
RASM-86 Assembler 12-Mar-87 PC-DOS Version 1.4a
Para um ambiente rudimentar de desenvolvimento cruzado, consulte (https://github.com/tsupplis/cpm86-crossdev).
Alguns scripts de envio/lote são fornecidos para DOS (AZTEC 3.4) e CP/M-86 (AZTEC 3.2) também estão disponíveis.
Apesar de ser um sistema operacional muito primitivo (em alguns casos realmente divertida ... sem gerenciamento de tempo fora do relógio, por exemplo), é possível fazer uma quantidade de coisas com algumas boas ferramentas:
A grande coisa legal com este pequeno sistema operacional é o quão pequeno é. Eu nunca configuro mais de 128k na minha PCE VM e uma única pessoa pode jogar como um hobby com ele. Como mencionado anteriormente, ele também funciona super bem com o Just4Fun V20-MBC SBC (https://hackaday.io/project/170924-v20-mbc-a-v20-8088-8080-cpu-homebrew-computer). Cool outra coisa: é compatível com Y2K com a substituição de TOD acima e um pequeno hack visual. Sim, sem gerenciamento de data ...
Torna as fontes iniciais do MS-DOS como atraentes. O MS-DOS 2.x é muito mais flexível e possui um ecossistema maior que o CP/M-86. Isso torna mais um desafio ;-)
As ferramentas de DR estão disponíveis no (http://www.cpm.z80.de/binary.html) e muitas outras fontes. Encontrei o último lançamento de Turbo Pascal e Poly Pascal em um site dinamarquês muito exaustivo focado nos computadores da série RC700 que, a propósito, também são imitados pelo PCE. Eles não são compatíveis com PC, mas ambos Pascal são genéricos e trabalham na família CP/M-86 baseada em PC IBM.
Mas os arquivos precisam ser extraídos das imagens de disco usando CPMTools usando a seguinte definição:
diskdef rc75x
seclen 1024
tracks 154
sectrk 8
blocksize 2048
maxdir 512
boottrk 4
os 3
end
O Turbo Pascal 3.01a é a última liberdade no CP/M-86 (não se esqueça de configurá-lo usando Tinst) e está em inglês. Poly Pascal também está em inglês, mas o arquivo de mensagens e a ajuda on -line estão em dinamarquês. Não é grande coisa para traduzi -los. Poly Pascal é realmente um irmão gêmeo, irmão ou ancestral de Turbo Pascal. É legal brincar com isso.
Macro assembler, C, Pascal, estrutura básica ... o que mais precisamos?
A compilação cruzada pode ser feita usando a emulação do DOS (EMU2, PCE) ou usando um sistema operacional híbrido
... Execute todas as ferramentas acima (tanto na versão DOS quanto CP/M) e você pode testar diretamente os binários CMD.
Existem alguns emuladores CP/M-86 para DOS (infelizmente (AME86.EXE, CPM86.EXE) suas fontes não devem ser vistas em nenhum lugar e elas precisam de um pouco de manutenção. Apenas programas rudimentares funcionam.
Finalmente, a montagem usando ASM86 e GENCMD também pode ser feita, mas precisa ser feito em ambientes CP/M (derivados CP/M-80 ou CPM-86 podem ser usados)
No entanto, não há um pouco o lado das ferramentas ... então vou portar ferramentas pouco a pouco para o conforto.
Ainda é um pouco engraçado de descoberta e arqueologia ...