PUTR V2.0 FILE TRANSFER PROGRAM Copyright (C) 1995-2001 by John Wilson All rights reserved Release date: 15-Jun-2001 PUTR is a copyrighted but freely distributable utility for transferring files between various file systems and various media. It is named after PUTR.SAV (Peripheral Utility Transfer Routines), the utility which performs the same function under the DEC TSS/8.24 operating system for the PDP-8. This program is a companion to the D Bit "Ersatz-11" PDP-11 emulation package, which emulates a broad range of PDP-11 CPU and peripheral models at greatly increased speed. A demo version (with reduced features) is available for free download, it may be used for 30-day commercial evaluation or unlimited hobby use. See www.dbit.com for information. PUTR is generally compatible with other emulators and coprocessors as well, and can transfer files between PCs and real PDP-11s and PDP-8s using a variety of media. Multiple foreign volumes can be mounted at once, and files can be copied directly between them (or within a single foreign volume) in one step without having to do separate extract and insert operations using the PC disk as intermediate storage. The file systems currently fully supported are RT-11, RSTS/E, DOS/BATCH, XXDP+, OS/8 (and OS/78 etc.), PUTR (TSS/8 DECtape utility), and PC-DOS. PUTR can also read Files-11 ODS-1 file systems (i.e. disks from RSX-11M, RSX-11M-PLUS, IAS, and P/OS) and TSS/8.24 file systems. COS-310 disks have the same structure as OS/8 disks, however the text file format is different and is currently not supported by PUTR. COS-310 binary files may be transferred the same as OS/8 binary files. All file systems other than PC-DOS must be logically mounted and assigned a logical device name before use. This is done with the MOUNT command. PUTR is mainly intended to work on logical devices contained in disk image files (normally a block-by-block copy of the foreign disk), but it also supports raw SCSI disks (through an ASPI driver), DEC TU58 tape drives (plugged into a COM port), RX50 (including a double-sided variant) and RX33 floppy disks or RX01/02/03 26-sector workalike disks mounted on a 1.2 MB drive, and RX24, RX23, and RX26 720 KB/1.44 MB/2.88 MB disks on an appropriate 3.5" drive (even though none of these was supported by standard DEC controllers on machines using these file systems). PUTR can format any of these types of floppy disks. Note that most PC floppy controllers don't work correctly in single density mode, but some chips made by SMC, WD, Goldstar, Intel (but not the 82078), and National Semiconductor are known to work. On a controller with a working single density mode, the RX01 format is exactly compatible with genuine RX01 disks (i.e. IBM 3740 format) mounted in an 8" drive connected in place of a 1.2 MB one, using an adapter such as D Bit's "FDADAP" board (see http://www.dbit.com/fdadap.html for information). The "RX02" format used by PUTR is actually IBM System 34 format, since DEC's 8" DD disks use a strange combination of SD headers with non-standard ID marks, and DD data fields, that can't be accessed with a standard PC FDC regardless of the software used. The 26-sector 5.25" disk formats are compatible with those used by Ersatz-11. FILENAMES ========= [ldevu:][dir][filename] As much as possible, the filename syntax is intended to look similar to that of the host operating system for the volume on which the file is located. The ldevu: parameter is the logical device and unit number where the file is located. The device name is one or two letters with an optional unit number in the range 0-255, so that DOS-style drive names like "X:" or DEC-style drive names like "SY:" or "DL0:" are possible. Logical devices are mounted using the MOUNT command, or they may be PC-DOS drives (which are all implicitly mounted under the native file system (i.e. PC-DOS)). The device name syntax is intended to mimic that of the DEC PDP-11 OSes for convenience only, at the moment no significance is attached to the device name (different units of the same device name have nothing to do with each other, and for example DL0: need not be an RL01/02 image). This may change. If the ldevu: parameter is omitted, the current logged-in logical device is assumed (you log into a device by typing the device name and a colon at the prompt, just like in PC-DOS). The dir parameter is the directory in which the file is located (by default, the current working directory on that logical device). With PC-DOS drives this is the usual sequence of directory names separated by \ (or / if that isn't your SWITCHAR). RT-11 drives use the same syntax as PC-DOS, to refer to nested logical disk files (LD:); the default extension is ".DSK". "." and ".." are fake directory names and have the same meanings as under PC-DOS. Note that PUTR doesn't assume that it can tell the difference between a directory and an ordinary file (because under RT-11 there is no difference), so all pathname elements must end in \ (except the final one in a CD command). So if you want to list the parent directory, type "DIR ..\" instead of "DIR ..". RSTS drives use directory names of the form [proj,prog], with the project and programmer numbers in decimal. The one-character logical names !, #, $, %, and & also work. DOS/BATCH uses "[proj,prog]" directory names too but the numbers are octal instead of decimal, and the directory name comes after the filename instead of before it. Files-11 drives (RSX etc.) use either numeric directory names of the form [proj,prog], with the project and programmer numbers in octal, or named directories with names like [USER]. PUTR supports tree-structured directories, with names like [USER.FILES.OLD]. P/OS is currently the only DEC PDP-11 operating system which implements tree-structured Files-11 ODS-1 disks. The filename syntax depends on the file structure of the drive; under all supported file structures it is of the form "filename.ext", where the length of the filename and extension have fixed limits for each OS. Note that the parsing and wildcard matching routines make no assumptions about filename syntax (except for adding default "*"s depending on whether they see a "." anywhere in the filespec), so it is possible to fool them. For example, typing "DIR ????????A.*" on a PC-DOS disk will not give an error message, but it's impossible for anything to match this spec. The wildcard parser is smarter than the one in PC-DOS -- '*' and '?' really work the way they should (in PC-DOS a '*' is equivalent to filling out the rest of the field with '?'s instead of really matching 0 or more characters, and in PC-DOS '?' will match a blank, which isn't true of most other systems). Note that each filename on an ODS-1 disk contains a version number, which PUTR interprets as a decimal number. Some systems use octal but that's a function of the operating system and not the disk structure itself, so there's no way for PUTR to auto-detect this. PUTR's wildcard lookup code is currently operating system independent and does not give special treatment to version numbers, they are regarded as simply being part of the filename string. So in order to access a file on an ODS-1 disk, you must either use a wildcard that matches the ";n" on the end of the filename, or explicitly specify a version number (preceded by a semicolon). Otherwise PUTR's file search code will not recognize it as a match against the file on the ODS-1 disk. This also may cause trouble in output filenames. If X: is an ODS-1 disk and C: is a DOS disk, the command "copy x:[200,200]foo.txt;1 c:" will attempt to create a file named "FOO.TXT;1" on the DOS C: drive. Most versions of DOS will ignore everything after the first three letters of the filename extension, however DR-DOS treats the semicolon character specially, and considers everything after the semicolon to be a password, which is used to lock the file. So on DR-DOS, the above command will create a file which appears as "FOO.TXT" in a directory listing, but you must use the name "FOO.TXT;1" to access that file (or delete it). This can be worked around by specifying the output filename explicitly, as in "copy x:[200,200]foo.txt;1 c:foo.txt". COMMANDS ======== PUTR is an interactive program with a simple command line interface. Many of the basic file-related commands which work at a DOS command prompt, such as DIR or TYPE or COPY, will also work when typed at PUTR's command prompt. PUTR extends these commands by allowing any mixture of real DOS drive letters, and PUTR's own logical device names, to be used in file specifications. There are also additional commands which allow special file operations to be performed, which have no equivalent in the DOS command language. In many cases, the syntax follows that of the equivalent commands in DEC operating systems. A typical PUTR session starts with a MOUNT command for each foreign volume which will be accessed, possibly preceded by FORMAT and/or INITIALIZE commands to create these volumes if they do not already exist. Then the user can use the familiar CD, DIR, TYPE, COPY, COPY/B, and DELETE commands to manipulate files. Finally, QUIT exits to DOS. When PUTR is run, it looks for an indirect command file named "PUTR.INI", first in the current directory, then in the directory where the executable is located (for PC-DOS 3.0 and later only). If found, this file is opened as an indirect command file before the first command prompt. This is a convenient place to put SET commands, and MOUNT commands for the disk image file(s) that you usually use. ------------------------------------------------------------ ldevu: Simply typing a logical device name (with the colon) on a line by itself, switches the "logged-in" drive to that device, just as in PC-DOS or CP/M. This drive (and its current working directory) will now appear in PUTR's prompt, and it will be used as the default for all file specifications which do not include an explicit drive name. ------------------------------------------------------------ @ filename[.CMD] Redirects input so that commands come from the specified indirect command file (with default extension ".CMD"). Indirect files chain rather than nesting, so if an "@" command appears inside an indirect file the file is closed and new input comes from the specified file. At end of file input reverts to the keyboard. ------------------------------------------------------------ BOOT ldevu: On RT-11 volumes only, makes a volume bootable. The volume must contain the needed .SYS files (monitor, system device handler, TT: device handler), there are prompts that let you choose which monitor to boot and which device handler the bootstrap should be for. At each prompt you may enter a blank line to display a list of all .SYS files on the volume, or a filename (default extension ".SYS") to use. The action performed is exactly equivalent to COPY/BOOT under RT-11. ------------------------------------------------------------ CD ldevu:dir Changes the current working directory on the specified drive (default is the current logged-in drive). If no directory is given the current working directory is displayed. For RT-11 drives, logical disks (*.DSK) are made to look like subdirectories so you can CD into them too (and use CD .. to get out). ------------------------------------------------------------ CLS Clears the screen. ------------------------------------------------------------ COPY[/BINARY][/OVERRIDE] ldevu:inspec ldevu:outspec Copies the specified file(s), converting between file systems if necessary. Files are assumed to be ASCII (NULs are squeezed out, two 12-bit words are unpacked to three 8-bit characters, etc.) unless the /BINARY switch is given; this default may be changed with the SET COPY command. If an output file has the same name as an existing file in the same directory, then the existing file is deleted, unless it is protected; the /OVERRIDE switch overrides this protection. Not all file systems support protection. In a binary copy between 12- and 16-bit media, the 12-bit words are considered to be right-justified in 16-bit words (PDP-11 byte order); the remaining four bits are ignored on input and written as 0 on output. Additional COPY switches are useful when writing into a RSTS/E file system. /CLUSTERSIZE:n writes the output file with the specified cluster size, instead of the pack cluster size. This value is ignored unless it is a power of two, between the pack cluster size and 256, inclusive. Also the /CONTIGUOUS switch writes the output file as a contiguous file. Ideally this switch would work with DOS/BATCH volumes too, but it is not yet implemented. Note that unlike the COPY commands in DOS or RT-11, this command cannot concatenate multiple input files into one output file. ------------------------------------------------------------ COPY/DEVICE[/FILES][/BINARY] ldevu:[inspec] ldevu:[outspec] Does an image copy from one device to another, or between a device and a file. By default the copy is done in logical block order, which is to say the 512-byte blocks are copied in order starting at block 0. If you're copying a floppy disk (or an image of one) then adding a /BINARY switch tells PUTR to copy in physical sector order, starting with cylinder 0 head 0 sector 1, and proceeding in sequential sector order, copying both surfaces of each cylinder (if double sided) before proceeding to the next cylinder. This copies all sectors of the disk, even those not used by the DEC interleave schemes (on RX01, RX02, and RX03 disks, DEC leaves out track 0), and the resulting image files are more likely to be in the right order if they aren't really DEC disks. This use of /BINARY is not affected by the SET COPY command. ------------------------------------------------------------ DELETE[/NOQUERY][/OVERRIDE] ldevu:filespec Deletes the specified file(s), prompting before each unless /NOQUERY is specified. If a file is protected, it is not deleted unless the /OVERRIDE switch is given. ------------------------------------------------------------ DIRECTORY ldevu:wildcard [/FULL] Displays a directory of the indicated file(s). /FULL gives the starting block numbers of files as well on OS/8 or RT-11 volumes. ------------------------------------------------------------ DISMOUNT ldevu: [/UNLOAD] Undoes the effect of a MOUNT command (q.v.). Closes any image file associated with the logical device, or releases the COM port or floppy drive or SCSI device, and deletes the logical name definition. /UNLOAD ejects the disk on SCSI drives that support this. ------------------------------------------------------------ EXIT Returns to PC-DOS. ------------------------------------------------------------ FORMAT d: /devtype /ostype Formats the disk in PC-DOS floppy drive d: to the type specified by /devtype (/RX01, /RX02, /RX03, /RX23, /RX24, /RX26, /RX33, /RX50, /RX52 -- default depends on drive type and is /RX50 for 1.2 MB drives or if the drive type is unknown). The /ostype switch is optional and tells PUTR to write a blank directory structure for the specified OS (see the INITIALIZE command). It may also affect the interleave and skew used for formating, if appropriate for that OS. Note that for RX50 format, double density disks (e.g. PC 360 KB disks) should be used rather than the PC high density 1.2 MB disks. Opinion is divided as to whether the hub rings should be peeled off before use -- as they age they may slide slightly out of place so that the disk doesn't center properly, but then again they're there to protect the disk and without them it's more likely to get damaged. In any case the 1.2 MB disks don't erase/rewrite properly in double density mode (RX50s are double density disks), even if they appear to format OK (which might happen if they were bulk erased first) they can't be trusted as RX50s. ------------------------------------------------------------ FORMAT dev:filename /devtype /ostype Creates an image file of the specified device type. The file is initialized to zeros and an empty bad sector file is written if appropriate (you will be prompted for a pack serial number for device types that have them). As above, if /ostype is specified then a blank directory is written. If no device type is given then PUTR assumes nothing and just prompts for the file size and creates a zeroed file of that size. The value entered for the size should be a decimal integer, optionally followed by the units the size represents; if no unit is specified then the number is assumed to be the number of bytes. Examples of the possibilities are, "100" means 100 bytes, "100 BLOCKS" means 100 blocks (512 bytes each), "100 KB" means 100 KB, "100 MB" means 100 MB (1 MB = 2**20 bytes), and "100 GB" would mean 100 GB (1 GB = 2**30 bytes) except that that exceeds the 2 GB limit on the size of a single DOS file. Note that only integers may be used, so you can't say "1.44 MB" or "2.1 GB". Those might not mean what you intend anyway, note that 2.1 GB is not equal to 2100 MB (unless you're talking about "marketing" numbers where MB/GB mean 10**6/10**9 instead of the usual 2**20/2**30), so it's probably better to spell it out in smaller units. ------------------------------------------------------------ INITIALIZE vol /devtype /ostype Writes a blank directory on the specified volume or image file (only /OS8, /PUTR, and /RT11 are allowed as /ostype switches at this time). Prompts for any needed information. "vol" is a file, floppy drive, SCSI device, or COM port name the same as in FORMAT and MOUNT. For initializing RT-11 volumes, there is a "/SEGMENTS:n" switch which overrides the default number of directory segments created. The default depends on size of volume, using the same rules as with RT-11's own DUP.SAV (which implements its INITIALIZE command). ------------------------------------------------------------ MOUNT ldevu: image /devtype /ostype Mounts a disk image, and attaches it to logical device name for later use in other PUTR commands. "ldevu:" is a logical device name (1 or 2 letters) and optional unit number. The device name is arbitrary, but future versions of PUTR may change so that the device name dictates the emulation (i.e. "DL1:" must be an RL01 or RL02) since that will make it possible to have useful defaults for /devtype in case file size alone isn't enough to tell. "image" is the location of the disk image. Possibilities are as follows: [d:][path\]filename[.DSK] (name of a PC file) The specified file contains a raw image of the disk. This is known as an "image file" or "container file", and is commonly obtained by downloading a disk from a live machine over a serial or network connection, or taking a snapshot of a SCSI disk, although PUTR can also create image files from scratch itself (see FORMAT). d: (name of a PC floppy drive) The raw floppy disk is used to hold the volume. This should not be confused with an image file on a DOS diskette, the disk uses the foreign file system and in most cases will interchange with the foreign machine. In a MOUNT command, if the "ldevu:" logical device name is omitted, the floppy name will be used. For example you may "MOUNT B: /RT11 /RX50" and then "DIR B:". SCSIhtl: (SCSI disk) This form allows a raw SCSI disk to be mounted using a foreign file system. The "SCSIhtl:" device name specifies a SCSI disk (accessed through an ASPI manager) at host adapter "h" (A=0, B=1, etc.), target "t", and LUN "l", where h, t, and l (as well as the underscore character) are all optional (the defaults are "SCSIA00:"). On most systems there will be only one SCSI host adapter, and most disks have only one logical unit, so in most cases the device name may be something like "SCSI5:", which specifies SCSI target #5. Note that some DOS ASPI drivers exist which make non-SCSI devices look like SCSI drives. These should work fine with PUTR, just pretend it's a SCSI drive. An example is the ASPIATAP.SYS used with IDE/ATAPI versions of the Iomega Zip drive, which makes the drive look as if it's SCSI target 1, so "SCSI1:" refers to the raw Zip drive in this case. CDROMx: (raw CD-ROM drive) This name can be used to open a raw CD-ROM, using the usual MSCDEX.EXE interface (or NWCDEX.EXE under DR-DOS). "x" is the CD-ROM drive's DOS drive letter. Note that the MSCDEX emulation provided in Windows 95 and Windows 98 does not allow access to the first sixteen sectors of the disk, which will not allow PDP-11 format disks to work, except for non-zero RT-11 partitions. The workaround is to use plain DOS, or else use a SCSI CD-ROM drive with the SCSI: device type. COMn:bbbbb/DRIVE:u (TU58 tape drive) This specifies an actual DEC TU58 drive connected to COM port "n", at baud rate "bbbbb" (default is 38400), unit u (0 or 1, default is 0). The /devtype switch specifies the device type of the image; the defaults are auto-sensed except for TU58 drives where obviously the default is always /TU58. With image files the default device type depends on the file size, and is the largest defined device less than or equal to the file in length. With floppies various reads are attempted to detect the disk type. Raw CD-ROMs and SCSI disks always default to /MSCP since their size probably has more to do with the physical drive than with whatever DEC drive it's supposed to replace. Possible switches are as follows: /RX01 = RX01 disk, 5.25" RX01 workalike /RX02 = 5.25" RX02 workalike /RX03 = DS 5.25" RX02 workalike NOTE: for image files of the above devices, the file size is used to determine which disk type it is and whether the file is a block-by-block image (as obtained by a "COPY/DEVICE/FILES DY0: FLOPPY.IMG" command under RT-11, for example) which has had interleave and skew applied to it by the PDP-11 device driver that read it, or a sector-by-sector image (as might be obtained by any simple program that reads the sectors off sequentially and puts them in order into a file). Block-by-block image files of 8" disks are slightly smaller because the DEC interleave/skew scheme skips track 0. /RX23 = 1.44 MB 3.5" disk /RX24 = 720 KB 3.5" disk /RX26 = 2.88 MB 3.5" disk /RX33 = 1.2 MB 5.25" disk /RX50 = 400 KB 5.25" disk NOTE: RX50 image files are the same size whether they have interleave or not, so PUTR tries it both ways while trying to guess the OS type. /RX52 = DS RX50, 800 KB 5.25" disk (PUTR's own name) The following switches are also supported: /MSCP, /RA60, /RA70, /RA71, /RA72, /RA73, /RA80, /RA81, /RA82, /RA90, /RA92, /RD32, /RD51, /RD52, /RD53, /RD54, /RK02, /RK05, /RK06, /RK07, /RL01, /RL02, /RM02, /RM03, /RM05, /RM80, /RP02, /RP03, /RP04, /RP05, /RP06, /RP07, /RS03, /RS04, /RS08, /TU56, /TU58. These switches set the device type to the indicated DEC drive model. Since there is no way to connect most of these devices directly to a PC (unlike floppies), the effect of these switches is to specify the exact size of the volume. Also, for the FORMAT command, there is special handling of RL01, RL02, RK06, and RK07 drives for building a blank bad sector track and (in the case of RT-11) deducting the correct amount from the volume size to allow for driver-implemented replacement blocks. The /MSCP switch means that the image is a generic disk device whose actual size should be used, instead of assuming the size matches some particular model of DEC disk drive. The /ostype switch specifies the file structure on the device; one of the switches below may be given. If none is specified then PUTR performs tests to guess the disk format. If the volume appears to have no known directory, or seems to be valid for more than one of the supported file structures, then a message is displayed and the volume is not mounted. Mounting a disk with /FOREIGN would seem pointless (since no directory operations are allowed), except that it makes it usable with the COPY/DEVICE command so it can be used to transfer an image of the disk to or from a file (or another identical disk). File structure switches: /FILES11 = Files-11 ODS-1, used by RSX-11M, RSX-11M-PLUS, IAS, and P/OS. Support is currently read-only. /RSTSE = RSTS/E disk structure (RDS 0.0, 1.1, or 1.2). /RT11 = RT-11 disk structure (/PARTITION:n switch selects MSCP partition number, default is 0). /OS8 = OS/8, OS/78, OS/278, COS-310 disk structure (/PARTITION:n switch selects RK05 partition number, default is 0). /PUTR = TSS/8 PUTR.SAV DECtape format, similar to OS/8 format but with software 11:1 block interleave, encoded 3-letter filename extensions, and a different way of packing 7-bit ASCII characters into 12-bit words. Note: even though the regular OS/8 format uses 128 words of each 129-word DECtape block, the PUTR.SAV format needs all 129 words (so a full 1474-block DECtape image is 190,146 words or 380,292 bytes) because some of the blocks are recorded in reverse, so that the last 128 words of those blocks are used rather than the first. /TSS8 = TSS/8.24 system disk format (DS32 or RS08). Currently read-only. Works only with disks built with 256-word segments, which is the most common size. Probably not compatible with disks written by older versions of the TSS/8 monitor, but nothing else was available for testing. Filename extensions (chosen from a fixed list of eleven) were a late addition, and the base year for file dates was changed from 1964 to 1974 somewhere along the way (the new format ran out in 1984). The location of the MFD depends on the value of the JOBMAX build parameter. This value may be specified using the "/PARTITION:n" switch (where n is between 1 and 25 decimal). If this switch is omitted, PUTR will search every 4 K words until it finds what looks like a valid MFD. /DOSBATCH = DOS/BATCH file structure. /XXDP = XXDP+ file structure, a variant of DOS/BATCH format used in late versions of the XXDP+ diagnostic package (earlier versions of XXDP used exactly the DOS/BATCH format, so they should be mounted with /DOSBATCH). /FOREIGN = some other file structure, device is accessed in 16-bit mode and the only possible operations are COPY /DEV and COPY /FILE /DEV. There are a few miscellaneous MOUNT switches. /INTERLEAVE and /NOINTERLEAVE tell whether an image file is interleaved (i.e. a block-by-block copy of a floppy disk so the data are in block order, not sector order) or non-interleaved (i.e. a sector-by-sector copy so the data are in sector order). The default is to guess based on the image file size (or prompt in the case of FORMAT, which takes the same switches). /PARTITION:n specifies the partition number for RT-11 MSCP disks or OS/8 RK05 disks (default is 0). /RONLY and /RW tell whether the device should be mounted for read-only or read/write access. The default is read/write. All of the above switches may be given in any order. ------------------------------------------------------------ QUIT Returns to PC-DOS. ------------------------------------------------------------ SET x: type Sets the drive type for one of the four possible PC floppy drives A:-D: (note that actual PCs rarely have more than one or two floppy drives). The type must be RX01, RX02, RX03, RX50, RX33, RX24, RX23, or RX26. The default value for each drive is whatever was stored in CMOS memory by the ROM BIOS setup utility. This command may be useful when the drive types stored in CMOS RAM are incorrect for some reason. It's also helpful when an 8" drive, or a real DEC RX50 drive, has been attached to the PC using a D Bit "FDADAP" adapter, or something equivalent. There is no standard for representing these drive types in CMOS RAM. Using real RX50 drives (or other 300 RPM quad-density drives such as the Tandon TM100-3 and TM100-4) is different from RX33s (which is what PUTR calls regular PC 1.2 MB drives) because the motor speed is slower, so the FDC chip must be programmed for a lower data rate to match. ------------------------------------------------------------ SET COPY {ASCII | BINARY} Sets the default transfer mode for the COPY command (initially ASCII). Intended mainly for use in the PUTR.INI command file. ------------------------------------------------------------ SET DISMOUNT {NOUNLOAD | UNLOAD} Sets the default unload action of DISMOUNTs, both explicit, and implied by QUITting, or reMOUNTing the pseudo-device as something else. Default is NOUNLOAD. Intended for use in PUTR.INI with drive models where the disk shouldn't be left in the drive when it's powered off. ------------------------------------------------------------ SET FDC {COMPATICARD | GENERIC} Tells PUTR whether your floppy disk controller is a Micro Solutions CompatiCard IV, or just a generic PC floppy controller. If it is a CompatiCard, PUTR maintains the TG43 signal (for 8" drives) by writing to port 3F0h; normal FDCs have no writable port at that address and don't do anything when it gets written so the default is COMPATICARD to cover everything, but if your FDC does strange things when that port is written you should SET FDC GENERIC to disable the writes. This setting doesn't matter if you're using the D Bit "FDADAP" floppy disk adapter board (see http://www.dbit.com/fdadap.html) to connect to an 8" drive. The board has an on-board microcontroller which transparently monitors the drive bus and drives the TG43 signal correctly for each drive without any software help. ------------------------------------------------------------ SET MORE {OFF | ON} Turns **MORE** processing on or off; the default is on, so output pauses at the end of every screen. As above, intended mainly for use in PUTR.INI. ------------------------------------------------------------ SHOW ldevu: Shows the medium and file system types for the specified logical device. ------------------------------------------------------------ TYPE ldevu:wildcard Types the specified file(s) on the terminal, printing the filename(s) first. ------------------------------------------------------------ WIPEOUT ldevu:dir Writes zeros over all "< UNUSED >" areas so that disk image files will compress smaller with GZIP (etc.) and/or transfer faster with Kermit (etc.). Supported only for OS/8, PUTR, and RT-11 volumes. Example Operations ======= ========== This section gives sample commands to accomplish common operations. In these examples the PUTR prompt is shown as "(C:\)>", whereas on your system it will show the actual logged-in drive and current working directory. ------------------------------------------------------------ Formating RX50 disks (assuming B: is a 1.2 MB drive): (C:\)>format b: /rx50 Press ENTER when ready... (status is displayed during the format operation) Format more disks (Y/N)? N (or type Y to format more RX50s) (C:\)>quit ------------------------------------------------------------ Copying PDP-11 image files to RX50s (B: is the 1.2 MB drive): (C:\)>mount b: /rx50 /foreign (C:\)>copy/file/dev disk1.dsk b: (if you have more than one disk to copy, you may swap disks and issue more COPY commands without having to repeat the MOUNT command) (C:\)>quit ------------------------------------------------------------ Creating blank container files: Example 1 -- MSCP disk (user-selected size): (C:\)>format du0.dsk /mscp Are you sure (Y/N)? Y File size (bytes): 10000 blocks (C:\)>quit Example 2 -- RL02 (size known by PUTR, has pack serial number): (C:\)>format dl0.dsk /rl02 Are you sure (Y/N)? Y Serial # [1234512345]: 666 (C:\)>quit ------------------------------------------------------------ Create a bootable RT-11 disk image from its component files: All of the RT-11 files have been downloaded in binary mode, from the PDP-11 into a PC directory named "C:\RT11". (C:\)>format du0.dsk /mscp /rt11 Are you sure (Y/N)? Y File size (bytes): 32 mb Volume ID : Owner name: (C:\)>mount x: du0 /mscp (C:\)>set more off (avoids having to press space bar during the copy) (C:\)>copy/b c:\rt11\*.* x: (... lists all files being copied ...) (C:\)>boot x: Writing bootstrap on X:\ Monitor file [.SYS]: rt11xm Device handler file [.SYS]: dlx (substitute actual monitor and device handler filenames, being careful to append "X" to the handler name when using an XM monitor) (C:\)>quit File Formats ==== ======= Generally, the disk image files used by PUTR (typically with a ".DSK" extension) simply contain a byte-by-byte snapshot of the entire disk, in physical sector order. For 12-bit images (PDP-8, DECmate series), each 12-bit word is stored right-justified in a 16-bit word in PDP-11 byte order. There are several exceptions: RX01, RX02, "RX03": These may be accessed either as "block" images or as "sector" images. Block images contain a snapshot of the disk as seen through a PDP-8/PDP-11 device driver, so there's no interleave, and track 0 does not appear in the image file. Block images generally work the same as images of any other type of drive, since DEC used most styles of disks directly, without any kind of soft interleave. Sector images are a snapshot of the disk in raw sector order, including track 0, and the data are in physical order, so soft interleave is required to sort out the "cooked" blocks seen through the host operating system. Note that these disks have the same low-level format, and thus the same sector image file format, in both PDP-8 and PDP-11 systems. PDP-11s simply treat the bytes as bytes, while PDP-8s perform packing and unpacking of the 12-bit words so that (typically) 64 or 128 words are packed into the first 3/4 of the sector, with the remainder ignored. RX50, "RX52": These disks have similar issues to the 8" disks, but the details are different. The interleave schemes wrap around the end of the disk to track 0, so track 0 is used in both the "block" and "sector" image file formats, and the image file size is the same either way. On 12-bit systems, the words are not packed together in the first 3/4 of the sector, they're individually right-justified in a PDP-11 word, so four bits of each word are wasted but the data go all the way to the end of the sector. RK05 disk packs: RK05 drives were used on both 12- and 16-bit systems. The same drives work with both formats, but the packs are different. 12-bit packs have 16 sectors per track (1.6 MW total), and 16-bit packs have 12 sectors per track (1.2 MW total). In both cases the sectors are 256 words each. Because of the 4 bits of padding for every word in a 12-bit image, PUTR uses 3,276,800 bytes to store a 12-bit RK05 image, vs. only 2,457,600 bytes for a 16-bit RK05 image. 555, TU55, TU56 DECtape: DECtapes were used on a wide variety of machines with different word sizes. PUTR stores DECtape image files in three different formats. PDP-11s use DECtapes formatted in 18-bit mode (the high 2 bits are ignored), giving 578 blocks of 256 words each. PUTR stores those as byte-for-byte images with an image file size of 295,936 bytes. PDP-8 DECtapes have 1474 blocks of 129 words each. Most file systems actually use only 128 words per block, but the DECtape hardware doesn't allow that block size because it uses 6-bit mark codes which are recorded in a single track alongside three data tracks, so a block's data field must be a multiple of 18 bits. OS/8 always uses only the first 128 words of each sector, so the 129th word can be safely omitted from an image file. With PUTR's usual packing (each 12-bit word is right-justified in a 16-bit PDP-11 word), this gives an image file size of 377,344 bytes. However, you may wish to include the 129th word just to be safe. This is definitely required for TSS/8 PUTR.SAV format tapes. Even though they use only 128 words per block, they are recorded using an interleave scheme in which 45% of the blocks are recorded backwards, so the first 128 words of the block become the last 128 words of the block when read forwards, therefore all 129 words must be preserved, because the image file is considered to be accessed in the forward direction. This gives a file size of 380,292 bytes. PUTR tests the file size when opening an existing image, and chooses the most appropriate size when creating a new image file with the FORMAT command, so generally it will do the right thing with all three file sizes. Note: "D Bit", "Ersatz", and "E11" are trademarks of Digby's Bitpile, Inc. All other trademarks are used for identification purposes only and are the property of their respective owners. John Wilson Digby's Bitpile, Inc. DBA D Bit 11 Bank Street Troy, NY 12180 USA +1 (518) 271-6824 +1 (518) 272-3853 fax (call above number first) www.dbit.com