SUBROUTINE START C C THIS SUBROUTINE PROVIDES THE CODE NECESSARY TO BEGIN A NEW BOARD. C THE FIRST BOARD CONSISTS OF A SINGLE CENTIPEDE 12 SEGMENTS LONG, C THE SECOND CONSISTS OF ONE 11-SEGMENT ONE AND ONE 1-SEGMENT ONE, C THE THIRD CONSISTS OF ONE 10-SEGMENT ONE AND TWO 1-SEGMENT ONES, C AND SO ON UNTIL THE TWELFTH BOARD, WHICH CONSISTS OF 12 1-SEGMENT C ONES. THE TWELFTH BOARD RECYCLES TO THE FIRST ONE. C IMPLICIT INTEGER(A - Z) PARAMETER MAXCNT = 24 C SCREEN BOUNDARIES PARAMETER LMAR = 2, RMAR = 30, TMAR = 2, BMAR = 23, GMAR = 18 C DIRECTIONALS PARAMETER HALT = 0, UP = 1, DOWN = 2, LEFT = 4, RIGHT = 8 PARAMETER UPL = 10, UPR = 9, DOWNL = 12, DOWNR = 11 C DISPLAYABLE CHARACTERS PARAMETER GUNCHR="166, CBODY="140, MSHCHR="146, BULCHR="170 PARAMETER SPICHR="173, FLECHR="175, SCOCHR="142, PSNCHR="052 PARAMETER CLHEAD="074, CRHEAD="076, CDHEAD="126 PARAMETER SHFIN="17, SHFOUT="16, SPACE="40 C QIO FUNCTION CODES PARAMETER IOATA="1410, IOWVB="11000, SFSMC="2440 C INTEGER*4SCORE, FRESCO, TIMER, SEED, FLETIM, SPITIM, SCOTIM, CNTTI *M DIMENSION PRL(6), CX(MAXCNT, 12), CY(MAXCNT, 12) DIMENSION CLEN(MAXCNT), CDIR(MAXCNT), CRISE(MAXCNT), CBOT(MAXCNT) BYTE CNTBRD(BMAR, RMAR), MSHBRD(BMAR, RMAR), PSNBRD(BMAR, RMAR) COMMON/DIRCOM/DIRCOD, FIRCOD COMMON/CNTCOM/PRL, SCORE, TIMER, SEED, CX, CY, CLEN, CDIR, CRISE, *CBOT, GUNX, GUNY, FRESCO, CNTBRD, MSHBRD, PSNBRD, BULACT, BULX, BU *LY, FLETIM, FLEACT, FLEX, FLEY, SPITIM, SPIACT, SPIX, SPIY, SPILR, * SCOTIM, SCOACT, SCOX, SCOY, SCODIR, GUNCNT, CNTTIM, BOARD, CNTWAV C C VT100 DISPLAY CONTROL PARAMETER DEFINITIONS C CCURSOR POSITION REPORT CCURSOR UP CCURSOR DOWN CCURSOR FORWARD CCURSOR BACK CDOUBLE WIDTH LINE PARAMETER CUP = 1, CUU = 2, CUD = 3, CUF = 4, CUB = 5, DECDWL = 6, * DECDHL = 7, DECRC = 8, DECSC = 9, DECSWL = 10, ED = 11, EL = 12, *SGR = 13, NEL = 14, SCS = 15, SM = 16, RM = 17, ANSI = 18, CPP=19 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/ CSET CURRENT BOARD NUMBER BOARD = BOARD + 1 IF (.NOT.(BOARD .GT. 12)) GOTO 2000 BOARD = 1 2000 CONTINUE CNUMBER OF CENTIPEDES TO RELEASE CNTWAV = BOARD - 1 IF (.NOT.(CNTWAV .GT. 0)) GOTO 2020 CNEXT CENTIPEDE TIME CNTTIM = TIMER + 50 GOTO 2030 2020 CONTINUE CNTTIM = 0 2030 CONTINUE CINITIAL SPIDER TIME FOR THIS BOARD SPITIM = TIMER + 30 DO 2040 I = 1, MAXCNT CSET ALL CENTIPEDES TO 'DESCEND' CRISE(I) = 1 CCLEAR 'HIT BOTTOM' FLAG CBOT(I) = 0 2040 CONTINUE IF (.NOT.(FIRST .EQ. 0)) GOTO 2060 CFIRST TIME CALL... FIRST = 1 CERASE SCREEN CALL UVT100(ED, 2) DO 2080 I = 1, 24 CSET SCREEN TO DOUBLE WIDTH CALL UVT100(CUP, I, 1) CALL UVT100(DECDWL) 2080 CONTINUE CDRAW LINES AROUND PLAYING AREA CALL UVT100(CUP, TMAR - 1, LMAR) 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(CPP, TMAR - 1, LMAR - 1, ULCOR) PRL(2) = 1 CALL UVT100(CPP, TMAR - 1, RMAR + 1, URCOR) CALL GETADR(PRL, VERT) DO 2100 I = TMAR, BMAR CALL UVT100(CPP, I, RMAR + 1, VERT) CALL UVT100(CPP, I, LMAR - 1, VERT) 2100 CONTINUE CALL UVT100(CPP, BMAR + 1, LMAR - 1, LLCOR) CALL UVT100(CPP, BMAR + 1, RMAR + 1, LRCOR) CMARK PLAYER ZONE BOUNDARY CALL UVT100(CPP, GMAR - 1, LMAR - 1, TRIGHT) CALL UVT100(CPP, GMAR - 1, RMAR + 1, TLEFT) CREPOSITION GUN GUNX = BMAR GUNY = RMAR/2 CALL UVT100(CPP, GUNX, GUNY, GUNCHR) C C GENERATE RANDOMLY LOCATED INITIAL MUSHROOMS C DO 2120 I = 1, 40 X = RAN(SEED) RANDX = (X*(GMAR - 1)) + TMAR X = RAN(SEED) RANDY = (X*(RMAR - LMAR + 1)) + LMAR CALL UVT100(CPP, RANDX, RANDY, MSHCHR) MSHBRD(RANDX, RANDY) = 4 2120 CONTINUE 2060 CONTINUE CINITIAL CENTIPEDE CLEN(1) = 13 - BOARD CDIR(1) = RIGHT DO 2140 I = 1, CLEN(1) CX(1, I) = TMAR CY(1, I) = LMAR 2140 CONTINUE CDISPLAY HIM CALL UVT100(CPP, CX(1, 1), CY(1, 1), CRHEAD) RETURN END