home *** CD-ROM | disk | FTP | other *** search
/ Loadstar 128 #41 / q41.d81 / t.lrr270 < prev    next >
Encoding:
Text File  |  1993-01-01  |  25.4 KB  |  484 lines

  1.  
  2.  
  3.             LITTLE RED READER  Version 2.70  [February 16, 1998]
  4.  
  5.          MS-DOS file reader/writer for the C128 and 1571/81/FD drives.
  6.  
  7.                       by Craig Bruce  (csbruce@pobox.com)
  8.  
  9.     Little Red Reader (LRR) is a program for the C128 that will read and
  10. write files to and from MS-DOS floppy disks using a 1571, 1581, CMD FD-
  11. 2000, or CMD FD-4000 disk drive. With the FD drives, you can use High
  12. Density (HD) MS-DOS disks. The program copies files from drive to drive (no
  13. internal buffering), so you need a second disk drive (either real or
  14. virtual) to copy files to. You can use RAMDOS for the second drive if you
  15. have an REU and you execute a GRAPHIC CLR after starting it up. The menu-
  16. driven full-screen user interface is written in BASIC so it is mildly
  17. sluggish, but the actual file copying is written in machine language and
  18. operates as fast as the disk drives will go.
  19.  
  20.  
  21.  1. INTRODUCTION
  22.  
  23.     This document presents a program that reads and writes MS-DOS files and
  24. the root directory of MS-DOS disks. The program copies only from drive to
  25. drive without buffering file data internally. This is simpler and imposes
  26. no limits on the size of the files transferred, although it requires the
  27. use of two disk drives (or a logical drive). The user-interface code is
  28. written in BASIC and presents a full-screen file selection menu. The grunt-
  29. work code is written in assembly language and operates at maximum
  30. velocity.
  31.  
  32.     The program also allows MS-DOS files to be deleted and to allows the
  33. copying of Commodore-DOS files between CBM-DOS disks (this makes it more
  34. convenient to use the program with a temporary logical drive like RAMDOS).
  35. Also, since I have a CMD FD-4000 floppy disk drive, I know that this
  36. program works with MS-DOS disks with this drive (for both the 720K and
  37. 1.44M MS-DOS formats). The FD disk drives are logically referred to below
  38. as being the 1581.
  39.  
  40.     The Burst Command Instruction Set of the 1571/81 is used to read the
  41. MS-DOS disk blocks and the standard kernel routines are used for outputting
  42. the data. (I am an operating systems specialist, so I call it a kernEl!)
  43. Thus, the MS-DOS files must be read from a 1571 or 1581 disk drive, but the
  44. output device may be any disk drive type, the screen or a printer, or a
  45. virtual drive type such as RAMLink, RAMDrive, or RAMDOS (for the REU). It
  46. is interesting to note that the data can be read in from an MS-DOS disk
  47. faster than it can be written out to a 1571, 1581, or even a RAMDOS file. A
  48. RAMLink can swallow the data only slightly faster than it can be read.
  49.  
  50.     Little Red Reader (LRR) supports double density 3.5" disks formatted
  51. with 80 tracks, 9 sectors per track, and 2 sides with a 1581 and 5.25"
  52. double density disks formatted with 40 tracks, 9 sectors per track, and 2
  53. sides with a 1571, and more recently, high density 3.5" disks formatted
  54. with 80 tracks, 18 sectors per track, 2 sides, and a "12-bit FAT". A limit
  55. of 224 directory entries and 9 File Allocation Table (FAT) sectors is
  56. imposed. There must be 2 copies of the FAT and the cluster size may be 1 or
  57. 2 sectors. The sector size must be 512 bytes.
  58.  
  59.     The program runs on either the 40 or 80-column screens, but you will
  60. get much better performance from the BASIC portion of the program by being
  61. in 80-column mode and FAST mode. A modification that someone might want to
  62. make would be to spread-out the display for the 80-column screen and add
  63. color to the rather bland display.
  64.  
  65.     Oh, about the name. It is a play on the name of another MS-DOS file
  66. copier available for the C-128. "Little" means that it is smaller in scope
  67. than the other program, and "Red" is a different primary color to avoid any
  68. legal complications. It is also the non-white color of the flag of the
  69. country of origin of this program (no, I am not Japanese). Also, this
  70. program is Public Domain Software, as is all software I develop for 8-bit
  71. Commodore Computers. Feel free to E-mail me if you have questions or
  72. comments about this article.
  73.  
  74.  
  75.  2. USER GUIDE
  76.  
  77.     LOAD and RUN the "lrr270" BASIC program file. When the program is first
  78. run, it will display an "initializing" message and will load in the binary
  79. machine language package from the "current" Commodore DOS drive (the
  80. current drive is obtained from PEEK(186) - the last device accessed). The
  81. binary package is loaded only on the first run and is not reloaded on
  82. subsequent runs if the package ID field is in place.
  83.  
  84.     The system is designed to have two file selection menus: one for the
  85. MS-DOS disk drive, and one for the Commodore-DOS disk drive (which may be a
  86. logical disk drive). The idea for copying is that you select the files in
  87. one of these menus, and then program knows to copy them to the disk for the
  88. other menu.
  89.  
  90.  
  91.  2.1. MS-DOS MENU
  92.  
  93.     The main screen of the program is then displayed. The main screen of
  94. the program will look something vaguely like this:
  95.  
  96.    MS-DEV=9    MS-TYPE=1581    CBM-DEV=8
  97.  
  98.    NUM  S  TRN  TYP  FILENAME  EXT  LENGTH
  99.    ---  -  ---  ---  --------  ---  ------
  100.      1  *  ASC  SEQ  HACK4     TXT  120732
  101.      2     BIN  PRG  RAMDOS    SFX   34923
  102.  
  103.    D=DIRECTORY  M=MS-DEV  F=CBM-DEV Q=QUIT
  104.    T=TOGGLE-COLUMN, C=COPY-FILES, +/- PAGE
  105.  
  106.  except that immediately after starting up, "<directory not loaded>" will
  107. be displayed rather than filenames. The "MS-DEV" and "MS-TYPE" fields give
  108. the device number and type of the drive containing the MS-DOS disk to copy
  109. from, and the "CBM-DEV" gives the device number of the drive/virtual
  110. drive/character device to copy file data to. The number of bytes free on
  111. the drive are also displayed (which is useful to know when writing files)
  112. and there are some more commands.
  113.  
  114.     Information about all MS-DOS files in the root directory of the MS-DOS
  115. disk is displayed in columns below the drive information. "NUM" gives the
  116. number of the MS-DOS file in the directory listing, and "S" indicates
  117. whether the file is "selected" or not. If the file is selected, an asterisk
  118. (*) is displayed; otherwise, a blank is displayed. When you later enter
  119. Copy Mode, only the files that have been "selected" are copied.
  120.  
  121.     The "TRN" field indicates the character translation scheme to be used
  122. when the file is copied. A value of "BIN" (binary) means no translation and
  123. a value of "ASC" (ascii) means the file characters are to be translated
  124. from MS-DOS ASCII (or "ASCII-CrLf") to PETSCII. The "TYP" field indicates
  125. the type of Commodore-DOS file to create for writing the MS-DOS file
  126. contents into. The possible values are "SEQ" (sequential) and "PRG"
  127. (program). The values of the TRN and TYP fileds are set independently, so
  128. you can copy binary data to SEQ files and ascii data to PRG files if you
  129. wish.
  130.  
  131.     The "FILENAME" and "EXT" fields give the filename and extension type of
  132. the MS-DOS files and "LENGTH" gives the exact length of the files in bytes.
  133. Note that if you perform "ASC" translation on a file, its PETSCII version
  134. will have a shorter length.
  135.  
  136.  
  137.  2.2. USER COMMANDS
  138.  
  139.     The bottom of the screen gives the command summary. After starting the
  140. program, you will want to setup the MS-DOS and CBM-DOS drives with the "M"
  141. and "F" commands. Simply press the (letter) key corresponding to the
  142. command name to activate the command. Pressing M will prompt you for the
  143. MS-DOS Drive Number and the MS-DOS Drive Type. In both cases, type the
  144. number and press RETURN. (Sorry for insulting all non-novices out there,
  145. but I want to be complete). The MS-DOS drive number cannot be the same as
  146. the CBM-DOS drive number (since the program copies from drive-to-drive
  147. without internal buffering). For the drive type, enter an "8", "81", or
  148. "1581" for a 1581 drive or FD-series drive, or a "7", "71", or "1571" for a
  149. 1571 drive.
  150.  
  151.     Pressing F will prompt you for the CBM-DOS device number. You may enter
  152. a number from 0 to 30, except that it must not be the MS-DOS drive number.
  153. Enter a "1" for Cassette Drive (God forbid!), a "3" for the screen, a "4"
  154. for the printer (with an automatic secondary address of 7 (lowercase)), any
  155. number above 7 for a Commodore disk drive or special virtual drive, or a
  156. value of "0" for the special "null" drive. A CBM-DEV value of 0 will case
  157. the program to read MS-DOS files and do nothing with the output. You can
  158. use this feature to check out the raw reading speed of the program.
  159.  
  160.     After setting up the drives, press D to read in the root directory off
  161. the MS-DOS disk. The data will come blazing in from the disk but BASIC will
  162. take its good ole time sifting through it. Filenames are displayed on the
  163. screen as they are scanned in. The program will (eventually) return to the
  164. main screen and display the formatted file information. One note: the
  165. process of logging in a 1581 MS-DOS disk takes about 12 seconds (on my
  166. 1581, anyway), so be patient. An MS-DOS disk will have to be "logged in"
  167. every time you change MS-DOS disks. (Disks are logged in automatically).
  168.  
  169.     A couple of notes about accessing MS-DOS disks: don't try to access a
  170. device that is not present because the machine language routines cannot
  171. handle this error for some reason and will lock up, requiring a
  172. STOP+RESTORE. Also, make sure that an actual MS-DOS disk is loaded into the
  173. drive. If you accidentally place Commodore-DOS disk into the MS-DOS drive,
  174. the 1581 will report an invalid boot parameters error (#60), but a 1571
  175. will lock up (since I don't check the sector size and my burst routines are
  176. expecting 512 bytes to come out of a sector whereas Commodore disks have
  177. only 256 bytes per sector).
  178.  
  179.     Now you are ready to pick what files you want copied and how you want
  180. them copied. You will notice that a "cursor" appears in the "S" column of
  181. the first file. You may move the cursor around with the cursor keys: UP,
  182. DOWN, LEFT, RIGHT, HOME, and CLR. CLR (SHIFT-HOME) will move the cursor
  183. back to the first file on the first screen. You can move the cursor among
  184. the select, translation, and file-type columns of all the files. Pressing a
  185. SPACE or a RETURN will toggle the value of the field that the cursor is on.
  186. To toggle all of the values of the "cursor" column (including files on all
  187. other screens), press T. You will notice that moving the cursor around and
  188. toggling fields is a bit sluggish, especially if you are in Slow mode on
  189. the 40-column screen. Did I mention that this program will run on either
  190. the 40 or 80-column screen?  Toggling an entire column can take a couple of
  191. seconds.
  192.  
  193.     If there are more than 18 MS-DOS files, you can press the "+" and "-"
  194. keys to move among all of the screens of files. The cursor movement keys
  195. will wrap around on the current screen. "+" is page forward, and "-" is
  196. page backward. The screens wrap around too.
  197.  
  198.     After you have selected all of the files you want to copy and their
  199. translation and file-type fields have been set, press the C key to go into
  200. Copy Mode (next section). After copying, you are returned to the main
  201. screen with all of the field settings still intact. To exit from the
  202. program, press Q.
  203.  
  204.     Additional commands are: "R" (remove == delete), "/" (change menu), and
  205. "X" (copy CBM files == "Xerox"). The remove command is used to delete
  206. selected files from the MS-DOS disk. After selecting this option, you will
  207. get an annoying "are you sure" question and the the selected files will
  208. quickly disappear and the changes will finally be written to disk. Deleting
  209. a batch of MS-DOS files is much quicker than deleting Commodore-DOS files
  210. since MS-DOS disks use a File Allocation Table rather than the linked list
  211. of blocks organization that CBM uses. In order to make the BASIC program
  212. execute quicker, after deleting, the original order of the filenames in the
  213. directory listing will be changed. Be forewarned that the delete operation
  214. is non-recoverable.
  215.  
  216.     The change menu command is used to move back and forth between the
  217. Commodore-DOS and MS-DOS menus.
  218.  
  219.  
  220.  2.3. COPYING MS-DOS TO CBM-DOS
  221.  
  222.     When you enter copy mode, the screen will clear and the name of each
  223. selected file is displayed as it is being copied. If an error is
  224. encountered on either the MS-DOS or CBM-DOS drive during copying, an error
  225. message will be displayed and copying will continue (after you press a key
  226. for MS-DOS errors).
  227.  
  228.     To generate a CBM-DOS filename from an MS-DOS filename, the eight
  229. filename characters are taken (including spaces) and a dot (.) and the
  230. three characters of the extension are appended. Then, all spaces are
  231. removed, and if the name ends with a dot (.) character, then that dot
  232. character is removed as well. I think this is fairly reasonable.
  233.  
  234.     If there already is a file with the same filename on the CBM-DOS disk,
  235. then you will be prompted if you want to overwrite the file or not.
  236. Entering an "n" will abort the copying of that file and go on to the next
  237. file, and entering a "y" (or anything else) will cause the CBM-DOS file to
  238. be "scratched" and then re-written.
  239.  
  240.     The physical copying of the file is done completely in machine language
  241. and nothing is displayed on the screen while this is happening, but you can
  242. follow things by looking at das blinkin lichtes and listening for clicks
  243. and grinds. You will probably be surprised by the MS-DOS file reading speed
  244. (I mean in a good way). The disk data is read in whole tracks and cached in
  245. memory and the directory information and the FAT are retained in memory as
  246. well. The result is that minimal time is spent reading disk data, and no
  247. costly seeks are required for opening a new MS-DOS file. A result is that
  248. small files are copied one after another very quickly. You will have to
  249. wait, however, on the relatively slow standard kernel/Commodore-DOS file
  250. writing.
  251.  
  252.     A few changes had to be made to the program to accomodate the RAMDOS
  253. program. RAMDOS uses memory from $2300 to $3FFF of RAM0, which is not
  254. really a good place for a device driver, and it uses some of the zero-page
  255. locations that I wanted to use. But, difficulties were overcome. The
  256. importance of RAMDOS compatibility is that if you only have one disk drive
  257. but you have an REU, you can use RAMDOS to store the MS-DOS files
  258. temporarily. Since the new version has greater memory requirements, after
  259. starting up "ramdos" (if you use it) you will have to execute the "graphic
  260. clr" BASIC command. If you only have one disk drive and no REU, you are SOL
  261. (Out of Luck) unless you can get a RamDisk-type program for an unexpanded
  262. 128. The RAMDOS program is available from FTP site "ftp.jbrain.com" in
  263. directory "/pub/cbm/software/utils/128/OLDIES92" in file "ramdosii.sfx".
  264. One note I found out about RAMDOS: you cannot use a
  265.  
  266.     DOPEN#1,(CF$),U(CD),W
  267.  
  268.     with it like you are supposed to be able to; you have to use a
  269.  
  270.     DOPEN#1,(CF$+",W"),U(CD)
  271.  
  272.     Here is a table of copying speeds for copying from 1571s and 1581s with
  273. ASC and BIN translation modes. All figures are in bytes/second. These
  274. results were obtained from copying a 127,280 byte text file (the text of C=
  275. Hacking Issue #3).
  276.  
  277.    FROM    TO: "null"     RAMLink     RAMDOS     JD1581     JD1571
  278.    -------     ------     -------     ------     ------     ------
  279.    81-bin        5772        3441       2146        n/a        644
  280.    81-asc        5772        3434       2164        n/a        661
  281.    71-bin        4323        2991       1949       1821        n/a
  282.    71-asc        4323        2982       1962       1847        n/a
  283.  
  284.     The "null" device is that "0" CBM-DOS device number, and a couple of
  285. entries are "n/a" since I only have one 1571 and one 1581. Note that my 71
  286. and 81 are JiffyDOS-ified, so the performance of a stock 71/81 will be
  287. poorer. JiffyDOS gives about a 2x performance improvement for the standard
  288. file accessing calls (open, close, chrin, chrout). RAMDOS doesn't seem to
  289. be as snappy as you might think.
  290.  
  291.     The "null" figures are quite impressive, but the raw sector reading
  292. speed without the overhead of mucking around with file organization is 6700
  293. bytes/sec for a 1581 and 4600 B/s for a 71. The reason that the 1571
  294. operates so quickly is that I use a sector interleave of 4 (which is
  295. optimal) for reading the tracks. I think that other MS-DOS file copier
  296. program uses an interleave of 1 (which is not optimal). I lose some of the
  297. raw performance because I copy the file data internally once before
  298. outputting it (to simplify some of the code).
  299.  
  300.     In a couple of places you will notice that ASC translation gives
  301. slightly better or slightly worse performance than BIN. This is because
  302. although slightly more work is required to translate the characters,
  303. slightly fewer characters will have to be written to the CBM-DOS file,
  304. since PETSCII uses only CR where MS-DOS ASCII uses CR and LF to represent
  305. end-of-line. Translation is done by using a table (that you can change if
  306. you wish). Many entries in this table contain a value of zero, which means
  307. that no character will be output on translation. Most of the control
  308. characters and all of the characters of value 128 (0x80) or greater are
  309. thrown away on being translated. The table is set up so that CR characters
  310. are thrown away and the LF character is translated to a CBM-DOS CR
  311. character. Thus, both MS-DOS ASCII files and UNIX ASCII files can be
  312. translated correctly.
  313.  
  314.  
  315.  2.4. COMMODORE-DOS MENU
  316.  
  317.     The Commodore-DOS menu, which displays the names of the Commodore files
  318. selected for various operations, looks and works pretty much the same as
  319. the MS-DOS menu:
  320.  
  321.    CBMDOS  MS=10:1581  CBM=8  FREE=3211476
  322.  
  323.    NUM  S  TRN  FILENAME         T  LENGTH
  324.    ---  -  ---  ---------------- -  ------
  325.      1  *  BIN  LRR-128          P    9876
  326.      2     ASC  COM-HACKING-005  S  175412
  327.  
  328.    D=DIR M=MSDEV F=CBMDEV C=COPY Q=QUIT
  329.    T=TOGGLE R=REMOVE X=CBMCPY /=MENU +-=PG
  330.  
  331.     You'll notice, however, that the filetype field ("T" here) is moved and
  332. is unchangable. Also, the file lengths are not exact; they are reported as
  333. the block count of the file multiplied by 254. This menu is not maintained
  334. for files being copied to the CBM-DOS disk from an MS-DOS disk. You'll have
  335. to re-execute the Directory instruction to get an updated listing.
  336.  
  337.     The "D" (directory) command has local effect when in this menu. The
  338. Commodore-DOS directory will be loaded from the current CBM device number.
  339. Note that in order for this to work, the CBM device must be number eight or
  340. greater (a disk drive). Originally, the subroutine for this command was
  341. written using only GET#'s from the disk and was very slow. It was modified,
  342. however, to call a machine language subroutine to read the information for
  343. a directory entry from the directory listing, and hence the subroutine now
  344. operates at a tolerable speed.
  345.  
  346.     The "C" (copy) command also has a different meaning when in this menu.
  347. It means to copy the selected CBM files to the MS-DOS disk. See details
  348. below.
  349.  
  350.     The copy CBM files ("X") command is used to copy the files in the CBM-
  351. DOS menu to another CBM-DOS disk unit. Select the files you want to copy
  352. and then press X. You will then be asked what device number you want to
  353. copy the files to. The device can be another disk drive or any other device
  354. (except the keyboard). Using device number 0 does not mean the "null"
  355. device as it does with copying MS-DOS to CBM. If you are copying to a disk
  356. device and the file already exists, then you will be asked if you wish to
  357. overwrite the file. You cannot copy to the same disk unit. Also, all files
  358. are copied in binary mode (regardless of what translation you have selected
  359. for a file).
  360.  
  361.     The copy CBM files command was included since all of the low-level gear
  362. needed to implement it (specifically "commieIn" and "commieOut" below) was
  363. also required by other functions. This command can be very convenient when
  364. working with RAMDOS. For example, if you only had a 1571 as device 8 but
  365. you have a RAM expander and have installed RAMDOS as device 9, then you
  366. would copy MS-DOS files to RAMDOS using the MS-DOS menu, and then you would
  367. go to the Commodore-DOS menu ("/"), read the directory, select all files,
  368. insert an Commodore-DOS diskette into your 1571, and then use "X" to copy
  369. from the RAMDOS device to the 1571.
  370.  
  371.     The remove command ("R") does not work for this directory. You can
  372. SCRATCH your CBM-DOS files your damn self.
  373.  
  374.  
  375.  2.5. COPY CBM-DOS TO MS-DOS
  376.  
  377.     Before you can copy selected CBM-DOS files to an MS-DOS disk, the MS-
  378. DOS disk directory must be already loaded (from the MS-DOS menu). This is
  379. required since the directory and FAT information are kept in memory at all
  380. times during the execution of this program.
  381.  
  382.     When you enter copy mode, the screen will clear and the name of each
  383. selected file is displayed as it is being copied. If an error is
  384. encountered on either the MS-DOS or CBM-DOS drive during copying, an error
  385. message will be displayed and copying will continue (after you press a key
  386. for MS-DOS errors). Please note that not a whole lot of effort was put into
  387. error recovery.
  388.  
  389.     To generate an MS-DOS filename from an CBM-DOS filename, the following
  390. algorithm is used. The filename is searched from right to left for the last
  391. "." character. If there is no "." character, then the entire filename, up
  392. to 11 characters, is used as the MS-DOS filename. Characters 9 to 11 will
  393. be used as the extension. If there is a "." character, the all characters
  394. before it, up to eight, will be used as the MS-DOS filename and all
  395. characters after the final ".", up to three, will be used as the MS-DOS
  396. extension.
  397.  
  398.     Then, the newly generated MS-DOS filename is scanned for any extra "."
  399. characters or embedded spaces. If any are found, they are replaced by the
  400. underscore character (" ", which is the backarrow character on a Commodore
  401. display). Finally, all trailing underscores are removed from the end of
  402. both the filename and extension portions of the MS-DOS filename. Also, all
  403. characters are converted to lowercase PETSCII (which is uppercase ASCII)
  404. when they are copied into the MS-DOS filename. Note that if the Commodore
  405. filename is not in the 8/3 format of MS-DOS, then something in the name may
  406. be lost. Some examples of filename conversion follow:
  407.  
  408.  CBM-DOS FILENAME       MS-DOS FILENAME
  409.  ----------------       ---------------
  410.  "lrr.bin"              "lrr.bin"
  411.  "lrr.128.bin"          "lrr 128.bin"
  412.  "hello there.text"     "hello th.tex"
  413.  "long filename"        "long fil.ena"
  414.  "file 1..3.s5"         "file 1.s"
  415.  
  416.     It would have been time-consuming to have the program scan the MS-DOS
  417. directory for a filename already existing on the disk, so LRR will put
  418. multiple files on a disk with the same filename without complaining. This
  419. also gets rid of the problem of asking you if you want to overwrite the old
  420. file or generate a new name. However, in order to retrieve the file from
  421. disk on an MS-DOS machine, you will probably have to use the RENAME command
  422. to rename the first versions of the file on the disk to something else so
  423. MS-DOS will scan further in the directory for the last version of the file
  424. with the same filename. There is no rename command in LRR because I never
  425. thought of it in time. It would have been fairly easy to put in.
  426.  
  427.     The date generated for a new MS-DOS file will be set from the default
  428. time.
  429.  
  430.     The physical copying of the file is done completely in machine language
  431. and nothing is displayed on the screen while this is happening, but you can
  432. follow things by looking at the blinking lights and listening for clicks
  433. and grinds.
  434.  
  435.     Since the FAT and directory are maintained in RAM during the entire
  436. copying process and are only flushed to disk after the entire batch of
  437. files are copied, copying is made more efficient, since there will be no
  438. costly seek back to track 0 after writing each file (like MS-DOS does). If
  439. you have a number of small files to copy, then they will be knocked off in
  440. quick succession, faster than many MS-DOS machines will copy them.
  441.  
  442.     To simplify the implementation, the current track of disk blocks for
  443. writing is not maintained like it is for reading. Also, a writing
  444. interleave of 1:1 is used for a 1571, which is not optimal. However, since
  445. writing is such a slow operation anyway, and since the 1571 is particularly
  446. bad by insisting on verifying blocks, not much more overhead is introduced
  447. than is already present.
  448.  
  449.     An interesting note about writing MS-DOS disks is that you can
  450. terminate LRR in the middle of a copy (with STOP+RESTORE) or in the middle
  451. of copying a batch of files, and the MS-DOS disk will remain in a perfectly
  452. consistent state afterwards. The state will be as if none of the files were
  453. copied. The reason is that the control information (the FAT and directory)
  454. is maintained internally and is flushed only after copying is all
  455. completed. But don't terminate LRR while it is flushing the control
  456. information.
  457.  
  458.     Here is a table of copying speeds for copying to 1571, 1581, and CMD
  459. FD-4000 disk units with ASC and BIN translation modes. All figures are in
  460. bytes/ second, which includes both reading the byte from a C= disk and
  461. writing it to the MS-DOS disk. The average speed for either the read or
  462. write operation individually will be twice the speed given below. These
  463. results were obtained from copying a 156,273 byte text file (the text of C=
  464. Hacking Issue #4).
  465.  
  466. FROM    TO: FD-bin     FD-asc     81-bin     81-asc     71-bin     71-asc
  467. -------     ------     ------     ------     ------     ------     ------
  468. RAMLink      2,332      2,200      2,332      2,200      1,594      1,559
  469. RAMDOS       1,070      1,053      1,604      1,600      1,561      1,510
  470. FD4000           -          -      1,645      1,597      1,499      1,464
  471. JD1581       1,662      1,619          -          -      1,474      1,440
  472. JD1571       1,050      1,024        953        933          -          -
  473.  
  474.     These figures are for transfer speed only, not counting the couple of
  475. seconds of opening files and flushing the directory. Note that all my
  476. physical drives are JiffyDOS-ified, so your performance may be slower. I am
  477. at a loss to explain why an FD-4000 is so much slower than a 1581 for
  478. copying from a RAMDOS file, but the same speed or better for copying from
  479. anything else.
  480.  
  481.                    \\\\\ R - Run   RETURN - Menu \\\\\
  482.  
  483.  
  484.