Subversion Repositories pentevo

Rev

Rev 890 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 890 Rev 1186
Line 1... Line 1...
1
 
1
 
2
;LAST UPDATE: 01.12.2014 savelij
2
; LAST UPDATE: 06.02.2025 savelij
3
 
3
 
4
;ВХОДНЫЕ ПАРАМЕТРЫ ОБЩИЕ:
4
; входные параметры общие:
5
;HL-АДРЕС ЗАГРУЗКИ В ПАМЯТЬ
5
; HL-адрес загрузки в память
6
;BCDE-32-Х БИТНЫЙ НОМЕР СЕКТОРА
6
; BCDE-32-х битный номер сектора
7
;A-КОЛИЧЕСТВО БЛОКОВ (БЛОК=512 БАЙТ)
7
; A-количество блоков (блок=512 байт)
8
;ТОЛЬКО ДЛЯ МНОГОБЛОЧНОЙ ЗАПИСИ/ЧТЕНИИ
8
; только для многоблочной записи/чтении
9
 
9
 
10
;ОШИБКИ ВЫДАВАЕМЫЕ НА ВЫХОДЕ:
10
; ошибки выдаваемые на выходе:
11
;A=0-ИНИЦИАЛИЗАЦИЯ ПРОШЛА УСПЕШНО
11
; A=0-инициализация прошла успешно
12
;A=1-КАРТА НЕ НАЙДЕНА ИЛИ НЕ ОТВЕТИЛА
12
; A=1-карта не найдена или не ответила
13
 
13
 
14
;ОБЩАЯ ТОЧКА ВХОДА ДЛЯ РАБОТЫ С SD
14
;общая точка входа для работы с SD
15
COMSDZ          EX AF,AF'
15
COMSDZ          EX AF,AF'
16
                LD A,IYL
16
                LD A,IYL
17
                AND A
17
                AND A
18
                LD A,(NEXTBYTERST8)
18
                LD A,(NEXTBYTERST8)
19
                JR Z,COMSDZ1
19
                JR Z,COMSDZ1
Line 47... Line 47...
47
                JR NZ,RET4SD1
47
                JR NZ,RET4SD1
48
                LD (RREG_L),HL
48
                LD (RREG_L),HL
49
                EX (SP),HL
49
                EX (SP),HL
50
                LD (RREG_F),HL
50
                LD (RREG_F),HL
51
                EX (SP),HL
51
                EX (SP),HL
-
 
52
RET4SD1
52
RET4SD1         PEC_ON M_SHADOW_BF
53
        PEC_ON M_SHADOW_BF
53
                POP AF
54
                POP AF
54
                RET
55
                RET
55
 
56
 
56
TABLSDZ         DW SD_INIT                      ;0 ПАРАМЕТРОВ НЕ ТРЕБУЕТ, НА ВЫХОДЕ A
57
TABLSDZ         DW SD_INIT                      ; 0 параметров не требует, на выходе 'A'
57
                                                ;СМОТРИ ВЫШЕ ПЕРВЫЕ 2 ЗНАЧЕНИЯ
58
                                                ; смотри выше первые 2 значения
58
                DW SD_CMP                       ;1 ПРОВЕРКА НАЛИЧИЯ SD КАРТЫ
59
                DW SD_CMP                       ; 1 проверка наличия SD карты
59
                DW RDMULTI                      ;2 ЧТЕНИЕ СЕКТОРОВ, КОЛ-ВО В "A"
60
                DW RDMULTI                      ; 2 чтение секторов, кол-во в 'A'
60
                DW WRMULTI                      ;3 ЗАПИСЬ СЕКТОРОВ
61
                DW WRMULTI                      ; 3 запись секторов, кол-во в 'A'
61
 
62
 
62
SD_INIT         CALL CS_HIGH
63
SD_INIT         CALL CS_HIGH
63
                LD BC,P_DATA
64
                LD BC,P_DATA
64
                LD DE,0X10FF
65
                LD DE,0x10FF
65
                OUT (C),E
66
                OUT (C),E
66
                DEC D
67
                DEC D
67
                JR NZ,$-3
68
                JR NZ,$-3
68
                XOR A
69
                XOR A
69
                EX AF,AF'
70
                EX AF,AF'
Line 87... Line 88...
87
                NOP
88
                NOP
88
                IN H,(C)
89
                IN H,(C)
89
                LD HL,0
90
                LD HL,0
90
                BIT 2,A
91
                BIT 2,A
91
                JR NZ,ZAW006
92
                JR NZ,ZAW006
92
                LD H,0X40
93
                LD H,0x40
93
ZAW006          LD A,CMD_55
94
ZAW006          LD A,CMD_55
94
                CALL OUT_COM
95
                CALL OUT_COM
95
                CALL IN_OOUT
96
                CALL IN_OOUT
96
                in (c) ;in f,(c)
97
                in (c) ;in f,(c)
97
                in (c) ;in f,(c)
98
                in (c) ;in f,(c)
Line 103... Line 104...
103
                OUT (C),L
104
                OUT (C),L
104
                NOP
105
                NOP
105
                OUT (C),L
106
                OUT (C),L
106
                NOP
107
                NOP
107
                OUT (C),L
108
                OUT (C),L
108
                LD A,0XFF
109
                LD A,0xFF
109
                OUT (C),A
110
                OUT (C),A
110
                CALL IN_OOUT
111
                CALL IN_OOUT
111
                AND A
112
                AND A
112
                JR NZ,ZAW006
113
                JR NZ,ZAW006
113
ZAW004          LD A,CMD_59
114
ZAW004          LD A,CMD_59
Line 143... Line 144...
143
                POP AF
144
                POP AF
144
                RET
145
                RET
145
 
146
 
146
OUTCOM          CALL CS__LOW
147
OUTCOM          CALL CS__LOW
147
                PUSH BC
148
                PUSH BC
148
                LD BC,0X0600+P_DATA
149
                LD BC,0x0600+P_DATA
149
                OTIR
150
                OTIR
150
                POP BC
151
                POP BC
151
                RET
152
                RET
152
 
153
 
153
OUT_COM         PUSH BC
154
OUT_COM         PUSH BC
Line 223... Line 224...
223
                OUT (C),L
224
                OUT (C),L
224
                NOP
225
                NOP
225
                OUT (C),D
226
                OUT (C),D
226
                NOP
227
                NOP
227
                OUT (C),E
228
                OUT (C),E
228
                LD A,0XFF
229
                LD A,0xFF
229
                OUT (C),A
230
                OUT (C),A
230
                POP BC
231
                POP BC
231
                POP DE
232
                POP DE
232
                POP HL
233
                POP HL
233
                RET
234
                RET
234
 
235
 
235
IN_OOUT         PUSH DE
236
IN_OOUT         PUSH DE
236
                LD DE,0X30FF
237
                LD DE,0x30FF
237
IN_WAIT         IN A,(P_DATA)
238
IN_WAIT         IN A,(P_DATA)
238
                CP E
239
                CP E
239
                JR NZ,IN_EXIT
240
                JR NZ,IN_EXIT
240
IN_NEXT         DEC D
241
IN_NEXT         DEC D
241
                JR NZ,IN_WAIT
242
                JR NZ,IN_WAIT
242
IN_EXIT         POP DE
243
IN_EXIT         POP DE
243
                RET
244
                RET
244
 
245
 
245
CMD00           DB 0X40,0X00,0X00,0X00,0X00,0X95                ;GO_IDLE_STATE
246
CMD00           DB 0x40,0x00,0x00,0x00,0x00,0x95                ;GO_IDLE_STATE
246
CMD08           DB 0X48,0X00,0X00,0X01,0XAA,0X87                ;SEND_IF_COND
247
CMD08           DB 0x48,0x00,0x00,0x01,0xAA,0x87                ;SEND_IF_COND
247
CMD16           DB 0X50,0X00,0X00,0X02,0X00,0XFF                ;SET_BLOCKEN
248
CMD16           DB 0x50,0x00,0x00,0x02,0x00,0xFF                ;SET_BLOCKEN
248
 
249
 
249
RD_SECT         PUSH BC
250
RD_SECT         PUSH BC
250
                LD A,IYL
251
                LD A,IYL
251
                BIT 1,A
252
                BIT 1,A
252
                JR NZ,RD_SECT3                  ;ЕСЛИ ДЛЯ ВНЕШНЕЙ
253
                JR NZ,RD_SECT3                  ;ЕСЛИ ДЛЯ ВНЕШНЕЙ
253
                AND A
254
                AND A
254
                JR NZ,RD_SECT2
255
                JR NZ,RD_SECT2
255
RD_SECT3       
256
RD_SECT3       
256
;               LD A,(R_7FFD)
-
 
257
                READ_7FFD
257
        READ_7FFD
258
                LD BC,(B0_CPU2)
258
                LD BC,(B0_CPU2)
259
                JR Z,RD_SECT1
259
                JR Z,RD_SECT1
260
                LD BC,(B1_CPU2)
260
                LD BC,(B1_CPU2)
-
 
261
RD_SECT1
261
RD_SECT1        PEC_ON M_SHADOW_BF
262
        PEC_ON M_SHADOW_BF
262
                LD A,B
263
                LD A,B
263
                OR 0X37
264
                OR 0x37
264
                LD B,A
265
                LD B,A
265
                LD A,C
266
                LD A,C
266
                LD C,LOW (WIN_A0)
267
                LD C,LOW (WIN_A0)
267
                OUT (C),A
268
                OUT (C),A
268
                PEC_OFF M_SHADOW_BF
269
        PEC_OFF M_SHADOW_BF
Line 273... Line 274...
273
                NOP
274
                NOP
274
                IN A,(C)
275
                IN A,(C)
275
                NOP
276
                NOP
276
                IN A,(C)
277
                IN A,(C)
277
                PEC_ON M_SHADOW_BF
278
        PEC_ON M_SHADOW_BF
278
                LD BC,WIN_P6
279
                LD BC,WIN_P2
279
                XOR A
280
                XOR A
280
                OUT (C),A
281
                OUT (C),A
281
                PEC_OFF M_SHADOW_BF
282
        PEC_OFF M_SHADOW_BF
282
                POP BC
283
                POP BC
283
                RET
284
                RET
Line 286... Line 287...
286
                LD BC,P_DATA
287
                LD BC,P_DATA
287
                OUT (C),A
288
                OUT (C),A
288
                OTIR
289
                OTIR
289
                NOP
290
                NOP
290
                OTIR
291
                OTIR
291
                LD A,0XFF
292
                LD A,0xFF
292
                OUT (C),A
293
                OUT (C),A
293
                NOP
294
                NOP
294
                OUT (C),A
295
                OUT (C),A
295
                POP BC
296
                POP BC
296
                RET
297
                RET
Line 299... Line 300...
299
                LD A,CMD_18
300
                LD A,CMD_18
300
                CALL SECM200
301
                CALL SECM200
301
                EX AF,AF'
302
                EX AF,AF'
302
RDMULT1         EX AF,AF'
303
RDMULT1         EX AF,AF'
303
                CALL IN_OOUT
304
                CALL IN_OOUT
304
                CP 0XFE
305
                CP 0xFE
305
                JR NZ,$-5
306
                JR NZ,$-5
306
                CALL RD_SECT
307
                CALL RD_SECT
307
                EX AF,AF'
308
                EX AF,AF'
308
                DEC A
309
                DEC A
309
                JR NZ,RDMULT1
310
                JR NZ,RDMULT1
Line 320... Line 321...
320
                CALL IN_OOUT
321
                CALL IN_OOUT
321
                INC A
322
                INC A
322
                JR NZ,$-4
323
                JR NZ,$-4
323
                EX AF,AF'
324
                EX AF,AF'
324
WRMULT1         EX AF,AF'
325
WRMULT1         EX AF,AF'
325
                LD A,0XFC
326
                LD A,0xFC
326
                CALL WR_SECT
327
                CALL WR_SECT
327
                CALL IN_OOUT
328
                CALL IN_OOUT
328
                INC A
329
                INC A
329
                JR NZ,$-4
330
                JR NZ,$-4
330
                EX AF,AF'
331
                EX AF,AF'
331
                DEC A
332
                DEC A
332
                JR NZ,WRMULT1
333
                JR NZ,WRMULT1
333
                LD C,P_DATA
334
                LD C,P_DATA
334
                LD A,0XFD
335
                LD A,0xFD
335
                OUT (C),A
336
                OUT (C),A
336
                CALL IN_OOUT
337
                CALL IN_OOUT
337
                INC A
338
                INC A
338
                JR NZ,$-4
339
                JR NZ,$-4
339
                JP CS_HIGH
340
                JP CS_HIGH