日立MB-S1に関する情報

メモリ空間1
ルーチン番号$38

機能

システム領域内の文字列上を文字列変数に代入します。

解説

システム・スタック、またはシステム・ワーク内に格納されているAccBに示す長さ分の文字列を、Xが示すストリング・ディスクリプタの文字列領域に転送します。
システム・ワークとして使用できる領域は、次の通りです。
(1)入力バッファ [$F016] 256バイト
(2)中間コード・バッファ [$F024] 256バイト
(3)数値・文字列・バッファ [$F014] 40バイト

入力情報

  • AccB:転送する文字列の長さ
  • X:ストリング・ディスクリプタの先頭アドレス(変数・配列領域)
  • U:転送文字列の先頭アドレス(システム・スタック領域)

サンプル・プログラム

内容

NULLコードは定義されている文字列変数A$に"ABCDEF"の文字列を定義します。
100 CLEAR ,&HC000
105 DEF MAP = 2
110 LOADM"MDI128"
120 MLST = &HC000
130 A$ = ""
140 VADR = VARPTR(A$)
150 MSB = INT(VADR / 256)
160 LSB = VADR - MSB * 256
170 POKE MLST+2,MSB
180 POKE MLST+3,LSB
190 EXEC MLST
200 PRINT A$
 0 C000                     ORG  $C000      --A SAMPLE OF "MDI128" ROUTINE--
 1           C000   MDI128  EQU  *
 2           F024   KBUF    EQU  $F024      [BUFFER]
 3 C000   20 09             BRA  EXEC
 4 C002      0000   STADDR  FDB  $0000      STRING DESCRIPTORDDR ADDR
 5 C004      41     MSG     FCC  /ABCDEF/
 6 C005      42
 7 C006      43
 8 C007      44
 9 C008      45
10 C009      46
11 C00A      00             FCB  $00
12           C00B   EXEC    EQU  *          --- BUFFER <-- CHAR. DATA ---
13 C00B   BE F024           LDX  KBUF       X:TOP ADDR OF BUFFER
14 C00E   1F 13             TFR  X,U        U:TOP ADDR OF BUFFER
15 C010   31 FC81           LEAY MSG,PCR    Y:TOP ADDR OF CHAR. DATA
16 C013   5F                CLRB            B:COUNTER OF CHAR. DATA LENGTH
17 C014   5C                INCB            B:B + 1
18 C015   A6 A0             LDA  ,Y+
19 C017   A7 80             STA  ,X+
20 C019   26 F9             BNE  LOOP       CHAR. DATA END ?
21                  *                       --- MAP NO 4 <-- BUFFER ---
22 C01B   AE 8CE4           LDX  STADDR,PCR X:STRING DESCRIPTORDDR ADDR
23 C01E 103F                SWI2            CALL "MDI128" ROUTINE
24 C020      41             FCB  $41
25 C021      38             FCB  $38
26 C022   39                RTS
27                          END

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

どなたでも編集できます