1
0
mirror of https://github.com/PDP-10/its.git synced 2026-02-26 17:03:20 +00:00

TITLER - display text on color scope.

This commit is contained in:
Lars Brinkhoff
2019-02-18 15:04:45 +01:00
parent 1e13b9c0ea
commit 771e14655a
4 changed files with 389 additions and 1 deletions

View File

@@ -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 \

View File

@@ -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"

View File

@@ -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.

383
src/mb/titler.3 Normal file
View File

@@ -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