Main Page | Class Hierarchy | Compound List | File List | Compound Members | File Members | Related Pages

main_epoc32.i

Go to the documentation of this file.
00001 /*
00002  *  main_epoc32.i - Main program, EPOC32 specific stuff
00003  *
00004  *  Frodo (C) 1994-1997 Christian Bauer
00005  *
00006  *  -> ported to Epoc32 by Alfred E. Heggestad & Jal Panvel (c) 1999-2000
00007  */
00008 
00009 #include <math.h>
00010 
00011 #define BOOL bool
00012 
00013 //char Frodo::prefs_path[256]; //AEH 991130
00014 
00015 /*
00016  *  Constructor: Initialize member variables
00017  */
00018 
00019 Frodo::Frodo(CE32FrodoDocument* aDocPtr)
00020 : CIdle(EPriority)
00021 , iDocPtr(aDocPtr)
00022 {
00023         __CHECK_NULL(aDocPtr);
00024 
00025         TheC64 = NULL;
00026 
00027         CTOR(Frodo);
00028 }
00029 
00030 
00031 Frodo::~Frodo()
00032 {
00033         delete TheC64;
00034         DTOR(Frodo);
00035 }
00036 
00037 
00038 /*
00039  *  Process command line arguments
00040  */
00041 
00042 void Frodo::ArgvReceived(int /*argc*/, char** /*argv*/)
00043 {
00044 }
00045 
00046 
00047 /*
00048  *  Arguments processed, run emulation
00049  */
00050 
00051 int Frodo::ReadyToRun(void)
00052         {
00053 
00054         // Create and start C64
00055         TheC64 = new C64(this);
00056         if (load_rom_files())
00057                 {
00058                 TheC64->Run();
00059                 return 1;
00060                 }
00061         else
00062                 return 0;       // Error!
00063 
00064         }
00065 
00066 
00067 TInt RunThreadFunc(TAny* aFrodo)
00068 //
00069 // Run the C64::thread_func
00070 //
00071 {
00072         Frodo* frodo = (Frodo*)aFrodo;
00073         C64* c64=frodo->TheC64;
00074         if(c64->have_a_break || c64->iIsAudioPending)
00075                 {
00076                 return EFalse; // Inactivate active object
00077                 }
00078         else
00079                 {
00080                 c64->thread_func();
00081                 return ETrue;
00082                 }
00083 }
00084 
00085 
00086 void Frodo::StartC64()
00087 //
00088 // Start the C64 emulator
00089 //
00090 {
00091         if(IsActive())
00092                 return;
00093         TCallBack callback(RunThreadFunc,this);
00094         Start(callback);
00095 }
00096 
00097 
00098 Frodo* Frodo::NewL(CE32FrodoDocument* aDocPtr)
00099 //
00100 // Frodo Factory
00101 //
00102 {
00103         Frodo* frodo = new(ELeave) Frodo(aDocPtr);
00104         if(frodo->ReadyToRun())
00105                 {
00106                 CActiveScheduler::Add(frodo);
00107                 return frodo;
00108                 }
00109         else
00110                 {
00111                 delete frodo;
00112                 return NULL;
00113                 }
00114 
00115 }
00116 
00117 // EOF - main_epoc32.i

Generated on Tue Feb 8 04:07:58 2005 for E32frodo by doxygen 1.3.3