Hace 4 años | Por thingoldedoriat... a hackaday.com
Publicado hace 4 años por thingoldedoriath a hackaday.com

La máquina que ejecuta la versión 0 de UNIX pertenece a Fred Yearian, un ex ingeniero de Boeing que compró su máquina del canal excedente de la compañía a fines de la década de 1970. Para cargar el sistema operativo, se conectó un emulador de disco a la máquina, y posiblemente por primera vez en muchas décadas se escribió un nuevo controlador de dispositivo UNIX versión 0 para permitir su uso. El primer inicio de sesión fue el usuario "dmr", un homenaje al cocreador de UNIX Dennis M. Ritchie.

Comentarios

juanparati

#1 No solo eso sino que el proceso de compilar a ejecutable es el mismo que cuando empece a programar en C hace ya 23 años
- Se convierte el archivo fuente a archivo objeto
- Se "linkea" los archivos objecto
- Se obtiene el ejecutable.

La única diferencia es simplemente que el compilador utilizado es para lenguaje "B".

Hoy en día los compiladores como GCC hacen todo el proceso con una sola invocación (A no ser que utilices el parametro "-c").

Incluso el comando "stat" sigue existiendo para el mismo propósito hoy en día.

La unica duda que tengo es ¿Por que cada llamada a la función "write" contiene solamente dos caracteres? ¿Limite con los registros que pasan los datos al dispositivo de salida? (2 bytes máximo) o tal vez ¿Es eso una limitación de la terminal de salida (tty)?

daphoene

#31 Yo me he preguntado lo mismo, ya que los comandos en sí ocupan mucho más espacio.

Puede ser por el buffer de salida ( memoria a ejecutar en cada instrucción ) o bien una cuestión de escribirlo más gracioso, pero es curioso cómo funciona la mente a veces 'adivinando' pormenores de la máquina.

D

#31 Sospecho que la función "write" en esa versión vieja de Unix no recibía un puntero a un buffer con el texto, sino un entero con lo que tenía que enviar. Y como en el PDP-7 sólo había enteros de 18 bits (no tenías acceso a bytes, cualquier variable era de 18 bits siempre), y ahí entran dos caracteres ASCII, tiene sentido que cada llamada a "write" imprima dos caracteres.

Esto encaja también con el hecho de que en B también tenías sólo variables enteras, todas eran iguales, y que C se escribió cuando se portó UNIX al PDP-11, donde ya tenías bytes y palabras.

Es más, esto le dio sentido a la sintaxis original de C para parámetros de funciones:

funcion(nombre1, nombre2)
char nombre2;


Si una variable no tenía tipo indicado, se suponía que era un INT, y si una función no tenía tipo de retorno, se asumía que devolvía un INT. Lo interesante es que esto lo hacía compatible con la sintaxis de B, pues en B las funciones siempre devolvían un entero, y los parámetros eran enteros.

thingoldedoriath

#42 Así, le encuentro más sentido.

#31 Dennis Ritchie, cuando ya trabajaba para la "filial" Lucent Technologies (ahora creo todo lo de Bell Labs, incluida Lucent, son propiedad dela finlandesa Nokia Bell Labs) dirigió el equipo que desarrollaba Plan 9.

juanparati

#42 Creo que eso tiene bastante sentido!

D

#31 El compilador de plan9/9front primero hace el objecto (en amd64, 9c). El enlazador es 9l, donde se genera ele ejecutable final.

i

#10 Puede costar, pero si has programado, al final, con documentación lo haces, solo que con mucho tiempo -y mucho aprendizaje-. Siendo muy burro, programar en ensamblador es como picar codigo en bash.

Solo que en vez de tener un while, tienes una sentencia jump y la linea a la que quieres saltar -donde pondrías- el inicio del while, las condiciones más complejas... En vez de guardar en variables tendrías que guardar en registros, y las sumas arimeticas pues dejando tu mismo las variables en la pila -si no recuerdo mal-, pero con tiempo y ganas, todo se hace

thingoldedoriath

#13 Tiempo tengo... pero dedico bastante a ensayar con la gaita, que es más complicado que teclear; y la música me emociona más



Buen 2020 fratre.

i

#18 A mi también me gusta más la música. Solo decía que si le echas tiempo y ganas fijo que algo te podrías picar. Pero te animo a lo de la gaita, yo ahora ando con el piano.

thingoldedoriath

#23 Yo las gaitas (las gallegas) aprendí a tocarlas en la adolescencia... pero ahora se hacen cosas como la del vídeo, con gaitas escocesas antiguas que molan mucho más y para eso casi es imprescindible algo más de solfeo del que yo se.

daphoene

#23 Con la gaita cuesta un poco andar, pero con el piano tiene que ser jodido de cojones...

i

#33 Depende si es de juguete

daphoene

#34 Entonces tendrás que admitir que es un poco pretencioso llamar piano a tu PT-1, por mucho que molen los colores que tiene. Y las demos, claro. Ya quisiera Beethoven...

D

#33 Pues no te cuento con el violonchelo... pregúntaselo a Woody Allen

daphoene

#41 El violoncelo es más ergonómico para montarse encima y salir volando como una bruja. De lo que se deduce que Woody Allen es una bruja.

D

#52 ¡¡¡Pero no es de madera!!!

(Woody Allen, digo)

daphoene

#54 Basta con que pese más que un ganso, según tengo entendido... roll

u

Impagable lo del programa en lenguaje B, el antecesor del C. ¡Se ve como lo compila y ensambla antes de ejecutarlo!
Y lo de hacer login y quede tu contraseña en el papel también me hizo mucha gracia, me los imagino tapándola con típex lol

llorencs

#17 #16 Sí eso del papel es muy curioso. Pero está bien eso de ver funcionar una reliquia de esas. Porque hoy en día ni nos podemos hacer la idea de como eso funcionaba. Y lo complicado que era de usar, en cierta manera.

Yo siempre me había imaginado todos los ordenadores con monitor. O tienen monitor o no son ordenadores, son otra cosa. Pero, la verdad, es que perfectamente se podría imprimir el texto en papel o cualquier otro medio como se ve en el vídeo y en este PDP-7

D

#20 las consolas se llaman tty que es abreviatura de TeleTYpe

D

#20 >Pero, la verdad, es que perfectamente se podría imprimir el texto en papel o cualquier otro medio como se ve en el vídeo y en este PDP-7

Por eso usan ed como editor.

thingoldedoriath

#17 Yo tenía un teletipo a mediados de los 80 que tenía la bolita con las letras y hacía el mismo ruido al escupir las noticias de agencias

u

#22 También me recordaba a los teletipos. Mi padre trabajaba con teletipos y de pequeño me quedaba hipnotizado cuando le iba a ver al trabajo y veía los churros de papel y la copia esa perforada que salía en una tira de papel. Que entrañables recuerdos.

thingoldedoriath

#27 Sí. Ese sonido me sigue resultando hipnotizante. Nunca tuve una máquina de escribir con bolita. Eléctrica sí; y el sonido de los tipos contra el papel era similar.
Me alegra haber trabajado con tantas máquinas diferentes y haber vivido tantos cambios tecnológicos desde principios de los 80 hasta ahora. Pero algunos fueron vertiginosos.

D

#17 stty -echo, con eso impides que se muestre.

llorencs

#10 No se podrían escribir los controladores en C para esas máquinas? Si no me equivoco se creó C en esas máquinas, ¿no?

u

#12 El primer Unix que es el que vemos se desarrolló íntegramente en ensamblador. Sobre este Unix se desarrolló el lenguaje C y se reescribió un nuevo Unix en C. Lo leí hace mucho en uno de los libros de Kernighan, Thomson o Ritchie, ahora no recuerdo en cual.

llorencs

#19 Ok, entiendo. Y después de ver el vídeo me di cuenta que mi comentario tenía menos sentido. Lo escribí antes de ver el vídeo.

llorencs

#25 Es verdad, murieron el mismo año. Con esta noticia me he dado cuenta que estaba muerto al mirar artículos en la Wikipedia. Lo conocía, pero pensaba que Ritchie y Ken Thompson estaban vivos ambos, y solo lo está el segundo.

Por cierto, Ritchie es el creador de C, Thompson y Ritchie crearon su antecesor, B (WikiPedia como fuente)

D

#12 Si no recuerdo mal, el núcleo Unix del PDP-7 estaba escrito en ensamblador. Aunque luego en el vídeo se ve que compila un "hola mundo" en B (el precursor de C), por lo que ya no lo tengo tan claro. Aunque puede ser que el núcleo lo hiciesen en ensamblador y el resto de utilidades en B.

El C, si no me equivoco, lo crearon cuando pasaron al PDP-11 porque éste permitía tipos de varios tamaños (bytes, palabra, doble palabra...), mientras que en B todo eran palabras de... ¿16 bits? ¿18...? Vale, veo en la wikipedia que el PDP-7 usaba sólo palabras de 18 bits.

D

#38 En PDP11 tiraba Unix v7, cualquier linuxero lo podría usar sin problemas hoy. Sobre los BSD, no cuesta nada adaptarse si vienes de BSD. Lo tengo conectado mediante tun/tap a OpenBSD con simh, una puta pasada conectarlo a internet (e inseguro de cojones como no desactives servicios). De hecho corregí unas opciones de vi que en las guias no aparecen para que aproveche la terminal al completo (y que los tutoriales siempre omiten y recomiendan ed(1), aunque yo tampoco tengo problemas en usarlo.

D

#c-12" class="content-link" style="color: rgb(227, 86, 20)" data-toggle="popover" data-popover-type="comment" data-popover-url="/tooltip/comment/3232154/order/12">#12 Vale, estoy viendo el repo que puso # 8 y, efectivamente, está todo en ensamblador.

orangutan

Ahora sólo falta que compilen el Doom

insulabarataria

Cuando los ingenieros eran ingenieros

D

#4 "Cuando los hombres eran hombres y escribían sus propios drivers" (Linus Torvalds)

r

Es el año de unix en el PDP.

D

Ya podrían haber usado un terminal CRT , menudo gasto de papel

thingoldedoriath

#3 imagino que lo escribirían en ensamblador.

#5 supongo que para usar cualquier tipo de monitor CRT, tendrían que escribir otro driver (como el que tuvieron que hacer para el emulador de disco), y no se cuantos programadores habrá que manejen Assembler y tengan ganas y tiempo para echar a andar una "locomotora" como la del vídeo. En algún momento dicen que sólo quedan 5 máquinas PDP-7.

D

#6 no hay que escribir otro driver, solamente cambiar uno por otro, incluso con un PC y un emulador de terminal valdría

D

#6 Pues yo me ofrecía. Escribir un driver en ensamblador para ese cacharro tiene pinta de ser un reto genial.

thingoldedoriath

#8 Yo no controlo tanto... hace años escribía (más bien, modificaba) scripts en shell para cajeros NCR, ahora, todavía los leo en los Linux que uso; pero ensamblador no tengo ni idea. Un amigo mío, que ahora trabaja para Nokia, escribía Drivers pero creo que era en C.

D

#14 Tío... ¡¡¡¿¿¿como me pones esto justo un viernes???!!! Este finde ya no salgo de marcha

D

#14 #37 Os traigo un regalo, el emulador de ese Unix (y muchos más):

http://simh.trailing-edge.com/

Guías para instalarlo.

https://gunkies.org/wiki/SIMH

Con BSD 4.3 Quasijarus es posible leer Menéame con Lynx pero no ver los comentarios largos (u ordenarlos por orden cronológico) ya que requieren de JS. Es posible conectarse con telnet al anfitrión y usar edbrowse (donde es un navegador de terminal donde si lo permite), pero es hacer trampa.

D

#8 Mejor para BSD 4.3. Tienes ed, vi, y puedes instalar, literalmente, versiones de ksh, bash, gcc y demás de cuando gcc iba por la version 2.7.

Corregir el fallo de y2k es trivial, puedes simplemente parchear la herramienta date y tirará perfectamente.

D

#6 Ya no sólo es programar en ensamblador, estamos hablando de programar en ensamblador del PDP, qué aunque los mnemónicos sean parecidos a otros que sepamos habría que empollarse cómo son los direccionamientos, cómo son los registros, cómo está distribuida la memoria, y algunas cosillas más. Casi nada.

u

#5 Un compañero de trabajo que manejó un PDP en su juventud me contaba que no tenía monitor, todo era en papel. No obstante al inicio del vídeo se ve un monitor CRT que parece más la pantalla de un radar, así que será para hacer la demostración de como se trabajaba.

r

To load the OS a disk emulator was connected to the machine, and for possibly the first time in many decades a new UNIX version 0 device driver was written to enable it to be used

Ehorus

Una cuestión... lo he soñado, o he visto algo similiar al "arranque del sistema" , en una cinta continua perforada??? (minuto 1:27)

frg

#35 Sí, el bootloader, y posiblemente alguna "cosilla" más (¿el driver del disco?), van en la cinta perforada.

prejudice

Qué sensación mas rara deja. Tal vez algún día tengamos que recurrir a esa tecnología (Después de que un pulso electromagnético deje inservible la tecnología actual)