From 2ef28818e0e4b934d73a2d9d85406450235e0cd4 Mon Sep 17 00:00:00 2001 From: David Schmenk Date: Mon, 2 Feb 2026 15:46:59 -0800 Subject: [PATCH] Clean up 6522 interrupt enable/masking --- images/apple/PLEIADES-2.20.po | Bin 33553920 -> 33553920 bytes src/libsrc/apple/sndseq.pla | 21 +++++++++------------ src/samplesrc/maze.pla | 2 +- 3 files changed, 10 insertions(+), 13 deletions(-) diff --git a/images/apple/PLEIADES-2.20.po b/images/apple/PLEIADES-2.20.po index a728d723a06b8f2d4f41dcf4d6ee65646279592b..7080a5fbfa1f85842cc5b965adb9896fbc9061b7 100644 GIT binary patch delta 3253 zcmXxmdzejSAI9;u$82WyFf(Ll#;HP0ib9Q3iVzcnVH9pk$tlN5r2~y!xrxFKO+~a5GNE;{18ix~Gzf(W$ zspjDc&BGx{kTQ}eUMnl*BuSDbA}LZ{DoCoNNxD>&N^+4@E@~c*ZfaGtQcA*rAgEU< zHJDy?!}g6Od-FGK*;c%z%eq~g^MheUHQPluh6|5%jMiLpYD0FYe<-zlFr;?+rQLHf z^TI**)kOuJqO(GkhfGdyns`@({^_}8|Glcfcd7TyOWvFv%1P^=*8P)oRP33W5Ik66 zU@*_yWE3vz5?x#F|9gzii>8HAhE;j2T6$hma7AfGVZ3X!TjkOWE%fOb)&~;@20^>r za1a!p)ss-Gq7L1n$)SsfRS6PGGlGPi%phU46id0P^A2sz4%I50oF83T@N=0Uc3e)# zX*nwii9xKQRF)c2R~kxN87}wB@k~COc%e9Fbq;q@0nzq)a%7m6h~x zP!PLFLp8ZfvZTH=kjBzX+DJRmuNljiUeZ?v$h|UBM#&h7$#|J4lVys`kV07?%cWR$ z%3e7XF3{U+I4S3(R8q_8%Sb)RmKM@pa;3XKhR9f%C~=uBb7he%m6fteK9%iKB70L7BISZuhSZcgk|p)zTDe}DNDFBxw@63nEctS~^p-p29vLi;$OM@r(`1e; zks>)Dhvlf8kb=`nVv^2VYDjI#lE%_nawJ!}Ne}5GeWjlak|8o&MoEE8lqnLInKDln z$};&-w#s%Xkv&N||AQJ1%WrZ-_g?I3&m9L~;=SGr4T+Z_TBe(<9a6nUVB(EvXwxjW^SM zn@C!GU?edGVvLaP;5>_Z!8PsRaq=cB0+ppBr*22=Kb=W9G4Svs=9Jk z&PymIh=nCdQY5wTP><+{3OSkEcb9D0Q1a!Dyrk8Iy?aI*r568hX;<;Own^oxuBfn4N6E%pM#3jU~#AQS+qBc>7xSY6x$Re&J>JnEGR}=M!`ouNF zwL}A=A<>Aqj<}x4CK?k>h^9m{qB(H`(So>icj3Ne+KM#PEdiRr`)VkYqdQAoT<%pztJFA;Ny zxx~xFJYqia3bBA#NGu{=C0-+5Cl(WL5N{Goh_{HhiFb&l#4_StVmYybSV_D`yiXJn z9}piB9}yoDtB6mC)x;WNEwPSRPi!DI62-(OVl(k6v4z-5d`4^|wiBNdJBXdc7sM{2 zg!q!!P3$4QBEBZ}68nh#!~xnkF{6rifekP6*$B5&^FT}6J z3F0^6Byo!Po%n+|P5eomAgf5|A*Hd?#A)g@bDBFh zI4ztTotvDNPAlhTr?u0@Y3tnLv~$`!InJ$42dATx>vVEDJ6)VSr>oP=$#=Rtw>h^v zJ)E9SF9%LF3Wm=TYY|=W%C@GuC;+DR9O)G3QC=Dd%ZtyhCS#Gtqg*ndD4%o^_sc zrZ`ibX-?dE-kI*qaArC$IEBuO&MarP^O7^ind`jl%yZ^DuQ&^wh0Y@9Rp&M5b!V~j zhV!Pg#Cgkk+j+-X>MV2Kb(T9ToR!Xd&ihW0^MUiB^O5thv zS?#QG);jB)_09%o zqf_i`ayC1kI$NBr&S%axXS?&cv%}fxeBtbJN}Mm9-Oe88E9Yxxud~nD?;LQxalUm9 zI)|L^obR0qAI9iG+mrpmh3;rRBig{n@= z2+zz2ha^tQNW6HhtRzUHl#_@gNqMOt6{V6yrLtTkRpjFQjBxU;(8qE}bQE$N<|nm2BDdZ_mHay!#Q zJwjE=2buMwsr@rkdWVDlB`K+s8%4L@QJ5YY6UzOvXL7R&Y5(mUH!|8IT$+1HujH-? zfzL`Bm)A$@Z<)VFqOidKdU495i%;ztK@ zU3!FrxQW5&xSk0?!?e78`b|b|^}gDhn%}r@a=B2|>}o+=YDy57DJ61Tn$*ZE*^?fs zmpis!@}{gG%LK8La!Ss~dAT5!;)7TnsViyHTCS5mGFhg`EXk3TvR>YiA}N-`azwt7 z({fHqrA#=8m6fPe2?trR+8R=&u{4)fk|AxSqjVAdpRs;2REEiDxl6{&M0rG}O18|G zMY33y$TC?e&&yibF8k#RITp?eVn1s*E2R=H8^n^NrZkspq=R&m{xV30%NUs?vt_X? zmsPS_*2`8YkRmxGpGk=vmE&?k&Pb4z5X8z$iZqZkX(lZsT{5Jtbdb){UHV9W86-nw zxQvvsa<@DnkID>LDlf|#*&y4bSPsiSl9iCCCzhyGm4?z%u9wczO$N$H$&`C!f;=Qs zBqq}(Tjt6FSu87MwXBnkk}m~PDEsAeIgzOQ|5d{ua#lj+f>?r7mg>?@)NX4AN`aUXBDQ8wBK4+fhRr*{bYa?ZHwnRd)ZQ55LJ7u@* zkz$?meI!11PIIZ0X_6GgDo9kSNQ%^w`qD_!q?ufilzZRWi>u}C8IXKSh0K)VLkEg> z95}eIcVbCyvw_JiDjxrDX@6lsr^F^THdfv{Dnuj`Rf%dubs~kRLDVE_5w(dr#3e*3 zQJ1Jk)F&Dcml6$$Mnq$x36VxzMl>aw5zUFqi7SXJi55glq7{)&v?i`1t|qP_GKexlKl24W+ziP%hRA@YgWi8qKhiMNQY#M{I+Vmt8;Q9!&)>>zd$ zg~TpmH}M`(MC>8nC-xG>#0SJa;zQyiVn1+ z65?y(8{#POE%6<3j5tnwPy9gqNc=>cAbuu(A$}!J62B3@6Q_vN#2>^N;!ol%@fUH9 z_?tLSloJ0C7iJ?gA0dg8G7>LgDJuz*DCHy~Nm5=aNJXh6QK>8!Nfo(RlBKFtlj@Qp zHKeB0lG;*7E|FBJEA^zlG>}WBp)``l(nQkaGHEK!q`6!!SICvpLRw0z&^G98piA`W zXyEsl#NcS~zhS|o73m?RwR4qowR4S=;k0qCb=o@DIoCVwoc2x!r=!!!>FjiIZg9Ff z-JBbp?oJQqCa0&<%jxa(ar!#_oc_+u&MnRWXP`64fiu_{;tX|eb#8NpIm4aXoe|DR zXOuJA8ROjHjCC@dJDt0nyPbQSd!2F4ea?92erJO7fHTpV3rpsIA1&8I7gjto$s7u&T;2^=LhFU=O^cc w^Rx4d^Q&{x`OW#=Ipv&o{&3DXe>!KKznpW<-_Cib)cGg0ebR~xq3ogm0)?%*!2kdN diff --git a/src/libsrc/apple/sndseq.pla b/src/libsrc/apple/sndseq.pla index 29460d0..bb32560 100755 --- a/src/libsrc/apple/sndseq.pla +++ b/src/libsrc/apple/sndseq.pla @@ -409,7 +409,7 @@ def mbTicklePSG(pVIA) //puts("VIA address: $"); puth(pVIA); puts(" Timer Diff = "); puti(viaCheck(pVIA)); putln if viaCheck(pVIA) == 8 and viaCheck(pVIA) == 8 // Check twice pVIA->IER = $7F // Mask all interrupts - //pVIA->ACR = $00 // Stop T1 countdown + //pVIA->ACR = $00 // Stop auto T1 countdown pVIA->DDRB = $FF // Output enable port A and B pVIA->DDRA = $FF pVIA->IORA = $00 // Reset MockingBoard @@ -489,13 +489,12 @@ def mbSequence(yield, func)#0 disableInts mbVIA1=>T1L = $F9C2 // 16 Ints/sec mbVIA1=>T1C = $F9C2 // 16 Ints/sec - mbVIA1->ACR = $40 // Continuous T1 interrupts - mbVIA1->IFR = $40 // Clear all interrupts - mbVIA1->IER = $C0 // Enable Timer1 interrupt + mbVIA1->ACR = $40 // Continuous T1 counting + mbVIA1->IER = $C0 // Enable Timer1 interrupt (needed for some emulators to run T1) psgSetup(mbVIA1) if mbVIA2; psgSetup(mbVIA2); fin overflow = 0 - if yield and func + if yield yieldTime = seqTime + yield else yieldTime = $7FFF @@ -657,8 +656,9 @@ def mbSequence(yield, func)#0 while !(mbVIA1->IFR & $40) // Wait for T1 interrupt if a2keypressed(); quit = TRUE; break; fin loop - mbVIA1->IFR = $40 + mbVIA1->T1C // Read T1C-L, clear interrupt until quit + mbVIA1->IER = $7F // Mask all interrupts psgWrite(mbVIA1, MIXER, $FF) // Turn everything off psgWrite(mbVIA1, AENVAMP, $00) psgWrite(mbVIA1, BENVAMP, $00) @@ -669,9 +669,6 @@ def mbSequence(yield, func)#0 psgWrite(mbVIA2, BENVAMP, $00) psgWrite(mbVIA2, CENVAMP, $00) fin - mbVIA1->ACR = $00 // Stop T1 countdown - mbVIA1->IER = $7F // Mask all interrupts - mbVIA1->IFR = $40 // Clear interrupt setStatusReg(status) end // @@ -685,7 +682,7 @@ def spkrSequence(yield, func)#0 // Start sequencing // overflow = 0 - if yield and func + if yield yieldTime = seqTime + yield else yieldTime = $7FFF @@ -850,7 +847,7 @@ export def musicGetKey(yield, backgroundProc)#1 char key key = 0 - if yield < 1; yield = 1; fin + if yield < 0; yield = 0; fin if backgroundProc == NULL; backgroundProc = @nopBackground; fin if seqTrack repeat @@ -874,7 +871,7 @@ export def musicRead(filename)#1 ref = fileio:open(filename) if ref if heapavail > 128 - len = heapavail - 32 + len = heapavail - 64 seq = heapalloc(len) fin if seq diff --git a/src/samplesrc/maze.pla b/src/samplesrc/maze.pla index a24dee1..5766fb9 100644 --- a/src/samplesrc/maze.pla +++ b/src/samplesrc/maze.pla @@ -476,7 +476,7 @@ else pcmpage = pcmlen / 256 seq = musicRead("MAZE.SEQ") musicPlay(seq, FALSE) - musicGetKey(16, NULL) + musicGetKey(0, NULL) heaprelease(seq) hgrMode(hgrOff) conio:gotoxy(1, 1)