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),SPCCHR(3) DATA HORARY / RMAR*HORIZ / DATA SPCCHR / 3*SPACE / 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 CALL GETADR(PRL,HORARY) #PLAYING AREA PRL(2) = RMAR - LMAR + 1 CALL WTQIO(IOWVB,5,2,,,PRL) CALL UVT100(CUP,BMAR+1,LMAR) CALL WTQIO(IOWVB,5,2,,,PRL) PRL(2) = 1 CALL UVT100(CUP,TMAR-1,LMAR-1) CALL GETADR(PRL,ULCOR) 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,TMAR-1,RMAR+1) CALL GETADR(PRL,URCOR) CALL WTQIO(IOWVB,5,2,,,PRL) CALL UVT100(CUP,BMAR+1,RMAR+1) CALL GETADR(PRL,LRCOR) CALL WTQIO(IOWVB,5,2,,,PRL) CALL GETADR(PRL,VERT) DO I = TMAR,BMAR [ CALL UVT100(CUP,I,LMAR-1) CALL WTQIO(IOWVB,5,2,,,PRL) CALL UVT100(CUP,I,RMAR+1) CALL WTQIO(IOWVB,5,2,,,PRL) ] ] DO J = 3,8 [ #DISPLAY NEW BOARD CALL UVT100(CUP,J,3) 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 CALL GETADR(PRL,BALCHR) CALL WTQIO(IOWVB,5,2,,,PRL) CALL UVT100(CUP,BMAR,PDLY) #BLANK OUT OLD PADDLE CALL GETADR(PRL,SPCCHR) PRL(2) = 3 CALL WTQIO(IOWVB,5,2,,,PRL) PDLY = 13 #INITIAL PADDLE LOCATION CALL UVT100(CUP,BMAR,PDLY-1) CALL GETADR(PRL,PDLCHR) #DISPLAY PADDLE PRL(2) = 5 CALL WTQIO(IOWVB,5,2,,,PRL) PRL(2) = 1 RETURN 100 FORMAT (40A1) END