Una direzione è semplice: locate 1,25:print. Ma come posso scorrere verso l’alto o persino di lato senza POKE e idealmente senza CALL (quest’ultimo è davvero possibile?)
La mia demo è già a buon punto con ben 8 effetti in “Basic puro” ![]()
Una direzione è semplice: locate 1,25:print. Ma come posso scorrere verso l’alto o persino di lato senza POKE e idealmente senza CALL (quest’ultimo è davvero possibile?)
La mia demo è già a buon punto con ben 8 effetti in “Basic puro” ![]()
Puoi usare il codice di controllo 11 per spostare il cursore verso l’alto. Se questo accade al limite della finestra, il contenuto della finestra scorrerà (soft scroll). Se non hai specificato alcuna finestra, l’intero schermo scorrerà se il cursore si trova nella prima riga dello schermo.
Lo scorrimento morbido (soft-scrolling) orizzontale (per quanto ne so) non funzionerà in BASIC, ma potresti usare lo scorrimento hardware tramite i registri CRTC con i comandi OUT.
Inviare comandi ai registri del CRTC tramite le istruzioni Out è generalmente il modo in cui si fa. Non vedo perché questo non debba essere considerato «puro BASIC».
È semplicemente un mio “pallino” ![]()
O come la mettiamo con Peek e Poke?
In realtà è ancora BASIC - ed è proprio così che sul C64 vengono spiegati gli sprite, ecc.
Ma è proprio questo il punto per me: mostrare cosa è possibile fare senza routine “puramente interne”, cioè quelle cose che gli sviluppatori rendono accessibili direttamente tramite comando.
Out è davvero una via di mezzo, visto che è un mezzo di comunicazione.
Call è invece una chiamata diretta a una routine interna. Purtroppo, finora, non riesco a farne del tutto a meno…
Sul C64 puoi fare il poke direttamente nei registri. Sul CPC, invece, un poke modificherà solo i dati nella RAM, ma non cambierà alcun registro. Per quello dovrai usare OUT.
Certo, è pur sempre un comando BASIC, ma usando OUT stai paciugando direttamente con l’hardware e devi capire cosa sta succedendo perché il BASIC non compenserà le tue azioni. Ad esempio, la posizione dello schermo cambierà e un LOCATE 1,1 avrà una posizione diversa sullo schermo dopo uno scroll via OUT. È questo che intendevo.
Quella del chr 11 funziona alla grande! Si possono fare davvero un sacco di cose fighe. ![]()
E un ultimo rapido consiglio: puoi premere CONTROL+K sulla tastiera per inserire il codice di controllo 11 all’interno di una stringa. Invece di print chr$(11) avrai print “↑” nel tuo codice, che è un po’ più veloce di chr$.
Questo andrà probabilmente nella versione finale. Programmo sul PC in un editor di testo - lì diventa un po’ più difficile.
Ma quello che ho già sembra interessante ![]()