STRUCT -- STRUCTURED PROGRAMMING MACROS MACRO %53(1054) 13:58 21-Nov-78 Page 1 STRUCT MAC 21-Nov-78 13:57 DEFINITIONS 1 UNIVERSAL STRUCT -- STRUCTURED PROGRAMMING MACROS 2 SUBTTL DEFINITIONS 3 4 5 ;; VERSION 1(0)-2 6 7 ;; WRITTEN BY ROBERT P. NIX -- 11/21/78 8 9 10 ;; STRUCT -- A SET OF STRUCTURED PROGRAMMING MACROS FOR 11 ;; THE DECSYSTEM-10 ASSEMBLER. 12 13 ;; THE CALLS: 14 15 16 ; %IF ; THEN 17 ; -- CODE -- 18 ; %ELSE 19 ; -- CODE -- 20 ; %ENDIF 21 22 ; - OR - 23 24 ; %IF ; THEN 25 ; -- CODE -- 26 ; %ENDIF 27 28 29 ; %WHILE ; DO 30 ; -- CODE -- 31 ; %ENDWHILE 32 33 34 ; %REPEAT 35 ; -- CODE -- 36 ; %UNTIL 37 38 39 ; %CASE 40 ; %WHEN ; DO 41 ; -- CODE -- 42 ; %WHEN ; DO 43 ; -- CODE -- 44 ; %ENDCASE 45 46 47 ; %LOOP 48 ; -- CODE -- 49 ; %EXITIF 50 ; -- CODE -- 51 ; %ENDLOOP 52 53 54 ;; IS DEFINED AS: 55 STRUCT -- STRUCTURED PROGRAMMING MACROS MACRO %53(1054) 13:58 21-Nov-78 Page 1-1 STRUCT MAC 21-Nov-78 13:57 DEFINITIONS 56 ; <[CAI, SKIP OR OTHER SKIPPING COND],AFIELD,BFIELD,COND> 57 ; <,AND,> 58 ; <,OR,> 59 ; > 60 61 62 STRUCT -- STRUCTURED PROGRAMMING MACROS MACRO %53(1054) 13:58 21-Nov-78 Page 2 STRUCT MAC 21-Nov-78 13:57 DEFINITIONS FOR MACROS NEEDED INTERNALLY TO SUBSYSTEM 63 SUBTTL DEFINITIONS FOR MACROS NEEDED INTERNALLY TO SUBSYSTEM 64 65 66 LALL 67 68 69 DEFINE COND (UCOND,T,F,%T1,%F1) < 70 ..CCNT== 0 71 IRP UCOND,< ..CCNT== ..CCNT+1 > 72 IFE ..CCNT-4,< 73 ACOND (UCOND,T,F) > 74 IFE ..CCNT-2,< 75 ..CC== 0 76 IRP UCOND,< 77 ..CC== ..CC+1 78 IFE ..CC-2,< 79 COND (UCOND,F,T) > > > 80 IFE ..CCNT-3,< 81 ..CC== 0 82 IRP UCOND,< 83 ..CC== ..CC+1 84 IFE ..CC-1,< 85 COND (UCOND,%T1,%F1) > 86 IFE ..CC-2,< 87 IFIDN ,< 88 %F1: JRST F 89 %T1: > 90 IFIDN ,< 91 %T1: JRST T 92 %F1: > 93 > 94 IFE ..CC-3,< 95 COND (UCOND,T,F) > > > > 96 97 98 DEFINE ACOND (I,A,B,C,T,F) < 99 I'C A,B 100 JRST F 101 JRST T > 102 103 104 DEFINE BLDSYM (CONST,ARG) < 105 CONST'ARG== . 106 > 107 108 109 DEFINE ORGSYM (CONST,ARG) < 110 .ORG CONST'ARG 111 > 112 113 STRUCT -- STRUCTURED PROGRAMMING MACROS MACRO %53(1054) 13:58 21-Nov-78 Page 3 STRUCT MAC 21-Nov-78 13:57 SUBTTL DEFINITIONS FOR %IF, %ELSE, %ENDIF 114 SUBTTL SUBTTL DEFINITIONS FOR %IF, %ELSE, %ENDIF 115 116 117 118 DEFINE %IF (UCOND,%T,%F) < 119 IFNDEF .ILVL,<.ILVL== 0> 120 COND (,%T,%F) 121 %F: JRST @.+1 122 BLDSYM (.IF,\.ILVL) 123 BLOCK 1 124 %T: 125 .ILVL== .ILVL+1 126 > 127 128 129 DEFINE %ELSE (%ELS,%END) < 130 IFNDEF .ILVL, 131 .ILVL== .ILVL-1 132 IFL .ILVL, 133 IFGE .ILVL,< 134 JRST @'%END 135 ORGSYM (.IF,\.ILVL) 136 EXP %ELS 137 .ORG 138 BLDSYM (.IF,\.ILVL) 139 %END: BLOCK 1 140 %ELS: 141 .ILVL== .ILVL+1 142 > > 143 144 145 DEFINE %ENDIF (%END) < 146 IFNDEF .ILVL, 147 .ILVL== .ILVL-1 148 IFL .ILVL, 149 IFGE .ILVL,< 150 %END: 151 ORGSYM (.IF,\.ILVL) 152 EXP %END 153 .ORG 154 > > STRUCT -- STRUCTURED PROGRAMMING MACROS MACRO %53(1054) 13:58 21-Nov-78 Page 4 STRUCT MAC 21-Nov-78 13:57 DEFINITIONS FOR %WHILE, %ENDWHILE 155 SUBTTL DEFINITIONS FOR %WHILE, %ENDWHILE 156 157 158 DEFINE %WHILE (UCOND,%T,%F) < 159 IFNDEF .WLVL,<.WLVL== 0> 160 BLDSYM (.WTO,\.WLVL) 161 COND (,%T,%F) 162 %F: JRST @.+1 163 BLDSYM (.WLV,\.WLVL) 164 BLOCK 1 165 %T: 166 .WLVL== .WLVL+1 > 167 168 169 DEFINE %ENDWH (%BACK,%EN) < 170 IFNDEF .WLVL, 171 .WLVL== .WLVL-1 172 IFL .WLVL, 173 IFGE .WLVL,< 174 ORGSYM (.WTO,\.WLVL) 175 %BACK== . 176 .ORG 177 JRST %BACK 178 %EN== . 179 ORGSYM (.WLV,\.WLVL) 180 EXP %EN 181 .ORG > > STRUCT -- STRUCTURED PROGRAMMING MACROS MACRO %53(1054) 13:58 21-Nov-78 Page 5 STRUCT MAC 21-Nov-78 13:57 DEFINITIONS FOR %REPEAT, %UNTIL 182 SUBTTL DEFINITIONS FOR %REPEAT, %UNTIL 183 184 185 DEFINE %REPEA < 186 IFNDEF .RLVL,<.RLVL== 0> 187 BLDSYM (.RTO,\.RLVL) 188 .RLVL== .RLVL+1 > 189 190 191 DEFINE %UNTIL (UCOND,%T,%F,%TO) < 192 IFNDEF .RLVL, 193 .RLVL== .RLVL-1 194 IFL .RLVL, 195 IFGE .RLVL,< 196 COND (,%T,%F) 197 ORGSYM (.RTO,\.RLVL) 198 %TO== . 199 .ORG 200 %F: JRST %TO 201 %T: > > STRUCT -- STRUCTURED PROGRAMMING MACROS MACRO %53(1054) 13:58 21-Nov-78 Page 6 STRUCT MAC 21-Nov-78 13:57 DEFINITIONS FOR %CASE, %WHEN, %ENDCASE 202 SUBTTL DEFINITIONS FOR %CASE, %WHEN, %ENDCASE 203 204 205 DEFINE %CASE (%CONT,%NXT) < 206 IFNDEF .CLVL,<.CLVL== 0> 207 JRST %CONT 208 BLDSYM (.CBO,\.CLVL) 209 BLOCK 1 210 BLDSYM (.CNX,\.CLVL) 211 %NXT: BLOCK 1 212 %CONT: JRST @'%NXT 213 .CLVL== .CLVL+1 214 > 215 216 217 DEFINE %WHEN (UCOND,%T,%F,%BO,%NXT,%TOP) < 218 IFNDEF .CLVL, 219 .CLVL== .CLVL-1 220 IFL .CLVL, 221 IFGE .CLVL,< 222 ORGSYM (.CBO,\.CLVL) 223 %BO== . 224 .ORG 225 JRST @'%BO 226 %TOP== . 227 ORGSYM (.CNX,\.CLVL) 228 EXP %TOP 229 .ORG 230 COND (,%T,%F) 231 %F: JRST @'%NXT 232 BLDSYM (.CNX,\.CLVL) 233 %NXT: BLOCK 1 234 %T: 235 .CLVL== .CLVL+1 236 > > 237 238 239 DEFINE %ENDCA (%BO) < 240 IFNDEF .CLVL, 241 .CLVL== .CLVL-1 242 IFL .CLVL, 243 IFGE .CLVL,< 244 %BO== . 245 ORGSYM (.CBO,\.CLVL) 246 EXP %BO 247 .ORG 248 ORGSYM (.CNX,\.CLVL) 249 EXP %BO 250 .ORG 251 > > STRUCT -- STRUCTURED PROGRAMMING MACROS MACRO %53(1054) 13:58 21-Nov-78 Page 7 STRUCT MAC 21-Nov-78 13:57 DEFINITIONS FOR %LOOP, %EXITIF, %ENDLOOP 252 SUBTTL DEFINITIONS FOR %LOOP, %EXITIF, %ENDLOOP 253 254 255 DEFINE %LOOP < 256 IFNDEF .LLVL,<.LLVL== 0> 257 BLDSYM (.LT,\.LLVL) 258 .LLVL== .LLVL+1 259 > 260 261 262 DEFINE %EXITI (UCOND,%T,%F,%OUT) < 263 IFNDEF .LLVL, 264 .LLVL== .LLVL-1 265 IFL .LLVL, 266 IFGE .LLVL,< 267 COND (,%T,%F) 268 %T: JRST @'%OUT 269 BLDSYM (.LB,\.LLVL) 270 %OUT: BLOCK 1 271 %F: 272 .LLVL== .LLVL+1 273 > > 274 275 276 DEFINE %ENDLO (%TOP,%BO) < 277 IFNDEF .LLVL, 278 .LLVL== .LLVL-1 279 IFL .LLVL, 280 IFGE .LLVL,< 281 ORGSYM (.LT,\.LLVL) 282 %TOP== . 283 .ORG 284 JRST %TOP 285 %BO: 286 ORGSYM (.LB,\.LLVL) 287 EXP %BO 288 .ORG 289 > > 290 291 STRUCT -- STRUCTURED PROGRAMMING MACROS MACRO %53(1054) 13:58 21-Nov-78 Page 9 STRUCT MAC 21-Nov-78 13:57 END OF MODULE 292 SUBTTL END OF MODULE 293 294 295 end NO ERRORS DETECTED PROGRAM BREAK IS 000000 CPU TIME USED 00:00.473 9P CORE USED ACOND 98# BLDSYM 104# COND 69# ORGSYM 109# %CASE 205# %ELSE 129# %ENDCA 239# %ENDIF 145# %ENDLO 276# %ENDWH 169# %EXITI 262# %IF 118# %LOOP 255# %REPEA 185# %UNTIL 191# %WHEN 217# %WHILE 158#