IMD 1.16: 1/06/2007 13:31:04 FOGCPM.200 --FOGCPM200MENU11 COM> MENU21 COM< MENU DOCFUNCTS TXT !"#$%FUNCTS TXT&-07-07 88 -CPM200 DOCBATCH MSSD_`abcdefgPERFSTARMAN'()*+,-./0123456PERFSTARMAN789:;<=>?@ABCDEFPERFSTARMANGCALCTIPSMSS+hijklmENVELOPEMSSno-READ ME HIVERSION INFJPWCONFIGCOMzKLMNOPQRSTUVWXYZPWCONFIGDOC[RPWSWP COM\SPWMEM COM]SPWSWP COM^FOOTNOTEMSSpqrsPFTIPS MSStuvwxyz{|}~PFTIPS MSS_PFTIPS2 MSSWTIPS MSSpThis is the disk name. won't find everywhere. Also, the Perfstar manual is a must if you want to know how to run this pup! ---------------------->>> F I L E S Included: * FUNCTS.TXT (The file PW's PWBIND program uses to redifine commands) * PERFSTAR.MAN (Manual with my new command set defined, other stuff) * PWCONFIG.COM (Public Domain configurator for PW.... get it!) * PWCONFIG.DOC (Three guesses, and the first two are SPAM) * SPWSWP.COM, RPWSWP.COM, SPWMEM.COM (Three little musts, retrieve lost data from .SWPh MENU v 1.1 (C) 1985 Douglas Sears, for Kaypro II or 4/83 >> 'X' to exit, any other key to continue$>2 %=X71uH͇2H*"HH!99!6,W>> Default Drive is :A_ <<!2%WYour choice: %=!3$WpE4FMPʨSLTDRʶZX7àvڠPW.COMã!͏} PF.DATã`Name of file to format : ͓͎ qPF.COMã`Name of formatted file to print : !3%W͓ PP.COMã!͏}D`Name of file to check spelling of : !3%W͓̓UPS.COMã!6JWf͠Log in which drive? %Ͱ ʠʠ=AP G:2o!6JWDrive Logged In ã͠Directory for which drive? %Ͱʠ :=AP g͛?j͑Type any character to return to menu͑(hit ESC to leave directory showing)%  !22W (E,F,P,S,D,L,R,Z,X)ã!]͠Rename file from : ͓Ͱ\!HF#f8ͦ\< ͠@!mͰ!3%WTo new name : ͓!HF#f#~:+ ##l:\ͦ<(I!3%W!la exists. Delete it? (y/n)%=Y l< Wha..?\< @`T renamed to !laã!]͠Name of file to delete : ͓Ͱ\!HF#f8ͦ]?\< ͠@`T deletedã͛>2T not foundã!3%W!\a~( @6>:6#̈́>.6̈́f6#>H8(ûà*!*!H^#6>  w##~+: ~=AP 7##:<!3%WIllegal drive name. Try again...~#. *=*(Y*(>?Ͱà~ #:_:H_͉ ] }o<2H(2H2\\<(2|<:H<2Hʰ͇( ͉>2Hð!3%WCan't find oͲ}!3%WMust pick a letter from the menu2C  x OZ*H|ygo Type any character to continue%> 6> 6>6!2%Wp!2%W!3%WpPF DATN\\@!##speedy MENU v 1.1 for the Kaypro IIA! E - Edit a fileA!$ F - Format a file:B!B P - Print a formatted fileB!i S - Check spelling*C! L - Log in a new default drivezC! D - Directory of diskC! R - Rename a fileD! Z - Delete a fileD!   X - eXit to the operating system ٍԍލ΍ލލȏȍލٍ؍ȍفɍލ⃍ՍȁHB!7   ~#hB!J  B!]  XC!p  C!  C!  HD!  D!  :E!  E!  E!  *F!  N;a@! FORMATTING MENUA! C - send to the ConsoleA! ##D - format for a non-default Device:B!   P - send directly to the PrinterB!> %%O - give Output file a different name*C!p V - Verbatim formattingzC! A - pause before each pageD! G - Go (start formatting)jD! X - eXit to the main menuHN;c@!   PRINT MENUA!( N - print starting at some pageA!T !!O - send to specified Output port:B! P - Pause before each pageB! C - print more than one Copy*C! G - Go (start printing)zC! X - eXit to the main menu@!  Hint: use the@!6CONSOLE port to see(A!Va .FIN file on thexA!uscreen. HN;c@!  SPELLER MENUA!A - Add words to the dictionaryA!&&B - different extension on Backup file:B!D - use specified DictionaryB!7''L - List misspelled words on the screen*C!k&&N - make No backup of the checked filezC!%%O - Output misspelled words to a fileC!%%P - use specified Prefix/suffix tablejD!G - Go (start spelling checker)D!.X - eXit to the main menu H!@@6 >%!@hPw>%!O@h>=P!@͆w#>=P!0G͆>|!@h>|!%Ah>_1!@͆>-1!F͆>|!P@h>|!@h>~N!@͆>~N!1G͆>:!@h>:!#Ah>.0!@͆>./!F͆6~#6(_a{ x~6#"ca= > 6-f!fxH !2%W0f!2%WFile name(s) to edit: !3$W>KH*H~<O2HSHc+ 7 V V V  *H~ >  [H.06 O!H<Gy7>6> 6>6=<[HO?ɯPW COM!JM!3$W.f!HV_C(+DPTOʖVA'GFXʠʠÊ:H 9:H :H((>2H!%)WA!'*WG!)*WG!UÊ:HQm`Device (list at right) : >'I8(!Xͻ>2H!&)WAÊ:H 9:H :H((>2H!')WA!)*WG!%*WG!^Ê:H i:H :H(X`Name of output file : >'I8-(+!aͻ>2H!))WA!'*WG!%*WGÊ:H >2H!*)WA!eÊ:H >2H!+)WA!hÊ!H~<O> !H~(#O!}22|\:29I:2:I!"XWDEVICES !#VW>2|\(S*c,"ca:|=G:9I  >6:|=G::I > 6!oM!;IV_NQOʤPC GFXʠʠ(:;I J`Page number to start printing at: 'I(!zͻ>2;I!%)WA(:? >'I8(!ͻ>22=I!')WA(:>I C`Number of copies to print: 'I(!ͻ>2>I!()WA(!M!?IV_AʛBʺDLQNpOʏPGFXʠʠc:?I !>2?I!%)WAc:@I @`New extension : >'I8(!ͻ>2@I!&)WAc:AI E`Name of dictionary : >'I8(!ͻ>2AI!')WAc:BI !>2BI!()WAc:CI !>2CI!*)WAc:DI c`File name for output : >'I87(5:BI !!(*WG!ͻ>2DI>2BI!+)WAc:EI =`Table name : >'I8(!ͻ>2EI!,)WAc* xH ɯ2Hw#!4$Wͥ`Pick a letter from the menu above:%=!6*W(f!HF#H> 6!HF#H!'IN#yHG!6*W(can't send to two destinations)SH+ V V [H0:G[H0x.6PF COM -C -DEV -P -O -V -PAUSEPP COM -PAGE -PORT -PAUSE -PS COM -A -B -D -L -X -O :H2H*. !&"+!%"=!xH͏ :H_ !\I!!#G  Loading files...$!I :H_ >2OI>?2h!\^##~2JI#~2II##^#VSGI#^#V"MI*GI#8W+}(z i`:JI()= "PI*MI#)nI"dI"_I*{zn>?!hw#w#w!"KI"hI"jI\ +I*XI*VI[RIR(*aI[TIR*RIë!nI"_I*KI*dI"]I"lI*KI+"KI|(*_I^#V#N#F = ##"_I*_I^#V#"_I*]I "]I f*jI"jI*hI#"hI|}*KI|ʃ2cI*hI|ʧ2OI:\@͊*jI͊*]I>w#*hI 0!@ 8y282cIo&"ZI*lI~(;>.V#^͊>k*hI+"hI([hIz([ZI*lI "lI*hI|(X!85 Z' Any key for more, or ESC to quit [*lI[ZI"lI:OI :\@2[> > >|> _~# *PI͊/lI) ) Nq#7lI) ) N#F^#V_V˺ ˿# ^#~))))!IIo&:II/oɯ2\Iͦͦͦ>000x0 :\I>0:cI2\IT])))Driv Erro NO FILE ON DRIVE USED:k FILES: FREE:k User 0!@@0 P0  H˿WSMSGS OVR`WWSSPELL OVR`W[WSSHORT OVR6WSINDEX XCL`WWC EXE`W%README TXT`PwINTERNALDCTh dMAIN DCTh <: MENU v 2.1 >> 'X' to exit, any other key to continue$>2 =UX1h2*"ͦA!6,o͈!6,o2>> Default Drive is :A_2 <<!2%o2Your choice: (E,F,P,S,L,D,R,Z,X)!22o=U!3$o͈E$F=PʞSLVDRʗZʩXj͎g2PW.COMv!p^ 2PF.DATvA2Name of file to format : tm ͉|ͦ2PF.COMvA2Name of formatted file to print : !3%otͼ 2|ͦ2PP.COMv!p^@A2Name of file to check spelling of : !3%ot͹ m|ͦ2PS.COMv!6Jo~́2Log in which drive? =͑ jjUA1 G:2PA!6Jo2Drive Logged In v́2Directory for which drive? =͑j :UA1 H|?ͱ͂r2Type any character to return to menur2(hit ESC to leave directory showing)=g2 v!]ͧ́2Rename file from : t͑\!F#GͶ8͇\< ́!!mͧ͑!3%o2To new name : t!F#G#~:+ ##l:\͇<(I!3%o!lB2 exists. Delete it? (y/n)=UYjl< 2Wha..?\< !A52 renamed to !lBv!]ͧ́2Name of file to delete : t͑\!F#GͶ8͇] \< ́!A52 deletedv|>252 not foundv!3%o!\B~( @N>:N#e>.NeGN#>8(Üj ! !^#6>  ͱw##~+: ~UA1 7##:<!3%o2Illegal drive name. Try again...~#. U*(:*(>?͑Á~ #:_:_j ] ^P<2(22\\<(2|<:<2ʑh( j>2ÑA!3%o2Can't find P^!3%o2Must pick a letter from the menu2$  x O;*|yHP 2Type any character to continue=> N> N>N!2%o͈!2%o!3%o͈PF DAT`!!,o2speedy MENU v 2.1 for the Kaypro!%*o2E - Edit a file!&*o2F - Format a file!'*o2P - Print a formatted file!(*o2S - Check spelling!**o2L - Log in a new default drive!+*o2D - Directory of disk!,*o2R - Rename a file!-*o2Z - Delete a file!/*o2X - eXit to the operating system!&Xo!  x~N#!'Xo!  !(Xo!  !*Xo!  !+Xo!  !,Xo!  !-Xo!  !.Xo!3  !0Zo!@  !1Zo!M  !2Zo!Z  !3Zo!j  Ʌٍԍލ΍ލލȏȍލٍ؍ȍفɍލ⃍Սȁ!!1o2FORMATTING MENU!%*o2C - send to the Console!&*o2D - format for a non-default Device!'*o2P - send directly to the Printer!)*o2O - give Output file a different name!**o2V - Verbatim formatting!+*o2A - pause before each page!-*o2G - Go (start formatting)!.*o2X - eXit to the main menu!!3o2PRINT MENU!%*o2N - print starting at some page!&*o2O - send to specified Output port!'*o2P - Pause before each page!(*o2C - print more than one Copy!**o2G - Go (start printing)!+*o2X - eXit to the main menu !!3o2SPELLER MENU!%*o2A - Add words to the dictionary!&*o2B - different extension on Backup file!'*o2D - use specified Dictionary!(*o2L - List misspelled words on the screen!**o2N - make No backup of the checked file!+*o2O - Output misspelled words to a file!,*o2P - use specified Prefix/suffix table!.*o2G - Go (start spelling checker)!/*o2X - eXit to the main menu >N! o>=Nt N!7 o>=Nt!##o>|͚N*{#o!#Uo>|͚!"$o>_1t!5$o>-1t>N! o>~Nt!7 o>~Nt!##o>:͚!#So>:͚!"#o>.1t!5$o>./tN~#N(_a{ x~N#"{y'= > N-~!~ !2%o0~!2%o2File name(s) to edit: !3$o>K*~<O2S{C 7 n n n  *~ >  [F0N O!<Gy7>N> N>N=<[gWɯPW COM!be!3$o.~!nwC(+DPlOʮV A?G^Xggâ: 9: :((>2!%)oY!'*o_!)*o_!mâ:iͅA2Device (list at right) : >?8(!p>2!&)oYâ: 9: :((>2!')oY!)*o_!%*o_!vâ: i: :(XA2Name of output file : >?8-(+!y>2!))oY!'*o_!%*o_â: >2!*)oY!}â: >2!+)oY!â!~<O> !~(#O!}22|\:2Q:2R!"Xo2DEVICES !#Vo>2|\(S*{,"{y'':|=G:Q 2 >N:|=G:R > N2!e!SnwNiOʼPC!G^Xgg@:S JA2Page number to start printing at: ?(!>2S!%)oY@:T =A2Which port ? >?8(!>2T!&)oY@:U !>2U!')oY@:V CA2Number of copies to print: ?(!>2V!()oY@!e!WnwAʳBDLiNʈOʧPG^Xgg{:W !>2W!%)oY{:X @A2New extension : >?8(!>2X!&)oY{:Y EA2Name of dictionary : >?8(!>2Y!')oY{:Z !>2Z!()oY{:[ !>2[!*)oY{:\ cA2File name for output : >?87(5:Z !!(*o_!>2\>2Z!+)oY{:] =A2Table name : >?8(!>2]!,)oY{2*2  ɯ2w#!4$oͽA2Pick a letter from the menu above:=U!6*o(~!F#`> N!F#`!?N#yG!6*o2(can't send to two destinations)SC n n [0 : G[0xFN PF COM -C -DEV -P -O -V -PAUSEPP COM -PAGE -PORT -PAUSE -PS COM -A -B -D -L -X -O :2`*. !&"C!%"U!p :`_ !\a!!;G  Loading files...$!a :`_ >2g>?2h!\^##~2b#~2a##^#VS_#^#V"e*_#8W+}(z i`:b()= "h*e#)"|"w*{z҆>?!hw#w#w!"c""\<ʏ=! o~ } o: #*w w#Gw#w#"w*c#"c! *{zcMemor*c}ʛ2{[|! s#r# +} *c"y+}*y}"j#"l[jR"n"p> C*p/*n[jR(*y[lR*j!"w*c*|"u"*c+"c|(*w^#V#N#F U ##"w*w^#V#"w*u "u ~*"*#"|}*c|ʛ22{*|ʿ2g:\@,͢*͢)*u>w#* 0!@ 8y2P2{o&"r*~(;>.V#^͢>k*+"([z([r* "*|(X!P5 r' Any key for more, or ESC to quit s*[r":g :\@2s> > >|> _~#8*h͢G) ) Nq#7) ) N#F^#V_V˺ ˿# ^#~))))!ao&:a/oɯ2t;;;>000x0 :t>0:{2tT])))Driv Erro NO FILE ON DRIVE USED:k FILES: FREE:k User ETINDE Set Indent Column. 348 X-\ MNOTIMPL 'Unknown command'. 349 X-] MSETFILL Set Fill Column. 350 X-^ MNOTIMPL 'Unknown command'. 351 X-_ MNOTIMPL 'Unknown command'. 352 X-` MNOTIMPL 'Unknown command'. 353 X-a MNOTIMPL 'Unknown command'. 354 X-b MSETMRK Sets the mark at the point. 355 X-c MYANK Yank Kill Buffer. 356 X-d MFILEWRI Write File. 357 X-e MMAKEDEL Turn on + in modeline. 358 X-f MLSTBUFF List Buffers. 359 X-g MABORT Cancel the curre MENU.COM v 1.1 & 2.1 by Douglas Sears, 6 Nov 85 This program is designed to be used instead of the Menu program supplied with Perfect Writer (trademark of Perfect Software, Inc.), versions up to 1.20. It is smaller, much faster, and has fewer bugs and more error-checking (for example, it won't let you specify an illegal drive name). Improvements over v 1.0: (1) full 15-character printer device names are allowed (thanks to Robert Tull, the first to spot the problem), (2) directory listings larger than 64 files pause after each page, and (3) PW.COM etc. are searched for in the usual ZCPR path -- current drive & user, then A:/current user, then A0:. Version 1.1 runs only on the older models of Kaypro II or 4 (the ones without graphics, non-glare screens, or half-height drives), because it writes directly to the video RAM, for speed. Version 2.1 is a little slower, but will run on any CP/M Kaypro. Otherwise, the two versions are identical. To avoid the "any other key" message when starting up the menu, you can hit a key before the message appears. Just tap the return key TWICE, like this: A>menu (The "any other key" message is there so as not to lose any error messages the formatter might put out.) If, when formatting, you have been avoiding using printer devices other than the default because you can't remember the device names, take heart! This speedy-MENU lists the names to choose from, as soon as you pick the "Device" option, and points out what the default printer and console devices are. Here's a useful hint: to see what your file will look like on the printed page, complete with accurate page breaks, FIRST pick the C option for viewing on the console, THEN pick the D option and give the name of the printer device you'll be using, then pick G, and your file will appear on the screen as if printed (but, of course, without underlines, superscripts, etc.). Please notice that this is COMMERCIAL software, but in the form of "shareware": you get the program by copying it from a friend or a bulletin board, not by mail-order. I am hoping that the lower distribution costs of shareware will make it feasible to write good low-cost programs specifically for the relatively small number of Kaypro owners. If you like this program, but don't send money, you'll have no one but yourself to blame if I give up and join the rest of the programmers who have decided that MS/PC-DOS is where you can make a living. Douglas Sears P.O. Box 5285 Eugene, OR 97405 USA nd console devices are. Here's a useful hint: to see what your file will look like on the printed p(C) 1982 Perfect Software, Inc. All rights reserved. Fill Mode is the default mode. char name function description 0 C-@ MYANK Yank Kill Buffer. 1 C-A BWORD Backward Word. 2 C-B MFILLPAR Fill Paragraph. 3 C-C MNEXTPAG View Next Screen. 4 C-D MNEXTCHA Forward Character. 5 C-E MPREVLIN Previous Line. 6 C-F FWORD Forward Word. 7 C-G MDELCHAR Deletes Next Character. 8 C-H MPREVCHA Backwards one character. 9 MINSERT Inserts the character at the point. 10 MPRVOTHR View other window's previous screen. 11 C-K MCTRLX eXtended Command Prefix. 12 C-L MLOWWORD Lowercase Word. 13 MNEWLIN Carriage Return. 14 C-N MNXTOTHR View other window's next screen. 15 C-O MCAPWORD Capitalize Word. 16 C-P MUPWORD Uppercase Word. 17 C-Q MMETA Meta Prefix. 18 C-R MPREVPAG View Previous Screen. 19 C-S MPREVCHA Backwards one character. 20 C-T MDELWORD Kill Forward Word. 21 C-U MSWITCHT Switch to another buffer. 22 C-V MFPARA Forward Paragraph. 23 C-W MNEWDSP Scroll-Redisplay. 24 C-X MNEXTLIN Next Line. 25 C-Y MDELELIN Kill Entire Line. 26 C-Z MBPARA Back Paragraph. 27 C-[ MMETA Meta Prefix. 28 C-\ MDELINDE Delete Indentation on current line. 29 C-] MABORT Cancel the current prefix. 30 C-^ MTOGLC Toggle case of character at point. 31 C-_ MINDREST Indent rest of line same as this. 32 MINSERT Inserts the character at the point. 33 ! MINSERT Inserts the character at the point. 34 " MINSERT Inserts the character at the point. 35 # MINSERT Inserts the character at the point. 36 $ MINSERT Inserts the character at the point. 37 % MINSERT Inserts the character at the point. 38 & MINSERT Inserts the character at the point. 39 ' MINSERT Inserts the character at the point. 40 ( MINSERT Inserts the character at the point. 41 ) MINSERT Inserts the character at the point. 42 * MINSERT Inserts the character at the point. 43 + MINSERT Inserts the character at the point. 44 , MINSERT Inserts the character at the point. 45 - MINSERT Inserts the character at the point. 46 . MINSERT Inserts the character at the point. 47 / MINSERT Inserts the character at the point. 48 0 MINSERT Inserts the character at the point. 49 1 MINSERT Inserts the character at the point. 50 2 MINSERT Inserts the character at the point. 51 3 MINSERT Inserts the character at the point. 52 4 MINSERT Inserts the character at the point. 53 5 MINSERT Inserts the character at the point. 54 6 MINSERT Inserts the character at the point. 55 7 MINSERT Inserts the character at the point. 56 8 MINSERT Inserts the character at the point. 57 9 MINSERT Inserts the character at the point. 58 : MINSERT Inserts the character at the point. 59 ; MINSERT Inserts the character at the point. 60 < MINSERT Inserts the character at the point. 61 = MINSERT Inserts the character at the point. 62 > MINSERT Inserts the character at the point. 63 ? MINSERT Inserts the character at the point. 64 @ MINSERT Inserts the character at the point. 65 A MINSERT Inserts the character at the point. 66 B MINSERT Inserts the character at the point. 67 C MINSERT Inserts the character at the point. 68 D MINSERT Inserts the character at the point. 69 E MINSERT Inserts the character at the point. 70 F MINSERT Inserts the character at the point. 71 G MINSERT Inserts the character at the point. 72 H MINSERT Inserts the character at the point. 73 I MINSERT Inserts the character at the point. 74 J MINSERT Inserts the character at the point. 75 K MINSERT Inserts the character at the point. 76 L MINSERT Inserts the character at the point. 77 M MINSERT Inserts the character at the point. 78 N MINSERT Inserts the character at the point. 79 O MINSERT Inserts the character at the point. 80 P MINSERT Inserts the character at the point. 81 Q MINSERT Inserts the character at the point. 82 R MINSERT Inserts the character at the point. 83 S MINSERT Inserts the character at the point. 84 T MINSERT Inserts the character at the point. 85 U MINSERT Inserts the character at the point. 86 V MINSERT Inserts the character at the point. 87 W MINSERT Inserts the character at the point. 88 X MINSERT Inserts the character at the point. 89 Y MINSERT Inserts the character at the point. 90 Z MINSERT Inserts the character at the point. 91 [ MINSERT Inserts the character at the point. 92 \ MINSERT Inserts the character at the point. 93 ] MINSERT Inserts the character at the point. 94 ^ MINSERT Inserts the character at the point. 95 _ MINSERT Inserts the character at the point. 96 ` MINSERT Inserts the character at the point. 97 a MINSERT Inserts the character at the point. 98 b MINSERT Inserts the character at the point. 99 c MINSERT Inserts the character at the point. 100 d MINSERT Inserts the character at the point. 101 e MINSERT Inserts the character at the point. 102 f MINSERT Inserts the character at the point. 103 g MINSERT Inserts the character at the point. 104 h MINSERT Inserts the character at the point. 105 i MINSERT Inserts the character at the point. 106 j MINSERT Inserts the character at the point. 107 k MINSERT Inserts the character at the point. 108 l MINSERT Inserts the character at the point. 109 m MINSERT Inserts the character at the point. 110 n MINSERT Inserts the character at the point. 111 o MINSERT Inserts the character at the point. 112 p MINSERT Inserts the character at the point. 113 q MINSERT Inserts the character at the point. 114 r MINSERT Inserts the character at the point. 115 s MINSERT Inserts the character at the point. 116 t MINSERT Inserts the character at the point. 117 u MINSERT Inserts the character at the point. 118 v MINSERT Inserts the character at the point. 119 w MINSERT Inserts the character at the point. 120 x MINSERT Inserts the character at the point. 121 y MINSERT Inserts the character at the point. 122 z MINSERT Inserts the character at the point. 123 { MINSERT Inserts the character at the point. 124 | MINSERT Inserts the character at the point. 125 } MINSERT Inserts the character at the point. 126 ~ MINSERT Inserts the character at the point. 127 MRDELCHA Delete Previous Character. 128 M-C-@ MTWOWIND Two Window Mode. 129 M-C-A MQRYRPLC Query Replace. 130 M-C-B MINCRSEA Reverse Search. 131 M-C-C MTOEND End of buffer. 132 M-C-D MFLINE End of Line. 133 M-C-E MBSENT Beginning of sentence. 134 M-C-F MINCSEAR Forward Search. 135 M-C-G MREPLACE Global Replace. 136 M-C-H MNOTIMPL 'Unknown command'. 137 M- MINDNL Indent Subsequent New Line Same As This. 138 M- MHELP Call Help Information Onto Screen. 139 M-C-K MCLOSEWH Close Up Whitespace Including . 140 M-C-L MNOTIMPL 'Unknown command'. 141 M- MOPENLIN Open line. 142 M-C-N MNEWDSP Scroll-Redisplay. 143 M-C-O MCNTRLIN Center Line. 144 M-C-P MSWAPMRK Swap Point and Mark. 145 M-C-Q MARG Universal Argument Prefix. 146 M-C-R MTOSTART Beginning of Buffer. 147 M-C-S MBLINE Point to beginning of line. 148 M-C-T MDELSENT Kill Sentence. 149 M-C-U MNOTIMPL 'Unknown command'. 150 M-C-V MNOTIMPL 'Unknown command'. 151 M-C-W MSWAPWOR Transpose Word. 152 M-C-X MFSENT Forward Sentence. 153 M-C-Y MDELLIN Kill Line. 154 M-C-Z MTRIMWHI Globally Delete Trailing Whitespace. 155 M-C-[ MDROPLIN Drop remainder of line vertically. 156 M-C-\ MNOTIMPL 'Unknown command'. 157 M-C-] MOPENIND Indent Leading New Line Same As This. 158 M-C-^ MGROWWIN Grow current window. 159 M-C-_ MNOTIMPL 'Unknown command'. 160 M- MABORT Cancel the current prefix. 161 M-! MONEWIND One Window Mode. 162 M-" MQUOTE Quote Character. 163 M-#  MSWPWIND Switch to other window. 164 M-$ MNOTIMPL 'Unknown command'. 165 M-% MNOTIMPL 'Unknown command'. 166 M-& MNOTIMPL 'Unknown command'. 167 M-' MNOTIMPL 'Unknown command'. 168 M-( MNOTIMPL 'Unknown command'. 169 M-) MNOTIMPL 'Unknown command'. 170 M-* MNOTIMPL 'Unknown command'. 171 M-+ MNOTIMPL 'Unknown command'. 172 M-, MNOTIMPL 'Unknown command'. 173 M-- MNOTIMPL 'Unknown command'. 174 M-. MNOTIMPL 'Unknown command'. 175 M-/ MNOTIMPL 'Unknown command'. 176 M-0 MARGDGT Numeric Digit Argument Prefix. 177 M-1 MONEWIND One Window Mode. 178 M-2 MTWOWIND Two Window Mode. 179 M-3 MSWPWIND Switch to other window. 180 M-4 MARGDGT Numeric Digit Argument Prefix. 181 M-5 MARGDGT Numeric Digit Argument Prefix. 182 M-6 MGROWWIN Grow current window. 183 M-7 MARGDGT Numeric Digit Argument Prefix. 184 M-8 MARGDGT Numeric Digit Argument Prefix. 185 M-9 MARGDGT Numeric Digit Argument Prefix. 186 M-: MNOTIMPL 'Unknown command'. 187 M-; MNOTIMPL 'Unknown command'. 188 M-< MTOSTART Beginning of Buffer. 189 M-= MNOTIMPL 'Unknown command'. 190 M-> MTOEND End of buffer. 191 M-? MNOTIMPL 'Unknown command'. 192 M-@ MNOTIMPL 'Unknown command'. 193 M-A MQRYRPLC Query Replace. 194 M-B MINCRSEA Reverse Search. 195 M-C MTOEND End of buffer. 196 M-D MFLINE End of Line. 197 M-E MBSENT Beginning of sentence. 198 M-F MINCSEAR Forward Search. 199 M-G MREPLACE Global Replace. 200 M-H MNOTIMPL 'Unknown command'. 201 M-I MNOTIMPL 'Unknown command'. 202 M-J MHELP Call Help Information Onto Screen. 203 M-K MCLOSEWH Close Up Whitespace Including . 204 M-L MNOTIMPL 'Unknown command'. 205 M-M MOPENLIN Open line. 206 M-N MNEWDSP Scroll-Redisplay. 207 M-O MCNTRLIN Center Line. 208 M-P MSWAPMRK Swap Point and Mark. 209 M-Q MARG Universal Argument Prefix. 210 M-R MTOSTART Beginning of buffer. 211 M-S MBLINE Point to beginning of line. 212 M-T MDELSENT Kill Sentence. 213 M-U MNOTIMPL 'Unknown command'. 214 M-V MNOTIMPL 'Unknown command'. 215 M-W MSWAPWOR Transpose Word. 216 M-X MFSENT Forward Sentence. 217 M-Y MDELLIN Kill Line. 218 M-Z MTRIMWHI Globally Delete Trailing Whitespace. 219 M-[ MDROPLIN Drop remainder of line vertically. 220 M-\ MDELWHIT Delete Whitespace. 221 M-] MOPENIND Indent Leading New Line Same As This. 222 M-^ MGROWWIN Grow current window. 223 M-_ MNOTIMPL 'Unknown command'. 224 M-` MNOTIMPL 'Unknown command'. 225 M-a MQRYRPLC Query Replace. 226 M-b MINCRSEA Reverse Search. 227 M-c MTOEND End of buffer. 228 M-d MFLINE End of Line. 229 M-e MBSENT Beginning of sentence. 230 M-f MINCSEAR Forward Search. 231 M-g MREPLACE Global Replace. 232 M-h MNOTIMPL 'Unknown command'. 233 M-i MNOTIMPL 'Unknown command'. 234 M-j MHELP Call Help Information Onto Screen. 235 M-k MCLOSEWH Close Up Whitespace Including <NL>. 236 M-l MNOTIMPL 'Unknown command'. 237 M-m MOPENLIN Open line. 238 M-n MNEWDSP Scroll-Redisplay. 239 M-o MCNTRLIN Center Line. 240 M-p MSWAPMRK Swap Point and Mark. 241 M-q MARG Universal Argument Prefix. 242 M-r MTOSTART Beginning of buffer. 243 M-s MBLINE Point to beginning of line. 244 M-t MDELSENT Kill Sentence. 245 M-u MNOTIMPL 'Unknown command'. 246 M-v MNOTIMPL 'Unknown command'. 247 M-w MSWAPWOR Transpose Word. 248 M-x MFSENT Forward Sentence. 249 M-y MDELLIN Kill Line. 250 M-z MTRIMWHI Globally Delete Trailing Whitespace. 251 M-{ MNOTIMPL 'Unknown command'. 252 M-| MNOTIMPL 'Unknown command'. 253 M-} MNOTIMPL 'Unknown command'. 254 M-~ MNOTIMPL 'Unknown command'. 255 M- MRDELWOR Kill Previous Word. 256 X-C-@ MNOTIMPL 'Unknown command'. 257 X-C-A MNOTIMPL 'Unknown command'. 258 X-C-B MSETMRK Sets the mark at the point. 259 X-C-C MYANK Yank Kill Buffer. 260 X-C-D MFILEWRI Write File. 261 X-C-E MMAKEDEL Turn on + in modeline. 262 X-C-F MLSTBUFF List Buffers. 263 X-C-G MABORT Cancel the current prefix. 264 X-C-H MNOTIMPL 'Unknown command'. 265 X- MSETTABS Set Tab Stops. 266 X- MMAKEDEL Turn on + in Mode Line. 267 X-C-K MCOPYRGN Copy Region to Kill Buffer. 268 X-C-L MKILLBUF Delete Buffer. 269 X- MDELMODE Delete Mode from Mode List. 270 X-C-N MFINDFIL Find File. 271 X-C-O MNOTIMPL 'Unknown command'. 272 X-C-P MMRKPARA Mark Whole Paragraph. 273 X-C-Q MEXIT Exit Perfect Writer. 274 X-C-R MINSSFI Insert File. 275 X-C-S MFILESAV Save File. 276 X-C-T MGOSPELL Call The Spelling Checker From PW. 277 X-C-U MFILEREA Read File. 278 X-C-V MYANK Yank Kill Buffer. 279 X-C-W MWRTRGN Write Region to file. 280 X-C-X MEXIT Exit Perfect Writer. 281 X-C-Y MDELRGN Delete Region. 282 X-C-Z MNOTIMPL 'Unknown command'. 283 X-C-[ MSETINDE Set Indent Column. 284 X-C-\ MNOTIMPL 'Unknown comma nd'. 285 X-C-] MSETFILL Set Fill Column. 286 X-C-^ MNOTIMPL 'Unknown command'. 287 X-C-_ MNOTIMPL 'Unknown command'. 288 X- MNOTIMPL 'Unknown command'. 289 X-! MNOTIMPL 'Unknown command'. 290 X-" MNOTIMPL 'Unknown command'. 291 X-# MNOTIMPL 'Unknown command'. 292 X-$ MNOTIMPL 'Unknown command'. 293 X-% MNOTIMPL 'Unknown command'. 294 X-& MNOTIMPL 'Unknown command'. 295 X-' MNOTIMPL 'Unknown command'. 296 X-( MNOTIMPL 'Unknown command'. 297 X-) MNOTIMPL 'Unknown command'. 298 X-* MWHATVER Echos the version and release date. 299 X-+ MNOTIMPL 'Unknown command'. 300 X-, MNOTIMPL 'Unknown command'. 301 X-- MNOTIMPL 'Unknown command'. 302 X-. MNOTIMPL 'Unknown command'. 303 X-/ MNOTIMPL 'Unknown command'. 304 X-0 MNOTIMPL 'Unknown command'. 305 X-1 MNOTIMPL 'Unknown command'. 306 X-2 MNOTIMPL 'Unknown command'. 307 X-3 MNOTIMPL 'Unknown command'. 308 X-4 MNOTIMPL 'Unknown command'. 309 X-5 MNOTIMPL 'Unknown command'. 310 X-6 MNOTIMPL 'Unknown command'. 311 X-7 MNOTIMPL 'Unknown command'. 312 X-8 MNOTIMPL 'Unknown command'. 313 X-9 MNOTIMPL 'Unknown command'. 314 X-: MNOTIMPL 'Unknown command'. 315 X-; MNOTIMPL 'Unknown command'. 316 X-< MUNDNTRG Undent Region. 317 X-= MPRINTPO Print Current Position. 318 X-> MINDNTRG Indent Region. 319 X-? MNOTIMPL 'Unknown command'. 320 X-@ MNOTIMPL 'Unknown command'. 321 X-A MNOTIMPL 'Unknown command'. 322 X-B MSETMRK Sets the mark at the point. 323 X-C MYANK Yank Kill Buffer. 324 X-D MFILEWRI Write File. 325 X-E MMAKEDEL Turn on + in modeline. 326 X-F MLSTBUFF List Buffers. 327 X-G MABORT Cancel the current prefix. 328 X-H MNOTIMPL 'Unknown command'. 329 X-I MSETTABS Set Tab Stops. 330 X-J MMAKEDEL Turn on + in Mode Line. 331 X-K MCOPYRGN Copy Region to Kill Buffer. 332 X-L MKILLBUF Delete Buffer. 333 X-M MADDMODE Add Mode To Mode List. 334 X-N MFINDFIL Find File. 335 X-O MNOTIMPL 'Unknown command'. 336 X-P MMRKPARA Mark Whole Paragraph. 337 X-Q MEXIT Exit Perfect Writer. 338 X-R MINSSFI Insert File. 339 X-S MFILESAV Save File. 340 X-T MGOSPELL Call The Spelling Checker From PW. 341 X-U MFILEREA Read File. 342 X-V MYANK Yank Kill Buffer. 343 X-W MWRTRGN Write Region to file. 344 X-X MEXIT Exit Perfect Writer. 345 X-Y MDELRGN Delete Region. 346 X-Z MNOTIMPL 'Unknown command'. 347 X-[ MSETINDE Set Indent Column. 348 X-\ MNOTIMPL 'Unknown command'. 349 X-] MSETFILL Set Fill Column. 350 X-^ MNOTIMPL 'Unknown command'. 351 X-_ MNOTIMPL 'Unknown command'. 352 X-` MNOTIMPL 'Unknown command'. 353 X-a MNOTIMPL 'Unknown command'. 354 X-b MSETMRK Sets the mark at the point. 355 X-c MYANK Yank Kill Buffer. 356 X-d MFILEWRI Write File. 357 X-e MMAKEDEL Turn on + in modeline. 358 X-f MLSTBUFF List Buffers. 359 X-g MABORT Cancel the current prefix. 360 X-H MNOTIMPL 'Unknown command'. 361 X-i MSETTABS Set Tab Stops. 362 X-j MMAKEDEL Turn on + in Mode Line. 363 X-k MCOPYRGN Copy Region to Kill Buffer. 364 X-l MKILLBUF Delete Buffer. 365 X-m MADDMODE Add Mode To Mode List. 366 X-n MFINDFIL Find File. 367 X-o MNOTIMPL 'Unknown command'. 368 X-p MMRKPARA Mark Whole Paragraph. 369 X-q MEXIT Exit Perfect Writer. 370 X-r MINSSFI Insert File. 371 X-s MFILESAV Save File. 372 X-t MGOSPELL Call The Spelling Checker From PW. 373 X-u MFILEREA Read File. 374 X-v MYANK Yank Kill Buffer. 375 X-w MWRTRGN Write Region to file. 376 X-x MEXIT Exit Perfect Writer. 377 X-y MDELRGN Delete Region. 378 X-z MNOTIMPL 'Unknown command'. 379 X-{ MSETINDE Set Indent Column. 380 X-| MNOTIMPL 'Unknown command'. 381 X-} MSETFILL Set Fill Column. 382 X-~ MNOTIMPL 'Unknown command'. 383 X- MNOTIMPL 'Unknown command'. fers. 359 X-g MABORT Cancel the curre@PAGEHEADING(center="P E R F S T A R ** Making Perfect Writer Act Like Wordstar", line="PerfStar Manual *** Jon Trott") @FLUSHLEFT[ \\\\ >>>> PPPPPPP EEEEEEEE RRRRRRR FFFFFFFF //// PP PP EE RR RR FF \\\\ PP PP EE RR RR FF >>>> PPPPPPP EEEEEE RRRRRRR FFFFFF //// PP EE RR RR FF \\\\ PP EE RR RR FF >>>> PP EEEEEEEE RR RR FF //// \\\\ SSSSSS TTTTTTTT AA RRRRRRR >>>> SS SS TT AAAA RR RR //// SS TT AA AA RR RR \\\\ SSSSSS TT AA AA RRRRRRR >>>> SS TT AAAAAAAA RR RR //// SS SS TT AA AA RR RR \\\\ SSSSSS TT AA AA RR RR >>>> //// Jon Trott 4707 N. Malden Chicago, IL   60640 (312) 989-2080 October 5, 1986 Updated March 11, 1987] @NEWPAGE @CENTER( Introduction: ============ @B[(This file was written using PERFSTAR) //// \\\\ <<<< P E R F E C T S T A R >>>> \\\\ //// ===================================== How to Make Perfect Writer Act Like Wordstar =====================================]) In brief, this file is an explanation on how to create a version of Perfect Writer that responds to the same basic keystroke commands (cursor movement, blocking, and file management) Wordstar responds to; the second, accompanying file, FUNCTS.TXT, is the actual file accessed by the Perfect Writer companion program, PWBIND.COM to redifine PW's key commands. Kaypro computers (until '84) had bundled copies of both Wordstar and Perfect Writer, and Kaypro 1's still do. If you are a Wordstar fan who'd at least like to check out Perfect Writer's ability without learning a whole new command set, go ahead and try PERFSTAR..... @NEWPAGE @CENTER(@B[BUT FIRST, WHY BOTHER? ======================]) Why would anyone want to "mess up" a perfectly (pun intentional) good program like Perfect Writer by redefining its editing commands to another almost totally incompatible word processor? It doesn't make much sense, unless, of course, that program is the almost universally known Wordstar. In other words, veteran Perfect Writer users will find this idea WORSE THAN USLESS; it is for the majority of users who learned Wordstar and might want to give that "second" program a serious look. So what can Perfect Writer do that Wordstar can't? @UNDENT< * It can edit up to seven files at the same time * It can split the screen, giving two files screen visibility. * It is more memory resident than Wordstar, so usually runs faster with less wear and tear on the drives. * It has the glorious feature of YANKBACK, or UNDO, the ability to retrieve a hunk (or hunks) of text just deleted. Great for the double-minded. * It allows the quick movement of the cursor to and from the beginning of paragraphs and sentences as well as lines and words. * It deletes paragraphs and sentences with far fewer keystrokes than Wordstar. * It doesn't "crash" when encountering a disk-full error, but gives you the chance to save your file on the second disk currently in the computer.> There's more, but that ought to be enough to intrigue anyone with an unused copy of Perfect Writer in their master diskette collection. @CENTER(@B[FILES YOU NEED TO ACCOMPLISH THE "CONVERSION" ============================================]) @FLUSHLEFT< FUNCTS.TXT (THE ONLY FILE YOU GET IN THIS LIBRARY!!) PW.COM (Perfect Writer program) PW.SYM (file of symbols used in new key definitions, on PW Master disk) PW.HLP (Perfect Writer Help file, on Master disk) PWBIND.COM (program that uses "functs.txt" to create new pw.com, on Master) PW.SWP (The huge overlay file PW needs to function)> All the files listed above (except for the PERFSTAR version of FUNCTS.TXT) are located on the master copy of the Perfect Writer Installation Disk. Copy them all to a blank disk, then simply type "PWBIND" and hit return. (If your disk is single-sided, you may need to put PWBIND on the B: drive and from A: type "b:pwbind[return].") Your new "Wordstar-ized" Perfect Writer will then be ready to go. The additional Perfect Writer file, MENU.COM, is handy but not necessary to run Perfect Writer. @CENTER[(== End of Introduction ==)] @NEWPAGE @CENTER(@B[WHAT I DONE DID ===============]) For those of us more used to Wordstar, but in possession of Perfect Writer thanks to Kaypro's generosity, wouldn't it be nice to be able to use both of these powerful programs? The main drawback to such a thought, of course, is that two more different approaches to word processing could hardly be imagined. In other words, to use Perfect Writer means learning a whole new set of commands. Or does it? Thanks to a special feature of Perfect Writer, its commands can to a limited degree be altered. In short this is accomplished by editing the file "FUNCTS.TXT" enclosed with the Perfect Writer master disks, then calling up the program "PWBIND.COM" (If your machine had it included on the diskettes). The latter will automatically search for the former, as well as the files "PW.SYM," "PW.SWP," and "PW.HLP." PERSTAR offers a version of FUNCTS.TXT which has already been edited to re-create Wordstar's "cursor diamond," block commands, and "quick" commands, in the Perfect Writer environment. If you place this version of FUNCTS.TXT on the same disk with the above files, along with PW.COM, the result should be a version of Perfect Writer that responds in the following way to the following commands. (Wordstar values are listed first, then PerfStar's.) @CENTER(@B[ //// \\\\ |||| Basic one key control codes |||| \\\\ //// ]) @FLUSHLEFT< KEY PERFSTA R WORDSTAR ^A Back One Word Back One Word ^B Reform Para Reform Para, Move to End ^C Down 1 Screen Down 1 Screen ^D Right 1 character Right 1 character ^E Up 1 line Up 1 line ^F Forward Word Forward Word ^G Delete forward character Delete forward character Bk.Sp. Back one character Back one character TAB Forward tab space Forward five spaces (psuedo-tab) ^J Scroll other window up HELP MENU PREFIX ^K BLOCKING PREFIX BLOCKING PREFIX ^L Make word lowercase Continue search ^N Scroll other window down Carriage Return with no cursor move ^O Capitalize Only 1st Letter ONSCREEN PREFIX ^P Capitalize Whole Word PRINT COMMAND PREFIX ^Q QUICK PREFIX QUICK PREFIX ^R Up 1 screen Up 1 screen ^S Back 1 character Back 1 character ^T Delete next word Delete next word ^U Switch Buffer Interrupt command line ^V To end of paragraph Insert mode toggle ^W Refresh screen Scroll screen up one line ^X Down one line Down one line ^Y Delete one line Delete one line ^Z To start of paragraph Scroll screen down one line>] @CENTER<@B[ THE CURSOR DIAMOND AND "DELETE" KEYS ====================================]> As can be seen, PerfStar is anything but IDENTICAL to Wordstar; but of course, if it were identical, why not stick with Wordstar? A careful look at the keys listed above reveals that the values most used, namely, cursor movement in Wordstar "diamond" configuration, are the same: @FLUSHLEFT[@B(Character moves: Up = ^E Down = ^X Back = ^S Forward = ^D Word moves: Forward = ^F Back = ^A Screen moves: 1 Scrn down = ^C 1 Scrn up = ^R Delete keys: One char = ^G One Word = ^T One line = ^Y)] Though the ^Z, ^W, and ^V keys could not be configured to function like Wordstar, I honestly believe PerfStar's definitions are more usable. For instance, how often have you reformatted a paragraph with WS (^B) and then had to laboriously move your cursor back to the point you were at before it scooted to the end of the paragraph? PerfStar reforms the paragraph without moving the cursor.... but when you're ready, a simple tap of the ^V (conveniently located next to the B key) will send the cursor scurrying to paragraph's end. There are no ONSCREEN, PRINT, or HELP menus in PerfStar -- that is to say, menus built around the idea of a seperate prefix for each set of commands. This requires some explaination. If Wordstar's so bad, why is it more popular than Perfect Writer? The authors of Perfect Writer, in my opinion, made one major blunder: they honed their program to too fine an edge. Where this showed up was in their approach to command prefixes. An example: good 'ol Wordstar saves and resumes editing with the command ^KS. That command can be imput ^K^S, ^KS, or ^Ks. Wordstar doesn't care. But Perfect Writer's original save command, ^X^S, gives you Perfect Speller if typed ^XS or ^Xs. For a fairly quick (but truly sloppy) typist like myself, the extra time required to remember when to lift a finger and when not to is prohibitive. That explains why, in 99% of PerfStar commands, you can strike the keys in any old way you want to, as long as the first control prefix is correct (CNTL key held down while the second key is struck). BUT.... when mixing apples and oranges, you end up with something that isn't either (though it sure tastes good). PerfStar had to incorporate many Wordstar functions in its ^Q and ^K prefixes that ideally would have had the happy WS prefixes of ^O, ^P, and ^J. However, as you practice the PerfStar commands not familiar to Wordstar users, they should make a sort of "Wordstarish" sense. Perfect Writer is not as truly screen-oriented as Wordstar (just about it's only weakness). It doesn't allow for the right-hand justification of text on screen, and it won't let the screen roll up and down one line at a time. But Wordstar isn't as screen oriented as many programs, which show italics, boldface print, and even double-spacing after a such a command is placed in the text. So one man's screen oriented program is another's archaic throwback. In fact, Perfect Writer is more sophisticated than Wordstar.... the main problem, say many, is its difficulty to learn. Perfect Writer doesn't concern itself overly much with what you see on screen because of its amazing (as in INCREDIBLE) print abilities. They remain unchanged from the Perfect Writer manual, but to give a quick couple examples: commands begin with an "@@" and opening parenthesis "(" -- the command @@CENTER( produces centered text until the parenthesis is closed ")". If there are parenthesis in the text, a bracket or even "{" will do. See your manual for printing, footnoting, indexing, and other powerful PW features. @CENTER(@B[HELP AND WINDOWS ================]) The help file in PerfStar is accessed with ^QJ (similar to the ^J of Wordstar). Strike this command and the screen will split into two equal halves -- your first look at PerfStar's window capabilities -- and a listing of PW commands w ill appear in the screen's lower half. To scroll down the screen, type ^N. To scroll up, type ^J. Those commands, by the way, work with any file during an editing session where both windows are open and you want to scroll the NON-cursor window. To scroll the cursor window, ^R and ^C work as usual. To get rid of the help menu type ESC-1. After you've scrolled through the help file, and gone back to one window (ESC-1, remember!) hit ESC-2. Viola, you've got two windows. Type some text in the upper window where your cursor is, and it appears in the bottom window too. Now hit ESC-3. Where's the cursor? Down in the bottom window, and wasn't that lovely? Hit it again, and the cursor leaps to the top window. Move it back to the bottom window and hit ^U. This command asks, "Switch to Buffer?", and since you may only have one file open, type in a new name, say, SPAM. Hit return and you will be asked if you want to create a new file. Type "Y" for yes, and the bottom window will clear. You're now ready to type into the buffer called SPAM. Notice as you type in the bottom window, nothing happens to the top window. The buffers being displayed don't affect each other. However, should you want to move text between the windows, the usual Wordstar ^KB and ^KK will define your block, and then you can "hop" to the other window, hit ^KV, and BINGO! there's your block of text in the first buffer. (We'll discuss block commands further later in this tutorial.) Remember, you can have up to seven files load into PerfStar, even at the beginning of your session. "PW fn.ft, fn.ft, fn.ft, etc..." will load them from your CP/M command line. They can even be on the A and B disks logged when your PerfStar session starts. After than, a simple ^U and filename (buffers don't use the three-letter filetype extension) will allow the flipping back and forth from buffer to buffer. PerfStar even keeps your place for you in each buffer, returning you to the exact spot you left that buffer from. One final tool is the "grow current window" command, ESC-6 (or ESC-^). This allows you to open one window wider, a line at a time, until as few as three lines are open in the non-cursor window. @CENTER( //// \\\\ |||| The ^Q Commands |||| \\\\ ////) What I've done here is to redefine the ESCAPE, or Meta key, as ^Q. This allows the redifining of many keys to Wordstar standards. There are many commands here simply unavailable in Wordstar, such as ^QE, beginning of sentence, ^QX, end of sentence, and the double command, ^QE,^QT, delete whole sentence. I tried to define these commands within the "diamond" idea of Wordstar's cursor movements, but with varying success (a diamond can only be so big). You can, instead of striking ^Q, hit the ESC key instead. That's how Perfect Writer was originally configured, and offers a sort of hybrid feel for those interested. The first four values are listed as ESC rather than ^Q, due to a rather technical glitch I'd rather you avoided. A quick look at the keyboard explains the other reason for ESC.... the keys in question are right next to that key. You'll be popping windows open and closed like a maniac! Wordstar commands cloned are marked with an "*". @FLUSHLEFT[@B] @CENTER( //// \\\\ |||| The ^K Commmands |||| \\\\ ////) My move here was to redefine the "eXtended" command key, ^X, to ^K. The message "eXtended" will still appear at the bottom of your screen if you hit ^K and pause before striking the second key. An obvious difference will immediatly become apparent between PW and WS when you attempt your first "blocking" command. For instance, ^KB in Wordstar creates a visible marker at the cursor position. Perfect Writer, on the contrary, merely displays the message "Mark Set" at the bottom-of-screen "status line." And whereas WS with ^KK displays the block in reverse video, PW displays nothing but a small "+" by the status line. That disappears when you move your cursor! In brief, this is because of Perfect Writer's method of block editing, which centers around its yankback command. PW "yanks" deleted text (over one letter) into a temporary buffer. They can be retrieved by issuing a Yankback command, in my version, ^KV and ^@@. This does mean my redefinitions are subtley different than Wordstar's, at least in their actual function. I have not found them hard to get used to. Do keep in mind that this file was double-checked, but only on a Kaypro 2X, Kaypro II, and Kaypro IV. The single-key "Yankback" command may cause problems if your computer is configured to use that command key for something else. In addition, Wordstar users are used to deleting hunks of text one after another. That's fine in Perfstar as well, except for the important fact that if you expect to yankback one piece of text, don't delete another one first. Otherwise, the first chunk of verbiage will be gone... UNLESS you hit ^KJ BEFORE EVERY NEW DELETION. Then (and only then!) can you "stack up" deletions and then yankback the whole pile when you're through. The "+" sign will come on the status line every time the ^KJ command is issued. @FLUSHLEFT{@B( ^KB Sets mark at block beginning * ^KC Yanks back last text block deleted or copied * ^KD Allows file write to new file name, even different drive. * ^KF PW doesn't display disk directory; this shows buffer directory; the files in pw's memory * ^KI Tab set command ^KJ Turns + on modeline on; means you can delete additional text without losing 1st's contents. ^KK Block end for copy or move; to delete, ^KY in place of this command works fine. * ^KL Delete buffer: this PW command allows the freeing of computer memory by "deleting" file buffers. ^K^M One of two "mode" commands, this has to do with removing a mode in favor of another one. ^KM PW does this all the time, but I've eliminated it except for here. On this command, you must lift your finger from the ^ key after the ^K. It allows the insertion of a mode. I rarely use either of these; for info, check Chapter VIII of the PW manual. ^KN Finds file when in two-window mode: calls second file to one window w/o erasing first. ^KO When in two window display, tosses cursor to "Other" window. ^KR Read a file. . . well, almost. In Perfect Writer, to read a file is to delete what you're presently working on. So, this is INSERT a file. * ^KS Equivalent to ws's ^KS^QP command, saves and returns to last cursor position. * ^KT Calls Perfect Speller -- EXIT & USE TW+ INSTEAD! ^KU Remember that PW READ FILE command I mentioned, the one that erases current work? Here it is. ^KV Yanks back last text block deleted or copied * ^KW Write blocked region to file. * ^KX Exit Perfect Writer -- gives you chance to save files first. * ^KY Delete block.  Can be used in place of ^KK. * ^K[ Set left margin at cursor position ^K] Set right margin at cursor position ^K< Undent region ^K> Indent region)} @CENTER(@B[A QUICK BLOCKING EXERCISE =========================]) Open up a file name "foo.bar" (short for "fouled beyond all repair") and type in some nonsense.... maybe a letter to Mom. Now go to the start of your hunk of text and type ^KB. Go down a sentence or two and type ^KK. Gee, nothing happened. Or did it? Look at the bottom of your screen on PW's status line. If you haven't moved the cursor since hitting ^KK, there should be a small "+" sign just to the right of the asterisk. Now go to the end of your file, and type ^KV. ZOWIE! There's the text you marked, perfectly duplicated. Type ^KV again. Hey, this is like a copying machine. Next, go back and mark the block of text again, but instead of typing ^KK and the end of it, type ^KY instead. -- POOF!! -- the text vanishes. Hit ^KV (or the shortcut -- ^2) to get your text back instantly. @CENTER(@B[NOTES ABOUT THE SWAP (PW.SWP) FILE & COMPUTER MEMORY ====================================================]) PerfStar writes all temporary file buffers to it's large overlay, PW.SWP. If you got this document as part of the PWLIKEWS.LBR, there should be two or three public domain goodies in that Library that will come in handy. They allow for enlargement of the SWP file, and retrieval of text from the file in case of disk full messages or disk crashes. One other major problem can -- I say CAN, not will -- come up with the "swapping" message at the lower right hand side of your PerfStar screen. This occasional flashing message means your file is being updated to the PW.SWP file and / or to the computer's memory. ONCE IN A WHILE YOU MAY HAVE TOO MUCH TEXT IN THE BUFFER(S) FOR PERSTAR TO HANDLE. The error message "SWAP FILE FULL" will display itself. Hopefully you have more than one buffer open, and can delete one with the command ^KL. Hit that command and type in your BUFFER name (remember, no file extension on buffer names). Try deleting PW (the buffer name for your help file) first..... DELETING THIS BUFFER WILL NOT DESTROY THE FILE WHICH HAS ALREADY BEEN SAVED TO THE DISK. @CENTER(@B[CONFESSING MY SHORTCOMINGS ==========================]) Before moving on, I should note the obvious: my changes to Perfect Writer are not overwhelming, and do not include many multiple key commands of Wordstar's which you (and I) wish were possible to include. They are not possible using PWBIND.COM because this program ONLY ALLOWS THE SWAPPING OF ALREADY EXISTING DEFINITIONS. As I mentioned already, Perfect Writer is not as screen oriented as Wordstar, and its printing setup is (at least to a Wordstar user) from another planet, though far more powerful. So the ^O? and ^P? command sets are absent here. I could have gone into greater detail about those commands which aren't found in Wordstar, yet are implemented here. I didn't feel it necessary to explain all the intricacies, however, one, because this conversion is new enough to me that I will miss some and thus look like a fool, and two, because you will immediatly notice most differences upon your first few uses of "PerfStar." One thing I will note: many of PW's commands are "smarter" than Wordstar's. In other words, when WS is issued the ^QD command (end of line) it responds once. If the command is given twice, WS ignores the second command until the cursor is moved down a line, up a line, etc. Good ol' PerfStar will jump to the next end of line at each ^QD given it, and this holds true for many commands. Try it and see. @CENTER(@B[THE CONSTRUCTION AND DESTRUCTION OF "FUNCTS.TXT" ===============================================]) Already the wheels are turning, and you are thinking of improvements on my work. Good stuff, and please send me any successful attempts! I myself was double-minded over a few commands, where they should be assigned. However, a few words of warning from one who learned the hard way: Please, don't alter FUNCTS.TXT with anything but Perfect Writer. And even then, you must first hit the command ^K (the word "eXtended" will appear at the bottom of your screen) and then an "M"; the message "Name of Mode" will appear. Type in "NORMAL" and hit return. This "normal" mode is the only mode the file should be edited in, unless of course, you want to cry alot. Second, make yourself a copy of FUNCTS.TXT. An edit of this file fails far more often than it succeeds, and in case of failure, it's easiest to return to your original file. If you want to see what the file looked like before I hacked it, there should be a copy of the original on one of PW's master disks. It is also fully listed in the Perfect Writer manual, starting on page 352, appendix C. In fact, as a writer myself, I suggest you read the Perfect Writer manual for an almost enjoyable experience. A computer software manual that's actually well written! Third, a few technical notes: you must not change anything about the file other than the first word in the second line (that's "Fill" in "Fill Mode") and the various definitions in the 3rd and 4th columns. (That's can, not must; I'd leave "fill" alone.) NONE OF THE NUMBERS IN COLUMN ONE, AND NONE OF THE NAMES IN COLUMN TWO, MAY BE ALTERED AT ALL. @CENTER(@B[SIGN-OFF AND A WISH LIST ========================]) There are many things I immediatly loved about PW, but a few, very important, things I cannot stand. Unlike Wordstar, there to my knowledge are no extensive public domain helps which allow extensive patching of PW to accomidate personal taste. So, here's my wish list: @UNDENT< * automatic log to B: drive for disk files * some way to bypass having to type in the complete file name for Perfect Formatter and Perfect Printer every time. Wordstar's simple ^R, which echos the last file name edited during the current session, apparently has no parallel command in PW. * a way to patch in The Word + instead of the distinctly inferior Perfect Speller. I found one way, but the result still leaves one having to type in the file name (again!) and warm boots after TW+ completes the file. * a way to get Perfect Formatter running at all using ZCPR3 (my system is a Kaypro 2X). Currently, ZCPR is apparently taking up memory PW and PF want. * a way to switch disks without causing PW to crash the first time it begins its "swapping" procedure. (I know about CP/M 2.2E, but that costs MONEY.)> I don't ask much, do I? Seriously, if anyone knows of ways to accomplish any of the above, either with public domain programs or simple lists of patchable program areas within PW, I would appreciate it to no end. (I'm a magazine editor, and need those features). If anyone knows of anything out there in the wonderful world of BBS's, user groups, etc., that would be of use to a frustrated Perfect Writer fan, please write or call me: @CENTER(/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ Jon Trott 4707 N. Malden Chicago, IL 60640 312 989-2080 [office #] Jesus Rules! \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ ==== P E R F E C T S T A R ==== << FINI >>) @NEWPAGE @FLUSHLEFT{ P E R F S T A R Quick Reference Index ===================== (Asterisk [ * ] Indicates Wordstar identical commands.) @B( -- Cursor Commands -- ^S left cha * ^QS Bgn of line * ^D Right cha * ^QD End of line * ^E Up line * ^QE Bgn of Sent ^X Down line * ^QX End Sent ^C Down Screen * ^QC End of File * ^R Up Screen * ^QR Start of File * ^Z Bgn Par ^V End Par ^W Refresh Scrn ^B Reform Paragraph *)} These commands, known in Wordstar as the "cursor diamond," are enhanced in Perfstar to include quick cursor moves to the beginning and end of sentences and paragraghs as well as characters, lines, and words. A special note on ^W; if you move the cursor up or down the screen, then strike ^W, the screen will flicker and reappear with your new cursor line in the screen's center. Hit ^V^W to scoot the screen display down a paragraph at a time, ^Z^W to move it up one paragraph. That's pretty screen-oriented, isn't it? @FLUSHLEFT(@B[ -- Delete Commands -- ^T Word * ^QT Sentnc Fwd ^Y Line * ^QY End of Line * ^G Char * ^KP,^KY Paragph ^Q-DEL Previous Word]) Used whenever you edit a file, these commands again mimic Wordstar, but add things like ^QT and ^KP,^KY for deleting sentences and paragraphs. Remember, to delete an entire sentence, type ^QE to send the cursor to the beginning, and then ^QT to delete to the end. Fast, eh? @FLUSHLEFT(@B[ -- Editing Commands -- ^KB Begin block * ^KK End block * ^KV,KC Copy block * ^KY Delete block * ^KJ Cont and save Del ^KP Block Paragraph ^@@ or ^2 Quick Copy]) Also called "block" or "cut and paste" commands, these keystrokes are all-important when moving, deleting, or copying sections of text. ^KB "sets the mark" for the beginning of the block of text, while ^KK copies the block to the computer's memory. ^KB followed by ^KY instead of ^KK will delete the block. In either case, you can then move the cursor to a new spot and strike any of the three yankback commands to move or copy the text. YOU MUST STRIKE ^2, ^KV, OR ^KC BEFORE DELETING FURTHER TEXT OR THE BLOCK WILL NO LONGER BE IN MEMORY..... it will be GONE! ^KJ is the only way you can delete or copy more than one piece of text to the buffer. It must be used IMMEDIATELY before the ^KK or ^KY each time a new block is copied or deleted. If this is done correctly, the yankback command will return all copied and deleted text to the screen. @FLUSHLEFT(@B[ - Search Commands - ^QF Search Forwd * ^QB Search Back * ^QA Search & Query * ^QG Search Globally *]) These commands enable you to find and replace words, punctuation, or print commands you want removed. The ^QF command searches forward for a word or string of text, ^QB searches backward from the cursor, and ^QA searches forward and allows you to replace an old word or phrase with a new one. ^QG is the most powerful, and therefore, the most dangerous of these commands. It searches and replaces text AUTOMATICALLY, from the point of the cursor to the end of your buffer. So be careful. For instance, don't tell it to replace "the" with "it." Words like "their, these, thesaurus," etc, will become "itir, itse, itsaurus," etc. If you don't want a word that sounds like an obscure species of dinasaur, type replace " the "; the space on each side tells PerfStar exactly the word you want replaced. @FLUSHLEFT(@B[ -- Window Commands -- ESC-1,2 toggles 2nd Window ESC-3 Cursor to Other Window ^J Oth Wn Up ^N Oth Wn Down ESC-6 Grow Cursor Window]) The command ESC-2 opens a second window, in which files can be edited without affecting the contents of the first window. ESC-3 hops the cursor back and forth between the two windows, to allow cutting and pasting between the files. ^J and ^N are counterparts to ^R and ^C, causing the NON-cursor window to scroll. The window may be "closed" (ESC-1) without losing text edited in that window, and the window the cursor resides in is the one which remains open. You must save the buffer before exiting, however, or it will be lost. @FLUSHLEFT(@B[ -- Buffer & File Commands -- ^KS Save/Resume * ^KD Save New/Filenme * ^KW Write Region to File * ^KQ,^KX Exit * ^KR Read File * ^KF List Cur Buffers ^U Switch Buffers ^KN Find New File ^KU Del Buffer/Read File ^KL Del Buffer]) The subtle differences between Perfect Writer and Wordstar reach their apex in the save, read, write, and exit commands of PerfStar. For instance, in Wordstar you must type ^KS^QP to save the file to disk and return the cursor where it was before the save. With a mere ^KS, PerfStar saves the file and leaves you where you'd left off. PerfStar's ^KD acts like ^KS, but allows you to save your edited file under a different name than the original. PERFSTAR DOES NOT CREATE A .BAK (BACKUP) FILE, SO IT IS IMPORTANT TO USE THE ^KD FILE RENAME OPTION IF YOU WANT TO KEEP AN UNEDITED VERSION OF YOUR WORK. The buffer commands are unique to PerfStar, and are discussed more fully on page (?) of the manual. Suffice it to say, ^U quickly flips from one buffer (that's a file which has been loaded into PerfStar's memory) to another. You don't have to save buffers to disk before switching, and the program will warn you if you didn't save one or more before exit. @FLUSHLEFT(@B{ -- Onscreen Commands -- ^K[ Set Left Marg ^K] Set Right Marg ^KI Set Tabs ^K= Display current line position ^K< Undent Region ^K> Indent Region ^K* Display PW version numb ^QP Cursor Switch Place w/ mark * ^QW Swap Words ^QQ Repeat Command * ^O Capitalize Word's 1st Letter ^L make lowercase word ^P MAKE UPPERCASE WORD}) The least "Wordstarish" of all PerfStar's command set, these commands were nonetheless organized around the loose concept of a "diamond." The three "case commands" sit next to each other, as do the left and right margin keys. The ^QQ and ^QP commands work in a similar fashion to Wordstar, though PerfStar's repeat command also allows for the repetition of commands, not just letters and numbers. @CENTER(@B{/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ February 26, 1987 Jon Trott 4707 N. Malden Chicago, IL 60640 (312) 989-2080 [office #] Jesus Rules! \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ -- Finis --})  ^K] Set Right Marg ^KI Set Tabs ^K= Display cur============================================================================= P E R F S T A R Version 2.3 ============================================================================= This library contains files which enable the owner of a CP/M copy of Perfect Writer 1.20 or 1.03 to convert it's keyboard commands to a set much like Wordstar's. FUNCTS.TXT is the all-important file to obtain if that's all you want to do. However, I've also included some extra Public Domain goodies, programs you won't find everywhere. Also, the Perfstar manual is a must if you want to know how to run this pup! ---------------------->>> F I L E S Included: * FUNCTS.TXT (The file PW's PWBIND program uses to redifine commands) * PERFSTAR.MAN (Manual with my new command set defined, other stuff) * PWCONFIG.COM (Public Domain configurator for PW.... get it!) * PWCONFIG.DOC (Three guesses, and the first two are SPAM) * SPWSWP.COM, RPWSWP.COM, SPWMEM.COM (Three little musts, retrieve lost data from .SWP file, computer memory, and configure .SWP file) * MENU21.COM (A little shareware wonder; get it and dump the bulky Perfect Writer MENU.COM, you won't be sorry ['83, '84 Kaypros only) * -READ.ME (This file) ============================================================================= Jon Trott / 4707 N. Malden / Chicago IL / 60640 / 312 989 2091 / Jesus Rules! ============================================================================= o included some extra Public Domain goodies, programs you reatly appreciated .. nARC EXEyb}LIST COM nP E R F S T A R Version Information 2.0 --- an early, buggy version that only made it to three bulletin boards (all three were notified in time to have it removed... I hope.) 2.1 --- Wordstar cursor diamond fully implemented, ^Q and ^K prefixes put into place; but more BUGS found, particularly in some ^K prefix commands 2.2 --- Unreleased version due to further problems with ^K, windows commands 2.3 --- Version as of March 11, 1987. No bugs except for ^Q^3 command (switches cursor from window to window). This was "solved" by defaulting the command to the handy ESC-3 command instead. NOTE: Functs.txt is highly alterable. If you improve on my command set, please do me one favor.... let me know what you did so I can do it, too!! =============================== Jon Trott Mad Hatter for Godarchy Jesus Rules, INC 4707 N. Malden Chicago, IL 60640 (312) 989-2091 ===============================:A׾#~$=2Ek͌:==*H>)5>)5>)5>)5>)5>)5>)5 3 The Homegrown PWCONFIG This program was written by Chris Weems (and modified by me) and was found in the KUGRAM newsletter. Although you cannot use this program to change your Perfect Writer terminal configuration, you can use it to change the personal preference options listed on or about page A-10 in your Perfect Writer manual. Read these pages carefully before using this program. Also, you should read PWCONFIG.DOC as well. Note that entering a '0' or a carriage return for any option will cause the default value to be selected. This program should be running from disk A: and there should be a copy of PW.SWP on disk A: as well. Further, disk B: should have ample room to receive the new version of PW.SWP to be created. If this is true, type 'Y' to continue:>)5'Z6i6j3i6͚62)5(åYéy*<*&&''*<*&&''d%\'>)5(>)50>)52*!;0>!UA,!9S=!#*!;0>!UA,!9S=!#>)53MB:PW.SWP!D3>)54`*^A6tA:PW.SWP!kN6͏>)55Ê*A6ÞB:PW.SWP!N6͏>)57>)59û*>!~<ͼ:>)5@Z6i6͊6>)5A*~<*͒%\'>)5A>)5BZ6.File size in K (64 is default):!ͺ.>)5CZ6i6j3i6y͉1!~<ͻ/i6y͊6>)5Dh*~<*f͒%\'ʑ>)5DÅ@*>!~<ͼ:>)5EÝâéð*~<*o%*~<*~%Y%*~<ͻͫ:*͈ͫ:͹(*~<ͻ+&'Y%\'ʾ>)5E>)5F*>!~<ͼ:>)5GZ6i6͊6>)5HZ6g%File size must be between 24 and 248,!Aͺ.i6͊6>)5IZ6ê%and be divizable by eight. Try again.!ͺ.i6͊6>)5P>)5Q>)5R*~<&v>!<ͼ:>)5T*>!~<ͼ:>)5UZ6i6͊6>)5V*~<*͒%\'ʍ >)5V>)5WZ6c"Cursor start line (10 is default):!@ͺ.>)5XZ6i6j3i6y͉1!~<ͻ/i6y͊6>)5YÝ*~<*͒%\'>)5Yú *>!~<ͼ:>)5`*~<*o%*~<*~%Y%\'ʃ >)5`>)5a * >!~<ͼ:>)5bZ6i6͊6>)5cZ6o 6Cursor start line must be between 1 and 20, try again.!8 ͺ.i6͊6>)5d>)5e>)5f*~<&v>!<ͼ:>)5iò * >!~<ͼ:>)5pZ6i6͊6>)5q *~<* ͒%\'? >)5q>)5rZ6 Tab size (8 is default):! ͺ.>)5sZ6i6j3i6y͉1!~<ͻ/i6y͊6>)5tX *~<*V ͒%\'ʁ >)5tu *s >!~<ͼ:>)5uÍ Ò O*~<* o%*~<* ~%Y%\'5 >)5u>)5v * >!~<ͼ:>)5wZ6i6͊6>)5xZ6! -Tab size must be between 1 and 79, try again.! ͺ.i6͊6>)5y>)5 >)5*~<&v>!<ͼ:>)5d *b >!<ͼ:>)5Z6i6͊6>)5Ï *<* ͒%\'ʵ>)5>)5ó c* >!~<ͼ:>)5 c*~<* ͒%\' >)5>)5Z6 +Left margin [indent column] (0 is default):! ͺ.>)5Z6i6j3i6y͉1!~<ͻ/i6y͊6>)5Y ^ O*~<*W o%*~<*\ ~%Y%\' >)5>)5Ð c* >!~<ͼ:>)5Z6i6͊6>)5Z6 4The left margin must be between 0 and 79, try again.! ͺ.i6͊6>)5>)5 >)5*~<&v>!<ͼ:>)57 *5 >!~<ͼ:>)5Z6i6͊6>)5b *~<*` ͒%\'>)5>)5Z6ö +Right margin [fill column] (65 is default):! ͺ.>)5Z6i6j3i6y͉1!~<ͻ/i6y͊6>)5 *~<* ͒%\'>)5 A* >!~<ͼ:>)5%*O*~<*#o%*~<*(~%Y%\'>)5>)5\*Z>!~<ͼ:>)5Z6i6͊6>)5 Z65The right margin must be between 1 and 79, try again.!ͺ.i6͊6>)5>)5] >)5*~<&v>!<ͼ:>)5*<*< &e'ʓ>)5>)5Z6i6͊6>)5Z6|AThe right margin must be greater than the left margin, try again.!:ͺ.i6͊6>)5ë>)5ß*>!<ͼ:>)5Ê >)5$*>!~<ͼ:>)5%Z6i6͊6>)5&*~<*͒%\'V>)5&>)5'Z64CPU clock speed (4 is default):!ͺ.>)5(Z6i6j3i6y͉1!~<ͻ/i6y͊6>)5)n*~<*l͒%\'ʗ>)5)Ë*>!~<ͼ:>)50ãè *~<*o%*~<*~%Y%\'L>)50>)51*>!~<ͼ:>)52Z6i6͊6>)53Z68.CPU speed must be between 1 and 10, try again.! ͺ.i6͊6>)54>)55>)56*~<&v>!<ͼ:>)5A{*y>!~<ͼ:>)5BZ6i6͊6>)5Cæ*~<*͒%\'>)5C>)5DZ6Delay count (300 is default):!ͺ.>)5EZ6i6j3i6y͉1!~<ͻ/i6y͊6>)5F&*~<*$͒%\'O>)5FC,*A>!~<ͼ:>)5G[d`*~<*Yo%*~<*^~%Y%\'>)5G>)5HÒ*>!~<ͼ:>)5IZ6i6͊6>)5PZ68The delay count must be between 100 and 1000, try again.!ͺ.i6͊6>)5Q>)5Rá>)5S& +*~<*~<ͻͫ:"*͈͍:*)%Ͷ%&v>!<ͼ:>)5Tp *~<ͻͫ:l*͈͍:&v>!<ͼ:>)5V>)5Xì*>!͊:>)5Y*Z6!<>#>)5`*Z6!<>ͻ!>)5a! >)5c>)5d>)5f2u*0>!͊:>)5gg*eZ6!<>#>)5h![ >)5pÏ*Z6!<>ͻ!!<>ͻ!!<>ͻ!!<>ͻ!>)5q*Z6!<>ͻ!!<>ͻ!!<>ͻ!!<>ͻ!>)5s>)5u}*>!͊:>)5v1*/Z6!<>#>)5wL*JZ6!<>ͻ!>)5x!% >)5>)5{*y&v>!<ͼ:>)5Ù*>!͊:>)5*Z6!<>ͻ!!<>ͻ!!<>ͻ!!<>ͻ!!<>ͻ!!<>ͻ!!<>ͻ!!<>ͻ!>)5:*8Z6!<>ͻ!!<>ͻ!!<>ͻ!!<>ͻ!!<>ͻ!!<>ͻ!!<>ͻ!!<>ͻ!>)5Z6Ó*<*%.æK!ͺ.>)5! >)5*>)5*>)5>)5Z6i6͊6>)5Z6i6͊6>)5Z6' Finished.!ͺ.i6͊6>)5>)5!="=!="===Copyright (C) 1979, By Topaz programming. All rights reserved. From here on protected by End User License.  "P"c"t"r"*"."T"`*t*"*r:ufͿ&S***r*t!**tͶ%"!Ϳ&CCS"!v766&:w7o!"!>ͼ::W2z2!>͊:!"!>ͼ::W:2!>͊:!"/|29&)}lg"7!2>6#=>/!2w+:9&:828!2>͊:!"x!>ͼ:*}lg:Z!w{oG|g}ox<_:&!!o"!>ͼ:: !>͊:!>͊:͉'!>ͼ:"!>ͼ:: 2%:!4#~w:! :%G~w!h+!>͊:!!!>͊:*>e7w7w7e7""!v766ͦ$!7>6#=}w7!!M>!9ʥ~R=Sʵ!5(FILE OPE"%!6""!v766ͦ$:w7=_7w7*% w#6#*%!'5*%%6#6#6###6!S-TYPE FILE NOT FOUN""!v766ͦ$:w7]=_7*w7 w# m6#6# z*!5(6#>6#=6#6!R-TYPE FILE NOT FOUN}2z8M>!9~RuS!5)FILE CLOS"`%~~*`%6D*`%6*`~*=_7*`!c5*`&~#*`!b>ͻ!DS-TYPE FILE CLOS" $5! ~#:9!:>!ʙ7* * (6Gx2H!:z8O>!9 ~R  w! |2!" "T""A!!$5! 2C!~# : v:>!cW;*5!*7!6 #{0+6 +6 * $5! w#K!͒S&m͒ĥ?;>2>!ʊͥ??:H!*?!*A!|}*A!!I!5:! *A!"?!*5!":!*7!"/2>!*?!!U!5!* $w#DM*5!͟ }2G!zW{_|g}oz"E!"2!"!24!2!:!}*E!͑ |}}O*  ~}* q* !u!5* ! !!~w##Š:9!!!5:!2D!!u!5:!*E!}21!2 !:!=_*7!!" !" *5!!d!5}#:G!9 ͇=͇9 +|: 9 ͇͑ :!S:1!S!w7w#Cw7!:!a"_:!s*2!#"2!{ x'* 7w#" }7!:!ʳ"_:!*2!#"2!{ !" }:G!9 =9 +|͑  :! !_:!% *!#"!{ x: >* } w7 :!a !_:!s *!#"!{~ 2 !w7F#" ѯx|g}o“ >!)Ҳ Ҳ #=¸ )) #å !I!5!U!5!d!5!!5!!5R-TYPE REAEXTENDING FILEND OF DISK DAT RANDOM RECOR R-TYPE FILE NOT OPE NO MORE DIR SPAC*WRONG TYPE FIL"":z8O>!9ʮ"~S®" ~Rʮ">Ww"""+~#!"*"~F"~#"=_!"~*"~F"#="*""+w#%"]"!"5*"""*"""G"*"|."+""*"w#"":"!"5:"s"/2"*"]0*":"ʕ"=_" xÁ"! #5 S-FILE WRITWRITE ON UN-OPENED FIL,S TYPE FIL"s$:z8O>!9<$~S<$ ~W<$>Rw"G$I$*~#F#w#ͷ#2v7!w7ͷ#w#=]#!v7*s$6Ð#=_!B$~*s$ͷ#w#=ƒ#*G$I$*w#˜##!u$5*j$"o$*l$"q$*o$|ʡ#+"o$*q$~#"q$:n$!$5*j$]0*l$:I$#=_I$ $$ x#*j$]0}>M6#/$ -$!$5READ PAST EOREAD ON UN-OPENED FIL,S TYPE FIL!N%> 6 #=«$!w76!w7M%:x7:>$~##`$ @~$#.$$~$#.$$V%~ %#$!N%,%!V%,%!w7M% w##%~*8%> _y{F% F%>?w#.%zW{_zW{_"%Ϳ&>گ%í%"%Ϳ&>ʯ%گ%>ï%"%Ϳ&>ʯ%í%"%Ϳ&>¯%>&!}o|g"%%;0&*%"%%]0&!||&xŷ&|/g}/o#y>$&"&y>$&>'"=&@&>9&>&!"&!w7>ͼ:!{7>ͼ:!~7:z7f&~ß&:z7{7!w7ͣ&y&*&!z7~7~w!x7|7Ғ&Ÿ&#”&!Ҩ&&O&y?z&z>&7z&{"&!&&!&>͊:!!'!&.T'.F"$'<'!"'!!"9'e'!7'!!>C'>"Y'!w7ͼ::x7>W'/!|>}Tʅ'tʅ'Yʅ'yʅ'ʅ'>>>Ð'>2'"'!'>ͼ:!'>ͼ:2'2''!'>͊:!S(!'͎(!'͎(*'|':''!'͛('!'͛(!''+(*'}} ( (!'͛(>2'!'7w4(+((:'G!'~w!'h+:'2'!'~_w!'~Ww:'W"'!''NG(x҈(͎(p(4#~w’(~/w+ž(~w+~w ¯("v)!)>ͼ:!)>ͼ::)y):)y)!)~_w!)~Ww"):)2)!) w#( )()͡)Ͱ))!))w+ )):)G:)O2)x]):)])xy)*)!)>)!)>͊:*v)Ϳ)*)!):))!)>͊:!!)>͊:*v)!)~w+ §)!)~w# ¶)!)7w)+)0!)~+~=w!)~w+) )2)zW~ww"*!b+>ͼ:!^+>ͼ::c++:_+*!e+~_w!a+~Ww"f+:^+2Z+)+Y*!]+>+ ʄ*!a+>+!e+a++b*?H*!e+a++w*H*:b+o:Z+gG2Z+|*x*x**f+!(+>I+!%+>͊:**!]+7w*+¿*![+2+!Z+4#>w!Z+h+*f+!]+:[+I+!Z+>͊:!!!+>͊:**! +5 DIVISION BY ZER!c+2+!_+~w# 5+~w+@+zW~ww~2+#~++~=w~w~w+†+ n+6:++~6#  +>w+>³+~w+>,~ž-}>ң-/2d.}o|g"`.DM:d.-*  " |!983*."M/O//0 //!w76 :/+/w#$/w/x./60#<62v7:3G/!v7:z8O>83*M/"/!/|>+2/n/}/o|/g#>-2//N#F |/,z/y/Ox/G y0w#ʡ/u/*/w7 1w7͘0/s#r/ü/!//ERROR IN INPUT, RE-ENTER PLEAS:~8͊6:~8O)6y͊6!0)6:s7͉1??!%0/NUMBER TO LARGE/SMALy!N0xN0U0) P0"0>207?{_zW!05ʒ0yOxG#yO#xGj0*0 DMj0BK28 +ʬ0-­0>28`i"1! 0T])))0 ?0_õ0:8|/g}/o#*1DM! Hȷ707 0?_))))0"g1:v7OX1*t7~ *1 #X11~,r1 r1 r1E~M1+r1-r1 #1*1~,`1# >01~,X1M1i1~,1# "t7y2v7O>!9ʌ2O2s7!w7"t72v7:1 12212K21wY2:|81~ͅ8~#¦1>2v76:{8>1xʦ1+~ͅ8æ1xʦ1+>ͅ8> ͅ8>ͅ8æ11>#ͅ8͊6!v7>83æ1>#ͅ8͊6:s7É1!l2͙5:~8Oj3:s7É1TOO MANY CHARECTERS. MAX IS 252s7!w7"t72v7^#V" 3>!2* 3*t7*t7~ 22#"t7:v72v7Ҧ2! 35>!2* 3*t7*t76!w7"t7#"t7:v72v72>2v72-ASCII FIL~$3#ͅ83#~#ẙ6n62i3~Y32h3#~Y3ͅ8!h35Y3C3:i3n6yʊ6!p3)6?23"3ʝ3e723!36!3"3!34:z8!*33~#.,-$*^+/&!\3#~:z8O~ͅ8#à3N# 6~4#46#4^"#:&55Ϳ5:~8͊6**'525~28#~28#:5!5m5:~8O>[ͅ85>]ͅ8> ͅ8:5=25m5>25y͊6:ˆ5:5/25:‹5^"#Ϳ5!5)6:~8͊6 WARNING ONL:~8O͊6)6!5)6:8!5)65 ERRO IN LINE*8|0ͅ8|0ͅ8}0ͅ8}0ͅ8!}8>w~;6ͅ8!}84#)6ͅ8* s#r#" * +V+^" y2z8 ::z8O!8 ~u6> ͅ8<|6O> ͅ8> ͅ82}8>!9¾6^#V>!6!6:6::|86ͅ8"L7z7OFx7y6#67#w77 6#67O~#77 #6#yͼ:*L7"J7v7|77}77q7!w7y2v7ͼ:*J7N77Fv7O #6 wV7zo7 ʠ8 ʠ8!8 4 ¬86ì8!9 4 ʬ86y28>!9ʿ8:28^#V!8!8>:8O:8?9!A -9X9#~#^#VN#!A K9X9~#X9":^#=ʦ:V#=’:*:*:^#V#N#F#N#F":__{:s+=:r+=:s+=:!;::;> ;!D ! ;5%BAD CHANNEL NUMBEd;<<Ø;ï;à;<<|;2;;2;;*<|! "<__7:l<><\!m<5>2l<:k<]<\!m<5_<2k<!~ɀ&INPUT FILE REA}tR(*y[lR*j!"w*c*|"u"*c+"c|(*w^#V#N#F U ##"w*w^#V#"w*u "u ~*"*#"|}*c|ʛ22{*|ʿ2g:\@,͢*͢)*u>w#* 0!@ 8y2P2{o&"r*~(;>.V#^͢>k*+"([z([r* "*|(X!P5 r' Any key for more, or ESC to quit s*[r":g :\@2s> > >|> _~P E R F S T A R Pwconfig program (Actually it has nothing to do with my PerfStar, but I like typing...) Kaypro does not enclose the commercial version of PWCONFIG in its Perfect Writer master diskette collection: therefore, this public domain version comes in extremely handy. It: * Sets right and left margins * Sets how many spaces the TAB key will scoot over * Creates a PW.SWP file of any size from 8k to 128k * Sets clock speed (2.5 Mhz Kaypro II's can run at 4) * Sets "Swapping" delay, defaults at 300, try 1000 for size Have fun, enjoy, work hard, and ..... consider Christ. "Christ is the only signifcance." -- WWII martyr Deitrich Bonhoeffer, in COST OF DISCIPLESHIP JON TROTT/4707 N. MALDEN/CHICAGO IL/60640>2>2T1l!pw# 2\<$pp<$&\|,bD/:k0j>1t> 2~>03ˆ>84’>@5œ>P6¦>`7°>8º>9T>2g2p$%?&. 6# :g&p$%:g=2gp<$ /  !j6+6 !j^P#6 , /7 ,X File not found: usage >RPWSWP u:PW.SWP v:NEW.SWP$No directory space.$Not enough disk space.$Write protected.$Done.$** RESIZE PW.SWP **$0=24k 1=32k 2=48k 3=56k 4=64k$5=80k 6=96k 7=128k 8=160k 9=192k$Enter Choice: $ , /7 ,X File not found: usage >RPWSWP u12|\\<!"222~#:<2ր52:]*5:<2"|}}}>2Å:05!":¨:ʨ*6*\:=2*"Ì:"\< >2*~ M) ) ? K^K~MW#~+4 :<2zMW:<2zM> w#File not found: usage >SPWMEM u:dest.typ.$No directory space.$Not enough disk space.$Write protected.$Done.$=2*"Ì:"\what the default printer and console devices are. Here's a useful hint: to see what your file will look like on the printed page, complete with accurate page breaks, FIRST pick the C option for viewing on the console, THEN pick the D option and give the name of the printer device you'll be using, then pick G, and your file will appear on the screen as if printed (but, of course, without underlines, superscripts, etc.). Please notice that this is COMMERCIAL software, but in the form of "sharewa1l!Kw# 2k\ y0_  >2E*~ ʳʥ ʥ ʥ ^~óW:E<2Ezó> w#File not found: usage >SPWSWP u:PW.SWP v:dest.typ.$Size of PW.SWP = $No directory space.$Not enough disk space.$Write protected.$Done.$> y0_  >2E*~ ʳʥ*~ M) ) ? K^K~MW#~+4 :<2zMW:<2zM> w#File not found: usage >SPWMEM u:dest.typ.$No directory space.$Not enough disk space.$Write protected.$Done.$=2*"Ì:"\ @Heading('BATCHING' FILES) Often you will wish to print a very long document comprised of a number of files, such as a book whose various chapters are each held in separate files. When printing this document you will wish that the files be consecutively numbered, not only by page, but by chapter and even section. This would be an awkward thing to accomplish if each file were printed separately, since Perfect Writer normally begins page and section numbering anew each time it prints a file. However, Perfect Writer provides a means of appending one or more documents to each other, so that when formatted and printed, the documents will be consecutively paged and sectioned. @Subheading{@b(The @@INCLUDE Command)} If you merely wish to insert one document within another, the method to use is the "@@Include" command. For example, at any point in the current document, type the command: @center<@b[@@Include(b:thisfile.mss)]> When the current file is formatted and printed the file 'thisfile.mss', which is located on drive 'B', will be included in the current file at the @b(exact point)that the command is given. If the included file must begin on its own new line, paragraph, or page, you will wish to preceed this command with another command that will accomplish the appropriate spacing. For example: @display<@b[@@newpage @@Include(b:thisfile.mss)]> The "@@Include" command can be repeated any number of times within a document. For example, at the end of the current document you may wish to append several files: @display<@B[@@Include(b:thisfile.mss) @@Include(b:thatfile.mss) @@Include(b:anyfile.mss) . . . .etc.]> '@@Style' commands governing the current file will automatically determine the format of all files which have been appended using the "@@Include" command. For example, if the current document is being double-spaced, "@@Style", all documents which have been 'included' in the current document will be double-spaced as well. The single exception to this rule, however, is the placement of @w<'Footnotes'. When> appending one document to another using the "@@Include" command, footnotes which occur in the various files @b(must) be placed at the bottom of the page on which they occur. If you desire to have footnotes placed on a page at the end of the document, you must use the following 'batch.mss' method. @flushleft{@b(Using a 'BATCH FILE') With One Diskette} Another way of joining separate files to form one larger finished document is to create a separate 'batch' file (i.e. b:batch.mss), which consists of nothing but "@@Include" commands. To create such a file, proceed as follows: @begin(itemize) From the menu of Perfect Writer select 'E--Edit a file', naming the file you wish to edit 'b:batch.mss' (or any other name you choose). In the new file called 'b:batch.mss' begin listing the various files to be included: @display<@b[@@Include(b:thisfile.mss) @@newpage @@Include(b:thatfile.mss) @@newpage @@Include(b:anyfile.mss) @@newpage @@Include(b:everyfile.mss) etc.]> Save this file to disk (CTRL--X CTRL--S) @end(itemize) When the file 'b:batch.mss' is formatted and printed, each individual file that you list will be included all paged and sectioned consecutively. (In the above example, each will start on its own 'newpage'.) '@@Style' commands which will govern the entire document can be placed either in the first file of the chain, or at the beginning of 'b:batch.mss'. Note that in this process the file you format is 'b:batch.mss', not the individual files comprising it. @heading(ADVANCED 'BATCH' PROCESSING) @center(For Two or More Diskettes) It may happen that the document you create by batching files will be too large to fit on a single diskette. That is, when formatting a file, Perfect Writer creates an intermediate file, called a '.FIN' file, which will be sent to the printer and which is itself sometimes as large or larger than the original file. If there is not enough room on your diskette to hold both the original file(s) and the formatted '.FIN' file, you will have to format and print your document in smaller batches. When printing a document in separate batches it is still possible to have the entire document sequentially paged and sectioned, using '@@Set' commands to establish correct page and section numbers (See the discussion of this command form in your Perfect Writer User's Guide). An example might be the following: @center(@b[b:batch2.mss]) @begin(display) @@set(page=23) @b(*) @@set(chapter=2) @b(*) @@set(section=3) @@include(b:thisfile.mss) @@include(b:thatfile.mss) @@include(etc............) @end(display) In this 'second' batch file several '@@Set' commands have been used to 'set' the page, chapter and section number that will be used. The last numbering which occurred in the previous batch file (i.e. 'b:batch1.mss') was Chapter 3, Section 3, page @w<23. In> 'b:batch2.mss' the file 'Thisfile.mss' will begin printing on page '24' and the first section that occurs in that document will be numbered '3.4' (i.e. Chapter 3, Section 4). @b(*)Note that a 'set' reference specifies a number @b(one less) than the number that will actually begin the paging or sectioning. Thus, if 'b:thisfile.mss' is really a continuation of Chapter 3, the "@@Set" command must specify Chapter 2. The possible pre-defined 'counters' (i.e. 'page', 'chapter', 'section', etc.) are presented in your Perfect Writer User's Guide. At this time numbering by the footnoting command, '@@foot', cannot be changed using an '@@set' commmand. @include(b:footnote.mss) @Subheading{@b(Changing 'END SPACE')} When formatting, Perfect Writer divides machine memory into two parts: that which holds the running text, called 'page space', and that which accumulates footnotes, table of contents, and index entries, called 'end space'. If additional 'page space' is specified then there is correspondingly less 'end space' and visa versa. If you have a great number of footnotes, and index entries, you may encounter an error message saying: @example('Internal Error: Out of Memory. Error was on line of file 'b:thisfile.mss' in end space.')Should this happen, you will either have to reduce the number of files in your 'batch file', or increase the amount of space that has been reserved as 'end space'. ('Page space' cannot be increased, except by decreasing 'end-space'.) 'End space' is often initially set at 1000 bytes. Increasing it to as much as 8000 bytes will have no noticeable effect, unless your document is extremely long, in which case you may run out of 'page space' (and for which nothing can be done, but reduce the number of files that are being batched or lower the designated 'end space'). Use the following procedure to increase 'end space': @begin(enumerate) With your computer turned on, insert your Perfect Writer Edit Diskette in drive 'A' and your Installation diskette in drive 'B'. Push the 'RESET' button on the computer to initialize both diskettes. Your screen should now display the 'A>' prompt. Type:@center(@b[b:pfconfig ]) (This tells the computer to go to drive 'B' and enter the program 'PFCONFIG.COM') The screen will fill up with information and ask 'Do you wish to exit and change disks?' Enter:@center(@b) The screen will fill up again and say 'Type any character to continue'. Do this. 'PFCONFIG' will present its main menu. Choose option number 3, 'Select Perfect Writer default style parameters'. Enter: @center(@b{3 }) The screen changes to display the various 'Default Style Parameters' (eighteen in all). Select the last of these, 'End space', by entering:@center(@b{18 }) You are now in a position to change the allocation of 'endspace', which is initially set at 1000 bytes. Enter the amount that you desire in 1000 byte increments. (3000 is a good 'endspace' to try.) Follow the number you enter with a RETURN and exit the program by typing, in order: @center(@b{CTRL---G})(This will return you to the main menu for 'PFCONFIG') then the number@center(@b{'6' }) (This will get you out of 'PFCONFIG' and 'Warm Boot' you to CP/M, displaying the prompt 'A>'.) @end(enumerate) 'PFCONFIG' updates the 'PF.DAT' file on your Perfect Writer Edit Diskette. Hereafter, Perfect Writer will observe the new 'endspace' that you have specified. Choose option number 3, 'Select Perfect Write@center(Perfect Calc Tip Sheet) This file contains tips about Perfect Calc. @subheading(Associated Files) When changing file associations, it may be faster to use Perfect @w may be accomplished by editing the Perfect Calc spreadsheet file (filename.pc), changing the last line of the file to read "\afilename" where filename is the full name of the associated file (example: APENTRY4.PC). @subheading(Lookup Function) The lookup function requires sorted lookup keys, i.e. the row or column that you are looking in must have numeric entries in increasing order. If these entries are not in increasing order, the lookup function will stop when it encounters a value that is larger than your lookup key. For example, the following table @verbatim( a | b __________________________ 1| 1.00 5.00 2| 3.00 6.00 3| 2.00 7.00 4| 4.00 8.00 )will return a value of 6.00 when the command "lookup(2.00,a1:a4)" is given. This occurs because the 3.00 entry was before the 2.00 entry. However, the next table will return a value of 7.00 when given the command, "lookup(2.00,a1:a4)" : @verbatim( a | b __________________________ 1| 1.00 5.00 2| 2.00 7.00 3| 3.00 6.00 4| 4.00 8.00 ) @subheading(Tan function) Some manuals provide an incorrect formula for the Tangent function. The correct formula for Tangent is "TAN(x)=SIN(x)/COS(x)". @subheading(Manual Recalculation mode on large spreadsheets) When working with large spreadsheets it may be desirable to use the manual recalculation mode while making modifications. This will save having to wait for recalculation of the entire spreadsheet and associated files every time that an entry is modified. @subheading(Entering numbers as labels) If you desire to enter a label that begins with a number, the equals sign (=), or the minus sign (-), you must type a quote character (") before entering the label. @subheading(Perfect Calc responding with "unknown command"?) If Perfect Calc gives you the "unknown command" message to commands that are documented as existing, check that your "Caps lock" key is not on. Some Perfect Calc commands will not recognize uppercase letters. @subheading(Defining Regions) Regions will always be rectangular. It is not possible to define a non-rectangular region. @subheading(Buffers) If you get a "all buffers in use" message when trying to create a buffer or to read in a new file, you are either out of memory or you are already using all seven buffers. To recover from this, you must either delete one of your buffers, or decrease the size of the spreadsheet that you are working on (i.e. delete a number of cells in the spreadsheet). @subheading(Command Card Errata) Corrections for the Perfect Calc Command Card: @itemize{Redraw Screen -- Listed as "CTRL-L", should also include "or ESCape-CTRL-L", which was incorrectly placed with the "CTRL-S" entry. Lock Formulas in Region -- "CTRL-X l" (Control-X small "L") The small "L" is easily mistaken for the numeral one. Editing Entries -- The edit entry command is "CTRL-X e" Change Column Width -- The correct command is "CTRL-X w" rather than "CTRL-X y" as listed on the card.} @subheading(Printing Spreadsheets) It is possible to configure Perfect Calc for compressed print (if your printer supports this function). Using this function of your printer will allow you to print more columns of a spreadsheet per page. To set up Perfect Calc for this mode, run the PCCONFIG program and choose menu option 2, Configure printer. This menu has three options: @itemize(Printer width Printer initialization string Printer deinitialization string) For compressed print, you would choose option 2, Printer initialization string, entering the string that puts your printer into compressed print mode (check your printer manual for this information). After entering this string, you must select menu option 3 and enter the string that turns off the compressed print mode in your printer (also in your printer manual). Finally, you must modify menu option 1, Printer width, to be the number of columns that your compressed print will fit onto the page (once again in your printer manual). Exit from this menu by typing , and choose main menu option 4, Update (write) PC.OVL file. If you do not choose this option before exiting from the configuration program, the changes that you have made will not be saved. Finally, exit from the configuration program by choosing the "exit configuration program" option of the main menu. @subheading(Printing Spreadsheets to Perfect Writer files) The "CTRL-X CTRL-P" command can be used to print Perfect Calc spreadsheets to files, which can then be included in Perfect Writer manuscripts. However, you must first enter the configuration program (PCCONFIG) and change the printer width to 78 columns. @subheading(Net Present Value) There have been some reports that the Net Present Value function (NPV) does not produce correct results. @subheading(Scientific Notation with small numbers) Small numbers entered in the scientific notation display mode may not appear correctly on the screen. However, they are entered correctly in memory. They will appear correctly if you enlarge the width of the cell that the numbers are in by using the command "CTRL-X w". option before exiting from the configuration program, the changes t@message(This file is automatically included in the file 'TIPS.MSS' when that file is formatted or it can be formatted independently - or both!.) @subheading(@b[ENVELOPE ADDRESSING INSTRUCTIONS]) The instructions printed in your Perfect Writer manual (on pages XIX-21 and XIX-22) for addressing an envelope are incorrect. By creating a file as shown below with Perfect Writer (when printed rather than viewed on the screen), you will with obtain nicely addressed envelopes using your KayPro and Perfect Writer. You may change the format as you wish. The file itself, which allows you to address an envelope, may appear at first to be of dubious value (all that just to address an envelope?). However, you will notice that it is really a file that can be used to address @b(any) envelope. Utilizing '@@include', '@@message' and '@@include(con:)' commands it will automatically insert your return address (this should be in the file 'ADDRESS1.MSS') and will prompt you for any special routing instructions. For more information on how to use these commands refer to the index of your Perfect Writer manual. To use this file layout, create a file with Perfect Writer called 'ENVELOPE.MSS' (or any other name you wish) and procede in the normal format-and-print sequence. Enough of the discussion - on with the show! @begin(verbatim) @@pagefooting() @@style(paperwidth 9 inches, paperlength 4 inches, topmargin 1 line, bottommargin 1 line, leftmargin 1 character, rightmargin 1 character, headerspacing 0 lines, footerspacing 0 lines) @@include(b:address1.mss) @@blankspace(4 lines) @@message(Type the Name and Address to be included: ) @@address[@@include(con:)] @@blankspace(3 lines) @@message(Any special instructions?) @@flushleft(@@include[con:]) @end(verbatim) b(any) envelope. Utilizing '@@include', '@@message' and '@@include(con:)' commands it will automatic@message(This file is automatically included when formating the file 'BATCH.MSS', or can be formated indepentently - or both!) @subheading(@b[CREATING FOOTNOTES OVER 300 CHARACTERS LONG]) There is, however, an alternative to the present number-setting and character length (300 per footnote) limitations of the '@@foot' command. This method requires that you are able to place all of your footnotes at the end of (or elsewhere within) your document. A brief overview is next, followed by more in-depth instructions. Generally, this technique is most easily accomplished by splitting your screen while you create the document to be footnoted. You can adjust the windows so the larger one will show the document while the smaller one is used to create another file (under a different name e.g. 'FOOT.MSS') to hold the 'footnotes'. Then, when you wish to enter footnoted material, you simply use the superscripting command '@@+(xx)' [where 'xx' is the number you wish to give it] in the text, switch to the other window and enter the same number followed by the information you wish to have in that entry. When you have finished your masterpiece place an '@@include' command [e.g. @@include(foot.mss)] at the end of your text file to simultaneously format the footnote file and thereby also obtain consecutive page numbering. Aside from the basics (like creating a file to edit), relevant subjects and corresponding page numbers are listed below: @begin(verbatim) SUBJECT PAGE # Two window command X-1 to X-10 Enlarge window command X-6 Switch to other window command X-9 Find a file command IX-4 End of file command IV-11 @end(verbatim) Let's assume you have begun a document called @w<'TEXT.MSS'. When> you arrive at the spot you wish to make your first footnote, use the 'CTRL-X 2' command to split the screen (window), followed (if you wish) by the enlarge window command @w('CTRL-X ^'. Enter) the superscripting command '@@+(1), then switch to the other, smaller, window by entering the appropriate command, @w('CTRL-X o'. Before) entering the information you want in your footnote you need to create a new file in the smaller window occupied by the cursor. This is easily accomplished by using the Find a File command @w('CTRL---X CTRL--F'. When) asked 'Name of file to find' on the bottom of the screen type in 'FOOT.MSS' (or any other name you may wish) followed by a @w window the cursor is in will clear and will now ready for you to enter your footnote text. Once you have completed the footnote go back to the other window containing the main document ('CTRL---X o') and continue writing. Repeat this process throughout your file as required. When you have completed your masterpiece return again to the main document file (if you're not there already) and move to the end of it (Use the end of file command @w['ESC...>'). The] last line of this file should be '@@include(foot.mss)' so enter a RETURN to create a blank line and type in '@@include(foot.mss)'. Now save the file ('CRTL---X CTRL---S') and also the 'foot' file ('CTRL---X o' followed by @w['CTRL---X CTRL---S'). Exit] to the Main Menu of Perfect Writer ('CTRL---X CTRL---C'), format the 'TEXT.MSS' file and you should be the proud creator of a document with footnotes as long as you want them to be. bottom of the screen type in 'FOOT.MSS' (or any other name you may wish@style(indent 5 chars) @majorheading(WELCOME TO PERFECT FILER) There are six general areas concerning Perfect Filer in this Tips file to help you understand how to use the program. They are under the following headings: @begin(description)PERFECT FILER OVERVIEW@/This section contains information about Perfect Filer that will describe what the data base files are and what they do. Also there is a description of the first three options on Perfect Filer's main menu. GENERATING A LIST/REPORT@/This part goes through the process of formatting a list and give some hints on how to go about following the manual. It is important to read the section on formatting a list in your Perfect Filer manual before reading this section. GENERATING MAIL@/This section gives some information on how you may better print form letters to members of your Perfect Filer data base. There is also a section on how to print form letters and use the formatting commands of Perfect Writer to give a professional look to all of your letters. THE @b(CREATE) PROGRAM@/How do you create your own data base so it can be used efficiently? Creating a data base is very simple with Perfect Filer but it takes a lot of planning to get the "Perfect" data base. This section will give you some guidelines on using the Create program of Perfect Filer. MOVING DATA BASE MEMBERS@/Once you have created a data base and need to update it or if you need to clean out some blank patches in your old data base, the Move program will become one of your most powerful tools in using Perfect @w you happen to have used capital letters in your tag names this option will not work - there is a procedure on how to fix that problem included here. LIMITATIONS AND SPECIFICATIONS@/Perfect Filer has some limitations and the manual lists a few commands incorrectly. There are also some limits as to Perfect Filer's sorting ability and subset definitions with numbers. All of these are listed. If you know of more, please feel free to write and let us know.@end(description) @closing(Enjoy Perfect Filer) @newpage @majorheading(PERFECT FILER OVERVIEW) You recieved two predefined data base records with your Kaypro and Perfect Software that contain a couple of example members. They were supplied to help you understand how Perfect Filer works and to give you an idea of what you could create for yourself. Both of these data base records may be used for your own personal use if they fill your needs. The first data base is the "Individual Member Data Base" which is located on the Perfect Filer program diskette, the second data base is the "Organizational Data Base" which is located on the Perfect Writer Installation diskette. These two data base files must be transferred to their @b(OWN) formatted diskettes. The following files are necessary for the data base to work properly: @begin(description)database@/Contains the actual input data of each member. This file is only read through the Perfect Filer program.  It is the actual @b(DATA BASE). db.def@/The @b(D)ata @b(B)ase @b(DEF)initions file. This file is used by the Perfect Filer Create program and is only read by Perfect Filer. db.txt@/The @b(D)ata @b(B)ase @b(T)e@b(XT) file used for listing the data base definitions to the user. This file is only readable to the user and not the Perfect Filer program. It may be printed or listed on the screen by using "Ctrl--p" while in CP/M. hashtab@/The @b(HASH TAB)le used for sorting Perfect Filer records. A hash table is a list of records in an organized order. It is the hashtab file that allows you to input members in any order yet retrieve them without going through each previously entered member to update their file. lformdsc.sav@/This is the @b(L)ist @b(FORM)at @b(D)e@b(SC)riptors file. It contains the data descriptors that are used to format lists and reports. This file is only read by the Perfect Filer program. listform.sav@/The @b(LIST FORM)ats are held in this file. It is only read by the Perfect Filer program for use in defining list formats and generating list/reports. mailform.sav@/Contains @b(MAIL FORM)s that have been defined and are used in generating mail. This file is read only by the Perfect Filer program. member.h@/The @b(MEMBER H)ashtable key is the file used by Perfect Filer to connect the data base records with the hash table. It is utilized when accessing individual members. mformdsc.sav@/The @b(M)ail @b(FORM D)e@b(SC)riptors are contained in this file. Any data desriptor used in generating mail for a data base will be stored in here for the Perfect Filer program to reference. ss.sav@/The @b(S)ub@b(S)et definitions are @b(SAV)ed in this file once they have been defined. ssdesc.sav@/The @b(S)ub@b(S)et @b(D)e@b(SC)riptors are saved in this file once they have been defined. sslist.sav@/The @b(S)ub@b(S)et @b(LIST)s are saved in this file, and is used by Perfect Filer to produce the subset menu selections. mailtest.mss@/This is a form letter that was prebuilt with Perfect Writer to show an example of generating mail to members of a Perfect Filer data base. The letter uses Perfect Filer formats that are explained in Appendix B of your Perfect Filer manual. This letter can be used @b{only} with the Individual Member Data Base for testing. label.txt@/This file was built using Perfect Writer and is used to print standard one-inch one-across labels. This file can @b{only} be used with the Individual Member Data Base. label2.txt@/This file is the same as above except that it is set up to print addresses on envelopes so it is printed to the left centered position of the envelope. This file can @b{only} be used with the Individual Member Data Base. @end(description) Starting up Perfect Filer may not be easy for all of us. Once you have reached the point of the Main Menu that looks like the example below, you are ready to start investigating the prebuilt data base files provided for you. You may reach the Main Menu of Perfect Filer by first placing your Perfect Filer program diskette in drive 'A' and the data base diskette in drive @w{'B'. Press} the RESET button on the back of your Kaypro to initialize both diskettes. At the 'A prompt' (A>) type in the program "filer" as shown below: @center[ A>@b(filer) @+(^^^^^) you only type in this] @flushleft[-the @b(RETURN) indicates pressing the RETURN key -next you will then be asked which drive your data base is on select 'B'] @blankspace(2 lines) @begin(center)The following is what the main menu looks like: @blankspace(2 lines) [] Access Individual Members [] Generate List/Report [] Generate Mail [] Define Subsets [] Define List Format [] Define Printer Form @end(center) @subheading(Accessing Individual Members) This selection will give you another menu that will allow you to update, review and revise, or delete a member of the data base. If you select the review and revise choice, you will be asked for the four character code of the data base member you would like to revise. @b(H)oward @b(Wad)e will be in the individual member data base and @b(Perf)ect Software will be in the organizational data base. Notice that when the Name template is used you will be asked for the first character of the first name and the first three characters of the last name, @b(hwad) would be used to call the record of Howard @w will help keep members with identical first names separated for the Perfect Filer program. This option is only available on the Name template. All other access codes consist of the first four characters of the first field, @b(perf) would be used to call the record of Perfect Software. @newpage @subheading(Generate List/Report) This selection brings up three menus. The first is the List Format Menu, the second is the Subset Menu and the third is the Output Device Menu. @enumerate[ The first will give you the selection of the type of list format (how you want the list to look). For a trial run we will select the 'Name/Address'. The second menu will give you a choice of subsets (who you want listed from the data base). For the trial run we will select 'All Members'. The third selection will give you chioces to send the output to the screen, the printer, a file on disk, or a sort image. When you select the options on this menu, you will notice that there is to the right of the selections the words 'ON' and 'OFF' which will change each time you hit the 'X' key. By hitting the escape key you will be able to finish the process and Perfect Filer will output your list to the device you switched to 'ON'.] @subheading(Generate Mail) The first menu that comes up after this selection will give you a choice of printer forms. Select the one that is most appropriate, like continuous letterhead. You will be asked for the 'input file name' which in the case of the Individual Member Data Base is @w second menu will come up and you are to select where the output is to go. The third menu will give you three options as to how you want the output specified: @enumerate[Individually by Member ID - this will require printing one letter at a time to each person by inputing their ID code (the first four characters). By Subset - You will be given the menu of subset selections to choose from. This will print letters to members of the data base that are also part of the defined subset. From Sort Image - This selection first requires generating a list and sending it to a sort image. This is further explained in in the Generating Mail section of this file.] Define Subsets and Define List Format are further explained in Generating List/Reports section below. Define Printer Forms will be explained in the Generating Mail section below. If you are not familiar with some of the examples here, please go back to your Perfect Filer manual to refresh your memory. @newpage @majorheading(Generating a List/Report) Before trying this tip on Perfect Filer, you should be able to use the first three selections of the Main Menu on the two prebuilt data base files. We will start with @b(Define Subsets) and move through @b(Define List Format) (the most confusing). If you find it hard to understand formatting a list, try looking at the list formats that come with the Individual Member Data Base or the Organizational Data Base. @subheading(Define Subsets) A subset is easier to understand if you think of it as a @b(group). For example all of the members who live in Oregon are one group or @un(one subset). The subsets can be as precise as you want them to be like this example: all of the members who live in Roseburg, and live in Oregon, and have the last name of @w{Jones. Notice} when more than one criterion is used, they must all be true - there are no options to make one @b(or) the other true. However, you are given the 'Relational Operators' of: greater than, less than, equal to, less than or equal to, not equal to, greater than or equal to. For example, a subset may consist of all members who were born after 1955, giving us a subset defined as the year greater than 1955. Defining a subset is explained very well in the manual. However it is important that you have a solid understanding of exactly what a subset is and how it works. Subsets and Sorts are two completely different functions. Sorts put information in order alphabetically or numerically and a Subset is a grouping of information with similar data. @subheading(Define List Format) The most important thing to remember in formating a list in Perfect Filer is that you must define every single step which includes carriage returns, blankspaces, margins and limited punctuation. If carriage returns are left out your printer will run off the right side of the page and will print over itself. The only way to see what the actual list looks like is to go through some test runs of Generate List/Report after formatting it. You might look at an example of one of the list formats in the Individual Member Data @w{Base. Proceed} as follows: @begin(enumerate)Be sure you have the Perfect Filer program disk in drive 'A' and the diskette you created containing the Individual Member Data Base in drive 'B'. Push the RESET button to initialize both disks and proceed to the main menu of the Perfect Filer program. Select option 'Define List Format' of the Perfect Filer main menu. Then select 'Review and Revise' from the second menu. You will be given a selection of several list formats to choose from, the best is 'Name/Address Listing' the second selection on the list. Then answer 'no' to the next question. You will now select the option to 'Display the List Format'. Then you will send the output to the printer. Once this is done you will have a hard copy of a predefined list format that should give you an idea of what yours will look like. @end(enumerate) Before beginning, you will need a list of your logical field tag names. You can get this by using "Ctrl-P" while in CP/M and typing out the file named @w{@b(db.txt). Then} take the time to sketch out your idea of what the actual listing should look like when it is printed including the List Heading, Page Heading, and @w{Subheadings. If} you want a list that gives something like: @begin(flushleft)@b[Name: John Smith Occupation: Doctor Graduation:June 10, 1962 City: Denver Name: Joe White Occupation: Lawyer Graduation:May 30, 1960 City: Salt Lake City]@end(flushleft) You will notice that each of those fields will have to have carriage returns , spacing placed, and the titles placed by you. Your sketch might look like this: @begin(flushleft)@b[@r{The blank spaces are indicated by a '}/@r{' character.} Name:@r{/} Occupation:@r{/}@r{/////}Graduation: City:@r{/}]@end(flushleft) Note that although both the manual and the menu allow you to select logical fields for the page heading and list heading, it will result in errors when you Generate List/Report so use only String, Page Number, Date of Report, and Subset @w{Name. Also} be sure to count the number of fields you expect to need as you are limited to a total of 40. One problem most of us would like to avoid is having extra blank spaces between fields within the Member @w{Format. The} best way to get around this is by skipping the Set Field Length, since it is only an option and is unnecessary. If no field length is specified then Perfect Filer will close up space between first names and last names (see example): @begin(verbatim) Jon Smith | will look like: |Jon Smith Josephine Ramsdell | -> |Josephine Ramsdell **field length 10 characters **no field length @b(///) The blank spaces are noted by a @b(/) character. @end(verbatim) Once the list has been formatted, you will want to sort the list so it is in some kind of order. By selecting the option 'Define Sort Key' you will be able to sort your lists in alphabetical or numerical order. Remember a sort is not a subset and is much different. Sorting takes the members of the data base and 'sorts' them out in alphabetical or numerical order for you. You may sort by logical fields that are not alphanumeric and if they are numbers they can not be longer than 5 digits. As for the templates you may only sort by the Name and the Address templates. If you desire to sort by date then you must sort each logical field within the date template separately for example: the sort would have three keys month, day and year. This leaves you only two extra sort keys because Perfect Filer will only sort five consecutive keys. Now that you have finished formatting your list, select 'Display List Format' from the menu and have it printed out. Go over the hard copy very carefully and check for missing or extra carriage returns, wrong spelling of tag names, length of list as compared to page length and proper placement of the material on the printed page. It will take a few trial runs to actually get what you want for your list format. @newpage @majorheading(Generate Mail) The most helpful step to take before generating mail is to go to your Individual Member Data Base with Perfect Writer and edit the file named @w{'MAILTEST.MSS'. This} is a form letter that will give you an idea of how to create your own letter. Notice the use of '<' and '>' to enclose tag names and special Perfect Filer commands. Now look in your Perfect Filer manual under Appendix B - Formatting @w gives a listing of the available commands that Perfect Filer will use to format your form letter. If you do not like the limited use of Perfect Filer's format commands there is a way to use Perfect Writer's format commands which is explained a little latter. @subheading(Creating Your Form Letter) You will need your Perfect Writer edit diskette and your Perfect Filer data base diskette. Place your Perfect Writer Edit diskette in drive 'A' and the data base diskette in drive @w{'B'. Push} the RESET button to initialize both diskettes. Create your form letter on the data base diskette in drive 'B' (in the usual manner using Perfect Writer) under a name that is descriptive of the letter and is easy to remember like @w{'LETTER1.MSS'. For} this type of letter you are not allowed to use any of the '@@' commands for formatting. The limitation of formatting is set by the choices in Appendix B of your Perfect Filer manual. Once the letter is complete and you have checked it over, save it to your data base diskette. Replace your Perfect Writer edit diskette with your Perfect Filer program diskette, and warm boot with a @w{CTRL--C. Call} the FILER program and select the proper date. Select the option to Define Printer Forms. @subheading(Define Printer Form) This option is rather easy, but once you've successfully formatted a list you can just about do anything with Perfect Filer. Be sure to give your printer form a descriptive name, like LETTER1 FORM so you will know what it is later on. Set your left and right margins in tenths of an inch. So 15 would be read by Perfect Filer as 1.5 inches. Also set the option of continuous or single sheet letters, and the form length in lines (i.e. 66 lines). If you wish to print labels be sure to measure them exactly to prevent printing between the labels. The margin settings should not be changed, they should default to zero. Perfect Filer will automatically place a margin on your labels. Also note that label size limit is 9 lines and 3 across labels. Always check your printer form definitions to be sure that they are exactly what you want. @subheading(Generating Mail) Now that your letter has been written and your printer form has been defined you are ready to print a letter to each of the selected members of your Perfect Filer data base. @begin(enumerate) From the main menu of Perfect Filer select 'Generate Mail'. From this next menu you will select the printer form that you defined - we named it LETTER1 FORM. You are now asked to 'Enter input file name:' which is the file containing your form letter, we named it @w that file name followed by a carriage return. Your choice now is to turn on or off the CRT screen display, your printer output, or send the letters to a file on disk (explained later). Select to specify recipients by Subset.@end(enumerate) Watch and see if the form letter is comming out as you had planned. Is everything in the right place on the page? If you used and your output looks funny on your printer it may be because the printer code that Perfect Filer uses for underline it is not optionally changed so you will not be able to underline in Perfect Filer. @subheading(Printing a Sorted File of Form Letters) If you wish to print form letters in a particular order such as alphabetically by name you will need to go through the following steps. @begin(enumerate)Format a List that sorts by the logical field of your choice. Generate a List/Report and when you have the option of sending to the CRT, PRINTER, FILE, or SORT IMAGE turn on the sort image option. You will be asked for a name of the sort image - let us call it SORT.IMG so it is easy to remember. Return to the main menu of Perfect Filer and select Generate Mail. Go through the same steps to generate mail as explained previously until you have come to the point of 'Specifying @w{Recipients'. Here} you will select 'From Sort Image'. You will be asked for the name of the sort image which we called 'SORT.IMG'.@end(enumerate) The Sort Image is a file on your data base diskette that contains a listing of your members in alphabetical order. @b(First) you must Generate a List/Report to place the members in alphabetical order for the Sort Image file. Once the Sort Image file contains the members in alphabetical order, you may Generate @w{Mail. Now,} when you specify the recipients 'from the sort image', Perfect Filer will look at the Sort Image file (which you created in Generate a List/Report) and print the letters to the data base members in alphabetical order as they are within the Sort Image file. @subheading(Using Uppercase Letters in Tag Names)@set(Uppercase = page) If you are getting an error message when you are trying to generate mail or print labels that reads 'unknown command name not recognized' then you have most likely used uppercase letters in your tag names. To correct this problem you must follow this procedure: @begin(enumerate)Make two backup copies of your data base diskette. Label one @b(DB1) and the other @b(DB2). Using the CREATE program of Perfect Filer modify the existing data base labeled @b(DB1) and change the tag names to lowercase letters. Make sure that you do @b(not) change the spelling of any of your tag names while doing this. Once this is done save your modified data base. The process of saving will re-initialize your @b(DB1) data base. The next step requires using PIP and moving two files. First delete the files @b(DB.TXT) and @b(DB.DEF) from the @b(DB2) data base. Next PIP @b(DB.TXT) and @b(DB.DEF) from @b(DB1) to @b(DB2). @end(enumerate) This should change your tag names from uppercase to lowercase. If for any reason you lose members on your @b(DB2) data base try the same procedure over again. @majorheading(FORM LETTERS THAT USE PERFECT WRITER'S SPECIAL FORMATS AND RIGHT MARGIN JUSTIFICATION) The general opinion seems to be that if you want to print a form letter addressed to every person in your Perfect Filer address list, you are limited to the relatively meager formatting capabilities of Perfect Filer. Not so! Here's how you can print multiple copies of a letter, each one with a different name and address inserted automatically by Perfect Filer, and use all the abilities of Perfect Formatter and Perfect Printer, such as justification. proportional spacing, boldface, italics and superscripts. The basic idea is to have Perfect Filer print form letters one after another, but instead of sending them to the printer, to have them written head-to-tail, all together in one big disk file, called the 'output file'. Then Perfect Formatter and Printer are turned loose on this file, to print all the letters at once. Now for the details. Place your Perfect Filer data disk in drive 'B' and your Perfect Writer Edit disk in drive @w<'A'. Press> the RESET button and, after entering Perfect Writer, write the letter as usual, using all the '@@' commands you want, with only a few departures from normal: @begin(enumerate)Since @@STYLE, @@DEVICE, and similar commands should appear only once, they are left out for now, and added in separately at the top of the output file. @@NEWPAGE must be the last line of the end of the letter, to separate this letter from the next one in the output file. @@SET(page=0) at the bottom of the letter, just above the @@NEWPAGE, produces correct page numbering. Or, for single page letters, you might prefer to cancel page numbering with @w<@@PAGEFOOTING(). This> command should appear only once, the same as @@STYLE in paragraph @b(1) above. Tags of Perfect Filer fields are enclosed in angle brackets like '<' and '>', as described in pp. 42 to 46 of the Perfect Filer manual. (i.e. .) To avoid confusing the Perfect Filer formatter, do not use the following characters unless they are preceded by a backslash: <,>,{,},|,\ . The only exception to this rule is the use of angle brackets around a field tag such as '
', as mentioned in paragraph 4 above.@end(enumerate) Next save this letter file to the disk in drive 'B' (CTRL-X CTRL-S), and return to the menu. Now place a blank, formatted disk in drive 'B', push the RESET button, return to Perfect Writer and create a file named @w{'letter.mss'. This} will be Perfect Filer's output file, but for now you put only the general formatting commands in it, namely @@DEVICE, @@STYLE, and @@PAGEFOOTING(), if you want to eliminate page numbering. There shold be a carriage return after the last line. Here is an example of how @b(letter.mss) might look at this point: @flushleft[@@device(diablo10) @@style(indent 5 chars, leftmargin 6 chars) @@pagefooting()] Onto this new disk which has just had @b(letter.mss) written on it, you now transfer the following files from the Perfect Filer system disk, using PIP: @b(filer.com, setup, mail, @r[and] terminal.def). These are the only files you need to 'generate mail', leaving the rest of the space free to hold the output file, which is likely to be fairly long. There may be one more preliminary step required. If this is the first time you are going through this, you will need to set up a new printer form. Place the Perfect Filer data disk with your address list on it in drive 'B': and the Perfect Filer system disk in drive @w{'A':. Enter} Perfect Filer and proceed to define a printer form named 'Write to Disk File' with left margin = 0 and right margin = 60 (see tutorial starting on p. 134 of the Perfect Filer manual. Now leave the data disk in drive 'B':, but put the new 'mail' disk (containing @b{letter.mss} and the chosen few Perfect Filer files) in drive 'A' and press the RESET button. Once again enter Perfect Filer, then select 'Generate Mail: (no other option on the menu will work because of the files that are missing on your Perfect Filer disk). You will be presented with a succession of questions or prompts, to be answered as follows: @begin(enumerate)'Select Printer Form': Select the form 'Write to Disk File' that you defined earlier. 'Enter input file name:' The name of the file with the form letter in it is the entry you will give at this point. 'Mail Target Selection:' move to the file selection and turn it on (File -> ON). 'Enter output file name:' @b(a:letter.mss) is the name of the file where you want your output to be sent. Notice the 'A' drive has been specified. 'Do you want to start a new file or add to existing file?' If you pick create a new file, it will write over the information already in your file, so select 'Append to Existing File'. 'Mail target selection:' 'File' should already be @b(ON) so now just type the ESC key. 'How do you wish to specify the recipients?' See pp. 50 and 51 of the Perfect Filer manual. @end(enumerate) The output file, @b(letter.mss), should now be full of form letters, one after another. Format and print the file just as you would a normal Perfect Writer document file and you are finished. Since both the @b(letter.mss) and @b(letter.fin) files go on the same disk, there is room for an output file of only about 78K. @newpage @include(b:pftips2.mss)ll give at this point. 'Mail Target Selection:' move to the file selecti@message(This file is automatically included when the file PFTIPS.MSS is formatted prior to printing. The two are currently separate files due to PW.SWP size limitations.) @majorheading(Creating a Data Base Screen) Once you have called the CREATE program you will be facing one of the many menus of Perfect @w{Filer. This} is the main menu of the Create program and looks like the example below:@center( [] Create New Data Base [] Modify Existing Data Base [] Re-initialize Data Base Subsystem) The first and second selections will give you a second menu which is described below. The third selection will give you the option to re-initialize your data base, which means to erase members, printer forms, and list formats without altering the definitions of the actual data base. This is an example of the second menu that will appear after you select one of the first two options of the main menu. @center( [] Define Data Display Screen [] Display Screen Definitions [] Set System P arameters [] Save Data Base ) @subheading(Define Data Display Screen) This is the selection that will allow you to design and set up the screen to look exactly like you want it to. There are some limitations, but at this point you are limited mostly by the size of the video screen. The first field selected will be the field you access the members of your data base by so it is important to make this first field one that will contain original data such as: name, organization, serial number, or description. Try to select some type of field that is easy to remember and has a wide variety of entries. This first field will be used by Perfect Filer to access the members of your data base to update them or just check on other information within the record. Perfect Filer only uses the first four characters of this first field to address your member. This first field is refered to as: "member id". For example: Johnson would have a "member id" of @ux(john); Smith would have a member id of @ux(smit). It is important that you @b(always) enter something in this first field or members may be lost. Some of our manuals and reference cards will tell you to use 'CTRL--D' to delete a field while in the Create program. This is an error. The actual command is @w{'CTRL--S'. You} must place the cursor on the first space of the field you wish to delete before using this command or it will give you an error message. See example: @center(First Name: @b(_)_________________ @+(^) This is where the cursor should be to delete the name field.) 'CTRL--C' is the command that will delete the "data descriptor" which in the example above is [@b(First @w{Name:)]. ONE} little hint that has proved to be very helpful for others is that you have the option to change the "data descriptor" in the predefined templates. For example you may change the data descriptor "Organization" in the address template to something else like "Owner/Manager", however, the tag name will still be the same. This way you may use the templates and their many options for fields other than just the address or just the name. Over all the Create program is rather simple, but it is very important that you spend the time required to design the screen that will fill all of your needs as a Perfect Filer data base. Revising the screen can be done, but it does not always work as well as if you are able to design what you want the first time around. @subheading(Display Screen Definitions) This is the second option on the main menu of the Create program. Just by following through the menu and chapter V of the Perfect Filer manual you will be able to list on the printer or just the video screen all of the definitions for each of the fields in your Perfect Filer data base. This list will give you:@begin(description) Member Elements@/This is a listing of groups of logical fields like the address template is listed by itself although it contains several logical fields. The size in characters will also be given. Logical Field Tags@/This is the listing of each individual logical field used in your Perfect Filer data base. The last line will give you the total length of all the tag names and the amount available. System Parameters@/This is a listing of the system parameters which are settings that you are allowed to change. However, you should @b(only) change the Data Base Size, Update Interval and/or the Name.@end(description) @subheading(Set System Parameters) This is the third option you are given. If selected, it will give a second menu that looks like the example below: @center([] Set Program Directory [] Set Sort Directiory [] Set Help Directory [] Set Expected Data Base Size [] Set Data Base Backup Interval [] Set Data Base Name ) The @b(program directory) should be set to "A", the (sort directory should) be set to "B", and the @b(help directory) should be set to "A". These three options @i(should not) be changed. You may set the expected data base size to one you wish, but remember that Perfect Filer is limited to disk space and on the Kaypro II, it is rare to have a data base larger than 400-500 members. The @b(backup interval) is set at five but should be changed to one. The backup interval specifies how often new members are written to disk. As Perfect Filer comes to you with your Kaypro it will write entered new members to disk after every five members. If you have any type of power surge or power loss you may lose the most recent (up to five) entries you have made. Changing the backup interval to one will slow down the data entry process, but at the same time you will guard against losing information you just entered. The data base name may be changed by the last option which is sometimes required as the use of your data base changes. @subheading(Save Data Base) This option does exactly what is says. It is very important for you to realize that this option will "Re-Initialize" your data base i!f you are updating a current one. This means that all of your members will be erased, so be sure to have a @b(backup copy). If there are other files on your data base diskette, they are also in danger of being altered or erased so please have copies of them. @newpage @majorheading(Moving Data Base Members) Using the Move program will prove to be one of the most useful programs of Perfect Filer. Chapter IX of your Perfect Filer manual will explain how and why you would use the Move program. The main menu of the Move program @b(does not) give you the selection to move printer forms as the manual shows. These must be done manually using the PIP program on your CP/M diskette. You will have to PIP both @b(mailform.sav)@set(Move = page) and @b(mformdsc.sav) onto your new data base diskette from your old diskette if they were altered when you re-initialized your data base. As Perfect Filer goes through and moves each member, it will @b(not) overwrite the new data base and it will @b(not) delete members from the old data base. Perfect Filer will copy one member from the old data base and find a blank space on the new data base to write the member in. You will be shown on the screen which members are being written and which ones are not being written. If you copy a data base and use the Move program without re-initializing the new data base, Perfect Filer will move the members and give you two of everyone on your new data base. @newpage @majorheading(Limitiations and Specifications of Perfect Filer) This is a listing of the Perfect Filer limitations. It will help you to understand how the program works and will make some of the examples in the manual quit a bit clearer. The following list should be of some help to you: @begin(itemize)Always use the ESCAPE (ESC key) sequence to exit from Perfect @w{Filer. This} will prevent losing members and/or accidental altering of members in your data base. Never remove your Perfect Filer program or your Perfect Filer data base  diskette from your computer until you have reached a warm boot. Some commands in the manual and on some reference cards are incorrect.@itemize('CTRL--U' to update date template is actually 'CTRL--T'. 'CTRL--D' to delete a field while in CREATE is actually 'CTRL--S', and the cursor must be on the very first space of the logical field you wish to delete @b{before} using this command.) The MOVE program will not move printer forms as shown in your manual. You may use the PIP program to move the files (see list under "Moving Data Base Members" (see page @ref{Move}). The MOVE program will not overlay members, but will add them to the existing members of your target Data Base. The use of wild cards in Subsets is limited to alphanumeric fields. The '*' and '?' will work exactly opposite of the explanation in the manual. For example: if you want all the people with a middle name then you would enter an asterisk in that field and set as "not equal" using the 'CTRL--R' command. Other wise you will get a Subset of all members without middle names. DO NOT USE CAPITAL LETTERS IN YOUR tag names FOR LOGICAL @w will not be recognized when generating mail. If you do there is a complicated procedure explained above under "Using Uppercase Letters in Tag Names" (see page @ref{Uppercase}) to help correct the error of using capital letters for the tag names. When printing labels, there is a nine line limit of print available. You should use this @b{only} to print address labels or inventory labels. Your Perfect Filer data base is limited by the available disk space, be sure to check your available space with the STAT.COM program that is on your CP/M Utilities diskette (or D.COM from this Tips disk). Perfect Filer will not stop you from entering members once the disk is full so you may overwrite other members and not even know it. If you are using number fields defined as either numerical or alphanumerical, you will be limited in sorting and subsets. @itemize(Subsets - you should only use numbers of @b(four) digits or less. Sorting - you should only use numbers of @b(five) digits or less and they must be defined as @i(numerical) entries.) Templates are predefined to ease the use of Perfect @w it would be nice to define your own, Perfect Filer will not allow you to. @itemize(The social security template has some problems in printing out. If you want to use it, we suggest that you define your own logical field or three separate fields. The zip code in the address template is long enough to allow nine digit numbers, however it is necessary to have a dash between the first five and the last four digits of the new zip codes or the US Postal Service will not accept your mail. It is not recommended that you use the nine digit zip codes.) @end(itemize)verwrite other members and not even know it. If yPWCONFIGDOC [RPWSWP COM \SPWMEM COM ]SPWSWP COM ^"@center(@b[TIPS ON USING PERFECT SOFTWARE]) This file originated as the end of @w<'NATKUG1.MSS'. As> the number of tips grew they seemed to justify their own section of the Tips diskette. The most recent edition of the Tips disk no longer has 'NATKUG1.MSS' included as the information contained in it has become rather dated. New additions to the 'TIPS.MSS' file will be added to the end of this file. We hope you find this a worthwhile time and step saver. Please feel free to send suggestions for inclusion to @center(Perfect Software, Inc. Product Support Center ATTN: KayPro Tips Disk 702 Harrison Street Berkeley, CA 94710) @center(************************************************************) You may wish to print this file again without formatting it so you can see how these various commmands are entered. To do this, exit to your system prompt ('A>' or 'B>' and type:@center( @b[type b:tips.mss] then @b[CTRL---P] ) (Assuming your printer is turned on, on-line, has paper, etc.) @center(************************************************************) @SUBHEADING{@b(RUNNING OFF THE 'B' DRIVE)} Diskette capacity of the KayPro II requires that all Perfect Software program diskettes be placed in drive 'A' and all file diskettes in drive @w<'B'. Ordinarily> this requires that a 'B:' be placed in front of filenames when reading or writing a file to disk. If you forget to do this your data may be lost when Perfect Writer, Perfect Speller or Perfect Calc attempts to write to the full program diskette on drive 'A'. Here is an alternative that is nearly fail-safe. After booting up your KayPro in drive 'A' log immediately to drive @w<'B'. This> is accomplished by typing:@center( @b[b:] ) The computer will automatically read and write files to this drive. From drive 'B' call up the program file on drive @w<'A'. For> example: @center(@b[B> a:menu] ) You are now logged to drive 'B', but operating with a program in drive @w<'A'. This> eliminates the need for the disk drive designation in front of filenames, thereby elimiating accidental write operations to the 'A' drive. This will work with every Perfect Software program except Perfect @w@b(Do not log onto drive 'b' when using Perfect Filer.) This program automatically transfers from drive to drive as necessary. When running off drive 'B' be sure there are no Perfect Writer command files on the diskette in drive 'b' that will confuse Perfect Writer e.g. 'PF.DAT' or 'PW.SWP'. @subheading(@b{PW.HLP}) In case you didn't know it, Perfect Writer provides an on-line 'Help Menu' that will display all of the system commands. You can view this help menu whenever you are editing a file with Perfect Writer by typing:@center(@b[Escape. . .?] or @b[Control----X ?]) The screen will be split horizontally and the HELP menu will appear at the bottom of the screen. Directions for selecting any particular group of commands are given at the top of the @w erase the HELP directory from the screen, type the ONE WINDOW command: 'CTRL---X 1'. This helpful guide was added to Perfect Writer after the current manual was printed. @subheading{@b(FORMATTING TO CONSOLE)} In Perfect Writer what you see on the screen is not always what you get from the printer. Some people find this to be inconvenient, because they want to evaluate the layout of a document before it is printed to determine page breaks, the appropriateness of format commands, etc. Perfect Writer will let you display a formatted document to the screen before it is printed. When formatting a document simply select option 'C' of the formatting menu--"Send the output to the console device". Your document will be formatted according to the printer definition 'console' and displayed to the screen. The catch here is that 'console' is a definition specifying 10-pitch, non-proportional spaced printing with one-inch margins on pages of only 4 to 6 lines in length. When displaying, the file will scroll across the screen, margins nicely justified, showing the true number of characters per line you will obtain when printing the formatted file on paper. Special print commands such as underlining will not be displayed. Pages, however, will probably display in four to six line page lengths. By following a relatively simple procedure you can obtain true page lengths. @b(Start by making a back up copy of your Perfect Writer Edit Diskette!) Then: @begin(enumerate) Place your Perfect Writer Edit diskette in drive 'A' and your Installation diskette in drive 'B'. RESET the computer to initialize both diskettes. Type the following:@center( @b{b:pfconfig} ) This will take you into the program called 'PFCONFIG.COM' to alter the 'PF.DAT' file on your Perfect Writer diskette. The screen will fill with information and request a 'y' or @w<'n'. Supply> it with an @center(@b{n}) T#his will fill the screen with words that conclude with something along the lines of 'Type any character to continue'. Enter your favorite letter. The screen will change to display text and a menu. Type @center(@b{2} ) You are now faced with yet more text and another menu. This is the one we've been looking for. Choose option 5 by typing: @center(@b{5}) We have reached our destination! You should now be looking at a three line display below the previous menu. The first line tells you what your 'current default printer' is. The second line indicates the 'current printer type for console output'. Chances are very good that the device name specified for console output is @w<'Console'. The> third line asks 'What is the name of the default printer type:'. Enter the device name @u as it appears on the 'current default printer' line just above, followed by a RETURN. Now comes the $64,000 question: the screen will ask for 'the name of the printer type for console output:'. Enter the name of your default printer device @u as you did on the line above, followed by a @w screen will scroll and redisplay the last menu you encountered. The last two steps to this updating process are easy. Type@center(@b{6} ) This returns you to the first menu of @w<'PFCONFIG. Then> again type@center{ @b(6) }@end(enumerate) Congratulations! You have completed the process and your file, when 'Formatted to Console', will show true page lengths. Using the 'Format to Console' option will scroll the file too fast for you to be able to read it. You can stop the scroll at any time by typing@center(@b[CTRL---S])and restart it by @center(@b[typing any character]) You can also incorporate Perfect Formatter menu option 'A-Pause for manual insertion of each sheet of paper' with 'Format to console' and not only will the file be displayed with accurate page length but it will also automatically stop the scroll at the bottom of each page so you can see if you want to change where the pages breaks in the file. If you notice the lines of your file are displayed as a full line of print followed by a shorter line starting at the extreme left of the screen, another full line and so on, you are observing your KayPro's method of displaying lines longer than 80 characters. While looking somewhat strange this does, indeed, accurately reflect which characters will print as one line and will not affect true printed page length. The 'Format to Console' option does not create a printable '.FIN' file. You must put the '.MSS' file through Perfect Formatter again using option 'G---Start the formatting now'. @u(Before) you play with this, @u(please) make a back-up copy of your Perfect Writer Edit diskette. @w folks say that this technique of redefining their console does not display everything accurately when they use certain formatting commands. Should that be the case for you a slightly more involved process will need to be followed. Briefly, you will be looking at your 'Default Printer' definition then altering some of the information in the 'Console' definition to match the 'Default @w step by step it isn't as bad as it may sound. Here we go! @begin(enumerate)Follow the steps outlined above through number 5. You should, then, be looking at a listing of your 'Default Printer' and 'Default Console Output @w down the name of your 'Default Printer' @u(exactly) as it appears on the screen. Now type:@center(@b[CTRL---g]) to skip over the first question without changing it. Look once again at what is listed on your screen for the 'Console Output Device'. If it is not 'Console' that is what you should type in now followed by a RETURN. If it is 'Console', again type:@center(@b[CTRL---g]) Your screen should now be displaying the menu beginning with 'Display Printer Definitions'. Choose option three by typing:@center(@b[3]) then, in response to the question on the screen, enter your 'default @u(printer) name' @u(exactly) as you wrote it down, followed by a RETURN. The screen will change to display an array of questions and answers concerning what Perfect Writer needs to know about your particular printer. Take a moment if you wish to look it over and see how much of it makes sense to you (don't worry about it - for this operation all you need to be able to do is read, write and type...). When your curiosity is satisfied simply write down the answers to the first @u(seven) questions on the screen. When you have done that, type:@center(@b[CTRL---g]) You are once again returned to the menu headed 'Display Printer @w also once again want option number 3, obtained by typing:@center(@b[3]) then, in response to the question appearing on the screen, enter:@center( @b[Console] ) You should now be facing a series of eight questions (numbered 1 - 7 and 9). You$r goal is to have the first seven questions answered @u(exactly) the same as the seven answers you recorded from your 'Default Printer' definition. Follow the directions on the screen for changing the answers, being sure to @b(leave question nine unaltered). When all answers but number nine match (number nine MUST remain 'yes'), type:@center(@b[CTRL---g]) then a @center( @b[6] ) then a @center( @b[6] )@end(enumerate) You should now be back to the 'A>' system prompt and your console display, when that option is chosen, should be wonderful. @subheading{@b(MULTIPLE PARAGRAPHS IN DELINEATING ENVIRONMENTS)} Perfect Writer offers you a number of ways to automatically number, list or otherwise offset portions of your text by paragraph. These commands include 'ENUMERATE', 'ITEMIZE', 'LEVEL', 'DESCRIPTION' and others. A potential problem presents itself when one wishes to have more than one paragraph under a single delineation since the start of a new paragraph ordinarily informs Perfect Writer it should treat the following text as a new item. This problem is averted very simply by using the '@@Blankspace(x lines)' command (where 'x' is the number of blank lines you wish to be inserted) in place of a blank line. In the following example the paragraphs are separated by a blank line so each is treated as a separate item: @begin(enumerate)This is a sample paragraph, nothing more. This is a sample paragraph, nothing more. This is a sample paragraph, nothing more. This is a sample paragraph, nothing more. This is a sample paragraph, nothing more. This is a sample paragraph, nothing more. This is a sample paragraph, nothing more. This is a sample paragraph, nothing more. This is a sample paragraph, nothing more. This is a sample paragraph, nothing more. This is a sample paragraph, nothing more. This is a sample paragraph, nothing more. @end(enumerate) Now the first and second paragraphs will be divided only by '@@Blankspace(1 line)': @begin(enumerate)This is a sample paragraph, nothing more. This is a sample paragraph, nothing more. This is a sample paragraph, nothing more. This is a sample paragraph, nothing more. @blankspace(1 line)This is a sample paragraph, nothing more. This is a sample paragraph, nothing more. This is a sample paragraph, nothing more. This is a sample paragraph, nothing more. This is a sample paragraph, nothing more. This is a sample paragraph, nothing more. This is a sample paragraph, nothing more. This is a sample paragraph, nothing more. @end(enumerate) Using this method you can effectively create any number of paragraphs under a certain delineation. @include(b:envelope.mss) @subheading(@b) There may come a time (a close relative of once upon a time...) when you wish to have a wide left margin on-screen or when printing verbatim. This is easily accomplished. Simply place the cursor at the point you want your left margin to be and give the Indent Column command @center<@b[CTRL---x .] (period)>followed by the Reform Paragraph command @center(@b(ESC...Q)) This, in conjunction with using the set Fill Column command (CTRL---x f) will give the non-standard on-screen margins you desire. The following was created by putting '@@begin(verbatim)' above the text and '@@end(verbatim)' below it,setting the indent column to 15 and the fill column to 35: @begin(verbatim) This is a sample paragraph, nothing more. This is a sample paragraph, nothing more. @end(verbatim) That is a somewhat narrow example but it gives you the idea. When you wish to change the settings again, simply type @center<@b(ESC), the number you want it set to (e.g. 65), then the command (e.g. @b(CTRL---x f).> @subheading<@b()> @center(PERFECT SOFTWARE, INC. Product Support Center P.O. Box 1479 Eugene, Oregon 97440)you want your left ma This is the release date of the disk. RPWSWP COM \SPWMEM COM ]SPWSWP COM ^FOOTNOTEMSS pPFTIPS MSS toFTIPS MSS /PFTIPS2 MSS +TIPS MSS 8VERSION .INF 42 AD 1024 8 PWCONFIG.COM 0D 66 15616 122 PWCONFIG.DOC 2C 78 768 6 RPWSWP .COM 6D F3 768 6 SPWMEM .COM A1 28 512 4 SPWSWP .COM 93 09 768 6 FOOTNOTE.MSS DD E4 3584 28 PFTIPS .MSS FA 1D 28544 223 PFTIPS2 .MSS 8B 53 11136 87 TIPS .MSS 3A 14 14336 112 % Fog Library Disk FOG-CPM.200 Copyright (1988) by Fog International Computer Users Group to the extent not copyrighted by the original author for the exclusive use and enjoyment of its members. Any reproduction or distribution for profit or personal gain is strictly forbidden. For information, contact FOG, P. O. Box 3474, Daly City, CA. 94015-0474. as part of the description of a file indicates that the program is distributed on a "try first, pay if you like it" basis. If you find the program(s) meet your need, please refer to the author's documentation for information on becoming a registered user. Only by registering and paying for the programs you like and use will the authors of such programs continue development. Often, more complete documentation, additional modules, and new releases are available only to registered users. A collection of aids for the Kaypro user, aimed primarily at Perfect Software products (especially Perfect Writer). Filename Description -07-07 .88 This is the release date of the disk. -CPM200 .DOC This is the description of the disk contents. MENU11 .COM 8513 8K ver. 1.1 [PerfectWriter Menu 1 of 3] Replacement menu program for Perfect Writer versions up to 1.20. It is smaller, faster, and has fewer bugs and more error-checking. This version is for Kaypro II and 4.83 without graphics because it writes to the video RAM to increase speed of operation. MENU21 .COM E5B0 8K ver. 2.1 [PerfectWriter Menu 2 of 3] Replacement menu program for Perfect Writer versions up to 1.20. It is smaller, faster, and has fewer bugs and more error-checking. This version is a bit slower but will run on any Kaypro. Otherwise it is identical to version 1.1 MENU .DOC 2996 3K ver. x.1 [PerfectWriter Menu 3 of 3] Documentation for both versions. PERFSTAR.MAN 7488 33K ver. 2.3 [PerfStar 1 of 9] Convert commands of Perfect Writer 1.20 or 1.03 to accept keyboard commands much like WordStar's. With this a WordStar user can use Perfect Writer without learning a whole bunch of new commands. (The documentation includes a good summary of Perfect Writer features.) FUNCTS .TXT 3F4B 17K ver. 2.3 [PerfStar 2 of 9] The command redefinition file used by PWBIND. -READ .ME F2F0 2K ver. 2.3 [PerfStar 3 of 9] VERSION .INF 42AD 1K ver. 2.3 [PerfStar 4 of 9] PWCONFIG.COM 0D66 16K ver. 2.3 [PerfStar 5 of 9] Public domain version of configuration program for Perfect Writer. PWCONFIG.DOC 2C78 1K ver. 2.3 [PerfStar 6 of 9] RPWSWP .COM 6DF3 1K ver. 2.3 [PerfStar 7 of 9] Retrieve lost data from a .SWP file. SPWMEM .COM A128 1K ver. 2.3 [PerfStar 8 of 9] Retrieve lost data from memory. SPWSWP .COM 9309 1K ver. 2.3 [PerfStar 9 of 9] Configure your .SWP file. TIPS .MSS 3A14 14K [Perfect Tips 1 of 7] A collection of tips for Perfect Writer, Perfect Calc, etc. Designed to be printed with Perfect Writer. CALCTIPS.MSS ECAE 6K [Perfect Tips 2 of 7] ENVELOPE.MSS E77E 2K [Perfect Tips 3 of 7] FOOTNOTE.MSS DDE4 4K [Perfect Tips 4 of 7] PFTIPS .MSS FA1D 28K [Perfect Tips 5 of 7] PFTIPS2 .MSS 8B53 11K [Perfect Tips 6 of 7] BATCH .MSS A42F 9K [Perfect Tips 7 of 7] t.crc ENDIF SELE B STOR diskf-fn-"."-ft TO malt STOR SUBST(ft,1,2) TO mdate SET ALTE TO &malt SET ALTE ON ? filedesc SET ALTE OFF SET ALTE TO SELE A STOR diskf-"-"-SUBST(dfile,5,3)-"&mdiskno"-".DOC" TO malt SET ALTE TO &malt SET ALTE ON DO WHILE diskno="&mdiskno".AND. .NOT. EOF() IF diskno="000" IF dfile="FOG-DOS" ? " &'