mirror of
https://github.com/simh/simh.git
synced 2026-04-17 08:41:28 +00:00
I650: Update IBM 650 simulator to Release 4
- Integration with updated sim_card API - Addition of MT (Mag Tape) device - Addition of DSK (Disk) device - Build time simulator test
This commit is contained in:
committed by
Mark Pizzolato
parent
275cc417fe
commit
08027162ca
@@ -14,10 +14,11 @@
|
||||
|
||||
set cpu 2k
|
||||
|
||||
set cdr1 wiring=8word
|
||||
att cdr1 -q soap/soapII.dck
|
||||
|
||||
echo ***
|
||||
echo *** Load soap deck into drum
|
||||
echo *** Load SOAP deck into drum
|
||||
echo ***
|
||||
|
||||
d csw 7019519999
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
|
||||
Restoration comments May/2018
|
||||
By Roberto Sancho
|
||||
|
||||
|
||||
Floating Point Interpretive System (BELL interpreter)
|
||||
From Bitsavers Manual 28-4024_FltDecIntrpSys.pdf
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
|
||||
set cpu 2k
|
||||
|
||||
set cdr1 wiring=8word
|
||||
att cdr1 -q soap/soapII.dck
|
||||
|
||||
echo ***
|
||||
@@ -29,7 +30,7 @@ echo ***
|
||||
echo *** Run SOAP assembler
|
||||
echo ***
|
||||
|
||||
att cdr1 deck_soap.dck
|
||||
att cdr1 -q deck_soap.dck
|
||||
set cdr1 wiring=soap
|
||||
|
||||
att cdp1 -n -q fortransit/fortransit_addfn.dck
|
||||
@@ -39,7 +40,7 @@ d ar 1000
|
||||
go
|
||||
|
||||
; check if programed stop because an error is detected
|
||||
if not prop=01 goto assemble_ok0
|
||||
if not prop=01 goto assemble_ok0;
|
||||
|
||||
echo
|
||||
echo *** (assembling error code in AR)
|
||||
@@ -61,7 +62,7 @@ echo ***
|
||||
echo *** Run SOAP assembler
|
||||
echo ***
|
||||
|
||||
att cdr1 deck_soap.dck
|
||||
att cdr1 -q deck_soap.dck
|
||||
set cdr1 wiring=soap
|
||||
|
||||
att cdp1 -n -q fortransit/pack.dck
|
||||
@@ -71,7 +72,7 @@ d ar 1000
|
||||
go
|
||||
|
||||
; check if programed stop because an error is detected
|
||||
if not prop=01 goto assemble_ok1
|
||||
if not prop=01 goto assemble_ok1;
|
||||
|
||||
echo
|
||||
echo *** (assembling error code in AR)
|
||||
@@ -83,7 +84,7 @@ goto end
|
||||
:assemble_ok1
|
||||
|
||||
; check if programed stop because normal termination
|
||||
if prop=70 if ar=1951 goto assemble_ok2
|
||||
if ((PROP==70) && (AR==1951)) goto assemble_ok2;
|
||||
goto end
|
||||
|
||||
:assemble_ok2
|
||||
|
||||
23
I650/sw/build_soap4_tap_lib.ini
Normal file
23
I650/sw/build_soap4_tap_lib.ini
Normal file
@@ -0,0 +1,23 @@
|
||||
|
||||
; set console -n log=log.txt
|
||||
; set debug -n debug.txt
|
||||
; set debug stdout
|
||||
; set cpu debug=cmd;data;detail
|
||||
|
||||
; create new SOAP-4000 library tape
|
||||
at mt2 -q -n soaplib.tap
|
||||
det mt2
|
||||
|
||||
; assemble librarian program (soap4_lib.txt) and run it (starts at addr 1000)
|
||||
; the librarian program reads from cdpr cards (soap4_lib_routines.txt) to be loaded in library tape
|
||||
; must use SOAPA wiring on card read and punch
|
||||
|
||||
do run_soap4.ini soap/soap4_lib.txt 1000 soap/soap4_example_lib_routines.txt SOAPA SOAPA
|
||||
|
||||
; now test library tape usage
|
||||
|
||||
do run_soap4.ini soap/soap4_example_tap.txt 1000
|
||||
|
||||
|
||||
:end
|
||||
|
||||
24
I650/sw/build_ssoap_ramac_from_decks.ini
Normal file
24
I650/sw/build_ssoap_ramac_from_decks.ini
Normal file
@@ -0,0 +1,24 @@
|
||||
|
||||
; set console -n log=log.txt
|
||||
; set debug -n debug.txt
|
||||
; set debug stdout
|
||||
; set cpu debug=cmd;data;detail
|
||||
|
||||
; assemble ramac loader that loads tracks 00-33 to drum
|
||||
; the loader is called by ssoap_calling_card.dck
|
||||
|
||||
do run_supersoap.ini supersoap/ssoap_loader_src.txt
|
||||
|
||||
; prepare the deck to be copied to ramac, tracks 00-66
|
||||
|
||||
carddeck -q join deck_out.dck supersoap/ssoap_main.dck supersoap/ssoap_core.dck as deck_in.dck
|
||||
|
||||
; assemble and run the build program that read decks and writes them to ramac
|
||||
|
||||
do run_supersoap.ini supersoap/build_ssoap_ramac_src.txt 1000 deck_in.dck 8word
|
||||
|
||||
; test all is working by assembling the example program
|
||||
|
||||
do run_supersoap_ramac.ini supersoap/ssoap_example_src.txt
|
||||
|
||||
:end
|
||||
BIN
I650/sw/fds/5440.2009_INTERPRETIVE_FDS.crd
Normal file
BIN
I650/sw/fds/5440.2009_INTERPRETIVE_FDS.crd
Normal file
Binary file not shown.
63
I650/sw/fds/example.txt
Normal file
63
I650/sw/fds/example.txt
Normal file
@@ -0,0 +1,63 @@
|
||||
+ A accumulator is address 0037
|
||||
+ B accumulator is address 0089
|
||||
+ K accumulator is address 0057
|
||||
+ branch to address 0026 to resume execution of FDS operations on next address
|
||||
+
|
||||
+ Floating point format EE mmmm mmmm
|
||||
+ FDS instruction: + AAAA OP AAAA BBBB-
|
||||
+ IBM 650 instruction: + AAAA OP (DA) (IA)
|
||||
+
|
||||
+ constants
|
||||
+ 0500 50 0000 0000 0.0 floating point
|
||||
+ 0501 50 1000 0000 1.0 floating point
|
||||
+ 0502 00 0000 0001 decimal 1
|
||||
+ 0503 00 0000 0010 decimal 10 max number of results
|
||||
+ 0504 00 0000 0000 decimal zero
|
||||
+ 0505 00 1100 0000 start of interpretive FDS program
|
||||
+
|
||||
+ variables
|
||||
+ 0510 00 0000 0000 N float
|
||||
+ 0511 00 0000 0000 sqrt(n)
|
||||
+ 0512 00 0000 0000 iteration count
|
||||
+
|
||||
+ Main FDS program
|
||||
+
|
||||
+ 1100 01 0510 0501- FDS A(N=0510) + B(1.0=0501) -> K
|
||||
+ 1101 69 0057 1201 ld dist<-K
|
||||
+ 1201 24 0510 1202 std 0510 N<-K
|
||||
+ 1202 60 0512 1203 rau 0512 acc=iteration count
|
||||
+ 1203 10 0502 1204 au 0502 acc=acc+1
|
||||
+ 1204 21 0512 1205 stu 0512 interation count=acc
|
||||
+ 1205 11 0503 1206 su 0503 compare with max num of iterations
|
||||
+ 1206 46 0026 9999 brmin continue interpretation, else stop
|
||||
+ 1102 16 0510 0511- FDS sqrt(A(N=0510)) -> B (0511)
|
||||
+ 1103 69 0512 1210 ld iteration count
|
||||
+ 1210 24 0977 1211 std word1 punch area
|
||||
+ 1211 69 0510 1212 ld N float
|
||||
+ 1212 24 0978 1213 std word2 punch area
|
||||
+ 1213 69 0511 1214 ld sqrt(N) float
|
||||
+ 1214 24 0979 1215 std word3 punch area
|
||||
+ 1215 71 0977 0026 pch Iteration num N float sqrt(N) float, then continue interpretation
|
||||
+ 1104 12 1100 0000- FDS BR A(=1100)
|
||||
+
|
||||
+ 1000 69 0504 1001 ld dist=0 decimal
|
||||
+ 1001 24 0512 1002 std iteration count
|
||||
+ 1002 69 0500 1003 ld dist=0 float
|
||||
+ 1003 24 0510 1004 std N
|
||||
+ 1004 65 0505 0420 ral acc=start of interpretive program, start interpretation
|
||||
+
|
||||
+ should print
|
||||
+
|
||||
+ 00 0000 0001 50 1000 0000 50 1000 0000
|
||||
+ 00 0000 0002 50 2000 0000 50 1414 2135
|
||||
+ 00 0000 0003 50 3000 0000 50 1732 0508
|
||||
+ 00 0000 0004 50 4000 0000 50 2000 0000
|
||||
+ 00 0000 0005 50 5000 0000 50 2236 0679
|
||||
+ 00 0000 0006 50 6000 0000 50 2449 4897
|
||||
+ 00 0000 0007 50 7000 0000 50 2645 7513
|
||||
+ 00 0000 0008 50 8000 0000 50 2828 4271
|
||||
+ 00 0000 0009 50 9000 0000 50 3000 0000
|
||||
+
|
||||
+ iteration num N=1..9 float sqrt(N) float
|
||||
+
|
||||
+g1000 transfer card. Start execution at addr 1000
|
||||
2
I650/sw/fds/load_card.dck
Normal file
2
I650/sw/fds/load_card.dck
Normal file
@@ -0,0 +1,2 @@
|
||||
G0195119026919521951691954195369195619556919581957691960195910800119653500011966 Load FDS 5 word Card
|
||||
F919541952241961195370196119610000001901 ignore first load card of fds deck
|
||||
@@ -1,5 +1,6 @@
|
||||
|
||||
Restoration comments May/2018
|
||||
By Roberto Sancho
|
||||
|
||||
Fortransit
|
||||
From Bitsavers Manual CarnegieInternalTranslator.pdf (listings)
|
||||
@@ -46,16 +47,16 @@ The PACKAGE provides the subroutines stated in fortransit.pdf
|
||||
in page 36, and also provides a set of functions to be
|
||||
used in fortransit source code:
|
||||
|
||||
A=LOGF(B) base 10 Logarithm: log 10
|
||||
A=EXPF(B) base 10 exponent: 10^(B)
|
||||
A=LNF(B) base e logarithm: neperian log e
|
||||
A=EXPNF(B) base e exponent: e^(float)
|
||||
A=COSF(B) cosine
|
||||
A=SINF(B) sine
|
||||
A=SQRT(B) square root
|
||||
A=ABSF(B) absolute value
|
||||
A=INTF(B) integer part
|
||||
A=MAXF(B,C,...) returns maximum value of argument list
|
||||
A=LOGF(B) base 10 Logarithm: log 10
|
||||
A=EXPF(B) base 10 exponent: 10^(B)
|
||||
A=LNF(B) base e logarithm: neperian log e
|
||||
A=EXPNF(B) base e exponent: e^(float)
|
||||
A=COSF(B) cosine
|
||||
A=SINF(B) sine
|
||||
A=SQRT(B) square root
|
||||
A=ABSF(B) absolute value
|
||||
A=INTF(B) integer part
|
||||
A=MAXF(B,C,...) returns maximum value of argument list
|
||||
|
||||
All functions has FLOAT arguments and returns FLOAT value.
|
||||
If a FIXED argument is given, the program will stop with AR=9099
|
||||
|
||||
@@ -724,9 +724,9 @@
|
||||
6I1954195C 0724241646800?310011176D av5 srd 0011 av23
|
||||
6I1954195C 0725241696800?318309886B av7 31 8309 8862
|
||||
6I1954195C 0726241728800?157079632G pih 15 7079 6327 pi / 2 in
|
||||
6I1954195C 0727241912800?645963711J av13 64 5963 7111
|
||||
6I1954195C 0727241912800?645963711J -av13 64 5963 7111
|
||||
6I1954195C 0728241910800?079689679C av14 07 9689 6793
|
||||
6I1954195C 0729241804800?004673765O av15 00 4673 7656
|
||||
6I1954195C 0729241804800?004673765O -av15 00 4673 7656
|
||||
6I1954195C 0730241829800?000151484B av16 00 0151 4842
|
||||
6I1954195C 0731241847800?100000005? av21 10 0000 0050
|
||||
6I1954195C 0732241919800?999999999I n999 99 9999 9999
|
||||
|
||||
205
I650/sw/i650_demo_all.ini
Normal file
205
I650/sw/i650_demo_all.ini
Normal file
@@ -0,0 +1,205 @@
|
||||
|
||||
; demo all .ini scripts
|
||||
|
||||
set console -n log=console.txt
|
||||
set debug -q stdout
|
||||
set debug -q -n debug.txt
|
||||
set cpu debug=cmd;data;detail
|
||||
set mt debug=cmd;data;detail;exp
|
||||
set dsk debug=cmd;data;detail;exp
|
||||
|
||||
; uncomment any of them to simulate ibm 650 real speed
|
||||
; set throttle 11k
|
||||
; set throttle 55/5
|
||||
|
||||
echo
|
||||
echo ===========================================================
|
||||
echo test build_soap_from_source.ini
|
||||
echo ===========================================================
|
||||
echo generates soap assembly listing
|
||||
echo ===========================================================
|
||||
echo
|
||||
|
||||
do build_soap_from_source.ini
|
||||
set env -P "Press Enter to continue . . . " dummy=cont
|
||||
|
||||
echo
|
||||
echo ===========================================================
|
||||
echo test run_soap.ini
|
||||
echo ===========================================================
|
||||
echo example from manual
|
||||
echo should print 0100 lines
|
||||
echo ===========================================================
|
||||
echo
|
||||
|
||||
do run_soap.ini soap/soap_example_1_src.txt 1000
|
||||
set env -P "Press Enter to continue . . . " dummy=cont
|
||||
|
||||
echo
|
||||
echo ===========================================================
|
||||
echo test build_soap4_tap_lib.ini
|
||||
echo ===========================================================
|
||||
echo generate a library tape, assemble and run a prog that calls it
|
||||
echo should display 38 0100 up to 38 6600
|
||||
echo then assemble example
|
||||
echo ===========================================================
|
||||
echo
|
||||
|
||||
; build_soap4_tap_lib.ini calls run_soap4.ini, so no need to test it again
|
||||
do build_soap4_tap_lib.ini
|
||||
set env -P "Press Enter to continue . . . " dummy=cont
|
||||
|
||||
echo
|
||||
echo ===========================================================
|
||||
echo test build_ssoap_ramac_from_decks.ini
|
||||
echo ===========================================================
|
||||
echo builds supersoap on ramac disk, then assemble example prog
|
||||
echo ===========================================================
|
||||
echo
|
||||
|
||||
do build_ssoap_ramac_from_decks.ini
|
||||
set env -P "Press Enter to continue . . . " dummy=cont
|
||||
|
||||
echo
|
||||
echo ===========================================================
|
||||
echo test assemble ssoap from source
|
||||
echo ===========================================================
|
||||
echo assemble original supersoap source
|
||||
echo ===========================================================
|
||||
echo
|
||||
|
||||
do run_supersoap_ramac.ini supersoap/ssoap_main_core_src.txt
|
||||
set env -P "Press Enter to continue . . . " dummy=cont
|
||||
|
||||
echo
|
||||
echo ===========================================================
|
||||
echo test run_fds.ini
|
||||
echo ===========================================================
|
||||
echo generates 9 lines (numberes 1-9) with 3 colums of numbers
|
||||
echo integer (1..9), float (1..9), sqrt (1..9)
|
||||
echo last line is: 00 0000 0009 50 9000 0000 50 3000 0000
|
||||
echo ===========================================================
|
||||
echo
|
||||
|
||||
do run_fds.ini fds/example.txt
|
||||
set env -P "Press Enter to continue . . . " dummy=cont
|
||||
|
||||
echo
|
||||
echo ===========================================================
|
||||
echo test run_ra.ini
|
||||
echo ===========================================================
|
||||
echo regional assembler assembles and run aprog to list on one column 5-word cards
|
||||
echo listing is one column, words from 0900-0925, some 1960, 0990,
|
||||
echo more 1960s, 0401-0411. echo last line is: 0411 00 0000 0900
|
||||
echo ===========================================================
|
||||
echo
|
||||
|
||||
do run_ra.ini regional/print_five_field_ctrl_cards.txt regional/print_five_field_src.txt 0900 deck_in.dck
|
||||
set env -P "Press Enter to continue . . . " dummy=cont
|
||||
|
||||
echo
|
||||
echo ===========================================================
|
||||
echo build_is_from_decks.ini
|
||||
echo ===========================================================
|
||||
echo build is from source deck
|
||||
echo ===========================================================
|
||||
echo
|
||||
|
||||
do build_is_from_decks.ini ntr lbox
|
||||
set env -P "Press Enter to continue . . . " dummy=cont
|
||||
|
||||
echo
|
||||
echo ===========================================================
|
||||
echo test run_is.ini
|
||||
echo ===========================================================
|
||||
echo sieve of eratosthenes - print prime numbers < 50 (last one is 47)
|
||||
echo ===========================================================
|
||||
echo
|
||||
|
||||
do run_is.ini bell/is_example_1_src.txt
|
||||
set env -P "Press Enter to continue . . . " dummy=cont
|
||||
|
||||
echo
|
||||
echo ===========================================================
|
||||
echo test run_it.ini
|
||||
echo ===========================================================
|
||||
echo example from manual
|
||||
echo should print one line: 200020005 6400000051 100050005 11
|
||||
echo ===========================================================
|
||||
echo
|
||||
|
||||
do run_it.ini it/it_example_1_src.txt it/it_example_1_data.txt
|
||||
set env -P "Press Enter to continue . . . " dummy=cont
|
||||
|
||||
echo
|
||||
echo ===========================================================
|
||||
echo test run_it.ini
|
||||
echo ===========================================================
|
||||
echo sieve of eratosthenes - print prime numbers < 50 (last one is 47)
|
||||
echo ===========================================================
|
||||
echo
|
||||
|
||||
|
||||
do run_it.ini it/it_example_2_src.txt nul
|
||||
set env -P "Press Enter to continue . . . " dummy=cont
|
||||
|
||||
echo
|
||||
echo ===========================================================
|
||||
echo test build_fortransit_pack.ini
|
||||
echo ===========================================================
|
||||
echo build fortransit funcion packs
|
||||
echo ===========================================================
|
||||
echo
|
||||
|
||||
do build_fortransit_pack.ini
|
||||
set env -P "Press Enter to continue . . . " dummy=cont
|
||||
|
||||
echo
|
||||
echo ===========================================================
|
||||
echo test run_fortransit.ini
|
||||
echo ===========================================================
|
||||
echo example from manual - matrix multiplication
|
||||
echo ===========================================================
|
||||
echo
|
||||
|
||||
do run_fortransit.ini fortransit/fortransit_example_2_src.txt fortransit/fortransit_example_2_data.txt
|
||||
set env -P "Press Enter to continue . . . " dummy=cont
|
||||
|
||||
echo
|
||||
echo ===========================================================
|
||||
echo test run_fortransit.ini
|
||||
echo ===========================================================
|
||||
echo sieve of eratosthenes - print prime numbers < 50 (last one is 47)
|
||||
echo ===========================================================
|
||||
echo
|
||||
|
||||
do run_fortransit.ini fortransit/fortransit_example_1_src.txt nul
|
||||
set env -P "Press Enter to continue . . . " dummy=cont
|
||||
|
||||
echo
|
||||
echo ===========================================================
|
||||
echo test run_fortransit.ini
|
||||
echo ===========================================================
|
||||
echo test fortran functions (each one identified by a 1111 to 9999)
|
||||
echo ===========================================================
|
||||
echo
|
||||
|
||||
do run_fortransit.ini fortransit/fortransit_example_4_src.txt
|
||||
set env -P "Press Enter to continue . . . " dummy=cont
|
||||
|
||||
echo
|
||||
echo ===========================================================
|
||||
echo test run_fortransit.ini
|
||||
echo ===========================================================
|
||||
echo list a fortran graphic!
|
||||
echo ===========================================================
|
||||
echo
|
||||
|
||||
do run_fortransit.ini fortransit/fortransit_example_5_src.txt
|
||||
set env -P "Press Enter to continue . . . " dummy=cont
|
||||
|
||||
quit
|
||||
|
||||
goto end
|
||||
|
||||
:end
|
||||
@@ -1,5 +1,6 @@
|
||||
|
||||
Restoration comments May/2018
|
||||
By Roberto Sancho
|
||||
|
||||
Internal Translator (IT Compiler)
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
5 PACKAGE 4 IS
|
||||
5 PACKAGE 4 IS
|
||||
5 PACKAGE 2
|
||||
5 PLUS
|
||||
5 LOG AND EXPONENTIAL
|
||||
|
||||
1
I650/sw/ramac0.dsk
Normal file
1
I650/sw/ramac0.dsk
Normal file
File diff suppressed because one or more lines are too long
1
I650/sw/regional/load_id_card.dck
Normal file
1
I650/sw/regional/load_id_card.dck
Normal file
@@ -0,0 +1 @@
|
||||
G0195119026919521951691954195369195619556919581957691960195910800119653500011966 Load Identification Card
|
||||
18
I650/sw/regional/print_five_field_ctrl_cards.txt
Normal file
18
I650/sw/regional/print_five_field_ctrl_cards.txt
Normal file
@@ -0,0 +1,18 @@
|
||||
+
|
||||
+ regional assembler sample control cards
|
||||
+
|
||||
+ this is a five-field card because the '+' in column 3
|
||||
+ stores 0 at word 0, so no worries. allow comments past col 80
|
||||
+
|
||||
+ regions are defined by letter a-h plus digit 0-9
|
||||
+ first region is empty (00) used to define absolute addresses
|
||||
+ region start address and len is given
|
||||
+ regions should be stored on addr 1000 onwards, on ascending order
|
||||
+
|
||||
+ region start
|
||||
+ Addr name len addr comment
|
||||
? 1000a020000000 1000 a0 2000 0000 region for all drum absolute address
|
||||
? 1001c001000900 1001 c0 0100 0900 region for program code
|
||||
? 1002d000100990 1002 d0 0010 0990 region for program data (variables)
|
||||
? 1003h000100977 1003 h0 0010 0977 punch area
|
||||
? 1004h100110401 1004 h1 0011 0401 read area
|
||||
73
I650/sw/regional/print_five_field_src.txt
Normal file
73
I650/sw/regional/print_five_field_src.txt
Normal file
@@ -0,0 +1,73 @@
|
||||
c0000070h10010c00001 c0.0000 rd h1.0010 read card at addr 0401, jmp to 0410 if load card
|
||||
c0000165h10000c00002 ral h1.0000 ral 0401 addr word 1
|
||||
c0000220h00000c00003 stl h0.0000 stl 0777 addr word 1 for punch out
|
||||
c0000365h10001c00004 ral h1.0001 ral 0402 word 1 contents
|
||||
c0000420h00001c00005 stl h0.0001 stl 0778 word 1 for punch
|
||||
c0000571h00000c00006 pch h0.0000 punch 0777
|
||||
c0000665h10002c00007 ral h1.0002 ral 0403 addr word 2
|
||||
c0000720h00000c00008 stl h0.0000 stl 0777 addr word 2 for punch out
|
||||
c0000865h10003c00009 ral h1.0003 ral 0404 word 2 contents
|
||||
c0000920h00001c00010 stl h0.0001 stl 0778 word 2 for punch
|
||||
c0001071h00000c00011 pch h0.0000 punch 0777
|
||||
c0001165h10004c00012 ral h1.0004 ral 0405 addr word 3
|
||||
c0001220h00000c00013 stl h0.0000 stl 0777 addr word 3 for punch out
|
||||
c0001365h10005c00014 ral h1.0005 ral 0406 word 3 contents
|
||||
c0001420h00001c00015 stl h0.0001 stl 0778 word 3 for punch
|
||||
c0001571h00000c00016 pch h0.0000 punch 0777
|
||||
c0001665h10006c00017 ral h1.0006 ral 0407 addr word 4
|
||||
c0001720h00000c00018 stl h0.0000 stl 0777 addr word 4 for punch out
|
||||
c0001865h10007c00019 ral h1.0007 ral 0408 word 4 contents
|
||||
c0001920h00001c00020 stl h0.0001 stl 0778 word 4 for punch
|
||||
c0002071h00000c00021 pch h0.0000 punch 0777
|
||||
c0002165h10008c00022 ral h1.0008 ral 0408 addr word 5
|
||||
c0002220h00000c00023 stl h0.0000 stl 0777 addr word 5 for punch out
|
||||
c0002365h10009c00024 ral h1.0009 ral 0409 word 5 contents
|
||||
c0002420h00001c00025 stl h0.0001 stl 0778 word 5 for punch
|
||||
c0002571h00000c00000 pch h0.0000 c0.0000 punch 0777 goto start
|
||||
d0 0 variables for program
|
||||
h1 000a00000a00000 initialize punch area
|
||||
h1 200a00000a00000 initialize punch area
|
||||
h1 300a00000a00000 initialize punch area
|
||||
h1 400a00000a00000 initialize punch area
|
||||
h1 500a00000a00000 initialize punch area
|
||||
h1 600a00000a00000 initialize punch area
|
||||
h1 700a00000a00000 initialize punch area
|
||||
h1 800a00000a00000 initialize punch area
|
||||
h1 900a00000a00000 initialize punch area
|
||||
h1 1000a00000c00000 nop 0000 c0.0000 jmp back to read next card if this card is a load card (thus ignore reads cards)
|
||||
i0 end of program
|
||||
|
||||
RRaaaaOOrrAAAArraaaa comment
|
||||
|
||||
RRaaaa = regional addr for location
|
||||
OO = opcode
|
||||
rrAAAA = regional addr for DA
|
||||
RRaaaa = regional addr for IA
|
||||
|
||||
rr is A0-H9 and mst match with a control card
|
||||
|
||||
|
||||
regional assembly sample program
|
||||
|
||||
prints contents of input deck (in five-filed card format)
|
||||
load cards are skiped
|
||||
|
||||
regional formatted source code card are indetified because the 'a'..'i' char in col 11
|
||||
allow comments past col 31
|
||||
|
||||
this program needs the following regions, defined by control cards
|
||||
|
||||
region start
|
||||
Addr name len addr comment
|
||||
1000 a0 2000 0000 region for all drum absolute address
|
||||
1001 c0 0100 0900 region for program code
|
||||
1002 d0 0010 0990 region for program data (variables)
|
||||
1003 h0 0010 0977 punch area
|
||||
1004 h1 0010 0401 read area
|
||||
|
||||
program starts at c0.0000 (gives absolute address 0900)
|
||||
no mnemonics! it is not a symbolic assembler!
|
||||
|
||||
i0 marks the end of source program. assembler stops with (stop 0000 0500)
|
||||
put next deck on read hopper (mount deck file on cdr1), and press start to
|
||||
assemble it (sim> go)
|
||||
18
I650/sw/regional/punch_drum_a_to_b.dck
Normal file
18
I650/sw/regional/punch_drum_a_to_b.dck
Normal file
@@ -0,0 +1,18 @@
|
||||
+ 1910678000191119116919461912191235000419131913221910191419143500021943 deck 033.02 punch drum from a to b
|
||||
+ 1943608003191519153500041916191615194719171917101948800319182419281919
|
||||
+ 1919211927194519202419301921192121192919451922241932192319232119311945 this routine punches words from drum sequential from a to b on five-field format
|
||||
+ 1924241934192519252119331945192624193619441944211935193719377119271938 to operatoe this routine
|
||||
+ 1938111910193919394619401941194010800119421942101949800319410100000000 1. set 8000 to 70 1901 xxxx
|
||||
+ 1945108002800319466900000000194700000100021948690000191819490000009992 2. put load-identification card in front and load deck 033.01
|
||||
+ 190+0100001910 3. on halt, set 8000 to 00 aaaa bbbb
|
||||
4. press start
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
8
I650/sw/regional/punch_eighths_drum.dck
Normal file
8
I650/sw/regional/punch_eighths_drum.dck
Normal file
@@ -0,0 +1,8 @@
|
||||
? 0997018000800009126980030913091323099109140914168001091509151509900916 deck 033.01 punch b eighths of the drum
|
||||
? 0916100992800209172409780918091822097709190919158003800209202409800921
|
||||
? 0921220979091909232409820924092422098109190926240984092709272209830919 this routine punches b eigh of the drum in such a fashion that the list is
|
||||
? 0929240986093009302209850931093710800109380938350008093909394409460940 representative that the list is representative of drum layout. b may vary
|
||||
? 0940650991094109411609940942094245094309970943200991094409446509960945 from 1 to 8. punching starts with contents of a.
|
||||
? 0945150995091609466509950916099069000009170992000050000309930001990012 to operate this routine
|
||||
? 0994000000000109960002000000093171097709320932160993093309332009950934 1. set 8000 to 70 1901 xxxx 2. put load-identification card in front and load deck 033.01
|
||||
? 093430000409360936608002093709116580000912091?0100000911 3. on halt, set 8000 to 00 a b 4. press start
|
||||
30
I650/sw/regional/ra.dck
Normal file
30
I650/sw/regional/ra.dck
Normal file
@@ -0,0 +1,30 @@
|
||||
+ 0500650807050105013500010502050220081705030503200818050405042108190505 deck 033.06
|
||||
+ 0505650803050605062005590508050870040105090509650401051005103500020511
|
||||
+ 0511210816051205123000010513051311080705140514460515061505156508170516 regional assembly routine
|
||||
+ 0516160816051705174505800518051865081805190519160401052005204505210525
|
||||
+ 0521460522064105222408180523052365080205240524210819052805256508190526
|
||||
+ 0526150806052705272008190528052865080805290529690401053005308410008002
|
||||
+ 0531698003053205322308110533053365080905340534690402053005366980030537
|
||||
+ 0537230812053805386508100539053969040305300541698003054205422308130543
|
||||
+ 0543650812054405443500040545054515040205460546698003054705472208210548
|
||||
+ 0548650403054905493000040550055015081305510551698003055205522308220553
|
||||
+ 0553650811055405543500040555055515040105560556150819055705576980030558
|
||||
+ 0558220820055905592407770560056065055905610561150806056205626905700563
|
||||
+ 0563220570056405646504050565056546056605680566660821056705671608220642
|
||||
+ 0568650821056905691508220642057020077805710571650570057205721608040573
|
||||
+ 0573450574057705741508050575057569055905760576220559050805777107770578
|
||||
+ 0578650803057905792005590508058024081705810581690401058205822408180583
|
||||
+ 0583650559058405842108190585058516080305860586450587052805871608020588
|
||||
+ 0588450589059305891608020590059045059105970591160802059205924506050601
|
||||
+ 0593650801059405941008000595059521077905960596200780059905976508010598
|
||||
+ 0598100800059905992107810600060020078206030601650801060206021008000603
|
||||
+ 0603210783060406042007840607060565080106060606100800060706072107850608
|
||||
+ 0608200786060906097107770610061065080306110611200559052806156505590616
|
||||
+ 0616160803061706174506180641061816080206190619450620062406201608020621
|
||||
+ 0621450622062806221608020623062345063606320624650801062506251008000626
|
||||
+ 0626210779062706272007800630062865080106290629100800063006302107810631
|
||||
+ 0631200782063406326508010633063310080006340634210783063506352007840638
|
||||
+ 0636650801063706371008000638063821078506390639200786064006407107770641
|
||||
+ 0641010000050006421504040570080000196000000801999999999908020000020000
|
||||
+ 0803240777056008042007860571080520078705710806000001000008070000000009
|
||||
+ 080865100005310809651000053608106510000541
|
||||
1
I650/sw/regional/ra_starter_card.dck
Normal file
1
I650/sw/regional/ra_starter_card.dck
Normal file
@@ -0,0 +1 @@
|
||||
? 050?6508070501 regional assembler starter card
|
||||
33
I650/sw/run_fds.ini
Normal file
33
I650/sw/run_fds.ini
Normal file
@@ -0,0 +1,33 @@
|
||||
|
||||
; set console -n log=log.txt
|
||||
; set debug -n debug.txt
|
||||
; set debug stdout
|
||||
; set cpu debug=cmd;data;detail
|
||||
|
||||
; params: %1 FDS program deck
|
||||
; %2 input card deck (if empty, do not attach input card)
|
||||
|
||||
set cpu 2k
|
||||
|
||||
; prepare input deck
|
||||
|
||||
carddeck -q join fds/load_card.dck fds/5440.2009_INTERPRETIVE_FDS.crd %1 %2 AS deck_in.dck
|
||||
|
||||
; Now put input deck in reader
|
||||
|
||||
att cdr1 -q deck_in.dck
|
||||
set cdr1 wiring=fds
|
||||
|
||||
att cdp1 -n -q deck_out.dck
|
||||
set cdp1 echo, print, wiring=8word
|
||||
att cdp0 -n -q print.txt
|
||||
|
||||
; uncomment this debug to get trace of how assembled source deck is executed
|
||||
; set debug -n debug.txt
|
||||
|
||||
d csw 70 1901 9999
|
||||
d ar 8000
|
||||
go
|
||||
|
||||
:end
|
||||
|
||||
@@ -25,6 +25,7 @@ echo ***
|
||||
echo *** Load FORTRANSIT translator deck into drum
|
||||
echo ***
|
||||
|
||||
set cdr1 wiring=8word
|
||||
att cdr1 -q -l fortransit/fortransit_translator.dck
|
||||
|
||||
d csw 70 1951 9999
|
||||
@@ -56,7 +57,7 @@ d ar 8000
|
||||
go
|
||||
|
||||
; check if programed stop because an error is detected
|
||||
if not prop=01 goto translate_ok1
|
||||
if not prop==01 goto translate_ok1;
|
||||
|
||||
echo
|
||||
echo *** (translation error code in Address Register AR)
|
||||
@@ -74,7 +75,7 @@ goto end
|
||||
:translate_ok1
|
||||
|
||||
; check if programed stop because normal termination
|
||||
if prop=70 if ar=1951 goto translate_ok2
|
||||
if ((PROP==70) && (AR==1951)) goto translate_ok2;
|
||||
goto end
|
||||
|
||||
:translate_ok2
|
||||
@@ -112,7 +113,8 @@ d ar 8000
|
||||
go
|
||||
|
||||
; check if programed stop because an error is detected
|
||||
if not prop=01 if not ar=1234 goto compile_ok1
|
||||
|
||||
if not ar==1234 goto compile_ok1;
|
||||
|
||||
echo
|
||||
echo *** (compilation error code in Upper ACC)
|
||||
@@ -124,7 +126,7 @@ goto end
|
||||
:compile_ok1
|
||||
|
||||
; check if programed stop because normal termination
|
||||
if prop=70 if ar=1951 goto compile_ok2
|
||||
if ((PROP==70) && (AR==1951)) goto compile_ok2;
|
||||
goto end
|
||||
|
||||
:compile_ok2
|
||||
@@ -160,7 +162,7 @@ echo ***
|
||||
echo *** Run SOAP assembler
|
||||
echo ***
|
||||
|
||||
att cdr1 deck_soap.dck
|
||||
att cdr1 -q deck_soap.dck
|
||||
set cdr1 wiring=soap
|
||||
|
||||
att cdp1 -n -q deck_out.dck
|
||||
@@ -170,7 +172,7 @@ d ar 1000
|
||||
go
|
||||
|
||||
; check if programed stop because an error is detected
|
||||
if not prop=01 goto assemble_ok1
|
||||
if not prop==01 goto assemble_ok1;
|
||||
|
||||
echo
|
||||
echo *** (assembling error code in AR)
|
||||
@@ -182,7 +184,7 @@ goto end
|
||||
:assemble_ok1
|
||||
|
||||
; check if programed stop because normal termination
|
||||
if prop=70 if ar=1951 goto assemble_ok2
|
||||
if ((PROP==70) && (AR==1951)) goto assemble_ok2;
|
||||
goto end
|
||||
|
||||
:assemble_ok2
|
||||
@@ -205,7 +207,7 @@ echo ***
|
||||
; soap source code read from card.
|
||||
|
||||
set cdr1 wiring=8WORD
|
||||
att cdr1 -l deck_out.dck
|
||||
att cdr1 -q -l deck_out.dck
|
||||
|
||||
d csw 7019519999
|
||||
d ar 8000
|
||||
@@ -220,8 +222,8 @@ att cdr1 -q %2
|
||||
set cdr1 wiring=fortransit
|
||||
:run1
|
||||
|
||||
if "%3" != "" att cdp1 -n -q %3
|
||||
if "%3" == "" att cdp1 -n -q deck_out.dck
|
||||
if "%3" != "" att cdp1 -n -q %3;
|
||||
if "%3" == "" att cdp1 -n -q deck_out.dck;
|
||||
set cdp1 echo, print, wiring=fortransit
|
||||
|
||||
; Now execute the loaded program object deck
|
||||
|
||||
@@ -13,9 +13,10 @@
|
||||
set cpu 2k
|
||||
|
||||
echo ***
|
||||
echo *** Load is main deck into drum
|
||||
echo *** Load IS main deck into drum
|
||||
echo ***
|
||||
|
||||
set cdr1 wiring=8word
|
||||
att cdr1 -q bell/is.dck
|
||||
|
||||
d csw 7019519999
|
||||
@@ -35,7 +36,7 @@ set cdp1 echo, print, wiring=is
|
||||
att cdp0 -n -q print.txt
|
||||
|
||||
echo ***
|
||||
echo *** Read and run is program
|
||||
echo *** Read and run IS program
|
||||
echo ***
|
||||
|
||||
d csw 7019511333
|
||||
|
||||
@@ -23,6 +23,7 @@ echo ***
|
||||
echo *** Load IT compiler deck into drum
|
||||
echo ***
|
||||
|
||||
set cdr1 wiring=8word
|
||||
att cdr1 -q -l it/it_compiler.dck
|
||||
|
||||
d csw 70 1951 3000
|
||||
@@ -47,7 +48,7 @@ go
|
||||
|
||||
; check if compilation ok
|
||||
|
||||
if accup=0 goto compile_ok
|
||||
if accup==0 goto compile_ok
|
||||
|
||||
echo
|
||||
echo *** (compilation error code in Upper ACC)
|
||||
@@ -75,7 +76,7 @@ carddeck -q join deck_res.dck it/it_reservation_p1.dck deck_soap.dck as deck_pit
|
||||
|
||||
|
||||
echo ***
|
||||
echo *** Load soap deck into drum
|
||||
echo *** Load SOAP deck into drum
|
||||
echo ***
|
||||
|
||||
att cdr1 -q -l it/soapII.dck
|
||||
@@ -85,7 +86,7 @@ d ar 8000
|
||||
go
|
||||
|
||||
echo ***
|
||||
echo *** Apply IT modifications to soap deck
|
||||
echo *** Apply IT modifications to SOAP deck
|
||||
echo ***
|
||||
|
||||
att cdr1 -q -l it/soapII_patch.dck
|
||||
|
||||
78
I650/sw/run_ra.ini
Normal file
78
I650/sw/run_ra.ini
Normal file
@@ -0,0 +1,78 @@
|
||||
|
||||
; set console -n log=log.txt
|
||||
; set debug -n debug.txt
|
||||
; set debug stdout
|
||||
; set cpu debug=cmd;data;detail
|
||||
|
||||
; params: %1 control cards for regional program
|
||||
; %2 regional assembly source card deck
|
||||
; %3 start address to run program (If empty, program not run)
|
||||
; %4 input card deck (if empty, do not attach input card)
|
||||
|
||||
set cpu 2k
|
||||
|
||||
; prepare input deck
|
||||
|
||||
carddeck -q join regional/load_id_card.dck regional/ra.dck %1 regional/ra_starter_card.dck %2 AS deck_in.dck
|
||||
|
||||
; Now put input deck in reader
|
||||
|
||||
att cdr1 -q deck_in.dck
|
||||
set cdr1 wiring=ra
|
||||
|
||||
att cdp1 -n -q deck_out.dck
|
||||
set cdp1 echo, print, wiring=ra
|
||||
att cdp0 -n -q print.txt
|
||||
|
||||
echo ***
|
||||
echo *** Regional Assembler source deck
|
||||
echo ***
|
||||
|
||||
; uncomment this debug to get trace of how source deck is assembled
|
||||
; set debug -n debug.txt
|
||||
|
||||
d csw 70 1901 0000
|
||||
d ar 8000
|
||||
go
|
||||
|
||||
; this generates deck_out.dck as program in five-field card format
|
||||
|
||||
if "%3" == "" goto end
|
||||
|
||||
; Load five-field card deck into drum
|
||||
|
||||
carddeck -q join regional/load_id_card.dck deck_out.dck AS deck_in.dck
|
||||
|
||||
; Now put input deck in reader
|
||||
|
||||
att cdr1 -q deck_in.dck
|
||||
set cdr1 wiring=ra
|
||||
|
||||
att cdp1 -n -q deck_out.dck
|
||||
set cdp1 echo, print, wiring=ra
|
||||
att cdp0 -n -q print.txt
|
||||
|
||||
d csw 70 1901 0000
|
||||
d ar 8000
|
||||
go
|
||||
|
||||
echo ***
|
||||
echo *** Run Assembled program
|
||||
echo ***
|
||||
|
||||
; attach input deck
|
||||
if "%4" == "" goto run1
|
||||
|
||||
att cdr1 -q %4
|
||||
|
||||
; Now execute the loaded deck
|
||||
:run1
|
||||
|
||||
; uncomment this debug to get trace of how assembled source deck is executed
|
||||
; set debug -n debug.txt
|
||||
|
||||
d ar %3
|
||||
go
|
||||
|
||||
:end
|
||||
|
||||
@@ -13,10 +13,11 @@ set cpu 2k
|
||||
|
||||
; Load soap deck into drum (1 word per card format), but does not execute it
|
||||
|
||||
set cdr1 wiring=8word
|
||||
att cdr1 -q -l soap/soapII.dck
|
||||
|
||||
echo ***
|
||||
echo *** Load soap deck into drum
|
||||
echo *** Load SOAP deck into drum
|
||||
echo ***
|
||||
|
||||
d csw 7019519999
|
||||
|
||||
117
I650/sw/run_soap4.ini
Normal file
117
I650/sw/run_soap4.ini
Normal file
@@ -0,0 +1,117 @@
|
||||
|
||||
; set console -n log=log.txt
|
||||
; set debug -n debug.txt
|
||||
; set debug stdout
|
||||
set cpu debug=cmd;data;detail
|
||||
set mt debug=cmd;data;detail;exp
|
||||
|
||||
|
||||
; params: %1 source card deck to assemble with soap
|
||||
; %2 start address to run program (If empty, program not run)
|
||||
; %3 input card deck (if empty, do not attach input card)
|
||||
; %4 input card deck wiring (if empty, uses 8WORD)
|
||||
; %5 output card deck wiring (if empty, uses 8WORD)
|
||||
|
||||
set cpu 4k
|
||||
set cpu soapmne
|
||||
|
||||
; if TAP pseudo-op is to be used in SOAP source program, this section must be uncommented
|
||||
; start of TAP pseudocode enable section
|
||||
|
||||
set cpu CntrlUnit
|
||||
set cpu StorageUnit
|
||||
|
||||
at mt2 soaplib.tap
|
||||
|
||||
; end of TAP pseudocode enable section
|
||||
|
||||
; Load soap deck into drum (1 word per card format), but does not execute it
|
||||
|
||||
set cdr1 wiring=8word
|
||||
att cdr1 -q -l soap/soap4.dck
|
||||
|
||||
echo ***
|
||||
echo *** Load SOAP4 deck into drum
|
||||
echo ***
|
||||
|
||||
d csw 7019519999
|
||||
d ar 8000
|
||||
go
|
||||
|
||||
; Now put source cards in reader and start soap assembler
|
||||
|
||||
att cdr1 -q %1
|
||||
set cdr1 wiring=soapa
|
||||
|
||||
att cdp1 -n -q deck_out.dck
|
||||
set cdp1 echo, print, wiring=soapa
|
||||
att cdp0 -n -q print.txt
|
||||
|
||||
echo ***
|
||||
echo *** Assemble source deck
|
||||
echo ***
|
||||
|
||||
; uncomment this debug to get trace of how source deck is assembled
|
||||
; set debug -n debug.txt
|
||||
|
||||
d ar 1000
|
||||
go
|
||||
|
||||
; separate 5 words per card deck if any generated
|
||||
carddeck -q split 5cd cdp1 deck_out.dck deck_out_5cd.dck
|
||||
|
||||
; discard availability card generated if any
|
||||
carddeck -q split pat deck_out.dck deck_out.dck nul
|
||||
|
||||
|
||||
if "%2" == "" goto end
|
||||
|
||||
; Load assembled deck into drum
|
||||
; -l switch allows to load the symbolic info so debug cmd info will show
|
||||
; soap source code read from card.
|
||||
|
||||
set cdr1 wiring=8WORD
|
||||
att cdr1 -q -l deck_out.dck
|
||||
|
||||
att cdp1 -n -q deck_out_run.dck
|
||||
set cdp1 echo, print, wiring=8WORD
|
||||
|
||||
|
||||
echo ***
|
||||
echo *** Read assembled program deck
|
||||
echo ***
|
||||
|
||||
d csw 7019519999
|
||||
d ar 8000
|
||||
go
|
||||
|
||||
; attach input deck
|
||||
if "%3" == "" goto run1
|
||||
|
||||
if "%4" == "" goto run2
|
||||
set cdr1 wiring=%4
|
||||
:run2
|
||||
|
||||
if "%5" == "" goto run3
|
||||
set cdp1 wiring=%5
|
||||
:run3
|
||||
|
||||
att cdr1 -q %3
|
||||
|
||||
; Now execute the loaded deck
|
||||
:run1
|
||||
|
||||
echo ***
|
||||
echo *** Run assembled program
|
||||
echo ***
|
||||
|
||||
; uncomment this debug to get trace of how assembled source deck is executed
|
||||
; set debug -n debug.txt
|
||||
|
||||
d ar %2
|
||||
go
|
||||
|
||||
det all
|
||||
|
||||
:end
|
||||
|
||||
134
I650/sw/run_supersoap.ini
Normal file
134
I650/sw/run_supersoap.ini
Normal file
@@ -0,0 +1,134 @@
|
||||
|
||||
; set console -n log=log.txt
|
||||
; set debug -n debug.txt
|
||||
; set debug stdout
|
||||
; set cpu debug=cmd;data;detail
|
||||
; set mt debug=cmd;data;detail;exp
|
||||
; set dsk debug=cmd;data;detail;exp
|
||||
|
||||
|
||||
; params: %1 source card deck to assemble with soap
|
||||
; %2 start address to run program (If empty, program not run)
|
||||
; %3 input card deck (if empty, do not attach input card)
|
||||
; %4 input card deck wiring (if empty, uses 8WORD)
|
||||
; %5 output card deck wiring (if empty, uses 8WORD)
|
||||
|
||||
; Assembles using SuperSoap card deck. Do not need ramac if only outputs 1-word
|
||||
; format cards, and does not uses the following pseudo operatios:
|
||||
; CDD, DSK, TAP, DEK, SKP, FIL, DON, FIV, PLR, PAL. PDL, LAT, SAT, LST, SST
|
||||
|
||||
set cpu 2k
|
||||
set cpu soapmne
|
||||
|
||||
set cpu CntrlUnit
|
||||
set cpu StorageUnit
|
||||
|
||||
; SuperSoap needed the Table lookup feature installed (to provide TLE opcode)
|
||||
set cpu tle
|
||||
|
||||
at mt2 soaplib.tap
|
||||
at dsk0 ramac0.dsk
|
||||
|
||||
; Load soap deck into drum (1 word per card format), but does not execute it
|
||||
|
||||
set cdr1 wiring=8word
|
||||
att cdr1 -q -l supersoap/ssoap_main.dck
|
||||
|
||||
echo ***
|
||||
echo *** Load SuperSoap main deck into drum
|
||||
echo ***
|
||||
|
||||
d csw 7019518282
|
||||
d ar 8000
|
||||
go
|
||||
|
||||
; Now put source cards in reader and start soap assembler
|
||||
|
||||
att cdr1 -q %1
|
||||
set cdr1 wiring=supersoap
|
||||
|
||||
att cdp1 -n -q deck_out.dck
|
||||
set cdp1 echo, print, wiring=supersoap
|
||||
att cdp0 -n -q print.txt
|
||||
|
||||
echo ***
|
||||
echo *** Assemble source deck
|
||||
echo ***
|
||||
|
||||
; uncomment this debug to get trace of how source deck is assembled
|
||||
; set debug -n debug.txt
|
||||
|
||||
; use transfer card for main program (line 1552 of supersoap listing),
|
||||
; RD1 1999 1998 8004 +70 1999 1998
|
||||
; we store in distrib (addr 8001) and exec from it
|
||||
dep dist 70 1999 1998
|
||||
dep ar 8001
|
||||
|
||||
go
|
||||
|
||||
if ar==9898 goto noasmerr
|
||||
|
||||
echo *** Error in last read card:
|
||||
carddeck -q echolast 1 cdr1
|
||||
echo *** Error in PR register:
|
||||
ex pr
|
||||
|
||||
goto end
|
||||
|
||||
:noasmerr
|
||||
|
||||
; separate 5 words per card deck if any generated
|
||||
carddeck -q split 5cd cdp1 deck_out.dck deck_out_5cd.dck
|
||||
|
||||
; discard availability card generated if any
|
||||
carddeck -q split pat deck_out.dck deck_out.dck deck_out_pat.dck
|
||||
|
||||
if "%2" == "" goto end
|
||||
|
||||
; Load assembled deck into drum
|
||||
; -l switch allows to load the symbolic info so debug cmd info will show
|
||||
; soap source code read from card.
|
||||
|
||||
set cdr1 wiring=8WORD
|
||||
att cdr1 -q -l deck_out.dck
|
||||
|
||||
att cdp1 -n -q deck_out_run.dck
|
||||
set cdp1 echo, print, wiring=8WORD
|
||||
|
||||
|
||||
echo ***
|
||||
echo *** Read assembled program deck
|
||||
echo ***
|
||||
|
||||
d csw 7019519999
|
||||
d ar 8000
|
||||
go
|
||||
|
||||
; attach input deck
|
||||
if "%3" == "" goto run1
|
||||
|
||||
if "%4" == "" goto run2
|
||||
set cdr1 wiring=%4
|
||||
:run2
|
||||
|
||||
if "%5" == "" goto run3
|
||||
set cdp1 wiring=%5
|
||||
:run3
|
||||
|
||||
att cdr1 -q %3
|
||||
|
||||
; Now execute the loaded deck
|
||||
:run1
|
||||
|
||||
echo ***
|
||||
echo *** Run assembled program
|
||||
echo ***
|
||||
|
||||
; uncomment this debug to get trace of how assembled source deck is executed
|
||||
; set debug -n debug.txt
|
||||
|
||||
d ar %2
|
||||
go
|
||||
|
||||
:end
|
||||
|
||||
119
I650/sw/run_supersoap_ramac.ini
Normal file
119
I650/sw/run_supersoap_ramac.ini
Normal file
@@ -0,0 +1,119 @@
|
||||
|
||||
; set console -n log=log.txt
|
||||
; set debug -n debug.txt
|
||||
; set debug stdout
|
||||
; set cpu debug=cmd;data;detail
|
||||
; set mt debug=cmd;data;detail;exp
|
||||
; set dsk debug=cmd;data;detail;exp
|
||||
|
||||
|
||||
; params: %1 source card deck to assemble with soap
|
||||
; %2 start address to run program (If empty, program not run)
|
||||
; %3 input card deck (if empty, do not attach input card)
|
||||
; %4 input card deck wiring (if empty, uses 8WORD)
|
||||
; %5 output card deck wiring (if empty, uses 8WORD)
|
||||
|
||||
; Assembles using SuperSoap stored in ramac. Needs ramac disk with supersoap already
|
||||
; built in it. Allows the use of following pseudo operations (that uses ramac):
|
||||
; CDD, DSK, TAP, DEK, SKP, FIL, DON, FIV, PLR, PAL. PDL, LAT, SAT, LST, SST
|
||||
|
||||
set cpu 2k
|
||||
set cpu soapmne
|
||||
|
||||
set cpu CntrlUnit
|
||||
set cpu StorageUnit
|
||||
|
||||
; SuperSoap needed the Table lookup feature installed (to provide TLE opcode)
|
||||
set cpu tle
|
||||
|
||||
at mt2 soaplib.tap
|
||||
at dsk0 ramac0.dsk
|
||||
|
||||
; prepare input deck: supersoap calling card followe by assembly deck
|
||||
|
||||
carddeck -q join supersoap/ssoap_calling_card.dck %1 as deck_in.dck
|
||||
att cdr1 -q -l deck_in.dck
|
||||
set cdr1 wiring=supersoap
|
||||
|
||||
att cdp1 -n -q deck_out.dck
|
||||
set cdp1 echo, print, wiring=supersoap
|
||||
att cdp0 -n -q print.txt
|
||||
|
||||
echo ***
|
||||
echo *** Load SuperSoap from RAMAC and assemble source deck
|
||||
echo ***
|
||||
|
||||
; uncomment this debug to get trace of how source deck is assembled
|
||||
; set debug -n debug.txt
|
||||
|
||||
d csw 7019518282
|
||||
d ar 8000
|
||||
|
||||
go
|
||||
|
||||
if ar==9898 goto noasmerr
|
||||
|
||||
echo *** Error in last read card:
|
||||
carddeck -q echolast 1 cdr1
|
||||
echo *** Error in PR register:
|
||||
ex pr
|
||||
|
||||
goto end
|
||||
|
||||
:noasmerr
|
||||
|
||||
; separate 5 words per card deck if any generated
|
||||
carddeck -q split 5cd cdp1 deck_out.dck deck_out_5cd.dck
|
||||
|
||||
; discard availability card generated if any
|
||||
carddeck -q split pat deck_out.dck deck_out.dck deck_out_pat.dck
|
||||
|
||||
if "%2" == "" goto end
|
||||
|
||||
; Load assembled deck into drum
|
||||
; -l switch allows to load the symbolic info so debug cmd info will show
|
||||
; soap source code read from card.
|
||||
|
||||
set cdr1 wiring=8WORD
|
||||
att cdr1 -q -l deck_out.dck
|
||||
|
||||
att cdp1 -n -q deck_out_run.dck
|
||||
set cdp1 echo, print, wiring=8WORD
|
||||
|
||||
|
||||
echo ***
|
||||
echo *** Read assembled program deck
|
||||
echo ***
|
||||
|
||||
d csw 7019519999
|
||||
d ar 8000
|
||||
go
|
||||
|
||||
; attach input deck
|
||||
if "%3" == "" goto run1
|
||||
|
||||
if "%4" == "" goto run2
|
||||
set cdr1 wiring=%4
|
||||
:run2
|
||||
|
||||
if "%5" == "" goto run3
|
||||
set cdp1 wiring=%5
|
||||
:run3
|
||||
|
||||
att cdr1 -q %3
|
||||
|
||||
; Now execute the loaded deck
|
||||
:run1
|
||||
|
||||
echo ***
|
||||
echo *** Run assembled program
|
||||
echo ***
|
||||
|
||||
; uncomment this debug to get trace of how assembled source deck is executed
|
||||
; set debug -n debug.txt
|
||||
|
||||
d ar %2
|
||||
go
|
||||
|
||||
:end
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
|
||||
Restoration comments May/2018
|
||||
By Roberto Sancho
|
||||
|
||||
SOAP II
|
||||
From Bitsavers Manual 24-4000-0_SOAPII.pdf
|
||||
|
||||
1804
I650/sw/soap/soap4.dck
Normal file
1804
I650/sw/soap/soap4.dck
Normal file
File diff suppressed because it is too large
Load Diff
12
I650/sw/soap/soap4_example_lib_routines.txt
Normal file
12
I650/sw/soap/soap4_example_lib_routines.txt
Normal file
@@ -0,0 +1,12 @@
|
||||
1 sub1 soap tape library
|
||||
1 routine
|
||||
1
|
||||
0 sub1 nop 0000 comment
|
||||
0 hlt 0001
|
||||
1
|
||||
?
|
||||
sub2 nop 0002 comment
|
||||
0 hlt 0002
|
||||
1
|
||||
?
|
||||
?
|
||||
8
I650/sw/soap/soap4_example_tap.txt
Normal file
8
I650/sw/soap/soap4_example_tap.txt
Normal file
@@ -0,0 +1,8 @@
|
||||
1 soap test tap
|
||||
1
|
||||
0 equsub1 1000
|
||||
1
|
||||
0 sub1 nop 0000 sub2 comment
|
||||
0 sub2 tap
|
||||
0 hlt 0001
|
||||
0 pst
|
||||
198
I650/sw/soap/soap4_lib.txt
Normal file
198
I650/sw/soap/soap4_lib.txt
Normal file
@@ -0,0 +1,198 @@
|
||||
1 soap 4000
|
||||
1
|
||||
1 symbolic optimal assembly prog
|
||||
1
|
||||
1 for the
|
||||
1
|
||||
1 ibm 650 model 4
|
||||
1
|
||||
1 data processing system
|
||||
1
|
||||
1 librarian
|
||||
1
|
||||
1 written by Roberto Sancho
|
||||
1 March 2020
|
||||
1
|
||||
0 blr 1000 1000 entry
|
||||
0 regh1100 1109 tap header
|
||||
0 synzero h0001
|
||||
0 synreadc 1950
|
||||
0 blr 1951 1967 17wd buffr
|
||||
0 regp1977 1986 punch area
|
||||
0 blr 1998 1999
|
||||
1
|
||||
1 check library tape
|
||||
1 first record
|
||||
1
|
||||
1000rwd 8012 read tape
|
||||
set 9050 first
|
||||
rtn 8012 record
|
||||
nts initp jmp if err
|
||||
rau 9050 check
|
||||
aup 9051 header
|
||||
suph0002 record
|
||||
aup 9052 if record
|
||||
suph0003 not match
|
||||
aup 9053 then
|
||||
suph0004 jump to
|
||||
nzuinitp inittp
|
||||
rtn 8012 if not eof
|
||||
ntsinitp then initp
|
||||
nefinitp r1ok else r1ok
|
||||
1 soap tape library
|
||||
1 header card
|
||||
1 as read with rd1
|
||||
h0001 00 0000 0000
|
||||
h0002 77 0083 6177
|
||||
h0003 00 7369 6279
|
||||
h0004 82 7661 6561
|
||||
h0005 79 8800 0000
|
||||
h0006 00 0000 0000
|
||||
h0007 00 0000 9999
|
||||
h0008 00 0000 9999
|
||||
h0009 00 0000 9999
|
||||
h0010 09 9800 0000
|
||||
1
|
||||
1 library tape first record
|
||||
1 does not match expected
|
||||
1 create a new lib tape
|
||||
1 with expected first recod
|
||||
1 (the library header)
|
||||
1
|
||||
initprwd 8012 wrt header
|
||||
set 9050 rec in tap
|
||||
ldih0001
|
||||
set 9050
|
||||
wtn 8012
|
||||
ntswhok
|
||||
wrhlthlt 0999 9999 hlt if wr err
|
||||
whok wtm 8012 write double
|
||||
wtm 8012 tape mark
|
||||
ntsr1ok wrhlt
|
||||
1
|
||||
1 read first card and
|
||||
1 scan tape lib for routine
|
||||
1
|
||||
r1ok rwd 8012
|
||||
rd1 1999 bb817
|
||||
bb817lddh0010 init empty
|
||||
stdemflg file flag
|
||||
rau set test 1st
|
||||
ral 1951 al is rdc loc
|
||||
stuemflg file not empry
|
||||
slo 9050 cmp with tap loc
|
||||
nzepass found no yes
|
||||
setblset 9050 trsfr tape
|
||||
sib 1951 1998 to cd area
|
||||
set set 9050 read tape
|
||||
rtn 8012 nts
|
||||
nts nts 8001
|
||||
nef exit
|
||||
nze halt
|
||||
slt 0001 reread
|
||||
bst 8012 set routine
|
||||
halt hlt 0888 9999
|
||||
pass rau 8001 bypass
|
||||
rtc 8012 nts routine
|
||||
exit ralemflg if file not empty
|
||||
nze bb817 try next file
|
||||
bst 8012 nfnd
|
||||
emflg 00 0000 0000 empty file flag
|
||||
1
|
||||
1 card routine found into
|
||||
1 library tape
|
||||
1
|
||||
foundhlt 0777 9999
|
||||
1
|
||||
1 card routine not found
|
||||
1 add it to library tape
|
||||
1
|
||||
nfnd set 9050
|
||||
ldi 1951
|
||||
set 9050
|
||||
wtn 8012 wrt crd
|
||||
nts wrhlt to tape
|
||||
rd1 1998 nfnd
|
||||
1998wtm 8012 load card
|
||||
wtm 8012 is eof
|
||||
ntsr1ok wrhlt
|
||||
1
|
||||
1 if first card is load card
|
||||
1 then willprint list of
|
||||
1 routines in tape.
|
||||
1 punch routine location
|
||||
1 (first record of file)
|
||||
1 and number of routine
|
||||
1
|
||||
i1xxx 00 0001 0000
|
||||
pchfm 80 0000 0000 pch format
|
||||
1999rwd 8012 rewind tape
|
||||
lddzero
|
||||
stdp0002
|
||||
stdp0003
|
||||
stdp0004
|
||||
stdp0005
|
||||
stdp0006
|
||||
stdp0007
|
||||
stdp0008
|
||||
stdp0009
|
||||
raupchfm
|
||||
stup0010 set2
|
||||
set2 set 9050 read tape
|
||||
rtn 8012 1st rec
|
||||
ntsrdok2
|
||||
nef endf
|
||||
nze halt
|
||||
slt 0001 reread
|
||||
bst 8012 set2 routine
|
||||
rdok2ldd 9050 routine
|
||||
stdp0001 location
|
||||
wr1 1977 skp2 punch
|
||||
skp2 rtc 8012 skip routine
|
||||
ntsskp2
|
||||
nefhalt
|
||||
ralp0008 incr
|
||||
aloi1xxx routine
|
||||
stlp0008 set2 number
|
||||
wr1 1977 set2
|
||||
endf rwd 8012
|
||||
hlt 0000 r1ok
|
||||
1
|
||||
1 Librarian program adds routines from
|
||||
1 cards to library tape so they can be
|
||||
1 used with TAP presudo command available
|
||||
1 with SOAP-IIA 4000
|
||||
1
|
||||
1 entry points
|
||||
1 1000 input
|
||||
1 routine 1 deck card
|
||||
1 blank card with HiPunch
|
||||
1 (a load card)
|
||||
1 routine 2 deck card
|
||||
1 blank card with HiPunch
|
||||
1 (a load card)
|
||||
1 ...
|
||||
1 routine n deck card
|
||||
1 blank card with HiPunch
|
||||
1 (a load card)
|
||||
1 blank card with HiPunch
|
||||
1 (a second load card)
|
||||
1 add routines to library tape
|
||||
1 then print list of routines
|
||||
1 in library tape
|
||||
1 if last repeated load card is
|
||||
1 removed, no printout is issued
|
||||
1
|
||||
1 1998
|
||||
1 put a double Tape Mark (end of
|
||||
1 file) to close the lib tape
|
||||
1
|
||||
1 1999
|
||||
1 print list of routines
|
||||
1 in library tape
|
||||
1
|
||||
1 stops
|
||||
1 0999 write error
|
||||
1 0888 read error
|
||||
1 0777 routine already in library
|
||||
1
|
||||
2247
I650/sw/soap/soap4_listing.txt
Normal file
2247
I650/sw/soap/soap4_listing.txt
Normal file
File diff suppressed because it is too large
Load Diff
2248
I650/sw/soap/soap4_src.txt
Normal file
2248
I650/sw/soap/soap4_src.txt
Normal file
File diff suppressed because it is too large
Load Diff
BIN
I650/sw/soaplib.tap
Normal file
BIN
I650/sw/soaplib.tap
Normal file
Binary file not shown.
695
I650/sw/supersoap/00_readme.txt
Normal file
695
I650/sw/supersoap/00_readme.txt
Normal file
@@ -0,0 +1,695 @@
|
||||
|
||||
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-
|
||||
|
||||
|
||||
|
||||
209
I650/sw/supersoap/build_ssoap_ramac_src.txt
Normal file
209
I650/sw/supersoap/build_ssoap_ramac_src.txt
Normal file
@@ -0,0 +1,209 @@
|
||||
1 builds supersoap in ramac
|
||||
1 using ssoap_loader.dck and
|
||||
1 ssoap_main.dck as input
|
||||
1 ssoap_core.dck as input
|
||||
1 print disc-track saved
|
||||
|
||||
syn 1961
|
||||
syn 1962
|
||||
syn 1963
|
||||
|
||||
1000lodrdld clias start: call clear ias, then jmp to read loader deck
|
||||
|
||||
1 save main deck in ramac, starting at disk 38, track 00
|
||||
|
||||
dskad 00 0003 8000
|
||||
|
||||
1 clear ias routine
|
||||
|
||||
cliasstdexit0 save exit word
|
||||
raa 59 ira = 59
|
||||
ralzero 1f clear acc
|
||||
1 stu 9000a store in 9000+ira
|
||||
sxa 1
|
||||
bmaexit0 1b
|
||||
|
||||
1 process ssoap loader deck
|
||||
1 loader deck will be stored in core in 9000-9039
|
||||
1 last instr of loader deck should have loc 1999
|
||||
|
||||
rdld rd1 1961 1961 read loader deck card
|
||||
1961ral 1951 get word1 (sets card type)
|
||||
slotyc
|
||||
nzerdld skip non type c cards
|
||||
|
||||
rau 1953 get word3 (location in da)
|
||||
slt 2
|
||||
srt 6
|
||||
stuloc save location
|
||||
sup9k if >= 9000 jmp to 1f
|
||||
bmi 1f
|
||||
|
||||
ralloc add core offset so loc 1966
|
||||
alocofs becomes 9006 (in core)
|
||||
stlloc 1f
|
||||
|
||||
1 ralloc
|
||||
raa 8002 ira=loc in core
|
||||
lod 1954 get word4 (instruction word)
|
||||
std 0000a store at loc
|
||||
|
||||
sloldend if loc!=9039 then
|
||||
nzerdld cl2 jmp to read next card
|
||||
|
||||
|
||||
tyc 69 1954 1953 first word on type c cards
|
||||
loc 00 0000 0000 soap deck card location
|
||||
9k 00 0000 9000
|
||||
cofs 00 0000 7040 core offset = 9000 minus 1960
|
||||
ldend 00 0000 9039 last addr of loader routine in core
|
||||
|
||||
1 ssoap loader deck processed
|
||||
1 loader deck is now stored in core in 9000-9039
|
||||
|
||||
1 process ssoap main deck
|
||||
1 loader deck will be stored in core starting at 9040
|
||||
1 when core filled, track is written
|
||||
1 main deck should be sorted in location ascending order
|
||||
1 last instr of main deck should have loc 1999
|
||||
|
||||
cl2 raa 0 next main dec loc to store
|
||||
rab 40 rdma first addr free in core
|
||||
|
||||
rdma rd1 1962 1962 read main deck card
|
||||
1962ral 1951 get word1 (sets card type)
|
||||
slotyc
|
||||
nzerdma skip non type c cards
|
||||
|
||||
rau 1953 get word3 (location in da)
|
||||
slt 2
|
||||
srt 6
|
||||
stuloc save location
|
||||
sup9k if >= 9000 jmp to error halt
|
||||
bmi hlt2
|
||||
|
||||
ralloc if card location < last card
|
||||
slo 8005 jmp to error halt
|
||||
bmihlt2
|
||||
nze 2f jmp to 2f if ira=loc
|
||||
|
||||
rac 8002 irc=number of zero cards to save to core to arrive to last card location
|
||||
lodzero store zero in core
|
||||
stdsvw 1f word to save in core
|
||||
1 lod svcor call store in core, B++, A++, write track if core full
|
||||
sxc 1
|
||||
nzc1b 2f jmp to 2f when loc=IRA
|
||||
|
||||
2 lod 1954 get word4 (instruction word)
|
||||
stdsvw word to save in core
|
||||
lod svcor call store in core, B++, A++, write track if core full
|
||||
|
||||
ralloc
|
||||
slomaend if loc!=1999 then
|
||||
nzerdma cl3 jmp to read next card
|
||||
|
||||
|
||||
1 ssoap main deck processed
|
||||
1 main supersoap program is now stored in ramac
|
||||
1 tracks 00-33
|
||||
|
||||
1 process ssoap core deck
|
||||
1 these decks goes to tracks 34-66. deck loads to
|
||||
1 9000-9059, final cdd pseudo op stores it to given track
|
||||
|
||||
cl3 lddrdco clias clear ias
|
||||
|
||||
rdco rd1 1963 1963 read core deck card
|
||||
1963ral 1951 get word1 (sets card type)
|
||||
slotya is type-a card
|
||||
nze1f if not, then jmp to type-c check
|
||||
|
||||
ral 1955 get word5 (loc+opcode, as digits)
|
||||
srt 5
|
||||
sloii38 is 00038xxxxx
|
||||
nze1f if not, then jmp to type-c check
|
||||
|
||||
ral 1955 is cdd, so get track
|
||||
srt 3
|
||||
slt 1
|
||||
stldskad
|
||||
lod svtr call save track routine
|
||||
|
||||
rau 1955 if saved disk 38, track 66
|
||||
supii38b then jmp to cl4 (load core finished)
|
||||
nzucl3 cl4 else jmp to clear ias to read next track
|
||||
|
||||
1 ral 1951
|
||||
slotyc
|
||||
nzerdco skip non type c cards
|
||||
|
||||
rau 1953 get word3 (location in da)
|
||||
slt 2
|
||||
srt 6
|
||||
stuloc save location
|
||||
sup9k if < 9000 jmp to read next card
|
||||
bmirdco
|
||||
|
||||
ralloc is 9000 word, store in ias
|
||||
raa 8002 ira=loc in core
|
||||
lod 1954 get word4 (instruction word)
|
||||
std 0000ardco store at loc, jmp to read next card
|
||||
|
||||
tya 00 0000 8000 first word on type a cards
|
||||
ii38 00 0000 0038
|
||||
ii38b 00 0386 6000
|
||||
|
||||
1 finish ok. main deck loaded in ramac, with load routine
|
||||
|
||||
cl4 ral 9000 read from ias to force the cpu to wait on ias
|
||||
interlock up to last write pending in ramac has
|
||||
finished before halting the cpu
|
||||
hlt 0000 9898 finish ok
|
||||
|
||||
hlt1 hlt 1111 9999 cards at loc 90XX not allowd in main deck
|
||||
hlt2 hlt 2222 9999 last card is not in ascending order
|
||||
|
||||
zero 00 0000 0000
|
||||
maend 00 0000 1999 last addr of main deck in drum
|
||||
|
||||
1 call store in core, incr irb, incr ira, write track if core full
|
||||
|
||||
svcorstdexit0 save exit word
|
||||
lodsvw load word
|
||||
std 9000b and save in core
|
||||
axa 1 incr ira
|
||||
axb 1 incr irb
|
||||
ral 8006 if irb<60
|
||||
slocoful then exit
|
||||
nzeexit0 1f
|
||||
|
||||
svtr stdexit0 1f save core to track
|
||||
1 loddskad core full. seek ramac address to save core
|
||||
sds 9000
|
||||
wds 9000 write core in ramac at address dskad
|
||||
|
||||
raldskad punch track saved
|
||||
slt 5 as dd tt00 0000
|
||||
stl 1977 where dd=disk number=38
|
||||
rauzero tt=track number from 00 to 33
|
||||
std 1978
|
||||
std 1979
|
||||
std 1980
|
||||
std 1981
|
||||
std 1982
|
||||
std 1983
|
||||
std 1984
|
||||
wr1 1977
|
||||
|
||||
raldskad increment track number for next write
|
||||
alonxtr
|
||||
stldskad
|
||||
rab 0 exit0 core saved. reset irb (core empty again) and exit
|
||||
|
||||
|
||||
exit0 00 0000 0000 routine return jmp to saved exit word
|
||||
svw 00 0000 0000 word to save in core
|
||||
coful 00 0000 0060 core is full
|
||||
nxtr 00 0000 0010 to increment track number
|
||||
|
||||
end
|
||||
3565
I650/sw/supersoap/ssoap.txt
Normal file
3565
I650/sw/supersoap/ssoap.txt
Normal file
File diff suppressed because it is too large
Load Diff
1
I650/sw/supersoap/ssoap_calling_card.dck
Normal file
1
I650/sw/supersoap/ssoap_calling_card.dck
Normal file
@@ -0,0 +1 @@
|
||||
6519541957 SUPERSOAP360001195500000380024719589876+(date)+++85900019538690009000
|
||||
10
I650/sw/supersoap/ssoap_calling_card.txt
Normal file
10
I650/sw/supersoap/ssoap_calling_card.txt
Normal file
@@ -0,0 +1,10 @@
|
||||
|
||||
1951: 65 1954 1957+ RAL 1954 1957
|
||||
1952: 00 0759 0617- S UPER SOAP
|
||||
1953: 36 0001 1955+ SCT 0001 1955
|
||||
1954: 00 0003 8002+ NOP 0003 8002
|
||||
1955: 47 1958 9876+ BOV 1958 9876
|
||||
1956: 00 0000 0000+ (date)
|
||||
1957: 85 9000 1953+ SDS 9000 1953
|
||||
1958: 86 9000 9000+ RDS 9000 9000
|
||||
|
||||
2021
I650/sw/supersoap/ssoap_core.dck
Normal file
2021
I650/sw/supersoap/ssoap_core.dck
Normal file
File diff suppressed because it is too large
Load Diff
22
I650/sw/supersoap/ssoap_example.txt
Normal file
22
I650/sw/supersoap/ssoap_example.txt
Normal file
@@ -0,0 +1,22 @@
|
||||
0001 1 EXAMPLE CALCULATE F OF X
|
||||
0002
|
||||
0003 BLR 1951 1960 READ AREA
|
||||
0004 P0001 BLR 27 P0002 PUNCH AREA
|
||||
0005 START RAU ONE 1F SET X 0004 +60 0007 0011
|
||||
0006 1 STU P0001 TO 1 0011 +21 0027 0030
|
||||
0007 MPY A CALCULATE 0030 +19 0033 0003
|
||||
0008 ALO B F 0003 +15 0006 0061
|
||||
0009 RAU 8002 0061 +60 8002 0019
|
||||
0010 MPY P0001 0019 +19 0027 0047
|
||||
0011 ALO C 0047 +15 0000 0005
|
||||
0012 STL P0002 0005 +20 0028 0031
|
||||
0013 WR1 P0001 PUNCH 0031 +71 0027 0037
|
||||
0014 RAU P0001 0037 +60 0027 0081
|
||||
0015 SUP XMAX IS X MAX 0081 +11 0034 0039
|
||||
0016 NZU 9876 0039 +44 0043 9876
|
||||
0017 AUP 101 1B INCREASE X 0043 +10 0046 0011
|
||||
0018
|
||||
0019 ONE 00 0000 0001 CONSTANTS 0007 +00 0000 0001
|
||||
0020 XMAX 00 0000 0100 0034 +00 0000 0100
|
||||
0021 101 00 0000 0101 0046 +00 0000 0101
|
||||
0022 END
|
||||
22
I650/sw/supersoap/ssoap_example_src.txt
Normal file
22
I650/sw/supersoap/ssoap_example_src.txt
Normal file
@@ -0,0 +1,22 @@
|
||||
1 example calculate f of x
|
||||
|
||||
blr 1951 1960 read area
|
||||
p0001blr 27 p0002 punch area
|
||||
startrauone 1f set x
|
||||
1 stup0001 to 1
|
||||
mpya calculate
|
||||
alob f
|
||||
rau 8002
|
||||
mpyp0001
|
||||
aloc
|
||||
stlp0002
|
||||
wr1p0001 punch
|
||||
raup0001
|
||||
supxmax is x max
|
||||
nzu 9876
|
||||
aup101 1b increase x
|
||||
|
||||
one 00 0000 0001 constants
|
||||
xmax 00 0000 0100
|
||||
101 00 0000 0101
|
||||
end
|
||||
59
I650/sw/supersoap/ssoap_loader_src.txt
Normal file
59
I650/sw/supersoap/ssoap_loader_src.txt
Normal file
@@ -0,0 +1,59 @@
|
||||
1
|
||||
1 dsk output from 0000 1999
|
||||
1 loads supersoap from dsk to drum
|
||||
1 page 52 of supersoap manual
|
||||
|
||||
1 this routine loads tracks 00-33 from ramac
|
||||
1 to drum addr 0000-1999
|
||||
|
||||
1 this routine is stored in disk 38, track 00
|
||||
1 when track is read to core, the routine
|
||||
1 uses words 9000-9039.
|
||||
1 this routine starts al 9000 and is called
|
||||
1 by ssoap_calling_card.
|
||||
|
||||
1 when called distributor should have the disk
|
||||
1 addr of this loader (000 03800 0)
|
||||
|
||||
1 loads words 9040-9059 to drum 0000-0019
|
||||
1 then read next track and stores it in drum 0020-0080
|
||||
1 and so on up to track 33. then routine jumps
|
||||
1 to transfer intruction
|
||||
1
|
||||
blr 0 1999
|
||||
bla 1966 1999
|
||||
rd syn 9004
|
||||
j0001blr 1971 j0006
|
||||
|
||||
9000rau 8001 9001
|
||||
9001rsa 1700 9002
|
||||
9002alord 9003
|
||||
9003rab 0 9005
|
||||
|
||||
9005sti 1965 2f
|
||||
2 aup10i
|
||||
lod 8003
|
||||
sds 9000 j0001b
|
||||
j0001sti 1700a 8002
|
||||
rd rds 9000
|
||||
axb 1 2b
|
||||
j0002sti 1720a
|
||||
sti 1750a 8002
|
||||
j0003sti 1780a
|
||||
sti 1800a 8002
|
||||
j0004sti 1840a
|
||||
bma 9f
|
||||
sti 1850a 8002
|
||||
j0005sti 1900a
|
||||
sti 1950a 8002
|
||||
j0006sti 1960a
|
||||
axa 300
|
||||
rab 0 j0001
|
||||
9 lod1f
|
||||
sti 1950 8001
|
||||
10i 00 0 10
|
||||
|
||||
1 transfer instruction
|
||||
1 rd1 1999 1998
|
||||
|
||||
end
|
||||
1524
I650/sw/supersoap/ssoap_main.dck
Normal file
1524
I650/sw/supersoap/ssoap_main.dck
Normal file
File diff suppressed because it is too large
Load Diff
3555
I650/sw/supersoap/ssoap_main_core_src.txt
Normal file
3555
I650/sw/supersoap/ssoap_main_core_src.txt
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user