2ちゃんねる スマホ用 ■掲示板に戻る■ 全部 1- 最新50    

MSX-BASICの奥義を伝授するスレ

1 :デフォルトの名無しさん:01/11/25 02:53.net
忘れない内に皆に伝授しときましょう。

・多色刷り、
・ドット単位横スクロール、
・エスケープシークエンス・・・
色々ありましたよね。
思い出したらなんでも書き込みよろしく。

847 :デフォルトの名無しさん:2014/10/23(木) 10:53:09.83 ID:GVukQ4G4.net
作者のページも逝ってみたけど
ロードエミュレータは無いんだね

ぐぐってたらこんなページはあった
http://psyzans.com/Testsite/Tape/Tape.html

848 :デフォルトの名無しさん:2014/10/23(木) 11:28:00.27 ID:ISc0F2Qf.net
>>842-844
どんだけ古いおっさんやねん
http://radio1ban.com/jikken_ews1.htm

849 :デフォルトの名無しさん:2014/11/15(土) 10:36:19.60 ID:gWegtIR0.net
REM文を利用するプログラムを作ってみた。
内容は>>35

1 'ッツ`メピョマャヘマモッ」ェマ゚ャユソ`」リ。モカト`ィセ」モソホサワスヤショ`シユァ`ャラャ`「ァノワモク。ィモクョィモク。モカィ`ィー`ク`ーネ`ッツッュオタ`ヲ・メ、カヲャキナ`アー`ッツッュオタ」チ`イ``「シ、ーロタ、ェ`」リテモオク`ィーモア、ー`リ`ア``モオミ`ィイ」ア、イウアソマリ」ャ`ャ゙
2 '`チィコチヌシテ、ムハヲスンケッ゚ナワリ。。ヒヘア。ェマモスタ`チモモヘア「、スヤクザウテタ・゚ハクミ`キシチァュ、ア`。フ。「`」ュキ``チィュ・゙゚ハネミォマレセィ。リテソツ、スヤケクワ゚タネミ、モロ゙ャツウアィウォアソフク。ゥラシヒソフリ`ゥラシヲェ、タヲ`。」゙ーア」リヲィヌュオタ、ヲ「メ、ニヤキリテ
3 'モコィ`、ッニマ」タィヲ`ホユマヘメタ・ンテ」ュネタ`ーンョユマィミヤタロ」リミモコィ`メソ゚゚゚゚ワ`````ミャ````````「タシ``。。ァ`。`ーィ「ヲユトラィ`ノウーヤンイアウヤ`````
10 CLEAR 300,&HD000:DEFINTA-Z:A=&HD800:DEFUSR=A
20 A$="2148FC5E2356EB1100D0010500092323237EB7283DD620E63F878747237ED620E6300F0F0F0F8012137ED620E60F8787878747237ED620E63C0F0F8012137ED620E6030F0F47237E23D620E63F80121318BF010500097EFE3A28B3C300D0C9"
30 FORI=1TOLEN(A$)STEP2:POKEA,VAL("&H"+MID$(A$,I,2)):A=A+1:NEXT:A=USR(0)

blueMSXで動作確認。

blueMSXにはディレクトリをMSXディスクとして読み込む機能があるので、コピペしてファイルに書き込んだ後、[ファイル]-[ディスクドライブA]-[ディレクトリ挿入]でディレクトリを指定してやると、ディスクイメージを作らなくてもファイルが読める。

850 :デフォルトの名無しさん:2014/11/15(土) 10:44:03.15 ID:gWegtIR0.net
補足
コピペの際、各行の終わりにスペースがつく場合は、スペースを消して実行してくれ

851 :デフォルトの名無しさん:2014/11/18(火) 00:02:20.73 ID:zu7jtgft.net
REM文に書かれた文字そのものがプログラムだっていうのは結構やってたな
プログラムすべてを文字化するのは面倒だから、文字だけでデコーダを書いて、
文字にエンコードされたメインプログラムを展開して実行みたいなことが多かった

小さなちょっとしたことなら文字だけでプログラムを書くのも普通にやってたね
そもそも上記のデコーダがそうだし

で、REM文の内容の書かれたアドレスを直接指定してマシン語として実行するわけだけど
GRAPH文字には結構お世話になった気がする
ご存知だろうがGRAPH文字は01hを頭とする2バイト文字なのだ

01hを表現したいときに、たとえば >円 と書くと
文字コードが 3e 01 49 となって
LD A,01h → LD C,C になる、みたいな



文字コードとか覚えてなくてググりながら書いてみたんで間違いがあったりするかもだけど、
とにかく、GRAPH文字の01hっていうのはREMに直接マシン語を書くとき便利だったなあ
というお話

852 :デフォルトの名無しさん:2015/10/13(火) 21:35:13.92 ID:tF56vlyv.net
昔、Panasonic FS-A1FX(MSX2+)持ってたんだけど
POKE文でどこかのアドレスに所定の値を設定すると
CPUのクロック数が上がるって技があったと思うんだけど

・・・いや、今更調べたいというわけでもないんだけど、ちょっと脳裏に浮かんだので書いてみた

853 :デフォルトの名無しさん:2015/10/14(水) 15:47:26.04 ID:NrBXnG0t.net
昔、ASCII社製の木の板にMSX基板をはっつけた開発機材もらったんだけど、これってオクで売れるかな
仕様はMSX1とMSX2と両方もってる

仕入れ元はガーボロジーなのでアレなのだが

854 :デフォルトの名無しさん:2015/10/14(水) 16:02:06.05 ID:PR+BbI9O.net
もれは買わんな

855 :デフォルトの名無しさん:2015/10/16(金) 06:55:09.09 ID:ubnomhpt.net
ちなみにいくらで売りたい?
ぼったくり価格でないなら買うかもよ

856 :デフォルトの名無しさん:2015/10/16(金) 11:43:35.94 ID:ZWbPxBYc.net
イラネ

857 :デフォルトの名無しさん:2015/10/16(金) 22:21:53.33 ID:08ph5kmV.net
欲しいとは思うけど、買ってもどうせ押し入れの中で腐らすだろうな

858 :デフォルトの名無しさん:2016/01/23(土) 16:18:18.90 ID:SBqTJcjF.net
保守

859 :デフォルトの名無しさん:2016/01/23(土) 19:22:11.95 ID:l5TKWQpo.net
>>853
珍品奇品のように騙せば売れる
がんばれ

860 :デフォルトの名無しさん:2016/01/29(金) 13:22:13.24 ID:sHuG6nTkW
DOS TOOLS/DOS2 TOOLSのM80やL80。
BASICのBSAVEファイルやROMカートリッジなど
「MSX-DOS以外のファイルのアセンブルができない」者を罵倒している輩がいた。鈴なんとかだったと思う。


「BASICしかできない馬鹿は、ソース→バイナリに直接アセンブルするものを使え!(例:永久保存版1の付録・ZASM)」
ということか。


……M80で(ファイル名本体).REL を作ってから

L80 /P:(アドレス〜D000など),(ファイル名本体),(ファイル名本体)/N/X/E

でインテルHEXファイルを作り、BSAVE.COMでBSAVE形式バイナリに変換する。

L80の/Eオプションに/E:(ソースのラベル名)を指定すると、BSAVEの実行アドレスを変えられるらしい。もちろん、ソースでラベル名を使う必要はあるが。

…もっとも、BSAVEの実行アドレスは、バイナリエディタで簡単に変更できるが。ROMカートリッジ用などはBSAVEのヘッダ7バイトを削除する。

861 :デフォルトの名無しさん:2016/02/01(月) 05:57:38.30 ID:XkHCvxET/
1.DEF FNで2バイト数値の換算
………8000h〜FFFFhはBASICではマイナス、8000hを32768・FFFFhを65535などはエラーになる場合が多い

2.MSXでバイナリファイルにアクセス
………BSAVE形式のヘッダチェック・ヘッダ書き換え(開始・終了・実行)


100 SCREEN 0:KEY OFF:DEFINT A-Z:DIM B(7)
110 IF PEEK(&H2D) THEN WIDTH 80 ELSE WIDTH 40
120 DEF FNHL(H,L)=(H+(H>127)*256)*256+L
130 DEF FNH(HL)=(HL-(HL<0))\256-(HL<0)*255
140 DEF FNL(HL)=(HL-(HL<0))MOD256-(HL<0)*255
150 DEF FNDF!(A,B)=A-(A<0)*65536!-B+(B<0)*65536!
160 DEF FNHX$(A)=RIGHT$("000"+HEX$(A),4)
170 PRINT "1:BSAVE ヘッダチェック"
180 PRINT "2:BSAVE ヘッダカキカエ"
190 PRINT "3:シュウリョウ":PRINT:PRINT "ドレニ シマスカ? ";
200 A$=INPUT$(1):IF A$<"1" OR A$>"3" THEN 200 ELSE PRINT A$:PRINT:PRINT
210 IF A$="3" THEN 520
220 ON ERROR GOTO 300
230 FILES:PRINT:PRINT:PRINT
240 INPUT "BSAVE ファイル";FL$:IF FL$="" THEN 510 ELSE PRINT:PRINT
250 OPEN FL$ FOR INPUT AS #1:CLOSE #1
260 OPEN FL$ AS #1 LEN=1:SZ!=LOF(1)
270 FIELD #1,1 AS B$
280 IF SZ!<8 THEN PRINT "BSAVE ファイルハ 8バイトイジョウ アリマス":GOTO 510
290 FOR I=1 TO 7:GET #1,I:B(I)=ASC(B$):NEXT:GOTO 320
300 IF ERL=230 THEN PRINT "ディスクニ ファイルガ アリマセン":RESUME 510

862 :続き:2016/02/01(月) 05:58:34.71 ID:XkHCvxET/
310 IF ERL=250 THEN PRINT "ニュウリョクシタ ファイルガ アリマセン":RESUME 510
320 ON ERROR GOTO 0
330 IF B(1)<>&HFE THEN PRINT "BSAVE ファイルデハ アリマセン":GOTO 510
340 S=FNHL(B(3),B(2)):E=FNHL(B(5),B(4)):X=FNHL(B(7),B(6))
350 PRINT "     カイシ アドレス:";FNHX$(S)
360 PRINT "  シュウリョウ アドレス:";FNHX$(E)
370 PRINT "   ジッコウ アドレス:";FNHX$(X):PRINT
380 PRINT "ファイルサイズ:";FNHX$(SZ!);" (";STR$(SZ!);"bytes)"
390 PRINT:IF SZ!=FNDF!(E,S)+1+7 THEN PRINT "セイジョウ デス":GOTO 410
400 PRINT "ファイルサイズガ ヘッダト イッチ シマセン"
410 IF A$="1" THEN CLOSE #1:GOTO 510
420 PRINT:PRINT:PRINT "BSAVE ヘッダヲ カキカエマス":PRINT:PRINT
430 S$=FNHX$(S):E$=FNHX$(E):X$=""
440 INPUT "   カイシ アドレス(16シンスウ 1-4ケタ)";S$:IF LEN(S$)>4 THEN 440
450 INPUT "シュウリョウ アドレス(16シンスウ 1-4ケタ)";E$:IF LEN(E$)>4 THEN 450
460 INPUT " ジッコウ アドレス(16シンスウ 1-4ケタ)";X$:IF LEN(X$)>4 THEN 460
470 S=VAL("&H"+S$):E=VAL("&H"+E$):IF X$="" THEN X=S ELSE X=VAL("&H"+X$)
480 B(3)=FNH(S):B(2)=FNL(S):B(5)=FNH(E):B(4)=FNL(E):B(7)=FNH(X):B(6)=FNL(X)
490 FOR I=2 TO 7:LSET B$=CHR$(B(I)):PUT #1,I:NEXT:CLOSE #1
500 PRINT:PRINT:PRINT "BSAVE ヘッダヲ カキカエマシタ"
510 PRINT:PRINT:PRINT "Hit any key ";:A$=INPUT$(1):CLS:GOTO 170
520 END

863 :デフォルトの名無しさん:2016/02/12(金) 08:28:52.97 ID:qz3mrubwg
1984年のリファレンスマニュアル(東芝・ヤマハ・キヤノンなど)のサンプルプログラムを機械語にした。
SLの音などSOUND命令のサンプル。
機械語の場合、SOUND 7,nの値は「必ず &B10xxxxxx」でないといけない。


100 CLEAR 200,&HD000:DEFINT A-Z:AD=&HD000
110 FOR I=0 TO 447
120 READ A$:A=VAL("&H"+A$):POKE AD+I,A
130 NEXT I
140 DEFUSR=AD:A=USR(0)
150 END
160 DATA 3E,0C,CD,A2,00,CD,3E,D0,21,80,D0,7E,FE,FF,28,1A
170 DATA CD,33,D0,01,11,00,09,4E,23,06,0E,AF,5E,CD,93,00
180 DATA 3C,23,10,F8,CD,3E,D0,79,18,E2,3E,0C,CD,A2,00,CD
190 DATA 90,00,C9,E5,D1,CD,4D,D0,06,02,CD,57,D0,C9,11,70
200 DATA D0,CD,4D,D0,CD,9F,00,06,03,CD,57,D0,C9,1A,FE,00
210 DATA C8,CD,A2,00,13,18,F6,3E,0D,CD,A2,00,3E,0A,CD,A2
220 DATA 00,10,F4,C9,00,00,00,00,00,00,00,00,00,00,00,00
230 DATA 48,69,74,20,61,6E,79,20,6B,65,79,20,00,00,00,00

864 :デフォルトの名無しさん:2016/02/12(金) 08:36:13.24 ID:qz3mrubwg
続き。240行以降はデータ。240-250行のように32バイトで一組。

240 DATA 53,54,41,52,54,21,21,00,00,00,00,00,00,00,00,00
250 DATA 00,00,00,00,00,00,00,00,01,87,10,10,10,64,64,00
260 DATA 57,48,49,53,54,4C,45,00,00,00,00,00,00,00,00,00
270 DATA 00,00,54,00,34,00,97,00,00,B8,0E,0E,0E,C8,0A,0B
280 DATA 4C,4F,43,4F,4D,4F,54,49,56,45,31,00,00,00,00,00
290 DATA 00,00,00,00,00,00,FF,0F,10,83,10,07,10,5A,14,08
300 DATA 4C,4F,43,4F,4D,4F,54,49,56,45,32,00,00,00,00,00
310 DATA 00,00,00,00,00,00,FF,0F,0C,83,10,07,10,5A,08,08
320 DATA 4C,4F,43,4F,4D,4F,54,49,56,45,33,00,00,00,00,00
330 DATA 00,00,00,00,00,00,FF,0F,08,83,10,17,10,5A,04,08
340 DATA 43,52,4F,53,53,49,4E,47,00,00,00,00,00,00,00,00
350 DATA 00,00,64,00,6E,00,B4,00,00,B8,10,10,10,5A,08,08
360 DATA 48,45,4C,49,43,4F,50,54,45,52,31,00,00,00,00,00
370 DATA 00,00,00,00,00,00,18,00,16,83,02,02,10,5A,02,0C
380 DATA 48,45,4C,49,43,4F,50,54,45,52,32,00,00,00,00,00
390 DATA 00,00,00,00,64,03,18,00,10,81,00,10,10,5A,02,0C
400 DATA 42,4F,4D,42,21,21,00,00,00,00,00,00,00,00,00,00
410 DATA 00,00,00,00,00,00,00,00,15,B7,10,00,00,64,3C,00
420 DATA 42,55,5A,5A,45,52,00,00,00,00,00,00,00,00,00,00
430 DATA 00,FF,47,00,00,00,00,00,00,B8,10,00,00,5A,00,08


1〜17バイト目(偶数行すべて・奇数行1バイト目):文字列 (例:BOMB!!)
18バイト目(奇数行2バイト目):FF〜最終行 00〜その他
19〜32バイト目(奇数行3〜16バイト目):PSGデータ、レジスタ0,1,2…12,13の順、レジスタ7以外はSOUND命令と同じ

865 :デフォルトの名無しさん:2016/02/12(金) 08:50:05.69 ID:qz3mrubwg
補足。
420-430行は私が作った音。

PLAY"S8M90O6G"

と同じ音だが、PLAY命令と違い、自分で止めない限り鳴りっぱなし。
最後は DEFUSR=&H90:A=USR(0) を実行してPSGを初期化。

ついでに。このプログラムのROMイメージも作ってみた。
OpenMSX+C-BIOS、WebMSXで動作。ROM版は無限ループ・RAM8Kでも動く。

866 :デフォルトの名無しさん:2016/02/20(土) 06:24:47.86 ID:GAQ/DQUn.net
http://pickaka.ka12345.com/picss/2013/allimg/130516/13434/1-130516192P1.jpg

867 :デフォルトの名無しさん:2016/02/21(日) 10:33:15.20 ID:zmvsu5mb.net
What is her name?

868 :デフォルトの名無しさん:2016/02/22(月) 11:48:33.93 ID:suz1nbmf.net
山本陽菜 means Hina Ymamamoto

869 :DOSからSUB-ROMのBIOSを呼ぶ:2016/02/23(火) 00:42:06.64 ID:tto5lnBWm
リストAその1(M80、Windowsのxasなどが必要)


PUBLIC CALSUB
;
CALSLT EQU 001CH
EXTROM EQU 015FH
NMI EQU 0066H ;NON-MASKABLE INTERRUPT
H.NMI EQU 0FDD6H ;HOOK FOR NMI
EXPTBL EQU 0FCC1H
;
;

870 :DOSからSUB-ROMのBIOSを呼ぶ:2016/02/23(火) 00:43:35.41 ID:tto5lnBWm
リストAその2


CALSUB:
EXX ;SAVE ARGUMENT REGISTERS OVER SETUP
EX AF,AF'
LD HL,EXTROM
PUSH HL
LD HL,0C300H ;JP XXXX,NOP
PUSH HL
PUSH IX ;SUB-ROM ENTRY
LD HL,021DDH ;LD IX,XXXX
PUSH HL
LD HL,03333H ;INC SP,INC SP
PUSH HL
LD HL,0
ADD HL,SP
LD A,0C3H
LD (H.NMI),A
LD (H.NMI+1),HL
EX AF,AF'
EXX

871 :DOSからSUB-ROMのBIOSを呼ぶ:2016/02/23(火) 00:49:10.29 ID:tto5lnBWm
リストAその3(リストAはここまで)


;
LD HL,10 ;THROW AWAY THE INTERFACE ROUTINE
ADD HL,SP
LD SP,HL
RET
;
END


以上、MSX Datapackのサンプルプログラムより。

「テクニカルガイドブック」でもSUB-ROMのBIOSを呼ぶのは非常に面倒だ、と書かれていたが……サンプルプログラムはスタック上に呼び出しルーチンを置くという方法が。

872 :DOSからSUB-ROMのBIOSを呼ぶ:2016/02/23(火) 00:54:09.64 ID:tto5lnBWm
このルーチンを使ったDOS上のプログラム。

SCREEN6にする(SUB)→BEEP(SUB)→キー入力待ち(MAIN)→テキストモードに戻す(MAIN)→BEEP(SUB)→終了


リストBその1


EXTRN CALSUB
;
CHGMOD EQU 00D1H ;SUBROM-CHANGE SCREEN
CHGET EQU 009FH ;MAIN-KEYIN
TOTEXT EQU 00D2H ;MAIN-TEXT MODE
BEEP EQU 017DH ;SUBROM-BEEP
;
CALSLT EQU 001CH ;MAINROM-INTERSLOT CALL
EXPTBL EQU 0FCC1H ;MAINROM-SLOT

873 :DOSからSUB-ROMのBIOSを呼ぶ:2016/02/23(火) 00:55:57.50 ID:tto5lnBWm
リストBその2


;
LD A,6
LD IX,CHGMOD
CALL CALSUB
;
LD IX,BEEP
CALL CALSUB
;
LD IX,CHGET
LD IY,(EXPTBL-1)
CALL CALSLT
;
LD IX,TOTEXT
LD IY,(EXPTBL-1)
CALL CALSLT
;
LD IX,BEEP
CALL CALSUB
;
RET
;
END

874 :DOSからSUB-ROMのBIOSを呼ぶ:2016/02/23(火) 01:12:02.76 ID:tto5lnBWm
実行ファイル(????.com)をダンプリストにしたもの。
Windowsのバイナリエディタで入力→????.comでセーブ→MSXに転送。


0100: 3E 06 DD 21 D1 00 CD 2E 01 DD 21 7D 01 CD 2E 01
0110: DD 21 9F 00 FD 2A C0 FC CD 1C 00 DD 21 D2 00 FD
0120: 2A C0 FC CD 1C 00 DD 21 7D 01 CD 2E 01 C9 D9 08
0130: 21 5F 01 E5 21 00 C3 E5 DD E5 21 DD 21 E5 21 33
0140: 33 E5 21 00 00 39 3E C3 32 D6 FD 22 D7 FD 08 D9
0150: DD 21 66 00 FD 2A C0 FC CD 1C 00 FB 21 0A 00 39
0160: F9 C9


機械語の初心者には、M80やXasは使いこなせない。
(99BasicでHEX→バイナリ変換は作ったが)

BASIC用の機械語プログラムは、PC用はZASM、
MSX用は永久保存版1の付録にある「MSX-DOSスーパーハンドブック」のアセンブラで作ったほうが簡単だ。

875 :DOSからSUB-ROMのBIOS 訂正1:2016/02/23(火) 22:30:09.88 ID:tto5lnBWm
リスト1(MSX Datapackのサンプル)に誤りがあったので訂正。
"PUBLIC CALSUB"で、他のプログラムから呼び出すサブルーチンとして使う。


;       +0    INC    SP
;       +1    INC    SP
;       +2    LD     IX,<SUB-ROM ENTRY>
;       +6    NOP
;       +7    JP     EXTROM

876 :DOSからSUB-ROMのBIOS 訂正2:2016/02/23(火) 22:30:50.05 ID:tto5lnBWm
CALSLT    EQU    001CH
EXTROM    EQU    015FH
NMI       EQU    0066H
EXPTBL    EQU    0FCC1H
;
_CALSUB::
          EXX
          EX     AF,AF'
          LD     HL,EXTROM
          PUSH   HL
          LD     HL,0C300H
          PUSH   HL
          PUSH   IX
          LD     HL,021DDH
          PUSH   HL
          LD     HL,03333H
          PUSH   HL
          LD     HL,0
          ADD    HL,SP
          LD     A,0C3H
          LD     (H.NMI),A
          LD     (H.NMI+1),HL
          EX     AF,AF'
          EXX

877 :DOSからSUB-ROMのBIOS 訂正3:2016/02/23(火) 22:36:05.21 ID:tto5lnBWm
;
          LD     IX,NMI
          LD     IY,(EXPTBL-1)
          CALL   CALSLT
          EI
;
          LD     HL,10
          ADD    HL,SP
          LD     SP,HL
          RET

          END


一番重要なところを書き落とした。

          LD     IX,NMI
          LD     IY,(EXPTBL-1)
          CALL   CALSLT

MAIN ROMをインタースロットコール→NMIフックを呼ぶ→スタックに書かれたプログラムでSUB ROMを呼ぶ。これが抜けていた。申し訳ありません。

http://ngs.no.coocan.jp/doc/wiki.cgi/datapack?page=2%BE%CF+%A5%A4%A5%F3%A5%BF%A1%BC%A5%B9%A5%ED%A5%C3%A5%C8%A5%B3%A1%BC%A5%EB

のソースリストを引用。読みづらいので大文字に変換。

878 :DOSからSUB-ROMのBIOS 最後に:2016/02/23(火) 22:39:23.26 ID:tto5lnBWm
>>872-873のプログラムは私が作ったものなので、Datapackの作者とは無関係。
ただ、>>875-877のソースリストの先頭に

PUBLIC CALSUB

を書いておく必要がある。

879 :CALL CPU命令を増設:2016/02/25(木) 03:03:21.34 ID:6/BmD+Ggl
100 DEFINT A-Z:AD=&H8F90
110 READ A$:IF A$="*" THEN 130
120 POKE AD+C,VAL("&H"+A$):C=C+1:GOTO 110
130 DEFUSR=AD:A=USR(0):END
140 '
150 'Emulator ROM Make
160 '
170 'DEFUSR1=&H8FE9:A=USR1(0)
180 'BSAVE"CALLCPU.ROM",&H9000,&HAFFF
190 '
200 '----->Delete BSAVE header (7bytes)  FE 00 90 FF AF 00 90
210 '
220 DATA 3A,09,FD,E6,40,B7,28,09,1E,05,DD,21,6F,40,CD,59
230 DATA 01,AF,32,00,90,32,01,90,3A,42,F3,26,40,CD,24,00
240 DATA 21,00,90,11,00,40,ED,B0,3A,C1,FC,26,40,CD,24,00
250 DATA FB,3A,42,F3,E6,03,07,07,07,07,5F,3A,42,F3,E6,0C
260 DATA 83,3C,5F,16,00,21,C9,FC,19,36,20,3A,09,FD,F6,20
270 DATA 32,09,FD,C9,00,00,00,00,00,AF,21,80,90,11,81,90
280 DATA 01,7F,3F,77,ED,B0,3E,41,21,00,90,77,3C,23,77,C9
290 DATA 41,42,00,00,10,40,00,00,00,00,00,00,00,00,00,00
300 DATA FB,E5,21,2F,40,11,89,FD,1A,BE,20,0B,13,23,A7,20
310 DATA F7,E1,CD,50,40,A7,C9,0E,FF,AF,ED,B1,E1,37,C9,43
320 DATA 50,55,00,7E,E3,BE,23,E3,20,0D,DD,21,66,46,CD,59
330 DATA 01,FB,C9,1E,05,18,02,1E,02,DD,21,6F,40,CD,59,01
340 DATA 3A,2D,00,FE,03,38,EC,CD,33,40,28,DD,21,1C,52,CD
350 DATA 59,01,FB,F5,CD,33,40,29,F1,FE,03,30,D6,F6,80,CD
360 DATA 80,01,C9,00,00,00,00,00,00,00,00,00,00,00,00,00,"*"

880 :CALL CPU命令を増設:2016/02/25(木) 03:12:30.22 ID:6/BmD+Ggl
使用方法:CALL CPU(0-2)
0:Z80 1:R800(ROM) 2:R800(DRAM) その他はIllegal function callエラー。
MSX2+以前は常にIllegal function call。
このエラーが出たら、裏RAMにCALL CPU命令がセットされたとわかる。

【注意】
1.CALL MEMINIを実行中の場合はエラーが出るので、CALL MEMINI(0)で解除する。
2.命令増設後はCALL MEMINIが実行できなくなる。裏RAMを使用するため、メモリディスクの使用を禁止した。

【補足】
REM文を読めば、エミュレータ用ROMファイルの作成方法がわかるはず。
エミュレータ用ROMファイルを作成した場合、裏RAMは使用しないので、CALL MEMINIなどのメモリディスク命令が使用できる。

【最後に】
8F90H-8FFFのローダープログラムを改造したら、ノーマルROMゲームのローダーになるはず。ゲームの場合、メモリディスク使用チェックは必要ない。

881 :CALL CPU命令を増設:2016/02/25(木) 03:57:30.48 ID:6/BmD+Ggl
訂正〜240-270行。LDIRの前にBCレジスタの値の設定を忘れた。
訂正前は異常が見つからなかったので、ミスの発見が遅れた。

100 DEFINT A-Z:AD=&H8F90
110 READ A$:IF A$="*" THEN 130
120 POKE AD+C,VAL("&H"+A$):C=C+1:GOTO 110
130 DEFUSR=AD:A=USR(0):END
140 '
150 'Emulator ROM Make
160 '
170 'DEFUSR1=&H8FE9:A=USR1(0)
180 'BSAVE"CALLCPU.ROM",&H9000,&HAFFF
190 '
200 '----->Delete BSAVE header (7bytes)  FE 00 90 FF AF 00 90
210 '
220 DATA 3A,09,FD,E6,40,B7,28,09,1E,05,DD,21,6F,40,CD,59
230 DATA 01,AF,32,00,90,32,01,90,3A,42,F3,26,40,CD,24,00
240 DATA 21,00,90,11,00,40,01,00,40,ED,B0,3A,C1,FC,26,40
250 DATA CD,24,00,FB,3A,42,F3,E6,03,07,07,07,07,5F,3A,42
260 DATA F3,E6,0C,83,3C,5F,16,00,21,C9,FC,19,36,20,3A,09
270 DATA FD,F6,20,32,09,FD,C9,00,00,AF,21,80,90,11,81,90
280 DATA 01,7F,3F,77,ED,B0,3E,41,21,00,90,77,3C,23,77,C9
290 DATA 41,42,00,00,10,40,00,00,00,00,00,00,00,00,00,00
300 DATA FB,E5,21,2F,40,11,89,FD,1A,BE,20,0B,13,23,A7,20
310 DATA F7,E1,CD,50,40,A7,C9,0E,FF,AF,ED,B1,E1,37,C9,43
320 DATA 50,55,00,7E,E3,BE,23,E3,20,0D,DD,21,66,46,CD,59
330 DATA 01,FB,C9,1E,05,18,02,1E,02,DD,21,6F,40,CD,59,01
340 DATA 3A,2D,00,FE,03,38,EC,CD,33,40,28,DD,21,1C,52,CD
350 DATA 59,01,FB,F5,CD,33,40,29,F1,FE,03,30,D6,F6,80,CD
360 DATA 80,01,C9,00,00,00,00,00,00,00,00,00,00,00,00,00,"*"

882 :ノーマルROMゲームのローダー:2016/02/26(金) 03:45:30.28 ID:5M5Yi5aow
100 DEFINT A-Z:AD=&H8FC0
110 READ A$:IF A$="*" THEN 130
120 POKE AD+C,VAL("&H"+A$):C=C+1:GOTO 110
130 DEFUSR=AD:KEY1,"A=USR(0)"+CHR$(13):END
150 'BASIC
170 A2=&H9010:DEFUSR1=A2:POKE &H904B,&H1E
180 FOR I=0 TO 2:POKE A2+I,0:NEXT I
190 A=USR1(0):END
210 'Emulator ROM SAVE
230 'DEFUSR2=&H8FE9:A=USR2(0)
240 'BSAVE"FONTTEST.ROM",&H9000,&HAFFF
260 '----->Delete BSAVE header (7bytes)  FE 00 90 FF AF 00 90
280 DATA AF,32,00,90,32,01,90,3A,42,F3,26,40,CD,24,00,21
290 DATA 00,90,11,00,40,01,00,40,ED,B0,21,02,90,5E,23,56
300 DATA FB,D5,C9,00,00,00,00,00,00,AF,21,80,90,11,81,90
310 DATA 01,7F,3F,77,ED,B0,3E,41,21,00,90,77,3C,23,77,C9
330 '----- ROM DATA -----
350 DATA 41,42,10,40,00,00,00,00,00,00,00,00,00,00,00,00
360 DATA 31,00,F0,CD,CC,00,3E,20,32,AF,F3,CD,6F,00,06,00
370 DATA AF,21,00,18,CD,4D,00,3C,23,10,F9,AF,32,DB,F3,3A
380 DATA 2D,00,FE,03,38,05,3E,82,CD,80,01,CD,9C,00,28,FB
390 DATA CD,56,01,3E,08,CD,41,01,FE,FE,28,00,21,00,00,01
400 DATA 00,08,C5,06,08,CD,4A,00,07,CB,19,10,FB,79,C1,CD
410 DATA 4D,00,23,0B,78,B1,20,EA,18,D1,21,0A,00,CD,C6,00
420 DATA C9,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,"*"

883 :REM文に機械語1:2016/03/07(月) 03:55:39.13 ID:MGuXNuO80
  100 'C318AA2A2A2053414D504C452050524F472E206F662056445020262050534720
  110 '2A2A00202020204E4F562E203139383320204352454154454420425920455343
  120 '55454C4120436F72702E2056455220312E30002E002020202020000000000000
  130 '00000000000000000000000000000000000000000000FF450000000000000000
  140 '0000000000000000000000000000000000000000000000000000000000000000
  150 '0000000000000000000000000000000000000000000000000000000000000000
  160 '0000000000000000000000000000000000000000000000000000000000000000
  170 '0000000000000000000000000000000000000000000000000000000000000000
  180 '0021000039225AA02101A1F9CD5601CD21A2CD77A1CD41A2CD9C00C26CA12A5C
  190 'A02B225CA07DB420EF3A5EA03C325EA0CD41A2CD5CA2CDD2A2CD14A3CD64A3CD
  200 'ACA3CDF4A3CD3CA4CD84A4CDCCA4CD14A5CD5CA5CDA4A5CDECA5CD34A6CD7CA6
  210 'CD14A7CD44A7CD8FA7C318A13E0132DBF3C320AA00000021003822C7F3210000
  220 '22CBF321001C22CDF321002022C9F321001822CFF33E0032EAF3CD72002187A9
  230 '0E0046C5CD4700C1230C79FE08DAA2A111001821E7A701A001E5D5C5CD5C00C1
  240 'E1D109EB218FA90120003E0BF5E5D5C5CD5C00C1E1D109EBF13D20F011001C21
  250 'AFA9016400CD5C002103A03E0A010000110800CD48A2213DA03E0A010A001150
  260 '00CD48A22153A03E04010400111300CD48A22153A03E0401840011AE00CD48A2
  270 'C9CD90003E061E0CCD93003E071EB1CD93003E081E08CD93003E091E00CD9300
  280 'C9211000225CA0C932E9F3ED53B7FCED43B9FC7EB7C8CD8D002318F73A65A03C
  290 '20253A64A03D3264A0C001040021011CAFCDC4A6AFCDC4A63E10CDC4A63E10CD

884 :REM文に機械語2:2016/03/07(月) 03:56:22.75 ID:MGuXNuO80
  300 'C4A6AF3265A0C93A5EA0E607C001040021011CCD4A003CFEFF2007F53EFF3265
  310 'A0F15FFE20200C2323CD4A0017DAE0A67B2B2BCD4D0009CD4A003CCD4D0009CD
  320 '4A00FEFFC83CCD4D0009CD4A003CCD4D00C93A76A03C2018ED5FE6FFC021101C
  330 '3EBFCD4D00233E44CD4D00AF3276A0C93A5EA0E601C021111CCD4A003CFEFF5F
  340 '20053EFF3276A07BCD4D002BCD4A003DCD4D00C93A67A03C20193A66A03C3266
  350 'A0E67FC0212D1CAFCDC4A6AF3267A03266A0C93A5EA0E60FC0212C1C23CD4A00
  360 '3CFEFF200AF53A67A0EEFF3267A0F15FFE20200C2323CD4A0017DAD4A67B2B2B
  370 'CD4D00C93A69A03C20123A5EA0E6FFC021311CAFCDC4A6AF3269A0C93A5EA0E6
  380 '1FC021311CCD4A003CFEFF200AF53A69A0EEFF3269A0F15FFE20200C2323CD4A
  390 '0017DAD4A67B2B2BCD4D00C93A6AA03C20123A5EA0E6FFC021351CAFCDC4A6AF
  400 '326AA0C93A5EA0E63FC021351CCD4A003CFEFF200AF53A6AA0EEFF326AA0F15F
  410 'FE20200C2323CD4A0017DAD4A67B2B2BCD4D00C93A6BA03C20123A5EA0E6FFC0
  420 '21391CAFCDC4A6AF326BA0C93A5EA0E63FC021391CCD4A003CFEFF200AF53A6B
  430 'A0EEFF326BA0F15FFE20200C2323CD4A0017DAD4A67B2B2BCD4D00C93A6CA03C
  440 '20123A5EA0E6FFC0213D1CAFCDC4A6AF326CA0C93A5EA0E63FC0213D1CCD4A00
  450 '3CFEFF200AF53A6CA0EEFF326CA0F15FFE20200C2323CD4A0017DAD4A67B2B2B
  460 'CD4D00C93A6DA03C20123A5EA0E6FFC021411CAFCDC4A6AF326DA0C93A5EA0E6
  470 '3FC021411CCD4A003CFEFF200AF53A6DA0EEFF326DA0F15FFE20200C2323CD4A
  480 '0017DAD4A67B2B2BCD4D00C93A6EA03C20123A5EA0E6FFC021451CAFCDC4A6AF
  490 '326EA0C93A5EA0E63FC021451CCD4A003CFEFF200AF53A6EA0EEFF326EA0F15F

885 :REM文に機械語2:2016/03/07(月) 03:56:51.58 ID:MGuXNuO80
  500 'FE20200C2323CD4A0017DAD4A67B2B2BCD4D00C93A6FA03C20123A5EA0E6FFC0
  510 '21491C4FCDC4A6AF326FA0C93A5EA0E63FC021491CCD4A003CFEFF200AF53A6F
  520 'A0EEFF326FA0F15FFE20200C2323CD4A0017DAD4A67B2B2BCD4D00C93A70A03C
  530 '20123A5EA0E6FFC0214D1CAFCDC4A6AF3270A0C93A5EA0E67FC0214D1CCD4A00
  540 '3CFEFF200AF53A70A0EEFF3270A0F15FFE20200C2323CD4A0017DAD4A67B2B2B
  550 'CD4D00C93A71A03C20123A5EA0E6FFC021511CAFCDC4A6AF3271A0C93A5EA0E6
  560 '7FC021511CCD4A003CFEFF200AF53A71A0EEFF3271A0F15FFE20200C2323CD4A
  570 '0017DAD4A67B2B2BCD4D00C93A72A03C20123A5EA0E6FFC021551CAFCDC4A6AF
  580 '3272A0C93A5EA0E67FC021551CCD4A003CFEFF200AF53A72A0EEFF3272A0F15F
  590 'FE20200C2323CD4A0017DAD4A67B2B2BCD4D00C93A73A03C20123A5EA0E6FFC0
  600 '21591CAFCDC4A6AF3273A0C93A5EA0E67FC021591CCD4A003CFEFF200AF53A73
  610 'A0EEFF3273A0F15FFE20200C2323CD4A0017DAD4A67B2B2BCD4D00C93A74A03C
  620 '20123A5EA0E6FFC0215D1CAFCDC4A6AF3274A0C93A5EA0E67FC0215D1CCD4A00
  630 '3CFEFF200AF53A74A0EEFF3274A0F15FFE20200C2323CD4A0017DAD4A67B2B2B
  640 'CD4D00C9CD4D002323CD4A00F680CD4D002323C9A71FCD4D002B2BAFCD4D00C9
  650 'CDD4A60102000909AFCD4D0009CD4A00E67FCD4D00093E10CD4D0009CD4A00E6
  660 '7FCD4D00093E10CD4D0009CD4A00E67FCD4D00C93A5EA0E67FC03E06CD96005F
  670 '3A63A0B720111C7BFE1F38053EFF3263A03E06CD9300C91D7BFE1030F43E0032
  680 '63A018ED3A76A03C20083E091E00CD9300C921101CCD4A00FEBF20163E021E10
  690 'CD93003E031E00CD93003E091E0FCD9300C93E02CD96003C5F3E02CD93007BE6

886 :REM文に機械語4:2016/03/07(月) 03:58:43.28 ID:MGuXNuO80
  700 '1FC03E09CD96003D5F3E09CD9300C93A65A03C20083E0A1E00CD9300C921031C
  710 'CD4A00072B2B3031CD4A003C3DC03E041E10CD93003E051E01CD93003E0A1E10
  720 'CD93003E0B1E09CD93003E0C1E08CD93003E0D1E0ACD9300C9CD4A00FEFFC03E
  730 '0A1E00CD9300C900000103070F1F3F3F7F7FFFFFFFFFFF1F7FFFFFFFFFFFFFFF
  740 'FFFFFFFFFFFFFFFFFFFFFFFF7F7F3F3F1F0F0703010000FFFFFFFFFFFFFFFFFF
  750 'FFFFFFFFFF7F1FF8FEFFFFFFFFFFFFFFFFFFFFFFFFFFFF000080C0E0F0F8FCFC
  760 'FEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF8FFFFFFFFFFFEFEFCFC
  770 'F8F0E0C080000000000000000103070F1E3860C000000000000060F0F8F8F0E0
  780 '0000000000000000000000000000003F7FFFFF7F3F07070000000000000000FF
  790 'FFFFFFFFFF80803F7FFFFF7F3F00000000000000000000FFFFFFFFFFFF000000
  800 '0000000000000007073F7FFFFF7F3F00000000000000008080FFFFFFFFFFFF00
  810 '000000000000000000000000031E7FFF1E0300000000000000073AF0A000FFFF
  820 '00A0701A0700003FEF8F0F0F0F0FFFFF0F0F0F0F0FEF3FFFFFFFFFFFFFFFFFFF
  830 'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
  840 'FFFFFFFFFFFFFF00000000000000003C7EFFFFFFFF7E3C000000000000000000
  850 '0000000000000000000000000000003C7EFFFFFFFF7E3C000000000000000000
  860 '0000000000000002E20EFF033803010000000000000000000000000040E04000
  870 '00000000000000000000000000000074C2000A84C2040A74D2080A84D20C0AC0
  880 'FF1006548E1402698E1802748E1C026469200B6479240B6489280B57692C0D3E
  890 'AF300D855934057918380584AE3C05523140054BD24405392748052D814C0423

887 :REM文に機械語5:2016/03/07(月) 04:07:54.98 ID:MGuXNuO80
  900 'DC5004194F54040FB4580404135C04D000004F00000000003E0032DBF3C301A1
  910 'CD9000CDC3002A5AA0F93E0F32E9F33E0432EAF33E0732EBF3CD5601C9000000X
  920 CLEAR 200,&HA000:DEFINT A-Z
  930 FOR I=0 TO 52:POKE &HF55E+I,VAL("&H"+MID$("2A76F62BED5BF8F7D57EFE582826B720060108000918F2FE3A3802D607D6300707070747237EFE3A3802D607D6308012231318D5C9",I*2+1,2)):NEXT I
  940 DEFUSR=&HF55E:A=USR(&HA000)


>>885は「REM文に機械語3」の誤り〜訂正。


昔のBASIC本に掲載されていた機械語プログラム(著者以外の人物が作成したもの)をREM文機械語にしてみた。


展開プログラムはF55Ehから53バイト使用。ここはダイレクトモードで入力した文字列が入るところだが、一時的に機械語プログラムが使っても問題ないとわかった。


展開プログラムは、「データに00があったら8バイト先に進む」仕組み。行末は00→8バイト進む→次の行のREMデータを読む。

Z80でも機械語だと読み込みが速い。

888 :デフォルトの名無しさん:2016/12/19(月) 22:09:13.65 ID:LUv0TAy6.net
paul gilbert alternate picking
https://www.youtube.com/watch?v=y2CGto_KoRg&t=19m52s

889 :デフォルトの名無しさん:2017/03/07(火) 19:29:36.58 ID:r9Kcpwe1.net
指長ぇな

890 :デフォルトの名無しさん:2018/04/04(水) 14:03:45.90 ID:nsnO7hcT.net
1年経っても書き込みゼロ

MSX-BASICの奥義ってこの程度かよw

まぁ安物マシンだったからこんなもんだろうがな

891 :デフォルトの名無しさん:2018/04/08(日) 13:50:06.98 ID:vzbFopv/.net
10年前にガチで奥義を書いたけど、理解できないような人しか居なかったようで……

892 :デフォルトの名無しさん:2018/04/11(水) 21:56:09.68 ID:2+sM3+jO.net
スレタイが"BASICの奥義"となっていながら、結局その奥義がマシン語に頼ることになってるからなぁ

893 :デフォルトの名無しさん:2018/05/23(水) 22:52:21.42 ID:Au5e7VGg.net
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

Z776Y

894 :デフォルトの名無しさん:2018/05/23(水) 23:12:07.40 ID:vLiyuJ6c.net
Z776Y
Z776Y
Z776Y

895 :デフォルトの名無しさん:2018/07/04(水) 22:58:03.37 ID:gFgZc5FG.net
VIM

896 :デフォルトの名無しさん:2018/07/06(金) 12:33:43.11 ID:uTPDH9XV.net
Z776Y
Z776Y
Z776Y

223 KB
新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
名前: E-mail (省略可) :

read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★