aboutsummaryrefslogtreecommitdiff
path: root/sys/gio/calcomp/ccpopen.x
blob: f900b95beea56798e8ab5a71b74424ee4fad8015 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# Copyright(c) 1986 Association of Universities for Research in Astronomy Inc.

include	<gki.h>
include	"ccp.h"

# CCP_OPEN -- Install the calcomp kernel as a graphics kernel device driver.
# The device table DD consists of an array of the entry point addresses for
# the driver procedures.  The table entry for non-implemented procedures is
# set to zero, causing the interpreter to ignore the instruction.

procedure ccp_open (devname, dd)

char	devname[ARB]		# ignored if only one plotter on system
int	dd[ARB]			# device table to be initialized

pointer	sp, devns
int	len_devname
int	locpr(), strlen()
extern	ccp_openws(), ccp_closews(), ccp_clear()
extern	ccp_polyline(), ccp_polymarker(), ccp_text()
extern	ccp_plset()
extern	ccp_pmset(), ccp_txset()
extern	ccp_escape()
include	"ccp.com"

begin
	call smark (sp)
	call salloc (devns, SZ_FNAME, TY_SHORT)

	# Flag first pass.  Save forced device name in common for OPENWS.
	# Zero the frame and instruction counters.

	g_cc = NULL
	g_ndraw = 0 #????? may not need; also used in ccp_openws,ccp_clear,
		    # ccp_polyline, ccp_polymarker, ccp_text; may want for
		    # debug etc.
	call strcpy (devname, g_device, SZ_GDEVICE)

	# Install the device driver.

	dd[GKI_OPENWS]		= locpr (ccp_openws)
	dd[GKI_CLOSEWS]		= locpr (ccp_closews)
	dd[GKI_DEACTIVATEWS]	= 0
	dd[GKI_REACTIVATEWS]	= 0
	dd[GKI_MFTITLE]		= 0
	dd[GKI_CLEAR]		= locpr (ccp_clear)
	dd[GKI_CANCEL]		= 0
	dd[GKI_FLUSH]		= 0
	dd[GKI_POLYLINE]	= locpr (ccp_polyline)
	dd[GKI_POLYMARKER]	= locpr (ccp_polymarker)
	dd[GKI_TEXT]		= locpr (ccp_text)
	dd[GKI_FILLAREA]	= 0
	dd[GKI_PUTCELLARRAY]	= 0
	dd[GKI_SETCURSOR]	= 0
	dd[GKI_PLSET]		= locpr (ccp_plset)
	dd[GKI_PMSET]		= locpr (ccp_pmset)
	dd[GKI_TXSET]		= locpr (ccp_txset)
	dd[GKI_FASET]		= 0
	dd[GKI_GETCURSOR]	= 0
	dd[GKI_GETCELLARRAY]	= 0
	dd[GKI_ESCAPE]		= locpr (ccp_escape)
	dd[GKI_SETWCS]		= 0
	dd[GKI_GETWCS]		= 0
	dd[GKI_UNKNOWN]		= 0

	# If a device was named open the workstation as well.  This is
	# necessary to permit processing of metacode files which do not
	# contain the open workstation instruction.

	len_devname = strlen (devname)
	if (len_devname > 0) {
	    call achtcs (devname, Mems[devns], len_devname)
	    call ccp_openws (Mems[devns], len_devname, NEW_FILE)
	}

	call sfree (sp)
end