RADIX 50 [1] [2] [3] или RAD50 [3] (также называемая RADIX50 , [4] RADIX-50 [5] или RAD-50 ) — это кодировка символов , состоящая только из заглавных букв, созданная корпорацией Digital Equipment Corporation (DEC) для использования на компьютерах DECsystem , PDP и VAX .
40-символьный репертуар RADIX 50 (050 в восьмеричной системе ) может кодировать шесть символов плюс четыре дополнительных бита в одно 36-битное машинное слово ( PDP-6 , PDP-10 /DECsystem-10, DECSYSTEM-20 ), три символа плюс два дополнительных бита в одно 18-битное слово ( PDP-9 , [2] PDP-15 ), [6] или три символа в одно 16-битное слово ( PDP-11 , VAX). [3]
Фактическое кодирование различается в 36-битной и 16-битной системах.
В 36-битных системах DEC RADIX 50 обычно использовался в таблицах символов для ассемблеров или компиляторов, которые поддерживали шестисимвольные имена символов из 40-символьного алфавита. Это оставляло четыре бита для кодирования свойств символа.
Из-за сходства со схемой кодировки символов SQUOZE , используемой в операционной системе IBM SHARE для представления символов объектного кода, вариант DEC иногда также назывался DEC Squoze , [7] однако IBM SQUOZE упаковывал шесть символов из 50-символьного алфавита плюс два дополнительных бита флагов в одно 36-битное слово. [6]
RADIX 50 обычно не использовался в 36-битных системах для кодирования обычных строк символов; имена файлов обычно кодировались как шесть шестибитных символов, а полные строки ASCII — как пять семибитных символов и один неиспользуемый бит на 36-битное слово.
RADIX 50 (также называемый форматом Radix 50 8 [2] ) использовался в 18-битных компьютерах PDP-9 и PDP-15 компании Digital для хранения символов в таблицах символов, оставляя два дополнительных бита на 18-битное слово («биты классификации символов»). [2]
Некоторые строки в 16-битных системах DEC были закодированы как 8-битные байты, в то время как другие использовали RADIX 50 (тогда также называвшийся MOD40 ). [3] [8]
В RADIX 50 строки кодировались последовательными словами по мере необходимости, при этом первый символ в каждом слове располагался в наиболее значимой позиции.
Например, при использовании кодировки PDP-11 строка «ABCDEF» со значениями символов 1, 2, 3, 4, 5 и 6 будет закодирована как слово, содержащее значение 1×40 2 + 2×40 1 + 3×40 0 =1683 , за которым следует второе слово, содержащее значение 4×40 2 + 5×40 1 + 6×40 0 =6606. Таким образом, 16-битные слова кодировали значения в диапазоне от 0 (три пробела) до63 999 («999»). Когда в слове было меньше трех символов, последнее слово в строке дополнялось конечными пробелами. [3]
Существовало несколько незначительных вариаций этой кодировки с различными интерпретациями кодовых точек 27, 28, 29. Когда RADIX 50 использовался для имен файлов, хранящихся на носителе, кодовые точки представляют символы $
, %
, *
и будут показаны как таковые при листинге каталога с помощью таких утилит, как DIR. [9] При кодировании строк в ассемблере PDP-11 и других языках программирования PDP-11 кодовые точки представляют символы $
, .
, %
и кодируются как таковые с помощью макроса RAD50 по умолчанию в глобальном файле макросов, и эта кодировка использовалась в таблицах символов . Некоторая ранняя документация для операционной системы RT-11 считала кодовую точку 29 неопределенной. [3]
Использование RADIX 50 стало источником соглашений о размере имени файла, используемых операционными системами Digital Equipment Corporation PDP-11. При использовании кодировки RADIX 50 шесть символов имени файла могли храниться в двух 16-битных словах, в то время как еще три символа расширения (типа файла) могли храниться в третьем 16-битном слове. Аналогично, трехсимвольное имя устройства, такое как «DL1», также могло храниться в 16-битном слове. Точка, разделяющая имя файла и его расширение, и двоеточие, разделяющее имя устройства и имя файла, подразумевались (т. е. не хранились и всегда предполагались присутствующими).
[…] Программы систем
PDP-11
часто обрабатывают символы в специально закодированной форме, называемой RADIX 50 (эту форму иногда называют MOD40). Эта форма позволяет упаковать 3 символа в 16 бит; поэтому любой 6-символьный символ можно хранить в двух словах. Единственный операнд имеет форму /CCC/, где косая черта (разделитель) может быть любым печатным символом, за исключением = и : . Разделители заключают в себе преобразуемые символы, которые могут быть от A до Z, от 0 до 9, доллар ($), точка (.) и пробел ( ). Если символов меньше 3, они считаются выровненными по левому краю, и предполагаются конечные пробелы. […] Алгоритм упаковки следующий: […] A. Каждый символ преобразуется в свой эквивалент RADIX 50, как указано в следующей таблице: Символ - Эквивалент RADIX 50 (восьмеричный): (пробел) - 0, A–Z - 1–32, $ - 33, . - 34, 0–9 - 36–47. Обратите внимание, что для кода 35 может быть определен другой символ. […] B. Эквиваленты RADIX 50 для символов с 1 по 3 (C1,C2,C3) объединяются следующим образом: RESULT=((C1*50)+C2)*50+C3 […][1]