build-man.mss 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634
  1. @make(Article)
  2. @comment[
  3. 9-Dec-82 20:46:50-MST,16664;000000000001
  4. Mail-from: ARPANET site RAND-RELAY rcvd at 9-Dec-82 2044-MST
  5. Date: 9 Dec 1982 0544-PST
  6. From: GRISS.HP-HULK at Rand-Relay
  7. Subject: Draft of more BUILD
  8. To: jw-peterson at Utah-20
  9. Via: HP-Labs; 9 Dec 82 19:36-PDT
  10. Here is a portion of manual about the next steps. Not complete,
  11. incorp@orates some of what youve seen:
  12. ]
  13. [For the moment, this note will use 68000 building as example, using
  14. DEC-20 as HOST]
  15. @section(Building the Cross Compiler)
  16. Connect to P68c: .
  17. Make sure that you have the following .b files on p68c:, or rebuild
  18. as below:
  19. a. m68k-cmac.b
  20. b. m68k-comp.b
  21. c. m68k-asm.b
  22. @subsection(How to make the .B files using the .MIC files)
  23. To rebuild a missing .B file, run the SYSBUILD .MIC file
  24. on the appropriate module:
  25. @@MIC PU:sysbuild M68k-xxx
  26. where "xxx" represents CMAC, COMP or ASM, as appropriate.
  27. @subsection(How to make the .EXE file)
  28. Now build the cross compiler onto the scratch directory, S: by
  29. running the .CTL file (using DO or SUBMIT):
  30. @@do p68c:new-m68k-cross.ctl
  31. [In the future, this should actually be changed to "do
  32. new-apollo-cross" to avoid confusion between the various 68000 based
  33. machines].
  34. @section(Running the Cross Compiler)
  35. Now connect to p68:
  36. @subsection(Independent Compilation and the .SYM file)
  37. To build a fresh BARE-PSL or a fresh FULL-PSL you will need a fresh
  38. symbol file. The current symbol file has the name of "m68k.sym"
  39. [which should be changed to "apollo.sym" or something related in the future]
  40. First generate a fresh m68k.sym file:
  41. @@MIC fresh-kernel.ctl
  42. This will keep your last m68k.sym file as p68:previous-m68k.sym. The
  43. fresh m68k.sym file will be on S:. Make sure it is there.
  44. @subsection(Generating the Module .CTL Files)
  45. Currently fourteen modules are required to build the first phase of
  46. either the
  47. BARE-PSL build or the FULL-PSL. You will need xxx.CTL files on kapollo:
  48. for each of these. The kernel module names (xxx) are currently:
  49. <<< how's about compiler modules? have same faclity make .ctl files for
  50. those?? >>>
  51. TYPES RANDM ALLOC ARITH DEBG ERROR EVAL EXTRA FASL
  52. IO MACRO PROP
  53. SYMBL SYSIO TLOOP HEAP
  54. and
  55. MAIN
  56. [Note, order is different from older P68: version <<<how??>>>]
  57. [Note, change to generate also for BIG-KERNEL?]
  58. <<< there needs to be some clear consensous on the terminolgy, i.e., what's the
  59. differances between big/bare/full-comp/kernel/psl??? >>>
  60. Take a look to see if they are there, if they are not
  61. you will have to re-generate them. The easiest way will be to do this
  62. is via the "kernel-gen" program:
  63. @begin(verbatim)
  64. @@PSL:PSL
  65. *(dskin "apollo-kernel-gen.sl")
  66. *(quit)
  67. @end(verbatim)
  68. This will create the xxx.CTL files you need on kapollo:.
  69. @subsection(Building the Modules)
  70. <<<again, terminology. need some clear definitions as to what all
  71. encompases (in terms of functionality, not "contains xx, yy & zz") >>>
  72. Now connect to kapollo:
  73. Now you must execute all the CTL files for the first 14 modules. Do this with
  74. the following command:
  75. @@MIC kapollo:All-kernel.ctl
  76. This command will SUBMIT all these CTL files to batch.
  77. [Alternatively, single modules my be run by submitting
  78. @@SUBMIT xxxx.CTL
  79. for module xxx] <<< any order or presatance to be followed? hows about .sym
  80. file??>>>
  81. Each batch job processed will create an xxx.log file on kapollo: which
  82. you can look at to evaluate errors. Initially before running a fresh
  83. build you might want to delete all these log files just for the sake
  84. of space.
  85. @subsection(Processing the MAIN file)
  86. <<<re: "is built last" where (timewise) does the compiler fit in?>>>
  87. Note that the MAIN module is built last, and that it takes the
  88. contents of the .SYM file and builds the run-time symbol table
  89. initialization.
  90. @@submit MAIN.CTL
  91. [Why is this not in ALL-KERNEL.CTL?]<<<because all-kernel refers to building
  92. the Individual pieces. Main crunches specificly on the main-start file and
  93. builds a resulting dmain. it is separate from all-kernel (specifcly, if i
  94. remember) simply so it Can be run last>>>.
  95. @subsection(Linking the files and executing)
  96. <<<huh?>>>
  97. @section(Details on the Test series)
  98. [Absorb details from TEST GUIDE here]
  99. <<< NO! we're talking about building *re*building sources that are assumed to
  100. be complete (i.e., a new version), not developing a port to a new machine.
  101. the port process, including the use of the small tests, deserves to be in
  102. a separate document; as it works quite differntly from building the whole
  103. thing. >>>
  104. @subsection(Command Files, and Kernel Generator?)
  105. [Describe kernel generator earlier?] <<< yes, please. and while you're at
  106. it, a functional description of "a kernel", and what it must contain, would
  107. help.>>>
  108. @subsection(Basic Test Strategy)
  109. Each test will use some modules tested in previous test,
  110. and add others, mostly extracted from the full PSL sources.
  111. Occassionally some stub-files have to be added, to be replaced
  112. by more complete sets extracetd frm sources later. Early tests
  113. simply try to print informative messages about what is happening,
  114. and whether each test succeeded or not. As more of a complete
  115. LISP is built up, the tests will require a variety of manual
  116. inputs. Finally a complete MINI-PSL will result.
  117. <<< again, i'd like to see the porting manual separate from the system-rebuild
  118. description; not doing so risks confusion, and perhaps a 'missing piece
  119. syndrome'. the idea is pick up vol. one "how to design and test psl cmacros"
  120. once you think your cmacros work, you pick up vol. two "how to build a
  121. complete running psl." theoreticly, the only thing in common between the
  122. two should be one(?) i/o module and the key compiler files xxx-cmac, xxx-asm,
  123. etc. (they guys who live in .../comp) >>>
  124. @subsection(Test1)
  125. @subsection(Testn)
  126. @subsection(Testing Mini-EVAL)
  127. @subsection(Testing Character and File I/O)
  128. @subsection(Switch Over to INIT files)
  129. <<< what switch? where? magic? >>>
  130. At this point, can flip a switch in the build process, and
  131. have INITCODE be smaller, and instead have .INIT files produced,
  132. which will be read in by LAPIN or DSKIN.
  133. @subsection(Testing Binary I/O)
  134. [Write a small BINDUMP routine]
  135. <<<again, the vol.1 "how to test"/vol 2."how to build" concept. perhaps
  136. set up a testn+1 to test bin i/o?? >>>
  137. @section(Building the BARE-PSL kernel)
  138. At this point, enough basic tests have been done, and now the standard
  139. BARE-PSL should be built. This requires a few more files,
  140. <<<this is where things can get murky between "test phase" and "build phase".>>
  141. and a more
  142. stable BUILD sequence. This will result in a complete 3.1 version of
  143. BARE-PSL.
  144. <<<what about comp/faslout? build it on the resident bare-psl via the
  145. interpreter? maybe go whole-hog first time? we thought we could get away
  146. bare-psl on the apollo mainly because we thought the 3.0 could handle
  147. generating new binaries. it couldn't, so we had start from square 0. and
  148. you can't (at least if i interpeted all of chip & steve's swearing & cursing
  149. right) build the comp stuff interpetivly because you start tripping
  150. over syslisp. is that now fixed? if so, how? needs
  151. the concept as presented here needs details, and looks like it may not
  152. be fully correct...take a hard look.>>>
  153. @subsection(Use and Customization of Kernel Generator)
  154. [Should kernel-gen be used with test series?]
  155. <<<no, see above dissertation on vol1/vol2>>>
  156. @subsection(Common Files, Machine Specific Files and Dummy Files)
  157. @subsection(Init Files)
  158. <<<short section. I could use the info, what -are- they used for?
  159. when do you need to replace them?>>>
  160. @subsection(Testing BARE-PSL)
  161. @section(Bootstrapping the LAP, FASL and COMPILER)
  162. Currently, we bootstrap complete system by adding additional modules
  163. to BARE-PSL to make BIG-PSL.<<<terminology again>>>
  164. These are LAP, FASLOUT and COMPILER
  165. modules, and also RLISP parser. BIG-PSL <<<don't you mean bare?>>>
  166. is used as a bootstrap step to
  167. the production of COMPILER.B, FASLOUT.B, LAP.B etc., since once these
  168. are built, they can be loaded into the BARE-PSL when needed.
  169. Having core-save working by this time is important, since
  170. the kernel is quite large, and loading RLISP and COMPILER and INIT
  171. files takes quite a while. <<<though somewhat of a moot point on the apollo,
  172. since copying the entire image also takes plenty of time>>>.
  173. [In future, should convert critical files to .SL, avoid RLISP in
  174. kernel at ALL] <<<or how's about the host generating a .sl rlisp
  175. automaticlly? I would Much rather read .red then .sl >>>
  176. [In future, will do alternative model, with just LAP to start, test
  177. with LAP files from cross-compiled files. Then test FASLOUT and
  178. FASLIN. Should be able to load many things as .LAP files. Then
  179. finally load compiler. It should work without much problem since its
  180. essentially all common code, and mostly tested even for this target in
  181. CROSS mode.] <<<yeah. reminds me, this doc doesn't say much about lap.
  182. generation of the lap system is quite arcane, no?>>>
  183. @subsection(Building the FULL-PSL)
  184. Essentially same procedure as BARE-PSL, just have 2 more modules,
  185. RLISP and COMP, and rebuild MAIN. <<<but if you're going the cross compile
  186. route, watch out for booby traps (i.e., fasl in bare-psl stepping on fasl
  187. in comp>>>
  188. @subsection(Extra Files)
  189. For the RLISP module, need PU:RLISP.BUILD which accesses
  190. PU:RLISP-PARSER.RED and PU:RLISP-SUPPORT.RED.
  191. [We should change sources so that dont need RLISP for
  192. for BIG-BUILD].
  193. For the COMP module, we need to access a large number of
  194. files right now: <<<huh? this is mislocated>>>
  195. @subsection(Building both BARE-PSL and FULL-PSL)
  196. Its worth building both BARE-PSL and FULL-PSL at the same time during this
  197. phase. Build up to the MAIN module of BARE-PSL. Then copy the .SYM
  198. file for use in incremental rebuilding of BARE-PSL modules and
  199. BARE-MAIN. Then continue to build the RLISP, COMP and FULL-MAIN
  200. modules. These 2 different .SYM files are then used for rebuilding
  201. modules in the BARE-PSL series or the FULL-PSL series, as appropriate.
  202. Most of the time, errors will be only in the COMP module, but occasionally
  203. errors will be found that require a full build of the BARE-PSL and FULL-PSL,
  204. or incremental rebuild of some earlier modules. <<<hmmm, what about .sym
  205. file? and cleaning it out and restoring it? and how do the .init files
  206. fit into this process. i don't like the idea of several lisps lying around
  207. (e.g., bare, big, full, etc).
  208. would be MUCH simpler just to deal with one resulting system, rather than try
  209. and keep track of several. particularly if they start getting into fights
  210. and stepping on each other. cost in dealing with one larger system may be made
  211. up in avoiding screwups caused by multpile ones. think about this!>>>
  212. To build a FULL-PSL you must submit two additional .CTL files to be
  213. cross compiled, they are COMP.CTL and MAIN.CTL. To build just BARE-PSL
  214. you submit only MAIN.CTL. Both of these CTL files should be on
  215. kapollo:, if not you will have to create them by hand.
  216. Here is COMP.CTL:
  217. @begin(verbatim)
  218. @@define DSK: DSK:, kapollo:, PI: <<<search lists are too much a form of
  219. magic. would prefer that it be
  220. dictated as to which dir the .ctl is
  221. run from, and logicals (or on unix,
  222. relative paths) be used to specify
  223. where things belong. besides, they
  224. Only work this way on the 20.>>>
  225. @@S:m68k-CROSS.EXE
  226. *ASMOut "comp";
  227. *in "comp.build";
  228. *ASMEnd;
  229. *quit;
  230. The COMP.BUILD file should look like this:
  231. macro procedure !* u;nil;
  232. on eolinstringok;
  233. put('bitsperword,'wconst,32);
  234. compiletime flag('(taggedlabel inump !*jumpeq !*jumpnoteq
  235. !*jumpwgreaterp !*jumpwlessp !*jumpwgeq
  236. !*link !*linke
  237. onep
  238. !*jumpwleq), 'lose);
  239. in "pc:anyreg-cmacro.sl"$
  240. in "pc:common-cmacros.sl"$
  241. in "pc:common-predicates.sl"$
  242. in "pc:pass-1-lap.sl"$
  243. in "pc:compiler.red"$
  244. in "pc:comp-decls.red"$
  245. in "pc:tags.red"$
  246. compiletime remflag('(taggedlabel inump !*jumpeq !*jumpnoteq
  247. !*jumpwgreaterp !*jumpwlessp !*jumpwgeq
  248. !*link !*linke
  249. !*jumpwleq), 'lose);
  250. compiletime flag('(tagnumber), 'lose);
  251. in "kapollo:m68k-cmac.sl"$
  252. in "kapollo:m68k-comp.red"$
  253. in "kapollo:m68k-lap.red"$
  254. in "p68:nsystem-faslout.red"$ <<<are these duplicated in the bare-kernel?>>>
  255. in "pc:faslout.red"$ <<<again, problems with multilpe version, maybe not
  256. a good idea>>>
  257. The MAIN.CTL file will look like this:
  258. define DSK: DSK:, PHP:, PI:
  259. S:HP-CROSS.EXE
  260. ASMOut "main";
  261. in "main.build";
  262. ASMEnd;
  263. quit;
  264. @end(verbatim)
  265. So send one or both of these files to batch like this
  266. "submit comp.ctl"
  267. "submit main.ctl"
  268. Each ctl file sent to batch will produce three files on the scratch
  269. directory, an xxx.ASM, an Dxxx.ASM, and a xxx.INIT file.
  270. Some of the init files are of length zero, this is ok.
  271. @subsection(Append INIT files)
  272. Connect to the scratch directory, S:.
  273. The init files can all be appended together to cut down shipping and the
  274. time it takes to startup the APOLLO PSL.
  275. Append all the init files together to create an all.init.
  276. If you also are building the BIG-PSL then you will have to append
  277. COMP.INIT to all.init by hand or ship it to the apollo seperately and
  278. edit the file on the Apollo to include the comp.init.
  279. @@DO P68:all-init.ctl
  280. @subsection(Removing Tabs)
  281. [I believe 3.1 CROSS compiler fixed to only put in 1 space (or 2 for CRAY),
  282. so tabs dont need to be stripped. EXPAND is unsafe program]
  283. The Apollo Assembler does not like tabs so the .ASM files will need to
  284. have the tabs expanded into spaces. One way to do this is to do the
  285. following.
  286. @@DO p68:allexpand.ctl <<<unix has much better facilities for doing this>>>
  287. If you are building a BIG-PSL then you will have to expand the two comp
  288. by hand by doing:
  289. @@unix:expand <comp.asm >comp.asm
  290. @@unix:expand <dcomp.asm >dcomp.asm
  291. I suggest you copy everything to rs: to keep it around. Thats all
  292. the .asm's, the .inits, and the m68k.sym.
  293. [Why not change the .CTL files to insert RS: instead of S:]
  294. <<<perhaps because disk space is guarenteed on scratch, i.e., an extra
  295. set of versions won't kill you. would be nice tohave them back the next
  296. day though....>>>
  297. @subsection(Ship via the VAX)
  298. You are now ready to ship the code to the Apollo. Login on the VAX
  299. and run
  300. regexp.csh,
  301. a copy is on lowder's directory. This will move all the files off
  302. scratch except for the two comp files. So do:
  303. [Add BIGregexp.csh] <<<what on earth does regexp stand for?>>>
  304. <<<important: you should also give the following vax commands to avoid
  305. getting screwed over by mail, system, and autologout msgs:
  306. biff n #shut off mail notifyier
  307. mesg n # sys msgs
  308. set autlogout=2000 #so it won't die while waiting for asm
  309. >>>
  310. get20 scratch comp.asm dcomp.asm
  311. @subsection(Fetch from Apollo)
  312. Get logged in on the Apollo and conect to the VAX by running ST.
  313. >From the Apollo shell type:
  314. "apollo.csh"
  315. This will ship and assemble everything from the VAX except files related
  316. to comp. If you are using them you will have to type this to the apollo:
  317. [Add BIGAPOLLO.csh]
  318. "vfv1 comp.asm
  319. asmnl comp
  320. vfv1 dcomp.asm
  321. asmnl dcomp"
  322. @subsection(Bind the Modules)
  323. Now link with shell script:
  324. PSLBIND.SH PSL
  325. [Here again you CURRENTLY have to edit pslbind.sh to add the names of
  326. COMP.BIN and DCOMP.BIN if you are going to build a BIG-PSL. Suggest
  327. doing this once, create a BIGBIND.SH] <<<again, look at the special
  328. casy-ness of having big vs. bare [vs. full], etc. worth avoiding?
  329. time savings in the long run?>>>
  330. @subsection(Notes)
  331. There are a number of ways to vary this entire prcocess to customize
  332. it to your needs. If you started by building a BARE-PSL you can go
  333. back and build just the comp module by copying the m68k.sym from rs:
  334. onto the scratch directory and submitting the comp.ctl and the the
  335. main.ctl as previously described. Also you can choose to link or not
  336. the comp module in the apollo.
  337. <<<important: you need to spell out booby traps you can run into while
  338. doing this>>>
  339. @subsection(Testing LAP)
  340. Once most of LAP has been run on the host machine (interpretively or
  341. compiled), the next step is to run it as a "resident" PSL assembler on
  342. the target machine to ensure that it correctly assembles small
  343. procedures written in TLM ("target" LAP) form. Then procedures are
  344. input in ALM (cmacro form). Usually this next step will work quite
  345. well, since the CMACRO's will have been well tested while building the
  346. TEST-SERIES and BARE-PSL.
  347. Note that until RESIDENT mode of assembly seems stable (basically
  348. checking assembler and cmacro tables), there is no point in trying
  349. to do much with faslout.
  350. Here are some simple procedures to try; others can be generated
  351. by looking at the output of the cross-compiler:
  352. <<<comments! what are these guys trying to do? what should i look for
  353. to see that they work right? >>>
  354. @begin(verbatim)
  355. (LAP '((!*ENTRY FOO EXPR 1) % can we define ANY procedure
  356. (!*ALLOC 0)
  357. (!*EXIT 0))) % or (RTS) on 68000
  358. % when called, should return argument
  359. (LAP '((!*ENTRY FOO EXPR 0)
  360. (!*ALLOC 0)
  361. (!*MOVE (QUOTE 1) (REG 1))
  362. (!*EXIT 0)))
  363. (LAP '((!*ENTRY FOO EXPR 1) % adds 2 to argument, prints and returns
  364. (!*ALLOC 0)
  365. (!*MOVE (QUOTE 2) (REG 2))
  366. (!*LINK PLUS2 EXPR 2)
  367. (!*LINK PRINT EXPR 1)
  368. (!*EXIT 0)))
  369. @end(verbatim)
  370. Common problems encountered at this phase are:
  371. @begin(description)
  372. LAP Table Errors@\Most implementations of lap have procedures
  373. for common formats, and tables of numbers for the opcodes.
  374. Often the numbers are mistyped, or the instructions misclassified
  375. or missing.
  376. Trace@\If it blows up with illegal addressing, try tracing certain passes
  377. to see which is at fault; then as a quick patch, redefine these
  378. passes to be NO-OPS:
  379. @begin(verbatim)
  380. (de OptimizeBranches (U) U)
  381. or
  382. (de PASS1LAP (u) U)
  383. etc.
  384. @end(verbatim)
  385. @end(description)
  386. <<<what does alm mean?>>>
  387. [Prepare file of sample procedures, and corresponding ALM form
  388. to test important things. E.g., HALFWORD tables for LAMBIND, etc.]
  389. <<< why did chip & steve use interpretiv put/gethalfword functions?
  390. tricks worth knowing about???>>>
  391. [In future, hope to be able to run LAP interpretively on BARE-PSL,
  392. rather than having to build into kernel.]
  393. @subsection(Testing FASLOUT and FASLIN)
  394. Now that resident LAP seems to work, try some simple FASLOUT and
  395. FASLIN. Binary I/O should have been tested, so main thing is checking
  396. that RELOC stuff works, and that bytes and words are correctly
  397. assembled into the incore array for FASL, passed out to the file
  398. and correctly re-written. <<<examples of what this looks like?>>>
  399. FASLOUT and the FASLIN a few small files
  400. <<<how's about some pre-built tests?>>> to check accuracy. These
  401. files should be self-contained, and not intially contain
  402. SYSLISP code, since the SYSLISP.B module has not been built.
  403. <<< easier said than done- syslisp has had a tendenacy to creep into
  404. nearly everything for "effeciency" sake...>>>
  405. For example, try the PU:POLY.RED. An important one
  406. is PU:RLISP-PARSER.RED and PU:RLISP-SUPPORT.RED.
  407. [It is worth while to use a small BINARY-DUMP
  408. routine that reads a binary file and prints it as OCTAL or HEX numbers.
  409. This can be compared with the known FASL format<<<which is ____>>>,
  410. for a test file that
  411. has been fasled on a similar machine].
  412. Common problems encountered at this phase are:
  413. @begin(description)
  414. ???? <<<amen>>>
  415. @end(description)
  416. @subsection(FASLOUT the critical files)
  417. In order to build most of the .B files that are needed, one needs to
  418. create the IF-SYSTEM, BUILD, RLISP, COMPILER, FASLOUT and LAP modules.
  419. First "hand-build" the IF-SYSTEM and SYSLISP and BUILD modules:
  420. @begin(verbatim)
  421. FASLOUT "IF-SYSTEM";
  422. IN "IF-SYSTEM.RED"$
  423. FASLEND;
  424. @End(verbatim)
  425. Building SYSLISP is tricker since it needs
  426. a version of SYSLISP to build from. First edit the PC:SYSLISP.BUILD file,
  427. to make sure that the IF_SYSTEM clauses mention your machine
  428. (as set up in the SYSTEM_LIST!* list before). Then read in the
  429. SYSLISP support interpretively, and then FASLOUT :
  430. @begin(verbatim)
  431. <<<where are we? is this with the cross compiler?>>>
  432. LOAD IF!-SYSTEM; % Needs IF-SYSTEM
  433. IN "SYSLISP.BUILD"; % To get interpreted SYSLISP in
  434. % since it needs SYSLISP to build
  435. OPTIONS!* := 'SYSLISP . OPTIONS!*;
  436. % To prevent PSL from attempting to load Syslisp;
  437. FASLOUT "SYSLISP";
  438. IN "SYSLISP.BUILD"$ % may have to use PATHIN off PC:
  439. FASLEND;
  440. @end(verbatim)
  441. Finally, faslout the BUILD.B module, for future module building:
  442. @begin(verbatim)
  443. FASLOUT "BUILD";
  444. IN "BUILD.BUILD"$
  445. @end(verbatim)
  446. Now use BUILD on the other modules that are needed to produce
  447. the base system:
  448. @BEGIN(verbatim)
  449. BUILD 'RLISP;
  450. BUILD 'COMP!-DECLS;
  451. BUILD 'PASS!-1!-LAP;
  452. BUILD 'xxx!-LAP;
  453. BUILD 'xxx!-CMAC;
  454. BUILD 'xxx!-COMP;
  455. BUILD 'FASLOUT;
  456. BUILD 'COMPILER;
  457. @end(verbatim)
  458. @subsection(Test FASL'd RLISP and COMPILER)
  459. LOAD the RLISP modules into the BARE-PSL
  460. system, check that RLISP works on a number of files.
  461. Now LOAD the COMPILER, try some in-core compilation of simple
  462. procedures (ON COMP).
  463. Finally use this system to FASLOUT or BUILD a variety of modules.
  464. Ultimately try rebuilding RLISP and COMPILER and SYSLISP.
  465. <<<what are problems here? what's the roles of the resident system and the
  466. cross compiler at this point?>>>
  467. @subsection(BUILD rest of library)
  468. Now go through the PU: directory, running BUILD on each of the BUILD
  469. files. Check each build-file to see which additional modules are needed.
  470. Important shared modules are:
  471. @begin(verbatim)
  472. <<<gee, if you squint this looks like a unix makefile...>>>
  473. INUM Needs SYSLISP
  474. FAST-VECTOR Needs SYSLISP, IF-SYSTEM
  475. VECTOR-FIX Needs SYSLISP
  476. GSORT Needs SYSLISP
  477. BIGBIG Needs SYSLISP, FAST-VECTOR,VECTOR-FIX,ARITH
  478. BIGFACE Needs SYSLISP, FAST-VECTOR,VECTOR-FIX,ARITH
  479. INUM, BIGBIG,IF-SYSTEM
  480. @end(verbatim)
  481. -------