Articolo pubblicato sul n. 64 di MCmicrocomputer (Edizioni Technimedia Srl - Roma) nel giugno 1987

MCmicrocomputer


Commodore 128:
Orologi, Pixel, Kernal

di Andrea de Prisco

 128 da zero questo mese trattera' di interrupt, di CIA, di Rom, di grafica ed altro. Presenteremo un comodo orologio in tempo reale (non soggetto cioe' a ritardi a causa di operazioni di I/O), da tenere costantemente acceso in un angolo dello schermo, piu' un pacchetto grafico "640x200 in 320x200" che permette a chi non dispone di un monitor di visualizzare una finestra di alta risoluzione sul proprio TV. Ma il bello di questo risiedeCopertina del numero di MCmicrocomputer contenente l'articolo nel fatto che il lettore (primo tra tutti) e' riuscito a smanettare nel Basic del 128 fino ad inserire dei nuovi comandi. Complimenti.

Per finire, a chi si occupa di programmazione in linguaggio macchina, dedichiamo un riquadro con alcune routine Kernal del 128 non trattate precedentemente.

 

Orologio R.T.

di Adriano Asnaghi - Mestre (VE)

 

L'integrato CIA 6526 contenuto all'interno del 128 (per l'esattezza cercando bene ne troviamo due) dispone di un orologio interno in formato Ore-Minuti-Secondi-DecimiDiSecondo, indipendente dalle altre attivita' della macchina. Per questo motivo e' detto "in tempo reale": non e' il processore a farlo avanzare ma e' interno al CIA "a tutti gli effetti". Basta settare l'orario, utilizzando appositi registri, e dare il via al conteggio. La routine in linguaggio macchina inviataci dal lettore di Mestre, incuneandosi nella normale procedura di scansione della tastiera (processo che, tramite il meccanismo degli interrupt, avviene in parallelismo simulato all'elaborazione in corso) permette la visualizzazione continua nell'angolo in alto a destra dello schermo 40 colonne. Effettuando operazioni I/O che prevedono la disabilitazione degli interrupt, potremo notare qualche ritardo nella visualizzazione, ma non nel conteggio.

Una volta digitato il codice esadecimale mostrato in figura 1, e mandato in esecuzione il programma basic di  listato 1 (di inizializzazione) per ottenere l'orologio sara' sufficiente un:

 

SYS 3072

 

per ripristinare la normale routine di interrupt (e conseguentemente togliere l'orologio) basta digitare:

 

SYS 3075

 

Il listato 2 mostra il disassemblato commentato della routine orologio. Per finire, come lo stesso autore raccomanda, per non far interferire l'orologio con i comandi da noi impartiti e' bene definire un window a partire dalla seconda riga con il comando:

 

WINDOW 1,0,24,39

 

 

(omissis)

 

 

 

 


640x200 in 320x200

 di Enrico Ceppi - Meda (MI)

 

Il secondo lettore, ci invia un tool di istruzioni Basic atte a visualizzare una finestra larga 320 pixel della pagina grafica ad alta risoluzione, come noto, larga 640 pixel. Cio' puo' essere utile quando non si dispone di un monitor ma solo di un televisore. Lasciamo a lui la parola:

 

 

(omissis)

 

 

 

 

Routine Kernal

 

Commenteremo brevemente alcune routine kernal non trattate precedentemente. Come noto, chi programma in linguaggio macchina, ha quasi sempre la necessita' di interagire col sistema operativo della macchina per compiere operazioni implementate da questo. Un esempio classico sono le funzioni di I/O, cosi' come l'editing, la gestione della memoria, del video o della tastiera.

 

 Nome: C64 MODE

Indirizzo: $FF4D

Descrizione: Permette di passare al modo 64 da linguaggio macchina. Nessuna conferma e' richiesta da parte del sistema.

 

Nome: PHOENIX

Indirizzo: $FF56

Descrizione: Provoca la partenza a freddo della macchina: Se il drive e' collegato al 128 e' tentato il boot del dischetto in esso contenuto.

 

Nome: SWAPPER

Indirizzo: $FF5F

Descrizione: Equivale alla sequenza ESC+X: permette di dirigere l'output sullo schermo 40 o 80 colonne.

 

Nome: DLCHR

Indirizzo: $FF62

Descrizione: Copia il generatore dei caratteri nella video ram del processore video a 80 colonne 8563. Si usa per ripristinare i caratteri dopo aver usato la grafica 640x200.

 

Nome: CINIT

Indirizzo: $FF81

Descrizione: Inizializza i due processori video (40 e 80 colonne), i tasti funzione, pulisce i due schermi video e mostra il cursore nello schermo selezionato dal tasto 40/80 DISPLAY.

 

Nome: RESTOR

Indirizzo: $FF8A

Descrizione: Inizializza i vettori di sistema locati a partire dall'indirizzo esadecimale $0314.

Nome: READST

Indirizzo: $FFB7

Descrizione: Immette nell'accumulatore il valore della variabile di stato ST.

 

Nome: SETTIM

Indirizzo: $FFDB

Descrizione: Scrive nelle locazioni A0..A2 (orologio di sistema in 60-esimi di secondo) il contenuto dei registri A, X, Y.

 

Nome: RDTIM

Indirizzo: $FFDE

Descrizione: Immette nei registri A, X, Y il valore dell'orologio interno.

 

Nome: STOP

Indirizzo: $FFE1

Descrizione: Una chiamata a questa routine permette di stabilire (testando di seguito il bit di ZERO) se e' stato premoto il tasto di STOP. Il bit e' settato in caso affermativo, resettato in caso negativo.

 

Nome: CLALL

Indirizzo: $FFE7

Descrizione: Chiude tutti i file precedentemente aperti.

 


Impaginato originale...


  Clicca per ingrandire...
Clicca per ingrandire... Clicca per ingrandire...
Clicca per ingrandire... Clicca per ingrandire...

Articolo pubblicato su www.digiTANTO.it - per ulteriori informazioni clicca qui