diff --git a/Makefile b/Makefile index cef1016d..33187583 100644 --- a/Makefile +++ b/Makefile @@ -27,7 +27,7 @@ SRC = syseng sysen1 sysen2 sysen3 sysnet kshack dragon channa \ macsym lmcons dmcg hack hibou agb gt40 rug maeda ms kle aap common \ fonts zork 11logo kmp info aplogo bkph bbn pdp11 chsncp sca music1 \ moon teach ken lmio1 llogo a2deh chsgtv clib sys3 lmio turnip \ - mits_s rab stan_k bs cstacy kp dcp2 -pics- victor imlac rjl + mits_s rab stan_k bs cstacy kp dcp2 -pics- victor imlac rjl mb DOC = info _info_ sysdoc sysnet syshst kshack _teco_ emacs emacs1 c kcc \ chprog sail draw wl pc tj6 share _glpr_ _xgpr_ inquir mudman system \ xfont maxout ucode moon acount alan channa fonts games graphs humor \ diff --git a/build/misc.tcl b/build/misc.tcl index 58a37882..01e30d55 100644 --- a/build/misc.tcl +++ b/build/misc.tcl @@ -512,6 +512,10 @@ expect ":KILL" respond "*" ":palx bs;_dazzle\r" expect ":KILL" +# TITLER +respond "*" ":midas dsk0:.;@ titler_mb; titler\r" +expect ":KILL" + # MLIFE respond "*" ":midas;324 games;ts mlife_rwg;mlife\r" expect ":KILL" diff --git a/doc/programs.md b/doc/programs.md index b2c3d166..e0cb52f7 100644 --- a/doc/programs.md +++ b/doc/programs.md @@ -308,6 +308,7 @@ - TIMES, TCP time server. - TIMOON, displays the time and phase of the moon. - TIMSRV, RFC 868 network time protocol server. +- TITLER, display text on color scope. - TJ6, typesetting software. - TMPKIL, delete old files from .TEMP. - TREES, list toplevel jobs. diff --git a/src/mb/titler.3 b/src/mb/titler.3 new file mode 100644 index 00000000..01b92194 --- /dev/null +++ b/src/mb/titler.3 @@ -0,0 +1,383 @@ +TITLE TITLER + +A=1 +B=2 +C=3 +D=4 +E=5 +F=6 +G=7 +R=10 +S=11 +T=12 +U=T+1 +X=14 +Y=15 +Z=16 +P=17 + +RN2==U+1 + +DEFINE FIX X + MULI X,400 + TSC X,X + ASH X+1,-243(X) +TERMIN + +DEFINE FLOAT X + TLC X,232000 + FADR X,X +TERMIN + +DEFINE RANDT + MOVE T,U + MUL T,[11060471625] + DIV T,[SETZ-37] ;RANDOMNESS IN T EXCEPT TOP FEW BITS +TERMIN + +DEFINE RANDU + MOVE U,RN2 + MUL U,RN1 + DIV U,[SETZ-37] ;RANDOMNESS IN U EXCEPT TOP FEW BITS +TERMIN + CSCOP==420 + +WHITE==333733 +PINK==370037 ;REALLY MAGENTA (PINK = 312525) +RED==370000 +ORANGE==322600 ;INTENSITY KNOB MUST BE AT MAX FOR ANY DECENT ORANGE +YELLOW==333300 +YELGRN==273300 +GREEN==003700 +BLUGRN==003727 +BLUE==000037 +VIOLET==270035 + +;CONO 420 BITS (20 BIT IS ENABLE, SO INTENSITIES < 20 = OFF) +;370000 RED INTENSITY (<22 = OFF) +;003700 GREEN INTENSITY (ENTIRE RANGE USABLE) +;000037 BLUE INTENSITY (<25 = OFF) + +;DATAO 420 BITS +;0,,777000 X DEFLECTION +;0,,000777 Y DEFLECTION + RADIX 2 +%A==10001100011000111111100011000101110 +%B==11110100011000111110100011000111110 +%C==01110100011000010000100001000101110 +%D==11110100011000110001100011000111110 +%E==11111100001000011110100001000011111 +%F==10000100001000011110100001000011111 +%G==01110100011001110000100001000101110 +%H==10001100011000111111100011000110001 +%I==01110001000010000100001000010001110 +%J==01110100010000100001000010000100111 +%K==10001100011001011100101001001010001 +%L==11111100001000010000100001000010000 +%M==10001100011000110001101011101110001 +%N==10001100011001110101110011000110001 +%O==01110100011000110001100011000101110 +%P==10000100001000011110100011000111110 +%Q==01111100111010110001100011000101110 +%R==10001100011000111110100011000111110 +%S==01110100010000101110100001000101110 +%T==00100001000010000100001000010011111 +%U==01110100011000110001100011000110001 +%V==00100010101000110001100011000110001 +%W==01010101011000110001100011000110001 +%X==10001100010101000100010101000110001 +%Y==00100001000010000100010101000110001 +%Z==11111010000010001110001000001011111 +%6==01110100011000111110100001000101110 +%STAR==00000101010111011011011101010100000 +%DASH==00000000000000011111000000000000000 +%%==0 ;SPACE +RADIX 8 + BEG: MOVEI P,PDL-1 + MOVE RN2,RN1 + MOVEI E, ;WHERE IN DISBUF TO SALT + MOVEI F, + PUSHJ P,SALT + MOVEM E,DISL1E + AOS F + PUSHJ P,SALT + MOVEM E,DISL2E + AOS F + PUSHJ P,SALT + MOVEM E,DISL3E + AOS F + PUSHJ P,SALT + MOVEM E,DISL4E + + MOVSI A,-4 +MIX1: MOVE B,DISL0E(A) ;BASE + MOVE C,DISL0E+1(A) + SUB C,B ;NUMBER OF ENTRIES + MOVEI D,1000 +MIX2: RANDU + MOVE T,U + IDIV T,C + MOVE E,U + RANDU + MOVE T,U + IDIV T,C + MOVE F,U + ADD E,B + ADD F,B + MOVE T,DISBUF(E) + EXCH T,DISBUF(F) + MOVEM T,DISBUF(E) + SOJG D,MIX2 +MIX4: JRST MIX3 ;JFCL TO TEST + MOVN D,C + HRLS D + HRR D,B +MIX5: MOVS F,DISBUF(D) + CONO CSCOP,(F) + DATAO CSCOP,DISBUF(D) + MOVEI E,24 + SOJG E,. + AOBJN D,MIX5 + JRST MIX4 + SALT: +DIS2: SKIPL C,DISL(F) + JRST CHAR + HLR T,C + ANDI T,7 + XCT DISOPR(T) +DIS3: AOJA F,DIS2 ;READY FOR NEXT DISLIST ENTRY + +DISOPR: JRST . + HRRZ D,C ;UPDATE X,Y TO THIS + HRRM C,CCOLR ;UPDATE COLOR TO THIS + JRST . ;TIME TEST + HRRM C,CHAR6 ;UPDATE CHARACTER SIZE TO THIS + POPJ P, ;DISPLAY DONE + +CHAR: MOVSI B,-7 ;SCANS INCREMENTAL Y + HRRZ T,CHAR6 + IMULI T,7000 + HRRM T,CHAR4 +CHAR1: MOVSI A,-5 ;SCANS INCREMENTAL X +CHAR2: TLNE C,200000 + JRST CHAR5 +CHAR3: LSH C,1 + AOBJN A,CHAR2 + AOBJN B,CHAR1 +CHAR4: ADDI D,7000 ;DX = 7 * SIZE, DY = 0 + JRST DIS3 ;CHARACTER DONE + +CHAR5: MOVEI T,(A) + LSH T,9 + IORI T,(B) +CHAR6: IMULI T,1 ;SIZE + ADD T,D + HRL T,CCOLR + MOVEM T,DISBUF(E) + AOS E + JRST CHAR3 + +CCOLR: 0 ;CURRENT COLOR + MIX3: AOBJN A,MIX1 + + MOVEI A, +SHOW1: MOVEI D,120 ;NUMBER OF STATIC FRAMES +SHOW2: MOVE B,DISL0E(A) + SUB B,DISL0E+1(A) + HRLS B + HRR B,DISL0E(A) + MOVE C,DISL0E+1(A) + SUB C,DISL0E+2(A) + HRLS C + HRR C,DISL0E+1(A) + CAIL D,20 + MOVE C,B + MOVE G,C +SHOW3: MOVS F,DISBUF(C) + CONO CSCOP,(F) + DATAO CSCOP,DISBUF(B) + MOVEI E,24 + SOJG E,. + AOBJN C,.+2 + MOVE C,G + AOBJN B,SHOW3 + PUSHJ P,FRAME + SOJG D,SHOW2 + + CAIN A,3 + JRST DONE + CLEARM INDEX ;NOT DONE, MERGE TO NEXT STATIC +SHOW4: CLEARM FLAG ;FRAME FLAG + MOVE B,DISL0E(A) + MOVE C,DISL0E+1(A) +SHOW5: HRRZ D,DISBUF(B) + LSHC D,-11 + LSH E,-33 + HRRZ F,DISBUF(C) + LSHC F,-11 + LSH G,-33 + SUB G,E + IMUL G,INDEX + ADDI G,200 + SKIPG G + SUBI G,400 + ASH G,-10 + ADD E,G + SUB F,D + IMUL F,INDEX + ADDI F,200 + SKIPG F + SUBI F,400 + ASH F,-10 + ADD D,F + LSH E,33 + LSHC D,11 + MOVS F,DISBUF(C) + CONO CSCOP,(F) + DATAO CSCOP,D + AOS B + CAME B,DISL0E+1(A) ;END OF OLD FRAME? + JRST SHOW6 ;NO + AOSG FLAG ;YES, AND NEW? + JRST SHOW7 ;BOTH ENDED + MOVE B,DISL0E(A) +SHOW6: AOS C + CAME C,DISL0E+2(A) ;END OF NEW FRAME? + JRST SHOW5 ;NO + SOSL FLAG ;YES, AND OLD? + JRST SHOW7 ;BOTH ENDED + MOVE C,DISL0E+1(A) + JRST SHOW5 + +SHOW7: PUSHJ P,FRAME + AOS D,INDEX + CAIG D,400 + JRST SHOW4 ;MORE + AOJA A,SHOW1 ;NEXT STATIC + +DONE: PUSHJ P,CLOSE + JRST . + +LEADER: MOVEI P,PDL-1 + MOVEI A,310 ;5 FEET + PUSHJ P,FRAME + SOJG A,.-1 + JRST . + +FLAG: 0 +INDEX: 0 + +DISL0E: 0 +DISL1E: 0 ;END OF FIRST DISPLAY LIST (LAST LOCATION + 1) +DISL2E: 0 +DISL3E: 0 +DISL4E: 0 + +DISBUF: BLOCK 10000 + +RN1: 11060471625 ;5 TO THE THIRTEENTH + +PDL: BLOCK 20 +PATCH: BLOCK 100 + DEFINE DPY A +IRPC B,,[A] +%!B +TERMIN +TERMIN + +DISL: +DISL1: 400002,,RED + 400004,,6 + 400001,,136440 +DPY FOR%LYNN + 400001,,012260 +DPY FROM%MICHAEL + 400005,,0 + +DISL2: 400002,,GREEN + 400004,,12 + 400001,,335133 +DPY HELLO + 400005,,0 + +DISL3: 400002,,GREEN + 400004,,4 + 400001,,026464 +DPY COMPUTER%MUSIC%BY + 400002,,RED + 400001,,116404 +DPY STEVE%SMOLIAR + 400002,,GREEN + 400004,,3 + 400001,,061340 +DPY PLAYED%BY%THE%PDP + %DASH + %6 + 400002,,BLUE + 400004,,4 + 400001,,242260 +DPY A%I%LAB + 400005,,0 + +DISL4: 400004,,3 + 400001,,061432 + 400002,,RED +DPY WITH% + 400002,,ORANGE +DPY SPECIAL% + 400002,,YELLOW +DPY THANKS + 400001,,163366 + 400002,,YELGRN +DPY TO% + 400002,,GREEN +DPY MIKE% + 400002,,BLUGRN +DPY BEELER + 400001,,210322 + 400002,,BLUE +DPY A%I%LAB%% + 400002,,VIOLET +DPY MIT + 400005,,0 + ;CCW = FWD = 0, 100, 300, 200, 0, ... +;WHEN LOADED, THINKS SHUTTER IS CLOSED +;CLOBBERS NO ACCUMULATORS + +CLOSE: SKIPN SHUTTR + POPJ P, + CLEARM SHUTTR + JRST OPEN1 + +FRAME: PUSHJ P,CLOSE + SKIPE STOP + JRST .-1 +OPEN: SKIPE SHUTTR + POPJ P, + SETOM SHUTTR +OPEN1: PUSH P,A + PUSH P,B + MOVEI A,62 ;25. COMPLETE CYCLES = 1/2 REVOLUTION +OPEN2: MOVEI B,100 + XORB B,MOTOR + DATAO 760,B + MOVEI B,550 ;PDP-10 2000 MISSES ABOUT 1 STEP/REVOLUTION + SOJG B,. + MOVEI B,200 + XORB B,MOTOR + DATAO 760,B + MOVEI B,550 + SOJG B,. + SOJG A,OPEN2 + AOS NHREVS + POP P,B + POP P,A + POPJ P, + +SHUTTR: 0 ;0 = SHUTTER CLOSED, -1 = OPEN +MOTOR: 0 ;LAST DATAO TO MOTOR +NHREVS: 0 ;NUMBER OF HALF REVOLUTIONS SINCE START +STOP: 0 ;NON-ZERO = PAUSE WITH SHUTTER CLOSED + +END +  \ No newline at end of file