home *** CD-ROM | disk | FTP | other *** search
/ CBM Funet Archive / cbm-funet-archive-2003.iso / cbm / crossplatform / emulators / MacOS / mac64-04.hqx / MAC64-04.SEA / C64 / SOURCE / Preferences.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-05-06  |  4.6 KB  |  181 lines  |  [TEXT/KAHL]

  1. /*
  2.     cOMMODORE 64 eMULATOR V0.4      eARLE f. pHILHOWER iii
  3.     cOPYRIGHT (c) 1993-4            (ST916W9R@DUNX1.OCS.DREXEL.EDU)
  4.  
  5.     tHIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
  6.     IT UNDER THE TERMS OF THE gnu gENERAL pUBLIC lICENSE AS PUBLISHED BY
  7.     THE fREE sOFTWARE fOUNDATION; EITHER VERSION 2 OF THE lICENSE, OR
  8.     (AT YOUR OPTION) ANY LATER VERSION.
  9.  
  10.     tHIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL,
  11.     BUT without any warranty; WITHOUT EVEN THE IMPLIED WARRANTY OF
  12.     merchantability OR fitness for a particular purpose.  sEE THE
  13.     gnu gENERAL pUBLIC lICENSE FOR MORE DETAILS.
  14.  
  15.     yOU SHOULD HAVE RECEIVED A COPY OF THE gnu gENERAL pUBLIC lICENSE
  16.     ALONG WITH THIS PROGRAM; IF NOT, WRITE TO THE fREE sOFTWARE
  17.     fOUNDATION, iNC., 675 mASS aVE, cAMBRIDGE, ma 02139, usa.
  18. */
  19.  
  20. #INCLUDE "pROCESSOR.H"
  21. #INCLUDE "pREFERENCES.H"
  22. #INCLUDE "eRROR.H"
  23. #INCLUDE "rESOURCES.H"
  24. #INCLUDE "fILEtYPES.H"
  25. #INCLUDE <fOLDERS.H>
  26.  
  27. pREF GLOBALpREF;
  28. dIALOGpTR PREFdIALOG;
  29. fssPEC PREFsPEC;
  30.  
  31. INT pREFiNITIALIZE()
  32. {$7b}
  33. SHORT VrEFnUM;
  34. LONG DIRid;
  35. SHORT FNUM;
  36. INT ERR;
  37. LONG SIZE;
  38.  
  39. /* gET THE PREFERENCES DIALOG */
  40. PREFdIALOG=gETnEWdIALOG(KpREFdIALOG, NIL, (wINDOWpTR)-1l);
  41. IF (PREFdIALOG==NIL) RETURN KmISSINGrESOURCE;
  42.  
  43. /* sET UP THE DEFAULT PREFERENCES */
  44. GLOBALpREF.BYTEaLIGN=0;
  45. GLOBALpREF.COLORvic=0;
  46. GLOBALpREF.DOUBLEsIZE=0;
  47. GLOBALpREF.RAMcHECK=0;
  48. GLOBALpREF.USEpROCESSOR=0;
  49.  
  50. /* fILE SPEC FOR THE PREF FILE.  oNLY NEED TO CREATE ONCE */
  51. fINDfOLDER(0, KpREFERENCESfOLDERtYPE, TRUE, &VrEFnUM, &DIRid);
  52. fsmAKEfssPEC(VrEFnUM, DIRid, "\PcOMMODORE 64 pREFS", &PREFsPEC);
  53.  
  54. /* tRY TO READ IN THE PREFS FILE */
  55. ERR=fsPoPENdf(&PREFsPEC, FSrDpERM, &FNUM);
  56. IF (ERR==NOeRR)
  57. {$7b}
  58. SIZE=SIZEOF(pREF);
  59. fsrEAD(FNUM, &SIZE, &GLOBALpREF);
  60. fscLOSE(FNUM);
  61. {$7d}
  62.  
  63. RETURN KnOeRROR;
  64. {$7d}
  65.  
  66. VOID uPDATEpREFdIALOG(pREF PREF)
  67. {$7b}
  68. SHORT TYPE;
  69. rECT RECT;
  70. hANDLE CTL;
  71.  
  72. gETdiTEM(PREFdIALOG, 1, &TYPE, &CTL, &RECT);
  73. sETcTLvALUE( (cONTROLhANDLE)CTL, PREF.BYTEaLIGN?1:0);
  74.  
  75. gETdiTEM(PREFdIALOG, 2, &TYPE, &CTL, &RECT);
  76. sETcTLvALUE( (cONTROLhANDLE)CTL, PREF.COLORvic?0:1);
  77.  
  78. gETdiTEM(PREFdIALOG, 3, &TYPE, &CTL, &RECT);
  79. sETcTLvALUE( (cONTROLhANDLE)CTL, PREF.COLORvic?1:0);
  80.  
  81. gETdiTEM(PREFdIALOG, 4, &TYPE, &CTL, &RECT);
  82. sETcTLvALUE( (cONTROLhANDLE)CTL, PREF.DOUBLEsIZE?1:0);
  83.  
  84. gETdiTEM(PREFdIALOG, 5, &TYPE, &CTL, &RECT);
  85. sETcTLvALUE( (cONTROLhANDLE)CTL, PREF.RAMcHECK?0:1);
  86.  
  87. gETdiTEM(PREFdIALOG, 6, &TYPE, &CTL, &RECT);
  88. sETcTLvALUE( (cONTROLhANDLE)CTL, PREF.USEpROCESSOR==ASMpROCESSOR?1:0);
  89.  
  90. gETdiTEM(PREFdIALOG, 7, &TYPE, &CTL, &RECT);
  91. sETcTLvALUE( (cONTROLhANDLE)CTL, PREF.USEpROCESSOR==CpROCESSOR?1:0);
  92.  
  93. gETdiTEM(PREFdIALOG, 8, &TYPE, &CTL, &RECT);
  94. sETcTLvALUE( (cONTROLhANDLE)CTL, PREF.USEpROCESSOR==INTcpROCESSOR?1:0);
  95. {$7d}
  96.  
  97. VOID dOpREFS()
  98. {$7b}
  99. SHORT ITEMhIT, DONE, ERR;
  100. pREF LOCALpREF;
  101. SHORT FNUM;
  102. LONG SIZE;
  103.  
  104. /* mAKE A LOCAL COPY OF THE PREFS IN CASE THE USER "cANCELS" */
  105. LOCALpREF=GLOBALpREF;
  106.  
  107. /* sETUP DIALOG WINDOW, BRING IT UP */
  108. uPDATEpREFdIALOG(LOCALpREF);
  109. sELECTwINDOW(PREFdIALOG);
  110. sHOWwINDOW(PREFdIALOG);
  111.  
  112. /* dO THE DIALOG EVENT LOOP */
  113. DONE=0;
  114. WHILE (DONE==0)
  115. {$7b}
  116. mODALdIALOG(NIL, &ITEMhIT);
  117. SWITCH (ITEMhIT)
  118. {$7b}
  119. CASE 1:/* bYTE-ALIGN WINDOW */
  120. LOCALpREF.BYTEaLIGN=LOCALpREF.BYTEaLIGN?0:1;
  121. uPDATEpREFdIALOG(LOCALpREF);
  122. BREAK;
  123. CASE 2:/* bLACK-AND-WHITE vic */
  124. LOCALpREF.COLORvic=0;
  125. uPDATEpREFdIALOG(LOCALpREF);
  126. BREAK;
  127. CASE 3:/* cOLOR vic */
  128. LOCALpREF.COLORvic=1;
  129. uPDATEpREFdIALOG(LOCALpREF);
  130. BREAK;
  131. CASE 4:/* dOUBLE SIZE */
  132. LOCALpREF.DOUBLEsIZE=LOCALpREF.DOUBLEsIZE?0:1;
  133. uPDATEpREFdIALOG(LOCALpREF);
  134. BREAK;
  135. CASE 5:/* rAM TEST SKIP */
  136. LOCALpREF.RAMcHECK=LOCALpREF.RAMcHECK?0:1;
  137. uPDATEpREFdIALOG(LOCALpREF);
  138. BREAK;
  139. CASE 6:/* 68k PROCESSOR */
  140. LOCALpREF.USEpROCESSOR=ASMpROCESSOR;
  141. uPDATEpREFdIALOG(LOCALpREF);
  142. BREAK;
  143. CASE 7:/* c PROCESSOR */
  144. LOCALpREF.USEpROCESSOR=CpROCESSOR;
  145. uPDATEpREFdIALOG(LOCALpREF);
  146. BREAK;
  147. CASE 8:/* iNTEGRATED c PROCESSOR */
  148. LOCALpREF.USEpROCESSOR=INTcpROCESSOR;
  149. uPDATEpREFdIALOG(LOCALpREF);
  150. BREAK;
  151. CASE 9:/* oKAY */
  152. /* dELETE THE OLD FILE AND MAKE A NEW ONE */
  153. fsPdELETE(&PREFsPEC);
  154. fsPcREATE(&PREFsPEC, (ostYPE)appltype, (ostYPE)prefftype, 0);
  155.  
  156. /* aTTEMPT TO WRITE THE FILE */
  157. ERR=fsPoPENdf(&PREFsPEC, FSrDwRpERM, &FNUM);
  158. IF (ERR==NOeRR)
  159. {$7b}
  160. SIZE=SIZEOF(pREF);
  161. fswRITE(FNUM, &SIZE, &LOCALpREF);
  162. fscLOSE(FNUM);
  163. {$7d}
  164.  
  165. /* sET UP THE GLOBAL PREFS */
  166. GLOBALpREF=LOCALpREF;
  167. DONE=1;
  168. sHOWvicwINDOW();
  169. BREAK;
  170.  
  171. CASE 10:/* cANCEL */
  172. /* eXIT WITHOUT COPYING OVER TO GLOBAL */
  173. DONE=1;
  174. BREAK;
  175. {$7d}
  176. {$7d};
  177.  
  178. /* dROP THE WINDOW */
  179. hIDEwINDOW(PREFdIALOG);
  180. {$7d}
  181.