Posts tagged as:

NitrOS-9

Muchas de las primeras máquinas de 8 bits de antaño e incluso sistemas embebidos, rutinas de criptografía o de mátematicas de la actualidad se programan en lenguaje ensamblador para sacar la máxima velocidad a los microprocesadores.

La CoCo y el lenguaje de máquina
La CoCo y el lenguaje de máquina
según el manual del usuario

Obviamente al ser de bajo nivel es un lenguaje muy talachudo en el que uno debe ser muy ordenado y tener en la mente muy claro lo que se está haciendo. No he tenido la oportunidad de utilizarlo profesionalmente desde que no programo microcontroladores pero de vez en cuando leo, modifico o hago algunos scripts para mi vieja computadora de 8 bits; ya sea para su sistema operativo NitrOS-9 o en el mismísimo DECB.

Programa "Hello World"

Mi primer programa en ensamblador del microprocesador 6809 en NitrOS-9 fue el clásico "Hello World":

* Program hello

              nam    hello

* Add OS-9 definitions

              ifp1
              use /dd/defs/defsfile
              endc

tylg          set    Prgrm+Objct
atry          set    ReEnt+rev
rev           set    $01
edition       set    $01

              mod    eom,name,tylg,atrv,start,size

              org    0
              rmb    450
size          equ    .

name          fcs    /hello/
              tcb    edition

* Text to output:

hello         fcc    "Hello World!"
crtn          fcb    C$CR
heLen         equ    *-hello

* Program start

start         lda    #1            send to stdout
              leax   >hello,pcr    address of the data to write
              ldy    #heLen        number of bytes to write
              os9    I$WritLn

* Program exit

              clrb                  no errors
 end          os9       F$Exit      terminate

              emod
              equ       *
              end

El cual se compila con el siguiente comando:

asm hello.asm -o #16k

Como se puede ver en el código, al igual que muchos sistemas operativos como el MS-DOS, mucha de su programación consiste en llamar rutinas (os9) del sistema operativo, llamadas al BIOS o interrupciones del microprocesador, por lo que la programación puede llegar a ser menos complicada de lo que parece.

Técnicas especiales

Al programar en ensamblador en NitrOS-9, se debe siempre escribir código independiente de la posición porque el sistema operativo asigna las direcciones dependiendo de la memoria disponible. Esto se hace utilizando los comandos BRA, LBRA, BSR y LBSR. Para obtener las direcciones de constantes y tablas, se debe usar instrucciones LEA en lugar de las instrucciones inmediatas LD.

Para saber más...

La documentación con las especificaciones de las llamada al sistema, las podemos encontrar en el manual OS-9 Technical Information y la información sobre el uso del ensamblador esta disponible en el manual OS-9 Program development.

{ 0 comments }

Aunque con un emulador es suficiente usar imágenes de diskettes para trabajar o jugar un rato, no hay nada mejor que tener un sistema con un disco duro donde podamos ordenar en un solo lugar todos nuestros programas y sentir que nuestra CoCo podría rivalizar en funcionalidad a nuestra PC... Bueno, debo de reconocer que a veces algunas cosas me apasionan más de la cuenta, pero la Color Computer es considerada por muchos como la computadora de 8 bits más poderosa que ha existido y si la han utilizado sabrán a que me refiero.

Agregando un disco duro a nuestro emulador

La Color Computer real manejaba diskettes por medio de una "disketera" conectada por medio de un cartucho, el cual tenía un ROM con un "sistema operativo de disco - DOS" que extendía el lenguaje BASIC con comandos y rutinas en lenguaje de máquina que daban el soporte básico para el manejo de archivos en diskettes de 5.25 pulgadas (de un sólo lado).

Que yo sepa, la Radio Shack nunca sacó a la venta discos duros para la Color Computer (correción: Ya desde al menos 1988, ya aparecia en los catagos de Radio Shack); sin embargo, otras compañías diseñaron interfaces para soportarlos con versiones adaptadas de su sistema operativo de disco.

Por lo tanto, de igual forma debemos sustituir el Disk Extended Color Basic en el archivo zip con los ROMs en el emulador; es decir, debemos cambiar el archivo DISK11.ROM en el archivo coco3.zip por uno que nos de soporte para disco duro. Afortunadamente, Robert Gault, tiene preparado en su página de Internet el ROM RGBDOS modificado para usarse en emuladores y todas las herramientas necesarias para echar andar nuestro disco duro virtual. La página de Internet de Robert Gault donde se encuentra el RGBDOS es http://home.att.net/~robert.gault/Coco/Downloads/Downloads.htm

Una vez bajado el archivo RGBDOS.ZIP es necesario quitarle los dos primeros bytes al archivo DISK.ROM porque está preparado para el emulador de Jeff Vavasour. El nuevo archivo DISK.ROM debe sustituir al archivo DISK11.ROM (DECB) dentro el archivo coco3h.zip.

Al iniciar MESS, se comparan la checksums de los ROMs, por lo que es muy probable que nos marque un error de CRC al correrlo la primera vez. En la configuración del archivo se puede modificar para evitar el warning. La pantalla de inicio, ahora es esta:

RGB-DOS
El RGB-DOS despliega un nuevo mensaje de bienvenida

El siguiente paso es crear el archivo donde se va a contener nuestro disco virtual. Esto se hace con la opción Devices/Virtual Hard Disk/Create y dándole un nombre al archivo. Al reiniciar, ya no aparecerá el mensaje de error que nos informa sobre la falta del disco duro.

Si queremos que el disco duro se monte automáticamente cada que iniciemos MESS, debemos agregar su ruta al archivo de configuración cfg/coco3h.cfg.

Ahora para inicializar el disco duro seguimos los siguientes pasos:

Paso 1: Montamos el disco TOOLS.dsk en la unidad de diskettes 0 y el NitrOS9boot.os9 en la unidad de diskettes 1. Estas dos imagenes de disco las podemos encontrar en el archivo RGBDOS.ZIP.

Paso 2: Accedemos a los diskettes ejecutando el comando DRIVE OFF.

Paso 3: Cargamos y ejecutamos el programa CREATE.BAS (LOAD "CREATE.BAS" y RUN ). Después de unos minutos nos habrá creado 255 diskettes virtuales y aumentado nuestro archivo vhd a 128 MB aproximadamente. Cada disco virtual es accesible con el comando DRIVE.

Paso 4: Sustituimos el disco TOOLS.dsk por nuestro disco de Sistema de NitrOS-9 (no olvidar cambiar la extensión de dsk a os9). Activamos nuevamente las unidades de diskette con DRIVE ON y booteamos desde él con el comando DOS.

Paso 5: Formateamos el disco duro con los siguientes comandos:

load /d1/hdrive
iniz /h0
format /h0

Paso 6: Se copian los archivos del disco del sistema con la siguiente orden:

chd /d0; dsave -s48 /h0 ! shell -p

Paso7: Reseteamos y ahora nos aparecerá un menú del cual abandonamos con la tecla escape. Colocamos nuevamente el disco Tools.dsk en la unidad de discos 0 y ejecutamos el programa link.bas dando como parámetro el número 254 para el número de disco de arranque.

Paso 8: Probamos bootear NitrOS-9 con el comando DOS 254 y ¡ya tenemos nuestro disco duro!.

{ 1 comment }