perm filename LEPPRB.WRU[DOC,AIL] blob sn#084496 filedate 1974-02-08 generic text, type T, neo UTF8
This file contains a list of the things which I know must be changed in
order for BIG LEAP at CASE (with 2↑27 possible items) to be compile, and
runable.


1. MATCHING PROCEDURE ? PARAMETERS - stack entry currently contains
	

	1. (? parameter bound) - the item bound to the parameter

	2. (? parameter unbound) - left half has @ bit on, rh has
		the address of the itemvar parameter.

    LOADING - thus to load into AC the current item value of the parameter

		MOVEI AC,@STKPOS(F)

    ADDRESS - to calculate the address of the ? parameter (for storing,passing
	as reference parameter)

		MOVE	X,STKPOS(F)	;ASSUME THAT WAS UNBOUND
		TLZN	X,20		;TEST ASSUMPTION
		MOVEI   X,STKPOS(F)	;ASSUMPTION WAS INCORRECT

    Suggested fix:
	use sign bit instead of @ for indicating address rather than value
	is on stack

	1. (? parameter bound) - same as above
	2. (? parameter unbound) - lh has bit 400000, 	rh has address of
		the itemvar parameter


    LOADING- thus to load into AC the current item value of the parameter

		SKIPG   AC,STKPOS(F)
		MOVE	AC,(AC)

    ADDRESS - to calculate the address of the ? parameter (for storing etc)

		SKIPL	AC,STKPOS(F)
		MOVEI	AC,STKPOS(F)

    The above change would necesitate changes in GENMOV(GET)
        GENMOV(GET,ADDR), GENMOV(PUT), PREPAR(LEAP), GETITM(LEAP)
	And FORGO (inside LEPRUN where locals are placed in the SCB)
    Check cref's for other places(look for MPBIND)

2. Other limits caused by 27-bits
    a. FOREACH interpreter
		MC,MB  byte pointers
		SCB in general since can no longer store 2-items in a single word

    b. DATM, INFTB
3. DATUM PROBLEMS - 
	For complicated datums (arrays, lists, sets , strings) we must have
	a way of making sure that the storage allocated for them lie in the
	same "page" as the "datum". This will cause all sorts of difficulties
	as their "addresses" are not conformable with other SAIL "addresses"
	And it looks as if each routine will have to be dynamically 
	interpreted with execution dependant on whether the arguments and
	results are datums of items (thus very large portions of the
	runtime system would have to be rewritten) (all the array munging
	code, string stuff, sets and lists etc.
3. Context mechanism - for datum. will have to have special descriptor code
	if a context item, will have to get space from different spot.

4. In general -how do you determine how to obtain list space (to avoid clanking)
	also don't want stuff on disk refering to core addresses etc.