annotate level1/modules/llcoco3fpga.asm @ 3139:96cb9d947e0b

New low-level driver for CoCo3FPGA SD card interface From Gary Becker. Add llcoco3fpga.asm to level1/modules
author Bill Pierce <merlinious999@gmail.com>
date Sat, 04 Feb 2017 11:06:18 +0100
parents
children c505ae3120c4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3139
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
1 *******************************************************************
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
2 * llsd - Low-level SDHC/SD/MMC driver
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
3 *
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
4 * This driver talks to the SD card interface on the DE1 utilizing the CoCo3FPGA
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
5 *
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
6 * $FF64 (Control Register Write)
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
7 * Bit 7 : SD Enable
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
8 * Bit 6 : Enable Interrupt
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
9 * Bits 5-1 : not used
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
10 * Bit 0 : SPI Device Select #1 (DE1 SD Card)
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
11 *
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
12 * $FF64 (Status Register Read)
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
13 * Bit 7 : IRQ Active
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
14 * Bits 6-2 : not used
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
15 * Bit 1 : SD Card Locked (Write Protect)
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
16 * Bit 0 : SD Installed
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
17 *
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
18 * $FF65 (Data Register R/W)
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
19 *
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
20 * Edt/Rev YYYY/MM/DD Modified by
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
21 * Comment
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
22 * ------------------------------------------------------------------
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
23 * 1 2012/06/16 Gary Becker
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
24 * Rewritten to work with 8 bit SPI on CoCo3FPGA
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
25 * 2 2015/06/06 Gary Becker
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
26 * Removed any code to enable multiple slots (single slot only)
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
27
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
28 *Level EQU 2
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
29
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
30 NAM llcoco3fpga
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
31 TTL Low-level SDHC/SD/MMC driver
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
32
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
33 USE defsfile
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
34 USE rbsuper.d
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
35
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
36 tylg SET Sbrtn+Objct
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
37 atrv SET ReEnt+rev
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
38 rev SET 0
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
39 edition SET 4
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
40
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
41 MOD eom,name,tylg,atrv,start,0
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
42
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
43 ORG V.LLMem
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
44 * Low-level driver static memory area
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
45 SEC_CNT RMB 1 Number of sectors to transfer
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
46 SEC_LOC RMB 2 Where they are or where they go
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
47 SEC_ADD RMB 3 LSN of sector
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
48 SDVersion RMB 1 0 = Byte Addressable SD
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
49 * !0 = Sector Addressable SD
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
50 CMDStorage RMB 1 Command storage area for read/write CMDs
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
51 SD_SEC_ADD RMB 4 Four bytes because some devices are byte addressable
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
52 CMDCRC RMB 1
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
53
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
54 **************************************
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
55 * Command bytes storage area
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
56 **************************************
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
57 CMD0 fcb $40,$00,$00,$00,$00,$95
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
58 *CMD1 fcb $41,$00,$00,$00,$00,$95
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
59 CMD8 fcb $48,$00,$00,$01,$AA,$87
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
60 *CMD13 fcb $4D,$00,$00,$00,$00,$95
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
61 CMD16 fcb $50,$00,$00,$02,$00,$FF was 95
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
62 ACMD41V1 fcb $69,$00,$00,$00,$00,$FF was 95
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
63 ACMD41V2 fcb $69,$40,$00,$00,$00,$FF was 95
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
64 CMD55 fcb $77,$00,$00,$00,$00,$FF was 95
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
65 CMD58 fcb $7A,$00,$00,$00,$00,$FF was 95
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
66
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
67 * Read/Write commands
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
68 CMDRead EQU $5100 Command to read a single block
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
69 CMDWrite EQU $5800 Command to write a sector
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
70 CMDEnd EQU $00FF Every command ends with $95
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
71 * SPI Address Equates
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
72 * SPI Control Register
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
73 SPICTRL EQU 0
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
74 SLOT_SEL_0 EQU 1
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
75 SPI_IRQ_EN EQU $40
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
76 SPI_EN EQU $80 Sets SPI enable and IRQ enable
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
77 * SPI Status Register
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
78 SPISTAT EQU 0
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
79 CARD_DET_0 EQU 1
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
80 CARD_LOCK_0 EQU 2
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
81 IRQ_SLOT_0 EQU $80
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
82 * SPI Transmit / Receive Register
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
83 SPIDAT EQU 1
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
84 * Test 8 bit LED display
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
85 SPITRACE EQU $FF66
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
86
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
87 name FCS /llcoco3fpga/
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
88
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
89 start lbra ll_init
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
90 bra ll_read
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
91 nop
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
92 lbra ll_write
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
93 lbra ll_getstat
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
94 lbra ll_setstat
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
95 lbra ll_term
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
96
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
97 EREAD
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
98 ldd #$0000+E$Read A=Disable SPI Interface, but not CS
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
99 * B=Read Error
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
100 lbra RETERR
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
101
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
102 * ll_read - Low level read routine
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
103 *
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
104 * Entry:
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
105 * Registers:
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
106 * Y = address of path descriptor
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
107 * U = address of device memory area
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
108 * Static Variables of interest:
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
109 * V.PhysSect = starting physical sector to read from
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
110 * V.SectCnt = number of physical sectors to read
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
111 * V.SectSize = physical sector size (0=256,1=512,2=1024,3=2048)
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
112 * V.CchPSpot = address where physical sector(s) will go
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
113 *
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
114 * Exit:
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
115 * All registers may be modified
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
116 * Static variables may NOT be modified
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
117 * Initialization errors are not flagged as an error
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
118 * SDCards are hot pluggable and card might be plugged in later
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
119 ll_read
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
120 * Setup read command
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
121 orcc #IntMasks disable interrupts
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
122 ldx V.Port-UOFFSET,u Get address of hardware
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
123 lda V.SectCnt,u Get number of sectors to read
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
124 sta SEC_CNT,u Save it to our usable storage
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
125 ldd V.CchPSpot,u get the location to copy the sector into
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
126 std SEC_LOC,u Save it into our usable storage
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
127 ldd V.PhysSect,u Copy Sector Adrress into our storage
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
128 std SEC_ADD,u
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
129 lda V.PhysSect+2,u
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
130 sta SEC_ADD+2,u
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
131 lda SPISTAT,x
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
132 lsra
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
133 bcc EREAD No card installed, so no reads
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
134 lphr lda SEC_CNT,u
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
135 ldd #CMDRead
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
136 std CMDStorage,u Read command and clear MSB of address
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
137 ldd #CMDEnd
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
138 std SD_SEC_ADD+3,u Clear LSB of address and CRC
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
139 rd_loop lda #(SPI_EN+SLOT_SEL_0) but not IRQ enable
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
140 bsr LSNMap0 Setup the appropriate LSN value for the card, build command,
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
141 * setup SPI to access the card, and sends command
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
142 bcs EREAD If we timed out, branch with error
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
143 bne EREAD If the R1 was not 0
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
144
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
145 ldy SEC_LOC,u Get the sector buffer address
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
146 ldb #$00 256 loops of 2 reads of 1 bytes is 512 bytes
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
147 lprd lda SPIDAT,x Send FF (receive a byte) until we get FE
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
148 cmpa #$FE Do we need more cycles??????
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
149 nop
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
150 bne lprd
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
151 * Read the 512 Byte sector
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
152 * we need a minumum of 4 CPU cycles to read in the 8 bits
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
153 RDSectorLoop lda SPIDAT,x
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
154 sta ,y+ ? cycles ?????????????
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
155 nop might be too much ???????
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
156 lda SPIDAT,x
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
157 sta ,y+
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
158 decb
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
159 bne RDSectorLoop
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
160 * Get the last two bytes of the sector (CRC bytes)
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
161 lda SPIDAT,x Send 2x FF to get the CRC
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
162 sty SEC_LOC,u Save out buffer pointer
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
163 * nop Might be too many cycles ?????????
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
164 lda SPIDAT,x We ignore the CRC
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
165 dec SEC_CNT,u decrement # of hw sectors to read
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
166 beq finird if zero, we are finished
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
167 *Increment sector number by 1 for sector addressable or $200 for byte addressable
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
168 incsec inc SEC_ADD+2,u add one to 3 byte LSN
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
169 bne lphr if we are at 0 then we need to add
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
170 inc SEC_ADD+1,u the carry to the next byte
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
171 bne lphr
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
172 inc SEC_ADD,u
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
173 bra lphr
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
174
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
175 * No errors, exit
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
176 finird
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
177 ldd #$0000 Disable SPI and exit
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
178 sta SPICTRL,x
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
179 andcc #^(IntMasks+Carry) Renable Interrupts and clear carry
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
180 rts return
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
181
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
182 **************
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
183 * LSNMap
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
184 * Take physical LSN and convert into SDHC/SD/MMC LSN
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
185 * SD/MMC uses a 32 bit byte mapping for the LSN, so we must shift the logical LSN up one bit
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
186 * and then clear the 4th byte to build the correct LSN string
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
187 * SDHC uses a 32 bit 512 byte sector mapping for the LSN.So there is no need to shift the LSN
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
188 * we can just write it as is and clear out the upper LSN byte, because we only get 3 bytes from coco for LSN
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
189 * does not preserve Reg A
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
190 **************
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
191 LSNMap0
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
192 sta SPICTRL,x
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
193 nop
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
194 lda SPIDAT,x Send 1 FF
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
195 lda SDVersion,u
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
196 bne secadd GoTo Sector Address type
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
197 *Save the sector number into the command
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
198 ldd SEC_ADD+1,u bytes 1 and 2 (middle and LSB)
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
199 aslb Byte address needs to be shifter one more bit
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
200 rola
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
201 std SD_SEC_ADD+1,u and stored in the first 3 bytes of a 4 byte address
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
202 lda SEC_ADD,u MSB
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
203 rola
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
204 sta SD_SEC_ADD,u
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
205 bra merge
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
206 secadd
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
207 ldd SEC_ADD+1,u Save the sector number into our storage
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
208 std SD_SEC_ADD+2,u Store in the last three bytes of the 4 byte address
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
209 lda SEC_ADD,u
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
210 sta SD_SEC_ADD+1,u
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
211 merge lda SPIDAT,x Send 1 FF
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
212 LSNMap1
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
213 leay CMDStorage,u
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
214 * Fall through to cmdsend
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
215
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
216 * cmdsend - Sends a 6 byte command
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
217 * Entry: X = HW addr
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
218 * Y = Address of first byte of command sequence
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
219 * Exit:
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
220 * Registers preserved: all but A/B/X
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
221 cmdsend
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
222 lda ,y
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
223 sta $FF66
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
224 ldb #6
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
225 cslp lda ,y+
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
226 sta SPIDAT,x
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
227 decb
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
228 bne cslp
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
229 * If finished, fall through to GETR1
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
230
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
231 * Entry: X = HW addr
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
232 * Exit: A = R1
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
233 * CC.C = 0 OK
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
234 * CC.C = 1 ERROR
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
235 * Registers preserved: all but A/B
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
236 GetR1
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
237 andcc #^Carry Clear Carry
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
238 ldb #$00 Probably too much
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
239 lpgtr1 lda SPIDAT,x
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
240 bpl finigtr1
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
241 decb
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
242 bne lpgtr1
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
243 comb set carry for error
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
244 finigtr1 rts
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
245
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
246 * ll_write - Low level write routine
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
247 *
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
248 * Entry:
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
249 * Registers:
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
250 * Y = address of path descrip
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
251 * U = address of device memory area
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
252 * Static Variables of interest:
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
253 * V.PhysSect = starting physical sector to write to
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
254 * V.SectCnt = number of physical sectors to write
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
255 * V.SectSize = physical sector size (0=256,1=512,2=1024,3=2048)
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
256 * V.CchPSpot = address of data to write to device
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
257 *
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
258 * Exit:
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
259 * All registers may be modified
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
260 * Static variables may NOT be modified
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
261 ll_write
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
262 orcc #IntMasks disable interrupts
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
263 ldx V.Port-UOFFSET,u Get address of hardware
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
264 lda V.SectCnt,u Get number of sectors to write`
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
265 sta SEC_CNT,u Save it to our usable storage
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
266 ldd V.CchPSpot,u get the location to of the sector send
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
267 std SEC_LOC,u Save it into our usable storage
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
268 ldd V.PhysSect,u Copy Sector Adrress into our storage
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
269 std SEC_ADD,u
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
270 lda V.PhysSect+2,u
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
271 sta SEC_ADD+2,u
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
272 lda SPISTAT,x
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
273 lsra
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
274 lbcc EWRITE No card installed, so no writes
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
275 lsra
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
276 lbcs EWP Write Protected, then exit with WP error
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
277 * The big read sector loop comes to here
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
278 lphw ldd #CMDWrite
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
279 std CMDStorage,u
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
280 ldd #CMDEnd
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
281 std SD_SEC_ADD+3,u LSB of address and CRC
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
282 wr_loop lda #(SPI_EN+SLOT_SEL_0)
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
283 bsr LSNMap0 Setup the appropriate LSN value for the card, build command,
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
284 * setup SPI to access the card, and sends command
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
285 bcs EWRITE
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
286 bne EWRITE
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
287
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
288 lda SPIDAT,x 2 bytes >= 1 byte after R1
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
289 nop Might not be enough ?????
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
290 nop
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
291 lda SPIDAT,x
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
292 ldd #$FE00 Start of sector byte and clear counter
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
293 ldy SEC_LOC,u get the location of the sectors(s) to write
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
294 sta SPIDAT,x Mark the start of the sector
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
295 nop Too much ???????
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
296 * Write the 512 Byte sector
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
297 WRSectorLoop lda ,y+
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
298 sta SPIDAT,x
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
299 nop
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
300 lda ,y+
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
301 sta SPIDAT,x
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
302 decb
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
303 bne WRSectorLoop
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
304 lda SPIDAT,x send two FFs as CRC
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
305 sty SEC_LOC,u Save out buffer pointer
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
306 nop Might not be enough ???????
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
307 stb SPIDAT,x Second FF (send 0 to check)
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
308 cmpa #$E5 Response - Data accepted token
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
309 beq fnd0 First byte? if not, check four more bytes.
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
310 * Make sure the response was accepted
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
311 lda SPIDAT,x This should be the data we got back during the write of the last CRC
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
312 * nop But we do send another ff so we can get the E5
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
313 cmpa #$E5 Response - Data accepted token
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
314 beq fnd0 First byte? if not, check three more bytes.
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
315 lda SPIDAT,x
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
316 cmpa #$E5 Response - Data accepted token if this is not it, then we have an issue
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
317 beq fnd0 First byte? if not, check two more bytes.
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
318 lda SPIDAT,x
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
319 cmpa #$E5 Response - Data accepted token if this is not it, then we have an issue
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
320 beq fnd0 First byte? if not, check one more byte.
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
321 lda SPIDAT,x
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
322 cmpa #$E5 Response - Data accepted token if this is not it, then we have an issue
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
323 bne EWRITE Write error
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
324 * Check to see if the write is complete
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
325 fnd0 lda SPIDAT,x
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
326 beq lpwr2
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
327 bra fnd0 Ths beq and bra could be a bne, but I want the extra cycles
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
328 lpwr2 lda SPIDAT,x
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
329 cmpa #$FF
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
330 beq wfin
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
331 bra lpwr2
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
332 wfin ldb #10 Lets send 16 more FF just in case
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
333 finlp lda SPIDAT,x
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
334 decb
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
335 bne finlp
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
336 dec SEC_CNT,u decrement # of hw sectors to read
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
337 beq finiwr if zero, we are finished
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
338 inc SEC_ADD+2,u add one to 3 byte LSN
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
339 bne lphw if we are at 0 then we need to add
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
340 inc SEC_ADD+1,u the carry to the next byte
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
341 lbne lphw
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
342 inc SEC_ADD,u
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
343 lbra lphw
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
344 * No errors, exit
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
345 finiwr
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
346 ldd #$0000 Diable SPI and exit
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
347 sta SPICTRL,x
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
348 andcc #^(IntMasks+Carry) Renable Interrupts and clear carry
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
349 rts
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
350
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
351 * Error handlers
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
352 EWRITE
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
353 ldd #$0000+E$Write A=Enable SPI Interface, but not CS
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
354 * B=Write Error
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
355 bra RETERR
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
356 EWP
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
357 ldd #$0000+E$WP A=Enable SPI Interface, but not CS
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
358 * B=Write Protect Error
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
359
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
360 RETERR
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
361 sta SPICTRL,x Set the hardware
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
362 andcc #^IntMasks Enable interrupts
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
363 coma Set Carry
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
364 rts
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
365 NOTRDY
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
366 ldd #$0000+E$NotRdy Turn off controller and turn on IRQ and flag not ready error
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
367 bra RETERR
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
368 * ll_init - Low level init routine
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
369 * Entry:
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
370 * Y = address of device descriptor
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
371 * U = address of low level device memory area
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
372 *
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
373 * Exit:
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
374 * CC = carry set on error
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
375 * B = error code
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
376 *
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
377 * Note: This routine is called ONCE: for the first device
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
378 * IT IS NOT CALLED PER DEVICE!
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
379 *
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
380 ll_init
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
381 orcc #IntMasks disable interrupts
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
382 lda $FFD9 Speed up
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
383 ldx V.PORT-UOFFSET,u load x with the hw address for the IRQ routine
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
384 lda SPISTAT,x
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
385 lsra
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
386 bcc NOTRDY If there is no card, nothing to do
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
387 * Enable SPI
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
388 ldd #SPI_EN*256+$10 Enable SPI Interface, but not CS
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
389 * 16*8 cycles is >= 74
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
390 sta SPICTRL,x
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
391
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
392 *send at least 74 clock cycles with no SS, 12*8 = 96
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
393 lpff lda SPIDAT,x Send FF
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
394 decb 2 cycles, need 4
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
395 * nop 2 cycles
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
396 bne lpff 3 Cycles
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
397 *Initialize card 0
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
398 CRD0 lda #SPI_EN+SLOT_SEL_0 Enable SPI and lower CS
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
399 sta SPICTRL,x
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
400
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
401 * sdinit - initializes SD Cards, if installed
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
402 sdinit
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
403 * Send CMD0
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
404 lda SPIDAT,x Send 1 FF
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
405 nop ????????? enough
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
406 leay CMD0,pcr Might need more cycles ???????
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
407 lda SPIDAT,x Send 1 more FF
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
408 lbsr cmdsend Also does a GETR1
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
409 bcs NOTRDY
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
410 anda #$7E Idle is ok
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
411 bne NOTRDY but nothing else
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
412
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
413 * Send CMD8
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
414 lda SPIDAT,x Send 1 FF
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
415 nop ?????? enough
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
416 leay CMD8,pcr Might need more cycles ??????
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
417 lda SPIDAT,x Sens 1 more FF
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
418 lbsr cmdsend Also does an GETR1
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
419 bcs SDV1
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
420 anda #$7E
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
421 bne SDV1
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
422 lda SPIDAT,x Byte 1 of R3/R7, through it away
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
423 nop
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
424 nop might need more ????????
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
425 nop
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
426 lda SPIDAT,x Byte 2 of R3/R7, throught it away
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
427 nop
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
428 nop
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
429 nop
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
430 lda SPIDAT,x Byte 3 of R3/R7, should be 1
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
431 cmpa #$01 2 cycles
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
432 bne NOTRDY 2 cycles
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
433 nop
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
434 lda SPIDAT,x Byte 4 of R3/R7, should be $AA
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
435 cmpa #$AA 2 cycles
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
436 bne NOTRDY 2 cycles
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
437 nop
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
438
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
439 * Send ACMD41 by first CMD55
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
440 loop41V2 lda SPIDAT,x Send 1 FF
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
441 nop
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
442 leay CMD55,pcr might need more ??????
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
443 lda SPIDAT,x Send 1 FF
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
444 lbsr cmdsend Also does an GETR1
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
445 bcs NOTRDY
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
446 anda #$7E Idle is ok
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
447 bne NOTRDY but nothing else
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
448
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
449 * Then send ACMD41
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
450 lda SPIDAT,x
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
451 nop
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
452 leay ACMD41V2,pcr
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
453 lda SPIDAT,x
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
454 lbsr cmdsend
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
455 bcs NOTRDY No response
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
456 beq Send58 If 0 then CMD58
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
457 cmpa #$01 if 1 then try again
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
458 beq loop41V2
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
459 lbra NOTRDY
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
460
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
461 * Send CMD58 to V2 card
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
462 Send58 lda SPIDAT,x
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
463 nop ?????? ENOUGH
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
464 leay CMD58,pcr Read OCR
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
465 lda SPIDAT,x
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
466 lbsr cmdsend
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
467 lbcs NOTRDY
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
468 lda SPIDAT,x Byte 1 of OCR
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
469 anda #$40 CCS bit 1= sector 0= byte
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
470 sta SDVersion,u
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
471 lda SPIDAT,x Byte 2 of R3/R7, through it away
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
472 nop
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
473 nop
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
474 lda SPIDAT,x Byte 3 of R3/R7, through it away
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
475 nop
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
476 nop
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
477 lda SPIDAT,x Byte 4 of R3/R7, through it away
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
478 lda SDVersion,u 0 = byte addressable, !0 = block addressable
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
479 bne FININIT
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
480 bra Send16
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
481
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
482 * Send ACMD41 by first CMD55
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
483 SDV1
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
484
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
485 loop41V1 lda SPIDAT,x Get extra bytes in case we got a bad R7 previously
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
486 nop
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
487 lda SPIDAT,x
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
488 * nop
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
489 clr SDVersion,u Byte addressable
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
490 lda SPIDAT,x
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
491 * nop
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
492 leay CMD55,pcr
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
493 lda SPIDAT,x
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
494 lbsr cmdsend
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
495 lbcs NOTRDY
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
496 anda #$7E Idle is ok
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
497 lbne NOTRDY but nothing else
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
498
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
499 * Then send ACMD41
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
500 lda SPIDAT,x
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
501 * nop
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
502 leay ACMD41V1,pcr
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
503 lda SPIDAT,x
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
504 lbsr cmdsend
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
505 lbcs NOTRDY
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
506 beq Send16 If 0 then CMD16
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
507 cmpa #$01 if 1 then try again
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
508 beq loop41V1
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
509 lbra NOTRDY
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
510 * Send CMD16
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
511 Send16 lda SPIDAT,x
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
512 * nop
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
513 leay CMD16,pcr
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
514 lda SPIDAT,x
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
515 lbsr cmdsend
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
516 lbne NOTRDY but nothing else
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
517 * Finish INIT
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
518 FININIT
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
519 lda SPIDAT,x Send last FF
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
520 * nop
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
521 * lda SDVersion,u
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
522 * sta $ff66
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
523 * lda #SPI_EN+SPI_IRQ_EN Turn on SPI and Interrupt and turn off CS
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
524 lda #SPI_EN Turn on SPI and turn off CS
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
525 sta SPICTRL,x
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
526
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
527 *Finished with initialization
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
528 *Use the stat routine to return
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
529
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
530 * ll_getstat - Low level GetStat routine
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
531 * ll_setstat - Low level SetStat routine
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
532 *
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
533 * Entry:
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
534 * Y = address of path descriptor
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
535 * U = address of device memory area
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
536 *
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
537 * Exit:
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
538 * CC = carry set on error
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
539 * B = error code
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
540 *
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
541 ll_getstat
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
542 ll_setstat
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
543 andcc #^Carry
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
544 clrb
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
545 rts
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
546
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
547 * ll_term - Low level term routine
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
548 *
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
549 * Entry:
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
550 * Y = address of device descriptor
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
551 * U = address of device memory area
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
552 *
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
553 * Exit:
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
554 * CC = carry set on error
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
555 * B = error code
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
556 *
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
557 * Note: This routine is called ONCE: for the last device
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
558 * IT IS NOT CALLED PER DEVICE!
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
559 *
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
560 ll_term
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
561 clrb
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
562 andcc #^Carry
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
563 rts
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
564
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
565 EMOD
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
566 eom EQU *
96cb9d947e0b New low-level driver for CoCo3FPGA SD card interface
Bill Pierce <merlinious999@gmail.com>
parents:
diff changeset
567 END