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,OUTBUF) PRL(2) = LEN CALL WTQIO(IOWVB,5,2,,,PRL) LEN = 0 CALL GETADR(PRL,HORARY) PRL(2) = RMAR - LMAR + 1 CALL WTQIO(IOWVB,5,2,,,PRL) CALL UVT100(CUP,BMAR+1,LMAR) CALL GETADR(PRL,OUTBUF) PRL(2) = LEN CALL WTQIO(IOWVB,5,2,,,PRL) LEN = 0 CALL GETADR(PRL,HORARY) PRL(2) = RMAR - LMAR + 1 CALL WTQIO(IOWVB,5,2,,,PRL) CALL UVT100(CUP,TMAR-1,LMAR-1) OUTBUF(LEN+1) = ULCOR LEN = LEN + 1 CALL UVT100(CUP,TMAR-1,RMAR+1) OUTBUF(LEN+1) = URCOR LEN = LEN + 1 DO I = TMAR,BMAR [ CALL UVT100(CUP,I,RMAR+1) OUTBUF(LEN+1) = VERT LEN = LEN + 1 CALL UVT100(CUP,I,LMAR-1) OUTBUF(LEN+1) = VERT LEN = LEN + 1 ] CALL UVT100(CUP,BMAR+1,LMAR-1) OUTBUF(LEN+1) = LLCOR LEN = LEN + 1 CALL UVT100(CUP,BMAR+1,RMAR+1) OUTBUF(LEN+1) = LRCOR LEN = LEN + 1 CALL UVT100(CUP,GMAR-1,LMAR-1)#MARK PLAYER ZONE BOUNDARY OUTBUF(LEN+1) = TRIGHT LEN = LEN + 1 CALL UVT100(CUP,GMAR-1,RMAR+1) OUTBUF(LEN+1) = TLEFT LEN = LEN + 1 GUNX = BMAR #REPOSITION GUN GUNY = RMAR / 2 CALL UVT100(CUP,GUNX,GUNY) OUTBUF(LEN+1) = GUNCHR LEN = LEN + 1 # # 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) OUTBUF(LEN+1) = MSHCHR LEN = LEN + 1 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 OUTBUF(LEN+1) = CRHEAD LEN = LEN + 1 RETURN END