====== BASIC Programming Language ====== Beginners' All-Purpose Symbolic Instruction Code was developed at Dartmouth College in 1964. It is a high level programming language that was designed for ease of use and became a first programming language for many students. Microsoft's very first product in 1975 was a BASIC interpreter for the Altair 8800. In the microcomputer revolution that followed Microsoft BASIC became the built in language for many machines and saw wide use through the late 1980s. ====== Getting BASIC started ====== For most systems, typing **BASIC** once you are logged in will start a BASIC interpreter. From there you can issue BASIC commands or type in STATEMENTS that can be immediately evaluated. For typing in programs, the user usually types in line numbers with the common practice being that you start at 10 and number by 10s. This gives you enough space if you need to add additional lines between statements and is particularly critical on some BASIC interpreters that don't have a RENUM fuction. BASICs on the various systems do have their own dialects and this page will attempt to point those out. On the [[vm_cms_survival_guide|IBM 4361 running VM/SP5]] there is no interactive BASIC interpreter, but you can EDIT files and provide them as input to BASIC. ^**Command**^**Description**^ |OLD, LOAD|Loads an existing file into the memory buffer| |SAVE, REPLACE|Saves or replaces a file with the contents of the memory buffer| |NEW, SCRATCH|Clears the memory buffer| |RUN|Runs the program currently in the memory buffer| |RENUM|Not always available, but will renumber your program| |SYSTEM, MONITOR|Returns to the Operating System| |BYE, LOGOUT, OFF|Quits BASIC and logs the user out of the system| ====== BASIC Programming Examples ====== There are many statements available to you in BASIC, but here are a few that can get you started and will work across many BASIC interpreters. Check out the BASIC Reference Manuals section below for all the statements available for a particular system. Statement names and syntax can vary a bit. These examples are run under [[unix_survival|UNIX System V]] on the [[at_t_3b2_1000-70|AT&T 3B2 1000-70]] using the Bell Labs BASIC interpreter, but are generic enough to run on any of the BASIC systems available. UNIX System V R.3 (WINS) (lcm3b2) login: lcm Password: LCMguest UNIX System V Release 3.2.2 AT&T 3B2 lcm3b2 Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T All Rights Reserved $ basic * REM *** BASIC will evaluate 2+2 to give us 4 *print 2+2 4 * REM *** The variable 'a' defaults to the value of '0' *print a 0 * REM *** LET assigns the value of '1' to the variable 'a' and 'print a' gives us '1' *let a=1 *print a 1 * REM *** STRINGS are quoted in BASIC and to use a variable as a string, just append '$' to it *print "Hello World!" Hello World! * let a$ = "Hello World!" * print a$ Hello World! * REM *** Now let's write it as a program with line numbers *10 print "Hello World!" *20 end * REM *** The LIST command will show us what we typed in *list 10 print "Hello World!" 20 end * REM *** The RUN command will run our program *run Hello World! * REM *** The NEW command will clear the memory buffer and LIST will show us nothing is there *new *list * * REM *** Lets write a programming using INPUT to assign a VARIABLE N *10 input "What is your name?"; n$ *20 print "Hello "; n$ *30 end *list 10 input "What is your name?"; n$ 20 print "Hello "; n$ 30 end *run What is your name?? COMPUTER Hello COMPUTER * REM *** Here is an example of a FOR loop. The loop is closed with the NEXT statement. * REM *** NEXT I tells BASIC that the variable I is free to be used again. *new *10 for i = 0 to 20 *20 print i *30 next i *40 end *run 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 * REM *** The STEP statement is implied in the FOR loop as "STEP 1" by default * REM *** But you can specify a STEP number - here we STEP by 2 * REM *** To replace line 10, just type it in as if it were a new line *10 for i = 0 to 20 step 2 *list 10 for i = 0 to 20 step 2 20 print i 30 next i 40 end *run 0 2 4 6 8 10 12 14 16 18 20 * REM *** Likewise we can run the FOR loop backwards by using a "STEP -1" *10 for i = 20 to 0 step -1 *list 10 for i = 20 to 0 step -1 20 print i 30 next i 40 end *run 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 * REM *** Here is an advanced example which will introduce nested FOR loops * REM *** and the function INT (integer) and SIN (sine) to calculate a sine wave *list 10 let w = 2 15 let h = 20 20 let t = 6.28318/h 25 let s = 35 30 for i = 1 to w 35 for j = 0 to 6.38318 - t step t 40 let a = int(sin(j) * s + 0.5) 45 for k = 1 to s + a 50 print " "; 55 next k 60 print "+" 65 next j 70 next i *run + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + * REM *** To return back to UNIX, type the command "SYSTEM" *system $ ====== BASIC Reference Manuals ====== Visit our repository for [[https://livingcomputers.org/Computer-Collection/Online-Systems/User-Documentation.aspx|User Documentation for Online Systems]] for formal user and reference manual.