Knowledge (XXG)

Commodore BASIC

Source 📝

563:, which made saving multiple files on other devices more difficult. The user of one of these other systems had to note the recorder's counter display at the location of the file, but this was inaccurate and prone to error. With the PET (and BASIC 2.0), files from cassettes could be requested by name. The device would search for the filename by reading data sequentially, ignoring any non-matching filenames. The file system was also supported by a powerful 992:
but only 4000 if declared as an integer array). Denoting any variable as integer simply causes BASIC to convert it back to floating point, slowing down program execution and wasting memory as each percent sign takes one additional byte to store (since this also applies to integer arrays, the programmer should avoid using them unless very large arrays are used that would exceed available memory if stored as floating point). Also, it is not possible to
1264: 371: 429: 330: 633:, causing the interpreter to stop reading and parse the statement according to a lookup table. This meant that the statement up to where the high bit was set was accepted as a substitute for typing the entire command out. However, since all BASIC keywords were stored in memory as single byte tokens, this was a convenience for statement entry rather than an optimization. 1275:, which was included on the Commodore 1541 Test/Demo Disk. This 1 KB extension to BASIC added a number of disk-related commands, including the ability to read a disk directory without destroying the program in memory. Its features were subsequently incorporated in various third-party extensions, such as the popular 1175:
do not refer to the same variable. The size of a string array merely refers to how many strings are stored in the array, not the size of each element, which is allocated dynamically. Unlike some other implementations of Microsoft BASIC, Commodore BASIC does not require string space to be reserved at
991:
variables (denoted with a percent sign) in the range -32768 to 32767, in practice they are only used for array variables and serve the function of conserving memory by limiting array elements to two bytes each (an array of 2000 elements will occupy 10,000 bytes if declared as a floating point array,
922:
statements will search downward from the current line to find a line number if a forward jump is performed, in case of a backwards jump, they will return to the start of the program to begin searching. This will slow down larger programs, so it is preferable to put commonly used subroutines near the
743:
takes less than a second in machine code, compared to over a minute in BASIC. To execute faster than the interpreter, programmers started using various techniques to speed up execution. One was to store often-used floating point values in variables rather than using literal values, as interpreting
1386:
by the programmer. It was common practice to increment numbers by some value (5, 10 or 100) to make inserting lines during program editing or debugging easier, but bad planning meant that inserting large sections into a program often required restructuring the entire code. A common technique was to
1246:
function in BASIC 2.0 suffered from another technical flaw in that it cannot handle signed numbers over 32768, thus if the function is invoked on a C64 (38k BASIC memory), a negative amount of free BASIC memory will be displayed (adding 65535 to the reported number will obtain the correct amount of
891:
error if the user enters a program line over 160 characters in length. Earlier versions do not produced an error and simply display the READY prompt two lines down if the line length is exceeded. The line number is counted in the number of characters in the program line, so a five digit line number
878:
Program lines can be 80 characters total on most machines, but machines with 40 column text would cause the line to wrap around to the next line on the screen, and on the VIC-20, which had a 22 column display, program lines could occupy as many as four. BASIC 7.0 on the Commodore 128 increased the
1192:
may be used to set the time via a six number string (an error results from using a string other than six numbers). The clock is not a very reliable method of timekeeping since it stops whenever interrupts are turned off (done by some kernal routines) and accessing the IEC (or IEEE port on the PET)
1151:
statement, it is automatically set to ten elements (in practice 11 since array elements are counted from 0). Larger arrays must be declared or BASIC will display an error when the program is run and an array cannot be re-dimensioned in a program unless all variables are wiped via a CLR statement.
899:
with a pointer (containing the address of the beginning of the next program line), a line number, and then the tokenized code for the line. While a program was being entered, BASIC would constantly reorder program lines in memory so that the line numbers and pointers were all in ascending order.
707:
By abbreviating keywords, it was possible to fit more code on a single program line (which could take up two screen lines on 40-column displays - i.e., C64 or PET, or four lines on the VIC-20's 22-column display). This allowed for a slight saving on the overhead to store otherwise necessary extra
616:
command will always load at the first two bytes contained in the program file. This created a problem when trying to load BASIC programs saved on other Commodore machines as they would load at a higher address than where the PET's BASIC expected the program to be, there were workarounds to "move"
315:
came with BASIC v2.0 in ROM even though the computer was released after the PET/CBM series that had version 4.0 because the 64 was intended as a home computer, while the PET/CBM series were targeted at business and educational use where their built-in programming language was presumed to be more
1238:
function is executed and if there are many string variables and arrays that have been manipulated over the course of a program, clearing them can take more than an hour under the worst conditions. It is also not possible to abort garbage collection as BASIC does not scan the RUN/STOP key while
1497:
command to display a disk's contents without clearing main memory. On the 64, viewing files on a disk was implemented as loading a "program" which when listed showed the directory as a pseudo BASIC program, with the file's block size as the line number. This had the effect of overwriting the
744:
a variable name was faster than interpreting a literal number. Since floating point is default type for all commands, it's faster to use floating point numbers as arguments, rather than integers. When speed was important, some programmers converted sections of BASIC programs to
823:
following a quote mark will cause BASIC to display the visual representation of the control code (in this case, a reversed heart) which is then acted upon at program execution (directly printing out the control codes uses less memory and executes faster than invoking a
1179:
Unlike other 8-bit machines such as the Apple II, Commodore's machines all have a built-in clock that is initialized to 0 at power on and updated with every tick of the PIA/VIA/TED/CIA timer, thus 60 times per second. It is assigned two system variables in BASIC,
1088:
statement, used to start machine language programs, was added by Commodore and was not in the original Microsoft BASIC code, which featured only the USR function for invoking machine language routines. It automatically loads the CPU's registers with the values in
1445:
to load and execute software. If program execution was halted using the RUN/STOP key, variable values would be preserved in RAM and could be PRINTed for debugging. The 128 even dedicated its second 64k bank to variable storage, allowing values to persist until a
1424:
command, as well as an AUTO line numbering command that would automatically select and insert line numbers according to a selected increment. Earlier BASICs from Commodore also lack debugging commands, meaning that bugs and unused variables are hard to trap.
911:
Line numbers can range from 0 to 65520 and take five bytes to store regardless of how many digits are in the line number, although execution is faster the fewer digits there are. Putting multiple statements on a line will use less memory and execute faster.
1396:, with the body of the program structured into sections starting at a designated line number like 1000, 2000, and so on. If a large section needed to be added, it could just be assigned the next available major line number and inserted to the jump table. 976:
is common. 6502 implementations of Microsoft BASIC utilized 40-bit floating point arithmetic, meaning that variables took five bytes to store (four byte mantissa and one byte for the exponent) unlike the 32-bit floating point found in BASIC-80.
708:
program lines, but nothing more. All BASIC commands were tokenized and took up 1 byte (or two, in the case of several commands of BASIC 7 or BASIC 10) in memory no matter which way they were entered. Such long lines were a nuisance to edit. The
621:
machine, the only way to load it on a PET was by modifying the first two bytes with a disk sector editor as the CBM-II series had their BASIC program area at $ 0, which would result in a PET attempting to load into the zero page and locking up.
1289:
The limitations of BASIC 2.0 on the C64 led to use of built-in ROM machine language from BASIC. To load a file to a designated memory location, the filename, drive, and device number would be read by a call:
559:– a popular storage device in the days of the PET, and one that remained in use throughout the lifespan of the 8-bit Commodores as an inexpensive form of mass storage. Most systems only supported filenames on 871:, and it was common to write programs with no spacing. This feature was added to conserve memory since the tokenizer never removes any space inserted between keywords: the presence of spaces results in extra 567:
that could be loaded or saved to files. Commodore cassette data was recorded digitally, rather than less expensive (and less reliable) analog methods used by other manufacturers. Therefore, the specialized
895:
The order of execution of Commodore BASIC lines was not determined by line numbering; instead, it followed the order in which the lines were linked in memory. Program lines were stored in memory as a
1462:-like feel; programmers could insert and edit program lines at any screen location, interactively building the program. This is in contrast to business-oriented operating systems of the time like 651:
onscreen). Most such commands were two letters long, but in some cases they were longer. In cases like this, there was an ambiguity, so more unshifted letters of the command were needed, such as
779:
A unique feature of Commodore BASIC is the use of control codes to perform tasks such as clearing the screen or positioning the cursor within a program; these can be invoked either by issuing a
1286:
Although BASIC 2.0's lack of sound or graphics features was frustrating to many users, some critics argued that it was ultimately beneficial since it forced the user to learn machine language.
1378:
From a modern programming point of view, the earlier versions of Commodore BASIC presented a host of bad programming traps for the programmer. As most of these issues derived from
1399:
In addition, all variables are treated as global variables. Clearly defined loops beyond the FOR...NEXT construct are hard to create, often causing the programmer to rely on the
544:
happened to be on the line. This marked a significant upgrade in program entry interfaces compared to other common home computer BASICs at the time, which typically used
1271:
Many BASIC extensions were released for the Commodore 64, due to the relatively limited capabilities of its native BASIC 2.0. One of the most popular extensions was the
1247:
free memory). The PET and VIC-20 never had more than 32k of total memory available to BASIC, so this limitation did not become apparent until the C64 was developed. The
1208:
works the same as other implementations of Microsoft BASIC in that a pseudo-random sequence is used via a fixed 5-byte seed value stored at power on in memory locations
1239:
performing this routine. BASIC 4.0 introduced an improved garbage collection system with back pointers and all later implementations of Commodore BASIC also have it.
752:
assembly language that was loaded separately from a file or POKEd into memory from DATA statements at the end of the BASIC program, and executed from BASIC using the
591:
parameter is not used, the program will load into the start of the BASIC program area, which widely differs between machines. Some Commodore BASIC variants supplied
3365: 3663: 1093:(C64, varies on other machines)--this can be used to pass data to machine language routines or as a means of calling kernal functions from BASIC (as an example, 1847:
to store program code separately from variables. Variable values would be preserved across program executions if the program was started with the GOTO command.
1152:
Numeric arrays are automatically filled with zeros when they are created, there may be a momentary delay in program execution if a large array is dimensioned.
587:
which will load a program into the memory address contained in the first two bytes of the file (these bytes are discarded and not retained in memory). If the
904:
commands could allow for out-of-order execution or even give each line the same line number. In the early days, when BASIC was used commercially, this was a
875:
bytes in the tokenized program which are merely skipped during execution. Spaces between the line number and program statement are removed by the tokenizer.
3653: 2125: 288:
Commodore took the source code of the flat-fee BASIC and further developed it internally for all their other 8-bit home computers. It was not until the
712:
command displayed the entire command keyword - extending the program line beyond the 2 or 4 screen lines which could be entered into program memory.
3658: 828:
function). This is in comparison to other implementations of BASIC which typically have dedicated commands to clear the screen or move the cursor.
1120:
Since Commodore 8-bit machines other than the C128 cannot automatically boot disk software, the usual technique is to include a BASIC stub like
704:
prompt. This glitch was used to some effect by programmers who wanted to try and protect their work, although it was fairly easy to circumvent.
3643: 1255:
on BASIC 7.0 was also "split" into two functions, one to display free BASIC program text memory and the other to display free variable memory.
1429:
structures, a standard part of Z80 Microsoft BASICs, were added to BASIC 3.5 after being unavailable in earlier versions of Commodore BASIC.
1382:, virtually every home computer BASIC of the era suffered from similar deficiencies. Every line of a Microsoft BASIC program was assigned a 3252: 2072: 1234:
BASIC 2.0 notoriously suffered from extremely slow garbage collection of strings. Garbage collection is automatically invoked any time a
1279:
cartridge. Other BASIC extensions added additional keywords to make it easier to code sprites, sound, and high-resolution graphics like
245:(in C64 mode) and other models. Later PETs featured BASIC 4.0, similar to the original but adding a number of commands for working with 268:
commands from the Plus/4's BASIC 3.5, as well as keywords designed specifically to take advantage of the machine's new capabilities. A
2540: 2516: 2394: 2336: 2303: 2270: 2218: 2181: 764:. When the execution speed of machine language was too great, such as for a game or when waiting for user input, programmers could 490: 472: 410: 357: 685:
shortcut, as was common in most Microsoft BASIC dialects. Abbreviating commands with shifted letters is unique to Commodore BASIC.
439: 2139: 388: 343: 949:, although this feature was part of the core Microsoft 6502 BASIC code, it was usually omitted in other implementations such as 3115: 2583: 1188:, which both contain the current time. TI is read-only and cannot be modified; doing so will result in a Syntax Error message. 1498:
currently loaded program. Addons like the DOS Wedge overcame this by rendering the directory listing direct to screen memory.
3633: 3247: 2081: 1441:, Commodore's machines booted directly into the BASIC interpreter. BASIC's file and programming commands could be entered in 626: 392: 1132:
to begin program execution. It is possible to automatically start software after loading and not require the user to type a
629:
could be abbreviated by entering first an unshifted keypress, and then a shifted keypress of the next letter. This set the
665:. Some commands had no abbreviated form, either due to brevity or ambiguity with other commands. For example, the command, 3320: 3230: 2863: 988: 3015: 879:
limit of a program line to 160 characters (four 40-column lines or two 80-column lines). By using abbreviations such as
3648: 3175: 2990: 2788: 2782: 573: 93: 71: 454: 1231:
statement, it is more typical on the C64 and C128 to utilize the SID chip's white noise channel for random numbers.
3469: 3464: 3120: 3025: 1775: 765: 269: 532:
or to input and edit program lines from anywhere on the screen. If a line was prefixed with a line number, it was
450: 381: 3512: 3125: 2995: 2467: 2326: 2260: 1603: 724: 2293: 2171: 696:, when trying to view the program listing, the BASIC interpreter would immediately abort the listing, display a 3638: 2793: 1797: 1167:
would each be understood as distinct. Array variables are also considered distinct from simple variables, thus
815:
is the control code to clear the screen) or by pressing the key in question between quote marks, thus pressing
636:
In the default uppercase-only character set, shifted characters appear as a graphics symbol; e.g. the command,
273: 1489:
lacked these, requiring the user to specify the disk drive's device number (typically 8 or 9) to the standard
252:
BASIC 3.5 was the first to really deviate, adding a number of commands for graphics and sound support on the
2066: 1371:, was a venue for hobbyist programmers, who shared collections of proto-commands for BASIC, called with the 972:. The accuracy of a floating point number using a three-byte mantissa is only about 6.5 decimal digits, and 174: 2210: 237:
version was very similar to the original Microsoft implementation with few modifications. BASIC 2.0 on the
3562: 3346: 2965: 2597: 1471: 1224:
with a negative number goes to a point in the sequence of the current seed value specified by the number.
265: 1216:
with any number higher than 0 will generate a random number amalgamated from the value included with the
3628: 3449: 3292: 3259: 2822: 2631: 2556:
c65manual.txt Commodore 65 preliminary documentation (March 1991), with addendum for ROM version 910501.
1810: 1155:
String variables are represented by tagging the variable name with a dollar sign. Thus, the variables
3517: 3381: 3333: 3272: 3186: 3090: 2977: 2695: 2690: 2685: 1751: 1520: 1204:, however it is of relatively limited use as only numbers between 0 and 255 are returned. Otherwise, 740: 630: 349: 170: 2561: 2234: 1493:
command, which otherwise defaulted to tape. Another omission from the Commodore 64s BASIC 2.0 was a
3597: 3487: 3361: 2705: 2638: 2576: 1455: 1367: 905: 749: 745: 196: 163: 2204: 1200:
function in Commodore BASIC can use the clock to generate random numbers; this is accomplished by
2778: 984:
supported integer and double precision variables, 6502 implementations were floating point only.
896: 541: 293: 134: 37: 2070: 304:
appearing on the screen. (The easter egg was well-obfuscated—the message did not show up in any
900:
However, after a program was entered, manually altering the line numbers and pointers with the
528:
which reversed direction when the shift key was held, the screen editor allowed users to enter
296:
into the version 2 or "upgrade" Commodore Basic that proved its provenance: typing the command
3474: 3310: 3110: 2946: 2661: 2648: 2536: 2512: 2438: 2390: 2332: 2299: 2266: 2214: 2177: 2012: 536:
and stored in program memory. Lines not beginning with a number were executed by pressing the
513: 122: 2903: 2413: 1474:. If a programming language was required on these platforms, it had to be loaded separately. 292:(with V7.0) that a Microsoft copyright notice was displayed. However, Microsoft had built an 3302: 2936: 2746: 2713: 2384: 2018: 1687: 1610: 1516: 1280: 1263: 736: 556: 509: 576:
to allow use of a standard recorder, but these cost only a little less than the Datasette.
3507: 3439: 3297: 3241: 2920: 2677: 2621: 2085: 2076: 1379: 1220:
function and the seed value, which is updated by 1 each time an RND function is executed.
1144: 981: 973: 950: 721: 602: 203: 199: 25: 1136:
statement, this is done by having a piece of code that hooks the BASIC "ready" vector at
202:, and as such it shares many characteristics with other 6502 BASICs of the time, such as 572:
was required rather than a standard tape recorder. Adapters were available that used an
3602: 3582: 3454: 3199: 3055: 2941: 2832: 2774: 2569: 2555: 2002: 1956: 1844: 1506:
A list of CBM BASIC versions in chronological order, with successively added features:
961: 564: 2146: 3622: 3607: 3492: 3395: 3020: 2741: 2728: 2718: 2627: 2006: 1905: 1850: 1769: 1622: 1571: 1529: 1438: 1276: 901: 831:
BASIC 3.5 and up have proper commands for clearing the screen and moving the cursor.
521: 289: 261: 242: 234: 189: 185: 181: 143: 139: 3522: 3434: 3324: 3035: 2951: 2808: 2761: 2492: 2062: 1944: 1741: 1683: 1597: 1486: 761: 728: 674: 312: 305: 277: 253: 238: 215: 2079: 1908:(unreleased prototype). Almost identical to V7.0, with the following differences: 838:
command will always display one between the line number and the statement), e.g.,
2358: 3502: 3444: 3341: 3282: 3209: 3075: 3065: 3010: 2868: 2853: 2827: 2667: 1708: 1442: 1413:
commands). Flag variables often needed to be created to perform certain tasks.
1383: 969: 964:. Most contemporary BASIC implementations used one byte for the characteristic ( 757: 545: 529: 525: 370: 246: 316:
heavily used. This saved manufacturing costs, as the V2 fit into smaller ROMs.
3592: 3587: 3572: 3219: 3135: 3070: 3045: 3005: 2985: 2888: 2848: 2817: 2798: 2736: 2088: 1393: 776:
for the 128, denoting size of the keyboard queue) to delay or halt execution.
555:
It also had the capability of saving named files to any device, including the
552:
command, or a "copy cursor" that truncated the line at the cursor's position.
219: 926:
Variable names are only significant to 2 characters; thus the variable names
3557: 3537: 3527: 3482: 3459: 3410: 3399: 3287: 3100: 3080: 3060: 3050: 2883: 2613: 2035: 1537:
V2.0 (first release): PET 2001 with full-travel keyboard & upgrade ROMs
1272: 732: 569: 533: 211: 207: 42: 30: 797:
command where X corresponds to the control code to be issued (for example,
3547: 3542: 3532: 3351: 3235: 3130: 3105: 3030: 2858: 2769: 2656: 1801: 1695: 1541: 965: 957: 834:
Program lines in Commodore BASIC do not require spaces anywhere (but the
560: 226:
per unit fee, stating, "I'm already married," and would pay no more than
126: 1405:
command (this was later rectified in BASIC 3.5 with the addition of the
3577: 3204: 3160: 3145: 3040: 2928: 2908: 2751: 2031: 2025: 1704: 1000:
memory locations above 32767 with address defined as a signed integer.
395: in this section. Unsourced material may be challenged and removed. 892:
will result in four fewer characters allowed than a one digit number.
3567: 3552: 3405: 3356: 3214: 3194: 3155: 3150: 3000: 2898: 2893: 2878: 2873: 1593: 1467: 956:
The native number format of Commodore BASIC, like that of its parent
618: 606: 517: 257: 669:
had no abbreviation because its spelling collided with the separate
457:. Statements consisting only of original research should be removed. 2593: 1745: 1736: 1631: 1627: 1389: 1262: 887:, it is possible to fit even more on a line. BASIC 7.0 displays a 673:
keyword, which was located nearer to the beginning of the keyword
661: 597: 178: 167: 2472: 2101:"Bill Gates' Personal Easter Eggs in 8 Bit BASIC - pagetable.com" 2100: 1532:
command explicitly disabled over BASIC ROM locations above $ C000
1458:
included with Commodore BASIC gave the programming environment a
1416:
Later BASIC versions on Commodore and other platforms included a
3371: 3140: 1463: 1459: 1401: 688:
This tokenizing method had a glitch such that if one included a
2565: 3391: 2386:
An Introduction to the Commodore 64: Adventures in Programming
1477:
While some versions of Commodore BASIC included disk-specific
422: 364: 323: 692:(BASIC statement to add a comment to the code) followed by a 617:
programs to the proper location. If a program was saved on a
276:
were added. The last, BASIC 10.0, was part of the unreleased
1568:
V4.0: PET/CBM 4000/8000 series (and late version PET 2001s)
1308:; the location would be specified in the X and Y registers: 908:
technique to discourage casual modification of the program.
2041: 1227:
Since true random number generation is impossible with the
1251:
function on BASIC 3.5 and 7.0 corrected this problem and
2065:
at the Commodore 64 25th Anniversary Celebration at the
1003:
A period (.) can be used in place of the number 0 (thus
446: 612:
The PET does not support relocatable programs and the
1212:
on the C64 (the location differs on other machines).
2034:(C128; floppy disk and optional internal ROM chip) ( 3427: 3380: 3332: 3319: 3271: 3185: 3173: 3089: 2976: 2964: 2919: 2841: 2807: 2760: 2727: 2704: 2676: 2647: 2612: 2605: 1372: 1354: 1309: 1291: 1209: 1201: 1137: 1121: 1094: 1090: 1058: 1034: 1019: 1004: 884: 880: 839: 798: 780: 773: 769: 133: 118: 92: 70: 48: 36: 24: 1454:command was issued. This, along with the advanced 941:Commodore BASIC also supports bitwise operators — 2535:. Grand Rapids, Michigan: Abacus Software, Inc. 1387:start a program at some low line number with an 1193:port will slow the clock update by a few ticks. 601:commands that worked like their counterparts in 583:command may be used with the optional parameter 2473:Bill Gates’ Personal Easter Eggs in 8 Bit BASIC 1989:PAINT,LOCATE,SCALE,WIDTH,SET,VIEWPORT,PASTE,CUT 1587:greatly improved garbage-collection performance 2408: 2406: 768:by reading selected memory locations (such as 2577: 524:. Although Commodore keyboards only have two 8: 1774:more sound and graphics commands, including 19: 731:. Test results have shown that copying 16 358:Learn how and when to remove these messages 3329: 3182: 2973: 2609: 2584: 2570: 2562: 2468:Commodore/Microsoft Basic version timeline 18: 2531:Jarvis, Dennis; Springer, Jim D. (1987). 2509:The Complete COMMODORE 16 ROM Disassembly 2439:"Mike Naberezny – Commodore LCD Firmware" 491:Learn how and when to remove this message 473:Learn how and when to remove this message 411:Learn how and when to remove this message 1890: 1761: 1554: 1353:; and the load routine would be called: 820: 816: 727:, Commodore BASIC is slower than native 537: 2054: 241:was also similar, and was also seen on 2507:Gerrard, Peter; Bergin, Kevin (1985). 2331:. COMPUTE! Publications. p. 231. 2265:. COMPUTE! Publications. p. 209. 1081:), this will execute slightly faster. 3664:Programming languages created in 1977 2383:Scrimshaw, N. B. (11 November 2013). 2298:. COMPUTE! Publications. p. 71. 2176:. COMPUTE! Publications. p. 37. 1485:commands, the version built into the 1147:, if an array is not declared with a 7: 508:A convenient feature of Commodore's 393:adding citations to reliable sources 2126:"Keyboarding and the Screen Editor" 2024:Graphics BASIC (C64; floppy disk) ( 2511:. Gerald Duckworth & Co. Ltd. 2328:Mapping the Commodore 64 & 64C 2295:Mapping the Commodore 64 & 64C 2262:Mapping the Commodore 64 & 64C 2173:Mapping the Commodore 64 & 64C 2044:(C64; floppy disk) (Dennis Osborn) 1760:C(1)16, Plus/4 Easter egg – enter 1592:V2.0 (second release, after 4.0): 987:Although Commodore BASIC supports 980:While 8080/Z80 implementations of 260:. BASIC 7.0 was included with the 16:BASIC programming language dialect 14: 3654:BASIC programming language family 2491:(for the full reference, see the 2209:. COMPUTE! Publications. p.  1267:The Simons' BASIC start-up screen 609:from specified memory locations. 339:This section has multiple issues. 2359:"Compute!'s First Book of Atari" 1470:, which typically booted into a 1283:(1983) and Vision BASIC (2022). 938:all refer to the same variable. 427: 369: 328: 206:. Commodore licensed BASIC from 3659:Microsoft programming languages 2489:The Anatomy of the Commodore 64 1547:improved the garbage collection 1143:As with most other versions of 380:needs additional citations for 347:or discuss these issues on the 1581:disk error-channel variables: 1526:arrays limited to 256 elements 1: 3644:Discontinued Microsoft BASICs 1365:A disk magazine for the C64, 2021:(C64; cartridge) (Commodore) 2015:(C64; cartridge) (Commodore) 1876:(read CPU registers after a 1563:an arbitrary number of times 2789:Data General Extended BASIC 2487:Angerhausen et al. (1983). 1787:multi-statement blocks for 1692:sound and graphics commands 574:analog-to-digital converter 453:the claims made and adding 210:in 1977 on a "pay once, no 101:; 33 years ago 79:; 39 years ago 54:; 47 years ago 3682: 1997:Notable extension packages 968:) and three bytes for the 184:line, stretching from the 3513:Disk Extended Color BASIC 3126:Open Programming Language 2206:Mapping the Commodore 128 2203:Cowper, Ottis R. (1986). 1950:graphics/video commands: 1723:function key assignment: 1576:DLOAD,DSAVE,COPY,SCRATCH, 230:for a perpetual license. 114: 66: 3411:WinFBE, Visual FB Editor 2794:Southampton BASIC System 2325:Leemon, Sheldon (1987). 2292:Leemon, Sheldon (1987). 2259:Leemon, Sheldon (1987). 2170:Leemon, Sheldon (1987). 1987:unimplemented commands: 1889:C128 Easter egg – enter 1883:unimplemented commands: 1781:built-in sprite editor: 1719:DO,LOOP,WHILE,UNTIL,EXIT 1674:string search function: 1656:dynamic error handling: 1613:series (aka B, P range) 1176:the start of a program. 548:, invoked by a separate 274:machine language monitor 2067:Computer History Museum 1947:(unreleased prototype) 1872:undocumented, working: 1839:SWAP,FETCH,STASH,FRE(1) 1831:controlled time delay: 1730:program entry/editing: 1650:alternative branching: 762:from the program itself 640:, could be abbreviated 175:Commodore International 119:Implementation language 3563:MS BASIC for Macintosh 3347:Visual Basic (classic) 2657:TI-BASIC (calculators) 2596:programming language ( 2414:"BASIC 4.0 Memory Map" 2005:(VIC-20; delivered on 1859:CPU speed adjustment: 1819:get variable address: 1553:Easter egg – entering 1472:command line interface 1407:DO, LOOP, WHILE, UNTIL 1268: 266:structured programming 3634:Commodore 64 software 3450:Atari Microsoft BASIC 3293:Microsoft Small Basic 3260:Embedded Visual Basic 2823:VSI BASIC for OpenVMS 2363:www.atariarchives.org 1825:text mode windowing: 1502:Versions and features 1437:In common with other 1433:Use as user interface 1266: 756:command, either from 681:command had a single 659:) being required for 308:of the interpreter.) 195:The core is based on 3518:Extended Color BASIC 2691:Rocky Mountain BASIC 2686:HP Time-Shared BASIC 1935:Additional command: 1932:commands not present 1851:more disk operations 1732:AUTO,DELETE,RENUMBER 1717:structured looping: 1638:formatted printing: 1623:more disk operations 1515:V1.0: PET 2001 with 1373:SYS address + offset 1299:"filename" 1117:clears the screen). 923:start of a program. 605:, loading or saving 389:improve this article 171:programming language 3598:TI BASIC (TI 99/4A) 3488:Benton Harbor BASIC 2706:Locomotive Software 2533:BASIC 7.0 Internals 1981:memory management: 1899:Unreleased versions 1837:memory management: 1658:TRAP,RESUME,ERR$ () 1616:memory management: 906:software protection 677:. The heavily used 49:First appeared 21: 3649:BASIC interpreters 2084:2017-10-03 at the 2075:2008-12-11 at the 2069:December 10, 2007 1891:SYS 32800,123,45,6 1727:(also direct mode) 1269: 897:singly linked list 720:Like the original 700:and return to the 522:full-screen editor 438:possibly contains 3616: 3615: 3476:BASIC Programming 3423: 3422: 3419: 3418: 3362:Visual Basic .NET 3169: 3168: 2960: 2959: 2947:Super Expander 64 2662:TI Extended BASIC 2649:Texas Instruments 2443:mikenaberezny.com 2235:"Mapping The C64" 2105:www.pagetable.com 2013:Super Expander 64 1975:program editing: 1863:(2 vs 1 MHz) 1640:PRINT USING,PUDEF 1510:Released versions 644:(which resembled 540:key whenever the 514:BASIC interpreter 501: 500: 493: 483: 482: 475: 440:original research 421: 420: 413: 362: 320:Technical details 149: 148: 3671: 3330: 3303:OpenOffice Basic 3183: 2974: 2912: 2747:North Star BASIC 2714:Locomotive BASIC 2610: 2592:Dialects of the 2586: 2579: 2572: 2563: 2454: 2453: 2451: 2449: 2435: 2429: 2428: 2426: 2424: 2410: 2401: 2400: 2380: 2374: 2373: 2371: 2369: 2355: 2349: 2348: 2346: 2345: 2322: 2316: 2315: 2313: 2312: 2289: 2283: 2282: 2280: 2279: 2256: 2250: 2249: 2247: 2245: 2239:www.unusedino.de 2231: 2225: 2224: 2200: 2194: 2193: 2191: 2190: 2167: 2161: 2160: 2158: 2157: 2151: 2145:. Archived from 2144: 2140:"Byte July 1983" 2136: 2130: 2129: 2122: 2116: 2115: 2113: 2111: 2097: 2091: 2059: 1990: 1984: 1978: 1972: 1968: 1962: 1953: 1938: 1931: 1926: 1922: 1917: 1913: 1886: 1879: 1875: 1869: 1866:enter C64 mode: 1862: 1856: 1840: 1834: 1828: 1822: 1816: 1807: 1794: 1790: 1784: 1757: 1748: 1733: 1726: 1720: 1714: 1701: 1677: 1671: 1665: 1659: 1653: 1647: 1644:error trapping: 1641: 1635: 1619: 1584: 1578:etc. (15 in all) 1577: 1562: 1517:chiclet keyboard 1496: 1492: 1484: 1480: 1453: 1449: 1428: 1427:IF...THEN...ELSE 1423: 1419: 1412: 1408: 1404: 1392: 1374: 1361: 1360: 1357: 1352: 1351: 1348: 1345: 1342: 1339: 1336: 1333: 1330: 1327: 1324: 1321: 1318: 1315: 1312: 1307: 1306: 1303: 1300: 1297: 1294: 1254: 1250: 1245: 1237: 1230: 1223: 1219: 1215: 1211: 1207: 1203: 1199: 1191: 1187: 1183: 1174: 1170: 1166: 1162: 1158: 1150: 1139: 1135: 1131: 1130: 1127: 1124: 1116: 1115: 1112: 1109: 1106: 1103: 1100: 1097: 1092: 1087: 1080: 1079: 1076: 1073: 1070: 1067: 1064: 1061: 1056: 1055: 1052: 1049: 1046: 1043: 1040: 1037: 1032: 1031: 1028: 1025: 1022: 1017: 1016: 1013: 1010: 1007: 999: 995: 948: 944: 937: 933: 929: 921: 917: 890: 889:?STRING TOO LONG 886: 882: 874: 870: 869: 866: 863: 860: 857: 854: 851: 848: 845: 842: 837: 827: 814: 813: 810: 807: 804: 801: 796: 795: 792: 789: 786: 783: 775: 771: 755: 711: 703: 699: 695: 691: 684: 680: 672: 668: 664: 658: 654: 650: 643: 639: 625:Commodore BASIC 615: 600: 594: 590: 586: 582: 565:record structure 551: 496: 489: 478: 471: 467: 464: 458: 455:inline citations 431: 430: 423: 416: 409: 405: 402: 396: 373: 365: 354: 332: 331: 324: 303: 300:would result in 299: 229: 225: 154:, also known as 109: 107: 102: 87: 85: 80: 62: 60: 55: 26:Designed by 22: 3681: 3680: 3674: 3673: 3672: 3670: 3669: 3668: 3639:VIC-20 software 3619: 3618: 3617: 3612: 3508:Dartmouth BASIC 3498:Commodore BASIC 3440:Applesoft BASIC 3415: 3383: 3376: 3323: 3315: 3274: 3267: 3242:Microsoft Excel 3178: 3165: 3092: 3085: 2969: 2956: 2915: 2906: 2837: 2803: 2756: 2723: 2700: 2678:Hewlett-Packard 2672: 2643: 2626:TRS-80 BASICs ( 2622:Microsoft BASIC 2601: 2590: 2560: 2475:, pagetable.com 2463: 2458: 2457: 2447: 2445: 2437: 2436: 2432: 2422: 2420: 2412: 2411: 2404: 2397: 2382: 2381: 2377: 2367: 2365: 2357: 2356: 2352: 2343: 2341: 2339: 2324: 2323: 2319: 2310: 2308: 2306: 2291: 2290: 2286: 2277: 2275: 2273: 2258: 2257: 2253: 2243: 2241: 2233: 2232: 2228: 2221: 2202: 2201: 2197: 2188: 2186: 2184: 2169: 2168: 2164: 2155: 2153: 2149: 2142: 2138: 2137: 2133: 2124: 2123: 2119: 2109: 2107: 2099: 2098: 2094: 2086:Wayback Machine 2077:Wayback Machine 2060: 2056: 2051: 1999: 1988: 1982: 1976: 1970: 1966: 1960: 1952:PALETTE,GENLOCK 1951: 1936: 1929: 1924: 1920: 1915: 1911: 1901: 1892: 1884: 1877: 1873: 1867: 1860: 1854: 1843:used the 128's 1838: 1832: 1826: 1820: 1814: 1805: 1792: 1788: 1782: 1763: 1755: 1754:entry command: 1740: 1731: 1724: 1718: 1712: 1699: 1675: 1667: 1663: 1657: 1651: 1645: 1639: 1626: 1617: 1582: 1575: 1572:disk operations 1560: 1558: 1523:(original PET) 1512: 1504: 1494: 1490: 1482: 1478: 1451: 1447: 1435: 1426: 1421: 1417: 1410: 1406: 1400: 1388: 1380:Microsoft BASIC 1358: 1355: 1349: 1346: 1343: 1340: 1337: 1334: 1331: 1328: 1325: 1322: 1319: 1316: 1313: 1310: 1304: 1301: 1298: 1295: 1292: 1261: 1252: 1248: 1243: 1235: 1228: 1221: 1217: 1213: 1205: 1197: 1189: 1185: 1181: 1172: 1168: 1164: 1160: 1156: 1148: 1145:Microsoft BASIC 1133: 1128: 1125: 1122: 1113: 1110: 1107: 1104: 1101: 1098: 1095: 1085: 1077: 1074: 1071: 1068: 1065: 1062: 1059: 1053: 1050: 1047: 1044: 1041: 1038: 1035: 1029: 1026: 1023: 1020: 1014: 1011: 1008: 1005: 997: 993: 982:Microsoft BASIC 974:round-off error 951:Applesoft BASIC 946: 942: 935: 931: 927: 919: 915: 888: 872: 867: 864: 861: 859:"YES" 858: 855: 852: 849: 846: 843: 840: 835: 825: 822: 818: 811: 808: 805: 802: 799: 793: 790: 787: 784: 781: 772:for the 64, or 753: 722:Microsoft BASIC 718: 709: 701: 697: 693: 689: 682: 678: 670: 666: 660: 656: 652: 645: 641: 637: 613: 603:Applesoft BASIC 596: 592: 588: 584: 580: 549: 539: 530:direct commands 506: 504:Program editing 497: 486: 485: 484: 479: 468: 462: 459: 444: 432: 428: 417: 406: 400: 397: 386: 374: 333: 329: 322: 301: 297: 286: 264:, and included 227: 223: 204:Applesoft BASIC 200:Microsoft BASIC 152:Commodore BASIC 110: 105: 103: 100: 99:V10.0 / 1991 94:Preview release 88: 83: 81: 78: 58: 56: 53: 20:Commodore BASIC 17: 12: 11: 5: 3679: 3678: 3675: 3667: 3666: 3661: 3656: 3651: 3646: 3641: 3636: 3631: 3621: 3620: 3614: 3613: 3611: 3610: 3605: 3603:Turbo-BASIC XL 3600: 3595: 3590: 3585: 3583:Sinclair BASIC 3580: 3575: 3570: 3565: 3560: 3555: 3550: 3545: 3540: 3535: 3530: 3525: 3520: 3515: 3510: 3505: 3500: 3495: 3490: 3485: 3480: 3472: 3467: 3462: 3457: 3455:Atari ST BASIC 3452: 3447: 3442: 3437: 3431: 3429: 3425: 3424: 3421: 3420: 3417: 3416: 3414: 3413: 3408: 3403: 3388: 3386: 3378: 3377: 3375: 3374: 3369: 3359: 3354: 3349: 3344: 3338: 3336: 3327: 3317: 3316: 3314: 3313: 3308: 3305: 3300: 3295: 3290: 3285: 3279: 3277: 3269: 3268: 3266: 3265: 3262: 3257: 3256: 3255: 3250: 3238: 3233: 3228: 3225: 3222: 3217: 3212: 3207: 3202: 3200:Chipmunk Basic 3197: 3191: 3189: 3180: 3171: 3170: 3167: 3166: 3164: 3163: 3158: 3153: 3148: 3143: 3138: 3133: 3128: 3123: 3118: 3113: 3108: 3103: 3097: 3095: 3087: 3086: 3084: 3083: 3078: 3073: 3068: 3063: 3058: 3053: 3048: 3043: 3038: 3033: 3028: 3023: 3018: 3013: 3008: 3003: 2998: 2993: 2988: 2982: 2980: 2971: 2962: 2961: 2958: 2957: 2955: 2954: 2949: 2944: 2942:Super Expander 2939: 2934: 2933:Graphics BASIC 2931: 2925: 2923: 2917: 2916: 2914: 2913: 2901: 2896: 2891: 2886: 2881: 2876: 2871: 2866: 2861: 2856: 2851: 2845: 2843: 2839: 2838: 2836: 2835: 2833:CALL/360:BASIC 2830: 2825: 2820: 2814: 2812: 2805: 2804: 2802: 2801: 2796: 2791: 2786: 2775:Business Basic 2772: 2766: 2764: 2758: 2757: 2755: 2754: 2749: 2744: 2739: 2733: 2731: 2729:Microcomputers 2725: 2724: 2722: 2721: 2716: 2710: 2708: 2702: 2701: 2699: 2698: 2693: 2688: 2682: 2680: 2674: 2673: 2671: 2670: 2665: 2659: 2653: 2651: 2645: 2644: 2642: 2641: 2635: 2624: 2618: 2616: 2607: 2603: 2602: 2591: 2589: 2588: 2581: 2574: 2566: 2559: 2558: 2552: 2551: 2549: 2545: 2544: 2528: 2527: 2525: 2521: 2520: 2504: 2503: 2501: 2497: 2496: 2484: 2483: 2481: 2477: 2476: 2470: 2464: 2462: 2459: 2456: 2455: 2430: 2402: 2395: 2389:. Birkhäuser. 2375: 2350: 2337: 2317: 2304: 2284: 2271: 2251: 2226: 2219: 2195: 2182: 2162: 2131: 2117: 2092: 2053: 2052: 2050: 2047: 2046: 2045: 2039: 2029: 2022: 2016: 2010: 2003:Super Expander 1998: 1995: 1994: 1993: 1992: 1991: 1985: 1979: 1973: 1963: 1954: 1941: 1940: 1939: 1933: 1927: 1918: 1900: 1897: 1896: 1895: 1894: 1893: 1887: 1881: 1870: 1864: 1857: 1848: 1845:bank switching 1841: 1835: 1829: 1823: 1817: 1808: 1795: 1785: 1779: 1766: 1765: 1764: 1758: 1749: 1734: 1728: 1721: 1715: 1702: 1693: 1680: 1679: 1678: 1672: 1660: 1654: 1648: 1642: 1636: 1620: 1607: 1600: 1590: 1589: 1588: 1585: 1579: 1566: 1565: 1564: 1551: 1548: 1545: 1535: 1534: 1533: 1527: 1511: 1508: 1503: 1500: 1439:home computers 1434: 1431: 1260: 1257: 989:signed integer 962:floating point 717: 714: 698:?SYNTAX ERROR 505: 502: 499: 498: 481: 480: 435: 433: 426: 419: 418: 377: 375: 368: 363: 337: 336: 334: 327: 321: 318: 285: 282: 214:" basis after 188:(1977) to the 147: 146: 137: 131: 130: 120: 116: 115: 112: 111: 98: 96: 90: 89: 77:V7.0 / 1985 76: 74: 72:Stable release 68: 67: 64: 63: 50: 46: 45: 40: 34: 33: 28: 15: 13: 10: 9: 6: 4: 3: 2: 3677: 3676: 3665: 3662: 3660: 3657: 3655: 3652: 3650: 3647: 3645: 3642: 3640: 3637: 3635: 3632: 3630: 3627: 3626: 3624: 3609: 3608:Vilnius BASIC 3606: 3604: 3601: 3599: 3596: 3594: 3591: 3589: 3586: 3584: 3581: 3579: 3576: 3574: 3571: 3569: 3566: 3564: 3561: 3559: 3556: 3554: 3551: 3549: 3546: 3544: 3541: 3539: 3536: 3534: 3531: 3529: 3526: 3524: 3521: 3519: 3516: 3514: 3511: 3509: 3506: 3504: 3501: 3499: 3496: 3494: 3493:Chinese BASIC 3491: 3489: 3486: 3484: 3481: 3479: 3477: 3473: 3471: 3468: 3466: 3463: 3461: 3458: 3456: 3453: 3451: 3448: 3446: 3443: 3441: 3438: 3436: 3433: 3432: 3430: 3426: 3412: 3409: 3407: 3404: 3401: 3397: 3396:Basic4android 3393: 3390: 3389: 3387: 3385: 3379: 3373: 3370: 3367: 3363: 3360: 3358: 3355: 3353: 3350: 3348: 3345: 3343: 3340: 3339: 3337: 3335: 3331: 3328: 3326: 3322: 3318: 3312: 3309: 3306: 3304: 3301: 3299: 3296: 3294: 3291: 3289: 3286: 3284: 3281: 3280: 3278: 3276: 3270: 3264:WinWrap Basic 3263: 3261: 3258: 3254: 3251: 3249: 3246: 3245: 3243: 3239: 3237: 3234: 3232: 3229: 3226: 3223: 3221: 3218: 3216: 3213: 3211: 3208: 3206: 3203: 3201: 3198: 3196: 3193: 3192: 3190: 3188: 3184: 3181: 3177: 3172: 3162: 3159: 3157: 3154: 3152: 3149: 3147: 3144: 3142: 3139: 3137: 3134: 3132: 3129: 3127: 3124: 3122: 3119: 3117: 3114: 3112: 3109: 3107: 3104: 3102: 3099: 3098: 3096: 3094: 3088: 3082: 3079: 3077: 3074: 3072: 3069: 3067: 3064: 3062: 3059: 3057: 3054: 3052: 3049: 3047: 3044: 3042: 3039: 3037: 3034: 3032: 3029: 3027: 3024: 3022: 3021:Liberty BASIC 3019: 3017: 3014: 3012: 3009: 3007: 3004: 3002: 2999: 2997: 2994: 2992: 2989: 2987: 2984: 2983: 2981: 2979: 2975: 2972: 2967: 2963: 2953: 2950: 2948: 2945: 2943: 2940: 2938: 2937:Simons' BASIC 2935: 2932: 2930: 2927: 2926: 2924: 2922: 2918: 2910: 2905: 2902: 2900: 2897: 2895: 2892: 2890: 2887: 2885: 2882: 2880: 2877: 2875: 2872: 2870: 2867: 2865: 2862: 2860: 2857: 2855: 2852: 2850: 2847: 2846: 2844: 2840: 2834: 2831: 2829: 2826: 2824: 2821: 2819: 2816: 2815: 2813: 2810: 2806: 2800: 2797: 2795: 2792: 2790: 2787: 2784: 2780: 2776: 2773: 2771: 2768: 2767: 2765: 2763: 2762:Minicomputers 2759: 2753: 2750: 2748: 2745: 2743: 2742:Integer BASIC 2740: 2738: 2735: 2734: 2732: 2730: 2726: 2720: 2719:Mallard BASIC 2717: 2715: 2712: 2711: 2709: 2707: 2703: 2697: 2694: 2692: 2689: 2687: 2684: 2683: 2681: 2679: 2675: 2669: 2666: 2663: 2660: 2658: 2655: 2654: 2652: 2650: 2646: 2640: 2636: 2633: 2629: 2625: 2623: 2620: 2619: 2617: 2615: 2611: 2608: 2604: 2599: 2595: 2587: 2582: 2580: 2575: 2573: 2568: 2567: 2564: 2557: 2554: 2553: 2550: 2547: 2546: 2542: 2541:0-916439-71-2 2538: 2534: 2530: 2529: 2526: 2523: 2522: 2518: 2517:0-7156-2004-5 2514: 2510: 2506: 2505: 2502: 2499: 2498: 2494: 2490: 2486: 2485: 2482: 2479: 2478: 2474: 2471: 2469: 2466: 2465: 2460: 2444: 2440: 2434: 2431: 2419: 2415: 2409: 2407: 2403: 2398: 2396:9781489967879 2392: 2388: 2387: 2379: 2376: 2364: 2360: 2354: 2351: 2340: 2338:9780874550825 2334: 2330: 2329: 2321: 2318: 2307: 2305:9780874550825 2301: 2297: 2296: 2288: 2285: 2274: 2272:9780874550825 2268: 2264: 2263: 2255: 2252: 2240: 2236: 2230: 2227: 2222: 2220:9780874550603 2216: 2212: 2208: 2207: 2199: 2196: 2185: 2183:9780874550825 2179: 2175: 2174: 2166: 2163: 2152:on 2017-08-24 2148: 2141: 2135: 2132: 2127: 2121: 2118: 2106: 2102: 2096: 2093: 2089: 2087: 2083: 2080: 2078: 2074: 2071: 2068: 2064: 2058: 2055: 2048: 2043: 2040: 2037: 2033: 2030: 2027: 2023: 2020: 2019:Simons' BASIC 2017: 2014: 2011: 2009:) (Commodore) 2008: 2007:ROM cartridge 2004: 2001: 2000: 1996: 1986: 1980: 1974: 1964: 1958: 1955: 1949: 1948: 1946: 1942: 1934: 1928: 1919: 1910: 1909: 1907: 1906:Commodore LCD 1903: 1902: 1898: 1888: 1882: 1871: 1865: 1858: 1852: 1849: 1846: 1842: 1836: 1830: 1824: 1818: 1812: 1809: 1803: 1799: 1796: 1786: 1780: 1777: 1773: 1772: 1771: 1767: 1759: 1753: 1750: 1747: 1743: 1738: 1735: 1729: 1722: 1716: 1713:DEC(),HEX$ () 1710: 1706: 1703: 1697: 1694: 1691: 1690: 1689: 1685: 1681: 1673: 1670: 1661: 1655: 1649: 1643: 1637: 1633: 1629: 1624: 1621: 1615: 1614: 1612: 1608: 1605: 1601: 1599: 1595: 1591: 1586: 1580: 1573: 1570: 1569: 1567: 1557: 1552: 1550:fix array bug 1549: 1546: 1543: 1539: 1538: 1536: 1531: 1528: 1525: 1524: 1522: 1519:and built-in 1518: 1514: 1513: 1509: 1507: 1501: 1499: 1488: 1475: 1473: 1469: 1465: 1461: 1457: 1456:screen editor 1444: 1440: 1432: 1430: 1414: 1403: 1397: 1395: 1391: 1385: 1381: 1376: 1370: 1369: 1363: 1287: 1284: 1282: 1281:Simons' BASIC 1278: 1277:Epyx FastLoad 1274: 1265: 1258: 1256: 1240: 1232: 1225: 1194: 1177: 1153: 1146: 1141: 1118: 1082: 1001: 990: 985: 983: 978: 975: 971: 967: 963: 959: 954: 952: 939: 924: 913: 909: 907: 903: 898: 893: 876: 832: 829: 777: 767: 763: 759: 751: 747: 742: 738: 734: 730: 726: 723: 715: 713: 705: 686: 676: 663: 649: 634: 632: 628: 623: 620: 610: 608: 604: 599: 577: 575: 571: 566: 562: 558: 553: 547: 543: 535: 531: 527: 523: 519: 515: 511: 503: 495: 492: 477: 474: 466: 456: 452: 448: 442: 441: 436:This section 434: 425: 424: 415: 412: 404: 394: 390: 384: 383: 378:This section 376: 372: 367: 366: 361: 359: 352: 351: 346: 345: 340: 335: 326: 325: 319: 317: 314: 309: 307: 295: 291: 290:Commodore 128 283: 281: 279: 275: 271: 267: 263: 262:Commodore 128 259: 255: 250: 248: 244: 240: 236: 233:The original 231: 222:' offer of a 221: 217: 213: 209: 205: 201: 198: 193: 191: 190:Commodore 128 187: 183: 182:home computer 180: 176: 172: 169: 165: 161: 157: 153: 145: 144:Commodore 128 141: 138: 136: 132: 128: 124: 121: 117: 113: 97: 95: 91: 75: 73: 69: 65: 51: 47: 44: 41: 39: 35: 32: 29: 27: 23: 3629:CBM software 3523:Family BASIC 3497: 3478:(Atari 2600) 3475: 3435:Altair BASIC 3036:Mobile BASIC 2952:YS MegaBasic 2809:Time-sharing 2783:Data General 2664:(aka XBasic) 2632:Level II/III 2532: 2508: 2488: 2446:. Retrieved 2442: 2433: 2421:. Retrieved 2417: 2385: 2378: 2366:. Retrieved 2362: 2353: 2342:. Retrieved 2327: 2320: 2309:. Retrieved 2294: 2287: 2276:. Retrieved 2261: 2254: 2242:. Retrieved 2238: 2229: 2205: 2198: 2187:. Retrieved 2172: 2165: 2154:. Retrieved 2147:the original 2134: 2128:. July 1985. 2120: 2108:. Retrieved 2104: 2095: 2063:Jack Tramiel 2057: 2042:Vision BASIC 1961:MOUSE,RMOUSE 1945:Commodore 65 1904:V3.6 : 1855:BOOT,DVERIFY 1811:exclusive or 1791:structures: 1789:IF THEN ELSE 1711:conversion: 1669: 1556: 1505: 1487:Commodore 64 1476: 1436: 1415: 1398: 1377: 1366: 1364: 1288: 1285: 1270: 1259:Alternatives 1241: 1233: 1226: 1195: 1178: 1154: 1142: 1119: 1083: 1002: 986: 979: 955: 940: 925: 914: 910: 894: 877: 833: 830: 778: 729:machine code 719: 706: 687: 675:lookup table 647: 635: 624: 611: 578: 554: 546:line editors 507: 487: 469: 460: 437: 407: 398: 387:Please help 382:verification 379: 355: 348: 342: 341:Please help 338: 313:Commodore 64 311:The popular 310: 298:WAIT 6502, 1 287: 278:Commodore 65 251: 247:floppy disks 232: 218:turned down 216:Jack Tramiel 194: 159: 155: 151: 150: 3503:Color BASIC 3445:Atari BASIC 3384:open source 3342:CA-Realizer 3334:Proprietary 3307:ScriptBasic 3275:open source 3210:LotusScript 3187:Proprietary 3121:Indic BASIC 3093:open source 3076:Turbo Basic 3066:Tiger-BASIC 3011:FutureBASIC 2978:Proprietary 2907: [ 2869:Casio BASIC 2854:Astro BASIC 2828:SUPER BASIC 2668:TI-BASIC 83 2418:zimmers.net 1977:FIND,CHANGE 1969:) utility: 1965:text file ( 1943:V10 : 1923:instead of 1914:instead of 1739:(tracing): 1709:hexadecimal 1609:V4+ : 1443:direct mode 1384:line number 1091:$ 30C-$ 30F 1057:instead of 1018:instead of 883:instead of 758:direct mode 725:interpreter 716:Performance 653:GO{Shift-S} 526:cursor keys 401:August 2011 306:disassembly 272:editor and 3623:Categories 3593:SuperBASIC 3588:STOS BASIC 3573:QuickBASIC 3298:Mono-Basic 3220:PowerBASIC 3179:extensions 3136:SmallBASIC 3071:True BASIC 3056:SmileBASIC 3046:PowerBASIC 3006:Beta BASIC 2991:AMOS BASIC 2986:AmigaBASIC 2889:Tiny BASIC 2849:AlphaBasic 2818:BASIC-PLUS 2799:Wang BASIC 2737:Atom BASIC 2548:BASIC 10.0 2344:2018-03-25 2311:2018-03-25 2278:2018-03-25 2189:2018-03-25 2156:2015-05-01 2061:Stated by 2049:References 1983:DMA,FRE(2) 1813:function: 1793:BEGIN,BEND 1561:MICROSOFT! 1555:WAIT6502, 1521:Datassette 1394:jump table 1390:ON...GOSUB 642:G{Shift-O} 512:-resident 447:improve it 344:improve it 302:Microsoft! 294:easter egg 220:Bill Gates 3558:MSX BASIC 3538:IBM BASIC 3528:GFA BASIC 3483:BBC BASIC 3400:Basic4ppc 3325:designers 3288:FreeBASIC 3240:VB 5 for 3227:Run BASIC 3111:DarkBASIC 3101:Basic-256 3081:WordBASIC 3061:ThinBasic 3051:PureBasic 2966:Procedure 2921:Extenders 2884:SDS BASIC 2811:computers 2639:BASIC 1.0 2614:Microsoft 2524:BASIC 7.0 2500:BASIC 3.5 2495:article). 2480:BASIC 2.0 2423:21 August 2368:21 August 2244:21 August 2036:Walrusoft 1930:FAST,SLOW 1861:FAST,SLOW 1762:SYS 52650 1737:debugging 1662:flexible 1559:displays 1495:DIRECTORY 1375:command. 1273:DOS Wedge 1210:$ 8B-$ 8F 932:VARIABLE2 928:VARIABLE1 856:THENPRINT 733:kilobytes 694:{Shift-L} 570:Datasette 534:tokenized 463:July 2013 451:verifying 350:talk page 212:royalties 208:Microsoft 162:, is the 160:CBM-BASIC 156:PET BASIC 43:Microsoft 38:Developer 31:Microsoft 3548:MacBASIC 3543:JR-BASIC 3533:GW-BASIC 3470:BASIC XL 3465:BASIC XE 3460:BASIC A+ 3382:Free and 3352:NS Basic 3283:BlitzMax 3273:Free and 3236:VBScript 3224:ProvideX 3131:SdlBasic 3116:Euphoria 3106:Basic4GL 3091:Free and 3031:MapBasic 2970:oriented 2859:BASICODE 2770:BASIC-11 2696:HP Basic 2637:Thomson 2448:8 August 2110:8 August 2082:Archived 2073:Archived 1885:OFF,QUIT 1802:lightpen 1778:handling 1696:joystick 1668:RESTORE 1542:IEEE-488 1422:RENUMBER 1368:Loadstar 970:mantissa 966:exponent 958:MS BASIC 821:CLR HOME 631:high bit 627:keywords 561:diskette 557:cassette 520:was the 228:$ 25,000 192:(1985). 173:used in 135:Platform 123:Assembly 3578:S-BASIC 3428:Defunct 3366:Mercury 3205:GLBasic 3161:Yabasic 3146:wxBasic 3041:OWBasic 2929:BASIC 8 2904:ETBASIC 2752:SCELBAL 2628:Level I 2606:Classic 2461:Sources 2032:BASIC 8 2026:Hesware 1959:input: 1821:POINTER 1806:POT,PEN 1804:input: 1756:MONITOR 1705:decimal 1698:input: 1684:C16/116 1646:DISPOSE 1634:,DCLEAR 1583:DS,DS$ 1544:support 943:AND, OR 817:⇧ Shift 607:bitmaps 445:Please 284:History 166:of the 164:dialect 142:to the 104: ( 82: ( 57: ( 3568:QBasic 3553:MBASIC 3406:Gambas 3357:RapidQ 3311:Roslyn 3215:Morfik 3195:AutoIt 3176:object 3156:Xblite 3151:XBasic 3001:BasicX 2899:ZBasic 2894:UBASIC 2879:PBASIC 2874:CBASIC 2539:  2515:  2393:  2335:  2302:  2269:  2217:  2180:  1937:POPUPS 1912:VOLUME 1827:WINDOW 1798:paddle 1783:SPRDEF 1776:sprite 1768:V7.0: 1688:Plus/4 1682:V3.5: 1666:read: 1611:CBM-II 1606:(1990) 1594:VIC-20 1468:MS-DOS 1418:DELETE 1409:, and 1202:RND(0) 1163:, and 1138:$ 0302 960:, was 945:, and 934:, and 702:READY. 671:INPUT# 619:CBM-II 542:cursor 538:RETURN 518:KERNAL 270:sprite 258:Plus/4 3174:With 3016:GRASS 2911:] 2842:Other 2594:BASIC 2150:(PDF) 2143:(PDF) 1957:mouse 1833:SLEEP 1746:TROFF 1676:INSTR 1632:BSAVE 1628:BLOAD 1604:C64GS 1602:V2.2 1483:DSAVE 1479:DLOAD 1359:65493 1296:57812 1114:65490 920:GOSUB 885:PRINT 826:CHR$ 803:CHR$ 800:PRINT 785:CHR$ 782:PRINT 735:from 679:PRINT 667:INPUT 662:GOSUB 598:BSAVE 593:BLOAD 243:C128s 179:8-bit 168:BASIC 3372:Xojo 3253:VSTA 3248:VSTO 3244:5.0 3141:QB64 2996:ASIC 2598:list 2537:ISBN 2513:ISBN 2450:2018 2425:2023 2391:ISBN 2370:2023 2333:ISBN 2300:ISBN 2267:ISBN 2246:2023 2215:ISBN 2178:ISBN 2112:2018 1971:TYPE 1925:QUIT 1921:EXIT 1874:RREG 1868:GO64 1770:C128 1742:TRON 1664:DATA 1652:ELSE 1618:BANK 1540:add 1530:PEEK 1491:LOAD 1481:and 1464:CP/M 1460:REPL 1420:and 1411:EXIT 1402:GOTO 1341:POKE 1326:POKE 1311:POKE 1242:The 1196:The 1190:TI$ 1186:TI$ 1184:and 1173:A(1) 1171:and 1157:AA$ 1129:2048 1096:POKE 1084:The 998:PEEK 994:POKE 918:and 916:GOTO 902:POKE 873:0x20 865:GOTO 836:LIST 774:$ D0 770:$ C6 766:poll 750:6510 746:6502 710:LIST 638:GOTO 614:LOAD 595:and 581:LOAD 579:The 550:EDIT 516:and 256:and 197:6502 127:6502 106:1991 84:1985 59:1977 52:1977 3392:B4X 3321:RAD 3231:VBA 3026:LSE 2864:BAL 2779:B32 2493:C64 1967:SEQ 1916:VOL 1878:SYS 1815:XOR 1752:MLM 1725:KEY 1700:JOY 1598:C64 1466:or 1452:RUN 1450:or 1448:NEW 1356:SYS 1350:192 1344:782 1329:781 1314:780 1293:SYS 1253:FRE 1249:FRE 1244:FRE 1236:FRE 1229:RND 1222:RND 1218:RND 1214:RND 1206:RND 1198:RND 1165:AA% 1149:DIM 1134:RUN 1126:SYS 1111:SYS 1105:147 1099:780 1086:SYS 1078:100 1063:FOR 1054:100 1039:FOR 1033:or 996:or 947:XOR 868:160 841:100 809:147 760:or 754:SYS 748:or 741:RAM 739:to 737:ROM 690:REM 657:GO♥ 510:ROM 449:by 391:by 254:C16 239:C64 235:PET 224:$ 3 186:PET 177:'s 158:or 140:PET 3625:: 3398:, 2909:zh 2781:, 2630:, 2441:. 2416:. 2405:^ 2361:. 2237:. 2213:. 2211:66 2103:. 1853:: 1800:, 1744:, 1707:↔ 1686:, 1630:, 1625:: 1596:; 1574:: 1362:. 1182:TI 1161:AA 1159:, 1140:. 1123:10 1075:to 1060:10 1051:TO 1036:10 1021:10 1006:10 953:. 936:VA 930:, 844:IF 589:,1 585:,1 353:. 280:. 249:. 3402:) 3394:( 3368:) 3364:( 2968:- 2785:) 2777:( 2634:) 2600:) 2585:e 2578:t 2571:v 2543:. 2519:. 2452:. 2427:. 2399:. 2372:. 2347:. 2314:. 2281:. 2248:. 2223:. 2192:. 2159:. 2114:. 2090:. 2038:) 2028:) 1880:) 1347:, 1338:: 1335:0 1332:, 1323:: 1320:0 1317:, 1305:8 1302:, 1169:A 1108:: 1102:, 1072:0 1069:= 1066:A 1048:. 1045:= 1042:A 1030:0 1027:= 1024:A 1015:. 1012:= 1009:A 881:? 862:: 853:5 850:= 847:A 819:+ 812:) 806:( 794:) 791:X 788:( 683:? 655:( 648:Γ 646:G 494:) 488:( 476:) 470:( 465:) 461:( 443:. 414:) 408:( 403:) 399:( 385:. 360:) 356:( 129:) 125:( 108:) 86:) 61:)

Index

Designed by
Microsoft
Developer
Microsoft
Stable release
Preview release
Assembly
6502
Platform
PET
Commodore 128
dialect
BASIC
programming language
Commodore International
8-bit
home computer
PET
Commodore 128
6502
Microsoft BASIC
Applesoft BASIC
Microsoft
royalties
Jack Tramiel
Bill Gates
PET
C64
C128s
floppy disks

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.