Venus HC11 Code

/*------------------------------------------------------------------------
    PINBALL, motherfucker!
    (Version 2, 'cause Computers BITE)
    (c) Jason David Ditmars 1997
------------------------------------------------------------------------*/

/* Input/Output definitions:

    Sounds (PORTC)                Pussy Control (PORTA,PORTD)
    ----------------------------  ------------------------------
    quiet              0xFC       clit LED                A:0x08
    winner!            0xFD       vibrator D-to-A bit 1   A:0x10
    disco soundtrack   0xFE                       bit 2   A:0x20
    spinner            0xF8                       bit 3   A:0x40
    start-up           0xF4       cum/lube pump           D:0x04
    spell C-U-M        0xEC
    spell F-U-C-K      0xDC
    orgasm             0xBC
    loser              0x7C

    Outputs (PORTB)                Inputs (PORTE)
    ----------------------------   ---------------------------
    score up           0x01        all C-U-M drops        0x01
    score reset        0x02        clit button (start)    0x02
    C-U-M reset        0x04        tits n' drops          0x04
    ballhole solenoid  0x08        K spinner              0x08
    K light            0x10        F slot                 0x10
    C light            0x20        U slot                 0x20
    U light            0x40        C slot                 0x40
    F light            0x80        lose ball switch       0x80
*/

#include "mytimer.h"
#include "mystdlib.h"

void wait(int);
void score(int);
void fuckslots(unsigned char);
void demo(void);
void cream(void);
void blinkfuck(int);
int rand(void);
void srand(unsigned int);
int checkball(void);

near volatile int soundoff,thescore = 0;

void main(void){
    unsigned char inputs;
    hc11setup();

    while(1==1){
        inputs = PORTE;
        if (RTICntr > soundoff){     /* back to soundtrack    */
            if (thescore>50)
                PORTC = 0xFD;        /* "Oh boy, you did it!  */
            else
                PORTC = 0xFE;        /* disco                 */
        }
        if (PORTA != 0){
            if (PORTA == 0x60)
                PORTA = 0x18;        /* run pussy by shifting */
            PORTA <<= 1;             /* 2 bits across portA   */
        }
        if ((inputs & 0x08) == 0){   /* if K spinner          */
            PORTB |= 0x11;           /* score & K light       */
            PORTC = 0xF8;            /* "Goddamn you're good" */
            RTICntr = 0;
            soundoff = 300;
            inputs = 0xFF;           /* 1 function per loop   */
        }
        else
             PORTB &= 0xF0;          /* score off             */

        if ((inputs & 0x01) == 0){   /* if C-U-M drops...     */
            wait(200);
            PORTC = 0xEC;            /* "You're gonna make..  */
            RTICntr = 0;
            soundoff = 750;
            score(10);               /* rack 'em up           */
            PORTB |= 0x04;           /* RESET C-U-M           */
            wait(100);
            PORTB &= 0xF0;
            cream();                 /* ejaculate!            */
            inputs = 0xFF;
        }
        if ((inputs & 0x04) == 0){   /* if TiTs or CUMdrops   */
            PORTC = 0xBC;
            RTICntr = 0;
            soundoff = 40;
            score(1);
            inputs = 0xFF;
        }
        if ((inputs & 0x10) == 0)    /* F slot                */
            fuckslots(0x80);

        if ((inputs & 0x20) == 0)    /* U slot                */
            fuckslots(0x40);

        if ((inputs & 0x40) == 0)    /* C slot                */
            fuckslots(0x20);

        if ((inputs & 0x80) == 0){   /* LOSER                 */
            PORTC = 0x7C;            /* you suck              */
            wait(800);
            demo();                  /* run the demo til'clit */
            PORTA = 0;
            PORTB = 0x04;            /* reset CUM             */
            wait(50);
            PORTB = 0x02;            /* reset score           */
            thescore = 0;
            wait(50);
            PORTB = 0x08;            /* let ball through hole */
            wait(50);
            PORTD = 0x08;            /* switch to low-current */
            PORTB = 0;
            PORTC = 0xF4;            /* play BUGLE sound      */
            cream();                 /* give em some cumlube  */
            wait(400);
            PORTC = 0xFE;            /* play disco soundtrack */
            while(checkball() == 1); /* shoot your load!      */
            PORTD = 0;
        }
    }
}

void cream(void){                    /* spew cumlube!         */
    PORTD |= 0x04;
    wait(150);
    PORTD &= 0xFB;
}

void fuckslots(unsigned char slot){
    int i;
    PORTB |= slot;
    score(3);
    if ((PORTB & 0xF0) == 0xF0){ /* "F-U-C-K spells FUCK!"    */
        PORTC = 0xDC;            /* "Fuck me harder..."       */
        RTICntr = 0;
        soundoff = 900;
        score(20);
        for(i=0;i<7;i++)         /* Blink F-U-C-K lights      */
            blinkfuck(10);
        PORTA = 0x18;            /* make that clit cherry red */
    }
}

void score(int points){

    int i;
    for(i=0;i<points;i++){
        PORTB |= 0x01;           /* upsydaisy score           */
        wait(15);
        PORTB &= 0xF0;
        wait(8);
        thescore++;
    }
}

void demo(void){                  /* when she's just sitting there */
    int i=2,c;
    long j;
    unsigned char k;
    PORTB = 0x80;
    srand(thescore);
    while ((PORTE & 0x02) != 0){  /* wait for START (clit) button  */
        if (PORTB == 0x10)
            PORTB = 0x80;
        else
            PORTB >>= 1;          /* chase F-U-C-K lights          */
        j = RTICntr;
        while((RTICntr < (j+30)) & ((PORTE & 0x02) != 0));
        if ((i % 500) == 1){      /* play quote every few minutes  */
            k = 0x01;
            PORTC = (0xFC ^ (k <<= (rand() % 8)));
                                  /* ^^that one's a hum dinger     */
            if ((PORTC | 0x03) != 0){
                if ((PORTC & 0x01) != 0)
                    cream();      /* pour baby pour                */
                wait(1200);
                PORTC = 0xFC;
            }
        }
        if ((i % 5) == 0){        /* Blink clit, run vibe          */
            if ((PORTA & 0x78) == 0x78)
                PORTA = 0;
            else{
                k = ((PORTA >>= 3) + 1); /* add 1 and              */
                PORTA = (k <<= 3);       /* shift left             */
            }
        }
        if ((i % 2019) == 0){            /* get her a little wet   */
/*               ^^^^ (props to P.K. Dick & R. Scott)              */

            PORTC = 0xFD;
            for(c=25;c>-50;c--)        /* blink FUCK faster &      */
                blinkfuck(c);          /* faster & faster          */
            PORTC = 0xBC;
            cream();                   /* cum here                 */
            PORTB = 0x80;
        }
        i++;
    }
}

void blinkfuck(int c){
    PORTB = 0xF0;
    PORTA = 0x78;
    if (c>0) wait(c*6);
    else wait(4);
    PORTB = 0;
    PORTA = 0;
    if (c>0) wait(c*5);
    else wait(4);
}

int checkball(void){              /* makes sure you shoot ball    */
    while((PORTE & 0x80) == 0);   /* wait till switch goes off    */    
    wait(100);                    /* debounce that sucker         */
    if ((PORTE & 0x80) == 0)      /* check again                  */
        return(1);
    else return(0);               /* yeah I'm too lazy to build   */
}                                 /* a 555, you nerd              */

void wait(int dur){
    long i = RTICntr;
    while(RTICntr < (dur+i));
}

/*------------------------------------------------------------------------

  ***    Yes, there are lots of magic numbers.
  ***
  ***    Props to:

         J.K.Reeder, B.Dinkins&Kat H., Jimbo Brenner, Ronen Mintz, L.Wells,
         Tadd Fernee, Mas n' Pops, Steve Waldeck, D.Miller, A.T.Duffey,
         Barbara DeGenevieve, Carolyn Ottmers, Shawn Decker, Ed Bennett,
         Jerry Saltz, Chris Bratton, Janis Plastics, Greg Mowery & CityNEON,
         Cupid's Treasures & Marilyn Star

  ***    Keep bouncin'!

------------------------------------------------------------------------*/