我正在寻找一些(命令行)工具,可以将 Unix 或 Linux 计算机上的主机文件与 Commodore.D71和类似 CP/M 格式的图像文件进行传输。我现在的具体用例是,一位朋友拥有一台 Commodore 128 和一台 Ultimate II+ 或类似设备,我们想开发 CP/M 软件并将文件复制.COM到图像中,以便我们可以在真正的 Commodore 128 上测试它们。

我找到了一些 Windows 程序,但 Unix 的东西很少。到目前为止,我只从上找到了 CTools 0.4 ,它声称可以在 Unix 下构建,但编译失败,因为无法找到 new.h,它似乎是 Windows 独有的头文件,所以我不确定这是怎么回事。

0


最佳答案
2

这并没有直接回答问题,但是对于评论来说太长了……

CTools 需要进行一些修改才能使用现代 C++ 编译器进行构建(这看起来很公平,毕竟它只有 27 年的历史)。

  • new.h不是 Windows 标头,它已过时(但仍随new.hWindows C++ 编译器一起提供);它提供了现在在 中std并在 中声明的new。要修复该问题,请编辑err.cc,将其替换#include <new.h>#include <new>,并将set_new_handler其替换为std::set_new_handler

  • tools.cc尝试在不进行显式强制转换的情况下将 a 转换const char *为非 – ;在第 304 行添加一个:const

    t = (char *) strrchr(filename, '/');
    
  • makefile.unx还尝试使用常规cc链接,但因 C++ 程序需要而失败libstdc++;要修复该问题,请运行

    make -f makefile.unx CC=g++
    

    (假设您正在使用g++)。

2

  • 1
    哈哈,我刚刚看到这个问题,按照上面的方法,我陷入了困境,得意洋洋地来到这里发布答案,却发现已经有一个答案了。干得好!


    – 

  • 2
    显然,这项工作相当受欢迎,因为 Michael Steil 不久前也做过:。(我刚刚测试过,在 Debian 12 上只需 就可以编译成功cd src && make。)


    – 


在 Debian 上,有一个cpmtools包:

$ apt-cache show cpmtools
Package: cpmtools
Version: 2.23-4
Installed-Size: 493
Maintainer: Bdale Garbee <bdale@gag.com>
Architecture: amd64
Depends: libc6 (>= 2.34), libdsk4 (>= 1.5.4+dfsg), libncurses6 (>= 6), libtinfo6 (>= 6)
Description-en: Tools to access CP/M file systems
 This package allows access to CP/M file systems similar to the well-known
 mtools package, which accesses MSDOS file systems.
 .
 All CP/M file system features are supported.

上游源代码在

不确定这与 Commodore 磁盘映像配合得如何,基本上你需要一个代表块(或软盘之类的设备)的普通文件。


的代码后,似乎 Commodore CP/M 格式对 CP/M 块到磁道/扇区的映射不规则,如果不在代码中插入某种类似的转换,这在 cpmtools 中甚至对于原始磁盘格式也无法工作。

尽管如此,仍将这个答案留在这里以供参考。

3

  • 我查看了cpmtoolsdiskdefs 文件中没有找到任何 Commodore 格式的条目。


    – 

  • 这就是我写“我不知道这会有多好用”的原因。看起来 D71 是一种“原始”格式,所以如果 Commodore CP/M 布局在某处有文档记录,那么可能可以在那里添加一些条目。如果你能把 D71 文件放到网上某处,我可以试试。


    – 

  • 提供了几张图片。快速浏览了 ctools 源代码后,我怀疑格式可能是 CBM 和 CP/M 的组合,因为我认为我看到它正在更新块地址映射。


    –