FC2ブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

HDDをSSDに交換した話

今から10年以上前のXP時代の化石以下のノートPC…
SHARP メビウスノートPC-GP2-D7EのHDDをSSDに交換してみた。

CrystalDiskMark 5.0.2の結果は以下のとおり。

HDD Hitachi DK23EA-40 4200rpm
HDD

SSD buffalo SHD-NH64PU2 
SSD

随分早くなりますねえ・・・SSD。ランダムは相当良くなってる。

規格がUltraATA/100なので、これくらいの数字がでてれば十分かな。





スポンサーサイト

CPU交換した話

今から10年以上前のXP時代の化石以下のノートPC…
SHARP メビウスノートPC-GP2-D7EのCPUをCeleron 2GHzからPentium4 2GHz(ともにNorthwood/FSB400)へ交換してみた。
クロック周波数も世代も同じ違うのはL2キャッシュが128Kから512Kになっただけ…
superπの104万桁ベンチマークは2分19秒から1分29秒と-35.9%と素敵な結果に。初代Atomと互角になったぞ!
セカンドキャッシュの効果スゲー☆
これであと10年はこのPC戦えるぞ!!


それにしても…Northwood Pentium4が2002年発売で初代Atomが2008年だから
当時の主要CPUが6年で最下層CPUと同等の速度に…
消費電力考えたら比較にならないし。
技術進化はすごいのう(´・ω・`)

魔法の言葉 N88BASIC

アダルトな卑猥な話題と愚痴と、昔話とN88BASICと…とりとめのないクソブログ。
それが俺。

さて、N88BASICの話ね。
N88BASICはダイレクトモードってのがあって、
これがPCを関数電卓代わりに使うのに都合が良かったわけ。
エクセルの数式バーみたいな。
PCを起動して
How many files(0-15)?にリターンキーを押すだけで
すぐに使えるの。起動も早いし…。

A=5
Ok
B=10
Ok
?A+B
15
Ok












BASICマジワカラン

PC88のN88BASICで遊ぼうと思って、
昔描いたコードを見てるんだけど、
コメントないし、あってもカタカナで読みにくい。
関数使えないからGOSUB RETURNが大量に出てくる。
でもジャンプ先がラベルなのが救いかな。

ライフゲームのコード見てるけど、遅すぎ。
8MHzだからなのかコードが下手だからなのか? 絶対に後者。

テトリスもどき作ったけど、
ブロックの落下速度が遅い。
ウェイトきったらコントロールできない。
描写に全部CPUとられる。

でも、未だにBASICのLINEとかCIRCLEでのお絵かきは楽しい。
WinのGDIだと手間かかりすぎる。

それから、88で夏帆ちゃんのJPEG画像を解凍できたら楽しそう。
でもFDが5インチ2Dの320KBだからすぐにいっぱいになるし、
本体RAM小さいから、解凍できても表示できないな。

久しぶりに

久しぶりにPC8801FEの電源入れた。
5インチFDD2台。TEAC製。
未だにFDD動く。凄い。

唯一もってるアプリ、P1(ピーワン)で作文した。
なんかキーの反応が悪い。
「か」が出ない。

次にBASICで遊ぶ。

N88BASIC世代ではないけど、
基本文法くらいなら。

MONコマンド使えんけどね。
マニュアルもないし。

BASICのいいところは、文字列が便利。
でも255文字までだけど。

あと配列は10まで勝手に用意してくれる。

DEFINT A-Zで高速化。
PUT KANJI(x,y)とかで漢字表示。でもグラフィック画面だから
CLS 1では消えない。

ここから本題

N88BASICでリセット

N88BASICではプログラム中でRUNコマンドをつかうことで、
リセットすることができた。
結構便利。

Cならargv[0]をsystem関数に渡せば良いのかな
#include <stdlib.h>

main(argc, argv)
??<
system(argv??(0??));
??>

使えん。







#include <stdio.h>
#define EN 0
#define JA 1

typedef struct {
int errno;
char *message;
} ERRORMASSAGE;

ERRORMASSAGE em[][2] = {
{0, "", 0, ""},
{1, "NEXT without FOR", 1, "FORなしでNEXT"},
{2, "Syntax error", 2, "構文エラー"},
{3, "RETURN without GOSUB",3, "GOSUBなしでRETURN"},
{4, "Out of DATA", 4, "DATA 文が少ない"},
{5, "Illegal function call", 5, "関数の呼び出しが正しくない"},
{6, "Overflow", 6, "オーバーフロー"},
{7, "Out of memory", 7, "メモリが足りません"},

};

main()
{
puts(em[1][JA].message);
puts(em[7][EN].message);
}

フリーソフトで儲ける(信者)

フリーソフトといえばVector。STLじゃないよ。 フリーソフト作ってる人は偽善野郎だ と2ちゃんねるで議論が起こっている。 偽善→善人を装うこと。 野郎→男性をさげすんだ表現。

N88BASICで遊ぶ その9

#include <windows.h>
#include <math.h>

class N88BASIC {
  private:
  HWND hWnd;
  HDC hDC, hMemDC;
  HBITMAP hBmp;
  HPEN hPen;
  HBRUSH hBrush;
  RECT rc;
  DWORD currentcolor;
  
  bool Copy(void);
  DWORD BasColor(int);
  
  public:
  N88BASIC(HWND);//コンストラクタ
  ~N88BASIC();//デストラクタ
  bool LINE(int, int, int, int);//線を引く
  bool PSET(int, int, int);//点を打つ
  bool PRESET(int, int);//点消し
  bool CIRCLE(int, int, int);//円を描く
  bool CLS(void);//画面消し
};

bool N88BASIC::Copy(void)
{
  if (hWnd == NULL) return false;
  BitBlt(hDC, 0, 0, rc.right, rc.bottom , hMemDC, 0, 0, SRCCOPY);
  return true;
}

DWORD N88BASIC::BasColor(int code)
{
  switch (code) {
    case 0:
    default:
      return RGB(0,0,0);
    case 1:
      return RGB(0,0,255);
    case 2:
      return RGB(255,0,0);
    case 3:
      return RGB(255,0,255);
    case 4:
      return RGB(0,255,0);
    case 5:
      return RGB(0,255,255);
    case 6:
      return RGB(255,255,0);
    case 7:
      return RGB(255,255,255);
  }
}


N88BASIC::N88BASIC(HWND hWnd)
{
  this->hWnd = hWnd;
  hDC = GetDC(hWnd);
  hMemDC = CreateCompatibleDC(hDC);
  GetClientRect(hWnd, &rc);
  hBmp = CreateCompatibleBitmap(hDC, rc.right, rc.bottom);
  currentcolor = BasColor(7);
  hPen = CreatePen(PS_SOLID, 1, currentcolor);
  hBrush = CreateSolidBrush(RGB(0,0,0));
  if (hBmp == NULL || hPen == NULL || hBrush == NULL) {
    hWnd = NULL;
    return ;
  }
  SelectObject(hMemDC, hPen);
  SelectObject(hMemDC, hBrush);
  SelectObject(hMemDC, hBmp);
}

N88BASIC::~N88BASIC()
{
  hWnd = NULL;
  ReleaseDC(hWnd, hDC);
  DeleteDC(hMemDC);
  DeleteObject(hPen);
  DeleteObject(hBrush);
  DeleteObject(hBmp);
}

bool N88BASIC::LINE(int sx, int sy, int ex, int ey)
{
  if (hWnd == NULL) return false;
  MoveToEx(hMemDC, sx, sy, NULL);
  LineTo(hMemDC, ex, ey);
  Copy();
  return true;
}

bool N88BASIC::PSET(int x, int y, int code)
{
  if (hWnd == NULL) return false;
  SetPixel(hMemDC, x, y, BasColor(code));
  Copy();
  return true;
}

bool N88BASIC::PRESET(int x, int y)
{
  if (hWnd == NULL) return false;
  SetPixel(hMemDC, x, y, BasColor(0));
  Copy();
  return true;
}

bool N88BASIC::CIRCLE(int xc, int yc, int r)
{
  int x, y;
  
  if (hWnd == NULL) return false;
  x = r;
  y = 0;
  while (x >= y) {
    SetPixel(hMemDC, xc + x, yc + y, currentcolor);
    SetPixel(hMemDC, xc + x, yc - y, currentcolor);
    SetPixel(hMemDC, xc - x, yc + y, currentcolor);
    SetPixel(hMemDC, xc - x, yc - y, currentcolor);
    SetPixel(hMemDC, xc + y, yc + x, currentcolor);
    SetPixel(hMemDC, xc + y, yc - x, currentcolor);
    SetPixel(hMemDC, xc - y, yc + x, currentcolor);
    SetPixel(hMemDC, xc - y, yc - x, currentcolor);
    
    if (( r -= (y++ << 1) -1) < 0)
      r += (x-- -1) << 1;
      
  }
  Copy();
  return true;
}

bool N88BASIC::CLS(void)
{
  if (hWnd == NULL) return false;
  FillRect(hMemDC, &rc, hBrush);
  Copy();
  return true;
}

//動作確認
#ifdef TEST
#include <stdio.h>
main()
{
  HWND hWnd = GetForegroundWindow();
  
  N88BASIC n88(hWnd);
  n88.LINE(0,0, 100,100);
  n88.CIRCLE(320, 200, 100);
  n88.LINE(220, 200, 420, 200);
  getchar();
  n88.CLS();
}

#endif

西部労働レストラン

太井君「いこうよ、西部労働レストランに」
細井君「いいよ、まずいもん」
細丼さん「いいよ、量もあって安いから」

太井君「
LOAD "2:FA.BAS"
LIST
(全部表示される前にすばやく)
DELETE 10-1000
SAVE "2:FA.BAS"
NEW
RUN
これでどうだ」




プロフィール

堀内@KB(平井公彦)

Author:堀内@KB(平井公彦)
詳細プロフ

Twitter→@rice_ja
↑名前が違いますが私です。

月別アーカイブ
ブログ内検索
最近の記事
最近のコメント
最近のトラックバック
カテゴリ
ランキング
恋愛テクニック
リンク
RSSフィード
FC2ブログランキング

FC2カウンター
アフィ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。