TITLE HACK -- MAKE VT100'S FLASH
.DECSAV				;OUTPUT CSAVE FORMAT

EVEC:	JRST	HACK		;ENTWEE VECTA
	JRST	HACK
	.FVERS_6,,

HACK:	RESET
	MOVEI	1,.FHSLF
	RPCAP
	TRO	3,SC%WHL\SC%OPR
	EPCAP			;MAKE ME GOD

PROM:	HRROI	1,[ASCIZ /TTY: /]
	PSOUT
	MOVEI	1,.PRIIN
	MOVEI	3,10		;OKTAL
	NIN
	 ERJMP	NINERR

	SETZM	WHITE
	SKIPGE	2
	 SETOM	WHITE
	MOVM	2,2
	MOVEM	2,LOCN
	MOVEI	1,.TTDES(2)
	GTTYP
	 ERJMP	PROM
	CAIE	2,20		;.TT100
	 JRST	NOT100

GETIT:	HRROI	1,[ASCIZ /ITERATIONS: /]
	PSOUT
	MOVEI	1,.PRIIN
	MOVEI	3,10.
	NIN
	 ERJMP	ITRERR
	MOVEM	2,NITER
	MOVN	14,2
	HRLZ	14,14

speed:	HRROI	1,[ASCIZ /Ms between flashes: /]
	PSOUT
	MOVEI	1,.PRIIN
	MOVEI	3,10		;OKTAL
	NIN
	 ERJMP	speed
	MOVM	2,2
	skipn	2
	 movei	2,333.
	movem	2,slptim

LOOP:	JSP	15,X		;REVERSE SCREEN
	JSP	15,Y		;BLACK SCREEN

	SKIPLE	NITER		;LISTEN OR COUNT?
	 JRST	[AOBJN	14,LOOP	;COUNTED
		JRST	FINE]	;COUNT DONE

	MOVEI	1,.PRIOU	;MUST HAVE WNTED LISTEN
	SIBE
	 CAIA
	JRST	LOOP

FINE:	SKIPE	WHITE		;LA COMEDIA E'....
	 JSP	15,X
TLAH:	HALTF

CONT:	SKIPG	NITER
	 JRST	LOOP
	JRST	GETIT

Y:	SKIPA	2,[-1,,[.BYTE 7 ? 33 ? "[ ? "? ? "5 ? "l ? 0]] ;Black
X:	HRROI	2,[.BYTE 7 ? 33 ? "[ ? "? ? "5 ? "h ? 0] ;White
	MOVE	1,LOCN
	TRO	1,.TTDES
	TTMSG
	 ERJMP	[HRROI	1,[ASCIZ /? TTMSG FAILED
/]
		PSOUT
		JRST	TLAH]

SNOZ:	MOVE	1,slptim
	DISMS
	JRST	(15)

LOCN:	5
WHITE:	0
slptim:	0
NITER:	0

ITRERR:	HRROI	1,[ASCIZ /? Type a decimal number of iterations
<= 0 for listen to tty for stop
>  0 for n flashes
/]
	PSOUT
	JRST	GETIT

NINERR:	SKIPA	1,[-1,,[ASCIZ /
Type an Octal number, negative if screen is to be left white
/]]

NOT100:	 HRROI	1,[ASCIZ /? Not a Vt100
/]
	PSOUT
	JRST	PROM

	END	3,,EVEC
