home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / cpm / gendoc / filename.inf < prev    next >
Text File  |  1994-07-13  |  23KB  |  488 lines

  1.                                  Files
  2.  
  3.     A file is a collection of related information.  All programs, text,
  4. and data on your disk reside in files and each file has a unique name.
  5. You refer to files by their file names.
  6.  
  7.     You create a file each time you enter and save data or text at your
  8. terminal.   Files are also created when you write programs and save them
  9. on your disks.
  10.  
  11.     The names of the files are kept in directories on a disk.  These
  12. directories also contain information on the size of the files and may
  13. contain the dates that they were created, updated, and accessed.
  14.  
  15.     If you want to know what files are on your disk, you can use the DIR
  16. command.  This command tells the operating system to display all the
  17. files in the working directory of a specific disk.
  18.  
  19.  
  20.                                File Names
  21.  
  22.     Each CP/M file has a unique name consisting of one to eight
  23. characters, optionally qualified by the drive and an extension.  The
  24. three parts that make up file names follow:
  25.  
  26.                 d:filename.ext
  27.  
  28.     The first part is the drive code and is optional.  The drive code is
  29. a single letter followed by a colon.  The drive code specifies the disk
  30. drive on which the file is currently to be found.  CP/M provides up to
  31. 16 disk drives, named "A" thru "P".  Some systems, such as CP/M Plus and
  32. ZCPR, allow you to specify the user area with the drive code.  Many
  33. utility programs also allow the "drive/user" specification.  If the
  34. drive code is not specified, the logged on drive is assumed.
  35.  
  36.     The second part is the actual name of the file.  The file name is
  37. from one to eight characters, usually upper case alphabetic or numeric,
  38. but some other printable characters can be used.  The characters < > . ,
  39. ; : = ? * [ ] have special meaning and may not be used.  The name should
  40. be an abbreviated, descriptive name of what the file contains.
  41.  
  42.     The third part is the optional file type or file extension.  It is
  43. separated form the file name by a period.  It is good practice to
  44. include a file type even though it is optional.  File types consist of
  45. up to three characters and are separated from the file name by a period.
  46. Some programs, such as "ASM" require a specific file type.
  47.  
  48.         EXAMPLES:
  49.  
  50.                 A:FILENAME.INF
  51.                 ^ ^        ^
  52.                 | |        |
  53.                 | |        --- FILE TYPE ---  optional 1-3 characters.
  54.                 | |
  55.                 | |
  56.                 | ------------ FILE NAME ---  required 1-8 characters.
  57.                 |
  58.                 |
  59.                 -------------- DRIVE CODE --  optional 1 character.
  60.  
  61.  
  62.  
  63.     At the operating system prompt (the "A>") and from most programs,
  64. you can enter the filename in upper or lower case letters.  The
  65. characters will be translated to upper case.  The exception to this is
  66. when you issue the save command from BASIC.  Lower case characters will
  67. actually be saved in the directory.
  68.  
  69.     Attached is a list of commonly used file type designations on RCP/M
  70. systems around the country.  There is no RULE that these have to be used
  71. as described, but it is conventional to use them that way.
  72.  
  73.     Two special characters (called wildcards) can be used when you are
  74. searching the files on a disk: the asterisk (*) and the question mark
  75. (?).  The question mark (?) in a file name or extension means that any
  76. valid character can occupy that position.  An asterisk (*) in the file
  77. name or extension means that any character can occupy that position or
  78. any of the remaining positions in the file name or extension.
  79.  
  80.     ASCII (American Standard Code for Information Interchange) files are
  81. printable -- readable-by-human -- files.  They consist of letters,
  82. numbers, and a few symbols such as periods, comas, !, @, #, $, %, &, *,
  83. etc. . . with which we are familiar.  An ASCII file may be "TYPE"ed, and
  84. can be transferred over phone lines without error-checking, if desired.
  85. ASCII file should contain no word processor specific information.
  86. WordStar files should be saved in non-document mode.  Each line should
  87. end with a Carriage Return, Line Feed sequence and an EOF (hex 1A)
  88. should pad the last block of data.
  89.  
  90.      Many of the popular Public Domain programs and information files
  91. are distributed in library (LBR) files.  Below is a discussion of the
  92. structure of LBRs and the utilities needed to process them.
  93.  
  94.      A library is a group of files collected together into one file in
  95. such a way that the individual files may be recovered intact.  A library
  96. file can be identified by the "LBR" as the extent of the file name.  LU
  97. is a CP/M utility used to maintain libraries of files.  LU does not
  98. perform any compression.  Because of this, most people will squeeze or
  99. crunch files before adding them to a library if they want to save space.
  100. If you want to remove the component files (members) from a .LBR file,
  101. you should have a copy of LU.COM or other LBR extractor utility.  At the
  102. end of this document is a list of the programs available on many Remote
  103. CP/M systems and in the CP/M RoundTable Software Libraries of GEnie that
  104. function with libraries.
  105.  
  106.      A library file usually takes up less space than the total of the
  107. individual member files which went into it.  The reason for this is that
  108. CP/M allocates disk space in fixed blocks or groups, typically 2k bytes
  109. each.  Any space after the last sector of a file up to the next 2k block
  110. boundary is wasted.  The same files in a library use only the number of
  111. sectors they actually need, and though the library itself may have a
  112. partially wasted block at the end, and requires some space for directory
  113. information at the beginning, the net effect is usually a saving of
  114. total space.  The best results are seen when many small files are
  115. combined into one library.
  116.  
  117.      A library file makes most efficient use of the CP/M disk directory,
  118. since it is treated as only one file by CP/M regardless of how many
  119. members it contains.
  120.  
  121.      Libraries can aid in transferring packages of software from one
  122. system to another using XMODEM or other file transfer protocol.  Only
  123. one file is transferred, eliminating the need to run the XMODEM transfer
  124. program several times, the chance of overlooking a needed file, and the
  125. problems of naming conflicts, (such as READ.ME files) among unrelated
  126. packages.
  127.  
  128.      When members are added to a library, a CRC (Cyclic Redundancy
  129. Check) value is calculated and stored in the directory of the library.
  130. When the members are later extracted or the library is reorganized, the
  131. CRC value is again calculated and checked against the value in the
  132. directory.  If a discrepancy occurs the operator is notified. (Caution:
  133. This CRC validation does not occur with some public domain file
  134. extractors and earlier versions of LU and NULU.)
  135.  
  136.      Members can be added to, renamed, and deleted to the library.  The
  137. directory information of library is contained in the same file as the
  138. members.  The amount of space to be allocated to the directory must be
  139. specified by the user when a new library is created, but can be changed
  140. when the file is reorganized.
  141.  
  142.  
  143.      Recently popular CP/M Public Domain software files and information
  144. files are being distributed using ARCHIVE files.  ARChive files are
  145. similar to library (LBR) files in that they take a logical group of
  146. files and put them together in a single file.  The main difference, is
  147. that the members of the "ARC" file are automatically compressed.  The
  148. compression algorithm chosen is one of three which will produce the
  149. smallest file.
  150.  
  151.      ARChive files have been available to the MS-DOS and PC-DOS areas,
  152. but, have been made useful in the CP/M environment with the introduction
  153. of the "UNARC" program.  The current version is 1.6, and is available
  154. with assembly language source, extensive documentation, and two
  155. executable COM files, a 8080/8085 version and a Z80 version.  The Z80
  156. version takes advantage of the expanded Z80 (and equivalent) instruction
  157. set for speed and size, and therefore is machine dependent.
  158.  
  159.      A CP/M utility has just recently been made available to make an
  160. "ARC" file.  However, because of the resources required, it is still
  161. impractical to make Archives in the CP/M environment.  ARChive files will
  162. be made on systems using other operating systems.
  163.  
  164.      ARChive files are identified by the "ARC" as the file extension.
  165. This is a packaging method that guarantees no growth during storage.
  166. The files contain a "marker", followed by file information, file-data,
  167. file information, file-data etc.  File contents are analyzed before
  168. storage and either stored:
  169.  
  170. 1.  AS IS (typically files in the 1 to 200 byte range).
  171. 2.  With repeat-compression (same range as above).
  172. 3.  Using Huffman 8-byte encoding.
  173. 4.  Using Lempel-Ziv-Welch encoding (all others).
  174. 8.  Crunched - non-repeat packed (DLE encoded).
  175. 9.  New squashed files created with PKARC.
  176.  
  177.     The ARChive technique frees the user from worrying about storage
  178. mechanisms and delivers practically all needed services (extract, store,
  179. list, type, check, execute and re-compress using "latest" state of
  180. compression technique).  ARC is "downward" compatible.  It is currently
  181. heavily used in the MSDOS/PCDOS world, although usage in RCP/M systems
  182. is starting with availability of a fast DE-ARCer.
  183.  
  184.     The MS/PC-DOS ARC utility belongs into the category of "Share-ware"
  185. or "Free-ware" - it is copyrighted by System Enhancement Associates
  186. (source-language C, system MSDOS).  Phil Katz is the author of PKARC and
  187. the current version is 3.5.  UNARC was written by Bob Freed for the
  188. Public Domain (source-language assembler, for CP/M systems).
  189.  
  190.  
  191.      Some files on RCP/M systems and in the CP/M RoundTable Software
  192. Libraries have been compressed, using one of the standard public domain
  193. utilities, to minimize download time and save storage space.  This topic
  194. briefly discusses these compression techniques.
  195.  
  196.      Files that have been compressed can be identified by the filetype
  197. (the last 3 letters of a filename after the ".") that signifies the
  198. compression.  These are:
  199.  
  200.         .?Q?   for Squeezed files (middle letter is a Q).
  201.         .?Z?   for Crunched files (middle letter is a Z).
  202.  
  203.      USQ120.COM is used to unsqueeze, or expand files that have a "Q" as
  204. the middle letter of the filetype.  Such files have been squeezed, or
  205. compressed with SQ111.COM or similar utility.  These programs use
  206. Huffman Encoding to reduce the size of the target file.  Depending on
  207. the distribution of data in a file it can be reduced in size by 5% to
  208. 60% by squeezing it.  If you download a file with a filetype indicating
  209. that it is squeezed, you will need USQ120.COM to expand it before you
  210. can use it.  There are other programs available, written in different
  211. languages and take advantage of special hardware, but USQ is
  212. 8080/8085/Z80 compatible.
  213.  
  214.      Other utilities are available that have the unsqueeze coding
  215. imbedded and function with squeezed or unsqueezed files.  There are
  216. programs that perform file maintenance functions (NSWP), bi-directional
  217. display utilities (BISHOW), and string search programs, (SEARCH and
  218. FINDU).  This method of compressing files has been used for some time
  219. now and programs to uncompress the files are available to several micro
  220. processors and main frame computers.
  221.  
  222.  
  223.      CRUNCH uses the Lempel-Ziv-Welch (LZW) techniques.  This method is
  224. fast and offers compression ratios around 55%.  Highest compression is
  225. achieved with graphics data, values of 90% are typical, followed by
  226. text, with 50%, and COM files around 20%.  This method is relatively new
  227. to the CP/M environment.  See CRUNCH24.LBR for the Z80 CRUNCH and
  228. UNCRUNCH utilities.  FCRNCH11.LBR contains the utilities for 8080/8085
  229. compatible processors.  CRUNCH Version v2.0 and higher embody all of the
  230. concepts employed in the UNIX COMPRESS / ARC512 algorithm, but is
  231. additionally enhanced by a "metastatic code reassignment" facility.
  232. This is one of several concepts the author, Steven Greenberg is
  233. developing as part of an effort to advance data compression techniques
  234. beyond current performance limits.  He believes this is the first time
  235. this principle has been proposed and implemented.
  236.  
  237.      Since this method of file compression is relatively new, only a few
  238. utilities are available that process a crunched file directly.  TYPELZW,
  239. TYPEQZ, and LT are display utilities, which also display members of
  240. libraries and squeezed files.  SEARCH is a file searching program that
  241. allows you to search multiple text files for various words or phrases.
  242. SEARCH can directly search files within libraries, as well as squeezed
  243. and crunched files.  Files may also be processed on other systems not
  244. using the Z80 processor.
  245.  
  246.      A mini comparison of Huffman Encoding and Lempel-Ziv-Welch (LZW)
  247. techniques follows.
  248.  
  249.      Huffman Encoding expresses each storage unit as a variable length
  250. pointer into a frequency-ordered tree.  Compression is achieved by
  251. choosing a "native" storage unit (where repetitions are bound to occur)
  252. and (on the average) expressing the more frequent storage units with
  253. shorter pointers [although less used units might be presented by longer
  254. pointers].  The Encoding process needs two passes i.e., once reading all
  255. units (under CP/M and MSDOS 8 bit bytes) to build the frequency ordered
  256. tree (also called the "dictionary") and then translating all units into
  257. their respective pointer values.  Original filename, dictionary and
  258. pointer values are stored - by convention the second character of the
  259. filename extension is changed to Q - reminder of a "squeezed" file.
  260.  
  261.      LZW expresses strings of 8-bit bytes by pointers into an "ordered"
  262. string-table.  The rules for "constructing" the table are reversible, so
  263. that Compressor and De-Compressor can build their table on-the-fly.  LZW
  264. is one-pass, although achieved speed is VERY dependent on language
  265. implementation and available physical memory (in general more than 90%
  266. of time spent in hashing and table searching). Although early
  267. implementations of LZW seemed to need more than 64K of physical memory,
  268. current enhancements make a maximum of 2**11 table entries sufficient to
  269. handle all cases.  State of the art implementations check compression
  270. ratio on the fly - and rebuild the table if compression ratio decreases
  271. beyond a minimum or rebuild the table on table overflow.
  272.  
  273.      Typical Huffman compression ratios however around 33% (compressed
  274. file is 66% of original, whereby text is typically compressed a little
  275. better, and executable files less).  Typical LZW compression ratios
  276. average 55%.  Highest compression is achieved with pixel-information,
  277. values of 90% are typical, followed by text, with 50%, and executable
  278. files around 20%.  Although the original paper on LZW suggested
  279. implementation between CPU and peripheral devices (terminal,
  280. disk-drives, mag-tapes) - current usage encompasses file-compression
  281. (Unix COMPRESS, MSDOS ARC, CPM UNArc) - high speed proprietary
  282. MODEM-protocols ("LZW in SILICON") and "picture transmission" at 1200
  283. baud.
  284.  
  285. Thoughts on CP/M and MS-DOS filename compatibility.
  286.  
  287.      Many users now work with both CP/M and MS-DOS systems.  Files of
  288. the two systems have a compatible file structure , (ASCII text,
  289. WordStar, dBase II, Archives, etc), and multi-format disk utilities,
  290. (Media Master, Uniform, etc).  Unfortunately, although the file naming
  291. conventions for each of the systems are similar, there are some
  292. differences that demand attention if compatibility is to be assured.
  293.  
  294.      Below is a list of the LEGAL characters common to both CP/M and
  295. MS-DOS:
  296.  
  297.         A-Z  0-9  ! # $ & ' - @ ^ ` { } ~
  298.  
  299. In ASCII sorting order (same characters):
  300.  
  301.         ! # $ & ' -  0-9  @  A-Z  ^ ` { } ~
  302.  
  303.  
  304. MS-DOS illegal file names (reserved for device names):
  305.  
  306.         AUX, CON, PRN, NUL, COM1, COM2, LPT1, LPT2, LPT3
  307.  
  308.  
  309.      Computer users that are interested in transferring files could
  310. standardize on the above characters, (while avoiding the reserved names
  311. when using CP/M).  This would provide one more area of compatibility.
  312.  
  313.                                File Types
  314.  
  315. $$$ -- Temporary file, used by PIP and other copy programs as a work file.
  316. ACT -- ACT language source file.
  317. ADD -- Indicating an "addition" or new update.
  318. ADV -- Adventure game.
  319. ALG -- ALGOL language source files.
  320. APL -- APL language.
  321. ARC -- ARChive files.
  322. ARK -- ARChive files, used for CP/M files.
  323. ART -- Article files.
  324. ASC -- BASIC language source statements.
  325. ASM -- Assembly Language source code, usually for 8080 assemblers.
  326. AZM -- Assembly Language source code, used with Z80MR.
  327. BAD -- Bad sector directory entry file.
  328. BAK -- Backup file.
  329. BAS -- Basic language source statements.  Normally saved as ASCII.
  330. BBS -- Bulletin board system file.
  331. BHB -- Heath Benton Harbor Basic language.
  332. BIN -- Binary file.  Usually NOT a .COM file renamed.
  333. BSE -- E BASIC source.  See also, "EBA" and "EBS".
  334. BUG -- Bug data/information file.
  335. C   -- C Language source.  Most often BDS C.
  336. CAL -- Calc or spreadsheet data file.
  337. CAT -- Catalog of file names.
  338. CCP -- Console command processor file.
  339. CHK -- Check file.
  340. CMD -- Command file CP/M 86.
  341. COB -- COBOL language source statements.
  342. COM -- Machine language COMMAND files for CP/M 80.
  343. CPR -- Compare file.
  344. CRC -- CRC data file.
  345. CRL -- C language relocatable/intermediate file:.
  346. DAT -- DATA file.
  347. DDT -- DDT file.
  348. DIF -- Difference file.
  349. DIR -- Directory file.
  350. DOC -- Documentation file.
  351. DSK -- Disk data file.
  352. EBA -- E BASIC source.  See also "BSE" and "EBS".
  353. EBS -- E BASIC source.  See also "EBA" and "BSE".
  354. ENV -- ZCPR3 Environment Descriptor file.
  355. ERL -- Relocatable pascal module.
  356. FCP -- ZCPR3 Flow Command Package.
  357. FEX -- Felix language source file.
  358. FIX -- Instructions for correct program errors.
  359. FMT -- Format file.
  360. FOR -- FORTRAN language source statements.
  361. GMR -- Grammar file.
  362. H   -- C Language "header" source statements.
  363. HEX -- HEX intermediate file.  Most often INTEL format.
  364. HLP -- File intended for use with the HELP utility.
  365. IDX -- Index file for data file.
  366. INF -- Information files.
  367. INP -- Input file.
  368. INT -- Intermediate code produced by compilers such as CBASIC.
  369. INV -- Invoice file.
  370. IOP -- ZCPR3 Input/Output Package.
  371. LBR -- Library file.  Use NULU, LU, LDIR, LUX, LTYPE to manipulate.
  372. LIB -- Library file assembly source module.
  373. LST -- Listing files, intended for printing.
  374. LTR -- Letter/correspondence file.
  375. M80 -- Microsoft M80 Macro assembler source.
  376. MAC -- Macro assembly source file for M80.
  377. MAG -- Magazine file.
  378. MAP -- Map data file.
  379. MEM -- Memory file.
  380. MNU -- ZCPR3 MENU utility script.
  381. MOD -- Modification instructions.
  382. MSG -- Message file.  Timely, not of permanent use.
  383. MSS -- Manuscript documents.  Input to word processors.
  384. MUS -- Music language source file.
  385. NAM -- Name file.
  386. NDR -- ZCPR3 Named Directory Package.
  387. NEW -- Indicates proposed revision to an existing program/release.
  388. OBJ -- Object file or renamed COM.
  389. OUT -- Output file.
  390. OVL -- Overlay command file.
  391. OVR -- Overlay: a "part" of a multi-part .COM file.
  392. PAS -- PASCAL language source statements.
  393. PAT -- Patch for customizing or fixing programs.
  394. PGM -- Program file.
  395. PIC -- Picture file.
  396. PL1 -- PL/1 language source statements.
  397. PLM -- PLM language source file.
  398. PLT -- Pilot language source file.
  399. PRN -- Listing output of assemblers.
  400. PRT -- Print files, intended for printing.
  401. PTR -- Printer file.
  402. PUN -- Punch device file.
  403. RAT -- Ratfor language source file.
  404. RCP -- ZCPR3 Resident Command Package.
  405. REF -- Reference file.
  406. REL -- Relocatable/intermediate file.  Output from.
  407. ROM -- Read only memory file.
  408. RPT -- Report file.
  409. SAM -- SAM language source file.
  410. SET -- Setup file.
  411. SIG -- SIG/M information file.
  412. SRC -- Pascal source file.
  413. SRT -- Sorted file.
  414. STC -- STOIC language source file.
  415. SUB -- File of commands for input to SUBMIT.
  416. SUB -- Submit command file.
  417. SYM -- Symbol table file.
  418. SYS -- System file.
  419. TEL -- Telephone number file.
  420. TEX -- Text file.
  421. TST -- Test file.
  422. TXT -- Text file.
  423. TYP -- Type file.
  424. UTL -- Utility file.
  425. VAR -- Variable file.
  426. VMN -- ZCPR3 VMENU utility script.
  427. WS  -- Text document in WordStar format.
  428. Z3T -- ZCPR3 TCAP entry.
  429. Z80 -- Assembly Language source code, usually for Z80 assemblers.
  430. ZEX -- ZCPR3 ZEX utility script file.
  431. nnn -- Used to indicate "volume serial #".
  432. xQx -- Squeezed file.  Needs to be "unsqueezed" before use.
  433. xZx -- Crunched file.  Needs to be "uncrunched" before use.
  434.  
  435.                              File Utilities
  436.  
  437.       File name       K    Description
  438.  
  439.      ARC-FILE.IQF     5  ARC file internal structure defined
  440.      CPMSQV3.LBR     30  SQueeze/UnSQueeze - Turbo Pascal
  441.      CRUNCH20.LBR    52  Data compression with LZW algorithm
  442.      DELBR11.COM     13  LBR file extractor
  443.      DELBR11A.CQ      6  LBR file extractor source code
  444.      DLU12.PQS       11  A library utility in turbo pascal
  445.      LBRDSK23.LBR    17  Treat libraries as a logical drive
  446.      LDIR.COM         2  Directory lister for LBR files
  447.      LDIR23.LBR      16  Lists directory of LBR file
  448.      LRUN20.AQM      16  Run .COM files inside LBRs
  449.      LRUN20.COM       2  Run .COM files inside LBRs
  450.      LSTYPE.LBR       7  Print multiple files inside LBRs
  451.      LSWEEP13.LBR    25  Library SWEEP utility extract/view
  452.      LTYPE17.LBR     17  Types text files inside LBRs
  453.      LU300.DQC       22  Documentation for LU
  454.      LU310.COM       21  Library Utility version 3.10
  455.      LU310.HLP        1  Help file for use with LU310
  456.      LU310.UPD        3  Update info on LU310.COM
  457.      LUDEF5.DQC      11  Internal structure of LBR files
  458.      LZW.LBR         52  Compression/decompression Utilities
  459.      NULU15.NOT       2  A note from the author of NULU151
  460.      NULU15.WQ       40  Complete user's guide for NULU151
  461.      NULU151.COM     16  Machine lang. Library Utility pgm
  462.      NULUFIX.ASM      2  Bug fixes for NULU15.COM
  463.      NULUTERM.AQM     2  Terminal configuration for NULU151
  464.      SQ.PQS          13  File SQueezer
  465.      SQ111.COM        6  Machine language SQueezer, very fast
  466.      SQUEEZE.TXT     13  Tutorial on SQueeze/UnSQueeze
  467.      SQUPORT2.LBR    35  Portable SQueeze/UnSQueeze in C lang
  468.      TYPEQZ12        35  Squeezed/Crunched type utility
  469.      UNARC-P1.NQT     2  UNARC12 patch for non-standard CP/M
  470.      UNARC.COM        5  Z80 version of UNARChive utility
  471.      UNARC12.LBR    108  UNARC utility for CP/M
  472.      UNARCA.COM       5  Lists, types, extracts from ARChives for 8080
  473.      UNCR20.COM       4  UNCRunch for CRUNCH20 and prior
  474.      UNCR8080.COM     6  UNCRunch for 8080/8085 CPUs
  475.      USQ.PQS          5  SQueezed file UnSQueezer
  476.      USQ120.COM       2  Dave Rand's machine lang. UnSQueezer
  477.      USQ120.DOC       3  Documentation for Dave Rand's USQ120
  478.      USQFST20.LBR    28  Fast unsqueezer for Z80 computers
  479.  
  480. November 11, 1987
  481.  
  482.     This text file consists of notes taken at the November meeting of
  483. D:KUG (The Detroit Metropolitan Kaypro Users Group).  The subject of the
  484. meeting was about files, the format of file names, and the public domain
  485. programs available to process disk files.
  486.  
  487. B.Duerr
  488.