ときどきの雑記帖 RE* (新南口)
Midnight submarine
渋谷駅
三連休の最後の日(工事完了後)にちょっと見てきた。
移設前のホームの構造がなぜああなっていたのか 不思議だったのだけど(と言いつつ調べたりはせず) 最近の原宿駅とか横須賀線の方の武蔵小杉駅みたいな パターンだったのね。
拡幅されたJR渋谷駅山手線ホームに初めて入線する試運転列車の様子です。試運転列車では線路や電気設備などに異常が無いか確認するとともに、ホーム上では乗車位置の確認などを行っています。 pic.twitter.com/29UGjQ5WTG
— JR東日本 東京建設プロジェクトマネジメントオフィス(公式) (@JREast_TokyoPMO) January 8, 2023
- 戦前も同一ホームだったJR山手線渋谷駅 いつ、なぜ2面に? 外回りホームと共に消えた“記憶” | 乗りものニュース
- JR山手線渋谷駅、なぜ島式ホームに戻ったのか? 線路切換工事が終了 | マイナビニュース
そう言えば埼京線ホームの移設のときに なぜ最初から移設後の位置にホームを作っておかなかったんだ とかいう意見をちらほら見かけたけど 「最初」がどの時点のことを言うのかはさておき 「無茶云うな」だよなあ。
以前は発生していなかったことだと思うけど、 pocket に登録したものが参照できないという現象が起きている。
発生の条件はよくわからない (あとから見てもどこを登録しようとしたのか覚えていない) んだけど、たとえば O’Reilly Japan - SQLではじめるデータ分析 では確実に発生する。
なんじゃこれ。
Oh! X
Oh! MZ / Oh! X 記事リスト 1986~1995年 をつらつらと眺めていて
- 1990-01
- 特集2 Cプログラミング応用編
- 数式記述から3Dタートルまで 再帰大作戦 丹明彦
- 8ビットでもC言語を αCで書く正規表現 本橋純
- ここまでできる GCCに見る最適化 中森章 -1990-06
- X68000用 GNU Cコンパイラ GCC Ver.1.36.01 中森章
- 特集2 Cプログラミング応用編
- 1990-08
- ごめんなさいのコーナー
- 6月号 GCC Ver.1.36.01 Human 2.0では動きません
- ごめんなさいのコーナー
- 1995-07
- 特集 Optimizing method
- 中級プログラマに贈る 一線を越えた68系プログラマ養成講座 西川善司
- コーディングの深みにはまる コスい技を磨く 横内威至
- 浮動小数点演算プロセッサの効果 Fの哲学 瀧康史
- コンパイラの挙動を知る GCCにおける最適化 中森章
- ローカルRAMの使い方 Xellent30を活用する 菊池功
- 特集 Optimizing method
あたりが気になった。 が、すぐには内容を確かめられんなあ。
C MAGAZINE
そこで、というわけでもないが C MAGAZINE バックナンバー一覧 をみてみたところいくつか気になる見出しがあった。
- 1990年7月号
- 特集 最新GNU入門
- 1991年9月号
- 特集 フィルタ系言語研究
- 1991年6月号
- 特集 Cプログラマのための知的財産権概論拡大するソフトウェア保護の実態と問題点
- 新連載 X68k活用講座GCCで学ぶ68ゲームテクニック
- 1993年11月号
- 特集 C言語とオブジェクト指向
- 新連載 X68k活用講座SX-WINDOWプログラミング
- 1995年1月号
- 特集 新提携誌C/C++ Users Journal特選 アルゴリズムと数値計算
- 1996年11月号
- 特集 Microsoftテクノロジ戦略ActiveX
- 特集 変貌するJava
- 1996年8月号
- 特集 Javaプログラミング
- 1996年5月号
- 特集 C/C++プログラマのための研究 Java
「最新GNU入門」が気になったのでKindle版を買ってみた。
余談ながら、1991年9月号の 「特集 フィルタ系言語研究」 で紹介されたのがたぶんPythonの日本での初出じゃないかなあ (もちろん当時のBBSではそれより先行していただろうけど)。
閑話休題。
さてamazonのページには詳しい目次もあって、その内容はというとこんな感じ。
●目次
- 巻頭インタビュー ポータブルCコンパイラPCCの制作者 Steve Johnson(1)
- Programming on Purpose
- 速報 Turbo C++ 最新レポート
- COMPUTER LANGUAGE提携翻訳 致命的エラー処理の透明化
- Digest of COMPUTER LANGUAGE
- フリーソフトウェア最新レポート <第8回>
- オリジナルCコンパイラ制作プロジェクトPragmaC <第3回>
- 特集 最新GNU入門
- アルゴリズムとデータ構造入門
- Cプログラマのためのランタイムライブラリ入門 <第4回>
- C++プログラミング入門 <最終回>
- 三田典玄の実践Cプログラマ養成講座 <第10回>
- TOOL & TOOLS 多機能RENAME「MV」の作成
- 応用C言語 Cの道具箱 <第1回>
- C Language Forum 恥ずかしながらドジりました <第8回>
- C言語入門講座 はじめて学ぶCプログラミング <第10回>
- 速報 TURBO DEBUGGER & TOOLS 2.0 PC-9801版緊急レポート ほか
「巻頭インタビュー ポータブルCコンパイラPCCの制作者 Steve Johnson(1)」 が面白かったので次の号も買ってみたところ
●目次
- 巻頭インタビュー ポータブルCコンパイラPCCの制作者 Steve Johnson(2)
- Programming on Purpose
- COMPUTER LANGUAGE提携翻訳 GUIの基礎の基礎
- Digest of COMPUTER LANGUAGE
- フリーソフトウェア最新レポート <第9回>
- Book Review
- オリジナルCコンパイラ制作プロジェクトPragmaC <第4回>
- 特集 DOSエクステンダとCプログラミング
- アルゴリズムとデータ構造入門 <第3回>
- 短期集中連載 最新GNU移植レポート(1)
- 三田典玄の実践Cプログラマ養成講座 <第11回>
- 応用C言語 Cの道具箱 <第2回>
- C Language Forum 恥ずかしながらドジりました <第9回>
- ワンポイントプログラミング講座 <第8回>
- C言語入門講座 はじめて学ぶCプログラミング <第11回>
- ANSI C|more <第2回>
- Conference Room Part1 GNU奮闘記 <第5回>
- Conference Room Part2 RK文字列検索アルゴリズム ほか
この、短期集中連載 最新GNU移植レポート(1) に前回言及した近藤さんの行ったgcc移植の話が載っていた。 ここだったかあ。
FORTRAN Compiler on IBM 704
今回はCA000 ASSEMBLES STATEMENT IN THE F-REGION AND ASSIGNS AN IFN.
を読んでいく。
CA010
CA000 ASSEMBLES STATEMENT IN THE F-REGION AND ASSIGNS AN IFN.
REM CA000/ CALLS=CA100,SR6DC1,TET00,DIAG. 4F11641
REM CA000 ASSEMBLES STATEMENT IN THE F-REGION AND ASSIGNS AN IFN.4F11642
CA010 LXD ENDWRD,4 IF THE FINAL STATEMENT HAS BEEN 4F11643
TXL DIAG,4,0 * PROCESSED, THE GO CALL DIAGNOSTIC. 4F11644
LXD EIFNO,1 KEEP INTERAL FORMULA NUMBER 4F11645
TXI CA013,1,1 (DECR PART OF EIFNO) 4F11646
CA013 SXD EIFNO,1 UP TO DATE BY ADDING 1. 4F11647
CAL FT OBTAIN HOLLERITH CODED 5-DIGIT 4F11648
ARS 6 EXTERNAL FORMULA NO IN ACC. 4F11649
SLW F-1 AND RETAIN IN F-01. 4F11650
LXD DCF,1 INITIALIZE INDEX A TO COMPL OF F. 4F11651
CA018 LXA L(11),2 SET UP LOOP FOR 11 CYCLES. 4F11652
CA019 LDQ FT+12,2 MOVE WORD FROM REGION FT 4F11653
STQ 0,1 TO REGION F. 4F11654
TIX CA020,1,1 KEEP F-REGION ADDRESS UP-TO-DATE. 4F11655
CA020 TIX CA019,2,1 TEST END OF LOOP. 4F11656
TSX CA100,4 * GO READ NEXT NON-BLANK CARD. 4F11657
CAL FT TEST RIGHTMOST CHARACTER OF 4F11658
ANA L(63) FIRST WORD FOR CONTINUATION MARK, 4F11659
TZE CA021 IF ZERO OR BLANK, 4F11660
SUB ABLANK DISCONTINUE READING, 4F11661
TNZ CA018 OTHERWISE CONTINUE. 4F11662
CA021 CLA BLANKS BEGIN SCANNING REGION F BACKWARDS 4F11663
CA022 CAS -1,1 TO FIND FIRST NON BLANK WORD. 4F11664
TRA CA023 NOT BLANK. 4F11665
TXI CA022,1,1 BLANK, SO CONTINUE SCAN. 4F11666
CA023 LDQ 36ONES PLACE BINARY ONES IN FIRST WORD 4F11667
STQ 0,1 FOLLOWING RIGHTMOST NONBLANK WORD. 4F11668
CAL F-1 PICK UP EXTERNAL FORMULA NUMBER AND4F11669
CAS 5BLANS COMPARE WITH /0 /. 4F11670
TRA CA015 NOT COMPARE. 4F11671
TRA CD000 * TAKE EXTFORMNO, IF ANY AND 4F11672
CA015 LRS 35 GO TO CONVERSION SUBROUTINE AND 4F11673
TSX SR6DC1,1 * RETURN HERE WITH RESULT IN ACC. 4F11674
STA EIFNO STORE RESULT IN ADDRESS OF EIFNO. 4F11675
TSX TET00,1 * GO TO PROGRAM TET TO ENTER EIFNO 4F11676
PZE 0 INTO TABLE TEIFNO (TABLE O). 4F11677
REM END OF PROGRAM CA000. 4F11678
簡単に言うと、 F番地から始まる領域に テープから読み込んだ一行の内容を転送していく。 このとき、継続行があればその内容も連結する (ので「assembles statement」なのね)。
データとして参照しているアドレスは以下の通り。
- ENDWRD
- EIFNO
- FT
- F
- DCF
- L(11)
- L(63)
- ABLANK
- BLANKS
- 36ONES
- 5BLANS
具体的にはこう。
ENDWRD TIX SR6DC4,0,-1 (DECR= END OF PROBLEM INDICATOR) 4F11015
EIFNO PZE **,,** EXTERNAL,,INTERAL FORMULA NUMBER. 4F10064
FT BSS 12 SOURCE PROGRAM INPUT BUFFER. 4F10285
F-1
EFN BSS 1 EXTERNAL FORMULA NUMBER (F-1). 4F10281
F BSS 111 ASSEMBLED STATEMENT REGION. 4F10282
DCF TXI C0180,0,-F REPEAT PROCESS FOR NEXT CHARACTER. 4F10528
L(11) SYN EQUAL 4F15932
EQUAL OCT 13 = - CTEST-6 4F10313
L(63) SYN ENDMK 4F15935
ENDMK OCT 77 111111 - CTEST-10 4F10309
ABLANK SYN BLANK 4F15879
BLANK OCT 60 0000000000060 4F10339
BLANKS BCD 1 606060606060 4F10401
36ONES SYN ALL1 4F15874
ALL1 OCT -377777777777 END OF STATMENT WORD. 4F10404
5BLANS BCD 10 006060606060 4F10378
転送先の領域Fの大きさは111ワードとなっているけど
これは(12-1) * 10 + 1
からきた数字のようだ。つまり、
文番号の領域を除いた1行当たりのワード数に
継続できる最大の行数を掛けたものに
「エンドマーク」のための1ワードを加えた数。
FORTRAN 77の時代は99行まで継続行をつけられたようだけど、 このFORTRAN IIではずっと少ない数。
CA021 CLA BLANKS BEGIN SCANNING REGION F BACKWARDS 4F11663
CA022 CAS -1,1 TO FIND FIRST NON BLANK WORD. 4F11664
TRA CA023 NOT BLANK. 4F11665
TXI CA022,1,1 BLANK, SO CONTINUE SCAN. 4F11666
CA023 LDQ 36ONES PLACE BINARY ONES IN FIRST WORD 4F11667
STQ 0,1 FOLLOWING RIGHTMOST NONBLANK WORD. 4F11668
CA023のLDQ命令でMQレジスターにロードし、つづくSTQ命令でストアしているのが 「エンドマーク」で、すべてのビットが立った値。 テープからは固定長で読み込んでくるので「目印」をつけておかないと 終端がわからんというわけですな。
EFN BSS 1 EXTERNAL FORMULA NUMBER (F-1). 4F10281
F BSS 111 ASSEMBLED STATEMENT REGION. 4F10282
FIRSTC BSS 1 USED BY SS000,TESTFX,C3000. 4F10283
領域Fの前にはEFNという1ワードがあって (ソースコードではF-1で参照している)、 ここには処理対象の行についた文番号が入る。
決定版!!地域別レインボーマンの替え歌の出だし!! pic.twitter.com/Rs7GLMUurZ
— おタケさん (@kIAqFcnrXugqX7X) January 7, 2023