]> github.com/historicalsource and other repositories - DRGNSRC.git/blob - DDUNDRAW.ASM
Fixed README extension
[DRGNSRC.git] / DDUNDRAW.ASM
1 \r
2 cseg    segment public  'code'\r
3 \r
4 \r
5 assume  cs:cseg,ds:dseg\r
6 \r
7 d_scrn_w        equ     36\r
8 \r
9 ;undrawing for the ega card (at least)\r
10 ;may as well waste lots of memory in order to save appr 18%+\r
11 \r
12 delabyte        macro\r
13                 lodsw                   ;12\r
14                 mov     ES:[di],ah              ;10\r
15                 mov     ES:[di+8192],al ;10\r
16                 lodsw                   ;12\r
17                 mov     ES:[di+16384],ah        ;10\r
18                 mov     ES:[di+24576],al        ;10\r
19                 inc     di              ;2\r
20                 and     di,8191         ;4      =70\r
21                 endm\r
22 delabyteb       macro\r
23                 lodsw                   ;12\r
24                 mov     ES:[di],ah              ;10\r
25                 mov     ES:[di+8192],al ;10\r
26                 lodsw                   ;12\r
27                 mov     ES:[di+16384],ah        ;10\r
28                 mov     ES:[di+24576],al        ;10\r
29                 endm\r
30 \r
31 ;delaword       macro\r
32 ;               lodsw                   ;12\r
33 ;               mov     bx,ax           ;2\r
34 ;               lodsw                   ;12\r
35 ;               mov     cx,ax           ;2\r
36 ;               lodsw                   ;12\r
37 ;               mov     dx,ax           ;2\r
38 ;               lodsw                   ;12\r
39 ;\r
40 ;       xchg    bh,dh           ;3\r
41 ;       xchg    ah,ch           ;3\r
42 ;\r
43 ;       mov     es:[di],bx              ;17 ?\r
44 ;       mov     es:[di+8192],cx         ;17 ?\r
45 ;       mov     es:[di+16384],dx        ;17 ?\r
46 ;       mov     es:[di+24576],ax        ;10\r
47 ;\r
48 ;       add     di,2                    ;4\r
49 ;       and     di,8191                 ;4\r
50 ;\r
51 ;       endm\r
52 \r
53 \r
54 \r
55 delncols macro colums\r
56 local   start\r
57 start:\r
58 \r
59 ;rept   colums/2\r
60 ;delaword\r
61 ;endm\r
62 ;if     (colums and 1) eq 1\r
63 ;delabyeb\r
64 ;endif\r
65                 rept    colums-1\r
66                 delabyte\r
67                 endm\r
68                 delabyteb\r
69 \r
70                 sub     di,colums-d_scrn_w-1\r
71                 and     di,8191\r
72                 loop    start\r
73                 jmp     finoff\r
74                 endm\r
75 ;for when the loop has to be indirect ?\r
76 \r
77 delncolsl macro colums\r
78 local   start,lokal,lblx,lpb\r
79 start:\r
80         push    dx\r
81         mov     dx,cx\r
82 lpb:\r
83         mov     cx,colums-1\r
84 lblx:\r
85         delabyte\r
86         loop    lblx\r
87         delabyteb\r
88         sub     di,colums-d_scrn_w-1\r
89         and     di,8191\r
90         dec     dx\r
91         jnz     lokal\r
92         pop     dx\r
93         jmp     finoff\r
94 lokal:  jmp     lpb\r
95 \r
96         endm\r
97 \r
98 \r
99 finoff:\r
100                 mov     ax,seg dseg\r
101                 mov     ds,ax\r
102                 pop     es\r
103                 ret\r
104 \r
105 d1col:\r
106 stx:            delabyteb\r
107                 sub     di,d_scrn_w\r
108                 and     di,8191\r
109                 loop    stx\r
110                 jmp     finoff\r
111 \r
112 d2col:  delncols        2\r
113 d3col:  delncols        3\r
114 d4col:  delncols        4\r
115 d5col:  delncolsl       5\r
116 d6col:  delncolsl       6\r
117 d7col:  delncolsl       7\r
118 d8col:  delncolsl       8\r
119 d9col:  delncolsl       9\r
120 d10col: delncolsl       10\r
121 d11col: delncolsl       11\r
122 d12col: delncolsl       12\r
123 d13col: delncolsl       13\r
124 d14col: delncolsl       14\r
125 d15col: delncolsl       15\r
126 d16col: delncolsl       16\r
127 d17col: delncolsl       17\r
128 d18col: delncolsl       18\r
129 d19col: delncolsl       19\r
130 \r
131 \r
132 \r
133 cseg    ends\r
134 \r
135 dseg    segment public  'data'\r
136 public  deljmptab\r
137 \r
138 deljmptab       label   word\r
139         dw      offset finoff   ;for del 0 cols\r
140         dw      offset d1col,offset d2col,offset d3col,offset d4col\r
141         dw      offset d5col,offset d6col,offset d7col,offset d8col\r
142         dw      offset d9col,offset d10col,offset d11col,offset d12col\r
143         dw      offset d13col,offset d14col,offset d15col,offset d16col\r
144         dw      offset d17col,offset d18col,offset d19col\r
145         dw      offset finoff   ;for del 0 cols\r
146         dw      offset finoff   ;for del 0 cols\r
147         dw      offset finoff   ;for del 0 cols\r
148 \r
149 ;hopefully no more than 20 will be needed ?     \r
150 \r
151 dseg    ends\r
152 \r
153         end\r
154 \r
155 \1a\1a\1a\1a\1a