¡Creemos un sistema operativo!

Iniciado por Alvarito050506, 9 Diciembre 2018, 01:16 AM

0 Miembros y 4 Visitantes están viendo este tema.

Alvarito050506

¡Gracias @**Aincrad**!

Respecto a tu pregunta, yo desarrollo todos mis programas meramente por hobby, pero quizás a alguien más le sirva como referencia o quizás alguien lo use con fines educativos. Lo que sí, quiero hacerlo libre (licenciado bajo la GPL v2.0) y colaborativo (alojarlo en GitHub).

Markks

Not found.

Alvarito050506

Bueno, yendo directamente al código, tendríamos que establecer algunas convenciones de nomenclatura de variables y funciones, documentación mínima requerida, tipos de datos utilizados, etc.

Propongo que creemos los tipos uint8, sint8, uint16. sint16, uint32, sint32 y byte, los cuales han de ser declarados de la siguiente manera:
typedef unsigned char uint8;
typedef char sint8;
typedef unsigned short uint16;
typedef short sint16;
typedef unsigned int uint32;
typedef int sint32;
typedef uint8 byte;


Propongo también que utilicemos la nomenclatura de funciones estándar POSIX y que adjuntemos el prefijo "g" (ge minúscula) a las variables globales.

Ustedes dirán...

Alvarito050506

Ya creé un repositorio en GitHub. Está aquí: https://github.com/Alvarito050506/N2OS. El repositorio se llama N2OS por "NoNameOS" ::), lo que no significa que ninguno de ellos sea el nombre definitivo.

Ahora en un rato subo un código básico que tengo por ahí. Si alguno no sabe como usar Git o GitHub me avisa y hago una explicación general directamente.

Ah, casi me olvido: hay que definir la documentación mínima requerida que debe acompañar a cada contribución. Propongo algo como esto por cada función:
/*
*
* name: functionName
* params: @paramIn0, @paramIn1, @paramOut0
* return: @returnValue
* description: functionDescription
*
*/


También habría que acordar cuáles compiladores, ensambladores y enlazadores vamos a usar: Personalmente yo prefiero gcc del paquete gcc y as y ld del paquete binutils. Obviamente prefiero trabajar en GNU/Linux o entornos similares (Minix, FreeBSD, etc.).

Posteen ustedes sobre que les parecieron los requisitos de documentación mínima requerida (de ahora en más DMR), en que entorno están habituados a trabajar, con que paquetes o herramientas de software, con qué notación de ensamblador (yo prefiero la notación AT&T, como habrán notado) les gusta trabajar, etc.

Alvarito050506

#14
Hola a todos. Ya subí al repositorio de N2OS un esbozo de kernel. Actualmente puede ser compilado con el comando make en GNU/Linux, pero no en Windows.

Si alguien desea tomarse el tiempo de escribir un Makefile para Windows ¡bienvenido sea!.

Pronto agregaré soporte para el teclado QWERTY (distribución hispanoamericana) y una shell built-in, así que ¡no se queden atrás y envíen sus pull-request :D!

Por las dudas vuelvo a dejar el link al repositorio: https://github.com/Alvarito050506/N2OS

Edición: A continuación, algunas capturas de pantalla del kernel iniciándose y corriendo en QEMU.
Así se ve N2OS en QEMU:




::) ::) ::) It's so cool.  ::) ::) ::)

Machacador

Se nota el entusiasmo del publico en general y ya llevas 3 post seguidos... pero eso no se debe hacer, lo conveniente es que uses el botón de modificar antes de algún moderador te llame la atención...

Ah!!!... y como sigo con mi empeño de ser el padrino de la criatura, no me gusta ese nombre que tu sugeriste y yo prefiero llamar al pequeño pingüino; SBBHKK.

:rolleyes: :o :rolleyes:

Suerte con la empresa.
"Solo tu perro puede admirarte mas de lo que tu te admiras a ti mismo"

branon32

Cita de: Alvarito050506 en  9 Diciembre 2018, 16:50 PM
Hola @branon32, al final del primer post hay una serie de enlaces interesantes, pero son específicos de desarrollo de sistemas operativos. Acá abajo te dejo unos links sobre programación en bajo nivel general.

Apuntes de la Facultad de Ingeniería de la UBA (Universidad de Buenos Aires) sobre la programación en C a bajo nivel: http://web.fi.uba.ar/~bortega/apunte_c_a_bajo_nivel.pdf.

Página oficial de NASM (Netwide Assembler), un ensamblador con sintaxis Intel (más parecida a la del inglés): https://www.nasm.us/.

La documentación de GAS (GNU Assembler), un ensamblador con sintaxis AT&T (más díficil y parecida a la del español), que es con el que yo estoy más familiarizado y pienso usar para el proyecto: https://sourceware.org/binutils/docs-2.31/as/index.html.

Y, como no puede faltar, los links de Wikipedia en español e inglés sobre los dos últimos ensambladores:
GAS, Español: https://es.wikipedia.org/wiki/GNU_Assembler
NASM, Español: https://es.wikipedia.org/wiki/Netwide_Assembler

GAS, Inglés: https://en.wikipedia.org/wiki/GNU_Assembler
NASM, Inglés: https://en.wikipedia.org/wiki/Netwide_Assembler

MUCHAS GRACIAS
sit tibi terra levis

Alvarito050506

@branon32: ¡De nada!
@Machacador: Gracias por la sugerencia y, no, de seguro no le pondremos "SBBHKK" a nuestro sistema operativo (tuve que buscar en internet qué significaba  :xD).