egisin@watmath.waterloo.edu (Eric Gisin) (02/05/88)
In article <1988Feb3.080736.14303@mntgfx.mentor.com>, dclemans@mntgfx.mentor.com (Dave Clemans) writes: > Re: autostarting GEM programs > > My understanding is that what the autostart programs do is to set up a > small TSR routine attached to the vertical blank interrupt vector. On each > interrupt the code looks around and tries to guess whether or not GEM is > initialized yet. If it looks initialized it disengages from the vertical > blank interrupt and starts the requested GEM program. Whether or not a > specific version of this technique works with all versions of the ROM's > depends on specifically how the code checks for GEM being initialized. Having disassembled gemstart recently, I'll describe what I found out. It installs a VBL routine (in slot 1, not checking if it is in use) that waits until the line-F trap handler is initialized (changes). GEM uses the line-F opcodes as a "short" procedure call. It wraps it own line-F handler around GEM's handler, which intercepts two line-F opcodes (I don't know what they are). When the handler encounters one of these opcodes, it looks up an address in the ROM relative to the caller's PC, and uses that in some way to pass the name of a program to be started by GEM. I wish people who write this type of program would distribute source; the programs are bound to break with new version of the OS. I guess someone will have to disassemble gemstart and try to fix it. (not me, I don't have an assembler)
Jinfu@cup.portal.com (02/07/88)
Some people have requested the source of gemstart (or startgem). I happen have a copy of the source code. A complete ARCed copy follow: It doesn't work with the new ROM found in Mega series. If someone can make it work I will appreciate. ======================== Cut from here =========================== table !"#$%&'()*+,-./0123456789:;<=>? @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ begin 644 startgem.arc M&@)35$%25$=%32Y)3D8 # &T.;E);.0P !D.EQM<V@N<')G#0H:"%-4z M05)41T5-+E!21P"= 0 ;0YI4DE$. , Q@- $,#/P !D $"2$$2? &X@y M7@$@\(,' %(] 1@51% #R=!H#R9 >R@+#4#*30,(&J(O@"W)& S ^ ?/S #x M860,D.J%18( ?N0PV?$'2&_\ # @>="64*(6?8#$\F2GFXX)0')YXC+ &P81w M #0X,]"!E$13<C5%^<^=!%X#Z1CI6,*)$RI/HBC[9T_(J8X@M#ZA\V^$,(4#v M6!31!X#$"&4#"4A[$=1BX"!;&PKP$,FA!B%G7B#H& ,DG'^PU$)*?$:&$+43u MI8'(@YB%2P#"1""Z#6)$LMH@T "P$/P ,A+"%5!#!P#";5,B%#FI ^+-1090t MX#&B"8#*",:.@.L!H.CV+0C9S/!#0IN@GXX:M#[J>"(C@$X=[89\I 2(&0[5s M70<%/;B<@0$5B,22E#__^',& @H"< @ )B!#@CC\> $-#1\0)41PB % X;r M*L3#''2$(0<=9Y31A@MIN&&&$V_0@4:,9RC0 &)!U$''&RBJ2$=U9H"@T#]%q M/ %%$(AI8 ($!J @BX0!4!" @# @)@? 2CD !E=0D(!&@A35$%25$=%32Y3p M $< R@H &T.:E)\4>02 ,+QHH>)%@"I4@4J@<*=+$Q90$-EHT0=@B1@X<o M-Q*(R0/B")(G!EM,>6.&CD"")Q,T>4,FC9DT9<B B#%#(D6,(#:",%C&3AD0n M4LK$!$'G#0@V;\+(G$,GC!PZ=>" <!.FS4\S<MZT <'4*9TS9=JX2./&S,F4m M5-"DF0,"3M8S<JJ"6 NBSIRA1;DV?=J18=NW<=NPQ:H5Q)TT=-2Z(8KF9Y Jl M5)Z ,/.	DR<ER<'9@@[<\Q+'_2=?M&3!@Q;#BJ/8,F]=0W;N"\>7J:31D6k M(,*P10RB<1@[:5Q?AE/FVL!F724F6#F:J;$#,/A/&S=HP=-(D)PD"].6Yj MBR-/>;&P8<H@;!./!BSWSNPU; \G!OJD28O<\<NPB:X[]WX0+<VQ1@NFW263i M3W+,H9T;<Z3$W1&8M5$=".+AEL0)6[E5!AUT<#1''7+\E!AVC*WW!ESMO1<?h M8FA,-EL9:9SA1DH(*@@;<F90"!)N1;VA&6=!_*<4&2'.<1=;9Z3ATV)D<15'g M'4[])$9<8ZRQ(5MAP &':WDE]A.$<DBXF!3UM2#>CP$!:618J/TD7XM-.+4&f M"%<$QT8:56&Y9AMMRJ%#2@GTUX)173T%EEB$[O556"XTR%D"A[Z$AUY>'>I"e MHI4RZM89@#(E1QI2%;JH6)MN)I! =[I1AAD])) #'C(,(9 =J!V)U,QM HKd M#63(<*H"AY+QQARM)A"#0'B(H1VQKL9 PZ\")= H&I_^*NJ?"B1@6Q@:Z58&c M'&& A0(<8Z3 0A@P1-O&&SZYP$8"-* 0Q@WFR@M#"@F\ )8=.3D+;A@Y48&b MD648^6L"Z[9[1P(DR,!""_+2F^]1&Y[ 5HA**4?I4V.5Y:(<($1+'+=D8!?&a M2[:-6^[$HI)U1FY:WCD&=@NJRVX9+BQ, JPSD/%PQ"E$2T=<<# <[+"NZOL&z M<8NAO%RV0\:1,\,XG'N#S3XE0 8,+*!1'1FV12O&E@DX_<8:24\6W$]EX+$6y M'3]$NVT";KRAGAMGJ&PNNA/7_0./C2T&&AP<B5#WW6>( %Y>3E-EE=QE<-MXx M567H?>ZQ"@@T!AR'*W:&#@C?[((8"=B;P@HLR!O#Z6*KFL#FG;LL=EP@) "'w M8)QFKH#9:X ^<MEK.UXYN4%GFS#.[^Z,1PPP< WQO,6'KG "7AMGV\_08XVSv MSCR;@3V]0A-M=%C"SI$VQC()'^V084Q-0@P.SZM][5NS(+QM,QHO^L+5@WW;u M\^#3W_24-X/_ 2U\61I?&\J7MC$@Y2YJ"QO4!B8UG=' :K^ZW1P^9[O((6R#t M>M.>^V"5@^_A2U]N:<Y1R/*T! PM@20XFJ,"14'WV0"#NM.6!R=G%<N% 7-Es M&8.?HC6&-L A#:-C&*Q@X#/5X6MB+S$."$($%3GD3R-EB$/9A+B^&B8O!I>+r MUH?$(+4OVH]R^$N;&NS2KR;-#()>@F#=IK@A$"U&;&0+HAP$8@8A8DMZ.".=q M\IJ7NA\^$85UZ)<>,&,4LASL>%HDP0VXUJNTW2$,O(D!5\H &BGV 0WT&2Mp MV% =^ @D!J [W@AC50,33NR2O*$,R!"4G9E%!S6E1)"L9761#!5D6/RNo MEBTR3(ED#HN!& [FP,R\"X#14R7W8N4\H$VL.,X!V8>( [)U74:7"BS?+X-)n M@AO.*VU6^I9T+,.5J&"&*U)ITM8>>;-(5H0%O1+ANWK%@E2MBF4;6J&J6I"Cm ML-2!E$4!V0OA #ENC;*4/O25 )$7*(>-\E9TB % ^_50-\S))V-(* A&H$D0l M[ $&+G#!#?I SW;MLYK9F^@J90!3B>FK;;S9YCN]V<*%AG-8X[0A#AO:K;L k M;'CE.A<,)@8:(R;R)VZH Y_>R9V-."<]1DDG0[,UQO:]JT#?"A=2]Y:N;#5Sj M:M!,&PQ \,DY8B8K>Y3IN]!E0A%.<P9@3*N^LMD&LF#G)U^C%$>*E(;+N,$Di MV?)I#,F'M(FIARVVC(ZJ$$3'*C+H5QWMG?;L"<9YFM6([M(6"[WG62Q*S7PQh M,(M9V>#,!%ST;1K5EP,C-TM<>A0$(!4I2;7G5=&JRGOH(FIER/ %-IC!AY@#g M9&CIZL2TS>$W/QFN0,M 4-QR4J0HL N4]L.1)B'E#D )0A.B-S=5W:&XQR5>f M&.4:*##ZTPP3(TM7_F->Z:CJ8/J*HDR\)#""&4DZ.>*O&.I@!C.\<T3]*D]=e MCO0QY41+7\(#L,9(@Z*M('@N;432&UQ&%*.TC9-/Y6UH814#&YA.J1/CU\;Zd MQ1U_5K<I;9I,5K8BWZ'5(:0URY:^MH NMDY&*#@0PQBZX"I51D=Y!BY#D,>@c M5!&_"U8W& ,.3LPW?:EX2$7"T13?D$@6@N $9H@R#DX@X\+ 6((3X_%:/VD&b M,N"@CS3H@I-?A8<P4%D&*0XHE@LVF!F#QU,WS@YL'@P"'LO QS<H8)R+++HCa M0UG1YZK!+]NW,!+#X,X3&Q* S7"7?I'8##6P09EIS" ;XWC0.BYT& []R1S,z M8 9A(+(.PP""3X>ZR=F:FVR:@QGDZK.BA5R=<Z&;$P(;&&1[-I@"4)F ISA*y M(.9%[Q^/UUL9 W%5M;SP#(CX1IS^\(SL\M0VC:&;PGZBD4\XBK- ,<,-ETx M$P-SN\= 9KKPU\4Y\K8+#%.&$X3H*&\X&X=EV;KM)0"GB%7NNX:+7LN]=V)%w M2FATV8EOZX9T-BV-7&AW?=A>JS>XN=YA\"CGZV6G4G2D<R+J3+<"IBZ-(SP4v MS6&-HN !%_B=<P!7N0O>*&,M,X>_(T-3[*K$Y87!E?KJ- B(<!!P+G:!0)T@u M,$-;3APJ=YHRN '2 02;$_0+*6?+#4<K(]6"Y4:*+0G1Q3]5,)&)''\D)Q[1t ME4<# T(/H$X90XM>DJ"$*U:&04U>U>276*9H;:DL:PI4V!*"3ZZ5+"V9V55!s M\%:,9TL,JNHYPC->[6M7>5_:)M*^N:-OQI HW :B/![*#8=S$UK-/C8P&6* r M QS(60$R %VZD3A-,]! #%6#M[[ /B=93K>ZW@[T@K[L>^"?0&Q9[+FPD**4q MP L3UZ\S8F^1O"I(#. VG[]JOXQ/IB90WCC0/^W!W9;P=&]_B3? 0R\CVVBp M%&S\LPFO^8LC$Q0DIP;PLP0@("%ZQT+1@WDX8SXR0#H3LP=2(%YF A(+MEVNo M07W',8 WUB+?A1DLI3L(-VTWTUL,9UP^M%3Z4B1EIWH@=FX2%B)G<%!.<7PYn MTC^V$5<)H 9&5#KH4CP",7U)009_M&,]QF9E$ .7(0.W=W4Z2"^H4TDHM#24m MLGB&,1MD$%069#5I<QF>\@8<@66CEV^EQFWRYF[/)U,+PT]S( ?G<W\O$H5Vl M04=)PA28,6GN<VOG-#%:.#1<V!9.03G9I&6E-X;T%BTX6#3P-C%K9$0=]F>Fk MQH)@]GMC=C NX!9V4(6Z(W1A\$>CPP9K0#HT\"P*,()FH(FHL0;O@CD<ETVDj MR(FG*! T6 :K:(K& FUH5!RQV(J7:#).HXFZ,09ID 8@( *B8BED808B$"TNi MT!/% 6UVXSF\. >^"(PBX 3-Z#)<X 9<( ?'F"VCDP?.46LL4%;2HHSY@SO/h M&(T)( )!D$C#HB@2MHTQ%XMB (R4 .2QHWD^"M@=53G^(OI6 1/ 5!( )Ig M(R%),@93(55B\$Z0EP:29W9%($5/D"-0@!UZ!P)!@#&_ AH f K e d end ===================== Cut from here ========================