Setting up a simple copperlist + 1 Bitplane + 
; a simple scrolltext. No (c)ode by aLpHa oNe!
; =============================================

	section	flashtro,code_c

	move.l 4.w,a6		; Get base of exec lib
	jsr -132(a6)		; Forbid Multitasking
	lea gfxlib(pc),a1	; Adress of gfxlib string to a1
	jsr -408(a6)		; Call OpenLibrary()
	move.l d0,gfxbase	; Save base of graphics.library
	move.l #bitplane,d0	; Get adress of our bitplane...
	move.w d0,bplptr+6	; ...and set up bitplaneregs in copperlist
	swap d0			;
	move.w d0,bplptr+2	;
	move.l #cop,$dff080	; Set new copperlist

;-------------------------------------------------------------------------
	lea text(pc),a0		; Adress of our text to a0
loop:	bsr.w print		; Call Textroutine
	moveq #8-1,d7		; Scrollcounter (-1 coz of dbf loop)
scroll:	cmp.b #$ff,$dff006	; Wait VBL
	bne.b scroll		;
	lea bitplane+8*50(pc),a1; Scroll area by bitshifting to the left
	move.l #(8*50)/2,d0	; Range to scroll, 8*50 bytes
shift:	roxl.w -(a1)		; divided by 2 coz we shift wordwise
	dbf d0,shift		;
	dbf d7,scroll		; Scroll 8 times by one pixel
	addq.l #1,a0		; Increase Textptr to next letter
	move.b #0,bitplane	; Clear 8 Pixels at bitplanestart
	btst #6,$bfe001		; Left mouse clicked ?
	bne.b loop		; No, continue scrollloop!
;-------------------------------------------------------------------------

	move.l gfxbase(pc),a1	; Base of graphics.library to a1
	move.l 38(a1),$dff080	; Restore old copperlist
	jsr -414(a6)		; Call CloseLibrary()
	jsr -138(a6)		; Permit Multitasking
	moveq #0,d0		; Over..
	rts			; and out!

; Routine which prints one single letter to a fixed point on bitplane.
; A0 = ptr to text

print:	move.b (a0),d3		; Get current letter
	tst.b d3		; End of text reached?
	bne.b noend		; Nah, continue
	lea text(pc),a0		; Otherwise a0 points to start of text again
	move.b (a0),d3		; Get first letter
noend:	lea chartab(pc),a1	; Adress of chartab to a1
	moveq #0,d2		; Counter
search:	cmp.b (a1,d2),d3	; Find letter in chartab
	beq.b foundit		; Letter found? Go on...
	addq.l #1,d2		; ..else increase counter
	bra.b search		; and continue searching
foundit:lsl.l #3,d2		; counter*8 = correct offset to charbuffer
	lea chars(pc),a3	; Address of chars to a3
	add.l d2,a3		; + offset to correct letter
	lea bitplane+48(pc),a2	; Address of bitplane + 48 (right side)
	moveq #8-1,d2		; Height of chars (-1 coz we use dbf loop)
copy:	move.b (a3)+,(a2)	; Copy the letter
	add.l #50,a2		; 
	dbf d2,copy		;
	rts			; Return to where we came from ;)

; Stuff
; *****

cop:		dc.w	$0106,$0000,$01fc,$0000		; AGA compatible
		dc.w	$008e,$1a64,$0090,$ffc4		; Setting up display,
		dc.w	$0092,$0020,$0094,$00d8		; modulo and so on
		dc.w	$0102,$0000,$0104,$0000
		dc.w	$0106,$0000,$0108,$0002
		dc.w	$0120,$0000,$0122,$0000		; Clear spriteptrs
		dc.w	$0124,$0000,$0126,$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	$0100,$0200			; No Bitplane
		dc.w	$0180,$0000			; Color00 = Black
		dc.w	$0182,$0fff			; Color01 = White

		dc.w	$850f,$fffe			; Wait VPos $85
		dc.w	$0180,$ffff			; Color00 = White
		dc.w	$860f,$fffe			; Wait VPos $86
		dc.w	$0180,$0312			; Color00 = Dark Pink ?
		dc.w	$880f,$fffe			; Wait VPos $88
		dc.w	$0100,$1200			; 1 Bitplane
bplptr:		dc.w	$00e0,$0000			; Adress of bpl
		dc.w	$00e2,$0000
		dc.w	$920f,$fffe			; Wait VPos $92
		dc.w	$0180,$ffff			; Color00 = White
		dc.w	$930f,$fffe			; Wait VPos $93
		dc.w	$0180,$0000			; Color00 = Black
		dc.w	$ffff,$fffe

text:		dc.b	"  simple scroller for flashtro "
		dc.b	"tutorial section without use of"
		dc.b    " the blitter!         ",0

chartab: 	dc.b 	"abcdefghijklmnopqrstuvwxyz!"	; chars as they appear
		dc.b 	"0123456789*-. "		; in our char table

chars:		dc.b	$00,$7C,$E6,$E6,$FE,$E6,$E6,$06	;"A"
		dc.b	$00,$FC,$E6,$FC,$E6,$E6,$FC,$00	;"B"
		dc.b	$00,$7E,$E6,$E0,$E0,$E6,$7E,$00	;"C"
		dc.b	$00,$FC,$E6,$E6,$E6,$E6,$FC,$00	;"D"
		dc.b	$00,$FE,$E6,$F8,$E0,$E6,$FE,$00	;"E"
		dc.b	$00,$FE,$E6,$F8,$E0,$E0,$E0,$E0	;"F"
		dc.b	$00,$7C,$E0,$EE,$E6,$E6,$7E,$00	;"G"
		dc.b	$E0,$E6,$E6,$FE,$E6,$E6,$E6,$06	;"H"
		dc.b	$00,$FE,$38,$38,$38,$38,$FE,$00	;"I"
		dc.b	$0E,$0E,$0E,$0E,$0E,$CE,$7C,$00	;"J"
		dc.b	$E0,$EE,$FC,$F8,$FC,$EE,$E6,$06	;"K"
		dc.b	$E0,$E0,$E0,$E0,$E0,$E6,$FE,$00	;"L"
		dc.b	$00,$C6,$EE,$FE,$F6,$E6,$E6,$06	;"M"
		dc.b	$06,$C6,$E6,$F6,$FE,$EE,$E6,$E0	;"N"
		dc.b	$00,$7C,$E6,$E6,$E6,$E6,$7C,$00	;"O"
		dc.b	$00,$FC,$E6,$E6,$FC,$E0,$E0,$E0	;"P"
		dc.b	$00,$7C,$E6,$E6,$FA,$EC,$76,$06	;"Q"
		dc.b	$00,$FC,$E6,$E6,$FC,$E6,$E6,$06	;"R"
		dc.b	$00,$3C,$70,$3C,$0E,$CE,$FC,$00	;"S"
		dc.b	$00,$FE,$38,$38,$38,$38,$38,$38	;"T"
		dc.b	$E0,$E6,$E6,$E6,$E6,$E6,$7C,$00	;"U"
		dc.b	$E0,$E6,$E6,$E6,$6C,$38,$10,$00	;"V"
		dc.b	$E0,$E6,$E6,$F6,$FE,$EE,$44,$00	;"W"
		dc.b	$C0,$EE,$7C,$38,$7C,$E6,$E6,$06	;"X"
		dc.b	$E0,$E6,$E6,$7C,$38,$38,$38,$38	;"Y"
		dc.b	$00,$FE,$CE,$1C,$70,$E6,$FE,$00	;"Z"
		dc.b	$38,$38,$38,$38,$38,$00,$38,$00	;"!"
		dc.b	$00,$7C,$E6,$EE,$F6,$E6,$7C,$00	;"0"
		dc.b	$00,$F8,$38,$38,$38,$38,$FE,$00	;"1"
		dc.b	$00,$7C,$0E,$7C,$E0,$E6,$FE,$00	;"2"
		dc.b	$00,$FC,$CE,$3C,$0E,$CE,$FC,$00	;"3"
		dc.b	$00,$0E,$1E,$3E,$6E,$FE,$0E,$0E	;"4"
		dc.b	$00,$FC,$E0,$FC,$0E,$CE,$FC,$00	;"5"
		dc.b	$00,$7C,$E0,$FC,$E6,$E6,$7C,$00	;"6"
		dc.b	$00,$FE,$CE,$1C,$38,$38,$38,$38	;"7"
		dc.b	$00,$7C,$E6,$7C,$E6,$E6,$7C,$00	;"8"
		dc.b	$00,$7C,$CE,$CE,$7E,$0E,$7C,$00	;"9"
		dc.b	$00,$66,$FF,$FF,$7E,$3C,$18,$00	;"*"
		dc.b	$00,$00,$00,$00,$FE,$00,$00,$00	;"-"
		dc.b	$00,$00,$00,$00,$00,$38,$38,$00	;"."
		dc.b	$00,$00,$00,$00,$00,$00,$00,$00 ;" "

bitplane:	blk.b	12800,0				; Space for one
							; 400x256 bitplane
							; 50 bytes each row
							; (400 bits/pixels)
gfxlib:		dc.b	"graphics.library",0,0

gfxbase:	dc.l	0
0

Publication author

offline 12 hours

mus@shi9

0
Comments: 1160Publics: 2778Registration: 06-03-2017

Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments
Piecia
Piecia
12 years ago

ThankYou Mr.Spiv. I found in one book that command DCB.B could be also use. It depends on type/version assembler. I will check it…
PS
Merry Christmas!!!

0
Mr.Spiv
Mr.Spiv
12 years ago

ds.b 12800

0
Piecia
Piecia
12 years ago

Hello!!!
Does anybony know how to replace blk.b instruction in a simple way ? I have tried to use multipy dc.b " … " command but it is little unprofessional and it cause extensive growth of the code 🙂

0
janer
18 years ago

dreams come true 🙂 ,.,, great !

0
bobbearing
18 years ago

excellent!

0
Authorization
*
*

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Registration
*
*
*

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Password generation

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

0
Would love your thoughts, please comment.x
()
x