83Plus:Software:usb8x/Asm Interface/MSD/msdDetect
From WikiTI
Synopsis
Name: msdDetect
Minimum usb8x version: 0.12
Detects and loads 83P/8XP levels from specified directory based on detection string. This is the mass storage version of ionDetect.
Inputs
- HL is starting cluster of directory to search (obtained with [[../FAT_getStartingCluster|FAT_getStartingCluster]])
- BC is entry number of level (pass -1 on first call to this entry point)
- DE points to zero-terminated detection string
Outputs
- Level/variable data is loaded into temporary RAM
- BC is entry number of this variable (to be passed in subsequent calls to this function)
- HL points to variable data (just beyond detection string)
- C set if problems
- A contains error code
| 0 | No more 83P/8XP files in specified directory |
| 1 | Not enough free memory to load level (for found level; subsequent calls may succeed) |
Destroys
- AF, BC, DE, HL, IX
Notes
This is the mass storage version of ionDetect. It works exactly the same in that it loads the current level to (tempMem) if possible.
Pass -1 in BC on first call to this entry point, and then its BC output on future calls. When the carry flag is set and A = 0, you have gone through all the variables in that directory.
Example code to search for first BYTES level in the "\FILES\" subdirectory:
ld hl,sDir
rst 20h
ld hl,OP1
U_CALL FAT_getStartingCluster ;get starting cluster of this directory
push hl
ld hl,sDetectString
rst 20h
pop hl
ld bc,-1
ld de,OP1
U_CALL msdDetect
ret c ;no variables found
;HL now points to level data
...
sDir:
DB "\FILES",0
sDetectString:
DB "BY1JW",0 ;detection string for BYTES levels
Strings are copied to RAM first so they can be seen from usb8x.
See Also
- [[../MSD_Initialize|MSD_Initialize]] - Initialize mass storage driver