@@ -58,7 +58,6 @@ struct sxWorker {
5858};
5959
6060extern void fxAbortCallback (void * info );
61- extern txPreparation * xsPreparation ();
6261
6362static void fxScreenIdle (txScreen * screen );
6463static void fxScreenInvoke (txScreen * screen , char * message , int size );
@@ -225,42 +224,11 @@ void fxScreenInvoke(txScreen* screen, char* buffer, int size)
225224
226225void fxScreenLaunch (txScreen * screen )
227226{
228- txPreparation * preparation = xsPreparation ();
229- txMachine _root ;
230- txMachine * root = & _root ;
231- if (!preparation ) {
232- return ;
233- }
234- if ((preparation -> version [0 ] != XS_MAJOR_VERSION ) || (preparation -> version [1 ] != XS_MINOR_VERSION ) || (preparation -> version [2 ] != XS_PATCH_VERSION )) {
235- //info = [NSString stringWithFormat:@"Require version %d.%d.%d", XS_MAJOR_VERSION, XS_MINOR_VERSION, XS_PATCH_VERSION];
236- return ;
237- }
238-
239- root -> preparation = preparation ;
240- if (screen -> archive )
241- root -> archive = fxMapArchive (preparation , screen -> archive , screen -> archive , 4 * 1024 , fxArchiveRead , fxArchiveWrite );
242- else
243- root -> archive = NULL ;
244- root -> keyArray = preparation -> keys ;
245- root -> keyCount = (txID )preparation -> keyCount + (txID )preparation -> creation .keyCount ;
246- root -> keyIndex = (txID )preparation -> keyCount ;
247- root -> nameModulo = preparation -> nameModulo ;
248- root -> nameTable = preparation -> names ;
249- root -> symbolModulo = preparation -> symbolModulo ;
250- root -> symbolTable = preparation -> symbols ;
251-
252- root -> stack = & preparation -> stack [0 ];
253- root -> stackBottom = & preparation -> stack [0 ];
254- root -> stackTop = & preparation -> stack [preparation -> stackCount ];
255-
256- root -> firstHeap = & preparation -> heap [0 ];
257- root -> freeHeap = & preparation -> heap [preparation -> heapCount - 1 ];
258- root -> aliasCount = (txID )preparation -> aliasCount ;
259-
260- screen -> machine = fxCloneMachine (& preparation -> creation , root , "mc" , screen );
261- if (!screen -> machine ) {
262- return ;
263- }
227+ void * preparation = xsPreparation ();
228+ void * archive = (screen -> archive ) ? fxMapArchive (preparation , screen -> archive , screen -> archive , 4 * 1024 , fxArchiveRead , fxArchiveWrite ) : NULL ;
229+ screen -> machine = fxPrepareMachine (NULL , preparation , "mc" , screen , archive );
230+ if (!screen -> machine )
231+ return ;
264232 ((txMachine * )(screen -> machine ))-> host = screen ;
265233 screen -> idle = fxScreenIdle ;
266234 screen -> invoke = fxScreenInvoke ;
0 commit comments