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 "pROCESSOR.H"
- #INCLUDE "pREFERENCES.H"
- #INCLUDE "eRROR.H"
- #INCLUDE "rESOURCES.H"
- #INCLUDE "fILEtYPES.H"
- #INCLUDE <fOLDERS.H>
-
- pREF GLOBALpREF;
- dIALOGpTR PREFdIALOG;
- fssPEC PREFsPEC;
-
- INT pREFiNITIALIZE()
- {$7b}
- SHORT VrEFnUM;
- LONG DIRid;
- SHORT FNUM;
- INT ERR;
- LONG SIZE;
-
- /* gET THE PREFERENCES DIALOG */
- PREFdIALOG=gETnEWdIALOG(KpREFdIALOG, NIL, (wINDOWpTR)-1l);
- IF (PREFdIALOG==NIL) RETURN KmISSINGrESOURCE;
-
- /* sET UP THE DEFAULT PREFERENCES */
- GLOBALpREF.BYTEaLIGN=0;
- GLOBALpREF.COLORvic=0;
- GLOBALpREF.DOUBLEsIZE=0;
- GLOBALpREF.RAMcHECK=0;
- GLOBALpREF.USEpROCESSOR=0;
-
- /* fILE SPEC FOR THE PREF FILE. oNLY NEED TO CREATE ONCE */
- fINDfOLDER(0, KpREFERENCESfOLDERtYPE, TRUE, &VrEFnUM, &DIRid);
- fsmAKEfssPEC(VrEFnUM, DIRid, "\PcOMMODORE 64 pREFS", &PREFsPEC);
-
- /* tRY TO READ IN THE PREFS FILE */
- ERR=fsPoPENdf(&PREFsPEC, FSrDpERM, &FNUM);
- IF (ERR==NOeRR)
- {$7b}
- SIZE=SIZEOF(pREF);
- fsrEAD(FNUM, &SIZE, &GLOBALpREF);
- fscLOSE(FNUM);
- {$7d}
-
- RETURN KnOeRROR;
- {$7d}
-
- VOID uPDATEpREFdIALOG(pREF PREF)
- {$7b}
- SHORT TYPE;
- rECT RECT;
- hANDLE CTL;
-
- gETdiTEM(PREFdIALOG, 1, &TYPE, &CTL, &RECT);
- sETcTLvALUE( (cONTROLhANDLE)CTL, PREF.BYTEaLIGN?1:0);
-
- gETdiTEM(PREFdIALOG, 2, &TYPE, &CTL, &RECT);
- sETcTLvALUE( (cONTROLhANDLE)CTL, PREF.COLORvic?0:1);
-
- gETdiTEM(PREFdIALOG, 3, &TYPE, &CTL, &RECT);
- sETcTLvALUE( (cONTROLhANDLE)CTL, PREF.COLORvic?1:0);
-
- gETdiTEM(PREFdIALOG, 4, &TYPE, &CTL, &RECT);
- sETcTLvALUE( (cONTROLhANDLE)CTL, PREF.DOUBLEsIZE?1:0);
-
- gETdiTEM(PREFdIALOG, 5, &TYPE, &CTL, &RECT);
- sETcTLvALUE( (cONTROLhANDLE)CTL, PREF.RAMcHECK?0:1);
-
- gETdiTEM(PREFdIALOG, 6, &TYPE, &CTL, &RECT);
- sETcTLvALUE( (cONTROLhANDLE)CTL, PREF.USEpROCESSOR==ASMpROCESSOR?1:0);
-
- gETdiTEM(PREFdIALOG, 7, &TYPE, &CTL, &RECT);
- sETcTLvALUE( (cONTROLhANDLE)CTL, PREF.USEpROCESSOR==CpROCESSOR?1:0);
-
- gETdiTEM(PREFdIALOG, 8, &TYPE, &CTL, &RECT);
- sETcTLvALUE( (cONTROLhANDLE)CTL, PREF.USEpROCESSOR==INTcpROCESSOR?1:0);
- {$7d}
-
- VOID dOpREFS()
- {$7b}
- SHORT ITEMhIT, DONE, ERR;
- pREF LOCALpREF;
- SHORT FNUM;
- LONG SIZE;
-
- /* mAKE A LOCAL COPY OF THE PREFS IN CASE THE USER "cANCELS" */
- LOCALpREF=GLOBALpREF;
-
- /* sETUP DIALOG WINDOW, BRING IT UP */
- uPDATEpREFdIALOG(LOCALpREF);
- sELECTwINDOW(PREFdIALOG);
- sHOWwINDOW(PREFdIALOG);
-
- /* dO THE DIALOG EVENT LOOP */
- DONE=0;
- WHILE (DONE==0)
- {$7b}
- mODALdIALOG(NIL, &ITEMhIT);
- SWITCH (ITEMhIT)
- {$7b}
- CASE 1:/* bYTE-ALIGN WINDOW */
- LOCALpREF.BYTEaLIGN=LOCALpREF.BYTEaLIGN?0:1;
- uPDATEpREFdIALOG(LOCALpREF);
- BREAK;
- CASE 2:/* bLACK-AND-WHITE vic */
- LOCALpREF.COLORvic=0;
- uPDATEpREFdIALOG(LOCALpREF);
- BREAK;
- CASE 3:/* cOLOR vic */
- LOCALpREF.COLORvic=1;
- uPDATEpREFdIALOG(LOCALpREF);
- BREAK;
- CASE 4:/* dOUBLE SIZE */
- LOCALpREF.DOUBLEsIZE=LOCALpREF.DOUBLEsIZE?0:1;
- uPDATEpREFdIALOG(LOCALpREF);
- BREAK;
- CASE 5:/* rAM TEST SKIP */
- LOCALpREF.RAMcHECK=LOCALpREF.RAMcHECK?0:1;
- uPDATEpREFdIALOG(LOCALpREF);
- BREAK;
- CASE 6:/* 68k PROCESSOR */
- LOCALpREF.USEpROCESSOR=ASMpROCESSOR;
- uPDATEpREFdIALOG(LOCALpREF);
- BREAK;
- CASE 7:/* c PROCESSOR */
- LOCALpREF.USEpROCESSOR=CpROCESSOR;
- uPDATEpREFdIALOG(LOCALpREF);
- BREAK;
- CASE 8:/* iNTEGRATED c PROCESSOR */
- LOCALpREF.USEpROCESSOR=INTcpROCESSOR;
- uPDATEpREFdIALOG(LOCALpREF);
- BREAK;
- CASE 9:/* oKAY */
- /* dELETE THE OLD FILE AND MAKE A NEW ONE */
- fsPdELETE(&PREFsPEC);
- fsPcREATE(&PREFsPEC, (ostYPE)appltype, (ostYPE)prefftype, 0);
-
- /* aTTEMPT TO WRITE THE FILE */
- ERR=fsPoPENdf(&PREFsPEC, FSrDwRpERM, &FNUM);
- IF (ERR==NOeRR)
- {$7b}
- SIZE=SIZEOF(pREF);
- fswRITE(FNUM, &SIZE, &LOCALpREF);
- fscLOSE(FNUM);
- {$7d}
-
- /* sET UP THE GLOBAL PREFS */
- GLOBALpREF=LOCALpREF;
- DONE=1;
- sHOWvicwINDOW();
- BREAK;
-
- CASE 10:/* cANCEL */
- /* eXIT WITHOUT COPYING OVER TO GLOBAL */
- DONE=1;
- BREAK;
- {$7d}
- {$7d};
-
- /* dROP THE WINDOW */
- hIDEwINDOW(PREFdIALOG);
- {$7d}
-