Subversion Repositories pentevo

Rev

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

Rev Author Line No. Line
623 savelij 1
 
1035 savelij 2
; LAST UPDATE: 09.11.2022 savelij
623 savelij 3
 
764 savelij 4
PAGE
5
                TITLE "evo-dos.a80"
6
 
623 savelij 7
                include ../../macros.a80
8
                include ../../define.a80
9
                include ../../global_vars.a80
665 savelij 10
                include ../../bas_trd_vars.a80
678 savelij 11
                include ../../basic_tokens.a80
764 savelij 12
                include ../../evodos_vars.a80
839 savelij 13
                include ../../version.a80
678 savelij 14
                include macros.a80
623 savelij 15
 
16
ZASTV_X         EQU 7                                   ; X   BETA128
678 savelij 17
ZASTV_Y         EQU 7                                   ; Y   BETA128
623 savelij 18
ZASTV_PIX       EQU ZASTV_Y*0X20+0X4000+ZASTV_X+9       ;   
19
ZASTV_ATR       EQU ZASTV_Y*0X20+0X5800+ZASTV_X         ;     
20
 
678 savelij 21
                ORG 0
22
                di
761 savelij 23
                ld      de,0xffff
795 savelij 24
 
25
;  HONEY COMANDER
1035 savelij 26
;               ld      a,7
27
;               jr      loc_9
795 savelij 28
                JP LOC_3C50
623 savelij 29
 
795 savelij 30
                DB 1
31
 
678 savelij 32
                nop
795 savelij 33
loc_9           out     (0xfe),a
761 savelij 34
                ld      a,0x3f
35
                jr      loc_24
623 savelij 36
 
678 savelij 37
                DUPL 0X0010-$,0
761 savelij 38
                jp      PRINT_A_                        ;RST 10  
623 savelij 39
 
40
                DUPL ADR_SEL_ROM-$,0XFF
41
LOC_14          OUT (C),A
42
                NOP
43
                RET
44
 
627 savelij 45
                DUPL 0X0018-$,0XFF
761 savelij 46
                jp      PRINT_MSG                       ;RST 18   
623 savelij 47
 
48
                DUPL 0X0020-$,0XFF
761 savelij 49
                jp      CALL2BASIC                      ;RST 20     48
623 savelij 50
 
678 savelij 51
loc_24          LD HL,0XFFFF
761 savelij 52
                jr      loc_2B
623 savelij 53
 
761 savelij 54
                jp      ADR_OPEN_CHAN                   ;RST 28
623 savelij 55
 
678 savelij 56
loc_2B          LD I,A
627 savelij 57
                XOR A
58
                JR LOC_33
59
 
761 savelij 60
        IF EMU
61
                JP RST30_WORK                           ;RST 30
62
        ELSE
63
                DUPL 0X33-$,0XFF
64
        ENDIF
627 savelij 65
 
66
LOC_33          LD SP,HL
67
                LD B,A
68
                LD C,A
678 savelij 69
                JR loc_3A
623 savelij 70
 
761 savelij 71
                ei                                      ;RST 38
678 savelij 72
                ret
623 savelij 73
 
678 savelij 74
loc_3A          REPT 8
623 savelij 75
                PUSH BC
76
                ENDM
77
                LD HL,0XA500
78
                ADD HL,SP
678 savelij 79
                JR C,loc_3A
761 savelij 80
                ld      (P_RAMT),hl
81
                ld      de,0x3eaf
82
                ld      bc,0xa8
83
                ld      a,e
84
                ex      de,hl
85
                ld      sp,0x6000
86
                ld      (TRD_5F00),hl
87
                ld      hl,loc_79
88
                push    hl
89
                ld      hl,loc_3D2F
90
                push    hl
91
                ld      hl,0xb8ed                       ; LDDR
92
                jr      EXECUTECOM2HL
623 savelij 93
 
761 savelij 94
                jp      MAGIC
623 savelij 95
 
761 savelij 96
EXECUTECOM2HL   ld      (TRD_5F10),hl
97
                push    af
98
                ld      a,0xc9
99
                ld      (TRD_5F12),a
100
                pop     af
101
                ld      hl,(TRD_5F00)
102
                jp      TRD_5F10
623 savelij 103
 
761 savelij 104
loc_79          ex      de,hl
105
                inc     hl
106
                ld      (UDG),hl
107
                dec     hl
108
                ld      bc,0x40                         ;    
109
                ld      (RASP),bc
110
                ld      (RAMTOP),hl
111
                ld      hl,0x3C00
112
                ld      (CHARS),hl
113
                ld      hl,(RAMTOP)
114
                ld      (hl),0x3e
115
                dec     hl
116
                ld      sp,hl
117
                dec     hl
118
                dec     hl
119
                ld      (ERR_SP),hl
120
                ld      de,0x1303
121
                push    de
122
                im      1
123
                ld      iy,ERR_NR
124
                ld      hl,TRD_5CB6                     ;    INTERFACE1
125
                ld      (CHANS),hl
126
                ld      de,0x15af
127
                ld      bc,0x15
128
                ex      de,hl
129
                call    COPY_BAS2VARS
130
                ex      de,hl
131
                dec     hl
132
                ld      (DATADD),hl
133
                inc     hl
134
                ld      (PROG),hl
135
                ld      (VARS),hl
136
                ld      (hl),0x80
137
                inc     hl
138
                ld      (E_LINE),hl                     ;    
139
                ld      (hl),0x0d
140
                inc     hl
141
                ld      (hl),0x80
142
                inc     hl
143
                ld      (WORKSP),hl
144
                ld      (STKBOT),hl
145
                ld      (STKEND),hl
146
                ld      a,0x38
147
                ld      (ATTR_P),a
148
                ld      (ATTR_T),a
149
                ld      (BORDCR),a
150
                ld      hl,0x0523
151
                ld      (REPDEL),hl
152
                dec     (iy-0x3a)
153
                dec     (iy-0x36)
154
                ld      hl,0x15c6
155
                ld      de,STRMS
156
                ld      bc,0x0e
157
                call    COPY_BAS2VARS
158
                set     1,(iy+1)
159
                ld      hl,TRD_5CC2                     ;  #C9.   TR-DOS  BASIC
160
                ld      (hl),0xc9
161
                rst     0x20
162
                dw      0x0edf                          ; ⪠  ਭ
163
                ld      hl,DF_SZ                        ;    
164
                ld      (hl),2
165
                ld      hl,0x128b
166
                push    hl
167
                ld      a,0xaa
168
                ld      (NOT_USED),a
678 savelij 169
                ei
761 savelij 170
                jp      IN_DOS_15616
623 savelij 171
 
761 savelij 172
COPY_BAS2VARS   ld      (TRD_5F00),hl
173
                ld      hl,loc_3D2F
174
                push    hl
175
                ld      hl,0xb0ed                       ; LDIR
176
                ld      (TRD_5F10),hl
177
                ld      hl,(TRD_5F00)
178
                jp      TRD_5F10
623 savelij 179
 
180
;      
761 savelij 181
WORK4AUTORUN    call    DELETE_BUF                      ; ,    
182
                call    CLEAR_SCREEN                    ;   
183
                ld      hl,(E_LINE)                     ;     
184
                inc     hl
185
                ld      e,(hl)
186
                inc     hl
187
                ld      d,(hl)                          ;   
188
                ld      a,d
189
                or      e
190
                ex      de,hl
191
                jr      z,loc_140                       ;   =0,   
192
                xor     a
193
                ld      (TRD_5D10),a                    ;   
194
loc_140         push    hl
195
                call    RESTORE_SP                      ;   
196
                pop     hl
197
                ld      (NEWPPC),hl
198
                xor     a
199
                ld      (NSPPS),a
200
                rst     0x20
201
                dw      0x16b0                          ;     
202
                ld      hl,(PROG)
203
                dec     hl
204
                ld      (DATADD),hl
205
                ld      sp,(ERR_SP)
206
                ld      a,(TRD_5D10)                    ;   
207
                or      a
208
                ld      hl,0x1b76
209
                jr      z,loc_166
210
                rst     0x20
211
                dw      0x1bb0                          ;  "OK"
212
loc_166         push    hl
213
                ld      hl,TRD_5CC2
214
                push    hl
678 savelij 215
                ret
623 savelij 216
 
678 savelij 217
CONTINUE_15619  DUPL 3,0
761 savelij 218
                call    CREATE_BUF                      ;  
219
                ld      a,0xff
220
                ld      (TRD_5D15),a                    ;  0,   TR-DOS.   
221
                xor     a
222
                ld      (TRD_5CF7),a
223
                ld      a,0xaa
224
                ld      (TRD_5D17),a                    ;  ,  #AA
225
                ld      hl,CP_ERROR
226
                ld      (TRD_5D1A),hl                   ;     
227
                ld      hl,0
228
                add     hl,sp
229
                ld      (TRD_5D1C),hl                   ;   SP
230
                dec     hl
231
                dec     hl
232
                ld      sp,hl
233
                call    MARK_SP                         ;     
234
                ld      hl,(RAMTOP)
235
                ld      de,(CH_ADD)
236
                sbc     hl,de
237
                ex      de,hl
238
                jr      nc,loc_1A5
239
                or      a
240
                ld      de,0x101
241
                sbc     hl,de
242
loc_1A5         ld      (CH_ADD),hl
243
loc_1A8         call    CP_0D_OR_80
244
loc_1AB         jp      z,END_COMAND
245
                cp      __REM
246
                inc     hl
247
                jr      nz,loc_1A8
248
                call    CP_0D_OR_80
249
                jr      z,loc_1AB
250
                cp      ":"
251
                jp      nz,END_COMAND
252
                inc     hl
253
                call    SAE2_HL_
254
                ld      hl,(TRD_5D11)                   ;    TR_DOS
255
                jp      loc_30A
623 savelij 256
 
761 savelij 257
CP_0D_OR_80
258
        IF EMU
259
                CALL READ_BYTE_HL                       ;DCU
260
        ELSE
261
                ld      a,(hl)
262
                cp      0x0d
263
        ENDIF
264
                ret     z
265
                cp      0x80
266
                ret     z
267
                or      a
678 savelij 268
                ret
623 savelij 269
 
761 savelij 270
                call    REWRITE_9SEC
623 savelij 271
;   
761 savelij 272
END_COMAND      ld      hl,0
273
                ld      (TRD_5CF8),hl                   ;     2 
274
                call    DELETE_BUF
275
                call    CLEAR_WORKSPACE
276
                ld      hl,TRD_5D17                     ;  ,  #AA
277
                ld      (hl),0xaa
278
                ld      hl,TRD_5D1F
279
                ld      a,(hl)
280
                or      a
281
                ld      (hl),0
282
                jr      nz,loc_1F3
283
                call    DEL_5BYTES
284
                call    FIND_ENDSTR                     ;   
285
loc_1F3         ld      sp,(TRD_5D1C)                   ;   SP
286
                ld      hl,(TRD_5D1A)                   ;     
287
                ld      bc,(TRD_5D0F)                   ;   TR-DOS
288
                ld      b,0
289
                jp      (hl)
623 savelij 290
 
291
;DCU (   0X0207)
761 savelij 292
CP_ERROR        call    RESTORE_SP                      ;   
293
                bit     7,(iy+0)
294
                ret     nz
295
                ld      de,TRD_5CC2
296
                ld      sp,(ERR_SP)
297
                push    de
678 savelij 298
                ret
623 savelij 299
 
300
;   
761 savelij 301
FIND_ENDSTR     call    GET_SYMSTR
302
                cp      0x0d
303
                ret     z
304
                call    GET_NEXT_SYM
305
                jr      FIND_ENDSTR                     ;   
623 savelij 306
 
307
;     
761 savelij 308
MARK_SP         ld      hl,(ERR_SP)
309
                ld      (TRD_5D13),hl                   ;  ERR_SP
310
                ld      hl,(TRD_5D1C)                   ;   SP
311
                dec     hl
312
                dec     hl
313
                ld      (ERR_SP),hl
314
                ld      de,loc_3D16
315
                ld      (hl),e
316
                inc     hl
317
                ld      (hl),d
678 savelij 318
                ret
623 savelij 319
 
320
;   
761 savelij 321
RESTORE_SP      ld      hl,(TRD_5D13)                   ;  ERR_SP
322
loc_0235        ld      (ERR_SP),hl
678 savelij 323
                ret
623 savelij 324
 
761 savelij 325
IN_COMMAND_CPU  ld      hl,0                            ;     
326
                ld      (TRD_5CF7),hl
327
                add     hl,sp
328
                ld      (TRD_5D1C),hl                   ;   SP
329
                dec     hl
330
                dec     hl
331
                ld      sp,hl
332
                call    MARK_SP                         ;     
678 savelij 333
;2      
334
;    TR-DOS   BASIC 128
761 savelij 335
                call    CLEAR_SCREEN                    ;   
336
                call    OPEN_CHAN_2                     ;   2
337
                ld      hl,TRD_5D17                     ;  ,  #AA
338
                ld      a,(hl)
339
                cp      0xaa
340
                ld      a,0
341
                ld      (TRD_5D0F),a                    ;   TR-DOS
342
                jp      z,COMMAND_CPU
343
                ld      (hl),0xaa
344
                ld      hl,ZASTAVKA                     ;   
345
                rst     0x18
346
                call    OUT_COLOR_LINE                  ;     
347
        IF EMU
678 savelij 348
                CALL ADD_TXT_VERS
761 savelij 349
        ENDIF
623 savelij 350
 
678 savelij 351
                DUPL 0X0271-$,0
761 savelij 352
loc_271         ld      a,(NOT_USED)                    ;   #AA
353
                cp      0xaa
354
                jr      nz,COMMAND_CPU                  ;   #AA,    
678 savelij 355
 
356
                DUPL 0X027B-$,0
761 savelij 357
loc_27B         ld      hl,(E_LINE)                     ;    
358
                ld      a,0xfe
359
                ld      (TRD_5D0E),a                    ; #FE- BASIC, TR-DOS
360
                ld      (hl),0xf7
361
                inc     hl
362
                ld      (hl),0x22
363
                inc     hl
364
                ld      (hl),"b"
365
                inc     hl
366
                ld      (hl),"o"
367
                inc     hl
368
                ld      (hl),"o"
369
                inc     hl
370
                ld      (hl),"t"
371
                inc     hl
372
                ld      (hl),0x22
373
                inc     hl
374
                ld      (K_CUR),hl
375
                ld      (hl),0x0d
376
                inc     hl
377
                ld      (hl),0x80
378
                inc     hl
379
                ld      (WORKSP),hl
380
                ld      (STKBOT),hl
381
                ld      (STKEND),hl
382
                set     3,(iy+1)
383
                jr      GO2RUNBOOT
678 savelij 384
 
623 savelij 385
;  3 
761 savelij 386
LDI3_HL2DE      ld      b,3
387
loc_2B2         ld      a,(hl)
388
                ld      (de),a
389
                inc     hl
390
                inc     de
391
                djnz    loc_2B2
678 savelij 392
                ret
623 savelij 393
 
394
;  
761 savelij 395
STOP_MOTOR      ld      b,0x20
396
loc_2BB         push    bc
397
                xor     8
398
                out     (0xff),a
399
                push    af
400
                ld      a,5
401
                call    PAUSE_C_A
402
                pop     af
403
                pop     bc
404
                djnz    loc_2BB
678 savelij 405
                ret
623 savelij 406
 
407
;  DOS
761 savelij 408
COMMAND_CPU     ld      hl,(TRD_5D1C)                   ;   SP
409
                dec     hl
410
                dec     hl
411
                ld      sp,hl
412
                call    OPEN_CHAN_0                     ;   0
413
                ld      a,(0X5D16)
414
                or      3
415
                call    STOP_MOTOR
416
                ld      a,(TRD_5D16)
417
                call    STOP_MOTOR
418
                xor     a
419
                ld      (TRD_5D15),a                    ;  0,  TR-DOS.  
420
                call    GET_COMMAND                     ;    
421
                call    SAE2E_LINE
422
GO2RUNBOOT      call    CLEAR_DOWN_SCR                  ;    
423
                ld      hl,COMMAND_CPU
424
                ld      (TRD_5D1A),hl                   ;     
425
                xor     a
426
                ld      (TRD_5D0F),a                    ;   TR-DOS
427
                ld      (TRD_5CEF),a
428
                ld      hl,(E_LINE)                     ;    
429
                push    hl
430
                ld      de,TRD_5D20                     ;   3   
431
                call    LDI3_HL2DE                      ;  3 
432
                pop     hl
433
                ld      (TRD_5D11),hl                   ;    TR_DOS
434
loc_30A         ld      a,(hl)
435
                ld      b,a
436
                and     0x80
437
                ld      a,b
438
                jr      z,loc_31A
439
                cp      __RETURN
440
                jr      z,loc_31A
441
                push    af
442
                call    ACTIV_DEF_DSK                   ;    
443
                pop     af
444
loc_31A         ld      hl,CODE_BYTE_COM                ;     TR-DOS
445
                dec     hl
446
                ld      c,0
447
loc_320         inc     c
448
                ld      d,a
449
                ld      a,LOW (ECODE_BYTE_COM-CODE_BYTE_COM)
450
                cp      c
678 savelij 451
                JP C,ENDCOMAND
761 savelij 452
                ld      a,d
453
                inc     hl
454
                cp      (hl)
455
                jr      nz,loc_320
456
LOC_32D         cp      __RETURN
457
                call    nz,CREATE_BUF                   ;  
458
                ld      a,9
459
                ld      (TRD_5D06),a                    ;      
460
                xor     a
461
                ld      (TRD_5D0F),a                    ;   TR-DOS
462
                ld      (TRD_5CD6),a                    ; #FF-   
463
                ld      (TRD_5D10),a                    ;   
464
                ld      hl,FLAGS
465
                res     7,(hl)
466
                ld      b,0
467
                ld      hl,SPIS_ADR_COM                 ;    
468
                dec     c
469
                sla     c
470
                add     hl,bc
471
                ld      e,(hl)
472
                inc     hl
473
                ld      d,(hl)
474
                ex      de,hl
475
LOC_353         push    hl
476
                ld      de,END_COM
477
                push    de
478
                jp      (hl)
623 savelij 479
 
761 savelij 480
END_COM         ld      hl,FLAGS
481
                set     7,(hl)
482
                pop     hl
483
                jp      (hl)
623 savelij 484
 
485
;  
678 savelij 486
ZASTAVKA        DB 0X16,0X01,0X06
623 savelij 487
ZASTAVKA_VER    EQU $+9
1026 savelij 488
                DB " EVO-DOS Ver ",VERS_DOS,"  "
623 savelij 489
                DB 0X0D,0X0D,0X7F
490
                ;  12345678901234567890123456789012
491
                DB " 2010 Created for PentEvo 4MB "
678 savelij 492
                DB 0X16,0X05,0X0C
623 savelij 493
                DB "NedoPC"
494
                DB 0X16,ZASTV_Y,ZASTV_X
761 savelij 495
        IF EMU
835 savelij 496
ROM_VER         IF EMU3D2F=1
623 savelij 497
                DC "EMUL 3D2F"
498
                ELSE
499
                DC "EMUL 3D13"
500
                ENDIF
761 savelij 501
        ELSE
835 savelij 502
                DC "Nedo Emul"
761 savelij 503
        ENDIF
623 savelij 504
 
761 savelij 505
END_OUT_DIR     call    READ_9SEC                       ;  9 
506
                call    PRINT_0D
507
                call    PRINT_0D
508
loc_3B5         ld      bc,(TRD_5E0A)
509
                call    PRINT_CHISLO                    ;  
510
                ld      hl,TXT_FREE_
511
                rst     0x18
512
GOTO_END        jp      END_COMAND
623 savelij 513
 
514
;    
761 savelij 515
PRINT_ERROR     push    af
516
                ld      a,(TRD_5D0E)                    ; #FE- BASIC, TR-DOS
517
                cp      __RETURN
518
                jr      nz,CP4PRINT_HEAD
519
                pop     af
678 savelij 520
                ret
623 savelij 521
 
761 savelij 522
CP4PRINT_HEAD   pop     af
523
                ld      (TRD_5D0F),a                    ;   TR-DOS
524
                ld      a,(TRD_5D15)                    ;  0,  TR-DOS.  
525
                or      a
526
                call    z,PRINT_MSG                     ;   
678 savelij 527
                ret
623 savelij 528
 
761 savelij 529
ERR_NOFILES     ld      hl,TXT_NOFILES_
530
                ld      a,1
531
                jp      PRINT_TXTERR
623 savelij 532
 
761 savelij 533
ERR_OK          ld      hl,TXT_OK_                      ; "O.K."
534
                xor     a
535
                jp      PRINT_TXTERR
623 savelij 536
 
537
;   0 
761 savelij 538
RD_0SEC2BUF     xor     a
539
                ld      (TRD_5CCC),a                    ;      
623 savelij 540
;     
761 savelij 541
READ_NUM_SEC    ld      de,(TRD_5CCC)                   ;      
542
                ld      d,0
543
READ_SEC4NEM    call    CREATE_BUF                      ;  
544
                ld      hl,TRD_5D25
545
                ld      b,1
546
                jp      COM_05                          ;  
623 savelij 547
 
548
;  9 
761 savelij 549
READ_9SEC       call    CREATE_BUF                      ;  
550
                ld      de,8
551
                jr      READ_SEC4NEM
623 savelij 552
 
553
;  
761 savelij 554
COM_18          call    READ_9SEC                       ;  9 
555
                ld      a,(TRD_5E0C)
556
                cp      0x10
557
                jr      z,CP_TYPE_DSK
558
                ld      hl,TXT_DISCERROR_
559
                rst     0x18
560
                jr      GOTO_END
623 savelij 561
 
761 savelij 562
CP_TYPE_DSK     call    GET_TYPE_DISK
563
                res     0,(hl)
564
                res     1,(hl)
565
                ld      a,(TRD_5E08)
566
                bit     0,a
567
                jr      nz,loc_425
568
                set     0,(hl)
569
loc_425         bit     3,a
570
                ret     nz
571
                set     1,(hl)
678 savelij 572
                ret
623 savelij 573
 
761 savelij 574
CP_SECOND_SYM   ld      hl,(TRD_5D11)                   ;    TR_DOS
575
                inc     hl
576
                ld      a,(hl)
577
                cp      0x0d
678 savelij 578
                ret
623 savelij 579
 
761 savelij 580
CAT             call    CP_SECOND_SYM                   ;   CAT
581
                ld      bc,2
582
                ld      (TRD_5CDB),bc
583
                jr      z,loc_46A
584
                cp      "#"
585
                jr      nz,CODES
586
                ld      (CH_ADD),hl
587
                call    SET_NUM_CHAN
588
                call    GET_SYMSTR
589
                cp      0x0d
590
                jr      z,loc_46A
591
                cp      ","
592
                jp      nz,SINTAX_ERROR
593
                call    GET_NEXT_SYM
594
                call    PUT_NUMDSK_STK
595
                jr      loc_460
623 savelij 596
 
761 savelij 597
CODES           call    SET_AND_PUT
598
loc_460         call    EXIT_IF_SINTAX
599
                call    GET_STKBOT_
600
                ex      de,hl
601
                call    SETUP_DSK
602
loc_46A         call    EXIT_IF_SINTAX
603
                ld      a,(TRD_5CF6)                    ;    
604
                ld      (TRD_5CF9),a                    ;     2 
605
                call    COM_18                          ;   
606
                ld      a,(TRD_5CDB)
607
loc_479         cp      2
608
                push    af
609
                call    z,CLEAR_SCREEN                  ;   
610
                pop     af
611
                cp      0x11
612
                jp      nc,SINTAX_ERROR
613
                call    OPENSTREAM
614
                ld      a,0xff
615
                ld      (TRD_5CF8),a                    ;     2 
616
                ld      hl,TXT_TITLE_                   ; "TITLE:"
617
                rst     0x18
618
                ld      hl,TRD_5E1A
619
                rst     0x18
620
                call    PRINT_0D
621
                ld      a,(TRD_5E09)
622
                ld      hl,TRD_5E19
623
                sub     (hl)
624
                push    hl
625
                call    PRINT_CHISLO_A_
626
                ld      hl,TXT_NOFILES+2
627
                rst     0x18
628
                pop     hl
629
                ld      c,(hl)
630
                call    CONV2_2BYTES
631
                ld      hl,TXT_DELFILE_                 ; " DEL. FILE"
632
                rst     0x18
633
                call    RD_0SEC2BUF                     ;   0 
634
                ld      hl,TRD_5D25
635
loc_4B6         call    CP_END_DIR                      ;   
636
                call    PRINT_0D
637
                ld      a,(TRD_5CF6)                    ;    
638
                add     a,"A"
639
                rst     0x10
640
                ld      b,2
641
loc_4C4         call    CP_END_DIR                      ;   
642
                push    bc
643
                ld      a,":"
644
                rst     0x10
645
                push    hl
646
                call    PRINT_FILENAME                  ;   
647
                ld      bc,0x0d
648
                pop     hl
649
                push    hl
650
                add     hl,bc
651
                ld      c,(hl)
652
                push    bc
653
                ld      a,c
654
                ld      b,2
655
                cp      0x0a
656
                jr      c,loc_4DF
657
                dec     b
658
loc_4DF         cp      0x64
659
                jr      nc,loc_4E8
660
loc_4E3         ld      a," "
661
                rst     0x10
662
                djnz    loc_4E3
663
loc_4E8         pop     bc
664
                call    PRINT_CHISLO                    ;  
665
                pop     hl
666
                pop     bc
667
                ld      de,0x10
668
                add     hl,de
669
                djnz    loc_4C4
670
                jr      loc_4B6
623 savelij 671
 
672
;   
761 savelij 673
CP_END_DIR      push    hl
674
                push    bc
675
                ld      a,(TRD_5CF9)                    ;     2 
676
                ld      hl,TRD_5CF6                     ;    
677
                cp      (hl)
678
                call    nz,COM_01                       ;   
679
                pop     bc
680
                pop     hl
681
                jp      CP_END_CAT
623 savelij 682
 
761 savelij 683
ADD_10          ld      de,0x10
684
                add     hl,de
678 savelij 685
                ret
623 savelij 686
 
761 savelij 687
CP_END_BUF      push    hl
688
                push    bc
689
                ld      bc,0xa1db
690
                add     hl,bc
691
                jr      c,READ_SEC2BUF
692
                pop     bc
693
                pop     hl
678 savelij 694
                ret
623 savelij 695
 
761 savelij 696
READ_SEC2BUF    ld      hl,TRD_5CCC                     ;      
697
                inc     (hl)
698
                call    READ_NUM_SEC                    ;     
699
                pop     bc
700
                pop     hl
701
                ld      hl,TRD_5D25
678 savelij 702
                ret
623 savelij 703
 
761 savelij 704
NUMDSK2BYTE     and     0xdf
705
                sbc     a,"A"
706
                jp      c,SINTAX_ERROR
707
                cp      4
708
                jp      nc,SINTAX_ERROR
709
                ret
623 savelij 710
 
761 savelij 711
CP_ON_STKBOT    call    GET_STKBOT_
712
                ld      a,c
713
                or      b
714
                jp      z,SINTAX_ERROR
678 savelij 715
                ret
623 savelij 716
 
761 savelij 717
NEW             call    INP_2STR2STKBOT                 ;   NEW
718
                call    EXIT_IF_SINTAX
719
                call    INP_EXTFILENAME                 ;   
720
                call    SET_CP_FILENAME
721
                ld      a,(TRD_5CF6)                    ;    
722
                ld      (TRD_5CF8),a                    ;     2 
723
                jp      nz,ERR_NOFILES
724
                push    bc
725
                call    RDHEAD_FILENAME                 ;   
726
                call    SET_CP_FILENAME
727
                push    af
728
                ld      a,(TRD_5CF8)                    ;     2 
729
                ld      hl,TRD_5CF6                     ;    
730
                cp      (hl)
731
                jp      nz,SINTAX_ERROR
732
                call    COM_18                          ;   
733
                pop     af
734
                jp      z,FILE_EXISTS
735
                pop     bc
736
loc_569         call    SETHEADFILENAME
737
                call    REWRITE_9SEC                    ;  9 
738
                jp      ERR_OK
623 savelij 739
 
761 savelij 740
CP_HIGH_ERR     ld      a,(TRD_5D10)                    ;   
741
                or      a
742
                ret
623 savelij 743
 
761 savelij 744
CP_ERASED_FILES ld      a,(TRD_5D07)                    ;   
745
                or      a
746
                jp      z,ERR_NOFILES
747
                jp      ERR_OK
623 savelij 748
 
749
;    
761 savelij 750
GET_OVERWRITE_  push    bc
751
                call    CLEAR_SCREEN                    ;   
752
                ld      a,(TRD_5CF6)                    ;    
753
                add     a,"A"
754
                call    PRINT_A_
755
                ld      a,":"
756
                call    PRINT_A_
757
                ld      hl,TRD_5CDD                     ;  
758
                call    PRINT_FILENAME                  ;   
759
                ld      hl,TXT_FILEEXIST                ; "FILE EXISTS"
760
                call    PRINT_MSG                       ;  ⥪⮢ ᮮ饭
761
                call    GET_KEYS                        ;   
762
                cp      "Y"
763
                push    af
764
                call    CLEAR_SCREEN                    ;   
765
                pop     af
766
                pop     bc
767
                ret     nz
768
                push    bc
769
                call    CLEAR_SCREEN                    ;   
770
                pop     bc
771
                call    ERASE_FILE                      ;  
772
                xor     a
678 savelij 773
                ret
623 savelij 774
 
761 savelij 775
CP_EXT_SHARP    ld      a,(TRD_5CE5)                    ;  
776
                cp      "#"
777
                jr      z,FINDFILENAME_0A
778
                xor     a
678 savelij 779
                ret
623 savelij 780
 
761 savelij 781
FINDFILENAME_0A ld      a,0x0a
782
                ld      (TRD_5D06),a                    ;      
783
                call    FIND_FILENAME                   ;     
784
                ld      a,9
785
                ld      (TRD_5D06),a                    ;      
678 savelij 786
                ret
623 savelij 787
 
761 savelij 788
COPY_STAR_STAR  ld      a,(TRD_5CDD)                    ;   COPY *,*
789
                cp      "*"
790
                jp      nz,ERR_NOFILES
791
                call    GET_STKBOT_
792
                ex      de,hl
793
                call    SETUP_DSK
794
                ld      a,(hl)
795
                cp      "*"
796
                jp      nz,SINTAX_ERROR
797
                ld      a,(TRD_5CF6)                    ;    
798
                ld      (TRD_5CF9),a                    ;     2 
799
                ld      a,(TRD_5CF9)                    ;     2 
800
                call    COM_01                          ;   
801
                call    COM_18                          ;   
802
                ld      a,0xff
803
                ld      (TRD_5D0D),a
804
loc_5F4         ld      a,(TRD_5CF8)                    ;     2 
805
                call    COM_01                          ;   
806
                call    COM_18                          ;   
807
                ld      a,(TRD_5D0D)
808
                inc     a
809
                ld      (TRD_5D0D),a
810
                ld      c,a
811
                call    RDHEAD_FILENAME                 ;   
812
                ld      a,(TRD_5CDD)                    ;  
813
                cp      0
814
                jp      z,ERR_OK
815
                cp      1
816
                jr      z,loc_5F4
817
                ld      hl,TRD_5CE6                     ;  <C>- , <B>- 
818
                ld      de,TRD_5CED                     ;    
819
                ld      bc,7
678 savelij 820
                ldir
761 savelij 821
                ld      a,(TRD_5CF9)                    ;     2 
822
                call    COM_01                          ;   
823
                call    FIND_FILENAME                   ;     
824
                jr      nz,loc_634
825
                call    CP_EXT_SHARP
826
                jr      nz,loc_634
827
                call    GET_OVERWRITE_                  ;    
828
                jr      nz,loc_5F4
829
loc_634         call    COPY_FILE2DSK                   ;    2 
830
                call    REWRITE_9SEC                    ;  9 
831
                jr      loc_5F4
623 savelij 832
 
833
;    2 
761 savelij 834
COPY_FILE2DSK   call    READ_9SEC                       ;  9 
835
                ld      a,(TRD_5E09)
836
                cp      0x80
837
                jp      z,ERR_DIRFULL                   ;    
838
                ld      hl,TRD_5CED                     ;    
839
                ld      de,TRD_5CE6                     ;  <C>- , <B>- 
840
                ld      bc,7
678 savelij 841
                ldir
761 savelij 842
                ld      de,(TRD_5CEA)                   ;    
843
                ld      d,0
844
                or      a
845
                ld      hl,(TRD_5E0A)
846
                sbc     hl,de
847
                jp      c,loc_1C45
848
                ld      (TRD_5E0A),hl
849
                ld      hl,(TRD_5E06)
850
                ld      (TRD_5CEB),hl                   ;    
851
                push    hl
852
                call    COPY_FILE                       ;    2 
853
                pop     hl
854
                ld      (TRD_5CEB),hl                   ;    
855
                ld      hl,(TRD_5CF4)
856
                ld      (TRD_5E06),hl
857
                ld      hl,TRD_5E09
858
                inc     (hl)
859
                ld      c,(hl)
860
                dec     c
861
                ld      b,0
862
                push    bc
863
                ld      de,9
864
                ld      (TRD_5CF4),de
865
                call    REWRITE_9SEC                    ;  9 
866
                pop     bc
867
                call    SETHEADFILENAME
678 savelij 868
                ret
623 savelij 869
 
761 savelij 870
COPY            ld      hl,(TRD_5D11)                   ;    TR_DOS
871
                inc     hl
872
                ld      a,(hl)
873
                and     0xdf
874
                cp      "S"
875
                jp      z,COPY_S
876
                cp      "B"
877
                jp      z,COPY_B
878
                call    INP_2STR2STKBOT
879
                call    EXIT_IF_SINTAX
880
                call    RESERVED_RAM
881
                call    INP_EXTFILENAME                 ;   
882
                call    SET_CP_FILENAME
883
                ld      a,(TRD_5CF6)                    ;    
884
                ld      (TRD_5CF8),a                    ;     2 
885
                jp      nz,COPY_STAR_STAR               ;   COPY *,*
886
                call    RDHEAD_FILENAME                 ;   
887
                ld      hl,TRD_5CE6                     ;  <C>- , <B>- 
888
                ld      de,TRD_5CED                     ;    
889
                ld      bc,7
678 savelij 890
                ldir
761 savelij 891
                call    SET_CP_FILENAME
892
                push    af
893
                push    bc
894
                ld      a,(TRD_5CF6)                    ;    
895
                ld      (TRD_5CF9),a                    ;     2 
896
                ld      a,(TRD_5CF8)                    ;     2 
897
                call    COM_01                          ;   
898
                call    COM_18                          ;   
899
                ld      a,(TRD_5CF9)                    ;     2 
900
                call    COM_01                          ;   
901
                call    COM_18                          ;   
902
                pop     bc
903
                pop     af
904
                jr      nz,loc_6F3
905
                call    CP_EXT_SHARP
906
                jr      nz,loc_6F3
907
                call    GET_OVERWRITE_                  ;    
908
                jp      nz,ERR_OK
909
loc_6F3         call    COPY_FILE2DSK                   ;    2 
910
                call    REWRITE_9SEC                    ;  9 
911
                ld      a,(TRD_5CE5)                    ;  
912
                cp      "#"
913
                jp      nz,ERR_OK
914
                ld      a,0x0a
915
                ld      (TRD_5D06),a                    ;      
916
                ld      hl,TRD_5CE6                     ;  <C>- , <B>- 
917
                inc     (hl)
918
                ld      a,(TRD_5CF8)                    ;     2 
919
                call    COM_01                          ;   
920
                call    CP_EXT_SHARP
921
                jp      nz,ERR_OK
922
                call    RDHEAD_FILENAME                 ;   
923
                ld      hl,TRD_5CE6                     ;  <C>- , <B>- 
924
                ld      de,TRD_5CED                     ;    
925
                ld      bc,7
926
                ldir
927
                ld      a,(TRD_5CF9)                    ;     2 
928
                call    COM_01                  ;   
929
                call    COM_18                  ;   
930
                jr      loc_6F3
623 savelij 931
 
932
;    2 
761 savelij 933
COPY_FILE       ld      a,(TRD_5CF1)
934
                or      a
935
                ret     z
936
                push    hl
937
                ld      hl,TRD_5D23
938
                sub     (hl)
939
                pop     hl
940
                jr      nc,loc_775
941
                ld      a,(TRD_5CF1)
942
                ld      b,a
943
                xor     a
944
                ld      (TRD_5CF1),a
945
loc_744         push    bc
946
                ld      a,(TRD_5CF8)                    ;     2 
947
                call    COM_01                          ;   
948
                pop     bc
949
                push    bc
950
                ld      hl,(TRD_5CCF)                   ;   WORK_SP
951
                push    hl
952
                ld      de,(TRD_5CF2)
953
                call    COM_05                          ;  
954
                ld      hl,(TRD_5CF4)
955
                ld      (TRD_5CF2),hl
956
                ld      a,(TRD_5CF9)                    ;     2 
957
                call    COM_01                          ;   
958
                pop     hl
959
                pop     bc
960
                ld      de,(TRD_5CEB)                   ;    
961
                call    COM_06                          ;  
962
                ld      hl,(TRD_5CF4)
963
                ld      (TRD_5CEB),hl                   ;    
964
                jr      COPY_FILE                       ;    2 
623 savelij 965
 
761 savelij 966
loc_775         ld      (TRD_5CF1),a
967
                push    hl
968
                ld      hl,TRD_5D23
969
                ld      b,(hl)
970
                pop     hl
971
                xor     a
972
                jr      loc_744
623 savelij 973
 
627 savelij 974
; 
761 savelij 975
ERASE_FILE      xor     a
976
                ld      (TRD_5D07),a                    ;   
977
                jr      ERASE_FILES
623 savelij 978
 
761 savelij 979
ERASE           call    SET_AND_PUT                     ;   ERASE
980
                call    EXIT_IF_SINTAX
981
                call    INP_EXTFILENAME                 ;   
982
                xor     a
983
                ld      (TRD_5D07),a                    ;   
984
                call    FIND_FILE                       ;    
985
                call    ERASE_FILES
986
                jp      nz,CP_ERASED_FILES
987
                jp      ERR_OK
623 savelij 988
 
761 savelij 989
ERASE_FILES     ld      a,(TRD_5CDD)                    ;  
990
                ld      (TRD_5D08),a                    ;    
991
                ret     nz
992
                ld      hl,TRD_5D07                     ;   
993
                inc     (hl)
994
                push    bc
995
                call    READ_9SEC                       ;  9 
996
                ld      a,(TRD_5E09)
997
                pop     bc
998
                inc     c
999
                cp      c
1000
                jr      nz,loc_7BC
1001
                dec     a
1002
                ld      (TRD_5E09),a
1003
                xor     a
1004
loc_7BC         push    af
1005
                jr      z,loc_7C3
1006
                ld      hl,TRD_5E19
1007
                inc     (hl)
1008
loc_7C3         push    bc
1009
                call    REWRITE_9SEC                    ;  9 
1010
                pop     bc
1011
                dec     c
1012
                call    RDHEAD_FILENAME                 ;   
1013
                pop     af
1014
                jp      z,loc_7D2
1015
                ld      a,1
1016
loc_7D2         ld      (TRD_5CDD),a                    ;  
1017
                push    af
1018
                call    WRHEAD_FILENAME                 ;   
1019
                ld      a,(TRD_5D08)                    ;    
1020
                ld      (TRD_5CDD),a                    ;  
1021
                pop     af
1022
                jr      z,WR_NEW_FREE_SEC
1023
                call    FIND_FILENAME                   ;     
1024
                jr      ERASE_FILES
678 savelij 1025
 
761 savelij 1026
WR_NEW_FREE_SEC call    READ_9SEC                       ;  9 
1027
                ld      hl,(TRD_5CEB)                   ;    
1028
                ld      (TRD_5E06),hl
1029
                ld      de,(TRD_5CEA)                   ;    
1030
                ld      hl,(TRD_5E0A)
1031
                ld      d,0
1032
                add     hl,de
1033
                ld      (TRD_5E0A),hl
1034
                jp      REWRITE_9SEC                    ;  9 
678 savelij 1035
 
623 savelij 1036
;===============FREE SPACE 1============
761 savelij 1037
        IF EMU
623 savelij 1038
                include virtual.a80
761 savelij 1039
        ENDIF
623 savelij 1040
;=======END OF FREE SPACE 1=============
1041
 
764 savelij 1042
                TITLE "evo-dos.a80"
1043
 
678 savelij 1044
                DUPL 0X1018-$,0XFF
761 savelij 1045
COM_STAR        call    SET_AND_PUT
1046
                call    EXIT_IF_SINTAX
1047
                call    CP_ON_STKBOT
1048
                ld      a,(de)
1049
                call    NUMDSK2BYTE
1050
                ld      (TRD_5D19),a                    ;   
833 savelij 1051
;               call    COM_01                          ;   
1052
                JP SET_CURRDRV
761 savelij 1053
                jp      ERR_OK
623 savelij 1054
 
1055
;   
761 savelij 1056
INP_EXTFILENAME ld      b,"C"
1057
                ld      a,(TRD_5CD6)                    ; #FF-   
1058
                or      a
1059
                jr      nz,loc_104D
1060
                call    GET_SYMSTR
1061
                cp      __CODE
1062
                ld      b,"C"
1063
                jr      z,loc_104D
1064
                cp      __DATA
1065
                ld      b,"D"
1066
                jr      z,loc_104D
1067
                cp      "#"
1068
                ld      b,"#"
1069
                jr      z,loc_104D
1070
                ld      b,"B"
1071
loc_104D        ld      hl,TRD_5CE5                     ;  
1072
                ld      (hl),b
678 savelij 1073
                ret
623 savelij 1074
 
1075
;   
678 savelij 1076
GET_KEYS        di
761 savelij 1077
                push    hl
1078
                push    bc
1079
                push    de
1080
loc_1056        rst     0x20
1081
                dw      0x028e                  ;  
1082
                ld      c,0
1083
                jr      nz,loc_1056
1084
                rst     0x20
1085
                dw      0x031e                  ;    
1086
                jr      nc,loc_1056
1087
                dec     d
1088
                ld      e,a
1089
                rst     0x20
1090
                dw      0x0333                  ;  
1091
                pop     de
1092
                pop     bc
1093
                pop     hl
1094
                and     0xdf
678 savelij 1095
                ei
1096
                ret
623 savelij 1097
 
1098
;     
761 savelij 1099
OUT_COLOR_LINE  ld      hl,ZASTV_ATR
1100
                ld      b,0x0a
1101
loc_1073        ld      (hl),7
1102
                inc     hl
1103
                djnz    loc_1073
1104
                ld      (hl),2
1105
                inc     hl
1106
                ld      (hl),0x16
1107
                inc     hl
1108
                ld      (hl),0x34
1109
                inc     hl
1110
                ld      (hl),0x25
1111
                inc     hl
1112
                ld      (hl),0x28
1113
                inc     hl
1114
                ld      (hl),7
1115
                ld      hl,ZASTV_PIX
1116
                ld      b,8
1117
                xor     a
1118
loc_108F        push    bc
678 savelij 1119
                scf
1120
                rla
761 savelij 1121
                push    hl
1122
                push    af
1123
                ld      b,5
1124
loc_1096        inc     hl
1125
                ld      (hl),a
1126
                djnz    loc_1096
1127
                pop     af
1128
                pop     hl
1129
                pop     bc
1130
                ld      de,0x100
1131
                add     hl,de
1132
                djnz    loc_108F
678 savelij 1133
                ret
623 savelij 1134
 
678 savelij 1135
                ret
623 savelij 1136
 
678 savelij 1137
TXT_DELFILES    db " Del."
1138
TXT_FILE_S_     DZ " File(s)"
1139
TXT_TITLE       DC "Title: "
1140
TXT_DISKDRIVE   DB 0X17,0X11," Disk Drive: ",0
1141
TXT_1SPACE      DB 0X17,0X10," ",0
1142
TXT_40TRK_SS    DB 0X17,0X10," 40 Track S. Side",0
1143
TXT_80TRK_SS    DB 0X17,0X10," 80 Track S. Side",0
1144
TXT_40TRK_DS    DB 0X17,0X10," 40 Track D. Side",0
1145
TXT_80TRK_DS    DB 0X17,0X10," 80 Track D. Side",0
1146
TXT_FREESECS    DB 0X17,0X10," Free Sector ",0
1147
TXT_FILENAME    DB 0X0D,0X0D,"  File Name    Start Length Line",0
623 savelij 1148
 
761 savelij 1149
CREATE_222BYTES ld      hl,(WORKSP)
1150
                ld      (TRD_5CCF),hl                   ;   WORK_SP
1151
                ld      bc,0x222
1152
                jp      CREATE_FREERAM
678 savelij 1153
 
623 savelij 1154
;    HL   
761 savelij 1155
PRINT_HL_CHISLO xor     a
1156
                ld      de,10000
1157
loc_1161        sbc     hl,de
1158
                jr      c,loc_1168
1159
                inc     a
1160
                jr      loc_1161
623 savelij 1161
 
761 savelij 1162
loc_1168        add     a,"0"
1163
                call    PRINT_A_CHISLO
1164
                add     hl,de
1165
                xor     a
1166
                ld      de,1000
1167
loc_1172        sbc     hl,de
1168
                jr      c,loc_1179
1169
                inc     a
1170
                jr      loc_1172
623 savelij 1171
 
761 savelij 1172
loc_1179        add     a,"0"
1173
                call    PRINT_A_CHISLO
1174
                add     hl,de
1175
                xor     a
1176
                ld      de,100
1177
loc_1183        sbc     hl,de
1178
                jr      c,loc_118A
1179
                inc     a
1180
                jr      loc_1183
623 savelij 1181
 
761 savelij 1182
loc_118A        add     a,"0"
1183
                call    PRINT_A_CHISLO
1184
                add     hl,de
1185
                xor     a
1186
                ld      de,10
1187
loc_1194        sbc     hl,de
1188
                jr      c,loc_119B
1189
                inc     a
1190
                jr      loc_1194
623 savelij 1191
 
761 savelij 1192
loc_119B        add     a,"0"
1193
                call    PRINT_A_CHISLO
1194
                add     hl,de
1195
                ld      a,l
1196
                add     a,"0"
1197
                call    PRINT_A_CHISLO
678 savelij 1198
                ret
623 savelij 1199
 
761 savelij 1200
PRINT_A_CHISLO  push    hl
1201
                push    de
1202
                call    PRINT_A_
1203
                pop     de
1204
                pop     hl
678 savelij 1205
                ret
623 savelij 1206
 
761 savelij 1207
FIND_END_BUFDIR push    hl
1208
                push    bc
1209
                ld      a,(TRD_5CF9)                    ;     2 
1210
                ld      hl,TRD_5CF6                     ;    
1211
                cp      (hl)
1212
                call    nz,COM_01                       ;   
1213
                pop     bc
1214
                pop     hl
1215
                call    CP_END_BUF
1216
                ld      a,(hl)
1217
                or      a
1218
                jp      z,END_COMAND
1219
                cp      1
1220
                call    z,ADD_10
1221
                ret     nz
1222
                jr      FIND_END_BUFDIR
623 savelij 1223
 
761 savelij 1224
LIST            call    CP_SECOND_SYM
1225
                ld      bc,2
1226
                ld      (TRD_5CDB),bc
1227
                jr      z,loc_1205
1228
                cp      "#"
1229
                jr      nz,LIST4CODES
1230
                ld      (CH_ADD),hl
1231
                call    SET_NUM_CHAN
1232
                call    GET_SYMSTR
1233
                cp      0x0d
1234
                jr      z,loc_1205
1235
                cp      ","
1236
                jp      nz,SINTAX_ERROR
1237
                call    GET_NEXT_SYM
1238
                call    PUT_NUMDSK_STK
1239
                jr      loc_11FB
623 savelij 1240
 
761 savelij 1241
LIST4CODES      call    SET_AND_PUT
1242
loc_11FB        call    EXIT_IF_SINTAX
1243
                call    GET_STKBOT_
1244
                ex      de,hl
1245
                call    SETUP_DSK
1246
loc_1205        call    EXIT_IF_SINTAX
1247
                ld      a,(TRD_5CF6)                    ;    
1248
                ld      (TRD_5CF9),a                    ;     2 
1249
                call    COM_18                          ;   
1250
                ld      a,(TRD_5CDB)
1251
                cp      2
1252
                push    af
1253
                call    z,CLEAR_SCREEN                  ;   
1254
                pop     af
1255
                cp      0x11
1256
                jp      nc,SINTAX_ERROR
1257
                call    OPENSTREAM
1258
                ld      a,0xff
1259
                ld      (TRD_5CF8),a                    ;     2 
1260
                call    CREATE_222BYTES
1261
                ld      hl,TRD_5E06
1262
                ld      de,(TRD_5CCF)                   ;   WORK_SP
1263
                ld      bc,0X20
1264
                ldir
1265
                call    RD_0SEC2BUF                     ;   0 
1266
                ld      hl,TRD_5D25
1267
                push    hl
1268
loc_123E        ld      hl,TXT_TITLE                    ; "TITLE:"
1269
                push    bc
1270
                rst     0x18
1271
                ld      hl,(TRD_5CCF)                   ;   WORK_SP
1272
                ld      bc,0x14
1273
                add     hl,bc
1274
                rst     0x18
1275
                ld      hl,TXT_DISKDRIVE
1276
                rst     0x18
1277
                ld      a,(TRD_5CF6)                    ;    
1278
                add     a,"A"
1279
                call    PRINT_A_
1280
                call    PRINT_0D
1281
                ld      hl,(TRD_5CCF)                   ;   WORK_SP
1282
                ld      bc,3
1283
                add     hl,bc
1284
                ld      a,(hl)
1285
                ld      hl,(TRD_5CCF)                   ;   WORK_SP
1286
                ld      bc,0x13
1287
                add     hl,bc
1288
                sub     (hl)
1289
                push    hl
1290
                call    PRINT_CHISLO_A_
1291
                ld      hl,TXT_DELFILES+5
1292
                rst     0x18
1293
                ld      hl,(TRD_5CCF)                   ;   WORK_SP
1294
                ld      bc,2
1295
                add     hl,bc
1296
                ld      a,(hl)
1297
                ld      hl,TXT_40TRK_SS
1298
                cp      0x19
1299
                jr      z,loc_1292
1300
                ld      hl,TXT_80TRK_SS
1301
                cp      0x18
1302
                jr      z,loc_1292
1303
                ld      hl,TXT_40TRK_DS
1304
                cp      0x17
1305
                jr      z,loc_1292
1306
                ld      hl,TXT_80TRK_DS
1307
loc_1292        rst     0x18
1308
                pop     hl
1309
                ld      c,(hl)
1310
                call    CONV2_2BYTES
1311
                ld      hl,TXT_DELFILES                 ; " DEL. FILE(S)"
1312
                rst     0x18
1313
                ld      hl,TXT_FREESECS
1314
                rst     0x18
1315
                ld      hl,(TRD_5CCF)                   ;   WORK_SP
1316
                ld      bc,4
1317
                add     hl,bc
1318
                ld      c,(hl)
1319
                inc     hl
1320
                ld      b,(hl)
1321
                call    PRINT_CHISLO                    ;  
1322
                ld      hl,TXT_FILENAME
1323
                rst     0x18
1324
                pop     bc
1325
                pop     hl
1326
                ld      b,0x10                          ;       
1327
loc_12B5        call    FIND_END_BUFDIR                 ;   
1328
                call    PRINT_0D                        ; 
1329
                push    bc
1330
                push    hl
1331
                call    PRINT_FILENAME                  ;   
1332
                ld      bc,0x0d
1333
                pop     hl
1334
                push    hl
1335
                add     hl,bc
1336
                ld      c,(hl)
1337
                push    bc
1338
                ld      a,c
1339
                ld      b,2
1340
                cp      10
1341
                jr      c,loc_12D0
1342
                dec     b
1343
loc_12D0        cp      100
1344
                jr      nc,loc_12D9
1345
loc_12D4        ld      a," "
1346
                rst     0x10
1347
                djnz    loc_12D4
1348
loc_12D9        pop     bc
1349
                call    PRINT_CHISLO                    ;  
1350
                ld      hl,TXT_1SPACE
1351
                rst     0x18
1352
                pop     hl
1353
                push    hl
1354
                ld      bc,9
1355
                add     hl,bc
1356
                ld      e,(hl)
1357
                inc     hl
1358
                ld      d,(hl)
1359
                push    hl
1360
                ex      de,hl
1361
                call    PRINT_HL_CHISLO
1362
                ld      a," "
1363
                call    PRINT_A_
1364
                pop     hl
1365
                inc     hl
1366
                ld      e,(hl)
1367
                inc     hl
1368
                ld      d,(hl)
1369
                ex      de,hl
1370
                call    PRINT_HL_CHISLO
1371
                pop     hl
1372
                push    hl
1373
                ld      bc,8
1374
                add     hl,bc
1375
                ld      a,(hl)
1376
                cp      "B"
1377
                call    z,PRN_ADR_ASTART
1378
                pop     hl
1379
                pop     bc
1380
                ld      de,0x10
1381
                add     hl,de
1382
                djnz    loc_12B5
1383
                push    hl
1384
                call    PRINT_0D
1385
                call    PRINT_0D
1386
                jp      loc_123E
623 savelij 1387
 
761 savelij 1388
PRN_ADR_ASTART  ld      bc,5
1389
                add     hl,bc
1390
                ld      b,(hl)
1391
                inc     hl
1392
                ld      e,(hl)
1393
                inc     hl
1394
                ld      d,(hl)
1395
                dec     b
1396
                jr      z,loc_1335
1397
                dec     b
1398
                jr      z,loc_1335
1399
                ld      a,0x10
1400
loc_132C        inc     e
1401
                cp      e
1402
                jr      nz,loc_1333
1403
                ld      e,0
1404
                inc     d
1405
loc_1333        djnz    loc_132C
1406
loc_1335        ld      hl,(TRD_5CCF)                   ;   WORK_SP
1407
                ld      bc,0x21
1408
                add     hl,bc
1409
                ld      b,2
1410
                push    hl
1411
                call    COM_05                          ;  
1412
                ld      a,0x80
1413
                pop     hl
1414
                ld      bc,0x200
678 savelij 1415
                cpir
761 savelij 1416
                ld      a,(hl)
1417
                cp      0xaa
1418
                ret     nz
1419
                inc     hl
1420
                ld      c,(hl)
1421
                inc     hl
1422
                ld      b,(hl)
1423
                ld      a,b
1424
                or      c
1425
                ret     z
1426
                push    bc
1427
                ld      a," "
1428
                call    PRINT_A_
1429
                pop     bc
1430
                call    PRINT_CHISLO                    ;  
678 savelij 1431
                ret
623 savelij 1432
 
761 savelij 1433
COPY_S          call    SET_CH_ADD
1434
                call    GET_NEXT_SYM
1435
                call    PUT_NUMDSK_STK
1436
                call    EXIT_IF_SINTAX
1437
                call    RESERVED_RAM
1438
                ld      hl,TXT_INS_SRC                  ; "INSERT SOURCE DISK THEN PRESS Y"
1439
                call    PRINT_MSG                       ;   
1440
loc_1375        call    GET_KEYS                        ;   
1441
                cp      "Y"
1442
                jr      nz,loc_1375
1443
                call    CLEAR_DOWN_SCR                  ;    
1444
                call    INP_EXTFILENAME                 ;   
1445
                call    SET_CP_FILENAME
1446
                jp      nz,ERR_NOFILES
1447
                call    COPY_ON1DSK
1448
                ld      a,(TRD_5CE5)                    ;  
1449
                cp      "#"
1450
                jp      nz,ERR_OK
1451
loc_1393        ld      a,0x0a
1452
                ld      (TRD_5D06),a                    ;      
1453
                ld      hl,TRD_5CE6                     ;  <C>- , <B>- 
1454
                inc     (hl)
1455
                call    CLEAR_SCREEN                    ;   
1456
                ld      hl,TXT_INS_SRC                  ; "INSERT SOURCE DISK THEN PRESS Y"
1457
                call    PRINT_MSG                       ;   
1458
loc_13A5        call    GET_KEYS                        ;   
1459
                cp      "Y"
1460
                jr      nz,loc_13A5
1461
                call    FIND_FILENAME                   ;     
1462
                jp      nz,ERR_OK
1463
                call    COPY_ON1DSK
1464
                jr      loc_1393
623 savelij 1465
 
761 savelij 1466
COPY_ON1DSK     call    RDHEAD_FILENAME                 ;   
1467
                ld      hl,TRD_5CE6                     ;  <C>- , <B>- 
1468
                ld      de,TRD_5CED                     ;    
1469
                ld      bc,7
1470
                ldir
1471
                ld      a,(TRD_5CF1)
1472
                ld      (TRD_5D10),a                    ;   
1473
                call    COM_18                          ;   
1474
                call    GET_TYPE_DISK
1475
                ld      (TRD_5CD9),a                    ;    <B>  <C>
1476
                ld      a,0xff
1477
                ld      (TRD_5D21),a
1478
                call    COPY_ON1DSK_
1479
                ld      hl,(TRD_5D1F)
1480
                ld      (TRD_5CEB),hl                   ;    
1481
                ld      hl,(TRD_5CF4)
1482
                ld      (TRD_5E06),hl
1483
                ld      hl,TRD_5E09
1484
                inc     (hl)
1485
                ld      c,(hl)
1486
                dec     c
1487
                ld      b,0
1488
                push    bc
1489
                ld      de,9
1490
                ld      (TRD_5CF4),de
1491
                call    REWRITE_9SEC                    ;  9 
1492
                pop     bc
1493
                call    SETHEADFILENAME
1494
                call    REWRITE_9SEC                    ;  9 
678 savelij 1495
                ret
623 savelij 1496
 
761 savelij 1497
CP_FREESEC      xor     a
1498
                ld      (TRD_5D21),a
1499
                call    COM_18                          ;   
1500
                call    GET_TYPE_DISK
1501
                ld      (TRD_5CDA),a
1502
                call    FIND_FILENAME                   ;     
1503
                jp      z,FILE_EXISTS
1504
                call    READ_9SEC                       ;  9 
1505
                ld      a,(TRD_5E09)
1506
                cp      0x80
1507
                jp      z,ERR_DIRFULL
1508
                ld      hl,TRD_5CED                     ;    
1509
                ld      de,TRD_5CE6                     ;  <C>- , <B>- 
1510
                ld      bc,7
1511
                ldir
1512
                call    READ_9SEC                       ;  9 
1513
                ld      a,(TRD_5D10)                    ;   
1514
                ld      (TRD_5CEA),a                    ;    
1515
                ld      de,(TRD_5CEA)                   ;    
1516
                ld      d,0
1517
                or      a
1518
                ld      hl,(TRD_5E0A)
1519
                sbc     hl,de
1520
                jp      c,loc_1C45
1521
                ld      (TRD_5E0A),hl
1522
                ld      hl,(TRD_5E06)
1523
                ld      (TRD_5CEB),hl                   ;    
1524
                ld      (TRD_5D1F),hl
678 savelij 1525
                ret
623 savelij 1526
 
761 savelij 1527
COPY_ON1DSK_    ld      a,(TRD_5CF1)
1528
                or      a
1529
                ret     z
1530
                ld      a,(TRD_5D21)
1531
                or      a
1532
                jr      nz,loc_146F
1533
                call    CLEAR_SCREEN                    ;   
1534
                ld      hl,TXT_INS_SRC                  ; "INSERT SOURCE DISK THEN PRESS Y"
1535
                call    PRINT_MSG                       ;   
1536
loc_1465        call    GET_KEYS                        ;   
1537
                cp      "Y"
1538
                jr      nz,loc_1465
1539
                call    CLEAR_DOWN_SCR                  ;    
1540
loc_146F        ld      a,(TRD_5CF1)
1541
                or      a
1542
                ret     z
1543
                push    hl
1544
                ld      hl,TRD_5D23
1545
                sub     (hl)
1546
                pop     hl
1547
                jr      nc,loc_14CB
1548
                ld      a,(TRD_5CF1)
1549
                ld      b,a
1550
                xor     a
1551
                ld      (TRD_5CF1),a
1552
loc_1484        push    bc
1553
                ld      (TRD_5CCE),a                    ; #00- ,#FF- 
1554
                ld      hl,(TRD_5CCF)                   ;   WORK_SP
1555
                push    hl
1556
                ld      de,(TRD_5CF2)
1557
                call    SET_DSK_SOURCE
1558
                call    COM_05                          ;  
1559
                ld      hl,(TRD_5CF4)
1560
                ld      (TRD_5CF2),hl
1561
                call    CLEAR_SCREEN                    ;   
1562
                ld      hl,TXT_INS_DEST                 ; "INSERT DESTINATION DISK"
1563
                call    PRINT_MSG                       ;   
1564
loc_14A5        call    GET_KEYS                        ;   
1565
                cp      "Y"
1566
                jr      nz,loc_14A5
1567
                call    CLEAR_DOWN_SCR                  ;    
1568
                ld      a,(TRD_5D21)
1569
                or      a
1570
                call    nz,CP_FREESEC
1571
                pop     hl
1572
                pop     bc
1573
                ld      de,(TRD_5CEB)                   ;    
1574
                call    SETUP_DSK_DEST
1575
                call    COM_06
1576
                ld      hl,(TRD_5CF4)
1577
                ld      (TRD_5CEB),hl                   ;    
1578
                jp      COPY_ON1DSK_
623 savelij 1579
 
761 savelij 1580
loc_14CB        ld      (TRD_5CF1),a
1581
                push    hl
1582
                ld      hl,TRD_5D23
1583
                ld      b,(hl)
1584
                pop     hl
1585
                xor     a
1586
                jp      loc_1484
623 savelij 1587
 
761 savelij 1588
SET_DSK_SOURCE  push    hl
1589
                push    de
1590
                call    GET_TYPE_DISK
1591
                ld      a,(TRD_5CD9)                    ;    <B>  <C>
1592
                ld      (hl),a
1593
                pop     de
1594
                pop     hl
678 savelij 1595
                ret
623 savelij 1596
 
761 savelij 1597
SETUP_DSK_DEST  push    hl
1598
                push    de
1599
                call    GET_TYPE_DISK
1600
                ld      a,(TRD_5CDA)
1601
                ld      (hl),a
1602
                pop     de
1603
                pop     hl
678 savelij 1604
                ret
623 savelij 1605
 
761 savelij 1606
CP_FREE_DEST    xor     a
1607
                ld      (TRD_5D21),a
1608
                call    COM_18                          ;   
1609
                call    GET_TYPE_DISK
1610
                ld      (TRD_5CDA),a
1611
                ld      a,(TRD_5E08)
1612
                ld      (TRD_5CE7),a                    ;  <C>- , <B>- 
1613
                ld      hl,640
1614
                cp      0x19
1615
                jr      z,SAVE_SECS_DEST
1616
                ld      hl,1280
1617
                cp      0x18
1618
                jr      z,SAVE_SECS_DEST
1619
                cp      0x17
1620
                jr      z,SAVE_SECS_DEST
1621
                ld      hl,2560
1622
                cp      0x16
1623
                jr      z,SAVE_SECS_DEST
1624
                jp      SINTAX_ERROR
623 savelij 1625
 
761 savelij 1626
SAVE_SECS_DEST  ld      (TRD_5CDD),hl                   ;  
1627
                ld      bc,(TRD_5CDF)
1628
                sbc     hl,bc
1629
                jp      c,loc_1C45
678 savelij 1630
                ret
623 savelij 1631
 
761 savelij 1632
COPY_B          call    EXIT_IF_SINTAX
1633
                call    RESERVED_RAM
1634
                ld      hl,TXT_BACKUPDISK               ; "BACKUP DISK"
1635
                call    PRINT_MSG                       ;   
1636
                ld      hl,TXT_INS_SRC                  ; "INSERT SOURCE DISK THEN PRESS Y"
1637
                call    PRINT_MSG                       ;   
1638
loc_153E        call    GET_KEYS                        ;   
1639
                cp      "Y"
1640
                jr      nz,loc_153E
1641
                call    CLEAR_DOWN_SCR                  ;    
1642
                ld      a,0xff
1643
                ld      (TRD_5D21),a
1644
                call    COM_18                          ;   
1645
                call    GET_TYPE_DISK
1646
                ld      (TRD_5CD9),a                    ;    <B>  <C>
1647
                ld      a,(TRD_5E08)
1648
                cp      0x19
1649
                ld      hl,640
1650
                jr      z,loc_1575
1651
                ld      hl,1280
1652
                cp      0x18
1653
                jr      z,loc_1575
1654
                cp      0x17
1655
                jr      z,loc_1575
1656
                ld      hl,2560
1657
                cp      0x16
1658
                jr      z,loc_1575
1659
                jp      SINTAX_ERROR
678 savelij 1660
 
761 savelij 1661
loc_1575        ld      bc,(TRD_5E0A)
1662
                sbc     hl,bc
1663
                ld      (TRD_5CE5),hl                   ;  
1664
                ld      (TRD_5CDF),hl
1665
                ld      hl,0
1666
                ld      (TRD_5CE1),hl
1667
                ld      (TRD_5CE3),hl
1668
                call    COPY_SECTORS
1669
                call    COM_18                          ;   
1670
                ld      a,(TRD_5CE7)                    ;  <C>- , <B>- 
1671
                ld      (TRD_5E08),a
1672
                ld      hl,(TRD_5CDD)                   ;  
1673
                ld      bc,(TRD_5CDF)
1674
                sbc     hl,bc
1675
                ld      (TRD_5E0A),hl
1676
                call    SETUP_DSK_DEST
1677
                ld      de,9
1678
                ld      (TRD_5CF4),de
1679
                call    REWRITE_9SEC                    ;  9 
1680
                JP      ERR_OK
623 savelij 1681
 
761 savelij 1682
CP_COPY_SECS    ld      hl,(TRD_5CE5)                   ;  
1683
                ld      a,h
1684
                or      l
678 savelij 1685
                ret
623 savelij 1686
 
761 savelij 1687
COPY_SECTORS    call    CP_COPY_SECS
1688
                ret     z
1689
                ld      a,(TRD_5D21)
1690
                or      a
1691
                jr      nz,loc_15DB
1692
                call    CLEAR_SCREEN                    ;   
1693
                ld      hl,TXT_BACKUPDISK               ; "BACKUP DISK"
1694
                call    PRINT_MSG                       ;   
1695
                ld      hl,TXT_INS_SRC                  ; "INSERT SOURCE DISK THEN PRESS Y"
1696
                call    PRINT_MSG                       ;   
1697
loc_15D1        call    GET_KEYS                        ;   
1698
                cp      "Y"
1699
                jr      nz,loc_15D1
1700
                call    CLEAR_DOWN_SCR                  ;    
1701
loc_15DB        call    CP_COPY_SECS
1702
                ret     z
1703
                push    bc
1704
                push    hl
1705
                ld      hl,TRD_5D23
1706
                ld      c,(hl)
1707
                ld      b,0
1708
                pop     hl
1709
                sbc     hl,bc
1710
                pop     bc
1711
                jp      nc,loc_1644
1712
                ld      bc,(TRD_5CE5)                   ;  
1713
                ld      hl,0
1714
                ld      (TRD_5CE5),hl                   ;  
1715
loc_15F8        push    bc
1716
                ld      hl,(TRD_5CCF)                   ;   WORK_SP
1717
                push    hl
1718
                call    SET_DSK_SOURCE
1719
                ld      de,(TRD_5CE1)
1720
                ld      b,c
1721
                call    COM_05                          ;  
1722
                ld      hl,(TRD_5CF4)
1723
                ld      (TRD_5CE1),hl
1724
                call    CLEAR_SCREEN                    ;   
1725
                ld      hl,TXT_BACKUPDISK               ; "BACKUP DISK"
1726
                call    PRINT_MSG                       ;   
1727
                ld      hl,TXT_INS_DEST                 ; "INSERT DESTINATION DISK"
1728
                call    PRINT_MSG                       ;   
1729
loc_161D        call    GET_KEYS                        ;   
1730
                cp      "Y"
1731
                jr      nz,loc_161D
1732
                call    CLEAR_DOWN_SCR                  ;    
1733
                ld      a,(TRD_5D21)
1734
                or      a
1735
                call    nz,CP_FREE_DEST
1736
                pop     hl
1737
                pop     bc
1738
                ld      de,(TRD_5CE3)
1739
                ld      b,c
1740
                call    SETUP_DSK_DEST
1741
                call    COM_06
1742
                ld      hl,(TRD_5CF4)
1743
                ld      (TRD_5CE3),hl
1744
                jp      COPY_SECTORS
623 savelij 1745
 
761 savelij 1746
loc_1644        ld      (TRD_5CE5),hl                   ;  
1747
                push    hl
1748
                ld      hl,TRD_5D23
1749
                ld      c,(hl)
1750
                ld      b,0
1751
                pop     hl
1752
                xor     a
1753
                jp      loc_15F8
623 savelij 1754
 
761 savelij 1755
CP_ERASED_FILE  call    RDHEAD_FILENAME                 ;   
1756
                ld      a,(TRD_5CDD)                    ;  
1757
                cp      1
678 savelij 1758
                ret
623 savelij 1759
 
1760
;    0X5CDD
761 savelij 1761
COM_08          ld      c,a
678 savelij 1762
;   
761 savelij 1763
RDHEAD_FILENAME xor     a
1764
loc_165E        push    bc
1765
                call    RD_HEAD_COPY
1766
                pop     bc
678 savelij 1767
                ret
623 savelij 1768
 
1769
;    
761 savelij 1770
COM_09          ld      c,a
1771
                call    SETHEADFILENAME
1772
                jp      REWRITE_9SEC                    ;  9 
623 savelij 1773
 
761 savelij 1774
SETHEADFILENAME ld      a,0xff
1775
                jr      loc_165E
623 savelij 1776
 
761 savelij 1777
RESERVED_RAM    ld      a,0xff
1778
                ld      (TRD_5D0E),a                    ; #FE- BASIC, TR-DOS
1779
                call    CP_FREE_SECS
1780
                ld      hl,(WORKSP)
1781
                ld      (TRD_5CCF),hl                   ;   WORK_SP
1782
                jp      CREATE_FREERAM
623 savelij 1783
 
761 savelij 1784
CP_FREE_SECS    rst     0x20
1785
                dw      0x1f1a                          ;    
1786
                ld      hl,0xffff
1787
                sbc     hl,bc
1788
                ld      a,h
1789
                cp      0x10
1790
                jr      nc,loc_168F
1791
                ld      a,0x11
1792
loc_168F        dec     a
1793
                ld      (TRD_5D23),a
1794
                ld      b,a
1795
                ld      c,0
678 savelij 1796
                ret
623 savelij 1797
 
761 savelij 1798
ADD_FILESIZE    ld      (TRD_5CD7),hl                   ;     - 
1799
                                                        ;    
1800
                LD      (TRD_5CDB),hl
1801
                ld      de,(TRD_5CEA)                   ;    
1802
                ld      hl,(TRD_5CD9)                   ;    <B>  <C>
1803
                ld      d,0
1804
                add     hl,de
1805
                ld      (TRD_5CD9),hl                   ;    <B>  <C>
678 savelij 1806
                ret
623 savelij 1807
 
761 savelij 1808
MOVE            call    EXIT_IF_SINTAX
1809
                call    RESERVED_RAM
1810
                call    COM_18                          ;   
1811
                ld      a,(TRD_5E19)
1812
                or      a
1813
                jp      z,ERR_OK
1814
                ld      hl,0
1815
                ld      (TRD_5CD9),hl                   ;    <B>  <C>
1816
                ld      c,0xff
1817
loc_16C3        inc     c
1818
                call    CP_ERASED_FILE
1819
                jr      nz,loc_16C3
1820
                ld      a,c
1821
                ld      (TRD_5CD4),a
1822
                ld      hl,(TRD_5CEB)                   ;    
1823
                ld      (TRD_5CD5),hl
1824
                call    ADD_FILESIZE
1825
loc_16D6        inc     c
1826
                call    CP_ERASED_FILE
1827
                jr      z,loc_16D6
1828
                cp      0
1829
                jp      nz,loc_1710
1830
                ld      a,(TRD_5CD4)
1831
                ld      c,a
1832
loc_16E5        inc     c
1833
                call    CP_ERASED_FILE
1834
                cp      0
1835
                jr      z,REINIT_9SEC
1836
                xor     a
1837
                ld      (TRD_5CDD),a                    ;  
1838
                call    WRHEAD_FILENAME                 ;   
1839
                call    ADD_FILESIZE
1840
                jr      loc_16E5
623 savelij 1841
 
678 savelij 1842
                DUPL 0X1710-$,0XFF
761 savelij 1843
loc_1710        ld      a,(TRD_5CEA)                    ;    
1844
                ld      (TRD_5CD3),a
1845
                ld      (TRD_5CD1),a
1846
                ld      hl,(TRD_5CEB)                   ;    
1847
                ld      (TRD_5CD5),hl
1848
                push    bc
1849
                call    MOVE_FILE
1850
                pop     bc
1851
                ld      hl,(TRD_5CF4)
1852
                ld      (TRD_5CD5),hl
1853
                ld      (TRD_5CEB),hl                   ;    
1854
                xor     a
1855
                ld      (TRD_5CEA),a                    ;    
1856
                ld      a,(TRD_5CDD)                    ;  
1857
                push    af
1858
                ld      a,1
1859
                ld      (TRD_5CDD),a                    ;  
1860
                call    WRHEAD_FILENAME                 ;   
1861
                pop     af
1862
                ld      (TRD_5CDD),a                    ;  
1863
                ld      a,(TRD_5CD4)
1864
                ld      c,a
1865
                ld      hl,(TRD_5CDB)
1866
                ld      (TRD_5CEB),hl                   ;    
1867
                ld      a,(TRD_5CD1)
1868
                ld      (TRD_5CEA),a                    ;    
1869
                call    WRHEAD_FILENAME                 ;   
1870
                ld      a,(TRD_5CD4)
1871
                inc     a
1872
                ld      c,a
1873
                call    RDHEAD_FILENAME                 ;   
1874
                ld      hl,(TRD_5CD5)
1875
                ld      (TRD_5CEB),hl                   ;    
1876
                call    WRHEAD_FILENAME                 ;   
1877
                ld      a,(TRD_5CD4)
1878
                ld      c,a
1879
                jp      loc_16C3
623 savelij 1880
 
761 savelij 1881
REINIT_9SEC     ld      hl,(TRD_5CCF)                   ;   WORK_SP
1882
                ld      bc,0x1000
1883
                call    DEL_WORKRAM
1884
                call    READ_9SEC                       ;  9 
1885
                ld      hl,(TRD_5E0A)
1886
                ld      de,(TRD_5CD9)                   ;    <B>  <C>
1887
                add     hl,de
1888
                ld      (TRD_5E0A),hl
1889
                ld      a,(TRD_5E09)
1890
                ld      hl,TRD_5E19
1891
                sub     (hl)
1892
                ld      (TRD_5E09),a
1893
                ld      (hl),0
1894
                ld      hl,(TRD_5CD5)
1895
                ld      (TRD_5E06),hl
1896
                push    af
1897
                call    REWRITE_9SEC                    ;  9 
1898
                pop     af
1899
                ld      c,a
1900
                call    RDHEAD_FILENAME                 ;   
1901
                xor     a
1902
                ld      (TRD_5CDD),a                    ;  
1903
                jp      loc_569
623 savelij 1904
 
761 savelij 1905
MOVE_FILE       ld      a,(TRD_5CD3)
1906
                or      a
1907
                ret     z
1908
                push    hl
1909
                ld      hl,TRD_5D23
1910
                sub     (hl)
1911
                pop     hl
1912
                jr      nc,loc_17DD
1913
                ld      a,(TRD_5CD3)
1914
                ld      b,a
1915
                xor     a
1916
                ld      (TRD_5CD3),a
1917
loc_17BA        push    bc
1918
                ld      hl,(TRD_5CCF)                   ;   WORK_SP
1919
                push    hl
1920
                ld      de,(TRD_5CD5)
1921
                call    COM_05                          ;  
1922
                ld      hl,(TRD_5CF4)
1923
                ld      (TRD_5CD5),hl
1924
                pop     hl
1925
                pop     bc
1926
                ld      de,(TRD_5CD7)                   ;     - 
1927
                                                        ;    
1928
                call    COM_06
1929
                ld      hl,(TRD_5CF4)
1930
                ld      (TRD_5CD7),hl                   ;     - 
1931
                                                        ;    
1932
                jr      MOVE_FILE
623 savelij 1933
 
761 savelij 1934
loc_17DD        ld      (TRD_5CD3),a
1935
                push    hl
1936
                ld      hl,TRD_5D23
1937
                ld      b,(hl)
1938
                pop     hl
1939
                xor     a
1940
                jr      loc_17BA
623 savelij 1941
 
761 savelij 1942
RD_HEAD_COPY    push    af
1943
                ld      hl,TRD_5CCC                     ;      
1944
                ld      (hl),0
1945
                ld      a,c
1946
loc_17F0        sub     0x10
1947
                jr      c,loc_17F7
1948
                inc     (hl)
1949
                jr      loc_17F0
623 savelij 1950
 
761 savelij 1951
loc_17F7        add     a,0x10
1952
                ld      c,a
1953
                push    bc
1954
                call    READ_NUM_SEC                    ;     
1955
                pop     bc
1956
                pop     af
1957
                call    FIND_HEAD_BUF
1958
                ld      de,TRD_5CDD                     ;  
1959
                ld      bc,0x10
1960
                or      a
1961
                jr      z,loc_180D
1962
                ex      de,hl
1963
loc_180D
1964
        IF EMU
1965
                IF EMU3D2F=1
623 savelij 1966
                JP EMU_LDIR
1967
                ELSE
678 savelij 1968
                ldir
1969
                ret
623 savelij 1970
                ENDIF
761 savelij 1971
        ELSE
1972
                LDIR
1973
                RET
1974
        ENDIF
623 savelij 1975
 
761 savelij 1976
VERIFY          ld      a,0xff
1977
                ld      (TRD_5CF9),a                    ;     2 
1978
LOAD            call    ZERO2HIGH_ERR
1979
loc_1818        call    LOAD_FILE
1980
                call    EXIT_IF_SINTAX
1981
                ld      a,0xff
1982
                ld      (TRD_5D10),a                    ;   
1983
                ld      a,(TRD_5CF9)                    ;     2 
1984
                cp      0xff
1985
                jp      z,ERR_OK
1986
                ld      a,(TRD_5CE5)                    ;  
1987
                cp      "B"
1988
                jp      z,WORK4AUTORUN                  ;    
1989
                jp      ERR_OK
623 savelij 1990
 
761 savelij 1991
LOAD_FILE       call    GET_PARAMS
1992
                call    EXIT_IF_SINTAX
1993
                call    CP_PARAMS
1994
                jp      RD_FILE
623 savelij 1995
 
761 savelij 1996
GET_LOAD_CODE   ld      hl,(CH_ADD)
1997
                inc     hl
1998
                ld      a,(hl)
1999
                cp      0x0d
2000
                ret     z
2001
                ld      a,1
2002
                ld      (TRD_5CD6),a                    ; #FF-   
2003
                call    INPUT_PARAMS
2004
ZERO2HIGH_ERR   xor     a
2005
                ld      (TRD_5D10),a                    ;   
678 savelij 2006
                ret
623 savelij 2007
 
761 savelij 2008
sub_1857        call    INP_EXTFILENAME                 ;   
2009
                ld      a,"B"
2010
                cp      b
2011
                jr      nz,loc_1866
2012
                ld      hl,(CH_ADD)
2013
                dec     hl
2014
                ld      (CH_ADD),hl
2015
loc_1866        call    INPUT_PARAMS
2016
                ld      hl,(TRD_5CD9)                   ;    <B>  <C>
2017
                ld      (TRD_5CD7),hl                   ;     - 
2018
                                                        ;    
2019
                ld      hl,(TRD_5CDB)
2020
                ld      (TRD_5CD9),hl                   ;    <B>  <C>
2021
                xor     a
2022
                ld      (TRD_5CD6),a                    ; #FF-   
678 savelij 2023
                ret
623 savelij 2024
 
761 savelij 2025
GET_PARAMS      call    CP_SECOND_SYM
2026
                jp      z,loc_27B
2027
                call    SET_AND_PUT
2028
                call    CP_HIGH_ERR
2029
                call    nz,sub_1857
2030
                call    GET_SYMSTR
2031
                cp      __CODE
2032
                call    z,GET_LOAD_CODE
2033
                cp      __DATA
2034
                push    af
2035
                call    CP_HIGH_ERR
2036
                call    z,INP_EXTFILENAME               ;   
2037
                pop     af
2038
                call    z,READ_MASSIV
2039
                call    EXIT_IF_SINTAX
2040
                call    FIND_FILE                       ;    
2041
FIND_RD_HEAD    jp      nz,ERR_NOFILES
2042
                call    RDHEAD_FILENAME                 ;   
678 savelij 2043
                ret
623 savelij 2044
 
761 savelij 2045
CP_PARAMS       ld      a,(TRD_5CD6)
2046
                or      a
2047
                ld      hl,(TRD_5CE6)                   ;    
2048
                jr      z,loc_18B7
2049
                ld      hl,(TRD_5CD9)                   ;    
678 savelij 2050
loc_18B7        CALL ADR_START_COM
2051
                NOP
761 savelij 2052
                cp      3
2053
                ld      a,(TRD_5CEA)                    ;   
2054
                push    de
2055
                ld      de,(TRD_5CE8)                   ;   
2056
                jr      nz,loc_18CB
2057
                ld      de,(TRD_5CDB)                   ;     
2058
loc_18CB        ld      b,a
2059
                ld      (TRD_5CDB),de
2060
                ld      a,(TRD_5CE5)                    ; 
2061
                cp      "C"
2062
                ld      a,b
2063
                jr      nz,loc_18FD
2064
                ld      a,b
2065
                cp      d
2066
                jr      z,loc_18F6
2067
                dec     a
2068
                cp      d
2069
                ld      a,b
2070
                jr      z,loc_18F6
2071
                ld      a,(TRD_5CD6)                    ; #FF-   
2072
                cp      3
2073
                ld      a,b
2074
                jr      z,loc_18F6
2075
                xor     a
2076
                ld      (TRD_5CD6),a                    ; #FF-   
2077
                ld      d,b
2078
                ld      e,0
2079
                ld      (TRD_5CDB),de
2080
                jr      loc_18F9
623 savelij 2081
 
761 savelij 2082
loc_18F6        call    LOAD_FULLFILE
2083
loc_18F9        ld      a,b
2084
                call    KOLWO_SECS
2085
loc_18FD        ld      b,a
2086
                ld      a,(TRD_5CE5)                    ;  
2087
                cp      "C"
2088
                pop     de
2089
                ret     z
2090
                push    de
2091
                cp      "B"
2092
                push    af
2093
                call    z,LOAD4BASIC
2094
                pop     af
2095
                cp      "D"
2096
                call    z,LOAD4DATA
2097
                call    LOAD_FULLFILE
2098
                ld      a,(TRD_5CDC)
678 savelij 2099
                ld b,a
2100
                pop de
2101
                ret
623 savelij 2102
 
761 savelij 2103
LOAD_FULLFILE   ld      a,3
2104
                ld      (TRD_5CD6),a                    ; #FF-   
678 savelij 2105
                ret
623 savelij 2106
 
761 savelij 2107
RD_FILE         call    CP_HIGH_ERR
2108
                jr      z,loc_192D
2109
                push    af
2110
                call    NUM_SEC_FILE
2111
                pop     af
2112
                cp      0xff
2113
loc_192D        push    af
2114
                call    z,RD_SECTORS
2115
                pop     af
2116
                jr      z,loc_1937
2117
                jp      COM_06
623 savelij 2118
 
761 savelij 2119
loc_1937        ld      a,(TRD_5CD6)                    ; #FF-   
2120
                cp      3
2121
                call    z,RD_OR_VERIFY
2122
                ld      hl,(E_LINE)                     ;    
2123
                dec     hl
2124
                ld      (hl),0x80
2125
                ret
623 savelij 2126
 
761 savelij 2127
RD_OR_VERIFY    ld      a,(TRD_5CF9)                    ;     2 
2128
                cp      0xff
2129
                jp      nz,LOAD_END_FILE
2130
                ld      a,(TRD_5CDB)
2131
                or      a
2132
                ret     z
2133
                ld      c,a
2134
                ld      b,1
2135
                ld      de,(TRD_5CF4)
2136
                jr      loc_196A
623 savelij 2137
 
761 savelij 2138
RD_SECTORS      ld      a,(TRD_5CF9)                    ;     2 
2139
                cp      0xff
2140
                jp      nz,COM_05                       ;  
2141
                ld      (TRD_5CF4),de
2142
                ld      c,0
2143
loc_196A        ld      a,b
2144
                or      a
2145
                ret     z
2146
                ld      (TRD_5CD7),hl                   ;     - 
2147
                                                        ;    
2148
                ld      (TRD_5CD9),de                   ;    <B>  <C>
2149
loc_1974        push    bc
2150
                ld      b,1
2151
                ld      de,(TRD_5CD9)                   ;    <B>  <C>
2152
                ld      hl,TRD_5D25
2153
                call    COM_05                          ;  
2154
                ld      hl,(TRD_5CF4)
2155
                ld      (TRD_5CD9),hl                   ;    <B>  <C>
2156
                pop     bc
2157
                ld      hl,(TRD_5CD7)                   ;     - 
2158
                                                        ;    
2159
                ld      de,TRD_5D25
2160
loc_198E        ld      a,(de)
2161
                cp      (hl)
2162
                jr      nz,loc_199D
2163
                inc     hl
2164
                inc     de
2165
                dec     c
2166
                jr      nz,loc_198E
2167
                ld      (TRD_5CD7),hl                   ;     - 
2168
                                                        ;    
2169
                djnz    loc_1974
678 savelij 2170
                ret
623 savelij 2171
 
761 savelij 2172
loc_199D        ld      hl,TXT_VERIFYERR                ; "VERIFY ERROR."
2173
                ld      a,0x0d
2174
                jp      PRINT_TXTERR
623 savelij 2175
 
761 savelij 2176
PEEK            ld      a,0xff
2177
                jr      loc_19AB
623 savelij 2178
 
761 savelij 2179
POKE            ld      a,0xee
2180
loc_19AB        ld      (TRD_5D10),a                    ;   
2181
                jp      loc_1818
623 savelij 2182
 
761 savelij 2183
MERGE           ld      a,0xff
2184
                ld      (TRD_5D1F),a
2185
                call    GET_PARAMS
2186
                call    EXIT_IF_SINTAX
2187
                ld      a,(TRD_5CE5)                    ;  
2188
                cp      "B"
2189
                jp      nz,SINTAX_ERROR
2190
                ld      bc,(TRD_5CE6)                   ;  <C>- , <B>- 
2191
                ld      (TRD_5CDB),bc
2192
                push    bc
2193
                inc     bc
2194
                rst     0x20
2195
                dw      0x30                            ;   
2196
                ld      (hl),0x80
2197
                ex      de,hl
2198
                pop     de
2199
                push    hl
2200
                ld      de,(TRD_5CEB)                   ;    
2201
                call    LOAD_FULLFILE
2202
                ld      a,(TRD_5CDC)
2203
                ld      b,a
2204
                call    ZERO2HIGH_ERR
2205
                call    RD_FILE
2206
                pop     hl
2207
                ld      de,(PROG)
2208
                rst     0x20
2209
                dw      0x08d2                          ;      
2210
                jp      ERR_OK
623 savelij 2211
 
761 savelij 2212
CP_FREE4PROG    ex      de,hl
678 savelij 2213
                scf
761 savelij 2214
                sbc     hl,de
2215
                ret     c
2216
                ld      de,0x0a
2217
                add     hl,de
2218
                ld      b,h
2219
                ld      c,l
2220
CP_FREE_RAM     rst     0x20
2221
                dw      0x1f05                          ;   
2222
                ret
623 savelij 2223
 
761 savelij 2224
LOAD4BASIC      ld      de,(PROG)
2225
                ld      hl,(E_LINE)                     ;    
2226
                dec     hl
2227
                push    hl
2228
                push    de
2229
                sbc     hl,de
2230
                ld      de,(TRD_5CE6)                   ;  <C>- , <B>- 
2231
                push    de
2232
                push    hl
2233
                ld      hl,0
2234
                ld      a,(TRD_5CF9)                    ;     2 
2235
                cp      0xff
2236
                jr      z,loc_1A20
2237
                ld      hl,5
2238
loc_1A20        add     hl,de
2239
                ld      (TRD_5CDB),hl
2240
                pop     hl
2241
                ld      a,(TRD_5CF9)                    ;     2 
2242
                cp      0xff
2243
                jr      nz,loc_1A31
2244
                pop     de
2245
                pop     de
2246
                pop     hl
2247
                jr      loc_1A48
623 savelij 2248
 
761 savelij 2249
loc_1A31        call    CP_FREE4PROG
2250
                pop     bc
2251
                pop     de
2252
                pop     hl
2253
                push    bc
2254
                rst     0x20
2255
                dw      0x19e5                          ; 
2256
                pop     bc
2257
                call    RESERV_RAM
2258
                inc     hl
2259
                ld      bc,(TRD_5CE8)                   ;  
2260
                add     hl,bc
2261
                ld      (VARS),hl
2262
loc_1A48        ld      hl,(PROG)
678 savelij 2263
                ret
623 savelij 2264
 
761 savelij 2265
LOAD4DATA       ld      de,(TRD_5CE8)                   ;  
2266
                ld      (TRD_5CDB),de
2267
                ld      hl,(TRD_5CD7)                   ;     - 
2268
                                                        ;    
2269
                ld      a,(TRD_5CF9)                    ;     2 
2270
                cp      0xff
2271
                ret     z
2272
                ld      hl,(TRD_5CD9)                   ;    <B>  <C>
2273
                push    hl
2274
                call    CP_FREE4PROG
2275
                pop     hl
2276
                ld      a,h
2277
                or      l
2278
                jr      z,loc_1A79
2279
                ld      hl,(TRD_5CD7)                   ;     - 
2280
                                                        ;    
2281
                dec     hl
2282
                dec     hl
2283
                dec     hl
2284
                ld      bc,(TRD_5CD9)                   ;    <B>  <C>
2285
                inc     bc
2286
                inc     bc
2287
                inc     bc
2288
                call    DEL_WORKRAM
2289
loc_1A79        ld      hl,(E_LINE)                     ;    
2290
                dec     hl
2291
                ld      bc,(TRD_5CE8)                   ;  
2292
                push    bc
2293
                inc     bc
2294
                inc     bc
2295
                inc     bc
2296
                call    RESERV_RAM
2297
                inc     hl
2298
                ld      a,(TRD_5CD2)
2299
                ld      (hl),a
2300
                inc     hl
2301
                pop     de
2302
                ld      (hl),e
2303
                inc     hl
2304
                ld      (hl),d
2305
                inc     hl
678 savelij 2306
                ret
623 savelij 2307
 
761 savelij 2308
NUM_SEC_FILE    ld      a,(TRD_5CD9)                    ;    <B>  <C>
2309
                ld      c,b
2310
                ld      b,a
2311
                ld      a,c
2312
                cp      b
2313
                jr      c,loc_1AB6
2314
                ld      a,b
2315
                or      a
2316
                jp      z,SINTAX_ERROR
2317
                dec     b
2318
                jr      z,loc_1AB0
2319
                ld      a,0x10
2320
loc_1AA7        inc     e
2321
                cp      e
2322
                jr      nz,loc_1AAE
2323
                ld      e,0
2324
                inc     d
2325
loc_1AAE        djnz    loc_1AA7
2326
loc_1AB0        ld      b,1
2327
                ld      hl,(TRD_5CD7)                   ;     - 
2328
                                                        ;    
678 savelij 2329
                ret
623 savelij 2330
 
761 savelij 2331
loc_1AB6        ld      hl,TXT_R_O
2332
                ld      a,5
2333
                jp      PRINT_TXTERR
623 savelij 2334
 
761 savelij 2335
CP_FILE_FREE    call    FIND_FILE                       ;    
2336
                jp      z,FILE_EXISTS
2337
CP_FREE_ON_DSK  call    READ_9SEC                       ;  9 
2338
                ld      a,(TRD_5E09)
2339
                cp      0x80
2340
                jp      z,ERR_DIRFULL
678 savelij 2341
                ret
623 savelij 2342
 
761 savelij 2343
SAVE            call    ZERO2HIGH_ERR
2344
                ld      hl,0
2345
                ld      (TRD_5CD1),hl
2346
                call    SET_AND_PUT
2347
                call    GET_SYMSTR
2348
                cp      __CODE
2349
                jr      z,loc_1B39
2350
                cp      __LINE
2351
                jr      nz,loc_1AF8
2352
                call    SET_NUM_CHAN
2353
                call    EXIT_IF_SINTAX
2354
                ld      hl,(TRD_5CDB)
2355
                ld      (TRD_5CD1),hl
2356
                ld      hl,TRD_5CE5                     ;  
2357
                jr      loc_1B1F
623 savelij 2358
 
761 savelij 2359
loc_1AF8        cp      __SCREENS
2360
                jr      nz,loc_1B0D
2361
                ld      hl,0x4000
2362
                ld      (TRD_5CD7),hl                   ;     - 
2363
                                                        ;    
2364
                ld      hl,0x1b00
2365
                ld      (TRD_5CD9),hl                   ;    <B>  <C>
2366
                ld      (TRD_5CDB),hl
2367
                jr      loc_1B48
623 savelij 2368
 
761 savelij 2369
loc_1B0D        call    EXIT_IF_SINTAX
2370
                call    GET_SYMSTR
2371
                ld      hl,TRD_5CE5                     ;  
2372
                cp      __DATA
2373
                jr      z,loc_1B2C
2374
                cp      0x0d
2375
                jp      nz,SINTAX_ERROR
2376
loc_1B1F        ld      (hl),"B"
2377
                call    CP_FILE_FREE
2378
                call    DEL_5BYTES
2379
loc_1B27        call    SET_START_SIZE
2380
                jr      loc_1B53
623 savelij 2381
 
761 savelij 2382
loc_1B2C        ld      (hl),"D"
2383
                call    CP_FILE_FREE
2384
                call    CP_MASSIV
2385
                jr      nc,loc_1B53
2386
                jp      c,SINTAX_ERROR
2387
loc_1B39        call    GET_START_SIZE
2388
                ld      hl,(TRD_5CD9)                   ;    <B>  <C>
2389
                ld      (TRD_5CD7),hl                   ;     - 
2390
                                                        ;    
2391
                ld      hl,(TRD_5CDB)
2392
                ld      (TRD_5CD9),hl                   ;    <B>  <C>
2393
loc_1B48        call    EXIT_IF_SINTAX
2394
                ld      a,"C"
2395
                ld      (TRD_5CE5),a                    ;  
2396
                call    CP_FILE_FREE
2397
loc_1B53        call    SAVE_FILE
2398
                jp      loc_569
623 savelij 2399
 
761 savelij 2400
SAVE_FILE       ld      hl,(TRD_5CD7)                   ;     - 
2401
                                                        ;    
2402
                ld      (TRD_5CE6),hl                   ;  <C>- , <B>- 
2403
                ex      de,hl
2404
                ld      hl,(TRD_5CD9)                   ;    <B>  <C>
2405
                ld      a,l
2406
                or      h
2407
                jp      z,SINTAX_ERROR
2408
                ld      a,l
2409
                or      a
2410
                jr      z,loc_1B6D
2411
                inc     h
2412
loc_1B6D        ld      a,h
2413
                ld      (TRD_5CEA),a                    ;    
2414
                ld      e,a
2415
                ld      d,0
2416
                ld      hl,(TRD_5E0A)
2417
                sbc     hl,de
2418
                jp      c,loc_1C45
2419
                push    hl
2420
                ld      hl,(E_LINE)                     ;    
2421
                ld      (hl),__SCREENS
2422
                inc     hl
2423
                ld      de,(TRD_5CD1)
2424
                ld      (hl),e
2425
                inc     hl
2426
                ld      (hl),d
2427
                ld      hl,(TRD_5CDB)
2428
                ld      (TRD_5CE8),hl                   ;  
2429
                ld      hl,(TRD_5E06)
2430
                ld      (TRD_5CEB),hl                   ;    
2431
                ex      de,hl
2432
                ld      hl,(TRD_5CE6)                   ;  <C>- , <B>- 
2433
                ld      a,(TRD_5CEA)                    ;    
2434
                ld      b,a
2435
                call    COM_06
2436
                ld      hl,(TRD_5CF4)
2437
                push    hl
2438
                call    READ_9SEC                       ;  9 
2439
                pop     hl
2440
                ld      (TRD_5E06),hl
2441
                pop     hl
2442
                ld      (TRD_5E0A),hl
2443
                ld      hl,TRD_5E09
2444
                ld      a,(hl)
2445
                ld      (TRD_5D1E),a
2446
                inc     (hl)
2447
                push    hl
2448
                call    REWRITE_9SEC                    ;  9 
2449
                pop     hl
2450
                ld      c,(hl)
2451
                dec     c
2452
                ld      a,(TRD_5CE5)                    ;  
2453
                cp      "B"
2454
                call    z,SET_HEAD_STSZ
678 savelij 2455
                ret
623 savelij 2456
 
761 savelij 2457
SET_HEAD_STSZ   ld      hl,(E_LINE)                     ;    
2458
                ld      de,(PROG)
678 savelij 2459
                scf
761 savelij 2460
                sbc     hl,de
2461
                ld      (TRD_5CE6),hl                   ;  <C>- , <B>- 
2462
                ld      hl,(VARS)
2463
                sbc     hl,de
2464
                ld      (TRD_5CE8),hl                   ;  
678 savelij 2465
                ret
623 savelij 2466
 
761 savelij 2467
SET_START_SIZE  ld      hl,(VARS)
2468
                ld      de,(PROG)
2469
                sbc     hl,de
2470
                ld      (TRD_5CDB),hl
2471
                ld      hl,(PROG)
2472
                ld      (TRD_5CD7),hl                   ;     - 
2473
                                                        ;    
2474
                ld      hl,(E_LINE)                     ;    
2475
                inc     hl
2476
                inc     hl
2477
                inc     hl
2478
                sbc     hl,de
2479
                ld      (TRD_5CD9),hl                   ;    <B>  <C>
678 savelij 2480
                ret
623 savelij 2481
 
761 savelij 2482
READ_MASSIV     call    FIND_MASSIV
2483
                ret     nc
2484
                ld      hl,0
2485
                ld      (TRD_5CD9),hl                   ;    <B>  <C>
2486
                ld      a,(TRD_5CF9)                    ;     2 
2487
                cp      0xff
2488
                ret     nz
2489
                jp      loc_1C13
623 savelij 2490
 
761 savelij 2491
CP_MASSIV       call    FIND_MASSIV
2492
                ret     nc
2493
loc_1C13        ld      a,0x0e
2494
                ld      hl,TXT_ARRAYNOT                 ; "ARRAY NOT FOUND"
2495
                jp      PRINT_TXTERR
623 savelij 2496
 
761 savelij 2497
FIND_MASSIV     call    GET_NEXT_SYM
2498
                call    LOOK_VARS
2499
                set     7,c
2500
                ld      a,c
2501
                ld      (TRD_5CD2),a
2502
                jr      nc,loc_1C2B
678 savelij 2503
loc_1C29        scf
2504
                ret
623 savelij 2505
 
761 savelij 2506
loc_1C2B        jr      nz,loc_1C29
2507
                inc     hl
2508
                ld      e,(hl)
2509
                inc     hl
2510
                ld      d,(hl)
2511
                inc     hl
2512
                ld      (TRD_5CD7),hl                   ;     - 
2513
                                                        ;    
2514
                ld      (TRD_5CDB),de
2515
                ld      (TRD_5CD9),de                   ;    <B>  <C>
2516
                call    GET_NEXT_SYM
2517
                cp      ")"
2518
                jr      nz,loc_1C2B
678 savelij 2519
                ret
623 savelij 2520
 
761 savelij 2521
loc_1C45        ld      hl,TXT_NOSPACE_
2522
                ld      a,3
2523
PRINT_TXTERR    call    PRINT_ERROR                     ;    
2524
                jp      END_COMAND
623 savelij 2525
 
761 savelij 2526
FILE_EXISTS     ld      hl,TXT_FILEEXISTS_
2527
                ld      a,2
2528
                jr      PRINT_TXTERR
623 savelij 2529
 
761 savelij 2530
SET_FILENAME    ld      hl,TRD_5CDD                     ;  
2531
                ld      b,8
2532
loc_1C5C        ld      (hl)," "
2533
                inc     hl
2534
                djnz    loc_1C5C
2535
                call    CP_ON_STKBOT
2536
                ex      de,hl
2537
                call    SETUP_DSK
2538
                ld      a,c
2539
                or      a
2540
                jp      z,SINTAX_ERROR
2541
                cp      9
2542
                jr      c,loc_1C73
2543
                ld      c,8
2544
loc_1C73        ld      a,(hl)
2545
                cp      " "
2546
                jp      c,SINTAX_ERROR
2547
                ld      de,TRD_5CDD                     ;  
2548
                push    bc
2549
        IF EMU
678 savelij 2550
                IF EMU3D2F=1
623 savelij 2551
                JP EMU_LDIR_RBC
678 savelij 2552
 
2553
                RET
2554
                ELSE
2555
                ldir
2556
                pop bc
2557
                ret
2558
                ENDIF
761 savelij 2559
        ELSE
2560
                ldir
2561
                pop     bc
2562
                ret
2563
        ENDIF
623 savelij 2564
 
2565
;   
761 savelij 2566
SETUP_DSK       inc     hl
2567
                ld      a,(hl)                          ;   
2568
                CP      ":"                             ;  ":", 
2569
                jr      nz,loc_1C98                     ;    
2570
                dec     hl
2571
                ld      a,(hl)                          ;     
2572
                call    NUMDSK2BYTE                     ;     
2573
                push    bc
2574
                push    hl
2575
                call    COM_01                          ;   
2576
                pop     hl
2577
                pop     bc
2578
                dec     bc
2579
                dec     bc                              ;     
2580
                inc     hl
2581
                inc     hl                              ;        
678 savelij 2582
                ret
623 savelij 2583
 
761 savelij 2584
loc_1C98        dec     hl
2585
                ld      a,(TRD_5D19)                    ;   
2586
                push    bc
2587
                push    hl
2588
                call    COM_01                          ;   
2589
                pop     hl
2590
                pop     bc
678 savelij 2591
                ret
623 savelij 2592
 
761 savelij 2593
FIND_HEAD_BUF   ld      l,c
2594
                ld      h,0
2595
                add     hl,hl
2596
                add     hl,hl
2597
                add     hl,hl
2598
                add     hl,hl
2599
                ld      bc,TRD_5D25
2600
                add     hl,bc
678 savelij 2601
                ret
623 savelij 2602
 
761 savelij 2603
SET_CP_FILENAME call    SET_FILENAME
623 savelij 2604
;     
761 savelij 2605
FIND_FILENAME   call    RD_0SEC2BUF                     ;   0 
2606
                ld      b,0x80
2607
                ld      c,0
2608
loc_1CBA        push    bc
2609
                call    FIND_HEAD_BUF
2610
                call    CP_END_BUF
2611
                pop     bc
2612
                push    bc
2613
                ld      a,c
2614
                cp      0x10
2615
                jr      nz,loc_1CCD
2616
                pop     bc
2617
                ld      c,0
2618
                jr      loc_1CBA
623 savelij 2619
 
761 savelij 2620
loc_1CCD        ld      de,TRD_5CDD                     ;  
2621
                ld      a,(TRD_5D06)                    ;      
2622
                ld      b,a
2623
                xor     a
2624
                cp      (hl)
2625
                jr      nz,loc_1CDB
2626
                pop     bc
2627
                jr      loc_1CE4
623 savelij 2628
 
761 savelij 2629
loc_1CDB        call    COMPARE_B_SYM
2630
                pop     bc
2631
                jr      z,loc_1CE7
2632
                inc     c
2633
                djnz    loc_1CBA
2634
loc_1CE4        or      0xff
678 savelij 2635
                ret
623 savelij 2636
 
761 savelij 2637
loc_1CE7        ld      a,0x80
2638
                sub     b
2639
                ld      c,a
2640
                ld      (TRD_5D1E),a
2641
                xor     a
2642
                ret     z
623 savelij 2643
 
2644
;     
761 savelij 2645
COM_0A          call    FIND_FILENAME                   ;     
2646
                ld      hl,TRD_5D0F                     ;   TR-DOS
2647
                ld      (hl),c
2648
                ret     z
2649
                ld      (hl),0xff
678 savelij 2650
                ret
623 savelij 2651
 
761 savelij 2652
RETURN          call    EXIT_IF_SINTAX
2653
                CALL    DELETE_BUFFER
2654
                res     3,(iy+1)
2655
                call    RESTORE_SP                      ;   
2656
                ld      sp,(TRD_5D1C)                   ;   SP
2657
                exx                     ;LD HL,(ERR_SP)
2658
                ld      hl,0x2758       ;DEC HL
2659
                exx                     ;LD A,0X12
2660
                dec     hl              ;CP (HL)
2661
                ld      a,0x12          ;JR NZ,LOCRET_1D19
2662
                cp      (hl)            ;DEC HL
2663
                ret     nz              ;LD (ERR_SP),HL
2664
                dec     hl              ;LOCRET_1D19    RET
2665
                jp      loc_0235
623 savelij 2666
 
761 savelij 2667
SINTAX_ERROR    bit     7,(iy+0)
2668
                jr      z,loc_1D25
2669
                ld      a,0x0b
2670
                ld      (ERR_NR),a
2671
loc_1D25        inc     a
2672
                ld      hl,TXT_ERROR_
2673
loc_1D29        call    PRINT_ERROR                     ;    
2674
                jp      END_COMAND
623 savelij 2675
 
761 savelij 2676
loc_1D2F        ld      a,(ERR_NR)
2677
                ld      hl,TXT_BREAK                    ; "*BREAK*"
2678
                cp      0x14
2679
                jr      z,loc_1D29
2680
                cp      0x0c
2681
                jr      z,loc_1D29
2682
                ld      hl,TXT_OUTRAM                   ; "OUT OF RAM"
2683
                cp      3
2684
                jr      z,loc_1D29
2685
                ld      hl,TXT_ARRAYNOT                 ; "ARRAY NOT FOUND"
2686
                cp      1
2687
                jr      z,loc_1D29
2688
                jr      SINTAX_ERROR
623 savelij 2689
 
761 savelij 2690
RUN             call    ZERO2HIGH_ERR
2691
                call    LOAD_FILE
2692
                call    EXIT_IF_SINTAX
2693
                ld      hl,(TRD_5CE6)
2694
                ld      a,(TRD_5CE5)                    ;  
2695
                cp      "B"
2696
                JP      RUN_FILE
2697
 
2698
                push    hl
678 savelij 2699
                ret
623 savelij 2700
 
761 savelij 2701
CLEAR_WORKSPACE ld      hl,TRD_5D0E                     ; #FF- BASIC, TR-DOS
2702
                ld      a,(hl)
2703
loc_1D67        cp      0xff
2704
                ld      (hl),0
2705
                ret     nz
2706
                rst     0x20
2707
                dw      0x16bf                          ;      
678 savelij 2708
                ret
623 savelij 2709
 
761 savelij 2710
CP_SINTAX       bit     7,(iy+1)
678 savelij 2711
                ret
623 savelij 2712
 
761 savelij 2713
EXIT_IF_SINTAX  call    CP_SINTAX
2714
                ret     nz
2715
                pop     hl
678 savelij 2716
                ret
623 savelij 2717
 
2718
;     
761 savelij 2719
CHISLO2STKBOT   call    GET_NEXT_SYM
2720
                call    BC2STKBOT
2721
                jr      CP_SINTAX
623 savelij 2722
 
2723
;   0
761 savelij 2724
OPEN_CHAN_0     xor     a
2725
OPENSTREAM      rst     0x20
2726
                dw      0x1601                          ;  
678 savelij 2727
                ret
623 savelij 2728
 
2729
;   2
761 savelij 2730
OPEN_CHAN_2     ld      a,2
2731
                jr      OPENSTREAM
623 savelij 2732
 
761 savelij 2733
GET_SYMSTR      rst     0x20
2734
                dw      0x18                            ;    (CH_ADD)
678 savelij 2735
                ret
623 savelij 2736
 
761 savelij 2737
CALL2BASEDIT    call    OPEN_CHAN_0                     ;   0
2738
                rst     0x20
2739
                dw      0x0f2c                          ;   
678 savelij 2740
                ret
623 savelij 2741
 
2742
;   
761 savelij 2743
CLEAR_SCREEN    rst     0x20
2744
                dw      0x0d6b                          ;  
678 savelij 2745
                ret
623 savelij 2746
 
761 savelij 2747
LOOK_VARS       rst     0x20
2748
                dw      0x28b2                          ; LOOK-VARS.    
678 savelij 2749
                ret
623 savelij 2750
 
2751
;    
761 savelij 2752
CLEAR_DOWN_SCR  rst     0x20
2753
                dw      0x0d6e                          ;    
678 savelij 2754
                ret
623 savelij 2755
 
761 savelij 2756
PRINT_CHISLO_A_ ld      c,a
2757
CONV2_2BYTES    ld      b,0
2758
                jp      PRINT_CHISLO
623 savelij 2759
 
761 savelij 2760
PRINT_CHISLO    push    bc
678 savelij 2761
                DUPL 3,0
761 savelij 2762
                pop     bc
2763
                rst     0x20
2764
                dw      0x1a1b                          ;     
678 savelij 2765
                DUPL 3,0
2766
                ret
623 savelij 2767
 
761 savelij 2768
GET_STKBOT_     rst     0x20
2769
                dw      0x2bf1                          ;    
678 savelij 2770
                ret
623 savelij 2771
 
761 savelij 2772
FIND_LAST       rst     0x20
2773
                dw      0x1e99                          ;    
678 savelij 2774
                ret
623 savelij 2775
 
761 savelij 2776
PUT_NUMDSK_STK  rst     0x20
2777
                dw      0x1c8c
678 savelij 2778
                ret
623 savelij 2779
 
761 savelij 2780
BC2STKBOT       rst     0x20
2781
                dw      0x1c82
678 savelij 2782
                ret
623 savelij 2783
 
761 savelij 2784
SET_CH_ADD      ld      hl,(TRD_5D11)                   ;    TR_DOS
2785
                inc     hl
2786
                ld      (CH_ADD),hl
678 savelij 2787
                ret
627 savelij 2788
 
761 savelij 2789
INP_2STR2STKBOT call    SET_AND_PUT
2790
loc_1DD0        call    GET_SYMSTR
2791
                cp      ","
2792
                jp      nz,SINTAX_ERROR
2793
                call    GET_NEXT_SYM
2794
                call    PUT_NUMDSK_STK
678 savelij 2795
                ret
623 savelij 2796
 
761 savelij 2797
SET_AND_PUT     call    SET_CH_ADD
2798
                jp      PUT_NUMDSK_STK
623 savelij 2799
 
761 savelij 2800
GET_START_SIZE  call    GET_SYMSTR
2801
                cp      __CODE
2802
                ret     nz
2803
INPUT_PARAMS    call    CHISLO2STKBOT                   ;     
2804
                jr      z,loc_1DFB
2805
                call    FIND_LAST
2806
                ld      (TRD_5CD9),bc                   ;    <B>  <C>
2807
                ld      (TRD_5CDB),bc
2808
loc_1DFB        call    GET_SYMSTR
2809
                cp      ","
2810
                jr      z,SET_NUM_CHAN
2811
                cp      0x0d
2812
                jp      nz,SINTAX_ERROR
2813
                call    EXIT_IF_SINTAX
678 savelij 2814
                ret
623 savelij 2815
 
761 savelij 2816
SET_NUM_CHAN    call    CHISLO2STKBOT                   ;     
2817
                ret     z
2818
                call    FIND_LAST
2819
                ld      (TRD_5CDB),bc
2820
                ld      a,3
2821
                ld      (TRD_5CD6),a                    ; #FF-   
678 savelij 2822
                ret
623 savelij 2823
 
761 savelij 2824
DEL_5BYTES      ld      hl,(TRD_5D11)                   ;    TR_DOS
2825
                rst     0x20
2826
                dw      0x11a7                          ;    P  
678 savelij 2827
                ret
623 savelij 2828
 
761 savelij 2829
CREATE_FREERAM  ld      hl,(WORKSP)
2830
                rst     0x20
2831
                dw      0x30                            ;   
678 savelij 2832
                ret
623 savelij 2833
 
761 savelij 2834
GET_NEXT_SYM    rst     0x20
2835
                dw      0x20                            ;   
678 savelij 2836
                ret
623 savelij 2837
 
761 savelij 2838
DEL_WORKRAM     rst     0x20
2839
                dw      0x19e8                          ;   
678 savelij 2840
                ret
623 savelij 2841
 
761 savelij 2842
RESERV_RAM      rst     0x20
2843
                dw      0x1655
678 savelij 2844
                ret
623 savelij 2845
 
761 savelij 2846
WR_NUM_TRACK    call    GET_NUM_TRACK   ;FIX
2847
                ld      a,h
2848
        IF EMU
678 savelij 2849
                RST32 _OUT_3F,__OUT_N_A+0X3F<<8
761 savelij 2850
        ELSE
2851
                out     (0x3f),a
2852
        ENDIF
678 savelij 2853
                ret
623 savelij 2854
 
2855
; 
761 savelij 2856
COM_05          xor     a
2857
                jr      loc_1E64
623 savelij 2858
 
761 savelij 2859
WRHEAD_FILENAME call    SETHEADFILENAME                 ;   
2860
REWRITE_9SEC    ld      de,(TRD_5CF4)                   ;  9 
2861
                dec     de
2862
                ld      b,1
2863
                ld      hl,TRD_5D25
623 savelij 2864
; 
678 savelij 2865
COM_06          JR SAVE_SECTORS
2866
 
2867
                DUPL 0X1E62-$,0
761 savelij 2868
SAVE_SECTORS    ld      a,0xff
2869
loc_1E64        ld      (TRD_5CCE),a                    ; #00- ,#FF- 
2870
loc_1E67        ld      (TRD_5CF4),de
2871
                push    bc
2872
                push    hl
2873
        IF EMU
2874
                CALL    SV_LD_RAMDISK
2875
        ELSE
2876
                call    WR_NUM_TRACK
2877
        ENDIF
2878
                pop     hl
2879
                pop     bc
2880
                xor     a
2881
                or      b
2882
                ret     z
2883
loc_1E75        push    bc
2884
                push    hl
2885
                call    COM_04
2886
                ld      a,(TRD_5CF4)
2887
                call    COM_03
2888
                ld      a,(TRD_5CF5)
2889
                call    COM_02
2890
                ld      a,(TRD_5CCE)                    ; #00- ,#FF- 
2891
                or      a
2892
                push    af
2893
                call    z,LOAD_SECTOR
2894
                pop     af
2895
                call    nz,SAVE_SECTOR
2896
                pop     hl
2897
                ld      de,0x100
2898
                add     hl,de
2899
                push    hl
2900
                ld      a,0x10
2901
                ld      hl,TRD_5CF4
2902
                inc     (hl)
2903
                cp      (hl)
2904
                jr      nz,loc_1EA7
2905
                ld      (hl),0
2906
                ld      hl,TRD_5CF5
2907
                inc     (hl)
2908
loc_1EA7        pop     hl
2909
                pop     bc
2910
                djnz    loc_1E75
678 savelij 2911
                ret
623 savelij 2912
 
761 savelij 2913
KOLWO_SECS      push    hl
2914
                ld      h,a
2915
                ld      l,0
2916
                push    hl
2917
                sbc     hl,de
2918
                call    c,LOAD_FILLFILE
2919
                pop     hl
2920
                ld      a,h
2921
                pop     hl
2922
                ret     c
2923
                ld      a,d
678 savelij 2924
                ret
623 savelij 2925
 
761 savelij 2926
LOAD_FILLFILE   xor     a
2927
                ld      (TRD_5CD6),a                    ; #FF-   
678 savelij 2928
                scf
2929
                ret
623 savelij 2930
 
761 savelij 2931
FORMAT          ld      hl,0xffff
2932
                LD      (TRD_5CD7),hl                   ;     - 
2933
                                                        ;    
2934
                ld      (TRD_5CD9),hl                   ;    <B>  <C>
2935
                ld      (TRD_5CD1),hl
2936
                call    CP_SECOND_SYM
2937
                jp      z,SINTAX_ERROR
2938
                call    SET_AND_PUT
2939
                call    EXIT_IF_SINTAX
2940
                call    SET_FILENAME
678 savelij 2941
 
2942
                DUPL 0X1EE1-$,0
623 savelij 2943
                CALL FORMAT_RAM
2944
                JR Z,END_FORMAT
761 savelij 2945
                ld      a,80
2946
loc_1EE8        ld      (TRD_5CD7),a                    ;     - 
2947
                                                        ;    
2948
                call    COM_00
2949
                call    COM_17
2950
                call    PAUSE_3_C_A
2951
                ld      e,1
2952
                call    FORMAT_TREK
2953
                call    COM_16
2954
                ld      e,0
2955
                call    FORMAT_TREK
678 savelij 2956
 
2957
                DUPL 0X1F08-$,0
761 savelij 2958
                call    COM_17
2959
                call    PAUSE_3_C_A
2960
                call    loc_3EB5
2961
                ld      a,0X80
2962
                ld      (TRD_5CDA),a
2963
loc_1F1B        call    FORMAT_DISK
678 savelij 2964
 
623 savelij 2965
END_FORMAT      CALL CP_TYPEDRIVE
2966
                CALL Z,CREATE_TRDTABL
2967
                CALL CLEAR_DOWN_SCR
2968
                LD HL,TRD_5D25
2969
                LD DE,TRD_5D26
2970
                LD BC,0XFF
2971
                LD (HL),B
2972
                LDIR
678 savelij 2973
                JR loc_1F50
2974
 
2975
                DUPL 0X1F50-$,0
761 savelij 2976
loc_1F50        ld      a,0x16
2977
                ld      hl,2544
2978
loc_1F55        ld      (TRD_5E08),a
2979
                ld      (TRD_5E0A),hl
2980
                ld      a,1
2981
                ld      (TRD_5E07),a
2982
                ld      a,0X10
2983
                ld      (TRD_5E0C),a
2984
                ld      hl,TRD_5E0F
2985
                ld      de,TRD_5E10
2986
                ld      bc,8
2987
                ld      (hl)," "
678 savelij 2988
                ldir
761 savelij 2989
                ld      hl,TRD_5CDD                     ;  
2990
                ld      de,TRD_5E1A
2991
                ld      bc,8
2992
                ldir                                    ;  
2993
                call    COM_16
2994
                ld      b,1
2995
                ld      de,8
2996
                ld      hl,TRD_5D25
2997
                call    SAVE_SECTORS
2998
                ld      a,(TRD_5CD6)                    ; #FF-   
2999
                push    af
3000
                xor     a
3001
                ld      (TRD_5CE5),a                    ;  
3002
                ld      hl,(TRD_5E0A)
3003
                ld      (TRD_5CD7),hl                   ;     - 
3004
                                                        ;    
3005
                ld      hl,TRD_5CDD                     ;  
3006
                rst     0x18
3007
                ld      a,0x0d
3008
                rst     0x10
3009
                ld      hl,(TRD_5CD7)                   ;     - 
3010
                                                        ;    
3011
                pop     af
3012
                push    hl
3013
                ld      d,0
3014
                ld      e,a
3015
                sbc     hl,de
3016
                ld      b,h
3017
                ld      c,l
3018
                call    PRINT_CHISLO                    ;  
3019
                ld      a,"/"
3020
                rst     0x10
3021
                pop     bc
3022
                call    PRINT_CHISLO                    ;  
3023
                jp      END_COMAND
623 savelij 3024
 
3025
;    
627 savelij 3026
TABL_SECTORS    DB 0X01,0X02,0X03,0X04,0X05,0X06,0X07,0X08,0X09,0X0A,0X0B,0X0C,0X0D,0X0E,0X0F,0X10,0X01
623 savelij 3027
 
761 savelij 3028
CP_DISK_TRACK   call    GET_TIME_HEAD                   ;    
3029
                or      11h
3030
                ld      b,a
3031
                ld      a,32h
3032
                call    HEAD_POSITION
3033
                ld      a,2
3034
                call    HEAD_POSITION
3035
                call    PAUSE725779T
3036
        IF EMU
678 savelij 3037
                RST32 _IN_1F,__IN_A_N+0X1F<<8
761 savelij 3038
        ELSE
3039
                in      a,(1Fh)
3040
        ENDIF
3041
                and     4
3042
                ld      a,80                            ; 80 
3043
                jr      z,loc_1FE7
3044
                ld      a,40                            ; 40 
3045
loc_1FE7        ld      (TRD_5CD7),a                    ;     - 
3046
                                                        ;    
678 savelij 3047
                ret
3048
 
623 savelij 3049
;  0 
761 savelij 3050
COM_16          ld      a,(TRD_5D16)                    ;    ( #FF)
3051
                or      0x3c
3052
loc_1FF0        ld      (TRD_5D16),a                    ;    ( #FF)
3053
        IF EMU
678 savelij 3054
                RST30 _OUT_FF
761 savelij 3055
        ELSE
3056
                out     (0xff),a
3057
        ENDIF
678 savelij 3058
                ret
623 savelij 3059
 
3060
;  1 
761 savelij 3061
COM_17          ld      a,(TRD_5D16)                    ;    ( #FF)
3062
                and     0x6f
3063
                jr      loc_1FF0
623 savelij 3064
 
678 savelij 3065
FORMAT_TREK     di
761 savelij 3066
                ld      a,0xf4
3067
        IF EMU
678 savelij 3068
                RST32 _OUT_1F,__OUT_N_A+0X1F<<8
761 savelij 3069
        ELSE
3070
                out     (0x1f),a
3071
        ENDIF
3072
                ld      hl,TABL_SECTORS
3073
                ld      c,0x7f
3074
loc_2007        ld      b,0x0a
3075
                ld      d,0x4e
3076
                call    WRITE_C_D_B
3077
                ld      b,0x0c
3078
                ld      d,0
3079
                call    WRITE_C_D_B
3080
                ld      b,3
3081
                ld      d,0xf5
3082
                call    WRITE_C_D_B
3083
                ld      d,0xfe
3084
                call    WRITE_C_D_1
3085
                ld      d,e
3086
                call    WRITE_C_D_1
3087
                ld      d,0
3088
                call    WRITE_C_D_1
3089
                ld      d,(hl)
3090
                call    WRITE_C_D_1
3091
                ld      d,1
3092
                call    WRITE_C_D_1
3093
                ld      d,0xf7
3094
                call    WRITE_C_D_1
3095
                ld      b,0x16
3096
                ld      d,0x4e
3097
                call    WRITE_C_D_B
3098
                ld      b,0x0c
3099
                ld      d,0
3100
                call    WRITE_C_D_B
3101
                ld      b,3
3102
                ld      d,0xf5
3103
                call    WRITE_C_D_B
3104
                ld      d,0xfb
3105
                call    WRITE_C_D_1
3106
                ld      b,0
3107
                ld      d,0
3108
                call    WRITE_C_D_B
3109
                ld      d,0xf7
3110
                call    WRITE_C_D_1
3111
                ld      b,0x3c
3112
                ld      d,0x4e
3113
                call    WRITE_C_D_B
3114
                ld      a,(hl)
3115
                inc     hl
3116
                cp      0x10
3117
                jr      nz,loc_2007
3118
                ld      b,0
3119
                call    WRITE_C_D_B
3120
                jp      m,loc_2076
3121
                call    WRITE_C_D_B
3122
loc_2076
3123
        IF EMU
3124
                RST32 _IN_1F,__IN_A_N+0X1F<<8
3125
        ELSE
3126
                in      a,(0x1f)
3127
        ENDIF
3128
                and     0x40
3129
                jp      nz,loc_3F39                     ; READ ONLY
3130
CP_NUM_TRACK    ld      a,(TRD_5CD8)                    ;     - 
3131
                                                        ;    
3132
                or      a
3133
                ret     nz
3134
                ld      c,0x7f
3135
                ld      a,e
3136
        IF EMU
678 savelij 3137
                RST32 _OUT_3F,__OUT_N_A+0X3F<<8
761 savelij 3138
        ELSE
3139
                out     (0x3f),a
3140
        ENDIF
3141
                ld      hl,TABL_SECTORS+1
3142
loc_208A        ld      b,3
3143
                ld      a,(hl)
3144
        IF EMU
678 savelij 3145
                RST32 _OUT_5F,__OUT_N_A+0X5F<<8
761 savelij 3146
        ELSE
3147
                out     (0x5f),a
3148
        ENDIF
3149
                push    hl
678 savelij 3150
loc_2090        di
761 savelij 3151
                ld      a,0x80
3152
        IF EMU
678 savelij 3153
                RST32 _OUT_1F,__OUT_N_A+0X1F<<8
761 savelij 3154
        ELSE
3155
                out     (0x1f),a
3156
        ENDIF
3157
                push    bc
3158
                call    RD_DATAPORT
3159
        IF EMU
678 savelij 3160
                RST32 _IN_1F,__IN_A_N+0X1F<<8
761 savelij 3161
        ELSE
3162
                in      a,(0x1f)
3163
        ENDIF
3164
                and     0x7f
3165
                pop     bc
3166
                jr      z,loc_20A6
3167
                djnz    loc_2090
3168
                ld      hl,TRD_5CD6                     ; #FF-   
3169
                inc     (hl)
3170
loc_20A6        pop     hl
3171
                ld      a,(hl)
3172
                inc     hl
3173
                cp      1
3174
                jr      nz,loc_208A
678 savelij 3175
                ei
3176
                ret
623 savelij 3177
 
761 savelij 3178
WRITE_C_D_1     ld      b,1
3179
WRITE_C_D_B
3180
        IF EMU
3181
                RST32 _IN_FF,__IN_A_N+0XFF<<8
3182
        ELSE
3183
                in      a,(0xff)
3184
        ENDIF
3185
                and     0xc0
3186
                jr      z,WRITE_C_D_B
3187
                ret     m
3188
        IF EMU
678 savelij 3189
                RST32 _OUT_C_D,__OUT_C_D
761 savelij 3190
        ELSE
3191
                out     (c),d
3192
        ENDIF
3193
                djnz    WRITE_C_D_B
678 savelij 3194
                ret
623 savelij 3195
 
832 savelij 3196
FORMAT_DISK     ld      hl,TRD_5CD7                     ;     - 
761 savelij 3197
                                                        ;    
3198
                ld      b,(hl)
3199
                xor     a
3200
                inc     hl
3201
                ld      (hl),a
3202
                ld      e,0xff
3203
loc_20C6        push    bc
3204
                inc     e
3205
                ld      a,e
3206
                ld      b,0x18
3207
                call    HEAD_POSITION
3208
                call    COM_16
678 savelij 3209
                CALL loc_20D1
623 savelij 3210
 
678 savelij 3211
                DUPL 0X20DE-$,0
761 savelij 3212
                call    FORMAT_TREK
3213
loc_20E1        pop     bc
3214
                djnz    loc_20C6
678 savelij 3215
                ret
623 savelij 3216
 
761 savelij 3217
DELETE_BUF      push    af
3218
                ld      a,(TRD_5CF8)                    ;     2 
3219
                cp      0xff
3220
                jr      z,loc_211C
3221
                pop     af
3222
                jp      DEL_BUF
623 savelij 3223
 
678 savelij 3224
;   INTERFACE1
761 savelij 3225
CP_INTERFACE1   push    af
3226
                ld      a,(TRD_5CB6)                    ;    INTERFACE1
3227
                cp      0F4h
3228
                jr      z,loc_211C
3229
                xor     a
3230
                ld      hl,TRD_5D18
3231
                or      (hl)
3232
                ld      (hl),0FFh
3233
                jr      z,loc_211C
3234
                ld      a,(TRD_5D0C)
3235
                or      a
3236
                ld      hl,TRD_5CC3
3237
                ld      de,TRD_5D33
3238
                jr      nz,loc_2111
3239
                ld      de,TRD_5E34
3240
loc_2111        ld      b,2Dh
3241
loc_2113        ld      c,(hl)
3242
                ld      a,(de)
3243
                ld      (hl),a
3244
                ld      a,c
3245
                ld      (de),a
3246
                inc     hl
3247
                inc     de
3248
                djnz    loc_2113
3249
loc_211C        pop     af
678 savelij 3250
                ret
3251
 
689 savelij 3252
;[     ]
678 savelij 3253
CLRBUF_EDITOR   CALL CLRBUF_EDITOR2
761 savelij 3254
                ld      (hl),0x0d
3255
                ld      (K_CUR),hl
3256
                inc     hl
3257
                ld      (hl),0x80
678 savelij 3258
                ret
623 savelij 3259
 
3260
;     
761 savelij 3261
RESTORE_COMSTR  ld      de,(E_LINE)                     ;    
3262
                ld      hl,TRD_5D20                     ;   3   
3263
                call    LDI3_HL2DE                      ;  3 
678 savelij 3264
                ret
623 savelij 3265
 
3266
;    
761 savelij 3267
GET_COMMAND     ld      a,(TRD_5D0F)                    ;   TR-DOS
3268
                or      a
3269
                push    af
3270
                call    nz,RESTORE_COMSTR               ;  ,   3  
3271
                pop     af
3272
                call    z,CLRBUF_EDITOR                 ;   ,     
3273
                ld      hl,(E_LINE)                     ;    
3274
                call    PRINT_0D
3275
                ld      a,(TRD_5D19)                    ;   
3276
        IF EMU
3277
                call    GET_COMMAND2
3278
        ELSE
3279
                add     a,"A"
3280
                rst     0x10
3281
        ENDIF
3282
                ld      a,">"
3283
                rst     0x10
3284
                ld      hl,ERR_NR
3285
                ld      (hl),0xff
3286
                jp      CALL2BASEDIT
623 savelij 3287
 
761 savelij 3288
sub_2158        call    GET_NEXT_SYM
3289
                call    GET_SYMSTR
3290
                cp      ","
3291
                jp      nz,SINTAX_ERROR
3292
                ld      hl,(TRD_5CDB)
3293
                ld      (TRD_5CD9),hl                   ;    <B>  <C>
3294
                call    SET_NUM_CHAN
3295
                call    EXIT_IF_SINTAX
3296
                ld      hl,(TRD_5CDB)
3297
                ld      a,h
3298
                or      a
3299
                jp      nz,SINTAX_ERROR
3300
                inc     hl
3301
                ld      (TRD_5CD7),hl                   ;     - 
3302
                                                        ;    
3303
                ld      hl,(TRD_5CD9)                   ;    <B>  <C>
3304
                ld      (TRD_5CDB),hl
678 savelij 3305
                ret
623 savelij 3306
 
761 savelij 3307
OPEN            ld      hl,(TRD_5D11)                   ;    TR_DOS
3308
                ld      (CH_ADD),hl
3309
                call    SET_NUM_CHAN
3310
                call    loc_1DD0
3311
loc_218E        call    GET_SYMSTR
3312
                cp      "A"
3313
                jr      nc,loc_219A
3314
                call    GET_NEXT_SYM
3315
                jr      loc_218E
623 savelij 3316
 
761 savelij 3317
loc_219A        cp      0xa5
3318
                push    af
3319
                call    z,sub_2158
3320
                pop     af
3321
                jr      z,loc_21AE
3322
                and     0xdf
3323
                cp      "R"
3324
                jr      z,loc_21AE
3325
                cp      "W"
3326
                jp      nz,SINTAX_ERROR
3327
loc_21AE        ld      (TRD_5D09),a
3328
                call    EXIT_IF_SINTAX
3329
                ld      a,"#"
3330
                ld      (TRD_5CE5),a                    ;  
3331
                ld      a,0
3332
                ld      (TRD_5CE6),a                    ;  <C>- , <B>- 
3333
                call    FIND_ENDFILE
3334
                push    af
3335
                call    CP_STREAMS
3336
                pop     af
3337
                push    af
3338
                call    nz,CREATE_BLOCK0
3339
                pop     af
3340
                call    OPEN_STREAM
3341
                ld      hl,(TRD_5D11)                   ;    TR_DOS
3342
                ld      bc,0x124
3343
                add     hl,bc
3344
                ld      (TRD_5D11),hl                   ;    TR_DOS
3345
                jp      END_COMAND
623 savelij 3346
 
761 savelij 3347
FIND_ENDFILE    ld      a,0x0a
3348
                ld      (TRD_5D06),a                    ;      
3349
                call    SET_CP_FILENAME
3350
                push    af
3351
                call    COM_18                          ;   
3352
                pop     af
3353
                jr      nz,loc_2206
3354
                ld      a,(TRD_5D09)
3355
                cp      "R"
3356
                jr      z,loc_2201
3357
loc_21F1        ld      hl,TRD_5CE6                     ;  <C>- , <B>- 
3358
                inc     (hl)
3359
                call    FIND_FILENAME                   ;     
3360
                jr      z,loc_21F1
3361
                ld      hl,TRD_5CE6                     ;  <C>- , <B>- 
3362
                dec     (hl)
3363
                call    FIND_FILENAME                   ;     
3364
loc_2201        call    RDHEAD_FILENAME                 ;   
3365
                xor     a
678 savelij 3366
                ret
623 savelij 3367
 
761 savelij 3368
loc_2206        ld      a,(TRD_5D09)
3369
                cp      "R"
3370
                ret     nz
3371
                jp      ERR_NOFILES
623 savelij 3372
 
761 savelij 3373
CP_STREAMS      ld      a,(TRD_5CDB)
3374
                rst     0x20
3375
                dw      0x1727
3376
                ld      a,b
3377
                or      c
3378
                jp      nz,loc_221B
678 savelij 3379
                ret
623 savelij 3380
 
761 savelij 3381
loc_221B        ld      a,0x19
3382
                ld      (ERR_NR),A
3383
                ld      hl,TXT_STREAMOPEN               ; "STREAM OPENED"
3384
                ld      a,0x0a
3385
loc_2225        jp      PRINT_TXTERR
623 savelij 3386
 
761 savelij 3387
loc_2228        ld      a,0x0b
3388
                ld      hl,TXT_NODISKFILE               ; "NOT DISK FILE"
3389
                jr      loc_2225
623 savelij 3390
 
761 savelij 3391
INITFREEACCESS  push    hl
3392
                ld      c,0x20
3393
                rst     0x28
3394
                ld      a,(TRD_5CD7)                    ;     - 
3395
                                                        ;    
3396
                ld      (hl),a
3397
                inc     hl
3398
                xor     a
3399
                ld      (hl),a
3400
                inc     hl
3401
                ld      (hl),a
3402
                inc     hl
3403
                ld      (hl),a
3404
                ld      a,0x7f
3405
                pop     hl
678 savelij 3406
                ret
623 savelij 3407
 
761 savelij 3408
OPEN_STREAM     push    af
3409
                call    CP_STREAMS
3410
                ex      de,hl
3411
                ld      hl,(PROG)
3412
                ld      bc,(CHANS)
3413
                sbc     hl,bc
3414
                ex      de,hl
3415
                ld      (hl),e
3416
                inc     hl
3417
                ld      (hl),d
3418
                call    CREATE_HEADCHAN
3419
                ld      a,(TRD_5D09)
3420
                cp      0xa5
3421
                call    z,INITFREEACCESS
3422
                jr      z,loc_226B
3423
                ld      a,(TRD_5D09)
3424
                cp      "R"
3425
                ld      a,0xff
3426
                jr      nz,loc_226B
3427
                xor     a
3428
loc_226B        ld      (hl),a
3429
                pop     af
3430
                jp      loc_2270
623 savelij 3431
 
761 savelij 3432
loc_2270        push    af
3433
                ld      bc,0x14
3434
                add     hl,bc
3435
                push    hl
3436
                call    GET_TEKSECFILE
3437
                pop     hl
3438
                inc     hl
3439
                ld      b,1
3440
                pop     af
3441
                or      a
3442
                push    af
3443
                call    nz,COM_06
3444
                pop     af
3445
                call    z,COM_05                        ;  
678 savelij 3446
                ret
623 savelij 3447
 
761 savelij 3448
CREATE_BLOCK0   ld      hl,(TRD_5CD7)                   ;     - 
3449
                                                        ;    
3450
                push    hl
3451
                ld      hl,0x2000
3452
                ld      (TRD_5CD7),hl                   ;     - 
3453
                                                        ;    
3454
                call    CREATE_BLOCK
3455
                pop     hl
3456
                ld      (TRD_5CD7),hl                   ;     - 
3457
                                                        ;    
678 savelij 3458
                ret
623 savelij 3459
 
761 savelij 3460
CREATE_BLOCK    ld      hl,0x1000
3461
                ld      (TRD_5CD9),hl                   ;    <B>  <C>
3462
                call    CP_FREE_ON_DSK
3463
                call    SAVE_FILE
3464
                ld      hl,0
3465
                ld      (TRD_5CE8),hl                   ;  
3466
                call    SETHEADFILENAME
3467
                jp      REWRITE_9SEC                    ;  9 
623 savelij 3468
 
761 savelij 3469
CREATE_HEADCHAN ld      hl,(PROG)
3470
                dec     hl
3471
                ld      (CURCHL),hl
3472
                push    hl
3473
                ld      bc,0x124
3474
                call    RESERV_RAM
3475
                ld      a,0
3476
                ld      b,0
3477
loc_22C4        ld      (de),a
3478
                dec     de
3479
                djnz    loc_22C4
3480
                pop     hl
3481
                push    hl
3482
                ld      de,loc_3D0E
3483
                ld      (hl),e
3484
                inc     hl
3485
                ld      (hl),d
3486
                inc     hl
3487
                ld      de,loc_3D06
3488
                ld      (hl),e
3489
                inc     hl
3490
                ld      (hl),d
3491
                inc     hl
3492
                ld      (hl),"D"
3493
                inc     hl
3494
                inc     hl
3495
                inc     hl
3496
                inc     hl
3497
                inc     hl
3498
                ld      (hl),"$"
3499
                inc     hl
3500
                ld      (hl),1
3501
                inc     hl
3502
                ld      a,(TRD_5CF6)                    ;    
3503
                ld      (hl),a
3504
                inc     hl
3505
                ld      a,(TRD_5D1E)
3506
                ld      (hl),a
3507
                inc     hl
3508
                ld      a,(TRD_5D09)
3509
                cp      "R"
3510
                ld      (hl),0
3511
                jr      z,loc_22FC
3512
                ld      a,(TRD_5CE8)                    ;  
3513
                ld      (hl),a
3514
loc_22FC        inc     hl
3515
                ld      (hl),b
3516
                jr      z,loc_2304
3517
                ld      a,(TRD_5CE9)                    ;  
3518
                ld      (hl),a
3519
loc_2304        inc     hl
3520
                ex      de,hl
3521
                pop     hl
3522
                push    de
3523
                ld      de,0x10
3524
                add     hl,de
3525
                ex      de,hl
3526
                ld      hl,TRD_5CDD                     ;  
3527
                ld      bc,0x10
3528
        IF EMU
678 savelij 3529
                IF EMU3D2F=1
623 savelij 3530
                JP EMU_LDIR_RHL
678 savelij 3531
                ELSE
3532
                ldir
761 savelij 3533
                pop     hl
678 savelij 3534
                ENDIF
761 savelij 3535
        ELSE
3536
                ldir
3537
                pop     hl
3538
        ENDIF
678 savelij 3539
                ret
623 savelij 3540
 
761 savelij 3541
GET_ADRTEKSYM   ld      c,0x0d
3542
                rst     0x28
3543
                ld      c,(hl)
3544
                rst     0x28
3545
                ld      bc,0x24
3546
                add     hl,bc
678 savelij 3547
                ret
623 savelij 3548
 
761 savelij 3549
GET_ADRTEKFRG   ld      c,0x24
3550
ADR_OPEN_CHAN   ld      b,0
3551
                ld      hl,(CURCHL)
3552
                add     hl,bc
678 savelij 3553
                ret
623 savelij 3554
 
761 savelij 3555
CP_ENDOFSECTOR  ld      c,0x0d
3556
                rst     0x28
3557
                inc     (hl)
3558
                ret     nz
3559
                push    hl
3560
                call    SET_DISK
3561
                call    SAVE_TEKSECTOR                  ;   
3562
                pop     hl
3563
                inc     hl
3564
                inc     (hl)
3565
                push    hl
3566
                call    LOADINGSECTOR
3567
                pop     hl
3568
                ld      a,0x10
3569
                cp      (hl)
3570
                ret     nz
3571
                push    hl
3572
                ld      c,0x0f
3573
                rst     0x28
3574
                ld      a,(hl)
3575
                cp      0x7f
3576
                pop     hl
3577
                jr      z,loc_2358
3578
                ld      hl,(CURCHL)
3579
                call    SAVE_HEAD_BLK
3580
                ld      c,0x0e
3581
                rst     0x28
3582
                jp      loc_2379
623 savelij 3583
 
761 savelij 3584
loc_2358        call    FIND_NEXT_BLK
3585
                push    af
3586
                call    z,LOADINGSECTOR
3587
                ld      c,0x0e
3588
                rst     0x28
3589
                pop     af
3590
                call    nz,CREATE_NEWBLOCK
678 savelij 3591
                ret
623 savelij 3592
 
761 savelij 3593
sub_2367        ld      (hl),0
3594
                ld      c,0x19
3595
                rst     0x28
3596
                ld      d,0x20
3597
                ld      e,(hl)
678 savelij 3598
                ret
623 savelij 3599
 
761 savelij 3600
CREATE_NEWBLOCK call    sub_2367
3601
                ld      (TRD_5CD7),de                   ;     - 
3602
                                                        ;    
3603
                jr      CREATE_BLK
623 savelij 3604
 
761 savelij 3605
loc_2379        call    sub_2367
3606
                inc     e
3607
                ld      (TRD_5CD7),de                   ;     - 
3608
                                                        ;    
3609
CREATE_BLK      call    CREATE_BLOCK
3610
                call    DEL_BUF
3611
                ld      c,0x10
3612
                rst     0x28
3613
                ex      de,hl
3614
                ld      hl,TRD_5CDD                     ;  
3615
                ld      bc,0x10
678 savelij 3616
                ldir
761 savelij 3617
                ld      c,0x0c
3618
                rst     0x28
3619
                ld      a,(TRD_5D1E)
3620
                ld      (hl),a
678 savelij 3621
                ret
623 savelij 3622
 
761 savelij 3623
FIND_END_SEC    ld      c,0x0d
3624
                rst     0x28
3625
                inc     (hl)
3626
                ret     nz
3627
                inc     hl
3628
                inc     (hl)
3629
                push    hl
3630
                call    SET_DISK
3631
                ld      c,0x23
3632
                rst     0x28
3633
                ld      a,(hl)
3634
                or      a
3635
                jr      z,loc_23B6
3636
                pop     hl
3637
                push    hl
3638
                dec     (hl)
3639
                call    SAVE_TEKSECTOR                  ;   
3640
                pop     hl
3641
                push    hl
3642
                inc     (hl)
3643
loc_23B6        call    LOADINGSECTOR
3644
                pop     hl
3645
                ld      a,0x10
3646
                cp      (hl)
3647
                call    z,OPEN_NEXT_BLK
678 savelij 3648
                ret
623 savelij 3649
 
761 savelij 3650
OPEN_NEXT_BLK   call    FIND_NEXT_BLK
3651
                push    af
3652
                call    DEL_BUF
3653
                pop     af
3654
                jp      nz,ERR_ENDOFFILE
3655
                jp      LOADINGSECTOR
623 savelij 3656
 
761 savelij 3657
FIND_NEXT_BLK   ld      (hl),0
3658
                ld      c,0x19
3659
                rst     0x28
3660
                inc     (hl)
3661
                ld      c,0x10
3662
                rst     0x28
3663
                ld      de,TRD_5CDD                     ;  
3664
                ld      bc,0x10
678 savelij 3665
                ldir
761 savelij 3666
                call    FIND_FILENAME                   ;     
3667
                ret     nz
3668
OPEN_BLK        call    RDHEAD_FILENAME                 ;   
3669
                ld      c,0x10
3670
                rst     0x28
3671
                ex      de,hl
3672
                ld      hl,TRD_5CDD                     ;  
3673
                ld      bc,0x10
678 savelij 3674
                ldir
761 savelij 3675
                ld      c,0x0c
3676
                rst     0x28
3677
                ld      a,(TRD_5D1E)
3678
                ld      (hl),a
3679
                xor     a
678 savelij 3680
                ret
623 savelij 3681
 
3682
;   
761 savelij 3683
SAVE_TEKSECTOR  call    GET_TEKSECFILE
3684
                call    GET_ADRTEKFRG
3685
                ld      b,1
3686
                call    COM_06
3687
                ld      c,0x0f
3688
                rst     0x28
3689
                ld      a,(hl)
3690
                cp      0x7f
3691
                ret     z
3692
                call    GET_ADRTEKFRG
3693
                xor     a
3694
                ld      b,a
3695
loc_2413        ld      (hl),a
3696
                inc     hl
3697
                djnz    loc_2413
678 savelij 3698
                ret
623 savelij 3699
 
761 savelij 3700
LOADINGSECTOR   call    GET_TEKSECFILE
3701
                call    GET_ADRTEKFRG
3702
                ld      b,1
3703
                jp      COM_05                          ;  
623 savelij 3704
 
761 savelij 3705
GET_TEKSECFILE  ld      hl,(CURCHL)
3706
                ld      bc,0x1e
3707
                add     hl,bc
3708
                ld      e,(hl)
3709
                inc     hl
3710
                ld      d,(hl)
3711
                ld      c,0x0e
3712
                rst     0x28
3713
                ld      b,(hl)
3714
                dec     b
3715
                inc     b
3716
                push    af
3717
                ld      a,0x10
3718
                jr      z,loc_2441
3719
loc_2438        inc     e
3720
                cp      e
3721
                jr      nz,loc_243F
3722
                ld      e,0
3723
                inc     d
3724
loc_243F        djnz    loc_2438
3725
loc_2441        pop     af
678 savelij 3726
                ret
623 savelij 3727
 
761 savelij 3728
SET_DISK        ld      c,0x0b
3729
                rst     0x28
3730
                ld      a,(hl)
3731
                jp      COM_01                          ;   
623 savelij 3732
 
761 savelij 3733
OUT_SYM2FILE    ld      hl,TRD_5CC2                     ;  #C9.    TR-DOS  BASIC
3734
                push    hl
678 savelij 3735
                DUPL 4,0
761 savelij 3736
                push    af
678 savelij 3737
                DUPL 3,0
761 savelij 3738
                ld      a,0x0a
3739
                ld      (TRD_5D06),a                    ;      
3740
                pop     af
3741
                call    WORK4FREEACCESS
3742
                push    af
3743
                call    CP_FILE_OPENED
3744
                jp      z,ERR_INVALID_IO
3745
                pop     af
3746
                call    GET_ADRTEKSYM
3747
                ld      (hl),a
3748
                jp      CP_ENDOFSECTOR
623 savelij 3749
 
761 savelij 3750
CP_END_BLK      ld      c,0x0d
3751
                rst     0x28
3752
                ld      a,(hl)
3753
                ld      bc,0x0e
3754
                add     hl,bc
3755
                cp      (hl)
3756
                ret     nz
3757
                ld      c,0x0e
3758
                rst     0x28
3759
                ld      a,(hl)
3760
                ld      bc,0x0e
3761
                add     hl,bc
3762
                cp      (hl)
3763
                ret     nz
3764
                ld      hl,TRD_5CB6                     ;    INTERFACE1
3765
                ld      a,(hl)
3766
                cp      0xf4
3767
                jr      z,ERR_ENDOFFILE
3768
                bit     4,(hl)
3769
                jr      z,ERR_ENDOFFILE
3770
                or      1
3771
                pop     hl
678 savelij 3772
                ret
623 savelij 3773
 
761 savelij 3774
ERR_ENDOFFILE   ld      a,7
3775
loc_2494        ld      (ERR_NR),a
3776
                call    DELETE_BUF
3777
                rst     0x20
3778
                dw      0x0058
678 savelij 3779
                ret
623 savelij 3780
 
761 savelij 3781
ERR_INVALID_IO  ld      a,0x17
3782
                jr      loc_2494
623 savelij 3783
 
761 savelij 3784
WORK4FREEACCESS ld      d,a
3785
                ld      c,0x0f
3786
                rst     0x28
3787
                ld      a,(hl)
3788
                cp      0x7f
3789
                ld      a,d
3790
                ret     nz
3791
                ld      bc,0x13
3792
                add     hl,bc
3793
                ld      a,(hl)
3794
                or      a
3795
                ld      a,d
3796
                jr      nz,loc_24D5
3797
                dec     hl
3798
                ld      a,(hl)
3799
                or      a
3800
                jr      nz,loc_24C2
3801
                push    bc
3802
                push    hl
3803
                push    de
3804
                call    W16B2WORKSP
3805
                pop     de
3806
                pop     hl
3807
                pop     bc
3808
loc_24C2        ld      c,(hl)
3809
                ld      a,d
3810
                ex      de,hl
3811
                ld      hl,(TRD_5CCF)                   ;   WORK_SP
3812
                add     hl,bc
3813
                cp      6
3814
                ld      (hl),a
3815
                call    z,WORK_NUMSAVE
3816
                ld      c,0x21
3817
                rst     0x28
3818
                inc     (hl)
3819
                pop     hl
678 savelij 3820
                ret
623 savelij 3821
 
761 savelij 3822
loc_24D5        dec     hl
3823
                ld      a,(hl)
3824
                dec     hl
3825
                inc     a
3826
                cp      (hl)
3827
                inc     hl
3828
                inc     (hl)
3829
                push    hl
3830
                push    af
3831
                ld      c,0x23
3832
                rst     0x28
3833
                ld      (hl),0xff
3834
                pop     af
3835
                pop     hl
3836
                jr      c,loc_24EE
3837
                ld      a,d
3838
                cp      0x0d
3839
                jr      z,loc_24F2
3840
                pop     bc
678 savelij 3841
                ret
623 savelij 3842
 
761 savelij 3843
loc_24EE        ld      a,d
3844
                cp      0x0d
3845
                ret     nz
3846
loc_24F2        xor     a
3847
                ld      (hl),a
3848
                inc     hl
3849
                ld      (hl),a
3850
                ld      a,d
678 savelij 3851
                ret
623 savelij 3852
 
761 savelij 3853
W16B2WORKSP     ld      hl,(WORKSP)
3854
                ld      (TRD_5CCF),hl                   ;   WORK_SP
3855
                ld      bc,0x10
3856
                jp      CREATE_FREERAM
623 savelij 3857
 
761 savelij 3858
WORK_NUMSAVE    ld      (hl),0x0d
3859
                ld      hl,(CH_ADD)
3860
                ld      (TRD_5CD7),hl                   ;     - 
3861
                                                        ;    
3862
                ld      hl,(TRD_5CCF)                   ;   WORK_SP
3863
                ld      (CH_ADD),hl
3864
                ld      hl,FLAGS
3865
                res     7,(hl)
3866
                call    BC2STKBOT
3867
                ld      hl,FLAGS
3868
                set     7,(hl)
3869
                ld      hl,(TRD_5CCF)                   ;   WORK_SP
3870
                ld      (CH_ADD),hl
3871
                call    BC2STKBOT
3872
                call    FIND_LAST
3873
                push    bc
3874
                pop     de
3875
                ld      c,0x20
3876
                rst     0x28
3877
                ld      b,(hl)
3878
                xor     a
3879
                ld      hl,0
3880
                ld      (TRD_5CDB),hl
3881
loc_2538        add     hl,de
3882
                jr      nc,loc_2544
3883
                push    hl
3884
                ld      hl,(TRD_5CDB)
3885
                inc     hl
3886
                ld      (TRD_5CDB),HL
3887
                pop     hl
3888
loc_2544        djnz    loc_2538
3889
                ld      (TRD_5CD9),HL                   ;    <B>  <C>
3890
                ld      a,(TRD_5CDB)
3891
                ld      hl,TRD_5CDA
678 savelij 3892
                rrd
761 savelij 3893
                and     0x0f
3894
                ld      (TRD_5CDB),a
3895
                ld      hl,(TRD_5CD7)                   ;     - 
3896
                                                        ;    
3897
                ld      (CH_ADD),hl
3898
                call    OPEN_SAVED
3899
                ld      c,0x21
3900
                rst     0x28
3901
                ld      a,0xff
3902
                ld      (hl),a
3903
                inc     hl
3904
                ld      (hl),a
678 savelij 3905
                ret
623 savelij 3906
 
761 savelij 3907
OPEN_SAVED      ld      c,0x19
3908
                rst     0x28
3909
                ld      a,(TRD_5CDA)
3910
                cp      (hl)
3911
                jp      nz,loc_2584
3912
                ld      c,0x0e
3913
                rst     0x28
3914
                ld      a,(TRD_5CDB)
3915
                cp      (hl)
3916
                jp      nz,loc_25A7
3917
loc_257C        ld      c,0x0d
3918
                rst     0x28
3919
                ld      a,(TRD_5CD9)                    ;    <B>  <C>
3920
                ld      (hl),a
678 savelij 3921
                ret
623 savelij 3922
 
761 savelij 3923
loc_2584        call    CPANDZERO23
3924
                call    nz,SAVE_TEK_SEC
3925
                ld      a,(TRD_5CDA)
3926
                ld      c,0x19
3927
                rst     0x28
3928
                ld      (hl),a
3929
                ld      c,0x10
3930
                rst     0x28
3931
                ld      de,TRD_5CDD                     ;  
3932
                ld      bc,0x10
678 savelij 3933
                ldir
761 savelij 3934
                call    FIND_FILENAME                   ;     
3935
                jp      nz,loc_25D2
3936
                call    OPEN_BLK
3937
                jr      loc_25AD
623 savelij 3938
 
761 savelij 3939
loc_25A7        call    CPANDZERO23
3940
                call    nz,SAVE_TEK_SEC
3941
loc_25AD        ld      a,(TRD_5CDB)
3942
                ld      c,0x0e
3943
                rst     0x28
3944
                ld      (hl),a
3945
                push    hl
3946
                call    SET_DISK
3947
                call    LOADINGSECTOR
3948
                pop     hl
3949
                dec     hl
3950
                ld      a,(TRD_5CD9)                    ;    <B>  <C>
3951
                ld      (hl),a
3952
                jr      loc_257C
623 savelij 3953
 
761 savelij 3954
SAVE_TEK_SEC    call    SET_DISK
3955
                call    SAVE_TEKSECTOR                  ;   
678 savelij 3956
                ret
623 savelij 3957
 
761 savelij 3958
CPANDZERO23     ld      c,0x23
3959
                rst     0x28
3960
                ld      a,(hl)
3961
                or      a
3962
                ld      (hl),0
678 savelij 3963
                ret
623 savelij 3964
 
761 savelij 3965
loc_25D2        ld      hl,(TRD_5CDA)
3966
                ld      h,0x20
3967
                ld      (TRD_5CD7),hl                   ;     - 
3968
                                                        ;    
3969
                ld      hl,(TRD_5CD9)                   ;    <B>  <C>
3970
                push    hl
3971
                ld      hl,(TRD_5CDB)
3972
                push    hl
3973
                call    CREATE_BLK
3974
                pop     hl
3975
                ld      (TRD_5CDB),hl
3976
                pop     hl
3977
                ld      (TRD_5CD9),hl                   ;    <B>  <C>
3978
                jr      loc_25AD
623 savelij 3979
 
678 savelij 3980
INPUTDATAFILE   DUPL 3,0
761 savelij 3981
                ld      hl,TV_FLAG
3982
                res     3,(hl)
3983
                ld      hl,(ERR_SP)
3984
                ld      e,(hl)
3985
                inc     hl
3986
                ld      d,(hl)
3987
                or      a
3988
                ld      hl,0x107F
3989
                sbc     hl,de
3990
                jr      nz,loc_2626
3991
                ld      sp,(ERR_SP)
3992
                pop     de
3993
                pop     de
3994
                ld      (ERR_SP),de
3995
loc_260F        call    INPUT_SYM_FILE
3996
                jr      c,loc_261D
3997
loc_2614        ld      hl,TRD_5CC2                     ;  #C9.    TR-DOS  BASIC
3998
                push    hl
3999
                ld      hl,DELETE_BUF
4000
                push    hl
678 savelij 4001
                ret
623 savelij 4002
 
761 savelij 4003
loc_261D        cp      0x0d
4004
                jr      z,loc_2614
4005
                rst     0x20
4006
                dw      0x0f85
4007
                jr      loc_260F
623 savelij 4008
 
761 savelij 4009
loc_2626        call    INPUT_SYM_FILE
4010
                jr      loc_2614
623 savelij 4011
 
761 savelij 4012
INPUT_SYM_FILE  ld      a,0x0a
4013
                ld      (TRD_5D06),a                    ;      
4014
                call    CP_FILE_OPENED
4015
                jr      z,loc_2642
4016
                cp      0x7f
4017
                jp      nz,ERR_INVALID_IO
4018
                ld      bc,0x13
4019
                add     hl,bc
4020
                ld      (hl),0
4021
                jr      loc_2645
623 savelij 4022
 
761 savelij 4023
loc_2642        call    CP_END_BLK
4024
loc_2645        call    GET_ADRTEKSYM
4025
                ld      a,(hl)
4026
                push    af
4027
                call    FIND_END_SEC
4028
                pop     af
678 savelij 4029
                scf
4030
                ret
623 savelij 4031
 
761 savelij 4032
CP_FILE_OPENED  ld      c,0x0f
4033
                rst     0x28
4034
                ld      a,(hl)
4035
                or      a
678 savelij 4036
                ret
623 savelij 4037
 
761 savelij 4038
CLOSE           ld      hl,(TRD_5D11)                   ;    TR_DOS
4039
                ld      (CH_ADD),hl
4040
                call    SET_NUM_CHAN
4041
                call    EXIT_IF_SINTAX
4042
                ld      a,(TRD_5CDB)
4043
                rst     0x20
4044
                dw      0x1727
4045
                ld      a,b
4046
                or      c
4047
                jp      z,END_COMAND
4048
                push    hl
4049
                ld      hl,(CHANS)
4050
                add     hl,bc
4051
                ld      a,(hl)
4052
                ld      hl,loc_3D0E
4053
                cp      h
4054
                pop     hl
4055
                jp      nz,loc_2228
4056
                ld      (hl),0
4057
                inc     hl
4058
                ld      (hl),0
4059
                ld      (TRD_5CD9),bc                   ;    <B>  <C>
4060
                ld      hl,(CHANS)
4061
                add     hl,bc
4062
                dec     hl
4063
                ld      (TRD_5CD7),hl                   ;     - 
4064
                                                        ;    
4065
                call    sub_26CE
4066
                ld      hl,(TRD_5CD7)                   ;     - 
4067
                                                        ;    
4068
                ld      bc,0x124
4069
                call    DEL_WORKRAM
4070
                ld      hl,STRMS
4071
                ld      b,0x10
4072
loc_269D        push    bc
4073
                ld      bc,(TRD_5CD9)                   ;    <B>  <C>
4074
                ld      e,(hl)
4075
                inc     hl
4076
                ld      d,(hl)
4077
                ex      de,hl
4078
                sbc     hl,bc
4079
                ex      de,hl
4080
                jr      c,loc_26BC
4081
                ld      d,(hl)
4082
                dec     hl
4083
                ld      e,(hl)
4084
                inc     hl
4085
                push    hl
4086
                ex      de,hl
4087
                ld      bc,0x124
4088
                sbc     hl,bc
4089
                ex      de,hl
4090
                pop     hl
4091
                ld      (hl),d
4092
                dec     hl
4093
                ld      (hl),e
4094
                inc     hl
4095
loc_26BC        inc     hl
4096
                pop     bc
4097
                djnz    loc_269D
4098
                ld      hl,(TRD_5D11)                   ;    TR_DOS
4099
                ld      bc,0x124
4100
                sbc     hl,bc
4101
                ld      (TRD_5D11),hl                   ;    TR_DOS
4102
                jp      END_COMAND
623 savelij 4103
 
761 savelij 4104
sub_26CE        ld      bc,0x0f
4105
                add     hl,bc
4106
                ld      a,(hl)
4107
                or      a
4108
                ret     z
4109
                ld      hl,(TRD_5CD7)                   ;     - 
4110
                                                        ;    
4111
                ld      (CURCHL),hl
4112
                call    SAVE_HEAD_BLK
4113
                jp      SAVE_TEKSECTOR                  ;   
623 savelij 4114
 
761 savelij 4115
SAVE_HEAD_BLK   ld      bc,0x0d
4116
                add     hl,bc
4117
                ld      e,(hl)
4118
                inc     hl
4119
                ld      d,(hl)
4120
                ld      bc,0x0d
4121
                add     hl,bc
4122
                ld      (hl),e
4123
                inc     hl
4124
                ld      (hl),d
4125
                ld      c,0x10
4126
                rst     0x28
4127
                ld      de,TRD_5CDD                     ;  
4128
                ld      bc,0x10
678 savelij 4129
                ldir
761 savelij 4130
                call    SET_DISK
4131
                ld      c,0x0c
4132
                rst     0x28
4133
                ld      c,(hl)
4134
                call    SETHEADFILENAME
4135
                jp      REWRITE_9SEC                    ;  9 
623 savelij 4136
 
761 savelij 4137
PRINT_MSG       ld      a,(hl)
4138
                or      a
4139
                ret     z
4140
                and     0x7f
4141
                rst     0x10
4142
                bit     7,(hl)
4143
                ret     nz
4144
                inc     hl
4145
                jr      PRINT_MSG                       ;   
623 savelij 4146
 
761 savelij 4147
COMPARE_B_SYM   ld      a,(de)
4148
                cp      (hl)
4149
                ret     nz
4150
                inc     de
4151
                inc     hl
4152
                djnz    COMPARE_B_SYM
678 savelij 4153
                ret
623 savelij 4154
 
761 savelij 4155
loc_271B        ld      hl,TXT_NODISK_                  ; "NO DISK"
4156
                ld      a,6
4157
                jp      PRINT_TXTERR
623 savelij 4158
 
761 savelij 4159
ERR_DIRFULL     ld      hl,TXT_DIRFULL                  ; "DIRECTORY FULL"
4160
                ld      a,4
4161
                jp      PRINT_TXTERR
623 savelij 4162
 
761 savelij 4163
SET_TAPELDERR   ld      a,0x1a
4164
                jr      SET_NUM_ERR
623 savelij 4165
 
761 savelij 4166
                ld      a,0x12
4167
SET_NUM_ERR     ld      (ERR_NR),a
678 savelij 4168
                ret
4169
 
761 savelij 4170
                ld      a,3
4171
                jr      SET_NUM_ERR
678 savelij 4172
 
623 savelij 4173
; 
761 savelij 4174
COM_15          xor     a
4175
                ld      (TRD_5CD8),a                    ;     - 
4176
                                                        ;    
4177
                ld      (TRD_5CD6),a                    ; #FF-   
4178
        IF EMU
678 savelij 4179
                RST32 _IN_1F,__IN_A_N+0X1F<<8
761 savelij 4180
        ELSE
4181
                in      a,(0x1f)
4182
        ENDIF
4183
                ld      (TRD_5CCD),a                    ; #80- 
4184
                ld      e,d
4185
                push    de
4186
                ld      a,e
4187
        IF EMU
678 savelij 4188
                RST32 _OUT_7F,__OUT_N_A+0X7F<<8
761 savelij 4189
        ELSE
4190
                out     (0x7f),a
4191
        ENDIF
4192
                ld      a,0x18
4193
                call    COM2VG_WAIT
4194
                ld      a,(TRD_5CCD)                    ; #80- 
4195
                and     0x80
4196
                call    nz,PAUSE_3_C_A
4197
                pop     de
4198
                call    CP_NUM_TRACK
4199
                ld      a,(TRD_5CD6)                    ; #FF-   
4200
                or      a
4201
                ret     z
4202
                ld      a,7
4203
                ld      (TRD_5D0F),a                    ;   TR-DOS
678 savelij 4204
                ret
623 savelij 4205
 
678 savelij 4206
TXT_OK_         DZ "O.K."
4207
TXT_VERIFYERR   DB "Verify Error.",0X8D
4208
TXT_BACKUPDISK  DB "BACKUP DISK",0X8D
4209
TXT_INS_DEST    DB "Insert Destination disk",0X0D
4210
                DZ "then press Y"
4211
TXT_INS_SRC     DZ "Insert Source disk then press Y"
4212
TXT_BREAK       DB "*BREAK*",0X8D
4213
TXT_OUTRAM      DB "Out of RAM",0X8D
4214
TXT_ARRAYNOT    DB "Array not found",0X8D
4215
TXT_DIRFULL     DB "Directory full",0X8D
623 savelij 4216
TXT_NODISK_     DB "No disk",0X8D
678 savelij 4217
TXT_STREAMOPEN  DB "Stream opened",0X8D
4218
TXT_NODISKFILE  DB "Not disk file",0X8D
4219
TXT_FILEEXIST   DB "File exists",0X0D
623 savelij 4220
                DC "Over write?(Y/N)"
4221
 
761 savelij 4222
CALL_3D13       push    af
4223
                push    bc
4224
                ld      (TRD_5D04),de
4225
                ld      (TRD_5D02),hl
888 savelij 4226
;               CALL SET_RWPORT0
627 savelij 4227
                LD A,0XFF
761 savelij 4228
                LD (TRD_5D15),A                         ;  0,  TR-DOS.  
627 savelij 4229
                LD (TRD_5D1F),A
761 savelij 4230
                pop     bc
4231
                pop     af
4232
                ld      hl,CP_ERROR                     ;   
4233
                ld      (TRD_5D1A),hl                   ;     
4234
                ld      hl,0
4235
                add     hl,sp
4236
                ld      (TRD_5D1C),hl                   ;   
4237
                dec     hl
4238
                dec     hl
4239
                ld      sp,hl
4240
                push    af
4241
                call    MARK_SP                         ;     
4242
                ld      hl,COMAND_TBL
623 savelij 4243
                LD A,C
4244
                CP LOW ((ECOMAND_TBL-COMAND_TBL)/2)+1
4245
                JP NC,END_COMAND
4246
                ADD A,A
4247
                LD E,A
4248
                POP AF
4249
                LD D,0
4250
                ADD HL,DE
4251
                LD E,(HL)
4252
                INC HL
4253
                LD D,(HL)
4254
                LD HL,END_COMAND
4255
                PUSH HL
4256
                PUSH DE
4257
                LD HL,(TRD_5D02)
4258
                LD DE,(TRD_5D04)
4259
                RET
4260
 
761 savelij 4261
COMAND_TBL      DW COM_00                               ; 93
4262
                DW COM_01                               ;  
4263
                DW COM_02                               ;   
4264
                DW COM_03                               ;  
4265
                DW COM_04                               ;  
4266
                DW COM_05                               ; 
4267
                DW COM_06                               ; 
4268
                DW COM_07                               ;   
4269
                DW COM_08                               ;    0X5CDD
4270
                DW COM_09                               ;    
4271
                DW COM_0A                               ;     
4272
                DW COM_0B                               ;    
4273
                DW COM_0C                               ;    
623 savelij 4274
                DW END_COMAND
761 savelij 4275
                DW COM_0E                               ;   
623 savelij 4276
                DW END_COMAND
4277
                DW END_COMAND
4278
                DW END_COMAND
761 savelij 4279
                DW COM_12                               ; 
4280
                DW COM_13                               ;     0X5CDD
4281
                DW COM_14                               ;     0X5CDD
4282
                DW COM_15                               ; 
4283
                DW COM_16                               ;  0 
4284
                DW COM_17                               ;  1 
4285
                DW COM_18                               ;  
623 savelij 4286
ECOMAND_TBL
4287
 
678 savelij 4288
                DUPL 0X28D8-$,0XFF
623 savelij 4289
;   
761 savelij 4290
COM_07          push    af
4291
                call    COM_18                          ;   
4292
                pop     af
4293
                jp      loc_479
623 savelij 4294
 
4295
;     0X5CDD
761 savelij 4296
COM_13          xor     a
4297
                jr      loc_28E5
623 savelij 4298
 
4299
;     0X5CDD
761 savelij 4300
COM_14          ld      a,0xff
4301
loc_28E5        ld      de,TRD_5CDD                     ;  
4302
                ld      bc,0x10
4303
                or      a
4304
                jr      z,loc_28EF
4305
                ex      de,hl
4306
loc_28EF
4307
        IF EMU
4308
                IF EMU3D2F=1
678 savelij 4309
                JP EMU_LDIR
4310
                ELSE
4311
                ldir
4312
                ret
4313
                ENDIF
761 savelij 4314
        ELSE
4315
                ldir
4316
                ret
4317
        ENDIF
623 savelij 4318
 
4319
;    
761 savelij 4320
COM_0C          call    COM_18                          ;   
4321
                call    CP_FREE_ON_DSK
4322
                jp      loc_1B27
623 savelij 4323
 
4324
;    
761 savelij 4325
COM_0B          ld      (TRD_5CD7),hl                   ;     - 
4326
                                                        ;    
4327
                ld      (TRD_5CD9),de                   ;    <B>  <C>
4328
                ld      (TRD_5CDB),de
4329
                call    COM_18                          ;   
4330
                call    CP_FREE_ON_DSK
4331
                jp      loc_1B53
623 savelij 4332
 
4333
;   
761 savelij 4334
COM_0E          or      a
4335
                ld      (TRD_5CD6),a                    ; #FF-   
4336
                ld      (TRD_5CD9),hl                   ;    <B>  <C>
4337
                ld      (TRD_5CDB),de
4338
                call    FIND_FILENAME                   ;     
4339
                call    FIND_RD_HEAD
4340
                call    CP_PARAMS                       ;WDC
4341
                jp      RD_FILE
623 savelij 4342
 
4343
; 
761 savelij 4344
COM_12          call    COM_18                          ;   
4345
                call    FIND_FILENAME                   ;     
4346
                jp      ERASE_FILES
623 savelij 4347
 
4348
;    
761 savelij 4349
FIND_FILE       call    SET_FILENAME
4350
                call    COM_18                          ;   
4351
                jp      FIND_FILENAME                   ;     
623 savelij 4352
 
678 savelij 4353
;   
761 savelij 4354
PRINT_FILENAME  push    bc
4355
                ld      b,8
4356
loc_293B        ld      a,(hl)
4357
                rst     0x10
4358
                inc     hl
4359
                djnz    loc_293B
4360
                ld      a,"<"
4361
                rst     0x10
4362
                ld      a,(hl)
4363
                rst     0x10
4364
                ld      a,">"
4365
                rst     0x10
4366
                pop     bc
678 savelij 4367
                ret
4368
 
623 savelij 4369
;  
761 savelij 4370
CREATE_BUF      push    hl
4371
                push    de
4372
                push    bc
4373
                push    af
4374
                ld      hl,TRD_5D0C
4375
                ld      a,(hl)
4376
                or      a
4377
                jr      z,loc_2992
4378
                push    hl
4379
                ld      bc,0x101
4380
                push    bc
4381
                call    CP_FREE_RAM
4382
                pop     bc
4383
                pop     hl
4384
                ld      (hl),0
4385
                ld      hl,TRD_5D25
4386
                call    RESERV_RAM
4387
                ld      hl,(TRD_5D11)                   ;    TR_DOS
4388
                ld      bc,0x101
4389
                add     hl,bc
4390
                jr      loc_298F
623 savelij 4391
 
678 savelij 4392
;  ,   
761 savelij 4393
DEL_BUF         push    hl
4394
                push    de
4395
                push    bc
4396
                push    af
4397
                ld      hl,TRD_5D0C
4398
                ld      a,(hl)
4399
                or      a
4400
                jr      nz,loc_2992
4401
                ld      (hl),0xff
4402
                ld      hl,TRD_5D25
4403
                ld      bc,0x101
4404
                call    DEL_WORKRAM
4405
                or      a
4406
                ld      bc,0x101
4407
                ld      hl,(TRD_5D11)                   ;    TR_DOS
4408
                sbc     hl,bc
4409
loc_298F        ld      (TRD_5D11),hl                   ;    TR_DOS
4410
loc_2992        pop     af
4411
                pop     bc
4412
                pop     de
4413
                pop     hl
678 savelij 4414
                ret
623 savelij 4415
 
761 savelij 4416
COM_40          xor     a
4417
loc_2998        ld      (TRD_5CD7),a                    ;     - 
4418
                                                        ;    
4419
                call    EXIT_IF_SINTAX                  ;    ,  
4420
                call    CP_SECOND_SYM                   ;   
4421
                jp      z,SINTAX_ERROR
4422
                call    GET_TYPE_DISK                   ;     
4423
                ld      a,(TRD_5CD7)                    ;     - 
4424
                                                        ;    
4425
                ld      (hl),a
4426
                jp      ERR_OK
678 savelij 4427
 
761 savelij 4428
COM_80          ld      a,80h
4429
                jr      loc_2998
678 savelij 4430
 
623 savelij 4431
TXT_ERROR_      DB 0X0D,"*ERROR*",0X8D
678 savelij 4432
TXT_NOSPACE_    DB 0X0D,"No space",0X8D
623 savelij 4433
TXT_FILEEXISTS_ DB 0X0D,"File exists",0X8D
4434
TXT_FREE_       DB " Free",0X8D
4435
READ_ONLY       DB 0X0D
4436
                DC "Read Only"
4437
TXT_DISCERROR_  DB 0X0D
4438
                DC "Disc Error"
4439
TXT_R_O         DB 0X0D
4440
                DC "Rec.  O/F"
4441
TXT_TITLE_      DC "Title: "
4442
TXT_RIA_        DB 0X0D
678 savelij 4443
                DZ "Retry,Abort,Ignore?"
623 savelij 4444
TXT_TRK_        DB 0X0D
4445
                DC "Trk "
4446
TXT_SEC_        DC " sec "
4447
TXT_DELFILE_    DB " Del. File",0X8D
4448
TXT_NOFILES_    DB 0X0D
678 savelij 4449
TXT_NOFILES     DB "No File(s)",0X8D,0
623 savelij 4450
 
761 savelij 4451
sub_2A35        ld      hl,loc_2A41
4452
                ld      de,4080h
4453
                ld      bc,20h
4454
        IF EMU
678 savelij 4455
                IF EMU3D2F=1
627 savelij 4456
                JP EMU_LDIR
678 savelij 4457
                ELSE
4458
                ldir
4459
                ret
4460
                ENDIF
761 savelij 4461
        ELSE
4462
                ldir
4463
                ret
4464
        ENDIF
623 savelij 4465
 
761 savelij 4466
loc_2A41        ld      a,(loc_3B5)
4467
                cp      0F3h
4468
                ld      a,10h
4469
                jr      z,loc_2A4B
4470
                xor     a
4471
loc_2A4B        ld      (KSTATE1),a
4472
                ld      bc,7FFDh
4473
                ld      a,10h
4474
        IF EMU
623 savelij 4475
                JP LOC_2A53_
761 savelij 4476
        ELSE
4477
                out     (c),a
4478
                ret
4479
        ENDIF
623 savelij 4480
 
761 savelij 4481
MAGIC           push    af
4482
                push    bc
4483
                push    de
4484
                push    hl
4485
                push    ix
4486
                push    iy
678 savelij 4487
                exx
761 savelij 4488
                push    bc
4489
                push    de
4490
                push    hl
4491
                ex      af,af'
4492
                push    af
4493
                ld      a,i
4494
                push    af
4495
                ld      a,r
4496
                push    af
4497
                ld      hl,0
4498
                add     hl,sp
4499
                push    hl
4500
                ld      a,3Ch
4501
        IF EMU
678 savelij 4502
                RST30 _OUT_FF
761 savelij 4503
        ELSE
4504
                out     (0FFh),a
4505
        ENDIF
4506
                ld      a,3Fh
4507
                ld      i,a
4508
        IF EMU
678 savelij 4509
                RST32 _IN_1F,__IN_A_N+0X1F<<8
761 savelij 4510
        ELSE
4511
                in      a,(1Fh)
4512
        ENDIF
4513
                and     80h
678 savelij 4514
                rrca
4515
                rrca
4516
                rrca
761 savelij 4517
                ld      (KSTATE1),a
4518
                call    sub_2F65
4519
                call    PAUSE_3_C_A
4520
                call    PAUSE_3_C_A
4521
                ld      de,0Ah
4522
                ld      hl,4000h
4523
                push    hl
4524
                call    sub_2D73
4525
                ld      hl,4100h
4526
                ld      de,0Bh
4527
                call    sub_2D73
4528
                pop     hl
4529
                push    hl
4530
                ld      de,8
4531
                call    sub_2F1B
4532
                ld      hl,40E3h
4533
                ld      a,(hl)
4534
                ld      (KSTATE0),a
4535
                inc     hl
4536
                ld      a,(hl)
4537
                inc     (hl)
4538
                inc     hl
4539
                ld      e,(hl)
4540
                inc     hl
4541
                ld      d,(hl)
4542
                or      a
4543
                ex      de,hl
4544
                ld      de,0C0h
4545
                sbc     hl,de
4546
                ld      (40E5h),hl
4547
                ld      hl,4000h
4548
                ld      de,8
4549
                call    sub_2D73
4550
                pop     hl
4551
                ld      de,(40E1h)
4552
                push    de
4553
                ld      de,0Ah
4554
                call    sub_2F1B
4555
                pop     de
4556
                call    sub_2D4C
4557
                push    de
4558
                ld      a,3Ch
4559
        IF EMU
678 savelij 4560
                RST30 _OUT_FF
761 savelij 4561
        ELSE
4562
                out     (0FFh),a
4563
        ENDIF
4564
                call    sub_2F65
4565
                ld      hl,4000h
4566
                ld      de,8
4567
                ld      b,1
4568
                call    sub_2F1B
4569
                pop     de
4570
                ld      hl,(40E1h)
4571
                ld      (40E1h),de
4572
                push    hl
4573
                ld      hl,4000h
4574
                ld      de,8
4575
                ld      b,1
4576
                call    sub_2D73
4577
                ld      a,(40E4h)
4578
                dec     a
4579
                call    sub_2CE5
4580
                ld      (hl),"@"
4581
                inc     hl
4582
                ld      b,7
4583
loc_2B09        ld      (hl)," "
4584
                inc     hl
4585
                djnz    loc_2B09
4586
                ld      (hl),"C"
4587
                pop     de
4588
                pop     bc
4589
                inc     hl
4590
                ld      (hl),c
4591
                inc     hl
4592
                ld      (hl),b
4593
                inc     hl
4594
                inc     hl
4595
                inc     hl
4596
                ld      (hl),0C0h
4597
                inc     hl
4598
                ld      (hl),e
4599
                inc     hl
4600
                ld      (hl),d
4601
                ld      hl,4000h
4602
                ld      de,0
4603
        IF EMU
678 savelij 4604
                RST32 _IN_5F,__IN_A_N+0X5F<<8
761 savelij 4605
        ELSE
4606
                in      a,(5Fh)
4607
        ENDIF
4608
                dec     a
4609
                ld      e,a
4610
                ld      b,1
4611
                call    sub_2D73
4612
                ld      hl,0
4613
                add     hl,sp
4614
                ld      (4140h),hl
4615
                ld      sp,41FFh
4616
                call    sub_2A35
4617
                ld      hl,0C000h
4618
                xor     a
4619
loc_2B3F        add     a,(hl)
4620
                inc     hl
4621
                ld      b,a
4622
                ld      a,h
4623
                or      a
4624
                ld      a,b
4625
                jr      nz,loc_2B3F
4626
                ld      hl,4100h
4627
                ld      (hl),a
4628
                push    hl
4629
                ld      hl,loc_2B58
4630
                push    hl
4631
                ld      hl,loc_3D2F
4632
                push    hl
678 savelij 4633
                di
761 savelij 4634
                jp      4080h
623 savelij 4635
 
761 savelij 4636
loc_2B58        pop     hl
4637
                ld      bc,7FFDh
4638
                ld      a,0AAh
4639
                ld      (4130h),a
4640
                ld      d,5
4641
                ld      a,(KSTATE1)
4642
                or      d
4643
                ld      d,a
4644
                out     (c),d
4645
                ld      a,(0C130h)
4646
                cp      0AAh
4647
                jp      nz,loc_2C1B
4648
                ld      a,d
4649
                and     0F8h
4650
                ld      d,a
4651
                inc     hl
4652
                ld      b,8
4653
loc_2B79        ld      (hl),d
4654
                out     (c),d
4655
                xor     a
4656
                ld      hl,0C000h
4657
loc_2B80        add     a,(hl)
4658
                inc     hl
4659
                ld      e,a
4660
                ld      a,h
4661
                or      a
4662
                ld      a,e
4663
                jr      nz,loc_2B80
4664
                ld      hl,4100h
4665
                cp      (hl)
4666
                inc     hl
4667
                jr      z,loc_2B93
4668
                inc     d
4669
                djnz    loc_2B79
4670
                dec     d
4671
loc_2B93        ld      b,8
4672
loc_2B95        push    bc
4673
                call    sub_2C37
4674
                pop     bc
4675
                djnz    loc_2B95
4676
                ld      c,0
4677
                call    sub_2F3A
4678
                call    sub_2D2A
4679
                ld      a,(40E4h)
4680
                ld      (4102h),a
4681
                inc     a
4682
                ld      (40E4h),a
4683
                ld      hl,(40E5h)
4684
                ld      de,1
4685
                sbc     hl,de
4686
                ld      (40E5h),hl
4687
                ret     c
4688
                ld      hl,(40E1h)
4689
                ld      (411Eh),hl
4690
                call    sub_2D1E
4691
                ld      a,38h
4692
                ld      (4111h),a
4693
                ld      a,1
4694
                ld      (411Dh),a
4695
                ld      hl,4100h
4696
                ld      (4119h),hl
4697
                ld      hl,100h
4698
                ld      (411Bh),hl
4699
                ld      de,(40E1h)
4700
                call    sub_2F65
4701
                ld      c,d
4702
                call    sub_2F3A
4703
                ld      hl,4100h
4704
                ld      b,1
4705
                call    loc_2D58
4706
                ld      (40E1h),de
4707
                ld      c,0
4708
                call    sub_2F3A
4709
                call    sub_2D34
4710
                ld      a,(4102h)
4711
                call    sub_2CE5
4712
                ld      de,4110h
4713
                ld      bc,10h
4714
                ex      de,hl
678 savelij 4715
                ldir
761 savelij 4716
        IF EMU
678 savelij 4717
                RST32 _IN_5F,__IN_A_N+0X5F<<8
761 savelij 4718
        ELSE
4719
                in      a,(5Fh)
4720
        ENDIF
4721
                dec     a
4722
                ld      e,a
4723
                ld      d,0
4724
                ld      hl,4000h
4725
                call    sub_2D73
4726
                ld      bc,7FFDh
4727
                ld      a,(4101h)
4728
                out     (c),a
4729
loc_2C1B        ld      hl,(4140h)
4730
                ld      sp,hl
4731
                ld      hl,4000h
4732
                ld      de,0Ah
4733
                call    sub_2F1B
4734
                ld      hl,4100h
4735
                ld      de,0Bh
4736
                call    sub_2F1B
4737
                ld      a,3Ch
4738
                push    af
4739
                jp      loc_2EBC
623 savelij 4740
 
761 savelij 4741
sub_2C37        ld      a,b
4742
                dec     a
4743
                ld      (4103h),a
4744
                ld      b,a
4745
                ld      a,(4101h)
4746
                and     7
4747
                cp      b
4748
                ret     z
4749
                ld      a,2
4750
                cp      b
4751
                ret     z
4752
                ld      a,(4101h)
4753
                and     8
4754
                jr      z,loc_2C55
4755
                ld      a,b
4756
                cp      7
4757
                ret     z
4758
                jr      loc_2C59
623 savelij 4759
 
761 savelij 4760
loc_2C55        ld      a,b
4761
                cp      5
4762
                ret     z
4763
loc_2C59        call    sub_2C5D
678 savelij 4764
                ret
623 savelij 4765
 
761 savelij 4766
sub_2C5D        ld      hl,4101h
4767
                ld      a,(hl)
4768
                and     0F8h
4769
                ld      c,a
4770
                ld      a,b
4771
                or      c
4772
                push    bc
4773
                ld      bc,7FFDh
4774
                out     (c),a
4775
                pop     bc
4776
                ld      hl,0C000h
4777
loc_2C70        ld      a,(hl)
4778
                or      a
4779
                jr      nz,loc_2C7A
4780
                inc     hl
4781
                ld      a,h
4782
                or      a
4783
                jr      nz,loc_2C70
678 savelij 4784
                ret
623 savelij 4785
 
761 savelij 4786
loc_2C7A        call    sub_2C7E
678 savelij 4787
                ret
623 savelij 4788
 
761 savelij 4789
sub_2C7E        ld      c,0
4790
                call    sub_2F3A
4791
                call    sub_2D2A
4792
                ld      a,(40E4h)
4793
                ld      (4102h),a
4794
                inc     a
4795
                ld      (40E4h),a
4796
                ld      hl,(40E5h)
4797
                ld      de,40h
4798
                sbc     hl,de
4799
                ld      (40E5h),hl
4800
                ret     c
4801
                ld      hl,(40E1h)
4802
                ld      (411Eh),hl
4803
                call    sub_2D1E
4804
                ld      a,40h
4805
                ld      (411Dh),a
4806
                ld      hl,0C000h
4807
                ld      (4119h),hl
4808
                ld      hl,4000h
4809
                ld      (411Bh),hl
4810
                ld      de,(40E1h)
4811
                call    sub_2D3E
4812
                ld      (40E1h),de
4813
                ld      c,0
4814
                call    sub_2F3A
4815
                call    sub_2D34
4816
                ld      a,(4102h)
4817
                call    sub_2CE5
4818
                ld      de,4110h
4819
                ld      bc,10h
4820
                ex      de,hl
678 savelij 4821
                ldir
761 savelij 4822
        IF EMU
678 savelij 4823
                RST32 _IN_5F,__IN_A_N+0X5F<<8
761 savelij 4824
        ELSE
4825
                in      a,(5Fh)
4826
        ENDIF
4827
                dec     a
4828
                ld      e,a
4829
                ld      d,0
4830
                ld      hl,4000h
4831
                call    sub_2D73
678 savelij 4832
                ret
623 savelij 4833
 
761 savelij 4834
sub_2CE5        ld      c,a
4835
                and     0F0h
678 savelij 4836
                rrca
4837
                rrca
4838
                rrca
4839
                rrca
761 savelij 4840
                ld      b,a
4841
                push    bc
4842
                ld      e,b
4843
                ld      d,0
4844
                ld      hl,4000h
4845
                push    de
4846
                call    sub_2F1B
4847
                pop     de
4848
                pop     bc
4849
                ld      b,0
4850
                ld      a,c
4851
                and     0Fh
678 savelij 4852
                rlca
4853
                rlca
4854
                rlca
4855
                rlca
761 savelij 4856
                ld      hl,4000h
4857
                add     a,l
4858
                ld      l,a
678 savelij 4859
                ret
4860
 
761 savelij 4861
sub_2D09        ld      hl,4110h
4862
                ld      b,9
4863
loc_2D0E        ld      (hl)," "
4864
                inc     hl
4865
                djnz    loc_2D0E
4866
                ld      a,"@"
4867
                ld      (4110h),a
4868
                ld      a,"C"
4869
                ld      (4118h),a
678 savelij 4870
                ret
4871
 
761 savelij 4872
sub_2D1E        call    sub_2D09
4873
                ld      a,(4103h)
4874
                add     a,"0"
4875
                ld      (4111h),a
678 savelij 4876
                ret
4877
 
761 savelij 4878
sub_2D2A        ld      hl,4000h
4879
                ld      de,8
4880
                call    sub_2F1B
678 savelij 4881
                ret
4882
 
761 savelij 4883
sub_2D34        ld      hl,4000h
4884
                ld      de,8
4885
                call    sub_2D73
678 savelij 4886
                ret
4887
 
761 savelij 4888
sub_2D3E        call    sub_2F65
4889
                ld      c,d
4890
                call    sub_2F3A
4891
                ld      hl,0C000h
4892
                ld      b,40h
4893
                jr      loc_2D58
678 savelij 4894
 
761 savelij 4895
sub_2D4C        call    sub_2F65
4896
                ld      c,d
4897
                call    sub_2F3A
4898
                ld      hl,4000h
4899
                ld      b,0C0h
4900
loc_2D58        push    bc
4901
                push    de
4902
                call    sub_2D73
4903
                ld      de,100h
4904
                add     hl,de
4905
                pop     de
4906
                inc     e
4907
                ld      a,e
4908
                cp      10h
4909
                jr      nz,loc_2D6F
4910
                ld      e,0
4911
                inc     d
4912
                ld      c,d
4913
                call    sub_2F3A
4914
loc_2D6F        pop     bc
4915
                djnz    loc_2D58
678 savelij 4916
                ret
4917
 
761 savelij 4918
sub_2D73        ld      a,e
4919
                inc     a
4920
        IF EMU
678 savelij 4921
                RST32 _OUT_5F,__OUT_N_A+0X5F<<8
761 savelij 4922
        ELSE
4923
                out     (5Fh),a
4924
        ENDIF
4925
                push    hl
4926
                ld      d,14h
678 savelij 4927
                push    de
4928
loc_2D7B        di
4929
                ld      c,7Fh
4930
                ld      a,0A0h
761 savelij 4931
        IF EMU
678 savelij 4932
                RST32 _OUT_1F,__OUT_N_A+0X1F<<8
761 savelij 4933
        ELSE
4934
                out     (1Fh),a
4935
        ENDIF
678 savelij 4936
                call    WR_DATAPORT
4937
                pop     de
4938
                pop     hl
761 savelij 4939
        IF EMU
678 savelij 4940
                RST32 _IN_1F,__IN_A_N+0X1F<<8
761 savelij 4941
        ELSE
4942
                in      a,(0x1f)
4943
        ENDIF
4944
                and     0x7f
4945
                ret     z
4946
                dec     d
4947
                push    hl
4948
                push    de
4949
                jr      nz,loc_2D7B
678 savelij 4950
                halt
761 savelij 4951
loc_2D92        ld      hl,(TRD_5CE6)                   ;  <C>- , <B>- 
4952
                ld      de,(TRD_5CEB)                   ;    
4953
                ld      a,(TRD_5CEA)                    ;    
4954
                ld      b,a
4955
                call    COM_05                          ;  
678 savelij 4956
                ret
4957
 
761 savelij 4958
GOTO            call    SET_AND_PUT
4959
                call    EXIT_IF_SINTAX                  ;    ,  
4960
                call    INP_EXTFILENAME                 ;   
4961
                call    SET_FILENAME                    ;       #5CDD
4962
                ld      (4020h),bc
4963
                ld      a,c
4964
                cp      8
4965
                jr      nc,loc_2DD2
4966
                call    COM_18                          ;   
4967
                call    FIND_FILENAME                   ;     
4968
                jp      nz,ERR_NOFILES
4969
                ld      hl,TRD_5CDD                     ;  
4970
                ld      bc,(4020h)
4971
                add     hl,bc
4972
                ld      (hl),"8"
4973
                push    hl
4974
                call    FIND_FILENAME                   ;     
4975
                pop     hl
4976
                jr      z,loc_2DD8
4977
                ld      (hl)," "
4978
loc_2DD2        call    FIND_FILENAME                   ;     
4979
                jp      loc_2E33
678 savelij 4980
 
761 savelij 4981
loc_2DD8        call    RDHEAD_FILENAME                 ;   
4982
                call    loc_2D92
4983
                ld      sp,40FFh
4984
                ld      b,8
4985
loc_2DE3        push    bc
4986
                ld      a,b
4987
                ld      bc,7FFDh
4988
                dec     a
4989
                push    af
4990
                or      10h
4991
                out     (c),a
4992
                pop     af
4993
                add     a,"0"
4994
                ld      hl,TRD_5CDD                     ;  
4995
                ld      bc,(4020h)
4996
                add     hl,bc
4997
                ld      (hl),a
4998
                call    FIND_FILENAME                   ;     
4999
                jr      nz,loc_2E05
5000
                call    RDHEAD_FILENAME                 ;   
5001
                call    loc_2D92
5002
loc_2E05        pop     bc
5003
                djnz    loc_2DE3
5004
                ld      a," "
5005
                ld      hl,TRD_5CDD                     ;  
5006
                ld      bc,(4020h)
5007
                add     hl,bc
5008
                ld      (hl),a
5009
                call    FIND_FILENAME                   ;     
5010
                call    RDHEAD_FILENAME                 ;   
5011
                push    bc
5012
                push    af
5013
                ld      bc,7FFDh
5014
                ld      a,(4101h)
5015
                out     (c),a
5016
                pop     af
5017
                pop     bc
5018
                jr      loc_2E39
678 savelij 5019
 
761 savelij 5020
                call    SET_AND_PUT
5021
                call    EXIT_IF_SINTAX                  ;    ,  
5022
                call    INP_EXTFILENAME                 ;   
5023
                call    FIND_FILE                       ;    
5024
loc_2E33        jp      nz,ERR_NOFILES
5025
                call    RDHEAD_FILENAME                 ;   
5026
loc_2E39        ld      a,(TRD_5CDD)                    ;  
5027
                cp      "$"
678 savelij 5028
                di
761 savelij 5029
                jr      nz,loc_2E43
5030
                im      2
5031
loc_2E43        ld      sp,40F0h
5032
                call    GET_TYPE_DISK                   ;     
5033
                ld      (4010h),a
5034
                ld      a,(TRD_5D16)                    ;    ( #FF)
5035
                ld      (4011h),a
5036
                ld      hl,(TRD_5CE6)                   ;  <C>- , <B>- 
5037
                push    hl
5038
                ld      de,(TRD_5CEB)                   ;    
5039
                push    de
5040
                inc     e
5041
                ld      a,e
5042
                cp      10h
5043
                jr      nz,loc_2E64
5044
                ld      e,0
5045
                inc     d
5046
loc_2E64        ld      c,d
5047
                call    sub_2F07
5048
                ld      a,(4010h)
5049
                and     2
5050
                call    nz,sub_2F0F
5051
                ld      a,c
5052
                call    loc_2F50
5053
                ld      hl,4100h
5054
                ld      b,0BFh
5055
loc_2E79        push    bc
5056
                push    de
5057
                call    sub_2F1B
5058
                ld      de,100h
5059
                add     hl,de
5060
                pop     de
5061
                inc     e
5062
                ld      a,e
5063
                cp      10h
5064
                jr      nz,loc_2E9C
5065
                ld      e,0
5066
                inc     d
5067
                ld      c,d
5068
                call    sub_2F07
5069
                ld      a,(4010h)
5070
                and     2
5071
                call    nz,sub_2F0F
5072
                ld      a,c
5073
                call    loc_2F50
5074
loc_2E9C        pop     bc
5075
                djnz    loc_2E79
5076
                pop     de
5077
                pop     hl
5078
                ld      sp,hl
5079
                ld      a,(4011h)
5080
                push    af
5081
                ld      c,d
5082
                call    sub_2F07
5083
                ld      a,(4010h)
5084
                and     2
5085
                call    nz,sub_2F0F
5086
                ld      a,c
5087
                call    loc_2F50
5088
                ld      hl,4000h
5089
                call    sub_2F1B
5090
loc_2EBC        pop     af
5091
                ex      af,af'
5092
                pop     af
5093
                ld      r,a
5094
                pop     af
5095
                ld      i,a
678 savelij 5096
                di
761 savelij 5097
                ld      a,0FFh
5098
                jp      po,loc_2ECC
5099
                ld      a,0
5100
loc_2ECC        ld      (KSTATE0),a
5101
                pop     af
5102
                pop     hl
5103
                pop     de
5104
                pop     bc
678 savelij 5105
                exx
761 savelij 5106
                ex      af,af'
5107
                pop     iy
5108
                pop     ix
5109
                pop     hl
5110
                pop     de
5111
                pop     bc
5112
                ld      a,(BORDCR)
5113
                and     38h
678 savelij 5114
                rrca
5115
                rrca
5116
                rrca
761 savelij 5117
                out     (0FEh),a
5118
                ld      a,(SWAP_8)
5119
                cp      0EEh
5120
                jr      nz,loc_2EF7
5121
                push    bc
5122
                ld      bc,7FFDh
5123
                ld      a,(BANKM)
5124
                out     (c),a
5125
                pop     bc
5126
loc_2EF7        ld      a,(KSTATE0)
5127
                or      a
5128
                ld      a,0C9h
5129
                ld      (KSTATE0),a
5130
                jr      nz,loc_2F03
678 savelij 5131
                ei
761 savelij 5132
loc_2F03        pop     af
5133
                jp      KSTATE0
678 savelij 5134
 
761 savelij 5135
sub_2F07        ld      a,(4011h)
5136
                or      0x3c
5137
loc_2F0C
5138
        IF EMU
5139
                RST30 _OUT_FF
5140
        ELSE
5141
                out     (0xff),a
5142
        ENDIF
678 savelij 5143
                ret
5144
 
761 savelij 5145
sub_2F0F        ld      a,c
5146
                or      a
678 savelij 5147
                rra
761 savelij 5148
                ld      c,a
5149
                ret     nc
5150
                ld      a,(4011h)
5151
                and     0x6f                            ;LORD OF CHAOS
5152
                jr      loc_2F0C
678 savelij 5153
 
761 savelij 5154
sub_2F1B        ld      a,e                             ;EXOLON
5155
                inc     a
5156
        IF EMU
678 savelij 5157
                RST32 _OUT_5F,__OUT_N_A+0X5F<<8
761 savelij 5158
        ELSE
5159
                out     (0x5f),a
5160
        ENDIF
5161
                push    hl
5162
                ld      d,0x14
5163
                push    de
678 savelij 5164
loc_2F23        di
761 savelij 5165
                ld      c,0x7f
5166
                ld      a,0x80
5167
        IF EMU
678 savelij 5168
                RST32 _OUT_1F,__OUT_N_A+0X1F<<8
761 savelij 5169
        ELSE
5170
                out     (0x1f),a
5171
        ENDIF
5172
                call    RD_DATAPORT
5173
                pop     de
5174
                pop     hl
5175
        IF EMU
678 savelij 5176
                RST32 _IN_1F,__IN_A_N+0X1F<<8
761 savelij 5177
        ELSE
5178
                in      a,(0x1f)
5179
        ENDIF
5180
                and     0x7f
5181
                ret     z
5182
                dec     d
5183
                push    hl
5184
                push    de
5185
                jr      nz,loc_2F23
678 savelij 5186
                halt
761 savelij 5187
sub_2F3A        ld      a,3Ch
5188
        IF EMU
678 savelij 5189
                RST30 _OUT_FF
761 savelij 5190
        ELSE
5191
                out     (0FFh),a
5192
        ENDIF
5193
                ld      a,(KSTATE0)
5194
                and     8
5195
                jr      nz,loc_2F4F
5196
                ld      a,c
5197
                or      a
678 savelij 5198
                rra
761 savelij 5199
                ld      c,a
5200
                jr      nc,loc_2F4F
5201
                ld      a,2Ch
5202
        IF EMU
678 savelij 5203
                RST30 _OUT_FF
761 savelij 5204
        ELSE
5205
                out     (0xff),a
5206
        ENDIF
5207
loc_2F4F        ld      a,c
5208
loc_2F50
5209
        IF EMU
5210
                RST32 _OUT_7F,__OUT_N_A+0X7F<<8
5211
        ELSE
5212
                out     (0x7f),a
5213
        ENDIF
5214
                call    loc_3D2F;PAUSE725779T
5215
                ld      a,0x18
5216
loc_2F57
5217
        IF EMU
5218
                RST32 _OUT_1F,__OUT_N_A+0X1F<<8
5219
        ELSE
5220
                out     (0x1f),a
5221
        ENDIF
5222
loc_2F59
5223
        IF EMU
5224
                RST32 _IN_FF,__IN_A_N+0XFF<<8
5225
        ELSE
5226
                in      a,(0xff)
5227
        ENDIF
5228
                and     0x80
5229
                jr      z,loc_2F59
5230
                push    bc
5231
                call    PAUSE725779T
5232
                pop     bc
678 savelij 5233
                ret
5234
 
761 savelij 5235
sub_2F65        ld      a,0x08                          ;SOLDIER OF THE FUTURE
5236
                jr      loc_2F57
678 savelij 5237
 
761 savelij 5238
WORK4ERROR      ld      hl,(TRD_5D1C)                   ;   SP
5239
                dec     hl
5240
                dec     hl
5241
                ld      sp,hl
5242
                jp      loc_1D2F
678 savelij 5243
 
761 savelij 5244
CALL2BASIC      ld      (TRD_5D02),hl
5245
                ld      (TRD_5D04),de
5246
                pop     hl
5247
                ld      e,(hl)
5248
                inc     hl
5249
                ld      d,(hl)
5250
                inc     hl
5251
                push    hl
5252
                ld      hl,loc_3D2F
5253
                push    hl
5254
                push    de
5255
                ld      hl,TRD_5CC2
5256
                push    hl
5257
                ld      hl,(TRD_5D02)
5258
                ld      de,(TRD_5D04)
678 savelij 5259
                ret
5260
 
623 savelij 5261
SET_VARS        LD HL,0X0808
761 savelij 5262
                ld      (TRD_5CFA),hl                   ;    A
5263
                ld      (TRD_5CFC),hl                   ;    C
623 savelij 5264
                LD HL,0X8383
761 savelij 5265
                ld      (TRD_5CC8),hl                   ;    A
5266
                ld      (TRD_5CCA),hl                   ;    C
5267
                xor     a
5268
                ld      (TRD_5D17),a                    ;  ,  #AA
5269
                ld      (TRD_5D18),a
5270
                ld      (TRD_5D0F),a                    ;   TR-DOS
5271
                ld      (TRD_5D1F),a
627 savelij 5272
                CALL SET_DRIVENAME
761 savelij 5273
                ld      a,0xff
5274
        IF EMU
678 savelij 5275
                RST30 _OUT_FF
761 savelij 5276
        ELSE
5277
                out     (0xff),a
5278
        ENDIF
5279
                ld      (ERR_NR),a
5280
                ld      (TRD_5D0C),a
5281
                ld      a,0xc9
5282
                ld      (TRD_5CC2),a
5283
                ld      a,0xd0
5284
        IF EMU
678 savelij 5285
                RST32 _OUT_1F,__OUT_N_A+0X1F<<8
761 savelij 5286
        ELSE
5287
                out     (0x1f),a
5288
        ENDIF
678 savelij 5289
                ret
5290
 
761 savelij 5291
CP_END_CAT      call    CP_END_BUF
5292
                ld      a,(hl)
5293
                or      a
5294
                jp      z,END_OUT_DIR
5295
                cp      1
5296
                call    z,ADD_10
5297
                ret     nz
5298
                jr      CP_END_CAT
678 savelij 5299
 
761 savelij 5300
LOAD_SEC2BUF    ld      b,1
5301
                ld      hl,TRD_5D25
5302
                jp      loc_1E67
678 savelij 5303
 
761 savelij 5304
LOAD_END_FILE   push    hl
5305
                ld      de,(TRD_5CF4)
5306
                call    LOAD_SEC2BUF
5307
                ld      a,(TRD_5CDB)
5308
                pop     de
5309
                or      a
5310
                ret     z
5311
                ld      c,a
5312
                ld      hl,TRD_5D25
5313
        IF EMU
623 savelij 5314
                IF EMU3D2F=1
678 savelij 5315
                JP EMU_LDIR
623 savelij 5316
                ELSE
678 savelij 5317
                ldir
5318
                ret
623 savelij 5319
                ENDIF
761 savelij 5320
        ELSE
5321
                ldir
5322
                ret
5323
        ENDIF
623 savelij 5324
 
678 savelij 5325
;     TR-DOS
5326
CODE_BYTE_COM   db __CAT
5327
                db "*"
5328
                db __FORMAT
5329
                db __MOVE
5330
                db __NEW
5331
                db __ERASE
5332
                db __LOAD
5333
                db __SAVE
5334
                db __RETURN
5335
                db __PEEK
5336
                db __POKE
5337
                db __MERGE
5338
                db __RUN
5339
                db __OPEN
5340
                db __CLOSE
5341
                db __COPY
5342
                db "4"
5343
                db __GOTO
5344
                db "8"
5345
                db __LIST
5346
                db __VERIFY
5347
ECODE_BYTE_COM
623 savelij 5348
 
678 savelij 5349
;    
5350
SPIS_ADR_COM    dw CAT
5351
                dw COM_STAR
5352
                dw FORMAT
5353
                dw MOVE
5354
                dw NEW                  ;   NEW
5355
                dw ERASE                ;   ERASE
5356
                dw LOAD
5357
                dw SAVE
5358
                dw RETURN
5359
                dw PEEK
5360
                dw POKE
5361
                dw MERGE
5362
                dw RUN
5363
                dw OPEN
5364
                dw CLOSE
5365
                dw COPY
5366
                dw COM_40
5367
                dw GOTO
5368
                dw COM_80
5369
                dw LIST
5370
                dw VERIFY
623 savelij 5371
 
761 savelij 5372
SAE2E_LINE      ld      hl,(E_LINE)                     ;    
5373
                ld      (TRD_5D11),hl                   ;    TR_DOS
5374
                ld      (TRD_5CD9),hl                   ;    <B>  <C>
5375
                ld      a,0xff
5376
                ld      (TRD_5CD6),a                    ; #FF-   
5377
                ld      hl,TRD_5CDB
5378
                ld      (TRD_5CD7),hl                   ;     - 
5379
                                                        ;    
5380
                jr      loc_3057
623 savelij 5381
 
761 savelij 5382
SAE2_HL_        ld      (TRD_5D11),hl                   ;    TR_DOS
5383
                ld      (TRD_5CD9),hl                   ;    <B>  <C>
5384
                call    CP_ADR_STR
5385
                ret     nz
5386
                inc     hl
5387
                inc     hl
5388
                ld      (TRD_5CD7),hl                   ;     - 
5389
                                                        ;    
5390
loc_3057        call    CMP_SPECSYM
5391
                jr      nz,loc_3087
5392
                ex      de,hl
5393
                inc     de
5394
                ld      b,0
5395
                ld      hl,BYTES_COM
5396
                add     hl,bc
5397
                ld      a,(hl)
5398
                ld      hl,(TRD_5CD9)                   ;    <B>  <C>
5399
                ld      (hl),a
5400
                inc     hl
5401
                ex      de,hl
5402
                rst     0x20
5403
                dw      0x19dd
5404
                push    bc
689 savelij 5405
;[???]
5406
;               call CLRBUF_EDITOR1
761 savelij 5407
                rst     20h
5408
                dw      19E8h
5409
                pop     bc
5410
                ld      a,(TRD_5CD6)                    ; #FF-   
5411
                or      a
5412
                jr      nz,loc_3087
5413
                ld      hl,(TRD_5CD7)                   ;     - 
5414
                                                        ;    
5415
                ld      e,(hl)
5416
                inc     hl
5417
                ld      d,(hl)
5418
                ex      de,hl
5419
                or      a
5420
                sbc     hl,bc
5421
                ex      de,hl
5422
                ld      (hl),d
5423
                dec     hl
5424
                ld      (hl),e
5425
loc_3087        ld      hl,(TRD_5CD9)                   ;    <B>  <C>
5426
                ld      a,(hl)
5427
                cp      0x0d
5428
                ret     z
5429
                inc     hl
5430
                ld      (TRD_5CD9),hl                   ;    <B>  <C>
5431
                ld      a,(hl)
5432
                cp      0x0d
5433
                ret     z
5434
                cp      0x22
5435
                jr      nz,loc_3057
5436
loc_309A        inc     hl
5437
                ld      a,(hl)
5438
                cp      0x0d
5439
                ret     z
5440
                cp      0x22
5441
                jr      nz,loc_309A
5442
                inc     hl
5443
                ld      (TRD_5CD9),hl                   ;    <B>  <C>
5444
                jr      loc_3057
623 savelij 5445
 
761 savelij 5446
FIND_KEYWORD    ld      hl,(TRD_5CD9)                   ;    <B>  <C>
5447
                ld      de,TBL_KEYWORD                  ; "SAVE"
5448
                ld      c,0
5449
loc_30B1        ld      a,(hl)
5450
                and     0xdf
5451
                ld      b,a
5452
                or      a
5453
                jr      nz,loc_30BB
5454
                inc     hl
5455
                jr      loc_30B1
623 savelij 5456
 
761 savelij 5457
loc_30BB        ld      a,(de)
5458
                and     0x80
5459
                jr      nz,loc_30C8
5460
                ld      a,(de)
5461
                cp      b
5462
                jr      nz,loc_30D9
5463
                inc     hl
5464
                inc     de
5465
                jr      loc_30B1
623 savelij 5466
 
761 savelij 5467
loc_30C8        ld      a,(de)
5468
                and     0x7f
5469
                cp      b
5470
                ret     z
5471
loc_30CD        inc     c
5472
                ld      hl,(TRD_5CD9)                   ;    <B>  <C>
5473
                inc     de
5474
                ld      a,(de)
5475
                cp      0xff
5476
                jr      nz,loc_30B1
5477
                or      a
678 savelij 5478
                ret
623 savelij 5479
 
761 savelij 5480
loc_30D9        inc     de
5481
                ld      a,(de)
5482
                and     0x80
5483
                jr      z,loc_30D9
5484
                jr      loc_30CD
623 savelij 5485
 
761 savelij 5486
CP_ADR_STR      ld      hl,(PPC)
5487
                inc     hl
5488
                inc     hl
5489
                ld      a,h
5490
                or      l
5491
                jr      z,loc_30F4
5492
                xor     a
5493
                ld      (TRD_5CD6),A                    ; #FF-   
5494
                dec     hl
5495
                dec     hl
5496
                rst     0x20
5497
                dw      0x196e
678 savelij 5498
                ret
623 savelij 5499
 
761 savelij 5500
loc_30F4        ld      a,0xff
5501
                ld      (TRD_5CD6),a                    ; #FF-   
5502
                ld      hl,(E_LINE)                     ;    
678 savelij 5503
                ret
623 savelij 5504
 
5505
;  
678 savelij 5506
TBL_KEYWORD     db "SAVE",0x80
623 savelij 5507
                DC "SAVE"
678 savelij 5508
                db "LOAD",0x80
623 savelij 5509
                DC "LOAD"
678 savelij 5510
                db "RUN",0x80
623 savelij 5511
                DC "RUN"
678 savelij 5512
                db "CAT",0x80
623 savelij 5513
                DC "CAT"
678 savelij 5514
                db "ERASE",0x80
623 savelij 5515
                DC "ERASE"
678 savelij 5516
                db "NEW",0x80
623 savelij 5517
                DC "NEW"
678 savelij 5518
                db "MOVE",0x80
623 savelij 5519
                DC "MOVE"
678 savelij 5520
                db "MERGE",0x80
623 savelij 5521
                DC "MERGE"
678 savelij 5522
                db "PEEK",0x80
623 savelij 5523
                DC "PEEK"
678 savelij 5524
                db "POKE",0x80
623 savelij 5525
                DC "POKE"
678 savelij 5526
                db "OPEN",0x83
5527
                db "CLOSE",0x83
5528
                db "CODE",0x80
623 savelij 5529
                DC "CODE"
678 savelij 5530
                db "RND",0x80
623 savelij 5531
                DC "RND"
678 savelij 5532
                db "DATA",0x80
623 savelij 5533
                DC "DATA"
678 savelij 5534
                db "SCREEN",4,0x84
5535
                db "SCREEN",0x84
5536
                db "COPY",0x80
623 savelij 5537
                DC "COPY"
678 savelij 5538
                db "FORMAT",0x80
623 savelij 5539
                DC "FORMAT"
678 savelij 5540
                db "GOTO",0x80
5541
                DC "GOTO"
5542
                db "LIST",0x80
623 savelij 5543
                DC "LIST"
678 savelij 5544
                db "LINE",0x80
623 savelij 5545
                DC "LINE"
678 savelij 5546
                db "VERIFY",0x80
623 savelij 5547
                DC "VERIFY"
678 savelij 5548
                db 0xff,0xff
623 savelij 5549
 
5550
;   
678 savelij 5551
BYTES_COM       dw __SAVE<<8+__SAVE
5552
                dw __LOAD<<8+__LOAD
5553
                dw __RUN<<8+__RUN
5554
                dw __CAT<<8+__CAT
5555
                dw __ERASE<<8+__ERASE
5556
                dw __NEW<<8+__NEW
5557
                dw __MOVE<<8+__MOVE
5558
                dw __MERGE<<8+__MERGE
5559
                dw __PEEK<<8+__PEEK
5560
                dw __POKE<<8+__POKE
5561
                dw __CLOSE<<8+__OPEN
5562
                dw __CODE<<8+__CODE
5563
                dw __RND<<8+__RND
5564
                dw __DATA<<8+__DATA
5565
                dw __SCREENS<<8+__SCREENS
5566
                dw __COPY<<8+__COPY
5567
                dw __FORMAT<<8+__FORMAT
5568
                dw __GOTO<<8+__GOTO
5569
                dw __LIST<<8+__LIST
5570
                dw __LINE<<8+__LINE
5571
                dw __VERIFY<<8+__VERIFY
5572
                db 0
623 savelij 5573
 
678 savelij 5574
CP_VARSTRDOS    CALL CMP_VARSTRDOS
761 savelij 5575
                or      a
5576
                ld      bc,TRD_5D25
5577
                sbc     hl,bc
678 savelij 5578
                ret
5579
 
623 savelij 5580
;===============FREE SPACE 2============
627 savelij 5581
                include extend.a80
623 savelij 5582
                include raznoe.a80
678 savelij 5583
                include patch.a80
795 savelij 5584
;  HONEY COMANDER
5585
                include hc_resident.a80
623 savelij 5586
;===============FREE SPACE 2============
5587
 
764 savelij 5588
                TITLE "evo-dos.a80"
5589
 
678 savelij 5590
                DUPL 0X3C01-$,0XFF
761 savelij 5591
                jr      loc_3C06
627 savelij 5592
 
761 savelij 5593
                db      0xff
5594
                jr      loc_3C09
623 savelij 5595
 
761 savelij 5596
loc_3C06        jp      loc_3D00
623 savelij 5597
 
761 savelij 5598
loc_3C09        jp      loc_3D03
623 savelij 5599
 
5600
;===============FREE SPACE 3============
5601
                DUPL 0X3C30-$,0XFF
761 savelij 5602
        IF EMU
678 savelij 5603
                RST32 _IN_1F,__IN_A_N+0X1F<<8
761 savelij 5604
        ELSE
5605
                IN A,(0X1F)
5606
        ENDIF
623 savelij 5607
                RET
5608
 
795 savelij 5609
;  HONEY COMANDER
5610
                DUPL 0X3C50-$,0XFF
5611
LOC_3C50        LD H,CMOS_BYTE_01
5612
                CALL READCMOS
5613
                AND M_REZIDENT
5614
                JP Z,LOC_3C4B
5615
                JP loc_3C50
5616
 
761 savelij 5617
        IF EMU
623 savelij 5618
                DUPL ADR_RST8END-$,0XFF
5619
                JP EDOS2RST8
761 savelij 5620
        ENDIF
623 savelij 5621
;===============FREE SPACE 3============
5622
 
5623
                DUPL 0X3CFA-$,0XFF
678 savelij 5624
loc_3CFA        nop
761 savelij 5625
                jr      loc_3D2F
623 savelij 5626
 
761 savelij 5627
loc_3CFD        jp      CALL_3D13
623 savelij 5628
 
5629
;  DOS (15616)
678 savelij 5630
loc_3D00        nop
761 savelij 5631
                jr      IN_DOS_15616
623 savelij 5632
 
5633
;   (15619)
678 savelij 5634
loc_3D03        nop
761 savelij 5635
                jr      IN_DOS_15619
623 savelij 5636
 
678 savelij 5637
loc_3D06        nop
761 savelij 5638
                jp      INPUTDATAFILE
623 savelij 5639
 
761 savelij 5640
loc_3D0A        jp      OUT_SYM2FILE
623 savelij 5641
 
678 savelij 5642
                nop
761 savelij 5643
loc_3D0E        jr      loc_3D0A
623 savelij 5644
 
678 savelij 5645
                nop
761 savelij 5646
                jr      loc_3CFA
623 savelij 5647
 
678 savelij 5648
                nop
761 savelij 5649
                jr      loc_3CFD
623 savelij 5650
 
678 savelij 5651
loc_3D16        nop
761 savelij 5652
                jp      WORK4ERROR
623 savelij 5653
 
761 savelij 5654
IN_DOS_15619    call    CREATE_VARS_TRD
5655
                push    hl
5656
                jp      CONTINUE_15619
623 savelij 5657
 
761 savelij 5658
CREATE_VARS_TRD call    CP_VARSTRDOS
678 savelij 5659
                nop
5660
                nop
761 savelij 5661
                call    c,JMP_CREATE_VARS
5662
                ld      hl,TRD_5CC2
678 savelij 5663
                ret
623 savelij 5664
 
678 savelij 5665
                nop
5666
                nop
5667
loc_3D2F        nop
5668
                ret
623 savelij 5669
 
761 savelij 5670
IN_DOS_15616    call    CREATE_VARS_TRD
5671
                push    hl
5672
                jp      IN_COMMAND_CPU                  ;     
623 savelij 5673
 
761 savelij 5674
INI_INTERFACE1  xor     a
678 savelij 5675
                DUPL 2,0
761 savelij 5676
                in      a,(0xf7)
5677
                cp      0x1e
5678
                jr      z,loc_3D44
5679
                cp      0x1f
5680
                ret     nz
5681
loc_3D44        rst     8
5682
                db      0x31
5683
                ld      a,1
5684
                ld      (TRD_5CEF),a
678 savelij 5685
                ret
623 savelij 5686
 
761 savelij 5687
JMP_CREATE_VARS xor     a
5688
        IF EMU
678 savelij 5689
                RST30 _OUT_FF
761 savelij 5690
        ELSE
5691
                out     (0xff),a
5692
        ENDIF
5693
                in      a,(0xf6)
5694
                ld      hl,INI_INTERFACE1
5695
                ld      de,MEMBOT
5696
                ld      bc,0x14
5697
                ldir                                    ;ADS
5698
                ld      hl,CREATE_VARS
5699
                push    hl
5700
                LD      hl,loc_3D2F
5701
                push    hl
5702
                jp      MEMBOT
623 savelij 5703
 
761 savelij 5704
CREATE_VARS
5705
        IF EMU
5706
                CALL CMP_RAMDISK
5707
        ELSE
5708
                ld      hl,SET_VARS
5709
        ENDIF
5710
                push    hl
5711
                ld      hl,loc_3D2F
5712
                push    hl
5713
                ld      hl,0x1655
5714
                push    hl
5715
                ld      hl,TSTACK_END
5716
                push    hl
5717
                ld      (hl),0xc9
5718
                ld      hl,P_RAMT+1
5719
                ld      bc,0x70
678 savelij 5720
                ret
623 savelij 5721
 
761 savelij 5722
PRINT_0D        ld      a,0x0d
5723
PRINT_A_        push    hl
5724
                push    bc
5725
                push    de
5726
                push    af
678 savelij 5727
                DUPL 3,0
761 savelij 5728
                pop     af
5729
                call    PRINT_SYM
5730
                DUPL    3,0
5731
                pop     de
5732
                pop     bc
5733
                pop     hl
678 savelij 5734
                ret
5735
 
761 savelij 5736
PRINT_SYM       rst     0x20
5737
                dw      0x10
678 savelij 5738
                ret
5739
 
623 savelij 5740
; 93
761 savelij 5741
COM_00          ld      a,0x08
5742
COM2VG_WAIT
5743
        IF EMU
5744
                RST32 _OUT_1F,__OUT_N_A+0X1F<<8
5745
        ELSE
5746
                out     (0x1f),a
5747
        ENDIF
5748
loc_3D9C        push    hl
5749
                rst     0x20
5750
                dw      0x1f54
5751
                jr      c,loc_3DA5
5752
                rst     0x20
5753
                dw      0x1b7b
5754
loc_3DA5        pop     hl
5755
        IF EMU
678 savelij 5756
                RST32 _IN_FF,__IN_A_N+0XFF<<8
761 savelij 5757
        ELSE
5758
                in      a,(0xff)
5759
        ENDIF
5760
                and     0x80
5761
                jr      z,loc_3D9C
678 savelij 5762
                ret
623 savelij 5763
 
761 savelij 5764
CP_PRESENT_DSK  ld      a,0x08
5765
                call    COM2VG_WAIT
5766
                ld      de,0
5767
        IF EMU
678 savelij 5768
                RST32 _IN_1F,__IN_A_N+0X1F<<8
761 savelij 5769
        ELSE
5770
                in      a,(0x1f)
5771
        ENDIF
5772
                and     2
5773
                ld      b,a
5774
loc_3DBA
5775
        IF EMU
5776
                RST32 _IN_1F,__IN_A_N+0X1F<<8
5777
        ELSE
5778
                in      a,(0x1f)
5779
        ENDIF
5780
                and     2
5781
                cp      b
5782
        IF EMU
623 savelij 5783
                IF EMU3D2F=1
5784
                RET
5785
                ELSE
678 savelij 5786
                ret nz
623 savelij 5787
                ENDIF
761 savelij 5788
        ELSE
5789
                ret     nz
5790
        ENDIF
5791
                inc     de
5792
                ld      a,e
5793
                or      d
5794
                jr      nz,loc_3DBA
5795
                jp      loc_3EE7
623 savelij 5796
 
5797
;   
761 savelij 5798
ACTIV_DEF_DSK   ld      a,(TRD_5D19)                    ;   
623 savelij 5799
;  
761 savelij 5800
COM_01          ld      (TRD_5CF6),a                    ;   
5801
                ld      hl,TRD_5D16                     ;    ( #FF)
5802
                or      0x3c
5803
                ld      (hl),a
5804
        IF EMU
678 savelij 5805
                RST30 _OUT_FF
761 savelij 5806
        ELSE
5807
                out     (0xff),a
5808
        ENDIF
623 savelij 5809
                LD B,0
761 savelij 5810
        IF EMU
678 savelij 5811
                RST32 _IN_3F,__IN_A_N+0X3F<<8
761 savelij 5812
        ELSE
5813
                in      a,(0x3f)
5814
        ENDIF
5815
        IF EMU
678 savelij 5816
                RST32 _OUT_7F,__OUT_N_A+0X7F<<8
761 savelij 5817
        ELSE
5818
                out     (0x7f),a
5819
        ENDIF
5820
                LD A,%00011000                          ;   
5821
        IF EMU
678 savelij 5822
                RST32 _OUT_1F,__OUT_N_A+0X1F<<8
761 savelij 5823
        ELSE
5824
                out     (0x1f),a
5825
        ENDIF
5826
                DJNZ $                                  ;
5827
COM_011
5828
        IF EMU
5829
                RST32 _IN_1F,__IN_A_N+0X1F<<8
5830
        ELSE
5831
                in      a,(0x1f)
5832
        ENDIF
623 savelij 5833
                AND 0X80
678 savelij 5834
                JP NZ,loc_3EE7
627 savelij 5835
LOC_3DFA        JP WR_NUM_TRACK
623 savelij 5836
 
678 savelij 5837
WR_BYTE_RET     OUT (C),A
623 savelij 5838
                RET
5839
 
678 savelij 5840
                DUPL 0X3DFD-$,0XFF
761 savelij 5841
PAUSE725779T    ld      a,0x50
5842
PAUSE_C_A       ld      c,0xff
5843
loc_3E01        dec     c
5844
                jr      nz,loc_3E01
5845
                dec     a
5846
                jr      nz,PAUSE_C_A
678 savelij 5847
                ret
5848
 
623 savelij 5849
;    
761 savelij 5850
GET_TIME_HEAD   ld      de,TRD_5CFA                     ;    A
5851
loc_3E0B        ld      hl,(TRD_5CF6)                   ;    
5852
                add     hl,de
5853
                ld      a,(hl)
678 savelij 5854
                ret
623 savelij 5855
 
761 savelij 5856
GET_TYPE_DISK   ld      de,TRD_5CC8                     ;    A
5857
                jr      loc_3E0B
623 savelij 5858
 
678 savelij 5859
;    
761 savelij 5860
CP_TIME_GOHEAD  call    GET_TIME_HEAD                   ;    
5861
                ld      b,8
5862
                ld      c,4
5863
loc_3E1D        ld      (hl),b
5864
                ld      a,0Bh
5865
                call    COM2VG_WAIT
5866
                ld      a,20h
5867
                ld      b,0Bh
5868
                call    HEAD_POSITION
5869
                ld      b,(hl)
5870
                ld      a,1
5871
                call    HEAD_POSITION
5872
        IF EMU
678 savelij 5873
                RST32 _IN_1F,__IN_A_N+0X1F<<8
761 savelij 5874
        ELSE
5875
                in      a,(1Fh)
5876
        ENDIF
5877
                and     4
5878
                jr      nz,loc_3E3F
5879
                xor     a
5880
                call    HEAD_POSITION
5881
        IF EMU
678 savelij 5882
                RST32 _IN_1F,__IN_A_N+0X1F<<8
761 savelij 5883
        ELSE
5884
                in      a,(1Fh)
5885
        ENDIF
5886
                and     4
5887
                ret     nz
5888
loc_3E3F        inc     b
5889
                dec     c
5890
                ret     z
5891
                jr      loc_3E1D
623 savelij 5892
 
761 savelij 5893
HEAD_POSITION
5894
        IF EMU
5895
                RST32 _OUT_7F,__OUT_N_A+0X7F<<8
5896
        ELSE
5897
                out     (0x7f),a
5898
        ENDIF
5899
                ld      a,b
5900
                or      0x18
5901
                jp      COM2VG_WAIT
623 savelij 5902
 
761 savelij 5903
POSITIONIREN
5904
        IF EMU
5905
                RST32 _OUT_7F,__OUT_N_A+0X7F<<8
5906
        ELSE
5907
                out     (0x7f),a
5908
        ENDIF
5909
                push    bc
5910
                ld      b,a
5911
        IF EMU
678 savelij 5912
                RST32 _IN_3F,__IN_A_N+0X3F<<8
761 savelij 5913
        ELSE
5914
                in      a,(0x3f)
5915
        ENDIF
5916
                cp      b
5917
                pop     bc
5918
                push    af
5919
                ld      a,b
5920
                or      0x18
5921
                call    COM2VG_WAIT
5922
                pop     af
5923
                ret     z
5924
                push    bc
5925
                call    PAUSE725779T
5926
                pop     bc
678 savelij 5927
                ret
623 savelij 5928
 
5929
;   
761 savelij 5930
COM_02          ld      c,a
5931
                call    COM_16
5932
                call    GET_TYPE_DISK
5933
                and     2
5934
                call    nz,SET_SIDE_DSK
5935
                push    bc
5936
                bit     7,(hl)
5937
                jr      z,loc_3E83
5938
                bit     0,(hl)
5939
                jr      nz,loc_3E83
5940
        IF EMU
678 savelij 5941
                RST32 _IN_3F,__IN_A_N+0X3F<<8
761 savelij 5942
        ELSE
5943
                in      a,(0x3f)
5944
        ENDIF
5945
                cp      c
5946
                jr      z,loc_3E82
678 savelij 5947
                rlca
761 savelij 5948
        IF EMU
678 savelij 5949
                RST32 _OUT_3F,__OUT_N_A+0X3F<<8
761 savelij 5950
        ELSE
5951
                out     (0x3f),a
5952
        ENDIF
5953
                ld      a,c
678 savelij 5954
                rlca
761 savelij 5955
loc_3E82        ld      c,a
5956
loc_3E83        call    GET_TIME_HEAD                   ;    
5957
                ld      b,a
5958
                ld      a,c
5959
                call    POSITIONIREN
5960
                pop     bc
5961
                ld      a,c
5962
        IF EMU
678 savelij 5963
                RST32 _OUT_3F,__OUT_N_A+0X3F<<8
761 savelij 5964
        ELSE
5965
                out     (0x3f),a
5966
        ENDIF
5967
                ld      a,(TRD_5CCD)                    ; #80- 
5968
                or      a
5969
                ret     z
5970
                xor     a
5971
                ld      (TRD_5CCD),a                    ; #80- 
678 savelij 5972
                ret
627 savelij 5973
 
5974
                DUPL 0X3EA0-$,0XFF
761 savelij 5975
PAUSE_3_C_A     ld      b,3
5976
loc_3EA2        ld      a,0xff
5977
                call    PAUSE_C_A
5978
                djnz    loc_3EA2
678 savelij 5979
                ret
623 savelij 5980
 
761 savelij 5981
SET_SIDE_DSK    ld      a,c
5982
                or      a
678 savelij 5983
                rra
761 savelij 5984
                ld      c,a
5985
                ret     nc
5986
                jp      COM_17
623 savelij 5987
 
761 savelij 5988
GET_NUM_TRACK   call    COM_16
5989
loc_3EB5
5990
        IF EMU
5991
                RST32 _IN_1F,__IN_A_N+0X1F<<8
5992
        ELSE
5993
                in      a,(0x1f)
5994
        ENDIF
5995
                and     0x80
5996
                ld      (TRD_5CCD),a                    ; #80- 
5997
        IF EMU
678 savelij 5998
                RST32 _IN_3F,__IN_A_N+0X3F<<8
761 savelij 5999
        ELSE
6000
                in      a,(0x3f)
6001
        ENDIF
6002
                ld      h,a
6003
                call    BUGFIX_3EBF                     ;PATCH ERROR
6004
                ld      c,0x7f
6005
                ld      d,1
678 savelij 6006
                di
761 savelij 6007
                ld      a,0xc0
6008
        IF EMU
678 savelij 6009
                RST32 _OUT_1F,__OUT_N_A+0X1F<<8
761 savelij 6010
        ELSE
6011
                out     (0x1f),a
6012
        ENDIF
6013
                push    bc
6014
                ld      b,3
6015
loc_3ECE
6016
        IF EMU
6017
                RST32 _IN_FF,__IN_A_N+0XFF<<8
6018
        ELSE
6019
                in      a,(0xff)
6020
        ENDIF
6021
                and     0xc0
6022
                jr      nz,loc_3EF2
6023
                inc     de
6024
                ld      a,e
6025
                or      d
6026
                jr      nz,loc_3ECE
6027
                djnz    loc_3ECE
6028
                pop     bc
678 savelij 6029
                ei
761 savelij 6030
                ld      a,0xd0
6031
        IF EMU
678 savelij 6032
                RST32 _OUT_1F,__OUT_N_A+0X1F<<8
761 savelij 6033
        ELSE
6034
                out     (0x1f),a
6035
        ENDIF
6036
                ld      a,(TRD_5D17)
6037
                cp      0xff
6038
                ret     z
6039
loc_3EE7        call    SET_TAPELDERR
6040
                ld      a,0xff
6041
                ld      (TRD_5D17),a                    ;  ,  #AA
6042
                jp      loc_271B
623 savelij 6043
 
761 savelij 6044
loc_3EF2        pop     bc
6045
        IF EMU
678 savelij 6046
                RST32 _IN_H_C,__IN_H_C
761 savelij 6047
        ELSE
6048
                in      h,(c)
6049
        ENDIF
6050
loc_3EF5
6051
        IF EMU
6052
                RST32 _IN_FF,__IN_A_N+0XFF<<8
6053
        ELSE
6054
                in      a,(0xff)
6055
        ENDIF
6056
                and     0xc0
6057
                jr      z,loc_3EF5
678 savelij 6058
                ei
761 savelij 6059
                ret     m
678 savelij 6060
                di
761 savelij 6061
                in      a,(0x7f)
6062
                jr      loc_3EF5
623 savelij 6063
 
6064
;  
761 savelij 6065
COM_03          ld      (TRD_5CFF),a
678 savelij 6066
                ret
623 savelij 6067
 
6068
;  
761 savelij 6069
COM_04          ld      (TRD_5D00),hl
678 savelij 6070
                ret
623 savelij 6071
 
761 savelij 6072
SAVE_SECTOR     ld      a,0xa0
6073
                jr      loc_3F10
623 savelij 6074
 
761 savelij 6075
LOAD_SECTOR     ld      a,0x80
6076
loc_3F10        ld      (TRD_5CFE),a
6077
loc_3F13        ld      d,0x0a
6078
loc_3F15        push    de
678 savelij 6079
                di
761 savelij 6080
                ld      a,(TRD_5CFF)
6081
                inc     a
6082
        IF EMU
678 savelij 6083
                RST32 _OUT_5F,__OUT_N_A+0X5F<<8
761 savelij 6084
        ELSE
6085
                out     (0x5f),a
6086
        ENDIF
6087
                ld      hl,(TRD_5D00)
6088
                ld      c,0x7f
6089
                ld      a,(TRD_5CFE)
6090
        IF EMU
678 savelij 6091
                RST32 _OUT_1F,__OUT_N_A+0X1F<<8
761 savelij 6092
        ELSE
6093
                out     (0x1f),a
6094
        ENDIF
6095
                cp      0xa0
6096
                push    af
6097
                call    z,WRITE_SEC
6098
                pop     af
6099
                call    nz,READ_SEC
6100
                pop     de
678 savelij 6101
                ei
761 savelij 6102
        IF EMU
678 savelij 6103
                RST32 _IN_1F,__IN_A_N+0X1F<<8
761 savelij 6104
        ELSE
6105
                in      a,(0x1f)
6106
        ENDIF
6107
                ld      b,a
6108
                and     0x7f
6109
                ret     z
6110
loc_3F39        ld      hl,READ_ONLY                    ; READ ONLY
6111
                and     0x40
6112
                jr      nz,loc_3F4B
6113
                ld      a,b
6114
                and     4
6115
                jr      z,loc_3FA0
6116
                dec     d
6117
                jr      nz,loc_3F15
6118
loc_3F48        ld      hl,TXT_DISCERROR_               ; DISC ERROR
6119
loc_3F4B        ld      a,0xd0
6120
        IF EMU
678 savelij 6121
                RST32 _OUT_1F,__OUT_N_A+0X1F<<8
761 savelij 6122
        ELSE
6123
                out     (0x1f),a
6124
        ENDIF
6125
                ld      a,b
6126
                and     1
6127
                jp      nz,loc_3EE7
6128
        IF EMU
678 savelij 6129
                RST32 _IN_3F,__IN_A_N+0X3F<<8
761 savelij 6130
        ELSE
6131
                in      a,(0x3f)
6132
        ENDIF
6133
                or      a
6134
                jr      nz,loc_3F5F
6135
        IF EMU
678 savelij 6136
                RST32 _IN_5F,__IN_A_N+0X5F<<8
761 savelij 6137
        ELSE
6138
                in      a,(0x5f)
6139
        ENDIF
6140
                cp      0x0a
6141
                ret     z
6142
loc_3F5F        push    hl
6143
                call    CLEAR_SCREEN                    ;   
6144
                pop     hl
6145
                rst     0x18
6146
                ld      hl,TXT_TRK_                     ; TRACK
6147
                rst     0x18
6148
        IF EMU
678 savelij 6149
                RST32 _IN_3F,__IN_A_N+0X3F<<8
761 savelij 6150
        ELSE
6151
                in      a,(0x3f)
6152
        ENDIF
6153
                call    PRINT_CHISLO_A_
6154
                ld      hl,TXT_SEC_                     ; SECTOR
6155
                rst     0x18
6156
        IF EMU
678 savelij 6157
                RST32 _IN_5F,__IN_A_N+0X5F<<8
761 savelij 6158
        ELSE
6159
                in      a,(0x5f)
6160
        ENDIF
6161
                call    PRINT_CHISLO_A_
6162
                ld      hl,TXT_RIA_
6163
                rst     0x18
6164
loc_3F7B        call    GET_KEYS                        ;   
6165
                cp      "I"                             ; IGNORE-RET   #1E8E
6166
                ret     z
6167
                cp      "R"                             ; RETRY
6168
                jr      z,PRESS_RETRY
6169
                cp      "A"                             ; ABORT
6170
                jr      nz,loc_3F7B
6171
                call    SET_TAPELDERR                   ; PRESS ABORT
6172
                ld      a,7
6173
                ld      (TRD_5D0F),a                    ;   TR-DOS
6174
                jp      END_COMAND
623 savelij 6175
 
761 savelij 6176
PRESS_RETRY     ld      a,(TRD_5CF5)
6177
                call    COM_02
6178
                call    PAUSE_3_C_A
6179
                jp      loc_3F13
623 savelij 6180
 
761 savelij 6181
loc_3FA0        dec     d
6182
                jp      z,loc_3F48                      ; DISC ERROR
6183
                push    de
6184
                call    GET_TIME_HEAD                   ;    
6185
                and     2
6186
                jr      nz,loc_3FAD
6187
                inc     (hl)
6188
loc_3FAD        call    COM_00
6189
                ld      a,(TRD_5CF5)
6190
                call    COM_02
6191
                pop     de
6192
                jp      loc_3F15
623 savelij 6193
 
761 savelij 6194
WRITE_SEC       ld      b,4
6195
loc_3FBC
6196
        IF EMU
6197
                RST32 WWRITE_SEC_,__IN_A_N+0XFF<<8
6198
        ELSE
6199
                in      a,(0xff)
6200
        ENDIF
6201
                and     0xc0
6202
                jr      nz,loc_3FD1
6203
                inc     de
6204
                ld      a,e
6205
                or      d
6206
                jr      nz,loc_3FBC
6207
                djnz    loc_3FBC
678 savelij 6208
                ret
623 savelij 6209
 
761 savelij 6210
WR_DATAPORT
6211
        IF EMU
6212
                RST32 WWRITE_SEC_,__IN_A_N+0XFF<<8
6213
        ELSE
6214
                in      a,(0xff)
6215
        ENDIF
6216
                and     0xc0
6217
                jr      z,WR_DATAPORT
6218
                ret     m
6219
loc_3FD1
6220
        IF EMU
6221
                RST32 WWRITE_SEC_,__OUTI
6222
        ELSE
6223
                outi
6224
        ENDIF
6225
                jr      WR_DATAPORT
623 savelij 6226
 
761 savelij 6227
READ_SEC        ld      b,4
6228
loc_3FD7
6229
        IF EMU
6230
                RST32 WREAD_SEC_,__IN_A_N+0XFF<<8
6231
        ELSE
6232
                in      a,(0xff)
6233
        ENDIF
6234
                and     0xc0
6235
                jr      nz,loc_3FEC
6236
                inc     de
6237
                ld      a,e
6238
                or      d
6239
                jr      nz,loc_3FD7
6240
                djnz    loc_3FD7
678 savelij 6241
                ret
623 savelij 6242
 
761 savelij 6243
RD_DATAPORT
6244
        IF EMU
6245
                RST32 WREAD_SEC_,__IN_A_N+0XFF<<8
6246
        ELSE
6247
                in      a,(0xff)
6248
        ENDIF
6249
                and     0xc0
6250
                jr      z,RD_DATAPORT
6251
                ret     m
6252
loc_3FEC
6253
        IF EMU
6254
                RST32 WINI_RET,__INI
6255
        ELSE
6256
                ini
6257
        ENDIF
6258
                jr      RD_DATAPORT
623 savelij 6259
 
6260
                OUT (C),A
6261
FOR_RET         RET
6262
 
6263
                IN A,(C)
6264
                RET
6265
 
6266
                DUPL 0X3FF8-$,0XFF
6267
                DB "EVODOS"
6268
                DW DATA_VERS