diff --git a/README.md b/README.md index b98b0101..3f3062c3 100644 --- a/README.md +++ b/README.md @@ -64,12 +64,16 @@ then `ESC g`. If you use the `pdp10-kl` emulator there is no prompt and you need to type `Esc L ITS`, press Enter, and then `ESC g`. Eventually, you will see `SYSTEM JOB USING THIS CONSOLE`. You are now ready to log in, so type Control-Z. See [doc/DDT.md](doc/DDT.md) for -a list of useful commands. When done, shut down orderly by typing -`:lock` and then `5down`. +a list of useful commands. + +To shut down ITS, type `:lock` and then `5down`. Log yourself out to +avoid the 5 minute grace period: type `:logout`. When ITS writes +`SHUTDOWN COMPLETE`, it's safe to stop the emulator. ITS can optionally use some additional peripheral devices. To attach -a simulated GT40 graphics terminal, type `./start gt40` when booting -ITS. +a simulated GT40 graphics terminal, type `./start gt40`. If you run +the KA10 emulator, you can use the Knight TV raster display by typing +`./start tv11 tvcon`. On a TV, type F1 instead of Control-Z. To install your personal user files, add a subdirectory under `user` with your files inside. They will be copied to ITS. The directory diff --git a/build/build.tcl b/build/build.tcl index e3764bbe..e3826f79 100644 --- a/build/build.tcl +++ b/build/build.tcl @@ -193,10 +193,10 @@ type ":dump\r" respond "_" "dump links full list\r" respond "LIST DEV =" "tty\r" respond "TAPE NO=" "1\r" -expect -timeout 3000 "REEL" +expect -timeout 6000 "REEL" respond "_" "rewind\r" respond "_" "icheck\r" -expect -timeout 3000 "_" +expect -timeout 6000 "_" type "quit\r" shutdown diff --git a/build/misc.tcl b/build/misc.tcl index 6baf571f..a9ab4e71 100644 --- a/build/misc.tcl +++ b/build/misc.tcl @@ -609,6 +609,16 @@ respond "*" ":midas /t dsk0: .; @ munch_lars; munch\r" respond "with ^C" ".iotlsr==jfcl\r\003" expect ":KILL" +# Minskytron, translated from PDP-1. +respond "*" ":midas dsk0: lars; ts minsky_minsky tron\r" +expect ":KILL" +respond "*" ":link dsk0: .; @ minsky, lars; ts minsky\r" + +# Edward Lorenz' strange attactor. +respond "*" ":midas dsk0: lars; ts lorenz_lorenz\r" +expect ":KILL" +respond "*" ":link dsk0: .; @ lorenz, lars; ts lorenz\r" + # PI respond "*" ":midas sys3;ts pi_rwg; ran\r" expect ":KILL" diff --git a/build/pdp10-ka/start b/build/pdp10-ka/start index 7ff8e023..c346fb52 100755 --- a/build/pdp10-ka/start +++ b/build/pdp10-ka/start @@ -34,10 +34,33 @@ tvcon() { started "TV-console" "$!" } +type340() { + cp build/pdp10-ka/run out/pdp10-ka/run +} + +help() { + cat < out/pdp10-ka/run + +test -f out/pdp10-ka/nohelp || help + while test -n "$1"; do "$1" shift done -tools/sims/BIN/pdp10-ka build/pdp10-ka/run +tools/sims/BIN/pdp10-ka out/pdp10-ka/run exit 0 diff --git a/doc/NITS.md b/doc/NITS.md index 6cc794ad..4d8773fa 100644 --- a/doc/NITS.md +++ b/doc/NITS.md @@ -61,7 +61,16 @@ Note: `XX` means the name of the ITS you are building. Answer the question `MACHINE NAME = ` with `XX`. -4. Merge the ITS binary with DDT and (N)SALV. +4. If you made a change to (N)SALV, you should update @ (N)SALV. The latter is just (N)SALV dumped with its symbol table and DDT in the core image. + + ``` + L$DDT + T$(N)SALV BIN + $U + D$(N)SALV + ``` + +5. Merge the ITS binary with DDT and (N)SALV. There are two options for doing this. The normal way is to reboot and do it in DSKDMP. The other way is to do it in timesharing DDT. @@ -82,6 +91,6 @@ Note: `XX` means the name of the ITS you are building. 4. Merge in ITS with symbols: $$L .; NITS BIN 5. Write the result to disk: $Y .; @ NITS -5. If you're in DSKDMP and want to run ITS right away after dumping it, type G$. You're now in DDT. You can examine ITS, set breakpoints, etc. Type $G to start ITS. +6. If you're in DSKDMP and want to run ITS right away after dumping it, type G$. You're now in DDT. You can examine ITS, set breakpoints, etc. Type $G to start ITS. -6. When the new ITS has passed testing, rename the old `.; @ ITS` to `.; @ OITS`. Rename the new ITS to `.; @ ITS`. +7. When the new ITS has passed testing, rename the old `.; @ ITS` to `.; @ OITS`. Rename the new ITS to `.; @ ITS`. diff --git a/doc/logo.md b/doc/logo.md index b8b37f9c..c5365fa6 100644 --- a/doc/logo.md +++ b/doc/logo.md @@ -6,18 +6,18 @@ ourselves. In fact the work on LOGO to which I have devoted much of the past years consists precisely of developing such forces in positive directions." -Seymour Papert +**Seymour Papert** "Logo is the name for a philosophy of education and for a continually evolving family of computer languages that aid its realization." -Harold Abelson +**Harold Abelson** "Historically, this idea that Logo is mainly turtle graphics is a mistake. -Logo’s name comes from the Greek word for word, because Logo was first +Logo’s name comes from the Greek word for *word*, because Logo was first designed as a language in which to manipulate language: words and sentences." -Brian Harvey +**Brian Harvey** Logo was initially created by Wally Feurzeig, Seymour Papert, Daniel G.Bobrow, Cynthia Solomon and Richard Grant in 1967 as part of a National Science Foundation @@ -143,7 +143,7 @@ The emulator must be run on the KA10 simulator which supports the Type 340 displ 11LOGO system was one of the major logo versions of the 70s and included not only the LOGO evaluator but also a dedicated time-sharing system which serviced about -dozen users. MIT AI MEMO 313 cites among the system developers Ron Label, Joe Cohen, +dozen users. MIT AI MEMO 313 cites among the system developers Ron Lebel, Joe Cohen, Nat Goodman, Hal Abelson, Roger Hale, Radia Perlman. The 11LOGO display controller was designed and built by Tom Knight. The document also cited contributions of Richard Greenblatt on matters of system design and, of course, Seymour Papert and Cynthina diff --git a/doc/programs.md b/doc/programs.md index 50a84f85..da02d5ae 100644 --- a/doc/programs.md +++ b/doc/programs.md @@ -186,6 +186,7 @@ - LOCK, shut down system. - LOGO, BBN Logo. - LOOKUP, looks up user info in INQUIR database. +- LORENZ, Edward Lorenz' strange attractor. - LOSS (device). - LOTCLN - LOGOUT TIMES cleanup program. - LSPEED, set TTY line parameters. @@ -212,6 +213,7 @@ - MINI36, mini Chaosnet file server (36-bit). - MINITS, mini-ITS network utility. - MINIC, mini Chaosnet file server (old). +- MINSKY TRON, display hack translated from the PDP-1. - MLDEV/MLSLV, allows access to remote systems as devices (e.g. DB:). - MLIFE, Mike Speciner's Conway Life. - MODEMS, modems dragon. diff --git a/src/lars/lorenz.67 b/src/lars/lorenz.67 new file mode 100644 index 00000000..3b053fce --- /dev/null +++ b/src/lars/lorenz.67 @@ -0,0 +1,82 @@ +title Lorenz - strange attractor + +x=1 +y=2 +z=3 +dx=4 +dy=5 +dz=6 +dot=7 +t=10 +tt=t+1 + +dis==130 + +rho==28.0 +sigma==10.0 +beta==2.66666666666666666 + +loc 20 +step: 0.0001 + +loc 41 + jrst nts + +loc 100 + +define display data ;Send data to display when ready. + conso dis,200 + jrst .-1 + datao dis,data +termin + +define fix a,b ;Convert float in a to fixed point in a+1, + muli a,400 ;shifted by b. + tsc a,a + ash a+1,-243+19.!b(a) +termin + +go: seto x, + .iotlsr x, +nts: cono dis,100 + display <[020016]> ;Parameters, go to point mode. + + move x,[1.0] + move y,[1.0] + move z,[1.0] + move dot,[220000,,022000] + +loop: move dy,[rho] ;dy/dt = (rho-z)*x - y + fsb dy,z + fmp dy,x + fsb dy,y + + move dx,y ;dx/dt = (y-x) * sigma + fsb dx,x + fmp dx,[sigma] + + move dz,x ;dz/dt = x*y - beta*z + fmp dz,y + move t,z + fmp t,[beta] + fsb dz,t + + fmp dx,step ;Update x,y,z from differentials. + fmp dy,step + fmp dz,step + fad x,dx + fad y,dy + fad z,dz + + move t,x ;Convert x,y to fixed point. + fix t,-15. + addi tt,512. + dpb tt,[001200,,dot] + move t,y + fix t,-15. + addi tt,512. + dpb tt,[221200,,dot] + display dot ;And plot on display. + jrst loop + +end go diff --git a/src/lars/minsky.tron b/src/lars/minsky.tron new file mode 100644 index 00000000..70f393cc --- /dev/null +++ b/src/lars/minsky.tron @@ -0,0 +1,141 @@ +TITLE MINSKYTRON + +;Set switches to e.g. 677721. + +A=1 +B=2 +XY=3 +P=17 + +APR==0 +DIS=130 + +LOC 41 + JRST NTS + +LOC 100 +GO: SETO A, + .IOTLSR A, ;If NTS, go to UUO hander at 41. + +NTS: CONO DIS,100 ;Reset display. + DATAO DIS,[020016] ;Parameter mode, go to point mode. + MOVE XY,[220000,,022000];Two point mode words. + + DATAI APR,A ;Get switches. + HRLZ B,A +M1: JSP P,GSH ;Make six shift instructions. + MOVEM A,SH0 + JSP P,GSH + MOVEM A,SH1 + JSP P,GSH + MOVEM A,SH2 + JSP P,GSH + MOVEM A,SH3 + JSP P,GSH + MOVEM A,SH4 + JSP P,GSH + MOVEM A,SH5 +M2: MOVE A,XA0 ;Copy the initial state. + MOVEM A,XA + MOVE A,XB0 + MOVEM A,XB + MOVE A,XC0 + MOVEM A,XC + MOVE A,YA0 + MOVEM A,YA + MOVE A,YB0 + MOVEM A,YB + MOVE A,YC0 + MOVEM A,YC + +M3A: MOVE A,XA ;Update XA and YA. + ADD A,XB + HRRES A + XCT SH0 + ADD A,YA + MOVEM A,YA + SUB A,YB + HRRES A + XCT SH1 + MOVNS A + ADD A,XA + MOVEM A,XA + MOVE B,YA + JSP P,DPY +M3B: MOVE A,XB ;Update XB and YB. + SUB A,XC + HRRES A + XCT SH2 + ADD A,YB + MOVEM A,YB + SUB A,YC + HRRES A + XCT SH3 + MOVNS A + ADD A,XB + MOVEM A,XB + MOVE B,YB + JSP P,DPY +M3C: MOVE A,XC ;Update XC and YC. + SUB A,XA + HRRES A + XCT SH4 + ADD A,YC + MOVEM A,YC + SUB A,YA + HRRES A + XCT SH5 + MOVNS A + ADD A,XC + MOVEM A,XC + MOVE B,YC + JSP P,DPY + + JSP P,DELAY + JRST M3A + +GSH: SETZ A, ;Get a shift instruction. + ROTC A,3 + MOVE A,GST(A) + JRST (P) + +GST: REPEAT 9.,[ASH A,-1-.RPCNT +] + +DPY: LSH A,-8 ;Display a point at A,B. + LSH B,-8 + ADDI A,512. + ADDI B,512. + DPB A,[001200,,XY] + DPB B,[221200,,XY] + CONSO DIS,200 ;Wait for display. + JRST .-1 + DATAO DIS,XY ;Send display instruction. + JRST (P) + +DELAY: MOVE A,[10000.] + SOJGE A,. + JRST (P) + +XA0: -137016/3 +XB0: 0 +XC0: 020000/3 +YA0: 0 +YB0: 060000/3 +YC0: 0 + +XA: 0 +XB: 0 +XC: 0 +YA: 0 +YB: 0 +YC: 0 + +SH0: 0 +SH1: 0 +SH2: 0 +SH3: 0 +SH4: 0 +SH5: 0 + +END GO diff --git a/src/sysen2/peek.630 b/src/sysen2/peek.631 similarity index 99% rename from src/sysen2/peek.630 rename to src/sysen2/peek.631 index 8d9027c9..849575ce 100755 --- a/src/sysen2/peek.630 +++ b/src/sysen2/peek.631 @@ -474,9 +474,10 @@ CHNPI:CHNPO:CHNPF:CHNSTS:CHNSNS:CHNRTR:CHNPFL:CHNPD: CHNABT:CHNCRC:CHNCR2:CHNWLE:CHNPLE:CHNLOS:CHNSPZ: CHTTBF:CHFRBF:CHQRFC:CHQLSN:CHNIPI:CHNIPO: TCPUP:PKBNT:PKBNF:OVHTB2: -PKEQHF:IPOUTQ:IPOBLQ:PKETBL:] +PKEQHF:IPOUTQ:IPOBLQ:PKETBL: +DISUSR:LPTUSR:PDPUSR:PTPUSR:PTRUSR:] -;No longer used: DISUSR:LPTUSR:NVDUSR:PDPUSR:PLTUSR:PTPUSR:PTRUSR:TABUSR: +;No longer used: NVDUSR:PLTUSR:TABUSR: ; MSUSER:MSREAD:MSRED2:MSWRIT:MSWRT2:IMPBPQ: ; IMNOSH:IMNISH:IMPNPE:IMNSRF:IMNSRC:IMNRFN:IMPNIH: @@ -495,10 +496,11 @@ XBRWND:XBSAVW:MTRCNT:MTRNAM: CHSUSR:CHSSTA:CHSNBF:CHSNOS:CHSFRN:CHSACK:CHSPKN:CHSWIN:CHSIBP:CHSOBP: IPGWTN:IPGWTG:IPGWTI:IPGWTM:SBNRUT: PGIHTB:SWPHTB:OVHTB1: -IPUQHD:IPFDPE:XBITQH:XBORTQ:XBOCOS:] +IPUQHD:IPFDPE:XBITQH:XBORTQ:XBOCOS: +DG2:DRTM:EUPOS:UDIR:UDIRO:UGOAL:ULCTM:UTASS:UTBFS: +UTTNO:UTUSR:UMNTR:] -;No longer used: DG2:DRTM:EUPOS:UDIR:UDIRO:UGOAL:ULCTM:UTASS:UTBFS: -; UTTNO:UTUSR:UMNTR:MPXBUF: +;No longer used: MPXBUF: ; IMSOC1:IMSOC2:IMSOC3:IMSOC4:IMSOC5:IMSOC6:IMSOC7:IMSOC8: ;+SYSBEG(U) @@ -1234,7 +1236,7 @@ IFN 0,[ MODEF "R,RNABLE,%MFERO, "Running jobs" %MDS:: MODEF "S,SPEEK,, "Single Tree (job#)" MODEF "T,TRANPK,, "Translations" -IFN 0, MODEF "U,UTPEEK,%MFERO, "Utape??" + MODEF "U,UTPEEK,%MFERO, "Utape" MODEF "V,DOUSER,, "job Variables (job#)" ; ULOOK checks MODE to hack this one (swap vars) MODEF "W,WROUTE,, "Internet, Chaosnet routing tables (1W is Chaos only)" @@ -1857,7 +1859,7 @@ TSINL1: SUBI I1,12. ;LIGHT-PEN HIT IN UPPER (USER) AREA HLRZ I1,LPBLK SUBI I1,1700 MOVNS I1 - IDIVI I1,18. + IDIVI I1,22. ;22 DOTS PER CHARACTER SOS I1 IMULI I1,6 ADD I1,LPBLK+1 @@ -6096,7 +6098,6 @@ RESR2: MOVEI T,"% HRRZ B,@UREALT CAMN U,B JSP A,RESCHO ;real time user -IFN 0,[ SKIPE PDPUSR CAME U,@PDPUSR JRST RESR4 @@ -6106,7 +6107,6 @@ IFN 0,[ CONI 130,A SKIPN A JSP A,RESCHO ;340 display user -];IFN 0 RESR4: MOVSI B,RESTAB-RESTBE RESR3A: HRRZ T,RESTAB(B) SKIPN (T) @@ -6142,12 +6142,12 @@ RESOR3: JFCL ODEVER RESOR3 RESTAB: "C_11.,,@CUSER ;core alocator user -IFN 0,[ ;Remove stuff that no longer exists "D_11.,,@DISUSR ;340 display user "L_11.,,@LPTUSR ;line printer user "R_11.,,@PTRUSR ;paper tape reader user - "P_11.,,@PLTUSR ;plotter user "T_11.,,@PTPUSR ;paper tape punch user +IFN 0,[ ;Remove stuff that no longer exists + "P_11.,,@PLTUSR ;plotter user "V_11.,,@NVDUSR ;tv camera user "S_11.,,@TABUSR ;tablet user ];IFN 0 @@ -7268,8 +7268,6 @@ LOVHMT==.-OVHMTN SUBTTL Mode "U" - DECtape status display -IFN 0,[ - UTPEEK: ATYPE UTTOP MOVN C,NUNITS HRLZS C @@ -7339,7 +7337,6 @@ UTTOP: ASCIZ /Dirc Goal Pos Dg2 Dir Umntr Utass / UTMID: ASCIZ /Cn Tn Uname Jname Dir Bufs / -];IFN 0 SUBTTL Misc constants diff --git a/src/sysen2/stuff.93 b/src/sysen2/stuff.94 old mode 100755 new mode 100644 similarity index 99% rename from src/sysen2/stuff.93 rename to src/sysen2/stuff.94 index 484fb888..16ccf998 --- a/src/sysen2/stuff.93 +++ b/src/sysen2/stuff.94 @@ -689,6 +689,8 @@ TVFIX: MOVE E,[SQUOZE 0,TT11P] JRST DIE MOVE A,[JRST FIXOK] ;COME BACK HERE LATER MOVEM A,OK + MOVE A,[JRST DIE] ;ANY ATTEMPT TO TYPE ANYTHING IS AN + MOVEM A,TYPE ;ERROR AND WILL NOT WORK ANYWAY MOVE A,[ASCII /TVî/] JRST STUFF diff --git a/src/teach/errhel.38 b/src/teach/errhel.38 index 06ac43f1..d48a3a1e 100755 --- a/src/teach/errhel.38 +++ b/src/teach/errhel.38 @@ -1,4 +1,4 @@ --*- Mode:LISP; -*- +;;; -*- Mode:LISP; -*- (herald ERRHEL)