From a751737bf1101ce95dd77e0dbe6a0158ddd75dc4 Mon Sep 17 00:00:00 2001 From: Terence Boldt Date: Tue, 1 Mar 2022 22:46:03 -0500 Subject: [PATCH] Update version numbers --- .github/ISSUE_TEMPLATE/bug_report.yml | 12 + Apple2/Shell.asm | 22 +- Apple2/Shell.bin | Bin 359 -> 439 bytes Apple2/Shell.lst | 368 ++++++++++++----------- RaspberryPi/Apple2-IO-RPi.hdv | Bin 33553920 -> 33553920 bytes RaspberryPi/apple2driver/info/version.go | 2 +- SECURITY.md | 1 + 7 files changed, 229 insertions(+), 176 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 0c3bcca..acd6068 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -49,11 +49,23 @@ body: label: Driver Version description: What version of the driver are you running? Check with `RPI a2version` options: + - 0024 (fix VT100 arrow keys) - 0023 (replaced periph.io with rpio) - 0022 (added version info) - Older (error calling RPI a2version, pre-2022-Feb-07) validations: required: true + - type: dropdown + id: shell-version + attributes: + label: Shell Version + description: What version of the shell are you running?` + options: + - 000D (added version info) + - Older (pre-2022-Mar-01) + - Not Applicable (bug not Shell related) + validations: + required: true - type: dropdown id: problem-area attributes: diff --git a/Apple2/Shell.asm b/Apple2/Shell.asm index 28af55b..7a613b3 100755 --- a/Apple2/Shell.asm +++ b/Apple2/Shell.asm @@ -87,14 +87,26 @@ DetectSlot: asl tax clc - bcc Start + bcc Init nextSlot: dex bne DetectSlot rts -Start: + +Init: lda #$8d jsr $c300 ; force 80 columns + + ldy #$00 +PrintString: + lda Text,y + beq Start + ora #$80 + jsr PrintChar + iny + bne PrintString + +Start: lda LastChar pha bit ClearKeyboard @@ -266,3 +278,9 @@ restoreChar: sta (BasL),y lda TextPage1 rts + +Text: +.byte "Apple2-IO-RPi Shell Version 000D",$8d +.byte "(c)2020-2022 Terence J. Boldt",$8d +.byte $8d +.byte $00 diff --git a/Apple2/Shell.bin b/Apple2/Shell.bin index 714ed47c85e67f7529945c9ed53cacbf52ca00a7..a7b6af8c715966b673634d53ce62ab23f8a41255 100644 GIT binary patch delta 221 zcmaFPw4Hf^ndt(Con?w2I5-;=-u^vt;qy{94;_I6D;X3nDy-xL5(VA@N=a`o0|5K?N)-SA delta 140 zcmdna{G4fmnc7k|4;_I6D;X3HDXioK5(+^IU`|FWTY|y^g_8^))I1b|CT7dID=PW~ zDI_RF{80e2fRe2$z16G;o~pvZ-w2)(P&G)6GLSx|x)d%s@q!QI)5)@o=4?KSn({tA IlcN}A0E7`NtN;K2 diff --git a/Apple2/Shell.lst b/Apple2/Shell.lst index d538c43..16625ae 100644 --- a/Apple2/Shell.lst +++ b/Apple2/Shell.lst @@ -1,4 +1,4 @@ -ca65 V2.18 - Raspbian 2.19-1 +ca65 V2.18 - N/A Main file : Shell.asm Current file: Shell.asm @@ -91,183 +91,205 @@ Current file: Shell.asm 002028 1 0A asl 002029 1 AA tax 00202A 1 18 clc -00202B 1 90 04 bcc Start +00202B 1 90 04 bcc Init 00202D 1 nextSlot: 00202D 1 CA dex 00202E 1 D0 D2 bne DetectSlot 002030 1 60 rts -002031 1 Start: +002031 1 +002031 1 Init: 002031 1 A9 8D lda #$8d 002033 1 20 00 C3 jsr $c300 ; force 80 columns -002036 1 A5 06 lda LastChar -002038 1 48 pha -002039 1 2C 10 C0 bit ClearKeyboard -00203C 1 A9 00 lda #ResetCommand -00203E 1 20 C2 20 jsr SendByte -002041 1 A9 09 lda #ShellCommand -002043 1 20 C2 20 jsr SendByte -002046 1 20 52 20 jsr DumpOutput -002049 1 A9 00 lda #ResetCommand -00204B 1 20 C2 20 jsr SendByte -00204E 1 68 pla -00204F 1 85 06 sta LastChar -002051 1 60 rts -002052 1 -002052 1 DumpOutput: -002052 1 20 E0 20 jsr GetByte -002055 1 C9 00 cmp #$00 -002057 1 F0 26 beq endOutput -002059 1 48 pha -00205A 1 20 52 21 jsr ClearCursor +002036 1 +002036 1 A0 00 ldy #$00 +002038 1 PrintString: +002038 1 B9 76 21 lda Text,y +00203B 1 F0 08 beq Start +00203D 1 09 80 ora #$80 +00203F 1 20 ED FD jsr PrintChar +002042 1 C8 iny +002043 1 D0 F3 bne PrintString +002045 1 +002045 1 Start: +002045 1 A5 06 lda LastChar +002047 1 48 pha +002048 1 2C 10 C0 bit ClearKeyboard +00204B 1 A9 00 lda #ResetCommand +00204D 1 20 D1 20 jsr SendByte +002050 1 A9 09 lda #ShellCommand +002052 1 20 D1 20 jsr SendByte +002055 1 20 61 20 jsr DumpOutput +002058 1 A9 00 lda #ResetCommand +00205A 1 20 D1 20 jsr SendByte 00205D 1 68 pla -00205E 1 C9 48 cmp #'H' -002060 1 F0 27 beq setColumn -002062 1 C9 56 cmp #'V' -002064 1 F0 31 beq setRow -002066 1 C9 43 cmp #'C' -002068 1 F0 16 beq clearScreen -00206A 1 C9 54 cmp #'T' -00206C 1 F0 37 beq setTop -00206E 1 C9 42 cmp #'B' -002070 1 F0 3B beq setBottom -002072 1 C9 55 cmp #'U' -002074 1 F0 3F beq moveUp -002076 1 20 ED FD jsr PrintChar -002079 1 20 21 21 jsr SetCursor -00207C 1 4C 52 20 jmp DumpOutput -00207F 1 endOutput: -00207F 1 60 rts -002080 1 clearScreen: -002080 1 20 58 FC jsr Home -002083 1 20 21 21 jsr SetCursor -002086 1 4C 52 20 jmp DumpOutput -002089 1 setColumn: -002089 1 20 E0 20 jsr GetByte -00208C 1 85 24 sta htab -00208E 1 8D 7B 05 sta htab80 -002091 1 20 21 21 jsr SetCursor -002094 1 4C 52 20 jmp DumpOutput -002097 1 setRow: -002097 1 20 E0 20 jsr GetByte -00209A 1 85 25 sta vtab -00209C 1 20 C1 FB jsr BasCalc -00209F 1 20 21 21 jsr SetCursor -0020A2 1 4C 52 20 jmp DumpOutput -0020A5 1 setTop: -0020A5 1 20 E0 20 jsr GetByte -0020A8 1 85 22 sta $22 -0020AA 1 4C 52 20 jmp DumpOutput -0020AD 1 setBottom: -0020AD 1 20 E0 20 jsr GetByte -0020B0 1 85 23 sta $23 -0020B2 1 4C 52 20 jmp DumpOutput -0020B5 1 moveUp: -0020B5 1 C6 25 dec vtab -0020B7 1 A5 25 lda vtab -0020B9 1 20 C1 FB jsr BasCalc -0020BC 1 20 21 21 jsr SetCursor -0020BF 1 4C 52 20 jmp DumpOutput -0020C2 1 -0020C2 1 SendByte: -0020C2 1 48 pha -0020C3 1 waitWrite: -0020C3 1 BD 8B C0 lda InputFlags,x -0020C6 1 2A rol -0020C7 1 2A rol -0020C8 1 B0 F9 bcs waitWrite -0020CA 1 68 pla -0020CB 1 9D 8D C0 sta OutputByte,x -0020CE 1 A9 1E lda #$1e ; set bit 0 low to indicate write started -0020D0 1 9D 87 C0 sta OutputFlags,x -0020D3 1 finishWrite: -0020D3 1 BD 8B C0 lda InputFlags,x +00205E 1 85 06 sta LastChar +002060 1 60 rts +002061 1 +002061 1 DumpOutput: +002061 1 20 EF 20 jsr GetByte +002064 1 C9 00 cmp #$00 +002066 1 F0 26 beq endOutput +002068 1 48 pha +002069 1 20 61 21 jsr ClearCursor +00206C 1 68 pla +00206D 1 C9 48 cmp #'H' +00206F 1 F0 27 beq setColumn +002071 1 C9 56 cmp #'V' +002073 1 F0 31 beq setRow +002075 1 C9 43 cmp #'C' +002077 1 F0 16 beq clearScreen +002079 1 C9 54 cmp #'T' +00207B 1 F0 37 beq setTop +00207D 1 C9 42 cmp #'B' +00207F 1 F0 3B beq setBottom +002081 1 C9 55 cmp #'U' +002083 1 F0 3F beq moveUp +002085 1 20 ED FD jsr PrintChar +002088 1 20 30 21 jsr SetCursor +00208B 1 4C 61 20 jmp DumpOutput +00208E 1 endOutput: +00208E 1 60 rts +00208F 1 clearScreen: +00208F 1 20 58 FC jsr Home +002092 1 20 30 21 jsr SetCursor +002095 1 4C 61 20 jmp DumpOutput +002098 1 setColumn: +002098 1 20 EF 20 jsr GetByte +00209B 1 85 24 sta htab +00209D 1 8D 7B 05 sta htab80 +0020A0 1 20 30 21 jsr SetCursor +0020A3 1 4C 61 20 jmp DumpOutput +0020A6 1 setRow: +0020A6 1 20 EF 20 jsr GetByte +0020A9 1 85 25 sta vtab +0020AB 1 20 C1 FB jsr BasCalc +0020AE 1 20 30 21 jsr SetCursor +0020B1 1 4C 61 20 jmp DumpOutput +0020B4 1 setTop: +0020B4 1 20 EF 20 jsr GetByte +0020B7 1 85 22 sta $22 +0020B9 1 4C 61 20 jmp DumpOutput +0020BC 1 setBottom: +0020BC 1 20 EF 20 jsr GetByte +0020BF 1 85 23 sta $23 +0020C1 1 4C 61 20 jmp DumpOutput +0020C4 1 moveUp: +0020C4 1 C6 25 dec vtab +0020C6 1 A5 25 lda vtab +0020C8 1 20 C1 FB jsr BasCalc +0020CB 1 20 30 21 jsr SetCursor +0020CE 1 4C 61 20 jmp DumpOutput +0020D1 1 +0020D1 1 SendByte: +0020D1 1 48 pha +0020D2 1 waitWrite: +0020D2 1 BD 8B C0 lda InputFlags,x +0020D5 1 2A rol 0020D6 1 2A rol -0020D7 1 2A rol -0020D8 1 90 F9 bcc finishWrite -0020DA 1 A9 1F lda #$1f -0020DC 1 9D 87 C0 sta OutputFlags,x -0020DF 1 60 rts -0020E0 1 -0020E0 1 GetByte: -0020E0 1 A9 1D lda #$1d ;set read flag low -0020E2 1 9D 87 C0 sta OutputFlags,x -0020E5 1 waitRead: -0020E5 1 BD 8B C0 lda InputFlags,x -0020E8 1 2A rol -0020E9 1 90 24 bcc readByte -0020EB 1 2C 00 C0 bit Keyboard ;keypress will abort waiting to read -0020EE 1 10 F5 bpl waitRead -0020F0 1 keyPressed: -0020F0 1 AD 00 C0 lda Keyboard ;send keypress to RPi -0020F3 1 29 7F and #$7f -0020F5 1 9D 8D C0 sta OutputByte,x -0020F8 1 2C 10 C0 bit ClearKeyboard -0020FB 1 A9 1C lda #$1c ;set write flag low too -0020FD 1 9D 87 C0 sta OutputFlags,x -002100 1 finishKeyPress: -002100 1 BD 8B C0 lda InputFlags,x -002103 1 2A rol -002104 1 2A rol -002105 1 90 F9 bcc finishKeyPress -002107 1 A9 1D lda #$1d ;set flags back for reading -002109 1 9D 87 C0 sta OutputFlags,x -00210C 1 4C E5 20 jmp waitRead -00210F 1 readByte: -00210F 1 BD 8E C0 lda InputByte,x -002112 1 48 pha -002113 1 A9 1F lda #$1f ;set all flags high -002115 1 9D 87 C0 sta OutputFlags,x -002118 1 finishRead: -002118 1 BD 8B C0 lda InputFlags,x -00211B 1 2A rol -00211C 1 90 FA bcc finishRead -00211E 1 68 pla -00211F 1 18 clc ;success -002120 1 end: -002120 1 60 rts -002121 1 -002121 1 SetCursor: -002121 1 AD 7B 05 lda htab80 ;get horizontal location / 2 -002124 1 4A lsr -002125 1 A8 tay -002126 1 AD 55 C0 lda TextPage2 -002129 1 90 03 bcc setChar -00212B 1 AD 54 C0 lda TextPage1 -00212E 1 setChar: -00212E 1 B1 28 lda (BasL),y -002130 1 85 06 sta LastChar ; save so ClearCursor will pick it up -002132 1 C9 E0 cmp #$e0 -002134 1 10 0C bpl lowerCase -002136 1 C9 C0 cmp #$c0 -002138 1 10 0D bpl upperCase -00213A 1 C9 A0 cmp #$a0 -00213C 1 10 04 bpl symbol -00213E 1 C9 80 cmp #$80 -002140 1 10 0A bpl noop -002142 1 symbol: -002142 1 lowerCase: -002142 1 invert: -002142 1 49 80 eor #$80 -002144 1 4C 4C 21 jmp storeChar -002147 1 upperCase: -002147 1 29 1F and #$1f -002149 1 4C 4C 21 jmp storeChar -00214C 1 noop: -00214C 1 storeChar: -00214C 1 91 28 sta (BasL),y -00214E 1 AD 54 C0 lda TextPage1 -002151 1 60 rts -002152 1 -002152 1 ClearCursor: -002152 1 AD 7B 05 lda htab80 ;get horizontal location / 2 -002155 1 4A lsr -002156 1 A8 tay -002157 1 AD 55 C0 lda TextPage2 -00215A 1 90 03 bcc restoreChar -00215C 1 AD 54 C0 lda TextPage1 -00215F 1 restoreChar: -00215F 1 A5 06 lda LastChar -002161 1 91 28 sta (BasL),y -002163 1 AD 54 C0 lda TextPage1 -002166 1 60 rts -002166 1 +0020D7 1 B0 F9 bcs waitWrite +0020D9 1 68 pla +0020DA 1 9D 8D C0 sta OutputByte,x +0020DD 1 A9 1E lda #$1e ; set bit 0 low to indicate write started +0020DF 1 9D 87 C0 sta OutputFlags,x +0020E2 1 finishWrite: +0020E2 1 BD 8B C0 lda InputFlags,x +0020E5 1 2A rol +0020E6 1 2A rol +0020E7 1 90 F9 bcc finishWrite +0020E9 1 A9 1F lda #$1f +0020EB 1 9D 87 C0 sta OutputFlags,x +0020EE 1 60 rts +0020EF 1 +0020EF 1 GetByte: +0020EF 1 A9 1D lda #$1d ;set read flag low +0020F1 1 9D 87 C0 sta OutputFlags,x +0020F4 1 waitRead: +0020F4 1 BD 8B C0 lda InputFlags,x +0020F7 1 2A rol +0020F8 1 90 24 bcc readByte +0020FA 1 2C 00 C0 bit Keyboard ;keypress will abort waiting to read +0020FD 1 10 F5 bpl waitRead +0020FF 1 keyPressed: +0020FF 1 AD 00 C0 lda Keyboard ;send keypress to RPi +002102 1 29 7F and #$7f +002104 1 9D 8D C0 sta OutputByte,x +002107 1 2C 10 C0 bit ClearKeyboard +00210A 1 A9 1C lda #$1c ;set write flag low too +00210C 1 9D 87 C0 sta OutputFlags,x +00210F 1 finishKeyPress: +00210F 1 BD 8B C0 lda InputFlags,x +002112 1 2A rol +002113 1 2A rol +002114 1 90 F9 bcc finishKeyPress +002116 1 A9 1D lda #$1d ;set flags back for reading +002118 1 9D 87 C0 sta OutputFlags,x +00211B 1 4C F4 20 jmp waitRead +00211E 1 readByte: +00211E 1 BD 8E C0 lda InputByte,x +002121 1 48 pha +002122 1 A9 1F lda #$1f ;set all flags high +002124 1 9D 87 C0 sta OutputFlags,x +002127 1 finishRead: +002127 1 BD 8B C0 lda InputFlags,x +00212A 1 2A rol +00212B 1 90 FA bcc finishRead +00212D 1 68 pla +00212E 1 18 clc ;success +00212F 1 end: +00212F 1 60 rts +002130 1 +002130 1 SetCursor: +002130 1 AD 7B 05 lda htab80 ;get horizontal location / 2 +002133 1 4A lsr +002134 1 A8 tay +002135 1 AD 55 C0 lda TextPage2 +002138 1 90 03 bcc setChar +00213A 1 AD 54 C0 lda TextPage1 +00213D 1 setChar: +00213D 1 B1 28 lda (BasL),y +00213F 1 85 06 sta LastChar ; save so ClearCursor will pick it up +002141 1 C9 E0 cmp #$e0 +002143 1 10 0C bpl lowerCase +002145 1 C9 C0 cmp #$c0 +002147 1 10 0D bpl upperCase +002149 1 C9 A0 cmp #$a0 +00214B 1 10 04 bpl symbol +00214D 1 C9 80 cmp #$80 +00214F 1 10 0A bpl noop +002151 1 symbol: +002151 1 lowerCase: +002151 1 invert: +002151 1 49 80 eor #$80 +002153 1 4C 5B 21 jmp storeChar +002156 1 upperCase: +002156 1 29 1F and #$1f +002158 1 4C 5B 21 jmp storeChar +00215B 1 noop: +00215B 1 storeChar: +00215B 1 91 28 sta (BasL),y +00215D 1 AD 54 C0 lda TextPage1 +002160 1 60 rts +002161 1 +002161 1 ClearCursor: +002161 1 AD 7B 05 lda htab80 ;get horizontal location / 2 +002164 1 4A lsr +002165 1 A8 tay +002166 1 AD 55 C0 lda TextPage2 +002169 1 90 03 bcc restoreChar +00216B 1 AD 54 C0 lda TextPage1 +00216E 1 restoreChar: +00216E 1 A5 06 lda LastChar +002170 1 91 28 sta (BasL),y +002172 1 AD 54 C0 lda TextPage1 +002175 1 60 rts +002176 1 +002176 1 Text: +002176 1 41 70 70 6C .byte "Apple2-IO-RPi Shell Version 000D",$8d +00217A 1 65 32 2D 49 +00217E 1 4F 2D 52 50 +002197 1 28 63 29 32 .byte "(c)2020-2022 Terence J. Boldt",$8d +00219B 1 30 32 30 2D +00219F 1 32 30 32 32 +0021B5 1 8D .byte $8d +0021B6 1 00 .byte $00 +0021B6 1 diff --git a/RaspberryPi/Apple2-IO-RPi.hdv b/RaspberryPi/Apple2-IO-RPi.hdv index dd58e11b3c6aeaa0d1bb35f5622552431a8b57e7..b5098eab73768fe3319e54664bc2beef15d0b0c8 100755 GIT binary patch delta 2594 zcmY+^d6Z980KoCz4>JvA%aXFa!6=&1G(wijSTY!yOo@n@YGg8&>`P^`uPM}6Yp6-u zC|i~=kxVO5DHN%cy^zYNzF()4(>v$$efOSw?;r1-^Imr0-=(v$JT9VsdTeaPTA@Rs zz(J8vh18_h$;qMruE^X_IJ71lay9htwpnQrElU0W+^n)uDPtm6M}`|VX^ldwgVCa55+eovNJ_q~~;R9va*8C83PAp_U{+O$H%wI$xjFe;ZRON)o_D} z#}dORf}$vf2t?vCM4>oJ;Bs7nk|>4JD1)-N66H`H6;KgZp%SjfHK>d#sETT+jsVf9 zftsj=7}UnKxDItt7uO>eaj1tI5RV&?fcm%zK2t+9!p&%mCTNOgxCOW3HZ(^fTA(Fb zp*3zt8ziAE+Mzv?(E)d$BT{fDIw2Kz;cj%sJ?Mh2xEI~f9rvLJdLj+!xE~MTL1ds8 z9zt(q;$ieb7W$$e`eOhd!9WbcU<|=f48w4Yz(|b3qj(IDV>Ghy1jb-2#$h}rU?L`A zGNxcEreQjs#0)%zr!f<=FdNU{S>#|2=3*Y^V*wW8IXsVCEW%>EfESU6m#_pcV<}$2 zt9T8s;|(msa=eMRumUTw3ahaOZ(}XiVLdkB9c;uVY(_rb#TIPEd)S8eu^k2Y03YHb ze2h=G|u2Ge#1HZjz91x&Z7_)@E87`%C|oQridwOikS!#X)ZHSrno6#E;m=0 zlBSd?ZOWLk=1Nn}ls6SjMRS#@WUe;Xn98P#scNd3>LxJJriQ6$YMB^Q+gxj|Gj&W| zbG?Z*ai*TR!Ni*zO@gU!ZZZu_L(|CIY#N&;rm1OWZZWr-+e~wF@g=r!)Y7yvt!eYm@L!R^fUd<0P~0$Xaklg$(})l4(f&68$^dCEL(W|~=Mwt2=pYjVsSGuO;B^UVUY&^%|J zH@Rk!S!`Y~FPc2_l38M2HcQPb=2i2WdELBWmYL<|P4kvnVOE+|X0=&k-ZpE^IW|!G*J~v;OFU=nF zmHFE2HT%qd^Nsn|954sXcjl1!-uz&GG>6Sk=4W%n95u(xadX0)G^flj=2vstoH1w3 bZ|0o&-TYzxH0MpBxnTYZZ{qJ4F2CU)pzy~C delta 2606 zcmY+^d6bS-0D$rDqnS|IvL(wm7`td}WhvV*^ko@4si9=-V~e61B+6Qr(PB3-cFGoI ztfjIq*;AGhWoxmuJde}ibkF%c@4e^V_n&*t`zGJ|CtEU>m5Zp@x@>fwVu4eEkdq97 z+|A=+!{NZ45jisu40H(w+ztG9Y+^!0oviJ24uuNh(ILnMJ8lM7TkyX@c^KnUgTCm8{uqFlFc5?AGG4)848f~-4X+~^Lop1)@difV zO^n1SyoI+h8e=dP<1ii*@DAR^L`=eDOhF2!;yt{N5AY$TVLE1DCT3wa=3p*T@e$@> zKGLuN3$X}`u>?!849l?sALA3O#44=D8mz^qScmoa44-2I(yxVVK??*FZN+S4&WfZ#UUKV5gf%a9LEWKhm-goKj0Kj;|$K?NBo3y_!;MM z0l(l^T*M_@#uZ$}Z}=U5;7?q`b=<&B+`?b@8~=>v+aC{;!DKY|mC(oaRB3%j7nBOkR`EJY@2lhfM)f&=fL-O~^!ZXRNX`V1onp)=eCDw6P*VHqy zroL%l;!H!+$UJ4j=4sQ|G%-z0GZSx`n-->}X=PfQHm0p1ivUz=~t4zttjGP}(lv)Al1`^^D!(0pqS znZxFYIckoX