Subversion Repositories pentevo

Rev

Rev 631 | Rev 666 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1.  
  2. ;LAST UPDATE: 10.07.2014 savelij
  3.  
  4.                 include ../../macros.a80
  5.                 include ../../define.a80
  6.                 include ../../global_vars.a80
  7.                 include ../../bas_trd_vars.a80
  8.  
  9. ;                    0123456789012345678
  10. NUMBER_VERS     EQU " EVO-DOS Ver 0.38  "
  11. ZASTV_X         EQU 7                                   ;КООРДИНАТА X ПЕЧАТИ НАДПИСИ BETA128
  12. ZASTV_Y         EQU 6                                   ;КООРДИНАТА Y ПЕЧАТИ НАДПИСИ BETA128
  13. ZASTV_PIX       EQU ZASTV_Y*0X20+0X4000+ZASTV_X+9       ;АДРЕС ВЫВОДА СКОШЕННЫХ УГОЛКОВ
  14. ZASTV_ATR       EQU ZASTV_Y*0X20+0X5800+ZASTV_X         ;АДРЕС ВЫВОДА ЦВЕТА ДЛЯ СКОШЕННЫХ УГОЛКОВ
  15.  
  16.                 ORG 0X0000
  17.                 DI
  18.                 LD A,7
  19.                 OUT (0XFE),A
  20.                 JR LOC_09
  21.  
  22.                 DB 1                            ;ЗАГЛУШКА ДЛЯ DCU
  23.  
  24.                 JP DOS2RST8                     ;RST 08
  25.  
  26. LOC_09          LD A,0X3F
  27.                 JR LOC_24
  28.  
  29.                 DUPL 0X0010-$,0XFF
  30.                 JP PRINT_A_                     ;RST 10 ПЕЧАТЬ СИМВОЛА
  31.  
  32.                 DUPL ADR_SEL_ROM-$,0XFF
  33. LOC_14          OUT (C),A
  34.                 NOP
  35.                 RET
  36.  
  37.                 DUPL 0X0018-$,0XFF
  38.                 JP PRINT_MSG                    ;RST 18 ПЕЧАТЬ ТЕКСТОВОГО СООБЩЕНИЯ
  39.  
  40.                 DUPL 0X0020-$,0XFF
  41.                 JP CALL2BASIC                   ;RST 20 ВЫЗОВ ПОДПРОГРАММ ИЗ БАСИКА 48
  42.  
  43. LOC_24          LD HL,0XFFFF
  44.                 JR LOC_2B
  45.  
  46.                 JP SUB_2323                     ;RST 28
  47.  
  48. LOC_2B          LD I,A
  49.                 XOR A
  50.                 JR LOC_33
  51.  
  52.                 JP RST30_WORK                   ;RST 30
  53.  
  54. LOC_33          LD SP,HL
  55.                 LD B,A
  56.                 LD C,A
  57.                 JR LOC_3A
  58.  
  59.                 DUPL 0X0038-$,0XFF
  60.                 EI                              ;RST 38
  61.                 RET
  62.  
  63. LOC_3A          REPT 8
  64.                 PUSH BC
  65.                 ENDM
  66.                 LD HL,0XA500
  67.                 ADD HL,SP
  68.                 JR C,LOC_3A
  69.                 LD (P_RAMT),HL
  70.                 LD DE,0X3EAF
  71.                 LD BC,0XA8
  72.                 LD A,E
  73.                 EX DE,HL
  74.                 LD SP,0X6000
  75.                 LD (TRD_5F00),HL
  76.                 LD HL,LOC_79
  77.                 PUSH HL
  78.                 LD HL,LOC_3D2F
  79.                 PUSH HL
  80.                 LD HL,0XB8ED                    ;КОМАНДА LDDR
  81.                 JR EXECUTECOM2HL
  82.  
  83.                 DUPL 0X0066-$,0XFF
  84.                 NOP                             ;ОБРАБОТЧИК NMI-ОТСУСТВУЕТ
  85.                 RETN
  86.  
  87. EXECUTECOM2HL   LD (TRD_5F10),HL
  88.                 PUSH AF
  89.                 LD A,0XC9
  90.                 LD (TRD_5F12),A
  91.                 POP AF
  92.                 LD HL,(TRD_5F00)
  93.                 JP TRD_5F10
  94.  
  95. LOC_79          EX DE,HL
  96.                 LD (RAMTOP),HL
  97.                 INC HL
  98.                 LD (UDG),HL
  99.                 DEC HL
  100.                 LD (HL),0X3E
  101.                 DEC HL
  102.                 LD SP,HL
  103.                 DEC HL
  104.                 DEC HL
  105.                 LD (ERR_SP),HL
  106.                 LD HL,0X40              ;НАДОЕЛ ЭТОТ ПИСК ПО СБРОСУ
  107.                 LD (RASP),HL
  108.                 LD HL,0X3C00
  109.                 LD (CHARS),HL
  110.                 LD DE,0X1303
  111.                 PUSH DE
  112.                 IM 1
  113.                 LD IY,ERR_NR
  114.                 LD HL,TRD_5CB6          ; ДЛЯ ПРОВЕРКИ НАЛИЧИЯ INTERFACE1
  115.                 LD (CHANS),HL
  116.                 LD DE,0X15AF
  117.                 LD BC,0X15
  118.                 EX DE,HL
  119.                 CALL COPY_BAS2VARS
  120.                 EX DE,HL
  121.                 DEC HL
  122.                 LD (DATADD), HL
  123.                 INC HL
  124.                 LD (PROG),HL
  125.                 LD (VARS),HL
  126.                 LD (HL),0X80
  127.                 INC HL
  128.                 LD (E_LINE),HL          ; АДРЕС НАЧАЛА РЕДАКТИРУЕМОЙ СТРОКИ
  129.                 LD (HL),0X0D
  130.                 INC HL
  131.                 LD (HL),0X80
  132.                 INC HL
  133.                 LD (WORKSP),HL
  134.                 LD (STKBOT),HL
  135.                 LD (STKEND),HL
  136.                 LD A,0X38
  137.                 LD (ATTR_P),A
  138.                 LD (ATTR_T),A
  139.                 LD (BORDCR),A
  140.                 LD HL,0X0223;0X0523
  141.                 LD (REPDEL),HL
  142.                 DEC (IY-0X3A)
  143.                 DEC (IY-0X36)
  144.                 LD HL,0X15C6
  145.                 LD DE,STRMS
  146.                 LD BC,0X0E
  147.                 CALL COPY_BAS2VARS
  148.                 SET 1,(IY+1)
  149.                 LD HL,TRD_5CC2          ; СОДЕРЖИТ #C9.ДЛЯ ПЕРЕХОДА ИЗ TR-DOS В BASIC
  150.                 LD (HL),0XC9
  151.                 RST 0X20
  152.                 DW 0X0EDF               ; ОЧИСТКА БУФЕРА ПРИНТЕРА
  153.                 LD HL,DF_SZ             ;КОЛИЧЕСТВО СТРОК В СЛУЖЕБНОМ ЭКРАНЕ
  154.                 LD (HL),2
  155.                 LD HL,0X128B
  156.                 PUSH HL
  157.                 LD A,0XAA
  158.                 LD (NOT_USED),A
  159.                 EI
  160.                 JP IN_DOS_15616
  161.  
  162. COPY_BAS2VARS   LD (TRD_5F00),HL
  163.                 LD HL,LOC_3D2F
  164.                 PUSH HL
  165.                 LD HL,0XB0ED            ;КОМАНДА LDIR
  166.                 LD (TRD_5F10),HL
  167.                 LD HL,(TRD_5F00)
  168.                 JP TRD_5F10
  169.  
  170. ;ОБРАБОТКА НОМЕРА СТРОКИ АВТОСТАРТА ПРОГРАММЫ НА БЕЙСИКЕ
  171. WORK4AUTORUN    CALL DELETE_BUF         ;УДАЛЕНИЕ БУФЕРА, ЕСЛИ КАНАЛ НЕ ОТКРЫТ
  172.                 CALL CLEAR_SCREEN       ; ОЧИСТКА ОСНОВНОГО ЭКРАНА
  173.                 LD HL,(E_LINE)          ;АДРЕС ОТКУДА ВЗЯТЬ НОМЕР СТРОКИ АВТОСТАРТА
  174.                 INC HL
  175.                 LD E,(HL)
  176.                 INC HL
  177.                 LD D,(HL)               ;ПОЛУЧИЛИ НОМЕР СТРОКИ АВТОСТАРТА
  178.                 LD A,D
  179.                 OR E
  180.                 EX DE,HL
  181.                 JR Z,LOC_140            ;ЕСЛИ НОМЕР СТРОКИ =0, ТО БЕЗ АВТОЗАПУСКА
  182.                 XOR A
  183.                 LD (TRD_5D10),A         ; СТАРШИЙ БАЙТ ОШИБКИ
  184. LOC_140         PUSH HL
  185.                 CALL RESTORE_SP         ; ВОССТАНОВЛЕНИЕ ПЕРЕХВАТЧИКА ОШИБОК
  186.                 POP HL
  187.                 LD (NEWPPC),HL
  188.                 XOR A
  189.                 LD (NSPPS),A
  190.                 RST 0X20
  191.                 DW 0X16B0               ; УСТАНОВКА ОБЛАСТИ РЕДАКТИРОВАНИЯ ДО МИНИМУМА
  192.                 LD HL,(PROG)
  193.                 DEC HL
  194.                 LD (DATADD),HL
  195.                 LD SP,(ERR_SP)
  196.                 LD A,(TRD_5D10)         ; СТАРШИЙ БАЙТ ОШИБКИ
  197.                 OR A
  198.                 LD HL,0X1B76
  199.                 JR Z,LOC_166
  200.                 RST 0X20
  201.                 DW 0X1BB0               ; СООБЩЕНИЕ "OK"
  202. LOC_166         PUSH HL
  203.                 JP TRD_5CC2
  204.  
  205. CONTINUE_15619  CALL CREATE_BUF         ; СОЗДАНИЕ БУФЕРА
  206.                 XOR A
  207.                 LD (TRD_5CF7),A
  208.                 DEC A
  209.                 LD (TRD_5D15),A         ; ЕСЛИ 0, ПЕЧАТАТЬ ШАПКУ TR-DOS. ИНАЧЕ НЕ ПЕЧАТАТЬ
  210.                 LD A,0XAA
  211.                 LD (TRD_5D17),A         ; РИСОВАНИЕ ЗАСТАВКИ, ЕСЛИ #AA
  212.                 LD HL,CP_ERROR
  213.                 LD (TRD_5D1A),HL        ; ВНУТРЕННИЙ АДРЕС ЗАВЕРШЕНИЯ ИНТЕРПРЕТАТОРА КОМАНД
  214.                 LD HL,0
  215.                 ADD HL,SP
  216.                 LD (TRD_5D1C),HL        ; СОХРАНЕНИЕ РЕГИСТРА SP
  217.                 DEC HL
  218.                 DEC HL
  219.                 LD SP,HL
  220.                 CALL MARK_SP            ; УСТАНОВКА СТЕКА ДЛЯ ПЕРЕХВАТА ОШИБОК
  221.                 LD HL,(RAMTOP)
  222.                 LD DE,(CH_ADD)
  223.                 SBC HL,DE
  224.                 EX DE,HL
  225.                 JR NC,LOC_1A5
  226.                 OR A
  227.                 LD DE,0X101
  228.                 SBC HL,DE
  229. LOC_1A5         LD (CH_ADD),HL
  230. LOC_1A8         CALL CP_0D_OR_80
  231. LOC_1AB         JP Z,END_COMAND
  232.                 CP 0XEA                 ;REM
  233.                 INC HL
  234.                 JR NZ,LOC_1A8
  235.                 CALL CP_0D_OR_80
  236.                 JR Z,LOC_1AB
  237.                 CP ":"
  238.                 JP NZ,END_COMAND
  239.                 INC HL
  240.                 CALL SAE2_HL_
  241.                 LD HL,(TRD_5D11)        ; АДРЕС СТРОКИ КОМАНДЫ TR_DOS
  242.                 JP LOC_30A
  243.  
  244. CP_0D_OR_80     LD A,(HL)
  245.                 CP 0X0D
  246.                 RET Z
  247.                 CP 0X80
  248.                 RET Z
  249.                 OR A
  250.                 RET
  251.  
  252.                 DUPL 0X01C7-$,0XFF
  253.                 JP READ_BYTE_HL_                ;DCU
  254.  
  255. ;ПОДПРОГРАММА ЗАВЕРШЕНИЕ КОМАНДНОГО ПРОЦЕССОРА
  256. END_COMAND      LD HL,0
  257.                 LD (TRD_5CF8),HL        ; ДИСКОВОД ПРИ ОПЕРАЦИИ С 2 ФАЙЛАМИ
  258.                 CALL DELETE_BUF
  259.                 CALL CLEAR_WORKSPACE
  260.                 LD HL,TRD_5D17          ; РИСОВАНИЕ ЗАСТАВКИ, ЕСЛИ #AA
  261.                 LD (HL),0XAA
  262.                 LD HL,TRD_5D1F
  263.                 LD A,(HL)
  264.                 OR A
  265.                 LD (HL),0
  266.                 JR NZ,LOC_1F3
  267.                 CALL DEL_5BYTES
  268.                 CALL FIND_ENDSTR        ; ПОИСК КОНЦА СТРОКИ
  269. LOC_1F3         LD SP,(TRD_5D1C)        ; СОХРАНЕНИЕ РЕГИСТРА SP
  270.                 LD HL,(TRD_5D1A)        ; ВНУТРЕННИЙ АДРЕС ЗАВЕРШЕНИЯ ИНТЕРПРЕТАТОРА КОМАНД
  271.                 LD BC,(TRD_5D0F)        ; НОМЕР ОШИБКИ TR-DOS
  272.                 LD B,0
  273.                 JP (HL)
  274.  
  275.                 DUPL 0X0201-$,0XFF
  276. ;DCU (ВЫЗЫВАЕТ С АДРЕСА 0X0207)
  277. CP_ERROR        CALL RESTORE_SP         ; ПРОВЕРКА НА ОШИБКУ
  278.                 BIT 7,(IY+0)
  279.                 RET NZ
  280.                 LD SP,(ERR_SP)
  281.                 JP TRD_5CC2
  282.  
  283. ; ПОИСК КОНЦА СТРОКИ
  284. FIND_ENDSTR     CALL GET_SYMSTR
  285.                 CP 0X0D
  286.                 RET Z
  287.                 CALL GET_NEXT_SYM
  288.                 JR FIND_ENDSTR          ; ПОИСК КОНЦА СТРОКИ
  289.  
  290.                 DUPL 0X21D-$,0XFF
  291. ; УСТАНОВКА СТЕКА ДЛЯ ПЕРЕХВАТА ОШИБОК
  292. MARK_SP         LD HL,(ERR_SP)
  293.                 LD (TRD_5D13),HL        ; КОПИЯ ERR_SP
  294.                 LD HL,(TRD_5D1C)        ; СОХРАНЕНИЕ РЕГИСТРА SP
  295.                 DEC HL
  296.                 DEC HL
  297.                 LD (ERR_SP),HL
  298.                 LD DE,LOC_3D16
  299.                 LD (HL),E
  300.                 INC HL
  301.                 LD (HL),D
  302.                 RET
  303.  
  304. ; ВОССТАНОВЛЕНИЕ ПЕРЕХВАТЧИКА ОШИБОК
  305. RESTORE_SP      LD HL,(TRD_5D13)        ; КОПИЯ ERR_SP
  306. LOC_0235        LD (ERR_SP),HL
  307.                 RET
  308.  
  309. IN_COMMAND_CPU  LD HL,0                 ; ВХОЖДЕНИЕ В КОМАНДНЫЙ ПРОЦЕССОР ДОСА
  310.                 LD (TRD_5CF7),HL
  311.                 ADD HL,SP
  312.                 LD (TRD_5D1C),HL        ; СОХРАНЕНИЕ РЕГИСТРА SP
  313.                 DEC HL
  314.                 DEC HL
  315.                 LD SP,HL
  316.                 CALL MARK_SP            ; УСТАНОВКА СТЕКА ДЛЯ ПЕРЕХВАТА ОШИБОК
  317.                 CALL CLEAR_SCREEN       ; ОЧИСТКА ОСНОВНОГО ЭКРАНА
  318.                 CALL OPEN_CHAN_2        ; ОТКРЫТИЕ КАНАЛА 2
  319.                 LD HL,TRD_5D17          ; РИСОВАНИЕ ЗАСТАВКИ, ЕСЛИ #AA
  320.                 LD A,(HL)
  321.                 CP 0XAA
  322.                 LD A,0
  323.                 LD (TRD_5D0F),A         ; НОМЕР ОШИБКИ TR-DOS
  324.                 JP Z,COMMAND_CPU
  325.                 LD (HL),0XAA
  326.                 LD HL,ZASTAVKA          ; ТЕКСТ ЗАСТАВКИ ДОСА
  327.                 RST 0X18
  328.                 CALL OUT_COLOR_LINE     ; РИСОВАНИЕ ЦВЕТНЫХ ЛИНИЙ ЗАСТАВКИ ДОСА
  329.                 LD HL,TEXT4VIRTDRV      ;ТЕКСТ ПРО ВИРТУАЛЬНЫЙ ДИСКОВОД
  330.                 RST 0X18                ;ПЕЧАТЬ НА ЭКРАНЕ
  331.                 LD H,VIRT_REAL_DRIVE
  332.                 CALL READCMOS           ;ЧТЕНИЕ НОМЕРА ВИРТУАЛЬНОГО ДИСКА
  333.                 AND 3                   ;НАМ НУЖНЫ ТОЛЬКО 2 МЛАДШИХ БИТА
  334.                 ADD A,"A"               ;ПРЕОБРАЗОВАЛИ В ТЕКСТ
  335.                 RST 0X10                ;НАПЕЧАТАЛИ БУКВУ
  336. LOC_271         LD A,(NOT_USED)         ; ПРОВЕРКА НА #AA
  337.                 CP 0XAA
  338.                 JR NZ,COMMAND_CPU       ; ЕСЛИ НЕ #AA,ТО ВХОД В КОМАНДНЫЙ ПРОЦЕССОР
  339. LOC_27B         LD HL,(E_LINE)          ; АДРЕС НАЧАЛА РЕДАКТИРУЕМОЙ СТРОКИ
  340.                 XOR A
  341.                 LD (TRD_5D0E),A         ; #FE-РАБОТАЕТ BASIC,ИНАЧЕ TR-DOS
  342.                 LD (HL),0XF7
  343.                 INC HL
  344.                 LD (HL),0X22
  345.                 INC HL
  346.                 LD (HL),"b"
  347.                 INC HL
  348.                 LD (HL),"o"
  349.                 INC HL
  350.                 LD (HL),"o"
  351.                 INC HL
  352.                 LD (HL),"t"
  353.                 INC HL
  354.                 LD (HL),0X22
  355.                 INC HL
  356.                 LD (K_CUR),HL
  357.                 LD (HL),0X0D
  358.                 INC HL
  359.                 LD (HL),0X80
  360.                 INC HL
  361.                 LD (WORKSP),HL
  362.                 LD (STKBOT),HL
  363.                 LD (STKEND),HL
  364.                 SET 3,(IY+1)
  365.                 JR GO2RUNBOOT
  366.  
  367. ; ПЕРЕНОС 3 БАЙТ
  368. LDI3_HL2DE      LDI
  369.                 LDI
  370.                 LDI
  371.                 RET
  372.  
  373.                 DUPL 0X02B9-$,0XFF
  374. ;FIX
  375. ;ОСТАНОВКА МОТОРА ДИСКОВОДА
  376. STOP_MOTOR      LD B,0X20
  377. LOC_2BB         PUSH BC
  378.                 XOR 8
  379.                 OUT (0XFF),A
  380.                 PUSH AF
  381.                 LD A,5
  382.                 CALL PAUSE_C_A
  383.                 POP AF
  384.                 POP BC
  385.                 DJNZ LOC_2BB
  386.                 RET
  387.  
  388.                 DUPL 0X2CF-$,0XFF
  389. ;КОМАНДНЫЙ ПРОЦЕССОР DOS
  390. COMMAND_CPU     LD HL,(TRD_5D1C)        ; СОХРАНЕНИЕ РЕГИСТРА SP
  391.                 DEC HL
  392.                 DEC HL
  393.                 LD SP,HL
  394.                 CALL OPEN_CHAN_0        ; ОТКРЫТИЕ КАНАЛА 0
  395.                 LD A,(0X5D16)
  396.                 XOR 3
  397.                 CALL STOP_MOTOR
  398.                 XOR 3
  399.                 CALL STOP_MOTOR
  400.                 XOR A
  401.                 LD (TRD_5D15),A         ; ЕСЛИ 0,ПЕЧАТАТЬ ШАПКУ TR-DOS.ИНАЧЕ НЕ ПЕЧАТАТЬ
  402.                 CALL GET_COMMAND        ; ПРИНЯТИЕ И ОБРАБОТКА КОМАНД
  403.                 CALL SAE2E_LINE
  404. GO2RUNBOOT      CALL CLEAR_DOWN_SCR     ; ОЧИСТКА НИЖНЕЙ ЧАСТИ ЭКРАНА
  405.                 LD HL,COMMAND_CPU
  406.                 LD (TRD_5D1A),HL        ; ВНУТРЕННИЙ АДРЕС ЗАВЕРШЕНИЯ ИНТЕРПРЕТАТОРА КОМАНД
  407.                 XOR A
  408.                 LD (TRD_5D0F),A         ; НОМЕР ОШИБКИ TR-DOS
  409.                 LD (TRD_5CEF),A
  410.                 LD HL,(E_LINE)          ; АДРЕС НАЧАЛА РЕДАКТИРУЕМОЙ СТРОКИ
  411.                 PUSH HL
  412.                 LD DE,TRD_5D20          ; ДЛЯ СОХРАНЕНИЯ 3 СИМВОЛОВ ВВЕДЕНОЙ СТРОКИ
  413.                 CALL LDI3_HL2DE         ; ПЕРЕНОС 3 БАЙТ
  414.                 POP HL
  415.                 LD (TRD_5D11),HL        ; АДРЕС СТРОКИ КОМАНДЫ TR_DOS
  416. LOC_30A         LD A,(HL)
  417.                 BIT 7,A
  418.                 JR Z,LOC_31A
  419.                 CP 0XFE
  420.                 JR Z,LOC_31A
  421.                 PUSH AF
  422.                 CALL ACTIV_DEF_DSK      ; ВЫБОР ДИСКОВОДА ПО УМОЛЧАНИЮ
  423.                 POP AF
  424. LOC_31A         LD HL,CODE_BYTE_COM     ; ТАБЛИЦА БЕЙСИК КОМАНД ДЛЯ TR-DOS
  425.                 DEC HL
  426.                 LD C,0
  427. LOC_320         INC C
  428.                 LD D,A
  429.                 LD A,LOW (ECODE_BYTE_COM-CODE_BYTE_COM);0X15
  430.                 CP C
  431.                 JP C,END_COMAND
  432.                 LD A,D
  433.                 INC HL
  434.                 CP (HL)
  435.                 JR NZ,LOC_320
  436.                 CP 0XFE
  437.                 CALL NZ,CREATE_BUF      ; СОЗДАНИЕ БУФЕРА
  438.                 LD A,9
  439.                 LD (TRD_5D06),A         ; КОЛИЧЕСТВО СИМВОЛОВ ИМЕНИ ФАЙЛА ПРИ ПОИСКЕ
  440.                 XOR A
  441.                 LD (TRD_5D0F),A         ; НОМЕР ОШИБКИ TR-DOS
  442.                 LD (TRD_5CD6),A         ; #FF-КОМАНДА ПРИНЯТА СИНТАКСИЧЕСКИМ АНАЛИЗАТОРОМ
  443.                 LD (TRD_5D10),A         ; СТАРШИЙ БАЙТ ОШИБКИ
  444.                 LD HL,FLAGS
  445.                 RES 7,(HL)
  446.                 LD B,A
  447.                 LD HL,SPIS_ADR_COM      ; ТАБЛИЦА АДРЕСОВ ИСПОЛНЕНИЯ КОМАНД
  448.                 DEC C
  449.                 ADD HL,BC
  450.                 ADD HL,BC
  451.                 LD E,(HL)
  452.                 INC HL
  453.                 LD D,(HL)
  454.                 EX DE,HL
  455.                 PUSH HL
  456.                 LD DE,END_COM
  457.                 PUSH DE
  458.                 JP (HL)
  459.  
  460. END_COM         LD HL,FLAGS
  461.                 SET 7,(HL)
  462.                 RET
  463.  
  464.                 DUPL 0X0360-$,0XFF
  465. ;FIX
  466. ;ТЕКСТ ЗАСТАВКИ ДОСА
  467. ZASTAVKA        DB 0X16,0X00,0X06
  468. ZASTAVKA_VER    EQU $+9
  469.                 DB NUMBER_VERS
  470.                 DB 0X0D,0X0D,0X7F
  471.                 ;  12345678901234567890123456789012
  472.                 DB " 2010 Created for PentEvo 4MB "
  473.                 DB 0X16,0X04,0X0C
  474.                 DB "NedoPC"
  475.                 DB 0X16,ZASTV_Y,ZASTV_X
  476.                 IF EMU3D2F=1
  477.                 DC "EMUL 3D2F"
  478.                 ELSE
  479.                 DC "EMUL 3D13"
  480.                 ENDIF
  481.  
  482. END_OUT_DIR     CALL READ_9SEC          ; ЧТЕНИЕ 9 СЕКТОРА
  483.                 CALL PRINT_0D
  484.                 CALL PRINT_0D
  485. LOC_3B5         LD BC,(TRD_5E0A)
  486.                 CALL PRINT_CHISLO       ; ПЕЧАТЬ ЧИСЛА
  487.                 LD HL,TXT_FREE_
  488.                 RST 0X18
  489. GOTO_END        JP END_COMAND
  490.  
  491. ; ПЕЧАТЬ СООБЩЕНИЯ ОБ ОШИБКЕ
  492. PRINT_ERROR     PUSH AF
  493.                 LD A,(TRD_5D0E)         ; #FE-РАБОТАЕТ BASIC,ИНАЧЕ TR-DOS
  494.                 CP 0XFE
  495.                 JR NZ,CP4PRINT_HEAD
  496.                 POP AF
  497.                 RET
  498.  
  499. CP4PRINT_HEAD   POP AF
  500.                 LD (TRD_5D0F),A         ; НОМЕР ОШИБКИ TR-DOS
  501.                 LD A,(TRD_5D15)         ; ЕСЛИ 0,ПЕЧАТАТЬ ШАПКУ TR-DOS.ИНАЧЕ НЕ ПЕЧАТАТЬ
  502.                 OR A
  503.                 JP Z,PRINT_MSG          ; ПЕЧАТЬ ТЕКСТОВОГО СООБЩЕНИЯ
  504.                 RET
  505.  
  506. ERR_NOFILES     LD HL,TXT_NOFILES_
  507.                 LD A,1
  508.                 JP PRINT_TXTERR
  509.  
  510. ERR_OK          LD HL,TXT_OK_           ; "O.K."
  511.                 XOR A
  512.                 JP PRINT_TXTERR
  513.  
  514. ; ЧТЕНИЕ СЕКТОРА 0 КАТАЛОГА
  515. RD_0SEC2BUF     XOR A
  516.                 LD (TRD_5CCC),A         ; ТЕКУЩИЙ НОМЕР СЕКТОРА ПРИ ЧТЕНИИ КАТАЛОГА
  517.  
  518. ; ЧТЕНИЕ СЕКТОРА КАТАЛОГА ПО НОМЕРУ
  519. READ_NUM_SEC    LD DE,(TRD_5CCC)        ; ТЕКУЩИЙ НОМЕР СЕКТОРА ПРИ ЧТЕНИИ КАТАЛОГА
  520.                 LD D,0
  521. READ_SEC4NEM    CALL CREATE_BUF         ; СОЗДАНИЕ БУФЕРА
  522.                 LD HL,TRD_5D25
  523.                 LD B,1
  524.                 JP COM_05               ; ЧТЕНИЕ СЕКТОРОВ
  525.  
  526. ; ЧТЕНИЕ 9 СЕКТОРА
  527. READ_9SEC       CALL CREATE_BUF         ; СОЗДАНИЕ БУФЕРА
  528.                 LD DE,8
  529.                 JR READ_SEC4NEM
  530.  
  531. ;НАСТРОЙКА НА ДИСКЕТУ
  532. COM_18          CALL READ_9SEC          ; ЧТЕНИЕ 9 СЕКТОРА
  533.                 LD A,(TRD_5E0C)
  534.                 CP 0X10
  535.                 JR Z,CP_TYPE_DSK
  536. DISCERROR_      LD HL,TXT_DISCERROR_
  537.                 LD A,7
  538.                 JP PRINT_TXTERR
  539.  
  540. CP_TYPE_DSK     CALL GET_TYPE_DISK
  541.                 RES 0,(HL)
  542.                 RES 1,(HL)
  543.                 LD A,(TRD_5E08)
  544.                 BIT 0,A
  545.                 JR NZ, LOC_425
  546.                 SET 0,(HL)
  547. LOC_425         BIT 3,A
  548.                 RET NZ
  549.                 SET 1,(HL)
  550.                 RET
  551.  
  552. CP_SECOND_SYM   LD HL,(TRD_5D11)        ; АДРЕС СТРОКИ КОМАНДЫ TR_DOS
  553.                 INC HL
  554.                 LD A,(HL)
  555.                 CP 0X0D
  556.                 RET
  557.  
  558. CAT             CALL CP_SECOND_SYM      ; ВЫПОЛНЕНИЕ КОМАНДЫ CAT
  559.                 LD BC,2
  560.                 LD (TRD_5CDB),BC
  561.                 JR Z,LOC_46A
  562.                 CP "#"
  563.                 JR NZ,CODES
  564.                 LD (CH_ADD),HL
  565.                 CALL SET_NUM_CHAN
  566.                 CALL GET_SYMSTR
  567.                 CP 0X0D
  568.                 JR Z,LOC_46A
  569.                 CP ","
  570.                 JP NZ,SINTAX_ERROR
  571.                 CALL GET_NEXT_SYM
  572.                 CALL PUT_NUMDSK_STK
  573.                 JR LOC_460
  574.  
  575. CODES           CALL SET_AND_PUT
  576. LOC_460         CALL EXIT_IF_SINTAX
  577.                 CALL GET_STKBOT_
  578.                 EX DE,HL
  579.                 CALL SETUP_DSK
  580. LOC_46A         CALL EXIT_IF_SINTAX
  581.                 LD A,(TRD_5CF6)         ; ДИСКОВОД ДЛЯ ВРЕМЕННОЙ ОПЕРАЦИИ
  582.                 LD (TRD_5CF9),A         ; ДИСКОВОД ПРИ ОПЕРАЦИИ С 2 ФАЙЛАМИ
  583.                 CALL COM_18             ; НАСТРОЙКА НА ДИСКЕТУ
  584.                 LD A,(TRD_5CDB)
  585. LOC_479         CP 2
  586.                 PUSH AF
  587.                 CALL Z,CLEAR_SCREEN     ; ОЧИСТКА ОСНОВНОГО ЭКРАНА
  588.                 POP AF
  589.                 CP 0X11
  590.                 JP NC,SINTAX_ERROR
  591.                 CALL OPENSTREAM
  592.                 LD A,0XFF
  593.                 LD (TRD_5CF8),A         ; ДИСКОВОД ПРИ ОПЕРАЦИИ С 2 ФАЙЛАМИ
  594.                 LD HL,TXT_TITLE_        ; "TITLE:"
  595.                 RST 0X18
  596.                 LD HL,TRD_5E1A
  597.                 CALL PRINT8SYM
  598.                 CALL PRINT_0D
  599.                 LD A,(TRD_5E09)
  600.                 LD HL,TRD_5E19
  601.                 SUB (HL)
  602.                 PUSH HL
  603.                 CALL PRINT_CHISLO_A_
  604.                 LD HL,TXT_NOFILES+2
  605.                 RST 0X18
  606.                 POP HL
  607.                 LD C,(HL)
  608.                 CALL CONV2_2BYTES
  609.                 LD HL,TXT_DELFILE_      ; " DEL. FILE"
  610.                 RST 0X18
  611.                 CALL RD_0SEC2BUF        ; ЧТЕНИЕ СЕКТОРА 0 КАТАЛОГА
  612.                 LD HL,TRD_5D25
  613. LOC_4B6         CALL CP_END_DIR         ; ПРОВЕРКА ОКОНЧАНИЯ ДИРЕКТОРИИ
  614.                 CALL PRINT_0D
  615.                 LD A,(TRD_5CF6)         ; ДИСКОВОД ДЛЯ ВРЕМЕННОЙ ОПЕРАЦИИ
  616.                 ADD A,"A"
  617.                 RST 0X10
  618.                 LD B,2
  619. LOC_4C4         CALL CP_END_DIR         ; ПРОВЕРКА ОКОНЧАНИЯ ДИРЕКТОРИИ
  620.                 PUSH BC
  621.                 LD A,":"
  622.                 RST 0X10
  623.                 PUSH HL
  624.                 CALL PRINT_FILENAME     ; ПЕЧАТЬ ИМЕНИ ФАЙЛА
  625.                 LD BC,0X0D
  626.                 POP HL
  627.                 PUSH HL
  628.                 ADD HL,BC
  629.                 LD C,(HL)
  630.                 PUSH BC
  631.                 LD A,C
  632.                 LD B,2
  633.                 CP 0X0A
  634.                 JR C,LOC_4DF
  635.                 DEC B
  636. LOC_4DF         CP 0X64
  637.                 JR NC,LOC_4E8
  638. LOC_4E3         LD A," "
  639.                 RST 0X10
  640.                 DJNZ LOC_4E3
  641. LOC_4E8         POP BC
  642.                 CALL PRINT_CHISLO       ; ПЕЧАТЬ ЧИСЛА
  643.                 POP HL
  644.                 POP BC
  645.                 LD DE,0X10
  646.                 ADD HL,DE
  647.                 DJNZ LOC_4C4
  648.                 JR LOC_4B6
  649.  
  650. ; ПРОВЕРКА ОКОНЧАНИЯ ДИРЕКТОРИИ
  651. CP_END_DIR      PUSH HL
  652.                 PUSH BC
  653.                 LD A,(TRD_5CF9)         ; ДИСКОВОД ПРИ ОПЕРАЦИИ С 2 ФАЙЛАМИ
  654.                 LD HL,TRD_5CF6          ; ДИСКОВОД ДЛЯ ВРЕМЕННОЙ ОПЕРАЦИИ
  655.                 CP (HL)
  656.                 CALL NZ,COM_01          ; НАСТРОЙКА НА ДИСКОВОД
  657.                 POP BC
  658.                 POP HL
  659.                 JP CP_END_CAT
  660.  
  661. ADD_10          LD DE,0X10
  662.                 ADD HL,DE
  663.                 RET
  664.  
  665. CP_END_BUF      PUSH HL
  666.                 PUSH BC
  667.                 LD BC,0XA1DB
  668.                 ADD HL,BC
  669.                 JR C,READ_SEC2BUF
  670.                 POP BC
  671.                 POP HL
  672.                 RET
  673.  
  674. READ_SEC2BUF    LD HL,TRD_5CCC          ; ТЕКУЩИЙ НОМЕР СЕКТОРА ПРИ ЧТЕНИИ КАТАЛОГА
  675.                 INC (HL)
  676.                 CALL READ_NUM_SEC       ; ЧТЕНИЕ СЕКТОРА КАТАЛОГА ПО НОМЕРУ
  677.                 POP BC
  678.                 POP HL
  679.                 LD HL,TRD_5D25
  680.                 RET
  681.  
  682. NUMDSK2BYTE     AND 0XDF
  683.                 SUB A,"A"
  684.                 JP C,SINTAX_ERROR
  685.                 CP 4
  686.                 JP NC,SINTAX_ERROR
  687.                 RET
  688.  
  689. CP_ON_STKBOT    CALL GET_STKBOT_
  690.                 LD A,C
  691.                 OR B
  692.                 JP Z,SINTAX_ERROR
  693.                 LD A,B
  694.                 AND A
  695.                 JP NZ,SINTAX_ERROR
  696.                 RET
  697.  
  698. NEW             CALL INPUT_2STR2STKBOT  ; ВЫПОЛНЕНИЕ КОМАНДЫ NEW
  699.                 CALL EXIT_IF_SINTAX
  700.                 CALL INPUT_EXTFILENAME  ; ПРИЕМ РАСШИРЕНИЯ ФАЙЛА
  701.                 CALL SET_CP_FILENAME
  702.                 LD A,(TRD_5CF6)         ; ДИСКОВОД ДЛЯ ВРЕМЕННОЙ ОПЕРАЦИИ
  703.                 LD (TRD_5CF8),A         ; ДИСКОВОД ПРИ ОПЕРАЦИИ С 2 ФАЙЛАМИ
  704.                 JP NZ,ERR_NOFILES
  705.                 PUSH BC
  706.                 CALL RD_HEAD_FILENAME   ; ЧТЕНИЕ ОПИСАТЕЛЯ ФАЙЛА
  707.                 CALL SET_CP_FILENAME
  708.                 PUSH AF
  709.                 LD A,(TRD_5CF8)         ; ДИСКОВОД ПРИ ОПЕРАЦИИ С 2 ФАЙЛАМИ
  710.                 LD HL,TRD_5CF6          ; ДИСКОВОД ДЛЯ ВРЕМЕННОЙ ОПЕРАЦИИ
  711.                 CP (HL)
  712.                 JP NZ,SINTAX_ERROR
  713.                 CALL COM_18             ; НАСТРОЙКА НА ДИСКЕТУ
  714.                 POP AF
  715.                 JP Z,FILE_EXISTS
  716.                 POP BC
  717. LOC_569         CALL SET_HEAD_FILENAME
  718.                 CALL REWRITE_9SEC       ; ПЕРЕЗАПИСЬ 9 СЕКТОРА
  719.                 JP ERR_OK
  720.  
  721. CP_HIGH_ERR     LD A,(TRD_5D10)         ; СТАРШИЙ БАЙТ ОШИБКИ
  722.                 OR A
  723.                 RET
  724.  
  725. CP_ERASED_FILES LD A,(TRD_5D07)         ; СЧЕТЧИК УДАЛЕННЫХ ФАЙЛОВ
  726.                 OR A
  727.                 JP Z,ERR_NOFILES
  728.                 JP ERR_OK
  729.  
  730. ; ЗАПРОС НА УДАЛЕНИЕ ФАЙЛА
  731. GET_OVERWRITE_  PUSH BC
  732.                 CALL CLEAR_SCREEN       ; ОЧИСТКА ОСНОВНОГО ЭКРАНА
  733.                 LD A,(TRD_5CF6)         ; ДИСКОВОД ДЛЯ ВРЕМЕННОЙ ОПЕРАЦИИ
  734.                 ADD A,"A"
  735.                 CALL PRINT_A_
  736.                 LD A,":"
  737.                 CALL PRINT_A_
  738.                 LD HL,TRD_5CDD          ; ИМЯ ФАЙЛА
  739.                 CALL PRINT_FILENAME     ; ПЕЧАТЬ ИМЕНИ ФАЙЛА
  740.                 LD HL,ASC_2820          ; "FILE EXISTS"
  741.                 RST 0X18                ; ПЕЧАТЬ ТЕКСТОВОГО СООБЩЕНИЯ
  742.                 CALL GET_KEYS           ; ОЖИДАНИЕ НАЖАТИЯ КЛАВИШИ
  743.                 CP "Y"
  744.                 PUSH AF
  745.                 CALL CLEAR_SCREEN       ; ОЧИСТКА ОСНОВНОГО ЭКРАНА
  746.                 POP AF
  747.                 POP BC
  748.                 RET NZ
  749.                 PUSH BC
  750.                 CALL CLEAR_SCREEN       ; ОЧИСТКА ОСНОВНОГО ЭКРАНА
  751.                 POP BC
  752.                 CALL ERASE_FILE         ; УДАЛЕНИЕ ФАЙЛА
  753.                 XOR A
  754.                 RET
  755.  
  756. CP_EXT_SHARP    LD A,(TRD_5CE5)         ; РАСШИРЕНИЕ ФАЙЛА
  757.                 CP "#"
  758.                 JR Z,FIND_FILENAME_0A
  759.                 XOR A
  760.                 RET
  761.  
  762. FIND_FILENAME_0A
  763.                 LD A,0X0A
  764.                 LD (TRD_5D06),A         ; КОЛИЧЕСТВО СИМВОЛОВ ИМЕНИ ФАЙЛА ПРИ ПОИСКЕ
  765.                 CALL FIND_FILENAME      ; ПОИСК ФАЙЛА ПО ИМЕНИ ФАЙЛА
  766.                 LD A,9
  767.                 LD (TRD_5D06),A         ; КОЛИЧЕСТВО СИМВОЛОВ ИМЕНИ ФАЙЛА ПРИ ПОИСКЕ
  768.                 RET
  769.  
  770. COPY_STAR_STAR  LD A,(TRD_5CDD)         ; ВЫПОЛНЕНИЕ КОМАНДЫ COPY *,*
  771.                 CP "*"
  772.                 JP NZ,ERR_NOFILES
  773.                 CALL GET_STKBOT_
  774.                 EX DE,HL
  775.                 CALL SETUP_DSK
  776.                 LD A,(HL)
  777.                 CP "*"
  778.                 JP NZ,SINTAX_ERROR
  779.                 LD A,(TRD_5CF6)         ; ДИСКОВОД ДЛЯ ВРЕМЕННОЙ ОПЕРАЦИИ
  780.                 LD (TRD_5CF9),A         ; ДИСКОВОД ПРИ ОПЕРАЦИИ С 2 ФАЙЛАМИ
  781.                 LD A,(TRD_5CF9)         ; ДИСКОВОД ПРИ ОПЕРАЦИИ С 2 ФАЙЛАМИ
  782.                 CALL COM_01             ; НАСТРОЙКА НА ДИСКОВОД
  783.                 CALL COM_18             ; НАСТРОЙКА НА ДИСКЕТУ
  784.                 LD A,0XFF
  785.                 LD (TRD_5D0D),A
  786. LOC_5F4         LD A,(TRD_5CF8)         ; ДИСКОВОД ПРИ ОПЕРАЦИИ С 2 ФАЙЛАМИ
  787.                 CALL COM_01             ; НАСТРОЙКА НА ДИСКОВОД
  788.                 CALL COM_18             ; НАСТРОЙКА НА ДИСКЕТУ
  789.                 LD A,(TRD_5D0D)
  790.                 INC A
  791.                 LD (TRD_5D0D),A
  792.                 LD C,A
  793.                 CALL RD_HEAD_FILENAME   ; ЧТЕНИЕ ОПИСАТЕЛЯ ФАЙЛА
  794.                 LD A,(TRD_5CDD)         ; ИМЯ ФАЙЛА
  795.                 AND A
  796.                 JP Z,ERR_OK
  797.                 DEC A
  798.                 JR Z,LOC_5F4
  799.                 LD HL,TRD_5CE6          ; ДЛЯ <C>-СТАРТОВЫЙ АДРЕС,ДЛЯ <B>-ДЛИНА ПРОГРАММЫ
  800.                 LD DE,TRD_5CED          ; НОМЕР ПЕРВОГО ТРЕКА ФАЙЛА
  801.                 LD BC,7
  802.                 LDIR
  803.                 LD A,(TRD_5CF9)         ; ДИСКОВОД ПРИ ОПЕРАЦИИ С 2 ФАЙЛАМИ
  804.                 CALL COM_01             ; НАСТРОЙКА НА ДИСКОВОД
  805.                 CALL FIND_FILENAME      ; ПОИСК ФАЙЛА ПО ИМЕНИ ФАЙЛА
  806.                 JR NZ,LOC_634
  807.                 CALL CP_EXT_SHARP
  808.                 JR NZ,LOC_634
  809.                 CALL GET_OVERWRITE_     ; ЗАПРОС НА УДАЛЕНИЕ ФАЙЛА
  810.                 JR NZ, LOC_5F4
  811. LOC_634         CALL COPY_FILE_ON2DSK   ; КОПИРОВАНИЕ ФАЙЛОВ НА 2 ДИСКОВОДАХ
  812.                 CALL REWRITE_9SEC       ; ПЕРЕЗАПИСЬ 9 СЕКТОРА
  813.                 JR LOC_5F4
  814.  
  815. ; КОПИРОВАНИЕ ФАЙЛОВ НА 2 ДИСКОВОДАХ
  816. COPY_FILE_ON2DSK       
  817.                 CALL READ_9SEC          ; ЧТЕНИЕ 9 СЕКТОРА
  818.                 LD A,(TRD_5E09)
  819.                 CP 0X80
  820.                 JP Z,ERR_DIRFULL        ;В ДИРЕКТОРИИ МЕСТА НЕТУ
  821.                 LD HL,TRD_5CED          ; НОМЕР ПЕРВОГО ТРЕКА ФАЙЛА
  822.                 LD DE,TRD_5CE6          ; ДЛЯ <C>-СТАРТОВЫЙ АДРЕС,ДЛЯ <B>-ДЛИНА ПРОГРАММЫ
  823.                 LD BC,7
  824.                 LDIR
  825.                 LD A,(TRD_5CEA)         ; ДЛИНА ФАЙЛА В СЕКТОРАХ
  826.                 LD E,A
  827.                 XOR A
  828.                 LD D,A
  829.                 LD HL,(TRD_5E0A)
  830.                 SBC HL,DE
  831.                 JP C,LOC_1C45
  832.                 LD (TRD_5E0A),HL
  833.                 LD HL,(TRD_5E06)
  834.                 LD (TRD_5CEB),HL        ; НОМЕР ПЕРВОГО СЕКТОРА ФАЙЛА
  835.                 PUSH HL
  836.                 CALL COPY_FILE          ; КОПИРОВАНИЕ ФАЙЛА НА 2 ДИСКОВОДАХ
  837.                 POP HL
  838.                 LD (TRD_5CEB),HL        ; НОМЕР ПЕРВОГО СЕКТОРА ФАЙЛА
  839.                 LD HL,(TRD_5CF4)
  840.                 LD (TRD_5E06),HL
  841.                 LD HL,TRD_5E09
  842.                 INC (HL)
  843.                 LD C,(HL)
  844.                 DEC C
  845.                 LD B,0
  846.                 PUSH BC
  847.                 LD DE,9
  848.                 LD (TRD_5CF4),DE
  849.                 CALL REWRITE_9SEC       ; ПЕРЕЗАПИСЬ 9 СЕКТОРА
  850.                 POP BC
  851.                 JP SET_HEAD_FILENAME
  852.  
  853. COPY            LD HL,(TRD_5D11)        ; АДРЕС СТРОКИ КОМАНДЫ TR_DOS
  854.                 INC HL
  855.                 LD A,(HL)
  856.                 AND 0XDF
  857.                 CP "S"
  858.                 JP Z,COPY_S
  859.                 CP "B"
  860.                 JP Z,COPY_B
  861.                 CALL INPUT_2STR2STKBOT
  862.                 CALL EXIT_IF_SINTAX
  863.                 CALL RESERVED_RAM
  864.                 CALL INPUT_EXTFILENAME  ; ПРИЕМ РАСШИРЕНИЯ ФАЙЛА
  865.                 CALL SET_CP_FILENAME
  866.                 LD A,(TRD_5CF6)         ; ДИСКОВОД ДЛЯ ВРЕМЕННОЙ ОПЕРАЦИИ
  867.                 LD (TRD_5CF8),A         ; ДИСКОВОД ПРИ ОПЕРАЦИИ С 2 ФАЙЛАМИ
  868.                 JP NZ,COPY_STAR_STAR    ; ВЫПОЛНЕНИЕ КОМАНДЫ COPY *,*
  869.                 CALL RD_HEAD_FILENAME   ; ЧТЕНИЕ ОПИСАТЕЛЯ ФАЙЛА
  870.                 LD HL,TRD_5CE6          ; ДЛЯ <C>-СТАРТОВЫЙ АДРЕС,ДЛЯ <B>-ДЛИНА ПРОГРАММЫ
  871.                 LD DE,TRD_5CED          ; НОМЕР ПЕРВОГО ТРЕКА ФАЙЛА
  872.                 LD BC,7
  873.                 LDIR
  874.                 CALL SET_CP_FILENAME
  875.                 PUSH AF
  876.                 PUSH BC
  877.                 LD A,(TRD_5CF6)         ; ДИСКОВОД ДЛЯ ВРЕМЕННОЙ ОПЕРАЦИИ
  878.                 LD (TRD_5CF9),A         ; ДИСКОВОД ПРИ ОПЕРАЦИИ С 2 ФАЙЛАМИ
  879.                 LD A,(TRD_5CF8)         ; ДИСКОВОД ПРИ ОПЕРАЦИИ С 2 ФАЙЛАМИ
  880.                 CALL COM_01             ; НАСТРОЙКА НА ДИСКОВОД
  881.                 CALL COM_18             ; НАСТРОЙКА НА ДИСКЕТУ
  882.                 LD A,(TRD_5CF9)         ; ДИСКОВОД ПРИ ОПЕРАЦИИ С 2 ФАЙЛАМИ
  883.                 CALL COM_01             ; НАСТРОЙКА НА ДИСКОВОД
  884.                 CALL COM_18             ; НАСТРОЙКА НА ДИСКЕТУ
  885.                 POP BC
  886.                 POP AF
  887.                 JR NZ,LOC_6F3
  888.                 CALL CP_EXT_SHARP
  889.                 JR NZ,LOC_6F3
  890.                 CALL GET_OVERWRITE_     ; ЗАПРОС НА УДАЛЕНИЕ ФАЙЛА
  891.                 JP NZ,ERR_OK
  892. LOC_6F3         CALL COPY_FILE_ON2DSK   ; КОПИРОВАНИЕ ФАЙЛОВ НА 2 ДИСКОВОДАХ
  893.                 CALL REWRITE_9SEC       ; ПЕРЕЗАПИСЬ 9 СЕКТОРА
  894.                 LD A,(TRD_5CE5)         ; РАСШИРЕНИЕ ФАЙЛА
  895.                 CP "#"
  896.                 JP NZ,ERR_OK
  897.                 LD A,0X0A
  898.                 LD (TRD_5D06),A         ; КОЛИЧЕСТВО СИМВОЛОВ ИМЕНИ ФАЙЛА ПРИ ПОИСКЕ
  899.                 LD HL,TRD_5CE6          ; ДЛЯ <C>-СТАРТОВЫЙ АДРЕС,ДЛЯ <B>-ДЛИНА ПРОГРАММЫ
  900.                 INC (HL)
  901.                 LD A,(TRD_5CF8)         ; ДИСКОВОД ПРИ ОПЕРАЦИИ С 2 ФАЙЛАМИ
  902.                 CALL COM_01             ; НАСТРОЙКА НА ДИСКОВОД
  903.                 CALL CP_EXT_SHARP
  904.                 JP NZ,ERR_OK
  905.                 CALL RD_HEAD_FILENAME   ; ЧТЕНИЕ ОПИСАТЕЛЯ ФАЙЛА
  906.                 LD HL,TRD_5CE6          ; ДЛЯ <C>-СТАРТОВЫЙ АДРЕС,ДЛЯ <B>-ДЛИНА ПРОГРАММЫ
  907.                 LD DE,TRD_5CED          ; НОМЕР ПЕРВОГО ТРЕКА ФАЙЛА
  908.                 LD BC,7
  909.                 LDIR
  910.                 LD A,(TRD_5CF9)         ; ДИСКОВОД ПРИ ОПЕРАЦИИ С 2 ФАЙЛАМИ
  911.                 CALL COM_01             ; НАСТРОЙКА НА ДИСКОВОД
  912.                 CALL COM_18             ; НАСТРОЙКА НА ДИСКЕТУ
  913.                 JR LOC_6F3
  914.  
  915. ; КОПИРОВАНИЕ ФАЙЛА НА 2 ДИСКОВОДАХ
  916. COPY_FILE       LD A,(TRD_5CF1)
  917.                 OR A
  918.                 RET Z
  919.                 PUSH HL
  920.                 LD HL,TRD_5D23
  921.                 SUB (HL)
  922.                 POP HL
  923.                 JR NC,LOC_775
  924.                 LD A,(TRD_5CF1)
  925.                 LD B,A
  926.                 XOR A
  927.                 LD (TRD_5CF1),A
  928. LOC_744         PUSH BC
  929.                 LD A,(TRD_5CF8)         ; ДИСКОВОД ПРИ ОПЕРАЦИИ С 2 ФАЙЛАМИ
  930.                 CALL COM_01             ; НАСТРОЙКА НА ДИСКОВОД
  931.                 POP BC
  932.                 PUSH BC
  933.                 LD HL,(TRD_5CCF)        ; ВРЕМЕННОЕ СОХРАНЕНИЕ WORK_SP
  934.                 PUSH HL
  935.                 LD DE,(TRD_5CF2)
  936.                 CALL COM_05             ; ЧТЕНИЕ СЕКТОРОВ
  937.                 LD HL,(TRD_5CF4)
  938.                 LD (TRD_5CF2),HL
  939.                 LD A,(TRD_5CF9)         ; ДИСКОВОД ПРИ ОПЕРАЦИИ С 2 ФАЙЛАМИ
  940.                 CALL COM_01             ; НАСТРОЙКА НА ДИСКОВОД
  941.                 POP HL
  942.                 POP BC
  943.                 LD DE,(TRD_5CEB)        ; НОМЕР ПЕРВОГО СЕКТОРА ФАЙЛА
  944.                 CALL COM_06             ; ЗАПИСЬ СЕКТОРОВ
  945.                 LD HL,(TRD_5CF4)
  946.                 LD (TRD_5CEB),HL        ; НОМЕР ПЕРВОГО СЕКТОРА ФАЙЛА
  947.                 JR COPY_FILE            ; КОПИРОВАНИЕ ФАЙЛА НА 2 ДИСКОВОДАХ
  948.  
  949. LOC_775         LD (TRD_5CF1),A
  950.                 LD A,(TRD_5D23)
  951.                 LD B,A
  952.                 XOR A
  953.                 JR LOC_744
  954.  
  955. ERASE           CALL SET_AND_PUT        ; ВЫПОЛНЕНИЕ КОМАНДЫ ERASE
  956.                 CALL EXIT_IF_SINTAX
  957.                 CALL INPUT_EXTFILENAME  ; ПРИЕМ РАСШИРЕНИЯ ФАЙЛА
  958.                 XOR A
  959.                 LD (TRD_5D07),A         ; СЧЕТЧИК УДАЛЕННЫХ ФАЙЛОВ
  960.                 CALL FIND_FILE          ; ПОИСК ФАЙЛА ПО ИМЕНИ
  961.                 CALL ERASE_FILES
  962.                 JP NZ,CP_ERASED_FILES
  963.                 JP ERR_OK
  964.  
  965. ;УДАЛЕНИЕ ФАЙЛА
  966. ERASE_FILE      XOR A
  967.                 LD (TRD_5D07),A         ; СЧЕТЧИК УДАЛЕННЫХ ФАЙЛОВ
  968. ERASE_FILES     LD A,(TRD_5CDD)         ; ИМЯ ФАЙЛА
  969.                 LD (TRD_5D08),A         ; ПЕРВЫЙ СИМВОЛ ИМЕНИ ФАЙЛА
  970.                 RET NZ
  971.                 LD HL,TRD_5D07          ; СЧЕТЧИК УДАЛЕННЫХ ФАЙЛОВ
  972.                 INC (HL)
  973.                 PUSH BC
  974.                 CALL READ_9SEC          ; ЧТЕНИЕ 9 СЕКТОРА
  975.                 LD A,(TRD_5E09)
  976.                 POP BC
  977.                 INC C
  978.                 CP C
  979.                 JR NZ,LOC_7BC
  980.                 DEC A
  981.                 LD (TRD_5E09),A
  982.                 XOR A
  983. LOC_7BC         PUSH AF
  984.                 JR Z,LOC_7C3
  985.                 LD HL,TRD_5E19
  986.                 INC (HL)
  987. LOC_7C3         PUSH BC
  988.                 CALL REWRITE_9SEC       ; ПЕРЕЗАПИСЬ 9 СЕКТОРА
  989.                 POP BC
  990.                 DEC C
  991.                 CALL RD_HEAD_FILENAME   ; ЧТЕНИЕ ОПИСАТЕЛЯ ФАЙЛА
  992.                 POP AF
  993.                 JP Z,LOC_7D2
  994.                 LD A,1
  995. LOC_7D2         LD (TRD_5CDD),A         ; ИМЯ ФАЙЛА
  996.                 PUSH AF
  997.                 CALL WR_HEAD_FILENAME   ; СОХРАНЕНИЕ ОПИСАТЕЛЯ ФАЙЛА
  998.                 LD A,(TRD_5D08)         ; ПЕРВЫЙ СИМВОЛ ИМЕНИ ФАЙЛА
  999.                 LD (TRD_5CDD),A         ; ИМЯ ФАЙЛА
  1000.                 POP AF
  1001.                 JR Z,WR_NEW_FREE_SEC
  1002.                 CALL FIND_FILENAME      ; ПОИСК ФАЙЛА ПО ИМЕНИ ФАЙЛА
  1003.                 JR ERASE_FILES
  1004.  
  1005.                 DUPL 0X07E7-$,0XFF
  1006. WR_NEW_FREE_SEC CALL READ_9SEC          ; ЧТЕНИЕ 9 СЕКТОРА
  1007.                 LD HL,(TRD_5CEB)        ; НОМЕР ПЕРВОГО СЕКТОРА ФАЙЛА
  1008.                 LD (TRD_5E06),HL
  1009.                 LD DE,(TRD_5CEA)        ; ДЛИНА ФАЙЛА В СЕКТОРАХ
  1010.                 LD HL,(TRD_5E0A)
  1011.                 LD D,0
  1012.                 ADD HL,DE
  1013.                 LD (TRD_5E0A),HL
  1014.                 JP REWRITE_9SEC         ; ПЕРЕЗАПИСЬ 9 СЕКТОРА
  1015.  
  1016. ;===============FREE SPACE 1============
  1017.                 include virtual.a80
  1018.  
  1019. WORK4ERROR      LD HL,(TRD_5D1C)        ; СОХРАНЕНИЕ РЕГИСТРА SP
  1020.                 DEC HL
  1021.                 DEC HL
  1022.                 LD SP,HL
  1023.                 JP LOC_1D2F
  1024.  
  1025. CP_VARSTRDOS    CALL SET_RWPORT0
  1026.                 LD HL,(CHANS)
  1027.                 OR A
  1028.                 LD BC,TRD_5D25
  1029.                 SBC HL,BC
  1030.                 CALL C,CREATE_VARS
  1031.                 LD HL,TRD_5CC2                  ;ДЛЯ ВЫХОДА ИЗ TR-DOS В BASIC ПО КОМАНДЕ RETURN
  1032.                 RET
  1033.  
  1034. RUN_CODE        CALL RESTORE_SP
  1035.                 LD BC,(TRD_5CC6)                ;АДРЕС ЗАГРУЗКИ ИЗ КОМАНДНОЙ СТРОКИLD BC,(TRD_5CD9)
  1036.                 PUSH BC
  1037.                 RET
  1038.  
  1039. ; ПЕЧАТЬ ИМЕНИ ФАЙЛА
  1040. PRINT_FILENAME  PUSH BC
  1041.                 CALL PRINT8SYM
  1042.                 LD A,0X3C
  1043.                 RST 0X10
  1044.                 LD A,(HL)
  1045.                 RST 0X10
  1046.                 LD A,0X3E
  1047.                 RST 0X10
  1048.                 POP BC
  1049.                 RET
  1050.  
  1051. ;ПЕЧАТЬ ТЕКУЩЕГО ФОРРМАТИРУЕМОГО ТРЕКА И СТОРОНЫ
  1052. PRINT_NUM_TRK   PUSH DE
  1053.                 PUSH AF
  1054.                 PUSH DE
  1055.                 LD A,0X16
  1056.                 RST 0X10
  1057.                 LD A,(0X5C6B)
  1058.                 DEC A
  1059.                 RST 0X10
  1060.                 LD A,0
  1061.                 RST 0X10
  1062.                 LD HL,TXT_FORMAT_TRK
  1063.                 RST 0X18
  1064.                 POP DE
  1065.                 LD C,E
  1066.                 LD B,0
  1067.                 CALL PRINT_CHISLO
  1068.                 LD HL,TXT_FSIDE
  1069.                 RST 0X18
  1070.                 POP AF
  1071.                 LD A,"0"
  1072.                 ADC A,0
  1073.                 RST 0X10
  1074.                 POP DE
  1075.                 RET
  1076.  
  1077. TXT_FORMAT_TRK  DC "FORMAT TRACK: "
  1078. TXT_FSIDE       DC "  SIDE: "
  1079.  
  1080. PRINT8SYM       PUSH BC
  1081.                 LD B,8
  1082. PRINT8SYM1      LD A,(HL)
  1083.                 AND 0X7F
  1084.                 INC HL
  1085.                 RST 0X20
  1086.                 DW 0X10
  1087.                 DJNZ PRINT8SYM1
  1088.                 POP BC
  1089.                 RET
  1090. ;=======END OF FREE SPACE 1=============
  1091.  
  1092. COM_STAR        CALL SET_AND_PUT
  1093.                 CALL EXIT_IF_SINTAX
  1094.                 CALL CP_ON_STKBOT
  1095.                 LD A,(DE)
  1096.                 CALL NUMDSK2BYTE
  1097.                 LD (TRD_5D19),A         ; ДИСКОВОД ПО УМОЛЧАНИЮ
  1098.                 CALL COM_01             ; НАСТРОЙКА НА ДИСКОВОД
  1099.                 JP ERR_OK
  1100.  
  1101. ; ПРИЕМ РАСШИРЕНИЯ ФАЙЛА
  1102. INPUT_EXTFILENAME
  1103.                 LD B,"C"
  1104.                 LD A,(TRD_5CD6)         ; #FF-КОМАНДА ПРИНЯТА СИНТАКСИЧЕСКИМ АНАЛИЗАТОРОМ
  1105.                 OR A
  1106.                 JR NZ,LOC_104D
  1107.                 CALL GET_SYMSTR
  1108.                 CP 0XAF                 ;CODE
  1109.                 LD B,"C"
  1110.                 JR Z,LOC_104D
  1111.                 CP 0XE4                 ;DATA
  1112.                 LD B,"D"
  1113.                 JR Z,LOC_104D
  1114.                 CP "#"
  1115.                 LD B,"#"
  1116.                 JR Z,LOC_104D
  1117.                 LD B,"B"
  1118. LOC_104D        LD HL,TRD_5CE5          ; РАСШИРЕНИЕ ФАЙЛА
  1119.                 LD (HL),B
  1120.                 RET
  1121.  
  1122. ; ОЖИДАНИЕ НАЖАТИЯ КЛАВИШИ
  1123. GET_KEYS        DI
  1124.                 PUSH HL
  1125.                 PUSH BC
  1126.                 PUSH DE
  1127. LOC_1056        RST 0X20
  1128.                 DW 0X028E                       ; СКАНИРОВАНИЕ КЛАВИАТУРЫ
  1129.                 LD C,0
  1130.                 JR NZ,LOC_1056
  1131.                 RST 0X20
  1132.                 DW 0X031E                       ; ПРОВЕРКА ЗНАЧЕНИЯ НАЖАТОЙ КЛАВИШИ
  1133.                 JR NC,LOC_1056
  1134.                 DEC D
  1135.                 LD E,A
  1136.                 RST 0X20
  1137.                 DW 0X0333                       ; ДЕКОДИРОВАНИЕ КЛАВИАТУРЫ
  1138.                 POP DE
  1139.                 POP BC
  1140.                 POP HL
  1141.                 AND 0XDF
  1142.                 EI
  1143.                 RET
  1144.  
  1145. ; РИСОВАНИЕ ЦВЕТНЫХ ЛИНИЙ ЗАСТАВКИ ДОСА
  1146. OUT_COLOR_LINE  LD HL,ZASTV_ATR
  1147.                 LD B,0X0A
  1148. LOC_1073        LD (HL),7
  1149.                 INC HL
  1150.                 DJNZ LOC_1073
  1151.                 LD (HL),2
  1152.                 INC HL
  1153.                 LD (HL),0X16
  1154.                 INC HL
  1155.                 LD (HL),0X34
  1156.                 INC HL
  1157.                 LD (HL),0X25
  1158.                 INC HL
  1159.                 LD (HL),0X28
  1160.                 INC HL
  1161.                 LD (HL),7
  1162.                 LD HL,ZASTV_PIX
  1163.                 LD B,8
  1164.                 XOR A
  1165. LOC_108F        PUSH BC
  1166.                 SCF
  1167.                 RLA
  1168.                 PUSH HL
  1169.                 PUSH AF
  1170.                 LD B,5
  1171. LOC_1096        INC HL
  1172.                 LD (HL), A
  1173.                 DJNZ LOC_1096
  1174.                 POP AF
  1175.                 POP HL
  1176.                 POP BC
  1177.                 INC H
  1178.                 DJNZ LOC_108F
  1179.                 RET
  1180.  
  1181.                 DUPL 0X10A5-$,0XFF
  1182. ASC_10A5        DC " Del. File(s)"
  1183. ASC_10B3        DC "Title: "
  1184. BYTE_10BA       DB 0X17,0X11
  1185.                 DC " Disk Drive: "
  1186. BYTE_10CA       DB 0X17,0X10,0XA0
  1187. BYTE_10CE       DB 0X17,0X10
  1188.                 DC " 40 Track S. Side"
  1189. BYTE_10E2       DB 0X17,0X10
  1190.                 DC " 80 Track S. Side"
  1191. BYTE_10F6       DB 0X17,0X10
  1192.                 DC " 40 Track D. Side"
  1193. BYTE_110A       DB 0X17,0X10
  1194.                 DC " 80 Track D. Side"
  1195. BYTE_111E       DB 0X17,0X10
  1196.                 DC " Free Sector "
  1197. BYTE_112E       DB 0X0D,0X0D
  1198.                 DC "  File Name    Start Length Line"
  1199.  
  1200. CREATE_222BYTES LD HL,(WORKSP)
  1201.                 LD (TRD_5CCF),HL        ; ВРЕМЕННОЕ СОХРАНЕНИЕ WORK_SP
  1202.                 LD BC,0X222
  1203.                 JP CREATE_FREERAM
  1204.  
  1205. ;ПЕЧАТЬ ЧИСЛА ИЗ РЕГИСТРА HL В ДЕСЯТИЧНОМ ВИДЕ
  1206. PRINT_HL_CHISLO XOR A
  1207.                 LD DE,10000
  1208. LOC_1161        SBC HL,DE
  1209.                 JR C,LOC_1168
  1210.                 INC A
  1211.                 JR LOC_1161
  1212.  
  1213. LOC_1168        ADD A,"0"
  1214.                 CALL PRINT_A_
  1215.                 ADD HL,DE
  1216.                 XOR A
  1217.                 LD DE,1000
  1218. LOC_1172        SBC HL,DE
  1219.                 JR C,LOC_1179
  1220.                 INC A
  1221.                 JR LOC_1172
  1222.  
  1223. LOC_1179        ADD A,"0"
  1224.                 CALL PRINT_A_
  1225.                 ADD HL,DE
  1226.                 XOR A
  1227.                 LD DE,100
  1228. LOC_1183        SBC HL,DE
  1229.                 JR C,LOC_118A
  1230.                 INC A
  1231.                 JR LOC_1183
  1232.  
  1233. LOC_118A        ADD A,"0"
  1234.                 CALL PRINT_A_
  1235.                 ADD HL,DE
  1236.                 XOR A
  1237.                 LD DE,10
  1238. LOC_1194        SBC HL,DE
  1239.                 JR C,LOC_119B
  1240.                 INC A
  1241.                 JR LOC_1194
  1242.  
  1243. LOC_119B        ADD A,"0"
  1244.                 CALL PRINT_A_
  1245.                 ADD HL,DE
  1246.                 LD A,L
  1247.                 ADD A,"0"
  1248.                 JP PRINT_A_
  1249.  
  1250. FIND_END_BUFDIR PUSH HL
  1251.                 PUSH BC
  1252.                 LD A,(TRD_5CF9)         ; ДИСКОВОД ПРИ ОПЕРАЦИИ С 2 ФАЙЛАМИ
  1253.                 LD HL,TRD_5CF6          ; ДИСКОВОД ДЛЯ ВРЕМЕННОЙ ОПЕРАЦИИ
  1254.                 CP (HL)
  1255.                 CALL NZ,COM_01          ; НАСТРОЙКА НА ДИСКОВОД
  1256.                 POP BC
  1257.                 POP HL
  1258.                 CALL CP_END_BUF
  1259.                 LD A,(HL)
  1260.                 OR A
  1261.                 JP Z,END_COMAND
  1262.                 CP 1
  1263.                 CALL Z,ADD_10
  1264.                 RET NZ
  1265.                 JR FIND_END_BUFDIR
  1266.  
  1267. LIST            CALL CP_SECOND_SYM
  1268.                 LD BC,2
  1269.                 LD (TRD_5CDB),BC
  1270.                 JR Z,LOC_1205
  1271.                 CP "#"
  1272.                 JR NZ,LIST4CODES
  1273.                 LD (CH_ADD),HL
  1274.                 CALL SET_NUM_CHAN
  1275.                 CALL GET_SYMSTR
  1276.                 CP 0X0D
  1277.                 JR Z,LOC_1205
  1278.                 CP ","
  1279.                 JP NZ,SINTAX_ERROR
  1280.                 CALL GET_NEXT_SYM
  1281.                 CALL PUT_NUMDSK_STK
  1282.                 JR LOC_11FB
  1283.  
  1284. LIST4CODES      CALL SET_AND_PUT
  1285. LOC_11FB        CALL EXIT_IF_SINTAX
  1286.                 CALL GET_STKBOT_
  1287.                 EX DE,HL
  1288.                 CALL SETUP_DSK
  1289. LOC_1205        CALL EXIT_IF_SINTAX
  1290.                 LD A,(TRD_5CF6)         ; ДИСКОВОД ДЛЯ ВРЕМЕННОЙ ОПЕРАЦИИ
  1291.                 LD (TRD_5CF9),A         ; ДИСКОВОД ПРИ ОПЕРАЦИИ С 2 ФАЙЛАМИ
  1292.                 CALL COM_18             ; НАСТРОЙКА НА ДИСКЕТУ
  1293.                 LD A,(TRD_5CDB)
  1294.                 CP 2
  1295.                 PUSH AF
  1296.                 CALL Z,CLEAR_SCREEN     ; ОЧИСТКА ОСНОВНОГО ЭКРАНА
  1297.                 POP AF
  1298.                 CP 0X11
  1299.                 JP NC,SINTAX_ERROR
  1300.                 CALL OPENSTREAM
  1301.                 LD A,0XFF
  1302.                 LD (TRD_5CF8),A         ; ДИСКОВОД ПРИ ОПЕРАЦИИ С 2 ФАЙЛАМИ
  1303.                 CALL CREATE_222BYTES
  1304.                 LD HL,TRD_5E06
  1305.                 LD DE,(TRD_5CCF)        ; ВРЕМЕННОЕ СОХРАНЕНИЕ WORK_SP
  1306.                 LD BC,0X20
  1307.                 LDIR
  1308.                 CALL RD_0SEC2BUF        ; ЧТЕНИЕ СЕКТОРА 0 КАТАЛОГА
  1309.                 LD HL,TRD_5D25
  1310.                 PUSH HL
  1311. LOC_123E        LD HL,ASC_10B3          ; "TITLE:"
  1312.                 PUSH BC
  1313.                 RST 0X18
  1314.                 LD HL,(TRD_5CCF)        ; ВРЕМЕННОЕ СОХРАНЕНИЕ WORK_SP
  1315.                 LD BC,0X14
  1316.                 ADD HL,BC
  1317.                 CALL PRINT8SYM
  1318.                 LD HL,BYTE_10BA
  1319.                 RST 0X18
  1320.                 LD A,(TRD_5CF6)         ; ДИСКОВОД ДЛЯ ВРЕМЕННОЙ ОПЕРАЦИИ
  1321.                 ADD A,"A"
  1322.                 CALL PRINT_A_
  1323.                 CALL PRINT_0D
  1324.                 LD HL,(TRD_5CCF)        ; ВРЕМЕННОЕ СОХРАНЕНИЕ WORK_SP
  1325.                 LD BC,3
  1326.                 ADD HL,BC
  1327.                 LD A,(HL)
  1328.                 LD HL,(TRD_5CCF)        ; ВРЕМЕННОЕ СОХРАНЕНИЕ WORK_SP
  1329.                 LD BC,0X13
  1330.                 ADD HL,BC
  1331.                 SUB (HL)
  1332.                 PUSH HL
  1333.                 CALL PRINT_CHISLO_A_
  1334.                 LD HL,ASC_10A5+5
  1335.                 RST 0X18
  1336.                 LD HL,(TRD_5CCF)        ; ВРЕМЕННОЕ СОХРАНЕНИЕ WORK_SP
  1337.                 LD BC,2
  1338.                 ADD HL,BC
  1339.                 LD A,(HL)
  1340.                 LD HL,BYTE_10CE
  1341.                 CP 0X19
  1342.                 JR Z,LOC_1292
  1343.                 LD HL,BYTE_10E2
  1344.                 CP 0X18
  1345.                 JR Z,LOC_1292
  1346.                 LD HL,BYTE_10F6
  1347.                 CP 0X17
  1348.                 JR Z,LOC_1292
  1349.                 LD HL,BYTE_110A
  1350. LOC_1292        RST 0X18
  1351.                 POP HL
  1352.                 LD C,(HL)
  1353.                 CALL CONV2_2BYTES
  1354.                 LD HL,ASC_10A5          ; " DEL. FILE(S)"
  1355.                 RST 0X18
  1356.                 LD HL,BYTE_111E
  1357.                 RST 0X18
  1358.                 LD HL,(TRD_5CCF)        ; ВРЕМЕННОЕ СОХРАНЕНИЕ WORK_SP
  1359.                 LD BC,4
  1360.                 ADD HL,BC
  1361.                 LD C,(HL)
  1362.                 INC HL
  1363.                 LD B,(HL)
  1364.                 CALL PRINT_CHISLO       ; ПЕЧАТЬ ЧИСЛА
  1365.                 LD HL,BYTE_112E
  1366.                 RST 0X18
  1367.                 POP BC
  1368.                 POP HL
  1369.                 LD B,0X10               ;СКОЛЬКО ИМЕН ФАЙЛОВ ЗА ПРОХОД ВЫВЕСТИ НА ЭКРАН
  1370. LOC_12B5        CALL FIND_END_BUFDIR    ;ПРОВЕРКА НА ОКОНЧАНИЕ ДИРЕКТОРИИ
  1371.                 CALL PRINT_0D           ;ПЕРЕВОД СТРОКИ
  1372.                 PUSH BC
  1373.                 PUSH HL
  1374.                 CALL PRINT_FILENAME     ; ПЕЧАТЬ ИМЕНИ ФАЙЛА
  1375.                 LD BC,0X0D
  1376.                 POP HL
  1377.                 PUSH HL
  1378.                 ADD HL,BC
  1379.                 LD C,(HL)
  1380.                 PUSH BC
  1381.                 LD A,C
  1382.                 LD B,2
  1383.                 CP 0X0A
  1384.                 JR C,LOC_12D0
  1385.                 DEC B
  1386. LOC_12D0        CP 0X64
  1387.                 JR NC,LOC_12D9
  1388. LOC_12D4        LD A," "
  1389.                 RST 0X10
  1390.                 DJNZ LOC_12D4
  1391. LOC_12D9        POP BC
  1392.                 CALL PRINT_CHISLO       ; ПЕЧАТЬ ЧИСЛА
  1393.                 LD HL,BYTE_10CA
  1394.                 RST 0X18
  1395.                 POP HL
  1396.                 PUSH HL
  1397.                 LD BC,9
  1398.                 ADD HL,BC
  1399.                 LD E,(HL)
  1400.                 INC HL
  1401.                 LD D,(HL)
  1402.                 PUSH HL
  1403.                 EX DE,HL
  1404.                 CALL PRINT_HL_CHISLO
  1405.                 LD A," "
  1406.                 CALL PRINT_A_
  1407.                 POP HL
  1408.                 INC HL
  1409.                 LD E,(HL)
  1410.                 INC HL
  1411.                 LD D,(HL)
  1412.                 EX DE,HL
  1413.                 CALL PRINT_HL_CHISLO
  1414.                 POP HL
  1415.                 PUSH HL
  1416.                 LD BC,8
  1417.                 ADD HL,BC
  1418.                 LD A,(HL)
  1419.                 CP "B"
  1420.                 CALL Z,PRN_ADR_ASTART
  1421.                 POP HL
  1422.                 POP BC
  1423.                 LD DE,0X10
  1424.                 ADD HL,DE
  1425.                 DJNZ LOC_12B5
  1426.                 PUSH HL
  1427.                 CALL PRINT_0D
  1428.                 CALL PRINT_0D
  1429.                 JP LOC_123E
  1430.  
  1431. PRN_ADR_ASTART  LD BC,5
  1432.                 ADD HL,BC
  1433.                 LD B,(HL)
  1434.                 INC HL
  1435.                 LD E,(HL)
  1436.                 INC HL
  1437.                 LD D,(HL)
  1438.                 DEC B
  1439.                 JR Z,LOC_1335
  1440.                 DEC B
  1441.                 JR Z,LOC_1335
  1442.                 LD A,0X10
  1443. LOC_132C        INC E
  1444.                 CP E
  1445.                 JR NZ,LOC_1333
  1446.                 LD E,0
  1447.                 INC D
  1448. LOC_1333        DJNZ LOC_132C
  1449. LOC_1335        LD HL,(TRD_5CCF)        ; ВРЕМЕННОЕ СОХРАНЕНИЕ WORK_SP
  1450.                 LD BC,0X21
  1451.                 ADD HL,BC
  1452.                 LD B,2
  1453.                 PUSH HL
  1454.                 CALL COM_05             ; ЧТЕНИЕ СЕКТОРОВ
  1455.                 LD A,0X80
  1456.                 POP HL
  1457.                 LD BC,0X200
  1458.                 CPIR
  1459.                 LD A,(HL)
  1460.                 CP 0XAA
  1461.                 RET NZ
  1462.                 INC HL
  1463.                 LD C,(HL)
  1464.                 INC HL
  1465.                 LD B,(HL)
  1466.                 LD A,B
  1467.                 OR C
  1468.                 RET Z
  1469.                 LD A,0X20
  1470.                 CALL PRINT_A_
  1471.                 JP PRINT_CHISLO         ; ПЕЧАТЬ ЧИСЛА
  1472.  
  1473. COPY_S          CALL SET_CH_ADD
  1474.                 CALL GET_NEXT_SYM
  1475.                 CALL PUT_NUMDSK_STK
  1476.                 CALL EXIT_IF_SINTAX
  1477.                 CALL RESERVED_RAM
  1478.                 LD HL,ASC_27AA          ; "INSERT SOURCE DISK THEN PRESS Y"
  1479.                 RST 0X18                ; ПЕЧАТЬ ТЕКСТОВОГО СООБЩЕНИЯ
  1480. LOC_1375        CALL GET_KEYS           ; ОЖИДАНИЕ НАЖАТИЯ КЛАВИШИ
  1481.                 CP "Y"
  1482.                 JR NZ,LOC_1375
  1483.                 CALL CLEAR_DOWN_SCR     ; ОЧИСТКА НИЖНЕЙ ЧАСТИ ЭКРАНА
  1484.                 CALL INPUT_EXTFILENAME  ; ПРИЕМ РАСШИРЕНИЯ ФАЙЛА
  1485.                 CALL SET_CP_FILENAME
  1486.                 JP NZ,ERR_NOFILES
  1487.                 CALL COPY_ON1DSK
  1488.                 LD A,(TRD_5CE5)         ; РАСШИРЕНИЕ ФАЙЛА
  1489.                 CP "#"
  1490.                 JP NZ,ERR_OK
  1491. LOC_1393        LD A,0X0A
  1492.                 LD (TRD_5D06),A         ; КОЛИЧЕСТВО СИМВОЛОВ ИМЕНИ ФАЙЛА ПРИ ПОИСКЕ
  1493.                 LD HL,TRD_5CE6          ; ДЛЯ <C>-СТАРТОВЫЙ АДРЕС,ДЛЯ <B>-ДЛИНА ПРОГРАММЫ
  1494.                 INC (HL)
  1495.                 CALL CLEAR_SCREEN       ; ОЧИСТКА ОСНОВНОГО ЭКРАНА
  1496.                 LD HL,ASC_27AA          ; "INSERT SOURCE DISK THEN PRESS Y"
  1497.                 RST 0X18                ; ПЕЧАТЬ ТЕКСТОВОГО СООБЩЕНИЯ
  1498. LOC_13A5        CALL GET_KEYS           ; ОЖИДАНИЕ НАЖАТИЯ КЛАВИШИ
  1499.                 CP "Y"
  1500.                 JR NZ,LOC_13A5
  1501.                 CALL FIND_FILENAME      ; ПОИСК ФАЙЛА ПО ИМЕНИ ФАЙЛА
  1502.                 JP NZ,ERR_OK
  1503.                 CALL COPY_ON1DSK
  1504.                 JR LOC_1393
  1505.  
  1506. COPY_ON1DSK     CALL RD_HEAD_FILENAME   ; ЧТЕНИЕ ОПИСАТЕЛЯ ФАЙЛА
  1507.                 LD HL,TRD_5CE6          ; ДЛЯ <C>-СТАРТОВЫЙ АДРЕС,ДЛЯ <B>-ДЛИНА ПРОГРАММЫ
  1508.                 LD DE,TRD_5CED          ; НОМЕР ПЕРВОГО ТРЕКА ФАЙЛА
  1509.                 LD BC,7
  1510.                 LDIR
  1511.                 LD A,(TRD_5CF1)
  1512.                 LD (TRD_5D10),A         ; СТАРШИЙ БАЙТ ОШИБКИ
  1513.                 CALL COM_18             ; НАСТРОЙКА НА ДИСКЕТУ
  1514.                 CALL GET_TYPE_DISK
  1515.                 LD (TRD_5CD9), A        ; ПРОМЕЖУТОЧНАЯ ДЛИНА ДЛЯ <B> И <C>
  1516.                 LD A,0XFF
  1517.                 LD (TRD_5D21),A
  1518.                 CALL COPY_ON1DSK_
  1519.                 LD HL,(TRD_5D1F)
  1520.                 LD (TRD_5CEB),HL        ; НОМЕР ПЕРВОГО СЕКТОРА ФАЙЛА
  1521.                 LD HL,(TRD_5CF4)
  1522.                 LD (TRD_5E06),HL
  1523.                 LD HL,TRD_5E09
  1524.                 INC (HL)
  1525.                 LD C,(HL)
  1526.                 DEC C
  1527.                 LD B,0
  1528.                 PUSH BC
  1529.                 LD DE,9
  1530.                 LD (TRD_5CF4),DE
  1531.                 CALL REWRITE_9SEC       ; ПЕРЕЗАПИСЬ 9 СЕКТОРА
  1532.                 POP BC
  1533.                 CALL SET_HEAD_FILENAME
  1534.                 JP REWRITE_9SEC         ; ПЕРЕЗАПИСЬ 9 СЕКТОРА
  1535.  
  1536. CP_FREESEC      XOR A
  1537.                 LD (TRD_5D21),A
  1538.                 CALL COM_18             ; НАСТРОЙКА НА ДИСКЕТУ
  1539.                 CALL GET_TYPE_DISK
  1540.                 LD (TRD_5CDA), A
  1541.                 CALL FIND_FILENAME      ; ПОИСК ФАЙЛА ПО ИМЕНИ ФАЙЛА
  1542.                 JP Z,FILE_EXISTS
  1543.                 CALL READ_9SEC          ; ЧТЕНИЕ 9 СЕКТОРА
  1544.                 LD A,(TRD_5E09)
  1545.                 CP 0X80
  1546.                 JP Z,ERR_DIRFULL
  1547.                 LD HL,TRD_5CED          ; НОМЕР ПЕРВОГО ТРЕКА ФАЙЛА
  1548.                 LD DE,TRD_5CE6          ; ДЛЯ <C>-СТАРТОВЫЙ АДРЕС,ДЛЯ <B>-ДЛИНА ПРОГРАММЫ
  1549.                 LD BC,7
  1550.                 LDIR
  1551.                 CALL READ_9SEC          ; ЧТЕНИЕ 9 СЕКТОРА
  1552.                 LD A,(TRD_5D10)         ; СТАРШИЙ БАЙТ ОШИБКИ
  1553.                 LD (TRD_5CEA),A         ; ДЛИНА ФАЙЛА В СЕКТОРАХ
  1554.                 LD DE,(TRD_5CEA)        ; ДЛИНА ФАЙЛА В СЕКТОРАХ
  1555.                 LD D,0
  1556.                 OR A
  1557.                 LD HL,(TRD_5E0A)
  1558.                 SBC HL,DE
  1559.                 JP C,LOC_1C45
  1560.                 LD (TRD_5E0A), HL
  1561.                 LD HL,(TRD_5E06)
  1562.                 LD (TRD_5CEB),HL        ; НОМЕР ПЕРВОГО СЕКТОРА ФАЙЛА
  1563.                 LD (TRD_5D1F),HL
  1564.                 RET
  1565.  
  1566. COPY_ON1DSK_    LD A,(TRD_5CF1)
  1567.                 OR A
  1568.                 RET Z
  1569.                 LD A,(TRD_5D21)
  1570.                 OR A
  1571.                 JR NZ,LOC_146F
  1572.                 CALL CLEAR_SCREEN       ; ОЧИСТКА ОСНОВНОГО ЭКРАНА
  1573.                 LD HL,ASC_27AA          ; "INSERT SOURCE DISK THEN PRESS Y"
  1574.                 RST 0X18                ; ПЕЧАТЬ ТЕКСТОВОГО СООБЩЕНИЯ
  1575. LOC_1465        CALL GET_KEYS           ; ОЖИДАНИЕ НАЖАТИЯ КЛАВИШИ
  1576.                 CP "Y"
  1577.                 JR NZ,LOC_1465
  1578.                 CALL CLEAR_DOWN_SCR     ; ОЧИСТКА НИЖНЕЙ ЧАСТИ ЭКРАНА
  1579. LOC_146F        LD A,(TRD_5CF1)
  1580.                 OR A
  1581.                 RET Z
  1582.                 PUSH HL
  1583.                 LD HL,TRD_5D23
  1584.                 SUB (HL)
  1585.                 POP HL
  1586.                 JR NC,LOC_14CB
  1587.                 LD A,(TRD_5CF1)
  1588.                 LD B,A
  1589.                 XOR A
  1590.                 LD (TRD_5CF1), A
  1591. LOC_1484        PUSH BC
  1592.                 LD (TRD_5CCE),A         ; #00-ЧТЕНИЕ СЕКТОРА,#FF-ЗАПИСЬ СЕКТОРА
  1593.                 LD HL,(TRD_5CCF)        ; ВРЕМЕННОЕ СОХРАНЕНИЕ WORK_SP
  1594.                 PUSH HL
  1595.                 LD DE,(TRD_5CF2)
  1596.                 CALL SETUP_DSK_SOURCE
  1597.                 CALL COM_05             ; ЧТЕНИЕ СЕКТОРОВ
  1598.                 LD HL,(TRD_5CF4)
  1599.                 LD (TRD_5CF2), HL
  1600.                 CALL CLEAR_SCREEN       ; ОЧИСТКА ОСНОВНОГО ЭКРАНА
  1601.                 LD HL,ASC_2785          ; "INSERT DESTINATION DISK"
  1602.                 RST 0X18                ; ПЕЧАТЬ ТЕКСТОВОГО СООБЩЕНИЯ
  1603. LOC_14A5        CALL GET_KEYS           ; ОЖИДАНИЕ НАЖАТИЯ КЛАВИШИ
  1604.                 CP "Y"
  1605.                 JR NZ,LOC_14A5
  1606.                 CALL CLEAR_DOWN_SCR     ; ОЧИСТКА НИЖНЕЙ ЧАСТИ ЭКРАНА
  1607.                 LD A,(TRD_5D21)
  1608.                 OR A
  1609.                 CALL NZ,CP_FREESEC
  1610.                 POP HL
  1611.                 POP BC
  1612.                 LD DE,(TRD_5CEB)        ; НОМЕР ПЕРВОГО СЕКТОРА ФАЙЛА
  1613.                 CALL SETUP_DSK_DEST
  1614.                 CALL COM_06
  1615.                 LD HL,(TRD_5CF4)
  1616.                 LD (TRD_5CEB),HL        ; НОМЕР ПЕРВОГО СЕКТОРА ФАЙЛА
  1617.                 JP COPY_ON1DSK_
  1618.  
  1619. LOC_14CB        LD (TRD_5CF1),A
  1620.                 LD A,(TRD_5D23)
  1621.                 LD B,A
  1622.                 XOR A
  1623.                 JP LOC_1484
  1624.  
  1625.                 DUPL 0X14D8-$,0XFF
  1626. SETUP_DSK_SOURCE
  1627.                 PUSH HL
  1628.                 PUSH DE
  1629.                 CALL GET_TYPE_DISK
  1630.                 LD A,(TRD_5CD9)         ; ПРОМЕЖУТОЧНАЯ ДЛИНА ДЛЯ <B> И <C>
  1631.                 LD (HL),A
  1632.                 POP DE
  1633.                 POP HL
  1634.                 RET
  1635.  
  1636. SETUP_DSK_DEST  PUSH HL
  1637.                 PUSH DE
  1638.                 CALL GET_TYPE_DISK
  1639.                 LD A,(TRD_5CDA)
  1640.                 LD (HL),A
  1641.                 POP DE
  1642.                 POP HL
  1643.                 RET
  1644.  
  1645. CP_FREE_DEST    XOR A
  1646.                 LD (TRD_5D21),A
  1647.                 CALL COM_18             ; НАСТРОЙКА НА ДИСКЕТУ
  1648.                 CALL GET_TYPE_DISK
  1649.                 LD (TRD_5CDA),A
  1650.                 LD A,(TRD_5E08)
  1651.                 LD (TRD_5CE7),A         ; ДЛЯ <C>-СТАРТОВЫЙ АДРЕС,ДЛЯ <B>-ДЛИНА ПРОГРАММЫ
  1652.                 LD HL,0X280
  1653.                 CP 0X19
  1654.                 JR Z,SAVE_SECS_DEST
  1655.                 LD HL,0X500
  1656.                 CP 0X18
  1657.                 JR Z,SAVE_SECS_DEST
  1658.                 CP 0X17
  1659.                 JR Z,SAVE_SECS_DEST
  1660.                 LD HL,0X0A00
  1661.                 CP 0X16
  1662.                 JR Z,SAVE_SECS_DEST
  1663.                 JP SINTAX_ERROR
  1664.  
  1665. SAVE_SECS_DEST  LD (TRD_5CDD),HL        ; ИМЯ ФАЙЛА
  1666.                 LD BC,(TRD_5CDF)
  1667.                 SBC HL,BC
  1668.                 JP C,LOC_1C45
  1669.                 RET
  1670.  
  1671. COPY_B          CALL EXIT_IF_SINTAX
  1672.                 CALL RESERVED_RAM
  1673.                 LD HL,ASC_2779          ; "BACKUP DISK"
  1674.                 RST 0X18                ; ПЕЧАТЬ ТЕКСТОВОГО СООБЩЕНИЯ
  1675.                 LD HL,ASC_27AA          ; "INSERT SOURCE DISK THEN PRESS Y"
  1676.                 RST 0X18                ; ПЕЧАТЬ ТЕКСТОВОГО СООБЩЕНИЯ
  1677. LOC_153E        CALL GET_KEYS           ; ОЖИДАНИЕ НАЖАТИЯ КЛАВИШИ
  1678.                 CP "Y"
  1679.                 JR NZ,LOC_153E
  1680.                 CALL CLEAR_DOWN_SCR     ; ОЧИСТКА НИЖНЕЙ ЧАСТИ ЭКРАНА
  1681.                 LD A,0XFF
  1682.                 LD (TRD_5D21),A
  1683.                 CALL COM_18             ; НАСТРОЙКА НА ДИСКЕТУ
  1684.                 CALL GET_TYPE_DISK
  1685.                 LD (TRD_5CD9),A         ; ПРОМЕЖУТОЧНАЯ ДЛИНА ДЛЯ <B> И <C>
  1686.                 LD A,(TRD_5E08)
  1687.                 CP 0X19
  1688.                 LD HL,0X280
  1689.                 JR Z,LOC_1575
  1690.                 LD HL,0X500
  1691.                 CP 0X18
  1692.                 JR Z,LOC_1575
  1693.                 CP 0X17
  1694.                 JR Z,LOC_1575
  1695.                 LD HL,0X0A00
  1696.                 CP 0X16
  1697.                 JR Z,LOC_1575
  1698.                 JP DISCERROR_
  1699.  
  1700. LOC_1575        LD BC,(TRD_5E0A)
  1701.                 SBC HL,BC
  1702.                 LD (TRD_5CE5),HL        ; РАСШИРЕНИЕ ФАЙЛА
  1703.                 LD (TRD_5CDF),HL
  1704.                 LD HL,0
  1705.                 LD (TRD_5CE1),HL
  1706.                 LD (TRD_5CE3),HL
  1707.                 CALL COPY_SECTORS
  1708.                 CALL COM_18             ; НАСТРОЙКА НА ДИСКЕТУ
  1709.                 LD A,(TRD_5CE7)         ; ДЛЯ <C>-СТАРТОВЫЙ АДРЕС,ДЛЯ <B>-ДЛИНА ПРОГРАММЫ
  1710.                 LD (TRD_5E08),A
  1711.                 LD HL,(TRD_5CDD)        ; ИМЯ ФАЙЛА
  1712.                 LD BC,(TRD_5CDF)
  1713.                 SBC HL,BC
  1714.                 LD (TRD_5E0A),HL
  1715.                 CALL SETUP_DSK_DEST
  1716.                 LD DE,9
  1717.                 LD (TRD_5CF4),DE
  1718.                 CALL REWRITE_9SEC       ; ПЕРЕЗАПИСЬ 9 СЕКТОРА
  1719.                 JP ERR_OK
  1720.  
  1721.                 DUPL 0X15B2-$,0XFF
  1722. CP_COPY_SECS    LD HL,(TRD_5CE5)        ; РАСШИРЕНИЕ ФАЙЛА
  1723.                 LD A,H
  1724.                 OR L
  1725.                 RET
  1726.  
  1727. COPY_SECTORS    CALL CP_COPY_SECS
  1728.                 RET Z
  1729.                 LD A,(TRD_5D21)
  1730.                 OR A
  1731.                 JR NZ,LOC_15DB
  1732.                 CALL CLEAR_SCREEN       ; ОЧИСТКА ОСНОВНОГО ЭКРАНА
  1733.                 LD HL,ASC_2779          ; "BACKUP DISK"
  1734.                 RST 0X18                ; ПЕЧАТЬ ТЕКСТОВОГО СООБЩЕНИЯ
  1735.                 LD HL,ASC_27AA          ; "INSERT SOURCE DISK THEN PRESS Y"
  1736.                 RST 0X18                ; ПЕЧАТЬ ТЕКСТОВОГО СООБЩЕНИЯ
  1737. LOC_15D1        CALL GET_KEYS           ; ОЖИДАНИЕ НАЖАТИЯ КЛАВИШИ
  1738.                 CP "Y"
  1739.                 JR NZ,LOC_15D1
  1740.                 CALL CLEAR_DOWN_SCR     ; ОЧИСТКА НИЖНЕЙ ЧАСТИ ЭКРАНА
  1741. LOC_15DB        CALL CP_COPY_SECS
  1742.                 RET Z
  1743.                 PUSH BC
  1744.                 LD A,(TRD_5D23)
  1745.                 LD C,A
  1746.                 XOR A
  1747.                 LD B,A
  1748.                 SBC HL,BC
  1749.                 POP BC
  1750.                 JP NC,LOC_1644
  1751.                 LD BC,(TRD_5CE5)        ; РАСШИРЕНИЕ ФАЙЛА
  1752.                 LD HL,0
  1753.                 LD (TRD_5CE5),HL        ; РАСШИРЕНИЕ ФАЙЛА
  1754. LOC_15F8        PUSH BC
  1755.                 LD HL,(TRD_5CCF)        ; ВРЕМЕННОЕ СОХРАНЕНИЕ WORK_SP
  1756.                 PUSH HL
  1757.                 CALL SETUP_DSK_SOURCE
  1758.                 LD DE,(TRD_5CE1)
  1759.                 LD B,C
  1760.                 CALL COM_05             ; ЧТЕНИЕ СЕКТОРОВ
  1761.                 LD HL,(TRD_5CF4)
  1762.                 LD (TRD_5CE1),HL
  1763.                 CALL CLEAR_SCREEN       ; ОЧИСТКА ОСНОВНОГО ЭКРАНА
  1764.                 LD HL,ASC_2779          ; "BACKUP DISK"
  1765.                 RST 0X18                ; ПЕЧАТЬ ТЕКСТОВОГО СООБЩЕНИЯ
  1766.                 LD HL,ASC_2785          ; "INSERT DESTINATION DISK"
  1767.                 RST 0X18                ; ПЕЧАТЬ ТЕКСТОВОГО СООБЩЕНИЯ
  1768. LOC_161D        CALL GET_KEYS           ; ОЖИДАНИЕ НАЖАТИЯ КЛАВИШИ
  1769.                 CP "Y"
  1770.                 JR NZ,LOC_161D
  1771.                 CALL CLEAR_DOWN_SCR     ; ОЧИСТКА НИЖНЕЙ ЧАСТИ ЭКРАНА
  1772.                 LD A,(TRD_5D21)
  1773.                 OR A
  1774.                 CALL NZ,CP_FREE_DEST
  1775.                 POP HL
  1776.                 POP BC
  1777.                 LD DE,(TRD_5CE3)
  1778.                 LD B,C
  1779.                 CALL SETUP_DSK_DEST
  1780.                 CALL COM_06
  1781.                 LD HL,(TRD_5CF4)
  1782.                 LD (TRD_5CE3),HL
  1783.                 JP COPY_SECTORS
  1784.  
  1785. LOC_1644        LD (TRD_5CE5),HL        ; РАСШИРЕНИЕ ФАЙЛА
  1786.                 LD A,(0X5D23)
  1787.                 LD C,A
  1788.                 XOR A
  1789.                 JP LOC_15F8
  1790.  
  1791. CP_ERASED_FILE  CALL RD_HEAD_FILENAME   ; ЧТЕНИЕ ОПИСАТЕЛЯ ФАЙЛА
  1792.                 LD A,(TRD_5CDD)         ; ИМЯ ФАЙЛА
  1793.                 CP 1
  1794.                 RET
  1795.  
  1796. ;СЧИТЫВАНИЕ ОПИСАТЕЛЯ В БУФЕР 0X5CDD
  1797. COM_08          LD C,A
  1798. RD_HEAD_FILENAME                        ; ЧТЕНИЕ ОПИСАТЕЛЯ ФАЙЛА
  1799.                 XOR A
  1800. LOC_165E        PUSH BC
  1801.                 CALL RD_HEAD_COPY
  1802.                 POP BC
  1803.                 RET
  1804.  
  1805. ;ЗАПИСЬ ОПИСАТЕЛЯ ФАЙЛА НА ДИСК
  1806. COM_09          LD C,A
  1807.                 CALL SET_HEAD_FILENAME
  1808.                 JP REWRITE_9SEC         ; ПЕРЕЗАПИСЬ 9 СЕКТОРА
  1809.  
  1810. SET_HEAD_FILENAME
  1811.                 LD A,0XFF
  1812.                 JR LOC_165E
  1813.  
  1814. RESERVED_RAM    LD A,0XFF
  1815.                 LD (TRD_5D0E),A         ; #FE-РАБОТАЕТ BASIC,ИНАЧЕ TR-DOS
  1816.                 CALL CP_FREE_SECS
  1817.                 LD HL,(WORKSP)
  1818.                 LD (TRD_5CCF), HL       ; ВРЕМЕННОЕ СОХРАНЕНИЕ WORK_SP
  1819.                 JP CREATE_FREERAM
  1820.  
  1821. CP_FREE_SECS    RST 0X20
  1822.                 DW 0X1F1A               ; ПРОВЕРКА РАЗМЕРА СВОБОДНОЙ ПАМЯТИ
  1823.                 LD HL,0XFFFF
  1824.                 SBC HL,BC
  1825.                 LD A,H
  1826.                 CP 0X10
  1827.                 JR NC,LOC_168F
  1828.                 LD A,0X11
  1829. LOC_168F        DEC A
  1830.                 LD (TRD_5D23),A
  1831.                 LD B,A
  1832.                 LD C,0
  1833.                 RET
  1834.  
  1835. ADD_FILESIZE    LD (TRD_5CD7),HL        ; ПРОМЕЖУТОЧНЫЙ СТАРТ ФАЙЛА ИЛИ КОЛ-ВО ТРЕКОВ
  1836.                                         ; ПОСЛЕ ПРОВЕРКИ ТИПА ДИСКОВОДА
  1837.                 LD (TRD_5CDB),HL
  1838.                 LD DE,(TRD_5CEA)        ; ДЛИНА ФАЙЛА В СЕКТОРАХ
  1839.                 LD HL,(TRD_5CD9)        ; ПРОМЕЖУТОЧНАЯ ДЛИНА ДЛЯ <B> И <C>
  1840.                 LD D,0
  1841.                 ADD HL,DE
  1842.                 LD (TRD_5CD9),HL        ; ПРОМЕЖУТОЧНАЯ ДЛИНА ДЛЯ <B> И <C>
  1843.                 RET
  1844.  
  1845. MOVE            CALL EXIT_IF_SINTAX
  1846.                 CALL RESERVED_RAM
  1847.                 CALL COM_18             ; НАСТРОЙКА НА ДИСКЕТУ
  1848.                 LD A,(TRD_5E19)
  1849.                 OR A
  1850.                 JP Z,ERR_OK
  1851.                 LD HL,0
  1852.                 LD (TRD_5CD9),HL        ; ПРОМЕЖУТОЧНАЯ ДЛИНА ДЛЯ <B> И <C>
  1853.                 LD C,0XFF
  1854. LOC_16C3        INC C
  1855.                 CALL CP_ERASED_FILE
  1856.                 JR NZ,LOC_16C3
  1857.                 LD A,C
  1858.                 LD (TRD_5CD4),A
  1859.                 LD HL,(TRD_5CEB)        ; НОМЕР ПЕРВОГО СЕКТОРА ФАЙЛА
  1860.                 LD (TRD_5CD5),HL
  1861.                 CALL ADD_FILESIZE
  1862. LOC_16D6        INC C
  1863.                 CALL CP_ERASED_FILE
  1864.                 JR Z,LOC_16D6
  1865.                 AND A
  1866.                 JP NZ,LOC_1710
  1867.                 LD A,(TRD_5CD4)
  1868.                 LD C,A
  1869. LOC_16E5        INC C
  1870.                 CALL CP_ERASED_FILE
  1871.                 AND A
  1872.                 JP Z,REINIT_9SEC
  1873.                 XOR A
  1874.                 LD (TRD_5CDD),A         ; ИМЯ ФАЙЛА
  1875.                 CALL WR_HEAD_FILENAME   ; СОХРАНЕНИЕ ОПИСАТЕЛЯ ФАЙЛА
  1876.                 CALL ADD_FILESIZE
  1877.                 JR LOC_16E5
  1878.  
  1879. LOC_1710        LD A,(TRD_5CEA)         ; ДЛИНА ФАЙЛА В СЕКТОРАХ
  1880.                 LD (TRD_5CD3),A
  1881.                 LD (TRD_5CD1),A
  1882.                 LD HL,(TRD_5CEB)        ; НОМЕР ПЕРВОГО СЕКТОРА ФАЙЛА
  1883.                 LD (TRD_5CD5),HL
  1884.                 PUSH BC
  1885.                 CALL MOVE_FILE
  1886.                 POP BC
  1887.                 LD HL,(TRD_5CF4)
  1888.                 LD (TRD_5CD5),HL
  1889.                 LD (TRD_5CEB),HL        ; НОМЕР ПЕРВОГО СЕКТОРА ФАЙЛА
  1890.                 XOR A
  1891.                 LD (TRD_5CEA),A         ; ДЛИНА ФАЙЛА В СЕКТОРАХ
  1892.                 LD A,(TRD_5CDD)         ; ИМЯ ФАЙЛА
  1893.                 PUSH AF
  1894.                 LD A,1
  1895.                 LD (TRD_5CDD),A         ; ИМЯ ФАЙЛА
  1896.                 CALL WR_HEAD_FILENAME   ; СОХРАНЕНИЕ ОПИСАТЕЛЯ ФАЙЛА
  1897.                 POP AF
  1898.                 LD (TRD_5CDD),A         ; ИМЯ ФАЙЛА
  1899.                 LD A,(TRD_5CD4)
  1900.                 LD C,A
  1901.                 LD HL,(TRD_5CDB)
  1902.                 LD (TRD_5CEB),HL        ; НОМЕР ПЕРВОГО СЕКТОРА ФАЙЛА
  1903.                 LD A,(TRD_5CD1)
  1904.                 LD (TRD_5CEA),A         ; ДЛИНА ФАЙЛА В СЕКТОРАХ
  1905.                 CALL WR_HEAD_FILENAME   ; СОХРАНЕНИЕ ОПИСАТЕЛЯ ФАЙЛА
  1906.                 LD A,(TRD_5CD4)
  1907.                 INC A
  1908.                 LD C,A
  1909.                 CALL RD_HEAD_FILENAME   ; ЧТЕНИЕ ОПИСАТЕЛЯ ФАЙЛА
  1910.                 LD HL,(TRD_5CD5)
  1911.                 LD (TRD_5CEB),HL        ; НОМЕР ПЕРВОГО СЕКТОРА ФАЙЛА
  1912.                 CALL WR_HEAD_FILENAME   ; СОХРАНЕНИЕ ОПИСАТЕЛЯ ФАЙЛА
  1913.                 LD A,(TRD_5CD4)
  1914.                 LD C,A
  1915.                 JP LOC_16C3
  1916.  
  1917. REINIT_9SEC     LD HL,(TRD_5CCF)        ; ВРЕМЕННОЕ СОХРАНЕНИЕ WORK_SP
  1918.                 LD BC,0X1000
  1919.                 CALL DEL_WORKRAM
  1920.                 CALL READ_9SEC          ; ЧТЕНИЕ 9 СЕКТОРА
  1921.                 LD HL,(TRD_5E0A)
  1922.                 LD DE,(TRD_5CD9)        ; ПРОМЕЖУТОЧНАЯ ДЛИНА ДЛЯ <B> И <C>
  1923.                 ADD HL,DE
  1924.                 LD (TRD_5E0A),HL
  1925.                 LD A,(TRD_5E09)
  1926.                 LD HL,TRD_5E19
  1927.                 SUB (HL)
  1928.                 LD (TRD_5E09),A
  1929.                 LD (HL),0
  1930.                 LD HL,(TRD_5CD5)
  1931.                 LD (TRD_5E06),HL
  1932.                 PUSH AF
  1933.                 CALL REWRITE_9SEC       ; ПЕРЕЗАПИСЬ 9 СЕКТОРА
  1934.                 POP AF
  1935.                 LD C,A
  1936.                 CALL RD_HEAD_FILENAME   ; ЧТЕНИЕ ОПИСАТЕЛЯ ФАЙЛА
  1937.                 XOR A
  1938.                 LD (TRD_5CDD),A         ; ИМЯ ФАЙЛА
  1939.                 JP LOC_569
  1940.  
  1941. MOVE_FILE       LD A,(TRD_5CD3)
  1942.                 OR A
  1943.                 RET Z
  1944.                 PUSH HL
  1945.                 LD HL,TRD_5D23
  1946.                 SUB (HL)
  1947.                 POP HL
  1948.                 JR NC,LOC_17DD
  1949.                 LD A,(TRD_5CD3)
  1950.                 LD B,A
  1951.                 XOR A
  1952.                 LD (TRD_5CD3),A
  1953. LOC_17BA        PUSH BC
  1954.                 LD HL,(TRD_5CCF)        ; ВРЕМЕННОЕ СОХРАНЕНИЕ WORK_SP
  1955.                 PUSH HL
  1956.                 LD DE,(TRD_5CD5)
  1957.                 CALL COM_05             ; ЧТЕНИЕ СЕКТОРОВ
  1958.                 LD HL,(TRD_5CF4)
  1959.                 LD (TRD_5CD5),HL
  1960.                 POP HL
  1961.                 POP BC
  1962.                 LD DE,(TRD_5CD7)        ; ПРОМЕЖУТОЧНЫЙ СТАРТ ФАЙЛА ИЛИ КОЛ-ВО ТРЕКОВ
  1963.                                         ; ПОСЛЕ ПРОВЕРКИ ТИПА ДИСКОВОДА
  1964.                 CALL COM_06
  1965.                 LD HL,(TRD_5CF4)
  1966.                 LD (TRD_5CD7),HL        ; ПРОМЕЖУТОЧНЫЙ СТАРТ ФАЙЛА ИЛИ КОЛ-ВО ТРЕКОВ
  1967.                                         ; ПОСЛЕ ПРОВЕРКИ ТИПА ДИСКОВОДА
  1968.                 JR MOVE_FILE
  1969.  
  1970. LOC_17DD        LD (TRD_5CD3),A
  1971.                 LD A,(TRD_5D23)
  1972.                 LD B,A
  1973.                 XOR A
  1974.                 JR LOC_17BA
  1975.  
  1976. RD_HEAD_COPY    PUSH AF
  1977.                 LD HL,TRD_5CCC          ; ТЕКУЩИЙ НОМЕР СЕКТОРА ПРИ ЧТЕНИИ КАТАЛОГА
  1978.                 LD (HL),0
  1979.                 LD A,C
  1980. LOC_17F0        SUB 0X10
  1981.                 JR C,LOC_17F7
  1982.                 INC (HL)
  1983.                 JR LOC_17F0
  1984.  
  1985. LOC_17F7        ADD A,0X10
  1986.                 LD C,A
  1987.                 PUSH BC
  1988.                 CALL READ_NUM_SEC       ; ЧТЕНИЕ СЕКТОРА КАТАЛОГА ПО НОМЕРУ
  1989.                 POP BC
  1990.                 POP AF
  1991.                 CALL FIND_HEAD_BUF
  1992.                 LD DE,TRD_5CDD          ; ИМЯ ФАЙЛА
  1993.                 LD BC,0X10
  1994.                 OR A
  1995.                 JR Z,LOC_180D
  1996.                 EX DE,HL
  1997. LOC_180D        JP EMU_LDIR
  1998.  
  1999.                 DUPL 0X1803-$,0XFF      ;FIX
  2000.                 LD DE,TRD_5CDD          ; ИМЯ ФАЙЛА
  2001.                 LD BC,0X10
  2002.                 OR A
  2003.                 JR Z,LOC_180D
  2004.                 EX DE,HL
  2005.                 IF EMU3D2F=1
  2006.                 JP EMU_LDIR
  2007.                 ELSE
  2008.                 LDIR
  2009.                 RET
  2010.                 ENDIF
  2011.  
  2012. VERIFY          LD A,0XFF
  2013.                 LD (TRD_5CF9),A         ; ДИСКОВОД ПРИ ОПЕРАЦИИ С 2 ФАЙЛАМИ
  2014. LOAD            CALL ZERO2HIGH_ERR
  2015. LOC_1818        CALL LOAD_FILE
  2016.                 CALL EXIT_IF_SINTAX
  2017.                 LD A,0XFF
  2018.                 LD (TRD_5D10),A         ; СТАРШИЙ БАЙТ ОШИБКИ
  2019.                 LD A,(TRD_5CF9)         ; ДИСКОВОД ПРИ ОПЕРАЦИИ С 2 ФАЙЛАМИ
  2020.                 CP 0XFF
  2021.                 JP Z,ERR_OK
  2022.                 LD A,(TRD_5CE5)         ; РАСШИРЕНИЕ ФАЙЛА
  2023.                 CP "B"
  2024.                 JP Z,WORK4AUTORUN       ; ОБРАБОТКА СТРОКИ АВТОЗАПУСКА БЕЙСИКА
  2025.                 JP ERR_OK
  2026.  
  2027. LOAD_FILE       CALL GET_PARAMS
  2028.                 CALL EXIT_IF_SINTAX
  2029.                 CALL CP_PARAMS
  2030.                 JP RD_FILE
  2031.  
  2032. GET_LOAD_CODE   LD HL,(CH_ADD)
  2033.                 INC HL
  2034.                 LD A,(HL)
  2035.                 CP 0X0D
  2036.                 RET Z
  2037.                 LD A,1
  2038.                 LD (TRD_5CD6),A         ; #FF-КОМАНДА ПРИНЯТА СИНТАКСИЧЕСКИМ АНАЛИЗАТОРОМ
  2039.                 CALL INPUT_PARAMS
  2040. ZERO2HIGH_ERR   XOR A
  2041.                 LD (TRD_5D10),A         ; СТАРШИЙ БАЙТ ОШИБКИ
  2042.                 RET
  2043.  
  2044. SUB_1857        CALL INPUT_EXTFILENAME  ; ПРИЕМ РАСШИРЕНИЯ ФАЙЛА
  2045.                 LD A,"B"
  2046.                 CP B
  2047.                 JR NZ,LOC_1866
  2048.                 LD HL,(CH_ADD)
  2049.                 DEC HL
  2050.                 LD (CH_ADD),HL
  2051. LOC_1866        CALL INPUT_PARAMS
  2052.                 LD HL,(TRD_5CD9)        ; ПРОМЕЖУТОЧНАЯ ДЛИНА ДЛЯ <B> И <C>
  2053.                 LD (TRD_5CD7),HL        ; ПРОМЕЖУТОЧНЫЙ СТАРТ ФАЙЛА ИЛИ КОЛ-ВО ТРЕКОВ
  2054.                                         ; ПОСЛЕ ПРОВЕРКИ ТИПА ДИСКОВОДА
  2055.                 LD HL,(TRD_5CDB)
  2056.                 LD (TRD_5CD9),HL        ; ПРОМЕЖУТОЧНАЯ ДЛИНА ДЛЯ <B> И <C>
  2057.                 XOR A
  2058.                 LD (TRD_5CD6),A         ; #FF-КОМАНДА ПРИНЯТА СИНТАКСИЧЕСКИМ АНАЛИЗАТОРОМ
  2059.                 RET
  2060.  
  2061. GET_PARAMS      CALL CP_SECOND_SYM
  2062.                 JP Z,LOC_27B
  2063.                 CALL SET_AND_PUT
  2064.                 CALL CP_HIGH_ERR
  2065.                 CALL NZ,SUB_1857
  2066.                 CALL GET_SYMSTR
  2067.                 CP 0XAF
  2068.                 CALL Z,GET_LOAD_CODE
  2069.                 CP 0XE4
  2070.                 PUSH AF
  2071.                 CALL CP_HIGH_ERR
  2072.                 CALL Z,INPUT_EXTFILENAME; ПРИЕМ РАСШИРЕНИЯ ФАЙЛА
  2073.                 POP AF
  2074.                 CALL Z,READ_MASSIV
  2075.                 CALL EXIT_IF_SINTAX
  2076.                 CALL FIND_FILE          ; ПОИСК ФАЙЛА ПО ИМЕНИ
  2077. FIND_RD_HEAD    JP NZ,ERR_NOFILES
  2078.                 JP RD_HEAD_FILENAME     ; ЧТЕНИЕ ОПИСАТЕЛЯ ФАЙЛА
  2079.  
  2080. CP_PARAMS       LD A,(TRD_5CD6)
  2081.                 OR A
  2082.                 LD HL,(TRD_5CE6)                ;АДРЕС ЗАГРУЗКИ ИЗ ОПИСАТЕЛЯ ФАЙЛА
  2083.                 JR Z,LOC_18B7
  2084.                 LD HL,(TRD_5CD9)                ;АДРЕС ЗАГРУЗКИ ИЗ КОМАНДНОЙ СТРОКИ
  2085. LOC_18B7        LD (TRD_5CC6),HL
  2086.                 LD DE,(TRD_5CEB)                ;ТРЕК И СЕКТОР МЕСТОПОЛОЖЕНИЯ ФАЙЛА
  2087.                 CP 3
  2088.                 LD A,(TRD_5CEA)                 ;ДЛИНА ФАЙЛА В СЕКТОРАХ
  2089.                 PUSH DE
  2090.                 LD DE,(TRD_5CE8)                ;ДЛИНА ПРОГРАММЫ ИЗ ОПИСАТЕЛЯ
  2091.                 JR NZ,LOC_18CB
  2092.                 LD DE,(TRD_5CDB)                ;ДЛИНА ФАЙЛА ДЛЯ ЗАГРУЗКИ ИЗКОМАНДНОЙ СТРОКИ
  2093. LOC_18CB        LD B,A
  2094.                 LD (TRD_5CDB),DE
  2095.                 LD A,(TRD_5CE5)                 ;РАСШИРЕНИЕ ФАЙЛА
  2096.                 CP "C"
  2097.                 LD A,B
  2098.                 JR NZ,LOC_18FD
  2099.                 LD A,B
  2100.                 CP D
  2101.                 JR Z,LOC_18F6
  2102.                 DEC A
  2103.                 CP D
  2104.                 LD A,B
  2105.                 JR Z,LOC_18F6
  2106.                 LD A,(TRD_5CD6)         ; #FF-КОМАНДА ПРИНЯТА СИНТАКСИЧЕСКИМ АНАЛИЗАТОРОМ
  2107.                 CP 3
  2108.                 LD A,B
  2109.                 JR Z,LOC_18F6
  2110.                 XOR A
  2111.                 LD (TRD_5CD6),A         ; #FF-КОМАНДА ПРИНЯТА СИНТАКСИЧЕСКИМ АНАЛИЗАТОРОМ
  2112.                 LD D,B
  2113.                 LD E,A
  2114.                 LD (TRD_5CDB),DE
  2115.                 JR LOC_18F9
  2116.  
  2117. LOC_18F6        CALL LOAD_FULLFILE
  2118. LOC_18F9        LD A,B
  2119.                 CALL KOLWO_SECS
  2120. LOC_18FD        LD B,A
  2121.                 LD A,(TRD_5CE5)         ; РАСШИРЕНИЕ ФАЙЛА
  2122.                 CP "C"
  2123.                 POP DE
  2124.                 RET Z
  2125.                 PUSH DE
  2126.                 CP "B"
  2127.                 PUSH AF
  2128.                 CALL Z,LOAD4BASIC
  2129.                 POP AF
  2130.                 CP "D"
  2131.                 CALL Z,LOAD4DATA
  2132.                 CALL LOAD_FULLFILE
  2133.                 LD A,(TRD_5CDC)
  2134.                 LD B,A
  2135.                 POP DE
  2136.                 RET
  2137.  
  2138. LOAD_FULLFILE   LD A,3
  2139.                 LD (TRD_5CD6),A         ; #FF-КОМАНДА ПРИНЯТА СИНТАКСИЧЕСКИМ АНАЛИЗАТОРОМ
  2140.                 RET
  2141.  
  2142. RD_FILE         CALL CP_HIGH_ERR
  2143.                 JR Z,LOC_192D
  2144.                 PUSH AF
  2145.                 CALL NUM_SEC_FILE
  2146.                 POP AF
  2147.                 CP 0XFF
  2148. LOC_192D        PUSH AF
  2149.                 CALL Z,RD_SECTORS
  2150.                 POP AF
  2151.                 JR Z,LOC_1937
  2152.                 JP COM_06
  2153.  
  2154. LOC_1937        LD A,(TRD_5CD6)         ; #FF-КОМАНДА ПРИНЯТА СИНТАКСИЧЕСКИМ АНАЛИЗАТОРОМ
  2155.                 CP 3
  2156.                 CALL Z,RD_OR_VERIFY
  2157.                 LD HL,(E_LINE)          ; АДРЕС НАЧАЛА РЕДАКТИРУЕМОЙ СТРОКИ
  2158.                 DEC HL
  2159.                 LD (HL),0X80
  2160.                 RET
  2161.  
  2162. RD_OR_VERIFY    LD A,(TRD_5CF9)         ; ДИСКОВОД ПРИ ОПЕРАЦИИ С 2 ФАЙЛАМИ
  2163.                 CP 0XFF
  2164.                 JP NZ,LOAD_END_FILE
  2165.                 LD A,(TRD_5CDB)
  2166.                 OR A
  2167.                 RET Z
  2168.                 LD C,A
  2169.                 LD B,1
  2170.                 LD DE,(TRD_5CF4)
  2171.                 JR LOC_196A
  2172.  
  2173. RD_SECTORS      LD A,(TRD_5CF9)         ; ДИСКОВОД ПРИ ОПЕРАЦИИ С 2 ФАЙЛАМИ
  2174.                 CP 0XFF
  2175.                 JP NZ,COM_05            ; ЧТЕНИЕ СЕКТОРОВ
  2176.                 LD (TRD_5CF4),DE
  2177.                 LD C,0
  2178. LOC_196A        LD A,B
  2179.                 OR A
  2180.                 RET Z
  2181.                 LD (TRD_5CD7),HL        ; ПРОМЕЖУТОЧНЫЙ СТАРТ ФАЙЛА ИЛИ КОЛ-ВО ТРЕКОВ
  2182.                                         ; ПОСЛЕ ПРОВЕРКИ ТИПА ДИСКОВОДА
  2183.                 LD (TRD_5CD9),DE        ; ПРОМЕЖУТОЧНАЯ ДЛИНА ДЛЯ <B> И <C>
  2184. LOC_1974        PUSH BC
  2185.                 LD B,1
  2186.                 LD DE,(TRD_5CD9)        ; ПРОМЕЖУТОЧНАЯ ДЛИНА ДЛЯ <B> И <C>
  2187.                 LD HL,TRD_5D25
  2188.                 CALL COM_05             ; ЧТЕНИЕ СЕКТОРОВ
  2189.                 LD HL,(TRD_5CF4)
  2190.                 LD (TRD_5CD9), HL       ; ПРОМЕЖУТОЧНАЯ ДЛИНА ДЛЯ <B> И <C>
  2191.                 POP BC
  2192.                 LD HL,(TRD_5CD7)        ; ПРОМЕЖУТОЧНЫЙ СТАРТ ФАЙЛА ИЛИ КОЛ-ВО ТРЕКОВ
  2193.                                         ; ПОСЛЕ ПРОВЕРКИ ТИПА ДИСКОВОДА
  2194.                 LD DE,TRD_5D25
  2195. LOC_198E        LD A,(DE)
  2196.                 CP (HL)
  2197.                 JR NZ,LOC_199D
  2198.                 INC HL
  2199.                 INC DE
  2200.                 DEC C
  2201.                 JR NZ,LOC_198E
  2202.                 LD (TRD_5CD7),HL        ; ПРОМЕЖУТОЧНЫЙ СТАРТ ФАЙЛА ИЛИ КОЛ-ВО ТРЕКОВ
  2203.                                         ; ПОСЛЕ ПРОВЕРКИ ТИПА ДИСКОВОДА
  2204.                 DJNZ LOC_1974
  2205.                 RET
  2206.  
  2207. LOC_199D        LD HL,ASC_276B          ; "VERIFY ERROR."
  2208.                 LD A,0X0D
  2209.                 JP PRINT_TXTERR
  2210.  
  2211. PEEK            LD A,0XFF
  2212.                 JR LOC_19AB
  2213.  
  2214. POKE            LD A,0XEE
  2215. LOC_19AB        LD (TRD_5D10),A         ; СТАРШИЙ БАЙТ ОШИБКИ
  2216.                 JP LOC_1818
  2217.  
  2218. MERGE           LD A,0XFF
  2219.                 LD (TRD_5D1F),A
  2220.                 CALL GET_PARAMS
  2221.                 CALL EXIT_IF_SINTAX
  2222.                 LD A,(TRD_5CE5)         ; РАСШИРЕНИЕ ФАЙЛА
  2223.                 CP "B"
  2224.                 JP NZ,SINTAX_ERROR
  2225.                 LD BC,(TRD_5CE6)        ; ДЛЯ <C>-СТАРТОВЫЙ АДРЕС,ДЛЯ <B>-ДЛИНА ПРОГРАММЫ
  2226.                 LD (TRD_5CDB), BC
  2227.                 PUSH BC
  2228.                 INC BC
  2229.                 RST 0X20
  2230.                 DW 0X30                 ; СОЗДАНИЕ СВОБОДНОГО МЕСТА
  2231.                 LD (HL),0X80
  2232.                 EX DE,HL
  2233.                 POP DE
  2234.                 PUSH HL
  2235.                 LD DE,(TRD_5CEB)        ; НОМЕР ПЕРВОГО СЕКТОРА ФАЙЛА
  2236.                 CALL LOAD_FULLFILE
  2237.                 LD A,(TRD_5CDC)
  2238.                 LD B,A
  2239.                 CALL ZERO2HIGH_ERR
  2240.                 CALL RD_FILE
  2241.                 POP HL
  2242.                 LD DE,(PROG)
  2243.                 RST 0X20
  2244.                 DW 0X08D2               ; РАБОТА СО СТРОКАМИ ПРОГРАММЫ НА БЕЙСИКЕ
  2245.                 JP ERR_OK
  2246.  
  2247. CP_FREE4PROG    EX DE,HL
  2248.                 SCF
  2249.                 SBC HL,DE
  2250.                 RET C
  2251.                 LD DE,0X0A
  2252.                 ADD HL,DE
  2253.                 LD B,H
  2254.                 LD C,L
  2255. CP_FREE_RAM     RST 0X20
  2256.                 DW 0X1F05               ; ПРОВЕРКА СВОБОДНОЙ ПАМЯТИ
  2257.                 RET
  2258.  
  2259. LOAD4BASIC      LD DE,(PROG)
  2260.                 LD HL,(E_LINE)          ; АДРЕС НАЧАЛА РЕДАКТИРУЕМОЙ СТРОКИ
  2261.                 DEC HL
  2262.                 PUSH HL
  2263.                 PUSH DE
  2264.                 SBC HL,DE
  2265.                 LD DE,(TRD_5CE6)        ; ДЛЯ <C>-СТАРТОВЫЙ АДРЕС,ДЛЯ <B>-ДЛИНА ПРОГРАММЫ
  2266.                 PUSH DE
  2267.                 PUSH HL
  2268.                 LD HL,0
  2269.                 LD A,(TRD_5CF9)         ; ДИСКОВОД ПРИ ОПЕРАЦИИ С 2 ФАЙЛАМИ
  2270.                 CP 0XFF
  2271.                 JR Z,LOC_1A20
  2272.                 LD HL,5
  2273. LOC_1A20        ADD HL,DE
  2274.                 LD (TRD_5CDB),HL
  2275.                 POP HL
  2276.                 LD A,(TRD_5CF9)         ; ДИСКОВОД ПРИ ОПЕРАЦИИ С 2 ФАЙЛАМИ
  2277.                 CP 0XFF
  2278.                 JR NZ,LOC_1A31
  2279.                 POP DE
  2280.                 POP DE
  2281.                 POP HL
  2282.                 JR LOC_1A48
  2283.  
  2284. LOC_1A31        CALL CP_FREE4PROG
  2285.                 POP BC
  2286.                 POP DE
  2287.                 POP HL
  2288.                 PUSH BC
  2289.                 RST 0X20
  2290.                 DW 0X19E5               ; ВОССТАНОВЛЕНИЕ
  2291.                 POP BC
  2292.                 CALL RESERV_RAM
  2293.                 INC HL
  2294.                 LD BC,(TRD_5CE8)        ; ДЛИНА ПРОГРАММЫ
  2295.                 ADD HL,BC
  2296.                 LD (VARS),HL
  2297. LOC_1A48        LD HL,(PROG)
  2298.                 RET
  2299.  
  2300. LOAD4DATA       LD DE,(TRD_5CE8)        ; ДЛИНА ПРОГРАММЫ
  2301.                 LD (TRD_5CDB),DE
  2302.                 LD HL,(TRD_5CD7)        ; ПРОМЕЖУТОЧНЫЙ СТАРТ ФАЙЛА ИЛИ КОЛ-ВО ТРЕКОВ
  2303.                                         ; ПОСЛЕ ПРОВЕРКИ ТИПА ДИСКОВОДА
  2304.                 LD A,(TRD_5CF9)         ; ДИСКОВОД ПРИ ОПЕРАЦИИ С 2 ФАЙЛАМИ
  2305.                 CP 0XFF
  2306.                 RET Z
  2307.                 LD HL,(TRD_5CD9)        ; ПРОМЕЖУТОЧНАЯ ДЛИНА ДЛЯ <B> И <C>
  2308.                 PUSH HL
  2309.                 CALL CP_FREE4PROG
  2310.                 POP HL
  2311.                 LD A,H
  2312.                 OR L
  2313.                 JR Z,LOC_1A79
  2314.                 LD HL,(TRD_5CD7)        ; ПРОМЕЖУТОЧНЫЙ СТАРТ ФАЙЛА ИЛИ КОЛ-ВО ТРЕКОВ
  2315.                                         ; ПОСЛЕ ПРОВЕРКИ ТИПА ДИСКОВОДА
  2316.                 DEC HL
  2317.                 DEC HL
  2318.                 DEC HL
  2319.                 LD BC,(TRD_5CD9)        ; ПРОМЕЖУТОЧНАЯ ДЛИНА ДЛЯ <B> И <C>
  2320.                 INC BC
  2321.                 INC BC
  2322.                 INC BC
  2323.                 CALL DEL_WORKRAM
  2324. LOC_1A79        LD HL,(E_LINE)          ; АДРЕС НАЧАЛА РЕДАКТИРУЕМОЙ СТРОКИ
  2325.                 DEC HL
  2326.                 LD BC,(TRD_5CE8)        ; ДЛИНА ПРОГРАММЫ
  2327.                 PUSH BC
  2328.                 INC BC
  2329.                 INC BC
  2330.                 INC BC
  2331.                 CALL RESERV_RAM
  2332.                 INC HL
  2333.                 LD A,(TRD_5CD2)
  2334.                 LD (HL),A
  2335.                 INC HL
  2336.                 POP DE
  2337.                 LD (HL),E
  2338.                 INC HL
  2339.                 LD (HL),D
  2340.                 INC HL
  2341.                 RET
  2342.  
  2343. NUM_SEC_FILE    LD A,(TRD_5CD9)         ; ПРОМЕЖУТОЧНАЯ ДЛИНА ДЛЯ <B> И <C>
  2344.                 LD C,B
  2345.                 LD B,A
  2346.                 LD A,C
  2347.                 CP B
  2348.                 JR C,LOC_1AB6
  2349.                 LD A,B
  2350.                 OR A
  2351.                 JP Z,SINTAX_ERROR
  2352.                 DEC B
  2353.                 JR Z,LOC_1AB0
  2354.                 LD A,0X10
  2355. LOC_1AA7        INC E
  2356.                 CP E
  2357.                 JR NZ,LOC_1AAE
  2358.                 LD E,0
  2359.                 INC D
  2360. LOC_1AAE        DJNZ LOC_1AA7
  2361. LOC_1AB0        LD B,1
  2362.                 LD HL,(TRD_5CD7)        ; ПРОМЕЖУТОЧНЫЙ СТАРТ ФАЙЛА ИЛИ КОЛ-ВО ТРЕКОВ
  2363.                                         ; ПОСЛЕ ПРОВЕРКИ ТИПА ДИСКОВОДА
  2364.                 RET
  2365.  
  2366. LOC_1AB6        LD HL,TXT_R_O
  2367.                 LD A,5
  2368.                 JP PRINT_TXTERR
  2369.  
  2370. CP_FILE_FREE    CALL FIND_FILE          ; ПОИСК ФАЙЛА ПО ИМЕНИ
  2371.                 JP Z,FILE_EXISTS
  2372. CP_FREE_ON_DSK  CALL READ_9SEC          ; ЧТЕНИЕ 9 СЕКТОРА
  2373.                 LD A,(TRD_5E09)
  2374.                 CP 0X80
  2375.                 JP Z,ERR_DIRFULL
  2376.                 RET
  2377.  
  2378. SAVE            CALL ZERO2HIGH_ERR
  2379.                 LD HL,0
  2380.                 LD (TRD_5CD1),HL
  2381.                 CALL SET_AND_PUT
  2382.                 CALL GET_SYMSTR
  2383.                 CP 0XAF                 ;CODE
  2384.                 JR Z,LOC_1B39
  2385.                 CP 0XCA                 ;LINE
  2386.                 JR NZ,LOC_1AF8
  2387.                 CALL SET_NUM_CHAN
  2388.                 CALL EXIT_IF_SINTAX
  2389.                 LD HL,(TRD_5CDB)
  2390.                 LD (TRD_5CD1),HL
  2391.                 LD HL,TRD_5CE5          ; РАСШИРЕНИЕ ФАЙЛА
  2392.                 JR LOC_1B1F
  2393.  
  2394. LOC_1AF8        CP 0XAA
  2395.                 JR NZ,LOC_1B0D
  2396.                 LD HL,0X4000
  2397.                 LD (TRD_5CD7),HL        ; ПРОМЕЖУТОЧНЫЙ СТАРТ ФАЙЛА ИЛИ КОЛ-ВО ТРЕКОВ
  2398.                                         ; ПОСЛЕ ПРОВЕРКИ ТИПА ДИСКОВОДА
  2399.                 LD HL,0X1B00
  2400.                 LD (TRD_5CD9),HL        ; ПРОМЕЖУТОЧНАЯ ДЛИНА ДЛЯ <B> И <C>
  2401.                 LD (TRD_5CDB),HL
  2402.                 JR LOC_1B48
  2403.  
  2404. LOC_1B0D        CALL EXIT_IF_SINTAX
  2405.                 CALL GET_SYMSTR
  2406.                 LD HL,TRD_5CE5          ; РАСШИРЕНИЕ ФАЙЛА
  2407.                 CP 0XE4                 ;DATA
  2408.                 JR Z,LOC_1B2C
  2409.                 CP 0X0D
  2410.                 JP NZ, SINTAX_ERROR
  2411. LOC_1B1F        LD (HL),"B"
  2412.                 CALL CP_FILE_FREE
  2413.                 CALL DEL_5BYTES
  2414. LOC_1B27        CALL SET_START_SIZE
  2415.                 JR LOC_1B53
  2416.  
  2417. LOC_1B2C        LD (HL),"D"
  2418.                 CALL CP_FILE_FREE
  2419.                 CALL CP_MASSIV
  2420.                 JR NC,LOC_1B53
  2421.                 JP C,SINTAX_ERROR
  2422. LOC_1B39        CALL GET_START_SIZE
  2423.                 LD HL,(TRD_5CD9)        ; ПРОМЕЖУТОЧНАЯ ДЛИНА ДЛЯ <B> И <C>
  2424.                 LD (TRD_5CD7),HL        ; ПРОМЕЖУТОЧНЫЙ СТАРТ ФАЙЛА ИЛИ КОЛ-ВО ТРЕКОВ
  2425.                                         ; ПОСЛЕ ПРОВЕРКИ ТИПА ДИСКОВОДА
  2426.                 LD HL,(TRD_5CDB)
  2427.                 LD (TRD_5CD9),HL        ; ПРОМЕЖУТОЧНАЯ ДЛИНА ДЛЯ <B> И <C>
  2428. LOC_1B48        CALL EXIT_IF_SINTAX
  2429.                 LD A,"C"
  2430.                 LD (TRD_5CE5),A         ; РАСШИРЕНИЕ ФАЙЛА
  2431.                 CALL CP_FILE_FREE
  2432. LOC_1B53        CALL SAVE_FILE
  2433.                 JP LOC_569
  2434.  
  2435. SAVE_FILE       LD HL,(TRD_5CD7)        ; ПРОМЕЖУТОЧНЫЙ СТАРТ ФАЙЛА ИЛИ КОЛ-ВО ТРЕКОВ
  2436.                                         ; ПОСЛЕ ПРОВЕРКИ ТИПА ДИСКОВОДА
  2437.                 LD (TRD_5CE6),HL        ; ДЛЯ <C>-СТАРТОВЫЙ АДРЕС,ДЛЯ <B>-ДЛИНА ПРОГРАММЫ
  2438.                 EX DE,HL
  2439.                 LD HL,(TRD_5CD9)        ; ПРОМЕЖУТОЧНАЯ ДЛИНА ДЛЯ <B> И <C>
  2440.                 LD A,L
  2441.                 OR H
  2442.                 JP Z,SINTAX_ERROR
  2443.                 LD A,L
  2444.                 OR A
  2445.                 JR Z,LOC_1B6D
  2446.                 INC H
  2447. LOC_1B6D        LD A,H
  2448.                 LD (TRD_5CEA),A         ; ДЛИНА ФАЙЛА В СЕКТОРАХ
  2449.                 LD E,A
  2450.                 LD D,0
  2451.                 LD HL,(TRD_5E0A)
  2452.                 SBC HL,DE
  2453.                 JP C,LOC_1C45
  2454.                 PUSH HL
  2455.                 LD HL,(E_LINE)          ; АДРЕС НАЧАЛА РЕДАКТИРУЕМОЙ СТРОКИ
  2456.                 LD (HL),0XAA
  2457.                 INC HL
  2458.                 LD DE,(TRD_5CD1)
  2459.                 LD (HL),E
  2460.                 INC HL
  2461.                 LD (HL),D
  2462.                 LD HL, (TRD_5CDB)
  2463.                 LD (TRD_5CE8),HL        ; ДЛИНА ПРОГРАММЫ
  2464.                 LD HL,(TRD_5E06)
  2465.                 LD (TRD_5CEB),HL        ; НОМЕР ПЕРВОГО СЕКТОРА ФАЙЛА
  2466.                 EX DE,HL
  2467.                 LD HL,(TRD_5CE6)        ; ДЛЯ <C>-СТАРТОВЫЙ АДРЕС,ДЛЯ <B>-ДЛИНА ПРОГРАММЫ
  2468.                 LD A,(TRD_5CEA)         ; ДЛИНА ФАЙЛА В СЕКТОРАХ
  2469.                 LD B,A
  2470.                 CALL COM_06
  2471.                 LD HL,(TRD_5CF4)
  2472.                 PUSH HL
  2473.                 CALL READ_9SEC          ; ЧТЕНИЕ 9 СЕКТОРА
  2474.                 POP HL
  2475.                 LD (TRD_5E06),HL
  2476.                 POP HL
  2477.                 LD (TRD_5E0A),HL
  2478.                 LD HL,TRD_5E09
  2479.                 LD A,(HL)
  2480.                 LD (TRD_5D1E),A
  2481.                 INC (HL)
  2482.                 PUSH HL
  2483.                 CALL REWRITE_9SEC       ; ПЕРЕЗАПИСЬ 9 СЕКТОРА
  2484.                 POP HL
  2485.                 LD C,(HL)
  2486.                 DEC C
  2487.                 LD A,(TRD_5CE5)         ; РАСШИРЕНИЕ ФАЙЛА
  2488.                 CP "B"
  2489.                 RET NZ
  2490.  
  2491. SET_HEAD_STSZ   LD HL,(E_LINE)          ; АДРЕС НАЧАЛА РЕДАКТИРУЕМОЙ СТРОКИ
  2492.                 LD DE,(PROG)
  2493.                 SCF
  2494.                 SBC HL,DE
  2495.                 LD (TRD_5CE6),HL        ; ДЛЯ <C>-СТАРТОВЫЙ АДРЕС,ДЛЯ <B>-ДЛИНА ПРОГРАММЫ
  2496.                 LD HL,(VARS)
  2497.                 SBC HL,DE
  2498.                 LD (TRD_5CE8),HL        ; ДЛИНА ПРОГРАММЫ
  2499.                 RET
  2500.  
  2501. SET_START_SIZE  LD HL,(VARS)
  2502.                 LD DE,(PROG)
  2503.                 SBC HL,DE
  2504.                 LD (TRD_5CDB),HL
  2505.                 LD HL,(PROG)
  2506.                 LD (TRD_5CD7),HL        ; ПРОМЕЖУТОЧНЫЙ СТАРТ ФАЙЛА ИЛИ КОЛ-ВО ТРЕКОВ
  2507.                                         ; ПОСЛЕ ПРОВЕРКИ ТИПА ДИСКОВОДА
  2508.                 LD HL,(E_LINE)          ; АДРЕС НАЧАЛА РЕДАКТИРУЕМОЙ СТРОКИ
  2509.                 INC HL
  2510.                 INC HL
  2511.                 INC HL
  2512.                 SBC HL,DE
  2513.                 LD (TRD_5CD9),HL        ; ПРОМЕЖУТОЧНАЯ ДЛИНА ДЛЯ <B> И <C>
  2514.                 RET
  2515.  
  2516. READ_MASSIV     CALL FIND_MASSIV
  2517.                 RET NC
  2518.                 LD HL,0
  2519.                 LD (TRD_5CD9),HL        ; ПРОМЕЖУТОЧНАЯ ДЛИНА ДЛЯ <B> И <C>
  2520.                 LD A,(TRD_5CF9)         ; ДИСКОВОД ПРИ ОПЕРАЦИИ С 2 ФАЙЛАМИ
  2521.                 CP 0XFF
  2522.                 RET NZ
  2523.                 JP LOC_1C13
  2524.  
  2525. CP_MASSIV       CALL FIND_MASSIV
  2526.                 RET NC
  2527. LOC_1C13        LD A,0X0E
  2528.                 LD HL,ASC_27DD          ; "ARRAY NOT FOUND"
  2529.                 JP PRINT_TXTERR
  2530.  
  2531. FIND_MASSIV     CALL GET_NEXT_SYM
  2532.                 CALL LOOK_VARS
  2533.                 SET 7,C
  2534.                 LD A,C
  2535.                 LD (TRD_5CD2),A
  2536.                 JR NC,LOC_1C2B
  2537. LOC_1C29        SCF
  2538.                 RET
  2539.  
  2540. LOC_1C2B        JR NZ,LOC_1C29
  2541.                 INC HL
  2542.                 LD E,(HL)
  2543.                 INC HL
  2544.                 LD D,(HL)
  2545.                 INC HL
  2546.                 LD (TRD_5CD7),HL        ; ПРОМЕЖУТОЧНЫЙ СТАРТ ФАЙЛА ИЛИ КОЛ-ВО ТРЕКОВ
  2547.                                         ; ПОСЛЕ ПРОВЕРКИ ТИПА ДИСКОВОДА
  2548.                 LD (TRD_5CDB),DE
  2549.                 LD (TRD_5CD9),DE        ; ПРОМЕЖУТОЧНАЯ ДЛИНА ДЛЯ <B> И <C>
  2550.                 CALL GET_NEXT_SYM
  2551.                 CP ")"
  2552.                 JR NZ,LOC_1C2B
  2553.                 RET
  2554.  
  2555. LOC_1C45        LD HL,TXT_NOSPACE_
  2556.                 LD A,3
  2557. PRINT_TXTERR    CALL PRINT_ERROR        ; ПЕЧАТЬ СООБЩЕНИЯ ОБ ОШИБКЕ
  2558.                 JP END_COMAND
  2559.  
  2560. FILE_EXISTS     LD HL,TXT_FILEEXISTS_
  2561.                 LD A,2
  2562.                 JR PRINT_TXTERR
  2563.  
  2564.                 DUPL 0X1C57+4-$,0XFF
  2565. SET_FILENAME    LD HL,TRD_5CDD          ; ИМЯ ФАЙЛА
  2566.                 LD B,8
  2567. LOC_1C5C        LD (HL)," "
  2568.                 INC HL
  2569.                 DJNZ LOC_1C5C
  2570.                 CALL CP_ON_STKBOT
  2571.                 EX DE,HL
  2572.                 CALL SETUP_DSK
  2573.                 LD A,C
  2574.                 AND A
  2575.                 JP Z,SINTAX_ERROR
  2576.                 CP 9
  2577.                 JR C,LOC_1C73
  2578.                 LD C,8
  2579. LOC_1C73        LD A,(HL)
  2580.                 CP " "
  2581.                 JP C,SINTAX_ERROR
  2582.                 LD DE,TRD_5CDD          ; ИМЯ ФАЙЛА
  2583.                 PUSH BC
  2584.                 JP EMU_LDIR_RBC
  2585.  
  2586. ;ВЫБОР ДИСКА ДЛЯ ФОРМАТИРОВАНИЯ
  2587. SETUP_DSK       INC HL
  2588.                 LD A,(HL)               ;ВТОРОЙ СИМВОЛ В КАВЫЧКАХ
  2589.                 CP ":"                  ;ЕСЛИ НЕ ":", ТО
  2590.                 JR NZ,LOC_1C98          ;ПЕРЕХОД НА ВЫБОР ТЕКУЩЕГО ДИСКОВОДА
  2591.                 DEC HL
  2592.                 LD A,(HL)               ;ИНАЧЕ ЗАБИРАЕМ ИЗ СТРОКИ БУКВУ ДИСКОВОДА
  2593.                 CALL NUMDSK2BYTE        ;УСТАНОВКА ДИСКОВОДА НА КОТОРОМ БУДЕТ ФОРМАТИРОВАНИЕ
  2594.                 CALL LOC_1C9C           ; НАСТРОЙКА НА ДИСКОВОД
  2595.                 DEC BC
  2596.                 DEC BC                  ;ПРОПУСКАЕМ ИМЯ ДИСКОВОДА В ИМЕНИ ДИСКА
  2597.                 INC HL
  2598.                 INC HL                  ;СДВИНУЛИ УКАЗАТЕЛЬ В ВВЕДЕННОЙ СТРОКЕ НА НАЧАЛО ИМЕНИ ДИСКА
  2599.                 RET
  2600.  
  2601. LOC_1C98        DEC HL
  2602.                 LD A,(TRD_5D19)         ; ДИСКОВОД ПО УМОЛЧАНИЮ
  2603. LOC_1C9C        PUSH BC
  2604.                 PUSH HL
  2605.                 CALL COM_01             ; НАСТРОЙКА НА ДИСКОВОД
  2606.                 POP HL
  2607.                 POP BC
  2608.                 RET
  2609.  
  2610. FIND_HEAD_BUF   LD L,C
  2611.                 LD H,0
  2612.                 ADD HL,HL
  2613.                 ADD HL,HL
  2614.                 ADD HL,HL
  2615.                 ADD HL,HL
  2616.                 LD BC,TRD_5D25
  2617.                 ADD HL,BC
  2618.                 RET
  2619.  
  2620. SET_CP_FILENAME CALL SET_FILENAME
  2621. ; ПОИСК ФАЙЛА ПО ИМЕНИ ФАЙЛА
  2622. FIND_FILENAME   CALL RD_0SEC2BUF        ; ЧТЕНИЕ СЕКТОРА 0 КАТАЛОГА
  2623.                 LD BC,0X8000
  2624. LOC_1CBA        PUSH BC
  2625.                 CALL FIND_HEAD_BUF
  2626.                 CALL CP_END_BUF
  2627.                 POP BC
  2628.                 PUSH BC
  2629.                 LD A,C
  2630.                 CP 0X10
  2631.                 JR NZ,LOC_1CCD
  2632.                 POP BC
  2633.                 LD C,0
  2634.                 JR LOC_1CBA
  2635.  
  2636. LOC_1CCD        LD DE,TRD_5CDD          ; ИМЯ ФАЙЛА
  2637.                 LD A,(TRD_5D06)         ; КОЛИЧЕСТВО СИМВОЛОВ ИМЕНИ ФАЙЛА ПРИ ПОИСКЕ
  2638.                 LD B,A
  2639.                 XOR A
  2640.                 CP (HL)
  2641.                 JR NZ,LOC_1CDB
  2642.                 POP BC
  2643.                 JR LOC_1CE4
  2644.  
  2645. LOC_1CDB        CALL COMPARE_B_SYM
  2646.                 POP BC
  2647.                 JR Z,LOC_1CE7
  2648.                 INC C
  2649.                 DJNZ LOC_1CBA
  2650. LOC_1CE4        OR 0XFF
  2651.                 RET
  2652.  
  2653. LOC_1CE7        LD A,0X80
  2654.                 SUB B
  2655.                 LD C,A
  2656.                 LD (TRD_5D1E),A
  2657.                 XOR A
  2658.                 RET
  2659.  
  2660. ;ПОИСК ФАЙЛА ПО ИМЕНИ И РАСШИРЕНИЮ
  2661. COM_0A          CALL FIND_FILENAME      ; ПОИСК ФАЙЛА ПО ИМЕНИ ФАЙЛА
  2662.                 LD HL,TRD_5D0F          ; НОМЕР ОШИБКИ TR-DOS
  2663.                 LD (HL),C
  2664.                 RET Z
  2665.                 LD (HL),0XFF
  2666.                 RET
  2667.  
  2668. RETURN          CALL EXIT_IF_SINTAX
  2669.                 CALL DELETE_BUF
  2670.                 CALL CLRBUF_EDITOR
  2671.                 RES 3,(IY+1)
  2672.                 CALL RESTORE_SP         ; ВОССТАНОВЛЕНИЕ ПЕРЕХВАТЧИКА ОШИБОК
  2673.                 LD SP,(TRD_5D1C)        ; СОХРАНЕНИЕ РЕГИСТРА SP
  2674.                 EXX             ;LD HL,(ERR_SP)
  2675.                 LD HL,0X2758    ;DEC HL
  2676.                 EXX             ;LD A,0X12
  2677.                 DEC HL          ;CP (HL)
  2678.                 LD A,0X12       ;JR NZ,LOCRET_1D19
  2679.                 CP (HL)         ;DEC HL
  2680.                 RET NZ          ;LD (ERR_SP),HL
  2681.                 DEC HL          ;LOCRET_1D19    RET
  2682.                 JP LOC_0235
  2683.  
  2684. SINTAX_ERROR    BIT 7,(IY+0)
  2685.                 JR Z,LOC_1D25
  2686.                 LD A,0X0B
  2687.                 LD (ERR_NR),A
  2688. LOC_1D25        INC A
  2689.                 LD HL,TXT_ERROR_
  2690. LOC_1D29        CALL PRINT_ERROR        ; ПЕЧАТЬ СООБЩЕНИЯ ОБ ОШИБКЕ
  2691.                 JP END_COMAND
  2692.  
  2693. LOC_1D2F        LD A,(ERR_NR)
  2694.                 LD HL,ASC_27CA          ; "*BREAK*"
  2695.                 CP 0X14
  2696.                 JR Z,LOC_1D29
  2697.                 CP 0X0C
  2698.                 JR Z,LOC_1D29
  2699.                 LD HL,ASC_27D2          ; "OUT OF RAM"
  2700.                 CP 3
  2701.                 JR Z,LOC_1D29
  2702.                 LD HL,ASC_27DD          ; "ARRAY NOT FOUND"
  2703.                 CP 1
  2704.                 JR Z,LOC_1D29
  2705.                 JR SINTAX_ERROR
  2706.  
  2707. RUN             CALL ZERO2HIGH_ERR
  2708.                 CALL LOAD_FILE
  2709.                 CALL EXIT_IF_SINTAX
  2710.                 LD A,(TRD_5CE5)         ; РАСШИРЕНИЕ ФАЙЛА
  2711.                 CP "B"
  2712.                 JP Z,WORK4AUTORUN       ; ОБРАБОТКА СТРОКИ АВТОЗАПУСКА БЕЙСИКА
  2713.                 CP "C"
  2714.                 JP NZ,SINTAX_ERROR
  2715.                 JP RUNCODE
  2716.  
  2717. CLEAR_WORKSPACE LD HL,TRD_5D0E          ; #FF-РАБОТАЕТ BASIC,ИНАЧЕ TR-DOS
  2718.                 LD A,(HL)
  2719. LOC_1D67        CP 0XFF
  2720.                 LD (HL),0
  2721.                 RET NZ
  2722.                 RST 0X20
  2723.                 DW 0X16BF               ; ОЧИСТКА РАБОЧЕЙ ОБЛАСТИ И СТЕКА КАЛЬКУЛЯТОРА
  2724.                 RET
  2725.  
  2726. CP_SINTAX       BIT 7,(IY+1)
  2727.                 RET
  2728.  
  2729. EXIT_IF_SINTAX  CALL CP_SINTAX
  2730.                 RET NZ
  2731.                 POP HL
  2732.                 RET
  2733.  
  2734. ; ЗАНЕСЕНИЕ ЧИСЛА НА СТЕК КАЛЬКУЛЯТОРА
  2735. CHISLO2STKBOT   CALL GET_NEXT_SYM
  2736.                 CALL BC2STKBOT
  2737.                 JR CP_SINTAX
  2738.  
  2739. ; ОТКРЫТИЕ КАНАЛА 0
  2740. OPEN_CHAN_0     XOR A
  2741. OPENSTREAM      RST 0X20
  2742.                 DW 0X1601               ; ОТКРЫТИЕ КАНАЛА
  2743.                 RET
  2744.  
  2745. ; ОТКРЫТИЕ КАНАЛА 2
  2746. OPEN_CHAN_2     LD A,2
  2747.                 JR OPENSTREAM
  2748.  
  2749. GET_SYMSTR      RST 0X20
  2750.                 DW 0X18                 ; ВЫБОРКА СИМВОЛА ИЗ (CH_ADD)
  2751.                 RET
  2752.  
  2753. CALL2BASEDIT    CALL OPEN_CHAN_0        ; ОТКРЫТИЕ КАНАЛА 0
  2754.                 RST 0X20
  2755.                 DW 0X0F2C               ; РЕДАКТОР КОМАНДНОЙ СТРОКИ
  2756.                 RET
  2757.  
  2758. ; ОЧИСТКА ОСНОВНОГО ЭКРАНА
  2759. CLEAR_SCREEN    RST 0X20
  2760.                 DW 0X0D6B               ; ОЧИСТКА ЭКРАНА
  2761.                 RET
  2762.  
  2763. LOOK_VARS       RST 0X20
  2764.                 DW 0X28B2               ; LOOK-VARS. ФИГ ЗНАЕТ ЧЕ ДЕЛАЕТ
  2765.                 RET
  2766.  
  2767. ; ОЧИСТКА НИЖНЕЙ ЧАСТИ ЭКРАНА
  2768. CLEAR_DOWN_SCR  RST 0X20
  2769.                 DW 0X0D6E               ; ОЧИСТКА НИЖНЕЙ ЧАСТИ ЭКРАНА
  2770.                 RET
  2771.  
  2772. PRINT_CHISLO_A_ LD C,A
  2773. CONV2_2BYTES    LD B,0
  2774.  
  2775. PRINT_CHISLO    RST 0X20
  2776.                 DW 0X1A1B               ; ПЕЧАТЬ СООБЩЕНИЙ И НОМЕРОВ СТРОК
  2777.                 RET
  2778.  
  2779. GET_STKBOT_     RST 0X20
  2780.                 DW 0X2BF1               ; ЧТЕНИЕ ДНА СТЕКА КАЛЬКУЛЯТОРА
  2781.                 RET
  2782.  
  2783. FIND_LAST       RST 0X20
  2784.                 DW 0X1E99               ; ПОИСК ПОСЛЕДНЕГО ЦЕЛОГО ЧИСЛА
  2785.                 RET
  2786.  
  2787. PUT_NUMDSK_STK  RST 0X20
  2788.                 DW 0X1C8C
  2789.                 RET
  2790.  
  2791. BC2STKBOT       RST 0X20
  2792.                 DW 0X1C82
  2793.                 RET
  2794.  
  2795. PRINT_0D        LD A,0X0D
  2796. PRINT_A_        RST 0X20
  2797.                 DW 0X10
  2798.                 RET
  2799.  
  2800. SET_CH_ADD      LD HL,(TRD_5D11)        ; АДРЕС СТРОКИ КОМАНДЫ TR_DOS
  2801.                 INC HL
  2802.                 LD (CH_ADD), HL
  2803.                 RET
  2804.  
  2805. INPUT_2STR2STKBOT
  2806.                 CALL SET_AND_PUT
  2807. LOC_1DD0        CALL GET_SYMSTR
  2808.                 CP ","
  2809.                 JP NZ,SINTAX_ERROR
  2810.                 CALL GET_NEXT_SYM
  2811.                 JR PUT_NUMDSK_STK
  2812.  
  2813. SET_AND_PUT     CALL SET_CH_ADD
  2814.                 JP PUT_NUMDSK_STK
  2815.  
  2816. GET_START_SIZE  CALL GET_SYMSTR
  2817.                 CP 0XAF
  2818.                 RET NZ
  2819. INPUT_PARAMS    CALL CHISLO2STKBOT      ; ЗАНЕСЕНИЕ ЧИСЛА НА СТЕК КАЛЬКУЛЯТОРА
  2820.                 JR Z,LOC_1DFB
  2821.                 CALL FIND_LAST
  2822.                 LD (TRD_5CD9),BC        ; ПРОМЕЖУТОЧНАЯ ДЛИНА ДЛЯ <B> И <C>
  2823.                 LD (TRD_5CDB),BC
  2824. LOC_1DFB        CALL GET_SYMSTR
  2825.                 CP ","
  2826.                 JR Z,SET_NUM_CHAN
  2827.                 CP 0X0D
  2828.                 JP NZ,SINTAX_ERROR
  2829.                 JP EXIT_IF_SINTAX
  2830.  
  2831. SET_NUM_CHAN    CALL CHISLO2STKBOT      ; ЗАНЕСЕНИЕ ЧИСЛА НА СТЕК КАЛЬКУЛЯТОРА
  2832.                 RET Z
  2833.                 CALL FIND_LAST
  2834.                 LD (TRD_5CDB),BC
  2835.                 LD A,3
  2836.                 LD (TRD_5CD6),A         ; #FF-КОМАНДА ПРИНЯТА СИНТАКСИЧЕСКИМ АНАЛИЗАТОРОМ
  2837.                 RET
  2838.  
  2839. DEL_5BYTES      LD HL,(TRD_5D11)        ; АДРЕС СТРОКИ КОМАНДЫ TR_DOS
  2840.                 RST 0X20
  2841.                 DW 0X11A7               ; УДАЛЕНИЕ ИЗ КОМАНДНОЙ СТPОКИ ПЯТИБАЙТНЫХ ЧИСЕЛ
  2842.                 RET
  2843.  
  2844. CREATE_FREERAM  LD HL,(WORKSP)
  2845.                 RST 0X20
  2846.                 DW 0X30                 ; СОЗДАНИЕ СВОБОДНОГО МЕСТА
  2847.                 RET
  2848.  
  2849. GET_NEXT_SYM    RST 0X20
  2850.                 DW 0X20                 ; ПЕЧАТЬ СЛЕДУЮЩЕГО СИМВОЛА
  2851.                 RET
  2852.  
  2853. DEL_WORKRAM     RST 0X20
  2854.                 DW 0X19E8               ; УДАЛЕНИЕ ОБЛАСТИ ПАМЯТИ
  2855.                 RET
  2856.  
  2857. RESERV_RAM      RST 0X20
  2858.                 DW 0X1655
  2859.                 RET
  2860.  
  2861.                 DUPL 0X1E36-$,0XFF
  2862. WR_NUM_TRACK    CALL GET_NUM_TRACK      ;FIX
  2863.                 LD A,H
  2864.                 IF EMU3D2F=1
  2865.                 OUT (0X4F),A
  2866.                 ELSE
  2867.                 OUT (0X3F),A
  2868.                 ENDIF
  2869.                 RET
  2870.  
  2871. RUNCODE         LD HL,RUN_CODE
  2872.                 LD (TRD_5D1A),HL
  2873.                 JP END_COMAND
  2874.  
  2875.                 DUPL 0X1E52-$,0XFF
  2876. ;ЧТЕНИЕ СЕКТОРОВ
  2877. COM_05          XOR A
  2878.                 JR LOC_1E64
  2879.  
  2880. WR_HEAD_FILENAME
  2881.                 CALL SET_HEAD_FILENAME  ; СОХРАНЕНИЕ ОПИСАТЕЛЯ ФАЙЛА
  2882. REWRITE_9SEC    LD DE,(TRD_5CF4)        ; ПЕРЕЗАПИСЬ 9 СЕКТОРА
  2883.                 DEC DE
  2884.                 LD B,1
  2885.                 LD HL,TRD_5D25
  2886. ;ЗАПИСЬ СЕКТОРОВ
  2887. COM_06          LD A,0XFF
  2888. LOC_1E64        LD (TRD_5CCE),A         ; #00-ЧТЕНИЕ СЕКТОРА,#FF-ЗАПИСЬ СЕКТОРА
  2889. LOC_1E67        LD (TRD_5CF4),DE
  2890.                 PUSH BC
  2891.                 PUSH HL
  2892.                 CALL SV_LD_RAMDISK
  2893.                 POP HL
  2894.                 POP BC
  2895.                 XOR A
  2896.                 OR B
  2897.                 RET Z
  2898. LOC_1E75        PUSH BC
  2899.                 PUSH HL
  2900.                 CALL COM_04
  2901.                 LD A,(TRD_5CF4)
  2902.                 CALL COM_03
  2903.                 LD A,(TRD_5CF5)
  2904.                 CALL COM_02
  2905.                 LD A,(TRD_5CCE)         ; #00-ЧТЕНИЕ СЕКТОРА,#FF-ЗАПИСЬ СЕКТОРА
  2906.                 OR A
  2907.                 PUSH AF
  2908.                 CALL Z,LOAD_SECTOR
  2909.                 POP AF
  2910.                 CALL NZ,SAVE_SECTOR
  2911.                 LD A,0X10
  2912.                 LD HL,TRD_5CF4
  2913.                 INC (HL)
  2914.                 CP (HL)
  2915.                 JR NZ,LOC_1EA7
  2916.                 LD (HL),0
  2917.                 INC HL
  2918.                 INC (HL)
  2919. LOC_1EA7        POP HL
  2920.                 POP BC
  2921.                 INC H
  2922.                 DJNZ LOC_1E75
  2923.                 RET
  2924.  
  2925. KOLWO_SECS      PUSH HL
  2926.                 LD H,A
  2927.                 LD L,0
  2928.                 PUSH HL
  2929.                 SBC HL,DE
  2930.                 CALL C,LOAD_FILLFILE
  2931.                 POP HL
  2932.                 LD A,H
  2933.                 POP HL
  2934.                 RET C
  2935.                 LD A,D
  2936.                 RET
  2937.  
  2938. LOAD_FILLFILE   XOR A
  2939.                 LD (TRD_5CD6),A         ; #FF-КОМАНДА ПРИНЯТА СИНТАКСИЧЕСКИМ АНАЛИЗАТОРОМ
  2940.                 SCF
  2941.                 RET
  2942.  
  2943. FORMAT          LD HL,0XFFFF
  2944.                 LD (TRD_5CD7),HL        ; ПРОМЕЖУТОЧНЫЙ СТАРТ ФАЙЛА ИЛИ КОЛ-ВО ТРЕКОВ
  2945.                                         ; ПОСЛЕ ПРОВЕРКИ ТИПА ДИСКОВОДА
  2946.                 LD (TRD_5CD9),HL        ; ПРОМЕЖУТОЧНАЯ ДЛИНА ДЛЯ <B> И <C>
  2947.                 LD (TRD_5CD1),HL
  2948.                 CALL CP_SECOND_SYM
  2949.                 JP Z,SINTAX_ERROR
  2950.                 CALL SET_AND_PUT
  2951.                 CALL EXIT_IF_SINTAX
  2952.                 CALL SET_FILENAME
  2953.                 CALL FORMAT_RAM
  2954.                 JR Z,END_FORMAT
  2955.                 LD A,0X50
  2956. LOC_1EE8        LD (TRD_5CD7),A         ; ПРОМЕЖУТОЧНЫЙ СТАРТ ФАЙЛА ИЛИ КОЛ-ВО ТРЕКОВ
  2957.                                         ; ПОСЛЕ ПРОВЕРКИ ТИПА ДИСКОВОДА
  2958.                 CALL COM_00
  2959.                 CALL COM_17
  2960.                 CALL PAUSE_3_C_A
  2961.                 LD E,1
  2962.                 CALL FORMAT_TREK
  2963.                 CALL COM_16
  2964.                 LD E,0
  2965.                 CALL FORMAT_TREK
  2966.                 CALL COM_17
  2967.                 CALL PAUSE_3_C_A
  2968.                 CALL LOC_3EB5
  2969.                 LD A,0X80
  2970.                 LD (TRD_5CDA),A
  2971. LOC_1F1B        CALL FORMAT_DISK
  2972. END_FORMAT      CALL CP_TYPEDRIVE
  2973.                 CALL Z,CREATE_TRDTABL
  2974.                 CALL CLEAR_DOWN_SCR
  2975.                 LD HL,TRD_5D25
  2976.                 LD DE,TRD_5D26
  2977.                 LD BC,0XFF
  2978.                 LD (HL),B
  2979.                 LDIR
  2980.                 LD A,0X16
  2981.                 LD HL,0X9F0
  2982. LOC_1F55        LD (TRD_5E08),A
  2983.                 LD (TRD_5E0A),HL
  2984.                 LD A,1
  2985.                 LD (TRD_5E07),A
  2986.                 LD A,0X10
  2987.                 LD (TRD_5E0C),A
  2988.                 LD HL,TRD_5E0F
  2989.                 LD DE,TRD_5E10
  2990.                 LD BC,8
  2991.                 LD (HL)," "
  2992.                 LDIR
  2993.                 LD HL,TRD_5CDD          ; ИМЯ ФАЙЛА
  2994.                 LD DE,TRD_5E1A
  2995.                 LD C,8
  2996.                 LDIR                    ;ПЕРЕНОС ИМЕНИ ДИСКА
  2997.                 CALL COM_16
  2998.                 LD B,1
  2999.                 LD DE,8
  3000.                 LD HL,TRD_5D25
  3001.                 CALL COM_06
  3002.                 LD A,(TRD_5CD6)         ; #FF-КОМАНДА ПРИНЯТА СИНТАКСИЧЕСКИМ АНАЛИЗАТОРОМ
  3003.                 PUSH AF
  3004.                 XOR A
  3005.                 LD (TRD_5CE5),A         ; РАСШИРЕНИЕ ФАЙЛА
  3006.                 LD HL,(TRD_5E0A)
  3007.                 LD (TRD_5CD7),HL        ; ПРОМЕЖУТОЧНЫЙ СТАРТ ФАЙЛА ИЛИ КОЛ-ВО ТРЕКОВ
  3008.                                         ; ПОСЛЕ ПРОВЕРКИ ТИПА ДИСКОВОДА
  3009.                 LD HL,TRD_5CDD          ; ИМЯ ФАЙЛА
  3010.                 CALL PRINT8SYM
  3011.                 LD A,0X0D
  3012.                 RST 0X10
  3013.                 LD HL,(TRD_5CD7)        ; ПРОМЕЖУТОЧНЫЙ СТАРТ ФАЙЛА ИЛИ КОЛ-ВО ТРЕКОВ
  3014.                                         ; ПОСЛЕ ПРОВЕРКИ ТИПА ДИСКОВОДА
  3015.                 POP AF
  3016.                 PUSH HL
  3017.                 LD D,0
  3018.                 LD E,A
  3019.                 SBC HL,DE
  3020.                 LD B,H
  3021.                 LD C,L
  3022.                 CALL PRINT_CHISLO       ; ПЕЧАТЬ ЧИСЛА
  3023.                 LD A,"/"
  3024.                 RST 0X10
  3025.                 POP BC
  3026.                 CALL PRINT_CHISLO       ; ПЕЧАТЬ ЧИСЛА
  3027.                 JP END_COMAND
  3028.  
  3029. ;ТАБЛИЦА НОМЕРОВ СЕКТОРОВ ДЛЯ ФОРМАТИРОВАНИЯ
  3030. TABL_SECTORS    DB 0X01,0X02,0X03,0X04,0X05,0X06,0X07,0X08,0X09,0X0A,0X0B,0X0C,0X0D,0X0E,0X0F,0X10,0X01
  3031.  
  3032.                 DUPL 0X1FEB-$,0XFF
  3033. ;УСТАНОВКА СТОРОНЫ 0 ДИСКА
  3034. COM_16          LD A,(TRD_5D16)         ; КОПИЯ СИСТЕМНОГО РЕГИСТРА (ПОРТ #FF)
  3035.                 OR 0X3C
  3036. LOC_1FF0        LD (TRD_5D16),A         ; КОПИЯ СИСТЕМНОГО РЕГИСТРА (ПОРТ #FF)
  3037.                 IF EMUWRFF
  3038.                 RST 0X30
  3039.                 DB WOUTFF
  3040.                 ELSE
  3041.                 OUT (0XFF),A
  3042.                 ENDIF
  3043.                 RET
  3044.  
  3045. ;УСТАНОВКА СТОРОНЫ 1 ДИСКА
  3046. COM_17          LD A,(TRD_5D16)         ; КОПИЯ СИСТЕМНОГО РЕГИСТРА (ПОРТ #FF)
  3047.                 AND 0X6F
  3048.                 JR LOC_1FF0
  3049.  
  3050. FORMAT_TREK     DI
  3051.                 LD A,0XF4
  3052.                 IF EMU3D2F=1
  3053.                 RST 0X30
  3054.                 DB WOUT1F
  3055.                 ELSE
  3056.                 OUT (0X1F),A
  3057.                 ENDIF          
  3058.                 LD HL,TABL_SECTORS
  3059.                 LD C,0X7F
  3060. LOC_2007        LD B,0X0A
  3061.                 LD D,0X4E
  3062.                 CALL WRITE_C_D_B
  3063.                 LD B,0X0C
  3064.                 LD D,0
  3065.                 CALL WRITE_C_D_B
  3066.                 LD B,3
  3067.                 LD D,0XF5
  3068.                 CALL WRITE_C_D_B
  3069.                 LD D,0XFE
  3070.                 CALL WRITE_C_D_1
  3071.                 LD D,E
  3072.                 CALL WRITE_C_D_1
  3073.                 LD D,0
  3074.                 CALL WRITE_C_D_1
  3075.                 LD D,(HL)
  3076.                 CALL WRITE_C_D_1
  3077.                 LD D,1
  3078.                 CALL WRITE_C_D_1
  3079.                 LD D,0XF7
  3080.                 CALL WRITE_C_D_1
  3081.                 LD B,0X16
  3082.                 LD D,0X4E
  3083.                 CALL WRITE_C_D_B
  3084.                 LD B,0X0C
  3085.                 LD D,0
  3086.                 CALL WRITE_C_D_B
  3087.                 LD B,3
  3088.                 LD D,0XF5
  3089.                 CALL WRITE_C_D_B
  3090.                 LD D,0XFB
  3091.                 CALL WRITE_C_D_1
  3092.                 LD B,0
  3093.                 LD D,0
  3094.                 CALL WRITE_C_D_B
  3095.                 LD D,0XF7
  3096.                 CALL WRITE_C_D_1
  3097.                 LD B,0X3C;0X32
  3098.                 LD D,0X4E
  3099.                 CALL WRITE_C_D_B
  3100.                 LD A,(HL)
  3101.                 INC HL
  3102.                 CP 0X10
  3103.                 JR NZ,LOC_2007
  3104.                 LD B,0
  3105.                 CALL WRITE_C_D_B
  3106.                 JP M,LOC_2076
  3107.                 CALL WRITE_C_D_B
  3108. LOC_2076        IF EMU3D2F=1
  3109.                 RST 0X30
  3110.                 DB WIN1F
  3111.                 ELSE
  3112.                 IN A,(0X1F)
  3113.                 ENDIF
  3114.                 AND 0X40
  3115.                 JP NZ,LOC_3F39          ; READ ONLY
  3116. CP_NUM_TRACK    LD A,(TRD_5CD8)         ; ПРОМЕЖУТОЧНЫЙ СТАРТ ФАЙЛА ИЛИ КОЛ-ВО ТРЕКОВ
  3117.                                         ; ПОСЛЕ ПРОВЕРКИ ТИПА ДИСКОВОДА
  3118.                 OR A
  3119.                 RET NZ
  3120.                 LD C,0X7F
  3121.                 LD A,E
  3122.                 IF EMU3D2F=1
  3123.                 OUT (0X4F),A
  3124.                 ELSE
  3125.                 OUT (0X3F),A
  3126.                 ENDIF
  3127.                 LD HL,TABL_SECTORS+1
  3128. LOC_208A        LD B,3
  3129.                 LD A,(HL)
  3130.                 IF EMU3D2F=1
  3131.                 OUT (0X6F),A
  3132.                 ELSE
  3133.                 OUT (0X5F),A
  3134.                 ENDIF
  3135.                 PUSH HL
  3136. LOC_2090        DI
  3137.                 LD A,0X80
  3138.                 IF EMU3D2F=1
  3139.                 RST 0X30
  3140.                 DB WOUT1F
  3141.                 ELSE
  3142.                 OUT (0X1F),A
  3143.                 ENDIF
  3144.                 PUSH BC
  3145.                 CALL RD_DATAPORT
  3146.                 IF EMU3D2F=1
  3147.                 RST 0X30
  3148.                 DB WIN1F
  3149.                 ELSE
  3150.                 IN A,(0X1F)
  3151.                 ENDIF
  3152.                 AND 0X7F
  3153.                 POP BC
  3154.                 JR Z,LOC_20A6
  3155.                 DJNZ LOC_2090
  3156.                 LD HL,TRD_5CD6          ; #FF-КОМАНДА ПРИНЯТА СИНТАКСИЧЕСКИМ АНАЛИЗАТОРОМ
  3157.                 INC (HL)
  3158. LOC_20A6        POP HL
  3159.                 LD A,(HL)
  3160.                 INC HL
  3161.                 CP 1
  3162.                 JR NZ,LOC_208A
  3163.                 EI
  3164.                 RET
  3165.  
  3166. WRITE_C_D_1     LD B,1
  3167. WRITE_C_D_B     IF EMU3D2F=1
  3168.                 RST 0X30
  3169.                 DB WINFF
  3170.                 ELSE
  3171.                 IN A,(0XFF)
  3172.                 ENDIF
  3173.                 AND 0XC0
  3174.                 JR Z,WRITE_C_D_B
  3175.                 RET M
  3176.                 IF EMU3D2F=1
  3177.                 RST 0X30
  3178.                 DB WOUTCD
  3179.                 ELSE
  3180.                 OUT (C),D
  3181.                 ENDIF
  3182.                 DJNZ WRITE_C_D_B
  3183.                 RET
  3184.  
  3185. FORMAT_DISK     LD HL,TRD_5CD7          ; ПРОМЕЖУТОЧНЫЙ СТАРТ ФАЙЛА ИЛИ КОЛ-ВО ТРЕКОВ
  3186.                                         ; ПОСЛЕ ПРОВЕРКИ ТИПА ДИСКОВОДА
  3187.                 LD B,(HL)
  3188.                 XOR A
  3189.                 INC HL
  3190.                 LD (HL),A
  3191.                 LD E,0XFF
  3192. LOC_20C6        PUSH BC
  3193.                 INC E
  3194.                 LD A,E
  3195.                 LD B,0X18;B
  3196.                 CALL HEAD_POSITION
  3197.                 CALL COM_16
  3198.                 AND A
  3199.                 CALL PRINT_NUM_TRK
  3200.                 CALL FORMAT_TREK
  3201.                 CALL COM_17
  3202.                 SCF
  3203.                 CALL PRINT_NUM_TRK
  3204.                 CALL FORMAT_TREK
  3205. LOC_20E1        POP BC
  3206.                 DJNZ LOC_20C6
  3207.                 RET
  3208.  
  3209. DELETE_BUF      PUSH AF
  3210.                 LD A,(TRD_5CF8)         ; ДИСКОВОД ПРИ ОПЕРАЦИИ С 2 ФАЙЛАМИ
  3211.                 CP 0XFF
  3212.                 JR Z,LOC_211C
  3213.                 POP AF
  3214.                 JP DEL_BUF
  3215.  
  3216. LOC_211C        POP AF
  3217.                 RET
  3218.  
  3219. ;УДАЛЕНИЕ ВВЕДЕННОЙ СТРОКИ ПОСЛЕ ВЫПОЛНЕНИЯ КОМАНДЫ
  3220. CLRBUF_EDITOR
  3221.                 LD HL,(K_CUR)
  3222.                 LD DE,(E_LINE)
  3223.                 RST 0X20
  3224.                 DW 0X19E5
  3225.                 RST 0X20
  3226.                 DW 0X16B0;F
  3227.                 LD HL,(E_LINE)          ; АДРЕС НАЧАЛА РЕДАКТИРУЕМОЙ СТРОКИ
  3228.                 LD (HL),0X0D
  3229.                 LD (K_CUR),HL
  3230.                 INC HL
  3231.                 LD (HL),0X80
  3232.                 RET
  3233.  
  3234. ;ВОССТАНОВЛЕНИЕ ВВЕДЕНОЙ СТРОКИ В БУФЕРЕ РЕДАКТОРА
  3235. RESTORE_COMSTR  LD DE,(E_LINE)          ; АДРЕС НАЧАЛА РЕДАКТИРУЕМОЙ СТРОКИ
  3236.                 LD HL,TRD_5D20          ; ДЛЯ СОХРАНЕНИЯ 3 СИМВОЛОВ ВВЕДЕНОЙ СТРОКИ
  3237.                 JP LDI3_HL2DE           ; ПЕРЕНОС 3 БАЙТ
  3238.  
  3239. ; ПРИНЯТИЕ И ОБРАБОТКА КОМАНД
  3240. GET_COMMAND     LD A,(TRD_5D0F)         ; НОМЕР ОШИБКИ TR-DOS
  3241.                 AND A
  3242.                 PUSH AF
  3243.                 CALL NZ,RESTORE_COMSTR  ;ЕСЛИ БЫЛА ОШИБКА, ТО ВОЗВРАЩАЕМ 3 СОХРАННЕНЫХ БАЙТА
  3244.                 POP AF
  3245.                 CALL Z,CLRBUF_EDITOR    ;ЕСЛИ ОШИБКИ НЕ БЫЛО, ТО ОЧИСТКА БУФЕРА СТРОКИ РЕДАКТИРОВАНИЯ
  3246.                 LD HL,(E_LINE)          ; АДРЕС НАЧАЛА РЕДАКТИРУЕМОЙ СТРОКИ
  3247.                 CALL PRINT_0D
  3248.                 LD A,(TRD_5D19)         ; ДИСКОВОД ПО УМОЛЧАНИЮ
  3249.                 CALL GET_COMMAND2
  3250.                 LD A,">"
  3251.                 RST 0X10
  3252.                 LD HL,ERR_NR
  3253.                 LD (HL),0XFF
  3254.                 JP CALL2BASEDIT
  3255.  
  3256. SUB_2158        CALL GET_NEXT_SYM
  3257.                 CALL GET_SYMSTR
  3258.                 CP ","
  3259.                 JP NZ,SINTAX_ERROR
  3260.                 LD HL,(TRD_5CDB)
  3261.                 LD (TRD_5CD9),HL        ; ПРОМЕЖУТОЧНАЯ ДЛИНА ДЛЯ <B> И <C>
  3262.                 CALL SET_NUM_CHAN
  3263.                 CALL EXIT_IF_SINTAX
  3264.                 LD HL,(TRD_5CDB)
  3265.                 LD A,H
  3266.                 OR A
  3267.                 JP NZ,SINTAX_ERROR
  3268.                 INC HL
  3269.                 LD (TRD_5CD7),HL        ; ПРОМЕЖУТОЧНЫЙ СТАРТ ФАЙЛА ИЛИ КОЛ-ВО ТРЕКОВ
  3270.                                         ; ПОСЛЕ ПРОВЕРКИ ТИПА ДИСКОВОДА
  3271.                 LD HL,(TRD_5CD9)        ; ПРОМЕЖУТОЧНАЯ ДЛИНА ДЛЯ <B> И <C>
  3272.                 LD (TRD_5CDB), HL
  3273.                 RET
  3274.  
  3275. OPEN            LD HL,(TRD_5D11)        ; АДРЕС СТРОКИ КОМАНДЫ TR_DOS
  3276.                 LD (CH_ADD),HL
  3277.                 CALL SET_NUM_CHAN
  3278.                 CALL LOC_1DD0
  3279. LOC_218E        CALL GET_SYMSTR
  3280.                 CP "A"
  3281.                 JR NC,LOC_219A
  3282.                 CALL GET_NEXT_SYM
  3283.                 JR LOC_218E
  3284.  
  3285. LOC_219A        CP 0XA5
  3286.                 PUSH AF
  3287.                 CALL Z,SUB_2158
  3288.                 POP AF
  3289.                 JR Z,LOC_21AE
  3290.                 AND 0XDF
  3291.                 CP "R"
  3292.                 JR Z,LOC_21AE
  3293.                 CP "W"
  3294.                 JP NZ,SINTAX_ERROR
  3295. LOC_21AE        LD (TRD_5D09),A
  3296.                 CALL EXIT_IF_SINTAX
  3297.                 LD A,"#"
  3298.                 LD (TRD_5CE5),A         ; РАСШИРЕНИЕ ФАЙЛА
  3299.                 LD A,0
  3300.                 LD (TRD_5CE6), A        ; ДЛЯ <C>-СТАРТОВЫЙ АДРЕС,ДЛЯ <B>-ДЛИНА ПРОГРАММЫ
  3301.                 CALL FIND_ENDFILE
  3302.                 PUSH AF
  3303.                 CALL CP_STREAMS
  3304.                 POP AF
  3305.                 PUSH AF
  3306.                 CALL NZ,CREATE_BLOCK0
  3307.                 POP AF
  3308.                 CALL OPEN_STREAM
  3309.                 LD HL,(TRD_5D11)        ; АДРЕС СТРОКИ КОМАНДЫ TR_DOS
  3310.                 LD BC,0X124
  3311.                 ADD HL,BC
  3312.                 LD (TRD_5D11),HL        ; АДРЕС СТРОКИ КОМАНДЫ TR_DOS
  3313.                 JP END_COMAND
  3314.  
  3315. FIND_ENDFILE    LD A,0X0A
  3316.                 LD (TRD_5D06),A         ; КОЛИЧЕСТВО СИМВОЛОВ ИМЕНИ ФАЙЛА ПРИ ПОИСКЕ
  3317.                 CALL SET_CP_FILENAME
  3318.                 PUSH AF
  3319.                 CALL COM_18             ; НАСТРОЙКА НА ДИСКЕТУ
  3320.                 POP AF
  3321.                 JR NZ,LOC_2206
  3322.                 LD A,(TRD_5D09)
  3323.                 CP "R"
  3324.                 JR Z,LOC_2201
  3325. LOC_21F1        LD HL,TRD_5CE6          ; ДЛЯ <C>-СТАРТОВЫЙ АДРЕС,ДЛЯ <B>-ДЛИНА ПРОГРАММЫ
  3326.                 INC (HL)
  3327.                 CALL FIND_FILENAME      ; ПОИСК ФАЙЛА ПО ИМЕНИ ФАЙЛА
  3328.                 JR Z,LOC_21F1
  3329.                 LD HL,TRD_5CE6          ; ДЛЯ <C>-СТАРТОВЫЙ АДРЕС,ДЛЯ <B>-ДЛИНА ПРОГРАММЫ
  3330.                 DEC (HL)
  3331.                 CALL FIND_FILENAME      ; ПОИСК ФАЙЛА ПО ИМЕНИ ФАЙЛА
  3332. LOC_2201        CALL RD_HEAD_FILENAME   ; ЧТЕНИЕ ОПИСАТЕЛЯ ФАЙЛА
  3333.                 XOR A
  3334.                 RET
  3335.  
  3336. LOC_2206        LD A,(TRD_5D09)
  3337.                 CP "R"
  3338.                 RET NZ
  3339.                 JP ERR_NOFILES
  3340.  
  3341. CP_STREAMS      LD A,(TRD_5CDB)
  3342.                 RST 0X20
  3343.                 DW 0X1727
  3344.                 LD A,B
  3345.                 OR C
  3346.                 RET Z
  3347.  
  3348. LOC_221B        LD A,0X19
  3349.                 LD (ERR_NR),A
  3350.                 LD HL,ASC_2804          ; "STREAM OPENED"
  3351.                 LD A,0X0A
  3352. LOC_2225        JP PRINT_TXTERR
  3353.  
  3354. LOC_2228        LD A,0X0B
  3355.                 LD HL,ASC_2812          ; "NOT DISK FILE"
  3356.                 JR LOC_2225
  3357.  
  3358. INITFREEACCESS  PUSH HL
  3359.                 LD C,0X20
  3360.                 RST 0X28
  3361.                 LD A,(TRD_5CD7)         ; ПРОМЕЖУТОЧНЫЙ СТАРТ ФАЙЛА ИЛИ КОЛ-ВО ТРЕКОВ
  3362.                                         ; ПОСЛЕ ПРОВЕРКИ ТИПА ДИСКОВОДА
  3363.                 LD (HL),A
  3364.                 INC HL
  3365.                 XOR A
  3366.                 LD (HL),A
  3367.                 INC HL
  3368.                 LD (HL),A
  3369.                 INC HL
  3370.                 LD (HL),A
  3371.                 LD A,0X7F
  3372.                 POP HL
  3373.                 RET
  3374.  
  3375. OPEN_STREAM     PUSH AF
  3376.                 CALL CP_STREAMS
  3377.                 EX DE,HL
  3378.                 LD HL,(PROG)
  3379.                 LD BC,(CHANS)
  3380.                 SBC HL,BC
  3381.                 EX DE,HL
  3382.                 LD (HL),E
  3383.                 INC HL
  3384.                 LD (HL),D
  3385.                 CALL CREATE_HEADCHAN
  3386.                 LD A,(TRD_5D09)
  3387.                 CP 0XA5
  3388.                 CALL Z,INITFREEACCESS
  3389.                 JR Z,LOC_226B
  3390.                 LD A,(TRD_5D09)
  3391.                 CP "R"
  3392.                 LD A,0XFF
  3393.                 JR NZ,LOC_226B
  3394.                 XOR A
  3395. LOC_226B        LD (HL),A
  3396.                 POP AF
  3397.                 JP LOC_2270
  3398.  
  3399. LOC_2270        PUSH AF
  3400.                 LD BC,0X14
  3401.                 ADD HL,BC
  3402.                 PUSH HL
  3403.                 CALL GET_TEKSECFILE
  3404.                 POP HL
  3405.                 INC HL
  3406.                 LD B,1
  3407.                 POP AF
  3408.                 OR A
  3409.                 PUSH AF
  3410.                 CALL NZ,COM_06
  3411.                 POP AF
  3412.                 JP Z,COM_05             ; ЧТЕНИЕ СЕКТОРОВ
  3413.                 RET
  3414.  
  3415. CREATE_BLOCK0   LD HL,(TRD_5CD7)        ; ПРОМЕЖУТОЧНЫЙ СТАРТ ФАЙЛА ИЛИ КОЛ-ВО ТРЕКОВ
  3416.                                         ; ПОСЛЕ ПРОВЕРКИ ТИПА ДИСКОВОДА
  3417.                 PUSH HL
  3418.                 LD HL,0X2000
  3419.                 LD (TRD_5CD7),HL        ; ПРОМЕЖУТОЧНЫЙ СТАРТ ФАЙЛА ИЛИ КОЛ-ВО ТРЕКОВ
  3420.                                         ; ПОСЛЕ ПРОВЕРКИ ТИПА ДИСКОВОДА
  3421.                 CALL CREATE_BLOCK
  3422.                 POP HL
  3423.                 LD (TRD_5CD7),HL        ; ПРОМЕЖУТОЧНЫЙ СТАРТ ФАЙЛА ИЛИ КОЛ-ВО ТРЕКОВ
  3424.                                         ; ПОСЛЕ ПРОВЕРКИ ТИПА ДИСКОВОДА
  3425.                 RET
  3426.  
  3427. CREATE_BLOCK    LD HL,0X1000
  3428.                 LD (TRD_5CD9),HL        ; ПРОМЕЖУТОЧНАЯ ДЛИНА ДЛЯ <B> И <C>
  3429.                 CALL CP_FREE_ON_DSK
  3430.                 CALL SAVE_FILE
  3431.                 LD HL,0
  3432.                 LD (TRD_5CE8),HL        ; ДЛИНА ПРОГРАММЫ
  3433.                 CALL SET_HEAD_FILENAME
  3434.                 JP REWRITE_9SEC         ; ПЕРЕЗАПИСЬ 9 СЕКТОРА
  3435.  
  3436. CREATE_HEADCHAN LD HL,(PROG)
  3437.                 DEC HL
  3438.                 LD (CURCHL),HL
  3439.                 PUSH HL
  3440.                 LD BC,0X124
  3441.                 CALL RESERV_RAM
  3442.                 XOR A
  3443.                 LD B,A
  3444. LOC_22C4        LD (DE),A
  3445.                 DEC DE
  3446.                 DJNZ LOC_22C4
  3447.                 POP HL
  3448.                 PUSH HL
  3449.                 LD DE, LOC_3D0E
  3450.                 LD (HL),E
  3451.                 INC HL
  3452.                 LD (HL),D
  3453.                 INC HL
  3454.                 LD DE,LOC_3D06
  3455.                 LD (HL),E
  3456.                 INC HL
  3457.                 LD (HL),D
  3458.                 INC HL
  3459.                 LD (HL),"D"
  3460.                 INC HL
  3461.                 INC HL
  3462.                 INC HL
  3463.                 INC HL
  3464.                 INC HL
  3465.                 LD (HL),"$"
  3466.                 INC HL
  3467.                 LD (HL),1
  3468.                 INC HL
  3469.                 LD A,(TRD_5CF6)         ; ДИСКОВОД ДЛЯ ВРЕМЕННОЙ ОПЕРАЦИИ
  3470.                 LD (HL), A
  3471.                 INC HL
  3472.                 LD A,(TRD_5D1E)
  3473.                 LD (HL),A
  3474.                 INC HL
  3475.                 LD A,(TRD_5D09)
  3476.                 CP "R"
  3477.                 LD (HL),0
  3478.                 JR Z,LOC_22FC
  3479.                 LD A,(TRD_5CE8)         ; ДЛИНА ПРОГРАММЫ
  3480.                 LD (HL),A
  3481. LOC_22FC        INC HL
  3482.                 LD (HL),B
  3483.                 JR Z,LOC_2304
  3484.                 LD A,(TRD_5CE9)         ; ДЛИНА ПРОГРАММЫ
  3485.                 LD (HL),A
  3486. LOC_2304        INC HL
  3487.                 EX DE,HL
  3488.                 POP HL
  3489.                 PUSH DE
  3490.                 LD DE,0X10
  3491.                 ADD HL,DE
  3492.                 EX DE,HL
  3493.                 LD HL,TRD_5CDD          ; ИМЯ ФАЙЛА
  3494.                 LD BC,0X10
  3495.                 JP EMU_LDIR_RHL
  3496.  
  3497. GET_ADRTEKSYM   LD C,0X0D
  3498.                 RST 0X28
  3499.                 LD C,(HL)
  3500.                 RST 0X28
  3501.                 LD BC,0X24
  3502.                 ADD HL,BC
  3503.                 RET
  3504.  
  3505. GET_ADRTEKFRG   LD C,0X24
  3506. SUB_2323        LD B,0
  3507.                 LD HL,(CURCHL)
  3508.                 ADD HL,BC
  3509.                 RET
  3510.  
  3511. CP_ENDOFSECTOR  LD C,0X0D
  3512.                 RST 0X28
  3513.                 INC (HL)
  3514.                 RET NZ
  3515.                 PUSH HL
  3516.                 CALL SET_DSK
  3517.                 CALL SAVE_TEKSECTOR     ; ЗАПИСЬ ТЕКУЩЕГО СЕКТОРА
  3518.                 POP HL
  3519.                 INC HL
  3520.                 INC (HL)
  3521.                 PUSH HL
  3522.                 CALL LOADINGSECTOR
  3523.                 POP HL
  3524.                 LD A,0X10
  3525.                 CP (HL)
  3526.                 RET NZ
  3527.                 PUSH HL
  3528.                 LD C,0X0F
  3529.                 RST 0X28
  3530.                 LD A,(HL)
  3531.                 CP 0X7F
  3532.                 POP HL
  3533.                 JR Z,LOC_2358
  3534.                 LD HL,(CURCHL)
  3535.                 CALL SAVE_HEAD_BLK
  3536.                 LD C,0X0E
  3537.                 RST 0X28
  3538.                 JP LOC_2379
  3539.  
  3540. LOC_2358        CALL FIND_NEXT_BLK
  3541.                 PUSH AF
  3542.                 CALL Z,LOADINGSECTOR
  3543.                 LD C,0X0E
  3544.                 RST 0X28
  3545.                 POP AF
  3546.                 JP NZ,CREATE_NEWBLOCK
  3547.                 RET
  3548.  
  3549. SUB_2367        LD (HL),0
  3550.                 LD C,0X19
  3551.                 RST 0X28
  3552.                 LD D,0X20
  3553.                 LD E,(HL)
  3554.                 RET
  3555.  
  3556. CREATE_NEWBLOCK CALL SUB_2367
  3557.                 LD (TRD_5CD7),DE        ; ПРОМЕЖУТОЧНЫЙ СТАРТ ФАЙЛА ИЛИ КОЛ-ВО ТРЕКОВ
  3558.                                         ; ПОСЛЕ ПРОВЕРКИ ТИПА ДИСКОВОДА
  3559.                 JR CREATE_BLK
  3560.  
  3561. LOC_2379        CALL SUB_2367
  3562.                 INC E
  3563.                 LD (TRD_5CD7), DE       ; ПРОМЕЖУТОЧНЫЙ СТАРТ ФАЙЛА ИЛИ КОЛ-ВО ТРЕКОВ
  3564.                                         ; ПОСЛЕ ПРОВЕРКИ ТИПА ДИСКОВОДА
  3565. CREATE_BLK      CALL CREATE_BLOCK
  3566.                 CALL DEL_BUF
  3567.                 LD C,0X10
  3568.                 RST 0X28
  3569.                 EX DE,HL
  3570.                 LD HL,TRD_5CDD          ; ИМЯ ФАЙЛА
  3571.                 LD BC,0X10
  3572.                 LDIR
  3573.                 LD C,0X0C
  3574.                 RST 0X28
  3575.                 LD A,(TRD_5D1E)
  3576.                 LD (HL),A
  3577.                 RET
  3578.  
  3579. FIND_END_SEC    LD C,0X0D
  3580.                 RST 0X28
  3581.                 INC (HL)
  3582.                 RET NZ
  3583.                 INC HL
  3584.                 INC (HL)
  3585.                 PUSH HL
  3586.                 CALL SET_DSK
  3587.                 LD C,0X23
  3588.                 RST 0X28
  3589.                 LD A,(HL)
  3590.                 OR A
  3591.                 JR Z,LOC_23B6
  3592.                 POP HL
  3593.                 PUSH HL
  3594.                 DEC (HL)
  3595.                 CALL SAVE_TEKSECTOR     ; ЗАПИСЬ ТЕКУЩЕГО СЕКТОРА
  3596.                 POP HL
  3597.                 PUSH HL
  3598.                 INC (HL)
  3599. LOC_23B6        CALL LOADINGSECTOR
  3600.                 POP HL
  3601.                 LD A,0X10
  3602.                 CP (HL)
  3603.                 RET NZ
  3604.  
  3605. OPEN_NEXT_BLK   CALL FIND_NEXT_BLK
  3606.                 PUSH AF
  3607.                 CALL DEL_BUF
  3608.                 POP AF
  3609.                 JP NZ,ERR_ENDOFFILE
  3610.                 JP LOADINGSECTOR
  3611.  
  3612. FIND_NEXT_BLK   LD (HL),0
  3613.                 LD C,0X19
  3614.                 RST 0X28
  3615.                 INC (HL)
  3616.                 LD C,0X10
  3617.                 RST 0X28
  3618.                 LD DE,TRD_5CDD          ; ИМЯ ФАЙЛА
  3619.                 LD BC,0X10
  3620.                 LDIR
  3621.                 CALL FIND_FILENAME      ; ПОИСК ФАЙЛА ПО ИМЕНИ ФАЙЛА
  3622.                 RET NZ
  3623. OPEN_BLK        CALL RD_HEAD_FILENAME   ; ЧТЕНИЕ ОПИСАТЕЛЯ ФАЙЛА
  3624.                 LD C,0X10
  3625.                 RST 0X28
  3626.                 EX DE,HL
  3627.                 LD HL,TRD_5CDD          ; ИМЯ ФАЙЛА
  3628.                 LD BC,0X10
  3629.                 LDIR
  3630.                 LD C,0X0C
  3631.                 RST 0X28
  3632.                 LD A,(TRD_5D1E)
  3633.                 LD (HL),A
  3634.                 XOR A
  3635.                 RET
  3636.  
  3637. ; ЗАПИСЬ ТЕКУЩЕГО СЕКТОРА
  3638. SAVE_TEKSECTOR  CALL GET_TEKSECFILE
  3639.                 CALL GET_ADRTEKFRG
  3640.                 LD B,1
  3641.                 CALL COM_06
  3642.                 LD C,0X0F
  3643.                 RST 0X28
  3644.                 LD A,(HL)
  3645.                 CP 0X7F
  3646.                 RET Z
  3647.                 CALL GET_ADRTEKFRG
  3648.                 XOR A
  3649.                 LD B,A
  3650. LOC_2413        LD (HL),A
  3651.                 INC HL
  3652.                 DJNZ LOC_2413
  3653.                 RET
  3654.  
  3655. LOADINGSECTOR   CALL GET_TEKSECFILE
  3656.                 CALL GET_ADRTEKFRG
  3657.                 LD B,1
  3658.                 JP COM_05               ; ЧТЕНИЕ СЕКТОРОВ
  3659.  
  3660. GET_TEKSECFILE  LD HL,(CURCHL)
  3661.                 LD BC,0X1E
  3662.                 ADD HL,BC
  3663.                 LD E,(HL)
  3664.                 INC HL
  3665.                 LD D,(HL)
  3666.                 LD C,0X0E
  3667.                 RST 0X28
  3668.                 LD B,(HL)
  3669.                 DEC B
  3670.                 INC B
  3671.                 PUSH AF
  3672.                 LD A,0X10
  3673.                 JR Z,LOC_2441
  3674. LOC_2438        INC E
  3675.                 CP E
  3676.                 JR NZ,LOC_243F
  3677.                 LD E,0
  3678.                 INC D
  3679. LOC_243F        DJNZ LOC_2438
  3680. LOC_2441        POP AF
  3681.                 RET
  3682.  
  3683. SET_DSK         LD C,0X0B
  3684.                 RST 0X28
  3685.                 LD A,(HL)
  3686.                 JP COM_01               ; НАСТРОЙКА НА ДИСКОВОД
  3687.  
  3688. OUT_SYM2FILE    LD HL,TRD_5CC2          ; СОДЕРЖИТ #C9. ДЛЯ ПЕРЕХОДА ИЗ TR-DOS В BASIC
  3689.                 PUSH HL
  3690.                 PUSH AF
  3691.                 LD A,0X0A
  3692.                 LD (TRD_5D06),A         ; КОЛИЧЕСТВО СИМВОЛОВ ИМЕНИ ФАЙЛА ПРИ ПОИСКЕ
  3693.                 POP AF
  3694.                 CALL WORK4FREEACCESS
  3695.                 PUSH AF
  3696.                 CALL CP_FILE_OPENED
  3697.                 JP Z,ERR_INVALID_IO
  3698.                 POP AF
  3699.                 CALL GET_ADRTEKSYM
  3700.                 LD (HL),A
  3701.                 JP CP_ENDOFSECTOR
  3702.  
  3703. CP_END_BLK      LD C,0X0D
  3704.                 RST 0X28
  3705.                 LD A,(HL)
  3706.                 LD BC,0X0E
  3707.                 ADD HL,BC
  3708.                 CP (HL)
  3709.                 RET NZ
  3710.                 LD C,0X0E
  3711.                 RST 0X28
  3712.                 LD A,(HL)
  3713.                 LD BC,0X0E
  3714.                 ADD HL,BC
  3715.                 CP (HL)
  3716.                 RET NZ
  3717.                 LD HL,TRD_5CB6          ; ДЛЯ ПРОВЕРКИ НАЛИЧИЯ INTERFACE1
  3718.                 LD A,(HL)
  3719.                 CP 0XF4
  3720.                 JR Z,ERR_ENDOFFILE
  3721.                 BIT 4,(HL)
  3722.                 JR Z,ERR_ENDOFFILE
  3723.                 OR 1
  3724.                 POP HL
  3725.                 RET
  3726.  
  3727. ERR_ENDOFFILE   LD A,7
  3728. LOC_2494        LD (ERR_NR),A
  3729.                 CALL DELETE_BUF
  3730.                 RST 0X20
  3731.                 DW 0X0058
  3732.                 RET
  3733.  
  3734. ERR_INVALID_IO  LD A,0X17
  3735.                 JR LOC_2494
  3736.  
  3737. WORK4FREEACCESS LD D,A
  3738.                 LD C,0X0F
  3739.                 RST 0X28
  3740.                 LD A,(HL)
  3741.                 CP 0X7F
  3742.                 LD A,D
  3743.                 RET NZ
  3744.                 LD BC,0X13
  3745.                 ADD HL,BC
  3746.                 LD A,(HL)
  3747.                 OR A
  3748.                 LD A,D
  3749.                 JR NZ,LOC_24D5
  3750.                 DEC HL
  3751.                 LD A,(HL)
  3752.                 OR A
  3753.                 JR NZ,LOC_24C2
  3754.                 PUSH BC
  3755.                 PUSH HL
  3756.                 PUSH DE
  3757.                 CALL W16B2WORKSP
  3758.                 POP DE
  3759.                 POP HL
  3760.                 POP BC
  3761. LOC_24C2        LD C,(HL)
  3762.                 LD A,D
  3763.                 EX DE,HL
  3764.                 LD HL,(TRD_5CCF)        ; ВРЕМЕННОЕ СОХРАНЕНИЕ WORK_SP
  3765.                 ADD HL,BC
  3766.                 CP 6
  3767.                 LD (HL),A
  3768.                 CALL Z,WORK_NUMSAVE
  3769.                 LD C,0X21
  3770.                 RST 0X28
  3771.                 INC (HL)
  3772.                 POP HL
  3773.                 RET
  3774.  
  3775. LOC_24D5        DEC HL
  3776.                 LD A,(HL)
  3777.                 DEC HL
  3778.                 INC A
  3779.                 CP (HL)
  3780.                 INC HL
  3781.                 INC (HL)
  3782.                 PUSH HL
  3783.                 PUSH AF
  3784.                 LD C,0X23
  3785.                 RST 0X28
  3786.                 LD (HL),0XFF
  3787.                 POP AF
  3788.                 POP HL
  3789.                 JR C,LOC_24EE
  3790.                 LD A, D
  3791.                 CP 0X0D
  3792.                 JR Z,LOC_24F2
  3793.                 POP BC
  3794.                 RET
  3795.  
  3796. LOC_24EE        LD A,D
  3797.                 CP 0X0D
  3798.                 RET NZ
  3799. LOC_24F2        XOR A
  3800.                 LD (HL),A
  3801.                 INC HL
  3802.                 LD (HL),A
  3803.                 LD A,D
  3804.                 RET
  3805.  
  3806. W16B2WORKSP     LD HL,(WORKSP)
  3807.                 LD (TRD_5CCF),HL        ; ВРЕМЕННОЕ СОХРАНЕНИЕ WORK_SP
  3808.                 LD BC,0X10
  3809.                 JP CREATE_FREERAM
  3810.  
  3811. WORK_NUMSAVE    LD (HL),0X0D
  3812.                 LD HL,(CH_ADD)
  3813.                 LD (TRD_5CD7),HL        ; ПРОМЕЖУТОЧНЫЙ СТАРТ ФАЙЛА ИЛИ КОЛ-ВО ТРЕКОВ
  3814.                                         ; ПОСЛЕ ПРОВЕРКИ ТИПА ДИСКОВОДА
  3815.                 LD HL,(TRD_5CCF)        ; ВРЕМЕННОЕ СОХРАНЕНИЕ WORK_SP
  3816.                 LD (CH_ADD),HL
  3817.                 LD HL,FLAGS
  3818.                 RES 7,(HL)
  3819.                 CALL BC2STKBOT
  3820.                 LD HL,FLAGS
  3821.                 SET 7,(HL)
  3822.                 LD HL,(TRD_5CCF)        ; ВРЕМЕННОЕ СОХРАНЕНИЕ WORK_SP
  3823.                 LD (CH_ADD),HL
  3824.                 CALL BC2STKBOT
  3825.                 CALL FIND_LAST
  3826.                 PUSH BC
  3827.                 POP DE
  3828.                 LD C,0X20
  3829.                 RST 0X28
  3830.                 LD B,(HL)
  3831.                 XOR A
  3832.                 LD H,A
  3833.                 LD L,A
  3834.                 LD (TRD_5CDB),HL
  3835. LOC_2538        ADD HL,DE
  3836.                 JR NC,LOC_2544
  3837.                 PUSH HL
  3838.                 LD HL,(TRD_5CDB)
  3839.                 INC HL
  3840.                 LD (TRD_5CDB),HL
  3841.                 POP HL
  3842. LOC_2544        DJNZ LOC_2538
  3843.                 LD (TRD_5CD9),HL        ; ПРОМЕЖУТОЧНАЯ ДЛИНА ДЛЯ <B> И <C>
  3844.                 LD A,(TRD_5CDB)
  3845.                 LD HL,TRD_5CDA
  3846.                 RRD
  3847.                 AND 0X0F
  3848.                 LD (TRD_5CDB),A
  3849.                 LD HL,(TRD_5CD7)        ; ПРОМЕЖУТОЧНЫЙ СТАРТ ФАЙЛА ИЛИ КОЛ-ВО ТРЕКОВ
  3850.                                         ; ПОСЛЕ ПРОВЕРКИ ТИПА ДИСКОВОДА
  3851.                 LD (CH_ADD), HL
  3852.                 CALL OPEN_SAVED
  3853.                 LD C,0X21
  3854.                 RST 0X28
  3855.                 LD A,0XFF
  3856.                 LD (HL),A
  3857.                 INC HL
  3858.                 LD (HL),A
  3859.                 RET
  3860.  
  3861. OPEN_SAVED      LD C,0X19
  3862.                 RST 0X28
  3863.                 LD A,(TRD_5CDA)
  3864.                 CP (HL)
  3865.                 JP NZ,LOC_2584
  3866.                 LD C,0X0E
  3867.                 RST 0X28
  3868.                 LD A,(TRD_5CDB)
  3869.                 CP (HL)
  3870.                 JP NZ,LOC_25A7
  3871. LOC_257C        LD C,0X0D
  3872.                 RST 0X28
  3873.                 LD A,(TRD_5CD9)         ; ПРОМЕЖУТОЧНАЯ ДЛИНА ДЛЯ <B> И <C>
  3874.                 LD (HL),A
  3875.                 RET
  3876.  
  3877. LOC_2584        CALL CPANDZERO23
  3878.                 CALL NZ,SAVE_TEK_SEC
  3879.                 LD A,(TRD_5CDA)
  3880.                 LD C,0X19
  3881.                 RST 0X28
  3882.                 LD (HL),A
  3883.                 LD C,0X10
  3884.                 RST 0X28
  3885.                 LD DE,TRD_5CDD          ; ИМЯ ФАЙЛА
  3886.                 LD BC,0X10
  3887.                 LDIR
  3888.                 CALL FIND_FILENAME      ; ПОИСК ФАЙЛА ПО ИМЕНИ ФАЙЛА
  3889.                 JP NZ,LOC_25D2
  3890.                 CALL OPEN_BLK
  3891.                 JR LOC_25AD
  3892.  
  3893. LOC_25A7        CALL CPANDZERO23
  3894.                 CALL NZ,SAVE_TEK_SEC
  3895. LOC_25AD        LD A,(TRD_5CDB)
  3896.                 LD C,0X0E
  3897.                 RST 0X28
  3898.                 LD (HL),A
  3899.                 PUSH HL
  3900.                 CALL SET_DSK
  3901.                 CALL LOADINGSECTOR
  3902.                 POP HL
  3903.                 DEC HL
  3904.                 LD A,(TRD_5CD9)         ; ПРОМЕЖУТОЧНАЯ ДЛИНА ДЛЯ <B> И <C>
  3905.                 LD (HL),A
  3906.                 JR LOC_257C
  3907.  
  3908. SAVE_TEK_SEC    CALL SET_DSK
  3909.                 JP SAVE_TEKSECTOR       ; ЗАПИСЬ ТЕКУЩЕГО СЕКТОРА
  3910.  
  3911. CPANDZERO23     LD C,0X23
  3912.                 RST 0X28
  3913.                 LD A,(HL)
  3914.                 OR A
  3915.                 LD (HL),0
  3916.                 RET
  3917.  
  3918. LOC_25D2        LD HL,(TRD_5CDA)
  3919.                 LD H,0X20
  3920.                 LD (TRD_5CD7),HL        ; ПРОМЕЖУТОЧНЫЙ СТАРТ ФАЙЛА ИЛИ КОЛ-ВО ТРЕКОВ
  3921.                                         ; ПОСЛЕ ПРОВЕРКИ ТИПА ДИСКОВОДА
  3922.                 LD HL,(TRD_5CD9)        ; ПРОМЕЖУТОЧНАЯ ДЛИНА ДЛЯ <B> И <C>
  3923.                 PUSH HL
  3924.                 LD HL,(TRD_5CDB)
  3925.                 PUSH HL
  3926.                 CALL CREATE_BLK
  3927.                 POP HL
  3928.                 LD (TRD_5CDB),HL
  3929.                 POP HL
  3930.                 LD (TRD_5CD9),HL        ; ПРОМЕЖУТОЧНАЯ ДЛИНА ДЛЯ <B> И <C>
  3931.                 JR LOC_25AD
  3932.  
  3933. INPUTDATAFILE   LD HL,TV_FLAG
  3934.                 RES 3,(HL)
  3935.                 LD HL,(ERR_SP)
  3936.                 LD E,(HL)
  3937.                 INC HL
  3938.                 LD D,(HL)
  3939.                 OR A
  3940.                 LD HL,0X107F
  3941.                 SBC HL,DE
  3942.                 JR NZ,LOC_2626
  3943.                 LD SP,(ERR_SP)
  3944.                 POP DE
  3945.                 POP DE
  3946.                 LD (ERR_SP),DE
  3947. LOC_260F        CALL INPUT_SYM_FILE
  3948.                 JR C,LOC_261D
  3949. LOC_2614        LD HL,TRD_5CC2          ; СОДЕРЖИТ #C9. ДЛЯ ПЕРЕХОДА ИЗ TR-DOS В BASIC
  3950.                 PUSH HL
  3951.                 LD HL,DELETE_BUF
  3952.                 JP (HL)
  3953.  
  3954. LOC_261D        CP 0X0D
  3955.                 JR Z,LOC_2614
  3956.                 RST 0X20
  3957.                 DW 0X0F85
  3958.                 JR LOC_260F
  3959.  
  3960. LOC_2626        CALL INPUT_SYM_FILE
  3961.                 JR LOC_2614
  3962.  
  3963. INPUT_SYM_FILE  LD A,0X0A
  3964.                 LD (TRD_5D06),A         ; КОЛИЧЕСТВО СИМВОЛОВ ИМЕНИ ФАЙЛА ПРИ ПОИСКЕ
  3965.                 CALL CP_FILE_OPENED
  3966.                 JR Z,LOC_2642
  3967.                 CP 0X7F
  3968.                 JP NZ,ERR_INVALID_IO
  3969.                 LD BC,0X13
  3970.                 ADD HL,BC
  3971.                 LD (HL),0
  3972.                 JR LOC_2645
  3973.  
  3974. LOC_2642        CALL CP_END_BLK
  3975. LOC_2645        CALL GET_ADRTEKSYM
  3976.                 LD A,(HL)
  3977.                 PUSH AF
  3978.                 CALL FIND_END_SEC
  3979.                 POP AF
  3980.                 SCF
  3981.                 RET
  3982.  
  3983. CP_FILE_OPENED  LD C,0X0F
  3984.                 RST 0X28
  3985.                 LD A,(HL)
  3986.                 OR A
  3987.                 RET
  3988.  
  3989. CLOSE           LD HL,(TRD_5D11)        ; АДРЕС СТРОКИ КОМАНДЫ TR_DOS
  3990.                 LD (CH_ADD),HL
  3991.                 CALL SET_NUM_CHAN
  3992.                 CALL EXIT_IF_SINTAX
  3993.                 LD A,(TRD_5CDB)
  3994.                 RST 0X20
  3995.                 DW 0X1727
  3996.                 LD A,B
  3997.                 OR C
  3998.                 JP Z,END_COMAND
  3999.                 PUSH HL
  4000.                 LD HL,(CHANS)
  4001.                 ADD HL,BC
  4002.                 LD A,(HL)
  4003.                 LD HL,LOC_3D0E
  4004.                 CP H
  4005.                 POP HL
  4006.                 JP NZ,LOC_2228
  4007.                 LD (HL),0
  4008.                 INC HL
  4009.                 LD (HL),0
  4010.                 LD (TRD_5CD9),BC        ; ПРОМЕЖУТОЧНАЯ ДЛИНА ДЛЯ <B> И <C>
  4011.                 LD HL,(CHANS)
  4012.                 ADD HL,BC
  4013.                 DEC HL
  4014.                 LD (TRD_5CD7), HL       ; ПРОМЕЖУТОЧНЫЙ СТАРТ ФАЙЛА ИЛИ КОЛ-ВО ТРЕКОВ
  4015.                                         ; ПОСЛЕ ПРОВЕРКИ ТИПА ДИСКОВОДА
  4016.                 CALL SUB_26CE
  4017.                 LD HL,(TRD_5CD7)        ; ПРОМЕЖУТОЧНЫЙ СТАРТ ФАЙЛА ИЛИ КОЛ-ВО ТРЕКОВ
  4018.                                         ; ПОСЛЕ ПРОВЕРКИ ТИПА ДИСКОВОДА
  4019.                 LD BC,0X124
  4020.                 CALL DEL_WORKRAM
  4021.                 LD HL,STRMS
  4022.                 LD B,0X10
  4023. LOC_269D        PUSH BC
  4024.                 LD BC,(TRD_5CD9)        ; ПРОМЕЖУТОЧНАЯ ДЛИНА ДЛЯ <B> И <C>
  4025.                 LD E,(HL)
  4026.                 INC HL
  4027.                 LD D,(HL)
  4028.                 EX DE,HL
  4029.                 SBC HL,BC
  4030.                 EX DE,HL
  4031.                 JR C,LOC_26BC
  4032.                 LD D,(HL)
  4033.                 DEC HL
  4034.                 LD E,(HL)
  4035.                 INC HL
  4036.                 PUSH HL
  4037.                 EX DE,HL
  4038.                 LD BC,0X124
  4039.                 SBC HL,BC
  4040.                 EX DE,HL
  4041.                 POP HL
  4042.                 LD (HL),D
  4043.                 DEC HL
  4044.                 LD (HL),E
  4045.                 INC HL
  4046. LOC_26BC        INC HL
  4047.                 POP BC
  4048.                 DJNZ LOC_269D
  4049.                 LD HL,(TRD_5D11)        ; АДРЕС СТРОКИ КОМАНДЫ TR_DOS
  4050.                 LD BC,0X124
  4051.                 SBC HL,BC
  4052.                 LD (TRD_5D11),HL        ; АДРЕС СТРОКИ КОМАНДЫ TR_DOS
  4053.                 JP END_COMAND
  4054.  
  4055. SUB_26CE        LD BC,0X0F
  4056.                 ADD HL,BC
  4057.                 LD A,(HL)
  4058.                 OR A
  4059.                 RET Z
  4060.                 LD HL,(TRD_5CD7)        ; ПРОМЕЖУТОЧНЫЙ СТАРТ ФАЙЛА ИЛИ КОЛ-ВО ТРЕКОВ
  4061.                                         ; ПОСЛЕ ПРОВЕРКИ ТИПА ДИСКОВОДА
  4062.                 LD (CURCHL),HL
  4063.                 CALL SAVE_HEAD_BLK
  4064.                 JP SAVE_TEKSECTOR       ; ЗАПИСЬ ТЕКУЩЕГО СЕКТОРА
  4065.  
  4066. SAVE_HEAD_BLK   LD BC,0X0D
  4067.                 ADD HL,BC
  4068.                 LD E,(HL)
  4069.                 INC HL
  4070.                 LD D,(HL)
  4071.                 LD BC,0X0D
  4072.                 ADD HL,BC
  4073.                 LD (HL),E
  4074.                 INC HL
  4075.                 LD (HL),D
  4076.                 LD C,0X10
  4077.                 RST 0X28
  4078.                 LD DE,TRD_5CDD          ; ИМЯ ФАЙЛА
  4079.                 LD BC,0X10
  4080.                 LDIR
  4081.                 CALL SET_DSK
  4082.                 LD C,0X0C
  4083.                 RST 0X28
  4084.                 LD C,(HL)
  4085.                 CALL SET_HEAD_FILENAME
  4086.                 JP REWRITE_9SEC         ; ПЕРЕЗАПИСЬ 9 СЕКТОРА
  4087.  
  4088. PRINT_MSG       LD A,(HL)
  4089.                 AND 0X7F
  4090.                 RST 0X10
  4091.                 BIT 7,(HL)
  4092.                 INC HL
  4093.                 RET NZ
  4094.                 JR PRINT_MSG            ; ПЕЧАТЬ ТЕКСТОВОГО СООБЩЕНИЯ
  4095.  
  4096. COMPARE_B_SYM   LD A,(DE)
  4097.                 CP (HL)
  4098.                 RET NZ
  4099.                 INC DE
  4100.                 INC HL
  4101.                 DJNZ COMPARE_B_SYM
  4102.                 RET
  4103.  
  4104. LOC_271B        LD HL,TXT_NODISK_       ; "NO DISK"
  4105.                 LD A,6
  4106.                 JP PRINT_TXTERR
  4107.  
  4108. ERR_DIRFULL     LD HL,ASC_27ED          ; "DIRECTORY FULL"
  4109.                 LD A,4
  4110.                 JP PRINT_TXTERR
  4111.  
  4112. SET_TAPELDERR   LD A,0X1A
  4113. SET_NUM_ERR     LD (ERR_NR),A
  4114.                 RET
  4115.  
  4116.                 DUPL 0X2739-$,0XFF
  4117. ;ПРОВЕРКА ДОРОЖКИ
  4118. COM_15          XOR A
  4119.                 LD (TRD_5CD8),A         ; ПРОМЕЖУТОЧНЫЙ СТАРТ ФАЙЛА ИЛИ КОЛ-ВО ТРЕКОВ
  4120.                                         ; ПОСЛЕ ПРОВЕРКИ ТИПА ДИСКОВОДА
  4121.                 LD (TRD_5CD6),A         ; #FF-КОМАНДА ПРИНЯТА СИНТАКСИЧЕСКИМ АНАЛИЗАТОРОМ
  4122.                 IF EMU3D2F=1
  4123.                 RST 0X30
  4124.                 DB WIN1F
  4125.                 ELSE
  4126.                 IN A,(0X1F)
  4127.                 ENDIF
  4128.                 LD (TRD_5CCD),A         ; #80-ГОТОВНОСТЬ ДИСКОВОДА
  4129.                 LD E,D
  4130.                 PUSH DE
  4131.                 LD A,E
  4132.                 IF EMU3D2F=1
  4133.                 OUT (0X8F),A
  4134.                 ELSE
  4135.                 OUT (0X7F),A
  4136.                 ENDIF
  4137.                 LD A,0X18;0X1B
  4138.                 CALL COM2VG_WAIT
  4139.                 LD A,(TRD_5CCD)         ; #80-ГОТОВНОСТЬ ДИСКОВОДА
  4140.                 AND 0X80
  4141.                 CALL NZ,PAUSE_3_C_A
  4142.                 POP DE
  4143.                 CALL CP_NUM_TRACK
  4144.                 LD A,(TRD_5CD6)         ; #FF-КОМАНДА ПРИНЯТА СИНТАКСИЧЕСКИМ АНАЛИЗАТОРОМ
  4145.                 OR A
  4146.                 RET Z
  4147.                 LD A,7
  4148.                 LD (TRD_5D0F),A         ; НОМЕР ОШИБКИ TR-DOS
  4149.                 RET
  4150.  
  4151. TXT_OK_         DC "O.K."
  4152. ASC_276B        DB "Verify Error.",0X8D
  4153. ASC_2779        DB "BACKUP DISK",0X8D
  4154. ASC_2785        DB "Insert Destination disk",0X0D
  4155.                 DC "Then press Y"
  4156. ASC_27AA        DC "Insert Source disk then press Y"
  4157. ASC_27CA        DB "*BREAK*",0X8D
  4158. ASC_27D2        DB "Out Of RAM",0X8D
  4159. ASC_27DD        DB "Array not found",0X8D
  4160. ASC_27ED        DB "Directory full",0X8D
  4161. TXT_NODISK_     DB "No disk",0X8D
  4162. ASC_2804        DB "Stream opened",0X8D
  4163. ASC_2812        DB "Not disk file",0X8D
  4164. ASC_2820        DB "File exists",0X0D
  4165.                 DC "Over write?(Y/N)"
  4166.  
  4167. CALL_3D13       CALL SET_RWPORT0
  4168.                 LD (TRD_5D04),DE
  4169.                 LD (TRD_5D02),HL
  4170.                 LD HL,CP_ERROR          ; АДРЕС ЗАВЕРШЕНИЯ ИНТЕРПРЕТАТОРА
  4171.                 LD (TRD_5D1A),HL        ; ВНУТРЕННИЙ АДРЕС ЗАВЕРШЕНИЯ ИНТЕРПРЕТАТОРА КОМАНД
  4172.                 LD HL,0
  4173.                 ADD HL,SP
  4174.                 LD (TRD_5D1C),HL        ; СОХРАНЕНИЕ ТЕКУЩЕГО СТЕКА
  4175.                 DEC HL
  4176.                 DEC HL
  4177.                 LD SP,HL
  4178.                 PUSH AF
  4179.                 LD A,0XFF
  4180.                 LD (TRD_5D15),A         ; ЕСЛИ 0,ПЕЧАТАТЬ ШАПКУ TR-DOS.ИНАЧЕ НЕ ПЕЧАТАТЬ
  4181.                 LD (TRD_5D1F),A
  4182.                 CALL MARK_SP            ; УСТАНОВКА СТЕКА ДЛЯ ПЕРЕХВАТА ОШИБОК
  4183.                 LD HL,COMAND_TBL
  4184.                 LD A,C
  4185.                 CP LOW ((ECOMAND_TBL-COMAND_TBL)/2)+1
  4186.                 JP NC,END_COMAND
  4187.                 ADD A,A
  4188.                 LD E,A
  4189.                 POP AF
  4190.                 LD D,0
  4191.                 ADD HL,DE
  4192.                 LD E,(HL)
  4193.                 INC HL
  4194.                 LD D,(HL)
  4195.                 LD HL,END_COMAND
  4196.                 PUSH HL
  4197.                 PUSH DE
  4198.                 LD HL,(TRD_5D02)
  4199.                 LD DE,(TRD_5D04)
  4200.                 RET
  4201.  
  4202. COMAND_TBL      DW COM_00               ;ВОССТАНОВЛЕНИЕ ВГ93
  4203.                 DW COM_01               ;НАСТРОЙКА НА ДИСКОВОД
  4204.                 DW COM_02               ;УСТАНОВКА ГОЛОВКИ НА ДОРОЖКУ
  4205.                 DW COM_03               ;УСТАНОВКА НОМЕРА СЕКТОРА
  4206.                 DW COM_04               ;УСТАНОВКА АДРЕСА БУФЕРА
  4207.                 DW COM_05               ;ЧТЕНИЕ СЕКТОРОВ
  4208.                 DW COM_06               ;ЗАПИСЬ СЕКТОРОВ
  4209.                 DW COM_07               ;ВЫВОД КАТАЛОГА В КАНАЛ
  4210.                 DW COM_08               ;СЧИТЫВАНИЕ ОПИСАТЕЛЯ В БУФЕР 0X5CDD
  4211.                 DW COM_09               ;ЗАПИСЬ ОПИСАТЕЛЯ ФАЙЛА НА ДИСК
  4212.                 DW COM_0A               ;ПОИСК ФАЙЛА ПО ИМЕНИ И РАСШИРЕНИЮ
  4213.                 DW COM_0B               ;ЗАПИСЬ БЛОКА КОДОВ НА ДИСК
  4214.                 DW COM_0C               ;ЗАПИСЬ БЕЙСИК ПРОГРАММЫ НА ДИСК
  4215.                 DW END_COMAND
  4216.                 DW COM_0E               ;ЗАГРУЗКА ИЛИ ПРОВЕРКА ФАЙЛА
  4217.                 DW END_COMAND
  4218.                 DW END_COMAND
  4219.                 DW END_COMAND
  4220.                 DW COM_12               ;УДАЛЕНИЕ ФАЙЛА
  4221.                 DW COM_13               ;ПЕРЕНОС ОПИСАТЕЛЯ ФАЙЛА В БУФЕР 0X5CDD
  4222.                 DW COM_14               ;ПЕРЕНОС ОПИСАТЕЛЯ ФАЙЛА ИЗ БУФЕРА 0X5CDD
  4223.                 DW COM_15               ;ПРОВЕРКА ДОРОЖКИ
  4224.                 DW COM_16               ;УСТАНОВКА СТОРОНЫ 0 ДИСКА
  4225.                 DW COM_17               ;УСТАНОВКА СТОРОНЫ 1 ДИСКА
  4226.                 DW COM_18               ;НАСТРОЙКА НА ДИСКЕТУ
  4227. ECOMAND_TBL
  4228.  
  4229. ;ВЫВОД КАТАЛОГА В КАНАЛ
  4230. COM_07          PUSH AF
  4231.                 CALL COM_18             ; НАСТРОЙКА НА ДИСКЕТУ
  4232.                 POP AF
  4233.                 JP LOC_479
  4234.  
  4235. ;ПЕРЕНОС ОПИСАТЕЛЯ ФАЙЛА В БУФЕР 0X5CDD
  4236. COM_13          XOR A
  4237.                 JR LOC_28E5
  4238.  
  4239. ;ПЕРЕНОС ОПИСАТЕЛЯ ФАЙЛА ИЗ БУФЕРА 0X5CDD
  4240. COM_14          LD A,0XFF
  4241. LOC_28E5        LD DE,TRD_5CDD          ; ИМЯ ФАЙЛА
  4242.                 LD BC,0X10
  4243.                 OR A
  4244.                 JR Z,LOC_28EF
  4245.                 EX DE,HL
  4246. LOC_28EF        JP EMU_LDIR
  4247.  
  4248. ;ЗАПИСЬ БЕЙСИК ПРОГРАММЫ НА ДИСК
  4249. COM_0C          CALL COM_18             ; НАСТРОЙКА НА ДИСКЕТУ
  4250.                 CALL CP_FREE_ON_DSK
  4251.                 JP LOC_1B27
  4252.  
  4253. ;ЗАПИСЬ БЛОКА КОДОВ НА ДИСК
  4254. COM_0B          LD (TRD_5CD7),HL        ; ПРОМЕЖУТОЧНЫЙ СТАРТ ФАЙЛА ИЛИ КОЛ-ВО ТРЕКОВ
  4255.                                         ; ПОСЛЕ ПРОВЕРКИ ТИПА ДИСКОВОДА
  4256.                 LD (TRD_5CD9),DE        ; ПРОМЕЖУТОЧНАЯ ДЛИНА ДЛЯ <B> И <C>
  4257.                 LD (TRD_5CDB),DE
  4258.                 CALL COM_18             ; НАСТРОЙКА НА ДИСКЕТУ
  4259.                 CALL CP_FREE_ON_DSK
  4260.                 JP LOC_1B53
  4261.  
  4262.                 DUPL 0X290F-$,0XFF
  4263. ;ЗАГРУЗКА ИЛИ ПРОВЕРКА ФАЙЛА
  4264. COM_0E          OR A
  4265.                 LD (TRD_5CD6),A         ; #FF-КОМАНДА ПРИНЯТА СИНТАКСИЧЕСКИМ АНАЛИЗАТОРОМ
  4266.                 LD (TRD_5CD9),HL        ; ПРОМЕЖУТОЧНАЯ ДЛИНА ДЛЯ <B> И <C>
  4267.                 LD (TRD_5CDB),DE
  4268.                 CALL FIND_FILENAME      ; ПОИСК ФАЙЛА ПО ИМЕНИ ФАЙЛА
  4269.                 CALL FIND_RD_HEAD
  4270.                 CALL CP_PARAMS          ;WDC
  4271.                 JP RD_FILE
  4272.  
  4273. ;УДАЛЕНИЕ ФАЙЛА
  4274. COM_12          CALL COM_18             ; НАСТРОЙКА НА ДИСКЕТУ
  4275.                 CALL FIND_FILENAME      ; ПОИСК ФАЙЛА ПО ИМЕНИ ФАЙЛА
  4276.                 JP ERASE_FILES
  4277.  
  4278. ; ПОИСК ФАЙЛА ПО ИМЕНИ
  4279. FIND_FILE       CALL SET_FILENAME
  4280.                 CALL COM_18             ; НАСТРОЙКА НА ДИСКЕТУ
  4281.                 JP FIND_FILENAME        ; ПОИСК ФАЙЛА ПО ИМЕНИ ФАЙЛА
  4282.  
  4283.                 DUPL 0X294A-$,0XFF
  4284. ; СОЗДАНИЕ БУФЕРА
  4285. CREATE_BUF      PUSH HL
  4286.                 PUSH DE
  4287.                 PUSH BC
  4288.                 PUSH AF
  4289.                 LD HL,TRD_5D0C
  4290.                 LD A,(HL)
  4291.                 OR A
  4292.                 JR Z,LOC_2992
  4293.                 PUSH HL
  4294.                 LD BC,0X101
  4295.                 PUSH BC
  4296.                 CALL CP_FREE_RAM
  4297.                 POP BC
  4298.                 POP HL
  4299.                 LD (HL),0
  4300.                 LD HL,TRD_5D25
  4301.                 PUSH BC
  4302.                 CALL RESERV_RAM
  4303.                 POP BC
  4304.                 LD HL,(TRD_5D11)        ; АДРЕС СТРОКИ КОМАНДЫ TR_DOS
  4305.                 ADD HL,BC
  4306.                 JR LOC_298F
  4307.  
  4308.                 DUPL 0X2970-$,0XFF
  4309. DEL_BUF         PUSH HL
  4310.                 PUSH DE
  4311.                 PUSH BC
  4312.                 PUSH AF
  4313.                 LD HL,TRD_5D0C
  4314.                 LD A,(HL)
  4315.                 OR A
  4316.                 JR NZ,LOC_2992
  4317.                 LD (HL),0XFF
  4318.                 LD HL,TRD_5D25
  4319.                 LD BC,0X101
  4320.                 PUSH BC
  4321.                 CALL DEL_WORKRAM
  4322.                 POP BC
  4323.                 OR A
  4324.                 LD HL,(TRD_5D11)        ; АДРЕС СТРОКИ КОМАНДЫ TR_DOS
  4325.                 SBC HL,BC
  4326. LOC_298F        LD (TRD_5D11),HL        ; АДРЕС СТРОКИ КОМАНДЫ TR_DOS
  4327. LOC_2992        POP AF
  4328.                 POP BC
  4329.                 POP DE
  4330.                 POP HL
  4331.                 RET
  4332.  
  4333.                 DUPL 0X29B2-$,0XFF
  4334. TXT_ERROR_      DB 0X0D,"*ERROR*",0X8D
  4335. TXT_NOSPACE_    DB 0X0D,"No Space",0X8D
  4336. TXT_FILEEXISTS_ DB 0X0D,"File exists",0X8D
  4337. TXT_FREE_       DB " Free",0X8D
  4338. READ_ONLY       DB 0X0D
  4339.                 DC "Read Only"
  4340. TXT_DISCERROR_  DB 0X0D
  4341.                 DC "Disc Error"
  4342. TXT_R_O         DB 0X0D
  4343.                 DC "Rec.  O/F"
  4344. TXT_TITLE_      DC "Title: "
  4345. TXT_RIA_        DB 0X0D
  4346.                 DC "Retry,Abort,Ignore?"
  4347. TXT_TRK_        DB 0X0D
  4348.                 DC "Trk "
  4349. TXT_SEC_        DC " sec "
  4350. TXT_DELFILE_    DB " Del. File",0X8D
  4351. TXT_NOFILES_    DB 0X0D
  4352. TXT_NOFILES     DB "No File(s)",0X8D
  4353.  
  4354. ;============DELETED MAGIC & GOTO===============
  4355.                 DUPL 0X2A3B-$,0XFF
  4356.                 JP EMU_LDIR
  4357.  
  4358.                 DUPL 0X2A4E-$,0XFF
  4359.                 LD BC,0X7FFD
  4360.                 LD A,0X10
  4361.                 JP LOC_2A53_
  4362.  
  4363.                 DUPL 0X2D87-$,0XFF
  4364.                 IF EMU3D2F=1
  4365.                 RST 0X30
  4366.                 DB WIN1F
  4367.                 ELSE
  4368.                 IN A,(0X1F)
  4369.                 ENDIF
  4370.                 AND 0X7F
  4371.                 RET Z
  4372.                 DEC D
  4373.                 PUSH HL
  4374.                 PUSH DE
  4375.                 HALT
  4376.  
  4377.                 DUPL 0X2F0A-$,0XFF
  4378.                 OR 0X3C
  4379. LOC_2F0C        IF EMUWRFF
  4380.                 RST 0X30                ;RST 0X30
  4381.                 DB WOUTFF
  4382.                 ELSE
  4383.                 OUT (0XFF),A
  4384.                 ENDIF
  4385.                 RET
  4386.  
  4387.                 DUPL 0X2F17-$,0XFF
  4388.                 AND 0X6F                ;LORD OF CHAOS
  4389.                 JR LOC_2F0C
  4390.  
  4391. LOC_2F1B        LD A,E                  ;EXOLON
  4392.                 INC A
  4393.                 IF EMU3D2F=1
  4394.                 OUT (0X6F),A
  4395.                 ELSE
  4396.                 OUT (0X5F),A
  4397.                 ENDIF
  4398.                 PUSH HL
  4399.                 LD D,0X14
  4400.                 PUSH DE
  4401. LOC_2F23        DI
  4402.                 LD C,0X7F
  4403.                 LD A,0X80
  4404.                 IF EMU3D2F=1
  4405.                 RST 0X30
  4406.                 DB WOUT1F
  4407.                 ELSE
  4408.                 OUT (0X1F),A
  4409.                 ENDIF
  4410.                 CALL RD_DATAPORT
  4411.                 POP DE
  4412.                 POP HL
  4413.                 IF EMU3D2F=1
  4414.                 RST 0X30
  4415.                 DB WIN1F
  4416.                 ELSE
  4417.                 IN A,(0X1F)
  4418.                 ENDIF
  4419.                 AND 0X7F
  4420.                 RET Z
  4421.                 DEC D
  4422.                 PUSH HL
  4423.                 PUSH DE
  4424.                 JR NZ,LOC_2F23
  4425.                 HALT
  4426.  
  4427.                 DUPL 0X2F4D-$,0XFF
  4428.                 IF EMUWRFF
  4429.                 RST 0X30                ;RST 0X30
  4430.                 DB WOUTFF
  4431.                 ELSE
  4432.                 OUT (0XFF),A
  4433.                 ENDIF
  4434.                 LD A,C
  4435.                 IF EMU3D2F=1
  4436.                 OUT (0X8F),A
  4437.                 ELSE
  4438.                 OUT (0X7F),A
  4439.                 ENDIF
  4440.                 DUPL 3,0                ;CALL PAUSE725779TAKTS
  4441.                 LD A,0X18               ;0X1B
  4442. LOC_2F57        IF EMU3D2F=1
  4443.                 RST 0X30
  4444.                 DB WOUT1F
  4445.                 ELSE
  4446.                 OUT (0X1F),A
  4447.                 ENDIF
  4448. LOC_2F59        IF EMU3D2F=1
  4449.                 RST 0X30
  4450.                 DB WINFF
  4451.                 ELSE
  4452.                 IN A,(0XFF)
  4453.                 ENDIF
  4454.                 AND 0X80
  4455.                 JR Z,LOC_2F59
  4456.                 RET
  4457.  
  4458.                 DUPL 0X2F65-$,0XFF
  4459.                 LD A,0X08;0X0B          ;SOLDIER OF THE FUTURE
  4460.                 JR LOC_2F57
  4461. ;============DELETED MAGIC & GOTO===============
  4462.  
  4463.                 DUPL 0X2F6F-$,0XFF
  4464. CALL2BASIC      LD (TRD_5D02),HL
  4465.                 LD (TRD_5D04),DE
  4466.                 POP HL
  4467.                 LD E,(HL)
  4468.                 INC HL
  4469.                 LD D,(HL)
  4470.                 INC HL
  4471.                 PUSH HL
  4472.                 LD HL,LOC_3D2F
  4473.                 PUSH HL
  4474.                 PUSH DE
  4475.                 LD HL,TRD_5CC2
  4476.                 PUSH HL
  4477.                 LD HL,(TRD_5D02)
  4478.                 LD DE,(TRD_5D04)
  4479.                 RET
  4480.  
  4481. SET_VARS        LD HL,0X0808
  4482.                 LD (TRD_5CFA),HL        ; ВРЕМЯ ПЕРЕМЕЩЕНИЯ ДИСКОВОДА A
  4483.                 LD (TRD_5CFC),HL        ; ВРЕМЯ ПЕРЕМЕЩЕНИЯ ДИСКОВОДА C
  4484.                 LD HL,0X8383
  4485.                 LD (TRD_5CC8),HL        ; РЕЖИМ РАБОТА ДИСКОВОДА A
  4486.                 LD (TRD_5CCA),HL        ; РЕЖИМ РАБОТА ДИСКОВОДА C
  4487.                 XOR A
  4488.                 LD (TRD_5D17),A         ; РИСОВАНИЕ ЗАСТАВКИ, ЕСЛИ #AA
  4489.                 LD (TRD_5D18),A
  4490.                 LD (TRD_5D0F),A         ; НОМЕР ОШИБКИ TR-DOS
  4491.                 LD (TRD_5D1F),A
  4492.                 CALL SET_DRIVENAME
  4493.                 LD (TRD_5D16),A         ; КОПИЯ СИСТЕМНОГО РЕГИСТРА (ПОРТ #FF)
  4494.                 IF EMUWRFF
  4495.                 RST 0X30
  4496.                 DB WOUTFF
  4497.                 ELSE
  4498.                 OUT (0XFF),A
  4499.                 ENDIF
  4500.                 LD A,0XFF
  4501.                 LD (ERR_NR),A
  4502.                 LD (TRD_5D0C),A
  4503.                 LD A,0XC9
  4504.                 LD (TRD_5CC2),A
  4505.                 LD A,0XD0
  4506.                 IF EMU3D2F=1
  4507.                 RST 0X30
  4508.                 DB WOUT1F
  4509.                 ELSE
  4510.                 OUT (0X1F),A    ;FIX
  4511.                 ENDIF
  4512.                 RET
  4513.  
  4514. CP_END_CAT      CALL CP_END_BUF
  4515.                 LD A,(HL)
  4516.                 OR A
  4517.                 JP Z,END_OUT_DIR
  4518.                 CP 1
  4519.                 CALL Z,ADD_10
  4520.                 RET NZ
  4521.                 JR CP_END_CAT
  4522.  
  4523. LOAD_SEC2BUF    LD B,1
  4524.                 LD HL,TRD_5D25
  4525.                 JP LOC_1E67
  4526.  
  4527. LOAD_END_FILE   PUSH HL
  4528.                 LD DE,(TRD_5CF4)
  4529.                 CALL LOAD_SEC2BUF
  4530.                 LD A,(TRD_5CDB)
  4531.                 POP DE
  4532.                 OR A
  4533.                 RET Z
  4534.                 LD C,A
  4535.                 LD HL,TRD_5D25
  4536.                 JP EMU_LDIR
  4537.  
  4538. SAE2E_LINE      LD HL,(E_LINE)          ; АДРЕС НАЧАЛА РЕДАКТИРУЕМОЙ СТРОКИ
  4539.                 LD (TRD_5D11),HL        ; АДРЕС СТРОКИ КОМАНДЫ TR_DOS
  4540.                 LD (TRD_5CD9),HL        ; ПРОМЕЖУТОЧНАЯ ДЛИНА ДЛЯ <B> И <C>
  4541.                 LD A,0XFF
  4542.                 LD (TRD_5CD6),A         ; #FF-КОМАНДА ПРИНЯТА СИНТАКСИЧЕСКИМ АНАЛИЗАТОРОМ
  4543.                 LD HL,TRD_5CDB
  4544.                 LD (TRD_5CD7),HL        ; ПРОМЕЖУТОЧНЫЙ СТАРТ ФАЙЛА ИЛИ КОЛ-ВО ТРЕКОВ
  4545.                                         ; ПОСЛЕ ПРОВЕРКИ ТИПА ДИСКОВОДА
  4546.                 JR LOC_3057
  4547.  
  4548. SAE2_HL_        LD (TRD_5D11),HL        ; АДРЕС СТРОКИ КОМАНДЫ TR_DOS
  4549.                 LD (TRD_5CD9),HL        ; ПРОМЕЖУТОЧНАЯ ДЛИНА ДЛЯ <B> И <C>
  4550.                 CALL CP_ADR_STR
  4551.                 RET NZ
  4552.                 INC HL
  4553.                 INC HL
  4554.                 LD (TRD_5CD7),HL        ; ПРОМЕЖУТОЧНЫЙ СТАРТ ФАЙЛА ИЛИ КОЛ-ВО ТРЕКОВ
  4555.                                         ; ПОСЛЕ ПРОВЕРКИ ТИПА ДИСКОВОДА
  4556. LOC_3057        CALL CMP_SPECSYM        ;CALL FIND_KEYWORD
  4557.                 JR NZ,LOC_3087
  4558.                 EX DE,HL
  4559.                 INC DE
  4560.                 LD B,0
  4561.                 LD HL,BYTES_COM
  4562.                 ADD HL,BC
  4563.                 LD A,(HL)
  4564.                 LD HL,(TRD_5CD9)        ; ПРОМЕЖУТОЧНАЯ ДЛИНА ДЛЯ <B> И <C>
  4565.                 LD (HL),A
  4566.                 INC HL
  4567.                 EX DE,HL
  4568.                 RST 0X20
  4569.                 DW 0X19DD
  4570.                 PUSH BC
  4571.                 RST 0X20
  4572.                 DW 0X19E8
  4573.                 RST 0X20
  4574.                 DW 0X16B0
  4575.                 POP BC
  4576.                 LD A,(TRD_5CD6)         ; #FF-КОМАНДА ПРИНЯТА СИНТАКСИЧЕСКИМ АНАЛИЗАТОРОМ
  4577.                 OR A
  4578.                 JR NZ,LOC_3087
  4579.                 LD HL,(TRD_5CD7)        ; ПРОМЕЖУТОЧНЫЙ СТАРТ ФАЙЛА ИЛИ КОЛ-ВО ТРЕКОВ
  4580.                                         ; ПОСЛЕ ПРОВЕРКИ ТИПА ДИСКОВОДА
  4581.                 LD E,(HL)
  4582.                 INC HL
  4583.                 LD D,(HL)
  4584.                 EX DE,HL
  4585.                 OR A
  4586.                 SBC HL,BC
  4587.                 EX DE,HL
  4588.                 LD (HL),D
  4589.                 DEC HL
  4590.                 LD (HL),E
  4591. LOC_3087        LD HL,(TRD_5CD9)        ; ПРОМЕЖУТОЧНАЯ ДЛИНА ДЛЯ <B> И <C>
  4592.                 LD A,(HL)
  4593.                 CP 0X0D
  4594.                 RET Z
  4595.                 INC HL
  4596.                 LD (TRD_5CD9),HL        ; ПРОМЕЖУТОЧНАЯ ДЛИНА ДЛЯ <B> И <C>
  4597.                 LD A,(HL)
  4598.                 CP 0X0D
  4599.                 RET Z
  4600.                 CP 0X22
  4601.                 JR NZ, LOC_3057
  4602. LOC_309A        INC HL
  4603.                 LD A,(HL)
  4604.                 CP 0X0D
  4605.                 RET Z
  4606.                 CP 0X22
  4607.                 JR NZ,LOC_309A
  4608.                 INC HL
  4609.                 LD (TRD_5CD9),HL        ; ПРОМЕЖУТОЧНАЯ ДЛИНА ДЛЯ <B> И <C>
  4610.                 JR LOC_3057
  4611.  
  4612. FIND_KEYWORD    LD HL,(TRD_5CD9)        ; ПРОМЕЖУТОЧНАЯ ДЛИНА ДЛЯ <B> И <C>
  4613.                 LD DE,TBL_KEYWORD       ; "SAVE"
  4614.                 LD C,0
  4615. LOC_30B1        LD A,(HL)
  4616.                 AND 0XDF
  4617.                 LD B,A
  4618.                 OR A
  4619.                 JR NZ,LOC_30BB
  4620.                 INC HL
  4621.                 JR LOC_30B1
  4622.  
  4623. LOC_30BB        LD A,(DE)
  4624.                 AND 0X80
  4625.                 JR NZ,LOC_30C8
  4626.                 LD A,(DE)
  4627.                 CP B
  4628.                 JR NZ,LOC_30D9
  4629.                 INC HL
  4630.                 INC DE
  4631.                 JR LOC_30B1
  4632.  
  4633. LOC_30C8        LD A,(DE)
  4634.                 AND 0X7F
  4635.                 CP B
  4636.                 RET Z
  4637. LOC_30CD        INC C
  4638.                 LD HL,(TRD_5CD9)        ; ПРОМЕЖУТОЧНАЯ ДЛИНА ДЛЯ <B> И <C>
  4639.                 INC DE
  4640.                 LD A,(DE)
  4641.                 CP 0XFF
  4642.                 JR NZ,LOC_30B1
  4643.                 OR A
  4644.                 RET
  4645.  
  4646. LOC_30D9        INC DE
  4647.                 LD A,(DE)
  4648.                 AND 0X80
  4649.                 JR Z,LOC_30D9
  4650.                 JR LOC_30CD
  4651.  
  4652. CP_ADR_STR      LD HL,(PPC)
  4653.                 INC HL
  4654.                 INC HL
  4655.                 LD A,H
  4656.                 OR L
  4657.                 JR Z,LOC_30F4
  4658.                 XOR A
  4659.                 LD (TRD_5CD6),A         ; #FF-КОМАНДА ПРИНЯТА СИНТАКСИЧЕСКИМ АНАЛИЗАТОРОМ
  4660.                 DEC HL
  4661.                 DEC HL
  4662.                 RST 0X20
  4663.                 DW 0X196E
  4664.                 RET
  4665.  
  4666. LOC_30F4        LD A,0XFF
  4667.                 LD (TRD_5CD6),A         ; #FF-КОМАНДА ПРИНЯТА СИНТАКСИЧЕСКИМ АНАЛИЗАТОРОМ
  4668.                 LD HL,(E_LINE)          ; АДРЕС НАЧАЛА РЕДАКТИРУЕМОЙ СТРОКИ
  4669.                 RET
  4670.  
  4671. ; ТАБЛИЦА БЕЙСИК КОМАНД ДЛЯ TR-DOS
  4672. CODE_BYTE_COM   DB 0XCF         ;CAT
  4673.                 DB "*"
  4674.                 DB 0XD0         ;FORMAT
  4675.                 DB 0XD1         ;MOVE
  4676.                 DB 0XE6         ;NEW
  4677.                 DB 0XD2         ;ERASE
  4678.                 DB 0XEF         ;LOAD
  4679.                 DB 0XF8         ;SAVE
  4680.                 DB 0XFE         ;RETURN
  4681.                 DB 0XBE         ;PEEK
  4682.                 DB 0XF4         ;POKE
  4683.                 DB 0XD5         ;MERGE
  4684.                 DB 0XF7         ;RUN
  4685.                 DB 0XD3         ;OPEN
  4686.                 DB 0XD4         ;CLOSE
  4687.                 DB 0XFF         ;COPY
  4688.                 DB 0XF0         ;LIST
  4689.                 DB 0XD6         ;VERIFY
  4690.                 DB "."
  4691. ECODE_BYTE_COM
  4692.  
  4693. ; ТАБЛИЦА АДРЕСОВ ИСПОЛНЕНИЯ КОМАНД
  4694. SPIS_ADR_COM    DW CAT
  4695.                 DW COM_STAR
  4696.                 DW FORMAT
  4697.                 DW MOVE
  4698.                 DW NEW                  ; ВЫПОЛНЕНИЕ КОМАНДЫ NEW
  4699.                 DW ERASE                ; ВЫПОЛНЕНИЕ КОМАНДЫ ERASE
  4700.                 DW LOAD
  4701.                 DW SAVE
  4702.                 DW RETURN
  4703.                 DW PEEK
  4704.                 DW POKE
  4705.                 DW MERGE
  4706.                 DW RUN
  4707.                 DW OPEN
  4708.                 DW CLOSE
  4709.                 DW COPY
  4710.                 DW LIST
  4711.                 DW VERIFY
  4712.                 DW COM_DOT
  4713.  
  4714. ;ТАБЛИЦА КЛЮЧЕВЫХ СЛОВ
  4715. TBL_KEYWORD     DB "SAVE",0X80
  4716.                 DC "SAVE"
  4717.                 DB "LOAD",0X80
  4718.                 DC "LOAD"
  4719.                 DB "RUN",0X80
  4720.                 DC "RUN"
  4721.                 DB "CAT",0X80
  4722.                 DC "CAT"
  4723.                 DB "ERASE",0X80
  4724.                 DC "ERASE"
  4725.                 DB "NEW",0X80
  4726.                 DC "NEW"
  4727.                 DB "MOVE",0X80
  4728.                 DC "MOVE"
  4729.                 DB "MERGE",0X80
  4730.                 DC "MERGE"
  4731.                 DB "PEEK",0X80
  4732.                 DC "PEEK"
  4733.                 DB "POKE",0X80
  4734.                 DC "POKE"
  4735.                 DB "OPEN",0X83
  4736.                 DB "CLOSE",0X83
  4737.                 DB "CODE",0X80
  4738.                 DC "CODE"
  4739.                 DB "RND",0X80
  4740.                 DC "RND"
  4741.                 DB "DATA",0X80
  4742.                 DC "DATA"
  4743.                 DB "SCREEN",4,0X84
  4744.                 DB "SCREEN",0X84
  4745.                 DB "COPY",0X80
  4746.                 DC "COPY"
  4747.                 DB "FORMAT",0X80
  4748.                 DC "FORMAT"
  4749.                 DB "LIST",0X80
  4750.                 DC "LIST"
  4751.                 DB "LINE",0X80
  4752.                 DC "LINE"
  4753.                 DB "VERIFY",0X80
  4754.                 DC "VERIFY"
  4755.                 DB 0XFF,0XFF
  4756.  
  4757. ;БАЙТОВЫЕ КОДЫ КЛЮЧЕВЫХ СЛОВ
  4758. BYTES_COM       DW 0XF8F8       ;SAVE
  4759.                 DW 0XEFEF       ;LOAD
  4760.                 DW 0XF7F7       ;RUN
  4761.                 DW 0XCFCF       ;CAT
  4762.                 DW 0XD2D2       ;ERASE
  4763.                 DW 0XE6E6       ;NEW
  4764.                 DW 0XD1D1       ;MOVE
  4765.                 DW 0XD5D5       ;MERGE
  4766.                 DW 0XBEBE       ;PEEK
  4767.                 DW 0XF4F4       ;POKE
  4768.                 DW 0XD4D3       ;OPEN CLOSE
  4769.                 DW 0XAFAF       ;CODE
  4770.                 DW 0XA5A5       ;RND
  4771.                 DW 0XE4E4       ;DATA
  4772.                 DW 0XAAAA       ;SCREEN
  4773.                 DW 0XFFFF       ;COPY
  4774.                 DW 0XD0D0       ;FORMAT
  4775.                 DW 0XF0F0       ;LIST
  4776.                 DW 0XCACA       ;LINE
  4777.                 DW 0XD6D6       ;VERIFY
  4778.                 DB 0
  4779.  
  4780. ;===============FREE SPACE 2============
  4781.                 include extend.a80
  4782.                 include raznoe.a80
  4783. ;===============FREE SPACE 2============
  4784.  
  4785.                 DUPL 0X3BFF-$,0XFF
  4786.                 DW 0X0038                       ;ЗАГЛУШКА ПРЕРЫВАНИЙ НА ВРЕМЯ РАБОТЫ DOS
  4787.  
  4788.                 JR LOC_3C06
  4789.  
  4790.                 DB 0XFF
  4791.                 JR LOC_3C09
  4792.  
  4793. LOC_3C06        JP LOC_3D00
  4794.  
  4795. LOC_3C09        JP LOC_3D03
  4796.  
  4797. ;===============FREE SPACE 3============
  4798.                 DUPL 0X3C30-$,0XFF
  4799.                 IN A,(0X1F)
  4800.                 RET
  4801.  
  4802.                 include int_vars.a80
  4803.  
  4804.                 DUPL ADR_RST8END-$,0XFF
  4805.                 JP EDOS2RST8
  4806. ;===============FREE SPACE 3============
  4807.  
  4808.                 DUPL 0X3CFA-$,0XFF
  4809. LOC_3CFA        NOP
  4810.                 JR LOC_3D2F
  4811.  
  4812. LOC_3CFD        JP CALL_3D13
  4813.  
  4814. ;ВХОД В DOS (15616)
  4815. LOC_3D00        NOP
  4816.                 JR IN_DOS_15616
  4817.  
  4818. ;ОБРАЩЕНИЕ ИЗ БЕЙСИКА (15619)
  4819. LOC_3D03        NOP
  4820.                 JR IN_DOS_15619
  4821.  
  4822. LOC_3D06        NOP
  4823.                 JP INPUTDATAFILE
  4824.  
  4825. LOC_3D0A        JP OUT_SYM2FILE
  4826.  
  4827.                 NOP
  4828. LOC_3D0E        JR LOC_3D0A
  4829.  
  4830.                 NOP
  4831.                 JR LOC_3CFA
  4832.  
  4833.                 NOP
  4834.                 JR LOC_3CFD
  4835.  
  4836. LOC_3D16        NOP
  4837.                 JP WORK4ERROR
  4838.  
  4839. IN_DOS_15619    CALL CREATE_VARS_TRD
  4840.                 PUSH HL
  4841.                 JP CONTINUE_15619
  4842.  
  4843. CREATE_VARS_TRD JP CP_VARSTRDOS
  4844.  
  4845.                 DUPL 0X3D2B-$,0XFF
  4846. WR_BYTE_RET     OUT (C),A
  4847.                 NOP
  4848.                 NOP
  4849. LOC_3D2F        NOP
  4850.                 RET
  4851.  
  4852. IN_DOS_15616    CALL CREATE_VARS_TRD
  4853.                 PUSH HL
  4854.                 JP IN_COMMAND_CPU       ; ВХОЖДЕНИЕ В КОМАНДНЫЙ ПРОЦЕССОР ДОСА
  4855.  
  4856.                 DUPL 0X3D3B-$,0XFF
  4857. WRPORT_RET      OUTI
  4858.                 NOP
  4859.                 NOP
  4860.                 RET            
  4861.  
  4862.                 DUPL 0X3D46-$,0XFF
  4863.                 LD A,1
  4864.                 RET
  4865.  
  4866.                 DUPL 0X3D5A-$,0XFF
  4867.                 LDIR                            ;ADS
  4868.                 LD HL,0X3D2F
  4869.                 PUSH HL
  4870.                 PUSH HL
  4871.                 JP MEMBOT
  4872.  
  4873.                 DUPL 0X3D67-$,0XFF
  4874. CREATE_VARS     CALL CMP_RAMDISK
  4875.                 LD HL,SET_VARS
  4876.                 PUSH HL
  4877.                 LD HL,LOC_3D2F
  4878.                 PUSH HL
  4879.                 LD HL,0X1655
  4880.                 PUSH HL
  4881.                 LD HL,TRD_5CC2
  4882.                 PUSH HL
  4883.                 LD (HL),0XC9
  4884.                 LD HL,P_RAMT+1
  4885.                 LD BC,0X70
  4886.                 RET
  4887.  
  4888.                 DUPL 0X3D98-$,0XFF
  4889. ;ВОССТАНОВЛЕНИЕ ВГ93
  4890. COM_00          LD A,0X08               ;0X0B
  4891. COM2VG_WAIT     IF EMU3D2F=1
  4892.                 RST 0X30
  4893.                 DB WOUT1F
  4894.                 ELSE
  4895.                 OUT (0X1F),A
  4896.                 ENDIF
  4897. LOC_3D9C        PUSH HL
  4898.                 RST 0X20
  4899.                 DW 0X1F54
  4900.                 JR C,LOC_3DA5
  4901.                 RST 0X20
  4902.                 DW 0X1B7B
  4903. LOC_3DA5        POP HL
  4904.                 IF EMU3D2F=1
  4905.                 RST 0X30
  4906.                 DB WINFF
  4907.                 ELSE
  4908.                 IN A,(0XFF)
  4909.                 ENDIF
  4910.                 AND 0X80
  4911.                 JR Z,LOC_3D9C
  4912.                 RET
  4913.  
  4914. CP_PRESENT_DSK  LD A,0X08               ;0X0B
  4915.                 CALL COM2VG_WAIT
  4916.                 LD DE,0
  4917.                 IF EMU3D2F=1
  4918.                 RST 0X30
  4919.                 DB WIN1F
  4920.                 ELSE
  4921.                 IN A,(0X1F)
  4922.                 ENDIF
  4923.                 AND 2
  4924.                 LD B,A
  4925. LOC_3DBA        IF EMU3D2F=1
  4926.                 RST 0X30
  4927.                 DB WIN1F
  4928.                 ELSE
  4929.                 IN A,(0X1F)
  4930.                 ENDIF
  4931.                 AND 2
  4932.                 CP B
  4933.                 IF EMU3D2F=1
  4934.                 RET
  4935.                 ELSE
  4936.                 RET NZ
  4937.                 ENDIF
  4938.                 INC DE
  4939.                 LD A,E
  4940.                 OR D
  4941.                 JR NZ,LOC_3DBA
  4942.                 JP LOC_3EE7
  4943.  
  4944. ;ВЫБОР ДИСКОВОДА ПО УМОЛЧАНИЮ
  4945. ACTIV_DEF_DSK   LD A,(TRD_5D19)         ; ДИСКОВОД ПО УМОЛЧАНИЮ
  4946. ;НАСТРОЙКА НА ДИСКОВОД
  4947. COM_01          LD (TRD_5CF6),A         ; НАСТРОЙКА НА ДИСКОВОД
  4948.                 LD HL,TRD_5D16          ; КОПИЯ СИСТЕМНОГО РЕГИСТРА (ПОРТ #FF)
  4949.                 OR 0X3C
  4950.                 LD (HL),A
  4951.                 IF EMUWRFF
  4952.                 RST 0X30
  4953.                 DB WOUTFF
  4954.                 ELSE
  4955.                 OUT (0XFF),A
  4956.                 ENDIF
  4957.                 LD B,0
  4958.                 IF EMU3D2F
  4959.                 IN A,(0X4F)
  4960.                 ELSE
  4961.                 IN A,(0X3F)
  4962.                 ENDIF
  4963.                 IF EMU3D2F=1
  4964.                 OUT (0X8F),A
  4965.                 ELSE
  4966.                 OUT (0X7F),A
  4967.                 ENDIF
  4968.                 LD A,%00011000                  ;БЕЗ ПРОВЕРКИ НОМЕРА ДОРОЖКИ
  4969.                 IF EMU3D2F=1
  4970.                 RST 0X30
  4971.                 DB WOUT1F
  4972.                 ELSE
  4973.                 OUT (0X1F),A
  4974.                 ENDIF
  4975.                 DJNZ $                          ;ПАУЗА
  4976. COM_011         IF EMU3D2F=1
  4977.                 RST 0X30
  4978.                 DB WIN1F
  4979.                 ELSE
  4980.                 IN A,(0X1F)
  4981.                 ENDIF
  4982.                 AND 0X80
  4983.                 JP NZ,LOC_3EE7
  4984. LOC_3DFA        JP WR_NUM_TRACK
  4985.  
  4986.                 DUPL 0X3DFD-$,0XFF
  4987. PAUSE725779TAKTS
  4988.                 LD A,0X50
  4989. PAUSE_C_A       LD C,0XFF
  4990. LOC_3E01        DEC C
  4991.                 JR NZ,LOC_3E01
  4992.                 DEC A
  4993.                 JR NZ,PAUSE_C_A
  4994.                 RET
  4995.  
  4996. ; ПОЛУЧЕНИЕ ВРЕМЕНИ ПЕРЕМЕЩЕНИЯ ГОЛОВКИ
  4997. GET_TIME_HEAD   PUSH DE
  4998.                 LD DE,TRD_5CFA          ; ВРЕМЯ ПЕРЕМЕЩЕНИЯ ДИСКОВОДА A
  4999. LOC_3E0B        LD HL,(TRD_5CF6)        ; ДИСКОВОД ДЛЯ ВРЕМЕННОЙ ОПЕРАЦИИ
  5000.                 ADD HL,DE
  5001.                 POP DE
  5002.                 LD A,(HL)
  5003.                 RET
  5004.  
  5005. GET_TYPE_DISK   PUSH DE
  5006.                 LD DE,TRD_5CC8          ; РЕЖИМ РАБОТА ДИСКОВОДА A
  5007.                 JR LOC_3E0B
  5008.  
  5009.                 DUPL 0X3E3A-$,0XFF
  5010.                 IN A,(0X1F)
  5011.                 AND 4
  5012.                 RET NZ
  5013. LOC_3E3F        INC B
  5014.                 DEC C
  5015.                 RET
  5016.  
  5017.                 DUPL 0X3E44-$,0XFF
  5018. HEAD_POSITION   IF EMU3D2F=1
  5019.                 OUT (0X8F),A
  5020.                 ELSE
  5021.                 OUT (0X7F),A
  5022.                 ENDIF
  5023. FIND_TREK       LD A,0X18
  5024.                 JP COM2VG_WAIT
  5025.  
  5026.                 DUPL 0X3E4C-$,0XFF
  5027. POSITIONIREN    IF EMU3D2F=1
  5028.                 OUT (0X8F),A
  5029.                 ELSE
  5030.                 OUT (0X7F),A
  5031.                 ENDIF
  5032.                 PUSH BC
  5033.                 LD B,A
  5034.                 IF EMU3D2F
  5035.                 IN A,(0X4F)
  5036.                 ELSE
  5037.                 IN A,(0X3F)
  5038.                 ENDIF
  5039.                 CP B
  5040.                 POP BC
  5041.                 PUSH AF
  5042.                 CALL FIND_TREK          ;COM2VG_WAIT
  5043.                 POP AF
  5044.                 RET
  5045.  
  5046.                 DUPL 0X3E63-$,0XFF
  5047. ;УСТАНОВКА ГОЛОВКИ НА ДОРОЖКУ
  5048. COM_02          LD C,A
  5049.                 CALL COM_16
  5050.                 CALL GET_TYPE_DISK
  5051.                 AND 2
  5052.                 CALL NZ,SET_SIDE_DSK
  5053.                 PUSH BC
  5054.                 BIT 7,(HL)
  5055.                 JR Z,LOC_3E83
  5056.                 BIT 0,(HL)
  5057.                 JR NZ,LOC_3E83
  5058.                 IF EMU3D2F=1
  5059.                 IN A,(0X4F)
  5060.                 ELSE
  5061.                 IN A,(0X3F)
  5062.                 ENDIF
  5063.                 CP C
  5064.                 JR Z,LOC_3E82
  5065.                 RLCA
  5066.                 IF EMU3D2F=1
  5067.                 OUT (0X4F),A
  5068.                 ELSE
  5069.                 OUT (0X3F),A
  5070.                 ENDIF
  5071.                 LD A,C
  5072.                 RLCA
  5073. LOC_3E82        LD C,A
  5074. LOC_3E83        CALL GET_TIME_HEAD      ; ПОЛУЧЕНИЕ ВРЕМЕНИ ПЕРЕМЕЩЕНИЯ ГОЛОВКИ
  5075.                 LD B,A
  5076.                 LD A,C
  5077.                 CALL POSITIONIREN
  5078.                 POP BC
  5079.                 LD A,C
  5080.                 IF EMU3D2F=1
  5081.                 OUT (0X4F),A
  5082.                 ELSE
  5083.                 OUT (0X3F),A
  5084.                 ENDIF
  5085.                 LD A,(TRD_5CCD)         ; #80-ГОТОВНОСТЬ ДИСКОВОДА
  5086.                 OR A
  5087.                 RET Z
  5088.                 XOR A
  5089.                 LD (TRD_5CCD),A         ; #80-ГОТОВНОСТЬ ДИСКОВОДА
  5090.                 RET
  5091.  
  5092.                 DUPL 0X3EA0-$,0XFF
  5093. PAUSE_3_C_A     LD B,3
  5094. LOC_3EA2        LD A,0XFF
  5095.                 CALL PAUSE_C_A
  5096.                 DJNZ LOC_3EA2
  5097.                 RET
  5098.  
  5099. SET_SIDE_DSK    LD A,C
  5100.                 OR A
  5101.                 RRA
  5102.                 LD C,A
  5103.                 RET NC
  5104.                 JP COM_17
  5105.  
  5106. GET_NUM_TRACK   CALL COM_16
  5107. LOC_3EB5        IF EMU3D2F=1
  5108.                 RST 0X30
  5109.                 DB WIN1F
  5110.                 ELSE
  5111.                 IN A,(0X1F)
  5112.                 ENDIF
  5113.                 AND 0X80
  5114.                 LD (TRD_5CCD),A         ; #80-ГОТОВНОСТЬ ДИСКОВОДА
  5115.                 IF EMU3D2F=1
  5116.                 IN A,(0X4F)
  5117.                 ELSE
  5118.                 IN A,(0X3F)
  5119.                 ENDIF
  5120.                 LD H,A
  5121.                 CALL BUGFIX_3EBF        ;HEAD_POSITION
  5122.                 LD C,0X7F
  5123.                 LD D,1
  5124.                 DI
  5125.                 LD A,0XC0
  5126.                 IF EMU3D2F=1
  5127.                 RST 0X30
  5128.                 DB WOUT1F
  5129.                 ELSE
  5130.                 OUT (0X1F),A
  5131.                 ENDIF
  5132.                 PUSH BC
  5133.                 LD B,3
  5134. LOC_3ECE        IF EMU3D2F=1
  5135.                 RST 0X30
  5136.                 DB WINFF
  5137.                 ELSE
  5138.                 IN A,(0XFF)
  5139.                 ENDIF
  5140.                 AND 0XC0
  5141.                 JR NZ,LOC_3EF2
  5142.                 INC DE
  5143.                 LD A,E
  5144.                 OR D
  5145.                 JR NZ,LOC_3ECE
  5146.                 DJNZ LOC_3ECE
  5147.                 POP BC
  5148.                 EI
  5149.                 LD A,0XD0
  5150.                 IF EMU3D2F=1
  5151.                 RST 0X30
  5152.                 DB WOUT1F
  5153.                 ELSE
  5154.                 OUT (0X1F),A
  5155.                 ENDIF
  5156.                 LD A,(TRD_5D17)         ;(TRD_5CD1)
  5157.                 CP 0XFF
  5158.                 RET Z
  5159. LOC_3EE7        CALL SET_TAPELDERR
  5160.                 LD A,0XFF
  5161.                 LD (TRD_5D17),A         ; РИСОВАНИЕ ЗАСТАВКИ, ЕСЛИ #AA
  5162.                 JP LOC_271B
  5163.  
  5164. LOC_3EF2        POP BC
  5165.                 IF EMU3D2F=1
  5166.                 RST 0X30
  5167.                 DB WINHC
  5168.                 ELSE
  5169.                 IN H,(C)
  5170.                 ENDIF
  5171. LOC_3EF5        IF EMU3D2F=1
  5172.                 RST 0X30
  5173.                 DB WINFF
  5174.                 ELSE
  5175.                 IN A,(0XFF)
  5176.                 ENDIF
  5177.                 AND 0XC0
  5178.                 JR Z,LOC_3EF5
  5179.                 EI
  5180.                 RET M
  5181.                 DI
  5182.                 IN A,(0X7F)
  5183.                 JR LOC_3EF5
  5184.  
  5185. ;УСТАНОВКА НОМЕРА СЕКТОРА
  5186. COM_03          LD (TRD_5CFF),A
  5187.                 RET
  5188.  
  5189. ;УСТАНОВКА АДРЕСА БУФЕРА
  5190. COM_04          LD (TRD_5D00),HL
  5191.                 RET
  5192.  
  5193. SAVE_SECTOR     LD A,0XA0
  5194.                 JR LOC_3F10
  5195.  
  5196. LOAD_SECTOR     LD A,0X80
  5197. LOC_3F10        LD (TRD_5CFE),A
  5198. LOC_3F13        LD D,0X0A
  5199. LOC_3F15        PUSH DE
  5200.                 DI
  5201.                 LD A,(TRD_5CFF)
  5202.                 INC A
  5203.                 IF EMU3D2F=1
  5204.                 OUT (0X6F),A
  5205.                 ELSE
  5206.                 OUT (0X5F),A
  5207.                 ENDIF
  5208.                 LD HL,(TRD_5D00)
  5209.                 LD C,0X7F
  5210.                 LD A,(TRD_5CFE)
  5211.                 IF EMU3D2F=1
  5212.                 RST 0X30
  5213.                 DB WOUT1F
  5214.                 ELSE
  5215.                 OUT (0X1F),A
  5216.                 ENDIF
  5217.                 CP 0XA0
  5218.                 PUSH AF
  5219.                 CALL Z,WRITE_SEC
  5220.                 POP AF
  5221.                 CALL NZ,READ_SEC
  5222.                 POP DE
  5223.                 EI
  5224.                 IF EMU3D2F=1
  5225.                 RST 0X30
  5226.                 DB WIN1F
  5227.                 ELSE
  5228.                 IN A,(0X1F)
  5229.                 ENDIF
  5230.                 LD B,A
  5231.                 AND 0X7F
  5232.                 RET Z
  5233. LOC_3F39        LD HL,READ_ONLY         ; READ ONLY
  5234.                 AND 0X40
  5235.                 JR NZ,LOC_3F4B
  5236.                 LD A,B
  5237.                 AND 4
  5238.                 JR Z,LOC_3FA0
  5239.                 DEC D
  5240.                 JR NZ,LOC_3F15
  5241. LOC_3F48        LD HL,TXT_DISCERROR_    ; DISC ERROR
  5242. LOC_3F4B        LD A,0XD0
  5243.                 IF EMU3D2F=1
  5244.                 RST 0X30
  5245.                 DB WOUT1F
  5246.                 ELSE
  5247.                 OUT (0X1F),A
  5248.                 ENDIF
  5249.                 LD A,B
  5250.                 AND 1
  5251.                 JP NZ,LOC_3EE7
  5252.                 IF EMU3D2F=1
  5253.                 IN A,(0X4F)
  5254.                 ELSE
  5255.                 IN A,(0X3F)
  5256.                 ENDIF
  5257.                 OR A
  5258.                 JR NZ,LOC_3F5F
  5259.                 IF EMU3D2F=1
  5260.                 IN A,(0X6F)
  5261.                 ELSE
  5262.                 IN A,(0X5F)
  5263.                 ENDIF
  5264.                 CP 0X0A
  5265.                 RET Z
  5266. LOC_3F5F        PUSH HL
  5267.                 CALL CLEAR_SCREEN       ; ОЧИСТКА ОСНОВНОГО ЭКРАНА
  5268.                 POP HL
  5269.                 RST 0X18
  5270.                 LD HL,TXT_TRK_          ; TRACK
  5271.                 RST 0X18
  5272.                 IF EMU3D2F=1
  5273.                 IN A,(0X4F)
  5274.                 ELSE
  5275.                 IN A,(0X3F)
  5276.                 ENDIF
  5277.                 CALL PRINT_CHISLO_A_
  5278.                 LD HL,TXT_SEC_          ; SECTOR
  5279.                 RST 0X18
  5280.                 IF EMU3D2F=1
  5281.                 IN A,(0X6F)
  5282.                 ELSE
  5283.                 IN A,(0X5F)
  5284.                 ENDIF
  5285.                 CALL PRINT_CHISLO_A_
  5286.                 LD HL,TXT_RIA_
  5287.                 RST 0X18
  5288. LOC_3F7B        CALL GET_KEYS           ; ОЖИДАНИЕ НАЖАТИЯ КЛАВИШИ
  5289.                 CP "I"                  ; IGNORE-RET В АДРЕС #1E8E
  5290.                 RET Z
  5291.                 CP "R"                  ; RETRY
  5292.                 JR Z,PRESS_RETRY
  5293.                 CP "A"                  ; ABORT
  5294.                 JR NZ,LOC_3F7B
  5295.                 CALL SET_TAPELDERR      ; PRESS ABORT
  5296.                 LD A,7
  5297.                 LD (TRD_5D0F),A         ; НОМЕР ОШИБКИ TR-DOS
  5298.                 JP END_COMAND
  5299.  
  5300. PRESS_RETRY     LD A,(TRD_5CF5)
  5301.                 CALL COM_02
  5302.                 CALL PAUSE_3_C_A
  5303.                 JP LOC_3F13
  5304.  
  5305. LOC_3FA0        DEC D
  5306.                 JP Z,LOC_3F48           ; DISC ERROR
  5307.                 PUSH DE
  5308.                 CALL GET_TIME_HEAD      ; ПОЛУЧЕНИЕ ВРЕМЕНИ ПЕРЕМЕЩЕНИЯ ГОЛОВКИ
  5309.                 AND 2
  5310.                 JR NZ,LOC_3FAD
  5311.                 INC (HL)
  5312. LOC_3FAD        CALL COM_00
  5313.                 LD A,(TRD_5CF5)
  5314.                 CALL COM_02
  5315.                 POP DE
  5316.                 JP LOC_3F15
  5317.  
  5318. WRITE_SEC       LD B,4
  5319. LOC_3FBC        IF EMU3D2F=1
  5320.                 RST 0X30
  5321.                 DB WWRITE_SEC_          ;WINFF
  5322.                 ELSE
  5323.                 IN A,(0XFF)
  5324.                 ENDIF
  5325.                 AND 0XC0
  5326.                 JR NZ,LOC_3FD1
  5327.                 INC DE
  5328.                 LD A,E
  5329.                 OR D
  5330.                 JR NZ,LOC_3FBC
  5331.                 DJNZ LOC_3FBC
  5332.                 RET
  5333.  
  5334. WR_DATAPORT     IF EMU3D2F=1
  5335.                 RST 0X30
  5336.                 DB WWRITE_SEC_          ;WINFF
  5337.                 ELSE
  5338.                 IN A,(0XFF)
  5339.                 ENDIF
  5340.                 AND 0XC0
  5341.                 JR Z,WR_DATAPORT
  5342.                 RET M
  5343. LOC_3FD1        IF EMU3D2F=1
  5344.                 RST 0X30
  5345.                 DB WWRITE_SEC_          ;WOUTI
  5346.                 ELSE
  5347.                 OUTI
  5348.                 ENDIF
  5349.                 JR WR_DATAPORT
  5350.  
  5351. READ_SEC        LD B,4
  5352. LOC_3FD7        IF EMU3D2F=1
  5353.                 RST 0X30
  5354.                 DB WREAD_SEC_           ;WINFF
  5355.                 ELSE
  5356.                 IN A,(0XFF)
  5357.                 ENDIF
  5358.                 AND 0XC0
  5359.                 JR NZ,LOC_3FEC
  5360.                 INC DE
  5361.                 LD A,E
  5362.                 OR D
  5363.                 JR NZ,LOC_3FD7
  5364.                 DJNZ LOC_3FD7
  5365.                 RET
  5366.  
  5367. RD_DATAPORT     IF EMU3D2F=1
  5368.                 RST 0X30
  5369.                 DB WREAD_SEC_           ;WINFF
  5370.                 ELSE
  5371.                 IN A,(0XFF)
  5372.                 ENDIF
  5373.                 AND 0XC0
  5374.                 JR Z,RD_DATAPORT
  5375.                 RET M
  5376. LOC_3FEC        IF EMU3D2F=1
  5377.                 RST 0X30
  5378.                 DB WINI_RET
  5379.                 ELSE
  5380.                 INI
  5381.                 ENDIF
  5382.                 JR RD_DATAPORT
  5383.  
  5384.                 OUT (C),A
  5385. FOR_RET         RET
  5386.  
  5387.                 IN A,(C)
  5388.                 RET
  5389.  
  5390.                 DUPL 0X3FF8-$,0XFF
  5391.                 DB "EVODOS"
  5392.                 DW DATA_VERS
  5393.