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
1.3.3