.model small
.386



.code
        org 100h
main:


        push    0A000h
        pop     es

        mov     ax,0013h                ;320x200x256
        int     10h


        mov     cx,320                  ;screen width
        mov     si,0                    ;x
m1:
        push    cx

        fld     angle                   ;y = sine(angle)*radius
        fsin
        fmul    radius
        ;fadd    radius
        fistp   y

        add     y,100 ;radius                ; + y origin

        mov     di,y                    ;plot it
        mov     dl,15
        call    pset


        push    si

        fld     angle
        fcos
        fmul    radius
        fistp   x
        add     x,160
        mov     si,x
        mov     dl,13
        call    pset

        pop     si

        fld     angle                   ;increment angle
        fadd    anglestep
        fstp    angle

        inc     si                      ;next x

        pop     cx
        loop    m1

        mov     ah,0                    ;wait key
        int     16h
                                        ;text mode
        mov     ax,0003h
        int     10h

        ret

pset:
        mov     ax,di
        shl     ax,6
        mov     bx,ax
        shl     ax,2
        add     bx,ax
        add     bx,si

        mov     es:[bx],dl

        ret



r320    dd      320.0

radius  dd      90.0
anglestep dd    0.019634954085


angle   dd      ?  ;0.0
y       dw      ?
x       dw      ?



        end     main

