Vistas de página en total

lunes, 26 de agosto de 2013

LIBRERIA WINDOW (2/2)

      Esta librería nos va a permitir dibujar una ventana en pantalla de texto con un título de cabecera.
      La función solo dibuja la ventana, No rellena los datos dentro ni la refresca. Tampoco toma el fondo ni lo repone. Esto lo deberá hacer una función de más nivel.
      La impresión se hace en memoria de pantallas para mayor rapidez. Posteriormente esta función se podrá usar en funciones superiores como mover ventana.



DRAW_WIN.MAC 
; Copyright (C) 2013  José Ángel Moneo Fernández

;    This program is free software: you can redistribute it and/or modify
;    it under the terms of the GNU General Public License as published by
;    the Free Software Foundation, either version 3 of the License, or
;   (at your option) any later version.

;    This program is distributed in the hope that it will be useful,
;    but WITHOUT ANY WARRANTY; without even the implied warranty of
;    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;    GNU General Public License for more details.

;    You should have received a copy of the GNU General Public License
;    along with this program.  If not, see <http://www.gnu.org/licenses/>.
;programa de generacion de ventana con marco y titulo
;macro prototipo en window.mac

include stdio.mac
include string.mac

  
.model compact,pascal
.data
i db 0 .code
        extrn _cls_window:near
        public _draw_win
_draw_win proc near  uses bx cx dx si di, FsCiz,FinCde,Texto,color:byte
        mov ax,FsCiz         ;borra ventana mediante
        push ax              ; implementamos la macro para aprovechar los
        mov ax,FinCde        ;parámetros ya en pareja
        push ax
        mov ah,_color
        mov al,0
        push ax   
        mov al,2
        call _cls_window      
        mov dx,FsCiz
        mov bx,FinCde
        sub bx,dx
for i,0,bh
      push dx
      gotoxy dl,dh
      putchar 186
      add dl,bl
      gotoxy dl,dh
      putchar 186
      pop dx
      inc dh
next i

        mov dx,FsCiz
        gotoxy dl,dh
        putchar 201
        call pline
        putchar 187
        add dh,bh
        gotoxy dl,dh
        putchar 200
        call pline
        putchar 188
        mov di,texto
        strlen [di]
        shr ax,1
        shr bl,1
        mov bh,0     ;un uno en el caso de otra cabecera
        sub bx,ax
        add bx,FsCiz
        gotoxy bl,bh
        puts [di]

        ret
_draw_win endp
pline proc near
        push bx
bucle:
        cmp bl,1
        je salir
        putchar 205
        dec bl
        jmp bucle
salir:
        pop bx
        ret
pline endp
ends
end

No hay comentarios:

Publicar un comentario

Si tienes algún comentario, duda o sugerencia, o si quieres aportar algún código creado a partir de las librerías expuestas aquí, por favor, indícamelo.