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

Soyez le premier à donner votre avis sur cette source.

Vue 6 208 fois - Téléchargée 462 fois

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

Ajouter un commentaire

Commentaires

Bombela
Messages postés
225
Date d'inscription
mardi 4 mars 2003
Statut
Membre
Dernière intervention
30 juillet 2008
-
pfontaine59:

Je fais mon propre système d'exploitation... C'est ce qui m'interresse...

@+
cs_habib111
Messages postés
1
Date d'inscription
samedi 11 décembre 2004
Statut
Membre
Dernière intervention
11 décembre 2004
-
ben je ss encore debutant je cherche encore je commence par rassembler le bagage de la porgrammtion en assembleur
pfontaine59
Messages postés
2
Date d'inscription
mardi 7 septembre 2004
Statut
Membre
Dernière intervention
18 septembre 2004
-
Excuses moi, mais je suis encore débutant ...
Ou plutôt je me suis interessé à l'assembleur
y a une vingtaine d'année !!!
A l'époque du 6809 ...
Je m'y remet aujourd'hui, je commence donc par le bios.
Et toi à quoi t'interresses tu (si c'est pas indiscret ...) ?
Bombela
Messages postés
225
Date d'inscription
mardi 4 mars 2003
Statut
Membre
Dernière intervention
30 juillet 2008
-
Je sais plus, et ma doc est trop loin...

Je m'interresse plus au BIOS ni au DOS...
Trop vieux....

@+
pfontaine59
Messages postés
2
Date d'inscription
mardi 7 septembre 2004
Statut
Membre
Dernière intervention
18 septembre 2004
-
Ok merci pour l'info.
Cette valeur est codé sur combien d'octets ?

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.