SHERRY BROTHERS TINY BASIC VERSION 3.1 THIS IS A COPY OF LICHEN WANG'S 'PALO ALTO TINY BASIC' WHICH HAS BEEN MODIFIED TO INCLUUDE MORE FUNCTIONS, AND DISK SAVE AND LOAD. IT SETS IT'S SIZE TO WHATEVER SIZE YOUR SYSTEM IS, SO IT DOES NOT NEED TO BE REASSEMBLED FOR DIFFERENT SYSTEM SIZES. IF YOU HAVE ANY PROBLEMS WITH IT GIVE ME A CALL OR WRITE ME AND I WILL SEE WHAT I CAN DO. HERE IS MY ADDRESS AND PHONE: BRUCE SHERRY 1054 BLUEBELL DR. LIVERMORE, CA. 94550 TEL (415) 443-9288 THE LANGUAGE NUMBERS IN TINY BASIC, ALL NUMBERS ARE INTEGERS AND MUST BE LESS THAN 32767. VARIABLES THERE ARE 26 VARIABLES DENOTED BY LETTERS A THROUGH Z. THERE IS ALSO A SINGLE ARRAY @(I). THE DIMENSION OF THIS ARRAY (I.E., THE RANGE OF VALUE OF THE INDEX I) IS SET AUTOMATICALLY TO MAKE USE OF ALL THE MEMORY SPACE THAT IS LEFT UNUSED BY THE PROGRA. (I.E., 0 THROUGH SIZE/2, SEE SIZE FINCTION BELOW.) FINCTIONS PRESENTLY THERE ARE 6 FUNCTIONS: ABS(X) GIVES THE ABSOLUTE VALUE OF X. RND(X) GIVES A RANDOM NUMBER BETWEEN 1 AND X (INCLUSIVE). SIZE GIVES THE NUMBER OF BYTES LEFT UNUSED BY THE PROGRAM. IT IS A TWO'S COMPLEMENT NUMBER SO IF IT IS NEGATIVE IT IS ACTUALLY LARGER THAN 32767. INP(X) GIVES THE VALUE (0 TO 255) OF INPUT PORT X PEEK(X) GIVES THE VALUE OF MEMORY LOCATION X. TWO'S COMPLEMENT AGAIN. USR(X<,Y>) CALLS THE MACHINE LANGUAGE SUBROUTINE AT LOCATION X. OPTIONAL PARAMETER Y IS PASSED IN H&L IF THERE AND THE VALUE OF THE FUNCTION IS RETURNED IN H&L. THE PROGRAM SAVES ALL REGISTERS, SO YOU DON'T HAVE TO. ARITHMETIC AND COMPARE OPERATORS / DIVIDE. NOTE THAT SINCE WE HAVE INTEGERS ONLY, 2/3=0. * MULTIPLY. - SUBTRACT. + ADD. > COMPARE IF GREATER THAN. < COMPARE IF LESS THAN. = COMPARE IF EQUAL TO. NOTE THAT TO CERTAIN VERSIONS OF BASIC "LET A=B=0" MEANS "SET BOTH A AND B TO 0". TO THIS VERSION OF TINY BASIC, IT MEAND "SET A TO THE RESULT OF COMPARING B WITH 0". # COMPARE IF NOT EQUAL TO. >= COMPARE IF GREATER THAN OR EQUAL TO. <= COMPARE IF LESS THAN OR EQUAL TO. +, -, *, AND / OPERATIONS RESULT IN A VALUE OF BETWEEN -32767 AND 32767. (-32768 IS ALSO ALLOWED IN SOME CASES.) ALL COMPARE OPERATORS RESULT IN A 1 IF TRUE AND A 0 IF NOT TRUE. EXPRESSIONS EXPRESSIONS ARE FORMED WITH NUMBERS, VARIABLES, AND FUNCTIONS WITH ARITHMETIC AND COMPARE OPERATORS BETWEEN THEM. + AND - SIGNS CAN ALSO BE USED AT THE BEGINNING OF AN EXPRESSION. THE VALUE OF AN EXPRESSION IS EVALUATED FROM LEFT TO RIGHT, EXCEPT THAT * AND / ARE ALWAYS DONE FIRST, AND THEN + AND - , AND THEN COMPARE OPERATORS. PARENTHESES CAN ALSO BE USED TO ALTER THE ORDER OF EVALUATION. STATEMENTS A TINY BASIC STATEMENT CONSISTS OF A STATEMENT NUMBER BETWEEN 1 AND 32767 FOLLOWED BY ONE OR MORE COMMANDS. COMMANDS IN THE SAME STATEMENT ARE SEPARATED BY A SEMI-COLON ";". "GOTO", "STOP", AND "RETURN" COMMANDS MUST BE THE LAST COMMAND IN ANY GIVEN STATEMENT. PROGRAM A TINY BASIC PROGRAM CONSISTS OF ONE OR MORE STATEMENTS. WHEN A DIRECT COMMAND "RUN" IS ISSUED, THE STATEMENT WITH THE LOWEST STATEMENT NUMBER IS EXECUTED FORST, THE THE ONE WITH THE NEXT LOWEST STATEMENT NUMBER, ETC. HOWEVER, THE "GOTO", "GOSUB", "STOP", AND "RETURN" COMMANDS CAN ALTER THIS NORMAL SEQUENCE. WITHIN THE STATEMENT, EXECUTION OF COMMANDS IS FROM LEFT TO RIGHT. THE "IF" COMMAND CAN CAUSE THE EXECUTION OF ALL THE COMMANDS TO ITS RIGHT IN THE SAME STATEMENT TO BE SKIPPED OVER. COMMANDS TINY BASIC COMMANDS ARE LISTED BELOW WITH EXAMPLES. REMEMBER THAT COMMANDS CAN BE CONCATENATED WITH SEMI-COLONS. IN ORDER TO STORE THE STATEMENT, YOU MUST ALSO HAVE A STATEMENT NUMBER IN FRONT OF THE COMMANDS. THE STATEMENT NUMBER AND THE CONCATENATION ARE NOT SHOWN IN THE EXAMPLES. REM OR REMARK COMMAND REM ANYTHING GOES THIS LINE WILL BE IGNORED BY TBI. LET COMMAND LET A=234-5*6, A=A/2, X=A-100, @(X+9)=A-1 WILL SET THE VARIABLE A TO THE VALUE OF THE EXPRESSION 234-5*6 (I.E. 204), SET THE VARIABLE A (AGAIN) TO THE VALUE OF THE EXPRESSION A/2 (I.E. 102), SET THE VARIABLE X TO THE VALUE OF THE EXPRESSION A=100 (I.E. 2), AND THEN SET THE VARIABLE @(11) TO 101 (WHERE 11 IS THE VALUE OF THE EXPRESSION AX+9 AND 101 IS THE VALUE OF THE EXPRESSION A-1). LET U=A#B, V=(A>B)*X+(A