home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DP Tool Club 15
/
CD_ASCQ_15_070894.iso
/
vrac
/
dnalib7a.zip
/
MOVEWIN.BAS
< prev
next >
Wrap
BASIC Source File
|
1994-05-14
|
3KB
|
126 lines
DECLARE SUB GetBytes(BaseScreen$,InsertByte$,Address%,NumBytes%)
SUB MoveableWindow(BaseScreen$,ScreenID$,TopRow%,LeftColumn%) PUBLIC
$CODE SEG "DNASEG1"
DO
a$ = LEFT$(ScreenID$,3) 'get the 3 characters
Divisor% = VAL(a$) 'convert them to an integer
TempScreen$ = LTRIM$(ScreenID$,a$) 'remove extra characters
NumRows% = LEN(TempScreen$) \ (Divisor% + 1) 'divide to find NumRows%
WHILE NOT INSTAT:WEND
Ky$ = INKEY$
AddRowTop% = 0
Direction% = 0
IF LEN(Ky$) = 1 THEN
Chose% = ASC(Ky$)
ELSE
Chose% = -ASC(RIGHT$(Ky$,1))
END IF
KeyBoardRoutine:
SELECT CASE Chose%
CASE 13 'EnterKey
Finished% = 1
CASE 27
Finished% = 1
CASE -72 'Up ArrowKey
IF TopRow% > 1 THEN
DECR TopRow%
Direction% = 3
END IF
CASE -80 'Down ArrowKey
IF TopRow% + (NumRows% - 1) < 25 THEN
INCR TopRow%
AddRowTop% = 1
Direction% = 1
END IF
CASE -75 'LeftArrow
IF LeftColumn% > 1 THEN
DECR LeftColumn%
Direction% = 2
END IF
CASE -77 'RightArrow
IF LeftColumn% + (Divisor% \ 2) - 1 < 80 THEN
INCR LeftColumn%
Direction% = 4
END IF
END SELECT
SELECT CASE Direction%
CASE 1
Top% = TopRow% - 1
BottomRow% = Top% + NumRows%
CASE 3
Top% = TopRow%
BottomRow% = TopRow% + NumRows%
CASE ELSE
Top% = TopRow%
BottomRow% = (TopRow% + NumRows%) - 1
END SELECT
DEF SEG = &HB800
FOR i% = Top% TO BottomRow%
Start% = (i% - 1) * 160 + ((LeftColumn% * 2) - 2)
SELECT CASE Direction%
CASE 1 'down
IF AddRowTop% THEN
GetBytes BaseScreen$,InsertByte$,Start%,Divisor%
POKE$ Start%,InsertByte$
AddRowTop% = 0
ELSE
b$ = LEFT$(TempScreen$,Divisor%)
POKE$ Start%,b$
TempScreen$ = LTRIM$(TempScreen$,b$)
TempScreen$ = LTRIM$(TempScreen$,CHR$(255))
END IF
CASE 3 ' up
IF i% = BottomRow% THEN
GetBytes BaseScreen$,InsertByte$,Start%,Divisor%
POKE$ Start%,InsertByte$
ELSE
b$ = LEFT$(TempScreen$,Divisor%)
POKE$ Start%,b$
TempScreen$ = LTRIM$(TempScreen$,b$)
TempScreen$ = LTRIM$(TempScreen$,CHR$(255))
END IF
CASE 2 'left
GetBytes BaseScreen$,InsertByte$,Start% + Divisor%,2
b$ = LEFT$(TempScreen$,Divisor%)
c$ = b$ + InsertByte$
POKE$ Start%,c$
TempScreen$ = LTRIM$(TempScreen$,b$)
TempScreen$ = LTRIM$(TempScreen$,CHR$(255))
CASE 4 'right
GetBytes BaseScreen$,InsertByte$,Start% - 2,2
b$ = LEFT$(TempScreen$,Divisor%)
c$ = InsertByte$ + b$
POKE$ Start% - 2,c$
TempScreen$ = LTRIM$(TempScreen$,b$)
TempScreen$ = LTRIM$(TempScreen$,CHR$(255))
END SELECT
NEXT i%
LOOP UNTIL Finished%
DEF SEG
END SUB
SUB GetBytes(BaseScreen$,InsertByte$,Address%,NumBytes%)
$CODE SEG "DNASEG1"
TempScreen$ = LEFT$(BaseScreen$,(Address% + NumBytes%))
InsertByte$ = RIGHT$(TempScreen$,NumBytes%)
END SUB