From ed62dd961e6eac872db304af015d06a803c82962 Mon Sep 17 00:00:00 2001 From: Terence Boldt Date: Sun, 28 Mar 2021 10:27:53 -0400 Subject: [PATCH] Fix firmware so menu works called by PR# --- Apple2/CommandFirmware.asm | 2 +- Apple2/CommandFirmware.lst | 88 +++++++++++++------------- Apple2/DriveFirmware.lst | 2 +- Apple2/FileAccessFirmware.asm | 2 +- Apple2/FileAccessFirmware.lst | 86 ++++++++++++------------- Apple2/Firmware_27256_EPROM.bin | Bin 32768 -> 32768 bytes Apple2/Firmware_AT28C64B_EEPROM.bin | Bin 8192 -> 8192 bytes Apple2/MenuFirmware.asm | 6 +- Apple2/MenuFirmware.lst | 94 +++++++++++++++------------- 9 files changed, 144 insertions(+), 136 deletions(-) diff --git a/Apple2/CommandFirmware.asm b/Apple2/CommandFirmware.asm index 0c85463..7c01136 100644 --- a/Apple2/CommandFirmware.asm +++ b/Apple2/CommandFirmware.asm @@ -46,11 +46,11 @@ DriverEntry: sta OutputFlags Start: - ; Put command firmware here ; ; ; + rts SendByte: diff --git a/Apple2/CommandFirmware.lst b/Apple2/CommandFirmware.lst index 9c89bfb..3665fe2 100644 --- a/Apple2/CommandFirmware.lst +++ b/Apple2/CommandFirmware.lst @@ -1,4 +1,4 @@ -ca65 V2.19 - Git 59c58ac +ca65 V2.18 - N/A Main file : CommandFirmware.asm Current file: CommandFirmware.asm @@ -50,55 +50,55 @@ Current file: CommandFirmware.asm 00C516 1 8D D7 C0 sta OutputFlags 00C519 1 00C519 1 Start: -00C519 1 00C519 1 ; Put command firmware here 00C519 1 ; 00C519 1 ; 00C519 1 ; -00C519 1 -00C519 1 -00C519 1 SendByte: -00C519 1 48 pha -00C51A 1 waitWrite: -00C51A 1 AD DB C0 lda InputFlags -00C51D 1 2A rol +00C519 1 60 rts +00C51A 1 +00C51A 1 +00C51A 1 SendByte: +00C51A 1 48 pha +00C51B 1 waitWrite: +00C51B 1 AD DB C0 lda InputFlags 00C51E 1 2A rol -00C51F 1 B0 F9 bcs waitWrite -00C521 1 68 pla -00C522 1 8D DD C0 sta OutputByte -00C525 1 A9 0E lda #$0e ; set bit 0 low to indicate write started -00C527 1 8D D7 C0 sta OutputFlags -00C52A 1 finishWrite: -00C52A 1 AD DB C0 lda InputFlags -00C52D 1 2A rol +00C51F 1 2A rol +00C520 1 B0 F9 bcs waitWrite +00C522 1 68 pla +00C523 1 8D DD C0 sta OutputByte +00C526 1 A9 0E lda #$0e ; set bit 0 low to indicate write started +00C528 1 8D D7 C0 sta OutputFlags +00C52B 1 finishWrite: +00C52B 1 AD DB C0 lda InputFlags 00C52E 1 2A rol -00C52F 1 90 F9 bcc finishWrite -00C531 1 A9 0F lda #$0f -00C533 1 8D D7 C0 sta OutputFlags -00C536 1 60 rts -00C537 1 -00C537 1 GetByte: -00C537 1 A9 0D lda #$0d ;set read flag low -00C539 1 8D D7 C0 sta OutputFlags -00C53C 1 waitRead: -00C53C 1 AD DB C0 lda InputFlags -00C53F 1 2A rol -00C540 1 B0 FA bcs waitRead -00C542 1 AD DE C0 lda InputByte -00C545 1 48 pha -00C546 1 A9 0F lda #$0f ;set all flags high -00C548 1 8D D7 C0 sta OutputFlags -00C54B 1 finishRead: -00C54B 1 AD DB C0 lda InputFlags -00C54E 1 2A rol -00C54F 1 90 FA bcc finishRead -00C551 1 68 pla -00C552 1 end: -00C552 1 60 rts -00C553 1 -00C553 1 00 00 00 00 .repeat 251-rd96Xr&h_YbEU{yQ#C5{>93-oBC5*548bkt5f)K4nEdO z>|_1sN%(Ll@ejcA^NG!^KPuXhsGW*-sRN&W`#8}Ns)Rg5^lk%8Y}EhETpAish9 z2J#!oZ?yT14u9BAMLSj6A-^H`S0(>7|GnwfU_Mf7nh%J5|~tza{wZ zNdCLXzo9p=&G|Ptzvuz}Z#chbX5c>~`90vbfgiSt9p|?*@Y}3q2l;K}w~^mQejEAi zHox8B58J6|r%F5Iw*~)qlK*?;_w**VIlssGMGx@*!1+Zp1OJTV-v)jM_+hI!aegNQ zzr$Kikl#Um2l*Z3caYy{^E(~>u$_u_srHHP{(a6bdVv3L&M%r7_yhW17W&_FtxXi*oI8{Bzby10 z_*dosx;I*zGiu`Qeg1&{mxcZV{|(9C8?8+|fSfyh{(%0Mh5iHo9m(Gtt<4!VarZud zK>y1^|A8O172macqqT_#kaMTcAJG4@(0|~+FZp|;wK=0E?%wAQ=zm%0Kk)ZfYZDJ3 z=T4tLp#No||GFXcqzd!#k$N$=1?RD*-_6GalueH+GWBT6Uu}|28gUzkq*^39Kf4Th({2V(m zeOy1gyu46VhTnQ;_}!WL`pdJgD5J{gFnpY1?^i#nF3wij+aqjjY2m`%bo4*MZ=~@Xh2W2m z|0Dcn8oyZx{!w}UH{ktGjQ=D2RvN!m2>$r^Kf-UP@!N&qpONQ(8_vHN|3~E3;h{_{UD{-^jqKK>{Dr}#gqe|PcyZ{x7B_TBHs{#*F>{~0;|4RQYz z{|EO!MAK9JAI1OukK_L${txp1r^G*y|GxA#r& zSqJ|w)&Ifze{la({y*jaQ~v)P>3>gZ?WLzMg70X^PlqnQ=b2n|4;S*L+c+<{eP-tmuf6V`;`u}qM6RQ93 zum3{z|AXrUQ2qaY%!>H)A2k0@^Z&U1Rj2+R&Hq#Ve;NNl`TvyvPx=4k|Hpbje66Jh zUu#KJ1cJ4evaPk(kN27Xx)1;ThwA@`_aD-K%KxYJe{lUjc>ksRf6D)-`u}461FHX@ n;{T%h|3!#@h}Zv#_-$CY%UfiwxWSHVl#gRI0; zkWvYSF$`r(dkRw2`9CRLCAS(s-|O{qgc+qwrE?xnLX?H%-wnzgYZk&3tD4Poodo`UJk5 zg_q@m_}Khq9A5l!`~iskd~9v~LB%-qWSow1I>p@{gSRoRRR7dGe*D(M^R=339EIOf zwih4D-?(DDKs~n})ju;!vJ(RqADyohI(|L-;-=ysApRxbx8Miis#$SSIrdsg7{Z} z-v)lTYIdC8PQh=Bh8^X%k>5ss8~JVIx10QSi@!Zi$2gthkl$APH;BKE{3~W1+me4p z@~a-;zbW}uGX?)J@vj2E1N?B+oH)Oeg5MDhC(7?2zk~b^@;k`yH2Iwte|wycaXQ5z zzoYo?5dSyGziQU8E%{d^zv==0ZzaEKrr%NyU6b% zzl;2ClizLex5w!ir&ApAyNdrF@qdr}fmz44H+>AB)@8=;GZP^4dC~HAFi4g z=l4?Zd!pe*`90+Kkl#ao5Ba?&zt`e#kJB+ur#R&I6#tLJ{}b|Wn00JR{td~mdVv3D z$*-Cz_$$P}1^hnn!&UR+{C*04Uo`wEzmNPr^83i|BfsC|_gnn!aXQB76o>r2;{T2K z?<4<~S;w~I-;(^Q2l#)N{HmFPf1dbvfIk3!xN1S1KS;qJh(-|Q50F1V{s8#{#I$e%75Ke?ElG2L& zy^-3E<7eF&@<;T)sPw-ir4{*mBehwhb{s$CXZ=_EA4_JL^&g&pS4`IbJM^f{`rnJC zcE|ZA>&|fgWBph2AFTUX|KDsGPuW7^D@F2XL5bsw%s?JVT#oI$-WNzl%rCRL-em8fi zrVWXS>6xlHGc{Gcc(L}zkQkl2aN)z*bD}&wTdfr;`#U3q_x}Lx|Fra<_^l*`jia);oCw@1H-^~?&T>pvROXBx(#UEe)6ThFt z@8^ntzP0~P>wn@8lK6vM@kiGG?Ek~_A3O)J{~!0i*#F=A{0sa4?Egpo-*#W0{eSlV z+5g|)Rethl|FQmO|NjQGr67hO=Dq(Bb?S-~VU*XZ=_6Kl}ge|95}XK6w(#@SSk}i|_yQ`M=&Cwa@UcoIG^+ z_mAxV)A@h$KiL0IIRC)@f1b{Nu>Y^le?i_Ko&Tr%pZ))Y`=9;)Jl+57|8xF7);|E> zpY#9a`G3y;=luUz{SVIn-~0Rr=l^s5fAsuEdtN{1|0nN8?EgFA{s-^>tLMKJSpRYU zKi2=@{QrC8e{=pn_#YeHmfG3>$t}f*;rz$@|7!l*f%%W~|FQlb*Z;Xn^WQZrwY1c2 zsl60;p!3W`8pPc`nC;#&_J^!)) zU#9whH2-n_f5QFG`Tu#k|0C!BIRBsX|GEA@)PG?ApZ)(QKL3R4|L=YNf$RTs{r~;n z$$q*K!~Jje|Jnb?^PjEyf4u+C`~STE&-?!eb^o9JfA;^?{Kxfw;QR;I|LO9h_MYwm z{eS+c@cDm|{ErPd|HYsGgP;G$`Tv~%&-MRLvHzdo|FQp{C;yNAf3^SB(tq~<<@qPB M|DQ1b<)r@qzup6sVE_OC diff --git a/Apple2/Firmware_AT28C64B_EEPROM.bin b/Apple2/Firmware_AT28C64B_EEPROM.bin index bf76fd34fb9364108e612cb0b1de730aa8bfd3f9..a4112738a905bb50c8bdd3df18d8eaae98dee106 100644 GIT binary patch delta 452 zcmZp0XmHpd$uV(l;N$|1J|JeB{EtI=@>)hDJ|~dRgv93p@|ltN+(14H5}yaiXGP-k z0{Lu6d_Ewb9f{8_J;2uUul&$zw(@VQxkALB1q?f#CM!r>0|f)7xFk@V6N|VMP@D^k ixHM3l8;iIMP@D&gxGYed7mK(YP@E5oxcoIHb`b!ZZMlE| delta 420 zcmZp0XmHpd$uV(Vz~lmsJ|JeF{EtI=@;XK&J|~dRgv93p@|ltN+(14H5}yaiXGP-k z0{Lu6d_Ewb9f{8_J;2tpD@6QRz_8P5vWCPpU=VPCf&d{V2^Hf+5|e_8aUqFGL&dm} d#AKjiJV;`)P%&O4F*&FhACj0nSd58X1OSdkoHzgg diff --git a/Apple2/MenuFirmware.asm b/Apple2/MenuFirmware.asm index ad69603..374b8df 100644 --- a/Apple2/MenuFirmware.asm +++ b/Apple2/MenuFirmware.asm @@ -47,7 +47,11 @@ DriverEntry: ;since the firmware page changes to 0, this falls through to the driver Start: - jsr $fc58 + lda #$f0 ;restore COUT after PR# called + sta $36 + lda #$fd + sta $37 + jsr $fc58 ;clear screen and show menu options ldy #$00 PrintString: lda Text,y diff --git a/Apple2/MenuFirmware.lst b/Apple2/MenuFirmware.lst index 076c8ab..35625db 100644 --- a/Apple2/MenuFirmware.lst +++ b/Apple2/MenuFirmware.lst @@ -1,4 +1,4 @@ -ca65 V2.19 - Git 59c58ac +ca65 V2.18 - N/A Main file : MenuFirmware.asm Current file: MenuFirmware.asm @@ -51,50 +51,54 @@ Current file: MenuFirmware.asm 00C519 1 ;since the firmware page changes to 0, this falls through to the driver 00C519 1 00C519 1 Start: -00C519 1 20 58 FC jsr $fc58 -00C51C 1 A0 00 ldy #$00 -00C51E 1 PrintString: -00C51E 1 B9 3A C5 lda Text,y -00C521 1 F0 08 beq GetChar -00C523 1 09 80 ora #$80 -00C525 1 20 ED FD jsr $fded -00C528 1 C8 iny -00C529 1 D0 F3 bne PrintString -00C52B 1 -00C52B 1 GetChar: -00C52B 1 20 1B FD jsr $fd1b -00C52E 1 38 sec ;subtract ascii "1" to get 0 - 3 from "1" to "4" -00C52F 1 E9 B1 sbc #$b1 -00C531 1 0A asl ;put in top nibble as EPROM page -00C532 1 0A asl -00C533 1 0A asl -00C534 1 0A asl -00C535 1 09 0F ora #$0f ;set all flags high -00C537 1 4C 0E C5 jmp PageJump -00C53A 1 -00C53A 1 Text: -00C53A 1 -00C53A 1 41 70 70 6C .byte "Apple2-IO-RPi",$8d -00C53E 1 65 32 2D 49 -00C542 1 4F 2D 52 50 -00C548 1 28 63 29 32 .byte "(c)2020-2021 Terence J. Boldt",$8d,$8d -00C54C 1 30 32 30 2D -00C550 1 32 30 32 31 -00C567 1 31 2E 20 42 .byte "1. Boot",$8d -00C56B 1 6F 6F 74 8D -00C56F 1 32 2E 20 46 .byte "2. File Access",$8d -00C573 1 69 6C 65 20 -00C577 1 41 63 63 65 -00C57E 1 33 2E 20 43 .byte "3. Command Line",$8d,$00 -00C582 1 6F 6D 6D 61 -00C586 1 6E 64 20 4C -00C58F 1 -00C58F 1 end: -00C58F 1 60 rts -00C590 1 -00C590 1 00 00 00 00 .repeat 251-