Subj : Re: Porting DirMenu to PET: need help! To : Harry Potter From : Tilmann Hentze Date : Mon Feb 12 2018 02:29:34 Harry Potter 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 #include #include 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) .