dev tabの設定箇所
https://github.com/open-simh/simh/blob/348f5f294415202350a2fa80a839f3cd8e4a6e3f/PDP18B/pdp18b_cpu.c#L2273-L2285
dev_tab[dibp->dev + j]にdibp->dsp[j]を設定している(Code)
このdibpはdptr->ctxt(Code)
dev_tab[dptr->ctxt->dev + j] = dptr->ctxt->dsp[j]
そしてdptrはsim_devices[i](Code)
dev_tab[sim_devices[i]->ctxt->dev + j] = sim_devices[i]->ctxt->dsp[j]
ref. sim_devicesの定義箇所
sim_devices[]のdpy_dev(Code)について
dpy_devを定義しているのはここ
dpy_devはDEVICE型
DEVICE型はstruct DEVICEをtypedefしたもの
struct DEVICEの定義はここ
ctxtはstruct DEVICEの17番目のメンバー(Code)
dpy_devの17番目のメンバー(ctxt)はdpy_dib(Code)
dpy_dibの定義はここ
dpy_dibはDIB型
DIB型はtypedefされた構造体であり、その定義はここ
devはDIBの1番目のメンバー(Code)
dspはDIBの4番目のメンバー(Code)
dpy_dibの1番目のメンバー(dev)にはDEV_DPYという定数が設定されている(Code)
DEV_DPYは5(Code)
dpy_dibの4番目のメンバー(dsp)には{ &dpy05, &dpy06, &dpy07, &dpy10 }という4つの関数ポインタが設定されている(Code)
従って、sim_devices[i] = dpy_devの時、
sim_devices[i]->ctxt->dev = dpy_dev->ctxt->dev = 5
jの範囲は0から3
で、dev_tab[]としては、
dev_tab[5 + 0] = dev_tab[5] = dpy05関数
dev_tab[5 + 1] = dev_tab[6] = dpy06関数
dev_tab[5 + 2] = dev_tab[7] = dpy07関数
dev_tab[5 + 3] = dev_tab[8] = dpy10関数
となる
sim_devices[i] = tti_devの時、
tti_devの定義はここ
tti_dibの定義はここ
DEV_TTIは3(Code)
sim_devices[i]->ctxt->dev = dpy_dev->ctxt->dev = 3
jの範囲は0
で、dev_tab[]としては、
dev_tab[3 + 0] = dev_tab[3] = tti関数
tti関数の定義はここ