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
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.