home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / cpm / utils / dskutl / swp-ms10.ark / TRAMDF.DOC < prev    next >
Text File  |  1989-09-27  |  24KB  |  586 lines

  1.  
  2. TraMDF : TRAnsfer_Msdos_Disk_Files
  3.  
  4.  
  5.                          Transfer_Msdos_Disk_Files
  6.                               on a CP/M host.
  7.  
  8.                                 Written by
  9.                              Wim Nelis, 199111
  10.                               (Nelis@NLR.NL)
  11.  
  12.  
  13. 1. Introduction
  14.  
  15. Transfer_Msdos_Disk_Files, abbreviated to TraMDF, is a utility to copy 
  16. files between a CP/M disk and an MS-DOS disk on a CP/M host. It's features 
  17. are:
  18.  
  19.  - TraMDF supports all MS-DOS disk formats, which are supported by the 
  20.    hardware and the BIOS of your CP/M host.
  21.  - TraMDF supports subdirectories on the MS-DOS disk.
  22.  - TraMDF uses a SWEEP-like user interface.
  23.  - TraMDF can swap easily from one CP/M user area to another.
  24.  - TraMDF optionally copies the file attributes, from MS-DOS to CP/M as 
  25.    well as in the opposite direction.
  26.  - TraMDF performs extensive error checking and error handling.
  27.  - TraMDF can determine the actual end-of-file position of CP/M text files.
  28.  - TraMDF can handle files of up to 4 MegaBytes each.
  29.  - TraMDF is written entirely in Turbo Pascal 3.0
  30.  
  31. In order to run TraMDF you need to have:
  32.  - CP/M version 2.2 or later,
  33.  - a TPA size of 40 KByte or more,
  34.  - the Turbo Pascal 3.0 compiler,
  35.  - a BIOS which can read/write MS-DOS disk sectors (see chapter 3.1 for an 
  36.    explanation)  and optionally,
  37.  - a way to retrieve the current position of the cursor.
  38.  
  39.  
  40. 2. Usage of TraMDF
  41.  
  42. TraMDF is a utility to copy files between an MS-DOS disk and a CP/M disk. 
  43. It incorporates a 'file manager', with a SWEEP-like user interface, as well 
  44. as a 'parameter manager' with a simple menu interface to set various 
  45. parameters. The next chapters explain how to use TraMDF once it is 
  46. installed properly.
  47.  
  48. 2.1 Invokation
  49.  
  50. TraMDF does not expect any arguments to be passed at the invokation. All 
  51. parameters can be set and viewed within TraMDF, using the parameter 
  52. manager.
  53.  
  54. Upon startup, TraMDF will enter the parameter manager. When you leave it 
  55. using the Quit command, the file manager is entered.
  56.  
  57. 2.2 Parameter manager
  58.  
  59. The parameter manager uses a menu driven interface to display and to modify 
  60. the values of the parameters. For all parameters a default value is 
  61. defined; the default value of the (name of the) MS-DOS disk drive is 
  62. 'undefined' however.
  63.  
  64.  
  65.                                   - 1 -
  66.  
  67. TraMDF : TRAnsfer_Msdos_Disk_Files
  68.  
  69.  
  70.  
  71. Note: when leaving the parameter manager, the MS-DOS drive MUST be defined: 
  72. the file manager assumes that the MS-DOS drive is usable.
  73.  
  74. In the next paragraphs, the commands of the parameter manager are described 
  75. in alphabetical order.
  76.  
  77.  A Specify the options to be used in copying files from CP/M to MS-DOS. 
  78.    This command will display another menu. The commands in this menu are, 
  79.    in alphabetical order:
  80.     C Select whether file attributes are copied or not. Note that all files 
  81.       created on the MS-DOS disk will have the Archive attribute set.
  82.     F Set the type of files to be copied. The type will circulate between 
  83.       three values: Text, Binary and AskUser. In the latter case for each 
  84.       file to be copied the actual file type will be asked.
  85.     P Specify the padding character of the last cluster. This 'character' 
  86.       must be specified as a hexadecimal number.
  87.     Q Quit, that is return to the previous menu.
  88.  
  89.  B Specify the options to be used in copying files from MS-DOS to CP/M. 
  90.    This command will display another menu. The commands in this menu are, 
  91.    in alphabetical order:
  92.     B Specify the padding character for a file of type Binary. This 
  93.       'character' must be specified as a hexadecimal number.
  94.     C Select whether file attributes are copied or not. Note that only the 
  95.       attributes System, Hidden and ReadOnly can be copied: the other 
  96.       attributes are ignored.
  97.     F Set the type of files to be copied. The type will circulate between 
  98.       three values: Text, Binary and AskUser. In the latter case for each 
  99.       file to be copied the actual file type will be asked.
  100.     Q Quit, that is return to the previous menu.
  101.     T Specify the padding character for a file of type Text. This 
  102.       'character' must be specified as a hexadecimal number.
  103.  
  104.  C Specify the CP/M drive and the user area to be used. The format of the 
  105.    specification is
  106.       [<CpmDriveLetter>][<UserNumber>][:]
  107.    If <CpmDriveLetter> is not specified, the 'default' drive at the time of 
  108.    invokation of TraMDF is used. If <UserNumber> is not specified, the 
  109.    'current' user number at the time of invokation of TraMDF is used.
  110.  
  111.  D Display the parameters of the MS-DOS disk. These parameters are read 
  112.    from the boot sector of the MS-DOS disk. If the MS-DOS disk is 
  113.    installed, the title will show the word 'current'. Otherwise, it will 
  114.    show the word 'last'.
  115.  
  116.  E Exit from program TraMDF. As it is not allowed to (re)enter the file 
  117.    manager if the MS-DOS drive is not defined and installed, this 
  118.    additional exit is needed in case the installation of the disk fails.
  119.  
  120.  M Specify the drive containing the MS-DOS disk. The MS-DOS disk is 
  121.    installed and the working directory is set to the root directory. If the 
  122.    installation of the MS-DOS disk fails, the drive name is set to '?', 
  123.    which means that the MS-DOS drive is undefined.
  124.  
  125.  Q Quit and (re)enter the file manager. However, if the is MS-DOS drive is 
  126.    undefined, 'Q' will not work.
  127.  
  128.  
  129.  
  130.                                   - 2 -
  131.  
  132. TraMDF : TRAnsfer_Msdos_Disk_Files
  133.  
  134.  
  135.  S Specify the initial source drive. The value will flip between MS-DOS and 
  136.    CP/M. This command is analogous to the X command of the file manager.
  137.  
  138.  T Specify today's date. Initially, the date is set to the date of 
  139.    compilation of TraMDF. The date is set in all files created on the MS-
  140.    DOS disk.
  141.  
  142.  
  143. 2.3 File Manager
  144.  
  145. Like SWEEP, the file manager builds a list of all files and subdirectories 
  146. each time a source is selected. Stepping through the list, an action on a 
  147. file of subdirectory can be performed with a one-letter command.
  148.  
  149. The file copy is the basic function of TraMDF. The file names and the file 
  150. formats of CP/M and MS-DOS are almost identical. Both file systems 
  151. recognise two file types: text files and binary files. Text files consists 
  152. of lines separated by two characters, a CarriageReturn and a LineFeed 
  153. character. Binary files are considered to be a (long) string of bytes. Thus 
  154. copying a file is simple as no transformations are required.
  155.  
  156. However, there is a difference between CP/M and MS-DOS: CP/M reords the 
  157. length of a file in multiples of 128 bytes while MS-DOS records the length 
  158. in mutiples of 1 byte. In other words, CP/M does not know the exact length 
  159. of a file. In (printable) text files, the (non-printable) ^Z character is 
  160. used to flag the actual end of file position. Thus if a text file is copied 
  161. from CP/M to MS-DOS the actual end of file position must be determined, 
  162. while on the other hand the ^Z must be added when copying in the reverse 
  163. direction. If a non-text file is copied from CP/M to MS-DOS, the CP/M 
  164. length is passed to MS-DOS. However, in the reverse direction the last 
  165. record of the CP/M file needs to be filled up with a padding character. The 
  166. action performed at the end of the file is determined by the parameter 
  167. FileType (which can be specified using the Z command).
  168.  
  169. In the next paragraphs, the commands of the file manager are explained one 
  170. by one in alphabetical order.
  171.  
  172.    (Space) Move to the next entry in the file list. If at the last entry of 
  173.    the list, wrap to the first entry of the list.
  174.  
  175.  B Move to the previous entry in the file list. If at the first entry in 
  176.    the list, wrap to the last entry of the list.
  177.  
  178.  C Copy the file to the destination. The destination must have been set 
  179.    already using either the L, S and/or P commands.
  180.  
  181.  D Delete the file. The user is always asked to confirm the deletion. 
  182.    Therefore, no special action is taken if the file has the attribute 
  183.    ReadOnly set.
  184.  
  185.  E Delete all the tagged files. The user is asked to confirm the deletion 
  186.    of each file.
  187.  
  188.  F Display the free disk space on both the CP/M disk and the MS-DOS disk.
  189.  
  190.  L Log in a CP/M drive to serve as either source or destination in the file 
  191.    manager commands.  The format of the specification is
  192.       [<CpmDriveLetter>][<UserNumber>][:]
  193.  
  194.  
  195.                                   - 3 -
  196.  
  197. TraMDF : TRAnsfer_Msdos_Disk_Files
  198.  
  199.  
  200.    If <CpmDriveLetter> is not specified, the 'default' drive at the time of 
  201.    invokation of TraMDF is used. If <UserNumber> is not specified, the 
  202.    'current' user number at the time of invokation of TraMDF is used.
  203.  
  204.  M Copy all tagged files. Once a file is copied, it is untagged.
  205.  
  206.  P (MS-DOS only) Select the subdirectory to serve as either source or 
  207.    destination area. This command can only be used on 'files' with the 
  208.    atrribute Directory set.
  209.  
  210.  Q Exit from the file manager and from program TraMDF.
  211.  
  212.  S Specify the drive containing the MS-DOS disk. The MS-DOS disk is 
  213.    installed and the working directory is set to the root directory. If the 
  214.    installation of the MS-DOS disk fails, the drive name is set to '?', 
  215.    which means that the MS-DOS drive is undefined. In that case the Z 
  216.    command will be executed, in order to define the MS-DOS drive.
  217.  
  218.  T Tag the file and show the sum of the sizes of the tagged files. Only 
  219.    files can be tagged: if you try to tag a directory, the command is 
  220.    ignored without any error message.
  221.  
  222.  U Untag the file.
  223.  
  224.  W Tag multiple files using a wildcard mask. The normal CP/M conventions 
  225.    with regard to wild cards and ambigous file names are followed.
  226.  
  227.  X Swap source and destination area. Thus the source area becomes the 
  228.    destination area and the destination area becomes the source area.
  229.  
  230.  Z Set parameter values. Using this command, the parameter manager is 
  231.    entered. It is described in the preceeding chapter.
  232.  
  233.  ? Show a short list of the commands of the file manager.
  234.  
  235.  
  236. 2.4 Error messages
  237.  
  238. There are two types of errors. The first type are those errors which are 
  239. reported (and handled) by TraMDF. This type of errors is often related to 
  240. (problems with) MS-DOS disk I/O.
  241. The second type are those errors which are reported by either CP/M (BDOS) 
  242. or the run-time system of Turbo Pascal. Typical examples of this type of 
  243. error are bugs in the TraMDF (not so many, I hope) and CP/M disk I/O 
  244. problems.
  245.  
  246. 2.4.1 Errors reported by TraMDF 
  247.  
  248. All the errors reported by TraMDF are non-fatal, that is the current 
  249. operation is terminated immediatly and control is returned to the file 
  250. manager or the parameter manager. If necessary, a partial file will be 
  251. deleted. The error is reported in the following format:
  252.  
  253.    Error in <Procedure_Chain> : <Error_Description>
  254.  
  255. Procedure_Chain specifies the chain of procedures and functions invoked by 
  256. the file manager or the parameter manager: the last one in the chain 
  257. detected the error. The names of the procedures and functions are 
  258.  
  259.  
  260.                                   - 4 -
  261.  
  262. TraMDF : TRAnsfer_Msdos_Disk_Files
  263.  
  264.  
  265. abbreviated, using the first 3 characters from the verb and the first 
  266. character of each of the nouns in the full name. The table below contains 
  267. the abbreviation and the full name of all involved procedures and 
  268. functions.
  269.  
  270.    Abbreviation  FullName
  271.    CloMF         CloseMsdosFile
  272.    CopF          CopyFile
  273.    CreMF         CreateMsdosFile
  274.    DelMF         DeleteMsdosFile
  275.    FluC          FlushCache
  276.    GetFFE        GetFreeFatEntry
  277.    GetNDE        GetNextDirectoryEntry
  278.    InsMD         InstallMsdosDrive
  279.    LocMD         LocateMsdosDirectory
  280.    LocMF         LocateMsdosFile
  281.    ReaC          ReadCluster
  282.    ReaF          ReadFat
  283.    ReaMD         ReadMsdosDirectory
  284.    ReaMF         ReadMsdosFile
  285.    ReaS          ReadSector
  286.    SetCD         SetCpmDrive
  287.    SetMD         SetMsdosDrive
  288.    SetTD         SetTodaysDate
  289.    WriC          WriteCluster
  290.    WriF          WriteFat
  291.    WriMF         WriteMsdosFile
  292.    WriS          WriteSector
  293.  
  294. Error_Desciption specifies the type of error detected. In most cases, this 
  295. gives a clue of what to do to solve or to circumvent the problem. The 
  296. Error_Description can be:
  297.  
  298.    Disk read error
  299.       BIOS detected an error while reading an MS-DOS sector.
  300.  
  301.    Disk write error
  302.       BIOS detected an error while writing an MS-DOS sector.
  303.  
  304.    Can't read the boot sector
  305.       BIOS detected an error while reading the first sector of an MS-DOS 
  306.       disk.
  307.  
  308.    Disk full
  309.       There are no more free clusters in the FAT.
  310.  
  311.    File not found : <FileName>
  312.       The indicated file could not be found in the directory any more, 
  313.       while it was there at the time the file list was established.
  314.  
  315.    CP/M disk write error
  316.       The TP run-time system reported an error. A possible cause is a full 
  317.       CP/M disk.
  318.  
  319.    Illegal date : <Date>
  320.       The format of the supplied date is not 'yyyymmdd' or the yearnumber, 
  321.       the monthnumber and/or the daynumber is/are out of range. The range 
  322.       of valid yearnumbers is [1980..2012].
  323.  
  324.  
  325.                                   - 5 -
  326.  
  327. TraMDF : TRAnsfer_Msdos_Disk_Files
  328.  
  329.  
  330.  
  331.    Directory is full
  332.       There are no more free entries in the directory. TraMDF is not able 
  333.       to extend the MS-DOS subdirectories (yet?).
  334.  
  335.    Illegal specification : <Drive_Name>
  336.       The specified drive cannot be accepted, because either the drive does 
  337.       not exist or the drive is already in use in another drive 
  338.       specification.
  339.  
  340.    Incompatible drive selected : <Drive_Name>
  341.       The specified MS-DOS drive cannot be used because it cannot read the 
  342.       MS-DOS disk. The number of heads and/or the number of cylinders of 
  343.       the drive is smaller than required to read and write the disk.
  344.  
  345.    Cluster/FAT buffer too small
  346.       The cluster buffer or the FAT buffer is too small. Check the disk 
  347.       parameters for the required size and adapt TraMDF accordingly.
  348.  
  349.    Media descriptors don't match
  350.       The media descriptor in the boot sector differs from the media 
  351.       descriptor in the FAT. Is it really an MS-DOS disk?
  352.  
  353.    MS-DOS drive unspecified
  354.       Upon leaving the parameter manager, the MS-DOS drive must be 
  355.       specified and installed.
  356.  
  357.    Not enough space on destination disk
  358.       The destination disk cannot hold the file to be copied. Free up space 
  359.       or copy to another disk.
  360.  
  361. 2.4.2 Errors reported by other
  362.  
  363. All the errors from either the runtime system of Turbo Pascal or from CP/M 
  364. are fatal: the execution of the program will be terminated. There is a 
  365. small problem when terminating TraMDF: it has modified a table within BIOS 
  366. and it has modified the CP/M entry vector address (see EXTFN.UNT). Both 
  367. modifications must be undone before control is passed to CP/M.
  368.  
  369. For this purpose, TraMDF contains a small errorhandler, which restores the 
  370. BIOS table and the BDOS entry vector. However, it is found that BDOS errors 
  371. are not always catched by the TP runtime system. As a result, the 
  372. aforementioned restoration is not performed. Thus, after a BDOS error 
  373. without a TP error message, it is advisable to reboot the CP/M host.
  374.  
  375.  
  376. 3. Adaption of TraMDF to your CP/M system.
  377.  
  378. TraMDF needs to be changed to your CP/M system for three reasons:
  379.  - Your BIOS must be able to address, read and write each sector on the MS-
  380.    DOS disk. TraMDF will change the BIOS tables to achieve this goal using 
  381.    system dependent extensions.
  382.  - The disk drive configuration of your CP/M system must be known to 
  383.    TraMDF.
  384.  - (Optional) Knowledge of the screen size and the location of the cursor 
  385.    results in a somewhat nicer screen layout.
  386.  
  387. In the following chapters, the modifications are described one by one. The 
  388.  
  389.  
  390.                                   - 6 -
  391.  
  392. TraMDF : TRAnsfer_Msdos_Disk_Files
  393.  
  394.  
  395. first step is to determine if it is possible to get YraMDF working on your 
  396. CP/M host.
  397.  
  398. 3.1. Check if your BIOS can read/write MS-DOS floppy disks.
  399.  
  400. Your BIOS must be able to perform two functions. The first function is to 
  401. read and write sectors of 512 bytes. In some CP/M systems, like mine, the 
  402. physical sector size is just a parameter in the extension of the DPB. On 
  403. other systems, the physical sector size is hardcoded into BIOS: if you have 
  404. one of those systems, check if it can support 512 byte sectors.
  405.  
  406. The second function to be performed by your BIOS is to address each sector 
  407. on the MS-DOS floppy disk in the correct sequence. The addressing of the 
  408. sectors is a two-step proces. Within TraMDF, a sector is addressed only by 
  409. a (logical) sector ordinal: sector 0 is the boot sector, while sector 719 
  410. is the last sector of a 360 kByte floppy disk. In the procedures ReadSector 
  411. and WriteSector, the logical sector ordinal is mapped onto the address 
  412. required by BIOS. It consists of two numbers, the logical track number and 
  413. the record (= CP/M 128 byte sector) number. Within your BIOS this address 
  414. is effectivly mapped onto a physical address, which consists of four 
  415. numbers: the cylinder ordinal C, the head ordinal H, the physical track 
  416. number T and the physical sector number S.
  417.  
  418. The sequence of the two mappings should map logical sector 0, the boot 
  419. sector, onto physical address C0H0T0S1 and, for a disk with 9 sectors per 
  420. track, it should map logical sector 9 onto either physical address C1H0T1S1 
  421. for a single sided disk or C0H1T0S1 for a double sided disk.
  422.  
  423. ONLY IF YOUR BIOS IS ABLE TO PERFORM THE TWO FUNCTIONS DESCRIBED ABOVE, IT 
  424. IS POSSIBLE TO INSTALL TraMDF ON YOUR SYSTEM!
  425.  
  426.  
  427. 3.2  Change TraMDF for MS-DOS disk I/O
  428.  
  429. In the following paragraphs, the modifications to be able to perform MS-DOS 
  430. disk I/O are described.
  431.  
  432. 3.2.1  Disk Paramater Block (DPB)
  433.  
  434. Change the definition of the DPB (TRAMDF.IF0) to reflect the format of the 
  435. DPB in your system. The default DPB consists of the fields SPT through OFF; 
  436. all the other fields are specific to Aster CT-80 BIOS. The constant 
  437. SkeletDPB (TRAMDF.IF0) needs to be modified accordingly. Don't forget to 
  438. change the address computation in procedure DetermineDriveAttributes 
  439. (TRAMDF.PAS).
  440.  
  441. 3.2.2  Procedure DetermineDriveAttributes
  442.  
  443. Change procedure DetermineDriveAttributes (TRAMDF.PAS). This procedure must 
  444. determine the disk drive configuration of your system. It leaves 
  445. information in the following variables:
  446.      ConfiguredDrives : The set of drives which can be used for CP/M files. 
  447.                         Normally this set will contain all your drives.
  448.      FloppyDrives     : The set of drives which can be used for MS-DOS 
  449.                         files. The drives in this set will be floppy disk 
  450.                         drives.
  451.      DriveAttribute   : Some physical attributes of each of the drives in 
  452.                         the set ConfiguredDrives and the address of the DPB 
  453.  
  454.  
  455.                                   - 7 -
  456.  
  457. TraMDF : TRAnsfer_Msdos_Disk_Files
  458.  
  459.  
  460.                         for that drive.
  461. You can extract some information from BIOS but often it is necessary to 
  462. hardcode the configuration information into this procedure.
  463.  
  464. The field DevAddress in record DriveAttribute needs some explanation. The 
  465. BIOS of the Aster CT-80 allows one to assign two logical drives to one 
  466. physical drive. However, it does not prevent you from using the two logical 
  467. drives simultaneously, giving undesired results. Therefore, TraMDF checks 
  468. the physical drive address too, in order to avoid the MS-DOS drive and the 
  469. CP/M drive to be assigned to the same physical drive, in spite of being 
  470. assigned to different logical drives. If your BIOS does not have this kind 
  471. of problems, you can inactivate effectivly these test by assigning the 
  472. logical drive address (0 for A:, 1 for B:, etc.) to the physical drive 
  473. address in procedure DetermineDriveAttributes.
  474.  
  475. 3.2.3  Procedure InstallMsdosDrive
  476.  
  477. Change procedure InstallMsdosDrive (TRAMDF.IF5). It modifies in two steps 
  478. the DPB in BIOS according to the format of the MS-DOS disk. In the first 
  479. step, the characteristics of the MS-DOS disk are not yet known. In this 
  480. step BIOS is prepared to read the bootsector, which contains a table with 
  481. the disk format characteristics. In the second step the DPB is modified to 
  482. reflect the format of the disk. It involves three fields in the standard 
  483. DPB: SPT, BLM and OFF. Field SPT contains the size of a logical track. This 
  484. is either the size of a physical track or the size of a physical cylinder. 
  485. This depends on the address mapping performed by your BIOS. Field BLM 
  486. contains the size of a physical sector expressed as the number of CP/M 
  487. records in one sector minus one. (Perhaps field BSH must be set 
  488. accordingly.) Field OFF should be set to zero. The other fields in the 
  489. standard DPB are most probably not important.
  490.  
  491. 3.2.4  Address mapping
  492.  
  493. Change procedures ReadSector and WriteSector (TRAMDF.IF1). They must map 
  494. the logical sector ordinal onto the CP/M address, a logical track number 
  495. and a record ordinal, in such a way that BIOS will translate the CP/M 
  496. address to the correct physical disk address. Using the documentation of 
  497. BIOS and through some experiments, you can determine the required mapping. 
  498.  
  499. At this point I can only give you some hints:
  500.  - The logical track can be identified with either a physical track or, in 
  501.    case of a double sided disk, with a cylinder. In field SPT in the DPB 
  502.    the size of the logical track is specified.
  503.  - The physical sector number of the first sector on an MS-DOS track is 
  504.    always 1. If record ordinal 0 is mapped on sector number 0, adding 
  505.    RecordsPerSector to the record ordinal will result in a mapping onto 
  506.    sector number 1.
  507.  - Perhaps invokations of the BIOS function to translate the record address 
  508.    are needed.
  509.  
  510.  
  511. 3.3  Change TraMDF for nicer displays
  512.  
  513. In the file manager, stepping through the list of files will cause the 
  514. header to scroll from the screen. It is somewhat nicer if those header 
  515. lines are not scrolled. On some hosts, it is possible to define the 
  516. scrolling region. However, for hosts which do not support such a feature, 
  517. but which can supply the current position of the cursor, TraMDF can 
  518.  
  519.  
  520.                                   - 8 -
  521.  
  522. TraMDF : TRAnsfer_Msdos_Disk_Files
  523.  
  524.  
  525. simulate this behaviour using an output filter. Currently the code to do so 
  526. is inactive as it is embedded within comment delimiters.
  527.  
  528. For the output filter to work, it is necessary that TraMDF can retrieve the 
  529. current position of the cursor and that the predefined TP procedures 
  530. GotoXY, DelLine and InsLine are properly functioning. The following actions 
  531. are needed to activate the output filter:
  532.  
  533.  - In CONSOLE.UNT the procedures GetMaxX and GetMaxY need to be defined. 
  534.    There are already some skeleton procedures available in this 'unit'. 
  535.    Moreover, the integer functions WhereX and WhereY must be defined: they 
  536.    deliver the X and the Y coordinate of the cursor.
  537.  - In WINDOW.UNT the procedure WindowConOut, which is the implementation of 
  538.    the output filter, needs to be adjusted to the behaviour of your console 
  539.    device. If the cursor moves to the next line after a character is 
  540.    written on the right-most character position of a line, the code to 
  541.    handle this case in procedure WindowConOut must be changed.
  542.  - In TRAMDF.PAS the inclusion of file WINDOW.UNT must be uncommented, as 
  543.    well as the invokation of procedure InitWindowUnit at the beginning of 
  544.    the main program.
  545.  - In TRAMDF.IF6 the invokation of the procedures EnableWindow, SetWindow 
  546.    and DisableWindow in procedure EnterFileManager must be uncommented.
  547.  
  548. 4. Epilogue
  549.  
  550. I hope you will have fun using TraMDF. If you have any comments, bug 
  551. reports or suggestions, please send them to me written in either Dutch or 
  552. English.
  553.  
  554.  Postal address : Wim Nelis
  555.                   Rozenhof 4
  556.                   8316 CX  Marknesse
  557.                   The Netherlands
  558.  
  559.  E-mail address : Nelis@NLR.NL
  560.  
  561.  
  562.  
  563.  
  564.  
  565.  
  566.  
  567.  
  568.  
  569.  
  570.  
  571.  
  572.  
  573.  
  574.  
  575.  
  576.  
  577.  
  578.  
  579.  
  580.  
  581.  
  582.  
  583.  
  584.  
  585.                                   - 9 -
  586.