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