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

Soyez le premier à donner votre avis sur cette source.

Vue 6 566 fois - Téléchargée 541 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
11 déc. 2004 à 19:05
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
11 déc. 2004 à 15:18
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
18 sept. 2004 à 08:20
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
17 sept. 2004 à 13:11
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
16 sept. 2004 à 18:00
Ok merci pour l'info.
Cette valeur est codé sur combien d'octets ?
Afficher les 6 commentaires

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.