
Restoration comments May/2020
By Roberto Sancho

SuperSoap
From Computer History Museum archive 
SuperSoap manual: 102784983-05-01-acc.pdf and
SuperSoap Listing: 102784987-05-01-acc.pdf

After OCR'ing the listing (ssoap.txt), we generates two 1-word format decks 
using the assembler output for lines 1 to 1553 (locafier 3800-33). This is 
the main program that executes from drum (address 0000-1999) This deck allows 
to assemble a supersoap source prog that does not uses fancy pseudo-ops, and 
will be called ssoap_main.dck deck

To allow main deck to run standalone, the FIL pseudo op must be manually 
expanded to its values

with supersoap listing, lines 1554 up to the end another 1-word card is 
generated. These deck contains pseudo ops that are executed in core mem when 
loaded from ramac under the control of main deck. This deck will be 
called ssoap_core.dck deck.

To build supersoap in ramac, a loader routine is necessary. There is one in 
manual (p52-p53), but should be adapted to be assembled by ssoap main deck. 
Then a build program should be developed from scratch. This program is 
build_ssoap_ramac_src.txt and reads
   - load routine 1-word assembled deck
   - ssoap_main 1-word format deck
   - ssoap_core 1-word format deck
And saves it into ramac disc at proper place
   - load routine: at disk 38, track 00, words 00-40 (out of 60 available 
                                                      in track)
   - ssoap_main 1-word format deck (words 41-60 at track 00 disk 38, up to 
                                    track 33 in disk 38)
   - ssoap_core 1-word format deck (tracks 34 up to 66. the cdd pseudo op 
                                    indicates the track where the routine 
                                    should be stored)

Now supersoap is available in ramac, all the pseudo-ops can be used.

On testing supersoap, some bugs should be fixed:

  
    3196                SDS   9000                    9001   +85  9000  9017
                        RSB   1                       9017   +83  0001  9003
    3197                STL   9000                    9002   +20  9000  9003

      should be

    3196                SDS   9000                    9001   +85  9000  9017
                        RSB   1                       9017   +83  0001  9002
    3197                STL   9000                    9002   +20  9000  9003

    this bug was preventing PLR to work


    2577        9001    RAB   49    1F                9001   +82  0049  9001
      should be 
    2577F       9000    RAB   49    1F                9000   +82  0049  9001

    this bug was preventing DEK to work. 
     

Also, supersoap relies on some cpu opcode features that are not well 
documented in ibm manuals. These features should be implemented in order to 
make supersoap to work properly

    RDS/WDS sets IAS to 0 (not stated in ramac manual)
    index arithmetic sets distributor only when DA >= 8000 (not stated in 
        cpu extension manual)

Now it is possible to create from ssoap.txt supersoap OCR'd listing a source 
deck ssoap_example_src.txt 

Some changes should be applied: 
   - apply supersoap fixes for PLR and DEK
   - remove fil output 
   - remove pal output
   - comment line 8 (pseudo op hmo) as this will not be a hand optimized 
     source code

Now it is possible to assemble ssoap_example_src.txt with supersoap.
Note that the assembling does not generates same address as in ssoap.txt listing 
because it is not hand optimized

===============

Annotated execution of supersoap processing (assembling) the card

                                           1221rau      aa
                                               end
Produces this output

  1221    RAU           AA                       1221    60  0024  0029
          END


8001: 70 RD1 1999 1998 
 ... Read Card Unit CDR1                               1221rau      aa
 ... Read Card 1951: 0091929291+ ' 1221'  location
 ... Read Card 1952: 0000000000+ '     '  DA
 ... Read Card 1953: 6161000000+ 'AA   '  IA
 ... Read Card 1954: 7961840000+ 'RAU  '  op.co.de.TD.TI  TD=tag DA, TI=tag TI
 ... Read Card 1955: 0000000000+ '     '
 ... Read Card 1956: 0000000000+ '     '
 ... Read Card 1957: 0000001221+ '   ~~'
 ... Read Card 1958: 0000009999+ '   99'
 ... Read Card 1959: 0000009999+ '   99'
 ... Read Card 1960: 0000908000+ '  0~ '  control word: T000908000+, T=card type

1998: 60 RAU 1960 0015 symb:   start rau  1960              0127-start of processing the read card
0085: 20 STL 0046 0249 symb:   1     stl 533tl              0129-set 533tl=0
0249: 30 SRT 0009 0055 symb:         srt  9                 0130-AccUp=card type (=0)
0055: 80 RAA 8003 0077 symb:         raa  8003              0131-set IRA=Card Type=0
0077: 51 SXA 0005 0084 symb:         sxa  5                 0132-
0084: 41 BMA 2005 0000 symb:         bma  5   a  0          0133-depending on card type jmp to addr 0,1,2,3,4 (5..9 jmp to 0)

                                                                init processing type 0 card

0000: 60 RAU 1954 0009 symb:    0    rau  1954  1f          0134-AccUp=opcode 'RAU', OV=0
0009: 80 RAA 0000 0014 symb:   1     raa  0                 0141-Set IRA=0

                                                                process Tag for DA and IA

0014: 82 RAB 0001 0019 symb:         rab  1     0f          0142-Set IRB=1 -> process IA tag
0019: 30 SRT 0002 0075 symb:   0     srt  2                 0143-AccLo=TI 0000 0000 -> tag IA, Now ACC: 0079618400 0000000000+, OV: 0 (00.RR.AA.UU.TD  TI 0000 0000)
0075: 11 SUP 8003 0083 symb:         sup  8003              0144-clear AccUp
0083: 45 NZE 0086 0237 symb:         nze        9f          0145-jmp to 237 if NO tag, continue if tag
0237: 10 AUP 8001 0095 symb:   9     aup  8001  4f          0156-Load again AccUp=00.op.co.de.TD, Now ACC: 0079618400 0000000000+, OV: 0
0095: 69 LDD 0248 0051 symb:   4     lod ldi41  3f          0158-DIST=load code in IAS, jmp to 9006
0051: 23 SIA 4307 0061 symb:   3     sia dtaggb             0162-store in dtagg+IRB=0307+0001 the tag processed (Write 0308: 090780 0000+) tag is 4 last digits
0061: 42 NZB 0114 0065 symb:         nzb        1f          0163-jmp to 1f if IA&DA tags processed (for now, continue as IRB=1)
0114: 53 SXB 0001 0019 symb:         sxb  1     0b          0164-dec IRB, Now IRB=0 -> process IA tag
                                                                 loop again
0019: 30 SRT 0002 0075 symb:   0     srt  2                 0143-AccLo=TD 0000 0000 -> tag DA, Now ACC: 0000796184 0000000000+, OV: 0 (00.00.RR.AA.UU  TD 0000 0000)
0075: 11 SUP 8003 0083 symb:         sup  8003              0144-       
0083: 45 NZE 0086 0237 symb:         nze        9f          0145-       
0237: 10 AUP 8001 0095 symb:   9     aup  8001  4f          0156-       
0095: 69 LDD 0248 0051 symb:   4     lod ldi41  3f          0158-       
0051: 23 SIA 4307 0061 symb:   3     sia dtaggb             0162-store in dtagg+IRB=0307+0000 the tag processed (Write 0307: 090780 0000+) tag is 4 last digits
0061: 42 NZB 0114 0065 symb:         nzb        1f          0163-IRB=0 -> Both Tad in DA&IA processed, continue

                                                                end of tag processing, 
                                                                search for opcode, get instruction code NN

0065: 44 NZU 0229 0001 symb:   1     nzu         1          0165-Now AccUp=0000op.co.de. Jmp to 1 if opcode blank. Now ACC: 0000796184 0000000000+, OV: 0
0229: 30 SRT 0004 0238 symb:         srt  4                 0166-Now Acc=0..0.op  co.de, ACC: 0000000079 6184000000+, OV: 0 (0..0RR AAUU000000)
0238: 44 NZU 0043 0094 symb:         nzu        2f          0167-jmp to 2f if first char of opcode is blank (so not a mnemoci)
0043: 30 SRT 0002 0499 symb:         srt  2                 0168-Now ACC: 0000000000 7961840000+, OV: 0 (0..0  RR.AA.UU.00.00)
0499: 16 SLO 8002 0007 symb:         slo  8002              0169-Clear Acc, DIST=Opcode
0007: 24 STD 1711 0197 symb:         std otend              0170-Save as sentined at end of search table: Write 1711: 7961840000+
0197: 63 TLE 1550 0214 symb:         tle o0001              0171-Search opcode table
                                         ... Search DIST: 7961840000+ 'RAU  '
                                         ...  Found 1610: 7961840000+ 'RAU  '
                                         ... Result ACC: 0000000000 0016100000+, OV: 0 found at address 1610 (DA part of AccLo)
0214: 16 SLO 0017 0071 symb:         slo obase              0172-Substract table to get index on table (Acc=1610-1650=00 0040 0000-)
0071: 46 BMI 0227 0225 symb:         bmi 3f                 0173-jmp to 3f if >=0 -> below 1650 (most of pseudo instr, or not found). RAU is negative
0227: 15 ALO 0393 0548 symb:   3     alo n0052              0182-use index in opcode table to lookup in n0000 optimization table: n0052=00 0100 0588 + (00 0040 0000-) = 00 0060 0588
0548: 35 SLT 0004 0059 symb:         slt  4     machn       0183-set format, jmp to machine instr processing Now ACC: 0000000000 6005880000+, OV: 0 (60=opcode)

                                                                process the opcode intruction code NN get optimization L+NN 

0059: 20 STL 0314 0074 symb:   machn stl instr              0184-instr (addr 0314)=NN xxxx xxxx, NN=instr code. Now Write 0314: 6005880000+
0074: 10 AUP 0188 0245 symb:         aup optim              0185-optim = Read 0188: 0000000000+ this is a NXT NNMM card for hand optimization 
0245: 44 NZU 0100 0549 symb:         nzu 3f                 0186-optim=0, continue, Now ACC: 0000000000 6005880000+, OV: 0
0549: 35 SLT 0002 0105 symb:         slt  2                 0187-AccUp=instr code, Now ACC: 0000000060 0588000000+, OV: 0
0105: 88 RAC 8003 0013 symb:         rac  8003              0188-Set IRC=60 (=Instr code for RAU)       
0013: 60 RAU 6342 0012 symb:         rau n0001c             0189-Use instr code as index in n0001 table to get optimization for DA and IA
                                         n0001 (=342) + IRC (=60) = 0402  
                                         ... Read 0402: 0303050499+ this is the optimization code
                                         ... ACC: 0303050499 0000000000+, OV: 0
0012: 69 LDD 8005 0020 symb:         lod  8005              0190-DIST=IRA=0
0020: 24 STD 0073 0076 symb:         std lincr  procl       0191-lincr=0 = ???

                                        processing of instructions
                                        check location of instr is blank/non blank depending on prev instr

0076: 83 RSB 0001 0232 symb:   procl rsb  1                 0375-Set IRB=-1 (=processing location addr)       
0232: 21 STU 0188 0041 symb:         stu optim              0376-optim (addr 0188)=NN MM xx xxxx Optimize next word to L+NN if even, L+MM if odd (Now=0303050499+) optimization word
0041: 89 RSC 0275 0247 symb:         rsc  275               0377-IRC=-275 -> set return addr to to return to lin 0388- (addr 300+(-275)=25
0247: 65 RAL 1951 0056 symb:         ral  1951              0378-get soap Location from card read area = ' 1221' (Now ACC: 0000000000 0091929291+, OV: 0)
0056: 69 LDD 0460 0063 symb:         lod carry              0379-Read 0460: 8888888888+ is the previous assembled instr
0063: 45 NZE 0116 0070 symb:         nze        1f          0380-jmp to 1f if location is blank (Now ACC: 0000000000 0091929291+, OV: 0)
0116: 96 BD6 0069 0224 symb:         bd6 mastr  hlt77       0381-carry has 8-> no blank addr in prev instr -> jmp to mastr to resolve addr (if blank addr in prev instr error because references a next instr (this) that no blank location)

                                        master address calc
                                        for location 

                                        determine type of location

0069: 20 STL 0473 0676 symb:   mastr stl temp               0480-temp=location as stated in read card (= absolute addr ' 1221' here) ACC: 0000000000 0091929291+, OV: 0
0676: 69 LDD 8007 0632 symb:         lod  8007              0481-DIST=IRC= -275 -> to return to lin 0388-
0632: 24 STD 0334 0490 symb:         std 00032              0482-Save IRC (value to calc return addr from master calculation)
0490: 35 SLT 0002 1149 symb:         slt  2                 0483-AccUp=first char of location
1149: 27 SET 9000 0106 symb:         set  9000              0484-       
0106: 09 LDI 0117 0103 symb:         ldi q0001              0485-       
                                         ... Copy 0117-0149 to 9000-9032 (33 words)
0103: 09 LDI 0556 0535 symb:         ldi z0001              0486-       
                                         ... Copy 0556-0582 to 9033-9059 (27 words)
0535: 45 NZE 9002 0489 symb:         nze  9002              0487-jmp to 9002 if some location, continue if location is blank (ACC: 0000000000 9192929100+, OV: 0)
9002: 44 NZU 9007 9008 symb:    9002 nzu        1f          0493-jmp to 9008 if absolute (first char blank), continue if symbolic/relative/program point

                                        absolute location
                                        convert chars to number

9008: 11 SUP 8003 9010 symb:   1     sup  8003              0495-clear AccUp, AccLo=loc aboslute as chars (ACC: 0000000000 9192929100+, OV: 0 = '1221 '
9010: 80 RAA 8001 9011 symb:         raa  8001  1f          0496-IRA=0 -> addr type: 0=absolute addr 
9011: 11 SUP 8003 9012 symb:   1     sup  8003              0497-       
9012: 45 NZE 9013 9014 symb:         nze        1f          0498-jmp to 1f if addr is blank (conversion finished) (ACC: 0000000000 9192929100+, OV: 0)
9013: 24 STD 9006 9015 symb:         std  9006              0499-addr 9006=0 (this is the addr converted to numeric result)      
9015: 15 ALO 9016 9017 symb:         alo 100p               0500-add 100 -> remove leadin 9 if leftmost char of acclo (Now ACC: 0000000001 0192929100+, OV: 0)
9017: 44 NZU 9018 9019 symb:         nzu        2f          0501-jmp to 2f if char not number 9X
9018: 11 SUP 8003 9020 symb:         sup  8003              0502-clear accup, now ACC: 0000000000 0192929100+, OV: 0
9020: 35 SLT 0001 9021 symb:         slt  1                 0503-Now ACC: 0000000000 1929291000+, OV: 0
9021: 10 AUP 9006 9022 symb:         aup  9006              0504-load current result       
9022: 35 SLT 0001 9011 symb:         slt  1     1b          0505-Add digit, loop (Now ACC: 0000000001 9292910000+, OV: 0
                                     ... loop to lin 497
                                         
9014: 65 RAL 8001 9023 symb:   1     ral  8001              0506-Coversion finished in AccLo, Now  ACC: 0000000000 0000001221+, OV: 0
9023: 40 NZA 9024 9005 symb:         nza         9005       0507-jmp to 9005 if abs addr parsed (continue if regional addr), now IRA=0=absolute
9005: 47 BOV 1997 9000 symb:    9005 bov hlt88d  9000       0512-if OV there is an error

                                        check if resolved addr is in drum/ias

9000: 09 LDI 0303 9029 symb:    9000 ldi 00001   9029       0518-       
                                     ... Copy 0303-0349 to 9000-9046 (47 words)
9029: 88 RAC 9031 9018 symb:    9029 rac  9031   9018       0582-addr 9031 comes from addr 0334 = save value of IRC = -275 = Save IRC (value to calc return addr from master calculation)
9018: 20 STL 9050 9021 symb:    9018 stl  9050              0590-save absolute location addr Write 9050: 0000001221+
9021: 35 SLT 0006 9022 symb:         slt  6                 0591-Now ACC: 0000000000 1221000000+, OV: 0
9022: 16 SLO 8002 9023 symb:         slo  8002              0592-AccLo to DIST, Acc=0
9023: 84 TLU 9002 9024 symb:         tlu  9002              0593-Search in memory map at lines 0583-0589       
                                          ... Search DIST: 1221000000+ '~~   '
                                          ...  Found 9002: 1999000001- ')9  ~'
                                          ... Result ACC: 0000000000 0090020000+, OV: 0 -> AccLo = 00 ADDR 0000 addr of datafound
9024: 15 ALO 9025 8002 symb:         alo         8002       0594-AccLo=AccLo+80 0000 9026=80 9002 9026=RAA 9002 9026=
8002: 80 RAA 9002 9026                                           execute created inst: IRA=last 4 digits of found addr=0001-
9026: 41 BMA 9016 9012 symb:         bma  9016   9012       0596-jmp if IRA<0 same as found rlu word <0. <0 if aadr is in range 0000-1999 or 9000-9099
9016: 67 RAM 9404 9216 symb:    9016 ram  9004b  9016a      0597-IRB=-1 (=processing location addr), IRA=-1 (other options: =0 if < 8000, =1 if <8007, =0 if <9000, =-2 if < 9060, -3 if <= 9099, =0 <= 9999)
                                          9003   9015  (developed addr) ... Read 9003: 7999800000+, Now ACC: 0000000000 7999800000+, OV: 0
9015: 17 AML 9050 9027 symb:    9015 aml  9050  1f          0600-add saved location (saved at lin 590-): Read 9050: 0000001221+, Now ACC: 0000000000 7999801221+, OV: 0
9027: 69 LDD 8003 9028 symb:   1     lod  8003              0602-clear distrib       
9028: 23 SIA 9050 9001 symb:         sia  9050   9001       0603-Write 9050: 0000001221+
9001: 65 RAL 8001 6300 symb:    9001 ral  8001   300 c      0604-Acc=location, jmp to 300+IRC, here IRC=-275 -> jmp to addr 0025 lin 388- (processing the instruction)

                                            back to processing the instruction

0025: 20 STL 0780 2038 symb:    25   stl locus   38  a      0388-save location in locus, jmp to 26,27,28,39 depending on addr type in IRA (here IRA=-1=drum/ias), Write 0780: 0000001221+
0037: 10 AUP 8001 0545 symb:    37   aup  8001              0391-nOW ACC: 0000001221 0000001221+, OV: 0
0545: 15 ALO 0798 0320 symb:         alo ddiff  1f          0392-??? posible regional offset? posible tag offset? Now ddiff=0      
0320: 10 AUP 0073 0030 symb:   1     aup lincr              0397-??? Now lincr=0
0030: 21 STU 0190 0243 symb:         stu basex              0398-basex=instr location as 00 0000 NNNN
0243: 35 SLT 0006 0505 symb:         slt  6                 0399-       
0505: 20 STL 1961 0018 symb:         stl locat              0400-locat=instr location as NNNN 000000
0018: 65 RAL 9011 0226 symb:         ral  9011              0401-addr 9011 is copied from addr 0314=instr, set in line 0184-instr (addr 0314)=NN xxxx xxxx, NN=instr code. Now ACC: 0000000000 6005880000+, OV: 0
0226: 16 SLO 0235 0239 symb:         slo sudom              0402-??? sudom (addr 0235) = 88 0200 0950+ = instr RAC 200 950
0239: 45 NZE 0443 0948 symb:         nze procd  alfot       0403-jmp to alfot if instr = sudom 

                                        now process Data Address of instructuon  

0443: 89 RSC 0255 0649 symb:   procd rsc  255   dmast       0412-IRC=-255 -> set return addr to to return to lin 0415- (addr 300+(-255)=0045)
0649: 65 RAL 1952 0614 symb:   dmast ral  1952  dmst1       0413-Acc=Data Address in soap source, ACC: 0000000000 0000000000+, OV: 0
0614: 82 RAB 0000 0069 symb:   dmst1 rab  0     mastr       0414-IRB=0  (=processing DA data addr)

                                        mastr address calc
                                        for data addr (DA)

                                        determine type of location
  
0069: 20 STL 0473 0676 symb:   mastr stl temp               0480-temp=location as stated in read card (= blank addr '    ' here) ACC: 0000000000 0000000000+, OV: 0       
0676: 69 LDD 8007 0632 symb:         lod  8007              0481-DIST=IRC= -255 -> to return to lin 0415-       
0632: 24 STD 0334 0490 symb:         std 00032              0482-Save IRC (value to calc return addr from master calculation)
0490: 35 SLT 0002 1149 symb:         slt  2                 0483-AccUp=first char of location       
1149: 27 SET 9000 0106 symb:         set  9000              0484-       
0106: 09 LDI 0117 0103 symb:         ldi q0001              0485-       
                                         ... Copy 0117-0149 to 9000-9032 (33 words)
0103: 09 LDI 0556 0535 symb:         ldi z0001              0486-       
                                         ... Copy 0556-0582 to 9033-9059 (27 words)
0535: 45 NZE 9002 0489 symb:         nze  9002              0487-jmp to 9002 if some location, continue if location is blank (ACC: 0000000000 0000000000+, OV: 0)
0489: 49 BMC 1048 9005 symb:         bmc         9005       0488-IRC=-255 (processing DA), continue

                                         blank DA addr

1048: 65 RAL 0460 0665 symb:         ral carry              0489-Read 0460: 8888888888+ is the previous assembled instr
0665: 96 BD6 0068 9000 symb:         bd6         9000       0490-carry has 8-> no blank addr in prev instr -> continue to resolve addr
0068: 81 RSA 0053 9040 symb:         rsa  53     9040       0491-Set IRA: 0053- ???
9040: 36 SCT 0001 9001 symb:    9040 sct  1      9001       0535-Se overflow! Now ACC: 0000000008 8888888810+, OV: 1
9001: 09 LDI 0150 0202 symb:    9001 ldi 10001       d      0519-       
                                          ... Copy 0150-0199 to 9001-9050 (50 words)
0202: 69 LDD 4307 0112 symb:         lod dtaggb farbld      0520-read from dtagg+IRB=0307+0000 the tag processed (Read 0307: 090780 0000+) tag is 4 last digits

                                        optimization routines
                                        farbl = fix addr blank -> calc the addr for blank DA

0112: 96 BD6 9058 0221 symb:   farbl bd6  9058  7f          0640- ??? (check DIST: 0907800000+ = tag for DA)
9058: 88 RAC 9007 9057 symb:    9058 rac  9007              0553-IRC=0, addr 9007 copies from addr 0156 = modet defined at line 1454- modet +00 0000 0000, so IRC=modet=0
9057: 48 NZC 0607 0829 symb:         nzc farind  829        0554-IRC is 0 -> jmp to 829       
0829: 43 BMB 0682 9005 symb:    829  bmb         9005       0656-IRB is 0 (=processing DA) so jmp 9005       
9005: 65 RAL 9039 9015 symb:    9005 ral  9039              0668-Addr 9039 is copied from 0188=optim=optimization word, Now ACC: 0000000000 0303050499+, OV: 1
9015: 42 NZB 9016 9017 symb:         nzb        2f          0669-IRB is 0 (=processing DA), so continue 
9017: 20 STL 9058 9025 symb:   2     stl  9058              0689-Save optimization word in 9058
9025: 65 RAL 9041 9026 symb:         ral  9041              0690-Addr 9041 is copied from 0190=basex=instr location as 00 0000 NNNN, now ACC: 0000000000 0000001221+, OV: 1
9026: 14 DIV 9008 0832 symb:         div  9008       d      0691-Div basex by 2 (ACC: 0000000001 0000000610+, OV: 1
0832: 44 NZU 9027 9028 symb:         nzu        4f          0692-continue if basex odd, jmp to 4f if basex is even
9027: 67 RAM 9058 9029 symb:         ram  9058              0693-Acc=basex, now ACC: 0000000000 0303050499+, OV: 1   NN MM 000000 -> NN/MM is L+NN/MM fpr next word to select depending on L odd/even
9029: 35 SLT 0002 9030 symb:         slt  2                 0694-       
9030: 11 SUP 8003 9031 symb:         sup  8003  5f          0695-clear accup , ACC: 0000000000 0305049900+, OV: 1
9031: 30 SRT 0008 9032 symb:   5     srt  8                 0697-ACC: 0000000000 0000000003+, OV: 1 -> this is the optimization offset to be added to Llocation of instr
9032: 15 ALO 9041 9004 symb:         alo  9041   9004       0698-AccLo=basex+NN -> optimized word for blank address, now ACC: 0000000000 0000001224+, OV: 1

                                         get the addr to reserve 00..49 (first band)

9004: 14 DIV 9033 0491 symb:    9004 div 50i    farofd      0699-div addr by 50, Div result ACC: 0000000024 0000000024+, OV: 1 (AccLo=remainder)

                                         reserve addr in AccUp

0491: 65 RAL 8003 9049 symb:   farof ral  8003   9049       0700-Acc=24 = addr to reserve (the remainder of div by 50)
9049: 15 ALO 8002 9034 symb:    9049 alo  8002              0704-    
9034: 15 ALO 8002 9035 symb:         alo  8002              0705-Acc=96=24x4
9035: 69 LDD 8006 9036 symb:         lod  8006              0706-DIST=IRB=0 (=0 means processing DA)
9036: 24 STD 0257 0661 symb:         std 30007       d      0707-Save IRB=0 in 30007 (addr 0257)
0661: 82 RAB 0004 9613 symb:         rab  4      9013c      0708-Set IRB=4, jmp 9013 (IRC=0, set at line 0554 with value of modet)
9013: 88 RAC 0000 9037 symb:    9013 rac  0     1f          0709-IRC=0
9037: 16 SLO 9033 9038 symb:   1     slo 50i                0711-Acc=96-50=46
9038: 46 BMI 9050 9040 symb:         bmi  9050              0712-acc=46>0 -> continue
9040: 58 AXC 0050 9037 symb:         axc  50    1b          0713-IRC=IRC+50=50, jmp to 9037 to continue subtracting
9037: 16 SLO 9033 9038 symb:   1     slo 50i                0711-Acc=46-50-4       
9038: 46 BMI 9050 9040 symb:         bmi  9050              0712-exit loop       
9050: 09 LDI 0917 9051 symb:    9050 ldi 20001   9051       0714-Copy 0917-0926 to 9050-9059 (10 words)
9051: 35 SLT 0004 9050 symb:    9051 slt  4      9050       0730-Acc = -0004 0000
9050: 15 ALO 9053 9054 symb:    9050 alo 1f     2f          0731-Acc =  TLU 9052+Acc = TLU 9048 9058
9054: 20 STL 9055 9056 symb:   2     stl hld                0732-Store TLU instr at hld=9055
9056: 69 LDD 9052 9057 symb:         lod  9052              0733-DIST=1       
9057: 27 SET 9002 0496 symb:         set  9002       d      0734-       
0496: 09 LDI 7750 9055 symb:         ldi a0001c hld         0735-copy from 1750+IRC=1800 Copy 1800-1849 to 9002-9051 (50 words) = 8888888888
9055: 84 TLU 9048 9058 symb:    ... Search DIST: 0000000001+ '    ~'
                                ...  Found 9048: 8888888888+ 'YYYYY' -> is equiv to 1846, availabiolity for Add 0024
                                ... Result ACC: 0000000000 8490489058+, OV: 1
9058: 16 SLO 9053 9059 symb:   3     slo 1b                 0738-Acc=acc-xx9052xxxx=-00 0004 0000: slo TLU base addr to get index on table
9059: 46 BMI 9001 0525 symb:         bmi  9001       d      0739-jmp to 9001 if availability found (acc < 0)
9001: 09 LDI 0250 9001 symb:    9001 ldi 30000   9001       0723-Copy 0250-0299 to 9001-9050 (50 words)
9001: 30 SRT 0004 9016 symb:    9001 srt  4                 0752-Acc=-4
9016: 58 AXC 8002 9017 symb:         axc  8002              0753-IRC=50+Acc=50-4=46       
9017: 58 AXC 0050 9002 symb:         axc  50     9002       0754-IRC=IRC+50=56+50=96       
9002: 60 RAU 7750 9018 symb:    9002 rau a0001c             0755-Now Acc=(1750+IRC)=(1846)=8888888888 0000000000+, OV: 1
9018: 36 SCT 0000 9019 symb:         sct  0                 0756-Now Acc=8888888888 0000000000+, OV: 1
9019: 82 RAB 8002 9020 symb:         rab  8002              0757-IRB=0       
9020: 35 SLT 0001 9021 symb:         slt  1                 0758-Now Acc=8888888880 0000000000+, OV: 1
9021: 31 SRD 4001 9022 symb:         srd  1   b             0759-Now Acc=0888888888 0000000000+, OV: 1
9022: 21 STU 7750 9023 symb:         stu a0001c             0760-Store Avail data with addr reserved: Write 1846: 0888888888+ this reservation for addr 00024
9023: 60 RAU 8006 9024 symb:         rau  8006              0761-AccUp=IRB=0
9024: 19 MPY 9025 9026 symb:         mpy 50i                0762-Acc=0x50=0       
9026: 82 RAB 8002 9027 symb:         rab  8002              0763-IRB=Acc  -> IRB=IRB x 50
9027: 65 RAL 8007 0647 symb:         ral  8007       d      0764-Acc=IRC=96       
0647: 14 DIV 0750 0553 symb:         div 4i   d      d      0765-Acc=24
0553: 19 MPY 9028 0546 symb:         mpy 500i        d      0766-Acc=AccUpx500+AccLo=0x500+24=24 en AccUp
0546: 15 ALO 8003 9029 symb:         alo  8003              0767-Now Acc=0000000024 0000000024+, OV: 1
9029: 15 ALO 8006 9003 symb:         alo  8006   9003       0768-AccLo=AccLo+B = 24+0=24
9003: 82 RAB 9008 9005 symb:    9003 rab  9008   9005       0769-IRB=0       
9005: 47 BOV 9030 9004 symb:    9005 bov 1f      9004       0770-OV Set (set on line 0535- because addr blank)-> Branch Taken
9030: 43 BMB 9000 9050 symb:   1     bmb  9000              0796-IRB=0 (processing DA), continue        
9050: 69 LDD 1652 0655 symb:         lod o0103       d      0797-Read 1652: 6264980000+??? 0313- ALF BD8 THINK   1652  +62  6498  0000 
0655: 23 SIA 2513 9000 symb:         sia f0000a  9000       0798-Write 0460=carry= 626498 <0024+>: the IA part of carry is addr reserved

                                        check if resolved addr is in drum/ias

9000: 09 LDI 0303 9029 symb:    9000 ldi 00001   9029       0518-       
                                     ... Copy 0303-0349 to 9000-9046 (47 words)
9029: 88 RAC 9031 9018 symb:    9029 rac  9031   9018       0582-addr 9031 comes from addr 0334 = save value of IRC = -255 = Save IRC (value to calc return addr from master calculation)
9018: 20 STL 9050 9021 symb:    9018 stl  9050              0590-save absolute location Write 9050: 0000000024+
9021: 35 SLT 0006 9022 symb:         slt  6                 0591-Now ACC: 0024000000 0024000000+, OV: 0
9022: 16 SLO 8002 9023 symb:         slo  8002              0592-AccLo to DIST, Acc=0
9023: 84 TLU 9002 9024 symb:         tlu  9002              0593-Search in memory map at lines 0583-0589       
                                          ... Search DIST: 0024000000+ '~~   '
                                          ...  Found 9002: 1999000001- ')9  ~'
                                          ... Result ACC: 0024000000 0090020000+, OV: 0 -> AccLo = 00 ADDR 0000 addr of datafound
9024: 15 ALO 9025 8002 symb:         alo         8002       0594-AccLo=AccLo+80 0000 9026=80 9002 9026=RAA 9002 9026=
8002: 80 RAA 9002 9026                                           execute created inst: IRA=last 4 digits of found addr=0001- (-> is addr in drum/ias)
9026: 41 BMA 9016 9012 symb:         bma  9016   9012       0596-jmp if IRA<0 same as found rlu word <0. <0 if aadr is in range 0000-1999 or 9000-9099
9016: 67 RAM 9404 9216 symb:    9016 ram  9004b  9016a      0597-IRB=0 (=processing DA), IRA=-1 (other options: =0 if < 8000, =1 if <8007, =0 if <9000, =-2 if < 9060, -3 if <= 9099, =0 <= 9999)
                                          9004   9015  (developed addr) ... Read 9004: 0907800000+, Now ACC: 0000000000 0907800000+, OV: 0
9015: 17 AML 9050 9027 symb:    9015 aml  9050  1f          0600-add saved location (saved at lin 590-): Read 9050: 0000000024+, Now ACC: 0000000000 0907800024+, OV: 0
9027: 69 LDD 8003 9028 symb:   1     lod  8003              0602-clear distrib       
9028: 23 SIA 9050 9001 symb:         sia  9050   9001       0603-Write 9050: 0000000024+
9001: 65 RAL 8001 6300 symb:    9001 ral  8001   300 c      0604-Acc=DA addr=0000000024, jmp to 300+IRC, here IRC=-255 -> jmp to addr 0045 lin 415- (processing the instruction)

                                        back to processing the instruction

0045: 69 LDD 9011 0101 symb:    45   lod  9011              0415-addr 9011 is copied from addr 0314=instr, set in line 0184-instr (addr 0314)=NN xxxx xxxx, NN=instr code. Now DIST: 6005880000+
0101: 35 SLT 0004 0109 symb:         slt  4                 0416-Now ACC: 0000000000 0000240000+, OV: 0
0109: 22 SDA 0314 0022 symb:         sda instr              0417-Set DA part of instr: Write 0314: 6000240000+
0022: 30 SRT 0004 2034 symb:         srt  4      34  a      0418-IRA=-1 (da addr is in drum/ias). jmp to 33 if addr in drum/ias, jmp to 34 if addr < 8000, to 35 if <8007, to 34 if <9000, to 32 if < 9060, to 31 if <= 9099, to 34 if <= 9999. here, jmp to 33, ACC: 0000000000 0000000024+, OV: 0
0033: 69 LDD 0188 0091 symb:    33   lod optim  3f          0433-DIST=optim word=NN MM xxxxxx 8to optimize to L+NN/MM). Here Read 0188: 0303050499+
0091: 91 BD1 0244 0062 symb:   3     bd1 proci              0435-Last DIST digit=9 -> continue. jmp to proci If =8 (not an addr for opcode, just a value as number of shifts in SLT)
0062: 20 STL 0190 0244 symb:         stl basex  proci       0436-save in basex the addr for DA (Write 0190: 0000000024+)

                                        now process Instr Address of instructuon  

0244: 89 RSC 0256 0550 symb:   proci rsc  256   imast       0438-IRC=-256 -> set return addr to to return to lin 0441- (addr 300+(-256)=0044)
0550: 65 RAL 1953 0664 symb:   imast ral  1953  imst1       0439-Acc=inst Address in soap source, ACC: 0000000000 6161000000+, OV: 0
0664: 82 RAB 0001 0069 symb:   imst1 rab  1     mastr       0440-IRB=1  (=processing IA data addr)    

                                        master address calc
                                        for data addr (IA)

                                        determine type of location
  
0069: 20 STL 0473 0676 symb:   mastr stl temp               0480-temp=location as stated in read card (= symbolic addr 'AA   ' here) ACC: 0000000000 6161000000+, OV: 0              
0676: 69 LDD 8007 0632 symb:         lod  8007              0481-DIST=IRC= -256 -> to return to lin 0441-              
0632: 24 STD 0334 0490 symb:         std 00032              0482-Save IRC (value to calc return addr from master calculation)       
0490: 35 SLT 0002 1149 symb:         slt  2                 0483-AccUp=first char of location, now ACC: 0000000061 6100000000+, OV: 0
1149: 27 SET 9000 0106 symb:         set  9000              0484-       
0106: 09 LDI 0117 0103 symb:         ldi q0001              0485-       
                                         ... Copy 0117-0149 to 9000-9032 (33 words)
0103: 09 LDI 0556 0535 symb:         ldi z0001              0486-       
                                         ... Copy 0556-0582 to 9033-9059 (27 words)
0535: 45 NZE 9002 0489 symb:         nze  9002              0487-jmp to 9002 if IA set, continue if IA is blank. Here, jmp to 9002
9002: 44 NZU 9007 9008 symb:    9002 nzu        1f          0493-jmp to 1f if abs addr, continue if symbolic/regional/program point
9007: 15 ALO 9009 9008 symb:         alo 90i    1f          0494-ACC: 0000000061 6100000090+, OV: 0
9008: 11 SUP 8003 9010 symb:   1     sup  8003              0495-ACC: 0000000000 6100000090+, OV: 0
9010: 80 RAA 8001 9011 symb:         raa  8001  1f          0496-Set IRA with char1 of IA (here = 0061+)
9011: 11 SUP 8003 9012 symb:   1     sup  8003              0497-ACC: 0000000000 6100000090+, OV: 0 this is a posible regional addr
9012: 45 NZE 9013 9014 symb:         nze        1f          0498-jmp to 1f if absolute
9013: 24 STD 9006 9015 symb:         std  9006              0499-addr 9006=0 (this is the addr converted to numeric result)      
9015: 15 ALO 9016 9017 symb:         alo 100p               0500-AccLo=AccLo+1000000 = 6100000090+1000000000->ACC: 0000000000 7100000090+, OV: 0
9017: 44 NZU 9018 9019 symb:         nzu        2f          0501-continue if char2 is numeric -> regional addr, jmp to 2f y not regional
9019: 51 SXA 0090 9028 symb:   2     sxa  90                0513-IRA=61 (the char1 of IA)-90 (code for '0')=-29       
9028: 41 BMA 0620 9029 symb:         bma symbld             0514-if <0 -> char1 not numeric -> is symbolic (not prog point) -> jmp to symbl       

                                        symbolic addr
                                        search if symbol already defined

0620: 60 RAU 0473 0230 symb:   symbl rau temp   symb1       0559-Acc=' AA ' symbolic addr, ACC: 6161000000 0000000000+, OV: 0
0230: 35 SLT 0008 0547 symb:   symb1 slt  8                 0560-ACC: 0000000000 0000000000+, OV: 0
0547: 44 NZU 0203 0204 symb:         nzu 1f                 0561-jmp to 1f if symbol has 5 chars. here continue       
0204: 60 RAU 8001 0611 symb:         rau  8001              0562-reload symb ACC: 6161000000 0000000000+, OV: 0
0611: 10 AUP 0914 0769 symb:         aup 0000h              0563-Add 0 ???
0769: 11 SUP 8003 0540 symb:         sup  8003  2f          0564-Clear Acc, DIST=symbol
0540: 24 STD 1493 0196 symb:   2     std s0294              0566-Save as last Symbol to act as sentinel 
0196: 63 TLE 1200 0617 symb:         tle s0001              0567-       
                                         ... Search DIST: 6161000000+ 'AA   '
                                         ...  Found 1493: 6161000000+ 'AA   '
                                         ... Result ACC: 0000000000 0014930000+, OV: 0
0617: 16 SLO 0120 0475 symb:         slo q0004              0568-q0004 is last addr of symb table (defined at lin 0579- Q0004     00  S0294   0): Acc=Acc-00 1493 0000 -> Acc=0
0475: 47 BOV 0590 0530 symb:         bov equsy              0569- ???      
0530: 46 BMI 0233 0534 symb:         bmi 3f                 0570-if <0 -> symb found -> jmp to 3f
0534: 49 BMC 9001 0538 symb:         bmc  9001              0571-IRC=-0256 (= processing IA) -> jmp to 9001
9001: 09 LDI 0150 0202 symb:    9001 ldi 10001       d      0519-Symb not found -> must reserve an address and define symbol
                                         ... Copy 0150-0199 to 9001-9050 (50 words)
0202: 69 LDD 4307 0112 symb:         lod dtaggb farbld      0520-read from dtagg+IRB=0307+0001 the tag processed (Read 0308: 0907800000+) tag is 4 last digits

                                        optimization routines
                                        farbl = fix addr blank -> calc the addr for blank IA

0112: 96 BD6 9058 0221 symb:   farbl bd6  9058  7f          0640- ??? (check DIST: 0907800000+ = tag for DA)
9058: 88 RAC 9007 9057 symb:    9058 rac  9007              0553-IRC=0, addr 9007 copies from addr 0156 = modet defined at line 1454- modet +00 0000 0000, so IRC=modet=0       
9057: 48 NZC 0607 0829 symb:         nzc farind  829        0554-IRC is 0 -> jmp to 829       
0829: 43 BMB 0682 9005 symb:    829  bmb         9005       0656-IRB is 1 (=processing IA) so jmp 9005       
9005: 65 RAL 9039 9015 symb:    9005 ral  9039              0668-Addr 9039 is copied from 0188=optim=optimization word, Now ACC: 0000000000 0303050499+, OV: 1
9015: 42 NZB 9016 9017 symb:         nzb        2f          0669-IRB is 1 (=processing IA), so jmp to 2f
9016: 46 BMI 9018 9019 symb:         bmi 1f                 0670-??? depending on optimiz word (optimiz type?) ACC: 0000000000 0303050499+, OV: 0
9019: 92 BD2 0212 9020 symb:         bd2      d 7f          0671-Check DIST: 0303050499+ Digit is 9 -> jmp to 7f
9020: 35 SLT 0004 9017 symb:   7     slt  4     2f          0688-ACC: 0000000303 0504990000+, OV: 0
9017: 20 STL 9058 9025 symb:   2     stl  9058              0689-Save optimization word in 9058: Write 9058: 0504990000+
9025: 65 RAL 9041 9026 symb:         ral  9041              0690-Addr 9041 is copied from 0190=basex=DA location as 00 0000 NNNN, now ACC: 0000000000 0000000024+, OV: 0       
9026: 14 DIV 9008 0832 symb:         div  9008       d      0691-Div basex by 2 (ACC: 0000000000 0000000012+, OV: 0
0832: 44 NZU 9027 9028 symb:         nzu        4f          0692-continue if basex odd, jmp to 4f if basex is even       
9028: 67 RAM 9058 9031 symb:   4     ram  9058  5f          0696-Acc=basex, now ACC: 0000000000 0504990000+, OV: 0   NN MM 000000 -> NN/MM is L+NN/MM fpr next word to select depending on L odd/even       
9031: 30 SRT 0008 9032 symb:   5     srt  8                 0697-ACC: 0000000000 0000000005+, OV: 0 -> this is the optimization offset to be added to DA
9032: 15 ALO 9041 9004 symb:         alo  9041   9004       0698-AccLo=basex+NN=14+5=29 -> optimized word for symbolic address, now ACC: 0000000000 0000000029+, OV: 0

                                         get the addr to reserve 00..49 (first band)

9004: 14 DIV 9033 0491 symb:    9004 div 50i    farofd      0699-div addr by 50, Div result ACC: 0000000029 0000000000+, OV: 0 (AccLo=remainder)       

                                         reserve addr in AccUp

0491: 65 RAL 8003 9049 symb:   farof ral  8003   9049       0700-Acc=29 = addr to reserve (the remainder of div by 50)       
9049: 15 ALO 8002 9034 symb:    9049 alo  8002              0704-       
9034: 15 ALO 8002 9035 symb:         alo  8002              0705-Acc=116=29x4
9035: 69 LDD 8006 9036 symb:         lod  8006              0706-DIST=IRB=1 (=1 means processing IA)
9036: 24 STD 0257 0661 symb:         std 30007       d      0707-Save IRB=1 in 30007 (addr 0257)       
0661: 82 RAB 0004 9613 symb:         rab  4      9013c      0708-Set IRB=4, jmp 9013 (IRC=0, set at line 0554 with value of modet)       
9013: 88 RAC 0000 9037 symb:    9013 rac  0     1f          0709-IRC=0
9037: 16 SLO 9033 9038 symb:   1     slo 50i                0711-Acc=116-50=66
9038: 46 BMI 9050 9040 symb:         bmi  9050              0712-acc=66>0 -> continue       
9040: 58 AXC 0050 9037 symb:         axc  50    1b          0713-IRC=IRC+50=50, jmp to 9037 to continue subtracting       
9037: 16 SLO 9033 9038 symb:   1     slo 50i                0711-Acc=66-50=16         
9038: 46 BMI 9050 9040 symb:         bmi  9050              0712-loop again
9040: 58 AXC 0050 9037 symb:         axc  50    1b          0713-IRC=IRC+50=100, jmp to 9037 to continue subtracting       
9037: 16 SLO 9033 9038 symb:   1     slo 50i                0711-Acc=16-50=-34
9038: 46 BMI 9050 9040 symb:         bmi  9050              0712-exit loop       
9050: 09 LDI 0917 9051 symb:    9050 ldi 20001   9051       0714-Copy 0917-0926 to 9050-9059 (10 words)
9051: 35 SLT 0004 9050 symb:    9051 slt  4      9050       0730-Acc = -0034 0000, OV: 0
9050: 15 ALO 9053 9054 symb:    9050 alo 1f     2f          0731-Acc =  TLU 9052+Acc = TLU 9018 9058
9054: 20 STL 9055 9056 symb:   2     stl hld                0732-Store TLU instr at hld=9055
9056: 69 LDD 9052 9057 symb:         lod  9052              0733-DIST=1
9057: 27 SET 9002 0496 symb:         set  9002       d      0734-       
0496: 09 LDI 7750 9055 symb:         ldi a0001c hld         0735-copy from 1750+IRC=1850 Copy 1850-1899 to 9002-9051 (50 words) = 8888888888       
9055: 84 TLU 9018 9058 symb:          ... Search DIST: 0000000001+ '    ~'
                                      ...  Found 9018: 8888888888+ 'YYYYY' -> is equiv to 1866, availability for Addr 0029
                                      ... Result ACC: 0000000000 8490189058+, OV: 0
9058: 16 SLO 9053 9059 symb:   3     slo 1b                 0738-Acc=acc-xx9052xxxx=-00 0034 0000: slo TLU base addr to get index on table
9059: 46 BMI 9001 0525 symb:         bmi  9001       d      0739-jmp to 9001 if availability found (acc < 0)       
9001: 09 LDI 0250 9001 symb:    9001 ldi 30000   9001       0723-Copy 0250-0299 to 9001-9050 (50 words)
9001: 30 SRT 0004 9016 symb:    9001 srt  4                 0752-Acc=-34       
9016: 58 AXC 8002 9017 symb:         axc  8002              0753-IRC=100+Acc=100-34=66              
9017: 58 AXC 0050 9002 symb:         axc  50     9002       0754-IRC=IRC+50=66+50=116          
9002: 60 RAU 7750 9018 symb:    9002 rau a0001c             0755-Now Acc=(1750+IRC)=(1866)=8888888888 0000000000+, OV: 0       
9018: 36 SCT 0000 9019 symb:         sct  0                 0756-ACC: 8888888888 0000000000+, OV: 0
9019: 82 RAB 8002 9020 symb:         rab  8002              0757-IRB=0
9020: 35 SLT 0001 9021 symb:         slt  1                 0758-Now ACC: 8888888880 0000000000+, OV: 0
9021: 31 SRD 4001 9022 symb:         srd  1   b             0759-Now ACC: 0888888888 0000000000+, OV: 0
9022: 21 STU 7750 9023 symb:         stu a0001c             0760-Store Avail data with addr reserved: Write 1866: 0888888888+ this reservation for addr 0029
9023: 60 RAU 8006 9024 symb:         rau  8006              0761-AccUp=IRB=0
9024: 19 MPY 9025 9026 symb:         mpy 50i                0762-Acc=0x50=0              
9026: 82 RAB 8002 9027 symb:         rab  8002              0763-IRB=Acc  -> IRB=IRB x 50
9027: 65 RAL 8007 0647 symb:         ral  8007       d      0764-Acc=IRC=116  
0647: 14 DIV 0750 0553 symb:         div 4i   d      d      0765-ACC: 0000000000 0000000029+, OV: 0
0553: 19 MPY 9028 0546 symb:         mpy 500i        d      0766-Acc=AccUpx500+AccLo=0x500+29=29 en AccUp       
0546: 15 ALO 8003 9029 symb:         alo  8003              0767-Now ACC: 0000000029 0000000029+, OV: 0
9029: 15 ALO 8006 9003 symb:         alo  8006   9003       0768-AccLo=AccLo+B = 29+0=29, Now ACC: 0000000029 0000000029+, OV: 0
9003: 82 RAB 9008 9005 symb:    9003 rab  9008   9005       0769-IRB=1 (restore IRB=1=processing IA)
9005: 47 BOV 9030 9004 symb:    9005 bov 1f      9004       0770-OV Not Set (whould been set on line 0535- if addr blank)-> Branch Not Taken       
9004: 20 STL 9006 9031 symb:    9004 stl  9006  findx       0771-Save addr to assign to symbol: Write 9006: 0000000029+


                                         add new symbol to symbol table, 
                                         add symbol addr to symbol addr table


9031: 60 RAU 9007 9032 symb:   findx rau  9007              0772-addr 9007 copies from addr 0256 = level defined at line 0804- level alf +00 0000 0000, so Acc=level=0              
                                                                 last copy operation: 
                                                                        line 723-Copy 0250-0299 to 9001-9050 (50 words) 
9032: 88 RAC 8001 9033 symb:         rac  8001              0773-IRC=Acc=0=last 4 digits of level=first symbol free in symbol table
9033: 30 SRT 0002 9034 symb:         srt  0002              0774-Now ACC: 0000000000 0000000000+, OV: 0
9034: 16 SLO 8002 9035 symb:         slo  8002              0775-Clear AccLo       
9035: 84 TLU 9011 9036 symb:         tlu  9011              0776-addr 9011 copies from addr 0260:
                                                                line 1305   30010 BMI  898   3      0260 +46 0898 0003                                   
                                                                line 1206   30011 BOV        1      0261 +47 1966 0001                                   
                                                                line 1474   30012 BD6 1F            0262 +96 1539 1739                                   
                                                                line 1446   30013 WTM  0   B 3      0263 +56 4000 0003                                   
                                                                line 1095   30014 BD7  9008         0264 +97 9008 9014                                   

                                           ... Search DIST: 0000000000+ '     '
                                           ...  Found 9011: 4608980003+ '~~8 ~'
                                           ... Result ACC: 0000000000 0090110000+, OV: 0
9036: 15 ALO 9037 8002 symb:         alo         8002       0777-Add to located addr the instr 64 9999 0594 -> 
                                                                 AccLo=00 9011 0000 + 64 9999 0594 
                                                                      = 6590100594 = RAL 9010 0594
8002: 65 RAL 9010 0594                                          -addr 9010 copies from addr 0259      
                                                                 line 1490   30009 STD  RAMSW   1    0259 +24 0773 0001
                                           ... Read 9010: 24 0773 0001+
                                           ... ACC: 0000000000 2407730001+, OV: 0
0594: 15 ALO 9007 0501 symb:         alo  9007       d      0779-acclo=acclo + level. As level=0, ACC: 0000000000 24 0773 0001+, OV: 0
0501: 20 STL 0256 0509 symb:         stl level       d      0780-set level: Write 0256: 24 0773 0001+ (=STD RAMSW 0001)
0509: 59 SXC 0293 0915 symb:         sxc  293        d      0781-set IRC=irc (that is =level)-293       
0915: 49 BMC 9038 0827 symb:         bmc store  hlt11       0782-if IRC >= 0 -> symb table full
9038: 69 LDD 1493 0596 symb:   store lod s0294       d      0783-DIST=symbol to add to table: Read 1493: 6161000000+ 'AA    ' (s0294=sentinel for TLU=symb searched)
0596: 24 STD 7493 9039 symb:         std s0294c             0784-Store new symbol in symbol table indexed by IRC, -> STD    1200 9039  (developed addr)
9039: 66 RSL 8007 9040 symb:         rsl  8007              0785-Set Acc=IRC=index on symbol table, Now ACC: 0000000000 0000000293+, OV: 0
9040: 14 DIV 9041 0206 symb:         div 2i          d      0786-symbol addr table at e0147. Stores two symbol addr (in DA&IA) per word -> this is why index on e0147 = index on Symb table /2. remainder is used to select DA or IA
                                                                 293/2 -> Div result ACC: 0000000001 0000000146+, OV: 0
0206: 89 RSC 8002 9042 symb:         rsc  8002              0787-IRC=Index on symb table addr=-146
9042: 16 SLO 8001 9043 symb:         slo  8001              0788-clear acclo: Read 8001: 0000000146+, Now ACC: 0000000001 0000000000+, OV: 0
9043: 15 ALO 9006 9044 symb:         alo  9006              0789-AccLo=symbol addr: Read 9006: 0000000029+, Now ACC: 0000000001 0000000029+, OV: 0
9044: 69 LDD 7196 9045 symb:         lod e0147c             0790-e0001=symbol addr table (at addr 1196). IRC=-146 -> LDD    1050 9045  (developed addr), Read 1050: 0000000000+
9045: 44 NZU 9046 9047 symb:         nzu        2f          0791-2 addr per word. result of div by 2 set if addr symbol is on DA side or IA side. Now ACC: 0000000001 0000000029+, OV: 0
9046: 35 SLT 0004 9009 symb:         slt  4      9009       0792-Store on DA -> shift to DA position. Now ACC: 0000010000 0000290000+, OV: 0
9009: 22 SDA 7196 9048 symb:   9009  sda e0147c             0793-Store DA on Symbol Addr table       
9048: 30 SRT 0004 9049 symb:         srt  4     3f          0794-restore addr, Now ACC: 0000000001 0000000029+, OV: 0
9049: 47 BOV 4002 9000 symb:   3     bov  2   b  9000       0799-IRB=1, but OV=0 -> return to 9000

                                        check if resolved addr is in drum/ias


9000: 09 LDI 0303 9029 symb:    9000 ldi 00001   9029       0518-       
                                         ... Copy 0303-0349 to 9000-9046 (47 words)
9029: 88 RAC 9031 9018 symb:    9029 rac  9031   9018       0582-addr 9031 comes from addr 0334 = save value of IRC = -256 = Save IRC (value to calc return addr from master calculation)       
9018: 20 STL 9050 9021 symb:    9018 stl  9050              0590-save absolute location addr Write 9050: 0000000029+       
9021: 35 SLT 0006 9022 symb:         slt  6                 0591-Now ACC: 0001000000 0029000000+, OV: 0
9022: 16 SLO 8002 9023 symb:         slo  8002              0592-AccLo to DIST, ACC=0001000000 0000000000+, OV: 0
9023: 84 TLU 9002 9024 symb:         tlu  9002              0593-Search in memory map at lines 0583-0589        
                                          ... Search DIST: 0029000000+ ' *   '
                                          ...  Found 9002: 1999000001- ')9  ~'
                                          ... Result ACC: 0001000000 0090020000+, OV: 0 -> AccLo = 00 ADDR 0000 addr of data found
9024: 15 ALO 9025 8002 symb:         alo         8002       0594-Read 9025: 8000009026+, ACC: 0001000000 8090029026+, OV: 0
8002: 80 RAA 9002 9026                                          Read 9002: 1999000001-, IRA: 0001-
                                                                 Set IRA=contents of addr 9002=-1. 
9026: 41 BMA 9016 9012 symb:         bma  9016   9012       0596-       
9016: 67 RAM 9404 9216 symb:    9016 ram  9004b  9016a      0597-ACC: 0000000000 0907800000+, OV: 0
9015: 17 AML 9050 9027 symb:    9015 aml  9050  1f          0600-Read 9050: 0000000029+, ACC: 0000000000 0907800029+, OV: 0
9027: 69 LDD 8003 9028 symb:   1     lod  8003              0602-clear distrib       
9028: 23 SIA 9050 9001 symb:         sia  9050   9001       0603-Write 9050: 0000000029+
9001: 65 RAL 8001 6300 symb:    9001 ral  8001   300 c      0604-Acc=addr, jmp to 300+IRC = 300+(-256) = 44 (line 0441-)

                                        back to processing the instruction

0044: 69 LDD 9011 0600 symb:    44   lod  9011  alfin       0441-The addr 9011 holds the inst being assmbled: Read 9011: 60 0024 0000+ already has OpCode (RAU=60), DA (=0024). Now will set IA
0600: 23 SIA 9011 0207 symb:   alfin sia  9011              0442-Set IA on instr assembled: Write 9011: 6000240029+
0207: 69 LDD 1960 0764 symb:         lod  1960              0443-Read 1960: 0000908000+ source code control word
0764: 96 BD6 0622 0527 symb:         bd6 1f                 0444- 8-> instr is negative, 9=positive, Now DIST: 0000908000+
0527: 65 RAL 9011 0241 symb:         ral  9011  2f          0445-get inst assembled as positive value: Read 9011: 6000240029+
0241: 15 ALO 9000 0008 symb:   2     alo  9000  3f          0451-addr 9000 comes from addr 0303 adend set at line 0470-; Now Read 9000: 0000000000+, ACC: 0000000000 6000240029+, OV: 0
0008: 20 STL 0314 2219 symb:   3     stl instr   219 a      0452-save instr assembled. IRA=output mode: -1 -> 1-card output format

                                        select output mode

0218: 65 RAL 0477 0081 symb:    218  ral fivtg  pnch1       0453-Read 0477: 8888888888-, ACC: 0000000000 8888888888-, OV: 0
0081: 46 BMI 0642 0635 symb:   pnch1 bmi 9f     2f          0921-jmp to 2f if is 5 word per card mode
0642: 65 RAL 0046 0601 symb:   9     ral 533tl              0943-now 533tl=0       
0601: 45 NZE 0684 0705 symb:         nze corof              0944-jmp to corof if NO core mode
0705: 65 RAL 1961 0766 symb:         ral locat              0945-assembled instr location: Read 1961: 1221000000+, ACC: 0000000000 1221000000+, OV: 0
0766: 16 SLO 0368 0773 symb:         slo n0027  ramsw       0946-Read 0368: 4905050598+, now ACC: 0000000000 3684050598-, OV: 0
0773: 46 BMI 0684 0685 symb:   ramsw bmi corof  corsw       0985-jmp to NO core mode (corof)       
0684: 88 RAC 0209 0890 symb:   corof rac finis  prone       1000-jmp to prone (print one card), the jmp to finis (IRC=0209)

                                        print/punch one card
    
0890: 81 RSA 0001 1496 symb:   prone rsa  1                 1002-IRA=-1
1496: 69 LDD 1449 0757 symb:         lod onesw              1003-Read 1449: 9999999999-
0757: 92 BD2 0830 1017 symb:         bd2 9f                 1004-       
1017: 50 AXA 0001 0026 symb:         axa  1     90001       1005-IRA=0       
0026: 67 RAM 0780 0893 symb:   90001 ram locus              1010-Read 0780: 0000001221+ <-- addr of assembled instr
0893: 35 SLT 0005 0656 symb:         slt  5                 1011-ACC: 0000000000 0122100000+, OV: 0
0656: 27 SET 9057 0930 symb:         set  9057              1012-       
0930: 15 ALO 0585 0694 symb:         alo ccnt1              1013-ccnt1 = card count <- number of cards punched
0694: 15 ALO 0897 0604 symb:         alo 1ixxx              1014-incr, now ACC: 0000000000 0122100001+, OV: 0
0604: 29 STI 1957 0770 symb:         sti  1957              1015-       
                                          ... Copy 9057-9059 to 1957-1959 (3 words)
0770: 23 SIA 0585 0940 symb:         sia ccnt1              1016-store updated ccnt1: Write 0585: 0000000001+
0940: 27 SET 9040 1045 symb:         set  9040              1017-       
1045: 09 LDI 1951 0672 symb:         ldi  1951              1018-copy read card area to punch card area
                                     ... Copy 1951-1970 to 9040-9059 (20 words)
0672: 20 STL 9048 1030 symb:         stl  9048              1019-Write 9048: 0122100001+
1030: 65 RAL 9050 0687 symb:         ral  9050              1020-Read 9050: 1221000000+, ACC: 0000000000 1221000000+, OV: 0
0687: 10 AUP 9049 1495 symb:         aup  9049              1021-Read 9049: 0000908000+, ACC: 0000908000 1221000000+, OV: 0
1495: 35 SLT 0003 0703 symb:         slt  3                 1022-       
0703: 30 SRT 0003 0762 symb:         srt  3                 1023-       
0762: 47 BOV 0916 0633 symb:         bov 1f                 1024- ???      
0633: 30 SRT 0002 0639 symb:         srt  2                 1025-ACC: 0000009080 0012210000+, OV: 0
0639: 22 SDA 9047 0706 symb:         sda  9047              1026-Write 9047: 0012218000+ <- location and card type
0706: 69 LDD 0314 1018 symb:         lod instr              1027-Read 0314: 6000240029+ <- assembled instr
1018: 24 STD 9046 0683 symb:         std  9046              1028-       
0683: 35 SLT 0002 0939 symb:         slt  2                 1029-ACC: 0000908000 1221000000+, OV: 0
0939: 17 AML 0046 0901 symb:         aml 533tl  2f          1030-read 0046: 0000000000+
0901: 16 SLO 9050 0709 symb:   2     slo  9050              1033-Read 9050: 1221000000+, Now ACC: 0000908000 0000000000+, OV: 0
0709: 69 LDD 8003 0671 symb:         lod  8003              1034-Read 8003: 0000908000+
0671: 23 SIA 9049 2028 symb:         sia  9049  90003a      1035-Set punch control word (Write 9049: 0000900000), jmp to 0028+IRA, as IRA=* -> jmp to 0028
0028: 71 WR1 9040 0830 symb:   90003 wr1  9040  9f          1006-punch at last
L: ... Punch Card Unit CDP1
L: ... Punch Card 9040: 0091929291+ ' 1221' 
L: ... Punch Card 9041: 0000000000+ '     '
L: ... Punch Card 9042: 6161000000+ 'AA   '
L: ... Punch Card 9043: 7961840000+ 'RAU  '
L: ... Punch Card 9044: 0000000000+ '     '
L: ... Punch Card 9045: 0000000000+ '     '
L: ... Punch Card 9046: 6000240029+ '~ ~ *' <- instr
L: ... Punch Card 9047: 0012218000+ ' ~~~ ' <-- xx NNNN xxxx  location
L: ... Punch Card 9048: 0122100001+ '~~~ ~' <-- xx xxxx NNNN card count
L: ... Punch Card 9049: 0000900000+ '  0  '
L: Punch Card: 6I1954195C      0001241221800?600024002I   1221rau      aa              

0830: 69 LDD 1448 0851 symb:   9     lod prtsw              1007-Read 1448: 8888888888-
0851: 92 BD2 0554 2027 symb:         bd2 9f     90002a      1008-jmp to 9f (no PTR output selected)
0554: 47 BOV 6000 6000 symb:   9     bov  0   c  0   c      1036-clear OV, jmp to IRC=209
0209: 65 RAL 1962 0067 symb:   finis ral progp              0458-finish instr processing. progp=0 -> Acc=0
0067: 45 NZE 0121 0949 symb:         nze        1f          0459-Acc=0 -> jmp to 1f
0949: 60 RAU 0256 0511 symb:   1     rau level              0465-Now ACC: 2407730001 0000000000+, OV: 0
0511: 24 STD 0215 0674 symb:         std kee                0466-???       
0674: 60 RAU 0927 0532 symb:         rau corec              0467-???, Now Acc: 0000008999 0000000000+, OV: 0
0532: 20 STL 0188 0542 symb:         stl optim              0468-clear optim var
0542: 21 STU 0096 1049 symb:         stu keepp              0469-???, Write 0096: 0000008999+
1049: 20 STL 0303 0507 symb:         stl adend              0470-???, Write 0303: 0000000000+
0507: 69 LDD 0460 0615 symb:         lod carry              0471-Read 0460: 6264980024+
0615: 24 STD 0223 0526 symb:         std keep   ssout       0472-???

0526: 70 RD1 1999 1998 symb:   ssout rd1  1999  start       0474-       
L: Read Card:                                                rauaa
L: ... Read Card Unit CDR1
L: ... Read Card 1951: 0000000000+ '     '
L: ... Read Card 1952: 6161000000+ 'AA   '
L: ... Read Card 1953: 0000000000+ '     '
L: ... Read Card 1954: 7961840000+ 'RAU  '
L: ... Read Card 1955: 0000000000+ '     '
L: ... Read Card 1956: 0000000000+ '     '
L: ... Read Card 1957: 0000009999+ '   99'
L: ... Read Card 1958: 0000009999+ '   99'
L: ... Read Card 1959: 0000009999+ '   99'
L: ... Read Card 1960: 0000908000+ '  0~ '

1998: 60 RAU 1960 0015 symb:   start rau  1960              0127-       



