goo blog サービス終了のお知らせ 

日本橋電気街徘徊日誌

いいとしのおっさんがジャンク屋で買ったものをいじったり電子工作したりします。

OSC京都にサークル参加してきました。

2019-08-04 11:54:35 | 日記

OSC京都にサークル参加してきました。
FM-7 2台を持ち込んで片方はFM-7の店頭デモを
えんえん流して、もう片方は当時のゲームを
SPIフラッシュメモリアダプタから起動してデモ
しました。
1月と何が違うのかというと当時は市販ゲームなんて
まずまともなもので動くものはないだろうと考えていたので
disk basicから起動するテープをコンバートしたゲームを
動かした程度でしたが、今回は当時の市販ゲームが
いくつか動かせたのと、転送速度が倍速の2キロバイト/秒に
までなったので速度的違和感がかなり減らせて、地味ながらも
改善できてよかった。
全体的な感じはOSCというイベントの性質上かなり異物感は
あるのですが、その分目立てたのか、足を止めていただいた
方にはわりと評判がよかったです。
よくなかったことは、今現在FM-7を動かしている人というのは
やはりかなり変人なのだなあということです。
確かに当時普通に考えるとFM-7でパソコンを始めたとして
カセットからディスクへのステップアップは型落ちのFM-77なり
77AVを買うのが普通だと思うので仕方がないといえば仕方がない
のですが。


ファミリーベーシック改造(その6)

2012-02-16 17:53:03 | 日記

進捗がなかったのでほったらかしてました。

 

十数年前にデジットで買ったロムライタです。

 

 

買っただけでおなかいっぱいになっていままで部屋のこやしになっていました。

 

28ピンまでのrom、27512が焼けるらしいです。googleでこのロムライタcwr-980について検索してもまったく出てこないので、相当マイナーな製品という気がします。

9801用なので、これを動かすためにEPSON PC486SEを起こしました。 最初、思うようにロムを焼くことができなかったのですが、速度を最低に落とすことにより正常に動作するようになりました。どこかにタイミングに依存した部分があるんでしょうね。

 

 

例によってファミリーベーシックです。

 

 

 

 

 

 

 

enri氏のファミリーベーシックの解析の成果から、オペレータ部分の動作をちょっといじって、「PF1」(ハイ)+リターンだけでGAME BASICのメニュー画面までいけるようにしました。また、ファミリーベーシック活用テクニックスレッドの情報をもとに、起動時にメモリを4キロバイト有効としました。

ファミリーベーシックは2.0と2.1をあわせて5つほどあるんですが、今まではずっと2.0をいじってたんですが、2.1の解析資料ということで2.1にしました。

 

なんのへんてつもないファミベのキーボード。

 

右端に注目。

 

 

インテルhexファイルをパソコンからファミリーベーシックにRS232C経由で流し込むプログラムというのを去年作ったんですが、そのときは信号線だけキーボードから取り出して、外部にレベル変換基板をつけてたんですが、非常に邪魔だったので思い切って内蔵しました。トグルスイッチによって、4069(だっけ?)にテープとRS232Cのどちらをつなぐか設定します。

 

ついでに、ファンクションキーの初期状態を変更して、ファミリーベーシック起動後すぐにintelヘックスローダが使えるようにしました。今までは暴走させるごとに外部の機器からローダを読み込んでいたのでだいぶリズム良く開発できるようになった気がします。

ローダをロムのどこに置くか悩んだのですが、逆アセンブルしても大意をつかむにいたらなかったので、enri氏の解析の成果にただのりさせていただきました。ほんとうにありがとうございます。

ローダは去年作ったファミリーベーシック汎用のものを開始番地とワークメモリの番地を変更してアセンブルしなおすだけで問題なく動作しました。2.1のロムでは動かしたことがなかったのでひやひやしましたが問題なくてよかったです。

次はいよいよキャラクタramを増設して、独自に定義したパターンをmoveコマンド等で動かせるようにしたいと考えています。

 

 


ファミリーベーシック改造(その5)

2011-07-08 12:38:04 | 日記


メモリを増設したファミリーベーシックにrs232c経由でパソコンをつないで、
パソコンからインテルhexファイルを流し込むプログラムを作ったので、
あまりにも少ない需要であるのはわかっているのですが、せっかくなので置いておきます。
テープにセーブするなり、romのすみに焼くなりしてつかってください。

ファイルを添付する方法がよくわからないのでそのままコピペです。

そのままソースと使える状態でこぴぺできるんだろうか?

アセンブラはアークピット様のxasmを使用しましたが、まあどうにでもなるんじゃないでしょうか。

 

;
; fbld1.asm
; ファミリーベーシック用インテルHEXファイルローダ
; Copyright (C) 2011, PuruPoo
;
; ファミリーベーシックキーボードカセット入力(READ)は4069の9番8番ピンを経由して
; $4016のD1につながっていますが、ここにMAX232等でレベル変換したRS232C入力を接続し、
; インテルHEXファイルを読み込みます。
;
; BASICのプロンプトよりCALL &H7E00としてプログラムを実行するとデータ待ち状態に
; なりますので、パソコンなどから4800bpsでインテルHEXファイルを送信してください。
; ロードが終了すればBASICのプロンプトに戻ります。PEEKなどで$7FE1の内容を確認し、
; 0なら正常終了です。
;
; $7E00からアセンブルされていますので、最低限メモリが4キロバイト必要ですが、
; アドレスを変更してアセンブルすれば標準の2キロバイトでも動作するはずですが、
; あまり意味はないと思います。
; オススメはメモリを標準の16キロビット(2キロバイト)・32キロビット(4キロバイト)
; SRAMを256キロビット(32キロバイト)SRAMに交換して若干の配線変更・追加で8キロバイト
; として使用することです。これならばBASICで3キロバイトちょっと、機械語で4キロバイトの
; フリーエリアが確保でき、わりとバランスのよい環境といえると思います。
;
; バイナリは以下の通りで、$FFが続いている場所はだいたいパッチのための隙間です。
;
;7E00:20 40 7E 20 D0 7E 20 30 7E 60 FF FF FF FF FF FF:74
;7E10:AD 16 40 29 02 D0 F9 60 A9 0B 8D E2 7F EA EA CE:9B
;7E20:E2 7F D0 F9 60 FF FF FF FF FF FF FF FF FF FF FF:7F
;7E30:A9 90 8D 00 20 60 FF FF FF FF FF FF FF FF FF FF:3C
;7E40:A9 10 8D 00 20 60 FF FF FF FF FF FF FF FF FF FF:BC
;7E50:A9 00 8D E5 7F 20 10 7E 20 18 7E A9 08 8D E6 7F:A1
;7E60:20 18 7E 20 18 7E A9 01 8D 40 40 AD 16 40 29 02:51
;7E70:18 2A 2A 2A 2A 2A 2A 8D E7 7F AD E5 7F 18 6A 0D:A7
;7E80:E7 7F 8D E5 7F A9 00 8D 40 40 CE E6 7F D0 D1 20:01
;7E90:18 7E 20 18 7E 60 FF FF FF FF FF FF FF FF FF FF:A2
;7EA0:38 E9 30 C9 0A 90 03 38 E9 07 60 FF FF FF FF FF:3A
;7EB0:20 50 7E AD E5 7F 20 A0 7E 18 2A 2A 2A 2A 8D E9:73
;7EC0:7F 20 50 7E AD E5 7F 20 A0 7E 0D E9 7F 60 FF FF:8F
;7ED0:A9 8D 8D EC 7F A9 60 8D EF 7F 20 50 7E AD E5 7F:31
;7EE0:C9 3A D0 7C 20 B0 7E 8D EB 7F 8D F0 7F 20 B0 7E:DE
;7EF0:8D EE 7F 18 6D F0 7F 8D F0 7F 20 B0 7E 8D ED 7F:31
;7F00:18 6D F0 7F 8D F0 7F 20 B0 7E C9 01 F0 57 C9 00:18
;7F10:D0 4E 20 B0 7E 20 EC 7F 18 6D F0 7F 8D F0 7F 18:FF
;7F20:EE ED 7F 90 03 EE EE 7F CE EB 7F D0 E5 20 B0 7E:83
;7F30:8D F1 7F 18 6D F0 7F C9 00 D0 25 20 50 7E AD E5:2F
;7F40:7F C9 3A D0 F6 4C E4 7E FF FF FF FF FF FF FF FF:EE
;7F50:FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF:F0
;7F60:A9 02 4C 73 7F 20 B0 7E C9 FF D0 05 A9 00 4C 73:3C
;7F70:7F A9 01 8D E1 7F 60 FF FF FF FF FF FF FF FF FF:6D
;
; 以下ソースリスト
;


 org $7e00

LED equ $4040
;CNTRD equ $4044
;CNTRST equ $4045
PPUC1 equ $2000
SIN equ $4016

HALFWAIT equ 11 ;4800BPS
;HALFWAIT equ 25 ;2400BPS


;割り込み停止
 jsr disint

;インテルhexロード
 jsr ihx

;割り込み再開
 jsr enint

 rts

 ifndef RUN
 ds 6
 endif
;=====================================================
;
;
;スタートビットを待つ(1->0になるのを待つ)
wtsb lda SIN
 and #$02
 bne wtsb
 rts

 

;=====================================================
;
;
;カウンタを初期化し指定値まで待つ
wait lda #HALFWAIT
 sta wcnth
 
waitlp1 nop
 nop
 dec wcnth
 bne waitlp1
 rts
 ifndef RUN
 ds 11
 endif

;=====================================================
;
;割り込み再開
enint lda #$90
 sta PPUC1
 rts
 ifndef RUN
 ds 10
 endif
;
;
;
;=====================================================
;
;割り込み停止
;
disint lda #$10
 sta PPUC1
 rts
 ifndef RUN
 ds 10
 endif
;
;
;
;=====================================================
;
;1文字取得
get1c equ *
;
 lda #0
 sta sdata

 jsr wtsb
 jsr wait

 lda #8
 sta bcnt

lp5 jsr wait
 jsr wait
 lda #1
 sta LED
 lda SIN
 and #$02
 clc
 rol a
 rol a
 rol a
 rol a
 rol a
 rol a
 sta ord

 lda sdata
 clc
 ror a
 ora ord
 sta sdata
 lda #0
 sta LED

 dec bcnt
 bne lp5

;ストップビット待ち
 jsr wait
 jsr wait

 rts

 ifndef RUN
 ds 10
 endif
;
;

;=====================================================
;
;
;ASCII -> HEX (1バイト)
;
a2hh equ *


 sec
 sbc #$30
 cmp #$a
 bcc a2hhl1
 sec
 sbc #7
a2hhl1 equ *
 rts

 ifndef RUN
 ds 5
 endif
;
;

;=====================================================
;
;16進文字列2バイト取得して1バイトとして返す

a2h equ *
 jsr get1c
 lda sdata
 jsr a2hh
 clc
 rol a
 rol a
 rol a
 rol a
 sta a2hb
 jsr get1c
 lda sdata
 jsr a2hh
 ora a2hb
 rts

 ifndef RUN
 ds 2
 endif

 

;=====================================================
;
;
;intelHEXデコード
;
;


;エントリ
ihx equ *

;データ格納用命令初期化
 lda #$8d  ;sta abs
 sta addra
 lda #$60  ;rts
 sta addrr

;':'確認
 jsr get1c
 lda sdata
 cmp #':'
 bne ihxl1  ;':'以外のものが来たのでエラー処理に

ihxl5 equ *


;データ長取得
 jsr a2h
 sta dlen
 sta sum  ;チェックサム初期化

;アドレス取得
 jsr a2h
 sta addrh
 clc
 adc sum
 sta sum

 jsr a2h
 sta addrl
 clc
 adc sum
 sta sum

;レコードタイプ確認
 jsr a2h
 cmp #1
 beq ihxl6  ;エンドレコードの処理に
 cmp #0
 bne ihxl1  ;知らないレコードタイプなのでエラー処理に

;データレコード処理
ihxl2 equ *
 jsr a2h
 jsr addra
 clc
 adc sum
 sta sum
 clc
 inc addrl
 bcc ihxl3
 inc addrh
ihxl3 equ *
 dec dlen
 bne ihxl2


;チェックサム処理
 jsr a2h

 sta orgsum
; nop
; nop
; nop
; nop
 clc
 adc sum
; sta sum

 cmp #0
 bne ihxl1  ;チェックサムが合わなかったのでエラー処理に

;':'待ち
ihxl4 equ *
 jsr get1c
 lda sdata
 cmp #':'
 bne ihxl4
 jmp ihxl5

 ifndef RUN
 ds 24
 endif


;=====================================================
;
;
;intelHEXデコードエラー処理、エンドレコード処理
;
;


;エラー処理
ihxl1 equ *
 lda #2
 jmp ihxl8

;エンドレコード処理
ihxl6 equ *
 jsr a2h
 cmp  #$ff
 bne ihxl7
 lda #0
 jmp ihxl8
ihxl7 lda #1
ihxl8 sta ihxres
 rts

 


;=====================================================
;
;変数

 org $7fe0
adj ds 1
ihxres ds 1


wcnth ds 1
wcntl ds 1
wc ds 1
sdata ds 1
bcnt ds 1
ord ds 1
smax ds 1

a2hb ds 1
hl ds 1
dlen ds 1

addra ds 1  ;sta abs
addrl ds 1
addrh ds 1
addrr ds 1  ;rts

sum ds 1
orgsum ds 1

 

 


インタフェース誌2008年5月号付録FR60基板にusb-blaster化ファームを入れてみた。

2011-02-08 12:28:31 | 日記
インタフェース誌2008年5月号付録FR60基板にテクノマルチプレックス社様が公開されている
usb-blaster化ファームを入れてみた。
asとかpsには対応していないみたいだけど、これはこれで便利。



とりあえずquartus2でちゃんと認識して使えてます。




バッファと





抵抗のみはさんである。
バッファにはシリコンハウスにで買ったTC74VHC9541をつけてみた。
バッファいれたので5Vには対応しているはず。
2.5Vは抵抗入れてるのでいけるのかな?

(2番目の写真が間違ってたのでいれかえ)

spartan-xl(敗北)

2011-02-03 12:06:02 | 日記
ジャンク屋でspartan-xl(xcs20xl)をpciチップ代わりにつかった
コンテック製のpciシリアルカードを見かけたので買ってみたけど、これは敗北。
無償ツールで使えるのはsparntan2からなのね。これはおぼえておかないと。
まあ、100円だったから基板を割ってrs232cレベルコンバータ基板として使おう。

2ヶ月くらい前にジャンク屋で買ってきたカノープスezdv ntsc

2010-12-27 12:19:54 | 日記
2ヶ月前くらいに日本橋のジャンク屋に行ったら
カノープスezdv ntscというpciカードが積んであって、
よくみたらaltera acex 1k(ep21k50)という昔の低価格fpgaが載ってた。

昔のものだから性能は低そうだけど、規模的にはデザインウェーブ2007/7付録基板や
デジタルデザインテクノロジ付属基板と同じくらいはありそうに見えるので、
ちょっと買い込んできた。

後で写真とか載せる