LINUX.ORG.RU

Нашлась единственная уцелевшая копия ОС Unix v4

 , ,


2

3

В школе вычислительной техники при Университете Юты (США) нашли и восстановили магнитную ленту, на которой оказалась единственная из известных копий операционной системы Unix v4 — первой, чьё ядро, драйверы и основные утилиты были написаны на новомодном в те времена языке C.

Восстановленные данные заняли всего 40 Мбайт — они доступны для скачивания вместе с инструкцией по запуску ОС. Unix v4 работал на продвинутом по тем временам мини-компьютере DEC PDP-11, который эмулировали при помощи SimH. На момент выпуска система оставалась экспериментальным проектом.

>>> Анонс

>>> Исходные тексты

anonymous

Проверено: hobbit ()
Последнее исправление: CrX (всего исправлений: 3)
Ответ на: комментарий от DrRulez

я просто писал такой код, со вставками асма

mumpster ★★★★★
()
Ответ на: комментарий от alegz

так я же написал, что адрес верхний ОЗУ какой не помню уже на ДВК, надо отступить на 2 байта ниже первого для ввода-вывода и туда запилить эту команду. вы ваще поняли, что это за команда и в чём юмор? 8)

mumpster ★★★★★
()
Ответ на: комментарий от Camel

для LTO и тем более DLT или 9xxx от StorageTek - навряд ли )))))

mumpster ★★★★★
()

Интересно, на 1801ВМ*-based отечественном винтаже включая MK85 заведётся?

Stanson ★★★★★
()
Ответ на: комментарий от mumpster

Ну да, но синтаксически конструкция верная, за тем исключением, что int в конце концов переполнится :)

yars068 ★★★★★
()

они доступны для скачивания вместе с инструкцией по запуску ОС

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

bender ★★★★★
()
Ответ на: комментарий от Camel

На полдюймовые ленты DEC или тот же Memorex давали гарантию 50 лет при условиях соответствующего хранения. Насколько мне известно, архивы переписываются на носители, доступные на ближайший срок годности носителя. Как бы, магнитофон найти еще можно, а вот софта и компа, на котором его запустить, что бы служебные блоки правильно прочесть уже может и найтись к концу срока хранения носителя.

gns ★★★★★
()
Ответ на: комментарий от squareroot

А про return, его отсутствие уже в C99 это undefined behaviour в случае, если его читают:

GCC начиная с третьей версии стал лепить implicit return 0, если не сказано другого. Мы как-то переходили с 2.95-2 на 3.сколько-то и на это налетели. Могу рассказать подробности, если интересно.

gns ★★★★★
()
Ответ на: комментарий от sunjob
#include <stdio.h>
#include <limits.h>

void main(void) {
  printf("long bitness is %d\n", LONG_WIDTH);
  printf("int bitness is %d\n", INT_WIDTH);
  return;
}

Ты хотел сказать, 64-разрядная? Да. Но int 32-разрядный, соответственно, INT_MAX = 2³² - 1.

yars068 ★★★★★
()
Последнее исправление: yars068 (всего исправлений: 4)
Ответ на: комментарий от squareroot

Вполне себе стандартный C стиля K&R тех времён. Не только лишь все понимают, насколько был всрат Си, а то, что мы знаем — это намного более поздняя, сильно улучшенная и доработанная версия. Да-да, сильно улучшенная и доработанная, вы не ошиблись.

byko3y ★★★★
()
Ответ на: комментарий от byko3y

Не только лишь все понимают, насколько был всрат Си, а то, что мы знаем — это намного более поздняя, сильно улучшенная и доработанная версия.

Да ну, плюс немножко сахара, а так тот же язык. Хотя, сейчас меньше неявного, как здесь с типом и значением main() — и это плюс, соглашусь. А так, что тогда хороший макроассемблер, что сейчас. Разве что Forth ещё рядом был, но там специфика, и не взлетело. Точнее, взлетало, да ненадолго.

JaneDoe
()
Ответ на: комментарий от unclestephen

Авторское право на программы в США стало распространяться, то ли в 1975-м, то ли в 1977-м. А это ноябрь 1974.

Собственно, путаница с авторским правом потом привела ко всяким судебным тяжбам SCO, а также к появлению FreeBSD, из которого тщательно выкидывали куски неизвестно чьего кода.

Aceler ★★★★★
()
Ответ на: комментарий от yars068

то по умолчанию предполагается, что она возвращает int (но не void, как можно было бы ожидать).

Хоть формально это и так, но на самом деле мотивация тут другая. Функция с неуказанным типом просто ведёт себя «дефолтно». А это значит, что возвращаемое значение, если оно тебе нужно, будет в аккумуляторе. Ну а если оно тебе не нужно - значит и не важно где оно было и было ли вообще (т.е. void). Предполагается что вызывающий сам знает, возвращает ли эта функция что-то и не будет читать из неё возвращённое значение, если его там нет. Даже более того: ты спокойно можешь передавать из такой дефолтной функции (имеется ввиду что значение дойдёт до получателя в целости и сохранности) и unsigned int, а так же все виды char-ов, и short-ов, а если sizeof(int)==sizeof(void*) то ещё и указатели. Но формально, да, это реализовано через «считаем что int». С аргументами аналогичная история.

Это всё результат идеологии «Си это дополнительный синтаксис к ассемблеру». Только потом поняли, что язык высокого уровня всё-таки желательно должен более настойчиво проверять типы и отказываться от идеи оперирования сырыми ассемблерными данными.

firkax ★★★★★
()
Ответ на: комментарий от squareroot

А про return, его отсутствие уже в C99 это undefined behaviour в случае, если его читают:

Для main() исключение вроде, там return 0 дефолтно. Вероятно даже в с23 это прописано. Хотя я это осуждаю - вообще не надо для main никаких специальных правил придумывать.

firkax ★★★★★
()
Ответ на: комментарий от peregrine

Он не про i который в начале тела, а про argc,argv которые ДО тела - до открывающей фигурной скобки. Ну то есть про K&R синтаксис аргументов.

firkax ★★★★★
()
Ответ на: комментарий от alegz

На современных системах регистры ввода-вывода тоже много у каких компонент в общем адресном пространстве. И только благодаря ОС эта его часть спрятана от юзерспейса.

firkax ★★★★★
()
Ответ на: комментарий от Certified_UNIX_User

Я это и предположил изначально. Ну, значит, находка скоро там появится.

gns ★★★★★
()
Ответ на: комментарий от yars068

нет, я хотел сказать 4х-разрядная.
разговор шел об цикле:

for (int i = 0; i < 9; i++);
ваш коммент

int в конце концов переполнится

ну вот я и предположил, что данный цикл может переполниться если система будет 4х разрядная (ну ладно, 5х разрядная :о)

2^4 = 8
т.е максимальное значение=8 (для беззнаковой), а учитывая что счет идет с нуля, то вообще max=7
следовательно i переполниться при соотв. разрядности.
ну так... плюс/минус :о)

sunjob ★★★★★
()
Последнее исправление: sunjob (всего исправлений: 2)

Восстановленные данные заняли всего 40 Мбайт — они доступны для скачивания вместе с инструкцией по запуску ОС.

То что я скачал по ссылке никак не похоже на 40 Мбайт. unix_v4.tar занимает даже чуть меньше 2Мб. Недокачал или опечатка?

anonymous_incognito ★★★★★
()

У кого-нибудь получилось компилятор Си (в unix_v4/usr/c) скомпилировать под линукс? ;) У меня пока наскоком не вышло, даже с std=c89

anonymous_incognito ★★★★★
()
Ответ на: комментарий от yars068

Он не переполнится. Он просто выйдет из цикла не сделав ни одной итерации, ведь 0>9 - ложное утверждение.

firkax ★★★★★
()
Ответ на: комментарий от yars068

int (но не void, как можно было бы ожидать)

void в том си вообще не было.

Поэтому и был смысл, что в си всё - функции, без процедур. А потом появился такой оксюморон, как void-функции.

unsigned ★★★★
()
Ответ на: комментарий от JaneDoe

тот же язык

Принципиально другой. K&R - действительно макроассемблер, и писали на нем по-ассемблерному. ANSI C - язык высокого уровня, у которого в спеке прямо сказано «реализация имеет право делать не то, что вы написали в коде».

unsigned ★★★★
()
Ответ на: комментарий от byko3y

то, что мы знаем — это намного более поздняя, сильно улучшенная и доработанная версия

Где-то улучшенная, где-то подпорченная. Причем, так с каждым новым стандартом.

unsigned ★★★★
()
Ответ на: комментарий от hobbit

То что нашли это вообще летошний баян. Если новость про восстановление, то так и писать надо, а не хайповать что в заголовке, что в первом абзаце

cobold ★★★★★
()
Ответ на: комментарий от gns

Я такое только в Venix (который System III) видел. И да, там только так писать и можно.

Я в похожем стиле видел чужие исходники под Turbo C. Там в настройках было переключение между ANSI, K&R и ещё 2. C89 не упоминался :)

question4 ★★★★★
()

Восстановленные данные заняли всего 40 Мбайт

Для тех времен не жирновато?

MoldAndLimeHoney ★★
()
Ответ на: комментарий от Zhbert

В том треде, кстати, бухтели на «не было стандартов кто во что горазд»

Так-то кукаретики бухтели.

и ванговали

И прованговались.

slackwarrior ★★★★★
()
Ответ на: комментарий от Saakx

Какие уроки можно извлечь из этой истории?

Например, узнать, что говнокод был тогда в ранге стандарта.

tiinn ★★★★★
()
Ответ на: комментарий от squareroot

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

т.е preC И С(для своей лабы) более практичный подход при дифиците вычислительной мощи и отсутствии интелектуальных излишков ( которых щя влюбом ой-ти отделе полно)

т.е в B(би) же не было типов (всё есть слово в 16 бит) так что проще прикруть типы вставкой между Би-заголовком и началом тела

а вот для локальных и глобальных проще оказалось начинать строку значимым токеном-типом_именем_его

крч Си и Би это реальные крутой программный хак Томсона и Ричи ну и Джонсона затем

может поэтому и взлетел что хаки Юникса соноправленны своему языку - примечательно что вначале как такового не было командного языка (шелла) по сути был вагон различных языков (см манны первоЮнихов)

единственное что поначалу считали необходимым от щели :

 список строк вызовов программ с аргументами(опциями) 


сила ! вызовов из ed 

ваще эволюцию полезно в фоне иметь ввиду для практических нужд

qulinxao3 ★☆
()
Последнее исправление: qulinxao3 (всего исправлений: 1)
Ответ на: комментарий от jpegqs

https://github.com/ioccc-src/winner/blob/master/1984/anonymous/anonymous.c

int i;main(){for(;i["]<i;++i){--i;}"];read('-'-'-',i+++"hell\
o, world!\n",'/'/'/'));}read(j,i,p)void*i;{write(j/p+p,i---j,(int)i/(int)i);}

но правильней:

int i;main(){for(;i["]<i;++i){--i;}"];read('-'-'-',i+++"hell\
o, world!\n",'/'/'/'));}read(j,i,p)void*i;{write(j/p+p,i---j,(int)i/(int)i);}

https://www.ioccc.org/1984/anonymous/index.html

qulinxao3 ★☆
()
Последнее исправление: qulinxao3 (всего исправлений: 3)
Ответ на: комментарий от JaneDoe

форт появился поздно. получи он массовое распространение среди операторов ibm704 - вот это была бы крутая альтернатива

так же для его выхода из фавора сыграло прогрессирующее удешевление памяти

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

qulinxao3 ★☆
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.