home *** CD-ROM | disk | FTP | other *** search
- /*
- cOMMODORE 64 eMULATOR V0.4 eARLE f. pHILHOWER iii
- cOPYRIGHT (c) 1993-4 (ST916W9R@DUNX1.OCS.DREXEL.EDU)
-
- tHIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
- IT UNDER THE TERMS OF THE gnu gENERAL pUBLIC lICENSE AS PUBLISHED BY
- THE fREE sOFTWARE fOUNDATION; EITHER VERSION 2 OF THE lICENSE, OR
- (AT YOUR OPTION) ANY LATER VERSION.
-
- tHIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL,
- BUT without any warranty; WITHOUT EVEN THE IMPLIED WARRANTY OF
- merchantability OR fitness for a particular purpose. sEE THE
- gnu gENERAL pUBLIC lICENSE FOR MORE DETAILS.
-
- yOU SHOULD HAVE RECEIVED A COPY OF THE gnu gENERAL pUBLIC lICENSE
- ALONG WITH THIS PROGRAM; IF NOT, WRITE TO THE fREE sOFTWARE
- fOUNDATION, iNC., 675 mASS aVE, cAMBRIDGE, ma 02139, usa.
- */
-
- #INCLUDE <aPPLEeVENTS.H>
- #INCLUDE "pROCESSOR.H"
- #INCLUDE "eRROR.H"
- #INCLUDE "rESOURCES.H"
- #INCLUDE "pREFERENCES.H"
-
- rECT DRAGrECT;
- eVENTrECORD EVENT;
- cURSOR COMMIEcURSOR, DISKcURSOR;
- INT PROGRAMmODE;
- VOID iNITIALIZE(), cLEANuPcOMMODORE();
-
- MAIN()
- {$7b}
- iNITIALIZE();
- pROCESSORlOOP();
- eVENTlOOP();
- cLEANuPcOMMODORE();
- {$7d}
-
- VOID iNITIALIZE()
- {$7b}
- INT ERR;
- dIALOGpTR DIALOG;
-
- /* dO STANDARD mACINTOSH INITIALIZATIONS */
- iNITgRAF(&QD.THEpORT);
- iNITfONTS();
- iNITwINDOWS();
- iNITmENUS();
- teiNIT();
- iNITdIALOGS(NIL);
- iNITcURSOR();
-
- /* sET UP THE MENUS, DRAG AREA */
- DRAGrECT=QD.SCREENbITS.BOUNDS;
- iNSETrECT(&DRAGrECT, 2, 2);
-
- /* dISPLAY THE SPLASH SCREEN, EVEN IF FOR JUST A SECOND... */
- DIALOG=gETnEWdIALOG(KsPLASHdIALOG, NIL, (wINDOWpTR)-1l);
- sHOWwINDOW(DIALOG);
- dRAWdIALOG(DIALOG);
-
- /* dO EMULATOR INITIALIZATIONS */
- IF (ERR=cURSORiNITIALIZE()) eXITeRROR(ERR);
- IF (ERR=mEMORYiNITIALIZE()) eXITeRROR(ERR);
- IF (ERR=mENUiNITIALIZE()) eXITeRROR(ERR);
- IF (ERR=viciNITIALIZE()) eXITeRROR(ERR);
- IF (ERR=dIRiNITIALIZE()) eXITeRROR(ERR);
- IF (ERR=aPPLEeVENTiNITIALIZE()) eXITeRROR(ERR);
- IF (ERR=iNSTRUCTIONiNITIALIZE()) eXITeRROR(ERR);
- IF (ERR=rEGISTERiNITIALIZE()) eXITeRROR(ERR);
- IF (ERR=tRAPiNITIALIZE()) eXITeRROR(ERR);
- IF (ERR=sERIALiNITIALIZE()) eXITeRROR(ERR);
- IF (ERR=pRINTERiNITIALIZE()) eXITeRROR(ERR);
- IF (ERR=fLOPPYiNITIALIZE()) eXITeRROR(ERR);
- IF (ERR=hARDiNITIALIZE()) eXITeRROR(ERR);
- IF (ERR=pREFiNITIALIZE()) eXITeRROR(ERR);
-
- /* dONE WITH SPLASH SCREEN, SO FREE ITS MEMORY */
- hIDEwINDOW(DIALOG);
- dISPOSdIALOG(DIALOG);
- {$7d}
-
- INT cURSORiNITIALIZE()
- {$7b}
- cURShANDLE CURSORhANDLE;
-
- CURSORhANDLE=gETcURSOR(KcOMMIEcURSOR);
- IF (CURSORhANDLE==NIL) RETURN KmISSINGrESOURCE;
- COMMIEcURSOR=**CURSORhANDLE;
- dISPOShANDLE((hANDLE)CURSORhANDLE);
-
- CURSORhANDLE=gETcURSOR(KdISKcURSOR);
- IF (CURSORhANDLE==NIL) RETURN KmISSINGrESOURCE;
- DISKcURSOR=**CURSORhANDLE;
- dISPOShANDLE((hANDLE)CURSORhANDLE);
-
- RETURN KnOeRROR;
- {$7d}
-
- eVENTlOOP()
- {$7b}
- INT DONE=0;
- CHAR THEcHAR;
- wINDOWpTR THEwIND;
-
- WHILE (!DONE)
- {$7b}
- wAITnEXTeVENT(EVERYeVENT, &EVENT, 60l, NIL);
- SWITCH(EVENT.WHAT)
- {$7b}
- CASE NULLeVENT:
- BREAK;
-
- CASE MOUSEdOWN:
- /* cALL OUR OWN MOUSEdOWN HANDLER */
- hANDLEmOUSEdOWN();
- BREAK;
-
- CASE AUTOkEY:
- CASE KEYdOWN:
- /* wE'RE ONLY CONCERNED WITH oPTION-x CHARACTERS */
- THEcHAR = EVENT.MESSAGE&CHARcODEmASK;
- IF (EVENT.MODIFIERS&CMDkEY) dOmENUcHOICE(mENUkEY(THEcHAR));
- BREAK;
-
- CASE UPDATEeVT:
- THEwIND=(wINDOWpTR)EVENT.MESSAGE;
- bEGINuPDATE(THEwIND);
- SWITCH (gETwrEFcON(THEwIND))
- {$7b}
- CASE KvicwINDOW:
- rEDRAWvic();
- BREAK;
- CASE KdIRwINDOW:
- rEDRAWdIR();
- BREAK;
- {$7d}
- eNDuPDATE(THEwIND);
- BREAK;
-
- CASE KhIGHlEVELeVENT :
- /* aPPLE eVENTS HAVE THEIR OWN DISPATCHER IN THE os */
- aepROCESSaPPLEeVENT(&EVENT);
- BREAK;
-
- CASE APP4eVT:
- IF (EVENT.MESSAGE&1) sETcURSOR(&(QD.ARROW));
- BREAK;
- {$7d}
- {$7d}
- {$7d}
-
- hANDLEmOUSEdOWN()
- {$7b}
- wINDOWpTR THEwIND;
- SHORT THEpART;
-
- THEpART=fINDwINDOW(EVENT.WHERE, &THEwIND);
- SWITCH(THEpART)
- {$7b}
- CASE INsYSwINDOW:
- sYSTEMcLICK(&EVENT, THEwIND);
- BREAK;
-
- CASE INdRAG:
- IF (gETwrEFcON(THEwIND)==KvicwINDOW) dRAGvicwINDOW(&EVENT);
- ELSE dRAGwINDOW(THEwIND, EVENT.WHERE, &DRAGrECT);
- BREAK;
-
- CASE INgOaWAY:
- IF (tRACKgOaWAY(THEwIND, EVENT.WHERE)) hIDEwINDOW(THEwIND);
- BREAK;
-
- CASE INmENUbAR:
- dOmENUcHOICE(mENUsELECT(EVENT.WHERE));
- BREAK;
-
- CASE INcONTENT:
- sELECTwINDOW(THEwIND);
- SWITCH (gETwrEFcON(THEwIND))
- {$7b}
- CASE KvicwINDOW:
- pROCESSORlOOP();
- BREAK;
- CASE KdIRwINDOW:
- fLOPPYcLICK(EVENT);
- BREAK;
- {$7d}
- BREAK;
- {$7d}
- {$7d}
-
- VOID cLEANuPcOMMODORE()
- {$7b}
- aTTACHfLOPPYiMAGE(NIL);
- {$7d}
-
-