Subversion Repositories pentevo

Rev

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

Rev Author Line No. Line
999 savelij 1
 
1186 savelij 2
; LAST UPDATE: 13.02.2025 savelij
999 savelij 3
 
4
                TITLE "extend.a80"
5
 
6
; ��� ��� ᮧ����� 9 ᥪ�� ������ ��᪠
1120 savelij 7
DSKINFO         DB 0                    ; +0xE1 - ����� ��ࢮ�� ᢮������� ᥪ��
8
                DB 1                    ; +0xE2 - ����� ��ࢮ�� ᢮������� �४�
9
                DB 0x16                 ; +0xE3 - ⨯ ��᪥��
10
                DB 0                    ; +0xE4 - ������⢮ 䠩��� �� ��᪥�
11
SECFREE         DW 2544                 ; +0xE5 - ������⢮ ᢮������ ᥪ�஢
12
                DB 0x10                 ; +0xE7 - �����䨪�樮��� ��� TRDOS
13
                DW 0                    ; +0xE8 - 2 ���� 0
1186 savelij 14
                DB 9 DUP ' '            ; +0xEA - 9 ���� 0x20
1120 savelij 15
                DB 0                    ; +0xF3 - 1 ���� 0
16
                DB 0                    ; +0xF4 - ������⢮ 㤠������ 䠩���
17
                DB "RAMDISKO"           ; +0xF5 - ��� ��᪥��
999 savelij 18
DSK_END
19
 
20
; ��ࠡ��稪 �맮�� RST 8
21
DOS2RST8        EX (SP),HL                      ; HL
22
                PUSH AF                         ; AF
23
                PUSH BC                         ; BC
24
                LD A,R
25
                JP PE,.L1
26
                LD A,R
27
.L1             DI
28
                PUSH AF                         ; RF
29
                PUSH HL                         ; ADR_RET
30
                PUSH DE                         ; DE
31
                IN A,(PEVO_CONF)
32
                LD L,A
33
                OR 1
34
                OUT (PEVO_CONF),A
35
                LD BC,RD_1WINA0
36
                IN A,(C)
37
                LD H,A
1120 savelij 38
                AND 0x3E
999 savelij 39
                RES 0,H
40
                LD B,HIGH (RD_DOS7FFD)
41
                IN E,(C)
42
                RES 4,E
43
                DEC B
44
                IN D,(C)
45
                LD BC,WIN_A0
46
                OUT (C),A
47
                LD B,HIGH (WIN_P0)
48
                XOR A
49
                JP ADR_SEL_ROM
50
 
1120 savelij 51
EDOS2RST8       LD A,ROM_BAS48 | 0x80
999 savelij 52
                LD BC,WIN_A0
53
                CALL WR_BYTE_RET
54
                LD A,L
55
                OUT (PEVO_CONF),A
56
                POP DE
57
                POP HL
58
                POP AF
59
                JP PO,.L1
60
                EI
61
.L1             POP BC
62
                POP AF
63
                EX (SP),HL
64
                RET
65
 
1011 savelij 66
                DUPL 0x0A01 - $,0xFF
67
 
999 savelij 68
; ABCDEFGHIJKLMNOPQRSTUVWXYZ
69
EXTEND_COM     
70
                BBW "CD",CD                     ; ᬥ�� ��� �� FAT ���ன�⢥
71
                BBW "CLRCMOS",CLRCMOS           ; ��� CMOS �� ���祭�� �� 㬮�砭��
72
                BBW "DIR",DIR                   ; ����� ᮤ�ন���� ��४�ਨ �� FAT
73
                BBW "DRIVE",DRIVE               ; ����� ���������/��४��祭�� ⥪�饣� FAT ���ன��
74
                BBW "HELP",HELP                 ; �뢮� ᯨ᪠ ��������� ������
75
                BBW "MOUNT",MOUNT               ; ����஢���� ��ࠧ� �� �㪢� A..D
1120 savelij 76
                BBW "UMOUNT",UMOUNT             ; ������஢���� ��ࠧ� �� �㪢� A..D
999 savelij 77
                BBW "VER",PRT_VERS              ; ����� ���ᨨ � ���� ᡮન DOS
78
                BBW "VIRT",SET_VIRT             ; �����/��४��祭�� ����㠫쭮�� ��᪮����
1120 savelij 79
                BBW "TURBO",SET_TURBO           ; �ਭ㤨⥫쭮� ��४��祭�� ��࡮
999 savelij 80
                DB 0
81
 
82
; ��ࠡ��稪 ���७��� ������
83
END_EXT_COM     INC DE
84
                LD A,(DE)
85
                CP ":"
86
                DEC DE
87
                JP NZ,SINTAX_ERROR
88
                LD A,(DE)
89
                AND 0DFH
90
                SUB "A"
91
                JP C,SINTAX_ERROR
92
                CP 4
93
                JR NC,SELFATDRV
94
                LD (TRD_5CF6),A                 ; ��᪮��� ��� �६����� ����樨
95
                LD (TRD_5D19),A                 ; ��᪮��� �� 㬮�砭��
96
                LD B,A
97
                LD A,(TRD_5D16)                 ; ����� ��⥬���� ॣ���� (���� 0xFF)
98
                AND 7CH
99
                OR B
100
                LD (TRD_5D16),A                 ; ����� ��⥬���� ॣ���� (���� 0xFF)
101
                LD HL,ERR_OK
102
                PUSH HL
1186 savelij 103
SET_CURRVIRT    LD H,CMOS.VIRT_REAL_DRIVE
999 savelij 104
                CALL READCMOS
105
                AND %00000011
106
                LD L,A
107
                LD A,B
108
                RLCA
109
                RLCA
110
                OR L
111
                LD L,A
112
        RST8D _CMOS_RW,_WRITE_CMOS
113
                RRCA
114
                RRCA
115
                AND 3
1120 savelij 116
                OR 0x3C
999 savelij 117
                RET
118
 
119
SELFATDRV       SUB 4
120
                PUSH AF
121
        RST8D _COM_DEV,_DEVFIND
122
        RST8D _COM_DEV,_KOL_VOL
123
                POP AF
124
                CP E
125
                JP NC,SINTAX_ERROR
126
        RST8D _COM_DEV,_SET_VOL
127
                JP ERR_OK
128
 
129
COM_DOT         CALL EXIT_IF_SINTAX
130
                LD HL,EXTEND_COM
131
NEXT_CMP_COM    LD A,1
132
                LD (TRD_5CEF),A
133
                LD DE,(TRD_5D11)
134
                INC DE
135
                LD A,(HL)
136
                INC HL
137
                AND A
138
                JP Z,END_EXT_COM
139
                LD B,A
140
LOC_C34         LD A,(DE)
141
                AND 0DFH
142
                CP (HL)
143
                JR NZ,PROPUSK
144
                INC DE
145
                INC HL
146
                DJNZ LOC_C34
147
                LD A,(DE)
148
                CP 0DH
149
                JR Z,NO_PARAM
150
                CP " "
151
                JR Z,GET_PARAM
152
                JR LOC_C58
153
 
154
PROPUSK         INC HL
155
                DJNZ PROPUSK
156
LOC_C58         INC HL
157
                INC HL
158
                JR NEXT_CMP_COM
159
 
160
GET_PARAM       INC DE
161
NO_PARAM        LD A,(HL)
162
                INC HL
163
                LD H,(HL)
164
                LD L,A
165
                PUSH HL
166
                LD HL,END_COMAND
167
                EX (SP),HL
168
                JP (HL)
169
 
170
; �뢮� ����� ����㠫쭮�� ��᪠ �᫨ �� 㪠���� ��� ��� ���������
171
PRT_NUM_VIRT    LD HL,TXT4VIRTDRV
172
                LD B,ETXT4VIRTDRV-TXT4VIRTDRV-1
173
                CALL PRT_B_HL_
174
                LD A," "
1120 savelij 175
                RST 0x10
1186 savelij 176
                LD H,CMOS.VIRT_REAL_DRIVE
999 savelij 177
                CALL READCMOS
178
                AND 3
179
                ADD A,"A"
1120 savelij 180
                RST 0x10
181
                LD A,0x0D
182
                RST 0x10
999 savelij 183
                RET
184
 
1186 savelij 185
                DB 0x0B01 - $ DUP 0xFF
1011 savelij 186
 
1120 savelij 187
; ���㤨⥫쭮� ��४��祭�� ��࡮
188
SET_TURBO       LD A,(DE)
189
                CP 0x0D
190
                JR Z,.L2
191
                SUB '0'
192
                INC DE
193
                CP 3
194
                JP NC,SINTAX_ERROR
195
                AND A
196
                LD C,_TURBO_LOW
197
                JR Z,.L1
198
                DEC A
199
                LD C,_TURBO_HIGH
200
                JR Z,.L1
201
                LD C,_TURBO_MAX
202
.L1             LD A,C
203
        RST8D _SET_MODE
204
                RET
205
 
206
; ����� ⥪�饩 ����� ������
207
.L2             LD HL,.L3
208
                LD B,.L4-.L3
209
                CALL PRT_B_HL_
210
                LD BC,RD_77
211
                IN D,(C)
212
                LD BC,RD_EFF7
213
                IN E,(C)
214
                LD BC,4
215
                BIT 3,D
216
                LD HL,.L4
217
                JR NZ,.L5
218
                BIT 4,E
219
                ADD HL,BC
220
                JR Z,.L5
221
                ADD HL,BC
222
.L5             LD B,C
223
                JP PRT_B_HL_
224
 
225
.L3             DB "Turbo: "
226
.L4             DB "14.0"
227
                DB "7.0 "
228
                DB "3,5 "
229
 
999 savelij 230
; ��⠭���� ����㠫쭮�� ��᪠
231
SET_VIRT        LD A,(DE)
1120 savelij 232
                CP 0x0D
999 savelij 233
                JR Z,PRT_NUM_VIRT
234
                LD C,A
235
                INC DE
236
                LD A,(DE)
237
                CP ":"
238
                JP NZ,SINTAX_ERROR
239
                LD A,C
240
                CALL NUMDSK2BYTE                ; ����稫� ���� ����� ��᪮���� 㪠����� � ��������� ��ப�
241
        RST8D _MOUNTER,_SET_VIRT
242
                RET
243
 
244
; ����� ���ᨨ ��� � ���� �������樨
1120 savelij 245
PRT_VERS        LD HL,0x3FF8
999 savelij 246
                LD B,6
247
                CALL PRT_B_HL_
248
                LD A," "
1120 savelij 249
                RST 0x10
999 savelij 250
                LD C,(HL)
251
                INC HL
252
                LD B,(HL)
253
                PUSH BC
254
                LD HL,ZASTAVKA_VER
255
                LD B,9
256
                CALL PRT_B_HL_
257
                LD A," "
1120 savelij 258
                RST 0x10
999 savelij 259
                POP BC
260
                LD A,C
1120 savelij 261
                AND 0x1F                        ; �㦭� 5 ���-�᫮ �����
999 savelij 262
                CALL A2TXT                      ; �������� � 㪫���� ����
263
                SRL B
264
                RR C                            ; ᤢ��㫨 ��� 楫��⭮�� ����� �����
265
                LD A,"."
1120 savelij 266
                RST 0x10
999 savelij 267
                LD A,C                          ; ��﫨 ���� �����
268
                RRCA
269
                RRCA
270
                RRCA
271
                RRCA                            ; ᤢ��㫨 � ����訥 ����
1120 savelij 272
                AND 0x0F                        ; ��� �㦭� ⮫쪮 4 ��� �����
999 savelij 273
                CALL A2TXT                      ; �������� � 㪫���� �����
274
                LD A,"."
1120 savelij 275
                RST 0x10
999 savelij 276
                LD A,B                          ; ��﫨 ����� ����
1120 savelij 277
                AND 0x3F                        ; �㦭� ⮫쪮 6 ���
999 savelij 278
                CALL A2TXT                      ; �������� � 㪫���� ����
279
                BIT 6,B                         ; �᫨ ��� 6 (ᤢ����� ��� 7) ��⠭�����
280
                RET Z
281
                LD HL,TXT_BETA
1120 savelij 282
PRT_ROMVER      RST 0x18
283
                LD A,0x0D
284
                RST 0x10
999 savelij 285
                RET
286
 
287
; ����� B = ������⢮ ᨬ����� �� HL = ���� ⥪�� ��� �뢮��
288
PRT_B_HL_       LD A,(HL)
289
                INC HL
1120 savelij 290
                RST 0x10
999 savelij 291
                DJNZ PRT_B_HL_
292
                RET
293
 
294
TXT_BETA        DC " beta"
295
 
296
; ��ॢ�� "A" � ������� � � ⥪��
297
A2TXT           LD L,A
298
                LD H,0
299
                LD DE,10
300
                XOR A
301
                DEC A
302
.L1             INC A
303
                SBC HL,DE
304
                JR NC,.L1
305
                ADD HL,DE
306
                ADD A,"0"
1120 savelij 307
                RST 0x10
999 savelij 308
                LD A,L
309
                ADD A,"0"
1120 savelij 310
                RST 0x10
999 savelij 311
                RET
312
 
313
DRIVES          DC "Drives: "
314
EDRIVES
315
 
316
DRIVE
317
        RST8D _COM_DEV,_DEVFIND
318
                JP C,FAT_NOT_FOUND
319
        RST8D _COM_DEV,_KOL_VOL
320
                LD A,"D"
321
                ADD A,E
322
                PUSH AF
323
                LD HL,DRIVES
1120 savelij 324
                RST 0x18
999 savelij 325
                LD A,"E"
1120 savelij 326
                RST 0x10
999 savelij 327
                LD A,"-"
1120 savelij 328
                RST 0x10
999 savelij 329
                POP AF
1120 savelij 330
                RST 0x10
999 savelij 331
                RET
332
 
333
TXT_DIR         DC "<DIR> "
334
TXT_FATERR      DC "FAT not found"
335
 
336
; ������� DIR
337
DIR             LD B,0
338
                LD A,(DE)
339
                INC DE
340
                CP "/"
341
                JR NZ,DIR06
342
                LD A,(DE)
1120 savelij 343
                AND 0xDF
999 savelij 344
                CP "L"
345
                JR NZ,DIR06
346
                LD B,A
347
DIR06
348
        RST8D _COM_DEV,_DEVFIND
349
                JR NC,DIR061
350
FAT_NOT_FOUND   CALL OPEN_CHAN_0
351
                LD HL,TXT_FATERR                ; �� ������ ࠧ���� �� �������
1120 savelij 352
                RST 0x18
999 savelij 353
                RET
354
 
355
DIR061          PUSH IX
356
                LD IXL,B
357
                CALL CLEAR_SCREEN
358
                CALL OPEN_CHAN_2
359
                LD A,2
360
        RST8D _COM_FAT,_POS_FILES
1120 savelij 361
DIR05           LD E,0x17
999 savelij 362
DIR01           PUSH DE
363
                PUSH BC
364
                LD HL,TRD_5D25
365
        RST8D _COM_FAT,_READ_DIR
1120 savelij 366
                LD DE,0x0B
999 savelij 367
                ADD HL,DE
368
                LD A,(HL)
369
                SBC HL,DE
1120 savelij 370
                AND 0x10
999 savelij 371
                JR Z,DIR04
372
                PUSH HL
373
                LD HL,TXT_DIR
1120 savelij 374
                RST 0x18
999 savelij 375
                POP HL
376
DIR04           LD A,IXL
377
                AND A
378
                JR Z,DIR08
379
                PUSH HL
380
        RST8D _COM_FAT,_GET_LONGNAME
381
                POP HL
382
DIR03           LD A,(HL)
383
                AND A
384
                JR Z,DIR02
385
                INC HL
1120 savelij 386
                RST 0x10
999 savelij 387
                JR DIR03
388
 
389
DIR08           LD B,8
390
DIR081          LD A,(HL)
391
                CP " "
392
                JR Z,DIR082
1120 savelij 393
                RST 0x10
999 savelij 394
                INC HL
395
                DJNZ DIR081
396
DIR082          LD A,B
397
                AND A
398
                JR Z,DIR085
399
DIR086          LD A,(HL)
400
                CP " "
401
                JR NZ,DIR085
402
                INC HL
403
                DJNZ DIR086
404
DIR085          LD A,(HL)
405
                CP " "
406
                JR Z,DIR084
407
                LD A,"."
1120 savelij 408
                RST 0x10
999 savelij 409
DIR084          LD B,3
410
DIR083          LD A,(HL)
411
                CP " "
412
                JR Z,DIR02
1120 savelij 413
                RST 0x10
999 savelij 414
                INC HL
415
                DJNZ DIR083
1120 savelij 416
DIR02           LD A,0x0D
417
                RST 0x10
999 savelij 418
                LD A,4
419
                LD B,1
420
        RST8D _COM_FAT,_POS_FILES
421
                POP HL
422
                AND A
423
                SBC HL,BC
424
                POP DE
425
                JR Z,DIR07
426
                DEC E
427
                JR NZ,DIR01
428
                JR DIR05
429
 
430
DIR07           POP IX
431
                RET
432
 
433
; ������� CD
434
CD              PUSH DE
435
        RST8D _COM_DEV,_DEVFIND
436
                POP HL
437
        RST8D _COM_FAT,_FIND_NAME
438
                JP C,SINTAX_ERROR
439
        RST8D _COM_FAT,_ENTER_DIR
440
                RET
441
 
442
NOMER_DRV
443
        RST8D _COM_DEV,_DEVFIND
444
                CCF
445
                RET NC                          ; �� ������ ࠧ���� �� �������
446
        RST8D _COM_DEV,_KOL_VOL
447
                CALL CREATE_BUF
448
                LD HL,TRD_5D25
449
        RST8D _COM_FAT,_GET_PATH
450
                CALL PRINT2ZERO
451
                CALL DEL_BUF
452
                SCF
453
                RET
454
 
455
; ������� MOUNT
456
MOUNT           PUSH DE
457
        RST8D _COM_DEV,_DEVFIND
458
                EX DE,HL
459
                POP HL
460
                JP C,FAT_NOT_FOUND
461
                PUSH HL
462
        RST8D _COM_FAT,_FIND_NAME
463
                JP C,SINTAX_ERROR
464
                POP DE
1120 savelij 465
                LD B,0x0C
999 savelij 466
MOUNT02         LD A,(DE)
467
                CP "!"
468
                JR C,MOUNT01
469
                INC DE
470
                DJNZ MOUNT02
471
MOUNT01         LD A,(DE)
1120 savelij 472
                CP 0x0D
999 savelij 473
                JP Z,SINTAX_ERROR
474
                CP " "
475
                JP NZ,SINTAX_ERROR
476
                INC DE
477
                LD A,(DE)
478
                CP "A"
479
                JP C,SINTAX_ERROR
1120 savelij 480
                AND 0xDF
999 savelij 481
                CP "E"
482
                JP NC,SINTAX_ERROR
483
                SUB "A"
484
                LD C,A
485
                INC DE
486
                LD A,(DE)
487
                CP ":"
488
                JP NZ,SINTAX_ERROR
489
                LD A,C
490
        RST8D _MOUNTER,_OPEN_MOUNT
491
                RET
492
 
493
; ������� UMOUNT
494
UMOUNT          LD A,(DE)
495
                INC DE
1120 savelij 496
                AND 0xDF
999 savelij 497
                LD B,A
498
                LD A,(DE)
499
                INC DE
500
                CP ":"
501
                JP NZ,SINTAX_ERROR
502
                LD A,B
503
                CP "A"
504
                JP C,SINTAX_ERROR
505
                CP "E"
506
                JP NC,SINTAX_ERROR
507
                SUB "A"
508
        RST8D _MOUNTER,_CLOSEMOUNT
509
                RET
510
 
511
; ������� ���⪨ CMOS
512
CLRCMOS
513
        RST8D _CMOS_RW,_CLEAR_CMOS
514
                RET
515
 
516
; ������� �뢮�� �� ��࠭ ᯨ᪠ ���७��� ������
517
HELP            CALL CLEAR_SCREEN
518
                CALL OPEN_CHAN_2
519
                LD HL,EXTEND_COM
520
HELP4           LD C,3
521
HELP2           LD A,(HL)
522
                AND A
523
                RET Z
524
                INC HL
525
                LD B,A
526
                PUSH BC
527
                LD A,"."
1120 savelij 528
                RST 0x10
999 savelij 529
HELP1           LD A,(HL)
530
                INC HL
1120 savelij 531
                RST 0x10
999 savelij 532
                DJNZ HELP1
533
                INC HL
534
                INC HL
535
                POP BC
536
                LD A,9
537
                SUB B
538
                LD B,A
539
HELP3           LD A," "
1120 savelij 540
                RST 0x10
999 savelij 541
                DJNZ HELP3
542
                DEC C
543
                JR NZ,HELP2
1120 savelij 544
                LD A,0x0D
545
                RST 0x10
999 savelij 546
                JR HELP4
547
 
548
; �⥭�� CMOS
549
; �� �室�: H - ���� �祩��
550
;           L - ���⠭��� ���祭��
551
READCMOS        PUSH BC
552
                LD BC,CMOSD_SET_ADR
553
                OUT (C),H
554
                LD B,HIGH (CMOSD_RD_WR)
555
                IN L,(C)
556
                POP BC
557
                LD A,L
558
                AND A
559
                RET
560
 
561
; ������ CMOS
562
; �� �室�: H - ���� �祩��
563
;           L - �� �㤠 �������
564
WRITECMOS
565
        RST8D _CMOS_RW,_WRITE_CMOS
566
                RET