*-------------------------------------------------------------------------
* FICHERO:  Wset_asm
* OBJETIVO: Definir la extensin WSET. Su funcionamento ser:
*           1. Limpiar la pantalla completa
*           2. Redefinir las ventanas 0, 1 y 2
*           3. Poner un borde a las ventanas 0, 1 y 2
* AUTOR: Pedro Reina
* FECHA: M.28.7.1998
* ENSAMBLADOR: Metacomco
*-------------------------------------------------------------------------

*-------------------------------------------------------------------------
* Definiciones de ventana que se usarn
* WINDOW #0,512,42,0,214 : WINDOW #1,512,213,0,0 : WINDOW #2,512,213,0,0
* FOR i=0 TO 2 : PAPER #i, 0 : INK #i, 7 : CSIZE #i, 0,0 : BORDER #i, 1,4
*-------------------------------------------------------------------------

*-------------------------------------------------------------------------
* MACRO:    QDOS
* OBJETIVO: Realizar una llamada a un trap del sistema
* ENTRADAS: Valor en D0 y nmero de trap
*-------------------------------------------------------------------------

QDOS      macro                    Comienza definicin de macro
          moveq   #\1,d0           El primer parmetro pasa a D0
          trap    #\2              Llamada al trap indicado por el segundo
          endm                     Fin de macro

*-------------------------------------------------------------------------
* Enganchamos la definicin de WSET al SuperBASIC
*-------------------------------------------------------------------------

start     lea.l   define,a1        Apunta al nombre del procedimiento
          move.w  $110,a2          Rutina por vector BP_INIT
          jmp     (a2)             Acta la rutina
          rts                      Volver a SuperBASIC

*-------------------------------------------------------------------------
* Nombre de procedimientos y funciones
*-------------------------------------------------------------------------

define    dc.w    1                Un procedimiento
          dc.w    wset-*           Direccin donde encontrarlo
          dc.b    4,'WSET'         Nombre
          dc.w    0                Fin de procedimientos
          dc.w    0,0              Ninguna funcin

*-------------------------------------------------------------------------
* PROCEDIMIENTO: WSET
*-------------------------------------------------------------------------

* Obtenemos en A0 el identificador de la ventana 0

wset      move.l  $30(a6),a2       BV_CHBAS en A2
          move.l  0(a6,a2.l),a0    Identificador en A0

* Redefinimos la ventana 0

          moveq   #-1,d3           Timeout
          move.b  #0,d1            Borde negro
          move.w  #0,d2            De 0 pixels de ancho
          lea.l   VenT,a1          Apunta a la definicin de ventana
          QDOS    $d,3             SD_WDEF

* Limpiamos la ventana 0, que es toda la pantalla

          move.b  #0,d1            Papel negro
          QDOS    $27,3            SD_SETPA
          QDOS    $20,3            SD_CLEAR

* Redefinimos la ventana 0

          move.b  #4,d1            Borde verde
          move.w  #1,d2            De 1 pixel de ancho
          lea.l   Ven0,a1          Apunta a la definicin de ventana
          QDOS    $d,3             SD_WDEF

          move.b  #7,d1            Tinta blanca
          QDOS    $29,3            SD_SETIN

          move.b  #0,d1            Strip negro
          QDOS    $28,3            SD_SETST

          move.w  #0,d1            Anchura de los caracteres, 0
          move.w  #0,d2            Altura de los caracteres, 0
          QDOS    $2d,3            SD_SETSZ

* Obtenemos en A0 el identificador de la ventana 1

          moveq   #40,d0           40 en D0
          move.l  $30(a6),a2       BV_CHBAS en A2
          adda.l  d0,a2            Sumamos D0 en A2
          move.l  0(a6,a2.l),a0    Identificador en A0

* Redefinimos la ventana 1

          move.b  #4,d1            Borde verde
          move.w  #1,d2            De 1 pixel de ancho
          lea.l   Ven1,a1          Apunta a la definicin de ventana
          QDOS    $d,3             SD_WDEF

          move.b  #0,d1            Papel negro
          QDOS    $27,3            SD_SETPA

          move.b  #7,d1            Tinta blanca
          QDOS    $29,3            SD_SETIN

          move.b  #0,d1            Strip negro
          QDOS    $28,3            SD_SETST

          move.w  #0,d1            Anchura de los caracteres, 0
          move.w  #0,d2            Altura de los caracteres, 0
          QDOS    $2d,3            SD_SETSZ

* Obtenemos en A0 el identificador de la ventana 2

          moveq   #80,d0           80 en D0
          move.l  $30(a6),a2       BV_CHBAS en A2
          adda.l  d0,a2            Sumamos D0 en A2
          move.l  0(a6,a2.l),a0    Identificador en A0

* Redefinimos la ventana 2

          move.b  #4,d1            Borde verde
          move.w  #1,d2            De 1 pixel de ancho
          lea.l   Ven2,a1          Apunta a la definicin de ventana
          QDOS    $d,3             SD_WDEF

          move.b  #0,d1            Papel negro
          QDOS    $27,3            SD_SETPA

          move.b  #7,d1            Tinta blanca
          QDOS    $29,3            SD_SETIN

          move.b  #0,d1            Strip negro
          QDOS    $28,3            SD_SETST

          move.w  #0,d1            Anchura de los caracteres, 0
          move.w  #0,d2            Altura de los caracteres, 0
          QDOS    $2d,3            SD_SETSZ

* Fin del procedimiento

          rts

*-------------------------------------------------------------------------
* Parmetros de la ventana que ocupa toda la pantalla
*-------------------------------------------------------------------------

VenT      dc.w    512              Anchura
          dc.w    256              Altura
          dc.w    0                Origen X
          dc.w    0                Origen Y

*-------------------------------------------------------------------------
* Parmetros de la ventana 0
*-------------------------------------------------------------------------

Ven0      dc.w    512              Anchura
          dc.w    42               Altura
          dc.w    0                Origen X
          dc.w    214              Origen Y

*-------------------------------------------------------------------------
* Parmetros de la ventana 1
*-------------------------------------------------------------------------

Ven1      dc.w    512              Anchura
          dc.w    215              Altura
          dc.w    0                Origen X
          dc.w    0                Origen Y

*-------------------------------------------------------------------------
* Parmetros de la ventana 2
*-------------------------------------------------------------------------

Ven2      dc.w    512              Anchura
          dc.w    215              Altura
          dc.w    0                Origen X
          dc.w    0                Origen Y

*-------------------------------------------------------------------------
* Fin del cdigo
*-------------------------------------------------------------------------

          end
