Défilement d'écran, hasard et temporisation par le spot

Description

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.

Codes Sources

A voir également

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.