Subversion Repositories pentevo

Rev

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

Rev Author Line No. Line
801 savelij 1
 
1067 savelij 2
; LAST UPDATE: 24.02.2023 savelij
801 savelij 3
 
4
PAGE
5
                TITLE "main.a80"
6
 
7
                include ../../macros.a80
8
                include ../../define.a80
9
                include ../../global_vars.a80
10
                include ../../ports_ide.a80
11
                include ../../basic_tokens.a80
12
                include ../../bas_trd_vars.a80
13
                include ../../tmpkeys.a80
839 savelij 14
                include ../../version.a80
875 savelij 15
                include ../../nums_devices.a80
1026 savelij 16
                include ../../ports_ngs.a80
801 savelij 17
 
1026 savelij 18
TO_DOS          EQU 0x3D2F
801 savelij 19
 
1026 savelij 20
 INIT_VAR 0xC000
21
 SETVAR ADR_CAT,        0xC00           ;    ᪥  ࠧ
22
 SETVAR ADR_CAT_FAT,    0x800           ;    䠩  FAT
23
 SETVAR ADR_CAT_SCRH,   0x1000          ;    ᪠ 䠩
24
 SETVAR BUFTSC,         0x180           ; 180 ⠡ ᮢ ப ࠭              F700
25
 SETVAR MOUSE_BUFF,     0x10            ; 10  ࠭  
26
 SETVAR COLBUF,         0x20            ; 20  ࠭ 梥
27
 SETVAR BUF_FILEITEM,   0x20            ; 20  ⥫ 䠩
28
 SETVAR BUF_RDSEC,      0x200           ; 200  ᥪ  ஢થ 䠩         F900
29
 SETVAR BUF_RDPATH,     0x100           ; 100  ⥪饣                        FB00
30
 SETVAR BUF_LEVDIR,     0x400           ; 400  ஢   䠩       FC00
31
 SETVAR BUF_LINESWIN,   0x200           ; 200   ⥫   
801 savelij 32
 
1026 savelij 33
H_FILE          EQU 16                  ; ਭ   뢮 䠩 c TR-DOS
34
V_FILE          EQU 24                  ;    뢮 䠩 c TR-DOS
35
FV_FILE         EQU 26                  ; ਭ   뢮 䠩 c FAT
36
FV_FILE6        EQU ((FV_FILE-3)*8)/6   ; ਭ   뢮 䠩  FAT   68
37
FH_FILE         EQU 24                  ;    뢮 䠩  FAT
38
WIDE            EQU 1                   ;  ஡  
801 savelij 39
 
1026 savelij 40
CMOS_ON         EQU 0x80
801 savelij 41
CMOS_OFF        EQU 0
42
 
1026 savelij 43
                ORG 0x6000
801 savelij 44
                DI
45
                CALL CLEAR_128K
1026 savelij 46
                LD A,0x10
47
                CALL SET_7FFD                   ; 祭 ᨪ48  ࠭ 0
48
                CALL ADRTSC                     ; ᮧ ⠡ ᮢ ப ࠭
49
        RST8 _MOUNTER,_GET_VIRT_BITS
999 savelij 50
        RST8 _COM_DEV,_DEVFIND
801 savelij 51
                JR C,START3
999 savelij 52
        RST8 _MOUNTER,_FIND_MOUNTED
53
START3
54
        RST8 _COM_DEV,_CONTROL_SD
801 savelij 55
                EI
56
                HALT
57
                DI
58
                LD H,0
1026 savelij 59
                CALL READCMOS                   ; ⥭ ᥪ㭤  ।  
801 savelij 60
                INC L
61
                LD HL,ERS_FLAGS
1026 savelij 62
                JR NZ,START2                    ; ᫨ ⠫ 0xFF, 
63
                RES B_CLOCK_ON,(HL)             ;   
801 savelij 64
                JR START1
65
 
1026 savelij 66
START2          SET 2,(HL)                      ;  
801 savelij 67
START4          CALL SET_MODES
1026 savelij 68
START1          CALL DETECTMOUSE                ; ।  
69
                CALL GLUDIN                     ; 㬪㫨  AY
70
                CALL MOUSE                      ;  
71
                LD HL,0x807C
72
                LD (ARXY),HL                    ; ⠭ 䮫⭮ 樨   
801 savelij 73
                CALL DISK_NONE
74
                CALL SYSTEM
1026 savelij 75
                CALL RESET_VG                   ;  誨  ⠭ 墠稪 訡 dos
801 savelij 76
RESTART         DI
1026 savelij 77
                LD A,0x10
78
                CALL SET_7FFD                   ; 稫 ᨪ48  ࠭ 0
801 savelij 79
                CALL TURBO_7MHZ
80
                CALL SYSTEM
81
                RES 3,(IY+55)
1026 savelij 82
                LD SP,0x6000
83
                LD HL,0x3E00
801 savelij 84
                PUSH HL
1026 savelij 85
                LD HL,0x1303
86
                PUSH HL                         ; ନ஢  ⥪
87
                LD (ERR_SP),SP                  ; ᫨ ⥪騩   ६ ᨪ
801 savelij 88
                LD (TEK_SP),SP
1026 savelij 89
                CALL S_FACE                     ; 뢮  ࠭ ᭮ 
801 savelij 90
                LD IX,MAINMENU
999 savelij 91
        RST8 _WINW
1026 savelij 92
                RES 5,(IY+1)                    ;   祣  
93
                LD H,HDD_TIMEOUT
94
                CALL READCMOS
95
                RRCA
96
                RRCA
97
                RRCA
98
                RRCA
99
                AND 0x0F
100
                LD (SCRSAV.TIMEOUT),A
101
                CALL RESET_SCREENSAVER
952 savelij 102
 
103
        IFDEF TESTEMUFDD
104
; test
999 savelij 105
        PEC_ON M_SHADOW_BF
106
        EVOPORT WIN_P2,RAM_DATARAMD
107
        EVOPORT WIN_P2,ZXSTD_CPU2
1026 savelij 108
        PEC_OFF M_SHADOW_BF!0xFF
952 savelij 109
 
110
                LD HL,VIRT_REAL_DRIVE << 8
111
                CALL WRITECMOS
112
                LD HL,ADR_TXT_BOOT
113
                JP RUNFILE1
114
 
115
ADR_TXT_BOOT    DB "boot    "
116
; test
117
        ENDIF
118
 
1026 savelij 119
; 室   横  ࠢ
801 savelij 120
_RULILKA        EI     
121
                LD A,(ERS_FLAGS)
1026 savelij 122
                AND M_MOUSE_ON                  ; ஢ઠ  
801 savelij 123
                JR Z,_RULNMO
1026 savelij 124
; FIX  
801 savelij 125
MKEYPR          EI
126
                HALT
127
                LD A,HIGH (MOUSE_KEYS)
128
                IN A,(LOW (MOUSE_KEYS))
129
                CPL
130
                AND 7
131
                JR NZ,MKEYPR
1026 savelij 132
                CALL SAVE2X2                    ; ᫨  ⠫  ५
133
_RULNMO         CALL SET_ADR_ATR                ; ⠭    梥⭮ ᪨
801 savelij 134
                JR MAINLOP
135
 
1026 savelij 136
;  ५ 
137
UP              CALL CURSOR_UP                  ; ᬥ ⥪騩 㭪  -1
801 savelij 138
                JR SET_POS1                    
139
 
1026 savelij 140
;  ५ ࠢ
141
RIGHT           BIT 1,(IX+_FLAGS)               ; ஢ઠ    䠩
142
                PUSH AF                         ; ࠭ १ ஢ન
143
                CALL NZ,PAGEDN                  ; ᫨ 䠩,  ⠭ ࠭筮
144
                POP AF                          ; ⠭ १ ஢ન
145
                JR NZ,SET_POS1                  ; ᫨ 䠩 த
801 savelij 146
                LD A,(IX+_NUM_KOL_L)
147
                AND A
148
                JR Z,SET_POS
1026 savelij 149
                DEC A                           ;  室   ᫥ 㭪
150
                JR SET_POS                      ; 塞    த
801 savelij 151
 
1026 savelij 152
;  ५ 
153
DOWN            CALL CURSOR_DOWN                ; ᬥ ⥪騩 㭪  +1
801 savelij 154
                JR SET_POS1
155
 
1026 savelij 156
;  ५ 
157
LEFT            BIT 1,(IX+_FLAGS)               ; ஢ઠ    䠩
158
                PUSH AF                         ; ࠭ १ ஢ન
159
                CALL NZ,PAGEUP                  ; ᫨ 䠩,  ⠭ ࠭筮
160
                POP AF                          ; ⠭ १ ஢ન
161
                JR NZ,SET_POS1                  ; ᫨ 䠩 த
162
                XOR A                           ;  室    㭪
163
SET_POS         LD (IX+_NUM_PKT),A              ;   
801 savelij 164
                LD (IX+_TEK_PKT_L),A
1026 savelij 165
                LD (IX+_TEK_PKT_H),0            ;   ࠭ 㭪
166
SET_POS1        CALL COLOR_CURSOR               ; ᮢ 梥⭮ ᪨ 
167
SET_POS2        CALL GLUDIN                     ; 㬪㫨  AY
801 savelij 168
MAINLOP
1026 savelij 169
                CALL CHECK_SCREENSAVER
170
        RST8 _COM_DEV,_CONTROL_SD               ; ஢ઠ  SD    ஢
801 savelij 171
                LD A,(ERS_FLAGS)
1026 savelij 172
                AND M_MOUSE_ON                  ; ஢ઠ  
801 savelij 173
                JP Z,MAINNMO
1026 savelij 174
                LD HL,(ARXY)                    ;  न 
801 savelij 175
                PUSH HL
1026 savelij 176
                CALL MOUSE                      ;  ⮢ 
801 savelij 177
                POP BC
178
                AND A
179
                SBC HL,BC
1026 savelij 180
                JR Z,NO_SELECT                  ;  뫮  
181
                CALL RESTORE_KOSHAK             ; 뫮  ,  稪 蠪
182
                CALL MOUOPT                     ; ஢ઠ     
801 savelij 183
NO_SELECT       LD BC,MOUSE_KEYS
1026 savelij 184
                IN A,(C)                        ;    
801 savelij 185
                AND 7
186
                CP 6
1026 savelij 187
                JR Z,PRESS_MOUSE                ; ᫨    
801 savelij 188
                CP 5
1026 savelij 189
                JP Z,RESTART                    ; ᫨  ࠢ  
190
                CALL PRINTTIME                  ;  ६ ᫨ 
801 savelij 191
                EI
192
                HALT
1026 savelij 193
                CALL REST2X2                    ; ⠭ ᮪ ࠭  
194
                CALL DRAW_MOUSE                 ; ᮢ  
195
                JR MAINQMO                      ; த 
801 savelij 196
 
197
PRESS_MOUSE     CALL OPMSPL
198
                AND A
199
                JR Z,CP_MOUSE4
200
                LD (LAST_K),A
201
                CALL TIMELP
202
                JR SELECT_KEY
203
 
1026 savelij 204
CP_MOUSE4       CALL MOUOPT                     ; ஢ઠ    । ⥪饣 
205
                JR C,MAINNMO                    ;     
801 savelij 206
                LD L,(IX+_ADR_HOTKEY_L)
207
                LD H,(IX+_ADR_HOTKEY_H)
208
                LD A,H
209
                OR L
1026 savelij 210
                JR Z,ENTER                      ; ᯨ᪠ ⪥ , 室   㭪
211
                LD E,(IX+_NUM_PKT)              ; 﫨  㭪 㤠  
801 savelij 212
                LD D,0
1026 savelij 213
                ADD HL,DE                       ;  ⪥ ࠭ 㭪
801 savelij 214
                LD DE,LAST_K
1026 savelij 215
                LDI                             ;    
801 savelij 216
                JR ENTER
217
 
1026 savelij 218
MAINNMO         CALL PRINTTIME                  ;  ६, ᫨   
801 savelij 219
                EI
220
                HALT
1026 savelij 221
MAINQMO         BIT 5,(IY+1)                    ; ஢ઠ   
222
                CALL Z,CP_TIME_KOSHAK           ; ᫨   祣, ஢塞 稪 蠪
223
                JP Z,MAINLOP                    ; த  ࠢ
224
                CALL 0x1F54                     ; ஢ઠ  BREAK
225
                JP NC,RESTART                   ; ᫨ BREAK  १᪠
1030 savelij 226
SELECT_KEY      CALL GLUDIN
227
                CALL RESTORE_KOSHAK             ;    ,  稪 蠪
1026 savelij 228
                CALL RESET_SCREENSAVER
229
                RES 5,(IY+1)                    ;   祣  
801 savelij 230
                LD HL,LAST_K
1026 savelij 231
                LD A,(HL)                       ; 﫨  
801 savelij 232
                LD B,0
233
                LD HL,MAIN_KEYS
1026 savelij 234
                LD C,(HL)                       ; ⢮ 㯭 
801 savelij 235
                LD D,C
236
                INC HL
237
                CPIR
1026 savelij 238
                JR NZ,NOMAINKEYS                ; 祣  諨,  ᬮਬ  ⥪饣 
239
                                                ;  -   , 㯭 ᥣ
801 savelij 240
                LD HL,ADREXEKEYS
1026 savelij 241
                LD A,D                          ; ⢮   ⠡ -1
242
                SUB C                           ; 稫 ࠭ 
801 savelij 243
                DEC A
244
                JR JUMP2HL
245
 
1026 savelij 246
; ஢ઠ ⪥  ⥪饬 
801 savelij 247
NOMAINKEYS      LD L,(IX+_ADR_HOTKEY_L)
248
                LD H,(IX+_ADR_HOTKEY_H)
249
                LD C,A
250
                LD A,H
251
                OR L
1026 savelij 252
                JP Z,MAINLOP                    ; ᫨ ᯨ᪠ , த 
801 savelij 253
                LD A,C
254
                LD C,(IX+_V_SIZE)
255
                LD E,(HL)
256
                INC HL
1026 savelij 257
                DEC C                           ; ⢮ 
258
                DEC C                           ;   -2
801 savelij 259
                LD D,C
260
                LD B,0
1026 savelij 261
                CPIR                            ; ᪠஢ ᯨ᪠  
801 savelij 262
                JR NZ,OSTAT_KEYS
1026 savelij 263
                LD A,D                          ;  
801 savelij 264
                SUB C
1026 savelij 265
                DEC A                           ; 稫  ⮩   -1
266
                LD (IX+_NUM_PKT),A              ;  㭪  
267
                LD (IX+_TEK_PKT_L),A            ;  ⮩   㪠 ᯨ
801 savelij 268
ENTER           LD A,(ERS_FLAGS)
269
                AND M_MOUSE_ON
1026 savelij 270
                CALL NZ,TIMELP                  ;  ६ ᫨          
271
                CALL REST2X2                    ; ૨  
272
                CALL GLUDIN                     ; 㬪㫨  AY
273
                LD A,(IX+_NUM_PKT)              ;   ᯨ᪠  맢
801 savelij 274
JUMP2HL1        LD L,(IX+_ADR_PRG_L)
1026 savelij 275
                LD H,(IX+_ADR_PRG_H)            ; 﫨 ᯨ᮪ ᮢ 1   㤥 뢠
801 savelij 276
JUMP2HL         ADD A,A
277
                ADD A,L
278
                LD L,A
279
                ADC A,H
280
                SUB L
281
                LD H,A
282
                LD A,(HL)
283
                INC HL
284
                LD H,(HL)
285
                LD L,A
286
                JP (HL)
287
 
288
OSTAT_KEYS      EX AF,AF'
289
                LD A,E
290
                SUB D
291
                JP Z,MAINLOP
292
                LD C,A
293
                EX AF,AF'
294
                CPIR
295
                JP NZ,MAINLOP
296
                LD A,E
297
                SUB C
298
                DEC A
299
                JR JUMP2HL1
300
 
1026 savelij 301
;  ० 
801 savelij 302
CHNGMODE        LD HL,MEMMODE
1026 savelij 303
                DEC (HL)                        ; ᬥ ० 
801 savelij 304
                JP P,CHNGMODEY
1026 savelij 305
                LD (HL),2                       ; ᫨ 諨 १ 0,  ⠢ ० 48
801 savelij 306
CHNGMODEY       LD A,(ERS_FLAGS)
1026 savelij 307
                AND M_CLOCK_ON                  ; ஢ઠ  
801 savelij 308
                RET Z
309
                LD A,(ERS_FLAGS)
310
                AND M_EMU_TAPE
311
                RLCA
312
                RLCA
313
                LD L,A
314
                LD A,(MEMMODE)
315
                OR L
316
                LD L,A
317
CHNGMODEY1      LD A,(SYSREG1)
1026 savelij 318
                AND 0x10
801 savelij 319
                RLCA
320
                RLCA
321
                RLCA
322
                OR L
323
                LD C,A
324
                LD H,CMOS_BYTE_01
325
                CALL READCMOS
326
                AND %01111100
327
                OR C
328
CHANGE_MODES    LD L,A
1026 savelij 329
                CALL WRITECMOS                  ; ࠭    ०
801 savelij 330
                CALL REST2X2
331
                CALL SET_MODES
332
                CALL PRT_MODES
333
                LD A,(ERS_FLAGS)
334
                AND M_MOUSE_ON
335
                JP Z,MAINLOP
336
                CALL DRAW_MOUSE
337
                CALL TIMELP
338
                JP MAINLOP
339
 
1026 savelij 340
;  ० ࡮ 0=3,5MHZ, 1=7MHZ, 2-14MHZ
801 savelij 341
CHNGTURBO       LD HL,TURBO_NUM
1026 savelij 342
                INC (HL)                        ; ᬥ turbo ०
801 savelij 343
                LD A,(HL)
344
                CP 3
345
                JR C,CHNGTURBO1
1026 savelij 346
                LD (HL),0                       ; ᫨ 諨 १ 0,  ⠢ ० 14MHZ
801 savelij 347
CHNGTURBO1      LD A,(HL)
348
                AND A
1026 savelij 349
                LD DE,0x1000
801 savelij 350
                JR Z,CHNGTURBO2
351
                DEC A
352
                LD DE,0
353
                JR Z,CHNGTURBO2
354
                LD DE,0X10*0X100+M_TURBO14
355
CHNGTURBO2      LD A,D
356
                LD HL,SYSREG1
357
                LD A,(HL)
1026 savelij 358
                AND %11101111                   ;   ࡮०
801 savelij 359
                OR D
360
                LD (HL),A
361
                LD H,CMOS_BYTE_00
362
                CALL READCMOS
363
                AND M_TURBO14!0XFF
364
                OR E
365
                LD L,A
366
                LD H,CMOS_BYTE_00
367
                CALL WRITECMOS
368
                JP CHNGMODEY
369
 
370
CHNGTAPMODE     LD H,CMOS_BYTE_00
371
                CALL READCMOS
372
                XOR M_EMUL_TAPE
373
                JR CHANGE_MODES
374
 
375
CHNGGLUKMOD     LD H,CMOS_BYTE_00
376
                CALL READCMOS
1026 savelij 377
                AND MKOL_MODES!0xFF
801 savelij 378
                LD C,A
379
                LD A,L
380
                AND MKOL_MODES
381
                INC A
382
                CP KOL_MODES
383
                JR C,CHNGGLUKMOD1
384
                XOR A
385
CHNGGLUKMOD1    OR C
386
                LD L,A
387
                JR CHANGE_MODES
388
 
389
EN_AUTOMNT      LD H,CMOS_BYTE_01
390
                CALL READCMOS
391
                XOR M_AUTOMOUNT
392
                JP CHANGE_MODES
393
 
394
EN_LOADFONT     LD H,CMOS_BYTE_00
395
                CALL READCMOS
396
                XOR M_RELOAD_FONT
397
                JP CHANGE_MODES
398
 
399
SET_TYPEFONT    LD H,CMOS_BYTE_00
400
                CALL READCMOS
401
                XOR M_TYPE_FONT
402
                PUSH AF
403
                PUSH HL
404
                AND M_TYPE_FONT
405
                JR Z,SETTYPEFONT
406
                LD A,1
999 savelij 407
SETTYPEFONT
408
        RST8 _SETUP_FONT
801 savelij 409
                POP HL
410
                POP AF
411
                JP CHANGE_MODES
412
 
1026 savelij 413
; 祭/몫祭e ⮡ࠦ ᮢ
801 savelij 414
CMOS_ONOFF      LD A,(ERS_FLAGS)
1026 savelij 415
                AND M_CLOCK_ON                  ; ஢ઠ  
801 savelij 416
                JP Z,MAINLOP
417
                LD H,CMOS_BYTE_01
418
                CALL READCMOS
419
                XOR M_CLOCK_VIEW
420
                LD L,A
421
                PUSH AF
422
                LD H,CMOS_BYTE_01
423
                CALL WRITECMOS
424
                POP AF
425
                AND M_CLOCK_VIEW
426
                JP Z,MAINLOP
427
                LD HL,TIME_OFF
999 savelij 428
        RST8 _PRINT_MESSAGE
801 savelij 429
                JP MAINLOP
430
 
1026 savelij 431
;祭/몫祭  
801 savelij 432
MOUSE_ONOFF     LD HL,ERS_FLAGS
433
                LD A,(HL)
1026 savelij 434
                XOR M_MOUSE_ON                  ;  ⮡ࠦ 
801 savelij 435
                LD (HL),A
436
                AND M_MOUSE_ON
1026 savelij 437
                CALL NZ,DETECTMOUSE             ; ᫨ 稫, ஢塞 稥
438
                CALL NC,REST2X2                 ; ᫨   ,  몫砥 ⮡ࠦ
801 savelij 439
                JP MAINLOP
440
 
1026 savelij 441
;  祣- ᫥ 訡
442
EXIT4ERROR      RES 5,(IY+1)                    ;   祣  
801 savelij 443
                LD BC,MOUSE_KEYS
444
                IN D,(C)
445
E4E1            CALL PRINTTIME
446
                EI
447
                HALT
448
                BIT 5,(IY+1)
449
                JR NZ,E4E3
450
                LD A,(ERS_FLAGS)
451
                AND M_MOUSE_ON
452
                JR NZ,E4E1
453
                LD A,HIGH (MOUSE_KEYS)
454
                IN A,(LOW (MOUSE_KEYS))
455
                CP D
456
                JR Z,E4E1
457
E4E2            EX AF,AF'
458
                CALL TIMELP
459
                EX AF,AF'
460
                RRA
461
                RET
462
 
463
E4E3            XOR A
464
                IN A,(0XFE)
465
                CPL
1026 savelij 466
                AND 0x1F
801 savelij 467
                JR NZ,E4E3
468
                LD (LAST_K),A
1026 savelij 469
                RES 5,(IY+1)                    ;   祣  
801 savelij 470
                RET
471
 
1026 savelij 472
;  ⥪饣 ࠭ ᪮
801 savelij 473
PRT_DRV_SYM     LD A,(TRD_5CF8)
474
                ADD A,"A"
475
                LD (TXT_DRIVE),A
476
                LD HL,TRDDRV_MODE
999 savelij 477
        RST8 _PRINT_MESSAGE
801 savelij 478
                RET
479
 
1026 savelij 480
; ᯥ⪠ ⥪饣 ०
801 savelij 481
PRT_MODES       LD HL,SPEED_MODE
999 savelij 482
        RST8 _PRINT_MESSAGE
801 savelij 483
                LD HL,MEM_MODE
999 savelij 484
        RST8 _PRINT_MESSAGE
801 savelij 485
                LD HL,EMUTAPLOAD
999 savelij 486
        RST8 _PRINT_MESSAGE
801 savelij 487
                LD HL,SET_RESET
999 savelij 488
        RST8 _PRINT_MESSAGE
801 savelij 489
                LD HL,ROMLOADFONT
999 savelij 490
        RST8 _PRINT_MESSAGE
801 savelij 491
                LD HL,TYPESFONT
999 savelij 492
        RST8 _PRINT_MESSAGE
801 savelij 493
                LD HL,TXT_AUTOMOUNT
999 savelij 494
        RST8 _PRINT_MESSAGE
801 savelij 495
                RET
496
 
1026 savelij 497
; ᯥ⪠ ⥪饣 㠫쭮 ᪮
999 savelij 498
PRT_VIRTDRV
499
        RST8 _MOUNTER,_GET_VIRT_BITS
888 savelij 500
                LD D,A
501
                LD H,VIRT_REAL_DRIVE
502
                CALL READCMOS
801 savelij 503
                AND 3
834 savelij 504
                LD B,A
505
                INC B
835 savelij 506
                ADD A,'A'
507
                LD C,A
888 savelij 508
                LD A,%10000000
834 savelij 509
.L1             RLCA
510
                DJNZ .L1
888 savelij 511
                AND D
801 savelij 512
                LD HL,VIRT_DRIVE
513
                JR NZ,PRTVIRTDRV2
514
                LD (HL)," "
515
                INC HL
516
                LD (HL),C
517
                INC HL
518
                LD (HL)," "
519
                JR PRTVIRTDRV1
520
 
521
PRTVIRTDRV2     LD (HL),"o"
522
                INC HL
523
                LD (HL),"f"
524
                INC HL
525
                LD (HL),"f"
526
PRTVIRTDRV1     LD HL,VIRTUAL_DRV
999 savelij 527
        RST8 _PRINT_MESSAGE
801 savelij 528
                LD HL,ADR_CAT
999 savelij 529
        RST8  _MOUNTER,_GET_MOUNTED
801 savelij 530
                LD HL,ADR_CAT
531
                LD DE,MNT_DRV_A
532
                CALL COPY_MNTNAME
1026 savelij 533
                LD L,0x40
801 savelij 534
                LD DE,MNT_DRV_B
535
                CALL COPY_MNTNAME
1026 savelij 536
                LD L,0x80
801 savelij 537
                LD DE,MNT_DRV_C
538
                CALL COPY_MNTNAME
1026 savelij 539
                LD L,0xC0
801 savelij 540
                LD DE,MNT_DRV_D
541
                CALL COPY_MNTNAME
542
                CALL GET_RAMD_NAME
543
                LD HL,MOUNTED_DRV
999 savelij 544
        RST8 _PRINT_MESSAGE
801 savelij 545
                RET
546
 
547
COPY_MNTNAME    PUSH HL
548
                LD A,(HL)
549
                AND A
550
                JR NZ,COPY_MNTNAME1
551
                LD HL,TXT_NONE
1026 savelij 552
                LD BC,0x0C
801 savelij 553
                JR COPY_MNTNAME3
554
 
555
COPY_MNTNAME1   LD BC,8
556
                LDIR
557
                LD A,"."
558
                LD (DE),A
559
                INC DE
560
                LD C,3
561
COPY_MNTNAME3   LDIR
562
                POP HL
563
                RET
564
 
1026 savelij 565
; 祭  䠩 㦥  ࠬ
999 savelij 566
GET_RAMD_NAME
567
        PEC_ON M_SHADOW_BF
801 savelij 568
                LD BC,WIN_P2
569
                LD A,RAM_RAMDISK
570
                OUT (C),A
1026 savelij 571
                LD DE,CPU2+0x3DFF
801 savelij 572
                LD A,(DE)
573
                AND A
574
                JR Z,GRN1
575
                LD HL,GRN1
576
                PUSH HL
577
                LD HL,IN_RAMDISK
578
                LD B,8
579
                CALL GRN2
580
                LD B,3
581
                LD (HL),"."
582
                INC HL
583
GRN2            LD A,(DE)
584
                LD (HL),A
585
                DEC D
586
                INC HL
587
                DJNZ GRN2
588
                RET
589
 
590
GRN1            LD BC,WIN_P2
1026 savelij 591
                LD A,ZXSTD_CPU2
801 savelij 592
                OUT (C),A
999 savelij 593
        PEC_OFF M_SHADOW_BF
801 savelij 594
                RET
595
 
1026 savelij 596
; 뢮 ᭮   ᥩ
801 savelij 597
S_FACE          LD A,7
598
                CALL CLS
599
                LD HL,TXTFULLSCR
999 savelij 600
        RST8 _PRINT_MESSAGE
601
        RST8 _VERSION
977 savelij 602
                BIT B_INCORRECTFPGA,A
603
                JR Z,.L1
604
                RES B_INCORRECTFPGA,A
605
                AND A
606
                JR Z,.L1
607
                LD HL,INCORRECTFPGA
999 savelij 608
        RST8 _PRINT_MESSAGE
1026 savelij 609
.L1             CALL PRT_DRV_SYM                ;  ⥪饣 ᪮
610
                CALL PRT_MODES                  ;  ⥪饣 ०
611
                CALL PRT_VIRTDRV                ;  ⥪饣 㠫쭮 ᪮
801 savelij 612
                XOR A
1026 savelij 613
                JP DRAW_KOSHAK                  ; 뢮 0 䠧 蠪
801 savelij 614
 
615
SET_EFF7_A_     LD A,(SYSREG1)
616
SET_EFF7        LD BC,PENT_CONF
617
                OUT (C),A
618
                RET
619
 
1026 savelij 620
SET_7FFD_0      LD A,0x10
801 savelij 621
SET_7FFD        PUSH BC
622
                LD BC,CONF_128
623
                OUT (C),A
624
                POP BC
625
                RET
626
 
627
MEMSET          CALL CLEAR_128K
1026 savelij 628
                LD A,(TURBO_NUM)                ; ⠭ TURBO ०
801 savelij 629
                AND A
1026 savelij 630
                LD DE,0x10A3                    ; 3,5MHZ ports EFF7 BIT4=1 xx77 BIT3=0
801 savelij 631
                JR Z,MEMSET01
632
                DEC A
1026 savelij 633
                LD DE,0xA3                      ; 7MHZ ports EFF7 BIT4=0 xx77 BIT3=0
801 savelij 634
                JR Z,MEMSET01
1026 savelij 635
                LD DE,0x10AB                    ; 14MHZ ports EFF7 BIT4=1 xx77 BIT3=1
636
MEMSET01        LD BC,0xFF77
999 savelij 637
        PEC_ON M_SHADOW_BF
801 savelij 638
                OUT (C),E
999 savelij 639
        PEC_OFF M_SHADOW_BF
801 savelij 640
                LD A,D
641
                CALL SET_EFF7
642
                LD A,(MEMMODE)
643
                AND A
1026 savelij 644
                RET Z                           ; ०  
801 savelij 645
MEMSET1         DEC A
646
                JR Z,MEMORY48
1026 savelij 647
; 祭 ० BASIC128
801 savelij 648
ON_BIT128       LD A,(SYSREG1)
1026 savelij 649
                AND 0x10
801 savelij 650
                ADD A,4
651
                CALL SET_EFF7
652
                JR SET_7FFD_0
653
 
1026 savelij 654
; 祭 ० BASI48
801 savelij 655
MEMORY48        CALL ON_BIT128
1026 savelij 656
                LD A,0x30
801 savelij 657
                JR SET_7FFD
658
 
1026 savelij 659
; ⥭ CMOS   ᮮ饭  뢮  ࠭  ⠭ ०
660
SET_MODES       LD H,0x0B                       ;  ०  ᮢ
801 savelij 661
                CALL READCMOS
1026 savelij 662
                RES 2,L                         ; ਭ㤨⥫쭮 砥  
663
                CALL WRITECMOS                  ; ࠭塞 
664
                LD H,CMOS_BYTE_01               ; ⠥ ⠭ ࡮  
801 savelij 665
                CALL READCMOS
666
                AND M_TURBO357
667
                RRCA
668
                RRCA
669
                RRCA
1026 savelij 670
                LD (SYSREG1),A                  ; ᮤন     EFF7
801 savelij 671
                LD B,A
672
                LD A,L
673
                AND _128K | _48K | _1MB
1026 savelij 674
                LD (MEMMODE),A                  ; ࠭ ० 
801 savelij 675
                LD H,CMOS_BYTE_00
1026 savelij 676
                CALL READCMOS                   ; ⠥ ᭮ ⠭
801 savelij 677
                LD C,A
678
                AND M_TURBO14
1026 savelij 679
                LD HL,TURBO_NUM                 ;  ࡮ ०
680
                LD (HL),2                       ; ० 14
801 savelij 681
                JR NZ,SETMODES04
682
                LD A,B
1026 savelij 683
                DEC (HL)                        ; ० 7
684
                AND 0x10
801 savelij 685
                JR Z,SETMODES04
1026 savelij 686
                DEC (HL)                        ; ० 3,5
687
SETMODES04      LD A,(HL)                       ; 﫨 ⥪騩 ࡮ ०
801 savelij 688
                ADD A,A
689
                ADD A,A
690
                LD E,A
691
                LD D,0
1026 savelij 692
                LD HL,TXTTURBOMODE              ; ⥪ ࡮ ०
693
                ADD HL,DE                       ; 諨  㦭 ⥪
801 savelij 694
                LD DE,TXT_SPEED
695
                LD A,C
696
                LDI
697
                LDI
698
                LDI
1026 savelij 699
                LDI                             ; ७᫨  뢮 ࠭
801 savelij 700
                LD C,A
701
                AND M_EMUL_TAPE
702
                LD HL,EMTAPLOAD
1026 savelij 703
                CALL SET_ONOFF                  ; ७ ᨬ  뢮  ࠭, ON  OFF
801 savelij 704
                LD A,C
705
                AND M_RELOAD_FONT
706
                XOR M_RELOAD_FONT
707
                LD HL,EROMLOADFONT
1026 savelij 708
                CALL SET_ONOFF                  ; ७ ᨬ  뢮  ࠭, ON  OFF
801 savelij 709
                LD A,C
710
                AND M_TYPE_FONT
711
                PUSH BC
712
                LD HL,TXTMODTYPE
713
                LD BC,5
714
                JR Z,SET_FONT2
715
                ADD HL,BC
716
SET_FONT2       LD DE,ETYPESFONT
717
                LDIR
718
                POP BC
719
                LD A,C
720
                AND MKOL_MODES
721
                CP KOL_MODES
722
                JR C,SETMODES03
723
                XOR A
724
SETMODES03      LD L,A
725
                ADD A,A
726
                ADD A,L
727
                ADD A,A
728
                ADD A,A
729
                LD H,0
730
                LD L,A
731
                LD DE,TXT_RESETTO
732
                ADD HL,DE
733
                LD DE,TXT_RESET
734
                LD A,C
1026 savelij 735
                LD BC,0x0C
801 savelij 736
                LDIR
737
                LD C,A
738
                AND M_PRINTER_AY
739
                LD HL,ETXT_AYPRINTER
1026 savelij 740
                CALL SET_ONOFF                  ; ७ ᨬ  뢮  ࠭, ON  OFF
801 savelij 741
SETMODES02      LD A,(MEMMODE)
742
                AND A
743
                LD HL,T_ALL
1026 savelij 744
                JR Z,SETMODES01                 ; all memory
801 savelij 745
                LD HL,T_48
746
                DEC A
1026 savelij 747
                JR Z,SETMODES01                 ; 48K
748
                LD HL,T_128                     ; 128K
749
SETMODES01      LD DE,TXT_MEM                   ; ० 
801 savelij 750
                LD A,C
751
                LD BC,3
752
                LDIR
753
                LD H,CMOS_BYTE_01
754
                CALL READCMOS
755
                PUSH AF
756
                AND M_AUTOMOUNT
757
                LD HL,ETXT_AUTOMOUNT
758
                CALL SET_ONOFF
759
                POP AF
1026 savelij 760
;  १ HONEY COMANDER
801 savelij 761
                AND M_REZIDENT
762
                LD HL,TXT_REZIDENT
763
                CALL SET_ONOFF
838 savelij 764
                LD H,CMOS_BYTE_03
765
                CALL READCMOS
766
                AND M_KILL_REZIDENT
767
                LD HL,TXT_KILLREZID
768
                CALL SET_ONOFF
801 savelij 769
                LD A,(ERS_FLAGS)
770
                AND M_CLOCK_ON
771
                RET Z
772
                LD DE,VERS_CONF
773
                LD L,0
1026 savelij 774
                CALL GET_VERS_EVO               ;   䨣樨
801 savelij 775
                LD DE,VERS_BOOT
776
                LD L,1
1026 savelij 777
                JP GET_VERS_EVO                 ;  AVRBOOT
801 savelij 778
 
1026 savelij 779
; ७ ᨬ  뢮  ࠭, ON  OFF
801 savelij 780
SET_ONOFF       LD DE,"n "
781
                JR NZ,SET_ONOFF1
782
                LD DE,"ff"
783
SET_ONOFF1      LD (HL),D
784
                INC HL
785
                LD (HL),E
786
                RET
787
 
1026 savelij 788
TURBO_7MHZ      LD E,0xA3
789
                LD BC,0xFF77
999 savelij 790
        PEC_ON M_SHADOW_BF
801 savelij 791
                OUT (C),E
999 savelij 792
        PEC_OFF M_SHADOW_BF
801 savelij 793
                XOR A
794
                JP SET_EFF7
795
 
1026 savelij 796
        IF 1
797
; BC=BC/DE
798
DIVIDE16        LD HL,0
799
                LD A,0x11
800
.L1             RL C
801
                RL B
802
                DEC A
803
                RET Z
804
                ADC HL,HL
805
                JR NC,.L2
806
                OR A
807
                SBC HL,DE
808
                JR .L1
809
 
810
.L2             SBC HL,DE
811
                JR NC,.L3
812
                ADD HL,DE
813
.L3             CCF
814
                JR .L1
815
 
816
MULT            PUSH BC
817
                LD A,B
818
                LD HL,0
819
                LD B,0x10
820
.L1             ADD HL,HL
821
                RL C
822
                RLA    
823
                JR NC,.L2
824
                ADD HL,DE
825
                JR NC,.L2
826
                INC C
827
                JR NZ,.L2
828
                INC A
829
.L2             DJNZ .L1
830
                EX DE,HL
831
                LD L,C
832
                LD H,A
833
                POP BC
834
                RET    
835
        ENDIF
836
 
837
        IF 0
838
;=============================
839
;       16-bit multiply
840
;       Tim Paterson
841
;=============================
842
MULTIPLY16      ld hl,0
843
MUL_HLBC_DE     ld a,b
844
                ld b,0x11
845
                jr .l1
846
 
847
.l2             jr nc,.l3
848
                add hl,de
849
.l3             rr h
850
                rr l
851
.l1             rra
852
                rr c
853
                djnz .l2
854
                ld b,a
855
                ret
856
 
857
;=============================
858
;       16-bit divide
859
;       Tim Paterson
860
;=============================
861
; HLBC  DE
862
; 室 HL - ⮪, BC - ⭮
863
DIVIDE16        ld hl,0
864
DIV_HLBC_DE     ld a,b
865
                ld b,0x10
866
                rl c
867
                rla
868
.l1             rl l
869
                rl h
870
                jr c,.l2
871
                sbc hl,de
872
                jr nc,.l3
873
                add hl,de
874
.l3             ccf
875
.l4             rl c
876
                rla
877
                djnz .l1
878
                ld b,a
879
                ret
880
 
881
.l2             or a
882
                sbc hl,de
883
                jr .l4
884
        ENDIF
885
 
1047 savelij 886
                include conf_down.a80
1026 savelij 887
                include menu_execute.a80
888
                include call_cmos.a80
801 savelij 889
                include menu_data.a80
1026 savelij 890
                include fat_boot.a80
801 savelij 891
                include mouse.a80
892
                include window.a80
893
                include call_trdos.a80
894
                include koshak.a80
895
                include pc_keys_test.a80
896
                include bmp_view.a80
1047 savelij 897
                include conf_up.a80
1067 savelij 898
                include flasher.a80
801 savelij 899
 
1026 savelij 900
KOSHAK          binclude kot_anim.bin,9
901
ICON            binclude icon.bin,9
902
 
903
BAS_VAR         binclude bas_var.bin
904
EBAS_VAR
905
 
801 savelij 906
CLEAR_128K      DI
907
                LD HL,0
1026 savelij 908
                LD A,0x17
801 savelij 909
                CALL CLEAR128K0
1026 savelij 910
                LD A,0x16
801 savelij 911
                CALL CLEAR128K0
1026 savelij 912
                LD A,0x14
801 savelij 913
                CALL CLEAR128K0
1026 savelij 914
                LD A,0x13
801 savelij 915
                CALL CLEAR128K0
1026 savelij 916
                LD A,0x11
801 savelij 917
                CALL CLEAR128K0
1026 savelij 918
                LD A,0x10
801 savelij 919
CLEAR128K0      LD (TEMP_SAVE_SP),SP
920
                LD BC,CONF_128
921
                OUT (C),A
922
                LD SP,0
1026 savelij 923
                LD B,0x80
801 savelij 924
CLEAR128K1      REPT 64
925
                PUSH HL
926
                ENDM
927
                DJNZ CLEAR128K1
928
                LD SP,0
929
TEMP_SAVE_SP    EQU $-2
930
                RET
931
 
1026 savelij 932
; ⠭ ६ ᨪ  म, ⠭ ࠭ ᪮
801 savelij 933
SYSTEM          LD HL,BAS_VAR
934
                LD DE,KSTATE0
935
                LD BC,EBAS_VAR-BAS_VAR
1026 savelij 936
                LDIR                            ; ⠭ ⠭ ६ BASIC  TR-DOS
937
GET_DRV_SYM     LD A,(ERS_FLAGS)                ; ஢塞 稥 
801 savelij 938
                AND M_CLOCK_ON
939
                JR Z,SET_DRIVE
940
                LD H,VIRT_REAL_DRIVE
941
                CALL READCMOS
942
                RRCA
943
                RRCA
944
                AND 3
1026 savelij 945
SETUP_DRIVE     LD (DRV_SYM),A                  ; ⠭ ࠭ ॠ쭮 ᪮
946
SET_DRIVE       LD A,(DRV_SYM)                  ;  ⥬ ६  ᪠
801 savelij 947
                LD (TRD_5D19),A
948
                LD (TRD_5CF6),A
949
                LD L,A
950
                LD H,A
951
                LD (TRD_5CF8),HL
1026 savelij 952
                OR 0x3C
801 savelij 953
                LD (TRD_5D16),A
954
                RET
955
 
956
GLUDIN          LD H,CMOS_BYTE_01
957
                CALL READCMOS
958
                AND M_SOUNDKEYS
959
                RET Z
1026 savelij 960
                LD HL,DIN+0x0D
961
                LD A,0x0D
962
GLUDIN1         LD BC,0xFFFD
801 savelij 963
                OUT (C),A
1026 savelij 964
                LD B,0xBF
801 savelij 965
                OUTD
966
                SUB 1
967
                JR NC,GLUDIN1
968
                RET
969
 
970
SHUT2AY         LD H,CMOS_BYTE_01
971
                CALL READCMOS
972
                AND M_SOUNDKEYS
973
                RET Z
1026 savelij 974
                LD DE,0x0E00
801 savelij 975
SHUT2AY1        DEC D
976
                LD H,D
977
                LD L,E
978
                CALL SHUT2AY2
1026 savelij 979
                JR NZ,SHUT2AY1                  ;   ஭
980
                LD HL,0x073F
981
SHUT2AY2        LD BC,0xFFFD
801 savelij 982
                OUT (C),H
1026 savelij 983
                LD B,0xBF
801 savelij 984
                OUT (C),L
985
                RET
986
 
987
TIMELP          CALL PRINTTIME
988
                LD A,HIGH (MOUSE_KEYS)
1026 savelij 989
                IN A,(LOW (MOUSE_KEYS))         ;  
801 savelij 990
                CPL
991
                AND 7
1026 savelij 992
                JR NZ,TIMELP                    ;   
801 savelij 993
                RET
994
 
1026 savelij 995
;  PERFECT COMMANDER
801 savelij 996
PERFECT         DI
1026 savelij 997
                LD SP,0xC000
999 savelij 998
        PEC_ON M_SHADOW_BF
801 savelij 999
                LD BC,WIN_A0
1000
                LD A,ROM_RST81
1001
                OUT (C),A
1002
                LD HL,(ADR_PERFECT)
1026 savelij 1003
                LD DE,0x5B00
801 savelij 1004
                CALL UNPACK
1005
                LD BC,WIN_A0
1026 savelij 1006
                LD A,0x83
801 savelij 1007
                OUT (C),A
999 savelij 1008
        PEC_OFF M_SHADOW_BF
1026 savelij 1009
                LD A,0xC9
1010
                LD (0x66D2),A
1011
                LD SP,0x5FE4
1012
                JP 0x8A1D
801 savelij 1013
 
1014
ISDOS_BOOT      LD HL,ISDOS_BOOT1
1026 savelij 1015
                LD DE,0x5E00
801 savelij 1016
                LD BC,ISDOS_BOOT2-ISDOS_BOOT1
1017
                LDIR
1026 savelij 1018
                JP 0x5E00
801 savelij 1019
 
1020
                include hdd_detect.a80
1021
 
1022
ISDOS_BOOT1     include isdos_boot.a80
1023
ISDOS_BOOT2
1024
 
1026 savelij 1025
SEL_FAT_DRV     ;  ᮧ ⥪, ᮢ 뢮  ᯨ᪠    롮 ࠧ FAT