870646c@aucs.uucp (Barry Comer) (03/27/90)
SORRY FOR THE BANDWIDTH BUT OUR LOCAL MAIL SYSTEM IS ALL SCREWED UP AND
THIS IS ONE OF THE GROUPS THAT I KNOW IS WORKING!!
This is the source code for the bitplane demo that I posted a few weeks
back. It is out of an old graphics book that I have.
Enjoy
Barry Comer
SLOWDOWN equ 0
RED equ 01h
GREEN equ 02h
BLUE equ 04h
WHITE equ 08h
VGA_SEGMENT equ 0a000h
SC_INDEX equ 3c4h
MAP_MASK equ 2
SCREEN_WIDTH equ 80
SCREEN_HEIGHT equ 350
WORD_OUTS_OK equ 0
stackseg segment para stack 'STACK'
db 512 dup(?)
stackseg ends
;
ObjectStructure struc
Delay dw ?
BaseDelay dw ?
Image dw ?
XCoord dw ?
XInc dw ?
XLeftLimit dw ?
XRightLimit dw ?
YCoord dw ?
YInc dw ?
YTopLimit dw ?
YBottomLimit dw ?
PlaneSelect db ?
db ?
ObjectStructure ends
;
Data segment word 'DATA'
Colors db 000h
db 03ch
db 03ah
db 03ch
db 039h
db 03ch
db 03ah
db 03ch
db 03fh
db 03ch
db 03ah
db 03ch
db 039h
db 03ch
db 03ah
db 03ch
db 000h
;
I label byte
dw 48,6
rept 8
db 0,0,0,0,0,0
endm
.radix 2
db 0,00111111,11111111,11111111,11111100,0
db 0,00111111,11111111,11111111,11111100,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00111111,11111111,11111111,11111100,0
db 0,00111111,11111111,11111111,11111100,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000000,00111111,11111100,00000000,0
db 0,00000000,00111111,11111100,00000000,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000000,00111111,11111100,00000000,0
db 0,00000000,00111111,11111100,00000000,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000000,00111111,11111100,00000000,0
db 0,00000000,00111111,11111100,00000000,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000000,00111111,11111100,00000000,0
db 0,00000000,00111111,11111100,00000000,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00111111,11111111,11111111,11111100,0
db 0,00111111,11111111,11111111,11111100,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00111111,11111111,11111111,11111100,0
db 0,00111111,11111111,11111111,11111100,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000000,00000000,00000000,00000000,0
.radix 10
rept 8
db 0,0,0,0,0,0
endm
;
B label byte
dw 48,6
rept 8
db 0,0,0,0,0,0
endm
.radix 2
db 0,00111111,11111111,11111111,11000000,0
db 0,00111111,11111111,11111111,11111000,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00111111,11111111,11111111,11111110,0
db 0,00111111,11111111,11111111,11111111,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000000,11111111,00000000,11111111,0
db 0,00000000,11111111,00000000,11111111,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000000,11111111,11111111,11111110,0
db 0,00000000,11111111,11111111,11111000,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000000,11111111,11111111,11111100,0
db 0,00000000,11111111,11111111,11111110,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000000,11111111,00000000,11111111,0
db 0,00000000,11111111,00000000,11111111,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00111111,11111111,11111111,11111111,0
db 0,00111111,11111111,11111111,11111110,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00111111,11111111,11111111,11111000,0
db 0,00111111,11111111,11111111,11000000,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000000,00000000,00000000,00000000,0
.radix 10
rept 8
db 0,0,0,0,0,0
endm
;
M label byte
dw 48,6
rept 8
db 0,0,0,0,0,0
endm
.radix 2
db 0,00111111,11110000,00001111,11111100,0
db 0,00111111,11110000,00001111,11111100,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00111111,11111000,00011111,11111100,0
db 0,00111111,11111000,00011111,11111100,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000011,11111100,00111111,11000000,0
db 0,00000011,11111100,00111111,11000000,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000011,11111110,01111111,11000000,0
db 0,00000011,11111110,01111111,11000000,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000011,11110111,11101111,11000000,0
db 0,00000011,11110111,11101111,11000000,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000011,11110011,11001111,11000000,0
db 0,00000011,11110011,11001111,11000000,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00111111,11110001,10001111,11111100,0
db 0,00111111,11110001,10001111,11111100,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00111111,11110000,00001111,11111100,0
db 0,00111111,11110000,00001111,11111100,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000000,00000000,00000000,00000000,0
.radix 10
rept 8
db 0,0,0,0,0,0
endm
;
I2 label byte
dw 48,6
rept 8
db 0,0,0,0,0,0
endm
.radix 2
db 0,00000000,00000000,00000000,00000000,0
db 0,00111111,11111111,11111111,11111100,0
db 0,00111111,11111111,11111111,11111100,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00111111,11111111,11111111,11111100,0
db 0,00111111,11111111,11111111,11111100,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000000,00111111,11111100,00000000,0
db 0,00000000,00111111,11111100,00000000,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000000,00111111,11111100,00000000,0
db 0,00000000,00111111,11111100,00000000,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000000,00111111,11111100,00000000,0
db 0,00000000,00111111,11111100,00000000,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000000,00111111,11111100,00000000,0
db 0,00000000,00111111,11111100,00000000,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00111111,11111111,11111111,11111100,0
db 0,00111111,11111111,11111111,11111100,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00111111,11111111,11111111,11111100,0
db 0,00111111,11111111,11111111,11111100,0
db 0,00000000,00000000,00000000,00000000,0
.radix 10
rept 8
db 0,0,0,0,0,0
endm
;
B2 label byte
dw 48,6
rept 8
db 0,0,0,0,0,0
endm
.radix 2
db 0,00000000,00000000,00000000,00000000,0
db 0,00111111,11111111,11111111,11000000,0
db 0,00111111,11111111,11111111,11111000,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00111111,11111111,11111111,11111110,0
db 0,00111111,11111111,11111111,11111111,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000000,11111111,00000000,11111111,0
db 0,00000000,11111111,00000000,11111111,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000000,11111111,11111111,11111110,0
db 0,00000000,11111111,11111111,11111000,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000000,11111111,11111111,11111100,0
db 0,00000000,11111111,11111111,11111110,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000000,11111111,00000000,11111111,0
db 0,00000000,11111111,00000000,11111111,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00111111,11111111,11111111,11111111,0
db 0,00111111,11111111,11111111,11111110,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00111111,11111111,11111111,11111000,0
db 0,00111111,11111111,11111111,11000000,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000000,00000000,00000000,00000000,0
.radix 10
rept 8
db 0,0,0,0,0,0
endm
;
M2 label byte
dw 48,6
rept 8
db 0,0,0,0,0,0
endm
.radix 2
db 0,00000000,00000000,00000000,00000000,0
db 0,00111111,11110000,00001111,11111100,0
db 0,00111111,11110000,00001111,11111100,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00111111,11111000,00011111,11111100,0
db 0,00111111,11111000,00011111,11111100,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000011,11111100,00111111,11000000,0
db 0,00000011,11111100,00111111,11000000,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000011,11111110,01111111,11000000,0
db 0,00000011,11111110,01111111,11000000,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000011,11110111,11101111,11000000,0
db 0,00000011,11110111,11101111,11000000,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000011,11110011,11001111,11000000,0
db 0,00000011,11110011,11001111,11000000,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00111111,11110001,10001111,11111100,0
db 0,00111111,11110001,10001111,11111100,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00000000,00000000,00000000,00000000,0
db 0,00111111,11110000,00001111,11111100,0
db 0,00111111,11110000,00001111,11111100,0
db 0,00000000,00000000,00000000,00000000,0
.radix 10
rept 8
db 0,0,0,0,0,0
endm
;
Square label byte
dw 48,6
rept 8
db 0,0,0,0,0,0
endm
.radix 2
db 0,11111111,11111111,11111111,11111111,0
db 0,11111111,11111111,11111111,11111111,0
db 0,11111111,11111111,11111111,11111111,0
db 0,11111111,11111111,11111111,11111111,0
db 0,11111111,11111111,11111111,11111111,0
db 0,11111111,11111111,11111111,11111111,0
db 0,11111111,11111111,11111111,11111111,0
db 0,11111111,11111111,11111111,11111111,0
db 0,11111111,00000000,00000000,11111111,0
db 0,11111111,00000000,00000000,11111111,0
db 0,11111111,00000000,00000000,11111111,0
db 0,11111111,00000000,00000000,11111111,0
db 0,11111111,00000000,00000000,11111111,0
db 0,11111111,00000000,00000000,11111111,0
db 0,11111111,00000000,00000000,11111111,0
db 0,11111111,00000000,00000000,11111111,0
db 0,11111111,00000000,00000000,11111111,0
db 0,11111111,00000000,00000000,11111111,0
db 0,11111111,00000000,00000000,11111111,0
db 0,11111111,00000000,00000000,11111111,0
db 0,11111111,00000000,00000000,11111111,0
db 0,11111111,00000000,00000000,11111111,0
db 0,11111111,00000000,00000000,11111111,0
db 0,11111111,00000000,00000000,11111111,0
db 0,11111111,11111111,11111111,11111111,0
db 0,11111111,11111111,11111111,11111111,0
db 0,11111111,11111111,11111111,11111111,0
db 0,11111111,11111111,11111111,11111111,0
db 0,11111111,11111111,11111111,11111111,0
db 0,11111111,11111111,11111111,11111111,0
db 0,11111111,11111111,11111111,11111111,0
db 0,11111111,11111111,11111111,11111111,0
.radix 10
rept 8
db 0,0,0,0,0,0
endm
;
Diamond label byte
dw 48,6
rept 8
db 0,0,0,0,0,0
endm
.radix 2
db 0,00000000,00000001,10000000,00000000,0
db 0,00000000,00000011,01000000,00000000,0
db 0,00000000,00000111,00100000,00000000,0
db 0,00000000,00001111,00010000,00000000,0
db 0,00000000,00011111,00001000,00000000,0
db 0,00000000,00111111,00000100,00000000,0
db 0,00000000,01111111,00000010,00000000,0
db 0,00000000,11111111,00000001,00000000,0
db 0,00000001,11111111,00000000,10000000,0
db 0,00000011,11111111,00000000,01000000,0
db 0,00000111,11111111,00000000,00100000,0
db 0,00001111,11111111,10000000,00010000,0
db 0,00011111,11111111,00000000,00001000,0
db 0,00111111,11111111,00000000,00000100,0
db 0,01111111,11111111,00000000,00000010,0
db 0,11111111,11111111,00000000,00000001,0
db 0,10000000,00000000,11111111,11111111,0
db 0,01000000,00000000,11111111,11111110,0
db 0,00100000,00000000,11111111,11111100,0
db 0,00010000,00000000,11111111,11111000,0
db 0,00001000,00000000,11111111,11110000,0
db 0,00000100,00000000,11111111,11100000,0
db 0,00000010,00000000,11111111,11000000,0
db 0,00000001,00000000,11111111,10000000,0
db 0,00000000,10000000,11111111,00000000,0
db 0,00000000,01000000,11111110,00000000,0
db 0,00000000,00100000,11111100,00000000,0
db 0,00000000,00010000,11111000,00000000,0
db 0,00000000,00001000,11110000,00000000,0
db 0,00000000,00000100,11100000,00000000,0
db 0,00000000,00000010,11000000,00000000,0
db 0,00000000,00000001,10000000,00000000,0
.radix 10
rept 8
db 0,0,0,0,0,0
endm
;
D2 label byte
dw 48,6
rept 8
db 0,0,0,0,0,0
endm
.radix 2
db 0,00000000,00000001,10000000,00000000,0
db 0,00000000,00000010,11000000,00000000,0
db 0,00000000,00000101,11100000,00000000,0
db 0,00000000,00001011,11110000,00000000,0
db 0,00000000,00010011,11111000,00000000,0
db 0,00000000,00100111,11110100,00000000,0
db 0,00000000,01001111,11110010,00000000,0
db 0,00000000,10011111,11110001,00000000,0
db 0,00000001,00011111,11111000,10000000,0
db 0,00000010,00111111,11111000,01000000,0
db 0,00000100,01111111,11111000,00100000,0
db 0,00001000,11111111,11111000,00010000,0
db 0,00010000,11111111,11111100,00001000,0
db 0,00100001,11111111,11111100,00000100,0
db 0,01000011,11111111,11111100,00000010,0
db 0,10000111,11111111,11111100,00000001,0
db 0,11111000,00000000,00001111,11111111,0
db 0,01111100,00000000,00001111,11111110,0
db 0,00111110,00000000,00001111,11111100,0
db 0,00011111,00000000,00001111,11111000,0
db 0,00001111,00000000,00001111,11110000,0
db 0,00000111,10000000,00011111,11100000,0
db 0,00000011,10000000,00011111,11000000,0
db 0,00000001,11000000,00011111,10000000,0
db 0,00000000,11100000,00011111,00000000,0
db 0,00000000,01110000,00111110,00000000,0
db 0,00000000,00110000,00111100,00000000,0
db 0,00000000,00011000,00111000,00000000,0
db 0,00000000,00001100,00110000,00000000,0
db 0,00000000,00000110,01100000,00000000,0
db 0,00000000,00000010,01000000,00000000,0
db 0,00000000,00000001,10000000,00000000,0
.radix 10
rept 8
db 0,0,0,0,0,0
endm
;
D3 label byte
dw 48,6
rept 8
db 0,0,0,0,0,0
endm
.radix 2
db 0,00000000,00000001,10000000,00000000,0
db 0,00000000,00000010,11000000,00000000,0
db 0,00000000,00000100,11100000,00000000,0
db 0,00000000,00001000,11110000,00000000,0
db 0,00000000,00010000,11111000,00000000,0
db 0,00000000,00100000,11111100,00000000,0
db 0,00000000,01000000,11111110,00000000,0
db 0,00000000,10000001,11111101,00000000,0
db 0,00000001,00000001,11111110,10000000,0
db 0,00000010,00000011,11111110,01000000,0
db 0,00000100,00000111,11111110,00100000,0
db 0,00001000,00001111,11111110,00010000,0
db 0,00010000,00001111,11111111,00001000,0
db 0,00100000,00011111,11111111,00000100,0
db 0,01000000,00111111,11111111,00000010,0
db 0,10000000,01111111,11111111,00000001,0
db 0,11111111,10000000,00000000,11111111,0
db 0,01111111,11000000,00000000,11111110,0
db 0,00111111,11100000,00000000,11111100,0
db 0,00011111,11110000,00000000,11111000,0
db 0,00001111,11110000,00000001,11110000,0
db 0,00000111,11111000,00000001,11100000,0
db 0,00000011,11111100,00000001,11000000,0
db 0,00000001,11111110,00000001,10000000,0
db 0,00000000,11111111,00000011,00000000,0
db 0,00000000,01111111,00000010,00000000,0
db 0,00000000,00111111,00000100,00000000,0
db 0,00000000,00011111,00001000,00000000,0
db 0,00000000,00001111,00010000,00000000,0
db 0,00000000,00000111,00100000,00000000,0
db 0,00000000,00000011,01000000,00000000,0
db 0,00000000,00000001,10000000,00000000,0
.radix 10
rept 8
db 0,0,0,0,0,0
endm
;
ObjectList label ObjectStructure
ObjectStructure <1,21,Diamond,88,8,80,512,16,0,0,350,RED>
ObjectStructure <1,15,Square,296,8,112,480,144,0,0,350,RED>
ObjectStructure <1,23,Diamond,88,8,80,512,256,0,0,350,RED>
ObjectStructure <1,13,Square,120,0,0,640,144,4,0,280,BLUE>
ObjectStructure <1,11,Diamond,208,0,0,640,144,4,0,280,BLUE>
ObjectStructure <1,8,Square,296,0,0,640,144,4,0,288,BLUE>
ObjectStructure <1,9,Diamond,384,0,0,640,144,4,0,288,BLUE>
ObjectStructure <1,14,Square,472,0,0,640,144,4,0,280,BLUE>
ObjectStructure <1,8,I,200,8,0,576,48,6,0,280,BLUE>
ObjectStructure <1,8,B,248,8,0,576,96,6,0,280,BLUE>
ObjectStructure <1,8,M,296,8,0,576,144,6,0,280,BLUE>
ObjectStructure <1,8,I2,200,8,0,576,48,6,0,280,GREEN>
ObjectStructure <1,8,B2,248,8,0,576,96,6,0,280,GREEN>
ObjectStructure <1,8,M2,296,8,0,576,144,6,0,280,GREEN>
ObjectStructure <1,8,Square,344,8,0,576,192,6,0,280,GREEN>
ObjectStructure <1,8,Diamond,392,8,0,576,240,6,0,280,BLUE>
ObjectStructure <1,8,D2,392,8,0,576,240,6,0,280,GREEN>
ObjectStructure <1,8,D3,392,8,0,576,240,6,0,280,RED>
ObjectListEnd label ObjectStructure
Data ends
;
OUT_WORD macro
if WORD_OUTS_OK
out dx,ax
else
out dx,al
inc dx
xchg ah,al
out dx,al
dec dx
xchg ah,al
endif
endm
;
CONSTANT_TO_INDEXED_REGISTER macro ADDRESS, INDEX, VALUE
mov dx,ADDRESS
mov ax,(VALUE shl 8) + INDEX
OUT_WORD
endm
;
Code segment
assume cs:Code, ds:Data
Start proc near
cld
mov ax,Data
mov ds,ax
mov ax,0010h
int 10h
mov ax,(10h shl 8) + 2
push ds
pop es
mov dx,offset Colors
int 10h
;
CONSTANT_TO_INDEXED_REGISTER SC_INDEX, MAP_MASK, 08h
mov ax,VGA_SEGMENT
mov es,ax
sub di,di
mov bp,SCREEN_HEIGHT/16
;
BackdropBlockLoop:
call DrawGridCross
call DrawGridVert
dec bp
jnz BackdropBlockLoop
call DrawGridCross
;
AnimationLoop:
mov bx,offset ObjectList
;
ObjectLoop:
dec [bx+Delay]
jnz DoNextObject
mov ax,[bx+BaseDelay]
mov [bx+Delay],ax
mov dx,SC_INDEX
mov ah,[bx+PlaneSelect]
mov al,MAP_MASK
OUT_WORD
mov cx,[bx+XCoord]
cmp cx,[bx+XLeftLimit]
ja CheckXRightLimit
neg [bx+XInc]
CheckXRightLimit:
cmp cx,[bx+XRightLimit]
jb SetNewX
neg [bx+XInc]
SetNewX:
add cx,[bx+XInc]
mov [bx+XCoord],cx
mov dx,[bx+YCoord]
cmp dx,[bx+YTopLimit]
ja CheckBottomLimit
neg [bx+YInc]
CheckBottomLimit:
cmp dx,[bx+YBottomLimit]
jb SetNewY
neg [bx+YInc]
SetNewY:
add dx,[bx+YInc]
mov [bx+YCoord],dx
mov si,[bx+Image]
call DrawObject
DoNextObject:
add bx,size ObjectStructure
cmp bx,offset ObjectListEnd
jb ObjectLoop
if SLOWDOWN
mov cx,SLOWDOWN
DelayLoop:
loop DelayLoop
endif
CheckKey:
mov ah,1
int 16h
jz AnimationLoop
sub ah,ah
int 16h
mov ax,0003h
int 10h
mov ah,4ch
int 21h
Start endp
;
DrawGridCross proc near
mov ax,0ffffh
mov cx,SCREEN_WIDTH/2-1
rep stosw
mov ax,0080h
stosw
ret
DrawGridCross endp
;
DrawGridVert proc near
mov ax,0080h
mov dx,15
BackdropRowLoop:
mov cx,SCREEN_WIDTH/2
rep stosw
dec dx
jnz BackdropRowLoop
ret
DrawGridVert endp
;
DrawObject proc near
mov ax,SCREEN_WIDTH
mul dx
shr cx,1
shr cx,1
shr cx,1
add ax,cx
mov di,ax
lodsw
mov dx,ax
lodsw
mov bp,SCREEN_WIDTH
sub bp,ax
DrawLoop:
mov cx,ax
rep movsb
add di,bp
dec dx
jnz DrawLoop
ret
DrawObject endp
;
Code ends
end Start