'===========================================================================
' Subject: PRINT HUGE CHARACTERS              Date: 09/95                  
'  Author: Unknown Author(s)                  Code: QB, QBasic, PDS        
'  Origin: FidoNet QUIK_BAS Echo            Packet: TEXT.ABC
'===========================================================================
CONST MaxSlides = 65       '<<-- Enter Number of Slides Here (65)
CONST MaxPause = 90        '<<-- Enter Number of Seconds to Pause (90)

DECLARE SUB GetVideoSeg ()
DECLARE SUB BigChar (CharCode%)
DECLARE SUB BigPrint (Text$)
DECLARE SUB CountTime ()
DIM SHARED VideoSeg&
SCREEN 0: WIDTH 80, 25: CLS
CALL GetVideoSeg
FOR a% = MaxSlides TO 1 STEP -1
   CLS
   LOCATE 1, 50: PRINT "  Press SPACE to PAUSE"
   LOCATE 3, 50: PRINT "Press ENTER for NEXT SLIDE"
   LOCATE 5, 50: PRINT "   Press ESC to EXIT"
   LOCATE 1, 1: CALL BigPrint(LTRIM$(STR$(a%)))
   CALL CountTime
   SOUND 200, 2: SOUND 32000, 1: SOUND 200, 2
NEXT a%
END

SUB BigChar (CharCode%)
'--- Displays a BIG Character at current Cursor Location ---
Xpos% = POS(0): Ypos% = CSRLIN
DEF SEG = &HF000
FOR ScanLine% = 0 TO 7
   BitCode% = PEEK(&HFA6E + ScanLine% + CharCode% * 8)
   LOCATE Ypos% + ScanLine%, Xpos%
   FOR Bits% = 1 TO 8
      IF BitCode% < 128 THEN Show$ = "  " ELSE Show$ = CHR$(219) + CHR$(178)
      PRINT Show$;
      IF BitCode% > 127 THEN BitCode% = BitCode% - 128
      BitCode% = BitCode% * 2
   NEXT Bits%
NEXT ScanLine%
DEF SEG
LOCATE Ypos%, Xpos%
END SUB

SUB BigPrint (Text$)
'--- Displays a BIG String at current Cursor Location ---
Xpos% = POS(0): Ypos% = CSRLIN
FOR a% = 1 TO LEN(Text$)
   Xtemp% = (a% - 1) * 16 + Xpos%
   LOCATE Ypos%, Xtemp%
   CALL BigChar(ASC(MID$(Text$, a%, 1)))
NEXT a%
LOCATE Ypos%, Xpos%
END SUB

SUB CountTime
'---  Counts the time for Each Slide. Includes Pausing ---
FOR a% = MaxPause TO 1 STEP -1
   T! = TIMER
   LOCATE 10, 1: PRINT "You Have"; a%; "Seconds Left...   "
   IF a% = 10 THEN
      LOCATE 14, 25: PRINT "****  10 Second Warning!  ****"
      SOUND 130, 2
   END IF
   DO: I$ = INKEY$
   LOOP UNTIL (TIMER > T! + 1) OR (I$ <> "")    '<-- Pause for 1 Second
   IF I$ = " " THEN
      '--- Press SPACE to Pause ---
      LOCATE 15, 1: CALL BigPrint("Pause")
      I$ = INPUT$(1)
      CALL BigPrint("     ")
   ELSEIF I$ = CHR$(13) THEN
      '--- Press ENTER to Skip to Next Slide ---
      EXIT SUB
   ELSEIF I$ = CHR$(27) THEN
      '--- Press ESC to Exit Program ---
      CLS : LOCATE 8, 12
      CALL BigPrint("Bye!")
      END
   END IF
NEXT a%
END SUB

SUB GetVideoSeg
'---  Just Does some Setting Up Stuff... ---
   VideoSeg& = 0
   DEF SEG = &H40: VideoMode% = PEEK(&H49)
   IF VideoMode% = 7 THEN VideoSeg& = &HB000
   IF VideoMode% < 4 THEN VideoSeg& = &HB800
   IF VideoSeg& = 0 THEN
      LOCATE 12, 25: PRINT "ERROR: Unfamiliar video mode!"
      END
   END IF
END SUB

