CP/M — различия между версиями

Материал из MK90.ORG wiki
Перейти к:навигация, поиск
(Новая страница: «'''CP/M''' (сокращение от '''Control Programs for Microcomputers''') — широко распространенная операционная си…»)
 
Строка 11: Строка 11:
 
* минимум один накопитель на floppy-дисках;
 
* минимум один накопитель на floppy-дисках;
  
The only hardware system that CP/M, as sold by Digital Research, would support was the Intel 8080 Development System. Manufacturers of CP/M compatible systems customized portions of the operating system for their own combination of installed memory, disk drives, and console devices. CP/M would also run on systems based on the Zilog Z80 processor since the Z80 was compatible with 8080 code. While the Digital Research distributed core of CP/M (BDOS, CCP, core transient commands) did not use any of the Z80-specific instructions, many Z80 based systems used Z80 code in the system specific BIOS, and many applications were dedicated to Z80 based CP/M machines.
+
Единственной поддерживаемой аппаратной платформой, распространяемой Digital Research, была MDS-800 - инструментальная среда разработки для Intel для платформы 8080. Производители совместимых с CP/M систем должны были кастомизировать части операционной системы под установленный размер памяти, тип и количество дисковых накопителей, консольные устройства. CP/M совместима с процессором Zilog Z80, в силу преемственности по объектному коду. В поставляемом Digital Research ядре CP/M (BDOS, CCP и основные загружаемые команды) не использовались инструкции Z80, однако это не мешало их использовать в специфичном для конкретной машине BIOS и загружаемых приложениях.
  
On most machines the bootstrap was a minimal bootloader in ROM combined with some means of minimal bank switching or a means of injecting code on the bus (since the 8080 needs to see boot code at Address 0 for start-up, while CP/M needs RAM there); for others, this bootstrap had to be entered into memory using front panel controls each time the system was started.
+
Обычно бутстрап выполнялся небольшим загрузчиком в ПЗУ, в сочетании с переключением банков памяти или подстановкой кода на шину (поскольку 8080 после сброса начинал выполнение программы с нулевого адреса, а для нормальной работы CP/M там должна располагаться RAM); для других этот бутстрап должен был вводиться в память с помощью элементов управления передней панели при каждом запуске системы.
  
 
CP/M использует 7-битный набор ASCII, использование остальных 128 символов не определено. В зависимости от конкретной системы, старший бит может использоваться произвольно - от кодирования национальных алфавитов до определения признака подчеркивания или окончания слова. Обычно интернациональные реализации используют стандарт ISO 646 norm для локальных сиволов, заменяя отдельные ASCII-символы, вместо того, чтобы располагать их за 7-битной границей.
 
CP/M использует 7-битный набор ASCII, использование остальных 128 символов не определено. В зависимости от конкретной системы, старший бит может использоваться произвольно - от кодирования национальных алфавитов до определения признака подчеркивания или окончания слова. Обычно интернациональные реализации используют стандарт ISO 646 norm для локальных сиволов, заменяя отдельные ASCII-символы, вместо того, чтобы располагать их за 7-битной границей.
 +
 +
=== Компоненты ОС ===
 +
 +
Загруженная в память CP/M на 8-битных системах содержит три основных компонента:
 +
 +
* BIOS - Basic Input/Output System, базовая подсистема ввода-вывода;
 +
* BDOS - Basic Disk Operating System, базовая дисковая подсистема;
 +
* CCP - Console Command Processor, консольный командный процессор.
 +
 +
 +
The BIOS and BDOS were memory-resident, while the CCP was memory-resident unless overwritten by an application, in which case it was automatically reloaded after the application finished running. A number of transient commands for standard utilities were also provided. The transient commands resided in files with the extension .COM on disk.
 +
 +
The BIOS directly controlled hardware components other than the CPU and main memory. It contained functions such as character input and output and the reading and writing of disk sectors. The BDOS implemented the CP/M file system and some input/output abstractions (such as redirection) on top of the BIOS. The CCP took user commands and either executed them directly (internal commands such as DIR to show a directory or ERA to delete a file) or loaded and started an executable file of the given name (transient commands such as PIP.COM to copy files or STAT.COM to show various file and system information). Third-party applications for CP/M were also essentially transient commands.
 +
 +
The BDOS, CCP and standard transient commands were (ideally) the same in all installations of a particular revision of CP/M, but the BIOS portion was always adapted to the particular hardware. Adding memory to a computer, for example, meant that the CP/M system had to be reinstalled with an updated BIOS capable of addressing the additional memory. A utility was provided to patch the supplied BIOS, BDOS and CCP to allow them to be run from higher memory. Once installed, the operating system (BIOS, BDOS and CCP) was stored in reserved areas at the beginning of any disk which would be used to boot the system. On start-up, the bootloader (usually contained in a ROM firmware chip) would load the operating system from the disk in drive A:.
 +
 +
By modern standards CP/M was primitive, owing to the extreme constraints on program size. With version 1.0 there was no provision for detecting a changed disk. If a user changed disks without manually rereading the disk directory the system would write on the new disk using the old disk's directory information, ruining the data stored on the disk. From version 1.1 or 1.2 onwards, changing a disk then trying to write to it before its directory was read would cause a fatal error to be signalled. This avoided overwriting the disk but required a reboot and loss of the data that was to be stored on disk.
 +
 +
The majority of the complexity in CP/M was isolated in the BDOS, and to a lesser extent, the CCP and transient commands. This meant that by porting the limited number of simple routines in the BIOS to a particular hardware platform, the entire OS would work. This significantly reduced the development time needed to support new machines, and was one of the main reasons for CP/M's widespread use. Today this sort of abstraction is common to most OSs (a hardware abstraction layer), but at the time of CP/M's birth, OSs were typically intended to run on only one machine platform, and multilayer designs were considered unnecessary.
 +
 +
  
 
=== Источники ===
 
=== Источники ===
  
 
* Статья в Википедии: https://en.wikipedia.org/wiki/CP/M
 
* Статья в Википедии: https://en.wikipedia.org/wiki/CP/M

Версия 11:12, 22 января 2018

CP/M (сокращение от Control Programs for Microcomputers) — широко распространенная операционная система для процессоров Intel 8080/8085, первоначально предназначенная для 8-разрядных процессоров в однозадачном режиме и не более чем 64К памяти, позднее - для 16-разрядных процессоров и многопользовательского режима. Написана в 1973 году программистом Гэри Килдаллом из Digital Research на языке программирования PL/M (Programming Language for Microcomputers) [1]. Была вытеснена MS-DOS после того, как в 1981 была презентована платформа IBM PC.

Аппаратная модель

Минимальные требования к 8-битной системе с CP/M :

  • компьютерный терминал, поддерживающий набор символов ASCII;
  • микропроцессор Intel 8080 (позднее 8085) или Zilog Z80;
  • минимум 16 килобайт RAM (начиная с адреса 0)
  • A means to bootstrap the first sector of the diskette
  • минимум один накопитель на floppy-дисках;

Единственной поддерживаемой аппаратной платформой, распространяемой Digital Research, была MDS-800 - инструментальная среда разработки для Intel для платформы 8080. Производители совместимых с CP/M систем должны были кастомизировать части операционной системы под установленный размер памяти, тип и количество дисковых накопителей, консольные устройства. CP/M совместима с процессором Zilog Z80, в силу преемственности по объектному коду. В поставляемом Digital Research ядре CP/M (BDOS, CCP и основные загружаемые команды) не использовались инструкции Z80, однако это не мешало их использовать в специфичном для конкретной машине BIOS и загружаемых приложениях.

Обычно бутстрап выполнялся небольшим загрузчиком в ПЗУ, в сочетании с переключением банков памяти или подстановкой кода на шину (поскольку 8080 после сброса начинал выполнение программы с нулевого адреса, а для нормальной работы CP/M там должна располагаться RAM); для других этот бутстрап должен был вводиться в память с помощью элементов управления передней панели при каждом запуске системы.

CP/M использует 7-битный набор ASCII, использование остальных 128 символов не определено. В зависимости от конкретной системы, старший бит может использоваться произвольно - от кодирования национальных алфавитов до определения признака подчеркивания или окончания слова. Обычно интернациональные реализации используют стандарт ISO 646 norm для локальных сиволов, заменяя отдельные ASCII-символы, вместо того, чтобы располагать их за 7-битной границей.

Компоненты ОС

Загруженная в память CP/M на 8-битных системах содержит три основных компонента:

  • BIOS - Basic Input/Output System, базовая подсистема ввода-вывода;
  • BDOS - Basic Disk Operating System, базовая дисковая подсистема;
  • CCP - Console Command Processor, консольный командный процессор.


The BIOS and BDOS were memory-resident, while the CCP was memory-resident unless overwritten by an application, in which case it was automatically reloaded after the application finished running. A number of transient commands for standard utilities were also provided. The transient commands resided in files with the extension .COM on disk.

The BIOS directly controlled hardware components other than the CPU and main memory. It contained functions such as character input and output and the reading and writing of disk sectors. The BDOS implemented the CP/M file system and some input/output abstractions (such as redirection) on top of the BIOS. The CCP took user commands and either executed them directly (internal commands such as DIR to show a directory or ERA to delete a file) or loaded and started an executable file of the given name (transient commands such as PIP.COM to copy files or STAT.COM to show various file and system information). Third-party applications for CP/M were also essentially transient commands.

The BDOS, CCP and standard transient commands were (ideally) the same in all installations of a particular revision of CP/M, but the BIOS portion was always adapted to the particular hardware. Adding memory to a computer, for example, meant that the CP/M system had to be reinstalled with an updated BIOS capable of addressing the additional memory. A utility was provided to patch the supplied BIOS, BDOS and CCP to allow them to be run from higher memory. Once installed, the operating system (BIOS, BDOS and CCP) was stored in reserved areas at the beginning of any disk which would be used to boot the system. On start-up, the bootloader (usually contained in a ROM firmware chip) would load the operating system from the disk in drive A:.

By modern standards CP/M was primitive, owing to the extreme constraints on program size. With version 1.0 there was no provision for detecting a changed disk. If a user changed disks without manually rereading the disk directory the system would write on the new disk using the old disk's directory information, ruining the data stored on the disk. From version 1.1 or 1.2 onwards, changing a disk then trying to write to it before its directory was read would cause a fatal error to be signalled. This avoided overwriting the disk but required a reboot and loss of the data that was to be stored on disk.

The majority of the complexity in CP/M was isolated in the BDOS, and to a lesser extent, the CCP and transient commands. This meant that by porting the limited number of simple routines in the BIOS to a particular hardware platform, the entire OS would work. This significantly reduced the development time needed to support new machines, and was one of the main reasons for CP/M's widespread use. Today this sort of abstraction is common to most OSs (a hardware abstraction layer), but at the time of CP/M's birth, OSs were typically intended to run on only one machine platform, and multilayer designs were considered unnecessary.


Источники