; Weird Man v1.0
; By Michael Vincent - michael@radicalsoft.org
;
; (C) 2001, all rights reserved. But you may take portions of code
; from this source so you can use them in your own programs.
;
.nolist
#include "asm.inc"
.list
#define counter $86EC+7
.org 0000h
	.db $BB,$6D
	im 1
	ld hl,$86EC
	ld de,check+$9D93
	ld b,6
checkloop:
	ld a,(de)
	cp (hl)
	jr nz,isnotactive
	inc de \ inc hl
	djnz checkloop
	ld ($86EC),a	;mess up the check
	bcall(_newline)
	ld hl,disabled+$9D93
	bcall(_puts)
	bcall(_newline)
	ret
isnotactive:
	ld hl,check+$9D93
	ld de,$86EC
	ld bc,6
	ldir
	bcall(_newline)
	ld hl,enabled+$9D93
	bcall(_puts)
	bcall(_newline)
	xor a
	ld (counter),a
	ld hl,int_start+$9D93
	ld bc,int_end-int_start
	ld de,$8888
	ldir
	ld hl,$8700
	ld a,h
	ld i,a
	ld a,$88
	ld bc,257
	bcall(_memset)
 	im 2
	ret
int_start:
	di
	ex af,af'
	exx
	ld a,($8449)	;APD timer
	dec a
	jr nz,okapd
	ld a,$74	;Reset APD counter
	ld ($8449),a
	im 1
	ei
	ld a,1
	out (3),a
	halt
	di
	im 2
	jr exit
okapd:
	bit shift2nd,(iy+shiftflags)	;Check if 2nd was pressed
	jr z,allok
	in a,(4)	;Check if ON pressed
	bit 3,a
	jr nz,allok
	res shift2nd,(iy+shiftflags)
	res onInterrupt,(iy+onflags)
	im 1
	ei
	ld a,1
	out (3),a
	halt
	di
	im 2
allok:
	ld a,(counter)
	inc a
	ld (counter),a
	ld hl,man2+$8888-int_start
	cp 128
	jr nc,start
	ld hl,man1+$8888-int_start
start:
	ld a,$20+11
	out ($10),a
	call lcddelay+$8888-int_start
	ld a,$80+(64-9)
	out ($10),a
	ld b,9
drawsprite:
	call lcddelay+$8888-int_start
	ld a,(hl)
	out ($11),a
	inc hl
	djnz drawsprite
exit:
	xor a
	out (4),a
	jp $3A
lcddelay:		;LCD driver delay
	push hl
	inc hl
	dec hl
	pop hl
	ret
man1:
	.db %00111100
	.db %11111110
	.db %01010111
	.db %10000101
	.db %01110010
	.db %00100101
	.db %11000110
	.db %10011001
	.db %01100111
man2:
	.db %00111100
	.db %11111110
	.db %01010111
	.db %10000101
	.db %01110010
	.db %00100111
	.db %01100011
	.db %01001010
	.db %01111100
int_end:
check:
	.db $FF,$EE,$DD,$CC,$BB,$AA		;You could put anything you want here
enabled:
	.db "Weird Man ON",0
disabled:
	.db "Weird Man OFF",0
.end
