; Programme pour illustrer l'opération du circuit set/reset utilisé avec ; la donnée du processeur pour modifier 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é INDEX du circuit 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 640x350. ; mov ax,010h int 10h ; mov ax,EGA_VIDEO_SEGMENT mov es,ax ;pointe sur la mémoire vidéo ; ; Affiche 18 barres horizontales de 10 lignes d'affichage de haut en vert ; SETSC SC_MAP_MASK,02h ;le paramétrage 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,18 ;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 barres alternativement rouge et marron, utilisant les données du processeur ; pour paramétrer le plan 1 et set/reset pour paramétrer les plans 0, 2 & 3. ; SETSC SC_MAP_MASK,0fh ;doit positionner map mask pour activer tous ;les plans, les valeurs set/reset peuvent donc ;écrites dans les plans 0, 2 & 3 ;et les données du processeur peuvent être ;écrites dans le plan 1 (le plan vert) SETGC GC_ENABLE_SET_RESET,0dh ;les données du processeur des plans 0, ;2 & 3 seront remplacées par la valeur ;set/reset SETGC GC_SET_RESET,04h ;La valeur set/reset est à 0ffh pour le plan 2 ;(le plan rouge) et à 0 pour les autres plans sub di,di mov cx,80*350/2 ;nombre de mots par écran mov ax,07e0h ;les données du processeur contrôlent ;seulement le plan 1; ;set/reset contrôle les autres plans rep stosw 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 ; ; Quitte vers DOS. ; mov ah,4ch int 21h start endp cseg ends end start