home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / simtel / cpmug / cpmug011.ark / BASIC_5.DOC < prev    next >
Encoding:
Text File  |  1984-04-29  |  6.3 KB  |  204 lines

  1. HAMPSHIRE COLLEGE BASIC     VERSION Z1.0
  2. =======================     ============
  3.  
  4.  
  5. PROCESSOR TECHNOLOGY 5K BASIC, ADAPTED FOR CP/M
  6. BY KEVIN JORDAN (BOX 588, HAMPSHIRE COLLEGE, AMHERST, MASS. 01002).
  7.  
  8. WITH MODIFICATIONS BY JEFF ZURKOW.
  9.  
  10.  
  11.  
  12.  
  13. THIS IS PROC. TECH. 5K BASIC MODIFIED TO START AT 100H AND
  14. TO DO ITS I/O THROUGH CP/M. PROVISIONS HAVE BEEN ADDED TO
  15. ALLOW BASIC PROGRAMS TO BE SAVED AS CP/M FILES, OPERATION
  16. MADE FASTER FOR LARGE-MEMORY SYSTEMS, AND A NUMBER OF
  17. NEW STATEMENTS AND COMMANDS HAVE BEEN ADDED.
  18.  
  19.  
  20.  
  21.  
  22. CONTROL CHARACTERS
  23. ==================
  24.  
  25. RUBOUT AND CTRL-U WORK AS IN CP/M.
  26. CTRL-C TAKES YOU BACK TO THE COMMAND LEVEL OF BASIC/5.
  27. CTRL-E AND CTRL-P ARE NOT IMPLEMENTED.
  28.  
  29. TO GET BACK TO CP/M, USE THE COMMAND "SYSTEM".
  30.  
  31.  
  32. DISK FILES
  33. ==========
  34.  
  35.  
  36. IN THE COMMANDS THAT FOLLOW, <FN> DENOTES A FILE NAME OF UP TO 8 CHARACTERS,
  37. OPTIONALLY FOLLOWED BY A DOT (".") AND A FILE TYPE OF UP TO THREE
  38. CHARACTERS. IF THE FILE TYPE IS OMITTED, IT DEFAULTS TO "BSC". IF NAME AND
  39. TYPE ARE BOTH OMITTED, THE DEFAULT IS "PROGRAM.BSC".  AS A SPECIAL CASE, THE
  40. QUERIES "NEW PROGRAM NAME" AND "OLD PROGRAM NAME" MAY BE ANSWERED WITH A
  41. CARRIAGE RETURN ALONE, OR WITH A FILE NAME AND NO TYPE, TO TAKE ADVANTAGE OF
  42. THE DEFAULT OPTIONS.
  43.  
  44.  
  45. THE FILE COMMANDS ARE:
  46.  
  47.  
  48. NAME        TYPES THE CURRENT WORKSPACE NAME.
  49.  
  50. NAME <FN>    RENAMES THE CURRENT WORKSPACE TO THE SPECIFIED NAME AND TYPE.
  51.  
  52. NEW <FN>    RENAMES THE CURRENT WORKSPACE AND ERASES THE PROGRAM.
  53.  
  54. OLD <FN>    ERASES THE CURRENT PROGRAM AND LOADS THE SPECIFIED FILE FROM THE DISK.
  55.         IF <FN> IS OMITTED, "OLD" (AND "NEW") WILL ASK FOR IT.
  56.  
  57. UNSAVE <FN>    ERASES THE SPECIFIED FILE FROM THE DISK.
  58.  
  59. ERA <FN>    SAME AS UNSAVE <FN>.
  60.  
  61. SAVE        SAVES THE CURRENT PROGRAM ON THE DISK UNDER THE CURRENT WORKSPACE NAME.
  62.         IF A FILE WITH THIS NAME ALREADY EXISTS, IT IS DELETED FIRST.
  63.  
  64. SAVE <FN>    RENAMES THE WORKSPACE TO <FN> AND THEN DOES A SAVE.
  65.  
  66.  
  67.  
  68. IF A FILE IS SPECIFIED WHEN BASIC IS INVOKED (IE. "BASIC/5 <FN>"), IT WILL BE
  69. LOADED AND BASIC WILL REFRAIN FROM ASKING "NEW OR OLD?".  NOTE THAT FILES SAVED BY
  70. BASIC ARE IN AN INTERNAL FORMAT, NOT ASCII, SO THEY CANNOT BE EDITED WITH THE
  71. CP/M EDITOR.
  72.  
  73.  
  74.  
  75.  
  76. OTHER NEW COMMANDS:
  77. ==================
  78.  
  79.  
  80. SYSTEM        RETURNS CONTROL TO CP/M WITH REBOOT.
  81.  
  82. LLIST        SYNTAX IS SAME AS NORMAL "LIST", BUT LISTS ON CP/M LIST DEVICE
  83.         INSTEAD OF ON CONSOLE.  LISTING IS PRECEEDED AND FOLLOWED BY 2 CRLF'S.
  84.  
  85.  
  86.  
  87.  
  88.  
  89.  
  90. THE FOLLOWING STATEMENTS HAVE BEEN ADDED:
  91. ========================================
  92.  
  93.  
  94.  
  95.  
  96. WHERE BYTE VALUES ARE INDICATED, AN ARBITRARY EXPRESSION, EVALUATING TO A BYTE VALUE (8-BIT
  97. INTEGER) MAY BE USED.  EXPRESSIONS EVALUATING TO 16-BIT INTEGERS MAY SIMILARLY BE USED FOR
  98. ADDRESS VALUES.
  99.  
  100.  
  101.  
  102. OUT <PORT>[<B1>,<B2>, . . . ,<BN>]
  103.  
  104. THE BYTES B1, B2, . . . ,BN ARE OUTPUT TO THE SPECIFIED PORT.
  105. AN INDEFINITE NUMBER OF ADDITIONAL PORTS AND BYTE STRINGS MAY BE SPECIFIED, PRECEEDED BY COMMAS.
  106. EXAMPLE:  OUT 2[27,109],5[44,10]
  107.  
  108.  
  109.  
  110. POKE <A1>[<B1>,<B2>, . . . ,<BN>]
  111.  
  112. PUTS THE BYTES B1 . . . BN IN MEMORY STARTING AT LOCATION <A1> (A 16-BIT VALUE).
  113. THE RIGHT BRACKET MAY BE FOLLOWED BY A COMMA AND ANOTHER ADDRESS AND BYTE STRING, AND SO ON.
  114.  
  115.  
  116.  
  117. PUSH <A1>,<A2>, . . . ,<AN>
  118.  
  119. THE ADDRESSES (16-BIT INTEGERS) <A1> THROUGH <AN> ARE PUSHED ON AN INTERNAL STACK WHICH
  120. BUILDS DOWNWARD FROM LOCATION "MACSTK" IN THE SOURCE TEXT. THERE IS CURRENTLY ROOM FOR
  121. 17 ENTRIES, AND STACK OVERFLOW CHECKING IS PROVIDED. THE LAST ADDRESS IN THE LIST WINDS UP
  122. ON THE STACK TOP (IE. IT WILL BE THE FIRST ENTRY REMOVED).   "PUSH", AND THE
  123. CORRESPONDING "POP" ARE INTENDED TO PROVIDE A WAY OF PASSING MULTIPLE ARGUMENTS TO MACHINE-
  124. LANGUAGE SUBPROGRAMS.
  125.  
  126.  
  127.  
  128. TRAP <A1>,<A2>, . . . ,<AN>
  129.  
  130. THIS STATEMENT BEHAVES LIKE "PUSH", BUT REFERENCES A SEPARATE STACK.
  131. THE VALUES PUSHED ARE TREATED AS LINE NUMBERS.  WHEN AN ERROR OCCURS
  132. IN BASIC, THE TOP VALUE WILL BE POPPED OFF THE TRAP STACK AND CONTROL
  133. WILL PASS TO THE STATEMENT IT SPECIFIES.  IF THE STACK IS EMPTY, AN
  134. ERROR MESSAGE WILL BE PRINTED AS USUAL.
  135.  
  136.  
  137.  
  138. INPUT "<STRING>", <VAR. LIST>
  139.  
  140. THE QUOTED STRING IS OPTIONAL. IF INCLUDED, IT WILL BE PRINTED AS A PROMPT,
  141. IN PLACE OF THE QUESTION MARK THAT "INPUT" NORMALLY TYPES.  OTHERWISE, THE SYNTAX
  142. IS IDENTICAL TO NORMAL "INPUT" STATEMENT.
  143.  
  144.  
  145.  
  146. LPRINT
  147.  
  148. THIS HAS THE SAME SYNTAX AS THE NORMAL "PRINT" STATEMENT, BUT
  149. OUTPUT GOES TO THE CP/M LIST DEVICE INSTEAD OF TO THE CONSOLE.
  150.  
  151.  
  152.  
  153. BEAM X,Y
  154. DRAW X,Y
  155.  
  156. THESE STATEMENTS ARE FOR USE WITH TEKTRONIX 4010-SERIES GRAPHICS TERMINALS.
  157. "BEAM" PUTS THE TERMINAL IN GRAPH MODE AND POSITIONS THE BEAM TO SCREEN COORDINATES
  158. X,Y.  "DRAW" MOVES THE BEAM FROM ITS CURRENT LOCATION TO NEW LOCATION X,Y,
  159. DRAWING A LINE AS IT GOES.  X AND Y MUST BE EXPRESSIONS EVALUATING TO 10-BIT INTEGERS,
  160. ALTHOUGH THE INTERPRETER ONLY CHECKS TO MAKE SURE THEY ARE VALID 16-BIT INTEGERS.
  161.  
  162. OUTPUT TO THE TEKTRONIX TERMINAL IS NOT THROUGH CP/M (FOR SPEED), BUT RATHER
  163. THROUGH A SEPARATE HARDWARE DRIVER IN THE BASIC INTERPRETER. THE DRIVER
  164. ROUTINE IS NAMED "TPUT" IN THE SOURCE PROGRAM, AND IS CURRENTLY CONFIGURED
  165. FOR AN IMSAI SIO BOARD WITH THE TERMINAL ON PORTS 3 AND 2.
  166.  
  167.  
  168.  
  169.  
  170.  
  171. NEW AND MODIFIED INTRINSIC FUNCTIONS:
  172. ========================================
  173.  
  174.  
  175. INP(N)        RETURNS VALUE READ FROM PORT N, WHERE N IS A BYTE VALUE.
  176.  
  177.  
  178. PEEK(N)        RETURNS BYTE FROM MEMORY LOCATION N, WHERE N IS A 16-BIT INTEGER.
  179.  
  180.  
  181. POP(N)        POPS N VALUES OFF THE STACK WHERE THEY WERE PUT BY "PUSH", AND RETURNS
  182.         THE NTH OF THESE AS ITS VALUE. THE OTHERS ARE LOST.
  183.  
  184.  
  185. UNTRAP(N)    LIKE "POP", BUT TAKES VALUES OFF TRAP STACK.
  186.  
  187.  
  188. ARG(N)        ARGUMENT MUST BE 16-BIT INTEGER. ARG RETURNS ITS ARGUMENT
  189.         AS ITS VALUE, BUT ALSO SAVES IT FOR USE BY "CALL". NOT MODIFIED,
  190.         BUT DESCRIBED HERE FOR THE SAKE OF COMPLETENESS.
  191.  
  192.  
  193. CALL(N)        LOADS REGISTER PAIR BC WITH THE VALUE MOST RECENTLY PASSED BY "ARG",
  194.         AND EXECUTES A MACHINE-LANGUAGE "CALL" TO LOCATION N. IN ADDITION,
  195.         REGISTER PAIR DE IS LOADED WITH A POINTER TO THE TOP OF THE
  196.         "PUSH" STACK, FROM WHICH PREVIOUSLY "PUSH"ED VALUES CAN BE RETRIEVED.
  197.  
  198.         THE MACHINE-LANGUAGE ROUTINE CAN RETURN A 16-BIT VALUE BY PLACING
  199.         ITS LOW BYTE IN A AND HIGH BYTE IN B. THIS VALUE IS CONVERTED TO
  200.         FLOATING-POINT AND RETURNED AS THE VALUE OF THE BASIC "CALL".
  201.         THE ARGUMENT STACK POINTER IS NOT PASSED BACK TO BASIC.
  202.  
  203.         PARAMETER PASSING IN THE CALL STATEMENT NOW CONFORMS TO PL/M CONVENTIONS.
  204.