Google
 

Trailing-Edge - PDP-10 Archives - decuslib20-04 - decus/20-0135/comp/vtsynk.mac
There are 2 other files named vtsynk.mac in the archive. Click here to see a list.
00100	COMMENT * vtsynk, SIMULA specification;
00200	OPTIONS(/E:QUICK,vtsynk);
00300	PROCEDURE vtsynk(param,horiz,vertic);
00400	NAME param; INTEGER param; INTEGER horiz,vertic;
00500	COMMENT synchronizes the cursor in the screen position
00600	identified by horiz,vertic;
00700	
00800	
00900	!*;! MACRO-10 code !*;!
01000	
01100	    TITLE   vtsynk
01200	    ENTRY   vtsynk ;! simula calling
01250	    ENTRY   masynk ;! macro calling, with xbase,xlow,xwac1,xbh loaded
01300	    SUBTTL  VIDED subroutine, Jacob Palme 1978
01400	
01500	;!*** Copyright 1978 by the Swedish Defence Research Institute. ***
01700	
01800	    sall
01900	    search  simmac,simmcr,simrpa
02200	    search  vtmvda
02300	    macinit
02350	    extern  symcur
02400	
02500	    COMMENT* REGISTER USAGE IN THIS PROCEDURE
02600	    X0   Temporary use
02700	    X1   Used by outchr and vtmcur
02800	    X2   ==XTAC when calling function procedures
02900	    X3   ==XWAC1 = first parameter used to load XBASE,
03000	         = reference to sysout used by IONB via OUTCHR
03100	    X4   == used by vtmcur
03200	    X5   ==horiz
03300	    X6   ==vertic
03400	    X7   ==XBH = used by OUTCHR, buffer header pointer
03500	    X10  free
03600	    X11  free
03700	    X12  used by vtmcur
03900	    X13  used by vtmcur
04000	    X14  ==XBASE = base of mvistax SIMULA data block
04100	    X15  ==XCB current block pointer, used by RTS
04200	    X16  ==XLOW points to static area in RTS, used by RTS
04300	    X17  ==XPDP push down list pointer
04400	    *;!
04500	
04600	    bup==OFFSET(ZBHBUP)
04700	    cnt==OFFSET(ZBHCNT)
04800	
04900	;! OUTCHR assumes XWAC1 = file ref for Sysout, XBH pointer to
05000	;! buffer header. XWAC1==AC3, XBH==AC7.
05100	;! OUTCHR moves the character in AC0 to the SYSOUT output
05200	;! file buffer. IF a parameter is given, the contents of
05300	;! the word with the given offset from xbase is loaded into
05400	;! AC0 first. xbase refers to the mvistax class block instance.
05500	
05600	DEFINE outchr(c)<
05700	IFNB <c>,<L c(xbase)>
05800	    SOSGE   cnt(XBH)
05900	     XEC    IONB
06000	    IDPB    bup(XBH)
06100	>
06200	
06800	    ;! Local definitions ;!
06900	
07000	horiz==XWAC1+2       ;! AC5
07100	vertic==horiz+1      ;! AC6
07200	
07300	xbase==X14           ;! base of mvistax class instance block
07400	xtyp== X13           ;! terminal type number
07700	
07800	vtsynk: PROC         ;! entry point when called from SIMULA
07900	    ;! Set up environment variables
08000	    LF xbase,ZFLZBI(,XWAC1) ;! Base of MVISTAX block (vtmvda offsets)
08100	    LOWADR                  ;! XLOW points to static area
08200	    L XWAC1,YSYSOUT(XLOW)   ;! XWAC1==AC3:- Sysout for OUTCHR!
08300	    LF XBH,ZFIOBH(XWAC1)    ;! XBH==AC7:- buffer header
08400	    SUBI XBH,1              ;! Compute buffer header reference
08500	    L xtyp,trmtyp(xbase)   ;! terminaltype in register xtyp
08600	
08650	masynk:             ;! entry point when called from MACRO
08795	SKIPN qdisplayoutput(xbase) ;! IF NOT q_display_output THEN
08940	GOTO moved                  ;! no terminal output
09085	;! IF NOT direct_cursor_addressing THEN local_home_the_cursor
09230	IF
09375	  SKIPE directcursoraddressing(xbase)
09520	  GOTO FALSE
09665	THEN
09810	  ;! local_home_the_ucrsor code inserted here:
09955	  IF ;! addaltmode then outchr(terminalout,altmode,1)
10100	    SKIPN addaltmode(xbase)
10378	    GOTO FALSE
10656	  THEN
10934	    LI qesc
11212	    outchr
11490	  ELSE
11768	    outchr(home)
12046	  FI
12324	  outchr(home)
12602	  SETZM qvertic(xbase)
12880	  SETZM qhoriz(xbase)
13158	  IF ;! terminaltype = cdc71310s
13436	    CAME xtyp, cdc73s(xbase)
13714	    GOTO FALSE
13992	  THEN
14270	    L X1,heim1(xbase)
14548	    ST X1,qvertic(xbase)
14826	  FI
15104	FI ;! end of "if not direct_cursor_addressing
15382	BRANCH symcur
15660	moved:
15938	RETURN
16216	EPROC
16500	END;