Subversion Repositories pentevo

Rev

Rev 839 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed | ?url?

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