]> git.sur5r.net Git - cc65/commitdiff
added GetFile implementation
authorizydorst <izydorst@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Fri, 4 Apr 2003 14:41:06 +0000 (14:41 +0000)
committerizydorst <izydorst@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Fri, 4 Apr 2003 14:41:06 +0000 (14:41 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@2038 b7a2c559-68d2-44c3-8de9-860c34a00d81

doc/geos.sgml
include/geos/gfile.h
libsrc/geos/file/Makefile
libsrc/geos/file/getfile.s [new file with mode: 0644]

index 53b6a2ecc69165714e8577cce792e1a9004ba32d..57966eb7cb0218a891536a9d0d96c27f0e86c744 100644 (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
 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
 <p>
 <tt/char ReadFile (struct tr_se *myTrSe, char *buffer, int fLength)/
index f099cc7ad560dbfda11f4ff15d3fd1e03134da83..34ef6869ad97cc84a6b2bf1bd9801b76ef24f845 100644 (file)
@@ -2,7 +2,7 @@
   GEOS filesystem functions
 
   ported to small C on 25.12.1999
-  by Maciej 'YTM/Alliance' Witkowiak
+  by Maciej 'YTM/Elysium' Witkowiak
 */
 
 #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__ GetFile(char flag, const char *fname, const char *loadaddr, const char *datadname, char *datafname);
 char __fastcall__ FindFile(const char *fname);
 char __fastcall__ ReadFile(struct tr_se *myTrSe, char *buffer, int flength);
 char __fastcall__ SaveFile(struct fileheader *myHeader);
index 5b8638feeaa239037758cf88667243bb5f82ab7a..020c18aa7a7b6e9441ee032f63b944dea1d8c05d 100644 (file)
@@ -12,7 +12,7 @@ S_OBJS        = get1stdirentry.o getnxtdirentry.o\
          deleterecord.o insertrecord.o appendrecord.o readrecord.o writerecord.o\
          updaterecordfile.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)
 
diff --git a/libsrc/geos/file/getfile.s b/libsrc/geos/file/getfile.s
new file mode 100644 (file)
index 0000000..b245493
--- /dev/null
@@ -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