NEW
全角
END
BEEP 1
スナミ族
西部労働レストラン
beep 0
>>1 そのサイトで紹介されているBASICはDOS/Vで動くの?
ROM BASIC→論外。
N88互換BASIC for Windows→DOS/Vでは動かない。
N88-日本語BASIC(86)(MS-DOS版)→動くの?
10 :
ナイコンさん:04/01/19 00:31
>>7 西部労働レストラン=SAVE LOAD LIST RUN
月刊I/Oなどの掲載プログラムを打ち込んで遊ぶだけの椰子のこと。
初出はI/Oだよね?
11 :
ナイコンさん:04/01/19 06:36
スタンドアロン版N88-BASIC(86)上で
BASICインタープリタのサブルーチンにマシン語でアクセスする方法が知りたい。
?
13 :
ナイコンさん:04/01/20 23:16
未だにアセンブルできません
ピークとポークってなんですか?
15 :
ナイコンさん:04/01/29 07:18
>>1 N88-日本語BASIC(86)のDISKモードに関する情報を充実させてくれ
ๅ
➪
☄
A=0:CALL A
age
HOW MENY FILES?(1-15)
22 :
ナイコンさん:04/03/10 10:03
>>9 >そのサイトで紹介されているBASICはDOS/Vで動くの?
>N88-日本語BASIC(86)(MS-DOS版)→動くの?
98固有のBIOSを使うため、動かない。
ちなみに、98の実機であっても
HSBを組み込んでいる場合は動かない。
言語仕様はMSX使ってるつもりで迎合してHSP使った方がラクだろ。
new on 1
>>9 >N88互換BASIC for Windows→DOS/Vでは動かない。
これってべつにWindowsのVBだかで作られているプログラムでなかったか。
だから、Windows95以降なら動くとおもったが・・・。
ちなみに、99basicってのはどない?
26 :
ナイコンさん:04/12/18 21:51:56
N88 BASIC
いいね
28 :
ナイコンさん:04/12/31 22:21:43
new on 1
29 :
ナイコンさん:05/01/01 02:48:00
N88最悪やん
使いづらいし
いちいちスペース空けなきゃエラーだし
99は、N88のリストがそのまま動くわけでは無ヒという罠;
>>29 こういうやつが一番汚いソース書くんだよなぁ
32 :
sage:05/01/03 14:26:12
トントカイモ
33 :
ナイコンさん:05/01/10 02:21:46
load "auto go to list run
File not found
Ok
35 :
ナイコンさん:05/01/27 21:29:34
10 console 0,25,0,1
20 for i = 1 to 10
30 for j=1 to 7
40 color j
50 print "シネ ";
60 next j
70 next i
80 end
37 :
ナイコンさん:05/01/30 14:10:29
↑「このURLは閲覧できません。」と表示される。
漏れは見れるが?
CODE SEGMENT
ASSUME CS:CODE,DS:CODE,SS:CODE,STSEG
PRINTS MACRO STRING
MOV DX,OFFSET STRING
MOV AH,9
INT 21H
ENDM
MAINP: CLD
MOV AX,CS
MOV DS,AX
CALL GSTAT
JB TEXIT
40 :
ナイコンさん:05/02/05 00:26:39
ねーねー。「U−BASIC」使ってみたら?
なかなか使いやすいよ!!
これで、自分用のアプリいくつか作ってる。
DOS用のコンパイラはかなり遊べたなぁ。
VZでソース書けたし。
10 PRINT "UNKO"
20 GOTO 10
30 undo
センター試験40点ごちそうさまでした。
45 :
ナイコンさん:2005/06/12(日) 08:20:09
CALL [adress]:
マシン語を実行する。CALL &H0000 と打ち込むとリセットがかかる。
ちなみにFM-7では EXEC &HFE00。
ActiveBasicってのがフリーソフトであるけど
こいつはどですか?
47 :
ナイコンさん:2005/07/08(金) 22:19:06
わたしゃお勧めしませんね、
誰かが書いてたがUBASICのほうが使いやすいと思う
48 :
ナイコンさん:2005/07/14(木) 01:21:56
>>45 EXEC &HFE00
より
EXEC -512
の方を使ってたなあ、&Hって入れにくいし。
49 :
ナイコンさん:2005/07/25(月) 14:51:45
>>45 ROM-BASIC でもいける def usr=0:a=usr(a)
〃∩ ∧_∧
⊂⌒( ・ω・)
`ヽっ⌒/⌒c
⌒ ⌒
八頭身のドラえもんはキモい
52 :
ナイコンさん:2005/07/27(水) 14:42:18
10 motor on
20 motor off
30 goto 10
53 :
ナイコンさん:2005/07/27(水) 22:00:10
54 :
ナイコンさん :2005/07/29(金) 19:41:11
ハニリイト
LOAD AUTO GOTO LIST RUN SAVE KEY PRINT EDIT CONT
10 FOR SCREENMODE=0 TO 2
20 SCREEN SCREENMODE
30 CLS 3
40 FOR R=1 TO 200 STEP 10
50 CIRCLE(320,100),R
60 NEXT
70 WHILE INKEY$="":WEND
80 NEXT
これで10行目、20行目がSyntax ErrorになるBASICは使いづらいと思う。
む?
今更入力するのだりぃから、だれかHDI-OS98くれ。
_,-''" ̄ ̄''" ̄`゙'ヽ ,
/"''' ヘ ヘ ヽ、
〃 / / ヽ '、
ノ^ヽ, ___ i┐ 〃 / / l | '、 ヽ '、 ヘ _____.
/∠ゝ,,ヽ! | | | / / / 〃 l l l '、 l l ノ/└┐i-i┌-!
..くイ'三三┐| | | | l j l li |l | l l | | / |'┌┘!-!└┐
. | ,二二, | | | | | ||l l l /-l|/、lヽ lハ+j"ノ゙ト /j l| <,. | | n n n |
. | i三三┘| | | | l l、 ト、i {,r''pヽ ヽノi'"P゙゙i'>l / /l . | | | || | | | | |
丿,. ┌┐"|U | | ヽゝヽl、 lしl L_ン レ' l/j | | | U U U |
'V |__二_| エ_| '、 ヽ 、 ノ/; /lノ |_| |__i-----i__|
lヽ, ヘヽ、 ー‐' , /ノ /_丶、
ヾ、 ゙ r - "ノi" l r'─`- ヽ
_,,,..-、ノ l、 '"l''_ニ" ヽ
_,, r''"ヽ { ,,,_ _,,... /^'-, =、., {_-、 l
/ l ヽ 丶、、'、ー--= /_,-'" _,-'"、  ̄ \,-'"´ |
/ l ヽ , \ゝ=/-'" _,-'" / ヽ, ノ; l
,-'" / ~''7/-Yl-=l|-'''" l/、 ヽ、} ,-' ̄"|
_,-''" ̄ ̄''" ̄`゙'ヽ ,
/"''' ヘ ヘ ヽ、
〃 / / ヽ '、
ノ^ヽ, ___ i┐ 〃 / / l | '、 ヽ '、 ヘ _____.
/∠ゝ,,ヽ! | | | / / / 〃 l l l '、 l l ノ/└┐i-i┌-!
..くイ'三三┐| | | | l j l li |l | l l | | / |'┌┘!-!└┐
. | ,二二, | | | | | ||l l l /-l|/、lヽ lハ+j"ノ゙ト /j l| <,. | | | n n n |
. | i三三┘| | | | l l、 ト、i {,r''pヽ ヽノi'"P゙゙i'>l / /l . | | | || | | | | |
丿,. ┌┐"|U | | ヽゝヽl、 lしl L_ン レ' l/j | | | U U U |
'V |__二_| エ_| '、 ヽ 、 ノ/; /lノ |_| |__i-----i__|
lヽ, ヘヽ、 ー‐' , /ノ /_丶、
ヾ、 ゙ r - "ノi" l r'─`- ヽ
_,,,..-、ノ l、 '"l''_ニ" ヽ
_,, r''"ヽ { ,,,_ _,,... /^'-, =、., {_-、 l
/ l ヽ 丶、、'、ー--= /_,-'" _,-'"、  ̄ \,-'"´ |
/ l ヽ , \ゝ=/-'" _,-'" / ヽ, ノ; l
,-'" / ~''7/-Yl-=l|-'''" l/、 ヽ、} ,-' ̄"|
61 :
ナイコンさん:2006/05/03(水) 21:24:16
>>13 PEEKはメモリ読み取り
POKEはメモリ書き込み
「PEEK」の意味は「覗(のぞ)く(=メモリの中を見る)」という意味。
えー、listして
スクロールしようとすると画面から消えちゃうのですが
どうしたらいいですか?
>>62 f・9 & ROLL UP ROLL DOWN
F.9がきかんの?
edit って入力してみたら?
N88-DISK BASIC(86)上のDISK LIOを使ったファイルアクセスの方法を教えてください。
DSKI$
DSKO$
69 :
ナイコンさん:2006/07/18(火) 12:37:56
N88 Disk-Basicのフォーマット上のファイルを、
MS-DOSのfileconv.exeで、MS-DOS形式にしたんですけど、
N88 DOS-Basicでリストを見ると、漢字が化け化けです。
これ、どうやって対処すればよいでしょうか???
>>69 一度Disk-BASICでアスキーセーブして
テキストコンバート(JIS⇒shiftJIS変換)
71 :
ナイコンさん:2006/07/18(火) 12:51:54
>>71 ドキュメントにはそれらしい記述が無いので…不明
実機が無くてもDISKがあるならイメージ化⇒98EMUでなんとか…
73 :
ナイコンさん:2006/07/18(火) 14:04:49
普通の3MODEのFDDでは、DISK-BASICフォーマットのディスクが読めんです…
76 :
ナイコンさん:2006/07/19(水) 23:56:33
98でFM音源のPLAY文が使えるのは、N88 DISK-BASICだけでしょうか?
77 :
ナイコンさん:2006/07/20(木) 00:57:40
DOS版BASICでもできるどうかっていう意味?
BIOSやI/Oポートを介してもできるはずだけど。
搭載されているヤマハチップのデータシートは
手にはいらないかもしれないが。
XPで動くフリーのN88とかN88(86)とかってない?
よね。やっぱり…
Thanks
見てみる
N88互換BASICは俺のXPマシンでは動いてるぞ
83 :
ナイコンさん:2007/02/08(木) 23:02:31
俺の大好きな有名人
まずは、アニマル濱口
昇進まえの、若花田勝
音楽の極め、角松敏生
日本史の雄、紀貫之
演歌の花道、段田男
N88-DISK BASIC(86)上のDISK LIOを使ったファイルアクセスの方法を教えてください。
DSKI$、DSKO$ではなくマシン語でお願いします。
85 :
ナイコンさん:2008/02/29(金) 23:13:19
8801のDiskBASIC、色々なバージョンがありましたね。
バージョンによっては読み込み時間が短かったり、
サウンドボード(PC-8801-23)指定のバージョンが在ったり。
神保町にPC-8801やN88-BASICの本を買いに行ったけど殆ど無かった。
その後、秋葉に行ったら、マニュアル付きの98DOが1台あっただけ。
やっぱネットしか無いみたいだね。
↑
結局、アマゾンで入手。ちなみにM88で遊ぶ為。
N88-BASICはN88-BASIC(86)の本やマニュアルなら色々あるので購入見送り。
PC-6001/8001/9801/9821は所持暦があるのに8801だけは持ったことが無い。
88 :
ナイコンさん:2008/04/27(日) 15:00:22
久しぶりにNEC PC9801DXを動かしたくなってきたな・・・
89 :
ナイコンさん:2008/04/27(日) 15:18:29
return 1
90 :
ナイコンさん:2008/04/30(水) 14:56:59
N88互換BASICってので遊べるゲームはどこで手に入れればいいの?
なるほど・・・
ん?
94 :
ナイコンさん:2008/07/12(土) 13:14:59
一応保守でも・・・
フライトシミュなんてのも作れますか
・・・・
97 :
ナイコンさん:2009/01/16(金) 17:38:01
N88-BASIC PC88でEDITとAUTOを同時にやると
バグるというか表示がおかしくなる
LSET RSETの256単位ランダムファイルは使わなかったなあ
CVD CVI CVSとかの変数型変換はいるのか?という感じだった
99 :
ナイコンさん:2009/01/20(火) 16:14:19
N88 BASICなつかしい・・
伯父がフライト趣味レータープログラムしてそれをくれたなぁ
101 :
うし:2009/02/08(日) 16:33:51
HP BASICが動作するHP計算機を探しています。
取り扱っている店をご存知の方は教えて下さい。
N88 BASIC(88/98どちらでも)で確認されてるバグを教えて
n88basicにはバグなんてありませんがな
88SR以降だけなら、音楽関連の命令にバグがあって楽譜をMML化する際に特殊なテクニックが必要だと聞いた事がある。
>>104 >聞いた事がある
言ったヤツつれて来いw
>>104 本来は同じ音長のはずなのに(例えば(8分音符×2)と4分音符)、微妙に音長が違って、
楽譜そのままMMLで書くと、和音の各チャンネル間でタイミングがずれる、ってやつの事か。
107 :
ナイコンさん:2009/08/01(土) 20:06:13
88mk2のROMのN88BASICなんですけど、
FPDへのSAVEでドライブの指定って
どうやるんでしたっけ?
また、FPD内のファイルの一覧って
どうやって見るんでしたっけ?
FPD、って略し方は珍しいな
兄ちゃんに聞け、ゆとり
110 :
107:2009/08/01(土) 22:18:05
兄ちゃんは、いない。
妹なら、いるが
88mk2のROMのN88BASICなんですけど、
妹のまんこの中身って
どうやって見るんでしたっけ?
113 :
107:2009/08/01(土) 22:53:57
もうこねーよ
ウワーン
>>どうやるんでしたっけ?
〜
>>どうやって見るんでしたっけ?
まるで「当時は知っていたんだけど、つい忘れてしまった」ような口ぶりだけど
「ある点」から 「最初から全く知らないヤツが質問してる」事がバレバレまるわかり。
質問している時点で、裸の王様状態。
全く知らないんなら最初から素直に
「どうやるんでしょうか?」 「どうやって見るんでしょうか? 」
って質問すればいいものを
「でしたっけ?」なんてわざとらしい知ったか口ぶりで質問するから
みんなまともに答えたくないんだろう。
115 :
107:2009/08/02(日) 08:19:48
友人からPC-8801mk2 model30を譲り受けました。
その際に、フロッピー媒体2枚も頂きました。
一枚はハイドライドの正規品で、もう一枚はブランクディスクです。
ハイドライドのフロッピーを入れて、本体を起動すると
ゲームが起動されません。
媒体が悪いのか、ドライブが故障しているのかを判別したいのです。
そこで、ROMのBASICで簡単なプログラムを書いて、
ブランクディスクにSAVE "a"を行ってload "a"が出来れば、
ドライブは故障していないと判別できます。
しかし、SAVE "a"コマンドの結果はOKと出ますが、
load "a"コマンドを実行すると、なにも結果が表示されず、
ダンマリのままです。
ブランクディスクが死んでいることも考えられますが、
(新品の媒体は手配中です)
そもそも、コマンド自体があっているのかを教えて欲しいのです。
1.ROMのBASICプログラムを記憶する場合のコマンドを教えて欲しい。
2.2ドライブ目の故障も判別したいので、ドライブの指定を教えて欲しい。
3.媒体のフォーマットを行わなければならない場合、そのコマンドを教えて欲しい。
4.MS-DOSでdirに相当するコマンドがあれば教えて欲しい。
以上です。
>>107は気を抜いてカキコしたので、申し訳ありませんでした。
>>115 >媒体が悪いのか、ドライブが故障しているのかを判別したいのです。
>そこで、ROMのBASICで簡単なプログラムを書いて、
>ブランクディスクにSAVE "a"を行ってload "a"が出来れば、
>ドライブは故障していないと判別できます。
この判断は間違っている
>load "a"コマンドを実行すると、なにも結果が表示されず、
>ダンマリのままです。
データレコーダの再生ボタンを押し忘れている
A1.ROM BASICのプログラムを頭の中にでも記憶するの?
A2.お前にはまだ早い
A3.システムディスクをもっていないの?
A4.FILES
ROM-BASICでファイルアクセスできると思ってるところがなあw
まあがんばれ若人
118 :
107:2009/08/02(日) 13:21:34
ROM-BASICではFDDにアクセスできないんですね。
そういう事。
謝った事だし、もうちょい親切に教えてやろう・・・
結論は 【DISK BASICが入っているFDが別途に必要】
コマンド名の正確な一文字一文字を忘れる事があっても
「ROM BASICにはFDを操作するコマンドがそもそもない」って事実は
当時のユーザーならよもや忘れはしまい。
だから107の最初の質問の仕方は変なんだよ。
ROM BASICでSAVEをしてもカセット用の信号が無駄に流れているだけ。
SAVE中にFDDのアクセスランプを見ていればアクセスしてない事がわかるだろう。
フォーマットをするコマンド、というものもない。
フォーマットはフォーマット専用のプログラムでする。
今の状況からするとDISK BASICのFDがないから
BASICからFDを操作するのはやりようがなさそう。
それと、DIPスイッチがそれぞれ必要に応じた設定にしてあるかどうか。
121 :
107:2009/08/02(日) 15:45:22
>>119-120 ありがとうございました。
DISK BASICが入っているFDを手配します。
昔、昔、PC-6001mk2のデータレコーダのロード、セーブは
cload,csaveだった記憶があり、
88mk2の場合、FDDが付いているので、
load,saveはFDDへのアクセスだと思ってました。
DIPスイッチの工場出荷状態は、どういう状態なんですかね。。。
SW2の7はONにしてあります。
ディップスイッチの設定ってほとんど変更いらなかったはず
123 :
107:2009/08/04(火) 19:22:44
ご報告です。
DISK-BASICとゲームDISKを手に入れました。
本体を開けてドライブを見ました。
フロッピーは回っています。
ヘッドは前後、上下に移動しています。
1ドライブに、DISK-BASIC
2ドライブに、ゲームDISKを
入れて(一応)、IPLすると、
1-1, 1ドライブのアクセスランプ点灯
1-2. 2ドライブのアクセスランプ点灯後、すぐビープ音1回
1-1,1-2の繰り返し。
少し上記を繰り返すと、
2-1, 1ドライブのアクセスランプ点灯
2-2. 2ドライブのアクセスランプ点灯後、すぐビープ音2回
で、1-1に戻る。
という様な感じで、DISK-BASICは立ち上がってくれません。
ドライブが壊れているのでしょうか?
スレチかもしれませんが、一応、ご報告。
124 :
107:2009/08/04(火) 19:28:06
あ、2Dのブランクディスクも買っちゃったよ。。。
>>123 たぶんDISKが悪い
ドライブ1読み込み→失敗(起動できない)
ドライブ2読み込み→失敗(起動できない)
の繰り返しと思われる
ドライブ1を空にして2だけにディスクをいれれば2から起動できたような気がするので
ドライブが怪しいときは試してみるよろし
あと関係ないかも知れないが縦置きにして裏表逆とかって落ちはないよな?
126 :
107:2009/08/05(水) 06:00:36
スレチですが、もう少しお付き合いください。
ドライブ1は空。
ドライブ2にDISK-BASIC。
の場合、
ドライブ1のLEDが点灯。
↓
ドライブ2のLEDは点灯せず。
↓
How many file(0-15)?表示
(ドライブ1のLEDは付きっぱなし)
ドライブ1にDISK-BASIC。
ドライブ2は空。
の場合、
ドライブ1のLEDが点灯→消灯
↓
ドライブ2のLEDは点灯。
↓
How many file(0-15)?表示
(ドライブ2のLEDは付きっぱなし)
ドライブ1にDISK-BASICを表裏逆に挿入すると
ヘッドがフロッピーに張り付く動作もしないことから、
表裏は間違っていないと思われます。
俺の中古PCのドライブが壊れてる、なんとかしろー
いいかげんスレチです
88に98のDisk入れたってオチじゃないよねw
>How many file(0-15)?
の表示で起動できないのか?
>>125 >ドライブ1を空にして2だけにディスクをいれれば2から起動できたような気がする
98はそうなってるけど、88はドライブ1が空っぽだと
>>126の通りに。
(正確には2HD/2DD(DMA) FDDと2D(Non DMA) FDDの差)
>>126 本体を開けたのならドライブにコネクタが刺さってるのが見えてるはずだから、
ドライブ2のコネクタを外して、ドライブ1に刺さってたコネクタをドライブ2に刺し直して
(ドライブ2を実質ドライブ1にする)、そっちにFD入れて起動させてみる。
・・・あと、そのDISK-BASICは本当に88(mk2)用?
88SR以降用のDISK-BASICを88mk2で起動出来たかどうかは記憶の彼方に忘れた。
N-BASIC用のDISK-BASICならNモードにしてみるとか(DIP-SW 1-1だっけ?)。
131 :
107:2009/08/05(水) 18:29:05
age質問厨最悪
133 :
107:2009/08/05(水) 18:41:42
すみません。
これから、sageます。
134 :
107:2009/08/06(木) 06:31:53
コネクタを差し替えました。
ドライブ1とドライブ2が、
入れ替わっただけで、
症状は同じです。
>>134 ちなみに How many file(0-15)? の表示の上にDisk version の表示はないのか?
>>134 ゲームDISKをドライブ1に入れて起動は試したか?
いつまでスレチのクソレスでここを汚すの?
もう引き上げていただきたい
やるなら88スレで
まともなネタだせよ
139 :
107:2009/08/07(金) 06:07:50
140 :
107:2009/08/07(金) 06:11:22
>>136 試しました。
ドライブ1のLEDが点灯→消灯
↓
ドライブ2のLEDは点灯。
↓
How many file(0-15)?表示
(ドライブ2のLEDは付きっぱなし)
FDかびてない?
念のためFDDもクリーニングしたら?
143 :
107:2009/08/09(日) 12:05:29
ごぶさたです。
意地になって、新しい本体を買ってしまいました。
新しい本体でDISK-BASICのフロッピーは読め、
起動も正常に出来ました。
それで、教えて欲しいのですが、
ドライブ2が正常か知りたいのですが、
どうすればよいでしょうか?
144 :
107:2009/08/09(日) 12:09:45
すみません。
自己解決しました。
ドライブ1にブランクディスクを入れて
ドライブ2にDISK-BASICを入れたら、
正常に起動できました。
これから、DISK-BASICの
バックアップを取ろうと思います。
あとはマニュアルを手配して
それを見て頑張ろうと思います。
お世話になりました。
ありがとうございました。
145 :
ナイコンさん:2009/08/14(金) 08:18:36
今振り返ればN88-BASICが一番使いやすかったな
算術関数は他から導けるので使わないこともできるけど、ここでは除くとして
一番使わないハードウェアに依存しない命令って何だろう
自分はOCT$かな
LINE INPUT WAIT は RS-232C とかで使うのかな?
KPLOADとSPCは使ったこと無いな
149 :
ナイコンさん:2009/08/16(日) 01:59:35
高校の頃、ちょっとした関数のグラフを調べたいときなんかは、
ROM-BASIC立ち上げてちょこちょこっと書けば、すぐグラフが出せた。
今はそういうことをすると、どうしても敷居が高くなっちゃうよね。
話変わるが、DISK-BASICの最終バージョンって6.2だっけ?
DiskBASICは、Ver.6.3まであったように思う。
DOS版は6.2
BOSSは3トリー
154 :
ナイコンさん:2009/09/06(日) 22:54:36
10 print "そろそろ寝るか!"
20 end
10 FOR I=10 TO 20
20 PRINT I,I=I/3*3
30 NEXT
呪われた番号が浮かび上がる
156 :
ナイコンさん:2009/09/18(金) 04:56:31
たいにゃん
157 :
ナイコンさん:2009/09/18(金) 20:29:48
N87-UNIX
N88-BASIC(86)7.0
DIR
Syntax error
Ok
■
160 :
ナイコンさん:2009/11/22(日) 07:50:43
友達に入力頼むとエンター押さないでカーソル移動して次の行入力するから全部消えてしまって大変だった
リターンだろ
別に友達が打ち直すだけでは?
50人のクラス(男子35人)から5人の委員をランダムに選ぶ。このとき選ばれた委員の中に男3人、女2人が入る確率をBASICで求めよ。
すいません、さっぱりわからないので教えてください。
10 print 35/50*3
20 print 15/50*2
↑乗算でなく掛け算か?
しかも2つの値が違う
乱数を発生させて、∞ループで、どこに収束するか試せば良い
やったことあるような気がするけど意外と難しいな
こういう問題でスレ進行もイイ
実測でなくて解答の導き方を知りたいんでしょ
10 print "50人のクラス(男子35人)から5人の委員をランダムに選ぶ。このとき選ばれた委員の中に男3人、女2人が入る確率は?";
20 input a$
30 print "答え",a$
日本語が入っているのは許せ
_ _
( ・ω・ )むほっ
>>163 BASICでまともなプログラムを書くのはかったるいので手抜きだけど、こんな感じでどう?
100 'nCm is combination of m from n
110 'nCm = n!/(n-m)!m! = n・(n-1)…(n-m+2)・(n-m+1)/m・(m-1)…・2・1
120 C1=50*49*48*47*46/(5*4*3*2) 'combination of 5 from 50
130 C2=35*34*33/(3*2) 'combination of 3 from 35
140 C3=15*14/2 'combination of 2 from 15 (=50-35)
150 PRINT "The answer is ..."
160 PRINT C2;"x";C3;"/";C1;"=";C2*C3/C1
170 END
実際にBASICで選ぶ
それを百万回実行してみろ
実測の確立じゃなくて論理的な確立を式で導けってことだろう
>>171 N88-BASICで百万回… 今時のPC+Winbas95でも最後まで動かす気にならないが、
一応、
>>170の理論値に近い値が出そうだ。
1000 CLS: N1=1000: N2=1000: SUM=0
1010 FOR I=1 TO N1
1020 COUNT=0 'counter for the case that male member was 3.
1030 FOR J=1 TO N2
1040 N=50 'number of total members who haven't been selected.
1050 M=35 'number of male members who haven't been selected.
1060 FOR K=1 TO 5
1070 R=RND(1)*N
1080 IF R<=M THEN M=M-1 'male member has been selected.
1090 N=N-1
1100 NEXT K
1110 IF M=35-3 THEN COUNT=COUNT+1 '3 members were male.
1120 NEXT J
1130 RATIO=COUNT/N2: SUM=SUM+RATIO
1140 PRINT "RESULT(";I;"/";N1;")...";RATIO,"TOTAL:";SUM/I
1150 NEXT I
1160 END
案外ここ住人数学弱いのか?
BASIC も数学も小学生レベル
擬似乱数で実測とか無意味すぐる。
乱数で面積を出すってMZ-80付属のオレンジ本に載ってたっけ。
懐かしいな。
なにはなくとも DEFINT A-Z
w
basicっていいですね
99BASICっていいですね
perl 使え。 N88-Basic互換性抜群。しかもUTF-8対応。w
KPLOAD命令なんて懐かしいなぁ
当時漢字の外字登録機能をPCG代わり(というかPCGの一種なんだけどね)に使いまくってたからなぁ
OCT$はPC-98だとあんまり出番が無いけど
PC-88だとアナログパレットが512色なんで8進数と他の進数との変換は結構出番があったな
アナログパレットの色指定に&O(8進指定)を使ったり
逆に色を知るためにOCT$使ったりね
stop stop
一見意味不明だがちゃんと通用するコマンド
stop stopは割り込みを保留にする命令だが、
そのためには前もってstop onで割り込み可能にしてから使わなくてはならない。
他のon errorとかは割り込みルーチン中自動で割り込み禁止するんだよね。
しかしstopの場合は割り込み禁止だけでなくstopキーの入力自体も拒否してしまう。
なのでbasicでも全く中断できないプログラムを作ることができる。
188 :
ナイコンさん:2012/01/17(火) 13:08:30.21
log exp log10とか自然対数の底って高校で習わなかったけど
どのあたりの分野で習うのかな?
どういうことに使うか例示キボン
微積分を習えば必ずでてきそうだけど。あと複素数の極形式とか。
今時は高校物理で電磁気や力学に関する常微分方程式を解いたりしないのかな。
統計の正規分布なんかでも一応目にしない?
>>184 テキストじゃないPCGをPCGと言うのもなんだかなぁ
グラフィック置き換えた塊にしか見えん
押入れから昔PC98 N88-BASICで組んだプログラムFDが出てきた
懐かしいので走らせたいんだがPC98がもうない
XPでこれを走らせる方法ありませんか?
「win95」って書いてあるけどXPで動くの?
使ってみりゃいいじゃん
>>193 一応動くっぽい
ただN88の構文を全部読んでくれるかどうかは分からないが
MBASIC86あたりだとBASICでは読めてたプログラムの一部が読めなくてこけることがあるね
98エミュでMS-DOSを走らせてるんですが、これにBASICを乗せてBASICプログラムを走らせるにはどうすればいいですか?
実機と同じ
N88日本語BASICのイメージディスクありませんか?
>>197 DOS版N88(86)BASICのFDを入れて
>N88BASIC
>>199 オクで買ったらどうよ、安いよ
9801実機のBASICマニュアル欲しい…
スキャンしたPDFがどこかに置いてあったと思う
N88(86)BASIC関係のサイトだったから探してみたらどうよ
というか、このスレにもリンクが上がったことあったと思う
印刷物ならオクに時々出るからこまめにチェックするんだね
>>191 Android ならいくつかBASIC出てるよ
>>76 浦島スマソ
>98でFM音源のPLAY文が使えるのは、N88 DISK-BASICだけでしょうか?
DOS-BASIC (N88-BASIC(86)(MS-DOS版)) でも使える
BASIC拡張用のSOUND.EXE用意して
DOSコマンドラインからN88BASIC /E:SOUNDで起動、だったかな
207 :
ナイコンさん:2013/01/06(日) 22:46:55.10
トランスレータ作ろうぜ。
まずはマクロ的に対応できる構文と、ないと困る仕様の分類だな。
成功したらキスして差し上げましてよ
性交したら赤ちゃんできちゃう
_
|O\
| \ キリキリ
∧|∧ \ キリキリ
ググゥ>(;⌒ヽ \
∪ | (~)
∪∪ γ´⌒`ヽ
) ) {i:i:i:i:i:i:i:i:}
( ( ( ´・ω・)、
(O ⌒ )O
⊂_)∪
行頭に \ や MOD を使うと Internal error になるのは仕様なのだろうか?
ねぶれよ
NCデータ作るのにDOS版N88-BASIC使ってる。
しかし、98マシンが調子悪いからヤフオクで良さげな奴を探すかいの。
>>213 ダイレクトにCOMポート使ってないならエミュって手もあるが
>>214 NC旋盤のNCデータをN88BASICで作って、ダイレクトにシリアルでデータ転送しています。
BASIC言語でしかプログラムした覚えないんだけど、そんな私でも今さらなんとかなる?
アセンブラはz80や6809cpuのを10行くらいで挫折してるし。
何が今更?えー、
目標は対戦可能なオセロゲームつくって自分で遊ぶこととか。
本人次第
興味がある人、好きな人ってのは
他人に「なんとかなる?」なんていちいち聞かない
なんとかなろうがならなかろうが
そんなこと考えもせずに夢中になって手を出している
他人に「なんとかなる?」って聞くのは
他人に「無理」と言ってもらってやめる機会を自分から求めている
本人次第
わかったよ。サンクス!
エクセルVBAがかつてのマイコンBASICにかなり近いと思う
必要となる前知識が少なくてすむ
コンパイル作業がいらない
オセロゲームならエクセルのセルひとつをオセロの盤面コマひとつにすればいいんじゃない
>>217 pc/atノートのcomポート付きか10インチノートにusbシリアル変換付けて
Vectorとかで↓なんかをあさって、更新したらどう?
N88互換BASIC for Windows95
http://www.vector.co.jp/soft/win95/prog/se055956.html いまならXPノートが安く手に入るんじゃないのかな。
NCデータ保管用ならネットに繋ぐ必要なんて無いし。
usbFDDを付ければ98フォーマットも読めるし。
注意点は、98でフォーマットすれば読み込んでくれるけど
D2とかの弁当箱でフォーマットした奴は読み込んでくれない
(協立社のD2を2台とTACTXのM-220(マザック用)1台も持ってる。)
自分も9821Ltでフリーの通信ソフトでNCのデータを管理、
バックアップはPCカード経由SCSIのMOに落としてる。
(予備で98ノートは20台以上保管してるわ・・・)
あたたかいスレだね。感謝
>>1が04年1月18日?今2014年だから10年スレですね
10年で200レスって・・・・
BASICの実行速度よりも遅いのな
HSPがN88BASICに近いんじゃないか?
228 :
ナイコンさん:2014/02/16(日) 11:51:20.20
BASICコンパイラないのかな。
そのまんまWindows上で実行可能なエグゼ生成するとか。C言語とか覚えろ?
10 FOR I=1 TO 64
20 PRINT I
30 NEXT I
40 IF A=B THEN .......
ってわかりやすいね。
これでAndroidアプリ作れんかな、インタープリターではなくコンパイラでの
230 :
ナイコンさん:2014/02/16(日) 23:29:07.86
作ってみた⁈すごいな
えっ、今落とせたよ
たぶんセキュリティーの設定だと思うがうんどもすんともいわない
他のサイトは平気なのに・・・
236 :
ナイコンさん:2014/02/17(月) 20:40:52.19
REM 数当てゲーム
RANDOMIZE TIMER() : rem 乱数系列を生成
R=RND(99) : rem 乱数
PRINT "数当てゲーム"
PRINT "0〜99の乱数の数値を当てます"
N=0
LABEL:
INPUT "予想数値を入力してください。? >",A
N=N+1
IF A=R THEN PRINT "当たり" : GOTO OWARI
IF A<R THEN PRINT "ハズレ、もっと大きい"
IF A>R THEN PRINT "ハズレ、より小さい"
GOTO LABEL
OWARI:
PRINT "正解までに ";N;"回"
PRINT "Hit any key"
WAIT KEY
END
実行ファイル
http://gmdev.xrea.jp/st/up/1007.zip
ふぅー、当てるのに6回もかかっちゃったよ
238 :
ナイコンさん:2014/02/18(火) 04:09:41.10
むかしTHE BASICってゆうパソコン雑誌があって、内容はマシン語の記事やバックアップやらハッキングな記事ばかりなマニアック月刊誌があった。
BASICとはほど遠い内容とタイトルの違いから、これは芸術雑誌のふりをした発禁本写真集じゃね〜かと揶揄されて。楽しかったな。チラウラすまん。
240 :
ナイコンさん:2014/02/18(火) 11:53:04.54
マン語だと?
マンコだと?
月刊誌i/oに掲載されていたn88「BASICコンパイラ」for pc88は効率悪く、ドでかいマシン語オブジェを生成するやつ。処理遅いわ、メモリー不足で完了しないわ、できることはできるが、とても愉快な「BASIC言語で書かれたBASICコンパイラ」でした。
セルフコンパイルすりゃいいじゃん
WICSもそうだったな
セルフコンパイルしたらどーなるんだろ。
当時の88メモリー不足でできなかったんだろうか?
98でクロスコンパイル
250 :
ナイコンさん:2014/02/19(水) 17:41:58.49
シャドウマッピングテスト - 楽しいDarkBASICプログラミング♪
http://upload.saloon.jp/src/up8467.zip ファイルを開くと1.9MBの実行ファイルが出てくるから素直にクリックするといいw
サンプルプログラム。
4770K+780Tiを標準環境としているから、それより性能の低いPCではフレームレートが
極端に低下する場合がある。
60fps出ていれば問題なし。
ウイルス注意
ディスクBASIC時代の5インチフロッピーディスク、プログラム入り。アルフォス、森田オセロ、ロードランナーなどなど出てきました。押し入れから。
今でも、走るのかなエミュレータとかで…。
254 :
ナイコンさん:2014/02/19(水) 23:55:45.63
255 :
ナイコンさん:2014/02/20(木) 02:05:56.13
>>253 可変VOXELフォーマットがあるから1,000ステップぐらいかw
↑
これ省いたら半分ぐらいに減る(笑)
256 :
ナイコンさん:2014/02/20(木) 02:07:14.16
モデリングやってたら馬鹿みたいだから、自分でフォーマットを作っておくと簡単だw
257 :
ナイコンさん:2014/02/20(木) 12:50:00.40
簡易高速モーションブロアテスト - 楽しいDarkBASICプログラミング♪
http://upload.saloon.jp/src/up8474.zip ファイルを開くと1.9MBの実行ファイルが出てくるから素直にクリックするといいw
サンプルプログラム。
モーションブロア(残像)は法線軌跡を計算して半透明3Dオブジェを使うものから、
画面バッファそのものを書き換えるものまで、処理方法は多岐に渡る。
自分で作ってみると面白い。
30fps出ていれば問題なし。
259 :
ナイコンさん:2014/02/21(金) 04:33:25.66
簡易高速モーションブロアテスト(その2☆) - 楽しいDarkBASICプログラミング♪
http://upload.saloon.jp/src/up8479.zip ファイルを開くと1.9MBの実行ファイルが出てくるから素直にクリックするといいw
サンプルプログラム。
モーションブロア(残像)は法線軌跡を計算して半透明3Dオブジェを使うものから、
画面バッファそのものを書き換えるものまで、処理方法は多岐に渡る。
今回はまた別の方法wうわっw
30fps出ていれば問題なし。
261 :
「ガスライティング 集団ストーカー カルト」で検索を!:2014/02/21(金) 07:55:20.34
★マインドコントロールの手法★
・沢山の人が偏った意見を一貫して支持する
偏った意見でも、集団の中でその意見が信じられていれば、自分の考え方は間違っているのか、等と思わせる手法
・不利な質問をさせなくしたり、不利な質問には答えない、スルーする
誰にも質問や反論をさせないことにより、誰もが皆、疑いなど無いんだと信じ込ませる手法
↑マスコミや、カルトのネット工作員がやっていること
TVなどが、偏った思想や考え方に染まっているフリや常識が通じないフリをする人間をよく出演させるのは、
カルトよりキチガイに見える人たちを作ることで批判の矛先をカルトから逸らすことが目的。
リアルでもネットでも、偽装左翼は自分たちの主張に理がないことをわかっているのでまともに議論をしようとしないのが特徴。
...
ウイルスチェックにどんなソフト使ってる?
avast! だな
avast いいよな。Androidでも。
265 :
ナイコンさん:2014/02/25(火) 14:20:20.98
266 :
ナイコンさん:2014/02/25(火) 22:52:41.14
267 :
ナイコンさん:2014/03/03(月) 11:53:41.36
G1820+750Tiで60fps♪ シャドウマッピングテスト - 楽しいDarkBASICプログラミング♪
http://upload.saloon.jp/src/up8561.zip ファイルを開くと1.9MBの実行ファイルが出てくるから素直にクリックするといいw
サンプルプログラム。
今回から最低標準環境をCeleron G1820+GeForce GTX 750Tiに変更。
G1820+750Tiを標準環境としているから、それより性能の低いPCではフレームレートが
極端に低下する場合がある。
60fps出ていれば問題なし。
# 意外と速い?試してみると分かりやすい。
まあ得体の知れない実行ファイルをクリックする奴も居ないとは思うけど
100 rem move
110 cls
120 x=0
130 y=0
140 for x=1 to 70
150 locate x,y
160 print " ★"
170 for i=1 to 1000:next i
180 next x
190 end
わーい、★が動いたぁ!
★の出し方がわかりません
ナイコンなので脳内でRUNしました。
メモリ不足でした。
100 rem circle
160 x=100
170 y=200
180 sx=2
190 sy=1
200 *loop
210 cls
220 x=x+sx
230 y=y+sy
260 if x<50 or x>599 then sx=sx*(-1)
270 if y<50 or y>359 then sy=sy*(-1)
280 circle (x,y),40
290 for i=1 to 100 : next i
300 goto *loop
ソラレミイ
トントカイモ
sx=-sx でよくね?
sy=-sy でよくね?
210 cls 3
400ラインか
screen は要るだろ
風呂にもバscreen入れるだろ
久々に引っ張り出したけどPLAY ALLOCの使い方忘れてて音が出せん
つまんないから誰か教えてくれないか
N88-BASICってPC8001に入っていたやつ?
フロッピードライブまだなくてカセットテープにデータ記録。
SAVE ぴ〜ひゃらら…
翌日、LOADしよう。あれ?エラー!
苦労して打ち込んだの、安物テープはダメだ…
>>282 >N88-BASICってPC8001に入っていたやつ?
違うよ
PC8001にROMで入っていたの
NEC PC8001
Microsoft BASIC Version1.0
なんチャラだったけ?
NEC PC-8001のROMに入ってたのが、N-BASIC
それで、NEC PC-8801のROMに2つのROMが入っていた
のがN88-BASICとN80-BASIC
N88-BASICの経過について説明すると
NECは、iAPX8085から本気でCPUの開発を行っていた
最初は、TK-80拡張でNEC製のBASIC言語を実装していた。
そこに、Mr.西がビルゲイツを引き合わせて、マイクロソフトBASICを実装させた
それが、8bit N-BASIC。そして次のPC8801にもN88-BASICを実装した。
(このコードはゲイツが書いた。)
そして、16bit機PC9801の発売についてN88BASIC互換にすることになった。
その16bitN88BASICは、NEC内部で秘密裏に作られた、その出来が素晴らしく良かった。
ここで、権利関係でどうするか揉めた。実際にゲイツが忙しくて作る暇も無かった。
Mr.西が、NEC製作のコードを使うが、
マイクロソフト製品として扱うという事で決着させた。
そして、PC-9801が日本市場を独占した、そこにEPSON互換機が登場。
NECは、N88-BASICが固有のものであるとした、裁判もそこが論点になった。
よって、EPSON互換機にはN88BASIC-ROMがありません。
PC-8801にN80-BASICなんか載っていないよ
PC-8001 → N-BASIC
PC-8001mk2 → N80-BASIC
PC-8801 → N88-BASIC、N-BASIC
TK80を昔、小学1、2年のころ親戚のおじさんにもらった。TK80BS…からPC8001へ、の時代。BSのお古はくれなかった。
理由は「若いんだからアセンブラで組め。簡単なBASICなんか使うと自分でプログラム組めなくなるぞ」と言った。
小学2年にワンボードコンピュータ?へんなおじさんと思った。
>>285 >NECは、iAPX8085から本気でCPUの開発を行っていた
8085にiAPXは付かない。NECは8085互換の製品を出すより前からマイコンの商売はやってる。TK-80のCPUは8085ではない。
>最初は、TK-80拡張でNEC製のBASIC言語を実装していた。
TK-80BSに最初に搭載されたBASIC言語はPALO ALTO TINY BASICのカスタマイズであり、NEC製ではない。
以下、限が無いので略。
カセットにsaveするときはカセットの頭の記録できない部分を送ってから
saveしないと読み込めない
>>290 それでいくつの打ち込んだゲームだめにしたっけな
名前が頭文字繋ぎあわせて基本のBASICになったってよい偶然だな
日本語で書くなら基本語ってことか
日本語で書くんだったら基本を語ってことかってなんだろうかと一瞬思ってしまった。
BASICプログラム言語
初心者向け 汎用記号 命令コード。
10個ほどのコマンドを覚えればすぐに使えるようになり、
インタプリタと行番号で素人にも手軽に扱え、教育用プログラム言語とされる。
10個のコマンドってどれだ?
CMD
STATUS
IEEE
IRESET
ISET
LISTEN
MAT
POLL
RBYTE
SRQ
TALK
WBYTE
@REM
A変数
BLET
CIF/THEN
DFOR/NEXT
EINPUT/PRINT
FGOSUB/RETURN
GGOTO
HDATA/READ
IEND
10個じゃねーし
変数がコマンドとは
LOADとRUNだけ覚えればいいですか?
つ FILES
ハニリイト
昔はそう言う人をロードランナーと言ったなぁ
ソラミトラリイ 0,25,0,1
RENUM 0
USR(33):USR(36)
CD3EA0 Aレジスタに何かを書き込む
わけわからん
313 :
ナイコンさん:2014/06/18(水) 18:32:00.05
win3.1を今のWindowsと同じに扱っていいのか?
316 :
ナイコンさん:2014/06/20(金) 07:39:52.84
317 :
ナイコンさん:2014/06/20(金) 12:26:34.01
HSP使うだろ
VC6が無敵
もはやBASICですらない
HuBASIC
SP5001
SP5002
SP5010
>>321 HuBASICを入れるのならSP-5020、SP-5030、DiskBASICのSP-6010を忘れては逝けない
N88-BASIC以外はどうでもいい
10 PRINT "TEST"
20 FOR I=1TO30
なぜFOR-NEXTのときの変数はいつもIなのか
いつもIなのは初心者だけ
Fortran言語ではintegerから、I〜Nまでの変数を暗黙の了解として整数型と定義されていた。
初期BASIC言語の時代における理系言語はFortranであった。
よって、I,J,Kなどを使い捨て整数型変数として使う。なんとなく、解読時に皆が理解するのに便利だった。
30 I=RND(1)*100
初心者の頃、リストを見ながら打ち込んでいてIと1を間違えるってのはよくあると思うんだが、
今現在、自分でプログラム組んでいてIと1を打ち間違えるというのは、何が原因なのやら
頭か目
I(アイ)、1(イチ)、l(エル)、|(タテ)、!(ビックリ)
21 NEXT
フォーネくストは入子に出来ますか?
>>332 先が続けられん..せめて25位にして欲しかった
40 FOR J=1 TO 100
DEREAT 21
Syntax error
ready
10 FOR X=0 TO 399
20 FOR Y=0 TO 199
339 :
ナイコンさん:2014/08/12(火) 20:53:45.39
9 rem 99BASIC
10 defint A-Z
11 dim M(158),N(158)
12 for J=0 to 158
15 N(J)=100
16 next J
20 cls
30 for Y=1 to 63
40 for X=1 to 63
50 gosub 500
60 if Z=0 then C=7 : goto 80 'colorload
70 C=Z/21+4
80 D=92-(int(X/2)+int(Y/2)+Z)
90 E=X-Y+78
100 if D<=M(E) and (D>=N(E)) then goto 170
110 if D>M(E) then M(E)=D
120 if D<N(E) then N(E)=D
130 if D>99 or D<0 then goto 170
140 pset(E*4,D*4),C
170 next X
175 next Y
180 beep
185 A$=inkey$ : if A$="" then goto 185 else end
190 end
500 rem sub
510 S=(X-32)*(X-32)
520 T=(Y-25)*(Y-25)
530 Z=2200/(S+T+31)
540 return
コンソールの独り漫才は面白いなw
>>339 >>338の立場が全くないではないか!
こう言う奴は普段から…。って言われるかもしれないw
繋げてよ。。
NEW
Ok
100 INPUT A
110 INPUT B
120 CLEAR
130 IF A<=0 THEN 100
10 DEFINT A-Z
50 CONSOLE 0,25,0,1:WIDTH 80,25:CLS 3
リナンバーしてよw
349 :
─☆─ [ X | I.I.T. ] COURANT DE CONSOLE ◆T1993q9cOh.1 :2014/08/14(木) 01:44:23.43
88ユーザーも99BASICに首ったけw
言語は目的じゃなくてただの手段だろうに、ことあるごとに99BASICは〜とかいうコンソールさんは
なんかいろいろ見失ってるなw
351 :
─☆─ [ X | I.I.T. ] COURANT DE CONSOLE ◆T1993q9cOh.1 :2014/08/14(木) 03:46:02.09
>>339で99BASICに首ったけの事実が証明されているw
ベーシックしかプログラムできない奴はボール反射ゲームだけ作ってろ、
ベーマガには乗せてやるからおとなしくしとけ、みたいな風潮だったんだよ、たぶん
>> ボール反射ゲーム
作ってみて
>ボール反射ゲーム
ちょっと待って
月刊マイコンのプログラミング入門に載ってたから見てくるわ
今のPCのbasic for windows とかで壁うちゲームなんかをつくると、処理が速すぎてインターバルつける必要があるんだろうか
今やつくる自信もないが
357 :
─☆─ [ X | I.I.T. ] COURANT DE CONSOLE ◆T1993q9cOh.1 :2014/08/14(木) 12:29:47.70
ほらっ、早くっ、作れっ♪(アハ♪”
>> ちょっと待って
待ってる..........
>>359 99BASIC使ってみたら?
今すぐは無理でも使えるようになったら楽しいよ
100 REM 99BASIC ボール反射ゲーム
110 X=100
120 Y=100
130 SX=2
140 SY=1
230 REM
240 INTERVAL ON,10
250 ON INTERVAL GOSUB 400
270 REM
280 GOTO 270
290 END
400 REM
410 GOSUB 500
490 RETURN
500 REM main
510 CLS 3
520 X=X+SX
530 Y=Y+SY
540 IF X<50 OR X>600 THEN SX=SX*-1
550 IF Y<50 OR Y>300 THEN SY=SY*-1
560 CIRCLE(X,Y),50
600 RETURN
BASIC入門 (全11回)
http://dotinstall.com/lessons/basic_basic #01 BASICとはなにか? (02:29)
昔なつかしのプログラミング言語であるBASICについて、その概要と、レッスンにおける環境について説明していきます。
#02 「hello world」を表示させてみよう (02:57)
まずはBASICで「hello world」を表示させてみます。行番号の扱い方なども解説していきます。
#03 saveとloadを使ってみよう (01:34)
書いたプログラムを保存したり(save)、呼出したりする方法(load)について解説していきます。
#04 gotoを使ってみよう (02:41)
BASICの特徴的な命令であるgoto文について、その使い方を見ていきます。また処理を一時中止して、再開させる方法についても解説していきます。
#05 変数を使ってみよう (02:25)
数値や文字列に名前を付けられる変数についてその使い方を見ていきます。
#06 ifを使ってみよう (02:29)
if文を使った条件分岐と比較演算子について見ていきます。
#07 ifとgotoを組み合わせてみよう (02:50)
if文とgoto文を組み合わせて処理をしていく方法について学びます。
#08 for、whileを使ってみよう (02:56)
繰り返し処理を行うためのfor文、while文について見ていきます。
#09 gosubでサブルーチンに飛ばそう (02:30)
gosubを使ってサブルーチンに処理を飛ばす方法について解説していきます。
#10 inputでユーザー入力を受け付けよう (02:39)
input文を使ってユーザーからの入力を受け付けます。
#11 数あてゲームを作ってみよう (02:54)
今まで習ったことをもとに1から10の数を当てるゲームを作ってみます。
いまだにナイコンなので、また脳内RUNしてみます
誰も興味ないから宣伝しなくてイイヨ、これからわね
どうやって打ち返すのかわからない
パドルを左右に動くようにする。
もし、弾とパドルの座標が重なった場合、跳ね返るようにする。
ボール反射ゲーム=PONGではない
画面に/とか$とかちりばめられてるやつ
>>371 そうこういうの
ベーマガのプログラムってどの機種もこればっかで嫌だった
そうそう。
キャラクターが動く描写は
100 locate x,y :print"●"
とかやる原始的なやつ
>>372 99BASICは簡単で楽と言うのがセールスポイント。
>>374 >ベーマガのプログラムってどの機種もこればっかで嫌だった
あなたとしては、どのようなのだったら、良かったの?
当時はベーマガとPIO (だっけ?)で住み分けされていたね。
ベーマガの方が初心者よりだったね。
…釣りでしょ?答えないよ
答えないという答えを答えた時点で既に答えている
トントカイモ
スステムデスク
ハイネホイネプー
なにこのスレ10年たってもまだ3分の1
あとヨロ
10 FOR I=1 TO 10
20 BEEP 1:BEEP 0
30 PRINT I;
40 GOSUB 100
50 GOSUB200
100 A$=INKEY$
60 FOR N=1 TO 10:GOSUB 100:GOSUB 200:NEXT N
70 NEXT I
80 END
1 new
save "TEST1.BAS",a
kill "TEST1.BAS"
NEW ON 1
NEC PC-8001 BASIC Ver 1.8
Copyright 1979 (C) by Microsoft
Ok
HT 嘔吐 後藤 栗鼠兎 蘭CR
WIDTH 40,25
Ok
ROLL 100:ROLL 100
SAVE LOAD LIST RUN
console 0,25,0,1:color 0
courant de console:
200 garbage collection(0000-ffff):RETARN
NEW
CALL 0
Syntax error
AUTO
10 'save "TEST3.BAS",A
>>410 TABいっぱつで保存できるように ' と save の間はTABで空けておけ
マシン語入力するのって
monだったかな。もう忘れちゃったよ。
押し入れからPC88マーク2SR出てきた。
モニター処分してしまったが、2chRFコンバーダーあったので、アナログTV2chで楽しめそう
もん
うぃどず
mon
h]g
h]™
メモリチェックの画面が好きだった
プログラムとファイルの検索で「メモリ」って入れると今でもできるね(Win7)
NEW CMD
CMD PLAY "l8o4cde2fedce2"
SRじゃないなのでBEEPしかありませんでした…でも、ビィヒャラブラズラァ……って演奏だってヤレるのよぉ
いつからBASICもどきのBASICとは全然異なるものがBASICって名乗るように
なったんだろう。
BASICはGOTOを使ってナンボのもの
銀行GOTO
信用金庫GOTO
コンビニGOTO
ナンボになりました?
430 :
ナイコンさん:2014/09/28(日) 01:14:21.71
行番号で編集できないBASICは偽物。
RENUM
GOTO *HOGE
NEMUREN
GOTO *BED
gosub kosifuri
かけ算の表をつくろう
あとはよろしく
10 FOR X=1 TO 9
20 for y=1 to 9
30 print using "###";x*y;
40 next
50 print
60 next
15 print using "###";x;" : ";
5 DEFINT A-Z
ちゃんと1のだんから9のだんの数とかける数もでるようにしてくれ
print usingが即座に出てくるなんてすごいなもう忘れとったわ。まだ普段からBASIC使ってんのかな
俺だったらyのLOOPを外側にするけどな
1 print " "; :rem スペース モジ スウ、カクジ、テキトウ ニ チョウセイ シテ
2 for y=1 to 9
3 print using "###";y;
4 next
5 print
6 print "-------------------------------------" : rem 1ギョウメ ト オナジ...
15 print using "###";x;print " : ";
NEW
Ok
スペースは、3+1+3*9 で31じゃね
スペースじゃなくてハイフンだなさらに2つ足りない
次の問題
MOTOR(カチッ)
トランプを作り、シャッフルするコードを書きなさい。
> トランプを作り、
トランプをプリンタに52+1種類印刷すればいいのかな
> シャッフルするコードを書きなさい。
ロボットアームの制御かなんかかな
どう?
100 dim cd(52)
200 rem ジュンバン ニ セッテイ
210 for i=1 to 52
220 cd(i)=i
230 next
300 rem シャッフル
310 for i=1 to 52
320 j=int(rnd(1)*52)+1
330 k=cd(i)
340 cd(i)=cd(j)
350 cd(j)=k
360 next
ハートはどれ?
4で割ったあまりがゼロならばハートです。
ダイヤはどれ?
ジョーカーは?
N88-BASICのRND()の返す値って最大で1.0じゃなかったっけ?
> 320 j=int(rnd(1)*52)+1
これ正しく動くのかな。
1未満だろ
猫踏んじゃった〜♪(アハ♪ 猫踏んじゃった〜♪(アハ♪ ガチャガチャキーボードォ〜♪(アハ〜♪”
算盤捌き♪(サァーーーーーッ ガチャ♪(アハ〜♪”
460 :
sage:2014/10/11(土) 14:15:40.94
>>460 time$()のフォーマットを 00:00:00 の全部で8桁にして、
date$()のフォーマットを 00/00/00 の全部で8桁にして、
----
sync コマンドが 新規で必要。
実行速度を制御する為に必要、PC毎にスピードが異り、機種依存性を無くするために。
1/30 秒毎に実効をする。
50 syncon
60 syncrate 30
100 rem game-loop
120 print time$()
190 sync
200 goto 100
こうすることにより
100-200のゲームループが1/30秒毎に1回ループを実行する。
1秒間に30回実行される。
>>461 >time$()のフォーマットを 00:00:00 の全部で8桁にして、
>date$()のフォーマットを 00/00/00 の全部で8桁にして、
対応済み
>sync コマンドが 新規で必要。
interval timerですね、、、
このソフト自体に需要があれば、検討します。。。。。
所詮ブラウザなので、難しいかもしれない。
いつものウィルスサイトご苦労
例えば、 extime$() として 00:00:00:00 のように高精度にして 1/100秒まで表示させる。
1秒単位では荒いから、1/10秒程度は欲しい。
ウィルスサイト誘導テクニックw
>>464 もし、やりたいことが、mSオーダで一定期間ごとにgosub
するような機能であれば、
on interval gosubとかが必要でしょうね、、、
basic側のループ内でtime$の返り値をみて、
定期的に実行する命令の実行・不実行を判断するようにしても、
ループ途中の命令での遅延が毎回変わるので、
time$を見た瞬間に、すでに期待した時間を大幅に
通りすぎている可能性が高いです。
>>465 virusではないと信じています。
ただ、バグや、不適切なBASICプログラムを実行すれば
ブラクラになるかもしれません。
おそらく、
10 goto 10
run
とかすれば、ブラクラになります。
スペード、ダイヤ、ヘイヘイヘヘイ、ハートにクラブ、ヘイヘイヘヘイ、のマークについては
460氏の言う通り、4で割った余りによって算出できます。
あらかじめ別の配列にマークを入れておいて、一緒にシャッフルする方法も可能ですが。
我がサイトの
http://natunoyono.yumenogotoshi.com/ssj.html では、マークを別配列&一緒にシャッフル方法にしてあります。
N88じゃなくてN60-BASICですが。ソース見てちょ。
>>462 すみません、ジョーカーは考慮していません。ジョーカーを考慮に入れると、かなりややこしくなるし・・
>>463 N88-BASICに限らず、多くの機種のBASICがRND(1)で返す値は1未満で1.0にはなりません。
正しく動きます。
パンデミック誘導w
DEFINT A-Z とかやっちゃうと RND(1)*52 が52を返すのが紛らわしいところだな
え?それ変数の定義で関数じゃないでしょ?
>>460 10 input a
20 print a
30 goto 10
ここで、数値以外を入力すると、その後は入力を拒否され、入力出来ない。
>>460 10 if 0 < 1 then print "ABC"
Syntax error in 10
>>460 10 print "input ";
20 input i$
30 print i$
40 end
edit で これを[ run ]すると、inputを受け付けない。フォーカスが実効画面にいない、edit窓にいる。
thanks.
>>475 solved
>>476 inputへ入力する前に、何回か黒画面をクリックして、フォーカス移動を
試みてください。
(実装が悪く、input命令時は負荷がかかっているので、
フォーカスが移動しにくいのかもしれません)
>>477 フォーカス移動を、自動的に出来ないの? そうか、できないのか
>>460 10 if 1 then 30 : rem ****
30 rem
Syntax error in 10
>>460 JSに翻訳して動かすのも面白いんだけど、
どうせならブラウザで動くのもあるエミュレータ用かなんかに移植すれば
実装上の制約が少なくなって当時の文献とかも参考にしやすくなって
いいかなと思うんだけど、
実機手放してないからか、皆DOSのように公開待ちなのか、
なかなかそういう人って居ないんだよな。
>>460 10 data 5 : rem ***
Syntax error in 10
>>460 ちょっと大きいコードになると、
挙動不審になる。
データが不安定になるようだ、
原因がわからない。
コードは8Kバイト程度
8bitCPU(64kbyte)程度では動いて欲しいと思った。
>>484 もし可能でしたら、該当プログラムをsaveしてもらえないでしょうか。
正直に言って、そのレベルの大きさのプログラムは動かしたことない
ので、ブラウザの限界なのか、バグなのか、ぜひ知りたい。
表示が遅いだけじゃね?
487 :
ナイコンさん:2014/10/15(水) 22:25:27.45
訂正
私のマシンが1Gバイトと少ない
WindowsXp
>>487 DATAがちゃんと読めないバグがあったので、修正しました。
xp ie8 512MBで見る限りは,なんとか動いているように見えます。
ただ、run時に「スクリプトを停止しますかdialog」がでるようですね、、、
無視すれば動くようですが。
10 print 10
20 print 20
30 print 30
list
list 20
list -20
list 20-
list .
>>492 fixed
>>list .
は未実装、で許してください。
494 :
ナイコンさん:2014/10/18(土) 11:51:17.99
>>494 fixed,i think.
なお、行番号328は行番号振り間違いかと思われます。
color のパラメータってどんなんだっけ?
498 :
ナイコンさん:2014/10/19(日) 13:57:54.79
499 :
ナイコンさん:2014/10/19(日) 14:03:49.60
>>501 ありがとう。
このコードが白黒モードで動きます。 白黒スイッチの実装が無理だと思う。
consoleの第四パラメータ
>>502 there is no plan to implement two colors mode,
because it's a little bit difficult.
sorry.
1000 dim SN$(20)
1010 FOR I=1 TO 4
1020 print i
1030 READ sn$(i)
1040 NEXT I
1050 data 1,2,3
1060 DATA シブヤ72,メグロ73,ゴタンダ74,オオサキ75,シナガワ76,タマチ77
Out of Data in 1030
ついでに、iphone/androidで使えるように、
ローカルのBASICファイルを選択できるようにした。
(ただし、saveしない限りサーバにはアップしない)
PAINT は、実装されませんか?
>>507 技術的に無理っぽい。
graphicはhtml5のcanvasを使っていて、canvasに描画するとantialiasのせいで、
線がにじむ。
paintは、指定した色の線に囲まれた部分を塗りつぶすので、線がにじんでしまうと、
囲んだ部分を認識できず、画面いっぱいpaintしてしまう。
>>509 PC98用のソフトとして、つくるってこと?
現在の豊富な開発環境とメモリ・CPU資源があってこそ、ムノーな俺にも
作れるのであって、98の、あの貧弱なメモリと開発環境で
プログラム開発するのは俺にはむりぽ。
クロスコンパイル環境も、ないだろうし、、、
他の誰か頼む。
実機PC-9801 BASICに一番近いのが、
エミュでMS-Dos版のN88-BASICを動かすこと。
よく出来ていますよ。当然ですね
Windowsの上で動くN88BASIC互換BASICがいくつかある、
残念ながら、どれも、互換度が低い。
FreeBASICが BASIC言語として良い。
これは、QuickBASICと完全互換であり、
最新Windowsにも対応するBASICコンパイラー。
N88-BASICの機能をすべて含む。
もちろん、無料。
GW-BASICがある、これはIBM-PCの拡張BASICで、N88-BASICに似ている。
16bitDOSでなければ動かない、Winodows95なら良い、
64bit Windowsならば エミュレータを使うのが良いだろう。
残念ながら、日本語が使えない。
メモリ資源かあ。
EMSとか使えるフリーの処理系ってなんかあるのかな?
ラムディスクドライバ前提で、変数をファイルで持てば
ディスクの容量分の配列が実現できたりするんだろうか?
>>511 誰かBASICで互換BASIC組んじゃう人って居ないんだろうか?
515 :
ナイコンさん:2014/10/23(木) 09:43:33.16
EL_BASIC辺りでN88互換処理系を作るのは可能だろうか?
このスレに居る目的はなんだろうか?
ナイコンさんから脱却できたときの喜びが今でも忘れられない。思い出すためです。
そこに山があるからだろ
>>519 今にして思うと、みんなよくナイコンさんを脱出できたなあと思う。
PC8801、228000円。高解像度CRT168000円。ライバルの日立ベーシックマスターLevel3なんざ合わせて50万円、中古車買えたよ。クラスの友だちもみんなホイホイ買って、ポイポイ買い替えてたぞ
逆に言えば今の子はそういうの味わえないんだな。
今時のスマホとかと違って毎月の金を永遠に払わされる事はないから
只の端末じゃない所有感はあった気がするね。
動物園のパンダも借り物じゃなかった。
今時N88-BASICやるメリットってなんなの?
自己満足
N88-BASICが教育目的に良い、MS-Excelにも応用できる。
まったくの素人向けに、半期12回のプログラム実技授業で扱えるのに良いと思う。
一番簡単な選択だろう。
プログラム学習での通過点のひとつになる、次のステップには次の言語になるだろう、
N88って何の略?
NEC 8bit 2nd(de+8)
>>525 行番号があるというのは最早、コンピュータ考古学の域だろw
せめてQuickBASICだが、今はその後継のVBか。
ただ、まったくの素人のPCにはVBよりもExcelが入っている可能性がはるかに高いので、
最初はVB派生のVBAでいいじゃんってなるな、やっぱり。
530 :
ナイコンさん:2014/11/09(日) 12:47:45.99
ど素人に一からBASIC教えるならExcel-VBAだな。
VB.Netは、ありゃBASICを教えるんじゃなくて.NetFrameworkのプログラミングをVB.Netで教える、ぐらいには別物と思わないとダメだからなぁ。
ラベルを連番にして付けまくってもいいのよ?
ラベル数制限でできない処理系なんてある意味退化だしさ。
行番号使う気がなければ:でステーメント繋げば良いよね。
530
VBAが、行番号つきで書く事が出来る。
>>525 VB→VBA(エクセルワードをフロントエンドとして使う)の方が潰しが効く。
超基本命令と変数及び配列→ソートと経路探索描画までやれば講義でも充分。
試験評価は取敢ず完成していること→加点評価で禁則状態処理、文字変換に対応しているとかで良いのでは?
BASICが目的になってる奴等はダメだなw
CASLですか?
どのへんがCASL?
CAP-X
終了
数当てゲーム
10 CLS
20 K=INT(RND(1)*10)
30 WHILE…
アレ?忘れた
>今時N88-BASICやるメリットってなんなの?
SQLとかやるよりは身になると思うんだが
金にはならんけど
玉にはなる
ですわあ〜
10 CLS
20 K=INT(RND(1)*11)
30 WHILE N<>K
40 INPUT "アテナサイ";N
50 IF N>K THEN PRINT "オオキスギ"
60 IF N<K THEN PRINT "チイサスギ"
70 WEND
80 PRINT "アタリデス"
90 END
20行目でKが0ならなんもせんで当たるのでは
そしてGOTO使いまくりに・・・
一つの手としては、25 N=K+1 とかにしておく。
15 N=-1
初期値って大事だよね
変数の定義が必要
小吉より大吉だよね
RANDOMIZEなんとかとかやってない所為
ちなみに
>>543をVBScriptで書くと以下のようになる。やはりRandomize文が必要。
Option Explicit
Dim WshShell, strInt, intRnd, intLow, intHi
Set WshShell = CreateObject("WScript.Shell")
intLow = 1
intHi = 100
Randomize
intRnd = Int((intHi - intLow + 1) * Rnd + intLow)
strInt = ""
Do While Len(Trim(strInt)) = 0
strInt = InputBox(intLow & "〜" & intHi & "の中から、どの数字か当ててみなさい。","【数当てクイズ】")
If CInt(strInt) > intRnd Then
MsgBox "不正解!大きすぎます。", vbOKOnly, "【判定結果】"
strInt = ""
ElseIf CInt(strInt) < intRnd Then
MsgBox "不正解!小さすぎます。", vbOKOnly, "【判定結果】"
strInt = ""
Else
MsgBox "正解!今回は " & intRnd & " です。", vbOKOnly, "【判定結果】"
End If
Loop
Set WshShell = Nothing
WScript.Quit()
>>543が
GOTOを使わないでやろうとしたのは自分にも理解できた
BASICで構造化なプログラムは無理なのか楽だからGOTOしちゃうのか、どっち?
ここでまさかのシステムハンガリアンw
名前だけ、intとかついてるけど宣言で型指定ないからバリアントだろ
>>553 大規模プログラムが作れるならGOTOとか構造とか関係ないと思うな。
作れない奴がそういう基礎を学ぶべきなだけで、箸のもち方とか、
字の書く順序とかキーボードでブラインドタッチ指の押す位置が
重要だとそんなのと変わらないと思うわ。
そして下に飛ぶGOTOはスパゲティプログラムになるとは思わない。
GOTO文の問題は上に跳ぶから意味不明や解読に問題がでてくる。
まあ俺が一番大きなプログラム作ったのは電子手帳の組み込み系で
アセンブラでの開発ぐらいだけど(1人で)大規模ではないかもしれんけど。
上と下とで
どっちにGOTOで飛ぶと問題なくて
どっちにGOTOで飛ぶとスパゲティになり解読しずらくなる
って単純な上下問題じゃないんじゃない?
上にGOTOでも下にGOTOでもわかりづらいリストを書くヤツはいる
少なくとも書き手が
「他人から見て見やすい、わかりやすい」を意識していないと
どっちに飛んでもわかりづらくなる
ま、下にあるサブルーチンが
上にあるサブルーチンをGOSUBで呼び出すと
確かにわかりづらくはなるな
WHILEループはそもそも「一度もループ内を通過しない場合もある」ので
最低一回はアテナサイ入力をするのなら
WHILEループの直前に1回、アテナサイ入力をする必要がある
(または、UNTILループにする)
K=INT(RND(1)*11)
INPUT "アテナサイ";N
WHILE N<>K
IF N>K THEN PRINT "オオキスギ"
IF N<K THEN PRINT "チイサスギ"
INPUT "アテナサイ";N
WEND
PRINT "アタリデス"
END
(行番号は省略)
「アテナサイ入力が2重に書かれていた無駄に冗長だ」と思うなら
アテナサイ入力はサブルーチンにする
>>557 構造化言語使ってて上への Goto は、あり得ない
あると言うなら例を出してくれ
下への Goto が全ていいわけじゃないけど、多重ループからの脱出とかならあるかも(て言うか、これ以外の例は知らん)
>>559 初期化シーケンスの途中でエラーが発生した場合で、残りのシーケンスをやめて
エラー処理シーケンスに一気にジャンプしたいときにgotoを使う。
それでシーケンスを最初からやり直す場合は、無限ループかなんかにしておく。
記述がBASICじゃなくて申し訳ないが、こんな感じ。
while(1) {
/* 初期化シーケンス */
if(init1() == ERROR) {
goto err_label;
}
if(init2() == ERROR) {
goto err_label;
}
/* メイン処理 */
while(1) {
/* エラーが発生したらループを抜ける */
}
err_label:
/* エラー処理 */
}
もちろん、if文でいっぱい書けばgoto使わなくても同じ処理は書ける。
あと、初期化関数を1つにまとめればまだ良いのだが、世の中、そうそう甘くはないのだ。
>>560 とりあえずそれって下への Goto だよね
そのケースなら goto でもいいと思う
C ならおれは...
for(;;){
if(init1() == ERROR || init2() == ERROR){
エラー処理
break;
}
for(;;){
/* メイン処理 */
break; /* 内側ループから抜ける */
goto Exit; /* 二重ループから抜ける ... これはありかも */
}
}
Exit:;
のように書くかな。
初期化の処理がもっとややこしいなら別関数でもいいし。
いろいろ書くのがめんどいからかなり省略したけど、タスク制御と絡んでて、
別関数にどうしても分離できないとかあるのだ。
分離できたとしても、結局、初期化シーケンスという起動時にしか呼ばれない
部分にかけるコストに見合わないとかね(無理に組むのは時間がかかるし、
複雑になるのでメンテナンス性が悪化する)。
gotoを使うのはそれを使った方が理解しやすいソースを書けるレアケースであって、
通常はgotoを使わずに書くべきというのは相違ない。
上向きのgotoは確かに無いね。
ってか、continueで何とかなるんじゃね?
実用的にもgotoを上方向で使いたくなる場面はまず無さそう。
むしろ、それを使いたくなったときは、処理シーケンスが
何かおかしなことになってるような気がするw
continueってN88BASICでもあったっけ?
N88-BASICには無かったかも。
ループの終わりにgotoでジャンプさせる手で、前向きのgotoの排除は可能。
N88-BASICの時代プログラム言語はPASCALとあとCOBOLぐらいしか知らなかった。それもクリーンコンピュータのMZ80にテープでインストールするやつ。
566 :
─☆─ [ X | I.I.T. ] COURANT DE CONSOLE ◆T1993q9cOh.1 :2014/12/13(土) 12:26:33.03
99BASICとDarkBASICで決まり。(キリッ
その頃、対戦オセロゲームをすべてBASICで書いたことがあった。いわゆるスパゲッティソース
何でこんなプログラムが動いているのか自分でもわからなかった。
> 大規模プログラムが作れるならGOTOとか構造とか関係ないと思うな。
> 作れない奴がそういう基礎を学ぶべきなだけで、箸のもち方とか、
そうとう時代遅れだね、
現代では非構造化を推奨することは、ありえない。
GOTOを使う事が稀にあるが、ほとんどがGOTO無しで行える。
もし、GOTOを多用すれば悪害の方が多い。
GOTOを排除し、構造化プログラミングを推奨するのが現代の流れである。
脈略なくてごめん。
プログラム書く前のフローチャート作成大事だよね?
それほどでもないよ
>>569 フローはほとんど書かない
C 風の言語で書くことが多い
ファイルを開く
while(!ファイルの最後){
一行読み込み
if(!空行){
処理する
}
}
ファイルを閉じる
みたいな感じ。
システム全体のフローは書くけど
プログラム単位でのフローは書かない
必要になるサブルーチンのサブルーチン名を手書きで列挙はする
> プログラム書く前のフローチャート作成大事だよね?
思考を整理するためにも、チャートを書くのが良い習慣です。
それが、正式である必要が無くて、概略の漫画でもよい。
チャートや仕様書を書かずにコードを書くと出来ることもあるが、
出来ないでめちゃくちゃになることもあり、不安定である。
ですから、事前に考察してチャートを含む文書化するのが良い。
N88BASICで構造化プログラミングって難しくないか
現代のフローチャートは仕事の手順書レベルのものだな。
まぁ、まともに書いてあるフローチャートは見たことないがw
プログラムのレベルで書くとか意味が無いし、割り込みとかスレッドとか書けないし、
むしろ、やってはいけないレベルだね。
現代では構造化チャートとかモジュール結合度とか、そういうのを考える方が重要だと思う。
このスレの主旨から外れ気味だし、構造化できないN88-BASICとかあり得ないよね!
と、元も子もない結論でしめてみるw
>>574 たぶん誤解してると思うけど、N88BASIC で構造化プログラムは可能だし、十分な機能を持ってるよ
577 :
名無しさん@そうだ選挙に行こう:2014/12/13(土) 23:01:05.44
>>574 技術評論社からN88BASICを題材に
構造化BASIC とかいう本が出てた
このスレのタイトル「N88−BASIC入門」だったんだ。
ここに来る人は皆、ひととおりは通り過ぎて来てるみたい。
だから入門よりも昔覚えたBASICの活用方ないかな。
例えば、C言語でAndroidアプリ開発するみたいに、BASIC言語でAndroidのアプリに(UNIX上に?)コンパイルする方法とかないかしら。
もちろんAndroidの仮想マシン(Dalvik VM)上でね。
>>構造化言語使ってて上への Goto は、あり得ない
>>あると言うなら例を出してくれ
なんとなく上へのGotoを書きたくなった時とか
>>581 強制されたら意味なく従いたくないとか、反抗期の高校生かっつーの w
若さゆえの過ち
俺たちゃ永遠の童貞中学生さ
今時はgoto使ってぐちゃぐちゃにする奴より、
むしろ使うべきところで使わずにif-ifネストの斜めなソースを書いたり、
やたらフラグが多くて流れを追い難いソースを書く奴の方が多そう。
586 :
ナイコンさん:2014/12/18(木) 02:33:13.02
>>578 スマホ用N88とかあればおもしろいんだろけどな。
10 K=INT(RND(1)*11):INPUT "アテナサイ";N: IF N>K THEN ? "オオキスギ":GOTO 10 ELSE IF N=K THEN ? "" アタリデス ELSE ? ""チイサスギ" GOTO 10
N88で動くかこれ?
10 K=INT(RND(1)*11):? MID$("オオキスギチイサスギアタリデス",1+(1+(N>K))+(1+(N<K))*5+(1+(N=K))*10),5):if N<>K THEN 10
GOTOなくしてみた。ちょっと酔ってる
THEN 10ってのはGOTOだろ
本来なら
(1) IF N>K
THEN
PRINT "オオキスギ"
ELSE
PRINT "チイサスギ"
ENDIF
と書きたいとろこだが
当時の8ビットマイコンのBASICだとENDIFなくてIF文は1行で書かなくてはならない
だから(1)の記述を擬似的に再現しようとすると次のように書くことになる
(2) IF N>K THEN PRINT "オオキスギ"
IF N<K THEN PRINT "チイサスギ"
この書き方のポイントは
THENとELSEが、同じ桁からはじまるように書かれている事。
条件によって2つの結果があり、
その2つの結果がどう違うのかを見比べやすい。
(2)を見て「なんだ素人くさい書き方だ。こんなのELSEを使えば1行で書けるじゃん」と思う人は
「見やすいプログラムを書こう」という意識がない人
>>10 K=INT(RND(1)*11):INPUT "アテナサイ";N: IF N>K THEN ? "オオキスギ":GOTO 10 ELSE IF N=K THEN ? "" アタリデス ELSE ? ""チイサスギ" GOTO 10
585が言っている書き方の、まさに典型
>>10 K=INT(RND(1)*11):? MID$("オオキスギチイサスギアタリデス",1+(1+(N>K))+(1+(N<K))*5+(1+(N=K))*10),5):if N<>K THEN 10
ここまできたら「見やすいプログラムを書く」なんて発想がそろもそもない
こんなのをテクニックだと思っている人は
>>GOTOなくしてみた。ちょっと酔ってる
確かに自分の小手先のテクニックに酔っている。
「実行結果が同じなら、どう書いてもいい。自分ならもっと短く書ける。複雑になるが。」
複雑に書いてしまっては、わかりやすさに欠ける。
「実行結果が同じで、より素直に簡単に書く」のが、わかりやすい書き方
「より素直に簡単に書く」事によって、
短い記述になることもあれば長い記述になる事もある。
短ければいいというものではない。
もちろん、長ければいいというものではないけど
わかりやすさを優先して書くと一見すると無駄に長く見えてしまうような場合もある。
2つ目 入力がなくなってる
>>10 K=INT(RND(1)*11):? MID$("オオキスギチイサスギアタリデス",1+(1+(N>K))+(1+(N<K))*5+(1+(N=K))*10),5):if N<>K THEN 10
こういう書き方は、当時確かに流行った
IF文は1行に書ききらないとならないという制約や
メモリの都合上といった理由もあるけど
普通のプログラム教本ではこんな書き方は推奨しないし
普通にプログラムを書いていて
こんな書き方にあまりたどり着かない
それなのに、なぜこういう書き方が流行ってしまったのか・・・
それはDrDが、こんな書き方を褒めてしまったせいだ!
高速化、省メモリのためだろ。ぶっちゃけ効果はかなりあったりするので、
ソースの読みやすさより優先されても仕方が無い。
コンパイラの吐き出すコードが読みやすさなんてどうでもいいのと同じ。
>>588のを複数行で書くと
10 K=INT(RND(1)*11):
20 INPUT N
30 IF N>K THEN ?"オオキスギ":GOTO 10
40 IF N<K THEN ?"チイサスギ":GOTO 10
50 ?"アタリ"
60 END
となり、ごくフツーの書き方で別に読み難くは無い。
ちなみにこれ一回入力されるごとに「数」が変わって、やたら高難易度なんだが…
せっかくの大小表示もヒントにならないしw
596 :
ナイコンさん:2014/12/18(木) 11:23:44.88
110 K=INT(RND(1)*11)
120 while 0=exit
130 INPUT N
140 IF N>K THEN print "オオキスギ"
150 IF N<K THEN print "チイサスギ"
160 if n=k then exit=1
170 wend
180 print "アタリ"
190 END
俺は、このように書く。
ブロックなら、ON GOSUB もある。
>>596 このケースだとWHILEループは適してないのに、
無理矢理使おうとして色々酷いことになってるね。
全角カタカナはいいのか?
forループで試行回数制限すればいいんじゃないの?
>>596 なぜか110から始まってるから
100 N=-1
とでも入れて
120をwhile N<>Kにすれば160は不要となる
>>595 わかりやすい
>>ちなみにこれ一回入力されるごとに「数」が変わって、やたら高難易度なんだが…
>>せっかくの大小表示もヒントにならないしw
本来はGOTO 10じゃなくてGOTO 20だよね。
>>587-588 の書き方がおかしんだけど、本人も酔っ払ってたみたいだからそこまでの追求は無用か。
K=INT(RND(1)*11) はループの外にあるべきだし、INPUT はループ内になければならない。
これを両立しようとしたらKの初期設定とINPUTで、最低2行はあるべき。
WHILEを使うなりFOR〜NEXTのSTEPをSTEP 0にして添え字をループ内で書き換えたり、
なんてすれば1行で書くことも可能かもしれないけど
そこまですると手段が目的になってしまって元々の目的を見失っているような。
1 IF K=0 THEN K=INT(RND(1)*11):INPUT"アテナサイ";N:?MID$("オオキスギチイサスギアタリデス",1+(1+(N>K))+(1+(N<K))*5+(1+(N=K))*10),5):if N<>K THEN 1 ELSE
K=0:IF N THEN 1
だから、Kが毎回変化しないようにしろよw
1 K=-(K=0)*INT(RND(1)*11):INPUT"アテナサイ";N:?MID$("オオキスギチイサスギアタリデス",1+(1+(N>K))+(1+(N<K))*5+(1+(N=K))*10),5):IF N<>K THEN 1 ELSE K=0:IF N THEN 1
あれ?真偽値って幾つだったっけ?
0 か -1
0か0でないか
true ⇔ false
うるせーなー。そんなに1行で書きたきゃ、ほれ。
1 DIM A$(2):FOR I=0 TO 2:READ A$(I):NEXT:K=INT(RND(1)*11):N=99:WHILE K<>N:INPUT"アテナサイ";N:PRINT A$( SGN(N-K) +1):WEND:DATA チイサスギ,アタリデス,オオキスギ
・わかりずらい条件式は使わない
・それなので、あたりハズレのメッセージの長さによって条件式を書き換える必要はない
・Kは当たるまで変化しない
・配列はきっちりDIM宣言をする
条件式を使うと、なんとなくリストがわかりづらくなる
「こんなにわかりづらいけどオレにはわかる。これ書いたオレ、カコイー!!」
くだらん。やめろ。
わかりづらい条件式がカコイイように感違いする輩が増えたのはベーマガとDr.Dのせいだ
ベーマガは大抵ゲームだから難読化上等でしょう。
見ただけで攻略法が分かっちゃうと興醒めの場合もある。
K=K-(0=K)*INT(RND(1)*11)
>>609 数当てゲームだから難読化OKってことかw
内容が分かってたら絶対買わないが、使ってみると意外と重宝する福袋の中身みたいな。
MID$の最後の引数の1+(N=K)ってとこ
多分、NとKが等しければ2、そうでないなら1を期待してるんだろうけど、
こういう式でN=Kは代入文じゃなくて、比較文として処理されるん?
あまり気が進まないんだけど、1行君のやっていたMID$を使う方法で書いてみた。
確かに短くはなるな。
メッセージの長さが3通りとも全部同じ長さって前提なら、結構いい方法かな。
1 K=INT(RND(1)*11):N=99:WHILE K<>N:INPUT"アテナサイ";N:PRINT MID$("チイサスギアタリデスオオキスギ",1+(SGN(N-K)+1)*6,6):WEND
これが短くする限界かね。
こんな事に挑戦するよりもわかりやすく書く事を心がけようぜ、1行君。
>>こういう式でN=Kは代入文じゃなくて、比較文として処理されるん?
そそ。0か-1になるんだよ。
こんなの使うとわかりづらくなるだけなんだけど、
当時のベーマガではDr.Dがプログラムを短くするテクニックだとほめていたんだよ。
1行で書くとか短く書くってのは今の時代では完全に趣味の領域だね。
昔は記憶領域が小さくて短くせざるをえない時代もあったから、その時代ではアリだったのだろう。
今の時代は小さくすることよりもメンテナンス性やモジュールの再利用性が重視されるようになった。
まぁ、昔と今じゃ価値観が変わったってことだな。
当時は、著しく処理速度が遅かった。
4MHzのZ80でBASICインタプリタだから。
メモリも少なかったし
だから、色々なテクニックがあった。
でも、今の時代は、 ドキュメントになるコードが良いコードだよ。
そりゃ打ち込む時代とコピペの時代じゃ違うけど、
そっちはこの板でやる意味ないのよね。
>>614 > 比較文として処理されるん?
そう、比較文と言うか比較演算子として扱われる
ちなみに C/C++ の = は、代入文じゃなくて演算子
>>こういう式でN=Kは代入文じゃなくて、比較文として処理されるん?
PRINT 1=1 とか
PRINT 1=0 とかやってみれば、テストできるよ
N88BASICが、常に行番号を使い、それに加えてラベルを使う事もできる。
行番号無しで行いたければ、N88の次世代である QBASICを使いなさい。
QuickBASIC や FreeBASIC では、行番号が無くなりラベルを使う。
>>621 定数同士の比較なら=は比較として容易に判別できるけど、
変数同士だと代入と比較をどうやって判別したらいいのかがよくわからない。
これがちゃんと正しく判別できないと、インタプリタ作れないよね?
>>623 よく理解しました。ありがとうございます。
>>624 関係演算子と代入は、構文の中の位置が異なり、
インタプリタは構文解析を行うから混同される事は無い。
BASIC言語において、関係演算子が使われる場所が限定される。
ちなみに、マイクロソフト系は、関係演算の結果を整数の数値として処理している。
>>616 うん。末期のトラ技コンピュータで1行プログラム特集やってた。酔狂だわw
くだらない(←ほめ言葉)プログラムばかりで案外楽しかったな。
>>624 比較を括弧でくくればおk
今思うとBasicでこんなのやるなよと思う。
なぜか当時流行ってて月刊誌やアスキーの薄い本で使われてた記憶がある。
一行でリアルタイムなシューティングゲームは無理?
一行はキツイな
下スクロールで一画面(80×25文字)プログラムなら作れたが……
若いころだったらなw
今のトレンドだとTwitterに1回で投稿できる140文字かな
昔、アスキーで1行コンテストあったな
635 :
ナイコンさん:2014/12/21(日) 12:31:40.55
>>624 本来命令文があるところに変数名に続き=が出てきたら代入文になる、
それだけだよ。
N88-BASIC文法のBNFとかないのかな?
FreeBASICが、ソースコードで公開しているから、調べてみるのも良い
MBASIC86がVectorにある。 N88互換のソースコードつきだから、調べるとよろしい。
動くのであれば
そのマシンでできる事なら何やってもOK、なコンテストだったんでしょう
より多くのマシンに対応できるようにすればするほど
地味な事しかできなくなってくるしね
peekやpokeあるやは
>460で試せないやなあ残念ながら
エントリマップどこかにない?
エントリマップ ← 何それ???
ROM内ルーチンのエントリポイントのアドレスリスト
N88(86)
……(´・ω・`) ショボーン
N-BASICならあるけど、
8086なのかな?
何に使うの?
本体(動作品)が98しかない
PC9801のROM呼び出しを使って、何をしたいの?
ROM-BASICの解析をしたいのかな?
98なら88のエミュレータ動くな
まあ86→z80の変換してROMを移植するのは容易じゃないだろうが。
>>648 本体しかないとはモニターがなくて表示できないってこと?
それともシステムディスクとかソフトがないから何もできないってこと?
センター試験旧数学U・旧数学Bで、まだ行番号付きのBASICがぎりぎり現役だなw
新課程では削除されてるみたいだし、今年で終わりかな?