;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