SUBROUTINE START # # THIS SUBROUTINE PROVIDES THE CODE NECESSARY TO BEGIN A NEW BOARD. # THE FIRST BOARD CONSISTS OF A SINGLE CENTIPEDE 12 SEGMENTS LONG, # THE SECOND CONSISTS OF ONE 11-SEGMENT ONE AND ONE 1-SEGMENT ONE, # THE THIRD CONSISTS OF ONE 10-SEGMENT ONE AND TWO 1-SEGMENT ONES, # AND SO ON UNTIL THE TWELFTH BOARD, WHICH CONSISTS OF 12 1-SEGMENT # ONES. THE TWELFTH BOARD RECYCLES TO THE FIRST ONE. # IMPLICIT INTEGER (A-Z) INCLUDE SY:CNTPED.CMN INCLUDE SY:UVT100.DAT % PARAMETER HORIZ="161, VERT="170, URCOR="153, TLEFT="165 % PARAMETER ULCOR="154, LLCOR="155, LRCOR="152, TRIGHT="164 REAL X,RAN BYTE HORARY(RMAR) DATA HORARY / RMAR*HORIZ / BOARD = BOARD + 1 #SET CURRENT BOARD NUMBER IF (BOARD > 12) BOARD = 1 CNTWAV = BOARD - 1 #NUMBER OF CENTIPEDES TO RELEASE IF (CNTWAV > 0) CNTTIM = TIMER + 50 #NEXT CENTIPEDE TIME ELSE CNTTIM = 0 SPITIM = TIMER + 30 #INITIAL SPIDER TIME FOR THIS BOARD DO I = 1,MAXCNT [ CRISE(I) = 1 #SET ALL CENTIPEDES TO 'DESCEND' CBOT(I) = 0 #CLEAR 'HIT BOTTOM' FLAG ] IF (FIRST == 0) [ #FIRST TIME CALL... FIRST = 1 CALL UVT100(ED,2) #ERASE SCREEN DO I = 1,24 [ #SET SCREEN TO DOUBLE WIDTH CALL UVT100(CUP,I,1) CALL UVT100(DECDWL) ] CALL UVT100(CUP,TMAR-1,LMAR) #DRAW LINES AROUND PLAYING AREA CALL GETADR(PRL,HORARY) PRL(2) = RMAR - LMAR + 1 CALL WTQIO(IOWVB,5,2,,,PRL) CALL UVT100(CUP,BMAR+1,LMAR) CALL WTQIO(IOWVB,5,2,,,PRL) CALL UVT100(TMAR-1,LMAR-1) CALL GETADR(PRL,ULCOR) PRL(2) = 1 CALL WTQIO(IOWVB,5,2,,,PRL) CALL UVT100(CUP,TMAR-1,RMAR+1) CALL GETADR(PRL,URCOR) CALL WTQIO(IOWVB,5,2,,,PRL) CALL GETADR(PRL,VERT) DO I = TMAR,BMAR [ CALL UVT100(CUP,I,RMAR+1) CALL WTQIO(IOWVB,5,2,,,PRL) CALL UVT100(CUP,I,LMAR-1) CALL WTQIO(IOWVB,5,2,,,PRL) ] CALL UVT100(CUP,BMAR+1,LMAR-1) CALL GETADR(PRL,LLCOR) CALL WTQIO(IOWVB,5,2,,,PRL) CALL UVT100(CUP,BMAR+1,RMAR+1) CALL GETADR(PRL,LRCOR) CALL WTQIO(IOWVB,5,2,,,PRL) CALL UVT100(CUP,GMAR-1,LMAR-1)#MARK PLAYER ZONE BOUNDARY CALL GETADR(PRL,TRIGHT) CALL WTQIO(IOWVB,5,2,,,PRL) CALL UVT100(CUP,GMAR-1,RMAR+1) CALL GETADR(PRL,TLEFT) CALL WTQIO(IOWVB,5,2,,,PRL) GUNX = BMAR #REPOSITION GUN GUNY = RMAR / 2 CALL UVT100(CUP,GUNX,GUNY) CALL GETADR(PRL,GUNCHR) CALL WTQIO(IOWVB,5,2,,,PRL) # # GENERATE RANDOMLY LOCATED INITIAL MUSHROOMS # DO I = 1,40 [ X = RAN(SEED) RANDX = (X * (GMAR-1)) + TMAR X = RAN(SEED) RANDY = (X * (RMAR-LMAR+1)) + LMAR CALL UVT100(CUP,RANDX,RANDY) CALL GETADR(PRL,MSHCHR) CALL WTQIO(IOWVB,5,2,,,PRL) MSHBRD(RANDX,RANDY) = 4 ] ] CLEN(1) = 13 - BOARD #INITIAL CENTIPEDE CDIR(1) = RIGHT DO I = 1,CLEN(1) [ CX(1,I) = TMAR CY(1,I) = LMAR ] CALL UVT100(CUP,CX(1,1),CY(1,1))#DISPLAY HIM CALL GETADR(PRL,CRHEAD) CALL WTQIO(IOWVB,5,2,,,PRL) RETURN END