Mprint4.asm

Description

Routine d affichage en mode texte accer directe a la mémoire
routine pour ODO vectra OS 32b .

Source / Exemple :


; Procedure mprint  4.00 (c)Usils and Laruse software 160208 for OS: ODO vectra RMIS (r)2010
; Entrée    :ax=service (?)
;           :ch=mode (0=mono / 1=couleur) - cl=attribut(couleur)
;           :bh=colone(x) - bl=ligne(y)
;           :ds:dx=adresse du texte a afficher
; Sortie    :aucune
; r.s       :cf,ax,bx,cx,dx,si,ds,es
; Flag      :-
Mprint     proc  
            push ax
            push bx
            push cx
            push dx
            push si
            push fs
	 Cli
            mov si,dx
            xor ax,ax
            cmp bh,1             ; bh>0 x=x-1
            jb short ml1
            dec bh
 ml1:       cmp bl,1             ; bl>0 y=y-1
            jb short ml2
            dec bl
 ml2:       or ah,0b0h           ; memoire mono b000
            and ch,3             ; mode 0,1,2
            or ch,ch             ; ch=0 mode mono
            jz short mono
            or ah,08h            ; couleur memoire b800
 mono:      mov fs,ax
 calcul:    xor ax,ax
            or al,bl             ; variable multiplicateur bl(y[ligne])
            mov dx,160           ; y>0 y=y*160 (80x2)
            mul dx
            mov dx,ax
            xor ax,ax
            or al,bh
            shl ax,1             ; x=x*2
            add ax,dx            ; ofs=((y*160)+(x*2))
            mov di,ax
 Rchar:     mov al,ds:[si]       ; al=char
 c0:        or al,al
            jz short mfin        ; si char=0 fin
 c1:        cmp al,1
            jne short c2
            xor bh,bh            ; comme char(13) Cr x=1 y=1+160
            inc bl
            inc si
            jmp short calcul
 c2:        cmp al,2
            jne short c3
            inc si
            mov cl,ds:[si]       ; change atribut couleur
            inc si
            mov al,ds:[si]
            jmp short cf
 c3:        cmp al,3             ; repet char
            jne short c4
            push ax
            push cx
            xor ch,ch
            inc si
            mov cl,ds:[si]       ; nombre de repetision
            inc si
            mov ax,ds:[si]       ; char a repeter+couleur
 cpi:       mov fs:[di],ax       ; affiche char+attribut
            add di,2
            loop short cpi       ; cl=cl-1 if cl>0 loop
            inc si
            inc si
            pop cx
            pop ax
            jmp short Rchar
 c4:        cmp al,4
            jne short c5
            inc si
            mov bx,ds:[si]
            xchg bh,bl
            add si,2
            jmp short calcul
 c5:
 cf:        mov fs:[di],al       ; print char
            inc di               ; attribut
            mov fs:[di],cl       ; print couleur
            inc di
            inc si               ; ofs char +1
            jmp short Rchar      ; on recomence
 mfin:   Sti  
	    pop fs
            pop si
            pop dx
            pop cx
            pop bx
            pop ax
            ret
Mprint     endP

Conclusion :


Heu !!!!

bonne utilisation...
Ruze/
contacte ruse2011@gmx.com

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.