* INFO FILE FOR POV 10

WIDTH:		equ	16	;pixels wide for letters
BUFFER_SIZE:	equ	32	;one character

	move.l	A7,A5
	move.l	4(A5),A5	;get basepage
	move.l	$C(A5),D0	;text segment
	add.l	$14(A5),D0	;data segment
	add.l	$1C(A5),D0	;unitialized
	add.l	#$100,D0	;basepage size
	move.l	D0,-(sp)
	move.l	A5,-(sp)
	move.w	D0,-(sp)
	move.w	#$4A,-(sp)
	trap	#1
	add.l	#12,sp		;okay that's it memory free & allocated

	bsr	set_super
	or.b	#$2,$ff820a	;go into 50Hz

	dc.w	$a00a		;hide mouse
	bsr	hide_cursor
	bsr	get_screen_base
;	bsr	get_old_palette
	bsr	set_new_palette
;	bsr	get_original_rez
	bsr	set_low_rez
	bsr	show_pic

;************************************************************************
;*                            WICKED                                    *
;*                            ------                                    *
;* Stolen by: MAC SYS DATA of P.O.V. 4/11/89 17:00                      *
;*      From: GUARDIANS OF LOGIK 13                                     *
;* Include files:-                                                      *
;*                 WICKED.IMG into TUNE                                 *
;************************************************************************
;	bra	bypass
	move.b	#2,$484		;off with keyclick/bell

	lea	tune,a0
	lea	$3c85e,a1
trans:	move.b	(a0)+,(a1)+
	cmp.l	#endoftune,a0
	blt.s	trans

	jsr	$3c85e
bypass:
	move.w	#$2700,sr
; Store original vector slots
	move.l	$120,hbc	;horiz blank counter timing vector
	move.l	$70,v_blank
	move.b	$FFFa09,a09
	move.b	$FFFa07,a07
	move.b	$FFFa13,a13
	and.b	#$DF,$FFFA09
	and.b	#$FE,$FFFA07
	move.l	#isr1,$120
	move.l	#isr2,$70
	or.b	#1,$FFFA07	;EI
	or.b	#1,$FFFA13	;EI
	move.w	#$2300,sr


main_loop:
	bsr	vsync
;	move.w	#$123,$ff8240
	bsr	scroll
	bsr	scroll
	bsr	scroll
; 	move.w	pic+2,$ff8240
	bsr	tst_key
	tst.l	d0
	beq.s	main_loop

	move.w	#$ff,-(sp)
	move.w	#6,-(sp)
	trap	#1
	addq.l	#4,sp
	tst.l	d0
	beq.s	main_loop
	
	bsr	isr_off		;ok now off with colours

;*** set up for exit ***
	move.l	4,a0
	jmp	(a0)
;	bsr	set_old_palette
;	bsr	set_med_rez
;	bsr	show_cursor
;	dc.w	$a009
;	bsr	set_user

;	clr.w	-(sp)
;	MOVE.W	#$4c,-(SP)	; RETURN TO GEM DESKTOP.
;	TRAP	#1
;ERR:	bra.s	ERR


isr1:	
	move.l	a5,-(sp)
	move.l	isr_data,a5
	move.w	(a5)+,$ff8242
;	move.w	(a5)+,$ff8240
	move.l	a5,isr_data
	move.l	(sp)+,a5
	move.b	#1,$FFFa21		;1 line of each colour.....
	move.b	#8,$FFFA1B		;HBC timer
	bclr	#0,$FFFA0F	;EI
	rte

isr2:	;$70
	lea	isr_data(pc),a5
	move.l	#b_line,(a5)
	JSR	$3c980

	tst.w	vsync_flag
	beq.s	flag_notset
	sub.w	#1,vsync_flag
flag_notset:
	move.b	#1,$FFFa21		;1 line of each colour.....
	move.b	#8,$FFFA1B		;HBC timer
	bclr	#0,$FFFA0F	;EI
	rte

vsync:	move.w	#1,vsync_flag
vsyn:	tst.w	vsync_flag
	bne.s	vsyn
	rts

***********************
* SUBROUTINES SECTION *
***********************

scroll:	tst.w	enable
	beq.s	ok
	sub.w	#1,enable
	rts
ok:	move.l	line_ptr,a6	;need a new letter?
	cmp.b	#$ff,(a6)
	bne	loop3
	lea	scroll_line,a6	;restart message
	move.l	a6,line_ptr
loop3:	cmp.b	#1,(a6)
	bne.s	move
	move.w	#110,enable
	move.b	(a6)+,d5
	move.l	a6,line_ptr
	rts
move:	tst.w	scroll_number
	bne.s	loop2
	move.w	#WIDTH,scroll_number
	clr.w	d0
	move.b	(a6)+,d0
	move.l	a6,line_ptr

	sub.w	#32,d0
	lsl.w	#5,d0	;*32 (single plane char set)
bp:
	lea	font,a6
	add.l	d0,a6	;letter address is in a6
;transfer letter into buffer
	lea	buffer,a1
	move.l	(a6)+,(a1)+
	move.l	(a6)+,(a1)+
	move.l	(a6)+,(a1)+
	move.l	(a6)+,(a1)+
	move.l	(a6)+,(a1)+
	move.l	(a6)+,(a1)+
	move.l	(a6)+,(a1)+
	move.l	(a6),(a1)

loop2:	move.l	screen_base,a6
	add.l	#160*144,a6
	move.l	a6,a2
	add.w	#152,a2

	lea	buffer,a1
;scroll buffer into right pixel of screen ready for scrolling
	move.w	#16-1,d1
loop:	roxl.w	(a1)
	move.w	(a1)+,d0
	and.w	#1,d0
	or.w	d0,(a2)
	add.w	#160,a2
	dbf	d1,loop

	move.w	#16-1,d0
loopy:	roxl.w	152(a6)
	roxl.w	144(a6)
	roxl.w	136(a6)
	roxl.w	128(a6)
	roxl.w	120(a6)
	roxl.w	112(a6)
	roxl.w	104(a6)
	roxl.w	96(a6)
	roxl.w	88(a6)
	roxl.w	80(a6)
	roxl.w	72(a6)
	roxl.w	64(a6)
	roxl.w	56(a6)
	roxl.w	48(a6)
	roxl.w	40(a6)
	roxl.w	32(a6)
	roxl.w	24(a6)
	roxl.w	16(a6)
	roxl.w	8(a6)
	move.w	(a6),d7
	and.w	#$7fff,d7
	roxl.w	#1,d7
	move.w	d7,(a6)
	add.w	#160,a6
	dbf	d0,loopy
	sub.w	#1,scroll_number
	rts

isr_off:
	move.w	#$2700,sr
	move.l	v_blank,$70
	and.b	#$DF,$FFFA09
	and.b	#$FE,$FFFA07
	move.l	hbc,$120
	move.b	a07,$FFFa07
	move.b	a09,$FFFa09
	move.b	a13,$fffa13
	move.w	#$2300,sr
	lea	$ff8800,A0
	move.l	#$8080000,(A0)
	move.l	#$9090000,(A0)
	move.l	#$a0a0000,(A0)
	rts

	rts

tst_key:
	move.w	#11,-(sp)
	trap	#1
	addq.l	#2,sp
	rts

;get_key:
;	move.w	#7,-(sp)
;	trap	#1
;	addq.l	#2,sp
;	rts

set_super:
	clr.l	-(sp)		;Set super stack equal
	move.w	#$20,-(sp)	; to user stack before call
	trap	#1
	addq.l	#6,sp		;correct stack
	move.l	d0,stack_save	;save old supervisor stack value
	rts

set_new_palette:
	lea	pic+2,a0
	bra	set_pal
set_old_palette:
	lea	old_palette,a0
set_pal:
	lea	$ff8240,a1
	move.w	#8-1,d0
set_p:	move.l	(a0)+,(a1)+
	dbf	d0,set_p
	rts

get_screen_base:
	move.w	#3,-(sp)
	trap	#14
	addq.l	#2,sp
	move.l	d0,screen_base
	rts

set_low_rez:
	clr.w	-(sp)
	bra	set_rez
set_med_rez:
	move.w	#1,-(sp)
set_rez:
	move.l	#-1,-(sp)
	move.l	#-1,-(sp)
	move.w	#5,-(sp)
	trap	#14
	add.l	#12,sp
	rts

hide_cursor:
	pea	di_mouse
	move.w	#$2-1,-(sp)
	move.w	#$19,-(sp)
	trap	#14
	addq.l	#8,sp
	rts

show_pic:
	lea	pic+34,a0
	move.l	screen_base,a1
	move.w	#32000/4-1,d0
.loop:	move.l	(a0)+,(a1)+
	dbf	d0,.loop
	rts


****************
* DATA SECTION *
****************
stack_save:	dc.l	0
screen_base	dc.l	0
original_rez:	dc.w	0
old_palette:	ds.w	16
line_ptr:	dc.l	scroll_line
scroll_number:	dc.w	16
enable:		dc.w	0

di_mouse:
	dc.b	$12,$1a
	even
hbc:
	dc.l	0
v_blank:
	dc.l	0
a09:
	dc.l	0
a07:
	dc.l	0
a13:
	dc.l	0
	even
vsync_flag:
	dc.w	1
line_count:
	dc.w	0	;count of horizontal line down screen for ISR1
isr_data:
	dc.l	0
b_line:
	dcb.w	$000,75
	dc.w	$080,$010,$090,$020,$0a0,$030,$0b0,$040,$0c0,$050,$0d0,$060,$0e0,$070,$0f0
	dc.w	$8f0,$1f0,$9f0,$2f0,$af0,$3f0,$bf0,$4f0,$cf0,$5f0,$df0,$6f0,$ef0,$7f0,$ff0
	dc.w	$f70,$fe0,$f60,$fd0,$f50,$fc0,$f40,$fb0,$f30,$fa0,$f20,$f90,$f10,$f80,$f00
	dc.w	$708,$e01,$609,$d02,$50a,$c03,$40b,$b04,$30c,$a05,$20d,$906,$10e,$807,$00f
	dc.w	$08f,$01f,$09f,$02f,$0af,$03f,$0bf,$04f,$0cf,$05f,$0df,$06f,$0ef,$07f,$0ff
	dc.w	$8ff,$1ff,$9ff,$2ff,$aff,$3ff,$bff,$4ff,$cff,$5ff
	dcb.w	$000,120
	dc.w	0,0,0
	even
pic:	incbin	"g:\info.pi1"
buffer:	dcb.b	0,BUFFER_SIZE


scroll_line:
 dc.b "P.O.V. INFO SCROLLINE.................                    "
 DC.B "PERSISTENCE OF VISION IS NOW MADE UP OF THE FOLLOWING MEMBERS ;- "
 DC.B "         MAC SYS DATA  -  CHIEF PROGRAMMER/HACKER/PACKER/ARTIST            DR.SYNE - DISTRIBUTION            ALY - MAIN GRAPHICS"
 DC.B "            BORIS - SECOND PROGRAMMER/SOME DEVELOPMENT WORK.              WE ALL LIVE AROUND THE BLACKPOOL AREA BUT BORIS IS PRESENTLY AT MANCHESTER "
 DC.B "DOING SOME COMPUTER DEGREE.      ALY IS A STUDENT AT PRESTON DOING SOME DEGREE IN "
 DC.B "ELECTRONICS.           "
 DC.B "             NOW A LIST OF OUR DISCS ------        1: MICROMIX 1 & 2  ",1," 2: FUZZBOX DEMO   ",1,"3: TEX DEMO 1-3 +  ",1,"XXX INTERNATIONAL 1 ",1,"4: GHOSTBUSTERS DEMO ",1
 dc.b "    5: A-HA DEMO    ",1,"6: SPACE ACE DEMO,  STARWARS RAP,  BOUNCING BALL,  XXX INTERNATIONAL GLOBE DEMO,  FLYING BIRD  AND MANYBOINK        7: TO BE RELEASED   ",1
 dc.b "8: MEGABANG 1 + LIVING ON VIDEO   ",1,"9: ROBOMIX + BAT DEMO + FUJIBOINK                 "
 dc.b "        NOTE: IF YOU ARE USING AN STE THEN YOU WILL BE SEEING TWICE AS MANY COLOURS THAN AN STFM USER.           "
 DC.B "               THAT'S IT, NO MORE DISC SPACE.............  DISC 11 WILL BE RELEASED IN TWO WEEKS.                "
	dc.b	$ff,$ff,$ff,$ff
	even
font:
	dcb.b	0,30
	incbin	"g:\big_set.img"
	even
tune:	incbin	"wicked.img"
endoftune:


