1 ; **************************************************************************** 2 ; blocks3.s - TRDOS 386 (TRDOS v2.0.3) Test Program - 'sysvideo' pixel tests 3 ; ---------------------------------------------------------------------------- 4 ; 5 ; 22/02/2021 6 ; 7 ; **************************************************************************** 8 ; nasm blocks3.s -l blocks3.txt -o BLOCKS3.PRG -Z error.txt 9 ; (modified from 'blocks2.s', 21/02/2021) 10 11 ; 'sysvideo' bh = 2, block copy and modification test (VESA VBE mode 101h) 12 13 ; 14/07/2020 14 ; 31/12/2017 15 ; TRDOS 386 (v2.0) system calls 16 _ver equ 0 17 _exit equ 1 18 _fork equ 2 19 _read equ 3 20 _write equ 4 21 _open equ 5 22 _close equ 6 23 _wait equ 7 24 _create equ 8 25 _rename equ 9 26 _delete equ 10 27 _exec equ 11 28 _chdir equ 12 29 _time equ 13 30 _mkdir equ 14 31 _chmod equ 15 32 _rmdir equ 16 33 _break equ 17 34 _drive equ 18 35 _seek equ 19 36 _tell equ 20 37 _memory equ 21 38 _prompt equ 22 39 _path equ 23 40 _env equ 24 41 _stime equ 25 42 _quit equ 26 43 _intr equ 27 44 _dir equ 28 45 _emt equ 29 46 _ldrvt equ 30 47 _video equ 31 48 _audio equ 32 49 _timer equ 33 50 _sleep equ 34 51 _msg equ 35 52 _geterr equ 36 53 _fpstat equ 37 54 _pri equ 38 55 _rele equ 39 56 _fff equ 40 57 _fnf equ 41 58 _alloc equ 42 59 _dalloc equ 43 60 _calbac equ 44 61 _dma equ 45 62 63 %macro sys 1-4 64 ; 29/04/2016 - TRDOS 386 (TRDOS v2.0) 65 ; 03/09/2015 66 ; 13/04/2015 67 ; Retro UNIX 386 v1 system call. 68 %if %0 >= 2 69 mov ebx, %2 70 %if %0 >= 3 71 mov ecx, %3 72 %if %0 = 4 73 mov edx, %4 74 %endif 75 %endif 76 %endif 77 mov eax, %1 78 ;int 30h 79 int 40h ; TRDOS 386 (TRDOS v2.0) 80 %endmacro 81 82 ; Retro UNIX 386 v1 system call format: 83 ; sys systemcall (eax) , , 84 85 [BITS 32] ; We need 32-bit intructions for protected mode 86 87 [ORG 0] 88 89 START_CODE: 90 ; clear bss 91 00000000 BF[C4070000] mov edi, bss_start 92 00000005 B9012C0100 mov ecx, (bss_end - bss_start)/4 93 ;xor eax, eax 94 0000000A F3AB rep stosd 95 96 ; program message 97 0000000C BE[00070000] mov esi, program_msg 98 00000011 E8B6060000 call print_msg 99 100 00000016 30E4 xor ah, ah 101 ;int 16h ; KEYBOARD - READ CHAR FROM BUFFER, WAIT IF EMPTY 102 ; Return: AH = scan code, AL = character 103 00000018 CD32 int 32h ; TRDOS 386 Keyboard interrupt 104 105 ; Set Video Mode to 101h ; 640x480, 256 colors 106 sys _video, 08FFh, 101h 106 <1> 106 <1> 106 <1> 106 <1> 106 <1> %if %0 >= 2 106 0000001A BBFF080000 <1> mov ebx, %2 106 <1> %if %0 >= 3 106 0000001F B901010000 <1> mov ecx, %3 106 <1> %if %0 = 4 106 <1> mov edx, %4 106 <1> %endif 106 <1> %endif 106 <1> %endif 106 00000024 B81F000000 <1> mov eax, %1 106 <1> 106 00000029 CD40 <1> int 40h 107 0000002B 09C0 or eax, eax 108 ;jz short terminate 109 ;mov [LFB_ADDR], edx ; pointer to LFB info table/structure 110 0000002D 7505 jnz short set_vesa_mode_101h_ok 111 0000002F E960060000 jmp terminate 112 113 set_vesa_mode_101h_ok: 114 ; Set initial block colors 115 00000034 B9C0120000 mov ecx, (120*160)/4 116 00000039 B80F0F0F0F mov eax, 0F0F0F0Fh ; white 117 0000003E BF[C8070000] mov edi, whiteblock 118 00000043 F3AB rep stosd 119 00000045 66B9C012 mov cx, 120*40 120 00000049 B820202020 mov eax, 20202020h ; blue 121 0000004E BF[C8520000] mov edi, blueblock 122 00000053 F3AB rep stosd 123 00000055 66B9C012 mov cx, 120*40 124 00000059 B828282828 mov eax, 28282828h ; red 125 0000005E BF[C89D0000] mov edi, redblock 126 00000063 F3AB rep stosd 127 00000065 66B9C012 mov cx, 120*40 128 00000069 B830303030 mov eax, 30303030h ; green 129 0000006E BF[C8E80000] mov edi, greenblock 130 00000073 F3AB rep stosd 131 00000075 66B9C012 mov cx, 120*40 132 00000079 B82C2C2C2C mov eax, 2C2C2C2Ch ; yellow 133 0000007E BF[C8330100] mov edi, yellowblock 134 00000083 F3AB rep stosd 135 136 ; copy white block to screen 137 ; at row 70, column 120 138 ; (block size: 120(w)*160(h) 139 140 00000085 B978004600 mov ecx, (70*65536)+120 141 0000008A BA7800A000 mov edx, (160*65536)+120 142 0000008F BE[C8070000] mov esi, whiteblock 143 00000094 BB10020000 mov ebx, 0210h ; non masked window copy 144 sys _video 144 <1> 144 <1> 144 <1> 144 <1> 144 <1> %if %0 >= 2 144 <1> mov ebx, %2 144 <1> %if %0 >= 3 144 <1> mov ecx, %3 144 <1> %if %0 = 4 144 <1> mov edx, %4 144 <1> %endif 144 <1> %endif 144 <1> %endif 144 00000099 B81F000000 <1> mov eax, %1 144 <1> 144 0000009E CD40 <1> int 40h 145 146 ; copy blue block to screen 147 ; at row 160, column 260 148 ; (block size: 120(w)*160(h) 149 150 000000A0 B90401A000 mov ecx, (160*65536)+260 151 000000A5 BA7800A000 mov edx, (160*65536)+120 152 000000AA BE[C8520000] mov esi, blueblock 153 000000AF BB10020000 mov ebx, 0210h ; non masked window copy 154 sys _video 154 <1> 154 <1> 154 <1> 154 <1> 154 <1> %if %0 >= 2 154 <1> mov ebx, %2 154 <1> %if %0 >= 3 154 <1> mov ecx, %3 154 <1> %if %0 = 4 154 <1> mov edx, %4 154 <1> %endif 154 <1> %endif 154 <1> %endif 154 000000B4 B81F000000 <1> mov eax, %1 154 <1> 154 000000B9 CD40 <1> int 40h 155 156 ; copy red block to screen 157 ; at row 250, column 120 158 ; (block size: 120(w)*160(h) 159 160 000000BB B97800FA00 mov ecx, (250*65536)+120 161 000000C0 BA7800A000 mov edx, (160*65536)+120 162 000000C5 BE[C89D0000] mov esi, redblock 163 000000CA BB10020000 mov ebx, 0210h ; non masked window copy 164 sys _video 164 <1> 164 <1> 164 <1> 164 <1> 164 <1> %if %0 >= 2 164 <1> mov ebx, %2 164 <1> %if %0 >= 3 164 <1> mov ecx, %3 164 <1> %if %0 = 4 164 <1> mov edx, %4 164 <1> %endif 164 <1> %endif 164 <1> %endif 164 000000CF B81F000000 <1> mov eax, %1 164 <1> 164 000000D4 CD40 <1> int 40h 165 166 ; copy green block to screen 167 ; at row 70, column 400 168 ; (block size: 120(w)*160(h) 169 170 000000D6 B990014600 mov ecx, (70*65536)+400 171 000000DB BA7800A000 mov edx, (160*65536)+120 172 000000E0 BE[C8E80000] mov esi, greenblock 173 000000E5 BB10020000 mov ebx, 0210h ; non masked window copy 174 sys _video 174 <1> 174 <1> 174 <1> 174 <1> 174 <1> %if %0 >= 2 174 <1> mov ebx, %2 174 <1> %if %0 >= 3 174 <1> mov ecx, %3 174 <1> %if %0 = 4 174 <1> mov edx, %4 174 <1> %endif 174 <1> %endif 174 <1> %endif 174 000000EA B81F000000 <1> mov eax, %1 174 <1> 174 000000EF CD40 <1> int 40h 175 176 ; copy yellow block to screen 177 ; at row 250, column 400 178 ; (block size: 120(w)*160(h) 179 180 000000F1 B99001FA00 mov ecx, (250*65536)+400 181 000000F6 BA7800A000 mov edx, (160*65536)+120 182 000000FB BE[C8330100] mov esi, yellowblock 183 00000100 BB10020000 mov ebx, 0210h ; non masked window copy 184 sys _video 184 <1> 184 <1> 184 <1> 184 <1> 184 <1> %if %0 >= 2 184 <1> mov ebx, %2 184 <1> %if %0 >= 3 184 <1> mov ecx, %3 184 <1> %if %0 = 4 184 <1> mov edx, %4 184 <1> %endif 184 <1> %endif 184 <1> %endif 184 00000105 B81F000000 <1> mov eax, %1 184 <1> 184 0000010A CD40 <1> int 40h 185 186 0000010C E891050000 call waitforkey 187 188 ; continue by using 189 ; window color modification sub functions 190 191 ; apply ADD to pixel colors of 192 ; the window/block on row 70, column 120 with 193 ; block size 120(w)*160(h). 194 00000111 B120 mov cl, 32 195 00000113 BA78004600 mov edx, (70*65536)+120 196 00000118 BE7800A000 mov esi, (160*65536)+120 197 0000011D BB12020000 mov ebx, 0212h ; non masked window ADD op 198 sys _video 198 <1> 198 <1> 198 <1> 198 <1> 198 <1> %if %0 >= 2 198 <1> mov ebx, %2 198 <1> %if %0 >= 3 198 <1> mov ecx, %3 198 <1> %if %0 = 4 198 <1> mov edx, %4 198 <1> %endif 198 <1> %endif 198 <1> %endif 198 00000122 B81F000000 <1> mov eax, %1 198 <1> 198 00000127 CD40 <1> int 40h 199 200 00000129 E874050000 call waitforkey 201 202 ; apply SUB to window's pixel colors 203 0000012E B120 mov cl, 32 204 00000130 BA78004600 mov edx, (70*65536)+120 205 ;mov esi, (160*65536)+120 206 00000135 BB13020000 mov ebx, 0213h ; non masked window SUB op 207 sys _video 207 <1> 207 <1> 207 <1> 207 <1> 207 <1> %if %0 >= 2 207 <1> mov ebx, %2 207 <1> %if %0 >= 3 207 <1> mov ecx, %3 207 <1> %if %0 = 4 207 <1> mov edx, %4 207 <1> %endif 207 <1> %endif 207 <1> %endif 207 0000013A B81F000000 <1> mov eax, %1 207 <1> 207 0000013F CD40 <1> int 40h 208 209 00000141 E85C050000 call waitforkey 210 211 ; apply ADD to pixel colors of 212 ; the window/block on row 160, column 260 with 213 ; block size 120(w)*160(h). 214 00000146 B120 mov cl, 32 215 00000148 BA0401A000 mov edx, (160*65536)+260 216 ;mov esi, (160*65536)+120 217 0000014D BB12020000 mov ebx, 0212h ; non masked window ADD op 218 sys _video 218 <1> 218 <1> 218 <1> 218 <1> 218 <1> %if %0 >= 2 218 <1> mov ebx, %2 218 <1> %if %0 >= 3 218 <1> mov ecx, %3 218 <1> %if %0 = 4 218 <1> mov edx, %4 218 <1> %endif 218 <1> %endif 218 <1> %endif 218 00000152 B81F000000 <1> mov eax, %1 218 <1> 218 00000157 CD40 <1> int 40h 219 220 00000159 E844050000 call waitforkey 221 222 ; apply SUB to window's pixel colors 223 0000015E B120 mov cl, 32 224 00000160 BA0401A000 mov edx, (160*65536)+260 225 ;mov esi, (160*65536)+120 226 00000165 BB13020000 mov ebx, 0213h ; non masked window SUB op 227 sys _video 227 <1> 227 <1> 227 <1> 227 <1> 227 <1> %if %0 >= 2 227 <1> mov ebx, %2 227 <1> %if %0 >= 3 227 <1> mov ecx, %3 227 <1> %if %0 = 4 227 <1> mov edx, %4 227 <1> %endif 227 <1> %endif 227 <1> %endif 227 0000016A B81F000000 <1> mov eax, %1 227 <1> 227 0000016F CD40 <1> int 40h 228 229 00000171 E82C050000 call waitforkey 230 231 ; apply ADD to pixel colors of 232 ; the window/block on row 250, column 120 with 233 ; block size 120(w)*160(h). 234 00000176 B120 mov cl, 32 235 00000178 BA7800FA00 mov edx, (250*65536)+120 236 ;mov esi, (160*65536)+120 237 0000017D BB12020000 mov ebx, 0212h ; non masked window ADD op 238 sys _video 238 <1> 238 <1> 238 <1> 238 <1> 238 <1> %if %0 >= 2 238 <1> mov ebx, %2 238 <1> %if %0 >= 3 238 <1> mov ecx, %3 238 <1> %if %0 = 4 238 <1> mov edx, %4 238 <1> %endif 238 <1> %endif 238 <1> %endif 238 00000182 B81F000000 <1> mov eax, %1 238 <1> 238 00000187 CD40 <1> int 40h 239 240 00000189 E814050000 call waitforkey 241 242 ; apply SUB to window's pixel colors 243 0000018E B120 mov cl, 32 244 00000190 BA7800FA00 mov edx, (250*65536)+120 245 ;mov esi, (160*65536)+120 246 00000195 BB13020000 mov ebx, 0213h ; non masked window SUB op 247 sys _video 247 <1> 247 <1> 247 <1> 247 <1> 247 <1> %if %0 >= 2 247 <1> mov ebx, %2 247 <1> %if %0 >= 3 247 <1> mov ecx, %3 247 <1> %if %0 = 4 247 <1> mov edx, %4 247 <1> %endif 247 <1> %endif 247 <1> %endif 247 0000019A B81F000000 <1> mov eax, %1 247 <1> 247 0000019F CD40 <1> int 40h 248 249 000001A1 E8FC040000 call waitforkey 250 251 ; apply ADD to pixel colors of 252 ; the window/block on row 70, column 400 with 253 ; block size 120(w)*160(h). 254 000001A6 B120 mov cl, 32 255 000001A8 BA90014600 mov edx, (70*65536)+400 256 ;mov esi, (160*65536)+120 257 000001AD BB12020000 mov ebx, 0212h ; non masked window ADD op 258 sys _video 258 <1> 258 <1> 258 <1> 258 <1> 258 <1> %if %0 >= 2 258 <1> mov ebx, %2 258 <1> %if %0 >= 3 258 <1> mov ecx, %3 258 <1> %if %0 = 4 258 <1> mov edx, %4 258 <1> %endif 258 <1> %endif 258 <1> %endif 258 000001B2 B81F000000 <1> mov eax, %1 258 <1> 258 000001B7 CD40 <1> int 40h 259 260 000001B9 E8E4040000 call waitforkey 261 262 ; apply SUB to window's pixel colors 263 000001BE B120 mov cl, 32 264 000001C0 BA90014600 mov edx, (70*65536)+400 265 ;mov esi, (160*65536)+120 266 000001C5 BB13020000 mov ebx, 0213h ; non masked window SUB op 267 sys _video 267 <1> 267 <1> 267 <1> 267 <1> 267 <1> %if %0 >= 2 267 <1> mov ebx, %2 267 <1> %if %0 >= 3 267 <1> mov ecx, %3 267 <1> %if %0 = 4 267 <1> mov edx, %4 267 <1> %endif 267 <1> %endif 267 <1> %endif 267 000001CA B81F000000 <1> mov eax, %1 267 <1> 267 000001CF CD40 <1> int 40h 268 269 000001D1 E8CC040000 call waitforkey 270 271 ; apply ADD to pixel colors of 272 ; the window/block on row 250, column 400 with 273 ; block size 120(w)*160(h). 274 000001D6 B120 mov cl, 32 275 000001D8 BA9001FA00 mov edx, (250*65536)+400 276 ;mov esi, (160*65536)+120 277 000001DD BB12020000 mov ebx, 0212h ; non masked window ADD op 278 sys _video 278 <1> 278 <1> 278 <1> 278 <1> 278 <1> %if %0 >= 2 278 <1> mov ebx, %2 278 <1> %if %0 >= 3 278 <1> mov ecx, %3 278 <1> %if %0 = 4 278 <1> mov edx, %4 278 <1> %endif 278 <1> %endif 278 <1> %endif 278 000001E2 B81F000000 <1> mov eax, %1 278 <1> 278 000001E7 CD40 <1> int 40h 279 280 000001E9 E8B4040000 call waitforkey 281 282 ; apply SUB to window's pixel colors 283 000001EE B120 mov cl, 32 284 000001F0 BA9001FA00 mov edx, (250*65536)+400 285 ;mov esi, (160*65536)+120 286 000001F5 BB13020000 mov ebx, 0213h ; non masked window SUB op 287 sys _video 287 <1> 287 <1> 287 <1> 287 <1> 287 <1> %if %0 >= 2 287 <1> mov ebx, %2 287 <1> %if %0 >= 3 287 <1> mov ecx, %3 287 <1> %if %0 = 4 287 <1> mov edx, %4 287 <1> %endif 287 <1> %endif 287 <1> %endif 287 000001FA B81F000000 <1> mov eax, %1 287 <1> 287 000001FF CD40 <1> int 40h 288 289 00000201 E89C040000 call waitforkey 290 291 ; or, and, xor 292 293 ; apply AND to window's pixel colors 294 00000206 B10F mov cl, 15 295 00000208 BA78004600 mov edx, (70*65536)+120 296 ;mov esi, (160*65536)+120 297 0000020D BB15020000 mov ebx, 0215h ; non masked window AND op 298 sys _video 298 <1> 298 <1> 298 <1> 298 <1> 298 <1> %if %0 >= 2 298 <1> mov ebx, %2 298 <1> %if %0 >= 3 298 <1> mov ecx, %3 298 <1> %if %0 = 4 298 <1> mov edx, %4 298 <1> %endif 298 <1> %endif 298 <1> %endif 298 00000212 B81F000000 <1> mov eax, %1 298 <1> 298 00000217 CD40 <1> int 40h 299 300 00000219 E884040000 call waitforkey 301 302 ; apply AND to pixel colors of 303 ; the window/block on row 160, column 260 with 304 ; block size 120(w)*160(h). 305 0000021E B10F mov cl, 15 306 00000220 BA0401A000 mov edx, (160*65536)+260 307 ;mov esi, (160*65536)+120 308 00000225 BB15020000 mov ebx, 0215h ; non masked window AND op 309 sys _video 309 <1> 309 <1> 309 <1> 309 <1> 309 <1> %if %0 >= 2 309 <1> mov ebx, %2 309 <1> %if %0 >= 3 309 <1> mov ecx, %3 309 <1> %if %0 = 4 309 <1> mov edx, %4 309 <1> %endif 309 <1> %endif 309 <1> %endif 309 0000022A B81F000000 <1> mov eax, %1 309 <1> 309 0000022F CD40 <1> int 40h 310 311 00000231 E86C040000 call waitforkey 312 313 ; apply AND to pixel colors of 314 ; the window/block on row 250, column 120 with 315 ; block size 120(w)*160(h). 316 00000236 B10F mov cl, 15 317 00000238 BA7800FA00 mov edx, (250*65536)+120 318 ;mov esi, (160*65536)+120 319 0000023D BB15020000 mov ebx, 0215h ; non masked window AND op 320 sys _video 320 <1> 320 <1> 320 <1> 320 <1> 320 <1> %if %0 >= 2 320 <1> mov ebx, %2 320 <1> %if %0 >= 3 320 <1> mov ecx, %3 320 <1> %if %0 = 4 320 <1> mov edx, %4 320 <1> %endif 320 <1> %endif 320 <1> %endif 320 00000242 B81F000000 <1> mov eax, %1 320 <1> 320 00000247 CD40 <1> int 40h 321 322 00000249 E854040000 call waitforkey 323 324 ; apply AND to pixel colors of 325 ; the window/block on row 70, column 400 with 326 ; block size 120(w)*160(h). 327 0000024E B10F mov cl, 15 328 00000250 BA90014600 mov edx, (70*65536)+400 329 ;mov esi, (160*65536)+120 330 00000255 BB15020000 mov ebx, 0215h ; non masked window AND op 331 sys _video 331 <1> 331 <1> 331 <1> 331 <1> 331 <1> %if %0 >= 2 331 <1> mov ebx, %2 331 <1> %if %0 >= 3 331 <1> mov ecx, %3 331 <1> %if %0 = 4 331 <1> mov edx, %4 331 <1> %endif 331 <1> %endif 331 <1> %endif 331 0000025A B81F000000 <1> mov eax, %1 331 <1> 331 0000025F CD40 <1> int 40h 332 333 00000261 E83C040000 call waitforkey 334 335 ; apply AND to pixel colors of 336 ; the window/block on row 250, column 400 with 337 ; block size 120(w)*160(h). 338 00000266 B10F mov cl, 15 339 00000268 BA9001FA00 mov edx, (250*65536)+400 340 ;mov esi, (160*65536)+120 341 0000026D BB15020000 mov ebx, 0215h ; non masked window AND op 342 sys _video 342 <1> 342 <1> 342 <1> 342 <1> 342 <1> %if %0 >= 2 342 <1> mov ebx, %2 342 <1> %if %0 >= 3 342 <1> mov ecx, %3 342 <1> %if %0 = 4 342 <1> mov edx, %4 342 <1> %endif 342 <1> %endif 342 <1> %endif 342 00000272 B81F000000 <1> mov eax, %1 342 <1> 342 00000277 CD40 <1> int 40h 343 344 00000279 E824040000 call waitforkey 345 346 ; apply OR to pixel colors of 347 ; the window/block on row 70, column 120 with 348 ; block size 120(w)*160(h). 349 0000027E B120 mov cl, 32 350 00000280 BA78004600 mov edx, (70*65536)+120 351 ;mov esi, (160*65536)+120 352 00000285 BB14020000 mov ebx, 0214h ; non masked window OR op 353 sys _video 353 <1> 353 <1> 353 <1> 353 <1> 353 <1> %if %0 >= 2 353 <1> mov ebx, %2 353 <1> %if %0 >= 3 353 <1> mov ecx, %3 353 <1> %if %0 = 4 353 <1> mov edx, %4 353 <1> %endif 353 <1> %endif 353 <1> %endif 353 0000028A B81F000000 <1> mov eax, %1 353 <1> 353 0000028F CD40 <1> int 40h 354 355 00000291 E80C040000 call waitforkey 356 357 ; apply OR to pixel colors of 358 ; the window/block on row 160, column 260 with 359 ; block size 120(w)*160(h). 360 00000296 B120 mov cl, 32 361 00000298 BA0401A000 mov edx, (160*65536)+260 362 ;mov esi, (160*65536)+120 363 0000029D BB14020000 mov ebx, 0214h ; non masked window OR op 364 sys _video 364 <1> 364 <1> 364 <1> 364 <1> 364 <1> %if %0 >= 2 364 <1> mov ebx, %2 364 <1> %if %0 >= 3 364 <1> mov ecx, %3 364 <1> %if %0 = 4 364 <1> mov edx, %4 364 <1> %endif 364 <1> %endif 364 <1> %endif 364 000002A2 B81F000000 <1> mov eax, %1 364 <1> 364 000002A7 CD40 <1> int 40h 365 366 000002A9 E8F4030000 call waitforkey 367 368 ; apply OR to pixel colors of 369 ; the window/block on row 250, column 120 with 370 ; block size 120(w)*160(h). 371 000002AE B120 mov cl, 32 372 000002B0 BA7800FA00 mov edx, (250*65536)+120 373 ;mov esi, (160*65536)+120 374 000002B5 BB14020000 mov ebx, 0214h ; non masked window OR op 375 sys _video 375 <1> 375 <1> 375 <1> 375 <1> 375 <1> %if %0 >= 2 375 <1> mov ebx, %2 375 <1> %if %0 >= 3 375 <1> mov ecx, %3 375 <1> %if %0 = 4 375 <1> mov edx, %4 375 <1> %endif 375 <1> %endif 375 <1> %endif 375 000002BA B81F000000 <1> mov eax, %1 375 <1> 375 000002BF CD40 <1> int 40h 376 377 000002C1 E8DC030000 call waitforkey 378 379 ; apply OR to pixel colors of 380 ; the window/block on row 70, column 400 with 381 ; block size 120(w)*160(h). 382 000002C6 B120 mov cl, 32 383 000002C8 BA90014600 mov edx, (70*65536)+400 384 ;mov esi, (160*65536)+120 385 000002CD BB14020000 mov ebx, 0214h ; non masked window OR op 386 sys _video 386 <1> 386 <1> 386 <1> 386 <1> 386 <1> %if %0 >= 2 386 <1> mov ebx, %2 386 <1> %if %0 >= 3 386 <1> mov ecx, %3 386 <1> %if %0 = 4 386 <1> mov edx, %4 386 <1> %endif 386 <1> %endif 386 <1> %endif 386 000002D2 B81F000000 <1> mov eax, %1 386 <1> 386 000002D7 CD40 <1> int 40h 387 388 000002D9 E8C4030000 call waitforkey 389 390 ; apply OR to pixel colors of 391 ; the window/block on row 250, column 400 with 392 ; block size 120(w)*160(h). 393 000002DE B120 mov cl, 32 394 000002E0 BA9001FA00 mov edx, (250*65536)+400 395 ;mov esi, (160*65536)+120 396 000002E5 BB14020000 mov ebx, 0214h ; non masked window OR op 397 sys _video 397 <1> 397 <1> 397 <1> 397 <1> 397 <1> %if %0 >= 2 397 <1> mov ebx, %2 397 <1> %if %0 >= 3 397 <1> mov ecx, %3 397 <1> %if %0 = 4 397 <1> mov edx, %4 397 <1> %endif 397 <1> %endif 397 <1> %endif 397 000002EA B81F000000 <1> mov eax, %1 397 <1> 397 000002EF CD40 <1> int 40h 398 399 000002F1 E8AC030000 call waitforkey 400 401 ; apply XOR to pixel colors of 402 ; the window/block on row 70, column 120 with 403 ; block size 120(w)*160(h). 404 000002F6 B13F mov cl, 63 405 000002F8 BA78004600 mov edx, (70*65536)+120 406 ;mov esi, (160*65536)+120 407 000002FD BB16020000 mov ebx, 0216h ; non masked window XOR op 408 sys _video 408 <1> 408 <1> 408 <1> 408 <1> 408 <1> %if %0 >= 2 408 <1> mov ebx, %2 408 <1> %if %0 >= 3 408 <1> mov ecx, %3 408 <1> %if %0 = 4 408 <1> mov edx, %4 408 <1> %endif 408 <1> %endif 408 <1> %endif 408 00000302 B81F000000 <1> mov eax, %1 408 <1> 408 00000307 CD40 <1> int 40h 409 410 00000309 E894030000 call waitforkey 411 412 ; apply XOR to pixel colors of 413 ; the window/block on row 160, column 260 with 414 ; block size 120(w)*160(h). 415 0000030E B13F mov cl, 63 416 00000310 BA0401A000 mov edx, (160*65536)+260 417 ;mov esi, (160*65536)+120 418 00000315 BB16020000 mov ebx, 0216h ; non masked window XOR op 419 sys _video 419 <1> 419 <1> 419 <1> 419 <1> 419 <1> %if %0 >= 2 419 <1> mov ebx, %2 419 <1> %if %0 >= 3 419 <1> mov ecx, %3 419 <1> %if %0 = 4 419 <1> mov edx, %4 419 <1> %endif 419 <1> %endif 419 <1> %endif 419 0000031A B81F000000 <1> mov eax, %1 419 <1> 419 0000031F CD40 <1> int 40h 420 421 00000321 E87C030000 call waitforkey 422 423 ; apply XOR to pixel colors of 424 ; the window/block on row 250, column 120 with 425 ; block size 120(w)*160(h). 426 00000326 B13F mov cl, 63 427 00000328 BA7800FA00 mov edx, (250*65536)+120 428 ;mov esi, (160*65536)+120 429 0000032D BB16020000 mov ebx, 0216h ; non masked window XOR op 430 sys _video 430 <1> 430 <1> 430 <1> 430 <1> 430 <1> %if %0 >= 2 430 <1> mov ebx, %2 430 <1> %if %0 >= 3 430 <1> mov ecx, %3 430 <1> %if %0 = 4 430 <1> mov edx, %4 430 <1> %endif 430 <1> %endif 430 <1> %endif 430 00000332 B81F000000 <1> mov eax, %1 430 <1> 430 00000337 CD40 <1> int 40h 431 432 00000339 E864030000 call waitforkey 433 434 ; apply XOR to pixel colors of 435 ; the window/block on row 70, column 400 with 436 ; block size 120(w)*160(h). 437 0000033E B13F mov cl, 63 438 00000340 BA90014600 mov edx, (70*65536)+400 439 ;mov esi, (160*65536)+120 440 00000345 BB16020000 mov ebx, 0216h ; non masked window XOR op 441 sys _video 441 <1> 441 <1> 441 <1> 441 <1> 441 <1> %if %0 >= 2 441 <1> mov ebx, %2 441 <1> %if %0 >= 3 441 <1> mov ecx, %3 441 <1> %if %0 = 4 441 <1> mov edx, %4 441 <1> %endif 441 <1> %endif 441 <1> %endif 441 0000034A B81F000000 <1> mov eax, %1 441 <1> 441 0000034F CD40 <1> int 40h 442 443 00000351 E84C030000 call waitforkey 444 445 ; apply XOR to pixel colors of 446 ; the window/block on row 250, column 400 with 447 ; block size 120(w)*160(h). 448 00000356 B13F mov cl, 63 449 00000358 BA9001FA00 mov edx, (250*65536)+400 450 ;mov esi, (160*65536)+120 451 0000035D BB16020000 mov ebx, 0216h ; non masked window XOR op 452 sys _video 452 <1> 452 <1> 452 <1> 452 <1> 452 <1> %if %0 >= 2 452 <1> mov ebx, %2 452 <1> %if %0 >= 3 452 <1> mov ecx, %3 452 <1> %if %0 = 4 452 <1> mov edx, %4 452 <1> %endif 452 <1> %endif 452 <1> %endif 452 00000362 B81F000000 <1> mov eax, %1 452 <1> 452 00000367 CD40 <1> int 40h 453 454 00000369 E834030000 call waitforkey 455 456 ; Mix colors 457 458 ; MIX pixel colors of 459 ; the window/block on row 70, column 120 with 460 ; block size 120(w)*160(h). 461 0000036E B110 mov cl, 16 462 00000370 BA78004600 mov edx, (70*65536)+120 463 ;mov esi, (160*65536)+120 464 00000375 BB1B020000 mov ebx, 021Bh ; non masked window MIX op 465 sys _video 465 <1> 465 <1> 465 <1> 465 <1> 465 <1> %if %0 >= 2 465 <1> mov ebx, %2 465 <1> %if %0 >= 3 465 <1> mov ecx, %3 465 <1> %if %0 = 4 465 <1> mov edx, %4 465 <1> %endif 465 <1> %endif 465 <1> %endif 465 0000037A B81F000000 <1> mov eax, %1 465 <1> 465 0000037F CD40 <1> int 40h 466 467 00000381 E81C030000 call waitforkey 468 469 ; MIX pixel colors of 470 ; the window/block on row 160, column 260 with 471 ; block size 120(w)*160(h). 472 00000386 B110 mov cl, 16 473 00000388 BA0401A000 mov edx, (160*65536)+260 474 ;mov esi, (160*65536)+120 475 0000038D BB1B020000 mov ebx, 021Bh ; non masked window MIX op 476 sys _video 476 <1> 476 <1> 476 <1> 476 <1> 476 <1> %if %0 >= 2 476 <1> mov ebx, %2 476 <1> %if %0 >= 3 476 <1> mov ecx, %3 476 <1> %if %0 = 4 476 <1> mov edx, %4 476 <1> %endif 476 <1> %endif 476 <1> %endif 476 00000392 B81F000000 <1> mov eax, %1 476 <1> 476 00000397 CD40 <1> int 40h 477 478 00000399 E804030000 call waitforkey 479 480 ; MIX pixel colors of 481 ; the window/block on row 250, column 120 with 482 ; block size 120(w)*160(h). 483 0000039E B110 mov cl, 16 484 000003A0 BA7800FA00 mov edx, (250*65536)+120 485 ;mov esi, (160*65536)+120 486 000003A5 BB1B020000 mov ebx, 021Bh ; non masked window MIX op 487 sys _video 487 <1> 487 <1> 487 <1> 487 <1> 487 <1> %if %0 >= 2 487 <1> mov ebx, %2 487 <1> %if %0 >= 3 487 <1> mov ecx, %3 487 <1> %if %0 = 4 487 <1> mov edx, %4 487 <1> %endif 487 <1> %endif 487 <1> %endif 487 000003AA B81F000000 <1> mov eax, %1 487 <1> 487 000003AF CD40 <1> int 40h 488 489 000003B1 E8EC020000 call waitforkey 490 491 ; MIX pixel colors of 492 ; the window/block on row 70, column 400 with 493 ; block size 120(w)*160(h). 494 000003B6 B110 mov cl, 16 495 000003B8 BA90014600 mov edx, (70*65536)+400 496 ;mov esi, (160*65536)+120 497 000003BD BB1B020000 mov ebx, 021Bh ; non masked window MIX op 498 sys _video 498 <1> 498 <1> 498 <1> 498 <1> 498 <1> %if %0 >= 2 498 <1> mov ebx, %2 498 <1> %if %0 >= 3 498 <1> mov ecx, %3 498 <1> %if %0 = 4 498 <1> mov edx, %4 498 <1> %endif 498 <1> %endif 498 <1> %endif 498 000003C2 B81F000000 <1> mov eax, %1 498 <1> 498 000003C7 CD40 <1> int 40h 499 500 000003C9 E8D4020000 call waitforkey 501 502 ; MIX pixel colors of 503 ; the window/block on row 250, column 400 with 504 ; block size 120(w)*160(h). 505 000003CE B110 mov cl, 16 506 000003D0 BA9001FA00 mov edx, (250*65536)+400 507 ;mov esi, (160*65536)+120 508 000003D5 BB1B020000 mov ebx, 021Bh ; non masked window MIX op 509 sys _video 509 <1> 509 <1> 509 <1> 509 <1> 509 <1> %if %0 >= 2 509 <1> mov ebx, %2 509 <1> %if %0 >= 3 509 <1> mov ecx, %3 509 <1> %if %0 = 4 509 <1> mov edx, %4 509 <1> %endif 509 <1> %endif 509 <1> %endif 509 000003DA B81F000000 <1> mov eax, %1 509 <1> 509 000003DF CD40 <1> int 40h 510 511 000003E1 E8BC020000 call waitforkey 512 513 ; CHANGE color (full screen) 514 000003E6 31C9 xor ecx, ecx ; 0 ; black 515 000003E8 BB01020000 mov ebx, 0201h ; Full screen, new color 516 000003ED B900000100 mov ecx, 65536 517 blackloop: 518 000003F2 09C9 or ecx, ecx 519 000003F4 90 nop 520 000003F5 90 nop 521 000003F6 90 nop 522 000003F7 E2F9 loop blackloop 523 524 000003F9 B90F0F0F0F mov ecx, 0F0F0F0Fh ; white 525 000003FE BB01020000 mov ebx, 0201h ; Full screen, new color 526 sys _video 526 <1> 526 <1> 526 <1> 526 <1> 526 <1> %if %0 >= 2 526 <1> mov ebx, %2 526 <1> %if %0 >= 3 526 <1> mov ecx, %3 526 <1> %if %0 = 4 526 <1> mov edx, %4 526 <1> %endif 526 <1> %endif 526 <1> %endif 526 00000403 B81F000000 <1> mov eax, %1 526 <1> 526 00000408 CD40 <1> int 40h 527 528 ;mov byte [tcolor], 0 529 0000040A BEF000D000 mov esi, 208*65536+240 530 0000040F BD[B1070000] mov ebp, txt_white 531 00000414 E8C4020000 call print_text 532 533 00000419 E884020000 call waitforkey 534 535 ; full screen add 536 0000041E B128 mov cl, 28h 537 00000420 B302 mov bl, 02h 538 sys _video 538 <1> 538 <1> 538 <1> 538 <1> 538 <1> %if %0 >= 2 538 <1> mov ebx, %2 538 <1> %if %0 >= 3 538 <1> mov ecx, %3 538 <1> %if %0 = 4 538 <1> mov edx, %4 538 <1> %endif 538 <1> %endif 538 <1> %endif 538 00000422 B81F000000 <1> mov eax, %1 538 <1> 538 00000427 CD40 <1> int 40h 539 540 00000429 E874020000 call waitforkey 541 542 ; full screen sub 543 0000042E B128 mov cl, 28h 544 00000430 B303 mov bl, 03h 545 sys _video 545 <1> 545 <1> 545 <1> 545 <1> 545 <1> %if %0 >= 2 545 <1> mov ebx, %2 545 <1> %if %0 >= 3 545 <1> mov ecx, %3 545 <1> %if %0 = 4 545 <1> mov edx, %4 545 <1> %endif 545 <1> %endif 545 <1> %endif 545 00000432 B81F000000 <1> mov eax, %1 545 <1> 545 00000437 CD40 <1> int 40h 546 547 00000439 E864020000 call waitforkey 548 549 0000043E B920202020 mov ecx, 20202020h ; blue 550 00000443 BB01020000 mov ebx, 0201h ; Full screen, new color 551 sys _video 551 <1> 551 <1> 551 <1> 551 <1> 551 <1> %if %0 >= 2 551 <1> mov ebx, %2 551 <1> %if %0 >= 3 551 <1> mov ecx, %3 551 <1> %if %0 = 4 551 <1> mov edx, %4 551 <1> %endif 551 <1> %endif 551 <1> %endif 551 00000448 B81F000000 <1> mov eax, %1 551 <1> 551 0000044D CD40 <1> int 40h 552 553 0000044F C605[C4070000]0F mov byte [tcolor], 0Fh 554 00000456 BE0201D000 mov esi, 208*65536+258 555 0000045B BD[9B070000] mov ebp, txt_blue 556 00000460 E878020000 call print_text 557 558 00000465 E838020000 call waitforkey 559 560 ; full screen add 561 0000046A B128 mov cl, 28h 562 0000046C B302 mov bl, 02h 563 sys _video 563 <1> 563 <1> 563 <1> 563 <1> 563 <1> %if %0 >= 2 563 <1> mov ebx, %2 563 <1> %if %0 >= 3 563 <1> mov ecx, %3 563 <1> %if %0 = 4 563 <1> mov edx, %4 563 <1> %endif 563 <1> %endif 563 <1> %endif 563 0000046E B81F000000 <1> mov eax, %1 563 <1> 563 00000473 CD40 <1> int 40h 564 565 00000475 E828020000 call waitforkey 566 567 ; full screen sub 568 0000047A B128 mov cl, 28h 569 0000047C B303 mov bl, 03h 570 sys _video 570 <1> 570 <1> 570 <1> 570 <1> 570 <1> %if %0 >= 2 570 <1> mov ebx, %2 570 <1> %if %0 >= 3 570 <1> mov ecx, %3 570 <1> %if %0 = 4 570 <1> mov edx, %4 570 <1> %endif 570 <1> %endif 570 <1> %endif 570 0000047E B81F000000 <1> mov eax, %1 570 <1> 570 00000483 CD40 <1> int 40h 571 572 00000485 E818020000 call waitforkey 573 574 0000048A B928282828 mov ecx, 28282828h ; red 575 0000048F BB01020000 mov ebx, 0201h ; Full screen, new color 576 sys _video 576 <1> 576 <1> 576 <1> 576 <1> 576 <1> %if %0 >= 2 576 <1> mov ebx, %2 576 <1> %if %0 >= 3 576 <1> mov ecx, %3 576 <1> %if %0 = 4 576 <1> mov edx, %4 576 <1> %endif 576 <1> %endif 576 <1> %endif 576 00000494 B81F000000 <1> mov eax, %1 576 <1> 576 00000499 CD40 <1> int 40h 577 578 ;mov byte [tcolor], 0Fh 579 0000049B BE1401D000 mov esi, 208*65536+276 580 000004A0 BD[A0070000] mov ebp, txt_red 581 000004A5 E833020000 call print_text 582 583 000004AA E8F3010000 call waitforkey 584 585 ; full screen add 586 000004AF B128 mov cl, 28h 587 000004B1 B302 mov bl, 02h 588 sys _video 588 <1> 588 <1> 588 <1> 588 <1> 588 <1> %if %0 >= 2 588 <1> mov ebx, %2 588 <1> %if %0 >= 3 588 <1> mov ecx, %3 588 <1> %if %0 = 4 588 <1> mov edx, %4 588 <1> %endif 588 <1> %endif 588 <1> %endif 588 000004B3 B81F000000 <1> mov eax, %1 588 <1> 588 000004B8 CD40 <1> int 40h 589 590 000004BA E8E3010000 call waitforkey 591 592 ; full screen sub 593 000004BF B128 mov cl, 28h 594 000004C1 B303 mov bl, 03h 595 sys _video 595 <1> 595 <1> 595 <1> 595 <1> 595 <1> %if %0 >= 2 595 <1> mov ebx, %2 595 <1> %if %0 >= 3 595 <1> mov ecx, %3 595 <1> %if %0 = 4 595 <1> mov edx, %4 595 <1> %endif 595 <1> %endif 595 <1> %endif 595 000004C3 B81F000000 <1> mov eax, %1 595 <1> 595 000004C8 CD40 <1> int 40h 596 597 000004CA E8D3010000 call waitforkey 598 599 ; full screen OR 600 000004CF B10F mov cl, 0Fh 601 000004D1 B304 mov bl, 04h 602 sys _video 602 <1> 602 <1> 602 <1> 602 <1> 602 <1> %if %0 >= 2 602 <1> mov ebx, %2 602 <1> %if %0 >= 3 602 <1> mov ecx, %3 602 <1> %if %0 = 4 602 <1> mov edx, %4 602 <1> %endif 602 <1> %endif 602 <1> %endif 602 000004D3 B81F000000 <1> mov eax, %1 602 <1> 602 000004D8 CD40 <1> int 40h 603 604 000004DA E8C3010000 call waitforkey 605 606 ; full screen AND 607 000004DF B11F mov cl, 1Fh 608 000004E1 B305 mov bl, 05h 609 sys _video 609 <1> 609 <1> 609 <1> 609 <1> 609 <1> %if %0 >= 2 609 <1> mov ebx, %2 609 <1> %if %0 >= 3 609 <1> mov ecx, %3 609 <1> %if %0 = 4 609 <1> mov edx, %4 609 <1> %endif 609 <1> %endif 609 <1> %endif 609 000004E3 B81F000000 <1> mov eax, %1 609 <1> 609 000004E8 CD40 <1> int 40h 610 611 000004EA E8B3010000 call waitforkey 612 613 ; full screen XOR 614 000004EF B11F mov cl, 1Fh 615 000004F1 B306 mov bl, 06h 616 sys _video 616 <1> 616 <1> 616 <1> 616 <1> 616 <1> %if %0 >= 2 616 <1> mov ebx, %2 616 <1> %if %0 >= 3 616 <1> mov ecx, %3 616 <1> %if %0 = 4 616 <1> mov edx, %4 616 <1> %endif 616 <1> %endif 616 <1> %endif 616 000004F3 B81F000000 <1> mov eax, %1 616 <1> 616 000004F8 CD40 <1> int 40h 617 618 000004FA E8A3010000 call waitforkey 619 620 000004FF B930303030 mov ecx, 30303030h ; green 621 00000504 BB01020000 mov ebx, 0201h ; Full screen, new color 622 sys _video 622 <1> 622 <1> 622 <1> 622 <1> 622 <1> %if %0 >= 2 622 <1> mov ebx, %2 622 <1> %if %0 >= 3 622 <1> mov ecx, %3 622 <1> %if %0 = 4 622 <1> mov edx, %4 622 <1> %endif 622 <1> %endif 622 <1> %endif 622 00000509 B81F000000 <1> mov eax, %1 622 <1> 622 0000050E CD40 <1> int 40h 623 624 00000510 C605[C4070000]00 mov byte [tcolor], 0 625 00000517 BEF000D000 mov esi, 208*65536+240 626 0000051C BD[A4070000] mov ebp, txt_green 627 00000521 E8B7010000 call print_text 628 629 00000526 E877010000 call waitforkey 630 631 ; full screen MIX 632 0000052B B124 mov cl, 24h 633 0000052D B30B mov bl, 0Bh 634 sys _video 634 <1> 634 <1> 634 <1> 634 <1> 634 <1> %if %0 >= 2 634 <1> mov ebx, %2 634 <1> %if %0 >= 3 634 <1> mov ecx, %3 634 <1> %if %0 = 4 634 <1> mov edx, %4 634 <1> %endif 634 <1> %endif 634 <1> %endif 634 0000052F B81F000000 <1> mov eax, %1 634 <1> 634 00000534 CD40 <1> int 40h 635 636 00000536 E867010000 call waitforkey 637 638 0000053B B92C2C2C2C mov ecx, 2C2C2C2Ch ; yellow 639 00000540 BB01020000 mov ebx, 0201h ; Full screen, new color 640 sys _video 640 <1> 640 <1> 640 <1> 640 <1> 640 <1> %if %0 >= 2 640 <1> mov ebx, %2 640 <1> %if %0 >= 3 640 <1> mov ecx, %3 640 <1> %if %0 = 4 640 <1> mov edx, %4 640 <1> %endif 640 <1> %endif 640 <1> %endif 640 00000545 B81F000000 <1> mov eax, %1 640 <1> 640 0000054A CD40 <1> int 40h 641 642 0000054C C605[C4070000]0F mov byte [tcolor], 0Fh 643 00000553 BEDE00D000 mov esi, 208*65536+222 644 00000558 BD[AA070000] mov ebp, txt_yellow 645 0000055D E87B010000 call print_text 646 647 00000562 E83B010000 call waitforkey 648 649 ; full screen NOT 650 00000567 B307 mov bl, 07h 651 sys _video 651 <1> 651 <1> 651 <1> 651 <1> 651 <1> %if %0 >= 2 651 <1> mov ebx, %2 651 <1> %if %0 >= 3 651 <1> mov ecx, %3 651 <1> %if %0 = 4 651 <1> mov edx, %4 651 <1> %endif 651 <1> %endif 651 <1> %endif 651 00000569 B81F000000 <1> mov eax, %1 651 <1> 651 0000056E CD40 <1> int 40h 652 653 00000570 E82D010000 call waitforkey 654 655 ; full screen NOT 656 ;mov bl, 07h 657 sys _video 657 <1> 657 <1> 657 <1> 657 <1> 657 <1> %if %0 >= 2 657 <1> mov ebx, %2 657 <1> %if %0 >= 3 657 <1> mov ecx, %3 657 <1> %if %0 = 4 657 <1> mov edx, %4 657 <1> %endif 657 <1> %endif 657 <1> %endif 657 00000575 B81F000000 <1> mov eax, %1 657 <1> 657 0000057A CD40 <1> int 40h 658 659 0000057C E821010000 call waitforkey 660 661 ; full screen MIX 662 00000581 B110 mov cl, 10h 663 00000583 B30B mov bl, 0Bh 664 sys _video 664 <1> 664 <1> 664 <1> 664 <1> 664 <1> %if %0 >= 2 664 <1> mov ebx, %2 664 <1> %if %0 >= 3 664 <1> mov ecx, %3 664 <1> %if %0 = 4 664 <1> mov edx, %4 664 <1> %endif 664 <1> %endif 664 <1> %endif 664 00000585 B81F000000 <1> mov eax, %1 664 <1> 664 0000058A CD40 <1> int 40h 665 666 0000058C E811010000 call waitforkey 667 668 ; Full screen copy 669 00000591 BE[C8070000] mov esi, fullscreen_buffer 670 00000596 89F7 mov edi, esi 671 00000598 31C0 xor eax, eax ; black 672 0000059A B940060000 mov ecx, (640*10)/4 673 0000059F F3AB rep stosd 674 000005A1 B80F0F0F0F mov eax, 0F0F0F0Fh ; white 675 000005A6 B920030000 mov ecx, (640*5)/4 676 000005AB F3AB rep stosd 677 000005AD 31C0 xor eax, eax ; black 678 000005AF B920030000 mov ecx, (640*5)/4 679 000005B4 F3AB rep stosd 680 000005B6 B820202020 mov eax, 20202020h ; blue 681 000005BB B9C0440000 mov ecx, (640*110)/4 682 000005C0 F3AB rep stosd 683 000005C2 B828282828 mov eax, 28282828h ; red 684 000005C7 B9C0440000 mov ecx, (640*110)/4 685 000005CC F3AB rep stosd 686 000005CE B830303030 mov eax, 30303030h ; green 687 000005D3 B9C0440000 mov ecx, (640*110)/4 688 000005D8 F3AB rep stosd 689 000005DA B82C2C2C2C mov eax, 2C2C2C2Ch ; yellow 690 000005DF B9C0440000 mov ecx, (640*110)/4 691 000005E4 F3AB rep stosd 692 000005E6 31C0 xor eax, eax ; black 693 000005E8 B920030000 mov ecx, (640*5)/4 694 000005ED F3AB rep stosd 695 000005EF B80F0F0F0F mov eax, 0F0F0F0Fh ; white 696 000005F4 B920030000 mov ecx, (640*5)/4 697 000005F9 F3AB rep stosd 698 000005FB 31C0 xor eax, eax ; black 699 000005FD B940060000 mov ecx, (640*10)/4 700 00000602 F3AB rep stosd 701 702 00000604 BB00020000 mov ebx, 0200h ; Full screen copy 703 sys _video 703 <1> 703 <1> 703 <1> 703 <1> 703 <1> %if %0 >= 2 703 <1> mov ebx, %2 703 <1> %if %0 >= 3 703 <1> mov ecx, %3 703 <1> %if %0 = 4 703 <1> mov edx, %4 703 <1> %endif 703 <1> %endif 703 <1> %endif 703 00000609 B81F000000 <1> mov eax, %1 703 <1> 703 0000060E CD40 <1> int 40h 704 705 00000610 E88D000000 call waitforkey 706 707 ;mov byte [tcolor], 0Fh 708 709 00000615 BE2B002B00 mov esi, 43*65536+43 710 0000061A BD[9B070000] mov ebp, txt_blue 711 0000061F E8B9000000 call print_text 712 713 00000624 E879000000 call waitforkey 714 715 00000629 BE2B009900 mov esi, 153*65536+43 716 0000062E BD[A0070000] mov ebp, txt_red 717 00000633 E8A5000000 call print_text 718 719 00000638 E865000000 call waitforkey 720 721 0000063D BE2B000701 mov esi, 263*65536+43 722 00000642 BD[A4070000] mov ebp, txt_green 723 00000647 E891000000 call print_text 724 725 0000064C E851000000 call waitforkey 726 727 00000651 BE2B007501 mov esi, 373*65536+43 728 00000656 BD[AA070000] mov ebp, txt_yellow 729 0000065B E87D000000 call print_text 730 731 00000660 E83D000000 call waitforkey 732 733 00000665 C605[C4070000]00 mov byte [tcolor], 0 734 735 0000066C BE2B000701 mov esi, 263*65536+43 736 00000671 BD[A4070000] mov ebp, txt_green 737 00000676 E862000000 call print_text 738 739 0000067B E822000000 call waitforkey 740 741 00000680 BE2B007501 mov esi, 373*65536+43 742 00000685 BD[AA070000] mov ebp, txt_yellow 743 0000068A E84E000000 call print_text 744 745 0000068F E80E000000 call waitforkey 746 747 terminate: 748 00000694 E82C000000 call set_text_mode 749 sys _exit 749 <1> 749 <1> 749 <1> 749 <1> 749 <1> %if %0 >= 2 749 <1> mov ebx, %2 749 <1> %if %0 >= 3 749 <1> mov ecx, %3 749 <1> %if %0 = 4 749 <1> mov edx, %4 749 <1> %endif 749 <1> %endif 749 <1> %endif 749 00000699 B801000000 <1> mov eax, %1 749 <1> 749 0000069E CD40 <1> int 40h 750 halt: 751 000006A0 EBFE jmp short halt 752 753 waitforkey: 754 000006A2 B401 mov ah, 1 755 000006A4 CD32 int 32h 756 000006A6 740B jz short getkey 757 000006A8 FF05[C0070000] inc dword [counter] 758 000006AE 90 nop 759 000006AF 90 nop 760 000006B0 90 nop 761 000006B1 EBEF jmp short waitforkey 762 getkey: 763 000006B3 30E4 xor ah, ah 764 000006B5 CD32 int 32h 765 766 000006B7 663D032E cmp ax, 2E03h 767 000006BB 7405 je short _terminate 768 000006BD 3C1B cmp al, 1Bh ; ESC key 769 000006BF 7401 je short _terminate 770 000006C1 C3 retn 771 _terminate: 772 000006C2 58 pop eax ; return address 773 000006C3 EBCF jmp short terminate 774 775 set_text_mode: 776 000006C5 30E4 xor ah, ah 777 000006C7 B003 mov al, 3 778 ;int 10h ; al = 03h text mode, int 10 video 779 000006C9 CD31 int 31h ; TRDOS 386 - Video interrupt 780 000006CB C3 retn 781 782 print_msg: 783 000006CC B40E mov ah, 0Eh 784 000006CE BB07000000 mov ebx, 7 785 ;mov bl, 7 ; char attribute & color 786 p_next_chr: 787 000006D3 AC lodsb 788 000006D4 08C0 or al, al 789 000006D6 7404 jz short p_retn ; retn 790 000006D8 CD31 int 31h 791 000006DA EBF7 jmp short p_next_chr 792 p_retn: 793 000006DC C3 retn 794 795 print_text: 796 ; ebp = text address 797 ; esi = row/column position (si = column) 798 p_d_x: 799 ;mov dh, 0 ; 8x16 system font 800 000006DD B606 mov dh, 6 ; 32*64 scaled font (base: 8*16 system font) 801 p_d_x_n: 802 000006DF 8A5500 mov dl, [ebp] 803 000006E2 20D2 and dl, dl 804 000006E4 7419 jz short p_d_x_ok 805 sys _video, 020Fh, [tcolor] 805 <1> 805 <1> 805 <1> 805 <1> 805 <1> %if %0 >= 2 805 000006E6 BB0F020000 <1> mov ebx, %2 805 <1> %if %0 >= 3 805 000006EB 8B0D[C4070000] <1> mov ecx, %3 805 <1> %if %0 = 4 805 <1> mov edx, %4 805 <1> %endif 805 <1> %endif 805 <1> %endif 805 000006F1 B81F000000 <1> mov eax, %1 805 <1> 805 000006F6 CD40 <1> int 40h 806 000006F8 45 inc ebp 807 000006F9 6683C624 add si, 36 ; next char pos 808 000006FD EBE0 jmp short p_d_x_n 809 p_d_x_ok: 810 000006FF C3 retn 811 812 program_msg: 813 00000700 5452444F5320333836- db "TRDOS 386 v2.0.3 - ('sysvideo') Test Program - Block Operations" 813 00000709 2076322E302E33202D- 813 00000712 202827737973766964- 813 0000071B 656F27292054657374- 813 00000724 2050726F6772616D20- 813 0000072D 2D20426C6F636B204F- 813 00000736 7065726174696F6E73 814 0000073F 0D0A db 0Dh, 0Ah 815 00000741 6279204572646F6761- db "by Erdogan Tan - 22/02/2021" 815 0000074A 6E2054616E202D2032- 815 00000753 322F30322F32303231 816 ;db 0Dh, 0Ah, 0 817 0000075C 0D0A0D0A db 0Dh, 0Ah, 0Dh, 0Ah 818 00000760 507265737320616E79- db "Press any key to continue .." 818 00000769 206B657920746F2063- 818 00000772 6F6E74696E7565202E- 818 0000077B 2E 819 0000077C 0D0A db 0Dh, 0Ah 820 0000077E 285072657373204553- db "(Press ESC to exit) .." 820 00000787 4320746F2065786974- 820 00000790 29202E2E 821 00000794 0D0A db 0Dh, 0Ah 822 00000796 0D0A db 0Dh, 0Ah 823 824 nextline: 825 00000798 0D0A00 db 0Dh, 0Ah, 0 826 827 txt_blue: 828 0000079B 424C554500 db "BLUE", 0 829 txt_red: 830 000007A0 52454400 db "RED", 0 831 txt_green: 832 000007A4 475245454E00 db "GREEN", 0 833 txt_yellow: 834 000007AA 59454C4C4F5700 db "YELLOW", 0 835 txt_white: 836 000007B1 574849544500 db "WHITE", 0 837 txt_black: 838 000007B7 424C41434B00 db "BLACK", 0 839 840 bss: 841 842 ABSOLUTE bss 843 844 000007BD alignb 4 845 846 counter: 847 000007C0 resd 1 848 849 bss_start: 850 000007C4 tcolor: resd 1 851 852 fullscreen_buffer: 853 whiteblock: 854 000007C8 resb 120*160 855 blueblock: 856 000052C8 resb 120*160 857 redblock: 858 00009DC8 resb 120*160 859 greenblock: 860 0000E8C8 resb 120*160 861 yellowblock: 862 000133C8 resb 120*160 863 864 00017EC8 resb 307200-96000 865 bss_end: