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 / AppleEvents.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-05-07  |  6.5 KB  |  265 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 <aPPLEeVENTS.H>
  21. #INCLUDE "pROCESSOR.H"
  22. #INCLUDE "eRROR.H"
  23. #INCLUDE "fILEtYPES.H"
  24.  
  25.  
  26. INT aPPLEeVENTiNITIALIZE(VOID);
  27.  
  28. oseRR dOquit(VOID), dOoapp(VOID);
  29. oseRR dOodoc(CONST aPPLEeVENT *THEae,CONST aPPLEeVENT *THErP);
  30. oseRR dOpdoc(CONST aPPLEeVENT *THEae,CONST aPPLEeVENT *THErP);
  31.  
  32. EXTERN VOID cLEANuPcOMMODORE(VOID);
  33.  
  34. VOID oPENfssPEC(fssPEC *SPEC);
  35. VOID pRINTfssPEC(fssPEC *SPEC);
  36. VOID aTTACHfLOPPYiMAGE(fssPEC *SPEC);
  37. VOID lOADramfs(fssPEC *SPEC);
  38. VOID lOADtAPEfs(fssPEC *SPEC);
  39.  
  40. #IFNDEF __mwerks__
  41. PASCAL oseRR aehANDLEquit(CONST aPPLEeVENT *THEae,CONST aPPLEeVENT *THErP, LONG rc);
  42. PASCAL oseRR aehANDLEoapp(CONST aPPLEeVENT *THEae,CONST aPPLEeVENT *THErP, LONG rc);
  43. PASCAL oseRR aehANDLEodoc(CONST aPPLEeVENT *THEae,CONST aPPLEeVENT *THErP, LONG rc);
  44. PASCAL oseRR aehANDLEpdoc(CONST aPPLEeVENT *THEae,CONST aPPLEeVENT *THErP, LONG rc);
  45. #ELSE
  46. STATIC aeeVENThANDLERupp MYquitaehANDLER = null;
  47. STATIC aeeVENThANDLERupp MYoappaehANDLER = null;
  48. STATIC aeeVENThANDLERupp MYodocaehANDLER = null;
  49. STATIC aeeVENThANDLERupp MYpdocaehANDLER = null;
  50.  
  51. PASCAL oseRR aehANDLEquit(CONST aPPLEeVENT *THEae,CONST aeeVENThANDLERupp *THErP, LONG rc);
  52. PASCAL oseRR aehANDLEoapp(CONST aPPLEeVENT *THEae,CONST aeeVENThANDLERupp *THErP, LONG rc);
  53. PASCAL oseRR aehANDLEodoc(CONST aPPLEeVENT *THEae,CONST aeeVENThANDLERupp *THErP, LONG rc);
  54. PASCAL oseRR aehANDLEpdoc(CONST aPPLEeVENT *THEae,CONST aeeVENThANDLERupp *THErP, LONG rc);
  55. #ENDIF
  56.  
  57.  
  58.  
  59. STATIC dESCtYPE MISSEDtYPEcODE;
  60. STATIC LONG MISSEDaCTUALsIZE;
  61. #DEFINE iNSTALLfINDER(Z,Y) aeiNSTALLeVENThANDLER(KcOREeVENTcLASS, Z, Y, 0, FALSE)
  62. #DEFINE mISSEDpARAMS(Z) \
  63. (aesIZEoFaTTRIBUTE(Z, KEYmISSEDkEYWORDaTTR, \
  64. &MISSEDtYPEcODE, &MISSEDaCTUALsIZE) != ERRaedESCnOTfOUND)
  65.  
  66.  
  67. oseRR dOquit(VOID)
  68. {$7b}
  69. cLEANuPcOMMODORE();
  70. eXITtOsHELL();
  71. {$7d}
  72.  
  73. PASCAL oseRR aehANDLEquit(THEaPPLEeVENT, THErEPLY, THErEFcON)
  74. CONST aPPLEeVENT *THEaPPLEeVENT, *THErEPLY;
  75. LONG THErEFcON;
  76. {$7b}
  77. oseRR ERR=NOeRR;
  78.  
  79. ERR = dOquit();
  80. IF (mISSEDpARAMS(THEaPPLEeVENT) && ERR==NOeRR) ERR = ERRaepARAMmISSED;
  81. /* tHERE SHOULD BE no PARAMETERS SENT TO US..IF THERE ARE, SOMEONE'S
  82. GOT A real PROBLEM! (NOT US, THOUGH!) */
  83.  
  84. RETURN(ERR);
  85. {$7d}
  86.  
  87. oseRR dOoapp()
  88. {$7b}
  89. RETURN NOeRR;
  90. {$7d}
  91.  
  92. PASCAL oseRR aehANDLEoapp(THEaPPLEeVENT, THErEPLY, THErEFcON)
  93. CONST aPPLEeVENT *THEaPPLEeVENT, *THErEPLY;
  94. LONG THErEFcON;
  95. {$7b}
  96. oseRR ERR=NOeRR;
  97.  
  98. ERR = dOoapp();
  99. IF (mISSEDpARAMS(THEaPPLEeVENT) && ERR==NOeRR) ERR = ERRaepARAMmISSED;
  100.  
  101. RETURN(ERR);
  102. {$7d}
  103.  
  104. VOID oPENfssPEC(fssPEC *SPEC)
  105. {$7b}
  106. fiNFO FiNFO;
  107.  
  108. fsPgETfiNFO(SPEC, &FiNFO);
  109. SWITCH(FiNFO.FDtYPE)
  110. {$7b}
  111. CASE diskftype:
  112. aTTACHfLOPPYiMAGE(SPEC);
  113. BREAK;
  114. CASE ramftype:
  115. lOADramfs(SPEC);
  116. BREAK;
  117. CASE printerftype:
  118. BREAK;
  119. CASE tapeftype:
  120. lOADtAPEfs(SPEC);
  121. BREAK;
  122. {$7d}
  123. {$7d}
  124.  
  125.  
  126. VOID pRINTfssPEC(fssPEC *SPEC)
  127. {$7b}
  128. fiNFO FiNFO;
  129.  
  130. fsPgETfiNFO(SPEC, &FiNFO);
  131. SWITCH(FiNFO.FDtYPE)
  132. {$7b}
  133. CASE diskftype:
  134. BREAK;
  135. CASE ramftype:
  136. BREAK;
  137. CASE printerftype:
  138. BREAK;
  139. CASE tapeftype:
  140. BREAK;
  141. {$7d}
  142. {$7d}
  143.  
  144. oseRR dOodoc(THEaPPLEeVENT, THErEPLY)
  145. CONST aPPLEeVENT *THEaPPLEeVENT, *THErEPLY;
  146. {$7b}
  147. oseRR ERR;
  148. fssPEC MYfss;
  149. aedESClIST *DOClIST;
  150. LONG ITEMS;
  151. LONG INDEX;
  152. aekEYWORD KEYWD;
  153. dESCtYPE TYPEcODE;
  154. sIZE ACTUALsIZE;
  155.  
  156. ERR = aegETpARAMdESC(THEaPPLEeVENT, KEYdIRECToBJECT, TYPEaelIST, DOClIST);
  157. IF (ERR!=NOeRR) RETURN (ERR);
  158.  
  159. ERR = aecOUNTiTEMS(DOClIST, &ITEMS);
  160. IF (ERR!=NOeRR) RETURN (ERR);
  161.  
  162. FOR (INDEX=1; INDEX<=ITEMS; INDEX++)
  163. {$7b}
  164. ERR = aegETnTHpTR(DOClIST, INDEX, TYPEfss, &KEYWD, &TYPEcODE,(pTR)&MYfss,
  165. SIZEOF(MYfss), &ACTUALsIZE );
  166. IF (ERR!=NOeRR)
  167. {$7b}
  168. aedISPOSEdESC(DOClIST);
  169. RETURN (ERR);
  170. {$7d}
  171. oPENfssPEC(&MYfss);
  172. {$7d}
  173.  
  174. ERR = aedISPOSEdESC(DOClIST);
  175. RETURN(ERR);
  176. {$7d}
  177.  
  178.  
  179.  
  180. PASCAL oseRR aehANDLEodoc(THEaPPLEeVENT, THErEPLY, THErEFcON)
  181. CONST aPPLEeVENT *THEaPPLEeVENT, *THErEPLY;
  182. LONG THErEFcON;
  183. {$7b}
  184. oseRR ERR=NOeRR;
  185.  
  186. ERR = dOodoc(THEaPPLEeVENT, THErEPLY);
  187. IF (mISSEDpARAMS(THEaPPLEeVENT) && ERR==NOeRR) ERR = ERRaepARAMmISSED;
  188.  
  189. RETURN(ERR);
  190. {$7d}
  191.  
  192.  
  193. oseRR dOpdoc(THEaPPLEeVENT, THErEPLY)
  194. CONST aPPLEeVENT *THEaPPLEeVENT, *THErEPLY;
  195. {$7b}
  196. oseRR ERR;
  197. fssPEC MYfss;
  198. aedESClIST *DOClIST;
  199. LONG ITEMS;
  200. LONG INDEX;
  201. aekEYWORD KEYWD;
  202. dESCtYPE TYPEcODE;
  203. sIZE ACTUALsIZE;
  204.  
  205. ERR = aegETpARAMdESC(THEaPPLEeVENT, KEYdIRECToBJECT, TYPEaelIST, DOClIST);
  206. IF (ERR!=NOeRR) RETURN (ERR);
  207.  
  208. ERR = aecOUNTiTEMS(DOClIST, &ITEMS);
  209. IF (ERR!=NOeRR) RETURN (ERR);
  210.  
  211. FOR (INDEX=1; INDEX<=ITEMS; INDEX++)
  212. {$7b}
  213. ERR = aegETnTHpTR(DOClIST, INDEX, TYPEfss, &KEYWD, &TYPEcODE, (pTR)&MYfss,
  214. SIZEOF(MYfss), &ACTUALsIZE );
  215. IF (ERR!=NOeRR)
  216. {$7b}
  217. aedISPOSEdESC(DOClIST);
  218. RETURN (ERR);
  219. {$7d}
  220. pRINTfssPEC(&MYfss);
  221. {$7d}
  222.  
  223. ERR = aedISPOSEdESC(DOClIST);
  224. RETURN(ERR);
  225. {$7d}
  226.  
  227.  
  228.  
  229. PASCAL oseRR aehANDLEpdoc(THEaPPLEeVENT, THErEPLY, THErEFcON)
  230. CONST aPPLEeVENT *THEaPPLEeVENT, *THErEPLY;
  231. LONG THErEFcON;
  232. {$7b}
  233. oseRR ERR=NOeRR;
  234.  
  235. ERR = dOpdoc(THEaPPLEeVENT, THErEPLY);
  236. IF (mISSEDpARAMS(THEaPPLEeVENT) && ERR==NOeRR) ERR = ERRaepARAMmISSED;
  237.  
  238. RETURN(ERR);
  239. {$7d}
  240.  
  241.  
  242.  
  243. INT aPPLEeVENTiNITIALIZE(VOID)
  244. {$7b}
  245. #IFNDEF __mwerks__
  246. IF (iNSTALLfINDER(KaeqUITaPPLICATION, aehANDLEquit)) RETURN KaPPLEeVENTeRROR;
  247. IF (iNSTALLfINDER(KaeoPENaPPLICATION, aehANDLEoapp)) RETURN KaPPLEeVENTeRROR;
  248. IF (iNSTALLfINDER(KaeoPENdOCUMENTS, aehANDLEodoc)) RETURN KaPPLEeVENTeRROR;
  249. IF (iNSTALLfINDER(KaepRINTdOCUMENTS, aehANDLEpdoc)) RETURN KaPPLEeVENTeRROR;
  250. #ELSE
  251.     MYquitaehANDLER = nEWaeeVENThANDLERpROC(aehANDLEquit);
  252.     MYoappaehANDLER = nEWaeeVENThANDLERpROC(aehANDLEoapp);
  253.     MYodocaehANDLER = nEWaeeVENThANDLERpROC(aehANDLEodoc);
  254.     MYpdocaehANDLER = nEWaeeVENThANDLERpROC(aehANDLEpdoc);
  255.  
  256. IF (iNSTALLfINDER(KaeqUITaPPLICATION, MYquitaehANDLER)) RETURN KaPPLEeVENTeRROR;
  257. IF (iNSTALLfINDER(KaeoPENaPPLICATION, MYoappaehANDLER)) RETURN KaPPLEeVENTeRROR;
  258. IF (iNSTALLfINDER(KaeoPENdOCUMENTS, MYodocaehANDLER)) RETURN KaPPLEeVENTeRROR;
  259. IF (iNSTALLfINDER(KaepRINTdOCUMENTS, MYpdocaehANDLER)) RETURN KaPPLEeVENTeRROR;
  260. #ENDIF
  261.  
  262. RETURN KnOeRROR;
  263. {$7d}
  264.  
  265.