Trailing-Edge
-
PDP-10 Archives
-
decuslib20-04
-
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