P [0+8+FQ(+4)[1 0FO10F"G+Q1 'W+FQ()+4U1 FQ1"L0' ,Q1:M(Q1+4(]1]0)) \ { =G/ \ g j ; AM | i j S u;!/g@f2A^k 8 B Y g͙& Setup HEATH Libraryo@:i*|=u|FSImageOut 128M(m.mMake Prefix Char).YU M(m.mMake Prefix Char).ZU:.Y(?) m.m& Heath Prefix Character DriverU.P M(m.m& Load Bare) m.mSet Heath Key 2MS^R Down Real Line 12MS^R Bottom of Screen 4MS^R Backward Character 14MS^R Beginning of Line 6MS^R Forward Character 16MS^R End of Line 8MS^R Up Real Line 18MS^R Top of Screen 0MS^R Prefix Meta 10MS^R Prefix Control-Meta 1,m.m^R New Next LineF"EWm.m^R Next Line',20MS 1MS^R Backward Word 3MS^R Forward Word 11MS^R Backward Paragraph 13MS^R Forward Paragraph 5MS^R Next Screen 15MS^R Previous Screen 7MS^R Extended Command 17MS^R Instant Extended Command 9MS^R Delete Character 19MS^R Kill Word 26MS^R Kill Region 30MS^R Copy Region 21MS^R Prefix Meta 22MS^R Set/Pop Mark 23MS^R Transpose Characters 25MS^R Skip to Character 24MS^R Reverse Skip 28MS^R Zap to Character 27MS^R Repeat Skip/Zap 35FSQVector[1 :i*Skip to: U:1(3) :i*Skip back to: U:1(4) :i*Zap to: U:1(5) :i*Zap back to: U:1(6) Q1M.VSkip/Zap State Vector ]1 29MS^R Negative Argument 0FO..QHEATH Setup HookF"N[1M1' 0& Heath Prefix Character Driver[00F[HelpMac -Q.X"EM.I' FIU0 FQ()-640"LQ0:FCU0' F]HelpMac Q0-4110."N Q0U..1 Q:()(Q0)F"EQ:()(Q0:FC)F"EW:I*FG''' FS^RLASTU0 Q0,(Q0@FS^RCMAC)M(M.M& Prefix Describe) :I*0 Set Heath Key|FF-1"G[2[1' "#9,f Function: [1 m.m1[2' FF&1"N -10"LQ2U:.Z(+P) Q2U:.Y(+p)0' -10"EQ2U:.Z(N) Q2U:.Y(n)0' -20"EQ2U:.Z(M) Q2U:.Y(m)0' -11:G(:i*LBMDHC@AN STUVWJPQRE)[3 Q2U:.Y(Q3) 0' Q2M(m.m& Macro Name)U1 @FTPut 1 on special key:  :i*M.I FI-33."N:i*Not a special keyFSErr' FIU1 Q1-?"EFIU1 Q2U:.Z(Q1:FC) Q2U:.Y(Q1)0' Q2U:.Y(Q1)0^R Top of Screen"L-1'"#0':M(m.m^R Move to Screen Edge)^R Bottom of Screen-1:M(m.m^R Move to Screen Edge)^R Skip to Character0U:Skip/Zap State Vector(2) .F(F@M(m.m& Skip to Char))M(m.m& Maybe Push Point) 0& Skip to Char[0[1 FF-1"GU0' "# QSkip/Zap State Vector Q:S(Q:S(2)"NQ1"L6'"#5''"#Q1"L4'"#3'')M.I FI:FCU0 Q0u:S(0)Q1u:S(1)' Q1"G:C"EFG0FSErr'' Q1:S0F(WQ1"GR')"E FG0FSErr' 1^R Reverse Skip0-@:M(M.M^R Skip to Character)^R Zap to Character.[1 1u:Skip/Zap State Vector(2) F@M(m.m& Skip to Char) "LC' .:q1J :M(M.M^R Kill Region)^R Reverse Zap to Character0-@:M(M.M^R Zap to Character)^R Repeat Skip/Zap[0[1QSkip/Zap State Vector[2 q:2(2)"Em.m^R Skip to Character'"#m.m^R Zap to Character'u0 q:2(1)"L0-Q1U1' Q1u:2(1) q:2(0),q1:M0~FILENAME~HEATH~DOC~ ~FILENAME~Commands to use Heath keypad ~DOC~ & Setup HEATH LibraryS Sets up heath keypad. Makes the obvious assignments to the arrows, less obvious ones to everything else. ESC becomes a prefix character, with dispatch in .Y; ESC ? becomes another prefix character, with dispatch in .Z. Q.P gets a modified Prefix driver to make this all work. If $HEATH Setup Hook$ is defined, it is run afterwards to make any additional assignments or changes; it can access the function Set Heath Key (q.v.) by running MS, e.g. MS ~DOC~ & Heath Prefix Character DriverS M.P for Heath: handles prefix character. Given a q-vector as argument, it reads a character and returns the q-vector element it selects. Difference between this and standard is that ? is not treated as help. The character read is left in Q..1. ~DOC~ Set Heath KeyC Assigns a function to a Heath special key. For best results, use ^R Instant Extended Command to invoke this. String Argument is name of function to assign. You will be prompted to type the key to put the function on. Alternatively, if you are calling this from your init file, you can pass the key as a numeric arg. In this case, the keys are coded as follows: 0-9 unshifted keypad digits 10 period 11-19 shifted keypad digits (can't shift zero) 20 ENTER (can't shift this, either) 21-29 the 9 keys across the top (f1-f5, ERASE, blue,red,gray) 30 Shift-ERASE. You may also pass the function DEFINITION as a pre-comma arg, instead of passing the function NAME as a string arg. ~DOC~ ^R Top of Screen^R Move cursor to top of screen. With negative arg goes to bottom ~DOC~ ^R Bottom of Screen^R Move cursor to bottom of screen. ~DOC~ ^R Skip to Character^R Skips to target character. Skips forward to nth (or 1st) occurrence of next char typed. Backward if arg is negative. Edit bit on target ignored. Repeat Skip with ^R Repeat Skip/Zap. Pre-comma arg gives char to search for (instead of reading it). ~DOC~ & Skip to CharS Implements Skip to Character. This is a separate routine so that ^R Skip to Character can do the Auto Push Point Option. Optional pre-comma arg is the target char, post-comma arg is repeat ~DOC~ ^R Reverse Skip{^R Search backward for target char. I.e. like a backwards ^R Skip to Character. Repeat with ^R Repeat Skip/Zap. ~DOC~ ^R Zap to Character^R Kills text up to target character. Zap excludes target character. Negative arg zaps backward. Repeat Zap with ^R Repeat Skip/Zap. ~DOC~ ^R Reverse Zap to Characterv^R Zap backward to target char. I.e. like a backwards ^R Zap to Character. Repeat with ^R Repeat Skip/Zap. ~DOC~ ^R Repeat Skip/Zap^R Repeat the last Skip/Zap command regardless of any intervening commands other than skip/zap ~DIRECTORY~o& Setup HEATH Library & Heath Prefix Character Driver Set Heath Key ^R Top of Screen ^R Bottom of Screen ^R Skip to Character & Skip to Char ^R Reverse Skip ^R Zap to Character ^R Reverse Zap to Character ^R Repeat Skip/Zap ~INVERT~[1Q1