perm filename CRE[GEM,BGB] blob
sn#050722 filedate 1973-08-08 generic text, type T, neo UTF8
00100 COMMENT ⊗ VALID 00021 PAGES
00200 C REC PAGE DESCRIPTION
00300 C00001 00001
00400 C00003 00002 CRE3 - CART'S EYE - CONTOUR,REGION,EDGE - BGB - APRIL 1973.
00500 C00005 00003 INITIALIZATION - SA: AND REE:
00600 C00007 00004 SUBR(TTY) TTY LISTEN.
00700 C00008 00005 --- COMMAND JUMP TABLE ASCII 00 TO 37.
00800 C00009 00006 --- COMMAND JUMP TABLE ASCII 40 TO 77.
00900 C00010 00007 --- COMMAND JUMP TABLE ASCII 100 TO 137.
01000 C00012 00008 XWINDO: WINDOW SCROLLING COMMANDS.
01100 C00013 00009 XLINK: LINK FOLLOWING COMMANDS.
01200 C00015 00010 XRESET "Z" COMMAND. NEXIMG.
01300 C00018 00011 SUBR(XXNAME) "N" - NAME THE FILM.
01400 C00019 00012 XFLAGS:
01500 C00021 00013 SUBR(XCUT). MAKE CUTS COMMAND "C".
01600 C00024 00014 SUBR(XATP). AUTOMATIC TURN TABLE PERCEPTION.
01700 C00026 00015 SUBR(XTAKE). "T" TAKE TELEVISION PICTURE.
01800 C00029 00016 SUBR(XXPAND) HISTOGRAM CUT HIGH AND CUT LOW.
01900 C00031 00017 SUBR(REMAP) RE MAP TVBUF.
02000 C00032 00018 AWIDTH - SELECT ARC WIDTH.
02100 C00035 00019 XCART. CART CONTROL COMMANDS.
02200 C00037 00020 CART SPACE WAR JOB.
02300 C00039 00021 XHELP:
02400 C00043 ENDMK
02500 C⊗;
00100 ;CRE3 - CART'S EYE - CONTOUR,REGION,EDGE - BGB - APRIL 1973.
00200 TITLE CRE
00300
00400 EXTERN QBLK,SX,SY,DEL,MAG
00500 EXTERN DPYBLK,DPYIMG,DPYHIS,CROP
00600 EXTERN MKCON
00700 EXTERN TVXGP,PLOTO,MORCOR
00800 EXTERN QIMAGE,QNODE
00900
01000 INTERN FLGBGB,FLGDD,FLGIII
01100 INTERN CTRL,META,CHR,VCUT
01200 INTERN ARCWID
01300
01400 ;CONTROL FLAGS.
01500 INTERN FLGHIS
01600 FLGHIS:0 ;HISTOGRAM IS VALID.
01700 VCUT:-14 ;VECTOR DISPLAY CONTRAST THRESHOLD.
01800 FLGBGB:0 ;RUNNING UNDER A BGB PPPN.
01900 FLGDD:0 ;RUNNING AT A DATA DISC.
02000 FLGIII:0 ;RUNNING AT A III DISPLAY.
02100
02200 ;ARC WIDTH PROPORTIONAL TO CONTRAST TABLE FOR MKARCS.
02300 ARCWID:
02400 FOR I←0,3{1.0↔}
02500 FOR I←4,5{0.9↔}
02600 FOR I←6,12{0.8↔}
02700 FOR I←13,17{0.7↔}
02800 FOR I←20,37{0.6↔}
02900 FOR I←40,77{0.5↔}
03000 0
03100
03200 ;TELETYPE COMMAND STATE.
03300 DECLARE{CTRL,META,CHR}
00100 ;INITIALIZATION - SA: AND REE:
00200 ;----------------------------------------------------------------
00300
00400 PDL: BLOCK 100
00500
00600 ;START ADDRESS
00700 SA: LAC 17,[IOWD 100,PDL]
00800 CALL(MORCOR)
00900 CALL(SEGTV)
01000
01100 ;RE-ENTRY ADDRESS.
01200 REE: LACI .↔DAC 124
01300 SETO↔GETLIN ;GET LINE CHARACTERISTICS.
01400 CAMN[-1]↔SETZ ;JOB DETACHED.
01500 DZM FLGIII↔TLNE(1B0)↔SETOM FLGIII
01600 DZM FLGDD↔ TLNE(1B4)↔SETOM FLGDD
01700 PPIOT 2,-=250
01800 PPIOT 3,3003
01900 DZM QBLK
02000 MOVEI 20↔CRLF↔SOJG .-1
02100 SETZ↔GETPPN↔CDR
02200 CAIN'BGB'↔SETOM FLGBGB
02300 LAC 17,[IOWD 100,PDL]
02400 CALL(CROP)
02500 CALL(DPYIMG)
02600 PUSHJ TTY
02700 EXIT
02800 ;6/12/72----------------------------------------------------------
02900 ;TELETYPE COMMAND STATE.
03000
03100 ;SEGTV - GET OLD TVSEG.
03200 SUBR(SEGTV)-------------------------------------------------------
03300 EXTERN HI
03400 ;MAKE A NEW TVSEG.
03500 LACI HI↔CORE2↔GO[FATAL(CAN'T GET A SECOND SEGMENT.)]
03600 LAC[SIXBIT/*CRE3*/]↔SETNM2↔JFCL
03700 SETZ↔SEGNUM↔DAC TVSEG
03800 LAC[%+1(%)]↔DZM %↔BLT HI-1
03900 POP0J
04000 TVSEG:0
04100 ;16/12/72---------------------------------------------------------
00100 SUBR(TTY) ;TTY LISTEN.
00200 BEGIN TTY;--------------------------------------------------------
00300 L0: CRLF
00400 L1: OUTCHR["*"]
00500 L2: INCHRW
00600 DZM CTRL↔TRZE 200↔SETOM CTRL
00700 DZM META↔TRZE 400↔SETOM META
00800 CAIN 0,15↔GO L1+1 ;CARRIAGE RETURN.
00900 CAIN 0,12↔GO L1 ;LINE FEED.
01000 CAIL 140↔SUBI 40 ;SUPPRESS LOWER CASE.
01100 DAC CHR
01200 LAC 1,CHR
01300 PUSHJ P,@A00(1)
01400 GO L0 ;CRLF-STAR.
01500 GO L2 ;NOTHING.
01600 GO L1 ;STAR.
01700 BEND TTY; BGB 19 APRIL 1973 --------------------------------------
00100 ; --- COMMAND JUMP TABLE ASCII 00 TO 37.
00200 A00: NOP ;null
00300 NOP ;"↓"
00400 NOP ;"α"
00500 NOP ;"β"
00600
00700 XLINK ;"∧"
00800 NOP ;"¬"
00900 NOP ;"ε"
01000 NOP ;"π"
01100
01200 NOP ;"λ"
01300 NOP ;tab
01400 NOP ;lf
01500 NOP ;vt
01600
01700 NOP ;ff
01800 NOP ;cr
01900 NOP ;"∞"
02000 NOP ;"∂"
02100
02200 XLINK ;"⊂"
02300 XLINK ;"⊃"
02400 XLINK ;"∩"
02500 XLINK ;"∪"
02600
02700 NOP ;"∀"
02800 NOP ;"∃"
02900 XLINK ;"⊗"
03000 XMOVIE ;"↔" RUN THRU THE IMAGES AS A MOVIE.
03100
03200 NOP ;"_"
03300 XTDPY ;"→"
03400 NOP ;"~"
03500 NOP ;"≠"
03600
03700 XLINK ;"≤"
03800 XLINK ;"≥"
03900 NOP ;"≡"
04000 XLINK ;"∨"
04100
00100 ; --- COMMAND JUMP TABLE ASCII 40 TO 77.
00200 A40: XWINDO ;" "
00300 XLINK ;"!"
00400 NOP ;"""
00500 XCRLFS ;"#"
00600
00700 NOP ;"$"
00800 NOP ;"%"
00900 NOP ;"&"
01000 NOP ;"'"
01100
01200 XWINDO ;"("
01300 XWINDO ;")"
01400 XWINDO ;"*"
01500 XLINK ;"+"
01600
01700 XLINK ;","
01800 XWINDO ;"-"
01900 XLINK ;"."
02000 XWINDO ;"/"
02100
02200 NOP ;"0"
02300 NOP ;"1"
02400 NOP ;"2"
02500 NOP ;"3"
02600
02700 NOP ;"4"
02800 NOP ;"5"
02900 NOP ;"6"
03000 NOP ;"7"
03100
03200 NOP ;"8"
03300 NOP ;"9"
03400 XWINDO ;":"
03500 XWINDO ;";"
03600
03700 XLINK ;"<"
03800 NOP ;"="
03900 XLINK ;">"
04000 XHELP ;"?"
00100 ; --- COMMAND JUMP TABLE ASCII 100 TO 137.
00200
00300 A100: NOP ;"@"
00400 XATP ;"A" AUTOMATIC TURNTABLE PERCEPTION.
00500 XCART; *;"B" DRIVE BACKWARDS.
00600 XCUT ;"C" MAKE THRESHOLD CUT.
00700
00800 XFLAGS ;"D" DISABLE PROCESSES.
00900 XFLAGS ;"E" ENABLE PROCESSES.
01000 XCART; *;"F" DRIVE FORWARDS.
01100 NOP ;"G"
01200
01300 DPYHIS ;"H" HISTOGRAM, "αH" ,"βH" BI-MODAL CUT.
01400 XINPUT ;"I" INPUT.
01500 XXPAND ;"J" TWO CUTS AT 5% FROM ENDS.
01600 NOP ;"K"
01700
01800 XCART; *;"L" TURN LEFT. "αL" PAN CAMERA LEFT.
01900 XMATCH ;"M" MATCH AND LINK IMAGES IN TIME.
02000 XXNAME ;"N" NAME THE FILM.
02100 XOUTPUT ;"O" OUTPUT.
02200
02300 PLOTO ;"P" PLOT OUTPUT FILE.
02400 XCUTS ;"Q" EQUI-SPACED CUTS.
02500 XCART; *;"R" TURN RIGHT. "αR" PAN CAMERA RIGHT.
02600 XSELECT ;"S" SELECT CAMERA, "αS" BCLIP, "βS" TCLIP.
02700
02800 XTAKE ;"T" TAKE TELEVISON PICTURE. "αT" SIXBIT.
02900 XTABLE↑ ;"U" ENTER TURN TABLE SERVO SUB COMMAND.
03000 XCART ;"V" XCART DIAGONOSTIC COMMAND MODE.
03100 AWIDTH ;"W" SET ARC WIDTH TABLE.
03200
03300 TVXGP ;"X" XEROX OUTPUT.
03400 XTABLE↑ ;"Y" TURN TABLE.
03500 XRESET ;"Z" ZERO DATA BUFFERS.
03600 NOP ;"[" OR "{"
03700
03800 XWINDO ;"\" OR "|"
03900 NOP ;"]" OR ALT
04000 NOP ;"↑" OR "}"
04100 XTDPY ;"←" OR RUB
04200
04300 NOP: OUTCHR[9]↔OUTCHR CHR↔OUTSTR[ASCIZ/ NO OPERATION./]
04400 POP0J
00100 XWINDO: ;WINDOW SCROLLING COMMANDS.
00200 BEGIN XWINDO;-----------------------------------------------------
00300 LAC CHR
00400 CAIN 0," "↔GO L2
00500 CAIN 0,":"↔GO[LAC SX↔FAD DEL↔DAC SX↔GO L2]
00600 CAIN 0,";"↔GO[LAC SX↔FSB DEL↔DAC SX↔GO L2]
00700 CAIN 0,")"↔GO[LAC SY↔FAD DEL↔DAC SY↔GO L2]
00800 CAIN 0,"("↔GO[LAC SY↔FSB DEL↔DAC SY↔GO L2]
00900 CAIN 0,"/"↔GO[LAC DEL↔FSC -1↔DAC DEL↔GO L2]
01000 CAIN 0,"\"↔GO[LAC DEL↔FSC 1↔DAC DEL↔GO L2]
01100 CAIN 0,"*"↔GO[LAC MAG↔FMP[1.5]↔DAC MAG↔GO L2]
01200 CAIN 0,"-"↔GO[LAC MAG↔FDV[1.5]↔DAC MAG↔GO L2]
01300 L2: CALL(CROP)↔CALL(DPYIMG)↔AOS(P)↔POP0J
01400 BEND XWINDO; BGB 19 APRIL 1973 -----------------------------------
00100 XLINK: ;LINK FOLLOWING COMMANDS.
00200
00300 COMMENT/ Replace the QBLK with one of its own links. Empty links
00400 and demands for positions that are not links are ignored by means
00500 of checking the node's relocation bits./
00600
00700 BEGIN XLINK;------------------------------------------------------
00800 LAC CHR
00900 CAIN"!"↔GO[DZM QBLK↔GO L]
01000 CAIE"⊗"↔CAIN"+"↔GO[LAC FILM↔DAC QBLK↔GO L]
01100 SKIPN 2,QBLK↔POP0J ;GET THE QBLK NODE.
01200 RELOC 3,2 ;RELOCATION BITS.
01300 CAIN","↔LACI 2000 ;WORD0.
01400 CAIN"."↔LACI 1000
01500 CAIN"<"↔LACI 2001 ;WORD1.
01600 CAIN">"↔LACI 1001
01700 CAIN"∪"↔LACI 2003 ;WORD3.
01800 CAIN"∩"↔LACI 1003
01900 CAIN"≤"↔LACI 2004 ;WORD4.
02000 CAIN"≥"↔LACI 1004
02100 CAIN"⊂"↔LACI 2005 ;WORD5.
02200 CAIN"⊃"↔LACI 1005
02300 CAIN"∨"↔LACI 2006 ;WORD6.
02400 CAIN"∧"↔LACI 1006
02500 TRNN 3000↔POP0J ;NO HIT ON COMMAND CHR.
02600 DAC 1↔ANDI 1,7↔LSH -9
02700 LDB 3,[POINT 3,3,20↔POINT 3,3,23↔0↔POINT 3,3,26
02800 POINT 3,3,29↔POINT 3,3,32↔POINT 3,3,35](1)
02900 TDNN 3,0↔POP0J ;AIN'T NO LINK THERE.
03000 ADD 1,2↔LAC 3,(1)
03100 TRNN 0,1↔MOVSS 3↔CDR 3
03200 SKIPE↔DAC QBLK
03300 L: LAC 1,QBLK↔TEST 1,IBIT↔GO .+3
03400 DAC 1,QIMAGE↔CALL(DPYIMG)
03500 CALL(DPYBLK)
03600 AOS(P)↔POP0J
03700 BEND XLINK; BGB 19 APRIL 1973 ------------------------------------
03800
03900 XCRLFS: LACI 20↔CRLF↔SOJG .-1↔POP0J
00100 ;XRESET "Z" COMMAND. NEXIMG.
00200 SUBR(XRESET)------------------------------------------------------
00300 BEGIN XRESET
00400 EXTERN AVAIL2,NODCNT,FILM,CRE44
00500 SKIPE META↔GO[SETZB 0,1↔UPGIOT 16,↔POP0J]
00600 SKIPE CTRL↔GO L
00700 DZM QBLK↔DZM QIMAGE
00800 LAC CRE44↔CORE↔JFCL↔DZM CRE44
00900 DZM AVAIL2↔DZM NODCNT↔DZM FILM
01000 CALL(MORCOR)
01100 L: DZM SX↔DZM SY
01200 LAC[32.0]↔DAC DEL
01300 LAC[3.4]↔DAC MAG
01400 CALL(CROP)
01500 CALL(DPYIMG)
01600 POP0J
01700 BEND XRESET; BGB 31 DECEMBER 1972 --------------------------------
01800
01900 SUBR(XMOVIE)------------------------------------------------------
02000 BEGIN XMOVIE;NEXT IMAGE - BGB - 11 DEC 72.
02100 SKIPN 1,QIMAGE↔POP0J
02200 CCW 2,1↔SKIPE CTRL↔CW 2,1
02300 DAC 2,QIMAGE
02400 CALL(DPYIMG)
02500 SKIPE META↔GO[INCHRS↔GO XMOVIE↔POP0J]
02600 POP0J
02700 BEND;12/11/72-----------------------------------------------------
02800
02900 SUBR(XMATCH) "M" - MATCH AND LINK IMAGES IN TIME.
03000 BEGIN XMATCH;-----------------------------------------------------
03100 EXTERN CMCNII
03200 LAC 2,FILM↔SON 2,2 ;FIRST IMAGE TAKEN.
03300 CW 2,2 ; LAST IMAGE TAKEN.
03400 LAC 1,2↔CW 1,1 ;PENULT IMAGE TAKEN.
03500 CALL(CMCNII,1,2)
03600 POP0J
03700 BEND XMATCH; BGB 16 APRIL 1973 -----------------------------------
03800
03900 XTDPY:; "←" "→" DISPLAY TIMED LINKED POLYGON OF QBLK.
04000 EXTERN TIMDPY
04100 SKIPN 1,QBLK↔POP0J
04200 TEST 1,PBIT↔POP0J
04300 PUSH P,QBLK
04400 LAC CHR↔CAIN "←"↔GO[PUSHJ P,TIMDPY+1↔POP0J]
04500 PUSHJ P,TIMDPY↔POP0J
00100 SUBR(XXNAME) "N" - NAME THE FILM.
00200 BEGIN XXNAME;------------------------------------------------------
00300 EXTERN CREDPY,FNAME,FNAME6
00400 OUTSTR[ASCIZ/ FILM = /]
00500 LAC 1,[POINT 7,FNAME,-1] ;ASCII.
00600 LAC 2,[POINT 6,FNAME6,-1] ;SIXBIT.
00700 LACI 3,6
00800 L: INCHWL
00900 CAIN 15↔GO[INCHWL↔GO EOL]
01000 CAIL"a"↔SUBI 40
01100 IDPB 1
01200 SUBI 40
01300 IDPB 2
01400 SOJG 3,L
01500 EOL: SETZ↔SKIPE 3↔GO[IDPB 1↔IDPB 2↔SOJA 3,.-1]
01600 CALL(CREDPY)
01700 AOS(P)↔AOS(P)↔POP0J
01800 BEND XXNAME; BGB 17 APRIL 1973 ------------------------------------
01900
00100 XFLAGS:
00200 BEGIN XFLAGS;-----------------------------------------------------
00300 EXTERN ENEST,ECONT,ESMOO,ECOMP
00400
00500 LAC CHR↔CAIN"E"↔GO L9
00600 SETZM ENEST↔SETZM ECONT↔SETZM ESMOO↔SETZM ECOMP↔POP0J
00700 L9: SETOM ENEST↔SETOM ECONT↔SETOM ESMOO↔SETOM ECOMP↔POP0J
00800 BEND XFLAGS; BGB 20 APRIL 1973 ----------------------------------
00900
01000 XINPUT:; "I" - INPUT COMMANDS.
01100 EXTERN CREIN,TVDSKI
01200 SKIPN CTRL↔GO[DZM FLGHIS
01300 CALL(TVDSKI,[-1])↔GO SKPOPJ]
01400 CALL(CREIN)
01500 LAC 1,FILM↔SON 1,1↔DAC 1,QIMAGE
01600 CALL(DPYIMG)
01700 SKPOPJ: AOS(P)↔AOS(P)↔POP0J
01800
01900 XOUTPUT:; "O" - OUTPUT COMMANDS.
02000 EXTERN CREOUT,TVDSKO
02100 SKIPN CTRL↔GO[
02200 CALL(TVDSKO)↔GO SKPOPJ]
02300 CALL(CREOUT)↔GO SKPOPJ
02400
00100 SUBR(XCUT). ;MAKE CUTS COMMAND "C".
00200 BEGIN XCUT;-------------------------------------------------------
00300
00400 ;DISTINGUISH CUTTING A FILM OF FILES & CUTTING SINGLE IMAGE.
00500 DZM FFLAG#↔LAC 1,QBLK
00600 CAMN 1,FILM↔SETOM FFLAG#
00700 DZM FRAME#
00800
00900 ;DECODE THE ARGUMENTS.
01000 DZM QQ2↔DZM QQ3
01100 L1: SETZ 1,↔INCHWL
01200 CAIN 15↔GO[CALL(L4)↔GO L2]
01300 CAIL 0,"0"↔CAILE 0,"7"↔GO[CALL(L4)↔GO L1]
01400 IMULI 1,=8↔ANDI 17↔ADD 1,0↔GO L1+1
01500
01600 L2: INCHWL ;PICK UP THE LINE FEED.
01700 SKIPN FFLAG↔GO L3 ;SKIP WHEN FILMING.
01800 AOS FRAME
01900 CALL(TVDSKI,FRAME)
02000 SKIPN 1↔POP0J
02100
02200 L3: SKIPE META↔GO L5
02300 LAC QQ2↔IOR QQ3 ;MAKE SURE THERE ARE SOME CUTS.
02400 SKIPN↔POP0J
02500 CALL(MKCON,QQ2,QQ3) ;CONTOUR THE VIDEO IMAGE.
02600 CALL(DPYIMG) ;DISPLAY IMAGE.
02700 SKIPN FFLAG↔POP0J ;POTENTIAL EXIT.
02800 GO L2+1
02900
03000 ;TURN ON SPECIFIED BIT POSITION.
03100 L4: SKIPN 1↔POP0J
03200 CAIL 1,=64↔POP0J
03300 MOVNS 1↔SETZ 3,
03400 SLACI 2,1B18↔LSHC 2,(1)
03500 IORM 2,QQ2↔IORM 3,QQ3
03600 POP0J
03700
03800 ;RAW CONTOURS TO XGP.
03900 L5: SKIPN CTRL↔GO L3+2
04000 CALL(VICXGP,QQ2,QQ3)↔EXTERN VICXGP
04100 POP0J
04200 BEND;1/17/73------------------------------------------------------
04300 DECLARE{QQ2,QQ3} ;CONTOUR CUT INDICATOR BITS.
00100 SUBR(XATP). ;AUTOMATIC TURN TABLE PERCEPTION.
00200 BEGIN ATP;___________________________________________________________
00300 OUTSTR[ASCIZ/ NUMBER OF IMAGES DESIRED = /]
00400 CALL(REALIN↑)↔FIXX↔DAC IMGCNT#
00500 L1: OUTSTR[ASCIZ/ T/]
00600 CALL(XTAKE)
00700 CALL(MKCON,QQ2,QQ3)
00800 CALL(DPYIMG)
00900 CALL(XMATCH)
01000 CRLF
01100 SOSG IMGCNT↔GO L2
01200 LACI "Y"↔CALL(XTABLE↑) ;TURN THE TABLE.
01300 GO L1
01400 L2: OUTSTR[ASCIZ/END OF AUTOMATIC TURNTABLE FILMING.
01500 /]↔ POP0J
01600 BEND ATP;BGB 25 JUNE 1973 ___________________________________________
01700
01800 SUBR(XCUTS). ;MAKE CUTS COMMAND "Q".
01900 BEGIN XCUTS;------------------------------------------------------
02000 SETZ 1,
02100 SKIPE CTRL↔LACI 1,1
02200 SKIPE META↔ADDI 1,2
02300 CALL(MKCON,{Q1(1)},{Q2(1)})
02400 CALL(DPYIMG)
02500 POP0J
02600
02700 ;THREE, SEVEN, EIGHT OR FIFTEEN CUTS - EQUALLY SPACED.
02800 Q1: 1B16 +1B32
02900 1B8+1B16+1B24+1B32 ↔ 1B4+1B12+1B20+1B28
03000 1B8+1B16+1B24+1B32 + 1B4+1B12+1B20+1B28
03100 Q2: 1B12
03200 1B4+1B12+1B20 ↔ 1B0+1B8+1B16+1B24
03300 1B4+1B12+1B20 + 1B0+1B8+1B16+1B24
03400
03500 BEND XCUTS; BGB 9 DECEMBER 1972 -----------------------------------
03600
00100 SUBR(XTAKE). "T" TAKE TELEVISION PICTURE.
00200 BEGIN XTAKE
00300 EXTERN TVIN6,TVIN4
00400 SETOM FLGHIS ;HISTOGRAM WILL BE ACCUMULATED.
00500 SLACI %+17↔LAPI .+3
00600 SPCWGO↔SKIPA↔DISMIS ;LOCKIN CORE.
00700 SKIPE CTRL↔GO[
00800 CALL(TVIN6)↔GO .+2]
00900 CALL(TVIN4)
01000 SPCWAR'SSW'↔POP0J ;UNLOCK CORE.
01100 BEND XTAKE;(BGB)14-DEC-72
01200 ;_________________________________________________________________
01300 SUBR(XSELECT). "S" SELECT CAMERA.
01400 BEGIN XSELECT;----------------------------------------------------
01500 EXTERN TVCLIP
01600 LAC CTRL↔AND META↔SKIPE↔GO L4
01700 SKIPE CTRL↔GO L2↔SKIPE META↔GO L3
01800
01900 ;SELECT CAMERA.
02000 L1: LDB[POINT 2,TVCLIP,26]↔IORI 60
02100 OUTSTR[ASCIZ/ CHANGE CAMERA /]
02200 OUTCHR↔OUTSTR[ASCIZ/ TO /]
02300 INCHRW↔CAIE 15↔DPB[POINT 2,TVCLIP,26]↔POP0J
02400
02500 ;SELECT BOTTOM CLIP LEVEL.
02600 L2: LDB[POINT 3,TVCLIP,20]↔IORI 60
02700 OUTSTR[ASCIZ/ CHANGE BCLIP /]
02800 OUTCHR↔OUTSTR[ASCIZ/ TO /]
02900 INCHRW↔CAIE 15↔DPB[POINT 3,TVCLIP,20]↔POP0J
03000
03100 ;SELECT TOP CLIP LEVEL.
03200 L3: LDB[POINT 3,TVCLIP,23]↔IORI 60
03300 OUTSTR[ASCIZ/ CHANGE TCLIP /]
03400 OUTCHR↔OUTSTR[ASCIZ/ TO /]
03500 INCHRW↔CAIE 15↔DPB[POINT 3,TVCLIP,23]↔POP0J
03600
03700 ;SHRINQ NODE SPACE.
03800 L4: CALL(SHRINQ)↔EXTERN SHRINQ
03900 POP0J
04000
04100 BEND XSELECT; BGB 6 DECEMBER 1972 --------------------------------
00100 SUBR(XXPAND); HISTOGRAM CUT HIGH AND CUT LOW.
00200 BEGIN XXPAND;-----------------------------------------------------
00300 EXTERN HISTO,HISTOG
00400 ACCUMULATORS{Q1,Q2,HI,LO}
00500 SKIPN CTRL↔GO L1
00600 LACI 1,77↔SETZ↔DAC 0,TVMAP(1)↔AOS↔SOJGE 1,.-2↔GO L3
00700 L1: CALL(HISTOG)
00800 LACI HI,77↔DZM LO↔SETZB Q1,Q2
00900 LACI 6↔IMULI =62208↔IDIVI =100↔DAC 1 ;6% RULE.
01000
01100 ;COME IN FROM THE EXTREMES 6 PER CENT.
01200 SETZ↔ADD HISTO(LO)↔CAMGE 1↔AOJA LO,.-2
01300 SETZ↔ADD HISTO(HI)↔CAMGE 1↔SOJA HI,.-2
01400 L2: CAML LO,HI↔POP0J
01500
01600 ;LOOK FOR LOCAL MINIMUM.
01700 ; LAC HISTO(LO)↔CAML HISTO+1(LO)↔AOJA LO,L2
01800 ; LAC HISTO(LO)↔CAML HISTO-1(LO)↔AOJA LO,L2
01900 ; LAC HISTO(HI)↔CAML HISTO+1(HI)↔SOJA HI,L2
02000 ; LAC HISTO(HI)↔CAML HISTO-1(HI)↔SOJA HI,L2
02100
02200 ;MAKE THE TV MAP.
02300 SETZB 0,1
02400 DAC 0,TVMAP(1)↔CAMG 1,LO↔AOJA 1,.-2 ;00 TO LO → 00.
02500 LACI 77↔LACI 1,77
02600 DAC 0,TVMAP(1)↔CAML 1,HI↔SOJA 1,.-2 ;77 TO HI → 77.
02700 SLACI 2,77↔LAC 1,HI↔SUB 1,LO↔IDIV 2,1 ;DELTA INTENSITY.
02800 SETZ↔LAC 1,LO↔AOS 1
02900 HLRZM 0,TVMAP(1)↔ADD 0,2
03000 CAMGE 1,HI↔AOJA 1,.-3
03100 L3: CALL(REMAP)
03200 POP0J
03300 BEND XXPAND;------------------------------------------------------
03400
00100 SUBR(REMAP); RE MAP TVBUF.
00200 BEGIN REMAP;------------------------------------------------------
00300 EXTERN TVBUF,FLGHIS
00400 DZM FLGHIS
00500 LAC[XWD L,2]↔BLT 8↔GO 2
00600 L: ILDB 1,7 ;2
00700 LAC 1,TVMAP(1) ;3 REPLACE BYTE ACCORDING TO TABLE TVMAP.
00800 DPB 1,7
00900 SOJG 8,2 ;5
01000 POP0J ;6
01100 POINT 6,TVBUF ;7 INITIAL TV BUFFER POINTER.
01200 =62208 ;8 NUMBER OF PIXELS.
01300 BEND REMAP; BGB 6 MAY 1973 ----------------------------------------
01400
01500 INTERN TVMAP
01600 TVMAP: BLOCK 100
01700
00100 ;AWIDTH - SELECT ARC WIDTH.
00200 SUBR(AWIDTH)------------------------------------------------------
00300 BEGIN AWIDTH
00400 EXTERN REALIN
00500 ACCUMULATORS{DEL,XLO,XHI,X1,X2}
00600 TDCA X2,X2↔INCHWL
00700 L1: OUTSTR[ASCIZ/ #/]
00800
00900 INCHRW↔CAIN 15↔GO L1-1
01000 CAIL"0"↔CAILE"7"↔GO L4
01100 ANDI 7↔LSH 3↔DAC 1
01200
01300 INCHRW↔CAIN 15↔GO L1-1
01400 CAIL"0"↔CAILE"7"↔GO L4
01500 ANDI 7↔ADD 1,0↔EXCH 1,X2↔DAC 1,X1
01600
01700 L2: CALL(TYPOUT)
01800 CALL(REALIN)
01900 JUMPLE .+3↔CAMGE[100.0]↔CALL(ALTER)
02000 CAIE 1,12↔GO .+3↔OUTCHR[15]↔AOJA X2,L3
02100 CAIN 1,15↔INCHWL
02200 CAIE 1,175↔GO L1↔CRLF↔SOJA X2,L3
02300 L3: CAILE X2,77↔LACI X2,77
02400 CAIGE X2,00↔LACI X2,00
02500 LAC[ASCIZ/ #00/]
02600 DPB X2,[POINT 3,0,27]↔ROT X2,-3
02700 DPB X2,[POINT 3,0,20]↔ROT X2, 3
02800 OUTSTR↔GO L2
02900 L4: CRLF↔POP0J
03000
03100 TYPOUT: LAC ARCWID(X2)↔FMPR[100.0]↔FIXX
03200 IDIVI 0,=1000
03300 SKIPE↔IORI"0"↔IORI" " ↔DPB 0,[POINT 7,STR,13]
03400 IDIVI 1,=100 ↔IORI 1,"0"↔DPB 1,[POINT 7,STR,20]
03500 IDIVI 2,=10 ↔IORI 2,"0"↔DPB 2,[POINT 7,STR,34]
03600 IORI 3,"0"↔DPB 3,[POINT 7,STR+1,6]
03700 OUTSTR STR↔POP0J
03800 STR: ASCIZ/ 99.99 /
03900
04000 ALTER: DAC ARCWID(X2)
04100 LAC XLO,X1↔LAC XHI,X2↔CAMLE XLO,XHI↔EXCH XLO,XHI
04200 LAC XHI↔SUB XLO↔FLOAT
04300 LAC DEL,ARCWID(XHI)↔FSBR DEL,ARCWID(XLO)↔FDVR DEL,0
04400 LAC ARCWID(XLO)↔AOS XLO
04500 L5: CAML XLO,XHI↔POP0J
04600 FADR DEL↔DAC ARCWID(XLO)↔AOJA XLO,L5
04700
04800 BEND AWIDTH;BGB 16 DECEMBER 1972 ---------------------------------
00100 ;XCART. CART CONTROL COMMANDS.
00200 SUBR(XCART)-------------------------------------------------------
00300 BEGIN XCART
00400 OPDEF RADIO[7702B11]
00500 LAC 2,CHR ;INITIAL COMMAND CHARACTER.
00600 CAIN 2,"V"↔GO L0
00700 SKIPE CTRL↔TRO 2,200↔SKIPA ;SHIT.
00800 M0: INCHRW 2 ;WAIT FOR COMMAND CHARACTER.
00900 DZM CNT0↔DZM CNT1 ;ZIP TIME OF ANY PREVIOUS COMMAND.
01000 DZM CTRL↔TRZE 2,200↔SETOM CTRL
01100 DAC 2,CHR
01200 SLACI 0,=5 ;ONE-THIRD OF A SECOND.
01300
01400 ;DRIVE ONE MINUTE FORWARDS OR BACKWARDS.
01500 CAIN 2,"F"↔GO[LAC 1,[(=900)12]↔GO M1]
01600 CAIN 2,"B"↔GO[LAC 1,[(=900)12]↔LAPI 0,2↔GO M1]
01700 SKIPE CTRL↔GO .+5
01800
01900 ;STEERING 5 SECONDS LEFT OR RIGHT.
02000 CAIN 2,"L"↔GO[LAC 1,[(=75)11]↔LAPI 1↔GO M1]
02100 CAIN 2,"R"↔GO[LAC 1,[(=75)11]↔LAPI 0↔GO M1]
02200
02300 ;CAMERA PAN 10 SECONDS LEFT OR RIGHT.
02400 CAIN 2,"L"↔GO[LAC 1,[(=150)14]↔GO M1]
02500 CAIN 2,"R"↔GO[LAC 1,[(=150)14]↔LAPI 0,4↔GO M1]
02600
02700 CAIN 2,"0"↔GO M0 ;HALT WITH SPACEWAR RUNNING.
02800 CAIN 2," "↔GO M0 ;HALT WITH SPACEWAR RUNNING.
02900 EX: DZM FIREUP#↔SPCWAR'SSW'↔CRLF↔POP0J
03000
03100 M1: HLRZM 0,CNT0 ↔ DAPZ 0,WORD0
03200 HLRZM 1,CNT1 ↔ DAPZ 1,WORD1
03300
03400 ;FIREUP SPACE WAR MODULE - FOUR TICK SERVICE.
03500 SKIPE FIREUP↔GO M0↔SETOM FIREUP
03600 SPCWAR 4,SWJOB↔GO M0
00100 ;CART SPACE WAR JOB.
00200 ;FIRE UP SPACE WAR JOB.
00300 L0: DZM CNT0↔DZM CNT1
00400 SPCWAR 4,SWJOB
00500 OUTCHR["*"]↔LACI 7↔DAC WORD2
00600
00700 ;OLDE DIAGONOSTIC TTY LISTEN LOOP.
00800 L1: INCHRW↔CAIN "X"↔GO EX
00900 CAIGE"0"↔GO L2
01000 CAILE"8"↔GO L2
01100 ANDI 7↔DAC WORD2↔GO L1
01200 L2: CAIGE"A"↔GO L3
01300 CAILE"H"↔ANDI 7
01400 IORI 10↔DAC WORD2↔GO L1
01500 L3: CAIN 15↔OUTCHR["*"]↔GO L1
01600
01700 ; SPACE WAR OUTPUT TO RADIO TRANSMITTER.
01800
01900 SWJOB: CONSZ 40↔DISMIS ;MAKE SURE WE ARE ON THE PDP-6.
02000 SKIPE 1,WORD3↔GO[
02100 DATAO 500,WORD3↔CALLI 400024] ;ROTATE TURN TABLE.
02200 SOSLE CNT0↔GO[LAC WORD0↔GO L5]↔DZM CNT0
02300 SOSLE CNT1↔GO[LAC WORD1↔GO L5]↔DZM CNT1
02400 LAC WORD2
02500 L5: TRNE 8↔RADIO 400054; 1 SELECT ACTION RELAYS.
02600 TRNN 8↔RADIO 620054; 0 SELECT DIRECTION RELAYS.
02700 TRNE 1↔RADIO 440053; 1 STEERING MOTOR.
02800 TRNN 1↔RADIO 620053; 0 ;
02900 TRNE 2↔RADIO 410052; 1 DRIVE MOTOR.
03000 TRNN 2↔RADIO 600052; 0 ;
03100 TRNE 4↔RADIO 360051; 1 CAMERA PAN MOTOR.
03200 TRNN 4↔RADIO 570051; 0;
03300 RADIO 340050
03400 RADIO 340055
03500 DISMIS ;EXIT SPACEWAR JOB.
03600 DECLARE{WORD0,WORD1,WORD2,WORD3,CNT0,CNT1}
03700 BEND XCART; BGB 18 DECEMBER 1972 ---------------------------------
00100 XHELP:
00200 CALL(XXHELP,[[SIXBIT/CAREYEHLP/↔0↔SIXBIT/DOCBGB/]])
00300 POP0J
00400
00500 SUBR(XXHELP)FILLOC
00600 BEGIN XXHELP
00700 EXTERNAL DPYSET,DPYOUT,DPYBIG,DPYBRT,AIVECT,RIVECT,DTYO,DPYBUF
00800 SETZM INHDR
00900 INIT 17,↔SIXBIT/DSK/↔INHDR
01000 GO [FATAL(CAN'T INIT DSK)]
01100 MOVEI 1,2↔HRL 1,ARG1↔BLT 1,5
01200 LOOKUP 17,2
01300 GO [ OUTSTR[ASCIZ/HELP FILE NOT FOUND.
01400 /]↔ POP1J ]
01500 PUSH P,121
01600 PUSH P,44
01700 MOVE 1,44
01800 MOVEM 1,121
01900 LOOP: USETI 17,1
02000 SETSTS 17,0
02100 LACI 0,2
02200 MOVEM 0,PAGNUM#
02300 SOJLE 0,FOUND
02400 PGLOOP: CALL(GETCHR)
02500 GO [ OUTSTR[ASCIZ/PAGE NOT FOUND.
02600 /]↔ GO RET]
02700 CAIE 1,14
02800 JRST PGLOOP
02900 JRST PGLOOP-1
03000 FOUND: CALL(DPYSET,DPYBUF)
03100 CALL(AIVECT,[0],[=440])
03200 CALL(DPYBIG,[1])
03300 CALL(DPYBRT,[1])
03400 SETZM LPOS#
03500 CHLOOP: CALL(GETCHR)↔GO FIN
03600 CAIN 1,14↔GO FIN
03700 CAIN 1,11↔GO [ CALL(DTYO,[40])
03800 AOS 1,LPOS
03900 TRNE 1,7
04000 GO $.-4
04100 GO CHLOOP ]
04200 CALL(DTYO,1)
04300 AOS LPOS
04400 MOVE 1,1(P)
04500 CAIE 1,15
04600 GO CHLOOP
04700 SETZM LPOS
04800 CALL(RIVECT,[1000],[0])
04900 GO CHLOOP
05000 FIN: CALL(DPYOUT,[16])
05100 OUTSTR[ASCIZ/ TYPE <META>Z TO MAKE HELP GO AWAY./]
05200 RET: RELEASE 17,
05300 POP P,121
05400 MOVE 1,121
05500 CORE 1,↔GO [ FATAL(CAN'T SHRINQ CORE) ]
05600 POP P,121
05700 POP1J
05800
05900 GETCHR:
06000 SOSG INHDR+2
06100 IN 17,↔GO[ILDB 1,INHDR+1↔AOS(P)↔POP0J ]
06200 POP0J
06300 INHDR: BLOCK 3
06400 BEND XXHELP
06500 END