שתשת                                        ***************************************************************************
**        A LITTLE PIECE OF ASSEMBLER CODE TO DISPLAY A PICTURE!.        **
**  SET UP YER PICTURE AS A 32 COLOUR LORES (320*256) PICTURE AND THEN   **
**       CONVERT IT TO RAW USING IFFMASTER OR A SIMILAR PROGRAM          **
**									 **
**	THIS CODE IS NOT SYSTEM FRIENDLY AS IS MASHES THE HARDWARE       **
**	  ORGINAL SOURCE CODE BY ROMBUS/NA UPDATED A LITTLE BY 		 **   
**      SLADE/A51 IN 1996 RELEASED AS FREEWARE - DO YOU YOU WANT TO IT   **
**	   USE NO CACHE AND ORGINAL DISPLAY IF RUNNING ON A A1200	 **
***************************************************************************


SCREENSIZE equ (320/8)*256	; SCREEN SIZE


	INCLUDE	ram:SMITH.I

	section prog,code	; PROGRAM CODE


Start:
	lea picture,a0		; LOAD EFFECTIVE ADDRESS OF PICTURE IN A0
	move.l a0,d0		; MOVE A0 TO D0.
	lea bitplanes+2,a1	; LOAD EFFECTIVE ADDRESS OF BITPLANE+2 IN A1
	move.w #5,d1		; MOVE 5 INTO D1
	move.l #screensize,d2	; MOVE SCREENSIZE INTO D2.

.loop	swap d0			; START LOOP AND SWAO D0
	move.w d0,(a1)		; MOVE D0 INTO A1
	lea 4(a1),a1		; LOAD EFFECTIVE ADDRESS OF 4 INTO A1
	swap d0			; SWAP DO AGAIN
	move.w d0,(a1)		; MOVE CONTENTS OF D0 INTO A1
	lea 4(a1),a1		; LOAD EFFECTIVE ADDRESS OF 4 INTO A1
	add.l d2,d0		; ADD D2 TO D0
	dbra d1,.loop		; DO A BRANCH TO D1,.LOOP
	
	move.l #0,0
	lea gfxlib(pc),a1
 	move.l 4.w,a6
 	jsr oldopen(a6)
	move.l d0,A1
	move.l 38(A1),oldcopper
	jsr closelib(a6)
	jsr forbid(a6)
 	move.l #NC,$dff080

wait:	tstlmb  wait
	jsr permit(a6)
 	move.l oldcopper,$dff080
	moveq #0,d0
	rts

gfxlib: dc.b "graphics.library",0
	even

gfxbase: dc.l 0

oldcopper: DC.l 0

	section copperlist,data_c 		; Stick in Chip RAM.

NC:	dc.w BPLCON0,%0101000000000000		;BPLCON0 (screen control)
	   	     ;FEDCBA9876543210

	dc.w BPLCON1,$0				;BPLCON1 (Horizontal scroll)
	dc.w BPLCON2,$0				;BPLCON2 (Priority control)
	dc.w BPLCON3,$C00			; Makes it run on A1200
	
	dc.w BPL1MOD,0				;BPL1MOD (odd planes modulo)
	dc.w BPL2MOD,0				;BPL2MOD (even ''     '')
	dc.w FMODE,$0				; Makes it run on A1200
	
 	dc.w DDFSTRT,$38			;DDFSTRT (screen start)
	dc.w DDFSTOP,$d0			;DDFSTOP (screen stop)
	dc.w DIWSTRT,$2c81			;DIWSTRT (window start)
	dc.w DIWSTOP,$2cc1			;DIWSTOP (window stop)

bitplanes:
	
	dc.w BPL1PTH,0,BPL1PTL,0
        dc.w BPL2PTH,0,BPL2PTL,0
        dc.w BPL3PTH,0,BPL3PTL,0
        dc.w BPL4PTH,0,BPL4PTL,0
        dc.w BPL5PTH,0,BPL5PTL,0
        dc.w BPL6PTH,0,BPL6PTL,0		;Address of bitplanes

sprites:
	dc.w SPR0PTH,0,SPR0PTL,0
	dc.w SPR1PTH,0,SPR1PTH,0
	dc.w SPR2PTH,0,SPR2PTH,0
	dc.w SPR3PTH,0,SPR3PTH,0
	dc.w SPR4PTH,0,SPR4PTH,0
	dc.w SPR5PTH,0,SPR5PTH,0
	dc.w SPR6PTH,0,SPR6PTH,0
	dc.w SPR7PTH,0,SPR7PTH,0 		;Address of sprites

	dc.w	COL00,$0000			;COL 0
	dc.w	COL01,$0110			;COL 1
	dc.w	COL02,$0221			;COL 2
	dc.w	COL03,$0321			;COL 3
	dc.w	COL04,$0432			;COL 4
	dc.w	COL05,$0542			;COL 5
	dc.w	COL06,$0653			;COL 6
	dc.w	COL07,$0653			;COL 7
	dc.w	COL08,$0753			;COL 8
	dc.w	COL09,$0863			;COL 9
	dc.w	COL10,$0863			;COL 10
	dc.w	COL11,$0874			;COL 11
	dc.w	COL12,$0A84			;COL 12
	dc.w	COL13,$0A85			;COL 13
	dc.w	COL14,$0A85			;COL 14
	dc.w	COL15,$0B85			;COL 15
	dc.w	COL16,$0000			;COL 16
	dc.w	COL17,$0000			;COL 17 ; for the example
	dc.w	COL18,$0000			;COL 18 ; picture
	dc.w	COL19,$0000			;COL 19 ; these colors
	dc.w	COL20,$0000			;COL 20 ; are not used.
	dc.w	COL21,$0000			;COL 21
	dc.w	COL22,$0000			;COL 22
	dc.w	COL23,$0000			;COL 23
	dc.w	COL24,$0000			;COL 24
	dc.w	COL25,$0000			;COL 25
	dc.w	COL26,$0000			;COL 26
	dc.w	COL27,$0000			;COL 27
	dc.w	COL28,$0000			;COL 28
	dc.w	COL29,$0000			;COL 29
	dc.w	COL30,$0000			;COL 30
	dc.w	COL31,$0000			;COL 31

	dc.w $6501,$fffe,$180,$0F0	; The two little green bars
	dc.w $6601,$fffe,$180,$000
	
	dc.w $FE01,$fffe,$180,$0F0	; are drawn using these fours
	dc.w $FF01,$fffe,$180,$000	; lines of code.

 	dc.w $FFFF,$FFFE		; Copper Stop.

	
picture: incbin ram:AREA51_LORES_32.bm

	end
