SUBROUTINE RESTAR IMPLICIT INTEGER (A-Z) # # THIS ROUTINE PERFORMS THE ACTIONS REQUIRED EITHER FOR A NEW BOARD, # OR FOR WHEN PACMAN HAS BEEN EATEN. # # INCLUDE/NL SY:UVT100.DAT INCLUDE/NL SY:PACMAN.CMN BYTE BGOOD(6),BBLNK(6) DATA BGOOD / 40,40,30,30,20,10 / #NO. OF DIAMOND CYCLES DATA BBLNK / 20,20,15,15,10,5 / #NO. OF CHECKERBOARD CYCLES CURDIR = HALT #NO CURRENT MOTION NEWDIR = HALT #NO NEW MOTION CALL WAIT(2,2) #ADMIRE OLD BOARD IF (STATE != EATEN) [ #IF NEW BOARD... CALL INIT #REINITIALIZE MSTATE TABLE CALL MAZDRW #REDRAW MAZE IF (BOARD < 6) #INCREMENT BOARD COUNT BOARD = BOARD + 1 #(MAXIMUM OF SIX BOARDS) FRUBRD = 0 #CLEAR 'FRUIT THIS BOARD' CNT GOODTM = CYCTIM * BGOOD(BOARD) #GOOD STATE TIME BLNKTM = CYCTIM * BBLNK(BOARD) #BLINK STATE TIME CALL UVT100(CUP,10,70) DO I = 1,PACCNT [ #SHOW TOTAL PACMEN AVAILABLE CALL GETADR(PRL,PMAN) CALL WTQIO(IOWVB,5,2,,,PRL) CALL GETADR(PRL,SPACE) CALL WTQIO(IOWVB,5,2,,,PRL) ] DO I = 1,20 [ #REDISPLAY CAPTURED FRUIT CALL UVT100(CUP,FRUDSR(I),FRUDSC(I)) CALL GETADR(PRL,FRUTBL(I)) CALL WTQIO(IOWVB,5,2,,,PRL) ] ] ELSE [ #ELSE IF JUST EATEN... CALL UVT100(CUP,ROW,COL) CALL GETADR(PRL,SPACE) CALL WTQIO(IOWVB,5,2,,,PRL) #REPOSITION PACMAN # # RESTORE CHARACTER WHERE EACH MONSTER WAS (DOT,ENERGIZER, OR SPACE) # CALL UVT100(CUP,LROW,LCOL) #LEFTY IF (TSTBIT(MSTATE(LCOL,LROW),DOT) == 1) [ CALL GETADR(PRL,DOTCHR) CALL WTQIO(IOWVB,5,2,,,PRL) ] ELSE IF (TSTBIT(MSTATE(LCOL,LROW),EGZ) == 1) [ CALL GETADR(PRL,EGZCHR) CALL WTQIO(IOWVB,5,2,,,PRL) ] ELSE [ CALL GETADR(PRL,SPACE) CALL WTQIO(IOWVB,5,2,,,PRL) ] CALL UVT100(CUP,CROW,CCOL) #CURLY IF (TSTBIT(MSTATE(CCOL,CROW),DOT) == 1) [ CALL GETADR(PRL,DOTCHR) CALL WTQIO(IOWVB,5,2,,,PRL) ] ELSE IF (TSTBIT(MSTATE(CCOL,CROW),EGZ) == 1) [ CALL GETADR(PRL,EGZCHR) CALL WTQIO(IOWVB,5,2,,,PRL) ] ELSE [ CALL GETADR(PRL,SPACE) CALL WTQIO(IOWVB,5,2,,,PRL) ] CALL UVT100(CUP,FROW,FCOL) #FLUFFY IF (TSTBIT(MSTATE(FCOL,FROW),DOT) == 1) [ CALL GETADR(PRL,DOTCHR) CALL WTQIO(IOWVB,5,2,,,PRL) ] ELSE IF (TSTBIT(MSTATE(FCOL,FROW),EGZ) == 1) [ CALL GETADR(PRL,EGZCHR) CALL WTQIO(IOWVB,5,2,,,PRL) ] ELSE [ CALL GETADR(PRL,SPACE) CALL WTQIO(IOWVB,5,2,,,PRL) ] CALL UVT100(CUP,NROW,NCOL) #NELLIE IF (TSTBIT(MSTATE(NCOL,NROW),DOT) == 1) [ CALL GETADR(PRL,DOTCHR) CALL WTQIO(IOWVB,5,2,,,PRL) ] ELSE IF (TSTBIT(MSTATE(NCOL,NROW),EGZ) == 1) [ CALL GETADR(PRL,EGZCHR) CALL WTQIO(IOWVB,5,2,,,PRL) ] ELSE [ CALL GETADR(PRL,SPACE) CALL WTQIO(IOWVB,5,2,,,PRL) ] ] STATE = BAD #RESET SYSTEM STATE EATCNT = 0 #RESET MONSTERS EATEN COUNT TIMER = 0 #RESET SYSTEM TIMER FRUIT = 0 #CLEAR ANY FRUIT DISPLAYED CALL UVT100(CUP,FRUROW,FRUCOL) CALL GETADR(PRL,SPACE) CALL WTQIO(IOWVB,5,2,,,PRL) FRUON = TIMER + FRUTIM LTIM = (CYCTIM * 10) - PRITIM #RESET MONSTER PRISON TIMES CTIM = (CYCTIM * 20) - PRITIM FTIM = (CYCTIM * 30) - PRITIM NTIM = (CYCTIM * 40) - PRITIM LPRISN = 1 #RESET MONSTERS IN PRISON CPRISN = 1 FPRISN = 1 NPRISN = 1 ROW = INIROW COL = INICOL CALL UVT100(CUP,ROW,COL) #PLACE PACMAN AT INITIAL LOC CALL GETADR(PRL,PMAN) CALL WTQIO(IOWVB,5,2,,,PRL) LROW = LPRISR LCOL = LPRISC CALL UVT100(CUP,LROW,LCOL) #DO THE SAME FOR MONSTERS CALL GETADR(PRL,LMAN(STATE)) CALL WTQIO(IOWVB,5,2,,,PRL) CROW = CPRISR CCOL = CPRISC CALL UVT100(CUP,CROW,CCOL) CALL GETADR(PRL,CMAN(STATE)) CALL WTQIO(IOWVB,5,2,,,PRL) FROW = FPRISR FCOL = FPRISC CALL UVT100(CUP,FROW,FCOL) CALL GETADR(PRL,FMAN(STATE)) CALL WTQIO(IOWVB,5,2,,,PRL) NROW = NPRISR NCOL = NPRISC CALL UVT100(CUP,NROW,NCOL) CALL GETADR(PRL,NMAN(STATE)) CALL WTQIO(IOWVB,5,2,,,PRL) RETURN END