Category : BASIC Source Code
Archive   : QBDOS.ZIP
Filename : TYPER.BAS
'Copyright (c) 1987 Marcel Madonna
'TYPER.BAS is an example of redirection. To compile it, at the DOS prompt
' type:
' qb typer /l qbdos.exe;
' link typer;
' del typer.obj
'To execute TYPER just type "TYPER" at the DOS prompt and you will be prompted
'for a file name to type on the monitor. This is a pretty simple program so
'
' USE A REAL FILE NAME OR ELSE THIS PROGRAM WILL ABORT
' USE AN ASCII FILE (LICENSE.DOC ON THE DISTRIBUTION DISKETTE
' WILL WORK JUST FINE)
'To route the output to a printer instead of the monitor, type:
' TYPER /LPT1
'To route output to a file, type:
' TYPER /TEXTFILE.DAT
'*****************************************************************************
';Usage - Call Dosred(Device%, FileSpec$, Rc%)
'; Device% 0 - Stdin
'; 1 - Stdout
'; 2 - Stderr (not redirectable)
'; 3 - AUX (standard auuxilliary device)
'; 4 - PRN (standard list device)
'; FileSpec$ - name of file or device
'; null - reset handle
'; chr$(255) - close handle and exit
'; Rc% 0 - good return
'; 6 - handle already closed
'; 255 - error
'*****************************************************************************
Dim In.Array$(2000)
If Len(Command$) = 0 then
Red% = 0
Else
Red% = -1
Pipe.Char$ = Left$(Command$,1)
Red.File$ = Right$(Command$,Len(Command$)-1)
While Left$(Red.File$,1) = Space$(1) 'Remove leading blanks
Red.File$ = Right$(Red.File$,Len(Red.File$)-1)
Wend
While Right$(Red.File$,1) = Space$(1) 'Remove trailing blanks
Red.File$ = Left$(Red.File$,Len(Red.File$)-1)
Wend
End if
Print Red.file$
Locate 1,1
Print "You are being prompted for a file name."
Print "Because this is a sample program only, I need"
Print "a real file name or else this program will "
Print "ABORT. LICENSE.TXT on the distribution diskette"
Print "will work just fine."
Line Input "Give me a file name please: ", File.Nam$
Cls
Open File.Nam$ For Input As #1 'Open and read the entire file
While Not Eof(1)
If x% >= Ubound(In.Array$) then
Line Input #1, In.Array$(Ubound(In.Array$))
Else
x% = x% + 1
Line Input #1, In.Array$(x%)
End if
Wend
Close #1
Stdin% = 0
Stdout% = 1
Stdaux% = 3
Stdlist% = 4
' Redirect device here
If Red% then
Call DosRed(Stdout%, Red.File$ + chr$(0), Rc%)
If Rc% <> 0 then
Print "Error", Rc%
System
End if
End if
' Print file here
' Use 'print' statements to print to both CON and Red.File$
' Use DosChout to print to only Red.File$
For y% = 1 to x%
Call Doschout(In.Array$(y%)+chr$(10)+chr$(13))
' Print In.Array$(y%)
next
' Reset device to original
If Red% then Call Dosred(Stdout%,"",Rc%) 'Reset device
Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!
This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.
But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/