fbpx
Wikipedia

KERNAL

KERNAL[1]​ es el nombre designado por Commodore para el núcleo del sistema operativo residente en ROM en sus computadoras domésticas de 8 bits; desde el PET original de 1977, seguido de las versiones extendidas pero fuertemente relacionadas utilizadas en sus sucesores: el VIC-20, Commodore 64, Plus/4, C16 y C128.

Descripción

El KERNAL de las máquinas Commodore de 8 bits consta de rutinas del sistema operativo de bajo nivel, cercanas al hardware, más o menos equivalentes al BIOS en las PC compatibles con IBM (en contraste con las rutinas del intérprete BASIC, también ubicadas en ROM), así como funcionalidad de E/S independiente del dispositivo de nivel superior, y puede ser llamada por el usuario a través de una tabla de saltos cuya parte central (la más antigua), por razones de compatibilidad con versiones anteriores, [2]​ permanece en gran medida idéntica en toda la serie de 8 bits. La ROM KERNAL ocupa los últimos 8 KB del espacio de direcciones de los 64 KB de la CPU de 8 bits ($E000- $FFFF).

La tabla de salto se puede modificar para apuntar a rutinas escritas por el usuario, por ejemplo, reescribiendo las rutinas de visualización de pantalla para mostrar gráficos animados o copiando el conjunto de caracteres en la RAM. Este uso de una mesa de salto era nuevo para las computadoras pequeñas en ese momento.[3]

Los juegos de Adventure International publicados para el VIC-20 en cartucho son un ejemplo de software que utiliza KERNAL. Debido a que solo usan la tabla de salto, los juegos pueden descargarse en la memoria del disco, cargarse en un Commodore 64 y ejecutarse sin modificaciones.[4]

El KERNAL fue escrito inicialmente para el Commodore PET por John Feagans, quien introdujo la idea de separar las rutinas de BASIC del sistema operativo. Fue desarrollado por varias personas, especialmente Robert Russell, quien agregó muchas de las características para el VIC-20 y el C64.

Ejemplo

La siguiente subrutina de lenguaje ensamblador 6502 [5]​ (escrita en formato/sintaxis de ensamblador ca65) proporciona un ejemplo simple pero característico del uso de KERNAL:

CHROUT = $ffd2 ; CHROUT is the address of the character output routine  CR = $0d ; PETSCII code for Carriage Return   ;  hello:  ldx #0  ; start with character 0 by loading 0 into the x index register  next:  lda message,x ; load byte from address message+x into the accumulator  beq done ; if the accumulator holds zero, we're done and want to branch out of the loop  jsr CHROUT ; call CHROUT to output char to current output device (defaults to screen)  inx  ; increment x to move to the next character  bne next ; loop back while the last character is not zero (max string length 255 bytes)  done:  rts  ; return from subroutine  ;  message:  .byte "Hola mundo"  .byte CR, 0 ; Carriage Return and zero marking end of string 

Este código auxiliar emplea la rutina CHROUT, cuya dirección se encuentra en la dirección $FFD2 (65490), para enviar una cadena de texto al dispositivo de salida predeterminado (por ejemplo, la pantalla de visualización).

El nombre

El KERNAL era conocido como kernel[6]​ dentro de Commodore desde los días de PET, pero en 1980 Robert Russell escribió mal la palabra como kernal en sus cuadernos. Cuando los escritores técnicos de Commodore Neil Harris y Andy Finkel recogieron las notas de Russell y las usaron como base para el manual del programador VIC-20, la falta de ortografía los siguió y quedó como estaba.[7]

Según el antiguo mito de Commodore, e informado por el escritor/programador Jim Butterfield, entre otros, la "palabra" KERNAL es un acrónimo (o quizás más probable, un retroacrónimo) que significa Keyboard Entry Read, Network, And Link., lo que de hecho tiene sentido teniendo en cuenta su papel. Berkeley Softworks más tarde lo usó al nombrar las rutinas centrales de su sistema operativo GUI para computadoras hogareñas de 8 bits: el GEOS KERNAL.

En E/S independientes del dispositivo

Sorprendentemente, el KERNAL implementó una API de E/S independiente del dispositivo que no es completamente diferente de la de Unix o Plan-9, que nadie explotó, hasta donde se sabe públicamente. Mientras que uno podría argumentar razonablemente que "todo es un archivo" en estos últimos sistemas, otros podrían afirmar fácilmente que "todo es un dispositivo GPIB" en el primero.

Debido a las limitaciones con la arquitectura 6502 en ese momento, abrir un canal de E/S requiere tres llamadas al sistema. El primero generalmente establece el nombre de archivo lógico a través de la llamada SETNAM. La segunda llamada, SETLFS, establece la dirección del "dispositivo" GPIB/IEEE-488 para comunicarse. Finalmente se llama a OPEN para realizar la transacción real. Luego, la aplicación utiliza las llamadas al sistema CHKIN y CHKOUT para configurar los canales de entrada y salida actuales de la aplicación, respectivamente. Las aplicaciones pueden tener cualquier cantidad de archivos abiertos simultáneamente (hasta cierto límite dependiente del sistema; por ejemplo, el C64 permite que se abran diez archivos a la vez). A partir de entonces, CHRIN y CHROUT resultan útiles para realizar entradas y salidas, respectivamente. CLOSE luego cierra un canal.

Observe que no existe una llamada al sistema para "crear" un canal de E/S, ya que los dispositivos no pueden crearse ni destruirse dinámicamente en circunstancias normales. Del mismo modo, no existen medios para buscar, ni para realizar funciones de "control de E/S" como ioctl() en Unix. De hecho, el KERNAL demuestra mucho más cerca de la filosofía del Plan-9 aquí, donde una aplicación abriría un canal especial de "command" al dispositivo indicado para realizar tales transacciones "meta" o "out-of-band". Por ejemplo, para eliminar ("scratch") un archivo de un disco, el usuario normalmente "abrirá" el recurso llamado S0:THE-FILE-TO-RMV en el dispositivo 8 o 9, canal 15. Según la convención establecida en el mundo Commodore de 8 bits, el canal 15 representa el "canal de comando" para los periféricos, basándose en técnicas de transmisión de mensajes para comunicar comandos y resultados, incluidos casos excepcionales. Por ejemplo, en Commodore BASIC, pueden encontrar software similar al siguiente:

 70 ... 80 REM ROTATE LOGS CURRENTLY OPENED ON LOGICAL CHANNEL #1. 90 CLOSE 1 100 OPEN 15,8,15,"R0:ERROR.1=0:ERROR.0":REM RENAME FILE ERROR.0 TO ERROR.1 110 INPUT# 15,A,B$,C,D:REM READ ERROR CHANNEL 120 CLOSE 15 130 IF A=0 THEN GOTO 200 140 PRINT "ERROR RENAMING LOG FILE:" 150 PRINT " CODE: "+A 160 PRINT " MSG : "+B$ 170 END 200 REM CONTINUE PROCESSING HERE, CREATING NEW LOG FILE AS WE GO... 210 OPEN 1,8,1,"0:ERROR.0,S,W" 220 ... 

Los números de dispositivo, según la documentación establecida, están restringidos al rango [0,16]. Sin embargo, esta limitación proviene de la adaptación específica del protocolo IEEE-488 y, en efecto, se aplica solo a periféricos externos. Con todas las llamadas relevantes del sistema KERNAL vectorizadas, los programadores pueden interceptar llamadas del sistema para implementar dispositivos virtuales con cualquier dirección en el rango de 32,256). Posiblemente, uno puede cargar un controlador de dispositivo binario en la memoria, parchear los vectores de E/S KERNAL y, a partir de ese momento, se podría abordar un nuevo dispositivo (virtual). Hasta ahora, esta capacidad nunca se ha conocido públicamente como utilizada, presumiblemente por dos razones: (1) KERNAL no proporciona medios para asignar dinámicamente ID de dispositivo, y (2) KERNAL no proporciona medios para cargar una imagen binaria reubicable. Por lo tanto, la carga de las colisiones tanto en el espacio de E/S como en el espacio de memoria recae en el usuario, mientras que la compatibilidad de la plataforma en una amplia gama de máquinas recae en el autor del software. No obstante, el software de soporte para estas funciones podría implementarse fácilmente si se desea.

Los formatos lógicos de nombre de archivo tienden a depender del dispositivo específico direccionado. El dispositivo más común utilizado, por supuesto, es el sistema de disquete, que usa un formato similar a MD:NAME,ATTRS, donde M es una especie de bandera ($ para el listado del directorio, @ para indicar el deseo de sobrescribir un archivo si ya existe, sin usar de otra manera), D es el número de unidad de disco físico (opcional) (0: o 1: para sistemas de doble unidad, solo 0: para unidades de disco único como el 1541, et al., que por defecto es 0: si no se especifica), NAME es un nombre de recurso de hasta 16 caracteres de longitud (la mayoría de los caracteres permitidos, excepto ciertos caracteres especiales), y ATTRS es una lista opcional de atributos o indicadores separados por comas. Por ejemplo, si el usuario desea sobrescribir un archivo de programa llamado PRGFILE, podría ver un nombre de archivo como @0:PRGFILE,P usado junto con el dispositivo 8 o 9. Mientras tanto, un nombre de archivo para el controlador RS-232 (dispositivo 2) consta simplemente de cuatro caracteres, codificados en formato binario.[8]

Otros dispositivos, como el teclado (dispositivo 0), el casete (dispositivo 1), la interfaz de pantalla (dispositivo 3) y la impresora (dispositivo 4 y 5), no requieren nombres de archivo para funcionar, suponiendo valores predeterminados razonables o simplemente no los necesitan. en absoluto.

Referencias

  1. Commodore 64 Programmer's Reference Guide. Commodore Business Machines, Inc., 1982, p. 268
  2. The KERNAL jump table, used to access all the subroutines in the KERNAL, is an array of JMP (jump) instructions leading to the actual subroutines. This feature ensures compatibility with user-written software in the event that code within the KERNAL ROM needs to be relocated in a later revision.
  3. «Exploring the VIC-20». 
  4. Kevelson, Morton (January 1986). «Speech Synthesizers for the Commodore Computers / Part II». p. 32. Consultado el 17 de julio de 2014. 
  5. Many of the KERNAL subroutines (e.g., OPEN and CLOSE) were vectored through page three in RAM, allowing a programmer to intercept the associated KERNAL calls and add to or replace the original functions.
  6. The kernel is the most fundamental part of a program, typically an operating system, that resides in memory at all times and provides the basic services. It is the part of the operating system that is closest to the machine and may activate the hardware directly or interface to another software layer that drives the hardware
  7. On The Edge: The Spectacular Rise and Fall of Commodore, page 202.
  8. Commodore 128 Programmers Reference Guide, Commodore Business Machines, Inc., 1986, p. 382

Véase también

  • GEOS, sistema operativo gráfico para la Commodore 64 y 128.

Enlaces externos

  • Historia del comodoro KERNAL
  •   Datos: Q1362489

kernal, nombre, designado, commodore, para, núcleo, sistema, operativo, residente, computadoras, domésticas, bits, desde, original, 1977, seguido, versiones, extendidas, pero, fuertemente, relacionadas, utilizadas, sucesores, commodore, plus, c128, información. KERNAL 1 es el nombre designado por Commodore para el nucleo del sistema operativo residente en ROM en sus computadoras domesticas de 8 bits desde el PET original de 1977 seguido de las versiones extendidas pero fuertemente relacionadas utilizadas en sus sucesores el VIC 20 Commodore 64 Plus 4 C16 y C128 KERNALInformacion generalTipo de programanucleoDesarrolladorCommodore InternationalModelo de desarrollocodigo cerradoEstado actualdiscontinuoInformacion tecnicaPlataformas admitidasCommodore PETCommodore VIC 20Commodore 64Commodore Plus 4Commodore 16Commodore 128 editar datos en Wikidata Indice 1 Descripcion 2 Ejemplo 3 El nombre 4 En E S independientes del dispositivo 5 Referencias 6 Vease tambien 7 Enlaces externosDescripcion EditarEl KERNAL de las maquinas Commodore de 8 bits consta de rutinas del sistema operativo de bajo nivel cercanas al hardware mas o menos equivalentes al BIOS en las PC compatibles con IBM en contraste con las rutinas del interprete BASIC tambien ubicadas en ROM asi como funcionalidad de E S independiente del dispositivo de nivel superior y puede ser llamada por el usuario a traves de una tabla de saltos cuya parte central la mas antigua por razones de compatibilidad con versiones anteriores 2 permanece en gran medida identica en toda la serie de 8 bits La ROM KERNAL ocupa los ultimos 8 KB del espacio de direcciones de los 64 KB de la CPU de 8 bits E000 FFFF La tabla de salto se puede modificar para apuntar a rutinas escritas por el usuario por ejemplo reescribiendo las rutinas de visualizacion de pantalla para mostrar graficos animados o copiando el conjunto de caracteres en la RAM Este uso de una mesa de salto era nuevo para las computadoras pequenas en ese momento 3 Los juegos de Adventure International publicados para el VIC 20 en cartucho son un ejemplo de software que utiliza KERNAL Debido a que solo usan la tabla de salto los juegos pueden descargarse en la memoria del disco cargarse en un Commodore 64 y ejecutarse sin modificaciones 4 El KERNAL fue escrito inicialmente para el Commodore PET por John Feagans quien introdujo la idea de separar las rutinas de BASIC del sistema operativo Fue desarrollado por varias personas especialmente Robert Russell quien agrego muchas de las caracteristicas para el VIC 20 y el C64 Ejemplo EditarLa siguiente subrutina de lenguaje ensamblador 6502 5 escrita en formato sintaxis de ensamblador ca65 proporciona un ejemplo simple pero caracteristico del uso de KERNAL CHROUT ffd2 CHROUT is the address of the character output routine CR 0d PETSCII code for Carriage Return hello ldx 0 start with character 0 by loading 0 into the x index register next lda message x load byte from address message x into the accumulator beq done if the accumulator holds zero we re done and want to branch out of the loop jsr CHROUT call CHROUT to output char to current output device defaults to screen inx increment x to move to the next character bne next loop back while the last character is not zero max string length 255 bytes done rts return from subroutine message byte Hola mundo byte CR 0 Carriage Return and zero marking end of string Este codigo auxiliar emplea la rutina CHROUT cuya direccion se encuentra en la direccion a href Sistema hexadecimal html title Sistema hexadecimal a FFD2 65490 para enviar una cadena de texto al dispositivo de salida predeterminado por ejemplo la pantalla de visualizacion El nombre EditarEl KERNAL era conocido como kernel 6 dentro de Commodore desde los dias de PET pero en 1980 Robert Russell escribio mal la palabra como kernal en sus cuadernos Cuando los escritores tecnicos de Commodore Neil Harris y Andy Finkel recogieron las notas de Russell y las usaron como base para el manual del programador VIC 20 la falta de ortografia los siguio y quedo como estaba 7 Segun el antiguo mito de Commodore e informado por el escritor programador Jim Butterfield entre otros la palabra KERNAL es un acronimo o quizas mas probable un retroacronimo que significa Keyboard Entry Read Network And Link lo que de hecho tiene sentido teniendo en cuenta su papel Berkeley Softworks mas tarde lo uso al nombrar las rutinas centrales de su sistema operativo GUI para computadoras hogarenas de 8 bits el GEOS KERNAL En E S independientes del dispositivo EditarSorprendentemente el KERNAL implemento una API de E S independiente del dispositivo que no es completamente diferente de la de Unix o Plan 9 que nadie exploto hasta donde se sabe publicamente Mientras que uno podria argumentar razonablemente que todo es un archivo en estos ultimos sistemas otros podrian afirmar facilmente que todo es un dispositivo GPIB en el primero Debido a las limitaciones con la arquitectura 6502 en ese momento abrir un canal de E S requiere tres llamadas al sistema El primero generalmente establece el nombre de archivo logico a traves de la llamada SETNAM La segunda llamada SETLFS establece la direccion del dispositivo GPIB IEEE 488 para comunicarse Finalmente se llama a OPEN para realizar la transaccion real Luego la aplicacion utiliza las llamadas al sistema CHKIN y CHKOUT para configurar los canales de entrada y salida actuales de la aplicacion respectivamente Las aplicaciones pueden tener cualquier cantidad de archivos abiertos simultaneamente hasta cierto limite dependiente del sistema por ejemplo el C64 permite que se abran diez archivos a la vez A partir de entonces CHRIN y CHROUT resultan utiles para realizar entradas y salidas respectivamente CLOSE luego cierra un canal Observe que no existe una llamada al sistema para crear un canal de E S ya que los dispositivos no pueden crearse ni destruirse dinamicamente en circunstancias normales Del mismo modo no existen medios para buscar ni para realizar funciones de control de E S como ioctl en Unix De hecho el KERNAL demuestra mucho mas cerca de la filosofia del Plan 9 aqui donde una aplicacion abriria un canal especial de command al dispositivo indicado para realizar tales transacciones meta o out of band Por ejemplo para eliminar scratch un archivo de un disco el usuario normalmente abrira el recurso llamado S0 THE FILE TO RMV en el dispositivo 8 o 9 canal 15 Segun la convencion establecida en el mundo Commodore de 8 bits el canal 15 representa el canal de comando para los perifericos basandose en tecnicas de transmision de mensajes para comunicar comandos y resultados incluidos casos excepcionales Por ejemplo en Commodore BASIC pueden encontrar software similar al siguiente 70 80 REM ROTATE LOGS CURRENTLY OPENED ON LOGICAL CHANNEL 1 90 CLOSE 1 100 OPEN 15 8 15 R0 ERROR 1 0 ERROR 0 REM RENAME FILE ERROR 0 TO ERROR 1 110 INPUT 15 A B C D REM READ ERROR CHANNEL 120 CLOSE 15 130 IF A 0 THEN GOTO 200 140 PRINT ERROR RENAMING LOG FILE 150 PRINT CODE A 160 PRINT MSG B 170 END 200 REM CONTINUE PROCESSING HERE CREATING NEW LOG FILE AS WE GO 210 OPEN 1 8 1 0 ERROR 0 S W 220 Los numeros de dispositivo segun la documentacion establecida estan restringidos al rango 0 16 Sin embargo esta limitacion proviene de la adaptacion especifica del protocolo IEEE 488 y en efecto se aplica solo a perifericos externos Con todas las llamadas relevantes del sistema KERNAL vectorizadas los programadores pueden interceptar llamadas del sistema para implementar dispositivos virtuales con cualquier direccion en el rango de 32 256 Posiblemente uno puede cargar un controlador de dispositivo binario en la memoria parchear los vectores de E S KERNAL y a partir de ese momento se podria abordar un nuevo dispositivo virtual Hasta ahora esta capacidad nunca se ha conocido publicamente como utilizada presumiblemente por dos razones 1 KERNAL no proporciona medios para asignar dinamicamente ID de dispositivo y 2 KERNAL no proporciona medios para cargar una imagen binaria reubicable Por lo tanto la carga de las colisiones tanto en el espacio de E S como en el espacio de memoria recae en el usuario mientras que la compatibilidad de la plataforma en una amplia gama de maquinas recae en el autor del software No obstante el software de soporte para estas funciones podria implementarse facilmente si se desea Los formatos logicos de nombre de archivo tienden a depender del dispositivo especifico direccionado El dispositivo mas comun utilizado por supuesto es el sistema de disquete que usa un formato similar a MD NAME ATTRS donde M es una especie de bandera para el listado del directorio para indicar el deseo de sobrescribir un archivo si ya existe sin usar de otra manera D es el numero de unidad de disco fisico opcional 0 o 1 para sistemas de doble unidad solo 0 para unidades de disco unico como el 1541 et al que por defecto es 0 si no se especifica NAME es un nombre de recurso de hasta 16 caracteres de longitud la mayoria de los caracteres permitidos excepto ciertos caracteres especiales y ATTRS es una lista opcional de atributos o indicadores separados por comas Por ejemplo si el usuario desea sobrescribir un archivo de programa llamado PRGFILE podria ver un nombre de archivo como 0 PRGFILE P usado junto con el dispositivo 8 o 9 Mientras tanto un nombre de archivo para el controlador RS 232 dispositivo 2 consta simplemente de cuatro caracteres codificados en formato binario 8 Otros dispositivos como el teclado dispositivo 0 el casete dispositivo 1 la interfaz de pantalla dispositivo 3 y la impresora dispositivo 4 y 5 no requieren nombres de archivo para funcionar suponiendo valores predeterminados razonables o simplemente no los necesitan en absoluto Referencias Editar Commodore 64 Programmer s Reference Guide Commodore Business Machines Inc 1982 p 268 The KERNAL jump table used to access all the subroutines in the KERNAL is an array of JMP jump instructions leading to the actual subroutines This feature ensures compatibility with user written software in the event that code within the KERNAL ROM needs to be relocated in a later revision Exploring the VIC 20 Kevelson Morton January 1986 Speech Synthesizers for the Commodore Computers Part II p 32 Consultado el 17 de julio de 2014 Many of the KERNAL subroutines e g OPEN and CLOSE were vectored through page three in RAM allowing a programmer to intercept the associated KERNAL calls and add to or replace the original functions The kernel is the most fundamental part of a program typically an operating system that resides in memory at all times and provides the basic services It is the part of the operating system that is closest to the machine and may activate the hardware directly or interface to another software layer that drives the hardware On The Edge The Spectacular Rise and Fall of Commodore page 202 Commodore 128 Programmers Reference Guide Commodore Business Machines Inc 1986 p 382Vease tambien EditarGEOS sistema operativo grafico para la Commodore 64 y 128 Enlaces externos EditarHistoria del comodoro KERNAL Datos Q1362489Obtenido de https es wikipedia org w index php title KERNAL amp oldid 133287462, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos