日立MB-S1に関する情報

メモリ空間9
ルーチン番号5

機能

指定した範囲の画面を、指定した行数分スクロール・ダウンします。

解説

Xに格納されているデータの上位1バイトを左上端の水平方向座標、下位1バイトを左上端の垂直方向座標、Yに格納されているデータの上位1バイトを右下端の水平方向座標、下位1バイトを右下端の標垂方向座標とし、左上端座標と右下端座標で指定される範囲内の画面を、AccAに格納されているデータ行数分スクロール・ダウンします。
カーソル位置は変わりません。
AccA=0の場合は、指定された範囲内の全画面をスクロール・ダウンします。
入力値が範囲外の場合は何もせずにリターンします。
  • 表示画面
┌─────────────────────┐
│↓左上端座標               │
│┌───────────────────┐│
││///////////////////││
││///////////////////││
││///////////////////││
││//////指定範囲画面///////││
││///////////////////││
││///////////////////││
││///////////////////││
│└───────────────────┘│
│               右下端座標↑│
└─────────────────────┘

入力情報

  • X:
    • (上位1バイト)左上端水平方向座標 0〜79
    • (上位1バイト)左上端垂直方向座標 0〜19
  • Y:
    • (上位1バイト)右下端水平方向座標 0〜79
    • (上位1バイト)右下端垂直方向座標 0〜19
  • AccA:スクロール・ダウン行数 0〜20
    • 0の場合は範囲内全面スクロール

サンプル・プログラム

内容

画面全体に文字を表示後、任意のキーを入力すると、(5,5)、(60,15)を対角とする範囲内を5行スクロール・ダウンします。
任意のキーを入力するとBASICに復帰します。
 0 0000                     ORG  $0000
 1           0000   KSCLDW  EQU  *          --SAMPLE OF "KSCLDW" ROUTINE--
 2 0000 108E 0000           LDY  #0
 3 0004   4F                CLRA
 4 0005   C6 30             LDB  #$30       OUTPUT CHARACTERS ON SCREEN
 5 0007   8E 0000   LOOP1   LDX  #0
 6 000A 103F        LOOP2   SWI2            CALL "OUTCHR" ROUTINE
 7 000C      4A             FCB  $4A        MAP NO=A ROUTINE NO=C
 8 000D      0C             FCB  $0C
 9 000E   30 01             LEAX 1,X
10 0010   8C 0050           CMPX #80
11 0013   2D F5             BLT  LOOP2
12 0015   5C                INCB
13 0016   31 21             LEAY 1,Y
14 0018 108C 0014           CMPX #20
15 001C   2D E9             BLT  LOOP1
16 001E 103F        LOOP3   SWI2            CALL "INKBD" ROUTINE
17 0020      4A             FCB  $4A        MAP NO=A ROUTINE NO=F
18 0021      0F             FCB  $0F
19 0022   27 FA             BEQ  LOOP3      LOOP UNTIL A KEY IS PUSHED
20 0024   8E 0505           LDX  #$0505     X:SCROLL SCOPE
21 0027 108E 3C0F           LDY  #$3C0F     Y:SCROLL SCOPE
22 002B   86 05             LDA  #$05       A:LINE NO. OF SCROLL
23 002D 103F                SWI2            CALL "KSCRDW" ROUTINE
24 002F      49             FCB  $49        MAP NO=9 ROUTINE NO=5
25 0030      05             FCB  $05
26 0031 103F        LOOP4   SWI2            CALL "INKBD" ROUTINE
27 0033      4A             FCB  $4A        MAP NO=A ROUTINE NO=F
28 0034      0F             FCB  $0F
29 0035   27 FA             BEQ  LOOP4      LOOP UNTIL A KEY IS PUSHED
30 0037      39             RTS
31                          END

コメントをかく


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

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

どなたでも編集できます