ときどきの雑記帖 RE* (新南口)
1st priority
路線バスの車掌
バスに車掌がいた!? 踏切前で降車して確認? 昭和のバス常識がスゲー - 自動車情報誌「ベストカー」
実際に車掌がそこにいたという記憶はないんだけど、 車掌用のスペースが残っていたバス(もちろん路線バス)に何度か乗った記憶がある。 わたしが小学校高学年くらいまでは残っていたんじゃなかろうか? (もちろんバスの運営会社にもよるんだろうけど)
RubyKaigi 2022
RubyKaigi 2022のキーノートスピーカー、Alan Wu(YJIT開発の中心人物のひとり)とYuta Saito(@kateinoigakukun、RubyのWasm対応した人)って、RubyKaigi歴代最強クラスのスーパーハッカーズなのでは? 今年のRubyKaigiやばいなあhttps://t.co/zpXY9Vv4m6
— Yusuke Endoh (@mametter) July 14, 2022
ううむ行きたいなあ
Guile Steel
Guile Steel という名前のScheme処理系だそうな😄
Guile Steel: a proposal for a systems lisp – Dustycloud Brainstorms
FORTRAN Compiler on IBM 704
DIC
FORTRANには「予約語」はないのだけど、それ的なものを切り分けるための辞書(たぶん)。
ソースコードから「予約語」を見つけて切り分けるのに使う辞書。
ところでFORTRANの仕様でよくわからないことの一つが 「空白が意味を持たない」というもの。 字句解析で面倒が増えるだけと思うんだけど、 当時はそうすることのメリットがあったんだろうか?
REM DIC/ DICTIONARY OF NON-ARITHMETIC STATEMENTS (USED BY CC500).4F13326
DIC OCT 244677274663 DO-GOT 4F13327
OCT -67731267462 O-IF(S 4F13328
OCT 254562256266 ENSESW 4F13329
OCT 316323307731 ITCH-I 4F13330
OCT 267462254562 F(SENS 4F13331
OCT 254331273063 ELIGHT 4F13332
OCT -373126243165 -IFDIV 4F13333
OCT 312425233025 IDECHE 4F13334
OCT 234277312621 CK-IFA 4F13335
OCT 232364446443 CCUMUL 4F13336
OCT 216346514665 ATOROV 4F13337
OCT 255126434666 ERFLOW 4F13338
OCT -373126506446 -IFQUO 4F13339
OCT -233125456346 TIENTO 4F13340
OCT -252551264346 VERFLO 4F13341
OCT -267731267721 W-IF-A 4F13342
OCT -226231274577 SSIGN- 4F13343
OCT -226346477747 STOP-P 4F13344
OCT 216462257762 AUSE-S 4F13345
OCT 254562254331 ENSELI 4F13346
OCT 273063772431 GHT-DI 4F13347
OCT -42545623146 MENSIO 4F13348
OCT -57725506431 N-EQUI 4F13349
OCT -252143254523 VALENC 4F13350
OCT 257726512550 E-FREQ 4F13351
OCT -242545237077 UENCY- 4F13352
OCT 234645633145 CONTIN 4F13353
OCT -242577512521 UE-REA 4F13354
OCT 246321472577 DTAPE- 4F13355
OCT -112521243145 READIN 4F13356
OCT -76463632147 PUTTAP 4F13357
OCT 257751252124 E-READ 4F13358
OCT 245164447751 DRUM-R 4F13359
OCT 252124776651 EAD-WR 4F13360
OCT 316325632147 ITETAP 4F13361
OCT 257766513163 E-WRIT 4F13362
OCT 254664634764 EOUTPU 4F13363
OCT -236321472577 TTAPE- 4F13364
OCT -265131632524 WRITED 4F13365
OCT -116444774751 RUM-PR 4F13366
OCT 314563774764 INT-PU 4F13367
OCT -52330775125 NCH-RE 4F13368
OCT -263145247722 WIND-B 4F13369
OCT 212342624721 ACKSPA 4F13370
OCT 232577254524 CE-END 4F13371
OCT 263143257726 FILE-F 4F13372
OCT -65144216377 ORMAT- 4F13373
OCT -226422514664 SUBROU 4F13374
OCT -233145257723 TINE-C 4F13375
OCT -064444464577 OMMON- 4F13376
OCT -112563645145 RETURN 4F13377
OCT -372321434377 -CALL- 4F13378
OCT 254524747726 END(-F 4F13379
OCT -244523633146 UNCTIO 4F13380
OCT -057777777777 N-----. 4F13381
BSS 10 4F133815
REM END OF DICTIONARY. 4F13382
-
を区切りとして「予約語(のようなもの)」が並べられているように見える。
6文字ごとなのは、一文字が6ビットで一ワードが36ビットだから。だろう。
このソースコードの該当部分から真ん中のコメント文字列を取り出し、
改行を取り除いてから-
でsplitすると…
DO
GOTO
IF(SENSESWITCH
IF(SENSELIGHT
IFDIVIDECHECK
IFACCUMULATOROVERFLOW
IFQUOTIENTOVERFLOW
IF
ASSIGN
STOP
PAUSE
SENSELIGHT
DIMENSION
EQUIVALENCE
FREQUENCY
CONTINUE
READTAPE
READINPUTTAPE
READDRUM
READ
WRITETAPE
WRITEOUTPUTTAPE
WRITEDRUM
PRINT
PUNCH
REWIND
BACKSPACE
ENDFILE
FORMAT
SUBROUTINE
COMMON
RETURN
CALL
END(
FUNCTION
見慣れないものも結構あるけど、それっぽい単語の集まりになった。 しかしこれ、ABC順ではないしどういう規則で並べられているんだろう? (出現頻度順?)
さて、(OCTの直後にある)オペランドの数値はどうやら「符号bit+絶対値」で表しているようなので こんなやっつけスクリプト(といいつつ結構試行錯誤した)で
DATA.each_line do |line|
v, s = line.chomp.split(',')
printf "%13s %6s %6s %6s %6s %6s %6s\n", " ", *s.chars
printf "%13s %41s\n", v,
v.to_i(8).to_s(2)
.gsub(/(\d)(?=\d{6}+$)/, '\\1_')
.gsub(/^(?=\d{5}_)/, '0')
.gsub(/-(\d+)/){"1" + ("000"+$1)[-5,5]}
end
__END__
244677274663,DO-GOT
-67731267462,O-IF(S
254562256266,ENSESW
316323307731,ITCH-I
267462254562,F(SENS
254331273063,ELIGHT
-373126243165,-IFDIV
312425233025,IDECHE
234277312621,CK-IFA
232364446443,CCUMUL
216346514665,ATOROV
255126434666,ERFLOW
-373126506446,-IFQUO
-233125456346,TIENTO
-252551264346,VERFLO
-267731267721,W-IF-A
-226231274577,SSIGN-
-226346477747,STOP-P
216462257762,AUSE-S
254562254331,ENSELI
273063772431,GHT-DI
-42545623146,MENSIO
-57725506431,N-EQUI
-252143254523,VALENC
257726512550,E-FREQ
-242545237077,UENCY-
234645633145,CONTIN
-242577512521,UE-REA
246321472577,DTAPE-
-112521243145,READIN
-76463632147,PUTTAP
257751252124,E-READ
245164447751,DRUM-R
252124776651,EAD-WR
316325632147,ITETAP
257766513163,E-WRIT
254664634764,EOUTPU
-236321472577,TTAPE-
-265131632524,WRITED
-116444774751,RUM-PR
314563774764,INT-PU
-52330775125,NCH-RE
-263145247722,WIND-B
212342624721,ACKSPA
232577254524,CE-END
263143257726,FILE-F
-65144216377,ORMAT-
-226422514664,SUBROU
-233145257723,TINE-C
-064444464577,OMMON-
-112563645145,RETURN
-372321434377,-CALL-
254524747726,END(-F
-244523633146,UNCTIO
-057777777777,N-----
こんな結果を得た。
D O - G O T
244677274663 010100_100110_111111_010111_100110_110011
O - I F ( S
-67731267462 100110_111111_011001_010110_111100_110010
E N S E S W
254562256266 010101_100101_110010_010101_110010_110110
I T C H - I
316323307731 011001_110011_010011_011000_111111_011001
F ( S E N S
267462254562 010110_111100_110010_010101_100101_110010
E L I G H T
254331273063 010101_100011_011001_010111_011000_110011
- I F D I V
-373126243165 111111_011001_010110_010100_011001_110101
I D E C H E
312425233025 011001_010100_010101_010011_011000_010101
C K - I F A
234277312621 010011_100010_111111_011001_010110_010001
C C U M U L
232364446443 010011_010011_110100_100100_110100_100011
A T O R O V
216346514665 010001_110011_100110_101001_100110_110101
E R F L O W
255126434666 010101_101001_010110_100011_100110_110110
- I F Q U O
-373126506446 111111_011001_010110_101000_110100_100110
T I E N T O
-233125456346 110011_011001_010101_100101_110011_100110
V E R F L O
-252551264346 110101_010101_101001_010110_100011_100110
W - I F - A
-267731267721 110110_111111_011001_010110_111111_010001
S S I G N -
-226231274577 110010_110010_011001_010111_100101_111111
S T O P - P
-226346477747 110010_110011_100110_100111_111111_100111
A U S E - S
216462257762 010001_110100_110010_010101_111111_110010
E N S E L I
254562254331 010101_100101_110010_010101_100011_011001
G H T - D I
273063772431 010111_011000_110011_111111_010100_011001
M E N S I O
-42545623146 100100_010101_100101_110010_011001_100110
N - E Q U I
-57725506431 100101_111111_010101_101000_110100_011001
V A L E N C
-252143254523 110101_010001_100011_010101_100101_010011
E - F R E Q
257726512550 010101_111111_010110_101001_010101_101000
U E N C Y -
-242545237077 110100_010101_100101_010011_111000_111111
C O N T I N
234645633145 010011_100110_100101_110011_011001_100101
U E - R E A
-242577512521 110100_010101_111111_101001_010101_010001
D T A P E -
246321472577 010100_110011_010001_100111_010101_111111
R E A D I N
-112521243145 101001_010101_010001_010100_011001_100101
P U T T A P
-76463632147 100111_110100_110011_110011_010001_100111
E - R E A D
257751252124 010101_111111_101001_010101_010001_010100
D R U M - R
245164447751 010100_101001_110100_100100_111111_101001
E A D - W R
252124776651 010101_010001_010100_111111_110110_101001
I T E T A P
316325632147 011001_110011_010101_110011_010001_100111
E - W R I T
257766513163 010101_111111_110110_101001_011001_110011
E O U T P U
254664634764 010101_100110_110100_110011_100111_110100
T T A P E -
-236321472577 110011_110011_010001_100111_010101_111111
W R I T E D
-265131632524 110110_101001_011001_110011_010101_010100
R U M - P R
-116444774751 101001_110100_100100_111111_100111_101001
I N T - P U
314563774764 011001_100101_110011_111111_100111_110100
N C H - R E
-52330775125 100101_010011_011000_111111_101001_010101
W I N D - B
-263145247722 110110_011001_100101_010100_111111_010010
A C K S P A
212342624721 010001_010011_100010_110010_100111_010001
C E - E N D
232577254524 010011_010101_111111_010101_100101_010100
F I L E - F
263143257726 010110_011001_100011_010101_111111_010110
O R M A T -
-65144216377 100110_101001_100100_010001_110011_111111
S U B R O U
-226422514664 110010_110100_010010_101001_100110_110100
T I N E - C
-233145257723 110011_011001_100101_010101_111111_010011
O M M O N -
-064444464577 100110_100100_100100_100110_100101_111111
R E T U R N
-112563645145 101001_010101_110011_110100_101001_100101
- C A L L -
-372321434377 111111_010011_010001_100011_100011_111111
E N D ( - F
254524747726 010101_100101_010100_111100_111111_010110
U N C T I O
-244523633146 110100_100101_010011_110011_011001_100110
N - - - - -
-057777777777 100101_111111_111111_111111_111111_111111
同じ文字がある場所は同じビットパターンになっているようなのでたぶん大丈夫だろう。 そして登場した文字と対応するビット列を並べるとこうなった。
A | 010001 |
B | 010010 |
C | 010011 |
D | 010100 |
E | 010101 |
F | 010110 |
G | 010111 |
H | 011000 |
I | 011001 |
J | |
K | 100010 |
L | 100011 |
M | 100100 |
N | 100101 |
O | 100110 |
P | 100111 |
Q | 101000 |
R | 101001 |
S | 110010 |
T | 110011 |
U | 110100 |
V | 110101 |
W | 110110 |
X | |
Y | 111000 |
Z | |
- | 111111 |
( | 111100 |
予想はしていたけど、ASCIIでもEBCDICでもないコードのようだ (いくつか見たPDFにここで使っているコードっぽいものもあった。要確認)。 とは言えEBCDICっぽさがちょっとあるね。アルファベットの9文字ごとに「切れ目」があるとか。
数字(0~9)がわからないけど、
おそらく上位2ビットが00
、その下の4ビットが
0000→0、0001→1、…、1000→8、1001→9
だろうか。
メモ
(FORTRAN-IIの)ソースコードを眺めていたら こんなコメントに遭遇した。
rem ------ scanned 10/8/06 304349-Volume_I.pdf Page 036/036 ------
REM 4F10047
REM THE FOLLOWING CONVENTIONS ARE USED IN THIS LISTING= 4F10048
REM 4F10049
REM ** IN THE ADDRES, TAG, OR DECREMENT OF AN INSTRUCTION 4F10050
REM INDICATES THAT THIS FIELD WILL BE MODIFIED BY THE PROGRAM. 4F10051
REM * IN COL/36 INDICATES THE INSTRUCTION IS A TRANSFER OUT OF 4F10052
REM THIS LOGICAL BLOCK OR SUBROUTINE. 4F10053
REM C IN COL/34 INDICATES THE INSTRUCTION WAS CORRECTED. 4F10054
REM P IN COL/32 INDICATES THE INSTRUCTION WAS INSERTED (PATCH). 4F10055
**
や*
の意味は予想した通りだった。
一方でC IN COL/34
とP IN COL/32
は
該当するものが見当たらない気がするんだけど、
探し方が悪いのかもしれない。
ところでこのソースコード、
OCRにかけてテキスト化したもののようなので
(まあ当然ちゃあ当然)
ところどころO
となるべきところが0
になっていたり
1
とI
が混乱している部分などがあるのはご愛敬。
linss
- Index of /pdf/ibm/704
- http://bitsavers.org/pdf/ibm/704/FORTRAN_paper_1957.pdf
- Transcription of Smithsonian IBM 704 Fortran II source code. ? Software Preservation Group
- 704 FORTRAN II - Software Preservation Group
- Assembly listing of transcription - Software Preservation Group
Lisp
ところで704と言えばLispにも深い縁のあるマシンでもあるわけですが、 太古のLISPのソースコード(704じゃなく7090用のものらしいけど) を読んだ方がいらしてですね。
LISP 1.5 Programmer's Manual、VIII章(Appendixの手前)まで読んだ。色々と発見があって面白いんだけど、色々と読むのがしんどい。
— zick (@zick_minoh) August 24, 2019
CARとCDRを理解するだけですごい時間がかかってしまったが、ここまで分かると他の関数はすぐ読めたのでよかった(小並感) pic.twitter.com/5WOHMqwB5Y
— zick (@zick_minoh) August 25, 2019
704だとATX
やSTR
という命令はなかったと思うけど
まあそういうものだとして、CARとCDRって
CAR SXA CARX,4
PDX 0,4
CLA 0,4
PAX 0,4
PXD 0,4
CARX AXT **,4
TRA 1,4
CDR SXA CDRX,4
PDX 0,4
CLA 0,4
PDX 0,4
PXD 0,4
CDRX AXT **,4
TRA 1,4
一命令(PAX 0,4
とPDX 0,4
)しか違わんのですな。
当然と言えば当然か。
数を表現する際には符号ビットを使うのに、アドレスには2の補数を使うというLISP 1.5の謎の仕様は IBM 7090の仕様か https://t.co/d4vWAhMGpM
— zick (@zick_minoh) August 24, 2019
この辺の謎仕様に現在苦戦中😄
The First Lisp Compiler
704で検索したら
三好先生,2013年のコンピュータ科学序論で,IBM 704の話とかしてて,学部1年生のころはその(いい意味での)ヤバさに気が付いていなかったけど,今となってみれば,なんと素晴らしい授業だったのだろうと気が付く.(ちなみにこの年で退職されたので,この授業を履修できてめっちゃラッキーだった)
— K.Maeyama /電子計算機の日本史 (@mk95_hoc) August 17, 2021
よーく考えると,コンピュータ科学出身で,歴史研究しているの,大学の学部で,変な楽しみ方をしてしまったからなのではないか.というところがすごくある.
— K.Maeyama /電子計算機の日本史 (@mk95_hoc) August 17, 2021
僕がコンピューティングに関する歴史研究をする上で,工学院大学のコンピュータ科学科(2013年入学)に在籍していたことは,偶然だけど,これ以上に無い選択肢だった可能性が高い.
— K.Maeyama /電子計算機の日本史 (@mk95_hoc) August 17, 2021
・IBM 704のアーキテクチャの授業(計算機構成論)があった
— K.Maeyama /電子計算機の日本史 (@mk95_hoc) August 17, 2021
・EDSACの機械語を書く実験(情報学実験)があった
・コンピュータを専攻にしているのに学芸員課程が履修できた
・スパコン界の歴史をまとめている小柳義夫先生の主宰していた研究室があった.自分はその後任の田中輝雄研究室で客員研究員
704のアーキテクチャの講義、うけてみたかった (自分の学生当時にあったとして受講したかは疑問だけど) 😄
渋谷駅
チックショー!東急の野郎、渋谷駅地下ホームでまた4番線に到着しやがった。
— 建築エコノミスト森山高至「土建国防論」執筆中 (@mori_arch_econo) July 17, 2022
何で素直に同方向なら同じホームで乗り換え出来ないんだよ!
いったん下ろされくそ狭い降車ホームで身動きとれないし、エスカレーターばば込みで、5番ホームにたどり着くのに時間がかかる。この乗り換え上下動は失敗動線
副都心線の渋谷始発は殆ど無いからこの被害を被るのは代官山ユーザーだけのはず https://t.co/PQBPGetKqC
— ワ州路快速@充電中🔋 (@bnd3yh) July 17, 2022
渋谷4番線折り返しを解消するなら新宿三丁目まで持って行けば済むといえばそう。
— ワ州路快速@充電中🔋 (@bnd3yh) July 17, 2022
東横線で渋谷止まりになるのは基本各停だけだから、 中目黒辺りで後続の急行or特急に乗り換えときゃいいのに… (「また」と書いているから何度も経験してるんだよね?) と思ったら、代官山から乗ってくるというパターンがあり得るのか (最初のツイート主がそうなのかわからんけど。ところでこの人築地→豊洲の移転で騒いでた人?)。
新宿三丁目まで~というのは実際(横浜方面から)新宿三丁目行きがあるので できるできないでいうならできるけど、 謎の渋谷止まりが存在する理由(として考えられるの)は 相互乗り入れしている会社間での収入の分配に関わってくるためで、 渋谷→新宿三丁目で東京メトロの線路を走ると以下略なことになるような、
そのせいなのかわからないけど、 たまに東急以外の車両(東武、西武、東京メトロ)なのに 東横線渋谷止まりの列車を目撃したりして、 不思議に思ったことも。
まあ不便なのは確か。
- 電鉄同士の「相互乗り入れ」、車両コストはどう調整しているか | 思わず誰かに話したくなる鉄道なるほど雑学 | ダイヤモンド・オンライン
- 相互乗入れ運賃の分配方法: ドアのない談話室
- 東横線ダイヤ~渋谷での折り返しと先頭車から観察