2 THE MAGAZINE FOR PROTEXT USERS Number 10 Editorial 301 Did you know ...? 301 Find and Replace Q & As 302 Atari Falcon and ST graphics cards 305 Using Amiga overscan 306 Transferring Protext documents between computers 307 FAQs from our technical helpline 309 UDF - hyphenation points 310 Promerge Corner 311 Readers' Letters 312 Literary Quiz 319 Editing printer drivers 321 PCLBOX revisited 329 6 Editorial Welcome to Exfile 10. After the last issue's marathon article on styles, this time we cover a more varied set of topics including find and replace, transferring files and editing printer drivers. We also return to the PCLBOX program from Exfile 8 and add some enhancements. The accompanying Exfile disk includes the listings from all issues of Exfile to date (and some future!), plus some other utilities. Thank you for all your letters. I am pleased to say that there were too many for this issue and some have been carried over. The address for letters and articles (on disk please) is: Exfile Arnor Ltd. 611 Lincoln Road + Peterborough PE1 3HA or by E-Mail to mtilley@cix.compulink.co.uk. F Did you know ... ? Protext can help you find files you've lost on your hard disk. A new command that quietly slipped into v6.5 is WHEREIS, which can be abbreviated to WI. Sometimes you forget in which directory you saved a file, or perhaps saved it without realising which directory you were in. Use WI to find it. WI BILLS.NOV ; will search all of the current drive WI D:BILLS.NOV ; will search drive D WI D:\HOME\BILLS.NOV; will search D:\HOME and subdirectories WHEREIS is documented in the Protext 6.5 on-line help (Complete topic list/File finding). Compatibility: Protext 6.50 or later. Find and Replace Q & A Mark Tilley Q. What are these new find and replace options for? A. Until Protext 6.5 the Find and Replace commands worked only on a single document, the one you are working on at the time. You could search for any text within the document, replace it with something else either automatically or asking for confirmation, and use many other options. But suppose you need to find a piece of text and you do not know which file it is in. You would have to load each possible file in turn and repeat the Find String operation for each file. This takes time and effort. To save you the trouble Protext will now do this for you. The Find and Replace Dialogue Let us suppose you have a directory called LETTERS, within which you have a number of letters you have written to your bank complain- ing about bank errors. These are called BANKERR1, BANKERR2, and so on up to BANKERR9 (clearly your bank is typically inefficient). You want to find all references to your deposit account in these files. Using the find dialogue (Edit menu/Find text), enter the find string as 'deposit', select the option 'Disk files' (press 'D') and set the 'File spec' to 'BANKERR?'. Now click on OK or press Return. Protext will load each 'BANKERR' file in turn and search for 'deposit'. When it finds one it will stop, with the file loaded and the cursor on the word deposit. To carry on and find the next press F6 (Next find) in the usual way. Q. What if one of the disk files is already loaded into memory? A. Protext will search the copy in memory, not the one on disk, because it assumes that this is the latest copy. If you want to discard the memory copy and search the disk file then clear the file from memory before starting the search. Q. What about 'all memory docs'? This option works in the same way as searching disk files but scans all files currently loaded into memory (as listed in the Swap menu or by the SHOW command). Q. Are there command line options for these new functions? A. Yes, as usual Protext can be used via the menus and dialogues or from the command line. The new command line options are as follows: D search disk files M search memory files In the case of the 'D' option you can include a file specification at the end of the command line, for example: FIND deposit D bankerr? If no files are specified, Protext will search all files in the current directory that contain text, except backup files with the .BAK extension. Binary files such as programs will be identified as such and skipped over. The 'D' option itself may be omitted if a file specification is included, so you could type just: FIND deposit bankerr? Q. How do I search for style codes and control codes? To search for special codes within a document you have to use the exclamation mark (!) in your find string. When Protext finds an exclamation mark, it looks at the following characters to see if any of the special codes are indicated. Printer control codes (a to z) are denoted by !a, !b, ... !z. Style codes (A to Z) are the same but with a dollar symbol before the letter: !$a, !$b, ..., !$z. The letters can be lower or upper case, it doesn't matter. Q. I have an old document using bold control codes. How can I change these to use style B instead? Bold control codes use a pair of codes to turn bold on, then off. Style codes do not work in this way so you will need to change the 'on' codes to the style code 'B' and the 'off' codes to the default style code '&'. The latter is a special style code that switches back to the default style and is only available in v6.5 (if using v6.0 you will instead need to use the specific style code you use for your main text, such as 'A'). First replace every second bold code with the style code '&': Find string: !b Replace string: !$& Options: All, Global, Number=2 Then replace all the remaining bold codes with the style code 'B': Find string: !b Replace string: !$B Options: All, Global, Number=1 Q. What are 'escape codes'? A. We have just used some escape codes to replace the control codes with style codes. Anything starting with the exclamation mark is an escape code. The exclamation mark itself is known as the 'escape character'. This means that Protext does not look for !, but decodes the following characters to decide what to look for. Q. So how do I look for '!' if I want to? A. Easy. You type '!!'. The first exclamation mark is the escape character and the second tells Protext actually to look for '!' after all. Q. What other escape codes are there? A. They are all listed in your Protext manual in the 'Find and replace' chapter. You can also use the on-line help (General help topics/Find and replace options) which has the full list. Q. What is a 'wildcard'? A. A wildcard in a find string allows you to search for some text that fits a general pattern, rather than just looking for an exact string. Atari Falcon and ST graphics cards In Protext 6.5 the video driver has been rewritten to work with many display modes that previously caused problems. Some problems with using overscan modes have also been fixed. The Falcon's 256 colour mode was a no-go area before, but is now supported. Not that there is any real benefit in running Protext in a 256 colour mode, but it is useful if you are using that mode for other software. You can now run Protext without having to change mode. There are a number of graphics cards available for the ST, which provide display modes with extra resolution and colours. Compatibility with these cards is much improved in v6.5, though there remain one or two areas for improvement. Using Amiga Overscan by Ginger Have you noticed when you use a small font in Protext (e.g. Elite, Roman 17.5cpi) that your ruler line goes off the screen and your text is not all visible. The best thing to do in these circumstances is to use overscan. If you have a Hard Disk just go into your Prefs drawer and double click on the Overscan icon. Once the program has loaded double click on the Edit Text Size button. Now you are free to expand your screen. At last more width more height and more resolution. Now click on the Use button and then the Save button. Now you will find that you will have to adjust your monitors sizing controls to allow for your new high resolution screen. Now you will have more room on your screen for everything, including that all important long ruler line in Protext. If you do not have a hard disk, providing that you have booted from the Protext Program Disk, just run the Overscan program from the Extras Disk and do the necessary disk swapping as prompted. Although the Requester box will prompt you to change disks it always seems to be a little premature. Never take a disk out of the drive until the disk light has stopped flashing, your data is at risk. For even more width you could also use a thinner screen font such as Thinpaz. These are obtainable from Public Domain libararies. This is easy for hard disk users as you just run config and choose a thin font in the visual options window and then choose screen font. Floppy disk users should create a FONTS directory on your Protext Program Disk and copy your thin font to it along with its point size directory. Put the following statement in your startup-sequence on your program disk in the s directory. ASSIGN FONTS: PROTEXT6-PROGRAM:FONTS Now run Config from the printer driver disk and change your font as mentioned above. Transferring Protext documents between computers Protext is available in versions for MS-DOS, Amiga, Atari, Acorn Archimedes, Amstrad PCW, Amstrad CPC and Amstrad NC100 and NC200. There are two questions to consider when transferring documents from one computer to another. The first is how to get the file onto a suitable disk format, the second is the compatibility of the information con- tained within the file. To physically transfer the file you can use a cable connecting the two computers. This might be a serial cable or Arnor's own Lapcat cable which connects the parallel port. I say you can use a cable, but it is better to use a floppy disk. You need to use a disk format that can be read by both machines in question. In all cases this means use the PC 720K disk format. PC <-> Atari Always format a floppy disk on the PC. Use 720K format, not 1.44M because the Atari will not read high density disks. Disks formatted on the PC will work on any Atari, but the reverse is not true. The command to use to format the disk is: FORMAT A: /F:720 If this responds with 'Invalid switch /F' it means you are using a version of MS-DOS which does not have this option. Then you must instead type the following: FORMAT A: /N:9 /T:80 Amiga <-> PC or Amiga <-> Atari Format the disk to be used for the transfer on the PC (as above), or on the Atari. If you are using Workbench 2.0 or better (and you must be with Protext 6 or 6.5) you have CrossDOS on your Amiga. CrossDOS is a program which allows the Amiga to read and write PC and Atari format disks. You will need to activate CrossDOS by opening the Storage/DOSDrivers drawer. The Workbench manual explains this. When you put a PC format disk in the drive an icon will appear to access this. This may be called 'MSDOS' or something similar. Use this to access the disk. Ignore any icon named 'DF0:????' - this indicates that AmigaDOS does not recognise the disk. Archimedes RISC OS 3.0 and later versions have the ability to read PC 720K format disks built in. Just use them as you would an Archimedes disk and the format will be recognised automatically. NC100 The NC100 does not have a disk drive so you will need to use Lapcat to transfer files between the NC100 and your other Protext computer. NC200 The NC200 has a 3" drive and uses PC 720K format. Disks formatted on the NC200 (or on the PC as above) can be used on a PC, Atari or on an Amiga with CrossDOS. File Formats Once you have transferred the files you need to consider whether the information contained in them will make sense on the new computer. If you are using Protext on both machines you will have few problems. Protext uses the same file format on all machines but there are two points to be aware of. The first is differences between Protext versions and the second is different character sets. The Protext file format has developed over the years in an upwards- compatible way. This means that any version of Protext will happily read files from an earlier version. If you are transferring files to be used on an earlier version you may find that some features you have used will not be recognised. When moving from v6 or later to a pre-v6 version you should save in Protext 5 format (use File menu/Save as). Finally the question of different character sets. Ignoring the complexi- ties of different PC code pages (and they are a nightmare) there are basically two character sets in common use. The first is the PC or 'OEM' character set used by MS-DOS. Protext files use this on the PC, Atari, NC100 and NC200. The second is the ANSI character set and is used on the Amiga and Archimedes as well as by Windows. The character sets differ in the codes used for accented letters and special symbols (including ). If you are moving a file between, say the PC and Amiga, you need do nothing if it contains only English text and no pound signs. If it contains any of these you need to use Protext's Convert program with the 'TOAMIGA' or 'FROMAMIGA' options. These options convert from PC to Amiga characters and vice versa. The Protext reference manual shows the different character sets in the appendices. FAQs from our technical helpline Q. I have a page break stored command (>PA) in a document that is ignored, though others work. What could cause this? A. 1. You may have a printer control code or other marker at the start of the line before the command. This control code stops the > symbol from being in the first column. Press F4 to view the codes and check this, then delete any spurious code (place the cursor on it, press Delete). 2. Alternatively there may be a soft Return at the end of the line before the stored command. Use CTRL-V T to view carriage returns. If one is not shown at the end of the line place the cursor on the > symbol and press Return. Q. When I press CTRL- the cursor moves to the end of the line, but if it is already at the end it goes to end of the next line. I am sure it did not act this way before, so what has changed? A. You have selected the Config option, 'Keep cursor within text' (Editing options). The main purpose of this option is to keep the cursor confined within the part of a line occupied by text. When you move the cursor right it moves from the end of a line to the start of the next, instead of moving further and further right. When you move left the cursor does not stop at the start of the line but moves back to the previous line. The CTRL- behaviour (and also CTRL-) is another effect of this option. Q. Why don't I get Proper Quotes in Univers on my LaserJet/DeskJet? A. The so-called 'proper quotes' in the Univers font do not look greatly different from the neutral quotes. If you look closely you will see that they are slightly slanted. This is in contrast to the CG Times font which has distinctive proper quotes as seen on the first line of this paragraph. UDF - hyphenation points With another of those hidden features in Protext you can check up on the preferred hyphenation points of any word. To do this type the word into the text and place the cursor on the word (but not on the first letter - curiously this only works with the cursor after the first letter). Press SHIFT-CTRL-H. A message box will pop up showing the word with any positions where it is possible to break with a hyphen. Hyphenation points are divided into three types which are shown by these symbols: ! A preferred hyphenation point % An acceptable hyphenation point ? An unpreferred hyphenation point An example of a word that contains all three is 'hyphenation' which is shown thus: hy%phen?a!tion If Protext needs to hyphenate this word it will give preference to breaking after the 'a' as this is the preferred position for the hyphen. If this is not possible it will break after the 'y'. Unpreferred hyphenation points are not used except to avoid large expanses of unsightly white space, usually when using narrow columns. If no hyphenation points are shown for a word, that word will never be split. Promerge Corner System variables A number of new Promerge system variables have been added to recent versions of Protext. For ease of reference here is the full up-to-date list. All are available from Protext 4.3 onwards except where stated. sys_command (6.08 PC/ST, 6.14 Amiga) a copy of the command line used to print the document, or an empty string if the print dialogue was used. sys_date as sys_ldate sys_day the name of the day ("Monday") sys_dir (6.0) the full pathname of the current directory sys_doc the name of the current document sys_lang the language of the program ("English", "German") sys_ldate (5.0) the long form of the date ("26 September 1994") sys_line (6.0) the vertical position of the text in units of a sixth of an inch from the top of text area (excluding top and header margins). sys_month the number of the month ("09") sys_osver the operating system version number Amiga: since v6.13 this gives the version of intuition.library. sys_page the current page number sys_printer (5.0) the current printer driver name sys_printopt (6.07 PC/ST, 6.13 Amiga) the printing options being used. Each bit is a different flag as follows: Destination: bit 0=printer, 1=screen, 2=file. Print quality: bit 3=quality. Others: bit 4=print pages, 5=save ASCII, 6=index, 7=print block, 8=save ASCII (fixed), 9=preview. sys_prog the name of the program ("Protext", "Prowort") sys_sdate (5.0) the short form of the date ("26-09-1994") sys_time the time ("13:27:12") sys_ver the Protext version number ("6.13", "6.52") Note: as mentioned in Exfile 8 there was a small bug in the 32 bit PC versions 6.00 to 6.07 inclusive, where instead of the decimal point in the version number a bullet symbol appeared. This breaks any numerical tests of the version number, so for complete accuracy you should use the following line before testing sys_ver: >SV sys_ver = sys_ver[1] $+ "." $+ sys_ver[3:] Readers' Letters From J.J. Gameson, Basingstoke @Here are the details of a pair of macros that I use with Protext 6.09 and which other users may find useful. These have arisen because I now have so many macros I can't remember them all. So I have written a short help file which lists all my macros by 'hot key' and what they do. I call this file 'macro.hlp' and keep it in the same directory as Protext. The 'hot key' Shift-Alt-H will split the screen and display macro.hlp in the lower half. To clear the help file I use Shift-Alt-C. This restores the original file and unsplits the screen. The expansions of these two macros are as follows: Shift-Alt-H ^765^^697^^537^^766^L \protext\macro.hlp^13^^765^ Shift-Alt-C ^765^^1004^y^695^^697^ Incidentally the second macro can of course be used more generally to clear any file from the lower half of a split screen. One note of caution, if this macro is used in this way the token ^926^ should be inserted between ^765^ and ^1004^ to make certain that the file is saved before clearing the screen, otherwise there is the risk of losing the file. This brings me to one improvement I would like to see. At present autosaved files with the .SAV extension can be deleted by Protext even though the file has not been saved, for example when using the 'Clear Text' command. Fortunately it is possible to recover the deleted .SAV file with an 'undelete' utility. Why not retain the .SAV file as long as it is the latest unsaved version? On the subject of macros it would be helpful if comments could be added. Finally a very useful additional command would be 'Repeat last command'. This can save a lot of key presses, for example when printing a file a second time. It is not a frequently encountered command on word processors and spreadsheets but I did find it very useful on one commercial package I used at work. z From Jonathan Geer, Helston @It has been good to see Exfile get under way again - and good, too, to see continuing reader interest. I look forward to your driver creation article - I shall value the opportunity to use downloaded fonts with Protext. Your Economode program, covered in both recent issues, intrigues me - simply because it is unnecessary (for the HP LJ4L, at least) - because a printer driver to use Economode with a 4L is supplied with Protext! It is in the LJ.GPD driver group supplied with Protext 6.072, which is the version I use. It seems to be identical with the standard 4L driver bar an extra line, the fourth after the first group of rem lines. Those rem lines actually explain how to adapt the standard driver by inserting the appropriate new line. If the answer is so easy, is it possible that a similar line could be inserted in the drivers for other HP laser printers which offer Economode? In my PPD directory I have the standard driver and the Economode driver. The standard is the default. Swapping from one to the other is simply a matter of typing 'PR' at the command prompt, pressing Enter twice and making the appropriate choice. On another subject: in my work, I often have to write many short pieces of linked text. I do this in one long file for ease of formatting, spell checking, search-and-replacing etc., and to avoid constantly having to save and create a new file. I then break the long file into many small reformattable ASCII files, which are required by my client. To achieve the result I need I have to go through the menu system again and again and again. So, some weeks ago I rang Arnor to ask what was the short-cut command to save a block of text as reformattable ASCII. I was told there wasn't one - nor was there a command to save a file in reformattable ASCII. Using the menu system to carry out a task like this is fine for a single operation, but tedious for repetitive use. In the absence of an appropriate command, I attempted to record the keystrokes I used when doing the job through the menu system, in order to create a macro, but it failed - I have no idea why. Question: has such a command now been included in Protext 6.5? If it has, I'll buy it. z Editor's reply: The advantage of using the Economode program is that you do not have to switch printer drivers, but by using the 'Print quality' command can choose whether or not to use the economy feature. Use whichever method you find easier. The printer driver for any other HP printer with Economode could indeed be modified in the same way. Protext 6.5 did not have a 'Save block as reformattable ASCII' command. We had not appreciated the important use that you have described. However that's a challenge we cannot refuse and we have now implemented 'SARB'. There is a command to convert a file to reformattable ASCII. Use the Convert program: CONVERT TOASC filename. Until SARB arrives you could use SAVEB and then CONVERT in a macro or exec file. From W & J McMillan, Stockport @1. My printer is a Canon BJ200. Its manual is a bit vague about margins and your driver for it does not seem right. If I understand correctly, when I set a 0.7" left margin in document settings this is what I should get. In fact I get about 1". My dip switch 1 setting is off which implies a printer controlled margin of 0.25" or 0.13" (the printer manual is in conflict with itself!) Thus the sum of your margin and the printer's is 0.95" - near enough to 0.7"+0.25". Well? 2. The ruler overrides the right margin in document settings. Why not the opposite in the event of a conflict? - it would be more logical to my mind. As a result, getting the text centred on the paper is a trial and error process. 3. Similar problems with top and bottom margins. If I set these too low, trying to squeeze a few more words onto one page (I always seem to want to write one sentence more than the standard page will take) then the page throws and I get one line on a new page although the 'ps' command says that all is well. Top and bottom margins for this letter are 0.7"'. Again the printer is confusing as I think that Canon, at one point, have approximated A4 size to 12" and this could be enough to give a 1 line discrepancy. This I discovered when printing from Windows. 4. The impression I get from 1 and 2 above is that, to get it right, I should define a special paper size to Protext as if it was A4 less the printer's margins. Seems a carry on. 5. Protext allows 'double high' as per the BJ200 printer and shows the doubled line spacing on screen. However it does not tell the printer to increase the line spacing and I get 6 lines per inch - a mess. To compensate I have to insert double spacing in document settings. On screen I then get a 'new page' half way down the real page of print out. In version 5.5 I got there with my own printer commands but expected version 6 to do it all for me. I do I have to create a font style for the double high version of every font. 6. In neither Protext 5.5 or later have I ever got draft quality printing if using a proportional font - it always comes out as letter quality overriding my use of 'p' to print rather than `pq'. 7. In version 6 I had to create a font for joined (or script) although this was readily available in version 5.5. It appears you did not allow for this BJ200 facility in your printer driver. Will I have to repeat the process in version 6.5? z Editor's reply: This letter covers a number of important questions, notably the use of ruler lines without a right margin (see 2, below). 1. You are correct about the driver and you need to modify it to adjust the margin values. As a rule, page printers (lasers and inkjets) will not print up to the edge of the paper. There is a gap around the edge which is unusable. So when you ask for a 0.7" margin, the printer's unusable area is being added to your 0.7". Protext can adjust for this, but it needs to know the size of the unprintable area. Unfortunately this varies from printer to printer, even within the Canon BJ range. To make it worse, as you have found, the printer manuals are often unhelpful in documenting this information. Each printer needs to be tested to discover the true value and so we have not yet obtained this information for every relevant printer (if any readers can help with information for their printer please let us know). The printer driver command to use is MINSM. In your case, load your printer driver (BJ200E.PPD) and find the line 'minsm 0.00"'. Change this to: minsm 0.25". Protext will then adjust the side margins. For more information see example 3 in the 'Editing printer drivers' article in this issue. 2. The ruler has to override document settings ruler because this allows you to use multiple rulers and change the ruler at any point in a document. If you only have one ruler and want the document settings to be used instead, then simply delete the ruler line. By using document settings the text will be centred if you set the left and right marghins to be the same. At least it will now, after you have set the MINSM value in the printer driver as described above. Having said that Protext has (since 6.00) a facility to change ruler line (for tab positions and types) without affecting the right margin. You can include a ruler line without an 'R' to mark the right margin. If you do this the right margin will remain as defined in document settings. This is the recommended way to change tabs within a document because the text width will, in most cases, remain the same. 3. As well as MINSM, there are also similar printer driver commands MINTM and MINBM for the size of the unusable part of the page at the top and bottom. Try setting MINTM to 0.25" and MINBM to 0.5". 4. Defining a special paper size would work, but the real answer is to use MINTM and MINBM which defines, for the particular printer, the part of the paper which is usable. With these set to zero Protext thinks it can print on the whole page. This will only cause a problem if you reduce the bottom margin from the standard value of 1". 5. Double height is supported by Protext 6.5. It was included in 6.0, but as you found there was a bug with the line spacing which meant it did not always work correctly. 6. In common with all Epson/IBM compatible printers, the Canon BJ200 does not have a 'draft' proportional font. Proportional fonts are always printed in letter quality. This is nothing to do with Protext! 7. Script is available as a style (R) and has been since v6.0. The control code used in v5.5 was removed as a style is the better way to support this feature. From Jonathan Clatworthy, Uttoxeter @Thank you for the flood of Exfiles. Soon after Exfile bagan publication I sent the editor a collection of Promerge-using files I has made for my own use, but I think he found them too long and complicated. I offer a shorter one, designed to print pages in reverse order, a subject touched on before. It works for me. I keep it as 'rev.p' and conclude the document to be printed with '>in rev.p'. The document must be loaded at the time of printing and the command to set it going is 'pp 999'. >pa uu >sv ppage=sys_page - 1 >pn 999 >wf xxx >wf off >rp >wm pp &ppage& >sv ppage=ppage-1 >un ppage=0 >wc >ex x xxx It starts a new page and gives it some text. Actually the 'uu' is just switching the underline code on and off. Its only purpose is to make sure page 999 doesn't get muddled up with the previous page. It then opens a file 'xxx' and writes to it a string of commands. Each command tells it to print one page. It then closes 'xxx' and concludes with the command to execute it. The command 'pp 999' instead of 'p' causes the computer to print only this last page. By doing so it creates the file 'xxx' and fills it with instructions to print each page in turn. Finally it invokes 'xxx'. Which prints all the other pages. It would be easy enough to adapt the system to print all even pages, if printing was to be done on both sides of the paper. Although Protext's stored commands and exec files between them enable you to do a wide range of things, one limitation is that some things can only be done in an exec file and some can only be done in a stored command. Stored commands don't seem to allow you to load a file. Furthermore, calls to exec files have to come at the end of the file they are called from. Many of my systems get round it by calling one type of file at the end of another, as this does. I would be sorry if Protext made the common mistake of assuming that the only customers worth bothering with are the ones with the most up to date computer. Those of us for whom a computer is the most expensive thing in the house expect to keep it going as long as possible. I regularly use the facility to read data from Prodata files, but when version 6.0 came out, it was not available for 286 machines. z From Anthony Campbell, acampbell@cix @I liked the idea of your Promerge method of organizing letter writing but I've adopted a slightly different, and I think simpler, method. This eliminates "makehdg" and uses instead a file called "letter.tem" which I had already: it contains my name and address at the top, and "&sys_date" below this at the right margin. My "doletter" file is then as follows: swap 0 doc cd c:\protext\text\letters load letters.tem ps c:\protext\text\letters\exec\namefile z Literary Quiz These famous first sentences may not have been written with Protext, but they may inspire you to write a classic. In each case name the book and author. Answers in the next issue. 1. To the red country and part of the grey country of Oklahoma the last rains came gently, and they did not cut the scarred earth. 2. Ours is essentially a tragic age, so we refuse to take it tragically. 3. No one would have believed in the last years of the nineteenth century that the world was being watched, keenly and closely by intelligences greater than man's and yet as mortal as his own. 4. It seems increasingly likely that I really will undertake the journey that has been preoccupying my imagination now for some days. 5. Miss Brooke had that kind of beauty which seems to be thrown into relief by poor dress. 6. "And don't forget," my father would say, as if he expected me at any moment to up and leave to seek my fortune in the wide world, "whatever you learn about people, however bad they turn out, each one of them has a heart, and each one of them was once a tiny baby sucking his mother's milk ..." 7. One evening of late summer, before the nineteenth century had reached one-third of its span, a young man and woman, the latter carrying a child, were approaching the large village of Weydon- Priors, in Upper Wessex, on foot. 8. I first met Dean not long after my wife and I split up. 9. One minute it was Ohio winter, with doors closed, windows locked, the panes blind with frost, icicles fringing every roof, children skiing on slopes, housewives lumbering like great black bears in their furs along the icy streets. 10. It was the best of times, it was the worst of times ... 11. A story has no beginning or end: arbitrarily one chooses that moment of experience from which to look back or from which to look ahead. 12. When he was nearly thirteen my brother Jem got his arm badly broken at the elbow. 13. My father has a small estate in Nottinghamshire; I was the third of five sons. 14. When anyone asked Frensic why he took snuff he replied that it was because by rights he should have lived in the eighteenth century. 15. I know a place where there is no smog and no parking problem and no population explosion ... no Cold War and no H-bombs and no television commercials ... no Summit Conferences, no Foreign Aid, no hidden taxes - no income tax. 16. It is a truth universally acknowledged, that a single man in possession of a good fortune, must be in want of a wife. 17. Except for the Marabar Caves - and they are twenty miles off - the city of Chandrapore presents nothing extraordinary. 18. The boy with the fair hair lowered himself down the last few feet of rock and began to pick his way towards the lagoon. 19. You know how it is there early in the morning in Havana with the bums still asleep against the walls of the buildings. 20. This is the story of what a Woman's patience can endure, and what a Man's resolution can achieve. Printer Drivers Gavin Every Introduction Protext printer drivers (*.ppd) are ordinary ascii text files which contain all the necessary information about a printer that Protext needs to know - essentially the names of all the typefaces, the sizes of the characters, and the codes needed to move around the paper and print them. When Protext first loads one of these printer drivers to 'learn' about the characteristics of a printer, it must convert the human readable ascii file into a computer readable form. If this processing (or 'compiling') takes quite a while, Protext will save the result in a compiled printer driver (*.cpd) which it can subsequently load much more quickly. Protext will automatically recompile a .ppd file into a .cpd file whenever the .ppd file changes - you need not worry about this. Protext 6 printer drivers are generated by the CONFIG program from group printer drivers (*.gpd). These are also ascii text files, and contain the information for hundreds of printers, grouped together in order to reduce the amount of disk space they require. Only the .ppd files, and not the .gpd files are intended to be edited by the end user. (Please note that it is beyond the scope of this article to explain how to write a complete new printer driver from scratch. It is assumed that you would only edit existing printer drivers.) Editing printer drivers Printer drivers (*.ppd) are edited like ordinary text files. Change to the directory (or floppy disk) where your printer drivers are kept. Use 'Load file' from the menu, or 'LOAD' from the command line to load the printer driver file you wish to edit. The status lines should indicate that you are now in 'program' mode; this inhibits the document formatting features which would otherwise mess up the text file. If you are not in program mode, use the command line command PROG (and also set the file option in config, so that files with a .ppd extension will be automatically loaded in program mode). You can now edit the file and make changes as you wish, and then save it. Swap to a test document file, and load the new printer driver with the PRINTER command. If you changed the driver name, and are greeted with the message 'Convert document to xxxx printer driver and styles (y/n)?', press N - this will change printer driver, but preserve your styles. If PREVIEW shows a sensible result, you can now PRINT to check your changes. If you edit a printer driver (.ppd) file, it's a good idea to make a note of the modifications in a separate file. E.g. edit BJ20E.PPD and keep a note of the mods in BJ20E.MOD. This is so that if you need to regenerate a printer driver using CONFIG (perhaps an upgrade, or your driver stops working), then you have some notes to help you rebuild your customised driver. You will probably want to refer to the PPD6.DOC file on the Exfile disk, which covers all of the printer driver commands. Examples 1. Adding an overline control code to an Epson type printer Consult your printer manual to find the control codes for overlining (if supported). For most recent printers, it is likely to start ESC,"(","-". For old Star printers it is ESC,"_". Load your printer driver file. Find the block of control code definitions near the beginning of the file, which may look something like this: cc 'b'=27,"E",27,"G";27,"F",27,"H" ;; Bold cc 'i'=27,"4" ;27,"5" ;; Italics cc 'l'=27,"W",1 ;27,"W",0 ;; enLarged cc 'q'=27,"x",1 ;27,"x",0 ;; Quality cc 's'=27,"S",1 ;27,"T" ;; Subscript cc 't'=27,"S",0 ;27,"T" ;; superscripT cc 'u'=27,"(-",3,0,1,1,1 ;27,"(-",3,0,1,1,0 ;; Underline Pick an unused control code letter (typically from the letters fghjkr- wxyz), let's say 'r', and add own new line after this block. (Note that these lines need not be sorted alphabetically.) For the Star, the new line would be: cc 'r'=27,"_",1 ; 27,"_", 0 ;; oveRline The codes before the semicolon turn overline on, those after the semicolon turn it off. For recent 24 pin printers it would be cc 'r'=27,"(","-",3,0,1,3,1 ; 27,"(","-",3,0,1,3,0 ;; oveRline For Protext 6, we should also find the line that starts 'offatcr' and add this control code letter to it: 'offatcr u' becomes 'offatcr ur'. This tells Protext to temporarily turn the control code OFF AT the end of a line (Carriage Return), so that the side margin is not overlined as well. To make sure we can see it in the style menu, find the block of lines that start with 'menu' and end with 'menuend', and add '"overline:^XR" R' between them, e.g.: menu "Double height:^XD" D "Overline:^XR" R menuend Save the driver, and test it. 2. Underlining spaces on daisywheels Certain daisywheel printers do not underline spaces between words. We can make Protext 6 underline these spaces automatically by removing the 'underline' control code. To do this, load your printer driver file and find the control code section (as above). There should be a line similar to: cc 'u'=27,"E" ; 27,"R" ;; Underline We need to remove the 'u' control code, which means that Protext will underline using the underline character. In case we want to use the old (word) underlining, we change the above control code line to: cc 'w'=27,"E" ; 27,"R" ;; Word underline As in the above example, we should also change 'offatcr' and 'menu/menuend': offatcr uw ... menu "Double strike:^XD" D "Word underline:^XW" W menuend 3. Shifting/customising the printable area on a page (All printers). From Protext 6.07 (6.13 Amiga) it is possible to change the position of the first and subsequent printed characters on a page, so that setting top and side margins of 1 inch means exactly that. Prior to this, Protext assumed that the first printable position was the top left hand corner of the page, and in this instance would start printing 1 inch down and across from the actual first printing position. We need to tell Protext the position of this actual first printing position, so that it can subtract this position from all others. For example if we find the first printable position is 0.2" across and 0.75" down, then to start printing at 1" across and 1" down, Protext has to move 1" - 0.2" = 0.8" across, and 1" - 0.75" = 0.25" down. Without this adjustment, the printed result would have started at 1.2" across and 1.75" down. The relevant commands in the printer driver are: MINSM MINTM The units can be in inches, centimetres, millimetres (from 6.071/6.13) or in lines of 1/6" if no units are specified. The secondary values are for landscape printing, and only need be given if different for portrait and landscape printing (if available). For the above example, we would need 'MINSM 0.2"' and 'MINTM 0.8"'. A related command is: MINBM Together, these 3 commands tell Protext what the unprintable margins are at the side, top and bottom of the page. (The same printed result can be achieved by adjusting the normal margins and page length, but these would not tie in properly with page preview.) Finding the magic values Step 1. When there are no MINTM,MINBM,MINSM commands in your printer driver, or they are all set to zero. The following file should be typed in and printed - it prints the numbers 1 to 80 on successive lines, with minimum margins. You must print it using the correct printer driver, since the reset code in the driver often modifies the printable area of a page. >pl 80 >us $ >la off ; or on if repeating for landscape mode >zm >dp 0 >sv x.=1 >rp &x.& >un x.=80 The character in the >rp ... >un loop is the 'line draw' cross. We use this because it stretches across the full extent of a character cell. You can enter this using 'Choose character' from the 'Edit' menu. Measure the distance from the top edge of the page to the top of the first printed cross (mintm), the distance from the left edge of the page to the leftmost edge of the printout (minsm) and the distance from the bottom of the last cross on the page to the bottom edge of the page (minbm). Replace the old values, or enter these new values anywhere in your printer driver file, for example MINSM 0.12" MINTM 2.54cm MINBM 0.5" Step 2. For minor adjustments. Print the following test file, making sure the correct printer driver is loaded. For the same reason, the 'line draw' cross is used. >tm 1" >sm 1" Measure the offsets from the edges of the paper. If you need to move the printed result up or left a small amount, increase the MINSM or MINTM value by the same small amount. Similarly to move the printed result down or right, increase the relevant value. Repeat until the printed result is close enough. Repeat if necessary for landscape, remembering that the second parameters are for landscape. 4. Adding colour to an Epson black and white driver Recent Epson black and white drivers have the following block: IF 0 ; remove this 'IF' line and matching 'ENDIF' line to add colour IF VER6 red 27,"r",5 green 27,"r",6 blue 27,"r",3 cyan 27,"r",2 magenta 27,"r",1 yellow 27,"r",4 black 27,"r",0 ENDIF ENDIF ; remove this 'ENDIF' line and matching 'IF' line to add colour All you need to do is to remove the two lines as directed to produce a colour driver. To change an earlier driver without this block, you will need to add the lines for red through to black; they may be placed anywhere in the printer driver file. 5. Adding/redefining a new character Near the beginning of most printer drivers there is a large chunk of 'RC' (Redefine Character) commands, perhaps resembling: rem Redefined Characters rc ''=128 rc ''=129 rc ''=130 These definitions tell Protext how to print each character, and they are used for each font unless overridden by further 'rc' commands in subsequent 'font' sections. It is easiest to add a character which is available in one of the printer's internal character sets (also known as symbol sets). In this case, the printer will automatically deal with different sizes of the character, for example, condensed, enlarged and different point sizes. If it is not internally available, the easiest method is to define the character as a graphic bit image. There are two files suppied on the Exfile disk which may help you with this: RC9PIN.PTX and RC24PIN.PTX. These allow you to define the characters within a Protext file, and create the bit image graphics numbers for you. We need to define different characters for different pitches. I shall just do 10 and 12 cpi characters. We shall use the copyright symbol as an example. We need to be able access the new symbol from the keyboard or mouse, and see some representation of it on screen. The easiest way is to lose some character we don't use and replace it with our new one. I'll pick ascii code 2 because this is rarely used. We can enter this via the choose character pop up window. To define the character on screen we can use one of the following symbol commands, depending on the size of screen characters: symbol 2 56 68 178 162 178 68 56 0 symbol 2 0 124 130 154 162 162 154 130 124 0 0 0 0 0 symbol 2 0 0 124 130 154 162 162 154 130 124 0 0 0 0 0 0 (These numbers were generated using SYM8.PTX, SYM14.PTX and SYM16.PTX as supplied on the Exfile disk. You may want to add any new SYMBOL commands to your Exfile, so they are available every time you use Protext.) Epson with 'Legal' character set (most 24 pin printers) The Epson drivers generally do not assume a particular character set, so we select the one appropriate for us, followed by the character within that set. We do not need to restore the character set. We use: rc 2=27,"R",64, "{" DeskJet/LaserJet with ANSI Latin 1 set (most DeskJets/LaserJets) The DeskJet/LaserJet drivers currently assume the PC-8 symbol set, so that after we select the symbol set our character is in, we need to restore it back to PC-8. Thus: rc 2=27,"(0N", 169, 27,"(10U" Epson 9 pin printers (without 'Legal' char set) We use the graphics command ESC,"L" which defines graphics bit images at 120 dots per inch, so for a 10 cpi font, we need 120/10=12 dots and for a 12 cpi font we need 120/12=10 dots. We put the following line after the first block of RCs: rc 2=27,"L",12,0 ,0,56,68,130,146,170,170,130,130,68,56,0 If we want the elite character as well, we put this in the first 12 cpi 'font' section. This probably starts with 'font "draft 12"'. rc 2=27,"L",10,0 ,56,68,130,146,170,170,130,68,56,0 This section will inherit all of the RC commands from the main block, and now has one new one. In subsequent 12 cpi sections we need to use 'copyrc "draft 12"', so that they inherit the RC commands relevant to a 12 cpi font. Epson 24 pin printers (without 'Legal' char set) As for 9 pins, we add the following line after the first block of RCs: rc 2=27,'*',39,18,0, 0,0,0, 0,0,0, 15,254,0, 31,255,0, 48,1,128, + 48,1,128, 48,225,128, 49,241,128, 51,25,128, 51,25,128, + 51,25,128, 49,17,128, 48,1,128, 48,1,128, 31,255,0, 15,254,0, + 0,0,0, 0,0,0 And similarly for elite, we put this in the 'font "draft 12"' section, and use 'copyrc "draft 12"' as above: rc 2=27,'*',39,15,0 ,0,0,0, 15,254,0, 31,255,0, 48,1,128, 48,1,128, + 49,241,128, 51,249,128, 51,25,128, 51,25,128, 48,1,128, 48,1,128, + 31,255,0, 15,254,0, 0,0,0, 0,0,0 6. Adding a new (non-scalable) font (Protext 6 only) When we add a new font to a printer driver, we need to tell Protext certain characteristics. The main ones include how wide the characters are so that Protext can justify correctly, how tall they are (point size) so Protext can space the lines correctly, and the name of the typeface, so Protext can match the printer driver font with the font you select using the 'style editor'. Each proportional font, or fixed pitch font of a particular width is treated as a separate 'font'. We need to use the 'FONT