123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- % Replacements for functions in usual xxx-CROSS.EXE which only read/write
- % xxx.SYM if flags !*symread/!*symwrite are T; otherwise symbols are
- % assumed to be already loaded (read case) or the cross-compiler is to
- % be saved intact with symbols (write case).
- lisp procedure ASMEnd;
- << off SysLisp;
- if !*MainFound then
- << CompileUncompiledExpressions();
- % WriteInitFile();
- InitializeSymbolTable() >>
- else WriteSymFile();
- CodeFileTrailer();
- Close CodeOut!*;
- DataFileTrailer();
- Close DataOut!*;
- Close InitOut!*;
- RemD 'Lap;
- PutD('Lap, 'EXPR, cdr GetD 'OldLap);
- DFPRINT!* := NIL;
- !*DEFN := NIL;
- WriteSaveFile()
- >>;
- lisp procedure ReadSymFile();
- if !*symread then
- LapIN InputSymFile!*
- else off usermode;
- lisp procedure WriteSymFile();
- begin scalar NewOut, OldOut;
- if !*symwrite then <<
- OldOut := WRS(NewOut := Open(OutputSymFile!*, 'OUTPUT));
- print list('SaveForCompilation,
- MkQuote('progn . car ToBeCompiledExpressions!*));
- SaveIDList();
- SetqPrint 'NextIDNumber!*;
- SetqPrint 'StringGenSym!*;
- MapObl function PutPrintEntryAndSym;
- WRS OldOut;
- Close NewOut; >>;
- end;
- lisp procedure WriteSaveFile();
- if !*symsave and (null !*mainfound) then
- % restore some initial conditions
- <<!*usermode := nil;
- DataExporteds!* := DataExternals!* := nil;
- CodeExporteds!* := CodeExternals!* := nil;
- !*MainFound:= nil;
- % save the cross-compiler with symbol tables intact
- dumplisp(cross!-compiler!-name)
- >>;
- !*symwrite := !*symread := nil;
- !*symsave := T;
|