Corso di AMOS
Torna all'elenco delle lezioni LEZIONE 7: La Memoria

Con Amos è possibile conoscere la quantità di memoria che si ha a disposizione, usando tre semplici comandi.


=Chip Free
Ritorna la memoria chip libera in bytes.


=Fast Free
Ritorna la memoria fast libera in bytes.


=Free
Ritorna la memoria libera per le variabili.

Es.:

If (Fast Free+Chip Free)<512 Then Close Editor

Se la memoria disponibile è inferiore a 512 bytes allora chiude l'editor in modo da guadagnare qualche bytes in più.


-BANCHI DI MEMORIA-

Amos mette a disposizione del programmatore delle zone di memoria facilmente allocabili e riconoscibili chiamate Banchi di Memoria.
I banchi di memoria vengono inseriti nel programma e per vedere quelli presenti basta andare nel modo diretto e digitare il comando List Bank; in questo modo verranno visualizzati i banchi che sono presenti in memoria. Possono essere addirittura salvati assieme al listato, oppure separatamente in normali files che per convenzione usano come estensione '.ABK'. Amos prevede 15 banchi messi a disposizione per sprites, musica, icone, samples, schermate grafiche, assembler etc.
Vediamo insieme la gestione di questi banchi che sono indispensabili per la buona riuscita di un programma che fa largo utilizzo di grafica e sonoro.


Bank Swap b,b1
Scambia il contenuto del banco b con quello del banco b1. E' utile per esempio quando si fa utilizzo di due o più musiche, infatti i banchi musicali vengono sistemati nel banco 3, per cambiare musica sarà quindi sufficiente scambiare il banco 3 col banco contenente un'altro brano.


Bload file$ [n]
Carica tutti i banchi di memoria presenti nel file file$ o solo il banco n (utile per copiare file: apro il file, ne calcolo la lunghezza, riservo un banco di memoria adeguato, carico il file con Bload e lo salvo).


Bsave file$ s to e
Salva nel file$ il banco di memoria che inizia all'indirizzo s e finisce all'indirizzo e. E' utile usare per s Start(n) e per Start(n)+ Lenght(n).


Erase n
Cancella dalla List Bank il banco di memoria n. Nella versione 2.0 di Amos esiste anche il comando Erase All, il quale cancella tutti i banchi presenti in memoria.


Get Sprite Palette
Preleva la palette (i colori con rispettive posizioni) degli sprite, dal banco 1.


=Lenght(n)
Ritorna in decimale la lunghezza in bytes del banco di memoria n (o il numero di sprite).


List Bank
Mostra i banchi di memoria presente. Si usa comunemente nel modo diretto e la descrizione è fornita nel modo seguente:

N. - Descrizione - Start - Lunghezza - N. Sprite o Icone.


Load file$ [n]
Carica i banchi di memoria contenuti in file$ oppure solamente il banco da sistemare nella posizione n.


Reserve As type n,lenght
Rieserva in memoria lo spazio adatto per il banco di memoria n del tipo type e di lunghezza lenght (il tipo può essere: Work (Mamoria Fast), Chip Work (Memoria Chip), Data (Memoria Fast), Chip Data (Memoria Chip)).


Save File$ [n]
Salva il banco di memoria n oppure, omettendo n, tutti i banchi presenti in memoria in un file chiamato file$.


=Start(n)
Ritorna in decimale l'indirizzo iniziale del banco di memoria n.


Unpack b to s
Riservato ai banchi contenenti delle immagini, decompatta l'immagine contenuta nel banco b, e la fa apparire nello schermo s.

LISTA DEI BANCHI DI MEMORIA

* Questi banchi possono essere allocati solo nelle posizioni sopra citate, infatti i comandi inerenti agli sprites e bobs, alle icone, alla musica ed all'Amal, cercano i propri dati all'interno dei banchi nelle loro rispettive posizioni. Mentre, per gli altri banchi, i comandi sono strutturati in modo da decidere quale posizione usare.


-IL TESTO IN AMOS-

Rispetto agli altri Basic, Amos offre all'utente moltissimi comandi davvero potenti: si può variare il tipo di scrittura, posizionare il testo ad un qualsiasi pixel sullo schermo, può cambiare il colore del cursore, cambiare addirittura la forma del cursore, memorizzare una specifica posizione del testo (come i più moderni Word Processors) e così via.
Si deve notare che alcuni dei seguenti comandi presentano doppia versione, in formato comando e in formato codice di controllo. Un'istruzione in formato comando è una normale istruzione; un'istruzione in formato codice di controllo è particolare perchè rappresenta una stringa.
I vantaggi sono facilmente deducibili: se si vuole stampare una determinata stringa in un colore diverso da quello scelto con Pen, non bisognerà ricorrere per ogni sua visualizzazione al suddetto comando, ma basterà inserire una sola volta all'interno della stringa il corrispondente codice di controllo, che diventerà parte integrante della stringa.
Per esempio se voglio stampare la stringa a$ nel colore 2, mentre il colore di default è 5, non devo ogni volta immettere la riga:

Pen 2 : Print A$ : Pen 5

ma basterà immettere la prima volta:

A$=Pen$(2)+"TESTO"+Pen$(5)

e poi semplicemente stampare la stringa con Print A$. Il risparmio è notevole!!!


Curs On/Off
Attiva e disattiva il cursore. Da usare prima di cancellare lo schermo col comando Cls.


Cdown$
Codice di controllo corrispondente al comando Cdown (si inserisce in una stringa).


CDown
Sposta il cursore in basso di una riga.


Cleft$
Codice di controllo corrispondente a Cleft.


Cleft
Sposta il cursore a sinistra di una colonna.
N.B.: Puoi inserirlo nei cicli di For...Next per spostare il cursore di molte posizioni.


Cline [n]
Cancella la linea corrispondente senza modificare la posizione del cursore; se viene inserito il parametro n verranno cancellati n caratteri dalla linea attuale della posizione del cursore in poi.


Cmove x,y
Muove il cursore di tanti pixel in orizzontale e in verticale come indicato (se x e/o y sono negative i movimenti saranno rispettivamente verso sinistra e verso l'alto).


Cright$
Codice di controllo di Cright.


Cright
Sposta il cursore a destra di una colonna.
N.B. Puoi inserirlo nei cicli di For...Next per spostare il cursore di molte posizioni.


Cup$
Codice di controllo per il comado Cup.


Cup
Sposta il cursore in alto di una riga.


Curs Pen n
Cambia il colore del cursore con quello indicato in n.


Gr Writing n
Questo comando (da non usare con Print ne Circle, ecc., ma con Text e con Bar, ecc.) permette di scegliere il modo di visualizzazione della grafica e del testo; di default n=1 (modo JAM2), cioè il testo (N.B. da stampare con Text e non con Print) o la grafica appaiono nel colore di primo piano e sullo sfondo del colore selezionati con INK; se n=0 (modo JAM1), il testo o la grafica appaiono nel colore di primo piano prescelto con Ink senza lo sfondo; se n=4 (modo INVERSEVID) lo sfondo del testo o della grafica sarà del colore di primo piano scelto con INK e coprirà il resto, mentre il testo o la grafica vera e propria saranno invisibili (N.B. per creare l'ombra si può preparare uno sfondo con del testo, tracciare un rettangolo in modo Xor e poi tracciarne un altro sfasato di poco in modo JAM1).

Es.:

Ink2,5 : Text 140,180,"TESTO NORMALE" Gr Writing 4+1 : Text 140,100,"Inversevid+Jam2"


Home
Posiziona il cursore alla riga 0 ed alla colonna 0. Equivale al codice di controllo AT(0,0).


Inverse On/Off
Attiva e disattiva il modo Inversevid per il testo. Da usare con Print e Locate.


Memorize x/y
Memorizza la coordinata x o y del cursore di testo. Utile se devi effettuare molte operazioni e non vuoi sprecare molta memoria con ulteriori variabili.


Paper$(n)
Codice di controllo che appartiene ad una stringa e che determina il colore di backgound del testo.


Paper n
Rende lo sfondo del testo del colore specificato in n.


Pen$(n)
Codice di controllo di Pen


Pen n
Rende il colore primario del testo con la palette n.


Remember
Ritorna la coordinata x o y del cursore di testo mamorizzata.


Repeat$(a$,n)
Codice di controllo che ripete la stringa a$ per n volte dalla posizione del cursore in poi.


Set Curs L1,L2,...L8
Permette di definire la forma del cursore mediante un pattern di 8 righe (decimale,esadecimale o binario); per avere un cursore quadrato impostare le 8 righe a %11111111 o a $FF.


Set Tab n
Imposta ad n il numero di spazi che vengono lasciati quando viene premuto il tasto Tab o quando viene usato il codice di controllo Tab$.


Shade On/Off
Attiva e disattiva il modo di retinato per la scrittura del testo (N.B.: da usare con Print e Locate).


Tab$
Codice di controllo che stampa un numero di spazi pari a quelli impostati con Set Tab; è consigliabile usarlo con il ; in unione con stringhe.


Underline On/Off
Attiva e disattiva il modo sottolineato per il testo (N.B.: da usare con Print e Locate).


Writing w1 [,w2]
Cambia il modo di scrittura; w1 può variare da 0 a 4, compreso, e ritorna rispettivamente i seguenti modi: REPLACE(default), OR, XOR, AND, IGNORE; w2 fa scegliere quale parte del testo deve essere interessata: 0 è di default, 1 disegna sullo schermo solo il background, 2 ignora il testo su una sfondo di colore 0.


=Xcurs
Ritorna la coordinata x del cursore di testo.


=Xgraphic(colonna)
Indica la coordinata orizzontale, in pixel, della colonna indicata.


=Xtext
Indica in quale colonna si trova il pixel indicato.


=Ycurs
Ritorna la coordinata y del cursore di testo.


=Ygraphic(pixel)
Indica la coordinata verticale, in pixel, della riga specificata.


=Ytext(pixel)
Indica su quale riga si trova il pixel indicato.


Hscroll n
Comando per lo scroll in orizzontale (si intende scroll di un carattere); n può variare da 1 a 4 e rispettivamente comporta:

  1. scroll a sx della riga corrente;
  2. scroll a sx di tutta la finestra;
  3. scroll a dx della riga corrente;
  4. scroll a dx di tutta la finestra.


Vscroll n
Comando per lo scroll verticale (si intende scroll di un carattere); n può variare da 1 a 4 e rispettivamente comporta:

  1. scroll in basso di tutta la finestra dalla posizione del cursore in poi;
  2. scroll in basso del testo compreso fra l'inizio e la posizione del cursore, da dove scompare;
  3. scroll in alto dalla posizione del cursore in poi;
  4. cancella la linea del cursore e scrolla quella inferiore in alto.


Text x,y,tx$
Posiziona la stringa tx$ al pixel (x,y);
N.B. da usare con Gr Writing, utilizza di default il font di sistema; per posizionare correttamente il testo, controllare la linea di base del font.


-GESTIONE DEI FONTS-

Per conoscere meglio quali fonts sono disponibili nel cassetto FONTS: di sistema, per poterli settare, per conoscere l'altezza, Amos Basic offre all'utente dei comandi tanto semplici quanto veloci. Puoi anche impostare tutti gli attributi che desideri: grassetto, corsivo outline ecc.


Get Rom Fonts
Produce una lista di fonts presenti nella Rom e le dispone nell'array di sistema FONT$(); se non è disponibile il file LIBS/FONTS.library, Amos Basic va in Crash!


=Font$(n)
Ritorna una stringa di 38 caratteri del font numero n; usa questa funzione coi comandi Get Font. Il contenuto caratteri è nel seguente formato:

1...29 nome font
30...33 altezza del font
34...37 identificatore del font (rom o disc).


Get Disc Font
Produce una lista dei fonts presenti su disco e le dipone nell'array FONT$(n).


Set Font n
Setta il font numero n; da usare preferibilmente con Text e solo dopo un comando Get Fonts.


Set Text style
Selezione lo stile di scrittura del testo; per style=1 si ha l'UNDERLINE, con 2 si ha il BOLD, con 4 si ha l'ITALIC. Sono possibili tutte le combinazioni (per es. per style=1+2+4 si hanno tutti gli stili).


=Text Lenght(t$)
Ritorna la lunghezza in pixel della stringa t$.
N.B.: non va usato in operazioni algebriche; da ricordare che i fonts a passo fisso misurano 8x8 pixels.


=Text Base
Ritorna in pixels la base del font corrente; è utile per posizionare con esattezza il testo all'inizio o alla fine dello schermo con Text; il numero di pixel ritornato indica la distanza fra l'estremità superiore del testo e la linea di base, esclusi i discendenti.
N.B.: se con Text ti posizioni al pixel (0,0) verranno stampati solo i discendenti del font. Dunque per stampare un testo nell'estremità superiore sinistra dello schermo ci si deve posizionare al pixel (0,8).


=Text Style
Ritorna lo stile del testo fissato in precedenza con il comando Set Text; il risultato è un bit-map nello stesso formato di quello usato in Set Text.


-CURISARIO-

Prima di concludere volevo aggiungere alcune importanti considerazioni sull'ultimo argomento trattato e cioè i fonts, e sulle estensioni.
I comandi per i fonts sopra elencati sono eccellenti, non danno problemi e quindi si possono usare con tutta tranquillità, ma sono comunque diventati obsoleti. Usando questi comandi per assegnare un font, si costringe Amos a perlustrare l'intera directory Fonts del nostro sistema, chiaramente più essa è piena e più è il tempo che serve per settare un font; è comprensibile che anche se questa cosa capita solamente al primo settaggio, risulta sempre fastidiosa. Il problema si supera solo utilizzando i comandi più moderni e funzionali messi a disposizione da altre estensioni.

Ma cosa sono queste estensioni di cui si sente spesso parlare? Tutti i comandi che stiamo spiegando, sono contenuti dentro dei file chiamati estensioni; controllando con DOpus oppure dal semplice WB la directory principale di Amos, si noterà sicuramente una sotto-directory chiamata APSystem dentro la quale sono presenti dei file con indirizzo finale '.lib'. Questi files sono le nostre estensioni; Amos per default contiene solo quelle indispensabili, ma ne esistono molte altre che aggiunte alla APSystem e correttamente configurate, permettono di ampliare sensibilmente il parco comandi già di per se vasto di Amos aggiungendo moltissime altre funzioni che semplificano tantissimo la vita dell'utente, ad esempio, come sopra citato, una gestione più rapida e funzionale dei fonts, oppure comandi per effetti grafici, gestione della data e dell'orologio e tante altre novità ancora.

Molte estensioni si trovano in Aminet, alcune delle quali sono gratuite mentre altre richiedono la registrazione, senza la quale il programma non può essere compilato ma funziona solo da editor. Per usufruire di queste nuove estensioni basta copiare il file principale (quello con indirizzo finale '.lib') nella directory 'APSystem', poi successivamente bisogna caricare Amos, scegliere l'ultima voce del menù 'Config' e cioè 'Set Interpreter'. Fatto cio apparirà una gui nella quale dovrete premere in successione su 'Load Default Configuration' e 'Set Loaded Extensions'. Vi apparirà così una prospetto delle estensioni che Amos usa attualmente.
Ogni estensione ha una sua posizione esatta che viene sempre indicata nei suoi files doc, ed esempio l'estensione 3D va solo nella posizione 4, quindi se si dovesse configurare tale estensione sarebbe sufficiente fare un click sulla posizione 4 e all'apparire del cursore scrivere il nome esatto del file '.lib' copiato nell'APSystem; fatto ciò salvate la configurazione, uscite da Amos, ricaricatelo e si avvierà con i comandi della nuova estensione attivi. E' possibile vedere quali estensioni sono attive anche selezionando la seconda voce del menù 'Amos'.

Bene! La settima lezione termina qui; la prossima lezione tratterà la gestione delle FINESTRE, le FUNZIONI MATEMATICHE, ultimo baluardo prima di entrare nel momento direi più interessante del corso e cioè l'uso degli schermi, il caricamento delle vostre immagini IFF, la gesione dei colori per giungere finalmente agli spites e alla musica.

In attaccato vi mettiamo due piccoli esempi.

Alla prossima lezione.


 Il corso di AMOS è scritto da:   Impaginazione by:
Barbieri Adriano
& Joseph Lombardo
Trombini Davide

[Index]    [6° Lezione]    [8° Lezione]


Copyright AMiWoRLD