! Configuration file for EDWIN Version 5 on VAX/VMS
external string (80) SCCS String alias "EDWIN_SCCS_VERSION" = -
"@(#)edwin.a Version 5.6.2 27-Jun-89"
external string (63) fn EDWIN VERSION alias "EDWIN_VERSION"
result = Sub String (SCCS String, 5, length(SCCS String))
end
const integer NUM DEV = 20
from Edwin include Device
from Edwin include Consts
external routine spec An X alias "EDWIN___A" (integer COM, X, Y)
external routine spec A REQ alias "EDWIN___A_REQ" (integer name STATE, X, Y)
external routine spec A SAM alias "EDWIN___A_SAM" (integer name STATE, X, Y)
external routine spec BBC alias "EDWIN___B" (integer COM, X, Y)
external routine spec B REQ alias "EDWIN___B_REQ" (integer name STATE, X, Y)
external routine spec B SAM alias "EDWIN___B_SAM" (integer name STATE, X, Y)
external routine spec UIS alias "EDWIN___C" (integer COM, X, Y)
external routine spec C REQ alias "EDWIN___C_REQ" (integer name STATE, X, Y)
external routine spec C SAM alias "EDWIN___C_SAM" (integer name STATE, X, Y)
!%external %routine %spec D GIGI %alias "EDWIN___G" (%integer COM, X, Y)
!%external %routine %spec G REQ %alias "EDWIN___G_REQ" (%integer %name STATE, X, Y)
!%external %routine %spec G SAM %alias "EDWIN___G_SAM" (%integer %name STATE, X, Y)
external routine spec HPPLOT alias "EDWIN___H" (integer COM, X, Y)
external routine spec H REQ alias "EDWIN___H_REQ" (integer name STATE, X, Y)
external routine spec VERSA alias "EDWIN___K" (integer COM, X, Y)
external routine spec CALCOM alias "EDWIN___L" (integer COM, X, Y)
external routine spec MCP40 alias "EDWIN___M" (integer COM, X, Y)
external routine spec ERCCGP alias "EDWIN___N" (integer COM, X, Y)
external routine spec ERCCHP alias "EDWIN___O" (integer COM, X, Y)
external routine spec PS alias "EDWIN___P" (integer COM, X, Y)
external routine spec DHPTER alias "EDWIN___R" (integer COM, X, Y)
external routine spec R REQ alias "EDWIN___R_REQ" (integer name STATE, X, Y)
external routine spec DSIGMA alias "EDWIN___S" (integer COM, X, Y)
external routine spec S REQ alias "EDWIN___S_REQ" (integer name STATE, X, Y)
external routine spec S MAP alias "EDWIN___S_MAP" (integer A, R, B, G)
external routine spec T4000 alias "EDWIN___T" (integer COM, X, Y)
external routine spec T REQ alias "EDWIN___T_REQ" (integer name STATE, X, Y)
external routine spec T4100 alias "EDWIN___U" (integer COM, X, Y)
external routine spec U REQ alias "EDWIN___U_REQ" (integer name STATE, X, Y)
external routine spec VIDEOS alias "EDWIN___V" (integer COM, X, Y)
external routine spec V REQ alias "EDWIN___V_REQ" (integer name STATE, X, Y)
external routine spec WC2014 alias "EDWIN___W" (integer COM, X, Y)
external routine spec W REQ alias "EDWIN___W_REQ" (integer name STATE, X, Y)
external routine spec W MAP alias "EDWIN___W_MAP" (integer A, R, B, G)
external routine spec D X5A alias "EDWIN___X" (integer COM, X, Y)
external routine spec X REQ alias "EDWIN___X_REQ" (integer name STATE, X, Y)
external routine spec X SAM alias "EDWIN___X_SAM" (integer name STATE, X, Y)
external routine spec X MAP alias "EDWIN___X_MAP" (integer A, R, B, G)
external routine spec YAWN alias "EDWIN___Y" (integer COM, X, Y)
external routine spec Y REQ alias "EDWIN___Y_REQ" (integer name STATE, X, Y)
external routine spec LAZER alias "EDWIN___Z" (integer COM, X, Y)
external routine DRIVE DEVICE alias "EDWIN_DRIVE_DEV" (integer COM, X, Y)
switch SW(1:NUM DEV)
integer I
const integer Max Versatec = 37
const short array Versatec Numbers (1:Max Versatec) =
80, 81, 82,
7222, 7422, 7224, 7424, 7225,
7425, 7236, 7436, 7244, 7444,
8122, 8222, 8124, 8224, 8136, 8236, 8142, 8242,
8244, 8252, 8259, 8172, 8272,
8242, 9242,
3224, 3236, 3244,
2552, 2562, 2558, 2568, 2756, 2766
on 9 start
! IO errors from within the device drivers are really EDWIN system errors
signal 14, 1
finish
if COM=0 start
DEV DATA = 0
X = X - 'a' + 'A' if 'a'<=X<='z' and X#100
if X=0 start { Null device }
DEV DATA_NAME = "null"
return
else if 4002<=X<=4099 or X=1015 or X=2015 or X=4662
{ Tektronix-Westward }
DEV DATA_DEV NO = 1
! %else %if X='W' { 87 ! 119 } { window }
! DEV DATA_DEV NO = 2
else if X=7475 or X=7470 or X=7580 or X=7550 -
or X=7220 or X=72208 or X=7585 or X=7586 or X=7440 { HP's }
DEV DATA_DEV NO = 3
! %else %if X=906 %or X=1012 { Calcomp plotters }
! DEV DATA_DEV NO = 4
else if X=16_5053 {m'PS'} or X=16_7073 {m'ps'} { Postscript printer }
DEV DATA_DEV NO = 5
! %else %if X=200 %or X=550 %or X=52 %or X=100 %or X=55 { C. A. T.'s } %c
! %or X='E' { 69 or 101 } %or X='V' { 86 or 118 } %c
! %or X='L' { 76 or 108 }
! DEV DATA_DEV NO = 6
! %else %if X=2648 { HP terminal }
! DEV DATA_DEV NO = 7
! %else %if X=2014 { Westward colour }
! DEV DATA_DEV NO = 8
! %else %if X=5688 %or X=5684 %or X=5680 { Sigma displays }
! DEV DATA_DEV NO = 9
! %else %if X='G' { GIGI terminal }
! DEV DATA_DEV NO = 10
else if X='W'
DEV DATA_DEV NO = 11
else if X=5555 or X=5 or X=1 { X5A or XK1 }
DEV DATA_DEV NO = 12
! %else %if X=40 { MCP40 (oric) plotters }
! DEV DATA_DEV NO = 13
else if X=2686 or X=2686150 or X=2686300 or X=33440 or X=300 -
or X=8060 or X=80120 or X=10060 or X=100120 or 80<=X<=82
{ HP Laserjets, Printronix Printers, or Epson Printers }
DEV DATA_DEV NO = 14
else if 4105 <= X <= 4299 { Tek colour terminals }
DEV DATA_DEV NO = 15
! %else %if 563<=X<=1051 { Network Calcomp plotters }
! DEV DATA_DEV NO = 16
! %else %if X=-7220 { Network HP plotter }
! DEV DATA_DEV NO = 17
else if X=220 or X=131 or X=200 { Line terminals }
DEV DATA_DEV NO = 18
else if X='X' { X Window }
DEV DATA_DEV NO = 20
else { Versatec plotters ? }
for I = 1, 1, Max Versatec cycle
DEV DATA_DEV NO = 19 and exit if X = Versatec Numbers (I)
signal 14, 0, X if I = Max Versatec
repeat
finish
finish
return if VIEWING<0 or DEV DATA_DEV NO<=0 or COM < 0 or COM > NUM DEV
! Ignore calls to the null device driver, or if the parameter is out of range
-> SW(DEV DATA_DEV NO)
SW(1): T4000 (COM, X, Y); return { Tektronix 4000 series storage tubes
SW(2): UIS (COM, X, Y); return { Graphics Window
SW(3): HPPLOT (COM, X, Y); return { HP plotter driver
!SW(4): CALCOM (COM, X, Y); %return { Calcomps
SW(5): PS (COM, X, Y); return { Postscript printer
!SW(6): VIDEOS (COM, X, Y); %return { Cursor Addressable Terminal driver
!SW(7): DHPTER (COM, X, Y); %return { HP raster scan terminal.
!SW(8): WC2014 (COM, X, Y); %return { Westwood Colour display
!SW(9): DSIGMA (COM, X, Y); %return { Sigma Colour display
!SW(10): DGIGI (COM, X, Y); %return { DEC GIGI terminal
SW(11): UIS (COM, X, Y); return {
SW(12): DX5A (COM, X, Y); return { Datatype X5A terminal
!SW(13): MCP40 (COM, X, Y); %return { MCP40 plotters
SW(14): LAZER (COM, X, Y); return { HP Laser printer
SW(15): T4100 (COM, X, Y); return { Tek 4100 series displays
!SW(16): ERCCGP (COM, X, Y); %return { ERCC Calcomp plotters (Graph pack)
!SW(17): ERCCHP (COM, X, Y); %return { ERCC Network HP plotters (HP-GL + JCL)
SW(18): YAWN (COM, X, Y); return { Line terminals
SW(19): VERSA (COM, X, Y); return { Versatec plotters
SW(20): An X (COM, X, Y); return { X Windows
end
external routine REQUEST DEVICE alias "EDWIN_REQUEST_DEV" (integer name STATE, X, Y)
switch DC(0:NUM DEV)
signal 14,8,DEV DATA_DEV NO unless 0 <= DEV DATA_DEV NO <= NUM DEV
-> DC(DEV DATA_DEV NO)
DC(1): T REQ (STATE, X, Y); return
DC(2): C REQ (STATE, X, Y); return
DC(3): H REQ (STATE, X, Y); return
!DC(6): V REQ (STATE, X, Y); %return
!DC(7): R REQ (STATE, X, Y); %return
!DC(8): W REQ (STATE, X, Y); %return
!DC(9): S REQ (STATE, X, Y); %return
!DC(10): G REQ (STATE, X, Y); %return
DC(11): C REQ (STATE, X, Y); return
DC(12): X REQ (STATE, X, Y); return
DC(15): U REQ (STATE, X, Y); return
DC(18): Y REQ (STATE, X, Y); return
DC(20): A REQ (STATE, X, Y); return
DC(*): signal 14, 8, DEV DATA_DEV NO
end
external routine SAMPLE DEVICE alias "EDWIN_SAMPLE_DEV" (integer name STATE, X, Y)
if DevData_DEVno = 2 or DevData_DevNo = 11 start
C Sam (State, X, Y)
else if DevData_Devno = 20
A Sam (State, X, Y)
else
signal 14, 8
finish
end
external routine AREA OF DEVICE alias "EDWIN_AREA_DEV" (integer name XL, YB, XR, YT)
signal 14, 8
end
external routine SET COLOUR MAP alias "EDWIN_SET_COLOUR_MAP" (integer ADR, RED, BLUE, GREEN)
! %integer DEVICE
! DEVICE = DEV DATA_DEV NO
! %if DEVICE=SIGMA %start
! S MAP (ADR, RED, BLUE, GREEN)
! %finish %else %if DEVICE=WESTWARD %start
! W MAP (ADR, RED, BLUE, GREEN)
! %finish %else %if DEVICE=X5A %start
! X MAP (ADR, RED, BLUE, GREEN)
! %finish
end
end of file