home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shareware Supreme Volume 6 #1
/
swsii.zip
/
swsii
/
102
/
SVGAQB10.ZIP
/
SVGAMOD2.BAS
< prev
next >
Wrap
BASIC Source File
|
1993-06-11
|
42KB
|
1,207 lines
REM $INCLUDE: 'SVGAQB10.BI'
REM $INCLUDE: 'SVGADEMO.BI'
REM $DYNAMIC
SUB DO2D (RET$, MAXX, MAXY)
DIM POINTARRY(0 TO 8) AS P2DType
'*************************************************************************
'* SET UP THE TITLE
'*************************************************************************
TITLE$ = "DEMO 11: 2D functions"
PALSET PAL, 0, 255
'*************************************************************************
'* SET UP THE 'STAR' PATTERN OF POINTS
'*************************************************************************
SETVIEW 0, 0, MAXX, MAXY
CNTX = MAXX \ 2
CNTY = ((MAXY - 32) \ 2) + 32
SPCNG = MAXX \ 30
POINTARRY(0).X = 0
POINTARRY(0).Y = -SPCNG * 6
POINTARRY(1).X = SPCNG * 2
POINTARRY(1).Y = -SPCNG * 2
POINTARRY(2).X = SPCNG * 6
POINTARRY(2).Y = 0
POINTARRY(3).X = SPCNG * 2
POINTARRY(3).Y = SPCNG * 2
POINTARRY(4).X = 0
POINTARRY(4).Y = SPCNG * 6
POINTARRY(5).X = -SPCNG * 2
POINTARRY(5).Y = SPCNG * 2
POINTARRY(6).X = -SPCNG * 6
POINTARRY(6).Y = 0
POINTARRY(7).X = -SPCNG * 2
POINTARRY(7).Y = -SPCNG * 2
POINTARRY(8).X = 0
POINTARRY(8).Y = -SPCNG * 6
FOR I = 0 TO 8
PLOTARRY(I).X = POINTARRY(I).X
PLOTARRY(I).Y = POINTARRY(I).Y
NEXT I
'*************************************************************************
'* SHOW D2TRANSLATE
'*************************************************************************
FILLSCREEN (0)
DRWSTRING 1, 7, 0, TITLE$, 10, 0
A$ = "D2TRANSLATE (Points,XTrans,YTrans,InAry,OutAry)"
DRWSTRING 1, 7, 0, A$, 10, 16
SETVIEW 0, 32, MAXX, MAXY
D2TRANSLATE 9, CNTX, CNTY, POINTARRY(0).X, PLOTARRY(0).X
SHOWSTAR
GETKEY RET$
IF (RET$ = "S") OR (RET$ = "Q") THEN
FILLSCREEN (0)
SETVIEW 0, 0, MAXX, MAXY
EXIT SUB
END IF
XTRANS = 0
YTRANS = 0
FOR J = 0 TO SPCNG * 2
XTRANS = XTRANS + 2
YTRANS = YTRANS + 2
D2TRANSLATE 9, CNTX + XTRANS, CNTY + YTRANS, POINTARRY(0).X, PLOTARRY(0).X
SHOWSTAR
SDELAY 2
NEXT J
FOR J = 0 TO SPCNG * 2
XTRANS = XTRANS - 2
YTRANS = YTRANS - 2
D2TRANSLATE 9, CNTX + XTRANS, CNTY + YTRANS, POINTARRY(0).X, PLOTARRY(0).X
SHOWSTAR
SDELAY 2
NEXT J
GETKEY RET$
IF (RET$ = "S") OR (RET$ = "Q") THEN
FILLSCREEN (0)
SETVIEW 0, 0, MAXX, MAXY
EXIT SUB
END IF
'*************************************************************************
'* SHOW D2SCALE
'*************************************************************************
SETVIEW 0, 0, MAXX, 31
FILLVIEW (0)
SETVIEW 0, 0, MAXX, MAXY
DRWSTRING 1, 7, 0, TITLE$, 10, 0
A$ = "D2SCALE (Points,XScale,YScale,InAry,OutAry)"
DRWSTRING 1, 7, 0, A$, 10, 16
SETVIEW 0, 32, MAXX, MAXY
D2TRANSLATE 9, CNTX, CNTY, POINTARRY(0).X, PLOTARRY(0).X
SHOWSTAR
FOR J = 256 TO 380 STEP 4
D2SCALE 9, J, J, POINTARRY(0).X, PLOTARRY(0).X
D2TRANSLATE 9, CNTX, CNTY, PLOTARRY(0).X, PLOTARRY(0).X
SHOWSTAR
SDELAY 2
NEXT J
X = J
FOR J = X TO 256 STEP -4
D2SCALE 9, J, J, POINTARRY(0).X, PLOTARRY(0).X
D2TRANSLATE 9, CNTX, CNTY, PLOTARRY(0).X, PLOTARRY(0).X
SHOWSTAR
SDELAY 2
NEXT J
X = J
FOR J = X TO 128 STEP -4
D2SCALE 9, J, J, POINTARRY(0).X, PLOTARRY(0).X
D2TRANSLATE 9, CNTX, CNTY, PLOTARRY(0).X, PLOTARRY(0).X
SHOWSTAR
SDELAY 2
NEXT J
X = J
FOR J = X TO 256 STEP 4
D2SCALE 9, J, J, POINTARRY(0).X, PLOTARRY(0).X
D2TRANSLATE 9, CNTX, CNTY, PLOTARRY(0).X, PLOTARRY(0).X
SHOWSTAR
SDELAY 2
NEXT J
GETKEY RET$
IF (RET$ = "S") OR (RET$ = "Q") THEN
FILLSCREEN (0)
SETVIEW 0, 0, MAXX, MAXY
EXIT SUB
END IF
'*************************************************************************
'* SHOW D2ROTATE (ABOUT THE CENTER OF THE OBJECT)
'*************************************************************************
SETVIEW 0, 0, MAXX, 31
FILLVIEW (0)
SETVIEW 0, 0, MAXX, MAXY
DRWSTRING 1, 7, 0, TITLE$, 10, 0
A$ = "D2ROTATE (Points,XOrigin,YOrigin,Angle,InAry,OutAry)"
DRWSTRING 1, 7, 0, A$, 10, 16
A$ = "Lets do it about the center of the object."
DRWSTRING 1, 7, 0, A$, 10, 32
SETVIEW 0, 32, MAXX, MAXY
D2TRANSLATE 9, CNTX, CNTY, POINTARRY(0).X, PLOTARRY(0).X
SHOWSTAR
FOR J = 0 TO 180
D2ROTATE 9, 0, 0, J, POINTARRY(0).X, PLOTARRY(0).X
D2TRANSLATE 9, CNTX, CNTY, PLOTARRY(0).X, PLOTARRY(0).X
SHOWSTAR
SDELAY 2
NEXT J
FOR J = 180 TO 0 STEP -2
D2ROTATE 9, 0, 0, J, POINTARRY(0).X, PLOTARRY(0).X
D2TRANSLATE 9, CNTX, CNTY, PLOTARRY(0).X, PLOTARRY(0).X
SHOWSTAR
SDELAY 2
NEXT J
GETKEY RET$
IF (RET$ = "S") OR (RET$ = "Q") THEN
FILLSCREEN (0)
SETVIEW 0, 0, MAXX, MAXY
EXIT SUB
END IF
'*************************************************************************
'* SHOW D2ROTATE (ABOUT AN ARBITRARY POINT)
'*************************************************************************
SETVIEW 0, 0, MAXX, 48
FILLVIEW (0)
SETVIEW 0, 0, MAXX, MAXY
DRWSTRING 1, 7, 0, TITLE$, 10, 0
A$ = "D2ROTATE (Points,XOrigin,YOrigin,Angle,InAry,OutAry)"
DRWSTRING 1, 7, 0, A$, 10, 16
A$ = "Lets do it about an arbitarary point."
DRWSTRING 1, 7, 0, A$, 10, 32
SETVIEW 0, 32, MAXX, MAXY
D2TRANSLATE 9, CNTX, CNTY, POINTARRY(0).X, PLOTARRY(0).X
SHOWSTAR
FOR J = 0 TO 360 STEP 2
D2ROTATE 9, 0, SPCNG * 6, J, POINTARRY(0).X, PLOTARRY(0).X
D2TRANSLATE 9, CNTX, CNTY, PLOTARRY(0).X, PLOTARRY(0).X
SHOWSTAR
SDELAY 2
NEXT J
SETVIEW 0, 0, MAXX, MAXY
GETKEY RET$
IF (RET$ = "S") OR (RET$ = "Q") THEN
FILLSCREEN (0)
EXIT SUB
END IF
END SUB
SUB DO3D (RET$, MAXX, MAXY)
'*************************************************************************
'* SET UP THE TITLE
'*************************************************************************
TITLE$ = "DEMO 12: 3D functions"
PALSET PAL, 0, 255
'*************************************************************************
'* SET UP THE 'HOUSE' PATTERN OF POINTS
'*************************************************************************
SETVIEW 0, 0, MAXX, MAXY
CNTX = MAXX \ 2
CNTY = ((MAXY - 32) \ 2) + 32
CNTZ = 0
SPCNG = MAXX \ 6
POINTARRY3D(0).X = -SPCNG
POINTARRY3D(0).Y = -SPCNG * 2
POINTARRY3D(0).Z = 0
POINTARRY3D(1).X = SPCNG
POINTARRY3D(1).Y = -SPCNG * 2
POINTARRY3D(1).Z = 0
POINTARRY3D(2).X = SPCNG
POINTARRY3D(2).Y = -SPCNG * 2
POINTARRY3D(2).Z = SPCNG * 2
POINTARRY3D(3).X = -SPCNG
POINTARRY3D(3).Y = -SPCNG * 2
POINTARRY3D(3).Z = SPCNG * 2
POINTARRY3D(4).X = -SPCNG
POINTARRY3D(4).Y = SPCNG * 2
POINTARRY3D(4).Z = 0
POINTARRY3D(5).X = SPCNG
POINTARRY3D(5).Y = SPCNG * 2
POINTARRY3D(5).Z = 0
POINTARRY3D(6).X = SPCNG
POINTARRY3D(6).Y = SPCNG * 2
POINTARRY3D(6).Z = SPCNG * 2
POINTARRY3D(7).X = -SPCNG
POINTARRY3D(7).Y = SPCNG * 2
POINTARRY3D(7).Z = SPCNG * 2
POINTARRY3D(8).X = 0
POINTARRY3D(8).Y = -SPCNG * 2
POINTARRY3D(8).Z = SPCNG * 3
POINTARRY3D(9).X = 0
POINTARRY3D(9).Y = SPCNG * 2
POINTARRY3D(9).Z = SPCNG * 3
POINTARRY3D(10).X = 0
POINTARRY3D(10).Z = 0
POINTARRY3D(10).Y = 0
POINTARRY3D(11).X = SPCNG * 4
POINTARRY3D(11).Z = 0
POINTARRY3D(11).Y = 0
POINTARRY3D(12).X = 0
POINTARRY3D(12).Z = 0
POINTARRY3D(12).Y = SPCNG * 4
POINTARRY3D(13).X = 0
POINTARRY3D(13).Z = SPCNG * 4
POINTARRY3D(13).Y = 0
FOR I = 0 TO 13
PLAYARRY(I).X = POINTARRY3D(I).X
PLAYARRY(I).Y = POINTARRY3D(I).Y
PLAYARRY(I).Z = POINTARRY3D(I).Z
NEXT I
'*************************************************************************
'* SHOW D3PROJECT
'*************************************************************************
PI! = 4 * ATN(1) / 180
FILLSCREEN (0)
DRWSTRING 1, 7, 0, TITLE$, 10, 0
A$ = "D3PROJECT (Points,ProjParams,InAry,OutAry)"
DRWSTRING 1, 7, 0, A$, 10, 16
SETVIEW 0, 32, MAXX, MAXY
HEIGHT = MAXY * 8
Radius = MAXX * 30
J = 110
PROJ.EYEX = FIX(-Radius * COS(J * PI!))
PROJ.EYEY = FIX(-Radius * SIN(J * PI!))
PROJ.EYEZ = HEIGHT
PROJ.SCRD = ((Radius ^ 2 + HEIGHT ^ 2) ^ .5) \ 2
PROJ.THETA = J
PROJ.PHI = CINT(ATN(HEIGHT / -Radius) / PI!)
R = D3PROJECT(14, PROJ.EYEX, PLAYARRY(0).X, PLOTARRY(0).X)
FOR I = 0 TO 13
OPLOTARRY(I).X = PLOTARRY(I).X
OPLOTARRY(I).Y = PLOTARRY(I).Y
NEXT I
SHOWHOUSE
GETKEY RET$
IF (RET$ = "S") OR (RET$ = "Q") THEN
FILLSCREEN (0)
SETVIEW 0, 0, MAXX, MAXY
EXIT SUB
END IF
FOR J = 112 TO 470 STEP 3
PROJ.EYEX = FIX(-Radius * COS(J * PI!))
PROJ.EYEY = FIX(-Radius * SIN(J * PI!))
PROJ.THETA = J
R = D3PROJECT(14, PROJ.EYEX, PLAYARRY(0).X, PLOTARRY(0).X)
SHOWHOUSE
SDELAY 2
NEXT J
GETKEY RET$
IF (RET$ = "S") OR (RET$ = "Q") THEN
FILLSCREEN (0)
SETVIEW 0, 0, MAXX, MAXY
EXIT SUB
END IF
'*************************************************************************
'* SHOW D3TRANSLATE
'*************************************************************************
SETVIEW 0, 0, MAXX, 31
FILLVIEW (0)
DRWSTRING 1, 7, 0, TITLE$, 10, 0
A$ = "D3TRANSLATE (Points,XTrans,YTrans,ZTrans,InAry,OutAry)"
DRWSTRING 1, 7, 0, A$, 10, 16
SETVIEW 0, 32, MAXX, MAXY
FOR J = 2 TO 300 STEP 6
D3TRANSLATE 10, J, J, 0, POINTARRY3D(0).X, PLAYARRY(0).X
R = D3PROJECT(10, PROJ.EYEX, PLAYARRY(0).X, PLOTARRY(0).X)
SHOWHOUSE
SDELAY 2
NEXT J
X = J
FOR J = X TO 2 STEP -6
D3TRANSLATE 10, J, J, 0, POINTARRY3D(0).X, PLAYARRY(0).X
R = D3PROJECT(10, PROJ.EYEX, PLAYARRY(0).X, PLOTARRY(0).X)
SHOWHOUSE
SDELAY 2
NEXT J
GETKEY RET$
IF (RET$ = "S") OR (RET$ = "Q") THEN
FILLSCREEN (0)
SETVIEW 0, 0, MAXX, MAXY
EXIT SUB
END IF
'*************************************************************************
'* SHOW D3SCALE
'*************************************************************************
SETVIEW 0, 0, MAXX, 31
FILLVIEW (0)
DRWSTRING 1, 7, 0, TITLE$, 10, 0
A$ = "D3SCALE (Points,XScale,YScale,ZScale,InAry,OutAry)"
DRWSTRING 1, 7, 0, A$, 10, 16
SETVIEW 0, 32, MAXX, MAXY
FOR J = 256 TO 380 STEP 4
D3SCALE 10, J, J, J, POINTARRY3D(0).X, PLAYARRY(0).X
R = D3PROJECT(10, PROJ.EYEX, PLAYARRY(0).X, PLOTARRY(0).X)
SHOWHOUSE
SDELAY 2
NEXT J
X = J
FOR J = X TO 256 STEP -4
D3SCALE 10, J, J, J, POINTARRY3D(0).X, PLAYARRY(0).X
R = D3PROJECT(10, PROJ.EYEX, PLAYARRY(0).X, PLOTARRY(0).X)
SHOWHOUSE
SDELAY 2
NEXT J
X = J
FOR J = X TO 128 STEP -4
D3SCALE 10, J, J, J, POINTARRY3D(0).X, PLAYARRY(0).X
R = D3PROJECT(10, PROJ.EYEX, PLAYARRY(0).X, PLOTARRY(0).X)
SHOWHOUSE
SDELAY 2
NEXT J
X = J
FOR J = X TO 256 STEP 4
D3SCALE 10, J, J, J, POINTARRY3D(0).X, PLAYARRY(0).X
R = D3PROJECT(10, PROJ.EYEX, PLAYARRY(0).X, PLOTARRY(0).X)
SHOWHOUSE
SDELAY 2
NEXT J
GETKEY RET$
IF (RET$ = "S") OR (RET$ = "Q") THEN
FILLSCREEN (0)
SETVIEW 0, 0, MAXX, MAXY
EXIT SUB
END IF
'*************************************************************************
'* SHOW D2ROTATE (ABOUT THE ORIGIN)
'*************************************************************************
SETVIEW 0, 0, MAXX, 31
FILLVIEW (0)
DRWSTRING 1, 7, 0, TITLE$, 10, 0
A$ = "D3ROTATE (Points,XOrigin,YOrigin,ZOrigin,ZAngle,YAngle,XAngle,InAry,OutAry) "
DRWSTRING 1, 7, 0, A$, 10, 16
A$ = "Lets do it about the origin."
DRWSTRING 1, 7, 0, A$, 10, 32
SETVIEW 0, 32, MAXX, MAXY
FOR J = 0 TO 360 STEP 3
D3ROTATE 10, 0, 0, 0, 0, J, J, POINTARRY3D(0).X, PLAYARRY(0).X
R = D3PROJECT(10, PROJ.EYEX, PLAYARRY(0).X, PLOTARRY(0).X)
SHOWHOUSE
SDELAY 2
NEXT J
GETKEY RET$
IF (RET$ = "S") OR (RET$ = "Q") THEN
FILLSCREEN (0)
SETVIEW 0, 0, MAXX, MAXY
EXIT SUB
END IF
END SUB
SUB DOGIF (RET$, MAXX, MAXY)
'*************************************************************************
'* SET UP THE TITLE
'*************************************************************************
TITLE$ = "DEMO 8: Gif functions"
'*************************************************************************
'* SHOW GIF GET INFO
'*************************************************************************
SETVIEW 0, 0, MAXX, MAXY
FILLSCREEN (0)
DRWSTRING 1, 7, 0, TITLE$, 10, 0
LP:
A$ = "Please provide the name and full path (if not in the current drive/directory)"
B$ = "of a GIF file you would like to see..."
C$ = "Filename:"
DRWSTRING 1, 7, 0, A$, 10, 64
DRWSTRING 1, 7, 0, B$, 10, 80
DRWSTRING 1, 7, 0, C$, 10, 96
FILENAME$ = "_"
LENGTH = 0
EXT = 0
WHILE EXT = 0
DRWSTRING 1, 15, 0, FILENAME$, 82, 96
A$ = ""
WHILE LEN(A$) < 1 OR LEN(A$) > 1
A$ = INKEY$
WEND
A = ASC(A$)
IF A > 31 AND A < 128 THEN
FILENAME$ = LEFT$(FILENAME$, LENGTH) + A$ + "_"
LENGTH = LENGTH + 1
ELSE
IF A = 8 AND LENGTH > 0 THEN
DRWSTRING 1, 15, 0, STRING$(LENGTH + 1, 32), 82, 96
LENGTH = LENGTH - 1
FILENAME$ = LEFT$(FILENAME$, LENGTH) + "_"
ELSEIF A = 13 THEN
EXT = 1
END IF
END IF
WEND
FILENAME$ = LEFT$(FILENAME$, LENGTH)
IF LEN(FILENAME$) < 1 THEN
EXIT SUB '* OPPS! NO NAME GIVEN SO LET'S JUST BAIL OUT!
END IF
SHOWGIF RET$, MAXX, MAXY, FILENAME$
IF RET$ = "S" OR RET$ = "Q" THEN
FILLSCREEN (0)
EXIT SUB
END IF
DRWSTRING 1, 7, 0, TITLE$, 10, 0
A$ = "Would you like to see another (Y/N) ?"
DRWSTRING 1, 7, 0, A$, 10, 64
EXT = 0
SOUND 700, .75
WHILE EXT = 0
A$ = ""
WHILE A$ = ""
A$ = INKEY$
WEND
IF A$ = "Y" OR A$ = "y" THEN
GOTO LP
ELSEIF A$ = "N" OR A$ = "n" THEN
EXT = 1
ELSE
SOUND 100, 5
END IF
WEND
FILLSCREEN (0)
END SUB
SUB DOJOYSTICK (RET$, MAXX, MAXY)
'*************************************************************************
'* SET UP THE TITLE
'*************************************************************************
TITLE$ = "DEMO 10: Joystick functions"
PALSET PAL, 0, 255
FILLSCREEN (0)
SETVIEW 0, 0, MAXX, MAXY
'*************************************************************************
'* CHECK TO SEE IF WE HAVE A JOYSTICK SO WE CAN DO THE JOYSTICK DEMO
'*************************************************************************
JOYSTICK = WHICHJOYSTICK
IF JOYSTICK < 1 THEN
SOUND 100, 5
DRWSTRING 1, 7, 0, TITLE$, 10, 0
A$ = "Sorry, No Joystick Detected...Can Not Do The Joystick Demo."
DRWSTRING 1, 7, 0, A$, 10, 16
WHILE INKEY$ = ""
WEND
FILLSCREEN (0)
EXIT SUB
END IF
'*************************************************************************
'* SHOW JOYSTICKINFO (HERE WE DO SOME JOYSTICK CALIBRATION)
'*************************************************************************
DRWSTRING 1, 7, 0, TITLE$, 10, 0
A$ = "JOYSTICKINFO (JAX,JAY,JAButs,JBX,JBY,JBButs)"
DRWSTRING 1, 7, 0, A$, 10, 16
SETVIEW 0, 0, MAXX, MAXY
SELECT CASE JOYSTICK
CASE IS = 1
A$ = "Please Move Joystick A As Far As It Will Go In All Directions"
CASE IS = 2
A$ = "Please Move Joystick B As Far As It Will Go In All Directions"
CASE IS = 3
A$ = "Please Move Both Joystick A And B As Far As They Will Go In All Directions"
END SELECT
DRWSTRING 1, 7, 0, A$, 10, 32
A$ = "And Then Press A Key..."
DRWSTRING 1, 7, 0, A$, 10, 48
SOUND 700, .75
MAXXA = -1
MAXYA = -1
MINXA = 10000
MINYA = 10000
MAXXB = -1
MAXYB = -1
MINXB = 10000
MINYB = 10000
A$ = ""
WHILE A$ = ""
JOYSTICKINFO JAX, JAY, JAButs, JBX, JBY, JBButs
IF JAX > MAXXA THEN
MAXXA = JAX
END IF
IF JAX < MINXA THEN
MINXA = JAX
END IF
IF JAY > MAXYA THEN
MAXYA = JAY
END IF
IF JAY < MINYA THEN
MINYA = JAY
END IF
IF JBX > MAXXB THEN
MAXXB = JBX
END IF
IF JBX < MINXB THEN
MINXB = JBX
END IF
IF JBY > MAXYB THEN
MAXYB = JBY
END IF
IF JBY < MINYB THEN
MINYB = JBY
END IF
A$ = INKEY$
WEND
'*************************************************************************
'* CALCULATE THE CENTER AND STUFF...
'*************************************************************************
SPCNG = MAXX \ 7
DIST = SPCNG * 2
X1 = SPCNG \ 2
Y1 = SPCNG \ 2 + 32
X2 = X1 + DIST
Y2 = Y1 + DIST
X4 = MAXX - SPCNG
Y4 = Y2
X3 = X4 - DIST
Y3 = Y1
CNTAX = (X2 - X1) / 2 + X1
CNTAY = (Y2 - Y1) / 2 + Y1
CNTBX = (X4 - X3) / 2 + X3
CNTBY = (Y4 - Y3) / 2 + Y3
RANGEXA = MAXXA - MINXA
RANGEYA = MAXYA - MINYA
RANGEXB = MAXXB - MINXB
RANGEYB = MAXYB - MINYB
JABAX = (X2 - X1) \ 4 + X1 - 16
JABAY = (SPCNG \ 4) + Y2 - 6
JABBX = X2 - (X2 - X1) \ 4 - 16
JABBY = (SPCNG \ 4) + Y2 - 6
JBBAX = (X4 - X3) \ 4 + X3 - 16
JBBAY = (SPCNG \ 4) + Y4 - 6
JBBBX = X4 - (X4 - X3) \ 4 - 16
JBBBY = (SPCNG \ 4) + Y4 - 6
'*************************************************************************
'* LETS MOVE IT (OR THEM) AROUND
'*************************************************************************
SETVIEW 0, 0, MAXX, 64
FILLVIEW 0
SETVIEW 0, 0, MAXX, MAXY
IF JOYSTICK AND 1 THEN
DRWBOX 1, 15, X1 - 1, Y1 - 1, X2 + 1, Y2 + 1
DRWBOX 1, 15, X1 - 1, Y2 + 1, X2 + 1, Y2 + SPCNG \ 2
DRWLINE 1, 15, (X2 - X1) \ 2 + X1, Y2 + 1, (X2 - X1) \ 2 + X1, Y2 + SPCNG \ 2
OAX = CNTAX
OAY = CNTAY
DRWLINE 1, 10, CNTAX, CNTAY, OAX, OAY
ELSE
DRWBOX 1, 8, X1 - 1, Y1 - 1, X2 + 1, Y2 + 1
DRWBOX 1, 8, X1 - 1, Y2 + 1, X2 + 1, Y2 + SPCNG \ 2
DRWLINE 1, 8, (X2 - X1) \ 2 + X1, Y2 + 1, (X2 - X1) \ 2 + X1, Y2 + SPCNG \ 2
END IF
IF JOYSTICK AND 2 THEN
DRWBOX 1, 15, X3 - 1, Y3 - 1, X4 + 1, Y4 + 1
DRWBOX 1, 15, X3 - 1, Y4 + 1, X4 + 1, Y4 + SPCNG \ 2
DRWLINE 1, 15, (X4 - X3) \ 2 + X3, Y4 + 1, (X4 - X3) \ 2 + X3, Y4 + SPCNG \ 2
OBX = CNTBX
OBY = CNTBY
DRWLINE 1, 10, CNTBX, CNTBY, OBX, OBY
ELSE
DRWBOX 1, 8, X3 - 1, Y3 - 1, X4 + 1, Y4 + 1
DRWBOX 1, 8, X3 - 1, Y3 + 1, X4 + 1, Y4 + SPCNG \ 2
DRWLINE 1, 8, (X4 - X3) \ 2 + X3, Y4 + 1, (X4 - X3) \ 2 + X3, Y4 + SPCNG \ 2
END IF
DRWSTRING 1, 7, 0, TITLE$, 10, 0
A$ = "JOYSTICKINFO (JAX,JAY,JAButs,JBX,JBY,JBButs)"
DRWSTRING 1, 7, 0, A$, 10, 16
SETVIEW 0, 32, MAXX, MAXY
A$ = ""
WHILE A$ = ""
JOYSTICKINFO JAX, JAY, JAButs, JBX, JBY, JBButs
IF JOYSTICK AND 1 THEN
SETVIEW X1, Y1, X2, Y2
JAX = JAX - MINXA
JAX = JAX / RANGEXA * DIST + X1
JAY = JAY - MINYA
JAY = JAY / RANGEYA * DIST + Y1
DRWLINE 1, 0, CNTAX, CNTAY, OAX, OAY
OAX = JAX
OAY = JAY
DRWLINE 1, 10, CNTAX, CNTAY, OAX, OAY
SETVIEW 0, 0, MAXX, MAXY
IF JAButs AND 1 THEN
DRWSTRING 1, 10, 0, "ButA", JABAX, JABAY
ELSE
DRWSTRING 1, 8, 0, "ButA", JABAX, JABAY
END IF
IF JAButs AND 2 THEN
DRWSTRING 1, 10, 0, "ButB", JABBX, JABBY
ELSE
DRWSTRING 1, 8, 0, "ButB", JABBX, JABBY
END IF
END IF
IF JOYSTICK AND 2 THEN
SETVIEW X3, Y3, X4, Y4
JBX = JBX - MINXB
JBX = JBX / RANGEXB * DIST + X3
JBY = JBY - MINYB
JBY = JBY / RANGEYB * DIST + Y3
DRWLINE 1, 0, CNTBX, CNTBY, OBX, OBY
OBX = JBX
OBY = JBY
DRWLINE 1, 10, CNTBX, CNTBY, OBX, OBY
SETVIEW 0, 0, MAXX, MAXY
IF JBButs AND 1 THEN
DRWSTRING 1, 10, 0, "ButA", JBBAX, JBBAY
ELSE
DRWSTRING 1, 8, 0, "ButA", JBBAX, JBBAY
END IF
IF JBButs AND 2 THEN
DRWSTRING 1, 10, 0, "ButB", JBBBX, JBBBY
ELSE
DRWSTRING 1, 8, 0, "ButB", JBBBX, JBBBY
END IF
END IF
A$ = INKEY$
WEND
RET$ = A$
IF RET$ = "q" THEN
RET$ = "Q"
END IF
IF RET$ = "s" THEN
RET$ = "S"
END IF
IF (RET$ = "S") OR (RET$ = "Q") THEN
FILLSCREEN (0)
SETVIEW 0, 0, MAXX, MAXY
EXIT SUB
END IF
SETVIEW 0, 0, MAXX, MAXY
END SUB
SUB DOMOUSE (RET$, MAXX, MAXY)
'*************************************************************************
'* SET UP THE TITLE
'*************************************************************************
TITLE$ = "DEMO 9: Mouse functions"
FILLSCREEN (0)
PALSET PAL, 0, 255
SETVIEW 0, 0, MAXX, MAXY
'*************************************************************************
'* CHECK TO SEE IF WE HAVE A MOUSE SO WE CAN DO THE MOUSE DEMO
'*************************************************************************
MOUSE = WHICHMOUSE
IF MOUSE < 1 THEN
SOUND 100, 5
DRWSTRING 1, 7, 0, TITLE$, 10, 0
A$ = "Sorry, No Mouse Detected...Can Not Do The Mouse Demo."
DRWSTRING 1, 7, 0, A$, 10, 16
WHILE INKEY$ = ""
WEND
FILLSCREEN (0)
EXIT SUB
ELSE
Colr = 16
FOR I = 0 TO MAXX \ 2
DRWCIRCLE 1, Colr, MAXX \ 4 + I, MAXY \ 2, MAXY \ 5
Colr = Colr + 2
IF Colr > 255 THEN
Colr = 16
END IF
NEXT I
END IF
'*************************************************************************
'* SHOW MOUSESHOW
'*************************************************************************
SETVIEW 0, 0, MAXX, 31
FILLVIEW (0)
DRWSTRING 1, 7, 0, TITLE$, 10, 0
A$ = "MOUSESHOW ()"
DRWSTRING 1, 7, 0, A$, 10, 16
SETVIEW 0, 32, MAXX, MAXY
MOUSEENTER '*MUST BE CALLED FIRST TO ENABLE MOUSE FUNCTIONS
MOUSESHOW
GETKEY RET$
IF (RET$ = "S") OR (RET$ = "Q") THEN
MOUSEEXIT '*MUST BE CALLED TO DISABLE MOUSE FUNCTIONS
FILLSCREEN (0)
SETVIEW 0, 0, MAXX, MAXY
EXIT SUB
END IF
'*************************************************************************
'* SHOW MOUSESTATUS
'*************************************************************************
MOUSEHIDE
SETVIEW 0, 0, MAXX, 31
FILLVIEW (0)
DRWSTRING 1, 7, 0, TITLE$, 10, 0
A$ = "MOUSESTATUS (Xloc,Yloc,MButs)"
DRWSTRING 1, 7, 0, A$, 10, 16
MOUSESHOW
SETVIEW 0, 32, MAXX, MAXY
A$ = ""
SOUND 700, .75
WHILE A$ = ""
MOUSESTATUS X, Y, MButs
IF MButs AND 1 THEN
LB = 1
ELSE
LB = 0
END IF
IF MButs AND 2 THEN
RB = 1
ELSE
RB = 0
END IF
IF MButs AND 4 THEN
CB = 1
ELSE
CB = 0
END IF
D$ = "X=" + STR$(X)
L = LEN(D$)
IF L < 10 THEN
D$ = D$ + STRING$(8 - L, 32)
END IF
D$ = D$ + "Y=" + STR$(Y)
L = LEN(D$)
IF L < 20 THEN
D$ = D$ + STRING$(16 - L, 32)
END IF
D$ = D$ + "LB=" + STR$(LB) + " CB=" + STR$(CB) + " RB=" + STR$(RB)
DRWSTRING 1, 15, 8, D$, 10, 32
A$ = INKEY$
WEND
RET$ = A$
IF RET$ = "q" THEN
RET$ = "Q"
END IF
IF RET$ = "s" THEN
RET$ = "S"
END IF
IF (RET$ = "S") OR (RET$ = "Q") THEN
MOUSEEXIT '*MUST BE CALLED TO DISABLE MOUSE FUNCTIONS
FILLSCREEN (0)
SETVIEW 0, 0, MAXX, MAXY
EXIT SUB
END IF
'*************************************************************************
'* SHOW MOUSEHIDE
'*************************************************************************
MOUSEHIDE
SETVIEW 0, 0, MAXX, 31
FILLVIEW (0)
SETVIEW 0, 0, MAXX, MAXY
DRWSTRING 1, 7, 0, TITLE$, 10, 0
A$ = "MOUSEHIDE ()"
DRWSTRING 1, 7, 0, A$, 10, 16
SETVIEW 0, 32, MAXX, MAXY
A$ = ""
SOUND 700, .75
WHILE A$ = ""
MOUSESTATUS X, Y, MButs
IF MButs AND 1 THEN
LB = 1
ELSE
LB = 0
END IF
IF MButs AND 2 THEN
RB = 1
ELSE
RB = 0
END IF
IF MButs AND 4 THEN
CB = 1
ELSE
CB = 0
END IF
D$ = "X=" + STR$(X)
L = LEN(D$)
IF L < 10 THEN
D$ = D$ + STRING$(8 - L, 32)
END IF
D$ = D$ + "Y=" + STR$(Y)
L = LEN(D$)
IF L < 20 THEN
D$ = D$ + STRING$(16 - L, 32)
END IF
D$ = D$ + "LB=" + STR$(LB) + " CB=" + STR$(CB) + " RB=" + STR$(RB)
DRWSTRING 1, 15, 8, D$, 10, 32
A$ = INKEY$
WEND
MOUSESHOW
RET$ = A$
IF RET$ = "q" THEN
RET$ = "Q"
END IF
IF RET$ = "s" THEN
RET$ = "S"
END IF
IF (RET$ = "S") OR (RET$ = "Q") THEN
MOUSEEXIT '*MUST BE CALLED TO DISABLE MOUSE FUNCTIONS
FILLSCREEN (0)
SETVIEW 0, 0, MAXX, MAXY
EXIT SUB
END IF
'*************************************************************************
'* SHOW MOUSERANGE
'*************************************************************************
MOUSEHIDE
SETVIEW 0, 0, MAXX, 48
FILLVIEW (0)
DRWSTRING 1, 7, 0, TITLE$, 10, 0
A$ = "MOUSERANGESET (X1,Y1,X2,Y2)"
DRWSTRING 1, 7, 0, A$, 10, 16
SETVIEW 0, 0, MAXX, MAXY
SPCNG = (MAXY - 32) \ 3
X1 = SPCNG
Y1 = 32 + SPCNG
X2 = MAXX - SPCNG
Y2 = MAXY - SPCNG
DRWBOX 1, 15, X1, Y1, X2, Y2
MOUSESHOW
MOUSERANGESET X1, Y1, X2, Y2
GETKEY RET$
MOUSERANGESET 0, 0, MAXX, MAXY
IF (RET$ = "S") OR (RET$ = "Q") THEN
MOUSEEXIT '*MUST BE CALLED TO DISABLE MOUSE FUNCTIONS
FILLSCREEN (0)
SETVIEW 0, 0, MAXX, MAXY
EXIT SUB
END IF
'*************************************************************************
'* SHOW MOUSECURSORSET USE THE MAGNIFIER
'*************************************************************************
SETVIEW 0, 0, MAXX, 31
FILLVIEW (0)
DRWSTRING 1, 7, 0, TITLE$, 10, 0
A$ = "MOUSECURSORSET (XHotSpot,YHotSpot,MouseCursor$)"
DRWSTRING 1, 7, 0, A$, 10, 16
SETVIEW 0, 32, MAXX, MAXY
MOUSECURSORSET MAGMOUSECURSOR
GETKEY RET$
IF (RET$ = "S") OR (RET$ = "Q") THEN
MOUSEEXIT '*MUST BE CALLED TO DISABLE MOUSE FUNCTIONS
FILLSCREEN (0)
SETVIEW 0, 0, MAXX, MAXY
EXIT SUB
END IF
'*************************************************************************
'* SHOW MOUSECURSORSET USE THE BIG ARROW
'*************************************************************************
SETVIEW 0, 32, MAXX, MAXY
MOUSECURSORSET BIGMOUSECURSOR
GETKEY RET$
IF (RET$ = "S") OR (RET$ = "Q") THEN
MOUSEEXIT '*MUST BE CALLED TO DISABLE MOUSE FUNCTIONS
FILLSCREEN (0)
SETVIEW 0, 0, MAXX, MAXY
EXIT SUB
END IF
'*************************************************************************
'* SHOW MOUSECURSORSET USE THE STOPWATCH
'*************************************************************************
MOUSECURSORSET STWMOUSECURSOR
GETKEY RET$
IF (RET$ = "S") OR (RET$ = "Q") THEN
MOUSEEXIT '*MUST BE CALLED TO DISABLE MOUSE FUNCTIONS
FILLSCREEN (0)
SETVIEW 0, 0, MAXX, MAXY
EXIT SUB
END IF
'*************************************************************************
'* SHOW MOUSECURSORDEFAULT
'*************************************************************************
MOUSEHIDE
SETVIEW 0, 0, MAXX, 31
FILLVIEW (0)
DRWSTRING 1, 7, 0, TITLE$, 10, 0
A$ = "MOUSECURSORDEFAULT ()"
DRWSTRING 1, 7, 0, A$, 10, 16
MOUSESHOW
SETVIEW 0, 32, MAXX, MAXY
MOUSECURSORDEFAULT
GETKEY RET$
MOUSEEXIT '*MUST BE CALLED TO DISABLE MOUSE FUNCTIONS
FILLSCREEN (0)
SETVIEW 0, 0, MAXX, MAXY
END SUB
SUB SHOWGIF (RET$, MAXX, MAXY, FILENAME$)
'*************************************************************************
'* THIS ROUTINE IS CALLED BY DOGIF
'*************************************************************************
TITLE$ = "DEMO 8: Gif functions"
'*************************************************************************
'* SHOW GIF GET INFO
'*************************************************************************
FILLSCREEN (0)
DRWSTRING 1, 7, 0, TITLE$, 10, 0
A$ = "GIFGETINFO(FileName$,GifXSize,GifYSize,NumColors,Palette$)"
DRWSTRING 1, 7, 0, A$, 10, 16
GIFFILENAME$ = FILENAME$
OK = GIFGETINFO(GIFFILENAME$, XSIZE, YSIZE, NUMCOL, GIFPAL)
MIN = 255
MAX = 0
IF OK = 1 THEN
'*********************************************************************
'* WE NEED TO CHECK THE GIF COLOR PALETTE ENTRIES TO SEE IF ANY COLORS
'* ARE GREATER THE SIX BITS IN LENGTH AS THE VGA COLOR PALETTE
'* REGISTERS ARE ONLY SIX BITS WIDE. WE ALSO LOOK FOR THE BRIGHTEST
'* AND DARKEST COLORS TO USE AS OUR TEXT AND BACKGROUND COLORS
'*********************************************************************
FIXIT = 0
FOR A = 1 TO NUMCOL * 3 STEP 3
R = ASC(MID$(GIFPAL, A, 1))
G = ASC(MID$(GIFPAL, A + 1, 1))
B = ASC(MID$(GIFPAL, A + 2, 1))
IF R > 63 THEN
FIXIT = 1
END IF
IF G > 63 THEN
FIXIT = 1
END IF
IF B > 63 THEN
FIXIT = 1
END IF
TEST = R + G + B
IF TEST < MIN THEN '* FIND THE DARKEST COLOR FOR THE BACKGROUND
MIN = TEST
MINCOLOR = A / 3
END IF
IF TEST > MAX THEN
MAX = TEST '* FIND THE BRIGHTEST COLOR FOR THE TEXT
MAXCOLOR = A / 3
END IF
NEXT A
'*********************************************************************
'* IF THE GIF USES 8 BIT COLOR THEN WE SHIFT EACH COLOR ENTRY RIGHT
'* BY 2 BITS (THIS REDUCES IT TO 6 BITS OF COLOR)
'*********************************************************************
IF FIXIT = 1 THEN
FOR A = 1 TO NUMCOL * 3
C = ASC(MID$(GIFPAL, A, 1))
MID$(GIFPAL, A, 1) = CHR$(C \ 4)
NEXT A
END IF
'*********************************************************************
'* IF THE GIF HAS A PALETTE OF 128 COLORS OR LESS THEN WE CAN USE
'* OUR OWN COLORS FOR THE TEXT AND BACKGROUND
'*********************************************************************
IF NUMCOL < 128 THEN
MID$(GIFPAL, 763, 1) = CHR$(0) '* THIS IS THE COLOR BLACK
MID$(GIFPAL, 764, 1) = CHR$(0)
MID$(GIFPAL, 765, 1) = CHR$(0)
MINCOLOR = 254
MID$(GIFPAL, 766, 1) = CHR$(32) '* THIS IS THE COLOR MED WHITE
MID$(GIFPAL, 767, 1) = CHR$(32)
MID$(GIFPAL, 768, 1) = CHR$(32)
MAXCOLOR = 255
END IF
A$ = "'" + GIFFILENAME$ + "' is identified as a 'Non-Interlaced' type 'GIF87a' GIF."
DRWSTRING 1, 15, 0, A$, 10, 64
A$ = "Dimensions are:" + STR$(XSIZE) + " pixels wide and" + STR$(YSIZE) + " pixels high"
DRWSTRING 1, 15, 0, A$, 10, 80
A$ = "Number of colors:" + STR$(NUMCOL)
DRWSTRING 1, 15, 0, A$, 10, 96
GETKEY RET$
IF (RET$ = "S") OR (RET$ = "Q") THEN
FILLSCREEN (0)
SETVIEW 0, 0, MAXX, MAXY
EXIT SUB
END IF
'*********************************************************************
'* SHOW GIF GET PUT
'*********************************************************************
PALSET GIFPAL, 0, 255
OVERSCANSET (MINCOLOR)
FILLSCREEN (MINCOLOR)
DRWSTRING 1, MAXCOLOR, MINCOLOR, TITLE$, 10, 0
A$ = "GIFPUT(Mode,X,Y,FileName$)"
DRWSTRING 1, MAXCOLOR, MINCOLOR, A$, 10, 16
SETVIEW 0, 32, MAXX, MAXY
Xloc = (MAXX \ 2) - (XSIZE \ 2)
Yloc = ((MAXY - 32) \ 2) - (YSIZE \ 2) + 32
OK = GIFPUT(1, Xloc, Yloc, GIFFILENAME$)
IF OK <> 1 THEN
'*********************************************************************
'* OPPS...THIS FILE HAS SOME PROBLEM
'********************************************************************
SOUND 100, 5
A$ = "The file '" + GIFFILENAME$ + "' "
B$ = ""
SELECT CASE OK
CASE IS = 0
A$ = A$ + "does not exist in the specified directory"
B$ = " or there is some disk I/O problem."
CASE IS = -1
A$ = A$ + "does not have the 'GIF87a' signature."
CASE IS = -2
A$ = A$ + "is an interlaced GIF."
CASE IS = -3
A$ = A$ + "does not use a global color map."
CASE IS = -4
A$ = A$ + "has some general error."
CASE ELSE
A$ = "SIZE=" + STR$(OK)
END SELECT
DRWSTRING 1, MINCOLOR, MAXCOLOR, A$, 10, 64
DRWSTRING 1, MINCOLOR, MAXCOLOR, B$, 10, 80
END IF
ELSE
'*********************************************************************
'* OPPS...THIS FILE HAS SOME PROBLEM
'*********************************************************************
SOUND 100, 5
A$ = "The file '" + GIFFILENAME$ + "' "
B$ = ""
SELECT CASE OK
CASE IS = 0
A$ = A$ + "does not exist in the specified directory"
B$ = " or there is some disk I/O problem."
CASE IS = -1
A$ = A$ + "does not have the 'GIF87a' signature."
CASE IS = -2
A$ = A$ + "is an interlaced GIF."
CASE IS = -3
A$ = A$ + "does not use a global color map."
CASE IS = -4
A$ = A$ + "has some general error."
END SELECT
DRWSTRING 1, 15, 0, A$, 10, 64
DRWSTRING 1, 15, 0, B$, 10, 80
END IF
GETKEY RET$
PALSET ORGPAL, 0, 255
OVERSCANSET (0)
FILLSCREEN (0)
SETVIEW 0, 0, MAXX, MAXY
END SUB
SUB SHOWHOUSE
SHARED OPLOTARRY() AS P2DType
SHARED PLOTARRY() AS P2DType
'*************************************************************************
'* THIS ROUTINE IS CALLED BY DO3D
'*************************************************************************
'*************************************************************************
'* ERASE THE OLD HOUSE
'*************************************************************************
DRWLINE 1, 0, OPLOTARRY(10).X, OPLOTARRY(10).Y, OPLOTARRY(11).X, OPLOTARRY(11).Y
DRWLINE 1, 0, OPLOTARRY(10).X, OPLOTARRY(10).Y, OPLOTARRY(12).X, OPLOTARRY(12).Y
DRWLINE 1, 0, OPLOTARRY(10).X, OPLOTARRY(10).Y, OPLOTARRY(13).X, OPLOTARRY(13).Y
FOR I = 0 TO 2
DRWLINE 1, 0, OPLOTARRY(I).X, OPLOTARRY(I).Y, OPLOTARRY(I + 1).X, OPLOTARRY(I + 1).Y
DRWLINE 1, 0, OPLOTARRY(I + 4).X, OPLOTARRY(I + 4).Y, OPLOTARRY(I + 4 + 1).X, OPLOTARRY(I + 4 + 1).Y
DRWLINE 1, 0, OPLOTARRY(I).X, OPLOTARRY(I).Y, OPLOTARRY(I + 4).X, OPLOTARRY(I + 4).Y
NEXT I
DRWLINE 1, 0, OPLOTARRY(3).X, OPLOTARRY(3).Y, OPLOTARRY(7).X, OPLOTARRY(7).Y
DRWLINE 1, 0, OPLOTARRY(0).X, OPLOTARRY(0).Y, OPLOTARRY(3).X, OPLOTARRY(3).Y
DRWLINE 1, 0, OPLOTARRY(4).X, OPLOTARRY(4).Y, OPLOTARRY(7).X, OPLOTARRY(7).Y
DRWLINE 1, 0, OPLOTARRY(3).X, OPLOTARRY(3).Y, OPLOTARRY(8).X, OPLOTARRY(8).Y
DRWLINE 1, 0, OPLOTARRY(8).X, OPLOTARRY(8).Y, OPLOTARRY(2).X, OPLOTARRY(2).Y
DRWLINE 1, 0, OPLOTARRY(7).X, OPLOTARRY(7).Y, OPLOTARRY(9).X, OPLOTARRY(9).Y
DRWLINE 1, 0, OPLOTARRY(9).X, OPLOTARRY(9).Y, OPLOTARRY(6).X, OPLOTARRY(6).Y
DRWLINE 1, 0, OPLOTARRY(8).X, OPLOTARRY(8).Y, OPLOTARRY(9).X, OPLOTARRY(9).Y
'*************************************************************************
'* DRAW THE NEW HOUSE
'*************************************************************************
DRWLINE 1, 8, PLOTARRY(10).X, PLOTARRY(10).Y, PLOTARRY(11).X, PLOTARRY(11).Y
DRWLINE 1, 8, PLOTARRY(10).X, PLOTARRY(10).Y, PLOTARRY(12).X, PLOTARRY(12).Y
DRWLINE 1, 8, PLOTARRY(10).X, PLOTARRY(10).Y, PLOTARRY(13).X, PLOTARRY(13).Y
FOR I = 0 TO 2
DRWLINE 1, 10, PLOTARRY(I).X, PLOTARRY(I).Y, PLOTARRY(I + 1).X, PLOTARRY(I + 1).Y
DRWLINE 1, 10, PLOTARRY(I + 4).X, PLOTARRY(I + 4).Y, PLOTARRY(I + 4 + 1).X, PLOTARRY(I + 4 + 1).Y
DRWLINE 1, 10, PLOTARRY(I).X, PLOTARRY(I).Y, PLOTARRY(I + 4).X, PLOTARRY(I + 4).Y
NEXT I
DRWLINE 1, 10, PLOTARRY(3).X, PLOTARRY(3).Y, PLOTARRY(7).X, PLOTARRY(7).Y
DRWLINE 1, 10, PLOTARRY(0).X, PLOTARRY(0).Y, PLOTARRY(3).X, PLOTARRY(3).Y
DRWLINE 1, 10, PLOTARRY(4).X, PLOTARRY(4).Y, PLOTARRY(7).X, PLOTARRY(7).Y
DRWLINE 1, 10, PLOTARRY(3).X, PLOTARRY(3).Y, PLOTARRY(8).X, PLOTARRY(8).Y
DRWLINE 1, 10, PLOTARRY(8).X, PLOTARRY(8).Y, PLOTARRY(2).X, PLOTARRY(2).Y
DRWLINE 1, 10, PLOTARRY(7).X, PLOTARRY(7).Y, PLOTARRY(9).X, PLOTARRY(9).Y
DRWLINE 1, 10, PLOTARRY(9).X, PLOTARRY(9).Y, PLOTARRY(6).X, PLOTARRY(6).Y
DRWLINE 1, 10, PLOTARRY(8).X, PLOTARRY(8).Y, PLOTARRY(9).X, PLOTARRY(9).Y
'*************************************************************************
'* SAVE THE OLD POINTS
'*************************************************************************
FOR I = 0 TO 13
OPLOTARRY(I).X = PLOTARRY(I).X
OPLOTARRY(I).Y = PLOTARRY(I).Y
NEXT I
END SUB
SUB SHOWSTAR
SHARED OPLOTARRY() AS P2DType
SHARED PLOTARRY() AS P2DType
'*************************************************************************
'* THIS ROUTINE IS CALLED BY DO2D
'*************************************************************************
'*************************************************************************
'* ERASE THE OLD STAR
'*************************************************************************
FOR I = 0 TO 7
DRWLINE 1, 0, OPLOTARRY(I).X, OPLOTARRY(I).Y, OPLOTARRY(I + 1).X, OPLOTARRY(I + 1).Y
NEXT I
'*************************************************************************
'* DRAW THE NEW STAR
'*************************************************************************
FOR I = 0 TO 7
DRWLINE 1, 10, PLOTARRY(I).X, PLOTARRY(I).Y, PLOTARRY(I + 1).X, PLOTARRY(I + 1).Y
NEXT I
'*************************************************************************
'* SAVE THE OLD POINTS
'*************************************************************************
FOR I = 0 TO 8
OPLOTARRY(I).X = PLOTARRY(I).X
OPLOTARRY(I).Y = PLOTARRY(I).Y
NEXT I
END SUB