---
name: "dskutil"
section: "1"
platform: "linux"
package: "libdsk-utils"
version: "1.5.9+dfsg-1+b2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/dskutil"
---

# dskutil(1)

Simple sector edtor for discs and disc images.

## NAME

dskutil - Simple sector edtor for discs and disc images.

## SYNOPSIS

**dskutil** \[*-type TYPE*\] \[*-side SIDE*\] \[*-comp COMP*\] \[*-dstep*\] \[*-retry COUNT*\] \[*-format FMT*\] *DISKIMAGE*

## DESCRIPTION

dskutil is an interactive command-driven sector editor, patterned after  the venerable CP/M sector editor DU90. This explains some of its  idiosyncracies, such as the fact that commands deal in logical track numbers but physical sector numbers.

## OPTIONS

- **-type TYPE**

  Determines which LibDsk driver is to be used to access the disc.

  - **auto**

    Select according to the disc image file. This is the default.

  - **dsk**

    Use the DSK (CPCEmu format) image driver.

  - **edsk**

    Use the extended version of the DSK format.

  - **floppy**

    Use the floppy driver.

  - **myz80**

    Use the hard disk (MYZ80 format) image driver. (This format cannot be autodetected.)

  - **cfi**

    Use the CFI (DOS fdcopy format) image driver. (This format cannot be autodetected.)

  - **apridisk**

    Use the ApriDisk image driver (from the utility of the same name). (This format cannot be autodetected.)

  - **raw**

    Use the raw driver.

- **-comp COMP**

  Select the compression method used on the disc image file (has no effect when reading a floppy disc).

  - **auto**

    Detect from the first few bytes of the file. This is the default.

  - **sq**

    Huffman coded (SQ / USQ).

  - **gz**

    Gzipped (gzip / gunzip).

  - **bz2**

    Burrows-Wheeler compressed (bzip2 / bunzip2).

- **-side SIDE**

  Determines which side (0 or 1) of the source disc is to be scanned. If this  option is not present both sides will be scanned.

- **-dstep**

  Double-step the source drive (used to read 360k discs in 1.2Mb drives). Only supported by the Linux floppy driver.

- **-retry COUNT**

  Set the number of times to attempt a read/write/format in case of error.

- **-format FMT**

  Do not autodetect the disc format; use the named format. The format need only be an approximation to the actual format used by the disc.

- **-first CYL**

  Start scanning at the specified cylinder.

- **-last CYL**

  Scan up to and including the specified cylinder.

## COMMANDS

The following single-letter commands are used. Operands in brackets  such as  \[filename\] are optional. Numeric inputs are shown as nn for decimal, and  xx for hex. In either case, prefixing the number with "#" selects the alternate number system.

Multiple commands on a line are allowed, separated by semicolons.

- \+\[x\]

  Increase the current sector number by  *\[x\]* and read the resulting sector, incrementing the track if necessary.

- \-\[x\]

  Decrease the current sector number by  *\[x\]* and read the resulting sector, decrementing the track if necessary.

- \#

  Display the disc geometry for the current drive/disc image.

- $\[variable\[=value\]\]

  View and amend the geometry. "$" by itself shows all possible variables with their current values; "$variable" shows the value of one variable; and  "$variable=value" sets a new value. Note that changing the size of the sector with "$secsize=nn" will cause the current sector buffer and clip buffer  to be cleared.

- \=ascii

  Search for an ASCII string, starting at the current sector. Hex codes can  be included in the ASCII by surrounding them with angle brackets - for example, to search for the word "Hello" at the start of a line, you could use  "=\<0A\>Hello". The search string is case-sensitive.

- \<

  Save the currently-loaded sector to a clip buffer.

- \>

  Restore the contents of the clip buffer to the current sector buffer.

- ?

  Display a command summary.

- A\[from,to\]

  Dump the contents of the sector buffer as ASCII. If  *from* and *to* are included, then only values between those offsets will be shown.

- CHoffset,value,value,value...

  Change bytes in the current sector buffer. The offset and values are in hex.

- CAoffset,ascii

  Replace bytes in the current sector buffer with an ASCII string. As with  the "=" command, the ASCII can contain embedded hex bytes in angle brackets.

- CHfrom-to,value,value,value...

  The same as CH above, but fills the range from  *from* to *to* with the byte sequence, repeating or truncating it as necessary.

- CAfrom-to,ascii

  The same as CHfrom-to, except that the byte sequence is specified as ASCII.

- D\[from,to\]

  Dump the contents of the sector buffer as ASCII and hex.

- Gxx

  Go to logical sector number *xx*

- H\[from,to\]

  Dump the contents of the sector buffer as hex.

- Kfilename

  Save all "yanked" sectors (see Y below) to the specified file. This also  clears them from memory.

- Lfilename\[,type\[,compression\]\]

  Open a new drive or disc image. If this has a different sector size from the  current sector size, the sector buffer and clip buffer will be cleared.

- N\[geometry\]

  Change geometry. N by itself re-runs the automatic probe; N with the name of a geometry selects one of the formats known to LibDsk.

- R

  (Re)read the current sector.

- Snn

  Set the current sector number, and read.

- Tnn

  Set the current track number. Does not read.

- V

  Compare the contents of the sector buffer with the current sector on disc.

- W

  Write the sector buffer to disc.

- X

  Leave dskutil.

- Y

  Append the current sector to a "yank" buffer. It can then be saved with the K command.

- Z\[nn\]

  Sleep for  *nn* seconds; if *nn* is not present, sleeps for one second.

- /nn

  This must be the last command on a line. It repeats the preceding line  *nn* times.

## BUGS

On platforms with no [sleep(3)](/sleep/3.md) function, the Z command works by busy-waiting.

Commands are always input using [fgets(3)](/fgets/3.md), even when the host system  provides a more sophisticated input method such as [readline(3)](/readline/3.md).

While the current feature set is a fairly good match for DU90 (less the features specific to the CP/M filesystem) it doesn't cover all the  features of LibDsk.

## AUTHOR

John Elliott \<seasip.webmaster@gmail.com\>.
