在 SIMH 中运行 CII Mitra-15。开发中。
French CII's Mitra-15 in SIMH. Work in Progress

原始链接: https://github.com/JPLeRouzic/Mitra-15-for-SIMH

该项目旨在为 CII Mitra-15 开发一款功能性模拟器,这是一款 20 世纪 70 年代在法国广泛使用的 16 位小型计算机。通过适配现有的 SIMH 框架,该项目致力于保护一段目前缺乏可用软件和文档的计算机历史。 该模拟器目前已包含一个可运行的 SIMH 环境、完整的指令译码器,以及用于基础 I/O 和磁盘设备的代码。开发者正根据遗留的十六进制转储文件,一丝不苟地重建原始的 MTR(实时监控程序),以作为验证基准。未来的目标是将 RSX280 操作系统移植到该平台。尽管该项目尚处于初步阶段,且面临着缺乏外设文档以及 Mitra-15 本身不支持原生堆栈等挑战,但它代表了对该架构独特功能(如微代码 I/O 处理和“挂起”系统)进行归档的专注努力。该代码专为在 Linux 系统上运行而设计,并使用了 openSIMH 环境。

抱歉。
相关文章

原文
image https://ajovomultja.hu/mitra-15

A Mitra-15 Simulator for SIMH

This is a preliminary version. For now, my code compiles, but it is still not a true Mitra-15 simulator; rather, it is a tentative effort. Many thanks to Pascal Chour for the very useful documentation available on his website: https://www.pascalchour.fr/ressources/cii/mitra15.htm

As my C is rusty (pun is intended) I started with an existing SDS 940 simulator for SIMH and slowly modified it towards Mitra-15's characteristics.

The Mitra-15 is a microcomputer that features interesting concepts, such as the ability to program input/output peripherals using microcode, instead of using an external mechanism such as DMA. https://en.wikipedia.org/wiki/Mitra_15

The Mitra-15 was a 16-bit minicomputer developed by CII (Compagnie Internationale pour l'Informatique) in the early 1970s. It was widely used in industrial automation, scientific computing, education, and military applications. I never programmed on Mitra-15, but I learned CS on a CII 10070 and later I worked at France Telecom which had telephone exchanges piloted with the Mitra family.

Although it was once widespread in France, very little software and documentation has survived. This project contributes to the preservation of this important part of computing history.

This Mitra-15 simulator is intended to eventually include:

- System and optional instructions
- Extensive comments describing the original hardware behavior
- SIMH console support
- Memory management
- Interrupt, fast interrupt, suspensions and trap systems
* printer
* analogic interface
* punched_tape
* DRI fixed disk
* sagem fixed disk
* card reader
* magnetic tape reader
- Various I/O devices, but I lack documentation for many of those peripherals:
* asynchronous channels 
* synchronous channels 
* fast channel multiplexed
* fast channel ADM (no idea what it is)
* IOPs (if it's not the same as asynchronous channels).

To this day I did:

  • search for and analyzed the few remaining documents (see /doc folder).
  • create a working SIMH environment for SIMH (deposit/examine/run/break/etc)
  • create a complete instruction decoder for each instruction and addressing mode
  • create code for common Mitra and CII devices
  • create a convincing (not tested) code for RD and WD instructions for simple communication with devices such as ASR33 or line printer.
  • create a convincing (not tested) code for DRI disks (UK's Data Recording Instrument) that uses the suspension system, the CII invention that aims at a similar goal as modern DMA.
  • create a test program.
  • test the branch instructions in RP (immediate in modern parlance) addressing mode, so at least this part should be correct.
  • I have also set out to reconstruct CII's MTR (Real-Time Monitor) from a hexadecimal dump found in a PDF file; however, as the OCR output is abysmal, I have to visually verify every single byte. This will likely be the only piece of original CII code against which my simulator is tested, as everything else will have to be inferred from the documentation. It is therefore crucial that this test be successful.
  • It's not useful but I have also created a rudimentary assembler (not tested).

On the long term I have plans to port RSX280 (RSX-11 clone) to the Mitra. Z80's BC and DE are similar to L and G registers, IX is an index register as Mitra's X, A and HL resemble to A and E. Main problems: Mitra has less registers, less addressing modes than the Z80, and it lacks a concept of a stack, which makes managing reentrancy complicated.

  • GCC or Clang
  • Make
  • Linux (tested)
  • A recent version of openSIMH

Within the SIMH monitor, you can then load memory, examine registers, and execute Mitra-15 programs.

Many thanks to:

联系我们 contact @ memedata.com