home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / INFO / BASIC / BAS_SUB.ZIP / SCROLL.DOC < prev    next >
Encoding:
Text File  |  1985-04-19  |  5.0 KB  |  130 lines

  1. .FO SCROLL.DOC #
  2. E
  3.      SCROLL.BLD (CONVERT WITH SCROLL.BAS TO SCROLL.BLD)
  4.      ==================================================
  5.  
  6.  
  7. THIS IS AN ASSY. LANG. SUBROUTINE TO BE USED WITH A BASIC PROGRAM TO PERFORM  
  8. SCROLLING OF THE SCREEN IN A SPECIFIED WINDOW.  THE SUBROUTINE WILL SCROLL
  9. THE CONTENTS OF THE WINDOW UP OR DOWN FILLING IN WITH A BLANK LINE OF 
  10. SPECIFIED ATTRIBUTE (I.E., BLACK, WHITE, RED, ETC...)
  11. THE ROUTINE CAN ALSO BE USED TO CLEAR THE WINDOW
  12. THE ARGUMENTS FOR THE CALL TO THE ROUTINE ARE:
  13.         ULR% - ROW NUMBER (1-25) OF UPPER LEFT CORNER OF WINDOW
  14.         ULC% - COL NUMBER (1-80) OF UPPER LEFT CORNER OF WINDOW
  15.         LRR% - ROW NUMBER (1-25) OF LOWER RIGHT CORNER
  16.         LRC% - COL NUMBER (1-80) OF LOWER RIGHT CORNER
  17.         ATTR% - ATTRIBUTE OF BLANKED LINE: &H07=NORMAL, &H70=REVERSE
  18.                 SEE TECH. REF. MANUAL PG. 2-51 FOR OTHERS
  19.                 NOTE - YOU CAN USE 0 (INSTEAD OF 7) AS THE ATTRIBUTE FOR TEXT
  20.                        AND GRAPHICS MODE TO GET BLACK BACKGROUND. TRY 7
  21.                        IN HI-RES GRAPHICS (SCREEN 2)...EVER SEE THAT
  22.                        WHEN YOU WENT BACK TO DOS FROM GRAPHICS MODE?
  23.         LNGTH% - NUMBER OF LINES TO SCROLL (0 BLANKS ENTIRE WINDOW)
  24.                  USE + NUMBER TO SCROLL UP
  25.                  USE - NUMBER TO SCROLL DOWN
  26.         NOTE !! -  THE ARGUMENTS ARE NOT VALUE CHECKED.
  27.  
  28. FROM BASIC: CALL SCROLL(ULR%,ULC%,LRR%,LRC%,ATTR%,LNGHT%)
  29.  
  30. PROGRAM BY: LEE M. BUCK
  31. DATE: 3-16-83
  32.  
  33.  
  34. THE PROGRAM IS LOADED USING THE BLOAD COMMAND.  BELOW ARE TWO SAMPLE PROGRAMS
  35. THAT USE THE ROUTINE.  ONE USES A STRING VARIABLE WITHIN THE BASIC WORK SPACE
  36. TO HOLD THE MACHINE LANGUAGE PROGRAM.  THE OTHER RESERVES A FIXED SECTION OF 
  37. MEMORY AT THE HIGH MEMORY AREA OF YOUR MACHINE - THIS REQUIRES USE OF THE 
  38. BASIC 'CLEAR' COMMAND OR /M OPTION WHEN RUNNING BASIC IN A 64 K MACHINE
  39.  
  40. MAKE A COPY OF THIS .DOC FILE THEN EDLIN IT TO SEPARATE OUT THE TWO SAMPLE
  41. PROGRAMS BELOW.
  42.  
  43.  
  44. SAMPLE PROGRAM 1
  45.  
  46.  
  47. 10 'TEST PROGRAM FOR SCROLL ROUTINE
  48. 20 'USING STRING SPACE IN BASIC PROGRAM
  49. 25 ' PROGRAM BY: LEE M. BUCK   --  3/17/83
  50. 30 CLEAR        'JUST CLEARS MEMORY - MACHINE LANG. PGM. WILL BE LOCATED
  51. 35              'INSIDE BASIC WORKSPACE
  52. 40 CLS: KEY OFF
  53. 50 '
  54. 60 SCROLLPGM$=STRING$(&H39,"0")         'SET UP STRING SPACE TO HOLD PGM
  55. 70                                      '&H39 IS SIZE OF MACHINE CODE PGM
  56. 80 DEF SEG=VARPTR(SCROLLPGM$)           'GET THE SEGMENT LOCATION
  57. è90 BLOAD "SCROLL.BLD",0       'LOAD INTO STRING (BE SURE TO INCLUDE 0 OFFSET)
  58. 100 '
  59. 110 ' FILL THE SCREEN WITH SOMETHING
  60. 120 FOR ROW=1 TO 22
  61. 130 FOR COL=1 TO 79
  62. 140 PRINT CHR$(ROW+64);
  63. 150 NEXT COL
  64. 160 PRINT
  65. 170 NEXT ROW
  66. 180 'PROMPT FOR SUBROUTINE ARGUMENTS
  67. 190 BEEP
  68. 200 LOCATE 23,1
  69. 210 INPUT "ULR,ULC,LRR,LRC,ATR,LEN";ULR%,ULC%,LRR%,LRC%,ATTR%,LNGTH%
  70. 220 '
  71. 230 DEF SEG=VARPTR(SCROLLPGM$)  'BE SURE SEGMENT IS SET TO STRING SPACE
  72. 240 SCROLL=0    'SET THE OFFSET TO ZERO AND CALL THE PGM
  73. 250 CALL SCROLL(ULR%,ULC%,LRR%,LRC%,ATTR%,LNGTH%)
  74. 260 '
  75. 270 SOUND 500,5: SOUND 700,5: SOUND 1000,5
  76. 280 LOCATE 13,25: PRINT "SUCCESS !!"
  77. 290 'PRESS 'ENTER' TO DO IT AGAIN; 'Esc' TO QUIT
  78. 300 DEF SEG : POKE 106,0
  79. 310 Q$=INKEY$ : IF Q$="" GOTO 310
  80. 320 IF Q$=CHR$(13) THEN 190     'DO IT AGAIN WITH 'CARRIAGE RETURN' KEY PRESS
  81. 330 IF Q$<>CHR$(27) THEN 300    'KEEP WAITING UNTILL 'Esc' KEY PRESS
  82. 340 END
  83.  
  84.  
  85. SAMPLE PROGRAM 2
  86.  
  87.  
  88. 10 'TEST PROGRAM FOR SCROLL ROUTINE
  89. 20 'PROGRAM BY: LEE M. BUCK    --   3/17/83
  90. 30 'PUT THE ROUTINE AS HIGH AS POSSIBLE IN MEMORY
  91. 40 'IF TOTAL MEMORY IS 64K OR LESS SPACE MUST BE RESERVED WITHIN BASIC WORK
  92. 50 'AREA.  RESERVE SPACE USING THE 'CLEAR' COMMAND AT THE BEGINNING OF PGM.
  93. 60 'OR USE THE /M OPTION WHEN STARTING BASIC(A). (SEE THE BASIC MANUAL)
  94. 70 CLS: KEY OFF
  95. 80 ' PUT SOMETHING ON THE SCREEN
  96. 90 FOR ROW=1 TO 22
  97. 100 FOR COL=1 TO 79
  98. 110 PRINT CHR$(ROW+64);
  99. 120 NEXT COL
  100. 130 PRINT
  101. 140 NEXT ROW
  102. 150 '
  103. 160 'CALCULATE THE SEGMENT REQUIRED TO PUT ROUTINE AT HIGH MEMORY LOCATION
  104. 170 '
  105. 180 PGM.SIZE=&H39        'SIZE OF MACHINE LANGUAGE PROGRAM
  106. 190 MEM.SIZE=160         'TOTAL K's OF MACHINE MEMORY (LESS RAMDISK MEMORY)
  107. 200 SEGMENT=MEM.SIZE*64-CINT(PGM.SIZE/16)
  108. 210 '
  109. 220 DEF SEG=SEGMENT    'SET SEGMENT AT HIGH MEMORY LOCATION
  110. 230 '
  111. 240 'LOAD THE SUBROUTINE INTO MEMORY.  IT ONLY NEEDS TO BE DONE ONCE.
  112. è250 BLOAD "SCROLL.BLD",0   'BE SURE TO SET THE OFFSET TO ZERO
  113. 260 '
  114. 270 'GET THE SUBROUTINE PARAMETERS
  115. 280 BEEP
  116. 290 LOCATE 23,1
  117. 300 INPUT "ULR,ULC,LRR,LRC,ATR,LEN";ULR%,ULC%,LRR%,LRC%,ATTR%,LNGTH%
  118. 310 '
  119. 320 ' CALL THE SUBROUTINE
  120. 330 DEF SEG=SEGMENT     'MAKE SURE SEGMENT IS SET
  121. 340 SCROLL=0            'SET THE OFFSET
  122. 350 CALL SCROLL(ULR%,ULC%,LRR%,LRC%,ATTR%,LNGTH%)
  123. 360 '
  124. 370 SOUND 500,5: SOUND 700,5: SOUND 1000,5
  125. 380 LOCATE 12,25: PRINT " SUCCESS !! "
  126. 390 'PRESS 'ENTER' TO DO IT AGAIN; 'Esc' TO QUIT
  127. 400 DEF SEG : POKE 106,0
  128. 410 Q$=INKEY$ : IF Q$="" GOTO 410
  129. 420 IF Q$=CHR$(13) THEN 280     'DO IT AGAIN WITH 'CARRIAGE RETURN' KEY PRESS
  130. 430 IF Q$<>CHR$(27) THEN 400    'KEEP WAITING UNTILL 'Esc' KEY PRESS
  131. 440 END
  132. N