Subversion Repositories pentevo

Rev

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

Rev Author Line No. Line
627 savelij 1
 
736 savelij 2
;LAST UPDATE: 31.12.2016 savelij
627 savelij 3
 
4
;        MAIN   "DOSI*",0XC6
5
;        ORG    0X321C
6
SETERRAD
7
;call из 0X246
8
;вместо 0X21D
9
        LD      A,0X0D
10
        LD      (0X5D20),A
11
        JP      0X21D
12
POSIT
13
;call из 0X20CC
14
;вместо 0X3E44
15
        PUSH    HL
16
        PUSH    BC
17
        PUSH    AF
18
        PUSH    DE
19
        LD      A,0XED
20
        LD      (0X5C86),A
21
        LD      A,0X0C
22
        LD      (0X5C8A),A
23
        LD      A,E
24
         JR     LL323d
25
LL3235
26
        LD      A,(HL)
27
        CP      0XFF
28
        RET     Z
29
        RST     0X10
30
        INC     HL
31
        JR      LL3235
32
LL323d
33
        LD      B,"0"
34
LL323f  SUB     10
35
         JR     C,LL3246
36
        INC     B
37
         JR     LL323f
38
LL3246
39
        PUSH    AF
40
        LD      A,B
41
        RST     0X10
42
        POP     AF
43
                ADD A,0X30+10;        ADD       A,"0"+10
44
        RST     0X10
45
        POP     DE
46
        POP     AF
47
        POP     BC
48
        POP     HL
49
        EI     
50
        JP      0X3E44 ;позиционирование
51
 
52
       ;DS 3,0XFF
53
 
54
TFormTS
55
        DB      "Format track       Side",0
56
 
57
       ;DS 3,0XFF
58
 
59
TFile
60
        DB      0X16,0,0
61
        DB      "File ",34
62
        DB      0X13,1,0XFF
63
TExists
64
        DB      0X13,0
65
        DB      34,0XD
66
       ;DB "Exists... Over write?(Y/N)"
67
        DB      "Exists!Overwrite?(Y/N/Add)"
68
        DB      0XFF
69
TComplete
70
        DB      "Complete"
71
        DB      0XD
72
        DB      "Name:",0
73
TFORMAT
74
        DB      "FORMAT:   1 - Normal   "
75
        DB      0XD,0X17,0XA
76
        DB      " 2 - Turbo"
77
        DB      0XD,0X17,0XA
78
        DB      " 3 - Fast turbo"
79
        DB      0
80
 
81
       ;DS 6,0XFF
82
CHECKON
83
;call из 0X20C1
84
;вместо XOR A:INC HL:LD (HL),A ;0X5CD8
85
        INC     HL
86
        LD      A,(0X5CE8)
87
        LD      (HL),A
88
        XOR     A
89
        RET    
90
PRHD1
91
;call из 0X20DE
92
;вместо 0X330F
93
        PUSH    AF
94
        LD      A,"1"
95
        JR      LL32f9
96
PRHD0
97
;call из 0X20D2
98
;вместо 0X32DD
99
        PUSH    AF
100
        LD      A,"0"
101
LL32f9
102
        PUSH    AF
103
        LD      A,0XF8
104
        LD      (0X5C86),A
105
        LD      A,0X17
106
        LD      (0X5C8A),A
107
        POP     AF
108
        RST     0X10
109
        POP     AF
110
        JP      0X1FFD ;форматирование дорожки
111
LL330a
112
;кнопка для Overwrite
113
        CALL    0X1D9F ;очистка низа экрана
114
        LD      HL,TFile
115
        CALL    LL3235
116
        CALL    LL3329
117
        LD      HL,TExists
118
        CALL    LL3235
119
        LD      HL,0X4000
120
LL331f  DEC     HL
121
        LD      A,H
122
        OR      L
123
        JR      NZ,LL331f
124
        CALL    0X1052 ;ввод клавиши с ожиданием
125
        JR      LL3338
126
LL3329
127
        LD      A,(0X5CF6)
128
        ADD     A,"A"
129
        RST     0X10
130
        LD      A,":"
131
        RST     0X10
132
        LD      HL,0X5CDD ;адрес имени
133
        JP      0X2938 ;печать имени с расширением
134
LL3338
135
        PUSH    AF
136
        CALL    0X1D9F ;очистка низа экрана
137
        POP     AF
138
        CP      "Y"
139
        RET     Z
140
        CP      "A";0XD
141
        RET    
142
LL3343
143
;если при записи есть такой файл
144
;из 1AC1, SVNASTRDSK
145
        CALL    0X165D ;перенос описателя из буфера в память
146
        LD      HL,0X5CE5
147
        SET     7,(HL) ;включает overwrite=ON
148
        RET    
149
FORMDISK
150
;call из 0X1F1B
151
;вместо 0X20BD
152
        CALL    0X1D9F ;очистка низа экрана
153
        LD      HL,TFormTS
154
        RST     0X18
155
        CALL    0X20BD ;форматирование диска
156
        CALL    0X1D9F ;очистка низа экрана
157
        LD      HL,TComplete
158
        RST     0X18
159
        RET    
160
TPressR
161
;для ASKREPFORM
162
        DB      "Press R to repeat";,"."+0X80,0
163
                DC "."
164
                DB 0
165
SAVEFIL
166
;jp из 0X290C
167
;еще jr ниже
168
;вместо 0X1B53
169
        CALL    0X1D9F ;очистка низа экрана
170
        CALL    0X3E11 ;выборка типа дисковода
171
         RET   
172
SELFORMAT
173
;call из 0X1EDD
174
;вместо 0X3200
175
        CALL    0X1D9F ;очистка низа экрана
176
        LD      HL,TFORMAT
177
        RST     0X18
178
LL337f  CALL    0X1052 ;ввод клавиши с ожиданием
179
        CP      0X11
180
        JR      Z,LL3395
181
         CP     0X12
182
        JR      Z,LL33a1
183
         CP     0X13
184
        JR      Z,LL33a6
185
         CP     0
186
        JP      Z,0X01D3 ;п/п завершения
187
         JR     LL337f
188
LL3395
189
        LD      HL,0X1FB9 ;табл.секторов SLOW диска
190
LL3398  XOR     A
191
LL3399  LD      (0X5CE8),A
192
        LD      (0X5CE6),HL
193
        JR      SAVEFIL
194
LL33a1
195
        LD      HL,LL33ad ;табл.сект.FAST
196
        JR      LL3398
197
LL33a6
198
        LD      A,0X01
199
        LD      HL,LL33ad ;табл.сект.FAST
200
        JR      LL3399
201
LL33ad
202
;надо 0X325A
203
        DB      1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,1
204
SUB14
205
        LD      A,L
206
        SUB     0X0E
207
        LD      L,A
208
        RET     NC
209
        DEC     H
210
        RET    
211
 
212
       ;DS 9,0XFF
213
 
214
PARAMZAG
215
;call из 0X18AB
216
;вместо a,(0X5CD6)
217
;якобы фикс PEEK, но заглючивает Wolfed
218
        LD      A,(0X5CE5)
219
        CP      "B"
220
        JR      Z,LL33e2
221
        CP      "D"
222
        JR      Z,LL33e2
223
        CP      "#"
224
        JR      Z,LL33e2
225
        LD      A,"C"
226
       ;LD (0X5CE5),A ;зачем???
227
LL33e2  LD      A,(0X5CD6)
228
        RET    
229
SVNASTRDSK
230
        CALL    0X1CF0 ;поиск файла
231
        CALL    Z,LL3343 ;перенос опис.из буф.в пам.и вкл.Overwr=ON
232
LL33ec  CALL    0X0405 ;настр.на диск.Меняет перем-ю с типом диск-да
233
        CALL    0X1AC4 ;проверка =128 файлов
234
        JP      0X1B53 ;запись файла и инфы о нем
235
SAVER
236
;call из 0X1B53
237
;было 0X1B59
238
        LD      HL,0X5CE5 ;тип файла + "file exist" flag
239
        BIT     7,(HL)
240
        RES     7,(HL)
241
        ;JR NZ,LL33ff
242
        JP      Z,0X1B59
243
LL33ff
244
        CALL    LL330a ;Y/N
245
        JP      NZ,0X01D3 ;п/п завершения
246
       CP       "A"
247
       JP       Z,0X1B59
248
        LD      DE,(0X5CD9)
249
       DEC      DE
250
       INC      D
251
       ;LD A,E
252
       ;OR A
253
       ;JR Z,$+3
254
       ;INC D
255
        LD      A,(0X5CEA)
256
        CP      D
257
        JR      Z,LL341b
258
        CALL    0X2926 ;стирание файла
259
        JR      LL33ec
260
 
261
LL341b  LD      B,D
262
        LD      HL,(0X5C59)
263
        LD      (HL),0XAA
264
        INC     HL
265
        LD      DE,(0X5CD1)
266
        LD      (HL),E
267
        INC     HL
268
        LD      (HL),D
269
        LD      C,0X06
270
        LD      HL,(0X5CDB)
271
        LD      (0X5CE8),HL
272
        LD      HL,(0X5CD7)
273
        LD      (0X5CE6),HL
274
        LD      DE,(0X5CEB)
275
        CALL    0X1E4D
276
        LD      BC,(0X5D1E)
277
        CALL    0X1BBF
278
         CALL   0X1665
279
         RET   
280
OBROSH
281
;jp из 0X3D17
282
;вместо 0X2F69
283
        EI     
284
        JP      0X2F69
285
 
286
                IF 0;       IFN 0
287
bootkus2
288
;       DISP    bootst2
289
         NOP    ;посл.байт DEC (IX)
290
         LD     A,(IX+0X00)
291
        CP      0XFF
292
        JR      NZ,LL345b
293
        LD      A,(0XF86F)
294
         LD     (IX+0X00),A
295
LL345b  CALL    0XF7FA
296
        CALL    0XF816
297
        JP      0XF646
298
 
299
        CALL    0XF870
300
        CALL    0XF826
301
         INC    (IX+0X00)
302
        LD      A,(0XF86F)
303
        INC     A
304
         CP     (IX+0X00)
305
         LD     A,(IX+0X00)
306
        JR      NZ,LL347d
307
        XOR     A
308
         LD     (IX+0X00),A
309
LL347d  CALL    0XF7FA
310
        CALL    0XF816
311
        JP      0XF646
312
 
313
        CALL    0XF870
314
        CALL    0XF826
315
         DEC    (IX+0X00)
316
         DEC    (IX+0X00)
317
         DEC    (IX+0X00)
318
         BIT    7,(IX+0X00)
319
         LD     A,(IX+0X00)
320
        JR      Z,LL34b3
321
LL349e  LD      B,0X03
322
        ADD     A,B
323
        LD      B,A
324
        PUSH    BC
325
        LD      A,(0XF86F)
326
        SUB     B
327
        JR      C,LL34ac
328
        POP     AF
329
        JR      LL349e
330
LL34ac
331
        POP     AF
332
         DEC    A
333
         DEC    A
334
         DEC    A
335
        LD      (IX+0X00),A
336
LL34b3  CALL    0XF7FA
337
        CALL    0XF816
338
        JP      0XF646
339
 
340
        CALL    0XF870
341
        CALL    0XF826
342
         INC    (IX+0X00)
343
         INC    (IX+0X00)
344
         INC    (IX+0X00)
345
        LD      A,(0XF86F)
346
         SBC    A,(IX+0X00)
347
         LD     A,(IX+0X00)
348
        JR      NC,LL34e1
349
        LD      B,0X03
350
LL34d8  SUB     B
351
        JR      NC,LL34d8
352
         INC    A
353
         INC    A
354
         INC    A
355
        LD      (IX+0X00),A
356
LL34e1  CALL    0XF7FA
357
        CALL    0XF816
358
        JP      0XF646
359
 
360
        CALL    0X0D6B
361
        LD      A,0X03
362
        CALL    0XF8CB
363
        JP      0XF556
364
 
365
        LD      BC,0XFFFD
366
        LD      A,0X07
367
        OUT     (C),A
368
        LD      B,0XBF
369
        LD      A,0XFF
370
        OUT     (C),A ;глушит AY
371
        CALL    0XF870
372
        LD      A,0X07
373
        LD      (0X5C48),A
374
        LD      (0X5C8D),A
375
        CPL    
376
        LD      (0X5D3B),A
377
        LD      HL,0X3C00
378
        LD      (0X5C36),HL
379
        LD      L,(IX+0X00)
380
         LD     H,0X00
381
        ADD     HL,HL
382
        ADD     HL,HL
383
        ADD     HL,HL
384
        LD      DE,0XA000
385
        ADD     HL,DE
386
        LD      DE,0XF7F0
387
        LD      BC,0X0008
388
        LDIR   
389
        LD      HL,(0XF632)
390
        LD      (0X5C3D),HL
391
        LD      HL,0XF7EC
392
        LD      (0X5C5D),HL
393
        CALL    0X0D6B
394
        DI     
395
        POP     HL
396
        EXX    
397
        POP     BC
398
        POP     DE
399
        POP     HL
400
        POP     AF
401
        CALL    0X3D03
402
        JP      PE,0XF73A
403
        LD      (0X6F62),HL
404
        LD      L,A
405
        LD      (HL),H
406
         JR     NZ,LL356e
407
         JR     NZ,LL3570
408
         LD     (0XD50D),HL
409
        INC     A
410
        LD      HL,0X5802
411
        LD      DE,0X000A
412
LL355a  DEC     A
413
        JR      Z,LL356c
414
        ADD     HL,DE
415
        DEC     A
416
        JR      Z,LL356c
417
        ADD     HL,DE
418
        DEC     A
419
        JR      Z,LL356c
420
        INC     DE
421
        INC     DE
422
        ADD     HL,DE
423
        DEC     DE
424
        DEC     DE
425
        JR      LL355a
426
LL356c
427
        POP     DE
428
        RET    
429
LL356e
430
        PUSH    HL
431
        EXX    
432
LL3570  POP     HL
433
        LD      A,0X70
434
        PUSH    HL
435
        POP     DE
436
        INC     DE
437
        LD      BC,0X0007
438
        LD      (HL),A
439
        LDIR   
440
        EXX    
441
        RET    
442
 
443
        PUSH    HL
444
        EXX    
445
        POP     HL
446
        LD      A,0X42
447
        PUSH    HL
448
        POP     DE
449
        INC     DE
450
        LD      BC,0X0007
451
        LD      (HL),A
452
        LDIR   
453
        EXX    
454
        RET    
455
 
456
        PUSH    HL
457
        PUSH    DE
458
        SBC     HL,DE
459
        LD      A,(HL)
460
        LD      B,0X20
461
        SBC     A,B
462
        JR      C,LL35c3
463
        LD      IX,0XF981
464
        PUSH    HL
465
        LD      BC,0X0800
466
LL35a0  LD      A,(HL)
467
        CP      (IX+0X00)
468
        JR      NZ,LL35a7
469
        INC     C
470
LL35a7  INC     HL
471
        INC     IX
472
        DJNZ    LL35a0
473
        LD      A,C
474
        CP      0X08
475
        JR      NZ,LL35b4
476
        POP     HL
477
        JR      LL35c3
478
LL35b4
479
        EXX    
480
        POP     HL
481
        LD      BC,0X0008
482
        LDIR   
483
        EXX    
484
        LD      A,(0XF86E)
485
        INC     A
486
        LD      (0XF86E),A
487
LL35c3  POP     DE
488
        POP     HL
489
        RET    
490
 
491
        NOP    
492
        NOP    
493
 
494
        PUSH    AF
495
        PUSH    BC
496
        LD      B,0XD2
497
LL35cc  PUSH    BC
498
        XOR     A
499
        OUT     (0XFE),A
500
        RR      B
501
LL35d2  DJNZ    LL35d2
502
        SET     4,A
503
        OUT     (0XFE),A
504
        POP     BC
505
        DEC     B
506
        DJNZ    LL35cc
507
        POP     BC
508
        POP     AF
509
        RET    
510
 
511
        XOR     A
512
        CP      (IY+0X47)
513
        JP      NZ,0XF556
514
        CALL    0X0D6E
515
        LD      A,0X02
516
        CALL    0X1601
517
        XOR     A
518
        CALL    0XF8CB
519
        LD      A,0X01
520
        CALL    0X1601
521
        LD      (IY+0X47),0XFE
522
        JP      0XF795
523
 
524
        XOR     A
525
        CP      (IY+0X47)
526
        JP      NZ,0XF556
527
        CALL    0X0D6E
528
        LD      A,0X02
529
        CALL    0X1601
530
        LD      A,0X01
531
        CALL    0XF8CB
532
        LD      A,0X3F
533
        LD      (0XF86E),A
534
        LD      BC,0XFFFF
535
LL361a  NOP    
536
        DJNZ    LL361a
537
        DEC     C
538
        JR      NZ,LL361a
539
        JP      0XF5B4
540
 
541
        LD      DE,0XF8D1
542
        JP      0X0C0A
543
 
544
        DB      0X80
545
        DB      0X16,0X0A,0X05
546
        DB      "!!! NO  PROGRAMS !!!"
547
                DC " ";        DB       " "+0X80
548
 
549
        DB      0X16,0X0A,0X03,0X10,0X04
550
        DB      "MORE THAN 63 BASIC FILES"
551
;than!!!
552
                DC " ";        DB       " "+0X80
553
 
554
        DB      0X11,0X00,0X10,0X04,0X13,0X01
555
        DB      "     -=New ROM boot v1.06=-"
556
        DB      0X06
557
        DB      "Remix by CompoWellcome 05.02.99"
558
                DC ".";        DB       "."+0X80
559
 
560
        DB      0X10,0X02,0X13,0X01
561
        DB      "       INSERT NEW DISK"
562
        DB      0X06
563
        DB      "     FOR READING CATALOGUE."
564
;catalogue!
565
                DC " ";        DB       " "+0X80
566
 
567
        DB      "boot    "
568
 
569
        LD      HL,0X5AE1
570
        PUSH    HL
571
        POP     DE
572
        DEC     DE
573
        LD      BC,0X001F
574
        LDIR   
575
        LD      HL,0X5AFF
576
        LD      A,(0XF9BA)
577
        OR      A
578
        JR      Z,LL3703
579
        LD      A,(HL)
580
        AND     0X07
581
        INC     A
582
        CP      0X08
583
        JR      NZ,LL3710
584
        XOR     A
585
        LD      (0XF9BA),A
586
        LD      A,0X07
587
LL3703  LD      A,(HL)
588
        AND     0X07
589
        DEC     A
590
        OR      A
591
        JR      NZ,LL3710
592
        CPL    
593
        LD      (0XF9BA),A
594
        LD      A,0X01
595
LL3710  LD      (HL),A
596
        RET    
597
LL3712
598
         NOP   
599
        LD      A,0XC3
600
        LD      (0X5CC2),A
601
        LD      HL,0XF9E6
602
        LD      (0X5CC3),HL
603
        LD      IX,0X2FC1
604
        CALL    0XFA20
605
        LD      A,0X08
606
        LD      C,0X1F
607
        LD      IX,0X2A53
608
        CALL    0XFA20
609
        LD      (0XF9E7),SP
610
        LD      DE,0X0000
611
        LD      IX,0X2740
612
        CALL    0XFA20
613
        LD      SP,0X0000
614
        LD      IX,0X1FF3
615
        CALL    0XFA20
616
        LD      IX,0X1FEB
617
        CALL    0XFA20
618
        LD      IX,0X2FC1
619
        CALL    0XFA20
620
        LD      A,0XC9
621
        LD      (0X5CC2),A
622
        LD      A,(0X5CCD)
623
        AND     0X40
624
        RET    
625
LL3761
626
        LD      A,0X30
627
        INC     A
628
        CP      0X33
629
        LD      (0XFA0A),A
630
        JP      NZ,0XF6D0
631
        LD      A,0X30
632
        LD      (0XFA0A),A
633
        JR      LL3761
634
 
635
        DI     
636
        LD      IX,0X0000
637
        PUSH    IX
638
        JP      0X3D2F
639
                DUPL 3,0XFF;        DS  3,0XFF
640
bootln2 := $-bootst2
641
;       ENT     
642
;        ORG    ROM
643
;       DISP    0
644
;        ORG    bootkus2+bootln2
645
       ENDIF   
646
POSITPP
647
;jp из 0X3E4E
648
        PUSH    AF
649
        LD      A,(0X5CCE) ;0=READ,0XFF=WRITE
650
        OR      A
651
        JR      Z,POSppRD
652
        POP     AF
653
        PUSH    BC
654
        LD      B,A
655
        IN      A,(0X3F)
656
         CP     B ;в 0X3E52 это уже есть!
657
         POP    BC
658
        JP      POSITCONT;0X3E54
659
POSppRD
660
        POP     AF
661
        IN      A,(0X1F)
662
        AND     0X80
663
         JP     POSITCONT;0X3E54
664
       ;DB 0XFF
665
 
666
                IF resident=1;       IFN        resident
667
PPNORESC000
668
;если нет резидента 0XC000
669
;jp из 0X3C48
670
    ;проверка резидента 0XFFF0
671
        LD      HL,0XFFF0
672
        XOR     A
673
LL379e  XOR     (HL)
674
        ADC     A,H
675
        INC     L
676
        JR      NZ,LL379e
677
        CP      0X06 ;"RESIDENTPRESENT!"
678
               ;идиотизм - опять 8bit!
679
        JP      Z,0XC000
680
       IF       atm-3
681
        JP      9
682
       ELSE    
683
        XOR     A
684
        CALL    MEMDRV_
685
    ;проверка недокументированного резидента 0X5B00
686
        LD      B,0X13
687
        LD      H,0X5B
688
        XOR     A
689
LL37b1  XOR     (HL)
690
        ADC     A,L
691
        ADC     A,(HL)
692
        INC     L
693
        DJNZ    LL37b1
694
        CP      0X68
695
               ;идиотизм - опять 8bit!
696
       ;JP NZ,A7JP9;0X3C4B
697
       LD       A,7
698
       JP       NZ,9
699
        XOR     A
700
        LD      (0X5B04),A
701
        LD      (0X5B0D),A
702
                IF madrom=1;       IFN  madrom
703
        LD      HL,0XFE00
704
       ELSE    
705
        LD      HL,0X00C7
706
       ENDIF   
707
        LD      (0X5B11),HL
708
        JP      0X5B00
709
       ENDIF    ;~atm3
710
       ENDIF    ;resident
711
 
712
       ;DB 0XFF
713
 
714
USEmovSPD
715
;call из 0X3EBF
716
;вместо 0X3E44
717
        PUSH    HL
718
        PUSH    AF
719
        CALL    0X3E08 ;взять время перемещ.головки тек.дисковода
720
        LD      B,A
721
        POP     AF
722
        POP     HL
723
        JP      0X3E44
724
NEWER
725
;вместо 0X1DCD
726
        LD      HL,(0X5D11)
727
        INC     HL
728
        LD      A,(HL)
729
        CP      0XD
730
        JR      Z,NEWRel
731
        CALL    0X1DCD ;NEW new,old
732
        JP      L53D
733
NEWRel
734
        LD      HL,TRel
735
        RST     0X18
736
        JP      0X01D3 ;п/п завершения
737
TRel
738
       ;DB "Rel: 08.10.99",0XD,0
739
        DB      "Rel: 10.04.06",0XD,0
740
 
741
       ;DS 0X3800-$,0XFF
742
       ;ORG 0X3800
743
TCH1
744
;1-ая основная точка входа
745
        LD      A,(0X5CF6)
746
        CP      0X03
747
        JR      Z,L1
748
        LD      A,(0X5CCE)
749
        CALL    0X1E36 ;загрузка регистра дорожки
750
        JP      TCH1Q;0X1E70
751
L1
752
        PUSH    DE
753
        CALL    TEST_R
754
        JP      NZ,0X3EE1;NO DISK
755
        POP     DE
756
        POP HL
757
        POP BC
758
        XOR     A
759
        OR      B
760
        RET     Z
761
RD_SV
762
        PUSH    BC
763
        PUSH HL
764
        CALL    SECTR
765
        POP     HL
766
        INC     H
767
        PUSH    HL
768
        LD      HL,0X5CF4
769
        LD      A,0X10
770
        INC     (HL)
771
        CP      (HL)
772
        JR      NZ,LL3838
773
        LD      (HL),0X00
774
        INC     HL
775
        INC (HL)
776
LL3838  POP     HL
777
        POP BC
778
        DJNZ    RD_SV
779
        RET    
780
 
781
;Тест наличия Ram-Disk'а
782
;точнее, памяти под него
783
;для 128K - вроде как дисковод D
784
TEST_R
785
        DI     
786
       IF       atm=0
787
        LD      HL,0XFF10
788
        CALL    FPG
789
        OUT     (C),L
790
        LD      D,(HL)
791
        LD      (HL),H
792
        LD      A,0X90
793
        OUT     (C),A
794
        LD      E,(HL)
795
        LD      (HL),L
796
        OUT     (C),L
797
        LD      B,H
798
        LD      A,B
799
        CP      (HL)
800
        JR      NZ,L2
801
        LD      B,0X7F
802
        LD      (HL),D
803
        LD      A,0X90
804
        OUT     (C),A
805
        LD      (HL),E
806
        OUT     (C),L
807
       ENDIF   
808
        LD      A,0X08
809
        LD      B,0X83
810
L2
811
        PUSH    AF
812
        LD      (0X5CFD),A
813
        LD      A,B
814
        LD      (0X5CCB),A
815
        XOR     A
816
        OUT     (0XFF),A
817
        LD      A,(0X5CF6)
818
        ADD     A,0X3C
819
        LD      (0X5D16),A
820
        OUT     (0XFF),A
821
        LD      A,0XD0
822
        OUT     (0X1F),A
823
       IF       atm=0
824
        LD      A,(F_PAGE)
825
        LD      BC,0X7FFD
826
        OUT     (C),A
827
       ENDIF   
828
        POP     AF
829
        RET    
830
SECTR
831
        LD      DE,(0X5CF4)
832
        LD      A,H
833
        CP      0XBF
834
        JR      C,RED_SAV
835
        LD      A,0XFF
836
        CALL    LL38A6
837
        LD      A,(0X5CCE)
838
        AND     A
839
        JR      Z,LL38C0
840
        LD      DE,0X5D25
841
        LD BC,0X0100
842
        LDIR   
843
        LD      HL,0X5D25
844
        LD DE,(0X5CF4)
845
        CALL    RED_SAV
846
LL38A4  LD      A,0X00
847
LL38A6          EX AF,AF';  EXA
848
        LD      A,(0X5CCE)
849
                EX AF,AF';        EXA   
850
        LD      (0X5CCE),A
851
        PUSH    HL
852
        PUSH DE
853
        LD      HL,0X5D25
854
        LD DE,0X000F
855
        CALL    RED_SAV
856
        POP     DE
857
        POP HL
858
        EX      AF,AF'
859
        LD      (0X5CCE),A
860
        RET    
861
LL38C0
862
        PUSH    HL
863
        LD      HL,0X5D25
864
        CALL    RED_SAV
865
        LD      HL,0X5D25
866
        POP     DE
867
        LD      BC,0X0100
868
        LDIR   
869
        JR      LL38A4
870
 
871
;Собственно чтение-запись из/в RAM-DISK
872
RED_SAV
873
        DI     
874
        CALL    FPG ;ищем тек.страницу на каждом секторе...
875
                 ;BC=7ffd (для ATM BC=fff7)
876
        LD      A,D ;лог.дорожка
877
;---Если RD расположен в верхних 512К---
878
                IF 0;       IFN 0
879
       CPL      ;растет сверху
880
        RLCA   
881
        AND     0XC0
882
        LD      C,A
883
        LD      A,D
884
        RRCA   
885
        RRCA   
886
        AND     0X07
887
        OR      0X30
888
        OR      C
889
        LD      C,0XFD
890
        OUT     (C),A
891
       ENDIF   
892
;----Если RD расположен во всех 896К----
893
                IF 1;       IFN 1
894
;               IF atm=1;       IFN     atm
895
       IF       atm=3
896
        RRCA   
897
        RRCA   
898
        AND     0X3F
736 savelij 899
       ADD      A,RAM_DATARAMD;9 ;Savelij RAMDISK
627 savelij 900
       ;OR 64 ;ОЗУ, не 7ffd
901
        OUT     (C),A
902
        LD      B,0XF7
903
        OUT     (C),A
904
       ELSE     ;atm2
905
        RRCA   
906
        RRCA   
907
        AND     0X3F
908
        OR      64 ;ОЗУ, не 7ffd
909
        OUT     (C),A
910
       ENDIF   
911
       ELSE    
912
       CPL      ;растет сверху
913
        RRCA   
914
        RRCA   
915
        AND     0X3F
916
      ;ADD A,8
917
        PUSH    AF
918
        AND     0X27
919
        OR      0X10
920
        LD      C,A
921
        POP     AF
922
        RLCA   
923
        RLCA   
924
        RLCA   
925
        AND     0XC0
926
        OR      C
927
        LD      C,0XFD
928
        OUT     (C),A
929
       ENDIF   
930
;       ENDIF  
931
;----Если RD размером 384К (при 512К)---
932
                IF 0;       IFN 0
933
        RRCA   
934
        RRCA   
935
        AND     0X3F
936
        ADD     A,8
937
        LD      C,A
938
        OR      0X10
939
        SLA     C
940
        SLA     C
941
        SLA     C
942
        OR      C
943
        AND     0XD7
944
        LD      C,0XFD
945
        OUT     (C),A
946
       ENDIF   
947
;---------------------------------------
948
 
949
        LD      A,D
950
        RLCA   
951
        RLCA   
952
        RLCA   
953
        RLCA   
954
        AND     0X30
955
        ADD     A,E
956
        OR      0XC0
957
        LD      D,A
958
        LD E,0X00
959
        LD      A,(0X5CCE)
960
        AND     A
961
        JR      NZ,LL38F9
962
        EX      DE,HL
963
LL38F9  LD      BC,0X0100
964
        LDIR   
965
;               IF atm=1;       IFN     atm
966
       IF       atm=3
967
;адресация по 7FFD (FFF7, F7F7 неизвестно как восстановить)
968
        LD      A,0XFF ;7ffd used
969
        LD      BC,0XFFF7
970
        OUT     (C),A
971
        LD      A,(F_PAGE)
972
        LD      BC,0X7FFD
973
        OUT     (C),A
974
       ELSE     ;atm2
975
        LD      A,(F_PAGE)
976
        AND     0XF
977
        OR      0X10
978
        LD      BC,0X7FFD
979
        OUT     (C),A
980
        LD      A,(F_PAGE)
981
        AND     0XE0 ;5,7,6
982
        LD      C,A
983
        RRA    
984
        RRA    
985
        RRA    
986
        OR      C
987
        AND     0X38 ;5,4,3
988
        CPL     ;7ffd used
989
        LD      BC,0XFFF7
990
        OUT     (C),A
991
       ENDIF   
992
;       ELSE   
993
;        LD     A,(F_PAGE)
994
;        LD     BC,0X7FFD
995
;        OUT    (C),A
996
;       ENDIF  
997
        EI     
998
        RET    
999
 
1000
                IF resident=1;       IFN        resident
1001
MEMDRV_
1002
;Драйвер памяти (используется HONEY резидентом /и не только/)
1003
;6.05 %00abcdef
1004
;6.11 %bca0?def (7FFD)
1005
                IF atm=1;       IFN     atm
1006
       IF       atm-3
1007
        XOR     0X7F
1008
        LD      BC,0XFFF7
1009
        OUT     (C),A ;7ffd off
1010
;а кто будет включать 7ffd обратно?
1011
       ELSE     ;atm2
1012
        PUSH    AF
1013
        AND     0XF
1014
        OR      0X10
1015
        LD      BC,0X7FFD
1016
        OUT     (C),A
1017
        POP     AF
1018
        AND     0XE0 ;5,7,6
1019
        LD      C,A
1020
        RRA    
1021
        RRA    
1022
        RRA    
1023
        OR      C
1024
        AND     0X38 ;5,4,3
1025
        CPL     ;7ffd used
1026
        LD      BC,0XFFF7
1027
        OUT     (C),A
1028
       ENDIF   
1029
       ELSE    
1030
       ;AND 0XDF  ;Если памяти полметра.
1031
        OR      0X10
1032
        LD      BC,0X7FFD
1033
        OUT     (C),A
1034
       ENDIF   
1035
        RET    
1036
       ENDIF   
1037
 
1038
TCH2
1039
;2-ая точка входа - инициализация
1040
        LD      (0X5CF6),A
1041
        CP      0X03
1042
        JP      NZ,TCH2Q;0X3DCE
1043
        CALL    TEST_R
1044
        JP      NZ,0X3EE1 ;ошибку игнорировать?etc
1045
        RET    
1046
 
1047
TCH3
1048
;3-я точка входа - форматирование
1049
        CALL    0X1C57 ;установка имени файла
1050
        LD      A,(0X5CF6)
1051
        CP      0X03
1052
        RET     NZ
1053
        POP     AF
1054
        CALL    FILL
1055
        LD      DE,0X0000
1056
        LD      (0X5CF4),DE
1057
        LD      BC,0X0010
1058
FORMT
1059
        PUSH    BC
1060
        LD      A,0XFF
1061
        LD      (0X5CCE),A
1062
        LD HL,0X5D25
1063
        LD B,0X01
1064
        CALL    RD_SV
1065
        POP     BC
1066
        DEC     BC
1067
        LD      A,B
1068
        OR      C
1069
        JR      NZ,FORMT
1070
  ;free=...
1071
       ;LD HL,0X05F0  ;для 384К
1072
        LD      HL,0X07F0  ;для 512К
1073
       ;LD HL,0X0DF0  ;для 896К
1074
 
1075
        LD      A,0X16
1076
        JP      0X1F55 ;продолж.FORMAT после LD HL,2544
1077
FILL
1078
        LD      HL,0X5D25
1079
        LD DE,0X5D26
1080
        LD      BC,0X00FF
1081
        LD (HL),B
1082
        LDIR   
1083
        RET    
1084
 
1085
FPG
1086
;Определение текущей PAGE 0-31 памяти
1087
                IF 0;       IFN 0
1088
        PUSH    DE
1089
        PUSH HL
1090
        LD      DE,(0XC000)
1091
        LD      BC,0X7FFD
1092
        LD      (0XC000),BC
1093
        LD      A,0XD7
1094
FPG1    INC     A
1095
        BIT     3,A
1096
        JR      Z,$+4
1097
        ADD     A,0X38
1098
        OUT     (C),A
1099
        LD      HL,(0XC000)
1100
        AND     A
1101
        SBC     HL,BC
1102
        JR      NZ,FPG1
1103
        LD      (0XC000),DE
1104
        LD      (F_PAGE),A
1105
        POP     HL
1106
        POP DE
1107
        RET    
1108
       ELSE    
1109
        PUSH    DE
1110
        PUSH HL
1111
        LD      DE,(0XC000)
1112
        LD      HL,(0XFFFD)
1113
        PUSH    HL
1114
                IF atm=3;       IFN     atm
1115
        LD      BC,0XFFF7
1116
       ELSE    
1117
        LD      BC,0X7FFD
1118
       ENDIF   
1119
        LD      (0XC000),BC
1120
        LD      (0XFFFD),BC
1121
                IF atm=3;       IFN     atm
1122
        LD      A,0X7F+1 ;D6=1 (ОЗУ), D7=0 (no 7ffd)
1123
       ELSE    
1124
        XOR     A
1125
       ENDIF   
1126
FPG1
1127
                IF atm=3;       IFN     atm
1128
        DEC     A
1129
        OR      A ;CY=0
1130
       ELSE    
1131
        AND     0XC7
1132
        DEC     A
1133
        AND     0XC7
1134
        OR      16
1135
       ENDIF   
1136
        OUT     (C),A
1137
        LD      HL,(0XC000)
1138
        SBC     HL,BC
1139
        JR      NZ,FPG1
1140
        LD      HL,(0XFFFD)
1141
        SBC     HL,BC
1142
        JR      NZ,FPG1
1143
        LD      (0XC000),DE
1144
        POP     HL
1145
        LD      (0XFFFD),HL
1146
                IF atm=3;       IFN     atm
1147
       ;%01abcdef (abcdef inverted)
1148
  ;надо %bca10def
1149
        CPL     ;7ffd used
1150
        LD      L,A
1151
        AND     0X38 ;5,4,3
1152
        LD      H,A
1153
        RLA    
1154
        RLA    
1155
        RLA    
1156
        OR      H
1157
        XOR     L
1158
        AND     0XE0 ;5,7,6
1159
        XOR     L
1160
        AND     0XE7
1161
        OR      0X10
1162
       ENDIF   
1163
        LD      (F_PAGE),A
1164
        POP     HL
1165
        POP DE
1166
        RET    
1167
       ENDIF   
1168
 
1169
TCH4
1170
;Установка типов дисководов 80DS (а-ля 5.04)
1171
;Убрать,если необходимо автоопределение (а-ля 5.03)
1172
        LD      HL,0X8383
1173
        LD      (0X5CC8),HL
1174
        LD (0X5CCA),HL
1175
 
1176
;Выбор дисковода при сбросе
1177
        LD      A,0XF7
1178
        IN      A,(0XFE)
1179
        LD      B,0
1180
        RRA    
1181
        JR      NC,DRV11
1182
        INC     B
1183
        RRA    
1184
        JR      NC,DRV11
1185
        INC     B
1186
        RRA    
1187
        JR      NC,DRV11
1188
        INC     B
1189
        RRA    
1190
        JR      NC,DRV11
1191
                IF cmos=1;       IFN    cmos
1192
        LD      BC,0XEFF7
1193
      ;IN A,(C) ;если есть чтение из EFF7
1194
      ;PUSH AF
1195
        LD      A,0X80
1196
        OUT     (C),A
1197
        LD      B,0XDF,A,0X10
1198
        OUT     (C),A
1199
        LD      B,0XBF
1200
        IN      A,(C)
1201
                EX AF,AF';        EXA   
1202
        LD      B,0XEF
1203
        XOR     A
1204
      ;POP AF
1205
        OUT     (C),A
1206
                EX AF,AF';        EXA  
1207
        LD      B,A
1208
       ELSE    
1209
        JR      L3
1210
       ENDIF   
1211
DRV11
1212
        LD      A,B
1213
        LD (0X5CF6),A
1214
        LD (0X5D19),A
1215
        OR      0X3C
1216
        LD      (0X5D16),A
1217
        OUT     (0XFF),A
1218
L3      JP      0X106E ;вывод цветных полос для заставки
1219
                IF 0;       IFN 0
1220
                DUPL 0X3ADB-$,0XFF;        DS   0X3ADB-$,0XFF
1221
;        ORG    0X3ADB
1222
BOOTER
1223
;выполнялка ком."8"
1224
;вместо 0X29AE
1225
        LD      BC,0XF4FF
1226
        RST     0X20
1227
        DW      0X1EAF ;CLEAR_RUN
1228
        LD      A,1
1229
        RST     0X20
1230
       ;DW 0X229C ;нет такой точки!
1231
       DW       0X229B ;border и 23624
1232
        DI     
1233
        LD      HL,bootkus1;0XE00
1234
        LD      DE,0XF500
1235
        LD      BC,bootln1;0X1F5
1236
        PUSH    DE
1237
        LDIR   
1238
        LD      HL,bootkus2;0X344D
1239
        LD      BC,$;bootln2+1;0X334
1240
        LDIR   
1241
        SET     3,(IY+0X01)
1242
        RET    
1243
       ENDIF   
1244
MOVEPP
1245
        LD      HL,(0X5CE1)
1246
LL3b03  LD      A,(HL)
1247
         CP     0X00
1248
        RET     Z
1249
         CP     0X01
1250
         JR     Z,LL3b0e
1251
         CALL   LL3b14
1252
LL3b0e  LD      DE,0X0010
1253
        ADD     HL,DE
1254
        JR      LL3b03
1255
LL3b14  PUSH    HL
1256
        LD      DE,0X000D
1257
        ADD     HL,DE
1258
        LD      C,(HL)
1259
        INC     HL
1260
        LD      E,(HL)
1261
        INC     HL
1262
        LD      D,(HL)
1263
        LD      HL,(0X5CD7)
1264
        AND     A
1265
        SBC     HL,DE
1266
        ADD     HL,DE
1267
        JR      Z,LL3b56
1268
        LD      (0X5CD5),DE
1269
        LD      A,C
1270
        LD      (0X5CD3),A
1271
        CALL    0X17A5 ;перемещение файла
1272
LL3b32  POP     HL
1273
        PUSH    HL
1274
        LD      DE,(0X5CDF)
1275
        LD      BC,0X0010
1276
        LDIR   
1277
        LD      (0X5CDF),DE
1278
                EX DE,HL;        EXD   
1279
        LD      DE,(0X5CDD)
1280
        DEC     HL
1281
        LD      (HL),D
1282
        DEC     HL
1283
        LD      (HL),E
1284
        LD      HL,(0X5CD7)
1285
        LD      (0X5CDD),HL
1286
        LD      HL,0X5CE3
1287
        INC     (HL)
1288
        POP     HL
1289
        RET    
1290
LL3b56
1291
        LD      A,C
1292
        AND     0X0F
1293
        ADD     A,E
1294
        BIT     4,A
1295
        RES     4,A
1296
        LD      E,A
1297
        JR      Z,$+3
1298
        INC     D
1299
        LD      A,C
1300
 
1301
;        RRC    A
1302
;        RRC    A
1303
;        RRC    A
1304
;        RRC    A
1305
                REPT 4
1306
                DB 0XCB
1307
                RRCA
1308
                ENDM
1309
 
1310
        AND     0X0F
1311
        ADD     A,D
1312
        LD      D,A
1313
        LD      (0X5CD7),DE
1314
        JR      LL3b32
1315
 
1316
       ;DS 0X3B80-$,0XFF
1317
GETCOM
1318
;jp из 0X2154
1319
;вместо 0X1D90 - зачем???
1320
        RES     5,(IY+0X01)
1321
        RST     0X20
1322
        DW      0X15D4 ;WAIT_KEY
1323
        CP      7
1324
        JR      NZ,LL3bad
1325
        LD      HL,0X00C8
1326
        LD      D,H
1327
        LD      E,(IY-0X01)
1328
        RST     0X20
1329
        DW      0X3B5 ;beep
1330
        CALL    0X212A ;восстановление командной строки
1331
        LD      HL,(0X5C59)
1332
        LD      A,0X0D
1333
         LD     BC,0
1334
        CPIR   
1335
        DEC     HL
1336
        LD      (0X5C5B),HL
1337
        INC     HL
1338
        INC     HL
1339
        LD      (HL),0X80
1340
LL3baa  RST     0X20
1341
        DW      0X15D4 ;WAIT_KEY
1342
LL3bad
1343
        PUSH    AF
1344
        LD      HL,0X00C8
1345
        LD      D,H
1346
        LD      E,(IY-0X01)
1347
        RST     0X20
1348
        DW      0X3B5 ;beep
1349
        POP     AF
1350
        CP      0X18
1351
        JR      NC,LL3bca
1352
        CP      0X07
1353
        JR      C,LL3bca
1354
        CP      0X10
1355
        JR      C,LL3bcf
1356
        RST     0X20
1357
        DW      0XF58 ;в ED_LOOP: sym>=16
1358
        JR      LL3baa
1359
LL3bca
1360
        RST     0X20
1361
        DW      0XF81 ;ADD_CHAR
1362
        JR      LL3baa
1363
LL3bcf
1364
        CP      0X07
1365
        JR      Z,LL3baa
1366
        CP      0X0D
1367
        RET     Z
1368
        CP      0X0A
1369
        JR      Z,LL3baa
1370
        CP      0X0B
1371
        JR      Z,LL3baa
1372
        RST     0X20
1373
        DW      0XF92 ;ED_KEYS
1374
        JR      LL3baa
1375
 
1376
       ;DS 0X3BF0-$,0XFF
1377
WHOD
1378
;вход в TR-DOS
1379
;jp из 0X3D35
1380
;вместо 0X239
1381
        CALL    0X1D9F ;очистка низа экрана
1382
        JP      0X239 ;вход в командный процессор
1383
 
1384
       ;DS 0X3C00-$,0XFF
1385
       ;тут стоят дубли 0X3D00/3D03
1386
       ;дубля 0X3D13 нет и не было
1387
       ;ORG 0X3C10
1388
OUTDE
1389
        LD      C,D
1390
        OUT     (C),E
1391
        RET    
1392
INED
1393
        LD      C,D
1394
        IN      E,(C)
1395
        RET    
1396
JPWRITE
1397
        LD      C,0X7F
1398
        JP      16314
1399
JPREAD
1400
        LD      C,0X7F
1401
        JP      16341