
atnom = %00001000
clkom = %00010000
dtaom = %00100000
clkim = %01000000
dtaim = %10000000
defm  = %00000111

size  = $2f
start = $2b
count = $2d

*=$cf00

st    lda #defm
      sta $dd00
main

      sei
      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 #defm | dtaom
      lda #clkim
b11   bit $dd00
      bne b11
      lda $dd01
      stx $dd00
      ldx #$34
      stx $01
      sta (count),y
      ldx #$37
      stx $01
      iny
e3 =*+1
      cpy #0
      bne m8
      lda count+1
e4 =*+1
      cmp #0
      beq m6
m8
      ldx #defm
      lda #clkim
b21   bit $dd00
      beq b21
      lda $dd01
      stx $dd00
      ldx #$34
      stx $01
      sta (count),y
      ldx #$37
      stx $01
      iny
      bne m3
      inc count+1
m3
e1 =*+1
      cpy #0
      bne m2
      lda count+1
e2 =*+1
      cmp #0
      bne m2

m6    tya
      clc
      adc count
      sta count
      bcc m9
      inc count +1

m9
      lda #defm
      sta $dd00
      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 $dd00
      bne b1
      lda $dd01
      pha
      lda #defm | dtaom
      sta $dd00
      lda #clkim
b2    bit $dd00
      beq b2
      ldx $dd01
      lda #defm
      sta $dd00
      pla
      rts

.end
