hưs8p,LAMBDAF2Dp,lFASD-DATADjimLove@F~F4Dp,COMPILER,NEW-DESTINATIONSpGLOBALlTpB SITElGigamos CambridgepB ,PACKAGETRAPpB lREADTABLEstandard Common-Lisp1DCIN-PACKAGEDÀQUOTEB51DÀEXPORTDB;D*MAGIC-GARBAGE-LOCATION*TRAP-ONÁWITHOUT-TRAPSCWITHOUT-INTERRUPTS1DDEFMACROpLISP-INTERNALSlTAIL-ERRORDCA0C&OPTIONALCA1CA2CA3CA4CA5CA6CA7CA8CA9A10A11A12A13A14A15When a call is made to error in a tail position use this macro instead to save information.DplSIXR-BQ-LIST*DB;ÀPROGNDpB_lXR-BQ-LISTDB;pBIERRORBLBNBOBPBQBRBSBTBUBVBWBXBYBZB[B\DB;DNIL1DBHÀILLOPDILLOP-STRINGDLETDDCODEDpUSERALLOCATE-ILLOP-CODEBqDBeDB;ÁILLOP-FUNCTIONBt1DDEFCONSTANTB@F)1DBHÂSAVING-RETURN-REGISTERDÀTHUNKDBaDB;BsDBeDBeDB;BBDB;DJDp,HARDWARECH-OPEN-CALLp,GLOBAL-REGISTERS*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*DFUNCALLBDSETQBDBDBDBDBDBDB DBDBDBDBDBDBDBDBDBDBDBDBDBDBDB DBDBDB$DBDBDB(DBDBDB,DBDBDB0DBDBDB4DBDBDB8DBDBDB<DBDBDB@DBDBDBDpBCALLDB;FLUSH-OPEN-FRAMEDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDpB*TRAP-TEMP2*DBfDB;BgDCIFDÀZEROPBDpBCH-RETURN-ONE-VALUEDpBlCH-RETURN-MULTIPLE-VALUESDpBNOPBj1DBHSAVING-TRAP-FRAME-FOR-NONMODIFYING-EXITDBDBaDB;BsDBaDBeDB;BBDB;DDCSAVED-OREGpB*SAVE-OREG*DSAVED-PCpB*SAVE-TRAP-PC*DCSAVED-PC+pB,*SAVE-TRAP-PC+*DSAVED-STATUSpB*SAVE-STATUS*DSAVED-JCONDpB*SAVE-JCOND*DSAVED-QDpB,READ-Q-REGISTERDSAVED-SSTEPDDISABLE-SINGLE-STEP-TRAPDB;DDBBBDRESTORE-SINGLE-STEP-TRAPBDpB,LOAD-Q-REGISTERBDBDBBDBDBBDBDBBDBDBBDBDBB1DBHÄSAVING-TRAP-FRAME-FOR-RECURSIVE-TRAPSDBDBaDB;LET*DBaDBeDB;BBDB;D DBBDBBDBBDBBDBBDBDBDBDBDMEMSTATDpBlREAD-MEMORY-STATUSDVMADpB,READ-VMADCMDDBbDWHENDC=pB$$WMD-VALIDDBBpBl%%MEMORY-STATUS-MD-WRITTEN-LATELYDpBlVMA-START-WRITE-NO-GC-TRAP-UNBOXEDB@DpBMEMORY-WAITDpBlMD-START-WRITE-NO-GC-TRAP-UNBOXEDDpB,READ-MDDBADBDB;DDBBBBBDBDBDpB,TRAP-OFFDBBDBDBBDBDBBDBDBBDBDBBDBDBBDBBDpB,WRITE-MD-UNBOXEDBDBB@DpVIRTUAL-MEMORY,WRITE-MD-GENERICBDpB,LDB-NOTBpB,%%MEMORY-STATUS-MD-NOT-BOXED-BITDpB!lWRITE-VMA-GENERICBDB%BpBl%%MEMORY-STATUS-VMA-NOT-BOXED-BIT1DBHCFLUSH-READ-ERRORSDBDBaDB;BDBaDBeDB;BBDB;DDTRANSP-TYPEDB%DBpB%%MEMORY-STATUS-TRANSPORT-TYPEDMAP-BITSDpB,READ-MAPDBDBDCVMA-BOXEDDB%DBB.DBDBDMD-BOXEDDB%DBB'DB;DDpBlVMA-START-READ-NO-TRANSPORT-VMA-UNBOXED-MD-UNBOXEDB@DBDBDBBBBBJBBQBCB<1DBHCFLUSH-WRITE-ERRORSDBDBaDB;BDBaDBeDB;BBDB;DDGC-TRAPDB%DBpB%%MEMORY-STATUS-GC-TRAP-ENABLEDBCDBEDBDBDBJDB%DBB.DBDBDBQDB%DBB'DB;DDpB,WRITE-MDDpB,UNBOXED-CONSTANTpB ,UNBOXEDDBB@DBDBDBBBBBJBBQBCBi1DBHÁFLUSH-GC-TRAPDBDBaDB;BbDBeDB;BBBDB;DDBDBDB%DBB.pB,$$BOXEDDpBVMA-START-WRITE-BOXEDDBDpB,VMA-START-WRITE-UNBOXEDDB1DBHÁDISABLE-TRAPSDBDBaDB;BsDBeDB;DÁOLD-TRAP-STATEDBDBeDB;BBDB;DDFLETDDÁRESTORE-TRAPSBjDpBWRITE-MEMORY-CONTROLDpBDPBBpB%%MEMORY-CONTROL-MASTER-TRAP-ENABLEDpBREAD-MEMORY-CONTROLDBDBBjDBBBDFUNCTIONB1DBHBBDBDBaDB;BsDBeDBeDB;BBDB;DDBDBDÀLAMBDADRE-ENABLE-TRAPSDÀPROG1DBBBDBBB1DBHBCDÀ&RESTBODYDBsDDOLD-SEQUENCEDpB+GENSYMDBeDB;BsDBeDBaBDB;DpB*ALLOW-SEQUENCE-BREAK*DBeDB;pBIUNWIND-PROTECTDBaDB;BbDBeDB;BDDB;BDBeDB;C1+BBDBeDB;BDDB;BB1DBHÁ%TRAP-RESTOREDBWARNING: You are responsible for making sure Multi-Function I/O clears outand no traps happen (including unlinked functions)!!! (4 cycles)DBeDB;BDBaDB;pBDPB-UNBOXEDBDB;DBDB