!*! Updated on 21-Sep-89 at 2:08 PM by James A. Jarboe IV; edit time: 0:26:51
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
!                              AUXSBR.BAS
!
!      Sample program to set up and use AUXSBR.SBR in a Basic program.
!
!      This program uses AUXSBR.SBR.
!
!      Current release version of AUXSBR.SBR is 1.1(102)
!
!      Get:
!            AUXSBR.M68    from AMUS
!            AUXSBR.DOC    from AMUS
!            DUMB.M68      from AMUS
!
!    Written by:
!               James A. Jarboe IV
!               Educational Video Network, Inc.
!               1401 19th Street
!               Huntsville,  TX 77340
!               (409)- 295-5767
!               GR/AM
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

MAP1 FILEN,S,25                 ! Filename to print
MAP1 BFLAG,B,1                  ! Returned flag from AUXSBR.SBR
MAP1 AUXERR(5),S,40             ! AUXSBR errors
       AUXERR(1)="Requested FILENAME not found."
       AUXERR(2)="Requested File is a RANDOM file."
       AUXERR(3)="DUMB.TDV not found on a TRMDEF. "
       AUXERR(4)="File is already in use. (LOKSER)"
       AUXERR(5)="Any other File service system error"

MAP1 FRM,F,6
MAP1 I,F,6
MAP1 HELP(50),S,80
HELP(01) = "                            By James A. Jarboe IV"
HELP(02) = ""
HELP(03) = "    This program is provided to give an EXAMPLE and help in the SETUP of"
HELP(04) = ""
HELP(05) = "                                AUXSBR.SBR"
HELP(06) = ""
HELP(07) = "AUXSBR.SBR allows the Auxiliary port on a terminal to be used as output"
HELP(08) = "of data to any device attached to the terminal's auxiliary port such as"
HELP(09) = "a printer."
HELP(10) =""
HELP(11) ="     To setup AUXSBR.SBR so that it works you must have the terminal driver"
HELP(12) ="                              DSK0:DUMB.TDV[1,6]"
HELP(13) ="     on your system and loaded as a terminal driver on a TRMDEF statement"
HELP(14) ="     in your .INI file prior to booting the system."
HELP(15) =""
HELP(16) ="EXAMPLE:          TRMDEF PRINTER,AM300=3:DUMB,9600,20,20,20"
HELP(17) =""
HELP(18) ="         used as a printer driver on any valid printer, or"
HELP(19) =""
HELP(20) ="                  TRMDEF AUXPRT,PSEUDO,DUMB,1,1,1"
HELP(21) =" "
HELP(22) ="    used as driver loaded onto the system at bootup time for usage are both"
HELP(23) ="    valid. It is not necessary to use both lines since a driver is loaded  "
HELP(24) ="    only once into the system."
HELP(25) =""
HELP(26) ="Example of calling AUXSBR.SBR from BASIC:"
HELP(27) =""
HELP(28) ="          XCALL AUXSBR, Filename, Flag"
HELP(29) ="Where:"
HELP(30) ="      Filename = a STRING variable containing the name of the file"
HELP(31) ="                  to print through the terminal's auxiliary port."
HELP(32) =""
HELP(33) ="      Flag     = a BINARY 1 variable in which a status is return to"
HELP(34) ="                  the basic program."
HELP(35) ="                  0 = All ok"
HELP(36) ="                  1 = Filename not found"
HELP(37) ="                  2 = File is RANDOM"
HELP(38) ="                  3 = DUMB.TDV was not found on a TRMDEF statement"
HELP(39) ="                  4 = File already in use (LOKSER)."
HELP(40) ="                  5 = Any other File service error."

SETUP:
       CALL SCREEN                     ! display help
       ? TAB(2,1);TAB(-1,10);
       ? "                                 SETUP"
       ?
       ? " To see if your printer is setup correctly to the terminal's auxiliary"
       ? " port and that your current terminal driver is setup to accept the"
       ? " correct TCRT calls to turn the auxiliary port ON and OFF,"
       ? " this program will now use the PRINT TAB(-1,82) and PRINT TAB(-1,83)"
       ? " TCRT calls."

       ?:?
       ? TAB(-1,11);"             Turn your printer ";TAB(-1,12);"ON ";
       ? TAB(-1,11);" and Press a ";TAB(-1,12);"CR ";
       INPUT "",Z$
!
!
! tab -1,82 will turn the aux port on if the terminal driver is coded right
!
       PRINT TAB(-1,82);
!
! this stuff will print on printer if tab(-1,82) worked.

       ? "             !!!!!!    ATTENTION    !!!!!!"
       ? "              YOU GOT DATA ON YOUR PRINTER"
!
! send a form feed
       ? CHR$(12)
!
! tab(-1,83) will turn the aux port off if the terminal driver is coded right
!
       PRINT TAB(-1,83);
       ? "" :? ""
       ? "If everything worked out right you should have the following printed"
       ? "out on the printer attached to the terminal's auxiliary port"
       ? ""
       ? "                     !!!!!!    ATTENTION    !!!!!!"
       ? "                     YOU GOT DATA ON YOUR PRINTER"
       ?
       ? "If not then check your TERMINAL DRIVER PROGRAM and see that the TCRT calls"
       ? "82 and 83 are the correct sequence of codes to turn your terminal's"
       ? "auxiliary port on and off."
       CALL PAUSE
       ? TAB(2,1);TAB(-1,10);
       ? ""
       ? "             If you did get data printed on your printer, then"
       ? "  this program will now use AUXSBR.SBR to check if the DUMB.TDV is "
       ? "  available on this system and correctly placed on a TRMDEF statement."
OK:
       ?
       ? TAB(-1,11);"             Enter ";TAB(-1,12);"OK ";TAB(-1,11);
       ? "and Press a ";TAB(-1,12);" Return. ";
       INPUT "",Z$
       IF UCS(Z$)[1,2]#"OK" THEN GOTO QUIT
       FILEN="@$^%*("
!
! lets call auxsbr and see if DUMB.TDV is attached to a TRMDEF statement
! so that AUXSBR can use it.  FILEN has a garbage name in it so that if
! DUMB is located we will get an error flag of BFLAG=1. But we are not going
! to check for it as we are only checking for the location of DUMB at this
! time.
       XCALL AUXSBR,FILEN,BFLAG
       IF BFLAG=3 THEN GOTO NO'DUMB
! If we got here then .INI file has a TRMDEF with DUMB on it.

GETIT:
       ? TAB(2,1);TAB(-1,10);
       ?
       ?
       ? "   Now we are going to attempt the final test using AUXSBR.SBR."
       ?
       ? "This final test is to see if the cable connected to the printer is"
       ? "set-up correctly to handle handshaking. To do this you are going to"
       ? "print out a file. If handshaking is working then the file will print"
       ? "out completely. If handshaking is not working correctly then you will"
       ? "most probably get data overun and garbage will printout because the"
       ? "printer will not keep up with the data it receives."
       ?
       ? "I suggest printing out AUXSBR.BAS.  So......."
       ?
       ?
       ? TAB(-1,11);"    Enter a ";TAB(-1,12);"File name ";TAB(-1,11);
       ? "to print ( go ahead try AUXSBR.BAS) ";TAB(-1,12);
       INPUT LINE "",FILEN
       IF FILEN="" GOTO DO'XCALL
       ?
       ? "The Terminal Auxiliary port should now be on and data should be"
       ? "printing on the printer attached to the auxiliary Port."
       ? "Screen Display will cease until file is through printing. "

! Call AUXSBR with filespec and print out file
DO'XCALL:
       XCALL AUXSBR,FILEN,BFLAG
LOOP2:
       IF BFLAG<>0 THEN GOTO AUXERR
       ?
       FILEN = UCS(FILEN)
       ? FILEN;" should now be printed out on the printer."
       ?
       ? "AUXSBR.SBR will open and close the file to be printed, so "
       ? "the BASIC program does not have to deal with opening or closing"
       ? "the file to print.  AUXSBR.SBR is LOKSER compatible in that if a"
       ? "file is already locked in use, AUXSBR.SBR will report with an error"
       ? "number of '4' in the binary error flag and will not attempt to print"
       ? "the selected file. AUXSBR.SBR will also work with from within an AMOS"
       ? "MULTI environment if the screen is a 'full' screen."
       ?
       ? "Good Luck !"
       ? "Program FINISHED."
       END
!
! AUXSBR returns a flag to indicate errors
!               0 = all ok
!               1 = filespec not found
!               2 = File was RANDOM
!               3 = DUMB not on a TRMDEF statement in INI file
!               4 = File is already in use. (LOKSER)
!               5 = Any other file service system error.
!
AUXERR:
       ? TAB(2,1);TAB(-1,10)
       ?
       ? TAB(15,1);"AUXSBR.SBR ";TAB(-1,11);
       ? "returned an error code of ";TAB(-1,12);
       ? BFLAG
       ?
       ? TAB(-1,11);"MEANING:  ";TAB(-1,12);
       ? AUXERR(BFLAG)
       END
!
! Display help screen
!
SCREEN:
       ? TAB(-1,0);TAB(1,80);TAB(-1,33);TAB(1,1);TAB(-1,32);
       ? TAB(1,27);TAB(-1,11);"  AUXSBR.SBR SAMPLE PROGRAM  ";TAB(-1,12);
       ? TAB(1,80);TAB(-1,33)
PAGE1:
       FRM=1

PAG:
       ? TAB(2,1);TAB(-1,10);

       FOR I=FRM TO FRM+19
       IF I>40 THEN GOTO NXI
       ? HELP(I)
NXI:
       NEXT I
PAUSE:
       ? TAB(23,1);
       ? TAB(-1,11);"Press a ";TAB(-1,12);"CR ";TAB(-1,11);"to continue";
       ? TAB(-1,12);"  ";
       INPUT "",Z$
       FRM=I
       IF I<40 THEN GOTO PAG
       I=100
       RETURN
NO'DUMB:
       ? TAB(2,1);tab(-1,10);
       ?
       ? "                                  OOOPs !!!!"
       ?
       ? "DUMB.TDV has not been added to a TRMDEF statement so AUXSBR could not"
       ? "find it to use it. READ the documentation and add DUMB to a TRMDEF"
       ? "Statement in your .INI file and REBOOT your system."
       ?
       ? "Then try this program again and you will be one step closer to having"
       ? "AUXSBR.SBR working on your system!."
       ?
ENDED:
       ?
       ? TAB(-1,11);"Program has ";TAB(-1,12);"ENDED."
       ?
       END

QUIT:
       ? TAB(2,1);TAB(-1,10);
       Z$="N"
       ? TAB(10,18);"ARE YOU SURE YOU WANT TO QUIT? ";
       INPUT "",Z$
       IF UCS(Z$)#"Y" THEN GOTO OK
       END