Subversion Repositories pentevo

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
801 savelij 1
 
2
;LAST UPDATE: 26.01.2019 savelij
3
 
4
        TITLE "rommainmenu.a80"
5
 
6
                include ../../macros.a80
7
                include ../../global_vars.a80
8
                include ../../define.a80
9
                include ../../evodos_vars.a80
10
 
11
                PHASE CPU0
12
                JP $
13
 
14
                DUPL 0X0008-$,0XFF
15
                JP $
16
 
17
                DUPL 0X0010-$,0XFF
18
                JP $
19
 
20
                DUPL ADR_SEL_ROM-$,0XFF
21
                OUT (C),A                       ;0014
22
                NOP
23
                RET
24
 
25
                DUPL 0X0018-$,0XFF
26
                JP $
27
 
28
                DUPL 0X0020-$,0XFF
29
                JP $
30
 
31
                DUPL 0X0028-$,0XFF
32
                JP $
33
 
34
                DUPL 0X0030-$,0XFF
35
                JP ICALL2PAGE
36
 
37
                DUPL 0X0038-$,0XFF              ;0038
38
                EI
39
                RET
40
 
41
                DUPL 0X003E-$,0XFF
42
                EI
43
                RET
44
 
45
                DUPL 0X0080-$,0XFF
46
                include ../../dec40.a80
47
 
48
                DUPL 0X00FF-$,0XFF
49
                DW 0X0038
50
 
51
                RST8 _CMOS_RW,_INIT_CMOS
52
                LD HL,PAGES_CONF
53
                LD A,0XEF
54
                IN A,(0XFE)
55
                RRCA                            ;Ž‚…Š€ €†€’ˆŸ ŠŽŠˆ "0" ˆ ‘Ž‘…
56
                JR NC,RSTRAM                    ;‘Ž‘ ‚ Ž‘Ž‚Ž… ‡“
57
                RRCA
58
                RRCA
59
                RRCA
60
                RRCA                            ;Ž‚…Š€ €†€’ˆŸ ŠŽŠˆ "6" ˆ ‘Ž‘…
61
                JR C,INITPAGE4
62
;‚•Ž„ ‚ Ž’‹€„—ˆŠ
63
                EXX
64
                LD BC,WIN_P2
65
                XOR A
66
                OUT (C),A
67
                LD HL,CPU2+DEBUG_ONOFF
68
                SET 7,(HL)
69
                EXX
70
                IN A,(PEVO_CONF)
71
                OR M_NMI_BF
72
                OUT (PEVO_CONF),A
73
                AND M_NMI_BF!0XFF
74
                OUT (PEVO_CONF),A
75
                HALT
76
INITPAGE4       LD BC,CMOSD_SET_ADR
77
                LD A,CMOS_BYTE_00
78
                OUT (C),A
79
                LD B,HIGH (CMOSD_RD_WR)
80
                IN A,(C)
81
                AND MKOL_MODES
82
                CP KOL_MODES
83
                JR NC,RSTRAM
84
                AND A
85
                JR Z,RSTRAM
86
                DEC A
87
                LD HL,PAGES_CONFGLUK            ;ŠŽ”ˆƒ“ˆŽ‚€’œ „‹Ÿ GLUK
88
                JR Z,RSTRAM
89
                DEC A
90
                LD HL,PAGES_PROFROM             ;ŠŽ”ˆƒ“ˆŽ‚€’œ „‹Ÿ PROFROM
91
                JR Z,RSTRAM
92
                LD HL,PAGES_CUSTOM              ;ŠŽ”ˆƒ“ˆŽ‚€’œ „‹Ÿ USER ROM
93
RSTRAM          LD A,0XEF
94
                IN A,(0XFE)
95
                RRCA                            ;Ž‚…Š€ … €†€’Ž‘’ˆ ŠŽŠˆ "0" ˆ ‘Ž‘…
96
                JR NC,RSTRAM                    ;…‘‹ˆ €†€’€ †„…Œ Ž’“‘Š€ˆŸ
97
                LD BC,0XBC77
98
                LD A,2
99
                OUT (C),A
100
                LD DE,0X103F
101
LOOP2           LD BC,CONF_128
102
                OUT (C),D
103
                LD BC,LOW (WIN_A0)
104
LOOP1           OUTI
105
                LD A,B
106
                SUB E
107
                LD B,A
108
                JR NZ,LOOP1
109
                LD BC,CONF_128
110
                LD A,D
111
                XOR 0X10
112
                LD D,A
113
                JR Z,LOOP2
114
RSTPAL          LD A,(HL)
115
                LD IXH,A                        ;ŽŒ… ‘’€ˆ–› ‡€‚…˜…ˆŸ ˆˆ’€ Œ€€ƒ…€ 
116
                LD DE,0XAB0F                    ;ZX SCREEN MODE, TURBO ON 14MHZ
117
                LD BC,0XFD77                    ;ˆ „Ž‘’“ Š €‹ˆ’…
118
                OUT (C),D
119
                EI                              ;― «¨βΰ 
120
                HALT
121
                DI
122
                LD HL,TRSTPAL                   ;+15
123
                LD BC,0XBD77
124
                OUT (C),D                       ;’ͺ«.PAL
125
RSTPAL0         LD A,E
126
                BIT 3,E
127
                OUT (0XFE),A
128
                JR Z,$+4
129
                OUT (0XF6),A
130
                LD A,(HL)
131
                INC HL
132
                OR %00001100
133
                OUT (0XFF),A
134
                DEC E
135
                JP P,RSTPAL0
136
END_INIT        LD A,0XAB
137
                LD BC,0XFF77
138
                OUT (C),A                       ;’λͺ«.PAL
139
                LD A,IXH
140
                LD BC,0
141
                AND 0X3C
142
                JR Z,RSTKEYS2                   ;RESET TO EVO SERVICE PAGE
143
                CP CONF4GLUK&0X3F
144
                JR Z,RSTKEYS3                   ;RESET TO GLUK SERVICE PAGE
145
                CP CONF4CUSTOM&0X3F
146
                JR Z,RSTKEYS3                   ;RESET TO CUSTOM ROM
147
                JP LDIR4PROFROM                 ;RESET TO PROFROM BASIC 128
148
 
149
RSTKEYS3        PUSH BC
150
                LD BC,0XBC77
151
                LD A,2
152
                OUT (C),A
153
                LD BC,WIN_A0
154
                LD A,IXH
155
                OUT (C),A
156
                PEC_OFF M_SHADOW_BF
157
                LD BC,0XFF77
158
                LD A,0XA3
159
                JP 0X3D2D
160
 
161
RSTKEYS2        LD H,CMOS_BYTE_00
162
                RST8 _CMOS_RW,_READ_CMOS
163
                AND 0XFC                        ;‘Ž‘ „‹Ÿ Ž‘Ž‚ŽƒŽ ‡“
164
                LD L,A
165
                RST8 _CMOS_RW,_WRITE_CMOS       ;ˆ“„ˆ’…‹œŽ ‚›‘’€‚‹…ˆ… ‚ ŠŒŽ‘ ‘Ž‘€ € EVO SERVICE
166
        IF DOS_FE
167
                LD BC,WIN_A3
168
                LD A,ROM_RST82
169
                OUT (C),A
170
                LD B,HIGH (WIN_P2)
171
                LD A,RAM_EVODOS
172
                OUT (C),A
173
                LD A,(CPU2+COPY_VIRT_BITS)
174
                PUSH AF
175
                CALL UNP_DOS_FE+CPU3            ;€‘€ŠŽ‚Š€ DOS
176
                POP AF
177
                LD (CPU2+COPY_VIRT_BITS),A
178
        ELSE
179
                LD BC,WIN_A3
180
                LD A,ROM_ADD_DOS
181
                OUT (C),A
182
                LD B,HIGH (WIN_P2)
183
                LD A,RAM_EVODOS
184
                OUT (C),A
185
                LD A,(CPU2+COPY_VIRT_BITS)
186
                LD HL,CPU3
187
                LD DE,CPU2
188
                LD BC,0X4000
189
                LDIR                            ;……Ž‘ DOS
190
                LD (CPU2+COPY_VIRT_BITS),A
191
        ENDIF
192
                LD BC,WIN_A2
193
                LD A,0X7D
194
                OUT (C),A
195
                LD B,HIGH (WIN_A3)
196
                LD A,0XFF
197
                OUT (C),A
198
;„‹Ÿ …‡ˆ„…’€ HONEY COMANDER
199
        IFDEF REZIDENT
200
                CALL CMP_REZIDENT               ;Ž‚…Š€ …‡ˆ„…’€
201
        ENDIF
202
                LD BC,0XFEFF
203
RSTKEYS1        LD A,B
204
                IN A,(0XFE)
205
                REPT 5
206
                RRA
207
                JR C,$+3
208
                INC C
209
                ENDM
210
                RLC B
211
                JR C,RSTKEYS1
212
                DEC C
213
                JP P,GTSTKEY                    ;€†€’Ž Ž‹…… 1 ŠŽŠˆ, ……•Ž„ˆŒ Š ’…‘’“ Š‹€‚ˆ€’“›
214
                LD IXL,0                        ;‡€“‘Š …Ž‘Ž‚Ž‰ Ž˜ˆ‚Šˆ ‘…‚ˆ‘€
215
                LD DE,0                         ;1 €†€’€, Ž‚…Ÿ…Œ —’Ž ’Ž
216
                LD BC,CONF_128
217
                PUSH DE                         ;€„…‘ ……•Ž„€ ‚ ‡“ …‘‹ˆ ‚›€Ž
218
                LD A,0XFE
219
                IN A,(0XFE)                     ;—’…ˆ… €†€’Ž‘’ˆ ŠŽŠˆ "CS"
220
                RRA
221
                LD A,0
222
                JP NC,START_SELECT              ;ˆ €†€’މ "CS" ……•Ž„ˆŒ ‚ …‰‘ˆŠ 128
223
                LD A,0X7F
224
                IN A,(0XFE)                     ;—’…ˆ… €†€’Ž‘’ˆ ŠŽŠˆ "SS"
225
                LD D,A
226
                RRA
227
                RRA
228
                LD A,0X30
229
                JP NC,START_SELECT              ;ˆ €†€’މ "SS" ……•Ž„ˆŒ ‚ …‰‘ˆŠ 48
230
                LD A,D
231
                RRA                             ;Ž‚…Š€ €†€’Ž‘’ˆ ŠŽŠˆ "SPACE"
232
                JR C,CMPCFG1                    ;……•Ž„ˆŒ „€‹…… …‘‹ˆ ˆ—…ƒŽ … €†€’Ž
233
                LD A,0X10
234
                LD DE,0X3D2F
235
                PUSH DE
236
                JP START_SELECT                 ;ˆ €†€’މ "SPACE" ……•Ž„ˆŒ ‚ TR-DOS
237
 
238
CMPCFG1         LD A,0XFD
239
                IN A,(0XFE)
240
                AND 4                           ;€†€’Ž "D" ‡€“‘Š „…ŒŠˆ
241
                JP Z,GDEMO
242
                LD IXL,1                        ;‡€“‘Š Ž‘Ž‚Ž‰ Ž˜ˆ‚Šˆ ‘…‚ˆ‘€
243
                LD HL,0x6000                    ;ˆ—…ƒŽ … €†€’Ž, ‡€“‘Š€…Œ Ž‘Ž‚“ž Ž˜ˆ‚Š“
244
                LD SP,HL
245
                EX DE,HL
246
                LD HL,BONUADR                   ;€‘€ŠŽ‚Š€ … ƒ‹žŠ€
247
                CALL DEC40
248
                XOR A
249
                IN A,(0XFE)
250
                CPL
251
                AND 0X1F
252
                LD A,0X10
253
                JR NZ,CMOSHELP
254
                LD HL,0X6000
255
                PUSH HL
256
                JR START_SELECT
257
 
258
GTSTKEY         SCF
259
                LD A,0X10
260
CMOSHELP        LD HL,BONUADR                   ;CMOS setup & HELP
261
                LD DE,0X6000                    ;€‘€ŠŽ‚Š€ ˆ ‡€“‘Š CMOS SETUP
262
                PUSH DE
263
                PUSH AF
264
                CALL DEC40
265
                POP AF
266
                JR START_SELECT
267
 
268
GDEMO           LD HL,0X6000-szdemoini
269
                LD SP,HL
270
                EX DE,HL
271
                PUSH DE
272
                LD HL,DEMO
273
                LD B,3
274
                LDIR
275
START_SELECT    EX AF,AF'                       ;‘Ž•€…ˆ… € ˆ ”‹€ƒŽ‚
276
                LD HL,ERAM_CODE-1
277
                LD DE,0X5C80
278
                LD BC,ERAM_CODE-RAM_CODE
279
                LDDR
280
                EX DE,HL
281
                INC HL
282
                EXX
283
                LD A,IXL
284
                AND A
285
                LD D,0XA3
286
                JR NZ,SET_MODE3
287
                LD H,CMOS_BYTE_00;0XEF
288
                CALL READCMOS
289
                AND M_TURBO14;0X80
290
                REPT 4
291
                RRCA
292
                ENDM
293
                OR D;0XA3
294
                LD D,A                          ;“‘’€Ž‚Š€ „‹Ÿ 14Œƒ–
295
SET_MODE3       LD H,CMOS_BYTE_01;0X0E
296
                CALL READCMOS
297
                LD E,A                          ;“‘’€Ž‚Š€ „‹Ÿ 7.0/3.5Œƒ– ˆ ŒŽ„…‹œ €ŒŸ’ˆ
298
                PEC_OFF M_SHADOW_BF
299
                EXX
300
CMPCFG2         JP (HL)
301
 
302
RAM_CODE        EXX
303
                LD BC,PENT_CONF
304
                LD A,IXL
305
                AND A
306
                LD A,0X10
307
                JR NZ,SET_MODE2
308
                LD A,E
309
                AND 3
310
                LD L,0
311
                JR Z,SET_MODE1
312
                LD L,4
313
SET_MODE1       LD A,E
314
                AND M_TURBO357;0X80
315
                REPT 3
316
                RRCA
317
                ENDM
318
                OR L
319
                BIT 3,D
320
                JR Z,SET_MODE2
321
                SET 4,A
322
SET_MODE2       OUT (C),A
323
                LD BC,CONF_128
324
                XOR A
325
                OUT (C),A                       ;‚Š‹ž—ˆ‹ˆ Œ€… 0
326
                PEC_ON M_SHADOW_BF
327
                LD BC,WIN_A0
328
                LD A,IXH
329
                OUT (C),A                       ;‡€Žƒ€ŒŒˆŽ‚€‹ˆ ROM „‹Ÿ Œ€… 0
330
                LD BC,0XFF77
331
                OUT (C),D                       ;‚›‘’€‚ˆ‹ˆ ’“Ž ‚ ‡€‚ˆ‘ˆŒŽ‘’ˆ Ž’ “‘’€Ž‚ŽŠ
332
                PEC_OFF M_SHADOW_BF
333
                EX AF,AF'
334
                LD BC,CONF_128
335
                OUT (C),A                       ;‚Š‹ž—ˆ‹ˆ Œ€… 1
336
                RET
337
ERAM_CODE
338
 
339
;€ ‚•Ž„…:  H-€„…‘ Ÿ—…‰Šˆ
340
;€ ‚›•Ž„…: L,A-Ž—ˆ’€Ž… ‡€—…ˆ…
341
READCMOS        PUSH BC
342
                LD BC,CMOSD_SET_ADR
343
                OUT (C),H
344
                LD B,HIGH (CMOSD_RD_WR)
345
                IN L,(C)
346
                LD A,L
347
                POP BC
348
                RET
349
 
350
;„‹Ÿ …‡ˆ„…’€ HONEY COMANDER
351
        IFDEF REZIDENT
352
CMP_REZIDENT    LD H,CMOS_BYTE_01
353
                CALL READCMOS
354
                AND M_REZIDENT
355
                RET Z
356
                LD BC,WIN_A3
357
                LD A,0X1F ! 0X7F
358
                OUT (C),A
359
                LD HL,CPU3
360
                LD A,(HL)
361
                CP 0XC3
362
                JR NZ,.NOTFOUND
363
                XOR A
364
.NEXTBYTE       ADD A,(HL)
365
                ADC A,0
366
                INC HL
367
                BIT 7,H
368
                JR NZ,.NEXTBYTE
369
                DEC A
370
                JR NZ,.NOTFOUND
371
                LD A,0XAA
372
                DEC HL
373
                CP (HL)
374
                JR NZ,.NOTFOUND
375
                CPL
376
                DEC HL
377
                CP (HL)
378
                JR NZ,.NOTFOUND
379
                LD BC,0X4177
380
                LD A,6
381
                OUT (C),A
382
                PEC_OFF M_SHADOW_BF
383
                JP CPU3
384
 
385
.NOTFOUND       LD BC,WIN_A3
386
                LD A,0XFF
387
                OUT (C),A
388
                RET
389
        ENDIF
390
 
391
BONUADR
392
        IF DOS_FE
393
                binclude main_fe_pack.rom
394
        ELSE
395
                binclude main_pack.rom
396
        ENDIF
397
 
398
CMOSSET         binclude cmosset_pack.rom
399
 
400
;ŠŽ”ˆƒ“€–ˆŸ „‹Ÿ Ž’„…‹œŽ Ž˜ˆ‚€…ŒŽ‰ 64Š Ž˜ˆ‚Šˆ (USER ROM)
401
PAGES_CUSTOM    DB 0XFF,0X7D,0X7A,CONF4CUSTOM+3
402
                DB 0XFF,0X7D,0X7A,0X00,CONF4CUSTOM+1
403
 
404
                DUPL ADR_RST8END-$,0XFF
405
EDOS2RST8       LD A,L
406
                OUT (PEVO_CONF),A
407
                POP DE
408
                POP HL
409
                POP AF
410
                JP PO,EDOS2RST01
411
                EI
412
EDOS2RST01      POP BC
413
                POP AF
414
                EX (SP),HL
415
                RET
416
 
417
DOS2RST8        EX (SP),HL                      ;HL
418
                PUSH AF                         ;AF
419
                PUSH BC                         ;BC
420
                LD A,R
421
                JP PE,DOS2RST8_01
422
                LD A,R
423
DOS2RST8_01     DI
424
                PUSH AF                         ;RF
425
                PUSH HL                         ;ADR_RET
426
                PUSH DE                         ;DE
427
                IN A,(PEVO_CONF)
428
                LD L,A
429
                OR M_SHADOW_BF
430
                OUT (PEVO_CONF),A
431
                LD BC,RD_0WINA0
432
                IN H,(C)
433
                LD B,HIGH (RD_DOS7FFD)
434
                IN E,(C)
435
                RES 4,E
436
                DEC B
437
                IN D,(C)
438
                LD BC,WIN_P0
439
                XOR A
440
                JP ADR_SEL_ROM
441
 
442
                DUPL 0X3D2D-$,0XFF
443
                OUT (C),A
444
                NOP
445
                RET
446
 
447
DEMO            LD BC,CONF_128
448
                LD A,0X10
449
                OUT (C),A
450
                EI
451
szdemoini       EQU $-DEMO
452
 
453
                binclude ../../mainmenu/src/grass.bin
454
 
455
LDIR4PROFROM    LD HL,JMP2PROFROM
456
                LD DE,JMP2PROFROM+0X8000
457
                LD BC,EJMP2PROFROM-JMP2PROFROM
458
                LDIR
459
                PUSH BC
460
                LD BC,0XBC77
461
                LD A,3
462
                OUT (C),A
463
                LD A,IXH
464
                LD BC,WIN_A0
465
                OUT (C),A
466
                LD BC,0XFF77
467
                LD A,0XA3
468
                JP JMP2PROFROM+0X8000
469
 
470
JMP2PROFROM     OUT (C),A
471
                RET
472
EJMP2PROFROM   
473
 
474
SET_MAPPER     
475
                RET
476
 
477
;1000 0001 81 0 BASIC 128       |EVO
478
;1000 0011 83 0 BASIC 48        |SERVICE
479
 
480
;1000 0101 85 1 BASIC 128       |ADDONS
481
;1000 0111 87 1 BASIC 48        |RST8 SERVICE
482
 
483
;1000 1001 89 2 BASIC 128       |RESERVED
484
;1000 1110 8B 2 BASIC 48        |EVODOS EMUL 3D2F
485
 
486
;1000 1101 8D 3 BASIC 128       |PROFROM 1
487
;1000 1111 8F 3 BASIC 48        |PROFROM 1
488
 
489
;1001 0001 91 4 BASIC 128       |PROFROM 0
490
;1001 0011 93 4 BASIC 48        |PROFROM 0
491
 
492
;1001 0101 95 5 BASIC 128       |GLUK
493
;1001 0111 97 5 BASIC 48        |GLUK
494
 
495
;1001 1001 99 6 BASIC 128       |FREE
496
;1001 1011 9B 6 BASIC 48        |FREE
497
 
498
;1001 1101 9D 7 BASIC 128       |CUSTOM
499
;1001 1111 9F 7 BASIC 48        |CUSTOM
500
 
501
;Ž‘Ž‚€Ÿ ŠŽ”ˆƒ“€–ˆŸ Ž ‘Ž‘“, ˆ‡Œ…Ÿ’œ Š€’…ƒŽˆ—…‘Šˆ … …ŠŽŒ…„“…’‘Ÿ
502
PAGES_CONF      DB 0XFF,0X7D,0X7A,0X83
503
                DB 0XFF,0X7D,0X7A,0X00,0X81
504
 
505
;ŠŽ”ˆƒ“€–ˆŸ „‹Ÿ GLUK
506
PAGES_CONFGLUK  DB 0XFF,0X7D,0X7A,CONF4GLUK+3
507
                DB 0XFF,0X7D,0X7A,0X00,CONF4GLUK+1
508
 
509
;ŠŽ”ˆƒ“€–ˆŸ „‹Ÿ EVO PROFROM
510
PAGES_PROFROM   DB 0XFF,0X7D,0X7A,CONF4PROF+3
511
                DB 0XFF,0X7D,0X7A,0X00,CONF4PROF+1
512
 
513
;€‹ˆ’€ „‹Ÿ SPECTRUM …†ˆŒ€
514
TRSTPAL
515
                DB (R_H | R_L | G_H | G_L | B_H | B_L)  ! 0xF3  ;00
516
                DB (R_H | R_L | G_H | G_L            )  ! 0xF3  ;21
517
                DB (            G_H | G_L | B_H | B_L)  ! 0xF3  ;42
518
                DB (            G_H | G_L            )  ! 0xF3  ;63
519
                DB (R_H | R_L |             B_H | B_L)  ! 0xF3  ;90
520
                DB (R_H | R_L                        )  ! 0xF3  ;B1
521
                DB (                        B_H | B_L)  ! 0xF3  ;D2
522
                DB BLACK                                ! 0xF3  ;F3
523
                DB (R_H |       G_H |       B_H      )  ! 0xF3  ;E0
524
                DB (R_H |       G_H                  )  ! 0xF3  ;E1
525
                DB (            G_H |       B_H      )  ! 0xF3  ;E2
526
                DB (            G_H                  )  ! 0xF3  ;E3
527
                DB (R_H |                   B_H      )  ! 0xF3  ;F0
528
                DB (R_H)                                ! 0xF3  ;F1
529
                DB (                        B_H      )  ! 0xF3  ;F2
530
                DB BLACK                                ! 0xF3  ;F3
531
 
532
                DUPL 0X3FF8-$,0XFF
533
                DB "M_MENU"
534
                DW DATA_VERS