日立MB-S1に関する情報

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

機能

ディスクのEOFまたはLOFを調べます。

解説

AccAに格納されているEOF/LOFのフラグに従って、AccBに格納されているファイル番号のファイルの終わりの判定、または最大のレコード番号を調べ、その結果をAccDに格納します。
AccBで指定したファイル番号のファイルがオープンされていないと、エラーになります。

入力情報

  • AccA:EOF/LOFフラグ
    • $10…LOF(ランダム・ファイルの最大のレコード番号を読み込みます)
    • $10以外…EOF(ファイルのデータの終わりを判定します)
  • AccB:ファイル番号

出力情報

  • AccD:EOF/LOF値
    • (EOF処理の場合)
      • -1…データの終わりを示します。
      • 0…データの途中を示します。
    • (EOF処理の場合)
      • 最大のレコード番号

サンプル・プログラム

内容

現在ファイル番号1でオープンされている、ランダム・ファイルの最大レコード番号を画面に表示します。
100 CLEAR ,&HC000
110 LOADM "ULEOF"
120 OPEN "R",#1,"DATA1"
170 EXEC &HC000
180 CLOSE #1

 0 C000                     ORG  $C000
 1           C000   ULEOF   EQU  *          --SAMPLE OF "ULEOF" ROUTINE
 2           EF9E   FILNUM  EQU  $EF9E      FILE NUMBER REG.
 3 C000   20 05             BRA  EXEC
 4 C002      4C     MSG     FCC  /L/
 5 C003      4F             FCC  /O/
 7 C004      46             FCC  /F/
 8 C005      3D             FCC  /=/
 9 C006      00             FCB  $00
10           C007   EXEC    EQU  *          --- "LOF=" DISPLAY
11 C007   30 8CF8           LEAX  MSG,PCR   X:TOP ADDR. OF MESSAGAGE
12 C00A   8D 17             BSR MESSAG
13                  *                       ---- DISK LOF/EOF CHECK ----
14 C00C   86 10             LDA  #$10       A:LOF/EOF FLAG
24 C00E   C6 01             LDB  #$01       B:FILE NO
15 C010 103F                SWI2            CALL "ULEOF" ROUTINE
16 C012      47             FCB  $47
17 C013      2E             FCB  $2E
19                  *                       --- FACC = ACCD ---
20 C014 103F                SWI2            CALL "UMOVFD" ROUTINE
21 C016      41             FCB  $41
22 C017      1F             FCB  $1F
23 C018   86 80             LDA  #$80       "#."
24 C01A   C6 60             LDB  #$60       "######"
25 C01C 103F                SWI2            CALL "UFOUT" ROUTINE
26 C01E      41             FCB  $41
27 C01F      22             FCB  $22
19                  *                       --- LOF DISPLAY ---
28 C020   8D 01             BSR  MESSAG
29 C022   39                RTS
30           C023   MESSAG  EQU  *          --- MESSAGE OUT SUB ROUTINE ---
31 C023   7F EF9E           CLR  FILNUM
32 C026   86 0F             LDA  #$0F       A:MAP NO
33 C028 103F                SWI2            CALL "STOUT2" ROUTINE
34 C02A      41             FCB  $41
35 C02B      39             FCB  $39
36 C02C   39                RTS
37                          END

コメントをかく


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

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

どなたでも編集できます