Go to the FreeLists Home Page Home Signup Help Login
 



Browse zxspectrum: This Month's ArchiveMain Archive PageRelated postsPrevious by DateNext by Date

[zxspectrum] Re: loader

  • From: Paolo Ferraris <pieffe8@xxxxxxxxxxxxx>
  • To: zxspectrum@xxxxxxxxxxxxx
  • Date: Fri, 10 Sep 2004 15:42:40 -0500
Non e` facile non far scrivere sullo schermo il nome di un file che sta per eseere caricato. O si passa in maniera headerless (non possibile in BASIC) o si "annulla" lo stream dello schermo (l'ho visto fare una sola volta e non mi ricordo come si faccia), o ci si accontenta di settare ink e paper dello stesso colore. Il nome non compare ma purtroppo un' "impronta" di 17 caselle vuote compare comunque. La cosa funziona se c'e` una riga vuota nella schermata. Come nei primi giochi Ultimate.

Dal listato, credo che la schermata in questione abbia le ultime due righe vuote. Sfortunatamente, normalmente non si puo` scrivere in queste due righe. Infatti, quando dalla 22a si va a capo, abbiamo lo scrolling dello schermo. C'e` comunque un trucco legato alla variabile di sistema all'indirizzo 23659. Essa indica quante righe della parte bassa dello schermo sono assegnate al "bordo", o canale #1 o della tastiera che dir si voglia. Normalmente e` due, ma puo` incrementare se si scrive molto nella parte bassa dello schermo con PRINT #1 .

Se si setta questa variabile a 0 si puo` scrivere anche sulle ultime righe alla stessa maniera delle prime 22. Infatti l'istruzione PRINT AT 22,0; che segue il POKE normalemte avrebbe dato errore (l'ultima riga normalmente valida e` la 21). Il LOAD""CODE andra` quindi a scrivere il nome del file in nero su nero alla linea 22.

Purtroppo con il valore 0 il BASIC diventa instabile. Per esempio in caso di CLS o di errore del BASIC il computer si pianta. Settare questa variabile a 0 era anche quindi uno dei metodi piu` diffusi per proteggere programmi BASIC: se premi CAPS-SPACE un messaggio un messaggio di errore comparirebbe, ma in questa maniera si pianta tutto.

-p


Matteo wrote:

10 CLEAR 32767
20 BORDER 0: PAPER 0: INK 0: CLS: LOAD "" SCREEN$
30 POKE 23659,0: PRINT AT 22,0;
40 LOAD "" CODE
60 PAPER 0: INK 7: CLS
70 PRINT "debug": BEEP .5,2
100 RANDOMIZE USR 32768



Ma quale sarebbe la funzione della POKE alla linea 30?

Scusate se salto di palo in frasca, ma su Load'n'Run o Run, ricordo, c'erano
(anzi ci sono) spesso dei punti dopo avere finito di caricare uno SCREEN$
caricava il blocco successivo con header, ma inverosimilmente il nome del
blocco (bytes : xyz) non imbrattava lo SCREEN$ stesso, il quale rimaneva
tale e quale; anche avendo voluto provare con un PRINT AT x,y: INK z: CLS:
LOAD "" CODE non avrebbe dovuto rovinare, se così si può dire, la schermata
di presentazione, specie quelle multicolori, dove una qualsiasi delle
posizioni scelte non sarebbe servita allo scopo di mascherare l'intestazione
dell'header? è stata per caso fatta un'operazione di "over" o qualcosa del
genere? se sì come? scusate ma sono arruginito di molto...

La domanda mi è venuta in mente non appena ho letto il listato e
rileggendolo attentamente la linea 30 potrebbe suggerire forse la risposta
al mio quesito. Ho ragione?








Other related posts:

  • [zxspectrum] loader
  • [zxspectrum] Re: loader
  • [zxspectrum] Re: loader
  • [zxspectrum] Re: loader
  • [zxspectrum] Re: loader
  • [zxspectrum] Re: loader
  • [zxspectrum] Re: loader
  • [zxspectrum] Re: loader
  • [zxspectrum] Re: loader
  • [zxspectrum] Re: loader
  • [zxspectrum] Re: loader
  • [zxspectrum] Re: loader
  • [zxspectrum] Re: loader
  • [zxspectrum] Re: loader
  • [zxspectrum] Re: loader
  • [zxspectrum] Re: loader
  • [zxspectrum] Re: loader
  • [zxspectrum] Re: loader
  • [zxspectrum] Re: loader
  • [zxspectrum] Re: loader




  • [ Home | Signup | Help | Login | Archives | Lists ]

    All trademarks and copyrights within the FreeLists archives are owned by their respective owners.
    Everything else ©2008 Avenir Technologies, LLC.