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

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

extrn Aleatorio:far

extrn LERROR:far                       ;  La variable de errores.
extrn Registro:far                     ;  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    DWORD PTR CS:[DCargaAnima]
                XPOP    <ES, BP, DS>
                RET
CargaAnima      ENDP
                
PonFrameAnima   PROC
                XPUSH   <ES, DS>
                PUSHA
                CALL    DWORD PTR CS:[DPonFrameAnima]
                POPA
                XPOP    <DS, ES>
                RET
PonFrameAnima   ENDP

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

GetImagen       PROC
                XPUSH   <DS, ES, BX, CX, DX, DI, SI>
                CALL    DWORD 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    DWORD PTR CS:[DfGetImagen]
                XPOP    <SI, DI, DX, CX, BX, ES, DS>
                RET
fGetImagen      ENDP

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

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

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

;;  Nuevas en GRAPH 2.0

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

CargaBloque     PROC
                XPUSH   <DI, SI, DX, CX, BX, DS, ES>
                CALL    DWORD 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    DWORD PTR CS:[DCargaMapa]
                XPOP    <ES, DS, BX, CX, DX, SI, DI>
                RET
CargaMapa       ENDP

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

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

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

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

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

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

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

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

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

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

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

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

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

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

GetSysInfo      MACRO
                CALL    DWORD PTR CS:[DGetSysInfo]
                ENDM
