1
0
mirror of synced 2026-01-21 10:32:13 +00:00
Interlisp.medley/run-medley
2020-11-15 19:22:14 -08:00

229 lines
4.6 KiB
Tcsh

#!/bin/tcsh -f
#
# Run Medley
#
# Syntax: run-medley [-nogreet][-xns][-noxns] [-geometry pixelgeometry]
# [-display xdisplay-device] [-screensize pixelgeometry]
# [-raw] [-t xtimeout][-prog executable-program]
# [-vmem savevmemfilename] |
# [-m memorylimit] [-kbd keyboardtype] [-key key]
# [sysoutfilename | -lfg | -lisp | -full |
# -{name of any in the sysouts} ]
#
# -xns means leave unix xns running
# -noxns means suppress Lisp xns.
# LDESRCESYSOUT
# LDESOURCESYSOUT SYSOUT full-file name you want to run
# LDEDESTSYSOUT SYSOUT name for destination of SAVEVM/LOGOUT
# LDEKBDTYPE
# type2
# type3
# type4
# jle
# as3000j
# LDEFILETIMEOUT
setenv HOSTNAME `hostname`
setenv OSVERSION `uname -r`
# Directory variables are accessible from Lisp via UNIX-GETENV
if (! $?MEDLEYDIR ) setenv MEDLEYDIR `pwd`
if (! -d $MEDLEYDIR/loadups ) then
echo MEDLEYDIR not found: "$MEDLEYDIR"
exit 1
endif
if (! $?MAIKODIR ) then
setenv MAIKODIR $MEDLEYDIR/../maiko
if (! -d "$MAIKODIR"/bin ) then
echo "MAIKODIR not found: $MAIKODIR"
exit 1
endif
endif
setenv LDEINIT "$MEDLEYDIR/initfiles/local-init"
set mem="-m 256" # Default, has to be set
#set geometry="-g 1060x790"
# MBA screensize
set geometry="-g 1440x900"
set screensize="-sc 1440x900"
setenv LDEKBDTYPE x
set ICONSPEC=" "
setenv LDEFILETIMEOUT 60
setenv TAKEXNSDOWN 0
setenv LDELISPXNS 0
#default is no lispxns
if ($#argv != 0) then
while ("$1" != "")
switch ($1)
case "-m":
set mem="-m $2"
shift
breaksw
case "-xlisp":
setenv LDESRCESYSOUT "$MEDLEYDIR/loadups/xlisp.sysout"
breaksw
case "-lisp":
setenv LDESRCESYSOUT "$MEDLEYDIR/loadups/lisp.sysout"
breaksw
case "-xfull35":
setenv LDESRCESYSOUT "$MEDLEYDIR/loadups/xfull35.sysout"
breaksw
case "-full":
setenv LDESRCESYSOUT "$MEDLEYDIR/loadups/full.sysout"
breaksw
case "-lfg":
case "-lfg35":
case "-xlfg35":
setenv LDESRCESYSOUT "$LFGPARSERDIR/release/lfg35.sysout"
set ICONSPEC = "-iconbitmap $LFGPARSERDIR/release/lfg.xbm -icontitle Xerox"
breaksw
case "-nogreet":
setenv LDEINIT ""
breaksw
case "-greet"
setenv LDEINIT "$2"
shift
breaksw
case "-xns":
setenv TAKEXNSDOWN 1
setenv LDELISPXNS 1
breaksw
case "-noxns":
setenv TAKEXNSDOWN 0
setenv LDELISPXNS 0
breaksw
case "-raw":
unsetenv DISPLAY
breaksw
case "-geometry":
set geometry="-g $2"
shift
breaksw
case "-screensize":
set screensize="-sc $2"
shift
breaksw
case "-display":
setenv DISPLAY $2
shift
breaksw
case "-t":
set xtimeout=$2
shift
breaksw
case "-prog":
set progparam=$2
shift
breaksw
case "-vmem":
setenv LDEDESTSYSOUT $2
shift
breaksw
case "-kbd":
setenv LDEKBDTYPE $2
shift
breaksw
default:
# anything else is a public sysout name
if (`expr index "$1" "[-]"` == 1) then
set name=`expr substr $1 2 999`
setenv LDESRCESYSOUT "$MEDLEYDIR/loadups/${name}.sysout"
else # not an option so must be a sysout name
0 setenv LDESRCESYSOUT $1
endif
breaksw
endsw
shift
end
else
# no options specified
endif
if ($?LDEDESTSYSOUT) then
if (-f /$HOSTNAME/$LOGNAME/lisp.virtualmem) then
setenv LDEDESTSYSOUT /$HOSTNAME/$LOGNAME/lisp.virtualmem
else if (-f ~/lisp.virtualmem) then
setenv LDEDESTSYSOUT ~/lisp.virtualmem
else if (-d /$HOSTNAME/$LOGNAME) then
setenv LDEDESTSYSOUT /$HOSTNAME/$LOGNAME/lisp.virtualmem
endif
endif
if (! $?LDESRCESYSOUT) then
setenv LDESRCESYSOUT $LDEDESTSYSOUT
endif
if (! $?LDEKBDTYPE) then
# switch (`/usr/bin/hostinfo keyboardtype`)
# endsw
endif
echo "keyboard type is " $LDEKBDTYPE
setenv INMEDLEY 1
echo "sysout is " $LDESRCESYSOUT
#set version = `medley-lisp-version $LDESRCESYSOUT`
set version = "35010"
if ($status) exit
if ($LDELISPXNS) then
set prog="ldeether"
else
set prog="lde"
echo "running without xns protocols"
endif
switch ("$version")
case "35000":
set version = "3.5"
breaksw
case "35010":
set version = "3.501"
breaksw
default:
set version = "3.5"
endsw
echo "using emulator version $version"
switch ("$version")
case "3.5":
case "3.501":
setenv PATH .:"$PATH"
pushd "$MAIKODIR"/bin
setenv PATH $MAIKODIR/`osversion`.`machinetype`:"$PATH"
popd
# if ${?DISPLAY} then # we are running under X
$prog $mem $geometry $screensize $ICONSPEC
# else $prog $mem
endif
breaksw
endsw
#
# Now we are done, so clean up after ourselves
#
cleanup:
if ${?DISPLAY} then
# do X cleanup
else
# reset
endif