Borland Turbo Basic v1.1
This commit is contained in:
parent
c7aad48ec8
commit
259b1a1df8
10
Borland Turbo BASIC v11/001.BAS
Normal file
10
Borland Turbo BASIC v11/001.BAS
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
screen 2
|
||||||
|
cls
|
||||||
|
line (111,111)-(222,222)
|
||||||
|
locate 20,20
|
||||||
|
input a$
|
||||||
|
locate 21,21
|
||||||
|
print a$
|
||||||
|
input a
|
||||||
|
end
|
||||||
|
|
10
Borland Turbo BASIC v11/003.BAS
Normal file
10
Borland Turbo BASIC v11/003.BAS
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
cls
|
||||||
|
print falling
|
||||||
|
for n=1000 to 700 step -5
|
||||||
|
sound n,1
|
||||||
|
next n
|
||||||
|
for n=1 to 700
|
||||||
|
sound 50*rnd+37,.0015
|
||||||
|
next n
|
||||||
|
delay 1
|
||||||
|
end
|
9
Borland Turbo BASIC v11/004.BAS
Normal file
9
Borland Turbo BASIC v11/004.BAS
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
print "clock"
|
||||||
|
for n=1 to 5
|
||||||
|
sound 500,.01
|
||||||
|
delay .4
|
||||||
|
sound 2000,.01
|
||||||
|
delay .4
|
||||||
|
next n
|
||||||
|
delay 1
|
||||||
|
end
|
122
Borland Turbo BASIC v11/BALL.BAS
Normal file
122
Borland Turbo BASIC v11/BALL.BAS
Normal file
@ -0,0 +1,122 @@
|
|||||||
|
'ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
|
||||||
|
'³ BALL.BAS ³
|
||||||
|
'³ VERSION 1.0 ³
|
||||||
|
'³ ³
|
||||||
|
'³ Turbo Basic ³
|
||||||
|
'³ (C) Copyright 1987 by Borland International ³
|
||||||
|
'³ ³
|
||||||
|
'³ System Requirements: ³
|
||||||
|
'³ - DOS Version 2.0 or later ³
|
||||||
|
'³ - 320K ³
|
||||||
|
'³ ³
|
||||||
|
'³ This program is a simple demonstration of the graphics capabilities ³
|
||||||
|
'³ of Turbo Basic. It displays a "bouncing ball" that uses random numbers ³
|
||||||
|
'³ to figure out which directions to bounce off to. ³
|
||||||
|
'³ ³
|
||||||
|
'³ In order to run this program do the following: ³
|
||||||
|
'³ 1. Load Turbo Basic by typing TB at the DOS prompt. ³
|
||||||
|
'³ 2. Load the file BALL.BAS from the Load option of the File ³
|
||||||
|
'³ pulldown menu. ³
|
||||||
|
'³ 3. Select Run from the Main menu ³
|
||||||
|
'ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
|
||||||
|
|
||||||
|
|
||||||
|
' logic:
|
||||||
|
' draw the ball
|
||||||
|
' use GET to store pixels into an array
|
||||||
|
' set CurrentPosition = OldPosition = StartPoint
|
||||||
|
' DO
|
||||||
|
' Erase (PUT with XOR) the object at the OldPosition
|
||||||
|
' CurrentPosition = CurrentPosition + Increment
|
||||||
|
' Display (PUT) the object at the CurrentPosition
|
||||||
|
' DELAY a small amount of time
|
||||||
|
' OldPosition = CurrentPosition
|
||||||
|
' LOOP UNTIL any key is hit
|
||||||
|
' end of program
|
||||||
|
'
|
||||||
|
DEFINT A-Z
|
||||||
|
RANDOMIZE TIMER
|
||||||
|
'
|
||||||
|
' dimension the save buffer for the pixels
|
||||||
|
'
|
||||||
|
DIM GraphicsBuffer(1000)
|
||||||
|
|
||||||
|
SCREEN 1
|
||||||
|
'
|
||||||
|
' set screen min and max based on screen number
|
||||||
|
'
|
||||||
|
Max.X = 319 : Min.X = 0
|
||||||
|
Max.Y = 199 : Min.Y = 0
|
||||||
|
'
|
||||||
|
' set size of ball
|
||||||
|
'
|
||||||
|
SizeOfBall = 15
|
||||||
|
'
|
||||||
|
' set up the starting center position for the ball
|
||||||
|
'
|
||||||
|
Start.X = 15
|
||||||
|
Start.Y = 15
|
||||||
|
'
|
||||||
|
' build the ball on the screen
|
||||||
|
'
|
||||||
|
CIRCLE (Start.X,Start.Y),SizeOfBall,2
|
||||||
|
PAINT (Start.X,Start.Y),1,2
|
||||||
|
'
|
||||||
|
' store the pixels in a graphics save buffer
|
||||||
|
'
|
||||||
|
GET (Start.X-SizeOfBall,Start.Y-SizeOfBall)-(Start.X+SizeOfBall,Start.Y+SizeOfBall),GraphicsBuffer
|
||||||
|
'
|
||||||
|
' initialize the position of the ball
|
||||||
|
'
|
||||||
|
CurrentPosition.X = OldPosition.X = Start.X
|
||||||
|
CurrentPosition.Y = OldPosition.Y = Start.Y
|
||||||
|
'
|
||||||
|
' set current X direction to Right, Y direction to Down
|
||||||
|
'
|
||||||
|
Direction.X = 1
|
||||||
|
Direction.Y = 1
|
||||||
|
|
||||||
|
DO
|
||||||
|
'
|
||||||
|
' erase previous ball by doing a PUT at the old position
|
||||||
|
'
|
||||||
|
PUT (OldPosition.X,OldPosition.Y),GraphicsBuffer
|
||||||
|
'
|
||||||
|
' calculate new X position,
|
||||||
|
' if at right edge set direction to Left
|
||||||
|
' if at left edge set direction to right
|
||||||
|
' if ball hits an edge, make a sound
|
||||||
|
'
|
||||||
|
Increment.X = RND*8
|
||||||
|
IF CurrentPosition.X+Increment.X+30 > Max.X THEN Direction.X = -1 : sound 200+rnd*250,.5
|
||||||
|
IF CurrentPosition.X-Increment.X < Min.Y THEN Direction.X = 1 : sound 200+rnd*300,.5
|
||||||
|
CurrentPosition.X = CurrentPosition.X + (Increment.X*Direction.X)
|
||||||
|
'
|
||||||
|
' calculate new Y position,
|
||||||
|
' if at bottom edge set direction to the up
|
||||||
|
' if at top edge set direction to the down
|
||||||
|
' if ball hits an edge, make a sound
|
||||||
|
'
|
||||||
|
Increment.Y = RND*8
|
||||||
|
IF CurrentPosition.Y+Increment.Y+30 > Max.Y THEN Direction.Y = -1 : sound 200+rnd*275,.5
|
||||||
|
IF CurrentPosition.Y-Increment.Y < Min.Y THEN Direction.Y = 1 : sound 200+rnd*325,.5
|
||||||
|
CurrentPosition.Y = CurrentPosition.Y + (Increment.Y*Direction.Y)
|
||||||
|
'
|
||||||
|
' display the ball at the new position
|
||||||
|
'
|
||||||
|
PUT (CurrentPosition.X,CurrentPosition.Y),GraphicsBuffer
|
||||||
|
'
|
||||||
|
' wait some time for smoother animation
|
||||||
|
'
|
||||||
|
DELAY .03
|
||||||
|
'
|
||||||
|
' save current position so the ball can be erased before next move
|
||||||
|
'
|
||||||
|
OldPosition.X = CurrentPosition.X
|
||||||
|
OldPosition.Y = CurrentPosition.Y
|
||||||
|
'
|
||||||
|
' keep looping until any key is hit
|
||||||
|
'
|
||||||
|
LOOP UNTIL INSTAT
|
||||||
|
END
|
||||||
|
|
BIN
Borland Turbo BASIC v11/BASICA.EXE
Normal file
BIN
Borland Turbo BASIC v11/BASICA.EXE
Normal file
Binary file not shown.
68649
Borland Turbo BASIC v11/Borland_Turbo_BASIC_Owners_Handbook_1987.pdf
Normal file
68649
Borland Turbo BASIC v11/Borland_Turbo_BASIC_Owners_Handbook_1987.pdf
Normal file
File diff suppressed because one or more lines are too long
BIN
Borland Turbo BASIC v11/DJ941-3.WPS
Normal file
BIN
Borland Turbo BASIC v11/DJ941-3.WPS
Normal file
Binary file not shown.
BIN
Borland Turbo BASIC v11/DJ941-4.WPS
Normal file
BIN
Borland Turbo BASIC v11/DJ941-4.WPS
Normal file
Binary file not shown.
31
Borland Turbo BASIC v11/E.BAS
Normal file
31
Borland Turbo BASIC v11/E.BAS
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
100 DIGITS% = 200
|
||||||
|
110 DIM A%( 200 )
|
||||||
|
120 HIGH% = DIGITS%
|
||||||
|
130 X% = 0
|
||||||
|
140 N% = HIGH% - 1
|
||||||
|
150 IF N% <= 0 GOTO 200
|
||||||
|
160 A%[ N% ] = 1
|
||||||
|
170 N% = N% - 1
|
||||||
|
180 GOTO 150
|
||||||
|
200 A%[ 1 ] = 2
|
||||||
|
210 A%[ 0 ] = 0
|
||||||
|
220 IF HIGH% <= 9 GOTO 400
|
||||||
|
230 HIGH% = HIGH% - 1
|
||||||
|
235 N% = HIGH%
|
||||||
|
240 IF N% = 0 GOTO 300
|
||||||
|
250 A%[ N% ] = X% MOD N%
|
||||||
|
255 rem PRINT "a[n-1]"; A%[ N% - 1 ]
|
||||||
|
260 X% = ( 10 * A%[ N% - 1 ] ) + ( X% \ N% )
|
||||||
|
265 rem PRINT "x: "; X%, "n: "; N%
|
||||||
|
270 N% = N% - 1
|
||||||
|
280 GOTO 240
|
||||||
|
300 IF X% >= 10 GOTO 330
|
||||||
|
310 PRINT USING "#"; X%;
|
||||||
|
320 GOTO 220
|
||||||
|
330 PRINT USING "##"; X%;
|
||||||
|
340 GOTO 220
|
||||||
|
400 PRINT ""
|
||||||
|
410 PRINT "done"
|
||||||
|
420 SYSTEM
|
||||||
|
|
||||||
|
|
2
Borland Turbo BASIC v11/HELLO.BAS
Normal file
2
Borland Turbo BASIC v11/HELLO.BAS
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
print "hello dave"
|
||||||
|
|
759
Borland Turbo BASIC v11/MUSIC.BAS
Normal file
759
Borland Turbo BASIC v11/MUSIC.BAS
Normal file
@ -0,0 +1,759 @@
|
|||||||
|
'ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
|
||||||
|
'³ MUSIC.BAS ³
|
||||||
|
'³ VERSION 1.0 ³
|
||||||
|
'³ ³
|
||||||
|
'³ Turbo Basic ³
|
||||||
|
'³ (C) Copyright 1987 by Borland International ³
|
||||||
|
'³ ³
|
||||||
|
'³ System Requirements: ³
|
||||||
|
'³ - DOS Version 2.0 or later ³
|
||||||
|
'³ - 320K ³
|
||||||
|
'³ ³
|
||||||
|
'³ This program is a simple demonstration of the sound capabilities ³
|
||||||
|
'³ of Turbo Basic. It plays the classical "Two-Part Invention Number 4 in ³
|
||||||
|
'³ D-Minor by Johann Sebastian Bach. ³
|
||||||
|
'³ ³
|
||||||
|
'³ In order to run this program do the following: ³
|
||||||
|
'³ 1. Load Turbo Basic by typing TB at the DOS prompt. ³
|
||||||
|
'³ 2. Load the file MUSIC.BAS from the Load option of the File ³
|
||||||
|
'³ pulldown menu. ³
|
||||||
|
'³ 3. Select Run from the Main menu ³
|
||||||
|
'ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
|
||||||
|
|
||||||
|
|
||||||
|
$SOUND 4096 ' set the sound buffer to the maximum size
|
||||||
|
DEFINT A-Z ' declare all variables integer type
|
||||||
|
READ Frequency,Duration ' read first Frequency and Duration pair
|
||||||
|
WHILE Frequency <> -1 ' keep playing notes until the end of song
|
||||||
|
DELAY .05 ' general delay for music clarity
|
||||||
|
IF Frequency = 0 THEN
|
||||||
|
'
|
||||||
|
' If Frequency is 0 then pause for the Duration
|
||||||
|
' value (in hundredths of a second)
|
||||||
|
'
|
||||||
|
SELECT CASE Duration
|
||||||
|
CASE 3
|
||||||
|
DELAY .03
|
||||||
|
CASE 6
|
||||||
|
DELAY .06
|
||||||
|
END SELECT
|
||||||
|
ELSE
|
||||||
|
'
|
||||||
|
' Otherwise, use the SOUND statement to play the Frequency for
|
||||||
|
' the proper Duration. Remember that the SOUND statement
|
||||||
|
' uses durations in Clock Tick. The values used in the
|
||||||
|
' following SOUND statements were pre-calculated for speed
|
||||||
|
' and are derived by:
|
||||||
|
' ClockTicks = Duration/100/0.0549
|
||||||
|
' note: 0.0549 = number of seconds per clock tick
|
||||||
|
'
|
||||||
|
SELECT CASE Duration
|
||||||
|
CASE 3
|
||||||
|
SOUND Frequency,0.5464
|
||||||
|
CASE 6
|
||||||
|
SOUND Frequency,1.0929
|
||||||
|
CASE 8
|
||||||
|
SOUND Frequency,1.4572
|
||||||
|
CASE 9
|
||||||
|
SOUND Frequency,1.6393
|
||||||
|
END SELECT
|
||||||
|
END IF
|
||||||
|
READ Frequency,Duration ' read in next Frequency and Duration pair
|
||||||
|
WEND
|
||||||
|
END
|
||||||
|
|
||||||
|
'
|
||||||
|
' Two-Part Invention Number 4 in D-Minor data
|
||||||
|
' Data is in Frequency and Duration Pairs:
|
||||||
|
' Frequency is the Note frequence to play
|
||||||
|
' Duration is the length (in 1/100 of a second) to play
|
||||||
|
' Data is terminated by Frequency and Duration = -1
|
||||||
|
'
|
||||||
|
DATA 586,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 658,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 697,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 782,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 878,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 930,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 553,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 930,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 878,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 782,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 697,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 658,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 697,6
|
||||||
|
DATA 293,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 329,6
|
||||||
|
DATA 878,6
|
||||||
|
DATA 348,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 391,6
|
||||||
|
DATA 1172,6
|
||||||
|
DATA 439,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 465,6
|
||||||
|
DATA 782,6
|
||||||
|
DATA 277,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 465,6
|
||||||
|
DATA 1106,6
|
||||||
|
DATA 439,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 391,6
|
||||||
|
DATA 1315,6
|
||||||
|
DATA 348,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 329,6
|
||||||
|
DATA 1172,6
|
||||||
|
DATA 348,6
|
||||||
|
DATA 1315,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 1394,6
|
||||||
|
DATA 439,6
|
||||||
|
DATA 1564,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 1756,6
|
||||||
|
DATA 586,6
|
||||||
|
DATA 1860,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 1106,6
|
||||||
|
DATA 329,6
|
||||||
|
DATA 1860,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 1756,6
|
||||||
|
DATA 391,6
|
||||||
|
DATA 1564,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 1394,6
|
||||||
|
DATA 553,6
|
||||||
|
DATA 1315,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 1394,6
|
||||||
|
DATA 293,6
|
||||||
|
DATA 1172,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 1315,6
|
||||||
|
DATA 586,6
|
||||||
|
DATA 1394,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 1564,6
|
||||||
|
DATA 348,6
|
||||||
|
DATA 1756,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 930,6
|
||||||
|
DATA 391,6
|
||||||
|
DATA 1756,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 1564,6
|
||||||
|
DATA 439,6
|
||||||
|
DATA 1394,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 1315,6
|
||||||
|
DATA 465,6
|
||||||
|
DATA 1172,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 1315,6
|
||||||
|
DATA 261,6
|
||||||
|
DATA 1044,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 1172,6
|
||||||
|
DATA 522,6
|
||||||
|
DATA 1315,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 1394,6
|
||||||
|
DATA 329,6
|
||||||
|
DATA 1564,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 878,6
|
||||||
|
DATA 348,6
|
||||||
|
DATA 1564,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 1394,6
|
||||||
|
DATA 391,6
|
||||||
|
DATA 1315,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 1172,6
|
||||||
|
DATA 439,6
|
||||||
|
DATA 1044,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 1172,6
|
||||||
|
DATA 465,6
|
||||||
|
DATA 1315,6
|
||||||
|
DATA 391,6
|
||||||
|
DATA 1394,6
|
||||||
|
DATA 439,6
|
||||||
|
DATA 1172,6
|
||||||
|
DATA 465,6
|
||||||
|
DATA 1315,6
|
||||||
|
DATA 522,6
|
||||||
|
DATA 1394,6
|
||||||
|
DATA 586,6
|
||||||
|
DATA 782,6
|
||||||
|
DATA 329,6
|
||||||
|
DATA 586,9
|
||||||
|
DATA 0,3
|
||||||
|
DATA 522,9
|
||||||
|
DATA 0,3
|
||||||
|
DATA 465,9
|
||||||
|
DATA 0,3
|
||||||
|
DATA 439,9
|
||||||
|
DATA 0,3
|
||||||
|
DATA 391,9
|
||||||
|
DATA 0,3
|
||||||
|
DATA 1044,6
|
||||||
|
DATA 439,6
|
||||||
|
DATA 1172,6
|
||||||
|
DATA 348,6
|
||||||
|
DATA 1315,6
|
||||||
|
DATA 391,6
|
||||||
|
DATA 1044,6
|
||||||
|
DATA 439,6
|
||||||
|
DATA 1172,6
|
||||||
|
DATA 465,6
|
||||||
|
DATA 1315,6
|
||||||
|
DATA 522,6
|
||||||
|
DATA 697,6
|
||||||
|
DATA 293,6
|
||||||
|
DATA 522,9
|
||||||
|
DATA 0,3
|
||||||
|
DATA 465,9
|
||||||
|
DATA 0,3
|
||||||
|
DATA 439,9
|
||||||
|
DATA 0,3
|
||||||
|
DATA 930,6
|
||||||
|
DATA 391,6
|
||||||
|
DATA 930,6
|
||||||
|
DATA 391,6
|
||||||
|
DATA 930,6
|
||||||
|
DATA 329,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 261,6
|
||||||
|
DATA 878,6
|
||||||
|
DATA 293,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 329,6
|
||||||
|
DATA 782,6
|
||||||
|
DATA 348,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 391,6
|
||||||
|
DATA 1044,6
|
||||||
|
DATA 219,6
|
||||||
|
DATA 930,6
|
||||||
|
DATA 391,6
|
||||||
|
DATA 878,6
|
||||||
|
DATA 348,6
|
||||||
|
DATA 782,6
|
||||||
|
DATA 329,6
|
||||||
|
DATA 697,6
|
||||||
|
DATA 293,6
|
||||||
|
DATA 658,6
|
||||||
|
DATA 261,6
|
||||||
|
DATA 697,6
|
||||||
|
DATA 293,6
|
||||||
|
DATA 782,6
|
||||||
|
DATA 233,6
|
||||||
|
DATA 782,6
|
||||||
|
DATA 261,6
|
||||||
|
DATA 782,6
|
||||||
|
DATA 261,6
|
||||||
|
DATA 782,6
|
||||||
|
DATA 131,6
|
||||||
|
DATA 697,6
|
||||||
|
DATA 123,6
|
||||||
|
DATA 697,6
|
||||||
|
DATA 174,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 196,6
|
||||||
|
DATA 1044,6
|
||||||
|
DATA 219,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 233,6
|
||||||
|
DATA 1044,6
|
||||||
|
DATA 261,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 293,6
|
||||||
|
DATA 1044,3
|
||||||
|
DATA 1172,3
|
||||||
|
DATA 164,6
|
||||||
|
DATA 1044,3
|
||||||
|
DATA 1172,3
|
||||||
|
DATA 293,6
|
||||||
|
DATA 1044,3
|
||||||
|
DATA 1172,3
|
||||||
|
DATA 261,6
|
||||||
|
DATA 1044,3
|
||||||
|
DATA 1172,3
|
||||||
|
DATA 233,6
|
||||||
|
DATA 1044,3
|
||||||
|
DATA 1172,3
|
||||||
|
DATA 219,6
|
||||||
|
DATA 1044,3
|
||||||
|
DATA 1172,3
|
||||||
|
DATA 196,6
|
||||||
|
DATA 1044,3
|
||||||
|
DATA 1172,3
|
||||||
|
DATA 219,6
|
||||||
|
DATA 1044,3
|
||||||
|
DATA 1172,3
|
||||||
|
DATA 233,6
|
||||||
|
DATA 1044,3
|
||||||
|
DATA 1172,3
|
||||||
|
DATA 261,6
|
||||||
|
DATA 1044,3
|
||||||
|
DATA 1172,3
|
||||||
|
DATA 293,6
|
||||||
|
DATA 1044,3
|
||||||
|
DATA 1172,3
|
||||||
|
DATA 329,6
|
||||||
|
DATA 1044,3
|
||||||
|
DATA 1172,3
|
||||||
|
DATA 348,6
|
||||||
|
DATA 1044,3
|
||||||
|
DATA 1172,3
|
||||||
|
DATA 196,6
|
||||||
|
DATA 1044,3
|
||||||
|
DATA 1172,3
|
||||||
|
DATA 348,6
|
||||||
|
DATA 1044,3
|
||||||
|
DATA 1172,3
|
||||||
|
DATA 329,6
|
||||||
|
DATA 1044,3
|
||||||
|
DATA 1172,3
|
||||||
|
DATA 293,6
|
||||||
|
DATA 1044,3
|
||||||
|
DATA 1172,3
|
||||||
|
DATA 261,6
|
||||||
|
DATA 1044,3
|
||||||
|
DATA 1172,3
|
||||||
|
DATA 233,6
|
||||||
|
DATA 1044,6
|
||||||
|
DATA 219,6
|
||||||
|
DATA 930,6
|
||||||
|
DATA 233,6
|
||||||
|
DATA 878,6
|
||||||
|
DATA 261,6
|
||||||
|
DATA 782,6
|
||||||
|
DATA 219,6
|
||||||
|
DATA 697,6
|
||||||
|
DATA 233,6
|
||||||
|
DATA 658,6
|
||||||
|
DATA 261,6
|
||||||
|
DATA 1044,6
|
||||||
|
DATA 185,6
|
||||||
|
DATA 586,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 658,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 738,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 782,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 878,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 930,6
|
||||||
|
DATA 196,6
|
||||||
|
DATA 878,6
|
||||||
|
DATA 219,6
|
||||||
|
DATA 782,6
|
||||||
|
DATA 233,6
|
||||||
|
DATA 697,6
|
||||||
|
DATA 196,6
|
||||||
|
DATA 658,6
|
||||||
|
DATA 219,6
|
||||||
|
DATA 586,6
|
||||||
|
DATA 233,6
|
||||||
|
DATA 930,6
|
||||||
|
DATA 164,6
|
||||||
|
DATA 522,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 586,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 658,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 697,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 782,6
|
||||||
|
DATA 174,6
|
||||||
|
DATA 878,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 985,6
|
||||||
|
DATA 348,6
|
||||||
|
DATA 1044,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 1172,6
|
||||||
|
DATA 293,6
|
||||||
|
DATA 1315,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 1394,6
|
||||||
|
DATA 246,6
|
||||||
|
DATA 829,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 1394,6
|
||||||
|
DATA 207,6
|
||||||
|
DATA 1315,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 1172,6
|
||||||
|
DATA 164,6
|
||||||
|
DATA 1044,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 985,6
|
||||||
|
DATA 219,6
|
||||||
|
DATA 1044,6
|
||||||
|
DATA 207,6
|
||||||
|
DATA 985,6
|
||||||
|
DATA 219,6
|
||||||
|
DATA 1172,6
|
||||||
|
DATA 246,6
|
||||||
|
DATA 1044,6
|
||||||
|
DATA 261,6
|
||||||
|
DATA 985,6
|
||||||
|
DATA 293,6
|
||||||
|
DATA 878,6
|
||||||
|
DATA 329,3
|
||||||
|
DATA 348,3
|
||||||
|
DATA 829,6
|
||||||
|
DATA 329,3
|
||||||
|
DATA 348,3
|
||||||
|
DATA 878,6
|
||||||
|
DATA 329,3
|
||||||
|
DATA 348,3
|
||||||
|
DATA 829,6
|
||||||
|
DATA 329,3
|
||||||
|
DATA 348,3
|
||||||
|
DATA 738,6
|
||||||
|
DATA 329,3
|
||||||
|
DATA 348,3
|
||||||
|
DATA 658,6
|
||||||
|
DATA 329,3
|
||||||
|
DATA 348,3
|
||||||
|
DATA 586,6
|
||||||
|
DATA 329,3
|
||||||
|
DATA 348,3
|
||||||
|
DATA 522,6
|
||||||
|
DATA 329,3
|
||||||
|
DATA 348,6
|
||||||
|
DATA 586,6
|
||||||
|
DATA 329,3
|
||||||
|
DATA 348,3
|
||||||
|
DATA 658,6
|
||||||
|
DATA 329,3
|
||||||
|
DATA 348,3
|
||||||
|
DATA 738,6
|
||||||
|
DATA 329,3
|
||||||
|
DATA 348,3
|
||||||
|
DATA 829,6
|
||||||
|
DATA 329,3
|
||||||
|
DATA 348,3
|
||||||
|
DATA 878,6
|
||||||
|
DATA 329,3
|
||||||
|
DATA 348,3
|
||||||
|
DATA 586,6
|
||||||
|
DATA 329,3
|
||||||
|
DATA 348,3
|
||||||
|
DATA 1044,6
|
||||||
|
DATA 329,3
|
||||||
|
DATA 348,3
|
||||||
|
DATA 985,6
|
||||||
|
DATA 329,3
|
||||||
|
DATA 348,3
|
||||||
|
DATA 878,6
|
||||||
|
DATA 329,3
|
||||||
|
DATA 348,3
|
||||||
|
DATA 829,6
|
||||||
|
DATA 329,3
|
||||||
|
DATA 348,3
|
||||||
|
DATA 738,6
|
||||||
|
DATA 329,3
|
||||||
|
DATA 348,3
|
||||||
|
DATA 658,6
|
||||||
|
DATA 329,3
|
||||||
|
DATA 348,3
|
||||||
|
DATA 738,6
|
||||||
|
DATA 329,3
|
||||||
|
DATA 348,3
|
||||||
|
DATA 829,6
|
||||||
|
DATA 329,3
|
||||||
|
DATA 348,3
|
||||||
|
DATA 878,6
|
||||||
|
DATA 329,3
|
||||||
|
DATA 348,3
|
||||||
|
DATA 985,6
|
||||||
|
DATA 329,3
|
||||||
|
DATA 348,3
|
||||||
|
DATA 1044,6
|
||||||
|
DATA 329,3
|
||||||
|
DATA 348,3
|
||||||
|
DATA 738,6
|
||||||
|
DATA 329,3
|
||||||
|
DATA 348,3
|
||||||
|
DATA 1315,6
|
||||||
|
DATA 329,3
|
||||||
|
DATA 348,3
|
||||||
|
DATA 1172,6
|
||||||
|
DATA 329,3
|
||||||
|
DATA 348,3
|
||||||
|
DATA 1044,6
|
||||||
|
DATA 329,3
|
||||||
|
DATA 348,3
|
||||||
|
DATA 985,6
|
||||||
|
DATA 329,3
|
||||||
|
DATA 348,3
|
||||||
|
DATA 878,6
|
||||||
|
DATA 829,6
|
||||||
|
DATA 329,6
|
||||||
|
DATA 878,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 985,6
|
||||||
|
DATA 658,6
|
||||||
|
DATA 1044,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 1172,6
|
||||||
|
DATA 586,6
|
||||||
|
DATA 1315,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 878,6
|
||||||
|
DATA 522,6
|
||||||
|
DATA 1394,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 1315,6
|
||||||
|
DATA 493,6
|
||||||
|
DATA 1172,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 1044,6
|
||||||
|
DATA 439,6
|
||||||
|
DATA 985,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 1756,6
|
||||||
|
DATA 586,6
|
||||||
|
DATA 1657,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 1476,6
|
||||||
|
DATA 658,6
|
||||||
|
DATA 1315,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 1756,6
|
||||||
|
DATA 697,6
|
||||||
|
DATA 1756,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 1756,6
|
||||||
|
DATA 586,6
|
||||||
|
DATA 1172,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 985,3
|
||||||
|
DATA 1044,3
|
||||||
|
DATA 658,6
|
||||||
|
DATA 985,3
|
||||||
|
DATA 1044,3
|
||||||
|
DATA 0,6
|
||||||
|
DATA 985,3
|
||||||
|
DATA 1044,3
|
||||||
|
DATA 329,6
|
||||||
|
DATA 878,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 878,6
|
||||||
|
DATA 439,6
|
||||||
|
DATA 878,6
|
||||||
|
DATA 219,6
|
||||||
|
DATA 878,6
|
||||||
|
DATA 233,6
|
||||||
|
DATA 878,6
|
||||||
|
DATA 261,6
|
||||||
|
DATA 930,6
|
||||||
|
DATA 293,6
|
||||||
|
DATA 1044,6
|
||||||
|
DATA 310,6
|
||||||
|
DATA 586,6
|
||||||
|
DATA 185,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 310,6
|
||||||
|
DATA 738,6
|
||||||
|
DATA 293,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 261,6
|
||||||
|
DATA 878,6
|
||||||
|
DATA 233,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 219,6
|
||||||
|
DATA 930,6
|
||||||
|
DATA 196,6
|
||||||
|
DATA 782,6
|
||||||
|
DATA 196,6
|
||||||
|
DATA 878,6
|
||||||
|
DATA 196,6
|
||||||
|
DATA 930,6
|
||||||
|
DATA 196,6
|
||||||
|
DATA 1044,6
|
||||||
|
DATA 219,6
|
||||||
|
DATA 1172,6
|
||||||
|
DATA 233,6
|
||||||
|
DATA 658,6
|
||||||
|
DATA 131,6
|
||||||
|
DATA 1172,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 1044,6
|
||||||
|
DATA 196,6
|
||||||
|
DATA 930,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 878,6
|
||||||
|
DATA 261,6
|
||||||
|
DATA 782,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 878,6
|
||||||
|
DATA 348,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 391,6
|
||||||
|
DATA 1394,6
|
||||||
|
DATA 439,6
|
||||||
|
DATA 1315,6
|
||||||
|
DATA 493,6
|
||||||
|
DATA 1394,6
|
||||||
|
DATA 553,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 586,6
|
||||||
|
DATA 782,6
|
||||||
|
DATA 329,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 586,6
|
||||||
|
DATA 1315,6
|
||||||
|
DATA 553,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 493,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 439,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 391,6
|
||||||
|
DATA 1172,6
|
||||||
|
DATA 348,6
|
||||||
|
DATA 1315,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 1394,6
|
||||||
|
DATA 439,6
|
||||||
|
DATA 1564,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 1756,6
|
||||||
|
DATA 586,6
|
||||||
|
DATA 1860,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 1106,6
|
||||||
|
DATA 329,6
|
||||||
|
DATA 1860,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 1756,6
|
||||||
|
DATA 391,6
|
||||||
|
DATA 1564,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 1394,6
|
||||||
|
DATA 553,6
|
||||||
|
DATA 1315,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 1394,6
|
||||||
|
DATA 293,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 329,6
|
||||||
|
DATA 1172,6
|
||||||
|
DATA 348,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 391,6
|
||||||
|
DATA 782,6
|
||||||
|
DATA 439,6
|
||||||
|
DATA 782,6
|
||||||
|
DATA 465,6
|
||||||
|
DATA 782,6
|
||||||
|
DATA 277,6
|
||||||
|
DATA 1172,6
|
||||||
|
DATA 465,6
|
||||||
|
DATA 1106,6
|
||||||
|
DATA 439,6
|
||||||
|
DATA 1315,6
|
||||||
|
DATA 391,6
|
||||||
|
DATA 878,6
|
||||||
|
DATA 348,6
|
||||||
|
DATA 1106,6
|
||||||
|
DATA 329,6
|
||||||
|
DATA 1172,6
|
||||||
|
DATA 348,6
|
||||||
|
DATA 985,6
|
||||||
|
DATA 391,6
|
||||||
|
DATA 1106,3
|
||||||
|
DATA 1172,3
|
||||||
|
DATA 439,6
|
||||||
|
DATA 1106,3
|
||||||
|
DATA 1172,3
|
||||||
|
DATA 0,6
|
||||||
|
DATA 1106,3
|
||||||
|
DATA 1172,3
|
||||||
|
DATA 219,6
|
||||||
|
DATA 1172,6
|
||||||
|
DATA 0,6
|
||||||
|
DATA 1172,6
|
||||||
|
DATA 233,6
|
||||||
|
DATA 1044,6
|
||||||
|
DATA 233,6
|
||||||
|
DATA 930,6
|
||||||
|
DATA 233,6
|
||||||
|
DATA 878,6
|
||||||
|
DATA 261,6
|
||||||
|
DATA 782,6
|
||||||
|
DATA 233,6
|
||||||
|
DATA 697,6
|
||||||
|
DATA 219,6
|
||||||
|
DATA 930,8
|
||||||
|
DATA 196,8
|
||||||
|
DATA 553,8
|
||||||
|
DATA 465,8
|
||||||
|
DATA 586,8
|
||||||
|
DATA 439,8
|
||||||
|
DATA 658,8
|
||||||
|
DATA 391,8
|
||||||
|
DATA 697,8
|
||||||
|
DATA 348,8
|
||||||
|
DATA 782,8
|
||||||
|
DATA 329,8
|
||||||
|
DATA 878,9
|
||||||
|
DATA 348,9
|
||||||
|
DATA 1172,9
|
||||||
|
DATA 391,9
|
||||||
|
DATA 697,9
|
||||||
|
DATA 439,9
|
||||||
|
DATA 697,9
|
||||||
|
DATA 439,9
|
||||||
|
DATA 658,9
|
||||||
|
DATA 219,9
|
||||||
|
DATA 586,9
|
||||||
|
DATA 219,9
|
||||||
|
DATA 586,6
|
||||||
|
DATA 146,6
|
||||||
|
DATA 586,6
|
||||||
|
DATA 146,6
|
||||||
|
DATA 586,6
|
||||||
|
DATA 146,6
|
||||||
|
DATA 586,6
|
||||||
|
DATA 146,6
|
||||||
|
DATA 586,6
|
||||||
|
DATA 146,6
|
||||||
|
DATA 586,6
|
||||||
|
DATA 146,6
|
||||||
|
DATA 586,6
|
||||||
|
DATA 146,6
|
||||||
|
DATA 586,6
|
||||||
|
DATA 146,6
|
||||||
|
DATA 586,6
|
||||||
|
DATA 146,6
|
||||||
|
DATA -1,-1
|
||||||
|
'
|
||||||
|
' end of data
|
||||||
|
'
|
||||||
|
|
BIN
Borland Turbo BASIC v11/QATTR.BIN
Normal file
BIN
Borland Turbo BASIC v11/QATTR.BIN
Normal file
Binary file not shown.
BIN
Borland Turbo BASIC v11/QFILL.BIN
Normal file
BIN
Borland Turbo BASIC v11/QFILL.BIN
Normal file
Binary file not shown.
BIN
Borland Turbo BASIC v11/QPRINT.BIN
Normal file
BIN
Borland Turbo BASIC v11/QPRINT.BIN
Normal file
Binary file not shown.
BIN
Borland Turbo BASIC v11/QPRINTC.BIN
Normal file
BIN
Borland Turbo BASIC v11/QPRINTC.BIN
Normal file
Binary file not shown.
BIN
Borland Turbo BASIC v11/QREST.BIN
Normal file
BIN
Borland Turbo BASIC v11/QREST.BIN
Normal file
Binary file not shown.
BIN
Borland Turbo BASIC v11/QSAVE.BIN
Normal file
BIN
Borland Turbo BASIC v11/QSAVE.BIN
Normal file
Binary file not shown.
20
Borland Turbo BASIC v11/SIEVE.BAS
Normal file
20
Borland Turbo BASIC v11/SIEVE.BAS
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
1 SIZE% = 8190
|
||||||
|
2 DIM FLAGS%(8191)
|
||||||
|
3 PRINT "10 iterations"
|
||||||
|
4 FOR X% = 1 TO 10
|
||||||
|
5 COUNT% = 0
|
||||||
|
6 FOR I% = 0 TO SIZE%
|
||||||
|
7 FLAGS%(I%) = 1
|
||||||
|
8 NEXT I%
|
||||||
|
9 FOR I% = 0 TO SIZE%
|
||||||
|
10 IF FLAGS%(I%) = 0 THEN 18
|
||||||
|
11 PRIME% = I% + I% + 3
|
||||||
|
12 K% = I% + PRIME%
|
||||||
|
13 IF K% > SIZE% THEN 17
|
||||||
|
14 FLAGS%(K%) = 0
|
||||||
|
15 K% = K% + PRIME%
|
||||||
|
16 GOTO 13
|
||||||
|
17 COUNT% = COUNT% + 1
|
||||||
|
18 NEXT I%
|
||||||
|
19 NEXT X%
|
||||||
|
20 PRINT COUNT%," PRIMES"
|
BIN
Borland Turbo BASIC v11/TB.EXE
Normal file
BIN
Borland Turbo BASIC v11/TB.EXE
Normal file
Binary file not shown.
BIN
Borland Turbo BASIC v11/TBCONFIG.TB
Normal file
BIN
Borland Turbo BASIC v11/TBCONFIG.TB
Normal file
Binary file not shown.
655
Borland Turbo BASIC v11/TBDEMO30.BAS
Normal file
655
Borland Turbo BASIC v11/TBDEMO30.BAS
Normal file
@ -0,0 +1,655 @@
|
|||||||
|
' TBWINDO
|
||||||
|
' MULTI-LEVEL WINDOWS
|
||||||
|
' FOR TURBO BASIC
|
||||||
|
' Version 3.0
|
||||||
|
'
|
||||||
|
'PURPOSE:
|
||||||
|
' This utility creates incredibly quick multi-level windows
|
||||||
|
' in Turbo Basic programs for IBM PC/XT/AT compatibles.
|
||||||
|
'
|
||||||
|
'TEST DRIVE:
|
||||||
|
' Compile and run the tutoring program TBDEMO30.BAS to get a
|
||||||
|
' feel for features and speed.
|
||||||
|
'
|
||||||
|
'
|
||||||
|
'FILES:
|
||||||
|
' TBWINDO.INC - Turbo Basic window include file
|
||||||
|
' TBMENU.INC - Menu include file
|
||||||
|
' QPRINT.BIN - Quick print inline subroutine
|
||||||
|
' QPRINTC.BIN - Quick print between columns
|
||||||
|
' QATTR.BIN - Re-attribute an area of the screen
|
||||||
|
' QFILL.BIN - Fill an area of the screen with a
|
||||||
|
' specified character and attribute
|
||||||
|
' QSAVE.BIN - Save portion of screen
|
||||||
|
' QREST.BIN - Restore portion of screen
|
||||||
|
' RECOLOR.BIN - Screen area recoloring
|
||||||
|
' TBDEMO30.BAS - Demonstration program source code
|
||||||
|
'
|
||||||
|
' Assembly language source code for all BIN files is
|
||||||
|
' included for all those interested. Any Suggestions for
|
||||||
|
' improvements to the code would be appreciated, as I do not
|
||||||
|
' profess to be good at Assembly language.
|
||||||
|
'
|
||||||
|
'USING TBWINDO
|
||||||
|
' Include the TBWINDO.INC program in your program with the
|
||||||
|
' following statement:
|
||||||
|
'
|
||||||
|
' $INCLUDE "TBWINDO.INC"
|
||||||
|
'
|
||||||
|
' Set MW% variable equal to the maximum number of windows
|
||||||
|
' you will have open at any one time.
|
||||||
|
'
|
||||||
|
' Set the ScrnArray variable equal to the estimated total
|
||||||
|
' memory required to save your screens. If you expreience a
|
||||||
|
' subscript out of range error in the include file, increase
|
||||||
|
' this variable. As a rough rule of thumb, start out with
|
||||||
|
' the variable equal to 250 times the maximum windows (mw%)
|
||||||
|
' variable.
|
||||||
|
'
|
||||||
|
' You invoke the routines by means of a CALL with a list of
|
||||||
|
' parameters, rather than a GOSUB.
|
||||||
|
'
|
||||||
|
' Using the MAKEWINDOW procedure:
|
||||||
|
'
|
||||||
|
' CALL
|
||||||
|
' MAKEWINDOW(ROW%,COL%,ROWS%,COLS%,ATTR%,BRDRSEL%,SHADOW%,ZO
|
||||||
|
' OM%)
|
||||||
|
'
|
||||||
|
' Where: ROW - the screen row of the upper left hand corner
|
||||||
|
' of your desired window. Value should be
|
||||||
|
' between 2 and 23 (for reasons explained
|
||||||
|
' below). WARNING - the subroutine does not
|
||||||
|
' check for proper values. You must check these
|
||||||
|
' yourself or accept the consequences.
|
||||||
|
'
|
||||||
|
' COL - the screen column of the upper left hand
|
||||||
|
' corner. Value should be between 2 and 79.
|
||||||
|
'
|
||||||
|
' ROWS - the number of rows long the window should be.
|
||||||
|
'
|
||||||
|
' COLS - the number of columns wide the window should
|
||||||
|
' be.
|
||||||
|
'
|
||||||
|
' ATTR - the attribute of the window colors.
|
||||||
|
'
|
||||||
|
' BRDRSEL - the border you desire around the window.
|
||||||
|
' Valid selections in this release are:
|
||||||
|
'
|
||||||
|
' 0 - No Frame (just a border of BACKground
|
||||||
|
' color.)
|
||||||
|
' 1 - Single Line Frame
|
||||||
|
' 2 - Double Line Frame
|
||||||
|
' 3 - Single Horizontal Line, Double Vertical
|
||||||
|
' Line
|
||||||
|
' 4 - Single Vertical Line, Double Horizontal
|
||||||
|
' Line
|
||||||
|
'
|
||||||
|
' SHADOW - Another "switch" to indicate if the window
|
||||||
|
' should have a black "shadow" under it offset
|
||||||
|
' down. This gives a three-dimensional effect
|
||||||
|
' that seems to "raise" the window away from the
|
||||||
|
' screen. A value of 1 indicates a shadow is
|
||||||
|
' desired on the left side, a value of 2
|
||||||
|
' indicates the right side, while a value of 0
|
||||||
|
' means no shadow.
|
||||||
|
'
|
||||||
|
' ZOOM - A "switch" used to indicate to the subroutine
|
||||||
|
' if the window should "grow" from a small box
|
||||||
|
' at the midpoints of the coordinates to full
|
||||||
|
' size. A value of 1 indicates the window should
|
||||||
|
' grow. A value of 0 indicates it should not.
|
||||||
|
'
|
||||||
|
'
|
||||||
|
'
|
||||||
|
' using the TITLEWINDOW procedure:
|
||||||
|
'
|
||||||
|
' CALL TITLEWINDOW(LOC%,TITLE$)
|
||||||
|
'
|
||||||
|
' Where: LOC - Indicates where the title should be placed.
|
||||||
|
' Valid selections are:
|
||||||
|
'
|
||||||
|
' 1 - Top left hand corner
|
||||||
|
' 2 - Top center
|
||||||
|
' 3 - Top right hand corner
|
||||||
|
' 4 - Lower left hand corner
|
||||||
|
' 5 - Lower center
|
||||||
|
' 6 - Lower right hand corner
|
||||||
|
'
|
||||||
|
' TITLE - The string data you would like printed.
|
||||||
|
'
|
||||||
|
' NOTE: The TITLEWINDOW procedure uses the coordinates from
|
||||||
|
' the most recent use of MAKEWINDOW. Use this
|
||||||
|
' procedure only after a call has been made to
|
||||||
|
' MAKEWINDOW.
|
||||||
|
'
|
||||||
|
'
|
||||||
|
' Using the RemoveWindow procedure:
|
||||||
|
'
|
||||||
|
' CALL REMOVEWINDOW
|
||||||
|
'
|
||||||
|
' There are no parameters passed to this procedure. The
|
||||||
|
' window created by the last call to MakeWindow is removed
|
||||||
|
' from the screen.
|
||||||
|
'
|
||||||
|
' Using the ClearWindow procedure:
|
||||||
|
'
|
||||||
|
' CALL CLEARWINDOW
|
||||||
|
'
|
||||||
|
' There are no parameters pass to this procedure. The
|
||||||
|
' window created by the last call to MakeWindow is cleared
|
||||||
|
' inside the frame.
|
||||||
|
'
|
||||||
|
' Using the PrtWindow procedure:
|
||||||
|
'
|
||||||
|
' CALL PRTWINDOW(ROW%,COL%,STRDAT%)
|
||||||
|
'
|
||||||
|
' Where: ROW - Is the row within the window you want to
|
||||||
|
' print on.
|
||||||
|
'
|
||||||
|
' COL - Is the column within the window where you
|
||||||
|
' want printing to start.
|
||||||
|
'
|
||||||
|
' NOTE: The ROW and COL coordinates are relative to the
|
||||||
|
' current window. Row 1 Col 1 refers to the first
|
||||||
|
' character position inside the frame in the upper
|
||||||
|
' left corner. No parameter checking is done so if
|
||||||
|
' the string data exceeds the width of the window it
|
||||||
|
' will spill out the right side.
|
||||||
|
'
|
||||||
|
' STRDAT - Is the string data you want printed inside
|
||||||
|
' the window.
|
||||||
|
'
|
||||||
|
'
|
||||||
|
' Using the PrtCWindow procedure:
|
||||||
|
'
|
||||||
|
' CALL PRTCWINDOW(ROW%,STRDAT$)
|
||||||
|
'
|
||||||
|
' Where: ROW - Is the row within the window you to have
|
||||||
|
' your string data centered on.
|
||||||
|
'
|
||||||
|
' STRDAT - Is the string data you want printed within
|
||||||
|
' the window.
|
||||||
|
'
|
||||||
|
' NOTE: This procedure uses the current window and will
|
||||||
|
' attempt to center the string data between the left
|
||||||
|
' border and the right border. No parameter checking
|
||||||
|
' is done so if the string data exceeds the width of
|
||||||
|
' the window, it will spill out the sides.
|
||||||
|
'
|
||||||
|
' Using the FNATTR% function:
|
||||||
|
'
|
||||||
|
' FNATTR%(FORE%,BACK%)
|
||||||
|
'
|
||||||
|
' Where: FORE - is the foreground color. Any Turbo Basic
|
||||||
|
' color number is valid.
|
||||||
|
'
|
||||||
|
' BACK - is the backgound color. Any Turbo Basic
|
||||||
|
' background color is valid.
|
||||||
|
'
|
||||||
|
' FNATTR% returns the attribute of the colors specified.
|
||||||
|
'
|
||||||
|
'
|
||||||
|
' Using the RECOLOR procedure:
|
||||||
|
'
|
||||||
|
' CALL RECOLOR(OLDATTR%,NEWATTR%,SNOCHK%)
|
||||||
|
'
|
||||||
|
' Where: OLDATTR - Is the attribute of the areas on the
|
||||||
|
' screen you wish to change.
|
||||||
|
'
|
||||||
|
' NEWATTR - Is the attribute of the color you want.
|
||||||
|
'
|
||||||
|
' X% = SCREEN(1,1,1) ' RETURNS CURRENT SCREEN
|
||||||
|
' ' ATTRIBUTE
|
||||||
|
' CALL RECOLOR(X%,FNATTR%(14,4))
|
||||||
|
'
|
||||||
|
' This will recolor everything on the screen that
|
||||||
|
' has the same attribute a the upper left corner of
|
||||||
|
' the screen to a foreground of 14 and a background
|
||||||
|
' of 4.
|
||||||
|
'
|
||||||
|
' Using the MAKEMENU procedure:
|
||||||
|
'
|
||||||
|
' CALL MAKEMENU
|
||||||
|
'
|
||||||
|
' You must define several variable before you call the
|
||||||
|
' MakeMenu procedure. First define the selections available
|
||||||
|
' to the user in a string array named item$(). If you want
|
||||||
|
' a title on your menu assign it to the variable mtitle$.
|
||||||
|
' Assign the total selections available to itemcount% and
|
||||||
|
' the starting selection number to startpos%. The remaining
|
||||||
|
' information required is almost identical to defining
|
||||||
|
' window in the MakeWindow procedure.
|
||||||
|
'
|
||||||
|
' Where: MROW - the screen row of the upper left hand corner
|
||||||
|
' of your desired menu. Value should be
|
||||||
|
' between 2 and 23 (for reasons explained
|
||||||
|
' below). WARNING - the subroutine does not
|
||||||
|
' check for proper values. You must check
|
||||||
|
' these yourself or accept the consequences.
|
||||||
|
'
|
||||||
|
' MCOL - the screen column of the upper left hand
|
||||||
|
' corner. Value should be between 2 and 79.
|
||||||
|
'
|
||||||
|
' MWIDTH - The width of the menu. Be sure this value
|
||||||
|
' is greater than the longest string assigned
|
||||||
|
' to a selection.
|
||||||
|
'
|
||||||
|
' MATTR - the attribute of the menu colors.
|
||||||
|
'
|
||||||
|
' MHIATTR - the attribute of the moving selection bar.
|
||||||
|
'
|
||||||
|
' MBRDRSEL - the border you desire around the menu. (See
|
||||||
|
' above)
|
||||||
|
'
|
||||||
|
' MSHADOW - Switch to indicate if the menu should have a
|
||||||
|
' shadow.
|
||||||
|
'
|
||||||
|
' MZOOM - Switch to indicate if the menu should grow.
|
||||||
|
'
|
||||||
|
' When a selection has be made in the MakeMenu procedure the
|
||||||
|
' item number selected will be assigned to the variable
|
||||||
|
' curntpos%. You can now use this number to direct the flow
|
||||||
|
' of you main program. Please see the source code of the
|
||||||
|
' demo program for a better understanding.
|
||||||
|
'
|
||||||
|
' All of the above variables with the exception of the
|
||||||
|
' string variables must either be declared globally as
|
||||||
|
' integers by means of a DEFINT statement early in the
|
||||||
|
' program; or must have the specific integer identifier
|
||||||
|
' (%) attached wherever they appear in the program. The
|
||||||
|
' BASIC compiler is picky about this; so be sure to
|
||||||
|
' verify that the type assignment is correct.
|
||||||
|
'
|
||||||
|
' TBWINDO requires no special handling when it comes to
|
||||||
|
' compiling your program. Just make certain that all of
|
||||||
|
' your variables passing parameters to the TBWINDO
|
||||||
|
' subroutine are identified as integers, and you will be
|
||||||
|
' able to proceed with the compile operation as with any
|
||||||
|
' other program.
|
||||||
|
'
|
||||||
|
'
|
||||||
|
' ACKNOWLEDGEMENTS
|
||||||
|
'
|
||||||
|
' I would like to express my thanks to Dave Evers
|
||||||
|
' (BASWIN22), Tom Hanlin (ADVBAS33) and Jim LeMay
|
||||||
|
' (WINDOW33).
|
||||||
|
'
|
||||||
|
' These utilities are released into the public domain for
|
||||||
|
' anyone to use as they see fit however, anyone who feels
|
||||||
|
' inspired and would like to contribute to my printer paper
|
||||||
|
' and computer supplies fund may feel free to do so.
|
||||||
|
'
|
||||||
|
' Rick Fothergill
|
||||||
|
' 141 Oak Hill Road
|
||||||
|
' Pittsfield, MA 01201
|
||||||
|
' (413) 442-2456
|
||||||
|
'
|
||||||
|
' GEnie Address: R.FOTHERGILL
|
||||||
|
' Compuserve: 76210,443
|
||||||
|
'
|
||||||
|
'
|
||||||
|
' TBWINDO QUICK REFERENCE
|
||||||
|
'
|
||||||
|
' MakeWindow(Row%,Col%,Rows%,Cols%,Attr%,BrdrSel%,Shadow%,Zoom%)
|
||||||
|
'
|
||||||
|
' TitleWindow(Loc%,Title$)
|
||||||
|
'
|
||||||
|
' RemoveWindow
|
||||||
|
'
|
||||||
|
' ClearWindow
|
||||||
|
'
|
||||||
|
' MakeMenu
|
||||||
|
'
|
||||||
|
' PrtWindow(Row%,Col%,StrDat$)
|
||||||
|
'
|
||||||
|
' PrtCWindow(Row%,StrDat$)
|
||||||
|
'
|
||||||
|
' FNAttr%(Fore%,Back%)
|
||||||
|
'
|
||||||
|
' Qsave(Row%,Col%,Rows%,Cols%,Scrn%(??))
|
||||||
|
'
|
||||||
|
' QRest(Row%,Col%,Rows%,Cols%,Scrn%(??))
|
||||||
|
'
|
||||||
|
' ReColor(OldAttr%,NewAttr%,SnoChk%)
|
||||||
|
'
|
||||||
|
' Qprint(Row%,Col%,StrDat$,Attr%)
|
||||||
|
'
|
||||||
|
' QprintC(Row%,ColLeft%,ColRight%,StrDat$,Attr%)
|
||||||
|
'
|
||||||
|
' QFill(Row%,Col%,Rows%,Cols%,Char%,Attr%)
|
||||||
|
'
|
||||||
|
' QAttr(Row%,Col%,Rows%,Cols%,Attr%)
|
||||||
|
'
|
||||||
|
' QBox(Row%,Col%,Rows%,Cols%,Attr%,BrdrSel%)
|
||||||
|
'
|
||||||
|
'
|
||||||
|
|
||||||
|
|
||||||
|
'Demonstration of TBWINDO
|
||||||
|
$INCLUDE "TBWINDO.INC"
|
||||||
|
$INCLUDE "TBMENU.INC"
|
||||||
|
key off
|
||||||
|
out &H3d9,1
|
||||||
|
call qfill(1,1,25,80,32,fnattr%(7,1))
|
||||||
|
for m% = 1 to 3
|
||||||
|
for i% = 1 to 29
|
||||||
|
j% = rnd(1)*69
|
||||||
|
k% = rnd(1)*19
|
||||||
|
f% = rnd(1)*14
|
||||||
|
b% = rnd(1)*6
|
||||||
|
call makewindow(k%+1,j%+1,5,11,fnattr%(f%+1,b%+1),2,0,0)
|
||||||
|
call prtcwindow(2,"WINDOW")
|
||||||
|
next
|
||||||
|
if (m = 3) then delay 3 else delay 1
|
||||||
|
for x = LI to 1 step -1
|
||||||
|
call removewindow
|
||||||
|
next
|
||||||
|
next
|
||||||
|
'Put up opening screen
|
||||||
|
'4 windows of different colors and a Title Window
|
||||||
|
call makewindow(4,15,10,30,fnattr%(4,3),4,1,1)
|
||||||
|
call makewindow(3,36,13,40,fnattr%(15,2),3,1,1)
|
||||||
|
call makewindow(9,10,13,40,fnattr%(0,5),2,1,1)
|
||||||
|
call makewindow(12,42,11,36,fnattr%(3,4),1,1,1)
|
||||||
|
|
||||||
|
call makewindow(3,5,7,40,fnattr%(0,7),2,1,1)
|
||||||
|
|
||||||
|
call prtcwindow(3,"Presenting...")
|
||||||
|
delay 4
|
||||||
|
call makewindow(8,20,7,40,fnattr%(0,7),2,1,1)
|
||||||
|
call prtcwindow(1,"T B W I N D O")
|
||||||
|
call prtcwindow(2,"2.0")
|
||||||
|
call prtcwindow(4,"Windowing Routines for the")
|
||||||
|
call prtcwindow(5,"Borland Turbo BASIC Compiler")
|
||||||
|
|
||||||
|
delay 3
|
||||||
|
call makewindow(17,55,7,24,fnattr%(0,6),1,1,1)
|
||||||
|
call prtwindow(1,2,"By:")
|
||||||
|
call prtcwindow(3,"Rick Fothergill")
|
||||||
|
call prtcwindow(4,"141 Oak Hill Road")
|
||||||
|
call prtcwindow(5,"Pittsfield, MA 01201")
|
||||||
|
|
||||||
|
|
||||||
|
delay 4
|
||||||
|
|
||||||
|
call makewindow(5,5,10,32,fnattr%(15,1),2,1,0)
|
||||||
|
|
||||||
|
call prtcwindow(1,"Including ...")
|
||||||
|
call prtcwindow(3,"*** Window Tools ***")
|
||||||
|
call prtcwindow(5,"A collection of routines")
|
||||||
|
call prtcwindow(6,"for integration into your")
|
||||||
|
call prtcwindow(7,"own programs.")
|
||||||
|
|
||||||
|
delay 4
|
||||||
|
call makewindow(8,25,10,32,fnattr%(15,1),2,1,0)
|
||||||
|
|
||||||
|
call prtwindow(1,2," * * * * * * * * * * * * * ")
|
||||||
|
call prtwindow(3,2,"Stand by for a guided tour")
|
||||||
|
call prtwindow(5,2,"through the many facets of")
|
||||||
|
call prtwindow(7,2,"this exciting program.")
|
||||||
|
delay 2
|
||||||
|
for x = 1 to 9
|
||||||
|
call removewindow
|
||||||
|
next
|
||||||
|
call makewindow(9,16,8,52,fnattr%(0,7),2,0,0)
|
||||||
|
|
||||||
|
|
||||||
|
call prtwindow(1,2,"The basic purpose of TBWINDO is to provide")
|
||||||
|
call prtwindow(2,2,"the fundamental routines for implementing")
|
||||||
|
call prtwindow(3,2,"simple 'windowing' into your Turbo BASIC pro-")
|
||||||
|
call prtwindow(4,2,"grams. With just a few simple statements,")
|
||||||
|
call prtwindow(5,2,"you can 'pop-up' a colored window onto the")
|
||||||
|
call prtwindow(6,2,"screen; just like this ...")
|
||||||
|
|
||||||
|
delay 3
|
||||||
|
call clearwindow
|
||||||
|
|
||||||
|
call prtwindow(2,2,"The window can be a solid panel of any of")
|
||||||
|
call prtwindow(4,2,"the BASIC background colors; such as ...")
|
||||||
|
|
||||||
|
delay 4
|
||||||
|
|
||||||
|
call makewindow(2,2,7,35,fnattr%(1,2),0,0,0)
|
||||||
|
|
||||||
|
delay 3
|
||||||
|
call removewindow
|
||||||
|
call clearwindow
|
||||||
|
|
||||||
|
call prtwindow(2,2,"or it can be surrounded by a 'frame' in any")
|
||||||
|
call prtwindow(4,2,"of five styles...")
|
||||||
|
|
||||||
|
delay 3
|
||||||
|
|
||||||
|
call makewindow(5,5,8,35,fnattr%(9,5),1,0,0)
|
||||||
|
call titlewindow(1,"[ Frame Style 1 ]")
|
||||||
|
call makewindow(8,8,8,35,fnattr%(12,3),2,0,0)
|
||||||
|
call titlewindow(2,"[ Frame Style 2 ]")
|
||||||
|
call makewindow(11,11,8,35,fnattr%(15,4),3,0,0)
|
||||||
|
call titlewindow(3,"[ Frame Style 3 ]")
|
||||||
|
call makewindow(14,14,8,35,fnattr%(0,6),4,0,0)
|
||||||
|
call titlewindow(1,"[ Frame Style 4 ]")
|
||||||
|
call makewindow(17,17,8,35,fnattr%(0,2),5,0,0)
|
||||||
|
call titlewindow(3,"[ Frame Style 5 ]")
|
||||||
|
|
||||||
|
delay 4
|
||||||
|
for x = 1 to 5
|
||||||
|
call removewindow
|
||||||
|
next
|
||||||
|
call clearwindow
|
||||||
|
|
||||||
|
call prtwindow(1,2,"The frame itself can be in any one of the")
|
||||||
|
call prtwindow(2,2,"BASIC foreground colors. It can even blink")
|
||||||
|
call prtwindow(3,2,"if you want...")
|
||||||
|
|
||||||
|
delay 3
|
||||||
|
for i%=0 to 15
|
||||||
|
label$="[ Color:"+str$(i%)+" ]"
|
||||||
|
j%=rnd(1)*50
|
||||||
|
k%=rnd(1)*12
|
||||||
|
call makewindow(k%+1,j%+1,7,25,fnattr%(i%,5),4,2,0)
|
||||||
|
call titlewindow(2,label$)
|
||||||
|
delay .5
|
||||||
|
next
|
||||||
|
call makewindow(7,20,7,25,fnattr%(31,5),4,2,0)
|
||||||
|
call titlewindow(2,"[ Color: 31 ]")
|
||||||
|
|
||||||
|
delay 4
|
||||||
|
for x = 1 to 17
|
||||||
|
call removewindow
|
||||||
|
next
|
||||||
|
|
||||||
|
call clearwindow
|
||||||
|
call prtcwindow(5,"The window itself can be presented in many")
|
||||||
|
call prtcwindow(6,"different ways. It can be flat...")
|
||||||
|
|
||||||
|
delay 3
|
||||||
|
|
||||||
|
call makewindow(1,2,11,30,fnattr%(15,4),1,0,0)
|
||||||
|
|
||||||
|
delay 3
|
||||||
|
call removewindow
|
||||||
|
call clearwindow
|
||||||
|
call prtcwindow(5,"or it can have a black shadow underneath; giving")
|
||||||
|
call prtcwindow(6,"a three-dimensional effect...")
|
||||||
|
delay 3
|
||||||
|
call makewindow(5,5,10,30,fnattr%(14,5),2,1,0)
|
||||||
|
call qprintc(7,5,35,"Left Shadow",fnattr%(15,5))
|
||||||
|
delay 2
|
||||||
|
call makewindow(5,40,10,30,fnattr%(0,2),2,2,0)
|
||||||
|
call qprintc(7,40,70,"Right Shadow",fnattr%(15,2))
|
||||||
|
delay 2
|
||||||
|
call removewindow
|
||||||
|
call removewindow
|
||||||
|
call clearwindow
|
||||||
|
call prtcwindow(2,"Titles may be placed in any")
|
||||||
|
call prtcwindow(3,"of six different locations,")
|
||||||
|
call prtcwindow(4,"or any combination.")
|
||||||
|
delay 2
|
||||||
|
call makewindow(2,5,10,70,fnattr%(15,5),2,1,0)
|
||||||
|
for x% = 1 to 6
|
||||||
|
title$ = "[ Location"+str$(x%)+" ]"
|
||||||
|
call titlewindow(x%,title$)
|
||||||
|
delay 1
|
||||||
|
next
|
||||||
|
delay 3
|
||||||
|
call removewindow
|
||||||
|
call clearwindow
|
||||||
|
call prtcwindow(3,"Windows can be zoomed")
|
||||||
|
call prtcwindow(4,"onto the screen.")
|
||||||
|
delay 2
|
||||||
|
call makewindow(2,2,15,60,fnattr%(0,2),2,0,1)
|
||||||
|
delay 2
|
||||||
|
call makewindow(13,10,10,60,fnattr%(1,3),3,0,1)
|
||||||
|
delay 2
|
||||||
|
call makewindow(7,33,10,45,fnattr%(14,5),1,0,1)
|
||||||
|
delay 2
|
||||||
|
call makewindow(7,10,12,63,fnattr%(15,4),2,1,1)
|
||||||
|
call prtcwindow(5,"W O W !!!")
|
||||||
|
delay 3
|
||||||
|
for x = 1 to 4
|
||||||
|
call removewindow
|
||||||
|
next
|
||||||
|
call clearwindow
|
||||||
|
call prtwindow(1,2,"Once you have your window on the screen, simply")
|
||||||
|
call prtwindow(2,2,"use calls to PrtWindow or PrtCWindow to put text")
|
||||||
|
call prtwindow(3,2,"in them. A call to ClearWindow will erase the")
|
||||||
|
call prtwindow(4,2,"contents of the window ... ")
|
||||||
|
delay 3
|
||||||
|
|
||||||
|
|
||||||
|
call clearwindow
|
||||||
|
call prtwindow(1,2,"Just as easily as you can create the window!")
|
||||||
|
call prtwindow(2,2,"In fact, all of the commands of TBWINDO are")
|
||||||
|
call prtwindow(3,2,"very easy to use. Here is a call to create")
|
||||||
|
call prtwindow(4,2,"this window ...")
|
||||||
|
call prtwindow(5,2," CALL MAKEWINDOW(8,14,8,52,fnattr%(0,7),2,0,1)")
|
||||||
|
delay 5
|
||||||
|
|
||||||
|
call clearwindow
|
||||||
|
|
||||||
|
call prtwindow(1,2,"Each window is stored as a result of a call to")
|
||||||
|
call prtwindow(2,2,"MakeWindow. To restore the screen to it's")
|
||||||
|
call prtwindow(3,2,"original contents, simply call RemoveWindow.")
|
||||||
|
call prtwindow(4,2,"Here is a good example . . .")
|
||||||
|
delay 5
|
||||||
|
call makewindow(3,5,15,45,fnattr%(0,2),4,1,1)
|
||||||
|
call prtcwindow(6,"This is the first level ...")
|
||||||
|
delay 2
|
||||||
|
call makewindow(6,29,17,50,fnattr%(15,4),4,1,1)
|
||||||
|
call prtcwindow(6,"This is the second level ...")
|
||||||
|
delay 2
|
||||||
|
call makewindow(9,22,15,35,fnattr%(0,3),4,1,1)
|
||||||
|
call prtcwindow(7,"This is the third level ...")
|
||||||
|
delay 2
|
||||||
|
call prtcwindow(7,"Now to go back ... ")
|
||||||
|
delay 1
|
||||||
|
call removewindow
|
||||||
|
delay 1
|
||||||
|
call removewindow
|
||||||
|
delay 1
|
||||||
|
call removewindow
|
||||||
|
delay 2
|
||||||
|
call clearwindow
|
||||||
|
call prtwindow(2,2,"Next is a demonstration of the MakeMenu")
|
||||||
|
call prtwindow(3,2,"procedure which will create a point and")
|
||||||
|
call prtwindow(4,2,"shoot type menu.")
|
||||||
|
delay 3
|
||||||
|
call removewindow
|
||||||
|
|
||||||
|
item$(1) = "Pop Screen 1"
|
||||||
|
item$(2) = "Pop Screen 2"
|
||||||
|
item$(3) = "Pop Screen 3"
|
||||||
|
item$(4) = "Exit"
|
||||||
|
itemcount% = 4
|
||||||
|
mtitle$ = "[ MENU DEMO ]"
|
||||||
|
mrow% = 5
|
||||||
|
mcol% = 20
|
||||||
|
mwidth% = 40
|
||||||
|
mattr% = fnattr%(15,1)
|
||||||
|
mhiattr% = fnattr%(0,7)
|
||||||
|
mbrdrsel% = 2
|
||||||
|
mshadow% = 2
|
||||||
|
mzoom% = 0
|
||||||
|
startpos% = 1
|
||||||
|
|
||||||
|
restart1:
|
||||||
|
out &H03d9,7
|
||||||
|
call qfill(1,1,25,80,32,fnattr%(0,7))
|
||||||
|
|
||||||
|
call makemenu
|
||||||
|
|
||||||
|
select case curntpos%
|
||||||
|
case 1 'screen 1
|
||||||
|
gosub popscreen1
|
||||||
|
goto restart1
|
||||||
|
case 2 ' screen 2
|
||||||
|
gosub popscreen2
|
||||||
|
goto restart1
|
||||||
|
case 3 ' screen 3
|
||||||
|
gosub popscreen3
|
||||||
|
goto restart1
|
||||||
|
case else
|
||||||
|
out &H03d9,1
|
||||||
|
call qfill(1,1,25,80,32,fnattr%(15,1))
|
||||||
|
color 0,7
|
||||||
|
call makewindow(9,16,8,52,fnattr%(0,7),2,0,0)
|
||||||
|
locate 10,18:print "Please see the source code and documentation"
|
||||||
|
locate 11,18:print "for how to create and use menu windows in"
|
||||||
|
locate 12,18:print "your programs...."
|
||||||
|
delay 5
|
||||||
|
end select
|
||||||
|
|
||||||
|
|
||||||
|
call makewindow(4,15,10,30,fnattr%(4,3),4,1,1)
|
||||||
|
call makewindow(3,36,13,40,fnattr%(15,2),3,1,1)
|
||||||
|
call makewindow(9,10,13,40,fnattr%(0,5),2,1,1)
|
||||||
|
call makewindow(12,42,11,36,fnattr%(3,4),1,1,1)
|
||||||
|
|
||||||
|
call makewindow(9,16,8,52,fnattr%(0,7),2,1,1)
|
||||||
|
call prtwindow(2,2,"The basic routines in the TBWINDO package")
|
||||||
|
call prtwindow(3,2,"give you all you need to create some power-")
|
||||||
|
call prtwindow(4,2,"ful 'toolbox' modules to integrate into your")
|
||||||
|
call prtwindow(5,2,"programs.")
|
||||||
|
delay 5
|
||||||
|
out &H3d9,0
|
||||||
|
end
|
||||||
|
|
||||||
|
popscreen1:
|
||||||
|
out &H03d9 ,6
|
||||||
|
call qfill(1,1,25,80,32,fnattr%(7,6))
|
||||||
|
call makewindow(8,10,7,60,fnattr(0,2),2,1,1)
|
||||||
|
call titlewindow(2,"[ SELECTION 1 ]")
|
||||||
|
call qprintc(10,10,70,"This is selection no. 1",fnattr(14,2))
|
||||||
|
call qprintc(11,10,70,"Press enter to return to main menu...",fnattr%(14,2))
|
||||||
|
while not instat
|
||||||
|
wend
|
||||||
|
a$=inkey$
|
||||||
|
call removewindow
|
||||||
|
return
|
||||||
|
|
||||||
|
popscreen2:
|
||||||
|
out &H03d9 ,3
|
||||||
|
call qfill(1,1,25,80,32,fnattr%(7,3))
|
||||||
|
call makewindow(8,10,7,60,fnattr(15,1),2,1,1)
|
||||||
|
call titlewindow(2,"[ SELECTION 2 ]")
|
||||||
|
call qprintc(10,10,70,"This is selection no. 2",fnattr(15,1))
|
||||||
|
call qprintc(11,10,70,"Press enter to return to main menu...",fnattr%(15,1))
|
||||||
|
while not instat
|
||||||
|
wend
|
||||||
|
a$=inkey$
|
||||||
|
call removewindow
|
||||||
|
return
|
||||||
|
|
||||||
|
popscreen3:
|
||||||
|
out &H03d9 ,5
|
||||||
|
call qfill(1,1,25,80,32,fnattr%(7,5))
|
||||||
|
call makewindow(8,10,7,60,fnattr(0,7),2,1,1)
|
||||||
|
call titlewindow(2,"[ SELECTION 3 ]")
|
||||||
|
call qprintc(10,10,70,"This is selection no. 3",fnattr(0,7))
|
||||||
|
call qprintc(11,10,70,"Press enter to return to main menu...",fnattr%(0,7))
|
||||||
|
while not instat
|
||||||
|
wend
|
||||||
|
a$=inkey$
|
||||||
|
call removewindow
|
||||||
|
return
|
||||||
|
|
BIN
Borland Turbo BASIC v11/TBHELP.TBH
Normal file
BIN
Borland Turbo BASIC v11/TBHELP.TBH
Normal file
Binary file not shown.
37
Borland Turbo BASIC v11/TBMENU.INC
Normal file
37
Borland Turbo BASIC v11/TBMENU.INC
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
sub makemenu static
|
||||||
|
shared wrow%(),wrows%(),wcol%(),wcols%(),wattr%(),wbrdr%(),wshdw%(),scrn%(),wptr(),LI
|
||||||
|
shared mrow%,mcol%,mwidth%,mattr%,mhiattr%,mbrdrsel%,mshadow%,mzoom%,mtitle$
|
||||||
|
shared item$(),itemcount%,startpos%
|
||||||
|
shared curntpos%
|
||||||
|
call makewindow(mrow%,mcol%,itemcount%+2,mwidth%,mattr%,mbrdrsel%,mshadow%,mzoom%)
|
||||||
|
call titlewindow(2,mtitle$)
|
||||||
|
for mloop% = 1 to itemcount%
|
||||||
|
call qprintc(wrow%(LI)+mloop%,wcol%(LI),wcol%(LI)+wcols%(LI),item$(mloop%),wattr%(LI))
|
||||||
|
next
|
||||||
|
if curntpos% = 0 then if startpos% = 0 then curntpos% = 1 else curntpos% = startpos%
|
||||||
|
tryagain:
|
||||||
|
call qattr(wrow%(LI)+curntpos%,wcol%(LI)+1,1,wcols%(LI)-2,mhiattr%)
|
||||||
|
while not instat
|
||||||
|
wend
|
||||||
|
ans$=inkey$
|
||||||
|
if len(ans$)=2 then ans$=right$(ans$,1)
|
||||||
|
call qattr(wrow%(LI)+curntpos%,wcol%(LI)+1,1,wcols%(LI)-2,wattr%(LI))
|
||||||
|
select case ans$
|
||||||
|
case chr$(72),chr$(75),"-","8","4"
|
||||||
|
decr curntpos%
|
||||||
|
case chr$(80),chr$(77),"+","2","6"
|
||||||
|
incr curntpos%
|
||||||
|
case chr$(13)
|
||||||
|
call removewindow
|
||||||
|
exit sub
|
||||||
|
case chr$(27)
|
||||||
|
curntpos%=0
|
||||||
|
call removewindow
|
||||||
|
exit sub
|
||||||
|
case else
|
||||||
|
curntpos% = curntpos%
|
||||||
|
end select
|
||||||
|
if curntpos% > itemcount% then curntpos% = 1
|
||||||
|
if curntpos% < 1 then curntpos% = itemcount%
|
||||||
|
goto tryagain
|
||||||
|
end sub
|
202
Borland Turbo BASIC v11/TBWINDO.INC
Normal file
202
Borland Turbo BASIC v11/TBWINDO.INC
Normal file
@ -0,0 +1,202 @@
|
|||||||
|
mw% = 30
|
||||||
|
ScrnArray = 8000
|
||||||
|
|
||||||
|
dim wrow%(mw%),wrows%(mw%),wcol%(mw%),wcols%(mw%),wattr%(mw%),wbrdr%(mw%)
|
||||||
|
dim wshdw%(mw%),scrn%(ScrnArray),wptr(mw%)
|
||||||
|
|
||||||
|
sub MakeWindow(Row%,Col%,Rows%,Cols%,Attr%,BrdrSel%,Shadow%,Zoom%) static
|
||||||
|
shared wrow%(),wrows%(),wcol%(),wcols%(),wattr%(),wbrdr%(),wshdw%(),scrn%(),wptr(),LI
|
||||||
|
local r1%,r2%,c1%,c2%,colratio%,wsize
|
||||||
|
select case shadow%
|
||||||
|
Rem Left
|
||||||
|
case = 1
|
||||||
|
c1%=col%-2 : c2%=cols%+2 : r2%=rows%+1
|
||||||
|
Rem Right
|
||||||
|
case = 2
|
||||||
|
c1%=col% : c2%=cols%+2 : r2%=rows%+1
|
||||||
|
case else
|
||||||
|
c1%=col% : c2%=cols% : r2%=rows%
|
||||||
|
end select
|
||||||
|
wsize = (r2% * c2%) * 2
|
||||||
|
LI = LI + 1
|
||||||
|
Wptr(LI+1) = Wptr(LI)+WSize+1
|
||||||
|
WRow%(LI) = Row%
|
||||||
|
WCol%(LI) = Col%
|
||||||
|
WRows%(LI) = Rows%
|
||||||
|
WCols%(LI) = Cols%
|
||||||
|
Wattr%(LI) = Attr%
|
||||||
|
WBrdr%(LI) = BrdrSel%
|
||||||
|
WShdw%(LI) = Shadow%
|
||||||
|
Call Qsave(Row%,c1%,r2%,c2%,scrn%(Wptr(LI)))
|
||||||
|
if zoom% = 1 then
|
||||||
|
r1% = row% + (rows%\2)
|
||||||
|
r2% = row% + rows%-(rows%\2)
|
||||||
|
c1% = col% + (cols%\2)
|
||||||
|
c2% = col% + cols%-(cols%\2)
|
||||||
|
colratio% = (cols% \ rows%)+1
|
||||||
|
if colratio% > 4 then colratio%=4
|
||||||
|
do
|
||||||
|
if r1%>row% then r1%=r1%-1
|
||||||
|
if r2%<(row%+rows%) then r2%=r2%+1
|
||||||
|
if c1%>col% then c1%=c1%-colratio%
|
||||||
|
if c1%<col% then c1%=col%
|
||||||
|
if c2%<(col%+cols%) then c2%=c2%+colratio%
|
||||||
|
if c2%>(col%+cols%) then c2%=col%+cols%
|
||||||
|
call Qbox(r1%,c1%,r2%-r1%,c2%-c1%,attr%,brdrsel%)
|
||||||
|
loop until c1%=col% and c2%=col%+cols% and r1%=row% and r2%=row%+rows%
|
||||||
|
else
|
||||||
|
call Qbox(row%,col%,rows%,cols%,attr%,brdrsel%)
|
||||||
|
end if
|
||||||
|
select case shadow%
|
||||||
|
rem Left
|
||||||
|
case = 1
|
||||||
|
call qfill(row%+1 ,col%-2 ,rows%-1,2 ,asc(" "),0)
|
||||||
|
call qfill(row%+rows%,col%-2 ,1 ,cols%,asc(" "),0)
|
||||||
|
rem Right
|
||||||
|
case = 2
|
||||||
|
call qfill(row%+1 ,col%+cols%,rows%-1,2 ,asc(" "),0)
|
||||||
|
call qfill(row%+rows%,col%+2 ,1 ,cols%,asc(" "),0)
|
||||||
|
case else
|
||||||
|
end select
|
||||||
|
end sub
|
||||||
|
|
||||||
|
sub TitleWindow(dir%,title$) static
|
||||||
|
shared wrow%(),wcol%(),wrows%(),wcols%(),wattr%(),LI
|
||||||
|
select case dir%
|
||||||
|
rem UpperLeft
|
||||||
|
case = 1
|
||||||
|
call qprint(wrow%(LI),wcol%(LI)+2,title$,wattr%(LI))
|
||||||
|
rem UpperCenter
|
||||||
|
case = 2
|
||||||
|
call qprintc(wrow%(LI),wcol%(LI),wcol%(LI)+wcols%(LI)-1,title$,wattr%(LI))
|
||||||
|
rem UpperRight
|
||||||
|
case = 3
|
||||||
|
call qprint(wrow%(LI),wcol%(LI)+wcols%(LI)-len(title$)-2,title$,wattr%(LI))
|
||||||
|
rem LowerLeft
|
||||||
|
case = 4
|
||||||
|
call qprint(wrow%(LI)+wrows%(LI)-1,wcol%(LI)+2,title$,wattr%(LI))
|
||||||
|
rem LowerCenter
|
||||||
|
case = 5
|
||||||
|
call qprintc(wrow%(LI)+wrows%(LI)-1,wcol%(LI),wcol%(LI)+wcols%(LI)-1,title$,wattr%(LI))
|
||||||
|
rem LowerRight
|
||||||
|
case = 6
|
||||||
|
call qprint(wrow%(LI)+wrows%(LI)-1,wcol%(LI)+wcols%(LI)-len(title$)-2,title$,wattr%(LI))
|
||||||
|
case else
|
||||||
|
end select
|
||||||
|
end sub
|
||||||
|
|
||||||
|
sub RemoveWindow static
|
||||||
|
shared Wrow%(),WCol%(),WRows%(),Wcols%(),Wattr%(),WShdw%(),Scrn%(),Wptr(),LI
|
||||||
|
if LI = 0 then
|
||||||
|
print "NO WINDOW TO REMOVE"
|
||||||
|
else
|
||||||
|
select case WShdw%(LI)
|
||||||
|
case = 1
|
||||||
|
call qrest(Wrow%(LI),WCol%(LI)-2,WRows%(LI)+1,WCols%(LI)+2,Scrn%(Wptr(LI)))
|
||||||
|
case = 2
|
||||||
|
call qrest(WRow%(LI),WCol%(LI) ,WRows%(LI)+1,WCols%(LI)+2,Scrn%(Wptr(LI)))
|
||||||
|
case else
|
||||||
|
call qrest(WRow%(LI),Wcol%(LI) ,WRows%(LI) ,WCols%(LI) ,Scrn%(Wptr(LI)))
|
||||||
|
end select
|
||||||
|
LI = LI -1
|
||||||
|
end if
|
||||||
|
end sub
|
||||||
|
|
||||||
|
sub Qbox(Row%,Col%,Rows%,Cols%,attr%,BrdrSel%) static
|
||||||
|
if rows%>2 and cols%>2 then
|
||||||
|
if brdrsel% > 0 and brdrsel% < 6 then
|
||||||
|
on brdrsel% gosub single,double,mixed12,mixed21,doubleleftarrow
|
||||||
|
call qprint(row% ,col% ,tl$ ,attr%)
|
||||||
|
call qfill (row% ,col%+1 ,1 ,cols%-2,asc(th$),attr%)
|
||||||
|
call qprint(row% ,col%+cols%-1,tr$ ,attr%)
|
||||||
|
call qfill (row%+1 ,col% ,rows%-2,1 ,asc(lv$),attr%)
|
||||||
|
call qfill (row%+1 ,col%+cols%-1,rows%-2,1 ,asc(rv$),attr%)
|
||||||
|
call qprint(row%+rows%-1,Col% ,bl$ ,attr%)
|
||||||
|
call qfill (row%+rows%-1,Col%+1 ,1 ,cols%-2,asc(bh$),attr%)
|
||||||
|
call qprint(row%+rows%-1,col%+cols%-1,br$ ,attr%)
|
||||||
|
call qfill (row%+1 ,col%+1 ,rows%-2 ,cols%-2,asc(" "),attr%)
|
||||||
|
else
|
||||||
|
call qfill (row%,col%,rows%,cols%,asc(" "),attr%)
|
||||||
|
end if
|
||||||
|
end if
|
||||||
|
exit sub
|
||||||
|
|
||||||
|
Single:
|
||||||
|
TL$=CHR$(218):TH$=CHR$(196):TR$=CHR$(191)
|
||||||
|
LV$=CHR$(179):RV$=CHR$(179)
|
||||||
|
BL$=CHR$(192):BH$=CHR$(196):BR$=CHR$(217)
|
||||||
|
Return
|
||||||
|
Double:
|
||||||
|
TL$=CHR$(201):TH$=CHR$(205):TR$=CHR$(187)
|
||||||
|
LV$=CHR$(186):RV$=CHR$(186)
|
||||||
|
BL$=CHR$(200):BH$=CHR$(205):BR$=CHR$(188)
|
||||||
|
Return
|
||||||
|
Mixed12:
|
||||||
|
TL$=CHR$(214):TH$=CHR$(196):TR$=CHR$(183)
|
||||||
|
LV$=CHR$(186):RV$=CHR$(186)
|
||||||
|
BL$=CHR$(211):BH$=CHR$(196):BR$=CHR$(189)
|
||||||
|
Return
|
||||||
|
Mixed21:
|
||||||
|
TL$=CHR$(213):TH$=CHR$(205):TR$=CHR$(184)
|
||||||
|
LV$=CHR$(179):RV$=CHR$(179)
|
||||||
|
BL$=CHR$(212):BH$=CHR$(205):BR$=CHR$(190)
|
||||||
|
Return
|
||||||
|
DoubleLeftArrow:
|
||||||
|
TL$=CHR$(17):TH$=CHR$(205):TR$=CHR$(187)
|
||||||
|
LV$=CHR$(186):RV$=CHR$(186)
|
||||||
|
BL$=CHR$(200):BH$=CHR$(205):BR$=CHR$(188)
|
||||||
|
Return
|
||||||
|
end sub
|
||||||
|
|
||||||
|
sub ClearWindow static
|
||||||
|
shared wrow%(),wcol%(),wrows%(),wcols%(),wattr%(),LI
|
||||||
|
call qfill (wrow%(LI)+1,wcol%(LI)+1,wrows%(LI)-2,wcols%(LI)-2,asc(" "),wattr%(LI))
|
||||||
|
end sub
|
||||||
|
|
||||||
|
sub PrtWindow(row%,col%,StrDat$) static
|
||||||
|
shared wrow%(),wcol%(),wrows%(),wcols%(),wattr%(),LI
|
||||||
|
call qprint(wrow%(LI)+row%,wcol%(LI)+col%,StrDat$,wattr%(LI))
|
||||||
|
end sub
|
||||||
|
|
||||||
|
sub PrtCWindow(row%,StrDat$) static
|
||||||
|
shared wrow%(),wcol%(),wrows%(),wcols%(),wattr%(),LI
|
||||||
|
call qprintc(wrow%(LI)+row%,wcol%(LI),wcol%(LI)+wcols%(LI),StrDat$,wattr%(LI))
|
||||||
|
end sub
|
||||||
|
|
||||||
|
def fnattr%(fore%,back%)
|
||||||
|
local temp%
|
||||||
|
temp%=(back%*16)+fore%
|
||||||
|
if fore%>15 then temp% = temp% + 112
|
||||||
|
fnattr% = temp%
|
||||||
|
end def
|
||||||
|
|
||||||
|
SUB QPRINT INLINE
|
||||||
|
$INLINE "QPRINT.BIN"
|
||||||
|
END SUB
|
||||||
|
rem CALL QPRINT(ROW%,COL%,STR$,ATTR%)
|
||||||
|
|
||||||
|
SUB QPRINTC INLINE
|
||||||
|
$INLINE "QPRINTC.BIN"
|
||||||
|
END SUB
|
||||||
|
rem CALL QPRINTC(ROW%,COLL%,COLR%,STRDAT$,ATTR%)
|
||||||
|
|
||||||
|
SUB QFILL INLINE
|
||||||
|
$INLINE "QFILL.BIN"
|
||||||
|
END SUB
|
||||||
|
rem CALL QFILL(ROW%,COL%,ROWS%,COLS%,CHAR%,ATTR%)
|
||||||
|
|
||||||
|
SUB QATTR INLINE
|
||||||
|
$INLINE "QATTR.BIN"
|
||||||
|
END SUB
|
||||||
|
rem CALL QATTR(ROW%,COL%,ROWS%,COLS%,ATTR%)
|
||||||
|
|
||||||
|
SUB QSAVE INLINE
|
||||||
|
$INLINE "QSAVE.BIN"
|
||||||
|
END SUB
|
||||||
|
rem CALL QSAVE(ROW%,COL%,ROWS%,COLS%,SCRN%(??))
|
||||||
|
|
||||||
|
SUB QREST INLINE
|
||||||
|
$INLINE "QREST.BIN"
|
||||||
|
END SUB
|
||||||
|
rem CALL QREST(ROW%,COL%,ROWS%,COLS%,SCRN%(??))
|
||||||
|
|
142
Borland Turbo BASIC v11/TTT.BAS
Normal file
142
Borland Turbo BASIC v11/TTT.BAS
Normal file
@ -0,0 +1,142 @@
|
|||||||
|
1 rem Tic Tac Toe solving app that learns what WOPR learned: you can't win
|
||||||
|
2 rem Only three starting positions are examined. Others are just reflections of these
|
||||||
|
3 rem b% -- The board
|
||||||
|
4 rem al% -- Alpha, for pruning
|
||||||
|
5 rem be% -- Beta, for pruning
|
||||||
|
6 rem l% -- Top-level loop iteration
|
||||||
|
7 rem wi% -- The winning piece (0 none, 1 X, 2, O )
|
||||||
|
8 rem re% -- Resulting score of 4000/minmax board position. 5 draw, 6 X win, 4 Y win
|
||||||
|
9 rem sx% -- Stack array for "recursion" X can be P, V, A, or B for those variables.
|
||||||
|
10 rem v% -- Value of a board position
|
||||||
|
11 rem st% -- Stack Pointer. Even for alpha/beta pruning Minimize plys, Odd for Maximize
|
||||||
|
12 rem p% -- Current position where a new piece is played
|
||||||
|
14 rem rw% -- Row in the Winner function (2000)
|
||||||
|
15 rem cw% -- Column in the Winner function (2000)
|
||||||
|
18 rem mc% -- Move count total for debugging. Should be a multiple of 6493
|
||||||
|
19 rem Note: Can't use real recursion with GOSUB because stack is limited to roughly 5 deep
|
||||||
|
20 rem BASIC doesn't support goto/gosub using arrays for target line numbers
|
||||||
|
21 rem this version is modified for Turbo Basic to send results to the console
|
||||||
|
29 it% = 10
|
||||||
|
30 dim b%(9)
|
||||||
|
32 dim sp%(10)
|
||||||
|
34 dim sv%(10)
|
||||||
|
36 dim sa%(10)
|
||||||
|
37 dim sb%(10)
|
||||||
|
38 mc% = 0
|
||||||
|
39 s1$ = "start time: " + time$
|
||||||
|
40 for l% = 1 to it%
|
||||||
|
41 mc% = 0
|
||||||
|
42 al% = 2
|
||||||
|
43 be% = 9
|
||||||
|
44 b%(0) = 1
|
||||||
|
45 gosub 4000
|
||||||
|
58 al% = 2
|
||||||
|
59 be% = 9
|
||||||
|
60 b%(0) = 0
|
||||||
|
61 b%(1) = 1
|
||||||
|
62 gosub 4000
|
||||||
|
68 al% = 2
|
||||||
|
69 be% = 9
|
||||||
|
70 b%(1) = 0
|
||||||
|
71 b%(4) = 1
|
||||||
|
72 gosub 4000
|
||||||
|
73 b%(4) = 0
|
||||||
|
80 next l%
|
||||||
|
85 s2$ = "end time: " + time$
|
||||||
|
87 s$ = s1$
|
||||||
|
88 gosub 1000
|
||||||
|
89 s$ = s2$
|
||||||
|
90 gosub 1000
|
||||||
|
92 s$ = "for " + str$( it% ) + " iterations"
|
||||||
|
93 gosub 1000
|
||||||
|
94 s$ = "move count: " + str$( mc% )
|
||||||
|
95 gosub 1000
|
||||||
|
98 system
|
||||||
|
99 end
|
||||||
|
|
||||||
|
999 rem turbo basic sends print output to memory, which isn't helpful
|
||||||
|
1000 l% = len( s$ )
|
||||||
|
1010 for i% = 1 to l%
|
||||||
|
1020 c$ = mid$( s$, i%, 1 )
|
||||||
|
1040 reg 4, asc( c$)
|
||||||
|
1050 reg 1, &h0600
|
||||||
|
1060 call interrupt &h21
|
||||||
|
1070 next i%
|
||||||
|
1080 reg 4, 10
|
||||||
|
1090 reg 1, &h0600
|
||||||
|
1100 call interrupt &h21
|
||||||
|
1110 reg 4, 13
|
||||||
|
1120 reg 1, &h0600
|
||||||
|
1130 call interrupt &h21
|
||||||
|
1200 return
|
||||||
|
|
||||||
|
2000 wi% = b%( 0 )
|
||||||
|
2010 if 0 = wi% goto 2100
|
||||||
|
2020 if wi% = b%( 1 ) and wi% = b%( 2 ) then return
|
||||||
|
2030 if wi% = b%( 3 ) and wi% = b%( 6 ) then return
|
||||||
|
2100 wi% = b%( 3 )
|
||||||
|
2110 if 0 = wi% goto 2200
|
||||||
|
2120 if wi% = b%( 4 ) and wi% = b%( 5 ) then return
|
||||||
|
2200 wi% = b%( 6 )
|
||||||
|
2210 if 0 = wi% goto 2300
|
||||||
|
2220 if wi% = b%( 7 ) and wi% = b%( 8 ) then return
|
||||||
|
2300 wi% = b%( 1 )
|
||||||
|
2310 if 0 = wi% goto 2400
|
||||||
|
2320 if wi% = b%( 4 ) and wi% = b%( 7 ) then return
|
||||||
|
2400 wi% = b%( 2 )
|
||||||
|
2410 if 0 = wi% goto 2500
|
||||||
|
2420 if wi% = b%( 5 ) and wi% = b%( 8 ) then return
|
||||||
|
2500 wi% = b%( 4 )
|
||||||
|
2510 if 0 = wi% then return
|
||||||
|
2520 if wi% = b%( 0 ) and wi% = b%( 8 ) then return
|
||||||
|
2530 if wi% = b%( 2 ) and wi% = b%( 6 ) then return
|
||||||
|
2540 wi% = 0
|
||||||
|
2550 return
|
||||||
|
|
||||||
|
4000 rem minmax function to find score of a board position
|
||||||
|
4010 rem recursion is simulated with gotos
|
||||||
|
4030 st% = 0
|
||||||
|
4040 v% = 0
|
||||||
|
4060 re% = 0
|
||||||
|
4100 mc% = mc% + 1
|
||||||
|
4102 rem gosub 3000
|
||||||
|
4104 if st% < 4 then goto 4150
|
||||||
|
4105 gosub 2000
|
||||||
|
4106 if 0 = wi% then goto 4140
|
||||||
|
4110 if wi% = 1 then re% = 6: goto 4280
|
||||||
|
4115 re% = 4
|
||||||
|
4116 goto 4280
|
||||||
|
4140 if st% = 8 then re% = 5: goto 4280
|
||||||
|
4150 if st% and 1 then v% = 2 else v% = 9
|
||||||
|
4160 p% = 0
|
||||||
|
4180 if 0 <> b%(p%) then goto 4500
|
||||||
|
4200 if st% and 1 then b%(p%) = 1 else b%(p%) = 2
|
||||||
|
4210 sp%(st%) = p%
|
||||||
|
4230 sv%(st%) = v%
|
||||||
|
4245 sa%(st%) = al%
|
||||||
|
4246 sb%(st%) = be%
|
||||||
|
4260 st% = st% + 1
|
||||||
|
4270 goto 4100
|
||||||
|
4280 st% = st% - 1
|
||||||
|
4290 p% = sp%(st%)
|
||||||
|
4310 v% = sv%(st%)
|
||||||
|
4325 al% = sa%(st%)
|
||||||
|
4326 be% = sb%(st%)
|
||||||
|
4328 b%(p%) = 0
|
||||||
|
4330 if st% and 1 then goto 4340
|
||||||
|
4331 if re% = 4 then goto 4530
|
||||||
|
4332 if re% < v% then v% = re%
|
||||||
|
4334 if v% < be% then be% = v%
|
||||||
|
4336 if be% <= al% then goto 4520
|
||||||
|
4338 goto 4500
|
||||||
|
4340 if re% = 6 then goto 4530
|
||||||
|
4341 if re% > v% then v% = re%
|
||||||
|
4342 if v% > al% then al% = v%
|
||||||
|
4344 if al% >= be% then goto 4520
|
||||||
|
4500 p% = p% + 1
|
||||||
|
4505 if p% < 9 then goto 4180
|
||||||
|
4520 re% = v%
|
||||||
|
4530 if st% = 0 then return
|
||||||
|
4540 goto 4280
|
||||||
|
|
||||||
|
|
2
Borland Turbo BASIC v11/m.bat
Normal file
2
Borland Turbo BASIC v11/m.bat
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
rem turbo basic doesn't support command-line build. Use the app to load and compile
|
||||||
|
|
Loading…
Reference in New Issue
Block a user