          .MODEL  large,PASCAL
          .CODE
          .386

oldpos    dw     7000 dup (0)
rows      dw     210 dup(0)
op        dw     0

rowinit   proc   far
          PUBLIC rowinit
          mov    cx,200
          mov    ax,0
          mov    bx,0
@ri:      mov    cs:rows[bx],ax
          add    ax,320
          add    bx,2
          loop   @ri
          ret
rowinit   endp


init      proc   far
          PUBLIC init
          mov    word ptr cs:op,0
          ret
init      endp

Putrouts  PROC FAR
          PUBLIC Putrouts
          push   ds
          mov    ds,ax

          mov    ax,0a000h
          mov    es,ax

;          mov    byte ptr cs:[@c+3],cl
          mov    word ptr cs:[@yad+1],bx

          mov    ax,cs:Op
          mov    cx,64
@dr:
          mov    bx,ax
          mov    di,word ptr cs:oldpos[bx]
          mov    byte ptr es:[di],0

@yad:     mov    bx,1234                 ; absolute change, Y base of circle
          add    bx,word ptr ds:[si+2]   ; add y value
          cmp    bx,199
          ja     @yli
          mov    di,word ptr ds:[si]   ; { get x value }
          add    di,dx
          cmp    di,319
          ja     @yli
          add    bx,bx
          add    di,word ptr cs:rows[bx]
@c:       mov    byte ptr es:[di],15

@yli:     mov    bx,ax
          mov    word ptr cs:oldpos[bx],di
          add    ax,2

          add    si,4
          loop   @dr
          mov    cs:Op,ax
          pop    ds
          ret
Putrouts  ENDP

end