cdc:nos2.source:opl.opl871:deck:virterm.001
Deck VIRTERM Part 001
12 Modifications
Listing Sections
- Deck VIRTERM Start
- Deck VIRTERM Part 1 (Line 2187)
- Deck VIRTERM Part 2 (Line 3968)
Source
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 +++|
Proceed to Part 2
cdc/nos2.source/opl.opl871/deck/virterm.001.txt ยท Last modified: by 127.0.0.1