|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T r
Length: 5935 (0x172f)
Types: TextFile
Names: »runmd.scm.36«
└─⟦a0efdde77⟧ Bits:30001252 EUUGD11 Tape, 1987 Spring Conference Helsinki
└─⟦this⟧ »EUUGD11/gnu-31mar87/scheme/scm/runmd.scm.36«
;;; -*-Scheme-*-
;;;
;;; Copyright (c) 1984 Massachusetts Institute of Technology
;;;
;;; This material was developed by the Scheme project at the
;;; Massachusetts Institute of Technology, Department of
;;; Electrical Engineering and Computer Science. Permission to
;;; copy this software, to redistribute it, and to use it for any
;;; purpose is granted, subject to the following restrictions and
;;; understandings.
;;;
;;; 1. Any copy made of this software must include this copyright
;;; notice in full.
;;;
;;; 2. Users of this software agree to make their best efforts (a)
;;; to return to the MIT Scheme project any improvements or
;;; extensions that they make, so that these may be included in
;;; future releases; and (b) to inform MIT of noteworthy uses of
;;; this software.
;;;
;;; 3. All materials developed as a consequence of the use of
;;; this software shall duly acknowledge such use, in accordance
;;; with the usual standards of acknowledging credit in academic
;;; research.
;;;
;;; 4. MIT has made no warrantee or representation that the
;;; operation of this software will be error-free, and MIT is
;;; under no obligation to provide any services, by way of
;;; maintenance, update, or otherwise.
;;;
;;; 5. In conjunction with products arising from the use of this
;;; material, there shall be no use of the name of the
;;; Massachusetts Institute of Technology nor of any adaptation
;;; thereof in any advertising, promotional, or sales literature
;;; without prior written consent from MIT in each case.
;;;
;;;; CScheme Runtime System anticipating compiled code loadings.
;; **** These declarations are NOT optional! ****
(declare (usual-integrations)
(compilable-primitive-functions binary-fasload microcode-identify))
\f
(define system-global-environment (the-environment))
(define user-initial-environment (make-environment))
(define replace-rep!)
(define INTERRUPT-MASK-GC-OK 7) ; GC & Stack overflow ONLY
(define INTERRUPT-MASK-NONE 0) ; Absolutely everything off
(define INTERRUPT-MASK-ALL -1) ; Normal: all enabled
(define *printer-width*)
(define *printer-length*)
\f
(define microcode-system
(make-environment
(define :name "Microcode")
(define :version)
(define :modification)
(define :identification)
(define :release)
(define (snarf-version)
(set! :identification (microcode-identify))
(set! :release (vector-ref :identification 0))
(set! :version (vector-ref :identification 1))
(set! :modification (vector-ref :identification 2))
(set! *printer-width* (vector-ref :identification 3))
(set! *printer-length* (vector-ref :identification 4))
)
;;; end MICROCODE-SYSTEM.
))
(define runtime-system
(make-environment
(define :name "Runtime")
(define :version 11)
(define :modification 4)
(define (:load)
((access snarf-version microcode-system))
(let ((garbage-collector (binary-fasload (car (car :files)))))
(scode-eval garbage-collector system-global-environment)
(purify garbage-collector))
(let loop ((files (cdr :files)))
(if (not (null? files))
(sequence (:load-file (car files))
(loop (cdr files)))))
((access install interrupt-system))
((access install error-system))
;; Into constant space.
(purify (get-fixed-objects-vector) #!FALSE))
(define (:load-file filename)
(scode-eval (if (cdr filename)
(purify (binary-fasload (car filename)) #!TRUE)
(binary-fasload (car filename)))
system-global-environment))
\f
(define :files
'(("gc.bin.77" . #!true) ;The GC interface.
;; Microcode Description
("utabmd.bin.35" . #!true) ;CScheme dependent Microcode vectors.
("utabs.bin.6" . #!true)
("implmd.bin.18" . #!true) ;CScheme dependent items.
;; Basic Utilities
("boot.bin.117" . #!true) ;Most basic of primitives.
("narith.bin.26" . #!true) ;Generic arithmetic.
("equals.bin.3" . #!true) ;Equality.
("list.bin.49" . #!false) ;Lists.
("vector.bin.19" . #!true) ;Object vectors.
("bitvec.bin.2" . #!true) ;Bit vectors.
("char.bin.11" . #!true) ;Characters.
("string.bin.4" . #!true) ;Strings.
("wind.bin.85" . #!true) ;Dynamic winder (FLUID-LET).
;; SCode Abstraction
("sdata.bin.30" . #!true) ;Data field abstraction.
("scode.bin.305" . #!true) ;SCODE simple abstractions.
("scomb.bin.30" . #!true) ;SCODE Combinator abstractions.
("lambda.bin.44" . #!true) ;SCODE Lambda abstraction.
("scan.bin.11" . #!true) ;Scan out definitions.
("ustruc.bin.165" . #!true) ;Microcode data structures abstraction.
;; Stack Parser
("history.bin.67" .#!true) ;History abstraction.
;; Note: STACKP diverges from the 68k runtime system. I must fix this in the
;; near future to keep the Cscm and Scm runtimes in phase.
("stackp.bin.16" . #!true) ;Continuation parser machinery.
("spmd.bin.20" . #!true) ;CScheme format stack parser
;; Syntax
("parse.bin.70" . #!true) ;Parsing characters -> objects.
("unpars.bin.31" . #!true) ;Unparsing objects -> characters.
("syntax.bin.204" . #!true) ;S-expressions -> SCode.
;; I/O
("io.bin.30" . #!true) ;I/O primitives.
("read.bin.181" . ()) ;Input.
("print.bin.196" . ()) ;Output.
;; Top level
("rep.bin.340" . #!true) ;Read-Eval-Print loop.
("repuse.bin.21" . #!true) ;REP User Interface.
("intrpt.bin.63" . #!true) ;Interrupt system.
("error.bin.155" . #!true) ;Error system.
("load.bin.4" . #!true) ;Program loading.
("world.bin.7" . #!true) ;World (band) operations.
))
;;; end RUNTIME-SYSTEM.
))
((access :load runtime-system))
(let warm-boot-loop
((rep
(lambda ()
(make-rep user-initial-environment
(standard-rep-message "Cold Load Complete")
(standard-rep-prompt top-level-driver-prompt)))))
(warm-boot-loop
(catch
(lambda (cont)
(set! replace-rep! cont)
;; Kludge to prevent holding REP.
((set! rep))))))