Subversion Repositories pentevo

Rev

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

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