.TITLE VCS VERT. BARS
.SBTTL INTRODUCTION
; THIS IS A CARTRIDGE THAT WILL DISPLAY
; VERTICAL BARS ON THE STANDARD VCS (STELLA)
; SYSTEM. THE CONTROLS USED ARE BOTH LEFT AND RIGHT
; DIFFACULTY SWITCHES AND THE BLACK/WHITE COLOR SWITCH.
; WHEN THE COLOR/B/W SWITCH IS IN THE COLOR POSITION THE
; DISPLAY WILL BE 3 VERTICAL COLORED BARS BLUE, RED AND
; GREEN. WHEN THE BLACK/WHITE SWITCH IS IN
; THE BLACK/WHITE DIRECTION THE DISPLAY WILL BE
; 8 VERTICAL BARS OF ASCENDING LUMINANCE.
; THE LEFT DIFFACULTY SWITCH ADDS A
; 1KHZ TONE. WHEN THE SWITCH IS IN THE AMATUER(B)
; POSITION THE TONE WILL BE PRESENT. WHEN THE
; SWITCH IS IN THE PRO(A) POSITION THE TONE
; WILL DISSAPEAR.
; THE RIGHT DIFFACULTY SWITCH ADDS A ZERO
; LUMINANCE BAR BETWEEN THE COLOR BARS TO
; TOTALLY SEPERATE THE COLORS. IN THE PRO(A)
; POSITION THERE WILL BE NO SEPERATION. WHEN THE
; SWITCH IS IN THE AMATURE(B) THE SEPERATION BARS
; WILL BE PRESENT.
;
.PAGE
.INCLUDE SEQUAT.MAC
.PAGE
.SBTTL CART EQUATES
START = 0F000
GREEN = 0D4
RED = 44
BLUE = 84
BLACK = 00
BLANK = 2
STACK = 0FF
FREQ = 0E
VOLUME = 8
.PAGE
.SBTTL RAM EQUATES
.=80
RSTCNT: .=.+1 ;GAME RESET DEBOUNCE REGISTER
TSTFLA: .=.+1 ;COLOR ADJUST OR NORMAL SCREEN FLAG
.PAGE
.SBTTL INITALIZATION
.=START
INIT: SEI
CLD
LDX #STACK
TXS
LDA #BLACK
STA COLUBK
STA AUDV0 ;CLEAR BOTH AUDIO CHANNELS
STA AUDV1 ;PLAYERS,MISSILES AND BALL
STA ENAM0
STA ENAM1
STA ENABL
STA GRP0
STA GRP1
STA PF0
LDA #0FF
STA PF1
STA PF2
STA TSTFLA
LDA #5 ;SET PLAYFIELD THE HI PRIORITY
STA CTRLPF ;AND REFLECT THE PLAYFIELD
LDA #FREQ
STA AUDF0
LDA #4
STA AUDC0
.PAGE
.SBTTL FRAME KERNEL
FRAME: STA WSYNC
LDA #BLANK
STA VBLANK ;TURN ON VBLANK
STA VSYNC ;AND VSYNC
LDX #3 ;NUMBER OF LINES FOR VSYNC
1$: STA WSYNC
DEX
BNE 1$
LDA #0
STA VSYNC
LDA TSTFLA ;CHECK FOR A COLOR ADJUST SCREEN
BEQ 10$ ;AND BRANCH IF SO
LDA SWCHB
BPL 2$ ;CHECK RIGHT DIFF. SWITCH
LDA #0FF ;IF AMATR. NO SEPERATION
BMI 3$ ;BRANCH ALWAYS
2$: LDA #0F8 ;IF PRO. ADD SEPERATION
3$: STA PF2
10$: STA WSYNC
LDA SWCHB
AND #40 ;CHECK LEFT DIFF. SWITCH
BNE 5$
LDA #VOLUME ;IF AMATR. ADD 1KHZ AUDIO
JMP 6$
5$: LDA #BLACK ;IF PRO. KILL AUDIO
6$: STA AUDV0
STA WSYNC
LDA SWCHB ;CHECK FOR RESET SWITCH
AND #1
BEQ 7$ ;SWITCH CLOSED BRANCH
LDA #3
STA RSTCNT ;RESET DEBOUNCE COUNT
JMP 8$
7$: DEC RSTCNT
LDA RSTCNT
BNE 8$ ;CHECK FOR ZERO
LDA TSTFLA ;IF SO ALTER TEST FLAG
BEQ 9$
LDA #BLACK
STA TSTFLA
JMP 8$
9$: LDA #0FF
STA TSTFLA
8$: LDX #23 ;NUMBER OF LINES FOR VBLANK
4$: STA WSYNC
DEX
BNE 4$
; START THE VISABLE PICTURE
PICTOP: LDA #0
STA VBLANK ;STOP VBLANKING
LDX #0C ;NUMBER OF LINES ON THE TOP OF
1$: STA WSYNC ;THE PICTURE
DEX
BNE 1$
; LOAD UP THE COLORS OF THE BARS
LDX #0AA ;NUMBER OF LINES OF BAR DISPLAY
LDA SWCHB
AND #8 ;TEST THE B.W./COLOR SWITCH
BEQ GRAY ;IF B.W. BRANCH
LDA TSTFLA
BEQ COLADJ
LDA #BLACK
STA PF0
2$: STA WSYNC
LDA #BLUE
STA COLUPF
LDY #6
3$: DEY
BNE 3$
LDA #RED
STA COLUPF
LDY #2
4$: DEY
BNE 4$
LDA #GREEN
STA COLUPF
DEX
BNE 2$
BEQ BOTTOM ;BRANCH ALWAYS
; GRAY SCALE BARS
GRAY: LDA #0FF
STA PF0
STA PF2
2$: STA WSYNC
LDY #4
3$: DEY
BNE 3$
LDA #0
STA COLUPF
LDA #02
STA COLUPF
LDA #04
STA COLUPF
LDA #06
STA COLUPF
LDA #08
STA COLUPF
LDA #0A
STA COLUPF
LDA #0C
STA COLUPF
LDA #0E
STA COLUPF
LDA #0
STA COLUPF
DEX
BNE 2$
BEQ BOTTOM
; COLOR ADJUST SCREEN
COLADJ: DEX
STA WSYNC
LDA #14
STA COLUP0
LDA #0F4
STA COLUP1
LDA #2
STA CTRLPF
LDA #0FF
STA PF0
1$: STA WSYNC
DEX
BNE 1$
; BLANK OUT REST OF SCREEN
BOTTOM: STA WSYNC
LDA #0FF
STA PF2
LDA #BLACK
STA COLUP0
STA COLUP1
STA COLUPF
LDA #5
STA CTRLPF
LDX #0A ;NUMBER OF LINES OT FINISH PICTURE
1$: STA WSYNC
DEX
BNE 1$
; OVERSCAN TIME
OSCAN: LDX #1D ;NUMBER OF OVERSCAN LINES -1
1$: STA WSYNC
DEX
BNE 1$
JMP FRAME
.=START+0FFA
.WORD INIT
.WORD INIT
.WORD INIT
.END














