LoginSignup
1
0

More than 3 years have passed since last update.

Simh/i1401 with COBOL on docker(1)

Last updated at Posted at 2019-07-03

Simh/i1401 with FortranIV on dockerではFortranIVをターゲットにしました。
Simhの実行イメージができれば、それを使って応用できます。
次はCOBOLのプログラムを実行してみます。
使うテープイメージはIBM 1401 COBOL e-mailsで紹介されている
i1401-Cobol-Generation.zip
i1401-Cobol.zipを使用します。
最初にCOBOLコンパイラのテープイメージを作成します。

i1401-Cobol-Generation.zipに含まれているCobol_Generation.iniはWindows向けですので、
Linux向けのものを用意します。

Cobol_Generation_for_linux.ini
; Generates Cobol.tap (cobol compiler tape) and
; autocode.cobol.tap (Autocode to assemble compiler output)

SET CPU 16K

set CPU NEWCONVERSIONS
SET CDP BUSINESS
SET LPT BUSINESS

at mt1 adc00223_Cobol.mt1
at mt2 -n Cobol.tap
at mt3 -n Extraction.tap

Echo
Echo *** Extract cobol compiler tape and extraction tape from PID Cobol
echo *** distribution tape from IBM
Echo

boot mt1

Echo
Echo *** Now process extraction tape to ...

at mt1 Extraction.tap
det mt2
det mt3

boot mt1

Echo
Echo ... Print Cobol Phase Listings (Source code)
echo

at lpt -n Cobol_Source_Listing.txt
go

Echo
Echo ... Punch Cobol Subrutines and Sample Program
echo

; punch cards in staker4 (not in CDP device)
at stkr4 -n Extaction_cards.crd
go

; separate cards using identification numbers

! grep " 70001" Extaction_cards.crd > "Cobol_4k_subs.crd"
! grep " 70002" Extaction_cards.crd > "Cobol_4kp_subs.crd"
! grep " 70003" Extaction_cards.crd > "Cobol_Sample_Program.crd"

det stkr4
!rm Extaction_cards.crd
det lpt

echo
Echo *** Now Place Cobol Soubroutines in the Autocoder Library
echo

at mt1 Autocoder+IOCS.tap
at mt6 -n Autocoder.cobol.tap

at cdr Cobol_4kp_subs.crd

set lpt default

dep ssa 1
dep ssf 1

boot mt1

echo
quit

Simh実行用のDockerイメージを起動します。i1401-Cobol-Generation.zipを展開後、Cobol_Generation_for_linux.iniをコピーします。

C:\kazu>docker run -it kazu_simh:i1401
/ # cd /simh
/simh # wget http://ibm-1401.info/pictures/000COBOL/i1401-Cobol-Generation.zip
Connecting to ibm-1401.info (45.40.183.1:80)
i1401-Cobol-Generati 100% |****************************************************************| 1888k  0:00:00 ETA
/simh # unzip i1401-Cobol-Generation.zip
Archive:  i1401-Cobol-Generation.zip
   creating: generation/
  inflating: generation/adc00223_Cobol.mt1
  inflating: generation/Autocoder+IOCS.tap
  inflating: generation/Autocoder.cobol.tap
  inflating: generation/Cobol.tap
  inflating: generation/Cobol_4kp_subs.crd
  inflating: generation/Cobol_4k_subs.crd
  inflating: generation/Cobol_Generation.ini
  inflating: generation/Cobol_Sample_Program.crd
  inflating: generation/Cobol_Source_Listing.txt
  inflating: generation/Extraction.tap
  inflating: generation/run Cobol Generation.bat
/simh # cd generation/
/simh/generation # ls
Autocoder+IOCS.tap        Cobol_4k_subs.crd         Cobol_Sample_Program.crd  adc00223_Cobol.mt1
Autocoder.cobol.tap       Cobol_4kp_subs.crd        Cobol_Source_Listing.txt  run Cobol Generation.bat
Cobol.tap                 Cobol_Generation.ini      Extraction.tap
/simh/generation # cp ../Cobol_Generation_for_linux.ini .

では、コンパイラのテープイメージを作成します。

/simh/generation # i1401 Cobol_Generation_for_linux.ini

IBM 1401 simulator V4.0-0 Current        git commit id: 9e719822
/simh/generation/Cobol_Generation_for_linux.ini-11> at mt1 adc00223_Cobol.mt1
Tape Image 'adc00223_Cobol.mt1' scanned as SIMH format.
contains 4754130 bytes of tape data (3666 records, 7 tapemarks)
A potentially unreasonable number of record sizes(171) vs tape marks (7) have been found
The tape format (SIMH) might not be correct for the 'adc00223_Cobol.mt1' tape image
/simh/generation/Cobol_Generation_for_linux.ini-12> at mt2 -n Cobol.tap
MT: creating new file: Cobol.tap
/simh/generation/Cobol_Generation_for_linux.ini-13> at mt3 -n Extraction.tap
MT: creating new file: Extraction.tap

*** Extract cobol compiler tape and extraction tape from PID Cobol
*** distribution tape from IBM


HALT instruction, IS: 3686 (B 3681)

*** Now process extraction tape to ...

HALT instruction, IS: 364 (SWM 723)

... Print Cobol Phase Listings (Source code)

/simh/generation/Cobol_Generation_for_linux.ini-35> at lpt -n Cobol_Source_Listing.txt
LPT: creating new file: Cobol_Source_Listing.txt

HALT instruction, IS: 600 (B 697)

... Punch Cobol Subrutines and Sample Program

/simh/generation/Cobol_Generation_for_linux.ini-43> at stkr4 -n Extaction_cards.crd
STKR: creating new file: Extaction_cards.crd

HALT instruction, IS: 709 (B 702)

*** Now Place Cobol Soubroutines in the Autocoder Library

/simh/generation/Cobol_Generation_for_linux.ini-60> at mt1 Autocoder+IOCS.tap
Tape Image 'Autocoder+IOCS.tap' scanned as SIMH format.
contains 426122 bytes of tape data (4197 records, 3 tapemarks)
A potentially unreasonable number of record sizes(39) vs tape marks (3) have been found
The tape format (SIMH) might not be correct for the 'Autocoder+IOCS.tap' tape image
/simh/generation/Cobol_Generation_for_linux.ini-61> at mt6 -n Autocoder.cobol.tap
MT: creating new file: Autocoder.cobol.tap
                   1401 AUTOCODER - LIBRARY CHANGES                    PAGE   1
(省略)
  17  ZSPSV3 DCW   #3                  INDEX REGISTER 3 SAVED HERE

1401 AUTOCODER SYSTEM COPIED ON TAPE UNIT 6
HALT instruction, IS: 704 (B 1021)
Goodbye
/simh/generation #
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0