1 ; _____________________________________________ 2 ; | | 3 ; | Project: APPLER | 4 ; | File: DATA.ASM | 5 ; | Compiler: 16-bit TASM (2.5) | 6 ; | | 7 ; | Subject: Global Data | 8 ; | | 9 ; | Author: Alexander Patalenski | 10 ; |_____________________________________________| 11 12 include GLOBALS.INC 13 include INTERFAC.INC 14 15 Startup segment 16 assume CS:Startup,DS:Data,ES:Data,SS:Data 17 18 InitData Proc near 19 push ss 20 pop ds 21 push ss 22 pop es 23 cld 24 call InitTEXTadr 25 call InitHGRadr 26 call InitHGRcol_mask 27 call InitHgrTextAdr 28 call InitHGRchars 29 ret 30 InitData Endp 31 32 33 NotShownAdr = 8000h-4 34 35 InitTEXTadr Proc near 36 mov di,offset TEXTadr 37 xor ax,ax 38 39 mov dh,8 40 InitTEXTadr1: mov dl,3 41 InitTEXTadr2: mov cx,40 42 InitTEXTadr3: stosw 43 add ax,2 44 loop InitTEXTadr3 45 46 add ax,-40*2 + 8*40*2 47 dec dl 48 jnz InitTEXTadr2 49 50 Save ax 51 mov ax,NotShownAdr 52 mov cx,8 53 rep stosw 54 Restore ax 55 add ax,-3*8*40*2 + 40*2 56 dec dh 57 jnz InitTEXTadr1 58 59 ret 60 InitTEXTadr Endp 61 62 63 InitHGRadr Proc near 64 mov di,offset HGRadr 65 mov ax,5 66 67 mov bl,8 68 InitHGRadr1: mov dh,8 69 InitHGRadr2: mov dl,3 70 InitHGRadr3: mov cx,10 71 InitHGRadr4: stosw 72 inc ax 73 stosw 74 add ax,2 75 stosw 76 add ax,2 77 stosw 78 add ax,2 79 loop InitHGRadr4 80 81 add ax,-35*2 + 8*8*40*2 82 dec dl 83 jnz InitHGRadr3 84 85 Save ax 86 mov ax,NotShownAdr 87 mov cx,8 88 rep stosw 89 Restore ax 90 add ax,-3*8*8*40*2 + 8*40*2 91 dec dh 92 jnz InitHGRadr2 93 94 add ax,-8*8*40*2 + 40*2 95 dec bl 96 jnz InitHGRadr1 97 98 ret 99 InitHGRadr Endp 100 101 102 InitHGRmasks dw 0000000000000011b 103 dw 1000000000000001b 104 dw 1111110000000000b 105 dw 1111111000000000b 106 dw 1111000000000000b 107 dw 1111100000000000b 108 dw 1100000000000000b 109 dw 1110000000000000b 110 111 InitHGRcol_mask Proc near 112 mov di,offset HGRcolors 113 mov ax,0000000000000000b 114 InitHGRc_m1: mov dx,1100000000000000b 115 stosw 116 InitHGRc_m2: xor ax,dx 117 test ax,dx 118 jnz InitHGRc_m1 119 shr dx,2 120 test dx,0000000000000011b 121 jz InitHGRc_m2 122 123 mov si,offset HGRcolors 124 mov cx,80h 125 InitHGRc_m3: lodsw 126 shr ax,1 127 stosw 128 loop InitHGRc_m3 129 130 mov si,offset HGRcolors 131 mov cx,2*80h 132 InitHGRc_m4: lodsw 133 rol ax,2 134 xchg al,ah 135 stosw 136 loop InitHGRc_m4 137 138 mov cx,2*2*80h 139 InitHGRc_m5: lodsw 140 rol ax,2 141 stosw 142 loop InitHGRc_m5 143 144 mov si,offset InitHGRmasks 145 mov di,offset HGRmasks 146 mov bl,8 147 InitHGRc_m6: lods InitHGRmasks 148 mov cx,80h 149 rep stosw 150 dec bl 151 jnz InitHGRc_m6 152 153 ret 154 InitHGRcol_mask Endp 155 156 157 InitHgrTextAdr Proc near 158 mov di,offset HgrTextAdr 159 mov ax,4*8*40*2 160 161 mov dh,4 162 InitH_Tadr1: mov dl,3 163 InitH_Tadr2: mov cx,40 164 InitH_Tadr3: stosw 165 add ax,2 166 loop InitH_Tadr3 167 168 add ax,-40*2 + 8*8*40*2 169 dec dl 170 jnz InitH_Tadr2 171 172 Save ax 173 mov ax,NotShownAdr 174 mov cx,8 175 rep stosw 176 Restore ax 177 add ax,-3*8*8*40*2 + 8*40*2 178 dec dh 179 jnz InitH_Tadr1 180 181 ret 182 InitHgrTextAdr Endp 183 184 185 InitHGRchars Proc near 186 mov ax,1130h 187 mov bh,3 188 int 10h 189 xor bx,bx 190 InitHGRchars10: mov ax,bx 191 ror ah,1 192 cwd 193 not dx 194 mov di,dx 195 mov si,TEXTchars[BX] 196 and si,0FFh 197 mov cl,3 198 shl si,cl 199 add si,bp 200 InitHGRchars20: lods byte ptr ES:[SI] 201 mov cx,8 202 InitHGRchars30: shr al,1 203 rcr dx,1 204 sar dx,1 205 loop InitHGRchars30 206 xchg dl,dh 207 xor dx,di 208 mov HGRchars[BX],dx 209 add bh,10b 210 cmp bh,8*10b 211 jb InitHGRchars20 212 add bx,-8*10b*100h+2 213 cmp bx,100h*2 214 jb InitHGRchars10 215 ret 216 InitHGRchars Endp 217 218 Startup ends 219 220 ;=============================================================================== 221 222 Data segment stack 'stack' 223 224 even 225 TEXTadr dw 400h dup(0) 226 227 HGRadr dw 2000h dup(0) 228 229 HGRcolors dw 4*100h dup(0) 230 HGRmasks dw 4*100h dup(0) 231 232 HgrTextAdr dw 4*80h dup(0) 233 HGRchars dw 8*100h dup(0) 234 235 236 TEXTchars dw 7040h,7041h,7042h,7043h,7044h,7045h,7046h,7047h ; 237 dw 7048h,7049h,704Ah,704Bh,704Ch,704Dh,704Eh,704Fh ; I 238 dw 7050h,7051h,7052h,7053h,7054h,7055h,7056h,7057h ; N 239 dw 7058h,7059h,705Ah,705Bh,705Ch,705Dh,705Eh,705Fh ; V 240 dw 7020h,7021h,7022h,7023h,7024h,7025h,7026h,7027h ; E 241 dw 7028h,7029h,702Ah,702Bh,702Ch,702Dh,702Eh,702Fh ; R 242 dw 7030h,7031h,7032h,7033h,7034h,7035h,7036h,7037h ; S 243 dw 7038h,7039h,703Ah,703Bh,703Ch,703Dh,703Eh,703Fh ; E 244 245 dw 0F040h,0F041h,0F042h,0F043h,0F044h,0F045h,0F046h,0F047h ; 246 dw 0F048h,0F049h,0F04Ah,0F04Bh,0F04Ch,0F04Dh,0F04Eh,0F04Fh ; 247 dw 0F050h,0F051h,0F052h,0F053h,0F054h,0F055h,0F056h,0F057h ; F 248 dw 0F058h,0F059h,0F05Ah,0F05Bh,0F05Ch,0F05Dh,0F05Eh,0F05Fh ; L 249 dw 0F020h,0F021h,0F022h,0F023h,0F024h,0F025h,0F026h,0F027h ; A 250 dw 0F028h,0F029h,0F02Ah,0F02Bh,0F02Ch,0F02Dh,0F02Eh,0F02Fh ; S 251 dw 0F030h,0F031h,0F032h,0F033h,0F034h,0F035h,0F036h,0F037h ; H 252 dw 0F038h,0F039h,0F03Ah,0F03Bh,0F03Ch,0F03Dh,0F03Eh,0F03Fh ; 253 254 dw 0740h,0741h,0742h,0743h,0744h,0745h,0746h,0747h ; C 255 dw 0748h,0749h,074Ah,074Bh,074Ch,074Dh,074Eh,074Fh ; T 256 dw 0750h,0751h,0752h,0753h,0754h,0755h,0756h,0757h ; R 257 dw 0758h,0759h,075Ah,075Bh,075Ch,075Dh,075Eh,075Fh ; L 258 259 dw 0720h,0721h,0722h,0723h,0724h,0725h,0726h,0727h ; 260 dw 0728h,0729h,072Ah,072Bh,072Ch,072Dh,072Eh,072Fh ; 261 dw 0730h,0731h,0732h,0733h,0734h,0735h,0736h,0737h ; 262 dw 0738h,0739h,073Ah,073Bh,073Ch,073Dh,073Eh,073Fh ; N 263 dw 0740h,0741h,0742h,0743h,0744h,0745h,0746h,0747h ; O 264 dw 0748h,0749h,074Ah,074Bh,074Ch,074Dh,074Eh,074Fh ; R 265 dw 0750h,0751h,0752h,0753h,0754h,0755h,0756h,0757h ; M 266 dw 0758h,0759h,075Ah,075Bh,075Ch,075Dh,075Eh,075Fh ; A 267 dw 0760h,0761h,0762h,0763h,0764h,0765h,0766h,0767h ; L 268 dw 0768h,0769h,076Ah,076Bh,076Ch,076Dh,076Eh,076Fh ; 269 dw 0770h,0771h,0772h,0773h,0774h,0775h,0776h,0777h ; 270 dw 0778h,0779h,077Ah,077Bh,077Ch,077Dh,077Eh,07B1h ; 271 272 273 GRcolors db 000h,004h,001h,005h,003h,007h,002h,009h 274 db 006h,00Dh,008h,00Ch,00Ah,00Eh,00Bh,00Fh 275 db 040h,044h,041h,045h,043h,047h,042h,049h 276 db 046h,04Dh,048h,04Ch,04Ah,04Eh,04Bh,04Fh 277 db 010h,014h,011h,015h,013h,017h,012h,019h 278 db 016h,01Dh,018h,01Ch,01Ah,01Eh,01Bh,01Fh 279 db 050h,054h,051h,055h,053h,057h,052h,059h 280 db 056h,05Dh,058h,05Ch,05Ah,05Eh,05Bh,05Fh 281 db 030h,034h,031h,035h,033h,037h,032h,039h 282 db 036h,03Dh,038h,03Ch,03Ah,03Eh,03Bh,03Fh 283 db 070h,074h,071h,075h,073h,077h,072h,079h 284 db 076h,07Dh,078h,07Ch,07Ah,07Eh,07Bh,07Fh 285 db 020h,024h,021h,025h,023h,027h,022h,029h 286 db 026h,02Dh,028h,02Ch,02Ah,02Eh,02Bh,02Fh 287 db 090h,094h,091h,095h,093h,097h,092h,099h 288 db 096h,09Dh,098h,09Ch,09Ah,09Eh,09Bh,09Fh 289 db 060h,064h,061h,065h,063h,067h,062h,069h 290 db 066h,06Dh,068h,06Ch,06Ah,06Eh,06Bh,06Fh 291 db 0D0h,0D4h,0D1h,0D5h,0D3h,0D7h,0D2h,0D9h 292 db 0D6h,0DDh,0D8h,0DCh,0DAh,0DEh,0DBh,0DFh 293 db 080h,084h,081h,085h,083h,087h,082h,089h 294 db 086h,08Dh,088h,08Ch,08Ah,08Eh,08Bh,08Fh 295 db 0C0h,0C4h,0C1h,0C5h,0C3h,0C7h,0C2h,0C9h 296 db 0C6h,0CDh,0C8h,0CCh,0CAh,0CEh,0CBh,0CFh 297 db 0A0h,0A4h,0A1h,0A5h,0A3h,0A7h,0A2h,0A9h 298 db 0A6h,0ADh,0A8h,0ACh,0AAh,0AEh,0ABh,0AFh 299 db 0E0h,0E4h,0E1h,0E5h,0E3h,0E7h,0E2h,0E9h 300 db 0E6h,0EDh,0E8h,0ECh,0EAh,0EEh,0EBh,0EFh 301 db 0B0h,0B4h,0B1h,0B5h,0B3h,0B7h,0B2h,0B9h 302 db 0B6h,0BDh,0B8h,0BCh,0BAh,0BEh,0BBh,0BFh 303 db 0F0h,0F4h,0F1h,0F5h,0F3h,0F7h,0F2h,0F9h 304 db 0F6h,0FDh,0F8h,0FCh,0FAh,0FEh,0FBh,0FFh 305 306 even 307 DACtable db 00h,00h,00h,00h,00h,2Ah,00h,2Ah,00h,00h,2Ah,2Ah,2Ah,00h,00h,2Ah 308 db 00h,2Ah,2Ah,2Ah,00h,2Ah,2Ah,2Ah,00h,00h,15h,00h,00h,3Fh,00h,2Ah 309 db 15h,00h,2Ah,3Fh,2Ah,00h,15h,2Ah,00h,3Fh,2Ah,2Ah,15h,2Ah,2Ah,3Fh 310 db 00h,15h,00h,00h,15h,2Ah,00h,3Fh,00h,00h,3Fh,2Ah,2Ah,15h,00h,2Ah 311 db 15h,2Ah,2Ah,3Fh,00h,2Ah,3Fh,2Ah,00h,15h,15h,00h,15h,3Fh,00h,3Fh 312 db 15h,00h,3Fh,3Fh,2Ah,15h,15h,2Ah,15h,3Fh,2Ah,3Fh,15h,2Ah,3Fh,3Fh 313 db 15h,00h,00h,15h,00h,2Ah,15h,2Ah,00h,15h,2Ah,2Ah,3Fh,00h,00h,3Fh 314 db 00h,2Ah,3Fh,2Ah,00h,3Fh,2Ah,2Ah,15h,00h,15h,15h,00h,3Fh,15h,2Ah 315 db 15h,15h,2Ah,3Fh,3Fh,00h,15h,3Fh,00h,3Fh,3Fh,2Ah,15h,3Fh,2Ah,3Fh 316 db 15h,15h,00h,15h,15h,2Ah,15h,3Fh,00h,15h,3Fh,2Ah,3Fh,15h,00h,3Fh 317 db 15h,2Ah,3Fh,3Fh,00h,3Fh,3Fh,2Ah,15h,15h,15h,15h,15h,3Fh,15h,3Fh 318 db 15h,15h,3Fh,3Fh,3Fh,15h,15h,3Fh,15h,3Fh,3Fh,3Fh,15h,3Fh,3Fh,3Fh 319 320 Data ends 321 322 END