アカウント名:
パスワード:
いや、単純に、最初の方にヒットするような http://www.geocities.com/Area51/Dungeon/6809/z80emu.html とか、 http://www.nsknet.or.jp/~kamichan/prog/z80asm.html みたいなのが、もっとぞろぞろ並ぶかと勝手に思っていただけなのです。
でも、よく探してみるとS-OS Sword for UNIX [uec.ac.jp]とかあったりするので、あなどれません。
実機の特定の機種(例えば、MZ-80B, PC-8801mkIISR, X1turboZ, HB-F1XD, etc..)を周辺チップ、周辺機器も含めエミュレートしてみたりで、当然機種毎に別バイナリなんかではなく、機
おお、S-OSの話が通じる方がいらっしゃるとは。
しかし、かんがえてみるとあのころにLISPをかじったりしていたので、Emacs Lispなんかにも割と違和感がなかったのかな、などと思ってみたり。
しかし、なぜ PRINT EQU 1FF4H ; ORG 8000H START: LD A, 'A' LD B, 26 L0: CALL PRINT INC A DJNZ L0 RET じゃないのかと小一時間以下略(w
ああ、確かに参照してからINCする方が、きもちいいですね。 # 参照するのはシステムコール中だし、そもそもZ80だから # 関係ないといえば、関係ないのですが。
モニ
マシン語入力ツールとしてMACINTO-Cとかありましたですね。
で、今はMacintoshを使っていると。わたしもそうですが(w うちではあれにあわせて、テンキー部のキースキャンを横取りして、A~Fにリマップする仕掛けを入れたりしたものでした。
sword for UNIXは、0000-1F4Fあたりがあいているようなので、そのあたりにつめこんだりもできそう。
そうですね、Z80で全部書き下ろしても楽に入るでしょうし、
88VAで86(V50)モードに入って
みたいなノリで、未定義命令を使ってネイティブ側に飛ばし、そっちで面倒を見てやると言う手もありますか。ちなむと、<余談>V50
# ちょいと浮上中。
うちではあれにあわせて、テンキー部のキースキャンを横取りして、A~Fにリマップする仕掛けを入れたりしたものでした。
それは基本でしょう。(^^;
で、エミュレーション⇔ネイティブの遷移に未定義コードをつかうというのはなんとなく美しくないような気がするのですよ。といっても、ほかにもっとエレガントな方法があるかというとちょっとおもいつかないのですが。ただエミュレーション世界の住人にはよその世界を知られないようにしたいとか(スタニスワフ=レムにそういう話があったような)。
しかし、まぁなんですな。
あ、ひとつ思い付いた。マルチウィンドウエディタ(笑)のWINERが、画面描画関連を外出し(機種依存)できたので、そこだけネイティブ蹴って書きおろすと、いきなりAQUAなウィンドウが立ち上がるZ80ベースのテキストエディタという激しく目眩のする素敵なモノが出来上がるかもしれません。(ニヤソ
てな話をきかされると、先述のような理念よりおもしろい方がよかろうという気になったり。
で、IMSAI話 [srad.jp]ですね。いや、私も実物は話にしか知らないのですが。
忘れてましたが、Win32版swordでの工夫というのは、S-OS側のファイルシステムにフックをかけているらしく、空いている任意のドライブに、Windowsのファイルシステムを直接マッピングすることができるようになっています。
Sword for UNIXでも、Q:ドライブ(ってQDじゃないか)にUNIXのカレントディレクトリを割り当てられるようになってますよ。ということで、本物のEmacsでZ80アセンブラのソースをかけるという。当時は想像もしなかった世界。
あぁ…なぜか楽しいよぅ。(笑 では、お邪魔しました。
いえいえ、こちらこそ。これからふたたび潜航しますので、しばらく音信不通になると思いますが、またよろしくです。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
クラックを法規制強化で止められると思ってる奴は頭がおかしい -- あるアレゲ人
どういったのを期待されてたのでしょう? (スコア:0)
例えば、エミュレート結果の実行速度が、各オペコードの実行ステート数をちゃんと反映しているとか、そんな事を思い付きましたが、全然そういう事では無いのだろうなとか。どっち方面に濃いのがお好みなんでしょう?
わたしは上で書いてみたのとか、実機の特定の機種(例えば、MZ-80B, PC-8801mkIISR, X1turboZ, HB-F1XD, etc..)を周辺チップ、周辺機器も含めエミュレートしてみたりで、当然機種毎に別バイナリなんかではなく、機種データファイルを喰わせる汎用エミュで、
Re:どういったのを期待されてたのでしょう? (スコア:1)
いや、単純に、最初の方にヒットするような
http://www.geocities.com/Area51/Dungeon/6809/z80emu.html
とか、
http://www.nsknet.or.jp/~kamichan/prog/z80asm.html
みたいなのが、もっとぞろぞろ並ぶかと勝手に思っていただけなのです。
でも、よく探してみるとS-OS Sword for UNIX [uec.ac.jp]とかあったりするので、あなどれません。
Re:どういったのを期待されてたのでしょう? (スコア:0)
と、ネタ振りだけはしておきます。:)
Re:どういったのを期待されてたのでしょう? (スコア:1)
おお、S-OSの話が通じる方がいらっしゃるとは。
しかし、かんがえてみるとあのころにLISPをかじったりしていたので、Emacs Lispなんかにも割と違和感がなかったのかな、などと思ってみたり。
Re:どういったのを期待されてたのでしょう? (スコア:0)
この辺で見かけますた。 [srad.jp]
Re:どういったのを期待されてたのでしょう? (スコア:1)
なるほど、要チェックですな。さすがは/.
で、Sword for UNIXをMac OS Xにインストールしてみました。
./configure、make、sudo make installであっさりと。
REDAも付属していたので、ひさしぶりにこんなもの(↓)を書いてみたり。
PRINT EQU 1FF4H
;
ORG 8000H
START:
LD A, 'A'-1
LD B, 26
L0:
INC A
CALL PRINT
DJNZ L0
RET
モニタにはダンプコマンドが欲しいので、改造してみたり。
--- sword05.orig/sos.c Thu Apr 8 17:17:51 1999
+++ sword05/sos.c Wed Aug 7 20:32:32 2002
@@ -52,6 +52,10 @@
static char *progname;
char *dosfile = NULL; /* common DOS image file */
+/* variables for dump */
+ int dumpadr = 0;
+ int dumpsize = 128;
+
/* getopt declarations */
extern int getopt();
extern char *optarg;
@@ -77,6 +81,7 @@
char *np,c;
char *cp;
int n;
+ int i, j, pd;
/* prompt & space skip */
while((c = *p) == '$' || c == ' ')
@@ -231,9 +236,54 @@
return(0);
}
#endif
+ else if (strcmp(np, "dump") == 0){
+ if ((np = strtok(NULL, " ")) != NULL){
+ dumpadr = atoh(np);
+ if (dumpadr < 0 || dumpadr > EM_MEMAX)
+ dumpadr = 0;
+ }
+ sprintf(lbuf,"ADDR: +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +Fn");
+ scr_puts(lbuf);
+ for (j = dumpadr; j < dumpadr + dumpsize; j += 16) {
+ pd = j;
+ if (pd > EM_MEMAX) pd -= (EM_MEMAX + 1);
+ sprintf(lbuf,"%04X:", pd);
+ scr_puts(lbuf);
+ for (i = 0; i < 16; i++) {
+ sprintf(lbuf," %02X", ram[pd++]);
+ scr_puts(lbuf);
+ if (pd > EM_MEMAX) pd -= (EM_MEMAX + 1);
+ }
+ sprintf(lbuf,"n");
+ scr_puts(lbuf);
+ }
+ dumpadr += dumpsize;
+ if (dumpadr > EM_MEMAX) dumpadr -= (EM_MEMAX + 1);
+ }
else
scr_puts("Unknown command.r");
return(0); /* not quit command */
+}
+
+/*
+ String(Hexadecimal) -> int
+*/
+int
+atoh(char *s) {
+ int i = 0;
+
+ while (1) {
+ if (*s >= '0' && *s <= '9')
+ i = i * 16 + (*s - '0');
+ else if (*s >= 'A' && *s <= 'F')
+ i = i * 16 + (*s - 'A' + 10);
+ else if (*s >= 'a' && *s <= 'f')
+ i = i * 16 + (*s - 'a' + 10);
+ else
+ break;
+ s++;
+ }
+ return i;
}
/*
Re:どういったのを期待されてたのでしょう? (スコア:0)
を見て、懐かしさに鼻血が出そうになりました。(笑
しかし、なぜ
PRINT EQU 1FF4H
;
ORG 8000H
START:
LD A, 'A'
LD B, 26
L0:
CALL PRINT
INC A
DJNZ L0
RET
じゃないのかと小一時間以下略(w
# 実際はどっちでも(ほぼ)同じだけど。
Byte A='A'-1;
for(Byte B=26; B > 0; B--) {
print(++A);
}
と書くか、
Byte A='A';
for(Byte B=26; B > 0; B--) {
print(A++);
}
と書くかの違いなのでしょうけ
Re:どういったのを期待されてたのでしょう? (スコア:0)
ああ、確かに参照してからINCする方が、きもちいいですね。
# 参照するのはシステムコール中だし、そもそもZ80だから
# 関係ないといえば、関係ないのですが。
Re:どういったのを期待されてたのでしょう? (スコア:0)
で、今はMacintoshを使っていると。わたしもそうですが(w
うちではあれにあわせて、テンキー部のキースキャンを横取りして、A~Fにリマップする仕掛けを入れたりしたものでした。
そうですね、Z80で全部書き下ろしても楽に入るでしょうし、
みたいなノリで、未定義命令を使ってネイティブ側に飛ばし、そっちで面倒を見てやると言う手もありますか。ちなむと、<余談>V50
Re:どういったのを期待されてたのでしょう? (スコア:1)
# ちょいと浮上中。
それは基本でしょう。(^^;
で、エミュレーション⇔ネイティブの遷移に未定義コードをつかうというのはなんとなく美しくないような気がするのですよ。といっても、ほかにもっとエレガントな方法があるかというとちょっとおもいつかないのですが。ただエミュレーション世界の住人にはよその世界を知られないようにしたいとか(スタニスワフ=レムにそういう話があったような)。
しかし、まぁなんですな。
てな話をきかされると、先述のような理念よりおもしろい方がよかろうという気になったり。
で、IMSAI話 [srad.jp]ですね。いや、私も実物は話にしか知らないのですが。
Sword for UNIXでも、Q:ドライブ(ってQDじゃないか)にUNIXのカレントディレクトリを割り当てられるようになってますよ。ということで、本物のEmacsでZ80アセンブラのソースをかけるという。当時は想像もしなかった世界。
いえいえ、こちらこそ。これからふたたび潜航しますので、しばらく音信不通になると思いますが、またよろしくです。