Subversion Repositories pentevo

Rev

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

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