]> 4ch.mooo.com Git - 16.git/blob - 16/xw/mxpn.asm
remove copypasta from vga library. The modex16 routines are a better fit
[16.git] / 16 / xw / mxpn.asm
1 ;-----------------------------------------------------------\r
2 ;\r
3 ; MXPN.ASM - Panning function\r
4 ; Copyright (c) 1993,1994 by Alessandro Scotti\r
5 ;\r
6 ;-----------------------------------------------------------\r
7 WARN    PRO\r
8 INCLUDE MODEX.DEF\r
9 \r
10 PUBLIC  mxPan\r
11 \r
12 EXTRN   mxWaitDisplay   : FAR\r
13 EXTRN   mxStartAddress  : FAR\r
14 \r
15 MX_TEXT         SEGMENT USE16 PARA PUBLIC 'CODE'\r
16                 ASSUME cs:MX_TEXT, ds:NOTHING, es:NOTHING\r
17 \r
18 EXTRN   mx_BytesPerLine : WORD\r
19 \r
20 ;-----------------------------------------------------------\r
21 ;\r
22 ; Moves the screen.\r
23 ;\r
24 ; Input:\r
25 ;       X, Y    = new X, Y coordinates of view screen\r
26 ; Output:\r
27 ;       none\r
28 ;\r
29 mxPan           PROC    FAR\r
30         ARG     Y:WORD,                 \\r
31                 X:WORD                  = ARG_SIZE\r
32         ASSUME  ds:NOTHING\r
33         .enter  0\r
34 \r
35         mov     ax, [Y]\r
36         mul     [mx_BytesPerLine]\r
37         mov     dx, [X]\r
38         shr     dx, 1\r
39         shr     dx, 1\r
40         add     ax, dx\r
41         push    ax                      ; Push the start address\r
42         call    mxWaitDisplay\r
43         call    mxStartAddress\r
44 \r
45         mov     dx, 03DAh               ; Set the pixel pan register\r
46         in      al, dx\r
47         mov     dx, 03C0h\r
48         mov     al, 33h\r
49         out     dx, al\r
50         mov     al, BYTE PTR [X]\r
51         and     al, 3\r
52         shl     al, 1\r
53         out     dx, al\r
54 \r
55         xor     ax, ax\r
56         .leave  ARG_SIZE\r
57 mxPan           ENDP\r
58 \r
59 MX_TEXT         ENDS\r
60 END\r