home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / forth / compiler / fpc / tutor / l3p060 < prev    next >
Text File  |  1990-07-15  |  4KB  |  103 lines

  1.        ╔════════════════════════════════════════════════════╗
  2.        ║ Lesson 3 Part 060  F-PC 3.5 Tutorial by Jack Brown ║
  3.        ╚════════════════════════════════════════════════════╝
  4.  
  5.                 ┌───────────────────────┐
  6.                 │   ASCII  and CONTROL  │
  7.                 └───────────────────────┘
  8.  
  9. Let's start by looking at the words ASCII  and CONTROL .  We used the
  10. word ASCII back in lesson 2 part 13 in the definition of TRIANGLE_AREA .
  11. However we neglected to tell you exactly how ASCII works.   Remember
  12. that if we neglect to explain a word to you or if you have forgotten how
  13. a word works you may get some hints and clues as to a words function and
  14. operation by using  HELP and VIEW. For example:
  15.  
  16. HELP ASCII <enter>
  17.  
  18. ASCII           <char> ( -- n )
  19.      Compile the next character in the input stream as a literal ASCII
  20.      integer.
  21.  
  22. CONTROL         <char> ( -- n )
  23.      Compile the next character in the input stream as a literal ASCII
  24.      Control Character.
  25.  
  26. Well... that wasn't too helpful was it?  Do you know what the input
  27. stream is?  Do you know what a literal ASCII integer is?  Do you know
  28. what compile means?  And what if you're not compiling?
  29.  
  30. Let's attempt to answer some of these questions.  First the input stream
  31. is the sequence of characters that you enter at the keyboard.  After you
  32. input a line of text and press <enter>  F-PC begins to process the
  33. "stream" or "line" or "list" of characters that you typed. We say that
  34. F-PC is processing the "input stream". When you FLOAD a file, F-PC just
  35. processes the characters in the file line by line and we would say that
  36. the "input stream" is now coming from the file.
  37.  
  38. A literal integer is what gets compiled when you put a number in a Forth
  39. word definition.
  40.  
  41. : TEN   10 ;
  42.  
  43. We say that the 10 gets compiled as a literal integer.
  44.  
  45. Ok.. let's experiment with using ASCII outside of a colon definition.
  46. What ASCII does is take the first letter of the first word that follows
  47. it and converts the letter to its corresponding ASCII key code and
  48. puts this ASCII key code on the top of the parameter stack.
  49.  
  50. For example:
  51. ASCII A . <enter> 65  ok
  52. ASCII B . <enter> 66  ok
  53. ASCII . . <enter> 46  ok
  54. ASCII 1 . <enter> 49  ok
  55. ASCII 0 . <enter> 48  ok
  56.  
  57. If you follow ASCII with an entire word it will just take the first
  58. letter of the word and throw the rest of the word away.
  59.  
  60. ASCII APPLE  . <enter> 65  ok
  61. ASCII BANANA . <enter> 66  ok
  62.  
  63. Now let's use ASCII in a definition and then decompile the definition to
  64. see exactly what is happening.
  65.  
  66. : ATEST  ASCII A . ASCII B . ASCII APPLE . ASCII BANANA . ; <enter> ok
  67. SEE ATEST <enter>
  68. : ATEST
  69.         65 . 66 . 65 . 66 . ;  ok
  70. ATEST <enter> 65 66 65 66  ok
  71.  
  72. So... when ASCII is used within a word definition it compiles the
  73. literal integer value corresponding to the next non blank character in
  74. the input stream.  If the next non blank character is part of a word it
  75. just uses the first character of that word and then throws the rest of
  76. the word away.
  77.  
  78. Warning, as one of our friends discovered the hard way,  F-PC process
  79. both files and user input one line at a time so if you split the word
  80. ASCII and the next non blank character across a line boundary you are
  81. going to be in trouble.   ASCII must be followed by the character to be
  82. converted to a key code must be on the same line.
  83.  
  84. Now you should be able to write your own tutorial on the use of CONTROL
  85. but we will provide a few examples for you to ponder.
  86.  
  87. CONTROL M . <enter> 13 ok      <--- This is just the <enter> key code.
  88. CONTROL H . <enter> 8  ok      <--- This is just the backspace key code.
  89. CONTROL A . <enter> 1  ok      <--- This is just control A key code.
  90.  
  91. Now the definition of KEY_TEST in the last lesson may be easier to follow
  92. as we used CONTROL M with out any explanation.   All CONTROL M does is
  93. compile the literal integer 13 into the definition for use to test for
  94. termination of the program by the press of the enter key.
  95.  
  96. Note...  The words ASCII and CONTROL are not part of the Forth83
  97. standard but they have always been in each of the half dozen Forth
  98. systems that we have used over the last 5 years.
  99.  
  100. ┌────────────────────────────────────┐
  101. │  Please move to Lesson 3 Part 070  │
  102. └────────────────────────────────────┘
  103.