--- Enrico Maria Giordano <e.m.giordano@xxxxxxxxxxxxxxx> wrote: > > > "FALCO CESARE (BAM - 00541)" wrote: > > > > > Penso che tutti noi, scoprendo per la prima volta l'assurda > > > organizzazione del display file dello Spectrum, abbiamo sognato una > > > pagina video più lineare. :-) > > > > io no... :^) > > L'apparente illogicita' della disposizione dava pero' la possibilita' > > di stampare molto velocemente un carattere in una cella di schermo > > (basta incrementare il byte alto dell'indirizzo). > > Sì, ma il tempo guadagnato lo perdevi abbondantemente per calcolare la > posizione del primo byte. > Mica vero. Lo schermo e' diviso in tre blocchi da 2K. Che cominciano agli indirizzi 4000H, 4800H, 5000H Se metti in DE le coordinate della cella 0 <= E <= 1F# la colonna 0 <= D <= 17# la riga Per ottenere l'indirizzo del primo byte della cella in HL fai LD HL, 4000# ; Inizio dell'area schermo LD A, D ; Prendi la riga AND 18# ; Cosi' ottieni 0 per il primo terzo di schermo ; 8 per il secondo terzo ; 16 per il terzo. ADD H, A ; Adesso HL punta a 4000# o 4800# o 5000# E la parte alta del puntatore e' sistemata. Ora si tratta di calcolare la parte bassa del puntatore. LD A, D AND 7# ; La riga modulo 8 SRL ; x 2 SRL ; x 4 SRL ; x 8 SRL ; x 16 SRL ; x 32 ADD A, E ; Aggiungi la colonna LD L, A ; E ora in HL c'e' l'indirizzo del primo byte della cella. Non mi pare difficile. E forse si puo' ulteriormente migliorare quella moltiplicazione per 32. ===== // // In a world without walls and fences // you would not need windows and gates. // (Confucio) == P'n'P: http://cnn.com/TECH/computing/9804/20/gates.comdex/index.html __________________________________ Do you Yahoo!? Protect your identity with Yahoo! Mail AddressGuard http://antispam.yahoo.com/whatsnewfree