Seq # *Modification Id* Act
----------------------------+
02187 M00S02182.virterm +++| VDCTRL(OUT"INPUTB2" + ((ATTORDINAL[0]-6)* 2));
02188 M00S02183.virterm +++| END
02189 M00S02184.virterm +++| END
02190 M00S02185.virterm +++| END
02191 M00S02186.virterm +++| ELSE
02192 M00S02187.virterm +++| BEGIN # TURN ON PHYSICAL ATTRIBUTES #
02193 M00S02188.virterm +++| IF TABLOCKMDE[0] THEN
02194 M00S02189.virterm +++| BEGIN # IF BLOCK TYPE TERMINAL #
02195 M00S02190.virterm +++| VDTOUT(X"1D"); # OUTPUT START FIELD ORDER #
02196 M00S02191.virterm +++| IF ATTGUARDMD[0] THEN
02197 M00S02192.virterm +++| BEGIN # IF GUARD MODE #
02198 M00S02193.virterm +++| VTCHAR = X"3C"; # ASSUME UNPROTECTED #
02199 M00S02194.virterm +++| IF ATTPROTECT[0] THEN VTCHAR = VTCHAR + X"04";
02200 M00S02195.virterm +++| END
02201 M00S02196.virterm +++| ELSE
02202 M00S02197.virterm +++| BEGIN # UNGUARDED FIELD #
02203 M00S02198.virterm +++| VTCHAR = X"44"; # ASSUME UNPROTECTED AND NORMAL #
02204 M00S02199.virterm +++| IF ATTPROTECT[0] THEN VTCHAR = VTCHAR - X"10";
02205 M00S02200.virterm +++| IF ATTALTERIN[0] OR ATTUNDERLN[0] OR
02206 M00S02201.virterm +++| ATTINVERSE[0] OR ATTBLINKMD[0] THEN
02207 M00S02202.virterm +++| VTCHAR = VTCHAR + X"04";
02208 M00S02203.virterm +++| END
02209 M00S02204.virterm +++| VDTOUT(VTCHAR); # OUTPUT FIELD ATTRIBUTE #
02210 M00S02205.virterm +++| END
02211 M00S02206.virterm +++| ELSE
02212 M00S02207.virterm +++| BEGIN
02213 M00S02208.virterm +++| IF ATTUNDERLN[0] THEN VTPSUNDACT[0] = VTPSUNDREQ[0];
02214 M00S02209.virterm +++| IF ATTUNDERLN[0] THEN VDCTRL(OUT"UNDERLNEON");
02215 M00S02210.virterm +++| IF ATTALTERIN[0] THEN VDCTRL(OUT"ALTINTENON");
02216 M00S02211.virterm +++| IF ATTINVERSE[0] THEN VDCTRL(OUT"INVERSEON");
02217 M00S02212.virterm +++| IF ATTBLINKMD[0] THEN VDCTRL(OUT"BLINKON");
02218 M00S02213.virterm +++| END
02219 M00S02214.virterm +++| END
02220 M00S02215.virterm +++| END
02221 M00S02216.virterm +++|ELSE
02222 M00S02217.virterm +++| BEGIN # NO ATTRIBUTES #
02223 M00S02218.virterm +++| IF TABLOCKMDE[0] THEN
02224 M00S02219.virterm +++| BEGIN # IF BLOCK MODE TERMINAL #
02225 M00S02220.virterm +++| VDTOUT(X"1D"); # OUTPUT *START FIELD* ORDER #
02226 M00S02221.virterm +++| VDTOUT(X"20"); # UNPROTECTED #
02227 M00S02222.virterm +++| END
02228 M00S02223.virterm +++| END
02229 M00S02224.virterm +++|
02230 M00S02225.virterm +++|ATTRIBMASK[0] = ATTNEWMASK; # SAVE CURRENT ATTRIBUTES #
02231 M00S02226.virterm +++|
02232 M00S02227.virterm +++|IOEND # VDTSAM #
02233 M00S02228.virterm +++|CONTROL EJECT;
02234 M00S02229.virterm +++|
02235 M00S02230.virterm +++|PROC VDTSAP(LASTPOS,XPOS,YPOS);
02236 M00S02231.virterm +++|
02237 M00S02232.virterm +++|# TITLE VDTSAP - SET ATTRIBUTE POSITION. #
02238 M00S02233.virterm +++|
02239 M00S02234.virterm +++|IOBEGIN(VDTSAP)
02240 M00S02235.virterm +++|
02241 M00S02236.virterm +++|#
02242 M00S02237.virterm +++|** VDTSAP - SET ATTRIBUTE POSITION.
02243 M00S02238.virterm +++|*
02244 M00S02239.virterm +++|* THIS PROCEDURE MOVES THE CURSOR TO THE SPECIFIED ROW AND COLUMN.
02245 M00S02240.virterm +++|* FOR A NON BLOCK MODE TERMINAL THIS IS IDENTICAL TO VDTPOS BUT A
02246 M00S02241.virterm +++|* BLOCK MODE TERMINAL WHOSES ATTRIBUTE CHARACTER OCCUPIES A SPACE
02247 M00S02242.virterm +++|* ON THE SCREEN REQUIRES THAT THE POSITION BE BACKED UP ONE SPACE.
02248 M00S02243.virterm +++|*
02249 M00S02244.virterm +++|* PROC VDTSAP(LASTPOS,XPOS,YPOS)
02250 M00S02245.virterm +++|*
02251 M00S02246.virterm +++|* ENTRY LASTPOS = BUFFER POSITION OF LAST FIELD ATTRIBUTE.
02252 M00S02247.virterm +++|* XPOS = DESIRED X COORDINATE.
02253 M00S02248.virterm +++|* YPOS = DESIRED Y COORDINATE.
02254 M00S02249.virterm +++|*
02255 M00S02250.virterm +++|* EXIT CURSOR MOVED TO APPROPRIATE POSITION.
02256 M00S02251.virterm +++|*
02257 M00S02252.virterm +++|* CALLS VDMOVE, VDTOUT.
02258 M00S02253.virterm +++|*
02259 M00S02254.virterm +++|* USES VTCOUNT, VTHOLD, VTXCUR, VTYCUR.
02260 M00S02255.virterm +++|#
02261 M00S02256.virterm +++|ITEM LASTPOS I; # LAST ATTRIBUTE POSITION #
02262 M00S02257.virterm +++|ITEM XPOS I; # DESIRED X COORDINATE #
02263 M00S02258.virterm +++|ITEM YPOS I; # DESIRED Y COORDINATE #
02264 M00S02259.virterm +++|
02265 M00S02260.virterm +++|VTXCUR = XPOS;
02266 M00S02261.virterm +++|VTYCUR = YPOS;
02267 M00S02262.virterm +++|VTHOLD = LASTPOS;
02268 M00S02263.virterm +++|
02269 M00S02264.virterm +++|CONTROL IFEQ EDITORVDT,0; # IF NOT FSE VERSION OF VIRTERM #
02270 M00S02265.virterm +++|IF TABLOCKMDE[0] OR TABATTRCHR[0] THEN
02271 M00S02266.virterm +++| BEGIN # IF ATTRIBUTE WILL TAKE A BYTE #
02272 M00S02267.virterm +++|CONTROL FI; # END OF IF NOT FSE #
02273 M00S02268.virterm +++|CONTROL IFEQ EDITORVDT,1; # IF FSE VERSION OF VIRTERM #
02274 M00S02269.virterm +++|IF TABLOCKMDE[0] THEN
02275 M00S02270.virterm +++| BEGIN # IF BLOCK MODE TERMINAL #
02276 M00S02271.virterm +++|CONTROL FI; # END OF IF FSE #
02277 M00S02272.virterm +++| VTXCUR = VTXCUR - 1; # BACK CURSOR UP ONE POSITION #
02278 M00S02273.virterm +++| IF VTXCUR LS 0 THEN
02279 M00S02274.virterm +++| BEGIN # IF WRAP TO PREVIOUS LINE #
02280 M00S02275.virterm +++| VTXCUR = VTXMAX;
02281 M00S02276.virterm +++| VTYCUR = VTYCUR - 1;
02282 M00S02277.virterm +++| IF VTYCUR LS 0 THEN
02283 M00S02278.virterm +++| BEGIN # IF WRAP TO LAST SCREEN POSTION #
02284 M00S02279.virterm +++| VTYCUR = VTYMAX;
02285 M00S02280.virterm +++| IF TABATTRCHR[0] THEN
02286 M00S02281.virterm +++| BEGIN # IF ATTRIBUTE TAKES A SPACE #
02287 M00S02282.virterm +++| VTXCUR = 0;
02288 M00S02283.virterm +++| VTYCUR = 0;
02289 M00S02284.virterm +++| END
02290 M00S02285.virterm +++| END
02291 M00S02286.virterm +++| END
02292 M00S02287.virterm +++|CONTROL IFEQ EDITORVDT,0; # IF NOT FSE VERSION OF VIRTERM #
02293 M00S02288.virterm +++| IF TABLOCKMDE[0] THEN
02294 M00S02289.virterm +++| BEGIN # IF BLOCK MODE TERMINAL #
02295 M00S02290.virterm +++| VTCOUNT = (VTYCUR * (VTXMAX + 1)) + VTXCUR;
02296 M00S02291.virterm +++| IF VTCOUNT LS VTHOLD - 1 OR VTCOUNT GR VTHOLD THEN
02297 M00S02292.virterm +++| BEGIN # IF TERMINATING PREVIOUS FIELD #
02298 M00S02293.virterm +++| VDTOUT(X"1D"); # START FIELD ORDER #
02299 M00S02294.virterm +++| VDTOUT(X"30"); # AUTOSKIP, DISPLAY, NON-SELECT #
02300 M00S02295.virterm +++| END
02301 M00S02296.virterm +++| VTHOLD = VTCOUNT; # UPDATE POSITION #
02302 M00S02297.virterm +++| END
02303 M00S02298.virterm +++|CONTROL FI; # END OF IF NOT FSE #
02304 M00S02299.virterm +++| END
02305 M00S02300.virterm +++|VDMOVE(VTXCUR,VTYCUR); # MOVE CURSOR #
02306 M00S02301.virterm +++|
02307 M00S02302.virterm +++|LASTPOS = VTHOLD; # UPDATE LAST POSITION #
02308 M00S02303.virterm +++|
02309 M00S02304.virterm +++|IOEND # VDTSAP #
02310 M00S02305.virterm +++|CONTROL EJECT;
02311 M00S02306.virterm +++|
02312 M00S02307.virterm +++|PROC VDTSTD(COLUMNS,LINES);
02313 M00S02308.virterm +++|
02314 M00S02309.virterm +++|# TITLE VDTSTD - SET TERMINAL DIMENSIONS. #
02315 M00S02310.virterm +++|
02316 M00S02311.virterm +++|IOBEGIN(VDTSTD)
02317 M00S02312.virterm +++|
02318 M00S02313.virterm +++|#
02319 M00S02314.virterm +++|** VDTSTD - SET TERMINAL DIMENSIONS.
02320 M00S02315.virterm +++|*
02321 M00S02316.virterm +++|* THIS PROCEDURE ATTEMPTS TO SET THE REQUESTED TERMINAL DIMENSIONS.
02322 M00S02317.virterm +++|* IF THE DIMENSIONS CAN NOT BE ALTERED AS REQUESTED, NO ACTION WILL
02323 M00S02318.virterm +++|* OCCUR. IF POSSIBLE, *VDTSTD* WILL CHANGE THE WIDTH AND/OR LENGTH
02324 M00S02319.virterm +++|* OF THE TERMINAL SCREEN TO CONFORM AS NEARLY AS POSSIBLE TO THE
02325 M00S02320.virterm +++|* SPECIFIED SIZE.
02326 M00S02321.virterm +++|*
02327 M00S02322.virterm +++|* PROC VDTSTD(COLUMNS,LINES)
02328 M00S02323.virterm +++|*
02329 M00S02324.virterm +++|* ENTRY COLUMNS = NUMBER OF COLUMNS DESIRED.
02330 M00S02325.virterm +++|* LINES = NUMBER OF LINES DESIRED.
02331 M00S02326.virterm +++|*
02332 M00S02327.virterm +++|* EXIT TERMINAL DIMENSIONS ADJUSTED IF NECESSARY AND POSSIBLE.
02333 M00S02328.virterm +++|*
02334 M00S02329.virterm +++|* CALLS VDCTRL.
02335 M00S02330.virterm +++|*
02336 M00S02331.virterm +++|* USES VTI, VTJ, VTXMAX, VTYMAX.
02337 M00S02332.virterm +++|#
02338 M00S02333.virterm +++|
02339 M00S02334.virterm +++|ITEM COLUMNS I; # NUMBER OF COLUMNS DESIRED #
02340 M00S02335.virterm +++|ITEM LINES I; # NUMBER OF LINES DESIRED #
02341 M00S02336.virterm +++|
Line S00001 Modification History |
M01 (Added by) | ns2700 |
Seq # *Modification Id* Act
----------------------------+
02342 M01S00001.ns2700 +++|ITEM TMP1 U; # TEMPORARY STORAGE #
02343 M01S00002.ns2700 +++|ITEM TMP2 U; # TEMPORARY STORAGE #
02344 M01S00003.ns2700 +++|ITEM TMP3 U; # TEMPORARY STORAGE #
02345 M01S00004.ns2700 +++|ITEM TMP4 U; # TEMPORARY STORAGE #
02346 M01S00005.ns2700 +++|ITEM TMP5 U; # TEMPORARY STORAGE #
02347 M01S00006.ns2700 +++|
02348 M00S02337.virterm +++|VTI = COLUMNS;
02349 M00S02338.virterm +++|VTJ = LINES;
Line S02339 Modification History |
M01 (Removed by) | ns2700 |
Seq # *Modification Id* Act
----------------------------+
02350 M01S02339.ns2700 ---|
02351 M01S02340.ns2700 ---|# END OF NON-REENTRANT PARAMTER USAGE #
02352 M01S02341.ns2700 ---|
02353 M01S02342.ns2700 ---|IF (TABXMAXONE[0] GQ VTI AND TABYMAXONE[0] GQ VTJ)
02354 M01S02343.ns2700 ---| OR TABXMAXTWO[0] EQ 0 THEN
02355 M01S02344.ns2700 ---| BEGIN # FIRST SIZE FITS OR IS LARGEST #
02356 M01S02345.ns2700 ---| IF VTXMAX NQ TABXMAXONE[0] - 1 OR VTYMAX NQ TABYMAXONE[0] - 1 THEN
02357 M01S02346.ns2700 ---| BEGIN # IF NOT CURRENT SIZE #
02358 M01S02347.ns2700 ---| VTXMAX = TABXMAXONE[0] - 1; # SET SIZE ONE #
02359 M01S02348.ns2700 ---| VTYMAX = TABYMAXONE[0] - 1;
02360 M01S02349.ns2700 ---| VDCTRL(OUT"SCREENSZ1");
02361 M01S02350.ns2700 ---| END
02362 M01S02351.ns2700 ---| IORET # RETURN #
02363 M01S02352.ns2700 ---| END
02364 M01S02353.ns2700 ---|
02365 M01S02354.ns2700 ---|IF (TABXMAXTWO[0] GQ VTI AND TABYMAXTWO[0] GQ VTJ)
02366 M01S02355.ns2700 ---| OR TABXMAXTHR[0] EQ 0 THEN
02367 M01S02356.ns2700 ---| BEGIN # NEXT SIZE FITS OR IS LARGEST #
02368 M01S02357.ns2700 ---| IF VTXMAX NQ TABXMAXTWO[0] - 1 OR VTYMAX NQ TABYMAXTWO[0] - 1 THEN
02369 M01S02358.ns2700 ---| BEGIN # IF NOT CURRENT SIZE #
02370 M01S02359.ns2700 ---| VTXMAX = TABXMAXTWO[0] - 1; # SET SIZE TWO #
02371 M01S02360.ns2700 ---| VTYMAX = TABYMAXTWO[0] - 1;
02372 M01S02361.ns2700 ---| VDCTRL(OUT"SCREENSZ2");
02373 M01S02362.ns2700 ---| END
02374 M01S02363.ns2700 ---| IORET # RETURN #
02375 M01S02364.ns2700 ---| END
02376 M01S02365.ns2700 ---|
02377 M01S02366.ns2700 ---|IF (TABXMAXTHR[0] GQ VTI AND TABYMAXTHR[0] GQ VTJ)
02378 M01S02367.ns2700 ---| OR TABXMAXFOR[0] EQ 0 THEN
02379 M01S02368.ns2700 ---| BEGIN # THIRD SIZE FITS OR IS LARGEST #
02380 M01S02369.ns2700 ---| IF VTXMAX NQ TABXMAXTHR[0] - 1 OR VTYMAX NQ TABYMAXTHR[0] - 1 THEN
02381 M01S02370.ns2700 ---| BEGIN # IF NOT CURRENT SIZE #
02382 M01S02371.ns2700 ---| VTXMAX = TABXMAXTHR[0] - 1; # SET SIZE THREE #
02383 M01S02372.ns2700 ---| VTYMAX = TABYMAXTHR[0] - 1;
02384 M01S02373.ns2700 ---| VDCTRL(OUT"SCREENSZ3");
02385 M01S02374.ns2700 ---| END
02386 M01S02375.ns2700 ---| IORET # RETURN #
02387 M01S02376.ns2700 ---| END
02388 M01S02377.ns2700 ---|
02389 M01S02378.ns2700 ---|IF VTXMAX NQ TABXMAXFOR[0] - 1 OR VTYMAX NQ TABYMAXFOR[0] - 1 THEN
02390 M01S02379.ns2700 ---| BEGIN # IF NOT CURRENT SIZE #
02391 M01S02380.ns2700 ---| VTXMAX = TABXMAXFOR[0] - 1; # SET SIZE FOUR #
02392 M01S02381.ns2700 ---| VTYMAX = TABYMAXFOR[0] - 1;
02393 M01S02382.ns2700 ---| VDCTRL(OUT"SCREENSZ4");
02394 M01S02383.ns2700 ---| END
Line S00007 Modification History |
M01 (Added by) | ns2700 |
Seq # *Modification Id* Act
----------------------------+
02395 M01S00007.ns2700 +++|TMP2 = 0;
02396 M01S00008.ns2700 +++|TMP3 = -1;
02397 M01S00009.ns2700 +++|TMP4 = 0;
02398 M01S00010.ns2700 +++|TMP5 = 0;
02399 M01S00011.ns2700 +++|FOR TMP1 = 0 STEP 15 WHILE TMP3 LS VTI
02400 M01S00012.ns2700 +++| AND TMP3 NQ 0 AND TMP1 LS 60 DO
02401 M01S00013.ns2700 +++| BEGIN # FIND BEST COLUMNS FIT #
02402 M01S00014.ns2700 +++| TMP3 = B<TMP1,8>TABHEADSIX;
02403 M01S00015.ns2700 +++| IF TMP3 GR TMP4 THEN
02404 M01S00016.ns2700 +++| BEGIN # IF BETTER THAN PREVIOUS BEST #
02405 M01S00017.ns2700 +++| TMP2 = TMP1;
02406 M01S00018.ns2700 +++| TMP4 = TMP3;
02407 M01S00019.ns2700 +++| TMP5 = B<TMP1+8,7>TABHEADSIX;
02408 M01S00020.ns2700 +++| END
02409 M01S00021.ns2700 +++| END
02410 M01S00022.ns2700 +++|
02411 M01S00023.ns2700 +++|TMP3 = -1;
02412 M01S00024.ns2700 +++|FOR TMP1 = TMP2 STEP 15 WHILE TMP3 LS VTJ
02413 M01S00025.ns2700 +++| AND TMP3 NQ 0 AND TMP1 LS 60 DO
02414 M01S00026.ns2700 +++| BEGIN # FIND BEST ROWS FIT #
02415 M01S00027.ns2700 +++| TMP3 = B<TMP1+8,7>TABHEADSIX;
02416 M01S00028.ns2700 +++| IF TMP3 GR TMP5 THEN
02417 M01S00029.ns2700 +++| BEGIN # IF BETTER THAN PREVIOUS BEST #
02418 M01S00030.ns2700 +++| TMP2 = TMP1;
02419 M01S00031.ns2700 +++| TMP4 = B<TMP1,8>TABHEADSIX;
02420 M01S00032.ns2700 +++| TMP5 = TMP3;
02421 M01S00033.ns2700 +++| END
02422 M01S00034.ns2700 +++| END
02423 M01S00035.ns2700 +++|
02424 M01S00036.ns2700 +++|IF VTXMAX NQ TMP4-1 OR VTYMAX NQ TMP5-1 THEN
02425 M01S00037.ns2700 +++| BEGIN # IF SIZE CHANGE REQUIRED #
02426 M01S00038.ns2700 +++| VTXMAX = TMP4 - 1;
02427 M01S00039.ns2700 +++| VTYMAX = TMP5 - 1;
02428 M01S00040.ns2700 +++| IF TMP2 LS 15 THEN VDCTRL(OUT"SCREENSZ1");
02429 M01S00041.ns2700 +++| ELSE IF TMP2 LS 30 THEN VDCTRL(OUT"SCREENSZ2");
02430 M01S00042.ns2700 +++| ELSE IF TMP2 LS 45 THEN VDCTRL(OUT"SCREENSZ3");
02431 M01S00043.ns2700 +++| ELSE VDCTRL(OUT"SCREENSZ4");
02432 M01S00044.ns2700 +++| END
02433 M00S02384.virterm +++|
02434 M00S02385.virterm +++|IOEND # VDTSTD #
02435 M00S02386.virterm +++|CONTROL EJECT;
02436 M00S02387.virterm +++|CONTROL IFEQ SINGLE,1; # IF NOT MULTI USER FSE #
02437 M00S02388.virterm +++|
02438 M00S02389.virterm +++|PROC VDTSTM(MODE,STAT);
02439 M00S02390.virterm +++|
02440 M00S02391.virterm +++|# TITLE VDTSTM - SET TERMINAL MODE. #
02441 M00S02392.virterm +++|
02442 M00S02393.virterm +++|BEGIN # VDTSTM #
02443 M00S02394.virterm +++|
02444 M00S02395.virterm +++|#
02445 M00S02396.virterm +++|** VDTSTM - SET TERMINAL MODE.
02446 M00S02397.virterm +++|*
02447 M00S02398.virterm +++|* THIS PROCEDURE SETS THE TERMINAL MODE TO EITHER SCREEN OR LINE.
02448 M00S02399.virterm +++|*
02449 M00S02400.virterm +++|* PROC VDTSTM(MODE,STAT)
02450 M00S02401.virterm +++|*
02451 M00S02402.virterm +++|* ENTRY MODE = 1, IF SCREEN MODE REQUESTED.
02452 M00S02403.virterm +++|* = 0, IF LINE MODE REQUESTED.
02453 M00S02404.virterm +++|*
02454 M00S02405.virterm +++|* EXIT STAT = 1, IF CURRENT MODE IS SCREEN.
02455 M00S02406.virterm +++|* = 0, IF CURRENT MODE IS LINE.
02456 M00S02407.virterm +++|*
02457 M00S02408.virterm +++|*IF UNDEF QTRM
02458 M00S02409.virterm +++|* CALLS VDCTRL, VDTBOO, VDTCLO, VDTGSL, VDTITD, VDTPRT$
02459 M00S02410.virterm +++|* VDTSTR, VDSYNCH, VDTWTO.
02460 M00S02411.virterm +++|*ELSE
02461 M00S02412.virterm +++|* CALLS VDTITD, VDSYNCH.
02462 M00S02413.virterm +++|*ENDIF
02463 M00S02414.virterm +++|*
02464 M00S02415.virterm +++|* USES VTXMAX, VTYMAX.
02465 M00S02416.virterm +++|*
02466 M00S02417.virterm +++|* NOTES VDTSTM DOES NOT SET THE TERMINAL SIZE, THAT
02467 M00S02418.virterm +++|* TASK IS PERFORMED BY A CALL TO VDTSTD. THE
02468 M00S02419.virterm +++|* VDTBOO OUTPUT SEQUENCE INCLUDES THE SEQUENCE
02469 M00S02420.virterm +++|* NECESSARY TO DISABLE PROTECT FOR THE TERMINAL.
Line S00003 Modification History |
M01 (Added by) | ns2524 |
Seq # *Modification Id* Act
----------------------------+
02470 M01S00003.ns2524 +++|* VDTBOO MUST HAVE BEEN CALLED PRIOR TO VDTSTM.
02471 M00S02421.virterm +++|#
02472 M00S02422.virterm +++|
02473 M00S02423.virterm +++|ITEM MODE I; # REQUESTED MODE #
02474 M00S02424.virterm +++|ITEM MODELNAME C(6); # *TDU* DEFINED MODEL NAME #
02475 M00S02425.virterm +++|ITEM STAT I; # SELECTED MODE #
02476 M00S02426.virterm +++|
02477 M00S02427.virterm +++|DEF XONOFF #O"00164104400100000000"#; # XPARENT ON AND OFF #
02478 M00S02428.virterm +++|
02479 M00S02429.virterm +++|VDTITD(MODELNAME); # INITIALIZE *TDU* DEFINITION #
02480 M00S02430.virterm +++|*IF UNDEF,QTRM
02481 M00S02431.virterm +++|VDTGSL(VTMODEL,STAT); # GET MODEL AND SCREEN OR LINE #
02482 M00S02432.virterm +++|*ELSE
02483 M00S02433.virterm +++|MODELNAME = NIT$TRNAM[NIT$CON]; # GET MODELNAME #
02484 M00S02434.virterm +++|MODE = 1;
02485 M00S02435.virterm +++|STAT = 1;
02486 M00S02436.virterm +++|*ENDIF
02487 M00S02437.virterm +++|
02488 M00S02438.virterm +++|IF MODELNAME NQ " " THEN
02489 M00S02439.virterm +++| BEGIN # IF OS MODE IS SCREEN #
02490 M00S02440.virterm +++| IF MODE EQ 1 THEN
02491 M00S02441.virterm +++| BEGIN # IF SCREEN MODE IS REQUESTED #
02492 M00S02442.virterm +++| TABLOCKMDE[0] = TABCURADDT[0] EQ 4;
02493 M00S02443.virterm +++| VDSYNCH; # FLUSH ANY OUTPUT #
02494 M00S02444.virterm +++|*IF UNDEF,QTRM
02495 M00S02445.virterm +++| VDTWTO(XONOFF); # XPARENT ON AND OFF #
02496 M00S02446.virterm +++|*ENDIF
02497 M00S02447.virterm +++| CONTROL IFEQ EDITORVDT,1;
02498 M00S02448.virterm +++| IF TABTYPHEAD[0] THEN
02499 M00S02449.virterm +++| BEGIN # IF TYPE AHEAD REQUESTED #
02500 M00S02450.virterm +++| VDTSTR(ENABLEMMSG); # ENABLE MULTI-MSG TRANSPARENT #
02501 M00S02451.virterm +++| VDTPRT$(0); # PROMPT OFF #
02502 M00S02452.virterm +++| END
02503 M00S02453.virterm +++| CONTROL FI;
02504 M00S02454.virterm +++| VDTTFF(OUT"CLREOL",VTCOUNT); # TEST CLEAR EOL AND SET FLAG #
02505 M00S02455.virterm +++| VTCLRFRST[0] = VTCOUNT NQ 0 AND NOT TABLOCKMDE[0];
02506 M00S02456.virterm +++| IF VTCLRFRST[0] THEN
02507 M00S02457.virterm +++| BEGIN # IF TERMINAL HAS A CLEAR TO EOL #
02508 M00S02458.virterm +++| VDTTFF(OUT"CURSORSTR",VTCOUNT);
02509 M00S02459.virterm +++| VTNUMBLNK[0] = VTCOUNT; # FIND BLANK/VDTPOS THRESHOLD #
02510 M00S02460.virterm +++| VDTTFF(OUT"CURSORSEC",VTCOUNT);
02511 M00S02461.virterm +++| VTNUMBLNK[0] = VTNUMBLNK[0] + VTCOUNT;
02512 M00S02462.virterm +++| VDTTFF(OUT"CURSORTHR",VTCOUNT);
02513 M00S02463.virterm +++| VTNUMBLNK[0] = VTNUMBLNK[0] + VTCOUNT;
02514 M00S02464.virterm +++| IF TABCURADDT[0] EQ 3 THEN
02515 M00S02465.virterm +++| BEGIN # IF ANSI #
02516 M00S02466.virterm +++| IF TABXDECIML[0] EQ 0 THEN
02517 M00S02467.virterm +++| BEGIN # IF NOT FIXED LENGTH X/Y #
02518 M00S02468.virterm +++| VTNUMBLNK[0] = VTNUMBLNK[0] + 4;
02519 M00S02469.virterm +++| END
02520 M00S02470.virterm +++| ELSE
02521 M00S02471.virterm +++| BEGIN # FIXED LENGTH COORDINATES #
02522 M00S02472.virterm +++| VTNUMBLNK[0] = VTNUMBLNK[0] + TABXDECIML[0] + TABYDECIML[0];
02523 M00S02473.virterm +++| END
02524 M00S02474.virterm +++| END
Line S00001 Modification History |
M01 (Added by) | ns2665 |
Seq # *Modification Id* Act
----------------------------+
02525 M01S00001.ns2665 +++| ELSE IF TABCURADDT[0] EQ 5 THEN
02526 M01S00002.ns2665 +++| BEGIN # IF 3151 #
02527 M01S00003.ns2665 +++| VTNUMBLNK[0] = VTNUMBLNK[0] + 4;
02528 M01S00004.ns2665 +++| END
02529 M00S02475.virterm +++| ELSE
02530 M00S02476.virterm +++| BEGIN # BINARY OR 721 #
02531 M00S02477.virterm +++| VTNUMBLNK[0] = VTNUMBLNK[0] + 2;
02532 M00S02478.virterm +++| END
02533 M00S02479.virterm +++| END
Line S02480 Modification History |
M01 (Removed by) | ns2524 |
Seq # *Modification Id* Act
----------------------------+
02534 M01S02480.ns2524 ---| VDTBOO; # BEGIN OUTPUT SEQUENCE #
Line S00004 Modification History |
M01 (Added by) | ns2524 |
Seq # *Modification Id* Act
----------------------------+
02535 M01S00004.ns2524 +++| CONTROL IFEQ EDITORVDT,1;
02536 M01S00005.ns2524 +++| VDTBOO; # BEGIN OUTPUT SEQUENCE #
02537 M01S00006.ns2524 +++| CONTROL FI;
02538 M00S02481.virterm +++| SCREENMODE = TRUE; # SCREEN MODE IS TRUE #
02539 M00S02482.virterm +++| VDCTRL(OUT"SETSCRMODE"); # SET SCREEN MODE #
02540 M00S02483.virterm +++| VDTTFF(OUT"UNDERLNEON",VTCOUNT); # TEST UNDERLINE AND SET FLAG #
02541 M00S02484.virterm +++| VTPSUNDREQ[0] = VTCOUNT EQ 0 AND NOT TABLOCKMDE[0];
02542 M00S02485.virterm +++| STAT = 1;
Line S00001 Modification History |
M01 (Added by) | virte13 |
Seq # *Modification Id* Act
----------------------------+
02543 M01S00001.virte13 +++| VDSYNCH; # FLUSH OUTPUT #
02544 M00S02486.virterm +++| END
02545 M00S02487.virterm +++| ELSE
02546 M00S02488.virterm +++| BEGIN # IF LINE MODE REQUESTED #
02547 M00S02489.virterm +++| IF SCREENMODE THEN
02548 M00S02490.virterm +++| BEGIN # IF CURRENT MODE IS SCREEN #
02549 M00S02491.virterm +++| VDSYNCH; # FLUSH ANY OUTPUT #
02550 M00S02492.virterm +++| CONTROL IFEQ EDITORVDT,1;
02551 M00S02493.virterm +++| IF TABTYPHEAD[0] THEN
02552 M00S02494.virterm +++| BEGIN # IF TYPE AHEAD WAS ON #
02553 M00S02495.virterm +++| VDTSTR(DISABLMMSG); # DISABLE MULTI-MSG TRANSPARENT #
02554 M00S02496.virterm +++| VDTPRT$(1); # PROMPT ON #
Line S02497 Modification History |
M01 (Removed by) | virte13 |
Seq # *Modification Id* Act
----------------------------+
02555 M01S02497.virte13 ---| VDTCLO(0); # FLUSH THE OUTPUT BUFFER #
02556 M00S02498.virterm +++| END
02557 M00S02499.virterm +++| CONTROL FI;
02558 M00S02500.virterm +++| VTXMAX = 0; # CLEAR SCREEN SIZE #
02559 M00S02501.virterm +++| VTYMAX = 0;
Line S02502 Modification History |
M01 (Removed by) | ns2524 |
Seq # *Modification Id* Act
----------------------------+
02560 M01S02502.ns2524 ---| VDTBOO; # BEGIN OUTPUT SEQUENCE #
02561 M00S02503.virterm +++| SCREENMODE = FALSE; # SCREEN MODE IS FALSE #
02562 M00S02504.virterm +++| VDCTRL(OUT"SETLNEMODE"); # SET LINE MODE #
Line S00002 Modification History |
M01 (Added by) | virte13 |
Seq # *Modification Id* Act
----------------------------+
02563 M01S00002.virte13 +++| VDSYNCH; # FLUSH OUTPUT #
02564 M00S02505.virterm +++| STAT = 0;
02565 M00S02506.virterm +++| CONTROL IFEQ EDITORVDT,1;
Line S00003 Modification History |
M01 (Added by) | virte13 |
Seq # *Modification Id* Act
----------------------------+
02566 M01S00003.virte13 +++| VDTCLO(0); # FLUSH THE OUTPUT BUFFER #
02567 M00S02507.virterm +++| VTTDUREAD[0] = FALSE; # CLEAR VALID TABLE READ FLAG #
02568 M00S02508.virterm +++| CONTROL FI;
02569 M00S02509.virterm +++| END
02570 M00S02510.virterm +++| END
Line S02511 Modification History |
M01 (Removed by) | virte13 |
Seq # *Modification Id* Act
----------------------------+
02571 M01S02511.virte13 ---| VDSYNCH; # FLUSH OUTPUT #
02572 M00S02512.virterm +++| END
02573 M00S02513.virterm +++|ELSE
02574 M00S02514.virterm +++| BEGIN # OS MODE IS LINE #
02575 M00S02515.virterm +++| STAT = 0;
02576 M00S02516.virterm +++| END
02577 M00S02517.virterm +++|
02578 M00S02518.virterm +++|END # VDTSTM #
02579 M00S02519.virterm +++|CONTROL FI; # END OF IF SINGLE USER FSE #
02580 M00S02520.virterm +++|*IF UNDEF,QTRM
02581 M00S02521.virterm +++|CONTROL EJECT;
02582 M00S02522.virterm +++|
02583 M00S02523.virterm +++|PROC VDTSTR(STRING);
02584 M00S02524.virterm +++|
02585 M00S02525.virterm +++|# TITLE VDTSTR - WRITE ONE LINE OF OUTPUT. #
02586 M00S02526.virterm +++|
02587 M00S02527.virterm +++|IOBEGIN(VDTSTR)
02588 M00S02528.virterm +++|
02589 M00S02529.virterm +++|#
02590 M00S02530.virterm +++|** VDTSTR - WRITE ONE LINE OF OUTPUT.
02591 M00S02531.virterm +++|*
02592 M00S02532.virterm +++|* THIS PROCEDURES WRITES A STRING OF ASCII8 CHARACTERS.
02593 M00S02533.virterm +++|*
02594 M00S02534.virterm +++|* PROC VDTSTR(STRING)
02595 M00S02535.virterm +++|*
02596 M00S02536.virterm +++|* ENTRY STRING = ASCII8 STRING, ZERO BYTE TERMINATED.
02597 M00S02537.virterm +++|*
02598 M00S02538.virterm +++|* USES VTHOLD.
02599 M00S02539.virterm +++|*
02600 M00S02540.virterm +++|* CALLS VDTWTC, VDSYNCH.
02601 M00S02541.virterm +++|#
02602 M00S02542.virterm +++|
02603 M00S02543.virterm +++|ARRAY STRING [0:0] P(1);; # LINE IMAGE BUFFER #
02604 M00S02544.virterm +++|BASED ARRAY PARM [0:0] P(1);; # LINE IMAGE BUFFER ADDRESS #
02605 M00S02545.virterm +++|
02606 M00S02546.virterm +++|VTHOLD = LOC(STRING); # SAVE PARAMETER ADDRESS #
02607 M00S02547.virterm +++|
02608 M00S02548.virterm +++|# END OF NON-REENTRANT PARAMETER USAGE #
02609 M00S02549.virterm +++|
02610 M00S02550.virterm +++|VDSYNCH;
02611 M00S02551.virterm +++|
02612 M00S02552.virterm +++|# START OF NON-REENTRANT CODE SEQUENCE #
02613 M00S02553.virterm +++|
02614 M00S02554.virterm +++|P<PARM> = VTHOLD; # RESTORE BUFFER ADDRESS #
02615 M00S02555.virterm +++|VDTWTC(PARM); # WRITE LINE OF OUTPUT #
02616 M00S02556.virterm +++|
02617 M00S02557.virterm +++|# END OF NON-REENTRANT CODE SEQUENCE #
02618 M00S02558.virterm +++|
02619 M00S02559.virterm +++|IOEND # VDTSTR #
02620 M00S02560.virterm +++|*ELSE
02621 M00S02561.virterm +++|CONTROL EJECT; # QTRM VARIANT OF VDTSTR #
02622 M00S02562.virterm +++|
02623 M00S02563.virterm +++|PROC VDTSTR(STRING);
02624 M00S02564.virterm +++|
02625 M00S02565.virterm +++|# TITLE VDTSTR - WRITE ONE LINE OF OUTPUT. #
02626 M00S02566.virterm +++|
02627 M00S02567.virterm +++|BEGIN # VDTSTR #
02628 M00S02568.virterm +++|
02629 M00S02569.virterm +++|#
02630 M00S02570.virterm +++|** VDTSTR - WRITE ONE LINE OF OUTPUT.
02631 M00S02571.virterm +++|*
02632 M00S02572.virterm +++|* THIS PROCEDURE WRITES A STRING OF ASCII CHARACTERS.
02633 M00S02573.virterm +++|*
02634 M00S02574.virterm +++|* PROC VDTSTR(STRING)
02635 M00S02575.virterm +++|*
02636 M00S02576.virterm +++|* ENTRY STRING = ASCII8 STRING, ZERO BYTE TERMINATED.
02637 M00S02577.virterm +++|*
02638 M00S02578.virterm +++|* USES VTHOLD.
02639 M00S02579.virterm +++|*
02640 M00S02580.virterm +++|* CALLS SFNQUE, VDSYNCH.
02641 M00S02581.virterm +++|#
02642 M00S02582.virterm +++|ARRAY STRING [0:0] P(1); # LINE IMAGE BUFFER #
02643 M00S02583.virterm +++| BEGIN
02644 M00S02584.virterm +++| ITEM STRING$WORD U(00,00,60); # BUFFER WORD (INTEGER) #
02645 M00S02585.virterm +++| END
02646 M00S02586.virterm +++|BASED ARRAY PARM [0:0] P(1);; # LINE IMAGE BUFFER ADDRESS #
02647 M00S02587.virterm +++|
02648 M00S02588.virterm +++|ITEM BIT I; # BIT POSITION #
02649 M00S02589.virterm +++|ITEM I I; # DUMMY PARAMETER #
02650 M00S02590.virterm +++|ITEM OH$SEVEN I; # SET FOR 0007 IN BYTE 1 #
02651 M00S02591.virterm +++|ITEM NUMCHAR I; # NUMBER OF CHARACTERS #
02652 M00S02592.virterm +++|ITEM WORD I; # BUFFER WORD #
02653 M00S02593.virterm +++|
02654 M00S02594.virterm +++|VTHOLD = LOC(STRING);
02655 M00S02595.virterm +++|VDSYNCH; # POSITION TO A WORD BOUNDARY #
02656 M00S02596.virterm +++|P<PARM> = VTHOLD;
02657 M00S02597.virterm +++|WORD = 0;
02658 M00S02598.virterm +++|BIT = 0;
02659 M00S02599.virterm +++|NUMCHAR = 0;
02660 M00S02600.virterm +++|OH$SEVEN = 0;
02661 M00S02601.virterm +++|
02662 M00S02602.virterm +++|IF B<0,12>STRING$WORD[0] EQ O"0007" THEN
02663 M00S02603.virterm +++| BEGIN # IF TRANSPARENT OUTPUT BYTE #
02664 M00S02604.virterm +++| B<0,12>STRING$WORD[0] = O"0000";
02665 M00S02605.virterm +++| OH$SEVEN = 1; # SET FLAG TO RESTORE 0007 BYTE #
02666 M00S02606.virterm +++| NUMCHAR = 1;
02667 M00S02607.virterm +++| BIT = 12;
02668 M00S02608.virterm +++| END
02669 M00S02609.virterm +++|
02670 M00S02610.virterm +++|VDTSTR1: # LOOP FOR A ZERO BYTE #
02671 M00S02611.virterm +++|
02672 M00S02612.virterm +++| IF B<BIT,12>STRING$WORD[WORD] EQ 0 THEN
02673 M00S02613.virterm +++| BEGIN # IF LAST WORD #
02674 M00S02614.virterm +++| NIT$CTLC = NUMCHAR; # STORE STRING INTO QTRM BUFFER #
02675 M00S02615.virterm +++| SFNQUE("PUT",PARM,I);
02676 M00S02616.virterm +++| IF OH$SEVEN NQ 0 THEN
02677 M00S02617.virterm +++| BEGIN # IF NEED TO RESTORE 0007 BYTE #
02678 M00S02618.virterm +++| B<0,12>STRING$WORD[0] = O"0007";
02679 M00S02619.virterm +++| END
02680 M00S02620.virterm +++| RETURN; # RETURN #
02681 M00S02621.virterm +++| END
02682 M00S02622.virterm +++|
02683 M00S02623.virterm +++| NUMCHAR = NUMCHAR + 1; # POSITION TO NEXT CHARACTER #
02684 M00S02624.virterm +++| BIT = BIT + 12;
02685 M00S02625.virterm +++| IF BIT GQ 60 THEN
02686 M00S02626.virterm +++| BEGIN # IF WORD FULL #
02687 M00S02627.virterm +++| BIT = 0; # POSITION TO NEXT WORD #
02688 M00S02628.virterm +++| WORD = WORD + 1;
02689 M00S02629.virterm +++| END
02690 M00S02630.virterm +++|
02691 M00S02631.virterm +++|GOTO VDTSTR1; # CONTINUE #
02692 M00S02632.virterm +++|
02693 M00S02633.virterm +++|END # VDTSTR #
02694 M00S02634.virterm +++|*ENDIF
02695 M00S02635.virterm +++|CONTROL EJECT;
02696 M00S02636.virterm +++|
02697 M00S02637.virterm +++|PROC VDTSTS(TABX);
02698 M00S02638.virterm +++|
02699 M00S02639.virterm +++|# TITLE VDTSTS - SET TAB STOP. #
02700 M00S02640.virterm +++|
02701 M00S02641.virterm +++|IOBEGIN(VDTSTS)
02702 M00S02642.virterm +++|
02703 M00S02643.virterm +++|#
02704 M00S02644.virterm +++|** VDTSTS - SET TAB STOP.
02705 M00S02645.virterm +++|*
02706 M00S02646.virterm +++|* THIS PROCEDURE SETS A TAB STOP AT POSITION TABX ON THE
02707 M00S02647.virterm +++|* CURRENT LINE.
02708 M00S02648.virterm +++|*
02709 M00S02649.virterm +++|* PROC VDTSTS(TABX)
02710 M00S02650.virterm +++|*
02711 M00S02651.virterm +++|* ENTRY TABX = X COORDINATE FOR TAB STOP.
02712 M00S02652.virterm +++|*
02713 M00S02653.virterm +++|* EXIT TAB SET AT POSITION (TABX,VTYCUR).
02714 M00S02654.virterm +++|*
02715 M00S02655.virterm +++|* CALLS VDCTRL, VDMOVE.
02716 M00S02656.virterm +++|#
02717 M00S02657.virterm +++|
02718 M00S02658.virterm +++|ITEM TABX I; # X COORDINATE FOR TAB STOP #
02719 M00S02659.virterm +++|
02720 M00S02660.virterm +++|# START OF NON-REENTRANT CODE SEQUENCE #
02721 M00S02661.virterm +++|
02722 M00S02662.virterm +++|IF TABX GR VTXMAX OR TABX LS 0 THEN IORET
02723 M00S02663.virterm +++|
02724 M00S02664.virterm +++|# END OF NON-REENTRANT CODE SEQUENCE #
02725 M00S02665.virterm +++|
02726 M00S02666.virterm +++|VDMOVE(TABX,VTYCUR); # POSITION CURSOR #
02727 M00S02667.virterm +++|
02728 M00S02668.virterm +++|# END OF NON-REENTRANT PARAMETER USAGE #
02729 M00S02669.virterm +++|
02730 M00S02670.virterm +++|VDCTRL(OUT"SETTABSTOP"); # SET TAB STOP #
02731 M00S02671.virterm +++|
02732 M00S02672.virterm +++|IOEND # VDTSTS #
02733 M00S02673.virterm +++|*IF DEF,QTRM
02734 M00S02674.virterm +++|CONTROL EJECT; # QTRM VDTWTO ROUTINE #
02735 M00S02675.virterm +++|
02736 M00S02676.virterm +++|PROC VDTWTO (A);
02737 M00S02677.virterm +++|
02738 M00S02678.virterm +++|# TITLE - WRITE ONE WORD OF OUTPUT. #
02739 M00S02679.virterm +++|
02740 M00S02680.virterm +++|BEGIN # VDTWTO #
02741 M00S02681.virterm +++|
02742 M00S02682.virterm +++|#
02743 M00S02683.virterm +++|** VDTWTO - WRITE ONE WORD OF OUTPUT.
02744 M00S02684.virterm +++|*
02745 M00S02685.virterm +++|* THIS PROCEDURE WRITES ONE WORD OF OUTPUT FROM BUFFER *A*.
02746 M00S02686.virterm +++|*
02747 M00S02687.virterm +++|* PROC VDTWTO(A)
02748 M00S02688.virterm +++|*
02749 M00S02689.virterm +++|* ENTRY A = THE BUFFER.
02750 M00S02690.virterm +++|*
02751 M00S02691.virterm +++|* CALLS SFNQUE.
02752 M00S02692.virterm +++|#
02753 M00S02693.virterm +++|ARRAY A [0:0] P(1);; # WORD OF OUTPUT #
02754 M00S02694.virterm +++|ITEM I I; # DUMMY PARAMETER #
02755 M00S02695.virterm +++|
02756 M00S02696.virterm +++|NIT$CTLC = 5; # PUT WORD INTO QUEUE #
02757 M00S02697.virterm +++|SFNQUE("PUT",A,I);
02758 M00S02698.virterm +++|
02759 M00S02699.virterm +++|END # VDTWTO #
02760 M00S02700.virterm +++|*ENDIF
02761 M00S02701.virterm +++|*IF UNDEF,QTRM
02762 M00S02702.virterm +++|CONTROL EJECT; # EDITOR CALLABLE ONLY #
02763 M00S02703.virterm +++|
02764 M00S02704.virterm +++|PROC VDSYNCH;
02765 M00S02705.virterm +++|
02766 M00S02706.virterm +++|# TITLE VDSYNCH - INSURE FLUSH OF ONE WORD ACCUMULATOR. #
02767 M00S02707.virterm +++|
02768 M00S02708.virterm +++|IOBEGIN(VDSYNCH)
02769 M00S02709.virterm +++|
02770 M00S02710.virterm +++|#
02771 M00S02711.virterm +++|** VDSYNCH - INSURE FLUSH OF ONE WORD ACCUMULATOR.
02772 M00S02712.virterm +++|*
02773 M00S02713.virterm +++|* THIS PROCEDURE FLUSHES PARTIAL WORDS OF OUTPUT AND INITIALIZES
02774 M00S02714.virterm +++|* THE ACCUMULATOR WORD AND POINTER.
02775 M00S02715.virterm +++|*
02776 M00S02716.virterm +++|* PROC VDSYNCH
02777 M00S02717.virterm +++|*
02778 M00S02718.virterm +++|* ENTRY VTOUTNEXT = ACCUMULATOR BIT POSITION.
02779 M00S02719.virterm +++|* VTOUTDATA = ACCUMULATOR WORD.
02780 M00S02720.virterm +++|*
02781 M00S02721.virterm +++|* EXIT VTOUTDATA = TRANSPARENT OUTPUT WORD.
02782 M00S02722.virterm +++|* VTOUTNEXT = 12.
02783 M00S02723.virterm +++|*
02784 M00S02724.virterm +++|* CALLS VDTWTO.
02785 M00S02725.virterm +++|*
02786 M00S02726.virterm +++|* USES VTOUTDATA, VTOUTNEXT.
02787 M00S02727.virterm +++|#
02788 M00S02728.virterm +++|
02789 M00S02729.virterm +++|IF VTOUTNEXT NQ 0 AND VTOUTDATA NQ XPARENTOUT THEN
02790 M00S02730.virterm +++| BEGIN # IF NOT EMPTY ACCUMULATOR #
02791 M00S02731.virterm +++| VDTWTO(VTOUTDATA); # FLUSH ACCUMULATOR WORD #
02792 M00S02732.virterm +++| END
02793 M00S02733.virterm +++|VTOUTDATA = XPARENTOUT; # ASSURE XPARENT OUTPUT #
02794 M00S02734.virterm +++|VTOUTNEXT = 12; # SET BIT POSITION #
02795 M00S02735.virterm +++|
02796 M00S02736.virterm +++|IOEND # VDSYNCH #
02797 M00S02737.virterm +++|*ELSE
02798 M00S02738.virterm +++|CONTROL EJECT; # QTRM VERSION OF VDSYNCH #
02799 M00S02739.virterm +++|
02800 M00S02740.virterm +++|PROC VDSYNCH;
02801 M00S02741.virterm +++|
02802 M00S02742.virterm +++|# TITLE VDSYNCH - INSURE FLUSH OF ONE WORD ACCUMULATOR. #
02803 M00S02743.virterm +++|
02804 M00S02744.virterm +++|BEGIN # VDSYNCH #
02805 M00S02745.virterm +++|
02806 M00S02746.virterm +++|#
02807 M00S02747.virterm +++|** VDSYNCH - INSURE FLUSH OF ONE WORD ACCUMULATOR.
02808 M00S02748.virterm +++|*
02809 M00S02749.virterm +++|* THIS PROCEDURE FLUSHES PARTIAL WORDS OF OUPUT FOR QTRM.
02810 M00S02750.virterm +++|*
02811 M00S02751.virterm +++|* PROC VDSYNCH
02812 M00S02752.virterm +++|*
02813 M00S02753.virterm +++|* ENTRY VTOUTNEXT = ACCUMULATOR BIT POSITION.
02814 M00S02754.virterm +++|* VTOUTDATA = ACCUMULATOR WORD.
02815 M00S02755.virterm +++|*
02816 M00S02756.virterm +++|* EXIT VTOUTNEXT = 0.
02817 M00S02757.virterm +++|* VTOUTDATA = 0.
02818 M00S02758.virterm +++|*
02819 M00S02759.virterm +++|* CALLS SFNQUE.
02820 M00S02760.virterm +++|#
02821 M00S02761.virterm +++|ITEM I I; # DUMMY PARAMETER #
02822 M00S02762.virterm +++|
02823 M00S02763.virterm +++|IF VTOUTNEXT NQ 0 THEN
02824 M00S02764.virterm +++| BEGIN # IF DATA TO ENQUEUE #
02825 M00S02765.virterm +++| NIT$CTLC = VTOUTNEXT / 12; # ENQUEUE DATA #
02826 M00S02766.virterm +++| SFNQUE("PUT",VTOUTDATA,I);
02827 M00S02767.virterm +++| VTOUTDATA = 0; # CLEAR ACCUMULATOR #
02828 M00S02768.virterm +++| VTOUTNEXT = 0; # SET BIT POSITION #
02829 M00S02769.virterm +++| END
02830 M00S02770.virterm +++|
02831 M00S02771.virterm +++|END # VDSYNCH #
02832 M00S02772.virterm +++|*ENDIF
02833 M00S02773.virterm +++|CONTROL EJECT; # INTERNAL (VIRTERM) PROCEDURES #
02834 M00S02774.virterm +++|
02835 M00S02775.virterm +++|PROC VDCTRL(ORDINAL);
02836 M00S02776.virterm +++|
02837 M00S02777.virterm +++|# TITLE VDCTRL - ISSUE AN OUTPUT CONTROL SEQUENCE BY ORDINAL. #
02838 M00S02778.virterm +++|
02839 M00S02779.virterm +++|IOBEGIN(VDCTRL)
02840 M00S02780.virterm +++|
02841 M00S02781.virterm +++|#
02842 M00S02782.virterm +++|** VDCTRL - ISSUE AN OUTPUT CONTROL SEQUENCE BY ORDINAL.
02843 M00S02783.virterm +++|*
02844 M00S02784.virterm +++|* THIS PROCEDURE OUTPUTS 0 TO N CHARACTERS (BY ORDINAL) USING
02845 M00S02785.virterm +++|* THE ORDINAL AS A POINTER IN THE *TDU* PRODUCED TABLE TO FIND
02846 M00S02786.virterm +++|* THE CORRECT OUTPUT SEQUENCE FOR THE OUTPUT FUNCTION REQUESTED.
02847 M00S02787.virterm +++|*
02848 M00S02788.virterm +++|* PROC VDCTRL(ORDINAL)
02849 M00S02789.virterm +++|*
02850 M00S02790.virterm +++|* ENTRY ORDINAL = *TDU* ORDINAL FOR OUTPUT SEQUENCE.
02851 M00S02791.virterm +++|*
02852 M00S02792.virterm +++|* EXIT NUMBERBYTE = NUMBER OF BYTES OUTPUT FOR SEQUENCE.
02853 M00S02793.virterm +++|*
Line S02794 Modification History |
M01 (Removed by) | virte11 |
Seq # *Modification Id* Act
----------------------------+
02854 M01S02794.virte11 ---|* CALLS VDGNCP, VDTOUT, VDSYNCH, VDTWRR$.
Line S00001 Modification History |
M01 (Added by) | virte11 |
Seq # *Modification Id* Act
----------------------------+
02855 M01S00001.virte11 +++|* CALLS VDGNCP, VDGNOB, VDTOUT, VDSYNCH, VDTWRR$.
02856 M00S02795.virterm +++|*
02857 M00S02796.virterm +++|* USES NUMBERBYTE, VDCHAR, VTCOUNT, VTHOLD, VTI, VTJ.
02858 M00S02797.virterm +++|*
02859 M00S02798.virterm +++|* NOTES NUMBERBYTE IS USED BY VARIOUS ROUTINES AFTER VDCTRL
02860 M00S02799.virterm +++|* IS CALLED TO DETERMINE IF THE FUNCTION IS AVAILABLE.
02861 M00S02800.virterm +++|#
02862 M00S02801.virterm +++|
02863 M00S02802.virterm +++|ITEM ORDINAL I; # ORDINAL #
02864 M00S02803.virterm +++|
02865 M00S02804.virterm +++|ITEM I I; # COUNTER #
02866 M00S02805.virterm +++|CONTROL IFEQ SINGLE,1; # IF NOT MULTI USER FSE #
02867 M00S02806.virterm +++|ITEM RECALL I = 1; # RECALL FOR WRITER REQUEST #
02868 M00S02807.virterm +++|ITEM VTPOS I; # BUFFER POSITION #
Line S00002 Modification History |
M01 (Added by) | virte11 |
Seq # *Modification Id* Act
----------------------------+
02869 M01S00002.virte11 +++|CONTROL FI; # END OF IF NOT MULTI USER FSE #
02870 M01S00003.virte11 +++| CONTROL EJECT; # EMBEDDED VDCTRL PROCEDURE #
02871 M01S00004.virte11 +++|
02872 M01S00005.virte11 +++| PROC VDGNOB;
02873 M01S00006.virte11 +++|
02874 M01S00007.virte11 +++| # TITLE VDGNOB - GET NEXT OUTPUT BYTE. #
02875 M01S00008.virte11 +++|
02876 M01S00009.virte11 +++| BEGIN # VDGNOB #
02877 M01S00010.virte11 +++|
02878 M01S00011.virte11 +++| #
02879 M01S00012.virte11 +++| * VDGNOB - GET NEXT OUTPUT BYTE.
02880 M01S00013.virte11 +++| *
02881 M01S00014.virte11 +++| * THIS PROCEDURE GETS THE NEXT OUTPUT BYTE.
02882 M01S00015.virte11 +++| *
02883 M01S00016.virte11 +++| * EXIT VTCHAR = NEXT OUTPUT BYTE.
02884 M01S00017.virte11 +++| *
02885 M01S00018.virte11 +++| * USES VTCHAR, VTHOLD, VTI, VTJ.
02886 M01S00019.virte11 +++| #
02887 M01S00020.virte11 +++|
02888 M01S00021.virte11 +++| VTCOUNT = VTCOUNT - 1;
02889 M01S00022.virte11 +++| VTI = VTHOLD / 8;
02890 M01S00023.virte11 +++| VTJ = 7 * (VTHOLD - (VTI * 8));
02891 M01S00024.virte11 +++| VTCHAR = B<VTJ+4,7>TABFULLWRD[VTI];
02892 M01S00025.virte11 +++| VTHOLD = VTHOLD + 1;
02893 M01S00026.virte11 +++|
02894 M01S00027.virte11 +++| END # VDGNOB #
02895 M01S00028.virte11 +++|CONTROL IFEQ SINGLE,1; # IF NOT MULTI USER FSE #
02896 M00S02808.virterm +++| CONTROL EJECT; # EMBEDDED VDCTRL PROCEDURE #
02897 M00S02809.virterm +++|
02898 M00S02810.virterm +++| PROC VDGNCP(VTCUR,VTMAX);
02899 M00S02811.virterm +++|
02900 M00S02812.virterm +++| # TITLE VDGNCP - GET NEXT CURSOR POSITION. #
02901 M00S02813.virterm +++|
02902 M00S02814.virterm +++| BEGIN # VDGNCP #
02903 M00S02815.virterm +++|
02904 M00S02816.virterm +++| #
02905 M00S02817.virterm +++| * VDGNCP - GET NEXT CURSOR POSITION.
02906 M00S02818.virterm +++| *
02907 M00S02819.virterm +++| * THIS PROCEDURE GETS THE NEXT CURSOR POSITION.
02908 M00S02820.virterm +++| *
02909 M00S02821.virterm +++| * ENTRY VTCUR = CURRENT CURSOR POSITION.
02910 M00S02822.virterm +++| * VTMAX = MAXIMUM CURSOR POSITION.
02911 M00S02823.virterm +++| *
02912 M00S02824.virterm +++| * EXIT VTCHAR = CURSOR COORDINATE.
02913 M00S02825.virterm +++| *
Line S00029 Modification History |
M01 (Added by) | virte11 |
Seq # *Modification Id* Act
----------------------------+
02914 M01S00029.virte11 +++| * CALLS VDGNOB.
02915 M01S00030.virte11 +++| *
02916 M00S02826.virterm +++| * USES VTCHAR, VTHOLD, VTI, VTJ.
02917 M00S02827.virterm +++| #
02918 M00S02828.virterm +++|
02919 M00S02829.virterm +++| ITEM VTCUR I; # CURRENT CURSOR POSITION #
02920 M00S02830.virterm +++| ITEM VTMAX I; # MAXIMUM CURSOR POSITION #
02921 M00S02831.virterm +++|
02922 M00S02832.virterm +++| IF VTCOUNT NQ 0 THEN
02923 M00S02833.virterm +++| BEGIN # IF SOMETHING TO PROCESS #
Line S02834 Modification History |
M01 (Removed by) | virte11 |
Seq # *Modification Id* Act
----------------------------+
02924 M01S02834.virte11 ---| VTCOUNT = VTCOUNT - 1;
02925 M01S02835.virte11 ---| VTI = VTHOLD / 8;
02926 M01S02836.virte11 ---| VTJ = 7 * (VTHOLD - (VTI * 8));
02927 M01S02837.virte11 ---| VTCHAR = B<VTJ+4,7>TABFULLWRD[VTI];
02928 M01S02838.virte11 ---| VTHOLD = VTHOLD + 1;
Line S00031 Modification History |
M01 (Added by) | virte11 |
Seq # *Modification Id* Act
----------------------------+
02929 M01S00031.virte11 +++| VDGNOB; # GET NEXT OUTPUT BYTE #
02930 M00S02839.virterm +++| IF VTCHAR EQ X"7E" THEN
02931 M00S02840.virterm +++| BEGIN # IF USING CURRENT POSITION #
02932 M00S02841.virterm +++| VTCHAR = VTCUR;
02933 M00S02842.virterm +++| END
02934 M00S02843.virterm +++| ELSE
02935 M00S02844.virterm +++| BEGIN # NOT CURRENT POSITION #
02936 M00S02845.virterm +++| IF VTCHAR EQ X"7F" THEN
02937 M00S02846.virterm +++| BEGIN # IF USING MAXIMUM POSITION #
02938 M00S02847.virterm +++| VTCHAR = VTMAX;
02939 M00S02848.virterm +++| END
02940 M00S02849.virterm +++| END
02941 M00S02850.virterm +++| END
02942 M00S02851.virterm +++|
02943 M00S02852.virterm +++| END # VDGNCP #
02944 M00S02853.virterm +++|CONTROL FI; # END OF IF NOT MULTI FSE #
02945 M00S02854.virterm +++|CONTROL EJECT; # START OF MAIN CODE FOR VDCTRL #
02946 M00S02855.virterm +++|
02947 M00S02856.virterm +++|VTHOLD = ORDINAL;
02948 M00S02857.virterm +++|
02949 M00S02858.virterm +++|# END OF NON-REENTRANT PARAMETER USAGE #
02950 M00S02859.virterm +++|
02951 M00S02860.virterm +++|NUMBERBYTE = 0; # CLEAR NUMBER OF BYTES COUNT #
02952 M00S02861.virterm +++|IF VTHOLD GR OUT"RESERVED" AND VTHOLD LS OUT"LASTOUT" THEN
02953 M00S02862.virterm +++| BEGIN # IF LEGAL OUTPUT ORDINAL #
02954 M00S02863.virterm +++| VTI = VTHOLD / 5; # GET OFFSET FOR ORDINAL #
02955 M00S02864.virterm +++| VTJ = 12 * (VTHOLD - (VTI * 5));
02956 M00S02865.virterm +++| VTHOLD = B<VTJ,12>TABFULLWRD[VTI];
02957 M00S02866.virterm +++| IF VTJ NQ 48 THEN
02958 M00S02867.virterm +++| BEGIN # IF NEXT BYTE IS IN SAME WORD #
02959 M00S02868.virterm +++| VTCOUNT = B<VTJ+12,12>TABFULLWRD[VTI];
02960 M00S02869.virterm +++| END
02961 M00S02870.virterm +++| ELSE
02962 M00S02871.virterm +++| BEGIN # GET BYTE FROM NEXT WORD #
02963 M00S02872.virterm +++| VTCOUNT = B<0,12>TABFULLWRD[VTI+1];
02964 M00S02873.virterm +++| END
02965 M00S02874.virterm +++| VTCOUNT = VTCOUNT - VTHOLD; # CALCULATE NUMBER OF BYTES #
02966 M00S02875.virterm +++| NUMBERBYTE = VTCOUNT; # SAVE NUMBER OF BYTES #
02967 M00S02876.virterm +++| IF (VTHOLD + VTCOUNT) / 8 LS O"272" THEN
02968 M00S02877.virterm +++| BEGIN # IF WITHIN *TDU* TABLE #
02969 M00S02878.virterm +++| FOR I = I WHILE VTCOUNT NQ 0 DO
02970 M00S02879.virterm +++| BEGIN # WHILE NOT DONE #
Line S02880 Modification History |
M01 (Removed by) | virte11 |
Seq # *Modification Id* Act
----------------------------+
02971 M01S02880.virte11 ---| VTCOUNT = VTCOUNT - 1;
02972 M01S02881.virte11 ---| VTI = VTHOLD / 8; # GET OUTPUT BYTE #
02973 M01S02882.virte11 ---| VTJ = 7 * (VTHOLD - (VTI * 8));
02974 M01S02883.virte11 ---| VTCHAR = B<VTJ+4,7>TABFULLWRD[VTI];
02975 M01S02884.virte11 ---| VTHOLD = VTHOLD + 1;
Line S00032 Modification History |
M01 (Added by) | virte11 |
Seq # *Modification Id* Act
----------------------------+
02976 M01S00032.virte11 +++| VDGNOB; # GET NEXT OUTPUT BYTE #
02977 M00S02885.virterm +++|CONTROL IFEQ SINGLE,1; # IF NOT MULTI USER FSE #
02978 M00S02886.virterm +++| CONTROL IFEQ QTRMV,0; # IF NOT QTRM VARIANT #
02979 M00S02887.virterm +++| IF TABLOCKMDE[0] AND (VTCHAR EQ X"11") THEN
02980 M00S02888.virterm +++| BEGIN # IF BLOCK MODE SBA #
02981 M00S02889.virterm +++|
02982 M00S02890.virterm +++| CONTROL IFEQ EDITORVDT,0; # IF NOT EDITOR VIRTERM #
02983 M00S02891.virterm +++| P<TTYO> = LISTFETPTR; # SET BASED ARRAY ADDRESS #
02984 M00S02892.virterm +++| CONTROL FI; # END OF NOT EDITOR VIRTERM #
02985 M00S02893.virterm +++|
02986 M00S02894.virterm +++| VTI = TTYOIN - TTYOOT;
02987 M00S02895.virterm +++| IF VTI LS 0 THEN
02988 M00S02896.virterm +++| BEGIN # IF *CIRCULAR* INPUT/OUTPUT #
02989 M00S02897.virterm +++| VTI = VTI + (TTYOLM - TTYOFT);
02990 M00S02898.virterm +++| END
02991 M00S02899.virterm +++|
02992 M00S02900.virterm +++| IF VTI GR O"144" THEN
02993 M00S02901.virterm +++| BEGIN # IF NEAR *1MI* BREAK THRESHOLD #
02994 M00S02902.virterm +++| VDSYNCH; # FLUSH BUFFER #
02995 M00S02903.virterm +++|*IF DEF,DEBUG
02996 M00S02904.virterm +++| VDTDMP$; # DUMP BUFFER FOR DEBUG #
02997 M00S02905.virterm +++|*ENDIF
02998 M00S02906.virterm +++| VDTWRR$(TTYO,RECALL); # FLUSH BUFFER #
02999 M00S02907.virterm +++| VTOUTDATA = O"0007 4061 4103 0000 0000";
03000 M00S02908.virterm +++| VTOUTNEXT = 36;
03001 M00S02909.virterm +++| END
03002 M00S02910.virterm +++| END
03003 M00S02911.virterm +++| CONTROL FI; # END OF NOT QTRM VIRTERM #
03004 M00S02912.virterm +++|CONTROL FI; # END OF IF NOT MULTI FSE #
03005 M00S02913.virterm +++| VDTOUT(VTCHAR); # OUTPUT BYTE #
03006 M00S02914.virterm +++|CONTROL IFEQ SINGLE,1; # IF NOT MULTI USER FSE #
03007 M00S02915.virterm +++| IF TABLOCKMDE[0] THEN
03008 M00S02916.virterm +++| BEGIN # IF BLOCK MODE TERMINAL #
03009 M00S02917.virterm +++| IF VTCHAR EQ X"11" OR VTCHAR EQ X"12" OR VTCHAR EQ X"14" THEN
03010 M00S02918.virterm +++| BEGIN # IF SBA, RA OR EUA ORDER #
03011 M00S02919.virterm +++| VDGNCP(VTYCUR,VTYMAX+1); # GET ROW COORDINATE #
03012 M00S02920.virterm +++| VTPOS = VTCHAR * (VTXMAX + 1);
03013 M00S02921.virterm +++| VDGNCP(VTXCUR,VTXMAX); # GET COLUMN COORDINATE #
03014 M00S02922.virterm +++| VTPOS = VTPOS + VTCHAR;
03015 M00S02923.virterm +++| VDTOUT(RTA3270[B<48,6>VTPOS]); # OUTPUT BYTE 1 OF ADDRESS #
03016 M00S02924.virterm +++| VDTOUT(RTA3270[B<54,6>VTPOS]); # OUTPUT BYTE 2 OF ADDRESS #
03017 M00S02925.virterm +++| END
Line S00033 Modification History |
M01 (Added by) | virte11 |
Seq # *Modification Id* Act
----------------------------+
03018 M01S00033.virte11 +++| ELSE IF VTCHAR EQ X"1D" THEN
03019 M01S00034.virte11 +++| BEGIN # IF START FIELD #
03020 M01S00035.virte11 +++| VTCHAR = 0;
03021 M01S00036.virte11 +++| IF VTCOUNT NQ 0 THEN
03022 M01S00037.virte11 +++| VDGNOB; # GET NEXT OUTPUT BYTE #
03023 M01S00038.virte11 +++| IF ATTGUARDMD[0] THEN
03024 M01S00039.virte11 +++| BEGIN # IF GUARD MODE #
03025 M01S00040.virte11 +++| VTCHAR = X"3C"; # ASSUME UNPROTECTED #
03026 M01S00041.virte11 +++| END
03027 M01S00042.virte11 +++| ELSE
03028 M01S00043.virte11 +++| BEGIN # IF UNGUARDED FIELD #
03029 M01S00044.virte11 +++| IF VTCHAR EQ X"38" THEN
03030 M01S00045.virte11 +++| BEGIN # IF HIGHLIGHTED FIELD #
03031 M01S00046.virte11 +++| IF NOT ATTPROTECT[0] THEN VTCHAR = VTCHAR + X"10";
03032 M01S00047.virte11 +++| END
03033 M01S00048.virte11 +++| ELSE
03034 M01S00049.virte11 +++| BEGIN
03035 M01S00050.virte11 +++| VTCHAR = X"44"; # ASSUME UNPROTECTED AND NORMAL #
03036 M01S00051.virte11 +++| IF ATTPROTECT[0] THEN VTCHAR = VTCHAR - X"10";
03037 M01S00052.virte11 +++| END
03038 M01S00053.virte11 +++| END
03039 M01S00054.virte11 +++| VDTOUT(VTCHAR); # OUTPUT FIELD ATTRIBUTE #
03040 M01S00055.virte11 +++| END
03041 M00S02926.virterm +++| END
03042 M00S02927.virterm +++|CONTROL FI; # END OF IF NOT MULTI FSE #
03043 M00S02928.virterm +++| END
03044 M00S02929.virterm +++| END
03045 M00S02930.virterm +++| END
03046 M00S02931.virterm +++|
03047 M00S02932.virterm +++|IOEND # VDCTRL #
03048 M00S02933.virterm +++|CONTROL EJECT;
03049 M00S02934.virterm +++|
03050 M00S02935.virterm +++|CONTROL IFEQ SINGLE,1;
03051 M00S02936.virterm +++|PROC VDGETW(WORD,STAT);
03052 M00S02937.virterm +++|
03053 M00S02938.virterm +++|# TITLE VDGETW - GET WORD FROM *TDU* TABLE. #
03054 M00S02939.virterm +++|
03055 M00S02940.virterm +++|BEGIN # VDGETW #
03056 M00S02941.virterm +++|
03057 M00S02942.virterm +++|#
03058 M00S02943.virterm +++|** VDGETW - GET WORD FROM *TDU* TABLE.
03059 M00S02944.virterm +++|*
03060 M00S02945.virterm +++|* THIS PROCEDURE GETS THE NEXT WORD FROM THE *TDU* TABLE FOR
03061 M00S02946.virterm +++|* EITHER A RESIDENT OR A NON-RESIDENT TABLE.
03062 M00S02947.virterm +++|*
03063 M00S02948.virterm +++|* PROC VDGETW(WORD,STAT)
03064 M00S02949.virterm +++|*
03065 M00S02950.virterm +++|* ENTRY TDUINDEX = WORD COUNT READ SO FAR OF *TDU* TABLE.
03066 M00S02951.virterm +++|* TDURESID = RESIDENT *TDU* TABLE FLAG.
03067 M00S02952.virterm +++|*
03068 M00S02953.virterm +++|* EXIT WORD = THE NEXT WORD FROM THE *TDU* TABLE.
03069 M00S02954.virterm +++|* STAT = 0, IF NO ERROR.
03070 M00S02955.virterm +++|*
03071 M00S02956.virterm +++|* CALLS VDTREO$.
03072 M00S02957.virterm +++|*
03073 M00S02958.virterm +++|* USES TDUINDEX.
03074 M00S02959.virterm +++|#
03075 M00S02960.virterm +++|
03076 M00S02961.virterm +++|ITEM STAT I; # STATUS RETURNED #
03077 M00S02962.virterm +++|ITEM WORD U; # WORD FROM *TDU* TABLE #
03078 M00S02963.virterm +++|
03079 M00S02964.virterm +++|STAT = 0;
03080 M00S02965.virterm +++|IF TDURESID[0] THEN
03081 M00S02966.virterm +++| BEGIN # IF RESIDENT *TDU* TABLE #
03082 M00S02967.virterm +++| WORD = TEMPWORD[TDUINDEX[0]]; # GET WORD FROM MEMORY #
03083 M00S02968.virterm +++| END
03084 M00S02969.virterm +++|ELSE
03085 M00S02970.virterm +++| BEGIN # IF NON-RESIDENT *TDU* TABLE #
03086 M00S02971.virterm +++| VDTREO$(TDUFET,WORD,STAT); # READ WORD FROM CIO BUFFER #
03087 M00S02972.virterm +++| END
03088 M00S02973.virterm +++|TDUINDEX[0] = TDUINDEX[0] + 1; # UPDATE COUNT #
03089 M00S02974.virterm +++|
03090 M00S02975.virterm +++|END # VDGETW #
03091 M00S02976.virterm +++|CONTROL FI;
03092 M00S02977.virterm +++|CONTROL EJECT;
03093 M00S02978.virterm +++|
03094 M00S02979.virterm +++|PROC VDMOVE(XX,YY);
03095 M00S02980.virterm +++|
03096 M00S02981.virterm +++|# TITLE VDMOVE - CURSOR MOVEMENT. #
03097 M00S02982.virterm +++|
03098 M00S02983.virterm +++|IOBEGIN(VDMOVE)
03099 M00S02984.virterm +++|
03100 M00S02985.virterm +++|#
03101 M00S02986.virterm +++|** VDMOVE - CURSOR MOVEMENT.
03102 M00S02987.virterm +++|*
03103 M00S02988.virterm +++|* THIS PROCEDURE PROVIDES CURSOR POSITIONING.
03104 M00S02989.virterm +++|*
03105 M00S02990.virterm +++|* PROC VDMOVE(XX,YY)
03106 M00S02991.virterm +++|*
03107 M00S02992.virterm +++|* ENTRY XX = DESIRED X COORDINATE.
03108 M00S02993.virterm +++|* YY = DESIRED Y COORDINATE.
03109 M00S02994.virterm +++|*
03110 M00S02995.virterm +++|* EXIT VTXCUR = XX.
03111 M00S02996.virterm +++|* VTYCUR = YY.
03112 M00S02997.virterm +++|*
03113 M00S02998.virterm +++|* CALLS VDCTRL.
03114 M00S02999.virterm +++|*
03115 M00S03000.virterm +++|* USES VTXCUR, VTYCUR.
03116 M00S03001.virterm +++|#
03117 M00S03002.virterm +++|
03118 M00S03003.virterm +++|ITEM XX I; # COLUMN POSITION #
03119 M00S03004.virterm +++|ITEM YY I; # LINE POSITION #
03120 M00S03005.virterm +++|
03121 M00S03006.virterm +++|SWITCH CURADDRTYP # CURSOR ADDRESSING TYPE #
03122 M00S03007.virterm +++| NONE, # UNDEFINED #
03123 M00S03008.virterm +++| BINARY, # BINARY #
03124 M00S03009.virterm +++| CDC721, # CDC 721 #
03125 M00S03010.virterm +++| ANSI, # ANSI #
Line S03011 Modification History |
M01 (Removed by) | ns2665 |
Seq # *Modification Id* Act
----------------------------+
03126 M01S03011.ns2665 ---| IBM3270; # 3270 #
Line S00005 Modification History |
M01 (Added by) | ns2665 |
Seq # *Modification Id* Act
----------------------------+
03127 M01S00005.ns2665 +++| IBM3270, # 3270 #
03128 M01S00006.ns2665 +++| IBM3151; # 3151 #
03129 M00S03012.virterm +++|
03130 M00S03013.virterm +++|VTXCUR = XX;
03131 M00S03014.virterm +++|VTYCUR = YY;
03132 M00S03015.virterm +++|
03133 M00S03016.virterm +++|# END OF NON-REENTRANT PARAMETER USAGE #
03134 M00S03017.virterm +++|
03135 M00S03018.virterm +++|VDCTRL(OUT"CURSORSTR"); # ISSUE CURSOR START SEQUENCE #
03136 M00S03019.virterm +++|
03137 M00S03020.virterm +++|GOTO CURADDRTYP[TABCURADDT[0]]; # PROCESS ADDRESSING BY TYPE #
03138 M00S03021.virterm +++|
03139 M00S03022.virterm +++|BINARY: # BINARY TYPE ADDRESSING #
03140 M00S03023.virterm +++|
03141 M00S03024.virterm +++| IF TABXFIRSTY[0] THEN
03142 M00S03025.virterm +++| BEGIN # IF X COORDINATE FIRST #
03143 M00S03026.virterm +++| VDTOUT(VTXCUR+TABCURBIAS[0]); # X COORDINATE #
03144 M00S03027.virterm +++| VDCTRL(OUT"CURSORSEC"); # ISSUE SECOND CURSOR SEQUENCE #
03145 M00S03028.virterm +++| VDTOUT(VTYCUR+TABCURBIAS[0]); # Y COORDINATE #
Line S03029 Modification History |
M01 (Removed by) | ns2662 |
Seq # *Modification Id* Act
----------------------------+
03146 M01S03029.ns2662 ---| VDCTRL(OUT"CURSORTHR"); # ISSUE THIRD CURSOR SEQUENCE #
03147 M00S03030.virterm +++| END
03148 M00S03031.virterm +++| ELSE
03149 M00S03032.virterm +++| BEGIN # Y COORDINATE FIRST #
03150 M00S03033.virterm +++| VDTOUT(VTYCUR+TABCURBIAS[0]); # Y COORDINATE #
03151 M00S03034.virterm +++| VDCTRL(OUT"CURSORSEC"); # ISSUE SECOND CURSOR SEQUENCE #
03152 M00S03035.virterm +++| VDTOUT(VTXCUR+TABCURBIAS[0]); # X COORDINATE #
Line S03036 Modification History |
M01 (Removed by) | ns2662 |
Seq # *Modification Id* Act
----------------------------+
03153 M01S03036.ns2662 ---| VDCTRL(OUT"CURSORTHR"); # ISSUE THIRD CURSOR SEQUENCE #
03154 M00S03037.virterm +++| END
Line S00001 Modification History |
M01 (Added by) | ns2662 |
Seq # *Modification Id* Act
----------------------------+
03155 M01S00001.ns2662 +++| VDCTRL(OUT"CURSORTHR"); # ISSUE THIRD CURSOR SEQUENCE #
03156 M00S03038.virterm +++|
03157 M00S03039.virterm +++| GOTO ENDADDRTYP;
03158 M00S03040.virterm +++|
03159 M00S03041.virterm +++|CDC721: # CDC 721 TYPE ADDRESSING #
03160 M00S03042.virterm +++|
Line S00002 Modification History |
M01 (Added by) | ns2662 |
Seq # *Modification Id* Act
----------------------------+
03161 M01S00002.ns2662 +++| IF NOT TABXFIRSTY[0] THEN
03162 M01S00003.ns2662 +++| VDTOUT(VTYCUR+TABCURBIAS[0]); # IF ROW FIRST, Y COORDINATE #
03163 M00S03043.virterm +++| IF VTXCUR LS 80 THEN
03164 M00S03044.virterm +++| BEGIN # IF CHARACTER POSITION 0 - 79 #
03165 M00S03045.virterm +++| VDTOUT(VTXCUR+TABCURBIAS[0]); # X COORDINATE #
03166 M00S03046.virterm +++| END
03167 M00S03047.virterm +++| ELSE
03168 M00S03048.virterm +++| BEGIN # IF CHARACTER POSITION PAST 79 #
03169 M00S03049.virterm +++| VDCTRL(OUT"CURSORSEC"); # ISSUE SECOND CURSOR SEQUENCE #
03170 M00S03050.virterm +++| VDTOUT(VTXCUR+TABCURBIAS[0]-80); # X COORDINATE #
03171 M00S03051.virterm +++| END
Line S03052 Modification History |
M01 (Removed by) | ns2662 |
Seq # *Modification Id* Act
----------------------------+
03172 M01S03052.ns2662 ---| VDTOUT(VTYCUR+TABCURBIAS[0]); # Y COORDINATE #
Line S00004 Modification History |
M01 (Added by) | ns2662 |
Seq # *Modification Id* Act
----------------------------+
03173 M01S00004.ns2662 +++| IF TABXFIRSTY[0] THEN
03174 M01S00005.ns2662 +++| VDTOUT(VTYCUR+TABCURBIAS[0]); # IF COLUMN FIRST, Y COORDINATE #
03175 M01S00006.ns2662 +++| VDCTRL(OUT"CURSORTHR"); # ISSUE THIRD CURSOR SEQUENCE #
03176 M00S03053.virterm +++|
03177 M00S03054.virterm +++| GOTO ENDADDRTYP;
03178 M00S03055.virterm +++|
03179 M00S03056.virterm +++|ANSI: # ANSI TYPE ADDRESSING #
03180 M00S03057.virterm +++|
03181 M00S03058.virterm +++| IF TABXFIRSTY[0] THEN
03182 M00S03059.virterm +++| BEGIN # IF X COORDINATE FIRST #
03183 M00S03060.virterm +++| VDNUMC(VTXCUR+TABCURBIAS[0]+1,TABXDECIML[0]); # X COORDINATE #
03184 M00S03061.virterm +++| VDCTRL(OUT"CURSORSEC"); # ISSUE SECOND CURSOR SEQUENCE #
03185 M00S03062.virterm +++| VDNUMC(VTYCUR+TABCURBIAS[0]+1,TABYDECIML[0]); # Y COORDINATE #
Line S03063 Modification History |
M01 (Removed by) | ns2662 |
Seq # *Modification Id* Act
----------------------------+
03186 M01S03063.ns2662 ---| VDCTRL(OUT"CURSORTHR"); # ISSUE THIRD CURSOR SEQUENCE #
03187 M00S03064.virterm +++| END
03188 M00S03065.virterm +++| ELSE
03189 M00S03066.virterm +++| BEGIN # Y COORDINATE FIRST #
03190 M00S03067.virterm +++| VDNUMC(VTYCUR+TABCURBIAS[0]+1,TABYDECIML[0]); # Y COORDINATE #
03191 M00S03068.virterm +++| VDCTRL(OUT"CURSORSEC"); # ISSUE SECOND CURSOR SEQUENCE #
03192 M00S03069.virterm +++| VDNUMC(VTXCUR+TABCURBIAS[0]+1,TABXDECIML[0]); # X COORDINATE #
Line S03070 Modification History |
M01 (Removed by) | ns2662 |
Seq # *Modification Id* Act
----------------------------+
03193 M01S03070.ns2662 ---| VDCTRL(OUT"CURSORTHR"); # ISSUE THIRD CURSOR SEQUENCE #
03194 M00S03071.virterm +++| END
Line S00007 Modification History |
M01 (Added by) | ns2662 |
Seq # *Modification Id* Act
----------------------------+
03195 M01S00007.ns2662 +++| VDCTRL(OUT"CURSORTHR"); # ISSUE THIRD CURSOR SEQUENCE #
03196 M00S03072.virterm +++|
03197 M00S03073.virterm +++| GOTO ENDADDRTYP;
03198 M00S03074.virterm +++|
03199 M00S03075.virterm +++|IBM3270:
03200 M00S03076.virterm +++|
03201 M00S03077.virterm +++| GOTO ENDADDRTYP;
03202 M00S03078.virterm +++|
Line S00007 Modification History |
M01 (Added by) | ns2665 |
Seq # *Modification Id* Act
----------------------------+
03203 M01S00007.ns2665 +++|IBM3151:
03204 M01S00008.ns2665 +++|
03205 M01S00009.ns2665 +++| IF TABXFIRSTY[0] THEN
03206 M01S00010.ns2665 +++| BEGIN # IF X COORDINATE FIRST #
03207 M01S00011.ns2665 +++| VTHOLD = VTXCUR/32;
03208 M01S00012.ns2665 +++| VDTOUT(VTHOLD+TABCURBIAS[0]); # X COORDINATE #
03209 M01S00013.ns2665 +++| VDTOUT(VTXCUR-VTHOLD*32+TABCURBIAS[0]);
03210 M01S00014.ns2665 +++| VDCTRL(OUT"CURSORSEC"); # ISSUE SECOND CURSOR SEQUENCE #
03211 M01S00015.ns2665 +++| VTHOLD = VTYCUR/32;
03212 M01S00016.ns2665 +++| VDTOUT(VTHOLD+TABCURBIAS[0]); # Y COORDINATE #
03213 M01S00017.ns2665 +++| VDTOUT(VTYCUR-VTHOLD*32+TABCURBIAS[0]+32);
03214 M01S00018.ns2665 +++| END
03215 M01S00019.ns2665 +++| ELSE
03216 M01S00020.ns2665 +++| BEGIN # Y COORDINATE FIRST #
03217 M01S00021.ns2665 +++| VTHOLD = VTYCUR/32;
03218 M01S00022.ns2665 +++| VDTOUT(VTHOLD+TABCURBIAS[0]); # Y COORDINATE #
03219 M01S00023.ns2665 +++| VDTOUT(VTYCUR-VTHOLD*32+TABCURBIAS[0]);
03220 M01S00024.ns2665 +++| VDCTRL(OUT"CURSORSEC"); # ISSUE SECOND CURSOR SEQUENCE #
03221 M01S00025.ns2665 +++| VTHOLD = VTXCUR/32;
03222 M01S00026.ns2665 +++| VDTOUT(VTHOLD+TABCURBIAS[0]); # X COORDINATE #
03223 M01S00027.ns2665 +++| VDTOUT(VTXCUR-VTHOLD*32+TABCURBIAS[0]+32);
03224 M01S00028.ns2665 +++| END
03225 M01S00029.ns2665 +++| VDCTRL(OUT"CURSORTHR"); # ISSUE THIRD CURSOR SEQUENCE #
03226 M01S00030.ns2665 +++|
03227 M01S00031.ns2665 +++| GOTO ENDADDRTYP;
03228 M01S00032.ns2665 +++|
03229 M00S03079.virterm +++|NONE: # UNDEFINED #
03230 M00S03080.virterm +++|
03231 M00S03081.virterm +++|ENDADDRTYP: # END OF ADDRESS TYPE PROCESSING #
03232 M00S03082.virterm +++|
03233 M00S03083.virterm +++|IOEND # VDMOVE #
03234 M00S03084.virterm +++|CONTROL EJECT;
03235 M00S03085.virterm +++|
03236 M00S03086.virterm +++|PROC VDNUMC(NUM,COUNT);
03237 M00S03087.virterm +++|
03238 M00S03088.virterm +++|# TITLE VDNUMC - NUMBER CONVERSION. #
03239 M00S03089.virterm +++|
03240 M00S03090.virterm +++|IOBEGIN(VDNUMC)
03241 M00S03091.virterm +++|
03242 M00S03092.virterm +++|#
03243 M00S03093.virterm +++|** VDNUMC - NUMBER CONVERSION.
03244 M00S03094.virterm +++|*
03245 M00S03095.virterm +++|* THIS PROCEDURE PROVIDES FOR A BINARY NUMBER TO BE CONVERTED
03246 M00S03096.virterm +++|* TO DECIMAL AND THEN OUTPUT TO ALLOW ANSI X3.64 POSITIONING.
03247 M00S03097.virterm +++|*
03248 M00S03098.virterm +++|* PROC VDNUMC(NUM,COUNT)
03249 M00S03099.virterm +++|*
03250 M00S03100.virterm +++|* ENTRY NUM = BINARY NUMBER TO BE CONVERTED AND OUTPUT.
03251 M00S03101.virterm +++|* COUNT = MINIMUM NUMBER OF CHARACTERS TO OUTPUT.
03252 M00S03102.virterm +++|*
03253 M00S03103.virterm +++|* CALLS VDTOUT.
03254 M00S03104.virterm +++|*
03255 M00S03105.virterm +++|* USES VTCHARS, VTCOUNT, VTHOLD, VTI.
03256 M00S03106.virterm +++|#
03257 M00S03107.virterm +++|
03258 M00S03108.virterm +++|ITEM NUM I; # BINARY SCREEN COORDINATE #
03259 M00S03109.virterm +++|ITEM COUNT I; # MINIMUM NUMBER OF DIGITS #
03260 M00S03110.virterm +++|
03261 M00S03111.virterm +++|ITEM DB I; # INDUCTION VARIABLE #
03262 M00S03112.virterm +++|
03263 M00S03113.virterm +++|VTI = COUNT - 2; # MINIMUM CHARACTER COUNT #
03264 M00S03114.virterm +++|VTCOUNT = - 1; # ACTUAL DIGIT COUNTER #
03265 M00S03115.virterm +++|VTHOLD = NUM; # SCREEN COORDINATE #
03266 M00S03116.virterm +++|
03267 M00S03117.virterm +++|# END OF NON-REENTRANT PARAMETER USAGE #
03268 M00S03118.virterm +++|
03269 M00S03119.virterm +++|# START OF NON-REENTRANT CODE SEQUENCE #
03270 M00S03120.virterm +++|
03271 M00S03121.virterm +++|FOR DB = DB WHILE VTHOLD GQ 10 DO
03272 M00S03122.virterm +++| BEGIN
03273 M00S03123.virterm +++| VTCOUNT = VTCOUNT + 1; # INCREMENT DIGIT COUNTER #
03274 M00S03124.virterm +++| C<VTCOUNT>VTCHARS = (VTHOLD - ((VTHOLD/10) * 10));
03275 M00S03125.virterm +++| VTHOLD = VTHOLD / 10; # REDUCE BY FACTOR OF TEN #
03276 M00S03126.virterm +++| VTI = VTI - 1; # DECREMENT MINIMUM COUNT #
03277 M00S03127.virterm +++| END
03278 M00S03128.virterm +++|
03279 M00S03129.virterm +++|# END OF NON-REENTRANT CODE SEQUENCE #
03280 M00S03130.virterm +++|
03281 M00S03131.virterm +++|FOR VTI = VTI STEP - 1 UNTIL 0 DO
03282 M00S03132.virterm +++| BEGIN # ZERO PAD AS NECESSARY #
03283 M00S03133.virterm +++| VDTOUT(X"30"); # OUTPUT ZERO CHARACTER #
03284 M00S03134.virterm +++| END
03285 M00S03135.virterm +++|
03286 M00S03136.virterm +++|VDTOUT(VTHOLD+X"30"); # FIRST (NON-ZERO) DIGIT #
03287 M00S03137.virterm +++|FOR VTCOUNT = VTCOUNT STEP - 1 UNTIL 0 DO
03288 M00S03138.virterm +++| BEGIN # OUTPUT REST OF DIGITS #
03289 M00S03139.virterm +++| VTHOLD = C<VTCOUNT>VTCHARS;
03290 M00S03140.virterm +++| VDTOUT(VTHOLD+X"30");
03291 M00S03141.virterm +++| END
03292 M00S03142.virterm +++|
03293 M00S03143.virterm +++|IOEND # VDNUMC #
03294 M00S03144.virterm +++|CONTROL EJECT;
03295 M00S03145.virterm +++|
03296 M00S03146.virterm +++|PROC VDNXTI;
03297 M00S03147.virterm +++|
03298 M00S03148.virterm +++|# TITLE VDNXTI - FETCH NEXT INPUT BYTE FROM BUFFER/ACCUMULATOR. #
03299 M00S03149.virterm +++|
03300 M00S03150.virterm +++|IOBEGIN(VDNXTI)
03301 M00S03151.virterm +++|
03302 M00S03152.virterm +++|#
03303 M00S03153.virterm +++|** VDNXTI - FETCH NEXT INPUT BYTE FROM BUFFER/ACCUMULATOR.
03304 M00S03154.virterm +++|*
03305 M00S03155.virterm +++|* THIS PROCEDURE GETS THE NEXT INPUT CHARACTER.
03306 M00S03156.virterm +++|*
03307 M00S03157.virterm +++|* PROC VDNXTI
03308 M00S03158.virterm +++|*
03309 M00S03159.virterm +++|* ENTRY VTINPDATA = ONE WORD INPUT DE-ACCUMULATOR.
03310 M00S03160.virterm +++|* VTINPNEXT = CURRENT BIT POSITION IN VTINPDATA.
03311 M00S03161.virterm +++|*
03312 M00S03162.virterm +++|* EXIT VTINPNEXT = INCREMENTED OR RECIRCULATED.
03313 M00S03163.virterm +++|* VTINPDATA = POSSIBLE NEW WORD OF TEXT.
03314 M00S03164.virterm +++|* VTCHAR = DATA BYTE FETCHED.
03315 M00S03165.virterm +++|*
03316 M00S03166.virterm +++|* CALLS VDTRDO.
03317 M00S03167.virterm +++|*
03318 M00S03168.virterm +++|* USES VTINPDATA, VTINPNEXT.
03319 M00S03169.virterm +++|#
03320 M00S03170.virterm +++|
03321 M00S03171.virterm +++|IF VTINPNEXT EQ 60 THEN
03322 M00S03172.virterm +++| BEGIN # IF EMPTY WORD #
03323 M00S03173.virterm +++|*IF UNDEF,QTRM
03324 M00S03174.virterm +++| VDTRDO(VTINPDATA); # GET NEXT WORD #
03325 M00S03175.virterm +++|*ELSE
03326 M00S03176.virterm +++| VTINPDATA = QTRM$WD0[VTINPWORD]; # GET NEXT WORD FROM QUEUE #
03327 M00S03177.virterm +++| VTINPWORD = VTINPWORD + 1;
03328 M00S03178.virterm +++|*ENDIF
03329 M00S03179.virterm +++| VTINPNEXT = 0; # RESET BIT POSITION #
03330 M00S03180.virterm +++| END
03331 M00S03181.virterm +++|VTCHAR = B<VTINPNEXT,12>VTINPDATA; # GET NEXT CHARACTER #
03332 M00S03182.virterm +++|VTCHAR = B<53,7>VTCHAR; # RIGHT JUSTIFY CHARACTER #
03333 M00S03183.virterm +++|VTINPNEXT = VTINPNEXT + 12; # INCREMENT BIT POSITION #
03334 M00S03184.virterm +++|
03335 M00S03185.virterm +++|IOEND # VDNXTI #
03336 M00S03186.virterm +++|CONTROL EJECT; # INPUT PROCESSING #
03337 M00S03187.virterm +++|
03338 M00S03188.virterm +++|PROC VDTIINP;
03339 M00S03189.virterm +++|
03340 M00S03190.virterm +++|# TITLE VDTIINP - IDENTIFY NEXT VIRTUAL INPUT EVENT. #
03341 M00S03191.virterm +++|
03342 M00S03192.virterm +++|IOBEGIN(VDTIINP)
03343 M00S03193.virterm +++|
03344 M00S03194.virterm +++|#
03345 M00S03195.virterm +++|** VDTIINP - IDENTIFY NEXT VIRTUAL INPUT EVENT.
03346 M00S03196.virterm +++|*
03347 M00S03197.virterm +++|* THIS PROCEDURE IDENTIFIES THE NEXT VIRTUAL TERMINAL INPUT
03348 M00S03198.virterm +++|* EVENT. THIS ROUTINE IS INTERNAL AND IS CALLED DIRECTLY BY
03349 M00S03199.virterm +++|* THE FULL SCREEN EDITOR AFTER VDTPPI HAS BEEN CALLED.
03350 M00S03200.virterm +++|*
03351 M00S03201.virterm +++|* PROC VDTIINP
03352 M00S03202.virterm +++|*
03353 M00S03203.virterm +++|* ENTRY VTINCR = RESIDUAL CURSOR INCREMENT.
03354 M00S03204.virterm +++|* VTXMAX = NUMBER OF COLUMNS ON SCREEN.
03355 M00S03205.virterm +++|* VTYMAX = NUMBER OF LINES ON SCREEN.
03356 M00S03206.virterm +++|*
03357 M00S03207.virterm +++|* EXIT VTORDN = EVENT CATEGORY.
03358 M00S03208.virterm +++|* VTCHAR = DATA CHARACTER OR FUNCTION KEY INDEX.
03359 M00S03209.virterm +++|* VTYCUR = Y COORDINATE OF CURSOR POSITION.
03360 M00S03210.virterm +++|* VTXCUR = X COORDINATE OF CURSOR POSITION.
03361 M00S03211.virterm +++|* VTOYPOS = OLD Y COORDINATE (HOME ONLY).
03362 M00S03212.virterm +++|* VTOXPOS = OLD X COORDINATE (HOME ONLY).
03363 M00S03213.virterm +++|* VTINCR = SETUP FOR NEXT VDTINP CALL.
03364 M00S03214.virterm +++|*
03365 M00S03215.virterm +++|* CALLS VDNXTI, VDCHECK.
03366 M00S03216.virterm +++|*
03367 M00S03217.virterm +++|* NOTES THE INP SWITCH MUST EXACTLY PARALLEL *TDU* PRODUCED
03368 M00S03218.virterm +++|* INPUT ORDINALS. IN SOME CASES WHERE COMMON CODE IS
03369 M00S03219.virterm +++|* USED THE SIMULATED CASE STATEMENT ALLOWS A FALL THRU
03370 M00S03220.virterm +++|* TO FINISH THE CODE FOR A PARTICULAR FUNCTION.
03371 M00S03221.virterm +++|#
03372 M00S03222.virterm +++|
03373 M00S03223.virterm +++|
Line S00001 Modification History |
M01 (Added by) | virte12 |
Seq # *Modification Id* Act
----------------------------+
03374 M01S00001.virte12 +++|STATUS OPCODES # *TDU* INPUT OPCODES #
03375 M01S00002.virte12 +++| FAIL, # FAIL #
03376 M01S00003.virte12 +++| LIST, # LIST #
03377 M01S00004.virte12 +++| MANY, # MANY ACTION RANGE #
03378 M01S00005.virte12 +++| SNGL, # SINGLE ACTION RANGE #
03379 M01S00006.virte12 +++| MAXOP; # HIGHER THAN ANY VALID CODE #
03380 M01S00007.virte12 +++|
03381 M00S03224.virterm +++|SWITCH INP:INPUTORD # INPUT ORDINALS (SEE *COMFVDT*) #
03382 M00S03225.virterm +++|
03383 M00S03226.virterm +++|# START OF CDC DEFINED INPUT/OUTPUT ORDINALS #
03384 M00S03227.virterm +++|
03385 M00S03228.virterm +++| BADINPUT : BADINPUT, # UNRECOGNIZED SEQUENCE #
03386 M00S03229.virterm +++| INSERTCHAR : INSERTCHAR, # INSERT CHARACTER #
03387 M00S03230.virterm +++| DELETECHAR : DELETECHAR, # DELETE CHARACTER #
03388 M00S03231.virterm +++| INSERTLINE : INSERTLINE, # INSERT LINE #
03389 M00S03232.virterm +++| INSLNECURL : INSLNECURL, # INSERT LINE, CURSOR LEFT #
03390 M00S03233.virterm +++| DELETELINE : DELETELINE, # DELETE LINE #
03391 M00S03234.virterm +++| DELINECURL : DELINECURL, # DELETE LINE, CURSOR LEFT #
03392 M00S03235.virterm +++| CLRSCREEN : CLRSCREEN, # CLEAR SCREEN #
03393 M00S03236.virterm +++| CLRSCRCURH : CLRSCRCURH, # CLEAR SCREEN, CURSOR HOME #
03394 M00S03237.virterm +++| CLRUNPROT : CLRUNPROT, # CLEAR UNPROTECTED #
03395 M00S03238.virterm +++| CLREOS : CLREOS, # CLEAR TO END OF SCREEN #
03396 M00S03239.virterm +++| ERASELINE : ERASELINE, # ERASE LINE #
03397 M00S03240.virterm +++| ERASELNECL : ERASELNECL, # ERASE LINE, CURSOR LEFT #
03398 M00S03241.virterm +++| CLREOL : CLREOL, # CLEAR TO END OF LINE #
03399 M00S03242.virterm +++| NOOP : CLRFIELD, # CLEAR UNPROTECTED FIELD #
03400 M00S03243.virterm +++| NOOP : CLRFLDCBOF, # CLEAR FIELD, CURSOR LEFT #
03401 M00S03244.virterm +++| NOOP : CLREOF, # CLEAR TO END OF FIELD #
03402 M00S03245.virterm +++| ERASECHAR : ERASECHAR, # ERASE CHARACTER #
03403 M00S03246.virterm +++| CURSORHOME : CURSORHOME, # CURSOR HOME #
03404 M00S03247.virterm +++| CURSORUP : CURSORUP, # CURSOR UP #
03405 M00S03248.virterm +++| CURSORDOWN : CURSORDOWN, # CURSOR DOWN #
03406 M00S03249.virterm +++| CURSORLEFT : CURSORLEFT, # CURSOR LEFT #
03407 M00S03250.virterm +++| CURSORIGHT : CURSORIGHT, # CURSOR RIGHT #
03408 M00S03251.virterm +++| TABFORWARD : TABFORWARD, # TAB FORWARD #
03409 M00S03252.virterm +++| TABACKWARD : TABACKWARD, # TAB BACKWARD #
03410 M00S03253.virterm +++| RET : RET, # RETURN #
03411 M00S03254.virterm +++| RESET : RESET, # RESET #
03412 M00S03255.virterm +++| INSRTMDEON : INSRTMDEON, # INSERT MODE ON #
03413 M00S03256.virterm +++| INSRTMDOFF : INSRTMDOFF, # INSERT MODE OFF #
03414 M00S03257.virterm +++| INSRTMDTOG : INSRTMDTOG, # INSERT MODE TOGGLE #
Line S03258 Modification History |
M01 (Removed by) | ns2641 |
Seq # *Modification Id* Act
----------------------------+
03415 M01S03258.ns2641 ---| NOOP : CLRTABSTOP, # CLEAR TAB STOP #
03416 M01S03259.ns2641 ---| NOOP : CLRALLTABS, # CLEAR ALL TAB STOPS #
03417 M01S03260.ns2641 ---| NOOP : SETTABSTOP, # SET TAB STOP #
Line S00001 Modification History |
M01 (Added by) | ns2641 |
Seq # *Modification Id* Act
----------------------------+
03418 M01S00001.ns2641 +++| CLRTABSTOP : CLRTABSTOP, # CLEAR TAB STOP #
03419 M01S00002.ns2641 +++| CLRALLTABS : CLRALLTABS, # CLEAR ALL TAB STOPS #
03420 M01S00003.ns2641 +++| SETTABSTOP : SETTABSTOP, # SET TAB STOP #
03421 M00S03261.virterm +++| CURSORSTR : CURSORSTR, # CURSOR POSITION START #
03422 M00S03262.virterm +++| CURSORSEC : CURSORSEC, # CURSOR POSITION SECOND #
03423 M00S03263.virterm +++| CURSORTHR : CURSORTHR, # CURSOR POSITION THIRD #
03424 M00S03264.virterm +++|
03425 M00S03265.virterm +++|# START OF CDC DEFINED INPUT ONLY ORDINALS. #
03426 M00S03266.virterm +++|
03427 M00S03267.virterm +++| EOI : EOI, # END OF INFORMATION #
03428 M00S03268.virterm +++| CHARACTER : CHARACTER, # OVERSTRIKE CHARACTER #
03429 M00S03269.virterm +++| FKEY : F1, # FUNCTION KEY 1 #
03430 M00S03270.virterm +++| FKEY : F2, # FUNCTION KEY 2 #
03431 M00S03271.virterm +++| FKEY : F3, # FUNCTION KEY 3 #
03432 M00S03272.virterm +++| FKEY : F4, # FUNCTION KEY 4 #
03433 M00S03273.virterm +++| FKEY : F5, # FUNCTION KEY 5 #
03434 M00S03274.virterm +++| FKEY : F6, # FUNCTION KEY 6 #
03435 M00S03275.virterm +++| FKEY : F7, # FUNCTION KEY 7 #
03436 M00S03276.virterm +++| FKEY : F8, # FUNCTION KEY 8 #
03437 M00S03277.virterm +++| FKEY : F9, # FUNCTION KEY 9 #
03438 M00S03278.virterm +++| FKEY : F10, # FUNCTION KEY 10 #
03439 M00S03279.virterm +++| FKEY : F11, # FUNCTION KEY 11 #
03440 M00S03280.virterm +++| FKEY : F12, # FUNCTION KEY 12 #
03441 M00S03281.virterm +++| FKEY : F13, # FUNCTION KEY 13 #
03442 M00S03282.virterm +++| FKEY : F14, # FUNCTION KEY 14 #
03443 M00S03283.virterm +++| FKEY : F15, # FUNCTION KEY 15 #
03444 M00S03284.virterm +++| FKEY : F16, # FUNCTION KEY 16 #
03445 M00S03285.virterm +++| FKEYSHIFT : F1S, # SHIFTED FUNCTION KEY 1 #
03446 M00S03286.virterm +++| FKEYSHIFT : F2S, # SHIFTED FUNCTION KEY 2 #
03447 M00S03287.virterm +++| FKEYSHIFT : F3S, # SHIFTED FUNCTION KEY 3 #
03448 M00S03288.virterm +++| FKEYSHIFT : F4S, # SHIFTED FUNCTION KEY 4 #
03449 M00S03289.virterm +++| FKEYSHIFT : F5S, # SHIFTED FUNCTION KEY 5 #
03450 M00S03290.virterm +++| FKEYSHIFT : F6S, # SHIFTED FUNCTION KEY 6 #
03451 M00S03291.virterm +++| FKEYSHIFT : F7S, # SHIFTED FUNCTION KEY 7 #
03452 M00S03292.virterm +++| FKEYSHIFT : F8S, # SHIFTED FUNCTION KEY 8 #
03453 M00S03293.virterm +++| FKEYSHIFT : F9S, # SHIFTED FUNCTION KEY 9 #
03454 M00S03294.virterm +++| FKEYSHIFT : F10S, # SHIFTED FUNCTION KEY 10 #
03455 M00S03295.virterm +++| FKEYSHIFT : F11S, # SHIFTED FUNCTION KEY 11 #
03456 M00S03296.virterm +++| FKEYSHIFT : F12S, # SHIFTED FUNCTION KEY 12 #
03457 M00S03297.virterm +++| FKEYSHIFT : F13S, # SHIFTED FUNCTION KEY 13 #
03458 M00S03298.virterm +++| FKEYSHIFT : F14S, # SHIFTED FUNCTION KEY 14 #
03459 M00S03299.virterm +++| FKEYSHIFT : F15S, # SHIFTED FUNCTION KEY 15 #
03460 M00S03300.virterm +++| FKEYSHIFT : F16S, # SHIFTED FUNCTION KEY 16 #
03461 M00S03301.virterm +++| GKEY : NEXTKEY, # NEXT KEY #
03462 M00S03302.virterm +++| GKEY : BACKKEY, # BACK KEY #
03463 M00S03303.virterm +++| GKEY : HELPKEY, # HELP KEY #
03464 M00S03304.virterm +++| GKEY : STOPKEY, # STOP KEY #
03465 M00S03305.virterm +++| GKEY : DOWNKEY, # DOWN KEY #
03466 M00S03306.virterm +++| GKEY : UPKEY, # UP KEY #
03467 M00S03307.virterm +++| GKEY : FWDKEY, # FWD KEY #
03468 M00S03308.virterm +++| GKEY : BKWKEY, # BKW KEY #
03469 M00S03309.virterm +++| GKEY : EDITKEY, # EDIT KEY #
03470 M00S03310.virterm +++| GKEY : DATAKEY, # DATA KEY #
03471 M00S03311.virterm +++| GKEYSHIFT : SHFNEXT, # SHIFTED NEXT KEY #
03472 M00S03312.virterm +++| GKEYSHIFT : SHFBACK, # SHIFTED BACK KEY #
03473 M00S03313.virterm +++| GKEYSHIFT : SHFHELP, # SHIFTED HELP KEY #
03474 M00S03314.virterm +++| GKEYSHIFT : SHFSTOP, # SHIFTED STOP KEY #
03475 M00S03315.virterm +++| GKEYSHIFT : SHFDOWN, # SHIFTED DOWN KEY #
03476 M00S03316.virterm +++| GKEYSHIFT : SHFUP, # SHIFTED UP KEY #
03477 M00S03317.virterm +++| GKEYSHIFT : SHFFWD, # SHIFTED FWD KEY #
03478 M00S03318.virterm +++| GKEYSHIFT : SHFBKW, # SHIFTED BKW KEY #
03479 M00S03319.virterm +++| GKEYSHIFT : SHFEDIT, # SHIFTED EDIT KEY #
03480 M00S03320.virterm +++| GKEYSHIFT : SHFDATA, # SHIFTED BKW KEY #
03481 M00S03321.virterm +++| BACKSPACE : BACKSPACE, # BACK SPACE #
Line S03322 Modification History |
M01 (Removed by) | ns2675 |
Seq # *Modification Id* Act
----------------------------+
03482 M01S03322.ns2675 ---|
Line S00001 Modification History |
M01 (Added by) | ns2675 |
Seq # *Modification Id* Act
----------------------------+
03483 M01S00001.ns2675 +++| FKEYX : F17, # FUNCTION KEY 17 #
03484 M01S00002.ns2675 +++| FKEYX : F18, # FUNCTION KEY 18 #
03485 M01S00003.ns2675 +++| FKEYX : F19, # FUNCTION KEY 19 #
03486 M01S00004.ns2675 +++| FKEYX : F20, # FUNCTION KEY 20 #
03487 M01S00005.ns2675 +++| FKEYX : F21, # FUNCTION KEY 21 #
03488 M01S00006.ns2675 +++| FKEYX : F22, # FUNCTION KEY 22 #
03489 M01S00007.ns2675 +++| FKEYX : F23, # FUNCTION KEY 23 #
03490 M01S00008.ns2675 +++| FKEYX : F24, # FUNCTION KEY 24 #
03491 M01S00009.ns2675 +++| FKEYXS : F17S, # SHIFTED FUNCTION KEY 17 #
03492 M01S00010.ns2675 +++| FKEYXS : F18S, # SHIFTED FUNCTION KEY 18 #
03493 M01S00011.ns2675 +++| FKEYXS : F19S, # SHIFTED FUNCTION KEY 19 #
03494 M01S00012.ns2675 +++| FKEYXS : F20S, # SHIFTED FUNCTION KEY 20 #
03495 M01S00013.ns2675 +++| FKEYXS : F21S, # SHIFTED FUNCTION KEY 21 #
03496 M01S00014.ns2675 +++| FKEYXS : F22S, # SHIFTED FUNCTION KEY 22 #
03497 M01S00015.ns2675 +++| FKEYXS : F23S, # SHIFTED FUNCTION KEY 23 #
03498 M01S00016.ns2675 +++| FKEYXS : F24S, # SHIFTED FUNCTION KEY 24 #
03499 M01S00017.ns2675 +++|
03500 M00S03323.virterm +++|# START OF INSTALLATION INPUT ORDINALS DEFINED VIA *TDU*. #
Line S00018 Modification History |
M01 (Added by) | ns2675 |
Seq # *Modification Id* Act
----------------------------+
03501 M01S00018.ns2675 +++|
03502 M01S00019.ns2675 +++| BADINPUT : IINP1, # INSTALLATION INPUT SEQUENCE 1 #
03503 M01S00020.ns2675 +++| BADINPUT : IINP2, # INSTALLATION INPUT SEQUENCE 2 #
03504 M01S00021.ns2675 +++| BADINPUT : IINP3, # INSTALLATION INPUT SEQUENCE 3 #
03505 M01S00022.ns2675 +++| BADINPUT : IINP4, # INSTALLATION INPUT SEQUENCE 4 #
03506 M01S00023.ns2675 +++| BADINPUT : IINP5, # INSTALLATION INPUT SEQUENCE 5 #
03507 M01S00024.ns2675 +++| BADINPUT : IINP6, # INSTALLATION INPUT SEQUENCE 6 #
03508 M01S00025.ns2675 +++| BADINPUT : IINP7, # INSTALLATION INPUT SEQUENCE 7 #
03509 M01S00026.ns2675 +++| BADINPUT : IINP8, # INSTALLATION INPUT SEQUENCE 8 #
03510 M01S00027.ns2675 +++| BADINPUT : IINP9, # INSTALLATION INPUT SEQUENCE 9 #
03511 M01S00028.ns2675 +++| BADINPUT : IINP10, # INSTALLATION INPUT SEQUENCE 10 #
03512 M01S00029.ns2675 +++| BADINPUT : IINP11, # INSTALLATION INPUT SEQUENCE 11 #
03513 M01S00030.ns2675 +++| BADINPUT : IINP12, # INSTALLATION INPUT SEQUENCE 12 #
03514 M01S00031.ns2675 +++| BADINPUT : IINP13, # INSTALLATION INPUT SEQUENCE 13 #
03515 M01S00032.ns2675 +++| BADINPUT : IINP14, # INSTALLATION INPUT SEQUENCE 14 #
03516 M01S00033.ns2675 +++| BADINPUT : IINP15, # INSTALLATION INPUT SEQUENCE 15 #
03517 M01S00034.ns2675 +++| BADINPUT : IINP16, # INSTALLATION INPUT SEQUENCE 16 #
03518 M01S00035.ns2675 +++| BADINPUT : IINP17, # INSTALLATION INPUT SEQUENCE 17 #
03519 M01S00036.ns2675 +++| BADINPUT : IINP18, # INSTALLATION INPUT SEQUENCE 18 #
03520 M01S00037.ns2675 +++| BADINPUT : IINP19, # INSTALLATION INPUT SEQUENCE 19 #
03521 M01S00038.ns2675 +++| BADINPUT : IINP20, # INSTALLATION INPUT SEQUENCE 20 #
03522 M00S03324.virterm +++|
03523 M00S03325.virterm +++|# END OF INSTALLATION INPUT ORDINALS. #
03524 M00S03326.virterm +++|
03525 M00S03327.virterm +++| BADINPUT : MAXPLUS1; # LEGAL ORDINALS MUST BE LESS #
03526 M00S03328.virterm +++| CONTROL EJECT; # EMBEDDED VDTIINP PROCEDURE #
03527 M00S03329.virterm +++|
03528 M00S03330.virterm +++| PROC VDGETS;
03529 M00S03331.virterm +++|
03530 M00S03332.virterm +++| # TITLE VDGETS - GET SEPTET. #
03531 M00S03333.virterm +++|
03532 M00S03334.virterm +++| BEGIN # VDGETS #
03533 M00S03335.virterm +++|
03534 M00S03336.virterm +++| #
03535 M00S03337.virterm +++| * VDGETS - GET SEPTET.
03536 M00S03338.virterm +++| *
03537 M00S03339.virterm +++| * THIS PROCEDURE GETS THE NEXT SEVEN BITS FROM THE INPUT TABLE.
03538 M00S03340.virterm +++| *
03539 M00S03341.virterm +++| * ENTRY VTCOUNT = OFFSET INTO INPUT TABLE.
03540 M00S03342.virterm +++| *
03541 M00S03343.virterm +++| * EXIT VTHOLD = SEPTET.
Line S00008 Modification History |
M01 (Added by) | virte12 |
Seq # *Modification Id* Act
----------------------------+
03542 M01S00008.virte12 +++| * VTCOUNT = INCREMENTED IF WITHIN TABLE.
03543 M00S03344.virterm +++| *
03544 M00S03345.virterm +++| * USES VTHOLD.
03545 M00S03346.virterm +++| #
03546 M00S03347.virterm +++|
03547 M00S03348.virterm +++| ITEM WORDINDEX I; # WORD INDEX INTO INPUT TABLE #
03548 M00S03349.virterm +++| ITEM BITPINDEX I; # BIT POSITION INDEX INTO WORD #
03549 M00S03350.virterm +++|
Line S03351 Modification History |
M01 (Removed by) | virte12 |
Seq # *Modification Id* Act
----------------------------+
03550 M01S03351.virte12 ---| IF VTCOUNT / 8 LS O"272" THEN
Line S00009 Modification History |
M01 (Added by) | virte12 |
Seq # *Modification Id* Act
----------------------------+
03551 M01S00009.virte12 +++| WORDINDEX = VTCOUNT / 8;
03552 M01S00010.virte12 +++| IF WORDINDEX LS (TABSTRNMES[0] - TABSTRINPT[0]) THEN
03553 M00S03352.virterm +++| BEGIN # IF WITHIN *TDU* TABLE #
Line S03353 Modification History |
M01 (Removed by) | virte12 |
Seq # *Modification Id* Act
----------------------------+
03554 M01S03353.virte12 ---| WORDINDEX = VTCOUNT / 8;
03555 M00S03354.virterm +++| BITPINDEX = 4 + (7 * ((VTCOUNT - (WORDINDEX * 8))));
03556 M00S03355.virterm +++| VTHOLD = B<BITPINDEX,7>TABFULLWRD[WORDINDEX + TABSTRINPT[0] - 6 ];
Line S00011 Modification History |
M01 (Added by) | virte12 |
Seq # *Modification Id* Act
----------------------------+
03557 M01S00011.virte12 +++| VTCOUNT = VTCOUNT + 1; # INCREMENT POINTER #
03558 M00S03356.virterm +++| END
03559 M00S03357.virterm +++| ELSE # IF OUTSIDE OF *TDU* TABLE #
03560 M00S03358.virterm +++| BEGIN
Line S03359 Modification History |
M01 (Removed by) | virte12 |
Seq # *Modification Id* Act
----------------------------+
03561 M01S03359.virte12 ---| # WHAT DO WE DO IN THIS CASE, HOW ABOUT RETURNING A STOP KEY #
Line S00012 Modification History |
M01 (Added by) | virte12 |
Seq # *Modification Id* Act
----------------------------+
03562 M01S00012.virte12 +++| VTHOLD = -1; # RETURN FAIL INDICATION #
03563 M00S03360.virterm +++| END
03564 M00S03361.virterm +++|
03565 M00S03362.virterm +++| END # VDGETS #
03566 M00S03363.virterm +++| CONTROL EJECT; # EMBEDDED VDTIINP PROCEDURE #
03567 M00S03364.virterm +++|
03568 M00S03365.virterm +++| PROC VDLIST;
03569 M00S03366.virterm +++|
03570 M00S03367.virterm +++| # TITLE VDLIST - CHECK LIST FOR CHARACTER. #
03571 M00S03368.virterm +++|
03572 M00S03369.virterm +++| BEGIN # VDLIST #
03573 M00S03370.virterm +++|
03574 M00S03371.virterm +++| #
03575 M00S03372.virterm +++| * VDLIST - CHECK LIST FOR CHARACTER.
03576 M00S03373.virterm +++| *
03577 M00S03374.virterm +++| * THIS PROCEDURE CHECKS FOR AN INPUT CHARACTER IN A LIST.
03578 M00S03375.virterm +++| *
Line S03376 Modification History |
M01 (Removed by) | virte12 |
Seq # *Modification Id* Act
----------------------------+
03579 M01S03376.virte12 ---| * ENTRY VTCOUNT = OFFSET INTO INPUT TABLE FOR OPCODE.
Line S00013 Modification History |
M01 (Added by) | virte12 |
Seq # *Modification Id* Act
----------------------------+
03580 M01S00013.virte12 +++| * ENTRY VTCOUNT = OFFSET INTO INPUT TABLE FOR LIST SIZE.
03581 M00S03377.virterm +++| *
03582 M00S03378.virterm +++| * EXIT VTCOUNT = OFFSET INTO INPUT TABLE FOR ACTION,
03583 M00S03379.virterm +++| * OR NEXT OPCODE IF NO MATCH FOUND.
03584 M00S03380.virterm +++| * VTI = 0, IF NO CHARACTER MATCH FOUND, OR
03585 M00S03381.virterm +++| * NONZERO IF MATCH FOUND.
03586 M00S03382.virterm +++| *
03587 M00S03383.virterm +++| * USES VTHOLD, VTI.
03588 M00S03384.virterm +++| #
03589 M00S03385.virterm +++|
Line S03386 Modification History |
M01 (Removed by) | virte12 |
Seq # *Modification Id* Act
----------------------------+
03590 M01S03386.virte12 ---| VTCOUNT = VTCOUNT + 1; # GET LIST COUNT #
03591 M01S03387.virte12 ---| VDGETS;
Line S00014 Modification History |
M01 (Added by) | virte12 |
Seq # *Modification Id* Act
----------------------------+
03592 M01S00014.virte12 +++| VDGETS; # GET LENGTH OF LIST #
Line S03388 Modification History |
M01 (Removed by) | virte12 |
Seq # *Modification Id* Act
----------------------------+
03593 M01S03388.virte12 ---| VTI = VTHOLD;
03594 M01S03389.virte12 ---| VTCOUNT = VTCOUNT + 1;
03595 M00S03390.virterm +++|
Line S03391 Modification History |
M01 (Removed by) | virte12 |
Seq # *Modification Id* Act
----------------------------+
03596 M01S03391.virte12 ---| SEARCH: # SEARCH FOR CHARACTER #
03597 M01S03392.virte12 ---|
Line S00015 Modification History |
M01 (Added by) | virte12 |
Seq # *Modification Id* Act
----------------------------+
03598 M01S00015.virte12 +++| FOR VTI = VTHOLD STEP -1 WHILE VTI GR 0 AND VTHOLD GQ 0 DO
03599 M01S00016.virte12 +++| BEGIN # SEARCH FOR CHARACTER #
03600 M00S03393.virterm +++| VDGETS; # GET CHARACTER #
03601 M00S03394.virterm +++| IF VTCHAR EQ VTHOLD THEN
03602 M00S03395.virterm +++| BEGIN # IF MATCH FOUND #
Line S03396 Modification History |
M01 (Removed by) | virte12 |
Seq # *Modification Id* Act
----------------------------+
03603 M01S03396.virte12 ---| VTCOUNT = VTCOUNT + 1; # OFFSET FOR ACTION #
03604 M01S03397.virte12 ---| VTI = 1;
Line S00017 Modification History |
M01 (Added by) | virte12 |
Seq # *Modification Id* Act
----------------------------+
03605 M01S00017.virte12 +++| RETURN; # RETURN - CHARACTER FOUND #
03606 M00S03398.virterm +++| END
03607 M00S03399.virterm +++| ELSE
03608 M00S03400.virterm +++| BEGIN # NO MATCH #
Line S03401 Modification History |
M01 (Removed by) | virte12 |
Seq # *Modification Id* Act
----------------------------+
03609 M01S03401.virte12 ---| VTI = VTI - 1; # DECREMENT COUNT #
03610 M01S03402.virte12 ---| VTCOUNT = VTCOUNT + 3; # INCREMENT OFFSET #
03611 M01S03403.virte12 ---| IF VTI NQ 0 THEN GOTO SEARCH; # IF NOT END OF LIST #
Line S00018 Modification History |
M01 (Added by) | virte12 |
Seq # *Modification Id* Act
----------------------------+
03612 M01S00018.virte12 +++| VTCOUNT = VTCOUNT + 2; # INCREMENT OFFSET #
03613 M00S03404.virterm +++| END
Line S00019 Modification History |
M01 (Added by) | virte12 |
Seq # *Modification Id* Act
----------------------------+
03614 M01S00019.virte12 +++| END
03615 M00S03405.virterm +++|
03616 M00S03406.virterm +++| END # VDLIST #
03617 M00S03407.virterm +++| CONTROL EJECT; # EMBEDDED VDTIINP PROCEDURE #
03618 M00S03408.virterm +++|
03619 M00S03409.virterm +++| PROC VDMANY;
03620 M00S03410.virterm +++|
03621 M00S03411.virterm +++| # TITLE VDMANY - CHECK MANY ACTION RANGE FOR CHARACTER. #
03622 M00S03412.virterm +++|
03623 M00S03413.virterm +++| BEGIN # VDMANY #
03624 M00S03414.virterm +++|
03625 M00S03415.virterm +++| #
03626 M00S03416.virterm +++| * VDMANY - CHECK MANY ACTION RANGE FOR CHARACTER.
03627 M00S03417.virterm +++| *
03628 M00S03418.virterm +++| * THIS PROCEDURE CHECKS A MANY ACTION RANGE FOR A CHARACTER.
03629 M00S03419.virterm +++| *
Line S03420 Modification History |
M01 (Removed by) | virte12 |
Seq # *Modification Id* Act
----------------------------+
03630 M01S03420.virte12 ---| * ENTRY VTCOUNT = OFFSET INTO INPUT TABLE FOR OPCODE.
Line S00020 Modification History |
M01 (Added by) | virte12 |
Seq # *Modification Id* Act
----------------------------+
03631 M01S00020.virte12 +++| * ENTRY VTCOUNT = OFFSET INTO INPUT TABLE FOR RANGE PAIR.
03632 M00S03421.virterm +++| *
03633 M00S03422.virterm +++| * EXIT VTCOUNT = OFFSET INTO INPUT TABLE FOR ACTION,
03634 M00S03423.virterm +++| * OR NEXT OPCODE IF NO MATCH FOUND.
03635 M00S03424.virterm +++| * VTI = 0, IF NO CHARACTER MATCH FOUND, OR
03636 M00S03425.virterm +++| * NONZERO IF MATCH FOUND.
03637 M00S03426.virterm +++| *
03638 M00S03427.virterm +++| * USES VTHOLD, VTI.
03639 M00S03428.virterm +++| #
03640 M00S03429.virterm +++|
Line S03430 Modification History |
M01 (Removed by) | virte12 |
Seq # *Modification Id* Act
----------------------------+
03641 M01S03430.virte12 ---| VTCOUNT = VTCOUNT + 1; # GET LOW RANGE CHARACTER #
03642 M01S03431.virte12 ---| VDGETS;
03643 M01S03432.virte12 ---| VTI = VTHOLD;
03644 M01S03433.virte12 ---|
03645 M01S03434.virte12 ---| VTCOUNT = VTCOUNT + 1; # GET UPPER RANGE CHARACTER #
03646 M01S03435.virte12 ---| VDGETS;
03647 M01S03436.virte12 ---| VTJ = VTHOLD;
03648 M01S03437.virte12 ---|
03649 M01S03438.virte12 ---| IF VTCHAR GQ VTI AND VTCHAR LQ VTJ THEN
03650 M01S03439.virte12 ---| BEGIN # IF CHARACTER WITHIN RANGE #
03651 M01S03440.virte12 ---| VTJ = VTCHAR - VTI; # OFFSET FOR ACTION #
03652 M01S03441.virte12 ---| VTCOUNT = VTCOUNT + (VTJ * 2) + 1;
03653 M01S03442.virte12 ---| VTI = 1;
03654 M01S03443.virte12 ---| END
03655 M01S03444.virte12 ---| ELSE
03656 M01S03445.virte12 ---| BEGIN # OFFSET FOR NEXT OPCODE #
03657 M01S03446.virte12 ---| VTCOUNT = VTCOUNT + ((VTJ - VTI + 1) * 2) + 1;
03658 M01S03447.virte12 ---| VTI = 0;
Line S00021 Modification History |
M01 (Added by) | virte12 |
Seq # *Modification Id* Act
----------------------------+
03659 M01S00021.virte12 +++| VDGETS; # GET LOWER RANGE CHARACTER #
03660 M01S00022.virte12 +++| IF VTHOLD GQ 0 THEN
03661 M01S00023.virte12 +++| BEGIN # IF GOOD TABLE ENTRY #
03662 M01S00024.virte12 +++| VTI = VTHOLD;
03663 M01S00025.virte12 +++| VDGETS; # GET UPPER RANGE CHARACTER #
03664 M01S00026.virte12 +++| IF VTHOLD GQ 0 THEN
03665 M01S00027.virte12 +++| BEGIN # IF GOOD TABLE ENTRY #
03666 M01S00028.virte12 +++| VTJ = VTHOLD;
03667 M01S00029.virte12 +++| IF VTCHAR GQ VTI AND VTCHAR LQ VTJ THEN
03668 M01S00030.virte12 +++| BEGIN # IF CHARACTER WITHIN RANGE #
03669 M01S00031.virte12 +++| VTCOUNT = VTCOUNT + ((VTCHAR - VTI) * 2); # ACTION OFFSET #
03670 M01S00032.virte12 +++| VTI = 1;
03671 M01S00033.virte12 +++| END
03672 M01S00034.virte12 +++| ELSE
03673 M01S00035.virte12 +++| BEGIN # OFFSET FOR NEXT OPCODE #
03674 M01S00036.virte12 +++| VTCOUNT = VTCOUNT + ((VTJ - VTI + 1) * 2); # OPCODE OFFSET #
03675 M01S00037.virte12 +++| VTI = 0;
03676 M01S00038.virte12 +++| END
03677 M01S00039.virte12 +++| END
03678 M00S03448.virterm +++| END
03679 M00S03449.virterm +++|
03680 M00S03450.virterm +++| END # VDMANY #
03681 M00S03451.virterm +++| CONTROL EJECT; # EMBEDDED VDTIINP PROCEDURE #
03682 M00S03452.virterm +++|
03683 M00S03453.virterm +++| PROC VDSNGL;
03684 M00S03454.virterm +++|
03685 M00S03455.virterm +++| # TITLE VDSNGL - CHECK SINGLE ACTION RANGE FOR CHARACTER. #
03686 M00S03456.virterm +++|
03687 M00S03457.virterm +++| BEGIN # VDSNGL #
03688 M00S03458.virterm +++|
03689 M00S03459.virterm +++| #
03690 M00S03460.virterm +++| * VDSNGL - CHECK SINGLE ACTION RANGE FOR CHARACTER.
03691 M00S03461.virterm +++| *
03692 M00S03462.virterm +++| * THIS PROCEDURE CHECKS A SINGLE ACTION RANGE FOR A CHARACTER.
03693 M00S03463.virterm +++| *
Line S03464 Modification History |
M01 (Removed by) | virte12 |
Seq # *Modification Id* Act
----------------------------+
03694 M01S03464.virte12 ---| * ENTRY VTCOUNT = OFFSET INTO INPUT TABLE FOR OPCODE.
Line S00040 Modification History |
M01 (Added by) | virte12 |
Seq # *Modification Id* Act
----------------------------+
03695 M01S00040.virte12 +++| * ENTRY VTCOUNT = OFFSET INTO INPUT TABLE FOR RANGE PAIR.
03696 M00S03465.virterm +++| *
03697 M00S03466.virterm +++| * EXIT VTCOUNT = OFFSET INTO INPUT TABLE FOR ACTION,
03698 M00S03467.virterm +++| * OR NEXT OPCODE IF NO MATCH FOUND.
03699 M00S03468.virterm +++| * VTI = 0, IF NO CHARACTER MATCH FOUND, OR
03700 M00S03469.virterm +++| * NONZERO IF MATCH FOUND.
03701 M00S03470.virterm +++| *
03702 M00S03471.virterm +++| * USES VTHOLD, VTI.
03703 M00S03472.virterm +++| #
03704 M00S03473.virterm +++|
Line S03474 Modification History |
M01 (Removed by) | virte12 |
Seq # *Modification Id* Act
----------------------------+
03705 M01S03474.virte12 ---| VTCOUNT = VTCOUNT + 1; # GET LOW RANGE CHARACTER #
03706 M01S03475.virte12 ---| VDGETS;
03707 M01S03476.virte12 ---| VTI = VTHOLD;
03708 M01S03477.virte12 ---|
03709 M01S03478.virte12 ---| VTCOUNT = VTCOUNT + 1; # GET UPPER RANGE CHARACTER #
03710 M01S03479.virte12 ---| VDGETS;
03711 M01S03480.virte12 ---| VTJ = VTHOLD;
03712 M01S03481.virte12 ---|
03713 M01S03482.virte12 ---| IF VTCHAR GQ VTI AND VTCHAR LQ VTJ THEN
03714 M01S03483.virte12 ---| BEGIN # IF CHARACTER WITHIN RANGE #
03715 M01S03484.virte12 ---| VTCOUNT = VTCOUNT + 1; # OFFSET FOR ACTION #
03716 M01S03485.virte12 ---| VTI = 1;
03717 M01S03486.virte12 ---| END
03718 M01S03487.virte12 ---| ELSE
03719 M01S03488.virte12 ---| BEGIN # IF NO MATCH #
03720 M01S03489.virte12 ---| VTCOUNT = VTCOUNT + 3; # OFFSET FOR NEXT OPCODE #
03721 M01S03490.virte12 ---| VTI = 0;
Line S00041 Modification History |
M01 (Added by) | virte12 |
Seq # *Modification Id* Act
----------------------------+
03722 M01S00041.virte12 +++| VDGETS; # GET LOWER RANGE CHARACTER #
03723 M01S00042.virte12 +++| IF VTHOLD GQ 0 THEN
03724 M01S00043.virte12 +++| BEGIN # IF GOOD TABLE ENTRY #
03725 M01S00044.virte12 +++| VTI = VTHOLD;
03726 M01S00045.virte12 +++| VDGETS; # GET UPPER RANGE CHARACTER #
03727 M01S00046.virte12 +++| IF VTHOLD GQ 0 THEN
03728 M01S00047.virte12 +++| BEGIN # IF GOOD TABLE ENTRY #
03729 M01S00048.virte12 +++| VTJ = VTHOLD;
03730 M01S00049.virte12 +++| IF VTCHAR GQ VTI AND VTCHAR LQ VTJ THEN
03731 M01S00050.virte12 +++| BEGIN # IF CHARACTER WITHIN RANGE #
03732 M01S00051.virte12 +++| VTI = 1;
03733 M01S00052.virte12 +++| END
03734 M01S00053.virte12 +++| ELSE
03735 M01S00054.virte12 +++| BEGIN # IF NO MATCH #
03736 M01S00055.virte12 +++| VTCOUNT = VTCOUNT + 2; # OFFSET FOR NEXT OPCODE #
03737 M01S00056.virte12 +++| VTI = 0;
03738 M01S00057.virte12 +++| END
03739 M01S00058.virte12 +++| END
03740 M00S03491.virterm +++| END
03741 M00S03492.virterm +++|
03742 M00S03493.virterm +++| END # VDSNGL #
03743 M00S03494.virterm +++| CONTROL EJECT; # EMBEDDED VDTIINP PROCEDURE #
03744 M00S03495.virterm +++|
03745 M00S03496.virterm +++| PROC VDCHEK;
03746 M00S03497.virterm +++|
03747 M00S03498.virterm +++| # TITLE VDCHEK - CHECK VIRTUAL TERMINAL INPUT SEQUENCE. #
03748 M00S03499.virterm +++|
03749 M00S03500.virterm +++| IOBEGIN(VDCHEK) # VDCHEK #
03750 M00S03501.virterm +++|
03751 M00S03502.virterm +++| #
03752 M00S03503.virterm +++| * VDCHEK - CHECK VIRTUAL TERMINAL INPUT SEQUENCE.
03753 M00S03504.virterm +++| *
03754 M00S03505.virterm +++| * THIS PROCEDURE MAPS INPUT SEQUENCES TO INP ORDINALS.
03755 M00S03506.virterm +++| *
03756 M00S03507.virterm +++| * EXIT VTORDN = INPUT EVENT ORDINAL.
03757 M00S03508.virterm +++| *
03758 M00S03509.virterm +++| * CALLS VDNXTI, VDGETS, VDSNGL, VDMANY, VDLIST.
03759 M00S03510.virterm +++| *
03760 M00S03511.virterm +++| * USES VTCOUNT, VTHOLD, VTI, VTORDN.
03761 M00S03512.virterm +++| *
03762 M00S03513.virterm +++| * NOTES OPCODE SWITCH DEPENDS ON *TDU* PRODUCED VALUES.
03763 M00S03514.virterm +++| #
03764 M00S03515.virterm +++|
03765 M00S03516.virterm +++| ARRAY ACT [0:0] P(1); # DEFINED ACTION FOR SEQUENCE #
03766 M00S03517.virterm +++| BEGIN
03767 M00S03518.virterm +++| ITEM ACTONE U(00,46,07); # FIRST SEPTET OF ACTION #
03768 M00S03519.virterm +++| ITEM ACTTWO U(00,53,07); # SECOND SEPTET OF ACTION #
03769 M00S03520.virterm +++| ITEM ACTION I(00,46,14); # ACTION AS SIGNED INTEGER #
03770 M00S03521.virterm +++| END
03771 M00S03522.virterm +++|
Line S03523 Modification History |
M01 (Removed by) | virte12 |
Seq # *Modification Id* Act
----------------------------+
03772 M01S03523.virte12 ---| SWITCH OPCODE # *TDU* INPUT OPCODES #
03773 M01S03524.virte12 ---| FAIL, # FAIL #
03774 M01S03525.virte12 ---| LIST, # LIST #
03775 M01S03526.virte12 ---| MANY, # MANY ACTION RANGE #
03776 M01S03527.virte12 ---| SNGL; # SINGLE ACTION RANGE #
Line S00059 Modification History |
M01 (Added by) | virte12 |
Seq # *Modification Id* Act
----------------------------+
03777 M01S00059.virte12 +++| SWITCH OPCODE:OPCODES # BASED ON *TDU* INPUT OPCODES #
03778 M01S00060.virte12 +++| FAIL:FAIL, # FAIL #
03779 M01S00061.virte12 +++| LIST:LIST, # LIST #
03780 M01S00062.virte12 +++| MANY:MANY, # MANY ACTION RANGE #
03781 M01S00063.virte12 +++| SNGL:SNGL; # SINGLE ACTION RANGE #
03782 M00S03528.virterm +++|
03783 M00S03529.virterm +++|CONTROL IFEQ SINGLE,1; # IF NOT MULTI USER FSE #
03784 M00S03530.virterm +++| IF VTRESINP NQ 0 THEN
03785 M00S03531.virterm +++| BEGIN # IF ONLY SBA ALLOWED #
03786 M00S03532.virterm +++| VDNXTI; # GET NEXT INPUT CHARACTER #
03787 M00S03533.virterm +++| IF VTCHAR EQ X"11" THEN
03788 M00S03534.virterm +++| BEGIN # IF SBA #
03789 M00S03535.virterm +++| VTORDN = 33; # CURSORSTR #
03790 M00S03536.virterm +++| END
03791 M00S03537.virterm +++| ELSE
03792 M00S03538.virterm +++| BEGIN # NOT SBA #
03793 M00S03539.virterm +++| IF VTCHAR EQ X"00" THEN
03794 M00S03540.virterm +++| BEGIN # IF EOI #
03795 M00S03541.virterm +++| VTORDN = 36; # EOI #
03796 M00S03542.virterm +++| END
03797 M00S03543.virterm +++| ELSE
03798 M00S03544.virterm +++| BEGIN # CHARACTER #
03799 M00S03545.virterm +++| VTORDN = 37;
03800 M00S03546.virterm +++| END
03801 M00S03547.virterm +++| END
03802 M00S03548.virterm +++| IORET
03803 M00S03549.virterm +++| END
03804 M00S03550.virterm +++|CONTROL FI; # END OF IF NOT MULTI FSE #
03805 M00S03551.virterm +++|
03806 M00S03552.virterm +++| VTCOUNT = 0; # SEARCH ENTIRE TABLE #
03807 M00S03553.virterm +++| VTI = 0; # NO MATCH FOUND YET #
03808 M00S03554.virterm +++|
03809 M00S03555.virterm +++| VDNXTI; # GET INPUT #
03810 M00S03556.virterm +++|
03811 M00S03557.virterm +++| IF TABVTFKLSM[0] EQ 0 AND NOT TABLOCKMDE[0] THEN
03812 M00S03558.virterm +++| BEGIN # IF A CHAR IS A CHAR IS A CHAR #
03813 M00S03559.virterm +++| IF VTCHAR GQ X"20" AND VTCHAR LQ X"7E" THEN
03814 M00S03560.virterm +++| BEGIN # IF VALID CHARACTER #
03815 M00S03561.virterm +++| VTORDN = 37;
03816 M00S03562.virterm +++| IORET # RETURN #
03817 M00S03563.virterm +++| END
03818 M00S03564.virterm +++| END
Line S03565 Modification History |
M01 (Removed by) | virte12 |
Seq # *Modification Id* Act
----------------------------+
03819 M01S03565.virte12 ---|
03820 M01S03566.virte12 ---| GOTO PARSE; # CHECK TDU SEQUENCE #
03821 M01S03567.virte12 ---|
03822 M01S03568.virte12 ---| GETINP:
03823 M01S03569.virte12 ---| VDNXTI; # GET INPUT #
03824 M00S03570.virterm +++|
03825 M00S03571.virterm +++| PARSE:
03826 M00S03572.virterm +++| VDGETS; # GET OPCODE #
Line S03573 Modification History |
M01 (Removed by) | virte12 |
Seq # *Modification Id* Act
----------------------------+
03827 M01S03573.virte12 ---| GOTO OPCODE[VTHOLD]; # PROCESS BY OPCODE #
Line S00064 Modification History |
M01 (Added by) | virte12 |
Seq # *Modification Id* Act
----------------------------+
03828 M01S00064.virte12 +++| IF VTHOLD GQ 0 AND VTHOLD LS OPCODES"MAXOP" THEN
03829 M01S00065.virte12 +++| GOTO OPCODE[VTHOLD]; # IF OPCODE WITHIN RANGE #
03830 M00S03574.virterm +++|
03831 M00S03575.virterm +++| FAIL: # FAIL #
03832 M00S03576.virterm +++| VTORDN = 0; # UNRECOGNIZED SEQUENCE #
03833 M00S03577.virterm +++| IORET # RETURN #
03834 M00S03578.virterm +++|
03835 M00S03579.virterm +++| LIST: # LIST #
03836 M00S03580.virterm +++| VDLIST;
03837 M00S03581.virterm +++| GOTO ENDCASE;
03838 M00S03582.virterm +++|
03839 M00S03583.virterm +++| MANY: # MANY ACTION RANGE #
03840 M00S03584.virterm +++| VDMANY;
03841 M00S03585.virterm +++| GOTO ENDCASE;
03842 M00S03586.virterm +++|
03843 M00S03587.virterm +++| SNGL: # SINGLE ACTION RANGE #
03844 M00S03588.virterm +++| VDSNGL;
03845 M00S03589.virterm +++|
03846 M00S03590.virterm +++| ENDCASE:
Line S00066 Modification History |
M01 (Added by) | virte12 |
Seq # *Modification Id* Act
----------------------------+
03847 M01S00066.virte12 +++| IF VTHOLD LS 0 THEN GOTO FAIL; # IF TABLE SEARCH FAILED #
03848 M00S03591.virterm +++| IF VTI EQ 0 THEN GOTO PARSE; # IF NO MATCH FOUND YET #
03849 M00S03592.virterm +++|
03850 M00S03593.virterm +++|# START OF NON-REENTRANT CODE SEQUENCE #
03851 M00S03594.virterm +++|
03852 M00S03595.virterm +++| VDGETS; # PUT ACTION INTO VTHOLD #
Line S00067 Modification History |
M01 (Added by) | virte12 |
Seq # *Modification Id* Act
----------------------------+
03853 M01S00067.virte12 +++| IF VTHOLD LS 0 THEN GOTO FAIL; # IF TABLE SEARCH FAILED #
03854 M00S03596.virterm +++| ACTONE = VTHOLD;
Line S03597 Modification History |
M01 (Removed by) | virte12 |
Seq # *Modification Id* Act
----------------------------+
03855 M01S03597.virte12 ---| VTCOUNT = VTCOUNT + 1;
03856 M00S03598.virterm +++| VDGETS;
Line S00068 Modification History |
M01 (Added by) | virte12 |
Seq # *Modification Id* Act
----------------------------+
03857 M01S00068.virte12 +++| IF VTHOLD LS 0 THEN GOTO FAIL; # IF TABLE SEARCH FAILED #
03858 M00S03599.virterm +++| ACTTWO = VTHOLD;
03859 M00S03600.virterm +++| VTHOLD = ACTION;
03860 M00S03601.virterm +++|
03861 M00S03602.virterm +++|# END OF NON-REENTRANT CODE SEQUENCE #
03862 M00S03603.virterm +++|
03863 M00S03604.virterm +++| IF VTHOLD GQ 0 THEN
03864 M00S03605.virterm +++| BEGIN # IF ACTION IS AN OFFSET #
Line S03606 Modification History |
M01 (Removed by) | virte12 |
Seq # *Modification Id* Act
----------------------------+
03865 M01S03606.virte12 ---| VTI = 0; # RESET MATCH NOT FOUND #
03866 M00S03607.virterm +++| VTCOUNT = VTHOLD; # CONTINUE WITH PARSING #
Line S03608 Modification History |
M01 (Removed by) | virte12 |
Seq # *Modification Id* Act
----------------------------+
03867 M01S03608.virte12 ---| GOTO GETINP; # GET NEXT INPUT BYTE #
Line S00069 Modification History |
M01 (Added by) | virte12 |
Seq # *Modification Id* Act
----------------------------+
03868 M01S00069.virte12 +++| VDNXTI; # GET NEXT INPUT BYTE #
03869 M01S00070.virte12 +++| GOTO PARSE; # CONTINUE SEQUENCE #
03870 M00S03609.virterm +++| END
03871 M00S03610.virterm +++| ELSE
03872 M00S03611.virterm +++| BEGIN
03873 M00S03612.virterm +++| VTORDN = ABS(VTHOLD); # RETURN INP ORDINAL #
03874 M00S03613.virterm +++| END
03875 M00S03614.virterm +++|
03876 M00S03615.virterm +++| IOEND # VDCHEK #
03877 M00S03616.virterm +++|CONTROL EJECT; # START OF MAIN CODE FOR VDTIINP #
03878 M00S03617.virterm +++|
03879 M00S03618.virterm +++|IF VTINCR NQ 0 THEN
03880 M00S03619.virterm +++| BEGIN # IF POSITION NEEDS UPDATING #
03881 M00S03620.virterm +++| VTINCR = 0;
03882 M00S03621.virterm +++| VTXCUR = VTXCUR + 1; # INCREMENT X POSITION #
03883 M00S03622.virterm +++| IF VTXCUR GR VTXMAX THEN
03884 M00S03623.virterm +++| BEGIN # IF PAST COLUMN BOUNDARY #
03885 M00S03624.virterm +++| IF TABRGHTCHR[0] GQ CURSORMOVE"SPIRAL" THEN
03886 M00S03625.virterm +++| BEGIN # IF WRAP OR SPIRAL #
03887 M00S03626.virterm +++| VTXCUR = 0; # CLEAR X POSITION #
03888 M00S03627.virterm +++| IF TABRGHTCHR[0] EQ CURSORMOVE"SPIRAL" THEN
03889 M00S03628.virterm +++| BEGIN # IF SPIRAL #
03890 M00S03629.virterm +++| VTYCUR = VTYCUR + 1; # INCREMENT Y POSITION #
03891 M00S03630.virterm +++| IF VTYCUR GR VTYMAX THEN
03892 M00S03631.virterm +++| BEGIN # IF PAST LINE BOUNDARY #
03893 M00S03632.virterm +++| IF TABLASTPOS[0] EQ CURSORMOVE"SPIRAL" THEN
03894 M00S03633.virterm +++| BEGIN # IF SPIRAL #
03895 M00S03634.virterm +++| VTYCUR = 0; # CLEAR Y POSITION #
03896 M00S03635.virterm +++| END
03897 M00S03636.virterm +++| ELSE # STOP, WRAP OR SCROLL #
03898 M00S03637.virterm +++| BEGIN
03899 M00S03638.virterm +++| VTYCUR = VTYMAX; # SET Y TO LAST LINE #
03900 M00S03639.virterm +++| IF TABLASTPOS[0] EQ CURSORMOVE"SCROLL" THEN
03901 M00S03640.virterm +++| BEGIN # IF SCROLL #
03902 M00S03641.virterm +++| VTORDN = SCREENST"CLRPAG";
03903 M00S03642.virterm +++| IORET # RETURN SOFT CLEAR PAGE #
03904 M00S03643.virterm +++| END
03905 M00S03644.virterm +++| END
03906 M00S03645.virterm +++| END
03907 M00S03646.virterm +++| END
03908 M00S03647.virterm +++| END
03909 M00S03648.virterm +++| ELSE
03910 M00S03649.virterm +++| BEGIN # IF STOP #
03911 M00S03650.virterm +++| VTXCUR = VTXMAX; # SET X TO LAST COLUMN #
03912 M00S03651.virterm +++| END
03913 M00S03652.virterm +++| END
03914 M00S03653.virterm +++| END
03915 M00S03654.virterm +++|
03916 M00S03655.virterm +++|VDCHEK; # CHECK INPUT SEQUENCE #
03917 M00S03656.virterm +++|
03918 M00S03657.virterm +++|IF VTORDN LS INPUTORD"MAXPLUS1" THEN GOTO INP[VTORDN];
03919 M00S03658.virterm +++|
03920 M00S03659.virterm +++| # FALL THROUGH TO FAIL CASE #
03921 M00S03660.virterm +++|
03922 M00S03661.virterm +++| BADINPUT: # UNRECOGNIZED SEQUENCE #
03923 M00S03662.virterm +++| IF VTCHAR EQ X"14" THEN
03924 M00S03663.virterm +++| BEGIN # IF CONTROL-T #
03925 M00S03664.virterm +++| VTORDN = SCREENST"GKEY"; # RETURN GENERIC STOP #
03926 M00S03665.virterm +++| VTCHAR = 4;
03927 M00S03666.virterm +++| END
03928 M00S03667.virterm +++| ELSE
03929 M00S03668.virterm +++| BEGIN # NOT CONTROL-T #
03930 M00S03669.virterm +++| VTORDN = SCREENST"BAD"; # BAD INPUT #
03931 M00S03670.virterm +++| END
03932 M00S03671.virterm +++| IORET # RETURN #
03933 M00S03672.virterm +++|CONTROL EJECT;
03934 M00S03673.virterm +++|
03935 M00S03674.virterm +++| NOOP: # CURRENTLY NON OPERATIONAL #
03936 M00S03675.virterm +++| VTORDN = SCREENST"NOOP";
03937 M00S03676.virterm +++| IORET # RETURN #
03938 M00S03677.virterm +++|
03939 M00S03678.virterm +++| INSERTCHAR: # INSERT CHARACTER #
03940 M00S03679.virterm +++| VTCHAR = X"20"; # BLANK #
03941 M00S03680.virterm +++| VTORDN = SCREENST"INSC";
03942 M00S03681.virterm +++| IORET # RETURN #
03943 M00S03682.virterm +++|
03944 M00S03683.virterm +++| DELETECHAR: # DELETE CHARACTER #
03945 M00S03684.virterm +++| VTORDN = SCREENST"DELC";
03946 M00S03685.virterm +++| IORET # RETURN #
03947 M00S03686.virterm +++|
03948 M00S03687.virterm +++| INSLNECURL: # INSERT LINE, CURSOR LEFT #
03949 M00S03688.virterm +++| VTXCUR = 0; # FALL THROUGH TO COMMON CODE #
03950 M00S03689.virterm +++|
03951 M00S03690.virterm +++| INSERTLINE: # INSERT LINE #
03952 M00S03691.virterm +++| VTORDN = SCREENST"INSL";
03953 M00S03692.virterm +++| IORET # RETURN #
03954 M00S03693.virterm +++|
03955 M00S03694.virterm +++| DELINECURL: # DELETE LINE, CURSOR LEFT #
03956 M00S03695.virterm +++| VTXCUR = 0; # FALL THROUGH TO COMMON CODE #
03957 M00S03696.virterm +++|
03958 M00S03697.virterm +++| DELETELINE: # DELETE LINE #
03959 M00S03698.virterm +++| VTORDN = SCREENST"DELL";
03960 M00S03699.virterm +++| IORET
03961 M00S03700.virterm +++|
03962 M00S03701.virterm +++| CLRSCRCURH: # CLEAR SCREEN, CURSOR HOME #
03963 M00S03702.virterm +++| VTOXPOS = VTXCUR; # SAVE CURSOR POSITION #
03964 M00S03703.virterm +++| VTOYPOS = VTYCUR;
03965 M00S03704.virterm +++| IF TABVTHOMEU[0] THEN VTYCUR = 0; ELSE VTYCUR = VTYMAX;
03966 M00S03705.virterm +++| VTXCUR = 0; # FALL THROUGH TO COMMON CODE #
03967 M00S03706.virterm +++|