Indrekis
Indrekis

Categories

  • retrocomputing
  • cpm
  • CP/M

Tags

  • CP/M
  • retrocomputing

RunCPM

Існують емулятори конкретних систем, на яких можна виконувати код CP/M, портованих для них. Але існують і генералізовані емулятори, що дозволяють працювати з CP/M безпосередньо, емулюючи тим чи іншим способом диски та інші засоби комунікації з залізом.

Вони дуже корисні для розробки під цю ОС.

Не претендуючи на повноту охоплення, після тривалих пошуків і випробування кількох варіантів, зупинився на RunCPM.

  • Open source. ‘‘З коробки’’ скомпілювалася зразу.
  • Для емуляції дисків використовує директорії хостової ОС, з іменами A, B, C тощо, де директорії з іменами 0, 1, …, 15, відповідають файлам користувачів із такими номерами. Це доволі зручно!
  • Підтримує Arduino – може бути основою емуляторів з апаратною складовою, але сам я цього не перевіряв.
  • Підтримується друк, буде відбуватися у файл LST.TXT (або PUN.TXT).
  • Підтримує скриптування за допомогою LUA! (Не на Arduino).
  • Підтримується CP/M 2.2, 3.0 обіцяють з часом, але поки ще ні.
  • Термінал – ANSI/VT100.
  • Емуляція дисків, природно, неточна, не підтримуються атрибути.
  • Також, автор ділиться своєю колекцією софта для CP/M, вже підготовленою для роботи з емулятором.

Директорії із дисками шукає у тій директорії, де лежать виконавчий файл емулятора.

Системні файли знаходяться в A.ZIP. Також, A.ZIP містить багато цікавих утиліт, аж по [TE.COM].

Підтримує кілька варіантів CCP – командних інтерпретаторів, включаючи ZCP – вибір здійснюється під час компіляції, за допомогою файлу globals.h:

/* Definition of which CCP to use (must define only one) */
#define CCP_INTERNAL // If this is defined, an internal CCP will emulated
//#define CCP_DR
//#define CCP_CCPZ
//#define CCP_ZCPR2
//#define CCP_ZCPR3
//#define CCP_Z80

Там також можна включити підтримку LUA:

#define HASLUA	

Після перекомпіляції можна забрати виконавчий файл емулятора директорії RunCPM/CCP.

Компілював під Windows з використанням MSYS2/MinGW64:

$ git clone https://github.com/MockbaTheBorg/RunCPM
$ cd RunCPM
$ make mingw build 

Отриманий RunCPM.exe можна скопіювати, куди зручно – від DLL MinGW64 він не залежить.

Далі потрібно у тій директорії створити директорії A, B тощо – скільки потрібно. В A/0 – розархівувати вміст RunCPM/DISK/A.ZIP, і можна запускати. Виглядає це так:

Багато скріншотів будуть також в розділі '’Текстовий редактор’’ – використовував для компіляції цього редактора.

Компіляція за допомогою MS Visual Studio підтримується, але я не випробовував.

Вихід – за допомогою EXIT.COM.