| Home CBM ASCII-X BASIC Disk Commands Enter RUN mode Program Format Secret Variables Variable Format Expressions Keywords (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 num Pudef Quit Rclr Rdot Read Record Rem Rename Renumber Restore 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 Syntax Tokens C128 D64plus Disk Escape Codes Hardware PCxface PETSCII Pet2asc Futurama IBM PC-AT Contact Games Glossary Hall of fame Hall of shame Miscellaneous Privacy policy Programming Twisty puzzles |
RESTORE [ lineNumber ] ...
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:
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.
© H2Obsession, 2014 |