OXYGENHUB
◆ main openmsx / doc / manual / diskmanipulator.html
16.2 KiB · HTML · last changed chore(): initial commit 1 month ago source blame history raw
e8555c89 Andy McCall 1
<!DOCTYPE html>
2
<html lang="en">
3
<head>
4
  <meta charset="utf-8">
5
  <link title="Purple" rel="stylesheet" href="manual-purple.css"
6
  type="text/css">
7
  <link title="Minty" rel="alternate stylesheet" href=
8
  "manual-minty.css" type="text/css">
9
  <link title="Plain" rel="alternate stylesheet" href="manual.css"
10
  type="text/css">
11
  <title>Using Diskmanipulator</title>
12
</head>
13
14
<body>
15
  <h1>Using Diskmanipulator</h1>
16
17
  <p>The <code>diskmanipulator</code> command is probably the most exuberant console command available
18
  in openMSX. It implements the basic stuff needed to handle files
19
  and subdirectories on MSX media. It also helps one creating new disk
20
  image files, both simple 360 kB and 720 kB disks as well as
21
  hard disk images containing partitions of 32 MB each for Sunrise IDE,
22
  or up to 4 GB for Nextor.
23
  Creating disk images and manipulating the files on them can be
24
  done without the need of a running emulated MSX (<code>set power
25
  off</code>).</p>
26
27
  <p>First we will see the generic syntax of the command, then
28
  the individual commands are explained in more depth. At the end
29
  of this document you will find some <a class="internal" href="#examples">examples of typical use</a>.</p>
30
31
  <div class="note">
32
    Note: hard disk like media (IDE and SCSI hard disks, SD cards) are only
33
    understood when they have a Sunrise IDE, Beer IDE 1.9RC1 or Nextor
34
    partition table, or no partition table at all (in which case the whole
35
    image is treated as a single volume). Only FAT12 and FAT16 partitions can
36
    be manipulated; FAT32 partitions are not supported. Images formatted by a
37
    SCSI BIOS that uses yet another partition table layout will report
38
    <code>No (or invalid) partition table.</code>
39
  </div>
40
41
  <div class="note">
42
    Note: manipulating a hard disk, SD card or CompactFlash image while the
43
    emulated MSX has it mounted can corrupt the image, because the MSX side
44
    does not notice the change and keeps using its cached FAT information. Use
45
    <code>set power off</code> first, or do the manipulation in a separate
46
    openMSX instance.
47
  </div>
48
49
  <h2>General Syntax</h2>
50
51
  <p>The general command syntax is always of the form:</p>
52
53
  <p><code>diskmanipulator &lt;command&gt; &lt;disk name&gt;
54
  &lt;command arguments&gt;</code></p>
55
56
  <p><code>&lt;command&gt;</code> specifies the action to be performed. The next section lists the commands available and explains them.</p>
57
58
  <p><code>&lt;disk name&gt;</code> specifies the disk to operate on. Typical values are: <code><a class="external" href="commands.html#disk">diska</a></code>, <code>diskb</code>, <code><a class="external" href="commands.html#hd">hda</a></code> or the special <code><a class="external" href="commands.html#disk">virtual_drive</a></code> device. <code>disk&lt;x&gt;</code> and <code>hd&lt;x&gt;</code> are the drives available to the running emulated MSX machine; <code>hd&lt;x&gt;</code> covers all hard disk like media, so IDE and SCSI hard disks as well as the SD cards of e.g. the MegaFlashROM SCC+ SD. This allows interaction with the currently used disk images.<br />
59
  In case the disk contains a Sunrise IDE, Beer IDE 1.9RC1 or Nextor compatible partition table you can add a partition number (starting at 1) to the disk name to specify on which partition the command will act. For example <code>hda2</code> is the second partition on the master IDE disk, <code>hdb3</code> is the third partition on the slave IDE disk.</p>
60
61
  <p><code>&lt;command arguments&gt;</code> depend upon the command involved, see the detailed descriptions of the commands below.</p>
62
63
  <p>The diskmanipulator and all its commands (including most parameters) can be tab completed in the console.</p>
64
65
  <h2>Commands</h2>
66
67
  <p>These are the commands understood by the diskmanipulator:</p>
68
69
  <ol class="inlinetoc">
70
    <li><a class="internal" href="#chdir">chdir</a></li>
71
72
    <li><a class="internal" href="#create">create</a></li>
73
74
    <li><a class="internal" href="#dir">dir</a></li>
75
76
    <li><a class="internal" href="#export">export</a></li>
77
78
    <li><a class="internal" href="#format">format</a></li>
79
80
    <li><a class="internal" href="#import">import</a></li>
81
82
    <li><a class="internal" href="#mkdir">mkdir</a></li>
83
84
    <li><a class="internal" href="#partition">partition</a></li>
85
86
    <li><a class="internal" href="#savedsk">savedsk</a></li>
87
  </ol>
88
89
  <h3><a id="chdir">chdir</a></h3>
90
91
  <div class="subsectiontitle">
92
    syntax:
93
  </div>
94
95
  <p><code>diskmanipulator chdir &lt;disk name&gt; &lt;MSX
96
  directory&gt;</code></p>
97
98
  <div class="subsectiontitle">
99
    explanation:
100
  </div>
101
102
  <p>This command selects the directory on the MSX disk image
103
  that will be used for the <code><a class="internal" href="#export">export</a></code> and <code><a class="internal" href="#import">import</a></code> commands.</p>
104
105
  <div class="note">
106
    Note: The directory structure on the MSX disk image cannot be tab
107
    completed.
108
  </div>
109
110
  <h3><a id="create">create</a></h3>
111
112
  <div class="subsectiontitle">
113
    syntax:
114
  </div>
115
116
  <p><code>diskmanipulator create &lt;dskfilename&gt;
117
  &lt;size|option&gt; [&lt;size|option&gt; ...]</code></p>
118
119
  <div class="subsectiontitle">
120
    explanation:
121
  </div>
122
123
  <p>You can create new disk images using this command.</p>
124
125
  <p>This new disk will be formatted using an MSX-DOS2 boot sector by default,
126
  an MSX-DOS boot sector if you specify the option <code>-dos1</code>,
127
  or a Nextor boot sector if you specify the option <code>-nextor</code>.</p>
128
129
  <p>If a size of 360 kB or 720 kB is given, a normal floppy disk image is
130
  created, single or double sided respectively. Any larger value will result
131
  in a Sunrise IDE hard disk image, or a Nextor one if the <code>-nextor</code>
132
  option is specified.</p>
133
134
  <p>You can specify multiple sizes in which case a Beer IDE 1.9, Sunrise IDE
135
  or Nextor compatible partitioned image will be created, see
136
  <code><a class="internal" href="#partition">partition</a></code> for more
137
  information. Each partition will be formatted as required.</p>
138
139
  <p>You can specify the disk/partition sizes by using the
140
  following postfixes:</p>
141
142
  <ul>
143
    <li>S or s -&gt; size in sectors</li>
144
145
    <li>B or b -&gt; size in bytes</li>
146
147
    <li>K or k -&gt; size in kilobytes (default)</li>
148
149
    <li>M or m -&gt; size in megabytes</li>
150
  </ul>
151
152
  <h3><a id="dir">dir</a></h3>
153
154
  <div class="subsectiontitle">
155
    syntax:
156
  </div>
157
158
  <p><code>diskmanipulator dir &lt;disk name&gt;</code></p>
159
160
  <div class="subsectiontitle">
161
    explanation:
162
  </div>
163
164
  <p>This will show the directory content of the current working
165
  directory. The output is formatted similarly to the MSX Disk BASIC 2.x command <code>files,l</code>.</p>
166
167
  <h3><a id="export">export</a></h3>
168
169
  <div class="subsectiontitle">
170
    syntax:
171
  </div>
172
173
  <p><code>diskmanipulator export &lt;disk name&gt; &lt;host
174
  directory&gt; [&lt;file|subdir&gt;...]</code></p>
175
176
  <div class="subsectiontitle">
177
    explanation:
178
  </div>
179
180
  <p>This will export the <code>&lt;file&gt;</code> or <code>&lt;subdir&gt;</code> from the disk
181
  inserted in <code>&lt;disk name&gt;</code> to the <code>&lt;host directory&gt;</code> on
182
  your host OS from the subdirectory selected by the <code><a class="internal" href="#chdir">chdir</a></code>
183
  command. If no <code>&lt;file&gt;</code> or <code>&lt;subdir&gt;</code> is specified, the whole
184
  contents of the subdirectory are exported.</p>
185
186
  <h3><a id="format">format</a></h3>
187
188
  <div class="subsectiontitle">
189
    syntax:
190
  </div>
191
192
  <p><code>diskmanipulator format &lt;disk name&gt; [&lt;size|option&gt;]</code></p>
193
194
  <div class="subsectiontitle">
195
    explanation:
196
  </div>
197
198
  <p>The currently selected partition from <code>&lt;disk name&gt;</code> will
199
  be cleanly formatted with a MSX-DOS2 boot sector, unless the option
200
  <code>-dos1</code> is specified. If the <code>-nextor</code> option is
201
  specified it will use the Nextor boot sector, and use FAT16 if the size is
202
  larger than 32 MB.
203
  FAT and directory sectors will be correctly initialised.
204
  Any data on the disk image / partition is lost!</p>
205
206
  <h3><a id="import">import</a></h3>
207
208
  <div class="subsectiontitle">
209
    syntax:
210
  </div>
211
212
  <p><code>diskmanipulator import &lt;disk name&gt; &lt;host
213
  directory|host file&gt; ...</code></p>
214
215
  <div class="subsectiontitle">
216
    explanation:
217
  </div>
218
219
  <p>This will import the single <code>&lt;host file&gt;</code> into the disk
220
  inserted in <code>&lt;disk name&gt;</code>. In case of a <code>&lt;host
221
  directory&gt;</code> it will import the files and subdirectories in
222
  <code>&lt;host directory&gt;</code> into the inserted disk. Multiple files and
223
  directories can be specified at the same time. The place were the
224
  files will be added in the MSX directory structure is selected
225
  by the <code><a class="internal" href="#chdir">chdir</a></code> command.</p>
226
227
  <p>If you want to use wildcards when importing files, you will have to use
228
  the Tcl <a class="external" href="http://www.tcl.tk/man/tcl8.5/TclCmd/glob.htm">
229
  <code>glob</code></a> command. This command will perform the wildcard
230
  expansion and return a Tcl list. Enclose the <code>glob</code> command in
231
  between '[' and ']':</p>
232
233
  <p><code>diskmanipulator import hda1 [glob *.txt] [glob
234
  *.asc]</code></p>
235
236
  <p>This command will copy all files matching <code>*.txt</code> and <code>*.asc</code> in
237
  the current directory on the host OS to the first partition of
238
  the master IDE drive on the emulated MSX.</p>
239
240
  <p>The <code>glob</code> command can also take extra options. For instance, if
241
  you only want to expand regular files and not the names of
242
  directories you can do this:</p>
243
244
  <p><code>diskmanipulator import hda1 [glob -type f
245
  info*]</code></p>
246
247
  <p>Consult your local Tcl guru or documentation for more info
248
  about the <code>glob</code> command and Tcl lists.</p>
249
250
  <h3><a id="mkdir">mkdir</a></h3>
251
252
  <div class="subsectiontitle">
253
    syntax:
254
  </div>
255
256
  <p><code>diskmanipulator mkdir &lt;disk name&gt; &lt;MSX
257
  directory&gt;</code></p>
258
259
  <div class="subsectiontitle">
260
    explanation:
261
  </div>
262
263
  <p>This command will create the specified directory on the MSX disk image.
264
  All the needed parent directories will be created if they do not
265
  yet exist.</p>
266
267
  <h3><a id="savedsk">savedsk</a></h3>
268
269
  <div class="subsectiontitle">
270
    syntax:
271
  </div>
272
273
  <p><code>diskmanipulator partition &lt;disk name&gt;
274
    [&lt;size|option&gt; ...]</code></p>
275
  
276
    <div class="subsectiontitle">
277
      explanation:
278
    </div>
279
  
280
    <p>You can (re)partition existing disk images using this command.</p>
281
  
282
    <p>As many partitions as specified will be created, using one of the
283
    following partition table formats according to the option given:</p>
284
  
285
    <ul>
286
      <li><code>-dos1</code>: Standard MBR, Beer IDE 1.9 and Nextor compatible.
287
          Max 4 partitions.</li>
288
      <li><code>-dos2</code> (default): Sunrise IDE MBR, Sunrise IDE compatible.
289
          Max 31 partitions.</li>
290
      <li><code>-nextor</code>: Standard MBR / EBR, Nextor compatible.
291
          Max 256 partitions.</li>
292
    </ul>
293
  
294
    <p>After partitioning each partition will also be formatted appropriately,
295
    see <a href="#format">format</a> for more details on that.</p>
296
  
297
    <p>You can specify the disk/partition sizes by using the following
298
    postfixes:</p>
299
  
300
    <ul>
301
      <li>S or s -&gt; size in sectors</li>
302
      <li>B or b -&gt; size in bytes</li>
303
      <li>K or k -&gt; size in kilobytes (default)</li>
304
      <li>M or m -&gt; size in megabytes</li>
305
    </ul>
306
  
307
  <p><code>diskmanipulator savedsk &lt;disk name&gt;
308
  &lt;dskfilename&gt;</code></p>
309
310
  <div class="subsectiontitle">
311
    explanation:
312
  </div>
313
314
  <p>This simply reads all the sectors of the <code>&lt;disk name&gt;</code> and
315
  saves them again in the file specified by <code>&lt;dskfilename&gt;</code>.
316
  This command is mostly equivalent to copying a disk image file on your host OS, but it has the additional possibilities:</p>
317
318
  <ul>
319
    <li>saving a ramdsk (see <code><a class="external" href="commands.html#disk">diska</a> ramdsk</code>) into a real disk image file</li>
320
321
    <li>saving your current DirAsDisk image into a real disk image file</li>
322
323
    <li>saving your disk image which has undergone IPS patches as a patched disk image</li>
324
325
    <li>copying the currently active image file in case your host OS would give sharing violations while the file is being used by openMSX (Windows)</li>
326
327
    <li>saving a disk image if you removed the directory entry by accident, but openMSX still has an open file handle for the file (UNIX-like systems)</li>
328
  </ul>
329
330
  <h2><a id="examples">Examples</a></h2>
331
332
  <p>In these examples we will run the diskmanipulator while the
333
  emulated MSX is powered off.
334
  It is possible to run these commands while the machine is
335
  turned on of course, but be warned that this might have some
336
  strange, unexpected behaviour depending on the emulated MSX model
337
  and the running software on this MSX.</p>
338
339
  <p>For instance, the turboR models contain a physical switch
340
  inside their diskdrives to detect disk changes. If no disk change
341
  is detected their internal MSX-DOS2 kernel will cache certain
342
  sectors, so that files imported using the <code>diskmanipulator import</code>
343
  command will not show up if you perform a <code>files</code> or
344
  <code>dir</code>. Even worse, if you would write from the
345
  emulated MSX to the disk you will overwrite the result of the import.
346
  The same would happen if you were running a disk cache
347
  program in your emulated MSX machine.</p>
348
349
  <h3>creating a new disk with content</h3>
350
351
  <p>
352
    Here we create a regular 720 kB (double sided, double density)
353
    disk. Then we place the files and subdirectories from the directory
354
    <code>/tmp/todisk/</code> on this new disk:
355
  </p>
356
357
  <div class="commandline">
358
    set <a class="external" href="commands.html#power">power</a> off
359
    <br />
360
    diskmanipulator <a class="internal" href="#create">create</a> /tmp/new-disk.dsk 720
361
    <br />
362
    <a class="external" href="commands.html#disk">virtual_drive</a> /tmp/new-disk.dsk
363
    <br />
364
    diskmanipulator <a class="internal" href="#import">import</a> virtual_drive /tmp/todisk/
365
  </div>
366
367
  <h3>creating a new harddisk image with content</h3>
368
369
  <p>
370
    Here we create a new HD image with 3 partitions the first
371
    partition is 32 MB, then 16 MB and finally a small
372
    one of 720 kB.
373
    Then we place the files and subdirs of the directory
374
    <code>/tmp/topart1/</code> on the first partition and <code>/tmp/topart3/</code> on the third partition:
375
  </p>
376
377
  <div class="commandline">
378
    set <a class="external" href="commands.html#power">power</a> off
379
    <br />
380
    <a class="external" href="commands.html#ext">ext</a> ide
381
    <br />
382
    diskmanipulator <a class="internal" href="#create">create</a> /tmp/new-hd.dsk 32M 16M 720
383
    <br />
384
    <a class="external" href="commands.html#hd">hda</a> /tmp/new-hd.dsk
385
    <br />
386
    diskmanipulator <a class="internal" href="#import">import</a> hda1 /tmp/topart1
387
    <br />
388
    diskmanipulator <a class="internal" href="#import">import</a> hda3 /tmp/topart3
389
  </div>
390
391
  <h3>importing data in a new subdirectory</h3>
392
393
  <p>
394
    On the diskimage <code>/tmp/disk.dsk</code> we will create a new
395
    subdirectory called <code>newsub</code> and then we fill this subdirectory with the
396
    <code>.txt</code> files from <code>/home/david/sources</code>:
397
  </p>
398
399
  <div class="commandline">
400
    set <a class="external" href="commands.html#power">power</a> off
401
    <br />
402
    <a class="external" href="commands.html#disk">diska</a> /tmp/disk.dsk
403
    <br />
404
    diskmanipulator <a class="internal" href="#mkdir">mkdir</a> diska newsub
405
    <br />
406
    diskmanipulator <a class="internal" href="#chdir">chdir</a> diska newsub
407
    <br />
408
    diskmanipulator <a class="internal" href="#import">import</a> diska [glob -type f /home/david/sources/*.txt]
409
  </div>
410
411
  <h3>extracting files from an MSX harddisk image to the host OS</h3>
412
413
  <p>
414
    We will extract files from the currently used harddisk image on
415
    partition1 in the MSX subdir <code>\demos\calculus</code> to <code>/tmp/</code>:
416
  </p>
417
418
  <div class="commandline">
419
    set <a class="external" href="commands.html#power">power</a> off
420
    <br />
421
    <a class="external" href="commands.html#ext">ext</a> ide
422
    <br />
423
    diskmanipulator <a class="internal" href="#chdir">chdir</a> hda1 /demos/calculus
424
    <br />
425
    diskmanipulator <a class="internal" href="#export">export</a> hda1 /tmp
426
  </div>
427
428
</body>
429
</html>