Google
 

Trailing-Edge - PDP-10 Archives - SRI_NIC_PERM_SRC_3_19910112 - utilities/hclock.fai
There are no other files named hclock.fai in the archive.
	title Hclock
	search monsym

;This program works ONLY on Hazeltines.

;It displays, every second :
;the date in the upper left corner of the screen,
;the time in the middle of the screen.
;it can be stopped by typing <ESC>,
;any other character will give a help message.

	a1=	1
	a2=	2
	a3=	3
	wait=	=1000
	look=	=500

	tilda=	176
	dc2=	22
	fs=	34
	dc1=	21
	dollar= 44
	ell=	154
	bar=	174
	rquot=	140
	lpar=	50
	dblu=	167
	em=	31
	us=	37

chntab:	1,,help
	2,,stop
levtab:	0,,pclev1
	0,,pclev2
pclev1:	block	1
pclev2:	block	1

start:	reset

	move	a1,[0,-1]
	gttyp			;get terminal type,
	caie	a2,.tthaz	;test if it is a Hazeltine 1500
	cain	a2,.ttnhz	;or a Hazeltine 1500 w/rom.
	jrst	right
	hrroi	a1,[asciz/		This program works only on Hazeltines.
		If you are on a Teleray, try ICLOCK or CLOCK instead.
		If you are on a VT52, try CLOCK instead./]
	psout			;output help message
	haltf

right:	movei	a1,.fhslf
	move	a2,[levtab,,chntab]
	sir			;set up software interrupt tables.
	eir			;enable software interrupts.
	move	a2,[1b0]
	aic			;activate channel 0.
	move	a2,[1b1]
	aic			;activate channel 1.
	move	a1,[.ticti,,0]
	ati			;assign any typein to channel 0.
	move	a1,[.tices,,1]
	ati			;assign <ESC> to channel 0.

	movei	a1,.priou
	rfmod
	and	a2,[-1,,777477]
	sfmod			;put terminal in binary mode.

again:	movei	a1,tilda
	pbout
	movei	a1,fs		;clear screen
	pbout
  
	movei	a1,tilda
	pbout
	movei	a1,us		;display foreground (=> bright display).
	pbout

time:	movei	a1,tilda
	pbout
	movei	a1,dc1		;address cursor;
	pbout
	movei	a1,bar		;put it in column 28,
	pbout
	movei	a1,rquot	; line 0.
	pbout

	movei	a1,.priou	;output
	move	a2,[-1]		;the current
	move	a3,[ot%day+ot%fdy+ot%fmn+ot%4yr+ot%spa+ot%ntm+ot%scl]
	odtim			;date.

	movei	a1,tilda
	pbout
	movei	a1,dc1		;address cursor;
	pbout
	movei	a1,dollar	;put it in column 36,
	pbout
	movei	a1,ell		; line 12.
	pbout

	movei	a1,.priou	;output
	move	a2,[-1]		;the current
	move	a3,[ot%nda+ot%12h]
	odtim			;time.

	movei	a1,tilda
	pbout
	movei	a1,dc1		;address cursor;
	pbout
	movei	a1,lpar		;put it in column 40,
	pbout
	movei	a1,dblu		; line 23.
	pbout

	movei	a1,wait		;go to sleep
	disms			;for one second.

	jrst	time		;and start again (forever)...

	;when interrupt occurs (any character typed) :
help:	movei	a1,.priin
	cfibf			;clear terminal input buffer.
  
	movei	a1,tilda
	pbout
	movei	a1,fs		;clear screen.
	pbout
  
	hrroi	a1,[asciz/                        type <ESC> to kill the clock.../]
	psout			;output help message

	movei	a1,tilda
	pbout
	movei	a1,dc2		;put cursor home.
	pbout

	cis			;clear software interrupt system.

	movei	a1,look	;go to sleep
	disms			;for one 1/2 second.

	jrst	again		;and start again...

	;when interrupt occurs (<ESC> typed) :
stop:	movei	a1,.priin
	cfibf			;clear terminal input buffer.

	movei	a1,tilda
	pbout
	movei	a1,em		;reset display to background.
	pbout

	movei	a1,tilda
	pbout
	movei	a1,fs		;clear screen.
	pbout
  
	haltf			;and stop...

	end	start