| TIP: Click on subject to list as thread! | ANSI |
| echo: | |
|---|---|
| to: | |
| from: | |
| date: | |
| subject: | Re: Porting DirMenu to PET: need help! |
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 | FidoUsenet Gateway (3:770/3)SEEN-BY: 57/0 116/102 130/512 153/250 317/2 3 393/68 633/267 280 640/384 SEEN-BY: 712/620 848 770/0 1 3 100 340 772/0 1 210 500 @PATH: 770/3 1 712/848 633/267 |
|
| SOURCE: echomail via fidonet.ozzmosis.com | |
Email questions or comments to sysop@ipingthereforeiam.com
All parts of this website painstakingly hand-crafted in the U.S.A.!
IPTIA BBS/MUD/Terminal/Game Server List, © 2025 IPTIA Consulting™.