Porting code

 BBS: Inland Empire Archive
Date: 06-23-92 (10:19)             Number: 1133
From: MARK BUTLER                  Refer#: NONE
  To: DARYL POSNETT                 Recvd: YES 
Subj: Porting code                   Conf: (2) Quik_Bas
 On 06-20-92 Daryl Posnett wrote to Derek Lyons...

 DL> I know how you feel... after a week of trying to get printf to do
 DL> something simple like "Hello World"  I gave up...

 DP> You guys are gonna make people think C is hard or something.

 Yeh, the next think y'know they'll be saying that the following C
 snippet isn't a whole lot simpler than using Basic's...

 SOUND 750, 4: SOUND 55, 4
  `----------------------'
                       \|
 I mean, why go to all _this_ trouble when anyone can see it's _SO_
 much easier to say the _exact_ same thing in C this way....
 --------------------------8< CUT HERE  8<----------------------------
 #include <time.h>
 static unsigned control;
 static int control_flag = 1;

    main()
    {
        note(750,4);
        note(550,4);
    }
    static void speaker_toggle(void)
    {
        if ( control_flag )
            {
            control = inp( 0x61 );
            control_flag = 0;
            }
        outp( 0x61, (inp( 0x61 ) & 0xFE) ^ 2 );
    }
    static void sound( int frequency )
    {
        unsigned divisor;
        divisor = (unsigned)( 1193180L / frequency );
        if ( control_flag )
            {
            outp( 0x43, 0xB6 );
            outp( 0x42, divisor % 256 );
            outp( 0x42, divisor / 256 );
            control = inp( 0x61 );
            control_flag = 0;
            }
        else
            {
            divisor = (unsigned)( 1193180L / frequency );
            outp( 0x42, divisor % 256 );
            outp( 0x42, divisor / 256 );
            }
        outp( 0x61, control | 3 );
    }
    static void silence(void)
    {
           outp( 0x61, control );
           control_flag = 1;
    }
    static void wait_ticks( unsigned ticks )
    {
        clock_t now;
        do
            {
            now = clock();
            while ( clock() == now )
                {;}
            }
        while ( --ticks );
    }
    note( int frequency, int ticks )
    {
        sound( frequency );
        wait_ticks( ticks );
        silence();
    }
 --------------------------8< CUT HERE  8<----------------------------

 Now wasn't that a whole lot easier? Those guys'll just never learn I
 guess, Daryl! <grin>

 --------------> MHB ;^]

... OFFLINE 1.39 * Every absurdity has a champion to defend it
--- DB B1073/001271
 * Origin: * Bare Bones BBS * (1:105/360)
Outer Court
Echo Basic Postings

Books at Amazon:

Back to BASIC: The History, Corruption, and Future of the Language

Hackers: Heroes of the Computer Revolution (including Tiny BASIC)

Go to: The Story of the Math Majors, Bridge Players, Engineers, Chess Wizards, Scientists and Iconoclasts who were the Hero Programmers of the Software Revolution

The Advent of the Algorithm: The Idea that Rules the World

Moths in the Machine: The Power and Perils of Programming

Mastering Visual Basic .NET