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:

  1. Copy the program file (as a text file, delimited only by the program chevrons «») to the SD card,
  2. 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),
  3. Determine the characters (or bytes) to read: SDFILESIZE
  4. SWAP
  5. SDREADTEXT
  6. STR→
  7. #xh SDCLOSE, where #xh is the file handle from step 2.

To load program files into a text editor from the 50g:

  1. Put program on stack as string (→STR),
  2. Open an empty text file on the SD card for writing: “newfile” SDOPENWR, a file handle is returned to the stack,
  3. SDWRITETEXT
  4. #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 1) (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

1)
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.