home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 15 / CD_ASCQ_15_070894.iso / vrac / dnalib7a.zip / MOVEWIN.BAS < prev    next >
BASIC Source File  |  1994-05-14  |  3KB  |  126 lines

  1. DECLARE SUB GetBytes(BaseScreen$,InsertByte$,Address%,NumBytes%)
  2.  
  3. SUB MoveableWindow(BaseScreen$,ScreenID$,TopRow%,LeftColumn%) PUBLIC
  4.  
  5. $CODE SEG "DNASEG1"
  6.  
  7. DO
  8.  
  9. a$ = LEFT$(ScreenID$,3)                                                                 'get the 3 characters
  10. Divisor% = VAL(a$)                            'convert them to an integer
  11. TempScreen$ = LTRIM$(ScreenID$,a$)            'remove extra characters
  12. NumRows% = LEN(TempScreen$) \ (Divisor% + 1)  'divide to find NumRows%
  13.  
  14. WHILE NOT INSTAT:WEND
  15.  
  16. Ky$ = INKEY$
  17.  
  18. AddRowTop% = 0
  19. Direction% = 0
  20.  
  21. IF LEN(Ky$) = 1 THEN
  22.   Chose% = ASC(Ky$)
  23. ELSE
  24.   Chose% = -ASC(RIGHT$(Ky$,1))
  25. END IF
  26.  
  27. KeyBoardRoutine:
  28.  
  29. SELECT CASE Chose%
  30.         CASE 13   'EnterKey
  31.           Finished% = 1
  32.         CASE 27
  33.           Finished% = 1
  34.         CASE -72  'Up ArrowKey
  35.           IF TopRow% > 1 THEN
  36.             DECR TopRow%
  37.             Direction% = 3
  38.           END IF
  39.         CASE -80  'Down ArrowKey
  40.           IF TopRow% + (NumRows% - 1) < 25 THEN
  41.             INCR TopRow%
  42.             AddRowTop% = 1
  43.             Direction% = 1
  44.           END IF
  45.         CASE -75  'LeftArrow
  46.           IF LeftColumn% > 1 THEN
  47.             DECR LeftColumn%
  48.             Direction% = 2
  49.           END IF
  50.         CASE -77  'RightArrow
  51.           IF LeftColumn% + (Divisor% \ 2) - 1 < 80 THEN
  52.             INCR LeftColumn%
  53.             Direction% = 4
  54.           END IF
  55. END SELECT
  56.  
  57. SELECT CASE Direction%
  58.         CASE 1
  59.           Top% = TopRow% - 1
  60.           BottomRow% = Top% + NumRows%
  61.         CASE 3
  62.           Top% = TopRow%
  63.           BottomRow% = TopRow% + NumRows%
  64.         CASE ELSE
  65.           Top% = TopRow%
  66.           BottomRow% = (TopRow% + NumRows%) - 1
  67. END SELECT
  68.  
  69. DEF SEG = &HB800
  70.  
  71. FOR i% = Top% TO BottomRow%
  72.   Start% = (i% - 1) * 160 + ((LeftColumn% * 2) - 2)
  73.   SELECT CASE Direction%
  74.         CASE 1 'down
  75.           IF AddRowTop% THEN
  76.             GetBytes BaseScreen$,InsertByte$,Start%,Divisor%
  77.             POKE$ Start%,InsertByte$
  78.             AddRowTop% = 0
  79.           ELSE
  80.             b$ = LEFT$(TempScreen$,Divisor%)
  81.             POKE$ Start%,b$
  82.             TempScreen$ = LTRIM$(TempScreen$,b$)
  83.             TempScreen$ = LTRIM$(TempScreen$,CHR$(255))
  84.           END IF
  85.         CASE 3 ' up
  86.           IF i% = BottomRow% THEN
  87.             GetBytes BaseScreen$,InsertByte$,Start%,Divisor%
  88.             POKE$ Start%,InsertByte$
  89.           ELSE
  90.             b$ = LEFT$(TempScreen$,Divisor%)
  91.             POKE$ Start%,b$
  92.             TempScreen$ = LTRIM$(TempScreen$,b$)
  93.             TempScreen$ = LTRIM$(TempScreen$,CHR$(255))
  94.           END IF
  95.         CASE 2 'left
  96.           GetBytes BaseScreen$,InsertByte$,Start% + Divisor%,2
  97.           b$ = LEFT$(TempScreen$,Divisor%)
  98.           c$ = b$ + InsertByte$
  99.           POKE$ Start%,c$
  100.           TempScreen$ = LTRIM$(TempScreen$,b$)
  101.           TempScreen$ = LTRIM$(TempScreen$,CHR$(255))
  102.         CASE 4 'right
  103.           GetBytes BaseScreen$,InsertByte$,Start% - 2,2
  104.           b$ = LEFT$(TempScreen$,Divisor%)
  105.           c$ = InsertByte$ + b$
  106.           POKE$ Start% - 2,c$
  107.           TempScreen$ = LTRIM$(TempScreen$,b$)
  108.           TempScreen$ = LTRIM$(TempScreen$,CHR$(255))
  109.   END SELECT
  110.  
  111. NEXT i%
  112.  
  113. LOOP UNTIL Finished%
  114. DEF SEG
  115.  
  116. END SUB
  117.  
  118. SUB GetBytes(BaseScreen$,InsertByte$,Address%,NumBytes%)
  119.  
  120. $CODE SEG "DNASEG1"
  121.  
  122. TempScreen$ = LEFT$(BaseScreen$,(Address% + NumBytes%))
  123. InsertByte$ = RIGHT$(TempScreen$,NumBytes%)
  124.  
  125. END SUB
  126.