aboutsummaryrefslogtreecommitdiff
path: root/sys/gio/gki/gkiexe.x
diff options
context:
space:
mode:
authorJoe Hunkeler <jhunkeler@gmail.com>2015-08-11 16:51:37 -0400
committerJoe Hunkeler <jhunkeler@gmail.com>2015-08-11 16:51:37 -0400
commit40e5a5811c6ffce9b0974e93cdd927cbcf60c157 (patch)
tree4464880c571602d54f6ae114729bf62a89518057 /sys/gio/gki/gkiexe.x
downloadiraf-osx-40e5a5811c6ffce9b0974e93cdd927cbcf60c157.tar.gz
Repatch (from linux) of OSX IRAF
Diffstat (limited to 'sys/gio/gki/gkiexe.x')
-rw-r--r--sys/gio/gki/gkiexe.x178
1 files changed, 178 insertions, 0 deletions
diff --git a/sys/gio/gki/gkiexe.x b/sys/gio/gki/gkiexe.x
new file mode 100644
index 00000000..05e8ec8d
--- /dev/null
+++ b/sys/gio/gki/gkiexe.x
@@ -0,0 +1,178 @@
+# Copyright(c) 1986 Association of Universities for Research in Astronomy Inc.
+
+include <gki.h>
+
+# GKI_EXECUTE -- Execute a metacode instruction. The instruction is decoded
+# and a graphics kernel driver subroutine is called to execute the instruction.
+# If the device driver does not include a procedure for the instruction the
+# instruction is discarded. Integer and real parameters are unpacked from
+# their short integer metacode representation. Character data is passed by
+# reference, i.e., as a SHORT integer array (not EOS delimited char!!), along
+# with the character count. Attribute packets are passed to the set attribute
+# procedure by reference as a short integer array.
+
+procedure gki_execute (gki, dd)
+
+short gki[ARB] # graphics kernel instruction
+int dd[ARB] # device driver
+
+int kp # kernel procedure
+int m, n, cn, fn, dummy, flags
+int x, y, x1, y1, x2, y2
+
+begin
+ switch (gki[GKI_HDR_OPCODE]) {
+
+ case GKI_OPENWS:
+ kp = dd[GKI_OPENWS]
+ if (kp != NULL) {
+ m = gki[GKI_OPENWS_M]
+ n = gki[GKI_OPENWS_N]
+ call zcall3 (kp, gki[GKI_OPENWS_D], n, m)
+ }
+ case GKI_CLOSEWS:
+ kp = dd[GKI_CLOSEWS]
+ if (kp != NULL) {
+ n = gki[GKI_CLOSEWS_N]
+ call zcall2 (kp, gki[GKI_CLOSEWS_D], n)
+ }
+ case GKI_REACTIVATEWS:
+ kp = dd[GKI_REACTIVATEWS]
+ if (kp != NULL) {
+ flags = gki[GKI_REACTIVATEWS_F]
+ call zcall1 (kp, flags)
+ }
+ case GKI_DEACTIVATEWS:
+ kp = dd[GKI_DEACTIVATEWS]
+ if (kp != NULL) {
+ flags = gki[GKI_DEACTIVATEWS_F]
+ call zcall1 (kp, flags)
+ }
+ case GKI_MFTITLE:
+ kp = dd[GKI_MFTITLE]
+ if (kp != NULL) {
+ n = gki[GKI_MFTITLE_N]
+ call zcall2 (kp, gki[GKI_MFTITLE_T], n)
+ }
+ case GKI_CLEAR:
+ kp = dd[GKI_CLEAR]
+ if (kp != NULL) {
+ call zcall1 (kp, dummy)
+ }
+ case GKI_CANCEL:
+ kp = dd[GKI_CANCEL]
+ if (kp != NULL) {
+ call zcall1 (kp, dummy)
+ }
+ case GKI_FLUSH:
+ kp = dd[GKI_FLUSH]
+ if (kp != NULL) {
+ call zcall1 (kp, dummy)
+ }
+ case GKI_POLYLINE:
+ kp = dd[GKI_POLYLINE]
+ if (kp != 0) {
+ n = gki[GKI_POLYLINE_N]
+ call zcall2 (kp, gki[GKI_POLYLINE_P], n)
+ }
+ case GKI_POLYMARKER:
+ kp = dd[GKI_POLYMARKER]
+ if (kp != 0) {
+ n = gki[GKI_POLYMARKER_N]
+ call zcall2 (kp, gki[GKI_POLYMARKER_P], n)
+ }
+ case GKI_TEXT:
+ kp = dd[GKI_TEXT]
+ if (kp != NULL) {
+ x = gki[GKI_TEXT_P]
+ y = gki[GKI_TEXT_P+1]
+ n = gki[GKI_TEXT_N]
+ call zcall4 (kp, x, y, gki[GKI_TEXT_T], n)
+ }
+ case GKI_FILLAREA:
+ kp = dd[GKI_FILLAREA]
+ if (kp != 0) {
+ n = gki[GKI_FILLAREA_N]
+ call zcall2 (kp, gki[GKI_FILLAREA_P], n)
+ }
+ case GKI_PUTCELLARRAY:
+ kp = dd[GKI_PUTCELLARRAY]
+ if (kp != NULL) {
+ x1 = gki[GKI_PUTCELLARRAY_LL]
+ y1 = gki[GKI_PUTCELLARRAY_LL+1]
+ x2 = gki[GKI_PUTCELLARRAY_UR]
+ y2 = gki[GKI_PUTCELLARRAY_UR+1]
+ m = gki[GKI_PUTCELLARRAY_NC]
+ n = gki[GKI_PUTCELLARRAY_NL]
+ call zcall7 (kp, gki[GKI_PUTCELLARRAY_P], m, n, x1,y1, x2,y2)
+ }
+ case GKI_SETCURSOR:
+ kp = dd[GKI_SETCURSOR]
+ if (kp != NULL) {
+ cn = gki[GKI_SETCURSOR_CN]
+ x = gki[GKI_SETCURSOR_POS]
+ y = gki[GKI_SETCURSOR_POS+1]
+ call zcall3 (kp, x, y, cn)
+ }
+ case GKI_PLSET:
+ kp = dd[GKI_PLSET]
+ if (kp != NULL) {
+ call zcall1 (kp, gki)
+ }
+ case GKI_PMSET:
+ kp = dd[GKI_PMSET]
+ if (kp != NULL) {
+ call zcall1 (kp, gki)
+ }
+ case GKI_TXSET:
+ kp = dd[GKI_TXSET]
+ if (kp != NULL) {
+ call zcall1 (kp, gki)
+ }
+ case GKI_FASET:
+ kp = dd[GKI_FASET]
+ if (kp != NULL) {
+ call zcall1 (kp, gki)
+ }
+ case GKI_GETCURSOR:
+ kp = dd[GKI_GETCURSOR]
+ if (kp != NULL) {
+ cn = gki[GKI_GETCURSOR_CN]
+ call zcall1 (kp, cn)
+ }
+ case GKI_GETCELLARRAY:
+ kp = dd[GKI_GETCELLARRAY]
+ if (kp != NULL) {
+ x1 = gki[GKI_GETCELLARRAY_LL]
+ y1 = gki[GKI_GETCELLARRAY_LL+1]
+ x2 = gki[GKI_GETCELLARRAY_UR]
+ y2 = gki[GKI_GETCELLARRAY_UR+1]
+ m = gki[GKI_GETCELLARRAY_NC]
+ n = gki[GKI_GETCELLARRAY_NL]
+ call zcall6 (kp, m, n, x1,y1, x2,y2)
+ }
+ case GKI_ESCAPE:
+ kp = dd[GKI_ESCAPE]
+ if (kp != NULL) {
+ fn = gki[GKI_ESCAPE_FN]
+ n = gki[GKI_ESCAPE_N]
+ call zcall3 (kp, fn, gki[GKI_ESCAPE_DC], n)
+ }
+ case GKI_SETWCS:
+ kp = dd[GKI_SETWCS]
+ if (kp != NULL) {
+ n = gki[GKI_SETWCS_N]
+ call zcall2 (kp, gki[GKI_SETWCS_WCS], n)
+ }
+ case GKI_GETWCS:
+ kp = dd[GKI_SETWCS]
+ if (kp != NULL) {
+ n = gki[GKI_SETWCS_N]
+ call zcall2 (kp, gki[GKI_SETWCS_WCS], n)
+ }
+ default:
+ kp = dd[GKI_UNKNOWN]
+ if (kp != NULL)
+ call zcall1 (kp, gki)
+ }
+end