11/4/2014
KERNAL - Wikipedia
KERNAL
Da Wikipedia, l'enciclopedia libera.
Il KERNAL, in informatica, era il kernel del sistema operativo residente nella ROM degli home computer ad 8
bit prodotti da Commodore International.
Indice
1 Storia
2 Caratteristiche tecniche
3 Esempio di codice
4 Note
5 Voci correlate
Storia
Il KERNAL fu scritto inizialmente da John Feagans per il Commodore PET del 1977, che introdusse l'idea di
separare le routine di base del sistema operativo.
È stato poi ulteriormente sviluppato da più persone, in particolare da Robert Russell, che aggiunse molte delle
funzionalità per il VIC-20 e il C64, e poi successivamente nel Commodore VIC-20, Commodore 64,
Commodore 16, Commodore Plus/4 e Commodore 128.
All'inizio del suo sviluppo per il PET, il KERNAL era noto internamente a Commodore come kernel ma nel
1980 Russel sbagliò a scrivere il termine sui suoi appunti segnando kernal. Quando Neil Harris e Andy Finkel,
coloro i quali erano deputati alla stesura della documentazione dei prodotti Commodore, iniziarono a lavorare
sugli appunti di Russell per stilare il manuale del programmatore del VIC-20 non si accorsero dell'errore
ortografico, riportandolo nei documenti ufficiali.[1]
Un'altra versione, riportata dallo scrittore/programmatore Jim Butterfield e da altri, afferma invece che la parola
KERNAL è l'acronimo (o forse l'acronimo inverso) di Keyboard Entry Read, Network, And Link, che infatti
ha un certo senso considerando il ruolo stesso del KERNAL.
Berkeley Softworks usò in seguito il termine per dare un nome alle routine centrali del suo sistema operativo a
GUI per i computer a 8 bit, il GEOS KERNAL.
L'errore fu corretto quando fu sviluppato il sistema operativo per la serie di computer Amiga: l'Amiga ROM
Kernel utilizzava la trascrizione esatta.
Caratteristiche tecniche
Il KERNAL consisteva delle routine di basso livello, vicine all'hardware della macchina (a differenza delle
routine di alto livello dell'interprete BASIC, anch'esse residenti in ROM), chiamabili tramite una jump table, di
cui la parte centrale, per ragioni di retrocompatibilità, rimase nel corso degli anni sempre la stessa per tutti i
computer della serie ad 8 bit.[2]
La ROM del KERNAL occupava gli ultimi 8 KB dei 64 KB di spazio indirizzi della CPU (da $E000 a
$FFFF). Diverse routine del KERNAL erano chiamabili attraverso una jump table presente nella pagina 3 della
http://it.wikipedia.org/wiki/KERNAL
1/3
11/4/2014
KERNAL - Wikipedia
RAM (indirizzi $0300-$0333): le chiamate a queste routine potevano essere intercettate semplicemente
modificando gli indirizzi presenti nella jump table di modo che puntassero a versioni modificate o sostitutive delle
stesse, scritte dall'utente.[3]
Esempio di codice
Un semplice, caratteristico, esempio dell'utilizzo del KERNAL è dato dal seguente codice in assembly 6502
(scritto con l'assembler ca65):
CHROUT = $ffd2
CR
= $0d
;
hello:
ldx #0
next:
lda message,x
beq done
jsr CHROUT
inx
bne next
; CHROUT invia un carattere al dispositivo di output corrente
; codice PETSCII per "Ritorno carrello"
; inizia con il carattere in posizione 0
; legge il carattere X-esimo del messaggio
; uscita dal ciclo quando viene letto un byte a zero
; chiamata a CHROUT per visualizzare il carattere sul dispositivo di output
; (generalmente lo schermo)
; prossimo carattere
; cicla finché l'indice non è zero (lunghezza max. della stringa 255 byte)
done:
rts
; esce dalla subroutine
;
message:
.byte "Hello, world!"
.byte CR, 0
; Ritorno carrello e 0 marcano la fine della stringa
Questo esempio di codice utilizza la routine CHROUT, che si trova all'indirizzo esadecimale $FFD2(65490), per
inviare una stringa di testo al dispositivo di output corrente (generalmente rappresentato dallo schermo).
Note
1. ^ Brian Bagnall, On The Edge: The Spectacular Rise and Fall of Commodore, Variant Press, 2006, p. 202.
ISBN 9780973864908.
(EN)
(IT)
« The kernel is the most fundamental part of a
« Il kernel è la parte più fondamentale di un
program, typically an operating system, that
programma, normalmente un sistema operativo,
resides in memory at all times and provides the
che risiede in memoria per tutto il tempo e che
basic services. It is the part of the operating
fornisce i servizi di base. È la parte del sistema
system that is closest to the machine and may
operativo che è più vicina alla macchina e che
activate the hardware directly or interface to
può attivare l'hardware direttamente oppure
another software layer that drives the
interfacciarsi con un altro livello software che
hardware. »
gestisce l'hardware. »
2. ^ Brian Bagnall, On The Edge: The Spectacular Rise and Fall of Commodore, Variant Press, 2006, p. 202.
ISBN 9780973864908.
(EN)
(IT)
« The kernal jump table, used to access all the
« La jump table del kernal, utilizzata per accedere
subroutines in the kernal, was an array of JMP
a tutte le subroutine del kernal, era un vettore di
(jump) instructions leading to the actual
istruzioni JMP (salto) che portavano alle
subroutines. This feature ensured compatibility
subroutine vere e proprie. Questa caratteristica
with user-written software in the event that code
assicurava la compatibilità con il software scritto
within the kernal ROM needed to be relocated in
dall'utente nel caso in cui il codice all'interno della
a later revision. »
ROM del kernal fosse stato, in versioni
http://it.wikipedia.org/wiki/KERNAL
2/3
11/4/2014
KERNAL - Wikipedia
successive, spostato per necessità. »
3. ^ Brian Bagnall, On The Edge: The Spectacular Rise and Fall of Commodore, Variant Press, 2006, p. 202.
ISBN 9780973864908.
(EN)
(IT)
« Many of the kernal subroutines (e.g., OPEN
« Molte delle subroutine del kernal (ad esempio
and CLOSE) were vectored through page three in OPEN e CLOSE) erano vettorizzate tramite la
RAM, allowing a programmer to intercept the
pagina tre in RAM, permettendo ad un
associated kernal calls and add to or replace the
programmatore di intercettare le chiamate al
original functions. »
kernal associate ed aggiungere o sostituire le
funzioni originali. »
Voci correlate
Commodore International
Kernel
John Feagans
Jim Butterfield
Robert Russell
Sistema operativo
Portale Informatica: accedi alle voci di Wikipedia che trattano di Informatica
Categorie: Commodore Sistemi operativi storici
Questa pagina è stata modificata per l'ultima volta il 26 gen 2014 alle 22:47.
Il testo è disponibile secondo la licenza Creative Commons Attribuzione-Condividi allo stesso modo;
possono applicarsi condizioni ulteriori. Vedi le Condizioni d'uso per i dettagli. Wikipedia® è un marchio
registrato della Wikimedia Foundation, Inc.
http://it.wikipedia.org/wiki/KERNAL
3/3