MAP1 GCB,X,80000 !GRAPHICS CONTROL BLOCK
MAP1 STATUS,F,6 !STATUS RETURN FROM GRAPHICS CALLS
MAP1 POINT'ARRAY
MAP2 POINT'COUNT,B,2 ! total count of points
MAP2 POINTS(25) ! max number of points
MAP3 X'POINT,B,2 ! X coordinate
MAP3 Y'POINT,B,2 ! Y coordinate
MAP1 CIRCLE'ARRAY
MAP2 CENT'X !CENTER OF CIRCLE TO DRAW
MAP3 XCORD,B,2,8501 !X CORDNATE
MAP3 YCORD,B,2,1500 !CAN YOU BELEVE IT, THE Y CORDNATE
MAP2 RADIUS,B,2,1400 !THE ALL IMPORTANT RADIUS OF THE CIRCLE
MAP1 POIXTER,B,1 !CURRENT X POSITION OF THE POINTER ON BOARD
MAP1 POIYTER,B,1 !CURRENT Y POSITION OF THE POINTER ON BOARD
MAP1 BOARD !THIS IS THE BIG DATA STRUCTURE BABY
MAP2 LOCATION(8,8),B,1 !0=NOTHING, 1=GREY, 2=BLACK
MAP2 KING,B,1 !0=REGULAR MAN, 1=KING
!THIS IS THE START OF IT ALL AND THATS NO LIE
ON ERROR GOTO EXIT !LEAVE LIKE A NORMAL HUMAN
PRINT TAB(-1,29);!TAB(-1,36);
XCALL AMGSBR, G'OPWK, GCB,"", STATUS ! OPEN THE WORKSTATION
XCALL AMGSBR, G'CLRW, GCB, STATUS ! CLEAR THE WORKSTATION
CALL DRAW'BOARD
CALL PLAC'CHECKRS
CALL INIT'BOARD
CALL PLAY
CLOSER: XCALL AMGSBR, G'CLWK, GCB, STATUS !CLOSE THE WORKSTATION NICELY
EXIT: PRINT TAB(23,1); TAB(-1,37);:END !LEAVE THIS MESS
PLAC'CHECKRS:!PUT DOWN SOME GREY CHECKERS DUDE
COLOR=GREY
XCORD=8501
YCORD=1500
RADIUS=1400
FOR COUNTER=1 TO 4
CALL CIRCLE
XCORD=XCORD+6000
NEXT COUNTER
XCORD=23501
YCORD=4500
FOR COUNTER=1 TO 4
CALL CIRCLE
XCORD=XCORD-6000
NEXT COUNTER
XCORD=8501
YCORD=7500
FOR COUNTER=1 TO 4
CALL CIRCLE
XCORD=XCORD+6000
NEXT COUNTER
!NOW LETS LAY DOWN A FEW BLACK CHECKERS AND GET ON WITH THE GAME
COLOR=BLACK
XCORD=5501
YCORD=16500
FOR COUNTER=1 TO 4
CALL CIRCLE
XCORD=XCORD+6000
NEXT COUNTER
XCORD=26501
YCORD=19500
FOR COUNTER=1 TO 4
CALL CIRCLE
XCORD=XCORD-6000
NEXT COUNTER
XCORD=5501
YCORD=22500
FOR COUNTER=1 TO 4
CALL CIRCLE
XCORD=XCORD+6000
NEXT COUNTER
POIXTER=5
POIYTER=4
CALL MARK
RETURN
PLAY:
XCALL INKEY,INSTR
IF INSTR="1" THEN CALL ONE
! IF INSTR="2" THEN CALL TWO
! IF INSTR="3" THEN CALL THREE
! IF INSTR="4" THEN CALL FOUR
! IF INSTR="6" THEN CALL SIX
! IF INSTR="7" THEN CALL SEVEN
! IF INSTR="8" THEN CALL EIGHT
! IF INSTR="9" THEN CALL NINE
! IF INSTR="J" THEN CALL JUMP
! IF INSTR="N" THEN CALL NEW
IF INSTR="Q" THEN CALL QUIT
! IF INSTR="?" THEN CALL HELP
GOTO PLAY
ONE:
CALL XMARK
POIXTER=POIXTER-1
IF POIXTER=0 THEN POIXTER=8
POIYTER=POIYTER-1
IF POIYTER=0 THEN POIYTER=8
CALL MARK
RETURN
QUIT:
RETURN
RECT:!THIS ROUTINE WILL DRAW ALL OF THE LITTLE SQUARES ON THE SCREEN
XCALL AMGSBR, G'SFAC, GCB, COLOR,STATUS
POINT'COUNT = 5
XCALL AMGSBR, G'FA, GCB, POINT'ARRAY, STATUS
IF NO'OUTLINE=1 THEN NO'OUTLINE=0 : RETURN
! outline the right face
XCALL AMGSBR, G'SPLC, GCB,BLACK, STATUS ! fill style
XCALL AMGSBR, G'PL, GCB, POINT'ARRAY, STATUS
RETURN
CHG'COLR: !ALTERNATE THE COLOR OF THE SQUARES
IF COLOR=RED THEN COLOR=WHITE ELSE COLOR=RED
RETURN
CIRCLE:!LETS DRAW SOME CIRCLES OK
XCALL AMGSBR,G'SFAS,GCB,2,STATUS
XCALL AMGSBR,G'SFAC,GCB,COLOR,STATUS
XCALL AMGSBR,G'GCIR,GCB,XCORD,YCORD,RADIUS,125,STATUS
RETURN
INIT'BOARD:
YCOUNT=1
FOR XCOUNT=2 TO 8 STEP 2
LOCATION(XCOUNT,YCOUNT)=1
NEXT XCOUNT
YCOUNT=2
FOR XCOUNT=1 TO 7 STEP 2
LOCATION(XCOUNT,YCOUNT)=1
NEXT XCOUNT
YCOUNT=3
FOR XCOUNT=2 TO 8 STEP 2
LOCATION(XCOUNT,YCOUNT)=1
NEXT XCOUNT
YCOUNT=6
FOR XCOUNT=1 TO 7 STEP 2
LOCATION(XCOUNT,YCOUNT)=2
NEXT XCOUNT
YCOUNT=7
FOR XCOUNT=2 TO 8 STEP 2
LOCATION(XCOUNT,YCOUNT)=2
NEXT XCOUNT
YCOUNT=8
FOR XCOUNT=1 TO 7 STEP 2
LOCATION(XCOUNT,YCOUNT)=2
NEXT XCOUNT
FOR XCOUNT=1 TO 8
FOR YCOUNT=4 TO 5
LOCATION(XCOUNT,YCOUNT)=0
NEXT YCOUNT
NEXT XCOUNT
RETURN