Fix for unintended PGMEN usage

This commit is contained in:
Florian Reitz 2020-08-12 11:49:53 +02:00
parent 320602e692
commit 95e3c94914
7 changed files with 100 additions and 101 deletions

2
.gitignore vendored
View File

@ -219,3 +219,5 @@ VHDL/_pace\.ucf
VHDL/AppleIISd\.tim
VHDL/AppleIISd\.jed
Firmware/AppleIISd.bin

Binary file not shown.

View File

@ -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

Binary file not shown.

View File

@ -48,7 +48,6 @@ KNOWNRTS := $FF58
OAPPLE := $C061 ; open apple key
DATA := $C080
CTRL := DATA+1
DIV := DATA+2
SS := DATA+3
; Constants

View File

@ -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

View File

@ -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.