昔、私はりんごを持っていました][。
コマンド コールを覚えています – 151 しかし、それが何をしたか思い出せません ?
コール -151
マシンコードモニターに入ります -
http://www.skepticfiles.org/cowtext/apple/memorytx.htm
アップデート:
そのリンクは無効になっているようです。Wayback Machine の代替手段は次のとおりです。
http://web.archive.org/web/20090315100335/http://www.skepticfiles.org/cowtext/apple/memorytx.htm
Wayback がなくなった場合に備えて、記事全文を次に示します。
APPLE CALL、PEEK、POKE LIST CALL 144 SCAN THE INPUT BUFFER CALL 151 ENTER THE MONITOR NORM APPLE CALL、PEEK、POKE LIST -------------------------------------------------- ---------------------------- CALL -144 入力バッファのスキャン CALL -151 モニターに正常に入る -155 に電話してください モニターに入ってベルを鳴らしてください CALL -167 モニターに入ってリセット CALL -198 ベルを鳴らす (SIMULATE CONTROL G) CALL -211 PRINT "ERR" とベルを鳴らす CALL -259 テープから読み取る CALL -310 テープへの書き込み CALL -321 ディスプレイ A、S、Y、P、および S レジスタ CALL -380 通常のビデオモードを設定 CALL -384 反転ビデオ モードを設定 -415 に電話してください 20 の指示を分解してください CALL -458 VERIFY (比較 & リストの違い) CALL -468 突き刺した後のメモリ移動 60,61 OLD START - 62,63 OLD END 64,65 NEW END - 66,67 NEW STAR CALL -484 MOVE CALL -517 表示文字と更新画面の場所 CALL -531 DISPLAY CHARACTER, MASK CONTROL CHAR., & SAVE 7 REG. & ACCU CALL -550 A レジスタの 16 進数値を表示 (アキュムレータ) -656 を呼び出してベルを鳴らし、キャリッジ リターンを待ちます CALL -657 GET LINE OF INPUT, NO PROMPT, NO L/F, & WAIT(COMMA,COLOON OK) CALL -662 GET LINE OF INPUT、プロンプトあり、L/F なし、待機 CALL -665 GET LINE OF INPUT、WITH PROMPT、LINE FEED、および WAIT 上記の 3 つの呼び出し (-657、-662、-665) は、512-767 からの入力バッファを参照します。 CALL -715 GET CHARACTER CALL -756 キーが押されるのを待つ CALL -856 TIME DELAY (69、XX を押して遅延時間を設定) CALL -868 は、カーソルから行末までのカーソル行をクリアします CALL -912 テキストを 1 行上にスクロール CALL -922 改行 CALL -936 クリアスクリーン (ホーム) CALL -958 カーソルから画面の一番下まで画面をクリア CALL -998 カーソルを 1 行上に移動 CALL -1008 カーソルを後方に 1 スペース移動 CALL -1024 表示文字のみ CALL -1036 はカーソルを 1 スペース分前方に移動します CALL -1063 現在の出力デバイスにベルを送信 CALL -1216 テキスト & グラフィックモード CALL -1233 カーソルを画面の一番下に移動 CALL -1321 コントロール E CALL -1717 はカーソルを 5 行下に移動します CALL -1840 分解 1 指示 CALL -1953 CHANGE COLOR BY +3 CALL -1994 CLEAR LO-RES SCREEN (上位 40 行) CALL -1998 クリア グラフィック画面 (LO-RES) CALL -2007 垂直線 CALL -2023 水平線 CALL -2458 ミニ アセンブラを入力してください CALL -3100 採用ページ 1 をクリアせずにオンにする CALL -3776 SAVE INTEGER CALL -3973 LOAD INTEGER CALL -6090 RUN INTEGER CALL -8117 リスト整数 CALL -8189 基本入力して続行 CALL -8192 BASIC を入力してリセット (INTEGER BASIC KILL) CALL -16303 テキストモード CALL -16304 グラフィックス モード CALL -16336 トグルスピーカー CALL 42350 カタログ ディスク CALL 54915 はスタックをクリーンアップし、「メモリ不足」エラーをクリアします CALL 64166 がコールド スタートを開始する (ディスクの起動) 64246 に電話してください。 CALL 64367 はメモリ LOC 1010 と 1011 をスキャンし、値を場所に突き刺します (PEEK(1011)-165) に等しい 1012 -------------------------------------------------- ---------------------------- PEEK 33 テキストウィンドウの幅 (1-40) PEEK 34 テキストウィンドウの上端 (0-22) PEEK 35 テキスト ウィンドウの下部 (1-24) PEEK 36 水平カーソル位置 (0-39) PEEK 37 垂直カーソル位置 (0-23) PEEK 43 ブートスロット X 16 (ブート後) PEEK 44 最後の HLIN、VLIN、またはプロットの終点 PEEK 48 低解像度カラー値 X 17 PEEK 50 テキスト出力フォーマット: 63=反転 255=ノーマル 127=フラッシュ (PEEK 243 を 64 に設定) PEEK 51 プロンプト文字 PEEK 74,75 LOMEM アドレス (INT) PEEK 76,77 HIMEM アドレス (INT) PEEK 103,104 FP プログラム開始アドレス PEEK 104 8 が返された場合、FP は ROM にある PEEK 105,106 FP 可変スペース開始アドレス PEEK 107,108 FP アレイ開始アドレス PEEK 109,110 FP 数値記憶域アドレスの終わり PEEK 111,112 FP 文字列ストレージ開始アドレス PEEK 115,116 FP HIMEM アドレス PEEK 117,118 FP 回線番号が実行されています PEEK 119,120 FP ラインでプログラムが停止した場所 PEEK 121,122 FP 回線が実行中のアドレス PEEK 123,124 データが読み取られる行 PEEK 125,126 データ ロケーション アドレス PEEK 127,128 入力またはデータ アドレス PEEK 129,130 FP 最後に使用した変数名 PEEK 131,132 FP 最後に使用された変数アドレス PEEK 175,176 FP プログラム終了アドレス PEEK 202,203 INT プログラム開始アドレス PEEK 204,205 INT 可変ストレージの終わり PEEK 214 FP RUN フラグ (オートラン IF >127) PEEK 216 ONERR フラグ (ONERR がアクティブの場合は >127) PEEK 218,219 LINE ONERR が発生した場所 PEEK 222 ONERR エラー コード PEEK 224,225 最後の HPLOT の X 座標 PEEK 226 最後の HPLOT の Y 座標 ピーク 228 HCOLOR 値 0=0 85=2 128=4 213=6 42=1 127=3 170=5 255=7 PEEK 230 高解像度プロット ページ (32=ページ 1 64=ページ 2 96=ページ 3) PEEK 231 スケール値 PEEK 232,233 形状テーブル開始アドレス PEEK 234 高解像度衝突カウンター PEEK 241 256 マイナス速度値 PEEK 243 フラッシュ マスク (64=PEEK 50 が 127 に設定されている場合にフラッシュ) PEEK 249 ROT VLAUE PEEK 976-978 DOS 再突入ベクトル PEEK 1010-1012 リセット ベクトル PEEK 1013-1015 アンパサンド (&) ベクトル PEEK 1016-1018 コントロール Y ベクトル PEEK 43140-43271 DOS コマンド表 PEEK 43378-43582 DOS エラー メッセージ テーブル ピーク 43607 MAXFILES 値 PEEK 43616,46617 最後の BLOAD の長さ ピーク 43624 ドライブ番号 ピーク 43626 スロット番号 PEEK 43634,43635 最後の BLOAD の開始アドレス PEEK 43697 MAXFILES のデフォルト値 PEEK 43698 DOS コマンド文字 PEEK 43702 基本フラグ (0=INT 64=FP ROM 128=FP RAM) PEEK 44033 カタログ トラック番号 (17 が標準) PEEK 44567 カタログ ファイル名の文字数マイナス 1 PEEK 44611 セクター番号とボリューム番号の桁数マイナス 1 PEEK 45991-45998 ファイル タイプ コード テーブル PEEK 45999-46010 ディスク ボリューム ヘッダー PEEK 46017 ディスク ボリューム番号 PEEK 46064 セクター数 (13=DOS 3.2 16=DOS 3.3) PEEK 49152 READ KEYBOARD (IF >127 THEN KEY HAS BEEN PRESSED) PEEK 49200 トグルスピーカー (クリック) PEEK 49248 カセット入力 (>127=BINARY 1、ボタンを押すと 127) PEEK 49250 パドル 1 ボタン (>127 IF ボタン PRESSGD) PEEK 49251 パドル 2 ボタン (ボタンを押すと >127) PEEK 49252 読み取りゲーム パドル 0 (0-255) PEEK 49253 読み取りゲーム パドル 1 (0-255) PEEK 49254 読み取りゲーム パドル 2 (0-255) ピーク 49255 読み取りゲーム パドル 3 (0-255) PEEK 49408 読み取りスロット 1 PEEK 49664 読み取りスロット 2 PEEK 49920 読み取りスロット 3 PEEK 50176 読み取りスロット 4 PEEK 50432 読み取りスロット 5 PEEK 50688 読み取りスロット 6 (162=ディスク コントローラー カード) PEEK 50944 読み取りスロット 7 PEEK 64899 は、使用しているコンピューターを示します 223=アップル II または II+、234=フランクリン エースまたは?、255=アップル IIE POKE 33,33 リストをスクランチし、引用文のスペースを削除する POKE 36,X プリンタータブとして使用 (X=TAB - 1) POKE 50,128 は、画面へのすべての出力を非表示にします POKE 50、RANDOM SCRAMBLES 出力から画面へ POKE 51,0 が「NOT DIRECT COMMAND」を無効にし、時々機能しない POKE 82,128 ロード時にカセットプログラムを自動実行する POKE 214,255 は FP で実行フラグを設定し、任意のキーストロークでディスクプログラムを実行します POKE 216,0 ONERR フラグをキャンセル POKE 1010,3 は、リセット ベクタを開始するように設定します。 POKE 1011,150 コールド スタート (ブート) ポケ 1010,102 メイク ポケ 1011,213 リセット ポケ 1012,112 ラン POKE 1014,165 はアンパサンド (&) ベクトルを設定します あなたのプログラムをリストするために1015,214を突く POKE 1014,110 アンパサンド (&) ベクトルを設定 ディスクをカタログ化するために1015,165を突く POKE 1912+SLOT,1 on APPLE Parallel Card (P1-02 PROM 付き) は L/F を有効にします APPLE パラレル カード (P1-02 PROM を使用) の POKE 1912+SLOT,0 は L/F を有効にします POKE 2049,1 これにより、プログラムの最初の行が繰り返しリストされます POKE 40514,20 は、テキスト ファイルのグリーティング プログラムを許可します POKE 40514,52 はバイナリ ファイルのグリーティング プログラムを許可します POKE 40993,24 これで可能 40994,234 個のディスク コマンドを挿入 POKE 40995,234 ダイレクトモード POKE 42319,96 は INIT コマンドを無効にします POKE 42768,234 すべてキャンセル POKE 42769,234 DOS エラー ポケ 42770,234 メッセージ POKE 43624,X は、コマンドを実行せずにディスク ドライブを選択する (48K システム) POKE 43699,0はEXECファイルをオフにしますが、FP、CLOSEまで開いたままにします POKE 43699,1 は、EXEC ファイルをオンに戻します。INIT、または MAXFILES が問題です POKE 44452,24 は 20 個のファイル名を許可します (2 個の追加) カタログの一時停止前に 44605,23 を突く POKE 44505,234 は削除されたファイルを明らかにします カタログ内の 44506,234 の名前を突く POKE 44513,67 カタログはロックされたファイルのみを返します POKE 44513,2 カタログを通常に戻す POKE 44578,234 キャリッジをキャンセル ポケ 44579,234 カタログの後に返品 Poke 44580,234 ファイル名 ポケ 44596,234 キャンセル POKE 44597,234 カタログストップ 画面がいっぱいのときに 44598,234 を突く POKE 44599,234 各ファイルでカタログを停止 Poke 44600,234 NAME とキープレスの待機 POKE 46922,96 これはディスクを許可します POKE 46923,234 初期化 入れずにポケ 46924,234 ディスク上の POKE 44723,4 DOS POKE 49107,234 言語を防ぐ POKE 49108,234 読み込み中のカード 再起動中に 49109,234 を突く POKE 49168,0 クリアキーボード POKE 49232,0 表示グラフィックス POKE 49233,0 表示テキスト POKE 49234,0 フルグラフィックスを表示 POKE 49235,0 表示テキスト/グラフィックス POKE 49236,0 ディスプレイ グラフィック ページ 1 POKE 49237,0 ディスプレイ グラフィック ページ 2 ポケ 49238,0 表示伝承 POKE 49239,0 ディスプレイ採用 -------------------------------------------------- ---------------------------- 48Kメモリマップ 10 進数 16 進数の使用法 -------------------------------------------------- ---------------------------- 0-255 $0-$FF ゼロページシステムストレージ 256-511 $100-$1FF システム スタック 512-767 $200-$2FF キーボード キャラクター バッファー 768-975 $300-$3CF 多くの場合、ユーザー プログラム用の空きスペースとして利用可能 976-1023 $3D0-3FF システム ベクトル 1024-2047 $400-$7FF テキストと低解像度グラフィック ページ 1 2048-LOMEM $800-LOMEM プログラム ストレージ 2048-3071 $800-$BFF テキストおよび低解像度グラフィックス ページ 2 または空きスペース 3072-8191 $C00-$1FFF RAM APPLESOFT が使用されていない場合の空き容量 8192-16383 $2000-$3FFF 高解像度ページ 1 または空きスペース 16384-24575 $4000-$5FFF 高解像度ページ 2 または空きスペース 24576-38999 $6000-$95FF 空き容量と文字列ストレージ 38400-49151 $9600-$BFFF DOS 49152-53247 $C000-$CFFF I/O ハードウェア (予約済み) 53248-57343 $D000-$DFFF APPLESOFT IN LANGUAGE カードまたは ROM 57344-63487 $E000-$F7FF APPLESOFT または INTEGER BASIC IN LANGUAGE カードまたは ROM 63488-65535 $F800-$FFFF システムモニター PEEK: 任意のメモリ ロケーション L を調べるには、PEEK (L) を印刷します。ここで、L は 10 進数です 番号 0 ~ 65535。連続する位置 L で 2 バイトの数字を覗くには L+1、印刷ピーク (L) + ピーク (L+1) * 256 POKE: 値 X (0-255) をロケーション L に割り当てます。ポケL、X。TWO-BYT を突くには NUMBER (X>255 の場合に必要)、POKE L,X-INT(X/256)*256、および POKE L+1,INT(X/256)。 CALL: ロケーション L で機械語サブルーチンを実行するには、CALL L を呼び出します。 楽しみのために、これを試してみてください: POKE 33,90. 次に、プログラムをリストしてみてください。または試してください: 0,99 またはポーク 50,250 またはポーク 50,127。通常に戻すにはリセットを使用してください。 真の乱数生成のために、これを試してください:X= RND(PEEK(78)+PEEK(79)*256) 最後の BLOADED ファイルの開始アドレスを見つけるには、PEEK(-21902)+PEEK を使用します。 (-21901)*256 (結果は 16 進数) 最後の BLOADED ファイルの長さを決定するには: PEEK(-21920)+PEEK(-21919) *256 (結果は 16 進数) エラーが発生した原因となった行番号を特定するには、X を次のように設定します: PEEK(218 +PEEK(219)*256 -------------------------------------------------- ---------------------------- フレドリック・L・ライス / 懐疑的なタンク
Call -151 でモニターに入り、3D0G で BASIC に戻り、モニターでスロット # を入力してから Ctrl-P を入力すると、そのデバイスが起動します。20年経った今でも覚えてるってすごい!
また、-151 は Apple ][ の 16 進数の表現方法であり、これは $FF69 (Apple II で使用される 16 進数の構文、つまり 0xFF68) を意味するはずです。CALL は、引数 (ここでは -151) で指定されたアセンブリ サブルーチンを呼び出す Apple Basic コマンドです。IIRC、このコマンドは、2 の補数解釈を使用して、$8000 から $FFFF の間のアドレスの負の 10 進値としてアドレスを受け入れることができます。
歴史に興味のある方は、Apple ][ のモニター ROM リスト (6502 アセンブリ内) をご覧ください。アドレス $FF69 には、ユーザーからのマシン コード処理コマンドを処理するコマンド プロンプトの開始である MONZ というラベルが付いています。プロンプトとして「*」を使用するもの。非常に原始的なコマンド プロンプト。
クリキー、それは過去からの爆発です。モニターROMに入ったと思います(これとInteger BASICの間で引き裂かれましたが、モニターだったと確信しています)。
Apple II エミュレーターをダウンロードして調べることができます。