研究調査報告
ミニコン用学生実習システムの開発
.一・ H.FORTRAN処理システムー
岸本俊祐* 小坂睦雄**富田信昭魅
(昭和47年9月30日受理)
Development of the softwear systems of mini computer for students training in IPE
一 1. THE resident system for processing FORTRAN一
Shunsuke KismMoTo. Mutsuo OsAKA and Nobuaki ToMiTA
(Received Septe皿ber 30,1972)
The resident system for processing FORTRAN of mini computer (NEAC−3200/30) was developed for students training in the lnforrnation Processing Edu cation (IPE) .
By using this new system, the time of processing the FORTRAN programs was reducec to one−third of the time by using the FORTRAN systems in the basic ones of NEAC−3200.
Tn this paper, we deal with a design of the new system and describe the process of its generation.
1 緒
言
ここ数年来,高専における情報処理教育の必要性がとか
れ,教育内容はこの新しい流れに沿って変革されつつある。本校においても,この問IPE関連科目がカリキュラ
ムに導入され,ミニコン(NEAC−3200/30)*による実習も
実施されてきた。IPEにおいて,電子計算機実習は欠かせないものであり,実験実習を特徴の一つとする高専教育 においては特に重要であると思われる。そこで電子計算機 稼動時間のうち学生実習がしめる率は高くなり,全体の処 理効率からみても,この実習時における処理効率が重要な ファクターとなってくる。
学生の電子計算機実習で扱われるプnグラムは,その大 多数がFORTRAN言語で書かれている。そして,それらが
実行時に占有するメモリ容量は小さく,内容も比較的レベ
ルが低い(低レベルのFORTRANで処理できる)場合が多い。しかし,ミニコンのソフトウェアの中に特に実習向き システムといったものはなく,実習時におけるプログラム
も通常のFORTRAN処理システムでさばいているのが現状である。これでは一般使用の場合と同じだけ手数がかか
り,それ以.しには処理効率があがらないことになる。また 現有ミニコンのシステムプログラムが外部記憶を前提にし
たシステムであるため,FORTRAN処理システムがコア常駐形式になっていない。1)したがって,一部試行錯誤的処 理形態をとらざるをえない実習時においては,各ジョブス
テップごとにシステムプログラムをロードしなければなら ず時間と人手をとられ,処理の能率はあがらなかった。C
PU効率をあげるためにも,手作業を軽減して実習をやり
やすくするためにもぜひコア常駐システムが必要である。
そこで,ここでは,実習時における使用を目的とした,
常駐形式のFORTRAN処理システムを開発し,これを用い てFORTRANプログラム処理をより合理的に行えるように
したので報告する。
*応用物理 **電気工学科
*昭和46年10月導入
2 実習時における処理の現状
(1)現有システム
機種 NEAC−32QO/30 0 CPU
記 憶 容 量:16K:W 語 長:16ビット
一 309 一
サイクルタイム:1.6μs
加減算速度:3.2μs
。入出力タイ.プライタ(インライン用1台,..オフラ イン用2台)
入出力速度:10字/秒 最:大印字数:72字/行
。.紙テープ入出力装置(PTR 1台, PTP 1台)
入力速度:300字/秒
出力速度:.110字/秒な殉ソフトウェブに?いては,E.ジュール化された基本
プログラム(ベーシックシズテム)のパッケージがあるが.1)その中.から今回のシステム開発に関係のあるものだけを次 に記す。
。IPL :.占有メモリ15W(ハードで保護)
。標準ローダ:約1。5KW
。拡張ローダ:約2KW。アセンブラ:約.5.5KW+ワーーキングエリア
基本命令72種,コントロール命令33種
.oFORTRANコンパラ:約sKW+ワーキングエリア JIS−7000レ.ベル,エラメッセージ57種(コンパイル時).
oFORTRANライブラリ
演算ルーチン(整数,単精皮浮動,倍精度浮動,
複素数),データモード関係,センズスイッチ 関係,論理演算関係,エラー関係,アドレス関 二丁)v・一チン
oIOライブラリ
入出力タイプライタ関係,紙テn・プ入出力関係 Oユーティリティルーチン
SLST作成ルーチン,コア.ダンプ,紙テ;プ複 製ルーチン,アップデートルーチン等
(2)FORTRANプログラム処理の現状現在のソフト.ウェア(ベーシックシステム)を使用して,
FORTRANブvグラムを処理し,結果を得るまで.の手順を 示すと次のようになる。2)
︶︶︶︶︶︶︶
1234567手順のうち1〜3をコンパイルモード(Cモード)
をn」ドモード(Lモード)と便宜上名.付ける。.
前述のように,このベーシックシステムは常駐形式でな
い。. eモー.ドで必要なシステムプログラムはそのつどロー
FORTRANコンパイラのm一ド
FORTRANソースプログラムのエラーチェック
オブジェクトプログラムの出力
ロータのロード
オブジェクトプログラムのロード FORTRANライブラリのm・一一ド 実行
,4〜7
ドする必要がある。この形式.
ヘユーザーズエリアを大きく
とれる利点があり,Lモードのとき14KWとなっている。.しかし,.その反面Lモードを実行すればGモードは破壊さ れ,逆にCモードを走らせばLモードはこわれてしまう。
C ***SEKIBUN−1***
F(X)=4.ICI.+X*X)
READ(5.4).E 4 FORMAT(E5.0)
SO菖0。
N=5
1 H=1●ノFLOAT(N)
X=一〇.5*H s=o.
DO 2 .1=1..N
X=X+H 2 S=S+F(X)*H
IF(ABS(S−SP).LE.E) GO TO 3 so=s
N=N+N・
GO TO 1
3 wRrTE(6.10) $.N.E
lO FORMAT(lH .2HS=.F9.6.5X.2HN=.
*15.5X.2HE=.1PE8.t)
STOP END
Fig.1 An example of the FORTRAN Programs for
pumerical integration in IPE.
C鯛MODE:
*STAnT
*H1GH
*NAMES
*COMN
*BASE F4$INT
F4$IN
FA$SYM F4$OUT F4$ENDF!N工
1$Prl$GA 王$PA O$乍,S O$PB
O$PLDRHEAD
O$HH
LINEO$LL O$CB.
O$AB O$LA O$LH I$AA 1$CA
DUM工$AI
L.C
01003
16422 33674
37700 0054015036 1S222
15267ユ5460 15540
乳56三4
15644
1.5661
15661 16032.
16141
16153 16!76 16176 16220 16220 16406 16406 16AO6 16406 16406 16406
1641116420
L−MODE
*START
*HIGH
*NAMES
NE T
MS2516 A222LL222$22T$PCFORBRTIAAOARRWWSG塾22AG222▽22AGAAAIACEHPGP CB$$$$BL$$$EN$$$1$$$R$$$$$$$$$$$ **FFFFAFCSARSLMDDHNFAOOOFFFFFIII
LC
◎4705446646.6646666744244462253226330
07ユ004455567235556664671301242450220 04.6632222333446666023335566613223336
−537.01監11111111111222222222233555557003.30000000000000000QOOOOOOOOOOOOOO3
Fig.2 Memory map of the example program.
ミニコン用学生実習システムの開発 岸本・小坂・富田
したがって,ユーザーズプログラムに実行を行ってみて始 めてチェックできるようなミスがあった場合,手順はコン パイラのロードからやりなおす必要があり,時間的ロスは 著しい。Fig.1に示すプログラム(区分求積による数値積 分で実習初期における課題の一例)について,手順1から
6までを行うのに約9分(システムm一ドおよびコンパイ ル時間約6.5分,システムテープのハンドリング時間2〜
3分)もかかる。そのうえ,学生実習程度のプログラムで は,ユーザーズエリアのわずかの部分しか使用しないので 大部分が遊んでしまうことになる。この例について,Cモ
ードおよびLモードのときのメモリマップをFig.2に示 す。Fig.2から各々のモードで約8KW,約11KWのメモリが空番地となっているのがわかる。したがって,各モー ドにおける空番地に他のモードのプログラムを十分待避さ
せることができる。そこで,これらFORTRANプログラムの処理に必要な
システムプログラムをコントm一ルし,常駐化させる制御 プログラム作成を考えた。この制御プログラムによって動 く新しいシステムを実習システムと呼ぶことにする。
3 実習システムとその設計
現有システムが本校に導入されてからすでに一周年にな ろうとしている。ユーザー側からみれば,従来のベーシッ クシステムを用いた処理の手順が手なれたものになり,こ
の間に蓄積されたユーザーズプログラム量はソースレベル,オブジェクトレベル各々相当数に達している。また実 習後期にはかなり程度の高いプログラムも扱いたい。卒研 等にも利用できれば便利なので,新しいシステムは下記の 事項を目標に開発することにした。
(1)処理手順はベーシックシステムの場合とほぼ同様な
流れとする。ただし,手作業の部分を簡単化するため,システムは常駐化する。
(2)ソースレベル,オブジェクトレベルともベーシック システムと互換性を持たせる。
(3)JIS−5000レベル程度のFORTRANが処理できる。
(4)ユーザーズエリアは3KW以上とする(100ステート
メント+DIMENSION(1000)程度までのプnグラムを 処理できる)。ベーシックシステムのコンパイラ,ローダは目的以上の
機能を持っていて,メモリを占有しすぎるが,CPUのコ アメモリが16KWと余裕があるので,そのままそっくり利用することにした。したがって,ベーシックシステムとの
互換性は完壁である。FORTRANライブラリについては,ユーザーのプログラムが必ずCALLする基本ルーチン(ア ドレス関係,基本IO関係等)と. CALLする回数の多い
組込み関数,基本外部関数等の演.算ルーチンを編集しなお
して利用した。
これらのシステムプOグラムをコントロールする制御プ
ログラムは,その機能を次のように決めた。
(1)コンパイラを待避エリアから所定のエリアにロード し,ライブラリ,ローダを空エリアに待避させる。
(2)コンパイラのワーキングエリアの確保を行いttシス
テムをCモードにして,コンパイラにコントm一ルをわたす。
(3)m・・一ダ,ライブラリを待避iエリアから所定エリアヘ ロ・一一ドし,コンパイラを待避させる。
(4)m 一一ダ内の各パラメータを初期値に設定しなおす。
(5)システムをLモードにし,ローダにコントロールを
わたす。(6)ユーザーズプログラムにコントロールをわたす。
(7)va・一ダにコントロールをわたし,メモリマップを出
力する。この制御プログラム主要部分のフローチャートをFig.3
に,そして,このプログラムのもとで動くシステム全体(#SYSTEM−10A)のメモリマップをFig.4に示す(数字
の左上の は8進数であることを示す)。
制御プログラムは4つの機能からなり,それぞれに対応 して,4つの開始番地を持っている。すなわち,ソースプ
ログラムのコンパイル(1〜2),オブジェクトプログラム のn一ド(3〜5),ユーザーズプログラムの実行(6),メ
モリマップの出力(7)1)である。(1〜2)はCモード,(3〜7)はしモードであるが,シ ステムがCモードかLモードかの判断をパラメータINDEX で行う。CモードのときINDEX講0, LモードのときIND
EX=1である。
COMPtLE
ld21000)
COM
otLERLOAD EXECUTE MEMORY MAP
エ ロけ こ ロの くト ロ の↓ /
USE只「S しODER
PROGRAM
LODER
Fig,3 Flow chart of the main part of the control
program.一 311 一
C−MODE
PL
100
c−i 163D
冒161目
2 L
﹁
8一 L
0402
06
223 5
2
2 2層
t3t.311
R7540
LrMODE
i.t
nO
幽376
.i
U30
ア706
,te640 L−1
21000
.し.一2.2s624 C−1222・5337540b
宇卜SVSτEM−10A SしST{1イ2}
#SYSIEM一:10A sLST.(2/2)
1 Fig.4 MemorY map of ・SYSTEM−10A;
1?. L : .initial P;ogram Loader
C : FOTRAN CQmpiler..
CW: Compilet Working ared ..:1払.:.:.Object progfa皿]しoader .1 LB. : FORTRAN Library
CP : Coritrol Program
UA1三US6r/s area.(indirect address table area)
UA2: Userts area
nToe tlgdne. figures ar.e dqsc;ibed ip the octai
..
¥ー.スプログラムの.コンパイルの場合,エラーチェック
めみかオ.ブジェクトプログラム.も出力するかの選択は,.A レジスタ(ACC)にセヅトするビットパター.ンに.よる。2)そして,このパターンはベーシックシステムの場合と同じに レた。.ただし,エラーチェックのみの場合はA.レジスタを
クリアーしたままでRUNすれば,制御プnグラ.ム内でそれに相当するビットパターンをA.レ.ジスタにセットするよ
う:にして,セットの手問をはぶいてある。
そして,もしシステムがLモーードであれば,まずライブ ラリ1,2とコンパイラ1,2を入れ替える(Fig・4参照,フ
ロ・・一チャートの工C正[Gルーチン)。ついでコンパイラ3を ユーザーズエリア2へ転送し(STOR1),ローダ1をその空番地に待避させる(STOR 2)。そしてINDEX=・ Oとして
コンパイラにゴントロールをわたす。
オブジェクトプmグラムのロードの場合は,Cモードの 場合と逆の入れ替.え(ICHG),転送(STOR 3),待避
(STOR4)を行う。つぎにv・一一ダ内の各パラメ・一一タを初期 値に設定しなおす(LINTI)。そしてINDEX=1としてロ
ーダにヲントロ..Tノレをわ.プζす。
なお,この制御プログラムには,後述のシステムジェネ
レ「ション(SG)のときに必要なので,制御プログラム
自身を他のメ毛Vエリアに転送する機能,.任意のメモリに それ自身のアドレスをストアする機能,特定のメモリ.に定 数値をストアする機能も合せ持つ.ている。これ.らを実行す
るにもSTORルーチンを利用するb
.以上をNEACシリーズ3200アセンブラ言語3)で.コーディ
ング.した例の一部をFig.5に示す。.QO53 10621 0054 10622 00.55 10623.
0056 10624
.0057 10625 0058 10626 005ウ..ユ0627
0060 10630
0061 10631 0062 10632 0063
I063 3 006.4 1.06340065 10635
.0066 10636
0067 10637
006.g lo6400069 10641 0070 10642 0071 10643 0072 10644
0073 10645 0074 106460075 1−06a7 0076 ・10650
0077 10651
0Q78 106520079 IQ653
00so ..1 06Jr 4 PP8i IQ. 655
・0082 ,10656
0063一 10657 0084 106600085 10661 0086 10662
QO87 106630088 10664 0099 10665
0090 106660091 10667
0092 106700093 10671 0094 10672 0095 10673 0096 10674
0097 10675・0098 10676
0099.10677
0100 107000101 10701
elO2 107020103 10703 0104 10704
*一SYSI EM一一 1 eA CONTROL
一〇 04 10726 0 02 /10734
−Q 04 IP724 −O Ol 10716 0 oooooo ・O 02 10711 iO1040
O・Ol 106250 12 10625
−O OI. .IQ625.
o oooooO
・.・
@O 02 40733 0 04 OOOOO
. .0 02. 呈.07∠茎O
O.P4 !0720 0 02 10732 0 04 10721
0 1,0 10700一 O 12 OOOOO O O隻 夏0642
・ O 02 10731 0 04 OOOOO O 02 10730 0 04 10720 0 02 10727 0 04 10721 0 ・10 107 00
0 1 hd O O O O O
O.Ql IQ653
一・O OI 10633
.Q ooeooo sToR −O 02 10657 0 04 一10720 0 12 10657
一〇 02 10657.
O 04 10721
0 .12 10657 −O 02 106570 04 OOOOO
O 12見0657
−O 02 10720 −tO 04 10721 .O 12 10720
0 12 1072ユ
O 12 OOOOO
O Oi 1.0671 −O OI 106S7 e oooooo −O 02 10720 −O 13 10721 −O 04 107200 12 tO720
STA*
LDA
STA*.
JMP*
;NDX DA. C
LDA
SNZ・・
JMP*
工RS . JMP*
ICHG DAC /LDA STA LDA STA LDA STA JST
工RS J凹P
LDA STA LDA .STA LDA STA JSTIRS 一.
JMP . JMP*
DAC.
LDA*
STA IRS
LDA*
STA IRS
LDA*
STA 1RS
LDA*
STA*
1RS
工RS
rRS JMPJMP*
!G DAC
LDA*
IMA*
STA宰
ZRSCOMM+t
=.,・Q54 2 NA凹E+2 LeAD
**
IND
王NDX1NDX INDX**
=g−427 0
.t100
Wl
竃蟹21624 W21G
o
*一2
.t−7056
0
=,630
1」 1
=麿Q2253
!」 2
工G
o
*一一2
rcHG
**…
STOR
w且.
STORSTOR
1 2STOR
S !OR
o
Wl
STORlil・2
Wl
W20
*一5
SToR**
Wl
W2W1 Wl
Fig.5・ A part of the control program coded by.
NEAC−3200 ASSEMBLER.
4 実習システ.ム(#SYSTEM−10A).のSG #SYSTEM−10A SLST(セルフロディング・システ
ムテ←プ)4)を作成するには,.上記のFORTRANコンパイ
ミニコン用学生実習システムの開発 岸本・小坂・富田
ラ*,FORTRANライブラリ*,ローダ*,制御プログラム**
の他に,FORTRANライブラリを所定のメモリ上に編集し てロードするためのライブラリCALLルーチンを作成する
必要がある。それに,メモリ上にできあがったシステムを
SLST形式で紙テープに出力するユーティリティルーチン(PAL−AP)*を用意する。さらに,メモリ内容をクリアする ルーチン,コアダンフ。ルーチン(DUMP)*等があればチェ
ックに際し便利である。SGを行う手順を下記に示す。
まず,制御プログラム,ライブラリCALLルーチンを所
定の手続きで作成する。
つぎに,
(1)拡張ローダ(16K−LDR−SLST)*をメモリの最高位の エリアにロードする。
(2)クリアルーチン**を拡張ローダでロードし,ローダ を除きメモリ内容をクリアする。
(3)標準ローダ(SLDR−P オブジェクト)*を拡張ロー ダで所定のメモリエリアにロードする。
(4)メモリマップをとり,標準ロダーのスター一一ト番地
占有メモリの範囲等を知る。
(5)制御プログラムを拡張ローーダで空メモリエリアにロ
ードする。(6)制御プログラムを用いて自身を拡張ローダがロード されている最高セクタにそれを破壊して転送する。
(7)空エリアの最後をアブソリューートローダ4)のエリア にとって,FORTRANコンパイラ(SLST)をロードす
る。
(8)コンパイラのワーキングエリアの範囲を決める。
(9)制御プログラムでコンパイラを待避エリアに転送す る。
(10)ライブラリCALLルーチン**を標準ローダで所定の エリアにロードする。
(11)続いてIOライブラリ***, FORTRANライブラリを リンクが完了するまでロードする。
(12)メモリマップをとり,各プログラム占有エリアの境 界アドレスを知る。
以上でメモリ上にLモードの#SYSTEM−10Aが形成さ れ,ユーザーズエリアは約4KWとなる。このユーザーズ
エリアを利用し,コアダンプルーチンで境界領域の内容を ダンプしチェックを行う。4)さらにPAL−APを用いて(12)
で得られたメモリマップ。を参考にして2巻のSLSTにする
(Fig.4参照)。
*NEACシリーズ3200ベーシックスシステム
**M者等が開発
***ベーシックシステム,一部筆者が開発
5 #SYSTEM:一10Aの処理効率 #SYSTEM−10AのFORTRANコンパイラはベーシッ
クのものと同一なので,JIS−7000レベルであるが, FOR−
TRANライブラリの常駐部分をユーザーズエリアとのかね
あいでかなり制限したため,全体の処理レベルはJIS−5000
レベル+αとなっている。
さて,この実習システムでFORTRANプログラムを処理
する手順は
(1)実習システムのロード
(2)FORTRANソースプログラムのエラーチェック
(3)オブジェクトプログラムの出力
(4)オブジェクトプログラムのロード
(5)実行となる。このシステムでの手順の流れはベーシックの場合 とほぼ同じであるが,ベーシックの場合のようにシステム をそのつどロードする必要はなく,(1)は最初1回きりで
よい。
Fig. 1に示された例をこのシステムで処理すると,処理
時間は手作業も含あ約5分となる。この時間の中には,システムをロードする時間(2分強)が含まれているので,
実質の処理時閥は約3分弱である。
つぎに,Fig.1と同程度のソースフ。ログラムを5例処理
する場合を考える(実習は1グループ4〜5人で行う)。これらのプログラムには実行時になって始めてチェックで
きるミス(論理ミス,入出力関係ミス等)が1〜2ケ所存在するものと考えると,少なくとも延べ10回はコンパイル
→オブジェクトプログラムのロードをくりかえすことにな
る。この場合の処理時間は,プnグラム修正のための時間を除いて,ベーシックシステムでは約90分,実習システム を用いた場合は30分弱である(実際の処理時間は,手なれ た者が行って,前者の場合が94分,後者の場合が28分であ った)。実習システムを用いた場合の処理時間がベーシッ
クシステムを利用した場合の3割程度となる。処理件数が多くなればなるほどこの差は大となり,システム常駐の効 果がはっきりあらわれてくる。そのうえ,長いシステムテ ープを扱う手作業から解放され,実際には,それらの誤操 作から生じる時間的ロスもほとんどなくなり,システムテ ープの消耗も大幅に減少した。
6 結 言
IPEにおける計算機実習で扱われるFORTRANソース プログラムの特殊性(実行時の使用メモリ容量が小さい,
レベルが低い,ミスが多い等)を考慮して,実習向きFOR−
TRAN処理システム(#SYSTEM−10A)を開発した。この
システムを用いることにより,定まった実習時間内で処理
一 313 一
できるプログラム件数が従来のシステムを用いた場合の3 倍以上となり,手作業も大幅に軽減することができた。し かし,なおこのシステムにはオブジェクトプログラム出力
という段階が残っており,これが最大の弱点と考えられる。この種のシステム開発目標を,コンパイル・アンド・
ゴー・システムにおくのが常識であろうが,それは今後の
課題である。おわりに,この開発は著者の一人が文部省昭和46年度情 報処理関係内地研究員在任中になされたが,この開発に理 解を示し,有益な御助言をくださいました岡山大学工学部 佐野博也教授,吉田靖夫助教授に感謝致します。なお実習 時における貴重な経験をお聞かせいただいた本校電子計算 機実習担当の諸氏に感謝します。
文 献
1) NEACシリーズ3200ソフトウェアマニアル ソフトウェア概説書 (昭49−8)
システム説明書(昭46−5)
2)NEACシリーズ3200ソフトウェアマニアル FORTRAN説明書(昭46−4)
ソフトウェア概説書 (昭46−8)
3)NEACシリーズ3200ソフトウェアマニアル
システム説明書(昭46−5)Assembler説明書(昭46−5)
4)NEACシリーズ3200ソフトウェアマニアル
ソフトウェア概説書 (昭46一一8)
ユーティリティ説明書(昭46−5)