1
0
mirror of https://github.com/PDP-10/its.git synced 2026-03-30 19:24:40 +00:00
Files
PDP-10.its/src/mb/titler.3
2019-02-18 18:25:36 +01:00

383 lines
6.3 KiB
Groff
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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