home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 1: Amiga / FrozenFish-Apr94.iso / bbs / alib / d7xx / d770 / uedit.lha / Uedit / Ustar.LZH / UstarConfig!A < prev    next >
Text File  |  1992-03-04  |  65KB  |  1,989 lines

  1.  
  2.                            System/Miscellaneous
  3.  
  4.                              Help key control
  5.  
  6. General Help: all Ustar key commands, primitive mode, #s, buffers
  7. <normal-help:
  8. equateNum(n99,curFile)
  9. if (not eqNum(n99,79)) {
  10.    if (not isEmpty(buf79)) { editBuf(buf79) returnTrue }
  11.    insertChar(buf79," ") moveCursor(buf79,sChar) clearChar(buf79) ..a fix
  12.    if (not insertFile(buf79,sFile,"UstarHelp!")) {
  13.       if (not insertFile(buf79,sFile,"S:UstarHelp!")) 
  14.          { putMsg("UstarHelp! not found") freeBuf(buf79) returnFalse } }
  15.    editBuf(buf79) flipFlag(buf79,readOnly) flipFlag(buf79,changed) } 
  16. else { editBuf(buf[n82]) freeBuf(buf79) }>
  17.  
  18.  
  19. Also used as a "no-op" for info-only menu selections
  20. Occasionally, the display isn't fully updated; this refreshes it manually
  21. <ctl-help:  refreshDisplay >
  22.  
  23. Get ASCII help; no discard on toggle (not very big)
  24. Get/toggle ASCII table; entire table fits on screen if in interlace mode.
  25. <shftCtl-help:
  26. equateNum(n99,curFile)
  27. if (not eqNum(n99,78)) {
  28.    if (not isEmpty(buf78)) editBuf(buf78)
  29.    else { 
  30.       insertChar(buf78," ") moveCursor(buf78,sChar) clearChar(buf78) ..a fix
  31.       if (not insertFile(buf78,sFile,"ASCII")) {
  32.          if (not insertFile(buf78,sFile,"S:ASCII")) 
  33.             { putMsg("ASCII not found") freeBuf(buf78) returnFalse } } 
  34.       editBuf(buf78) flipFlag(buf78,readOnly) flipFlag(buf78,changed) } }
  35. else editBuf(buf[n82])>
  36.  
  37.  
  38. Get the UstarTutor file to help user learn Ustar editing actions
  39. <alt-u:
  40.    loadFile("UstarTutor") if (isEmpty(curFile)) {
  41.      equateNum(n99,curFile) editBuf(buf[n82]) freeBuf(buf[n99])
  42.      loadFile("s:UstarTutor") if (isEmpty(curFile)) {
  43.         equateNum(n99,curFile) editBuf(buf[n82]) freeBuf(buf[n99])
  44.         putMsg("UstarTutor not found, or no buffers.")
  45.         beepDisplay returnFalse } }
  46.    equateNum(n82,curFile)
  47. >
  48.  
  49.  
  50. Get the QuickRef file for reference to summary of Uedit command language
  51. <alt-q:
  52.    loadFile("UeRef") if (isEmpty(curFile)) {
  53.      equateNum(n99,curFile) editBuf(buf[n82]) freeBuf(buf[n99]) 
  54.      loadFile("s:UeRef") if (isEmpty(curFile)) {
  55.         equateNum(n99,curFile) editBuf(buf[n82]) freeBuf(buf[n99])
  56.         putMsg("UeRef not found, or no buffers.")
  57.         beepDisplay returnFalse } }
  58.    equateNum(n82,curFile)
  59. >
  60.  
  61.  
  62.  
  63.                               Display / Windows
  64.  
  65. Toggle to tiny window from keyboard or menu (same as clicking title window)
  66. <rAmiga-help: toggle(toTiny)>
  67.  
  68. Get buffer to edit or show, via either number or name. Returns # in n99.
  69. <virtual-b:
  70. equateNum(n99,curFile)  .. save current file #
  71. ..freeBuf(buf74) 
  72. moveCursor(buf74,sFile) equateLoc(buf54,sInvert,eInvert)
  73. inputString(buf74)
  74. if (not isEmpty(buf74)) {  .. get buffer ID
  75.    moveCursor(buf74,sFile)
  76.    if (is(buf74,decimalNum)) toNumber(n99,buf74)  .. spec'd via #, get it
  77.    else {                       .. specified via name, figure out number
  78.       getMaxFiles(n97) decNum(n97)
  79.       freeBuf(buf98)
  80.       if (getFlag(buf98,searchCaps)) flipFlag(buf98,searchCaps)
  81.       setSearch(buf74)
  82.       do (n98,0,n97) {
  83.          getFileName(buf98,buf[n98])
  84.          moveCursor(buf98,sFile) insertChar(buf98," ")
  85.          moveCursor(buf98,sFile)
  86.          if (search(buf98,sInvert,eInvert,1)) {
  87.             equateNum(n99,n98) goto label(1) } }    
  88.       label(1)
  89.    }
  90. }>
  91.  
  92.  
  93. Open a split window, optionally specifying the buffer and size
  94. <alt-v:
  95. putMsg("Enter buffer # or name to show in split window, none for current:")
  96. runKey(virtual-b)  .. get buf name/#
  97. freeBuf(buf97) insertRgn(buf97,sFile,
  98. "Enter size in screen lines of window split (default is ",all)
  99. toWord(buf97,splitSize) insertRgn(buf97,atCursor,"; 0 closes):",all)
  100. putMsg(buf97)
  101. if (not inputNum(n98)) equateNum(n98,splitSize)
  102. putMsg(" ")
  103. if (not splitWindow(buf[n99],n98)) { 
  104.    if (not eqNum(n98,0)) {
  105.       putMsg("Can't make window - probably not enough display space!")
  106.       returnFalse 
  107.    }
  108. }
  109. equateNum(n99,curFile) getMaxFiles(n98)
  110. if (not geNum(n99,n98)) equateNum(n82,curFile)
  111. >
  112.  
  113.  
  114. Split Kwik - Klone a split window in current buffer, at default split size
  115. <alt-k:
  116. if (not splitWindow(curFile,splitSize)) {
  117.    putMsg("Can't make window - probably not enough display space!")
  118.    returnFalse }
  119. equateNum(n99,curFile) getMaxFiles(n98)
  120. if (not geNum(n99,n98)) equateNum(n82,curFile)
  121. >
  122.  
  123.  
  124. Eliminate active split window from the screen (buffer contents not touched)
  125. <alt-y:
  126. if (not splitWindow(curFile,0)) { 
  127.    putMsg("No split windows to close!") returnFalse }
  128. equateNum(n99,curFile) getMaxFiles(n98)
  129. if (not geNum(n99,n98)) equateNum(n82,curFile)
  130. >
  131.  
  132. Make next split window the currently active one (same as clicking in it)
  133. <alt-n: toggle(windowSplit) 
  134. equateNum(n99,curFile) getMaxFiles(n98)
  135. if (not geNum(n99,n98)) equateNum(n82,curFile)
  136. >
  137.  
  138. Set the default size for split windows, in screen lines
  139. <alt-z:
  140. freeBuf(buf99) insertRgn(buf99,sFile,
  141. "Enter default size for split windows, in screen lines (default is ",all)
  142. toWord(buf99,splitSize) insertRgn(buf99,atCursor,"):",all)
  143. putMsg(buf99)
  144. if (inputNum(n99)) if (gtNum(n99,1)) equateNum(splitSize,n99)
  145. >
  146.  
  147. 2.3c: Make current split-window one line bigger
  148. <lAmiga-=: 
  149. equateNum(n98,curFile)
  150. getSplitLines(n96,n97) sub(n97,n97,n96) incNum(n97)  ..get cur size & increase
  151. splitWindow(curFile,0)
  152. if (not splitWindow(buf[n98],n97)) {
  153.    decNum(n97)     .. decrement it back
  154.    splitWindow(buf[n98],n97)
  155.    returnFalse
  156. } >
  157.  
  158. 2.3c: Make current split-window one line smaller 
  159. <lAmiga--: 
  160. equateNum(n98,curFile)
  161. getSplitLines(n96,n97) decNum(n97) sub(n97,n97,n96) .. cur size - 1
  162. if (gtNum(2,n97)) returnFalse
  163. splitWindow(curFile,0)
  164. splitWindow(buf[n98],n97)
  165. >
  166.  
  167.  
  168.                               Gadget control
  169.  
  170.  
  171. Safe Quit: Exits Ustar safely, asking if you want to save any changed files
  172. <normal-closeBox: runKey(shftCtl-x) >
  173. DANGEROUS QUIT!!! - quits IMMEDIATELY! - CHANGES NOT ALREADY SAVED ARE LOST!
  174. <shftAltCtl-closeBox: beepDisplay beepDisplay beepDisplay quit(0) >
  175.  
  176. Next buffer
  177. <normal-gadget1: runKey(normal-f1) >
  178.  
  179. Previous buffer
  180. <normal-gadget2: runKey(shft-f1) >
  181.  
  182. Scroll down - fast
  183. <normal-gadget3: while (mouseDown) { vScroll(downLine) updateDisplay } 
  184. if (not onScreen(atCursor)) { 
  185.    equateLoc(curFile,atCursor,sPage) refreshDisplay }>
  186.  
  187. Scroll up - fast
  188. <normal-gadget4: while (mouseDown) { vScroll(upLine)   updateDisplay  }  
  189. if (not onScreen(atCursor)) { equateLoc(curFile,atCursor,ePage) 
  190.    moveCursor(curFile,upLine) refreshDisplay }>
  191.  
  192.  
  193.                             Space bar control
  194.  
  195.  
  196. Process space bar to work properly.  V2.3, eliminated sLine/File checking. 
  197. Space bar; insert mode inserts a space; overstrike replaces char. with space
  198. <normal-space: 
  199. if (eqNum(n84,0)) {
  200.    if (getFlag(curFile,overStrike)) {
  201.       if (is(curFile,eFile)) insertChar(curFile," ")
  202.       if (is(curFile,eLine)) insertChar(curFile," ") 
  203.       else { swapChar(curFile," ") moveCursor(curFile,eChar) } }
  204.    else insertChar(curFile," ")
  205. }
  206. else { equateNum(n84,0) putmsg(" ") }
  207. >
  208.  
  209. Was able to eliminate sFile checking from this command.
  210. Insert a space (useful in OverStrike mode)
  211. <ctl-space: if (eqnum(n84,0)) { 
  212.    insertChar(curFile," ") moveCursor(curFile,sChar) }
  213. else { equateNum(n84,0) putMsg(" ") } 
  214. returnTrue>
  215.  
  216.  
  217. Move cursor one character to the right, like right arrow does
  218. <shft-space: moveCursor(curFile,eChar) >
  219.  
  220.  
  221.  
  222.                             Return Key control
  223.  
  224.  
  225. Process return key to work properly. Removed sFile checking v2.3a.
  226. To beginning of next line.  Insert mode inserts lines; overstrike doesn't.
  227. <normal-return:
  228. if (getFlag(curFile,overStrike)) {
  229.    if (not is(curFile,eLine)) moveCursor(curFile,eLine)
  230.    if (is(curFile,eFile)) insertChar(curFile,eLine)
  231.    else moveCursor(curFile,eChar) }
  232. else { 
  233.    insertChar(curFile,eLine)
  234.    if (getFlag(curFile,autoIndent)) runKey(shft-return) }
  235. >
  236.  
  237. Find the line the cursor is on and make that the middle line of the screen
  238. <ctl-return: vScroll(atCursor) >
  239.  
  240. Uses n99
  241. Match previous line's indentation
  242. <shft-return: 
  243. if (not is(curFile,sLine)) moveCursor(curFile,sLine)
  244. if (is(curFile,sFile)) returnFalse
  245. moveCursor(curFile,upLine)
  246. while (nothing) {            .. find first printable char on prev line, or eol
  247.    if (not is(curFile,space)) if (not is(curFile,9)) goto label(1)
  248.    moveCursor(curFile,eChar) }                .. ^- checks for Tab char too
  249. label(1)
  250. locToCol(curFile,n99,atCursor)     .. save column
  251.  
  252. moveCursor(curFile,downLine)
  253. if (not is(curFile,sLine)) moveCursor(curFile,sLine)
  254. while (nothing) {                  .. clear leading space from this line
  255.    if (not is(curFile,space)) if (not is(curFile,9)) goto label(2)
  256.    clearChar(curFile) }
  257. label(2)
  258. decNum(n99)
  259. while (decNum(n99)) insertChar(curFile," ")  .. and indent it to match
  260. >
  261.  
  262.  
  263.                                 F1 - files
  264.  
  265.  
  266. Next buffer
  267. <normal-f1: 
  268. equateNum(n99,curFile)  
  269. getMaxFiles(n98)
  270. if (geNum(n99,n98)) {
  271.    editBuf(buf[n82])
  272. }
  273. else {
  274.    toggle(curFile) 
  275.    equateNum(n82,curFile)
  276. }> 
  277.  
  278. Previous buffer
  279. <shft-f1: 
  280. equateNum(n99,curFile) 
  281. getMaxFiles(n98) decNum(n98)
  282. while (nothing) {
  283.    if (gtNum(n99,n98)) equateNum(n99,n82)  .. if in global buf, back to ebuf
  284.    decNum(n99)
  285.    if (gtNum(0,n99)) equateNum(n99,n98)
  286.       if (not isEmpty(buf[n99])) {
  287.          editBuf(buf[n99]) equateNum(n82,curFile) returnTrue } } >
  288.  
  289. View all non-empty global (internal use) buffers one by one
  290. <ctl-f1:  equateNum(n97,curFile) getMaxFiles(n96)
  291. do (n99,n96,99) if (not isEmpty(buf[n99])) {
  292.    editBuf(buf[n99]) vScroll(sFile)
  293.    putMsg("Buffer view: F1=Next, F2=Edit, F3=Cancel")
  294.    getKey(n98)
  295.    if (eqNum(n98,normal-f2)) { putMsg(" ") returnTrue }
  296.    if (eqNum(n98,normal-f3)) { editBuf(buf[n97]) putMsg(" ") returnTrue } 
  297. putMsg(" ")
  298. >
  299.  
  300. Swap current buffer with swap buffer (buffer 80)
  301. <alt-f1: swapBuf(curFile,buf80) 
  302. getMaxFiles(n98) equateNum(n99,curFile) 
  303. if (not geNum(n99,n98)) equateNum(n82,curFile)>
  304.  
  305. Edit specific buffer, specifying by name or #
  306. <altCtl-f1: putMsg("Edit buffer # or name:")
  307. runKey(virtual-b)  .. get buf name/#
  308. editBuf(buf[n99]) 
  309. getMaxFiles(n98) if (not geNum(n99,n98)) equateNum(n82,curFile) .. set as current
  310. >
  311.  
  312.  
  313. Execute AmigaDOS command and collect results
  314. <shftCtl-f1:
  315. putMsg("AmigaDOS command:")
  316. movecursor(buf75,eFile)
  317. inputString(buf75) if (isEmpty(buf75)) returnFalse
  318. freeBuf(buf82) if (not execute(buf82,buf75)) { 
  319.    putMsg("Error - AmigaDOS rejected command.") beepDisplay returnFalse }
  320. if (not isEmpty(buf82))
  321.    { putMsg("AmigaDOS result:") editBuf(buf82) }
  322. else
  323.    { putMsg("AmigaDOS returned no message.") 
  324.    editBuf(buf[n82]) freeBuf(buf82) }
  325. returnTrue>
  326.  
  327. Execute AmigaDOS command without getting anything back from DOS
  328. <shft-f5:
  329. putMsg("AmigaDOS command:")
  330. movecursor(buf75,eFile)
  331. inputString(buf75) if (isEmpty(buf75)) returnFalse
  332. if (not execute(" ",buf75)) { 
  333.    putMsg("DOS command error") beepDisplay returnFalse }
  334. returnTrue>
  335.  
  336.  
  337. DANGEROUS QUIT!!! - quits IMMEDIATELY! - CHANGES NOT ALREADY SAVED ARE LOST!
  338. <shftAltCtl-f1: beepDisplay beepDisplay beepDisplay quit(0) >
  339.  
  340. n96 # files,  n97 tot. size,  n99 loop cntr,  n95 maxfiles,  n98 temp
  341. Show all edit buffers that are in use, summarize info
  342. <shftAlt-f1: freeBuf(buf97) insertRgn(buf97,sFile,"Getting info...",all)
  343. freeBuf(buf99) 
  344. runKey(virtual-s)
  345. insertRgn(buf99,atCursor,"
  346.  
  347. #  Buffer Name                             Changed?  Size (Bytes)
  348.               ** Non-Empty Edit Buffers ** 
  349. ", all)
  350. getMaxFiles(n95) decNum(n95)
  351. equateNum(n97,0) equateNum(n96,0) 
  352. do(n99,0,n95) {
  353.    if (not isEmpty(buf[n99])) {
  354.       add(n96,n96,1) freeBuf(buf98)
  355.       toWord(buf97,n99) insertChar(buf97,",") putMsg(buf97)
  356.       getFileName(buf98,buf[n99]) moveCursor(buf98,sFile)
  357.       toWord(buf98,n99) insertChar(buf98," ") 
  358.       if (not geNum(n99,10)) insertChar(buf98," ")
  359.       moveCursor(buf98,sFile)
  360.       do (n98,1,45) {
  361.          if (is(buf98,eFile)) insertChar(buf98," ")
  362.          else moveCursor(buf98,eChar) }
  363.       if (getFlag(buf[n99],changed)) insertRgn(buf98,atCursor,"Yes     ",all) 
  364.       else insertRgn(buf98,atCursor," -      ",all)
  365.       FileSize(buf[n99],n98) toWord(buf98,n98) add(n97,n97,n98)
  366.       insertChar(buf98,eLine)
  367.       insertRgn(buf99,atCursor,buf98,all)
  368.    }
  369. }
  370. moveCursor(buf99,eFile) insertChar(buf99,eLine)
  371. toWord(buf99,n96) if(not geNum(n96,10)) insertChar(buf99," ")
  372. insertRgn(buf99,atCursor,
  373. "                 <-- Totals -->                    ",all)
  374. toWord(buf99,n97)
  375. if (not isEmpty(buf80)) insertRgn(buf99,atCursor,"
  376.      ** NOTE: The swap buffer (# 80) is not empty **",all)
  377. ..moveCursor(buf99,sFile) editBuf(buf99) vScroll(atCursor) 
  378. ..using the below instead of above JUST to get rid of stupid display flicker
  379. freeBuf(buf98) insertChar(buf98," ") moveCursor(buf98,sFile)
  380. insertRgn(buf98,eFile,buf99,all) freeBuf(buf99) editBuf(buf98) 
  381. putMsg("F1 resumes")
  382. >
  383.  
  384. Routine used by virtual-s to save a few bytes
  385. <virtual-space: if (gtNum(10,n99)) insertChar(buf99," ")
  386. insertChar(buf99," ")>
  387.  
  388.  
  389. Called by SA-F1 to show global flag status
  390. <virtual-s:
  391. insertRgn(buf99,atCursor,"
  392. MaxFiles    SPEAK:Alerts :Pitch   End-of-Line   Prim.mode.Esc GlobalB<User>LocB
  393. |  SplitSize      |:Msgs      |   |  EitherOr   |  Spooks     | Beep TrueTabs |
  394. |  |  IdleTime    | |:Speed   |   |  | WildCard |  | PrintSel | | AutoSave  | |
  395. |  |  |    Serial#| | |  :Mode|   |  | | CmdMult|  | | UseKeys| | | Icons   | |
  396. ",all)
  397. ..no show, obvious from display: 
  398. ..   busies, columnar, teachKeys, markGadgets, lace, cram, rowCol, learnMode
  399. ..used internally: searchCaps
  400.  
  401. getMaxFiles(n99) toWord(buf99,n99) runKey(virtual-space)
  402.  
  403. toWord(buf99,splitSize) equateNum(n99,splitSize) runKey(virtual-space)
  404.  
  405. toWord(buf99,idleTime) equateNum(n99,idleTime) runKey(virtual-space)
  406. if (gtNum(100,n99)) insertChar(buf99," ") 
  407. if (gtNum(1000,n99)) insertChar(buf99," ")
  408.  
  409. getSerialNum(n99) freeBuf(buf98) toWord(buf98,n99)
  410. fileSize(buf98,n98) do (n97,n98,6) insertChar(buf98," ")
  411. insertRgn(buf99,atCursor,buf98,all) moveCursor(buf99,eLine)
  412.  
  413. if (getFlag(curFile,speakAlerts)) insertChar(buf99,"Y") 
  414. else insertChar(buf99,"n")
  415. insertChar(buf99," ")
  416.  
  417. if (getFlag(curFile,speakMsgs)) insertChar(buf99,"Y") 
  418. else insertChar(buf99,"n")
  419. insertChar(buf99," ")
  420.  
  421. toWord(buf99,0) equateNum(n99,0) runKey(virtual-space)
  422. if (gtNum(100,n99)) insertChar(buf99," ")
  423.  
  424. toWord(buf99,0) insertRgn(buf99,atCursor,"   ",all)
  425.  
  426. toWord(buf99,0) equateNum(n99,0) runKey(virtual-space)
  427. if (gtNum(100,n99)) insertChar(buf99," ")
  428.  
  429. insertChar(buf99,eLine) moveCursor(buf99,sChar) copyChar(buf99,n99)
  430. clearChar(buf99) toWord(buf99,n99) runKey(virtual-space)
  431.  
  432. insertChar(buf99,eitherOr) insertChar(buf99," ")
  433.  
  434. insertChar(buf99,wildCard) insertChar(buf99," ")
  435.  
  436. toWord(buf99,cmdMultiplier) equateNum(n99,cmdMultiplier) runKey(virtual-space)
  437. if (gtNum(100,n99)) insertChar(buf99," ") 
  438. if (gtNum(1000,n99)) insertChar(buf99," ")
  439. insertChar(buf99," ") insertChar(buf99," ")
  440.  
  441. toWord(buf99,pmEsc) equateNum(n99,pmEsc) runKey(virtual-space)
  442.  
  443. if (getFlag(curFile,spooks)) insertChar(buf99,"Y") else insertChar(buf99,"n")
  444. insertChar(buf99," ")
  445.  
  446. toWord(buf99,prefPrint) insertChar(buf99," ")
  447.  
  448. if (getFlag(curFile,useKeys)) insertChar(buf99,"Y") else insertChar(buf99,"n")
  449. insertRgn(buf99,atCursor,"      ",all)
  450.  
  451. if (getFlag(curFile,userGlobalB)) insertChar(buf99,"Y")
  452. else insertChar(buf99,"n")
  453. insertChar(buf99," ")
  454.  
  455. if (getFlag(curFile,userGlobalA)) insertChar(buf99,"Y")
  456. else insertChar(buf99,"n")
  457. insertChar(buf99," ")
  458.  
  459. if (getFlag(curFile,userLocalA)) insertChar(buf99,"Y")
  460. else insertChar(buf99,"n")
  461. insertChar(buf99," ")
  462.  
  463. if (getFlag(curFile,icons)) insertChar(buf99,"Y") else insertChar(buf99,"n")
  464. insertRgn(buf99,atCursor,"       ",all)
  465.  
  466. if (getFlag(curFile,trueTabs)) insertChar(buf99,"Y") else insertChar(buf99,"n")
  467. insertChar(buf99," ")
  468.  
  469. if (getFlag(curFile,userLocalB)) insertChar(buf99,"Y")
  470. else insertChar(buf99,"n")
  471. ..insertChar(buf99," ")
  472. >
  473.  
  474.  
  475.                               F2 - favorites
  476.  
  477. Switch to next file that has its "Favorite" flag set, if any
  478. <normal-f3: toggle(favorite) 
  479. getMaxFiles(n98) equateNum(n99,curFile) 
  480. if (not geNum(n99,n98)) equateNum(n82,curFile) .. set as current
  481. >
  482.  
  483. Toggle the "Favorite" flag setting of current file on/off (for sets of files)
  484. <shft-f3: flipFlag(curFile,favorite) 
  485. if (getFlag(curFile,favorite)) putMsg("Fave") else putMsg("Norm")
  486. returnTrue>
  487.  
  488. Clear the "Favorite" flag of all files
  489. <alt-f3: putmsg("No Faves")
  490. do (n99,0,99) 
  491.    if (getFlag(buf[n99], favorite)) flipFlag(buf[n99], favorite)
  492. putMsg(" ") returnTrue >
  493.  
  494.  
  495.  
  496.                                  Colors/Screens
  497.  
  498. <defines:
  499. define(N_0 ,n0)
  500. define(N_1 ,n1)
  501. define(N_2 ,n2)
  502. define(N_3 ,n3)
  503. define(N_4 ,n4)
  504. define(N_5 ,n5)
  505. define(N_6 ,n6)
  506. define(N_7 ,n7)
  507. define(N_8 ,n8)
  508. define(N_9 ,n9)
  509. define(N_10 ,n10)
  510. define(N_11 ,n11)
  511. define(N_12 ,n12)
  512. define(N_13 ,n13)
  513. define(N_14 ,n14)
  514. define(N_15 ,n15)
  515. define(N_16 ,n16)
  516. define(N_17 ,n17)
  517. define(N_18 ,n18)
  518. define(n_19 ,n19)
  519.  
  520. define(B_0 ,buf50)
  521. define(B_1 ,buf51)
  522. define(B_2 ,buf52)
  523. define(B_3 ,buf53)
  524. define(B_4 ,buf54)
  525.  
  526. define(COLUMNAR_BUF ,buf37)
  527. define(DIR_NAMES    ,buf38)
  528. define(SWAP_BUF ,buf41)
  529. define(FILE_NAME    ,buf43)
  530. define(UNDO_BUF ,buf45)
  531. define(INVERT_BUF    ,buf46)
  532. define(HILITE_BUF    ,buf47)
  533. define(REPLACE_TXT ,buf48)
  534. define(SEARCH_STR    ,buf49)
  535. define(BUF_99    ,buf99)
  536.  
  537. define(BSTACK_99    ,buf99) .. note buf99 isn't really used
  538. define(NSTACK_99    ,n99)    .. note n99 isn't really used
  539.  
  540. define(Eat_MouseUp_Input    ,624)
  541. >
  542.  
  543. Set colors
  544. <alt-help:
  545.     inputKey(N_5)
  546.     while (nothing) {
  547.         gosub label(0)
  548.         putMsg("# of color (0-15) to change (ESC=quit):")
  549.         if (!inputNum(N_5)) {
  550.             refreshDisplay
  551.             putMsg("")
  552.             return
  553.         }
  554.         if (geNum(N_5,0) & geNum(15,N_5)) {
  555.             putMsg("Fg color value (0-3)?")
  556.             inputNum(N_7)
  557.             if (geNum(N_7,0) & geNum(3,N_7)) {
  558.                 putMsg("Bg color value (0-3)?")
  559.                 inputNum(N_6)
  560.                 if (geNum(N_6,0) & geNum(3,N_6)) {
  561.                     if (eqNum(N_6,N_7)) {
  562.                         putMsg("Fg == Bg is NOT ALLOWED")
  563.                         delay(10)
  564.                     } else {
  565.                         setColors(curFile,N_5,N_7,N_6)
  566.                         setColors(" ",N_5,N_7,N_6)   .. so new buf's inherit these
  567.                     }
  568.                     if (eqNum(N_5,8)) {
  569.                         toggle(toTiny)
  570.                         toggle(toTiny)
  571.                     }
  572.                     if (eqNum(N_5,10)) runKey(startup)
  573.                     updateDisplay
  574.                 }
  575.             }
  576.         }
  577.     }
  578.  
  579. label(0)  ..subroutine to demonstrate current color settings
  580.     equateNum(N_3,1)
  581.     equateNum(N_5,0)
  582.     do (N_4,2,21) {
  583.         text("",N_4,18,N_3,41)
  584.         if (gtNum(N_4,3) & gtNum(21,N_4) & !eqNum(N_4,12)) {
  585.             if (gtNum(N_5,9)) text(N_5,N_4,19,N_3,0)
  586.             else text(N_5,N_4,20,N_3,0)
  587.             text("< >  < >",N_4,49,N_3,0)
  588.             incNum(N_5)
  589.         }
  590.     }
  591.     equateNum(N_0,0)
  592.     do (N_4,4,20) {
  593.         if (!eqNum(N_4,12)) {
  594.             getColors(curFile,N_0,N_1,N_2)
  595.             text(N_1,N_4,50,N_3,0)
  596.             text(N_2,N_4,55,N_3,0)
  597.             incNum(N_0)
  598.         }
  599.     }
  600.     text("#       ((( For Files )))     Fg   Bg",3,20,N_3,0)
  601.     text("normal text",  4,23,0,0)
  602.     text("cursor",  5,23,1,0)
  603.     text("hilite",  6,23,2,0)
  604.     text("cursor + hilite",  7,23,3,0)
  605.     text("invert",  8,23,4,0)
  606.     text("invert+cursor",  9,23,5,0)
  607.     text("hilite+invert",  10,23,6,0)
  608.     text("cursor+hilite+invert",  11,23,7,0)
  609.     text("        ((( For Screen )))",12,20,N_3,0)
  610.     text("title bar",  13,23,8,0)
  611.     text("msg line",  14,23,9,0)
  612.     text("menus",  15,23,10,0)
  613.     text("tab ruler",  16,23,11,0)
  614.     text("requester",  17,23,12,0)
  615.     text("formfeed",  18,23,13,0)
  616.     text("spare1",  19,23,14,0)
  617.     text("spare2",  20,23,15,0)
  618. >
  619.  
  620. Change the RGB color register values
  621. <alt-esc:
  622.     define(Reg0 ,N_0)    ..NOTE: register n-vars must be contiguous (N_10-N_13)
  623.     define(Reg1 ,N_1)
  624.     define(Reg2 ,N_2)
  625.     define(Reg3 ,N_3)
  626.     define(KReg0 ,N_14)
  627.     define(KReg1 ,N_15)
  628.     define(KReg2 ,N_16)
  629.     define(KReg3 ,N_17)
  630.  
  631.     define(REGISTER ,N_6)
  632.     define(CURCOLOR ,N_7)
  633.  
  634.     define(REG_NUM ,N_10)
  635.  
  636.     define(OFFSET ,N_11)
  637.     define(ROW ,N_12)
  638.  
  639.     define(RGB_RED ,N_13)
  640.     define(RGB_GREEN ,N_4)
  641.     define(RGB_BLUE ,N_5)
  642.  
  643.     define(COLOR_1 ,2)
  644.     define(COLOR_2 ,1)
  645.  
  646.     define(XN_10 ,N_8)
  647.     define(XN_11 ,N_9)
  648.  
  649.     define(TUNE_COLOR,label(0))
  650.     define(COLORMSG ,label(1))
  651.     define(FINISHED ,label(2))
  652.  
  653.     getRGB(Reg0,Reg1,Reg2,Reg3)
  654.     getRGB(KReg0,KReg1,KReg2,KReg3)
  655.  
  656.     do (ROW,1,15) text("",ROW,15,COLOR_1,49)
  657.     text(">>>> Tune RBG Color Registers <<<<",2,23,COLOR_2,0)
  658.  
  659.     text("R:",5,18,COLOR_1,0)
  660.     text("G:",6,18,COLOR_1,0)
  661.     text("B:",7,18,COLOR_1,0)
  662.  
  663.     text("Test Test ",9,20,1,0)
  664.     text("Test Test ",9,-1,2,0)
  665.     text("Test Test ",9,-1,3,0)
  666.     text("Test Test ",9,-1,4,0)
  667.     text("      ARROW keys: new selection",11,20,COLOR_1,0)
  668.     text("SHIFT ARROW keys: inc/dec color value",12,20,COLOR_1,0)
  669.     text("     ESC/Q/CLICK: use new colors",13,20,COLOR_1,0)
  670.     text("   any other key: restore old colors",14,20,COLOR_1,0)
  671.  
  672.     equateNum(REGISTER,0)
  673.     equateNum(CURCOLOR,0)
  674.     while (inputKey(XN_10)) nothing
  675.     while (nothing) {
  676.         GOSUB COLORMSG
  677.         getKey(XN_10)
  678.         switch (XN_10) {
  679.             case(normal-buttonDown)
  680.             case(normal-esc)
  681.             case(normal-q) { GOTO FINISHED }
  682.             case(normal-upArrow)
  683.                 { decNum(CURCOLOR)
  684.                   if (gtNum(0,CURCOLOR)) equateNum(CURCOLOR,2) }
  685.             case(normal-downArrow)
  686.                 { incNum(CURCOLOR)
  687.                   if (gtNum(CURCOLOR,2)) equateNum(CURCOLOR,0) }
  688.             case(normal-leftArrow)
  689.                 { decNum(REGISTER)
  690.                   if (gtNum(0,REGISTER)) equateNum(REGISTER,3) }
  691.             case(normal-rightArrow)
  692.                 { incNum(REGISTER)
  693.                   if (gtNum(REGISTER,3)) equateNum(REGISTER,0) }
  694.  
  695.             case(shft-upArrow)
  696.                 { equateNum(XN_11,1) GOSUB TUNE_COLOR }
  697.             case(shft-downArrow)
  698.                 { equateNum(XN_11,-1) GOSUB TUNE_COLOR }
  699.             case(shft-leftArrow)
  700.                 { equateNum(XN_11,-1) GOSUB TUNE_COLOR }
  701.             case(shft-rightArrow)
  702.                 { equateNum(XN_11,1) GOSUB TUNE_COLOR }
  703.             default        { setRGB(KReg0,KReg1,KReg2,KReg3)
  704.                                       GOTO FINISHED }
  705.         }
  706.         while (inputKey(XN_10)) nothing
  707.     }
  708. FINISHED
  709.     putMsg(" ") putMsg("")
  710.     fullRefresh
  711.     return
  712.  
  713.  
  714. TUNE_COLOR ..SUBROUTINE to inc/dec a register color value
  715.  
  716.     equateNum(XN_10,n[REGISTER])
  717.     and(RGB_BLUE,XN_10,15) div(XN_10,XN_10,16)
  718.     and(RGB_GREEN,XN_10,15) div(XN_10,XN_10,16)
  719.     and(RGB_RED,XN_10,15)
  720.  
  721.     switch(CURCOLOR) {
  722.         case(0) { equateNum(XN_10,RGB_RED) }
  723.         case(1) { equateNum(XN_10,RGB_GREEN) }
  724.         case(2) { equateNum(XN_10,RGB_BLUE) }
  725.     }
  726.     add(XN_10,XN_10,XN_11)
  727.     if (gtNum(XN_10,15)) equateNum(XN_10,0)
  728.     else if (gtNum(0,XN_10)) equateNum(XN_10,15)
  729.  
  730.     switch(CURCOLOR) {
  731.         case(0) { equateNum(RGB_RED,XN_10) }
  732.         case(1) { equateNum(RGB_GREEN,XN_10) }
  733.         case(2) { equateNum(RGB_BLUE,XN_10) }
  734.     }
  735.  
  736.     equateNum(XN_10,RGB_RED)
  737.     mul(XN_10,XN_10,16)
  738.     or(XN_10,XN_10,RGB_GREEN)
  739.     mul(XN_10,XN_10,16)
  740.     or(XN_10,XN_10,RGB_BLUE)
  741.  
  742.     equateNum(n[REGISTER],XN_10)
  743.     return
  744.  
  745.  
  746. COLORMSG    ..SUBROUTINE to setRGB & display RGB color register contents
  747.     setRGB(Reg0,Reg1,Reg2,Reg3)
  748.  
  749.  
  750.     do (REG_NUM,0,3) {
  751.         equateNum(ROW,4)
  752.         mul(OFFSET,REG_NUM,10)
  753.         add(OFFSET,OFFSET,22)
  754.  
  755.         text("Reg ",ROW,OFFSET,COLOR_1,0)
  756.         text(REG_NUM,ROW,-1,COLOR_1,0)
  757.         text(":",ROW,-1,COLOR_1,0)
  758.         incNum(ROW)
  759.  
  760.         equateNum(XN_10,n[REG_NUM])
  761.         and(RGB_BLUE,XN_10,15) div(XN_10,XN_10,16)
  762.         and(RGB_GREEN,XN_10,15) div(XN_10,XN_10,16)
  763.         and(RGB_RED,XN_10,15)
  764.  
  765.         equateNum(XN_10,COLOR_1)
  766.         if (eqNum(CURCOLOR,0) & eqNum(REG_NUM,REGISTER)) equateNum(XN_10,COLOR_2)
  767.         text("  ",ROW,OFFSET,COLOR_1,0)
  768.         text(RGB_RED,ROW,OFFSET,XN_10,0)
  769.         incNum(ROW)
  770.         equateNum(XN_10,COLOR_1)
  771.         if (eqNum(CURCOLOR,1) & eqNum(REG_NUM,REGISTER)) equateNum(XN_10,COLOR_2)
  772.         text("  ",ROW,OFFSET,COLOR_1,0)
  773.         text(RGB_GREEN,ROW,OFFSET,XN_10,0)
  774.         incNum(ROW)
  775.         equateNum(XN_10,COLOR_1)
  776.         if (eqNum(CURCOLOR,2) & eqNum(REG_NUM,REGISTER)) equateNum(XN_10,COLOR_2)
  777.         text("  ",ROW,OFFSET,COLOR_1,0)
  778.         text(RGB_BLUE,ROW,OFFSET,XN_10,0)
  779.         incNum(ROW)
  780.     }
  781. >
  782.  
  783. <defines: >
  784.  
  785. Switch to/from interlace mode
  786. <shft-esc: flipFlag(curFile,lace)>
  787.  
  788.                                 TAB Stuff
  789.  
  790.  
  791. Tabs enter into document as Tab code (ASCII 9) when On, as spaces when Off
  792. <ctl-tab: flipFlag(curFile,trueTabs) 
  793. if (getFlag(curFile,trueTabs)) putMsg("Real Tabs")
  794. else putMsg("Tabs as Spaces") 
  795. refreshDisplay>
  796.  
  797.  
  798.    Tab Key
  799.  
  800. WS  tabs  are totally different than UE tabs.  WS has overstrike tabs: if you
  801. tab past the current end of text on a line, it will insert spaces up  to  the
  802. next  tab stop (as long as line length isn't exceeded, and not already on the
  803. last tab stop) and if this puts it at the end of a file, it  will  insert  an
  804. end  of line.  This is as opposed to UE tabs, which are always in insert mode
  805. and will jump to the next line if you tab past existing text.  
  806.  
  807. n98 is used for two things: eol/eof switch in overstrike, and 
  808.     as a "spaces have been inserted" flag 
  809. n97 is used for determining cursor column 
  810. n99 holds current local line length
  811.  
  812. Tab to next tab stop; insert mode inserts, overstrike transparent to text
  813. <normal-tab: 
  814.  
  815. .. if truetabs on, no processing at all, just put in tab char
  816. if (getFlag(curFile,trueTabs)) { insertChar(curFile,9) return }
  817.  
  818. .. set up transition flag: n98 > 5 means on end of line/file, else is on char
  819. equateNum(n98,0)
  820. if (is(curFile,eLine)) equateNum(n98,5)
  821. if (is(curFile,eFile)) equateNum(n98,10)
  822.  
  823. getLocal(curFile,n99,lineLength)
  824.  
  825. .. main tab code
  826. if (getFlag(curFile,overStrike)) {
  827.    while (nothing) {
  828.       label(1)
  829.       if (eqNum(n98,0)) moveCursor(curFile,eChar)
  830.       else insertChar(curFile," ") 
  831.       if (is(curFile,tabColumn)) return  .. usual exit
  832.       locToCol(curFile,n97,atCursor)
  833.       if (geNum(n97,n99)) goto label(2)  .. greater than line length
  834.       if (eqNum(n98,0)) {           .. see if have run into eol or eof, flag
  835.          if (is(curFile,eLine)) equateNum(n98,5)
  836.          if (is(curFile,eFile)) equateNum(n98,10)
  837.          if (gtNum(n98,0)) equateLoc(curFile,locA,atCursor)
  838.       }
  839.    }
  840. }
  841. else {
  842.    equateNum(n98,5) equateLoc(curFile,locA,atCursor) 
  843.    while (insertChar(curFile," ")) {
  844.       if (is(curFile,tabColumn)) return
  845.       locToCol(curFile,n97,atCursor)
  846.       if (geNum(n97,n99)) goto label(2)
  847.    } 
  848. }
  849. .. end of line/file exception handling
  850. label(2)                      
  851. while (nothing) {  .. clear inserted spaces/get to previous tab col.
  852.    moveCursor(curFile,sChar)
  853.    if (gtNum(n98,0)) if (geLoc(curFile,atCursor,locA)) clearChar(curFile)
  854.    if (is(curFile,tabColumn)) goto label(3)
  855. }
  856. label(3)
  857. if (eqNum(n98,10)) { 
  858.    moveCursor(curFile,eFile) insertChar(curFile,eLine) return }
  859. if (getFlag(curFile,overStrike)) {
  860.    if (not is(curFile,sLine)) moveCursor(curFile,sLine) 
  861.    moveCursor(curFile,downLine) }
  862. else insertChar(curFile,eLine)
  863. >
  864.  
  865.  
  866.  
  867. Transparent Tab backward
  868. <alt-tab: moveCursor(curFile,sTab)>
  869.  
  870. Transparent Tab forward
  871. <shft-tab: moveCursor(curFile,eTab)>
  872.  
  873. Back-Tab - destructive Tab backward
  874. <altCtl-tab:
  875. if (not eqLoc(curFile,locB,atCursor)) freeBuf(buf86)
  876. equateLoc(curFile,locB,atCursor) 
  877. moveCursor(curFile,sTab)
  878. equateLoc(curFile,locA,atCursor) insertRgn(buf86,sFile,curFile,loc)
  879. clearRgn(curFile,loc) 
  880. if (not is(curFile,sFile)) returnTrue else returnFalse>
  881.  
  882. Convert tabs to spaces in entire current doc, using current tab stops
  883. <shftCtl-tab: tabsToSpaces(curFile)>
  884.  
  885. Convert spaces to tabs, using current tab stops (is slow)
  886. <shftAlt-tab: spacesToTabs(curFile)>
  887.  
  888. Tell how to see hard tabs
  889. <virtual-tab: putMsg("Use the Block Columnar mode to view Hard Tabs")>
  890.  
  891.  
  892.                              Backspace stuff
  893.  
  894. Delete word left
  895. <ctl-bs:
  896. if (not eqLoc(curFile,locB,atCursor)) freeBuf(buf86)
  897. equateLoc(curFile,locB,atCursor) moveCursor(curFile,sWord)
  898. equateLoc(curFile,locA,atCursor) insertRgn(buf86,sFile,curFile,loc)
  899. clearRgn(curFile,loc) 
  900. if (is(curFile,sFile)) returnFalse else returnTrue >
  901.  
  902. Transparent backspace, like left arrow
  903. <shft-bs: moveCursor(curFile,sChar)>
  904.  
  905.  
  906.                               Command Stuff
  907.                     
  908.  
  909.  
  910. Compile next single command
  911. <normal-f6: compile(curFile) >
  912.  
  913. Switch to/from buffer 81 to write temporary commands
  914. <shft-f6: equateNum(n99,curFile)
  915. if (not eqNum(n99,81)) {
  916.    editBuf(buf81) refreshDisplay
  917.    putMsg("Type command, e.g. <alt-m: toggle(color) > ; F6 to compile") }
  918. else editBuf(buf[n82])
  919. returnTrue >
  920.  
  921. Save current configuration to disk Data! file
  922. <alt-f6: if (askYesNo("Save Data File?")) {
  923.    putMsg("Filename (none for Data! or last saved):")
  924.    freeBuf(buf99) inputString(buf99) 
  925.    if (not saveConfig(buf99)) {
  926.       putMsg("ERROR - Couldn't save Data! file.") beepDisplay returnFalse
  927.    } } >
  928.  
  929. Reconfigure UEdit - load new Data! file from disk
  930. <ctl-f6: if (askYesNo("Load Data File?")) {
  931.    putMsg("Filename (none for Data! or last saved):")
  932.    freeBuf(buf99) inputString(buf99) 
  933.    if (not loadConfig(buf99)) {
  934.       putMsg("ERROR - Couldn't get Data! file.") beepDisplay returnFalse 
  935.    } } >
  936.  
  937. Reload default values listed at the top of UstarConfig!
  938. <altCtl-f6: putMsg("Reloading defaults") moveCursor(curFile,sFile) 
  939.    if (not compileDefaults(curFile)) {
  940.       putMsg("Couldn't reload defaults for some reason")
  941.       beepDisplay returnFalse
  942.    }
  943.    else putmsg(" ")
  944. >
  945.  
  946.  
  947.                                Learn Stuff
  948.                          
  949. See section below on ctl-1 and ctl-2 for further Learn commands
  950.  
  951. Save learn-sequence to disk
  952. <alt-1: putMsg("Save Learn as what #?:") if (inputNum(n99)) 
  953.    if (not saveLearn(n99)) { 
  954.       putMsg("ERROR - Couldn't save Learn file.") beepDisplay returnFalse 
  955.    } >
  956.  
  957. Load a learn-sequence from disk, then run it
  958. <alt-2: putMsg("Learn # to load & run:")
  959.    if (inputNum(n99)) {
  960.       if (not loadLearn(n99)) { 
  961.          putMsg("ERROR - Couldn't load Learn file.") beepDisplay returnFalse }
  962.       else runLearn 
  963.    } >
  964.  
  965.                               Find/Replace
  966.  
  967. Search forward/backward, all/one, ask/no ask, ignore case,  n#  via options
  968. <virtual-kp6:  
  969. putMsg("..searching..")
  970. setSearch(buf89)
  971. mod(n97,n81,13) if (not eqNum(n97,0)) {
  972.    mod(n97,n81,7) if (eqNum(n97,0)) {
  973.       mod(n97,n81,2) if (eqNum(n97,0)) 
  974.          moveCursor(curFile,eFile) else moveCursor(curFile,sFile) 
  975.       mod(n97,n81,11) if (eqNum(n97,0)) equateNum(n83,99999999) } }
  976. mod(n97,n81,7) if (eqNum(n97,0)) {
  977.    mod(n97,n81,13) if (not eqNum(n97,0)) mul(n81,n81,13) }
  978. label(3)
  979. mod(n97,n81,2) if (not eqNum(n97,0)) {
  980.    if (eqLoc(curFile,atCursor,eInvert)) moveCursor(curFile,sChar)
  981.    if (search(curFile,sInvert,eInvert,1)) goto label(1)
  982.    goto label(4) }
  983. else {
  984.    if (search(curFile,sInvert,eInvert,1)) goto label(1) 
  985.    goto label(4) }
  986. label(4) 
  987. freeBuf(buf99) insertRgn(buf99,sFile,"Find failed: ",all)
  988. insertRgn(buf99,eFile,buf89,all) putMsg(buf99)
  989. equateLoc(curFile,sInvert,eInvert) returnFalse
  990. label(1)
  991.  
  992. mod(n97,n81,11) if (eqNum(n97,0)) {
  993.    mod(n97,n81,5) if (not eqNum(n97,0)) { 
  994.       if (not onScreen(atCursor)) vScroll(atCursor) refreshDisplay  
  995.       if (not askYesNo("Replace? (Amiga-ESC aborts)")) goto label(2) }
  996.    clearRgn(curFile,invert)
  997.    insertRgn(curFile,sInvert,buf88,all)
  998.    mod(n97,n81,2) if (eqNum(n97,0)) moveCursor(curFile,eChar) }
  999. label(2)
  1000.  
  1001. if (not eqNum(n83,0)) {
  1002.    decNum(n83)
  1003.    putMsg("Amiga-ESC stops")
  1004.    mod(n97,n81,17) if (not eqNum(n97,0)) {
  1005.       if (not onScreen(atCursor)) vScroll(atCursor) refreshDisplay } 
  1006.    goto label(3) }
  1007. putMsg(" ")
  1008. returnTrue>
  1009.  
  1010.  
  1011.  
  1012. Get Find/Replace options.
  1013. n81 contains options as prime #s, so that mod() can determine active options;
  1014. initialized to 1 by ^QF or 11 by ^QA.
  1015.  
  1016. Chr  Val    Active (Chr present)           Inactive (Chr not present)
  1017.  
  1018.  B    2 Search Backward                Search Forward
  1019.  U    3 Ignore case                    Case must match
  1020.  N    5 No ask on replace              Ask for each replace
  1021.  g/G  7 Global (if Replace, do all)    From cursor only
  1022.  -   11 Find/Replace (^QA)             Find only (^QF)
  1023.  -   13 internal init flag for proper global control so ^L works right
  1024.  G   17 No display update (capital G)  Update display (lowercase g)
  1025.  
  1026. n83 contains repeat value, or 0
  1027. buf97, n97 scratch
  1028.  
  1029. Get options for find/replace
  1030. <virtual-kp5:
  1031. putMsg("Options: (B)ackwd (U)ignore-case (N)o-ask (g/G)lobal (#)times")
  1032.  
  1033. moveCursor(buf87,sFile) while (is(buf87,space)) clearChar(buf87)
  1034. equateLoc(buf87,sInvert,eInvert)
  1035. moveCursor(buf87,sFile) inputString(buf87) 
  1036. moveCursor(buf87,sFile) insertChar(buf87," ") moveCursor(buf87,sFile)
  1037. if (getFlag(buf87,searchCaps)) flipFlag(buf87,searchCaps)
  1038.  
  1039. moveCursor(buf87,sFile)
  1040. setSearch("B")
  1041. if (search(buf87,sInvert,eInvert,1)) mul(n81,n81,2) 
  1042. moveCursor(buf87,sFile)
  1043. setSearch("U")
  1044. if (search(buf87,sInvert,eInvert,1)) mul(n81,n81,3) 
  1045. moveCursor(buf87,sFile)
  1046. setSearch("N")
  1047. if (search(buf87,sInvert,eInvert,1)) mul(n81,n81,5) 
  1048.  
  1049. flipFlag(curFile,searchCaps)
  1050. moveCursor(buf87,sFile)
  1051. setSearch("g")
  1052. if (search(buf87,sInvert,eInvert,1)) mul(n81,n81,7)
  1053. moveCursor(buf87,sFile)
  1054. setSearch("G")
  1055. if (search(buf87,sInvert,eInvert,1)) {
  1056.    mul(n81,n81,7) mul(n81,n81,17) }
  1057. flipFlag(curFile,searchCaps)
  1058.  
  1059. mod(n97,n81,3) if (eqNum(n97,0)) {
  1060.    if (getFlag(curFile,searchCaps)) flipFlag(curFile,searchCaps) }
  1061. else { if (not getFlag(curFile,searchCaps)) flipFlag(curFile,searchCaps) }
  1062.  
  1063. equateNum(n83,0)
  1064. moveCursor(buf87,sFile) 
  1065. freeBuf(buf99) insertChar(buf99," ") 
  1066. while (not is(buf87,eFile)) {
  1067.    if (is(buf87,digit)) {
  1068.       while (is(buf87,digit)) { insertRgn(buf99,eFile,buf87,char) 
  1069.          movecursor(buf87,eChar) }
  1070.       moveCursor(buf99,sFile) moveCursor(buf99,eChar)
  1071.       toNumber(n83,buf99) decNum(n83) goto label(1) }
  1072.    moveCursor(buf87,eChar) }
  1073. label(1) 
  1074. runKey(virtual-kp6) returnTrue >
  1075.  
  1076.  
  1077.  
  1078.  
  1079.                               ESC Key handling
  1080.  
  1081. n85 flag current macro mode
  1082. 0-9 macros are learn48-learn57; A-Z macros are learn65-learn90
  1083. To emulate WS4 macro key capability
  1084. <normal-esc:
  1085. label(1)
  1086. putMsg("$,= last math  ! time  @ date  macros: A-Z,0-9 def  ? undef  Spc,Rtn exit")
  1087. if (not getFlag(curFile,useKeys)) flipFlag(curFile,useKeys)
  1088. getChar(n99)
  1089. flipFlag(curFile,useKeys)
  1090. if (eqNum(n99,20)) { putMsg(" ") return }            .. space exit
  1091. if (eqNum(n99,10)) { putMsg(" ") return }            .. return exit
  1092. if (eqNum(n99,36)) { runKey(alt-\) return }          .. $
  1093. if (eqNum(n99,61)) { runKey(alt-\) return }          .. = 
  1094. if (eqNum(n99,33)) {                                 .. !
  1095.    equateNum(n99,2) if (not runKey(virtual-d)) returnFalse
  1096.    insertRgn(curFile,atCursor,buf82,invert)
  1097. }
  1098. if (eqNum(n99,64)) {                                 .. @
  1099.    equateNum(n99,3) if (not runKey(virtual-d)) returnFalse
  1100.    insertRgn(curFile,atCursor,buf82,invert)
  1101. }
  1102. equateNum(n85,0)
  1103. if (eqNum(n99,63)) {                                 .. ?
  1104.    putMsg("Enter macro to undefine A-Z, 0-9; or ? to see disk; Space/Return exit") 
  1105.    if (not getFlag(curFile,useKeys)) flipFlag(curFile,useKeys)
  1106.    getChar(n99) 
  1107.    flipFlag(curFile,useKeys)
  1108.    equateNum(n85,-1) }
  1109. if (eqNum(n99,63)) {                                 .. ?   view all
  1110.    freeBuf(buf82) putMsg("Getting info on Learn macro files from disk...")
  1111.    if (not execute(buf82,"List p=learn??!")) { 
  1112.       putMsg("Couldn't do DOS List") returnFalse }
  1113.    insertRgn(buf82,sFile,"
  1114. F1 to resume
  1115.  
  1116. ",all) freeBuf(buf98) insertChar(buf98," ") .. fix vscroll
  1117.    insertRgn(buf98,eFile,buf82,all) moveCursor(buf98,sFile)  .. fix vscroll
  1118.    editBuf(buf98)
  1119.    return }
  1120. if (geNum(n99,48)) if (geNum(57,n99)) goto label(3)  .. #s 0-9
  1121. if (geNum(n99,97)) if (geNum(122,n99)) sub(n99,n99,32)  .. lc->uc convert
  1122. if (geNum(n99,65)) if (geNum(90,n99)) {         .. is alpha/#, do macro
  1123.    label(3)
  1124.    if (not eqNum(n85,0)) { freeBuf(buf99)        .. delete macro
  1125.       insertRgn(buf99,sFile,"Delete Learn!",all)
  1126.       moveCursor(buf99,sChar) toWord(buf99,n99) 
  1127.       if (not execute(buf82,buf99)) {
  1128.          putMsg("Couldn't do Delete") return }
  1129.       else { 
  1130.          insertRgn(buf99,sFile,"Done OK: ",all) putMsg(buf99) 
  1131.          delay(5) goto label(1) }
  1132.    }
  1133.    if (not loadLearn(n99)) {               .. load/run existing or define new
  1134.       if (not getFlag(curFile,learnMode)) { equateNum(n85,n99)
  1135.        putMsg("**Learn Started!**  Ctl-2 ends/saves Learn macro; Ctl-1 aborts")
  1136.          flipFlag(curFile,learnMode) return }
  1137.    }
  1138.    else { runLearn return }
  1139. }
  1140. putMsg(" ")
  1141. >    
  1142.  
  1143.  
  1144. Get date, return in various formats. n99: 1 all 2 time 3 date&day 4 date-only
  1145. <virtual-d: freeBuf(buf82) if (execute(buf82,"Date")) {
  1146.    moveCursor(buf82,eFile)
  1147.    moveCursor(buf82,sChar) equateLoc(buf82,eInvert,atCursor)
  1148.    do(n98,1,8) moveCursor(buf82,sChar)
  1149.    if (eqNum(n99,1)) equateLoc(buf82,sInvert,sFile)
  1150.    if (eqNum(n99,2)) equateLoc(buf82,sInvert,atCursor) 
  1151.    if (geNum(n99,3)) { moveCursor(buf82,sChar) 
  1152.       equateLoc(buf82,eInvert,atCursor) 
  1153.       equateLoc(buf82,sInvert,sFile) }
  1154.    if (eqNum(n99,4)) {
  1155.       do(n98,1,9) moveCursor(buf82,sChar)
  1156.       equateLoc(buf82,sInvert,atCursor) }   
  1157.    returnTrue }
  1158. else { putMsg("DOS Date not available") returnFalse }
  1159. >
  1160.  
  1161.  
  1162.  
  1163.                               Miscellaneous
  1164.  
  1165. Open empty unnamed buffer
  1166. <alt-o: 
  1167. if(not newfile) { 
  1168.    putmsg("No more Edit Buffers available!  Free some up.") 
  1169.    beepDisplay returnFalse } 
  1170. else equateNum(n82,curFile)>
  1171.  
  1172. Save changed files during idle periods, if their idle-save flag is set
  1173. <idle:
  1174. putMsg("Idle time reached - checking for files to save!!")
  1175. getMaxFiles(n97) decNum(n97)
  1176. do (n99,0,n97)
  1177.    if (not inputWaiting)
  1178.       if (getflag(buf[n99],changed))
  1179.          if (getflag(buf[n99],userLocalA)) saveFile(buf[n99])
  1180. >
  1181.  
  1182.  
  1183.  
  1184.          View/Set values
  1185.       
  1186. Set the maximum number of edit buffers
  1187. <altCtl-kp0:  freeBuf(buf99) insertRgn(buf99,sFile,
  1188. "Max. number of edit buffers (files) you can have open at once (now ",all)
  1189. getMaxFiles(n99) toWord(buf99,n99) insertChar(buf99,")")
  1190. putMsg(buf99)
  1191. if (inputNum(n99)) if (gtNum(n99,0)) {
  1192. .. !SHARE  - To enable the full version, put two dots in front of the next 
  1193. .. two lines (with ..S at the end of them) and remove the 3 characters ..F 
  1194. .. from the front of the following two lines, then recompile UstarConfig!
  1195.    if (gtNum(n99,5)) { putMsg(                                    ..S
  1196. "More than 5 bufs requires registering Uedit, see Help - About")  ..S
  1197. ..F   if (gtNum(n99,70)) { putMsg(
  1198. ..F"More than 70 bufs requires changing/recompiling Ustar, see docs.")
  1199.       beepDisplay returnFalse }
  1200.    else setMaxFiles(n99) }
  1201. putMsg(" ") >
  1202.  
  1203. Set the idle time (currently used only for the auto-save function)
  1204. <altCtl-kp9:  freeBuf(buf99) insertRgn(buf99,sFile,
  1205. "Idle time (for auto-save function) ( 1-9999; now ",all)
  1206. equateNum(n99,idleTime) toWord(buf99,n99) insertChar(buf99,"):")
  1207. putMsg(buf99)
  1208. if (inputNum(n99)) if (gtNum(n99,0)) equateNum(idleTime,n99)
  1209. putMsg(" ") >
  1210.  
  1211.  
  1212. Give the ASCII value of character at cursor
  1213. <altCtl-h:  copyChar(curFile,n99) freeBuf(buf99) toWord(buf99,n99) 
  1214. insertRgn(buf99,sFile,"ASCII decimal value is: ",all) putMsg(buf99) 
  1215. >
  1216.  
  1217.  
  1218. Set new wildcard character
  1219. <shftCtl-kp1:
  1220. putMsg("Wildcard char:") freeBuf(buf99)
  1221. insertChar(buf99,wildCard) moveCursor(buf99,sFile)
  1222. if (inputString(buf99)) { moveCursor(buf99,sFile) copyChar(buf99,wildCard) }
  1223. returnTrue>
  1224.  
  1225.  
  1226. Set new either-or character
  1227. <shftAlt-kp1: 
  1228. putMsg("Either-Or char:") freeBuf(buf99)
  1229. insertChar(buf99,eitherOr) moveCursor(buf99,sFile)
  1230. if (inputString(buf99)) { moveCursor(buf99,sFile) copyChar(buf99,eitherOr) }
  1231. returnTrue>
  1232.  
  1233.  
  1234. Set new EOL character
  1235. <altCtl-kp1:
  1236. putMsg("EOL value:")
  1237. if(inputNum(n99)) setEol(n99) refreshDisplay returnTrue>
  1238.  
  1239.  
  1240. Set delay value (to n89)
  1241. <shftCtl-kp2: putMsg("Tenths of seconds to use in Delay command:")
  1242. inputNum(n89) returnTrue >
  1243.                  
  1244.  
  1245. Specify the speech parameters
  1246. ..<altCtl-kp5:   .. SPEECH parameters are NO LONGER USED
  1247. freeBuf(buf99) insertRgn(buf99,sFile,
  1248. "Change speech parameters.   Speak speed (40-400, currently ",all)
  1249. toWord(buf99,speakSpeed) insertRgn(buf99,atCursor,"):",all) putMsg(buf99)
  1250. if (inputNum(n99)) equateNum(speakSpeed,n99)
  1251. freeBuf(buf99) insertRgn(buf99,sFile,"Speak pitch (65-320, currently ",all)
  1252. toWord(buf99,speakPitch) insertRgn(buf99,atCursor,"):",all) putMsg(buf99)
  1253. if (inputNum(n99)) equateNum(speakPitch,n99)
  1254. freeBuf(buf99) insertRgn(buf99,sFile,
  1255. "Speak Mode: (N)atural (F)emale (M)ale (R)obotic  (now ",all)
  1256. insertChar(buf99,speakMode) insertRgn(buf99,atCursor,"):",all)
  1257. putMsg(buf99) updateDisplay getChar(speakMode) putMsg(" ")
  1258. >
  1259.  
  1260.  
  1261. 2.3c: Assign new Primitive Mode terminator
  1262. <ctl-esc: 
  1263. putMsg("Enter new Primitive Mode terminator CTRL-key, typ. ESC or Return")
  1264. ..inputCtlChar
  1265. if (getChar(n99)) 
  1266.    if (gtNum(n99,4))
  1267.       if (gtNum(32,n99)) equateNum(pmESC,n99)
  1268. putMsg(" ") >
  1269.  
  1270. Set the Top Margin, both local and global (used only in formatted print cmd)
  1271. <shftCtl-kp8:
  1272. getLocal(curFile,n99,topMargin) freeBuf(buf99) toWord(buf99,n99) 
  1273. insertRgn(buf99,sFile,"Top Margin (now ",all) 
  1274. insertRgn(buf99,eFile,"):",all) putMsg(buf99)
  1275. if (inputNum(n99)) {
  1276.    setLocal(curFile,topMargin,n99) equateNum(topMargin,n99) }>
  1277.  
  1278. Set the Bottom Margin, local and global (used only in formatted print command)
  1279. <shftCtl-kp9:
  1280. getLocal(curFile,n99,bottomMargin) freeBuf(buf99) toWord(buf99,n99) 
  1281. insertRgn(buf99,sFile,"Bottom Margin (now ",all) 
  1282. insertRgn(buf99,eFile,"):",all) putMsg(buf99)
  1283. if (inputNum(n99)) {
  1284.    setLocal(curFile,bottomMargin,n99) equateNum(bottomMargin,n99) }>
  1285.  
  1286. Tell the serial number of this Uedit
  1287. <alt-3: getSerialNum(n99) freeBuf(buf99) toWord(buf99,n99)
  1288. insertRgn(buf99,sFile,"Serial number ",all)
  1289. putMsg(buf99)
  1290. >
  1291.  
  1292.  
  1293.          Set/view toggles
  1294.          
  1295.          
  1296. Toggle the speaking of messages
  1297. <shftCtl-kp4: flipFlag(curFile,speakMsgs) if (getFlag(curFile,speakMsgs))
  1298. putMsg("Say Messages") else putMsg("Silent Messages")
  1299. returnTrue>
  1300.  
  1301.  
  1302. Toggle the speaking of alerts
  1303. <shftAlt-kp4: flipFlag(curFile,speakAlerts) if (getFlag(curFile,speakAlerts))
  1304. putmsg("Say Alerts") else putMsg("Silent Alerts") 
  1305. returnTrue>
  1306.  
  1307. Toggle the mapping of "illegal" characters (ASCII 0-4) to other chars
  1308. <shftAlt-kp3: flipFlag(curFile,mapChars) if (getFlag(curFile,mapChars))
  1309. putMsg("Map Chars 0-4") else putMsg("No Chars Mapped")
  1310. returnTrue>
  1311.  
  1312. Toggle whether typing keys will be used in raw form, vs. any commands active
  1313. <shftAlt-kp8: flipFlag(curFile,useKeys) if (getFlag(curFile,useKeys)) {
  1314. putMsg("useKeys On. Please turn Off so Tab, Return, Space, etc. work right.")
  1315. beepDisplay returnFalse }
  1316. else putMsg("useKeys Off.  Normal operation.")
  1317. returnTrue>
  1318.  
  1319. Toggle the Gadgets at the top of the display to be visible or not
  1320. <shftAlt-kp6: flipFlag(curFile,markGadgets)>
  1321.  
  1322. Toggle audio beep vs. display flash (For errors & aborts)
  1323. <shftAlt-kp7: flipFlag(curFile,userGlobalA) 
  1324. if (getFlag(curFile,userGlobalA)) {
  1325.    if (execute(" ","AddBeep")) { putmsg("Audio Beep") beepDisplay return }
  1326. }
  1327. else {
  1328.    if (execute(" ","RemBeep")) { putMsg("Display Flash") beepDisplay return }
  1329. }
  1330. putMsg("Couldn't change beep mode") beepDisplay
  1331. >
  1332.  
  1333.  
  1334.             Keys
  1335.  
  1336. Kill any single command key 
  1337. <shftCtl-kp0:
  1338. putMsg("Next command-key will be deleted!")
  1339. if (getKey(n99)) if (killKey(n99)) { 
  1340.    putMsg("Command-key deleted.") returnTrue }
  1341. putMsg(" ") returnFalse >
  1342.  
  1343.  
  1344. Exchange two key command sequences
  1345. <shftAlt-kp0:
  1346. putMsg("Next 2 command-keys will be swapped!")
  1347. if (getKey(n98)) if (getKey(n99)) if (swapKey(n98,n99))
  1348.    { putMsg("Keys were swapped.") returnTrue }
  1349. putMsg(" ") returnFalse>
  1350.  
  1351.  
  1352. Exchange any key with the mouseUp "key"
  1353. <altCtl-kp6:
  1354. putMsg("Next command-key will be swapped with mouse buttonUp action!")
  1355. if (getKey(n98)) if (swapKey(n98,normal-buttonUp)) { 
  1356.    putMsg("Mouse buttonUp action swapped.  To undo, swap again.") returnTrue }
  1357. putMsg(" ") returnFalse>
  1358.  
  1359.  
  1360.  
  1361.  
  1362.          Teach/investigate system
  1363.  
  1364. Do teach mode, where keys give self-description instead of doing action
  1365. <alt-t: 
  1366. flipFlag(curFile,teachKeys) 
  1367. if (getFlag(curFile,rowCol)) flipFlag(curFile,rowCol)  .. writes over info
  1368. putMsg("In teach mode, where keys/menus describe themselves. Amiga-ESC quits.")
  1369. >
  1370.  
  1371.  
  1372. Describe what a key or menu selection does.
  1373. <alt-d: 
  1374. putMsg("Next key or menu selection will describe itself.")
  1375. getKey(n99) teachOne(n99)
  1376. >
  1377.  
  1378.  
  1379. Find out what keys are being used.
  1380. <altCtl-kp7: putMsg(
  1381. "Show which keys are in use.  Amiga-ESC quits.  Any key to start...")
  1382. getKey(n99)
  1383. while(nothing) {
  1384.    getKey(n99) if (inUse(n99)) putMsg("In Use") else putMsg("unused") }
  1385. >
  1386.  
  1387.  
  1388. Show memory usage
  1389. <altCtl-kp8:
  1390. freeBuf(buf82) freeBuf(buf99) insertRgn(buf99,sFile,"avail",all)
  1391. if (not execute(buf82,buf99)) { 
  1392.    putMsg("Error - couldn't run program to show memory.") 
  1393.    beepDisplay returnFalse }
  1394. else insertRgn(buf82,sFile,"
  1395. F1 to resume
  1396.  
  1397. ",all)
  1398. moveCursor(buf82,sFile) editBuf(buf82) vScroll(atCursor)
  1399. >
  1400.  
  1401.  
  1402. Show all the alternate characters available
  1403. <altCtl-kp4:
  1404. freeBuf(buf99) editBuf(buf99)
  1405. putMsg("Display of printable non-ASCII characters, as:  value character")
  1406. insertChar(buf99,eLine) vScroll(atCursor)
  1407. insertRgn(buf99,sFile,"
  1408. Characters 0-31 and 128-159 are non-printing control codes; 160 is alt space
  1409. Characters 32-127 are the normal character set
  1410. ",all) vScroll(sFile) refreshDisplay
  1411. equateNum(n99,161)
  1412. while (nothing) {
  1413.    do (n98,1,10) {
  1414.       toWord(buf99,n99)
  1415.       insertChar(buf99," ")
  1416.       typeChar(n99)
  1417.       insertRgn(buf99,atCursor,"   ",all)
  1418.       add(n99,n99,1)
  1419.       if (gtNum(n99,255)) goto label(1)
  1420.    }
  1421.    insertChar(buf99,eLine) refreshDisplay
  1422. }
  1423. label(1)
  1424. insertChar(buf99,eLine) refreshDisplay
  1425. putMsg("Press any key to continue...") 
  1426. getKey(n99) if (eqNum(n99,normal-buttonDown)) getKey(n99) .. ignore buttonUp
  1427. putMsg(" ")
  1428. editBuf(buf[n82])
  1429. >
  1430.  
  1431.  
  1432.  
  1433.       Conversions/formats
  1434.  
  1435. Toggle a number at cursor between decimal and hexadecimal (in C notation)
  1436. <alt-h: hexDecimal(curFile)>
  1437.  
  1438.  
  1439. Do delay (for value set in n89)
  1440. <shftAlt-kp2: delay(n89) returnTrue>
  1441.  
  1442.  
  1443. Got rid of sFile test.
  1444. Right-align current line at line-length column. Clears trailing space 1st.
  1445. <alt-f:
  1446. if (not is(curFile,eLine)) moveCursor(curFile,eLine) 
  1447. if (not is(curFile,sLine)) moveCursor(curFile,sChar)
  1448. while (not is(curFile,sLine)) {        .. clear trailing whitespace
  1449.    if (not is(curFile,space)) if (not is(curFile,9)) goto label(1)
  1450.    clearChar(curFile) moveCursor(curFile,sChar) }
  1451. label(1)
  1452. if (not is(curFile,sLine)) moveCursor(curFile,sLine)
  1453. while (not is(curFile,eLine)) {        .. clear leading whitespace
  1454.    if (not is(curFile,space)) if (not is(curFile,9)) goto label(2)
  1455.    clearChar(curFile) }
  1456. label(2)
  1457. if (not is(curFile,eLine)) moveCursor(curFile,eLine)
  1458. locToCol(curFile,n99,atCursor)   .. grab position of line's end
  1459. decNum(n99)
  1460. if (not is(curFile,sLine)) moveCursor(curFile,sLine)
  1461. while (gtNum(lineLength,n99)) {    .. and insert spaces until right-aligned
  1462.    insertChar(curFile,32) incNum(n99) }
  1463. moveCursor(curFile,downLine)                .. added for easy section format
  1464. ..if (not is(curFile,sline)) moveCursor(curFile,sLine)
  1465. >
  1466.  
  1467.  
  1468. Uppercase the character at the cursor
  1469. <shftCtl-kp5: toUpper(curFile) moveCursor(curFile,eChar) 
  1470. if (is(curFile,eFile)) returnFalse else returnTrue >
  1471.  
  1472.  
  1473. Lowercase the character at the cursor
  1474. <shftAlt-kp5: toLower(curFile) moveCursor(curFile,eChar) 
  1475. if (is(curFile,eFile)) returnFalse else returnTrue >
  1476.  
  1477.  
  1478. Note: also clears leading whitespace before ff's (is OK by me)
  1479. Delete trailing whitespace - clears any spaces/tabs following last text on line
  1480. <altCtl-kp3: equateLoc(curFile,locA,atCursor)                               
  1481. moveCursor(curFile,sFile) refreshDisplay                                  
  1482. putMsg("Clearing trailing whitespace...")                                  
  1483. equateNum(n99,0)
  1484. while (eqNum(n99,0)) {
  1485.    if (not is(curFile,eLine)) moveCursor(curFile,eLine)
  1486.    if (is(curFile,eFile)) equateNum(n99,1)
  1487.    if (is(curFile,sLine)) goto label(1)
  1488.    moveCursor(curFile,sChar)
  1489.    while (nothing) {
  1490.       if (not is(curFile,space)) if (not is(curFile,9)) goto label(2)
  1491.       clearChar(curFile) moveCursor(curFile,sChar)
  1492.       if (is(curFile,eLine)) goto label(2) }
  1493.    label(2)
  1494.    updateDisplay
  1495.    if (not onScreen(atCursor)) vScroll(atCursor)
  1496.    label(1)
  1497.    moveCursor(curFile,downLine)  
  1498. }
  1499. putMsg("Trailing Whitespace cleared")
  1500. equateLoc(curFile,atCursor,locA) 
  1501. if (not onScreen(atCursor)) vScroll(atCursor)
  1502. refreshDisplay >
  1503.  
  1504.      Special functions handy in up/downloading text on BBS's
  1505.  
  1506. Convert CRLF's to LF's - handy for BBS documents, convert to Amiga format
  1507. <alt-kpEnter:
  1508. putmsg("Converting CRLF's to LF's...")
  1509. equateLoc(curFile,locA,atCursor)
  1510. freeBuf(buf99) 
  1511. insertChar(buf99,13) insertChar(buf99,10) moveCursor(buf99,sFile)
  1512. moveCursor(curFile,sFile)
  1513. setSearch(buf99)
  1514. while (search(curFile,sInvert,eInvert,1)) 
  1515.    clearChar(curFile) moveCursor(curFile,eChar) 
  1516. equateLoc(curFile,sInvert,eInvert)
  1517. moveCursor(curFile,eFile) moveCursor(curFile,sChar) 
  1518. if (is(curFile,13)) clearChar(curFile)
  1519. equateLoc(curFile,atCursor,locA) refreshDisplay putmsg(" ") >
  1520.  
  1521.  
  1522. Convert LF's to CRLF's - handy for uploading to BBS's or other computers
  1523. <shftCtl-kpEnter:
  1524. putmsg("Converting LF's to CRLF's...")
  1525. equateLoc(curFile,locA,atCursor)
  1526. freeBuf(buf99) 
  1527. insertChar(buf99,10) moveCursor(buf99,sFile)
  1528. moveCursor(curFile,sFile)
  1529. setSearch(buf99)
  1530. while (search(curFile,sInvert,eInvert,1)) 
  1531.    insertChar(curFile,13) moveCursor(curFile,eChar) 
  1532. equateLoc(curFile,sInvert,eInvert)
  1533. moveCursor(curFile,eFile) insertChar(curFile,13)
  1534. equateLoc(curFile,atCursor,locA) refreshDisplay putmsg(" ") >
  1535.  
  1536.  
  1537.  
  1538.          Repeats
  1539.  
  1540. Specify a command and count times it executes before failing
  1541. <altCtl-kp2:
  1542. equateNum(n87,1) putMsg("Single command-key to run (until fails) & count:")
  1543. if (getKey(n88)) {
  1544.    while (runKey(n88)) incNum(n87)
  1545.    freeBuf(buf99) insertRgn(buf99,sFile,"Times executed = ",all)
  1546.    toWord(buf99,n87) putMsg(buf99) returnTrue} 
  1547. returnFalse>
  1548.  
  1549.  
  1550.  
  1551.                                Key Duplicates
  1552.  
  1553.      These three are to alleviate the conflict with Mach for Alt-function keys
  1554.  
  1555. Save current configuration to disk Data! file
  1556. <rAmiga-f6: runKey(alt-f6)>
  1557.  
  1558. Clear the "Favorite" flag of all files
  1559. <rAmiga-f3: runKey(alt-f3)>
  1560.  
  1561. Swap current buffer with swap buffer (buffer 80)
  1562. <rAmiga-f1: runKey(alt-f1)>
  1563.  
  1564.  
  1565.      This one is to alleviate conflict with Mach, whose hot-key is altCtl-f1
  1566.  
  1567. Edit specific buffer #
  1568. <normal-f4: runKey(altCtl-f1)>
  1569.  
  1570.  
  1571.      These are simply for an easier keystroke sequence for common actions
  1572.  
  1573. Execute AmigaDOS command and collect results
  1574. <normal-f5: runKey(shftCtl-f1)>
  1575.  
  1576. Edit previous buffer 
  1577. <normal-f2: runKey(shft-f1)>
  1578.  
  1579.  
  1580.  
  1581.      These make kp-enter equal to Return for several functions
  1582.  
  1583. Same as Return
  1584. <normal-kpEnter: runKey(normal-Return) >
  1585.  
  1586. Same as shift-Return
  1587. <shft-kpEnter: runKey(shft-Return) >
  1588.  
  1589. Same as ctrl-Return
  1590. <ctl-kpEnter: runKey(ctl-Return) >
  1591.  
  1592. 2.3c: Same as L--
  1593. <lAmiga-kpMinus: runKey(lAmiga--) >
  1594.  
  1595.  
  1596.  
  1597.                Internal keys
  1598.  
  1599. Not an implemented key
  1600. <virtual-kp8: equateNum(n84,0) putMsg("Not implemented.")
  1601. returnFalse>
  1602.  
  1603. Not a valid WS command
  1604. <virtual-kp7: equateNum(n84,0) 
  1605. putMsg("Invalid WS command.") returnFalse> 
  1606.  
  1607.  
  1608. -----------------------------------------------------------------------------
  1609.  
  1610.                        WordStar control key section
  1611.  
  1612.                            Two-key command control
  1613.  
  1614.          Prefix key control
  1615.  
  1616. Menu equivalents for ^K prefix is shftCtl; n84 value is 10
  1617. WS prefix key (=SC-x) for Block & File actions; other actions depend on prefix
  1618. <ctl-k:
  1619. if (eqNum(n84,0)) { equateNum(n84,10) putMsg("^K") return }
  1620. putMsg(" ")
  1621. if (eqNum(n84,10)) { equateNum(n84,0)
  1622.    equateLoc(curFile,eHilite,atCursor) refreshDisplay return } 
  1623. if (eqNum(n84,20)) { equateNum(n84,0)
  1624.    if (gtLoc(curFile,eHilite,sHilite)) { moveCursor(curFile,eHilite)
  1625.       if (not onScreen(atCursor)) vScroll(atCursor) returnTrue }
  1626.    else { putMsg("No block!") returnFalse} }
  1627. if (eqNum(n84,30)) { equateNum(n84,0) flipFlag(curFile,cram) return }
  1628. if (eqNum(n84,40)) { equateNum(n84,0)
  1629.    equateLoc(curFile,mouseLoc,atCursor) 
  1630.    runKey(shftCtl-buttondown)
  1631.    runKey(shftCtl-buttonup)
  1632. }   
  1633. >
  1634.  
  1635.  
  1636. Menu equivalents for ^O prefix is altCtl; n84 value is 30
  1637. WS prefix key (=AC-x) for OnScreen actions; other actions depend on prefix
  1638. <ctl-o:
  1639. if (eqNum(n84,0)) { equateNum(n84,30) putMsg("^O") return }
  1640. putMsg(" ")
  1641. if (eqNum(n84,10)) { equateNum(n84,0)
  1642.    freeBuf(buf98) getFileName(buf98,curFile) 
  1643.    insertRgn(buf98,sFile,"Copy Of ",all)
  1644.    equateNum(n99,curFile) 
  1645.    if (not newFile) { 
  1646.       putMsg("No more Edit Buffers available!  Free some up.") 
  1647.       beepDisplay returnFalse }
  1648.    setFileName(curFile,buf98) equateNum(n82,curFile)
  1649.    putMsg("Copying buffer...")
  1650.    insertRgn(curFile,sFile,buf[n99],all) moveCursor(curFile,sFile)
  1651.    flipFlag(curFile,changed) putMsg(" ") return }
  1652. if (eqNum(n84,20)) { equateNum(n84,0)
  1653.    freeBuf(buf98) putMsg("Enter word or words to check spelling on:")
  1654.    if (not inputString(buf98)) return
  1655.    runKey(virtual-l) return }
  1656. if (eqNum(n84,30)) { runKey(virtual-kp8) return }
  1657. if (eqNum(n84,40)) { equateNum(n84,0)
  1658.    if (gtLoc(curFile,eHilite,sHilite)) {
  1659.       if (not getFlag(curFile,columnar)) {
  1660.          freeBuf(buf86) 
  1661.          insertRgn(buf86,sFile,curFile,hilite) }
  1662.       else { 
  1663.          freeBuf(buf86) copyColData(buf86,sFile,curFile,hilite,n80) } 
  1664.       putMsg("Spooling block for printing, please be patient...")
  1665.       print(buf86,all) }
  1666.    else { putMsg("No block!") returnFalse } 
  1667.    return }
  1668. >
  1669.  
  1670.  
  1671.  
  1672. Menu equivalents for ^P prefix is shftAltCtl; n84 value is 40
  1673. WS prefix key (=SAC-x) for Print actions; other actions depend on prefix
  1674. <ctl-p:
  1675. if (eqNum(n84,0)) { equateNum(n84,40) putMsg("^P") return }
  1676. putMsg(" ")
  1677. if (eqNum(n84,10)) { equateNum(n84,0) runKey(virtual-o) return }
  1678. if (eqNum(n84,20)) { runKey(virtual-kp8) return }
  1679. if (eqNum(n84,30)) { runKey(shftCtl-=) return } .. readOnly
  1680. if (eqNum(n84,40)) { equateNum(n84,0)
  1681.    freeBuf(buf99) toWord(buf99,prefPrint)
  1682.    insertRgn(buf99,sFile,
  1683.      "Printer select: 0=par: 1=ser: 2=prt: 3=prt:-raw  (now ",all)
  1684.    insertRgn(buf99,eFile,"):",all) putMsg(buf99)
  1685.    if (inputNum(n99)) if (geNum(n99,0)) if (gtNum(4,n99)) 
  1686.       equateNum(prefPrint,n99)
  1687.    putMsg(" ") }
  1688. >
  1689.  
  1690.  
  1691. Menu equivalents for ^Q prefix is shftAlt; n84 value is 20
  1692. WS prefix key (=SA-x) for Quick actions; other actions depend on prefix
  1693. <ctl-q:
  1694. if (eqNum(n84,0)) { equateNum(n84,20) putMsg("^Q") return }
  1695. putMsg(" ")
  1696. if (eqNum(n84,10)) { equateNum(n84,0) equateNum(n99,curFile)  
  1697.    getMaxFiles(n98) decNum(n98)
  1698.    if (not gtNum(n99,n98)) if (getFlag(curFile,changed)) 
  1699.       if (askYesNo("Buffer has changed - save it? ")) 
  1700.           if (not saveFile(curFile)) returnFalse
  1701.    if (not eqNum(n82,n99)) { if (not isEmpty(buf[n82])) editBuf(buf[n82]) }
  1702.    else { toggle(curFile) equateNum(n82,curFile) }
  1703.    freeBuf(buf[n99]) return }
  1704. if (eqNum(n84,20)) { equateNum(n84,0)
  1705.    putMsg("Single key to run (at Delay speed) (Amiga-ESC stops):")
  1706.    if (getKey(n87)) {
  1707.       while (runkey(n87)) { 
  1708.          if (not onScreen(atCursor)) vScroll(atCursor) 
  1709.          delay(n89)
  1710.       updateDisplay
  1711.    } }
  1712.    putmsg(" ") 
  1713.    return }
  1714. if (eqNum(n84,30)) { equateNum(n84,0) 
  1715.    freeBuf(buf99) insertRgn(buf99,sFile,"See n-variable # (default ",all)
  1716.    toWord(buf99,n86) insertRgn(buf99,atCursor,"):",all) putMsg(buf99)
  1717.    if (not inputNum(n99)) equateNum(n99,n86) else equateNum(n86,n99)
  1718.    freeBuf(buf99) insertChar(buf99,"n") toWord(buf99,n99)
  1719.    insertRgn(buf99,eFile," is ",all) toWord(buf99,n[n99]) putMsg(buf99) 
  1720.    return }
  1721. if (eqNum(n84,40))  { equateNum(n96,19) runKey(virtual-p) }
  1722. >
  1723.  
  1724.  
  1725.           Menu equivalent translations
  1726.  
  1727. Control-Q
  1728. Goto marker 0
  1729. <shftAlt-0: equateNum(n84,20) runKey(ctl-0) >
  1730. Goto marker 1
  1731. <shftAlt-1: equateNum(n84,20) runKey(ctl-1) >
  1732. Goto marker 2
  1733. <shftAlt-2: equateNum(n84,20) runKey(ctl-2) >
  1734. Goto marker 3
  1735. <shftAlt-3: equateNum(n84,20) runKey(ctl-3) >
  1736. Goto marker 4
  1737. <shftAlt-4: equateNum(n84,20) runKey(ctl-4) >
  1738. Goto marker 5
  1739. <shftAlt-5: equateNum(n84,20) runKey(ctl-5) >
  1740. Goto marker 6
  1741. <shftAlt-6: equateNum(n84,20) runKey(ctl-6) >
  1742. Goto marker 7
  1743. <shftAlt-7: equateNum(n84,20) runKey(ctl-7) >
  1744. Goto marker 8
  1745. <shftAlt-8: equateNum(n84,20) runKey(ctl-8) >
  1746. Goto marker 9
  1747. <shftAlt-9: equateNum(n84,20) runKey(ctl-9) >
  1748. Find & Replace text; various options
  1749. <shftAlt-a: equateNum(n84,20) runKey(ctl-a) >
  1750. Cursor to beginning of block, if any block is highlighted
  1751. <shftAlt-b: equateNum(n84,20) runKey(ctl-b) >
  1752. Cursor to end of buffer
  1753. <shftAlt-c: equateNum(n84,20) runKey(ctl-c) >
  1754. Cursor to end of line
  1755. <shftAlt-d: equateNum(n84,20) runKey(ctl-d) >
  1756. Cursor to top of screen
  1757. <shftAlt-e: equateNum(n84,20) runKey(ctl-e) >
  1758. Find text; various options
  1759. <shftAlt-f: equateNum(n84,20) runKey(ctl-f) >
  1760. Search forward to first occurrence of specified character
  1761. <shftAlt-g: equateNum(n84,20) runKey(ctl-g) >
  1762. Search backward to first occurrence of specified character
  1763. <shftAlt-h: equateNum(n84,20) runKey(ctl-h) >
  1764. Move cursor to start of specified page#.  Works as goto line# if lines/page=1.
  1765. <shftAlt-i: equateNum(n84,20) runKey(ctl-i) >
  1766. Cursor to end of marked block
  1767. <shftAlt-k: equateNum(n84,20) runKey(ctl-k) >
  1768. Spell: check spelling from cursor through rest of document
  1769. <shftAlt-l: equateNum(n84,20) runKey(ctl-l) >
  1770. Math - run calc program ("xe"), if present.  Use SnipIt util. to cut/paste #s.
  1771. <shftAlt-m: equateNum(n84,20) runKey(ctl-m) >
  1772. Spell: check spelling of word that cursor is on
  1773. <shftAlt-n: equateNum(n84,20) runKey(ctl-n) >
  1774. Spell: check spelling of a word entered from the keyboard
  1775. <shftAlt-o: equateNum(n84,20) runKey(ctl-o) >
  1776. Repeat command until aborted
  1777. <shftAlt-q: equateNum(n84,20) runKey(ctl-q) >
  1778. Cursor to top of buffer
  1779. <shftAlt-r: equateNum(n84,20) runKey(ctl-r) >
  1780. Cursor to beginning of line
  1781. <shftAlt-s: equateNum(n84,20) runKey(ctl-s) >
  1782. Delete forward to first occurrence of specified character
  1783. <shftAlt-t: equateNum(n84,20) runKey(ctl-t) >
  1784. Reformat from cursor to end of document, using current settings.
  1785. <shftAlt-u: equateNum(n84,20) runKey(ctl-u) >
  1786. Cursor to start of last "Find" match, if match still marked with inverse
  1787. <shftAlt-v: equateNum(n84,20) runKey(ctl-v) >
  1788. Scroll down continuously, line by line
  1789. <shftAlt-w: equateNum(n84,20) runKey(ctl-w) >
  1790. Cursor to bottom of screen
  1791. <shftAlt-x: equateNum(n84,20) runKey(ctl-x) >
  1792. Delete from cursor position to end of line
  1793. <shftAlt-y: equateNum(n84,20) runKey(ctl-y) >
  1794. Scroll up continuously, line by line 
  1795. <shftAlt-z: equateNum(n84,20) runKey(ctl-z) >
  1796. Delete from cursor position to beginning of line
  1797. <shftAlt-del: equateNum(n84,20) runKey(ctl-del) >
  1798. Show how many bytes are in the buffer up to the place the cursor is at
  1799. <shftAlt-/: equateNum(n84,20) runKey(ctl-/) >
  1800.  
  1801. Control-K
  1802. Set marker 0
  1803. <shftCtl-0: equateNum(n84,10) runKey(ctl-0) >
  1804. Set marker 1
  1805. <shftCtl-1: equateNum(n84,10) runKey(ctl-1) >
  1806. Set marker 2
  1807. <shftCtl-2: equateNum(n84,10) runKey(ctl-2) >
  1808. Set marker 3
  1809. <shftCtl-3: equateNum(n84,10) runKey(ctl-3) >
  1810. Set marker 4
  1811. <shftCtl-4: equateNum(n84,10) runKey(ctl-4) >
  1812. Set marker 5
  1813. <shftCtl-5: equateNum(n84,10) runKey(ctl-5) >
  1814. Set marker 6
  1815. <shftCtl-6: equateNum(n84,10) runKey(ctl-6) >
  1816. Set marker 7
  1817. <shftCtl-7: equateNum(n84,10) runKey(ctl-7) >
  1818. Set marker 8
  1819. <shftCtl-8: equateNum(n84,10) runKey(ctl-8) >
  1820. Set marker 9
  1821. <shftCtl-9: equateNum(n84,10) runKey(ctl-9) >
  1822. save As: save buffer to disk file under some other name
  1823. <shftCtl-a: equateNum(n84,10) runKey(ctl-a) >
  1824. Mark Beginning of Block
  1825. <shftCtl-b: equateNum(n84,10) runKey(ctl-b) >
  1826. Copy marked block to current cursor position
  1827. <shftCtl-c: equateNum(n84,10) runKey(ctl-c) >
  1828. Document: Open a named file/buffer
  1829. <shftCtl-d: equateNum(n84,10) runKey(ctl-d) >
  1830. rEname current buffer
  1831. <shftCtl-e: equateNum(n84,10) runKey(ctl-e) >
  1832.  shftCtl-f:  see command elsewhere
  1833. Get: copy marked block to "Undo" buffer 
  1834. <shftCtl-g: equateNum(n84,10) runKey(ctl-g) >
  1835. Hide (unmark) block
  1836. <shftCtl-h: equateNum(n84,10) runKey(ctl-h) >
  1837. Toggle block overlay/space-fill vs. block insert/delete mode
  1838. <shftCtl-i: equateNum(n84,10) runKey(ctl-i) >
  1839. Junk: Delete buffer (safely - asks first if changed)
  1840. <shftCtl-j: equateNum(n84,10) runKey(ctl-j) >
  1841. Mark end of blocK
  1842. <shftCtl-k: equateNum(n84,10) runKey(ctl-k) >
  1843. Change default directory (same function as WS Logged Disk/Directory)
  1844. <shftCtl-l: equateNum(n84,10) runKey(ctl-l) >
  1845. Math on a block - add all numbers within a marked block
  1846. <shftCtl-m: equateNum(n84,10) runKey(ctl-m) >
  1847. Block ColumN mode toggle on/off
  1848. <shftCtl-n: equateNum(n84,10) runKey(ctl-n) >
  1849. cOpy entire buffer to another buffer
  1850. <shftCtl-o: equateNum(n84,10) runKey(ctl-o) >
  1851. Print entire buffer
  1852. <shftCtl-p: equateNum(n84,10) runKey(ctl-p) >
  1853. Quit (discard) current buffer (safely - if changed, asks if want to save 1st)
  1854. <shftCtl-q: equateNum(n84,10) runKey(ctl-q) >
  1855. Read a file (get from disk and insert into text at cursor)
  1856. <shftCtl-r: equateNum(n84,10) runKey(ctl-r) >
  1857. Save current buffer to disk if it has changed
  1858. <shftCtl-s: equateNum(n84,10) runKey(ctl-s) >
  1859. Touch: save all changed buffers to disk
  1860. <shftCtl-t: equateNum(n84,10) runKey(ctl-t) >
  1861. Undelete - get contents of "Undo" buffer into text at cursor
  1862. <shftCtl-u: equateNum(n84,10) runKey(ctl-u) >
  1863. moVe - Move marked block to current cursor position
  1864. <shftCtl-v: equateNum(n84,10) runKey(ctl-v) >
  1865. Write - write marked block to file (or printer via prt: or par:)
  1866. <shftCtl-w: equateNum(n84,10) runKey(ctl-w) >
  1867. eXit safely - ask if want to save any changed files, then exit Ustar
  1868. <shftCtl-x: equateNum(n84,10) runKey(ctl-x) >
  1869. Yank - Delete marked block
  1870. <shftCtl-y: equateNum(n84,10) runKey(ctl-y) >
  1871. Zafety - toggle file autobackup on/off 
  1872. <shftCtl-z: equateNum(n84,10) runKey(ctl-z) >
  1873. Read-only - buffer can't be edited. This is an on/off toggle, not checkmarked.
  1874. <shftCtl-=: equateNum(n84,10) runKey(ctl-=) >
  1875. Toggle icons saved when files saved on/off
  1876. <shftCtl-\: equateNum(n84,10) runKey(ctl-\) >
  1877. Toggle buffer's Changed flag.  Careful!  Typ. use so temp bufs aren't saved.
  1878. <shftCtl-[: equateNum(n84,10) runKey(ctl-[) >
  1879. Speak a marked block.  The "Say" command & libraries must be available.
  1880.  shftCtl-]:  see below in file 
  1881. Convert all characters in block to uppercase.
  1882. <shftCtl-': equateNum(n84,10) runKey(ctl-') >
  1883. Toggle auto-save flag on or off (individual to each file)
  1884. <shftCtl-.: equateNum(n84,10) runKey(ctl-.) >
  1885.  
  1886.  
  1887.  
  1888. Control-O
  1889. Set command multiplier for how many times to repeat next command
  1890. <altCtl-1: equateNum(n84,30) runKey(ctl-1) >
  1891. Load a learn file
  1892. <altCtl-2: equateNum(n84,30) runKey(ctl-2) >
  1893. Busy - toggle the UE "busy" display, for internal housekeeping status display
  1894. <altCtl-b: equateNum(n84,30) runKey(ctl-b) >
  1895. Center line of text within current margins
  1896. <altCtl-c: equateNum(n84,30) runKey(ctl-c) >
  1897. Display of control characters toggle on/off
  1898. <altCtl-d: equateNum(n84,30) runKey(ctl-d) >
  1899. Toggle paraGraph tabs (auto-indent) on/off
  1900. <altCtl-g: equateNum(n84,30) runKey(ctl-g) >
  1901. Set tab spacIng (tab stops) in an easy visual manner using mouse and/or keys
  1902. <altCtl-i: equateNum(n84,30) runKey(ctl-i) >
  1903. Justification: Toggle right-justification mode on/off
  1904. <altCtl-j: equateNum(n84,30) runKey(ctl-j) >
  1905. Kram: Toggle cram mode on/off  (cuts descenders for more lines on-screen)
  1906. <altCtl-k: equateNum(n84,30) runKey(ctl-k) >
  1907. Set variable value
  1908. <altCtl-m: equateNum(n84,30) runKey(ctl-m) >
  1909. Set tab spaciNg (tab stops) in an easy visual manner using mouse and/or keys
  1910. <altCtl-n: equateNum(n84,30) runKey(ctl-n) >
  1911. Open up line for typing, or close it back up
  1912. <altCtl-o: equateNum(n84,30) runKey(ctl-o) >
  1913. Protect/unprotect current buffer (flip its Read-Only status)
  1914. <altCtl-p: equateNum(n84,30) runKey(ctl-p) >
  1915. Query: see variable value
  1916. <altCtl-q: equateNum(n84,30) runKey(ctl-q) >
  1917. Right margin column (line length) set
  1918. <altCtl-r: equateNum(n84,30) runKey(ctl-r) >
  1919. Show tab ruler above cursor line
  1920. <altCtl-t: equateNum(n84,30) runKey(ctl-t) >
  1921. Uppercase: flip character at cursor between lowercase and uppercase
  1922. <altCtl-u: equateNum(n84,30) runKey(ctl-u) >
  1923. Choose which tab table to use (0-4) to use for setting Tab spacing
  1924. <altCtl-v: equateNum(n84,30) runKey(ctl-v) >
  1925. Word-wrap mode toggle on/off
  1926. <altCtl-w: equateNum(n84,30) runKey(ctl-w) >
  1927. Type Amiga's alternate (non-ASCII) characters into text (Note: WON'T PRINT)
  1928. <altCtl-y: equateNum(n84,30) runKey(ctl-y) >
  1929. Toggle display of row/column at upper right of display
  1930. <altCtl-z: equateNum(n84,30) runKey(ctl-z) >
  1931.  
  1932.  
  1933. Control-P
  1934. Stop all printouts - aborts every print currently in process by Uedit
  1935. <shftAltCtl-0: equateNum(n84,40) runKey(ctl-0) >
  1936. Resume printing a halted print
  1937. <shftAltCtl-1: equateNum(n84,40) runKey(ctl-1) >
  1938. Printer control code: Alternate pitch (Elite)
  1939. <shftAltCtl-a: equateNum(n84,40) runKey(ctl-a) >
  1940. Printer control code: Bold toggle
  1941. <shftAltCtl-b: equateNum(n84,40) runKey(ctl-b) >
  1942. Printer control codes, colors define
  1943. <shftAltCtl-c: equateNum(n84,40) runKey(ctl-c) >
  1944. Printer control code: Doublestrike toggle
  1945. <shftAltCtl-d: equateNum(n84,40) runKey(ctl-d) >
  1946. Find printer control codes
  1947. <shftAltCtl-f: equateNum(n84,40) runKey(ctl-f) >
  1948. General printer control codes (manual definitions)
  1949. <shftAltCtl-g: equateNum(n84,40) runKey(ctl-g) >
  1950. LInes per page set
  1951. <shftAltCtl-j: equateNum(n84,40) runKey(ctl-j) >
  1952. Add word to index being built in buffer 80
  1953. <shftAltCtl-k: equateNum(n84,40) runKey(ctl-k) >
  1954. Do an 8-column tab no matter what current settings are (if tab table 0 OK).
  1955. <shftAltCtl-i: equateNum(n84,40) runKey(ctl-i) >
  1956. Place a form feed at the cursor
  1957. <shftAltCtl-l: equateNum(n84,40) runKey(ctl-l) >
  1958. Printer control code: Normal pitch (Pica)
  1959. <shftAltCtl-n: equateNum(n84,40) runKey(ctl-n) >
  1960. Print highlighted block
  1961. <shftAltCtl-o: equateNum(n84,40) runKey(ctl-o) >
  1962. PrefsPrint - select how to print - direct through ports, or thru Preferences
  1963. <shftAltCtl-p: equateNum(n84,40) runKey(ctl-p) >
  1964. Printer control code: Condensed (compressed) print toggle
  1965. <shftAltCtl-q: equateNum(n84,40) runKey(ctl-q) >
  1966. Printer control code: Underline toggle
  1967. <shftAltCtl-s: equateNum(n84,40) runKey(ctl-s) >
  1968. Printer control code: Superscript toggle
  1969. <shftAltCtl-t: equateNum(n84,40) runKey(ctl-t) >
  1970. Stop a printout - aborts current print
  1971. <shftAltCtl-u: equateNum(n84,40) runKey(ctl-u) >
  1972. Printer control code: Subscript toggle
  1973. <shftAltCtl-v: equateNum(n84,40) runKey(ctl-v) >
  1974. Printer control code: Wide print toggle
  1975. <shftAltCtl-w: equateNum(n84,40) runKey(ctl-w) >
  1976. Printer control code: NLQ toggle
  1977. <shftAltCtl-x: equateNum(n84,40) runKey(ctl-x) >
  1978. Printer control code: Italics toggle
  1979. <shftAltCtl-y: equateNum(n84,40) runKey(ctl-y) >
  1980. Input a control into text at cursor
  1981. <shftAltCtl-=: equateNum(n84,40) runKey(ctl-=) >
  1982.  
  1983.  
  1984. Shifted key translations (menu equivalents):
  1985.  
  1986. Convert all characters in block to lowercase.
  1987. <alt-': equateNum(n84,10) runKey(shft-')>
  1988.