blob: 20218c79f4e5791e2adf21b42d0b3545a295ec57 [file] [log] [blame] [raw]
; set console -n log=log.txt
; set debug -n debug.txt
; set debug stdout
; set cpu debug=cmd;data;detail
; params: %1 source program card deck to compile
; %2 input program data card deck (if empty, do not attach input card)
; %3 output program data card deck (if empty, attach deck_out.dck file)
set cpu 2k
set cpu StorageUnit
att cdp0 -n -q print.txt
; print FORTRANSIT source program
echo
carddeck -q print %1
; load FORTRANSIT translator but do not execute it
echo ***
echo *** Load FORTRANSIT translator deck into drum
echo ***
att cdr1 -q -l fortransit/fortransit_translator.dck
d csw 70 1951 9999
d ar 8000
go
; attach and load reconstructed add function title deck
att cdr1 -q -l fortransit/fortransit_addfn.dck
d csw 70 1951 9999
d ar 8000
go
echo ***
echo *** Run FORTRANSIT translator
echo ***
; Now put source cards in reader and start translator (phase I)
att cdr1 -q %1
set cdr1 wiring=fortransit
att cdp1 -n -q deck_it.dck
set cdp1 echo, print, wiring=fortransit
d csw 00 0000 1999
d ar 8000
go
; check if programed stop because an error is detected
if not prop=01 goto translate_ok1
echo
echo *** (translation error code in Address Register AR)
echo
ex ar
echo
echo *** (show last three source fortransit cards processed)
echo
carddeck -q echolast 3 cdr1
goto end
:translate_ok1
; check if programed stop because normal termination
if prop=70 if ar=1951 goto translate_ok2
goto end
:translate_ok2
; separate last card (header card), and put it in the
; top of deck
carddeck -q split -1 cdp1 deck_it.dck deck_it_header.dck
carddeck -q join deck_it_header.dck deck_it.dck as deck_it.dck
det cdr1
; load IT compiler but do not execute it
echo ***
echo *** Load IT compiler deck into drum
echo ***
att cdr1 -q -l fortransit/it_compiler.dck
d csw 70 1951 9999
d ar 8000
go
echo ***
echo *** Run IT compiler
echo ***
; Now put IT source cards in reader and start compiler (phase II)
att cdr1 -q deck_it.dck
att cdp1 -n -q deck_out.dck
d csw 00 0000 1999
d ar 8000
go
; check if programed stop because an error is detected
if not prop=01 if not ar=1234 goto compile_ok1
echo
echo *** (compilation error code in Upper ACC)
echo
ex accup
goto end
:compile_ok1
; check if programed stop because normal termination
if prop=70 if ar=1951 goto compile_ok2
goto end
:compile_ok2
; separate first card (reservation card), from
; generated soap source code deck
carddeck -q split 1 cdp1 deck_res.dck deck_soap.dck
det cdr1
; Load soap deck into drum (1 word per card format), but does not execute it
echo ***
echo *** Load SOAP deck into drum
echo ***
att cdr1 -q -l fortransit/soapII.dck
d csw 7019519999
d ar 8000
go
; create the phase III deck with
; - entry point cards for subroutines
; - reservation cards from phase II
; - package reservation cards
; - subroutines in symbolic SOAP format (if any)
; - rest of compilation output from phase II
carddeck -q join fortransit/pack_entry_src.txt deck_res.dck fortransit/pack_res2.txt deck_soap.dck as deck_soap.dck
echo ***
echo *** Run SOAP assembler
echo ***
att cdr1 deck_soap.dck
set cdr1 wiring=soap
att cdp1 -n -q deck_out.dck
set cdp1 echo, print, wiring=soap
d ar 1000
go
; check if programed stop because an error is detected
if not prop=01 goto assemble_ok1
echo
echo *** (assembling error code in AR)
echo
ex ar
goto end
:assemble_ok1
; check if programed stop because normal termination
if prop=70 if ar=1951 goto assemble_ok2
goto end
:assemble_ok2
det cdr1
det cdp1
; create object program deck with
; - package cards
; - assembled program cards from phase III
carddeck -q join fortransit/pack.dck deck_out.dck as deck_out.dck
echo ***
echo *** Read Object Program Deck
echo ***
; 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 -l deck_out.dck
d csw 7019519999
d ar 8000
go
; attach input and output data deck
det cdr1
if "%2" == "" goto run1
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
set cdp1 echo, print, wiring=fortransit
; Now execute the loaded program object deck
echo ***
echo *** Run Program
echo ***
; set csw negative to activate conditional punch statement
; normal program termination will halt cpu at AR=9999
d csw -01 0000 9999
d ar 1999
go
; clean up
del deck_it_header.dck
del deck_it.dck
del deck_res.dck
del deck_soap.dck
:end