SlideShare uma empresa Scribd logo
1 de 37
Baixar para ler offline
2010.5.22(Sat) 於 長野市・もんぜんぷら座




8bit 時代のプログラミング
事情を訪ねて


                    suno (すの)
●
    春原 宏保 (すのはら ひろやす)
    ●   プログラマー (Win32/Web)
    ●   議事録係
        http://d.hatena.ne.jp/suno88/




                    NHK 山口放送局長 春原秀一郎
                        (元ワシントン支局長)
今回の NSEG 勉強会は
  JK がいない!
↓
平均年齢が高い!
そこで、ちょっとばかり
  昔話でも……。
~私のパソコン遍歴~
●
    1980 年 5 月
    (今から 30 年前!)
    松下電器 JR-100
    ●   RAM 16KB
    ●   モノクロ画面
    ●   英字は大文字のみ
    ●   サウンドなし
~私のパソコン遍歴~
●
    1981 年
    日本電気 PC-6001
    ●   RAM 16KB
    ●   8 オクターブ 3 重和音
    ●   128×192 ドット
        4 色表示の
        グラフィック
すがやみつる氏(@msugaya)の著書
『こんにちはマイコン』でこの
世界に入った人、多数。
~私のパソコン遍歴~
●
    1983 年 5 月
    日電 PC-8001mk2
    ●   RAM 64KB
    ●   320×200 ドット
        4 色表示の
        グラフィック
●
    晴れてナイコン族
    卒業!
PC-8001mk2 とは──
●
    名機 PC-8001 の後継機種
●   Z80 4MHz
●
    PC-8001 の「N-BASIC」と
    PC-8001mk2 の「N80-BASIC」の
    2 モード
PC-8001 は NHK テレビ「マイコン
入門」に「機種 X」として登場
我が愛機 PC-8001mk2 の
プログラミング環境は……
●
    電源を入れると BASIC 環境
    (OS という概念はなし)
●   機械語(マシン語)も 16 進ダンプ
    入力可能
    (アセンブラはなし)
1. メモリの制約がキツい
電源投入直後の画面
ROM-BASIC ではフロッピー
ディスクを使えない
→フロッピー
 ディスクを使うには
 N80-Disk BASIC を
 起動
N80-Disk BASIC 起動直後の画面
BEEP 音しか鳴らない P8mk2 に
サウンドボードを挿す高校生の私
→サウンド拡張BASIC を
 読み込まないと音が出ない
N80-Disk BASIC + サウンド拡張
BASIC で起動直後の状態
マルチステートメントを多用して
メモリ節約
10   WIDTH 40,25
20   CONSOLE 0,25,0,1
30   S=100
40   P1=3


10 WIDTH 40,25:CONSOLE 0,25,0,1:S=100:P1=3
無駄なコメントは書かない
100 REM ザヒョウケイノ ヘンスウヲ ショキカ
110 X1=0:X2=0:Y1=0:Y2=0:M=5



100 '
110 X1=0:X2=0:Y1=0:Y2=0:M=5
書かなくていいことは書かない
1050 LET MX=100
1060 IF A1=0 THEN GOTO 350



1050 MX=100
1060 IF A1=0 THEN 350
余談ながら、マシン語でも……
LD    A, 00H   ; A <- 00H

アセンブルすると「3E 00」の 2 バイト


XOR   A        ; A <- A XOR A

アセンブルすると「AF」の 1 バイト
2. 言語の制約がキツい
N(80)-BASIC の制約
●
    変数名は 2 文字まで
●   構造化 BASIC が使えない
    ●   while 文がなく、goto のみ
GOTO 文による制御構造
250 WHILE F3>0
260   IF X3>0 THEN Y3=-Y3
270   F3=F3-1
280 WEND
290 T1=0:T2=0


250   IF F3=0 THEN 290
260   IF X3>0 THEN Y3=-Y3
270   F3=F3-1
280   GOTO 250
290   T1=0:T2=0
3. 実行速度がキツい
なんてったって BASIC
●
    画面表示も遅い
●   8bit だしね!
DMA(Direct Memory Access) を止めて
実行速度アップ
10   OUT 104,0 ' DMA off
20   TIME$="00:00:00"
30   FOR I=1 To 5000
40   S=S+I
50   NEXT
60   WIDTH, ' DMA on
70   PRINT S
80   PRINT TIME$

実行結果……DMA off 17 秒、DMA on 22 秒
変数を整数型宣言して高速化
10 DEFINT A-G

以降、A~G で始まる変数は
整数型とみなされ、若干速くなる
10 DEFINT A-Z

すべての変数を整数型とする
(ゲームプログラミングでは定石)
IF 文を避けて高速化
500 P1=5
510 IF X1>0 THEN P1=P1+5
520 IF Y1>0 THEN P1=P1-3


500 P1=5+(X1>0)*-1+(Y1>0)*3

論理式が真の値は -1、偽の値は 0
結論



     年は取りたくないねぇ……。




         ……そうじゃなくて :-)
当時のプログラミング環境
速度最優先・メモリ効率最優先
プログラマーの都合なんてお構いなし
機械に余裕がなかった

   現在のプログラミング環境
  読みやすさ優先・ライブラリー充実
  富豪的プログラミング
  真の問題解決に集中できる環境
プログラマーにとって
いい時代になりました

青年よ、もっとプログラムを書こう!
 ところで、
30 年前(1980 年)の
 5/22 は……
が生まれた日でもありますが……
妻の生まれた日につき、
本日の懇親会は欠席させてください
m(_ _)m




          ※今回の NSEG 勉強会は
           JK がいないので、
           無意味に JK 時代の
           写真を貼ってみた。
お目汚し、失礼しました。


             すの (春原 宏保)
    http://d.hatena.ne.jp/suno88/
        http://twitter.com/suno88

   これはごまよごし。

Mais conteúdo relacionado

Mais procurados (6)

EE
EEEE
EE
 
Summercamp2020 group3
Summercamp2020 group3Summercamp2020 group3
Summercamp2020 group3
 
Presentation11
Presentation11Presentation11
Presentation11
 
1999年 最新バックアップ事情
1999年 最新バックアップ事情1999年 最新バックアップ事情
1999年 最新バックアップ事情
 
ゲーミングプラットホームのLutris
ゲーミングプラットホームのLutrisゲーミングプラットホームのLutris
ゲーミングプラットホームのLutris
 
YM2151でFM音源演奏
YM2151でFM音源演奏YM2151でFM音源演奏
YM2151でFM音源演奏
 

Destaque

CMSI計算科学技術特論A(10) 行列計算における高速アルゴリズム1
CMSI計算科学技術特論A(10) 行列計算における高速アルゴリズム1CMSI計算科学技術特論A(10) 行列計算における高速アルゴリズム1
CMSI計算科学技術特論A(10) 行列計算における高速アルゴリズム1
Computational Materials Science Initiative
 
CMSI計算科学技術特論A(11) 行列計算における高速アルゴリズム2
CMSI計算科学技術特論A(11) 行列計算における高速アルゴリズム2CMSI計算科学技術特論A(11) 行列計算における高速アルゴリズム2
CMSI計算科学技術特論A(11) 行列計算における高速アルゴリズム2
Computational Materials Science Initiative
 
RとPythonによるデータ解析入門
RとPythonによるデータ解析入門RとPythonによるデータ解析入門
RとPythonによるデータ解析入門
Atsushi Hayakawa
 

Destaque (10)

マイコンを語る
マイコンを語るマイコンを語る
マイコンを語る
 
通巻450号!日本最古のパソコン情報誌「I/O」編集長が語る、続くメディアとは
通巻450号!日本最古のパソコン情報誌「I/O」編集長が語る、続くメディアとは通巻450号!日本最古のパソコン情報誌「I/O」編集長が語る、続くメディアとは
通巻450号!日本最古のパソコン情報誌「I/O」編集長が語る、続くメディアとは
 
N88-BASIC Language
N88-BASIC LanguageN88-BASIC Language
N88-BASIC Language
 
世界最安値!? 鯖江産コンピューターIchigoJam 〜福井技術者の集い その2〜
世界最安値!? 鯖江産コンピューターIchigoJam 〜福井技術者の集い その2〜世界最安値!? 鯖江産コンピューターIchigoJam 〜福井技術者の集い その2〜
世界最安値!? 鯖江産コンピューターIchigoJam 〜福井技術者の集い その2〜
 
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
 
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
 

Semelhante a 8bit 時代のプログラミング事情を訪ねて

Windowsの節電 .NETラボ勉強会 2011/4/23
Windowsの節電 .NETラボ勉強会 2011/4/23Windowsの節電 .NETラボ勉強会 2011/4/23
Windowsの節電 .NETラボ勉強会 2011/4/23
Tomokazu Kizawa
 
hitach flora 220fx 9911
hitach flora 220fx 9911hitach flora 220fx 9911
hitach flora 220fx 9911
u_0
 
kagami_comput2015_5
kagami_comput2015_5kagami_comput2015_5
kagami_comput2015_5
swkagami
 

Semelhante a 8bit 時代のプログラミング事情を訪ねて (20)

ALGYAN 「俺の若けぇ頃はなぁ」とFM-7を語る 争奪、くたばっちまえ賞!老害エンジニアLT合戦!
ALGYAN 「俺の若けぇ頃はなぁ」とFM-7を語る 争奪、くたばっちまえ賞!老害エンジニアLT合戦!ALGYAN 「俺の若けぇ頃はなぁ」とFM-7を語る 争奪、くたばっちまえ賞!老害エンジニアLT合戦!
ALGYAN 「俺の若けぇ頃はなぁ」とFM-7を語る 争奪、くたばっちまえ賞!老害エンジニアLT合戦!
 
日本ゲーム産業史概説
日本ゲーム産業史概説日本ゲーム産業史概説
日本ゲーム産業史概説
 
Windowsの節電 .NETラボ勉強会 2011/4/23
Windowsの節電 .NETラボ勉強会 2011/4/23Windowsの節電 .NETラボ勉強会 2011/4/23
Windowsの節電 .NETラボ勉強会 2011/4/23
 
kagami_comput2016_05
kagami_comput2016_05kagami_comput2016_05
kagami_comput2016_05
 
日本ゲーム産業史(関西大学講演)Up用
日本ゲーム産業史(関西大学講演)Up用日本ゲーム産業史(関西大学講演)Up用
日本ゲーム産業史(関西大学講演)Up用
 
kagamicomput201705
kagamicomput201705kagamicomput201705
kagamicomput201705
 
The beginners guide of real-time audio processing (Part 1:Equalizer)
The beginners guide of real-time audio processing (Part 1:Equalizer)The beginners guide of real-time audio processing (Part 1:Equalizer)
The beginners guide of real-time audio processing (Part 1:Equalizer)
 
新型登場!! Surface Book 3 / Surface Go 2
新型登場!! Surface Book 3 / Surface Go 2新型登場!! Surface Book 3 / Surface Go 2
新型登場!! Surface Book 3 / Surface Go 2
 
NetBSD移植の昔話
NetBSD移植の昔話NetBSD移植の昔話
NetBSD移植の昔話
 
kagamicomput201805
kagamicomput201805kagamicomput201805
kagamicomput201805
 
第一部Twitterユーザーによる熊本市電車窓配信プロジェクトtwitrainの概要と実現に向けた取り組み
第一部Twitterユーザーによる熊本市電車窓配信プロジェクトtwitrainの概要と実現に向けた取り組み第一部Twitterユーザーによる熊本市電車窓配信プロジェクトtwitrainの概要と実現に向けた取り組み
第一部Twitterユーザーによる熊本市電車窓配信プロジェクトtwitrainの概要と実現に向けた取り組み
 
IoTLT 大阪 Vol.6
IoTLT 大阪 Vol.6IoTLT 大阪 Vol.6
IoTLT 大阪 Vol.6
 
SSHDノートPC高速化 / Let's note CF-S9
SSHDノートPC高速化 / Let's note CF-S9SSHDノートPC高速化 / Let's note CF-S9
SSHDノートPC高速化 / Let's note CF-S9
 
OSC 2012 Hokkaido でのプレゼン資料
OSC 2012 Hokkaido でのプレゼン資料OSC 2012 Hokkaido でのプレゼン資料
OSC 2012 Hokkaido でのプレゼン資料
 
RyzenでC2 JITと戯れる(JJUGナイトセミナー 2020年8月26日 発表資料)
RyzenでC2 JITと戯れる(JJUGナイトセミナー 2020年8月26日 発表資料)RyzenでC2 JITと戯れる(JJUGナイトセミナー 2020年8月26日 発表資料)
RyzenでC2 JITと戯れる(JJUGナイトセミナー 2020年8月26日 発表資料)
 
GR-CITRUS搭載のRubyファームウェアの説明
GR-CITRUS搭載のRubyファームウェアの説明GR-CITRUS搭載のRubyファームウェアの説明
GR-CITRUS搭載のRubyファームウェアの説明
 
俺おれ流、GR-SAKURA Pro Mini
俺おれ流、GR-SAKURA Pro Mini俺おれ流、GR-SAKURA Pro Mini
俺おれ流、GR-SAKURA Pro Mini
 
20120519_qpstudy 2012.05 いやらしい@hasegawのI/O入門
20120519_qpstudy 2012.05 いやらしい@hasegawのI/O入門20120519_qpstudy 2012.05 いやらしい@hasegawのI/O入門
20120519_qpstudy 2012.05 いやらしい@hasegawのI/O入門
 
hitach flora 220fx 9911
hitach flora 220fx 9911hitach flora 220fx 9911
hitach flora 220fx 9911
 
kagami_comput2015_5
kagami_comput2015_5kagami_comput2015_5
kagami_comput2015_5
 

Mais de suno88

ITでみんなを幸せに、ITで自分も幸せに
ITでみんなを幸せに、ITで自分も幸せにITでみんなを幸せに、ITで自分も幸せに
ITでみんなを幸せに、ITで自分も幸せに
suno88
 

Mais de suno88 (16)

もうひとつのアンチパターン OTLT、あるいは如何にして私はオレオレフレームワークを忌み嫌うようになったか
もうひとつのアンチパターン OTLT、あるいは如何にして私はオレオレフレームワークを忌み嫌うようになったかもうひとつのアンチパターン OTLT、あるいは如何にして私はオレオレフレームワークを忌み嫌うようになったか
もうひとつのアンチパターン OTLT、あるいは如何にして私はオレオレフレームワークを忌み嫌うようになったか
 
NSEG のこれまでとこれから
NSEG のこれまでとこれからNSEG のこれまでとこれから
NSEG のこれまでとこれから
 
AWS で社内オンライン勉強会
AWS で社内オンライン勉強会AWS で社内オンライン勉強会
AWS で社内オンライン勉強会
 
NetBeans、FuelPHP と過ごしたこの 2 ヶ月
NetBeans、FuelPHP と過ごしたこの 2 ヶ月NetBeans、FuelPHP と過ごしたこの 2 ヶ月
NetBeans、FuelPHP と過ごしたこの 2 ヶ月
 
HTML と CSS の社内勉強会を主催した話
HTML と CSS の社内勉強会を主催した話HTML と CSS の社内勉強会を主催した話
HTML と CSS の社内勉強会を主催した話
 
Javascript で暗号化
Javascript で暗号化Javascript で暗号化
Javascript で暗号化
 
初心者向け SQLite の始め方
初心者向け SQLite の始め方初心者向け SQLite の始め方
初心者向け SQLite の始め方
 
NSEG 勉強会 二周年に寄せて
NSEG 勉強会 二周年に寄せてNSEG 勉強会 二周年に寄せて
NSEG 勉強会 二周年に寄せて
 
続・ねえ、お父さんのお仕事ってなぁに?
続・ねえ、お父さんのお仕事ってなぁに?続・ねえ、お父さんのお仕事ってなぁに?
続・ねえ、お父さんのお仕事ってなぁに?
 
ねえ、お父さんのお仕事ってなぁに?
ねえ、お父さんのお仕事ってなぁに?ねえ、お父さんのお仕事ってなぁに?
ねえ、お父さんのお仕事ってなぁに?
 
Windows azure
Windows azureWindows azure
Windows azure
 
Cloud
CloudCloud
Cloud
 
「交通勉強会 ~Trafficonf ~」発足に寄せて
「交通勉強会 ~Trafficonf ~」発足に寄せて「交通勉強会 ~Trafficonf ~」発足に寄せて
「交通勉強会 ~Trafficonf ~」発足に寄せて
 
ソフトウェアエンジニアに必要な法律・契約のお話
ソフトウェアエンジニアに必要な法律・契約のお話ソフトウェアエンジニアに必要な法律・契約のお話
ソフトウェアエンジニアに必要な法律・契約のお話
 
山椒は小粒でぴりりと辛い
山椒は小粒でぴりりと辛い山椒は小粒でぴりりと辛い
山椒は小粒でぴりりと辛い
 
ITでみんなを幸せに、ITで自分も幸せに
ITでみんなを幸せに、ITで自分も幸せにITでみんなを幸せに、ITで自分も幸せに
ITでみんなを幸せに、ITで自分も幸せに
 

Último

Último (11)

論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 

8bit 時代のプログラミング事情を訪ねて