mirror of
https://github.com/PDP-10/its.git
synced 2026-03-30 19:24:40 +00:00
383 lines
6.3 KiB
Groff
383 lines
6.3 KiB
Groff
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
|
||
|