Subversion Repositories ngs

Rev

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

Rev Author Line No. Line
69 savelij 1
 
158 savelij 2
;LAST UPDATE: 28.05.2021 savelij
69 savelij 3
 
105 savelij 4
                include ../../../pentevo/rom/macros.a80
69 savelij 5
                include ports_ngs.a80
158 savelij 6
                include vers.a80
69 savelij 7
 
158 savelij 8
DDMMYY          EQU "28.05.20121"
69 savelij 9
 
158 savelij 10
DD              EQU 28                          ;�����
11
MM              EQU 5                           ;�����
12
YY              EQU 21                          ;���
69 savelij 13
DATA            EQU DD|MM<<5|YY<<9|0X8000       ;�������������� ����
14
 
15
SM_LDT          EQU 0X54
16
ADR_PROGR       EQU 0X5800
17
 
18
BUFTSC          EQU 0XB800
19
TXT_DEC         EQU BUFTSC+0X0180
20
TXT_HEX         EQU TXT_DEC+0X10
21
 
22
BUF_CRC16_TABL  EQU 0X9000                      ;200
23
BUFFER_ZAG      EQU BUF_CRC16_TABL+0X200        ;200
24
SKLAD           EQU BUFFER_ZAG+0X200            ;100
25
DRV_VAR         EQU SKLAD+0X100
26
 
27
;������ ��������� ����� ����
28
;X,Y,V,H,C,C
29
;IX+8
30
;7-1-������ ���������
31
;6-0-� ������,1-��� �����
32
;5-1-������� ���������
33
;4-0-����� ����,1-��� ������
34
;3
35
;2-0-FILE,1-*.TRD
36
;1-0-MENU,1-FILES
37
;0-0-TRDOS,1-MSDOS
38
 
39
;BIT 4,(IY+55)
40
;BIT 3,(IY+55) 1-��� �����, 0-����
41
;BIT 2,(IY+55) 1-�� �������, 0-FAT ����
42
 
43
;��������� ���� (����� � IX)
44
;+00 X
45
;+01 Y
46
;+02 V
47
;+03 H
48
;+04 C
49
;+05 C
50
;+06 | ������
51
;+07 | �����������
52
;+08 F
53
;+09 X
54
;+0A Y
55
;+0B V
56
;+0C H
57
;+0D | �����
58
;+0E | ������
59
;+0F : ����� ������ � ����
60
;+10 : ����������
61
;+11 : ������� ����
62
;+12 "C" | �������
63
;+13 "B" | ����� ����
64
 
158 savelij 65
                ORG 0x8000
69 savelij 66
START_          DI
67
                LD A,0X10
68
                LD BC,0X7FFD
69
                OUT (C),A                       ;�������� �������� 0
70
                CALL INITLOADER
71
                PUSH AF
72
                LD A,0X0A
73
                OUT (GSCOM),A
74
                SET 3,(IY+48)
75
                LD HL,0X0110
76
                LD (0X5C09),HL                  ;���������� ��������� ������ ����������
77
                LD A,0X28
78
                CALL CLS                        ;������� ������
79
                RES 5,(IY+1)
80
                RES 7,(IY+48)
81
                RES 3,(IY+55)                   ;��������� ��� ��������� ����������
82
                CALL ADRTSC                     ;������������ ������� ������� ������
83
                POP AF
84
                JP NZ,NGSNOTFOUND
85
RESTARTUPD      LD A,7
86
                OUT (GSCOM),A
87
                CALL WC
88
                IN A,(GSDAT)
89
                AND A
90
                JR Z,PROD001
91
                PUSH AF
92
                LD IX,ERROR_UPDATE
93
                CALL WINW
94
                POP AF
95
                LD HL,TXT_ERRUPD1
96
                CP 0XAA
97
                JR Z,ERRORRING
98
                LD HL,TXT_ERRUPD2
99
                CP 0XDD
100
                JR Z,ERRORRING
101
                LD HL,TXT_ERRUPD3
102
ERRORRING       CALL NEXT
103
                CALL KEYS
104
                LD IX,ALLSCR
105
                CALL WINW                       ;����� ��������� ����
106
PROD001         LD A,9
107
                OUT (GSCOM),A
108
                CALL WC
109
                IN A,(GSDAT)                    ;��� �訡��
110
                EX AF,AF'
111
                CALL WN
112
                IN A,(GSDAT)                    ;����訩 ���� �⢥�
113
                LD L,A
114
                CALL WN
115
                IN A,(GSDAT)                    ;���訩 ���� �⢥�
116
                LD H,A
117
                EX AF,AF'
118
                AND 3
119
                JR Z,PROD000
120
                LD IX,ERROR_UPDATE
121
                CALL WINW
122
                LD HL,TXT_CRC
123
                CALL NEXT
124
PROD000         LD IX,ALLSCR
125
                CALL WINW
75 savelij 126
                LD IX,HELPS
127
                CALL WINW
78 savelij 128
                LD IX,VERS_PAGESNGS
129
                CALL WINW
130
                CALL RD_VERS_NGS
69 savelij 131
                LD IX,WEKS2
132
                CALL WINW
133
PROD01          CALL UPDOWN
134
                CALL CP_KEYS
135
                DB 0X0D
136
                DW KENTER
137
                DB 0
138
                JR PROD01
139
 
78 savelij 140
RD_VERS_NGS     LD IXL,"0"
141
                LD DE,TEXT_VERSUS
142
RVN2            LD HL,TXT_PAGES
143
                LD BC,ETXT_PAGES-TXT_PAGES
144
                LDIR
145
                LD A,IXL
146
                INC IXL
147
                LD (DE),A
148
                LD A," "
149
                EX DE,HL
150
                INC HL
151
                LD (HL),":"
152
                INC HL
153
                LD (HL),A
154
                INC HL
155
                LD (HL),A
156
                INC HL
157
                LD A,IXL
158
                SUB "1"
159
                OUT (GSDAT),A
160
                LD A,8
161
                OUT (GSCOM),A
162
                CALL WC
163
                LD BC,GSDAT
164
RVN1            CALL WN
165
                IN A,(C)
166
                LD (HL),A
167
                INC HL
168
                AND A
169
                JR NZ,RVN1
170
                DEC HL
171
                EX DE,HL
172
                LD A,IXL
158 savelij 173
                CP '2'
174
                CALL Z,COPY_VERS
78 savelij 175
                CP "8"
176
                JR C,RVN2
177
                LD HL,TEXT_VERSUS
178
                JP NEXT
179
 
158 savelij 180
COPY_VERS       PUSH AF
181
                PUSH DE
182
                EXX
183
                POP DE
184
                LD HL,MAINROM_VERS
185
.L2             LD A,(HL)
186
                AND A
187
                JR Z,.L1
188
                LDI
189
                JR .L2
190
 
191
.L1             PUSH DE
192
                EXX
193
                POP DE
194
                POP AF
195
                RET
196
 
69 savelij 197
NGSNOTFOUND     LD IX,ERROR_UPDATE
198
                CALL WINW
199
                LD HL,TXT_NONGS
200
                CALL NEXT
201
                CALL KEYS
202
                LD HL,0
203
                PUSH HL
204
                JP 0X3D2F
205
 
206
;��������� ������ ENTER
207
KENTER          LD A,(IX+0X12)
208
                AND A
209
                JR Z,KENTER1            ;������� ��� ������ 1-�������� ����������
210
                JP KENTER4              ;������� ��� ������ 3-����� � TR-DOS
211
 
212
;����� � �������� ���������� ���
77 savelij 213
KENTER1         LD IX,UPDATE_NGS
214
                CALL WINW
69 savelij 215
                LD A,7
216
                OUT (GSCOM),A
217
                CALL WC
218
                IN A,(GSDAT)
219
                AND A
220
                JP NZ,RESTARTUPD
221
                LD A,9
222
                OUT (GSCOM),A
223
                CALL WC
224
                IN A,(GSDAT)                    ;��� �訡��
225
                EX AF,AF'
226
                CALL WN
227
                IN A,(GSDAT)                    ;����訩 ���� �⢥�
228
                LD L,A
229
                CALL WN
230
                IN A,(GSDAT)                    ;���訩 ���� �⢥�
231
                LD H,A
232
                EX AF,AF'
233
                CP 0X80
234
                JP NZ,RESTARTUPD
235
 
236
                XOR A
237
                OUT (GSDAT),A
238
                LD A,6
239
                OUT (GSCOM),A
240
                CALL WC
241
                XOR A
242
                OUT (GSDAT),A
243
                CALL WD
244
                LD A,0X58
245
                OUT (GSDAT),A
246
                CALL WD
247
                IN A,(GSDAT)
248
                CP 0X99
249
                JR NZ,$-4
250
                EI
251
                REPT 5
252
                HALT
253
                ENDM
254
                DI
255
                LD IX,ERROR_UPDATE
256
                CALL WINW
257
                LD HL,TXT_OKUPDATE
258
                CALL NEXT
259
                CALL KEYS
260
                JP START_
261
 
262
                LD A,0X0A
263
                OUT (GSCOM),A
264
                EI
265
                HALT
266
                HALT
267
                HALT
268
                DI
269
                JP RESTARTUPD
270
 
271
;����� �� �������������
272
KENTER4         LD HL,0
273
                PUSH HL
274
                JP 0X3D2F
275
 
276
UPDOWN          LD C,(IX+0X12)
277
                LD B,(IX+0X13)
278
                CALL RVERT
279
                SET 3,(IY+55)
280
UPD04           BIT 3,(IY+55)
281
                JR Z,UPD02
282
                RES 3,(IY+55)
283
UPD02           EI
284
                HALT
285
                DI
286
                BIT 5,(IY+1)
287
                JR Z,UPD04
288
                LD A,(IY-0X32)
289
                RES 5,(IY+1)
290
                CP 0X0A
291
                JR NZ,UPD01
292
                CALL DOWN
293
                SET 3,(IY+55)
294
                JR UPD02
295
 
296
UPD01           CP 0X0B
297
                JR NZ,UPD03
298
                CALL UP
299
                SET 3,(IY+55)
300
                JR UPD02
301
 
302
UPD03           RES 7,(IY+48)
303
                LD (IX+0X12),C
304
                LD (IX+0X13),B
305
                PUSH AF
306
                LD A,(IX+4)
307
                CALL WYDELK
308
                POP AF
309
                RET
310
 
311
DOWN            LD L,(IX+0X10)
312
                LD H,(IX+0X11)
313
                LD A,H
314
                OR L
315
                RET Z
316
                SCF
317
                SBC HL,BC
318
                RET Z
319
                INC BC
320
                LD A,(IX+2)
321
                SUB 3
322
                CP (IX+0X0F)
323
                JR Z,DOWN1
324
                INC (IX+0X0F)
325
                LD A,(IX+4)
326
                CALL WYDELK
327
                LD DE,0X20
328
                ADD HL,DE
329
                LD (ADRAT+1),HL
330
                LD A,(IX+5)
331
                JP WYDELK
332
 
333
DOWN1           LD A,(IX)
334
                ADD A,A
335
                ADD A,A
336
                ADD A,A
337
                INC A
338
                LD H,A
339
                LD A,(IX+1)
340
                ADD A,(IX+2)
341
                SUB 2
342
                ADD A,A
343
                ADD A,A
344
                ADD A,A
345
                LD L,A
346
                LD (ADRSTR+1),HL
347
                JP SCRUP
348
 
349
UP              LD A,B
350
                OR C
351
                RET Z
352
                DEC BC
353
                LD A,(IX+0X0F)
354
                AND A
355
                JR Z,UP1
356
                DEC (IX+0X0F)
357
                LD A,(IX+4)
358
                CALL WYDELK
359
                AND A
360
                LD DE,0X20
361
                SBC HL,DE
362
                LD (ADRAT+1),HL
363
                LD A,(IX+5)
364
                JR WYDELK
365
 
366
UP1             LD A,(IX)
367
                ADD A,A
368
                ADD A,A
369
                ADD A,A
370
                INC A
371
                LD H,A
372
                LD A,(IX+1)
373
                INC A
374
                ADD A,A
375
                ADD A,A
376
                ADD A,A
377
                LD L,A
378
                LD (ADRSTR+1),HL
379
                JP SCRDN
380
 
381
RVERT           PUSH DE
382
                LD H,(IX)
383
                LD L,(IX+1)
384
                LD A,(IX+0X0F)
385
                ADD A,L
386
                LD L,A
387
                INC L
388
                CALL ADRDIS
389
                EX DE,HL
390
                LD (ADRAT+1),HL
391
                LD A,(IX+5)
392
                POP DE
393
WYDELK          PUSH BC
394
ADRAT           LD HL,0
395
                PUSH HL
396
                LD B,(IX+3)
397
                LD (HL),A
398
                INC HL
399
                DJNZ $-2
400
                POP HL
401
                POP BC
402
                RET
403
 
158 savelij 404
READ_NGS_VERS   EXX
405
                LD HL,BUFRD
406
                LD DE,0x138
407
                LD B,8
408
                LD A,B
409
                CALL SD                 ; LEN LOW
410
                LD A,0X15
411
                CALL SC
412
                EI
413
                HALT
414
                DI
415
                XOR A
416
                CALL SD                 ; LEN HIGH
417
                CALL WD
418
                LD A,E
419
                CALL SD                 ; ADR LOW
420
                CALL WD
421
                LD A,D
422
                CALL SD                 ; ADR HIGH
423
.L1             CALL WN
424
                CALL GD
425
                LD (HL),A
426
                INC HL
427
                INC DE
428
                DJNZ .L1
429
.L2             DEC HL
430
                LD A,'!'
431
                CP (HL)
432
                JR NC,.L2
433
                INC HL
434
                LD (HL),0
435
                EXX
436
                RET
437
 
438
MAINROM_VERS    DB "ver "
439
BUFRD           DUPL 0x18
440
 
69 savelij 441
FINDNGS         LD A,0X80
442
                OUT (GSCTR),A
443
 
444
;DS 3:LD A,0X55:OUT (GSDAT),A
445
;OUT (GSCOM),A:CALL WC:LD A,0XAA
446
;OUT (GSDAT),A,(GSCOM),A:XOR A
447
;OUT (GSDAT),A:LD A,0X1D
448
;OUT (GSCOM),A:CALL WC
449
;IN A,(GSDAT)
450
 
451
                EI
452
                HALT
453
                HALT
454
                DI
455
                LD A,0XF3
456
                OUT (GSCOM),A
457
                EI
458
                HALT
459
                HALT
460
                DI
461
                LD B,0X30
462
FNDNGS1         EI
463
                HALT
464
                DI
465
                DEC B
466
                JR Z,FNDNGS2
467
                IN A,(GSCOM)
468
                RRA
469
                JR C,FNDNGS1
470
                LD E,GSCFG0
471
                CALL INPORT
472
                INC A
473
                JR Z,NONGS
474
                XOR A
475
                RET
476
 
477
NONGS           XOR A
478
                INC A
479
                RET
480
 
481
FNDNGS2         XOR A
482
                DEC A
483
                RET
484
 
485
INPORT          LD A,E
486
                OUT (GSDAT),A
487
                LD A,0X11
488
                OUT (GSCOM),A
489
                CALL WC
490
                IN A,(GSDAT)
491
                RET
492
 
493
INITLOADER      CALL FINDNGS
494
                AND A
495
                RET NZ
158 savelij 496
                CALL READ_NGS_VERS
69 savelij 497
                LD BC,GSDAT
498
                LD HL,0X5800
499
                LD DE,MINILDE-MINILD
500
                OUT (C),E
501
                LD A,0X14
502
                OUT (GSCOM),A
503
                CALL WC
504
                OUT (C),D
505
                CALL WD
506
                OUT (C),L
507
                CALL WD
508
                OUT (C),H
509
                CALL WD
510
                LD HL,MINISTR
511
OUTCOD          OUTI
512
                CALL WD
513
                DEC DE
514
                LD A,D
515
                OR E
516
                JR NZ,OUTCOD
517
                LD HL,0X5800
518
                OUT (C),L
519
                LD A,0X13
520
                OUT (GSCOM),A
521
                CALL WC
522
                OUT (C),H
523
                CALL WD
524
                LD DE,NGS_LOADERE-NGS_LOADER
525
                OUT (C),E
526
                CALL WD
527
                OUT (C),D
528
                CALL WD
529
                LD HL,NGS_LOADER
530
OUTCOD1         OUTI
531
                CALL WD
532
                DEC DE
533
                LD A,D
534
                OR E
535
                JR NZ,OUTCOD1
536
                EI
537
                HALT
538
                HALT
539
                HALT
540
                DI
541
                XOR A
542
                RET
543
 
158 savelij 544
SC              OUT (GSCOM),A
545
                RET
546
 
547
SD              OUT (GSDAT),A
548
                RET
549
 
550
GD              IN A,(GSDAT)
551
                RET
552
 
69 savelij 553
WC              IN A,(GSCOM)
158 savelij 554
                RRCA
555
                JR C,WC
69 savelij 556
                RET
557
 
558
WD              IN A,(GSCOM)
158 savelij 559
                RLCA
560
                JR C,WD
69 savelij 561
                RET
562
 
563
WN              IN A,(GSCOM)
158 savelij 564
                RLCA
565
                JR NC,WN
69 savelij 566
                RET
567
 
568
MINISTR
569
                PHASE ADR_PROGR
570
MINILD          DI
571
                IN A,(ZXDATRD)
572
                OUT (CLRCBIT),A
573
                LD A,0X11
574
                OUT (GSCFG0),A                  ;��������� ��� � �������� ������� 12���
575
                LD HL,0                         ;����� �������� ���� �� �����
576
                XOR A
577
                OUT (MPAG),A                    ;�������� 0
578
                LD BC,ZXDATRD
579
                IN A,(ZXSTAT)
580
                RLA
581
                JR NC,$-3
582
                IN E,(C)
583
                IN A,(ZXSTAT)
584
                RLA
585
                JR NC,$-3
586
                IN D,(C)                        ;DE=����� ���� ��� �������� � ���
587
MINILD1         IN A,(ZXSTAT)
588
                RLA
589
                JR NC,$-3
590
                INI
591
                DEC DE
592
                LD A,D
593
                OR E
594
                JR NZ,MINILD1
595
                LD HL,MINILD
596
                LD (HL),0XC3
597
                INC HL
598
                LD (HL),LOW (PROGR)
599
                INC HL
600
                LD (HL),HIGH (PROGR)
601
                LD A,0X11
602
                OUT (GSCFG0),A
603
                LD SP,0X4080
604
                XOR A
605
                JP 0X0045
606
 
607
PROGR           DI
608
                LD A,2
609
                OUT (MPAG),A
610
                LD A,0X11
611
                OUT (GSCFG0),A
612
                LD HL,0X8000
613
                LD A,(HL)
614
                RRCA
615
                RRCA
616
                RRCA
617
                RRCA
618
                AND 7
619
                LD B,A
620
                LD DE,8
621
                ADD HL,DE
622
PROG0           LD A,2
623
                OUT (MPAG),A
624
                PUSH BC
625
                LD DE,MINILD+0X10
626
                LD BC,0X10
627
                LDIR
628
                PUSH HL
629
                CALL PROGR0
630
                POP HL
631
                POP BC
632
                DJNZ PROG0
633
                LD A,0X99
634
                OUT (ZXDATWR),A
73 savelij 635
                DJNZ $
69 savelij 636
                XOR A
637
                OUT (MPAG),A
638
                LD A,0X31
639
                LD HL,0X80D3
640
                OUT (GSCFG0),A
641
                LD (0XFFFE),HL
642
                XOR A
643
                JP 0XFFFE
644
 
645
PROGR0          LD HL,(MINILD+0X12)
646
                LD A,L
647
                AND 0X7F
648
                LD DE,(MINILD+0X11)
649
                LD D,A
650
                ADD HL,HL
651
                LD A,2
652
                ADD A,H
653
                LD IYH,A;HY,A
654
                LD HL,0
655
                LD A,(MINILD+0X10)
656
                AND 7
657
                LD IX,0X8000
658
                ADD IX,DE
659
                CALL SET_ADR
660
                CALL ERA_BLK
661
                LD DE,(MINILD+0X14)
662
                CALL PROGR1
663
                LD A,(MINILD+0X10)
664
                AND 7
665
                LD HL,0XFFF8
666
                CALL SET_ADR
667
                LD IX,MINILD+0X18
668
                LD DE,8
669
 
670
PROGR1          LD A,IYH
671
                OUT (MPAG),A
672
                LD A,(IX)
673
                INC IX
674
                PUSH DE
675
                CALL WR_BYTE
676
                LD A,IXH
677
                OR IXL
678
                JR NZ,PROGR2
679
                INC IYH
680
                LD IX,0X8000
681
PROGR2          POP DE
682
                DEC DE
683
                LD A,D
684
                OR E
685
                JR NZ,PROGR1
686
                RET
687
 
688
                include flasher_ngs.a80
689
MINILDE
690
                DEPHASE
691
 
78 savelij 692
NGS_LOADER      binclude ../loader_ngs/loader_ngs.rom
693
NGS_LOADERE
112 savelij 694
 
69 savelij 695
                include window.a80
112 savelij 696
CHARS           binclude altstd.bin
69 savelij 697
                include flasher_data.a80
78 savelij 698
 
699
TEXT_VERSUS