Subversion Repositories pentevo

Rev

Rev 1120 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
801 savelij 1
 
1186 savelij 2
; LAST UPDATE: 13.11.2024 savelij
801 savelij 3
 
1120 savelij 4
VIEW_CHS        EQU 1
952 savelij 5
 
801 savelij 6
HDD_DETECTOR    LD IX,.HDDDETECT
1186 savelij 7
        RST8 _WINW
801 savelij 8
                LD HL,ADR_CAT
1186 savelij 9
        RST8 _COM_DEV,_COMHDDN,_DEV_INIT
801 savelij 10
                LD A,H
11
                AND A
12
                JR Z,.MASTER_FOUND
13
                DEC A
14
                CALL Z,.CDDVDFOUNDM
15
                JR Z,.SLAVE
16
                PUSH HL
17
                LD HL,.MASTERNONE
1186 savelij 18
        RST8 _PRINT_MESSAGE
801 savelij 19
                POP HL
20
                JR .SLAVE
21
 
22
.MASTER_FOUND   LD C,1
23
                CALL .HDD_INFO
24
.SLAVE          LD A,L
25
                AND A
26
                JR Z,.SLAVE_FOUND
27
                DEC A
28
                CALL Z,.CDDVDFOUNDS
29
                JP Z,.ENDTEST
30
                LD HL,.SLAVENONE
1186 savelij 31
        RST8 _PRINT_MESSAGE
32
                JR .ENDTEST;.SD_TEST
801 savelij 33
 
34
.SLAVE_FOUND    LD C,2
35
                CALL .HDD_INFO
1186 savelij 36
 
37
;.SD_TEST       CALL .GET_SD_INFO
38
 
801 savelij 39
.ENDTEST        LD HL,.TXTANYKEY
1186 savelij 40
        RST8 _PRINT_MESSAGE
801 savelij 41
.WAITENTER      EI
42
                HALT
43
                BIT 5,(IY+1)
44
                JR Z,.WAITENTER
45
                LD A,(LAST_K)
46
                CP 0X0D
47
                JR NZ,.WAITENTER
48
                JP RESTART
49
 
50
.HDD_INFO       PUSH HL
51
                DEC C
52
                LD HL,.MASTERFOUND
53
                JR Z,.HDDI1
54
                LD HL,.SLAVEFOUND
1186 savelij 55
.HDDI1
56
        RST8 _PRINT_MESSAGE
801 savelij 57
                LD A,C
58
                EX AF,AF'
59
                LD HL,ADR_CAT
1186 savelij 60
        RST8 _COM_DEV,_COMHDDN,_DEV_READID
952 savelij 61
                LD HL,ADR_CAT+46
801 savelij 62
                PUSH HL
63
                LD B,0X18
64
.MF01           LD A,(HL)
65
                INC HL
66
                LD E,(HL)
67
                DEC HL
68
                LD (HL),E
69
                INC HL
70
                LD (HL),A
71
                INC HL
72
                DJNZ .MF01
952 savelij 73
                LD HL,ADR_CAT+46+42
74
        IF VIEW_CHS
801 savelij 75
                LD (HL),"\r"
76
                INC HL
952 savelij 77
        ENDIF
801 savelij 78
                LD (HL),0
79
                POP HL
1186 savelij 80
        RST8 _PRINT_MESSAGE             ; 
952 savelij 81
        IF VIEW_CHS
801 savelij 82
                LD HL,.CHS
1186 savelij 83
        RST8 _PRINT_MESSAGE
801 savelij 84
                LD HL,ADR_CAT+0X200
952 savelij 85
                LD DE,(ADR_CAT + 1 * WORD)      ;⢮ 樫஢
1186 savelij 86
        RST8 _MATH,_HEX2DECTXT
87
        RST8 _PRINT_MESSAGE
801 savelij 88
                LD A,"/"
1186 savelij 89
        RST8 _PRINT_A
952 savelij 90
                LD DE,(ADR_CAT + 3 * WORD)      ;⢮ 
1186 savelij 91
        RST8 _MATH,_HEX1DECTXT
92
        RST8 _PRINT_MESSAGE
801 savelij 93
                LD A,"/"
1186 savelij 94
        RST8 _PRINT_A
952 savelij 95
                LD DE,(ADR_CAT + 6 * WORD)      ;⢮ ᥪ஢
1186 savelij 96
        RST8 _MATH,_HEX1DECTXT
97
        RST8 _PRINT_MESSAGE
952 savelij 98
        ENDIF
99
                LD HL,.TXTSIZE
1186 savelij 100
        RST8 _PRINT_MESSAGE
952 savelij 101
                LD IXL,0                        ; ⥪ "MB"
801 savelij 102
;               LD HL,.NEWLINE
103
;               RST8 _PRINT_MESSAGE
952 savelij 104
; ஢ઠ  প LBA48
105
                LD HL,(ADR_CAT + 83 * WORD)
106
                LD A,H
107
                AND %00000100                   ;  10  ᫮ 83
108
                JR Z,.LBA28
109
;  LBA48
1186 savelij 110
.LBA48          LD HL,(ADR_CAT + 100 * WORD + 1); ࠧ  ᥪ /256
952 savelij 111
                LD DE,(ADR_CAT + 101 * WORD + 1)
112
                LD BC,(ADR_CAT + 102 * WORD + 1)
113
                LD B,3
114
                CALL .DIV_LBA
115
                LD A,C
116
                AND A
117
                JR Z,.L3
118
                LD IXL,1                        ; ⥪ "GB"
119
                LD B,2
120
                LD L,H
121
                LD H,E
122
                LD E,D
123
                LD D,C
124
                LD C,0
125
                CALL .DIV_LBA
126
                JR .L3
127
 
128
;  LBA28
129
.LBA28
130
                LD HL,(ADR_CAT + 60 * WORD + 1)
131
                LD DE,(ADR_CAT + 61 * WORD + 1) ; ࠧ  LBA ᥪ
132
                LD BC,3 << 8 + 0
133
                CALL .DIV_LBA
134
.L3             LD B,D
135
                LD C,E
136
                EX DE,HL
801 savelij 137
                LD HL,ADR_CAT+0X200
1186 savelij 138
        RST8 _MATH,_HEX4DECTXT
139
        RST8 _PRINT_MESSAGE
952 savelij 140
                LD A,IXL
141
                AND A
801 savelij 142
                LD HL,.TXTMB
952 savelij 143
                JR Z,.L4
144
                LD HL,.TXTGB
1186 savelij 145
.L4
146
        RST8 _PRINT_MESSAGE
801 savelij 147
                POP HL
148
                RET
149
 
952 savelij 150
.DIV_LBA
151
.L1             SRL C
152
                RR D
153
                RR E
154
                RR H
155
                RR L
156
                DJNZ .L1
157
                RET
158
 
801 savelij 159
.CDDVDFOUNDS    PUSH HL
160
                LD HL,.SLAVECDDVD
161
                JR .CDDVDFOUND
162
 
163
.CDDVDFOUNDM    PUSH HL
164
                LD HL,.MASTERCDDVD
165
.CDDVDFOUND     PUSH AF
1186 savelij 166
        RST8 _PRINT_MESSAGE
801 savelij 167
                POP AF
168
                POP HL
169
                RET
170
 
1186 savelij 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
 
801 savelij 183
.HDDDETECT      DB 0,0,24,32,0X07,0X1F,%01010000,0
184
                DW 0,0,.TXTHDDDET,0,0,0
185
 
1186 savelij 186
.TXTHDDDET      DZ "\1\x17\XFF\3Device detector\r"
801 savelij 187
 
1186 savelij 188
.TXTSIZE        DZ "\rSize:"
189
.TXTMB          DZ " MB\r"
190
.TXTGB          DZ " GB\r"
191
.MASTERFOUND    DZ "\rHDD master found\r"
192
.SLAVEFOUND     DZ "\rHDD slave found\r"
193
.MASTERNONE     DZ "\rHDD master not found\r"
194
.SLAVENONE      DZ "\rHDD slave not found\r"
195
.MASTERCDDVD    DZ "\rCD/DVD-ROM master found\r"
196
.SLAVECDDVD     DZ "\rCD/DVD-ROM slave found\r"
197
.CHS            DZ "C/H/S: "
198
.SD_NOT_FOUND   DZ "SD Card not found\r"
199
.NEWLINE        DZ "\r"
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