Copyright (c) 1999 Massachusetts Institute of Technology This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ------------------------------ This file used to named SYSTEM;ITS RECENT. This file logs significant changes made to ITS. New changes are added just above the line that starts with a row of dashes. Lines that start with brackets are the version number and date of an installed system. .CALL ATTACH - new features .CALL SIOT - byte-string I/O .CALL DISOWN - new call, new features MEMBLT format change Printing of NXM map when system comes up. On ML, checking for bad mem switches when system comes up. Putting time in ITS IN OPERATION etc. messages. Pure-code feature of pager now works. .USET on BOJ device .REVIVE NOP if not dying Error-code arguments in .CALL measure run-time of core-job properly conditional out microtape code USEMDM switch don't return to DDT after system shutdown until all dirs, etc. out, utapes flapped, and jobs killed. 7'th result of .CALL SSTATU is system version number in sixbit parity error in pure page only interrupts the job that was running ability to make links through job devices .SUSET .RSUPPRO BEG calls SALV .HANG on TRN, TLN ^_ digits takes any number up to non digit or ignored space ^_ ^B etc. sets bucky bits %TSFCO full char set output/echoing (control as alpha, etc.) [946] at slow clock level, xct ttyst for ttys with ttyoac on and ttltm > 1 sec ago mlink should give error if not disk or job channel [947] KL10 disk code atsign device should know about "non-directory device" routine for SIOT for disk & other BLKT devices rearrangement of user variables to match kl10 user process table (ifn kl10p) i.e. setting up trap words etc. + how to hack uuoacs in kl10 SIOT for sty KL10 cache sweep code KL10 tty code KL10 micro code KL10 page fail code and clock level user who lines no more automatic closing of I/O channels at EOF. Microtapes have to be assigned before they can be used for anything. echoing of rubout uniform -1,,3 for eof on all devices in unit ascii input mode (except TTY, dammit!) [979] PGDUMP system call reap bit, author, quotas (SEC's disk stuff) misc bug fixes deletion of some old message routines in favor of SYSMSG [982] rauth, sauth system calls (SEC'S disk stuff) New tut format for RP03 and RP04 - partly gone Fix unit mode I/O on USR device to advance the access pointer making net not close channel at "eof" -> IOC error number will change; check programs in unit ascii mode there will no longer be an IOC error when close - " " [984] Finish DC76 code Finish KL paging initialization Rework KL paging/clkbrk code Reverse sense of age bits in page words by changing KL10 ucode 3-bit bytes in tuts more disks on ML and DM; more directories on ML [986] KL bug fixes %TPCBS => ^\ is special on tty input -> for intelligent terminals SCHBLN on ML Remove "last bug" from PDUMP [988] symbolic ITYIC; ordinary ITYIC passed as a symbolic ITYIC to job devices superimage output SIOT on tty => high-efficiency mode DIRSIZ to hack quotas and read # blocks in all files in a directory SCPOS to hack setting tty cursor position for software tty styholders and superimage outputters Com mode simplification and improved query mode. SCHBLN on AI ATTACH takes tty spec as arg Symbolic IOPUSH and IOPOP System console can be used as a user console ^PA - proceed to column 0. If you pass the end of the line, collect 1 linefeed. KLPERF system call for hacking the performance counter Open-loss "channel not open" [994] DETACH and DISOWN can cause tree to be killed after 1 hour KL - detach on hangup KL - Improve autospeed code 20KILL allowed after a 5KILL has been done. Symbolic "RCHST" (actually called "RFNAME"). Real TTY's may be run as "Software TTY"'s. SETLOC detects that SYS job is hung and does the job itself. DM Demon signaller no longer uses FINSET; all FINSETs flushed. NNSKED, NRSKED meters Gould line printer Handling of parity errors on KL10 OPTOPC Improvements in system shutdown TREESW XDDT$X, XREVIVE$X Symbols for UMAPS bits Deletion of OPTDET; reload on top-level interrupt never occurs now Optional automatic saving of ACs, .JPC, .UUOH, LSPCL in new-style interrupt .CALL DISMISS can pop the above .CALL RCHST Deletion of .CALL BREAK Deletion of LDISOW Other-machine devices no longer built into the system; use unknown-device handler Arg2 + Arg3 for .CALL JOBSTS; RH(.STATUS), device name for who lines and peek EVSYMS file SUPCOP [1000] %TNMEM OIPBIT New meters NSSKED, NRESKED, NNULBK, SLOADU Improvements to TV run-light blinker New .CALLs: FORCE, JOBIOC, NETAC, NETINT, REOWN DETACH ctl bit 1.5 suppresses console-free message Fix the "last" bug in PDUMP Delete SJDH Computation of maps and memory free lists and number of DDT pages at system startup [1003] Remove ARDS support; add Tektronix support Add TTDIIM, TTDVT, TTDRAN Add meters NAGEAB, NSHRAB Delete superfluous user variables LSPCL1, LPFBTS, UDBR1, UDBR2, UCPB1, UCPB2, UTRAPM OPTTRP is sign bit of OPTION; replaces UTRAPM Make VALUE not take a separate word in user variables Improvements to bringing up of the network (eliminate infinite NETWORK UP AGAIN lossage) LOSRCE, IDLRCE, NPGWTU .XJNAME user variable .LOSE UUO, LOSE system call Really fix the last bug in PDUMP Improvements to CORBLK NUL device changed to give immediate EOF on input instead of infinite zeros Swapping algorithm enables: ENSWSC, ENUPC, ENPZRO, ENAGE, ENSWBK, ENPVCL, ENPREE Ability to determine memory size on KL10 (NXM doesn't work on our machine.) Debug RP04 ECC stuff FILLEN works for disk output channels Simplify core job - eliminate shuffling of system pages and eliminate shuffling of 200-word buffers (except network buffers) thus flushing thousands of timing and pclsring bugs. Direct mapping always on => low-core is still big enough. Symbolic socket states and close reasons for Arpanet Arpanet gives interrupt if output buffer goes from full to not-full. Fix Arpanet bugs: timing out, Santa Claus, extra words at end of message. SUPCOP => system jobs hangs rather than sleeping. Fix many erroneous bits in system job dispatch table. System job can use any console (fakes IOCHNM word). User who-line variables. %PIATY Intelligent terminal protocol now works. %TCFPD Make disappoints work better Find out number of TVs at system startup. Non software-tty STYs can get %TDORS. Fast SIOT in super-image output to TTY. [1006] Add new meter NAGES Fix bug with IOT UUOs on KL10 causing spurious MPVs Turn on indirect bit in .MARPC if instruction completed AGERTE enables page-ageing .CNSL user variable Support CAIA ? CAIA ? .HANG and SKIPA ? SKIPA ? .HANG Feature for DISMISS to lose if given 5 arguments Bells in ITS in operation message **MORE** interrupt goes to same channel as was IOTing on. Less cryptic messages in communicate mode. Full support for disappoints. [1008] Flush OQDTSW (finally!) KL: Use hardware clocks in KL-UDGE Allow up to 99 jobs (up from 63). Limit of 99 is in who line routines, I think. Eliminate UCLOSE PCLSR bug. RFPNTR system call RFNAME system call FORCE and FLUSH system calls. Reorganize I/O device tables a little. Allow unit mode input .CALL IOT to use an output arg instead of a clobbered input arg. Flush CREAPB system call Rename PGDUMP system call to PGWRIT; old name will stay around for a while Flush PDUMP mode; greatly simplify PDUMP system call. This surely fixes the "last bug in PDUMP." Handle MMP full as NO CORE error rather than crashing the system. Fix bug in unit image input from directory. (Probably crashes system). Init dial-up lines on dialin rather than logout. Fix bugs in control link RFNM timeout on arpanet. If ARPANET socket found to be closed on input, eof if closed normally by foreign host, IOCER 10. otherwise. If ARPANET socket found to be closed on output, IOCER 10. (was 8). Misc. ARPANET bugs. %TDFS, %TDMV0, %TDCLR tty output buffer codes Use tabs for cursor positioning on display ttys that have them; use VT52 absolute cursor positioning if enabled. Putting EXEUMP and EXELMP in system's UPGMP; not having MMP entries for sys job pages. New corblk codes %JSNEW and %JSABS. 400000 now copies from exec address space instead of real abs pages; 400001 is still fresh pages for now. Arpanet: free output buffer space as soon as sent instead of waiting for RFNM. NLOAD needs a new open loss code - done. Retain sharable pages in core for a while when no one is using them MMP hash table MMP free lists changed to use addresses instead of indices; there was a bug which luckily just caused one MMP entry never to be used. Fix "last bug" in swap read errors. For a disk open that fails after going through a link, a special error code to reduce confusion of DDT and users. .CALL STLGET 2-minute clock checks for clobbered devices Disk .CLOSE waiting kludge removed; .CALLs FORCE and FLUSH implemented for disk. Fix "last bug" in shutdown. Disk FORCE not allowed in unit ascii mode. [1013] Absolute cursor positioning on VT52s if PADTAB=2 Bug in QUDS caused files to get concatenated. [1016] Flush old misfeature that writing in NXM in inferior creates the core. Problems with one job outputting to core link, receiver closes, transmitter hangs forever - transmitter's output ought to get discarded. If a network socket enters an "unhappy" state while job is hung in IOT on it, and IO interrupts aren't enabled, give it an IOC error. Fix VT52 ^S/^Q lossage by not using direct cursor positioning at 9600 baud. KL10 - handle page faults with clkchn in progress rather than off. Unhang hung disk controllers. Recover from reset button getting pushed on S.C. controller, also handle internal parity error. Fix bug causing magtape timeouts to be very random - magtape didn't get polled when disk was idle. Unhang ML LPT when it loses its PIA. KL10 - provision for .LSPBR user variable (lisp GC instructions) LH(.40ADDR) is address of 20-wd block for DDT to hack in (if 0, 20). Rename .SNAM user variable to .SNAME KL10 - fix bugs in one-proceed. Remove machine-independent one-proceed "feature". SIOT allows indexed byte pointer. 3.5 mode bit in DSK open allows links to be "opened." JOB device calls use %PCFPD bit to detect pclsring. New bit 3.8 in first val of JOBGET. Fix bug with IOCERRs in JOB devices getting left after close and given to next user. Put CRLF at end of TTY^F (for IEC, mostly). Fix bug that user can map nxm abs pages. (introduced in 1013.) Intelligent terminal protocol - ^\^C => screen has been surreptiously altered, set %TSATY and %PIATY. MC - multiplexor kludge to building 38 Arpanet - 3.7 mode bit in open => use 2000-wd buffer (otherwise 200-wd). Many improvements/bug fixes/dekludgifications. Disk pack reservation stuff stored in tuts instead of going by drive number. Unit ascii mode and SIOT output to disk, tape (BLKT devices) will zero the extra bits at the end of each word. Typing out space is equivalent to cursor motion even on non-overprinting ttys. Allow embedded blanks in links (quoted with :). New fast disk directory garbage collector. [1018] Remove typing out space equivalent to cursor motion feature - screwed datapoints. %NCRFS .CALL MLINK does .CLOSE 0, if it succeeds - fix this. When TV11 goes down TVCREG of a job using 11, e.g. D, gets screwed up. Not fixed up by reattaching. Mostly fixed, but alu function will be lost. Top level interrupt job detached gives octal PIRQC on system console. No longer tinges daemons with mortality. REOWN sets reowned jobs' XUNAME to reowners - fixes bug in :NAME - FLUSHED. DOING THIS CAUSED OTHER BUGS. [1020] %TBOUT, %TBINF bits in TTYTBL Fix to: In negative SYSDBG mode, losers can get in by linking to a sty tty. OPTLKF bit in .OPTION which says unlock locks on top-level-fatal-interrupt. TYOLTB per tty instead of per TCTYP (TTYROL) and .CALL CNSROL to hack it. If PDCLK jumps ahead of TIME more than 5 seconds and less than an hour, probably the system was stopped at a halt or breakpoint and then continued, so all jobs should get going down interrupt (DDT will print "ITS REVIVED!") .CALL DELEWO Fast SIOT for Arpanet output .CALL STYNET - direct connect STY to NET On SAIL ttys, echo control characters with uparrow instead of circumflex. Fix bugs in .CALL FORCE in write over mode. (FORCE loses, FLUSH hangs forever.) Disk FORCE screws in unit ascii mode (.ACCESS is by words) -- taken care of. Byte size support for disk files: The system remembers the size of bytes a file was written with and the number of bytes in the file. OPEN => a byte size. For now, unit ascii = 7, otherwise 36. ACCESS and RFPNTR are in terms of the byte size opened in. RFPNTR returns a second value, the byte size. FILLEN returns 4 values: length in byte size opened in. byte size opened in. length in byte size written in. byte size written in. This involved changing the conventions for BLKT/CHRKT/SIOKT. Various losses/infinite hangs involving swap read errors fixed (for the nth time). Seek overlap on S/C disk controller. Eliminate hair for deleting file on deceased pack - tut differences don't matter much, and ufds will be inconsistent anyway, can never use ufd copies on pack that wasn't mounted when the system ran one day. -> Also, salvager should probably check for packs whose MFD has a smaller ascending master dir number and require you to do a UCOP to that pack first. Disk scheduler performs poorly under heavy load, i.e. on DM. [1024] %TPTEL treat CRs in the way Telnet protocol wants (on input). Needed for STYNET. COD: device ignores whether it was opened for input or output (maybe others too)? Flush vidis, Dinwiddies, etc. if they haven't been already. Support for an optionally-present secondary disk pack. SECOND: device. OPT => %OP to get rid of random predefined non-% non-$ non-. symbol? Rubouts should "work" in com mode on display ttys. Allow a device job to be reused for more than one OPEN, if it agrees. (.CALL JOBREU) Fix bugs with pclsring, iopdl, etc. in job devices. Make SIOT and byte-size stuff work on job devices. Necessary to do do this so TECO can use new style stuff. Make it possible for PDUMP to save ACs, and for LOAD to load them from pdumped files. Allow selective loading. E.g. only within certain address boundaries, or only pure pages. For DECUUO, dumped tecos, maybe dumped lisps? 3rd arg to load is first,,last or 0 to load only pure USRVAR, TTYVAR symbolic system calls. This also implies that when .USET and .SUSET ILUUO they will store opn-loss codes. [1036] 6-character device names in the system. MEANING OF %DVDEL BIT REVERSED. Also devices that used to ignore .FDELE now OPNL34. Flush both-directions-open stuff on job devices. Restandardize arguments to TTDxxx macros. Now uses mainly keyword parameters. Change KL10's XCTR XEA, from 14 to 16 to make indexed executes work right. PDP6 has a .UIND user variable. Symbol %JSSIX selects the pdp6. Wait for DIR and DSK channels to become available instead of erring out. New disk directory flushing code - caveat haquur! Delete %TICLC Add %TNDTM (Datamedia support). Reverse order of args to Imlac cursor motion code. (Taken out again.) Error codes for OPEN on NET device grossly screwed around with. Accounting updates - two minute clock picks a job tree and calls LOGUPD %TORAW is no longer the default. TTYGET no longer returns ISE0 if channel not open. It works to set one's own .JPC. [ITS 1043] You can reown yourself! An "echo" that only forces out buffered cursor motion shouldn't set %TCECH - ^S lossage on TIPs. ^_CFOO^^ kludge for IEC. .LOGOUT N, => .BREAK N,33 if not top level. Speed up typeout on TVs by not checking redundantly for buffer over-run. Abandon AI LPT. Note conversion of wierd non-ascii controls to ascii on %TOFCI tty was changed. [ITS 1047] Don't buffer more output than allocated feature on arpanet (mode bit 3.8). STYNET mode now works. Miscellaneous changes to output on glass ttys Show both phy and vir pages in user who line Add immediate instruction arguments to USRVAR/TTYVAR Fixes to JOB device open and pclsring Top level interrupt job detached informs owner Fix IDX column of TTY^F Change format of scheduler history table a little (overflow in user index and runtime fields) [1050] 8-bit bytes in TV-output buffers (instead of 16.) Still to be done: word at a time tty output siot. Requires some restructuring of code. - hard to avoid some bugs. Rename .CALL FLUSH to FINISH. Old name stays around for a while. Better disk error reporting on RH10/RP04. Have who line show # pages swapped in as well as total # pages. [1052] Control-Call and ^_D are deferred call. Start adding multiple ttys through DTE20. Fix some moreing and glass tty bugs. TTYROL on a printing terminal is now 1 (formerly 0) - don't forget to change TCTYP Fix CORTYP on a PDP6 inferior to not crash system. USR job-creating open kills the job if no core available instead of failing but leaving the job around. [1057] Flush new SC disk stuff; ATTN and CURRENT CYLINDER register lose randomly. Insert and delete lines and characters on TVs. Scrolling. .CALL USRMEM Fix more Arpanet & direct-connect bugs BOJ block IOT in don't hang mode now doesn't hang if the creator is not in a corresponding JOB IOT. Scrolling on TVs. [1066] 5/30/77 Alpha echoes as alpha, while ^B echoes as ^B. .CALL TTYFLS allows you to flush all tty input chars up to the last one ITYIC'd, or flush just that last one. DNRF device is like DSK but doesn't set the file's reference date. Opening DIRHNG:FOO; gives you a channel that interrupts whenever anyone writes in directory FOO. TRAP: device to allow faking out of inferiors - all system calls on such a device trap, including OPEN, but TRPOPN .call allows superior to open it for the inferior. CLOSE does not trap, which is vital!! ISPEED/OSPEED TTY variables (read only). Also change speed codes to 4 bits. These variables are in bauds, not internal codes. TYEEO3 is fucked. Also TYPBP1 needs to be fixed. Finish flushing 2741s. RCPOS, SCPOS, LISTEN, FORCE, and FINISH allowed under $$^P. TTYSMT (SMARTS) variable to hold info on what sort of programs a tty can load, what graphics options it implements, etc. CHAOS net SWPWSP started, but not finished yet. Settable block size on magtape via .MTAPE and flushing of chunk mode. New IOC errors 12 and 13 Locked-down pages; see CORBLK and PGWRIT system calls. Fix loose-page bugs by maintaining RH(MMSWP) correctly. Final version of USRMEM But still needs to learn how to turn into SETLOC if writing system. PAGEID system call and associated crud flushed. More error checks in CNSSET etc. %TPPRN Attempt to make nulls outputtable to MTY Symbolic ATTY, so you need not have a job open to use it fully. Store the UWHO variables on non-tv systems for benefit of user programs to generate who lines. Make MAR work correctly on KL10 (formerly OPTOPC had to be on.) Device name table - negative LH is sixbit short name, else is pointer to sixbit long name. Change chaos, dirhng, trap. Note that this changes what .GETSYS of CHDEVS returns. Who cares? .CALL DL10MP Flush NEWDTE conditional. .HSNAME user variable (home sname) [1091] 11/11/77 .LSPBR flushed due to > 100 uset variables! Magic number for .HSNAME changed from 100 to 43 . Fix up SWPWSP so it may work Really make MAR work on KL10 when OPTOPC is off. Reset speeds to zero when a STY is handed out. HELP key (TOP/H, ^_H) always returned even if not in full character set mode. Additional hair at TYOMT4 to try to make echoing work right. Loses, flushed. Flush even more vestiges of 2741's. Speed code 0 now means unknown, not 134. Fix CHAOS bugs, add 5th result to CHAOS WHYINT. Fix bug with wrong spacing between mores on scrolling terminals introduced into ITS 1036 or thereabouts. Fix bugs with over-AOS and over-SOS of SUSRS. [1097] 12/5/77 .MTAPE 13 returns block size of last record read. You should gobble the first word of the record then do the .MTAPE. Add new swap and pagein history tables. Change ACCESS to give error on wrong type device, instead of claiming to succeed. This also gets rid of special job op for .ACCESS, now it just comes through looking like a symbolic system call. Fix parity error handling on KL10s. Was completely fucked. Minor fixes to swap-out routines, and to hsname. Error code returned for network went down changed from 34 to 41 (arpanet). SCML changed to work if you don't have the tty Fixes to SCPOS bug, link to multiple ttys same name bug, scrolling bug. [1099] 1/15/78 RFNAME on DIRHNG returns correct dir name, zero file names. Save and restore tty user-options across detach/attach. (STTYOP) TTYESC .CALL Say system full if there aren't 100 mmp entries left. (on ^Z) Fix bug in %OPLKF on KL10 For RH10 disks (mainly RP04s), know about "recoverable" unsafes. 1.3 control bit to ATTACH causes job to start after it is attached. Readahead on mag tape, to make reading much faster. Note that an incompatibility in .MTAPE was introduced; the stop call doesn't compensate for read-ahead. Conditions under which .MTAPE writes back the function word changed slightly, but, then again, the old code had gross pclsr bugs. Kludge that a count of 0 in a spacing command means 1 retained. Update documentation! Fix bug where FORCE on unit-ascii disk channel didn't pad Further changes to TYI to ignore top-letters except HELP when not in full char set mode. Fix bug in %CBLOK feature that crashes system if it is used. Fix AC conventions in LOSSET routines NJBRUL, QCHNRT. They are commented now! DISOWN (etc.) now only closes inferior channels, not foreign-job channels. Fix bug in deleting links to dirs with a leading space in the name. [1102] 3/3/78 Fixes to Arpa network control-message-queue overflow bugs Overhead metering (only works on KL10s) [1105] 3/22/78 New chaosnet protocol, .CALL PKTIOT, change to chaos IOT, direct connect for chaos. Fix bug in RFNAME on DIRHNG: .NETS is now just a uuo version of .CALL FORCE Change RENAME and DELETE to give file-locked for *-files Change >-lookup to notice *-files Fix bugs in IDLTIM ttyvar, ^\^C Fix TRAP device Fix bugs in disk FINISH, PDUMP with %QAACC set. [1111] 5/2/78 Fix bugs in job device Arpanet extended leaders (incompatible changes to be noted here) - RCHST no longer returns byte size - see NETHST, NETIMP. Add TTYSMT as alternate name for SMARTS tty-variable. %TOSA1 no longer controls echoing, only output. This change also admits 0 (center dot) as an OK SAIL character. QSNNR bug fixed! At least one possible cause. DNR: as a synonym for DNRF: for the sake of DIRDNR: for $$^F. PIRQC 4.9, if set, pclsrs the job but doesn't give an interrupt. The Arpa and Chaos nets need this to arrange for IOC errors at the right times. [1115] 5/27/78 The following items deleted from the AI system (softwarily): 340, DSD, OMX, IMX, N D/A, PDP6, H CLK Fix bugs in disk code with respect to DELEWO and to FORCE Fix over-run bugs in mag tape code Add run-time-field to SWPHTB and PGIHTB, temporary(?) for metering [1117] 6/30/78 PAGPRE - pageing preemption without SWPWSP Additional metering to try to find why there are so many "real" schedules Bug fixes: paging, tty code. At TYMTB3, if home up is better, check whether abs positioning is even better. This will eliminate superfluous extra home-ups on VT52s. When cursor positioning with tabs, if told to go one char past the right margin, will try to do it with tabs and really mess up on VT52. However, will probably mess up on any other terminal, too. [1121] 8/8/78 Fix interrupt at wrong time bugs in Chaos NCP. A location RVVTIM recording the last time the system was revived - TAA Flush the misfeature that 1200-baud printing terminals are Terminets. Note problem with the motor turning on and off when using CRTSTY. [1122] 8/19/78 Fix MMPTMP bug in .CALL PGWRIT, caused halts at SWPACT+6 and QSWPFN+23 New Chaos protocol, never-ending stream of Chaos bug fixes Additional metering New resources of various sorts (memory, MMP, STYs, jobs) for MC Expunge useless symbols like FOO to save space in the system. FIX YET ANOTHER BUG ASSOCIATED WITH MOVING OFF RIGHT MARGIN OF A DISPLAY - THIS CAUSED VT52 TO HANG OUTPUTTING INFINITE TABS. [1127] 10/3/78 There is a deadly embrace where the Arpanet wants to go down, but the sys job is waiting for the core job which is trying to shuffle an arpanet buffer. THIS IS FIXED BY CLEARING ACTIVE-AT-PI BITS WHEN NET GOES DOWN. MORE CHAOS NET BUG FIXES AND PROTOCOL CHANGES Add checks in case ac-block selection loses [1128] 10/16/78 Fix yet more Chaos net bugs RENAME on core-link crashed the system .SHUTDN could shut the system down in 0 seconds [1131] 11/21/78 Image-mode block-IOT output on NET device transferred one word when it should have transferred zero. Fix yet more Chaos-net buffer list bugs, also bugs introduced when RFC-retransmission was put in, involving %CFOFF Who-lines display wrong thing for 6-character devices (CHAOS) [1133] 11/30/78 Bug where when using unit-mode input to EOF then doing SIOT would loop in the system - added instruction at CHRKT1. [1135] Fix "last bug" in CHAOS (CHAQSR) Fix bug that you could get write access to abs pages Add error-check at UBLST4 attempting to track down "ZUSER2" crashes. [1136] 12/15/78 Fix FII32 bug for DM Imp interface, set DM system console to 0, ignore NXR/NXS on Arpanet, make Arpanet work if non-zero network number supplied in host number. bug at typors crashes system at typda1 by clobbering t Do XCTRI XEA at PFA12 by hand to see if this instruction sometimes fails and causes famous "indexed XCT" failure. Use performance counter for accurate CPU-time metering, when a user isn't using it [1138] 1/4/79 Fix loop at ACMTC, in somewhat unsatisfactory way. Get rid of old Plasma "multiplex" lines, add 8 more STYs. [1142] 1/27/79 mag tape IOT didn't use SIOKT if SIOT was used, causing anomaly at EOF Add support for Teleray 1061 and HDS Concept-100 terminals, involves improvements to padding and abs-positioning code. ^PA now always erases to end-of-line, whether or not it crlfs first. Fix bug in PAGPRE code probably causing FLSINS instructions to skip prematurely - loss was if a pre-empt failed and the current job had just uflsed, it went ahead and ran it again without checking the flsins. Disk-file author code uses HSNAME if UNAME not identifiable with a dir. [1144] 3/5/79 large memory on mc [1145] 4/4/79 Fix long-standing bug in .UTRAN! Fix the last bug in the CHAOS NCP Increase the numbers of job slots and disk channels for MC; a better way of dealing with the cretinous deadlock for disk channels needs to be devised. [1148] 4/13/79 Fix Arpanet NCP to delay sending a CLS until after a RFNM comes back. - bug found by OTA Support multiple secondary packs; QTRSRV field is now the device-name for writing on the pack (if not 0 or -1). [1150] 6/79 Increase max virtual core on MC to 3.5M. Turn off redundant checking in CHAOS code, it clearly works. Fix bugs with TTY padding that were crashing system when you had a 1200-baud printing tty with padcr=1 Make the 2-minute clock (actually UTBFLF and UFDFLF) swap out all loose pages, to fix a bug where loose pages could stay around for a long time in MC's memory, tying up the disk space occupied by a deleted file. [1150] 6/15/79 Found bug in assembly-time test for exceeding 6 bits in IOBFT channel number codes. Use a better checksum algorithm across the 10/11 interface for the Chaos net. [1151] 7/79 Fix system deadlocks caused by %CBLOK-locked-down pages using up all the core pages which want to be used for I/O purposes. Simple-minded change is to ignore MMPLOK bit in that case. Expand MEMLZL and MEMLZH to 8 locations each so multiple ranges of memory can be patched out. Especially important when you have interleaving. Get rid of the .HKALL before the system initialization since it causes more trouble than it saves. Fix bug causing infinite hang in FINISH call on write-over channel near EOF Fix deadlock where system won't come up because the NUJBST buffer is full of network servers and the system job is trying to start the daemons. Code was completely brain-damaged. Fix bug in file system where QAUTH could pclsr, leaving a half-created file that claims to have been written on pack 0. I'm not sure this was the only source of this symptom but it's certainly one source. This may have also been the cause of the duplicate files with the same name (typically _DRGN_ BUFFER). Move TUT header to front in preparation for T-300 support on MC. .CALL ECHOIN Maybe CALL should do an input-reset? Currently DDT does one, but there's often a significant delay before it happens. (rwk, eak) I'm not sure but I think it does one now. [1154] 9/6/79 Deadlock with allocation of directory slots: If you run a program such as :DSKUSE $ which just reads all the dirs, it hangs up waiting on QFUD with QSKOSW locked; however the automatic QDFLS in QFLDF only happens with QSKOSW locked, so no other job can get in to do it. Also it would appear that nothing tells the core job to do it, at least not often enough. Fixed by making QFLDF keep trying the QDFLS over and over. Read-compare for ML [1157] 9/13/79 Increase maximum size of a disk address from 15 bits to 18 bits most places; still limited to 16 bits by UFD descriptor format (could easily be expanded to 17). [1158] 9/15/79 Support for T-300 disk on MC. [1160] 9/18/79 [1163] 10/18/79 Make switch 0 go to DDT, even if system not being debugged. This is because the address switches on the AI machine are so marginal. Hopefully this switch won't get set accidentally too much. Fix total brain-damage in the RP-10 disk code that caused it to ignore errors on the last block in a cylinder. This was causing the read-compare errors on ML. [1164] 10/29/79 Region scrolling - %TDRSU, %TDRSD, %TPRSC Fix bug that enabled interrupts in TVBNCL and caused crash at TYOAS7 in echo code. Spell %TDGRF uniformly everywhere, was %TDGPH in one place. Get rid of routine LOOSCH in CORE -- obsolete temporary bug check Eliminate possibility of reused disk addresses ("Y files") by keeping on-disk structure consistent. Remove obsolete bug check from QFLD MAXJ was inaccurate due to rounding problems Bits 1.9-1.7 of .STATUS had been broken for some years. Fix bug in BOJ device causing halts at CFH2+22 on KL's. Change CHAOS code minimally to allow Muppets to pass through uninterpreted. This will need to be done over better at some later time. [1168] Page-ahead and write-behind features (involves making >100 user variables work) Fix pdl-underflows in magtape routines. Fix bug where on KL's run time was accounted only in user mode. On KL, CFF1 could get to UFL1 with clock PI in progress, causing loop at UFL6. Bug was introduced when page fault was changed to actually cause a PI7 interrupt rather than just simulating one. Fix bug in SCHBLN feature causing first runnable job found to be ignored. Thanks to DLW. Fix worse bug in SCHBLN feature. Maybe it will actually do something now! Multi-pack secondary devices. Recalibrate timeout on AI, attentions tend to get lost sometimes Before giving out of disk space iocerr, await completion of pending file deletions (new partial-consistency scheme). Make %TPMTA work on STYs. [1185] 5/23/80 Fix bug causing system job to UFLS momentarily every time it types a character Now that SCHBLN actually has any effect, it (as predicted) allows compute bound jobs to hog the whole machine. Overhaul the whole priority and schbln mechanisms of the scheduler. [1186] 5/25/80 [1192] 6/2/80 Fix bug where QSMPRP could have 0 in the RH (causing crash with ACs clobbered) if a .IOT was retried after an IOCER2 had happened because of random access off end of file. There is still a bug in the ARC device such that it loops when this happens instead of noticing the archive file is clobbered. ...(note: a number of unrecorded changes were made in here)... Sequential paging (.PAGAHD, .PAGRANGE) implemented. Position-dependent padding of terminal output implemented. Fixed echoing of ^_ commands interaction with choice of pc ppr for echo. [1207] 3/12/81 4/5/81 Moon - Small bugs fixed: FINISH on disk channel hangs for a long time sometimes, Chaosnet doesn't handle window overflow correctly, a user executing DATAI PI, on a KL-10 crashes the system. 4/18/81 Moon - fixed CBF's kludge for insert-character on C-100 to work on ML/DM. [1213] 4/22/81 Chaosnet: Removed support for Muppets, added new foreign-protocol protocol Fixed binary directory SIOT to use SIOKT [1216] 5/21/81 Make AOSx/SOSx followed by .HANG actually work (code tried but not very well) TOP-E, TOP-S, TOP-T, TOP-X, TOP-Y and their following arg chars ignored on input unless user job has asked to see them. AI TVs support SUPDUP graphics. [1223] 9/9/81 Added Chaosnet hardware support for ML [1225] 9/14/81 Change routines that allocate core without respecting NCBCOM, the count of pages committed to use by CORGP. How did this pile of shit ever work? Routines changed from calling NMMRQ to IOMQ: GMMP4, UQL1B TTYGET, TTYSET, CNSGET, etc. work if you don't have the tty. So does opening tty channels. RESET ignored if you don't own it. New TTYTBL bits %TBOIG, %TBIIN for ignore output, interrupt on input. Installed a BUG macro similar to the 10X/20X one, and made most common halts use it. This replaces the SYSMSG routine. Documentation is with the macro definition near the front of ITS. Complete functionality requires the latest version of exec DDT (just to make it possible to P from a bugpause). There are still many halts in the system, and perhaps some of these should be converted also. [1243] 10/17/81 [1244] Include "$" (don't-reap switch) in directory listing. Logging of memory ECC errors on system console. Fix SYALC3 not to print on nonexistent terminals and TVs after the free-screen. [1251] 11/20/81 Rearrange code so when it says "net: timed out trying to come up", if the IMP ready line then turns off and on, it tries to come up again. This should make it come up by itself after the IMP breaks & is repaired. Program around lost-interrupt problem with DTE-20. Install SOPEN and bp-forms of RENAME, RENMWO, MLINK, DELETE and give job devices access to the original bps. [1256] 12/25/81 Third arg to RFNAME, to get name stored as string. %DO names for bits for opening disk channels. %DORWT bit for output opens to make input opens of same file wait rather than failing. Ignore special local editing protocol and supdup graphics input chars for all ^_ processing. [1263] 2/2/82 Change UFD paw-over so files being written when system crashed don't get their names incremented. ------ pending ------ (?) indicates probably shouldn't be done Maybe page preemption (in PPIUM) should respect job priorities? At IFSTOP, what is this garbage "have already hacked this user"? Make SIOT use KLH's FSCOPY in the unaligned case? Do up to a page boundary with less checking? Hair? Put in a value of QRCSW (in QRDCMP) that causes it to read-compare only every N ("System Reliability Assurance"). If between the time output finishes being put in the buffer and the time TYOSW is unlocked the output interrupt level finishes doing the output, and echoing is pending, nobody ever puts TTYERQ on the echo list, so the echoing never gets done. I guess typing another character unhangs it. For some reason this was exposed by a user program that got its %TDQOTs out of phase. The right way to fix this is not immediately obvious. By the way the comments in TS3TTY about finalization are wrong. SPEED parameter of a TV should be unchangeable or reset on logout. CORBLK ON DISK-WRITE CHANNEL FUCKS UP GROSSLY SEE QBWRA2, WE NEED TO GET TO QSOCL5. THIS WHOLE THING SUCKS. Probably CORBLK'ing on a disk-write-channel should do a FINISH first. Plausible? Suggested scheme for ^_ commands to work even if input buffer full, and have a ^_ command that does an input reset. Another idea is if you are in super-image input, and it dings due to input buffer full, turn off super-image so you can call out. Another idea is an interrupt character replaces the last in the buffer if it is full; various pointers and counters need updating. %CBCPY in .CALL CORBLK for JOB sources as well as FILE sources Support special (non-NCP) links for Arpanet. .CALL ATTACH WAITS ON TTYTBL WITH TREESW LOCKED, HANGING SYSTEM. E.G. RWK TTYFRE Find out why, in the SWPWSP system, the loading state doesn't work. Also find out why it tends to swap from wrong disk and like that. JOB: open, when no slots are available, should hang for a little while before erring. When generating a ">" file name for write, should prefer all-numeric names over names with non-numeric characters in them. The same should also be true for read. A reasonable way to do this would be to compare first the numeric value, then the whole name as sixbit if the numeric values are the same. The numeric value is the left-most contiguous set of digits, converted from decimal to binary, with the sign bit turned on if there are any non-digits in the name except for trailing blanks. The incrementer, however, should continue to do what it does now, thus incrementing 6.9 to 6.10 Implement chaining for disk writes (reads are much harder and more dubious.) Speedup is only marginal unfortunately. New winning echoing scheme to fix "rubout problem" Automatic time setting to avoid lusers setting incorrect time. (STRTUP) New lighthouse scheme? DDTDSK & DSKDMP shouldn't allow crash dumps to get past QSWAPA, but shouldn't shaft you by making it impossible to dump out an ITS. Should they clobber with reckless abandon in the swapping area, or respect the TUT? When gsb names a job .FILE. (DIR), it astonishes pfthmg dragon. If a job owns a sty which is its own tty, and closes the sty, it doesn't get gunned, which apparently could cause anomalies. Some kludge for a message on top level int job detached while loading. Make core-link use normal BLKT routines. CLO have interrupt-on-connected. core link device should give input-available interrupts (& handle WHYINT) RMS;PGEXCH Implement chaos net to self only for machines with no hardware net. Fix conditionals so you can have chaos without an Arpanet. Arpanet: Save subtype of destination-dead message in IMPHTB, return in NETHST. DELETE %TXSFT AND %TXSFL. (%TXSFL is gone now) %TOIML is alleged to be obsolete now, likewise %TNIML. (RIP SSV) LISTEN on a tty returns device not available if you don't own the tty. It should probably return success saying 0 chars available. Don't allow deleting FOO < to delete FOO > RENMWO with a zero 2nd arg turns into RENAME and fucks up grossly. I tried to fix this but found that it would break .FDELE. Also RENMWO always sets its UUAC to 0 instead of the given channel number arg. There should be a WHOLIN TTYVAR. Add additional tty variables, TTYSTS, TTYST1, TTYST2. EAK would like to be able to access millions of random things as tty variables, e.g. cursor pos, number of echo lines, and so forth. Can get NET: IGNORED ALLOC of a legitimate alloc right after opening a connection. Then the receiver has non-zero allocation, but the sender has zero, and hang. I can't figure out why this happens; happens from DM a lot. May have to do with starting several ML devices at once? The net may send illegitimate CLS commands when it goes down, some hosts complain. SAIL gets this also, probably it isn't our fault. Tenex thinks we are rsexec?? Still no fix for swap-write errors problem. Should barf if it's a file page, otherwise assign a new disk address. For something different from load av look at e.g. #jobs unblocked in last second (LUBTM) then avg over longer times A system call to hand a character which would echo it or rub it out as appropriate, knowing the size of what it echos as, etc. -- klh Compute rnablu and npgwtu 1, 5, and 15-minute averages. People have mumbled about authors and don't-delete bits. STYs can get the greeting message out of order, apparently old console free messages, and %TDRCR, %TDLF, %TDINI on supdup stys, occasionally. Character mode on USR: (for lisp). Can't be done. In direct connect mode, no protection against overfilling tty input buffer. But also no danger of hanging in STYO. Maybe for STYs should be a mode? RWK wants to be able to have a newline without cleol but scroll function, with more deferred. The idea is to be able to draw e.g. a box without being broken across screen boundaries, or Macsyma display, etc. I think the effect can be achieved by temporarily setting %TSMOR+%TSROL, then using CRLF. This will cleol, but you clearly want that since it does anyway in the case where it scrolls. You will have to figure out your own more processing. Macsyma should try this. For ML and DM, check memory switches better; check for 2 addresses from the processor being the same memory. Not currently detected. BOJ SIOT TTY output SIOT put %TDNOP's to align word boundaries then use BLT where that seems like it's worth it. -- hard to avoid bugs with %TDMOV -- (?) Keep a small ring buffer of the names of output files recently closed and have a command some place to print this. -- dlw RVB would like to have device names in links. Proposed hack to make SYS: a job device. (?) A better idea is something similar to 20X logical devices. i.e. Do something to allow directories to be bigger. Sort out MOREing - %TJECH, %TJMOR, %TSMOR, TYVM (?) OPEN with byte size. Way to set/adjust the length of a file (open for writing). Make JOB SIOT byte pointer available to BOJ JOB (for alignment.) Who lines scheme for non tvs? (?) Network should remember how many pending INS/INR interrupts there are. Improve data media code to grok relative positioning; make non-tab cursor motion code understand direct positioning; relates to ADM3s. KLH claims on a DM2500 not even carriage return works. ">" algorithm loses for 999999. Wraps around to 000000 and doesn't check if that file already exists. The SPY device doesn't work on free consoles -- pain in debugging ttys. $0L into pdp6 loses in core job with inf circular list - Ed There are some problems with core job, retmmp, etc. - see listing ^PA should "work" in comm mode since DDT has started using it. Optional 6th arg to .CALL TRANS CORBLK to get a fresh page doesn't necessarily do so. This should be fixed. PDUMP should also save debugging user variables. Verification of decoriolis clock when system comes up. Right thing is to run a daemon job before typing "in operation", also before accepting ^Zs. Job either gets it through net or asks on T00, if time doesn't agree with some file dates. System knows names of pdp11s on ten11 interface; some of them can only be written by one tree at a time. (?) MRC wants ^P codes to "work" in com mode on ttys of the same type. (?) Form of OPEN/RENAME/DELETE/MLINK that doesn't do translations? Improve dm daemon stuff and turn on elsewhere; e.g. need a demsig interrupt, need better dmnstr stuff. VSCLK wants to do JSP E,CHECK, but first must provide mechanism for variable PIA devices, e.g. IMP, NLPT. FORCE + FLUSH means something on input? Disk dir paw over changes for when file was open for writing when system crashed ^PS's saved cursor position should be per-tty/per-job. Undeletion. User enableable interrupt on being blocked for more than C(user variable) seconds? Macro to push PI status and turn more channels off, macro to pop PI status. (?) This a little complicated since CONI PI,A ? CONO PI,(A) doesn't work. Correct sequence is CONI PI,AC ? ANDI AC,177 ? ... ? CONO PI,2000(AC) System job can get hung if another job is typing on system console; the job waits for buffer space with TYOSW locked. Note that it must wait this way for separation of echoing/mp output. Handle figuring out which packs are mounted the way the salvager does? This would be fairly complicated to do. Perhaps the salvager could tell the system?? On MC, respond correctly to disk powered off and back on. Replace DSKDMP with DDT on AI, ML, DM ? Replace DDTDSK with (better) DSKDMP on MC ? Note- DSKDMP has been improved to have compatible symbol table, save ACs, etc. so not much need to make DDTDSK work on other machines. iotbts - control waiting for input, what returned if none, output don't hang mode These should be in LH(CTLBTS) rather than separate IOTBTS user var. automatic unhanging of LPT; both old & new have this problem (different problems). Seems to have stopped happening 10/25/77 make RSSIZE work on all devices Implement %QAOUT - ? Disk allocation system call (e.g. for KLFEDR.) KL MUSIC support. Dynamic adding and deleting of core pages (?) requires changing page eviction in core job to be modularized out of sys var grower Note page eviction has been mostly flushed now! .ATTY and .DTTY to a BOJ JOB forced by that BOJ JOB; e.g. for tektronix graphics device. Eliminate IOC error codes, and have IOC errors return open loss codes. Cause OPNL's to pop the LSWPR not all the way, but rather to a remembered level. They should also flush P down to a remembered level and then POPJ. This will allow recursive ERRSET'ing within the system, and further reduce the differences between system call routines and other subroutines. (?) The who-line should mention it if you are being queried for a com link. Make run status in who-line 9 characters instead of 6. ("+FOOBARSI") Eventually make core job part of sys job. Have SYS job attend to ^Z's by creating an inferior, disowning it and attaching it to the tty. (?) Have a UUO that Xfer's job's entire user var block into it. (?) New sys call to get # bytes of buffer space full and # bytes empty eg # bytes of output not yet transferred, and # bytes can be output before buffer is full. (?) Call I/O related routines with LH(IOCHNM) in I instead of A; and otherwise restandardize AC usage. Alternate keypad mode and alternate character set mode on VT52s (?) Redesign the file system? Support RH20, KS10, and Foonly-10. --- RMS@MIT-AI 05/16/78 21:38:19 Re: JOBREU doesn't really win To: MOON at MIT-AI, RMS at MIT-AI Reuse of job devices has the problem that the job device needs some time to settle down and do the jobreu. If you just close and reopen the ML device, the handler is never ready in time. If you sleep for 1 second, then it usually is ready, provided that it was idle when you closed it. It takes 3 seconds for it to become idle just after it is opened. Of course, real uses don't just close and reopen this way, but the point should be clear: it is necessary for the handler to indicate in advance that it will be reusable. When a job tries to open ML:, if there are no handlers in JOBREU, it should look for one which has JBCG set and says that it will do a JOBREU, and wait for that one to either do it or kill itself. At that point, looping back to the existing OPEN code will win. Add wholine & PEEK state character for loading, similar to > for swap-blocked. Add _ to wholine.