Kidsgrove Algol Compiler - Brick 42
This assembler listing has hot links for all references to P-routines.
You can click on the routine number in code such as JS16P295;
or V0P299; and jump to the routine.
When you have seen enough of it, you can use the back button to carry on where you left off.
The original source was in the form of a single PDF file for each brick.
Here is the
PDF file for brick 42.
Hot links to images of individual pages are embedded in the text.
Loaded 8944 bytes for KAB42.txt
Specifying Y0 leaves gap of 502 words
Relocated 502
Finished
Reached end of file
=============== Second pass
===========================
4506 W0 = E2374
17500 Y0 = E8000
4506 YA0 = E2374
14347 YC0 = E6375
15500 YY0 = E6976
16500 YZ0 = E7488
0/0: 200 266 100 [ original source of the next page
ST11104; TL600; START1600;
Y0=E8000; [hux
V; [W; [hux
YA4000 ; YC600 ;
YY511 ; YZ511 ;
4/0: 203 266 111|203 266 111 RESTART; J1 ; J1 ;
PROGRAM;
3100/0: 200 326 254|200 327 071 JSP850; JSP886;
3101/0: 320 013 071|164 011|222 046 103 Z38; SHL4; J3<Z; [test TEXT as per original
3102/2: 304 005 220|201 266 107 SETB2620; J2;
3103/2: 304 004 224|320 013 125|164 341|164 041 3; SETB2224; Z10; SHL-16; SHL+16;
3105/0: 304 005 220|304 000 001|164 035|011|011|321 013 125 SETB2620; SET1; SHL+14; OR; OR; =Z10; [fix to ask for Call Matrix and not the LP hux
[SETB102620; SHL+32; SHL-32; OR; =Z10;
3107/1: 170 024|154 001|304 336 010|170 022 2; =I1; C0TOQ1; SETB157010; =M1;
3110/4: 171 036|200 260 106 Q1; JE70;
3111/3: 320 013 070|223 046 113 1; Z39; J4<Z;
3112/3: 304 017 312|200 266 226 SET4042; JP7;
3113/3: 304 006 125|201 266 107 4; SETB3125; J2;
=== Start P2V8; at address 1622/3126
V-store at 03115 = 035 100 036 077 000 000 P2V8; V0=QAYZ0/AYZ255/0; (BUFFER 1);
V-store at 03116 = 036 100 037 077 000 000 V1=QAYZ256/AYZ511/0; (BUFFER 2);
V-store at 03121 = 242 104 243 304 140 004 V4=B5044224361060004; (F/B/C); []]
V-store at 03122 = 000 000 000 000 340 004 V5=B160004; (TRANSFER);
V-store at 03123 = 000 000 000 000 110 004 V6=B44004; (CBN); []]
V-store at 03125 = 000 000 000 000 152 004 V8=B65004; (SKIP TO BLOCK N);
3126/0: 300 006 117 V2; (FETCH NEXT WORD NORMAL FNTRV);
3126/3: 170 376|240 366 141 10; =Q15; J7C15Z;
3127/2: 102 360|171 376 M0M15Q; Q15;
3130/0: 301 006 117|041|301 006 120 14; =V2; ZERO; =V3;
3131/1: 200 360 000 EXIT1; (NORMAL EXIT);
(INITIAL ENTRY FORWARDS READ);
3131/4: 300 006 116|300 006 121|170 376|171 370 1; V1; V4; =Q15; C15;
3133/2: 300 006 115|170 376|170 362|171 376|200 320 106 6; V0; =Q15; =M15; Q15; JSE70;
3135/2: 201 266 143 J13; (JSP903;) [hux diag
3135/5: 300 006 123|200 320 106 V6; JSE70;
3136/5: 201 266 143 J13;
3137/2: 301 006 124|042|200 146 130|201 266 143 =V7; DUP; J14≠Z; J13;
3141/0: 300 006 122|200 320 106 7; V5; JSE70;
3142/0: 201 266 143 J13;
3142/3: 042|203 146 126 8; DUP; J10≠Z;
3143/1: 304 037 316|200 266 226 13; SET8142; JP7; (FAILURE);
(INITIA1 ENTRY BACKWARDS READ);
3144/1: 300 006 116|300 006 121|170 376|171 364|202 266 133 2; V1; V4; =Q15; I15; J6;
(CLOSE);
3146/2: 204 326 131|320 013 125|164 301|164 041|304 152 004|011|200 320 106|201 266 143
16; JS1; Z10; SHL-32; SHL+16; SETB65004; OR; JSE70; J13;
3151/4: 200 266 141 J7;
3152/1: 300 006 121|200 320 106 3; V4; JSE70;
3153/1: 201 266 143 J13;
3153/4: 200 360 000 EXIT1;
3154/1: 300 006 116|304 242 204|202 266 133 15; V1; SETB121204; J6;
(INITIAL EHTRY FOR FETCH PREVIOUS WORD);
3155/4: 300 006 117|170 376|171 364|027|170 364|140 360|140 360 4; V2; =Q15; I15;NEG; =I15; M+I15; M+I15; [hux
3160/0: 202 266 161 J9;
(NORMAL ENTRY POR FETCH PREVIOUS WORD);
3160/3: 300 006 120|170 376 5; V3; =Q15;
3161/2: 102 360|171 376|301 006 120|200 360 000 9; M0M15Q; Q15; =V3; EXIT1;
(WHAT IS CURRANT POSITION);
3163/0: 300 006 123|200 320 106 11; V6; JSE70;
3164/0: 201 266 143 J13;
3164/3: 300 006 124|036|304 000 377|042|300 006 117 V7; -; SETB377; DUP; V2;
[ original source of the next page
3166/2: 054|012|054|164 021|011 AND; PERM; AND; SHL+8; OR;
3167/2: 200 360 000 EXIT1;
(SKIP TO GIVEN BLOCK);
3167/5: 042|164 361|300 006 124|056|300 006 125 12; DUP; SHL-8; V7; +; V8;
3171/3: 170 376|170 364|171 376|200 320 106 =Q15; =I15; Q15; JSE70;
3173/0: 201 266 143 J13;
3173/3: 167 361|164 361|167 021|300 006 122|200 320 106 SHC-8; SHL-8; SHC+8; V5; JSE70;
3175/3: 201 266 143 J13;
3176/0: 170 376|042|171 362|036|027 =Q15; DUP; M15; -; NEG;
3177/1: 172 370|170 362|171 376|301 006 117|200 360 000 =+C15; =M15; Q15; =V2; EXIT1;
=== Start P6V6; at address 1673/3211
V-store at 03202 = 033 100 034 077 242 105 P6V6; V0=QAYY0/AYY255/B121105;
V-store at 03203 = 034 100 035 077 000 000 V1=QAYY256/AYY511/0;
V-store at 03204 = 000 000 000 000 000 000 V2=0;
V-store at 03205 = 000 000 000 000 340 005 V3=B160005;
V-store at 03206 = 000 000 000 000 140 105 V4=B60105;
V-store at 03207 = 000 000 175 004 072 321 V5=B17501035321;
3211/0: 300 006 204 V2;
3211/3: 170 376|103 360|243 366 216 2; =Q15;=M0M15Q; J4C15Z;
3212/4: 171 376 Q15;
3213/0: 301 006 204|200 360 000 7; =V2; EXIT1;
3214/0: 300 006 203|300 006 202 1; V1; V0;
3215/0: 200 320 106|200 266 221|200 266 213 JSE70; J6; J7;
3216/3: 300 006 205|200 320 106|200 266 221|301 006 204 4; V3; JSE70; J6; =V2;
3220/3: 200 360 000 EXIT1;
3221/0: 304 040 062|200 266 226 6; SET8242; JP7;(FAILURE);
3222/0: 300 006 204|170 365|300 006 206|170 362 3; V2; =RI15; V4; =M15;
3223/4: 171 376|200 320 106|200 266 221|200 360 000 Q15; JSE70; J6; EXIT1;
=== Start P7V-1; at address 1686/3226
3226/0: 170 365 P7; ( JSP305; ); =RI15; [ diagnostic removed
3226/2: 320 013 070|041|033|047 Z39; ZERO; NOT; STR;
3227/2: 015|011|321 013 070 NEV; OR; =Z39;
3230/1: 304 000 200|170 362 SETB200; =M15;
3231/0: 171 376|200 260 106 Q15; JE70;
=== Start P3V-1; at address 1690/3232
P3; (SEARCH LEVEL PARAMETERS FOR A LEVEL L);
3232/0: 041|170 323|304 000 377|167 361|065 ZERO; =RM13; SETB377; SHC-8; REV; []]
3233/3: 320 333 055|170 336|171 324|042|170 322 1; Z50M13; =Q13; I13; DUP; =M13;
3235/1: 203 146 236 J2≠Z;
3235/4: 065|052|200 360 000 REV; ERASE; (NONE EXIST N1=L); EXIT1;
3236/3: 043|320 333 053|015|054|203 146 233 2; DUPD; Z52M13; NEV; AND; J1≠Z;
3240/0: 065|052|202 360 001 REV; ERASE; (N1=L; M13=ALP 0F L); EXIT2;
=== Start P830V-1; at address 1697/3241
P830; (FIND PIR);
3241/0: 041|065|042|304 240 000 ZERO; REV; DUP; SETB120000;
3242/0: 042|066|054|015|164 101|223 146 252 DUP; CAB; AND; NEV; SHL+32; J1=Z;
3243/3: 310 017 103|170 351 Y3; =RC14; [j3; [hux to skip PIR test
3244/2: 265 346 245 2; J3C14NZ;
[ JSP902; JSP903;
3244/5: 304 004 166|200 266 226 SET1142; JP7; (NO PIR);
3245/5: 312 350 347|042|012 3; YC0M14Q; DUP; PERM;
3246/4: 164 301|222 026 250 SHL-32; J4=;
3247/3: 065|052|202 266 244 REV; ERASE; J2;
3250/2: 052|065|052|042 4; ERASE; REV; ERASE; DUP;
3251/0: 164 101|164 301|065|164 041|164 301 SHL+32; SHL-32; REV; SHL+16; SHL-32;
3252/3: 164 107|164 273|200 360 000 1; SHL+35; SHL-35; EXIT1;
=== Start P850V-1; at address 1708/3254
3254/0: 201 326 144|200 326 214|304 030 347|304 011 107 P850; (JSP903;) JS2P2;( JSP903;) JS1P6; SETAYC0; SETAYA1; [hux diag
3256/0: 036|311 017 122 -; =Y18;
3256/4: 200 326 126|042|304 001 377|054|304 001 234 JSP2; DUP; SETB777; AND; SETB634;
3260/3: 015|221 146 262 NEV; J1=Z;
3261/1: 304 000 216|200 266 226 SET0142; JP7; (FIRST WORD NOT END PROG);
3262/1: 200 326 211|200 326 126|042|304 000 377|054 1; JSP6; JSP2; DUP; SETB377; AND;
3264/0: 304 000 236|015|221 146 266 SETB236; NEV; J2=Z;
[ original source of the next page
3265/1: 304 000 362|200 266 226 SET0242; JP7; (SECOND WORD NOT HD);
3266/1: 311 017 121 2; =Y17;
3266/4: 310 017 121|164 301|200 146 313 3; Y17; SHL-32; J30≠Z;
3270/0: 200 326 126|042|304 001 377|054|304 001 214 JSP2; DUP; SETB777; AND; SETB614;
3271/5: 015|223 146 273 NEV; J4=Z;
3272/3: 304 001 126|200 266 226 SET0342; JP7; (LAST WORD NOT BEGIN PROG);
3273/3: 200 326 211|201 326 152|200 326 222 4; JSP6; JS3P2; JS3P6;
3275/0: 304 344 004|200 320 106|200 266 277|200 266 300 SETB162004; JSE70; J5; J6;
3277/0: 304 001 272|200 266 226 5; SET0442; JP7; (FAIL TO INTERCHANGE);
3300/0: 201 326 144|200 326 214 6; JS2P2; JS1P6;
3301/0: 200 326 126|042|304 001 377|054|304 001 214 JSP2; DUP; SETB777; AND; SETB614;
3302/5: 015|223 146 304 NEV; J7=Z;
3303/3: 304 002 036|200 266 226 SET0542; JP7; (WRONG WORD ON BK D READ);
3304/3: 200 326 211|200 326 126|042|304 001 377|054 7; JSP6; JSP2; DUP; SETB777; AND;
3306/2: 304 001 234|015|203 146 304 SETB634; NEV; J7≠Z;
3307/3: 200 326 211|200 326 222|201 326 152 JSP6; JS3P6; JS3P2;
3311/0: 304 344 004|200 320 106|200 266 277 SETB162004; JSE70; J5;
3312/3: 200 360 000 EXIT1;
3313/0: 304 000 001|311 017 100 30; SET1; =Y0;
3314/0: 310 017 121|164 041|164 301|311 017 101 Y17; SHL+16; SHL-32; =Y1;
3315/4: 200 326 126|170 031 JSP2; =RC1;
3316/3: 243 026 320 32; J31C1Z;
3317/0: 200 326 126|313 030 347|203 266 316 JSP2; =YC0M1Q; J32;
3320/3: 200 326 126|170 030 31; JSP2; =C1;
3321/2: 242 026 323 33; J34C1Z;
3321/5: 200 326 126|313 030 347|202 266 321 JSP2; =YC0M1Q; J33;
3323/2: 304 033 100|304 030 350|036|171 022|036 34; SETAYY0; SETAYC1; -; M1; -;
3325/0: 203 046 326 J25≥Z;
3325/3: 304 004 332|200 266 226 SET1242; JP7; (NQT ENOUGH ROOM POR EC);
3326/3: 171 022|042|311 017 103|170 031 25; M1; DUP; =Y3; =RC1;
3327/5: 241 026 360 35; J41C1Z;
3330/2: 310 030 347|042|042 YC0M1; DUP; DUP;
3331/1: 164 301|311 017 111 SHL-32; =Y9;
3332/0: 164 041|164 301|311 017 110 SHL+16; SHL-32; =Y8;
3333/1: 164 101|164 301|311 017 107 SHL+32; SHL-32; =Y7;
3334/2: 304 040 000|042|310 017 111|054|015 SETB20000; DUP; Y9; AND; NEV;
3335/5: 205 146 341 J37≠Z;
3336/2: 310 017 107|310 017 110|164 041|011|310 017 111 36; Y7; Y8; SHL+16; OR; Y9;
3340/2: 164 101|011|313 030 347 SHL+32; OR; =YC0M1Q;
3341/2: 205 266 327 J35;
3341/5: 304 040 000|042|310 017 110|054 37; SETB20000; DUP; Y8; AND;
3343/1: 015|222 146 336 NEV; J36=Z;
3343/5: 310 017 103|170 051 Y3; =RC2;
3344/4: 261 046 346 38; J39C2NZ;
3345/1: 304 002 202|200 266 226 SET0642; JP7; (TIR NOT GIVEN PIR);
3346/1: 310 050 347|042|164 301|311 017 114 39; YC0M2; DUP; SHL-32; =Y12;
3347/4: 042|164 041|164 301|311 017 113 DUP; SHL+16; SHL-32; =Y11;
3351/0: 164 101|164 301|311 017 112 SHL+32; SHL-32; =Y10;
3352/1: 310 017 114|310 017 110|015|220 146 355 Y12; Y8; NEV; J40=Z;
3353/5: 140 040|143 040|204 266 344 M+I2; DC2; J38;
3355/0: 310 017 107|310 017 112|056|311 017 107 40; Y7; Y10; +; =Y7;
3356/4: 310 017 113|311 017 110|205 266 341 Y11; =Y8; J37;
3360/1: 200 326 126|042|304 000 377|054|304 000 236 41; JSP2; DUP; SETB377; AND; SETB236;
3362/0: 015|224 146 363 NEV; J42=Z;
3362/4: 304 002 346|200 266 226 SET0742; JP7; (1ST WORD AFTER EC NOT HD);
3363/4: 042|164 041|164 301|310 017 101|036 42; DUP; SHL+16; SHL-32; Y1; -;
3365/1: 224 146 366 J43=Z;
3365/4: 304 003 112|200 266 226 SET0842; JP7; (LEV NO OF HD NOT SAME);
3366/4: 221 046 370 43; J44<Z;
3367/1: 304 003 256|200 266 226 SET0942; JP7; (HD1 NOT NEGATIVE);
[ original source of the next page
3370/1: 310 017 101|164 121|304 007 372|011|200 326 232 44; Y1; SHL+40; SET2042; OR; JSP3; [error code hux
3372/1: 200 266 226 JP7;
3372/4: 052|320 333 054|164 061|164 271|311 017 106 ERASE; Z51M13; SHL+24; SHL-36; =Y6;
3374/3: 310 017 122|170 123 45; Y18; =RM5;
3375/2: 041|170 330 46; ZERO; =C13;
3375/5: 245 327 000 47; J49C13Z;
3376/2: 171 122|310 017 122|036|224 147 007 M5; Y18; -; J48=Z;
3377/5: 302 131 106|202 267 001 YA0M5Q; J62;
3400/5: 200 326 126 49; JSP2;
3401/2: 042|304 000 377|054|304 000 366|223 027 015 62; DUP; SETB377; AND; SETB366; J50=;
3403/1: 304 000 236|015|203 147 032 SETB236; NEV; J54≠Z;
3404/2: 311 017 121 =Y17;
3404/5: 171 122|310 017 122|036|224 147 007 M5; Y18; -; J48=Z;
3406/2: 304 000 001|170 330|205 266 375 SET1; =C13; J47;
3407/4: 310 017 101|164 121|304 010 136|011|200 326 232 48; Y1; SHL+40; SET2142; OR; JSP3; [error code hux
3411/4: 200 266 226 JP7;
3412/1: 052|310 017 100|033|027|320 333 054 ERASE; Y0; NOT; NEG; Z51M13;
3413/4: 164 365|164 015|011|321 333 054|204 266 266 SHL-6; SHL+6; OR; =Z51M13; J3; [PLANK
3415/3: 052|164 361|311 017 117|261 327 027 50; ERASE; SHL-8; =Y15; J53C13NZ;
3417/0: 041|170 303 ZERO; =RM12;
3417/3: 200 326 126|042|304 000 377|054 63; JSP2; DUP; SETB377; AND;
3420/5: 304 000 236|015|220 147 023 SETB236; NEV; J51=Z;
3422/0: 303 311 106|203 267 017 =YA0M12Q; J63;
3423/0: 311 017 121|171 302|170 310|145 300|140 300 51; =Y17; M12; =C12; I12=-1; M+I12;
3424/5: 241 307 027 52; J53C12Z;
3425/2: 141 120 M-I5;
3425/4: 302 311 106|301 131 106|205 267 024 YA0M12Q; =YA0M5; J52;
3427/1: 310 017 121|164 041|164 301|310 017 117|036 53; Y17; SHL+16; SHL-32; Y15; -;
3431/0: 222 146 375 J46=Z;
3431/3: 304 004 022|200 266 226 SET1042; JP7; (HD AND TN DO NOT AGREE);
3432/3: 042|167 361|201 047 046 54; DUP; SHC-8; J55≥Z;
3433/3: 042|304 000 377|054|304 000 212 DUP; SETB377; AND; SETB212;
3434/5: 015|220 147 040 NEV; J58=Z;
3435/3: 200 326 211|205 266 375 57; JSP6; J47;
3436/3: 167 361|164 321|167 341|203 267 035 67; SHC-8; SHL-24; SHC-16; J57;
3440/0: 042|167 357|223 047 036 58; DUP; SHC-9; J67<Z;
3441/0: 241 327 045 J65C13Z;
3441/3: 302 131 106 YA0M5Q;
3442/0: 042|304 000 377|054|304 000 030 64; DUP; SETB377; AND; SETB30;
3443/2: 015|201 147 052 NEV; J59≠Z;
3444/0: 065|200 326 211|203 267 035 REV; JSP6; J57;
3445/1: 200 326 126|200 267 042 65; JSP2; J64;
3446/1: 042|304 000 234|054|304 000 020|015|223 147 035 55; DUP; SETB234; AND; SETB20; NEV; J57=Z;
3450/1: 042|225 047 062 DUP; J60<Z;
3450/5: 042|223 107 035 DUP; J57>Z;
3451/3: 052|205 266 375 ERASE; J47;
3452/1: 042|164 073|164 257|200 147 062 59; DUP; SHL+29; SHL-41; J61≠Z;
3453/3: 065|041|033|047|015|011 REV; ZERO; NOT; STR; NEV; OR;
3454/3: 164 301|200 326 241|042|310 017 100|032 SHL-32; JSP830; DUP; Y0; MAX;
3456/1: 311 017 100|001|052|065|164 101 =Y0; VR; ERASE; REV; SHL+32;
3457/3: 066|056|065|164 123|164 307 CAB; +; REV; SHL+41; SHL-29;
3460/4: 011|304 000 001|164 025|011|042 OR; SET1; SHL+10; OR; DUP;
3462/0: 065|052|203 267 035 61; REV; ERASE; J57;
3462/5: 042|164 003|223 047 035 60; DUP; SHL+1; J57<Z;
3463/5: 042|164 301|200 326 241|065|052 DUP; SHL-32; JSP830; REV; ERASE;
3465/1: 042|310 017 100|032|311 017 100|001 DUP; Y0; MAX; =Y0; VR;
3466/4: 052|310 017 106|056|065 ERASE; Y6; +; REV;
3467/4: 164 041|011|167 341|203 267 035 SHL+16; OR; SHC-16; J57;
[ This routine uses the Call matrix to find the maximum number of Q-stores used by the
[procedures called by the calling procedure (the one being being processed).
[it then sets the number of Q-stores to be saved (when the caller makes a procedure call) to
[the MIN(caller Q-stores, MAX(callee Q-stores)
=== Start P886V-1; at address 1849/3471
3471/0: 304 000 140|170 031 P886; SET96; =RC1;
3471/5: 320 013 123|304 053 055|056|170 142 Z12; SETAZ50; +; =M6; [ scan Call Matrix
[ original source of the next page
3473/2: 304 000 140|170 051|146 040 1; SET96; =RC2; I2=+2;
3474/3: 041|311 017 100 ZERO; =Y0;
3475/1: 110 046|102 046 2; M6M2N; M6M2Q;
3475/5: 171 022|170 070|166 060|204 047 103 M1; =C3; SHLDC3; J3≥Z;
3477/2: 171 042|164 117|200 326 232|205 267 116 M2; SHL+39; JSP3; J4;
3501/0: 052|320 333 055|164 111|164 251 ERASE; Z50M13; SHL+36; SHL-44;
3502/2: 310 017 100|032|311 017 100|052 Y0; MAX; =Y0; ERASE; [of the number of Q-stores used in the called procs.
3503/4: 052|261 047 075 3; ERASE; J2C2NZ;
3504/2: 140 020|171 022|164 121|200 326 232|200 267 116 M+I1; M1; SHL+40; JSP3; J5; (EXIT);
3506/2: 052|320 333 055|164 111|164 251 ERASE; Z50M13; SHL+36; SHL-44; [no q's used by the caller
3507/4: 310 017 100|032|052 Y0; MAX; (REV; )ERASE; [N1 MIN (caller q-stores, (MAX callees) q-stores
3510/3: 320 333 054|167 321|304 000 017|054 Z51M13; SHC-24;SETB17; AND; [No Qs to be saved so far
3512/0: 032|065|052 MAX; REV;ERASE; (MAX of previous callers and the new caller )
3512/3: 320 333 054|167 321|164 371|164 011 Z51M13; SHC-24; SHL-4; SHL+4;
3514/0: 011|167 061|321 333 054 OR; SHC+24; =Z51M13; [ Number of Q-stores to be saved when a callee is called
3515/0: 143 020 6; DC1;
3515/2: 262 027 073 J1C1NZ;
3515/5: 041 ZERO;
3516/0: 001|052|200 360 000 5; VR; ERASE; EXIT1;
3516/5: 304 020 056|200 266 226 4; SET4142; JP7;
=== Start P-1V-1; at address 1872/3520
Finished
FINISH;
Reached end of file