1
0
mirror of https://github.com/cc65/cc65.git synced 2024-07-05 21:29:03 +00:00

added GetFile implementation

git-svn-id: svn://svn.cc65.org/cc65/trunk@2038 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
izydorst 2003-04-04 14:41:06 +00:00
parent c415dc82d9
commit 2ff9fd615b
4 changed files with 47 additions and 2 deletions

View File

@ -885,6 +885,20 @@ you can pass address of <tt/dirEntryBuf/.
Functions described here are common for SEQ and VLIR structures because arguments passed are Functions described here are common for SEQ and VLIR structures because arguments passed are
starting track and sector which may point either to start of a chain for VLIR or data for SEQ. starting track and sector which may point either to start of a chain for VLIR or data for SEQ.
<sect3>GetFile
<p>
<tt/char __fastcall__ GetFile(char flag, const char *fname, const char *loadaddr, const char *datadname, char *datafname)/
<p>
This rougine loads and runs a given file <tt/fname/. The file must be one of following types:
<tt/SYSTEM, DESK_ACC, APPLICATION, APPL_DATA, PRINTER,/ or <tt/INPUT_DEVICE/. The execution
address is taken from file header. It is zero, then file is only loaded. Only the first chain
from VLIR files is loaded. If <tt/flag/ has bit 0 set then load address is taken from <tt/loadaddr/
and not from file header. In this case <tt/APPLICATION/ files will be only loaded, not executed.
This does not apply to <tt/DESK_ACC/. If either bit 6 or 7 of <tt/flag/ are set, then 16 bytes from
<tt/datadname/ is copied to <tt/dataDiskName/ and 16 bytes from <tt/datafname/ goes to <tt/dataFileName/
in system case. If you don't use it it is safe to pass <tt/NULL/ to this function.
<sect3>ReadFile <sect3>ReadFile
<p> <p>
<tt/char ReadFile (struct tr_se *myTrSe, char *buffer, int fLength)/ <tt/char ReadFile (struct tr_se *myTrSe, char *buffer, int fLength)/

View File

@ -2,7 +2,7 @@
GEOS filesystem functions GEOS filesystem functions
ported to small C on 25.12.1999 ported to small C on 25.12.1999
by Maciej 'YTM/Alliance' Witkowiak by Maciej 'YTM/Elysium' Witkowiak
*/ */
#ifndef _GFILE_H #ifndef _GFILE_H
@ -17,6 +17,7 @@ struct filehandle *__fastcall__ GetNxtDirEntry(void);
char __fastcall__ FindFTypes(char *buffer, char ftype, char fmaxnum, const char *classtxt); char __fastcall__ FindFTypes(char *buffer, char ftype, char fmaxnum, const char *classtxt);
char __fastcall__ GetFile(char flag, const char *fname, const char *loadaddr, const char *datadname, char *datafname);
char __fastcall__ FindFile(const char *fname); char __fastcall__ FindFile(const char *fname);
char __fastcall__ ReadFile(struct tr_se *myTrSe, char *buffer, int flength); char __fastcall__ ReadFile(struct tr_se *myTrSe, char *buffer, int flength);
char __fastcall__ SaveFile(struct fileheader *myHeader); char __fastcall__ SaveFile(struct fileheader *myHeader);

View File

@ -12,7 +12,7 @@ S_OBJS = get1stdirentry.o getnxtdirentry.o\
deleterecord.o insertrecord.o appendrecord.o readrecord.o writerecord.o\ deleterecord.o insertrecord.o appendrecord.o readrecord.o writerecord.o\
updaterecordfile.o\ updaterecordfile.o\
findfile.o followchain.o getfhdrinfo.o readfile.o savefile.o freefile.o\ findfile.o followchain.o getfhdrinfo.o readfile.o savefile.o freefile.o\
deletefile.o renamefile.o findftypes.o readbyte.o deletefile.o renamefile.o findftypes.o readbyte.o getfile.o
all: $(S_OBJS) all: $(S_OBJS)

View File

@ -0,0 +1,30 @@
;
; Maciej 'YTM/Elysium' Witkowiak
;
; 4.4.2003
; char __fastcall__ GetFile(char flag, const char *fname, const char *loadaddr, const char *datadname, char *datafname);
.export _GetFile
.import popa, popax, setoserror
.include "../inc/jumptab.inc"
.include "../inc/geossym.inc"
_GetFile:
sta r3L
stx r3H
jsr popax
sta r2L
stx r2H
jsr popax
sta r7L
stx r7H
jsr popax
sta r6L
stx r6H
jsr popa
sta r0L
jsr GetFile
jmp setoserror