.SPACING 1 .LEFT MARGIN 8 .RIGHT MARGIN 65 .NUMBER \\ .TITLE^F^O^C^A^L.^D^O^C VERSION 5^J(345)-1 [19-^OCT-76] ^STATUS OF ^F^O^C^A^L FOR ^D^E^C\S\Y\S\T\E\M-10. .SKIP 1 .INDENT -8 1.0#####^&^SUMMARY#OF#CHANGES\& .BREAK .SKIP 1 ^IAN ^PUGSLEY WOULD APPRECIATE YOUR COMMENTS ON ^F^O^C^A^L-10. ^PLEASE SEND COMMENTS, SUGGESTIONS OR PROBLEMS TO: .BREAK ^DIGITAL ^EQUIPMENT ^AUSTRALIA, 60 ^PARK STREET, ^SOUTH ^MELBOURNE, ^VICTORIA 3205 ^AUSTRALIA. .SKIP 1 .INDENT -8 2.0#####^&^EXTERNAL#CHANGES\&. .SKIP 1 .INDENT -8 3.0#####^&^INTERNAL#CHANGES.\& .SKIP 1 .INDENT -8 4.0#####^&^BUGS#FIXED.\& .SKIP 1 .INDENT -8 5.0#####^&^CHANGES#TO#INSTALLATION#INSTRUCTIONS.\& .SKIP 1 ^MONITOR SOFTWARE LEVEL IS NOW INDICATED BY THE PARAMETER "^M^O^N^I^T^O^R". ^M^O^N^I^T^O^R SHOULD BE SET TO ONE OF THE FOLLOWING VALUES OR TO A HIGHER VALUE. .SKIP 1 3.27#(^ASSUMES MONITOR DOES NOTHING FOR THE USER.) .BREAK 4.72#(^ASSUMES ^TELETYPE FILL CHARACTERS ARE PROVIDED BY THE MONITOR AND ^R^E^N^A^M^E DOES NOT REQUIRE A PRIOR ^C^L^O^S^E.) .BREAK 5.03#(^ASSUMES PROTECTION CAN BE SPECIFIED AT ^E^N^T^E^R TIME, AND THE ^C^O^R^E ^U^U^O SETS ^C(.^J^B^R^E^L)) .BREAK 5.04#(^ASSUMES ^D^E^V^C^H^R ^U^U^O CAN ACCEPT A CHANNEL NUMBER.) .BREAK 5.05#(^ASSUMES MONITOR CAN HANDLE ALL BRANDS OF ALT MODE.) .BREAK 5.06#(^ASSUMES ^K^I-10 FLOATING-POINT TRAP WORKS CORRECTLY.) .SKIP 1 ^F^O^C^A^L.^M^A^C WILL NOW ASSEMBLE TWO DIFFERENT .^R^E^L FILES, DEPENDING UPON WHETHER THE SYMBOL ^F^N^E^W IS DEFINED OR NOT. ^IF ^F^N^E^W IS NOT DEFINED, A .^R^E^L FILE IS GENERATED WHICH HAS THE FULL HIGH SEGMENT FOR THE .^S^H^R FILE, AND A NULL LOW SEGMENT. ^IF ^F^N^E^W IS DEFINED (INSERT "^E^X^T^E^R^N^A^L#^F^N^E^W" AT THE FRONT OF THE SOURCE) THEN A .^R^E^L FILE IS GENERATED WHICH MAY BE NAMED ^F^O^C^A^L^L.^R^E^L, AND PLACED ON ^S^Y^S: FOR LOADING WITH USER-PROGRAMS THAT NEED ^F^N^E^W. ^USERS THEN CREATE THEIR OWN ^F^N^E^W.^R^E^L FILE ON ^D^S^K, AND ISSUE "^E^X^E^C^U^T^E#^S^Y^S:^F^O^C^A^L^L,^D^S^K:^F^N^E^W" IN ORDER TO LOAD ^F^O^C^A^L WITH ^F^N^E^W AND START ^F^O^C^A^L. .SKIP 1 .TEST PAGE 12 .INDENT -8 6.0#####^&^KNOWN#BUGS.\& .SKIP 1 .INDENT -8 6.1#####^G^E^T^T^A^B IS A RESERVED WORD NOT BEGINNING WITH THE LETTER ^F. .SKIP 1 .TEST PAGE 15 .INDENT -8 7.0#####^&^MONITOR#SENSITIVITY.\& .SKIP 1 ^F^O^C^A^L-10 WILL RUN ON ALL MONITORS. ^HOWEVER, THE ASSEMBLY PARAMETER ^M^O^N^I^T^O^R SHOULD BE SET AS HIGH AS POSSIBLE TO OBTAIN THE MAXIMUM EFFICIENCY AND MINIMUM CORE SIZE (SEE INSTALLATION INSTRUCTIONS). .SKIP 1 ^THERE IS A MONITOR FEATURE WHICH CAUSES A SPURIOUS CHARACTER TO APPEAR BEFORE THE ASTERISK AFTER A ^R^E^E^N^T^E^R IN THOSE CASES WHERE TYPE-OUT WAS IN PROGRESS WHEN CONTROL-^C INTERRUPTION OCCURRED. ^THIS WILL NOT BE FIXED IN ^F^O^C^A^L. .SKIP 1 ^F^O^C^A^L-10 IS DIFFICULT TO USE ON 2741 TERMINALS. .SKIP 1 .SKIP 1 .INDENT -8 8.0#####^&^SUMMARY#OF#SUGGESTIONS#AND#IDEAS#FOR##CONTEMPLATION.\& .SKIP 1 .INDENT -8 8.1#####^L^I^B^R^A ^L^I^S^T (WITHOUT WILD-CARDS). .SKIP 1 .INDENT -8 8.2#####^COMPUTED ^G^O^T^O. .SKIP 1 .INDENT -8 8.3#####^F^O^C^A^L TO LOOK AT AND USE THE ^S^W^I^T^C^H.^I^N^I FILE. .SKIP 1 .INDENT -8 8.4#####^SUB-FILE DIRECTORIES. .SKIP 1 .INDENT -8 8.5#####^THE FORMAT DESCRIPTOR %^E\M\M.\N\N SHOULD BE ELIMINATED AND MADE TO DEPEND UPON %\M\M.\N\N ALONE. .SKIP 1 .INDENT -8 8.6#####^EXTENDED EXPONENT. .SKIP 1 .INDENT -8 8.7#####^BYE. .SKIP 1 .INDENT -8 8.8#####^D^O COMMAND TO ALLOW A VARIABLE NAME AS AN ARGUMENT. ^THE ONLY INCOMPATIBILITY WOULD BE THAT IF A VARIABLE NAME ^A^L^L OR ^A EXISTED, THEN ^D^O ^A^L^L AND ^D^O ^A WOULD HAVE A MEANING DIFFERENT FROM THE PRESENT ONE. ^THE INTENTION WOULD BE THAT IF THE VARIABLE NAME REFERRED TO A STRING, THEN THE STRING WOULD BE INTERPRETED AS A ^F^O^C^A^L COMMAND STRING. .SKIP 1 .INDENT -8 8.9#####^THE ^G^O LOGIC SHOULD BE IMPROVED STILL FURTHER. .SKIP 1 .INDENT -8 8.10####^TURN OF THE DEBUG SWITCH ON A ^Q^U^I^T COMMAND. .SKIP 1 .INDENT -8 8.11####^MAKE ^U^U^O^M^A^C (ON PAGE 10 OF ^F^O^C^A^L.^M^A^C) DEPEND ON ^S^P^E^E^D RATHER THAN ON ^P^D^P-6. .SKIP 1 .INDENT -8 8.12####^IN ORDER TO SPEED UP ^F^O^C^A^L, WE SHOULD TRY TO ELIMINATE SOME ^U^U^O CALLS. .SKIP 1 .INDENT -8 8.13####^INVENT A RE-SEQUENCING FEATURE SUCH AS ^M^O^D^I^F^Y 2.13=2.15 OR ^M^A^K^E#2.13=2.15. .PAGE .INDENT -8 9.0#####^&^DISTRIBUTION#NOTES.\& .SKIP 1 .LEFT MARGIN 8 .INDENT -8 17^JUL72#^RELEASED \V(127) (NOT SOURCES) TO ^JOHN ^NUGENT FOR ^K^I-10 TESTING. .INDENT -8 17^JUL72#^RELEASED \V(127) TO ^TOWNSVILLE. .INDENT -8 02^AUG72#^RELEASED \V(127) TO ^A^R^L, ^MELBOURNE. .INDENT -8 11^SEP72#^CREATED EDIT (131). .INDENT -8 28^OCT72#^SUNDRY CHANGES OCCURRED WHILE ^I WAS IN ^MAYNARD. ^FROM NOW ON PLEASE LOOK AT PAGE 1 OF ^F^O^C^A^L.^M^A^C FOR HISTORICAL NOTES. .INDENT -8 01^NOV72#^CREATED \V2. ^RELEASED \V2 TO ^HAKAN ^AGVALD IN ^SWEDEN. .INDENT -8 07^DEC72#^CREATED \V2^A. ^RELEASED \V2^A TO ^U^W^A AND ^U^Q. .INDENT -8 --^MAY73#^RELEASED V3 TO ^J^C^U AT ABOUT THIS DATE. .INDENT -8 --^JUL73#^RELEASED V3^A TO ^U^W^A AT ABOUT THIS DATE. .INDENT -8 --^AUG73#^RELEASED V3^A TO ^ALAN ^WILLIAMSON TO TAKE TO ^MAYNARD. .INDENT -8 26^OCT73#^RELEASED V3^A(216) TO ^DAVID ^ABEL (^J^C^U). .INDENT -8 13^NOV73#^RELEASED V3^B(234) TO ^U^W^A. .INDENT -8 20^NOV73#^RELEASED V3^B(234) TO ^U^Q. .INDENT -8 21^FEB74#^RELEASED V3^C(245) TO ^U^Q, ^J^C^U, ^A^R^L, ^STOCKEX, ^LA ^TROBE. .INDENT -8 18^MAR74#^RELEASED V3^C(245) TO ^U^W^A. .INDENT -8 14^JUN74#^RELEASED V3^D(252) TO ^FLOYD ^BENSON. .INDENT -8 21^NOV74#^RELEASED V4(272) TO ^CHARLES ^DENNY (.^R^E^L,.^R^N^D,.^R^N^O,.^F^C^L) .INDENT -8 21^NOV74#^RELEASED V4(272) TO ^BERNARD ^EIBEN (.^M^A^C,.^R^N^D,.^R^N^O,.^C^T^L) .INDENT -8 09^FEB75#^RELEASED V5(303) TO ^LA#^TROBE ^UNIVERSITY. .INDENT -8 06^MAR75#^RELEASED V5^A(306) TO ^LA#^TROBE ^UNIVERSITY. .INDENT -8 23^MAR75#^RELEASED V5^B(311) TO ^LA#^TROBE ^UNIVERSITY. .INDENT -8 24^FEB76#^RELEASED V5^J(331) TO ^LA#^TROBE ^UNIVERSITY. .INDENT -8 25^FEB76#^RELEASED V5^J(331) TO ^A^R^L. .INDENT -8 09^AUG76#^RELEASED V5^J(344) TO ^LA ^TROBE ^UNIVERSITY. .INDENT -8 12^AUG76#^RELEASED V5^J(344) TO ^DIGITAL ^EQUIPMENT ^NEW ^ZEALAND. .INDENT -8 11^SEP76#^RELEASED V5^J(344) TO ^AUSTRALIAN ^NATIONAL ^UNIVERSITY. .PAGE .INDENT -8 10.0####^&^SERIAL#LIST#OF#BUG#REPORTS.\& .SKIP 1 .INDENT -8 30^JAN74#^H. ^GREBLER: .BREAK 1. ^F^O^C^A^L TYPES OUT .001 IN AN ERRONEOUS MANNER FOR ^E-FORMAT. .BREAK 2. ^THE ^F-FORMAT SELECTOR (^T^Y^P^E %\N\N.\M\M) SHOULD ALSO BE TRAPPED AGAINST ERRONEOUS VALUES IN THE WAY THAT %^E\N\N.\M\M IS. ^THESE BUGS WERE FIXED IN EDIT _#241. .SKIP 1 .INDENT -8 #7^MAY74#^M. ^RAHILLY: .BREAK 1. ^ON INPUT OF A NUMBER WITH MANY PLACES OF DECIMALS, THE ERROR MESSAGE IS %^FLOATING OVERFLOW INSTEAD OF %^FLOATING UNDERFLOW. .BREAK 2. ^ALSO THE MESSAGE COMES OUT ONCE FOR EVERY EXCESS DIGIT, INSTEAD OF ONCE ONLY. .BREAK ^THESE PROBLEMS WERE FIXED IN EDIT _#257. .SKIP 1 .INDENT -8 1974####^H. ^DAVIES: .BREAK ^WE NEED A SLEEP FACILITY. .BREAK ^THIS WAS FIXED IN EDIT _#303. .SKIP 1 .INDENT -8 20^FEB75#^R.##^M\C^LEAN: .BREAK ^M^O^D^I^F^Y CAN PRODUCE A NULL LINE. .BREAK ^THIS WAS A DOCUMENTATION PROBLEM AND HAD BEEN REGARDED AS A "FEATURE"! ^THIS WAS FIXED IN EDIT _#313. .SKIP 1 .INDENT -8 20^FEB75#^R.##^M\C^LEAN: .BREAK ^A SWITCH IS REQUIRED ON THE ^L^I^B^R^A#^S^A^V^E COMMAND TO SUPPRESS SAVING THE SYMBOL TABLE. .BREAK ^NOTE THAT THIS IS POSSIBLE WITH A (SOMEWHAT CUMBERSOME) SEQUENCE OF COMMANDS SUCH AS .BREAK ^L#^S#^T^M^P;^E;^L#^S#^P^R^O^G;^L#^C#^T^M^P;^L#^S#^T^M^P;^L#^S#^T^M^P;^L#^D#^T^M^P .BREAK ^HOWEVER, THE PROBLEM WAS FIXED IN EDIT _#305 BY SUPPRESSING THE SYMBOL TABLE IF A LIST IS GIVEN. .SKIP 1 .INDENT -8 24^MAR75#^H.##^DAVIES: .BREAK ^ON AN ^A^S^K COMMAND, ^F^O^C^A^L TREATS A LEADING SPACE AS A DELIMITER IF SOME CHARACTER IS TYPED WITHOUT A LEADING SPACE, RUBBED OUT, AND REPLACED WITH A LEADING SPACE. .BREAK ^THIS WAS FIXED IN EDIT _#312. .PAGE .INDENT -8 11.0####^&^SERIAL#LIST#OF#CHANGES.\& .SKIP 1 .INDENT -8 2.6#####^THE FORMAT OF ERROR MESSAGES WAS CHANGED TO GIVE A TEXT INSTEAD OF A CODE NUMBER. .SKIP 1 .INDENT -8 2.8#####^P^D^P-6 FLOATING OVERFLOW AND FLOATING UNDERFLOW NOW 'TRAP' IN THE DOUBLE-PRECISION CASE. .SKIP 1 .INDENT -8 2.9#####^FLOATING-POINT UNDERFLOW AND OVERFLOW NOW PRINT ERROR MESSAGES. .SKIP 1 .INDENT -8 2.11####"DIVISION BY ZERO" ERROR MESSAGE NOW REPLACED BY "FLOATING-POINT OVERFLOW". .SKIP 1 .INDENT -8 2.12####"LOGARITHM OF ZERO REQUESTED" ERROR MESSAGE NOW REPLACED BY "FLOATING-POINT OVERFLOW". .SKIP 1 .INDENT -8 2.13####^INTEGER FORMAT IS NOW USED FOR %MM.00 SPECIFICATION. .SKIP 1 .INDENT -8 2.14####^NUMERIC TYPEOUT NOW HAS A FLOATING SIGN. .SKIP 1 (EDIT NUMBER 122 INCLUDED CHANGES UP TO THIS POINT.) .SKIP 1 .INDENT -8 _#123####^IF A FUNCTION CALL HAS NO PARENTHESES FOLLOWING IT, IT IS ASSUMED THAT THERE IS NO ARGUMENT. .SKIP 1 .INDENT -8 _#133####^ERROR MESSAGES NOW APPEAR IN UPPER AND LOWER CASE. .SKIP 1 .INDENT -8 _#142####^DEVICE "^T^T^Y" CAN NOW BE USED TO RELEASE A CHANNEL. .SKIP 1 .INDENT -8 3.4#####^THE ^F^T^T^R^A^P ASSEMBLY FEATURE-TEST SWITCH WAS REPLACED BY ^P^D^P-6 IN MOST PLACES. .SKIP 1 .INDENT -8 3.5#####^I HAVE NOW CHANGED THE ^I/^O ^U^U^O'S TO DO CHARACTER-INPUT, CHARACTER-OUTPUT, AND STRING-OUTPUT AS SEPARATE ^U^U^O'S, TO SPEED THINGS. .SKIP 1 (EDIT NUMBER 123 INCLUDED CHANGES UP TO THIS POINT.) .SKIP 1 .INDENT -8 2.16####^G^E^T^T^A^B FUNCTION ADDED (APPROX 30^AUG72). .SKIP 1 (EDIT NUMBER 132 INCLUDED CHANGES UP TO THIS POINT.) .SKIP 1 .INDENT -8 _#135####^A FAST ^G^E^T^L^N ROUTINE IS NOW IMPLEMENTED. .SKIP 1 .INDENT -8 _#137####^THE ^V^E^R^S^T^R MACRO IS USED TO SAVE CORE. .SKIP 1 .INDENT -8 4.3#####^THE '^A^S^K' COMMAND WITH ?? AROUND THE ARGUMENT NOW WORKS REASONABLY, AND DOES NOT ECHO THE INPUT. .SKIP 1 .INDENT -8 4.5#####^OLD MONITORS WITHOUT ^TELETYPE FILLING CHARACTERS CAN NOW HAVE FILL CHARACTERS INSERTED BY ^F^O^C^A^L IF ASSEMBLED FOR IT. .SKIP 1 .INDENT -8 4.6#####^EXPONENTIATION IS NOW DONE AS ACCURATELY AS POSSIBLE, TO MAKE THINGS LIKE 3**3-27 GIVE EXACTLY ZERO. .SKIP 1 .INDENT -8 4.7#####^U^U^OS CAN OPTIONALLY BE REPLACED BY ^P^U^S^H^J'S TO AVOID MONITOR OVERHEAD IN THE ^P^D^P-6. .SKIP 1 .INDENT -8 4.9#####^THE ^T^Y^P^N^U^M ROUTINE ^T^D^Z^A ^M^Q,^M^Q INSTRUCTION ASSUMED THAT INTEGERS WERE REPRESENTED IN ^A^C,^M^Q. ^THIS IS NOW MADE TO BE TRUE FOR ALL PRECISIONS. .SKIP 1 (EDIT NUMBER 120 INCLUDED FIXES UP TO HERE) .SKIP 1 .INDENT -8 4.12####^SINGLE-PRECISION ^F^A^T^N FUNCTION FOR VERY SMALL NEGATIVE ARGUMENT NOW WORKS CORRECTLY. .SKIP 1 .INDENT -8 4.14####^DOUBLE-PRECISION ^F^A^T^N ACCURACY IS NOW IMPROVED BY BETTER-OPTIMIZING THE REDUCTION FORMULAE. ^THERE IS STILL INACCURACY OF ABOUT ONE PART IN 3*10**13 AT AN ARGUMENT OF 0.27, AND AN INACCURACY OF ABOUT ONE IN 10**14 FOR ARGUMENT OF ONE, BUT ELSEWHERE IT HAS FULL ACCURACY. (APPROX 30^AUG72). .SKIP 1 .INDENT -8 4.16####^F^O^C^A^L NOW ALLOWS FOR MONITOR BUG NOT CLEARING CORE ON A ^R^U^N OR ^G^E^T. .SKIP 1 (EDIT NUMBER 122 INCLUDES FIXES UP TO THIS POINT.) .SKIP 1 .INDENT -8 4.21####^L^I^B^R^A ^S^A^V^E WITH A LIST OF MORE THAN ONE ELEMENT NOW WORKS. .SKIP 1 .INDENT -8 4.25####^P^D^P-6 ^D^F^S^B NOW DOES NOT CALL A ^U^U^O FROM WITHIN ITSELF. (IT USED TO GIVE THE WRONG ANSWERS FOR ZERO AC.) .SKIP 1 (EDIT NUMBER 132 INCLUDED CHANGES UP TO THIS POINT.) .SKIP 1 .INDENT -8 _#136####^WHEN A NEW ^I/^O CHANNEL IS INITTED, ANY CURRENT USE IS CORRECTLY SUSPENDED. .SKIP 1 .INDENT -8 _#140####^F^A^T^N NOW MAKES A BETTER GUESS AT NUMBER OF ITERATIONS. .SKIP 1 .INDENT -8 _#141####^WIDE FORMATS NOW PRINT MORE ACCURATELY AND CORRECTLY. .SKIP 1 .INDENT -8 _#156####^CHANGED ALL OCCURENCES OF "@NN" TO "0(NN)" WHERE NN IS AN ACCUMULATOR MNEMONIC, IN ^U^U^O/^O^P^D^E^F/^M^A^C^R^O ARGUMENTS. ^THIS SOLVES THE PROBLEM THAT THE ^M^A^C^R^O DEFINITION USES THE () AS ENCLOSING THE ^M^A^C^R^O ARGUMENTS, WHEREAS THE @ USES A 23-BIT FIELD. ^THE PROBLEM WAS THAT LARGE ARGUMENTS TO ^F^C^H^R CAUSED ILLEGAL MEMORY REFERENCES. .SKIP 2 .INDENT -8 _#157####^MODIFIED ^G^E^T^T^A^B ROUTINE TO CORRECTLY HANDLE FULL 36-BIT ANSWERS. ^THERE STILL EXISTS A LIMITATION HERE FOR SINGLE-PRECISION VERSIONS OF ^F^O^C^A^L, IN THAT THEY CANNOT RETAIN ALL 36 BITS IN A 27-BIT FRACTION FIELD. ^THAT PROBLEM WILL REMAIN A LIMITATION OF THE SINGLE-PRECISION VERSIONS, AND WILL NOT BE CHANGED. ^THE ORIGINAL BUG WAS THAT IF BIT 1 WAS ON ALONE WITH BIT 35, WE GOT ERRONEOUS FLOATING-POINT OVERFLOW. .SKIP 2 .INDENT -8 _#160####^THE ^D^F^S^B ^U^U^O ROUTINE WAS MOVED SLIGHTLY TO SAVE CORE. .SKIP 2 .INDENT -8 _#161####^BUG CORRECTED WHICH WOULD CAUSE A LOOP INSIDE ^F^O^C^A^L IF A PROGRAM CONTAINED A STATEMENT SUCH AS "^A^S^K +4", WHICH IS ILLEGAL. .SKIP 2 .INDENT -8 _#162####^CONTROL-^C INTERCEPT DURING ^A^S^K DATA HAS NOW BEEN REMOVED. ^IT IS NECESSARY TO USE CONTROL-^P NOW. .SKIP 2 .INDENT -8 _#163####^LEADING SPACES ARE NOW ALLOWED AS ^A^S^K DATA. ^PREVIOUSLY THEY HAD CAUSED THE ^A^S^K COMMAND TO ASSUME THAT THE ELEMENT OF DATA WAS ZERO, BECAUSE A SPACE TERMINATES DATA. ^IT NOW WILL TERMINATE DATA ONLY AFTER A NON-SPACE HAS BEEN TYPED. (^A "NON-SPACE" IS A CHARACTER WITH ^A^S^C^I^I VALUE MORE THAN 40 OCTAL.) .SKIP 2 .INDENT -8 _#164####^THE ^E^X^P.#ROUTINE WAS IMPROVED IN BOTH TIMING AND SIZE. ^THIS WAS DONE BY SEPARATING THE INPUT NUMBER NOT INTO A STRAIGHT INTEGER AND FRACTION, BUT INTO AN INTEGER WHICH WAS NEAREST TO THE NUMBER AND A FRACTION BETWEEN -.5 AND +.5. ^IN THIS WAY IT IS EASIER TO FIGURE OUT THE SIGN. ^F^O^C^A^L, IN CASE YOU MAY NOT KNOW IT, HAS NO COMPLEX ARITHMETIC, BUT IF IT IS ASKED TO TAKE A NEGATIVE NUMBER TO A FRACTIONAL POWER, IT WILL GIVE A SIGN WHICH IS THE SIGN OF THE REAL PART OF THE RESULT, AND A MAGNITUDE WHICH IS THE MAGNITUDE OF THE RESULT. ^THE IMAGINARY PART IS IGNORED. .SKIP 2 .INDENT -8 _#165####^THE ^G^E^T^N^M ROUTINE WAS IMPROVED IN BOTH SIZE AND TIMING. ^THIS WAS DONE BY CUTTING A FEW PIECES OF CODE AND MAKING THE ENTIRE ROUTINE ACCEPT A SIGN. ^THE EXPONENT IS HANDLED BY RE-ENTRANT USE OF THE ROUTINE. .SKIP 2 .INDENT -8 _#166####^D^F^L^O^A^T WAS CORRECTED SO THAT IT RETURNS NUMBERS AS SIGNED 36-BIT INTEGERS. ^P^F^L^O^A^T WILL NOW HANDLE NUMBERS OF EITHER SIGN. .SKIP 2 .INDENT -8 _#167####^ALL ODD FUNCTIONS,(THOSE FUNCTIONS WHICH CHANGE THEIR SIGN AND ONLY THEIR SIGN IF THE SIGN OF THE ARGUMENT IS CHANGED) NOW CALL A NEW ROUTINE "^O^D^D^F^N^C" WHICH HANDLES THESE CASES MORE ECONOMICALLY. .SKIP 2 .INDENT -8 _#170####^THE ^F^O^C^A^L FUNCTION HAS BEEN EXPANDED NOW SO THAT IT WILL TAKE A SINGLE ARGUMENT GREATER THAN OR EQUAL TO 23 AND RETURN A SIGNED 36-BIT NUMBER WHICH IS THE NUMBER CONTAINED IN THAT ADDRESS OF ^F^O^C^A^L'S LOW SEGMENT. ^IT IS INTENDED TO BE USED BY PROGRAMS WISHING TO DETERMINE THE AMOUNT OF CORE WHICH HAS BEEN USED, CHANNELS IN USE, BUFFER SIZES ETC. .SKIP 1 .INDENT -8 [1-^MAY-73] .SKIP 2 .INDENT -8 _#171####^SOME ITEMS IN ^F^O^C^A^L'S DATA-BASE (IN THE LOW SEGMENT) WERE MOVED AROUND, SO THAT THE ^F^O^C^A^L FUNCTION COULD ACCESS MOST OF THE ITEMS WITHOUT TOO MANY PROBLEMS SUCH AS THE PRECISION OF ^F^O^C^A^L AND THE TYPE OF PROCESSOR RUNNING. .SKIP 2 .INDENT -8 _#172####^THE OPERATIONS ^F^S^B^R^I AND ^F^M^P^R^I WERE DEFINED FOR THE ^P^D^P-6 VERSION IN SUCH A WAY THAT THEY COULD BE USED IN THE CODE WITHOUT SPECIAL CASES HAVING TO BE WRITTEN TO HANDLE THE ^P^D^P-6. .SKIP 2 .INDENT -8 _#173####^THE APPENDING OF THE WORD " \E\R\R\O\R" TO ERROR MESSAGES WAS MADE MORE ECONOMICAL BY USING A FLAG IN THE ERROR WORD (^Y) AND PUTTING IT IN SPECIALLY EACH TIME. .SKIP 2 .INDENT -8 _#174####^BECAUSE THE ^K^I-10 HAS PAGES OF ONLY HALF THE SIZE OF THE ^P^D^P-6 AND ^K^A-10, THE CORE-EXPANSION CODING WAS MODIFIED ACCORDING TO THE RECOMMENDED METHOD (SEE ^SOFTWARE ^NOTEBOOKS). .SKIP 2 .INDENT -8 _#175####^THE ^G^E^T^N^M ROUTINE WAS SLIGHTLY MODIFIED TO SAVE CORE. .SKIP 2 .INDENT -8 _#176####^THE ERROR MESSAGE PERTAINING TO THE ATTEMPTS TO USE A CHANNEL WHICH WAS NOT INITTED OR WHICH WAS INITTED IN A WRONG DIRECTION WAS ALTERED, SO THAT IT NOW HAS ITS OWN SPECIAL MESSAGE "^D\E\V\I\C\E#\N\O\T#\C\O\R\R\E\C\T\L\Y#^I^N^I^T\T\E\D" .SKIP 2 .INDENT -8 _#177####^THE ERROR MESSAGES FOR INPUT AND OUTPUT DEVICE ERRORS WERE SLIGHTLY MODIFIED TO SAVE CORE. .SKIP 1 .INDENT -8 [14-^MAY-73] .SKIP 2 .INDENT -8 _#200####^A CORRECTION WAS MADE SO THAT ^L^I^B^R^A \D\E\L\E\T\E ETC.#WOULD WORK PROPERLY. ^UNTIL NOW ^F^O^C^A^L WOULD NOT ACCEPT LOWER CASE MODIFIERS FOR ^L^I^B^R^A. .SKIP 2 .INDENT -8 _#201####^THERE WAS A PROBLEM WITH UNSUBSCRIPTED VARIABLE NAMES LONGER THAN THREE CHARACTERS. ^THE ROUTINE TO HANDLE SUBSCRIPTS DID NOT CLEAR THE RIGHT HALF OF THE NAME FIELD IF THERE WAS NO SUBSCRIPT, SO THE EXTRA CHARACTERS WERE INTERPRETED AS A KIND OF SUBSCRIPT. ^THIS WAS FIXED. .SKIP 2 .INDENT -8 _#202####^SINGLE PRECISION ^F^O^C^A^L DID NOT WORK IN THE AREA OF DATA ENTRY AND NUMBER INPUT, BECAUSE OF THE ERRONEOUS CODING OF THE ^P^F^L^O^A^T ROUTINE. ^THIS HAS NOW BEEN FIXED. .SKIP 2 .INDENT -8 [17-^MAY-73] .SKIP 2 .INDENT -8 _#203####^SINCE THE DOUBLE-PRECISION COMPARE ^U^U^O WAS ONLY USED AT ONE PLACE IN THE PROGRAM, IT WAS REPLACED BY IN-LINE CODE. ^THIS SAVED SPACE AND TIME. .SKIP 2 .INDENT -8 _#204####^THE ^P^D^P-6 ROUTINES FOR DOUBLE PRECISION DO NOT WORK. ^IT IS THOUGHT THAT THIS MAY BE BECAUSE THE CARRY-ONE FLAG IS NOT SET IN THE SAME WAY BY THE 166 PROCESSOR AS IT IS FOR THE ^P^D^P-10 IN THE CASE OF THE ^M^O^V^N^S INSTRUCTION. ^HENCE THE ^N^E^G^A^N^S ROUTINE WAS MODIFIED TO ELIMINATE THIS INSTRUCTION. .SKIP 2 .INDENT -8 _#205####^ONE WORD WAS SAVED IN THE ^R^E^T^U^R^N INSTRUCTION PROCESSOR, BY ALLOWING THE INTERPRETER TO REMAIN ACTIVE DURING THE REMAINDER OF THE LINE. ^THIS SHOULD HAVE NO EFFECT EXCEPT TO DO A BIT OF TYPING IF THE TRACE WAS ACTIVE. .BREAK ^ONE WORD WAS SAVED AT ^F^I^X: BY USING A ^M^O^V^M INSTEAD OF ^M^O^V^E AND ^T^S^C. .BREAK ^ONE WORD WAS SAVED IN THE ^I^N^C^H^R ^U^U^O PROCESSOR. ^THIS WAS DONE BY USING ^J^R^S^TS INSTEAD OF ^P^U^S^H^JS AND ^P^O^P^JS. .SKIP 2 .INDENT -8 [28-^MAY-73] .SKIP 2 .INDENT -8 _#206####^A CONVENTION WAS ADOPTED INTERNALLY THAT THE SIGN BIT OF THE LOW ORDER WORD (IN DOUBLE PRECISION) OF FLOATING-POINT NUMBERS SHOULD BE ZERO. ^HENCE ALL DATA ITEMS IN THE SOURCE PROGRAM WERE ADJUSTED IF REQUIRED. .SKIP 2 .INDENT -8 _#207####^THE DOUBLE-PRECISION ^P^D^P-6 ^N^E^G^A^N^S ROUTINE WAS ADJUSTED TO THE ABOVE CONVENTION FOR BIT 0 OF THE LOW ORDER WORD. .SKIP 2 .INDENT -8 _#210####^THERE WAS A BUG RELATING TO INITIALIZATION OF AN ^I/^O CHANNEL WHICH CAUSED CORE-EXPANSION TO OCCUR UNDER THE MONITOR'S CONTROL RATHER THAN UNDER ^F^O^C^A^L'S. ^THIS SOMETIMES CAUSED LOSS OF SYMBOLS, UNCONTROLLED LOOPING ETC. ^THE FIX WAS TO CORRECT THE ^F^I^T: ROUTINE TO USE AN INTERNAL CORE-FLAG RATHER THAN .^J^B^R^E^L WHICH IS SET BY THE MONITOR. .SKIP 2 .INDENT -8 [30-^MAY-73] .SKIP 2 .INDENT -8 _#211####^THERE WAS A BUG IN THE CORE-EXPANSION CODE (AT ^F^I^T+6) WHICH CAUSED BUFFERS TO BE SET UP INCORRECTLY. .SKIP 2 .INDENT -8 \V3^A#####^RELEASED 1-^JUN-73. .SKIP 2 .INDENT -8 _#211####^TO ALLOW ^C.^A.^I. PROGRAMS TO RUN IN ^F^O^C^A^L, IT WAS DECIDED TO ALLOW ACTIVE LINES TO BE ELIGIBLE FOR DELETION OR MODIFICATION. ^THIS WAS DONE BY CHANGING THE INTERNAL CHECKING ROUTINE SO IT PERFORMED HARMLESSLY WHEN A USER ATTEMPTED TO DELETE A LINE WHICH HE WAS EITHER EXECUTING OR USING AS A CALL TO THE LINE BEING EXECUTED (FOR EXAMPLE WITH A ^D^O.) .SKIP 2 .INDENT -8 _#212####^ONE WORD OF CODE WAS SAVED AT LOCATION ^N^E^G^A^N^S. .SKIP 2 .INDENT -8 _#213####^THE FACTOR FOR CONVERTING SINE AND COSINE IN DEGREES, NAMELY ^P^I/180, WAS SLIGHTLY INACCURATE. ^THE MULTIPLE-PRECISION PACKAGE WAS USED TO COMPUTE THIS FACTOR MORE ACCURATELY, AND THE NEW VALUE IS NOW IN PLACE IN ^F^O^C^A^L. .SKIP 2 .INDENT -8 _#214####^THE METHOD OF LOADING THE ^P^D^P-6 VERSION HAS BEEN CHANGED, AND THE INTERNAL ARRANGEMENT OF LOW AND HIGH SEGMENTS HAS BEEN ALTERED. ^IT IS NOW NO LONGER NECESSARY TO USE THE /^H SWITCH TO ^L^O^A^D^E^R, SINCE THE ASSEMBLY SWITCH ENSURES CORRECT LOADING. ^HOWEVER, IT IS IMPORTANT THAT THE LOW SEGMENT OF ^F^O^C^A^L IS LOADED FIRST, BEFORE ^D^D^T OR ^F^N^E^W, SINCE THE "^F^O^C^A^L" FUNCTION DEPENDS ON THIS. .SKIP 2 .INDENT -8 _#215####^THE ALGORITHM FOR LOGARITHM IN DOUBLE-PRECISION WAS SLIGHTLY MODIFIED. .SKIP 2 .INDENT -8 _#216####^A CONSTANT USED IN THE DOUBLE-PRECISION EXPONENTIAL WAS ADJUSTED IN ACCURACY. ^THE CONSTANT, EIGHTTH ROOT OF 2, IS USED IN COMPUTING FRACTIONAL POWERS. .SKIP 2 .INDENT -8 _#217####^THERE WAS A PROBLEM WITH ^R^E^T^U^R^N STATEMENTS FROM A LINE NUMBER GREATER THAN 31.99. ^THIS ORIGINATED BACK IN THE DAYS WHEN ^F^O^C^A^L ONLY ALLOWED LINE NUMBERS UP TO 31.99. ^THE PROBLEM IS NOW FIXED. .SKIP 1 .INDENT -8 .SKIP 2 .INDENT -8 _#220####^THE ^N^E^W^L^I^N ROUTINE WAS CORRECTED SO THAT A LINE COULD OVERWRITE ITSELF. ^THIS IS A SIDE-EFFECT OF THE EDIT 211, WHICH ALLOWED DELETIONS OF ACTIVE LINES. ^OF COURSE A LINE OVERWRITING ITSELF DOES NO GOOD, SINCE THE RULES REQUIRE THAT IT MERELY ERASE ITSELF, BUT AT LEAST IT NOW DOES NO HARM. .SKIP 2 .INDENT -8 _#221####^THE ^P^D^P-6 DOUBLE FLOATING DIVIDE ROUTINE HAD AN ERROR IN THAT THE LOW ORDER WORD WAS WRONG HALF THE TIME. ^IT IS NECESSARY TO CHECK FOR OVERFLOW FROM THE LOW ORDER WORD, AND THE FINAL ^J^U^M^P^G^E/^S^O^J^A WAS REQUIRED. .SKIP 1 .INDENT -8 _#222####^THE REDUCTION FORMULA FOR DOUBLE-PRECISION LOGARITHM WAS CHANGED SO THAT IT USED FLOATING-POINT DIVISION INSTEAD OF FIXED-POINT DIVISION. ^THIS IS USEFUL WHEN RUNNING ON A ^K^I-10, BECAUSE IT IS CONSIDERABLY FASTER. ^IT ALSO SAVES A LITTLE SPACE IN CORE. .SKIP 1 .INDENT -8 _#223####^IT WAS DISCOVERED, AFTER WRITING THE ^F^O^C^A^L MULTIPLE-PRECISION PACKAGE, THAT SOME OF THE INTERNAL DOUBLE-PRECISION CONSTANTS WERE NOT FULLY ACCURATE. ^THIS DEFICIENCY WAS REMEDIED BY THIS EDIT. .SKIP 1 .INDENT -8 _#224####^BECAUSE OF THE CHANGE FROM ^L^O^A^D^E^R TO ^L^I^N^K-10, ^I HAD TO MODIFY THE INSTRUCTIONS FOR LOADING ^F^O^C^A^L. ^I TOOK THIS OPPORTUNITY TO CORRECT A MISUNDERSTANDING SOME PEOPLE HAD CONCERNING THE ^P^D^P-6 VERSION, WHICH HAS TO BE LOADED FIRST AND HAS TO BE LOADED IN ONE SEGMENT. ^THIS EDIT FORCES THE ASSEMBLER TO CREATE A ONE-SEGMENT PROGRAM, REGARDLESS OF THE COMMANDS USED TO LOAD IT. ^OF COURSE THE LOW SEGMENT OF ^F^O^C^A^L STILL HAS TO BE LOADED FIRST, IN ORDER THAT THE ^F^O^C^A^L FUNCTION RETAIN ITS DEFINED SPECIFICATION. .SKIP 1 .INDENT -8 _#225####^I HAVE NOW REMOVED THE REQUIREMENT THAT THE ^P^D^P-6 VERSION BE RUN WITH THE PARAMETER ^M^O^N^I^T^O^R=3.27. ^THIS IS BECAUSE THE RAISON D'ETRE OF THE ^P^D^P-6 VERSION HAS NOW CHANGED. ^IT EXISTS NOW NOT BECAUSE SOMEONE MIGHT HAVE A ^P^D^P-6, BUT RATHER THAT THEY MAY HAVE A ^K^A-10 AND WISH TO RETAIN 62-BIT PRECISION. ^IT WON'T BE AS GOOD AS THE ^K^I-10, WHICH COMPUTES THREE WORDS AND ROUNDS THE LOW ORDER BIT, BUT IT SHOULD GIVE BETTER PRECISION THAN THE ^K^A-10 VERSION, AT THE COST OF CPU-TIME. .SKIP 1 .INDENT -8 _#226####^USERS OF THE ^F^C^O^S^D AND ^F^S^I^N^D FUNCTIONS IN ^F^O^C^A^L WILL OFTEN USE ARGUMENTS WHICH ARE INTEGERS, AND OFTEN MULTIPLES OR SUBMULTIPLES OF 90 DEGREES. ^FOR THIS REASON IT IS DESIRABLE TO MAKE A SPECIAL COMPUTATION DIRECTLY FROM THE ARGUMENT TO THE FRACTION OF QUADRANT, RATHER THAN FIRST CONVERTING IT INTO RADIANS AND THEN INTO QUADRANTS. ^THE ROUNDING ERRORS SAVED WILL USUALLY GIVE MUCH BETTER RESULTS, SPECIALLY WHEN COMPUTING LARGE ANGLES. .SKIP 1 .INDENT -8 _#227####^THERE WAS A PROBLEM IN THAT ^F^O^C^A^L WENT INTO A LOOP IF YOU HAD ^G^O^T^O FOLLOWED BY DOUBLE PERIODS. ^THIS HAS BEEN CORRECTED BY A RE-WRITTEN ^G^E^T^L^N ROUTINE. .SKIP 1 .INDENT -8 _#230####^THE MONITOR MANUAL SAYS (AND THE ^MAYNARD PROGRAMMERS REFUSE TO DENY) THAT A ^D^E^CTAPE ^R^E^N^A^M^E MUST BE PRECEDED BY A ^C^L^O^S^E. ^THIS IS IN CONTRAST TO A DISK ^R^E^N^A^M^E WHICH MUST NOT BE PRECEDED BY A ^C^L^O^S^E (IN CASE SOME OTHER USER THEN GRABS THE FILE IN BETWEEN), AND SO ^F^O^C^A^L HAS BEEN CHANGED TO MAKE A SPECIAL CASE FOR ^D^E^CTAPE ^R^E^N^A^M^E. .SKIP 1 .INDENT -8 _#231####^THE ^P^D^P-6 DOUBLE-FLOATING-DIVIDE ROUTINE WAS SLIGHTLY MODIFIED IN THE HOPE THAT ANOTHER HALF BIT OF PRECISION COULD BE SQUEEZED OUT OF IT. ^IT HAS NOT BEEN PROVED THAT THE PRECISION IS IN FACT IMPROVED, BUT AT LEAST IT IS NOT MADE WORSE. ^PERHAPS SOME KIND NUMERICAL ANALYST COULD PROVE IT ONE WAY OR THE OTHER FOR ME. .SKIP 1 .INDENT -8 _#232####^THE ^S^Q^R^T, ^A^T^A^N, ^A^B^S, ^S^I^G^N FUNCTIONS WERE REMOVED FROM ^F^O^C^A^L-10. ^THIS IS BECAUSE SMALL COMPUTER ^F^O^C^A^LS MAY PERHAPS BE USING THESE NAMES AS VARIABLES, AND IT IS THEREFORE BAD TO HAVE THEM AS RESERVED WORDS IN ^F^O^C^A^L-10. ^THE POLICY HAS BEEN ADOPTED FOR ^F^O^C^A^L-10 THAT ALL RESERVED WORDS SHALL COMMENCE WITH THE LETTER "^F". ^TO THIS END, THE FUNCTIONS ^F^S^I^N^D, ^F^C^O^S^D AND ^F^L^O^G10 HAVE BEEN ADDED TO THE FUNCTION TABLE IN ANTICIPATION OF THE DAY WHEN ^S^I^N^D, ^C^O^S^D AND ^L^O^G10 WILL BE DELETED. .SKIP 1 .INDENT -8 _#233####^THE MULTI-FILE CHANNEL NUMBERS ARE NOW DECIMAL. ^ALSO A BUG WAS FIXED IN THAT ^A^S^K /0, ^T^Y^P^E /0 AND ^O^P^E^R^A^T^E#/0 NOW WORK AS PER THE MANUAL. .SKIP 1 .INDENT -8 _#234####^A BUG WAS CORRECTED WHICH PREVIOUSLY CAUSED A PROBLEM DURING FLOATING POINT TRAPS WHICH TYPED ERROR MESSAGES. ^ACCUMULATOR ^P^C IS NOW SAVED IN THE TRAP HANDLER. .SKIP 1 .INDENT -8 \V3^B#####^RELEASED 14-^NOV-73. .SKIP 1 .INDENT -8 _#235####^THE ^P^D^P-6 DOUBLE-FLOATING-MULTIPLY ROUTINE HAD A PROBLEM IN THAT MULTIPLICATION BY 2 CAUSED A ROUNDING ERROR. ^THIS WAS BECAUSE OF A LACK OF INTERNAL PRECISION, AND THE PROBLEM HAS NOW BEEN CORRECTED. (21-^DEC-73) .SKIP 1 .INDENT -8 _#236####^THE ^TELETYPE INPUT ROUTINE (USED FOR INITIAL COMMAND AND FOR ^A^S^K DATA) IS NOW GATHERED ON THE STACK INSTEAD OF INTO FREE CORE. ^IT SOLVES THE LONG-STANDING PROBLEM THAT IF FREE CORE IS UNAVAILABLE YOU COULDN'T TYPE A COMMAND, EVEN AN ^E^R^A^S^E COMMAND. (21-^DEC-73) .SKIP 1 .INDENT -8 _#237####^I HAVE ATTEMPTED TO IMPROVE THE CAPABILITY OF THE MONITOR ^S^A^V^E COMMAND, SO THAT YOU WILL BE ABLE TO STOP ^F^O^C^A^L AT ANY TIME AND ^S^A^V^E IT. (9-^JAN-74) .SKIP 1 .INDENT -8 _#240####^THERE WAS A PROBLEM IN THAT THE COMMAND ^T^Y^P^E %^E\M\M.\N\N /\C\H\N FAILED BECAUSE ACCUMULATOR ^T2 WAS NOT PRESERVED, AND BECAUSE THERE WAS NO COMMA BETWEEN THE ARGUMENTS, THIS WAS REQUIRED. ^THE PROBLEM IS NOW FIXED. (15-^JAN-74) .SKIP 1 .INDENT -8 _#241####^TWO PROBLEMS WERE REPORTED RELATING TO TYPE-OUT IN ^E-FORMAT. ^THE FIRST WAS THAT ^T^Y^P^E %10.5 SHOULD REALLY GIVE A WARNING BECAUSE IT IS CONFUSING FOR THE USER TO HAVE IT AUTOMATICALLY REVERT TO ^E-FORMAT. ^THE ^F^O^C^A^L SPECIFICATIONS WERE CHANGED TO GIVE A WARNING ONLY AND IGNORE THE REQUEST UNLESS THE USER GAVE %0 OR %. ^THE SECOND PROBLEM WAS THAT ^T^Y^P^E %,.001 GAVE 00.00000^E-6 BECAUSE THE CODE AT ^F^I^X: DID NOT WORK CORRECTLY FOR DOUBLE PRECISION NEGATIVE NUMBERS CLOSE TO A POWER OF 2. ^THIS IS FIXED NOW. ^THIS CORRECTS PATCH _#205. (31-^JAN-74) .SKIP 1 .INDENT -8 _#242####^THE ^E^V^A^L ROUTINE WAS MODIFIED TO RUN FASTER IF NO UNARY SIGN PRECEDED THE EXPRESSION. ^ALSO ** FOR EXPONENTIATION NOW WORKS IF A SPACE SEPARATES THE **'S. (1-^FEB-74) .SKIP 1 .INDENT -8 _#243####^F^O^C^A^L WILL NOW TRAP EXPRESSIONS WHICH ILLEGALLY TERMINATE WITH AN OPERATOR SUCH AS 5+6* OR 5*6+. (1-^FEB-74) .SKIP 1 .INDENT -8 _#244####^CODE IS NOW INCLUDED IN THE SOURCE OF ^F^O^C^A^L TO ALLOW THE CONSTRUCTION "^T^Y^P^E $$" TO GIVE THE SYMBOL TABLE WITH OCTAL COMMENTED INTO IT. ^THIS IS VERY HANDY FOR DEBUGGING LOGICAL OPERATIONS IN ^F^O^C^A^L PROGRAMS. ^THIS CODE IS CONDITIONAL UPON VERSION NUMBER. ^IT WILL BE IN VERSION 4. (4-^FEB-74) .SKIP 1 .INDENT -8 _#245####^THE TYPE-OUT OF ZERO WAS INCORRECTLY OUTPUT AS #.0000 INSTEAD OF 0.0000 FOR ^E-FORMAT OR ^F-FORMAT WHICH ALLOWED SUFFICIENT WIDTH. ^IT IS FELT THAT THE SPECIFICATION IS INDEED CORRECT, AND ^F^O^C^A^L HAS BEEN MODIFIED TO CONFORM. (13-^FEB-74) .SKIP 1 .INDENT -8 \V3^C#####^RELEASED 14-^FEB-74. .SKIP 1 .INDENT -8 _#246####^THERE WAS SOME INACCURACY WITH THE TYPE-OUT OF NUMBERS, AND IT WAS DISCOVERED THAT THIS WAS DUE MOSTLY TO THE FACT THAT ^I CONVERTED ALL NUMBERS TO A LOGARITHM AND BACK AGAIN. ^THIS DOUBLE-CONVERSION WAS REMOVED. ^ALSO THE CODE IN THIS AREA WAS CLEANED UP. ^ALSO THE ^R^F^I^X ROUTINE WAS SLIGHTLY IMPROVED SO THAT THE INSTRUCTION USED FOR ROUNDING DID EXACTLY ADD 0.5 INSTEAD OF ADDING 0.5 AND THEN ROUNDING AGAIN. (18-^MAR-74) .SKIP 1 .INDENT -8 _#247####^SOME SPECIFIC NUMBERS WERE TYPED OUT INCORRECTLY WHEN THE FIELD WIDTH FOR THE TYPE-OUT WAS GREATER OR EQUAL TO THE ACCURACY OF THE COMPUTER. ^THE ERROR WAS MANIFEST AS AN OVERFLOW ON TO THE SIGN FIELD INSTEAD OF CHANGING THE EXPONENT FIELD TO ONE HIGHER AND SHIFTING THE PRINTOUT ONE PLACE TO THE RIGHT. ^THE CORRECTION IS TO ADD A SLIGHT WEIGHT TO THE LOG10 SO THAT ANY ERRORS IN THE LOG10 WILL BE ON THE HIGH SIDE, NEVER ON THE LOW SIDE. ^THIS DOES HAVE THE SLIGHT DISADVANTAGE THAT A FEW ^E-FORMAT NUMBERS WILL NOW TYPE AS 0.NNNN^E+MM, BUT THIS SHOULDN'T WORRY ANYBODY. (8-^APR-74) .SKIP 1 .INDENT -8 _#250####^THE DEFAULT ^E-FORMAT FIELD WIDTH HAS NOW BEEN MODIFIED TO %^E5.04, SO THAT IN MOST SIMPLE CASES THE TOTAL FIELD SIZE WILL INITIALLY BE THE SAME AS FOR ^F-FORMAT. ^IN THE SINGLE-PRECISION CASES THIS WILL ALSO MINIMIZE PROBLEMS OF LACK OF ACCURACY SHOWING THROUGH. (8-^APR-74) .SKIP 1 .INDENT -8 _#251####^A LARGE SYMBOL-TABLE WITH MOST OF THE SYMBOLS HAVING A ZERO INDEX LOOKS A BIT MESSY BECAUSE OF ALL THE (0)'S. ^AT THE EXPENSE OF ONE ADDITIONAL WORD OF CORE ^I HAVE TESTED FOR THIS SPECIAL CASE, AND SO NOW THOSE SYMBOLS WITH A ZERO INDEX WILL HAVE THE INDEX-PRINTING SUPPRESSED. ^ALSO THE NUMBER OF SPACES AFTER THE "^S" AND BEFORE THE SYMBOL IS REDUCED TO ONE. (16-^APR-74) .SKIP 1 .INDENT -8 _#252####^THE ^M^O^D^I^F^Y COMMAND USED TO BE INCAPABLE OF DELETING A QUESTION MARK IN COLUMN 1 OF THE DATA LINE. ^IN FACT IT CAUSED THE DEBUG FLAG TO GET SWITCHED ON. ^THIS WAS BECAUSE WE FLIPPED THE "^I^N^T^E^R^P" FLAG TOO LATE, AND THE QUESTION MARK WAS TAKEN AS PROGRAM RATHER THAN AS DATA. ^THE FIX IS JUST TO MOVE THE ^T^L^Z INSTRUCTION FROM ^M^O^D:+6 UP TWO LINES TO JUST BEFORE THE ^J^S^P ^P^C,^N^E^W^T^X^T. (16-^APR-74) .SKIP 1 .INDENT -8 _#253####^THE NAMES OF THE MONTHS AS THEY ARE PRINTED OUT AT THE HEADING OF THE LISTING PRODUCED BY ^W^R^I^T^E OR ^L^I^B^R^A ^S^A^V^E ARE NOW CHANGED TO CONSIST OF ONE UPPER CASE LETTER AND TWO LOWER CASE LETTERS INSTEAD OF THREE UPPER CASE LETTERS. (26-^JUN-74) .SKIP 1 .INDENT -8 _#254####^THE VIRTUAL-MEMORY MONITOR NO LONGER USES THE CONTENTS OF .^J^B^D^D^T IN THE JOB DATA AREA TO INDICATE THE AMOUNT OF CORE TO BE SAVED BY A MONITOR ^S^A^V^E COMMAND. ^INSTEAD, THE LEFT HALF OF .^J^B^C^O^R AND .^J^B^S^A ARE USED. ^F^O^C^A^L WAS CHANGED TO REFLECT THE NEW SPECIFICATIONS. (26-^JUN-74) .SKIP 1 .INDENT -8 \V4######^WITH THE ADVENT OF VERSION 4, THE OBSOLETE COMMANDS BEGINNING WITH BACKARROW OR EQUALS DISAPPEAR, AS DO THE OBSOLETE COMMANDS WITH A FILE-SPECIFIER TO BEGIN FOLLOWED BY EQUALS OR BACKARROW. ^ALSO EDIT 244 BECOMES EFFECTIVE, TO ALLOW SYMBOL-TABLE IN OCTAL. ^THE ^L^I^B^R^A ^C^A^L^L IMPROVEMENTS SCHEDULED FOR VERSION 4 WERE DEFERRED TO VERSION 5 BECAUSE THEY DO NOT YET WORK, AND THEY TAKE ADDITIONAL CORE STORAGE. (26-^JUN-74) .SKIP 1 .INDENT -8 _#255####^L^I^B^R^A#^S^A^V^E COMMAND NOW SAVES THE SYMBOL TABLE AS WELL AS THE PROGRAM LINES. ^THIS IS MORE HELPFUL TO NOVICES AND TO PEOPLE WHO WANT TO SAVE PROGRAMS PART-WAY THROUGH EXECUTION. ^IT WILL OF COURSE USE MORE DISK SPACE. (6-^JUL-74) .SKIP 1 .INDENT -8 _#256####^THE SPEED OF ^L^I^B^R^A#^C^A^L^L HAS BEEN IMPROVED, BY SLIGHTLY INCREASING THE SIZE OF THE CORE CHUNKS ALLOCATED DURING PROGRAM BUILDING. (6-^JUL-74) .SKIP 1 .INDENT -8 _#257####^INPUT OF NUMERICS WITH LARGE NUMBER OF DECIMAL PLACES HAD THREE PROBLEMS. ^FIRSTLY THE ERROR MESSAGE SHOWED OVERFLOW INSTEAD OF UNDERFLOW. ^SECONDLY THE ERROR MESSAGE CAME OUT ONCE FOR EACH EXCESS DIGIT INSTEAD OF ONLY ONCE FOR THE WHOLE NUMBER. ^THIRDLY ALL DIGITS BEYOND THE ELEVENTH DECIMAL PLACE WERE ONLY HELD TO SINGLE PRECISION INSTEAD OF DOUBLE PRECISION. (14-^JUL-74) .SKIP 1 .INDENT -8 _#260####^THERE WAS A PROBLEM WITH LIBRARY FILES COMMENCING WITH A BLANK LINE. ^THIS AROSE BECAUSE PART OF THE ^L^I^B^R^A ^C^A^L^L PROCEDURE INVOLVED TRANSLATING CRLF'S INTO NULLS, AND PLACING THE WHOLE ^L^I^B^R^A FILE INTO THE IMMEDIATE-MODE TEXT AREA OF CORE. ^THE CORE-EXPANSION ROUTINE THEN LOOKED UP INTO THE IMMEDIATE-MODE TEXT AREA, SAW THE INITIAL NULL, AND THOUGHT IT COULD GO AHEAD AND USE THE SPACE! (23-^JUL-74) .SKIP 1 .INDENT -8 _#261####^THE ^S^Q^U^E^E^Z ROUTINE WAS OPERATING INCORRECTLY, IN THAT THE POINTERS WERE ADJUSTED BEFORE THE NEW SPACE WAS ZEROED INSTEAD OF AFTER. ^THE END RESULT WAS THAT ^S^Q^U^E^E^Z TRICKED ITSELF INTO BELIEVING THE GARBAGE WAS MEANINGFUL, AND ^F^O^C^A^L TEXT BEING INSERTED INTO THE MIDDLE OF A PROGRAM CAUSED SOME OTHER TEXT HIGHER UP TO BE LOST. (23-^JUL-74) .SKIP 1 .INDENT -8 _#262####^THE SINE/COSINE ROUTINES WERE MODIFIED TO USE A VARIABLE NUMBER OF TERMS IN THE POWER SERIES. ^THIS HAS BOTH SPEED AND ACCURACY ADVANTAGES FOR ^F^O^C^A^L. ^IN ORDER TO COMPUTE THE SIZE OF THE LAST SIGNIFICANT TERM, IT SHOULD BE NOTED THAT THE SMALLEST ^R^A^T^I^O OF LAST SIGNIFICANT TO FIRST NON-SIGNIFICANT TERM OCCURS FOR X=^P^I/4 WHEN THERE ARE 11,17 OR 19 SIGNIFICANT TERMS FOR FRACTION SIZES OF 27,54 OR 62 BITS. (5-^AUG-74) .SKIP 1 .INDENT -8 _#263####^SINGLE-PRECISION ^F^A^T^N FOR VERY SMALL NEGATIVE ARGUMENTS HAD THE WRONG SIGN. ^THIS WAS CORRECTED BY CHANGING ^F^O^C^A^L TO USE THE DOUBLE-PRECISION METHOD FOR BOTH SINGLE AND DOUBLE-PRECISION COMPUTATIONS. ^IT ALSO ENHANCES ACCURACY SOMEWHAT FOR THE SINGLE-PRECISION CASE. (9-^AUG-74) .SKIP 1 .INDENT -8 _#264####^THE DOUBLE-PRECISION ^K^A-10 ^F^E^X^P WAS RETURNING NON-NORMALIZED NUMBERS IN CERTAIN CASES. ^THE PROBLEM AROSE BECAUSE ^I FORGOT THAT ^F^S^C OF THE LOW-ORDER WORD NORMALIZES THE LOW-ORDER WORD, WHICH IS WRONG. ^CORRECTION IS TO INSERT ^F^A^D^L ^A^C,^M^Q. (9-^AUG-74) .SKIP 1 .INDENT -8 _#265####^THE EXPONENTIAL FUNCTION WAS MODIFIED TO MAKE BOTH SINGLE AND DOUBLE PRECISION METHODS THE SAME. ^THEY BOTH USE THE CONTINUED FRACTION SERIES INSTEAD OF AN APPROXIMATION. ^IT TURNS OUT THAT YOU DON'T NEED VERY MANY TERMS, AND THAT IT IS FAIRLY ECONOMIC IN TERMS OF CORE STORAGE TO COMPUTE THE COEFFICIENTS. (28-^AUG-74) .SKIP 1 .INDENT -8 _#266####^THERE WAS AN ERROR IN THE TYPE-OUT ROUTINE WHICH MANIFESTED ITSELF AS A FLOATING OVERFLOW MESSAGE DURING TYPE-OUT OF SMALL NUMBERS WITH A LONG FRACTION PART OF ^E-FORMAT. ^THE REASON FOR THE ERROR WAS THAT PRE-TYPEOUT NORMALIZATION REQUIRED ADJUSTMENT WITH AN OUT-OF-RANGE FACTOR. ^CORRECTION WAS A MINOR MODIFICATION OF THE ADJUSTMENT ALGORITHM. (8-^SEP-74) .SKIP 1 .INDENT -8 _#267####^SCANNING FOR EMPTY SPACE IN THE TEXT STORAGE AREA WHILE INSERTING A NEW LINE WAS CHANGED TO COMMENCE AT THE LOW-CORE END, SO THAT REPEATED CALLING OF THE SAME LIBRARY FILE WOULD NOT RESULT IN UNNECESSARY CORE EXPANSION. (8-^SEP-74) .SKIP 1 .INDENT -8 _#270####^END-OF-FILE HANDLING WAS IMPROVED, SO THAT MORE REASONABLE THINGS HAPPEN. ^FOR EXAMPLE ^F^C^H^R(-1) NOW RETURNS -1 WHEN END-OF FILE IS ENCOUNTERED, INSTEAD OF LETTING ^F^O^C^A^L EXIT. (8-^SEP-74) .SKIP 1 .INDENT -8 _#271####^THE ^F^I^X^O^A^T ROUTINE WAS RE-WRITTEN, TO PREVENT THE FRACTION PART EVER REACHING +1. ^THE PROBLEM WAS THAT 2_^(-1) WAS NOT COMPUTED ACCURATELY, AND DID NOT EQUATE EXACTLY WITH 1/2. (12-^SEP-74) .SKIP 1 .INDENT -8 _#272####^CORRECTIONS TO EDIT _#267. (21-^SEP-74) .SKIP 1 .INDENT -8 _#273####^CODE WAS ADDED TO CHECK FOR AND REJECT THE FORMS ^A^S^K#% AND ^A^S^K#$. ^THE CODE WAS MADE CONDITIONAL ON HAVING ENOUGH CORE; MEANING THAT THE CODE IS IN ALL VERSIONS EXCEPT THE ^K^A-10 DOUBLE-PRECISION VERSION WHICH IS A BIT TIGHT FOR CORE. (14-^OCT-74) .SKIP 1 .INDENT -8 _#274####^A NEW LOGARITHM ALGORITHM WAS INVENTED, AND USED IN PLACE OF THE EXISTING ONES IN THOSE CASES WHICH ARE SHORT OF CORE, NAMELY ^K^A-10 DOUBLE-PRECISION. ^THE ALGORITHM IS BASED ON SUCCESSIVE SQUARING AND EXPONENT-EXTRACTION; IT IS SLOWER BUT SMALLER AND MORE ACCURATE. (21-^OCT-74) .SKIP 1 .INDENT -8 _#275####^THE ACCUMULATOR VALUES WERE CHANGED IN ANTICIPATION OF THE DAY WHEN THE ^SUBROUTINE ^CALLING ^CONVENTION WILL BE ADHERED TO. (21-^OCT-74) .SKIP 1 .INDENT -8 _#276####^STRING VARIABLES AND STRING EXPRESSIONS WERE ADDED. (22-^OCT-74) .SKIP 1 .INDENT -8 _#277####^IT WAS DISCOVERED THAT FOR ^K^A-10 DOUBLE-PRECISION, THE NUMBER 576400000000, 146001000000 IS NORMALIZED BUT ITS NEGATIVE VIA ^D^F^N (201377777777, 146777000000) IS NOT. ^THEREFORE NEGATION WAS MADE SUBJECT TO NORMALIZATION AS WELL. ^I.E.#^D^F^N WAS FOLLOWED BY ^F^A^D^L. (27-^OCT-74) .SKIP 1 .INDENT -8 _#300####^THE NEW LOGARITHM METHOD (EDIT 274) WAS MADE MANDATORY FOR ALL VERSIONS OF ^F^O^C^A^L. ^THIS ENSURES GOOD ACCURACY AND COMPACT CODE FOR EVERY SITUATION, EVEN THOUGH SPEED OF LOGARITHMS AND FRACTIONAL POWERS WILL SUFFER SLIGHTLY. ^I HAVE DEMONSTRATED THAT THE NEW METHOD GIVES BETTER PRECISION THAN THE OLD: SOMETIMES AS MUCH AS FIVE IN THE LEAST SIGNIFICANT BIT. ^FOR ARGUMENTS CLOSE TO UNITY, THE LOGARITHM IS VERY SMALL AND MAY BEAR A SIGNIFICANCE ONLY AS GREAT AS THE ARGUMENT ITSELF. (3-^FEB-75) .SKIP 1 .INDENT -8 _#301####^A FEW INSTRUCTIONS HAVE BEEN SAVED BY MINOR RE-CODING IN A FEW PLACES. (3-^FEB-75) .SKIP 1 .INDENT -8 _#302####^THE ^E^V^A^L ROUTINE WITH A NULL ARGUMENT OR EMPTY PARENTHESES HAS NOW BEEN DEFINED AS NUMERIC WITH VALUE ZERO. ^THIS WAS NECESSARY IN ORDER THAT LEGALITY AND FORMAT DECISIONS COULD BE MADE INTERNALLY WITHOUT UNNECESSARY DELAY OR CONFUSION. ^THE PREVIOUS CONFUSION OF UNDEFINED NUMERIC/STRING STATUS CAUSED ILLEGAL MEMORY REFERENCE DUE TO BAD FORMAT NULL STRING REPRESENTATION. (4-^FEB-75) .SKIP 1 .INDENT -8 _#303####^FUNCTIONS ^L^O^G, ^L^O^G10, ^C^O^S, ^C^O^S^D, ^S^I^N, ^S^I^N^D, AND ^E^X^P WERE REMOVED BECAUSE THEY VIOLATED THE RULE ABOUT ALL FUNCTIONS COMMENCING WITH THE LETTER ^F. ^THE ^F^H^I^B^E^R FUNCTION WAS INTRODUCED TO ALLOW ^F^O^C^A^L PROGRAMS TO SLEEP OR HIBERNATE IF REQUIRED. (6-^FEB-75) .SKIP 1 .INDENT -8 V5######^THE ANNOUNCEMENT TO THE WORLD THAT STRING VARIABLES EXIST. (6-^FEB-75) .SKIP 1 .INDENT -8 _#304####^THE TITLE ON THE LISTING OF ^F^O^C^A^L.^M^A^C NOW DEPENDS UPON THE ASSEMBLY PARAMETER ^F^N^E^W, AND WILL ALSO SHOW THE VERSION NUMBER, PRECISION, AND CPU-TYPE. (23-^FEB-75) .SKIP 1 .INDENT -8 _#305####^L^I^B^R^A#^S^A^V^E NOW DOES NOT SAVE THE SYMBOL-TABLE WHEN A LIST IS GIVEN. ^THIS REDUCES DISK REQUIREMENT FOR SAVED FILES. .SKIP 1 .INDENT -8 _#306####^F^N^E^W IS NOW ALLOWED; ^F^O^C^A^L NOW COMPLIES WITH THE ^CALLING ^SEQUENCE ^STANDARD. (1-^MAR-75) .SKIP 1 .INDENT -8 _#307####^REPAIR EDIT _#305 TO SAVE ^I^N^C^H^N AND ^O^U^T^C^H^N CORRECTLY. (11-^MAR-75) .SKIP 1 .INDENT -8 _#310####.^J^B^E^R^R IS NOW INCREMENTED UNDER THE FOLLOWING CONDITIONS: .BREAK 1. ^F^H^I^B^E^R FUNCTION IN A DETACHED JOB. .BREAK 2. ^F^H^I^B^E^R FUNCTION WHEN ^T^R^M^N^O. ^U^U^O IS ILLEGAL. .BREAK 3. ^ERROR RETURN ON ^G^E^T^T^A^B ^U^U^O IN ^G^E^T^T^A^B FUNCTION. .BREAK 4. ^ANY ERROR DETECTED BY ^F^O^C^A^L, WHETHER IT RESULTS IN A PRINTED MESSAGE OR NOT. (11-^MAR-75) .SKIP 1 .INDENT -8 _#311####^F^O^C^A^L NOW GIVES AN ERROR MESSAGE IF AN ATTEMPT IS MADE TO SET AN OUTPUT FORMAT WITH A WIDTH GREATER THAN 99 COLUMNS. ^PREVIOUSLY THIS RESULTED IN A TYPE-OUT-TIME ^P^D^L#^O^V MESSAGE. (11-^MAR-75) .SKIP 1 .INDENT -8 _#312####^THERE WAS A PROBLEM IN THAT THE ^A^S^K DATA "LEADING SPACE" FLAG GOT CLOBBERED IF YOU INSERTED A NON-SPACE AND RUBBED IT OUT. ^THIS WAS SOLVED BY NOT HAVING A FLAG ANY MORE, BUT RATHER BY LOOKING AT THE PREVIOUS CHARACTER EACH TIME, TO SEE IF IT WAS A SPACE TOO. ^YOU WILL BE SAFE IF THE NEW SPACE FOLLOWS ANOTHER SPACE; BUT IF NOT, IT WON'T BE A LEADING SPACE. (2-^APR-75) .SKIP 1 .INDENT -8 _#313####^ECHOING OF RUBBED OUT CHARACTERS USED TO BE IN THE SAME FORM AS ^T^E^C^O, EXCEPT FOR ^M^O^D^I^F^Y COMMAND. ^THIS HAS NOW BEEN CHANGED SO THAT ALL RUBBED OUT CHARACTERS ARE EMBEDDED IN REVERSE SLANTS. ^FOR HALF-DUPLEX TERMINALS, THE RUBBED OUT CHARACTER IS NOT ECHOED, BUT RATHER A REVERSE SLANT IS TYPED FOR EACH RUBBED-OUT CHARACTER. (5-^APR-75) .SKIP 1 .INDENT -8 _#314####^CONTROL-^R NOW REPEATS THE PROMPT CHARACTER AND DISPLAYS THE FIRST PART OF THE LINE (CLEANED UP) FOR INPUT LINES, ^A^S^K DATA, AND ^M^O^D^I^F^Y WORK. ^ALSO CONTROL-^P MAY NOW BE USED TO ABORT A MODIFY COMMAND IF YOU DECIDE THAT YOU DON'T WANT TO COMPLETE THE MODIFICATIONS. (5-^APR-75) .SKIP 1 .INDENT -8 _#315####^IN AN ^O^P^E^R^A^T^E COMMAND, A NON-EXISTENT DEVICE NOW CAUSES AN ERROR MESSAGE INSTEAD OF A CHANNEL-RELEASE. ^CHANNEL-RELEASE CAN NOW ONLY BE CAUSED BY ^O^P^E^NING ^T^T^Y ON THE CHANNEL. (25-^APR-75) .SKIP 1 .INDENT -8 _#316####^ERROR MESSAGES USED TO COME OUT ON THE ^T^T^Y IF FATAL BUT ON THE CURRENT OUTPUT DEVICE IF NON-FATAL. ^THIS SEEMS STUPID BECAUSE THE USER REALLY WANTS TO SEE THEM STRAIGHT AWAY, AND HE'S SITTING AT THE TERMINAL. ^THIS CHANGE MAKES IT ALWAYS COME ON TO ^T^T^Y. (18-^SEP-75) .SKIP 1 .INDENT -8 _#317####^M^O^D^I^F^Y COMMAND WILL NOW CORRECTLY HANDLE LINES CONTAINING QUESTION MARKS, AND WILL ALLOW QUESTION MARKS TO BE INSERTED. (20-^SEP-75) .SKIP 1 .INDENT -8 _#320####^THE ^A^S^K COMMAND CAN, AS YOU KNOW, BE USED TO TYPE TEXT IN THE SAME WAY AS THE ^T^Y^P^E COMMAND, INCLUDING NEW LINES ETC. ^WHAT ^I HAVE NOW DONE IS TO ARRANGE TO REGARD THIS FEATURE AS A KIND OF CUE FOR THE INPUT. ^THE ADVANTAGE IS THAT YOU CAN THEN HAVE ALL USEFUL OUTPUT (RESULTS, SAY) GOING TO THE LINE PRINTER, WHILST THAT MESSAGE REQUESTING INPUT WILL GO TO THE ^T^T^Y. ^IN ACTUAL FACT, ^I HAVE ARRANGED FOR ALL OUTPUT DURING AN ^A^S^K COMMAND TO GO TO ^T^T^Y, BUT ONLY IF INPUT IS EXPECTED FROM ^T^T^Y. (4-^OCT-75) .SKIP 1 .INDENT -8 _#321####^M^O^D^I^F^Y SHOULD BE HANDLED THE SAME WAY BECAUSE THE OUTPUT FROM ^M^O^D^I^F^Y IS REALLY ONLY FOR THE GUIDANCE OF THE PERSON DOING THE TYPING. (4-^OCT-75) .SKIP 1 .INDENT -8 _#322####^THE DEBUG FEATURE TURNS OUT TO BE VERY DIFFICULT TO USE FOR DEBUGGING A PROGRAM WHICH HAS OUTPUT DIRECTED TO A FILE OTHER THAN ^T^T^Y. ^TO ASSIST WITH DEBUGGING, AND HOPEFULLY NOT INCONVENIENCE TOO MANY PEOPLE WHO USE THE FEATURE TO PLUG DATA INTO OUTPUT FILES, WE WILL MAKE DEBUG OUTPUT ALWAYS GO TO ^T^T^Y. (4-^OCT-75). .SKIP 1 .INDENT -8 _#323####^DATA TRANSMISSION ERRORS CAUSING FAILURES OF ^I^N OR ^O^U^T ^U^U^OS NOW CAUSES THE DEVICE STATUS BITS (FROM THE ^G^E^T^S^T^S ^U^U^O) TO BE PRINTED IN THE ERROR MESSAGE BY ^F^O^C^A^L. (4-^OCT-75) .SKIP 1 .INDENT -8 _#324####^CHANGE ^I/^O ROUTINES SO THAT FILE OUTPUT TO OTHER THAN ^T^T^Y ONLY OCCURS DURING THE ^W^R^I^T^E ^T^Y^P^E AND ^L^I^B^R^A COMMANDS. (10-^OCT-75) .SKIP 1 .INDENT -8 _#325####^LOGICAL ^I^F USING = AND _# OPERATORS. (10-^OCT-75) .SKIP 1 .INDENT -8 _#326####^LOGICAL ^I^F USING .^N^E. AND .^E^Q. OPERATORS. (13-^OCT-75) .SKIP 1 .INDENT -8 _#327####^THE FORMAT OF ^I/^O ERROR MESSAGES WHICH RETURN A MONITOR CODE NUMBER HAVE BEEN CHANGED. ^THE OLD FORMAT \E\R\R\O\R-_#_# HAS BEEN CHANGED TO \E\R\R\O\R##_#. ^THIS WILL SAVE SOME LOCATIONS OF CORE. (21-^OCT-75) .SKIP 1 .INDENT -8 _#330####^A ^B^A^C^K^S^P^A^C^E FROM THE KEYBOARD WILL NOW PERFORM THE SAME FUNCTION AS A ^R^U^B^O^U^T EXCEPT THAT THE ^B^A^C^K^S^P^A^C^E IS ECHOED AND THE RUBBED-OUT CHARACTERS ARE NOT DISPLAYED; NO BACK-SLASHES ARE USED. ^THIS SIMULATES THE 5.07 MONITOR. (8-^FEB-76) .SKIP 1 .INDENT -8 _#331####^THE ^G^O COMMAND CAN NOW ACCEPT A COMMENT AFTER A SEMI-COLON WITHOUT AN ERROR. (15-^FEB-76) .SKIP 1 .INDENT -8 _#332####^THE HALF-DUPLEX TERMINAL TEST HAS NOW BEEN REPLACED WITH A LOCAL-COPY TEST, WHICH IS REALLY MORE CORRECT, SINCE THE FEATURE BEING ADJUSTED IS THE LAYOUT OF BACKSLASHES ON THE PAPER. ^THE ^D^P^O^P ^U^U^O WAS NOT IN FACT CALLED ANYWHERE, AND SO IT WAS REMOVED ALONG WITH ITS HANDLER. ^THE TRAP HANDLER HAD SOME INACCESSIBLE CODE IN IT, AND SO IT WAS CLEANED UP AND ABBREVIATED. (1-^APR-76) .SKIP 1 .INDENT -8 _#333####^THE ^S^E^T COMMAND WILL NO LONGER CREATE A NEW SYMBOL-TABLE ENTRY WHEN A NEW SYMBOL IS SET TO ZERO. ^THIS WILL SAVE CORE AND CANNOT AFFECT PROGRAMS BECAUSE IF AN UNDEFINED SYMBOL IS REFERENCED IT IS GIVEN THE VALUE OF ZERO ANYHOW. ^SOME INACCESSIBLE CODE IN THE ^S^Q^U^E^A^Z ROUTINE IS ELIMINATED. (2-^APR-76) .SKIP 1 .INDENT -8 _#334####^COMMANDS TO ^F^O^C^A^L MUST NOW CONSIST OF ALPHABETIC LETTERS ONLY. ^THIS MEANS THAT COMMANDS SUCH AS ^T^Y^P^E2.6 WITH NO SPACES WILL BE MORE MEANINGFUL TO NOVICES AND FOLK USED TO ^B^A^S^I^C. ^ALSO ^I HAVE MODIFIED THE ^I^N^C^R^E^M AND ^D^E^C^R^E^M MACROS IN THE SOURCE SO THAT THEY MAY HAVE AN ARGUMENT. (4-^APR-76) .SKIP 1 .INDENT -8 _#335####^THE LOGICAL OPERATORS .^L^T., .^L^E., .^G^T., AND .^G^E. HAVE BEEN ADDED. ^THE ^P^R^I^N^T^X PSEUDO-OP HAS BEEN REPLACED BY THE MACRO ^P^X IN MOST PLACES TO MAKE IT A FATAL ERROR. (10-^APR-76) .SKIP 1 .INDENT -8 _#336####^THE ^I^N^C^R^E^M AND ^D^E^C^R^E^M MACROS HAVE BEEN REMOVED FROM THE SOURCE CODE. ^THE ^F^A^D^R^I INSTRUCTION IS NOW SIMULATED FOR THE ^P^D^P-6 VERSION SO SOME CODE IS SIMPLER. ^THE ^D^E^X^C^H CODE FOR THE ^K^I-10 DOUBLE-PRECISION VERSION IS FASTER AND USES A ^P^U^S^H^J TO A LITERAL RATHER THAN A ^U^U^O. (11-^APR-76) .SKIP 1 .INDENT -8 _#337####^THE EFFICIENCY OF THE ^W^R^I^T^E COMMAND WAS INCREASED BY REMOVING THE CHARACTER-COUNTER TO THE ERROR-HANDLER ROUTINE. (11-^APR-76) .SKIP 1 .INDENT -8 _#340####^THE ^E^V^A^L ROUTINE WAS SPEEDED UP AND THE EXPRESSION ROUTINE WAS MODIFIED TO CORRECT THE CASE OF -1.^E^Q.-1. (15-^APR-76) .SKIP 1 .INDENT -8 _#341####^A BETTER TRY AT EDIT _#340. (17-^APR-76) .SKIP 1 .INDENT -8 _#342####^F^N^E^W^G^O NOW ATTEMPTS TO FIND ^F^O^C^A^L.^S^H^R ON ^N^E^W AND ^O^L^D IF IT CANNOT FIND IT ON ^D^S^K OR ^S^Y^S. ^THIS SHOULD HELP PEOPLE WHO WANT TO RUN ^F^O^R^T^R^A^N SUBROUTINES WITH NEWER OR OLDER THAN STANDARD ^F^O^C^A^L. (2-^MAY-76) .SKIP 1 .INDENT -8 _#343####^THE SYMBOL-TABLE IS NOW SEARCHED WITH A BINARY SEARCH METHOD. ^THIS SPEEDS UP PRODUCTION PROGRAMS WHICH TEND TO HAVE A LARGE NUMBER OF FIXED SYMBOLS. ^THERE ARE SEVERAL SIDE-EFFECTS OF THIS CHANGE. ^FIRSTLY THE SYMBOL TABLE IS STORED IN ALPHABETICAL ORDER RATHER THAN CHRONOLOGICAL, WHICH WILL AFFECT THE APPEARANCE OF THE SYMBOL-TABLE PRINTOUT. ^SECONDLY THE ACTUAL SETTING UP OF THE SYMBOL-TABLE WILL BE SLIGHTLY SLOWER BECAUSE SHUFFLING IS REQUIRED TO MAKE IT ALPHABETICAL. ^THIRDLY A SLIGHT INCREASE OF SPACE IS REQUIRED FOR THE SYMBOL-TABLE - AN INCREASE OF 33% FOR DOUBLE-PRECISION, BUT NO INCREASE FOR SINGLE PRECISION; THIS IS REQUIRED TO AVOID A DIVISION INSTRUCTION IN THE INNER LOOP. ^FOURTHLY IT IS NOW POSSIBLE TO CHANGE THE WAY A ^F^O^R LOOP WORKS WHEN YOU ERASE THE SYMBOL TABLE; THE ERROR MESSAGE ON THE ^E^R^A^S^E IS NO LONGER REQUIRED, AND THE ^F^O^R WILL EXIT FROM THE LOOP WHEN IT CANNOT FIND THE INDEX ANY MORE. (25-^JUL-76) .SKIP 1 .INDENT -8 _#344####^A^S^K FOR A STRING WILL NOW ACCEPT A STRING CONTAINING SPACES AND COMMAS. ^THE TERMINATOR FOR A STRING IS LINE-FEED ALONE; CARRIAGE-RETURN IS IGNORED; ^E^S^C^A^P^E ABORTS THE ^A^S^K INPUT. ^I ALSO TOOK THE OPPORTUNITY IN THE SOURCE FILE, OF DEFINING ^K^L TO ALLOW FUTURE HARDWARE DEPENDENCIES. (31-^JUL-76) .SKIP 1 .INDENT -8 _#345####^L^O^O^K^U^P IS NOW NON-FATAL EXCEPT IN CASE OF ^K^A-10 DOUBLE-PRECISION VERSION OF ^F^O^C^A^L. ^THIS MEANS THAT YOU CAN TEST FOR THE EXISTENCE OF A FILE BY OPENING IT FOR INPUT AND SEEING WHETHER OR NOT YOU GET AN ERROR. ^L^I^B^R^A ^S^A^V^E NOW GENERATES BACKUP EXCEPT FOR ^K^A-10 DOUBLE-PRECISION VERSION OF ^F^O^C^A^L. ^THE BACKUP TAKES THE FORM OF RENAMING AN EXISTING FILE IF ANY TO .^B^A^K, AFTER DELETING ANY .^B^A^K FILE; THEN THE ^L^I^B^R^A ^S^A^V^E PROCEEDS AS IT WOULD HAVE WITHOUT AN EXISTING FILE OF THE SAME NAME. ^A FEW INTERNAL CHANGES WERE MADE AT ^L^I^M^S^E^T TO REDUCE THE CORE SIZE; ^M^A^X^L^N,^M^I^N^L^N WERE REPLACED BY ^L^U^P^A^R^G. ^THE ^M^A^C^R^O EXCLUSIVE ^O^R OPERATOR _^! WAS INTRODUCED TO ASSIST DEFINITION OF CERTIAN OPCODE FIDDLE PARAMETERS. (9-^OCT-76)