Subversion Repositories pentevo

Rev

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

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