<pre>
; z80dasm 1.2.0
; command line: z80dasm -g0x9c40 -l MCPEN.BIN
org 09c40h
sub_9c40h:
jr $+8
nop
add a,003h
ld de,(la250h)
ld (la248h+1),hl
ld (05a94h),de
ret
or b
ld (bc),a
ld c,b
ld (bc),a
cp (hl)
nop
jr nz,l9c5ah
inc b
l9c5ah:
jr nz,l9c5dh
cp h
l9c5dh:
ld a,(de)
l9c5eh:
inc c
jr z,l9c6eh
nop
nop
ld d,h
or c
add hl,hl
ld bc,020a1h
dec c
nop
nop
ld d,h
or c
l9c6eh:
xor 019h
add hl,de
jr nz,l9c5eh
jr nz,$+15
nop
nop
ld d,h
or c
rst 28h
add hl,de
ld a,(de)
nop
ld b,000h
or d
call 0bd19h ;; mc wait flyback
di
or 0c0h
out (c),a
sub_9c94h:
out (c),a
inc b
ld hl,0fa66h ;; timeout.
l9ca8hl9c68:
in a,(c)
cp 0fdh ;; 11111101. Bits are '1' if 'no press', but '0' if pressed. checking joy 0 down.
jr z,l9cb9hsub_9caeh:l9c79
inc l
jr nz,l9ca8hl9c68
inc h
jr nz,l9ca8hl9c68
ld hl,0ffffh
jr l9cbdh
l9cb9hl9c79:
ld de,00420h
add hl,de
l9cbdhl9cbd:
ld (0a410h),hl
pop bc
sub_9cc1h:
ld a,082h
out (c),a
ret
sub_9c8ah:
call 09da6h
call sub_9ce4h
ret
sub_9c94:
ld a,h
ld c,l
sbc hl,de
jr nc,l9ce5h
sub_9ce4h:
add hl,de
l9ce5h:
ld l,c
ret
sub_9caeh:
ld a,l
ld c,h
djnz l9cf5h
ret
sub_9cc1h:
call sub_9c40h
ld a,0ffh
ld (0a410h),hl
ret
sub_9ce4:
ld a,000h
ld bc,01a1ah
l9d65h:
push bc
call 09d35hsub_9d35h
call sub_9c40h
pop bc
djnz l9d65h
ret
sub_9d35h:
ld bc,(0a418h)
l9d79h:
ld (0a412h),de
ret
sub_9de6h:
ld bc,03fd0h
ldir
ret
ld bc,03fd0h
ld hl,05bfeh
ldir
ret
push hl
push de