- Integration with updated sim_card API - Addition of MT (Mag Tape) device - Addition of DSK (Disk) device - Build time simulator test
695 lines
58 KiB
Text
695 lines
58 KiB
Text
|
|
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-
|
|
|
|
|
|
|