Added test/fileread.c02 for VIC-20 and C64

This commit is contained in:
Curtis F Kaylor 2019-03-29 19:09:04 -04:00
parent 0e149b7798
commit 33a19c7a87
5 changed files with 121 additions and 6 deletions

View File

@ -5,7 +5,7 @@ IF EXIST %1.c02 GOTO COMPILE
:COMPILE
ECHO Compiling File %1.c02 for Commodore 64
..\c02.exe -h c64 -s c64 %1 >%1.dbg
..\c02.exe -h c64 -s c64 -s cbm %1 >%1.dbg
IF %ERRORLEVEL% NEQ 0 GOTO EOF
ECHO Assembling File %1.asm
C:\Programs\dasm %1.asm -f1 -o%1.prg -l%1.lst -s%1.sym

109
test/fileread.c02 Normal file
View File

@ -0,0 +1,109 @@
/*********************************
* FILES - File Module Test/Demo *
* currently coded for CBM 8-bit *
*********************************/
//Specify System Header using -H option
#include <screen.h02>
#include <stddef.h02>
#include <stdlib.h02>
#include <stdio.h02>
#include <stdiox.h02>
#include <string.h02>
#include <fileio.h02>
const char binfil = "BNRYFILE.TXT";
const char txtfil = "TEXTFILE.TXT";
const char blkfil = "BLCKFILE.TXT";
const char device = #DRIVE2;
char bfp; //Binary File Pointer
char tfp; //Text File Pointer
char kfp; //Block File Pointer
char err; //Error Code
char ch; //Character Read from File
char i; //Loop Index Variable
char n; //Number of Characters Read
char s[128]; //String Read from File
char r[255]; //Array Buffer for Read
char aa,xx,yy; //Function Arguments
main:
clrscr();
bfp = opnfil(device, &binfil);
tfp = opnfil(device, &txtfil);
kfp = opnfil(device, &blkfil);
if (bfp) rdbinf();
if (tfp) rdtxtf();
if (kfp) rdblkf();
clsfil(bfp);
clsfil(tfp);
clsfil(kfp);
goto exit;
void opnfil(aa,yy,xx) {
puts("OPENING "); putln(*,yy,xx);
printf(aa, " ON DEVICE %d%n");
aa, yy = fopen(aa, yy, xx);
if (aa) printf(aa, "OPENED ON CHANNEL %d%n");
else printf(yy, "ERROR %d OPENING FILE%n");
newlin();
return aa;
}
void clsfil(aa) {
printf(aa, "CLOSING CHANNEL %d%n");
fclose(aa);
}
void rdbinf() {
printf(bfp, "%n<READING CHANNEL %d>%n");
while(!feof(bfp)) {
ch, err = fgetc(bfp);
if (err) break;
puthex(ch); putspc();
}
newlin();
if (err) printf(err,"<ERROR %d READING FILE>%n");
else putln("<END OF FILE>");
newlin();
}
void rdtxtf() {
printf(tfp, "<READING CHANNEL %d>%n");
while(!feof(tfp)) {
n, err = fgets(tfp, &s);
if (err) break;
printf(n,"%l %s%n");
}
if (err) printf(err,"<ERROR %d READING FILE>%n");
else putln("<END OF FILE>");
newlin();
}
void rdblkf() {
printf(kfp, "<READING CHANNEL %d>%n");
while(!feof(kfp)) {
setdst(&r);
n, err = fread(kfp, 16);
if (err) break;
printf(n,"%l ");
for (i=0; i<n; i++) putc(r[i]);
newlin();
}
if (err) printf(err,"<ERROR %d READING FILE>%n");
else putln("<END OF FILE>");
newlin();
}
/* Print File System Info */
void prtfsi() {
printf(fslfno, ".LFN=%d, "); printf(fsdvno, "DEV=%d, "); printf(fssadr, "SA=%d%n");
setdst(*,fsfnhi,fsfnlo); printf(".NAME='%s'%n.ADR=$%w, ");
printf(fsfnln,"LEN=%d%n");
prtopf();
}
/* Print Number of Open Files */
void prtopf() {
printf(fsnofl,".OPEN FILES: %d%n");
}

View File

@ -5,7 +5,7 @@ IF EXIST %1.c02 GOTO COMPILE
:COMPILE
ECHO Compiling File %1.c02 for VIC 20 +8k
..\c02.exe -h vic8k -s vic %1 >%1.dbg
..\c02.exe -h vic8k -s vic -s cbm %1 >%1.dbg
IF %ERRORLEVEL% NEQ 0 GOTO EOF
ECHO Assembling File %1.asm
C:\Programs\dasm %1.asm -f1 -o%1.prg -l%1.lst -s%1.sym
@ -13,6 +13,6 @@ C:\Programs\dasm %1.asm -f1 -o%1.prg -l%1.lst -s%1.sym
IF %ERRORLEVEL% NEQ 0 GOTO EOF
ECHO Starting Emulator
@start C:\Programs\WinVICE\xvic.exe -config xvic.ini %1.prg
@start C:\Programs\WinVICE\xvic.exe -config xvic.ini -1 testtape.t64 -10 geosdisk.d64 %1.prg
:EOF

View File

@ -1,4 +1,6 @@
[C64]
InitialDefaultDir="C:\Users\Curtis\Dropbox\projects\C02\test"
InitialTapeDir="C:\Users\Curtis\Dropbox\projects\C02\test"
Window0Xpos=572
Window0Ypos=19
Window0Width=735
@ -13,9 +15,10 @@ VICIIFilter=0
SidEngine=1
SidModel=1
IECDevice8=1
AutostartBasicLoad=1
AutostartRunWithColon=1
AutostartWarp=0
FileSystemDevice9=1
IECDevice9=1
FSDevice9Dir="C:\Users\Curtis\Dropbox\projects\C02\test"
DriveTrueEmulation=0
ETHERNETCARTBase=56832
Acia1Base=56832

View File

@ -1,4 +1,6 @@
[VIC20]
InitialDefaultDir="C:\Users\Curtis\Dropbox\projects\C02\test"
InitialTapeDir="C:\Users\Curtis\Dropbox\projects\C02\test"
Window0Xpos=523
Window0Ypos=58
Window0Width=618
@ -16,8 +18,9 @@ VICFilter=0
SidEngine=1
SidModel=0
JoyDevice1=1
FileSystemDevice9=1
FSDevice9Dir="C:\Users\Curtis\Dropbox\projects\C02\test"
DriveTrueEmulation=0
ETHERNET_DISABLED=1
ETHERNETCARTBase=38912
Acia1Base=38912