From 95e3c94914333012b448a1952ac39938e375997f Mon Sep 17 00:00:00 2001 From: Florian Reitz Date: Wed, 12 Aug 2020 11:49:53 +0200 Subject: [PATCH] Fix for unintended PGMEN usage --- .gitignore | 2 + Binary/AppleIISd.bin | Bin 2048 -> 2048 bytes Binary/AppleIISd.hex | 178 ++++++++++++++++++------------------- Binary/Flasher.dsk | Bin 143360 -> 143360 bytes Firmware/src/AppleIISd.inc | 1 - Firmware/src/AppleIISd.s | 18 ++-- README.md | 2 + 7 files changed, 100 insertions(+), 101 deletions(-) diff --git a/.gitignore b/.gitignore index 3096d2b..0d6d309 100644 --- a/.gitignore +++ b/.gitignore @@ -219,3 +219,5 @@ VHDL/_pace\.ucf VHDL/AppleIISd\.tim VHDL/AppleIISd\.jed + +Firmware/AppleIISd.bin diff --git a/Binary/AppleIISd.bin b/Binary/AppleIISd.bin index d0ea52268a246cf00d6d09f2cd69f255f6616b60..5f95df8574b07bbac501c1c4c51bce7a6b549f4f 100644 GIT binary patch delta 587 zcmZn=Xb_m7#mGKU+ej$y)Q0;jxmsOQTvFUuGPb%Y!Gp1M8SRHArnE5(+wvXfM9y*yv7478Rs@n7G#vH*Kc)Ld9u|}A^xO7 z@yU~n7gASRBSgADB4JDHcm7~Kx$1(~N_T`*@yV6J$h?z`A0C`!xS+Pu7a*89au<7&$rj-n< z7BFPY^k6t~fOW$6t_4hs7)~-KtYm3;QS;)Ag7XA8P-2qT0`{H1 z&rE*6qQ;?rY6BCefP(d8K2{mt|7Rw8oj4#l;hRK)g7ai^Ry~QlGZPpSmf0<_2fADV o!MQ%UmbF@V>*`M)Znm$ClO5Ou02n#~nE(I) delta 601 zcmZn=Xb_m7#V9sW+eoPH)Q0;jxmsOQTvFUuGPb%Y)J@Dcm$5%Jfn}wBgXqczo8|)- zSQQvfY~WmK>!Gp1L?L|QA(Q%u(+wvXfM9y*O6IwZ2lh4};AEWJd|)N}+@=EyxK{q3 z+i<|9@qobZjtgIba+?1@a`vqbD^IpMD&(J3Xg+z8@j~iKZ-mG!kVx1P`<*{nPp-P) zwK5zb)qHYgGBWQZ;|HM!CmAlNt&Bwo&zfAzDDLzAgb&L}B)uy$5h_4-es~Pj$Lw?W z#7b8*iEls&^_780qLUvms_L&~0D5Rff`Vf~K~8FHba0A7nW3JMo}q$9vZj%Np@o85 zPJU5lVxB@!YGz55!el+BSdQkC9#IQed{$1L%rt|sd9n_(j%vXvpSn{%&rhvnQ1CuA zfoY}oqW=s2Cn%gh2@jk=1@XzX%+bQ$r#7S`i$?&(Uo+3}eRt-9`U1v{9!utiwrOS*@<2!4oFV;CXt{JJXxJpPonP3 v1jdAAc1!GmE>}Qso=?tYtrk9dI^|5^ne%5%&)hll3sLkq86goE diff --git a/Binary/AppleIISd.hex b/Binary/AppleIISd.hex index acf1b38..dfa2055 100644 --- a/Binary/AppleIISd.hex +++ b/Binary/AppleIISd.hex @@ -1,102 +1,102 @@ :10000000A220A200A203A20078A960853F203F00A1 :10001000BABD0001588DF807290F853FA80A0A0AC2 -:100020000A853EAA2CFFCFA000B916C9F00D0980A1 +:100020000A853EAA2CFFCFA000B907C9F00D0980B0 :10003000995007C810F3A9C520A8FC2C61C0100B6B :10004000ADF8073A854164406C40002000C8C90003 -:10005000D0EEA9088545644464476446207ECAB052 -:10006000DFA90A854564446447A9018546207ECA04 +:10005000D0EEA9088545644464476446206ECAB062 +:10006000DFA90A854564446447A9018546206ECA14 :10007000B0CE4C01081890013808FAA004B93D0030 :10008000488810F9863D78A960853F203F00BABDB9 :100090000001588DF807290F853FA80A0A0A0A852A -:1000A0003EAA2CFFCF203FCA9004A92F8015A9801B +:1000A0003EAA2CFFCF202FCA9004A92F8015A9802B :1000B0003C83C0D0052000C8B009A53D4828B03415 -:1000C0002057CADAA63F9D7804689DF804989D7869 +:1000C0002047CADAA63F9D7804689DF804989D7879 :1000D0000508689DF805A00068993D00C8C0059016 :1000E000F7BDF80548BD780548BDF80448BD78045B -:1000F000FA7A2860182058CB80C900000000977554 -:10010000A9039D81C0BD83C009019D83C0A9079D2E -:1001100082C0A00AA9FF9D80C03C81C010FB88D08E -:10012000F5BD83C029FE9D83C0A93F8540A9C9852F -:1001300041206FC92083C9C901D065A94B8540A959 -:10014000C98541206FC9209AC9C901D056A43FB9B9 -:10015000F805C9AAD04AA9578540A9C98541206F89 -:10016000C92083C9A9638540A9C98541206FC920D9 -:1001700083C9C901F0E0C900D026A95D8540A9C99D -:100180008541206FC9209AC9C900D014A43FB9780D -:10019000042940F048BD83C009109D83C04CEFC8BE -:1001A0004C04C9A9578540A9C98541206FC9A969CF -:1001B0008540A9C98541206FC92083C9C901F0E3E1 -:1001C000C900D0034CDDC8A9458540A9C985412097 -:1001D0006FC92083C9C901F0F6C900D027A951858C -:1001E00040A9C98541206FC92083C9C900D015BD68 -:1001F00083C009809D83C0BD81C009049D81C01852 -:10020000A000900338A027BD83C009019D83C0A929 -:10021000009D82C09860204170706C655D5B536486 -:100220002076312E322E3120286329323031382089 -:10023000466C6F7269616E20526569747A20004065 -:1002400000000000954100000000F948000001AAEC -:10025000875000000200FF7700000000FF7A0000D6 -:100260000000FF6940000000776900000000FF5AAD -:10027000A000B1409D80C03C81C010FBC8C006906A -:10028000F17A60A9FF9D80C03C81C010FBBD80C099 -:1002900030F148A9FF9D80C068602083C9485AA0FA -:1002A000044CA9C9A9FF9D80C03C81C010FBBD8042 -:1002B000C04888D0EFA43F6899F805689978056828 -:1002C00099F804689978047AA9FF9D80C06860DA7B -:1002D0005AA63FA43EA5469DF805A5479D78059ED4 -:1002E000F8049E78049845432970F005A9029DF80A -:1002F0000424431007BDF8041A9DF804A91039839B -:10030000C0D011A0091EF8053E78053EF8043E78DD -:100310000488D0F17AFA605AA43F9D80C0B978046D -:100320009D80C0B9F8049D80C0B978059D80C0B992 -:10033000F8059D80C0A9FF9D80C02083C97A6048D0 -:10034000A9403C83C018F00138686048A9203C836C -:10035000C018F001386860A542F00CC901F00BC963 -:1003600002F00AA90138604C70CA4C7ECA4CE7CA38 -:10037000A900204BCA9002A92BA2FFA0FF6020CFAA -:10038000C9BD83C029FE9D83C0A9512017CAC900D9 -:10039000D050A9FF9D80C0BD80C0C9FED0F4BD81F2 -:1003A000C009109D81C0A9FF9D80C0A000BD80C074 -:1003B0009144C8D0F8E645BD80C09144C8D0F8C685 -:1003C00045BD80C0BD80C0BD80C0BD81C029EF9D3E -:1003D00081C018A9000848BD83C009019D83C06879 -:1003E000286038A92780EE204BCAB06720CFC9BD4E -:1003F00083C029FE9D83C0A9582017CAC900D04ECA -:10040000A9FF9D80C0A9FE9D80C0A000B1449D8031 -:10041000C0C8D0F8E645B1449D80C0C8D0F8C645F4 -:10042000A9FF9D80C09D80C09D80C0BD80C0291F48 -:10043000C905D01A18A9000848A9FF9D80C0BD8031 -:10044000C0F0F6BD83C009019D83C068286038A94B -:100450002780E438A92B80DFA004B9480048881021 -:10046000F9BABD0D0185481869039D0D01BD0E0146 -:10047000854969009D0E01A001B1488542C8B14877 -:10048000AAC8B14885498648A901A642E00AB01A1F -:10049000B248DDEECCD027A001B148A43F99780640 -:1004A0008A0AAA20C2CBB002A900AAA00068994873 -:1004B00000C8C00590F78AA002A200C90160A90483 -:1004C00080E87CF8CC2053CCA43FB97806D018A59E -:1004D0004CF004A9213860A904924AA007B90BCDB9 -:1004E000914A88D0F81860A64CF016CAF008CACA1B -:1004F000F00FA9213860A901924AA8A900914A18D1 -:1005000060A9E8A63E203FCAB0020910204BCA905D -:10051000020904924AA001A9FF914AC8914AC8A9B8 -:1005200000914AA54CF00CA004B90FCD914AC8C067 -:100530001990F618602053CCA64CF00FCAF00CCAE4 -:10054000F006CAF00ACAF003A92138A9001860A968 -:100550001F3860A002B148854AC8B148854BC8B170 -:1005600048854C60207ECC900160A63EA43F4C7E26 -:10057000CA207ECC900160A63EA43F4CE7CAB97861 -:1005800006F044C901F00EC902F00EC903F010C90B -:1005900004F0118032A53E8010A53E0980800AA596 -:1005A0003E3A8005A53E3A09808543A002B14885C0 -:1005B00044C8B1488545C8B1488546C8B148854753 -:1005C000C8B148D0061860A9113860A92D3860B9A3 -:1005D0007806F004A9001860A9113860B9780618E7 -:1005E000F003A9113860A9013860A9273860030316 -:1005F0000301030101010404C5CB64CC71CCCFCC51 -:1006000035CCDCCCE6CCE6CCEACCEACC4000000B26 -:10061000120000104150504C455D5B534420202097 -:100620002020202002000B1200000000000000002B +:1000F000FA7A2860182048CB80C900000000977564 +:100100009E81C0A9019D83C0A00AA9FF9D80C03C1B +:1001100081C010FB88D0F5BD83C029FE9D83C0A996 +:100120002F8540A9C98541205FC92073C9C901D065 +:1001300065A93B8540A9C98541205FC9208AC9C9F5 +:1001400001D056A43FB9F805C9AAD04AA9478540AD +:10015000A9C98541205FC92073C9A9538540A9C990 +:100160008541205FC92073C9C901F0E0C900D026CC +:10017000A94D8540A9C98541205FC9208AC9C90008 +:10018000D014A43FB978042940F048BD83C00910B9 +:100190009D83C04CE5C84CFAC8A9478540A9C985CC +:1001A00041205FC9A9598540A9C98541205FC9205F +:1001B00073C9C901F0E3C900D0034CD3C8A9358580 +:1001C00040A9C98541205FC92073C9C901F0F6C99A +:1001D00000D027A9418540A9C98541205FC9207366 +:1001E000C9C900D015BD83C009809D83C0BD81C031 +:1001F00009049D81C018A000900338A027BD83C0CA +:1002000009019D83C09860204170706C655D5B53EF +:10021000642076312E322E3220286329323032305B +:1002200020466C6F7269616E20526569747A004075 +:1002300000000000954100000000F948000001AAFC +:10024000875000000200FF7700000000FF7A0000E6 +:100250000000FF6940000000776900000000FF5ABD +:10026000A000B1409D80C03C81C010FBC8C006907A +:10027000F17A60A9FF9D80C03C81C010FBBD80C0A9 +:1002800030F148A9FF9D80C068602073C9485AA01A +:10029000044C99C9A9FF9D80C03C81C010FBBD8062 +:1002A000C04888D0EFA43F6899F805689978056838 +:1002B00099F804689978047AA9FF9D80C06860DA8B +:1002C0005AA63FA43EA5469DF805A5479D78059EE4 +:1002D000F8049E78049845432970F005A9029DF81A +:1002E0000424431007BDF8041A9DF804A9103983AB +:1002F000C0D011A0091EF8053E78053EF8043E78EE +:100300000488D0F17AFA605AA43F9D80C0B978047D +:100310009D80C0B9F8049D80C0B978059D80C0B9A2 +:10032000F8059D80C0A9FF9D80C02073C97A6048F0 +:10033000A9403C83C018F00138686048A9203C837C +:10034000C018F001386860A542F00CC901F00BC973 +:1003500002F00AA90138604C60CA4C6ECA4CD7CA78 +:10036000A900203BCA9002A92BA2FFA0FF6020BFDA +:10037000C9BD83C029FE9D83C0A9512007CAC900F9 +:10038000D050A9FF9D80C0BD80C0C9FED0F4BD8102 +:10039000C009109D81C0A9FF9D80C0A000BD80C084 +:1003A0009144C8D0F8E645BD80C09144C8D0F8C695 +:1003B00045BD80C0BD80C0BD80C0BD81C029EF9D4E +:1003C00081C018A9000848BD83C009019D83C06889 +:1003D000286038A92780EE203BCAB06720BFC9BD7E +:1003E00083C029FE9D83C0A9582007CAC900D04EEA +:1003F000A9FF9D80C0A9FE9D80C0A000B1449D8042 +:10040000C0C8D0F8E645B1449D80C0C8D0F8C64504 +:10041000A9FF9D80C09D80C09D80C0BD80C0291F58 +:10042000C905D01A18A9000848A9FF9D80C0BD8041 +:10043000C0F0F6BD83C009019D83C068286038A95B +:100440002780E438A92B80DFA004B9480048881031 +:10045000F9BABD0D0185481869039D0D01BD0E0156 +:10046000854969009D0E01A001B1488542C8B14887 +:10047000AAC8B14885498648A901A642E00AB01A2F +:10048000B248DDDECCD027A001B148A43F99780660 +:100490008A0AAA20B2CBB002A900AAA00068994893 +:1004A00000C8C00590F78AA002A200C90160A90493 +:1004B00080E87CE8CC2043CCA43FB97806D018A5CE +:1004C0004CF004A9213860A904924AA007B9FBCCDA +:1004D000914A88D0F81860A64CF016CAF008CACA2B +:1004E000F00FA9213860A901924AA8A900914A18E1 +:1004F00060A9E8A63E202FCAB0020910203BCA908E +:10050000020904924AA001A9FF914AC8914AC8A9C8 +:1005100000914AA54CF00CA004B9FFCC914AC8C088 +:100520001990F618602043CCA64CF00FCAF00CCA04 +:10053000F006CAF00ACAF003A92138A9001860A978 +:100540001F3860A002B148854AC8B148854BC8B180 +:1005500048854C60206ECC900160A63EA43F4C6E56 +:10056000CA206ECC900160A63EA43F4CD7CAB97891 +:1005700006F044C901F00EC902F00EC903F010C91B +:1005800004F0118032A53E8010A53E0980800AA5A6 +:100590003E3A8005A53E3A09808543A002B14885D0 +:1005A00044C8B1488545C8B1488546C8B148854763 +:1005B000C8B148D0061860A9113860A92D3860B9B3 +:1005C0007806F004A9001860A9113860B9780618F7 +:1005D000F003A9113860A9013860A9273860030326 +:1005E0000301030101010404B5CB54CC61CCBFCCA1 +:1005F00025CCCCCCD6CCD6CCDACCDACC4000000B97 +:10060000120000104150504C455D5B5344202020A7 +:100610002020202002000B1200000000000000003B +:1006200000000000000000000000000000000000CA :1006300000000000000000000000000000000000BA :1006400000000000000000000000000000000000AA :10065000000000000000000000000000000000009A diff --git a/Binary/Flasher.dsk b/Binary/Flasher.dsk index 17081ad391ac7f251d178c319d9cb7ef854475e5..9a20d26ed06eb439bc4604fd8d8ca788b6715265 100644 GIT binary patch delta 792 zcmZ8fOGs2v7(V|zoQFi$P#PoRM3~yxj17i@Hfp}^On1c6>><)fiU~4GQz1R@%HYNb zCM8cUjGHewv$`e`F2qZ#x!1e6Q6#h|K>`;oW@S>LovFoG{BStm_wjxIe}0a*VHY>- zveOKRyqg5q(g|~~4bakKXB8Bju5D=%8UlgVde8YlGeW2pSrM|MgT-zqLYs(PN}WsJ zvU8sit_e~ToQWeG4@VB{=}&`6B|pCH3gbFb&V$Dl(c=(a@Xu8X5e;X+I(fvy1J~=d zHoZ$<)eCf8|H$eSs~Uu|2^WA^=(BDVO0dY!RZk6NjX4we)tYRgC?TO+Q#?v4*7)}^ z$uxsh2vdu=^>9nab^2WO@=%uHnio?sQC{7qN{z2|`DEr6%|87p`KP zrXr)6?oEpd-DQV_7VD=)2Qb_7Fs>aO?C?`$^;>P}g+kIUT ze5t4J&VAy)0G;-z%3qf(!W5Zh=&)ksNRDGWR{xOIzhm(ay%%mmS)=7K6b2X!U)o)j1*OA>wcs{YJ-h`l7=!Yvm+xny-rJUO^Rnb zaB%D~!q=qmBl$P1>rZQXEn`Ygk=kTNv+zDi&;BQDGog^y{=*_8FC8ti=#>%0VVNFL zToQ_#E2KikPln(W*oZp>zC#gB{z9Fj4c+zKO%z5OafA$np!}#;i(9By%%fseOfjq& zC1uC_Ilf3P!%gIE2+ExNny9jGjL6+tFoC7*a{HADF#VcISZ6sajK3_2mB?>OWcV=r E8}QRfHvj+t delta 828 zcma)(&ubG=5XW~-v}2MrqV=Lk;;bzO6QPn#ixq1(5RrOVFprIgG??IBrODU!9!YC@tO6S|Ohz!eS%Zl@`1Kza}^pVazd zY8qrjjaJ^CraKdHlw%^EUE0~!@IOxG6Lu`2gH{l+Luo^-NWwraj%2=@vxBP@+VP)2)h6P diff --git a/Firmware/src/AppleIISd.inc b/Firmware/src/AppleIISd.inc index 5659e3e..e1838b9 100644 --- a/Firmware/src/AppleIISd.inc +++ b/Firmware/src/AppleIISd.inc @@ -48,7 +48,6 @@ KNOWNRTS := $FF58 OAPPLE := $C061 ; open apple key DATA := $C080 CTRL := DATA+1 -DIV := DATA+2 SS := DATA+3 ; Constants diff --git a/Firmware/src/AppleIISd.s b/Firmware/src/AppleIISd.s index 7e17e4a..c895db1 100644 --- a/Firmware/src/AppleIISd.s +++ b/Firmware/src/AppleIISd.s @@ -1,10 +1,10 @@ ;******************************* ; ; Apple][Sd Firmware -; Version 1.2.1 +; Version 1.2.2 ; Main source ; -; (c) Florian Reitz, 2017 - 2018 +; (c) Florian Reitz, 2017 - 2020 ; ; X register usually contains SLOT16 ; Y register is used for counting or SLOT @@ -228,13 +228,9 @@ DRIVER: CLC ; ProDOS entry ;******************************* .segment "EXTROM" -INIT: LDA #$03 ; set SPI mode 3 - STA CTRL,X - LDA SS,X - ORA #SS0 ; set CS high +INIT: STZ CTRL,X ; reset SPI controller + LDA #SS0 ; set CS high STA SS,X - LDA #7 ; set 400 kHz - STA DIV,X LDY #10 LDA #DUMMY @@ -362,13 +358,13 @@ INIT: LDA #$03 ; set SPI mode 3 @END1: LDA SS,X ; set CS high ORA #SS0 STA SS,X - LDA #0 ; set div to 2 - STA DIV,X TYA ; retval in A RTS -TEXT: .asciiz " Apple][Sd v1.2.1 (c)2018 Florian Reitz " +TEXT: .asciiz " Apple][Sd v1.2.2 (c)2020 Florian Reitz" + .assert(*-TEXT)=40, error, "TEXT must be 40 bytes long" + CMD0: .byt $40, $00, $00 .byt $00, $00, $95 diff --git a/README.md b/README.md index f946d9b..f5cdc73 100644 --- a/README.md +++ b/README.md @@ -112,6 +112,8 @@ The control registers of the *AppleIISd* are mapped to the usual I/O space at ** **DATA** SPI data register - Is used for both input and output. When the register is written to, the controller will output the byte on the SPI bus. When it is read from, it reflects the data that was received over the SPI bus. +**PGMEN** Program Enable - Enable programing of the internal firmware eeprom. Should be reset immediately after writing to the device. + **ECE** External Clock Enable - This bit enables the the external clock input to the SPI controller. In the *AppleIISd*, this effectively switches the SPI clock between 500kHz (ECE = 0) and 3.5MHz (ECE = 1). **FRX** Fast Receive mode - When set to 1, fast receive mode triggers shifting upon reading or writing the SPI Data register. When set to 0, shifting is only triggered by writing the SPI data register.