ブックマーク / vintagechips.wordpress.com (76)

  • SBC6809でBASICを動かしたいが、

    MC6809には面白いプログラムがたくさんあってどれかひとつ代表例を選ぶことができないから、SBC6809は書き込み済みROMを販売していない。個人的にはGrant’s 6-chip 6809 computerのBASICを移植したいと思っている。これはMicrosoft BASICをもとにして再現困難なハードウェア(カセットテープとかサウンドとか)の命令を取り去ったもので、機能的には申し分なく素晴らしい。課題は次の4点。 ・Grant’s 6-chip 6809 computerが間借りしているWebサイトはときどきsleepになり、それを避けたければ有料の契約をしろという。ただしsleepの状態はブラウザを再起動すると解除されるようだ。知らんけど。 ・Microsoft BASICを逆アセンブルして改造しており、Microsoftが怒るかもしれない。とはいえGrantが配布したソースを

    SBC6809でBASICを動かしたいが、
    zu2
    zu2 2024/06/04
  • 中間コード方式に変更

    BASICの文字で書かれたプログラムは、いつか、解釈して実行される。アセンブリ言語だと解釈したそばから必要なデータをレジスタにもって実行に移せるので、いつ解釈するかは問題でなく、プログラムを入力した時点で解釈して中間コードに変換するのは処理のムダである。C言語だと、関数が原則としてひとつのデータしか戻せないから、プログラムの解釈を数値で戻す必要があり、いずれにせよどこかで中間コードへ変換することになる。だったら、プログラムを中間コードで保存したほうが、リストのスペースを小さくできるという点で有利である。 中間コード方式に変更を試みると、リストへ保存するところまで、すぐに完成してしまった。ここまでは、作りかけの実行部分のもう出来上がっている関数だけで足りる。現状、中間コードはキーワードの配列の上から順に振っている。これは、あらためて実行部分を作ったときもっと合理的な振り方が見付かるかもしれな

    中間コード方式に変更
    zu2
    zu2 2024/05/20
  • FOR~NEXTを除いて完成

    FOR~NEXTはやっぱり難関。断片的な処理のしかたは思いつくものの全体の流れにつながらない。勢いだけでは完成しない。ということで、とりあえずINPUTを作る。INPUTもそれなりに大物だが、すでにある関数を組み合わせて何とかなった。おかげで数式を入力できる仕様が実現した。数値だけ受け付けるより、数式を受け付けるほうがすでにある関数を利用できるから短い記述ですむ。これでFOR~NEXTを残して完成ということになる。現状でも変数とIFとGOTOでFOR~NEXTと同じ動作ができる。これがFOR~NEXTの完成に結び付くかもしれない。 見通しをよくしてFOR~NEXTに集中するため、デバッグ用の関数を外して動作確認。ときどきヘンな動作をすると思ったら少なめに設定しておいたリストの保存領域がオーバーフローしている。あらためて中間コード方式がさほど効率的でないことを思い知る。最悪なのがキーワードの

    FOR~NEXTを除いて完成
    zu2
    zu2 2024/05/20
  • 中間コードが効率的というのは幻想

    中間コードの利点の一つはプログラムのサイズが小さくなってリストのスペースを節約できることだといわれる。これは実際のところ幻想である。確かにPRINTやINPUTなどのキーワードは1バイトの値になるから大幅に小さくできる。しかし、通常、キーワードは1行にひとつしかなくてあとは変数や数値である。変数は文字列だと1バイトなのに中間コードは変数を示す1バイトと変数を区別する1バイトの計2バイト。数値は数値を示す1バイトと値のバイナリ2バイトの計3バイトで、99以下は文字列のほうが小さい。しかもプログラムによく登場する数値はだいたい99以下だ。 まあそんな事情でテスト用のプログラムを数えてみたところ文字列よりかえって大きくなっている。たとえば「10 A=1」の6文字で11バイトを要す。実用的な処理を記述すれば(TinyBASICでそんなものが作れると仮定して)それなりの効果があるのかもしれないが、実

    中間コードが効率的というのは幻想
    zu2
    zu2 2024/05/20
  • 6800と6850を買う

    68系のTiny BASICはロバート・ユイティリクのMicro BASICが有名。わざわざ有名だと説明したらそれほど有名じゃないといっているようなものだけれど、たとえばトム・ピットマンのTiny BASICよりは知っている人が多いと思う。Micro BASICはRobert Uiterwyk’s Micro Basicでアセンブリ言語のソースが公開されている。アークピットのフリーのクロスアセンブラX6801にかけると1箇所エラーが発生。ソースのラベルが間違っている。OCRの読み取りミスらしい。修正してアセンブル成功。あとは先頭にMikbugを付けてやれば完成する。でも、これが走るコンピュータをもっていない。 6800のコンピュータというものが切実になってきたので、とりあえず部品だけ用意しておく。HD468A00Pが新品で472円、HD63A50Pが新品で630円。一般論をいうと価格が下が

    6800と6850を買う
    zu2
    zu2 2024/05/20
  • 命名-豊四季タイニーBASIC

    TinyBASICはピープルズコンピュータカンパニー(会社ではない)のデニス・アリソンが示した設計指針にしたがいアメリカ各地のホビイストたちが作ったBASICの総称。モノによって言語仕様が微妙に違うので、これを方言ということにして、先頭に開発者が住む都市の名前が付く。発表された順に、テキサス版、デンバー版、パロアルト版という具合。テキサス版は物の方言と同様に(CCRの歌でしか知らないけれど)訛が強すぎる。そこへいくとパロアルト版はクールで共通語に近い。 日でTinyBASICが東大版とか電大版とか呼ばれているは、家の流儀に照らして正しい命名ではない。しかし、東大も電大も東京だからしかたがない(そのうえ東京版というのがあるらしい)。コンピュータに関心をもつ人が狭い範囲に集中しがちな日では「市」のひとつ下の名前を付けるのが現実的だと思う。このルールでぼくのBASICに名前を付けると豊四

    命名-豊四季タイニーBASIC
    zu2
    zu2 2024/05/16
  • TinyBASICをCで書き直す

    ぼくはCPUの動く姿を見るのがとても楽しくて、それが何の役に立つかはまったく関心がない。関心がなくても想定くらいはないと設計ができないから、仮の目標としてBASICを動かすことにしている。BASICはインタプリタ型のプログラミング言語で、いまどきの感覚でいうとスクリプトの実行環境になる。つまり、BASICが動いたからといってそれだけでは何の役にも立たないのだが、2、3の文言でCPUの動く姿を見られるし、頑張ればある程度は役に立つ働きをする。ぼくの趣味趣味でない範囲の境界にあって、ここまでなら妥協できる。1970年代のパソコンがBASICを搭載していたこともそんな理由だと思う。 とっかかりにちょうどいいのはドクタードブズジャーナルの1976年5月号(バグあり)と6月号(バグ修正済み)に掲載されたパロアルト版Tiny BASICで、8080のアセンブリ言語で書かれたソースが出回っている。日

    TinyBASICをCで書き直す
    zu2
    zu2 2024/05/16
  • 秋月のAKI-80が復活!

    秋月電子通商が往年の大人気商品AKI-80を少量だけ再生産した。今度のやつは水晶振動子などの一般部品を別売りにして価格が1000円。元祖AKI-80は周波数がぶっ飛びすぎていて(12.288MHz)応用回路を作りにくかったから水晶振動子を選べるのはむしろ好都合。在庫状況がAAA(4か月分)だが実数はたった60台だから、案外、すぐ売れちゃうんじゃないか。[2017.1.31追記]日改めて確認したところ在庫実数が1691枚に増えてました。 下の写真はボクが所有している元祖AKI-80。CPUは東芝のTMPZ84C015で、中にZ80、SIO(シリアルインタフェース)、PIO(パラレルインタフェース)、CTC(カウンタ)、クロックジェネレータなど一式が集積されている。Z80ファミリーの見みたいな構成になっていて、割り込みの動作やDRAMの接続をテストするのに重宝した。 この投稿を読んだ時点で

    秋月のAKI-80が復活!
    zu2
    zu2 2024/03/17
  • SBC6800暫定版お披露目

    6800が動く世界最小のシングルボードコンピュータSBC6800はもうとっくに完成しているが、プリント基板にちょこちょこ改良したいところが見付かって公開が先延ばしになっている。このままだと永遠に公開できないので、完成している証拠として、とりあえず現状のデータ一式を公開する。これで今すぐ下に示すコンピュータが出来上がる。でも、もう少し待ってくれたらもっといいデータをドキュメント付きで公開できると思う。 関心がある人はデータ一式をこちらのOneDriveからダウンロードしていただきたい。SBC6800R3.zipはスイッチサイエンスに直接アップロードできるガーバーデータ。mc6800crgen.X.zipはPIC12F1822をクロックジェネレータにするプロジェクト。同じくosc1536.X.zipはボーレートジェネレータのプロジェクト。いま取り組んでいる改良はROMを2716から27256ま

    SBC6800暫定版お披露目
    zu2
    zu2 2024/02/28
  • LCDを68系CPU直結で動かした

    パラレルのLCD(液晶表示器)は現在だともっぱらマイコンの汎用ポートで制御されるから、どうかすると「訳のわからん独自インタフェース」なんて説明される。なに言ってくれちゃってんだろうね。当のところあれは68系バスで、実際、68系CPUだと直結して動かすことができる。はい、やって見せましょうってことで作った拡張基板を下に示す。 LCDにはCS(チップセレクト)がなくてEで兼用することになっている。そのためCSとEのANDをとってLCDのEへ入れる。その部分にちょっとしたロジックが必要で、うるさくいえばEが直結でない。あとは疑いようのない直結。LCDまわりの回路を下に示す。CSとEのANDをとるロジックは、拡張基板だと7400のNANDを3個使って構成している。 68系CPUの代表格はMC6800で、それを載せたSBC6800が手もとに売るほどあるが、困ったことにバスが外部へ出ていない。接続し

    LCDを68系CPU直結で動かした
    zu2
    zu2 2023/05/02
    “パラレルのLCD(液晶表示器)は" "本当のところあれは68系バスで、実際、68系CPUだと直結して動かすことができる”
  • 最少部品オシロ公開版

    最少部品オシロは最少限の平凡な部品だけで構成したオシロスコープ。測定器の王者オシロスコープもボクが作ればこんな感じだぜって見せびらかすことが目的で、当初、プリント基板の頒布までは検討していなかった。しかし、オレンジピコショップさんが電子工作の入門キットを企画してくれたので、ありがたく乗っかって、ここに発表する次第。 最少部品オシロは信号の波形を表示することに全力を注いでいて機能や使い勝手は二の次。信号は0V~5Vの範囲で振れる必要があるし、各種入出力端子がファームウェアの書き込みを兼用しており、凄く不便。電子工作の入門キットとしてはいかがなものかと考え、もうひとつ、これらの問題をまとめて解決する開発・調整用発振器を作った。 開発・調整用発振器は最少部品オシロに対して電源を供給するとともに0V~5Vの範囲で振れる三角波または方形波を出力する。だから、純正の書き込み装置Snapを直結してファー

    最少部品オシロ公開版
    zu2
    zu2 2023/02/10
  • パロアルト版TinyBASICの文法

    パロアルト版TinyBASICのアセンブリ言語のソースはインターネットを検索するとあちこちで配布されていて、なぜか少しずつ内容が違う。物がどういう動きをするか知りたいが、どれが物なのかわからない。Ron’s BASIC Programming and ChipmunkBasic Home Page というウェブサイトで配布しているソースにリ・チン・ワンの記述の痕跡があって、一瞬、物かと思ったが、フロッピーディスクを操作できるなどけっこうまともな機能をもっていてガッカリした。そんなわけで、パロアルト版TinyBASICの機能をまねるとはいったものの、実際は東大版TinyBASICをまねる。こういう状況だと、東大版TinyBASICの機能がパロアルト版TinyBASICにいちばん近いと思われる。 現時点で1行入力と先頭が行番号だったときのリストへの保存とLISTコマンドによるリストの表示

    パロアルト版TinyBASICの文法
    zu2
    zu2 2022/11/24
  • EMU68k8の成果

    往年のCPUをPICひとつで動かす試みは、Z80のEMUZ80が思いのほかうまくいったから、引き続きMC68008のEMU68k8に着手。データシートを見る限り制御はMC68008のほうが簡単。タイミングの制約が緩く、PICをマイペースで動かせる。試作機は、EMUZ80からZ80を取り外し、ジャンパー線でブレボのMC68008へつないで、たちまち完成。 この種の制御は、PICが面倒な処理をする間、CPUをうまく待たせられるかどうかが成否のカギを握る。Z80を始めとするほとんどのCPUは限られた時間のうちに待ち信号を送らなければならない。そこへいくとMC68008は、何もしなければ待ちに入り、抜けていいときDTACKを送る仕組み。こういっちゃあナンだけど、楽勝だわ。 試作機でHELLO, WORLDが動き、やや不安定だったんだけど、えいやっとプリント基板を作った。いやちゃんと確認しなきゃダメ

    EMU68k8の成果
    zu2
    zu2 2022/10/23
    “往年のCPUをPICひとつで動かす試み”
  • 最少部品オシロの雑な説明

    アナログのオシロは高級な部品と高度な技術を詰め込んだ芸術作品だよね。デジタルはもっと凄いんだろうなと思ったら逆にシンプル、仕組みがぜんぜん違って、いわば手抜きのし放題。そういうの得意なんだよね。てことで、なるべく少数の安価な部品で作ったオシロがこれ。曲がりなりにも信号の波形を表示したから、取り急ぎ雑な説明で公開する。 回路はこんな感じ。概略、マイコン(PIC16F18313)にOLED(製品名不詳)をつないただけ。マイコンにファームを書き込む端子が完成後は電源と信号の入力端子になる。信号はマイコンがAD変換器でスイープする。こんな仕組みなので信号はGND~5Vの範囲で振れなければならない。そうでない信号は、外部に差動増幅とかが必要になる。 回路図のピン配置はたいがい実物と違うもんだが、シンボルを妙に生々しく描いちゃったので、間違える人がいるかもしれない。念のために実体配線図を追加しておこう

    最少部品オシロの雑な説明
    zu2
    zu2 2022/08/12
    “アナログのオシロは高級な部品と高度な技術を詰め込んだ芸術作品だよね。デジタルはもっと凄いんだろうなと思ったら逆にシンプル、仕組みがぜんぜん違って、いわば手抜きのし放題”
  • EMUZ80が完成

    Z80とPIC18F47Q43で動く挑戦的なコンピュータEMUZ80が完成した。設計の目標は、できるだけ少数の安価な部品と簡素なソフトウェアで動かすこと。CPU以外のICが1個だけなので部品はもう減らない。Z80はジャンクが格安だしPIC18F47Q43も40ピンで最低の価格帯。ソフトウェアはあとでどうにかする、ってことで目標は完全に達成された。 納得のいく設計ができて試作機がうまく動いたらプリント基板を頒布してお祭り騒ぎをするのが恒例だ。その先に起きるかもしれない、ふたつの出来事に、いま期待を膨らませている。第1に、噂話でZ80を知っている人が実物を動かす面白さも知ってくれること。第2に、どこからか凄腕の週末プログラマが現れてソフトウェアを改善してくれること。 EMUZ80技術資料-emuz80_techdata.pdf(3.7Mバイト) 関連ファイル-https://github.co

    EMUZ80が完成
    zu2
    zu2 2022/03/12
    “設計の目標は、できるだけ少数の安価な部品と簡素なソフトウェアで動かすこと。CPU以外のICが1個だけなので部品はもう減らない。Z80はジャンクが格安だしPIC18F47Q43も40ピンで最低の価格帯”
  • CP/Mega88 on Picoを動かした

    Norihiro Kumagaiさんが開発したCP/Mega88 on Picoは超シンプルなCP/Mマシン。どのくらいシンプルかっていうのが下の写真。まんまRaspberry pi Pico(以下Pico)だから、もはや電子工作ですらない。ボクは過去に何回かCP/Mマシンを作ろうとして挫折しているが、さすがにこれは失敗しない。簡単に動いてくれたので、ここに過程をまとめておく。 CP/Mega88 on Picoを作る流れは、概略、GithubプロジェクトをクローニングしてPicoの開発環境でビルドする。公式な説明は開発環境をUbuntu20に構築しているが、ボクは初代Raspberry Piに構築した。Raspberry Pi OSであればシェルスクリプト1発で開発環境が出来上がる(Getting started with Raspberry Pi Pico参照)。まあ4時間ほどかかる

    CP/Mega88 on Picoを動かした
    zu2
    zu2 2022/01/24
  • PIC18F47Q43のUARTで悩む

    PIC18F47Q43をZ80につないでIC2個のみのコンピュータを作ろうと考えている。PICはZ80に対し、NCOでクロックを生成、ポートでリセットして起動、Z80からアクセスが来たらCLCでウェイトを出しておいてベクタ割り込みでメモリやUARTの働きをする。UARTを除くモジュールの雑なテストはすでに成功。ところが、ちょろいと思ったUARTがダメ。PICで普通に動かしてみるだけの試みがいまだ成功していない。 UARTのテストは慣例にしたがい端末にハローワールドを表示したあと入力のエコーバックをやってみるやつ。ハローワールドは成功。しかし入力のエコーバックができない。見てもしかたがないと思うが、いちおうスクショを貼っておく。受信ピンは製造元推奨のRA7、初期設定から受信までマニュアルどおりの手順。不幸中の幸いで送信はできるからあちこちのフラグを表示してみたら入力をしても受信可フラグが立た

    PIC18F47Q43のUARTで悩む
    zu2
    zu2 2022/01/13
  • SBC6809Eが完成

    [2022/2/2追記] MC6883は高速モードだとDRAMのリフレッシュをしないようなのでEPROMには標準モードまたはマップタイプ#0アドレス依存モードのBASICを書き込んでください。その際EPROMにはBASICの先頭アドレスが$E000となるように書き込みます(SBC6809と同じ)。 レトロCPUがまだレトロではなかったころMC6809EとMC6883を入手した知人が自作のコンピュータを見せびらかしに来て以来ボクはずっとそれらに憧れがあった。MC6809Eは比較的入手しやすい。MC6883は少なくとも国内だと入手困難。何かの機会にそんな話をしたところRetro PC Galleryを運営するはせりんさんが手持ちのMC6883をプレゼントしてくださった。おかげで下のようなコンピュータを完成できたから情報をまとめておく。 SBC6809E全回路図(PDF)-SBC6809E_sc

    SBC6809Eが完成
    zu2
    zu2 2022/01/06
  • SD8031のハードだけ完成

    電気が1979年に発売したパソコンPC-8001をいまだ後生大事に持っている。使う面白さはもう十分に味わって、ここ数年は電子工作の対象。その一環として製作した拡張基板のひとつが下に示すSD8031。フロッピーディスクドライブPC-8031のエミュレータでフロッピーディスクのかわりにSDカードを使う。見た目はまあまあカッコいいでしょ。 ファームウェアの開発効率を考慮してマイコンはATmega32A、回路の要所はMightyCore互換。したがってこちらの説明にしたがいArduino IDEが対応するし同ライブラリが使える。マイコンにブートローダを書き込むところが難関かと思うが、みんな持ってるTL866で書き込めた。これでSDカードの取り扱いもポートの振り方も自由自在(のはず)。 ※画像の回路図をクリックするとPDFの回路図が開きます。 USB-シリアル変換アダプタとGroveがつながるよ

    SD8031のハードだけ完成
    zu2
    zu2 2021/12/04
    “フロッピーディスクドライブPC-8031のエミュレータでフロッピーディスクのかわりにSDカードを使う。見た目はまあまあカッコいいでしょ”
  • 8752同等品でBASIC-52が動いた

    インテルがMCS-51ファミリーのために作ったBASIC-52は組み込み用のCPUでここまでやるかってくらい高機能。ぜひ動かしてみたいと思い、先達の製作例を調べたら、ああそうか、高機能なんだから回路も複雑になるわけだ。でもさ、美味しいところだけ安直にいただきたいよね。てことで、機能の一部を捨てるかわりに回路をぐっと簡略化したのが下に示すMCS8051。うまいこと動いちゃったので、ここに情報をまとめておく。 MCS8051ではBASIC-52をCPUの内蔵ROMに持たせて外部ROMをなくした。その結果、外部ROMはもちろんのことアドレスデコーダやプルアップ抵抗など多くの部品がごっそり不要となった。詳細は下のMCS8051技術資料をご覧いただきたい。引き換えに捨てた機能は、外部ROMからデータを読み込むXFER命令とか、外部EPROMに書き込むPROG命令とか、まあだいたいそのあたりかな。こう

    8752同等品でBASIC-52が動いた
    zu2
    zu2 2021/08/23