home *** CD-ROM | disk | FTP | other *** search
- '
- '
- '******************************************************************************
- ' Function : SCROLL *
- ' *
- ' Purpose: *
- ' *
- ' *
- ' Results: *
- ' *
- ' Usage : *
- ' *
- ' *
- ' Date Written : 09/01/90 - Date Tested: 09/01/90 - Author: James P Morgan *
- ' Date Modified: - : - : *
- '-----------------------------------------------------------------------------*
- ' NOTE: *
- '******************************************************************************
- ' *
- ' SUB PROGRAM NAME (PARAMETERS) STATIC/RECURSIVE *
- '-----------------------------------------------------------------------------*
- ' *
- SUB SCROLL(ULR%,ULC%,LRR%,LRC%,LINES%,DIR%,NEWMSG$,RETURN.CODE%) STATIC
-
- DEFINT A-Z 'make all short interger by default
-
- RETURN.CODE%=0
- VIDEO.RETURN.CODE%=0
-
- '
- 'see about changing these to FAR arrays, BUT INT86 will need to be changed also. '
- '
-
- REM $-DYNAMIC
-
- DIM INARRY%(7) 'array of registers passed to .asm routine
- DIM OUTARRY%(7) 'array of registers returned from .asm routine
-
- REM $-STATIC
-
- ULR%=ULR%-1 'Adjust for 0 reference of parameters for BIOS call
- ULC%=ULC%-1
- LRR%=LRR%-1
- LRC%=LRC%-1
-
- 'Prepare INARRY% variables with data for SCROLL BIOS CALL
-
- 'Determine if SCROLL UP (6) or SCROLL DOWN (7) Service
-
- IF DIR%=1 THEN
- INARRY%(0)=&h0600 'scroll up
- ELSEIF DIR%=-1 THEN
- INARRY%(0)=&h0700 'scroll down
- ELSE
- RETURN.CODE%=-2
- GOTO SCROLL.DONE
- END IF
- 'Service goes in AH register
- INARRY%(0)=INARRY%(0)+LINES% 'Lines goes in AL register
- INARRY%(1)=SCREEN(ULR%,ULC%,1)*256% 'BH = Color Attribute of window
- INARRY%(2)=(ULR%*256)+ULC% 'CH=ULR, CL=ULC
- INARRY%(3)=(LRR%*256)+LRC% 'DH=LRR, DL=LRC
-
- INARRY%(4)=0 'All other registers empty
- INARRY%(5)=0
- INARRY%(6)=0
- INARRY%(7)=0
-
- '
- 'Perform Scroll
-
- INTRRPT%=&H10 'Video BIOS Interrupt
-
- CALL INT86(INTRRPT%,VARPTR(INARRY%(0)),VARPTR(OUTARRY%(0)))
-
- 'Determine if NEWMSG$ goes on top or bottom line
- '
- IF DIR%=1 THEN
- ROW%=LRR%+1 're-adjust references
- ELSEIF DIR%=-1 THEN
- ROW%=ULR%+1
- END IF
-
- COL%=ULC%+1 're-adjust references
-
- ATTR%=SCREEN(ULR%,ULC%,1) 'get the attribute currently on the screen
-
- CALL FASTPRT(NEWMSG$,ROW%,COL%,ATTR%,VIDEO.RETURN.CODE%)
-
- SCROLL.DONE:
- ERASE INARRY%
- ERASE OUTARRY%
- END SUB