Respond to this messageReturn to Index
Original Message
  • Demo version with custom name and flashing lights...
    • (Login qb432l)
      R
      Posted Dec 24, 2009 8:47 AM

      Mostly demonstrates how using the OUT statement can create more believable flashing lights. Also, graphics are created during the first run. Afterwards, they are BLOAD'd from a file, instantly.

      'Copy code from here --------------------------------------------------------------
      DEFINT X-Y
      DECLARE SUB Pause (Interval!)
      DIM Box(1 TO 26500) AS INTEGER
      CONST pi! = 3.14159 'important!
      RANDOMIZE TIMER

      SCREEN 12
      OUT &H3C8, 8: OUT &H3C9, 10: OUT &H3C9, 10: OUT &H3C9, 10
      OUT &H3C8, 14: OUT &H3C9, 42: OUT &H3C9, 36: OUT &H3C9, 0

      GOSUB Graphics
      LOCATE 28, 31: COLOR 7: PRINT "PRESS ANY KEY TO END"

      DO
      GOSUB Flasher
      Pause .2
      LOOP WHILE INKEY$ = ""

      END

      Graphics:
      OPEN "SimonS.BSV" FOR BINARY AS #1
      IF LOF(1) THEN
      CLOSE #1
      DEF SEG = VARSEG(Box(1))
      BLOAD "SimonS.BSV", VARPTR(Box(1))
      DEF SEG
      PUT (160, 80), Box
      ELSE
      CLOSE #1
      CIRCLE (320, 240), 70, 8, 0, pi! * .42
      CIRCLE (320, 240), 140, 8, 0, pi! * .45
      LINE (330, 112)-(330, 163), 8
      CIRCLE (342, 114), 12, 8, pi! * .5, pi!
      CIRCLE (338, 164), 8, 8, pi!, pi! * 1.5
      FOR x = 320 TO 360
      FOR y = 80 TO 240
      PSET (560 - y, 560 - x), POINT(x, y)
      NEXT y
      NEXT x
      FOR x = 320 TO 480
      FOR y = 80 TO 240
      PSET (640 - x, y), POINT(x, y)
      NEXT y
      NEXT x
      FOR x = 160 TO 480
      FOR y = 80 TO 240
      PSET (x, 480 - y), POINT(x, y)
      NEXT y
      NEXT x

      CIRCLE (320, 240), 160, 8
      CIRCLE (320, 240), 60, 8
      PAINT (320, 120), 8
      CIRCLE (320, 240), 54, 7

      MaxWIDTH = 86
      MaxDEPTH = 20
      x = 0: y = 0
      xx = 277: yy = 230
      RESTORE TitleDATA
      DO
      READ DataSTRING$
      FOR n = 1 TO LEN(DataSTRING$)
      Char$ = MID$(DataSTRING$, n, 1)
      SELECT CASE Char$
      CASE "!"
      n = n + 1
      a$ = MID$(DataSTRING$, n, 1)
      Count = ASC(a$) + 68
      CASE "#"
      n = n + 1
      b$ = MID$(DataSTRING$, n)
      FOR i = 1 TO LEN(b$)
      t$ = MID$(b$, i, 1)
      IF t$ = "#" THEN EXIT FOR
      c$ = c$ + t$
      NEXT i
      Count = VAL("&H" + c$)
      n = n + LEN(c$)
      c$ = ""
      CASE ELSE
      Count = ASC(Char$) - 60
      END SELECT
      n = n + 1
      Colr = VAL("&H" + MID$(DataSTRING$, n, 1))
      FOR Reps = 1 TO Count
      PSET (x + xx, y + yy), Colr
      x = x + 1
      IF x > MaxWIDTH THEN x = 0: y = y + 1
      NEXT Reps
      NEXT n
      LOOP UNTIL y > MaxDEPTH

      PAINT (380, 160), 4, 8
      PAINT (260, 160), 3, 8
      PAINT (380, 320), 1, 8
      PAINT (260, 320), 14, 8

      GET (160, 80)-(480, 400), Box
      DEF SEG = VARSEG(Box(1))
      BSAVE "SimonS.BSV", VARPTR(Box(1)), 53000
      DEF SEG
      END IF

      RETURN

      Flasher:
      SELECT CASE INT(RND * 4) + 1
      CASE 1
      OUT &H3C8, 1: OUT &H3C9, 0: OUT &H3C9, 0: OUT &H3C9, 63
      Pause .3
      OUT &H3C8, 1: OUT &H3C9, 0: OUT &H3C9, 0: OUT &H3C9, 42
      CASE 2
      OUT &H3C8, 3: OUT &H3C9, 0: OUT &H3C9, 63: OUT &H3C9, 63
      Pause .3
      OUT &H3C8, 3: OUT &H3C9, 0: OUT &H3C9, 42: OUT &H3C9, 42
      CASE 3
      OUT &H3C8, 4: OUT &H3C9, 63: OUT &H3C9, 0: OUT &H3C9, 0
      Pause .3
      OUT &H3C8, 4: OUT &H3C9, 42: OUT &H3C9, 0: OUT &H3C9, 0
      CASE 4
      OUT &H3C8, 14: OUT &H3C9, 63: OUT &H3C9, 63: OUT &H3C9, 0
      Pause .3
      OUT &H3C8, 14: OUT &H3C9, 42: OUT &H3C9, 36: OUT &H3C9, 0
      END SELECT
      RETURN

      TitleDATA:
      DATA "B0@FN0AF@0@FK0AFK0BFE0CF?0BFB0NFE0GFF0FFA0EF?0BFA0PFC0IFD0HF@0EF?0BF@0"
      DATA "RF@0LFB0JF>0FF?0BF?0SF@0MF@0LF=0CFB0BF?0LF=0CF>0EF=0EF?0DF=0CF=0BFC0BF"
      DATA "?0BF>0CF?0BF>0CFA0CF?0BF@0BF=0CFB0BF>0CF?0BF?0BF=0CFC0BF?0BF@0BF=0CFB0"
      DATA "BF>0CF?0BF?0BF=0BFD0CF>0BF@0BF>0CFA0BF>0CF?0BF?0BF=0BFE0BF>0BF@0BF>0CF"
      DATA "A0BF>0CF?0BF?0BF=0BFE0BF>0BF@0BF?0CF@0BF>0CF?0BF?0BF=0BFE0BF>0BF@0BF@0"
      DATA "BF@0BF>0CF?0BF?0BF=0BFD0CF>0BF@0BF@0CF?0BF>0CF?0BF?0BF=0CFC0BF?0BF@0BF"
      DATA "@0CF?0BF>0CF?0BF?0BF>0CF@0DF?0BF@0MF?0BF>0CF?0BF?0BF>0NF@0BF@0LF@0BF>0"
      DATA "CF?0BF?0BF?0MF@0BF@0LF@0BF>0CF?0BF?0BF@0KFA0BF@0KFA0BF>0CF?0BF?0BFA0IF"
      DATA "B0BF@0JFB0BF>0CF?0BF?0BFC0EFD0BF@0BF“0"

      SUB Pause (Interval!)
      StartTIME! = TIMER
      DO
      IF StartTIME! > TIMER THEN EXIT SUB
      LOOP WHILE TIMER < StartTIME! + Interval!
      END SUB

    Your Name
    Your Email
    (Optional)
    Message Title
    Message Text
    Options Also send responses to my email address