home *** CD-ROM | disk | FTP | other *** search
/ Hall of Fame / HallofFameCDROM.cdr / open / qbinters.lzh / SCROLL.BAS < prev    next >
BASIC Source File  |  1989-04-23  |  2KB  |  41 lines

  1. 'Sun  Apr 23, 1989   2:19:43 pm 
  2. '*****************************************************************************
  3. 'This routine scrolls a window on the screen down or up by a given number of
  4. 'lines. DIR is up/down, ATTR = white/black, LINES is number of lines to scroll.
  5. '******************************************************************************
  6.  
  7. TYPE RegType
  8.      ax    AS INTEGER
  9.      bx    AS INTEGER
  10.      cx    AS INTEGER
  11.      dx    AS INTEGER
  12.      bp    AS INTEGER
  13.      si    AS INTEGER
  14.      di    AS INTEGER
  15.      flags AS INTEGER
  16. END TYPE
  17. DIM SHARED inregs AS RegType, outregs AS RegType
  18. DECLARE SUB scroll (DIR, ATTR, lines, left, right, top, bottom)
  19. CONST up = 0, down = 1, white = -1, black = 0
  20.  
  21. CLS
  22. FOR x = 1 TO 25
  23.      PRINT STRING$(80, 64 + x);
  24. NEXT x
  25. scroll down, black, 10, 20, 60, 5, 20
  26.  
  27. SUB scroll (DIR, ATTR, lines, left, right, top, bottom)
  28.      ah = ((6 + DIR) * 256): al = lines
  29.      bh = (256 * ATTR): bl = 0
  30.      ch = ((top - 1) * 256): cl = (left - 1)
  31.      dh = ((bottom - 1) * 256): dl = (right - 1)
  32.      inregs.ax = ah + al: inregs.bx = bh + bl: inregs.cx = ch + cl: inregs.dx = dh + dl
  33.      CALL interrupt(&H10, inregs, outregs)
  34.      outax = outregs.ax: outbx = outregs.bx: outcx = outregs.cx: outdx = outregs.dx
  35.      outah = FIX(outax / 256): outal = outax - (outah * 256)
  36.      outbh = FIX(outbx / 256): outbl = outbx - (outbh * 256)
  37.      outch = FIX(outcx / 256): outcl = outcx - (outch * 256)
  38.      outdh = FIX(outdx / 256): outdl = outdx - (outdh * 256)
  39. END SUB
  40.  
  41.