*
* IMX INTRO WITH PROPORTIONAL CHARSET SCROLLING TEXT
* FINISHED BY BSI ON 15/01/91
* WELL, DO YA LIKE THIS ONE, NIGEL? SIMPLE YET ELEGANT...
*

>EXTERN "IMX.RAW",BPL
>EXTERN "HYBRIS.EXE",MUSIC
>EXTERN "FONT.RAW",FONT

START:	LEA $DFF000,A5	; CONSTANT THRU ENTIRE PROGRAM...
	MOVE.W #$F,$96(A5)
	LEA SILENT(PC),A0
	MOVE.W #$A0,D0
	MOVEQ #3,D1
QUIET:	MOVE.L A0,0(A5,D0.W)
	MOVE.W #$0001FFFF,$4(A5,D0.W)
	MOVE.W #$0000,$8(A5,D0.W)
	ADDI.W #10,D0	
	DBF D1,QUIET

	ORI.B #2,$BFE001
	BSR.L FONTFIX
	BSR.L OWNBL
	BSR.L MEMSWAP	; WAIT FOR FORBID() TIL MEMSWAPPING...
	MOVE.L #BPL+7960,D0
	MOVE.W #$F4,D1
	BSR.L FIXBPL

	LEA $BFD100,A2	; KILL DISK DRIVE MOTORS...
	MOVE.B #$FF,(A2); SET MOTOR BIT FOR OFF...
	MOVE.B #$87,(A2); SELECT DRIVES...
	MOVE.B #$FF,(A2); DESELECT DRIVES... MOTORS ARE OFF...

	BSR.L IRQON

	MOVE.W #330,D2
ZZZZZ:	BSR.L FRAME
	DBRA D2,ZZZZZ

STLOOP:	BSR.L FRAME
	SUBI.L #40,D0
	SUBQ #1,D1
	MOVE.B D1,REFLEX
	BSR.L FIXBPL	
	CMPI.B #$2B,D1
	BNE.S STLOOP
	ADDI.L #40,D0
	BSR.L FIXBPL

	LEA PLAN1(PC),A0
	LEA PLAN1A(PC),A1
	MOVE.W #9,D0
XFPTRS:	MOVE.L (A0)+,(A1)+
	DBRA D0,XFPTRS

	MOVE.W #179,D1	; 3 SECOND WAIT...
TYM180:	BSR.L FRAME
	DBF D1,TYM180

	MOVE.W #24,D1
PRDLP:	BSR.L FRAME
	BSR.L PRDOWN
	DBF D1,PRDLP

	BSR.L FRAME	
	MOVE.L #COPLIST2,$80(A5) ; ENABLE COPPERLIST 2
	ST SCRFLAG

MOUSE:	BTST #6,$BFE001
	BNE.S MOUSE

	LEA WAVES+10(PC),A0
	MOVE.W #20,D1
ZERLP:	MOVEQ #3,D0
	MOVE.W D0,(A0)
FRWT:	BSR.L FRAME
	DBRA D0,FRWT
	LEA 12(A0),A0	
	DBRA D1,ZERLP
	MOVE.W #0,SCRFLAG
	BSR.L FRAME
	BSR.L FRAME

CLSCROL:BTST #14,2(A5)
	MOVE.L #$01000000,$40(A5)
	MOVE.L #BPL+7040,$54(A5)
	MOVE.W #0,$66(A5)
	MOVE.W #[22*64]+20,$58(A5)

	MOVE.L #COPLIST,$80(A5) ; ENABLE COPPERLIST 1
	MOVE.W #$DC,D0
BCLOOP:	BSR.L FRAME
	ADDQ.W #1,D0
	MOVE.B D0,COLOUR
	CMPI.B #$F4,D0
	BNE.S BCLOOP

	MOVE.W #$01FE,D0
	MOVE.W D0,COLOUR+4
	MOVE.W D0,COLOUR

	MOVE.W #$2C,D0
	MOVE.W #$F4,D1
INLOOP:	MOVE.B D0,TOPIC
	MOVE.B D1,BOTPIC
	BSR.L FRAME
	ADDQ #2,D0
	SUBQ #2,D1
	CMPI.B #$90,D0
	BNE.S INLOOP

	BSR.L IRQOFF
	MOVE.W #$F,$96(A5)
	BSR.L MEMSWAP
	BSR.L CLEANUP
	MOVEQ #0,D0
	RTS
SILENT:	DC.W 0

********** INITIAL, THEN FINAL COPPERLIST **********
COPLIST:
DC.L $01800000,$01820888,$0184098A,$01860A9B,$01880444,$018A0768 
DC.L $018C0879,$018E0657,$01900435,$01920546,$01940324,$01960333 
DC.L $01980213,$019A0EEE,$019C0555,$019E0BAC,$01A00CBD,$01A20DCE 
DC.L $01A40EDE,$01A60014,$01A80125,$01AA0236,$01AC0347,$01AE0458 
DC.L $01B00569,$01B2067A,$01B4078B,$01B6089C,$01B809AD,$01BA0ABE 
DC.L $01BC0BCE,$01BE0A53
DC.L $01020000,$00960020,$008E0581,$01040000,$009040C1,$00920038
DC.L $009400D0,$0108FFD8,$010AFFD8,$01400000,$01440000
PLAN1:	DC.L $00E00000,$00E20000
	DC.L $00E40000,$00E60000
	DC.L $00E80000,$00EA0000
	DC.L $00EC0000,$00EE0000
	DC.L $00F00000,$00F20000

TOPIC:	DC.L $2C01FFFE,$01005200
REFLEX:	DC.L $F401FFFE,$01080000,$010A0000
COLOUR:	DC.L $DC01FFFE,$01800003
BOTPIC:	DC.L $F401FFFE,$01000200
	DC.L $01800000
	DC.L $009C8010
	DC.L $FFFFFFFE

********** WORKING COPPERLIST **********
COPLIST2:
DC.L $01800000,$01820888,$0184098A,$01860A9B,$01880444,$018A0768 
DC.L $018C0879,$018E0657,$01900435,$01920546,$01940324,$01960333 
DC.L $01980213,$019A0EEE,$019C0555,$019E0BAC,$01A00CBD,$01A20DCE 
DC.L $01A40EDE,$01A60014,$01A80125,$01AA0236,$01AC0347,$01AE0458 
DC.L $01B00569,$01B2067A,$01B4078B,$01B6089C,$01B809AD,$01BA0ABE 
DC.L $01BC0BCE,$01BE0A53
DC.L $01020000,$00960020,$008E0581,$01040000,$009040C1,$00920038
DC.L $009400D0,$01400000,$01440000
PLAN1A:	DC.L $00E00000,$00E20000
	DC.L $00E40000,$00E60000
	DC.L $00E80000,$00EA0000
	DC.L $00EC0000,$00EE0000
	DC.L $00F00000,$00F20000

	DC.L $2C01FFFE,$01005200

	DC.L $DC01FFFE,$01800003
WAVES:	DC.L $DD01FFFE,$01020000,$01820111
DC.L $DE01FFFE,$01020000,$01820222,$DF01FFFE,$01020000,$01820333
DC.L $E101FFFE,$01020000,$01820444,$E201FFFE,$01020000,$01820555
DC.L $E301FFFE,$01020000,$01820666,$E401FFFE,$01020000,$01820777
DC.L $E501FFFE,$01020000,$01820888,$E601FFFE,$01020000,$01820999
DC.L $E701FFFE,$01020000,$01820AAA,$E801FFFE,$01020000,$01820BBB
DC.L $E901FFFE,$01020000,$01820AAA,$EA01FFFE,$01020000,$01820999
DC.L $EB01FFFE,$01020000,$01820888,$EC01FFFE,$01020000,$01820777
DC.L $ED01FFFE,$01020000,$01820666,$EE01FFFE,$01020000,$01820555
DC.L $EF01FFFE,$01020000,$01820444,$F001FFFE,$01020000,$01820333
DC.L $F101FFFE,$01020000,$01820222,$F201FFFE,$01020000,$01820111

	DC.L $F401FFFE,$01000200
	DC.L $01800000
	DC.L $009C8010
	DC.L $FFFFFFFE

********** GRAPHICS OPEN/CLOSER **********
GRBAS:	DC.L 0
GRNAM:	DC.B "graphics.library",0
	EVEN
OWNBL:	BTST #14,$2(A5)
	BNE.S OWNBL
	MOVE.L 4,A6
	MOVE.L #GRNAM,A1
	CLR.L D0
	JSR -30-522(A6)
	MOVE.L D0,A6
	MOVE.L A6,GRBAS
	JSR -30-426(A6)
	MOVE.L 4,A6
	JSR -30-102(A6)
	RTS
DISOWN:	BTST #14,$2(A5)
	BNE.S DISOWN
	MOVE.L GRBAS,A6
	JSR -30-432(A6)
	MOVE.L 4,A6
	JSR -30-108(A6)
	RTS

********** IRQ SETUP **********
OLDIRQ:	DC.L 0
IRQON:	MOVE.L $6C,OLDIRQ
	MOVE.W #$4000,$9A(A5)
	MOVE.L #IRQ,$6C
	MOVE.W #$C000,$9A(A5)
	RTS

IRQOFF:	MOVE.W #$4000,$9A(A5)
	MOVE.L OLDIRQ,$6C
	MOVE.W #$C000,$9A(A5)
	RTS

********** IRQ PART **********
IRQ:	MOVEM.L D0-D7/A0-A6,-(A7)
	MOVE.W $1E(A5),D0
	ANDI.W #$10,D0
	BEQ.S IREXIT

	JSR $3EB62	; PLAY TUNE...
	ADDQ.W #1,TYMER
	TST.W SCRFLAG
	BEQ.S IREXIT
	BSR.L SINFIX
	BSR.L SCROLL

IREXIT:	MOVE.W #$70,$9C(A5)
	MOVEM.L (A7)+,D0-D7/A0-A6
	RTE

CLEANUP:MOVE.W #$7FFF,D0
MBA:	DBF D0,MBA
MBWT:	BTST #14,$2(A5)
	BNE.S MBWT
	MOVE.L GRBAS,A6
	MOVE.L 38(A6),$80(A5)
	MOVE.W D0,$88(A5)
	BSR.L DISOWN
	MOVE.W #$8020,$96(A5)
	MOVEQ #0,D0
	RTS

********** FIX BITPLANE POINTERS WITH VAL IN D0... **********
FIXBPL:	MOVEM.L D0/D1/A0/A1,-(A7)
	LEA PLAN1+2,A1
	MOVEQ #4,D1
FIXBLP:	MOVE.W D0,4(A1)
	SWAP D0
	MOVE.W D0,(A1)
	SWAP D0
	ADDI.L #8000,D0
	ADDQ #8,A1
	DBF D1,FIXBLP
	MOVE.L #COPLIST,$80(A5)
	MOVE.L #COPLIST2,$84(A5)
	MOVE.W D0,$88(A5)
	MOVEM.L (A7)+,D0/D1/A0/A1
	RTS

TYMER:	DC.L 0
FRAME:	MOVE.W TYMER,D7
FRMLOOP:CMP.W TYMER,D7
	BEQ.S FRMLOOP
	RTS

********** MOVE THE "PRESENTS" **********
PRDOWN:	LEA BPL+7950,A0
	LEA BPL+7950-40,A1	
	MOVEQ #4,D0
BWT:	BTST #14,2(A5)
	BNE.S BWT
	MOVE.W #$09F0,$40(A5)
	MOVE.W #2,$42(A5)
	MOVE.L #$FFFFFFFF,$44(A5)
	MOVE.L A0,$54(A5)
	MOVE.L A1,$50(A5)
	MOVE.L #$00100010,$64(A5)
	MOVE.W #[24*64]+12,$58(A5)
	ADDI.L #8000,A0	
	ADDI.L #8000,A1
	DBF D0,BWT
	RTS
	
********** FONT STUFF **********
ASC:	DC.B "ABCDEFGHIJ"
	DC.B "KLMNOPQRST"
	DC.B "UVWXYZ.,",34,"'"
	DC.B "!#$&(): -/"
	DC.B "0123456789"

PROP:	DC.B 19,19,21,19,19,19,21,21,10,18
	DC.B 21,18,25,23,22,19,22,18,17,19
	DC.B 22,24,31,25,22,21,8,7,11,7
	DC.B 9,21,16,21,10,10,8,22,18,15
	DC.B 24,9,18,21,20,21,21,16,21,21
	
LOC:	BLK.L 50,0

FONTFIX:LEA LOC(PC),A0
	MOVE.L #FONT,D0
	MOVEQ #0,D1
	MOVEQ #4,D4
FONTY:	MOVE.L D0,D2
	MOVEQ #9,D3
FONTX:	MOVE.L D2,(A0)+
	ADDI.L #4,D2
	DBF D3,FONTX
	ADDI.L #[22*40],D0
	DBF D4,FONTY
	RTS

********** DECODE CHAR TO PRINT IN D0... **********
DECODE:	MOVEM.L D0/D1/A0,-(A7)
	LEA ASC,A0
	MOVEQ #0,D1
PRCHLP:	CMP.B (A0)+,D0
	BEQ.S PREX
	ADDQ.W #1,D1
	CMPI.W #50,D1
	BNE.S PRCHLP
	MOVE.W #37,D1
PREX:	LEA PROP(PC),A0
	MOVE.B (A0,D1.W),PRWID+1
	ADD.W D1,D1
	ADD.W D1,D1
	LEA LOC(PC),A0
	MOVE.L (A0,D1.W),PRADDR
	MOVEM.L (A7)+,D0/D1/A0
	RTS

PRWID:	DC.W 1
PRADDR:	DC.L 0

********** DO PRINT **********
DOPR:	BTST #14,2(A5)
	BNE.S DOPR
	MOVE.W #$09F0,$40(A5)
	MOVE.W #0,$42(A5)
	MOVE.L #$FFFFFFFF,$44(A5)
	MOVE.L PRADDR,$50(A5)
	MOVE.L #BMAP+40,$54(A5)
	MOVE.W #36,$64(A5)
	MOVE.W #40,$66(A5)
	MOVE.W #[22*64]+2,$58(A5)
	RTS

SCRFLAG:DC.W 0
	DC.W 0
BMAP:	BLK.B 1012,0

********** SCROLLER **********
SCROLL:	BTST #14,2(A5)
	BNE.S SCROLL
	MOVE.W #$F9F0,$40(A5)
	MOVE.W #0,$42(A5)
	MOVE.L #$FFFFFFFF,$44(A5)
	MOVE.L #BMAP,$50(A5)
	MOVE.L #BMAP-2,$54(A5)
	MOVE.L #0,$64(A5)
	MOVE.W #[22*64]+22,$58(A5)

XFW:	BTST #14,2(A5)
	BNE.S XFW
	MOVE.W #$09F0,$40(A5)
	MOVE.L #BMAP,$50(A5)
	MOVE.L #BPL+7040,$54(A5)
	MOVE.W #4,$64(A5)	
	MOVE.W #0,$66(A5)
	MOVE.W #[22*64]+20,$58(A5)

	SUBQ.W #1,PRWID
	BNE.S SCREX
	
GMESS:	MOVE.L MESSPT,A0
	MOVE.B (A0)+,D0
	BNE.S CHVOK
	MOVE.L #MESS,MESSPT	
	BRA.S GMESS
CHVOK:	MOVE.L A0,MESSPT
	BSR.L DECODE
	BSR.L DOPR
SCREX:	RTS	

MESSPT:	DC.L MESS
MESS:	DC.B '"BLAME IT ON HUSSEIN" -MILLI VANILLI...      '
	DC.B "WELCOME TO THIS NEW DEMO FROM IMX...   "
	DC.B "WITH SYNTHETIC MUSIC RIPPED FROM HYBRIS, "
	DC.B "PSYGNOSIS GFX, AND A PROPORTIONAL CHARACTER "
	DC.B "SCROLLTEXT, I'D SAY IT'S A DECENT DEMO...   "
	DC.B "GREETZ GO OUT TO THE FOLLOWING COOL DUDES:  "
	DC.B "THE OWL OF IMX, UNCLE INDY, PSYCHOPATH, LORD FLASH-"
	DC.B "HEART, SLOWHAND, PILGRIM, AND ANYONE ELSE I "
	DC.B "FORGOT...   "
	DC.B "IF YOU WANT A DEMO (SOURCES INCLUDED), WRITE TO:  "
	DC.B "BANSAI/BSI LABS    PSC 1, BOX 1869    "
	DC.B "OFFUTT, NE 68113 USA...     "
	DC.B "    THIS RIP-O-RAMA WAS DONE ON: 13/01/91 BSI!"
	DC.B "           ",0
	EVEN

********** WAVE MOVEMENT **********
SINTAB:	DC.B $33,$44,$66,$77,$77,$77,$66,$44
	DC.B $33,$11,$11,$00,$00,$00,$11,$11
SINPNTR:DC.W 0
SINTMR:	DC.W 1

SINFIX:	SUBQ.W #1,SINTMR
	BNE.S SINOUT
	MOVE.W #4,SINTMR
	LEA SINTAB,A0
	LEA WAVES+7,A1
	MOVEQ #19,D1
SINLP:	MOVE.W SINPNTR,D0
	ADDQ.W #1,D0
	ANDI.W #$0F,D0
	MOVE.W D0,SINPNTR
	MOVE.B (A0,D0.W),(A1)
	LEA 12(A1),A1
	DBF D1,SINLP
	SUBQ.W #3,SINPNTR
SINOUT:	RTS

********** SWAP IN/OUT MEM WITH HYBRIS TUNE **********
MEMSWAP:LEA MUSIC+15359,A0
	LEA MUS+15359,A1
	MOVE.W #15359,D0
MEMSWA:	MOVE.W $DFF006,$DFF180
	MOVE.B (A0),D1
	MOVE.B (A1),(A0)
	MOVE.B D1,(A1)
	LEA -1(A0),A0
	LEA -1(A1),A1
	DBF D0,MEMSWA
	RTS

********** VITAL DATAS **********
MUS=$3C000
MUSIC:	BLK.B 15360,0
FONT:	BLK.B 4400,0
BPL:	BLK.B 40000,0
