Subversion Repositories pentevo

Rev

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

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