CFT TITLE 'DMKCFT (CP) VM/370 - RELEASE 6' 00001000 ISEQ 73,80 VALIDATE INPUT SERIALIZATION 00002000 *. 00003000 * 00004000 * MODULE NAME - 00005000 * DMKCFT 00006000 * 00007000 * FUNCTION - 00008000 * TO ALLOW THE USER TO SPECIFY OPTIONS FOR 00009000 * HIS TERMINAL. 00010000 * 00011000 * ATTRIBUTES - 00012000 * REENTRANT, PAGEABLE, CALLED VIA SVC 00013000 * 00014000 * ENTRY POINTS - 00015000 * DMKCFTRM - THIS THE ONLY ENTRY POINT IN THIS MODULE 00016000 * 00017000 * ENTRY CONDITIONS - 00018000 * GPR 9 - ADDRESS OF THE COMMAND LINE BUFFER 00019000 * GPR 11- ADDRESS OF VMBLOK 00020000 * GPR 13- ADDRESS OF SAVE AREA 00021000 * 00022000 * EXIT CONDITIONS - 00023000 * NORMAL 00024000 * GPR 2 = 0 00025000 * 00026000 * ERROR 00027000 * GPR 2 = ERROR MESSAGE CODE 00028000 * 00029000 * CALLS TO OTHER ROUTINES - 00030000 * DMKSCNFD - TO LOCATE THE NEXT ARGUMENT 00031000 * DMKQCNWT - TO SEND RESPONSE MESSAGE TO TERMINAL 00032000 * DMKERMSG - TO SEND ERROR MESSAGES TO TERMINAL 00033000 * 00034000 * TABLES/WORKAREAS - 00035000 * VMBLOK, RDEVBLOK 00036000 * 00037000 * REGISTER USAGE - 00038000 * GPR 0 - LENGTH OF ARGUMENT IN COMMAND LINE BUFFER 00039000 * GPR 1 - ADDRESS OF ARGUMENT IN COMMAND LINE BUFFER 00040000 * GPR 2 - PARAMETER REGISTER FOR CALLED ROUTINES 00041000 * GPR 3 - ADDRESS OF THE FIRST ARGUMENT OF A PAIR 00042000 * GPR 4 - LENGTH OF SECOND ARGUMENT OF A PAIR 00043000 * GPR 5 - ADDRESS OF THE SECOND ARGUMENT OF A PAIR 00044000 * GPR 6 - RETURN ADDRESS IF 'ON' SPECIFIED 00045000 * GPR 7 - RETURN ADDRESS IF 'OFF' SPECIFIED 00046000 * GPR 8 - ADDRESS OF TERMINAL RDEVBLOK 00047000 * GPR 9 - ADDRESS OF THE COMMAND LINE BUFFER 00048000 * GPR 10-ADDRESS OF SYSLOCS 00049000 * GPR 11- ADDRESS OF VMBLOK 00050000 * GPR 12- BASE REGISTER FOR THE MODULE 00051000 * GPR 13- ADDRESS OF SAVEAREA 00052000 * GPR 14- LINKAGE REGISTER 00053000 * GPR 15- LINKAGE REGISTER 00054000 * 00055000 * NOTES - 00056000 * NONE 00057000 * 00058000 * 00059000 * COMMAND FORMAT - 00060000 * 00061000 * +------------+-------------------------------+ 00062000 * | TERMINAL | CHARDEL ON | 00063000 * | TERM | LINEDEL OFF | 00064000 * | | LINEND (CHAR) | 00065000 * | | ESCAPE | 00066000 * | | TABCHAR | 00066500 * | | | 00067000 * | | APL | 00068000 * | | ATTN | HRC101DK 00069090 * | | AUTOCR | HRC101DK 00069180 * | | HILIGHT ON | HRC101DK 00069270 * | | HOLD OFF | HRC101DK 00069360 * | | MASK | HRC101DK 00069450 * | | TEXT | 00070100 * | | | HRC101DK 00071190 * | | TIMESTMP ON|OFF | HRC101DK 00071380 * | | TIMESTAMP ON|OFF | HRC101DK 00071570 * | | | 00072000 * | | LINESIZE NNN | 00073000 * | | | 00074000 * | | MORE NNN NNN | HRC101DK 00074300 * | | | HRC101DK 00074600 * | | MODE CP | 00075000 * | | VM | 00076000 * +------------+-------------------------------+ 00077000 * 00078000 * 00079000 * OPERATION - 00080000 * 00081000 * 1. CALL DMKSCNFD TO LOCATE THE NEXT ARGUMENT IN THE COMMAND 00082000 * LINE. IF NONE FOUND AND NO PREVIOUS SET OF ARGUMENTS 00083000 * HAVE BEEN PROCESSED, CALL DMKERMSG TO SEND DMKCFT026E 00084000 * ERROR MESSAGE. IF NO ARGUMENT FOUND AND PREVIOUS PROCESS- 00085000 * ING HAS BEEN DONE, CALL DMKQCNWT TO OUTPUT 'COMMAND 00086000 * COMPLETE' MESSAGE AND EXIT. 00087000 * 2. SAVE THE LENGTH AND ADDRESS OF THE FIRST ARGUMENT OF THE 00088000 * SET, SET A FLAG TO INDICATE THIS, AND CALL DMKSCNFD TO 00089000 * LOCATE THE SECOND ARGUMENT OF THE SET. IF NONE FOUND, CALL 00090000 * DMKERMSG TO SEND DMKCFT026E ERROR MESSAGE. 00091000 * 3. COMPARE THE FIRST ARGUMENT AGAINST A LIST OF VALID 00092000 * ARGUMENTS. IF GET NO MATCHES, CALL DMKERMSG TO SEND 00093000 * DMKCFT002E ERROR MESSAGE. 00094000 * 4. IF MATCH IS FOUND, CHECK THE ARGUMENT FOR VALID ABREV- 00095000 * IATION. IF NOT THE PROPER ABREVIATION, GO BACK TO STEP 3 00096000 * TO CONTINUE SCAN OF THE LIST. IF GOOD ,GO TO THE PROPER 00097000 * SUBROUTINE TO HANDLE THE REQUEST. 00098000 * 5. APL - TEST IF THE TERMINAL IS A TTY. IF SO, CALL DMKERMSG 00099000 * TO SEND ERROR MESSAGE DMKCFT006E. IF TERMINAL IS OTHER THAN 00100000 * A TTY, GO TO STEP 12 TO INTERROGATE THE SECOND ARGUMENT. 00101000 * IF ARGUMENT IS 'ON', RETURN TO STEP 5B. IF 'OFF' RETURN 00102000 * TO STEP 5C. IF NEITHER, RETURN TO STEP 5A. 00103000 * 5A. CALL DMKERMSG TO SEND DMKCFT002E ERROR MESSAGE. 00104000 * 5B. CHECK IF 'APL' ALREADY ON. IF IT IS, GO TO STEP 1. IF 00105000 * NOT, TURN THE 'APL' BIT IN THE RDEVTMCD FIELD OF 00106100 * THE TERMINAL RDEVBLOK ON AND THE 'TEXT' BIT OFF. 00106200 * GO TO STEP 1. 00106300 * 5C. CHECK IF 'APL' ALREADY OFF. IF SO, GO TO STEP 1. IF NOT, 00108000 * SUBTRACT '8' FROM THE RDEVTMCD FIELD AND GO TO STEP 1. 00109000 * 5D. TEXT - TEST IF THE TERMINAL IS A 3277. IF NOT, 00109010 * CALL DMKERMSG TO SEND ERROR MESSAGE DMKCFT006E. 00109020 * IF TERMINAL IS A 3277, GO TO STEP 12 TO 00109030 * THE SECOND ARGUMENT. IF ARGUMENT IS 'ON', RETURN 00109040 * TO STEP 5E. IF 'OFF', RETURN TO STEP 5F. IF 00109050 * NEITHER, GO TO STEP 5A. 00109060 * 5E. CHECK IF 'TEXT' ALREADY ON. IF IT IS, GO TO 00109070 * STEP 1. IF NOT, TURN TO 'TEXT' BIT IN THE 00109080 * RDEVTMCD FIELD OF THE TERMINAL RDEVBLOK ON AND 00109090 * THE 'APL' BIT OFF. GO TO STEP 1. 00109100 * 5F. CHECK IF 'TEXT' ALREADY OFF. IF SO, GO TO STEP 1. 00109110 * IF NOT, TURN OFF THE 'TEXT' BIT IN THE RDEVTMCD 00109120 * FIELD AND GO TO STEP 1. 00109130 * 6. CHARDEL - GO TO STEP 12 TO INTERROGATE SECOND ARGUMENT. 00110000 * IF 'ON', RETURN TO STEP 6B. IF 'OFF', RETURN TO STEP 6C. 00111000 * IF 'CHAR', RETURN TO STEP 6A. 00112000 * 6A. MOVE THE SPECIFIED CHARACTER INTO THE RDEVCDEL FIELD OF 00113000 * THE TERMINAL RDEVBLOK AND GO TO STEP 1. 00114000 * 6B. MOVE THE SYSTEM DEFAULT CHARDEL CHARACTER FROM 00115000 * DMKSYSCD IN SYSLOCS TO THE RDEVCDEL FIELD AND GO TO 00116000 * STEP 1. 00117000 * 6C. ZERO OUT THE RDEVCDEL FIELD AND GO TO STEP 1. 00118000 * 7. LINEDEL - GO TO STEP 12 TO INTERROGATE THE SECOND 00119000 * ARGUMENT.IF 'ON' RETURN TO STEP 7B--IF 'OFF' RETURN TO 00120000 * STEP 7C--IF A CHARACTER ,RETURN TO STEP 7A. 00121000 * 7A. MOVE THE ENTERED CHARACTER INTO THE RDEVLDEL FIELD OF 00122000 * THE RDEVBLOK AND GO TO STEP 1. 00123000 * 7B. MOVE THE SYSTEM DEFAULT LINE DELETE CHARACTER FROM THE 00124000 * DMKSYSLD FIELD IN SYSLOCS TO RDEVLDEL AND GO TO STEP 1. 00125000 * 7C. ZERO OUT THE RDEVLDEL FIELD AND GO TO STEP 1. 00126000 * 8. LINEND - GO TO STEP 12 TO INTERROGATE THE SECOND ARGUMENT. 00127000 * IF 'ON' RETURN TO STEP 8B -- IF 'OFF', RETURN TO STEP 8C 00128000 * AND IF CHARACTER, RETURN TO STEP 8A. 00129000 * 8A. MOVE THE SPECIFIED CHARACTER INTO THE RDEVLEND FIELD OF 00130000 * THE TERMINAL RDEVBLOK AND GO TO STEP 1. 00131000 * 8B. MOVE THE SYSTEM DEFAULT LINE END CHARACTER FROM THE 00132000 * DMKSYSLE FIELD OF SYSLOCS AND GO TO STEP 1. 00133000 * 8C. ZERO OUT THE RDEVLEND FIELD AND GO TO STEP 1. 00134000 * 9. ESCAPE - GO TO STEP 12 TO INTERROGATE THE SECOND ARGUMENT. 00135000 * IF 'ON', RETURN TO STEP 9B-- IF 'OFF' RETURN TO STEP 9C 00136000 * AND IF A CHARACTER, RETURN TO STEP 9A. 00137000 * 9A. MOVE THE SPECIFIED CHARACTER INTO THE RDEVESCP FIELD OF 00138000 * RDEVBLOK FOR THE TERMINAL AND GO TO STEP 1. 00139000 * 9B. MOVE THE SYSTEM DEFAULT ESCAPE CHARACTER FROM THE 00140000 * DMKSYSES FIELD OF SYSLOCS TO THE RDEVESCP FIELD OF THE 00141000 * TERMINAL RDEVBLOK AND GO TO STEP 1. 00142000 * 9C. ZERO OUT THE RDEVESCP FIELD IN THE RDEVBLOK AND GO TO 00143000 * STEP 1. 00144000 * 9.1. TABCHAR - INVOKE STEP 12 TO DETERMINE WHETHER 'ON', 'OFF', 00144070 * OR 'CHAR' WAS SPECIFIED AS THE ARGUMENT FOR THE TABCHAR. 00144140 * IF 'ON' RETURN TO STEP 9.1B, IF 'OFF' RETURN TO STEP 9.1C, 00144210 * OR IF A CHARACTER RETURN TO STEP 9.1A. 00144280 * 9.1A. CHECK THAT THE SPECIFIED CHARACTER IS NOT ALPHABETIC, 00144350 * NUMERIC, OR A 3270 CONTROL CHARACTER; IF SO, MOVE IT INTO 00144420 * THE VMGRFTAB FIELD OF THE USER'S VMBLOK, OTHERWISE, DON'T 00144490 * CHANGE VMGRFTAB AND SEND AN INVALID OPERAND MESSAGE. 00144560 * 9.1B. MOVE THE SYSTEM DEFAULT TAB CHAR (X'6A') INTO THE USER'S 00144630 * VMGRFTAB AND GO TO STEP 1. 00144700 * 9.1C. ZERO OUT THE USER'S VMGRFTAB FIELD OF THE VMBLOK AND THEN 00144770 * GO TO STEP 1. 00144840 * 10. LINESIZE - CALL DMKCVTDB TO CONVERT THE SECOND ARGUMENT 00145000 * TO BINARY. IF THE CONVERT FAILS, CALL DMKERMSG TO SEND 00146000 * DMKCFT002E ERROR MESSAGE.THEN CHECK IF A LINESIZE OF ZERO 00147000 * WAS SPECIFIED. IF SO , CALL DMKERMSG TO SEND DMKCFT002E 00148000 * ERROR MESSAGE. IF NUMBER IS OK, STORE THE NEW 00149000 * LINESIZE INTO THE RDEVLLEN FIELD OF THE TERMINAL 00150000 * RDEVBLOK AND GO TO STEP 1. 00151000 * 11. MASK - GO TO STEP 12 TO INTERROGATE THE SECOND ARGUMENT. 00152000 * IF 'ON' RETURN TO STEP 11B -- IF 'OFF' , RETURN TO 00153000 * STEP 11C -- AND IF NEITHER, RETURN TO STEP 11A. 00154000 * 11A. CALL DMKERMSG TO SEND ERROR MESSAGE DMKCFT002E. 00155000 * 11B. TURN OFF THE RDEVPSUP FLAG IN THE RDEVFLAG FIELD 00156000 * OF THE TERMINAL RDEVBLOK AND GO TO STEP 1. 00157000 * 11C. TURN ON THE RDEVPSUP FLAG IN THE RDEVFLAG FIELD 00158000 * OF THE TERMINAL RDEVBLOK AND GO TO STEP 1. 00159000 * 12. THIS IS A SUBROUTINE TO CHECK SECOND ARGUMENT OF A SET. 00160000 * CHECK IF 'OFF'. IF IT IS RETURN ON REGISTER 7. IF NOT 00161000 * CHECK FOR 'ON'. IF IT IS, RETURN ON REGISTER 6. IF 00162000 * NEITHER OF THESE, RETURN ON REGISTER 14. 00163000 * 13. MODE OPTION, CHECK FOR VALID ARG, CP OR VM. 00164000 * SET THE APPROPRIATE VMBLOK STATUS OR ISSUE ERROR MSG 00165000 * 00166000 * 00167000 * RESPONSES - 00168000 * NONE 00169000 * 00170000 * ERROR MESAGES - 00171000 * DMKCFT002E INVALID OPERAND - (OPERAND) 00172000 * DMKCFT006E INVALID DEVICE TYPE - (ADDR) 00173000 * DMKCFT026E OPERAND MISSING OR INVALID 00174000 * 00175000 *. 00176000 COPY OPTIONS @V407510 00176100 EJECT 00176200 SPACE 3 00177000 DMKCFT CSECT 00178000 SPACE 2 00179000 MODID DC CL8'DMKCFT' 00180000 SPACE 2 00181000 EXTRN DMKSCNFD 00182000 EXTRN DMKCVTDB 00183000 EXTRN DMKCVTBH 00184000 EXTRN DMKSCNVD @V200820 00185000 EXTRN DMKERMSG 00186000 EXTRN DMKTBLGR @V60A6B6 00186500 SPACE 2 00187000 USING PSA,R0 00188000 USING VMBLOK,R11 00189000 USING SAVEAREA,R13 00190000 SPACE 2 00191000 FIRSTARG EQU X'80' INDICATE THAT A FIRST ARGUMENT WAS SPEC. 00192000 SECNDARG EQU X'40' INDICATE THAT A SECOND ARG. WAS SPEC. 00193000 TERMDONE EQU X'20' AT LEAST ONE TERM. COMM. PROCESSED 00194000 ZIP EQU X'00' USED TO ZERO FIELDS 00195000 EJECT 00196000 DMKCFTRM RELOC 00197000 MVC SAVEWRK1(4),ZEROES ZERO FLAG AREA 00198000 CFTARG1 CALL DMKSCNFD LOCATE FIRST ARGUMENT 00199000 BZ CFTSAV1 HAVE ARGUMENT - GO PROCESS 00200000 TM SAVEWRK1,TERMDONE ANY PROCESSING DONE ? 00201000 BO TERMEXIT YES - TAKE BRANCH 00202000 B CFT026 NO ARGUMENTS FOUND 00203000 CFTSAV1 LR R2,R0 SAVE LENGTH OF FIRST ARG. 00204000 LR R3,R1 SAVE ADDRESS OF FIRST ARG. 00205000 OI SAVEWRK1,FIRSTARG INDICATE FIRST ARG RECIEVED 00206000 CALL DMKSCNFD LOCATE SECOND ARGUMENT 00207000 BNZ CFT026 NOT A PAIR OF ARGUMENTS 00208000 LR R4,R2 LENGTH OF FIRST ARGUMENT TO R4 00209000 BCTR R4,0 MINUS ONE FOR 'EX' 00210000 LA R5,TERMBGN INITIALIZE BXLE REGS FOR SCAN 00211000 LA R6,TERMLEN LENGTH OF ONE ENTRY @V200820 00212000 LA R7,TERMEND . . . 00213000 SPACE 00214000 SCANLOOP EX R4,TERMCLC COMPARE ARGUMENT TO LIST 00215000 BE TERMABRV IF GET A HIT, GO CHECK ABREVIATION 00216000 SPACE 00217000 TERMBXLE BXLE R5,R6,SCANLOOP GO BACK IF HAVE MORE IN LIST 00218000 B CFT002 SEND ERROR MESSAGE IF CAN'T FIND 00219000 SPACE 00220000 TERMABRV EQU * HRC101DK 00221190 SR R8,R8 HRC101DK 00221380 IC R8,9(,R5) GET MINIMUM LENGTH HRC101DK 00221570 BCTR R8,0 SET UP FOR 'EX' 00222000 EX R8,TERMCLC MAKE SURE HAVE ENOUGH CHARACTERS 00223000 BNE TERMBXLE GO SCAN SOME MORE IF NOT CORRECT 00224000 LR R6,R5 ADDRESS OF LIST ENTRY TO R6 00225000 LR R5,R1 ADDRESS OF SECOND ARGUMENT TO R5 00226000 LR R4,R0 LENGTH OF SECOND ARGUMENT 00227000 L R8,VMTERM LOAD TERMINAL RDEVBLOK ADDRESS 00228000 USING RDEVBLOK,R8 00229000 L R10,ASYSLC ADDRESS OF SYSLOCS 00230000 USING SYSLOCS,R10 00231000 LH R15,10(0,R6) PICK UP DISPLACEMENT TO SUBROUTIN@V200820 00232000 B DMKCFT(R15) GO TO IT @V200820 00233000 EJECT 00234000 TERMBGN DS 0F START OF DECODING TABLE @V200820 00235000 DC C'AUTOCR ',H'2',AL2(AUTOCR-DMKCFT) HRC101DK 00236090 DC C'HOLD ',H'2',AL2(HOLD-DMKCFT) HRC101DK 00236180 DC C'MORE ',H'4',AL2(MORE-DMKCFT) HRC101DK 00236270 DC C'TIMESTAMP',AL1(4),AL2(STAMP-DMKCFT) HRC101DK 00236360 DC C'HILIGHT ',H'4',AL2(HIGHLITE-DMKCFT) HRC101DK 00236450 DC C'CHARDEL ',H'2',AL2(CHARDEL-DMKCFT) HRC101DK 00236540 DC C'LINEDEL ',H'5',AL2(LINEDEL-DMKCFT) @V200820 00237000 DC C'LINEND ',H'5',AL2(LINEND-DMKCFT) @V200820 00238000 DC C'ESCAPE ',H'2',AL2(ESCAPE-DMKCFT) @V200820 00239000 DC C'TABCHAR ',H'3',AL2(TABCHAR-DMKCFT) @V60A6B6 00239500 DC C'MASK ',H'1',AL2(MASK-DMKCFT) @VM08722 00240000 DC C'ATTN ',H'2',AL2(TERMATTN-DMKCFT) @V200820 00241000 DC C'APL ',H'3',AL2(APL-DMKCFT) @V200820 00242000 DC C'TEXT ',H'4',AL2(TEXT-DMKCFT) @V387398 00242100 DC C'LINESIZE',H'5',AL2(LINESIZE-DMKCFT) @V200820 00243000 DC C'MODE ',H'3',AL2(MODE-DMKCFT) HRC101DK 00244590 TERMEND DC C'TIMESTMP',H'6',AL2(STAMP-DMKCFT) HRC101DK 00245180 TERMLEN EQU *-TERMEND LENGTH OF ONE ENTRY @V200820 00246000 TERMCLC CLC 0(0,R3),0(R5) EXECUTED COMPARE 00247000 EJECT 00248000 APL EQU * 00249000 LTR R8,R8 IS THERE A REAL DEVICE BLOCK ? @V200820 00250000 BNP TONDONE NO -- DON'T DO ANYTHING @V200820 00251000 CLI RDEVTYPC,CLASTERM IS THIS A LOCAL TERMINAL ? @V200820 00252000 BNE TSTGRAF NO,TEST FOR GRAF DEVICE @V305798 00253000 CLI RDEVTYPE,TYPBSC IS IT A REMOTE 3270 ? @V305798 00254000 BNE BSCEND NO,ERROR @V305798 00255000 BAL R3,GETNICB FIND NICBLOK @V305798 00256000 USING NICBLOK,R2 @V305798 00257000 LA R6,APLRON LOAD TURN ON @V305798 00258000 LA R7,APLROFF LOAD TURN OFF @V305798 00259000 B APLRCHK @V305798 00260000 BSCEND EQU * @V305798 00261000 CLI RDEVTYPE,TYPTTY TELEGRAPH TERMINAL ? @V200820 00262000 BNL CFT006 YES - APL NOT VALID HERE @V200820 00263000 B SETAPL SET ON RETURN @V305798 00264000 TSTGRAF CLI RDEVTYPC,CLASGRAF IS IT A GRAF TYPE ? @V305798 00265000 BNE CFT006 NO, ERROR @V305798 00266000 TM RDEVTYPE,TYP3277+TYP3278 IS IT A 3270 TYPE? @V60A6B6 00267000 BZ CFT006 NO, ERROR @V60A6B6 00268000 SETAPL LA R6,APLON SET RETURN FOR ON @V305798 00269000 LA R7,APLOFF RETURN FOR 'OFF' 00270000 APLRCHK EQU * @V305798 00271000 BAL R14,TSTONOFF GO DO TEST FOR ON/OFF 00272000 B LOADARG2 IF RETURN HERE = BAD ARGUMENT 00273000 SPACE 00274000 APLON OI RDEVTMCD,RDEVAPLP SET THE APL BIT - X'08' @V200820 00275000 NI RDEVTMCD,255-RDEVTEXT TURN OFF TEXT BIT @V387398 00275100 B TONDONE . . . 00276000 SPACE 00277000 APLOFF NI RDEVTMCD,255-RDEVAPLP TURN OFF APL BIT @V200820 00278000 B TONDONE . . . 00279000 APLRON OI NICTMCD,NICAPL @V305798 00280000 NI NICTMCD,255-NICTEXT TURN OFF TEXT BIT @V387398 00280100 B TONDONE TURN APL ON @V305798 00281000 APLROFF NI NICTMCD,255-NICAPL TURN APL OFF @V305798 00282000 B TONDONE @V305798 00283000 EJECT 00284000 TEXT EQU * @V387398 00284010 LTR R8,R8 IS THERE A REAL DEVICE BLOCK ? @V387398 00284020 BNP TONDONE NO -- DON'T DO ANYTHING @V387398 00284030 CLI RDEVTYPC,CLASTERM IS THIS A LOCAL TERMINAL ? @V387398 00284040 BNE TTSTGRAF NO,TEST FOR GRAF DEVICE @V387398 00284050 CLI RDEVTYPE,TYPBSC IS IT A REMOTE 3270 ? @V387398 00284060 BNE CFT006 NO,ERROR @V387398 00284070 BAL R3,GETNICB FIND NICBLOK @V387398 00284080 USING NICBLOK,R2 @V387398 00284090 LA R6,TEXTRON LOAD TURN ON @V387398 00284100 LA R7,TEXTROFF LOAD TURN OFF @V387398 00284110 B TEXTRCHK @V387398 00284120 TTSTGRAF CLI RDEVTYPC,CLASGRAF IS IT A GRAF TYPE ? @V387398 00284130 BNE CFT006 NO, ERROR @V387398 00284140 TM RDEVTYPE,TYP3277+TYP3278 IS IT A 3270 TYPE ? @V60A6B6 00284150 BZ CFT006 NO, ERROR @V60A6B6 00284160 LA R6,TEXTON SET RETURN FOR ON @V387398 00284170 LA R7,TEXTOFF RETURN FOR 'OFF' @V387398 00284180 TEXTRCHK EQU * @V387398 00284190 BAL R14,TSTONOFF GO DO TEST FOR ON/OFF @V387398 00284200 B LOADARG2 IF RETURN HERE = BAD ARGUMENT @V387398 00284210 SPACE 00284220 TEXTON OI RDEVTMCD,RDEVTEXT SET THE TEXT BIT - X'20' @V387398 00284230 NI RDEVTMCD,255-RDEVAPLP TURN OFF APL BIT @V387398 00284240 B TONDONE . . . @V387398 00284250 SPACE 00284260 TEXTOFF NI RDEVTMCD,255-RDEVTEXT TURN OFF TEXT BIT @V387398 00284270 B TONDONE . . . @V387398 00284280 TEXTRON OI NICTMCD,NICTEXT TURN TEXT ON @V387398 00284290 NI NICTMCD,255-NICAPL TURN APL OFF @V387398 00284300 B TONDONE @V387398 00284310 TEXTROFF NI NICTMCD,255-NICTEXT TURN TEXT OFF @V387398 00284320 B TONDONE @V387398 00284330 EJECT 00284340 CHARDEL LA R6,CHARON RETURN FOR ON 00285000 LA R7,CHAROFF RETURN FOR OFF 00286000 BAL R14,TSTCHAR GO TEST FOR ON/OFF/CHAR @VA04451 00287500 * 00288000 * RETURN HERE IF CHAR WAS SPECIFIED 00289000 * 00290000 MVC VMTCDEL(1),0(R5) MOVE IN SPECIFIED CHARACTER @V200820 00291000 B TONDONE . . 00292000 SPACE 00293000 CHARON MVC VMTCDEL(1),DMKSYSCD MOVE IN SYSTEM DEFAULT CHAR @V200820 00294000 B TONDONE 00295000 SPACE 00296000 CHAROFF MVI VMTCDEL,X'00' DO NOT USE CHARACTER DELETE @V200820 00297000 B TONDONE 00298000 EJECT 00299000 LINEDEL LA R6,LINDON RETURN FOR ON 00300000 LA R7,LINDOFF RETURN FOR OFF 00301000 BAL R14,TSTCHAR GO TEST FOR ON/OFF/CHAR @VA04451 00302500 * 00303000 * RETURN HERE IF CHAR SPECIFIED 00304000 * 00305000 MVC VMTLDEL(1),0(R5) MOVE IN SPECIFIED CHARACTER @V200820 00306000 B TONDONE . . 00307000 LINDON DS 0H @VA09934 00307100 TM RDEVTMCD,RDEVUSC8 IS IT ASCII TYPE ??? @VA09934 00307200 BZ NOTASC NO...BRANCH @VA09934 00307300 MVI VMTLDEL,BRACKET SET LINE DEL TO LEFT BRACKET @VA09934 00307400 B TONDONE @VA09934 00307500 SPACE 00308000 NOTASC DS 0H @VA09934 00309100 MVC VMTLDEL(1),DMKSYSLD MOVE IN SYSTEM DEFAULT CHAR @VA09934 00309200 B TONDONE . . 00310000 SPACE 00311000 LINDOFF MVI VMTLDEL,X'00' DO NOT USE LINE DELETE @V200820 00312000 B TONDONE 00313000 EJECT 00314000 LINEND LA R6,LINENDON RETURN FOR ON 00315000 LA R7,LINENOFF RETURN FOR OFF 00316000 BAL R14,TSTCHAR GO TEST FOR ON/OFF/CHAR @VA04451 00317500 * 00318000 * RETURN HERE FOR CHAR 00319000 * 00320000 MVC VMTLEND(1),0(R5) MOVE IN SPECIFIED CHARACTER @V200820 00321000 B TONDONE . . 00322000 SPACE 00323000 LINENDON MVC VMTLEND(1),DMKSYSLE MOVE IN SYSTEM DEFAULT CHAR @V200820 00324000 B TONDONE . . 00325000 SPACE 00326000 LINENOFF MVI VMTLEND,X'00' DO NOT USE LOGICAL LINE END @V200820 00327000 B TONDONE 00328000 EJECT 00329000 ESCAPE LA R6,ESCPON RETURN IF 'ON' 00330000 LA R7,ESCPOFF RETURN IF 'OFF' 00331000 BAL R14,TSTCHAR GO TEST FOR ON/OFF/CHAR @VA04451 00332500 MVC VMTESCP(1),0(R5) MOVE IN SPECIFIED CHARACTER @V200820 00333000 B TONDONE 00334000 SPACE 00335000 ESCPON MVC VMTESCP(1),DMKSYSES MOVE IN SYSTEM DEFAULT CHAR @V200820 00336000 B TONDONE 00337000 SPACE 00338000 ESCPOFF MVI VMTESCP,X'00' DO NOT USE ESCAPE CHARACTER @V200820 00339000 B TONDONE 00340000 EJECT 00341000 TABCHAR LA R6,TABCHON RETURN IF 'ON' @V60A6B6 00341040 LA R7,TABCHOFF RETURN IF 'OFF' @V60A6B6 00341080 BAL R14,TSTCHAR GO TEST FOR ON/OFF/CHAR @V60A6B6 00341120 L R7,=A(DMKTBLGR) MUST TRANSLATE 3270 @V60A6B6 00341160 TR 0(1,R5),0(R7) ORDERS TO BLANKS @V60A6B6 00341200 CLI 0(R5),X40 IS CHARACTER A BLANK ? @V60A6B6 00341240 BE LOADARG2 IF YES, THEN THIS IS AN ERROR @V60A6B6 00341280 MVC VMGRFTAB(1),0(5) MOVE IN SPECIFIED CHARACTER @V60A6B6 00341320 B TONDONE @V60A6B6 00341360 SPACE 00341400 TABCHON MVI VMGRFTAB,X6A MOVE IN SYSTEM DEFAULT CHAR @V60A6B6 00341440 B TONDONE @V60A6B6 00341480 SPACE 00341520 TABCHOFF MVI VMGRFTAB,X00 ZERO THE LOGICAL TAB CHARACTER @V60A6B6 00341560 B TONDONE @V60A6B6 00341600 SPACE 00341640 X00 EQU X'00' @V60A6B6 00341680 X40 EQU X'40' @V60A6B6 00341720 X6A EQU X'6A' @V60A6B6 00341760 EJECT HRC101DK 00341762 HIGHLITE EQU * HRC101DK 00341764 LA R6,HILION RETURN FOR ON HRC101DK 00341766 LA R7,HILIOFF SET UP FOR 'OFF' HRC101DK 00341768 BAL R14,TSTONOFF GO CHECK ARGUMENT HRC101DK 00341770 * HRC101DK 00341772 * IF RETURN HERE - HAVE BAD ARGUMENT HRC101DK 00341774 * HRC101DK 00341776 B LOADARG2 G0 SEND ERROR MESSAGE HRC101DK 00341778 SPACE , HRC101DK 00341780 HILIOFF NI VMMLVL2,X'FF'-VMMHLITE SET FLAG OFF HRC101DK 00341782 B TONDONE CONTINUE HRC101DK 00341784 SPACE , HRC101DK 00341786 HILION OI VMMLVL2,VMMHLITE FLAG FOR HILIGHT ON HRC101DK 00341788 B TONDONE CONTINUE HRC101DK 00341790 EJECT 00341800 LINESIZE LR R0,R4 LENGTH TO REG 0 00342000 LR R1,R5 ADDRESS TO REG 1 00343000 CALL DMKCVTDB GO CONVERT TO BINARY 00344000 BNZ LOADARG2 BAD CONVERT 00345000 CL R1,F255 ANYTHING OVER 255 IS ERROR 00346000 BH LOADARG2 .......... 00347000 N R1,F255 SAVE ONLY LOW ORDER BYTE 00348000 LTR R1,R1 IS LINESIZE ZERO ? 00349000 BZ LOADARG2 YES - NO CAN DO 00350000 LTR R8,R8 IS THERE A TERMINAL RDEVBLOK ? @V200820 00351000 BNP TONDONE NO -- DON'T DO ANYTHING @V200820 00352000 CLI RDEVTYPC,CLASTERM IS THIS A LOCAL TERMINAL @V2D3931 00353000 BNE *+12 NO, BYPASS TEST FOR 3270 REMOTE @V2D3931 00354000 CLI RDEVTYPE,TYPBSC IS THIS A 3270 BISYNC LINE @V2D3931 00355000 BE *+12 YES, GET POINTER TO NICBLOK @V2D3931 00356000 CLI RDEVTYPC,CLASSPEC IS THIS A LOCAL TERMINAL ? @V200820 00357000 BNE SETRLEN YES -- SET LINE LENGTH @V200820 00358000 BAL R3,GETNICB GET THE NICBLOK ADDRESS @V200820 00359000 USING NICBLOK,R2 @V200820 00360000 STC R1,NICLLEN SET THE TERMINAL LINE LENGTH @V200820 00361000 B TONDONE ALL DONE HERE @V200820 00362000 SETRLEN EQU * SET LINE LENGTH FOR LOCAL TERM @V200820 00363000 STC R1,RDEVLLEN STORE NEW LINE LENGTH 00364000 B TONDONE . . 00365000 EJECT , HRC101DK 00366020 MORE DS 0H HRC101DK 00366040 ICM R2,B'0011',VMMORETM GET CURRENT VALUES HRC101DK 00366060 CLI RDEVTYPC,CLASTERM ? HRC101DK 00366080 BE CFT006 YES, ERROR HRC101DK 00366100 LR R0,R4 HRC101DK 00366120 LR R1,R5 HRC101DK 00366140 CALL DMKCVTDB CONVERT TO BINARY HRC101DK 00366160 BNZ LOADARG2 ....... HRC101DK 00366180 CL R1,F255 <= 255 HRC101DK 00366200 BH LOADARG2 ....... HRC101DK 00366220 N R2,=X'000000FF' ZERO OUT OLD HRC101DK 00366240 SLL R1,8 SHIFT INTO CORRECT POSITION HRC101DK 00366260 OR R2,R1 INSERT IT HRC101DK 00366280 CALL DMKSCNFD GET SECOND TIME VALUE HRC101DK 00366300 LR R4,R0 HRC101DK 00366320 LR R5,R1 HRC101DK 00366340 CALL DMKCVTDB CONVERT TO BINARY HRC101DK 00366360 BNZ LOADARG2 ....... HRC101DK 00366380 CL R1,F255 <= 255 HRC101DK 00366400 BH LOADARG2 ....... HRC101DK 00366420 N R2,=X'0000FF00' ZERO OUT OLD HRC101DK 00366440 OR R2,R1 INSERT IT HRC101DK 00366460 STCM R2,B'0011',VMMORETM SAVE CURRENT VALUES HRC101DK 00366480 B TONDONE HRC101DK 00366500 EJECT , HRC101DK 00366520 MASK EQU * TERMINAL MASK ON / OFF @V200820 00367000 LTR R8,R8 IS THERE A TERMINAL RDEVBLOK ? @V200820 00368000 BNP TONDONE NO -- DO NOTHING @V200820 00369000 CLI RDEVTYPC,CLASGRAF GRAPHICS TERMINAL ? @V200820 00370000 BE CFT006 YES - INVALID DEVICE TYPE @V200820 00371000 CLI RDEVTYPC,CLASTERM IS THIS A LOCAL TERMINAL @V2D3931 00372000 BNE *+12 NO, BYPASS TEST FOR 3270 REMOTE @V2D3931 00373000 CLI RDEVTYPE,TYPBSC IS THIS A 3270 REMOTE LINE @V2D3931 00374000 BE CFT006 YES, INVALID DEVICE TYPE @V2D3931 00375000 CLI RDEVTYPC,CLASSPEC 3705-BASED TERMINAL ? @V200820 00376000 BNE MASKTRM NO -- PROCESS NORMALLY @V200820 00377000 BAL R3,GETNICB GET THE NICBLOK ADDRESS @V200820 00378000 LA R6,MASKSON RETURN FOR 'ON' @V200820 00379000 LA R7,MASKSOFF RETURN FOR 'OFF' @V200820 00380000 B MASKS GO CHECK FOR ON OR OFF @V200820 00381000 MASKTRM EQU * @V200820 00382000 SWITCH SWITCH TO MAIN PROCESSOR @V407510 00382100 LA R6,MASKON RETURN FOR ON @V200820 00383000 LA R7,MASKOFF RETURN FOR OFF 00384000 MASKS EQU * @V200820 00385000 BAL R14,TSTONOFF GO - TEST FOR ON/OFF 00386000 * 00387000 * IF RETURN HERE - MEANS BAD ARGUMENT 00388000 * 00389000 B LOADARG2 GO -SEND ERROR MESSAGE 00390000 SPACE 00391000 MASKON NI RDEVFLAG,255-RDEVPSUP TURN OFF PRINT SUPPRESS FEATURE 00392000 B TONDONE . . 00393000 SPACE 00394000 MASKOFF OI RDEVFLAG,RDEVPSUP INDICAT THAT PRINT SUPP. AVAILABLE 00395000 B TONDONE ... 00396000 SPACE 00397000 MASKSON NI NICFLAG,255-NICPSUP TURN ON MASK @V200820 00398000 B TONDONE @V200820 00399000 SPACE 00400000 MASKSOFF OI NICFLAG,NICPSUP TURN OFF MASK @V200820 00401000 B TONDONE @V200820 00402000 EJECT 00403000 TERMATTN LTR R8,R8 IS THERE A TERMINAL RDEVBLOK ? @V200820 00404000 BNP TONDONE NO -- DO NOTHING @V200820 00405000 CLI RDEVTYPC,CLASGRAF GRAPHICS TERMINAL ? @V200820 00406000 BE CFT006 YES - INVALID DEVICE TYPE @V200820 00407000 CLI RDEVTYPC,CLASTERM IS THIS A LOCAL TERMINAL @V2D3931 00408000 BNE *+12 NO, BYPASS TEST FOR 3270 REMOTE @V2D3931 00409000 CLI RDEVTYPE,TYPBSC IS THIS A 3270 REMOTE LINE @V2D3931 00410000 BE CFT006 YES, INVALID DEVICE TYPE @V2D3931 00411000 CLI RDEVTYPC,CLASSPEC 3705-BASED TERMINAL ? @V200820 00412000 BNE TERMATT NO -- PROCESS NORMALLY @V200820 00413000 BAL R3,GETNICB GET THE NICBLOK ADDRESS @V200820 00414000 LA R6,ATTNSON RETURN FOR 'ON' @V200820 00415000 LA R7,ATTNSOFF RETURN FOR 'OFF' @V200820 00416000 B TERMATS GO FIND OUT WHICH IT IS @V200820 00417000 TERMATT LA R6,ATTNON RETURN FOR ON @V200820 00418000 LA R7,ATTNOFF SET UP FOR 'OFF' 00419000 TERMATS EQU * @V200820 00420000 BAL R14,TSTONOFF GO CHECK ARGUMENT 00421000 * 00422000 * IF RETURN HERE - HAVE BAD ARGUMENT 00423000 * 00424000 B LOADARG2 G0 SEND ERROR MESSAGE 00425000 SPACE 00426000 ATTNON NI RDEVTFLG,X'FF'-RDEVATOF RESET OFF FLAG FOR TERMINAL 00427000 B TONDONE CONTINUE 00428000 SPACE 00429000 ATTNOFF OI RDEVTFLG,RDEVATOF SET FLAG FOR ATTN OFF 00430000 B TONDONE CONTINUE 00431000 SPACE 00432000 ATTNSON NI NICFLAG,255-NICATOF TURN ATTN CHAR ON @V200820 00433000 B TONDONE @V200820 00434000 SPACE 00435000 ATTNSOFF OI NICFLAG,NICATOF TURN ATTN CHAR OFF @V200820 00436000 B TONDONE @V200820 00437000 EJECT HRC101DK 00438040 AUTOCR EQU * HRC101DK 00438080 LA R6,AUTOON RETURN FOR ON HRC101DK 00438120 LA R7,AUTOOFF SET UP FOR 'OFF' HRC101DK 00438160 BAL R14,TSTONOFF GO CHECK ARGUMENT HRC101DK 00438200 * HRC101DK 00438240 * IF RETURN HERE - HAVE BAD ARGUMENT HRC101DK 00438280 * HRC101DK 00438320 B LOADARG2 G0 SEND ERROR MESSAGE HRC101DK 00438360 SPACE , HRC101DK 00438400 AUTOOFF NI VMMLVL2,X'FF'-VMMAUTCR SET FLAG OFF HRC101DK 00438440 B TONDONE CONTINUE HRC101DK 00438480 SPACE , HRC101DK 00438520 AUTOON OI VMMLVL2,VMMAUTCR FLAG FOR AUTOCR ON HRC101DK 00438560 B TONDONE CONTINUE HRC101DK 00438600 EJECT HRC101DK 00438640 HOLD EQU * HRC101DK 00438680 LA R6,HOLDON RETURN FOR ON HRC101DK 00438720 LA R7,HOLDOFF SET UP FOR 'OFF' HRC101DK 00438760 BAL R14,TSTONOFF GO CHECK ARGUMENT HRC101DK 00438800 * HRC101DK 00438840 * IF RETURN HERE - HAVE BAD ARGUMENT HRC101DK 00438880 * HRC101DK 00438920 B LOADARG2 G0 SEND ERROR MESSAGE HRC101DK 00438960 SPACE , HRC101DK 00439000 HOLDON NI VMMLVL2,X'FF'-VMMNHOLD SET FLAG OFF HRC101DK 00439040 B TONDONE CONTINUE HRC101DK 00439080 SPACE , HRC101DK 00439120 HOLDOFF OI VMMLVL2,VMMNHOLD FLAG FOR NO HOLD HRC101DK 00439160 B TONDONE CONTINUE HRC101DK 00439200 EJECT , HRC101DK 00439240 STAMP EQU * HRC101DK 00439280 LA R6,STMPON RETURN FOR ON HRC101DK 00439320 LA R7,STMPOFF RETURN FOR OFF @V200820 00440000 BAL R14,TSTONOFF CHECK FOR ON OR OFF @V200820 00441000 * HRC101DK 00442190 * IF RETURN HERE - HAVE BAD ARGUMENT HRC101DK 00442380 * HRC101DK 00442570 B LOADARG2 G0 SEND ERROR MESSAGE HRC101DK 00442760 SPACE 00443000 STMPON OI VMMLEVEL,VMMSTMP TURN ON TIME STAMP @V200820 00444000 B TONDONE @V200820 00445000 SPACE 00446000 STMPOFF NI VMMLEVEL,255-VMMSTMP TURN OFF TIME STAMP @V200820 00447000 B TONDONE @V200820 00448000 SPACE 3 00449000 GETNICB EQU * SUBROUTINE TO GET NICBLOK ADDRESS@V200820 00450000 LH R2,VMTRMID 370X NCP RESOURCE REFERENCE @V200820 00451000 N R2,F4095 STRIP OFF DEVICE CODE @V200820 00452000 MH R2,=AL2(NICSIZE*8) CONVERT TO NICLIST INDEX @V200820 00453000 AL R2,RDEVNICL @V200820 00454000 BR R3 RETURN - NICBLOK IN GR2 @V200820 00455000 EJECT 00456000 SPACE 3 00457000 MODE CL R4,F2 MUST BE ONLY 2 CHARS @V200930 00458000 BNE LOADARG2 NO, ERROR @V200930 00459000 CLC 0(2,R5),=C'CP' IS IT CP ?? @V200930 00460000 BE MODCP YES, SET IT @V200930 00461000 CLC 0(2,R5),=C'VM' IS IT VM ?? @V200930 00462000 BNE LOADARG2 NO, ERROR @V200930 00463000 NI VMMLEVEL,X'FF'-VMMCPENV CPMOD FLAG OFF @V200930 00464000 B TONDONE DONE, GET NEXT @V200930 00465000 MODCP OI VMMLEVEL,VMMCPENV SET CP MODE @V200930 00466000 B TONDONE DONE, GET NEXT @V200930 00467000 SPACE 3 00468000 TONDONE OI SAVEWRK1,TERMDONE IND. THAT AT LEAST ONE ARG. PROCESS 00469000 NI SAVEWRK1,255-(FIRSTARG+SECNDARG) TURN OFF 1ST AND 2ND 00470000 B CFTARG1 GO SEE IF ANY MORE ARGUMENTS 00471000 SPACE 2 00471100 TSTCHAR EQU * @VA04451 00471300 CL R4,F1 ONE CHAR IN ARGUMENT? @VA04451 00471500 BNE TSTONOFF NO, TEST FOR ON/OFF @VA04451 00471700 CLC 0(0,R5),=X'C1' POSSIBLY ALPHANUMERIC? @VA04451 00471900 BL RETNR14 NO, VALID CHARACTER @VA04451 00472100 CLC 0(0,R5),=X'D0' IS THIS SPECIAL CHARACTER? @V60A6B6 00472140 BE RETNR14 YES, THEN VALID @V60A6B6 00472180 CLC 0(0,R5),=X'E0' OTHER SPECIAL CHARACTER? @V60A6B6 00472220 BE RETNR14 YES, VALID @V60A6B6 00472260 CLC 0(0,R5),=X'F9' IS IT ALPHANUMERIC? @VA04451 00472300 BH RETNR14 NO, VALID CHARACTER @VA04451 00472500 B LOADARG2 SEND ERROR MSG @VA04451 00472700 SPACE 2 00472900 TSTONOFF EQU * 00473000 CL R4,F1 LESS THAN 2 CHARACTERS @VA11392 00473050 BNH LOADARG2 YES, GO SEND ERROR MESSAGE @VA11392 00473100 BCTR R4,0 MINUS ONE FOR 'EX' 00476000 EX R4,COMPOFF 'OFF' ???? 00477000 BE RETOFF YES --- 00478000 EX R4,COMPON 'ON' ???? 00479000 BE RETON YES --- 00480000 LA R4,1(,R4) RESTORE BYTE COUNT FOR ERROR MESSAGE 00481000 B LOADARG2 GO SEND ERROR MESSAGE 00482000 SPACE 00483000 RETNR14 BR R14 RETURN FOR CHARACTER 00484000 RETOFF BR R7 RETURN FOR 'OFF' 00485000 RETON BR R6 RETURN FOR 'ON' 00486000 SPACE 00487000 COMPOFF CLC 0(0,R5),=C'OFF ' EXECUTED COMPARE 00488000 COMPON CLC 0(0,R5),=C'ON ' 00489000 EJECT 00490000 TERMEXIT EXIT 00491000 SPACE 4 00492000 LOADARG2 LR R2,R4 LOAD LENGTH INTO R2 00493000 LR R3,R5 LOAD ADDRESS OF BAD ARGUMENT 00494000 SPACE 00495000 CFT002 LR R0,R2 LENGTH 00496000 LR R1,R3 ADDRESS 00497000 LA R2,2 ERROR CODE 00498000 B CALLERM . . . 00499000 SPACE 00500000 CFT006 EQU * DMKCFT006E INVALID DEVICE TYPE - @V200820 00501000 SLR R1,R1 CLEAR PARM REGISTER @V200820 00502000 LA R2,006(0) MESSAGE NUMBER TO GR2 @V200820 00503000 SLR R0,R0 IF ANY DATA, WILL BE IN GR1 @V200820 00504000 LH R8,VMVTERM DISP TO VIRTUAL CONSOLE VDEVBLOK @V200820 00505000 LTR R8,R8 IS THERE ONE ? @V200820 00506000 BM CALLERM NO -- MESSAGE WITH NO DATA @V200820 00507000 AL R8,VMDVSTRT GET THE VDEVBLOK ADDRESS @V200820 00508000 CALL DMKSCNVD COMPUTE 'CCU' FORM OF VADDR @V200820 00509000 CALL DMKCVTBH CONVERT THE ADDRESS TO HEX 00510000 ICM R1,8,X40FFS BLANK THE HIGH BYTE 00511000 SLR R0,R0 ZIP GPR 0 00512000 B CALLERM GO SEND THE ERROR MESSAGE 00513000 SPACE 00514000 CFT026 LA R2,26 ERROR CODE 00515000 SR R1,R1 ZERO PARM REG 00516000 SPACE 00517000 CALLERM ICM R0,14,MODID+3 LOAD MODULE ID 00518000 CALL DMKERMSG . . . 00519000 * 00520000 * DMKERM WILL RETURN DIRECTLY TO DMKCFM - NOT HERE -- 00521000 * 00522000 BRACKET EQU X'AD' LINE DEL CHARACTER FOR ASCII @VA09934 00522100 EJECT 00523000 LTORG 00524000 EJECT 00525000 PSA , @V306638 00526000 COPY DEVTYPES @V306638 00527000 COPY EQU @V306638 00528000 COPY NETWORK @V306638 00529000 COPY RBLOKS @V306638 00530000 COPY SAVE @V306638 00531000 SYSLOCS , @V306638 00532000 COPY VMBLOK @V306638 00533000 END 00534000