;LAST UPDATE: 28.07.2019 savelij
 
 
 
                TITLE "patch.a80"
 
 
 
;смена диска для старой команды TR-DOS
 
SET_CURRDRV     LD B,A
 
                CALL SET_CURRVIRT
 
                LD A,(NUM_ALT_PAGE)
 
                CP ROM_ADD_BAS48 | 0X80
 
                LD A,B
 
                CALL NZ,COM_01                  ;настройка на диск только для реальной дискеты
 
                JP ERR_OK
 
 
 
;[0x18B7 УСТАНОВКА АДРЕСА ЗАПУСКА]
 
ADR_START_COM   LD (TRD_5CC6),HL
 
                LD DE,(TRD_5CEB)                ;ТРЕК И СЕКТОР МЕСТОПОЛОЖЕНИЯ ФАЙЛА
 
                RET
 
 
 
;[0x1CFE УДАЛЕНИЕ БУФЕРА]
 
DELETE_BUFFER   CALL DELETE_BUF
 
                JP CLRBUF_EDITOR
 
 
 
;[0x1D5E ЗАПУСКА ФАЙЛА]
 
RUN_FILE        JP Z,WORK4AUTORUN               ; ОБРАБОТКА СТРОКИ АВТОЗАПУСКА БЕЙСИКА
 
                CP "C"
 
                JP NZ,SINTAX_ERROR
 
RUNCODE         LD HL,RUN_CODE
 
                LD (TRD_5D1A),HL
 
                JP END_COMAND
 
 
 
;[0x36E8 ЗАПУСКАЛКА КОДОВОГО БЛОКА]
 
RUN_CODE        CALL RESTORE_SP
 
                LD BC,(TRD_5CC6)                ;АДРЕС ЗАГРУЗКИ ИЗ КОМАНДНОЙ СТРОКИLD BC,(TRD_5CD9)
 
                PUSH BC
 
                RET
 
 
 
;[0x214A ПЕЧАТЬ ИМЕНИ ПРИВОДА/РАЗДЕЛА]
 
;ЕСЛИ КОМАНДА РАСШИРЕННАЯ ТО ПЕЧАТЬ ИМЕНИ FAT УСТРОЙСТВА
 
;ИНАЧЕ ПЕЧАТЬ ИМЕНИ TR-DOS ДИСКОВОДА
 
        IF EMU
 
GET_COMMAND2    LD A,(TRD_5CEF)
 
                AND A
 
                CALL NZ,NOMER_DRV               ;ПЕЧАТЬ ИМЕНИ FAT УСТРОЙСТВА ЕСЛИ КОМАНДА НАЧИНАЕТСЯ С "."
 
                RET C                           ;ВЫХОД ЕСЛИ УЖЕ НАПЕЧАТАНА БУКВА FAT УСТРОЙСТВА
 
                LD A,(TRD_5D19)
 
                ADD A,"A"
 
                RST 0X10
 
                RET
 
        ENDIF
 
 
 
;[ПЕЧАТЬ ТЕКУЩЕГО ФОРМАТИРУЕМОГО ТРЕКА И СТОРОНЫ]
 
PRINT_NUM_TRK   PUSH DE
 
                PUSH AF
 
                PUSH DE
 
                LD A,0X16
 
                RST 0X10
 
                LD A,(0X5C6B)
 
                DEC A
 
                RST 0X10
 
                LD A,0
 
                RST 0X10
 
                LD HL,TXT_FORMAT_TRK
 
                RST 0X18
 
                POP DE
 
                LD C,E
 
                LD B,0
 
                CALL PRINT_CHISLO
 
                LD HL,TXT_FSIDE
 
                RST 0X18
 
                POP AF
 
                LD A,"0"
 
                ADC A,0
 
                RST 0X10
 
                POP DE
 
                RET
 
                
 
TXT_FORMAT_TRK  DC "FORMAT TRACK: "
 
TXT_FSIDE       DC "  SIDE: "
 
 
 
;[0x3057 ПРОВЕРКА НА "." ДЛЯ РАСШИРЕННОЙ КОМАНДЫ]
 
CMP_SPECSYM     LD HL,(TRD_5CD9)
 
                LD A,(HL)
 
                CP "."
 
                JP NZ,FIND_KEYWORD
 
                POP HL
 
                RET
 
 
 
;[0x0325 ENDCOMAND]
 
ENDCOMAND       LD A,D
 
                CP "."
 
                JP NZ,END_COMAND
 
                cp __RETURN
 
                call nz,CREATE_BUF              ; СОЗДАНИЕ БУФЕРА
 
                ld a,9
 
                ld (TRD_5D06),a                 ; КОЛИЧЕСТВО СИМВОЛОВ ИМЕНИ ФАЙЛА ПРИ ПОИСКЕ
 
                xor a
 
                ld (TRD_5D0F),a                 ; НОМЕР ОШИБКИ TR-DOS
 
                ld (TRD_5CD6),a                 ; #FF-КОМАНДА ПРИНЯТА СИНТАКСИЧЕСКИМ АНАЛИЗАТОРОМ
 
                ld (TRD_5D10),a                 ; СТАРШИЙ БАЙТ ОШИБКИ
 
                ld hl,FLAGS
 
                res 7,(hl)
 
                LD HL,COM_DOT
 
                JP LOC_353
 
 
 
;[0x3EBF BUGFIX_3EBF]
 
BUGFIX_3EBF     PUSH AF
 
                PUSH HL
 
                CALL GET_TIME_HEAD
 
                LD B,A
 
                POP HL
 
                POP AF
 
                JP HEAD_POSITION
 
 
 
;[0x211E ОЧИСТКА БУФЕРА ВЫПОЛНЕННОЙ КОМАНДЫ]
 
CLRBUF_EDITOR2  POP HL
 
                RES 7,(IY+1)
 
                RST 0X20
 
                DW 0X19FB
 
                XOR A
 
                LD (SUBPPC),A
 
                DEC A
 
                LD (ERR_NR),A
 
                LD HL,(E_LINE)
 
                LD (CH_ADD),HL
 
                RST 0X20
 
                DW 0X19FB
 
                RST 0X20
 
                DW 0X18
 
                RST 0X20
 
                DW 0X16B0
 
                RET
 
 
 
;[ПЕЧАТЬ НОМЕРА ФОРМАТИРУЕМОЙ ДОРОЖКИ И СТОРОНЫ]
 
loc_20D1        AND A
 
                CALL PRINT_NUM_TRK
 
                CALL FORMAT_TREK
 
                CALL COM_17
 
                SCF
 
                JP PRINT_NUM_TRK