SlideShare a Scribd company logo
1 of 15
N88-BASIC
Language
Sunflat
自己紹介
• Twitter: @sunflat
• 仕事
• Sunflat GAMES: ゲーム開発
• Misoca: 請求書サービス開発
• ドラクエ10: 冒険者
N88-BASIC言語とは?
• 昔、NECのPC-88/PC-98シリーズに
搭載されていたプログラミング言語
• 25年ほど前(1991年〜)
EPSON製のPC-98互換機で
N88-BASICを使っていた
• 当時自分で書いたプログラムを
読み返してみよう!
EPSON PC-286C
• PC-98互換機
• CPU 80286 10MHz
• RAM 640KB
• FDD2基
• NECのPC-98より
だいぶ安かった
• 定価168,000円
• キーボード一体型
MSXっぽくて良い
ディスクのデータ吸出し
• エミュレータで実行させるため、
当時のFDのデータを吸い出した
• ノート型PC-98をヤフオクで落札
(2008年ごろ。3000円ぐらい)
• P.D.P.というツールで吸出し
http://d.hatena.ne.jp/sunflat/20081205
発掘されたプログラム例
• エミュレータ(T98-Next)で動作デモ
• 洞窟探検ゲーム(スペースキーで操作)
洞窟探検ゲームのプログラム
• 当時はYISoftと名乗っていた
謎1: ぎっしり詰まったコード
• Minifyした結果ではない
MSX-FANより
• MSX-FAN(雑誌)に掲載された1画面プログラム
などを打ち込んでプログラミングを覚えた
• 「長方形にぎっしり詰まったコード = 美しいコード」
という、歪んだ美意識が育まれた
謎2: 無意味なコード
• 変数名も適当(キーボード配置が近い3文字)
無意味なコードを除去後
• 動作は同じだが、長方形が崩れて美しくない
• 綺麗な長方形にするために、わざと
無意味なコードを追加したと思われる
謎3: 周辺チップへの直接アクセス
• OUT命令: グラフィックチップ(GDC)にアクセスして
映像を縦に拡大表示している(高速化のため)
• VOICE REG 命令: FM音源チップ(YM2608)に
アクセスして音を出している(詳細不明)
謎4: バイナリデータ列
機械語(マシン語)
自機の画像
パレット(色)
機械語の中身を解析
• Online Disassembler(Webサービス)
• i8086(16ビット)の機械語をアセンブリ言語に変換
VRAMのデータをスライドさせて、
画面を左スクロールしている
その他は、割と普通のコード
• 読みづらいけど
初期設定
データ読込
描画
自機移動
ゲームオーバー
まとめ
• 昔N88-BASICで書いたプログラムを
読んでみたが、解析が大変だった
• ぎっしり詰まったコードスタイル
• 高速化のため、一部が機械語
• ポート番号などを直接数値で記述
• 25年後に読んでも分かりやすい
ソースコードを書こう!

More Related Content

What's hot

"PC-9801-86 sound board on LUNA", at NBUG Meeting 2014-12
"PC-9801-86 sound board on LUNA", at NBUG Meeting 2014-12"PC-9801-86 sound board on LUNA", at NBUG Meeting 2014-12
"PC-9801-86 sound board on LUNA", at NBUG Meeting 2014-12Kenji Aoyama
 
Lispマシン ドキュメント和訳とか、 ちびLispとか
Lispマシン ドキュメント和訳とか、 ちびLispとかLispマシン ドキュメント和訳とか、 ちびLispとか
Lispマシン ドキュメント和訳とか、 ちびLispとかたけおか しょうぞう
 
ちょっと古いマシンにLinuxを
ちょっと古いマシンにLinuxをちょっと古いマシンにLinuxを
ちょっと古いマシンにLinuxをKenichiro MATOHARA
 
Summer camp2018 group2
Summer camp2018 group2Summer camp2018 group2
Summer camp2018 group2openrtm
 
1999年 最新バックアップ事情
1999年 最新バックアップ事情1999年 最新バックアップ事情
1999年 最新バックアップ事情Masatoshi Itoh
 
Pengenalan komputer
Pengenalan komputerPengenalan komputer
Pengenalan komputerAndryL2
 
Rsj2013 sekiyama 1
Rsj2013 sekiyama 1Rsj2013 sekiyama 1
Rsj2013 sekiyama 1openrtm
 
Lt大会資料 張田浩明
Lt大会資料 張田浩明Lt大会資料 張田浩明
Lt大会資料 張田浩明hharita
 
FirefoxOS を AndroidStick で動かしてみた(updated)
FirefoxOS を AndroidStick で動かしてみた(updated)FirefoxOS を AndroidStick で動かしてみた(updated)
FirefoxOS を AndroidStick で動かしてみた(updated)Kunihiko HAYASHI
 

What's hot (12)

お化け
お化けお化け
お化け
 
"PC-9801-86 sound board on LUNA", at NBUG Meeting 2014-12
"PC-9801-86 sound board on LUNA", at NBUG Meeting 2014-12"PC-9801-86 sound board on LUNA", at NBUG Meeting 2014-12
"PC-9801-86 sound board on LUNA", at NBUG Meeting 2014-12
 
Lispマシン ドキュメント和訳とか、 ちびLispとか
Lispマシン ドキュメント和訳とか、 ちびLispとかLispマシン ドキュメント和訳とか、 ちびLispとか
Lispマシン ドキュメント和訳とか、 ちびLispとか
 
ちょっと古いマシンにLinuxを
ちょっと古いマシンにLinuxをちょっと古いマシンにLinuxを
ちょっと古いマシンにLinuxを
 
20130216 workshop
20130216 workshop20130216 workshop
20130216 workshop
 
Summer camp2018 group2
Summer camp2018 group2Summer camp2018 group2
Summer camp2018 group2
 
1999年 最新バックアップ事情
1999年 最新バックアップ事情1999年 最新バックアップ事情
1999年 最新バックアップ事情
 
Pengenalan komputer
Pengenalan komputerPengenalan komputer
Pengenalan komputer
 
Rsj2013 sekiyama 1
Rsj2013 sekiyama 1Rsj2013 sekiyama 1
Rsj2013 sekiyama 1
 
Lt大会資料 張田浩明
Lt大会資料 張田浩明Lt大会資料 張田浩明
Lt大会資料 張田浩明
 
FirefoxOS を AndroidStick で動かしてみた(updated)
FirefoxOS を AndroidStick で動かしてみた(updated)FirefoxOS を AndroidStick で動かしてみた(updated)
FirefoxOS を AndroidStick で動かしてみた(updated)
 
計算機理論入門01
計算機理論入門01計算機理論入門01
計算機理論入門01
 

Viewers also liked

8bit 時代のプログラミング事情を訪ねて
8bit 時代のプログラミング事情を訪ねて8bit 時代のプログラミング事情を訪ねて
8bit 時代のプログラミング事情を訪ねてsuno88
 
CMSI計算科学技術特論A(10) 行列計算における高速アルゴリズム1
CMSI計算科学技術特論A(10) 行列計算における高速アルゴリズム1CMSI計算科学技術特論A(10) 行列計算における高速アルゴリズム1
CMSI計算科学技術特論A(10) 行列計算における高速アルゴリズム1Computational Materials Science Initiative
 
CMSI計算科学技術特論A(11) 行列計算における高速アルゴリズム2
CMSI計算科学技術特論A(11) 行列計算における高速アルゴリズム2CMSI計算科学技術特論A(11) 行列計算における高速アルゴリズム2
CMSI計算科学技術特論A(11) 行列計算における高速アルゴリズム2Computational Materials Science Initiative
 
世界最安値!? 鯖江産コンピューターIchigoJam 〜福井技術者の集い その2〜
世界最安値!? 鯖江産コンピューターIchigoJam 〜福井技術者の集い その2〜世界最安値!? 鯖江産コンピューターIchigoJam 〜福井技術者の集い その2〜
世界最安値!? 鯖江産コンピューターIchigoJam 〜福井技術者の集い その2〜Taisuke Fukuno
 
マイコンを語る
マイコンを語るマイコンを語る
マイコンを語るotmb
 
通巻450号!日本最古のパソコン情報誌「I/O」編集長が語る、続くメディアとは
通巻450号!日本最古のパソコン情報誌「I/O」編集長が語る、続くメディアとは通巻450号!日本最古のパソコン情報誌「I/O」編集長が語る、続くメディアとは
通巻450号!日本最古のパソコン情報誌「I/O」編集長が語る、続くメディアとはschoowebcampus
 
「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of Python「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of PythonTakanori Suzuki
 
RとPythonによるデータ解析入門
RとPythonによるデータ解析入門RとPythonによるデータ解析入門
RとPythonによるデータ解析入門Atsushi Hayakawa
 
野球Hack!~Pythonを用いたデータ分析と可視化 #pyconjp
野球Hack!~Pythonを用いたデータ分析と可視化 #pyconjp野球Hack!~Pythonを用いたデータ分析と可視化 #pyconjp
野球Hack!~Pythonを用いたデータ分析と可視化 #pyconjpShinichi Nakagawa
 

Viewers also liked (10)

8bit 時代のプログラミング事情を訪ねて
8bit 時代のプログラミング事情を訪ねて8bit 時代のプログラミング事情を訪ねて
8bit 時代のプログラミング事情を訪ねて
 
CMSI計算科学技術特論A(10) 行列計算における高速アルゴリズム1
CMSI計算科学技術特論A(10) 行列計算における高速アルゴリズム1CMSI計算科学技術特論A(10) 行列計算における高速アルゴリズム1
CMSI計算科学技術特論A(10) 行列計算における高速アルゴリズム1
 
CMSI計算科学技術特論A(11) 行列計算における高速アルゴリズム2
CMSI計算科学技術特論A(11) 行列計算における高速アルゴリズム2CMSI計算科学技術特論A(11) 行列計算における高速アルゴリズム2
CMSI計算科学技術特論A(11) 行列計算における高速アルゴリズム2
 
世界最安値!? 鯖江産コンピューターIchigoJam 〜福井技術者の集い その2〜
世界最安値!? 鯖江産コンピューターIchigoJam 〜福井技術者の集い その2〜世界最安値!? 鯖江産コンピューターIchigoJam 〜福井技術者の集い その2〜
世界最安値!? 鯖江産コンピューターIchigoJam 〜福井技術者の集い その2〜
 
マイコンを語る
マイコンを語るマイコンを語る
マイコンを語る
 
通巻450号!日本最古のパソコン情報誌「I/O」編集長が語る、続くメディアとは
通巻450号!日本最古のパソコン情報誌「I/O」編集長が語る、続くメディアとは通巻450号!日本最古のパソコン情報誌「I/O」編集長が語る、続くメディアとは
通巻450号!日本最古のパソコン情報誌「I/O」編集長が語る、続くメディアとは
 
Pythonで簡単ネットワーク分析
Pythonで簡単ネットワーク分析Pythonで簡単ネットワーク分析
Pythonで簡単ネットワーク分析
 
「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of Python「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of Python
 
RとPythonによるデータ解析入門
RとPythonによるデータ解析入門RとPythonによるデータ解析入門
RとPythonによるデータ解析入門
 
野球Hack!~Pythonを用いたデータ分析と可視化 #pyconjp
野球Hack!~Pythonを用いたデータ分析と可視化 #pyconjp野球Hack!~Pythonを用いたデータ分析と可視化 #pyconjp
野球Hack!~Pythonを用いたデータ分析と可視化 #pyconjp
 

Similar to N88-BASIC Language

LTで分かる!アセンブラ
LTで分かる!アセンブラLTで分かる!アセンブラ
LTで分かる!アセンブラToru Nayuki
 
Meltdown を正しく理解する
Meltdown を正しく理解するMeltdown を正しく理解する
Meltdown を正しく理解するNorimasa FUJITA
 
Azure PlayFab トレーニング資料
Azure PlayFab トレーニング資料Azure PlayFab トレーニング資料
Azure PlayFab トレーニング資料Daisuke Masubuchi
 
Unix architecture
Unix architectureUnix architecture
Unix architectureraw-hide
 
Ruby で高速なプログラムを書く
Ruby で高速なプログラムを書くRuby で高速なプログラムを書く
Ruby で高速なプログラムを書くmametter
 
NUCで始めるVMware Tanzu
NUCで始めるVMware TanzuNUCで始めるVMware Tanzu
NUCで始めるVMware TanzuHirotaka Sato
 
Topology Managerについて / Kubernetes Meetup Tokyo 50
Topology Managerについて / Kubernetes Meetup Tokyo 50Topology Managerについて / Kubernetes Meetup Tokyo 50
Topology Managerについて / Kubernetes Meetup Tokyo 50Preferred Networks
 
45分で理解する 最近のスパコン事情 斉藤之雄
45分で理解する 最近のスパコン事情 斉藤之雄45分で理解する 最近のスパコン事情 斉藤之雄
45分で理解する 最近のスパコン事情 斉藤之雄Yukio Saito
 
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021Preferred Networks
 
Craft CMSに最適なサーバはどんな環境?
Craft CMSに最適なサーバはどんな環境?Craft CMSに最適なサーバはどんな環境?
Craft CMSに最適なサーバはどんな環境?Kei Mikage
 
kagamicomput201705
kagamicomput201705kagamicomput201705
kagamicomput201705swkagami
 
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成Izumi Tsutsui
 
OSC名古屋2015をネタにLinuxユーザの マーケットリサーチを試してみた  Market Research about Linux users on...
OSC名古屋2015をネタにLinuxユーザの マーケットリサーチを試してみた  Market Research about Linux users on...OSC名古屋2015をネタにLinuxユーザの マーケットリサーチを試してみた  Market Research about Linux users on...
OSC名古屋2015をネタにLinuxユーザの マーケットリサーチを試してみた  Market Research about Linux users on...Netwalker lab kapper
 

Similar to N88-BASIC Language (15)

Dataflow140711-a@Kernel/VM北陸1
Dataflow140711-a@Kernel/VM北陸1Dataflow140711-a@Kernel/VM北陸1
Dataflow140711-a@Kernel/VM北陸1
 
Dataflow140711@Kernel/VM北陸1
Dataflow140711@Kernel/VM北陸1Dataflow140711@Kernel/VM北陸1
Dataflow140711@Kernel/VM北陸1
 
LTで分かる!アセンブラ
LTで分かる!アセンブラLTで分かる!アセンブラ
LTで分かる!アセンブラ
 
Meltdown を正しく理解する
Meltdown を正しく理解するMeltdown を正しく理解する
Meltdown を正しく理解する
 
Azure PlayFab トレーニング資料
Azure PlayFab トレーニング資料Azure PlayFab トレーニング資料
Azure PlayFab トレーニング資料
 
Unix architecture
Unix architectureUnix architecture
Unix architecture
 
Ruby で高速なプログラムを書く
Ruby で高速なプログラムを書くRuby で高速なプログラムを書く
Ruby で高速なプログラムを書く
 
NUCで始めるVMware Tanzu
NUCで始めるVMware TanzuNUCで始めるVMware Tanzu
NUCで始めるVMware Tanzu
 
Topology Managerについて / Kubernetes Meetup Tokyo 50
Topology Managerについて / Kubernetes Meetup Tokyo 50Topology Managerについて / Kubernetes Meetup Tokyo 50
Topology Managerについて / Kubernetes Meetup Tokyo 50
 
45分で理解する 最近のスパコン事情 斉藤之雄
45分で理解する 最近のスパコン事情 斉藤之雄45分で理解する 最近のスパコン事情 斉藤之雄
45分で理解する 最近のスパコン事情 斉藤之雄
 
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
 
Craft CMSに最適なサーバはどんな環境?
Craft CMSに最適なサーバはどんな環境?Craft CMSに最適なサーバはどんな環境?
Craft CMSに最適なサーバはどんな環境?
 
kagamicomput201705
kagamicomput201705kagamicomput201705
kagamicomput201705
 
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
 
OSC名古屋2015をネタにLinuxユーザの マーケットリサーチを試してみた  Market Research about Linux users on...
OSC名古屋2015をネタにLinuxユーザの マーケットリサーチを試してみた  Market Research about Linux users on...OSC名古屋2015をネタにLinuxユーザの マーケットリサーチを試してみた  Market Research about Linux users on...
OSC名古屋2015をネタにLinuxユーザの マーケットリサーチを試してみた  Market Research about Linux users on...
 

More from sunflat

2015年6月 sunflat開発履歴
2015年6月 sunflat開発履歴2015年6月 sunflat開発履歴
2015年6月 sunflat開発履歴sunflat
 
自作ゲーム配布方法の歴史
自作ゲーム配布方法の歴史自作ゲーム配布方法の歴史
自作ゲーム配布方法の歴史sunflat
 
MSX Language
MSX LanguageMSX Language
MSX Languagesunflat
 
Windows Phone
Windows PhoneWindows Phone
Windows Phonesunflat
 
LLNagoya Apple
LLNagoya AppleLLNagoya Apple
LLNagoya Applesunflat
 
第3話 「チートも、隠しクラスも、あるんだよ」
第3話 「チートも、隠しクラスも、あるんだよ」第3話 「チートも、隠しクラスも、あるんだよ」
第3話 「チートも、隠しクラスも、あるんだよ」sunflat
 
いにしえの開発環境
いにしえの開発環境いにしえの開発環境
いにしえの開発環境sunflat
 
端末IDとActivityの話
端末IDとActivityの話端末IDとActivityの話
端末IDとActivityの話sunflat
 
Amazon EC2 (Nagoya reject02)
Amazon EC2 (Nagoya reject02)Amazon EC2 (Nagoya reject02)
Amazon EC2 (Nagoya reject02)sunflat
 
iPhone and iPad Memory Management
iPhone and iPad Memory ManagementiPhone and iPad Memory Management
iPhone and iPad Memory Managementsunflat
 
AppStore Report 2009/03 by Sunflat
AppStore Report 2009/03 by SunflatAppStore Report 2009/03 by Sunflat
AppStore Report 2009/03 by Sunflatsunflat
 

More from sunflat (11)

2015年6月 sunflat開発履歴
2015年6月 sunflat開発履歴2015年6月 sunflat開発履歴
2015年6月 sunflat開発履歴
 
自作ゲーム配布方法の歴史
自作ゲーム配布方法の歴史自作ゲーム配布方法の歴史
自作ゲーム配布方法の歴史
 
MSX Language
MSX LanguageMSX Language
MSX Language
 
Windows Phone
Windows PhoneWindows Phone
Windows Phone
 
LLNagoya Apple
LLNagoya AppleLLNagoya Apple
LLNagoya Apple
 
第3話 「チートも、隠しクラスも、あるんだよ」
第3話 「チートも、隠しクラスも、あるんだよ」第3話 「チートも、隠しクラスも、あるんだよ」
第3話 「チートも、隠しクラスも、あるんだよ」
 
いにしえの開発環境
いにしえの開発環境いにしえの開発環境
いにしえの開発環境
 
端末IDとActivityの話
端末IDとActivityの話端末IDとActivityの話
端末IDとActivityの話
 
Amazon EC2 (Nagoya reject02)
Amazon EC2 (Nagoya reject02)Amazon EC2 (Nagoya reject02)
Amazon EC2 (Nagoya reject02)
 
iPhone and iPad Memory Management
iPhone and iPad Memory ManagementiPhone and iPad Memory Management
iPhone and iPad Memory Management
 
AppStore Report 2009/03 by Sunflat
AppStore Report 2009/03 by SunflatAppStore Report 2009/03 by Sunflat
AppStore Report 2009/03 by Sunflat
 

N88-BASIC Language