Table of Contents

DMSCWT Source

References

Source Listing

DMSCWT.ASSEMBLE.txt
  1. CWT TITLE 'DMSCWT (CMS) VM/370 - RELEASE 6' 00001000
  2. SPACE 2 00002000
  3. *. 00003000
  4. * 00007000
  5. * DMSCWT (CONWAIT) 00008000
  6. * 00009000
  7. * FUNCTION: 00010000
  8. * 00011000
  9. * TO CAUSE THE CALLING PROGRAM TO WAIT UNTIL ALL 00012000
  10. * TERMINAL I/O OPERATIONS HAVE BEEN COMPLETED. 00013000
  11. * 00014000
  12. * ATTRIBUTES: 00015000
  13. * 00016000
  14. * REENTRANT, NUCLEUS RESIDENT, CALLED BY SVC 00017000
  15. * 00018000
  16. * ENTRY POINTS 00019000
  17. * 00020000
  18. * DMSCWT 00021000
  19. * 00022000
  20. * 00023000
  21. * ENTRY CONDITIONS: 00024000
  22. * 00025000
  23. * GPRI = A (PLIST) 00026000
  24. * 00027000
  25. * PLIST DC CL8'CONWAIT' 00028000
  26. * 00029000
  27. * EXIT CONDITIONS: 00030000
  28. * 00031000
  29. * GPR 15 = 0 00032000
  30. * 00033000
  31. * CALLS TO OTHER ROUTINES: 00034000
  32. * 00035000
  33. * DMSWAT - WAIT FOR I/O INTERRUPT 00036000
  34. * 00037000
  35. * EXTERNAL REFERENCES: 00038000
  36. * 00039000
  37. * OPSECT, DMSNUC 00040000
  38. * 00041000
  39. * TABLES/WORKAREAS: 00042000
  40. * 00043000
  41. * NONE 00044000
  42. * 00045000
  43. * REGISTER USAGE: 00046000
  44. * 00047000
  45. * R12 - BASE 00048000
  46. * R11 - OPSECT 00049000
  47. * R1,0,10,14,15 WORK 00050000
  48. * 00051000
  49. * OPERATION: 00052000
  50. * 00053000
  51. * DMSCWT CHECKS THE NUMBER OF PENDING READS AND PENDING 00054000
  52. * WRITES. IF BOTH ARE NOT ZERO, DMSCWT BALR'S TO 00055000
  53. * ROUTINE DMSWAT TO WAIT UNTIL A TERMINAL I/O OPERATION 00056000
  54. * IS COMPLETED. UPON RETURN FROM DMSWAT, DMSCWT AGAIN 00057000
  55. * CHECKS THE NUMBER OF PENDING READS AND PENDING 00058000
  56. * WRITES. THIS PROCEDURE IS REPEATED UNTIL ALL TERMINAL 00059000
  57. * I/O REQUESTS HAVE BEEN COMPLETED. AT THIS TIME, 00060000
  58. * DMSCWT RETURNS TO THE CALLING ROUTINE. 00061000
  59. * 00062000
  60. *. 00063000
  61. EJECT 00064000
  62. DMSCWT START 00065000
  63. EXTRN WAIT 00066000
  64. USING DMSCWT,R12 00067000
  65. USING OPSECT,R11 00068000
  66. USING NUCON,R0 00069000
  67. L R9,AFVS POINT TO FVSECT 00070000
  68. USING FVSECT,R9 00071000
  69. OI KXFLAG,KXWSVC HOLD KX UNTIL SVC ACTIVITY 00072000
  70. DROP R9 00073000
  71. LR R12,R15 LOAD BASE REGISTER 00074000
  72. L R11,AOPSECT LOAD PLIST BASE REGISTER 00075000
  73. LR R10,R14 SAVE RETURN ADDRESS 00076000
  74. SR R0,R0 ZERO FOR COMPARES 00077000
  75. WAITLOOP CH R0,NUMPNDWR ARE THERE ANY PENDING WRITES ? 00078000
  76. BNE CALLWAIT YES, WAIT FOR I/O TO COMPLETE 00079000
  77. C R0,PENDREAD IS THERE A READ PENDING ? 00080000
  78. BNE CALLWAIT YES, WAIT FOR I/O TO COMPLETE 00081000
  79. LR R14,R10 RESTORE RETURN ADDRESS 00082000
  80. SR R15,R15 SET RETURN CODE TO ZERO 00083000
  81. BR R14 RETURN TO THE CALLER 00084000
  82. SPACE 00085000
  83. CALLWAIT LA R1,WAITLST LOAD ADDRESS OF CONSOLE WAIT PLIST 00086000
  84. L R15,=A(WAIT) LOAD ADDRESS OF WAIT ROUTINE 00087000
  85. BALR R14,R15 WAIT FOR NEXT I/O INTERRUPT 00088000
  86. B WAITLOOP CHECK THE LISTS AGAIN 00089000
  87. SPACE 3 00090000
  88. LTORG 00091000
  89. EJECT 00092000
  90. IO 00093000
  91. NUCON 00094000
  92. REGEQU 00095000
  93. FVS 00096000
  94. END 00097000