diff --git a/software/BALGOL/BALGOL-Generator.bacg b/software/BALGOL/BALGOL-Generator.bacg new file mode 100644 index 0000000..1e3d737 --- /dev/null +++ b/software/BALGOL/BALGOL-Generator.bacg @@ -0,0 +1,311 @@ + 6 11 17 40 52 60 +SEQ PLAC ADDR WORD LABEL OPCODE OPERAND + + 1 LOAD 0000 + 2 ON TAPE,1/4999 + 3 + 4 + 5 THE COMPILER GENERATOR + 6 + 7 DEFINITIONS FOR THE COMPILER + 8 + 9 CHAR IS 179 + 10 SCNCT IS 225 + 11 VARB IS 251 + 12 CCCNT IS 1587 + 13 CCBEG IS 1618 + 14 IMAG IS 1632 + 15 NUTBL IS 3129 + 16 XONE IS 4097+2 + 17 SCRTB IS 4114+2 + 18 SSC IS 4214+2 + 19 LOCN IS 4215+2 + 20 MAMAX IS 4225+2 + 21 HDNG IS 4517 + 22 + 23 DEFINITIONS FOR THE OVERLAY + 24 + 25 B IS 5200+13 + 26 ZERO IS 5200+27 + 27 LODOX IS 5200+74 + 28 LIBRARYTABLE + 29 IS 1857 + 30 NUMB IS 4800+1335 + 31 LOD2 IS 4800+3127 + 32 POSCT IS 4800+3384 + 33 HALT IS 4800+3450 + 34 + 35 DEFINITIONS FOR OBJECT PROGRAM CARD LOADER + 36 + 37 FIX IS 4240 + 38 + 39 + 40 + 41 0000 0 0000 30 0002 BUN LOAD + 42 0001 0 0000 30 0023 BUN STORE + 43 0002 0 0018 50 0000 LOAD MRW 010 + 44 0003 0 0004 45 0000 CLB + 45 0004 1 0001 52 0000 1 -MNC 0,0,0 + 46 0005 0 0000 42 0006 LDB $+1 + 47 0006 0 0001 45 0999 CLA 999 + 48 0007 1 0000 12 0000 2 -ADD 0 + 49 0008 0 0001 21 0007 DBB 2B,1 + 50 0009 0 0000 36 0015 BZA 3F + 51 0010 0 0040 09 2355 SPO R-CHECK SUM ERROR- + 52 0011 0 0001 58 0000 MPB 0,0 + 53 0012 0 0272 00 2720 HLT 2720,0272(44) + 54 0013 0 0000 42 0007 LDB 2B + 55 0014 0 0000 30 0004 BUN 1B + 56 0015 0 1107 27 0016 3 DFL $+1/11,1 + 57 0016 0 4000 42 0007 LDB 2B,4(11) + 58 0017 0 0999 20 0018 IBB $+1,999 + 59 0018 0 0412 40 0007 STB 2B/04 + 60 0019 0 0000 32 0004 BRP 1B + 61 0020 0 1105 27 0016 DFL 3B+1/11,5 + 62 0021 0 0410 40 0007 STA 2B/04 + 63 0022 0 0000 31 0046 BOF THEBEGINNING + 64 + 65 + 66 0023 0 0018 50 0000 STORE MRW 010 + 67 0024 0 0000 42 0025 1 LDB $+1 + 68 0025 0 4001 45 0998 CLA 998,4(11) + 69 0026 1 0000 12 0000 2 -ADD 0 + 70 0027 0 0001 21 0026 DBB $-1,1 + 71 0028 0 0000 42 0026 LDB 2B + 72 0029 1 0000 41 0999 -LDR 999 + 73 0030 1 0000 40 0999 -STA 999 + 74 0031 1 0000 11 0999 -CSU 999 + 75 0032 1 0000 40 0999 -STA 999 + 76 0033 1 0000 56 0000 -MOW 0,0,0 + 77 0034 1 0001 40 0999 -STR 999 + 78 0035 0 0999 20 0036 IBB $+1,999 + 79 0036 0 0412 40 0026 STB 2B/04 + 80 0037 0 1101 27 0025 DFL 1B+1/11,1 + 81 0038 0 0000 32 0024 BRP 1B + 82 0039 0 0000 31 0040 BOF $+1 + 83 0040 0 0018 50 0000 MRW 010 + 84 0041 0 1248 00 8421 HLT 8421,1248(44) + 85 0042 0 0007 45 0000 CLT + 86 0043 0 0410 40 0026 STA 2B/04 + 87 0044 0 1106 27 0025 DFL 1B+1/11,6 + 88 0045 0 0000 30 0002 BUN LOAD + 89 + 90 + 91 THEBEGINNING + 92 0046 0 0060 09 2349 SPO LRT-THECOMPILER GENERATOR-R + 93 0047 0 1101 26 0051 IFL 20F/11,1 + 94 0048 0 1101 26 0049 IFL $+1/11,1 + 95 0049 0 0000 64 0051 CRI 20F,0 + 96 0050 0 0000 30 0049 BUN THEBEGINNING+3 + 97 0051 0 0002 62 1517 20 CRF ALFORMAT,0,2 + 98 0052 0 0008 50 0000 MRW 0 + 99 0053 0 0000 44 0115 21 DO SAN + 54 0 0000 30 0107 + 100 0055 0 0010 18 2337 CFA -COMME-/00 + 101 0056 0 0000 35 0134 BCE COMMENT + 102 0057 0 0010 18 2411 CFA -COPYC-/00 + 103 0058 0 0000 35 0139 BCE COMPILERTAPEUNIT + 104 0059 0 0010 18 2394 CFA -COMPI-/00 + 105 0060 0 0000 35 0268 BCE SETLOCN + 106 0061 0 0010 18 2416 CFA -GENER-/00 + 107 0062 0 0000 35 0290 BCE VERSION + 108 0063 0 0010 18 2302 CFA -SETSC-/00 + 109 0064 0 0000 35 0144 BCE SETSCAN + 110 0065 0 0010 18 2414 CFA -PRINT-/00 + 111 0066 0 0000 35 0161 BCE SETPRINTER + 112 0067 0 0010 18 2293 CFA -VARIA-/00 + 113 0068 0 0000 35 0240 BCE VARIABLES + 114 0069 0 0010 18 2340 CFA -CARDP-/00 + 115 0070 0 0000 35 0167 BCE SETPUNCH + 116 0071 0 0010 18 2341 CFA -CARDR-/00 + 117 0072 0 0000 35 0172 BCE SETREADER + 118 0073 0 0010 18 2410 CFA -MACHI-/00 + 119 0074 0 0000 35 0178 BCE SETSCRATCH + 120 0075 0 0010 18 2420 CFA -CORRE-/00 + 121 0076 0 0000 35 0192 BCE SETCORRECTIONS + 122 0077 0 0010 18 2393 CFA -MEMOR-/00 + 123 0078 0 0000 35 0225 BCE SETSIZE + 124 0079 0 0010 18 2397 CFA -PROCE-/00 + 125 0080 0 0000 35 0245 BCE SETPROCESSBIT + 126 0081 0 0010 18 2335 CFA -POSIT-/00 + 127 0082 0 0000 35 0248 BCE SETUPFORPOSITIONFORWARD + 128 0083 0 0010 18 2396 CFA -PUNCH-/00 + 129 0084 0 0000 35 0260 BCE SETTHEPUNCHLIBRARYBIT + 130 0085 0 0010 18 2381 CFA -SUPPR-/00 + 131 0086 0 0000 35 0266 BCE THEREGOESTHEHALT + 132 0087 0 0010 18 2365 CFA -DELET-/00 + 133 0088 0 0000 35 0100 BCE WHATGOES + 134 0089 0 0010 18 2440 CFA -INPUT-/00 + 135 0090 0 0000 35 0603 BCE INPUTMEDIA + 136 0091 0 0010 18 2291 CFA -OUTPU-/00 + 137 0092 0 0000 35 0767 BCE OUTPUTMEDIA + 138 0093 0 0010 18 2310 CFA -FINIS-/00 + 139 0094 0 0000 35 0387 BCE FINIS + 140 STATEMENTERROR + 141 0095 0 0050 09 2382 SPO R-INCORRECT STATEMENT-RRIII + 142 0096 0 0160 09 1778 SPO INPUT,16 + 143 0097 0 0010 09 2342 SPO RRRRR-- + 144 0098 0 1370 00 7310 HLT 7310,1370(44) + 145 0099 0 0000 30 0098 BUN $-1 + 146 + 147 + 148 0100 0 0000 44 0115 WHATGOES DO SCAN + 0101 0 0000 30 0107 + 149 0102 0 0010 18 2374 CFA -EOUTP-/00 + 150 0103 0 0000 35 0364 BCE OUTPUTFORMATS + 151 0104 0 0010 18 2418 CFA -EINPU-/00 + 152 0105 0 0000 35 0360 BCE INPUTFORMATS + 153 0106 0 0000 30 0095 BUN STATEMENTERROR + 154 + 155 + 156 0107 0 0000 46 0116 SCAN.1 CLL IMAGE.1 + 157 0108 0 0000 44 0125 3 DO CHARACTER + 0109 0 0000 30 0117 + 158 0110 0 0000 49 0009 1 SLA 8 + 159 0111 0 0000 19 0116 ADL IMAGE.1 + 160 0112 0 0102 27 0110 DFL 1B/01,2 + 161 0113 0 0000 32 0108 BRP 3B + 162 0114 0 0000 10 0116 CAD IMAGE.1 + 163 0115 0 0000 30 0115 SCAN BUN SCAN + 164 0116 0 0000 00 0000 IMAGE.1 (0) + 165 + 166 + 167 CHARACTER.1 + 168 IS $+1 + 169 0117 0 0502 26 0133 3 IFL SCNCT.1/05,2 + 170 0118 0 9400 28 0133 DLB SCNCT.1/94 + 171 0119 1 0000 10 1778 -CAD INPUT + 172 0120 0 0000 42 0133 LDB SCNCT.1 + 173 0121 0 0160 21 0126 DBB 40F,160 + 174 0122 1 0000 49 0002 -SLA 2 + 175 0123 0 0000 17 2270 EXT =11= + 176 0124 0 0000 36 0117 BZA 3B + 177 0125 0 0000 30 0125 CHARACTER BUN CHARACTER + 178 0126 0 0000 41 0051 40 LDR 20B + 179 0127 0 1111 40 0128 STR $+1/11 + 180 0128 0 0010 60 1793 CNC INPUT+15,0 + 181 0129 0 0000 10 1793 CAD INPUT+15 + 182 0130 0 0000 46 0133 CLL SCNCT.1 + 183 0131 0 0002 33 0117 BSA 3B,2 + 184 0132 0 0000 30 0095 BUN STATEMENTERROR + 185 0133 0 0000 00 0158 SCNCT.1 (158) + 186 + 187 + 188 0134 0 0502 27 0133 COMMENT DFL SCNCT.1/05,2 + 189 0135 0 0000 44 0125 DO CHARACTER + 0136 0 0000 30 0117 + 190 0137 0 0213 36 0053 BFA 21B/02,13 + 191 0138 0 0000 30 0117 BUN CHARACTER.1 + 192 + 193 + 194 COMPILERTAPEUNIT + 195 0139 0 0000 44 0359 DO TAPENUMSCAN + 0140 0 0000 30 0352 + 196 0141 0 0000 49 0007 SLA 7 + 197 0142 0 3310 40 1520 STA COMPILER/33 + 198 0143 0 0000 30 0134 BUN COMMENT + 199 + 200 + 201 0144 0 0000 44 0350 SETSCAN DO BASICNUMSCAN + 0145 0 0000 30 0337 + 202 0146 0 0000 40 1676 STA HOLD0 + 203 0147 0 0000 12 1676 ADD HOLD0 + 204 0148 0 0000 49 0006 SLA 6 + 205 0149 0 4210 40 2451 STA TBL+3/42 + 206 0150 0 0000 44 0350 DO BASICNUMSCAN + 0151 0 0000 30 0337 + 207 0152 0 0000 40 1676 STA HOLD0 + 208 0153 0 0000 12 1676 ADD HOLD0 + 209 0154 0 0000 49 0006 SLA 6 + 210 0155 0 4410 40 2249 STA TBL+1/44 + 211 0156 0 4204 27 2451 DFL TBL+3/42,4 + 212 0157 0 0000 30 0134 BUN COMMENT + 213 0158 0 0000 10 2449 SETSCAN.1 CRD TBL+1 + 214 0159 1 4410 40 1677 -STA IA/44 + 215 0160 0 0000 30 0514 BUN RETURN + 216 + 217 + 218 0161 0 0000 44 0350 SETPRINTER DO BASICNUMSCAN + 0162 0 0000 30 0337 + 219 0163 0 0000 49 0009 SLA 9 + 220 0164 0 1110 40 1801 STA PRINTER/11 + 221 0165 0 1110 40 0792 STA UNIT2/11 + 222 0166 0 0000 30 0134 BUN COMMENT + 223 + 224 + 225 0167 0 0000 44 0350 SETPUNCH DO BASICNUMSCAN + 0168 0 0000 30 0337 + 226 0169 0 0000 49 0009 SLA 9 + 227 0170 0 1110 40 1803 STA PUNCH/11 + 228 0171 0 0000 30 0134 BUN COMMENT + 229 + 230 + 231 0172 0 0000 44 0350 SETREADER DO BASICNUMSCAN + 0173 0 0000 30 0337 + 232 0174 0 0000 49 0009 SLA 9 + 233 0175 0 1110 40 1823 STA READER/11 + 234 0176 0 1110 40 0621 STA UNIT1/11 + 235 0177 0 0000 30 0134 BUN COMMENT + 236 + 237 + 238 0178 0 0000 44 0359 SETSCRATCH DO TAPENUMSCAN + 0179 0 0000 30 0352 + 239 0180 0 0000 49 0007 SLA 7 + 240 0181 0 3310 40 1827 STA SCRATCHML/33 + 241 0182 0 0002 49 0003 SLS 3 + 242 0183 0 0000 16 0000 RND + 243 0184 0 0002 48 0010 SRS 10 + 244 0185 0 0001 48 0010 SRT 10 + 245 0186 0 0000 10 1827 CAD SCRATCHML + 246 0187 0 0000 12 2441 ADD =1(31)= + 247 0188 0 0000 37 0190 BZR 1F + 248 0189 0 0000 13 2272 SUB =2(32)= + 249 0190 0 3310 40 1828 1 STA SCRATCHDUMP/33 + 250 0191 0 0000 30 0134 BUN COMMENT + 251 + 252 + 253 SETCORRECTIONS + 254 0192 0 0000 41 0051 LDR 20B + 255 0193 0 1111 40 0195 STR 1F/11 + 256 0194 0 1111 40 0219 STR 2F/11 + 257 0195 0 0011 60 1539 1 CNCL CDR+12,0 + 258 0196 0 0000 10 1527 CAD CDR + 259 0197 0 0002 33 0134 BSA COMMENT,2 + 260 0198 0 0001 45 0000 CLA CREATE CHECK SUM TOTAL + 261 0199 0 0000 42 2442 LDB =6= + 262 0200 1 0000 12 1533 12 -ADD CDR+6 + 263 0201 0 0001 21 0200 DBB 12B,1 + 264 0202 0 0000 36 0206 BZA $+4 + 265 0203 0 0060 09 2434 SPO R-ERRONEOUS CORRECTION CARD- + 266 0204 0 9669 00 9669 HLT 9669,9669(44) + 267 0205 0 0000 30 0204 BUN $-1 + 268 + 269 0206 0 0000 10 1536 CAD CDR+9 + 270 0207 0 0000 42 0223 LDB K + 271 0208 0 0402 26 0386 IFL KP/04,2 + 272 0209 1 0000 40 2449 -STA TBL+1 + 273 0210 0 0000 10 1535 CAD CDR+8 + 274 0211 0 0000 12 1534 ADD CDR+7 + 275 0212 0 0000 41 1532 LDR CDR+5 + 276 0213 0 0100 37 0217 BFR 3F/01,0 + 277 0214 0 0102 37 0221 BFR 4F/01,2 + 278 0215 0 0103 37 1533 BFR CDR+6/01,3 + 279 0216 0 0001 43 0000 LSA 1 + 280 0217 1 0000 40 2448 3 -STA TBL + 281 0218 0 0002 26 0223 IFL K/00,2 + 282 0219 0 0010 60 1539 2 CNC CDR+12,0 + 283 0220 0 0000 30 0195 BUN 1B + 284 0221 0 0003 43 0000 4 LSA 3 + 285 0222 0 0000 30 0217 BUN 3B + 286 0223 0 0000 00 0014 K (14) + 287 0224 0 0000 00 0000 MAMAXP (0) + 288 + 289 + 290 0225 0 0000 44 0350 SETSIZE DO BASICNUMSCAN + 0226 0 0000 30 0337 + 291 0227 0 0200 36 0231 BFA 1F/02,00 + 292 SPO R-MEMORY SIZE MUST BE GIVEN AS A MULTIPLE- ... + 293 0228 0 0120 09 2422 - OF ONE HUNDRED-RRRI + 294 0229 0 1370 00 7310 HLT 7310,1370(44) + 295 0230 0 0000 30 0229 BUN $-1 + 296 0231 0 0000 12 2443 1 ADD =9999= diff --git a/software/BALGOL/BALGOL-Intrinsics/ACOS.baca b/software/BALGOL/BALGOL-Intrinsics/ACOS.baca new file mode 100644 index 0000000..3ed945f --- /dev/null +++ b/software/BALGOL/BALGOL-Intrinsics/ACOS.baca @@ -0,0 +1,29 @@ + .00.0 0100 ATAN DEFN 100 + .00.0 0200 ROMXX DEFN 200 + .00.0 0300 ERROR DEFN 300 + .00.0 0000 ACOS NOP + .00.0 0001 STA 6 ERROR+52 + .00.0 0002 LDB 8 ACOS + .00.0 0003 BZA 6 ROMXX+39 + .00.0 0004 LDR 8 ACOS2 + .00.0 0005 STP 6 ROMXX + .00.0 0006 BUN 6 ROMXX+4 + .00.0 0007 FDV 6 ERROR+52 + .00.0 0008 STP 6 ATAN + .00.0 0009 BUN 6 ATAN + .00.0 0010 LDB 8 ACOS + .00.0 0011 LDR 6 ERROR+52 + .00.0 0012 SLT 0 + .00.0 0013 BPA - 0 + .00.0 0014 FAD 8 +5131415927 + .00.0 0015 BUN - 0 + .00.0 0016 ACOS2 HLT 8 ACOS1 + .00.0 0017 ACOS1 CNST $ACOS$ + .00.0 0018 X CNST 0 + .00.0 0019 LOCN LOCN *+1 + .00.0 0020 CNST 40000990000 + .00.0 0021 CNST $ARCCOS,REAL(REAL) ARCTAN=1 ROMXX=2 ERROR=3 $ + .00.0 0030 CNST 90000000000 + .00.0 0031 LOCN LOCN + .00.0 0019 FINI ACOS + 19 +5131415927 diff --git a/software/BALGOL/BALGOL-Intrinsics/ASIN.baca b/software/BALGOL/BALGOL-Intrinsics/ASIN.baca new file mode 100644 index 0000000..edcc80b --- /dev/null +++ b/software/BALGOL/BALGOL-Intrinsics/ASIN.baca @@ -0,0 +1,20 @@ + .00.0 0100 ATAN DEFN 100 + .00.0 0200 ROMXX DEFN 200 + .00.0 0300 ERROR DEFN 300 + .00.0 0000 ASIN NOP + .00.0 0001 STA 6 ERROR+52 + .00.0 0002 LDR 8 ASIN2 + .00.0 0003 STP 6 ROMXX + .00.0 0004 BUN 6 ROMXX+4 + .00.0 0005 LDB 8 ASIN + .00.0 0006 BZA 6 ROMXX+39 + .00.0 0007 STA 6 ERROR+49 B + .00.0 0008 CAD 6 ERROR+52 + .00.0 0009 FDV 6 ERROR+49 B + .00.0 0010 BUN 6 ATAN+2 + .00.0 0011 ASIN2 HLT 8 ASIN1 + .00.0 0012 ASIN1 CNST $ASIN$ + .00.0 0013 CNST 40000990000 + .00.0 0014 CNST $ARCSIN,REAL(REAL) ARCTAN=1 ROMXX=2 ERROR=3 $ + .00.0 0023 CNST 90000000000 + .00.0 0024 FINI ASIN diff --git a/software/BALGOL/BALGOL-Intrinsics/ATAN.baca b/software/BALGOL/BALGOL-Intrinsics/ATAN.baca new file mode 100644 index 0000000..fa8357c --- /dev/null +++ b/software/BALGOL/BALGOL-Intrinsics/ATAN.baca @@ -0,0 +1,72 @@ + .00.0 0100 ERROR DEFN 100 + .00.0 0000 ATAN CRB + .00.0 0001 LDB 8 ATAN + .00.0 0002 CFA 6 ERROR+51,00 =1.0= + .00.0 0003 STA 6 ERROR+52 + .00.0 0004 STB 8 C+,44 + .00.0 0005 BCL 8 B+ + .00.0 0006 DFL 8 C+,44,1 + .00.0 0007 F4248 5010,10,+5099999999 + .00.0 0008 FDV 6 ERROR+52 + .00.0 0009 *B CFA 8 *-2,00 + .00.0 0010 BCL 8 A+ + .00.0 0011 SLA 2 + .00.0 0012 STA 6 ERROR+52 + .00.0 0013 MUL 6 ERROR+52 + .00.0 0014 STA 6 ERROR+49 B + .00.0 0015 MUL 8 +0049017591 A1 + .00.0 0016 ADD 8 +0565030980 A2 + .00.0 0017 MUL 6 ERROR+49 B + .00.0 0018 ADD 8 +1453567135 A3 + .00.0 0019 MUL 6 ERROR+49 B + .00.0 0020 ADD 8 +1000000000 A4 + .00.0 0021 STA 6 ERROR+50 C Z + .00.0 0022 CAD 8 +0008561189 B1 + .00.0 0023 MUL 6 ERROR+49 B + .00.0 0024 ADD 8 +0280504541 B2 + .00.0 0025 MUL 6 ERROR+49 B + .00.0 0026 ADD 8 +1120234014 B3 + .00.0 0027 MUL 6 ERROR+49 B + .00.0 0028 ADD 8 +1000000000 B4 + .00.0 0029 MUL 6 ERROR+52 + .00.0 0030 SRT 2 + .00.0 0031 DIV 6 ERROR+50 C + .00.0 0032 STA 6 ERROR+50 C + .00.0 0033 IFL 6 ERROR+50,11,5 + .00.0 0034 CAD 6 ERROR+50 C + .00.0 0035 *C IBB - 0,0 + .00.0 0036 CAD 8 +5115707963 PI/2 + .00.0 0037 LDR 6 ERROR+52 + .00.0 0038 SLT 0 + .00.0 0039 FSU 6 ERROR+50 C + .00.0 0040 BUN - 1 + .00.0 0041 *A STA 6 ERROR+52 + .00.0 0042 FMU 6 ERROR+52 + .00.0 0043 STA 6 ERROR+49 B + .00.0 0044 FMU 8 -5014281428 C1 + .00.0 0045 FAD 8 +5020000000 C2 + .00.0 0046 FMU 6 ERROR+49 B + .00.0 0047 FSU 8 +5033333333 C3=-1/3 + .00.0 0048 FMU 6 ERROR+49 B + .00.0 0049 FMU 6 ERROR+52 + .00.0 0050 FAD 6 ERROR+52 + .00.0 0051 STA 6 ERROR+50 C + .00.0 0052 BUN 8 C- + .00.0 0053 LOCN LOCN *+12 + .00.0 0065 CNST 40000990000 + .00.0 0066 CNST $ARCTAN,REAL(REAL) ERROR=1 $ + .00.0 0072 CNST 90000000000 + .00.0 0073 LOCN LOCN + .00.0 0053 FINI ATAN + 53 +1000000000 + 54 +5099999999 + 55 +5033333333 + 56 +5020000000 + 57 +0280504541 + 58 -5014281428 + 059 +1453567135 + 60 +0049017591 + 61 +0008561189 + 62 +1120234014 + 63 +0565030980 + 64 +5115707963 diff --git a/software/BALGOL/BALGOL-Intrinsics/COS.baca b/software/BALGOL/BALGOL-Intrinsics/COS.baca new file mode 100644 index 0000000..ffaa273 --- /dev/null +++ b/software/BALGOL/BALGOL-Intrinsics/COS.baca @@ -0,0 +1,17 @@ + .00.0 0100 SIN DEFN 100 + .00.0 0000 COS CRB + .00.0 0001 LDR 8 COS + .00.0 0002 STR 8 SIN,04 + .00.0 0003 LDR 8 COS2 + .00.0 0004 FAD 8 +5078539816 + .00.0 0005 FAD 8 +5078539816 + .00.0 0006 BUN 6 SIN+2 + .00.0 0007 COS2 HLT 8 COS1 + .00.0 0008 COS1 CNST $COS$ + .00.0 0009 LOCN LOCN *+1 + .00.0 0010 CNST 40000990000 + .00.0 0011 CNST $COS,REAL(REAL) SIN=1 $ + .00.0 0016 CNST 90000000000 + .00.0 0017 LOCN LOCN + .00.0 0009 FINI COS + 9 +5078539816 diff --git a/software/BALGOL/BALGOL-Intrinsics/COSH.baca b/software/BALGOL/BALGOL-Intrinsics/COSH.baca new file mode 100644 index 0000000..101c469 --- /dev/null +++ b/software/BALGOL/BALGOL-Intrinsics/COSH.baca @@ -0,0 +1,25 @@ + .00.0 0100 EXP DEFN 100 + .00.0 0200 ERROR DEFN 200 + .00.0 0000 COSH NOP + .00.0 0001 LDR 8 COSH2 + .00.0 0002 LSA 0 + .00.0 0003 STP 6 EXP + .00.0 0004 BUN 6 EXP+2 + .00.0 0005 BZA 8 A+ + .00.0 0006 STA 6 ERROR+52 + .00.0 0007 CAD 6 ERROR+51 =1.0= + .00.0 0008 FDB 6 ERROR+52 + .00.0 0009 FAD 6 ERROR+52 + .00.0 0010 FMU 8 +5050000000 + .00.0 0011 *A LDB 8 COSH + .00.0 0012 BUN - 0 + .00.0 0013 COSH2 HLT 8 COSH1 + .00.0 0014 COSH1 CNST $COSH$ + .00.0 0015 LOCN LOCN *+1 + .00.0 0016 CNST 40000990000 + .00.0 0017 CMST $COSH,REAL(REAL) EXP=1 ERROR=2 $ + .00.0 0023 CNST 90000000000 + .00.0 0024 LOCN LOCN + .00.0 0015 FINI COSH + 15 +5050000000 + diff --git a/software/BALGOL/BALGOL-Intrinsics/ENTIR.baca b/software/BALGOL/BALGOL-Intrinsics/ENTIR.baca new file mode 100644 index 0000000..164b5dd --- /dev/null +++ b/software/BALGOL/BALGOL-Intrinsics/ENTIR.baca @@ -0,0 +1,20 @@ + .00.0 0000 ENTIR CRB + .00.0 0001 CFA 8 +5810000000,22 + .00.0 0002 BCH 8 A+ + .00.0 0003 SRT 0 + .00.0 0004 BPA 8 B+ + .00.0 0005 LSA 0 + .00.0 0006 FAD 8 +5099999999 + .00.0 0007 *B FAD 8 *5810000000 + .00.0 0008 FSU 8 +5810000000 + .00.0 0009 SLT 0 + .00.0 0010 *A LDB 8 ENTIR + .00.0 0011 BUN - 0 + .00.0 0012 LOCN LOCN *+2 + .00.0 0014 CNST 40000990000 + .00.0 0015 CNST $ENTIRE,REAL(REAL) $ + .00.0 0019 CNST 90000000000 + .00.0 0020 LOCN LOCN + .00.0 0012 FINI ENTIR + 12 +5099999999 + 13 +5810000000 diff --git a/software/BALGOL/BALGOL-Intrinsics/LABEL.baca b/software/BALGOL/BALGOL-Intrinsics/LABEL.baca new file mode 100644 index 0000000..adccbfa --- /dev/null +++ b/software/BALGOL/BALGOL-Intrinsics/LABEL.baca @@ -0,0 +1,64 @@ + .00.0 THE LABEL PROCESSING SUBROUTINE + .00.0 0100 ERROR DEFN 100 + .00.0 0000 LABEL BCS *,8 + .00.0 0001 LDB 8 NUMLB + .00.0 0002 BOF 6 ERROR+21 + .00.0 0003 LDB 8 LABEL + .00.0 0004 DLB - 9998,44,1 + .00.0 0005 STB 8 HOLD + .00.0 0006 LDB 8 LABEL + .00.0 0007 DLB - 9999,44,0 + .00.0 0008 STA 8 HOLD1 + .00.0 0009 CAD - 0 + .00.0 0010 STA 6 ERROR+49 B + .00.0 0011 SRT 10 + .00.0 0012 STP 8 NUMLX + .00.0 0013 BSA 8 NUMLB,1 + .00.0 0014 STA 6 ERROR+44 + .00.0 0015 STR 6 ERROR+45 + .00.0 0016 CAA 8 HOLD + .00.0 0017 SUB 8 +10000 + .00.0 0018 SRT 10 + .00.0 0019 STP 8 NUMLX + .00.0 0020 BUN 8 NUMLB + .00.0 0021 STR 6 ERROR+46,08 + .00.0 0022 *I BUN 8 *+1 + .00.0 0023 IFL 6 ERROR+46,22,24 + .00.0 0024 IFL 6 ERROR+47,22,04 + .00.0 0025 IFL 8 I-,04,3 + .00.0 0026 BCS 8 PRINT,7 + .00.0 0027 EXIT LDB 8 LABEL + .00.0 0028 CAD 8 HOLD1 + .00.0 0029 BUN - 0 + .00.0 + .00.0 0030 PRINT LDB 8 *+2 + .00.0 0031 RTF 6 ERROR+24,1 ZERO + .00.0 0032 RTF 6 ERROR+37,5 + .00.0 0033 STP 6 ERROR+36 + .00.0 0034 BUN 6 ERROR+34 + .00.0 0035 BUN 8 EXIT + .00.0 + .00.0 + .00.0 0036 NUMLB F4248 8001,45,LABEL+3 + .00.0 0037 SLA 1 + .00.0 0038 SLT 1 + .00.0 0039 SUB 8 +80 + .00.0 0040 IFL 8 NUMLB,11,8 + .00.0 0041 BOF 8 NUMLB+1 + .00.0 0042 IFL 8 *-1,11,5 + .00.0 0043 BOF 8 A+ + .00.0 0044 STA 6 ERROR+50 C + .00.0 0045 BUN 8 NUMLB + .00.0 0046 *A SRT 10 + .00.0 0047 CAD 6 ERROR+50 C + .00.0 0048 NUMLX BUN * + .00.0 0049 LOCN LOCN *+4 + .00.0 0053 CNST 40000990000 + .00.0 0054 CNST $LABEL ERROR=1 $ + .00.0 0057 CNST 90000000000 + .00.0 0058 LOCN LOCN + .00.0 0049 FINI LABEL + 49 HOLD1 + 50 HOLD + 51 +0000010000 + 52 +0000000080 diff --git a/software/BALGOL/BALGOL-Intrinsics/MONTR.baca b/software/BALGOL/BALGOL-Intrinsics/MONTR.baca new file mode 100644 index 0000000..dfd4266 --- /dev/null +++ b/software/BALGOL/BALGOL-Intrinsics/MONTR.baca @@ -0,0 +1,64 @@ + .00.0 THE MONITOR SUBROUTINE + .00.0 0100 ERROR DEFN 100 + .00.0 0000 MONTR BCS *,10 + .00.0 0001 STB 6 ERROR+49 B + .00.0 0002 LDB 8 E+ + .00.0 0003 BOF 6 ERROR+21 + .00.0 0004 STA 6 ERROR+52 + .00.0 0005 LDB 8 MONTR + .00.0 0006 DLB - 9999,44,0 + .00.0 0007 LDR - 0 + .00.0 0008 STR 8 OUT + .00.0 0009 LDB 8 MONTR + .00.0 0010 CLL 8 OUT+3 + .00.0 0011 CLL 8 OUT+4 + .00.0 0012 STB 8 OUT+1,64 + .00.0 0013 CAD - 9997 + .00.0 0014 BPA 8 *+2 + .00.0 0015 SUB 6 ERROR+49 B + .00.0 0016 STA 8 B+,04 + .00.0 0017 *E CLA 8 MONTR+4 + .00.0 0018 LDR - 9998 + .00.0 0019 BFR 8 *+3,11,8 + .00.0 0020 *B ADD * + .00.0 0021 BUN 8 *+2 + .00.0 0022 ADD 6 ERROR+52 + .00.0 0023 BFR 8 A+,21,0 + .00.0 0024 STA 8 OUT+2 + .00.0 0025 BPA 8 C+ + .00.0 0026 IFL8 OUT+1,42,20 + .00.0 0027 *C STB 8 F+,04 + .00.0 0028 F4246 0504,44,0200 + .00.0 0029 F4246 OUT,30,0200 + .00.0 0030 *D CAD 6 ERROR+52 + .00.0 0031 LDB 6 ERROR+49 B + .00.0 0032 *F BUN * + .00.0 0033 BUN * + .00.0 0034 *A SRT B + .00.0 0035 CLL 8 OUT+2 + .00.0 0036 STR 8 OUT+2,88 + .00.0 0037 BSA 8 *+2,0 + .00.0 0038 IFL 8 OUT+1,42,20 + .00.0 0039 LSA 0 + .00.0 0040 BFR 8 *+2,88,0 + .00.0 0041 SUB 8 +50 + .00.0 0042 IFL 8 OUT+3,02,23 + .00.0 0043 IFL 8 OUT+1,62,03 + .00.0 0044 STA 8 OUT+4,01 + .00.0 0045 SLA 1 + .00.0 0046 STA 8 OUT+4,89 + .00.0 0047 IFL 8 OUT+4,91,8 + .00.0 0048 IFL 8 OUT+4,71,8 + .00.0 0049 BUN 8 C- + .00.0 0050 OUT CNST 0 + .00.0 0051 CNST $= $ + .00.0 0052 CNST 0 + .00.0 0053 CNST 0 + .00.0 0054 CNST 0 + .00.0 0055 LOCN LOCN *+1 + .00.0 0056 CNST 40000990000 + .00.0 0057 CNST $MONIT ERROR=1 RITE=2 $ + .00.0 0062 CNST 90000000000 + .00.0 0063 LOCN LOCN + .00.0 0055 FINI MONTR + 55 +0000000050 diff --git a/software/BALGOL/BALGOL-Intrinsics/REED.baca b/software/BALGOL/BALGOL-Intrinsics/REED.baca new file mode 100644 index 0000000..e680e75 --- /dev/null +++ b/software/BALGOL/BALGOL-Intrinsics/REED.baca @@ -0,0 +1,8 @@ + ,00,0 READ DEFN 100 + .00.0 0000 REED NOP + .00.0 0001 CRD 0117,1 + .00.0 0002 BUN 6 0111 + .00.0 0003 CNST 40000990000 + .00.0 0004 CNST $REED READ=1 $ + .00.0 0007 CNST 90000000000 + .00.0 0008 FINI READ diff --git a/software/BALGOL/BALGOL-Intrinsics/RITE.baca b/software/BALGOL/BALGOL-Intrinsics/RITE.baca new file mode 100644 index 0000000..3749010 --- /dev/null +++ b/software/BALGOL/BALGOL-Intrinsics/RITE.baca @@ -0,0 +1,19 @@ + .00.0 0000 RITE NOP + .00.0 0001 LDB 8 *-1 + .00.0 0002 CAD - 9999 + .00.0 0003 SRA 6 + .00.0 0004 STA 8 A+,04 + .00.0 0005 CAD - 9998 + .00.0 0006 STA 8 A+,42 + .00.0 0007 SRA 8 + .00.0 0008 SUB 8 +1 + .00.0 0009 ADL 8 A+ + .00.0 0010 *A CWR 0,02,0 + .00.0 0011 BUN - 0 + .00.0 0012 LOCN LOCN *+1 + .00.0 0013 CNST 40000990000 + .00.0 0014 CNST $RITE $ + .00.0 0015 CNST 90000000000 + .00.0 0016 LOCN LOCN + .00.0 0012 FINI RITE + 12 +0000000001 diff --git a/software/BALGOL/BALGOL-Intrinsics/ROMXX.baca b/software/BALGOL/BALGOL-Intrinsics/ROMXX.baca new file mode 100644 index 0000000..a618ce5 --- /dev/null +++ b/software/BALGOL/BALGOL-Intrinsics/ROMXX.baca @@ -0,0 +1,55 @@ + .00.0 0100 ERROR DEFN 100 + .00.0 0200 SQRT DEFN 200 + .00.0 0000 ROMXX F4247 3,1,0 + .00.0 0001 DLB 8 *-1,44,0 + .00.0 0002 BOF 6 ERROR+21 + .00.0 0003 LDR 8 ROM2 + .00.0 0004 STR 8 B+,04 + .00.0 0005 CFA 6 ERROR+51,00 =1.0= + .00.0 0006 BCH 8 B+ + .00.0 0007 BFA 8 E+,22,51 + .00.0 0008 BZA 8 F+ + .00.0 0009 STA 6 ERROR+52 + .00.0 0010 FMU 6 ERROR+52 + .00.0 0011 SLT 2 + .00.0 0012 STR 8 E+,02 + .00.0 0013 LBC B E+ + .00.0 0014 SRT - 51 + .00.0 0015 SUB 8 +10000000000 + .00.0 0016 SLT 10 + .00.0 0017 SUB 6 ERROR+48 =5(11)= + .00.0 0018 SUB 6 ERROR+48 + .00.0 0019 SLT 10 + .00.0 0020 BOF 8 *+2 + .00.0 0021 F4248 51,12,+1 + .00.0 0022 DLB 8 *-1,44,0 + .00.0 0023 *D BFA 8 C+,11,0 + .00.0 0024 STB 8 E+,04 + .00.0 0025 LDR 8 E+ + .00.0 0026 SLT 18 + .00.0 0027 *G LDB 8 ROMXX + .00.0 0028 BUN 6 SQRT+2 + .00.0 0029 *C SLT 1 + .00.0 0030 DBB 8 D-,1 + .00.0 0031 *E LSA 1 + .00.0 0032 *F FAD 6 ERROR+51 =1.0= + .00.0 0033 BUN 8 G- + .00.0 0034 *B LDR 8 ROM1 + .00.0 0035 LDB 8 ROMXX + .00.0 0036 BUN 6 ERROR+7 + .00.0 0037 ROM1 CNST $ROMXX$ + .00.0 0038 ROM2 HLT 8 ROM1 + .00.0 0039 ROM3 CAD 8 +5115707963 + .00.0 0040 LDR 6 ERROR+52 + .00.0 0041 BZR - 0 + .00.0 0042 SLT 0 + .00.0 0043 BUN - 0 + .00.0 0044 LOCN LOCN *+3 + .00.0 0047 CNST 40000990000 + .00.0 0048 CNST $ROMXX,REAL(REAL) ERROR=1 SQRT=2 $ + .00.0 0055 CNST 90000000000 + .00.0 0056 LOCN LOCN + .00.0 0044 FINI ROMXX + 44 +1000000000 + 45 +0000000001 + 46 +5115707963 diff --git a/software/BALGOL/BALGOL-Intrinsics/SINH.baca b/software/BALGOL/BALGOL-Intrinsics/SINH.baca new file mode 100644 index 0000000..1a5975e --- /dev/null +++ b/software/BALGOL/BALGOL-Intrinsics/SINH.baca @@ -0,0 +1,41 @@ + .00.0 0100 EXP DEFN 100 + .00.0 0200 ERROR DEFN 200 + .00.0 0000 SINH CLR + .00.0 0001 CFA 6 EXP+71,00 + .00.0 0002 BCH 8 C+ + .00.0 0003 CFA 8 +5050000000,00 + .00.0 0004 BCL 8 A+ + .00.0 0005 STP 6 EXP + .00.0 0006 BUN 6 EXP+2 + .00.0 0007 STA 6 ERROR+52 + .00.0 0008 CSU 6 ERROR+51 =1.0= + .00.0 0009 FDV 6 ERROR+52 + .00.0 0010 FAD 6 ERROR+52 + .00.0 0011 FMU 8 +5050000000 + .00.0 0012 *B LDB 8 SINH + .00.0 0013 BUN - 0 + .00.0 0014 *A STA 6 ERROR+52 + .00.0 0015 FMU 6 ERROR+52 + .00.0 0016 STA 6 ERROR+49 B + .00.0 0017 FMU 8 +4719841270 + .00.0 0018 FAD 8 +4883333333 + .00.0 0019 FMU 6 ERROR+49 B + .00.0 0020 FAD 8 +5016666667 + .00.0 0021 FMU 6 ERROR+49 B + .00.0 0022 FMU 6 ERROR+12 + .00.0 0023 FAD 6 ERROR+52 + .00.0 0024 BUN 8 B- + .00.0 0025 *C LDB 8 SINH + .00.0 0026 LDR 8 $SINH$ + .00.0 0027 BUN 6 ERROR + .00.0 0028 LOCN LOCN *+5 + .00.0 0033 CNST 40000990000 + .00.0 0034 CNST $SINH,REAL(REAL) EXP=1 ERROR=2 $ + .00.0 0040 CNST 90000000000 + .00.0 0041 LOCN LOCN + .00.0 0028 FINI SINH + 28 $SINH + 29 +4719841270 + 30 +4883333333 + 31 +5050000000 + 032 +5016666667 diff --git a/software/BALGOL/BALGOL-Intrinsics/TAN.baca b/software/BALGOL/BALGOL-Intrinsics/TAN.baca new file mode 100644 index 0000000..d37eb93 --- /dev/null +++ b/software/BALGOL/BALGOL-Intrinsics/TAN.baca @@ -0,0 +1,30 @@ + .00.0 0100 SIN DEFN 100 + .00.0 0200 COS DEFN 200 + .00.0 0300 ERROR DEFN 300 + .00.0 0000 TAN CRB + .00.0 0001 STA 8 X + .00.0 0002 LDR 8 TAN2 + .00.0 0003 STP 6 SIN + .00.0 0004 BUN 6 COS+4 + .00.0 0005 BZA 8 A+ + .00.0 0006 STA 8 COSX + .00.0 0007 CAD 8 X + .00.0 0008 STP 6 SIN + .00.0 0009 BUN 6 SIN + .00.0 0010 FDV 6 COSX + .00.0 0011 LDB 8 TAN + .00.0 0012 BUN - 0 + .00.0 0013 *A LDR 8 X + .00.0 0014 CFR 8 *+1,22 + .00.0 0015 F424- 5700,34,0 + .00.0 0016 LDB 8 TAN + .00.0 0017 LDR 8 TAN1 + .00.0 0018 BUN 6 ERROR+7 + .00.0 0019 X CNST 0 + .00.0 0020 COSX CNST 0 + .00.0 0021 TAN1 CNST $TAN$ + .00.0 0022 TAN2 HLT TAN1 + .00.0 0023 CNST 40000990000 + .00.0 0024 CNST $TAN,REAL(REAL) SIN=1 COS=2 ERROR=3 $ + .00.0 0031 CNST 90000000000 + .00.0 0032 FINI TAN diff --git a/software/BALGOL/BALGOL-Intrinsics/TANH.baca b/software/BALGOL/BALGOL-Intrinsics/TANH.baca new file mode 100644 index 0000000..197b36c --- /dev/null +++ b/software/BALGOL/BALGOL-Intrinsics/TANH.baca @@ -0,0 +1,33 @@ + .00.0 0100 SINH DEFN 100 + ,00,0 0200 COSH DEFN 200 + .00.0 0300 ERROR DEFN 300 + .00.0 0000 TANH NOP + .00.0 0001 STA 8 X + .00.0 0002 LDR 8 TANH2 + .00.0 0003 CFA 8 +5250000000,00 + .00.0 0004 BCH 8 B+ + .00.0 0005 STP 6 COSH + .00.0 0006 BUN 6 COSH+2 + .00.0 0007 STA 8 COSHX + .00.0 0008 BZA 8 A+ + .00.0 0009 CAD 8 X + .00.0 0010 STP 6 SINH + .00.0 0011 BUN 6 SINH + .00.0 0012 FDV 8 COSHX + .00.0 0013 *A LDB 8 TANH + .00.0 0014 BUN - 0 + .00.0 0015 *B CAD 6 ERROR+51 =1.0= + .00.0 0016 LDR 8 X + .00.0 0017 SLT 0 + .00.0 0018 BUN 8 A- + .00.0 0019 X CNST 0 + .00.0 0020 COSHX CNST 0 + .00.0 0021 TANH2 HLT 8 TANH1 + .00.0 0022 TAHN1 CNST $TANH$ + .00.0 0023 LOCN LOCN *+1 + .00.0 0024 CNST 40000990000 + .00.0 0025 CNST $TANH,REAL(REAL) SINH=1 COSH=2 ERROR=3 $ + .00.0 0033 CNST 90000000000 + .00.0 0034 LOCN LOCN + .00.0 0023 FINI TANH + 23 +5250000000 diff --git a/software/BALGOL/BALGOL-Intrinsics/TRACE.baca b/software/BALGOL/BALGOL-Intrinsics/TRACE.baca new file mode 100644 index 0000000..da54b4e --- /dev/null +++ b/software/BALGOL/BALGOL-Intrinsics/TRACE.baca @@ -0,0 +1,29 @@ + .00.0 0100 ERROR DEFN 100 + .00.0 0000 TRACE BCS *,9 + .00.0 0001 DLB 8 Y+,44,0 + .00.0 0002 HOLD BOF 6 ERROR+21 + .00.0 0003 TR1 LDB 8 TRACE + .00.0 0004 STA 8 HOLD0 + .00.0 0005 CAD - 9999 + .00.0 0006 STA 8 HOLD,44 + .00.0 0007 BFA 8 Y+,44,0 + .00.0 0008 *A CAD - 0 + .00.0 0009 CFA 8 TR1,04 + .00.0 0010 BCU 8 *+2 + .00.0 0011 IBB 8 A-,2 + .00.0 0012 ADA 8 HOLD + .00.0 0013 ADD 8 +9999000000 + .00.0 0014 BOF 8 *+1 + .00.0 0015 *Y F4247 3,44,0 + .00.0 0016 BFA 2,44,0 + .00.0 0017 *Z LDB 8 TRACE + .00.0 0018 CAD 8 HOLD0 + .00.0 0019 BUN - 0 + .00.0 0020 HOLD0 CNST 0 + .00.0 0021 LOCN LOCN *+1 + .00.0 0022 CNST 40000990000 + .00.0 0023 CNST $TRACE ERROR=1 $ + .00.0 0026 CNST 90000000000 + .00.0 0027 LOCN LOCN + .00.0 0021 FINI TRACE + 21 +9999000000 diff --git a/software/BALGOL/BALGOL-Overlay.card b/software/BALGOL/BALGOL-Overlay.card index fcebb1b..c13d456 100644 Binary files a/software/BALGOL/BALGOL-Overlay.card and b/software/BALGOL/BALGOL-Overlay.card differ diff --git a/software/BALGOL/README.txt b/software/BALGOL/README.txt index 0151a8b..a7451af 100644 --- a/software/BALGOL/README.txt +++ b/software/BALGOL/README.txt @@ -7,6 +7,17 @@ Unless otherwise specified, all files are in standard Windows text format, with carriage-return/line-feed delimiters. + [WORK IN PROGRESS] + + +BALGOL-Generator.bacg + Assembly listing of the BALGOL comiler-generator program, + transcribed by Paul Kimpel from + http://archive.computerhistory.org/resources/text/Knuth_Don_X4100/ + PDF_index/k-1-pdf/k-1-u2196-balgol220compiler.pdf. + This program is written using a different assembly language than the + other BALGOL components below. + BALGOL-Main.baca Assembly listing of the BALGOL compiler main-line module, transcribed by Paul Kimpel from @@ -29,11 +40,13 @@ BALGOL-Overlay.card Card-image input deck of BALGOL-Overlay.baca prepared for input to the tools/BAC-Assembler script. -BALGOL-FLOAT.baca, BALGOL-FLOAT.card - Assembly listing and input card deck for the BALGOL FLOAT intrinsic - function. - - [work in progress] +BALGOL-Intrinsics/ + Assembly listings (.baca) and input card decks (.card) for the + BALGOL intrinsic function library, transcribed by Paul Kimpel from + http://archive.computerhistory.org/resources/text/Knuth_Don_X4100/ + PDF_index/k-1-pdf/k-1-u2196-balgol220compiler.pdf. + These transcriptions reflect some notations and corrections hand- + coded on the listings. Paul Kimpel January 2017 diff --git a/software/tools/BAC-Assembler.html b/software/tools/BAC-Assembler.html index 801a845..55797c7 100644 --- a/software/tools/BAC-Assembler.html +++ b/software/tools/BAC-Assembler.html @@ -126,6 +126,7 @@ window.addEventListener("load", function() { var eolRex = /([^\n\r\f]*)((:?\r[\n\f]?)|\n|\f)?/g; var panel = $$("TextPanel"); + var rTrimRex = /\s*$/; var sprintLimit = 100; // cards processed before yielding control // Input field 0-relative column locations @@ -162,6 +163,7 @@ window.addEventListener("load", function() { newOffset: -1}; // Assembly storage + var autoSymTab = {}; // auto-declared (undefined) symbol table var errorCount = 0; // assembler error count var errorTank = []; // holding area for errors on current line var location = 0; // current instruction address @@ -418,6 +420,20 @@ window.addEventListener("load", function() { return result; } + /**************************************/ + function rTrim(s) { + /* Returns the string "s" stripped of any trailing whitespace */ + var x = s.search(rTrimRex); + + if (x < 0 ) { + return s; + } else if (x < 1) { + return ""; + } else { + return s.substring(0, x); + } + } + /**************************************/ function clearPanel() { /* Clears the text panel */ @@ -1644,6 +1660,7 @@ window.addEventListener("load", function() { location = 0; cardData.atEOF = false; cardData.serial = 0; + autoSymTab = {}; pointTab = {}; poolTab = {}; symTab = {}; @@ -1692,7 +1709,7 @@ window.addEventListener("load", function() { text = padLeft(seq, 8, " ") + " " + padLeft(location, 4, "0") + " "; } - text += padRight(label, 6) + padRight(opCode || " ", 4) + padRight(sign, 2, " ") + operand; + text += padRight(label, 6) + padRight(opCode || " ", 4) + padRight(sign, 2, " ") + rTrim(operand); printLine(text); if (errorTank.length > 0) { dumpErrorTank(); @@ -1850,6 +1867,7 @@ window.addEventListener("load", function() { if (cardData.atEOF) { done = true; if (!finito) { + finito = true; printError("EOF encountered before FINI in Pass 1"); } } else if (++sprintCount > sprintLimit && !continuedString) { @@ -1860,15 +1878,20 @@ window.addEventListener("load", function() { if (!finito) { setTimeout(assemblePass1, 100); } else { - buildPoolPass1(); - - // Wrap up Pass 1, check for undefined symbols - for (text in symTab) { - if (symTab[text] < 0) { - printError("SYMBOL NOT DEFINED: " + text); + // Wrap up Pass 1 and check for undefined symbols. + // Oddly, undefined symbols appear to have been implicitly defined at the end, + // so build a table of them and assign locations. + for (label in symTab) { + if (symTab[label] < 0) { + autoSymTab[label] = location; + symTab[label] = location; + printPass1("", location, label, "", "", ""); + ++location; } } + buildPoolPass1(); + dumpErrorTank(); printLine("END OF PASS 1, ERRORS = " + errorCount); dumpSymbolTable(); @@ -1958,7 +1981,7 @@ window.addEventListener("load", function() { " " + padLeft(location, 4, "0") + wordText + " "; } - text += padRight(label, 6) + padRight(opCode || " ", 4) + padRight(sign, 2, " ") + operand; + text += padRight(label, 6) + padRight(opCode || " ", 4) + padRight(sign, 2, " ") + rTrim(operand); printLine(text); if (errorTank.length > 0) { dumpErrorTank(); @@ -2161,6 +2184,7 @@ window.addEventListener("load", function() { if (cardData.atEOF) { done = true; if (!finito) { + finito = true; printError("EOF encountered before FINI in Pass 2"); } } else if (++sprintCount > sprintLimit && !continuedString) { @@ -2171,6 +2195,11 @@ window.addEventListener("load", function() { if (!finito) { setTimeout(assemblePass2, 100); } else { + // dump the auto-defined symbols + for (label in autoSymTab) { + printPass2("", null, autoSymTab[label], 0, label, "", "", ""); + } + buildPoolPass2(); // Wrap up Pass 2, check again for undefined symbols (shouldn't be any) diff --git a/software/tools/BAC-Xscript-Reformatter.wsf b/software/tools/BAC-Xscript-Reformatter.wsf index cca9824..f59c04a 100644 --- a/software/tools/BAC-Xscript-Reformatter.wsf +++ b/software/tools/BAC-Xscript-Reformatter.wsf @@ -44,18 +44,18 @@ Dim fso Dim lastSeq '--------------------------------------- -Function PadLeft(ByVal s, ByVal chars) +Function PicZn(ByVal s, ByVal chars) 'Formats the string "s" to be exactly "chars" characters long, padding 'with spaces or truncating on the left, as necessary. Dim sLen sLen = Len(s) If sLen < chars Then - PadLeft = Space(chars - sLen) & s + PicZn = Space(chars - sLen) & s ElseIf sLen > chars Then - PadLeft = Right(s, chars) + PicZn = Right(s, chars) Else - PadLeft = s + PicZn = s End If End Function @@ -98,10 +98,10 @@ Sub WriteCard(cardFile, seq, text) Dim seqNr Dim seqText - seqText = PadLeft(seq, 8) + seqText = PicZn(seq, 8) image = PicXn(text, 72) If Len(Trim(seqText)) = 0 Then - seqText = Replace(lastSeq, " ", "") + seqText = Replace(Replace(lastSeq, " ", ""), ".", "") If IsNumeric(seqText) Then seqNr = CLng(seqText) Else @@ -109,7 +109,7 @@ Sub WriteCard(cardFile, seq, text) End If seqNr = seqNr + 10 - seqText = PadLeft("0" & seqNr, 6) + seqText = PicZn("0" & seqNr, 6) seqText = Mid(seqText, 1, 3) & " " & Mid(seqText, 4, 2) & " " & Mid(seqText, 6) End If @@ -122,12 +122,15 @@ Sub ExtractCode(byVal xScriptName, byVal deckName) 'Extracts source from an assembler transcription file. 'The assembler source is written as card images to a file with the same 'name as the transcription file, but modified with a ".card" extension. - Dim addr + Dim address Dim card Dim cardFile + Dim label Dim lastAddr Dim line Dim lineNr + Dim operand + Dim opCode Dim seq Dim text Dim word @@ -137,28 +140,41 @@ Sub ExtractCode(byVal xScriptName, byVal deckName) Const labelCol = 21 Const opCodeCol = 27 Const operandCol = 33 + Const lastCol = 90 Set xFile = fso.OpenTextfile(xScriptName, ForReading, False, False) lineNr = 1 Set cardFile = fso.OpenTextFile(deckName, ForWriting, True, True) + line = xFile.ReadLine + If Mid(line, addrCol, 2) = " " Then + text = Mid(line, addrCol+2, opCodeCol-addrCol-2) + If Len(Trim(text)) > 0 Then + '-- assume it's a heading line and convert to a REM card + WriteCard cardFile, Mid(line, 1, 8), "1" & Space(9) & "REM " & Mid(line, addrCol+2, lastCol-addrCol+2) + line = xFile.ReadLine + End If + End If Do While Not xFile.AtEndOfStream - line = xFile.ReadLine lineNr = lineNr+1 - seq = RTrim(Mid(line, 1, 8)) + address = RTrim(Mid(line, addrCol, 4)) + label = RTrim(Mid(line, labelCol, 5)) + opCode = RTrim(Mid(line, opCodeCol, 5)) + operand = RTrim(Mid(line, operandCol, lastCol-operandCol)) + seq = LTrim(Mid(line, 1, 8)) - '-- If the sequence and opCode fields are blank, and address field is not present, generate a REM card - '-- If the sequence field is blank, and the address field IS present, do not generate a card - If Len(seq) = 0 And Len(RTrim(Mid(line, opCodeCol, 5))) = 0 And Len(RTrim(Mid(line, addrCol, 4))) = 0 Then - WriteCard cardFile, seq, "1" & Space(9) & "REM " & Mid(line, operandCol) - ElseIf Len(seq) > 0 Or Len(RTrim(Mid(line, addrCol, 4))) = 0 Then + '-- If the address and opCode fields are blank, generate a REM card + '-- If the sequence field is blank, and the address field is not, do not generate a card + If Len(opCode) = 0 And Len(address) = 0 Then + WriteCard cardFile, seq, "1" & Space(9) & "REM " & operand + ElseIf Len(seq) > 0 Or Len(address) = 0 Then '-- Reformat and write the assembler card image WriteCard cardFile, seq, "1" & Space(3) & _ - PicXn(Mid(line, labelCol, 5), 6) & _ - PicXn(Mid(line, opCodeCol, 5), 6) & _ - Mid(line, operandCol) + PicXn(label, 6) & PicXn(opCode, 6) & operand End If + + line = xFile.ReadLine Loop cardFile.Close @@ -181,7 +197,7 @@ Else If args.Count > 1 Then lastSeq = Trim(args.Item(1)) Else - lastSeq = "01 0" + lastSeq = "09 0" End If End If diff --git a/software/tools/README.txt b/software/tools/README.txt index 4485328..fcb30f9 100644 --- a/software/tools/README.txt +++ b/software/tools/README.txt @@ -6,6 +6,9 @@ Unless otherwise specified, all files are in standard Windows text format, with carriage-return/line-feed delimiters. + [WORK IN PROGRESS] + + BAC-Assembler.html HTML/Javascript assembler for the assembly language dialect used with the BALGOL Main, Overlay, and intrinsic functions.