SUBROUTINE START # # THIS SUBROUTINE IS CALLED AT THE BEGINNING OF THE GAME, AND EACH # TIME THE BRICKS ARE ALL CLEARED OUT, TO DISPLAY A FRESH BOARD. # IMPLICIT INTEGER (A-Z) INCLUDE SY:UVT100.DAT INCLUDE SY:BRKOUT.CMN BYTE HORARY(RMAR) DATA HORARY / RMAR*HORIZ / DATA DSPCHR / 5*SPACE,LRCOR,URCOR,TLEFT,SPACE,LLCOR,ULCOR, TRIGHT,HORIZ,TUP,TDOWN,CROSS / DATA PDLY / 13 / DATA FRSTIM / 1 / IF (FRSTIM == 1) [ #FIRST TIME CALL FRSTIM = 0 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) #DISPLAY BORDER AROUND DO I = 1,RMAR-LMAR+1 #PLAYING AREA OUTBUF(LEN+I) = HORARY(I) LEN = LEN + RMAR-LMAR+1 CALL UVT100(CUP,BMAR+1,LMAR) DO I = 1,RMAR-LMAR+1 OUTBUF(LEN+I) = HORARY(I) LEN = LEN + RMAR-LMAR+1 CALL UVT100(CUP,TMAR-1,LMAR-1) OUTBUF(LEN+1) = ULCOR LEN = LEN + 1 CALL UVT100(CUP,BMAR+1,LMAR-1) OUTBUF(LEN+1) = LLCOR LEN = LEN + 1 CALL UVT100(CUP,TMAR-1,RMAR+1) OUTBUF(LEN+1) = URCOR LEN = LEN + 1 CALL UVT100(CUP,BMAR+1,RMAR+1) OUTBUF(LEN+1) = LRCOR LEN = LEN + 1 DO I = TMAR,BMAR [ CALL UVT100(CUP,I,LMAR-1) OUTBUF(LEN+1) = VERT LEN = LEN + 1 CALL UVT100(CUP,I,RMAR+1) OUTBUF(LEN+1) = VERT LEN = LEN + 1 ] ] DO J = 3,8 [ #DISPLAY NEW BOARD CALL UVT100(CUP,J,3) CALL GETADR(PRL,OUTBUF) PRL(2) = LEN CALL WTQIO(IOWVB,5,2,,,PRL) LEN = 0 WRITE (5,100) (BOARD(I,J),I=3,31) ] DO I = 3,8 [ #RESET BOARD STATE TABLE DO J = 3,31 [ DO K = 5,15 [ IF (DSPCHR(K) == BOARD(J,I)) BSTATE(I,J) = K ] ] ] DO I = 1,5 [ #RESET BRICKS ALIVE TABLE DO J = 1,14 [ ALIVE(I,J) = 1 ] ] BALLX = 10 #INITIAL BALL COORDINATES BALLY = LMAR #AND DIRECTION BALDIR = 135 CALL UVT100(CUP,BALLX,BALLY) #DISPLAY BALL OUTBUF(LEN+1) = BALCHR LEN = LEN + 1 CALL UVT100(CUP,BMAR,PDLY) #BLANK OUT OLD PADDLE DO I = 1,3 OUTBUF(LEN+I) = SPACE LEN = LEN + 3 PDLY = 13 #INITIAL PADDLE LOCATION CALL UVT100(CUP,BMAR,PDLY-1) DO I = 1,5 OUTBUF(LEN+I) = PDLCHR(I) #DISPLAY PADDLE LEN = LEN + 5 RETURN 100 FORMAT (40A1) END