Path: utzoo!utgpu!attcan!uunet!mcvax!hp4nl!philmds!leo From: leo@philmds.UUCP (Leo de Wit) Newsgroups: comp.sys.atari.st Subject: Re: Fsfirst/Fsnext question Message-ID: <623@philmds.UUCP> Date: 26 Aug 88 05:17:41 GMT References: <566@laura.UUCP> Reply-To: leo@philmds.UUCP (Leo de Wit) Organization: Philips I&E DTS Eindhoven Lines: 28 In article <566@laura.UUCP> klute@trillian.UUCP (Rainer Klute) writes: |Hello ST-hackers, | |does anyone know about a 'legal' way to do something like this: | | |Routine_A: Routine_B: |========== ========== |Fsfirst (...); . |Fsnext (); . | . Fsfirst (...); | . Fsnext (); |Call_Routine_B (); . | . . | . return; |Fsnext (); Use Fsetdta(dtabuf); just before each invocation of either Fsfirst() or Fsnext(); GEMDOS uses the first 21 bytes of the DTA-buffer to keep track. There is little overhead in the use of this GEMDOS call, since it merely sets a pointer to 'dtabuf' in the basepage (you could even do it yourself 8-). Of course Routine_A and Routine_B should each use their own 'dtabuf'. Note that this 44-byte buffer must be word-aligned. I thought that the default DTA-buffer (i.e. if your program does not set it) is at basepage + 0x80 (yes, writing over your argument string 8-). Leo.