®IM|OP:NA=CPG Index;TY=Index;FT=Indented: Elegant;ET=Use "n#" for Notes, Combined ###-##;SO=Word by Word;AM=C:\NB\Inbox\CPG\CPGINDEX.AMF;¯®IM|EX=2¯®UFNB Symbols Punctuation Serif¯®UFNB Latin Extensions Serif BoldI¯®UFTimes New Roman¯®IM|IN:NA=CPG Index;TY=Index;FT=Indented: Elegant;ET=Use "n#" for Notes, Combined ###-##;SO=Word by Word;AM=C:\NB\Inbox\CPG\CPGINDEX.AMF;¯®LBC:\NB\INBOX\CPG\CPGJEFF.NEW¯®LBC:\NB\INBOX\CPG\CPGJEFF.NEW¯®LBC:\NB\INBOX\CPG\CPGINDEX¯®LBC:\NB\INBOX\CPG\CPG.005¯®GU2DI,0¯®OF1IN,1IN¯®RT1¯®BL28¯®OR0¯®RG0¯®UL0¯®EE0,0¯®ET0,0¯®LL0,0¯®LS.166IN¯®SP1¯®SZ12PT¯®TS4DI,10DIR,11DI,16DI,27DI,32DI,40DI,48DI¯®FD11IN¯®PW8.25IN¯®TP3DI¯®BT5DI,5DI,5DI,9DI¯®IP0,0¯®UFTIMES NEW ROMAN¯®WD3¯®OP3¯®FC¯®AL1¯®JU¯ ®TP0.5IN¯®UFTimes New Roman¯®OS1¯®OF1IN,1IN¯®UFNB DayLight¯®SZ92PT¯Nota Bene®UFTIMES NEW ROMAN¯®SZ37PT¯ ®SZ10PT¯ ®LS1.5LI¯®SZ40PT¯®MDBO¯Customization & Programming Guide®SZ34PT¯ ®SZ20PT¯by ®SZ26PT¯Tony Woozley ®SZ18PT¯ ®FASI=35DIx26DI,PO=RPxPC;®UBNO¯®IG{13D487FA-5DD5-463A-B0A2-DD49526E7CF6},TY=ole,SC=100x100¯®GU0,0.1IN¯®EE+.5LI¯®ET+.5LI¯¯ ®SZ24PT¯Revised for Nota Bene 8.0®SZ12PT¯ ®SZ16PT¯by®SZ12PT¯ ®SZ22PT¯Mary Bernard®MDNM¯ ®PG¯ ®FC¯ ®MDIT¯®UFNB DayLight¯®SZ27PT¯®MDNM¯This revised edition is dedicated to Tony Woozley, mentor and friend, and to the memory of Dorothy Day®UFTIMES NEW ROMAN¯®MDNM¯ ®GU.2IN,0IN¯®OF1IN,1IN¯®TS4DI,10DIR,11DI,16DI,27DI,32DI,40DI,48DI¯®LBCounters ¯®DC1=1¯®DC2=i¯®DC4=a¯®RHO®SZ13PT¯®IP0IN¯®MDBO¯Preface to the Revised Edition®LD ¯®PN¯®MDNM¯ ¯ ®RHE®SZ13PT¯®IP0IN¯®PN¯®LD ¯®MDBO¯Preface to the Revised Edition®MDNM¯ ®SZ12PT¯ ¯®PG¯ ®SPi¯®MDBO¯®SZ16PT¯®LBprefrev¯Preface to the Revised Edition of the CPG®SZ12PT¯ ®FL¯®MDNM¯ ®IM|BE¯The Customization and Programming Guide is not the work of one person or even of two people. Some of it has been around since Nota Bene 1, such as the examples using ‘WEBER.DOC’ in Chapter 4. Some of it may have come from a XyWrite manual. XyWrite is the word-processing program from which Nota Bene derived. Like NB it crossed the DOS barrier and became a Windows program; unlike NB, it is no longer commercially available. (Nota Bene and XyWrite are extremely similar; they both use the XyWrite Programming Language—XPL. NB uses it less in Windows than in DOS versions, but there are current examples in the *.AUX files in the main NB program folder. All but a few XyWrite codes (mostly DOS-related) work in NBWin.) The first three versions of Nota Bene had a terse XPL programming section, the Customization and Programming Guide (CPG). NB 4, released in 1993, had a superb manual, the Big Black Book, but no programming guide. However, the company asked Tony Woozley, a retired professor of philosophy at the University of Virginia, to revise and update the old Guide. Tony rewrote and expanded it. In his hands it became lucid, elegant and informative, a true guide for the beginner as well as a work of reference for more advanced XPL programmers. Nota Bene became a Windows program in 1998, with version 5.0 of the program. There was still no programming section in the manual, now called Help, and online rather than printed. XPL still worked (and works) in NBWin, though some user programs written for NB DOS needed minor revision. Tony’s version of the CPG needed revising, too. Almost all the information about XPL was still valid, but a few older codes weren’t, and it had whole chapters on NB DOS features that didn’t work in NBWin, such as function OV. Eight years late, here is a revision of the CPG manual for NBWin, up to date for version 8. It is still largely Tony’s Guide; I have tried to match the tone and spirit of his version, insofar as possible. I want to thank ®IM|IE:IT=Carl Distefano||;CA=GE;SC=;RT=RE;GT=AT;SO=Distefano, Carl;¯Carl Distefano for letting me include excerpts from his end of our email correspondence as Chapter 10, a ‘Miscellany of XPL Information,’ and ®IM|IE:IT=Robert Holmgren||;CA=GE;SC=;RT=RE;GT=AT;SO=Holmgren, Robert;¯ Robert Holmgren for letting me include his ‘Compendium of XyWrite/NB Variables’ as Chapter 9. I owe them both thanks for their illuminating answers to my XPL questions over the past several years; and I especially want to thank Robert for debugging and hastily editing this file at the last moment. I am grateful to the many members of the Nota Bene Users’ list whose answers to my questions have helped me to make the Guide as accurate as possible. Particular thanks are due to Jukka-Pekka Takala, Joel Lidov, Michael Norman Jannik Lindquist and Rick Penticoff; and®PG¯ to Steve Siebert, creator and chief programmer of Nota Bene, who answered questions about codes while getting NB8 out of beta. I’d like to thank him and Anne Putnam, president of Nota Bene, for letting me add information about customization and programming, and links to this Guide and other XPL resources, to NB8 online Help. ®SZ14PT¯®MDBO¯Printing the CPG®SZ12PT,12PT¯®MDNM¯ The Guide is carefully formatted for printing on both European A4 and American 8½" x 11" paper. Each page therefore ends with a hard page break. If you change them, pages and tables may break in awkward places. If you have downloaded only the PDF version of the CPG, you may want to download CPG.NB as well. A few pages contain actual XPL code, which you can view in CPG.NB by changing to Codes View—which of course you can't do with the PDF. ®LBtextnote¯®MDBO¯®SZ14PT¯Notes on the text of the CPG®SZ12PT,12PT¯®MDNM¯ I have not changed Tony Woozley’s prefatory note to the DOS version except to update his email address and add a footnote about files. ®MDBO¯Italicised notes in the text.®MDNM¯ These are brief supplements to information that has survived otherwise unchanged from the DOS version of the Guide. ®LBfauxcode¯®MDBO¯ ®IM|IE:Faux program codes(Euroquotes) ||;CA=GE;SC=;RT=RE;GT=AT;¯®IM|IE:IT=Euroquotes||;CA=GE;SC=;RT=RE;GT=AT;¯Faux program codes in the text®MDNM¯ Since the CPG is formatted to be printable, function codes are represented by uppercase character in boldface (e.g., ®MDBO¯BX®MDNM¯) and ®IM|IE:IT=Command Brackets||;CA=GE;SC=;RT=IG;GT=AT;¯command brackets by®IM|IE:IT=Euroquotes||;CA=GE;SC=;RT=RE;GT=AT;¯ Euroquotes (e.g., «SV01,Y»). You cannot copy and paste these characters into a file and run the file as a program. You can copy/paste them, but you must then change to Show Codes View, eliminate the strings that look (for instance) like: «MB+BO»BX«MDNM», and enter a BX code by doing ‘pfunc bx’. You can then do a global change of all « and » characters to ®IM|IE:IT=Command Brackets||;CA=GE;SC=;RT=IG;GT=AT;¯command brackets (on®MDNM¯ Ctrl+, [Ctrl + comma] and Ctrl+. [Ctrl + period/full stop]). It is actually much easier simply to rewrite the program in real code, using the pfunc key and the keys that enter true command brackets. ®MDBO¯Updates to the newGuide®MDNM¯®LBupdates¯ With luck, the information in this version will be valid for a good while. I maintain an unofficial list of all the keyboard and programming codes (or all that I can find) that are valid in Nota Bene for Windows. As of July 2006, the entire list is included in Chapter 8 of the CPG. I shall update the list whenever an update of NB includes a significant amount of new code, send it to Rick Penticoff®IM|IE:IT=Rick Penticoff’s users’ website||;CA=GE;SC=;RT=RE;GT=AT;¯®IM|IE:IT=Penticoff—Rick Penticoff’s users’ website||;CA=GE;SC=;RT=RE;GT=AT;¯ for posting on his NB ®IM|IE:IT=Users’ website||;CA=GE;SC=;RT=RE;GT=AT;¯Users’ website, and notify the NB List (see below) that it is available. You will be able to download it from: ®HK1Web|http://www.penticoff.com/nb/programming/nb-codes.zip¯http://www.penticoff.com/nb/programming/nb-codes.zip®HK0¯. I shall list new codes at the head of the file as well as incorporating them into the alphabetical ordering, so that you can quickly check what is new. ®PG¯ ®MDBO¯®SZ14PT¯®IM|IE:IT=Troubleshooting||;CA=GE;SC=;RT=RE;GT=AT;¯Troubleshooting®SZ12PT,12PT¯®MDNM¯®LBtrouble¯ ®MDBO¯®IM|IE:IT=Errors in CPG||;CA=GE;SC=;RT=RE;GT=AT;¯Errors in the CPG®MDNM¯®LBerrors¯ Please send corrections to ®HK1Email|mary.bernard@taffa.eu¯mary.bernard@taffa.eu®HK0¯ ®MDBO¯Back Up Before Customizing®MDNM¯®LBbackup¯ Before you do ®MDIT¯any®MDNM¯ customization whatever, back up. Back up your data files before running programs on them; back up your keyboard file before editing it.®MDNM¯ This is of paramount importance. It is very easy to make a slip while customizing a keyboard. NB may then load an ancient default keyboard with important keys in bewildering places. If you have a backup, you can open Windows Explorer and restore your original keyboard file to the c:\nbwin\users\default folder. It is even more important to back up your data files before running a user program, whether you’ve written ®MDNM¯it yourself or downloaded it from another user or the users’ website. Programs that work on one system don’t always work on another. Programs you write yourself almost always have mistakes at first. Usually they simply don’t run. But some mistakes can swallow data, such as the file on which you want the user program to work, or possibly some other file or files. And mistakes often cause NB to lock up. So save and back up before you begin trying out programs. ®MDBO¯®IM|IE:IT=Disclaimer||;CA=GE;SC=;RT=RE;GT=AT;¯Disclaimer®MDNM¯®LBdisc¯ These notes are provided by me, not by Nota Bene Associates, Inc. They have kindly allowed me to include them in the Help file, but Nota Bene Technical support cannot help with user programs or keyboard definitions that aren’t working. If you try your hand at programming, you should have enough experience with computers not to be too fazed by program and/or computer crashes. They will almost certainly happen as you write and test XPL programs—they happen to everyone who tinkers with programming. If you are stymied, ask for help on the users’ list (for how to join, see p. ®REPuserlist¯). ®MDBO¯®IM|IE:IT=®MDNM¯Help, getting||;CA=GE;SC=;RT=RE;GT=AT;¯If you ask for help®MDNM¯®LBaskhelp¯ It is hard to read someone else’s XPL program if it is not broken up into lines and commented—it is even hard to read one’s own programs a while after writing them. If you send a program to the NB user list in hopes of getting help with it, you ®MDIT¯must®MDNM¯ comment it—in the program, not just in your message. You need to include the purpose of the program, what is going wrong with it. You should break it up into lines, and precede each with a description of what you intend the line of code to do, e.g., ;*; Label 3. Move cursor Left one character. Backdelete previous character. Insert paragraph marker «lb3»®MDBO¯«CL®MDNM¯ ®MDBO¯BD®MDNM¯ ÿs¿ ;*; Go to Label E «glLE» See p ®REPBreaks¯ for information on how to comment a program. ®PG¯ ®MDBO¯®SZ20PT¯®SZ16PT¯®IM|IE:IT=Online Resources||;CA=GE;SC=;RT=RE;GT=AT;¯Online Customization and Programming ®IM|IE:IT=Resources, Online||;CA=GE;SC=;RT=RE;GT=AT;¯Resources®SZ12PT,12PT¯®MDNM¯®LBonline¯ ®MDBO¯Rick Penticoff’s NB Users’ website®MDNM¯ This is a major source of tips, manuals, user programs and useful links. It is at: ®HK1Web|http://www.penticoff.com/nb/index.htm¯http://www.penticoff.com/nb/index.htm®HK0¯ ®MDBO¯®IM|IE:IT=NBKEY.KEY||;CA=GE;SC=;RT=RE;GT=AT;¯NBKEY.KEY—the Keyboard Table®MDNM¯ This table shows the key assignments of all keys in all the shift states (Unshifted, Shift, Ctrl, etc.) in NB.KBD as delivered. You should print it out if you are doing keyboard customizing. It is in C:\NBWIN\DOCUMENT\SAMPLES. ®MDBO¯Greg Polly’s ®IM|IE:IT=Tutorial||;CA=GE;SC=;RT=RE;GT=AT;¯Tutorial®MDNM¯ Greg Polly has written a basic tutorial on how to write a program in Nota Bene for Windows. It’s at: ®HK1Web|http://www.penticoff.com/nb/help/howtorun.htm¯http://www.penticoff.com/nb/help/howtorun.htm®HK0¯. ®LBpolly¯You should use the codes lists in Chapters 2 and 8 rather than his appendix of command codes, which are taken from the DOS edition of the CPG. ®MDBO¯®LBxyu2¯®IM|IE:IT=XYWWWEB.U2||;CA=GE;SC=;RT=RE;GT=AT;¯XYWWWEB.U2®MDNM¯ This is an extraordinary compendium of XPL programs, written and maintained by ®IM|IE:IT=Robert Holmgren||;CA=GE;SC=;RT=RE;GT=AT;SO=Holmgren, Robert;¯Robert Holmgren and ®IM|IE:IT=Carl Distefano||;CA=GE;SC=;RT=RE;GT=AT;SO=Distefano, Carl¯Carl Distefano. They came to NB by way of XyWrite IV for DOS, Nota Bene’s parent program, which is now maintained by them. It is safe to say that they know more about XPL programming than anyone except, perhaps, NB’s own programmers. The compendium is called XYWWWEB.U2, and you can download it from ®HK1Web|http://www.serve.com/xywwweb/¯http://www.serve.com/xywwweb/®HK0¯. It contains hundreds of XPL programs. Some of them are only for XyWrite (noted in the documentation), but Holmgren and Distefano have worked hard at making much of U2 compatible with NB. You install U2 by unzipping it, copying its files into your main NB program directory, and copying a string to an empty key definition in your keyboard file: a key which will thereafter be your U2 help key. You can then run U2 programs by typing a mnemonic on the command line and striking your U2 help key. ®MDBO¯The XyWrite Programming Language ®IM|IE:IT=XyWrite Programming User's Guide||;CA=GE;SC=;RT=RE;GT=AT;¯User's Guide®MDNM¯ On the XyWWWeb site you can find a very detailed programming guide: ®HK1Web|http://www.serve.com/xywwweb/XPL.ZIP¯http://www.serve.com/xywwweb/XPL.ZIP®HK0¯. It was written for XyWrite IV for DOS, which uses a version of XPL that is the same as NB's XPL. (The original CPG described an earlier and much less powerful version of XPL.) It has the disadvantage that you have to know how XyWrite differs from NB: for instance that F5, not F9, goes to the command line, and that Phrase keys are called Save/Gets. But it is a useful resource for anyone who gets serious about XPL programming. ®MDBO¯®LBuserlist¯The ®IM|IE:IT=Nota Bene users’ list|subscribing|;CA=GE;SC=;RT=RE;GT=AT;¯®IM|IE:IT=Nota Bene users’ list||;CA=GE;SC=;RT=RE;GT=AT;¯Nota Bene users’ list®MDNM¯ This is a helpful and friendly group of NB users, from complete novices to people who have been using the program for many years, have done a good deal of NB customization and programming, and are happy to share their experience. There is no such thing as a stupid question on the NB list, and you won’t be told to Read The Manual. ®NJ¯For more information, or to subscribe, go to:®JU¯ ®HK1Web|http://wnk.hamline.edu/mailman/listinfo/notabene¯http://wnk.hamline.edu/mailman/listinfo/notabene®HK0¯®PG¯ You can browse the List archive at: ®HK1Web|http://www.penticoff.com/nb/help/howtorun.htm¯http://www.penticoff.com/nb/help/howtorun.htm®HK0¯ ®IP0,0¯®MDBO¯Jukka-Pekka Takala’s website®MDNM¯ Jukka-Pekka Takala is a long-time user of Nota Bene. His website, ®HK1Web|http://www.helsinki.fi/~jtakala/notabene.html¯http://www.helsinki.fi/~jtakala/notabene.html®HK0¯, has some useful programs, especially unbal.run, which finds unbalanced ®IM|IE:IT=Command Brackets||;CA=GE;SC=;RT=IG;GT=AT;¯command brackets better than NB’s own ‘Go, Illegal Format Code’ dialog. (His BACKUPDIR.RN5 is also very good, especially if you want to back up each changed version as you save it (I have ‘31=bx,r,u,n, ,C,:,\,n,b,w,i,n,\,X,P,L,\,B,A,C,K,U,P,D,I,R,.,R,N,5,q2’ on Ctrl+S instead of NB’s own Save definition). ®MDBO¯®SZ14PT¯The Nota Bene ®IM|IE:IT=Dragonfly®MDNM¯||;CA=GE;SC=;RT=RE;GT=AT;¯Dragonfly®SZ12PT,12PT¯®MDNM¯®LBdragon¯ Nota Bene Associates was called Dragonfly Software for the first ten years of its life. A dragonfly was part of the logo and appeared on NB’s stationery; users became attached to it. With version 8.0 the dragonfly has returned to hover on the program’s icon, and on the cover sheet of this Guide. The typeface of the dedication, and of ‘Nota Bene’ on the title page, is ®IM|IE:IT=NB Daylight font||;CA=GE;SC=;RT=RE;GT=AT;¯NB Daylight, a font commissioned by Nota Bene in memory of ®IM|IE:IT=Dorothy Day||;CA=GE;SC=;RT=RE;GT=AT;SO=Day, Dorothy;¯®IM|IE:IT=Dorothy Day||;CA=GE;SC=;RT=RE;GT=AT;SO=Day, Dorothy;¯Dorothy Day, a long-standing and much-missed user of the program and member of the Nota Bene List. ®IM|EN¯ Mary Bernard ®HK1Email|mary.bernard@taffa.eu¯mary.bernard@taffa.eu®HK0¯ 12th April, 2006 ®RHO®SZ13PT¯®IP0IN¯®LBtitle¯®MDBO¯Prefatory Note to the 1994 Edition®LD ¯®PN¯®MDNM¯ ¯®RHE®SZ13PT¯®IP0IN¯®LBtitle¯®PN¯®LD ¯®MDBO¯Prefatory Note to the 1994 Edition®MDNM¯ ¯ ®PG¯ ®FC¯®MDBO¯®SZ14PT¯®SZ16PT¯Prefatory Note®MDNM¯®LBorigintro¯®SZ12PT,12PT¯ ®FL¯®TS6.3R¯ by Tony Woozley 24 December 1994 ®HK1Email|cad2m@cms.mail.virginia.edu¯cad2m@cms.mail.virginia.edu®HK0¯ This collection needs a little explanation. It is more about myself than I would like, but I cannot avoid that. In early 1992 I was invited by Deborah Reumann, on behalf of ®MDBO¯Nota Bene®MDNM¯, to revise and expand the ®MDBO¯Programming®MDNM¯ chapter of their ®MDBO¯Customization & Programming Guide®MDNM¯; I had misgivings about my competence to undertake the task, but for reasons that will appear below I accepted, and began work immediately. At a much later stage Steve Siebert asked me also to revise the preceding three chapters of the Guide. I agreed to tackle the first two chapters (®MDBO¯General Customization®MDNM¯, and ®MDBO¯Keyboard Customization®MDNM¯), but declared myself unfit for ®MDBO¯Printer Customization®MDNM¯, as there was far too much that I did not know about too many printers and printer drivers. Later, Tony St. Quintin undertook that task, but I do not know whether he had begun it before his health required him to give up his job as ®MDBO¯Nota Bene®MDNM¯’s UK agent; I have failed in attempts to contact him. More than a year ago I sent to Steve Siebert files covering the ®MDBO¯Programming®MDNM¯ chapter; and six months ago I sent him a revision of those, plus files covering the ®MDBO¯General Customization®MDNM¯ and ®MDBO¯Keyboard Customization®MDNM¯ chapters, with in addition a new chapter, on ®MDBO¯Help File Customization®MDNM¯. I regarded my job as finished, except for making alterations and corrections, as required or recommended by Steve. In fact, as far as I know, nothing has since been done; and I do not know whether the files I sent to ®MDBO¯Nota Bene®MDNM¯ have even been read by anybody there. It would be easy to criticize them for that, but I am disinclined to, because I know something of the problems that they have had in re-establishing themselves in New York, and because a book of the kind that I have produced has to be low on their list of priorities: interest in, and a desire to learn something about, XPL programming, are bound to be confined to a small minority of NB users; and on a cost-benefit calculation the book would now, and for an indefinite period ahead, rate very low. On the other hand, I have good reason for wanting to get it off my shoulders. So, I have decided to deposit all the files into our SimTel archives, where they will be available to any users interested in seeing them; and that will not preclude ®MDBO¯Nota Bene®MDNM¯ from publishing them, or something based on them, later. The reason why I undertook the job in the first place was that I was bothered by the knowledge that there were so many NB commands that were undocumented, and unknown to most users. I wanted to do what little I could to repair that. For me it all began with a talk that Steve Siebert gave at the University of Virginia in April 1991. In the course of informal conversation afterwards he enthusiastically introduced a new string of XPL code, called Extract String, and also Parsing String, which had originated in XyWrite, and was now available in NB. I don’t think any of us followed his brief exposition of it, but I took away from the meeting a scrap of paper on which he had written it down. This was all that it was: ®FC¯«xs00,01,02,03,04» ®FL¯I couldn’t make head or tail of it, but much later, with the help of something written about XyWrite, I managed to work it out. It is one of the most ingenious and versatile codes in the whole XPL collection, and has been invaluable to me ever since, especially when used recursively, as in «xs00,01,02,03,04»«xs04,01,05,03,06»....®PG¯ I passed it on to our then-guru, Itamar Even-Zohar; and that was the first and only time that I have ever taught him anything about NB. A description of it can be found in XPLCALLS.DOC in this collection, and an example of its use in XPLSAMPL.DOC. There is also a full account of it in XPL.DOC (contained in NB-XPL01.ZIP) in our SimTel archives. The point of that story is that it illustrates how much there is in NB, that is unknown to almost all its users, and that will remain unknown until documentation is made available to them. In what I have written I have tried to supply some of that. In that particular case four years have passed since the string of coding was introduced; but it is totally unknown to almost everybody not on this list, and probably also to a good many who are. ®FC¯®MDBO¯Contents, and Conventions®MDNM¯ ®FL¯The file CONTENTS.TBL®MDSU¯1®MDNM¯ shows the list of contents that the book is intended to have, with in the third column the names of my files that match the proposed chapters of the book. It should be noted that, as in the original ®MDBO¯Customization & Programming Guide®MDNM¯, what appears to be XPL coding in the text is not actual XPL coding, but a textual representation of it: the apparent functions are just the appropriate mnemonic characters in Boldface type, and the apparent opening and closing ®IM|IE:IT=Command Brackets||;CA=GE;SC=;RT=IG;GT=AT;¯command brackets are European quotes. That makes reading of the files on screen easier, and makes printing of them possible. But, in any instance, the apparent XPL coding can be converted to actual XPL coding by running on it the program TXT2XPL which is included here. To use it on any pseudo-XPL string or program in any of the files, first copy the string or program to a new file, and then run TXT2XPL on that. If you run it on one of the actual files in this collection, the program will convert, not just the pseudo-XPL string or program that you want converted, but all those that follow in the file as well. For those who do not want the trouble of converting pseudo-XPL to actual XPL programs there is one other file in this collection that is not mentioned in CONTENTS.TBL, viz. XPLSAMPL.XPL. This contains the sample programs in XPLSAMPL.DOC, in their actual XPL format. They will not need transcribing before they can be run as programs.’ Also included is the file XPL2TXT, which converts XPL coding to textual representation of it. The same precautions in using it apply. In a collection of this length, all of it written by a single not particularly skilled person, there are bound to be many errors. It would be appreciated if users will call them to my attention, so that they may be corrected. I wish to end by expressing my thanks to my friend and frequent collaborator Jukka-Pekka Takala, who has already shown me the need for a number of changes. Without his help and initiative I doubt this collection would be finding its way into the archive at all. ®LD—¯ ®MDSU¯1 ®MDIT¯®SZ11PT¯There is not now a file CONTENTS.TBL in the CPG; nor does it include the DOS programs TXT2XPL,XPLSAMPL.XPL or XPL2TXT.—MB®SZ12PT¯®RHA ¯ ®PG¯ ®DC1=1¯®DC2=i¯®DC4=a¯®RHO®SZ13PT¯®IP0IN¯®MDBO¯Table of Contents—®LBtitle¯®MDBO¯Prefaces, and Chapter 1: General Customization®LD ¯®PN¯®MDNM¯ ¯®RHE®SZ13PT¯®IP0IN¯®LBtitle¯®PN¯®LD ¯®MDBO¯Table of Contents—Prefaces, and Chapter 1: General Customization®MDNM¯ ¯®PG¯®DC1=1¯®DC2=i¯®DC4=a¯ ®FC¯®MDBO¯®SZ16PT¯ Table of Contents®SZ12PT¯®MDNM¯ ®TS.4IN,1INR,1.1IN,1.6IN,2.7IN,3.2IN,4IN,4.8IN¯®DC1=1¯®DC2=i¯®DC4=a¯®OF0.8IN,1IN¯®IP0.1IN,0.1IN,0.1IN¯ ®FL¯®MDBO¯®SZ14PT¯Preface to the Revised Edition®MDNM¯®SZ12PT¯®LD.¯®REPprefrev¯ ®MDBO¯Notes on the text of the CPG®SZ12PT,12PT¯®MDNM¯®LD.¯®REPtextnote¯ Faux program codes in the text®LD.¯®REPfauxcode¯ Updates to the new Guide®LD.¯®REPupdates¯ ®MDBO¯Troubleshooting®SZ12PT¯®MDNM¯®LD.¯®REPtrouble¯ Errors®LD.¯®REPerrors¯ Back Up Before Customizing®LD.¯®REPbackup¯ Disclaimer®LD.¯®REPdisc¯ If you ask for help®LD.¯®REPaskhelp¯ ®MDBO¯Online Customization and Programming Resources®SZ12PT,12PT¯®MDNM¯®LD.¯®REPonline¯ ®MDBO¯The Nota Bene Dragonfly®MDNM¯®LD.¯®REPdragon¯ ®SZ14PT¯®MDBO¯Prefatory Note to the 1994 Edition, by Tony Woozley®MDNM¯®SZ12PT¯®LD.¯®REPOrigIntro¯ ®MDBO¯®SZ14PT¯Chapter 1: General Customization®MDNM¯®SZ12PT¯®LD.¯®REPGeneral¯ ®SZ13PT¯®MDBO¯Introduction to Customization®SZ12PT,12PT¯®MDNM¯®LD.¯®REPIntro¯ ®MDBO¯System Path in Windows 2000/XP®MDNM¯®LD.¯®REPBAT¯ ®MDBO¯NBSTART.INT®MDNM¯®LD.¯®REPSTA¯ Calling File to Screen®LD.¯®REPCAL¯ Rules for Modifying File®LD.¯®REPRUL¯ Saving File®LD.¯®REPST¯ Reimplementing®LD.¯®REPREI¯ Programs®LD.¯®REPPRO¯ Displaying Directory®LD.¯®REPDIS¯ Calling File(s)®LD.¯®REPWIN¯ ®MDBO¯Using the LOAD Command®MDNM¯®LD.¯®REPUSI¯ ®MDBO¯NB.DFL®MDNM¯®LD.¯®REPDEF¯ Effect of Settings®LD.¯®REPEFF¯ DF Settings®LD.¯®REPDF¯ Modifying Settings®LD.¯®REPMOD¯ ®MDBO¯Temporarily Changing Defaults®MDNM¯®LD.¯®REPTEM¯ From Command Line®LD.¯®REPMEN¯ Default Command (d xx=#)®LD.¯®REPCOM¯ ®MDNM¯ List of Defaults®LD.¯®REPCOM¯ ®MDBO¯NB.INI®SZ12PT¯®MDNM¯®LD.¯®REPNbini¯ ®MDBO¯Hyphenation Exception Dictionary®MDNM¯®LD.¯®REPEXC¯ Case®LD.¯®REPCAS¯ Order®LD.¯®REPORD¯ Breaking Words (HV)®LD.¯®REPBRE¯ Nonbreaking Words®LD.¯®REPNON¯ ®MDBO¯Phrase Libraries®MDNM¯®SZ12PT¯®LD.¯®REPPhraselib¯ ®MDBO¯Personal Spell Checkers and Auto-Replace / Auto-Expand®MDNM¯®SZ12PT¯®LD.¯®REPNON¯®RHO®SZ13PT¯®IP0IN¯®LBtitle¯®MDBO¯Table of Contents—Chapter 2: Keyboard Customization®LD ¯®PN¯®MDNM¯ ¯ ®LBEven-Page Text HEADER.¯®RHE®SZ13PT¯®IP0IN¯®MDBO¯®LBtitle¯®PN¯®LD ¯®MDBO¯Table of Contents—Chapter 2: Keyboard Customization®MDNM¯ ¯®PG¯ ®DC4=a¯®SZ12PT¯®TS0.4IN,0.8IN,1.2IN,1.35IN,1.6IN,2IN,2.4IN¯®FC¯®MDBO¯®SZ14PT¯ Chapter 2: Keyboard Customization®SZ12PT,12PT¯®MDNM¯ ®FL¯ ®MDBO¯Keyboard Table®MDNM¯®LD.¯®REPINT¯ ®MDBO¯Short Glossary of Keyboard Table Terms®SZ12PT¯®MDNM¯®LD.¯®REPkeygloss¯ ®MD+BO¯The Keyboard File®SZ12PT¯®MDNM¯®LD.¯®REPavail¯ Backup'®LD.¯®REPbackup2¯ Keyboard Identification®LD.¯®REPIDE¯ ®MDBO¯®MDNM¯ Normal Settings®MDNM¯®LD.¯®REPnormal¯ ®MDBO¯Basic Modification Procedure®MDNM¯®LD.¯®REPBAS¯ Key Numbers®LD.¯®REPNUM¯ ®MDBO¯®MDNM¯Moving Definitions and Redefining Keys®LD.¯®REPmove¯ Available Keys®LD.¯®REPavkeys¯ ®MDBO¯State Tables®MDNM¯®LD.¯®REPSTATE¯ Keyboard States®LD.¯®REPKeyboard St¯ General Rules®LD.¯®REPGene¯ Shift and Toggle Keys, and Esc®LD.¯®REPThe shift¯ ®MDBO¯Key Definitions®MDNM¯®LD.¯®REPDEF2¯ Comma (co)®LD.¯®REPcomma¯ Comment Line®LD.¯®REPcomments¯ ®MDBO¯Character Assignments®MDNM¯®LD.¯®REPCHA¯ Modifying Character Assignments®LD.¯®REPmodchar¯ Inserting Words®LD.¯®REPinswords¯ ®MDBO¯Keyboard Functions®MDNM¯®LD.¯®REPFUN¯ Including Command®LD.¯®REPinclude¯ Including Comma®LD.¯®REPinclcomma¯ Paragraph Marker®LD.¯®REPParag¯ Tab®LD.¯®REPTab¯ Command Brackets®LD.¯®REPCommand¯ Function Command®LD.¯®REPfunc¯ ®MDBO¯Changing the Windows Key Assignments for Control, Shift, Alt and Caps Lock®MDNM¯®LD.¯®REPchangassg¯ ®MDBO¯Creating New Tables®MDNM¯®LD.¯®REPCRE¯ Using Caps and Caps-Shift®LD.¯®REPCaps tab¯ ®MDIT¯Program to Toggle CapsLock On and Off®MDNM¯ ®MDBO¯Examples of User Key Definitions®SZ12PT¯®MDNM¯®LD.¯®REPREASS¯ Assigning a Leader (ld) Delete and Backdelete by phrase Zoom by 1% Abandon a file without having to confirm Remove hard page breaks Change preceding punctuation mark Place marker like NB4’s ®MDBO¯Lists of Keyboard Functions®MDNM¯®LD.¯®REPLISTS¯ ®TS0.4IN,0.8IN,1IN,1.350IN,1.6IN,2IN,2.4IN¯ ®MDBO¯Topical list®MDNM¯®LD.¯®REPTopical¯ ASCII Numbers®LD.¯®REPascii¯ Cellular Tables®LD.¯®REPcellular¯ Command Line®LD.¯®REPcmdline¯ Copying & Moving Defined Block®LD.¯®REPcopying¯®PG¯ Counters®LD.¯®REPcounters¯ Cursor Movement in Text Area®LD.¯®REPcursor¯ Dead Accents®LD.¯®REPdead¯ Defining®LD.¯®REPdefining¯ Deleting®LD.¯®REPdeleting¯ Document Display Modes®LD.¯®REPddm¯ Math®LD.¯®REPmath1¯ Menu/Help/System®LD.¯®REPmenuhelp¯ Phrase Libraries®LD.¯®REPphr¯ Print Modes®LD.¯®REPpri¯ Searching®LD.¯®REPsearch¯ System & Miscellaneous®LD.¯®REPsys¯ Toggling Keyboard Modes®LD.¯®REPtoggl¯ Windows®LD.¯®REPwind¯ Spelling Checker/Thesaurus®LD.¯®REPspell¯ Redlining/Blue-pencilling®LD.¯®REPredl¯ ®MDBO¯Alphabetical List®MDNM¯ ®LD.¯®REPalpha¯ ®RHO®SZ13PT¯®IP0IN¯®LBtitle¯®MDBO¯Table of Contents—Chapter 3: Introduction to XPL Functions®LD ¯®PN¯®MDNM¯ ¯ ®LBEven-Page Text HEADER.¯®RHE®SZ13PT¯®IP0IN¯®LBtitle¯®MDBO¯®PN¯®LD ¯®MDBO¯Table of Contents—Chapter 3: Introduction to XPL Functions®MDNM¯ ¯®PG¯ ®DC1=1¯®DC2=i¯®DC4=a¯®SZ12PT¯®TS0.4IN,0.8IN,1.1IN,1.35IN,1.6IN,2IN,2.4IN¯®FC¯®MDBO¯®SZ14PT¯ Chapter 3: Introduction to XPL Programming and Functions®SZ12PT,12PT¯®MDNM¯ ®FL¯ ®MDBO¯Introduction®MDNM¯®LD.¯®REPINTRO3¯ Text: inserting boilerplate®LD.¯®REPTEXT¯ Program Functions®LD.¯®REPPROGFS¯ Program “Calls”®LD.¯®REPCALLS¯ ®MDBO¯Program File Commands®MDNM¯®LD.¯®REPFILECS¯ Creating New Program®LD.¯®REPCREATE¯ Calling Program to Screen®LD.¯®REPCALL¯ Running Program®LD.¯®REPRUN¯ ®MDBO¯Loading Programs into Memory®MDNM¯®LD.¯®REPLOADPROG¯ Loading on Phrase Key®LD.¯®REPLOADPHR¯ Loading on “Ampersand Phrase”®LD.¯®REPAMP¯ ldpm filename.run,®MDBO¯&®MDNM¯x Implement by: ®C2¯. func &x ®C2¯. Mapping ampersand phrase to NB.KBD Loading in General Memory®LD.¯®REPGEN¯ Loading via NBSTART.INT®LD.¯®REPloadvia¯ Other Ways of Running Programs®LD.¯®REPOTHER¯ Save on Extended Phrases; Run with «pv#» Add to XYWWWEB.U2 Removing Program(s) from Memory®LD.¯®REPREMOV¯ ®MDBO¯Normal Text in Program Files®MDNM¯®LD.¯®REPNORM¯ ®TS0.4IN,0.8IN,1.1IN,1.350IN,1.5IN,1.7IN,2IN,2.4IN¯®MDBO¯Program Functions®MDNM¯®LD.¯®REPFUNCS¯ Keyboard Functions®LD.¯®REPKEYFUNC¯ Program Functions®LD.¯®REPPROFUN¯ Searching for Program Functions®LD.¯®REPSEA¯ ®DC2=i¯ pfunc x 2; add 2-character function code; F10 Recording Program Functions®LD.¯®REPREC¯ ProgramÿA-Recording Mode®LD.¯®REPRECMODE¯ PFUNC Command®LD.¯®REPPFUNC¯ ®MDIT¯Sample Programs: Text & Program Functions®MDNM¯®LD.¯®REPSAM¯ (a) Move screen up 10 lines (b) Copy from 1 window to next ®MDBO¯Program Calls®MDNM¯®LD.¯®REPPROCA¯ Show as Codes Information Stored on Phrase Keys®LD.¯®REPSTPHR¯ Survival in Memory: ®LD.¯®REPSURV¯ 00-99 and 000-099 - Deleted when program over 100-999 - Remain during session Phrases used by NB: 1300, 1700, and 1900 blocks®LD.¯®REPNBSOWN¯ Checking Phrase Contents: F9 va @[number] F10®LD.¯®REPCHECK¯®PG¯ Display Mode to Use®LD.¯®REPDISP¯ ®MDIT¯Program to change to adjacent window®MDNM¯®LD.¯®REPadjac¯ Definitions of Terms Related to Program Calls®LD.¯®REPTERMS¯ String Expression Number Operators Variable Subroutine ®RHO®SZ13PT¯®IP0IN¯®LBtitle¯®MDBO¯Table of Contents—Chapter 4: XPL Program Calls®LD ¯®PN¯®MDNM¯ ¯ ®LBEven-Page Text HEADER.¯®RHE®SZ13PT¯®IP0IN¯®LBtitle¯®MDBO¯®PN¯®LD ¯®MDBO¯Table of Contents—Chapter 4: XPL Program Calls®MDNM¯ ¯®PG¯ ®DC1=1¯®DC2=i¯®DC4=a¯®SZ12PT¯®TS0.2IN,0.4IN,0.6IN,0.7IN,1IN,1.35IN,1.6IN,2IN,2.4IN¯®FC¯®MDBO¯®SZ14PT¯Chapter 4: XPL Program Calls®SZ12PT,12PT¯®MDNM¯ ®FL¯ ®MDBO¯Saving to a Phrase®MDNM¯®LD.¯®REPSAPHR¯ 1. Save Variable®LD.¯®REPSV¯ ®MDUL¯sv®MDNM¯: «sv01,#» Saves characters numbers as text ®MDUL¯pv®MDNM¯ executes ®MDUL¯gt®MDNM¯ puts in text «sv#,» - saves nothing to phrase «sv#» - saves define 2. Save eXpression®LD.¯®REPSX¯ ®MDUL¯sx®MDNM¯: «sx#,expression» Evaluates numbers, string, variables; stores result Reads and identifies typed characters / values - text not allowed; use ®MDUL¯is®MDNM¯®LD.¯®REPTEXT2¯ ®MDUL¯+®MDNM¯ - concatenates strings ®MDUL¯>®MDNM¯, ®MDUL¯<®MDNM¯ and ®MDUL¯==®MDNM¯ - compare strings Text in double straight quotation marks®LD.¯®REPdoubquot¯ 3. SUbroutine®LD.¯®REPSU¯ ®MDUL¯su®MDNM¯: «su#,subroutine» Saves text or program segment Phrase stored by ®MDUL¯su®MDNM¯ is treated as a program - add CR before final format bracket ®MDUL¯su®MDNM¯ is almost like ®MDUL¯sv®MDNM¯ - if ®MDUL¯su®MDNM¯ used, ®MDUL¯pv®MDNM¯ or ®MDUL¯gt®MDNM¯ executes®LD.¯®REPEXEC¯ - if ®MDUL¯sv®MDNM¯ used, only ®MDUL¯pv®MDNM¯ executes - ®MDUL¯gt®MDNM¯ inserts in text or on command line Running programs as subroutines®LD.¯®REPSUBR¯ ®MDBO¯Inserting a Phrase®MDNM¯®LD.¯®REPINS2¯ 1. Put Variable®LD.¯®REPPV¯ ®MDUL¯pv®MDNM¯: «pv#» If string saved with: - ®MDUL¯sv®MDNM¯, ®MDUL¯pv®MDNM¯ inserts text (leaves cursor at end of string) - ®MDUL¯su®MDNM¯, ®MDUL¯pv®MDNM¯ executes - ®MDUL¯sx®MDNM¯, ®MDUL¯pv®MDNM¯ is taken as a number, and added, evaluated, etc. To insert opening command bracket: ®MDUL¯gt®MDNM¯ or the @ function®LD.¯®REPOPEN¯ «pv00» puts current command line into program: - if followed by comma/space, inserts argument 2. Get Text®LD.¯®REPGT¯ ®MDUL¯gt®MDNM¯: «gt#» Inserts string saved with ®MDUL¯sv®MDNM¯ at cursor position Leaves cursor at beginning of string Cannot insert text into an expression®LD.¯®REPTXTEX¯ Only inserts on command line if string was saved with ®MDUL¯su®MDNM¯ ®MDUL¯gt®MDNM¯ executes program saved with ®MDUL¯su®MDNM¯®PG¯ 3. InSert phrase®LD.¯®REPIS¯ ®MDUL¯is®MDNM¯: «is#» Inserts text within an expression Used: - only within ®MDUL¯sx®MDNM¯ and ®MDUL¯if®MDNM¯ - only if string is text, or numbers-as-text - for comparing strings - if expression contains ®LD.¯®REPCONC¯ ®MDUL¯+®MDNM¯ of concatenation (not of maths) ®MDUL¯ÿse®MDNM¯ of inclusion ®MDUL¯@siz®MDNM¯, ®MDUL¯@upr®MDNM¯, or ®MDUL¯@cnv®MDNM¯. ®TS0.3IN,0.550IN,0.8IN,1.2IN,1.350IN,1.5IN,2IN,2.4IN¯®MDBO¯Other Calls®MDNM¯®LD.¯®REPOTCA¯ IF®LD.¯®REPIF¯ ®MDUL¯if®MDNM¯: «if(expression)» (parentheses optional) End If®LD.¯®REPEI¯ ®MDUL¯ei®MDNM¯: «ei» LaBel®LD.¯®REPLB¯ ®MDUL¯lb®MDNM¯: «lbNAME» Go to Label®LD.¯®REPGL¯ ®MDUL¯gl®MDNM¯: «glNAME» eXtract String®LD.¯®REPXS¯ ®MDUL¯xs®MDNM¯: «xs02,01,03,04,05» Parses string saved on [02]; the parts become usable [02] - string to be parsed [01] - parsing operator (saved to [01] with sx) [03] - receives the part of [02] ®MDIT¯preceding®MDNM¯ parsing operator [04] - ususally identical with [01] [05] - receives the part of [02] ®MDIT¯following®MDNM¯ parsing operator - parsing operator must be part of initial string - if [01] is wildcard, [04] contains its matching text - [01] & [02] may be numbers-as-text, but not numbers ®MDIT¯Program: parses filename®MDNM¯®LD.¯®REPPARSNAM¯ ®MDIT¯Program: uses ®MDUL¯xs®MDNM¯ ®MDIT¯to insert command brackets®MDNM¯®LD.¯®REPCOMBR¯ Using wildcards in ‘replace’ part of ‘ci’ commands®LD.¯®REPCI¯ Enter wildcards as ASCII 16 + appropriate letter Using ®MDUL¯xs®MDNM¯ recursively: branch, or remove characters from string ®MDIT¯Wildcards®MDNM¯®LD.¯®REPwildc¯ ERror®LD.¯®REPER¯ ®MDUL¯er®MDNM¯: «er» Use ®MDUL¯va$er®MDNM¯ to show numerical code of an error condition EXit®LD.¯®REPEX¯ ®MDUL¯ex®MDNM¯: «ex» Exits from program (back to main program from ®MDUL¯su®MDNM¯) ®MDUL¯ex1®MDNM¯: «ex1» Stops program unconditionally Error Suppression®LD.¯®REPES¯ ®MDUL¯es®MDNM¯: ES 1 suppresses bell and error messages ES 0 reactivates both®PG¯ ®MDNM¯ Read Character®LD.¯®REPRC¯ ®MDUL¯rc®MDNM¯: Reads character typed on keyboard ®MDUL¯rk®MDNM¯: Ditto, reading it as upper case ®MDIT¯Program segment: pauses to read keyboard input®MDNM¯%%®LD.¯®REPINPUT¯ ®MDIT¯Program segment using rk®LD.¯®REPrkseg¯ Cursor Position®LD.¯®REPCP¯ ®MDUL¯cp®MDNM¯: «sx#,«cp»» Saves cursor position to an expression Column Location®LD.¯®REPCL¯ ®MDUL¯cl®MDNM¯: «sx#,«cl»» Saves current column location to an expression - columns run from 0-254 - can be used to draw a straight line JuMP®LD.¯®REPJU¯ ®MDUL¯jmp®MDNM¯: ®MDBO¯BC®MDNM¯ jmp #®MDBO¯XC®MDNM¯ ®MDIT¯Program: jumps to any location in a file®MDNM¯ Argument Insert®LD.¯®REPAS¯ ®MDUL¯as®MDNM¯: «as» Passes string typed after filename on command line to program Mathematical Operators®LD.¯®REPMATH¯ ®MDUL¯+®MDNM¯ ®MDUL¯-®MDNM¯ ®MDUL¯*®MDNM¯ ®MDUL¯/®MDNM¯ ®MDBO¯+®MDNM¯ of addition adds numbers ®MDBO¯+®MDNM¯ of concatenation joins strings of numbers-as-text Comparative Operators®LD.¯®REPCOMP¯ ®MDUL¯==®MDNM¯ ®MDUL¯<®MDNM¯ ®MDUL¯<=®MDNM¯ ®MDUL¯>®MDNM¯ ®MDUL¯ =>®MDNM¯ ®MDUL¯<>®MDNM¯ These compare: - numerical values of numbers - sort sequence of strings Logical Operators®LD.¯®REPLOGIC¯ ®MDIT¯Sign:®MDNM¯ ®MDIT¯Does:®MDNM¯ ®MDIT¯True if:®MDNM¯ ®MDUL¯&®MDNM¯ logical ®MDBO¯and®MDNM¯ - both expressions are true ®MDUL¯!®MDNM¯ inclusive ®MDBO¯or®MDNM¯ - either or both expressions are true ®MDUL¯@Xor®MDNM¯ exclusive ®MDBO¯or®MDNM¯ - one, but only one, is true ®MDUL¯@not®MDNM¯ ®MDBO¯not®MDNM¯ of the value that follows: (e.g.) ®MDBO¯a®MDNM¯ is not equal to ®MDBO¯b®MDNM¯ - useful sequence: if no error, then...: «if@not(«er»)»«glA»«ei» String Operators®LD.¯®REPSTRING¯ Element of®LD.¯®REPELEM¯ ®MDUL¯î®MDNM¯: «sx#,«is#»ÿse«is#»» Determines if string 1 is contained in string 2: If not, result is ®MDBO¯-1®MDNM¯ If it is, result is ®MDBO¯1-n®MDNM¯ - ®MDBO¯n®MDNM¯ is position in string 2 where strings start to match - 1st position is ®MDBO¯0®MDNM¯, second is ®MDBO¯1®MDNM¯, etc. ®MDIT¯Program segment: choose among several options®MDNM¯®LD.¯®REPESEG¯ Containment®LD.¯®REPcontain¯ ð Determines if one string contains another®PG¯ Size®LD.¯®REPSIZ¯ ®MDUL¯@siz®MDNM¯: «sx#,@siz(«is#»)» - parentheses compulsory Checks no. of characters in a string ®MDIT¯Program segment: checks whether function key was struck®MDNM¯ Uppercase®LD.¯®REPUPR¯ ®MDUL¯@upr®MDNM¯: «sx#,@upr(«is#»)» Uppercases designated string ®MDIT¯Program segment branches if ‘y’/‘Y’ is struck®MDNM¯ CoNVert®LD.¯®REPCNV¯ ®MDUL¯@cnv®MDNM¯: «sx#,@cnv(«is##»)» («sx##,«rc»» has been set) Converts function call into keyboard function ®MDIT¯Program segment: reports which key has been pressed®MDNM¯®LD.¯®REPREPK¯ ®MDBO¯Other operators®MDNM¯®LD.¯®REPREPK2¯ ®TS0.3IN,1.8IN,2IN,2.4IN¯@ Operators®LD.¯®REP@ops¯ Values®LD.¯®REPVALU¯ drive and PAth va$pa®LD.¯®REPPA¯ FIlename va$fi®LD.¯®REPFI¯ Filename and Path va$fp®LD.¯®REPFP¯ PaGe number va$pg®LD.¯®REPPG¯ Line Number va$ln®LD.¯®REPLN¯ MEmory va$me®LD.¯®REPME¯ Window Number va$wn®LD.¯®REPWN¯ Window Status va$ws®LD.¯®REPWS¯ File Status va$fs®LD.¯®REPFS¯ Display Type va$dt®LD.¯®REPDT¯ ERror Code va$er®LD.¯®REPEC¯ Format commands vaxx®LD.¯®REPFORC¯ Default settings vaxx®LD.¯®REPDEFS¯ ®MDBO¯Miscellaneous Commands®MDNM¯®LD.¯®REPMISC¯ ®TS0.3IN,0.550IN,0.8IN,1.2IN,1.350IN,1.5IN,2IN,2.4IN¯ Pause®LD.¯®REPP¯ p Wait®LD.¯®REPWA¯ wait ®MDBO¯Further Details on Programming®MDNM¯®LD.¯®REPFURTH¯ Memory Required Retention in Memory Suppressing Display ®LD.¯®REPSUPR¯ ®MDBO¯DX®MDNM¯ ®MDBO¯NB®MDNM¯ ®MDBO¯OV®MDNM¯ ®MDBO¯DX®MDNM¯ Nested Programs®LD.¯®REPNES¯ Interrupting Program Extended Phrases®LD.¯®REPEXT¯ Numbers & Strings Parentheses Paragraph Marker®LD.¯®REPMARK¯®PG¯ ®MDBO¯Programming Error Messages®MDNM¯®LD.¯®REPERROR¯ —Mismatched operands —No «ei» —Command entry error —Need ID & expression —Label not found —Repeat w/alphanumeric ®MDBO¯Notes: Entering and Searching for Commands, Functions and Special Characters®MDNM¯®LD.¯®REPspecnote¯ Embedded Commands®LD.¯®REPembed¯ Functions®LD.¯®REPfuncfind¯ Immediate commands®LD.¯®REPimmedenter¯ Operators®LD.¯®REPopenter¯ Defaults®LD.¯®REPdfs¯ Paragraph markers®LD.¯®REPcrenter¯ Command Brackets®LD.¯®REPbrackenter¯ Tabs®LD.¯®REPtabs¯ Tilde®LD.¯®REPtilde¯ ®RHO®SZ13PT¯®IP0IN¯®LBtitle¯®MDBO¯Table of Contents—Chapter 5: Programming: Sample Programs®LD ¯®PN¯®MDNM¯ ¯ ®LBEven-Page Text HEADER.¯®RHE®SZ13PT¯®IP0IN¯®LBtitle¯®MDBO¯®PN¯®LD ¯®MDBO¯Table of Contents—Chapter 5: Programming: Sample Program®MDNM¯ ¯®PG¯ ®DC1=1¯®DC2=i¯®DC4=a¯®SZ12PT¯®TS0.4IN,0.8IN,1.2IN,1.35IN,1.6IN,2IN,2.4IN¯®FC¯®MDBO¯®SZ14PT¯Chapter 5: Programming: Sample Programs®SZ12PT,12PT¯®MDNM¯ ®FL¯ ®C1¯. Program closing all windows®LD.¯®REPClose¯ ®C1¯. Program closing all windows but current one®LD.¯®REPAllbut¯ ®C1¯. Program comparing screen file with disk file®LD.¯®REPScrDsk¯ ®C1¯. Program comparing screen file with disk file®LD.¯®REPScrDskOv¯ ®C1¯. Program using incremental counter to count words in file®LD.¯®REPcountr¯ ®C1¯. Program using incremental counter to count string frequency®LD.¯®REPFreq¯ ®C1¯. Program using parsing to execute command x times®LD.¯®REPExecom¯ ®C1¯. Program using subroutine to read user keyboard input®LD.¯®REPSubroutine¯ ®C1¯. How to store program as subroutine on extended phrase®LD.¯®REPExtphr¯ ®C1¯. Load whole phrase library on 1 key®LD.¯®REPOnekey¯ ®MDIT¯Program to run programs loaded on ampersand phrases from one key®MDNM¯®LD.¯®REPFuncAmp¯ ®RHO®SZ13PT¯®IP0IN¯®LBtitle¯®MDBO¯Table of Contents—Chapter 6: Programming: Writing Programs®LD ¯®PN¯®MDNM¯ ¯ ®LBEven-Page Text HEADER.¯®RHE®SZ13PT¯®IP0IN¯®LBtitle¯®MDBO¯®PN¯®LD ¯®MDBO¯Table of Contents—Chapter 6: Programming: Writing Programs®MDNM¯ ¯®PG¯ ®DC1=1¯®DC2=i¯®DC4=a¯®SZ12PT¯®TS.4IN,.8IN,1.2IN,1.350IN,1.6IN,2IN,2.4IN¯®FC¯®MDBO¯®SZ14PT¯Chapter 6: Programming: Writing Programs®SZ12PT,12PT¯®MDNM¯ ®FL¯ Planning®LD.¯®REPPlanning¯ Building a Program®LD.¯®REPBuilding¯ ®MDIT¯Program to add line ends to emails®MDNM¯®LD.¯®REPLineends¯ Breaking Programs into in Lines®LD.¯®REPBreaks¯ Embedding Codes in Programs®LD.¯®REPEmbed2¯ ®MDIT¯Program to make PFUNC embed codes in file®MDNM¯®LD.¯®REPPfunc1¯ Replacement Dictionary®LD.¯®REPSpl¯ Embedding Program Calls in Programs®LD.¯®REPProgcals¯ Entering calls using Replacement Dictionary®LD.¯®REPAbbrevs¯ ®MDIT¯Yes-or-no subroutine®MDNM¯®LD.¯®REPRout1¯ ®MDIT¯User keystroke subroutine®MDNM¯®LD.¯®REPRout2¯ Searching for command brackets®LD.¯®REPSrchBr¯ Setting Defaults®LD.¯®REPDefset¯ Writing for public use®LD.¯®REPPubwrite¯ User Options ®LD.¯®REPUserO¯ Multiple options®LD.¯®REPMultO¯ Suppressing Video Display®LD.¯®REPSuppvid¯ Suppressing Error Messages®LD.¯®REPSupperr¯ Working Messages®LD.¯®REPWorkmes¯ Comments®LD.¯®REPCommts¯ Pruning®LD.¯®REPPrune¯ Labels®LD.¯®REPLabels¯ Naming programs®LD.¯®REPnaming¯ When programs don’t work®LD.¯®REPdontwork¯ Default MB®LD.¯®REPdfmb¯ If the program goes into a loop®LD.¯®REPloop¯ ®RHO®SZ13PT¯®IP0IN¯®LBtitle¯®MDBO¯Table of Contents—Chapter 7: Running Programs®LD ¯®PN¯®MDNM¯ ¯ ®LBEven-Page Text HEADER.¯®RHE®SZ13PT¯®IP0IN¯®LBtitle¯®MDBO¯®PN¯®LD ¯®MDBO¯Table of Contents—Chapter 7: Running Program®MDNM¯ ¯®PG¯ ®DC1=1¯®DC2=i¯®DC4=a¯®SZ12PT¯®TS.4IN,.8IN,1.2IN,1.35IN,1.6IN,2IN,2.4IN,2.9IN¯®FC¯®MDBO¯®SZ14PT¯Chapter 7: Running XPL Programs®SZ12PT,12PT¯®MDNM¯ ®FL¯ Executing the command from the action line®LD.¯®REPaction¯ Mapping to a keyboard key®LD.¯®REPmap¯ Loading directly on a Phrase Key®LD.¯®REPdirect¯ Loading indirectly on a Phrase Key®LD.¯®REPindirect¯ Loading on an Ampersand Phrase - run by:®LD.¯®REPamp2¯ ®C2¯. &x on the action line: ®C2¯. &x in keyboard file ®C2¯ a batch program ®MDIT¯Program to load ampersand phrases®MDNM¯®LD.¯®REPBatch¯ ®C2¯. Load batch program from NBSTART.INT®LD.¯®REPloadbatch¯ Running Programs from XYWWWEB.U2®LD.¯®REPhelp¯ Running Programs from Macro Express menus®LD.¯®REPMexp¯ Running Programs from Library file, using numbers as arguments®LD.¯®REPlib¯ Benefits of library files ®MDIT¯Sample library program, using numbers as arguments®MDNM¯®LD.¯®REPsampnums¯ Running library program, using OV jl®LD.¯®REPjl¯ Running Programs from Library file, using text as arguments®LD.¯®REPlibtext¯ ®MDIT¯Sample library program, using text as arguments®MDNM¯®LD.¯®REPsamptext¯ Explanation of library program®LD.¯®REPlibexpl¯ ®MDBO¯sv11®MDNM¯ sequence ®MDBO¯gl®MDNM¯ sequence Labels Adding a program®LD.¯®REPadd¯ Running a sub-program®LD.¯®REPrunsub¯ Displaying list of sub-programs®LD.¯®REPDisp2¯ ®RHO®SZ13PT¯®IP0IN¯®LBtitle¯®MDBO¯Table of Contents—Chapters 8 and 9: Lists of Codes and Variables®LD ¯®PN¯®MDNM¯ ¯ ®LBEven-Page Text HEADER.¯®RHE®SZ13PT¯®IP0IN¯®LBtitle¯®MDBO¯®PN¯®LD ¯®MDBO¯Table of Contents—Chapters 8 and 9: Lists of Codes and Variables®MDNM¯ ¯®PG¯ ®DC1=1¯®DC2=i¯®DC4=a¯®SZ12PT¯®TS0.4IN,0.8IN,1.2IN,1.350IN,1.6IN,2IN,2.4IN,2.9IN¯®FC¯®MDBO¯®SZ14PT¯Chapter 8: Codes that work in Nota Bene for Windows®SZ12PT,12PT¯®MDNM¯ ®FL¯ Introduction®LD.¯®REPlistint¯ Operators®LD.¯®REPops¯ Wildcards®LD.¯®REPwild¯ Main Alphabetical List®LD.¯®REPalphalist¯ ®DC1=1¯®DC2=i¯®DC4=a¯®SZ12PT¯®TS.4IN,.8IN,1.2IN,1.350IN,1.6IN,2IN,2.4IN,2.9IN¯®FC¯®MDBO¯®SZ14PT¯Chapter 9: Compendium of XyWrite/NBWin Variables®SZ12PT,12PT¯ by R.J. Holmgren®MDNM¯®LD.¯®REPvars¯ ®FL¯ ®RHO®SZ13PT¯®IP0IN¯®LBtitle¯®MDBO¯Table of Contents—Chapter 10: Miscellany of XPL Information®LD ¯®PN¯®MDNM¯ ¯ ®LBEven-Page Text HEADER.¯®RHE®SZ13PT¯®IP0IN¯®LBtitle¯®MDBO¯®PN¯®LD ¯®MDBO¯Table of Contents—Chapter 10: Miscellany of XPL Information®MDNM¯ ¯®PG¯ ®DC1=1¯®DC2=i¯®DC4=a¯®SZ12PT¯®TS.4IN,.8IN,1.2IN,1.35IN,1.6IN,2IN,2.4IN,2.9IN¯®FC¯®MDBO¯®SZ14PT¯Chapter 10: Miscellany of XPL Information, chiefly by Carl Distefano®SZ12PT,12PT¯®MDNM¯ ®FL¯ Auto-replace off®LD.¯®REPa¯ SG—Run all phrases from one key®LD.¯®REPb¯ Func XH at head of files®LD.¯®REPc¯ Value of the Wait variable®LD.¯®REPd¯ DX®LD.¯®REPe¯ CH and CI®LD.¯®REPf¯ Commenting string®LD.¯®REPg¯ Search Switches®LD.¯®REPh¯ Carriage Return wildcard®LD.¯®REPi¯ Negation wildcard®LD.¯®REPj¯ Guillemet [chevron/command bracket] wildcards®LD.¯®REPk¯ RK and branching®LD.¯®REPl¯ Operating on defined blocks in programs®LD.¯®REPm¯ SA%®LD.¯®REPn¯ Appending to a phrase in programs®LD.¯®REPo¯ Echo phrase to prompt line®LD.¯®REPecho¯ Prompt can mix text and phrase number®LD.¯®REPmix¯ Manipulate variables and values directly®LD.¯®REPr¯ New extensions to VA operator®LD.¯®REPs¯ Containment operator (replaces epsilon)®LD.¯®REPt¯ Count Up operator®LD.¯®REPu¯ GT®LD.¯®REPv¯ Search for function codes®LD.¯®REPw¯ Save text to an sx phrase by enclosing it in double quotes®LD.¯®REPx¯ How to put your own programs into the U2 file®LD.¯®REPy¯ Drag files into NB from Explorer or PowerDesk®LD.¯®REPz¯ Keys available for User Keyboard Definitions®LD.¯®REPaa¯ Append and APT (APpend to Top of file) commands®LD.¯®REPbb¯ Function IV®LD.¯®REPcc¯ BX and repeat commands®LD.¯®REPdd2¯ BX notes, from Carl Distefano’s BX tutorial®LD.¯®REPee¯ Functions AK and SH in NB®LD.¯®REPff¯ Runcode®LD.¯®REPgg¯ Time programs with function ZT®LD.¯®REPhh¯ Func + wildcard on cmd line or in text®LD.¯®REPii¯ Func NN®LD.¯®REPjj¯ Close a prompt window®LD.¯®REPkk¯ Functions list, from U2 file®LD.¯®REPll¯ Making print mode changes work on words with apostrophes®LD.¯®REPmm¯ Straight double quotes in programs®LD.¯®REPnn¯ XYWWWEB.U2: if calling it in Page Layout View crashes NB®LD.¯®REPoo¯ Access NB menus from the keyboard®LD.¯®REPMexp2¯ ®RHO®SZ13PT¯®IP0IN¯®LBtitle¯®MDBO¯Table of Contents—Chapter 11: Out-of-Date or XyWrite Codes®LD ¯®PN¯®MDNM¯ ¯ ®RHE®SZ13PT¯®IP0IN¯®LBtitle¯®MDBO¯®PN¯®LD ¯®MDBO¯Table of Contents—Chapter 11: Out-of-Date or XyWrite Codes®MDNM¯ ¯®PG¯ ®DC1=1¯®DC2=i¯®DC4=a¯®SZ12PT¯®TS.4IN,.8IN,1.2IN,1.35IN,1.6IN,2IN,2.4IN,2.9IN¯®FC¯®MDBO¯®SZ14PT¯Chapter 11: Codes Probably Out-of-Date or for XyWrite Only®SZ12PT,12PT¯®MDNM¯ ®FL¯ Codes more likely to work®LD.¯®REPmaywork¯ Codes from list compiled for XyWrite—unlikely to work in NBWin®LD.¯®REPxywriteonly2¯ ®RHO®SZ13PT¯®IP0IN¯®LBtitle¯®MDBO¯Table of Contents—Appendix I: Error Messages®LD ¯®PN¯®MDNM¯ ¯ ®RHE®SZ13PT¯®IP0IN¯®LBtitle¯®MDBO¯®PN¯®LD ¯®MDBO¯Table of Contents—Appendix I: Error Messages®MDNM¯ ¯ ®PG¯ ®DC1=1¯®DC2=i¯®DC4=a¯®SZ12PT¯®TS.3IN,.6IN,1IN,1.3IN,1.5IN,2.3IN¯®FC¯®MDBO¯®SZ14PT¯Appendix I: NB DOS XPL Error Messages; XyWrite Error Messages®SZ12PT,12PT¯®MDNM¯ ®FL¯ ®C1¯. ®MDBO¯General Introduction®MDNM¯®LD.¯®REPIntrod¯ ®C1 ¯. ®MDBO¯Error Messages®MDNM¯®LD.¯®REPErrmess¯ ‘Invalid Format command’®LD.¯®REPInvFC¯ - opening command bracket was entered in Normal mode. ‘No command’ or ‘Illegal command’®LD.¯®REPNCIC¯ - command has been incorrectly entered on the action line ‘Command entry error’®LD.¯®REPceerr¯ ®TS0.3IN,0.7IN,1IN,1.3IN,1.5IN,2.3IN¯ ®C2¯. Program call wrongly entered. ®C4¯. The wrong call was used, e.g., ‘pv’ instead of ‘is’ (or vice versa) ‘sv’ instead of ‘sx’ (or vice versa) ®C4¯. The call was mistyped, e.g., ‘=’ instead of ‘==’ ®DC4=a¯ ‘$wn’ instead of ‘va$wn’ ®C2¯. ®C4¯. String operation attempted on a numerical value ®C4¯. Mathematical operation on a string. ®TS0.3IN,0.6IN,1IN,1.3IN,1.5IN,2.3IN¯ ‘Mismatched operands’®LD.¯®REPmism¯ - attempt made to compare a string to a value ‘Label not found’ ®LD.¯®REPlnfound¯ - «lb...» has been omitted, or doesn’t match its «gl...» ‘Need ID & expression’®LD.¯®REPneedID¯ - syntactical error committed with ‘sv’ or with ‘sx’ - an opening bracket or a closing bracket is missing ‘No «ei»’®LD.¯®REPnoei¯ ‘Too many program calls’®LD.¯®REPtoomany¯ - endless loop has been created ‘Repeat w/alphanumeric’®LD.¯®REPrept¯ - label name is missing from a «gl...» or an «lb...» call ®C1¯. ®MDBO¯Identifying Errors®MDNM¯®LD.¯®REPiderrs¯ Don’t confuse the two Error variables, ER and $ER. ER has only 2 values, $ER more than 300. ®TS0.3IN,0.7IN,1IN,1.3IN,1.5IN,2.3IN¯®DC2=i¯®C2¯. - occurrence of error sets ER to True - next command resets it to False. ®C2¯. - occurrence of error sets $ER equal to an XPL error number. - number can be found:®DC4=a¯®IP@TS2,@TS3,0.1IN¯ ®C4¯. by executing the command ®MDBO¯BC®MDNM¯ va $er®MDBO¯XC®MDNM¯ ®C4¯. in program, by saving value of $ER to a phrase, e.g.: «sx150,«va$er»» - value of $ER always returns to 0, when next command given. ®IP0.1IN,0.1IN,0.1IN¯ ®MDBO¯XyWrite Error Messages Listed Numerically (from the XYWWWEB.U2 File)®MDNM¯®LD.¯®REPerrnum¯ ®RHO®SZ13PT¯®IP0IN¯®LBtitle¯®MDBO¯Table of Contents—Appendix II: Keyboard Diagrams; Index®LD ¯®PN¯®MDNM¯ ¯ ®RHE®SZ13PT¯®IP0IN¯®LBtitle¯®MDBO¯®PN¯®LD ¯®MDBO¯Table of Contents—Appendix II: Keyboard Diagrams; Index®MDNM¯ ¯®PG¯ ®RHO®SZ13PT¯®IP0IN¯®LBtitle¯®MDBO¯Table of Contents—Index®LD ¯®PN¯®MDNM¯ ¯ ®SZ12PT¯®TS.3IN,.6IN,1IN,1.3IN,1.5IN,2.3IN¯®FC¯®MDBO¯®SZ14PT¯Appendix II: Keyboard Diagrams®MDNM¯®LD.¯®REPkeydia¯ ®FL¯ ®RHE®SZ13PT¯®IP0IN¯®LBtitle¯®MDBO¯®PN¯®LD ¯®MDBO¯Table of Contents—Index®MDNM¯ ¯ ®FC¯®MDBO¯®SZ16PT¯Index®SZ12PT¯®MDNM¯ ®FL¯®MDBO¯Index®MDNM¯ ®LD.¯®REPIndex¯®RHA ¯ ®PG¯ ®RHA ¯ ®PG¯ ®DC1=1¯®DC2=i¯®DC4=a¯®RHO®SZ13PT¯®IP0,0¯®MDBO¯CPG Chapter 1: General Customization®LD ¯®PN¯®MDNM¯ ¯®RHE®SZ13PT¯®IP0,0¯®PN¯®LD ¯®MDBO¯CPG Chapter 1: General Customization®MDNM¯ ¯®PG¯ ®EE0IN,0IN¯®SP1¯®FC¯®LBGeneral¯®MDBO¯®SZ16PT¯®IM|BE¯General Introduction to Customization®SZ12PT,12PT¯®MDNM¯ ®LBIntro¯®FL¯®MDBO¯®SZ14PT¯®IM|IE:IT=Introduction to Customization||;CA=GE;SC=;RT=RE;GT=AT;¯Introduction to Customization®SZ12PT,12PT¯ Nota Bene®MDNM¯ uses four files to implement certain commands and default settings during the loading process. They were either selected or created when you installed the program, based on the type of system you have and on the options you selected. Although you might never need to modify any of them, it is a good idea to become familiar with their function and structure. That way you will learn how they can be modified to provide greater flexibility to certain operations of the program, and you will be better able to detect problems that might be related. The four files are: ®TS4DI,10DIR,11DI,18DI,27DI,32DI,40DI,48DI¯ 1. NBSTART.INT can contain commands and programs that the user wishes to have executed whenever ®MDBO¯Nota Bene®MDNM¯ is loaded 2. / 3. NB.DFL and NB.INI determine default settings 4. NB.KBD determines what the computer does when any given key or key-combination on the keyboard is struck. The user can edit the KeyBoarD file, or create new KBD files for special purposes. Only one KBD file may be loaded at a time. (There are other files that can be customized and loaded on startup; they include a personalized spell check/ auto-replace dictionary; phrase libraries; and user programs. They will be described later.) The four files are ordinary text files that can be called to the screen, modified, and stored with the file-handling and editing commands. But: NB: You must not edit®MD-IN¯ NB.INI directly. Nota Bene writes to it during and at the end of a session, and you will get error messages, and possibly compromise NB.INI, if you edit and save it. You may well never need to edit it: most customizations can more safely be made through the menu dialogs ‘Tools, Preferences’ and ‘View, Interface Options’. If, however, you decide to edit it directly, call it under a new name with: ®LBnedfl¯F9 ne new.ini,nb.ini F10 (where ‘new.ini’ stands for a temporary filename of your choice). Make your changes; save the file; close Nota Bene; copy the current NB.INI to a safe place, such as a new folder named ‘TEMP’ under the C:\NBWIN\USERS\DEFAULT folder. Now rename NEW.INI to NB.INI; and open Nota Bene. If all is well, you can after a time delete the version in the temp folder. If you have NB.DFL onscreen, do not try to change a default using the Tools, Preferences menu. You will get an error message when you click OK. (And be sure to back up NB.DFL to a safe place if you edit it.) Remember that storing a modified settings file does not immediately implement the modifications. To do that, you must “reload” the table(s) with the corresponding ®MDUL¯run®MDNM¯ or ®MDUL¯load®MDNM¯ command(s) (see “Using the ®MDUL¯load®MDNM¯ Command” section).®PG¯ This chapter starts with a brief explanation of the system path. It is not unique to ®MDBO¯Nota Bene®MDNM¯, but it can be usefully modified to include ®MDBO¯Nota Bene®MDNM¯ paths. It then covers the following ®MDBO¯Nota Bene®MDNM¯ table files: ®IP4DI,4DI¯NBSTART.INT—contains any commands that you wish to execute whenever ®MDBO¯Nota Bene®MDNM¯ is loaded. NB.DFL and NB.INI—implement the program’s default settings (and your modifications , made either through ‘Tools, Preferences’ and ‘View, Interface Options’ or directly. ®IP0,0¯ NB.KBD is described in the “Keyboard Customization” chapter. Other general customization instructions are also included in this chapter. ®LDÿ|į ®SZ14PT¯®LBBAT¯®MDBO¯®IM|IE:IT=System Path||;CA=GE;SC=;RT=RE;GT=AT;¯SYSTEM PATH in Windows 2000 / XP®MDNM¯®SZ12PT¯ The Windows NT4 / 2000 / XP System PATH is now managed by entries in the Windows Registry, although 16-bit programs like NB can still consult an AUTOEXEC file (now called "autoexec.nt", and located—unless you specify an alternative autoexec file—in the system32 folder). Autoexec.nt may be used to supply configuration ®MDIT¯additional®MDNM¯ to that found in the Registry. It can be very useful to add one or two NB folders to the system path, principally the program folder itself and the folder where you keep your XPL programs. Then, wherever you are in Nota Bene (perhaps in a folder named C:\NBWIN\CPG), you can run user programs from the command line without specifying the full path: run filename.run instead of (for instance): run c:\nbwin\xpl\filename.run If your Nota Bene installation is on C:, and you have not modified your program folder name, the program folder will be C:\NBWIN. It is a very good idea to keep user XPL programs in their own folder: C:\NBWIN\XPL. The disadvantage of adding to the System PATH is that it slow down your system noticeably if you add more than five or six folders. You can add to the path either through My Computer or by using a freeware tool. To change the path through My Computer, follow these steps. 1. From the desktop, right click My Computer and click Properties. 2. In the System Properties window, click on the Advanced tab. 3. In the Advanced section, click the Environment Variables button. 4. In the Environment Variables window, highlight the path variable in the Systems Variable section (the lower pane) and click Edit. 5. Go to the end of the Variable value line (do not erase what is already there) and add the Nota Bene path(s). Each different directory is separated with a semicolon as shown below. C:\Windows\System32;C:\Windows;C:\Program Files;®PG¯ You must specify the full path, e.g., C:\NBWIN\XPL. Remember to put a semicolon at the end of the existing line, before typing your addition. If you know what functions are performed by the various folders in the Path, you may reorder them to speed up access to certain folders; but in no case should any folder precede the operating system root folder (usually WINDOWS or WINNT) or the system folder (usually system[32]). The maximum length of the combined system and user-defined path variables is 1,023 characters. This does not includes the "path=" portion of either. Typing the path in the Environment Variables window is a bit fiddly and annoying, because you cannot see the whole of the existing path at once. An alternative is to use a freeware tool, such as ®IM|IE:IT=System Path Commander(Freeware)||;CA=GE;SC=;RT=RE;GT=AT;¯System Path Commander, (®HK1Web|http://www.softpedia.com/get/System/System-Miscellaneous/System-Path-Commander.shtml¯http://www.softpedia.com/get/System/System-Miscellaneous/System-Path-Commander.shtml®HK0¯) To add to the path using System Path Commander, you run the program, right click on the window, choose ‘Add’, and either type the path or navigate to it with the usual Browse button. ®LDÿ|į ®LBSTA¯®MDBO¯®SZ14PT¯®IM|IE:IT=NBSTART.INT||;CA=GE;SC=;RT=RE;GT=AT;¯NBSTART.INT®SZ12PT¯®MDNM¯ The NBSTART.INT file (“INiTialization”) is a table that provides you with the opportunity to implement settings of your choice whenever you load ®MDBO¯Nota Bene®MDNM¯. Initially it contains no commands, because the necessary configuration, including loading of the keyboard table and default-settings tables, is now performed by NB.INI ®MDIT¯before®MDNM¯ any commands that you might add to NBSTART.INT (examples are shown below) would take effect. Do not rename NBSTART.INT! (You can use alternative names for alternate versions, but if you wish NB to look for this file and auto-load commands that you have entered into it, it ®MDBO¯must®MDNM¯ bear the name NBSTART.INT.) The NBSTART.INT table is a “program file” that contains “program functions” and is executed with the ®MDUL¯run®MDNM¯ command. To learn more about program files, see Chapters 3 and 7. It should be either in the program folder (typically C:\NBWIN) or in C:\NBWIN\USERS\DEFAULT, where there is already an empty NBSTART.INT file for you to use. If you keep your NBSTART.INT in the program folder, you should delete the one in C:\NBWIN\USERS\DEFAULT, in case the command to run NBSTART.INT finds the empty file rather than the one you have modified. ®LDÿ|į ®LBCAL¯®MDBO¯Calling to Screen®MDNM¯ If you want to check or modify the NBSTART.INT table, call it to the screen as an ordinary file: ®MDBO¯F9®MDNM¯ call nbstart.int ®MDBO¯F10®MDNM¯ Specify C:\NBWIN\before the filename if you are not in the C:\NBWIN folder. ®PG¯ ®LDÿ|į ®LBRUL¯®MDBO¯Rules for Modifying File®MDNM¯ When modifying the NBSTART.INT table, be sure to follow these rules: Each command except the first line must begin with a “BX” (see below) and must end with a “Q2”. It is convenient to put each command on a separate line, in which case you must end each line with a comment string (;*;). Make sure you are in Show Codes View, so that print mode commands will not be inserted into the file. You can use lowercase or uppercase. ®LDÿ|į ®MDBO¯BX®MDNM¯ ®MDBO¯®IM|IE:IT=Functions|BX|;CA=GE;SC=;RT=RE;GT=AT;¯BX®MDNM¯ is a “program function” that “blanks” the command line so that a new command can be executed (this is an over-simplification; see p ®REPee¯ for details). ®MDBO¯®IM|IE:IT=Functions|Q2|;CA=GE;SC=;RT=RE;GT=AT;¯Q2®MDNM¯ executes the command. The ®MDBO¯BX®MDNM¯ and apparent space (which is really ASCII 0) are one unit, so the cursor jumps over the “X” and space. ®LDÿ|į ®LBST¯®MDBO¯Saving File®MDNM¯ When you have finished modifying the table: ®MDBO¯F9®MDNM¯ sa ®MDBO¯F10®MDNM¯ (Or do Ctrl+S.) ®LDÿ|į ®LBREI¯®MDBO¯Reimplementing®MDNM¯ To reimplement the modified NBSTART.INT table: ®MDBO¯F9®MDNM¯ run nbstart.int ®MDBO¯F10®MDNM¯ If you deleted items from the table, you must exit ®MDBO¯Nota Bene®MDNM¯ and reload the program. If you just rerun NBSTART.INT, some of the former settings might remain in effect if there are no new commands to override them. NBSTART.INT is less useful than it used to be in earlier versions of NB for Windows. In NB 8, settings made via the menus, and saved in NB.DFL and NB.INI, usually override commands in NBSTART.INT. For instance, the directory sort order set through Tools, Preferences, Directories (Command Line) will not be overridden by the line: ®MDBO¯BX®MDNM¯ order d,r®MDBO¯Q2®MDNM¯;*; in NBSTART.INT. The chief uses of NBSTART.INT now are to load the XYWWWEB.U2 program compendium (see p ®REPxyu2¯) and to load programs on ampersand phrases (see pp ®REPAMP¯, ®REPamp2¯). ®PG¯ ®LDÿ|į ®LBPRO¯®MDBO¯Programs®MDNM¯ ®IM|IE:IT=NBSTART.INT|for loading programs|;CA=GE;SC=;RT=RE;GT=AT;¯If you have programs that you want either loaded (say, to an ampersand phrase) or run whenever you load ®MDBO¯Nota Bene®MDNM¯, you can do that here, by using: ®MDBO¯BX®MDNM¯ ldpm x:[filename].run,&y®MDBO¯Q2®MDNM¯;*;ÿ| for loading a program on an ampersand phrase ®MDBO¯BX®MDNM¯ run x:[filename].run®MDBO¯Q2®MDNM¯;*;ÿ| for running a program ®LDÿ|į ®LBDIS¯®MDBO¯Displaying Directory®MDNM¯ If desired, you can have a directory displayed as the last step. There are two ways to do so: ®MDBO¯BX®MDNM¯ dir®MDBO¯Q2®MDNM¯;*; ®MDBO¯BC®MDNM¯ call Include ®MDIT¯one®MDNM¯ space after the ®MDUL¯call®MDNM¯ command, so that the cursor will be positioned for typing the filename. ®MDBO¯BX®MDNM¯ dir®MDBO¯Q2®MDNM¯;*; ®MDBO¯BC®MDNM¯ call ®MDBO¯CC®MDNM¯;*; By adding the CC function as shown, you can have the cursor move down into the directory so you can position it on the file you want to call. Choose the method you most frequently use for calling files. ®LDÿ|į ®LBWIN¯®MDBO¯Calling file(s)®MDNM¯ If you want a particular file or files to open whenever you open NB, you can do it with lines of this type in NBSTART.INT: ®MDBO¯BX®MDNM¯ ca [path\file1].nb®MDBO¯Q2®MDNM¯;*; ®MDBO¯BX®MDNM¯ ca [path\file2].nb®MDBO¯Q2®MDNM¯;*; ®LDÿ|į ®LBUSI¯®MDBO¯®IM|IE:IT=load command||;CA=GE;SC=;RT=RE;GT=AT;¯Using the LOAD Command®MDNM¯ ®MDIT¯These commands were more generally useful in NB DOS, where there were a number of files that could be ®MDBO¯load®MDIT¯ed. But it is still useful to know how to load the few remaining files that can be loaded from the command line.®MDNM¯ There are two types of commands used to load table and other files into memory: the generic ®MDBO¯load®MDNM¯ command, which can load any type of table file that is properly identified; and ®MDBO¯ld®MDNM¯ commands, which are used to load specific kinds of files. There are two types of file for which the generic ®MDBO¯load®MDNM¯ cannot be used, and the appropriate ®MDBO¯ld®MDNM¯ command must be used instead: ®IP0,@TS3,0¯ Phrase libraries (filename.®MDBO¯lib®MDNM¯) can be loaded only with the ®MDBO¯®IM|IE:IT=ldlib command||;CA=GE;SC=;RT=RE;GT=AT;¯ldlib®MDNM¯ command. NB: this command does not load the [phraselib] .LIX file containing the phrase-library descriptions, but it can be useful for quick phrase-library changes if you know what is on the keys. NB: phrase libraries can be saved from the command line with ®MDBO¯salib®MDNM¯, but this command does not save the .LIX file. If you significantly modify your phrase library, and want to change the descriptions to match, you need to use the menu on Alt+F3.®PG¯ Program files (filename.®MDBO¯run®MDNM¯) can be loaded only with the®IM|IE:IT=ldpm command.||;CA=GE;SC=;RT=RE;GT=AT;¯ ®MDBO¯ldpm®MDNM¯ command. NB: They can be ®MDIT¯run®MDNM¯ from the command line with the ®MDBO¯run®MDNM¯ command (and in other ways, see Chapter 7). ®LDÿ|į ®MDBO¯®IP0,0¯LOAD®MDNM¯ The ®MDBO¯®IM|IE:IT=load command||;CA=GE;SC=;RT=RE;GT=AT;¯load®MDNM¯ command can be used to load one or more tables files at a time. Each table file, however, must start with a special four-character sequence called a ®MDBO¯®IM|IE:IT=load ID||;CA=GE;SC=;RT=RE;GT=AT;¯load ID®MDNM¯. These are the load IDs for each kind of table file: ®TS25DI,50DI¯ ®MDUL¯File Type®MDNM¯ ®MDUL¯Filename®MDNM¯ ®MDUL¯Load ID®MDNM¯ Keyboard table filename.kbd ;KB; Personal dictionary filename.spl ;SP; Default settings file NB.DFL ;PR; NB: do not load NB.DFL with the ®MDBO¯load®MDNM¯ command; you might cause a program crash. Instead, quit NB and re-open. The load ID must be on the first line in a table file, and must be typed exactly as shown, i.e., in the sequence of semicolon, capitalized two-letter code, semicolon. The load ID should be terminated by a paragraph marker (ÿs¿). The ®MDBO¯load®MDNM¯ command can be used either to load one or more table files, or to load one or more personal dictionary files simultaneously. To load a group of table files, use: ®TS4DI,5DI,12DI,23DI,32DI,35DI,64DI¯ ®MDBO¯F9®MDNM¯ load table1,table2,table3 ®MDBO¯F10®MDNM¯ ÿ|(note separating commas; no spaces between comma and following filename) To load more than one personal dictionary, use: ®MDBO¯F9®MDNM¯ load file1.spl+file2.spl+file3.spl ®MDBO¯F10®MDNM¯ (note separating plus signs) If you already have a personal dictionary loaded and want to add another/others to use at the same time as the first, put a plus sign ®MDIT¯in front®MDNM¯ of the first dictionary file in the list. ®LDÿ|į ®LBDEF¯®SZ14PT¯®MDBO¯®IM|IE:IT=NB.DFL||;CA=GE;SC=;RT=RE;GT=AT;¯NB.DFL®MDNM¯®SZ12PT,12PT¯ NB.DFL file is a table that implements many of program’s default settings whenever you load ®MDBO¯Nota Bene®MDNM¯. It is automatically loaded by the program before NBSTART.INT takes effect. As can be seen when you call the NB.DFL table to the screen (preferably under a new name, as described on p ®REPnedfl¯) and scroll through it, there are many features of the program that you can customize. Some of these were set based the choices you made when installing the program; others are initially the same for all computer systems. Many of the settings can be changed as desired by modifying NB.DFL. But, until you have become thoroughly familiar with the operations of ®MDBO¯Nota Bene®MDNM¯, it is strongly recommended that you make all changes of default settings by means of through the menu dialogs ‘Tools, Preferences’ and ‘View, Interface Options’. ®PG¯ If you do edit NB.DFL, follow the new-name procedure described on p ®REPnedfl¯. ®LDÿ|į ®LBEFF¯®MDBO¯Effect of Settings®MDNM¯ The settings implemented by the NB.DFL table affect all files that are called to the screen or printed unless the files have contravening commands (i.e., deltas) embedded within them. If you modify the NB.DFL table, remember that display and printing of previously created documents that used the defaults—rather than embedded format commands—might be affected. Therefore it is normally best not to change the defaults frequently, but instead to insert actual commands in your files whenever you do not want to use the default settings. That way your files will always be formatted in accordance with the intended settings. ®LDÿ|į ®LBDF¯®MDBO¯DF Settings®MDNM¯ ®IM|IE:IT=Default settings||;CA=GE;SC=;RT=RE;GT=AT;¯Most NB.DFL consists of lines setting defaults, along with descriptive comments (on lines beginning with a semicolon) and lines containing only a semicolon, the purpose of which is to make the file more readable by breaking it up. The default lines are of the form: DF XX=NN For instance, here are lines setting the page width and length: ®IP4DI,4DI¯; PW is page width DF PW=8.5in ; ; FD is form depth (page depth) DF FD=11in ®IP0,0¯ When specified in the NB.DFL table or executed with the ®MDUL¯default®MDNM¯ command (see next section), these settings must have an equals sign between the command and the value; when executed in a file, no space is used. For example, the form depth (as for legal-size paper) can be set in these three ways: ®IP4DI,4DI¯ —as permanent default by ®MDBO¯DF fd®MDNM¯=11IN in NB.DFL —as temporary default by executing ®MDUL¯default®MDNM¯ (or ®MDUL¯d)®MDNM¯ ®MDUL¯fd=11in®MDNM¯ on command line —for a specific document by executing ®MDUL¯fd 11in®MDNM¯ on the command line to embed the command as code. ®IP0,0¯ ®LDÿ|į ®LBMOD¯®MDBO¯Modifying Settings®MDNM¯ When modifying the settings: Always use Show Codes View. Inclusion of a hidden print-mode command or format code on any non-comment line will result in incorrect loading. ®PG¯ ®IM|IE:IT=Comment, Commenting string||;CA=GE;SC=;RT=RE;GT=AT;¯Comment lines may be added at any position in the table. Each such line must begin with a semicolon; any line that does not will be interpreted as an actual default setting. ®LDÿ|į ®LBTEM¯®MDBO¯Temporarily Changing Defaults®MDNM¯ ®IM|IE:IT=Default settings|changing for session|;CA=GE;SC=;RT=RE;GT=AT;¯Defaults can be changed for the remainder of the current ®MDBO¯Nota Bene®MDNM¯ session—i.e., until you exit or turn off the computer—by using the Menu Line or the ®MDUL¯default®MDNM¯ command. Some changes will not become effective until you call the next file to the screen. It can be convenient to change a default just for the active NB session. You can do so from the ®LBmen¯command line, with a command that is almost the same, except that ‘DF’ becomes ‘default’ (or ‘d’:). If you are writing programs, you might want to change the default view for opening files temporarily from Page Layout View to Show Codes View. This would do it: ®IP4DI,4DI¯d dt=0 ®IP0,0¯The change will not become effective until you call the next file to the screen. To return to Page Layout View in mid-session, you would issue ‘d dt=4’. Neither of these command-line commands will change NB.DFL. ®LDÿ|į ®LBCOM¯®MDBO¯®IM|IE:IT=Default Command||;CA=GE;SC=;RT=RE;GT=AT;¯Default Command®MDNM¯ The form of the ®MDUL¯default®MDNM¯ command is: ®IP4DI,4DI¯ ÿ|Ú——— command/setting ÿ|³ ÿ|Ú—— value (if any) after “=”   ÿ| ÿ| ®MDBO¯F9 ®MDUL¯default®MDNM¯ xx=# ®MDBO¯F10®MDNM¯ or, ®MDBO¯F9 d®MDNM¯ xx=# ®MDBO¯F10®MDNM¯ ®IP0,0¯ Where xx stands for the letters of the default (e.g., DT) and # for the specifying number(s) or letter(s) (e.g., DT=4, or FD=11.7in) You can issue command-line commands in upper or lower case or a mixture of both. Changing the page-layout defaults this way will not affect a file that is already on screen. ®MDUL¯Can’t set value with default®MDNM¯ — The command specified with the ®MDUL¯default®MDNM¯ command was improperly typed or cannot be input as a default. Be sure to use an equals sign (as ®MDUL¯default ®MDUL¯fd=11in®MDNM¯) rather than a space (as ®MDUL¯fd®MDNM¯ ®MDUL¯11in®MDNM¯) between the command and values. You can use the ®MDUL¯default®MDNM¯ command to test a setting before permanently modifying it in NB.DFL. NB: Changing a display mode (e.g., ‘d dt=0’ to change the session default to Show Codes View) does not change the view of currently open files, only of any that you create or open after issuing the command. ®PG¯ ®LDÿ|į ®LBDD¯®MDBO¯List of Available Defaults®MDNM¯ Chapter 8 includes all the defaults I have been able to find, with brief descriptions. ®LDÿ|į ®LBNbini¯®SZ14PT¯®MDBO¯®IM|IE:IT=NB.INI®MDNM¯||;CA=GE;SC=;RT=RE;GT=AT;¯NB.INI®MDNM¯®SZ12PT,12PT¯ NB.INI loads your default printer and Windows fonts. It contains such settings (made through the menus) as your foot/endnote defaults; the folder NB opens in by default; whether or not you have Auto Check and/or Auto Replace turned on, the default sort order for directories; what beeps you have turned on (overstrike, etc.); your default phrase library and keyboard. It is where NB keeps the list of recently opened files that shows at the bottom of the File Menu; and where it lists the format and contents of its toolbars. It is possible to edit it by hand, but inadvisable, unless there is a setting that you cannot make stick through the menus. ®LDÿ|į ®LBEXC¯®SZ14PT¯®MDBO¯®IM|IE:IT=Hyphenation Exception Dictionary||;CA=GE;SC=;RT=RE;GT=AT;¯Hyphenation Exception Dictionary®MDNM¯®SZ12PT,12PT¯ When automatic hyphenation is in effect, before breaking a word according to the algorithms, the program first checks the hyphenation exception dictionary to see how to break the word, or whether it should be broken at all. A hyphenation exception dictionary (such as those supplied with the program) is an ordinary h text file that can be called to the screen and modified, if you want to specify where particular words should be broken. See Nota Bene online Help for full instructions. ®LDÿ|į ®LBCAS¯®MDBO¯Case®MDNM¯ It makes no difference whether a word is lowercased or uppercased. However, capitalizing words that normally are capitalized makes it easier for you to find them in the list. ®LDÿ|į ®LBORD¯®MDBO¯Order®MDNM¯ Although the list does not need to be in alphabetical order, you can use the ®MDUL¯sort®MDNM¯ command to h alphabetize the list from time to time, so that it will be easier to find words. ®LDÿ|į ®LBBRE¯®MDBO¯Breaking Words®MDNM¯ If you want a particular word to break, insert a soft hyphen with ®MDBO¯Ctrl+/®MDNM¯ ®PG¯ ®LDÿ|į ®LBNON¯®MDBO¯Nonbreaking Words®MDNM¯ If you don’t want a word to break at any point, insert a soft hyphen just ®MDIT¯before®MDNM¯ the word with ®MDBO¯Ctrl+/®MDNM¯. ®LDÿ|į ®LBPhraselib¯®SZ14PT¯®MDBO¯®IM|IE:IT=Phrase Libraries||;CA=GE;SC=;RT=RE;GT=AT;¯Phrase Libraries®MDNM¯®SZ12PT,12PT¯ ®MDIT¯This section will make more sense in the context of the XPL programming chapters.®MDNM¯ The general topic of using, loading and saving phrase libraries is covered in online Help. This section is designed to supplement that information. It concerns what happens when you click ‘Show Options’. The only difference is that there appears, just above the bottom line of buttons, a line with four choices: Save as Program Insert: Command Set Command Key Function First click in the type-in box and press Shift+F8 to change to Show Codes View. ®MDIT¯Key Function®MDNM¯: Here you type function codes, such as BX, NP. They will immediately appear in the type-in box above. ®MDIT¯Insert: Command®MDNM¯ In the box beside this you enter embedded commands. Enter them in the form: pv 01 md +bo [note space in each command] ®MDIT¯Set Command®MDNM¯ After typing an embedded command in the Insert: Command box, click this button to place the command in the type-in box above, as (in Show Codes View) «PV01», «MD+BO». ®MDIT¯Save as Program ®MDNM¯ Saves the program you have just written in the box (or saved to a phrase key) as a program, rather than as literal text. If you do not check this box, then the program will be inserted into your file, rather than run. On the other hand, it is easy enough to type the whole program into the type-in box (except the function codes, which you cannot input here except by using the Key Function box). Even in Show Codes View you will get an error beep as you enter ®IM|IE:IT=Command Brackets||;CA=GE;SC=;RT=IG;GT=AT;¯command brackets, but if you can put up with that, it is quicker than the Insert Command/Set Command procedure. ®MDIT¯®IM|IE:IT=Command Brackets||;CA=GE;SC=;RT=RE;GT=AT;¯Command brackets are also called ®IM|IE:IT=Format brackets||;CA=GE;SC=;RT=RE;GT=AT;¯format brackets, ®IM|IE:IT=Chevrons||;CA=GE;SC=;RT=RE;GT=AT;¯chevrons, ®IM|IE:IT=Double angled bracket||;CA=GE;SC=;RT=RE;GT=AT;¯double angled brackets or ®IM|IE:IT=Guillemets||;CA=GE;SC=;RT=RE;GT=AT;¯guillemets by long-standing Nota Bene or XyWrite users. You may encounter any of those names in the explanatory matter that accompanies user programs. Likewise, codes enclosed in command brackets may be called deltas. ®MDNM¯ Quicker still, if you want to save a program on a phrase key, is to write it in NB, highlight it, save it to a phrase key, open the phrase-library dialog with F3, highlight the phrase, click ‘Show Options’ and tick ‘Save as Program ®PG¯ NB: This is not a quick or sensible way to write XPL programs or save them to phrase keys. I include it because (a) the topic is not covered in online Help; (b) if you have saved a program to a phrase key (as described in later chapters), it can sometimes be quicker to modify one small part of it in this dialog than to open the program, modify it, reload it on the phrase key and save the phrase library; and (c) this is the only easy way to modify a program which you have saved to a phrase key and erased from your hard disk. ®LDÿ|į ®LBNON¯®SZ14PT¯®MDBO¯®IM|IE:IT=Personal Spell Checker||;CA=GE;SC=;RT=RE;GT=AT;¯®IM|IE:IT=Spell Checker||;CA=GE;SC=;RT=RE;GT=AT;¯Personal Spell Checkers and ®IM|IE:IT=Auto-Replace / Auto-Expand®MDNM¯||;CA=GE;SC=;RT=RE;GT=AT;¯Auto-Replace / Auto-Expand®MDNM¯®SZ12PT¯ Again, this topic is well covered in online Help. What follows is a few notes about using auto-replace (or auto-expand). 1. The procedure for adding expansion pairs that is described on the ‘Auto Expand’ page of Help is slow and cumbersome. Your user spell file is an editable text file. Call it to the screen (you should probably keep it in C:\NBWIN\USERS\DEFAULT), make sure auto-expand/auto-replace is turned off, and type the expansion pair. You can put expansion pairs anywhere in the file. Maintenance is easiest if the pairs are in alphabetical order—you can put them in the right place, or put them at the end of the file and issue a ‘sort’ command. You may want to put short-term pairs (e.g., specialised terms that you will use for one project only) at the end of the file, where you can quickly erase them when you are done with them. The abbreviation must not include spaces, punctuation or formatting codes, but can include numbers.. Put one space between the abbreviation and the expansion string—which can contain spaces, punctuation or print formatting codes: ®IP4DI,4DI¯newb New Brunswick 3gm great-great-great-grandmother ®IP0,0¯ dca ®MDIT¯David Cameron’s Adventures®MDNM¯ 2. Online Help suggests using auto-replace for long names or phrases. For me, it shines as a way of speeding up the typing of the words I use most. I do auto-expand long phrases, but the real time-savers are the commonest words in the language: ®IP4DI,4DI¯®BOLB=SN,WT=1PT,IN=0IN,0,0,0,RS=100,IS=0,AB=0,,0¯®BL0¯®UBNO¯®GU2DI,1DI¯®ET1LI¯®EE1LI¯®SNX0,2.08IN,4.16IN,6.25IN¯o of mr more i I y you ty they h he s she®BC¯ w with f for bs beside bss besides bt between b but u and®BC¯ tho though tre there ev every feb February mond Monday®SN0¯ ®IP0,0¯and hundreds of others, including every common contraction (apostrophes slow down typing no end): ®IP4DI,4DI¯®BOLB=SN,WT=1PT,IN=0IN,0,0,0,RS=100,IS=0,AB=0,,0¯®UBNO¯®GU2DI,1DI¯®SNX0,2.08IN,4.16IN,6.25IN¯dsn doesn’t dnn don’t cnn can’t®BC¯ il I’ll hl he’ll wv we’ve®BC¯ cdn couldn’t hsn hasn’t hvn haven’t®PG¯ ®SN0¯®IP0,0¯Of the first six words of the the string, ‘and hundreds of others, including every’ only one was typed in full. What I actually typed was: ‘u hundreds o ots, incl ev’. NB: I have arranged the above expansion pairs in columns to save space; in a .SPL file each must be on a line of its own. 3. If you use auto-replace in this manner, with single or double-letter abbreviations, you need to be able to turn it off easily. I have it turned on by default, but I’ve changed the key definition of Ctrl+H (which is duplicated on Ctrl+Shift+H) to ‘35=az’, which toggles auto-replace on and off. 4. You can turn off the auto-correct/replace beep. Tools, Preferences, Sounds. 5. You can have different .SPL files for different purposes. Besides my everyday spell file, ABBREV.SPL, I have EMAIL.SPL (identical to ABBREV.SPL, except that the contractions have straight apostrophes, not curly ones); CDS.SPL, for entering conductors, composers, etc. into IbidPlus; XPL.SPL for entering programming-code strings into programs (see ®REPspl¯ below); and BOOK.SPL. This last is a only spell checker, not an abbreviation-expansion file—it contains words like Maliseet and Munsterberg that are in my book but not in the main dictionary, so that I can spell-check the book without being stopped every few paragraphs. ®RHO®SZ13PT¯®IP0IN¯®MDBO¯CPG Chapter 2: Keyboard Customization®LD ¯®PN¯®MDNM¯ ¯®RHE®SZ13PT¯®IP0IN¯®MDBO¯®PN¯®LD ¯CPG Chapter 2: Keyboard Customization®MDNM¯ ¯®PG¯ ®FC¯®SZ14PT¯ ®MDBO¯®SZ16PT¯Introduction to ®IM|IE:IT=Keyboard Customization®MDNM¯||;CA=GE;SC=;RT=RE;GT=AT;¯Keyboard Customization®MDNM¯®LBINT¯®SZ14PT,14PT¯ ®FL¯®SZ12PT¯ The Keyboard is a good place to start customizing. Keyboard customization is easier than XPL programming, and the keyboard table itself contains lots of examples. ®MDBO¯®SZ13PT¯ ®SZ13PT¯®MDBO¯Keyboard Table®MDNM¯ The “keyboard table” is a file consisting of “keyboard functions” that are loaded into computer memory to tell the computer exactly what to do when each key is pressed—either by itself or when a shift-type or toggle key is used. ®LBkeygloss¯®SZ13PT¯®MDBO¯Short Glossary of Keyboard Table Terms®MDNM¯®SZ12PT¯ ®IM|IE:IT=Keyboard Table (definition)||;CA=GE;SC=;RT=RE;GT=AT;¯Keyboard table—a file with extension .KBD, which defines what the keys and key combinations do in NB in all the keyboard states. ®IM|IE:IT=Keyboard State (definition)||;CA=GE;SC=;RT=RE;GT=AT;¯Keyboard state—In the unchanged NB.KBD these are: Unshifted; Shift; Caps; Shift+Caps; Ctrl; Ctrl+Shift; Alt; Alt+Shift; Ctrl+Alt; Ctrl+Alt+Shift. Shift state—the same as keyboard state. State table—keyboard state/shift state ®IM|IE:IT=Keyboard Functions (definition)||;CA=GE;SC=;RT=RE;GT=AT;¯Keyboard functions—two-letter mnemonics that stand for XPL functions. They are used within keyboard tables to tell the program what editing or other operation to perform when a key is pressed. For instance, ®MDBO¯bc®MDNM¯ goes to the command line, removing any text that was on it (it can stand for ‘Begin Command’ or ‘Blank Command’ ) and ®MDBO¯xc®MDNM¯ executes a command typed on the command line (it stands for eXeCute). ®IM|IE:IT=Comment, Commenting string||;CA=GE;SC=;RT=RE;GT=AT;¯Comments, commenting—Every line in a keyboard table that begins with a semicolon is a comment, and will be ignored by NB. You can add as many comments as you wish. Key definitions—These start with a number followed by an equals sign, followed by code and text, separated by commas. Each shift state consists of a number of key definitions. Key assignments—the same as key definitions. ®LBavail¯®SZ13PT¯®MDBO¯The Keyboard File®MDNM¯®SZ12PT¯ Nota Bene’s “standard” keyboard table is called NB.KBD; it is in the folder C:\NBWIN\USERS\DEFAULT. You should keep any other keyboards that you make in the same folder. Alternative keyboard tables (which also use the .KBD extension) can be installed. A number of language-specific keyboard tables come with Nota Bene, including British English, German, Dutch, French, Spanish, Italian and quite a few more. A XyWrite®PG¯ keyboard is also available. You can load them via Tools, Keyboards, Select Active; you can save the active keyboard table as the default via Tools, Keyboards, Select Defaults. The Nota Bene keyboard controls most functions including text entered on the screen, but the Windows keyboard controls text entered in the dialog boxes. If you are loading one of the Nota Bene foreign language keyboards, you should also load the corresponding Windows keyboard. Keyboards that use the Hebrew, Greek and Cyrillic alphabets are available in Lingua Workstation, but are not included in Scholar's Workstation. ®MDBO¯Modifying®MDNM¯ You can easily modify the keyboard table to include other editing keys or character assignments—or perhaps to assign existing operations and characters to different keys. You can also create new state tables, thereby considerably increasing the number of keys available to you for redefinition. This chapter explains the structure of the keyboard table and how it can be customized to meet your particular needs. ®MDBO¯®LBbackup2¯Backup and/or Save under new name®MDNM¯ If you want to modify your keyboard table, you should back it up first. It is very easy to make a slip while customizing a keyboard. NB may then load an ancient default keyboard with important keys in bewildering places. If you have a backup, you can open Windows Explorer and restore your original keyboard file to the c:\nbwin\users\default folder. Better still, copy NB.KBD under a new name, and make changes to the new keyboard. (You could call it TRYOUT.KBD, or NEW.KBD.) When you are satisfied with it, you can make it the default keyboard table (see above). This is a sensible move, because every update of Nota Bene overwrites your old NB.KBD with the latest version. The existing version does get saved in C:\NBWIN\USERS\DEFAULT\CUSTOM; but if your customized keyboard has a new name, and you have made it the default, NB will honour that, and you will not have to do anything at update time except call the new NB.KBD to screen, alongside your customized kbd file, and use either the file comparison keys or the Proof, File Comparison dialog to find changes to NB.KBD. The comparison process will stop not only at each new or changed key def in NB.KBD, but also at each of your customizations. This can be a nuisance. I obviate it by saving a copy of each new version of NB.KBD as VANILLA.KBD. After an update, and before copying the new NB.KBD to VANILLA.KBD, I compare the two files, flag all changes, and copy the changed key defs to my customized keyboard file. ®MD+BO¯®IM|IE:IT=Keyboard diagrams||;CA=GE;SC=;RT=RE;GT=AT;¯Keeping track with keyboard diagrams®MDNM¯ It is easy to forget what key customizations you have made. If you do much keyboard customizing, you may want to: make a keyboard diagram with NB’s key numbers on each key; print out a diagram for each shift state of the keyboard, and label the appropriate keys with your customizations. Appendix II is diagrams of the American and British standard Windows XP keyboards, labelled with NB’s key numbers.®PG¯ ®MDBO¯Keyboard Identification®MDNM¯®LBIDE¯ The keyboard table begins with lines that tell the program: that the file is a keyboard table the total number of keys on the keyboard which keys are shift-type or toggle keys, and the names used for them in the state tables (see later section) what character, if any, should be displayed on the status line The keyboard table must contain these statements. The only situations in which you should modify any of them are: to change shift-type keys to “single shot” keys to facilitate use by persons with typing disabilities if you want or need to make a major customization of the keyboard that requires different key identities ®MDBO¯®LBnormal¯Normal Settings®MDNM¯ ®UFCourier New¯®SZ10PT¯®MDBO¯ ÿ|Ú———————————ÿ|¿ ®MDNM¯®SZ12PT¯ ®UFCourier New¯®SZ10PT¯®MDBO¯ ÿ|³;KB; ÿ|³ ®MDNM¯®SZ12PT¯ÿ|——— identifies file as keyboard table ............................................... ®UFCourier New¯®SZ10PT¯®MDBO¯ ÿ|³KEYS=107 ÿ|³ ®MDNM¯®SZ12PT¯ÿ|——— total number of keys (see note below) ®UFCourier New¯®SZ10PT¯®MDBO¯ ÿ|³CTRL=29,99 ÿ|³ ®MDNM¯®SZ12PT¯ÿ|—ÿ|— shift-type keys indicated by ®UFCourier New¯®SZ10PT¯®MDBO¯ ÿ|³ALT=6,98 ÿ|³ ®MDNM¯®SZ12PT¯ÿ|—ÿ|´ key number only ®UFCourier New¯®SZ10PT¯®MDBO¯ ÿ|³SHIFT=42,54ÿ|³ ®MDNM¯®SZ12PT¯ÿ|—ÿ|Ù ®UFCourier New¯®SZ10PT¯®MDBO¯ ÿ|³CAPS=58,T:ÿ|ÿ|³ ®MDNM¯®SZ12PT¯ÿ|——— toggle keys indicated by key ®UFCourier New¯®SZ10PT¯®MDBO¯ ÿ|³ ÿ|ÿ|³ ®MDNM¯®SZ12PT¯“T”, and character for status-line indicator ®UFCourier New¯®SZ10PT¯®MDBO¯ ÿ|³MOUSE=105 ÿ|³ ®MDNM¯ ®MDBO¯ ÿ|À———————————ÿ|Ù ®MDNM¯®SZ12PT¯ ®UFTimes New Roman¯ ®IP4DI,4DI¯®IP0IN,0IN¯The “load ID” (;KB;) at the beginning of the file is necessary so that the keyboard table can be properly loaded with the ®MDUL¯load®MDNM¯ command. The total number of keys is set at 104 so that the standard keyboard table can also be used with the IBM enhanced keyboard. The second values for ®MDBO¯Ctrl®MDNM¯, ®MDBO¯Alt®MDNM¯ and ®MDBO¯Shift®MDNM¯ are for the duplicate keys on the IBM enhanced keyboard. (Any key assignments for keys 85-104 are ignored when not using the enhanced keyboard.) The spelling must exactly match that used in the “table=” lines in the following keyboard-state tables. ®MDBO¯®LBBAS¯®SZ13PT¯Basic Modification Procedure®MDNM¯®SZ12PT¯ To modify a particular key in a given state table (see ®MDBO¯State Tables®MDNM¯ below) ®C1¯. Find the start of that table (table=.......) ®C1¯. Find the key in the table (##=......) ®C1¯. Modify/Insert the key’s definition ®C1¯. Save the modified key table to disk, and reload it with ®MDBO¯F9 save F10®MDNM¯ ®MDBO¯F9 load .kbd F10®MDNM¯ ®PG¯ If you are not sure that you will like a change you are making, save the modified keyboard table under a different name (e.g., NB2.KBD) and load it for testing. If the change is acceptable, then save it under its original name. Always use Show Codes View when modifying a keyboard table. Inclusion of a hidden print-mode comand or format delta on any line containing a keyboard identification, table identification, or key definition will result in incorrect loading of the keyboard table. Do not delete the ;®IM|IE:IT=kb load ID||;CA=GE;SC=;RT=RE;GT=AT;¯KB; load ID at the beginning of the table; if you do, you will be unable to load the table (see ®MDBO¯Using the LOAD Command®MDNM¯ in General Customization” chapter). If there is an error in the file as a result of the editing that you have done, a message of this form will appear on the status line when you try to load the file: ®MDBU¯Bad:®MDNM¯——A message indicating that the keyboard table contained an incorrect line. The message flashes by very quickly; and you may have to repeat the ®MDUL¯load®MDNM¯ command several times nefore you can catch it. ®MDBO¯Key Numbers®MDNM¯®LBNUM¯ The keyboard table consists of key numbers followed immediately by an equals sign and the key definition. The numbers are determined by the computer hardware. Appendix 2: Keyboards contains diagrams of the standard modern US/UK Windows keyboards, with Nota Bene’s key numbers superimposed. The program compendium XYWWWEB.U2 provides a quick way of finding out a key code, if you have it installed: SCAN + Helpkey will report the scancode of the next key pressed. The file C:\NBWIN\DOCUMENT\SAMPLES\®IM|IE:IT=NBKEY.KEY||;CA=GE;SC=;RT=RE;GT=AT;¯NBKEY.KEY lists the existing key assignments in the vanilla keyboard table, NB.KBD. If you do much keyboard customizing, you may want to make a diagram of the keyboard, blank except for the key names (e.g., A, F10) and numbers (e.g., 30, 68); print out one for each shift state of the keyboard; and label the keys with your customizations. It is easy to forget what customizations you have done, and where they are; and it is easier to shuffle through a few sheets of diagrams than to open the keyboard table and trawl through for changes, even if you have commented them. ®MDBO¯®LBmove¯Moving Definitions and Redefining Keys®MDNM¯ There is nothing sacrosanct about NB.KBD’s key assignments. With a few exceptions, mostly standard Windows keys (see p ®REPaa¯), you can move or copy any keyboard definition, whether NB’s or your own, from virtually any key, to virtually any key. Some key definitions are duplicated in NB.KBD. For instance, function TS, which toggles program recording mode, appears four times. It makes sense to keep TS on only one of these keys and replace the others with your own key definitions.®PG¯ NB: Do not put any definitions on the Ctrl, Shift or Alt keys, in any of the keyboard states. You can check their key numbers at the top of the keyboard file. ®MDBO¯®IM|IE:IT=Key Numbers®MDNM¯||;CA=GE;SC=;RT=RE;GT=AT;¯®MD+BO¯Available Keys®MDNM¯®LBavkeys¯ You will probably start with a renamed version of NB.KBD. Some keys in vanilla NB.KBD are already free for you to use for your own assignments (though they may have assignments in future versions of the program). Any line in the keyboard table that consists only of a semicolon and the key number; or of the key number defined as ®IM|IE:IT=Functions|NO|;CA=GE;SC=;RT=RE;GT=AT;¯ ##=NO or ##=NO,NO is available for the purpose. So are any keys that are not listed by number. For instance, if the key numbers in a particular keyboard state table skip from ‘34=....’ to ‘36=....’, then key 35 is available. This does not apply to keys like 85 and 89, which simply do not exist; and you would do well to steer clear of defining system keys like NumLock (69) or 84 (PrtScn) in any keyboard states, at least until you are experienced in keyboard customizing. It is fairly easy for Scholar’s Workstation users to find empty keys in the keyboard table for their customizations—the Ctrl+Alt table has a number of spaces. It is harder for Lingua users, but there are some spaces; and you can remove any of the accented characters in the Ctrl+Alt and Ctrl+Shift+Alt keyboards that you don't use. With accented characters that you do use, but rarely, you could consider inputting them with the F6 Accents and Modifiers popup, thus gaining the keys they were on for customizations. A quick way of finding empty keys is to search for the NoOperation function 'NO', which is generally assigned to empty keys. ®IP0,0,.25IN¯®NB¯®SZ13PT¯®MDBO¯®IM|IE:IT=State Tables®MDNM¯||;CA=GE;SC=;RT=RE;GT=AT;¯State Tables®MDNM¯®LBSTATE¯®SZ12PT¯ ®IP0,0¯ ®LBKeyboard St¯®MDBO¯®IM|IE:IT=Keyboard States||;CA=GE;SC=;RT=RE;GT=AT;¯Keyboard States®MDNM¯ The keyboard table is divided into separate tables for each of the shifted and toggled “states” of the keyboard. Each “state table” consists of key definitions that create an entirely new “keyboard.” Each state table begins with a line identifying the keyboard state: ®BB¯ ÿ|Ú——— name of shift or toggle key(s) used with table= following key assignments The spelling (but not case) of the name must correspond exactly with that in the keyboard identification at the very beginning of the keyboard table file. ®PG¯ ®MDBO¯Nota Bene®MDNM¯ has 10 different keyboard “states” (the maximum possible is 20), as established by the following table-definition lines (shown together here):®SZ12PT¯ ®UFCourier New¯®SZ10PT¯®MDBO¯ ÿ|Ú————————————————————————————————ÿ|¿ ÿ|³table= ÿ|³®MDNM¯®SZ12PT¯ÿ|— unshifted ®UFCourier New¯®SZ10PT¯®MDBO¯ ÿ|³table=CAPS ÿ|³®MDNM¯®SZ12PT¯ÿ| ®UFCourier New¯®SZ10PT¯®MDBO¯ ÿ|³table=SHIFT ÿ|³ ÿ|³table=SHIFT+CAPS ÿ|³ ÿ|³table=CTRL ÿ|³ ÿ|³table=CTRL+SHIFT ÿ|³ ÿ|³table=ALT ÿ|³ ÿ|³table=ALT+SHIFT ÿ|³ ÿ|³table=CTRL+ALT ÿ|³ ÿ|³table=CTRL+ALT+SHIFT ÿ|³ ÿ|À————————————————————————————————ÿ|Ù ®MDNM¯®SZ12PT¯®SZ12PT¯®UFTimes New Roman¯ ®LBGene¯®MDBO¯General Rules®MDNM¯ Do not define the same key twice in the same keyboard-state table. If you do define a key twice, the second definition is the one that is used. The order of key numbers within a state table makes no difference. However, it is best to have them in numerical order, so that you won’t accidentally duplicate an assignment because the number was out of sequence. All keys not listed in a particular state table are dead in that state, but most can be used for user key definitions. ®LBThe shift¯The shift and toggle keys (29, 42, 54, 56, and 58) appear in each state table with ASCII 0 (which looks like a space) assigned. ®MDBO¯Esc®MDNM¯ (key 1 ) should not be modified in any way. ®MDBO¯®IP0,0,.25IN¯®NB¯®SZ13PT¯®IM|IE:IT=Key Definitions®MDNM¯||;CA=GE;SC=;RT=RE;GT=AT;¯Key Definitions®MDNM¯®LBDEF2¯®SZ12PT¯ ®IP0,0¯ ®MDBO¯Basic Format®MDNM¯ Within each keyboard state table are the actual definitions of keys. The format for all such assignments is: ®BB¯®NB¯ ÿ|Ú————— number of key to be used ÿ|³ ÿ|Ú——— character and /or keyboard function(s) ##= ®BB¯ The numbers are determined by the computer hardware. If a paragraph mark “ÿs¿” is immediately after the “=” sign, the keyboard table will not load. It will also not load if a line begins with anything other than: #= ; TABLE= ®PG¯ ®MDBO¯Types of Definitions®MDNM¯ The different types of key definitions are: ®MDBO¯Character Assignments®MDNM¯: The character typed by the key is specified in correct lowercase or uppercase form. Examples: a, A, 5, *, +, ! ®MDBO¯Editing Operations®MDNM¯: A two-character “keyboard function” or a group of functions is assigned to the key to conduct an editing or other operation. These can include moving the cursor to the command line to type and execute a command. In Nota Bene for Windows, a good many editing operations invoke C:\NBWIN\NBMAIN-#.AUX files, with string such as: 14=[U,&X,B,D,U] 28=FF,&X,C,R 83=[U,RC,U] Keys with &+letter cannot be used in Program Recording Mode (see later chapters), but they can be copied and modified within a keyboard file. ®MDBO¯®LBcomma¯®IM|IE:IT=Functions|CO|;CA=GE;SC=;RT=RE;GT=AT;¯®IM|IE:IT=Comma in keyboard tables||;CA=GE;SC=;RT=RE;GT=AT;¯Comma®MDNM¯ Commas—not spaces—are used between characters and/or keyboard functions. If you want to have a key insert a comma as part of a command or text, you must use the ®MDBO¯co®MDNM¯ function at the point in the definition where the comma is desired (see ®MDBO¯Keyboard Functions®MDNM¯ below for example). ®MDBO¯End of Definition®MDNM¯ All material up to the paragraph marker (ÿs¿) is part of the definition. Do not break a key definition into more than one line by pressing the Enter key; the line will automatically wordwrap if too long. (If a long definition includes spaces to be typed on the command line, a line break might occur at such a space.) ®MDBO¯®LBcomments¯®IM|IE:IT=Comment, Commenting string||;CA=GE;SC=;RT=RE;GT=AT;¯Comment Line®MDNM¯ Any line beginning with a semicolon is a comment line. You may also use the NBWin comment string—;*; When making a modification that you are not sure of, copy the line(s) with the existing definition, place a semicolon in front of the original to deactivate it, then modify the copy. If the modification does not work correctly when you save and load the table, you can easily reactivate the original definition by removing the semicolon. You can also add descriptive comments. Keyboard tables make for slow reading and skimming, so you might want to standardise the layout of your comments. This would be one possibility, with comments indented from the semicolon: ; 95 - Delete phrase 95=yd,xd,df,bx,s,e, , ,^,S,^,S,^,O,^,R,^,O,^,T,q2,df,rd ; 100 - Go to end of previous line 100=pl,le®PG¯ Or you could use a distinctive character for comments, such as a string of equals signs: ; =====95 - Delete phrase (from NB3.KBD) 95=yd,xd,df,bx,s,e, , ,^,S,^,S,^,O,^,R,^,O,^,T,q2,df,rd ; ====100 - Go to end of previous line 100=pl,le ®MDBO¯Character Assignments®MDNM¯®LBCHA¯ A key definition that consists just of a character inserts that character into the file. This is true for: ®IP4DI,4DI¯—keys 2-13, 16-27, 30-41, and 43-53 on the ®MDBO¯Unshifted,®MDNM¯ ®MDBO¯Shift®MDNM¯, and ®MDBO¯Caps Lock®MDNM¯ keyboards [in the US version of NB.KBD. British and European keyboards have different assignments for, for example, key 40]. —accented characters on the ®MDBO¯Ctrl+Alt®MDNM¯ and ®MDBO¯Ctrl+Shift+Alt®MDNM¯ keyboards ®SZ12PT¯—certain other keys (e.g., \ on ®MDBO¯Ctrl®MDNM¯ keyboard) ®IP0,0¯ ®MDBO¯Duplicate Assignments®MDNM¯ The same character can be assigned to more than one key. For example, many monetary symbols are on the same or different keys on different keyboards. No matter what key is used, the same character is entered into the file. ®MDBO¯Adding New Characters®MDNM¯ Most of the displayable characters that are part of the ASCII standard and extended character sets are already assigned to keyboards. To assign a character that is not, use ®MDBO¯Ctrl+Shift®MDNM¯ and the ASCII number on the keypad to enter it into the keyboard table, or use the Compose Key with ®MDBO¯F6®MDNM¯. ®MDBO¯®LBmodchar¯Modifying Character Assignments®MDNM¯ You can modify the character assignments in any way you want. For example, if you use only a few of the letters from the Multilingual keyboards, you can assign them to keys on a different keyboard or remove them. It is a good idea to substitute ##=NO,NO for a character if you remove it without substituting a key definition of your own—it is easier to see empty keys defined as NO,NO than to hunt for numbers missing from a shift state. You can also rearrange your keyboard so that it contains only characters and definitions you use, in positions you find easiest to use and remember. For instance, you could change the unshifted and ®MDBO¯Shift®MDNM¯ keyboards, as well as the corresponding ®MDBO¯Caps ®MDNM¯and ®MDBO¯Caps Shift®MDNM¯ keyboards so that they would have the Dvorak character arrangement rather than the “Qwerty.” ®MDBO¯®LBinswords¯Inserting Words®MDNM¯ ®IM|IE:IT=Keyboard Table|insert word|;CA=GE;SC=;RT=RE;GT=AT;¯To have a key insert more than a single character, the definition must begin with the “no operation” (®MDBO¯no®MDNM¯) keyboard function or another suitable keyboard function:®SZ10PT¯ ##=A,r,t,i,c,l,e types only “A” ##=no,A,r,t,i,c,l,e types “Article” in text area or on command line, depending on where cursor is ##=no,si,A,r,t,i,c,l,e first changes to Insert mode ##=gt,si,A,r,t,i,c,l,e inserts word in text even if cursor was on command line ®SZ12PT¯®PG¯ ®MDBO¯®IP0,0,.25IN¯®SZ13PT¯®IM|IE:IT=Keyboard Functions||;CA=GE;SC=;RT=RE;GT=AT;¯Keyboard Functions®MDNM¯®LBFUN¯®IP0,0¯®SZ12PT¯ “Keyboard functions” are two-letter codes used within keyboard tables to tell the program what editing or other operation to perform when a key is pressed. They occur in keyboard tables in three different forms. ®LBolder¯®DC1=1¯®C1¯. The two letters of the code are contiguous in the table. For example, in the unshifted table state:®IP4DI,4DI¯ 68=xcÿ| executes a command on the command line (This is F10) 91=tiÿ| toggles insert/overstrike (This is the Insert key) 102=cdÿ| moves cursor one line down (This is the Down Cursor key)®IP0,0¯ ®LBnewer¯®C1¯. But many functions are executed through one of ®MDBO¯Nota Bene®MDNM¯’s NBMAIN-#.AUX files. In that case the two letters of the function are separated in the table by a comma, and are preceded by a code such as &X, &G. For example: 81=&X,D,Nÿ| next page (this is the Ctrl PgDn key) 60=&X,D,Fÿ| start or finish free-form defining (this is the F2 key) ®C1¯ Still others are enclosed in square brackets+U; some of these include &+letter codes, some do not. 14=[U,&X,B,D,U] backdelete character (this is the Backdelete key) 83=[U,RC,U] delete character (this is the Delete key 46=[U,MW,C,P,U] copy to the Clipboard (key Ctrl C) Keyboard functions can be in lowercase or uppercase within the keyboard table. In this chapter they are shown in lowercase and are boldfaced to distinguish them from immediate commands, in bold-underline. Be sure to distinguish keyboard functions from commands, default settings and program calls—many of which often consist of the same letters. Keyboard functions can be included within programs as program functions (see “Programming Functions” chapter). ®MDBO¯Available Keyboard Functions®MDNM¯ Topical and alphabetical lists of the available keyboard functions are given at the end of this chapter. If you are not sure of the effect of a particular keyboard function, use the function ®MDBU¯(func)®MDNM¯ command to experiment (see next page). ®MDBO¯®LBinclude¯Including Command®MDNM¯ To have a key execute a command, you must: (1) Specify ®MDBO¯bc®MDNM¯ or ®MDBO¯bx®MDNM¯ to position cursor on blank command line (2) Type the command. Separate the characters (including any spaces) by commas. (3) Specify ®MDBO¯xc®MDNM¯ or ®MDBO¯q2®MDNM¯ to execute the command. NB: ®MDBO¯bc®MDNM¯ must be used with ®MDBO¯xc®MDNM¯ and ®MDBO¯bx®MDNM¯ with ®MDBO¯q2®MDNM¯. You cannot mix them. ®MDBO¯bx®MDNM¯ with ®MDBO¯xc®MDNM¯ will not execute. Examples of commands on keys: ##=bx,r,u,n, ,\,n,b,\,x,p,l,\,l,h,-,q,u,o,t,e,.,r,u,n,q2 runs user program lh-quote.run ##=bc,s,t,o,r,e,xcÿ| executes ®MDBU¯store®MDNM¯ command ®PG¯ ®MDBO¯®LBinclcomma¯®IM|IE:IT=Functions|CO|;CA=GE;SC=;RT=RE;GT=AT;¯Including Comma®MDNM¯ To include a comma as an element of a command assigned to a key, use the ®MDUL¯co®MDNM¯ keyboard function. Example: ##=bc,i,p,5,i,n,co,5,i,n,xcÿ| to execute ®MDBU¯ip 5in,5in®MDNM¯ command ®LBParag¯®MDBO¯Paragraph Marker®MDNM¯ To have a key enter a paragraph marker into the text, either include the paragraph marker definition on Unshifted 28: FF,&X,C,R or open Edit, Find and Replace, and use the red and blue button to the right of ‘Find’ to insert a Carriage Return (Alone) character in the Find box. From there you can copy and paste it into your key definition. (Do not use the regular paragraph marker; it will not work.) The Carriage Return (Alone) character or FF,&X,C,R string starts a new paragraph or executes a command, depending on whether the cursor is on the command line or in the text at that point in the key definition. ®MDBO¯F10®MDNM¯ ®MDBO¯(xc)®MDNM¯ always executes a command. ®MDBO¯Tab®LBTab¯®MDNM¯ To include a tab within a key definition, simply insert a tab character with Unshifted [tab key]. ®LBCommand¯®MDBO¯®IM|IE:IT=Keyboard Table|search for command brackets|;CA=GE;SC=;RT=RE;GT=AT;¯Command Brackets («...») ®MDNM¯ If you want to create a key that searches for a certain type of embedded command, do not use the normal command-bracket keys (®MDBO¯Ctrl+, or Ctrl+.)®MDNM¯ to enter the command brackets in the keyboard table. Instead, press and hold down ®MDBO¯Ctrl+Shift®MDNM¯, and type the numerals) ®MDBO¯174®MDNM¯ or ®MDBO¯175®MDNM¯ (from the alphanumeric keyboard, not the numeric keypad. The characters that result will look like uppercase ‘E’ and ‘F’. An example of such an assignment is a key that searches (in Show Codes View) for every point in the file where you changed the point size (®MDBO¯sz#pt®MDNM¯), so that you can check whether the value is correct: ##=bc,s,e, ,\,E,s,z,\,xc (where the ‘E’ has been entered with Ctrl+Shift+174) This method of inputting the command brackets can also be used in programs to search for command brackets. A key assignment that executes an embedded command should not use these characters. Instead, define the key using ®MDBO¯bx®MDNM¯ and ®MDBO¯q2®MDNM¯ so that it implements the command on the command line (see ‘Including Command’, p ®REPinclude¯). ®LBFunc¯®MDBO¯®IM|IE:IT=Function Command||;CA=GE;SC=;RT=RE;GT=AT;¯Function Command®MDNM¯ To test what a keyboard function does before you include it in a keyboard table, or to use an unassigned keyboard function at any other time, use the function (®MDBU¯func®MDNM¯) command: ÿ|Ú—keyboard function ÿ| ®MDBO¯F9 func xx F10®MDNM¯ ®PG¯ That will execute the function. For instance, func rc will delete the character under the cursor. It will work if the keyboard function is of the form ‘xx’, as in ®MDBO¯bc®MDNM¯, ®MDBO¯xc®MDNM¯ etc. ®MDBO¯®LBchangassg¯®IM|IE:IT=Keyboard Table|change key assignments for Ctrl, Shift, Alt, Caps|;CA=GE;SC=;RT=RE;GT=AT;¯Changing the Windows Key Assignments for Control, Shift, Alt and Caps Lock®MDNM¯ ®MDIT¯This is not, properly speaking, a Nota Bene subject. I am including it because a number of users on the Nota Bene Users’ List ask how to change these shift-state keys.®MDNM¯ Since NB users are constantly pressing key combinations such Ctrl+Shift+Alt or Shift+Alt, plus a letter, number, Function key or keypad key, it can be useful to exchange Caps Lock and Alt, so that the left-side Ctrl, Sh and Alt keys are in an easy-to-reach line, and can be confidently pressed without looking down. Furthermore, since Right Alt, (unlike like Right Shift and Right Control) does not have the same action as its left-side counterpart, you will probably, if you are a touch typist, crowd customizations that include the Alt key onto keys that can be reached with the right hand. It can therefore be useful to redefine Right Alt so that it has the same action as Left Alt. This cannot be done within NB, alone, but it can be done. There are a number of freeware keyboard remapping utilities on the web. I use ®IM|IE:IT=Keytweak||;CA=GE;SC=;RT=RE;GT=AT;¯Keytweak: http://webpages.charter.net/krumsick/ —but it is only one of many. Like all online remappers that I have found, it has the limitation of being based on the US keyboard. It will happily remap Ctrl, Shift and Alt (not to mention the Win key), but it does not recognize key 86. You do not need to alter the numbers at the head of your NB keyboard table (see p ®REPnormal¯ above); the rejigging has been done for you, in the Windows Registry. ®MDBO¯Creating New Tables®MDNM¯®LBCRE¯ ®IM|IE:IT=Keyboard Table|creating new tables|;CA=GE;SC=;RT=RE;GT=AT;¯In addition to redefining keys, and defining keys that do not already have definitions assigned to them, you can create entirely new state tables (within a maximum total of 20), thereby greatly increasing the number of keys available to you for redefinition. If your keyboard is the 104-key keyboard that has the CTRL, SHIFT, ALT keys duplicated, (and if the one key of a pair has a different scan code from the other), you can separate the duplicates into distinct keys by making changes in the initial table. For example, you can change the line that reads: CTRL=29,99 into two lines LCTRL=29 RCTRL=99 —thereby making the Left and Right CTRL keys distinct from each other. You now could keep LCTRL with the existing CTRL definitions, and create an entirely new set for RCTRL. (You must remember to change the name CTRL that occurs in subsequent state tables in which it occurs to either LCNTRL or RCNTRL.) You can do exactly the same thing with the SHIFT and ALT keys. There is one price that you have to pay—that you need to remember, when typing, which of your CTRL keys does which; and, if you are a touch typist, that is likely to be a considerable handicap. You might find it preferable to add one or more entirely new tables by making some other key(s) into Shift-type keys. Any key on the keyboard can be converted in this way, but the key then loses its present function, which, for almost all keys, would be an unacceptable inconvenience. However, if you have a 104-key keyboard, you have a number of duplicate keys, such as *, /, INS, DEL, etc. You have to insert in the®PG¯ initial table a line that consists of the name for the key, say SLASH if you wanted to use one of the / keys (53 and 94), followed by an = sign and the key’s number, as in: SLASH=94. (The name for a key in the initial table can be anything you please, except that it must contain no numbers: F11 would not be acceptable—FXI would be.) You can now create a ‘SLASH=’ table, in which any key will, when you strike it while holding down the SLASH key, operate as you have defined it in that table. ®LBCaps tab¯There is an even simpler change that might recommend itself to many users. The CAPS key at present is not a Shift-key but a Toggle-key left over from typewriter days: when it is in one position all alphabetical characters are typed on the screen in lower case, in the other position in UPPER CASE. But, if like most users, you have very limited use for extensive typing in upper case text, that key is being very largely wasted. If you were to turn it into a shift-type key, the keys in the table=CAPS and the table=CAPS+SHIFT state tables would all become available for redefinition. You need to change the line in the initial table from: CAPS=58,T:ÿ| (removing the T, which marks it as a toggle) to CAPS=58 From now on the CAPS key behaves like a normal Shift-key. At the same time it is possible for you to continue to have the old benefits of the CAPS key by loading the following short program on to a phrase key (see p ®REPPhraselib¯ for discussion of phrase libraries): ®MDBO¯GT®MDNM¯ «sv09,ÿ|»«lbRK»«sx50,«rc»»«if«is50»==«is09»»«ex» «ei»«sx50,@upr(«is50»)»«pv50»«gLRK» You can convert that textual representation of the program to the actual program by taking two steps (do it in Show Codes View): ®C2¯. Open a new file, and copy the new program to it. ®C2¯. Create a program (see chapters on XPL programming) that reads: ®MDBO¯TF XP BX®MDNM¯ ci /«/E/®MDBO¯Q2 BX®MDNM¯ ci /»/F/®MDBO¯Q2®MDNM¯ (where ‘E’ and ‘F’ are input with Ctrl+Shift+174 and 175, as described above) When you have finished, the new program will, in Show Codes View, have genuine command brackets surrounding the expressions. Whenever you strike the phrase key to which you have loaded that program, the characters that you then type will appear in uppercase until you cancel it by striking ®MDBO¯Shift/Alt/PrintScrn®MDNM¯ ®MDBO¯®SZ13PT¯Examples of User Key Definitions®MDNM¯®LBREASS¯®SZ12PT¯ ®MDBO¯®IM|IE:IT=Assign Leader||;CA=GE;SC=;RT=RE;GT=AT;¯Assigning Leader®MDNM¯ You can assign a leader (®MDBU¯ld®MDNM¯) command to a key to produce a hairline leader (using the “–” character): ##=bx,l,d, ,–,q2ÿ| inserts leader at cursor position, separating any existing items on line ##=lb,bx,l,d, ,,q2ÿ| inserts leader in front of any existing items on line ##=lb,bx,l,d, ,–,q2,FF,&X,C,Rÿ| inserts margin-to-margin leader, forcing any existing text down to next line ®PG¯ All of the above key definitions work as indicated if the cursor started in the text area. To ensure the same result if the key is used when the cursor is on the command line, add a ®MDBO¯gt®MDNM¯ at the beginning: ##=gt,lb,bx,l,d, ,–,q2,FF,&X,C,R inserts margin-to-margin leader even if cursor was on command line ®MDBO¯®IM|IE:IT=Delete and Backdelete by phrase||;CA=GE;SC=;RT=RE;GT=AT;¯Delete and Backdelete by phrase®MDNM¯ You can move the cursor to the previous phrase and next phrase (Alt+[, Alt+]), and highlight the next phrase (Alt+\);, but in NB.KBD you can't delete or backdelete by phrase. Here are key definitions (adapted from the NB3 keyboard file) that let you do it: ; Backdelete phrase ##=yd,xd,df,pw,bx,s,e,b, , ,^,S,^,S,^,O,^,R,^,O,^,T,q2,cl,nw,df,rd ; Delete Phrase ##=yd,xd,df,bx,s,e, , ,^,S,^,S,^,O,^,R,^,O,^,T,q2,df,rd®FG0,0,0¯ ®MDBO¯®IM|IE:IT=Zoom by 1%||;CA=GE;SC=;RT=RE;GT=AT;¯Zoom by 1%®MDNM¯ NB zooms window size in 5% increments. To zoom in and out by 1% increments, you could add these two keys, and perhaps a third to return to 100% view (these are from J-P Takala): ##=bx,z,o,o,m, ,-,1,q2 ##=bx,z,o,o,m, ,+,1,q2 ##=bx,z,o,o,m, ,1,0,0,q2 ®MDBO¯®IM|IE:IT=Abandon a file without having to confirm||;CA=GE;SC=;RT=RE;GT=AT;¯Abandon a file without having to confirm®MDNM¯ To abandon a file without getting a message box asking if you want to save it: ##=bx,a,b,q2 ®MDBO¯®IM|IE:IT=Remove Hard Page Breaks||;CA=GE;SC=;RT=RE;GT=AT;¯®IM|IE:IT=Page Breaks, remove||;CA=GE;SC=;RT=RE;GT=AT;¯Remove hard page breaks®MDNM¯ To remove all hard page breaks from the cursor position to end of file (and be told, on the command line, that it’s been done):®IP4DI,4DI¯ ##=bx,c,i, ,/,E,P,G,F,/,/,q2,bc,P,G, ,c,o,d,e,s, ,r,e,m,o,v,e,d, ,f,r,o,m, ,h,e,r,e, ,t,o, ,e,n,d, ,o,f, ,f,i,l,e®IP0,0¯ (‘E’ and ‘F’ are input as described on p ®REPCommand¯ above.) ®MDBO¯®IM|IE:IT=Change preceding punctuation||;CA=GE;SC=;RT=RE;GT=AT;¯Change preceding punctuation mark®MDNM¯ These definitions are useful if you do a lot of rewriting. To remove the punctuation mark at end of the word preceding the current word (e.g., change ‘keys, and’ to ‘keys and’®IP4DI,4DI¯—useful if you do a lot of rewriting): ##=ql,qr,bc,s,e,b, , ,wa,ws,xc,qr,rc,qr,ch®FG0,0,0¯ ®IP0,0¯To put a semicolon, colon, question mark or comma at end of the word preceding the current word (e.g., changes ‘keys, and’ to ‘keys: and’®IP4DI,4DI¯). Can be adapted to any punctuation mark®IP0,0¯. NB: Function ‘co’ must be used instead of an actual comma, since keyboard tables use commas as separators.®IP4DI,4DI¯ semicolon: ##=ql,qr,bc,s,e,b, , ,wa,ws,xc,qr,rc,;,qr,ch®FG0,0,0¯ colon: ##=ql,qr,bc,s,e,b, , ,wa,ws,xc,qr,rc,:,qr,ch question mark: ##=ql,qr,bc,s,e,b, , ,wa,ws,xc,qr,rc,?,qr,ch comma: ##=ql,qr,bc,s,e,b, , ,wa,ws,xc,qr,rc,co,qr,ch®FG0,0,0¯ ®IP0,0¯®PG¯ Copy highlighted material to adjacent window; undefine in this one ®IP4DI,4DI¯##=as,yd,cp,as,gt,xd ®IP0,0¯This leaves the cursor in the first window. To go to the adjacent window after the copy, add ‘as’ (preceded of course by a comma) to the end of the definition. ®MDBO¯®IM|IE:IT=Place marker like NB4’s||;CA=GE;SC=;RT=RE;GT=AT;¯Place marker like NB4’s®MDNM¯ NB4’s place marker was pretty good. NB for Windows has bookmarks, which don’t survive from session to session, and annotations, which do. There are two problems with annotations. ®IP4DI,4DI¯ —They can’t be empty. If you press Ctrl+Shift+Alt F1, you have to enter at least one character before the dialog will close. —You can’t search for and delete them in Page Layout View. ®IP0,0¯ But if you put the following on 3 keys, you have a quick, easily searchable, permanent (till you delete it) marker. (The marker is on uppercase 2 in the Insert, Special Characters, Text Characters menu). ®IP4DI,4DI¯ ##=no,• [the NB4 marker character] ##=bx,s,e, ,\,•,\,q2 [search forward in file for marker] ##=bx,s,e,b, ,\,•,\,q2 [search backward in file for marker] ®IP0,0¯ ®MDBO¯®SZ13PT¯Lists of Keyboard Functions®MDNM¯®LBLISTS¯®SZ12PT¯ These topical and alphabetical lists contain most of the two-character function mnemonics needed for keyboard customization. For a full list of all the codes that it is possible to use in Nota Bene, see Chapter 8. ®PG¯ ®MDBO¯®FC¯®SZ13PT¯®LBTopical¯®IM|IE:IT=Topical List of Keyboard Functions||;CA=GE;SC=;RT=RE;GT=AT;¯TOPICAL LIST OF FUNCTIONS ®SZ12PT,12PT¯®MDNM¯ ®FL¯®IM|EN¯ ®MDBO¯ ®SZ13PT¯ Name Description ®MDNM¯ ®TS5DI¯ ®SZ12PT¯ ®LBascii¯®MDBO¯ASCII NUMBERS ®MDNM¯ ®BOLB=SN,WT=1PT,IN=0IN,0,0,0,RS=100,IS=0,AB=0,,0¯®UBNO¯®GU2DI,1DI¯®SNX0,22DI,62.5DI¯r1 Record ASCII 1- r9 Record ASCII 9 r0 Record ASCII 0®BC¯ input ASCII digit 1- input ASCII digit 9 input ASCII 0 ®SN0¯ ®LBcellular¯®MDBO¯CELLULAR TABLES®MDNM¯ ®BOLB=SN,WT=1PT,IN=0,0,0,0,RS=100,IS=0,AB=0,,0¯®UBNO¯®GU2DI,1DI¯®SNX0,22DI,62.5DI¯ec End Cell ed Entry Define mc Mark Column tl Table Left tr Table Right®BC¯ move cursor to end of current cell select current row of cells mark column - select cell at cursor location in a table move cursor to previous cell move cursor to next cell ®SN0¯ ®MDBO¯®LBcmdline¯COMMAND LINE ®MDNM¯ ®BOLB=SN,WT=1PT,IN=0IN,0,0,0,RS=100,IS=0,AB=0,,0¯®UBNO¯®GU2DI,1DI¯®SNX0,22DI,62.5DI¯bc Blank Command cc Change Cursor xc eXecute Command ch Clear Header gh Go to Header gt Go to Text s- Show last command bx Blind eXecute q2 execute command ®BC¯ move to beginning of command line move between command line & text execute command on command line clear command line w/o moving cursor move cursor to command line move cursor to text area displays last command on command line execute command without putting it on command line finish command started with BX ®SN0¯ ®LBcopying¯®MDBO¯COPYING & MOVING DEFINED BLOCK®MDNM¯ ®BOLB=SN,WT=1PT,IN=0IN,0,0,0,RS=100,IS=0,AB=0,,0¯®UBNO¯®GU2DI,1DI¯®SNX0,22DI,62.5DI¯cp CoPy define mv MoVe define un paste from clipboard ®BC¯ copy block to cursor position move selected block to cursor position paste copy from clipboard. (In Page layout View, in NB Lingua, an invalid «XAEnglish» code is inserted as well as the text.) ®LBcounters¯®SN0¯®MDBO¯COUNTERS®MDNM¯ ®BOLB=SN,WT=1PT,IN=0IN,0,0,0,RS=100,IS=0,AB=0,,0¯®UBNO¯®GU2DI,1DI¯®SNX0,22DI,62.5DI¯ c1-c9 Counter 1 - ÿ| Counter 9 c0 Counter 0®BC¯ insert counter («C1») in text insert counter («C9») in text insert counter («C0») in text ®LBcursor¯®SN0¯ ®MDBO¯CURSOR MOVEMENT IN TEXT AREA ®MDNM¯ ®BOLB=SN,WT=1PT,IN=0IN,0,0,0,RS=100,IS=0,AB=0,,0¯®UBNO¯®GU2DI,1DI¯®SNX0,22DI,62.5DI¯cl Cursor Left cr Cursor Right pc Previous Char. nc Next Character®BC¯ move left one character move right one character same as cl same as cr ®SN0¯®PG¯ ®BOLB=SN,WT=1PT,IN=0IN,0,0,0,RS=100,IS=0,AB=0,,0¯®UBNO¯®GU2DI,1DI¯®EE1LI¯®SNX0,22DI,62.5DI¯ql cursor left qr cursor right cu Cursor Up cd Cursor Down ll Linear Left lr Linear Right lu Linear Up ld Linear Down pw Previous Word nw Next Word pt Previous Tab nt Next Tab el Express Left xm eXpress Middle er Express Right lb Line Beginning le Line End pl Previous Line nl Next Line ps Previous Sentence ns Next Sentence pp Previous Paragraph np Next Paragraph hm HoMe (of screen) bs Bottom of Screen mu Move Up md Move Down pu Page (screen) Up pd Page (screen) Down vu scroll Up vd scroll Down pf Previous Form nf Next Form tf Top of File bf Bottom of File®BC¯ move cursor left one character (to next line if at end) move cursor right one character (to next line if at end) move up one line move down one line move to left (inc. dead space) move to right (inc. dead space) move up one line (stay in column) move down one line (stay in col.) move to beginning of previous word move to beginning of next word move to prev. tab column on line move to next tab column on line to beg. of line, then straight up to middle character on line to end of line, beg. of next, end move to beg. of current line move to end of current line move to beg. of previous line move to beg. of next line move to beg. of previous sentence move to beg. of next sentence move to beg. of previous paragraph move to beg. of next paragraph move to first character on screen move to last character on screen scroll up one line scroll down one line scroll up one screen scroll down one screen scroll up one screen scroll down one screen move to top of previous page move to top of next page move to beginning of file move to end of file ®PG¯ ®LBdead¯®MDBO¯DEAD ACCENTS ®MDNM¯ ®BOLB=SN,WT=1PT,IN=0IN,0,0,0,RS=100,IS=0,AB=0,,0¯®UBNO¯®GU2DI,1DI¯®EE1LI¯®SNX0,22DI,62.5DI¯ s1 acute accent s2 grave accent s3 umlaut s4 circumflex s5 ° accent s6 tilde®BC¯ insert temporary dead acute accent insert temporary dead grave accent insert temporary dead umlaut insert temporary dead circumflex insert temporary dead ° insert temporary dead tilde ®SN0¯®LBdefining¯®MDBO¯DEFINING ®MDNM¯ ®BOLB=SN,WT=1PT,IN=0IN,0,0,0,RS=100,IS=0,AB=0,,0¯®UBNO¯®GU2DI,1DI¯®EE1LI¯®SNX0,22DI,62.5DI¯dc Define Column df Define Free-form dm Define Modify dn Delete, No undelete dw Define Word dl Define Line ds Define Sentence dp Define Paragraph dz Define end nb uNbreakable Block yd “Yank” Define xd “X” Define db Define Begin de Define End dd Delete block/char dz Define end®BC¯ begin column define begin/set free-form defining extend (or shrink) a block of selected text to cursor position (only with persistent selection) delete selected text without saving it on delete stack define current word define current line define current sentence define current paragraph end selecting a block if selection is in progress. designate selected block of text as unbreakable clear define clear define, don’t close window move cursor to start of defined block move cursor to end of defined block end selecting block and delete block. If no selection, delete character end selecting a block if selection is in progress.®SN0¯ ®LBdeleting¯®MDBO¯DELETING ®MDNM¯ ®BOLB=SN,WT=1PT,IN=0IN,0,0,0,RS=100,IS=0,AB=0,,0¯®UBNO¯®GU2DI,1DI¯®EE1LI¯®SNX0,22DI,62.5DI¯ rd Rub out Defined block nu delete, No Undelete nu delete, No Undelete bd Backspace Delete rc Rub out Character rw Rub out Word re Rub out to line End rl Rub out Line rs Rub out Sentence rp Rub out Paragraph ud Un-Delete up Un-Pad spaces rb Rub out word Before®BC¯ delete defined block delete selected text, don’t save for possible later undelete. delete selected text, don’t save for possible later undelete. delete previous character delete current character delete current word delete to end of current line delete entire current line delete current sentence delete current paragraph restore text from undelete buffer delete space(s) to left of cursor (up to next character) delete the word before the word the cursor is on ®SN0¯ ®PG¯ ®LBddm¯®MDBO¯DOCUMENT DISPLAY MODES®MDNM¯ ®BOLB=SN,WT=1PT,IN=0IN,0,0,0,RS=100,IS=0,AB=0,,0¯®UBNO¯®GU2DI,1DI¯®EE1LI¯®SNX0,22DI,62.5DI¯nm No Markers ef Edit Footnote/ code xp eXPanded mode wg normal mode sp Show Pg-Ln tp Toggle Pg-Ln cm Change Mode mk MarKers®MDNM¯ wz Page Layout View ®BC¯ conceal markers open note or delta cursor is on change to Show Codes View change to old Page-Line mode turn on Page-Line counter toggle Page Layout—old Page-Line mode toggle old Page-Line mode—Show Codes View toggle display of format markers and line ending markers. change to Page Layout View ®SN0¯ ®LBmath1¯®MDBO¯MATH®MDNM¯ ®BOLB=SN,WT=1PT,IN=0IN,0,0,0,RS=100,IS=0,AB=0,,0¯®UBNO¯®GU2DI,1DI¯®EE1LI¯®SNX0,22DI,62.5DI¯dt Dump Total mt.* Multiply mt,/ divide sm SuM su SUbtract®BC¯ dump total at cursor in text area multiply (*) accumulated sum by selected number divide (/) accumulated sum by selected number add number (or defined numbers) subtract number (or def. numbers) ®SN0IN¯ ®MDBO¯®LBmenuhelp¯MENU/HELP/SYSTEM ®MDNM¯ ®BOLB=SN,WT=1PT,IN=0IN,0IN,0IN,0IN,RS=100,IS=0,AB=0,,0¯®BL0¯®UBNO¯®GU0.2IN,0.1IN¯®ET1LI¯®EE1LI¯®SNX0IN,2.2IN,6.25IN¯ h@®BC¯ open NB Help ®SN0IN¯ ®LBphr¯®MDBO¯PHRASE LIBRARIES®MDNM¯ ®BOLB=SN,WT=1PT,IN=0IN,0,0,0,RS=100,IS=0,AB=0,,0¯®UBNO¯®GU2DI,1DI¯®EE1LI¯®SNX0,22DI,62.5DI¯ ad Append Def. to key sv SaVe def. to key @A ÿ| @Z @0 ÿ| @9 &A ÿ| &Z &0 ÿ| &9 sg x get Save/Get or # ®BC¯ append define to end of phrase key save defined block on phrase key insert phrase from alphabet key insert phrase from numeric key insert “ampersand phrase” insert “ampersand phrase” insert text or run program from phrase key x or # ®SN0¯ ®LBpri¯®MDBO¯PRINT MODES®MDNM¯ ®BOLB=SN,WT=1PT,IN=0IN,0,0,0,RS=100,IS=0,AB=0,,0¯®UBNO¯®GU2DI,1DI¯®EE1LI¯®SNX0,22DI,62.5DI¯ m0 Mode 0 m1 Mode 1 m2 Mode 2 m3 Mode 3 m5 Mode 5 m7 Mode 7 m8 Mode 8 m9 Mode 9 mx Mode conteXt mz Mode bold italic®BC¯ select context mode select normal mode select bold mode select underline mode select bold-underline mode select superscrlpt mode select subscript mode select italic mode type in mode at cursor - same as M0, but does not get inserted in programs type text in, or make selected text, bold italic®SN0IN¯®PG¯ ®MDBO¯®LBpri¯®LBsearch¯SEARCHING ®MDNM¯ ®BOLB=SN,WT=1PT,IN=0IN,0IN,0IN,0IN,RS=100,IS=0,AB=0,,0¯®BL0¯®UBNO¯®GU0.2IN,0.1IN¯®ET1LI¯®EE1LI¯®SNX0IN,2.2IN,6.25IN¯fd File Difference fm File Match wa WildAlphanumeric wl Wild Letter wn Wild Number ws Wild Separator ww Wild “Within” wx Wild X nn x generic wild card®BC¯ find next difference in two files find next similarity in two files any letter or number any letter any number any separator any intervening string (up to 80 characters long) any character (including space) generic Wild Card - the next character is the wild card. [see Chapter 8] ®SN0IN¯ ®MDBO¯®LBsys¯SYSTEM & MISCELLANEOUS®MDNM¯ ®BOLB=SN,WT=1PT,IN=0IN,0IN,0IN,0IN,RS=100,IS=0,AB=0,,0¯®BL0¯®UBNO¯®GU0.2IN,0.1IN¯®ET1LI¯®EE1LI¯®SNX0IN,2.2IN,6.25IN¯bk BreaK ex EXit Nota Bene co COmma ni No Interrupt no No Operation es EScape fd File Difference fm File Match xn Transpose teXt 1/2/3/4/5/6 sa Save sl Save aLL it Insert Tab << copyright/« >> high line or » nm No Markers bl Balanced Left br Balanced Right fc Force Centre fl Flush Left fr Flush Right ff Force reFresh dx Display X (off) do Display On®BC¯ stop command or user program exit program insert comma in key definition suppress non-Nota Bene effect precedes word assigned to key release selected text or close command window find next difference in two files find next similarity in two files transpose text [see Chapter 8] save file save all open files in all windows. insert a tab on command line or in text enter ÿÁ. in program or opening command brackets