File NEWS.PP

Directory of image this file is from
This file as a plain text file






	$NEWS; ANS
   [1]  IF -UNASSIGNED($NEWNEWS) THEN NEWNEWS
   [2]  ERASE($NEWS,$NEWNEWS)
   [3]  IF -UNASSIGNED(OLDPPL) THEN GOTO OP
   [4]  IF -UNASSIGNED(SPECIAL.FNS) THEN RETURN
   [5]  ""
   [6]  "PPL Version 53A - News"
   [7]  ""
   [8]  "     Version  53  of  PPL   contains   several   significant"
   [9]  "improvements  over  the earlier Harvard version (V51).  Most"
  [10]  "of the changes are compatible with existing programs, except"
  [11]  "for the introduction of standard mathematical precedence and"
  [12]  "a change to the division function.   The  remaining  changes"
  [13]  "involve the introduction of new system functions or language"
  [14]  "forms and are described in the new version of the PPL User's"
  [15]  "Manual.  They will also be outlined in a forthcoming summary"
  [16]  "of the changes since version 51.  If you have any  questions"
  [17]  "or problems, please contact:"
  [18]  ""
  [19]  "          Eric Roberts  @ HARV-10"
  [20]  "          Aiken Computation Lab 212"
  [21]  "          (617) 495-4147"
  [22]  "or"
  [23]  "          Ed Taft  @ PARC-MAXC (XEROX)"
  [24]  ""
  [25]  ""
  [26]  "     Version 51  is  available  on  Dectape  1749  (labelled"
  [27]  "PPL-10  V-52  C)  in  the  PPL  drawer.   The old First Data"
  [28]  "version is available on Dectape 1639 (FD PPL V51C)  also  in"
  [29]  "the PPL drawer."
  [30]  ""
  [31]  "Would  you  like  a  compatible   version   (with   standard"
  [32]  DEMAND.PROMPT _ "Iversonian precedence and old division)?  "
  [33]  ANS _ ?"; IF LENGTH(ANS) > 0 THEN IF (ANS[1]='y)! ANS[1]='Y THEN GOTO OPM
  [34]  ""
  [35]  DEMAND.PROMPT _ "Include functions IVERSONIAN and RENUMBER?  "
  [36]  ANS _ ?"; IF LENGTH(ANS) > 0 THEN IF (ANS[1]='y)! ANS[1]='Y THEN GOTO SPM
  [37]  GOTO EXIT
  [38]  OPM: ""
  [39]  "To  restore  the  compatible  version  without  using   this"
  [40]  "dialogue, type:"
  [41]  "        OLDPPL <- TRUE; READ(""LIB:NEWS"")"
  [42]  OP: IVERSONIAN; BINARY("/",IDIV)
  [43]  EXIT: ERASE($IVERSONIAN,$RENUMBER)
  [44]  ""
  [45]  RETURN
  [46]  SPM: ""
  [47]  "To start up V53 with IVERSONIAN and RENUMBER, without  using"
  [48]  "the news dialogue, type:"
  [49]  "        SPECIAL.FN <- TRUE; READ(""LIB:NEWS"")"
	$


	$NEWNEWS
   [1]  ""
   [2]  "Update 230 contains a few additional fixes, described below:"
   [3]  ""
   [4]  "    (1)	RESUME now works when suspended in WHILE form."
   [5]  ""
   [6]  "    (2)	To eliminate ambiguities arising in the last version,"
   [7]  "	the function ERASE and the system object predicates"
   [8]  "	no longer perform automatic STRING to symbol conversion."
   [9]  "	The EXECUTE function may be used to perform explicit"
  [10]  "	conversion."
  [11]  ""
  [12]  "    (3)	INSTANCE no longer causes illegal argument type messages"
  [13]  "	because of its left hand operand.  If the left operand"
  [14]  "	is not a user object, INSTANCE always returns FALSE."
  [15]  ""
  [16]  "    (4)	A simple BACKTRACE routine is now built-in which lists"
  [17]  "	each of the functions entered and the current line number,"
  [18]  "	proceeding outward from the current position."
  [19]  ""
	$


	$IVERSONIAN; I, K, OPS, OP
   [1]  OPS __ OPERATORS
   [2]  FOR I_1:LENGTH(OPS) DOTHRU ENDOP
   [3]  OP __ OPS[I]
   [4]  UNARY(OP, UNARY.DEF(OP), 20)
   [5]  ENDOP: BINARY(OP, BINARY.DEF(OP), 20, "RIGHT")
   [6]  UNARY("-->",UGOTO,10)
   [7]  BINARY("-->",CGOTO,10,"RIGHT")
   [8]  DEF.UNARY.PREC _ DEF.BINARY.PREC _ 20
   [9]  DEF.ASSOC _ "RIGHT"
	$


	$RENUMBER(N,[DS);OPS,UPREC,BPREC,SEQNO,LOW,NEXT,I,OP,DU,DB
   [1]  IF LENGTH(DS) > 1 THEN
		RETURN "IN FN RENUMBER: WRONG NUMBER OF ARGUMENTS"
   [2]  DS _ (IF LENGTH(DS) = 0 THEN N ELSE DS[1])
   [3]  IF NOT(N==INT) & NOT(DS==INT) THEN
		RETURN "IN FN RENUMBER: ARGUMENT NOT INTEGER"
   [4]  IF N<0 ! N>1000 THEN
		RETURN "IN FUNCTION RENUMBER: ARGUMENT OUT OF RANGE"
   [5]  OPS__OPERATORS; UPREC_BPREC__MAKE(TUPLE,LENGTH(OPS),0)
   [6]  DU_DEF.UNARY.PREC; DB_DEF.BINARY.PREC
   [7]  FOR I_1:LENGTH(OPS) DO UPREC[I]_UNARY.PREC(OPS[I]);
	BPREC[I]_BINARY.PREC(OPS[I])
   [8]  SEQNO_DS; LOW_0
   [9]  NEXT_99999
  [10]  FOR I_1:LENGTH(OPS) DO
	(IF UPREC[I]>LOW & UPREC[I]<NEXT THEN NEXT_UPREC[I]);
	IF BPREC[I]>LOW & BPREC[I]<NEXT THEN NEXT_BPREC[I]
  [11]  IF DU=LOW THEN DEF.UNARY.PREC_SEQNO-N
  [12]  IF DU>LOW & DU<NEXT THEN DEF.UNARY.PREC_SEQNO-IDIV(N,2)
  [13]  IF DB=LOW THEN DEF.BINARY.PREC_SEQNO-N
  [14]  IF DB>LOW & DB<NEXT THEN DEF.BINARY.PREC_SEQNO-IDIV(N,2)
  [15]  IF NEXT=99999 THEN RETURN
  [16]  FOR I_1:LENGTH(OPS) DO OP_OPS[I];
	(IF UPREC[I]=NEXT THEN UNARY(OP,UNARY.DEF(OP),SEQNO));
	IF BPREC[I]=NEXT THEN
		BINARY(OP,BINARY.DEF(OP),SEQNO,ASSOCIATIVITY(OP))
  [17]  SEQNO_SEQNO+N; LOW_NEXT; GOTO %9
	$

	NEWS



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search