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 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 |