日立MB-S1に関する情報

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

機能

ディスクを、セクタ単位でアクセスします(DSKI$、DSKO$)。

解説

指定したディスク・ドライブの指定したセクタとメモリの間で、1セクタ単位(256バイト)のデータをアクセスします。

入力情報

  • AccA:アクセスするメモリのメモリ空間番号
  • AccB:記憶密度フラグ
    FF…倍密度
    FF…単密度
  • X:アクセスするメモリの、メモリ空間での先頭アドレス
  • Y:リード/ライトフラグ、およびドライブ番号
    上位バイト:リード/ライトフラグ
    下位バイト:ドライブ番号
  • U:トラックおよびセクタ番号
    上位バイト:トラック番号
    下位バイト:セクタ番号

出力情報

  • AccA:エラーステータス
    0…エラーなし
    0以外…FDCエラーステータス
  • CCR(C):エラーフラグ
    1…エラーあり
    0…エラーなし
注)本ルーチンでディスクに書き込みを行なう場合、入力情報に設定する先頭アドレスから257バイト(10進数)を加えた範囲内に、メモリが割り当てられていない領域(マップ・イメージで$BFと表す領域)を含んでいると、システム・ダウンする恐れがあります。

サンプル・プログラム

内容

現在ドライブ中にセットされているディスケットのディレクトリの内容を、メモリ上に読み込みます。
 0 C000                     ORG  $C000      --A SAMPLE OF "DISKIO" ROUTINE--
 1           C000   DISKIO  EQU  *
 2           EF9E   FILNUM  EQU  $EF9E      FILE NUMBER VEC.
 3 C000   20 11             BRA  EXEC
 5 C002      46     MSG1    FCC  /F/
 6 C003      44             FCC  /D/
 7 C004      43             FCC  /C/
 8 C005      20             FCC  / /
 9 C006      45             FCC  /E/
10 C007      52             FCC  /R/
11 C008      52             FCC  /R/
12 C009      4F             FCC  /O/
13 C00A      52             FCC  /R/
14 C00B      00             FCB  $00
15 C00C      45     MSG1    FCC  /E/
16 C00D      52             FCC  /R/
17 C00E      52             FCC  /R/
18 C00F      4F             FCC  /O/
19 C010      52             FCC  /R/
20 C011      00             FCB  $00
21 C012      0F     MAPNO   FCB  $0F
22           C013   EXEC    EQU  *
23 C013   7F EF9E           CLR FILNUM
24 C016   86 02             LDA  #$02
25 C018   C6 01             LDB  #$01
26 C01A   1F 02             TFR  D,Y        IY(MSB):READ/WRITE FLAG
27                  *                         (LSB):DRIVE NO
28 C01C   86 14             LDA  #20
29 C01E   C6 05             LDB  #$05
30 C020   1F 03             TFR  D,U        U(MSB):TRACK NO
31                  *                        (LSB):SECTOR NO
32 C022   A6 8CED           LDA  MAPNO,PCR  A:MEMORY MAP NO
33 C025   C6 FF             LDB  #$FF       B:SINGLE/DOUBLE FLAG
34 C027   8E B000           LDX  #$B000     X:TOP ADDR.
35 C02A 103F                SWI2            CALL "DISKIO" ROUTINE
36 C02C      47             FCB  $47
37 C02D      11             FCB  $11
38 C02E   24 19             BCC  EXECE      IF NO ERROR
39 C030   4D                TSTA
40 C031   27 0C             BEQ  ERR
41 C033   A6 8CDC           LDA  MAPNO,PCR  A:MAP NO
42 C036   30 8CC9           LEAX MSG1,PCR
43 C039 103F                SWI2            CALL "STOUT2" ROUTINE
44 C03B      41             FCB  $47
45 C03C      39             FCB  $39
46 C03D   20 0A             BRA  EXECE
47 C03F   A6 8CD0   ERR     LDA  MAPNO,PCR
48 C042   30 8CC7           LEAX MSG2,PCR
49 C045 103F                SWI2            CALL "STOUT2" ROUTINE
50 C047      41             FCB  $47
51 C048      39             FCB  $39
52 C049   39        EXECE   RTS
53                          END

コメントをかく


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

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

どなたでも編集できます