$! ------------------ CUT HERE ----------------------- $ v='f$verify(f$trnlnm("SHARE_VERIFY"))' $! $! This archive created by VMS_SHARE Version 7.2-007 22-FEB-1990 $! On 30-MAY-1992 02:56:17.98 By user MASLIB $! $! This VMS_SHARE Written by: $! Andy Harper, Kings College London UK $! $! Acknowledgements to: $! James Gray - Original VMS_SHARE $! Michael Bednarek - Original Concept and implementation $! $!+ THIS PACKAGE DISTRIBUTED IN 4 PARTS, TO KEEP EACH PART $! BELOW 30 BLOCKS $! $! TO UNPACK THIS SHARE FILE, CONCATENATE ALL PARTS IN ORDER $! AND EXECUTE AS A COMMAND PROCEDURE ( @name ) $! $! THE FOLLOWING FILE(S) WILL BE CREATED AFTER UNPACKING: $! 1. ASTEROIDL.FOR;1 $! 2. ASTEROIDS.DAT;1 $! 3. ASTEROIDS.PAS;1 $! 4. ASTEROIDS.SCN;1 $! 5. ASTEROIDT.FOR;1 $! 6. BUILD.COM;1 $! $set="set" $set symbol/scope=(nolocal,noglobal) $f=f$parse("SHARE_TEMP","SYS$SCRATCH:.TMP_"+f$getjpi("","PID")) $e="write sys$error ""%UNPACK"", " $w="write sys$output ""%UNPACK"", " $ if f$trnlnm("SHARE_LOG") then $ w = "!" $ ve=f$getsyi("version") $ if ve-f$extract(0,1,ve) .ges. "4.4" then $ goto START $ e "-E-OLDVER, Must run at least VMS 4.4" $ v=f$verify(v) $ exit 44 $UNPACK: SUBROUTINE ! P1=filename, P2=checksum $ if f$search(P1) .eqs. "" then $ goto file_absent $ e "-W-EXISTS, File ''P1' exists. Skipped." $ delete 'f'* $ exit $file_absent: $ if f$parse(P1) .nes. "" then $ goto dirok $ dn=f$parse(P1,,,"DIRECTORY") $ w "-I-CREDIR, Creating directory ''dn'." $ create/dir 'dn' $ if $status then $ goto dirok $ e "-E-CREDIRFAIL, Unable to create ''dn'. File skipped." $ delete 'f'* $ exit $dirok: $ w "-I-PROCESS, Processing file ''P1'." $ if .not. f$verify() then $ define/user sys$output nl: $ EDIT/TPU/NOSEC/NODIS/COM=SYS$INPUT 'f'/OUT='P1' PROCEDURE Unpacker ON_ERROR ENDON_ERROR;SET(FACILITY_NAME,"UNPACK");SET( SUCCESS,OFF);SET(INFORMATIONAL,OFF);f:=GET_INFO(COMMAND_LINE,"file_name");b:= CREATE_BUFFER(f,f);p:=SPAN(" ")@r&LINE_END;POSITION(BEGINNING_OF(b)); LOOP EXITIF SEARCH(p,FORWARD)=0;POSITION(r);ERASE(r);ENDLOOP;POSITION( BEGINNING_OF(b));g:=0;LOOP EXITIF MARK(NONE)=END_OF(b);x:=ERASE_CHARACTER(1); IF g=0 THEN IF x="X" THEN MOVE_VERTICAL(1);ENDIF;IF x="V" THEN APPEND_LINE; MOVE_HORIZONTAL(-CURRENT_OFFSET);MOVE_VERTICAL(1);ENDIF;IF x="+" THEN g:=1; ERASE_LINE;ENDIF;ELSE IF x="-" THEN IF INDEX(CURRENT_LINE,"+-+-+-+-+-+-+-+")= 1 THEN g:=0;ENDIF;ENDIF;ERASE_LINE;ENDIF;ENDLOOP;t:="0123456789ABCDEF"; POSITION(BEGINNING_OF(b));LOOP r:=SEARCH("`",FORWARD);EXITIF r=0;POSITION(r); ERASE(r);x1:=INDEX(t,ERASE_CHARACTER(1))-1;x2:=INDEX(t,ERASE_CHARACTER(1))-1; COPY_TEXT(ASCII(16*x1+x2));ENDLOOP;WRITE_FILE(b,GET_INFO(COMMAND_LINE, "output_file"));ENDPROCEDURE;Unpacker;QUIT; $ delete/nolog 'f'* $ CHECKSUM 'P1' $ IF CHECKSUM$CHECKSUM .eqs. P2 THEN $ EXIT $ e "-E-CHKSMFAIL, Checksum of ''P1' failed." $ ENDSUBROUTINE $START: $ create 'f' X Integer Function`09Last_Score X X Implicit none XC X Parameter`20 X .`09max_keep = 31 ! Max num Scores held + 1 X `20 X Byte X .`09Temp(12), X . Username(12,max_keep), X .`09Name(12,max_keep), X . Month_Username(12,12), X .`09Month_Name(12,12) X X Integer*4 X . month_of_Year(12) X X Integer*2 X . Date_Time(7) X `20 X Integer X .`09This_Score, X . Prev_Score, X .`09Errnum, X . Month_now, X . Month_top, X .`09Year_now, X .`09num_games, X . month_Score(12), X . Games(max_keep), X .`09Score(max_keep), X . Me, X .`09I, X .`09J, X .`09K, X . M X X logical*1 X .`09same X X`09 X Byte X .`09This_User(12) X X Integer*2 X . Len_user X X Integer*2`20 X .`09Jpi_rec_Word(8) X X integer*4`20 X .`09Jpi_rec_Long(4) X X Equivalence (Jpi_rec_Word,Jpi_rec_Long) X XC Begin X X Len_User = 0`20 X Jpi_rec_Word(1) = 12 X Jpi_rec_Word(2) = '202'X X Jpi_rec_Long(2) = %loc(This_USer) X Jpi_rec_Long(3) = %loc(len_user) X Jpi_rec_Long(4) = 0 X Call sys$getjpi(%val(0),%val(0),%val(0), X .`09`09Jpi_rec_Long, X .`09`09%val(0),%val(0),%val(0)) X X `20 X1 Open(unit=4,file='Image_dir:Asteroids.acn',form='UNFORMATTED', X .`09recordtype='FIXED',Status='OLD',Recl=1024,IoStat=ErrNum,readonly) X If (Errnum.eq.30) Goto 50 X If (Errnum.gt.1) Goto 999 X read(4) Num_games,month_top, X . `09`09month_username,month_name,Month_Score X read(4) username,name,score,games X I = 0 X Same = .false. X Do While (.Not.same.and.I.Lt.(max_keep-1))`20 X I = I + 1 X same = .true. X J = 1 X do while (same.and.J.le.len_user) X If (Username(J,I).ne.This_User(J)) Then`20 X Same = .false. X else X J = J + 1 X endif X enddo X enddo X If (same) Then`20 X Last_Score = Score(I) X Else X `09 Last_Score = 0 X endif X Close(4) X return X XC X50 continue X Call Sleep(4) X Goto 1 XC XC XC X999 last_score = 0 X return X X End $ CALL UNPACK ASTEROIDL.FOR;1 421178635 $ create 'f' X `20 X * `20 X * `20 X * * * * `20 X * * * `20 X * * * `20 X * * * `20 X* * * `20 X * * * * * `20 X * * `20 X * * * `20 X * * * * * `20 X * * * * * `20 X * ** * * * `20 X * * * * `20 X ** * * * `20 X * * ** * * * `20 X * `20 X * * * * * * X ** * ** `20 X * * * `20 X * * * * `20 X * * `20 X * * * * * * `20 X * * * * * `20 X * * * `20 X * * * * * * * * * `20 X * * * ** * * * * `20 X * * * * `20 X * * * * * ** * * ** * * `20 X * * * * ** * `20 X* * * * * * `20 X * * * ** * `20 X ** * * * `20 X* * * * * * `20 X * * * * * * * * ** * * `20 X ** * * * ** * * * `20 X * * * * * * * `20 X * *** ** * * * * * * `20 X* * * * * * * * `20 X * * * * * * * * `20 X * * * * * * * * * `20 X* * * * ** * * * `20 X* * ** * * * * * * * *`20 X * * ** * * * * * `20 X* * * * * * * * * `20 X * * * ** * * **`20 X * *** ** ** * * * * ** X * ** * * * `20 X ** * ** * **** * * `20 X * * * * * * * X * * * * ** ** * `20 X * * * * *** * *** * `20 X * * ***** * * * * * * X ** * * ** * * * * * `20 X * * * * * * * * `20 X * * * * * * * * * X * * * ** * * * ** * * `20 X*** * * * * * * * * * `20 X * * * * * * * * * * `20 X ** * * * * * X* ** ** * * * * * ** ** * * `20 X * * * * * * * * ** * * * `20 X * * * ** * * * ** * `20 X * * * * * ** * * * * * * ** X * * * * ** * ** * * * ** * * `20 X *** * ** * * ** * * ** * * * `20 X * ** * * * * * * ** * * X ** * * * ** * ** * ** * * `20 X * **** * ** * * * ** `20 X * * ** * * * * ** * X * ** *** * * * * * * * `20 X* * * * * * * ** ** `20 X * * * * * ** * * * * *** * * `20 X * * ** * * ** * ** * * *** X ** * * * * ** *** * ** * ** * X * * * *** * * * * ** * * * ** `20 X * * * ***** * * * `20 X * * * * * * ** `20 X * ** * * * * * * * `20 X* * * **** * ** * * ** * ** * ** *`20 X * ** ** ** * * * * * `20 X * ** * ** * * * ** * **** * *`20 X* * * * * * * * * * * * ** * * X ** * * * ** * * * ** * * * *`20 X * **** ** ** * * * *** *** * * ** `20 X ** * * ***** * * * *** * * * **`20 X * ** * * * * * * ** * * * * * `20 X * * * * * ** ** * * * * * * ** ** `20 X ** * * * * ** ** * * `20 X * ***** *** * * * * ** * *** `20 X ** * ** * * * * ** ** * ** * * `20 X * ** * * * * * * * * ** *`20 X * * *** * ** *** * *** ** ** * * `20 X * * * * * ** * * * ** * *`20 X* * ** * * * * ** * ** ** ** * ** * * * ** X * ** * * ** ** ** * ** * * * * * * X * * * * * * * * * ** * * ** X*** * ** * *** * *** ** **** * * * X * * * * ****** ** * * * * * **** *`20 X * * * * * * * * ** * **** * ** * * * X * ** ** * * * ** ** ** * * * * ** * **`20 X ** * * ** *** * * *** * * * `20 X ** * * * * * ** * * ** ** * *`20 X * ** * * * * * * * ** * * ** **`20 X ** * * * ** *** * *** * * * * * `20 X * ** ** * * * * * ** * ** * X * * * * * * * * * * ** * ** * *`20 X* * * * * * * * * ** ** ** **** * * `20 X* * *** * **** * * * * ** *** ** ** * * * X * * ** * * * ** **** * ** * **`20 X * * * * * * *** * **** * * ** * `20 X* * * * * * * ** ** * ** *** *** ** **`20 X **** ** * ** * ** * * * * ** * * X * *** * ****** * * ** * ** * ** ** ***`20 X ** * * * * * **** * * * * **** X * * *** **** * * ** ** ** * * ***** * X* * *** ** * ** * * * *** *** * * **** X * * * * ***** ** * ** * ** * **`20 X* * *** ** *** ** **** * * ** * * * ** `20 X * *** * ** ***** * * * * * * ** * * * X * * * * * ** ** * ** * ** * ** * X * *** ** * ** * * * *** * * * * ** X* ** * * **** *** * ** * * * ** * ** `20 X* ** ** * ** * * * ***** * **** ** * *** * X * * * ** * * ** ** ***** * * * ***** * *** X*** ** **** * * * * * * * **** * * ** * *`20 X *** * * * ****** * * ** * * ** * * * * * *`20 X * ** ** * * * * * * * * * * * * `20 X * * * * ** *** * * * * ** ***** * ** * `20 X ** *** ** *** **** **** * * * * * * *** * * ** X ** *** ******* ** * * * * * * *** * * `20 X * ** * * * * * ** ** *** * * * * * * * `20 X * * * * ** ** * * * ** * * * *** ** * X*** * ** ** ** ** * * * ** * ** * * X* ** ** *** *** ** * * ** * * **** ** * * * X*** * * * **** * **** * ** **** *** *** * * **`20 X ** * ***** *** * *** ** * * ** * * ** ** *`20 X *** * * * * * * ** * ** * * * * * * * *** * X * * *** *** ***** * ** ******* *** `20 X ** **** ** * * * ** * * ** * * * *** X * * ** ** * * * * *** ** **** ** * *** * `20 X ** *** * ** **** *** * * * ** *** * *** * * X *** ****** * ** * *** * * ** ** ** *** ** * * * * X * * ** ** * ** * ** * **** ** ** *** ***** X** ** * **** ** *** **** * * ** ** ***`20 X**** * *** *** ** ** * * ** *** * * * * *** * ** * +-+-+-+-+-+-+-+- END OF PART 1 +-+-+-+-+-+-+-+-