Several fixes, binary and srec files added
This commit is contained in:
parent
de4edffe30
commit
7d67a7b4d5
Binary file not shown.
941
AppleIISd.lst
941
AppleIISd.lst
File diff suppressed because it is too large
Load Diff
114
AppleIISd.s
114
AppleIISd.s
|
@ -13,7 +13,7 @@
|
|||
DAT
|
||||
|
||||
XC ; enable 65C02 code
|
||||
DEBUG = 1
|
||||
DEBUG = 0
|
||||
DO DEBUG
|
||||
ORG $8000
|
||||
ELSE
|
||||
|
@ -83,8 +83,8 @@ DUMMY = $FF
|
|||
FIN
|
||||
TAX ; X holds now SLOT16
|
||||
|
||||
JSR INIT
|
||||
BIT $CFFF
|
||||
JSR INIT
|
||||
|
||||
*
|
||||
* TODO: check for init error
|
||||
|
@ -404,27 +404,26 @@ GETR3 JSR GETR1 ; get R1 first
|
|||
*
|
||||
********************************
|
||||
|
||||
BLOCK PHY ; save Y
|
||||
LDY SLOT
|
||||
BLOCK PHX ; save X
|
||||
PHY ; save Y
|
||||
LDX SLOT
|
||||
LDA $46 ; store block num
|
||||
STA R33,Y ; in R30-R33
|
||||
STA R33,X ; in R30-R33
|
||||
LDA $47
|
||||
STA R32,Y
|
||||
STA R32,X
|
||||
LDA #0
|
||||
STA R31,Y
|
||||
STA R30,Y
|
||||
STA R31,X
|
||||
STA R30,X
|
||||
|
||||
PHX
|
||||
LDY #9
|
||||
LDX SLOT ; ASL can't be done with Y
|
||||
LDY #9 ; ASL can't be used with Y
|
||||
:LOOP ASL R33,X ; mul block num
|
||||
ROL R32,X ; by 512 to get
|
||||
ROL R31,X ; real address
|
||||
ROL R30,X
|
||||
DEY
|
||||
BNE :LOOP
|
||||
PLX
|
||||
PLY ; restore Y
|
||||
PLX ; restore X
|
||||
RTS
|
||||
|
||||
|
||||
|
@ -460,16 +459,7 @@ COMMAND PHY ; save Y
|
|||
STA DATA,X ; dummy crc
|
||||
:WAIT2 BIT CTRL,X
|
||||
BPL :WAIT2
|
||||
:GETR1 LDA #DUMMY
|
||||
STA DATA,X ; get R1
|
||||
:WAIT3 BIT CTRL,X
|
||||
BPL :WAIT3
|
||||
LDA DATA,X ; get response
|
||||
*
|
||||
* TODO: check for error!
|
||||
*
|
||||
CMP #$FE
|
||||
BNE :GETR1 ; wait for $FE
|
||||
JSR GETR1
|
||||
PLY ; restore Y
|
||||
RTS
|
||||
|
||||
|
@ -525,13 +515,23 @@ READ JSR BLOCK ; calc block address
|
|||
LDA #$51 ; send CMD17
|
||||
JSR COMMAND ; send command
|
||||
|
||||
PHY
|
||||
:GETTOK LDA #DUMMY ; get data token
|
||||
STA DATA,X
|
||||
:WAIT BIT CTRL,X
|
||||
BPL :WAIT
|
||||
LDA DATA,X ; get response
|
||||
*
|
||||
* TODO: check for error!
|
||||
*
|
||||
CMP #$FE
|
||||
BNE :GETTOK ; wait for $FE
|
||||
|
||||
LDY #2 ; read data from card
|
||||
:LOOPY STZ WORK
|
||||
:LOOPW LDA #DUMMY
|
||||
STA DATA,X
|
||||
:WAIT4 BIT CTRL,X
|
||||
BPL :WAIT4
|
||||
:WAIT1 BIT CTRL,X
|
||||
BPL :WAIT1
|
||||
LDA DATA,X
|
||||
STA ($44)
|
||||
INC $44
|
||||
|
@ -541,21 +541,12 @@ READ JSR BLOCK ; calc block address
|
|||
BNE :LOOPW
|
||||
DEY
|
||||
BNE :LOOPY
|
||||
PLY
|
||||
|
||||
JSR GETR3 ; read 2 bytes crc
|
||||
LDA #SSNONE
|
||||
STA SS,X ; disable /CS
|
||||
CLC ; no error
|
||||
LDA #$00
|
||||
PLY ; restore Y
|
||||
RTS
|
||||
|
||||
:ERROR LDA #SSNONE
|
||||
STA SS,X ; disable /CS
|
||||
SEC ; an error occured
|
||||
LDA #$27
|
||||
PLY ; restore Y
|
||||
RTS
|
||||
|
||||
|
||||
|
@ -569,27 +560,35 @@ READ JSR BLOCK ; calc block address
|
|||
* C Clear - No error
|
||||
* Set - Error
|
||||
* A $00 - No error
|
||||
* $27 - Bad block number
|
||||
* $27 - I/O error or bad block number
|
||||
* $28 - No card inserted
|
||||
* $2B - Card write protected
|
||||
*
|
||||
********************************
|
||||
|
||||
* TODO: check for card detect and write protect!
|
||||
|
||||
WRITE JSR BLOCK ; calc block address
|
||||
|
||||
LDA #SS0 ; enable /CS
|
||||
STA SS,X
|
||||
LDA #$58 ; send CMD24
|
||||
JSR COMMAND ; send command
|
||||
|
||||
PHY
|
||||
LDA #DUMMY
|
||||
STA DATA,X ; send dummy
|
||||
:WAIT1 BIT CTRL,X
|
||||
BPL :WAIT1
|
||||
LDA #$FE
|
||||
STA DATA,X ; send data token
|
||||
:WAIT2 BIT CTRL,X
|
||||
BPL :WAIT2
|
||||
|
||||
LDY #2 ; send data to card
|
||||
:LOOPY STZ WORK
|
||||
:LOOPW LDA ($44)
|
||||
STA DATA,X
|
||||
:WAIT4 BIT CTRL,X
|
||||
BPL :WAIT4
|
||||
:WAIT3 BIT CTRL,X
|
||||
BPL :WAIT3
|
||||
INC $44
|
||||
BNE :INW
|
||||
INC $45 ; inc msb on page boundary
|
||||
|
@ -600,17 +599,46 @@ WRITE JSR BLOCK ; calc block address
|
|||
|
||||
LDY #2 ; send 2 dummy crc bytes
|
||||
:CRC STA DATA,X
|
||||
:WAIT5 BIT CTRL,X
|
||||
BPL :WAIT5
|
||||
:WAIT4 BIT CTRL,X
|
||||
BPL :WAIT4
|
||||
DEY
|
||||
BNE :CRC
|
||||
PLY
|
||||
|
||||
LDA #DUMMY ; get data response
|
||||
STA DATA,X
|
||||
:WAIT5 BIT CTRL,X
|
||||
BPL :WAIT5
|
||||
LDA DATA,X
|
||||
AND #$1F
|
||||
CMP #$05
|
||||
BNE :ERROR ; check for write error
|
||||
|
||||
:WAIT6 LDA #DUMMY ; wait for write cycle
|
||||
STA DATA,X ; to complete
|
||||
:WAIT61 BIT CTRL,X
|
||||
BPL :WAIT61
|
||||
LDA DATA,X
|
||||
CMP #$00
|
||||
BEQ :WAIT6
|
||||
|
||||
LDA #SSNONE ; disable /CS
|
||||
STA SS,X
|
||||
CLC ; no error
|
||||
LDA #0
|
||||
PLY
|
||||
RTS
|
||||
|
||||
:ERROR
|
||||
:WAIT7 LDA #DUMMY ; wait for write cycle
|
||||
STA DATA,X ; to complete
|
||||
:WAIT71 BIT CTRL,X
|
||||
BPL :WAIT71
|
||||
LDA DATA,X
|
||||
CMP #$00
|
||||
BEQ :WAIT7
|
||||
LDA #SSNONE
|
||||
STA SS,X ; disable /CS
|
||||
SEC ; an error occured
|
||||
LDA #$27
|
||||
RTS
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,62 @@
|
|||
S00600004844521B
|
||||
S1130000A220A000A203863C2058FFBABD0001290B
|
||||
S11300100F853D09C08DF8070A0A0A0A852BAA2C08
|
||||
S1130020FFCF2000C9AE31BFBD32BF2970C52BF050
|
||||
S113003032CA10F4AE31BFE00DD006203AFF4C6353
|
||||
S1130040C8BD31BF9D32BFCAD0F7A904052B8D327C
|
||||
S1130050BFEE31BFA53D0AAAA9649D10BFADF80744
|
||||
S11300609D11BF60D82058FFBABD0001290F853DFE
|
||||
S113007009C08DF8070A0A0A0A852BAA2CFFCFA506
|
||||
S113008042C900F010C901F00FC902F00EC903F013
|
||||
S11300900D38A901604CA8CA4CB0CA4CFACA4C8AA3
|
||||
S11300A0CB00000000000000000000000000000081
|
||||
S11300B0000000000000000000000000000000003C
|
||||
S11300C0000000000000000000000000000000002C
|
||||
S11300D0000000000000000000000000000000001C
|
||||
S11300E0000000000000000000000000000000000C
|
||||
S11300F0000000000000000000000000FFFF476453
|
||||
S1130100D8A9039D81C0A90F9D83C0A9079D82C062
|
||||
S1130110A00AA9FF9D80C03C81C010FB88D0F5A92E
|
||||
S11301200E9D83C0A98E8540A9CB854120D7C920C7
|
||||
S1130130EBC9C901D039A99A8540A9CB854120D7FB
|
||||
S1130140C92006CAC901D02AA9A68540A9CB8541E0
|
||||
S113015020D7C920EBC9A9AC8540A9CB854120D7BC
|
||||
S1130160C920EBC9C901F0E0C900D0034CACC94CAB
|
||||
S1130170C8C9A9A68540A9CB854120D7C9A9B285FC
|
||||
S113018040A9CB854120D7C920EBC9C901F0E3C9F7
|
||||
S113019000D0034CACC9A9948540A9CB854120D794
|
||||
S11301A0C920EBC9C901F0F6C900D01CA9A085403B
|
||||
S11301B0A9CB854120D7C920EBC9C900D00A18A012
|
||||
S11301C000900838A028B00338A027A90F9D83C049
|
||||
S11301D0A9009D82C098605AA000B1409D80C03C97
|
||||
S11301E081C010FBC8C00690F17A60A9FF9D80C051
|
||||
S11301F03C81C010FBBD80C0853C2980D0EDA9FFA7
|
||||
S11302009D80C0A53C6020EBC9485AA004A9FF9D6D
|
||||
S113021080C03C81C010FBBD80C04888D0EFA43DA5
|
||||
S11302206899F805689978056899F80468997804D4
|
||||
S11302307AA9FF9D80C06860DA5AA63DA5469DF85C
|
||||
S113024005A5479D7805A9009DF8049D7804A0099B
|
||||
S11302501EF8053E78053EF8043E780488D0F17A0D
|
||||
S1130260FA605AA43D9D80C03C81C010FBB978045B
|
||||
S11302709D80C03C81C010FBB9F8049D80C03C81C6
|
||||
S1130280C010FBB978059D80C03C81C010FBB9F853
|
||||
S1130290059D80C03C81C010FBA9FF9D80C03C81AE
|
||||
S11302A0C010FB20EBC97A6018A900A2FFA0FF6070
|
||||
S11302B02038CAA90E9D83C0A9512062CAA9FF9DF6
|
||||
S11302C080C03C81C010FBBD80C0C9FED0EFA0023D
|
||||
S11302D0643CA9FF9D80C03C81C010FBBD80C092DE
|
||||
S11302E044E644D002E645E63CD0E788D0E2200666
|
||||
S11302F0CAA90F9D83C018A900602038CAA90E9D01
|
||||
S113030083C0A9582062CAA9FF9D80C03C81C01047
|
||||
S1130310FBA9FE9D80C03C81C010FBA002643CB2DE
|
||||
S1130320449D80C03C81C010FBE644D002E645E613
|
||||
S11303303CD0EC88D0E7A0029D80C03C81C010FB7B
|
||||
S113034088D0F5A9FF9D80C03C81C010FBBD80C052
|
||||
S1130350291FC905D01AA9FF9D80C03C81C010FB8C
|
||||
S1130360BD80C0C900F0EFA90F9D83C018A900602B
|
||||
S1130370A9FF9D80C03C81C010FBBD80C0C900F0B6
|
||||
S1130380EFA90F9D83C038A9276038A901604000F8
|
||||
S1130390000000954100000000F948000001AA8710
|
||||
S11303A05000000200FF7700000000656940000073
|
||||
S10B03B000776900000000FF62
|
||||
S9030000FC
|
Loading…
Reference in New Issue