PAGE 58,132 TITLE Graphics Demo .MODEL MEDIUM .386 INCLUDE DENNIS.MAC .STACK .DATA EXM DB "Demo Finished",13,10,24H KEY DB "Press a key when ready.....",13,10,24H MESS DB "Dennis's Graphics Demo.",13,10,24H DEMOLIKE DB "Demo 1 finished. To see the next, not like you have a choice",13,10,24H CO DB ? G DB ? R DB ? B DB ? X DW ? Y DW ? SM DW ? .CODE MAIN PROC FAR PUSHA PUSH DS MOV AX,@DATA MOV DS,AX MOV ES,AX SCREEN 03h XOR AX,AX MOV CO,0 MOV CX,1 MOV X,1 MOV Y,1 INTRO: PRINT MESS PRINT KEY MOV AH,07h INT 21h ;Wait for a keypress ModeSet: SCREEN 13h XOR BX,BX INPALSET: INC CO ;Set initial palette to MOV R,62 ;white by setting red green and MOV G,62 ;blue values to maximum. MOV B,62 ; PAL CO,R,G,B ;Set palette CMP CO,6 ; JE BSET ; JMP INPALSET ; BSET: MOV CO,1 ;Set values to 0 for registers and XOR CX,CX ;1 for colour to start fresh. XOR BX,BX XOR DX,DX COLCOMP: CMP CO,6 ;See if the colour is 6, if it is then JE GFX1 INC CO XOR CX,CX DRAW1_2: MOV X,0 MOV CX,0 PUSH DS MOV AX,320 XOR BX,BX MOV BX,Y MUL BX ADD AX,X MOV CL,CO MOV BX,0A000H MOV ES,BX MOV DI,AX DAG: MOV ES:[DI],CL INC X INC DI CMP X,26C0H JL DAG POP DS JMP COLCOMP GFX1: MOV R,0 ;SET VALUES TO 0 MOV G,0 MOV B,0 MOV CO,0 MOV SM,0 GFX1LOOP: ADD CO,1 CMP CO,6 JE GFX2 ADD R,10 ADD G,10 ADD B,10 PAL CO,R,G,B JMP GFX1LOOP GFX2: MOV SM,0 MOV CO,0 MOV R,0 MOV G,0 MOV B,0 MOV CX,0 GFX2L: ADD CO,1 CMP CO,7 JE PR ADD SM,10 MOV CX,SM MOV R,CL MOV G,CL MOV B,CL RED: PUSH CX PAL CO,R,G,B POP CX DEC R LOOP RED MOV CX,SM BLUE: PUSH CX PAL CO,R,G,B POP CX DEC B LOOP BLUE MOV CX,SM GREEN: PUSH CX PAL CO,R,G,B POP CX DEC G LOOP GREEN JMP GFX2L PR: PAL 1,63,63,63 SCREEN 03h PRINT DEMOLIKE PRINT KEY MOV AH,07h INT 21h ;Wait for a keypress MOV AX,4C00H INT 21H RET MAIN ENDP END MAIN