Справочник по системным программам для компьютера ZX Spectrum 128к 1969 г.

Описание 17 - информация о TRDOS.


18. ИНФОРМАЦИЯ О TRDOS

1. TRDOS занимает 112 байтов памяти с произвольным доступом.

2. Без подсоединенной TRDOS RAM пользователя начинается с :

а) адрес 23755 без подсоединенного интерфейса 1,

б) адрес 23812 с подсоединенным интерфейсом 1

При подсоединенной TRDOS RAM пользователя начинается с :

а) адрес 23867 без подсоединенного интерфейса 1,

б) адрес 23925 с подсоединенным интерфейсом 1.

Чтобы записать/загрузить/прогнать программу, которая использует байты между 23759 и,
доступ 23925, нужно следовать процедуре, описанной в разделе 12 2 (волшебная кнопка)

3. TRDOS использует сектора диска для хранения (см. раздел 1.2), если количество байтов
превышает 256, используется другой сектор. Это продолжается до тех пор, пока не
происходит запись всего файла Для записи 522 байтов потребуется 3 сектора Третий
сектор содержит только 10 байтов. Только эти 10 байтов будут загружены с диска Оставшиеся
пустые 246 байтов не загружаются, чтобы не затереть другие данные, которые могут находится
с памяти SOS.

4. В дополнении к 112 байтам RAM TRDOS также используется буфер в 256 байтов, при
осуществлении доступа к диску. Этот буфер имеет динамическое распределение. При
выполнении большого количества команд TRDOS сначала сдвигает программу BASIC (если

таковая существует) вверх с целью создания буфера. После завершения команды программа
BASIC передвигается назад ксвоей исходной позиции. Этаоперация происходит незаметно.

5. Команда MOVE требует 4К минимум из SPECTRUM RAM в качестве рабочего пространства.
Если MOVE выполняется, а программа еще в памяти, необходимо перевести компьютер в
исходное состояние и затем выполнить MOVE. Перевод компьютера в исходное состояние
может быть осуществлено с помощью возврата к SOS и ввода RANDOMIZE USR 0 или с
помощью положения "Сброс" на системном переключателе.

6. На одном диске может храниться до 128 файлов.

Распайка интерфейса дисковода.

Соединитель дисковода (см.диаграмму 1) спроектирован так, чтобы он был совместим с
SHUGART, а штырьковые соединения перечислены ниже:

OV-1

2

-

OV-3

4

-

OV-5

6

- выбор дисковода D

OV-7

8

- Индекс

OV-9

10

- Выбор дисковода А

OV-11

12

- Выбор дисковода В

OV-13

14

- Выбор дисковода С

OV-15

16

- Загрузка головки (LOAD HEAD) (MOTOR ON)

OV-17

18

- Направление

OV-19

20

-Шаг

OV-21

22

- Запись данных

OV-23

24

- С возможностью записи

OV-25

26

- TRACK ZERO (нулевая дорожка)

OV-27

28

- Защита записи

OV-29

30

- Считывание данных

OV-31

32

- Сторона 1

OV-33

34

Распределение штырьков соединителя, если смотреть на дисковый интерфейс справа
(см. диаграмму), выглядит следующим образом:

24....................34

13....................33

ПРИЛОЖЕНИЕ 1. СЛУЖЕБНЫЕ ПРОГРАММЫ

С TRDOS употребляются три служебные программы:

TAPECOPY передача программы, основанной на кассете

MAGIC переименование, копирование и стирание

"семейства" файлов, записанных с помощью волшебной кнопки

DOCTOR дисковый доктор

Для прогона этих программ вставьте диск со служебными программами в дисковод с
умолчанием и введите:

RUN"BOOT"

BASIC программа "BOOT" представит на экране меню и предложит Вам выбрать одну из
обсуживающих программ. Вы можете также непосредственно вызвать служебную программу,
напечатав следующее:

RUN'TAPECOPY" или
RUN"MAGIC" или
RUN'DOCTOR"

Когда меню появилось на экране, устраните диск с обслуживающими программами.

TAPECOPY (копирование на ленте)

Служебная программаТАРЕСОРУ-относительно несложный копировщик, непредназна-
ченный для управления коммерческими программами с их усложенными мерами защиты.
Идеальным случаем является передача Ваших программ и файлов на кассету.

Она будет копировать файлы BASIC, CODE, ARRAY, DATA при условии, что длина файла
не более 40.000 байтов (для SPECTRUM PLUS). Когда программа загружена, на дисплее
появится следующее:

ТАРЕ ТО DISK COPIER VER 50
TECHNOLOGY RESEARCH LTD
DATA TYPE: (тип данных)

FILENAME: (название файла)

CODE LENSTH: (длина кода)

START LINE: (стартовая строка)

BASIC LENCTH: (основная длина)

PRESS (BREAK) TO STOP (нажмите клавишу BREAK для остановки)
START TAPE (старт ленты)

Когда надпись появилась на дисплее, устраните служебный диск. Эта программа запишет
файлы, основанные на кассете, в то же самый дисковод

Когда Вы заменили диск тем диском, который при ни мает скопированные файлы, все, что
необходимо, -это запустить ленту с кассеты, подсоединенной как обычно Теперь процедура
протекает автоматически Дисплей даст Вам указание об остановке ленты В то же время
файл копируется на диск под таким же названием, под каким он хранился на ленте. По
завершении операции Вы будете извещены, что следует запустить ленту для копирования
следующего файла. Если файл имеет то же название, что и файл, хранящийся на ленте,
то по нему будет сделана перезап ись. В процессе копирования Вы можете видеть следующие
сообщения:

START ТАРЕ - для начала загрузки нажмите клавишу PLAY на кассете

STOP ТАРЕ: -остановите устройство записи на кассете, когда программа скоп и руется
на диск.

ТАРЕ LOAD ERRER:- при неисправностях в процессе загрузки поступает сообщение SOS,

сделайте перемотку и намните сначала.

NOT ENOUGH MEMORY:- длина программы превышает 40.000 байтов. Чтобы скопировать
ее, запишите подробности заголовка с дисплея. Потом нажмите BREAK, чтобы вернуться к
SPECTRUM SOS. Очистите машину с помощью команды RANDOMIZE USR 0 и загрузите
программу как обычно. Используйте подробности заголовка с целью записи на диск обычным
образом (раздел 10.1).

MAGIC (волшебная кнопка)

Когда волшебная кнопка используется для распечатки программы SPECTRUM 128,
записывается "Семейство" файлов (до 7). Работать с этими файлами по одному очень
долго Эта служебная программа, управляемая с помощью меню, дает Вам возможность
переименовывать , стирать или копировать эти файлы (система с одним дисководом или
система с двумя дисководами)

Эта служебная программа тоже управляется с помощью меню. DISK DOCTOR дает Вам
возможность считывать, проверять и модифицировать любой сектор на диске. Вы можете
установить дисковод (А, В, С или Д), сектор (от 0 до 15) и дорожку (от 0 до 159). После этой
установки сектор можно считать и записать в буфер размер сектора - 256 байтов. Содержание
буфера может быть выведено на дисплей и отредактировано. Программа запрашивает
стартовый адрес, диапазон которого - от 0 до 255 в десятичном исчислении. Когда содержание
выводится на дисплей, Вы можете приостановить этот процесс, нажав клавишу ENTER.
При желании буфер можно записать обратно на диск.

Команда "Замена диска" информирует систему, что Вы заменили диск в дисководе. Вы
можете также "проверить" диск

СИСТЕМНЫЕ ПЕРЕМЕННЫЕ TRDOS

СИСТЕМНЫЕ ПЕРЕМЕННЫЕ TRDOS

подпрограммы trdos

подпрограммы trdos

Символом NXN отмечены внутренние переменные TRDOS, которые не рекомендуется изменять
в процессе работы.

ВНУТРЕННИЕ РЕГИСТРЫ BETADISK

ВНУТРЕННИЕ РЕГИСТРЫ BETADISK

ВНУТРЕННИЕ КОМАНДЫ

#00 ВОССТАНОВЛЕНИЕ (сброс контроллера). Ожидание появления сигнала INTRQ.
Выходит из ожидания нажатием BREAK

#01 ВЫБОР ДИСКОВОДА. Номер выбираемого дисковода указывается в регистре А.
При значении #FF по адресу 23802+НОМЕР ВЫБИРАЕМОГО ДИСКОВОДА (см. системные
переменные) происходит инициализация дисковода (определяется количество дорожек
дисковода, константа позиционирования и заносится в соответствующие системные
переменные). В ячейку 23798 заносится номер выбранного дисковода. Во избежание
ошибочных ситуаций рекомендуется его дублировать в ячейках 23800 и 23801

#02 ПОЗИЦИОНИРОВАНИЕ. Головка устанавливается на трек, указанный регистром А.
В случае двустороннего дисковода номерам 0 и 1 соответствует первый физический трек (О
и 1 сторона соответственно). Номерам 2 и 3 - второй и т.д.

#03 Помещает содержимое регистра А по адресу 23807 (номер сектора)

#04 Помещает содержимое регистровой пары HL по адресу 23808 (адрес буфера)

#05 ЧТЕНИЕ ГРУППЫ СЕКТОРОВ. Перед вызовом подпрограммы в регистр В
помещается количество читаемых подряд секторов (при значении 0 с диска считывается
только область заголовка, считывание в память не происходит). В регистр D помещается
номер трека , а в регистр Е - номер сектора. Регистр HL должен содержать адрес буфера в
памяти, в которой будет производиться чтение.

#06 ЗАПИСЬ ГРУППЫ СЕКТОРОВ. Параметры аналогичны #05.

#07 ВЫВОД КАТАЛОГА ДИСКА. В регистре А должен быть указан номер канала (для
вывода на экран А должен содержать значение 2, на принтер - 3 и т.п.) Выполнение
подпрограммы аналогично выполнению команды TRDOS "CAT". Перед выводом каталога
выполняется команда #18.

#08 ЧТЕНИЕ ИНФОРМАЦИИ О ФАЙЛЕ. В аккумуляторе должен быть номер интересую-
щего файла (0-127). Из каталога диска 16 байт информации будут помещены с адреса 23773
(проверки на наличие данного файла не происходит). В номера файлов входят и удаленные.

#09 ЗАПИСЬ В КАТАЛОГ ИНФОРМАЦИИ О ФАЙЛЕ. С адреса 2377316 байт переписыва-
ются в каталог диска на место информации о файле, номер которого задается в регистре А.

#0А ПОИСК ФАЙЛА. Поиск файла в директории ведется по имени и типу (с адреса
23773). Количество байт, по которым ведется поиск, задано по адресу 23814, начальное
значение #09. Если файл найден, то по возвращении из программы, регистр С будет
указывать его порядковый номер (то же по адресам 23828, 23823). В противном случае,
старший бит регистра устанавливается в 1. (23828 не изменяется, 23823 будет содержать

#0В ЗАПИСЬ ФАЙЛА. С адреса 23773 - имя и тип файла; в регистровой паре HL - адрес
начала в памяти; в nape DE - длина файла.

#0С ЗАПИСЬ В ASIC-ПРОГРАММЫ. С адреса 23773 - имя и тип файла (при типе,
отличном от "В", файл записывается под именем "BOOT").

#0D НЕТ КОМАНДЫ

#0Е ЧТЕНИЕ/ПРОВЕРКА ФАЙЛА. Имя и тип файла должны быть помещены с адреса
23773. Адрес загрузки файла берется из директории (при аккумуляторе равном #00) или
регистровой пары DE (при аккумуляторе равном #03). Значение по адресу 23801: #00 •
LOAD,#FF - VERIFY.

#0F НЕТ КОМАНДЫ

#10 НЕТ КОМАНДЫ

#11 НЕТ КОМАНДЫ

#12 УДАЛЕНИЕ ФАЙЛОВ. Имя и тип файла • с адреса 23773. Удаляются все файлы с
такими данными.

#13 Переписываются 16 байт информации из памяти, адресуемой регистровой паре
HL по адресу 23773

#14 Переписываются 16 байт информации из 23773 в память по адресу 23773

#15 ПРОВЕРКА ДОРОЖКИ. Регистр D должен содержать номер проверяемого
физического трека.

#16 ЗАГРУЗКА СИСТЕМНОГО РЕГИСТРА. Код - в аккумуляторе. Предварительно к
нему прибавляется #ЗС.

#17 ВЫБРАТЬ НИЖНЮЮ СТОРОНУ.

#18 НАСТРОЙКА НА ДИСК. Проверяется тип диска (8-й сектор директории)

Из машинного кода программы работы с примитивами и файлами вызываются по адресу
15635 (#3D13). Код функции помещается в регистре (описание команд приведено выше).
Параметры передаются через область системных переменных TRDOS.

ФОРМАТ КАТАЛОГА ДИСКА

Каталог занимает на диске нулевую дорожку. Сектора с 0 по 7 используются для хранения
информации о файлах (по 16 байт на файл):

Если первый байт заголовка содержит значение #01, то файл считается удаленным. По

значению #00 определяется конец каталога

S-й сектор 0-й дорожки содержит информацию о диске в целом.

СОДЕРЖАНИЕ 8-го СЕКТОРА

17. воот-моа service

Поле слева предназначено для вывода интересующих Вас файлов Текущим считается
файл, который отмечен курсором (линия повышенной яркости) Курсор перемещается

клавишами [Up] (CS+7) и [Down] (CS+6).

Справа вверху выводится информация о диске. Сразу под ней находится окно,
предназначенное для информационных сообщений, подсказки и сообщений об ошибке.
Третье окно справа показывает параметры текущего файла. Внизу находится поле, в
котором работает строчный текстовый редактор. Это окно предназначено для ввода команд
TR-DOS (командное окно).

В любой момент можно отменить непонравившуюся команду, нажав [Edit] (CS+1)

В центре появится картинка*

Disk drive of А

Нажмите [Enter], если хотите перечитать каталог устройства "А:" или на [Edit] (CS+1), если
решили отменить операцию.

1. ЗАПУСК ПРОГРАММЫ

Если командное окно чисто, то необходимо сделать интересующий Вас файл текущим и
нажать [Enter]. Командное окно очищается при нажатии [SS+U]. Файлы типа <В> или
сброшенные по MAGIC начнут загружаться сразу же. Загрузка и выполнение файлов типа
<С> аналогична команде TR-DOS:

RUN "name" CODE address

Имеется возможность изменить адрес загрузки, отредактировав его в появившемся окне.

Start-up of line

name С

Address 30000

2. СТРОЧНЫЙ РЕДАКТОР

В строчном редакторе (командное окно) используются следующие клавиши:

CS+8 - курсор вправо,

CS+5 • курсор влево;

CS+0 - удаление символа;

SS+U • очистка командного окна;

CS+2 - фиксация строчных символов;

SS+I - вывод на экран (трех) ранее выполненных команд TR-DOS.

3. ВЫЗОВ КОМАНД TR-DOS

Вы можете выполнить любую команду TR-DOS, для этого ее нужно набрать в командном
окне. Выполнение команды начинается с момента нажатия [Enter]

4. ВЫДЕЛЕНИЕ ФАЙЛОВ

Для групповых операций над файлами их нужно выделить, достигается это нажатием на
клавишу [Graf] (CS+9). При этом строка, содержащая информацию о файле, изменит цвет.
Отменить выделение можно повторным нажатием [Graf].

Снять выделение со всех файлов можно, дважды нажав на клавишу [Edit]

5. ВЫЗОВ КАТАЛОГА

- Для вызова каталога нажмите на клавиатуре оператор "CATN*
(CS+SS, SS+9).

Возврат в программу - нажатие любой клавиши.

6. ВЫБОР МЕНЮ КОМАНД

Для перехода в меню команд групповых операций над файлами нажмите клавишу [True
Video] (CS+3). Вы увидите:

Insert command

Quit

Insert

Delete
Rename

Copy

Hex Dump
Filtr

One Del file
♦ Del file
Exit

Клавишами [lip] (CS+7) и [Down] (CS+6) выберите интересующий Вас пункт и нажмите
[Enter].

Функция "Quit" позволит Вам выйти из командного меню, не отменяя выделенных файлов.

Функция "Insert" отыщет и выделит в каталоге указанные Вами файлы по маске В
появившемся окне отредактируйте маску, по которой будет произведен поиск. Символ "?"
в маске означает любой символ ASCII в имени файла.

Функция "Delete" удалит из каталога выделенные Вами файлы

Функция "Rename" позволит переименовать файлы, а функция "Сору" скопировать их.

Функция "Hex Dump" выведет запрошенный файл в шестнадцатиричном виде.

Функция "Filtr" позволит Вам работать только с теми файлами, которые соответствуют
выбранному фильтру. Задайте имя фильтра так же, как и для "Insert" В поле каталога будут
выведены файлы, для которых имя и тип совпадают с фильтром Помните, что фильтр
действует на все последующие операции с любыми дисками и дисководами. Функция "One
Del file" приведет к выводу каталога в обычном виде.

Функция "+ Del file" включит в каталог удаленные файлы, которые можно восстановить
переименованием.

Функция "Exit" производит выход из МОА Service d BASIC.

7. ПЕРЕИМЕНОВАНИЕ ФАЙЛОВ

Перед использованием функции "Rename" выделите группу файлов, которые желаете
переименовать. Если все выделенные файлы имеют одинаковые имена, например,
сброшенные no MAGIC ("@"), то удобно в новом имени файла использовать символ"%". При
этом в новые имена выделенных файлов на место символа"%" будет подставлен символ
ASCII, монотонно увеличивающийся от файла к файлу, начиная со значения "О". Кроме того,
как и для функции "Insert", можно использовать символ"?" для указания на любой символ
ASCII в данном месте имени файла (кроме его типа). В случае переименования удаленного
файла, находящегося за границей каталога, программа предупредит Вас о возможной
ошибке следующим сообщением:

Invalid catalog
Continue ?

[ENTER] - No/Yes

Каталог будет переписан только при нажатии на клавишу [Y].

8. КОПИРОВАНИЕ ФАЙЛОВ

Этой командой можно скопировать один или несколько файлов на одном или на разных
дисководах. Для копирования выделите нужные Вам файлы и выберите функцию "Сору".
В появившемся окне отредактируйте имя дисковода, куда Вы собираетесь копировать.
Закончите редактирование клавишей [Enter]. Сразу же после этого будет произведена
проверка на дублирование файлов и размер свободной области на выходном диске. При
ответе [N] файл будет удален из операции копирования, любой другой ответ перезапишет
файл. При превышении размера выходного диска будет выдано соответствующее
сообщение, после которого копирование будет продолжено, пока хватит места. Если Вы
выбрали для копирования то же устройство, что и исходное, то программа попросит Вас
несколько раз сменить диски, если же устройства выбраны разные, то все произойдет без
Вашего участия. Помните, что 'OUTPUT disk' это выходной диск, т е тот, на который Вы
собрались копировать, a 'INPUT disk' входной диск, с которого Вы копируете. Программа МОА
- Service может проверять, какой диск Вы вставили для записи и прекратить операцию, если
Вы ошиблись. К сожалению, эта проверка отнимает много времени и портит магнитное
покрытие дорогих дисков, лишний раз считывая контрольный сектор, потому возможность
проверки будет вставлена в Ваш вариант программы по Вашему желанию. Прервать

операцию копирования можно, нажав клавишу [Edit] (CS+1). После этого следует
определиться: вносить имена уже скопированных файлов в каталог выходного диска или
нет. Если Вы не запишите каталог, то это будет означать, что ни один файл не записался
на выходной диск. При чтении файла с диска его параметры выводятся на экран, так что Вы
всегда знаете текущий копируемый файл. Если Вы прервали копирование или оно
закончилось неудачей, именно этот файл окажется пограничным, т.е. скопировны будут все
файлы до него. К сожалению, из-за недостатка TR-DOS, при ошибке диска ни один файл
не будет скопирован. Чтобы не попадать в такое положение, используйте сначала
копирование в "нулевое" устройство с именем "0:".

9. ПРОСМОТР ФАЙЛОВ

Выберите в командном меню функцию "Hex Dump". Затем, если Вы хотите посмотреть
каталог, то нажмите на клавишу [С], любой другой ответ вызовет для просмотра файл, на
который указывает курсор. При выводе указывается логический номер трека и сектора,
считая от начала диска, таким образом можно узнать действительное местоположение
файла на диске Каждая выводимая на экран строка вначале содержит номер сектора и
отделенный от него точкой относительный адрес первого выводимого в строке байта. Далее
следует восемь шестнадцатиричных значений, а за ними те же восемь значений, только в
коде ASCII.

10. ВЫХОД ИЗ ПРОГРАММЫ

Для выхода можно воспользоваться функцией командного меню "Exit", но проще набрать
на клавиатуре оператор "STOP", нажав (SS+A).

Возврат в программу возможен командой BASIC'a:

RANDOMIZE USR 57000.

18. DISK DOCTOR V4.3

1. СПРАВОЧНИК

Экранный редактор программы DISK DOCTOR позволяет редактировать содержимое
диска вводом шестнадцатиричных или символьных значений в зависимости от поля, в
котором находится курсор.

Передвижения курсора осуществляются курсорными клавишами, либо Kempston joystik'OM.
Клавиша EDIT позволяет выйти из программы в TR-DOS. По возврату из операционной
системы управление будет передано программе DISK DOCTOR.

Переход в командный режим осуществляется клавишей EXTEND MODE либо клавишей
GRAPHICS MODE, после нажатия которых курсор становится красным Отказ от командного
режима производится теми же клавишами, что и переход в него.

Клавиши TRUE VIDEO и INVERSE VIDEO соответственно сбрасывают или устанавливают
старший бит по указателю. Работают только в том случае, если курсор находится на
символьном поле в режиме ASCII-радактора.

Командный режим позволяет выполнить следующие операции (вызов производится
нажатием соответствующей клавиши в командном режиме):

А - ASCII EDITOR переход в экранный ASCII-редактор

EDIT возврат в основной режим;

S.S ♦ Q страница назад;

S.S ♦ Е страница вперед;

В - PAGE BACKWARD возврат назад на одну страницу.

F - PAGE FORWARD вылистывание следующей страницы.

Н - HELP PAGE вывод на экран списка возможных команд.

I - INFORMATION вывод на экран информации о диске, положении

курсора и файле, на котором находится курсор

N - FIND NEXT STRING поиск следующей последовательности байтов,

заданной командой FIND (см.)

О - OPEN FILE открыть файл. Курсор устанавливается на первый

байт заданного файла. На подсказку сначала
вводится название файла, затем первая
буква спецификации (BASIC, CODE и т.п.).
Если файл с таким имененм не найден,
будет выдано соответствующее сообщение.

Р - PUT SECTOR запись текущего сектора на диск

R - RELOAD TRACK перезагрузка текущего буфера (дорожки). Может

использоваться при смене диска или
внесении ошибочных изменений

S - SAVE CHANGES запись на диск произведенных изменений.

Т - SELECT выбор сектора для редактирования. На подсказку

TRACK-SECTOR сначала вводится номер дорожки,затем номер

сектора Если вместо номера дорожки введена
пустая строка, выбирается текущая дорожка.

X - FIND STRING поиск на дискете последовательности байтов.

На подсказку вводятся интервал (номера дорожек,
с которой и до которой будет производиться поиск),
затем последовательность байтов, которая может
включаться как шестнадцатиричные значения, так
и символьные строки в произвольном сочетании
Символьные строки необходимо заключать в
кавычки. В случае ввода пустой строки будет
производиться поиск заданной ранее строки.

Если в текущем буфере были произведены какие-либо изменения, то при выполнении
всех операций, связанных с перегрузкой буфера, автоматически будет выбираться режим
SAVE CHANGES.

В новой версии (4.3) DISK DOCTOR'a учтены и доработаны некоторые недостатки. В том
числе:

- добавлена возможность восстановления первой цифры ошибочно введенного
шестнадцатиричного числа (во всех режимах);

- разрешен ввод специальных символов ({,}, I и др.);

- при выводе из ASCII-редактора положение курсора не изменяется;

- введена дополнительная проверка формата записи на диске, что позволило
предохранить программу от возникновения ошибочных ситуаций;

- предоставлен выбор рабочего дисковода.




СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
V.I.P. - Интервью, взятое у Random'а каким-то PC-журналом
От авторов - Ответ редакции газеты на письмо BROM'a.
Pokes - Abu Simbel Profanation, Alien Highway, А-10 ТB, Beach Vollei, Bear George, Chase H.Q. 2, Continental Circus, Dizzy A, Dragon Ninja и т.д.
HOT GAMES - Лучшая десятка oт Magic Soft.
Sofтинка - Типы файлов, определённые в ОС ZXVGS.

В этот день...   21 ноября