
							;BY BLAINE EVANS
							;1 ERITH WAY
							;PONTYBODKIN
							;NR MOLD
							;CLWYD
							;CH7 4TR
							;TEL O352-771673
	opt	c-,d+

	move.l	4.w,a6			;FIND EXEC BASE
	lea	gfxlib(pc),a1		;LOAD GRAPHICS LIBRARY IN A1
	moveq	#$00,d0			;VERSION 0
	jsr	-552(a6)		;OPEN LIBRARY
	move.l	d0,_gfxbase		;STORE D0 (GFX ADDRESS )
	beq	nolib_exit		;ELSE EXIT
	bsr	Foreground_addresses	;BRANCH TO FOREGROUND ADDRESSES
	bsr	Init
	bsr	Blit_Text
	lea	$dff000,a6
	move.l	_gfxbase,a0		;LOAD ADDRESS OF GRAPHICS LIB IN A0
	move.l	50(a0),Oldcop		;STORE CURRENT COPPER,ETC TO RETRIEVE LATER
S
	move.l	#Newcop,50(a0)		;POINT TO OUR COPPERLIST

wait					;WAIT LOOP
	cmp.b	#255,$dff006		;VERTICAL BLANKING GAP 
	bne.s	wait			;
;	move.w	#$fff,$180(a6)		;REMOVE TO MEASURE RASTER TIME
	move.w	#$000,$180(a6)		;REMOVE TO MEASURE RASTER TIME
	btst	#$6,$bfe001		;QUIT LEFT MOUSE PRESSED
	bne.s	wait
ended					;ELSE LOOP TO WAIT
	move.l	_gfxbase,a0		;LOAD GRAPHICS LIB ADDRESS IN A0
	move.l	oldcop,50(a0)		;RESTORE OLD COPPER TO RETURN TO EDITTER
nomem_exit	
	move.l	4.w,a6			;FIND EXEC BASE
	move.l	_gfxbase,a1		;LOAD GRAPHICS BASE IN A1
	jsr	-414(a6)		;CLOSE LIBRARY
nolib_exit
	rts				;RETURN TO EDITER
Foreground_addresses				;START OF FOREGROUND DATA
	move.l	#Foreground,d0
	move.w	d0,Bpl0ptl		;LOW WORD IN BIT PLANE 0 LOW
	swap	d0				
	move.w	d0,Bpl0pth		;HIGH WORD IN BIT PLANE 0 HIGH
	swap	d0
	rts
Init					; initialise some variables
	move.l	#Foreground,d0
	move.l	d0,Text_base		; store address to start text
	move.l	#Text,a0
	move.l	a0,Text_Address		; store current character
	rts
Blit_Text
	move.l	Text_base,a1		; address in a1
	move.w	#14,d3			; no of lines-1
Again
        moveq	#39,d1     		; no of chars per line-1
LP1      
	moveq	#0,d0			; clear d0
	move.l	Text_Address,a0		; text chars in a0
       	move.b	(a0)+,d0		; next char
	move.l	a0,Text_Address		; store value
        sub.b	#32,d0		     	; take off offset
        mulu	#8,d0		   	; to find font gfx
        lea	Font(pc),a2		; font gfx in a2
        add.l	d0,a2	         	; add offset
        moveq	#7,d2	         	; no of lines high font is
        move.l	a1,a3			; a3 now =adress
LP2      
	move.b	(a2)+,(a3)	    	;font gfx into memory
        add.l	#40,a3	        	; add 1 line across
        dbra	d2,LP2	        	; loop till 0
        addq.l	#1,a1	         	; increase address by 1 byte
        dbra	d1,LP1	        	;	
	add.l	#8*40,a1		;add offset for next line
	dbra	d3,Again		;d3=no of lines to blit
	rts


Text	     	;12345678901234567899012345678901234567890
	DC.B	"                                        "
	DC.B	"                                        "
	DC.B	"                                        "
	DC.B	"                                        "
	DC.B 	"          68000 CHIP BLITTING           "
	DC.B	"                                        "
	DC.B	"                                        "
	DC.B	"                                        "	
	DC.B	"       FONT DATA BY VANDAL OF P.E.      "
	DC.B	"                                        "
	DC.B	"                                        "
	DC.B	"           INPUT YOUR TEXT              " 
	DC.B	"                                        "
	DC.B	"                                        "
	DC.B	"         BLAINE EVANS @1991             "
	even
**************************************************************
*     Font by Vandal of P.E> ************
**************************************************************	
Font	 DC.B      $00,$00,$00,$00,$00,$00,$00,$00      ;SPACE
         DC.B      $18,$18,$18,$18,$00,$18,$18,$00	;!
         DC.B      $6C,$6C,$00,$00,$00,$00,$00,$00	;"
         DC.B      $1C,$36,$7C,$78,$7C,$3E,$1C,$00	;#
         DC.B      $1C,$36,$1F,$0F,$1F,$3E,$1C,$00	;$
         DC.B      $00,$00,$00,$00,$00,$00,$00,$00      ;%
         DC.B      $00,$00,$00,$00,$00,$00,$00,$00	;&
         DC.B      $0C,$0C,$18,$00,$00,$00,$00,$00	;'
         DC.B      $18,$30,$30,$30,$30,$30,$18,$00	;(
         DC.B      $18,$0C,$0C,$0C,$0C,$0C,$18,$00	;)
         DC.B      $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF	;*
         DC.B      $00,$18,$18,$7E,$7E,$18,$18,$00	;+
         DC.B      $00,$00,$00,$00,$0C,$0C,$18,$00	;,
         DC.B      $00,$00,$00,$7E,$7E,$00,$00,$00	;-
         DC.B      $00,$00,$00,$00,$00,$18,$18,$00	;.
         DC.B      $02,$06,$0C,$18,$30,$60,$C0,$00	;/
         DC.B      $7C,$C6,$CE,$DE,$F6,$E6,$7C,$00	;0
         DC.B      $38,$78,$18,$18,$18,$18,$7E,$00	;1
         DC.B      $7C,$C6,$06,$7C,$C0,$C0,$FE,$00	;2
         DC.B      $FC,$06,$06,$7C,$06,$06,$FC,$00	;3
         DC.B      $1C,$3C,$6C,$CC,$FE,$0C,$0C,$00	;4
         DC.B      $FE,$C0,$C0,$FC,$06,$06,$FC,$00	;5
         DC.B      $7E,$C0,$C0,$FC,$C6,$C6,$7C,$00	;6
         DC.B      $FE,$06,$06,$0C,$0C,$18,$18,$00	;7
         DC.B      $7C,$C6,$C6,$7C,$C6,$C6,$7C,$00	;8
         DC.B      $7C,$C6,$C6,$7E,$06,$06,$06,$00	;9
         DC.B      $00,$18,$18,$00,$00,$18,$18,$00	;:
         DC.B      $00,$18,$18,$00,$18,$18,$30,$00	;;
         DC.B      $06,$1C,$70,$E0,$70,$1C,$06,$00	;<
         DC.B      $00,$00,$00,$00,$00,$00,$00,$00	;=
         DC.B      $60,$38,$0E,$07,$0E,$38,$60,$00	;>
         DC.B      $7C,$C6,$C6,$0C,$18,$00,$18,$00	;?
         DC.B      $00,$00,$00,$00,$00,$00,$00,$00	;@
         DC.B      $7C,$C6,$C6,$FE,$C6,$C6,$C6,$00	;A
         DC.B      $FC,$C6,$C6,$FC,$C6,$C6,$FC,$00	;B
         DC.B      $7E,$C0,$C0,$C0,$C0,$C0,$7E,$00	;C
         DC.B      $FC,$C6,$C6,$C6,$C6,$C6,$FC,$00	;D
         DC.B      $7E,$C0,$C0,$FE,$C0,$C0,$7E,$00	;E
         DC.B      $7E,$C0,$C0,$FE,$C0,$C0,$C0,$00	;F
         DC.B      $7E,$C0,$C0,$DE,$C6,$C6,$7C,$00	;G
         DC.B      $C6,$C6,$C6,$FE,$C6,$C6,$C6,$00	;H
         DC.B      $7E,$18,$18,$18,$18,$18,$7E,$00	;I
         DC.B      $FE,$06,$06,$C6,$C6,$C6,$7C,$00	;J
         DC.B      $C6,$CC,$D8,$F0,$D8,$CC,$C6,$00	;K
         DC.B      $C0,$C0,$C0,$C0,$C0,$C0,$FE,$00	;L
         DC.B      $C6,$EE,$FE,$D6,$C6,$C6,$C6,$00	;M
         DC.B      $E6,$F6,$DE,$CE,$C6,$C6,$C6,$00	;N
         DC.B      $7C,$C6,$C6,$C6,$C6,$C6,$7C,$00	;O
         DC.B      $FC,$C6,$C6,$FC,$C0,$C0,$C0,$00	;P
         DC.B      $7C,$C6,$C6,$C6,$C6,$DA,$C6,$00	;Q
         DC.B      $FC,$C6,$C6,$FE,$CC,$C6,$C6,$00	;R
         DC.B      $7E,$C0,$C0,$7C,$06,$06,$FC,$00	;S
         DC.B      $7E,$18,$18,$18,$18,$18,$18,$00	;T
         DC.B      $C6,$C6,$C6,$C6,$C6,$C6,$7C,$00	;U
         DC.B      $C6,$C6,$C6,$C6,$C6,$38,$38,$00	;V
         DC.B      $C6,$C6,$C6,$D6,$FE,$EE,$C6,$00	;W
         DC.B      $C6,$6C,$38,$10,$38,$6C,$C6,$00	;X
         DC.B      $C6,$C6,$C6,$7E,$06,$06,$FC,$00	;Y
         DC.B      $FE,$0E,$1C,$38,$70,$E0,$FE,$00	;Z

	EVEN


gfxlib	dc.b	"graphics.library",0	
	even
_gfxbase	dc.l	0		;LONG WORD TO STORE GFX ADDRESS
oldcop		dc.l	0			;OLD COPPERLIST ADDRESS
Text_address	dc.l	0
Text_base	dc.l	0
	even
	SECTION		chipmemory,data_c	


Newcop
	dc.w	$0100,%0001001000000000		;1 PLANES 
	dc.w	$0102
Scroll	dc.w	$0000			;	SCROLL VALUE
	dc.w	$0104,%0000000000000001		;NO PRIORITIES
	dc.w	$0108,$0000,$010a,$0000		;MODULAS
	dc.w	$0092,$0038,$0094,$00d0		;256*40 SCREEN
	dc.w	$008e,$2c81,$0090,$2cc1		;VISIBLE AREA
						
Planes
	dc.w	$00e0
Bpl0pth	dc.w	$0000,$00e2
Bpl0ptl	dc.w	$0000,$00e4
Bpl1pth	dc.w	$0000,$00e6
Bpl1ptl	dc.w	$0000,$00e8
Bpl2pth	dc.w	$0000,$00ea
Bpl2ptl	dc.w	$0000,$00ec
Bpl3pth	dc.w	$0000,$00ee
Bpl3ptl	dc.w	$0000,$00f0
Bpl4pth	dc.w	$0000,$00f2
Bpl4ptl	dc.w	$0000,$00f4
Bpl5pth	dc.w	$0000,$00f6
Bpl5ptl	dc.w	$0000

Sprites						;SPRITES
	dc.w	$0120
Spl0pth	dc.w	$0000,$0122
Spl0ptl	dc.w	$0000,$0124
Spl1pth	dc.w	$0000,$0126
Spl1ptl	dc.w	$0000
	dc.w	$0128,$0000,$012a,$0000
	dc.w	$012c,$0000,$012e,$0000
	dc.w	$0130,$0000,$0132,$0000
	dc.w	$0134,$0000,$0136,$0000
	dc.w	$0138,$0000,$013a,$0000
	dc.w	$013c,$0000,$013e,$0000

	dc.w	$0180,$0000,$0182,$0fff		;COLORS PLAY 1
	dc.w	$0184,$0d00,$0186,$0f80
	dc.w	$0188,$0ff0,$018a,$00ff
	dc.w	$018c,$008f,$018e,$0095

	dc.w	$0190,$0000,$0192,$0283		;COLORS PLAY 2
	dc.w	$0194,$08f4,$0196,$0095
	dc.w	$0198,$0243,$019a,$00ff
	dc.w	$019c,$0ff0,$019e,$0fa0

	dc.w	$01a0,$0000,$01a2,$0fff		;SPRITE COLORS
	dc.w	$01a4,$0f00,$01a6,$0b00
	dc.w	$01a8,$0600,$01aa,$0F40
	dc.w	$01ac,$0F80,$01ae,$0Fa0
	dc.w	$01b0,$0Ff0,$01b2,$000f
	dc.w	$01b4,$004f,$01b6,$008f
	dc.w	$01b8,$00ff,$01ba,$00f0
	dc.w	$01bc,$0283,$01be,$0f0f

	dc.w	$ffff,$fffe			;END OF COPPERLIST
Foreground
		dcb.b	(256*40)*1,$00

