Wayback Machine
DEC Mar APR
Previous capture 9 Next capture
2004 2005 2006
21 captures
28 Jun 02 - 2 Oct 08
sparklines
Close Help
    '------------------------------------------------------------------

    'sequens.bas     johnf   john.fisher@tauntonschool.co.uk      26/10/2001

    'Used to create sequences of coloured lights via parallel port
    'The screen mimics the mains-powered bulbs allowing off-line testing
    'Try it for discos, party lights, Halloween, Guy Fawkes- or to impress!

    'PS Makes a great traffic light simulator too. Two sets for the crossing roads.
    'In UK we have a different sequence to that in the US! (NO filter-on-red)

    'Que aproveche! Muchas gracias, Carl, por Liberty BASIC. Sobresaliente!

    'Assumes this port is on &H378 (the usual address)

    'Gave me a chance to revise the color command, * read/ dat/ restore

    'By using data commands it is very easy to plan a sequence

    '-------------------------------------------------------------------

    nomainwin

    WindowWidth     = 480
    WindowHeight    = 280
    UpperLeftX      =  32
    UpperLeftY      =  32

    graphicbox #window.box1,   20,  20, 440,  80
    textbox #window.t,        020, 120, 440,  40
    textbox #window.t2,       020, 170, 440,  30
    textbox #window.t3,       020, 210, 440,  30

    open "Parallel Port driver" for graphics_nsb as #window

    print #window, "setfocus";
    print #window, "trapclose [out_of_here]";
    print #window, "fill lightgray";

    print #window.t, "!font ariel_bold 24"
    print #window.t, "      Parallel port pattern driver"

    print #window.t2, "!font ariel 12"
    print #window.t2, "  Sequence and timing set in data statements.        Port at &H378";

    print #window.t2, "!font ariel 12"
    print #window.t3, "        Now plug in the full power lights!              jhf 28/10/2001"

    print #window.box1, "goto 400 10"
    print #window.box1, "down"
    print #window.box1, "fill black"

    finished =0
    pace     =4

    while finished <>1
        scan
        read op$, duration

        if op$ ="end" then
            finished =1
        end if

        if op$ ="repeat" then
            restore
            print #window.box1, "flush"
        end if

        op =binStringToDecimal( op$)
        out hexdec( "&H378"), op

        now =time$("milliseconds")

        while time$("milliseconds") -now <>"-" then
                j =j +2^(8 -i)
                print #window.box1, "backcolor 255 "; str$(255 *i/8); " "; str$( 255 -255 *i/8)
                print #window.box1, "goto "; str$( -30 +50 *i);     " 10"
                print #window.box1, "boxfilled ";  str$( -30 +40 +50 *i); " 60"
            else
                print #window.box1, "backcolor darkblue"
                print #window.box1, "goto "; str$( -30 +50 *i);     " 10"
                print #window.box1, "boxfilled  "; str$( -30 +40 +50 *i); " 60"
            end if
        next i
    binStringToDecimal =j
    end function

    '   running light
    data "-------*", 0300
    data "------*-", 0300
    data "-----*--", 0300
    data "----*---", 0300
    data "---*----", 0300
    data "--*-----", 0300
    data "-*------", 0300
    data "*-------", 0300

    data "--------", 1000

'   alternate
    data "*-*-*-*-", 0400
    data "-*-*-*-*", 0400
    data "*-*-*-*-", 0400
    data "-*-*-*-*", 0400
    data "*-*-*-*-", 0400
    data "-*-*-*-*", 0400
    data "*-*-*-*-", 0400
    data "-*-*-*-*", 0400

    data "--------", 1000
    '   different alternator
    data "----****", 0400
    data "****----", 0400
    data "-----***", 0400
    data "***-----", 0400
    data "------**", 0400
    data "**------", 0400
    data "-------*", 0400
    data "*-------", 0400

    data "--------", 1000
    '   build & decay
    data "*-------", 0200
    data "**------", 0200
    data "***-----", 0200
    data "****----", 0200
    data "*****---", 0200
    data "******--", 0200
    data "*******-", 0200
    data "********", 1000
    data "-*******", 0200
    data "--******", 0200
    data "---*****", 0200
    data "----****", 0200
    data "-----***", 0200
    data "------**", 0200
    data "-------*", 0200
    data "--------", 2000

    data "repeat",      0

    data "end",         0