2016-01-31

UNIX V6当時のC言語に移植するための変更箇所

『思考ゲームプログラミング』に掲載されているソースコードをUNIX V6当時のC言語に移植するための変更箇所を調べるため「C Reference Manual」を確認してみました。とりあえず問題になりそうなのは次の点です。
  1. typedefがない。アスキー本では151頁の註釈で「typedefの使えない8ビット用Cは、#defineを使う」とあるので、それで対処できるのかもしれません。
  2. setjmp()とlongjmp()を使っている個所があるのですが、UNIX V6にあるのでしょうか。無いのであれば移植する必要があります。
  3. 最も目立つ違いは「E1 op= E2」のような構文が「E1 =op E2」となっている事でしょう。機械的な変更なので、もしかすると#defineで対処できるかもしれません。
  4. 識別子長はリファレンスマニュアルには「No more than the first eight characters are sinificant, and only the first seven for external identifiers.」とあります。これは恐らく大丈夫だろうと思いますが、念のために確認しておいたほうが良いかもしれません。

2016-01-30

UNIX V6にオセロゲームを移植できるか

1986年にアスキー出版局から発行された森田和郎・国枝交子・津田伸秀『思考ゲームプログラミング』(ISBN4-87148-186-7)にソースコードが掲載されているオセロゲームはUNIX V6環境に移植できるでしょうか。

本書には動作を確認したコンパイラが掲載されていますが、OSに関する記述はありません。しかし出版当時の状況を考えれば、16ビットならMS-DOS、8ビットならCP/Mだろうと思います。MS-DOSやCP/Mで動くのであれば、UNIX V6でも動くのではないでしょうか。

本書に掲載されているソースコードは、現在から見ると相当旧いK&Rスタイルで書かれています。しかしUNIX V6時代のC言語は更に原始的なので、書き換えないとコンパイルできないでしょう。ソースコードは全体で2,500行程度なので、移植してみても面白いかもしれません。

2016-01-17

PDP-11/40とPDP-11/45との違いによるUNIX v6への影響とは

UNIX v6のカーネルにはPDP-11/40用のファイルm40.sと、PDP-11/45用のファイルm45.sが含まれています。PDP-11のモデルの違いによって、UNIX v6は具体的に何が変わるのでしょうか。

『PDP 11/40 processor hanbook』の「CHAPTER 6 MEMORY MANAGEMENT」の中で、「Figure 6-7 Page Descriptor Register」で「Bits 7 and 0 are used by the PDP-11/45」という記述があり、「6.6 FAULT REGISTYERS」においても「#1 is used by the PDP-11/45」と記述されています。

これらの違いは、UNIX v6において、またUNIX v6を利用するユーザにとって、何が変わるのでしょうか。それとも何も変わらないのでしょうか。今後調べてみようと思います。

2016-01-15

UNIX V6カーネルのCプログラムとHファイルの相関関係

UNIX第6版カーネルを勉強していくための参考情報として、Cプログラムと、そこで読み込まれているHファイルの相関関係一覧表を作成しました。

ファイル名buf.hconf.hfile.hfilsys.hino.hinode.hparam.hproc.hreg.hseg.hsystm.htext.htty.huser.h
alloc.cbuf.hconf.hfilsys.hinode.hparam.hsystm.huser.h
bio.cbuf.hconf.hparam.hproc.hseg.hsystm.huser.h
cat.cparam.htty.huser.h
clock.cparam.hproc.hsystm.huser.h
dc.cconf.hparam.hproc.htty.huser.h
dh.cconf.hparam.hproc.htty.huser.h
dhdm.cconf.hparam.htty.h
dhfdm.cconf.htty.h
dn.cconf.hparam.huser.h
dp.cbuf.hconf.hparam.huser.h
fio.cconf.hfile.hfilsys.hinode.hparam.hreg.huser.h
hp.cbuf.hconf.hparam.huser.h
hs.cbuf.hconf.hparam.huser.h
ht.cbuf.hconf.hparam.huser.h
iget.cbuf.hconf.hfilsys.hinode.hparam.hsystm.huser.h
kl.cconf.hparam.hproc.htty.huser.h
lp.cconf.hparam.huser.h
main.cinode.hparam.hproc.hseg.hsystm.htext.huser.h
malloc.c
mem.cconf.hparam.hseg.huser.h
mkconf.c
nami.cbuf.hinode.hparam.hsystm.huser.h
partab.c
pc.cconf.hparam.huser.h
pipe.cfile.hinode.hparam.hreg.hsystm.huser.h
prf.cbuf.hconf.hparam.hseg.h
rdwri.cbuf.hconf.hinode.hparam.hsystm.huser.h
rf.cbuf.hconf.hparam.huser.h
rk.cbuf.hconf.hparam.huser.h
rp.cbuf.hconf.hparam.huser.h
sig.cinode.hparam.hproc.hreg.hsystm.huser.h
slp.cbuf.hfile.hinode.hparam.hproc.hsystm.htext.huser.h
subr.cbuf.hconf.hinode.hparam.hsystm.huser.h
sys.cconf.hparam.hproc.htty.huser.h
sys1.cbuf.hinode.hparam.hproc.hreg.hsystm.huser.h
sys2.cfile.hinode.hparam.hreg.hsystm.huser.h
sys3.cbuf.hconf.hfile.hfilsys.hinode.hparam.hreg.hsystm.huser.h
sys4.cinode.hparam.hproc.hreg.hsystm.huser.h
sysent.c
sysfix.c
tc.cbuf.hconf.hparam.huser.h
text.cinode.hparam.hproc.hsystm.htext.huser.h
tm.cbuf.hconf.hparam.huser.h
trap.cparam.hproc.hreg.hseg.hsystm.huser.h
tty.cconf.hfile.hinode.hparam.hproc.hreg.hsystm.htty.huser.h
vs.ctty.h
vt.cparam.huser.h

2016-01-14

UNIX V6ディスクイメージの相違点

SIMHのサイトにあるUNIX V6のディスクイメージの中のディレクトリ構造を「UNIX V6環境(uv6swre.zipを利用する場合)」で報告しましたが、テープアーカイブから作成したディスクイメージにおけるディレクトリ構造との相違点を調べてみました。

若干相違点がありますが、基本的に同じものだと思います。
  1. SIMH版には/usr/sysがない。
  2. SIMH版では/mntに置かれたファイルは、テープアーカイブ版では/usr/docにある。
  3. テープアーカイブ版には/mnt2と/usr2というディレクトリがない。
 最も重要な違いは、SIMH版にはカーネルのソースが含まれていないことです。カーネルのソースは/usr/sysにあり、その下にはconf、dmr、kenという3つのディレクトリがあります。UNIXの原作者であるKen ThompsonとDennis Ritchieのユーザ名のディレクトリがあることに、時代の息吹を感じて微笑ましく思います。

2016-01-13

UNIX V6環境(Unix-v6-Ken-Wellsch.tapを利用する場合)

PDP-11/40にUNIX第6版をインストールする手順は「SETTING UP UNIX - Sixth Edition」に記述されています。SIMHとUnix-v6-Ken-Wellsch.tapを使うと追体験することが出来ます。詳しい手順が「Installing Unix v6 (PDP-11) on SIMH」にあるので、これを参考にしながらインストールしてみます。

オリジナルのドキュメントが想定しているのはPDP-11/40にTU10テープドライブやRK05ディスクパックが接続されている環境のようです。まずはじめにおこなうのは、テープからコピー用ツールを起動させて、UNIXのバイナリをディスクに書き込むことです。このために以下に示すファイルを用意してSIMHを動かします。
set cpu 11/40
set tm0 locked
attach tm0 Unix-v6-Ken-Wellsch.tap
attach rk0 rk0
attach rk1 rk1
attach rk2 rk2
d cpu 100000 012700
d cpu 100002 172526
d cpu 100004 010040
d cpu 100006 012740
d cpu 100010 060003
d cpu 100012 000777
g 10000
0
100000番地から指定されているのが、コピー用ツールをテープからメモリに読み込むためのプログラムです。100002番地の172526というのは、TM11におけるmemory address (MTCMA)として割り当てられている772526番地のミラーとして参照できるようです。この数値を172524番地(byte record counter (MTBRC))に格納しています。8進数の172526は10進数なら62806で、512×123よりも僅かに小さな値です。読み込もうとしているツールはテープの先頭100ブロックに入っているので、123ブロックでは読み込み過ぎなのですが、少ないよりも多い分には構わないということなのでしょう。172526という数値を、アドレスとしても、読み込むバイト数としても利用しており、トリッキーと言えるかもしれません。

次に060003を172522番地(command (MTC))に入れて、無限ループに入ります。マニュアル「TM11 DECmagtape system (DEC-11-HTMAA-D-D)」の4-6頁にある「4.2.2 Command Register (MTC)」の説明によると、bit14(DEN 8)とbit13(DEN 5)の組み合わせでテープ密度を指定します。この場合は11なので「800 bits/inch, 9-channel tape」ということになります。bit3からbit1はFunction Bitsで、ここでは001なので「Read」を指定しています。そしてbit0はGOを指定するビットなので、指定された処理が開始されます。

TM10に繋がれたTU10はマニュアル「TU10 DECmagtape maintenance manual (EK-TU10-MM-007)」の「Table 1-2 TU10 DECmagtape Specification」によるとテープ速度は45 ipsだそうです。512バイトで123ブロックを読み込むためには、テープ密度が800 bpiなら78.72秒かかります。実際にはモーターが回りだしたり、テープをシークしたりして、数分間くらいかかったかもしれません。しかしSIMHは物理的な機械があるわけではないので、一瞬で処理が終わります。

無限ループしているプログラムをCtrl-Eで止めて、0番地からプログラムを動かすとコピー用ツールのプロンプトが現れます。オリジナルドキュメントではテープの100ブロック目から4000ブロック分に入っているUNIXバイナリを1ブロックと3999ブロックに分けてRK05にコピーしています。その手順を忠実に守っても良いでしょうし、いきなり4000ブロック分をコピーしても良いのではないかと思います。

次にディスクにコピーしたUNIXを起動して細々とした設定をおこないます。このために以下に示すファイルを用意してSIMHを動かします。
set cpu 11/40
set tm0 locked
attach tm0 Unix-v6-Ken-Wellsch.tap
attach rk0 rk0
attach rk1 rk1
attach rk2 rk2
d sr 173030
boot rk0
 ここでSIMHにはブート用のコマンドが用意されていますので、それを利用します。オリジナルのドキュメントには起動用のコマンドが指定されていますので、それを使っても構いません。ただし「d sr 173030」という指定の有無で起動した時の様子が変わります。

指定があれば、いきなりコマンド入力用のプロンプトが出ます。
PDP-11 simulator V3.9-0
Disabling XQ
@rkunix
mem = 1035
RESTRICTED RIGHTS

Use, duplication or disclosure is subject to
restrictions stated in Contract with Western
Electric Company, Inc.
#
指定しないと、ログインプロンプトが出ます。
PDP-11 simulator V3.9-0
Disabling XQ
@rkunix

login: root
#
「d sr 173030」というのが何をしているのか説明するドキュメントは見つかりませんでした。

この後の設定は細々としている作業が続くので、誤入力を防ぐために別に用意しておいたファイルから入力を与えるようにしました。ただし、コマンドによっては入力が受け付けられないことがあり、また文字をとりこぼすことがあったので、複数ファイルに分割しました。

オリジナルのドキュメントにあるように、UNIX V6は多くの種類のデバイスを制御できるドライバがついています。Lions本で勉強する分には次のデバイスがあれば十分なので、これを前提として環境を整えます。
  • RK05
  • TU10
  • DC11
  • LP11
設定作業に用いた入力ファイルの1番目の内容は次のとおりです。
: # Fixing the Terminal
stty -lcase
: # Rebuilding the kernel
chdir /usr/sys/conf
cc mkconf.c
mv a.out mkconf
: # ./mkconf
: # rk
: # tm
: # 8dc
: # lp
: # done
設定作業に用いた入力ファイルの2番目の内容は次のとおりです。
 : # Rebuilding the kernel
chdir /usr/sys/conf
as m40.s
mv a.out m40.o
cc -c c.c
as l.s
ld -x a.out m40.o c.o ../lib1 ../lib2
mv a.out /unix
ls -l /unix
: # building device files
/etc/mknod /dev/rk0 b 0 0
/etc/mknod /dev/rk1 b 0 1
/etc/mknod /dev/rk2 b 0 2
/etc/mknod /dev/rrk0 c 9 0
/etc/mknod /dev/rrk1 c 9 1
/etc/mknod /dev/rrk2 c 9 2
/etc/mknod /dev/mt0 b 3 0
/etc/mknod /dev/rmt0 c 12 0
/etc/mknod /dev/lp0 c 2 0
/etc/mknod /dev/tty0 c 3 1
/etc/mknod /dev/tty1 c 3 2
/etc/mknod /dev/tty2 c 3 3
/etc/mknod /dev/tty3 c 3 4
/etc/mknod /dev/tty4 c 3 5
/etc/mknod /dev/tty5 c 3 6
/etc/mknod /dev/tty6 c 3 7
chmod 640 /dev/*rk*
chmod 640 /dev/*mt*
: # Restoring the rest of the OS
dd if=/dev/mt0 of=/dev/rk1 count=4000 skip=4100
/etc/mount /dev/rk1 /usr/source
dd if=/dev/mt0 of=/dev/rk2 count=4000 skip=8100
mkdir /usr/doc
/etc/mount /dev/rk2 /usr/doc
設定作業に用いた入力ファイルの3番目の内容は次のとおりです。
 : # configure boot
echo /etc/mount /dev/rk1 /usr/source >> /etc/rc
echo /etc/mount /dev/rk2 /usr/doc >> /etc/rc
: # rebuild the df command
echo /rp0/d > /tmp/eddf.cmd
echo .-2a >> /tmp/eddf.cmd
echo \"/dev/rk0\", >> /tmp/eddf.cmd
echo \"/dev/rk1\", >> /tmp/eddf.cmd
echo . >> /tmp/eddf.cmd
echo w >> /tmp/eddf.cmd
echo q >> /tmp/eddf.cmd
chdir /usr/source/s1
cat /tmp/eddf.cmd | ed df.c
cc -s -O df.c
cp a.out /bin/df
rm a.out
: # check filesystems
icheck /dev/rrk0
dcheck /dev/rrk0
icheck /dev/rrk1
dcheck /dev/rrk1
icheck /dev/rrk2
dcheck /dev/rrk2
: # enable multiuser
echo 1,8s/\^0/1/p > /tmp/edttys.cmd
echo w >> /tmp/edttys.cmd
echo q >> /tmp/edttys.cmd
cat /tmp/edttys.cmd | ed /etc/ttys
: # reboot
sync
sync
sync
sync
以上で設定が終わったので、今後は以下に示すファイルを用意してSIMHを動かします。
set cpu 11/40
set cpu idle
;set tto 7b
;set tm0 locked
attach rk0 rk0
attach rk1 rk1
attach rk2 rk2
attach lpt lp11.out
set dci en
set dci lines=8
;set dco 7b
attach dci 5555
boot rk0
bye
上述した一連の手順のログは次のようになります。
C:\Users\FURUSAWA\Documents\PDPUNIX\Wellsch>..\pdp11 TapeBoot.cfg

PDP-11 simulator V3.9-0
Disabling XQ
RK: creating new file
RK: creating new file
RK: creating new file

Simulation stopped, PC: 100012 (BR 100012)
sim> g 0
=tmrk
disk offset
0
tape offset
100
count
1
=tmrk
disk offset
1
tape offset
101
count
3999
=
Simulation stopped, PC: 137274 (TSTB @#177560)
sim>
sim>
sim>
sim> bye
Goodbye

C:\Users\FURUSAWA\Documents\PDPUNIX\Wellsch>..\pdp11 DiskInstall.cfg

PDP-11 simulator V3.9-0
Disabling XQ
@rkunix
mem = 1035
RESTRICTED RIGHTS

Use, duplication or disclosure is subject to
restrictions stated in Contract with Western
Electric Company, Inc.
# : # FIXING THE TERMINAL
# STTY -LCASE
# : # Rebuilding the kernel
# chdir /usr/sys/conf
# cc mkconf.c
mv a.out mkconf
: # ./mkconf# #
# : # rk
# : # tm
# : # 8dc
# : # lp
# : # done
# ./mkconf
rk
tm
8dc
lp
done
# : # Rebuilding the kernel
# chdir /usr/sys/conf
# as m40.s
mv # a.out m40.o
# cc -c c.c
as # l.s
l# d -x a.out m40.o c.o ../lib1 ../lib2
mv a.ou# t /unix
# ls -l /unix
-rwxrwxrwx  1 root    29764 Oct 10 12:30 /unix
# : # building device files
# /etc/mknod /dev/rk0 b 0 0
# /etc/mknod /dev/rk1 b 0 1
# /etc/mknod /dev/rk2 b 0 2
# /etc/mknod /dev/rrk0 c 9 0
# /etc/mknod /dev/rrk1 c 9 1
# /etc/mknod /dev/rrk2 c 9 2
# /etc/mknod /dev/mt0 b 3 0
# /etc/mknod /dev/rmt0 c 12 0
# /etc/mknod /dev/lp0 c 2 0
# /etc/mknod /dev/tty0 c 3 1
# /etc/mknod /dev/tty1 c 3 2
/# etc/mknod /dev/tty2 c 3 3
# /etc/mknod /dev/tty3 c 3 4
# /etc/mknod /dev/tty4 c 3 5
# /etc/mknod /dev/tty5 c 3 6
# /etc/mknod /dev/tty6 c 3 7
# chmod 640 /dev/*rk*
# chmod 640 /dev/*mt*
# : # Restoring the rest of the OS
# dd if=/dev/mt0 of=/dev/rk1 count=4000 skip=4100
/etc/mount /dev/rk1 /usr/source
dd if=/dev/mt0 of=/dev/rk2 count=4000 skip=8100
mkdir /usr/doc
/etc/mount /dev/rk2 /usr/doc
4000+0 records in
4000+0 records out
# # 4000+0 records in
4000+0 records out
# # # : # configure boot
# echo /etc/mount /dev/rk1 /usr/source >> /etc/rc
# echo /etc/mount /dev/rk2 /usr/doc >> /etc/rc
# : # rebuild the df command
# echo /rp0/d > /tmp/eddf.cmd
# echo .-2a >> /tmp/eddf.cmd
# echo \"/dev/rk0\", >> /tmp/eddf.cmd
# echo \"/dev/rk1\", >> /tmp/eddf.cmd
# echo . >> /tmp/eddf.cmd
# echo w >> /tmp/eddf.cmd
# echo q >> /tmp/eddf.cmd
# chdir /usr/source/s1
# cat /tmp/eddf.cmd | ed df.c
1282
1293
# cc -s -O df.c
cp a.ou# t /bin/df
# rm a.out
# : # check filesystems
# icheck /dev/rrk0
/dev/rrk0:
dspcl      20
files    295
large     96
direc     25
indir     96
ucsed    2920
free     993
# heck /dev/rrk0
/dev/rrk0:
# icheck /dev/rrk1
/dev/rrk1:
dspcl       0
files    595
large     98c
direc     34
indir     98
used    2973
free     940
# heck /dev/rrk1
/dev/rrk1:
# icheck /dev/rrk2
/dev/rrk2:
dbad freeblock
missing 1499
spcl       0
files    337
large     69
direc     25
indir     69
used    2222
free     192
# check /dev/rrk2
/dev/rrk2:
# : # enable multiuser
# echo 1,8s/\^0/1/p > /tmp/edttys.cmd
# echo w >> /tmp/edttys.cmd
# echo q >> /tmp/edttys.cmd
# cat /tmp/edttys.cmd | ed /etc/ttys
112
170
112
# : # reboot
# sync
# sync
# sync
# sync
#
Simulation stopped, PC: 002502 (MOV (SP)+,177776)
sim> bye
Goodbye

C:\Users\FURUSAWA\Documents\PDPUNIX\Wellsch>..\pdp11 Wellsch.cfg

PDP-11 simulator V3.9-0
Disabling XQ
LPT: creating new file
Listening on port 5555 (socket 280)
@unix

login: root
# ls -l
total 246
drwxrwxr-x  2 bin      1104 May 14 00:47 bin
drwxrwxr-x  2 bin      1824 Oct 10 12:30 dev
drwxrwxr-x  2 bin       496 Oct 10 12:31 etc
-rwxrwxrwx  1 root    29074 Oct 10 12:28 hpunix
drwxrwxr-x  2 bin       464 May 13 23:35 lib
drwxrwxr-x  2 bin        32 May 13 20:01 mnt
-rwxrwxrwx  1 root    28836 Oct 10 12:22 rkunix
-rwxrwxrwx  1 root    29020 Oct 10 12:25 rpunix
drwxrwxrwx  2 bin       272 Oct 10 12:31 tmp
-rwxrwxrwx  1 root    29764 Oct 10 12:30 unix
drwxrwxr-x 15 bin       240 Oct 10 12:30 usr
# sync
# sync
# sync
# sync
#
Simulation stopped, PC: 003244 (SOB R1,3240)
Goodbye

C:\Users\FURUSAWA\Documents\PDPUNIX\Wellsch>

2016-01-07

UNIX V6環境(uv6swre.zipを利用する場合)

PDP-11エミュレータを使ってUNIX V6を動かしてみる方法は幾つかあります。「The Computer History Simulation Project」の「Software Kits to run on SIMH」にある「PDP-11 UNIX V6 with sources (under license provided by Caldera Corporation).」を使用して、UNIX V6環境を構築してみます。

uv6swre.zipに含まれるディスクイメージを取り出します。またPDP-11エミュレータの起動後におこなう初期手順をファイルにしておくと手間が省けると思います。これは以下のような内容ですが、CPUの指定を「11/45」とする人もいます。この違いがどのように影響するのかはわかりません。
set cpu 11/40
set cpu u18
att rk0 unix0_v6_rk.dsk
att rk1 unix1_v6_rk.dsk
att rk2 unix2_v6_rk.dsk
att rk3 unix3_v6_rk.dsk
boot rk0
bye
ファイルを用意せず手入力をしても構いません。「boot rk0」を実行すると「@」のプロンプトが出るので、「unix」と入力します。次に「login:」プロンプトが出ますから、「root」と入力します。ここでパスワードはありません。
PDP-11 simulator V3.9-0
Disabling XQ
@unix

login: root
# ls -l
total 182
drwxr-xr-x  2 bin      1040 Jan  1  1970 bin
drwxr-xr-x  2 bin       352 Jan  1  1970 dev
drwxr-xr-x  2 bin       304 Aug 20 12:27 etc
drwxr-xr-x  2 bin       336 Jan  1  1970 lib
drwxr-xr-x 17 bin       272 Jan  1  1970 mnt
drwxr-xr-x  2 bin        32 Jan  1  1970 mnt2
-rw-rw-rw-  1 root    28472 Aug 20 12:01 rkunix
-rwxr-xr-x  1 bin     28636 Aug 20 11:38 rkunix.40
drwxrwxrwx  2 bin       144 Aug 20 12:27 tmp
-rwxr-xr-x  1 bin     28472 Aug 20 12:01 unix
drwxr-xr-x 13 bin       224 Aug 20 12:22 usr
drwxr-xr-x  2 bin        32 Jan  1  1970 usr2
#
操作方法が今日の常識とは多少異なるところがあるので戸惑うかもしれません。ルートディレクトリ以下は、次に示すようなディレクトリ構造になっています。/mntの下にあるのはドキュメント類のようです。/usr/sourceの下にはコマンド等のソースがありますが、カーネルのソースは見当たりませんでした。

/bin
/dev
/etc
/lib
/mnt/as
/bc
/beg
/c
/ctut
/ed
/hel
/iolib
/iosys
/man/man0
/man1
/man2
/man3
/man4
/man5
/man6
/man7
/man8
/rat
/secur
/start
/unix
/yacc
/mnt2
/tmp
/usr/adm
/bin
/fort
/games
/ken
/lib/quiz
/lpd
/mdec
/pub
/source/as
/c
/cref/index
/src
/tab
/fort/f1
/f2
/f3
/f4
/fx
/io
/rt
/rt1
/rt2
/iolib
/m6
/mdec
/rat
/s1
/s2
/s3
/s4
/s5
/s7
/salloc
/sno
/tmg/tmgb
/yacc/lib
/source
/tmp
/usr2

2016-01-05

北海道新幹線開業による特例変更の発表

北海道新幹線の開業後おける「青春18きっぷ」や「北海道&東日本パス」の取り扱いについて発表があり、各種報道機関からも報道されています。

  1. 北海道新幹線開業に伴う「青春18きっぷ」などのおトクなきっぷのお取り扱いについて(平成28年1月5日 JRグループ)
  2. 北海道新幹線開業に伴うおトクなきっぷの設定および2016年3月ダイヤ改正に伴うおトクなきっぷの見直しについて(2016年1月5日 東日本旅客鉄道株式会社)
  3. 青春18きっぷの新幹線オプション券を発売、JR(2016年1月5日(火)18時43分 鉄道コム)
  4. 「青春18」で北海道新幹線 追加料金で一部乗車可能に(01/05 18:16、01/05 20:07 更新 北海道新聞)
  5. 青春18きっぷ、2016年も発売決定! "北海道新幹線オプション券"も新たに設定(2016/01/05 マイナビニュース)
北海道新幹線開業後もこれらの切符は継続されるようで安心しました。

JR東日本とJR北海道の管轄内で旅行する場合に「青春18きっぷ」を利用するか「北海道&東日本パス」を利用するかで、これまでも使い勝手がちがって いました。新幹線開業後も同様の相違があるようです。
  1. 「北海道&東日本パス」の方が安い。
  2. 「北海道&東日本パス」の方が有効期間が長い(ただし連続する7日間に限る)。
  3. 「北海道&東日本パス」なら「新青森~新函館北斗間相互発着の場合に限り、別に特定特急券を」買えば北海道新幹線が利用できる。
特に最後の件は、現在でも新青森~函館間相互発着の場合に限り自由席特急券を購入すればスーパー白鳥などに乗車できるので、これと同様のサービスが提供されるということだと思います。

年が明けたばかりで気が早いですが、次の年末年始が楽しみになってきました。

2016-01-04

札幌駅出発前の急行はまなす

札幌駅出発前の急行はまなすです。今春の北海道新幹線の函館開業をもって廃止されることが決まっていて、多くの人が撮影していました。
これまで年末年始には「北海道&東日本パス」を利用して北海道旅行をしていましたが、今後の青森函館間の移動手段がどうなるのか情報を待っています。

これまでは急行券を購入して急行はまなすを使うか、特急券を購入してスーパー白鳥などを利用していました。新幹線開業後は何か特例が設けられるのか、そもそもパスが廃止されてしまうのか、JRグループの発表が気になるところです。

旭川市内で見かけた建物

旭川市内で古い建物を見かけました。看板が無いので現在は使っていないのかもしれませんが、以前は何だったのでしょうか。戦後の建築には見えないので100年位前に建てられたのではないかと思います。とてもしっかりしていて、この建物が出来た頃のこの辺りはどのような街並みだったのかに思いを馳せると、興味が尽きません。

函館本線納内駅舎の時計台

函館本線の深川駅の隣にある納内駅には立派な時計台がありました。電車から外の景色を眺めていても、視線を上に向けないと気が付かないところでした。

2016-01-02

環状化された札幌市電

札幌市の市電が昨年末に環状化されたので見に行ってきました。一般に路面電車の軌道は道路の中央にあるのが普通ですが、ここでは乗降しやすくするため歩道側に寄せて建設されています。この考え方は納得できますし、実際に見ると乗り降りしやすそうです。

ただ運行状況を見ていると、交差点での交通信号制御が、歩行者用・車両用・電車用がうまくバランスしていないように感じました。不必要に長時間待たされているような印象を受けましたが、今後タイミングの調整がおこなわれるのでしょう。