
atnom = %00000100
clkom = %00000010
dtaom = %00000001
clkim = %01000000
dtaim = %10000000
defm  = 0

size  = $2f
start = $2b
count = $2d

*=$05f5

st
      lda #$ff
      sta $fd10
      lda $fd10
main

      sei
      lda #defm
      sta $01
      jsr wordin
      sta size
      stx size+1
      jsr wordin
      sta run
      stx run+1
      jsr wordin
      sta start
      sta count
      and #$fe
      clc
      adc size
      sta e1
      sta e3
      php
      txa
      sta start+1
      sta count+1
      plp
      adc size+1
      sta e2
      sta e4

      lda count
      tax
      and #$fe
      tay
      txa
      and #$01
      sta count
m2
      ldx #dtaom
      lda #clkim
b11   bit $01
      bne b11
      lda $fd10
      stx $01
      sta (count),y
      iny
e3 =*+1
      cpy #0
      bne m8
      lda count+1
e4 =*+1
      cmp #0
      beq m6
m8
      ldx #defm
      lda #clkim
b21   bit $01
      beq b21
      lda $fd10
      stx $01
      sta (count),y
      iny
      bne m3
      inc count+1
m3
e1 =*+1
      cpy #0
      bne m2
      lda count+1
e2 =*+1
      cmp #0
      bne m2

m6
      lda #defm
      sta $01
      tya
      clc
      adc count
      sta count
      bcc m9
      inc count +1

m9    cli

      lda run
      cmp #$fe
      bne m4
      ldx run+1
      cpx #$ff
      bne m4
      rts

m4    and run+1
      cmp #$ff
      bne m5
      jmp main
m5
run =*+1
      jsr $0000
      jmp st


wordin
      lda #clkim
b1    bit $01
      bne b1
      lda $fd10
      pha
      lda #dtaom
      sta $01
      lda #clkim
b2    bit $01
      beq b2
      ldx $fd10
      lda #defm
      sta $01
      pla
      rts

.end

