ASSEMBLER ALASM JP

From Z80 Machines Wiki
Jump to: navigation, search

1.メモリー

ALASMは複数のソーステキストを同時に処理できます。 各テキストは、独自のメモリページにあります。 PAGE [ページ]またはssENTER(リストから)を使用して、編集するテキストを選択できます。 ページは、メモリマスクを使用して、上位メモリドライバと同様に列挙されます。 ページ番号の下位3ビットは、ポート#7FFDのビット0〜2と常に同じです。 ALASMがロードされると、ページ番号の8ビットすべてでメモリをテストします。 XXXX kBマスクXXとして画面が表示されます。これは、ALASMがXXXX kBのメモリを設立し、XXのビットがページの変更に使用されていることを意味します。 これらのビットは、PAGEなどのページをマスクするために使用されます。スタックアドレスは#6dffを超えてはなりません。 ALASMは#8000-#bfffにあります。 #8000-#bfffにコンパイルすると、システムページにコンパイルされます。 プログラムを実行するかALASMを終了するか、デバッガーを使用すると、#8000-#bfffがシステムページに切り替えられるため、プログラムがその場所に設定されます。 ALASMは、IMPORT、EXPORT、およびMOVEに低メモリを使用します。 コンパイルはスタックを広範囲に使用します。

2.ALASMコマンド

BREAKを押すと、コマンドを中断できます。 コマンドが変更されたテキストを失う可能性がある場合、コマンドは保存を要求します。

 Quit [address][,page]

ALASMを終了します。 パラメーターが指定されていない場合は、RETを介して終了し、それ以外の場合は「ページ」の「アドレス」へJP

Debug

STS7.0にジャンプします。 (#db06、セットアップで指定されたページ)

 Run [address][,page]

プログラムを実行します。 デフォルトでは、「アドレス」=最後のORGアドレス、「ページ」= 0。

Work [drv:][filename[.ext]]

ファイルを現在のページにロードします。 デフォルトでは、拡張子は「H」です。 「ファイル名」にはワイルドカードを含めることができます(カタログを参照)。 この場合、最後のファイルフィッティングがロードされます。 「ファイル名」が指定されていない場合、ユーザーはリストからファイルを選択します。

Catalogue [drv:][mask]

ディスクカタログを表示します。 デフォルトでは、mask = "*.*"(すべてのファイル)。 マスク形式:「?」 は任意の記号を意味する場合があり、「*」はすべての次の記号が任意の種類のものであることを意味します。 区切り文字(「.」または行末)は、それ以降のすべての記号がスペースであることを示しています。 「CATALOGUE C」は、ファイルを表示しないディスクパラメータを表示することを意味します。

Name [newfilename[.ext]]

現在のソーステキストの名前を変更します。

Edit [drv:][filename]

現在のページのテキストを編集します。 ファイル名を指定すると、この名前のファイルが現在のページにロードされます。 ディスク上に存在しない場合、メモリ内に作成されます。

merGe [drv:]<filename>

指定したソーステキストを現在のソーステキストの末尾に追加します。

counT <expression>

算術式を評価します。

 sYmbol [mask | = number_expression]

マスクまたは値別にラベルのリストを表示します。 アセンブリ後にのみ機能します。 <number>-ラベル値NoDef-ラベルは割り当てられていないが使用されていたMacro-labelはマクロ名であるWrong-コンパイルエラーのためにラベルが未定義です。

Assemble

現在のソーステキストをアセンブル(コンパイル)します。

Save [+|!][drv:]

現在のソーステキストをディスクに保存します。 「+」を追加すると、変更されたすべてのテキストが保存されます。 「!」の場合 その後、メモリ内のすべてのテキストが保存されます。

Move

TR-DOS MOVEを実行します。 #7400より低いメモリを使用します。

Info

メモリ内のバージョン番号、システムページのリスト、およびファイル(テキスト)のリストを表示します。 変更されたテキストは「+」でマークされます。 コンパイルエラーのあるファイルにはエラーカウントがあり、他のファイルには最初の行が表示されます。

Page [page]

指定されたページが最新になります。

driVe <drv>

指定されたドライブが最新になります。

Jumb[+]

パラメータがない場合、現在のテキストをスキャンして、ディレクティブ「-」を「+」に変更します(この操作は、すべてのソーステキストの読み込みでも実行されます)。 「+」を追加すると、メモリ内のすべてのテキストがスキャンされます。

 ssENTER

ALTERとも呼ばれます。 カーソルキーを使用してメモリ内のファイルを選択できます。

Ban [+]

現在のテキスト(または「+」の場合はメモリ内のすべてのテキスト)を削除します。

次のコマンドはオーバーレイを使用します。

 conFig

セットアップ。 ディスク上のALASM本体に保存できます。

 impOrt [drv:] [mask]

プレーンテキストファイルをALASM形式に変換します。 Maskは、ファイルを選択するためのファイル名マスクです。 小文字のトークンワードの大文字を要求します(トークンワードがない場合はトークン化されません)。 ALASMは1行につき1つのコマンドのみを許可するため、「:」による改行を要求します。 テキストがページを超える場合、次のページ番号も要求されます。

 eXport [+] [drv:]

現在のソース(または「+」の場合はすべて)をプレーンテキストに変換し、ディスクに保存します。 プレーンテキストはCRであり、CR + LFではありません。

3.エディターコマンド

エディターには、編集用のほとんどの画面と、現在のページとファイル名が表示されるステータスの下の行、このページの空き領域、マーク/削除された行バッファー(ポケット)のサイズ、およびテキストサイズと編集モード(Ins / Ovr)。

エディターコマンドリスト(Caps Shift + Symbol Shiftの拡張キー):

Quit

メインのALASMシェルを終了します。

Assemble, counT

メインのALASMシェルのように。

Begin, End

テキストの開始と終了に移動します。

Search[検索文字列]

カーソルの直後の位置からテキストの終わりまで検索します。 検索はssIで繰り返すことができます。ssIは、現在の位置から開始するか、カーソルが最後にある場合は先頭から開始します。 検索文字列が指定されていない場合、古い検索文字列が使用されます。

sYmbol [ラベル名]

定義されたラベルを検索します(つまり、行の最初にあります)。 labelnameには、ラベルの最初のいくつかのシンボルを含めることができます-これで始まるすべてのラベルが見つかります。

Xreplace string1 <Enterを押して> string2

string1を検索してstring2に置き換えます。 交換を求めます:Y-はい、N-いいえ、さらに検索、G-はい、さらに詳細、BREAK-停止。

coDe XXX> [symbol_code]

指定されたコードでシンボルを挿入します。 XXXは、カーソルの下のシンボルコードを示します。

Restore

カーソルの後にポケットデータ(マークおよび削除された行)を挿入します。 ポケット追加フラグをリセットして、次のポケット操作でポケットをクリアします。

Clear

ポケットをクリアします。

Ins / ovr

編集モードの変更:挿入して上書きまたは元に戻します。 状態は構成を介して保存できます。

Undo

現在の行の変更を元に戻します(カーソルがまだ移動されていない場合)。 それ自体で元に戻すことができます。

Labels

行にテキストが含まれていないすべてのラベルを表示します。 これらは通常、プロシージャ名です。 ユーザーは、カーソルキーとEnterキーを使用してそれらの間を移動したり、BREAKしたりできます。

編集モード

編集モードのキー:

ssI-検索の継続ssQ(PCキーボードのHOMR)

カーソルを0番目のカラムに移動します

ssE(PCキーボードのEND)

カーソルを行末に移動します

ssSpace

現在の行を削除します。 ポケットに追加されます。

ssW(PCキーボードのIns)

行が「マーク」されます。これはポケットに追加されることを意味します。ポケット追加フラグがオフの場合(復元後)、操作前にポケットが空になります。

csSP

TabまたはRus / Lat(configで切り替え可能)

cs1

Rus / LatまたはTab

cs2

カーソルの下にスペースを挿入(常に挿入、上書きしない)

ssENTER

メインALASMシェルcs8と同じ

ALTER(右矢印)

前のコマンドのシンボルを記憶する

挿入モード:

シンボルが入力され、残りのワードが右に移動します。ワードは、行に1つしかスペースがない行の一部です。 たとえば、ニーモニックを含む行にラベルを入力すると、ニーモニックは移動しません。

左矢印

カーソルは左の最初の非スペースに移動します。

右矢印

カーソルは、右側の最初の非スペースに移動するか、さらに記号がない場合は、次の集計位置。

すべてのモード:

Enterは行を分割します。 右側に記号がない場合、Enterは、ニーモニックが通常入力される8番目の位置に移動します。 右側に記号があり、カーソルが8番目の位置にある場合、Enterの後も集計は保持されます。 これは、コマンドからラベルを移動するためです。

cs9(PCキーボードのDel)は、カーソルの下のシンボルを削除します。 さらに記号がない場合次の行を結合します(結果が64シンボル以下の場合)

行の先頭でcs0(PCキーボードのBackSpace)を押すと前の行に結合します。

4.アセンブラーディレクティブ

ORG address[,page]

コンパイルアドレスを設定します(DISPシフトに関して)。 デフォルトでは、ページは以前に別のORGで言及されたページです。 アセンブリの開始時は0です。

label EQU value

ラベルを値として定義します。 値は、評価される式である場合があります。 既存のラベルを再定義するには、label = valueを参照してください。

 DISP adress

プログラムのワークアドレスを設定します。これは、コンパイルされたワークアドレスとは異なる場合があります。

 ENT 

プログラムの作業アドレスを現在のコンパイルアドレスに設定します。 例:

SCREEN EQU#4000
      ORG #8000
      LD HL,BEGIN             ;Source: routine
      LD DE,SCREEN            ;Destination: screen area
      LD BC,END-BEGIN         ;Size: routine size
      LDIR                    ;copy
      CALL SCREEN             ;call it
      DI 
      HALT                    ;hang forever
BEGIN DISP SCREEN
MARKA DEC A
      HALT 
      JP NZ,MARKA             ;we use JP and it works
      RET 
     ENT 
END

この方法で現在のDISPシフト(shift = org-disp)を取得できます:

a ORG 0
 ENT 
ORG a + shift
 DISP a


 INCLUDE "drv:filename" [,page]

途中で別のソースをコンパイルします。 「ファイル名」はディスク上の名前です。 名前にはワイルドカードを含めることができ、ディスク上の最後のフィッティングファイルがロードされます。 ""は任意のファイルです。 この名前で「ページ」にすでにある場合、ロードされません。 「ページ」が指定されていない場合、現在のページにロードされ、現在のソースが上書きされるため、含まれているソースが終了した後に再ロードされます。 現在のソースは次の行から継続します。 例:

LDIR 
      INCLUDE "TOKENIZE",1
      OTDR 
      INCLUDE "ALASM2"
      HALT 

LDIRがアセンブルされ、次にページ1にロードされる「TOKENIZE.H」ソース、OTDR、現在のソースの上にロードされる「ALASM2.H」ソース、次に現在のソースが再ロードされます。ディスク(前に保存することを忘れないでください)、HALTから続行します。

MAIN "filename"[,page]

現在のソース(プロジェクトのマイナーユニットと見なされる)の代わりに、指定されたメインソースをコンパイルします。 ソースの最初のコマンドでなければなりません。 記号「.」 ファイル名の「*」は「?」として指定する必要があります。 例:

MAIN "MAKE6?7",6
      LDIR 

ASSEMBLEが実行されると、コンパイルはページ6にあるMAKE6 * 7ソースから開始されます。これは、MAINとLDIRを含むこのマイナーユニットを含むことになっています。 INCLUDEされると、MAINディレクティブは無視され、LDIRからコンパイルが続行されます。

 INCBIN "drv:filename" [,size]

ディスクからロードされたsizeバイト(またはディレクトリで指定されたサイズ)のコードブロックをコンパイル済みコードに含めます。 ディスク上のファイルがサイズよりも長い場合、部分的にロードされます。

 DUP <番号>

コンパイル中に何度も繰り返されるブロックの始まり。 数値はいつものように表現することができます。

 EDUP 

このブロックの終わり。 DUPは別のDUP内にある可能性があります。 例:

DUP 32
      LDI 
      LD A,B
      OR C
      JR Z,$+3
      LD (HL),D
      EDUP 

このブロックは32回コンパイルされます。 ラベルで構成されるカウンター(label = valueを参照)を使用でき、条件付きコンパイル分岐を使用できます。

REPEAT 
      <body>
      UNTIL0 <expression>

<expression>が0になるまで<body>を繰り返します。

 DB byte|string[,byte|string...]

DEFBと同じ。 バイトは式である場合があります(結果の下位バイトが使用されます)。 例:

       DB "A",13,10,"big",13,5+5,"brown",13,10,"fox",13,10
      DEFB "jumps over",13,10,"the lazy dog",EOFsymbol
      DW word[,word...]


 DW word [,word...]

DEFWと同じです。 例:

 DW ALASKA,BUFFER,12,#BD15,32767,.NUMB1
      DEFW 12345,34567


 DS howmanytimes [、bytes]

DEFSと同じ。 バイト(デフォルトではゼロバイト)は、指定された回数だけ現在のコンパイルアドレスに挿入されます。 例:

      DS 10,#E5
      DEFS 32,#ED,#B0


 DD [#] hexbyte [hexbytes]

16進バイトをコンパイルします。

 DD 1D4FDC, 4223

は、以下と同じです

 DB #1D, #4F, #DC, #42, #23


 +<something>

行サイズ=#2C ..#2Fでは使用しないでください! ディスクからテキストがロードされた後、行の先頭で「+」がスキャンされます(「-」は「+」になります)。 コンパイルはこれらの行をコンパイルし、「+」を「-」に変更して、2回目にコンパイルしないようにします。 例:

      LD HL,#DB00
        +SAVEADR
        +  ORG #DB00,7
 +           INCBIN "sts70r"
 +       ORG SAVEADR
       JP (HL)

STSは最初のアセンブリでのみロードされます。

label = expression

ラベルを定義または再定義します。 例:

label=expression
Define or re-define the label.
Example:
SHLUSS=0
        ORG 32768
        DUP #4000
        DEFW SHLUSS
SHLUSS=SHLUSS+1
        EDUP 

#8000の後のメモリは、単語0..16384で埋められます。

 IF0 <式>
       <body1>
       [ELSE
       <body2>]
       ENDIF 

<expression> = 0の場合、<body1>がコンパイルされ、そうでない場合は<body2>がコンパイルされます。

 IFN <式>
       <body2>
       [ELSE
       <body1>]
       ENDIF 

反対。 254層までの条件付きコンパイル内の条件付きコンパイルが可能です。

       LOCAL
       <本体>
       ENDL 

ローカルラベルブロック。 この構造内のすべてのラベルは、外部では見えません(@で始まるグローバルラベルを除く)。 LOCAL内のLOCALは許可されます。 ラベルがLOCALブロック内で定義されているが、このラベルが外部からアクセスされた場合、グローバルになります。

         LD HL,LABEL
        LOCAL 
LABEL
        ENDL 


        MACRO <macro_name>
        <body>
        ENDM 

マクロ定義

マクロ内:

\0 .. \9-パラメーター0,1,2、.. 9

\C-パラメーターの現在のシンボル

\N-パラメーターの次のシンボルに移動(何も返さない)

\S <char>-現在のシンボルの文字列until <char> symbol

\P-シフトパラメーターの列挙。 パラメータ1は0などになります。パラメータ0が返されます。

\R-\Pの前の初期パラメーターの列挙を復元します。

 <マクロ名> [パラメーター1 [、パラメーター...]]

マクロを使用します。 パラメーターはコンマで分割されます(引用符で囲まれたコンマはカウントしません)。

        MACRO DOWN
        LOCAL 
        INC \C
        LD A,\C
        AND 7
        JR NZ,LABEL
        LD A,\N\C
        SUB #E0
        LD \C,A
        SBC A,A
        AND -8
        ADD A,\R\C
        LD \C,A
LABEL
        ENDL 
        ENDM 

これは、画面アドレスを現在の行よりも下の行にカウントする一般的なDOWN HLまたはDOWN DEルーチンです。 このタイプの条件の使用:

 IF0 ""-"\ 1"

または:

 IF0?マクロ名\ 1-2

浮動小数点数のパラメーターを持つマクロを使用できます(パラメーターをシフトするには、\ Pを参照してください)。

 DISPLAY [/ L、] ["任意のテキスト"、] [[/ D | / H | / A、] [/ T、] expression]

アセンブリ中にメッセージや数字を表示します。 / D、/ H、および/ Aキーは、1つの次の番号の出力形式を定義します。 キーなしの番号は現在のシステムに表示されます(configを参照)。 / D-10進数、/ H-16進数、/ A-両方のシステム。 / Lは、行リードおよびキャリッジリターンなしで、古い行に表示することを定義します。 / Tは、指定された式とその値を示します。 例:

        DISPLAY "code size: ",/D,end-start
        DISPLAY /A,"abc+xyz=",abc+xyz
        DISPLAY "simple"," text"

        DISPLAY "This is one "
        DISPLAY /L,"message"


        DISPLAY /A,/T,abc+xyz

これは以下と同じです。

        DISPLAY /A,"abc+xyz",abc+xyz


 DISPLAY / A、 "abc + xyz"、abc + xyz
実行アドレス[、ページ]

アセンブリ中に指定されたルーチンを呼び出します。 すべてのポストラベルはまだ評価されていません。ALASMは#8000です。

IX と IY の半分: HX,HY,LX,LY.

このような例も可能です:

INF
SLI
OUT (C),0
EXA
EXD
JZ
JNZ
JC
JNC
LD L,0,H,'fnt

5.式

優先順位なしで左から右に評価されます(括弧を除く)。 16ビットの符号付き/符号なし整数が使用されます。

a+b

a-b

a*b

a/b

a&b

AND

a|b

OR

a!b

XOR

a>b

"a"を"b"ビット分右にサイクリックシフトします

a<b

上記と同様に左にサイクリックシフトします。

()

括弧です (最初に評価されます)

{a}

"a"のメモリアドレスの内容です

a~

現在の内容を反転します(-1-a)

?label

ラベルが定義されている場合は0を、いない場合は#ffffを返します。定義されていないが、以前アクセスされていた場合は1を、ラベルがマクロである場合は2を返します。

'a

aの上位バイト

.a

aの下位バイト

%const

バイナリ数値

$

現在のコンパイルしているアドレス(DISP内ではシフトします)

$$

現在のコンパイルしているページ

+および-を除くすべての操作では、ワンパスコンパイル方式により、以前に定義されていないラベルは許可されません。

6.エラー

0構文エラー

3 JR範囲外

6ラベルの二重定義

10 ROMへのコンパイル

11誤った操作

12間違ったMACRO操作

14システムスタックエラー

15ディスクエラー

アセンブリ後のエラー:

wrong short-間違ったshort diplacement

not defined-ラベルが定義されていない

7. CONFIG

Load FONT codes

フォント「FONT *」#9c40、#400(#8045、#3f0)をロードします。

Start page

ALASMの起動時に最新になるページ。

System page

非アクティブのときにALASMが存在する場所。

Symbol list

組み立て中にラベルを含み、その後使用できるページ。 ラベルに4ページが必要ない場合は、左から未使用のページをゼロにします。 使用される最初のページは右端のページです。 ラベルページは端から埋められます。

Post symbols

組み立て中に投稿ラベルが含まれ、その後使用できないページ。 定義する前に使用されるラベルを評価するためのデータが含まれています。 使用される最初のページは右端のページです。 ポストラベルページは最初から埋められます。

Pocket page

コピーバッファー(ポケット)を含むページ。 アセンブリはそれをクリアします。 Postと同じ場合があります。

 HImem driver

上位メモリのドライバーを設定します(#7000、#FF)

ファイル

alasm64 .B-ALASM 64ピッチローダー

alasm_64.C-ALASM

olasm_64.C-オーバーレイ

FONT64a .C

FONT64b .C-Faster FIXEDによるフォント

alasm42 .B-ALASM 42ピッチローダー

alasm_42.C

olasm_42.C

FONT42a .C

FONT42b .C-太字フォント

sts70r .C-デバッガー

gruzilka.B-ドライブBのローダー

128灰RV .C-128kメモリドライバー

PENTDRV .C-ペンタゴン512kメモリドライバー

P1MBDRV .C-ペンタゴン1Mメモリドライバー

P4MBDRV .C-ペンタゴン4M、または追加配線なしの2M(#FDおよび#AFF7を使用)

ATMDRV .C-ATM 1Mメモリドライバ

PROFDRV .C-PROFI 1Mメモリドライバ

ZSKAY512.C-SCORP / KAYメモリドライバ(KAYで512kを使用)

KAY1DRV .C-KAY 1Mメモリドライバ

SCORP1M .C-SCORP 1Mメモリドライバ

al50stri.H-ALASM形式の説明

Fnt42Bld.H-画面から#3f0 ALASMフォント形式

REFNT42 .Hへの6x7(6x6)フォントコンバーター-逆

H_Search.B-破壊されたディスク

H_Search.WのALASMソースを検索します

Marazm.H、Humor.H、Humor.C指定された範囲の擬似乱数を返すRANDOMマクロの使用例。

SNAKE.H組み立てながらプレイするゲーム。

TASM用にこれを作成したRST7のクレジット。

BUILD + .Hはプロジェクトのビルドをカウントし、この番号をリリースに挿入したり、セッション番号とビルド日付を編集したりできます。

SAVEOBJ4.H指定されたサイズの指定されたアドレスからの拡張子を持つコードブロックを保存します。 RUN [CS / Enter]とともに使用されます。 内部の情報を参照してください。 デバッガーを介したこれ以上の節約はありません!

SAVEBAS / .H内部にコードを含む基本ファイルを作成できます。

v4.44の非互換性:ページ番号のないORGはページ0を設定しません。マクロパラメーターは\ではなく、:DB "" "、0はDB" ""、0 "を意味します。DB34,0またはDB" ""を書き込みます。 "、0