COMPILANDO ADVENT EN UN PDP-10: Supongamos que tenemos una imagen arrancable de disco con el TOPS10 y el FORTRAN instalados en el fichero ts10.dsk, y una imagen de backup con los fuentes en advent.tap. Las versiones utilizadas en este ejemplo son: simh: v210-4 (http://simh.trailing-edge.com) tops10: v7.04 (http://pdp-10.trailing-edge.com) fortran: v11 t3 (http://pdp-10.trailing-edge.com) advent: (http://www.ifarchive.org/if-archive/games/source/ adv350-pdp10.tar.gz) Estas instrucciones están basadas en las descritas en un hilo de googlegroups: http://groups.google.com/group/alt.sys.pdp10/browse_thread/thread/400843bff7bc3b77 Aquí va un log completo de la simulación. Se incluyen comentarios tras un ";". Por supuesto, estos comentarios no hay que intoducirlos. Arrancamos el emulador con "./pdp10" y... Logging to file "compilaradvent.log" sim> at rp0 t10.dsk ; montamos el disco sim> set tu0 lock ; y la cinta en sólo-lectura sim> at tu0 advent.tap sim> boot rp0 BOOT V4(76) BOOT> ; (ENTER) [Loading from DSKB:SYSTEM.EXE[1,4]] KS10 07-Oct-88 Why reload: new Date: 7-26-2003 Time: 1900 Startup option: go ; ahora esperar al prompt (OPR>) [Rebuilding the system search list from the HOM blocks] [Rebuilding the active swapping list from the HOM blocks] [Rebuilding the system dump list from the HOM blocks] KS10 19:00:02 CTY system 4097 Connected to Node CENTRA(0) Line # 42 .LOGIN 1,2 ; este disco arranca con login 1,2 .R OPR ; y modo OPR ; si no, teclear ambos comandos [CCPWFD Waiting for file daemon to start] %%TTY STOMPER - Starting OPR> 19:00:13 -- Begin auto take file -- File: SYS:SYSTEM.CMD[1,4] 19:00:13 -- End auto take file -- 17 lines processed 19:00:13 -- Message from the Accounting System -- Account validation is not required ; sistema arrancado, vamos allá OPR>set tapE-DRIVE mta0: unAVAILABLE ; preparamos la cinta Enter text and terminate with ^Z ; (CTR+z) ^Z OPR> 19:01:13 Device MTA0 -- Unavailable for use -- OPR>exit ; salimos del modo OPR .dir BACKUP EXE 128 <057> 24-Jun-99 5A(625) DSKB: [1,2] .assign mta0: tape: ; montamos la cinta MTA0 assigned .r backup ; iniciamos la recuperación ; el prompt cambia a "/" /tape tape: ; trabajamos sobre tape: (mta0) /rewind ; rebobinamos /files ; para que muestre lo que carga... /restore *.* ; recuperar todo ! ADVEN DAT ADVEN F4 ADVN2 F4 "Done /exit ; listo, salimos del modo backup .dir ; veamos los ficheros restaurados BACKUP EXE 128 <057> 24-Jun-99 5A(625) DSKB: [1,2] ADVEN DAT 87 <000> 23-Jun-03 ADVEN F4 99 <000> 23-Jun-03 ADVN2 F4 30 <000> 23-Jun-03 Total of 344 blocks in 4 files on DSKB: [1,2] ; necesitamos unas directivas de compilación... .sos ifile.f4 ; creamos el archivo con el editor "sos" Creating IFILE.F4 00100 SUBROUTINE IFILE(UNUM,FNAME) ; tecleamos estas lineas 00200 ; TODAS empiezan con TAB 00300 IMPLICIT INTEGER(A-Z) 00400 DIMENSION FNAME(2) 00500 ; incluso las vacias!!! 00600 OPEN(UNIT=UNUM,NAME=FNAME,ACCESS='SEQIN') 00700 RETURN 00800 END 00900 ^C ; (CTR+c) Yes? (Type H for help): h Type one of: C - to CONTinue automatically M - return to MONITOR now, cancelling all edits made during this session R - to do REEnter (terminate losing search etc.) E - to end edit and close file Q - to quit (delete temporary files) Yes? (Type H for help): e ; salvamos y salimos [DSKB:IFILE.F4] .type ifile.f4 ; veamos el fichero creado... 00100 SUBROUTINE IFILE(UNUM,FNAME) 00200 00300 IMPLICIT INTEGER(A-Z) 00400 DIMENSION FNAME(2) 00500 00600 OPEN(UNIT=UNUM,NAME=FNAME,ACCESS='SEQIN') 00700 RETURN 00800 END ; si algo está mal, lo más rápido es "delete ifile.f4" y repetir .copy text.dat=adven.dat ; sacamos una copia de los datos ; (habría que cambiar algo, pero no lo haremos) .dir ; esto es lo que necesitamos BACKUP EXE 128 <057> 24-Jun-99 5A(625) DSKB: [1,2] ADVEN DAT 87 <000> 23-Jun-03 ADVEN F4 99 <000> 23-Jun-03 ADVN2 F4 30 <000> 23-Jun-03 IFILE F4 1 <057> 26-Jul-03 TEXT DAT 87 <057> 26-Jul-03 Total of 432 blocks in 6 files on DSKB: [1,2] .exec adven,advn2,ifile ; compilamos y ejecutamos todo FORTRAN: ADVEN 00730 IF(TOTING(J))GOTO 6022 %FTNDIM Line:00730 Possible DO index modification inside loop 00731 6020 IF(HERE(J))K=1 %FTNDIM Line:00731 Possible DO index modification inside loop 00743 IF(AT(J).AND.FIXED(J).EQ.0)CALL CARRY(J,LOC) %FTNDIM Line:00743 Possible DO index modification inside loop %FTNDIM Line:00743 Possible DO index modification inside loop 00744 IF(TOTING(J))CALL DROP(J,CHLOC) %FTNDIM Line:00744 Possible DO index modification inside loop %FTNDIM Line:00744 Possible DO index modification inside loop 00851 IF(.NOT.BITSET(LOC,HINT))HINTLC(HINT)=-1 %FTNDIM Line:00851 Possible DO index modification inside loop 00866 2604 IF(TOTING(I).AND.PROP(I).LT.0)PROP(I)=-1-PROP(I) %FTNDIM Line:00866 Possible DO index modification inside loop 01487 IF(PLACE(OBJ).EQ.PLAC(DRAGON).OR.PLACE(OBJ).EQ.FIXD(DRAGON)) 01488 1 CALL MOVE(OBJ,K) %FTNDIM Line:01488 Possible DO index modification inside loop 01628 IF(I.EQ.BEAR.OR..NOT.TOTING(I))GOTO 8201 %FTNDIM Line:01628 Possible DO index modification inside loop 01631 CALL PSPEAK(I,-1) %FTNDIM Line:01631 Possible DO index modification inside loop 01945 11010 IF(TOTING(I))CALL DSTROY(I) %FTNDIM Line:01945 Possible DO index modification inside loop %FTNDIM Line:01945 Possible DO index modification inside loop %FTNWRN MAIN. No fatal errors and 13 warnings FORTRAN: ADVN2 SPEAK PSPEAK RSPEAK MSPEAK GETIN YES YESM YESX A5TOA1 VOCAB DSTROY JUGGLE MOVE PUT CARRY DROP START MAINT WIZARD HOURS HOURSX NEWHRS 00024 5 NEWHRX=(NEWHRX.OR.SHIFT(1,I)) %FTNDIM Line:00024 Possible DO index modification inside loop %FTNWRN NEWHRX No fatal errors and 1 warning MOTD POOF SHIFT RAN DATIME CIAO BUG FORTRAN: IFILE IFILE ; hay warnings, pero compila! LINK: Loading [LNKXCT ADVEN execution] INITIALISING... TABLE SPACE USED: 9619 OF 9650 WORDS OF MESSAGES 741 OF 750 TRAVEL OPTIONS 297 OF 300 VOCABULARY WORDS 140 OF 150 LOCATIONS 53 OF 100 OBJECTS 31 OF 35 ACTION VERBS 201 OF 205 RTEXT MESSAGES 10 OF 12 CLASS MESSAGES 9 OF 20 HINTS 32 OF 35 MAGIC MESSAGES PAUSE INIT DONE Type G to Continue, X to Exit, T To Trace. *g ; vamos allá... WELCOME TO ADVENTURE!! WOULD YOU LIKE INSTRUCTIONS? y SOMEWHERE NEARBY IS COLOSSAL CAVE, WHERE OTHERS HAVE FOUND FORTUNES IN TREASURE AND GOLD, THOUGH IT IS RUMORED THAT SOME WHO ENTER ARE NEVER SEEN AGAIN. MAGIC IS SAID TO WORK IN THE CAVE. I WILL BE YOUR EYES AND HANDS. DIRECT ME WITH COMMANDS OF 1 OR 2 WORDS. I SHOULD WARN YOU THAT I LOOK AT ONLY THE FIRST FIVE LETTERS OF EACH WORD, SO YOU'LL HAVE TO ENTER "NORTHEAST" AS "NE" TO DISTINGUISH IT FROM "NORTH". (SHOULD YOU GET STUCK, TYPE "HELP" FOR SOME GENERAL HINTS. FOR INFOR- MATION ON HOW TO END YOUR ADVENTURE, ETC., TYPE "INFO".) - - - THIS PROGRAM WAS ORIGINALLY DEVELOPED BY WILLIE CROWTHER. MOST OF THE FEATURES OF THE CURRENT PROGRAM WERE ADDED BY DON WOODS (DON @ SU-AI). CONTACT DON IF YOU HAVE ANY QUESTIONS, COMMENTS, ETC. YOU ARE STANDING AT THE END OF A ROAD BEFORE A SMALL BRICK BUILDING. AROUND YOU IS A FOREST. A SMALL STREAM FLOWS OUT OF THE BUILDING AND DOWN A GULLY. ; Parece que todo va bien quit DO YOU REALLY WANT TO QUIT NOW? yes OK YOU SCORED 27 OUT OF A POSSIBLE 350, USING 1 TURNS. YOU ARE OBVIOUSLY A RANK AMATEUR. BETTER LUCK NEXT TIME. TO ACHIEVE THE NEXT HIGHER RATING, YOU NEED 9 MORE POINTS. CPU time 0.08 Elapsed time 15.80 EXIT .save advent ; salvamos el ejecutable ADVENT saved .delete *.rel ; borramos los ficheros rel Files deleted: DSKB:ADVEN.REL DSKB:ADVN2.REL DSKB:IFILE.REL 191 Blocks freed .dir BACKUP EXE 128 <057> 24-Jun-99 5A(625) DSKB: [1,2] ADVEN DAT 87 <000> 23-Jun-03 ADVEN F4 99 <000> 23-Jun-03 ADVN2 F4 30 <000> 23-Jun-03 IFILE F4 1 <057> 26-Jul-03 TEXT DAT 87 <057> 26-Jul-03 ADVENT EXE 364 <057> 26-Jul-03 Total of 796 blocks in 7 files on DSKB: [1,2] .run advent ; ahora, con esto ejecutamos la aventura! WELCOME TO ADVENTURE!! WOULD YOU LIKE INSTRUCTIONS? no YOU ARE STANDING AT THE END OF A ROAD BEFORE A SMALL BRICK BUILDING. AROUND YOU IS A FOREST. A SMALL STREAM FLOWS OUT OF THE BUILDING AND DOWN A GULLY. quit DO YOU REALLY WANT TO QUIT NOW? yes OK YOU SCORED 32 OUT OF A POSSIBLE 350, USING 1 TURNS. YOU ARE OBVIOUSLY A RANK AMATEUR. BETTER LUCK NEXT TIME. TO ACHIEVE THE NEXT HIGHER RATING, YOU NEED 4 MORE POINTS. CPU time 0.02 Elapsed time 41.08 EXIT . ; (CTR+e para parar la emulación) Simulation stopped, PC: 000002 (MOVEI 6,62) sim> quit Goodbye Log file closed ; listo