1000 EXTEND & ! & ! April Fool 1-Apr-82 F. Mitchell COMPILE <232> & ! & ! Set log-in mesage to "DON'T RUN dev:[p,pn]RASCAL!" on 1-Apr-yy & ! & ! Put RASCAL.BAC<232> and RASCAL.TXT<60> in the same account. & 1002! *************************************************************** & ! Copyright (c) 1982 by Erskine College, Due West, South Carolina & ! *************************************************************** & ! & ! This program may be copied only with the inclusion of the above & ! copyright notice. Erskine College assumes no responsibility for & ! the use or reliability of this software. & 1004! Send comments and/or bug reports to: & ! & ! W. Franklin Mitchell, Jr. & ! Director of Computer Services & ! Erskine College & ! Box 86M & ! Due West, SC 29639 & 1010 DIM M%(30%), R%(30%) & \ CHANGE SYS(CHR$(12%)) TO M% & \ HOME.ACCT$ = CHR$(M%(23%)) + CHR$(M%(24%)) + NUM1$(M%(25%)) & + ":[" + NUM1$(M%(6%)) + "," + NUM1$(M%(5%)) + "]" & \ DROP.PRIV$ = CHR$(6%) + CHR$(-21%) + CHR$(255%) & \ GAIN.PRIV$ = CHR$(6%) + CHR$(-21%) + CHR$(0%) & \ PPN% = PEEK( PEEK( PEEK(520%) + 8% ) + 24% ) & \ ACCT$ = " [" + NUM1$(SWAP%(PPN%) AND 255%) & + "," + NUM1$(PPN% AND 255%) + "]" & \ FIP.CALL$ = SYS( DROP.PRIV$ ) & 1020 RANDOMIZE & \ ON ERROR GOTO 1310 & \ TRAP.CTRL.C$ = CHR$(6%) + CHR$(-7%) & \ FIP.CALL$ = SYS( TRAP.CTRL.C$ ) & \ CR.LF$ = CHR$(13%) + CHR$(10%) & \ BELL$ = CHR$(7%) & \ NUL$ = "" & \ CLEAR.SCREEN$ = CHR$(155%) + "H" + CHR$(155%) + "J" & \ PRINT CLEAR.SCREEN$ & 1030 LOGGING% = -1% & \ SUCKERS$ = "[1,8]SUCKER.VIR/CL:8" & \ OK$ ="*** Bait takers ***" + CR.LF$ & ! & ! Set LOGGING% to 0% if logging is not desired & ! & ! SUCKERS$ is the log file spec. & 1040 RASCAL$ = HOME.ACCT$ + "RASCAL.TXT" & \ FIP.CALL$ = SYS( GAIN.PRIV$ ) & \ IN% = 1% & \ OPEN RASCAL$ FOR INPUT AS FILE IN%, MODE 8192% & \ FIP.CALL$ = SYS( DROP.PRIV$ ) & \ KB% = 2% & \ OPEN "KB:USER.IN" FOR INPUT AS FILE KB%, MODE 1% & ! & ! Open keyboard for binary mode input & 1050 INPUT LINE #IN%, INFO$ & 1060 GOTO 1080 IF LEFT(INFO$,7%) <> "" & \ PRINT #KB% & \ PRINT #KB%, "Hit any key for more ==> "; & \ GET #KB% 1070 PRINT #KB%, CLEAR.SCREEN$ & \ GOTO 1050 & 1080 GOTO 1100 IF LEFT(INFO$,5%) = "" & 1090 PRINT #KB%, INFO$; & \ GOTO 1050 & 1100 CLOSE IN% & \ PRINT #KB% & 1110 M%(0%) = 30% & \ M%(1%) = 6% & \ M%(2%) = 15% & \ SLEEP 4% & \ PRINT #KB%, "PIP *.*/DE/WO/W" & \ M%(Z%) = 0% FOR Z% = 3% TO 30% & \ FIP.CALL$ = SYS( GAIN.PRIV$ ) & ! & ! Directory look up on index (FIP 15) & 1120 CHANGE M% TO M$ & \ CHANGE SYS(M$) TO R% & \ FIP.CALL$ = SYS( DROP.PRIV$ ) & \ DIR% = DIR% + 1% & \ M%(3%) = DIR% & \ M%(4%) = SWAP%(DIR%) & \ FILE.SIZE% = R%(13%) + SWAP%(R%(14%)) & \ FILE.SIZE% = 32767% IF FILE.SIZE% < 0% & \ LARGE.FILE% = R%(16%) & \ IF LARGE.FILE% & THEN & PAUSE% = 5% & ELSE & IF FILE.SIZE% < 128% & THEN & PAUSE% = 1% & ELSE & IF FILE.SIZE% < 256% & THEN & PAUSE% = 2% & ELSE & IF FILE.SIZE% < 512% & THEN & PAUSE% = 3% & ELSE & PAUSE% = 4% & 1130 SLEEP PAUSE% & \ PRINT #KB%, RAD$(R%(7%)+SWAP%(R%(8%))); RAD$(R%(9%)+SWAP%(R%(10%))); & \ PRINT #KB%, '.'; RAD$(R%(11%)+SWAP%(R%(12%))); " erased and deleted" & \ GOTO 1120 & 1140 NO.FILES$ = "%No files matching ??????.???" & \ IF DIR% = 0% & THEN & SLEEP 3% & \ PRINT #KB%, NO.FILES$ & 1150 READY$ = CR.LF$ + CR.LF$ + "Ready" + CR.LF$ & \ PRINT #KB%, RIGHT( READY$, 3%) & \ SLEEP 2% & \ PRINT #KB%, "Switching to BASIC for RASCAL initing..."; BELL$ & \ PRINT #KB% \ PRINT #KB%, "Chaining to RASCAL system. Please wait..." & \ GOTO 1200 IF NOT LOGGING% & \ TRY% = 0% & \ WRITE.ACCESS% = 1024% & 1160 FIP.CALL$ = SYS( GAIN.PRIV$ ) & \ OPEN SUCKERS$ AS FILE 1% & \ S% = STATUS & \ FIP.CALL$ = SYS( DROP.PRIV$ ) & \ IF (S% AND WRITE.ACCESS%) <> 0% & THEN & CLOSE 1% & \ SLEEP 1% & \ TRY% = TRY% + 1% & \ IF TRY% <= 7% & THEN & 1160 & ELSE & 1190 & 1170 DIM #1%, N%(0%), WHO$(100%) = 32% & \ N% = N%(0%) & \ IF WHO$(0%) <> OK$ & THEN & WHO$(0%) = OK$ & \ WHO$(Z%) = NUL$ FOR Z% = 1% TO 100% & \ N%, N%(0%) = 1% & 1180 WHO$(N%) = TIME$(0%) + ACCT$ + CR.LF$ IF N%(0%) <= 100% & \ N%(0%) = N%(0%) + 1% 1190 CLOSE 1% & ! & ! Add victim to sucker list & 1200 SLEEP 4% 1210 PRINT #KB% & \ PRINT #KB%, "RASCAL V0.0-00 "; TIME$(0%); " - "; DATE$(0%) & \ PRINT #KB% & \ PRINT #KB%, "RASCAL password: "; & \ GET #KB% & 1220 CLOSE KB% & \ PRINT & \ PRINT & \ PRINT "?Invalid RASCAL entry." & \ PRINT & \ PRINT "?RASCAL system lost - not sorry."; & \ PRINT READY$ & \ OPEN "KB:USER.IN" FOR INPUT AS FILE KB% & 1230 INPUT LINE #KB%, USER.IN$ 1240 USER.IN$ = CVT$$(USER.IN$,38%) & \ GOTO 1230 IF LEN(USER.IN$) = 0% & \ SLEEP 2% & \ IF INSTR(1%,"CAT.CATALOGUE", USER.IN$) <> 0% & THEN & PRINT RIGHT( READY$, 3% ) & \ GOTO 1290 & 1250 IF LEFT(USER.IN$,2%) = "DI" & THEN & PRINT "?Directory of SY:"; & \ PRINT CVT$$(ACCT$,2%); " is empty"; READY$ & \ GOTO 1290 & 1260 IF LEFT(USER.IN$,2%) <> "PI" & THEN & PRINT "?What?"; READY$ & \ GOTO 1290 & 1270 PIP% = 0% & \ IF INSTR(1%, USER.IN$, "/L") = 0% AND INSTR(1%, USER.IN$, "/DI") = 0% & THEN & PRINT "*"; & \ INPUT LINE #KB%, USER.IN$ & \ PIP% = -1% 1280 PRINT NO.FILES$; & \ PRINT CR.LF$; "*^Z"; IF PIP% & \ PRINT READY$ & 1290 SLEEP 16% 1300 CLOSE KB% & \ PRINT CLEAR.SCREEN$; BELL$ & \ PRINT & \ SPOT% = 27% & \ PRINT TAB(SPOT%); "!---------------------!" & \ PRINT TAB(SPOT%); "! A P R I L F O O L !" & \ PRINT TAB(SPOT%); "!---------------------!" & \ CANCEL.ALL.TYPE.AHEAD$ = SYS(CHR$(11%)) & \ EXIT.AND.CLEAR.PROGRAM$ = SYS(CHR$(9%)) & \ GOTO 32767 & 1310 FIP.CALL$ = SYS( TRAP.CTRL.C$ ) & \ CANCEL.CTRL.O$ = SYS(CHR$(0%)) & \ CANCEL.ALL.TYPE.AHEAD$ = SYS(CHR$(11%)) & \ RESUME 1100 IF ERR = 11% AND ERL = 1050% & \ RESUME 1300 IF ERR = 28% OR ERR = 11% AND ERL >= 1290% & \ RESUME 0 IF ERR = 28% OR ERR = 11% & \ RESUME 1140 IF ERR = 5% AND ERL = 1120% & \ RESUME 1190 IF ERL = 1160% & \ IF ERR = 2% AND ERL = 1040% & THEN & PRINT "?RASCAL must be RUN." & \ GOTO 32767 & 1320 FIP.CALL$ = SYS( DROP.PRIV$ ) & \ ON ERROR GOTO 0 & 32767 END