<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