Google
 

Trailing-Edge - PDP-10 Archives - decus_20tap4_198111 - decus/20-0125/send.for
There are 5 other files named send.for in the archive. Click here to see a list.
	SUBROUTINE SEND(CMD, DISNUM, X, Y)
C************************************************************
C
C  THIS ROUTINE IS USED TO TRANSMIT COMMAND INFORMATION
C  TO THE GT40. IN GENERAL A COMMAND CONSISTS OF A
C  COMMAND WORD, FOLLOWED BY A DISPLAY NUMBER, FOLLOWED
C  BY X & Y CO-ORDINATES (IN RASTER UNITS). THIS ROUTINE
C  BREAKS EACH WORD INTO EIGHT BIT BYTES AND TRANSMITS
C  THEM TO THE GT40 IN IMAGE MODE. EACH COMMAND IS PRECEDED
C  BY A "1" BYTE (I.E. ^A) TO SIGNAL GIDUS THAT A COMMAND
C  IS COMING. IF THE DISLIB LOG IS ENABLED, THEN EACH
C  COMMAND TRANSMITTED WILL BE DUMPED IN THE LOG.
C
C  POSSIBLE ERRORS:
C	NONE
C
C  ROUTINES CALLED:
C	SETTTY - SETS TERMINAL CHARACTERISTICS FOR I/O
C	SNDCHR - TRANSMITS AN IMAGE BYTE TO THE GT40
C	BYTES  - SPLITS LOW ORDER 16 BITS OF A WORD INTO 2 BYTES
C
C************************************************************
	IMPLICIT INTEGER(A - Z)
	INTEGER COMAND(16,2)
	LOGICAL LOG
	COMMON /LOGBLK/ LOG, GTLOG, FATAL, WARN

	DATA (COMAND(1,I),I=1,2) /'ENABL', 'E    '/
	DATA (COMAND(2,I),I=1,2) /'DISAB', 'LE   '/
	DATA (COMAND(3,I),I=1,2) /'MOVE ', 'FILE '/
	DATA (COMAND(4,I),I=1,2) /'GET M', 'P    '/
	DATA (COMAND(5,I),I=1,2) /'GET A', 'P    '/
	DATA (COMAND(6,I),I=1,2) /'LPOFF', 'F    '/
	DATA (COMAND(7,I),I=1,2) /'LPON ', '     '/
	DATA (COMAND(8,I),I=1,2) /'LAST ', 'HIT  '/
	DATA (COMAND(9,I),I=1,2) /'NEW H', 'IT   '/
	DATA (COMAND(10,I),I=1,2) /'REQ T', 'O ADD'/
	DATA (COMAND(11,I),I=1,2) /'ADD B', 'LOCK '/
	DATA (COMAND(12,I),I=1,2) /'DELET', 'E    '/
	DATA (COMAND(13,I),I=1,2) /'RE-SE', 'ND   '/
	DATA (COMAND(14,I),I=1,2) /'CLEAR', '     '/
	DATA (COMAND(15,I),I=1,2) /'RESET', '     '/
	DATA (COMAND(16,I),I=1,2) /'OPT. ', 'HIT  '/

1	FORMAT(//5X,'SENDING: ',2A5,6(2X,'"',O3))
2	FORMAT(5X,'CHECKSUM = "',O3//)

	CALL SETTTY
	CALL SNDCHR(1)
	CALL BYTES(CMD, CMDL, CMDH)
	CALL SNDCHR(CMDL)
	CALL SNDCHR(CMDH)
	CALL BYTES(DISNUM, DISL, DISH)
	CALL SNDCHR(DISL)
	CALL SNDCHR(DISH)
	CALL BYTES(X, XL, XH)
	CALL SNDCHR(XL)
	CALL SNDCHR(XH)
	CALL BYTES(Y, YL, YH)
	CALL SNDCHR(YL)
	CALL SNDCHR(YH)
	CSUM=CMDL+CMDH+DISL+DISH+XL+XH+YL+YH
	CSUM = -CSUM .AND. "377
	CALL SNDCHR(CSUM)

	IF(.NOT. LOG) RETURN
	WRITE(GTLOG, 1) (COMAND(CMD,I),I=1,2), DISL, DISH,
	1                XL, XH, YL, YH
	WRITE(GTLOG, 2) CSUM
	RETURN
	END