; Programme pour illustrer l'opération du circuit set/reset pour forcer ; le paramétrage de la mémoire qui contient déjà des données. ; Assemblé avec TASM 4.0, lié avec TLINK 6.10 ; Testé par Jim Mischel 11/21/94 ; stack segment para stack 'STACK' db 512 dup(?) stack ends ; EGA_VIDEO_SEGMENT equ 0a000h ;segment de la mémoire vidéo d'EGA ; ; registre EGA équivaut à. ; SC_INDEX equ 3c4h ;registre index SC SC_MAP_MASK equ 2 ;registre map mask SC GC_INDEX equ 3ceh ;registre index GC GC_SET_RESET equ 0 ;registre set/reset GC GC_ENABLE_SET_RESET equ 1 ;registre enable set/reset GC ; ; Macro pour positionner le registre indexé INDEX du circuit SC à SETTING. ; SETSC macro INDEX, SETTING mov dx,SC_INDEX mov al,INDEX out dx,al inc dx mov al,SETTING out dx,al dec dx endm ; ; Macro pour positionner le registre INDEX de la puce GC à SETTING. ; SETGC macro INDEX, SETTING mov dx,GC_INDEX mov al,INDEX out dx,al inc dx mov al,SETTING out dx,al dec dx endm ; cseg segment para public 'CODE' assume cs:cseg start proc near ; ; Sélectionne le mode graphique 640x480. ; mov ax,012h int 10h ; mov ax,EGA_VIDEO_SEGMENT mov es,ax ;pointe sur la mémoire vidéo ; ; Affiche 24 barres horizontales d'une hauteur de 10 lignes d'affichage en vert, 10 lignes d'affichage en vert. ; SETSC SC_MAP_MASK,02h ;le paramétrage de map mask active seulement ; le plan 1, le plan vert sub di,di ;démarre au début de la mémoire vidéo mov al,0ffh mov bp,24 ;nombre de barres à afficher HorzBarLoop: mov cx,80*10 ;nombre d'octets par barre horizontale rep stosb ;affiche une barre add di,80*10 ;pointe sur le début de la prochaine barre dec bp jnz HorzBarLoop ; ; Remplit l'écran de bleu, en utilisant set/reset pour forcer le plan 0 à 1 et ; tous les autres plans à 0. ; SETSC SC_MAP_MASK,0fh ;doit positionner map mask pour activer ; tous les plans, les valeurs set/reset ;peuvent donc être écrites en mémoire SETGC GC_ENABLE_SET_RESET,0fh ;les données du processeur de tous les ;plans seront remplacées par la valeur ;set/reset SETGC GC_SET_RESET,01h ;la valeur set/reset est à 0ffh pour le ;plan0(le plan bleu) et à 0 pour les ;autres plans sub di,di mov cx,80*480 ;nombre d'octets par écran mov al,0ffh ;comme set/reset est activée pour tous ;les plans, la donnée du processeur est ;ignorée ;seule l'écriture est importante rep stosb ;remplit (affecte tous les plans) ; ; Désactive set/reset. ; SETGC GC_ENABLE_SET_RESET,0 ; ; Attend une touche clavier. ; mov ah,1 int 21h ; ; Restaure le mode texte. ; mov ax,03h int 10h ; ; Retourne vers DOS. ; mov ah,4ch int 21h start endp cseg ends end start