Subversion Repositories pentevo

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
801 savelij 1
 
2
;LAST UPDATE: 25.01.19 savelij
3
 
4
                include ../../macros.a80
5
 
6
                ORG 0X6000
7
 
8
;CMOS SetUp & HELP ��� Gluk
9
secHDD          EQU 0XA000      ;GLUcat
10
secOLD          EQU secHDD+512
11
symm            EQU 0           ;ᨬ����� ०�� � �����
12
SYSREG_EFF7     EQU 0XEFF7
13
SET_ADR         EQU 0XDFF7
14
RD_WR_DATA      EQU 0XBFF7
15
CMOS_ON         EQU 0X80
16
CMOS_OFF        EQU 0
17
 
18
        LD BC,0X7FFD
19
        LD A,0X10
20
        OUT (C),A       ;�몫�砥� ROM 128 ���ᨪ�
21
        LD HL,0X010F
22
        LD (0X5C09),HL
23
        EI
24
        CALL HELPCLS
25
        JP C,TSTKEY
26
        LD A,0XFE
27
        IN A,(0XFE)
28
        AND 8           ;"C"
29
        JP Z,COLTEST
30
        LD A,0XFD
31
        IN A,(0XFE)
32
        AND 2
33
        JP NZ,PRHELP    ;anykey, �� "S"
34
CDE0    LD A,(CDECURadr)
35
        AND 0XFE
36
        CP 0X13*2
37
        LD HL,TZERO
38
        JR NC,CDEnomsg
39
        LD HL,TCMOSMSGS
40
        ADD A,L
41
        LD L,A
42
        JR NC,$+3
43
        INC H
44
        LD A,(HL)
45
        INC HL
46
        LD H,(HL)
47
        LD L,A
48
CDEnomsg
49
        CALL PRHELPP
50
        LD HL,TNORM
51
        CALL PRHELP0
52
        RES 5,(IY+1)
53
CDENKEY HALT
54
        LD HL,0X5903
55
        LD (HL),7
56
        DEC L
57
        LD (HL),7
58
        DEC L
59
        LD (HL),5
60
        DEC L
61
        LD (HL),5
62
        LD DE,0X5904
63
        LD BC,0X80-4
64
        LDIR
65
        LD A,0X38
66
        CALL CDECUR
67
        LD DE,0X4800
68
        LD H,0
69
GOPR0   PUSH HL
70
        CALL READ_CMOS
71
        CALL PRHEX
72
        POP HL
73
        INC H
74
        BIT 6,H
75
        JR Z,GOPR0
76
        LD E,0XA0
77
        LD H,0
78
GOPR1   PUSH HL
79
        CALL READ_CMOS
80
        CALL PR88
81
        POP HL
82
        INC H
83
        BIT 6,H
84
        JR Z,GOPR1
85
        BIT 5,(IY+1)
86
        JR Z,CDENKEY
87
        LD HL,CDE0
88
        PUSH HL
89
        LD L,0
90
CDECURadr       EQU $-1
91
        LD A,(0X5C08)
92
        DEC L
93
        CP 8
94
        JR Z,CDE0OK
95
        INC L
96
        CP 9
97
        JR Z,CDEyR
98
        CP 10
99
        JR NZ,CDEnD
100
        LD A,L
101
        ADD A,0X20
102
        LD L,A
103
        JR CDE0OK
104
CDEnD   CP 0X0B
105
        JR NZ,CDEnU
106
        LD A,L
107
        SUB 0X20
108
        LD L,A
109
        JR CDE0OK
110
 
111
CDEnU   CALL CDEin0F            ;0..9A..F
112
        RET C
113
        LD E,A
114
        LD H,L
115
        SRL H
116
        CALL READ_CMOS
117
        BIT 0,L
118
        JR NZ,CDE0Frgt
119
        AND 0X0F
120
        REPT 4
121
        SLA E
122
        ENDM
123
        JR CDE0FrQ
124
 
125
CDE0Frgt
126
        AND 0XF0
127
CDE0FrQ OR E
128
        PUSH HL
129
        LD H,L
130
        SRL H
131
        LD L,A
132
        CALL WRITE_CMOS
133
        POP HL
134
CDEyR   INC L
135
CDE0OK  RES 7,L
136
        LD A,L
137
        LD (CDECURadr),A
138
        RET
139
 
140
CDEnR
141
CDEin0F OR 0X20
142
        SUB "0"
143
        RET C
144
        CP 0X0A
145
        CCF
146
        RET NC                  ;0..9
147
        CP 0X61-0X30            ;"a"-"0"
148
        RET C
149
        SUB 0X61-0X3A           ;"a"-":"
150
        CP 0X10
151
        CCF
152
        RET
153
 
154
CDECUR  LD HL,(CDECURadr)
155
        LD H,0X59
156
        LD (HL),A
157
        RET
158
 
159
PRHEX   PUSH AF
160
        REPT 4
161
        RRCA
162
        ENDM
163
        CALL $+4
164
        POP AF
165
        AND 0X0F
166
        CP 0X0A
167
        CCF
168
        ADC A,"0"
169
        DAA
170
PR88    PUSH BC
171
        PUSH DE
172
        PUSH HL
173
        ADD A,A
174
        CP 0X40
175
        JR NC,$+4
176
        LD A,0X2E*2     ;"."*2
177
        LD L,A
178
        LD H,0X0F
179
        ADD HL,HL
180
        ADD HL,HL
181
        LD B,8
182
        LD A,(HL)
183
        LD (DE),A
184
        INC L
185
        INC D
186
        DJNZ $-4
187
        POP HL
188
        POP DE
189
        POP BC
190
        INC E
191
        RET
192
 
193
COLTEST LD IXL,0
194
COLTESU LD A,IXL
195
        OUT (0X0FE),A
196
        LD DE,0X4001
197
        LD BC,0X600
198
        LD H,D
199
        LD L,C
200
        LD (HL),0X7E
201
        LDIR
202
        LD B,2
203
        LD (HL),L
204
        LDIR
205
        LD B,8
206
        DEC (HL)
207
        LDIR
208
        LD C,0XAA
209
COLTST0 LD (HL),C
210
        INC L
211
        JR NZ,$-2
212
        LD A,C
213
        CPL
214
        LD C,A
215
        INC H
216
        BIT 3,H
217
        JR Z,COLTST0
218
COLTST1 LD A,B
219
        XOR 0XC0
220
        LD (HL),A
221
        INC HL
222
        LD (HL),A
223
        INC HL
224
        INC B
225
        BIT 1,H
226
        JR Z,COLTST1
227
COLTST2 LD A,L
228
        XOR 0X80
229
        RRA
230
        LD (HL),A
231
        INC HL
232
        LD (HL),A
233
        INC L
234
        JR NZ,COLTST2
235
COLTSYK EI
236
        HALT
237
        XOR A
238
        IN A,(0XFE)
239
        CPL
240
        AND 0X1F
241
        JR NZ,COLTSYK
242
COLTSTK DI
243
PULS    SBC A,A         ;�᫨ �� �㤥�,� only ��� ������ � FE:765=111
244
PULSI   INC A
245
        OUT (0XFB),A
246
        DJNZ PULSI
247
PULSD   OUT (0XFB),A
248
        INC B
249
        DEC A
250
        JR NZ,PULSD
251
        XOR A
252
        IN A,(0XFE)
253
        RRA
254
        JR C,PULS
255
        INC IXL
256
        JR COLTESU
257
 
258
WRITE_CMOS
259
        CALL onCMOS
260
        LD A,H
261
        LD BC,SET_ADR
262
        OUT (C),A
263
        LD A,L
264
        LD BC,RD_WR_DATA
265
        OUT (C),A
266
offCMOS LD BC,SYSREG_EFF7
267
        LD A,CMOS_OFF
268
        OUT (C),A
269
        EI
270
        RET
271
 
272
onCMOS  DI
273
        LD BC,SYSREG_EFF7
274
        LD A,CMOS_ON
275
        OUT (C),A
276
        RET
277
 
278
READ_CMOS
279
        CALL onCMOS
280
        LD A,H
281
        LD BC,SET_ADR
282
        OUT (C),A
283
        LD BC,RD_WR_DATA
284
        IN A,(C)
285
        LD H,A
286
        CALL offCMOS
287
        LD A,H
288
        AND A
289
        RET
290
 
291
TSTKEY  LD HL,TTSTKEY
292
        CALL PRHELPP
293
TSTKEY0 HALT
294
        LD BC,0XFEFE
295
        LD HL,0X5860
296
        CALL TSTKEYP
297
        LD L,9
298
        CALL TSTKEYP
299
        JR TSTKEY0
300
 
301
TSTKEYP LD E,4
302
TSTKEY1 LD D,5
303
        IN A,(C)
304
TSTKEY2 RRA
305
        LD (HL),7
306
        JR C,$+4
307
        LD (HL),0X30
308
TSTKEYi INC L
309
        DEC D
310
        JR NZ,TSTKEY2
311
        LD A,L
312
TSTKEYs SUB 0X25
313
        LD L,A
314
        RLC B
315
        DEC E
316
        JR NZ,TSTKEY1
317
        LD DE,TSTKEYi
318
        LD A,(DE)
319
        XOR 1                   ;inc/dec
320
        LD (DE),A
321
        LD DE,TSTKEYs
322
        LD A,(DE)
323
        XOR 0X10                        ;add/sub
324
        LD (DE),A
325
        RET
326
 
327
PRHELPP LD DE,0X4000
328
PRHELP0 LD A,(HL)
329
        INC HL
330
        OR A
331
        RET Z
332
        CALL PR88
333
        JR NZ,$+6
334
        LD A,D
335
        ADD A,8
336
        LD D,A
337
        JR PRHELP0
338
 
339
PRHELP  LD HL,THELP
340
        CALL PRHELPP
341
 
342
;���樠����஢��� TR-DOS (15649 �� ��������)
343
        LD HL,SYSVAR
344
        LD DE,0X5C00
345
        LD BC,SYS1LN
346
        LDIR
347
        LD E,LOW (0X5C36)
348
        LD C,SYS2L1
349
        LDIR
350
        LD E,LOW (0X5CC8)
351
        LD C,SYS2L2
352
        LDIR
353
        LD E,LOW (0X5CD6)
354
        LD C,SYS2L3
355
        LDIR
356
        LD E,LOW (0X5C0C)
357
        LD C,SYS2L4
358
        LDIR
359
        LD E,LOW (0X5C26)
360
        LD C,SYS2L5
361
        LDIR
362
        LD A,0XC9
363
        LD (0X5CC2),A
364
DDDKN   RES 5,(IY+1)
365
DDDK0   BIT 5,(IY+1)
366
        JR Z,DDDK0
367
        LD A,(0X5C08)
368
        SUB "1"
369
        CP 4
370
        JR NC,DDDKN
371
        LD C,1
372
        CALL 0X3D13
373
        LD C,0X18
374
        CALL 0X3D13
375
DISKDOC LD (IY+48),0            ;A
376
        CALL HELPCLS
377
HDELOAD LD HL,HDEDUMP
378
        PUSH HL
379
        LD DE,0X4000
380
        CALL INH
381
        RET C
382
        REPT 4                  ;HDEDUMP
383
        ADD A,A
384
        ENDM
385
        LD H,A
386
        CALL INH
387
        RET C                   ;HDEDUMP
388
        ADD A,H
389
        LD H,A
390
        CALL INH
391
        RET C                   ;HDEDUMP
392
        LD L,A
393
        LD (HDEts),HL
394
        EX DE,HL
395
        POP HL
396
        LD BC,0X105
397
HDE3D13 LD DE,0XFFFF
398
HDEts   EQU $-2
399
        LD HL,secHDD
400
        CALL 0X3D13
401
HDE2COPY
402
        LD HL,secHDD
403
        LD DE,secOLD
404
        LD B,1                  ;BC,512
405
        LDIR
406
HDEDUMP CALL PRDUMP             ;���⠥� ����
407
HDE0    RES 5,(IY+1)
408
HDENKEY CALL HDECUR
409
        HALT
410
        BIT 5,(IY+1)
411
        JR Z,HDENKEY
412
        CALL HDECUROFF
413
        LD HL,HDE0
414
        PUSH HL
415
        LD HL,(CURadr)
416
        LD A,(0X5C08)
417
        CP 4
418
        JR Z,HDEPGOK
419
        CP 5
420
        JR Z,HDEPGOK
421
        CP 8
422
        JR NZ,HDEnL
423
        DEC L
424
        JR HDE0OK
425
 
426
HDEnL   CP 9
427
        JR NZ,HDEnR
428
HDEyR   INC L
429
        JR HDE0OK
430
 
431
HDEnR   CP 0X0A
432
        JR NZ,HDEnDN
433
        LD A,L
434
        ADD A,8
435
        LD L,A
436
        JR HDE0OK
437
 
438
HDEnDN  CP 0X0B
439
        JR NZ,HDEnUP
440
        LD A,L
441
        SUB 8
442
        LD L,A
443
        JR HDE0OK
444
 
445
HDEPGOK LD A,L
446
        XOR 0X80
447
        LD L,A
448
HDE0OK  LD A,(CURadr)
449
        XOR L
450
        RLA
451
        LD (CURadr),HL
452
        RET NC                  ;HDE0
453
        JR PRDUMP               ;,HDE0
454
 
455
HDEnUP  CP 0X0C
456
        JR NZ,HDEnBS
457
        DEC L
458
        INC H
459
        INC H
460
        LD A,(HL)
461
        DEC H
462
        DEC H
463
        LD (HL),A
464
        PUSH HL
465
        CALL PRHEXLIN
466
        POP HL
467
        JR HDE0OK
468
 
469
HDEnBS  CP 0XC7
470
        JR NZ,HDEnsQ
471
        PUSH HL
472
HDEsQ0  INC HL
473
        LD A,(HL)
474
        DEC HL
475
        LD (HL),A
476
        INC HL
477
        LD A,H
478
        SUB HIGH (secHDD)+1     ;2
479
        JR NZ,HDEsQ0
480
        DEC HL
481
        LD (HL),A
482
        POP HL
483
        JR PRDUMP
484
 
485
HDEnsQ  CP 0XC9
486
        JR NZ,HDEnsW
487
        PUSH HL
488
        LD C,(HL)
489
HDEsW0  INC HL
490
        LD A,(HL)
491
        LD (HL),C
492
        LD C,A
493
        INC HL
494
        LD A,H
495
        DEC HL
496
        SUB HIGH (secHDD)+1     ;2
497
        JR NZ,HDEsW0
498
        POP HL
499
PRDUMP  LD HL,secHDD            ;���⠫�� �����
500
CURadr  EQU $-2
501
        LD A,L
502
        AND 0X80
503
        LD L,A
504
PRHXPG0 CALL PRHEXLIN
505
        LD A,L
506
        ADD A,A
507
        JR NZ,PRHXPG0
508
        RET
509
 
510
HDEnsW  CP "l"                  ;load
511
        POP DE                  ;�﫨 ���� HDE0
512
        JP Z,HDELOAD
513
        CP 0X0D
514
        JR NZ,HDEnSAV
515
        CALL 0X1F5A
516
        LD BC,0X106
517
        JP NC,HDE3D13
518
HDEnSAV PUSH DE                 ;0..9A..F
519
        CALL HDEin0F
520
        RET C
521
HDE09OK LD C,(HL)
522
        REPT 4
523
        RLA
524
        ENDM
525
        XOR (HL)
526
        AND 0XF0
527
        XOR (HL)
528
        LD (HL),A
529
        PUSH BC
530
        PUSH HL
531
        CALL PRHEXLIN
532
HD0F0   XOR A
533
        LD (inv2chr),A
534
        RES 5,(IY+1)
535
HD0FKEY CALL HDECUR
536
        HALT
537
        BIT 5,(IY+1)
538
        JR Z,HD0FKEY
539
        CALL HDECUROFF
540
        LD A,0XFF
541
        LD (inv2chr),A
542
        CALL 0X1F54
543
        JR NC,HD0FBACK
544
        LD A,(0X5C08)
545
        CALL HDEin0F
546
        JR C,HD0F0
547
        POP HL
548
        POP BC
549
        XOR (HL)
550
        AND 0X0F
551
        XOR (HL)
552
HDEprA  LD (HL),A
553
        PUSH HL
554
        CALL PRHEXLIN
555
        POP HL
556
        JP HDEyR
557
 
558
HD0FBACK
559
        POP HL
560
        POP BC
561
        LD (HL),C
562
        PUSH HL
563
        CALL PRHEXLIN
564
        POP HL
565
        RET
566
 
567
HDEin0F OR 0X20
568
        SUB "0"
569
        RET C
570
        CP 0X0A
571
        CCF
572
        RET NC          ;0..9
573
        CP 0X61-0X30    ;"a"-"0"
574
        RET C
575
        SUB 0X61-0X3A   ;"a"-":"
576
        CP 0X10
577
        CCF
578
        RET
579
 
580
;���⠫�� ����� ��ப� �����
581
PRHEXLIN
582
        LD A,L
583
        AND 0XF8
584
        LD L,A
585
        AND 0X7F
586
        RRCA
587
        RRCA
588
        RRCA
589
        LD B,A
590
        LD C,3          ;4
591
        CALL AT
592
        LD A,L
593
        CALL PRHEX
594
        INC E
595
        PUSH HL
596
        LD B,8
597
PRH0    LD A,(HL)
598
        CALL PRHEX
599
        INC H
600
        INC H
601
        LD A,(HL)
602
        DEC H
603
        DEC H
604
        CP (HL)
605
        JR Z,PRH0OK
606
        DEC E
607
        DEC E
608
        CALL INV2SYM
609
PRH0OK  INC HL
610
        DJNZ PRH0
611
        POP HL
612
        INC E
613
        LD B,8
614
PRH1    LD A,(HL)
615
        CALL PR88               ;PRSYM
616
        INC H
617
        INC H
618
        LD A,(HL)
619
        DEC H
620
        DEC H
621
        CP (HL)
622
        JR Z,PRH1OK
623
        DEC E
624
        CALL INVSYM
625
PRH1OK  INC HL
626
        DJNZ PRH1
627
        RET
628
 
629
AT      EX DE,HL                ;BC->DE
630
        LD A,C
631
        ADD A,A
632
        ADD A,A
633
        ADD A,A
634
        LD C,A
635
        LD A,B
636
        ADD A,A
637
        ADD A,A
638
        ADD A,A
639
        CALL 0X22B0
640
        EX DE,HL
641
        RET
642
 
643
HDECUROFF
644
        LD A,1
645
        LD (hdecurtim),A
646
        LD A,(hdecuron)
647
        OR A
648
        RET Z
649
        JR HDECURU
650
 
651
HDECUR  PUSH HL
652
        LD HL,(CURadr)
653
        LD A,(HL)
654
        INC H
655
        INC H
656
        CP (HL)
657
        LD A,0X20
658
        JR Z,$+3
659
        ADD A,A
660
        LD (hdetimadd),A
661
        POP HL
662
        LD A,1
663
hdecurtim       EQU $-1
664
        SUB 0X20
665
hdetimadd       EQU $-1
666
        LD (hdecurtim),A
667
        RET NC
668
        LD A,0                  ;0XFF=printed
669
hdecuron        EQU $-1
670
HDECURU CPL
671
        LD (hdecuron),A
672
        LD A,(CURadr)           ;low byte of addr
673
        LD C,A
674
        RRA
675
        RRA
676
        RRA
677
        AND 0X0F                        ;31
678
        LD B,A
679
        LD A,C
680
        AND 7
681
        ADD A,A
682
        ADD A,6                 ;8
683
        LD C,A
684
        CALL AT
685
        LD A,0XFF               ;0XFF=2chr
686
inv2chr EQU $-1
687
        OR A
688
        JR NZ,INV2SYM
689
        INC E
690
        JR INVSYM
691
 
692
INV2SYM CALL INVSYM
693
INVSYM
694
INV86   PUSH BC
695
        PUSH DE
696
        LD B,4                  ;3
697
IN860   LD A,(DE)
698
        CPL
699
        LD (DE),A
700
        INC D
701
        LD A,(DE)
702
        CPL
703
        LD (DE),A
704
        INC D
705
        DJNZ IN860
706
        POP DE
707
        POP BC
708
        INC E
709
        RET
710
 
711
;��� �����
712
INH     PUSH BC
713
        PUSH DE
714
        LD D,0X58
715
        LD A,0XB0
716
        LD (DE),A
717
        RES 5,(IY+1)
718
INH0    BIT 5,(IY+1)
719
        JR Z,INH0
720
        LD A,7
721
        LD (DE),A
722
        POP DE
723
        POP BC
724
        LD A,(0X5C08)
725
        CALL HDEin0F
726
        RET C
727
        PUSH AF
728
        LD A,(0X5C08)
729
        CALL PR88               ;PRSYM
730
        POP AF
731
        RET
732
 
733
HELPCLS LD DE,0X4001
734
        LD BC,0X1800
735
        LD H,D
736
        LD L,C
737
        LD (HL),L
738
        LDIR
739
        LD (HL),7
740
        LD BC,0X02FF
741
        LDIR
742
        RET
743
 
744
TTSTKEY DB      "1234567890"
745
        DUPL 22," "
746
        DB "QWERTYUIOP"
747
        DUPL 22," "
748
        DB "ASDFGHJKLe"
749
        DUPL 22," "
750
        DB "cZXCVBNMs",0
751
 
752
TNORM   DB "                            ",0
753
TZERO   EQU $-1
754
TSEC    DB "sec",0
755
TSECAL  DB "sec alarm",0
756
TMIN    DB "min",0
757
TMINAL  DB "min alarm",0
758
THR     DB "hour",0
759
THRAL   DB "hour alarm",0
760
TDAYOFW DB "[day of week]",0
761
TDAY    DB "day",0
762
TMONTH  DB "month",0
763
TYEAR   DB "year",0
764
T20     DB "#20",0
765
TBIN    DB "b2=noBCD,b1=24hour,b0=season",0
766
TINT    DB "[int bits]",0
767
TBATT   DB "[b7=battery low]",0
768
TMEM    DB "mem mode (b7=slow)",0
769
TDRV    DB "drv (b7=off)",0
770
TAA     DB "#AA",0
771
T_G     DB "#47=msg in following mem",0
772
 
773
TCMOSMSGS
774
        DW TSEC
775
        DW TSECAL
776
        DW TMIN
777
        DW TMINAL
778
        DW THR
779
        DW THRAL
780
        DW TDAYOFW
781
        DW TDAY
782
        DW TMONTH
783
        DW TYEAR
784
        DW T20
785
        DW TBIN
786
        DW TINT
787
        DW TBATT
788
        DW TMEM
789
        DW TZERO
790
        DW TDRV
791
        DW TAA
792
        DW T_G
793
 
794
THELP      ;12345678901234567890123456789012
795
        DB "Key+RESET:     Space=TRDOS      "
796
        DB "         CS=Basic128 SS=Basic48 "
797
;       DB "     CS+SS=Basic128 Space=TRDOS "
798
        DB "D=Grass!512b(PSB^Halloween CC04)"
799
        DB " C=ColorTable+border keys+COVOX "
800
        DB "         S=CMOS SetUp           "
801
        DB "                                "
802
        DB " In Gluk main menu: 1-4=drive,  "
803
        DB " M=memory mode, W=on/off turbo  "
804
        DB "Y=Virtual drive, V=TR-DOS drive "
805
        DB " 8=on/off mouse, 9=on/off time  "
806
        DB "    & uppercased option keys.   "
807
        DB 0
808
 
809
        include "sysvar.a80"