Kernal: Nucleo del sistema operativo dei computer Commodore ad 8 bit

Il KERNAL (acronimo per Keyboard Entry Read, Network, And Link) è il nome del kernel del sistema operativo residente nella ROM degli home computer a 8 bit prodotti da Commodore International.

Kernal: Storia, Caratteristiche tecniche, Esempio di codice Disambiguazione – Se stai cercando il nucleo dei sistemi operativi, a volte trascritto incorrettamente "Kernal", vedi Kernel.

Storia

Il KERNAL nacque per il Commodore PET del 1977 e successivamente fu integrato anche nei Commodore VIC-20, Commodore 64, Commodore 16, Commodore Plus/4 e Commodore 128. Fu inizialmente scritto da John Feagans, che introdusse l'idea di separare le routine di base del sistema operativo e fu poi ulteriormente sviluppato da più persone, in particolare da Robert Russell, che aggiunse molte delle funzionalità per il VIC-20 e il C64.

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.

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 consiste in 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 a 8 bit.

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 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.

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          ; CHROUT invia un carattere al dispositivo di output corrente CR      = $0d            ; codice PETSCII per "Ritorno carrello"  ; hello:         ldx #0           ; inizia con il carattere in posizione 0 next:         lda message,x    ; legge il carattere X-esimo del messaggio         beq done         ; uscita dal ciclo quando viene letto un byte a zero         jsr CHROUT       ; chiamata a CHROUT per visualizzare il carattere sul dispositivo                          ; di output corrente (generalmente lo schermo)         inx              ; prossimo carattere         bne next         ; cicla finché il carattere letto non vale 0 - fine stringa                          ; (lunghezza max. della stringa 255 byte) done:         rts              ; esce dalla subroutine ; message:         .byte "Hello, world!"         .byte CR, 0      ; Ritorno carrello e 0, 0 è il marcatore di fine 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

(IT)

«Il kernel è la parte più fondamentale di un programma, normalmente un sistema operativo, che risiede in memoria per tutto il tempo e che fornisce i servizi di base. È la parte del sistema operativo che è più vicina alla macchina e che può attivare l'hardware direttamente oppure interfacciarsi con un altro livello software che gestisce l'hardware.»

  • ^ Brian Bagnall, On The Edge: The Spectacular Rise and Fall of Commodore, Variant Press, 2006, p. 202, ISBN 978-0-9738649-0-8.
    (EN)

    «The kernal jump table, used to access all the subroutines in the kernal, was an array of JMP (jump) instructions leading to the actual subroutines. This feature ensured compatibility with user-written software in the event that code within the kernal ROM needed to be relocated in a later revision.»

    (IT)

    «La jump table del kernal, utilizzata per accedere a tutte le subroutine del kernal, era un vettore di istruzioni JMP (salto) che portavano alle subroutine vere e proprie. Questa caratteristica assicurava la compatibilità con il software scritto dall'utente nel caso in cui il codice all'interno della ROM del kernal fosse stato, in versioni successive, spostato per necessità.»

  • ^ Brian Bagnall, On The Edge: The Spectacular Rise and Fall of Commodore, Variant Press, 2006, p. 202, ISBN 978-0-9738649-0-8.
    (EN)

    «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.»

    (IT)

    «Molte delle subroutine del kernal (ad esempio OPEN e CLOSE) erano vettorizzate tramite la pagina tre in RAM, permettendo ad un programmatore di intercettare le chiamate al kernal associate ed aggiungere o sostituire le funzioni originali.»

  • Bibliografia

    Voci correlate

    Kernal: Storia, Caratteristiche tecniche, Esempio di codice  Portale Informatica: accedi alle voci di Wikipedia che trattano di Informatica

    This article uses material from the Wikipedia Italiano article KERNAL, which is released under the Creative Commons Attribution-ShareAlike 3.0 license ("CC BY-SA 3.0"); additional terms may apply (view authors). Il contenuto è disponibile in base alla licenza CC BY-SA 4.0, se non diversamente specificato. Images, videos and audio are available under their respective licenses.
    ®Wikipedia is a registered trademark of the Wiki Foundation, Inc. Wiki Italiano (DUHOCTRUNGQUOC.VN) is an independent company and has no affiliation with Wiki Foundation.

    Tags:

    Kernal StoriaKernal Caratteristiche tecnicheKernal Esempio di codiceKernal NoteKernal BibliografiaKernal Voci correlateKernal8 bitCommodore InternationalHome computerKernelRead-only memorySistema operativo

    🔥 Trending searches on Wiki Italiano:

    Corrado AugiasJoël DickerLisa GastoniCartesioTorino27 marzoLa prima cosa bella (film)The OffspringAlessandro MagnoAssociazione Sportiva RomaStreptococcusBeetlejuice - Spiritello porcelloCiaoKeanu ReevesJohn BonhamCittà d'ItaliaIl sesso degli angeli (film 2022)Jimi HendrixRiccardo SchicchiCastel GoffredoRobert PlantFerruccio LamborghiniAnatomia di una cadutaVanina - Un vicequestore a CataniaBresciaBall gagLucas PaquetáAnnalisa (cantante)LondraEpisodi di Studio Battaglia (seconda stagione)Pagina principaleCall My Agent - ItaliaISIS-KTim BurtonL'assedio di SiracusaDisastro aereo delle AndeTodd PhillipsGhali (rapper)ItaliaNapoliGiacomo CampiottiPartito Democratico (Italia)Nicolò ZanioloBettino CraxiAndy MurrayIl gladiatoreStati Uniti d'America1970Virus (biologia)Michael JordanElisabetta II del Regno UnitoPastiera napoletanaGabriella SaittaFutbol Club BarcelonaThe Notorious B.I.G.Non aprite quella portaEd GeinSergio LeoneAnimali fantastici (serie di film)Heath LedgerShining (film)Taylor SwiftDaniela MelchiorClaudio CastrogiovanniCesare Cremonini (cantante)Liu CixinAntonio AngelucciElisabetta CanalisGuerre stellari (film)John BradleyL'ispettore DalglieshPiero FerrariOrtonaAlexander ZverevMilanoCarl BarksAlessandro Borghi (attore)Francesca Albanese🡆 More