Défilement de l'écran avec synchronisation à partir du spot lumineux (lu dans 3DAh).
Les points sont affichés au "hasard" grâce à un calcul de l'offset vidéo basé sur le contenu de l'adresse 40:6Ch.
Si quelqu'un peut me dire précisément à quoi correspond cette adresse,
le temps réel du PC, ca veut dire quoi ?
A compiler avec nasm.
Source / Exemple :
BITS 16
ORG 0x0100
SEGMENT .text
mov ax,0A000h ; définition des segments vidéo
mov ds,ax
mov es,ax
mov ax,40h ; segment compteur temps réel du pc
mov gs,ax
mov ax,0013h ; passage en mode graphique 320*200
int 10h
call efface ; efface l'écran
mov si,0
xor bl,bl
debut:
mov cx,0 ; compteur : nombre de remontée du spot
test_montee: ; teste la montée du spot
mov dx,3dah
in al,dx
and al,8
jnz test_montee
test_descente: ; test la descente du spot
in al,dx
and al,8
jz test_descente
inc cx
cmp cx,1 ; vitesse de défilement (augmenter la valeur du compteur pour ralentir)
jb test_montee
hasard:
add si,[gs:6Ch] ; offset choisi au "hasard" (compteur temps réel)
mov [es:si],bl ; écriture de la couleur dans la mémoire vidéo
inc bl ; couleur suivante
cmp bl,255
jb defilement
xor bl,bl
defilement:
push si
std
mov si,64000-2
mov di,64000-2+320
mov cx,64000
shr cx,1
rep movsw
mov si,64000-2
mov di,320-2
mov cx,320
shr cx,1
rep movsw
pop si
touche:
mov ah,0Bh ; test si il y a un caractère
int 21h
or al,al ; si AL=0, aucun caractère n'est disponible
je debut
mov ah,8 ; Un caractère est disponible. Lecture
int 21h ; Caractère lu dans AL
mov ax,0003h ; retour au mode texte
int 10h
mov ax,4C00h
int 21h
efface:
cld
mov di,0
xor al,al
mov cx,64000
rep stosb
ret
Conclusion :
J'ai pu écrire ce programme grace au site ABC de la programmation
http://opecheux.free.fr/, merci.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.