ibm:vm370-lib:cms:dmsgio.assemble_src
Table of Contents
DMSGIO Source
References
- Fixes Applied : 1
- This Source Date : Tuesday, December 12, 1978
- Last Fix ID : [HRC310DS]
Source Listing
- DMSGIO.ASSEMBLE.txt
- GIO TITLE 'DMSGIO (CMS) VM/370 - RELEASE 6' 00001000
- SPACE 2 00002000
- *. 00003000
- ************************************************************ 00004000
- * 00005000
- * MODULE NAME: 00006000
- * 00007000
- * DMSGIO 00008000
- * 00009000
- * FUNCTION: 00010000
- * 00011000
- * CREATE THE DIAGNOSE AND CCW'S FOR AN I/O OPERATION TO 00012000
- * A DISPLAY TERMINAL FROM A VIRTUAL MACHINE. 00013000
- * 00014000
- * ATTRIBUTES: 00015000
- * 00016000
- * DISK RESIDENT 00017000
- * 00018000
- * ENTRY POINTS: 00019000
- * 00020000
- * DMSGIO 00021000
- * 00022000
- * ENTRY CONDITIONS: 00023000
- * 00024000
- * GPR1 - A(PLIST) 00025000
- * PLIST - A(BUFFER) ADDRESS OF INPUT BUFFER 00026000
- * A(LINE) ADDRESS OF DISPLAY LINE 00027000
- * A(COUNT) ADDRESS OF NUMBER OF BYTES TO 00028000
- * BE WRITTEN 00029000
- * A(FLAG) ADDRESS OF FUNCTION FLAG 00030000
- * 00031000
- * GPR13 - EDCB ADDRESS IF USED BY CMS EDITOR 00032000
- * OR 00033000
- * MUST BE ZERO IF NOT CALLED BY EDITOR 00034000
- * 00035000
- * OUTPUT: 00036000
- * 1. A DIAGNOSE IS ISSUED TO CP TO WRITE TO THE DISPLAY 00037000
- * TERMINAL. 00038000
- * 2. R15 CONTAINS: 00039000
- * A. 0 IF THE I/O OPERATION WAS SUCCESSFUL 00040000
- * B. NON-ZERO IF AN I/O ERROR OCURRED 00041000
- * 00042000
- * EXIT CONDITIONS: 00043000
- * 00044000
- * NORMAL - GPR15 = 0 00045000
- * 00046000
- * ERROR - GPR15 ยฌ= 0 00047000
- * 00048000
- * CALLS TO OTHER ROUTINES: 00049000
- * 00050000
- * NONE 00051000
- * 00052000
- * EXTERNAL REFERENCES: 00053000
- * 00054000
- * ADEVTAB - ADDRESS OF DEVICE TABLE IN CMS NUCLEUS 00055000
- * 00056000
- * OPERATION: 00057000
- * 00058000
- * DMSGIO FIRST DETERMINES IF IT HAS BEEN CALLED BY THE 00059000
- * CMS EDITOR. IF IT HAS, THEN A WORK AREA EXISTS IN THE 00060000
- * EDITOR EDCB CONTROL BLOCK FOR USE IN BUILDING THE CCW 00061000
- * TO BE PASSED TO CP. IF DMSGIO HAS BEEN CALLED FROM 00062000
- * AN APPLICATION PROGRAM, POSSIBLY VIA THE DISPW MACRO, 00063000
- * THEN DMSGIO GETS FREE STORAGE FOR THE CCW. 00064000
- * 00065000
- * DMSGIO CREATES A DIAGNOSE INSTRUCTION OF THE FORMAT: 00066000
- * 00067000
- * --------------------------------------- 00068000
- * | 83 | R1 | R2 | 0058 | 00069000
- * --------------------------------------- 00070000
- * 00071000
- * WHERE: 00072000
- * 00073000
- * 83 IS THE DIAGNOSE OPCADE 00074000
- * R1 IS A REGISTER CONTAINING THE ADDRESS OF 00075000
- * THE CCW 00076000
- * R2 IS A REGISTER CONTAINING A VIRTUAL 00077000
- * CONSOLE DEVICE ADDRESS 00078000
- * 0058 IS THE DIAGNOSE CODE IN HEXADECIMAL 00079000
- * 00080000
- * DMSGIO CREATES A CCW OF THE FORMAT: 00081000
- * 00082000
- * ----------------------------------------------- 00083000
- * | X'19' | DATA ADDR | FLGS | CTL | COUNT | 00084000
- * ----------------------------------------------- 00085000
- * 00086000
- * WHERE: 00087000
- * 00088000
- * DATA ADDR IS THE ADDRESS RECEIVED IN THE 00089000
- * PLIST OF THE INPUT BUFFER 00090000
- * FLGS Z ARE THE NORMAL CCW FLAG BITS 00091000
- * CTL IS THE LINE NUMBER POINTED TO BY 00092000
- * THE LINE ADDRESS IN THE PARAMETER 00093000
- * LIST. THE HIGH ORDER BIT IS 00094000
- * INTERPRETED BY CP AS A REQUEST 00095000
- * TO ERASE THE ENTIRE OUTPUT DISPLAY 00096000
- * PRIOR TO DISPLAYING THE NEW DATA. 00097000
- * IF THE FLAG IN THE PARAMETER LIST 00098000
- * INDICATES A CANCEL FUNCTION, THIS 00099000
- * FIELD WILL CONTAIN X'FF' TO CAUSE 00100000
- * A SCREEN CANCEL OPERATION. 00101000
- * COUNT IS THE HALFWORD COUNT POINTED TO 00102000
- * BY THE COUNT ADDRESS IN THE 00103000
- * PARAMETER LIST 00104000
- * 00105000
- * USING THE INPUT PARAMETER LIST, THIS MODULE IS A 00106000
- * BASIC INTERFACE FOR CMS OR APPLICATIONS PROGRAMS. 00107000
- * USING A STANDARD CALLING SEQUENCE, CMS OR AN 00108000
- * APLLICATION PROGRAM CAN WRITE TO THE DISPLAY 00109000
- * TERMINAL. 00110000
- * 00111000
- * 00112000
- * 00113000
- ************************************************************ 00114000
- *. 00115000
- EJECT 00116000
- DMSGIO START 0 00117000
- USING DMSGIO,R10 @V305614 00118000
- USING EDCB,R13 @V305614 00119000
- LR R10,R15 @V305614 00120000
- USING NUCON,R0 00121000
- USING GIOLIST,R3 @VA05027 00122000
- LR R3,R1 SAVE PLIST POINTER @VA05027 00123000
- SPACE 1 00124000
- LTR R9,R13 IF R13 IS 0 THERE IS NO EDCB @VA05027 00125000
- BNZ HAVEDCB ..... @VA05027 00126000
- SPACE 1 00127000
- DMSFREE DWORDS=2 @VA05027 00128000
- LR R13,R1 GET GIO FREE STOR ADR @VA05027 00129000
- B READY NOW GO PLUG THE CCW @VA05027 00130000
- SPACE 1 00131000
- HAVEDCB LA R13,CMDBLOK ADDRESSABILITY FOR COMMAND @VA05027 00132000
- DROP R13 @VA05027 00133000
- USING GIOBLOK,R13 @VA05027 00134000
- SPACE 1 00135000
- READY MVI GIOCMD,GIOOP PLUG SPECIAL OP-CODE @VA05027 00136000
- MVI GIOFLG,GIOSLI SET SILI BIT ON @VA05027 00137000
- MVC GIOBUF(3),GIOLBUF GET BUFFER ADR FROM PLIST @VA05027 00138000
- L R2,GIOLINE GET ADR OF LINE NUMBER @VA05027 00139000
- MVC GIOCTL,1(R2) PLUG LINE NUMBER @VA05027 00140000
- L R2,GIOLCNT GET ADR OF COUNT @VA05027 00141000
- MVC GIOCNT,0(R2) PLUG COUNT INTO CCW @VA05027 00142000
- L R2,GIOLFLG GET FLAG ADR @VA05027 00143000
- TM 0(R2),CANCLB CANCEL REQUESTED ? 00144000
- BNO NOCANC NO...BR 00145000
- LA R5,CANCEL POINT TO CANCEL CCW @VA05027 00146000
- B OVLAY GET DEVICE ADR 00147000
- NOCANC LA R5,GIOCMD CCW ADR FOR NORMAL WRITE @VA05027 00148000
- MVI 4(R5),X'20' SET ALL FLAGS TO NORMAL GG934D0 00148100
- TM 0(R2),X'08' WANTS ATTRIBUTE BYTES ALLOWED? GG934D0 00148200
- BNO *+8 NO, DO NOT TURN BIT ON GG934D0 00148300
- OI 4(R5),X'02' SET ATTR. ALLOWED FLAG GG934D0 00148400
- TM 0(R2),X'04' HI-INTENSITY WANTED? GG934D0 00148500
- BNO NOHI NO, DON'T SET BIT GG934D0 00148600
- OI 4(R5),X'01' TURN ON HI-INTENSITY GG934D0 00148700
- NOHI EQU * GG934D0 00148800
- TM 0(R2),ERASB DO WE ERASE ? 00149000
- BNO OVLAY NO...BR 00150000
- OI GIOCTL,CPMORE SET ERASE BIT FOR CP @VA05027 00151000
- OVLAY L R2,ADEVTAB ADR OF DEVTAB IN NUCLEUS 00152000
- LH R4,0(,R2) GET CONSOLE DEVICE ADDR 00153000
- SR R15,R15 CLEAR RETCODE REGISTER @VM08823 00154000
- WAITDISP TIO 0(R4) MAKE SURE DISPLAY @VM08823 00155000
- BC 7,WAITDISP IS AVAILABLE @VM08823 00156000
- DIAG DC X'83',X'54',X'0058' SPECIAL DISPLAY DIAGNOSE @VM08823 00157000
- BZ DONE BR..IF I/O STARTED @VM08823 00158000
- BC 3,CCER BR..IF NOT CSW STORED @VM08823 00159000
- TM CSW+4,X'10' WAS DEVICE BUSY ? @VM08823 00160000
- BO WAITDISP IF SO..TRY AGAIN @VM08823 00161000
- CLI CSW+4,X'04' DE ONLY ? @VM08823 00162000
- BE WAITDISP YES..BR @VM08823 00163000
- B BADERR MUST BE A BAD ONE @VM08823 00164000
- CCER EQU * @VM08823 00165000
- BC 1,BADERR BR..NOT OPER @VM08823 00166000
- B WAITDISP BR..MUST HAVE BEEN BUSY @VM08823 00167000
- BADERR EQU * @VM08823 00168000
- LA R15,4 SET ERROR CODE @VM08823 00169000
- DONE EQU * @VM08823 00170000
- LTR R13,R9 DID WE GET FREE STORAGE ? @VA05027 00171000
- BNZR R14 JUST RETURN IF NOT @VA05027 00172000
- DMSFRET DWORDS=(0),LOC=(1) @VA05027 00173000
- BR R14 RETURN 00174000
- SPACE 1 00175000
- *************************************************************** 00176000
- * 00177000
- * EQUATES AND CONSTANTS 00178000
- * 00179000
- *************************************************************** 00180000
- SPACE 1 00181000
- ERASB EQU X'01' CAUSE MORE STATUS 00182000
- CPMORE EQU X'80' TELL CP CAUSE MORE 00183000
- CANCLB EQU X'02' CANCEL OP REQUESTED 00184000
- GIOOP EQU X'19' SPECIAL OP CODE FOR GRAPHICS @VA05027 00185000
- GIOSLI EQU X'20' SILI BIT FOR CCW FLAG @VA05027 00186000
- SPACE 1 00187000
- * KEEP THE NEXT TWO STATEMENTS TOGETHER * 00188000
- DS 0D @VA05027 00189000
- CANCEL DC X'1900000020FF0001' CANCEL SCREEN CCW @VA05027 00190000
- SPACE 1 00191000
- * GIOLIST MAPS THE PARAMETER LIST PASSED TO DMSGIO * 00192000
- GIOLIST DSECT @VA05027 00193000
- DS X @VA05027 00194000
- GIOLBUF DS 3X ADR OF WRITE BUFFER @VA05027 00195000
- GIOLINE DS F ADR OF THE LINE NUMBER @VA05027 00196000
- GIOLCNT DS F ADR OF THE WRITE COUNT @VA05027 00197000
- GIOLFLG DS F ADR OF THE INDICATOR FLAG @VA05027 00198000
- SPACE 1 00199000
- * GIOBLOK MAPS THE FREE STORAGE OBTAINED BY DMSGIO FOR 00200000
- * USE IN BUILDING THE CCW TO BE PASSED TO CP 00201000
- GIOBLOK DSECT @VA05027 00202000
- GIOCMD DS X CCW OP-CODE @VA05027 00203000
- GIOBUF DS 3X WRITE BUFFER ADDRESS @VA05027 00204000
- GIOFLG DS X FLAG BYTE @VA05027 00205000
- GIOCTL DS X LINE NUMBER @VA05027 00206000
- GIOCNT DS H WRITE COUNT @VA05027 00207000
- SPACE 1 00208000
- EDCB @V305614 00209000
- EJECT 00210000
- NUCON 00211000
- REGEQU 00212000
- END 00213000
ibm/vm370-lib/cms/dmsgio.assemble_src.txt ยท Last modified: 2023/08/06 13:35 by Site Administrator