日立MB-S1に関する情報

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

機能

指定したファイルをオープンします。

解説

AccBに格納されている入/出力モードとAccBに格納されているファイル番号でシステム・スタック内、または、システム・ワーク内に格納されているファイル・ディスクリプタのファイルをオープンします。

入力情報

X:ファイル・ディスクリプタが格納されているメモリ(システム・スタック、またはシステム・ワーク内)の先頭アドレス

ファイル・ディスクリプタのデータ・フォーマット

$22(")ファイル・ディスクリプタ$22(")$00
↑Xはこのアドレスを指します。
AccA:入/出力モード
  • $49(I)…シーケンシャル・ファイルの入力モード
  • $4F(O)…シーケンシャル・ファイルの出力モード
  • $52(R)…ランダム・アクセス・ファイル・モード
AccB:ファイル番号1〜$F
注)システム・ワーク内で使用できるエリア
    1. 入力バッファPBUF($F016)から256バイト
    2. 中間コード・バッファKBUF($F024)から256バイト
    3. 数値文字列変換バッファPFBUF($F014)から40バイト
※中間コード・バッファを使用した場合は、プログラムをダイレクト・ステートメントで、起動することができなくなります。

サンプルプログラム

内容

ファイル番号1、"0:TEST"のランダム・ファイルをオープンします。
 0           0000 ROPEN   EQU *            SAMPLE OF "ZOPEN" ROUTINE
 1                *
 2 C000                   ORG  $C000
 3 C000   20 11           BRA  EXEC
 4 C002      0080 LENG    FDB  $0080
 5 C004      907D RLEN    FDB  $907D
 6 C006      07   TRFMAP  FCB  7           MAP No.7
 7 C007      00   PAGEW   FCB  $00
 8 C008      52   MODE    FCC  /R/         MODE O,I or R
 9 C009      01   FILENO  FCB  $01
10 C00A      22   FDESC   FCC  /"0:TEST"/  FILE DESCRIPTOR DATA
11 C012      00   FDEND   FCB  $00         DATA END CODE
12                *
13 C013   AE 8CEE EXEC    LDX  RLEN,PCR    X:ADDR. OF LOCATE AREA
14 C016   B6 C006         LDA  TRFMAP      A:MEMORY MAP No.(LOCATE AREA)
15 C019   E6 8CEB         LDB  PAGEW,PCR   B:WINDOW POSITION
16 C01C 103F              SWI2             CALL "MMWIND" ROUTINE
17 C01E      40           FCB  $40         MAP No.=0
18 C01F      03           FCB  $03         ROUTINE No.=3
19 C020   EC 8CED         LDD  LENG,PCR
20 C023   ED 84           STD  ,X
21                *--- FILE DESCRIPTOR SET ----
13 C025   30 8CEB         LEAX FDEND+1,PCR X:ADDR. OF FILE DESC. DATA
20 C028   1F 42           TFR  S,Y         Y:SYSTEM STACK POINTER ADDR.
21 C02A   C6 02           LDB  #$02        B:COUNTER OF #$22(") CODE TEST
22 C02C   A6 82   LOOP    LDA  ,-X         A:OUTPUT DATA
23 C02E   34 02           PSHS A           A TO SYSTEM STACK AREA
24 C030   34 02           CMPA #$22        TEST $22(") CODE
25 C032   26 F8           BNE  LOOP
26 C034   5A              DECB
27 C035   26 F5           BNE  LOOP
28                *--- FILE OPEN(ZOPEN) ----
29 C037   1F 41           TFR  S,X         Y:SYSTEM STACK POINTER ADDR.
30 C039   A6 8CCC         LDA  MODE,PCR    A:MODE SET
31 C03C   E6 8CCA         LDB  FILENO,PCR  B:FILE No. SET
32 C03F   34 68           PSHS U,Y,DP
33 C041 103F              SWI2             CALL "ZOPEN" ROUTINE
34 C043      41           FCB  $41         MAP No.=1
35 C044      0E           FCB  $0E         ROUTINE No.=$0E
36 C045   35 68           PUL DP,Y,U
37 C047   1F 24           TFR  Y,S         Y:SYSTEM STACK POINTER ADDR.
38 C049   39              RTS
注)入/出力モードで"R"($52)を指定した場合は、メモリ空間番号7の$907D番地からの2バイトにレコード長を設定してください。
設定はプログラム例のように"MMWIND"ルーチンを使います。
シーケンシャル・ファイルの場合はその必要はありません。

実行結果

サンプル・プログラム実行後、モニタ・コマンドでXに$B100が格納されていることと、メモリ空間06のページ$A、および$Bの実メモリ・ページ番号がメモリ空間$Fページ$B、および$Cの実メモリ・ページ番号と等しいことを確認します。
Ready
EXEC &HC000
S=E1BE(F16B)CC=80(****)A=0F B=0B DP=00 X=B100 Y=4045 U=EB97 PC=C013(3FFFFFFFFF)
*MAPP
CURRENT MAP = 0F
*XP
0=BF 1=BF 2=BF 3=BF 4=BF 5=BF 6=BF 7=BF 8=BF 9=BF A=BF B=40 C=45 D=85 E=84 F=EF 
*MAP
CURRENT MAP = 0F
              06
CURRENT MAP = 06
*XP
0=BF 1=BF 2=BF 3=BF 4=BF 5=BF 6=BF 7=BF 8=BF 9=BF A=40 B=45 C=BF D=85 E=84 F=EF 
*

コメントをかく


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

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

どなたでも編集できます