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%)