hưs8p,LAMBDAF2Dp,lFASD-DATADJIMMaurice Ravel+eVF~FDp,COMPILER,NEW-DESTINATIONSpGLOBALlTpB SITElGigamos CambridgepB ,PACKAGETRAPpB lREADTABLEstandard Common-Lisp1DCIN-PACKAGEDÀQUOTEB51DÀEXPORTDB;D*MAGIC-GARBAGE-LOCATION*TRAP-ONÁWITHOUT-TRAPSCWITHOUT-INTERRUPTS1DDEFMACROpLISP-INTERNALSlTAIL-ERRORDCA0À&RESTpBIARESTWhen a call is made to error in a tail position use this macro instead to save information.DWHENDC>DpARRAYLENGTHBOFDpB+WARNlLI:TAIL-ERROR macro with more than 15 args -- might fail!DplSIXR-BQ-LIST*DB;ÀPROGNDBaDB;pBIERRORBLBODB;DNIL1DBHCTAIL-ILLOPDILLOP-STRINGDLETDDCODEDpUSERALLOCATE-ILLOP-CODEBoDBaDB;BbDpB_lXR-BQ-LISTDB;ÁILLOP-FUNCTIONBrDB;DBh1DBHÀILLOPDBoDBqDDBrDBuBoDB{DB;B|Br1DDEFCONSTANTB@F)1DBHÂSAVING-RETURN-REGISTERDÀTHUNKDBaDB;BqDB{DB{DB;BBDB;DLDp,HARDWAREWRITE-RETURN-PC-RETURN-DESTp,GLOBAL-REGISTERS*SAVE-TRAP-PC*DpBNOPDpBCH-OPEN-CALLpB*TRAP-TEMP1*DpBCH-TOPEN-CALLDpBlOPEN-FRAMEDSETFDpBlO0pB*RETURN-16*DBDpBlO1pB*RETURN-17*DBDpBlO2pB*RETURN-18*DBDpBlO3pB*RETURN-19*DBDpBlO4pB*RETURN-20*DBDpBlO5pB*RETURN-21*DBDpBlO6pB*RETURN-22*DBDpBlO7pB*RETURN-23*DBDpBlO8pB*RETURN-24*DBDpBlO9pB*RETURN-25*DBDpBO10pB*RETURN-26*DBDpBO11pB*RETURN-27*DBDpBO12pB*RETURN-28*DBDpBO13pB*RETURN-29*DBDpBO14DpBLDBDpBREAD-PROCESSOR-STATUSpB%%PROCESSOR-STATUS-RETURN-CODEDBDpBO15pBl*NUMBER-OF-RETURN-VALUES*DBDBDBpBl*RETURN-0*DBDBpBl*RETURN-1*DBDBpBl*RETURN-2*DBDBpBl*RETURN-3*DBDBpBl*RETURN-4*DBDBpBl*RETURN-5*DBDBpBl*RETURN-6*DBDBpBl*RETURN-7*DBDBpBl*RETURN-8*DBDBpBl*RETURN-9*DBDBpB*RETURN-10*DBDBpB*RETURN-11*DBDBpB*RETURN-12*DBDBpB*RETURN-13*DBDBpB*RETURN-14*DBDBpB*RETURN-15*DFUNCALLBDSETQBDBDBZBDBDBZB"DBDBZB&DBDBZB*DBDBZB.DBDBZB2DBDBZB6DBDBZB:DBDBZB>DBDBZBBDBDBZBFDBDBZBJDBDBZBNDBDBZBRDBDBZBVDBDBZBDpBCALLDB;FLUSH-OPEN-FRAMEDBZBDBDBZBDBDBZBDBDBZBDBDBZBDBDBZBDBDBZBDBDBZBDBDBZBDBDBZBDBDBZBDBDBZBDBDBZBDBDBZBDBDBZBDBDBZBDBDBZpB*TRAP-TEMP2*DB|DB;B}DCIFDÀZEROPBDpBCH-RETURN-ONE-VALUEDpBlCH-RETURN-MULTIPLE-VALUESDBBh1DBHSAVING-TRAP-FRAME-FOR-NONMODIFYING-EXITDBDBaDB;BqDBaDB{DB;BBDB;DDCSAVED-OREGpB*SAVE-OREG*DSAVED-PCBDCSAVED-PC+pB,*SAVE-TRAP-PC+*DSAVED-STATUSpB*SAVE-STATUS*DSAVED-JCONDpB*SAVE-JCOND*DSAVED-QDpB,READ-Q-REGISTERDSAVED-SSTEPDDISABLE-SINGLE-STEP-TRAPDB;DDBXBDRESTORE-SINGLE-STEP-TRAPBDpB,LOAD-Q-REGISTERBDBZBBDBZBBDBZBBDBZBBDBZBB1DBHÄSAVING-TRAP-FRAME-FOR-RECURSIVE-TRAPSDBDBaDB;LET*DBaDB{DB;BBDB;D DBBDBBDBBDBBDBBDBDBDBDBDMEMSTATDpBlREAD-MEMORY-STATUSDVMADpB,READ-VMADCMDDBbDBRDC=pB$$WMD-VALIDDBBpBl%%MEMORY-STATUS-MD-WRITTEN-LATELYDpBlVMA-START-WRITE-NO-GC-TRAP-UNBOXEDB@DpBMEMORY-WAITDpBlMD-START-WRITE-NO-GC-TRAP-UNBOXEDDpB,READ-MDDBADBDB;DDBXBBBDBDBDpB,TRAP-OFFDBBDBZBBDBZBBDBZBBDBZBBDBZBBDBBDpB,WRITE-MD-UNBOXEDBDBB@DpVIRTUAL-MEMORY,WRITE-MD-GENERICBDpB,LDB-NOTBpB,%%MEMORY-STATUS-MD-NOT-BOXED-BITDpB2lWRITE-VMA-GENERICBDB6BpBl%%MEMORY-STATUS-VMA-NOT-BOXED-BIT1DBHCFLUSH-READ-ERRORSDBDBaDB;BDBaDB{DB;BBDB;DDTRANSP-TYPEDB6DBpB%%MEMORY-STATUS-TRANSPORT-TYPEDMAP-BITSDpMAP,HW-READ-MAP-SAFEDBDBDCVMA-BOXEDDB6DBB?DBDBDMD-BOXEDDB6DBB8DB;DDpBlVMA-START-READ-NO-TRANSPORT-VMA-UNBOXED-MD-UNBOXEDB@DBDBDBXBBB\BBcBTBM1DBHCFLUSH-WRITE-ERRORSDBDBaDB;BDBaDB{DB;BBDB;DDGC-TRAPDB6DBpB%%MEMORY-STATUS-GC-TRAP-ENABLEDBTDBWDBDBDB\DB6DBB?DBDBDBcDB6DBB8DB;DDpB,WRITE-MDDpB,UNBOXED-CONSTANTpB ,UNBOXEDDBB@DBDBDBXBBB\BBcBTB{1DBHÁFLUSH-GC-TRAPDBDBaDB;BbDB{DB;BXBDB;DDBDBDB6DBB?pB,$$BOXEDDpBVMA-START-WRITE-BOXEDDBDpB,VMA-START-WRITE-UNBOXEDDB1DBHÁDISABLE-TRAPSDBDBaDB;BqDB{DB;DÁOLD-TRAP-STATEDB%DB{DB;BBDB;DDFLETDDÁRESTORE-TRAPSBhDTRAP-RESTOREBDBXBDFUNCTIONB1DBHBBDBDBaDB;BqDB{DB{DB;BBDB;DDBDBDÀLAMBDADRE-ENABLE-TRAPSDÀPROG1DBXBDBXB1DBHBCDBMBODYDBqDDOLD-SEQUENCEDpB+GENSYMDB{DB;BqDB{DBaBDB;DpB*ALLOW-SEQUENCE-BREAK*DB{DB;pBIUNWIND-PROTECTDBaDB;BbDB{DB;BZDB;BDB{DB;C1+BBDB{DB;BZDB;BB1DBHÁ%TRAP-RESTOREDBWARNING: You are responsible for making sure Multi-Function I/O clears outand no traps happen (including unlinked functions)!!!(Takes effect for 3rd cycle/instruction following)DB{DB;pBWRITE-MEMORY-CONTROLDBaDB;pBDPB-UNBOXEDBDB;DpB%%MEMORY-CONTROL-MASTER-TRAP-ENABLEDpBREAD-MEMORY-CONTROL