From 9fbb3b9245a05a48b7e9136f5007794b55710658 Mon Sep 17 00:00:00 2001 From: Bobbi Webber-Manners Date: Sat, 14 Aug 2021 01:18:35 -0400 Subject: [PATCH] Clean up macros. IRQ handling fix --- applecorn.po | Bin 819200 -> 819200 bytes applecorn.s | 60 ++++++++++++++++++-------------------------------- auxmem.misc.s | 8 +++---- loader.s | 5 ++--- 4 files changed, 27 insertions(+), 46 deletions(-) diff --git a/applecorn.po b/applecorn.po index ebe66dba85ecba959759d18ce65326eab0e5bdc2..f37f1bee71d909ea45ca9d744044b42cf2be271a 100644 GIT binary patch delta 4428 zcma)83wRS%7M@r7;L#QZDdo|d(AHcEr7f-&1xj0>MI*E+y2$QgK3-d0#D(>%$f_B> zCE0IcYpKaUEJ+fpZ6`MY67)50-_z( zxvhTu#Ft?UvQXcP0}C*_XZ+cv3>r4;#H``$=S>P(=?qt3d&c5L>sTT8ODb zUTx(A7V6Ve$RC5cdOG{HYN@&p_>L~Rvwovsm@ke)daE_lW0Yk4%vXOXf7=tU>y}U}I6iOd< z^atXoxz|z1MxgY>)q^C+aU|SyjIL?JCZqZ_A^J11Fr7F$Hv`)y!T41!wxuhxa88#o z4-2oSDuuW!9}C7*r3iNwV1Z9nUQczzDaKSstiq={I5`lJgWnK8t-aJBz}|?mh@Uf= zILzsP``jWE82fdr*&#-@B_3%2^w`t}N68h==(i}-k%Aql+GHo^>+lI*nf zW+$A-zE!_HTib8p8-tY(?xFO-|2@>cO&1I!N7;e9wqYStt5oBzcd?MARkmT%6w@^2 zU2K|a%Dn_PAq#~@kwRmj(5%^72ygJEsc^$`1AoQH|4zx$+8LYLPC25LOs#|A7XUQC zRAW;v2*4IJz&O}V^`?SE=%68Bs9PK2RlaO3zb*$1-T6Z7?}C89NFf9@tPl^bV4VhY03y3>#V* zW!L#f@kwaa*zo48?o;M>+=thfRXlt5IS3UEuY^W$cybDyYxvfL4Hgl=w%*+ajk;)T zfT8|pEg4Q{1ZNEo1cxuv#1)I#8B8%2$Gpug7Kblk=ftjtPr^j_+8h^GEMavS^SxCR z(~xj|T{S8^C$~!uw9q5RN<0kcasZy1YWpXSX!%NTMa+ALD>|6Dl$}7+*#{RcV`FLV z@gliI{L>%VWFzzmRo(nDYZq&-viex_4$Fsx@K_-HaRp6VDSBJtA@~rihR(eqq#U99 z8qrPZtGl}j#JhKZ*h_JBV}ZjxG{ z%*u+;%O2SkdWVgOaNAAXru9ungu;@375Z?h3pmC>`i4;A8_%<^8yTq;yc*_~&MGa) zph!|GepQRZ3GT1<;cnc0kxZu(18rZXcN^#~2OwRf+1#mT<)jyP*gG6C^64O}9GNPL zL2a#CIQ5qUWl8qIi4LE&w?6jv>t@DttClW)>BUvAJc_7&@=4QH*((Y=xshV@ayEJK zL}w*!u+X)Y_QC#m5^hx}-1<)b`-c9*xAp7h?r01#a*U}*=1sTI74aX-**xP$*zfbE zE$GO3n+gqd^7G}bk&^LFewO@pAIU@Vwn#~08?TXfL`piGe7XEyq$ItaUn1{~l$hIj zz5GF3q{ww%OqRG&QMJ-}*laOR;zmRr3cVX7PJjOo!S`^ZgTaXwiajr|BU2)hJ*nR; z=w`NxM|X0Q#1~eu8AF{;@{{a_g_5Y+O0?2x8(8HOKU~2k8e5zL;2PcP6uiz)+d`A` zPQl|$G{DcD(1kX)qlr#iE?VTQsT6!n%_gCnK~FkuY4YGrmG!U&D@btKMk^kt;Aa%C zQ@Fxdd=euEkUL?sK+t zNeS-9Totajg16|Zc8w8Rc5ySbQoHHr!`1Dkn>F3LuI%>PRFF4+4$5&ouN_x*$bkOs zvIMkc<8#EkKeLnRGV#?KPCH!X{S{06kgC0c8^2V-Je*BGRLB_O(MxTGYNB-{GmF)erRouUleG!J# zRqTR6FMIYCJq{O+N9)A(tJrDAh)UQ;DnaxAPj}hAvgs0C+vATyzCgX>Cxbjh@&X}r zCHx`P#d!yR(b)J^c)9> zlfAmxUR|r4=|Sx K++99s!2bXj`Uh?R delta 3512 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]1 - STA STRTH - PLA + LDX $C08B ; R/W LC RAM, bank 1 + LDX $C08B + LDX #<]1 + STX STRTL + LDX #>]1 + STX STRTH SEC ; Use aux memory BIT $FF58 ; Set V: use alt ZP and LC JMP XFER @@ -98,18 +89,18 @@ XF2AUX MAC * Called by code running in aux mem to invoke a * routine in main memory XF2MAIN MAC + LDX STRTL + STX STRTBCKL + LDX STRTH + STX STRTBCKH + LDX #<]1 + STX STRTL + LDX #>]1 + STX STRTH TSX STX $0101 ; Save alt SP - PHA - LDA STRTL - STA STRTBCKL - LDA STRTH - STA STRTBCKH - LDA #<]1 - STA STRTL - LDA #>]1 - STA STRTH - PLA + LDX $0100 ; Load main SP + TXS CLC ; Use main mem CLV ; Use main ZP and LC JMP XFER @@ -117,24 +108,18 @@ XF2MAIN MAC * Macro called on re-entry to aux memory ENTAUX MAC + LDX STRTBCKL + STX STRTL + LDX STRTBCKH + STX STRTH LDX $0101 ; Recover alt SP TXS - PHA - LDA STRTBCKL - STA STRTL - LDA STRTBCKH - STA STRTH - PLA EOM * Macro called on re-entry to main memory ENTMAIN MAC - LDX $0100 ; Recover SP - TXS - PHA ; Preserve parm in A - LDA $C081 ; Bank in ROM - LDA $C081 - PLA + LDX $C081 ; Bank in ROM + LDX $C081 EOM * Enable writing to main memory (for code running in aux) @@ -159,7 +144,6 @@ WRTAUX MAC PUT AUXMEM.VDU PUT AUXMEM.HOSTFS PUT AUXMEM.KERNEL -* PUT AUXMEM.OSBW.ORIG PUT AUXMEM.BYTWRD PUT AUXMEM.CHARIO PUT AUXMEM.MISC diff --git a/auxmem.misc.s b/auxmem.misc.s index 457f3d7..4fa94b8 100644 --- a/auxmem.misc.s +++ b/auxmem.misc.s @@ -145,15 +145,12 @@ PRNIB CMP #$0A * IRQ/BRK handler IRQBRKHDLR PHA -* >>> WRTMAIN -* STA $45 ; A->$45 for ProDOS IRQ handlers -* >>> WRTAUX * Mustn't enable IRQs within the IRQ handler -* Do this manually, as we have complete control at this point +* Do not use WRTMAIN/WRTAUX macros STA $C004 ; Write to main memory STA $45 ; $45=A for ProDOS IRQ handlers STA $C005 ; Write to aux memory -; + TXA PHA CLD @@ -176,6 +173,7 @@ IRQBRKHDLR :IRQ >>> XF2MAIN,A2IRQ ; Bounce to Apple IRQ handler IRQBRKRET + >>> ENTAUX PLA ; TODO: Pass on to IRQ1V TAX PLA diff --git a/loader.s b/loader.s index c7b43a7..8f467e2 100644 --- a/loader.s +++ b/loader.s @@ -96,10 +96,9 @@ START JSR ROMMENU EOR #$A5 ; Checksum STA RSTV+2 - TSX ; Save SP at $0100 - STX $0100 ; In main + TSX ; Save SP at $0100 in aux STA $C005 ; Write to aux - STX $0100 ; And also in aux + STX $0100 STA $C004 ; Write to main >>> XF2AUX,AUXMOS1