martes, 31 de enero de 2012

Bloqueo por parte de ESET

Pues hoy he vuelto a Windows para descargar Kubuntu 11.10 (añoro los tiempos en que utilizaba Kubuntu) y desinstale Ubuntu 11.10. Al intentar entrar a la página oficial del proyecto me encuentro con una grave sorpresa: ESET ha puesta en lista negra al sitio web. Entro a la página de tal empresa y me encuentro con una sorpresa peor, no posee cuenta de e-mail para reclamos y nisiquiera para hacer un contacto a la empresa.
Es increíble que un servicio de seguridad se encargue de mandar webs a la lista negra por simplemente poseer una direccion terminada en cierto dominio. Esto se suma al bloqueo que aún mantiene Google y otras webs.
Espero esto cambie dentro de los proximos días, o meses o talvez nunca.

domingo, 29 de enero de 2012

IDE a medias y mejorado el soporte del teclado

Primero hablaré sobre el teclado. Actualmente (en la versión en desarrollo) la función scanf soporta nuevas teclas, p.ej. ambos shift, bloq mayús y borrar. Esto significa que ya se puede borrar, escribir en mayúsculas (tanto con bloq mayús como con shift) y utilizar los símbolos que produce shift junto con los números. Todo esto hace mas fácil el uso, aunque aún faltan por implementar, por cierto, tan pronto como salga la versión 0.03 final enviaré la función scanf completa al creador (taul de elhacker.net) de la función scanf original (la actual es una ampliación de aquella) para ayudar en su kernel, el cual ha influido bastante en NuOS.
Ahora, hablando sobre el IDE, la librería está "a medias", es decir, no es funcional pero hay código. El controlador no funciona correctamente y le falta mucho aún, pero espero poder terminarlo en el tiempo que tengo planeado para poder lanzar una versión que permita escribir y leer sectores de los discos duros y CDs.
Espero que si alguien tenga algo con que ayudar en el proyecto me envíe un mensaje al nuevo correo armizh@nuos-kernel.co.cc.
Estén atentos a los avances del kernel. Saludos.

martes, 24 de enero de 2012

Paciencia por favor.

Les pido paciencia, debido a que estoy reconstruyendo la página web oficial. Está quedando tal como estaba antes pero aun le falta, tal vez las descargas no funcionen, tratare de arreglarlo lo mas rápido posible. Todo estará en la web http://www.nuos-kernel.co.cc/
Saludos.

Cambio de dominio

Así es, hoy se ha concretado el cambio de dominio de la página web oficial del proyecto, fue un par de ajustes de la DNS y ahora está el dominio http://nuos-kernel.co.cc/ listo para su uso.
En estos momentos estoy haciendo los ajustes para cambiar algunos detalles.
Saludos.

domingo, 22 de enero de 2012

Reescribiendo controlador IDE

Pues hace unas horas publique un controlador ATA/ATAPI e IDE, pero el controlador tenia sus fallos, funcionaba con el sistema CHS el cual es obsoleto, por lo que lo estoy reescribiendo pero con el sistema LBA. Me conseguí una documentación ATA de la empresa Seagate (uno de los monstruos de los hard disks) la cual es muy completa y explica detalladamente la especificación ATA y la programación de los dispositivos de tal empresa. Un libro muy bueno e interesante. Tal vez esto demore mas de lo planeado. Estoy pensando seriamente en poner como prioridad mayor al controlador IDE y dejar mas relegado el sistema de ficheros. Bueno y hay un colaborador (dnsdirm de elhacker.net) trabajando en el soporte ACPI para el manejo seguro de la fuente de poder del PC.
Esten atentos.

martes, 17 de enero de 2012

Avances en el controlador VGA en modo texto

Despues de escribir el post de anoche, seguí trabajando en el controlador del modo de texto y encontré información sobre los registros del CRTC (que ya los había leído antes) y empecé a modificarlos mas, pasando por resoluciones monstruosas, hasta llegar a dos configuraciones correctas.
Estas configuraciones son el modo 160x46 (1280x768) y 160x50 (1280x800). Hasta el momento estas son las dos resoluciones que han funcionado correctamente y sigo buscando otras que pase por alto, como la de 1024x768. Acá les dejo el código del controlador VGA actual y una screenshot de NuOS utilizándolo.
----------------------------------------------------------------------------------------------------------------------------------
Edito:
----------------------------------------------------------------------------------------------------------------------------------
He vuelto a subir este controlador con algunas mejoras, además de poseer más resoluciones y corregido algunos errores.
----------------------------------------------------------------------------------------------------------------------------------
VGA Text driver 0.01 - Descargar (Bz Tarball) - Descargar (Gz Tarball)


Por cierto, me cambie de gedit a GNU Emacs y ufff... mucha diferencia, ahora si puedo programar tranquilo, lo recomiendo totalmente.
Cualquier duda o consulta envíen un email a armizh@nuos-project.10h.us o un comentario.

Mejorado el controlador VGA de texto

Desde la tarde (aprox. 16.30) hasta ahora (23:56) he estado trabajando para mejorar el controlador VGA para el modo de texto implementado en NuOS. Ahora el shell hace scroll en vez de borrar la pantalla y he mejorado el bucle del shell, de la función scanf y de la función printk para ahorrar código y espacio en la memoria, ya que están comenzando los problemas de memoria; el kernel está creciendo en tamaño, tanto físico como virtual, aceleradamente y GRUB está teniendo algunos problemas para cargar el kernel. Al parecer voy a necesitar pronto (tal vez para la versión 0.04) activar la paginación y empezar con la gestión de memoria, mucho antes de lo que yo esperaba.
Además estuve pensando que la idea de NuOS era que las personas tengan un kernel mínimo para comenzar su trabajo, y NuOS va a llegar a un punto en el cual empezará a tener más de lo mínimo, por lo que he decidido que NuOS aumentará sus funciones hasta la versión 1, luego solo se  corregirán errores mientras yo trabajaré en otro sistema operativo (basado en NuOS) pero que cumpla con el estándar POSIX y se convierta en un sistema operativo hecho y derecho, el cual obviamente estará bajo la GNU GPL v3. ¿Por qué? Porque no quiero que NuOS se vuelva un sistema operativo que sea dificultoso de entender. La misma razón por la cual empecé con NuOS me impide que este SO crezca mas de lo mínimo para funcionar.
Espero que entiendan mis razones. Estén atentos a los avances.

sábado, 14 de enero de 2012

Programando un sistema de archivos

Update 2: Si quieres colaborar en la creación/implementación del sistema de archivos VVFS, visita la wiki del proyecto e infórmate sobre como funciona el sistema de archivos. Comparte tus ideas con este proyecto open source!
------------------------------------------------------------------------------------------------------------------------------------------
Update: La base del sistema de archivos ya esta programada y ya es posible crear y visualizar archivos.
------------------------------------------------------------------------------------------------------------------------------------------
Así es, en estos momentos estoy creando un sistema de archivos virtual para NuOS, el cual sera bastante básico pero funcional. Por el momento será solamente virtual debido a que nuos no posee soporte para discos duros ni cd-rom (aún), pero en un futuro cercano espero que posea tal soporte. El nombre en clave del sistema de archivos es VVFS, un acrónimo de Virtual and Volatile File System. Estén atentos con los avances del kernel.

jueves, 12 de enero de 2012

Petición abierta! Ayuda

Update: durante el día logre un algoritmo que escribe con formato, pero no he terminado de probarlo por lo que puede que tenga algun error, pero la estoy testeando. Ya soporta los formatos \n, \t, %s, %c, %d, %i y %x. Se que se me escapan algunos pero por eso la estoy ampliando.
Entonces en nuos tenemos las funciones printf (escribe texto sin formato), printk (escribe texto con formato) y dprintf(escribe texto sin formato en cualquier posición). Me falta hacer una función dprintk para escribir con formato en cualquier posición de la pantalla.
--------------------------------------------------------------------------------------------------------------------------------
Utilizo este medio para pedirle ayuda o mas bien un favor a los lectores de este blog. Quien pueda y sea tan amable ¿podría mejorar la función printf de nuos?
El código lo pueden descargar aquí o lo pueden ver en el ultimo release de nuos, aun que recomiendo el suministrado en este post porque esta algo mas comentado que el del release. Pues bien, ¿que hay que mejorar? Simplemente se necesita implementar una de las opciones mas usadas de la función: el formato.
¿Qué es el formato?
El formato es cuando almacenas un valor que puede variar, p.ej:

int a, b, c;
a = 5;
b = 6;
c = a+b; //c=11
printk("La suma entre %i y %i es igual a %i\n", a, b, c)

Esto muestra el mensaje "La suma entre 5 y 6 es igual a 11". Si bien esto se puede hacer de otra forma, p.ej:

int a, b, c;
a = 5;
b = 6;
c = a+b; //c=11
printk("La suma entre ");
printk(a);
printk(" y ");
printk(b);
printk(" es igual a ");
printk(c);
printk("\n");

...pero no es tan armonioso, ni estructurado, ni entendible, ni fácil de escribir. Cabe destacar que existen las funciones ntos(dest,src,base) y ntohex(dest,decnum)que sirven para convertir números, tanto decimales como hexadecimales, en cadenas de texto char *.  El principal problema y la razón de esta petición abierta es para crear la función printk, o mas bien la estructura que acepte formato. Recuerda que todos tus aportes serán atribuidos, tanto en el archivo fuente como en la wiki de nuos. Por favor, colabora con este proyecto open source.
Gracias a todos los que colaboren con el proyecto.
Puedes descargar el archivo fuente de la función aquí.

martes, 10 de enero de 2012

NuOS ahora conoce tu memoria

Tal como lo dice el título, se ha terminado de implementar la función para detectar la memoria instalada en el PC, y ahora al iniciar el sistema te muestra la cantidad. Por supuesto que si no te acuerdas cuanta memoria ya que se ha limpiado la pantalla puedes preguntarle a la shell con el comando detectmem y te dirá automáticamente cuanta es la RAM total. Posiblemente, la función tendrá su propia barra en un futuro, pero eso es algo que decidiré en otra ocasión ya que no es algo muy relevante.
Cabe destacar que aún faltan muchas funciones por implementar, algunas las trabajo pero por separado y otras que aun no me he dedicado a implementar. Recuerden que pueden aportar a este proyecto, pueden revisar la página de tareas para la próxima versión aquí. para contribuir primero deben leer la siguiente página:
http://nuos-project.10h.us/wiki/index.php/Anexo:Contribuciones
Por ahora los dejo con la screenshot de la actual versión de pruebas.


lunes, 9 de enero de 2012

Página oficial del proyecto

Ayer y hoy me he dedicado totalmente a abrir la nueva página oficial del proyecto la cual pueden ver aquí. Además pueden leer la wiki del proyecto aquí.
Cualquier duda o consulta envíen un e-mail a armizh@nuos-project.10h.us.

domingo, 8 de enero de 2012

Tercera revisión y avances de NuOS v0.03

Posiblemente esta sea la última revisión de NuOS v0.02 ya que he corregido todos los bugs que he encontrado (excepto el del comando exit). El cambio fundamental en esta nueva revisión es la estructuración del programa, el cual ahora posee menos archivos fuente y cada archivo esta mas organizado. Además se ha creado un handle de comandos para añadirlos fácilmente a la shell de NuOS.
Pueden descargar esta nueva revisión desde los siguientes enlaces
La próxima versión de NuOS ofrecerá una serie de nuevas capacidades, por ejemplo, el soporte para ATA/ATAPI en base a ATADRVR, el cual me encuentro implementando en NuOS. Además, espero poder incluir un sistema de archivos, por ejemplo ext2, para manejar archivos de forma fácil en el CD y en un disco duro.

Estén atentos con los avances del kernel.

sábado, 7 de enero de 2012

Segunda revisión de NuOS v0.02

Escribo sobre el lanzamiento de la segunda revisión de este kernel debido a que esta revisión posee un par de características distintas con respecto a las versiones y revisiones anteriores.
Tales características diferenciadoras son:
  • Implementado el modo de texto con resolución de 90x30.
  • Reparado el bucle de la shell
  • Estandarizada la función printf()
  • Implementado los avances del controlador VGA con respecto al modo texto
Puedes descargar esta revisión aquí.
Recuerda revisar cada cierto tiempo la página oficial de NuOS en SourceForge.Net la cual se encuentra aquí.

jueves, 5 de enero de 2012

NuOS v0.02

Update:
Durante la mañana he estado programando el controlador VGA, además de reparar unos bugs de la versión 0.02.
Es por esto que está disponible la descarga de la primera revisión de NuOS v0.02 aquí.
----------------------------------------------------------------------------------------------------------------------------------
He aquí el segundo release de NuOS y me gustaría aclarar unos puntos antes de ofrecer el enlace de descarga para quienes deseen descargarlo.
Primero que todo, en el tiempo que llevo programando NuOS (unas 2 semanas) me he dado cuenta que en realidad el centro del trabajo no es el SO en si, sino mas bien la librería estándar llamada sslib. La verdad es que de estándar no posee nada ya que no me he dado el tiempo estandarizarla pero cumple con su función y posee algunas funciones extras. La verdad es que me he dado cuenta que en realidad NuOS es solo una implementación de sslib y que quien hace el trabajo sucio es la librería. Esto lo podría anotar en mi cuadernillos de notas y además lo que mas deseo saber es si esto es normal en los SOs o esto solo ocurre con NuOS.
Bueno, lo segundo es que, esto es realmente el logro de mi vida ya que con solo 16 años he programado una mini-shell que se ejecuta sin ayuda de ningun SO y estoy orgulloso de eso, pero se que es nada comparado con lo que otros podrían hacer por lo que asumo que todavía hay mucho camino por recorrer.
Lo tercero y quizás lo que más tenga que ver con el sistema operativo, es que posee una cantidad de bugs que realmente no he querido resolver a pesar de lo fácil que es: simplemente tales bugs no afectan en nada en la estabilidad del sistema, y bueno, no se si cuente como bug, pero el comando exit de la shell de NuOS no apaga el sistema, si no que, mas bien, prepara el sistema para un apagado en seco desde el PC.

Ahora para descargar la versión cruda de NuOS v0.02 pueden hacerlo desde aquí.

Entre las nuevas características de esta versión puedo nombrar:
  • Se ha aumentado el numero de funciones de la sslib
  • Se ha implementado un sistema básico de E/S
  • Se han ampliado las características de gran parte de las funciones de la librería
  • Se han incluido bugs, o mas bien, no he arreglado ciertos bugs de poca importancia, es por eso que esta versión la llamo 'cruda'
Bueno, eso es todo por esta vez y aviso que el siguiente paso será un controlador VGA que estoy programando en estos momentos, aunque puede que no se incluya hasta versiones mas completas, además de que dentro de los próximos días, semanas (o tal vez meses) antes de que salga a la luz la v0.03, estaré creando revisiones de esta versión cruda para eliminar la mayor cantidad de bugs. Cabe destacar que tales bugs no son mas de 4 o 5 y no afectan en la estabilidad de NuOS. Por cierto, ¿alguien sabe hacer un mapeo de memoria sin la BIOS?

martes, 3 de enero de 2012

Se acerca un nuevo release

¡Asi es! Se acerca el lanzamiento de la v0.02 de NuOS, en estos momentos ya están escritas las funciones básicas de E/S y estoy programando la shell o consola de comandos de NuOS que ya acepta unos pocos comandos, pero que es totalmente funcional.
Ademas, estoy reparando algunos bugs menores en la comunicación kernel-shell, agregando algunas nuevas funciones y mejorando algunas funciones ya implementadas.
Pueden revisar la lista completa de funciones aquí.
Ya falta poco para NuOS v0.02. Como novedad también está el hecho de que podrán descargar sslib v0.02 para poder crear sus aplicaciones o comandos para NuOS y/o para la arquitectura x86 sin depender de ningún sistema operativo.
A continuación podrán ver un screenshot de la última versión en desarrollo al momento de creación de esta publicación.

domingo, 1 de enero de 2012

Programando la sslib

Primero que todo, ¿Qué es la sslib? La Simple Standard Library (sslib) es la librería estándar de NuOS. Como su nombre lo indica, esta siendo creada para ser lo mas simple, pero que de funcionalidades avanzadas para los programadores de C que se puedan interesar en este SO.
Quienes hallan probado la versión 0.01 se habrán dado cuenta que posee una carpeta llamada 'lib' que posee los archivos 'cls.c', 'printf.c' y 'stdio.h'. pues bien, esta es la sslib, que para la v0.02 proveerá al menos las funcionalidades de outporb/inportb y scanf, ademas de algunas funcionalidades del CPU como detectmem, que detecta la low memory, la high memory y la total memory. Esta última función se encuentra en pruebas y no ha sido implementada a la version de pruebas.
En estos momentos outportb/inportb se encuentran implementadas bajo las funciones inb(port) y outb(port) en el archivo 'conio.c'. La función detectmem(line) se llama desde el archivo 'cpu.c'.
Si bien se pueden llamar desde #include "[lib/funcion]" es más eficiente llamar desde #include "lib/stdio.h" ya que esta cabecera carga todos los archivos de la libreria.
La función scanf(output,line) está siendo programada y si alguien desea aportar código para hacerla más eficiente, ¡Bienvenido sea! Pueden enviar a mi correo disponible en la sección contacto o un comentario en esta publicación.

Update: Scanf y detectmem han sido removidas y estan siendo reescritas ya que no funcionaban correctamente.