home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 116.lha / Pilot.manual < prev    next >
Text File  |  1986-11-20  |  42KB  |  1,566 lines

  1. r:This is the Manual for PILOT for the Amiga
  2. d:a$(2)
  3. c:a$=chr(12)
  4. t:        Introduction to PILOT for the Amiga
  5. :
  6. :     PILOT is a language or authoring system used to 
  7. :Develop Computer-Assisted Instruction (CAI).  The name
  8. :PILOT is derived from the words
  9. :   #3P#1rogrammed #3I#1nquiry #3L#1earning #3O#1r #3T#1eaching.  
  10. :
  11. :     PILOT was developed in the early 1970's by researchers
  12. :at San Francisco Medical University and developed into
  13. :a somewhat standardized version at Western Washington 
  14. :University.  The Apple II and the IBM PC computers both
  15. :have implementations of PILOT that start on the base of
  16. :common PILOT.
  17. :     The PILOT language uses a small number of commands
  18. :along with modifiers and conditioners to operate a lesson.
  19. :A basic set of nine commands provides most of the work
  20. :required to conduct a lesson.  Depending on the implemen-
  21. :tation, added commands are added to give more capacity to
  22. :the language.
  23. th:               Press return for next page
  24. a:
  25. t:$a$
  26. :
  27. :
  28. :
  29. :     Pilot has been used in the field of Interactive Video.
  30. :In an interactive video application, input from a touch
  31. :panel and integrated control of a laser disk video player
  32. :is frequently used. 
  33. :     The commerical version includes limited support for
  34. :these devices using RS-232 serial port-controlled units.
  35. :Version 1.0 supports the Sony PVM-1911 touchscreen monitor
  36. :and the Pioneer LD-V4200 laser disk player.  Customized
  37. :support of other units may be obtained by contacting
  38. :Flight Training Devices-Alaska.
  39. :
  40. :
  41. t:Press return for next page
  42. a:
  43. *menu
  44. t:$a$           Chapter Index
  45. :
  46. :        1.  How PILOT Operates
  47. :        2.  Labels 
  48. :        3.  Type Instruction
  49. :        4.  Dimension
  50. :        5.  Compute
  51. :        6.  Accept
  52. :        7.  Match
  53. :        8.  Problem
  54. :        9.  Jump
  55. :           10.  Use
  56. :           11.  End
  57. :           12.  eXecute Indirect
  58. :           13.  Remark
  59. :           14.  Execution Time Commands
  60. :              15.  Pilot Details (Functions, etc,.)
  61. :              16.  Quit this manual
  62. :
  63. th:   Enter number of your choice: 
  64. a:#choice
  65. u(choice = 1):operate
  66. u(choice = 2):labels
  67. u(choice = 3):type
  68. u(choice = 4):dim
  69. u(choice = 5):compute
  70. u(choice = 6):acpt
  71. u(choice = 7):match
  72. u(choice = 8):pr
  73. u(choice = 9):jump
  74. u(choice = 10):use
  75. u(choice = 11):end
  76. u(choice = 12):xi
  77. u(choice = 13):rem
  78. u(choice = 14):etc
  79. u(choice = 15):details
  80. r: insert here
  81. e(choice = 16):
  82. j:menu
  83. *operate
  84. t:$a$
  85. :                        How PILOT Operates
  86. :
  87. :     To use a PILOT program, a text-file is created using a
  88. :text editor with each line containing a valid pilot statement.
  89. :The file must end in ".pil".  The following sample shows a
  90. :valid PILOT program:
  91. :                                                     
  92. :               Name of file     Sample1.pil
  93. :
  94. :                    r: Sample1
  95. :                    t: Hello World.
  96. :                    e:
  97. :
  98. t:Press return for next page
  99. a:
  100. t:$a$
  101. :This program will open the pilot screen, print "Hello World"
  102. :and then shut down.
  103. :
  104. :    To test various Pilot commands, the program named  
  105. :CON: 20/20/300/120/test can be used.  A console device window
  106. :is opened on the Workbench screen and may be used by sliding
  107. :the PILOT Screen down.
  108. :
  109. :     From the CLI, PILOT is run by the command:  PILOT [-d] 
  110. :name where the PILOT file is name.pil and the -d option outputs
  111. :debugging information such as symbol tables, label lists and
  112. :error messages.
  113. :
  114. :     From the Workbench, double clicking on a PILOT file icon
  115. :will operate the program.
  116. :
  117. t:Press return for next page
  118. a:
  119. t:$a$
  120. :PILOT Statements:
  121. :
  122. :A PILOT statement consists of a label, a space and an
  123. :instruction on one line.  Not all three are required so the
  124. :following are valid PILOT statements:
  125. :                   
  126. :      
  127. :                 label space instruction
  128. :                 label
  129. :                 instruction
  130. :
  131. t:Press return for next page
  132. a:
  133. t:$a$
  134. *submenu
  135. t:$a$
  136. :
  137. :
  138. :       Submenu: Pilot Operation
  139. :
  140. :     1.   Op-codes
  141. :     2.   Modifiers
  142. :     3.   Conditioners
  143. :            (Y, N, C, relational, E, answer-counter)
  144. :     4.   Colon
  145. :     5.   Object
  146. :     6.   PILOT Window
  147. :     7.   Main Menu
  148. :
  149. th: Press Number for choice!
  150. a:#subchoice
  151. u(subchoice = 1):opcode
  152. u(subchoice = 2):modifier
  153. u(subchoice = 3):conditional
  154. u(subchoice = 4):colon
  155. u(subchoice = 5):object
  156. u(subchoice = 6):window
  157. u(subchoice = 7):menu
  158. e:
  159. *labels
  160. t:$a$
  161. :PILOT label:
  162. :     A PILOT label must have an asterisk in the first
  163. :column followed by a letter and, optimally, followed by
  164. :up to 29 alphanumeric characters or underscores.  For
  165. :compatability, PILOT labels should be limited to 6 alpha
  166. :characters following the asterisk. (Version 1.0).
  167. :    Labels may not be duplicated within a lesson unless
  168. :the Wipe-Labels option is used (see Problem instructions).
  169. :(Version 1.0) No specific limit on the number of labels
  170. :has been established - each label uses memory.
  171. :
  172. :                 example:  *num_1  
  173. :
  174. :           A PILOT Instruction is in this format:      
  175. :          
  176. :           op-code [modifier][conditioner]: object
  177. :
  178. t:Press return for next page
  179. a:
  180. e:
  181. *opcode
  182. t:$a$
  183. :Op-Code
  184. :     The op-code is one of the basic pilot instructions.
  185. :Each of these instructions are covered in a separate
  186. :section of the manual.  Grouping the op-codes by their
  187. :functions, they are:
  188. :
  189. :     Op-codes that place something on the screen:
  190. :
  191. :            t:     type--including th:, tx: and ts:    
  192. :            g:     graphic--including gx:  (not included
  193. :                   in Common Pilot)
  194. :                            
  195. t:Press return for next page
  196. a:
  197. t:$a$
  198. :     Op-codes that compute, accept, or compare values:
  199. :
  200. :        d:     dimension
  201. :        c:     compute
  202. :        a:     accept--including ah:, as:, ap:, apx:
  203. :                  and ax:.
  204. :        m:     match--including mj:, ms: and ms:
  205. :
  206. :     Op-codes that control flow or effect input:
  207. :
  208. :        e:       end
  209. :        j:     jump
  210. :        p:     problem--including pr:
  211. :        u:     use
  212. :        x:     eXecute Indirect--including xi:
  213. :        w:     wait
  214. :
  215. t:Press return for menu!
  216. a:
  217. e:submenu
  218. *modifier
  219. t:$a$
  220. :                   The Modifier
  221. :
  222. :     The Modifier is one or two characters that appear
  223. : immediately after the op-code.  The modifier may be one
  224. : of the letters  H,J,P,S or X  if the particular op-code
  225. : does not use the modifier, it will be ignored.  Otherwise
  226. : the instruction will be modified.  See the section on
  227. : each instruction for particular modifications.  Modified
  228. : instructions are:
  229. :    th:  type-hang     ts:  type-special  (not included)
  230. :    tx:  type-erase    ah:  accept-hang
  231. :    ap:  accept-point  as:  accept-single
  232. :    mj:  match-jump    ms:  match-spell
  233. :    mx:  match-expression
  234. :
  235. :     See each instruction for specific details
  236. t:               Press return for menu!
  237. a:
  238. e:submenu
  239. *conditional
  240. t:$a$
  241. :Conditionals
  242. :
  243. :     The conditional is a 'yes' or 'no' operator.  More
  244. : than one conditional operator can be a part of a PILOT
  245. : instruction.  If any conditional operator is evaluated
  246. : FALSE, the PILOT instruction is not executed and the
  247. : next line is then read in.  The conditions are:
  248. :    
  249. :       Yes        Y       last match result
  250. :       No        N       last match result
  251. :             Error    E        error flag raised by a match
  252. :                           error or timeout
  253. :Previous condition  C        last use of conditional
  254. :   Answer count     n        where 'n' is a single digit
  255. :                           number or a variable containing
  256. :                           a integer from '0' to 'n'.
  257. t:Press return for next page
  258. a:
  259. t:$a$
  260. :    
  261. :    (Expression)        A relational or mathematical
  262. :                           expression.  '0' is FALSE and
  263. :                           anything else is TRUE for
  264. :                           mathematical expressions.
  265. :
  266. :          For a detailed summary of use of conditionals,
  267. :          see the section on Conditionals.
  268. :
  269. t:Press return for menu!
  270. a:
  271. e:submenu
  272. *colon
  273. t:$a$
  274. :Colon
  275. :
  276. :     In each valid PILOT instruciton, there is a colon
  277. : following the op code and any modifiers or conditioners.
  278. :
  279. :Continuation Colon:
  280. :      
  281. :    The use of a colon as the first character in a PILOT
  282. : instruction is treated as the last type instruction.  The
  283. : instruction is executed if the last conditional evaluated
  284. : was TRUE.
  285. :
  286. t:Press return for menu!
  287. a:
  288. e:submenu
  289. *object
  290. t:$a$
  291. :Object:
  292. :
  293. :    The object of a PILOT instruction is the material that
  294. : follows the colon.  The format of the object varies with
  295. : the type of op-code and ,modifier.  See each instruction
  296. : for details.
  297. :
  298. :Commands that put something on the screen
  299. :
  300. :      T      Type commands
  301. :      G      Graphic commands
  302. :
  303. :
  304. t:Press return for menu!
  305. a:
  306. e:submenu
  307. *type
  308. t:$a$
  309. :Type commands:
  310. :
  311. :     The Type command is divided into two major catagories.
  312. : The basic type command including modifiers of  'TH' for
  313. : Type-hang and 'TX' for Type- erase is the primary Type
  314. : command. When modified with an 'S', the TS: command is
  315. : referred to as 'Type-special'.  The format of the object
  316. : is different as is described separately below.
  317. :
  318. :      Type (format)  T: TH: TX:  THX: :      
  319. :                           
  320. :      T [modifier][conditioner]
  321. :
  322. :
  323. t:Press return for next page
  324. a:
  325. t:$a$
  326. :     The general use of the Type command is to take the
  327. : object and print it to the screen.  The cursor starts
  328. : where it was left last and returns to the first position
  329. : of the next line.  Thus, the statement:
  330. :
  331. :      T:Hello World
  332. :
  333. : is displayed on screen as 'Hello World' and returns the
  334. : cursor to the first position of the next line.  If a
  335. : variable is placed in a line of PILOT instructions, it
  336. : will be expanded into the variable full value.  Variables
  337. : in a line of text must be introduced with the character
  338. : ## (for numerical variable) or $$ (for a string variable)
  339. : followed by the variable name and then followed by a
  340. : space or end of line.  For example, name$$ is the string
  341. : variable equal to "Amiga".
  342. t:Press return for next page
  343. a:
  344. t:$a$
  345. :
  346. :      T:Hello $name$, How are you!
  347. :
  348. :The screen prints:
  349. :                    
  350. :        Hello Amiga, How are you!
  351. :
  352. :Also, number is the numeric variable equal to 10.
  353. :
  354. :       T:Hello Number ## number, how are you!
  355. :
  356. t:Press return for next page
  357. a:
  358. t:$a$
  359. :The screen prints:
  360. :
  361. :       Hello Number 10, How are you!
  362. :
  363. :In order to print the character ## or $$ on the screen,
  364. :two of these characters must be in a row.  For example:
  365. :
  366. :      T:$$$$10.00    (or)   ####125
  367. :
  368. :The screen prints:
  369. :
  370. :      $$10.00               ##125
  371. :
  372. :
  373. t:Press return for next page
  374. a:
  375. t:$a$
  376. :     To properly use a variable, it must be assigned a 
  377. : value using the 'compute' or 'accept' instructions.  A
  378. : string variable must be dimensioned prior to assigning it
  379. : a value using the dimension instruction.
  380. :
  381. :
  382. :
  383. t:Press return for menu!
  384. a:
  385. e:
  386. *window
  387. t:$a$
  388. :The PILOT window.  
  389. :    On opening, PILOT opens a fullscreen window with a
  390. : title bar.  Normal window functions can be performed and
  391. : the output text will be aligned inside the window.  In
  392. : this Version, there is no option to remove the title bar
  393. : or deactivate window gadgets.  That capability will be in
  394. : the commerical version.  An abort capability has been
  395. : placed at several levels in PILOT. To interrupt a program
  396. : you may:
  397. :
  398. :          -click to activate the Workbench window and press
  399. :          Control-C on the keyboard.  Then reactivate the
  400. :          PILOT window. 
  401. :      -at any 'accept' statement, enter a Control-C as
  402. :          the first character in the response.        
  403. :
  404. t:Press return for menu!
  405. a:
  406. e:submenu
  407. *match
  408. t:$a$
  409. t:                           MATCH      
  410. :
  411. :
  412. :
  413. :      Match is used to test a users input in responce 
  414. :  to questions, menu options or any other data needed
  415. :  by a program. It can be used to compare a specific
  416. :  string of characters, either in a specific order or
  417. :  a string of characters contained anywhere in the line.
  418. :     It can match numerical data also. Match sets the
  419. :  condition flag to Y (true) if the match is successful
  420. :  or to N (false) if not successful. You can use special
  421. :  characters to match different types of patterns. These
  422. :  are listed below.
  423. :
  424. :
  425. :              Please press return for next page!
  426. as:
  427. t:$a$
  428. :
  429. :*  Use this to match any single character.
  430. :     
  431. :%  Use this to match a space or a start or end of an
  432. :   answer.
  433. :
  434. :&  (AND) Use this to match one word and another.
  435. :
  436. :@  Use this to match specific words in a string of
  437. :   characters. These can be in any order.
  438. :
  439. :!  (OR) Use this to match specific alternative patterns.
  440. :
  441. :
  442. :
  443. :
  444. :
  445. :               Press return for next page!
  446. as:
  447. t:$a$
  448. :    The flow of the program can be changed if there is no
  449. :match by using MJ:(Jump). If negative then the program
  450. :will jump to the next Match statement.
  451. :
  452. :MS:(Spell) This will ignore minor spelling errors.
  453. :
  454. :MX:(Exp) Numeric match. True if the expression is true.
  455. :
  456. :Some examples:
  457. :
  458. :T: What color are most fire engines?
  459. :A:
  460. :M:red R:( If the responce is red then the match is true)
  461. :
  462. :T: What colors are zebras?
  463. :A:
  464. :MJ:black&white R: (Black and White) must be in this order.
  465. :
  466. :               Press Return for next page!
  467. as:            
  468. t:$a$
  469. :
  470. :
  471. :  You can use the ! moderator if you wanted just one color.
  472. :
  473. :
  474. :T: Name one color of a zebra?
  475. :A:
  476. :M:black!white R:(Black OR White) either answer will be true.
  477. :
  478. :
  479. : There are many ways to use Match. You can make it relaxed
  480. :where it will accept spelling mistakes and any order of words
  481. :or make it stringent, where only the correct answer at the
  482. :right place will test true.
  483. :
  484. :
  485. :               Press Return for Menu!
  486. a:
  487. e:
  488. *jump
  489. t:$a$
  490. t:                     JUMP
  491. :
  492. :   Jump allows you to change the flow of the program.
  493. :You can jump to a different part of your program based
  494. :on inputed data or just jump to a specific part of your
  495. :program that you define.
  496. :
  497. :
  498. :J:label  This would jump to the label specified.
  499. :
  500. :J:@A     Jump to the last Accept instruction.
  501. :
  502. :J:@P     Jump to the next Problem instruction.
  503. :
  504. :J:@M     Jump to the next Match instruction.
  505. :
  506. :         Press Return for next page!
  507. AS:
  508. t:$a$
  509. :
  510. :
  511. :    You can make a jump conditional by using modifiers,
  512. :relational expressions or conditioners.
  513. :
  514. :Example:
  515. :
  516. :JN:@M  If match is false (N) then Jump to next Match.
  517. :
  518. :JY:@P  If match is true (Y) then Jump to next Problem.
  519. :
  520. :JY(B>3):GREATER  If match is True and B is greater than 3
  521. :                 then Jump to label called GREATER.
  522. :
  523. :              
  524. :                Press Return to for Menu!
  525. :
  526. :
  527. as:
  528. e:
  529. *rem
  530. t:$a$
  531. t:                   REMARK
  532. :
  533. :
  534. :
  535. :
  536. :     The R instruction is used to make comments within
  537. :a program. Anything after the R: is ignored. This is
  538. :useful for putting remarks in a program for others
  539. :to know what certain parts of the program do or to
  540. :remind the programmer about certain things a section
  541. :of the program does. A commented listing of a program
  542. :is much easier to understand for those that havn't
  543. :written the program, but may be studying it. It's
  544. :also useful for marking the different sections of a
  545. :program for easy location during debugging!
  546. :
  547. :
  548. :         Press Return for Menu!
  549. as:
  550. e:
  551. *dim
  552. t:$a$
  553. t:                      Dimension
  554. :
  555. :       D: variable (length)
  556. :
  557. :     Dimension is used to reserve space for numeric
  558. : arrays or string variables. String variable lengths
  559. : must be between 1 and 255 and numeric arrays are
  560. : limited to 1 to 255 per dimension.
  561. :     Numeric arrays are one  dimensional.
  562. : You can only dimension one variable by a D: instruc-
  563. : tion. Any variables that require dimensions must be
  564. : dimensioned before there use.
  565. :
  566. :  i.e.
  567. t:           D: A$$(14)
  568. :           D: M(20)
  569. :           D: M2(20,10)
  570. :
  571. :          Press Return for next Page!
  572. AS:
  573. t:$a$
  574. :
  575. :
  576. :
  577. :
  578. :     It's good practice to place all your di-
  579. : mensions at the beginning of the program and
  580. : not in a section that will be executed more
  581. : than once, so no space is wasted by reserving
  582. : space more than once for the same variable.
  583. :     The first subscript of a numeric array
  584. : is 0. And the first substring position of a
  585. : string is always 1.
  586. :
  587. :
  588. :       Press Return for Menu!
  589. :
  590. :
  591. :
  592. AS:
  593. e:
  594. *compute
  595. t:$a$
  596. :
  597. :                   COMPUTE
  598. :
  599. :      C: variable = expression
  600. :
  601. :     Compute is used for numeric and alphanumeric character
  602. : manipulations. Compute may contain any of the following
  603. : types of data and variables:
  604. :
  605. :
  606. : Numeric Constants: Either decimal numbers from a list of
  607. :                    0 to 9, signed and unsigned, which can
  608. :                    contain an embedded decimal point or
  609. :                    floating point numbers written in E
  610. :                    format, consisting of a mantissa
  611. :                    (written as a decimal ##), followed by
  612. :                    the letter E, a sign +(optional) or -,
  613. :                    and a 1to 3 digit exponent.
  614. :
  615. :      Press Return for next page!
  616. as:
  617. t:$a$
  618. : Numeric Variables: This is used to store a numeric value
  619. :             that can be changed by the program.
  620. :             This can be written as a single letter
  621. :                    or a letter followed by a single number.
  622. :        i.e.
  623. :                  A  A2  C  C3
  624. :
  625. :             Assign the value of a numeric variable
  626. :             by setting the variable equal to an
  627. :             expression.
  628. :
  629. :     i.e.
  630. :                  C: A = 1234
  631. :              C: A2 = 12*34
  632. :
  633. :        Press Return for next page!
  634. :
  635. as:
  636. t:$a$
  637. : Numeric Arrays: This is used to store a one-dimensional
  638. :          array. An array is a series of elements,
  639. :          each denoted as a subscript. Each element
  640. :          of an array can store a number which can
  641. :          be set or changed by the program. All sub-
  642. :          scripts must be enclosed in parentheses
  643. :          and can be numeric constants or numeric
  644. :          variables, but cannot be a expression. The
  645. :          name of an array can be a single letter or
  646. :                 a letter followed by a digit or underscore.
  647. :      i.e.
  648. :             C: A(3) = 5
  649. :             C: C(1) = 45
  650. :
  651. :          No element of an array can be used until
  652. :          space for it has been reserved by the use
  653. :          of the Dim instruction.
  654. :                Press return for next page!
  655. as:
  656. t:$a$
  657. : Alphanumeric constants, Character string constants, or
  658. : Literals:
  659. :
  660. :                 All three of the above are synonymous.
  661. :                 Literals must be enclosed in quotation
  662. :                 marks.
  663. :    i.e.
  664. :                 "Example"
  665. :
  666. :                 Literals can be used to assign values to
  667. :                 an alphanumeric variable or as an argu-
  668. :                 ment in an alphanumeric expression.
  669. :
  670. :
  671. :          Press Return to next page!
  672. as:
  673. t:$a$
  674. : Alphanumeric Variable or Character String Variables:
  675. :
  676. :                 This is normally known as a string and is
  677. :                 used to store a string of characters that
  678. :                 can be used or changed by the program.
  679. :                 String variables are recognized by a
  680. :                 single letter followed by a $$ sign, or
  681. :                 a letter followed by a digit and a $$ sign.
  682. :     i.e.
  683. :                 A$$   B2$$
  684. :
  685. :                 A string variable cannot be used in a C:
  686. :                 instruction until space for the string
  687. :                 has been reserved by using the D: instruc-
  688. :                 tion. Maximum length for the string is
  689. :                 established by the D: instruction and can
  690. :                 be from 1 to 255.
  691. :                          Press Return for next page!
  692. as:
  693. t:$a$
  694. :                 A particular part of the string can be
  695. :                 accessed by using subscripts. A string
  696. :                 variable can appear in an expression with
  697. :                 one or two subscripts. The 1st subscript
  698. :                 is the start of the portion of the string
  699. :                 you want and the 2nd subscript is the
  700. :                 length of that portion.
  701. :      i.e
  702. :                 C: A$$ = "A slice of life"
  703. :                 C: B$$ = A$$(3,5)
  704. :
  705. :                 This sets B$$ = to "slice"
  706. :
  707. :                 C: B$$ = A$$(1)
  708. :
  709. :                 This would set B$$ = to "A"
  710. :
  711. :       Press Return for next page!
  712. as:
  713. t:$a$
  714. :                 Subscripts can be from 1 to 255.
  715. :                 Numeric variables or contants can be
  716. :                 used as subscripts, but not expressions.
  717. :                 Values are stored in a string from left
  718. :                 to right and truncated on the right if
  719. :                 the maximum string length is not large
  720. :                 enough to hold the string. If the string
  721. :                 is shorter than the maximum length than
  722. :                 the length is the value of the string it
  723. :                 holds.
  724. :
  725. :      Press Return for next page!
  726. as:
  727. t:$a$
  728. : Pseudo Variables:
  729. :
  730. :                 This term is used only when a part of a
  731. :                 string variable is used on the left of an
  732. :                 assignment. Only the specified part of the
  733. :                 string is altered. The rest of the string
  734. :                 and the length stay the same.
  735. :      i.e.
  736. :                 C: A$$ = "My name is Joe Shmoe"
  737. :                 C: A$$(13,3) = "Sam"
  738. :
  739. :                 A$$(13,3) is a Pseudo Variable of length
  740. :                 3. This assigns A$$ the string "My name is
  741. :                 Sam Shmoe".
  742. :
  743. :
  744. :          Press Return for next page!
  745. as:
  746. t:$a$
  747. : System Variables:
  748. :
  749. :                 Two system variables can be used in a Com-
  750. :                 ute instruction.
  751. :
  752. :                 %A  Current value of the A counter.
  753. :
  754. :                 %B  Current string value in the answer
  755. :                     buffer.
  756. :
  757. :
  758. :     Press Return for Menu!
  759. :
  760. as:
  761. e:
  762. *use
  763. t:$a$
  764. t:                      USE
  765. :
  766. :
  767. :
  768. :    The USE instruction transfers control to a
  769. :subroutine in the same program. This is like a
  770. :GoSub in Basic. When the program exits the sub-
  771. :routine it continues with the command after the
  772. :USE. The destination of the USE command can be
  773. :any of the four destinations that Jump can use.
  774. :
  775. :1.  A Label.
  776. :2.  The previous Accept instruction.
  777. :3.  The next Match instruction.
  778. :4.  A Problem instruction.
  779. :
  780. :
  781. :        Press Return for next page!
  782. as:
  783. t:$a$
  784. :
  785. :    USE eliminates having to constantly recode an
  786. :often used sequence of instructions. It's not a
  787. :recommended programming practice to use any other
  788. :destination than a Label.
  789. :
  790. :Example:
  791. :
  792. :U:ADDRESS
  793. :T: This will be printed after the USE instruction is
  794. :done.
  795. :
  796. :*ADDRESS  (here we would have a routine to print an
  797. :           address)
  798. :
  799. :
  800. :             Press Return for Menu!
  801. :
  802. as:
  803. e:
  804. *acpt
  805. t:$a$
  806. t:                       Accept
  807. :
  808. :       A: string or number
  809. :
  810. :
  811. :     Accept is used to accept one line of input
  812. :  from a user. The line is saved in an internal
  813. :  buffer for use in subsequent match instructions.
  814. :  The line is automatically edited as follows.
  815. :
  816. :     All leading spaces are removed.
  817. :
  818. :     If the S option was set on the last PR: then
  819. :  all spaces are removed, if not all multiple spaces
  820. :  are compressed to one single space.
  821. :
  822. :                Press Return for next Page!
  823. :
  824. :
  825. AS:
  826. t:$a$
  827. :
  828. :     If the U option is set all letters are converted
  829. :  to upper case and to lower case if the L option is
  830. :  in effect. Neither will effect non-alphanumeric
  831. :  characters.
  832. :
  833. :     If you want the line exactly as typed you can over-
  834. :  ride the editing functions by using the X (exact) mo-
  835. :  difier.
  836. :
  837. :   i.e., AX:
  838. :
  839. :     Variable names can be placed in the text field of
  840. :  the Accept instruction. A variable preceeded by a dol-
  841. :  lar sign ($$) is treated as a string variable and one
  842. :  preceeded by a number sign (##) are treated as a numeric
  843. :  variable. You can use both within one Accept if needed.
  844. :
  845. :       Press Return for Next Page!
  846. AS:
  847. t:$a$
  848. :     Example:
  849. :
  850. :          T: What's your name?
  851. :          A: $$N$$
  852. :          T: How old are you?
  853. :          A: ##O
  854. :          T: Enter your name and age.
  855. :          A: $$N$$ ##O
  856. :
  857. :     The S modifier can be used to Accept a single
  858. :  keypress.
  859. :
  860. :    i.e.
  861. :
  862. :           T: Press a key to continue.
  863. :          AS:
  864. :
  865. :          Press Return for next page!
  866. AS:
  867. t:$a$
  868. :
  869. :
  870. :
  871. :
  872. :
  873. :
  874. :
  875. :
  876. :     There is a counter in the system that keeps
  877. :  track of how many times in a row the same Accept
  878. :  is executed. This can be accessed as the system
  879. :  variable %A. 
  880. :
  881. :
  882. :
  883. :
  884. :
  885. :             Press Return for Menu!
  886. :
  887. as:
  888. e:
  889. *end
  890. t:$a$
  891. T:                    END
  892. :
  893. :      End has two functions.
  894. :
  895. :1. To end a program.
  896. :
  897. :2. To end a subroutine.
  898. :
  899. :   END knows whether it's ending a subroutine
  900. :or the program itself by the status of the
  901. :subroutine stack. A USE instruction places the
  902. :address of the following instruction on the
  903. :subroutine stack prior to jumping to the sub-
  904. :routine. If a USE is in force the END will find
  905. :the address on the stack and jump to that address.
  906. :If there is no address, the END will terminate
  907. :the program. It's good practice to only use a 
  908. :label as a destination.
  909. :
  910. :         Press Return for next page!
  911. as:
  912. t:$a$
  913. :
  914. :
  915. :
  916. :
  917. :
  918. :
  919. :
  920. :    The destination of the jump can be controlled
  921. :by using the destination-field of the End instruction.
  922. :The destination-field can be any of the four choices
  923. :that the Jump instruction can use. A instruction
  924. :label, an Accept instruction, a Match or Problem
  925. :instruction. Using any of these will automatically
  926. :remove the USE return address from the stack.
  927. :
  928. :
  929. :
  930. :
  931. :        Press Return for Menu!
  932. as:
  933. E:
  934. *pr
  935. t:$a$
  936. T:                    PROBLEM
  937. :
  938. :    PR or P is used to begin a new frame, problem or
  939. :section of dialogue. It can be used as a destination
  940. :for a Jump or to specify execution of options. The
  941. :following options can be used:
  942. :
  943. :U  Convert all input to upper case.
  944. :
  945. :L  Convert all input to lower case.
  946. :
  947. :S  Remove all spaces from input.
  948. :
  949. :G  Allow the use of GOTO command within program.
  950. :
  951. :W  Discard current label table.
  952. :
  953. :E  Allow the use of escape command within program.
  954. :          Press Return for next page!
  955. as:
  956. t:$a$
  957. :
  958. :
  959. :
  960. :
  961. :
  962. :
  963. :      When PR is used with no options all current
  964. :options remain in force, but if any option is de-
  965. :clared, then all options must be reset to remain
  966. :in effect. You can change options at any time by
  967. :executing another PR instruction. No modifiers,
  968. :conditioners, or relational conditioners can be
  969. :used with PR.
  970. :
  971. :
  972. :
  973. :             Press Return for Menu!
  974. :
  975. as:
  976. E:
  977. *xi
  978. t:$a$
  979. t:             
  980. :
  981. :                    Execute Indirect
  982. :
  983. :     
  984. :    XI is used to execute an instruction created in a
  985. :string variable. The string must contain a valid Pilot
  986. :Opcode and text field. It cannot be preceeded by a label.
  987. :
  988. :    i.e.
  989. :
  990. T:          C: B$$="T: We are using Execute Indirect here!"
  991. :         XI: B$$
  992. :
  993. :
  994. :              Press Return for Next Page!
  995. :
  996. AS:
  997. t:$a$
  998. :
  999. :
  1000. :
  1001. :     You can also use XI to execute functions you make or
  1002. :  those users can make.
  1003. :
  1004. :     Here is a function to multiply a number by two.
  1005. :
  1006. :     C: add$$= "C:B*2"
  1007. :     T: Enter a number.
  1008. :     A: ##B
  1009. :    XI: add$$
  1010. :
  1011. :     Most any function or operation can be contained in 
  1012. :  string and executed by XI.
  1013. :
  1014. :
  1015. :              Press Return for Menu!
  1016. :
  1017. AS:
  1018. e:
  1019. *etc
  1020. t:$a$
  1021. :
  1022. :
  1023. :
  1024. :                  Execution Time Commands
  1025. :
  1026. :
  1027. :
  1028. :
  1029. :     There are two commands that can be given by a user
  1030. : during a Pilot program. These can be used anytime a user
  1031. : is asked for input and can be disabled or enabled by the
  1032. : PR: instruction. If they are enabled the action will take
  1033. : place, otherwise they are treated just as any other input.
  1034. :
  1035. :
  1036. :
  1037. :             Press Return for next page!
  1038. :
  1039. as:
  1040. t:$a$
  1041. :
  1042. :                          GOTO
  1043. :
  1044. :      GOTO destination.
  1045. :
  1046. :     The Goto command allows a user to perform a jump to
  1047. : another part of a program, with valid destinations usually
  1048. : described to the user in the program. Destinations can be
  1049. : any that are available to the Jump instruction, but are
  1050. : usually labels.
  1051. :
  1052. :              i.e.   GOTO mathroutine
  1053. :
  1054. :    Goto is usefull to the programmer for testing sections
  1055. : of a program by jumping to the areas he wants to test.
  1056. : Note that the first four letters of a label should be
  1057. : upper case for a goto to recognize it. If you use PR:L
  1058. : to set input to lower case a goto will never work.
  1059. :
  1060. :              Press Return for next page!
  1061. as:
  1062. t:$a$
  1063. :
  1064. :                     ESCAPE COMMAND
  1065. :
  1066. :         @ any text
  1067. :
  1068. :     If the PR: instruction has enabled it, every line
  1069. : of input is searched for a @ character in column one.
  1070. : If one is found a "U:SYSX" is executed. If the escape
  1071. : function is enabled a labeled routine called SYSX that
  1072. : scans the inputed text and performs the desired function
  1073. : must be included in the program.
  1074. :     This permits the building of custom execution time
  1075. : commands. You must use an E: instruction to return from
  1076. : SYSX. The return point will be the next instruction after
  1077. : the A: unless a label is specified after the E:.
  1078. :
  1079. :           Press Return for Main Menu!
  1080. as:
  1081. e:
  1082. *details
  1083. t:$a$                       Menu
  1084. :          
  1085. :          1. Operators
  1086. :
  1087. :          2. Functions
  1088. :
  1089. :          3. Expressions
  1090. :
  1091. :          4. Conditioners
  1092. :
  1093. :          5. Relational Expressions
  1094. :
  1095. :          6. Precedence Table
  1096. :
  1097. :          7. Main Menu
  1098. :
  1099. th:   Enter number of your choice!
  1100. :
  1101. a:#dtchoice 
  1102. u(dtchoice = 1):dtoperator
  1103. u(dtchoice = 2):dtfun
  1104. u(dtchoice = 3):dtexpres
  1105. u(dtchoice = 4):dtcond
  1106. u(dtchoice = 5):dtrelat
  1107. u(dtchoice = 6):dtprec
  1108. e(dtchoice = 7):menu
  1109. j:details
  1110. *dtoperator
  1111. t:$a$
  1112. :                        OPERATORS
  1113. :
  1114. :     An expression can contain any of four types of
  1115. : operators.
  1116. :                 1. Arithmetic Operators.
  1117. :
  1118. :     An operator that combines two elements into a single
  1119. : result is a dyadic operator. These are all legal dyadic
  1120. : operators:
  1121. :
  1122. :   Symbol     Meaning          Example
  1123. :
  1124. :     +        Addition          1+2
  1125. :     -        Subtraction       3-1
  1126. :     *        Multiplication    5*5
  1127. :     /        Division          25/5
  1128. :   
  1129. :
  1130. :                 Press Return for next page!
  1131. as:
  1132. t:$a$
  1133. :
  1134. :                      Monadic Operators
  1135. :
  1136. :  Symbol     Meaning     Example
  1137. :
  1138. :    +        Positive     +5
  1139. :    -        Negative     -5
  1140. :
  1141. :
  1142. :    This is used to express positive and nagative numbers. 
  1143. : Monadic + is assumed and ignored. Monadic - denotes the
  1144. : negative of a number.
  1145. :
  1146. :              Press Return for next page!
  1147. :
  1148. as:
  1149. t:$a$
  1150. :
  1151. :                  Relational Operators
  1152. :
  1153. :     An expression can contain relational operators that
  1154. : compare numbers or strings. They are dyadic and both
  1155. : quantities must be of the same type. The result of a
  1156. : relational operation is True (1) or False (0). These are
  1157. : legal Relational Operators.
  1158. :
  1159. :  Symbol   Meaning             Example
  1160. :
  1161. :    =      Equal               Y=Z: Y equal to Z?
  1162. :    <      Less Than           Y<Z: Y less than Z?
  1163. :    >      Greater Than        Y>Z: Y greater than Z?
  1164. :   <>      Not = to            Y<>Z: Y not equal to Z?
  1165. :   <=      Less than or equal  Y<=Z: Y less or = to Z?
  1166. :   >=      Greater than or =   Y>=Z: Y greater or = to Z?
  1167. :
  1168. :                Press Return for next page!
  1169. :
  1170. as:
  1171. t:$a$
  1172. :                   Logical Operators
  1173. :
  1174. :     An expression can contain a logical operator with a
  1175. : numeric value. They are usually used in relational expres-
  1176. : sions with relational operators. The result of a logical
  1177. : operation is True (1) or False (0). Any non-zero value is
  1178. : considered to be True. These are the Logical Operators.
  1179. :
  1180. :  Symbol     Meaning   Example
  1181. :
  1182. :  ~ or ^     NOT       ~Y: NOT Y. If Y is 0 then ~Y is 1.
  1183. :                           If Y is <> 0 then ~Y is 0.
  1184. :
  1185. :    &        AND       Y&Z: Y AND Z. Y&Z is True(1) if Y is
  1186. :                            <> 0 and Z is <> 0.
  1187. :
  1188. :             Press Return for next page!
  1189. as:
  1190. t:$a$
  1191. :
  1192. :
  1193. :    !        OR        Y!Z: Y OR Z. Y!Z is True(1) if Y is
  1194. :                            <> 0 or Z is <> 0 or both are
  1195. :                            <> 0.
  1196. :
  1197. :   Due to some character sets some implementation use "^"
  1198. : as the logical negation operator (NOT).
  1199. :
  1200. :
  1201. :              Press Return for next page!    
  1202. as:
  1203. t:$a$
  1204. :
  1205. :                    String Operators
  1206. :
  1207. :     Concatenation is merging one string onto the right of
  1208. : another string. The Concatenation operator is a double
  1209. : exclamation point (!!).
  1210. :
  1211. :      i.e.
  1212. :
  1213. :      C: NAME$$ = "John Doe"
  1214. :      C: G$$ = "Hello "
  1215. :      C: A$$ = G$$!!NAME$$
  1216. :
  1217. :     Now A$$ will contain the string "Hello John Doe".
  1218. : Remember all strings must be dimensioned prior to use.
  1219. :
  1220. :               Press Return for Menu! 
  1221. :
  1222. as:
  1223. e:details
  1224. *dtfun
  1225. t:$a$
  1226. :
  1227. :                        FUNCTIONS
  1228. :
  1229. :
  1230. :     An expression can contain any of the built-in
  1231. : functions to carry out a numerical calculation or a
  1232. : string manipulation. Function arguments are enclosed
  1233. : in parentheses and immediately follow the function
  1234. : name. Multiple arguments are separated by a comma.
  1235. : These functions always return a number or a string
  1236. : value.
  1237. :
  1238. :
  1239. :
  1240. :            Press Return for next page!  
  1241. :
  1242. as:
  1243. t:$a$
  1244. :
  1245. :                      Arithmetic Functions
  1246. :
  1247. :
  1248. :  Example          Meaning                Illustration
  1249. :
  1250. :  C: Y=ABS(Z)      Absolute value of Z    ABS(5)=5
  1251. :
  1252. :  C: Y=ATN(Z)      Arctangent of Z in     ATN(1)=PI/4
  1253. :                   radians.
  1254. :
  1255. :  C: Y=COS(Z)      Cosine of Z in radians COS(PI)=-1
  1256. :
  1257. :  C: Y=EXP(Z)      E to the Z power       EXP(2.4)=11.02
  1258. :
  1259. :  C: Y=FIX(Z)      Truncate Z             FIX(7.5)=7
  1260. :
  1261. :  C: Y=INT(Z)      Integer _.<=Z          INT(3.2)=3
  1262. :
  1263. :              Press Return for next page!
  1264. as:
  1265. t:$a$
  1266. :
  1267. :  Example          Meaning                Illustration
  1268. :
  1269. :  C: Y=LOG(Z)      Base 10 logrithm of Z  LOG(10)=1
  1270. :
  1271. :  C: Y=LNE(Z)      Base E logrithm of Z   LN(10)=2.3026
  1272. :
  1273. :  C: Y=RND(Z)      Random number          If Z < 1 RND(Z)=
  1274. :                                          0 to -1. If Z =>
  1275. :                                          1 then RND(Z) =
  1276. :                                          an integer from
  1277. :                                          0 to Z -1.
  1278. :
  1279. :  C: Y=SGN(Z)      Sign of Z              -1 for Neg. Z
  1280. :                                           0 for Z=0
  1281. :                                           1 for Pos. Z
  1282. :
  1283. :  C: Y=SQR(Z)      Square root of Z        SQR(4)=2
  1284. :                                           SQR(25)=5
  1285. :              Press Return for next page!
  1286. as:
  1287. t:$a$
  1288. :
  1289. :                   STRING FUNCTIONS
  1290. :
  1291. : Example                Meaning
  1292. :
  1293. : C: Y=ASC(Z$$)          The result is a number from 0 to
  1294. :                        255. The value is the ASCII value
  1295. :                        of the first character in the $$.
  1296. :
  1297. : C: Y$$="THE"
  1298. : C: Z=ASC(Y$$)   Z=84
  1299. :
  1300. : C: Y$$=CHR(Z)          The result is the ASCII character
  1301. :                        of the number Z.
  1302. : C: Y$$=CHR(13)         Y$$ = a carriage return. ASCII 13.
  1303. :
  1304. :                Press Return for next page!
  1305. as:
  1306. t:$a$
  1307. :
  1308. :     The CHR function can be used to put screen and cursor
  1309. : control characters in a string, but definitions of these
  1310. : control characters vary with each terminal. The programmer
  1311. : should consult the ROM Kernal manual of Amiga or the Amiga
  1312. : 2000 and 500 manuals for control sequences for screen out-
  1313. : put.
  1314. :
  1315. : Example                Meaning
  1316. :
  1317. : C: Y=FLO(Z$$)          The result is the numeric value of
  1318. :                        the first number in Z$$.
  1319. :
  1320. : C: Z$$="I am 16 years and 2 months old"
  1321. : C: Y=FLO(Z$$)    Y=16
  1322. :
  1323. :
  1324. :                Press Return for next page!
  1325. as:
  1326. t:$a$
  1327. :
  1328. : Example                Meaning
  1329. :
  1330. :
  1331. : C: Y=LEN(Z$$)          The result is a number, the length of
  1332. :                        Z$$.
  1333. :
  1334. : C: Z$$="How long is this"
  1335. : C: Y=LEN(Z$$)    Y=16
  1336. :
  1337. : C: Y$$=STR(Z)          The result is the conversion of the
  1338. :                        floating-point or decimal number
  1339. :                        into a string. The format will be
  1340. :                        decimal if the number is within the
  1341. :                        limits for decimal numbers.
  1342. :                        Otherwise it will be in E notation.
  1343. :                        Only one STR function is allowed
  1344. :                        per expression.
  1345. :
  1346. :                     Press Return for Menu!
  1347. as:
  1348. e:details
  1349. *dtexpres
  1350. t:$a$
  1351. :
  1352. :                       EXPRESSIONS
  1353. :
  1354. :     Expressions are combinations of variables, operators,
  1355. : constants, and functions. These indicate the calculations
  1356. : or string manipulations that are to be performed. An ex-
  1357. : pression can be evaluated to yield a single value, either
  1358. : a number or a string. Remember that the operators must be
  1359. : the same type as the variable or constant.
  1360. :     For complex expressions a set of rules determine how
  1361. : the expression is evaluated. The rules are:
  1362. :
  1363. :     1. Sub-expressions in the inner most sets of paren-
  1364. : theses are evaluated first; these values then become oper-
  1365. : ands for the expression which contained those sets of
  1366. : parentheses.
  1367. :               Press Return for next page!
  1368. as:
  1369. t:$a$
  1370. :
  1371. :     2. When the order of calculation is not set by paren-
  1372. : theses the operations are computed according to precedence
  1373. : as shown in the precedence table.
  1374. :
  1375. :     3. Operators of equal precedence are computed from
  1376. : left to right.
  1377. :
  1378. :
  1379. :               Press Return for Menu!
  1380. as:
  1381. e:details
  1382. *dtcond
  1383. t:$a$
  1384. :
  1385. :                    CONDITIONERS
  1386. :
  1387. :     A Conditioner is a single letter appended to an Op
  1388. : Code. Conditioners are valid on all op codes. The purpose
  1389. : of a Conditioner is to execute an instruction only if a
  1390. : certain condition is met. Any number or combination of
  1391. : Conditioners can be used with a single instruction, order
  1392. : is not important, but if more than one Conditioner is used
  1393. : all conditions must be met for the instruction to execute.
  1394. :     The four types of Conditioners are:
  1395. :
  1396. :      Yes and No Conditioners
  1397. :      Digit Conditioner
  1398. :      Error Conditioner
  1399. :      Last Relational Conditioner
  1400. :
  1401. :             Press Return for next page!
  1402. as:
  1403. t:$a$
  1404. :
  1405. :                 YES AND NO CONDITIONERS
  1406. :
  1407. :     These test the success of the last Match instruction
  1408. : executed. If the Match was successful (YES) then the Y
  1409. : Conditioner cause an instruction to execute. If the Match
  1410. : failed (NO) then the N Conditioner causes a instruction
  1411. : to execute.
  1412. :                              i.e.
  1413. :  T: How was the movie?
  1414. :  A:
  1415. :  M: Good
  1416. : TY: Well, then I'll go see it. (If the answer was good)
  1417. : JY:@P
  1418. :  M: Bad
  1419. : TY: Glad you told me. (Print this if the answer was bad)
  1420. : TN: Say what? (If answer doesn't match good or bad.)
  1421. :
  1422. :                 Press Return for next page!
  1423. as:
  1424. t:$a$
  1425. :
  1426. :                    DIGIT CONDITIONER
  1427. :
  1428. :     The Digit Conditioner executes an instruction based on
  1429. : the value of the answer count. Whenever an Accept in-
  1430. : struction is encountered its line number is compared to
  1431. : the last Accept. If it is the same the asnwer count is in-
  1432. : cremented. If not the answer count is reset to 1. Instuc-
  1433. : tions with a Digit Conditioner will execute only when the
  1434. : answer count equals the Digit Conditioner. The Digit Con-
  1435. : ditioner must be a number from 1 to 9.
  1436. :
  1437. :
  1438. :
  1439. :              Press Return for next page!
  1440. as:
  1441. t:$a$
  1442. :
  1443. :      i.e.
  1444. :            T: What's the best computer made?
  1445. :            A:
  1446. :            M: Amiga
  1447. :          TY1: Right! You're smart!
  1448. :          TY2: Well, you got it on your second try.
  1449. :           JY:out
  1450. :           J2:whoops
  1451. :            T: Not quite. Try again.
  1452. :            J:@A
  1453. :            *whoops
  1454. :            T: You blew it twice!
  1455. :            T: Go buy and Amiga and you'll find out!
  1456. :            J: wheretobuy
  1457. :
  1458. :            Press Return for next page!
  1459. as:
  1460. t:$a$
  1461. :
  1462. :
  1463. :     The Digit Conditioner is useful for scoring a user
  1464. : on the basis of how many times it takes to answer a
  1465. : question correctly. The answer counter can be accessed
  1466. : as system variable %A.
  1467. :
  1468. :
  1469. :
  1470. :
  1471. :             Press Return for next page!
  1472. as:
  1473. t:$a$
  1474. :
  1475. :                     ERROR CONDITIONER
  1476. :
  1477. :     The Error Conditioner causes an instruction to be
  1478. : executed only if the Error Condition was raised by the
  1479. : last instruction capable of raising it. It's raised by
  1480. : the following cases:
  1481. :
  1482. :     1. The last Accept contained a numeric variable, but
  1483. : no number was found in the users input.
  1484. :
  1485. :     2. A C: instruction contained an erroneous statement.
  1486. :
  1487. :     3. A Relational Expression contained an error.
  1488. :
  1489. :     4. When any error message is displayed.
  1490. :
  1491. :     Any successful C: instruction or any True relational
  1492. : expression will lower the error flag.
  1493. :
  1494. :              Press Return for next page!
  1495. as:
  1496. t:$a$
  1497. :
  1498. :             LAST RELATIONAL CONDITIONAL (C)
  1499. :
  1500. :     The C Conditional simplifies the use of Relational
  1501. : Expressions. Relational expressions cause a statement
  1502. : to be skipped based on the truth of the expression. When
  1503. : the same relational expression applies to several instruc-
  1504. : tions in a series, a C Conditioner can be used for the
  1505. : expression on all instructions but the first. The C Con-
  1506. : ditioner allows an instruction to be skipped if the last
  1507. : instruction for which a relational expression was
  1508. : evaluated was skipped.
  1509. :                              i.e.
  1510. :              T(A<18): Sorry, your too young.
  1511. :                   JC: Juveniles
  1512. :
  1513. :     The Type and Jump are both executed if, and only if,
  1514. : A is less than 18.
  1515. :
  1516. :               Press Return for Menu!
  1517. as:
  1518. e:details
  1519. *dtrelat
  1520. t:$a$
  1521. :               RELATIONAL EXPRESSIONS
  1522. :
  1523. :     Execution of any instruction can be made conditional
  1524. : based upon the truth of an expression coded in parentheses
  1525. : after the op code and before the colon. The expression can
  1526. : be arithmetic or relational. If the value of the expres-
  1527. : sion is True (1) the instruction is executed. If False (0)
  1528. : it is skipped. If Conditioners are tested first and the
  1529. : Conditioner causes the instruction to be skipped the
  1530. : relational expression is not evaluated. This is only
  1531. : crucial when using the C Conditioner on subsequent in-
  1532. : structions because a C Conditioner refers to the last
  1533. : relation tested. Relational expressions are subject to the
  1534. : same rules as expressions in the Compute instruction.
  1535. :
  1536. :         i.e.
  1537. :                T(A=17): So, you are 17. (Print this only
  1538. :                         if A=17.
  1539. :                  Press Return for Menu!
  1540. as:
  1541. e:details
  1542.  
  1543. *dtprec
  1544. t:$a$
  1545. :
  1546. :                     PRECEDENCE TABLE
  1547. :
  1548. :
  1549. :    OPERATOR                   ORDER
  1550. :
  1551. :    ~ or ^                  First Evaluated
  1552. :       :       * /
  1553. :       + - !!
  1554. :       = <> < > <= >=
  1555. :       ! &                  Last Evaluated
  1556. :
  1557. :
  1558. :                Press Return for Menu!
  1559. :
  1560. :
  1561. as:
  1562. e:details
  1563.  
  1564.   
  1565.