Pues hace ya algunos dias que llevo haciendo pruebas de codigo ensamblador(mas bien poco, solo el arranque)y en C para tratar de hacer un SO a lo MSDOS para PC. Por el momento no lleva nada interesante y no es funcional a ningun nivel(si no se considera funcional que arranque sobre el Hardware usando GRUB como arranque y que escriba lo que recibe del teclado, xD)No prometo que esto avance mucho y tampoco prometo que se llegue, siquiera, a incluir un sistema de ventanas como lo es el de Windows 3.00a. Os dejo unas imagenes de la shell de comandos y del arranque:
Click para agrandar
No espero que opineis ni nada...
Esto es mas una practica que un proyecto, pero si todo sale bien esto seguirá adelante.
Actualizado Viernes 23 de Julio de 2010:
Primera version estable del Shell de comandos asi como del interprete de comandos.
Descarga: Descargar DarkSo Codename Aurora Rev 1020
Actualizado Jueves 10 de Octubre de 2010:
Nueva imagen del DarkSo, ahora contará con una barra superior que indicará en todo momento el estado de los discos duros y que pronto incluirá más informacion como el uso de CPU, RAM, etc.
Comentarios
Los IRQs...
Los irqs los sacastes de auqi no?
http://www.osdever.net/tutorials/view/irqs
Esque es practicamente lo mismo
¿A que te refieres? Los
¿A que te refieres? Los numeros de IRQ son siempre los mismos y en todos los sitemas operativos se habilitan/deshabilitan de forma parecida.
Perdona que te diga pero ese
Perdona que te diga pero ese codigo que posteo es el que posteastes tu mismo ;)
que es este: (casualidad que los 2 primeros comentarios están en español y es igual que el original pero con ciertos cambios)
y el original es este: (casualidad que es el mismo código)
no me vengas con que no se tal y cual, me da igual lo que sepas o lo que no y no te importa mis conocimientos o los que no tenga, aqui lo que huele es mal de que alguien se apodera del trabajo de otro, cosa que no soporto.
Ese codigo que dices NO está
Ese codigo que dices NO está en mi trabajo, ya te enseñé que codigo está en mi kernel, simplemente la cabecera se me colo porque en principio pensé en mostrar un codigo de booteo muy parecido al que tengo en mi kernel, con el Magic Structure del GRUB en un include y con los irqs iniciados y tal. Pero seguro que eso ati no te importa por el simple echo de que vas a desprestigiar y nada más.
El codigo de mi kernel ESTÁ ESCRITO por mi, he recibido ayuda en el foro de osdev.org(pagina web que tu citas)pero no me he leido sus tutoriales, solo la documentación. Deja ya de molestar que yo no te he echo nada a tí para que me ataques así. Si quieres seguir creyendo lo que tu mismo dices adelante, eres libre, pero cuando te des cuenta de lo equivocado que estabas no creo que el DarkSo sea ni una sola linea de lo que es ahora.
Simplemente no es por joder,
Simplemente no es por joder, es que ya vi eso en osdev, posteaste ese mismo code pero con varios cambios y los 2 primeros comentarios en español, fue eso lo que me sorprendió, posteaste ese code en los comentarios y decias que era tuyo con los comentarios en inglés.
Simplemente eso, soy una persona que le gusta el conocimiento libre pero datando autores, si me equivoco perdón.
En parte el error fue mio
En parte el error fue mio porque al principio no me acorde del codigo de más abajo, nada más.
Deacuerdo, entonces
Deacuerdo, entonces solucionado.
Suerte con el proyecto, espero ver avances pronto, saludos.
Actualizada la imagen con el
Actualizada la imagen con el estado del SO, en estos momentos estoy programando el soporte para discos duros, por el momento solo detecta los discos duros presentes pero en unos dias y cuando solucione unos problemas con las maquinas virtuales, soportará el leer y escribir en FAT16(calculo que en 2 semanas o así lo tendré listo).
Por favor...
Por favor... pongamos la fuente...
http://wiki.osdev.org/Higher_Half_bare_bones
por si algun dia lo liberas... lol
Haz el favor que antes de
Haz el favor que antes de hablar leeas el link que posteas, porque el código es escrito por MÍ, la información de arranque del GRUB la encontre buscando documentación por google y todo codigo está escrito por MÍ.
esto es tuyo¿?¿? por
esto es tuyo¿?¿? por favor...
;)
Pues ese codigo que tu
Pues ese codigo que tu publicas no se parece casi en nada(solo por la estructura magica y la tengo en un .inc aparte). concretamente tengo esto:
Pero claro, no lo intentes usar porque como no tienes ni P*** idea de como programar el IDT ni el GDT ni los IRQ¬¬. Dejad ya de tratar de chafarme, que por mucho que lo trates aqui esta todo escrito por mi y deja de dar por culo.
COMPARA CODIGOS:
El de mi tutorial:
con el tuyo, no se parecen mas que en la estructura magica del grub.
El que tu posteas es simplemente la entrada del kernel y la paginacion de RAM y es el que en un principio era el prototipo del actual, pero como ves ni se parecen. Seguro que tu ni siquiera sabes inciar el modo protegido ¬¬.
Fuente?
Pero si el post es sobre el kernel que el creo, no sobre como lo hizo ni el codigo ni nah.
Muy bueno almamu, esperemos en un futuro no muy lejano Almamu Profesional SP 3.. (heh..)
Salu2~
Como mucho un DarkDos, xD
Como mucho un DarkDos, xD
Sistema de ventanas? xD. No
Sistema de ventanas? xD. No es por desanimar, pero lo veo imposible, más que nada porque para esto tienes que tener todo un kernel por debajo, (habiendo implementado capa de abstracción hardware entera a mano, gestión de memoria, gestión de ficheros, carga de programas, tooodas las interrupciones y un laaaargo etc, para luego hacer una especie de servidor X rudimentario). Por otra parte, la primera versión de MS-DOS (QDOS) la programó un solo hombre (eso sí, era un clon de CP/M, así que tenía donde fijarse).
En fín, ánimo, que por lo menos vas a aprender mogollón con lo que consigas hacer.
Dennis Ritchie. Padre de C y cocreador de UNIX.
R.I.P.
Nada es imposible, realmente,
Nada es imposible, realmente, para la gestion de ficheros solo necesitas leer y escribir en el disco duro y tener nociones de los sistemas de archivos más usados, en un principio estoy tratando de preparar el soporte para los IDE por PIO para preparar un sistema en FAT16. En realidad, lo más dificil que he visto en la programacion es la grafica(modo VM86, es algo bastante complicado según he visto, solo para el modo vesa ya hay tela...). De todas formas conozco gente que en 2 años o así ha conseguido preparar un entorno de ventanas más que decente con un kernel funcional al 100%, lo dicho, solo se necesita dedicación.
Bueno, tampoco es solo leer y
Bueno, tampoco es solo leer y escribir del disco duro directamente, tienes que gestionar toda la partición (inodos y toda la historia), que se puede, pero es largo de hacer. Lo que me refería sobre todo es que hacer un SO implica implementar TODAS las llamadas al sistema. Es mucho trabajo, pero supongo que en 2 años puedes tener algo.
Una pregunta: por qué FAT16 y no FAT32 diréctamente, si tiene que ser casi igual de programar? (o incluso ya que te pones, lo puedes hacer de 64bits).
Dennis Ritchie. Padre de C y cocreador de UNIX.
R.I.P.
con un solo programador no se puede hacer maravillas
un solo programador no puede hacer gran cosa pero con un buen equipo de programadores se puede llegar a hacer algo. es muy muy dificil programar un sistema operativo. creo que seria mas interesante hacer un sistema alternativo al de sony para psp si eso pudiera hacerse. si buscas un gran equipo de programadores motivados podrias llegar lejos.
Como dije
Esto es un gran avance y eso que lo tenias mal catalogado xDDD...la verdad me gustaría saber donde aprendiste a hacer eso xDDD... este proyecto tiene futuro no lo dejes atras...solo pegale empeño.
Saludos figura!
Manual del Perfecto Votante Para un voto libre y justo!.
TheGCProjects
La verdad esque empece con un
La verdad esque empece con un simple tutorial de como empezar el kernel, el codigo se quedaba asi:
start.asm:
kernel.c:
La verdad es que para arrancar eso necesitabas una .img de diskete booteable a ese archivo y era un poco lioso a veces, asi que me decante por grub, leí un poco de documentaicón y al final saque el arranque, xD.
Jajaa
Tu lo haces parecer tan fácil cuando en vdd es bien difícil xDD
XD
Eso, ahora que lo veo "detenidamente", no es complicado. Lo que debe ser complicado es bootear la PC y controlar el teclado XDDD
Eso es un auntentico
Eso es un auntentico suplicio, sobre todo programar los interruptores para que se reciban las pulsaciones del teclado y luego pasarlas a letras... ahora solo queda que consiga hacer soporte para HDD...
Off topic
Una pregunta un poco fuera de tema.. (nadie te obliga a contestar) cuantos años tienes y cuantos llevas programando?
Es para saber si podré alcanzarte algñún día o me queda todavía tiempo xD
Si la pregunta te parece un poco comprometedora... Siempre puedes responderme por MP :P
Un saludo y suerte con tu proyecto
¡Iníciate en Linux fácilmente! Sólo entra aquí y comprueba que distribución se adapta mejor a tí.
Mi review: iPod Touch 4G
Tengo 15 años y llevo como 3
Tengo 15 años y llevo como 3 años en C y como 4 años en GML, aunque haya sido en DS es casi lo mismo(solo que no tengo librerias para los graficos aun, xD, tengo que programarla yo mismo...)
WTF!!
Me queda solo 1 año para alcanzarte!!!
Bueno, eso mirando la edad, pero mirando lo de C todavía tengo 2 años y medio jejejeje
No puedes usar SDL?
¡Iníciate en Linux fácilmente! Sólo entra aquí y comprueba que distribución se adapta mejor a tí.
Mi review: iPod Touch 4G
Segun he visto no, porque
Segun he visto no, porque para SDL primero necesito tener el driver grafico programado y listo para luego hacer un port de la librerçia, aunque no lo he mirado muy a fondo, de todas formas hace falta muchas funciones de C que aun no tengo...
Realmente impresionante
Esto desde luego es lo mejor en programacion que veo por scenebeta, es tener fe en poder lograr algo. Llegara a ser un sistema operativo? Puede que tardes mucho en terminarlo (o no terminarlo) pero seguro que sera el mejor sistema. :D
Echo de menos ser parte del staff activo de SB.
Chat no oficial de Scenebeta.
No creo que llegue ni
No creo que llegue ni siquiera a la suela de Win bugs, y alcanzar linux, ni de coña(o eso creo)es mas bien un microkernel con un solo proceso a la vez... ademas de momento no lee ni el disco duro, solo la shell y poco mas, ademas con esto no puedo entrar al Scenery, xD.
como lo ha dicho
P22, es el sueño de todo newbie en programación(me incluyo) ;), esperamos siga y se convierta en un buen proyecto.
Un saludo y felicidades.!
Mas bien es un deseo
Mas bien es un deseo terminarlo almenos como un MSDOS y luego ya programar encima de el a ver que tal van las cosas, xD.
viéndolo desde el punto
que ya lo has hecho, obvio que quieres avanzar, y en ese momento es tu "sueño", desde el punto de los que no.... lo siguiendo siendo :D
Excelente
A ver si pronto tenemos algún tutorial: "Cómo crear tu propio SO" xD (es broma :P).
Se ve muy bien, excelenete, y eso, el lenguaje de ensamblador está lejos de mi alcance xD.
En realidad yo uso poco ASM
En realidad yo uso poco ASM en el kernel(lo justo para las tablas gdt, idt y los irq, el manejador de excepciones y poco mas, parte en C y otra en ASM), pero eso si, debes de tener mucha documentacion y saber programar las funciones standard de C, porque si no vas de cabeza al hoyo, xD.
He subido la ultima revision
He subido la ultima revision que tengo, no quiero que piensen que lleva soporte para FAT ni nada, es una simple Shell de comandos con varios comandos para probar cualquier bug que encuentren en ella, nada mas.
El archivo descomprimido es un archivo .img(una imagen de diskette)lista para ser grabada o bien para ser emulada en VirtualBox, desconozco si funciona en otros...
O.o
Qué máquina!!! Eso que estás haciendo es mi sueño :-O
Y cómo se supone que es el ensamblador? según tengo entendido es código hexadecimal... Es muy dificili?
¡Iníciate en Linux fácilmente! Sólo entra aquí y comprueba que distribución se adapta mejor a tí.
Mi review: iPod Touch 4G
Me parece que eso de codigo
Me parece que eso de codigo hexadecimal es segun el compilador... El codigo ensamblador se ve tal que así:
Lo pongo mas que nada en ingles todo por si libero la source algun dia(que eso espero).
Detalle tonto. ;)
Si pretendes liberar algun dia el codigo, yo te pediria por favor. Que las notas en el codigo las hagas en ingles. Siempre te lo agradecera cualquier coder de habla no hispana que asi lo hagas.
Por lo demas como metodo de experimentacion (que por lo que he leido es la impresion que me da que llevas) me parece muy interesante. Antaño era habitual (en los 80 y 90) a dia de hoy la gente que se pelea con el asembler esta en extincion. ;)
No se porque pero es asi, los programadores de "bajo nivel" (lean en la wikipedia los no entendidos, que para nada es para principantes) son menos conocidos que los "desarrolladores de librerias", a los que enseguida se deifica si saca algun soft q permita cargar copias ilicitas. Tenemos claros ejemplos que no nombrare, en estos ultimos años de la Scene.
Normalmente suelo comentarlo
Normalmente suelo comentarlo todo en ingles, pero hay partes, mientras las estoy desarrollando, que las escribo en español para acelerarlo todo, luego los paso a ingles.
Es cuestion de coger buenas costumbres
Yo empece como tu,
Y al final llegue a la conclusion de que si me acostumbraba a poner directamente en ingles me ahorraba tiempo y dolores de cabeza a la hora de revisar el codigo para hacerlo. ;)
Ahora me echan la bulla cuando facilito algo de codigo porque comento en ingles. (of course solo me echan la bulla los hispanoparlantes) xDDDDDD
Bueno, de todas formas ahora
Bueno, de todas formas ahora mismo el codigo tiene todos los comentarios en ingles, xD.
Vaya
no parece muy dificil, pero seguro que lo es...
http://es.wikipedia.org/wiki/Lenguaje_ensamblador
Si ves la imagen de la derecha, salen un monton de numeros
¡Iníciate en Linux fácilmente! Sólo entra aquí y comprueba que distribución se adapta mejor a tí.
Mi review: iPod Touch 4G
Fijate bien en la imagen: En
Fijate bien en la imagen:
En rojo es el lenguaje máquina(si, los codigos exadecimales de arriba y los de abajo). El morado es el codigo Ensamblador, hay una diferencia, el ensamblador es realmente una especie de simplificacion del lenguaje maquina(sin quitarle complejidad para nada, xD)que hace mas entendible el codigo al ojo humano, porque a simple vista el de rojo no se entiende nada(xD)pero, en el morado si que se entiende algo:
mov dx, 010B
copia lo que hay en 010B(que si no me equivoco es el inicio del texto) al registro dx, luego se escribe en pantalla con esas instrucciones que ves despues del mov dx, 010B.(Creo que no la he cagado en la explicacion, xD)
Si no me equivoco esto es algo asi:
B = instruccion mov
A = dx
4 = ah
cd = int
Aunque tampoco estoy muy seguro de esto, solo he tocado en ensamblador, no el maquina.
Muuuucho mas claro
Jue, es que esta muuucho mas claro en ensamblador, donde va a parar, si yo en cuanto me levanto por la mañana lo primero que pienso es: MOV VASO,LECHE. Ya se por que era xD
"El pueblo no debería temer a sus gobernantes, son los gobernantes los que deberían de temer al pueblo"
Hombre yo me pensaba que era
Hombre yo me pensaba que era al reves, que se movia el primero al segundo, asi que fiajte tu, xD.
Yo tambien
Pero en el comentario anterior los has puesto al reves :P
De todas formas cada uno se hace el desayuno como quiere xD
en asm es asi, xD mov vaso,
en asm es asi, xD
mov vaso, leche seria igual a mover leche al vaso, xDDDDDDDDDDD
O.o
Me sigue pareciendo incomprensible... xD
Vamos, la explicación de l morado si que me he enterado mas o menos, pero lo de luego de B, A, 4, cd de donde lo has sacado?? xD
Bueno, tampoco hace falta que me lo expliques, que no me voy a enterar de mucho... :P
Bueno, tu sigue así, que acabarás bien. Si necesitases ayudantes yo estaría dispuesto a ello para C y C++
¡Iníciate en Linux fácilmente! Sólo entra aquí y comprueba que distribución se adapta mejor a tí.
Mi review: iPod Touch 4G
Si te fijas los codigos
Si te fijas los codigos hexadecimales son esas mismas lineas, si te fijas en los argumentos que tiene te das cuenta de lo que es cada cosa...
Se que no esperas nada
Pero la verdad es un buen avance....valga la redundancia xDDD....Suerte