It kind of depends on what "dpy" is: DEC defines this in the basic documentation as "720007", while Macro has this with the i-bit already set, as in "730007".
TABLE I
In-Out Transfer Wait for Completion Pulse Enable/Disable-
Command Bits for Restart/Continue Completion (Done
5 6 without wait Pulse Signal
––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
0 0 Continue, no wait Disable
0 1 Continue, no wait Enable
1 0 Wait, then continue Enable
1 1 Wait, then continue Disable
Bits 5 of the in-out transfer command designates whether the program
is to wait for a completion pulse before continuing. The exclusive
or of bits 5, 6 of the command specify whether the completion pulse
return signal is to be enabled or disabled.
The version with the i-bit set is generally assumed the default mode, as we also read there (referring to a code example):
The only case not included above, but mentioned in Table I, is the case of bits 5 and 6 both zero. Here, the program does not halt the and the completion pulse of the device is enabled. Thus, the program must only refrain from giving the display commands too frequently.
The technique of inhibiting completion is used when several devices are operating concurrently. The inhibit command completion is used with the sequence break system.
(So, the assumption seems to be that a completion pulse will be used, except in cases where a conflict may arise from addressing multiple devices asynchronously.)
The dpy instruction (73cb07) causes one point to be displayed on the scope. (...) The three "b" bits control the brightness -- 4 is visible to photomultiplier tubes only, 7 is barely visible in a dark room, 0 is normal, and 3 is brightest. The "c" bits control the centering. 0 makes the origin in the center of the scope. 1 puts it at a the center of the bottom edge. 2 makes the origin be half way up the left edge, while 3 puts it at the lower left corner.
A dpy (that is with the i-bit on) takes 50 microseconds to complete. dpy-i (iot 7) does not wait for the scope to complete. Since it is impossible to activate the scope too fast, one normally executes iot 7 instructions. This allows the program to continue while the scope is running.
"iot i", AKA "ioh", on the other hand, is fairly unambiguous, as in "730000".
So, when assembling source code, be sure what "dpy" actually means, 720007 or 730007. If it's for Macro or macro1.c, it's probably 730007.
But keep in mind that the request of a completion pulse is actually a function of XOR of bits 5 (i) and 6.
So,
720007 dpy-i ;display at intensity 0 with origin at lower left corner, no completion pulse, no wait
730000 iot i ;ioh – wait for completion pulse (never requested!)
should indeed hang.
Best,
Norbert