User Tools

Site Tools


ibm:vm370-lib:macro:trans.macro_src

TRANS Source

References

Source Listing

TRANS.MACRO.txt
  1. MACRO 00001000
  2. &LAB TRANS &RR,&VR,&OPT=,&AFF,&ADEX=,&IOER=,&LCTL= 00002000
  3. LCLC &OP(5),&PARM,&RV,&UR,&NL 00003100
  4. LCLB &IERR,&SYST,&LOCK,&BRNG,&DEFR,&VFLT @V407594 00004110
  5. LCLA &OPCT,&X,&Y 00005100
  6. &NL SETC '&SYSNDX'(2,3) LABEL MODIFIER 00006100
  7. &UR SETC 'R1' DEFAULT VIRTUAL REGISTER 00007100
  8. AIF (T'&LAB EQ 'O').NOLAB 00014000
  9. &LAB DS 0H 00015000
  10. .NOLAB ANOP 00016100
  11. &RV SETC '&RR' REGISTER FOR REAL ADDRESS 00016600
  12. AIF (T'&VR EQ 'O').REG1 VIRTUAL REGISTER MAY DEFAULT 00017100
  13. &UR SETC '&VR' REGISTER FOR VIRTUAL ADDRESS 00017600
  14. .REG1 AIF ('&RV'(1,1) EQ 'R').REG2 00018100
  15. &RV SETC 'R&RR' USE REGISTER EQUATES 00018600
  16. .REG2 AIF ('&UR'(1,1) EQ 'R').REG3 00019100
  17. &UR SETC 'R&UR' 00019600
  18. .REG3 AIF ('&RV' EQ '&UR').RGERR 00020100
  19. AIF (T'&OPT EQ 'O').OPTOK 00023000
  20. &X SETA 1 START OF OPTION FIELD SCAN 00024200
  21. AIF ('&OPT'(1,1) NE '(').SCAN 00024400
  22. &X SETA 2 SKIP OPENING PARENTHESIS 00024600
  23. .SCAN ANOP 00024800
  24. &Y SETA &X REMEMBER WHERE PARM STARTS 00025000
  25. .SCAN2 ANOP 00025200
  26. &X SETA &X+1 00025400
  27. AIF (&X GT K'&OPT).OPTN 00025600
  28. AIF ('&OPT'(&X,1) EQ ',' OR '&OPT'(&X,1) EQ '+').OPTN 00025800
  29. AIF ('&OPT'(&X,1) NE ')').SCAN2 00026000
  30. .OPTN ANOP 00026200
  31. &OPCT SETA &OPCT+1 COUNT THE NUMBER OF OPTIONS 00026400
  32. AIF (&OPCT GT 6).OPERR SIX IS MAXIMUM @V407594 00026610
  33. &OP(&OPCT) SETC '&OPT'(&Y,&X-&Y) EXTRACT OPTION 00026800
  34. &X SETA &X+1 00027000
  35. AIF (&X LT K'&OPT).SCAN GET THE NEXT ONE 00027200
  36. &X SETA 1 RESET FOR OPTION SEARCH 00027400
  37. .OPTS AIF ('&OP(&X)' EQ 'IOERETN').IOR 00027600
  38. AIF ('&OP(&X)' EQ 'SYSTEM').SYT 00027800
  39. AIF ('&OP(&X)' EQ 'BRING').BRG 00028000
  40. AIF ('&OP(&X)' EQ 'DEFER').DFR 00028200
  41. AIF ('&OP(&X)' EQ 'VFAULT').VFT @V407594 00028300
  42. AIF ('&OP(&X)' NE 'LOCK').OPERR 00028400
  43. AIF (&LOCK).OPERR 00028600
  44. &LOCK SETB 1 LOCK REQUESTED 00028800
  45. AGO .ADDOP 00029000
  46. .DFR AIF (&DEFR).OPERR 00029200
  47. &DEFR SETB 1 DEFER PROCESSING 00029400
  48. AGO .ADDOP 00029600
  49. .BRG AIF (&BRNG).OPERR 00029800
  50. &BRNG SETB 1 BRING IN THE PAGE 00030000
  51. AGO .ADDOP 00030200
  52. .SYT AIF (&SYST).OPERR 00030400
  53. &SYST SETB 1 SYSTEM VMBLOK REQUEST 00030600
  54. AGO .ADDOP 00030800
  55. .VFT AIF (&VFLT).OPERR @V407594 00030820
  56. &VFLT SETB 1 VFAULT PROCESSING @V407594 00030840
  57. AGO .ADDOP @V407594 00030860
  58. .IOR AIF (&IERR).OPERR 00031000
  59. &IERR SETB 1 RETURN IN CASE OF I/O ERROR 00031200
  60. .ADDOP AIF (&X NE 1).ADDP SKIP IF NOT THE FIRST 00031400
  61. &PARM SETC '&OP(&X)' START BUILD 'PARM=' FIELD 00031600
  62. AGO .NEXT 00031800
  63. .ADDP ANOP 00032000
  64. &PARM SETC '&PARM'.'+'.'&OP(&X)' 00032200
  65. .NEXT ANOP 00032400
  66. &X SETA &X+1 TAKE THE NEXT OPTION 00032600
  67. AIF (&X LE &OPCT).OPTS 00032800
  68. AIF (T'&IOER EQ 'O' OR &IERR).SKIP 00033000
  69. &IERR SETB 1 IF 'IOER=' SET, SET 'IOERETN' 00033200
  70. &PARM SETC '&PARM'.'+'.'IOERETN' ADD THE OPTION 00033400
  71. .SKIP AIF (NOT &IERR AND NOT &LOCK).OPTOK 00033600
  72. AIF (&BRNG AND &DEFR).OPTOK 00033800
  73. MNOTE 4,'''IOERETN'' OR ''LOCK'' IMPLIES ''BRING+DEFER''' 00034000
  74. AIF (&BRNG).CKDFR 00034200
  75. &BRNG SETB 1 FORCE 'BRING' 00034400
  76. &PARM SETC '&PARM'.'+'.'BRING' 00034600
  77. .CKDFR AIF (&DEFR).OPTOK 00034800
  78. &DEFR SETB 1 00035000
  79. &PARM SETC '&PARM'.'+'.'DEFER' 00035200
  80. .OPTOK AIF ('&LCTL' EQ 'NO').NOSYS 00035400
  81. AIF (&SYST).SYSEG 00035410
  82. LCTL C1,C1,VMSEG - GET SEGMENT TABLE ORIGIN 00057000
  83. AGO .NOSYS 00058000
  84. .SYSEG L R15,ASYSVM - POINT TO SYSTEM VMBLOK, AND 00059000
  85. LCTL C1,C1,VMSEG-VMBLOK(R15) GET CORRECT SEGMENT TABLE ORIGIN 00060000
  86. .NOSYS ANOP 00061000
  87. LRA &RV,0(0,&UR) AND DO HARDWARE TRANSLATE 00062100
  88. AIF (NOT (&IERR OR &BRNG OR &LOCK OR &DEFR)).EXIT 00063100
  89. AIF (&LOCK).CALOK 00064100
  90. BC 8,TRN&NL PAGE IS RESIDENT 00065100
  91. AGO .CALPTR 00066100
  92. .CALOK BC 7,PTR&NL PAGE NOT RESIDENT - BRING IT IN 00067100
  93. AIF ('&RV' EQ 'R2').CALLK 00068100
  94. LR R2,&RV REAL ADDRESS MUST BE IN GR2 00069100
  95. .CALLK CALL DMKPTRLK,&AFF 00070150
  96. B TRN&NL 00071100
  97. PTR&NL EQU * BRING AND LOCK THE PAGE 00072100
  98. .CALPTR AIF ('&UR' EQ 'R1').CALLP 00073100
  99. LR R1,&UR VIRTUAL ADDRESS MUST BE IN GR1 00074100
  100. .CALLP LA R2,&PARM 00075100
  101. CALL DMKPTRAN,&AFF 00076150
  102. AIF ('&RV' EQ 'R2').REGSET 00077100
  103. LR &RV,R2 REAL ADDRESS RETURNED IN GR2 00078100
  104. .REGSET AIF (T'&IOER NE 'O').TESTAD 00098000
  105. AIF (T'&ADEX EQ 'O').NOERR 00099000
  106. BC 2,&ADEX - VIRTUAL ADDRESSING EXCEPTION 00100000
  107. AGO .NOERR 00101000
  108. .TESTAD ANOP 00102000
  109. AIF (T'&ADEX EQ 'O').NOAD 00103000
  110. BC 2,&ADEX - VIRTUAL ADDRESSING EXCEPTION 00105000
  111. .NOAD BC 1,&IOER - IOERROR DURING PAGING 00106000
  112. .NOERR ANOP 00107000
  113. TRN&NL EQU * 00108100
  114. .EXIT MEXIT 00109000
  115. .OPERR MNOTE 8,'INVALID ''OPT='' OPERAND SPECIFIED' 00110100
  116. MEXIT 00110200
  117. .RGERR MNOTE 8,'INVALID REGISTER SPECIFICATION' 00110300
  118. MEND 00111000
ibm/vm370-lib/macro/trans.macro_src.txt ยท Last modified: 2023/08/06 13:38 by Site Administrator