]> 4ch.mooo.com Git - 16.git/blob - 16/xx/mxsl.asm
push
[16.git] / 16 / xx / mxsl.asm
1 ;-----------------------------------------------------------\r
2 ;\r
3 ; MXLN.ASM - Start line function\r
4 ; Copyright (c) 1994 by Alessandro Scotti\r
5 ;\r
6 ;-----------------------------------------------------------\r
7 WARN    PRO\r
8 NOWARN  RES\r
9 INCLUDE MODEX.DEF\r
10 \r
11 PUBLIC  mxStartLine\r
12 \r
13 MX_TEXT SEGMENT USE16 PARA PUBLIC 'CODE'\r
14         ASSUME cs:MX_TEXT, ds:NOTHING, es:NOTHING\r
15 \r
16 EXTRN   mx_BytesPerLine : WORD\r
17 \r
18 ;-----------------------------------------------------------\r
19 ;\r
20 ; Changes the video start address to the specified line.\r
21 ;\r
22 ; Input:\r
23 ;       Line    = new start line\r
24 ; Output:\r
25 ;       none\r
26 ;\r
27 mxStartLine     PROC FAR\r
28         ARG     Line:WORD       = ARG_SIZE\r
29         .enter  0\r
30         ASSUME  ds:NOTHING\r
31 \r
32         mov     ax, [Line]              ; Get video offset\r
33         mul     [mx_BytesPerLine]\r
34         xchg    ax, bx                  ; Copy it into BX\r
35 \r
36 ; Wait display\r
37         mov     dx, STATUS\r
38 @@1:    in      al, dx\r
39         test    al, 08h\r
40         jnz     @@1\r
41 \r
42 ; Set starting address\r
43         mov     dx, CRTC\r
44         mov     al, 0Ch                 ; Linear Starting Address high\r
45         mov     ah, bh\r
46         cli\r
47         out     dx, ax\r
48         mov     al, 0Dh                 ; Linear Starting Address low\r
49         mov     ah, bl\r
50         out     dx, ax\r
51         sti\r
52 \r
53 ; Wait retrace\r
54         mov     dx, STATUS\r
55 @@2:    in      al,dx\r
56         test    al, 08h\r
57         jz      @@2\r
58 \r
59         xor     ax, ax\r
60         .leave  ARG_SIZE\r
61 MX_TEXT         ENDS\r
62 END\r