summaryrefslogtreecommitdiffstats
path: root/Mac/Demo
diff options
context:
space:
mode:
authorJack Jansen <jack.jansen@cwi.nl>1997-01-15 16:53:37 (GMT)
committerJack Jansen <jack.jansen@cwi.nl>1997-01-15 16:53:37 (GMT)
commit6ad8d13fe2a9c023969d184554aeb1e557115f57 (patch)
tree1b170bf9c7d6d79df4abc4749429f0e460108d87 /Mac/Demo
parent52ac0372492200e326677c95ffc2fe35358c0dd2 (diff)
downloadcpython-6ad8d13fe2a9c023969d184554aeb1e557115f57.zip
cpython-6ad8d13fe2a9c023969d184554aeb1e557115f57.tar.gz
cpython-6ad8d13fe2a9c023969d184554aeb1e557115f57.tar.bz2
"ported" Guido's embedding demo to the mac, and wrote some minimal
notes on embedding on the mac.
Diffstat (limited to 'Mac/Demo')
-rw-r--r--Mac/Demo/building.html2
-rw-r--r--Mac/Demo/embed.html36
-rw-r--r--Mac/Demo/embed/demo.c62
-rw-r--r--Mac/Demo/embed/embeddemo.mu.hqx174
-rw-r--r--Mac/Demo/index.html5
5 files changed, 278 insertions, 1 deletions
diff --git a/Mac/Demo/building.html b/Mac/Demo/building.html
index 0afb35b..83e88e4 100644
--- a/Mac/Demo/building.html
+++ b/Mac/Demo/building.html
@@ -482,6 +482,6 @@ be able to obtain resources from the library file lateron. Plugins can do the sa
use the standard <code>__initialize</code> entry point.
-<UL>
+</UL>
</BODY>
</HTML>
diff --git a/Mac/Demo/embed.html b/Mac/Demo/embed.html
new file mode 100644
index 0000000..934619b
--- /dev/null
+++ b/Mac/Demo/embed.html
@@ -0,0 +1,36 @@
+<HTML>
+<HEAD>
+<TITLE>Embedding Python on the Mac</TITLE>
+</HEAD>
+<BODY>
+<H1>Embedding Python on the Mac</H1>
+<HR>
+
+Embedding Python on the mac is pretty similar to embedding it on other
+platforms, but a few points need mentioning:
+
+<UL>
+<LI> You call <CODE>PyMac_Initialize()</CODE> in stead of
+<CODE>Py_Initialize()</CODE>. The prototype is in <CODE>macglue.h</CODE>.
+This call initializes the toolbox, GUSI (if needed), sets up the correct
+resource files and calls Py_Initialize.
+
+<LI> You have to be consequent in your use of GUSI. If the library uses
+it so should your program and vice versa.
+
+<LI> The console-behaviour (close-on-exit, etc) is controlled by Python,
+but you are of course free to change that after calling PyMac_Initialize().
+</UL>
+
+The Python environment is started with a dummy argc and argv, and initial
+startup options are obtained through the usual means, except that the
+user pression the option-key will not result in an interactive dialog.
+You can, however, set startup options on your program in the same way as you
+do for applets, by dragging your application to <code>EditPythonPrefs</code>. <p>
+
+The most logical way to embed Python is to link it against the shared library
+<code>PythonCorePPC</code> or <code>PythonCoreCFM68K</code>. An example project
+and source can be found in the <a href="embed">embed</a> folder.
+
+</BODY>
+</HTML>
diff --git a/Mac/Demo/embed/demo.c b/Mac/Demo/embed/demo.c
new file mode 100644
index 0000000..a23c249
--- /dev/null
+++ b/Mac/Demo/embed/demo.c
@@ -0,0 +1,62 @@
+/* Example of embedding Python in another program */
+
+#include "Python.h"
+#ifdef macintosh
+#include "macglue.h"
+#include <SIOUX.h>
+#endif /* macintosh */
+
+static char *argv0;
+
+main(argc, argv)
+ int argc;
+ char **argv;
+{
+#ifdef macintosh
+ /* So the user can set argc/argv to something interesting */
+ argc = ccommand(&argv);
+#endif
+ /* Save a copy of argv0 */
+ argv0 = argv[0];
+
+ /* Initialize the Python interpreter. Required. */
+#ifdef macintosh
+ PyMac_Initialize();
+#else
+ Py_Initialize();
+#endif
+
+ /* Define sys.argv. It is up to the application if you
+ want this; you can also let it undefined (since the Python
+ code is generally not a main program it has no business
+ touching sys.argv...) */
+ PySys_SetArgv(argc, argv);
+
+ /* Do some application specific code */
+ printf("Hello, brave new world\n\n");
+
+ /* Execute some Python statements (in module __main__) */
+ PyRun_SimpleString("import sys\n");
+ PyRun_SimpleString("print sys.builtin_module_names\n");
+ PyRun_SimpleString("print sys.argv\n");
+
+ /* Note that you can call any public function of the Python
+ interpreter here, e.g. call_object(). */
+
+ /* Some more application specific code */
+ printf("\nGoodbye, cruel world\n");
+#ifdef macintosh
+ printf("Type return or so-\n");
+ getchar();
+#endif
+ /* Exit, cleaning up the interpreter */
+ Py_Exit(0);
+ /*NOTREACHED*/
+}
+
+/* This function is called by the interpreter to get its own name */
+char *
+getprogramname()
+{
+ return argv0;
+}
diff --git a/Mac/Demo/embed/embeddemo.mu.hqx b/Mac/Demo/embed/embeddemo.mu.hqx
new file mode 100644
index 0000000..b0de893
--- /dev/null
+++ b/Mac/Demo/embed/embeddemo.mu.hqx
@@ -0,0 +1,174 @@
+(This file must be converted with BinHex 4.0)
+
+:$'9YBQ9NC'9YEbjYG3"069"53eG*43#3""&i!!!Th4EVBfp[E!!!!!%!!!!F!!!
+4$!!!%5J!!!"3!!!!"!!!!'J!!J!`!!)!(!4YB@PZ!$Nl!!(("!#3"MK!!*!&j1c
+S!*!0!J!`!!)!+!PXD@*bBA*TCA-`b!#3"L!&!!)!N!F$!*!,!J!!!!)!+!PbCA0
+[GA*MCA-`b!#3"L!&!!-!N!F%!*!3@$`!N!`(4'9cDh4[F!$9k6!!N!B$N!!!eHd
+J!,ii)!#q08J!!#R`!0ARB!#3%GATF!#3"J0J!0AY)&"jG'K[ELecD'&bC3$9jf!
+!!`!!!X!!!`)S!!!!23!"!*!)!J%!N!3'C'9YEbjM!*!L!`#3"c#Y(r*!!!%!2+`
+KJ-!!!3!jV#'!`!!"!!UY2klb!!%!1UdImN!!!3!eV4rb3!!"!$'X)B$!!!%!0+`
+KJ-!!!3!lV#'!`!!"!$+Y8ec!!!%!-kfce6X!!3!fV')D3!!"!$HX)B$!!!%!2ke
+Nl!B!!3!iV#'!`!!"!#@Y2kqp!!%!"kdrV[3!!3!,V6qZp!!"!!QY2kld!!%!2U`
+KJ-!!!3![VP4CiJ!"!$fXBKT!!!%!#+j4hkB!!3!QUX`2e`!"!#fZQQef!!%!%+k
+DEAB!!3!&VTTYGJ!"!#bZQQef!!%!*kkDEAB!!3!GVTTYGJ!"!"qZQQeh!!%!&+j
+(9P%!!3!'V[`2'3!"!"kZQQeh!!%!%kkDEAF!!3!FVTTYG`!"!#ZZQQeh!!%!%Dk
+DEAF!!3!UVTTYG`!"!"LZQQeh!!%!%UkDEAF!!3!ZV`+pq`!"!"QZQQeh!!%!'Uk
+DEAF!!3!NVTTYG`!"!"ZZQQei!!%!)kkDEAJ!!3!-VTTYH!!"!!fZQQei!!%!$Uk
+DEAJ!!3!2VTTYH!!"!#+ZQQei!!%!"+ec-KN!!3!SVTTYH!!"!"@ZQQei!!%!)Dk
+5J[m!!3!@VTTYH3!"!#QZQQej!!%!)+kDEAN!!3!AVTTYH3!"!%B!5!2R!!%!!J#
+3#!)"!*!%$N&`F&*eER4TE@8Z6'PL!*!D!J#3"dB!5!2R!!%!!J#3#!)"!*!%$9"
+jG'K[EN0[FQ938%-!N"X"!*!,!3!$!*!%$9"jG'K[EN0[FQ938%-!N"+[!VFB!B"
+cD'aLV`+h'!!#3!8!N!313A"`8R9ZG'PYC5j-D@)!N"'Z8fTb!B"08%a'VP0UFJ!
+$!!)!N!3'C'9YEbjM!*!CV`,&!`'!9%9B9+m#a3-!"!!&!*!%#&"jG'K[ELjS!*!
+AVA-b'3'!9%9B9+ec-KN!"3!&!*!%$'&XE'pLDQ9MG(-ZD!#3%kkDEAB"J&4&@&5
+ZQQef!!B!"!#3"!KMEfjQD@FZD!#3&klm$aN"J&4&@&5Zr!mC!!G!"!#3"!GcG'4
+TEbjS!*!BV6qZp!#!9%9B9+drV[3!#%!%!*!%"hPfB@ac,QJ!N"LZ8GqQ!)"849K
+8VP(ITJ!*3!3!N!3)Fh4bD@jR,QJ!N"HY2kld!)"849K8V6qZp!!+3!3!N!3(CA*
+bEQmZD!#3'+drV[)!J&4&@&5Y2klb!!Y!"!#3"!KcG'4XD@)ZD!#3&kdrV[3!J&4
+&@&5Y2kld!!`!"3#3"!PYHA"bEh4[,QJ!N"DZQQei!B"849K8VTTYH!!0!!8!N!3
+)Ef*UC@0d,QJ!N"HZQQei!B"849K8VTTYH!!1!!8!N!3*Ef*UD@e`E#jS!*!@VTT
+YH!'!9%9B9+kDEAJ!$`!&!*!%#A"jC'9LG@FZD!#3&UkDEAJ"J&4&@&5ZQQei!"!
+!"3#3"!jKBf0PFh0[BQTPBh3ZD!#3%DkDEAB"J&4&@&5ZQQef!"%!"3#3"!YTER4
+[BQTPBh3ZD!#3&+kDEAF"J&4&@&5ZQQeh!")!"3#3"!aXEfjREf*UC@0d,QJ!N"1
+ZQQeh!B"849K8VTTYG`!6!!8!N!30CQa[BA4[BQTPBh3ZD!#3%UkDEAF"J&4&@&5
+ZQQeh!"3!"3#3"!pMEfe`E'9iEf*UC@0d,QJ!N"#Z4eC4!B"849K8VNG@83!9!!8
+!N!30FQ&ZCf9[BQTPBh3ZD!#3%UkDEAJ"J&4&@&5ZQQei!"B!"3#3"!jcG(*TEQG
+[BQTPBh3ZD!#3%DkDEAN"J&4&@&5ZQQej!"F!"3#3"!edGA"XC@pLDQ9MG#jS!*!
+5VTTYH3'!9%9B9+kDEAN!'!!&!*!%$'aTFh4[BQTPBh3ZD!#3%kkDEAF"J&4&@&5
+ZQQeh!"N!"3#3"!pYBA"`D@jREf*UC@0d,QJ!N"#ZQQeh!B"849K8VTTYG`!D!!8
+!N!31E@9dD'pNEf*UC@0d,QJ!N"'ZQQeh!B"849K8VTTYG`!E!!8!N!31E@pNG@a
+PEf*UC@0d,QJ!N"'ZQQei!B"849K8VTTYH!!F!!8!N!3-CR9ZBfpLDQ9MG#jS!*!
+6VTTYG`'!9%9B9+kDEAF!(3!&!*!%$@0XBA0cEf*UC@0d,QJ!N"+ZQQef!B"849K
+8VTTYGJ!H!!8!N!3-CQPXC@pLDQ9MG#jS!*!6VTTYG`'!9%9B9+kDEAF!(`!&!*!
+%#@0[BQTPBh3ZD!#3&UkDEAF"J&4&@&5ZQQeh!#!!"3#3"!YdFQ&MC@*KBfXZD!#
+3&+kDEAN"J&4&@&5ZQQej!#%!"3#3"!ecE'PMC@pLDQ9MG#jS!*!5VT+#r`'!9%9
+B9+k5J[m!)J!&!*!%#R"jCA*bEh*c,QJ!N"@ZQQei!B"849K8VTTYH!!M!!8!N!3
++EAPYB@aXEf-ZD!#3&DkDEAJ"J&4&@&5ZQQei!#3!"3#3"!aYEf4cGA"`Eh*d,QJ
+!N"1ZQQeh!B"849K8VTTYG`!P3!3!N!3)Fh4NBA*R,QJ!N"HY2kqp!)"849K8V6q
+[[3!Q3!3!N!3*Ah0dC'&bCbjS!*!@UX`2e`#!9%9B9+V-$pF!*`!&!*!%"f0PGQ&
+X,QJ!N"LZQQef!B"849K8VTTYGJ!S!!8!N!3,F(PdD'pZFR9Z,QJ!N"5ZQQei!B"
+849K8VTTYH!!T!!8!N!3,FhPcE@pNG@aP,QJ!N"5ZQQej!B"849K8VTTYH3!U!!8
+!N!3,D@jdFQ0SC@0V,QJ!N"5ZQQeh!B"849K8VTTYG`!V!!8!N!3)D@e`Eh*d,QJ
+!N"HZQQeh!B"849K8VTTYG`!X!!8!N!30BQadD@jYEf4eE'8ZD!#3%UkDEAB"J&4
+&@&5ZQQef!#d!"3#3"!TKBR0dFQ&MG#jS!*!9VTTYGJ'!9%9B9+kDEAB!,J!%!*!
+%#@eKBfGXG@8ZD!#3&Um#[IX"J&4&@&5[!Vhl!#p!"!#3"!G8HA"PFbjS!*!BVP4
+CiJ#!9%9B9+j8@H)!-%!%!*!%%d0[EQ4TG'P[EQ&X6@&MFQpc,QJ!N!bY(r*!!)"
+849K8V4rb3!!a3!3!N!3(4QPXCA-ZD!#3'+`KJ-!!J&4&@&5X)B$!!$*!"!#3"!Y
+0DAKPC%e[C'8ZD!#3&+e6A-!!J&4&@&5Y8ec!!$0!"!#3"!P28e9dD@ac,QJ!N"D
+YXp8l!)"849K8VE291`!d3!3!N!3)6@9YEh*j,QJ!N"HX)B$!!)"849K8V#'!`!!
+e3!3!N!3)4ACPER4c,QJ!N"HY(r*!!)"849K8V4rb3!!f3!3!N!3,8A9TBfYNFQ&
+h,QJ!N"5XBKT!!)"849K8V')D3!!h3!3!N!328A9TBfYNFQ&h9'9iG#jS!*!3V#'
+!`!#!9%9B9+`KJ-!!1%!%!*!%$P0dB@jNBA*N4QPXC5jS!*!4V#'!`!#!9%9B9+`
+KJ-!!18!%!*!%#84TB@a[Ch-ZD!#3&U`KJ-!!J&4&@&5X)B$!!$T!"!#3"!K&FR*
+[FR-ZD!#3&kdImN!!J&4&@&5Y(r*!!$Y!"!#3"!G0C@jeFbjS!*!BV#'!`!#!9%9
+B9+`KJ-!!2%!%!*!%#N0[ER4bEfac,QJ!N"@X)B$!!)"849K8V#'!`!!p3!3!N!3
+*9fPZC'phFbjS!*!@V')D3!#!9%9B9+aL'N!!2N!%!*!%#P4PH(4&C'Pd,QJ!N"@
+X)B$!!)"849K8V#'!`!!r3!3!N!3(8dP299JZD!#3'+eNl!B!J&4&@&5YC1`'!*!
+'!4`!!!!#8&0PCrrr!*!*(!!!!3"38f9R!!%!!!%!hN!!!!%H!!!#`&"-Fh3!N!3
+"!0f!!!!$hJ!!$8T34Qac!*!%jS!!!!%!!!!R+`!!*LX!!!+b!!+P8(P$E'&cFep
+*Fe0eBQ0XBA0c!!188(P$E'&cFem-C@eLC@4NC@e[,QeeC3)!!!"069"53eG*43#
+3#%e08&*$9dP&!*!BVXCMAJ!!%AJ!!#RG!*!L4@F!!%9U!!3!!!!r!!!!F!!!!#!
+!!!M5I!J#TVqKrr53!!%!#*3Krl"mI4YiI*iMH(r!"h9!JJ!-1'!!Rd+!!!JiB+L
+IIm6cH%J!!!&J!!!!I(mEH(qMkhKra20i5!!!!3!!!!)!"J!!!!S!"!#3#c!!"J%
+!rrm!N!Mrr`'3"3#3""i"!3#3#*QC!!!rrcrr2rm"!*!%5J!"!!N'6@pZB@0[!*!
+F"!!S!!S"`J+!!#J!#J(#!S!!N"!"!*!%!J#3"43!!3"B!9`"(3*j!*!%5K-!!*R
+d!!!!'J!$!!#CQ3#3"(rr!*!%Irm!N!4rr`#3"!JS!!3!!!!%!!3"#!!"!6TEV`$
+2i13!$UmdBA0V)!!!!"`!N!QSBUB!U'18!+KMV!#3"DLVc!#3"DLVc!!3Bh!!N#M
+-N!J!cpM3!-rBB0f3#(rrIrm!cpL%!*!%3*8aQ!!!"B3!!+%LrJ)!N!I2f0!!!cN
+b!*!6!3#SBf)!U'0#!+LIb!!!@km!cq$N!!!!!f&cDb!!!!!F!*!*U'+Q!+KMP!#
+SBk`!N!@SUm`!U9DS!+N5F%e33d-"#!!"'$U3"'*eD@aN,QeKBh"`BbjcD'&bC@3
+k!*!%U'+Q!+KMP!#SBk`!N!@SUm`!N!@SUm`!%'0`!*!Sc*!)!-rBd!$2f'$GN!K
+rrhrr!-rBK!#3"%#9-CJ!!!@%!!#K)[i#!*!(cpM3!!-j-J#3%`%!U'0L!+KM3J#
+SRmJ!!&Z[!-rJj!!!!!0KFfXJ!!!!(!#3#DKLTJ#SBj3!U'1X!*!&U+[-!+P@U!#
+T%R"08%0$!3!!!3Xk1MT*EQ0XG@4P1J!"!*!(%I33!!!!`!#3"!'L%N!!'`km!"4
+kX!'L%h`"SK*3!"8Qa!!A'T`!N!3"SK0@!*!)!D)6$!'L%R!"4-#i!"1R+!!!!!N
+"SK+!!"(d%!!6!QJ!mJ&I!D)5S!!2K,!!%mb!!!!!"3'L%U!!%I33!D)5U!'L%``
+"SK,3hC!%!"1M5!'L%k`"SK,3!"(d%!!6T83!!+G'rJ)!!!!4p""X%!'LD2rh3!'
+L%`$-N!3")JIS!*!&S'cJ!!!!$!%L"pJ"2TN)!6kC0!%qYe!!!"h!!*!%!D)6B!!
+9*X3!%pqB!!!"!!%!!!%-1T!%5@jME(9NC6S"!*!(%I33!!!!`!#3"!'L%N!!'`k
+m!"4kX!'L%h`"SK*3!"8Qa!!A'T`!N!3"SK0@!*!)!D)6$!'L%R!"4-#i!"1R+!!
+!!!N"SK+!!"(d%!!6!QJ!mJ&I!D)5S!!2K,!!%mb!!!!!"3'L%U!!%I33!D)5U!'
+L%``"SK,3hC!%!"1M5!'L%k`"SK,3!"(d%!!6T83!!+G'rJ)!!!!4p""X%!'LD2r
+h3!'L%`$-N!3")JIS!*!&S'cJ!!!!$!%L"pJ"2TN)!6kC0!%qYe!!!"h!!*!%!D)
+6B!!9*X3!%pqB!!!"!!%!!!)A1MSkDQ&MDcT$9dG98dNkD@jME(9NC6S!!!$!!*!
+%!D)53!!E$V`!&(U`!D)6I!'L%P!!&5E%!"FDR!#3"!'L%eB!N!J"SK--!D)5F!%
+rDhJ!%kFS!!!!#3'L%S!!%I33!"-#D!$b!9m"SK+J!!q%X!!6c)!!!!!&!D)5S!!
+4p"!"SK+S!D)6$!'L%Y$GN!3!%k0)!D)6V!'L%Y!!%I33!"1P4!!!TdEq!J!!!"(
+d%'`3!D*SrrG!!D)6!-b3"!%L"qJ!N!@JE1!!!!!-!6k@K!%qPU3"2TMi!6kh8!!
+!(F!!N!3"SK0J!"8Qa!!6hjJ!!!%!!3!!!K-k1MTUB@0V1N0A4e9656T-D@)k!"(
+d%!!!!-!!N!3"SK*!!"X1[!!8HV!"SK0m!D)58!!9*X3!&aUF!*!%!D)69J#3#!'
+L%``"SK*`!6pVH!!6TbJ!!!!*!D)5J!!4p"!!%`*S!2)"A`'L%U!!$i5`!"2-J!!
+!!!8"SK+J!"(d%!'L%UJ"SK--!D)5d0f3"!!6SdJ"SK1X!D)5d!!4p"!!%k9%!!#
+R4[i#!!!!%I33E"!"SQMrpd!"SK-!c*!%!5)(k!#3"D"Xi!!!!!`"2TD%!6k@T!%
+qQ2J"2VG3!!!G`!#3"!'L%f!!&5E%!"2IQ!!!!3!"#!!#&cT0B@028b"6GA"`Eh*
+d1NKPB@4PFR-k38j655")C@&NCA*c1UKMV!#3"DLVc!#3"DLVc!!3Bh!!N#M-N!J
+!cpM3!-rBB0f3#(rrIrm!cpL%!*!%3*8aQ!!!"B3!!+%LrJ)!N!I2f0!!!cNb!*!
+6!3#SBf)!U'0#!+LIb!!!@km!cq$N!!!!!f&cDb!!!!!F!*!*U'+Q!+KMP!#SBk`
+!N!@SUm`!U9DS!+N5F%e33d-"!!!#'6T0B@028b"6GA"`Eh*d1NaTBR*KFQPPFcS
+!`!#3"!'L%N!!'`km!"4kX!'L%h`"SK*3!"8Qa!!A'T`!N!3"SK0@!*!)!D)6$!'
+L%R!"2fYi!"1R+!!!!!N"SK+!!"(d%!!6!QJ!mJ&I!D)5S!!2K,!!%mb!!!!!"3'
+L%U!!%I33!D)5U!'L%``"SK,3hC!%!"1M5!'L%k`"SK,3!"(d%!!6T83!!+G'rJ)
+!!!!4p""X%!'LD2rh3!'L%`$-N!3")JIS!*!&S'cJ!!!!$!%qPS3"2TDN!6kBq!%
+qYe!!!"h!!*!%!D)6B!!9*X3!%pqBrmd"!!!!&*3!"K"0B@028b"38%-J6'PZDf9
+b!*!3"""0B@028b"38%-J6'PZDf9b!*!`'N&38%`!N%"J!!!!3A"`E!#33'!!!!"
+068a#!*!J$NaTBL"*EA"[FR3J8&"$!*!969"-4J#3)!j-D@)J5@e`Eh*d)&"33`#
+3&8eA3d3!N%"J!!!!8P053`#33'!!!!"849K8!bjLD'2+Ue!!!c$)!"5Yd!!!!Ai
+"bUY3!"4P`!!!!YB-3Q&XE'p[EL")C@a`!*!&(33"bUZ!!"4P`!'(PY3!N!4849K
+8!LjM!*!G$%eA)%-[3bXV)&"33`#3&e4&@&3%,Q-V+`#3'`a09b"$,d-V+b"38%-
+!N"G849K8!bjMB`#3(!a09b"$,d-V+b"38%-!N"G849K8!bjMF!#3(!a09b"$,d-
+V+b"38%-!N"G849K8"#jMF(!!N"X-69FJ3bp$+bXJ8&"$!*!A9%9B9!3ZCAK`bUY
+3!!-`b!!8VG!!!!&q!FUV8!!8CF!!!!,@!&*PHQa[EfiJ5'9X!*!'(33"bUZ!!"4
+P`!'(SM`!N!4849K8!LjS!*!G$%eA)%-[3bXV)&"33`#3%a!!!!"849K8!Lj`!*!
+G$8eA)&"KFf0KE#"38%-!N"C849K8"#j`BA-!N"X069FJ8'&cBf&X)&"33`#3&P4
+&@&3%,R"MD!#3'`a09b"$,d-V+b"38%-!N"1!!!!!9%9B9!BZF'0S+bX!N"N-69F
+J3bp$+bXJ8&"$!*!6J!!!!&4&@&3#,R)!N"d'69FJ8Q9k!*!G9%9B9!)ZFfKMbUY
+3!!-`b!!8VG!!!!&q!FUV8!!8CF!!!!,@"P"33d&cE@iJ5'9X!*!'(33"bUZ!!"4
+P`!'(PY3!N!4B3dp'!*!J%&K$6dC')%PYF'pbG#"38%-!N"0NEf0e!*"!B!!!!(*
+cFQ-!N%"J!!!!FfKXBJ#3)!j348BJ5@e`Eh*d)&"33`#3&A0dG@)!N#!18%9')%P
+YF'pbG#"38%-!N"N%,Q4[B`#31e!!!!!36@&M6e-J0MK,)%aTEQYPFJ#3-"T"8&"
+-!*"!B!!!!%&`F'`!N%"J!!!!68e-3J#3)!j-D@)J5@e`Eh*d)$Bi5`#3&8e36%B
+!N#!16'PL)%PYF'pbG#!f1%X!N"909d0%!*"!B!!!!%p#5L!!N#!169"A)%PYF'p
+bG#!f1%X!N"958e*$!*"!B!!!!&4&@&3$,Q*SBmUV8!!$--J!&+h3!!!"IJ(+Ue!
+!&'A!!!!#eJa#B@aXEfpZ)%KPE(!!N!8G"!(+Ui!!&'A!!BH@e!#3"&4&@&3#,Q-
+!N"d-69FJ3bp$+bXJ0MK,!*!A9%9B9!3ZBbXV!*!E$%eA)%-[3bXV)$Bi5`#3&e4
+&@&3$,Q0M!*!F$%eA)%-[3bXV)$Bi5`#3&e4&@&3$,Q0`!*!F$%eA)%-[3bXV)$B
+i5`#3&e4&@&3%,Q0`F!#3'`a09b"$,d-V+b!f1%X!N"G849K8"#jPH($+Ue!!!c$
+)!"5Yd!!!!Ai"bUY3!"4P`!!!!YB!abTd$)LVJ!(+VN3!%j98!!!G"!(+Ui!!&'A
+!!BHL2!#3"&4&@&3#,QJ!N"d-69FJ3bp$+bXJ0MK,!*!6%!!!!&4&@&3#,R!!N"d
+069FJ8'&cBf&X)$Bi5`#3&P4&@&3%,R"KF`#3'`e09b"3BA0MB@`J0MK,!*!@9%9
+B9!3ZF'0S!*!E$%eA)%-[3bXV)$Bi5`#3%i!!!!"849K8"Lj`BfJV+`#3'3a09b"
+$,d-V+b!f1%X!N"1!!!!!9%9B9!)ZFJ#3(3C09b"5CAS!N"e849K8"#jcC@I+Ue!
+!!c$)!"5Yd!!!!Ai"bUY3!"4P`!!!!YB!abTd$)LVJ!(+VN3!%j98!!!G"!(+Ui!
+!&'A!!BHL2!#3"'4[Bh8!N%"J!!!!FR0bB`#33'!!!!"cD'aL!*!J$P"&4L"*EA"
+[FR3J0MKV!*!9Fh4eBJ#3)!j348BJ5@e`Eh*d)$BiD`#3'33ZC'pM!*!l8!!!!""
+AD@ic-L"i1$BJ6'PZDf9b!*!`#94&@&3#,Q-!N"d-69FJ3bp$+bXJH$Jf!*!A9%9
+B9!3ZBbXV!*!E$%eA)%-[3bXV)(Ji0J#3&e4&@&3$,Q0`!*!F$%eA)%-[3bXV)(J
+i0J#3&e4&@&3%,Q0`F!#3'`a09b"$,d-V+b"i1$B!N"G849K8"#j`BfJ!N"X-69F
+J3bp$+bXJH$Jf!*!6J!!!!&4&@&3',R"MD#XV!*!C$%eA)%-[3bXV)(Ji0J#3%i!
+!!!"849K8!bjbB`#3(!K09b"AD@j53`#3(`3ZE'PL!*!E$NaTBL"*EA"[FR3JH$J
+f!*!C"#j[BQS!N"X16f*U)%PYF'pbG#"i1$B!N"8*68-J6'PZDf9b!*!h#%e03dJ
+!N%4849K8!LjM!*!G#%e$)%-[3bXV!*!E9%9B9!3ZBfac!*!E%8e$)%0XBA0c)%0
+[EA"TE'9b!*!1J!!!!&4&@&3%,Q4PCJ#32e4&@&3%,Q4[B`#31a!!!!"849K8!Lj
+S!*!p%!!!!&4&@&3%,R"MD!#3'`K03b"$,d-V+`#3&i!!!!"849K8!bjdF`#33`B
+!!3%!N!B8!!3"!*!(!3#3$!S!!3%!!!%"!!%!N!31!!F"!!%"!!%"!!!!!3#3"-B
+!"`!!"@%ZEh9d!*!k2j!%39"36!!!!B"BJ!#33Mq3"!#3#98"N!!"#3*l!*!1!B!
+!N"%i!!N!N!KYGf9bDh0IFfKKFQ9NAf0[EQCTCbjS!*!-!3#3$J`!!`#3$!(D!!3
+!N"!"!*$r!*"%AepcG'&bG!#3I!%!!!!f!!`!N!F"!*!P!3#3"3%!!!!0!!)!N!i
+8!!-#!!%"!!!"!*!1#J!"!3%!!!%"!!%!!!$%!!E#!&pID@jTG'PKE'PkC3#30&p
+IFh4KFR3!N$PIAh4PFQeTEQ&dC3#30`%8!!8!N2m!N"Dk!!3!!!9K,QpeG!#3'Mq
+3"%&38%`!!"p!!!!(d!!!!%!!!&M!!*"K!6q3"!#3"e8"N!!"#3*l!*!0,J!#!!!
+!!J!#!*!S!J`!!J"3!!%!!3!"!!%!N2m!&#G$6d4&*b!R4%&835FJ*e"*3e3R!*$
+Z#J!%!*!+!3!!!#FV!!!Q+`!!!V)"!0d!)&)!!!!F!AS!!R"@CA)!!!!DF(*PCJ!
+B!#C69&)M!!!"8J#3$!5`!"!!!!!'!*!%!rd!(3!!!"3!N!3Ep!!N!!!!5!#3""d
+@!#N!!!#F!*!%H3S!1!!!!,3!N!4(L`")!!!!dJ#3"$J&!&8!!!Mq!*!%G-X!A!!
+!(CB!N!3'TJ"T!!!GS!#3"$`*!(8!!"fi!*!%IY-!KJ!!(FB!N!4Z0!#4!!!Gf!#
+3""eD!*d!!"kL!*!%,XF!V!!!(Yi!N!3IL!#l!!!HlJ#3""fE!-)!!#$-!*!%%Hm
+!dJ!!)3B!N!4LaJ$L!!!K&`#3"%%,!1i!!#%[!*!%8(J!r`!!)6d!N!3PY`%+!!!
+L"3#3"#2(!4)!!#-G!*!%"d)"(J!!)pX!N!36H`%V!!!N$3#3"FMrr`!!*Kd!N!3
+EJ2rr!!!!PJ#3"!p3FQpUC@0d)&CPFR0TEfi-8(*[DQ9MG#"0DA0M"N9NDA4[FJ4
+'Efjd$P"bEfTPBh3J4AKdFQ&c$d0eFh4[E5",CAPhEh*NF`a"Bf0PFh-J8'&dD(-
+'9'&bCf9d$%*eD@aN)%9iG(*KF`Xf1%XJ3fpNC8GPEK!f1%XJ4'PcBA0cC@eLE'9
+b#MBi5b"-D@jVCA),0MK,)&"bEfTPBh313bp$+bXJ3fpYF'PXCA)13bp$+bXJ9f&
+bEQPZCh-'3dC00MK,$e"KFf0KE#"$Efe`D@aPFJp3BA0MB@`J9f&bEQPZCh-,8&"
+$)%0[C'9(C@i38&"$)%4TFf&cFf9YBQaPFJT38%-J6'PZDf9b"e"33b"348B,8&"
+$)&"bEfTPBh3-8&"$3A0Y)&"KEQ9X$&*PHL"$Efe`D@aPFL*U:
diff --git a/Mac/Demo/index.html b/Mac/Demo/index.html
index 6e24c57..ba1500d 100644
--- a/Mac/Demo/index.html
+++ b/Mac/Demo/index.html
@@ -89,6 +89,11 @@ in Python.
<LI>
<A HREF="building.html">Building Mac Python from source</A> explains
how to build a PPC or 68K interpreter from a source distribution.
+
+<LI>
+<A HREF="embed.html">Embedding Python on the Mac</A> is a minimal example of
+how to embed Python in other Mac applications.
+
</UL>
The Python distribution contains a few more examples, all unexplained: