home *** CD-ROM | disk | FTP | other *** search
- ; 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
-