home *** CD-ROM | disk | FTP | other *** search
-
- ;;▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒C▒O▒M▒P▒I▒L▒E▒R▒▒▒▒▒▒▒▒▒▒▒S▒O▒F▒T▒W▒A▒R▒E▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
- ;;▒▒ ▒▒
- ;;▒▒ MODOX.INC ▒▒
- ;;▒▒ ▒▒
- ;;▒▒ Esta librería es introductoria y a partir del próximo número estará ▒▒
- ;;▒▒ completamente optimizada para 286+. Es igual que MODOX.H sólo que ▒▒
- ;;▒▒ totalmente en ASSEMBLER. ▒▒
- ;;▒▒ Diseñada para compilarse con TASM junto con otro fichero. ▒▒
- ;;▒▒ ▒▒
- ;;▒▒ include MODOX.INC ▒▒
- ;;▒▒ ▒▒
- ;;▒▒ 1996 Compiler SoftWare. Para dudas y contactos leer el fichero de ▒▒
- ;;▒▒ texto COMPILER.NFO ▒▒
- ;;▒▒ ▒▒
- ;;▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
-
-
- SEQU_ADDR EQU 3c4h
- CRTC_ADDR EQU 3d4h
- GRAC_ADDR EQU 3ceh
-
-
-
- ;;▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
- ;;▒▒ Set_320x200X(); ▒▒
- ;;▒▒ ▒▒
- ;;▒▒ Inicializa el Modo 13X de 320x200 a 256 colores en sistema 1x4. ▒▒
- ;;▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
-
- Set_320x200X PROC
-
- push ax cx dx di es
-
- mov ax , 0013h ; inicializamos modo 13h estándar
- int 10h
-
- mov dx, SEQU_ADDR
- mov ax, 0604h
- out dx, ax ; ponemos el bit CHAIN-4 a 0
-
- mov dx, CRTC_ADDR
- mov ax, 0E317h
- out dx, ax ; ajuste del modo de palabras
-
- mov ax, 0014h
- out dx, ax ; ajuste del modo de dobles palabras
-
- mov ax, 0F02h
- out dx, ax ; seleccionar los 4 planos
-
- mov ax , 0A000h
- mov es , ax
- xor di , di
- xor ax , ax
- mov cx , 32000
- rep stosw ; borrar la pantalla
-
- pop es di dx cx ax
- ret
-
- Set_320x200X ENDP
-
-
-
- ;;▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
- ;;▒▒ Set_320x240X(); ▒▒
- ;;▒▒ ▒▒
- ;;▒▒ Inicializa el Modo X de 320x240 a 256 colores en sistema 1x4. ▒▒
- ;;▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
-
-
- Set_320x240X PROC
-
- call Set_320x200X ;primero inicializamos 13X
-
- push ax dx
-
- mov dx, 3C2h ; Estas modificaciones serán
- mov ax, 0E3h ; explicadas en el siguiente
- out dx, al ; artículo con profundidad.
- mov dx, CRTC_ADDR
- mov ax, 2C11h
- out dx, ax
- mov ax, 0D06h
- out dx, ax
- mov ax, 03E07h
- out dx, ax
- mov ax, 0EA10h
- out dx, ax
- mov ax, 0AC11h
- out dx, ax
- mov ax, 0DF12h
- out dx, ax
- mov ax, 0E715h
- out dx, ax
- mov ax, 0616h ; ;-) Ya estamos en MODO X.
- out dx, ax
-
- pop dx ax
- ret
-
- Set_320x240X ENDP
-
-
- ;;▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
- ;;▒▒ PutPixelX(); ▒▒
- ;;▒▒ ▒▒
- ;;▒▒ Coloca un punto en la primera página en (X,Y) de color color. ▒▒
- ;;▒▒ Entrada: ▒▒
- ;;▒▒ ▒▒
- ;;▒▒ AH = Color ▒▒
- ;;▒▒ BX = X ▒▒
- ;;▒▒ CX = Y ( 4 páginas por 1: puede ir desde 0 hasta RESOL_Y * 4 ) ▒▒
- ;;▒▒ ▒▒
- ;;▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
-
- PutPixelX PROC
-
- push ax bx cx dx es di
-
- push ax cx ; copia de Ax y Cx
- mov dx, SEQU_ADDR
- mov al, 2
- out dx, al
- inc dx
-
- mov cx, bx
- and cx, 3 ; plano = 1 << ( x & 3 )
- xor ax, ax
- inc ax
- shl ax, cl
- out dx, al
- pop cx ax
-
- push cx
- shl cx, 6
- mov di, cx
- pop cx
- shl cx, 4 ; (y<<4) + (y<<6) -> (y*80)
- add di, cx
- shr bx, 2 ; x/4
- add di, bx ; di=(y*80) + x/4
-
- mov dx , 0a000h
- mov es , dx
- mov al, ah
- stosb
-
- pop si ds dx cx bx ax
- ret
-
- PutPixelX ENDP
-
-
- ;;▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
- ;;▒▒ GetPixelX(); ▒▒
- ;;▒▒ ▒▒
- ;;▒▒ Devuelve el color del pixel de coordenadas (X,Y) en un sist. 1x4 ▒▒
- ;;▒▒ Entrada: ▒▒
- ;;▒▒ ▒▒
- ;;▒▒ BX = X ▒▒
- ;;▒▒ CX = Y ( 4 páginas por 1: puede ir desde 0 hasta RESOL_Y * 4 ) ▒▒
- ;;▒▒ ▒▒
- ;;▒▒ Devuelve ▒▒
- ;;▒▒ AL = Color ▒▒
- ;;▒▒ ▒▒
- ;;▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
-
-
- GetPixelX PROC
-
- push bx cx dx ds si
-
- mov dx, GRAC_ADDR
- mov al, 4 ; función leer plano
- out dx, al
- inc dx ; GRAC_ADDR += 1
- mov ax, bx ; copia
- and ax, 3 ; plano = x & 3
- out dx, al ; enviar plano ->(4 últ. bits)
-
- push cx
- shl cx, 6
- mov si, cx
- pop cx
- shl cx, 4
- add si, cx
- shr bx, 2
- add si, bx ; SI = (y<<6)+(y<<4)+(x>>2)
-
- mov dx , 0a000h
- mov ds , dx ; DS:SI -> Pixel a leer
- lodsb ; leemos el byte en AL
-
- pop si ds dx cx bx ; recuperamos registros usados
- ret ; volvemos...
-
- GetPixelX ENDP
-