SlideShare a Scribd company logo
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

   これはごまよごし。

More Related Content

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