home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload / ShartewareOverload.cdr / windows / baswind8.zip / SCROLL.SUB < prev    next >
Text File  |  1990-09-14  |  4KB  |  94 lines

  1. '
  2. '
  3. '******************************************************************************
  4. '                    Function : SCROLL                                        *
  5. '                                                                             *
  6. ' Purpose:                                                                    *
  7. '                                                                             *
  8. '                                                                             *
  9. ' Results:                                                                    *
  10. '                                                                             *
  11. ' Usage  :                                                                    *
  12. '                                                                             *
  13. '                                                                             *
  14. ' Date Written : 09/01/90 - Date Tested: 09/01/90 - Author: James P Morgan    *
  15. ' Date Modified:          -            :          -       :                   *
  16. '-----------------------------------------------------------------------------*
  17. ' NOTE:                                                                       *
  18. '******************************************************************************
  19. '                                                                             *
  20. '     SUB PROGRAM NAME          (PARAMETERS)                 STATIC/RECURSIVE *
  21. '-----------------------------------------------------------------------------*
  22. '                                                                             *
  23. SUB    SCROLL(ULR%,ULC%,LRR%,LRC%,LINES%,DIR%,NEWMSG$,RETURN.CODE%)    STATIC
  24.  
  25.        DEFINT A-Z                               'make all short interger by default
  26.  
  27.        RETURN.CODE%=0
  28.        VIDEO.RETURN.CODE%=0
  29.  
  30. '
  31. 'see about changing these to FAR arrays, BUT INT86 will need to be changed also. '
  32. '
  33.  
  34. REM   $-DYNAMIC
  35.  
  36.        DIM INARRY%(7)                           'array of registers passed to .asm routine
  37.        DIM OUTARRY%(7)                          'array of registers returned from .asm routine
  38.  
  39. REM   $-STATIC
  40.  
  41.        ULR%=ULR%-1                              'Adjust for 0 reference of parameters for BIOS call
  42.        ULC%=ULC%-1
  43.        LRR%=LRR%-1
  44.        LRC%=LRC%-1
  45.  
  46. 'Prepare INARRY% variables with data for SCROLL BIOS CALL
  47.  
  48. 'Determine if SCROLL UP (6) or SCROLL DOWN (7) Service
  49.  
  50.        IF DIR%=1 THEN
  51.            INARRY%(0)=&h0600                  'scroll up
  52.        ELSEIF DIR%=-1 THEN
  53.            INARRY%(0)=&h0700                  'scroll down
  54.        ELSE
  55.            RETURN.CODE%=-2
  56.          GOTO SCROLL.DONE
  57.        END IF
  58.                                               'Service goes in AH register
  59.        INARRY%(0)=INARRY%(0)+LINES%           'Lines goes in AL register
  60.        INARRY%(1)=SCREEN(ULR%,ULC%,1)*256%    'BH = Color Attribute of window
  61.        INARRY%(2)=(ULR%*256)+ULC%             'CH=ULR, CL=ULC
  62.        INARRY%(3)=(LRR%*256)+LRC%             'DH=LRR, DL=LRC
  63.  
  64.        INARRY%(4)=0                           'All other registers empty
  65.        INARRY%(5)=0
  66.        INARRY%(6)=0
  67.        INARRY%(7)=0
  68.  
  69. '
  70. 'Perform Scroll
  71.  
  72.        INTRRPT%=&H10                          'Video BIOS Interrupt
  73.  
  74.        CALL INT86(INTRRPT%,VARPTR(INARRY%(0)),VARPTR(OUTARRY%(0)))
  75.  
  76. 'Determine if NEWMSG$ goes on top or bottom line
  77. '
  78.        IF DIR%=1 THEN
  79.            ROW%=LRR%+1                        're-adjust references
  80.        ELSEIF DIR%=-1 THEN
  81.            ROW%=ULR%+1
  82.        END IF
  83.  
  84.        COL%=ULC%+1                            're-adjust references
  85.  
  86.        ATTR%=SCREEN(ULR%,ULC%,1)              'get the attribute currently on the screen
  87.  
  88.        CALL FASTPRT(NEWMSG$,ROW%,COL%,ATTR%,VIDEO.RETURN.CODE%)
  89.  
  90. SCROLL.DONE:
  91.        ERASE INARRY%
  92.        ERASE OUTARRY%
  93. END SUB
  94.