138,139 Tokenization takes place in a 256 byte ($100) buffer that resides at the end of the reserved OS RAM (pointed to by locations 128, 129; $80, $81). To see the starting address of your BASIC line numbers use this routine: 10 STMTAB = PEEK(136) + PEEK(137)*2 56 20 NUM = PEEK(STMTAB) + PEEK (STMTAB +1)*256 30 IF NUM = 32768 THEN END 40 PRINT"LINE NUMBER: ";NUM;" ADDRE SS: ";STMTAB 50 STMTAB = STMTAB + PEEK(STMTAB+2) 60 GOTO 20 The August 1982 issue of ANTIC provided a useful program to delete a range of BASIC line numbers. The routine can be appended to your program and even be used to delete itself. 138,139 8A,8B STMCUR Current BASIC statement pointer, used to access the tokens being currently processed within a line of the statement table. When BASIC is awaiting input, this pointer is set to the beginning of the immediate mode (line 32768). Using the address of the variable name table, the length, and the current statement (locations 130 to 133, 138, 139), here is a way to protect your programs from being LISTed or LOADed: they can only be RUN! Remember, that restricts you too, so make sure you have SAVEd an unchanqed version before you do this: 32000 FOR VARI = PEEK(130) + PEEK(1 31) * 256 TO PEEK(132) + PEEK(1 33) * 256:POKE VARI,155:NEXT VA RI 32100 POKE PEEK(138) + PEEK(139) * 256 + 2,0: SAVE "D:filename": N EW This will cause all variable names to be replaced with a RETURN character. Other characters may be used: simply change 155 for the appropriate ATASCII code for the character desired. Make sure that these are the last two lines of your program and that NEW is the last statement. CLOAD will not work, but a filename with C: will. 140,141 8C,8D STARP The address for the string and array table and a pointer to the end of your BASIC program. Arrays are stored as six-byte binary