From 1f4c9ddf4dd8f4278da2bf23267f507629c4707d Mon Sep 17 00:00:00 2001 From: Terence Boldt Date: Tue, 22 Feb 2022 15:43:54 -0500 Subject: [PATCH] Fix #56 shell crash on key autorepeat --- Apple2/CommandFirmware.lst | 2 +- Apple2/DriveFirmware.lst | 2 +- Apple2/FileAccessFirmware.lst | 2 +- Apple2/MenuFirmware.lst | 2 +- Apple2/RPi.Command.lst | 2 +- Apple2/Shell.asm | 25 +-- Apple2/Shell.bin | Bin 361 -> 364 bytes Apple2/Shell.lst | 323 +++++++++++++++++----------------- RaspberryPi/Apple2-IO-RPi.hdv | Bin 33553920 -> 33553920 bytes 9 files changed, 180 insertions(+), 178 deletions(-) diff --git a/Apple2/CommandFirmware.lst b/Apple2/CommandFirmware.lst index ded1c5d..9b0a909 100644 --- a/Apple2/CommandFirmware.lst +++ b/Apple2/CommandFirmware.lst @@ -1,4 +1,4 @@ -ca65 V2.18 - N/A +ca65 V2.18 - Raspbian 2.19-1 Main file : CommandFirmware.asm Current file: CommandFirmware.asm diff --git a/Apple2/DriveFirmware.lst b/Apple2/DriveFirmware.lst index a734841..a3cb7e0 100644 --- a/Apple2/DriveFirmware.lst +++ b/Apple2/DriveFirmware.lst @@ -1,4 +1,4 @@ -ca65 V2.18 - N/A +ca65 V2.18 - Raspbian 2.19-1 Main file : DriveFirmware.asm Current file: DriveFirmware.asm diff --git a/Apple2/FileAccessFirmware.lst b/Apple2/FileAccessFirmware.lst index 79facb7..dfae9ff 100644 --- a/Apple2/FileAccessFirmware.lst +++ b/Apple2/FileAccessFirmware.lst @@ -1,4 +1,4 @@ -ca65 V2.18 - N/A +ca65 V2.18 - Raspbian 2.19-1 Main file : FileAccessFirmware.asm Current file: FileAccessFirmware.asm diff --git a/Apple2/MenuFirmware.lst b/Apple2/MenuFirmware.lst index c70c9a4..c0a24b1 100644 --- a/Apple2/MenuFirmware.lst +++ b/Apple2/MenuFirmware.lst @@ -1,4 +1,4 @@ -ca65 V2.18 - N/A +ca65 V2.18 - Raspbian 2.19-1 Main file : MenuFirmware.asm Current file: MenuFirmware.asm diff --git a/Apple2/RPi.Command.lst b/Apple2/RPi.Command.lst index 09664ff..a692434 100644 --- a/Apple2/RPi.Command.lst +++ b/Apple2/RPi.Command.lst @@ -1,4 +1,4 @@ -ca65 V2.18 - N/A +ca65 V2.18 - Raspbian 2.19-1 Main file : RPi.Command.asm Current file: RPi.Command.asm diff --git a/Apple2/Shell.asm b/Apple2/Shell.asm index ef0de12..e6e2871 100755 --- a/Apple2/Shell.asm +++ b/Apple2/Shell.asm @@ -111,7 +111,6 @@ Start: DumpOutput: jsr GetByte - bcs checkInput cmp #$00 beq endOutput pha @@ -132,14 +131,6 @@ DumpOutput: jsr PrintChar jsr SetCursor jmp DumpOutput -checkInput: - bit Keyboard ;check for keypress - bpl DumpOutput ;keep dumping output if no keypress - lda Keyboard ;send keypress to RPi - and #$7f - jsr SendByte - bit ClearKeyboard - jmp DumpOutput endOutput: rts clearScreen: @@ -205,10 +196,20 @@ waitRead: bit Keyboard ;keypress will abort waiting to read bpl waitRead keyPressed: - lda #$1f ;set all flags high and exit + lda Keyboard ;send keypress to RPi + and #$7f + sta OutputByte,x + bit ClearKeyboard + lda #$1c ;set write flag low too sta OutputFlags,x - sec ;failure - rts +finishKeyPress: + lda InputFlags,x + rol + rol + bcc finishKeyPress + lda #$1d ;set flags back for reading + sta OutputFlags,x + jmp waitRead readByte: lda InputByte,x pha diff --git a/Apple2/Shell.bin b/Apple2/Shell.bin index 49345aa1b92ef983ff909e3b65a8f7b42a508d23..32b5d8039b402d34f6663d3aa808b3c8aba7cf35 100644 GIT binary patch delta 190 zcmaFK^oD7Ief=SYm7EHP6cmCKRx$wTj8?V;g$D{J89u0aD1<9!ob>phelqNX;YsHY zVkbjBn4fg|V0|+5gT2DrzY1!KK0yiz3K4%GETFblmELMr1W#4r;BN#^38)&RMj1#S zQ(X#?oOsz#RYiy4fWX(a3LLRx$wTj8?V;g|7-5v`#X7u=G#}QOr2$@xkh3*aw%B z&L1>ShJ5fk>GZ+xWax(=g|~kdlofq~6m%F42%K5Va6q#js9#6m08l7FA>t225@=Sd zN^dnQf~Tr*@Hc`dssvOHQlt!|kEt$&$WGj6$jbvV_v=dex$Orm5+;iE5ubkBL-`+ev8?!D*SbM75+`C8lvEUOq(r9*O3Ttet@C~%N1 zRIqJIlhoAEzent>P&m{l9C9`E&$jfmm`1t(e_eXs9IZyhu8s}YuRVNYkeM^s7zAyC z%n;|Eqhr&8LqQ}IEt3*-jPDsqiI$CYh*pj?juwivi`IxViq?s=kJb-PUJ1&?r?v^w zf=-wJ9&y>|gb9OV{+lHR8!r7fE5&a2l;*r8aqi!X*}X@`^v2;58D|@W;}R2+Ls@yw zE(v8N4WBU~D>+YAX0aJ#v(}BzDqnu`h0NlNQ;!81c^ihS$F`17Dw*0kqj|${@v(gy zhLH`|AvAr!{VD1uv16vf~(OQ0kI#G@2S zBLRshgR&@xB$P)5B%>m3#cimB%D5d>P!-is9W_uBwNM*%P#5)Z2kN5%8ln*z<4!a| zQ{06V+>LwC45?_27HEl9XpJ^#i*{&_4(NzZ=!|>O1^3~8Jb(w0hOX#_?&yJs@Gu@h zPxL}>Jc>T(i^uRd`r!%m$CDUZ#Sju9A%QFso|V>HHKEXLsl zyom952@^08lQ0=CV+ztS6|dk`WMCRz!|RxiH!uTlVkTzcExe7{n1i{Phxu55Of1AA zEXEQn#XDGrcd;BRuoA1V8t-8Z-p2>{5NojxA7MSRumKzKF*ac{wqPr^A%gALflsg# zyYMMK!{_({Ut%}D!q?b?Z?G5pupb9-5Z~fE9K!eb0f%t}KjJ8U!q4~x$8a1ca1y`b zH$-s?r|~<^;4J>YIh@A@T*M_@#uZ$}wefuWlVGx$>r8eNV`9zqCWpysZZJ2Rn@lc~ z+r*hXCa=k7@|yytpebYuo10A$bBifzikaf3gehqP6K_hH(k8(qnlh%WDQA*Qc~ik8 zn~LUEbDODTDx2F)6;stzGu2HEQ`6KkwM`vU*VHq2nEIxH`RgS%a@5$|X_}a(<}QzF6KUSzj?qsXwpnq)6H}@J!%Q=;nb*y9^M;vW-ZV4K zEc2Fm+srm|%v>|i%r^^6rdenfnZ;&_S!&)f%gnoGxmjUWnpI}CdC#md@0$^5JSugxCwjoEAV znf>N~IcUB$-t>8%~A7{`Puwpj+x`;ggI$`HNTmtIb}|p-_03w*8E}4 Yne*m?xo9q#%jSx?8eY%eFPy&iPYQO>wEzGB delta 2574 zcmY+^ceqY<0KoD0rF$c?qRhOPi!Rru>^*L}E?pxfxyg)*GBUDCvS+SJ86|s!gp6yX zUVCOmMH*JGtTNK~TRnL?&-3~I&N;u|@BDF|=bXVeZ)Y8hr6r@vH;gZpH8yZ65b`8l zAXl@5`iY5w|BmPxfncCZFyL(9-({0hqUvP%|Gr7tGc+93q#GnugBNjza6vglm;!qqV5RZ~5 zh0-X4vM7i0sDO%i7>}S5Dx(Ujq8h5B25O=fYNHP7q8{p_0U9C!kD?JCLn0a@2~E%x zk0Tk)&>St$5>KENp2SmVji=ED&!8<*@GRQlIkZOybVMg~Mi)GfuIPpr@FHG9cl5x^ zcm+Mt3%$_?uc9ydp+5%TH4MZc48{-)#p`$j!|*1C<1LK9NQ}a0jKNrp!+1=6n3;n1v7V5oY6K%)wmD!+b2jLM*~!EWuKIf@N5a75Ee@ z@flWOHP+yBti?L4#|ETfBQ{|(w%`kF#h3UBVQj;8?7&X!!fx!rUhKnu9Kb<*jYBw$ zBRGm<_y)&u0^j00e2l*?loCVR+G(SH#y9GCa1||?l%vZ z+$N97Yx0@=rhs|S6f_|dV+xtVCe{=&MNKjDkcl(JO$ifkN}5upv?*iCnsTPRsbDIa zhs`6VlBsN}n5w3lscveRnx>Zd`z6-#tgfkN>YE0pp-C{0nnva^lV}>7B-6w+HIJKQ z)66tCElf-EglT1-G*6k<=4sQ$JY(9L6!WZUXPz_dO$XD_bTXYy7xTR7YPy*h%!}qF z)7|tiFPm3PPt(ivHhs*irmyK|`kMjfH8ao*GK0+!Gt|6p-Y~<=n`XFq%ZxB1%_uY4 zj4@-)I5XZ%FcZxrGugatrkGSS)x2ZgHSd{e=6&;lnQms7nP!&x(0pWOn~%*LGuO;B z^UVUY&@3{G%@VWJd}5ZFwW~13;Hk&Qx3$xXH zX}&UHv(0QbJIqeA%j`CL%wDt4>^BF@LG!gaWDc7n=BPPlzA?wm3G=P_&U|l9np5Tn zbK3l9elkCsU(6YE)|@lv%?0zTiI|J#H*?8cHdoA5bIts2{xH|g4Rh1nGJgg)@b?Q& GUi%l72*yYN