home *** CD-ROM | disk | FTP | other *** search
/ Team Palmtops 7 / Palmtops_numero07.iso / Epoc / Palmtime / files / FrotzCE2_src.ZIP / FrotzCE / ZThread.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1997-09-10  |  1.8 KB  |  92 lines

  1. #include "stdafx.h"
  2. #include "FrotzCE.h"
  3. #include "FrotzCEDoc.h"
  4. #include "ZThread.h"
  5.  
  6. extern "C"
  7. {
  8.     #include "Frotz\Frotz.h"
  9.  
  10.     // Z machine values
  11.     extern int locked;
  12.     extern int z_finished;
  13.  
  14.     // Default file names
  15.     extern char script_name[];
  16.     extern char command_name[];
  17.     extern char save_name[];
  18.     extern char auxilary_name[];
  19. }
  20.  
  21. UINT ZMachineThreadFunction( LPVOID pParam )
  22. {
  23.     // Flag that Z machine is running
  24.     FROTZCEAPP->m_bZmachineRunning = TRUE;
  25.  
  26.     // Initialise Frotz globals
  27.     FrotzGlobalInit();
  28.  
  29.     // Set name of story file
  30.     story_name = FROTZCEAPP->m_achStoryFile;
  31.  
  32.     // Create temp file name and make sure it's got a '.'
  33.     char *temp_name = new char[strlen( story_name )+2];
  34.     strcpy( temp_name, story_name );
  35.     if (strchr( temp_name, '.' ) == NULL)
  36.         strcat( temp_name, "." );
  37.     else *(strchr( temp_name, '.' ) + 1) = '\0';
  38.  
  39.     // Set up default file names
  40.     strcpy( script_name, temp_name );
  41.     strcat( script_name, "scr");
  42.     strcpy (command_name, temp_name );
  43.     strcat( command_name, "rec");
  44.     strcpy (save_name, temp_name );
  45.     strcat( save_name, "sav");
  46.     strcpy (auxilary_name, temp_name );
  47.     strcat( auxilary_name, "aux");
  48.     
  49.     // Free temp file name
  50.     delete [] temp_name;
  51.  
  52.     // Initialise Z machine values
  53.     locked = 0;
  54.     z_finished = 0;
  55.  
  56.     // Initialise Z machine
  57.     init_memory ();
  58.  
  59.     // Initialise screen
  60.     os_init_screen ();
  61.  
  62.     // Initialised OK?
  63.     if (FROTZCEAPP->m_bInitialised)
  64.     {
  65.         // Initialise Z machine
  66.         init_undo ();
  67.         z_restart ();
  68.  
  69.         // Z machine main loop
  70.         interpret ();
  71.  
  72.         // Reset memory
  73.         reset_memory ();
  74.  
  75.         // Wait for user
  76.         os_more_prompt();
  77.     }
  78.     else
  79.     {
  80.         // Reset memory
  81.         reset_memory ();
  82.     }
  83.  
  84.     // Flag that Z machine is no longer running
  85.     FROTZCEAPP->m_bZmachineRunning = FALSE;
  86.  
  87.     // Reset display
  88.     os_reset_screen ();
  89.  
  90.     return 0;
  91. }
  92.