perm filename CRE[GEM,BGB]1 blob
sn#021785 filedate 1973-03-25 generic text, type T, neo UTF8
00100 TITLE CRE - CART'S EYE THREE - DECEMBER 1972.
00200
00300 ;CONTROL FLAGS.
00400 INTERN FLGSIX,FLGARC,FLGBK
00500
00600 FLGKRK:-1 ;ENABLE KRAKAUER TREE.
00700 FLGSIX:-1 ;SIX BIT TELEVISON.
00800 FLGARC:-1 ;ENABLE MAKE ARC SMOOTHING.
00900
01000 FLGBK:-1 ;ENABLE BABY KILLER.
01100 VCUT:-14 ;VECTOR DISPLAY CONTRAST THRESHOLD.
01200 FLGWED:0 ;DISPLAY WINGED EDGED IMAGE.
01300
01400 FLGBGB:0 ;RUNNING UNDER A BGB PPPN.
01500 FLGRAR:1 ;DISPLAY RECIPROCAL ARC RADIALS.
01600 ;-1 BOTH, 0 VIC, +1 ARCS.
01700 FLGKINK:0 ;DISPLAY KINKS.
01800 FLGU:-1 ;KILVIC ENABLE.
01900
02000 ;ARC WIDTH PROPORTIONAL TO CONTRAST TABLE FOR MKARCS.
02100 ARCWID:
02200 FOR I←0,3{2.0↔}
02300 FOR I←4,5{1.5↔}
02400 FOR I←6,12{1.25↔}
02500 FOR I←13,17{1.0↔}
02600 FOR I←20,37{1.0↔}
02700 FOR I←40,77{0.7↔}
02800 0
02900
03000
03100 ;POINTERS TO SKY ROWS - COLUMN ACCUMULATOR-3.
03200 SKY: FOR I←0,=216{
03300 1B18+=289*I(3)}
03400
03500 SUBR(LOCKIN)
03600 LAC[XWD 400017,.+3]↔CALLI 400003↔POP0J↔HALT
03700 DEFINE UNLOCK{043000636367}
00100 ;CAREYE STANDARD TV FILE IS =10496 WORDS LONG, 24400 OCTAL.
00200 ;=10 WORD HEADER, =216 ROWS OF =288 COLUMNS OF 6 BITS PER PIXEL.
00300 ;=118 WORD TRAILER.
00400
00500 HI ←← 400000
00600 $←400000
00700
00800 PAC ← HI ↔ HI ←← HI + =1728 ;PICTURE ACCUMULATOR.
00900 VSEG← HI ↔ HI ←← HI + =1729 ;VERTICAL SEGMENTS.
01000 HSEG← HI ↔ HI ←← HI + =1736 ;HORIZONTAL SEGMENTS.
01100
01200 HI ←← HI + =86 ;NEGATIVE ROWS.
01300 HEADER←HI ↔ HI ←← HI + =10
01400 TVBUF ←HI ↔ HI ←← HI + =10368 ;TV BUFFER 6 BITS PER PIXEL.
01500 HI ←← HI + =54 ;FREE SPACE.
01600 HISTO ←HI ↔ HI ←← HI + =64 ;HISTOGRAM.
01700 FTVSIX←HI ↔ HI ←← HI + 1 ;FLAG TV SIX BIT.
01800 FTVHIS←HI ↔ HI ←← HI + 1 ;FLAG TV HISTOGRAM PRESENT.
01900
02000
02100 ;POINTERS TO TV SEGMENT.
02200 TV: 0
02300 POINT 6,-1,29 ;COLUMN -2.
02400 POINT 6,-1,35 ;COLUMN -1.
02500 COLPTR: FOR I←0,=48{
02600 I+<POINT 6,0,05>↔I+<POINT 6,0,11>↔I+<POINT 6,0,17>
02700 I+<POINT 6,0,23>↔I+<POINT 6,0,29>↔I+<POINT 6,0,35>}
02800 ROWPTR: FOR I←0,=216{
02900 I*=48+TVBUF}
03000 ISAVED: 0
03100
03200 TVSEG: 0
03300 SKYSEG: 0
03400 O(ATTSEG,CALLI 400016)
03500 O(DETSEG,CALLI 400017)
03600 O(SEGNUM,CALLI 400021)
03700 O(CORE2, CALLI 400015)
00100 ;INITIALIZATION---------------------------------------------------
00200 OPDEF PPIOT[702B8]
00300 PDL: BLOCK 100
00400
00500 ;START ADDRESS
00600 SA: LAC 17,[IOWD 100,PDL]
00700 CALL(MORCOR)
00800
00900 ;RE-ENTRY ADDRESS.
01000 REE: LACI .↔DAC 124
01100 PPIOT 2,-=250↔PPIOT 3,3003
01200 MOVEI 20↔CRLF↔SOJG .-1
01300 SETZ↔CALLI 24↔CDR
01400 CAIN'BGB'↔SETOM FLGBGB
01500 LAC 17,[IOWD 100,PDL]
01600 CALL(CROP)
01700 CALL(DPYIMG)
01800 PUSHJ TTY
01900 CALLI 12
02000 ;6/12/72----------------------------------------------------------
02100 ;TELETYPE COMMAND STATE.
02200 DECLARE{CTRL,META,CHR}
00100 SUBR(TTY)---------------------------------------------------------
00200 BEGIN TTY;CAREYE TELETYPE COMMAND JUMP TABLE -BGB- NOVEMBER 1972.
00300 L0: CRLF
00400 L1: OUTCHR["*"]
00500 INCHRW
00600 SETZM CTRL↔TRZE 200↔SETOM CTRL
00700 SETZM META↔TRZE 400↔SETOM META
00800 CAIN 0,15↔GO L1+1
00900 CAIN 0,12↔GO L1
01000 DAC 0,CHR
01100
01200 ;TEST FOR LETTER COMMAND.
01300 LAC 1,0↔ANDI 1,37
01400 CAIGE 0,"A"↔GO .+3
01500 CAIG 0,"Z"↔GO L3
01600 CAIGE 0,"a"↔GO .+3
01700 CAIG 0,"z"↔GO L3
01800
01900 ;WINDOW MOVING COMMANDS.
02000 CAIN 0," "↔GO L2
02100 CAIN 0,":"↔GO[LAC SX↔FAD DEL↔DAC SX↔GO L2]
02200 CAIN 0,";"↔GO[LAC SX↔FSB DEL↔DAC SX↔GO L2]
02300 CAIN 0,")"↔GO[LAC SY↔FAD DEL↔DAC SY↔GO L2]
02400 CAIN 0,"("↔GO[LAC SY↔FSB DEL↔DAC SY↔GO L2]
02500 CAIN 0,"/"↔GO[LAC DEL↔FSC -1↔DAC DEL↔GO L2]
02600 CAIN 0,"\"↔GO[LAC DEL↔FSC 1↔DAC DEL↔GO L2]
02700 CAIN 0,"*"↔GO[LAC MAG↔FMP[1.5]↔DAC MAG↔GO L2]
02800 CAIN 0,"-"↔GO[LAC MAG↔FDV[1.5]↔DAC MAG↔GO L2]
02900
03000 ;QBLK CHANGING COMMANDS.
03100 CAIN 0,"!"↔GO[SETZ 1,↔GO L2B+1]
03200 CAIN 0,"+"↔GO[LAC 1,FILM↔GO L2B+1]
03300 CAIN 0,","↔GO[SKIPE 1,QBLK↔CW 1,1↔GO L2B]
03400 CAIN 0,"."↔GO[SKIPE 1,QBLK↔CCW 1,1↔GO L2B]
03500 CAIN 0,"↓"↔GO[SKIPE 1,QBLK↔ENDO 1,1↔GO L2B]
03600 CAIN 0,"↑"↔GO[SKIPE 1,QBLK↔EXO 1,1↔GO L2B]
03700 CAIN 0,"↔"↔GO[SKIPE 1,QBLK↔ARC 1,1↔GO L2B]
03800 CAIN 0,"≥"↔GO[SKIPE 1,QBLK↔PED 1,1↔GO L2B]
03900 CAIN 0,"≤"↔GO[SKIPE 1,QBLK↔NED 1,1↔GO L2B]
04000 CAIN 0,"<"↔GO[SKIPE 1,QBLK↔NCCW 1,1↔GO L2B]
04100 CAIN 0,">"↔GO[SKIPE 1,QBLK↔SON 1,1↔GO L2B]
04200 CAIN 0,"→"↔GO[SKIPE 1,QBLK↔PGON 1,1↔GO L2B]
04300 CAIN 0,"←"↔GO[SKIPE 1,QBLK↔NGON 1,1↔GO L2B]
04400 CAIN 0,"6"↔GO[SETOM FLGSIX↔SETOM FTVSIX↔GO L1]
04500 CAIN 0,"4"↔GO[SETZM FLGSIX↔SETZM FTVSIX↔GO L1]
04600 GO L0
04700
04800 L2: CALL(CROP)↔CALL(DPYIMG)↔GO L1+1
04900 L2B: SKIPE 1↔DAC 1,QBLK↔CALL(DPYBLK)↔GO L1+1
00100
00200 L3: PUSHJ P,@L4(1)↔GO L1
00300
00400 L4: NOP ;null.
00500 FLGA. ;"A" ARC MAKE FLAG.
00600 CART ;"B" DRIVE BACKWARDS.
00700 MAKCUT ;"C" MAKE THRESHOLD CUT.
00800 FLGB. ;"D" DELETE BABY POLYGONS.
00900 FLGE. ;"E"
01000 CART ;"F" DRIVE FORWARDS.
01100 NOP ;"G"
01200 DPYHIS ;"H" HISTOGRAM, "αH" ,"βH" BI-MODAL CUT.
01300 CREIN ;"I" INPUT.
01400 BIMOD ;"J" TWO CUTS AT 3% FROM ENDS.
01500 FLGK. ;"K" KRAKAUER FLAG.
01600 CART ;"L" TURN LEFT. "αL" PAN CAMERA LEFT.
01700 MKGLYPH ;"M" MAKE GLYPH IMAGE.
01800 NEXIMG ;"N" IMAGE RETREAT.
01900 CREOUT ;"O" OUTPUT.
02000 PLOTO ;"P" PLOT OUTPUT FILE.
02100 MKCUTS ;"Q" EQUI-SPACED CUTS.
02200 CART ;"R" TURN RIGHT. "αR" PAN CAMERA RIGHT.
02300 CAMERA ;"S" SELECT CAMERA, "αS" BCLIP, "βS" TCLIP.
02400 TVCAMI ;"T" TAKE TELEVISON PICTURE. "αT" SIXBIT.
02500 FLGU. ;"U"
02600 CART ;"V" CART DIAGONOSTIC COMMAND MODE.
02700 AWIDTH ;"W"
02800 TVXGP ;"X" XEROX OUTPUT.
02900 FLGR. ;"Y" DISPLAY RECIPROCAL ARC RADIALS.
03000 KILLER ;"Z" ZERO DATA BUFFERS.
03100
03200 NOP: CRLF
03300 POP0J
03400 FLGA.: SETCMM FLGARC↔CRLF↔POP0J
03500 FLGB.: SETCMM FLGBK ↔CRLF↔POP0J
03600 FLGE.: SETCMM FLGWED↔CALL(DPYIMG)↔CRLF↔POP0J
03700 FLGK.: SETCMM FLGKRK↔CRLF↔POP0J
03800 FLGU.: SETCMM FLGU↔CRLF↔POP0J
03900 FLGR.: SETZM FLGWED
04000 LAC CTRL↔AND META
04100 JUMPN[SETOM FLGKINK↔GO .+8]↔SETZM FLGKINK
04200 LACI 1↔DAC FLGRAR
04300 SKIPE CTRL↔SETOM FLGRAR
04400 SKIPE META↔SETZM FLGRAR
04500 CALL(DPYIMG)↔CRLF↔POP0J
04600 LIT
04700 BEND;12/8/72------------------------------------------------------
00100 SUBR(SEGTV)-------------------------------------------------------
00200 ;GET THE OLD TVSEG.
00300 SETZ↔SEGNUM
00400 SKIPE 1,TVSEG
00500 GO[ CAMN 0,1↔POP0J↔SKIPE↔DETSEG
00600 ATTSEG 1,↔GO[FATAL(TVSEG ATTACH FAILURE.)]↔POP0J]
00700 SKIPE↔DETSEG
00800 ;MAKE A NEW TVSEG.
00900 LACI HI
01000 CALLI 400015↔GO[FATAL(AIN'T NO CORE UP YONDER.)]
01100 LAC[SIXBIT/TVSEG/]↔CALLI 400036↔JFCL
01200 SETZ↔SEGNUM↔DAC TVSEG
01300 LAC[XWD $,$+1]↔SETZM $↔BLT HI-1
01400 LAC[XWD HEAD,HEADER]↔BLT HEADER+9
01500 POP0J
01600 ;OLDE TEN WORD TV PICTURE HEADER.
01700 HEAD: 7↔0↔6↔=288↔=48↔=20↔=235↔=28↔=315↔=10368
01800 ;16/12/72---------------------------------------------------------
00100 SUBR(KILLER)------------------------------------------------------
00200 BEGIN KILLER
00300 SKIPE CTRL↔GO L
00400 SETZM QBLK
00500 LAC OLD44↔CALLI 11↔JFCL↔SETZM OLD44
00600 SETZM AVAIL↔SETZM BLKCNT↔SETZM FILM
00700 CALL(MORCOR)
00800 L: SETZM SX↔SETZM SY↔LAC[32.0]↔DAC DEL↔LAC[3.4]↔DAC MAG
00900 CALL(CROP)↔CALL(DPYIMG)
01000 CRLF↔POP0J
01100 BEND;12/31/72-----------------------------------------------------
01200
01300 SUBR(NEXIMG)------------------------------------------------------
01400 BEGIN NEXIMG;NEXT IMAGE - BGB - 11 DEC 72.
01500 SKIPA
01600 SETOM CTRL
01700 LAC 1,FILM
01800 SON 2,1
01900 CDR 3,(2)↔SKIPE CTRL↔CAR 3,(2)
02000 SON. 3,1
02100 CALL(DPYIMG)
02200 SKIPE META↔GO[INCHRS↔GO NEXIMG↔GO .+1]
02300 CRLF
02400 POP0J
02500 BEND;12/11/72-----------------------------------------------------
00100 SUBR(MAKCUT)------------------------------------------------------
00200 BEGIN MAKCUT; MAKE CUTS "C" COMMAND.
00300
00400 ;CONTRAST DISPLAY CUT OFF COMMANDS.
00500 SKIPE META↔GO[MOVNS VCUT↔CALL(DPYIMG)↔POP0J]
00600 SKIPE CTRL↔GO[INCHRW↔ANDI 7↔LSH 3
00700 INCHRW 1↔ANDI 1,7↔IOR 0,1↔DAC VCUT↔CALL(DPYIMG)↔POP0J]
00800
00900 ;MAKE CUT COMMAND BEGINS HERE.
01000 SETZM QQ2↔SETZM QQ3
01100 L1: SETZ 1,↔INCHWL
01200 CAIN 15↔GO[CALL(L3)↔GO L2]
01300 CAIL 0,"0"↔CAILE 0,"7"↔GO[CALL(L3)↔GO L1]
01400 IMULI 1,=8↔ANDI 17↔ADD 1,0↔GO L1+1
01500
01600 L2: INCHWL
01700 CALL(CRE,QQ2,QQ3)↔CALL(DPYIMG)↔CALL(SHRINK)
01800 POP0J
01900
02000 DECLARE{QQ2,QQ3}
02100
02200 L3: SKIPN 1↔POP0J
02300 CAIL 1,=64↔POP0J
02400 MOVNS 1↔SETZ 3,
02500 SLACI 2,1B18↔LSHC 2,(1)
02600 IORM 2,QQ2↔IORM 3,QQ3
02700 POP0J
02800
02900 LIT
03000 BEND;1/17/73------------------------------------------------------
03100
00100 SUBR(MKCUTS)------------------------------------------------------
00200 BEGIN MKCUTS; MAKE CUTS Q-COMMAND - BGB - 9 DEC 1972.
00300 SETZ 1,
00400 SKIPE CTRL↔LACI 1,1
00500 SKIPE META↔ADDI 1,2
00600 PUSH P,Q1(1)
00700 PUSH P,Q2(1)
00800 CALL(CRE)
00900 CALL(SHRINK)
01000 CALL(DPYIMG)
01100 POP0J
01200
01300 ;THREE, SEVEN, EIGHT OR FIFTEEN CUTS - EQUALLY SPACED.
01400 Q1: 1B16 +1B32
01500 1B8+1B16+1B24+1B32 ↔ 1B4+1B12+1B20+1B28
01600 1B8+1B16+1B24+1B32 + 1B4+1B12+1B20+1B28
01700 Q2: 1B12
01800 1B4+1B12+1B20 ↔ 1B0+1B8+1B16+1B24
01900 1B4+1B12+1B20 + 1B0+1B8+1B16+1B24
02000 BEND;12/9/72------------------------------------------------------
00100 SUBR(AWIDTH)------------------------------------------------------
00200 BEGIN AWIDTH; SELECT ARC WIDTH - BGB - 16 DEC 1972.
00300 ACCUMULATORS{DEL,XLO,XHI,X1,X2}
00400 TDCA X2,X2↔INCHWL
00500 L1: OUTSTR[ASCIZ/ #/]
00600
00700 INCHRW↔CAIN 15↔GO L1-1
00800 CAIL"0"↔CAILE"7"↔GO L4
00900 ANDI 7↔LSH 3↔DAC 1
01000
01100 INCHRW↔CAIN 15↔GO L1-1
01200 CAIL"0"↔CAILE"7"↔GO L4
01300 ANDI 7↔ADD 1,0↔EXCH 1,X2↔DAC 1,X1
01400
01500 L2: CALL(TYPOUT)
01600 CALL(REALIN)
01700 JUMPLE .+3↔CAMGE[100.0]↔CALL(ALTER)
01800 CAIE 1,12↔GO .+3↔OUTCHR[15]↔AOJA X2,L3
01900 CAIN 1,15↔INCHWL
02000 CAIE 1,175↔GO L1↔CRLF↔SOJA X2,L3
02100 L3: CAILE X2,77↔LACI X2,77
02200 CAIGE X2,00↔LACI X2,00
02300 LAC[ASCIZ/ #00/]
02400 DPB X2,[POINT 3,0,27]↔ROT X2,-3
02500 DPB X2,[POINT 3,0,20]↔ROT X2, 3
02600 OUTSTR↔GO L2
02700 L4: CRLF↔POP0J
02800
02900 TYPOUT: LAC ARCWID(X2)↔FMPR[100.0]↔FIXX
03000 IDIVI 0,=1000
03100 SKIPE↔IORI"0"↔IORI" " ↔DPB 0,[POINT 7,STR,13]
03200 IDIVI 1,=100 ↔IORI 1,"0"↔DPB 1,[POINT 7,STR,20]
03300 IDIVI 2,=10 ↔IORI 2,"0"↔DPB 2,[POINT 7,STR,34]
03400 IORI 3,"0"↔DPB 3,[POINT 7,STR+1,6]
03500 OUTSTR STR↔POP0J
03600 STR: ASCIZ/ 99.99 /
03700
03800 ALTER: DAC ARCWID(X2)
03900 LAC XLO,X1↔LAC XHI,X2↔CAMLE XLO,XHI↔EXCH XLO,XHI
04000 LAC XHI↔SUB XLO↔FLOAT
04100 LAC DEL,ARCWID(XHI)↔FSBR DEL,ARCWID(XLO)↔FDVR DEL,0
04200 LAC ARCWID(XLO)↔AOS XLO
04300 L5: CAML XLO,XHI↔POP0J
04400 FADR DEL↔DAC ARCWID(XLO)↔AOJA XLO,L5
04500
04600 BEND;12/16/72-----------------------------------------------------
00100 SUBR(REALIN)------------------------------------------------------
00200 BEGIN REALIN; INPUT FROM TTY SMALL REAL NUMBER - BGB - 16 DEC 1972.
00300 ;AC-0 INTEGER ACCUMULATION. AC-0 RETURNS REAL NUMBER.
00400 ;AC-1 CHARACTER. AC-1 RETURNS BREAK CHARACTER.
00500 ;AC-2 COUNTER OF DIGITS TO RIGHT OF DECIMAL POINT PLUS ONE.
00600 ;AC-3 MINUS SIGN FLAG.
00700 SETZ↔SETZB 2,3
00800 L1: INCHWL 1
00900 CAIE 1,"-"↔GO .+3↔SETCMM 3↔GO L1
01000 CAIE 1,"."↔GO .+3↔JUMPN 2,L2↔AOJA 2,L1
01100 CAIL 1,"0"↔CAILE 1,"9"↔GO L2
01200 JUMPN 2,[CAILE 2,4↔GO L1↔AOJA 2,.+1]
01300 ANDI 1,17↔IMULI =10↔ADD 1↔GO L1
01400 L2: FLOAT↔SOSLE 2↔FDVR[1.0↔10.0↔100.0↔1000.0↔10000.0](2)
01500 SKIPE 3↔MOVNS↔POP0J
01600 BEND;12/16/72-----------------------------------------------------
00100 SUBR(MKGLYPH)-----------------------------------------------------
00200 BEGIN; MAKE GLYPH IMAGE.
00300
00400 ACCUMULATORS{A2,PG,LVL,IMG}
00500 LAC PG,QBLK
00600 TEST PG,PBIT
00700 POP0J ;AIN'T POLYGON.
00800
00900 ;DETACH QBLK POLYGON FROM ITS LEVEL.
01000
01100 CW 1,PG↔CCW 2,PG↔DAC 2,PGSAV#
01200 CCW. 2,1↔CW. 1,2
01300 CAMN 1,PG↔SETZ 1,
01400 DAD LVL,PG↔SON 0,LVL
01500 CAMN 0,PG↔SON. 1,LVL
01600
01700 ;GET PREVIOUS IMAGE.
01800 LAC 1,FILM↔SON IMG,1↔DAC IMG,SAVIMG#
01900 CW IMG,IMG
02000 SON LVL,IMG
02100 SKIPN CTRL↔GO L1
02200
02300 ;MAKE NEW IMAGE WHEN CALLED FOR "αM".
02400 SETQ(I,{MKIMAG,FILM})
02500 SETQ(LVL,{MKLEVL,I,[-1]})
02600 LAC IMG,I#
02700 SON. LVL,IMG
02800 LAC PG,QBLK
02900
03000 ;PLACE THE POLYGON INTO THE IMAGE.
03100 L1: CALL(RINGIN,PG,LVL)
03200 LAC 1,FILM↔LAC SAVIMG↔SON. 0,1
03300 LAC PGSAV↔DAC QBLK
03400 CALL(DPYIMG)
03500 CRLF
03600 POP0J
03700 BEND;1/28/73------------------------------------------------------