' Program name: DosPlay
'
' Filename: DosPlay.bas
' Written by: Fabio Passeto
' Last edit date:  August/97
' Description: Program to output a sequence of characters by serial port.
'
' Warning: Qbasic environment memory is limited to 32k.
'          You may have to reboot in MSDOS mode to run this program.
'
DIM BR AS INTEGER
DIM comm AS INTEGER
DIM STR AS STRING * 100
DIM ext AS STRING
DIM ch AS STRING * 1
DIM textData AS STRING
DIM fileName AS STRING
DIM bufferString AS STRING
CLS
PRINT "                             Dynamic robot player"
PRINT
PRINT
INPUT "Enter Baudrate configuration no. (2400/9600) <9600>"; BR
IF BR = 2400 THEN ext = "*.A24" ELSE BR = 9600: ext = "*.A96"
PRINT
INPUT "Enter Comm no. (1/2) <2>"; comm
IF comm = 1 THEN GOSUB Open1 ELSE GOSUB Open2

PRINT "LOAD MOVES FROM DISK"
   PRINT
   FILES ext
   PRINT
   INPUT "Please Type Filename (no extension):", fileName
   fileName = fileName + RIGHT$(ext, 4)
   IF LEN(A$) = 4 THEN
       PRINT "Load canceled"
   ELSE
       OPEN fileName FOR BINARY AS #1
       'the two last characters of the file don't represent information
       pointer = 1
       FOR i = 1 TO INT((LOF(1) - 2) / LEN(STR))
	    GET #1, pointer, STR              'get packets of 100 characters
		    textData = textData + STR
	    pointer = pointer + LEN(STR)
       NEXT i
       FOR i = LEN(textData) + 1 TO LOF(1) - 2
	    GET #1, pointer, ch          'get characters individually
	    bufferString = bufferString + ch
	    pointer = pointer + 1
       NEXT i
       textData = textData + bufferString
       PRINT "Time to play (Sec.) : "; LEN(textData) / (BR / 8) * 1.25
       CLOSE #1
       ' in qbasic, the data output is very simple
       PRINT #2, textData;      'Print #2, sequence string
   END IF
   CLOSE #2
END


Open1:
IF BR = 9600 THEN
 OPEN "COM1:9600,N,8,1,CD0,CS0,DS0,OP0" FOR OUTPUT AS #2      'Open com1
ELSE
 OPEN "COM1:2400,N,8,1,CD0,CS0,DS0,OP0" FOR OUTPUT AS #2      'Open com1
END IF
RETURN
 

Open2:
IF BR = 9600 THEN
 OPEN "COM2:9600,N,8,1,CD0,CS0,DS0,OP0" FOR OUTPUT AS #2      'Open com2
ELSE
 OPEN "COM2:2400,N,8,1,CD0,CS0,DS0,OP0" FOR OUTPUT AS #2      'Open com2
END IF

RETURN

