10 REM SAVE"V.SRC",8 20 SYS700 30 *=49152 40 .OPT OO 50 GETIN = $FFE4 60 RANDOM = $D41B 70 ; 80 ; ---------- 90 JSR GMODE; TURN ON GRAPHICS MODE 100 JSR INITVOTE; INITIALIZE VOTERS 110 JSR CAMPAIGN; RANDOMLY CHANGE VOTES 120 JSR GMODE; BACK TO TEXT MODE 130 RTS 140 ; 150 ; ---------- 160 GMODE = * 170 LDA $D011; SCROLY 180 EOR #%00100000; FLIP BIT 5 190 STA $D011; TOGGLE GRAPHICS MODE ON/OFF 200 LDA $D018; VMCSB 210 EOR #%00001100; TOGGLE BITS 220 STA $D018; TOGGLE BASE ADDRESSES 230 RTS 240 ; 250 ; ---------- 260 INITVOTE = * 270 JSR RNDINIT; CRANK UP THE NOISY SID VOICE 280 JSR FILL; FILL THE COLOR BYTES 290 JSR CHOOSE; THE VOTERS RANDOMLY CHOOSE A COLOR 300 RTS 310 ; 320 RNDINIT = * 330 LDA #$FF:STA $D40F; MAX HI FREQUENCY 340 LDA #$80:STA $D412; NOISE WAVEFORM 350 STA $D418; VOLUME OFF AND NO OUTPUT FOR VOICE 3 360 RTS 370 ; 380 FILL = * 390 LDA #$61; FOREGROUND 6 (BLUE) AND BACKGROUND 1 (WHITE) 400 LDY #250 410 COL0 = 1024 420 COL1 = COL0 + 250 430 COL2 = COL1 + 250 440 COL3 = COL2 + 250 450 LPFILL DEY; NOTE THAT THIS SETS THE ZERO FLAG 460 STA COL0,Y:STA COL1,Y:STA COL2,Y:STA COL3,Y 470 BNE LPFILL:RTS 480 ; 490 CHOOSE = * 500 BITMAP = $2000 510 LDX #32; 32 PAGES OF 256 BYTES = 8192 520 LDY #0 530 LDA #BITMAP:STA SELFMOD+2; SET UP THE ADDRESS 540 LPCHOOSE LDA RANDOM 550 SELFMOD STA $FFFF,Y; THIS ISN'T THE REAL ADDRESS 560 INY; COUNT FORWARD 570 BNE LPCHOOSE; UNTIL .Y WRAPS 580 INC SELFMOD+2:DEX:BNE LPCHOOSE; AND REPEAT A TOTAL OF 32 TIMES 590 RTS; AND THAT'S ALL 600 ; 610 ; ---------- 620 CAMPAIGN JSR GETIN:BEQ CAMPAIGN 630 RTS