Transferring Files to and from CP/M .D71 Disk Images Using ctools

Using Vice to emulate a Commodore 128 running CP/M works very well, but it isn't easy to get CP/M files directly onto and off a .D64/.D71 disk image. The easiest way to do this under Linux is to use ctools.

Building ctools

First you need to get the source files for ctools, for this we can use wget:

$ wget https://github.com/mist64/ctools/archive/master.zip
$ unzip master.zip

To build the executables:

$ cd ctools-master/src
$ make
$ make install

The executable files are now in ctools-master/bin. You will probably find it useful to copy them to somewhere like ~/bin to make them easier to access.

Using ctools

ctools is fairly straightforward to use and most of the time you will only use two of the programs: cformat and ctools.

Creating a Formatted CP/M Disk Image

cformat allows us to create CP/M disk images and I find it most useful to create double sided C128 disk images using the -2 switch.

To create a disk image called work.d71:

$ cformat -2 work.d71

Working With Files on the Image

Once we have a disk image we can transfer files, erase files, show the directory, etc using the ctools command.

To copy all the .txt files from the current directory onto the disk image, work.d71:

$ ctools work.d71 p *.txt

To display the files on the image:

$ ctools work.d71 d

To get all the .txt files from the disk image and put them in the current directory:

$ ctools work.d71 g "*.txt"

Video of ctools

ctools can be seen being used to transfer files to a .D71 disk image which is then read under an emulated C128 running CP/M on Vice below.

Creative Commons License
Transferring Files to and from CP/M .D71 Disk Images Using ctools by Lawrence Woodman is licensed under a Creative Commons Attribution 4.0 International License.

Share This Post

Feedback/Discuss

Sign up to get new articles straight to your inbox.

Delivered by FeedBurner

Related Articles

Emulating a CP/M System With z80pack

z80pack is great for creating an emulated CP/M system. It can either be used to create a general CP/M system or can emulate a specific system such as an IMSAI or ALTAIR including a graphical front-pan...   Read More

Basic Line Storage on the VIC-20

BASIC programs are stored in memory using a simple structure that we can investigate and manipulate. This article will show how they are stored and contains a BASIC program to go through each line of ...   Read More

Programming in Assembly with VICMON on the VIC-20

VICMON is a machine language monitor released by Commodore in 1982 and is great for programming the VIC-20. Its interactive nature means that it can often be quicker to develop via this rather than us...   Read More

Storing Machine Code in REM Statements on the VIC-20

BASIC programs often contain machine code routines but they take up quite a lot of space in BASIC. An interesting way to reduce the amount of space that they take is to store the machine code in REM s...   Read More

Re-execute Programs in Memory on CP/M

After a transient program terminates on CP/M it's often possible to re-execute it in memory without having to reload it from disk. This is a great little trick if using slow disks as it's much quicke...   Read More