ibm:vm370-lib:cms:dmscat.assemble_src
Table of Contents
DMSCAT Source
References
- Fixes Applied : 0
- This Source Date : Tuesday, December 12, 1978
- Last Fix ID : [Unmodified]
Source Listing
- DMSCAT.ASSEMBLE.txt
- CAT TITLE 'DMSCAT (CMS) VM/370 - RELEASE 6' 00001000
- SPACE 2 00002000
- *. 00003000
- * MODULE: 00006000
- * 00007000
- * DMSCAT (CONATTN) 00008000
- * 00009000
- * FUNCTION: 00010000
- * 00011000
- * TO STACK A LINE OF INPUT THAT WILL LATER BE READ BY A 00012000
- * CALL TO ROUTINE CMSCRD. 00013000
- * 00014000
- * ATTRIBUTES: 00015000
- * 00016000
- * NUCLEUS RESIDENT, REENTRANT, CALLED VIA SVC 00017000
- * 00018000
- * ENTRY POINT: 00019000
- * 00020000
- * DMSCAT 00021000
- * 00022000
- * ENTRY CONDITIONS: 00023000
- * 00024000
- * GPR1 = A(PLIST) 00025000
- * 00026000
- * PLIST DC CL8'ATTN' 00027000
- * DC CL4'FIFO'|'LIFO' 00028000
- * DC AL1 (LINE LENGTH) 00029000
- * DC AL3 (LINE ADDRESS) 00030000
- * 00031000
- * EXIT CONDITION: 00032000
- * 00033000
- * GPR 15 = 0 00034000
- * 00035000
- * CALLS TO OTHER ROUTINES: 00036000
- * 00037000
- * DMSFREE - TO OBTAIN FREE STORAGE FOR A BUFFER. 00038000
- * 00039000
- * EXTERNAL REFERENCES: 00040000
- * 00041000
- * DMSFRE, DMSNUC 00042000
- * 00043000
- * TABLES/WORKAREAS: 00044000
- * 00045000
- * FROM DMSFREE - 17 DOUBLE WORDS 00046000
- * 00047000
- * REGISTER USAGE: 00048000
- * 00049000
- * GPRO-5-WORK REGS 00050000
- * GPR6-11-NOT USED 00051000
- * GPR12-BASE REGISTER 00052000
- * GPR13-RETURN REG 00053000
- * GPR14-LINKAGE 00054000
- * GPR15-LINKAGE 00055000
- * 00056000
- * OPERATION: 00057000
- * 00058000
- * DMSCAT FIRST CHECKS FOR LINES CONTAINING HT OR RT. 00059000
- * IF HT IS FOUND, THE HALT-TYPING FLAG IN MODULE DMSNUC 00060000
- * IS TURNED ON. IF RT IS FOUND, THE HALT-TYPING FLAG 00061000
- * IS TURNED OFF. IF THE LINE IS NOT HT OR RT, DMSCAT 00062000
- * GETS 17 DOUBLE WORDS FROM FREE STORAGE BY CALLED 00063000
- * DMSFREE AND MOVES THE LINE INTO THIS BUFFER. THE 00064000
- * BUFFER CHAINED TO THE STACK OF FINISHED READ 00065000
- * OPERATIONS. IF FIFO WAS SPECIFIED, THE BUFFER IS 00066000
- * PLACED AT THE END OF THE LIST. IF LIFO IS SPECIFIED, 00067000
- * THE BUFFER IS INSERTED AS THE FIRST ENTRY IN THE 00068000
- * LIST. RETURN IS THEN MADE TO THE CALLER. 00069000
- * 00070000
- *. 00071000
- EJECT 00072000
- DMSCAT START 00073000
- USING DMSCAT,R12 00074000
- USING NUCON,R0 00075000
- LR 12,15 00076000
- LR 13,14 SAVE RETURN REGISTER 00077000
- LA R2,0(R1) SAVE PARM LIST AND ZERO HI BYTE @VA02328 00078050
- LA R1,CMNDLIST ADDR IF ENTERED FROM CONSOLE @VA00951 00078100
- CR R1,R2 IS IT THAT CASE? @VA00951 00078200
- BE PARMERR YES, DON'T RECOGNIZE IT @VA00951 00078300
- L 4,12(,2) GET BUFFER ADDRESS 00079000
- CLI 12(2),2 CHECK FOR LENGTH 2 00080000
- BNE NOT2 IF NOT, DON'T CHECK FOR KT/RT 00081000
- LH R3,0(R4) WORKING COPY OF COMMAND @VA02167 00082500
- O R3,CAPSMSK CONVERT TO CAPS @VA02167 00083500
- CH R3,=CL2'HT' HALT TYPING? @VA02167 00084500
- BE KT GO TO OLD KILL TYPE RTN @VA02167 00085500
- CH R3,=CL2'RT' RESUME TYPEING? @VA02167 00086500
- BE RT 00089000
- NOT2 LA 0,17 GO GET 17 DOUBLE WORDS 00090000
- DMSFREE DWORDS=(0),TYPE=NUCLEUS,TYPCALL=BALR 00091000
- XC 0(136,1),0(1) CLEAR OUT THE STORAGE 00092000
- SR 3,3 GET (L'MSG) 00093000
- IC 3,12(,2) INTO R3 00094000
- CLI 12(2),130 INSURE NO MORE THAN 130 CHARACTERS TO 00095000
- BNH LENOK MOVE TO BUFFER 00096000
- LA 3,130 IF MORE, MOVE ONLY FIRST 130. 00097000
- LENOK LTR 3,3 CHECK FOR ZERO LENGTH 00098000
- BZ NOMOV IF ZERO, LEAVE BUFFER FULL OF ZEROS 00099000
- BCTR 3,0 ELSE, REDUCE R3 FOR 'EX' MOVE 00100000
- EX 3,MVMSG MOVE CALLER'S MSG INTO BUFFER 00101000
- NOMOV MVI 4(1),X'4A' MAKE IT LOOK LIKE AN ATTENTION READ 00102000
- MVI 5(1),130 OF 130 CHARACTERS 00103000
- LH 3,NUMFINRD UPDATE FINISHED READ COUNT 00104000
- LA 3,1(,3) .. 00105000
- STH 3,NUMFINRD .. 00106000
- LM 3,4,FSTFINRD FSTFINRD ---> R3, LSTFINRD ---> R4 00107000
- CLC 8(4,2),=CL4'LIFO' DETERMINE WHICH CHAINING OPTION 00108000
- BNE FIFO 00109000
- * PATCH CHAIN FOR "LAST-IN-FIRST-OUT" ... 00110000
- ST 3,0(,1) OLD POINTER GOES IN OUR BLOCK 00111000
- LR 3,1 NEW 'FSTFINRD' INTO R3 00112000
- LTR 4,4 ANY 'LSTFINRD' ? 00113000
- BP STM34 BP IF YES. 00114000
- B LR41 NEW 'LSTFINRD' IF NOT. 00115000
- * 00116000
- * PATCH CHAIN FOR "FIRST-IN-FIRST-OUT" ... 00117000
- FIFO LTR 4,4 ANY 'LSTFINRD' ? 00118000
- BP NEWLST BP IF YES, PATCH ONTO THE END. 00119000
- LR 3,1 IF NOT, NEW 'FSTFINRD', 00120000
- B LR41 AND NEW 'LSTFINRD' PER BELOW CODE. 00121000
- * 00122000
- NEWLST ST 1,0(,4) PATCH ONTO END OF PREVIOUS LAST BLOCK, 00123000
- LR41 LR 4,1 NEW 'LSTFINRD' 00124000
- STM34 STM 3,4,FSTFINRD STORE UPDATED 'FSTFINRD' & 'LSTFINRD' 00125000
- EXIT LR 14,13 RESTORE RETURN REGISTER 00126000
- SR 15,15 CLEAR ERROR FLAGS 00127000
- BR 14 RETURN TO SVCINT 00128000
- * 00129000
- MVMSG MVC 6(0,1),0(4) 'EX' MOVE 00130000
- SPACE 2 00131000
- KT OI MSGFLAGS,NOTYPING TURN ON NO TYPING FLAG 00132000
- B EXIT 00133000
- RT NI MSGFLAGS,255-NOTYPING TURN OFF NO TYPING FLAG 00134000
- B EXIT 00135000
- PARMERR LA R15,3 RETURN UNKNOWN COMMAND @VA00951 00135100
- OI MISFLAGS,NEGITS SET FLAG TO GO TO CP @VA06021 00135150
- LNR R15,R15 ... @VA00951 00135200
- BR R14 ... @VA00951 00135300
- SPACE 3 00136000
- DS 0F @VA02167 00136300
- CAPSMSK DC CL4' ' CONVERT LOWER TO UPPER CASE @VA02167 00136600
- LTORG 00137000
- EJECT 00138000
- NUCON 00139000
- REGEQU 00140000
- END 00141000
ibm/vm370-lib/cms/dmscat.assemble_src.txt ยท Last modified: 2023/08/06 13:35 by Site Administrator