QB / QB64 Discussion Forum     RULES     Other Subforums, Links and Downloads    Index of Threads

 Return to Index  

Kaleidoscope Doodler -- Call Interrupt Version

July 5 2008 at 9:03 AM
qbguy  (no login)


Response to ProgramList qbguy

DECLARE SUB SOLIDCIRCLE (X!, Y!, RAD!)
SCREEN 12
' Kaleidoscope doodler -- drag mouse to draw, right click to clear screen
' ESCAPE quits
TYPE REGTYPE
AX AS INTEGER
BX AS INTEGER
CX AS INTEGER
DX AS INTEGER
BP AS INTEGER
SI AS INTEGER
DI AS INTEGER
FLAGS AS INTEGER
END TYPE
DIM REGS AS REGTYPE
DIM SHARED COLOUR
X = 0
Y = 0
Z = 0
D = (640 - 480) / 2

LOOP1:
'SHOW MOUSE
REGS.AX = 1
CALL INTERRUPT(&H33, REGS, REGS)

IF INKEY$ = CHR$(27) THEN END

'LIMIT MOUSE
REGS.AX = 3
CALL INTERRUPT(&H33, REGS, REGS)
X = REGS.CX
Y = REGS.DX
Z = REGS.BX

IF Z = 0 THEN GOTO LOOP1

'HIDE MOUSE
REGS.AX = 2
CALL INTERRUPT(&H33, REGS, REGS)

IF Z = 1 THEN GOTO DRAW1
CLS
DRAW1:
COLOUR = INT(RND(1) * 15) + 1
CALL SOLIDCIRCLE(X, Y, 3)
CALL SOLIDCIRCLE(X, 480 - Y, 3)
CALL SOLIDCIRCLE(640 - X, Y, 3)
CALL SOLIDCIRCLE(640 - X, 480 - Y, 3)
CALL SOLIDCIRCLE(Y + D, X - D, 3)
CALL SOLIDCIRCLE(480 - Y + D, X - D, 3)
CALL SOLIDCIRCLE(Y + D, 480 - X + D, 3)
CALL SOLIDCIRCLE(480 - Y + D, 480 - X + D, 3)
GOTO LOOP1

SUB SOLIDCIRCLE (X, Y, RAD)
CIRCLE (X, Y), RAD, COLOUR
PAINT (X, Y), COLOUR
END SUB

 
 Respond to this message   
Response TitleAuthorDate
 Kaleidoscope Doodler -- Call absolute versionqbguyJul 5, 2008
  *Instead of VARSEG(...), VARPTR(...), you can do SEG ... and it's a simple LDS SI, (param) Jul 5, 2008