[zxspectrum] R: Re: 48<->128, Nastro<->Drive

  • From: "BODRATO Stefano" <Stefano.Bodrato@xxxxxxxxxxxxxxxx>
  • To: <zxspectrum@xxxxxxxxxxxxx>
  • Date: Mon, 15 Sep 2003 17:31:03 +0200

>[...variabili in memoria...]
>> Avresti bisogno
>> > di definire un puntatore ad intero tutte le volte che definisci un
>> > intero, valorizzandolo con l'indirizzo di quest'ultimo!
>> 
>> Infatti è così, solo che lo fa automaticamente il compilatore. Non per
>> niente in C quelle variabili si chiamano "automatiche". E, 
>> sempre in C,
>> vengono allocate nello stack. Mentre la memoria allocata dinamicamente
>> normalmente appartiene ad uno spazio che viene chiamato heap.

Su Z88DK di default generiamo un file binario compreso di area allocata per 
"malloc" (un #pragma all'interno del sorgente).
Sporco ma molto portabile.  Per lo Spectrum devo prima o poi dare un giro di 
vite, ma "malloc" non si usa poi tanto quanto sembra; certo ci dobbiamo dare da 
fare per sfruttare le pagine dello ZX128... !


>Ti posso assicurare che il compilatore Cobol che utilizzo abitualmente
>sul mainframe OS390 ragiona in modo completamente differente.
>Evidentemente le differenze tra le piattaforme (che io ritenevo dovute
>al solo ambiente operativo) si estendono invece anche al tipo di
>linguaggio utilizzato.
>Interessante!

COBOL è un discorso a parte su tutte le piattaforme.  Certo, su MainFrame è 
diventato un'istituzione... ma è un mondo incredibile, per chi non lo ha 
visto/vissuto.
- SYSIPT (riga di comando: tipicamente MAX 80 caratteri, detta anche "LETTORE 
DI SCHEDE"!!), - "working storage" e regole di "posizionamento sulle colonne" 
del COBOL (uguale anche su UNIX e PC), per la serie "dimmi da che colonna 
cominci a scrivere e ti dirò che cos'è".
- Terminali: la CPU non sa neanche che hai premuto un tasto, a meno che non sia 
"INVIO" (NEWLINE è un tasto diverso) o un tasto funzione.
- BATCH: la CPU, si dimentica di te finchè non la fai ripartire (vedi terminali

>> Sì, normalmente era così. Ma il sistema operativo dello Spectrum mette
>> comunque a disposizione delle chiamate per allocare e 
>> rilasciare memoria
>> dinamica. Forse in qualche caso venivano utilizzate.
>Intendi la rom dell'interfaccia I?

No, si riferisce a tutto, programma compreso.
Se, ad esempio fai un ciclo:
10 INPUT a$
20 GO TO 10
... la variabile occupa dinamicamente lo spazio necessario, dipendente da quel 
che si inserisce.
Altro esempio: un "nostro" programmino ibrido BASIC-L/M spianava le linee di 
programma da 9000 a 9999 e le caricava da disco con un MERGE.  Più dinamico di 
così... comodo per un gioco in BASIC multilivello, no ?



Other related posts: