*==================================================
*
* SoftSwitch Systems Pro Scroll Subroutine
*
* Coding and Fonts: Chris Shepherd
*
* 4-speed scroll
*
*==================================================
lst off
org $1000
**** Setup SHR Screen & Buffer
lda #$80
tsb $c036
tsb $c029 ;Linearize SHR Memory
lda #$c1
sta $c029
clc
xce
rep $30
lda $c035
and #%1111111111110111 ;Shadowing ON
sta $c035
ldx #$7e00
lda #$0000
clearscreen stal $012000,x ; Set $e12000-$e19e00 to black
dex
dex
bpl clearscreen
ldx #$8000
lda #$0000
clearbuf stal $040000,x
dex
dex
bpl clearbuf
lda #$0000
stal $019e00
lda #$0FFF
stal $019e1e
**** Actual Scrolling Routine
sec
xce
sep #$30
sta $c010
]doo clc
xce
rep $30
scroll ldx #13*$a0+20+$2000
aloc lda #message
jsr Font
jsr flip
inc ]flipper+1
jsr flip
inc ]flipper+1
jsr flip
inc ]flipper+1
jsr flip
lda ]flipper+1
sec
sbc #$03
sta ]flipper+1
inc aloc+1
sec
xce
sep #$30
lda $c000
bpl ]doo
sta $c010
cmp #$a0
beq ]doo2
bra ]doo
]doo2 clc
xce
rep #$30
ldx scroll+1
lda aloc+1
jsr Font
jsr flip
inc ]flipper+1
inc ]flipper+1
jsr flip
dec ]flipper+1
dec ]flipper+1
inc aloc+1
sec
xce
sep #$30
lda $c000
bpl ]doo2
sta $c010
cmp #$a0
beq ]doo3
bra ]doo2
]doo3 clc
xce
rep #$30
ldx scroll+1
lda aloc+1
jsr Font
jsr flip
inc aloc+1
sec
xce
sep #$30
lda $c000
bpl ]doo3
sta $c010
cmp #$a0
beq ]doo4
bra ]doo3
]doo4 clc
xce
rep #$30
ldx scroll+1
lda aloc+1
jsr Font
jsr flip
inc aloc+1
inc aloc+1
sec
xce
sep #$30
lda $c000
bpl ]doo4
sta $c010
cmp #$a0
beq ]dum
bra ]doo4
]dum brl ]doo
flip sec
xce
sep $30
sei ;No interrupts
waitforit lda $c02e
cmp #$93
bne waitforit
clc
xce
rep $30
ldy #$0000
flipp ldx #$0000
]flipper ldal $042838,x
]flip2 stal $012838,x
inx
inx
flipp2 cpx #$0068
bne ]flipper
iny
cpy #$07
beq gone
lda ]flipper+1
clc
adc #$a0
sta ]flipper+1
lda ]flip2+1
clc
adc #$a0
sta ]flip2+1
bra flipp
gone lda #$2838
sta ]flip2+1
lda ]flipper+1
sec
sbc #$a0*6
sta ]flipper+1
cli
rts
**** Scrolling Message
message asc " "
asc "IF IT'S TOO SLOW FOR YOUR EYES, HIT SPACEBAR. "
asc " THIS IS A TEST OF"
asc " THE SSP FONT SYSTEM. IT WAS DESIGNED BY SSP-CHRIS, AND"
asc " FONTS WERE TOUCHED UP BY SSP-DAGEN. THE PROMISE: SOFTSWITCH"
asc " SYSTEMS"
asc " PRO WILL SUPPORT THE APPLE // UNTIL THE LAST USER IS GONE."
asc " TEST PATTERN FOLLOWS: "
asc " !#$%&(')*+,-./1234567890:;<>=?@ "
asc "ABCDEFGHIJKLMNOPQRSTUVWXYZ "
asc "FONT COURTESY OF SOFTSWITCH SYSTEMS PRO. MEMBERS ARE: "
asc "CHRIS SHEPHERD (SSP-CHRIS) AND DAGEN BROCK (SSP-DAGEN)... "
asc "THIS SILLY DAMNED FONT GENERATOR + SCROLL TOOK 4 HOURS TO DO "
asc "SO I HOPE YOU'RE HAPPY. CALL THE A.B.U.G. BBS 816.523.0304. "
asc "WELL, IT'S JUNE 1, 1992.. JUST 11 DAYS UNTIL GEORGE BUSH'S"
asc " BIRTHDAY, AND MINE TOO. SUPPORT THE GS, AND LIVE FREE OR DIE!"
asc " ",00
**** SSP Font Routine - Only 1.5 Pages long!
mx %00
Font sta FontLoop+1
stx loc2+1
sec
xce
sep $30
ldx #$00
FontLoop lda $eaea,X
beq Reset
ora #$80 ;Hi-bit chars
sec
sbc #$A0 ;Space=First Char=$a0
sta tmp1
clc
xce
rep #$30 ; New Character Selector
lda tmp1
asl ;x2
asl ;x4
asl ;x8
pha ;sta tmp2
asl ;x16
clc
adc 1,s ;adc tmp2 - Multiply by 32
clc
adc #Begin
sta loc1+1
pla ;kill stack value pushed
sec
xce
sep $30
jsr DrawChar
]doit inx
cpx #30 ;Printed 30 Chars?
beq DoneDraw
bra FontLoop
Reset clc
xce
rep #$30
lda #message
sta aloc+1
rts
DoneDraw clc
xce
rep $30
rts
mx %11
DrawChar phx ;Save X
ldy #06
loopA ldx #03
loc1 lda $eaea,x
loc2 stal $042000,x
dex
cpx #$FF ;Done yet?
bne loc1 ;Nope
dey
beq Done
clc
xce
rep $30
lda loc1+1
clc
adc #04
sta loc1+1
lda loc2+1
clc
adc #$a0
sta loc2+1
sec
xce
sep $30
bra loopA
Done clc
xce
rep $30
lda loc2+1
sec
sbc #$320-$4 ;$a0*5 - 4
sta loc2+1
sec
xce
sep $30
plx
rts
tmp1 hex 00,00
**** Actual Font Characters
Begin hex 00000000 ;Space
hex 00000000
hex 00000000
hex 00000000
hex 00000000
hex 00000000
hex 000FF000 ;!
hex 00FFFF00
hex 00FFFF00
hex 000FF000
hex 00000000
hex 000FF000
hex 0FF00FF0 ;"
hex 0FF00FF0
hex 00000000
hex 00000000
hex 00000000
hex 00000000
hex 00000000 ;#
hex 00F00F00
hex 0FFFFFF0
hex 00F00F00
hex 0FFFFFF0
hex 00F00F00
hex 000F0F00 ;$
hex 00FFFFF0
hex 0F0F0F00
hex 00FFFF00
hex 000F0FF0
hex 0FFFFF00
hex 0FF000F0 ;%
hex 00F00F00
hex 0000F000
hex 000F0000
hex 00F00F00
hex 0F000FF0
hex 00FF0000 ;&
hex 0F00F000
hex F000F000
hex 0FFF0F00
hex F00FF000
hex 0FFF0F00
hex 000FF000 ;'
hex 00000000
hex 00000000
hex 00000000
hex 00000000
hex 00000000
hex 000FF000 ;(
hex 00FF0000
hex 0FF00000
hex 0FF00000
hex 00FF0000
hex 000FF000
hex 000FF000 ;)
hex 0000FF00
hex 00000FF0
hex 00000FF0
hex 0000FF00
hex 000FF000
hex 0F0F0F00 ;*
hex 00FFF000
hex FFFFFFF0
hex FFFFFFF0
hex 00FFF000
hex 0F0F0F00
hex 000F0000 ;+
hex 000F0000
hex FFFFFFF0
hex 000F0000
hex 000F0000
hex 00000000
hex 00000000 ;,
hex 00000000
hex 00000000
hex 0000FF00
hex 0000FF00
hex 000FF000
hex 00000000 ;-
hex 00000000
hex FFFFFFFF
hex 00000000
hex 00000000
hex 00000000
hex 00000000 ;.
hex 00000000
hex 00000000
hex 00000000
hex 00000FF0
hex 00000FF0
hex 000000F0 ;/
hex 00000F00
hex 0000F000
hex 000F0000
hex 00F00000
hex 0F000000
hex 00FFFF00 ;0
hex 0F000FF0
hex 0F00F0F0
hex 0F0F00F0
hex 0FF000F0
hex 00FFFF00
hex 000FF000 ;1
hex 00FFF000
hex 000FF000
hex 000FF000
hex 000FF000
hex 00FFFF00
hex 00FFFF00 ;2
hex 0F0000F0
hex 00000F00
hex 000FF000
hex 00F00000
hex 0FFFFFF0
hex 0FFFFFF0 ;3
hex 00000F00
hex 0000F000
hex 00000F00
hex 000000F0
hex 0FFFFF00
hex 0000FF00 ;4
hex 000F0F00
hex 00F00F00
hex 0FFFFFFF
hex 00000F00
hex 00000F00
hex 0FFFFFF0 ;5
hex 0F000000
hex 0FFFFF00
hex 000000F0
hex 0F0000F0
hex 00FFFF00
hex 0000FFF0 ;6
hex 000F0000
hex 00F00000
hex 0F0FFF00
hex 0F0000F0
hex 00FFFFF0
hex 0FFFFFF0 ;7
hex 000000F0
hex 00000F00
hex 0000F000
hex 000F0000
hex 00F00000
hex 00FFFF00 ;8
hex 0F0000F0
hex 00FFFF00
hex 0F0000F0
hex 0F0000F0
hex 00FFFF00
hex 00FFFF00 ;9
hex 0F0000F0
hex 00F00F00
hex 0000F000
hex 000F0000
hex 00F00000
hex 000FF000 ;:
hex 000FF000
hex 00000000
hex 00000000
hex 000FF000
hex 000FF000
hex 000FF000 ;;
hex 00000000
hex 00000000
hex 000FF000
hex 000FF000
hex 00FF0000
hex 0000F000 ;<
hex 000F0000
hex 00F00000
hex 000F0000
hex 0000F000
hex 00000000
hex 00000000 ;=
hex FFFFFFFF
hex 00000000
hex 00000000
hex FFFFFFFF
hex 00000000
hex 0000F000 ;>
hex 00000F00
hex 000000F0
hex 00000F00
hex 0000F000
hex 00000000
hex 00FFF000 ;?
hex 0F000F00
hex 00000F00
hex 000FF000
hex 00000000
hex 000FF000
hex 00FFFF00 ;@
hex 0F0000F0
hex 0F00F0F0
hex 0FFFF0F0
hex 000000F0
hex 0FFFFF00
A hex 00000FF0
hex 0000F0F0
hex 000F00F0
hex 00F000F0
hex 0F0000F0
hex 0FFFF0F0
B hex 0FFFFF00
hex 0F0000F0
hex 0FFFFF00
hex 0F0000F0
hex 0F0000F0
hex 0FFFFF00
C hex 00FFFFF0
hex 0F000000
hex 0F000000
hex 0F000000
hex 0F000000
hex 00FFFFF0
D hex 0FFFFF00
hex 0F0000F0
hex 0F0000F0
hex 0F0000F0
hex 0F0000F0
hex 0F0FFF00
E hex 00FFFFF0
hex 0F000000
hex 00FF0000
hex 0F000000
hex 0F000000
hex 00FFFFF0
F hex 00FFFFF0
hex 0F000000
hex 0FFF0000
hex 0F000000
hex 0F000000
hex 0F000000
G hex 00FFFFF0
hex 0F000000
hex 0F000000
hex 0F00FFF0
hex 0F0000F0
hex 00FFFF00
H hex 0F0000F0
hex 0F0000F0
hex 0F0FFFF0
hex 0F0000F0
hex 0F0000F0
hex 0F0000F0
I hex 0FFFFF00
hex 000F0000
hex 000F0000
hex 000F0000
hex 000F0000
hex 0FFFFF00
J hex 000000F0
hex 000000F0
hex 000000F0
hex 0F0000F0
hex 0F0000F0
hex 00FFFF00
K hex 0F000F00
hex 0F00F000
hex 0FFF0000
hex 0F00F000
hex 0F000F00
hex 0F000F00
L hex 0F000000
hex 0F000000
hex 0F000000
hex 0F000000
hex 0F000000
hex 00FFFFF0
M hex FF000FF0
hex F0F0F0F0
hex F00F00F0
hex F00F00F0
hex F00000F0
hex F00000F0
N hex 00FFFFF0
hex 0F0000F0
hex 0F0000F0
hex 0F0000F0
hex 0F0000F0
hex 0F0000F0
O hex 00FFFF00
hex 0F0000F0
hex 0F0000F0
hex 0F0000F0
hex 0F0000F0
hex 00FFFF00
P hex 0FFFFF00
hex 0F0000F0
hex 0F0FFF00
hex 0F000000
hex 0F000000
hex 0F000000
Q hex 00FFFF00
hex 0F0000F0
hex 0F0000F0
hex 0F00F0F0
hex 0F000FF0
hex 00FFFFF0
R hex 0FFFFF00
hex 0F0000F0
hex 0F0FFF00
hex 0F00F000
hex 0F000F00
hex 0F0000F0
S hex 00FFFFF0
hex 0F000000
hex 00FFFF00
hex 000000F0
hex 000000F0
hex 0FFFFF00
T hex 0FFF0000
hex 0000F000
hex 0000F000
hex 0000F000
hex 0000F000
hex 0000F000
U hex 0F0000F0
hex 0F0000F0
hex 0F0000F0
hex 0F0000F0
hex 0F0000F0
hex 00FFFF00
V hex 0F0000F0
hex 0F0000F0
hex 0F0000F0
hex 0F0000F0
hex 00F00F00
hex 000FF000
W hex 0F0000F0
hex 0F0000F0
hex 0F0000F0
hex 0F0FF0F0
hex 0FF00FF0
hex 0F0000F0
X hex 0F0000F0
hex 00F00F00
hex 000FF000
hex 000FF000
hex 00F00F00
hex 0F0000F0
Y hex 0F0000F0
hex 00F00F00
hex 000FF000
hex 000FF000
hex 000FF000
hex 000FF000
Z hex 0FFFFFF0
hex 00000F00
hex 0000F000
hex 000F0000
hex 00F00000
hex 0FFFFFF0

