Kidsgrove Algol Compiler - Brick 84
This assembler listing has hot links for all references to subroutines.
You can click on the routine name in code such as JS.pproc;
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.
Started
Loaded 14981 bytes for KAB84.k4
Reached end of file
=============== Second pass
===========================
!begin
/ KAB84 reads the runtime code from channel 0
/ and then the generated code from channel 6
/ and outputs in KDF9 paper tape code
/ if D3 of Z38 is zero this output is on paper tape
/ otherwise if is on the mag tape used for input to KAB60 and which is now channel 7
/ it then enters slightly modified KAA01 with the MT unit in N1
/ KAA01 lives in the bottom of store and overwrites PANACEA
/ This brick starts higher than usual to leave space
/ Q1 C1 NZ and M1 = -1 if outputting to MT and calling KAA01
/ Q2 Q2 addresses input buffer
/ Q3 C3 counts chars in input word,
/ Q4 C4 is input channel (0 or 6), M4 indexes table
/ Q5 M5 is base of character translation able
/ Q6 drives paper tape punch
/ Q7 M7 is base of output buffer
/ Q8 Q8 addresses output buffer
bsz = 256: / defines size of MT blocks - must match value in KAB00.k4 and mksys2.k4
prog=0: /form B-block
0/0: 200 274 024|000 000 000 J.main; =H 0;
1/0: 000 052 374|000 000 000 =H 11004; =H 0;
2/0: 034 053 102 256 030 230 =P *n *c M *c KAB8;
3/0: 122 112 031 147 134 065 =P 4DH99UPU;
4/0: 200 334 000|200 334 000 prog=4: JS.crash; JS.crash; / restart
5/0: 000 000 000 000 000 000|000 000 000 000 000 000 =0; =0;
7/0: 000 000 014 000 014 377 =Q 0/crash/endfill-1; / filler word
10/0: 000 000 000 000 014 000 =A crash; / used to find start of code when using kal4.c
prog=3072: / make space for loading KAA01
/ -------------------------------------------------------------------
Z0 = 11103: / Z11 should be accessed as F.Z0-11
Z50 = Z0-50:
/ -------------------------------------------------------------------
6000/0: 136 010 crash: MRWDQ0; / must be the first label
!begin !label chopen, chclose; / open and close channels
6000/2: 017|017|017|017|015 140 015 177 242 100 *V0: =Q ipbuff/ipbuff+31/#121100;
6002/0: 015 200 015 237 000 000 V1: =Q ipbuff+32/ipbuff+63/0;
chopen:
6003/0: 300 014 002|300 014 001|066|011 F.V1; F.V0; CAB; OR;
6004/2: 200 320 106|200 334 000|052|200 360 000 JS.70; JS.crash; ERASE; EXITH;
chclose:
6006/0: 304 140 000|011|200 320 106|200 334 000|200 360 000 SET#60000; OR; JS.70; JS.crash; EXITH;
!end
write4: / write out up to 4 chars from MS half
!begin
morech: / more chars to output
6010/1: 300 014 023|166 015 F.ch8; SHLD+6; / not the cleverest code, simple char by char output
6011/0: 042|033|164 255|224 154 020 DUP; NOT; SHL-42; J=Z.wnotfull; / J if more room in assembly word
6012/1: 260 214 020 JCNZ8.bnotfull; / J if buffer not full
6012/4: 130 140|121 140 MWQ6; PARQ6;
6013/2: 171 144|170 203|304 000 040|170 210 FI6; SRM8; SET32; SC8; / reset buffer scan
/ start of kludge to make up for DH's poor PT output
6014/5: 100 140|304 000 006|015|164 125 FMM6/0; SET#06; NEV; SHL+42; / check for outut of case shift at end of buffer
6016/1: 200 154 020 JNEZ.bnotfull; / OK not shift char
6016/4: 166 365 SHLD-6; / push last char back
6017/0: 304 000 006|167 365|011 SET6; SHC-6; OR; / put case shift at start of buffer
/ end of kludge may be able to remove it when writing to real MT
bnotfull:
6020/0: 103 200|041|033 SMMQ8/0; ZERO; NOT; / reset assembly word
6020/4: 301 014 023 wnotfull: S.ch8;
6021/1: 042|164 255|201 154 010 DUP; SHL-42; JNEZ.morech; / stop when no more chars encountered
6022/1: 052|200 360 000 ERASE; EXITH;
6022/5: 017|377 377 377 377 377 377 *ch8: = -1; / assembly word for 8 chars
!end
!begin !label main, chtab;
main: / main(int argc, char **argv)
!begin / needed for memory allocation
/ set up convertion table
6024/0: 304 000 140|170 071 SET.128-32; SRC3; / fill up table for ABS ≥ 100 octal
6024/5: 041|033|164 125|042|164 321|011 ZERO; NOT; SHL+42; DUP; SHL-24; OR;
6026/1: 042|303 075 000|261 074 026 lp1: DUP; SMQ3.chtab+32; JCNZ3.lp1; / ignore all fancy symbols
6027/2: 052 ERASE;
6027/3: 304 000 032|170 071 SET.exchtab-xchtab; SRC3;
6030/2: 304 014 233|170 062 SET.xchtab; SM3;
6031/1: 304 014 340|170 122 SET.chtab; SM5;
6032/0: 102 060|042|170 102|105 105|177 060 *lp: FMMQ3/0; DUP; SM4; SMMH4/5; JCNZS3;
!end / setup
6033/3: 320 013 071|164 007 F.Z0-38; SHL+3; / D3 is request for MT output to KAA01
6034/2: 047|170 036|052 STR; SQ1; ERASE; / indicated by non-zero C1 and M1 = -1
6035/0: 304 010 006|200 320 106|200 260 004 SET#4006; JS.70; J.4; / interchange
6036/3: 262 034 041 JCNZ1.mtout1;
6037/0: 304 000 001|304 000 005|200 220 000 SET1; SET5; OUT; / paper tape punch
6040/3: 170 151|205 274 054 SRC6; J.mtout2;
mtout1:
6041/2: 304 000 107|200 320 106|200 260 004 SET#107; JS.70; J.4; / get device number
6042/5: 170 156|261 154 045 SQ6; JCNZ6.ch6ok; / J if channel 6 already has a tape allocated
6043/4: 041|304 000 004|200 220 000|170 150 ZERO; SET4; OUT; SC6; / would it be better to write the tape using proper channel6?
ch6ok:
6045/1: 136 150 MRWDQ6;
6045/3: 304 015 141|042|033|027 SET.ipbuff+1; DUP; NOT; NEG; / print label block to identify tape for diagnostic purposes
6046/3: 170 142|170 144|124 140|121 140 SM6; SI6; MFRQ6; PARQ6;
6047/5: 041|301 015 140 ZERO; S.ipbuff;
6050/3: 304 015 140|170 144 SET.ipbuff; SI6;
6051/2: 171 156|304 000 010|200 220 000 FQ6; SET8; OUT;
6052/4: 136 150|146 140|304 000 001|170 142 MRWDQ6; ITWO6; SET1; SM6; / 2 word block size for skip (DH emulator needs block size in I
6054/1: 134 140|121 140 MFSKQ6; PARQ6; / skip the label block
mtout2:
6054/5: 304 014 300|042|170 144 SET.chbuff; DUP; SI6; / initialise output
6055/5: 304 000 037|170 142|140 140 SET31; SM6; M+I6; / 32-word buffer
6057/0: 170 203|304 000 040|170 210 SRM8; SET32; SC8; / output buffer
/ create Usercode heading for kalgol or Usercode
6060/1: 320 013 071|164 027|047|170 356|052 F.Z0-38; SHL+11; STR; SQ14; ERASE;
6061/4: 304 000 001|170 363 SET1; SRM15; / point at start of prog ID
6062/3: 300 354 230|042|107 370 FM14.kalgol; DUP; SMMQH15/8; / first 4 chars of prog name
6063/3: 164 061|105 370 SHL+24; SMMH15/8; / next 4 chars
6064/1: 130 140|121 140 PWQ6; PARQ6; / A-block already set up
6064/5: 304 000 006|170 111 SET6; SRC4; / set up for Usercode, overwritten if Kalgol
6065/4: 262 354 103 JCNZ14.usercode; / just read source code from channel 6
6066/1: 300 014 215|103 200 F.uchd; SMMQ8/0;
6067/0: 300 014 216|103 200 F.uchd+1; SMMQ8/0; / line 1
6067/5: 300 014 217|103 200 F.uchd+2; SMMQ8/0; / line 1
6070/4: 300 014 220|304 177 377 F.radix; SET#77777; / N.B. the order is important for KAA01
6071/4: 043|320 013 126|054|067|300 014 224|011|103 200 DUPD; F.Z0-9; AND; FRB; F.vst; OR; SMMQ8/0; / V spec
6073/4: 043|320 013 122|054|067|300 014 221|011|103 200 DUPD; F.Z0-13; AND; FRB; F.yast; OR; SMMQ8/0; / YA spec
6075/4: 043|320 013 121|054|067|300 014 222|011|103 200 DUPD; F.Z0-14; AND; FRB; F.ybst; OR; SMMQ8/0; / YB spec
6077/4: 320 013 120|054|067|300 014 223|011|103 200 F.Z0-15; AND; FRB; F.ycst; OR; SMMQ8/0; / YC spec
6101/3: 300 014 231|200 320 106|200 320 004 F.findpar; JS.70; JS.4; / locate runtime library
6103/0: 157 004 QFRQ0/4; / read channel 0 first, set last char to 0
usercode:
6103/2: 171 110|200 334 003 FC4; JS.chopen; / claim input tape for runtime system
6104/1: 304 340 000|171 110|011|200 320 106|200 260 004 loop: SET#160000; FC4; OR; JS.70; J.4; / read channel 0 or 6
6106/1: 170 056|100 040 SQ2; FMM2/0;
6106/5: 221 154 104 J=Z.loop; / skip mystery blocks at the start
6107/2: 154 047|143 160|143 160|142 160 CFRQ2/7; DC7; DC7; NC7; / - no of words in block not incuding checksum
6110/4: 041|033|102 040 nl: ZERO; NOT; FMMQ2/0; / remove library markers etc
6111/2: 164 007|166 253 SHL+3; SHLD-43; / no of words in line
6112/0: 042|172 170 DUP; S+C7; / count on to end of block
6112/3: 170 050|143 040|304 000 005|170 070|204 274 115 SC2; DC2; SET5; SC3; J.nbs; / set up to process first word
6114/3: 102 040|042|033|222 154 122 nwd: FMMQ2/0; DUP; NOT; J=Z.dum6; / J to skip 6 dummies
6115/4: 041|166 021|170 102|104 105 nbs: ZERO; SHLD+8; SM4; FMMH4/5; / get next BS
6116/5: 304 000 075|167 365|220 034 124 SET#75; SHC-6; J=.em; / EM has #75000000 in table
6120/1: 201 334 010 JS.write4; / output to MT/PT
6120/4: 143 060|264 074 115|304 000 006|170 070 DC3; JCNZ3.nbs; SET6; SC3; / check end of current input word
6122/2: 052|263 054 114 dum6: ERASE; JCNZ2. nwd; / move on to next word of input
6123/0: 264 174 110 JCNZ7.nl; / process the next lin if block not emptied
6123/3: 201 274 104 J.loop;
6124/0: 052|052 em: ERASE; ERASE; / EM is last character
6124/2: 171 110|200 334 006 FC4; JS.chclose; / close input tape
6125/1: 260 114 130 JCNZ4.alldone;
6125/4: 304 000 006|042|170 110|200 334 003 SET6; DUP; SC4; JS.chopen; / now read generated code from channel 6
6127/1: 151 004|201 274 104 MFRQ0/4; J.loop;
alldone:
6130/0: 304 000 275|167 351 SET#0275; SHC-12; / terminate buffer and output final block
6130/5: 201 334 010 JS.write4; / output to MT/PT
6131/2: 041|033|201 334 010 ZERO; NOT; JS.write4; / force out last word of output
6132/1: 130 140|121 140 MWQ6; PARQ6; / final write ??
6132/5: 243 034 137 JCZ1.mtout3;
6133/2: 304 000 075|167 365|301 014 300 SET#75; SHC-6; S.chbuff; / one more end-message
6134/4: 130 140|121 140 MWQ6; PARQ6; / final write to stop double buffer over run
6135/2: 136 150 MRWDQ6; / rewind
6135/4: 304 000 001|170 142 SET1; SM6;
6136/3: 146 140 ITWO6; / 2 word block size for skip
6136/5: 134 140|121 140 MFSKQ6; PARQ6; / skip the label block
mtout3:
6137/3: 300 034 202|042|170 376|304 000 010|200 220 000 FM1.allOK; DUP; SQ15; SET8; OUT;
6141/3: 304 000 030|042|301 014 203|301 014 210 SET#30; DUP; S.allOK+1; S.stuc; / now tell stream 30 -- need newline at end
6143/1: 100 360|164 365|164 015|033|027|033|027|101 360 FMM15/0; SHL-6; SHL+6; NOT; NEG; NOT; NEG; SMM15/0;
/ F.allOK+2; SET#7575; SHC-12; -; S.allOK+2; /put *2c at the front
6145/1: 171 376|304 000 010|200 220 000 FQ15; SET8; OUT;
6146/3: 240 034 175 JCZ1.word0; / end if output was to paper tape
6147/0: 304 000 011|304 000 005|200 220 000 SET#11; SET5; OUT; / binary paper tape for output of object prog
///// ZERO; / binary paper tape is claimed automatically for KAA0------
6150/3: 320 013 071|042 F.Z0-38; DUP; / D2 is request for TABLES
6151/1: 164 005|161 377|164 245|164 007 SHL+2; SHA-1; SHL-46; SHL+3; / tables go on printer if requested
6152/3: 065|164 021|164 243 REV; SHL+8; SHL-47; / load-and-go bit
6153/2: 042|164 015|011|011 DUP; SHL+6; OR; OR; / suppress PT output and set L+G bit
6154/1: 300 014 175|011 F.word0; OR; / goes in real word 0 in KAA01
6154/5: 171 150 FC6; / input device for Usercode compiler
6155/1: 300 014 200|200 320 106|200 320 004 F.finduc; JS.70; JS.4; / locate the Usercode compiler
6156/4: 304 000 100|200 320 106|200 260 004 SET#100; JS.70; J.4; / get device number for channel 0
6160/1: 170 356|304 000 010|170 344|304 000 001|170 342 SQ14; SET8; SI14; SET1; SM14;
6162/1: 136 340|121 340 MBSKQ14; PARQ14; / back skip to re-read the B-block
6162/5: 152 016|304 000 007|170 342 IFRQ0/14; SET7; SM14;
6164/0: 300 000 007 F.7; / preserve date
6164/3: 124 340|121 340 MFRQ14; PARQ14; / read B=block
6165/1: 300 000 007|170 376 F.7; SQ15;
6166/0: 301 000 007 S.7;
6166/3: 100 000|301 014 175 FMM0/0; S.word0; / eventually obeyed to enter prog
/ next bit is code copied from KAB00 whch is about to be overwritten
6167/2: 240 374 174 JCZ15.final; / J if C-block not fragmented
6167/5: 152 376 IFRQ15/14;
6170/1: 304 000 377|170 342|140 340 mloop:SET.bsz-1; SM14; M+I14; / bsz word transfer
6171/2: 124 340|121 340 MFRQ14; PARQ14; / read bsz word fragment of C-block
6172/0: 304 001 000|172 344|143 360 SET.bsz; S+I14; DC15; / move up bsz words
6173/1: 261 374 170 JCNZ15.mloop;
6173/4: 152 357 IFRQ14/15; / start of final transfer
final:
6174/0: 154 357 CFRQ14/15;
6174/2: 124 360|121 360 MFRQ15; PARQ15; / read C-block (or final fragment)
/ MRWDQ0; / diagnostic !!!!!
6175/0: 200 220 000|000 000 000 *word0: OUT; =H0; / relies on the fact that the nest is empty
/ Unless the Usercode compilation is load-and-go
/ KAA01 does a jump to word 0 at the end of compilation with an ampty nest
/ in readiness for another job. See R963P0 in KAA01.txt.
/ In normal operation it relies on the operator to abandon it when there is no more work.
/ By putting the above word in E0 e get a clean end after one compilation.
/ The load-and-go bit actually corrupts the OUT instruction, which is only obeyed
/ in the event of erroneous input.
6176/0: 034 053 102 256 030 120 *kaa01: = #07025502 53414120;
6177/0: 105 347 236 171 347 236 = #21363636 36363636;
6200/0: 014 176 014 177 337 000 finduc: =Q kaa01 / kaa01+1 / #157400;
/ message to soothe users
6201/0: 000 000 014 210 014 214 = Q 0/stuc/uchd-1;
6202/0: 000 000 014 203 014 207 allOK: = Q 0/prog+1/stuc-1;
6203/0: 000 000 000 000 000 000|216 373 160 246 310 164|246 373 200 312 033 200|207 014 041 312 133 264|263 220 057 257 377 377
= P *8s COMPILATION *s RAN *s APPARENTLY *s OK *d; / relies on each of these 2 having ...
6210/0: 000 000 000 000 000 000|377 374 364 207 055 051|272 160 065 316 134 243|276 111 100 216 373 160|246 310 164 246 373 277
stuc: = P *8s *2dSTARTING *s USERCODE *s COMPILATION *d; / ... a dummy char at the end
/ start of runtime code
6215/0: 013 075 022 121 004 020 *uchd: = P *c ST 24000;
6216/0: 160 000 000 322 300 031 = #3400000064540031;
6217/0: 145 226 131 377 367 002 = #3131313177773402; / ; TL 99999;cr
6220/0: 050 242 212 050 240 101 radix: = #1212121212120101;
6221/0: 346 024 020 101 007 000 yast: = #7141202020203400; / P YA0000;*s bug in KAL4 P const: there is no way to have a semi-colon
6222/0: 346 044 020 101 007 000 ybst: = #7142202020203400; / P YB0000;*s
6223/0: 346 064 020 101 007 002 ycst: = #7143202020203402; / P YC0000;*s
6224/0: 377 144 020 101 007 000 vst: = #7766202020203400; / P *dVC0000;*c
6225/0: 034 054 202 351 226 131 rtname:= #0702620272313131; / name of run-time library
6226/0: 144 000 000 000 000 000 = #3100000000000000;
6227/0: 327 071 162 216 371 020 = P USERCOD0; / prog name depending on language
6230/0: 256 033 047 276 304 020 kalgol:= P KALGOL00;
6231/0: 014 225 014 226 337 000 findpar:=Q rtname / rtname+1 / #157400;
6232/0: 010 147 236 171 340 275 stars: = #0206363636360275; / end of Usercode for DH's assembler
xchtab: / symbols with values ≥ 64 decimal
6233/0: 031 061 300|000 000 202 = H #06230700; =H#202; / <
6234/0: 031 201 300|000 000 204 = H #06300700; =H#204; / (
6235/0: 031 021 300|000 000 211 = H #06210700; =H#211; / [
6236/0: 031 244 107|000 000 215 = H #06322107; =H#215; / <U>[</U>
6237/0: 031 341 300|000 000 216 = H #06360700; =H#216; / *
6240/0: 031 161 300|000 000 221 = H #06270700; =H#221; / ÷77;
6241/0: 031 244 307|000 000 222 = H #06322307; =H#222; / <U><</U>
6242/0: 031 221 300|000 000 224 = H #06310700; =H#224; / )
6243/0: 160 000 000|000 000 230 = H #34000000; =H#230; / ;
6244/0: 031 041 300|000 000 231 = H #06220700; =H#231; / ]
6245/0: 031 244 207|000 000 235 = H #06322207; =H#235; / <U>]</U>
6246/0: 000 000 000|000 000 236 = H #00000000; =H#236; / <I>space</I>
6247/0: 010 000 000|000 000 240 = H #02000000; =H#240; / <I>newline</I>
6250/0: 074 000 000|000 000 241 = H #17000000; =H#241; / /
6251/0: 031 121 300|000 000 242 = H #06250700; =H#242; / =
6252/0: 031 361 300|000 000 246 = H #06370700; =H#246; / ,
6253/0: 020 000 000|000 000 256 = H #04000000; =H#256; / <I>tab</I>
6254/0: 031 141 300|000 000 261 = H #06260700; =H#261; / ×
6255/0: 031 245 007|000 000 262 = H #06322407; =H#262; / <U>></U>
6256/0: 030 365 107|000 000 265 = H #06172507; =H#265; / :=
6257/0: 160 000 000|000 000 271 = H #34000000; =H#271; / <B>:</B>
6260/0: 364 000 000|000 000 276 = H #75000000; =H#276; / EM
6261/0: 164 000 000|000 000 301 = H #35000000; =H#301; / +
6262/0: 031 101 300|000 000 302 = H #06240700; =H#302; / >
6263/0: 170 000 000|000 000 321 = H #36000000; =H#321; / −
6264/0: 031 321 300|000 000 322 = H #06350700; =H#322; / ≠
exchtab:
6265/0: 017|017|017|017|017|017|017|017|017|017|017|017|017|017|017|017|017|017|017|017|017|017|017|017|017|017|017|017|017|017|017|017|017|017|017|017|017|017|017|017|017|017|017|017|017|017|017|017|017|017|017|017|017|017|017|017|017|017|017|017|017|017|017|017|017|017|034 054 002
**chbuff: =H #07026002; / output buffer 32 word alignment guarantes buffer alignment later
6300/3: 327 071 162 = H P USER;
6301/0: 216 371 020 103 134 065 = P COD00UPU;
6302/0: 003 010 144 222 233 247 = P *s PADDING;
6303/0: 003 010 144 222 233 247 = P *s PADDING;
6304/0: 003 010 144 222 233 247 = P *s PADDING;
6305/0: 003 010 144 222 233 247 = P *s PADDING;
6306/0: 003 010 144 222 233 247 = P *s PADDING;
6307/0: 003 010 144 222 233 247 = P *s PADDING;
6310/0: 003 010 144 222 233 247 = P *s PADDING;
6311/0: 003 010 144 222 233 247 = P *s PADDING;
6312/0: 003 010 144 222 233 247 = P *s PADDING;
6313/0: 013 010 144 222 233 247 = P *c PADDING;
6314/0: 003 010 144 222 233 247 = P *s PADDING;
6315/0: 003 010 144 222 233 247 = P *s PADDING;
6316/0: 003 010 144 222 233 247 = P *s PADDING;
6317/0: 003 010 144 222 233 247 = P *s PADDING;
6320/0: 003 010 144 222 233 247 = P *s PADDING;
6321/0: 003 010 144 222 233 247 = P *s PADDING;
6322/0: 003 010 144 222 233 247 = P *s PADDING;
6323/0: 003 010 144 222 233 247 = P *s PADDING;
6324/0: 003 010 144 222 233 247 = P *s PADDING;
6325/0: 013 010 144 222 233 247 = P *c PADDING;
6326/0: 003 010 144 222 233 247 = P *s PADDING;
6327/0: 003 010 144 222 233 247 = P *s PADDING;
6330/0: 003 010 144 222 233 247 = P *s PADDING;
6331/0: 003 010 144 222 233 247 = P *s PADDING;
6332/0: 003 010 144 222 233 247 = P *s PADDING;
6333/0: 003 010 144 222 233 247 = P *s PADDING;
6334/0: 003 010 144 222 233 247 = P *s PADDING;
6335/0: 003 010 144 222 233 247 = P *s PADDING;
6336/0: 003 010 144 222 233 247 = P *s PADDING;
6337/0: 011 347 236 171 347 275 = #0236363636363675; / exact 32 word A-block to read OK even without EM check (for DH emulator)
chtab:
6340/0: 100 000 000 = H P 0 *3s; / 000
6340/3: 104 000 000 = H P 1 *3s; / 001
6341/0: 110 000 000 = H P 2 *3s; / 002
6341/3: 114 000 000 = H P 3 *3s; / 003
6342/0: 120 000 000 = H P 4 *3s; / 004
6342/3: 124 000 000 = H P 5 *3s; / 005
6343/0: 130 000 000 = H P 6 *3s; / 006
6343/3: 134 000 000 = H P 7 *3s; / 007
6344/0: 140 000 000 = H P 8 *3s; / 010
6344/3: 144 000 000 = H P 9 *3s; / 011
6345/0: 154 000 000 = H #33000000; / 012 subscript 10
6345/3: 174 000 000 = H #37000000; / 013 . dot
6346/0: 204 000 000 = H P A *3s; / 014
6346/3: 210 000 000 = H P B *3s; / 015
6347/0: 214 000 000 = H P C *3s; / 016
6347/3: 220 000 000 = H P D *3s; / 017
6350/0: 224 000 000 = H P E *3s; / 020
6350/3: 230 000 000 = H P F *3s; / 021
6351/0: 234 000 000 = H P G *3s; / 022
6351/3: 240 000 000 = H P H *3s; / 023
6352/0: 244 000 000 = H P I *3s; / 024
6352/3: 250 000 000 = H P J *3s; / 025
6353/0: 254 000 000 = H P K *3s; / 026
6353/3: 260 000 000 = H P L *3s; / 027
6354/0: 264 000 000 = H P M *3s; / 030
6354/3: 270 000 000 = H P N *3s; / 031
6355/0: 274 000 000 = H P O *3s; / 032
6355/3: 300 000 000 = H P P *3s; / 033
6356/0: 304 000 000 = H P Q *3s; / 034
6356/3: 310 000 000 = H P R *3s; / 035
6357/0: 314 000 000 = H P S *3s; / 036
6357/3: 320 000 000 = H P T *3s; / 037
6360/0: 324 000 000 = H P U *3s; / 040
6360/3: 330 000 000 = H P V *3s; / 041
6361/0: 334 000 000 = H P W *3s; / 042
6361/3: 340 000 000 = H P X *3s; / 043
6362/0: 344 000 000 = H P Y *3s; / 044
6362/3: 350 000 000 = H P Z *3s; / 045
6363/0: 032 021 300 = H P *x a *n *s; / 046
6363/3: 032 041 300 = H P *x b *n *s; / 047
6364/0: 032 061 300 = H P *x c *n *s; / 050
6364/3: 032 101 300 = H P *x d *n *s; / 051
6365/0: 032 121 300 = H P *x e *n *s; / 052
6365/3: 032 141 300 = H P *x f *n *s; / 053
6366/0: 032 161 300 = H P *x g *n *s; / 054
6366/3: 032 201 300 = H P *x h *n *s; / 055
6367/0: 032 221 300 = H P *x i *n *s; / 056
6367/3: 032 241 300 = H P *x j *n *s; / 057
6370/0: 032 261 300 = H P *x k *n *s; / 060
6370/3: 032 301 300 = H P *x l *n *s; / 061
6371/0: 032 321 300 = H P *x m *n *s; / 062
6371/3: 032 341 300 = H P *x n *n *s; / 063
6372/0: 032 361 300 = H P *x o *n *s; / 064
6372/3: 033 001 300 = H P *x p *n *s; / 065
6373/0: 033 021 300 = H P *x q *n *s; / 066
6373/3: 033 041 300 = H P *x r *n *s; / 067
6374/0: 033 061 300 = H P *x s *n *s; / 070
6374/3: 033 101 300 = H P *x t *n *s; / 071
6375/0: 033 121 300 = H P *x u *n *s; / 072
6375/3: 033 141 300 = H P *x v *n *s; / 073
6376/0: 033 161 300 = H P *x w *n *s; / 074
6376/3: 033 201 300 = H P *x x *n *s; / 075
6377/0: 033 221 300 = H P *x y *n *s; / 076
6377/3: 033 241 300 = H P *x z *n *s; / 077
!end // of main
*endfill:
/ chtab is 128 words, so this leaves a gap for computed symbols
ipbuff = chtab + 128: / input buffer at top of store
Reached end of file
!end
C-block from 3072 to 3327
No of ID table entries = 320 (10%)