Subversion Repositories pentevo

Rev

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

Rev Author Line No. Line
627 savelij 1
 
1120 savelij 2
; LAST UPDATE: 18.10.2023 savelij
627 savelij 3
 
4
                include ../../macros.a80
5
                include ../../global_vars.a80
6
 
7
                include all_vars.a80
8
 
9
VERSBIOS        EQU "1.07.15pe"
10
 
11
                ORG 0
12
                DI
13
                JP $;H_INIT
14
 
15
PM_RUN_4000     OUT (C),E
16
 
17
                DUPL 8-$,0
18
                JP RST8
19
 
20
                DUPL 0X0C-$,0
21
                JP PENTEVO_START
22
 
23
                DUPL 0X14-$,0
24
                OUT (C),A
25
                NOP
26
                RET
27
 
28
                DUPL 0X18-$,0
691 DimkaM 29
                DI
30
                PUSH BC
31
                LD B,(IX-_MEMDSP)
627 savelij 32
                JP SET_PG
33
 
34
                DUPL 0X20-$,0
35
                JP CONOUT
36
 
37
                DUPL 0X38-$,0
38
                JP DO_INT
39
 
40
PAL_MN          DB 0XFF,0XEC,0XBD,0X8D,0X0C,0XFF,0XEC,0XCF,0X4C,0XCC,0X6F,0X4E,0XBD,0X9C,0X2D,0X0C
41
 
42
; CONVERT PAGE NUMBER
43
ED_PG           ADD A,6
44
                RET
45
 
46
; SET PAGE NUMBER
691 DimkaM 47
SET_PG  LD (MEMDSP),A
627 savelij 48
                PUSH BC
49
                CPL
691 DimkaM 50
                LD BC,WIN_P3
627 savelij 51
                OUT (C),A
52
                POP AF
691 DimkaM 53
                POP BC
627 savelij 54
                RET
55
 
56
ENTRY:  LD      SP,SYS_SP       ; MUST BE CPSYS
57
        IM      1
58
        LD      HL,(TST_1RUN)
59
        LD      DE,55AAH
60
        XOR A
61
        SBC     HL,DE
62
        LD (TST_1RUN),DE
63
        JR Z,ALL_INIT
64
        LD (IX-_TST_IS1),-1
65
ALL_INIT        LD A,0X11
66
        CALL    C_INIT
67
        CALL    M_INIT
68
                LD A,0X11
69
        CALL    C_INIT
70
        CALL    M_INIT
71
                LD A,0X55
72
                IN A,(0XFE)
73
                LD A,1
74
                IN A,(0XFE)
75
                LD A,0X55
76
                IN A,(0XFE)
77
                LD A,8
78
                IN A,(0XFE)
79
                XOR A
80
                IN A,(0XFE)
81
                EI
82
                LD HL,PAL_MN
83
                CALL SP_DIR
84
                LD    SP,0B000H
85
                LD A,3
86
                RST 0X18
87
;---------------------------------
88
; MAIN MENU MANAGER.
89
;
90
; IN:  A - 1 FOR RU7, 0 FOR RU5
91
;      E - IBMPC KEYBOARD LOCKS STATUS
92
; OUT: A - SELECTION (0-CP/M,1-TR-DOS,2-S128,3-S48)
93
;      D - 1 FOR 'TURBO' MODE, 0 IN OTHER CASE
94
;      E - IBMPC KEYBOARD LOCKS STATUS
95
;      L - 1 FOR IMBPC KEYBOARD, 0 FOR SPECTRUM KEYBOARD
96
                LD E,(IX-_KS_SHIFTS)
97
                DI
98
                XOR A
99
                LD DE,0X100
100
                PUSH AF
101
                LD IX,IX_BASE
102
                LD (IX-_KS_SHIFTS),E
103
                DEC D
104
                JR NZ,_NO_TUR
105
                SET 3,(IX-_SYS_P)
106
_NO_TUR         LD A,0X55
107
                IN A,(0XFE)
108
                LD A,8
109
                IN A,(0XFE)
110
                LD A,0X8A
111
                IN A,(0XFE)
112
                LD A,0X55
113
                IN A,(0XFE)
114
                LD A,1
115
                IN A,(0XFE)
116
                EX AF,AF'
117
                LD A,0X55
118
                IN A,(0XFE)
119
                LD A,8
120
                IN A,(0XFE)
121
                XOR A
122
                IN A,(0XFE)
123
                EX AF,AF'
124
                CP 0X0A
125
                JR NC,ALLINIT2
126
                LD A,0X55
127
                IN A,(0XFE)
128
                LD A,7
129
                IN A,(0XFE)
130
                LD HL,IBMKEYB_T
131
                JR ALLINIT3
132
 
133
ALLINIT2        LD HL,SPKEYB_T
134
ALLINIT3        LD DE,KEYBOARD
135
                LD BC,6*3
136
                DI
137
                LDIR
138
                EI
139
                LD A,3
140
                RST 0X18
141
                CALL SP_DEF
142
                POP AF
143
                CALL CI_INIT
144
                LD SP,SYS_SP
145
                CALL PRN
146
                DB 0X1B,0X5F,0
147
                CALL MEM_SIZE
148
                CALL CPM_LOAD
149
                CALL CFG_LOAD
150
                JP ENTR1
151
 
152
DO_INT          PUSH AF                 ; TEST TRDOS ACTIVITY
153
       PUSH BC
154
       PUSH DE
155
       PUSH HL
156
       EX   AF,AF'
157
       EXX
158
       PUSH AF
159
       PUSH BC
160
       PUSH DE
161
       PUSH HL
162
       PUSH IX
163
       LD   IX,IX_BASE
164
       LD   A,1
165
       RST  18H
166
       PUSH AF
167
       LD   HL,TIME_C
168
       LD   B,4
169
TM_L:  INC  (HL)
170
       INC  HL
171
       JR   NZ,TM_DN
172
       DJNZ TM_L
173
TM_DN: CALL CUR_IN
174
                CALL KEYBOARD
175
       POP  AF
176
       RST  18H
177
       POP  IX
178
       POP  HL
179
       POP  DE
180
       POP  BC
181
       POP  AF
182
       EXX
183
       EX   AF,AF'
184
       POP  HL
185
       POP  DE
186
       POP  BC
187
       POP  AF
188
       EI
189
       RET
190
 
191
;---------------------------
192
; MULTYPLEXOR CALL
193
;
194
DO_MUX: EI
195
        PUSH HL
196
        PUSH DE
197
        PUSH AF
198
        LD   A,MUX_LNG-1
199
        CP   C
200
        JR   NC,MUX_OK
201
        POP  AF
202
        LD   A,0FFH
203
        POP  DE
204
        POP  HL
205
        RET
206
 
207
MUX_OK: LD   A,C
208
        LD   HL,MUX_TBL
209
        CALL _IND
210
        POP  AF
211
        POP  DE
212
        EX   (SP),HL
213
        RET
214
 
215
MUX_TBL         DW R_VER
216
                DW CPM_L
217
                DW SET_RST              ; FUNC 0,1,2
218
                DW READA_KNW            ; (3) READ KEY (NO WAIT) (SEE SCANKEY)
219
                DW KB_TYP               ; (4) READ KEYB TYPE (L) & FLAGS (D)
220
                DW G_TIME               ; (5) GET CURRENT TIME
221
                DW WR_FE                ; (6) WRITE TO 'FE' PORT
222
                DW ADR_FE
223
                DW WR_SYS
224
                DW ADR_SYS
225
                DW PAGE_MAN
226
;         DW ADR_FE             ; (7) GET ADDRESS & DEFAULT OF 'FE' PORT
227
;         DW WR_SYS             ; (8) WRITE TO SYS PORT ('TON' & 'TNAB' BITS)
228
;         DW ADR_SYS            ; (9) GET ADDRESS & DEFAULT OF SYS PORT
229
         ;!!!!!!!!!!!!!!!!!!!!!!!
230
;         DW TST_RT     ; RET HL & RTIME
231
;         DW SIGN       ; D - CONST
232
                        ; RET - HL
233
         ;!!!!!!!!!!!!!!!!!!!!!!!
234
MUX_LNG  EQU ($-MUX_TBL)/2
235
 
236
 
237
R_VER:  LD      HL,107H ; MUX FUNC 0 - GET VERSION (HL-VERSION)
238
                LD DE,-1
239
        XOR     A
240
        RET
241
 
242
CPM_L:  LD      BC,1600H; MUX FUNC 1 - LOAD CPM IMAGE
243
        CALL    CPM_L1
244
        XOR     A
245
        RET
246
 
247
SET_RST:LD      DE,(ENT_ADR)    ; MUX FUNC 2 - SET RESTART ADRESS
248
        LD      (ENT_ADR),HL    ; HL - ADRESS FOR RESTART (RET IN HL OLD)
249
        EX      DE,HL
250
        XOR     A
251
        RET
252
 
253
G_TIME: LD      DE,(TIME_C)     ; MUX FUNC 5 - GET TIME INTO HL:DE
254
        LD      HL,(TIME_C+2)
255
        XOR     A
256
        RET
257
 
258
ADR_SYS
259
WR_SYS
260
ADR_FE
261
WR_FE
262
ERR_FF  LD A,0XFF
263
        RET
264
 
265
CHK_SUM
266
;               IF HACK_RBIOS=0
267
;               LD HL,0XC000
268
;               ELSE
269
                RET
270
                DW 0XC000
271
;               ENDIF
272
                XOR A
273
CS_LP           ADD A,(HL)
274
                ADC A,0
275
                INC HL
276
                BIT 7,H
277
                JR NZ,CS_LP
278
                DEC A
279
                RET Z
280
                JP PROT
281
 
282
;---------------------------------------
283
; PAGE MANIPULATION
284
PAGE_MAN        LD A,E
285
                CP 7
286
                JR Z,PM_TST_RU5
287
                JR NC,PM_ERR_1
288
PM_2            LD (TMP_W),HL
289
                LD HL,PM_ROM_TAB
290
                CP 4
291
                JR NC,PM_1
292
                LD HL,PM_RAM_RU5
293
                BIT 0,(IX-_FLAG)
294
                JR NZ,PM_1
295
                LD HL,PM_RAM_RU7
296
PM_1            BIT 0,A
297
                JR Z,PM_3
298
                LD A,6
299
                CALL ADD_HL_A
300
PM_3            LD A,B
301
                CALL _VJMP
302
                DB 4
303
                DW ERR_FF
304
                DW PM_GET_INF
305
                DW PM_SET_PG
306
                DW PM_GO
307
PM_TST_RU5      BIT 0,(IX-_FLAG)
308
                JR Z,PM_2
309
PM_ERR_1        LD A,1
310
                RET
311
 
312
PM_ERR_2        LD A,2
313
                RET
314
 
315
PM_ERR_3        LD A,3
316
                RET
317
 
318
PM_GET_INF      LD A,D
319
                CP 6
320
                JR NC,PM_ERR_2
321
                CALL ADD_HL_A
322
                LD D,(HL)
323
                XOR A
324
                RET
325
 
326
PM_GO           LD A,D
327
                PUSH HL
328
                POP IY
329
                INC HL
330
                EXX
331
                LD HL,PM_GO_TAB
332
                CP 3
333
                JR NC,PM_ERR_3
334
                CALL _IND
335
                LD DE,4004H
336
                LD BC,32-4
337
                LDIR
338
                LD E,(IX-_SYS_P)
339
                DI
340
                IM 0
341
                LD BC,0C077H
342
                XOR A
343
                OUT (C),A
344
                LD BC,CONF_128
345
                OUT (C),A
346
                LD A,(IY+4)
347
                RCALL PM_SET
348
                LD A,10H
349
                LD BC,CONF_128
350
                OUT (C),A
351
                LD A,(IY+0)
352
                RCALL PM_SET
353
                LD BC,0C077H
354
                LD A,6
355
                OUT (C),A
356
                LD A,(IY+5)
357
                RCALL PM_SET
358
                XOR A
359
                LD BC,CONF_128
360
                OUT (C),A
361
                LD A,(IY+5)
362
                RCALL PM_SET
363
                LD BC,0FF77H
364
                LD A,E
365
                AND 0F8H
366
                OR 3
367
                LD E,A
368
                JP PM_RUN_4000
369
 
370
PM_SET          EXX
371
                LD E,L
372
                LD D,H
373
                LD BC,0F7H
374
                JR PM_S_1
375
 
376
PAGE_L1         LD A,(DE)
377
                INC DE
378
PM_S_1          XOR 80H
379
                CPL
380
                OUT (C),A
381
                LD A,B
382
                ADD A,40H
383
                LD B, A
384
                JR NC,PAGE_L1
385
                EXX
386
                RET
387
 
388
MON_IMG         include mon.a80
389
 
390
CH1:            ; EDISK  RU7
391
                DB 0XFF         ;0FFH    ;+ ˆ‡€Š „…‰‘’‚ˆ’…‹œŽ‘’ˆ
392
                DB 4            ;2       ;+ ŠŽ„ “‘’Ž‰‘’‚€
393
                DB 0            ;0       ;+ ŽŒ… ˆ‚Ž„€
394
                DB 0            ;1       ;- ŠŽ„ ˆ‚Ž„€
395
                DB 5            ;1       ;+ —ˆ‘‹Ž ”ˆŠ‘ˆŽ‚€›• ƒŽ‹Ž‚ŽŠ
396
                DB 0            ;0       ;+ —ˆ‘‹Ž ‘Œ…›• ƒŽ‹Ž‚ŽŠ
397
                DW 0X96         ;1AH     ;+ —ˆ‘‹Ž –ˆ‹ˆ„Ž‚ € „ˆ‘Š…
398
                DB 0X11         ;128     ;+ —ˆ‘‹Ž ‘…Вސނ € „ސކЅ
399
                DW 0X200        ;128     ;+ —ˆ‘‹Ž €‰’Ž‚ ‚ ‘…Вސ…
400
                DB 1            ;1       ;+ —ˆ‘‹Ž ‘ˆ‘’…Œ›• „ސކ…Š
401
                DW 0            ;0       ;+ ŽŒ… €—€‹œŽƒŽ –ˆ‹ˆ„€
402
                DW 0XC5E4       ;3328    ;+ —ˆ‘‹Ž ‹ŽŠŽ‚ € „ˆ‘Š…
403
                DW 0X44         ;128     ;+ —ˆ‘‹Ž ‹ŽŠŽ‚ € „ސކЅ
404
                DW 0X2EE        ;1AH     ;+ —ˆ‘‹Ž „ސކ…Š € „ˆ‘Š…
405
                DB 8            ;8       ;+ „‹ˆ€ ŽŒ…€ ‹ŽŠ€ ‚ ‘…Вސ…
406
                DW 0X80         ;128     ;+ —ˆ‘‹Ž ‡€ˆ‘…‰ ‚ „ˆ…Вސˆˆ
407
                DB 2
408
                DB 2
409
                DB 2
410
                DW 0
411
                DB 0XFF
412
                DB 2
413
                DB 0X50
414
                DW 0X50
415
                DW 0
416
 
417
CH1_5:          ; EDISK RU5 (ROM)
418
        DB      0FFH    ;+ ˆ‡€Š „…‰‘’‚ˆ’…‹œŽ‘’ˆ
419
        DB      2       ;+ ŠŽ„ “‘’Ž‰‘’‚€
420
        DB      0       ;+ ŽŒ… ˆ‚Ž„€
421
        DB      1       ;- ŠŽ„ ˆ‚Ž„€
698 dimkam 422
        DB      1       ;+ —ˆ‘‹Ž ”ˆŠ‘ˆŽ‚€›• ƒŽ‹Ž‚ŽŠ
627 savelij 423
        DB      0       ;+ —ˆ‘‹Ž ‘Œ…›• ƒŽ‹Ž‚ŽŠ
698 dimkam 424
                DW              160             ;3H      ;+ —ˆ‘‹Ž –ˆ‹ˆ„Ž‚ € „ˆ‘Š…
691 DimkaM 425
        DB      16      ;+ —ˆ‘‹Ž ‘…Вސނ € „ސކЅ
426
        DW      256     ;+ —ˆ‘‹Ž €‰’Ž‚ ‚ ‘…Вސ…
427
        DB      2       ;+ —ˆ‘‹Ž ‘ˆ‘’…Œ›• „ސކ…Š
627 savelij 428
        DW      0       ;+ ŽŒ… €—€‹œŽƒŽ –ˆ‹ˆ„€
691 DimkaM 429
                DW              5120    ;     384     ;+ —ˆ‘‹Ž ‹ŽŠŽ‚ € „ˆ‘Š…
430
        DW      32     ;+ —ˆ‘‹Ž ‹ŽŠŽ‚ € „ސކЅ
431
                DW              160             ;3H      ;+ —ˆ‘‹Ž „ސކ…Š € „ˆ‘Š…
627 savelij 432
        DB      8       ;+ „‹ˆ€ ŽŒ…€ ‹ŽŠ€ ‚ ‘…Вސ…
433
        DW      128     ;+ —ˆ‘‹Ž ‡€ˆ‘…‰ ‚ „ˆ…Вސˆˆ
434
 
435
                include conio.a80
436
                include scankey.a80
437
                include textio.a80
438
                include hex.a80
439
                include disk.a80
440
                include fdc_wd.a80
441
                include ed_drv.a80
442
                include hddrv.a80
443
                include config.a80
444
 
445
CPM_IMG         binclude cpm.img
446
                include bios.a80
447
CPM_SIZE        EQU $-CPM_IMG
448
 
449
VAR1_I
450
;          IN VALUE
451
RQCHAN_         DB 0            ;       DM      RQCHAN   1       ;ŽŒ… Š€€‹€
452
RQCOM_          DB 0            ;       DM      RQCOM    1       ;ŠŽŒ€„€
453
RQBLN_          DB 0            ;       DM      RQBLN    1       ;—ˆ‘‹Ž ‹ŽŠŽ‚
454
RQTRACK_        DW 0            ;       DM      RQTRACK  2       ;ŽŒ… „ŽŽ†Šˆ
455
RQBLOCK_        DW 0X4F00       ;       DM      RQBLOCK  2       ;ŽŒ… ‹ŽŠ€
456
RQBADR_         DW 0X18         ;       DM      RQBADR   2       ;“”… Ž‹œ‡Ž‚€’…‹Ÿ
457
 
458
;          WORK VALUE
459
RQHEAD_         DB 7            ;       DM      RQHEAD   1       ;ŽŒ… ƒŽ‹Ž‚Šˆ
460
RQCYL_          DW 0            ;       DM      RQCYL    2       ;ŽŒ… –ˆ‹ˆ„€
461
RQDEV_          DB 0            ;       DM      RQDEV    1       ;ŠŽ„ “‘’Ž‰‘’‚€
462
LOCBUF_         DW 0            ;       DM      LOCBUF   2       ;€„…‘ ‹ŽŠ€ ‚ “”……
463
RQSECT_         DB 7            ;       DM      RQSECT   1       ;ŽŒ… ‘…Вސ€
464
;DM      DCSEGM  2       ;‘…‹…Вސ ‘…ƒŒ…’€
465
DCBUF_          DW 0X300        ;       DM      DCBUF    2       ;€„…‘ “”…€
466
REP_            DB 1            ;       DM      REP      1       ;‘—…’—ˆŠ —ˆ‘‹€ Ž‚’ސނ
467
 
468
;……Œ…›… ŠŽ’Ž‹…€ ”‹ŽŽ‚
469
FD_TRKS_        DB 0X0A,7,8,0   ;       DM      FD_TRKS  4       ;ŽŒ…€ ’…Š“™ˆ• „ސކ…Š
470
 
471
;‹ŽŠ ‘Ž‘’ŽŸˆŸ “”…€
472
BUFT_           DB 0            ;       DM      BUFT     1               ;ŽŒ… Š€€‹€
473
BUFTRK_         DW 0X1001       ;       DM      BUFTRK   2               ;ŽŒ… „ŽŽ†Šˆ
474
BUFSEC_         DB 0X3F         ;       DM      BUFSEC   1               ;ŽŒ… ‘…Вސ€
475
 
476
                DB 0XFE,0,0XA6
477
                DUPL 0X0C,0
478
                DB 0XFF,0X0F,5,0,8,0X60,4,0X3F,0XC9,0,0
479
 
480
VAR1_S          EQU $-VAR1_I
481
 
482
PALN            DB 0FFH,0FEH,0FDH,0FCH,0EFH,0EEH,0EDH,0ECH,0FFH,0DEH,0BDH,09CH,06FH,04EH,02DH,00CH
483
 
484
                include init.a80
485
                include ve31.a80
486
                include ci.a80
487
 
1120 savelij 488
        IF MOMPASS = 1
489
HZ      EQU $
490
        ENDIF
491
 
627 savelij 492
;               IF HACK_RBIOS=0
493
;               ELSE
1120 savelij 494
        DUPL 0x3E20 - $
627 savelij 495
WR_MAS_SLA      LD BC,HD_HEAD;0XCF
496
                LD A,(IY+2)
497
                AND 1
498
                RRCA
499
                RRCA
500
                RRCA
501
                RRCA
502
                OR 0XA0
503
                OUT (C),A
504
                LD BC,HD_CYLHI;0XAF
505
                RET
506
 
507
GET_MAS_SLA     LD C,A
508
                LD A,(IY+2)
509
                AND 1
510
                RRCA
511
                RRCA
512
                RRCA
513
                RRCA
514
                OR C
515
                LD BC,HD_HEAD;0XCF
516
                RET
517
;               ENDIF
518
 
519
                DUPL 0X3EFF-$,0
520
MY_R_ADR:       DEFW  PTST_1
521
 
522
PM_ROM_TAB:
523
        DB      64H,5,2,0,  66H,65H
524
        DB      64H,5,2,80H,66H,65H
525
PM_RAM_RU5:
526
        DB      6,  5,2,0,  6,7
527
        DB      6,  5,2,80H,6,7
528
PM_RAM_RU7:
529
        DB      1CH,5,2,0,  1DH,1EH
530
        DB      1CH,5,2,80H,1DH,1EH
531
 
532
PM_GO_TAB:
533
        DW      PM_GO_S48
534
        DW      PM_GO_S128
535
        DW      PM_GO_TRDOS
536
 
537
PM_GO_S48:
538
        OUT     (C),E
539
        NOP
540
        LD      A,30H
541
        LD      BC,CONF_128
542
        OUT     (C),A
543
        RST     0
544
 
545
PM_GO_S128:
546
        OUT     (C),E
547
        NOP
548
        XOR     A
549
        LD      BC,CONF_128
550
        OUT     (C),A
551
        RST     0
552
 
553
PM_GO_TRDOS:
554
        OUT     (C),E
555
        NOP
556
        LD      BC,CONF_128
557
        LD      A,30H
558
        OUT     (C),A
559
        LD      BC,0
560
        PUSH    BC
561
        JP      3D2FH
562
 
563
;               DUPL 0X3FFE-$,0
564
;               DB 0XB2
565
 
1120 savelij 566
        IF MOMPASS = 1
567
;       ssss
568
        ENDIF
569
 
627 savelij 570
                DUPL 0X3FF8-$,0
571
                DB "ATMCPM"
572
                DW DATA_VERS