;;  FICHERO PARA LA INCLUSIąN DE LAS FUNCIONES DE GRAPH.LIB
;;                NAVI DJ.    VILAMARXANT 1996
;;      ---------- Alternativa mediante CALLs ----------

extrn DBorraPantalla:near
extrn DPonPixel:near
extrn DCogePixel:near
extrn DLinea:near
extrn DCreaVirtual:near
extrn DDestVirtual:near
extrn DCopiaPantalla:near
extrn DTrataError:near
extrn DCargaSprite:near
extrn DDibujaSprite:near
extrn DDestSprite:near
extrn DVaciaMEM:near
extrn DfDibujaSprite:near
extrn DfLinea:near
extrn DfPonPixel:near
extrn DfCogePixel:near
extrn DfBorraPantalla:near
extrn DCogeColor:near
extrn DPonColor:near
extrn DCogePaleta:near
extrn DPonPaleta:near
extrn DFadeDown:near
extrn DCargaPaleta:near
extrn DFadeUp:near
extrn DFadeTo:near
extrn DBlackOut:near
extrn DCargaCel:near
extrn DCargaAnima:near
extrn DPonFrameAnima:near
extrn DfPonFrameAnima:near
extrn DDestAnima:near
extrn DInsertaDirSprite:near
extrn DInsertaDirAnima:near
extrn DSegmentoSprite:near
extrn DSegmentoAnima:near
extrn DSegmentoPal:near
extrn DSegmentoPV:near
extrn DInsertaDirPV:near
extrn DInsertaDirPal:near
extrn DDescompPuntos:near
extrn DDescompWorm:near
extrn DfCaja:near
extrn DCaja:near
extrn DfRectangulo:near
extrn DRectangulo:near
extrn DPoligono:near
extrn DfPoligono:near
extrn DCreaSprite:near
extrn DCambiaSprites:near
extrn DGetImagen:near
extrn DfGetImagen:near
extrn DCirculo:near
extrn DfCirculo:near
extrn DLeePCX:near
extrn DDestPaleta:near
extrn DLeeBMP:near
extrn DPlayFLI:near
extrn DInicGRAPH:near
extrn DEndGRAPH:near
extrn DCargaFuente:near
extrn DCambiaTipo:near
extrn DQueTipo:near
extrn DEscLetra:near
extrn DCogeFuenteDOS:near
extrn DSetCursor:near
extrn DGetCursor:near
extrn DEscribe:near
extrn DLeeLetra:near
extrn DLeeLetraEcho:near
extrn DLeeByte:near
extrn DLeeCadena:near
extrn DLeeWord:near
extrn DEscByte:near
extrn DEscWord:near
extrn DWrite:near
extrn DNuevoArchivo:near
extrn DLeeEntrada:near
extrn DLeeTrozo:near
extrn DLongitudFile:near
extrn DFlipCopy:near
extrn DFlip:near
extrn DSegmentoFuente:near
extrn DSetStart:near
extrn DDoblaLineas:near
extrn DSetVSPixels:near
extrn DPideXMS:near
extrn DLiberaXMS:near
extrn DGetAddress:near
extrn DMaximaXMS:near
extrn DGuardaFlat:near
extrn DCargaFlat:near
extrn DCargaBloque:near
extrn DCargaMapa:near
extrn DDestBloque:near
extrn DDestMapa:near
extrn DDibujaMapa:near
extrn DPosMapa:near
extrn DInsertaDirBloque:near
extrn DInsertaDirMapa:near
extrn DSegmentoBloque:near
extrn DSegmentoMapa:near
extrn DResetGRAPH:near
extrn DModoGrafico:near
extrn DModoTexto:near
extrn DCreaMapa:near
extrn DCreaBloque:near
extrn DDestFuente:near
extrn DInsertaDirFuente:near
extrn DGetSysInfo:near

extrn Aleatorio:near

extrn LERROR:near                       ;  La variable de errores.
extrn Registro:near                     ;  El n§ de campo total.

INCLUDELIB GRAPH

;;  Funciones y macros adicionales de utilidad.

LiberaMEM       PROC                    ;  Funci¢n que libera la memoria
                MOV     BX, SS          ; reservada por el DOS a nuestro
                MOV     AX, ES          ; programa y que no es utilizada.
                SUB     BX, AX          ;  ES debe contener el PSP.
                MOV     AX, SP
                ADD     AX, 15d
                MOV     CL, 4
                SHR     AX, CL
                ADD     BX, AX
                MOV     AH, 4Ah
                INT     21h
                RET
LiberaMEM       ENDP

WaitVR          MACRO                   ;  Espera el retrazo vertical.
                PUSH    DX 
                PUSH    AX
                MOV     DX,03DAh
        @@St1:  IN      AL,DX
                TEST    AL,08h
                JZ    @@St1
        @@St2:  IN      AL,DX
                TEST    AL,08h
                JNZ   @@St2
                POP     AX 
                POP     DX
                ENDM

;;  ­Cuanto se hechan en falta este par de instrucciones!

XPUSH          MACRO regmem            ; apilar lista de registros
                 IRP rm, <regmem>
                   PUSH rm
                 ENDM
               ENDM

XPOP           MACRO regmem            ; desapilar lista de registros
                 IRP rm, <regmem>
                   POP rm
                 ENDM
               ENDM

;;  Aqui est n las MACROS de llamada de todas las funciones y procedimientos.

CargaAnima      PROC
                XPUSH   <DS, BP, ES>
                CALL    WORD PTR CS:[DCargaAnima]
                XPOP    <ES, BP, DS>
                RET
CargaAnima      ENDP
                
PonFrameAnima   PROC
                XPUSH   <ES, DS>
                PUSHA
                CALL    WORD PTR CS:[DPonFrameAnima]
                POPA
                XPOP    <DS, ES>
                RET
PonFrameAnima   ENDP

fPonFrameAnima  PROC
                XPUSH   <ES, DS>
                PUSHA
                CALL    WORD PTR CS:[DfPonFrameAnima]
                POPA
                XPOP    <DS, ES>
                RET
fPonFrameAnima  ENDP

DestAnima       PROC
                PUSH    ES
                PUSHA
                CALL    WORD PTR CS:[DDestAnima]
                POPA
                POP     ES
                RET
DestAnima       ENDP

CogeColor       PROC
                PUSH    DX
                CALL    WORD PTR CS:[DCogeColor]
                POP     DX
                RET
CogeColor       ENDP

PonColor        PROC
                PUSH    DX
                CALL    WORD PTR CS:[DPonColor]
                POP     DX
                RET
PonColor        ENDP

CogePaleta      PROC
                XPUSH   <ES, DI>
                CALL    WORD PTR CS:[DCogePaleta]
                XPOP    <DI, ES>
                RET
CogePaleta      ENDP

PonPaleta       PROC
                XPUSH   <ES, DI>
                CALL    WORD PTR CS:[DPonPaleta]
                XPOP    <DI, ES>
                RET
PonPaleta       ENDP

CargaPaleta     PROC
                XPUSH   <DS, BX, CX, ES>
                CALL    WORD PTR CS:[DCargaPaleta]
                XPOP    <ES, CX, BX, DS>
                RET
CargaPaleta     ENDP

FadeDown        PROC
                PUSHA
                CALL    WORD PTR CS:[DFadeDown]
                POPA
                RET
FadeDown        ENDP

FadeUp          PROC
                PUSHA
                CALL    WORD PTR CS:[DFadeUp]
                POPA
                RET
FadeUp          ENDP

FadeTo          PROC
                PUSHA
                PUSH    ES
                CALL    WORD PTR CS:[DFadeTo]
                POP     ES
                POPA
                RET
FadeTo          ENDP

BlackOut        PROC
                XPUSH   <DX, CX>
                CALL    WORD PTR CS:[DBlackOut]
                XPOP    <CX, DX>
                RET
BlackOut        ENDP

DestPaleta      PROC
                XPUSH   <BX, ES>
                CALL    WORD PTR CS:[DDestPaleta]
                XPOP    <ES, BX>
                RET
DestPaleta      ENDP

PonPixel        PROC
                PUSH    ES
                PUSHA
                CALL    WORD PTR CS:[DPonPixel]
                POPA
                POP     ES
                RET
PonPixel        ENDP

fPonPixel       PROC
                PUSH    ES
                PUSHA
                CALL    WORD PTR CS:[DfPonPixel]
                POPA
                POP     ES
                RET
fPonPixel       ENDP

BorraPantalla   PROC
                PUSHAD
                PUSH    ES
                CALL    WORD PTR CS:[DBorraPantalla]
                POP     ES
                POPAD
                RET
BorraPantalla   ENDP

fBorraPantalla  PROC
                PUSHAD
                PUSH    ES
                CALL    WORD PTR CS:[DfBorraPantalla]
                POP     ES
                POPAD
                RET
fBorraPantalla  ENDP

CogePixel       PROC
                XPUSH   <ES, DI, SI>
                CALL    WORD PTR CS:[DCogePixel]
                XPOP    <SI, DI, ES>
                RET
CogePixel       ENDP

fCogePixel      PROC
                XPUSH   <ES, DI, SI>
                CALL    WORD PTR CS:[DfCogePixel]
                XPOP    <SI, DI, ES>
                RET
fCogePixel      ENDP

Rectangulo      PROC
                PUSHA
                CALL    WORD PTR CS:[DRectangulo]
                POPA
                RET
Rectangulo      ENDP

fRectangulo     PROC
                PUSHA
                CALL    WORD PTR CS:[DfRectangulo]
                POPA
                RET
fRectangulo     ENDP

Circulo         PROC
                PUSHA
                CALL    WORD PTR CS:[DCirculo]
                POPA
                RET
Circulo         ENDP

fCirculo        PROC
                PUSHA
                CALL    WORD PTR CS:[DfCirculo]
                POPA
                RET
fCirculo        ENDP

ModoGrafico     PROC
                CALL    WORD PTR CS:[DModoGrafico]
                RET
ModoGrafico     ENDP

ModoTexto       PROC
                CALL    WORD PTR CS:[DModoTexto]
                RET
ModoTexto       ENDP

Linea           PROC
                PUSHA
                PUSH    ES
                CALL    WORD PTR CS:[DLinea]
                POP     ES
                POPA
                RET
Linea           ENDP

fLinea          PROC
                PUSHA
                PUSH    ES
                CALL    WORD PTR CS:[DfLinea]
                POP     ES
                POPA
                RET
fLinea          ENDP

Caja            PROC
                PUSHA
                PUSH    ES
                CALL    WORD PTR CS:[DCaja]
                POP     ES
                POPA
                RET
Caja            ENDP

fCaja           PROC
                PUSHA
                PUSH    ES
                CALL    WORD PTR CS:[DfCaja]
                POP     ES
                POPA
                RET
fCaja           ENDP

Poligono        PROC
                PUSHA
                PUSH    DS
                CALL    WORD PTR CS:[DPoligono]
                POP     DS
                POPA
                RET
Poligono        ENDP

fPoligono       PROC
                PUSHA
                PUSH    DS
                CALL    WORD PTR CS:[DfPoligono]
                POP     DS
                POPA
                RET
fPoligono       ENDP

CreaVirtual     PROC
                XPUSH   <BX, CX, DX>
                CALL    WORD PTR CS:[DCreaVirtual]
                XPOP    <DX, CX, BX>
                RET
CreaVirtual     ENDP

CopiaPantalla   PROC
                PUSHA
                XPUSH   <DS, ES>
                CALL    WORD PTR CS:[DCopiaPantalla]
                XPOP    <ES, DS>
                POPA
                RET
CopiaPantalla   ENDP

DestVirtual     PROC
                PUSHA
                PUSH    ES
                CALL    WORD PTR CS:[DDestVirtual]
                POP     ES
                POPA
                RET
DestVirtual     ENDP

SegmentoPV      PROC
                XPUSH   <AX, BX>
                CALL    WORD PTR CS:[DSegmentoPV]
                XPOP    <BX, AX>
                RET
SegmentoPV      ENDP

SegmentoPal     PROC
                XPUSH   <AX, BX>
                CALL    WORD PTR CS:[DSegmentoPal]
                XPOP    <BX, AX>
                RET
SegmentoPal     ENDP

SegmentoSprite  PROC
                XPUSH   <AX, BX>
                CALL    WORD PTR CS:[DSegmentoSprite]
                XPOP    <BX, AX>
                RET
SegmentoSprite  ENDP

SegmentoAnima   PROC
                XPUSH   <AX, BX>
                CALL    WORD PTR CS:[DSegmentoAnima]
                XPOP    <BX, AX>
                RET
SegmentoAnima   ENDP

VaciaMEM        PROC
                XPUSH   <AX, CX>
                CALL    WORD PTR CS:[DVaciaMEM]
                XPOP    <CX, AX>
                RET
VaciaMEM        ENDP

TrataError      PROC
                CALL    WORD PTR CS:[DTrataError]
                RET
TrataError      ENDP

InsertaDirPV    PROC
                PUSH    BX
                CALL    WORD PTR CS:[DInsertaDirPV]
                POP     BX
                RET
InsertaDirPV    ENDP

InsertaDirPal   PROC
                PUSH    BX
                CALL    WORD PTR CS:[DInsertaDirPal]
                POP     BX
                RET
InsertaDirPal   ENDP

InsertaDirSprite PROC
                PUSH    BX
                CALL    WORD PTR CS:[DInsertaDirSprite]
                POP     BX
                RET
InsertaDirSprite ENDP

InsertaDirAnima PROC
                PUSH    BX
                CALL    WORD PTR CS:[DInsertaDirAnima]
                POP     BX
                RET
InsertaDirAnima ENDP

CargaSprite     PROC
                XPUSH   <DS, BP, ES>
                CALL    WORD PTR CS:[DCargaSprite]
                XPOP    <ES, BP, DS>
                RET
CargaSprite     ENDP

DestSprite      PROC
                PUSH    ES
                PUSHA
                CALL    WORD PTR CS:[DDestSprite]
                POPA
                POP     ES
                RET
DestSprite      ENDP

CambiaSprites   PROC
                PUSHA
                CALL   CS:[DCambiaSprites]
                POPA
                RET
CambiaSprites   ENDP

CreaSprite      PROC
                CALL    WORD PTR CS:[DCreaSprite]
                RET
CreaSprite      ENDP

DibujaSprite    PROC
                XPUSH   <DS, ES>
                PUSHA
                CALL    WORD PTR CS:[DDibujaSprite]
                POPA
                XPOP    <ES, DS>
                RET
DibujaSprite    ENDP

fDibujaSprite   PROC
                XPUSH   <DS, ES>
                PUSHA
                CALL    WORD PTR CS:[DfDibujaSprite]
                POPA
                XPOP    <ES, DS>
                RET
fDibujaSprite   ENDP

CargaCEL        PROC
                XPUSH   <DS, ES>
                PUSHA
                CALL    WORD PTR CS:[DCargaCEL]
                POPA
                XPOP    <ES, DS>
                RET
CargaCEL        ENDP

GetImagen       PROC
                XPUSH   <DS, ES, BX, CX, DX, DI, SI>
                CALL    WORD PTR CS:[DGetImagen]
                XPOP    <SI, DI, DX, CX, BX, ES, DS>
                RET
GetImagen       ENDP

fGetImagen      PROC
                XPUSH   <DS, ES, BX, CX, DX, DI, SI>
                CALL    WORD PTR CS:[DfGetImagen]
                XPOP    <SI, DI, DX, CX, BX, ES, DS>
                RET
fGetImagen      ENDP

DescompPuntos   PROC
                PUSHAD
                CALL    WORD PTR CS:[DDescompPuntos]
                POPAD
                RET
DescompPuntos   ENDP

DescompWorm     PROC
                PUSHAD
                PUSH    ES
                CALL    WORD PTR CS:[DDescompWorm]
                POP     ES
                POPAD
                RET
DescompWorm     ENDP

LeePCX          PROC
                CALL    WORD PTR CS:[DLeePCX]
                RET
LeePCX          ENDP

;;  Nuevas en GRAPH 2.0

LeeBMP          PROC
                CALL    WORD PTR CS:[DLeeBMP]
                RET
LeeBMP          ENDP

InicGRAPH       PROC
                CALL    WORD PTR CS:[DInicGRAPH]
                RET
InicGRAPH       ENDP

EndGRAPH        PROC
                CALL    WORD PTR CS:[DEndGRAPH]
                RET
EndGRAPH        ENDP

CambiaTipo      PROC
                CALL    WORD PTR CS:[DCambiaTipo]
                RET
CambiaTipo      ENDP

QueTipo         PROC
                CALL    WORD PTR CS:[DQueTipo]
                RET
QueTipo         ENDP

SetCursor       PROC
                CALL    WORD PTR CS:[DSetCursor]
                RET
SetCursor       ENDP

GetCursor       PROC
                CALL    WORD PTR CS:[DGetCursor]
                RET
GetCursor       ENDP

CargaFuente     PROC
                XPUSH   <DS, CX, ES, DI>
                CALL    WORD PTR CS:[DCargaFuente]
                XPOP    <DI, ES, CX, DS>
                RET
CargaFuente     ENDP

CogeFuenteDOS   PROC
                XPUSH   <ES, BP, DS, BX, CX, DX, SI, DI>
                CALL    WORD PTR CS:[DCogeFuenteDOS]
                XPOP    <DI, SI, DX, CX, BX, DS, BP, ES>
                RET
CogeFuenteDOS   ENDP

EscLetra        PROC
                XPUSH   <ES, BP, DS>
                PUSHA
                CALL    WORD PTR CS:[DEscLetra]
                POPA
                XPOP    <DS, BP, ES>
                RET
EscLetra        ENDP

Escribe         PROC
                XPUSH   <DX, AX, SI>
                CALL    WORD PTR CS:[DEscribe]
                XPOP    <SI, AX, DX>
                RET
Escribe         ENDP

LeeLetra        PROC
                CALL    WORD PTR CS:[DLeeLetra]
                RET
LeeLetra        ENDP

LeeLetraEcho    PROC
                PUSH    CX
                CALL    WORD PTR CS:[DLeeLetraEcho]
                POP     CX
                RET
LeeLetraEcho    ENDP

LeeByte         PROC
                PUSHA
                XPUSH   <DS, ES>
                CALL    WORD PTR CS:[DLeeByte]
                XPOP    <ES, DS>
                POPA
                RET
LeeByte         ENDP

LeeCadena       PROC
                CALL    WORD PTR CS:[DLeeCadena]
                RET
LeeCadena       ENDP

LeeWord         PROC
                PUSHA
                XPUSH   <DS, ES>
                CALL    WORD PTR CS:[DLeeWord]
                XPOP    <ES, DS>
                POPA
                RET
LeeWord         ENDP

EscByte         PROC
                PUSHA
                PUSH    DS
                CALL    WORD PTR CS:[DEscByte]
                POP     DS
                POPA
                RET
EscByte         ENDP

EscWord         PROC
                PUSHA
                PUSH    DS
                CALL    WORD PTR CS:[DEscWord]
                POP     DS
                POPA
                RET
EscWord         ENDP

Write           PROC
                PUSHA
                CALL    WORD PTR CS:[DWrite]
                POPA
                RET
Write           ENDP

NuevoArchivo    PROC
                XPUSH   <CX, DI, ES>
                CALL    WORD PTR CS:[DNuevoArchivo]
                XPOP    <ES, DI, CX>
                RET
NuevoArchivo    ENDP

LeeEntrada      PROC
                PUSH    DS
                PUSHA
                CALL    WORD PTR CS:[DLeeEntrada]
                POPA
                POP     DS
                RET
LeeEntrada      ENDP

LeeTrozo        PROC
                PUSH    DS
                PUSHA
                CALL    WORD PTR CS:[DLeeTrozo]
                POPA
                POP     DS
                RET
LeeTrozo        ENDP

LongitudFile    PROC
                XPUSH   <DS, AX, BX, CX, DX>
                CALL    WORD PTR CS:[DLongitudFile]
                XPOP    <DX, CX, BX, AX, DS>
                RET
LongitudFile    ENDP

FlipCopy        PROC
                XPUSH   <DS, ES>
                PUSHA
                CALL    WORD PTR CS:[DFlipCopy]
                POPA
                XPOP    <ES, DS>
                RET
FlipCopy        ENDP

Flip            PROC
                PUSHA
                CALL    WORD PTR CS:[DFlip]
                POPA
                RET
Flip            ENDP

SegmentoFuente  PROC
                PUSHA
                CALL    WORD PTR CS:[DSegmentoFuente]
                POPA
                RET
SegmentoFuente  ENDP

DoblaLineas     PROC
                PUSH    DX
                CALL    WORD PTR CS:[DDoblaLineas]
                POP     DX
                RET
DoblaLineas     ENDP

SetStart        PROC
                XPUSH   <DX, AX>
                CALL    WORD PTR CS:[DSetStart]
                XPOP    <AX, DX>
                RET
SetStart        ENDP

SetVSPixels     PROC
                PUSH    DX
                CALL    WORD PTR CS:[DSetVSPixels]
                POP     DX
                RET
SetVSPixels     ENDP

PideXMS         PROC
                PUSH    AX
                CALL    WORD PTR CS:[DPideXMS]
                POP     AX
                RET
PideXMS         ENDP

LiberaXMS       PROC
                PUSHA
                CALL    WORD PTR CS:[DLiberaXMS]
                POPA
                RET
LiberaXMS       ENDP

GetAddress      PROC
                PUSH    AX
                CALL    WORD PTR CS:[DGetAddress]
                POP     AX
                RET
GetAddress      ENDP

MaximaXMS       PROC
                CALL    WORD PTR CS:[DMaximaXMS]
                RET
MaximaXMS       ENDP

GuardaFlat      PROC
                XPUSH   <DS, GS, EDI, ES, SI>
                CALL    WORD PTR CS:[DGuardaFlat]
                XPOP    <SI, ES, EDI, GS, DS>
                RET
GuardaFlat      ENDP

CargaFlat       PROC
                PUSHA
                XPUSH   <DS, GS, EDI, EDX>
                CALL    WORD PTR CS:[DCargaFlat]
                XPOP    <EDX, EDI, GS, DS>
                POPA
                RET
CargaFlat       ENDP

CargaBloque     PROC
                XPUSH   <DI, SI, DX, CX, BX, DS, ES>
                CALL    WORD PTR CS:[DCargaBloque]
                XPOP    <ES, DS, BX, CX, DX, SI, DI>
                RET
CargaBloque     ENDP

CargaMapa       PROC
                XPUSH   <DI, SI, DX, CX, BX, DS, ES>
                CALL    WORD PTR CS:[DCargaMapa]
                XPOP    <ES, DS, BX, CX, DX, SI, DI>
                RET
CargaMapa       ENDP

DestBloque      PROC
                PUSHA
                PUSH    ES
                CALL    WORD PTR CS:[DDestBloque]
                POP     ES
                POPA
                RET
DestBloque      ENDP

DestMapa        PROC
                PUSHA
                PUSH    ES
                CALL    WORD PTR CS:[DDestMapa]
                POP     ES
                POPA
                RET
DestMapa        ENDP

DibujaMapa      PROC
                PUSHAD
                XPUSH   <ES, DS, GS, FS>
                CALL    WORD PTR CS:[DDibujaMapa]
                XPOP    <FS, GS, DS, ES>
                POPAD
                RET
DibujaMapa      ENDP

PosMapa         PROC
                XPUSH   <BP, DS>
                CALL    WORD PTR CS:[DPosMapa]
                XPOP    <DS, BP>
                RET
PosMapa         ENDP

InsertaDirBloque PROC
                PUSH    BX
                CALL    WORD PTR CS:[DInsertaDirBloque]
                POP     BX
                RET
InsertaDirBloque ENDP

InsertaDirMapa  PROC
                PUSH    BX
                CALL    WORD PTR CS:[DInsertaDirMapa]
                POP     BX
                RET
InsertaDirMapa  ENDP

ResetGRAPH      PROC
                CALL    WORD PTR CS:[DResetGRAPH]
                RET
ResetGRAPH      ENDP

SegmentoBloque  PROC
                XPUSH   <AX, BX>
                CALL    WORD PTR CS:[DSegmentoBloque]
                XPOP    <BX, AX>
                RET
SegmentoBloque  ENDP

SegmentoMapa    PROC
                XPUSH   <AX, BX>
                CALL    WORD PTR CS:[DSegmentoMapa]
                XPOP    <BX, AX>
                RET
SegmentoMapa    ENDP

PlayFLI         PROC
                XPUSH   <DS, ES>
                PUSHAD
                CALL    WORD PTR CS:[DPlayFli]
                POPAD
                XPOP    <ES, DS>
                RET
PlayFLI         ENDP

CreaMapa        PROC
                XPUSH   <BX, CX, DX>
                CALL    WORD PTR CS:[DCreaMapa]
                XPOP    <DX, CX, BX>
                RET
CreaMapa        ENDP

CreaBloque      PROC
                XPUSH   <BX, CX, DX>
                CALL    WORD PTR CS:[DCreaBloque]
                XPOP    <DX, CX, BX>
                RET
CreaBloque      ENDP

DestFuente      PROC
                PUSHA
                PUSH    ES
                CALL    WORD PTR CS:[DDestFuente]
                POP     ES
                POPA
                RET
DestFuente      ENDP

InsertaDirFuente PROC
                PUSH    BX
                CALL    WORD PTR CS:[DInsertaDirFuente]
                POP     BX
                RET
InsertaDirFuente ENDP

GetSysInfo      MACRO
                CALL    WORD PTR CS:[DGetSysInfo]
                ENDM

