64bytes Testbilder / Arkos

64bytes Testbilder / Arkos A simple split-raster effect in 64bytes as a quick response to the 128 bytes one (Pouët.net) by Chiourme.

» Download (DSK file).

Source

		;    _____         __
		;   /  _  \_______|  | ______  ______
		;  /  /_\  \_  __ \  |/ /  _ \/  ___/
		; /    |    \  | \/    <  <_> )___ \
		; \____|__  /__|  |__|_ \____/____  >
		;         \/           \/         \/
		; 64bytes version of www.pouet.net/prod.php?which=52701
		; Hello Chiourme, you should give z80 assembly a try =)
		;
		; A dozen bytes could be saved by compiling the routine
		; directly at the IM1 interrupt vector (&38).
		;
		; Grim/Arkos^Semilanceata
 
		; WinAPE's directive to compile and run
		run start
 
 
		org &6128
start
		; Lock 300Hz interrupts after the next one
		ld a,&C9
		ld (&38),a
 
		; wait for the next 300Hz interrupt
		halt
 
		; Display BORDER only
		ld bc,&BC01
		out (c),c	; Select CRTC Reg. 1
		inc b
		dw &71ED	; Set R1 to zero
 
		; *** WARNING - Stupid trick here! ***
		; This is the color table data.
		; We use the fact that the color codes correspond
		; to "useless" cpu instructions to waste some time
		; and synchronize the raster to start at the left
		; of the screen.
 
		; The &10 at the end select the BORDER color reg.
		; It also produce a DJNZ instruction, B is loaded
		; with &BD. So we put a &00 after the &10 to make
		; the djnz jumps just after itself. 
colors
		db &4B	; ld c,e
		db &4A	; ld c,d
		db &53	; ld d,e
		db &52	; ld d,d
		db &4D	; ld c,l
		db &4C	; ld c,h
		db &55	; ld d,l
		db &54	; ld d,h
		db &10	; djnz x
		db 0	; djnz $+2
 
		; *** End of the Warning ***
 
		; waste some more time
		push hl	; 4us
		push hl	; 4us
		push hl	; 4us
		pop hl	; 3us
		pop hl	; 3us
 
		; Initialize loop
		exx
 
		; Change the BORDER color several time per rasterline
loop		; 64us loop
		pop ix		; <= waste 4us (and 2 bytes) to get a 64us loop
		ld hl,colors
		inc b
		outi
		inc b
		outi
		inc b
		outi
		inc b
		outi
		inc b
		outi
		inc b
		outi
		inc b
		outi
		inc b
		outi
		inc b
		outi
		; loop forever
		jr loop
sources/raster64b.txt · Last modified: 2009/03/17 17:21 by grim