From b08d7e5851f12c3ac5628e2ce0d8f2b0144ba871 Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Tue, 4 Sep 2018 12:16:24 -0400 Subject: [PATCH] still_alive: make interrupts work on older Apple IIs --- still_alive/README.still_alive | 4 ++-- still_alive/interrupt_handler.s | 12 +++++++++++- still_alive/still_alive.dsk | Bin 143360 -> 143360 bytes 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/still_alive/README.still_alive b/still_alive/README.still_alive index f5ab134d..b4ffa43b 100644 --- a/still_alive/README.still_alive +++ b/still_alive/README.still_alive @@ -1,8 +1,8 @@ Still Alive for the Apple II - in roughly 20k + in roughly 16k By Deater (Vince Weaver) - + vince@deater.net BACKGROUND ~~~~~~~~~~ diff --git a/still_alive/interrupt_handler.s b/still_alive/interrupt_handler.s index 1d6556af..d701b681 100644 --- a/still_alive/interrupt_handler.s +++ b/still_alive/interrupt_handler.s @@ -11,7 +11,11 @@ ; Then it sets up the stack like an interrupt and calls 0x3fe interrupt_handler: - pha ; save A ; 3 +; pha ; save A ; 3 + txa + pha + tya + pha ; Should we save X and Y too? ; inc $0404 ; debug (flashes char onscreen) @@ -286,6 +290,12 @@ done_interrupt: exit_interrupt: pla ; restore a ; 4 + tay + pla + tax + + lda $45 ; restore A saved by firmware + ; needed on older (pre-enhanced IIe) rti ; return from interrupt ; 6 diff --git a/still_alive/still_alive.dsk b/still_alive/still_alive.dsk index 787b5c3712ddd746f54e2c06a080f1b62bd79af9..836df1d5bf0d9f8a6ea0c7ed3d5aa095481e3be3 100644 GIT binary patch delta 15237 zcmeI33wRS{y2sylZkZ&LnMs4jv{3xxu03I(cM+Hx&YY$>3^vIq#Pt|-OJ%DS!% zV7;K>Hn4*%U?hoJa}$BBCT4e7M1vBMUD?g9ms5^{AfOd=RYZEGz^c2Cdye~@JqfiE3o4#E2-J|8&Sfisx_)tY_x|M%dw}`@ zHJt>YrmgTi>`?(7&jY3NkQH*{=moU({s(Zb{OoAy@*)AKp%rb*ui{;T2P)wjqUO-D z)z^@2&F+#t9<_V5>hWpCQ4g>{2!cmf#rG6MfSgq`Tz6&Rc-HeIEl;iKqZ{nmy3C2c zk?*J(tuyu0vu8Pw<2BXXRQQX%*0=kt=Wbz)eEzo$Is&x6ET=qm&#>&Ppk6oT>GR$9 zd-Ao))|AzjT?N@rdCQ&(xjhz7X0Vh&MtTwnN*w_Bm}| z4h0wlFcdzeP}m0$rAG41kfNhpmaI1xWlloE8&@DA0TEqfnz5yA1w+a*}<_|mj$ z8sEk|uD{~t*Uotxcr(ml{@~(G)}JD3;Pw2FgfrB#=lFBuP>vO){j8 zWJ$ejbH3)x*flF?R&4iZxt>e8 z?1kJ2l3iJv4YYr3pRMI@XrmkE&D4^hC9!?`j%zDV6Z&jZDL^xv9WKAIXoBpka_eWo zHVAgRL6ZMeRjM~H)d4Jru7(}@%Z)f`r^mCw_vNx>9*<|41pr}mZP^SDH2Oc^JzzVW$)ClX;GqF!RT^`W9IIm{qy-xvE*(fgjV_rUWLGYudQCca=ljiYM=_nd7wg$j%t2p3PpBM+mIDl3MixqiqxJ-R|mBY z&k4_5$1(DRM~VqXFLO7RX&J!|d{C?M{DkPdaM;lo*2V1#5j&WYgB0tR4^;= zPs5oyHv)AgUsSG`jt|$@+6#EQHei&(&5}e&cJ4}me0bVcz}swmmW8+2t^~7%gU(zV zpDXe9TwbfbJ$IINNiHv0cu6};x58q@F$0VB`~fgd1?{X%o`Dmy7xI#ocUZMCWihy{ zmLXua{TzMDlQU2n?6&Y$rsrOgC>FzO7Lm7F39D!Vk+;u+H9EUPXSefK%atJ7b^bZ&b=em)Sgs#H&xY`G*@vb2%t$ByifipGl=;%KNPiZ6ILj+7DY)YSTIJB zTL^w97#9IM8~HUbfr1CgT4l>PY-MX}ems5Ress&yo!Yd!&c;4@yCH4z(1C6=?YZs3a-GV^kTkx$iLti!bs; zCQi>mGr9dV2!dcV8nr%W*Fzs@;%z{4G>f6EiuBRKbTHEOFpv)j^OctxaFc1t z8X!5qHA8uBnL)W_3eMHpuoc)}lk&l6DGN7>FbY1R*TtI54q=nYY1w2li`6Slpl7Y} zyjZEeu#WXupiCPT*TxnrR3jEtdY0fG#$h_dFE&Gruzda)QSmAD7~yo%KQ+!1z9g)| zBx8P);Gw#2sWQSze!4QX5ob#Wn{blwH0B7Mcr{hrPEt|xSTm3C7Vn~q7ZH1ubR$-l zuVRlQdlG58Y>d(61pOo!=MnTOqhX?%-c4|nG)Ft#QjIJ}=G-JG1DkM%zKLzp9tBz} zlw(a8X%xqWjaZMiy_=1-T6@`Z1PdO@Ybn+y5Us^hM&JtI9N$t8#-+e+?zFl1{q4dn zbHT`OhL?>{FHmFI!W`pLQZ&ypeniNJ*Ol8nC4})F;5|4^xUOlq=GpdjMsd!^q=JL7 zf)-EDzA2UIQDeSHAf1l&1Fad|p>%o?98jvOu&k^l zo%BXis@jYdp>Th|-v`s_P&69!2clkIEDGhR*mQuYc$QYYRan88gXf`3C%?KXTQCro zXg9i&86NJ*x0HBQfa?-s411epJJXLpii6s)DOw8*&gEvPqsZ=In2TOP|^bdPOFg4@zMbjTaezYCR{N6(# zMt%UUSWE|b{{E1c5us>kFnlYNh5UN ze}dN6(S{p!x_a6f>HjxLXdZ>F$63<#!2LRNAy8nR(z+?!emn?-}@Dsw5jJPog2Jc&z4inUXq>&`~w7)(pkKd znIgacb0|!Nt|OpIb365OofHp@z>;KSH$n>B;go+P2PbtS)rj|Dqcz;XS`%X!)9>}* z!U6tNUlwevBfNoNuV9!3oFlS=CJ&N)e*;S`Fz|CgXC{s_5C90M+i`nQH0B}xcZ)SS`CI0@dF5(d#2}xL_8Ay8BrIGB$F!))E~e& z#7HE$d6{4^6b$a?$Hc>7uZJD1+kFxw;iARZD9%xX-iWI5rm4`XyfOkC^iA=gW-G>GMH-1YKPn7)PoPuPW_kJ@ zOL;ut0HOs-1Mzi4c|aWthEXDMkg#VC61hN-BjT~pVzD5$+lot!ePgj)!?tKVmh>gk zsaSY`XpRlE!p6KEE09_!_{E;BwgrDKSYV)kC^%4 zXe1a+9m~pzUxrXkn`9GlT&FXMQp*2?wZOZE)d>b%!B0tR{q72AwM55Kj(`N@llsBY zM5X|AVXTRVyp#24(B<5c45{f<@YhhCjzvr0`jkHtOnMiv)JH5WadjDgCN!BL9s+%> z0Oy4&e=2mh2{<|{T?e(HSSWQP%Ra@xR2n3JA$IOh;_zrZ`5ZCUAM&XN80hmW&yGTC zYe`7`C0FQECB_v_Zl|r`UjP-g5+5^!&n)@9TPfHgO7Y}by%bF&S`zOv*3bz({7{$U z-D|KUXWNUS$wN$b+79lF-+McSR#Hr#Gl33l;g5Oh3!Ien`O;b#a?T({qc1Yq(NA>E zQJ<>%uFEl8Yg8IWV@}B$ZLUlwV%nH8A8LIWe{dU^qZI_b9$I{Ue>Cln->FTv501uZ ztxPoT^9PfDpJq&_qcMLp;`jOV+>(^v8wy90*$5xPnwaVf`opTv$5C1d;fP<2DmXT( z`ZcB?#=_uI{dG_r4xOZk@#d`PI5cZBq*--xLsGsdNq~zmr;#a4_?8;reS|3#(adFM zR+tOrt9@dBF*QX8+wJDWRzp=<^)`yxX+p5Z=24qNQJ*j7OC}?)nBX>guDr%~6uXq4 z)nYCMIS^1b)?$J7(==Sj?qrlW5sS4k!I!2N?iF&Cq-+)AKRB_cpcC3dfvbrd5$+};ecQQ z6PgGUX`)QDi81L+tjuL*UF1Bm@5*`Z`3Icmo=co(*4Lb8)+Npp>*YNE3Fo=(`_6EM zZ!+8m4|G3skRw=u6exif7|nZ5K699-cJQB`WjokM@pC~z5i3woDn+c7#UhIHz*k3& zGF3#UTsP&~j&AKLp2%Yrw-a5QKoGC*dwu`j=x=xbUS5`KqiAsGm7i!?dY7Ks`|1n( zUVTZk+m&aXST7zvK^D$tnswicPWRkbp&o}>tMYE@^R{zE;q@gAqjL0u-EyRTU{?`7Nv`}(mDpwgiN7D^OFiN?6Z834j>YMOq1xnL3m`B*PFY*9ZX=PuKuo(NX zc~l;q$K>fQzy(dSRFJ37GvpcbxI9xHpC{x)KIRkoWImNo=Q9fTD_o#msfm?#epiUK z;vYb)6_+5^wO>Q5YcD~poxKq2e>24T7YGqIUJxQye>WlG&`UzZ0~dveo*p6MGEIm$ z4_htJR@hFp70q2)zp;KG^+HhYA{)Y{ZLq85tsNIciX|i(E{YTjE{PO(7Xj9j<~ zm#2m#1?b8<*2%edZ8Pm^*|MWYy13i)vUp}21lDgq*J*r>Zd=|^XX@m%#0ouh<(jm_ zgPLVS%Le(jlvDSK@Ur+>Ls;2Tf;kmyO!JGLq9P~7S^G!gA+zj023-_-s< z+m}bz_&_>pyy3|kp1LH3bdmh3nO{pGn|q{?YcEM5rImb}rhS^!7su+v`d6^F;oa}4 zDDwM5?*9fNuFqT2=UwN6g*TUQ{SK7fFz6b$xfde#>PUKZB)vM4UL8rVj-*#d(yJr+ zzpf+cMT)&b^P8A1xUH_0;GKRBBcD5n7ap3-l0LtPc=wc Os5MO~@fD=(w*3d+2T`&B delta 14105 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