このマイコンは、
・128KBフラッシュメモリ(書き換え回数 1万回)
・4KB EEPROM(書き換え回数 10万回)
・16KB SRAM
のメモリを持っています。
SDカードのFAT処理などのメイン処理(8KB)はフラッシュメモリのブートローダー領域(1E000h-1FFFFh)に書き込まれていますが、残り120KBがもったいない、、、ということで、ここに漢字ROMデータを書き込むこととします。
漢字ROMは128KBなので、8KB不足するぶんはSRAMの8KBを漢字データ領域として利用し、電源起動時にEEPROM(4KB)からデータを読み込むようにします。
まとめると、、
漢字ROMアドレス | データ保持領域 | 備考 |
---|---|---|
00000h-05FFFh | フラッシュメモリ(00000h-05FFFh) | |
06000h-07FFFh | SRAM(8KB) | 起動時にEEPROM(4KB)からデータをSRAMに展開 起動後は、スロット番号5でSRAMデータ読み書き可能 |
08000h-1FFFFh | フラッシュメモリ(06000h-1DFFFh) | 以降のフラッシュメモリ(1E000h-1FFFFh)はブートローダー領域として使用 |
出荷時、EEPROMには付属ソフトが記録されており、スロット番号5で利用できます。
漢字ROMデータの一部がEEPROMに圧縮して保存されるため、漢字ROMデータを書き込むと、出荷時の付属ソフトは消えますので、ここを参考にバックアップしておいてください。
漢字ROMイメージファイルの作成方法は2つあります。
(1) 互換ROMデータを作成する
武田氏のパソピアエミュレータサイトに、互換漢字ROMデータ作成ツール(mkfont.exe)があります。
Windowsのフォントから互換漢字ROMデータ (131,072バイト)を作成できます。
(2) 漢字ROM PAC2から吸い出す
パソピア用(PA7246)とパソピア7用(PA7247)、どちらからでも同じROMデータを作成できます。
以前紹介した吸出し方法でも問題ありませんが、Wave経由なのでデータ化けなどが心配です。
せっかくSDカードがついているので、SDカードを保存する方法を考えます。
パソピア/7に漢字ROMを装着し、以下のプログラムを実行します。
10 'XPAC2 Save KanjiROM to RAM (C) 2015 zak
20 CLEAR ,&HEFFF 30 FOR I=&HF000 TO &HF02D 40 READ A$ 50 POKE I,VAL("&H"+A$) 60 NEXT I 70 DEF FNF$(X)=RIGHT$("00"+HEX$(X),3) 100 PRINT"Select Save Area." 110 FOR I=1 TO 8 120 PRINT"["+HEX$(I)+"] "+FNF$((I-1)*64)+"00h-"+FNF$(I*64-1)+"FFh" 130 NEXT 140 INPUT A$:IF A$<"1" OR A$>"8" GOTO 140 150 A=VAL(A$) 160 POKE &HF02E,0 170 POKE &HF02F,&H40*((A-1) MOD 4) 180 POKE &HF030,-(A>4) 190 A=&HF000:CALL A 200 DATA C5,D5,E5,F5,3E,02,D3,1B,3A,30,F0,D3,1A,21,00,A0 210 DATA ED,5B,2E,F0,0E,19,ED,51,0E,18,ED,59,DB,1A,77,23 220 DATA 1C,20,F7,14,3E,E0,BC,20,EB,F1,E1,D1,C1,C9 |
「Select Save Area」でエリア番号を指定し、漢字ROMのデータ16KBをメモリに保存。カセットに保存する場合は「bsave#-1,"KANJI",&HA000,&h4000」、フロッピーディスクに保存する場合は、「bsave"KANJI*",&HA000,&h4000」を実行します。(*には、選択したエリア番号を指定する) これを1~8まで繰り返し、合計8ファイルをカセットもしくはディスクに保存します。
続いてPCを使って16384バイトのファイルを8つ作成し、SDカードに保存します。
Windows XP以降のコマンド・プロンプト上で作成する場合、以下のコマンドで作成できます。
fsutil file createnew kanji1.rom 16384 fsutil file createnew kanji2.rom 16384 fsutil file createnew kanji3.rom 16384 fsutil file createnew kanji4.rom 16384 fsutil file createnew kanji5.rom 16384 fsutil file createnew kanji6.rom 16384 fsutil file createnew kanji7.rom 16384 fsutil file createnew kanji8.rom 16384 |
XPAC2に8つのファイルが保存されたSDカードをセットし、パソピアに装着します。
以下のプログラムを入力し、「SAVRAM」というファイル名でXPAC2に保存します。(スロット3以外に保存します)
10 'XPAC2 Save Pasopia 64KB RAM to MRAM (C) 2015 zak 20 CLEAR ,&HEFFF 30 FOR I=&HF000 TO &HF021 40 READ A$ 50 POKE I,VAL("&H"+A$) 60 NEXT I 100 PRINT"Select Slot Number." 110 PRINT"[3] 64KB MRAM (DEVICE 6)" 120 PRINT"[4] 64KB MRAM (DEVICE 5)" 130 INPUT A$:IF A$<"3" OR A$>"4" GOTO 130 140 OUT &H1B, ASC(A$) 150 A=&HF000:CALL A 200 DATA C5,E5,F5,3E,02,D3,3C,21,00,00,0E,19,ED,61,0E,18 210 DATA ED,69,7E,D3,1A,2C,20,F8,24,20,EF,AF,D3,3C,F1,E1 220 DATA C1,C9 |
先ほど保存した漢字ROMデータを読み込みます。
・カセットから読み込む場合は、「bload#-1,"KANJI",0」
・フロッピーディスクから読み込む場合は、「bload"KANJI*",0」
を実行します。ロードしたら「SAVRAM」を実行し、スロット3のMRAM領域にコピーします。
続いてコマンドプロンプト「CMD」から以下のコマンドを実行し、SDカードに漢字ROMデータを保存します。
sv 3 kanji1.rom |
最後にPCを使ってkanji1.rom~kanji8.romを結合、128KBの漢字ROMデータ作成します。
Windowsのコマンド・プロンプト上で結合する場合、以下のコマンドで作成できます。
copy /b kanji1.rom+kanji2.rom+kanji3.rom+kanji4.rom+kanji5.rom+kanji6.rom+kanji7.rom+kanji8.rom kanji.rom |
作成した漢字ROMデータをSDカードに保存する場合、XPAC2付属のコマンドプロンプト「CMD」で漢字ROMを書き込みします。
もし漢字ROMデータが、「kanji.rom」というファイル名でSDカードに保存されている場合、
ld 2 kanji.rom (※2020/5 誤記修正) |
というコマンドになります。
これでATMega1284PのフラッシュメモリとEEPROMに、漢字ROMデータが保存されます。
これでATMega1284PのフラッシュメモリとEEPROMに、漢字ROMデータが保存されます。
もし出荷時のデータに戻したい場合は、「eep_rev1.rom」ファイルもしくは「eep_rev2.rom」ファイルをダウンロード、「eep.rom」にリネームしてSDカードにコピー
ld 2 eep.rom (※2020/5 誤記修正) |
出荷時に保存してあるプログラムは、行番号が1桁になっていたり、無理に1行にまとめたり、読みにくくなっていますが、4KBのEEPROMに圧縮して入れなければならなかったので、このようなプログラムになってしまいました。。
出荷時のデータに戻したいのですが、eep_rev1.rom、eep_rev2.romとも「Error 403」となってしまいます。
返信削除どうしたらよいでしょうか。
共有ファイルのアクセス権を変えてみました。
削除もう一度ダウンロード試してもらえるでしょうか?
よろしくお願いします。
ダウンロードできました。ありがとうございました。
削除