Home > CBM > BASIC > Keywords > Restore 180 Subpages: (divide), (equal), (less), (minus), (more), (multiply), (plus), (power), Abs, And, Append, Asc, Atn, Auto, Backup, Bank, Begin, Bend, Bload, Boot, Box, Bsave, Bump, Catalog, Char, Chr, Circle, Close, Clr, Cmd, Collect, Collision, Color, Concat, Cont, Copy, Cos, Data, Dclear, Dclose, Dec, Def, Delete, Dim, Directory, Dispose, Dload, Do, Dopen, Draw, Ds, Ds string, Dsave, Dverify, El, Else, End, Envelope, Er, Err, Exit, Exp, Fast, Fetch, Filter, Fn, For, Fre, Get, Get num, Getkey, Go, Gosub, Goto, Graphic, Gshape, Header, Help, Hex, If, Input, Input num, Instr, Int, Joy, Key, Left, Len, Let, List, Load, Locate, Log, Loop, Mid, Monitor, Movspr, New, Next, Not, Off, On, Open, Or, Paint, Peek, Pen, Pi, Play, Pointer, Poke, Pos, Pot, Print, Print num, Pudef, Quit, Rclr, Rdot, Read, Record, Rem, Rename, Renumber, Resume, Return, Rgr, Right, Rlum, Rnd, Rreg, Rspcolor, Rsppos, Rsprite, Run, Rwindow, Save, Scale, Scnclr, Scratch, Sgn, Sin, Sleep, Slow, Sound, Spc, Sprcolor, Sprdef, Sprite, Sprsav, Sqr, Sshape, St, Stash, Step, Stop, Str, Swap, Sys, Tab, Tan, Tempo, Then, Ti, Ti string, To, Trap, Troff, Tron, Until, Using, Usr, Val, Verify, Vol, Wait, While, Width, Window, Xor |
| Keyword | Abbreviation | Token (hex) | Version(s) | Classification | | RESTORE | RE{Shift+S} | 8C | 1.0 to 7.0 | Command and Statement |
RESTORE [ lineNumber ] ... | Parameters | Type | Legal Value(s) | Default Value | Note(s) | | lineNumber | Unsigned Integer | 0 ~ 63999 | first line of program | Only valid in v3.5+; lineNumber must exist if specified |
Internal BASIC state management / user DATA access management.
The statement resets the secret DATA pointer to (by default) the beginning of the program. In a way, it is the opposite of READ (which advances the DATA pointer). Without a lineNumber, this statement simply allows the program to re-read DATA that has previously been READ. It might be used to re-set the initial state of the program; or it might be used to READ the same DATA a second (third, etc.) time for some other use (parallel/duplicate arrays maybe). With a lineNumber (only available in v3.5+), the possibilites increase a lot. Instead of simply re-setting the DATA pointer (like rewinding a tape), it allows for random access to DATA (almost) anywhere in the program (like a random disk file). Almost anywhere means the RESTORE statement can only set the DATA pointer to the start of a program line. Most DATA statements have multiple values, but there is no way to specify which one (it always sets the DATA pointer to the start of a line). If a lineNumber is specified, it must exist or an UNDEF'D STATEMENT ERROR is generated. The lineNumber need not have DATA statements on it; in this case, some later line in the program should have DATA statements (otherwise the next READ would generate OUT OF DATA ERROR). Example:
NEW
READY.
10 DATA SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
20 FOR I = 1 TO 7
30 READ D$(I) : NEXT : REM initialize table
40 RESTORE : REM reset data pointer
50 READ N$: PRINT N$: REM re-read first item, and print it
RUN
SUNDAY
READY.
|
That isn't a very practical example... you could just PRINT D$(1) instead of re-reading the data!
But hopefully it makes the action of RESTORE clear to you.
CHAR, CLR, DLOAD, GOTO, LOAD, LOCATE, MOVSPR, NEW, RECORD, RUN, TAB
|