Harry Potter <
rose.joseph12@yahoo.com> schrieb:
having a problem: when I try to read the directory,
I get a ?Syntax Error.
It means KERNAL OPEN failed, because the file number is zero
according to "Compute's Programming The PET/CBM".
I don't know what's causing this, but the following code seems to
cause the problem (I'm using cc65):
----------------------------
__asm__ (
//Set LFNs.
"\tlda\t#1\n"
"\tldx\t#8\n"
"\tldy\t#0\n"
"\tsty\t_c\n"
"\tsty\t_e\n"
"\tjsr\t$FFBA\n"
This calls the SCRATCH routine in BASIC 4.
//Set name ("$", as above in dire).
"\tldx\t#<_dire\n"
"\tldy\t#>_dire\n"
"\tjsr\t$FFBD\n"
This reads the disk device status.
//Open directory.
"\tjsr\t$FFC0\n"
);
----------------------------
Can you help me out?
Use cc65's cbm_opendir and cbm_readdir declared in cbm.h
e.g:
#include <cbm.h>
#include <pet.h>
#include <stdio.h>
int main(int argc, unsigned char **argv)
{
struct cbm_dirent dire;
unsigned char result = 0;
unsigned char lfn = 1;
unsigned char device = 8;
unsigned char dirname[17] = "$";
result = cbm_opendir(lfn, device, dirname);
if (result)
{
printf("error: %hhd\n", result);
return result;
}
while (result == 0)
{
result = cbm_readdir(lfn, &dire);
switch (result)
{
case 0:
printf("%3hd %-16s %#hhx %#hhx\n",
dire.size,
dire.name,
dire.type,
dire.access
);
break;
case 2:
printf("%3hd blocks free.\n", dire.size);
break;
default:
break;
}
}
cbm_closedir(lfn);
return 0;
}
--- SoupGate-Win32 v1.05
* Origin: Agency HUB, Dunedin - New Zealand | Fido<>Usenet Gateway (3:770/3)