Rev 1120 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1120 | Rev 1186 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | 1 | ||
2 | ;LAST UPDATE: 27.02.2021 savelij |
2 | ; LAST UPDATE: 13.11.2024 savelij |
3 | 3 | ||
4 | VIEW_CHS EQU 1 |
4 | VIEW_CHS EQU 1 |
5 | 5 | ||
6 | HDD_DETECTOR LD IX,.HDDDETECT |
6 | HDD_DETECTOR LD IX,.HDDDETECT |
7 | RST8 _WINW |
7 | RST8 _WINW |
Line 27... | Line 27... | ||
27 | DEC A |
27 | DEC A |
28 | CALL Z,.CDDVDFOUNDS |
28 | CALL Z,.CDDVDFOUNDS |
29 | JP Z,.ENDTEST |
29 | JP Z,.ENDTEST |
30 | LD HL,.SLAVENONE |
30 | LD HL,.SLAVENONE |
31 | RST8 _PRINT_MESSAGE |
31 | RST8 _PRINT_MESSAGE |
32 | JR .ENDTEST |
32 | JR .ENDTEST;.SD_TEST |
33 | 33 | ||
34 | .SLAVE_FOUND LD C,2 |
34 | .SLAVE_FOUND LD C,2 |
35 | CALL .HDD_INFO |
35 | CALL .HDD_INFO |
- | 36 | ||
- | 37 | ;.SD_TEST CALL .GET_SD_INFO |
|
- | 38 | ||
36 | .ENDTEST LD HL,.TXTANYKEY |
39 | .ENDTEST LD HL,.TXTANYKEY |
37 | RST8 _PRINT_MESSAGE |
40 | RST8 _PRINT_MESSAGE |
38 | .WAITENTER EI |
41 | .WAITENTER EI |
39 | HALT |
42 | HALT |
40 | BIT 5,(IY+1) |
43 | BIT 5,(IY+1) |
Line 47... | Line 50... | ||
47 | .HDD_INFO PUSH HL |
50 | .HDD_INFO PUSH HL |
48 | DEC C |
51 | DEC C |
49 | LD HL,.MASTERFOUND |
52 | LD HL,.MASTERFOUND |
50 | JR Z,.HDDI1 |
53 | JR Z,.HDDI1 |
51 | LD HL,.SLAVEFOUND |
54 | LD HL,.SLAVEFOUND |
- | 55 | .HDDI1 |
|
52 | .HDDI1 RST8 _PRINT_MESSAGE |
56 | RST8 _PRINT_MESSAGE |
53 | LD A,C |
57 | LD A,C |
54 | EX AF,AF' |
58 | EX AF,AF' |
55 | LD HL,ADR_CAT |
59 | LD HL,ADR_CAT |
56 | RST8 _COM_DEV,_COMHDDN,_DEV_READID |
60 | RST8 _COM_DEV,_COMHDDN,_DEV_READID |
57 | LD HL,ADR_CAT+46 |
61 | LD HL,ADR_CAT+46 |
Line 101... | Line 105... | ||
101 | LD HL,(ADR_CAT + 83 * WORD) |
105 | LD HL,(ADR_CAT + 83 * WORD) |
102 | LD A,H |
106 | LD A,H |
103 | AND %00000100 ; бит 10 в слове 83 |
107 | AND %00000100 ; бит 10 в слове 83 |
104 | JR Z,.LBA28 |
108 | JR Z,.LBA28 |
105 | ; для LBA48 |
109 | ; для LBA48 |
106 | .LBA48 |
- | |
107 | LD HL,(ADR_CAT + 100 * WORD + 1); размер в секторах /256 |
110 | .LBA48 LD HL,(ADR_CAT + 100 * WORD + 1); размер в секторах /256 |
108 | LD DE,(ADR_CAT + 101 * WORD + 1) |
111 | LD DE,(ADR_CAT + 101 * WORD + 1) |
109 | LD BC,(ADR_CAT + 102 * WORD + 1) |
112 | LD BC,(ADR_CAT + 102 * WORD + 1) |
110 | LD B,3 |
113 | LD B,3 |
111 | CALL .DIV_LBA |
114 | CALL .DIV_LBA |
112 | LD A,C |
115 | LD A,C |
Line 137... | Line 140... | ||
137 | LD A,IXL |
140 | LD A,IXL |
138 | AND A |
141 | AND A |
139 | LD HL,.TXTMB |
142 | LD HL,.TXTMB |
140 | JR Z,.L4 |
143 | JR Z,.L4 |
141 | LD HL,.TXTGB |
144 | LD HL,.TXTGB |
- | 145 | .L4 |
|
142 | .L4 RST8 _PRINT_MESSAGE |
146 | RST8 _PRINT_MESSAGE |
143 | POP HL |
147 | POP HL |
144 | RET |
148 | RET |
145 | 149 | ||
146 | .DIV_LBA |
150 | .DIV_LBA |
147 | .L1 SRL C |
151 | .L1 SRL C |
Line 162... | Line 166... | ||
162 | RST8 _PRINT_MESSAGE |
166 | RST8 _PRINT_MESSAGE |
163 | POP AF |
167 | POP AF |
164 | POP HL |
168 | POP HL |
165 | RET |
169 | RET |
166 | 170 | ||
- | 171 | .GET_SD_INFO |
|
- | 172 | RST8 _COM_DEV,_CONTROL_SD |
|
- | 173 | AND A |
|
- | 174 | JR Z,.GSI01 |
|
- | 175 | ; SD карта не найдена |
|
- | 176 | LD HL,.SD_NOT_FOUND |
|
- | 177 | RST8 _PRINT_MESSAGE |
|
- | 178 | RET |
|
- | 179 | ||
- | 180 | .GSI01 |
|
- | 181 | RET |
|
- | 182 | ||
167 | .HDDDETECT DB 0,0,24,32,0X07,0X1F,%01010000,0 |
183 | .HDDDETECT DB 0,0,24,32,0X07,0X1F,%01010000,0 |
168 | DW 0,0,.TXTHDDDET,0,0,0 |
184 | DW 0,0,.TXTHDDDET,0,0,0 |
169 | 185 | ||
170 | .TXTHDDDET DB "\1\x17\XFF\3HDD detector\r\0" |
186 | .TXTHDDDET DZ "\1\x17\XFF\3Device detector\r" |
171 | 187 | ||
172 | .TXTSIZE DB "\rSize:\0" |
188 | .TXTSIZE DZ "\rSize:" |
173 | .TXTMB DB " MB\r\0" |
189 | .TXTMB DZ " MB\r" |
174 | .TXTGB DB " GB\r\0" |
190 | .TXTGB DZ " GB\r" |
175 | .MASTERFOUND DB "\rHDD master found\r\0" |
191 | .MASTERFOUND DZ "\rHDD master found\r" |
176 | .SLAVEFOUND DB "\rHDD slave found\r\0" |
192 | .SLAVEFOUND DZ "\rHDD slave found\r" |
177 | .MASTERNONE DB "\rHDD master not found\r\0" |
193 | .MASTERNONE DZ "\rHDD master not found\r" |
178 | .SLAVENONE DB "\rHDD slave not found\r\0" |
194 | .SLAVENONE DZ "\rHDD slave not found\r" |
179 | .MASTERCDDVD DB "\rCD/DVD-ROM master found\r\0" |
195 | .MASTERCDDVD DZ "\rCD/DVD-ROM master found\r" |
180 | .SLAVECDDVD DB "\rCD/DVD-ROM slave found\r\0" |
196 | .SLAVECDDVD DZ "\rCD/DVD-ROM slave found\r" |
181 | .CHS DB "C/H/S: \0" |
197 | .CHS DZ "C/H/S: " |
- | 198 | .SD_NOT_FOUND DZ "SD Card not found\r" |
|
182 | .NEWLINE DB "\r\0" |
199 | .NEWLINE DZ "\r" |
183 | .TXTANYKEY DB "\x16\x17\0\3Press ENTER to main menu\0" |
200 | .TXTANYKEY DZ "\x16\x17\0\3Press ENTER to main menu" |
- | 201 | ||
- | 202 | IF 0 |
|
- | 203 | ;[получение размера карты в секторах] |
|
- | 204 | GET_SD_SIZE PUSH IX |
|
- | 205 | PEC_OFF M_SHADOW_BF |
|
- | 206 | IFDEF UNREAL |
|
- | 207 | LD BC,0X3C;0 |
|
- | 208 | LD DE,0X1800;29120 |
|
- | 209 | ELSE |
|
- | 210 | PUSH HL |
|
- | 211 | PUSH HL |
|
- | 212 | LD A,CMD_09 |
|
- | 213 | CALL OUT_COM |
|
- | 214 | CALL IN_OOUT |
|
- | 215 | CP 0XFE |
|
- | 216 | JR NZ,$-5 |
|
- | 217 | LD BC,P_DATA |
|
- | 218 | POP HL |
|
- | 219 | POP IX |
|
- | 220 | LD B,0X14 |
|
- | 221 | INIR |
|
- | 222 | BIT 6,(IX+0) |
|
- | 223 | JR Z,SDVERS_10 |
|
- | 224 | ;спецификация версия 2.0 |
|
- | 225 | ;C_SIZE (22 bit) 69:48 0x45:30 |
|
- | 226 | ;00 01 02 03 04 05 06 07 08 09 |
|
- | 227 | ;xx xx xx xx xx xxxx1111 xxxxxxxx xx111111 11111111 11111111 |
|
- | 228 | LD BC,1 |
|
- | 229 | LD L,(IX+9) |
|
- | 230 | LD H,(IX+8) |
|
- | 231 | LD A,(IX+7) |
|
- | 232 | AND %00111111 |
|
- | 233 | LD E,A |
|
- | 234 | LD D,B ;DEHL=C_SIZE (22 БИТА) |
|
- | 235 | ADD HL,BC |
|
- | 236 | EX DE,HL |
|
- | 237 | LD C,B |
|
- | 238 | ADC HL,BC |
|
- | 239 | EX DE,HL |
|
- | 240 | REPT 2 |
|
- | 241 | ADD HL,HL |
|
- | 242 | EX DE,HL |
|
- | 243 | ADC HL,HL |
|
- | 244 | EX DE,HL |
|
- | 245 | ENDM |
|
- | 246 | LD B,H |
|
- | 247 | LD C,L ;BCDE=количество секторов |
|
- | 248 | CALL EXIT_SDREAD |
|
- | 249 | POP IX |
|
- | 250 | RET |
|
- | 251 | ||
- | 252 | ;спецификация версия 1.0 |
|
- | 253 | ;C_SIZE (12 bit) 73:62 0x49:3E |
|
- | 254 | ;C_SIZE_MULT (3 bit) 49:47 0x31:2F |
|
- | 255 | ;00 01 02 03 04 05 06 07 08 09 0A |
|
- | 256 | ;xx xx xx xx xx xxxx1111 xxxxxx11 11111111 11xxxxxx xxxxxx11 1xxxxxxx |
|
- | 257 | SDVERS_10 LD L,(IX+7) |
|
- | 258 | LD A,(IX+6) |
|
- | 259 | AND %00000011 |
|
- | 260 | LD H,A |
|
- | 261 | ADD HL,HL |
|
- | 262 | ADD HL,HL |
|
- | 263 | LD A,(IX+8) |
|
- | 264 | RLCA |
|
- | 265 | RLCA |
|
- | 266 | AND %00000011 |
|
- | 267 | OR L |
|
- | 268 | LD L,A |
|
- | 269 | EX DE,HL ;DE=C_SIZE |
|
- | 270 | LD L,(IX+10) |
|
- | 271 | LD H,(IX+9) |
|
- | 272 | ADD HL,HL |
|
- | 273 | LD A,H |
|
- | 274 | AND %00000111 |
|
- | 275 | ADD A,2 |
|
- | 276 | LD B,A ;B=C_SIZE_MULT+2 |
|
- | 277 | LD HL,1 |
|
- | 278 | ADD HL,HL |
|
- | 279 | DJNZ $-1 |
|
- | 280 | INC DE |
|
- | 281 | LD B,H |
|
- | 282 | LD C,L |
|
- | 283 | CALL MULTIPLY |
|
- | 284 | LD B,H |
|
- | 285 | LD C,L ;количество секторов |
|
- | 286 | ENDIF |
|
- | 287 | CALL EXIT_SDREAD |
|
- | 288 | POP IX |
|
- | 289 | RET |
|
- | 290 | ENDIF |