DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download
Index: ┃ T r

⟦3eff9c79e⟧ TextFile

    Length: 5935 (0x172f)
    Types: TextFile
    Names: »runmd.scm.36«

Derivation

└─⟦a0efdde77⟧ Bits:30001252 EUUGD11 Tape, 1987 Spring Conference Helsinki
    └─ ⟦this⟧ »EUUGD11/gnu-31mar87/scheme/scm/runmd.scm.36« 

TextFile

;;; -*-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))))))