Subversion Repositories pentevo

Rev

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