4 COULEURS |
|
La HP48 serait-elle dépassée par des calculateurs quatre couleurs? Non certainement pas, la HP48 sait répondre a toutes vos attentes, et mieux pour surpasser les quatre couleurs il y a les teintes de gris qui vont vous permettre d'afficher des images de toute beauté!
Allez, c'est parti pour des images en quatre teintes de gris (noir, gris foncé, gris clair et blanc). mais rien ne vous empêche ensuite de travailler en huit (voir plus) teintes de gris car la technique sera la même.
La HP48 ne sait afficher que du noir ou du blanc, qu'à ne cela tienne, on va lui apprendre a afficher du gris! Comment? Tout simplement en usant d'un habile stratagème qui consiste à afficher successivement et très rapidement deux images. En fait on va afficher une premiere image puis une seconde et enfin encore une fois la seconde. Quelques explications: si un pixel est noir aussi bien sur la première que sur la seconde image, il sera toujours noir donc on ne verra que du noir (rien de plus logique jusqu'ici). De même si le pixel est blanc aussi bien sur la première que sur la seconde image on verra du blanc. Et le gris alors... justement si le pixel est noir sur la première image et blanc sur la seconde il sera affiché un tiers du temps noir et deux tiers du temps blanc donc il paraîtra gris clair; au contraire si le pixel est blanc sur la première image et noir sur la seconde image il paraîtra gris foncé. Simple non?
Bon ce que vous attendez c'est le source qui vous permettra de vraiement vous éclater, alors le voici le voila!
| GOSBVL | #0679B | Sauve les registres RPL | |
| INTOFF | |||
| ST=0 | 15 | ||
| GOSBVL | #01BD7 | Eteint les indicateurs | |
| A=DAT1 | A | Aa = adresse prologue du grob | |
| A=A+10 | A | Aa = adr prologue grob + 20 | |
| A=A+10 | A | Aa = adr données première image | |
| LC(5) | #00880 | Ca = 880h = 2176 = 34quartets par lignes * 64 lignes | |
| C=C+A | A | Ca = ard données première image + 2176 | |
| B=C | A | Ba = adr données seconde image | |
| ?ABIT=0 | 1 | Adr grob paire? | |
| GOYES | Skip | alors on ne modifie rien sinon... | |
| LC(1) | #C | ||
| D0=(5) | #00100 | D0 = #00100 = pointeur marge à gauche | |
| DAT0=C | 1 | ||
| D0=(2) | #25 | D0 = #00125 = pointeur marge à gauche | |
| LC(3) | #FFF | ||
| DAT0=C | X | ||
| :Skip | |||
| D0=(2) | #28 | D0 = #00128 = pointeur hauteur menu | |
| LC(2) | #3F | Cb = #3F = 63 | |
| DAT0=C | B | Mise à 63 de la hauteur menu <=> dissimulation | |
| D0=(2) | #29 | D0 = #00129 | |
| D1=(5) | #00120 | D1 = #00120 = pointeur adresse du début de la bitmap écran | |
| :Loop | |||
| ABEX | A | ||
| GOSUB | Retrace | Attend le retour de balayage | |
| GOSUB | Retrace | Attend le retour de balayage | |
| ABEX | A | ||
| GOSUB | Retrace | Attend le retour de balayage | |
| GOSBVL | #00C74 | Pose la carry si touche [ON] enfoncée | |
| GONC | Loop | Touche on non enfoncée, alors on boucle | |
| GOSBVL | #01C7F | Recalcule les pointeurs graphiques | |
| GOSBVL | #01BA9 | Rallume les indicateurs | |
| INTON | |||
| GOVLNG | #05143 | Récupère les registres RPL et retour au RPL | |
| :Retrace | |||
| C=DAT0 | 1 | ||
| ?CBIT=1 | 1 | ||
| GOYES | Wait | ||
| :RetraceBis | C=DAT0 | 1 | |
| ?CBIT=0 | 1 | ||
| GOYES | WaitBis | ||
| DAT1=A | A | ||
| RTN |
Pour vous simplifier la vie voici deux petits fichiers à télécharger: