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

3,292 views

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,292
On SlideShare
0
From Embeds
0
Number of Embeds
46
Actions
Shares
0
Downloads
3
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

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

  1. 1. 2010.5.22(Sat) 於 長野市・もんぜんぷら座 8bit 時代のプログラミング 事情を訪ねて suno (すの)
  2. 2. ● 春原 宏保 (すのはら ひろやす) ● プログラマー (Win32/Web) ● 議事録係 http://d.hatena.ne.jp/suno88/ NHK 山口放送局長 春原秀一郎 (元ワシントン支局長)
  3. 3. 今回の NSEG 勉強会は JK がいない!
  4. 4. ↓ 平均年齢が高い!
  5. 5. そこで、ちょっとばかり 昔話でも……。
  6. 6. ~私のパソコン遍歴~ ● 1980 年 5 月 (今から 30 年前!) 松下電器 JR-100 ● RAM 16KB ● モノクロ画面 ● 英字は大文字のみ ● サウンドなし
  7. 7. ~私のパソコン遍歴~ ● 1981 年 日本電気 PC-6001 ● RAM 16KB ● 8 オクターブ 3 重和音 ● 128×192 ドット 4 色表示の グラフィック
  8. 8. すがやみつる氏(@msugaya)の著書 『こんにちはマイコン』でこの 世界に入った人、多数。
  9. 9. ~私のパソコン遍歴~ ● 1983 年 5 月 日電 PC-8001mk2 ● RAM 64KB ● 320×200 ドット 4 色表示の グラフィック ● 晴れてナイコン族 卒業!
  10. 10. PC-8001mk2 とは── ● 名機 PC-8001 の後継機種 ● Z80 4MHz ● PC-8001 の「N-BASIC」と PC-8001mk2 の「N80-BASIC」の 2 モード
  11. 11. PC-8001 は NHK テレビ「マイコン 入門」に「機種 X」として登場
  12. 12. 我が愛機 PC-8001mk2 の プログラミング環境は…… ● 電源を入れると BASIC 環境 (OS という概念はなし) ● 機械語(マシン語)も 16 進ダンプ 入力可能 (アセンブラはなし)
  13. 13. 1. メモリの制約がキツい
  14. 14. 電源投入直後の画面
  15. 15. ROM-BASIC ではフロッピー ディスクを使えない →フロッピー  ディスクを使うには  N80-Disk BASIC を  起動
  16. 16. N80-Disk BASIC 起動直後の画面
  17. 17. BEEP 音しか鳴らない P8mk2 に サウンドボードを挿す高校生の私 →サウンド拡張BASIC を  読み込まないと音が出ない
  18. 18. N80-Disk BASIC + サウンド拡張 BASIC で起動直後の状態
  19. 19. マルチステートメントを多用して メモリ節約 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
  20. 20. 無駄なコメントは書かない 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
  21. 21. 書かなくていいことは書かない 1050 LET MX=100 1060 IF A1=0 THEN GOTO 350 1050 MX=100 1060 IF A1=0 THEN 350
  22. 22. 余談ながら、マシン語でも…… LD A, 00H ; A <- 00H アセンブルすると「3E 00」の 2 バイト XOR A ; A <- A XOR A アセンブルすると「AF」の 1 バイト
  23. 23. 2. 言語の制約がキツい
  24. 24. N(80)-BASIC の制約 ● 変数名は 2 文字まで ● 構造化 BASIC が使えない ● while 文がなく、goto のみ
  25. 25. 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
  26. 26. 3. 実行速度がキツい
  27. 27. なんてったって BASIC ● 画面表示も遅い ● 8bit だしね!
  28. 28. 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 秒
  29. 29. 変数を整数型宣言して高速化 10 DEFINT A-G 以降、A~G で始まる変数は 整数型とみなされ、若干速くなる 10 DEFINT A-Z すべての変数を整数型とする (ゲームプログラミングでは定石)
  30. 30. 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
  31. 31. 結論 年は取りたくないねぇ……。 ……そうじゃなくて :-)
  32. 32. 当時のプログラミング環境 速度最優先・メモリ効率最優先 プログラマーの都合なんてお構いなし 機械に余裕がなかった 現在のプログラミング環境 読みやすさ優先・ライブラリー充実 富豪的プログラミング 真の問題解決に集中できる環境
  33. 33. プログラマーにとって いい時代になりました 青年よ、もっとプログラムを書こう!
  34. 34.  ところで、 30 年前(1980 年)の 5/22 は……
  35. 35. が生まれた日でもありますが……
  36. 36. 妻の生まれた日につき、 本日の懇親会は欠席させてください m(_ _)m ※今回の NSEG 勉強会は  JK がいないので、  無意味に JK 時代の  写真を貼ってみた。
  37. 37. お目汚し、失礼しました。 すの (春原 宏保) http://d.hatena.ne.jp/suno88/ http://twitter.com/suno88  これはごまよごし。

×