Valid keys were in the range .001 to 9999.999, and if no keys were assigned in the files, lines were assigned numbers 1.000, 2.000, etc. The highest-valued key in a file could read using: KEY(1) where the 1 is the stream number. Unstructured binary data could be read and written byte-at-a-time using GET and PUT. MAT commands Later versions of Dartmouth BASIC included a suite of MAT commands that allowed operations on entire arrays (matrices) with a single statement. These were also available in SDS BASIC. In their simplest form, the MAT is used like an alternate form of LET, applying an expression to all the elements in an array. For instance: 100 DIM A(20),B(20) ... 200 MAT A=A+B Will add the value of every value in B to every entry in A, in the same fashion as: 100 DIM A(20),B(20) ... 200 FOR I=1 TO 20 210 A(I)=A(I)+B(I) 220 NEXT I As well as making the code shorter and more obvious, these commands also have the advantage of being highly optimized, easily outperforming the use of FOR/NEXT. Additional functions and statements modify PRINT and INPUT, invert arrays, and build identity matrixes and such in a single statement.{ Notes References Citations Bibliography BASIC compilers BASIC programming language BASIC programming language family