1read 100read
2011年10月1期昔のPCアセンブラが買えずハンドアセンブルした人の数→
TOP カテ一覧 スレ一覧 削除依頼 ▼
・ 次のスレ
ライフゲームだゴルァ!! 富士通FM−8探索隊 芸術としてのマイクロソフトBASIC 世界で一番最初に誕生したパソコンって何?
アセンブラが買えずハンドアセンブルした人の数→
1 :02/01/10 〜 最終レス :11/02/24 ジャンプ命令でアドレスを手計算したよね? C9
2 : RETだっけ?
3 : H68TRから始めたから、ハンドアセンブルなんてしたことないよ。
4 : PC-80/88時代は、アセンブラを知らずにハンドアセンブルしてた。 後からアセンブラというツールの存在を知って、なんて便利なんだ!と。 決して「買えなかった」って事ではないので sage。
5 : 88にはマシン語モニターに簡易アセンブラがついてた。 でも、インテルニーモニックだったからとっつきにくくて使わなかった。 持ってた解説書がZ80ニーモニックだったし。
6 : 1ラインアセンブラのほうが シンボリックアセンブラよりしっくり来てた奴前に出ろ!
7 : アセンブラは買った事無いな。CP/M買ってフリーの使ったり、その後にS-OSだったり。 フラグ変化を無視して良い場合 3E 00 より AF。
8 : LD A,0 → XOR A ですね。常用してました。
9 : Z80基板作って、モニタをROMに焼いて・・・ 最初はハンドアセンブルしてた、 その後、ハンドアセンブラで簡易アセンブラを作った。
10 : スイッチをパチパチして暗記しているIPLコードを打ち込んでから紙テープを読ませて・・・ ↑こんなバカ、じゃなくて本物のプログラマは実在するのか?
11 : >>8 ゼビウスを作った人達は「LD A,0」を多用してたみたいだね。 ゲーム的には歴史に残るゲームなのに、作ってるのは素人集団。
12 : >>11 そういうキミはいまだに素人(ワラ
13 : 今年38になりますが、気分はまだまだ素人です。
14 : >>11 ゲ製板に、製作者本人(遠藤氏)がキャップ付でいるよ。 理由を聞いてみたら?
15 : パッチ当てがやり易い M1サイクルが減って消費電力が下がる
16 : CD0500
17 : というか、全員やった事あるんじゃないの?
18 : >11 xor aだったらフラグが変化するから ld a,0を使っていたか、 コンパイラを使っていたのではないですか。
19 : >>18 アーケードでコンパイラ使うようになったのは、もっとずっと後になります。 自分もZ80覚えたてのときはXOR A猿だった。 その後、必要ないところはLD A,0にするようになったよ。読みやすいから。
20 : コンパイラってもいろいろあるから。 N-BASICも一部コンパイラ(PL/M)で書かれていたんじゃないの?
21 : >>1 ←これを相対ジャンプで書き直してくらさい
22 : >>21 JP $-($-1)
23 : なんか「キム少年のマシン語会話講座」(←間違ってるかも)みたいになってきたな(藁
24 : アセンブラ欲しかったなぁ・・・。< M6800猿
25 : CD5055
26 : CALL-151
27 : JR (-2-27)
28 : >>10 昔のIPLは短かったし、何度も入力させられていたから、みんなやっていたとか。 そういう旨のことを、ウチの助教授がほざいていました。
29 : >>28 今時のマシンの起動の方が遅い鴨
30 : MZ-80B vs Win2k 起動時間対決とかやってみたら面白そう。スレ違いsage
31 : >>28 学校の片隅に転がってました。 さすがに授業でやったのは、穿孔テープ、穿孔カード、 マークシートカードだけですね。 マークシートカードは他の授業中に机の上でプログラムが 入力できるので重宝しました。
32 : C3 01 00
33 : 初代88でハンドアセンブル。 大して知識ないのに、CMDなどの未使用BASIC命令を使おうとして、 実行>暴走>自動リセット を繰り返してた日々が懐かしい。
34 : 再ロードはカセットテープから?
35 : 文房具屋でコーディング用紙って売ってたよね。 アセンブラ用とか、フォートラン用とか。
36 : >>35 なつかしい! 漏れは、Campusノートに線を引いて書いていたYO!
37 : >>34 CMDやISETをPRINT命令やLOAD命令にしただけだったので、 最初は、手入力オンリー ROM-BASICマンセー(T_T)
38 : X1TURBOのROMバイオスは手品のようなコードがちりばめられており、結構勉強になりました。
39 : 8801のN88BASICのROMの、スタック馬鹿一代には参った。
40 : ふと、こんなのを思い出しました。 関係のないレジスタを壊さずに HL=HL+A をやりたい時、 PUSH BC LD C,A LD B,0 ADD HL,BC POP BC これだと6バイト、 ADD A,L LD L,A ADC A,H SUB L LD H,A これだと5バイトでした。 後半がとても斬新でした。
41 : >>40 おお、しかも20ステートだ。
42 : >>40 絶妙な差し手で決まる7手詰めの詰め将棋のよう。 感動しました。前半の方は僕もよく書いたです。 無難というか、ADD HL,BCの用途目的のまんまっすね。
43 : 漏れも、懐かしくて思い出したよ。 5ビットデータのMSB2ビットだけ左にスライドする必要があったとき LD C,A AND 00011000b RLCA LD B,A LD A,C AND 00000111b OR B が、 LD B,A AND 00011000b ADD A,B で実現できることに気づいたとき震えたね。 我が厨房ハンドアセンブル時代。
44 : ハンドアセンブル… レジスタの遣り繰り。 1バイトを削る努力。 新ルーチンの発明。 コード表とにらめっこ。 ビット操作に明け暮れる日々… 嗚呼!少年の日の無邪気さよ! あの集中力をもう一度!ううっ…(涙
45 : LD A,0をXOR Aとするのは基本でしたけど、 たまにSUB Aって書く人いませんでした? あと、CP 0に相当するものが、OR A派と、 AND A派に分かれてましたよね。
46 : >45 それ使っていましたが、sub a,aですよん。cp 0はor aかな。 実際よくハンドアセンブルしていたのはポケコン。 Z80はアセンブラ。
47 : あ、違ったかな。subはa無しで、sbcがa有りだったかなあ。 間違っていたらスマソ。
48 : >>47 ADD,ADC,SBCはHLレジスタが対象の場合があるからAつきで、 SUB,AND,OR,XORはA専用だったからAなしだったんですよね。 ちなみに自分の場合は、XOR(引き算をしたというフラグが 立たないため)とOR(ANDより名前が短い)だったのですが…。 SUB Aを使っていた理由は何でしょう?
49 : Carry→A (00, FF) に、 sbc a,a をよく使ったね。
50 : >>49 それは今でも使う
51 : みなさん、PUSH POP は使うほう?
52 : >>51 おれは使ってる…。もうメモリはいっぱい有るし、Z80速くなったし(涙
53 : ex hl,bc するのに、push, pop使って push bc ex (sp),hl pop bc とかやってた。
54 : >48 なんとなくかな。ポケコンにXORが無かったからかな。 なぜかSUBのほうだった。 今もZ80使っているけど、最近はCのほうが多い。
55 : あぁ…なるほど、他のCPUの影響があったんですね。 そういえば、6502なんかもSUB(SBCだったかな?) を使うみたいだったから、そのへんの影響を受けてる 人もいたんでしょうね。 しかし今もZ80使ってるのってすごいですねー。
56 : >55 aki-80とかです。まあたまにですけど。
57 : >>55 6502 はレジスタ同士の演算なんかできないので LDA #0 とか素直に書きますよ。 65C02 なんかだと命令が色々拡張されてて ACC をクリアする CLA という命令とか もあって便利でしたね。
58 : >>44 禿げ同。本当、今では考えられないくらいの根性あったよな(w
59 : >23 色々勉強になったね。 ちなみに、知らん人のために簡単に説明すると A=I(一人称) B=YOU(二人称) CP B 「ごきげんいかが?」 (私とあなたの状態を比較している) 応用で CP (HL) 「ここはどこ?」 AND A 「私は誰?」 LD A,0 おなかすいた。 XOR A はらへった!(フラグで強調) SUB A ・・・は何だったっけ? PUSH AF それはともかく(おいといて)
60 : わかりやすいっすね。 厨房の俺にはありがたいっす。
61 : Z80シリーズはホントにはまったなあ。 あの頃はハンドアセンブルすんのに、ボロボロになったコード表を 持ってた記憶がある。 あとNECのPC-80/88シリーズのCPUって、必ず「Z80A相当」 って書いてあったのが、あの頃は意味わかんなくて不思議だった。 単にライセンス生産してて、自社製チップを使ってたんだよなー。 「mPD780C-1」 今でも覚えてる(笑) んで88MRから4/8MHz切り替えになって、V1/V2モードで 混乱して。 あと隠し命令探すのも流行って、雑誌で特集組んだりしてたよな。 高速グラフィック画面消去プログラムのコードが、クロック数の 少ないPUSH命令のかたまりと知った時には愕然としたし(笑) でも、あの頃のユーザーが一番パワーあったよな。 だって速度を求めるのに、実行クロック数を計算しながら組んだり メモリを節約する為に、XOR Aみたいに同処理を短いコードで 組んでみたり。 Windows時代の今の若い人たちはホントにうらやましい。 5インチFDD2台積んだNECのPC-8031Wなんか本体の PC-8001よりデカくて、30万以上してたんだぜ(笑)
62 : >61 IXをHとLにわけたり、しかも88やX1で組むとRAMだから 自己書き換えでIX+Aとかで前後128バイトのMAP検索とかもできちゃう。 今でも仕事でZ80使うけどROMだからなんも遊べなひ・・・。
63 : >>61 ライセンス生産じゃないよ。マスクを勝手にピーコして勝手に生産。 だから互換じゃなくて相当。どうせ書くならμPDにして。
64 : >>61 μPD780Cは、正式なライセンス生産じゃなかったと思う。 当時の正式なセカンドソースは、日本ではシャープだけだったかな? μPD780Cだと、NMIの処理か何かがちょっと違うとかあったと思う。 実用上は全然問題ありませんでしたがね。 で、そういう部分が問題にならないように、「相当」とキチンと 書いてたんだと思います。
65 : 今時のWinプログラマだけど、SSEやMMXやキャッシュ効率やストールで悩んでる 投機実行って言っても宣伝ほどの実力はないからアセンブラは不滅
66 : 隠しコマンドで思い出したけど、NEC製チップってさ、 裏レジスタあったよね? 一度に全てのレジスタの交換しか出来なかったけど、レジスタの 量が倍に増えたので嬉しかった。 問題はプログラムがPC-80/88専用になる事だけど、 あの頃は機種専用プログラムが当たり前だったし。 だってアセンブラだから(笑)
67 : >>66 Z80の元々の機能ですね。 EXXでBC,DE,HLのそれぞれの裏レジスタが使えた。 EX AF,AF'でAFの裏ね。
68 : そういえば今アセンブラの勉強できる本ってあるのかな。 アマゾンで検索してもほとんどが在庫切れ。
69 : >>64 あと東芝。
70 : ありゃ! すごい突っ込みが。 失礼しました(笑) 正式じゃなかったのか。 たしかに「相当」だったよね。 「μ」って機種依存じゃないのかって思ってさ。 スマソ。 しかしNECはVシリーズチップといい、そんな事ばっかり やってんのか(笑) 俺は結局286からはEPSON派になったが。
71 : >68 Z80? 686? Z80ならエミュのソース見ながら解説ページで勉強、とか。
72 : アスキーの「はじめて読む〜」シリーズはまだ売ってるよ。
73 : >>69 東芝はだいぶ後になってからのライセンスだったんですよね。 MSX2あたりの時代だったような。 だからパソピアなんかもNECのμPD780Cだったはずですよ。
74 : >67 裏レジは非常に使うのが難しかったですね。 よほどの事がないかぎり使いませんでした。
75 : BASICのREM文でアセンブラ書いてなかった? 俺はずーっとそれだったよ。P6で。 当時はC言語のソースに憧れてBASICのREM文に意味泣くmain() とか書いて一人悦に入っていたな(w
76 : >>74 確かに難しい…っていうか、それほど利用するチャンスが ありませんでしたね。IXやIYのほうが使い道はありました。 裏レジスタは、元々は割り込み処理のために存在していた、 とも言われてましたが、そういう例はあまりなかったような…。
77 : PC8801用のCP/Mは、糞でIX,IYが使えなかったような記憶がある。
78 : >>77 システムコールの前に PUSH IX; PUSH IY システムコールの後に POP IY; POP IX というふうにやってもだめだったの?
79 : 昔はZ80の命令表を暗記していて「脳内アセンブル」なんてことが 出来る人が居ましたナア…。 さすがに相対ジャンプ計算まではやってなかったみたいだけど。 自分が初めて使ったアセンブラはMSX用のROMカセットでした。 Coralという会社から出ていた。と思う。
80 : >79 当時は直接16進でうちこんでいく人は結構いたよ。 ジャンプも自動的に頭の中で変換されるらしい。 ハードやってる人だと自然にそうなっちゃうみたい。 でも88でモニタに直接16進でダカダカ打ってくのを見たときにはちょっとひいた。
81 : >76 サブに飛ばすときに、PUSHPOPするよりもとりあえず裏がえしとく みたいな使い方はシテタと思う。 Cの変数みたいだ。ローカルな。
82 : 裏レジは良く使った。やっぱ割り込み処理。 組み込み用途ばかりだったから、たまたまそうなだけだと思うが。
83 : >>79 Z80が出る前の8080時代でしたが,脳内アセンブルしてました. 16進でなくて8進で覚えるのがミソ.
84 : >>77 PC8801のCP/Mって、ASM.COMかDDT.COMの仕様と勘違いしてない?
85 : BIOSが勝手にIXやIYを使って壊すから、とか、 割り込み処理ルーチンがそういうことする、とか。 MSAだったらやりかねないかも…。
86 : >>76 えー、裏レジ使わないでZ80の最適化は語れないよー。 レジスタの割り当ては、もう細心の注意を払ってさぁ・・・ それでも10%の高速化の為にルーチンの80%を書き なおすなんて事はよくあったよ。今考えるとアホくさい けど、当時はそれが楽しかったりしたんだ。
87 : >>79 16進ダンプ見ながら、脳内逆アセンブルする人も 結構いたと思う。
88 : >>75 アセンブラと関係ないんだけど、 FMのKコンパイラって、ソースをBASICの注釈で書くようになってたね。 元々強力なフルスクリーンエディタ(?)をROMで持ってるんだから、 それを使おうというわけで。うまい方法だと思った。 同じ方式のアセンブラとかあったのかな。
89 : FFシリーズの初期メインプログラマだったナーシャ・ジベリは、 完璧脳内アセンブルができる人だったらしい 彼の開発環境にはプリンタはなく(バグが出ないから) さらに命令クロックも考慮したコーディングをしていたらしい なにやら、どのルーチンに分岐しても、それを処理する クロック数が常に同じになるように作られていたらしい 今はカルフォルニアでレストランを経営しているらしい
90 : >>89 恐ろしく懐かしい名前が。 聖剣2...。
91 : >>89 仕事で彼のコードを見せてもらったことがあります。FCです。 adxとせずinxを並べたルーチンを呼んでるところとかあったな。 >今はカルフォルニアでレストランを経営しているらしい いいことを聞きました。
92 : ハンドアセンブルのおかげで、16進を逆方向に言えるようになった人は 多いと思う。
93 : >>86 脳内アセンブルで裏レジ使って、混乱して吹っ飛ばしたことも、しばしば。 CPUクロックの遅い時代って、ほんと最適化が必要でしたね。 「お、こりゃ便利だ」とか思ってIX,IY使ったら、激遅で使い物にならなかった なぁ... Z80の裏命令を初めて知った時も、試しに使ってみたら、吐くほど遅かったし。
94 : >>92 16進逆順とはちょっと違いますが、ANK文字の アスキーコードは、今でも即座に16進数で言えます。 もう、何の役にも立ちませんが…ね(藁
95 : >>88 >同じ方式のアセンブラとかあったのかな。 富士通純正のアブソリュートアセンブラが同じ方式だったよ。
96 : >>93 昔、IX・IYの利用価値について、知人と言い争ったことがあった。 でも、絶対使わないとった自分も、最終的には使った。 頻出する固定データが4バイト以下のプログラムなら、 LD A,(nn)を使うより、LD A,IXHなどを使うほうが早い。 欠点は、アセンブラが対応していないので・・・
97 : BASICMasterJrに6単位TTYを繋いでハンドアセンブルでドライバを 作ったことがある。なかなか動かなかったが逆アセンブラは作って いたのでそいつで逆アセンブルしたらすぐバグが見つかって動くよ うになった。なんで逆アセンブルすることにすぐに気がつかなかっ たのだろうか。
98 : Cのスタックフレームや構造体のアクセスには IX, IY レジスタって 便利なんだけどね。ハンドアセンブルじゃそんなコード書かんしな。
99 : >>96 オレはインデクスレジスタが2本のCPU以外ではゲームを作る気にならんかった ふつう、アセンブラでも敵キャラを構造体にして持つよね
100read 1read
1read 100read
TOP カテ一覧 スレ一覧 削除依頼 ▲
・ 次のスレ
ライフゲームだゴルァ!! 富士通FM−8探索隊 芸術としてのマイクロソフトBASIC 世界で一番最初に誕生したパソコンって何?