=====SD card operations===== ---- Over 30 commands dedicated to working with secure digital (SD) offline storage are available. Both SD and SDHC cards are supported. The SD card can have up to 4 partitions, denoted C:, E:, F:, G: on a PC; and '':3:'', '':4:'', '':5:'', and '':6:'' on the 50g. Paths and filenames (case-sensitive) are specified in the following ways on the 50g (for the first partition, '':3:''): As a string (including the partition number): ''":3:Path/to/Filename"'' As a string (default partition): ''"Path/to/Filename"'' As a list: ''{'Path' 'to' 'Filename'}'' ---- ====Storing/Recalling objects==== ''SDSTO'', store an object ''SDRCL'', recall an object So, for example, to store 42.5 to the file 'Spnum' in the directory Test (assuming it was already created), ''42.5'' ''"Test/Spnum"'' ''SDSTO'' and to recall this same file contents to the stack, ''"Test/Spnum"'' ''SDRCL'' (Note that the forward slash symbol, /, has the shortcut **AL-RS-DIV** or **AL-RS-Z**). Alternatively, if a sub directory is already set (see Directory operations below using ''SDCHDIR''), then the above example of storing 42.5 to the file Spnum can be done like this: ''42.5 'Spnum' SDSTO'' (and similarly for ''SDRCL''). Note that single quotes or double quotes may be used, the latter giving more flexibility to filenames than the former which would just be a variable name. To specify a partition (the first one, or current partition, is used by default), preface the object name with the partition number, e.g., ''":4:Test/Spnum"''. ===Handling of RPL code=== The commands ''SDSTO'' and ''SDRCL'' can be used to store program files on the SD card. However, as SDSTO uses a binary encoding scheme, the program file cannot be easily read on a PC using a standard text editor (although if loading into the emulator on a PC, ''SDRCL'' should work fine). To load program files onto the 50g from a text file (created on a PC, for example), the following procedure is recommended: - Copy the program file (as a text file, delimited only by the program chevrons «») to the SD card, - With the SD card back in the 50g, open the file: ''"filename" SDOPENRD'', returned to the stack is the file handle (#xh), ''EN'' (to duplicate the file handle), - Determine the characters (or bytes) to read: ''SDFILESIZE'' - ''SWAP'' - ''SDREADTEXT'' - ''STR→'' - ''#xh SDCLOSE'', where #xh is the file handle from step 2. To load program files into a text editor from the 50g: - Put program on stack as string (''→STR''), - Open an empty text file on the SD card for writing: ''"newfile" SDOPENWR'', a file handle is returned to the stack, - ''SDWRITETEXT'' - ''#xh SDCLOSE'', where #xh is the file handle from step 2. ---- ====Directory operations==== ^ Command ^ Purpose ^ Example ^ | ''SDCRDIR'' | Create a new directory | ''"Newdir1" SDCRDIR'' | | ''SDCHDIR'' | Change to directory | ''"Newdir1" SDCHDIR'' | | ''SDPATH'' | Current directory path | ''SDPATH'' | | ''SDUPDIR'' | Back up one directory level | ''SDUPDIR'' | | ''SDPGDIR'' | Delete a directory (must be empty) | ''"Newdir1" SDPGDIR'' | | ''SDSETPART'' | Set the active partition (0-3) | ''3 SDSETPART'' | ---- ====File operations==== ^ Command ^ Purpose ^ Example ^ | ''SDSTO'' | Store an object to a file | ''42.5 'Spnum' SDSTO'' | | ''SDRCL'' | Recall an object (file) | '''Spnum' SDRCL'' | | ''SDPURGE'' | Delete a file | '''Spnum' SDPURGE'' | | ''SDCOPY'' | Copy a file | ''"Test/sourcefile" "Test/destfile" SDCOPY'' | | ''SDMOVE'' | Move a file | ''"Test/sourcefile" "Test/destfile" SDMOVE'' | | ''SDOPENRD'' | Open a file for read | ''"Test/file" SDOPENRD'', returns file handle (#xh) | | ''SDOPENWR'' | Open a file for write (create new file if it doesn't exist) | ''"Test/file" SDOPENWR'', returns file handle (#xh) | | ''SDOPENMOD'' | Open a file for byte modification | | | ''SDOPENAPP'' | Open a file for append | | | ''SDFILESIZE'' | Return file size in bytes (given file handle) | ''#xh SDFILESIZE'' | | ''SDCLOSE'' | Close an open file (given file handle) | ''#xh SDCLOSE'' | | ''SDREADTEXT'' | Read characters (nchars) from a file (given file handle) | ''nchars #xh SDREADTEXT'' | | ''SDWRITETEXT'' | Write string to a file (given file handle) | ''"string" #xh SDWRITETEXT'' | | ''SDREADLINE'' | Read a line of text (including newline) from file | ''#xh SDREADLINE'' | | ''SDSEEKSTA'' | Move pointer in file (measured relative to file start) | ''offset #xh SDSEEKSTA'' | | ''SDSEEKEND'' | Move pointer in file (measured relative to file end) | ''offset #xh SDSEEKEND'' | | ''SDSEEKCUR'' | Move pointer in file (measured relative to current position) | ''offset #xh SDSEEKCUR'' | | ''SDTELL'' | Return pointer position in file (relative to file start) | ''#xh SDTELL'' | | ''SDEOF'' | Returns true (1) if last operation hit end of file | ''#xh SDEOF'' | ---- ====Maintenance and status==== ^ Command ^ Purpose ^ Example ^ | ''SDFREE'' | Report free space on SD card (in bytes) | ''SDFREE'' | | ''SDRESET'' | Mount card (safe to remove) | ''SDRESET'' | | ''SDOPENDIR'' | Open a directory for gathering file or sub directory information | ''"Test" SDOPENDIR'' | | ''SDNEXTFILE'' | Display file statistics in directory ((Returns 5 objects to stack: filename, underscore string, size (bytes), last modification date (DD.MMYYYY), last modification time (HH.MMSS); set 6 digits to display.)) (file handle from ''SDOPENDIR'') | ''#xh SDNEXTFILE'' | | ''SDNEXTDIR'' | Display sub directory statistics within current directory | ''#xh SDNEXTDIR'' | | ''SDNEXTENTRY'' | Step through every entry in the current directory (files or directories) | ''#xh SDNEXTENTRY'' | ----