home *** CD-ROM | disk | FTP | other *** search
- HAMPSHIRE COLLEGE BASIC VERSION Z1.0
- ======================= ============
-
-
- PROCESSOR TECHNOLOGY 5K BASIC, ADAPTED FOR CP/M
- BY KEVIN JORDAN (BOX 588, HAMPSHIRE COLLEGE, AMHERST, MASS. 01002).
-
- WITH MODIFICATIONS BY JEFF ZURKOW.
-
-
-
-
- THIS IS PROC. TECH. 5K BASIC MODIFIED TO START AT 100H AND
- TO DO ITS I/O THROUGH CP/M. PROVISIONS HAVE BEEN ADDED TO
- ALLOW BASIC PROGRAMS TO BE SAVED AS CP/M FILES, OPERATION
- MADE FASTER FOR LARGE-MEMORY SYSTEMS, AND A NUMBER OF
- NEW STATEMENTS AND COMMANDS HAVE BEEN ADDED.
-
-
-
-
- CONTROL CHARACTERS
- ==================
-
- RUBOUT AND CTRL-U WORK AS IN CP/M.
- CTRL-C TAKES YOU BACK TO THE COMMAND LEVEL OF BASIC/5.
- CTRL-E AND CTRL-P ARE NOT IMPLEMENTED.
-
- TO GET BACK TO CP/M, USE THE COMMAND "SYSTEM".
-
-
- DISK FILES
- ==========
-
-
- IN THE COMMANDS THAT FOLLOW, <FN> DENOTES A FILE NAME OF UP TO 8 CHARACTERS,
- OPTIONALLY FOLLOWED BY A DOT (".") AND A FILE TYPE OF UP TO THREE
- CHARACTERS. IF THE FILE TYPE IS OMITTED, IT DEFAULTS TO "BSC". IF NAME AND
- TYPE ARE BOTH OMITTED, THE DEFAULT IS "PROGRAM.BSC". AS A SPECIAL CASE, THE
- QUERIES "NEW PROGRAM NAME" AND "OLD PROGRAM NAME" MAY BE ANSWERED WITH A
- CARRIAGE RETURN ALONE, OR WITH A FILE NAME AND NO TYPE, TO TAKE ADVANTAGE OF
- THE DEFAULT OPTIONS.
-
-
- THE FILE COMMANDS ARE:
-
-
- NAME TYPES THE CURRENT WORKSPACE NAME.
-
- NAME <FN> RENAMES THE CURRENT WORKSPACE TO THE SPECIFIED NAME AND TYPE.
-
- NEW <FN> RENAMES THE CURRENT WORKSPACE AND ERASES THE PROGRAM.
-
- OLD <FN> ERASES THE CURRENT PROGRAM AND LOADS THE SPECIFIED FILE FROM THE DISK.
- IF <FN> IS OMITTED, "OLD" (AND "NEW") WILL ASK FOR IT.
-
- UNSAVE <FN> ERASES THE SPECIFIED FILE FROM THE DISK.
-
- ERA <FN> SAME AS UNSAVE <FN>.
-
- SAVE SAVES THE CURRENT PROGRAM ON THE DISK UNDER THE CURRENT WORKSPACE NAME.
- IF A FILE WITH THIS NAME ALREADY EXISTS, IT IS DELETED FIRST.
-
- SAVE <FN> RENAMES THE WORKSPACE TO <FN> AND THEN DOES A SAVE.
-
-
-
- IF A FILE IS SPECIFIED WHEN BASIC IS INVOKED (IE. "BASIC/5 <FN>"), IT WILL BE
- LOADED AND BASIC WILL REFRAIN FROM ASKING "NEW OR OLD?". NOTE THAT FILES SAVED BY
- BASIC ARE IN AN INTERNAL FORMAT, NOT ASCII, SO THEY CANNOT BE EDITED WITH THE
- CP/M EDITOR.
-
-
-
-
- OTHER NEW COMMANDS:
- ==================
-
-
- SYSTEM RETURNS CONTROL TO CP/M WITH REBOOT.
-
- LLIST SYNTAX IS SAME AS NORMAL "LIST", BUT LISTS ON CP/M LIST DEVICE
- INSTEAD OF ON CONSOLE. LISTING IS PRECEEDED AND FOLLOWED BY 2 CRLF'S.
-
-
-
-
-
-
- THE FOLLOWING STATEMENTS HAVE BEEN ADDED:
- ========================================
-
-
-
-
- WHERE BYTE VALUES ARE INDICATED, AN ARBITRARY EXPRESSION, EVALUATING TO A BYTE VALUE (8-BIT
- INTEGER) MAY BE USED. EXPRESSIONS EVALUATING TO 16-BIT INTEGERS MAY SIMILARLY BE USED FOR
- ADDRESS VALUES.
-
-
-
- OUT <PORT>[<B1>,<B2>, . . . ,<BN>]
-
- THE BYTES B1, B2, . . . ,BN ARE OUTPUT TO THE SPECIFIED PORT.
- AN INDEFINITE NUMBER OF ADDITIONAL PORTS AND BYTE STRINGS MAY BE SPECIFIED, PRECEEDED BY COMMAS.
- EXAMPLE: OUT 2[27,109],5[44,10]
-
-
-
- POKE <A1>[<B1>,<B2>, . . . ,<BN>]
-
- PUTS THE BYTES B1 . . . BN IN MEMORY STARTING AT LOCATION <A1> (A 16-BIT VALUE).
- THE RIGHT BRACKET MAY BE FOLLOWED BY A COMMA AND ANOTHER ADDRESS AND BYTE STRING, AND SO ON.
-
-
-
- PUSH <A1>,<A2>, . . . ,<AN>
-
- THE ADDRESSES (16-BIT INTEGERS) <A1> THROUGH <AN> ARE PUSHED ON AN INTERNAL STACK WHICH
- BUILDS DOWNWARD FROM LOCATION "MACSTK" IN THE SOURCE TEXT. THERE IS CURRENTLY ROOM FOR
- 17 ENTRIES, AND STACK OVERFLOW CHECKING IS PROVIDED. THE LAST ADDRESS IN THE LIST WINDS UP
- ON THE STACK TOP (IE. IT WILL BE THE FIRST ENTRY REMOVED). "PUSH", AND THE
- CORRESPONDING "POP" ARE INTENDED TO PROVIDE A WAY OF PASSING MULTIPLE ARGUMENTS TO MACHINE-
- LANGUAGE SUBPROGRAMS.
-
-
-
- TRAP <A1>,<A2>, . . . ,<AN>
-
- THIS STATEMENT BEHAVES LIKE "PUSH", BUT REFERENCES A SEPARATE STACK.
- THE VALUES PUSHED ARE TREATED AS LINE NUMBERS. WHEN AN ERROR OCCURS
- IN BASIC, THE TOP VALUE WILL BE POPPED OFF THE TRAP STACK AND CONTROL
- WILL PASS TO THE STATEMENT IT SPECIFIES. IF THE STACK IS EMPTY, AN
- ERROR MESSAGE WILL BE PRINTED AS USUAL.
-
-
-
- INPUT "<STRING>", <VAR. LIST>
-
- THE QUOTED STRING IS OPTIONAL. IF INCLUDED, IT WILL BE PRINTED AS A PROMPT,
- IN PLACE OF THE QUESTION MARK THAT "INPUT" NORMALLY TYPES. OTHERWISE, THE SYNTAX
- IS IDENTICAL TO NORMAL "INPUT" STATEMENT.
-
-
-
- LPRINT
-
- THIS HAS THE SAME SYNTAX AS THE NORMAL "PRINT" STATEMENT, BUT
- OUTPUT GOES TO THE CP/M LIST DEVICE INSTEAD OF TO THE CONSOLE.
-
-
-
- BEAM X,Y
- DRAW X,Y
-
- THESE STATEMENTS ARE FOR USE WITH TEKTRONIX 4010-SERIES GRAPHICS TERMINALS.
- "BEAM" PUTS THE TERMINAL IN GRAPH MODE AND POSITIONS THE BEAM TO SCREEN COORDINATES
- X,Y. "DRAW" MOVES THE BEAM FROM ITS CURRENT LOCATION TO NEW LOCATION X,Y,
- DRAWING A LINE AS IT GOES. X AND Y MUST BE EXPRESSIONS EVALUATING TO 10-BIT INTEGERS,
- ALTHOUGH THE INTERPRETER ONLY CHECKS TO MAKE SURE THEY ARE VALID 16-BIT INTEGERS.
-
- OUTPUT TO THE TEKTRONIX TERMINAL IS NOT THROUGH CP/M (FOR SPEED), BUT RATHER
- THROUGH A SEPARATE HARDWARE DRIVER IN THE BASIC INTERPRETER. THE DRIVER
- ROUTINE IS NAMED "TPUT" IN THE SOURCE PROGRAM, AND IS CURRENTLY CONFIGURED
- FOR AN IMSAI SIO BOARD WITH THE TERMINAL ON PORTS 3 AND 2.
-
-
-
-
-
- NEW AND MODIFIED INTRINSIC FUNCTIONS:
- ========================================
-
-
- INP(N) RETURNS VALUE READ FROM PORT N, WHERE N IS A BYTE VALUE.
-
-
- PEEK(N) RETURNS BYTE FROM MEMORY LOCATION N, WHERE N IS A 16-BIT INTEGER.
-
-
- POP(N) POPS N VALUES OFF THE STACK WHERE THEY WERE PUT BY "PUSH", AND RETURNS
- THE NTH OF THESE AS ITS VALUE. THE OTHERS ARE LOST.
-
-
- UNTRAP(N) LIKE "POP", BUT TAKES VALUES OFF TRAP STACK.
-
-
- ARG(N) ARGUMENT MUST BE 16-BIT INTEGER. ARG RETURNS ITS ARGUMENT
- AS ITS VALUE, BUT ALSO SAVES IT FOR USE BY "CALL". NOT MODIFIED,
- BUT DESCRIBED HERE FOR THE SAKE OF COMPLETENESS.
-
-
- CALL(N) LOADS REGISTER PAIR BC WITH THE VALUE MOST RECENTLY PASSED BY "ARG",
- AND EXECUTES A MACHINE-LANGUAGE "CALL" TO LOCATION N. IN ADDITION,
- REGISTER PAIR DE IS LOADED WITH A POINTER TO THE TOP OF THE
- "PUSH" STACK, FROM WHICH PREVIOUSLY "PUSH"ED VALUES CAN BE RETRIEVED.
-
- THE MACHINE-LANGUAGE ROUTINE CAN RETURN A 16-BIT VALUE BY PLACING
- ITS LOW BYTE IN A AND HIGH BYTE IN B. THIS VALUE IS CONVERTED TO
- FLOATING-POINT AND RETURNED AS THE VALUE OF THE BASIC "CALL".
- THE ARGUMENT STACK POINTER IS NOT PASSED BACK TO BASIC.
-
- PARAMETER PASSING IN THE CALL STATEMENT NOW CONFORMS TO PL/M CONVENTIONS.
-