Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
ワープロって実は計算機で
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Chiharu Shirasaka
August 09, 2025
Programming
1.9k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ワープロって実は計算機で
Kernel/VM探検隊@東京 No18
Chiharu Shirasaka
August 09, 2025
More Decks by Chiharu Shirasaka
See All by Chiharu Shirasaka
ハンディターミナルでLinuxを動かしてみた
pepepper
1
1.8k
電子辞書は任意バイナリの夢を見るか? ver1.1
pepepper
0
420
電子辞書は任意バイナリの夢を見るか
pepepper
0
250
Other Decks in Programming
See All in Programming
すこし踏み込む CancellationToken
htkym
2
960
選挙速報を多くのユーザーへ 届ける Live Activities 設計
hamayokokuririn
0
160
iOS 27でニュースアプリはどう変わる!? 〜日経電子版の新機能対応と、開発事例から〜
lynnswap
4
12k
Building an Out-of-Order CPU
latte72
1
800
Vue Fes Japan 2026 タイムテーブル徹底解説
448jp
1
510
フロントエンドUIフレームワークのこれまでとこれから
ssssota
5
2.9k
『寄り添うラジオ』をAIで作る 体験価値から逆算した、会話しないUXと品質設計
theoriatec2024
3
190
Go × SIMDで高速化するベクトル検索 ~ルーフラインモデルでSIMDが効く境界を探れ! ~
po3rin
1
3.2k
動作中のプログラムの中身をリアルタイムに覗く / Realtime Debugger for CSharp with Roslyn
prota
1
1.1k
thread_parallel_with_free-threaded_Python_and_NumPy.pdf
riku_sakamoto
0
360
iOSDC2026登壇資料.pdf
riofujimon
0
180
モデルのリファクタリングが難しいと思ったら、そもそも複雑だったのはビジネス仕様だった ? / is-the-business-domain-the-real-complexity
hatsu38
0
390
Featured
See All Featured
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.3k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
200
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
370
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
240
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
50
10k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
1k
Music & Morning Musume
bryan
48
7.4k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.7k
Technical Leadership for Architectural Decision Making
baasie
3
580
How GitHub (no longer) Works
holman
316
150k
Transcript
ワープロって実は計算機で Kernel/VM探検隊@東京 No18 @pepepper_cpp
自己紹介 • やんごとなき方がお通いになられていることで話題の某大学の 修士2年 • 低レイヤのあたりで蠢いている • 変なものを計算機に仕立て上げるのが得意(?) – 電子辞書とか
ワープロてなんや • かつてコンピューターは日本語が不自由だった – かな漢字変換や日本語フォントて結構メモリ食う – しかも昔のパソコンは高え • 日本語を扱うことに特化した物体→ワードプロセッサー –
気持ち安いかな・・・?(OASYS LX-7500SD 23万円) • まあ末期の上位機種ではあるので高いのかも • コンピューターが強くなるに従ってワープロも機能が増える – 表計算 グラフィック インターネット・・・ – 最終的にコンピューターに吸われてワープロ専用機は姿を消した
今回の犠牲者 • 富士通製 OASYS LX-7500SD(1998年製)
何ができんねん • 告知ツイートから考える
ワープロのOS • ワープロモードとは別にMS-DOSモードがある – 理由は後述 – MS-DOSのバージョンは3.1くらい • 1.2MBフォーマットのDOSディスクにアクセス可能 –
任意のプログラムを実行可能(制約あり) • PC/AT互換機じゃないんで・・・ • ワープロ側含めシステムは基本的にROM内に存在 – 旧機種だと根幹部分を揮発性メモリに読んでたりする • のでシステムディスクがないと使い物にならなかった – の割に中古だとシステムディスク欠品が多い
ワープロのCPU • なんとAMD製 Am486(66MHz) – i486の互換品 – 過去機種だと VM Technology製
VM865C110HL • メモリは4MBくらいありそう? – 後の機種のLX-9500SDでは倍増 • プロテクテッドモードに入ってまともに使えるかは不明 – 使えたらコード書くの楽になるんだが・・・
ワープロのネットワーク・ブラウザ • なんとこの機種はモデム内蔵 – 33.6Kbpsまで • 後継機種だと56kに対応 • NiftyServe接続用「AutoCom」 –
このためにMS-DOSが搭載されている • Webブラウザもある – がHTTP/1.0にしか対応していない!!!! • 某芸能人のサイトは魔改造されたプロキシがないと見れない • 当然SSLにも対応していない – 後継機種だとSSLに対応しているらしい
ワープロのエディタ • 当然ワープロとしてのエディタもあるが・・・ • なぜかVectorにOASYS用Vz Editor差分が存在する – 実はとあるパソコンへの移植版の移植版であり・・・
ワープロのその他 • 実は画面タッチで操作可能! – これでお絵描きも可能 • 6色メガブラシ(?)できれいな虹もス〜イスイ(???) • ディスクドライブはスーパーディスク(LS-120) –
売れてなさすぎてメディアが高い! • プリンターもついている – インクリボンで普通紙に なしでも感熱紙に印刷可能 • PCMCIAのスロットがある – がデータ用SRAMカードとスマートメディア変換くらい? • フラッシュメモリ・ATAカードは使用不可らしい
ワープロの中身
ワープロの中身 • チップ数が思ったより少ない – うげ デカいゲートアレイが2つある • タイマーとか割り込みコントローラが多分まとめられている • どこのアドレスに何がいるのさ!
• 右下のROMがx86 リアルモードでアクセスできる容量を超えている – そもそもRAM 4MBも超えてる – 「何」が挟まっている? • MN89304って石は画面の方に線が行ってるっぽいぞ・・・ – データシート出ないんだけど! – 横には512KBのDRAMがいる
ワープロの画面IC • MN8930”4”は出ないがMN8930”2”とかは出る – 800x600で256色出せる液晶コントローラーらしい – “S”VGAだ!!! • “with IBM™
VGA-compatible registers“ – 拡張していないとは言っていない https://www.alldatasheet.jp/datasheet-pdf/view/14309/PANASONIC/MN89302.html
VGAとかSVGAとか • ここでのVGAは狭義のVGA – IBM社が開発したVideo Graphics Arrayというボード – 仕様が公開されている •
表示可能なグラフィックモード(の一部) – 640x480 16色/白黒 – 320x200 256色 • VGAを超える解像度・色数を扱えるものがSVGA(Super VGA) – 各社メーカーが勝手に拡張 • 拡張部分がバラバラの制御に – VGAが持っていたメモリウインドウ(128KB)に入り切らない • どうすんねん
当然解析に回されるが・・・ • 「機種によりBIOSに細かい差異があるが、おおよそFMR互換 であったので」(Wikipedia「OASYS」) – FMRは過去に富士通が販売していたパソコン – Vz Editorのバイナリを比較するとシステムコールが似ている –
BIOSを追えばIOアドレスも制御方法もわかるってわけ • 電子辞書の128倍楽(あっちはRAM 128MBなので) • FMRのシステムの情報ほとんどネットにないんだけど – FMRはビジネス向けの色が強かったとかなんとか • 富士通が別に販売していたFM-TOWNSもおおよそFMR互換 – こっちは情報が転がっている • がFM-TOWNS側に欲しい情報が書かれていない – 残るは「富士通FMRシリーズ徹底解析マニュアル」のみ
仕方がないので • 国会図書館に行きました – 2月だったので梅の花が咲いていた – 国立国会図書館内限定の資料なので行かざるを得ない • コンソールBIOSの情報をメモって帰る –
コンソールBIOSが画面制御を担っている • GhidraにDOSのメモリダンプを突っ込む – リアルモードの扱いが微妙なので 手作業でセグメントの参照を調整 • 変なレジスタアクセス見つけた! – FMRから拡張された部分のBIOSにあった
結局どういう仕組みだったか • まず512KBのVRAMを4つに分ける – これで1ウインドウあたりのサイズはVGAと同じに • でSequencer Register(IO 0x3C4)の0x8番レジスタに値を書く –
下位4bitが1だと640x480x256colorに 0だと白黒に – 上位4bitでメモリウインドウを選択 • でOASYSのチップセット側でメモリバンクを指定する (IO 0xFF0A) – 0x00でVRAMの下位64KB 0x40で上位64KBが見える
無事画面表示を掌握 • 技術書典でお品書き表示機にしていた – 前日に思いついて閉店直前のアキヨドで3万円のポータブル電源 を購入 – ウケは良かったのでヨシ! • ソフトウェア側での制御は6500SD〜9500SDまでたぶん共通
さて
30分枠を生やしておいて ここで終わるわけ ないよね?
ワープロって実は計算機で だからプレゼンとかできるよね? Kernel/VM探検隊@東京 No18 @pepepper_cpp ここより先 実装しながら書いているので言うことが右往左往します
最近の流行 • パソコン以外でプレゼンをするのが流行っているらしい – 「ルーターでプレゼンする」(puhitaku) • Okayama Revengers LT 大会
#2 でのプレゼン – 「電子辞書をネットに繋げてみた」(RasPython3) • Kernel/VM探検隊@関西 11回目 でのプレゼン • 十分な性能(とIO)のある計算機ならプレゼンが可能 – ところでワープロって • キーボードがある • 画面がある • ディスクドライブがある • i486がある • 行けるな • 実は前回のKernel/VM時点ではハンディターミナルでプレゼン するつもりだった
ワープロプレゼンの課題 • 画面はあるが画面外部出力はない – あったとして時代的にHDMIではない • フロッピーって遅い – 画面の生データで1枚あたり300KBくらい必要 –
一方フロッピードライブは500kbpsくらいらしい • シーク抜きで読み出しに5秒かかる計算 • そんなプレゼン見るのかったるいわ!
ワープロプレゼンの課題解決策 • 画面はあるが画面外部出力はない – あったとしてHDMIではない →FPGAに液晶の信号を食わせよう • フロッピーって遅い – 画面の生データで1枚あたり300KBくらい必要
– 一方フロッピードライブは500kbpsくらいらしい • シーク抜きで読み出しに5秒かかる計算 • そんなプレゼン見るのかったるいわ! →GIF形式にして適当に圧縮してもらおう
画面信号変換君(仮名)の設計 • 信号の情報のために再び液晶コントローラのデータシートへ – うわうわうわうわ • ピクセルデータがクロック間で泣き別れする – 3clk集めると8pixel分が揃う •
しかもDCLKが出ていないタイミングでV/HSYNCが変化する – なんかシフトレジスタで受けることを想定していそう – DCLK基準だけで動かせない
画面信号変換君(仮名)の設計2 • しかもなんか各色1bitしかない – 256/260K paletteとか言ってるのに • 画面を撮った動画を見るとチラついているような・・・ – もしかしてフレーム間でPWMして色を出している・・・?
• 皆さんの目を守りたい – 遅延のあるSTN液晶なら問題ないが現代の液晶では見える – 複数フレーム間のデータで平均を取る? 4bit per colorくらいで • しかしなんともメモリアクセスが間に合わない – アービトレーションむずい • ということで我慢してください – とはいえスライドは白黒なのであんまり気にならないかも
画面信号変換君(仮名)の設計3 • 画面コネクタのピンアサインを調べねば • オシロスコープで信号を見る – 多分一番速いやつがDCLK 次がHSYNC 次がVSYNC –
ランダムっぽいのがピクセルデータであろう • なんかVSYNCが73Hzくらいあるんですけど – フレームレートの差分を吸収しなければならない – 60Hzだったらそのまま流せたのに • 信号パターンだけじゃピクセルの信号のコネクタ上の並びが わからん – 一本ずつピクセルの線を抜く→色がおかしいラインが出る • このラインの左端からの位置と抜けた色成分から判定する
基板作る • 最初はスーパーディスクエミュレーターと一体で設計
基板作る • Kernel/VMに間に合わねえ! 画面部分だけで設計する – 7/22くらいに基板が届いた • OASYS側は5Vの信号で吐いてくる – バストランシーバーで3.3Vに落とす
– が ダンピング抵抗入れてなくてDCLKがリンギングで5Vに! – まあ過去に5V入れても動いてたのでヨシ! • 音をTMDSに流せるようにADCを配置 – しかしクロックが生成できなかったのでお蔵入り
FPGAのコードを書く • 1単位が3bit(1bit per color)というのは扱いづらい – パディングを入れて2^n bit単位に後段で拡張する • 愚直にやると初段の入力幅が1920bitとかになる
– GowinのFIFO IPは1024bit幅までしか作れない – クソデカreg+wireでFIFOに詰められる形にする • 落ちるFmaxとか足りないBRAMとかと格闘 – 気づけば前日 ←あまりにも大きすぎるregによって ありえない形になった Post Synthesis Netlist Viewer (90°回転)
ワープロのコードを書く • 前に作っておいた7500sd-imageshowを改修 • GIFの展開アルゴリズムを書いている余裕はない – gifdecを魔改造していい感じにしたかった • リニアではないメモリへの書き込みについて考えたくない •
画像先読みでお茶を濁す – 1スライドが5秒未満になることはそんなに無いだろう – ほぼすべてのコンベンショナルメモリを食いつぶすという問題 • EMM.SYSを使えば一応拡張メモリを使えるが・・・ – やっぱり食いつぶしたのでEMMを使う • EMM(Expanded Memory Manager)ってなぁに? – 本来DOS(リアルモード)は1MBのメモリ領域のみにアクセス可能 – 1MBの外のメモリを1MBの内側の領域に割り当てる • あら不思議 メモリがいっぱい使える(+7MBくらい) • あとはスライドショーっぽい感じの操作を実装するだけ
各種接続 • 一応変換器の出力を直接機器に繋ぐことはできる – よその機械に胡乱なもの繋げて破壊したくね〜〜〜〜 • 午後イチでやらかしたら怒られるで済まない • KOBA789氏からアリエクHDMIキャプチャを買い上げた –
パッと刺したら映るまでは行かないが設定すれば映る – 一度PCを経由しキャプチャした画面を流す • 高精細な画面とワープロの画面を突然行き来して 視聴者を怖がらせましょう! • なんとかなってよかった〜
各種解析情報 • OASYSに関する情報 – https://www.pepepper.net/oasys/ – 溜め込んで放置している情報も順次追記していきたい • スライド表示する君の改修元 –
https://github.com/pepepper/7500sd-imageshow