Code:
p8086
model small
dataseg
xposAH DB 0
xposAL DB 0
yposAH DB 0
yposAL DB 0
cpos DB 0
udataseg
codeseg
startupcode
PUBLIC _plotdot
_plotdot PROC
mov cx, 1
mov dx, 1
mov ah, 0dh
int 10h
mov ah, 0
mov xposAL, al
mov cx, 2
mov dx, 1
mov ah, 0dh
int 10h
mov ah, 0
mov xposAH, al
mov cx, 1
mov dx, 2
mov ah, 0dh
int 10h
mov ah, 0
mov yposAL, al
mov cx, 2
mov dx, 2
mov ah, 0dh
int 10h
mov ah, 0
mov yposAH, al
mov cx, 1
mov dx, 3
mov ah, 0dh
int 10h
mov ah, 0
mov cpos, al
mov ah, 0ch
mov cl, xposAL
mov ch, xposAH
mov dl, yposAL
mov dh, yposAH
int 10h
ret
_plotdot ENDP
end
FILE: ccallasm.asm
Code:
ifndef ??version
?debug macro
endm
endif
?debug S "ccallasm.c"
_TEXT segment byte public 'CODE'
DGROUP group _DATA,_BSS
assume cs:_TEXT,ds:DGROUP,ss:DGROUP
_TEXT ends
_DATA segment word public 'DATA'
d@ label byte
d@w label word
_DATA ends
_BSS segment word public 'BSS'
b@ label byte
b@w label word
?debug C E97D66DE480A6363616C6C61736D2E63
?debug C E9D0B06A4811633A5C494E434C5544455C6D6174682E68
?debug C E9D1B06A4813633A5C494E434C5544455C7374646C69622E68
?debug C E9D1B06A4812633A5C494E434C5544455C737464696F2E68
?debug C E9D1B06A4813633A5C494E434C5544455C7374646172672E68
?debug C E9D0B06A4812633A5C494E434C5544455C636F6E696F2E68
_BSS ends
_DATA segment word public 'DATA'
_DATA ends
_TEXT segment byte public 'CODE'
; ?debug L 12
_intro proc near
push bp
mov bp,sp
sub sp,4
; ?debug L 15
mov ax,offset DGROUP:s@
push ax
call near ptr _system
pop cx
; ?debug L 16
mov ax,offset DGROUP:s@+4
push ax
call near ptr _printf
pop cx
; ?debug L 17
mov ax,offset DGROUP:s@+32
push ax
call near ptr _printf
pop cx
; ?debug L 18
mov ax,offset DGROUP:s@+57
push ax
call near ptr _printf
pop cx
; ?debug L 19
mov ax,offset DGROUP:s@+60
push ax
call near ptr _printf
pop cx
; ?debug L 20
mov ax,offset DGROUP:s@+103
push ax
call near ptr _printf
pop cx
; ?debug L 21
mov ax,offset DGROUP:s@+126
push ax
call near ptr _printf
pop cx
; ?debug L 22
mov ax,offset DGROUP:s@+170
push ax
call near ptr _printf
pop cx
; ?debug L 23
mov ax,offset DGROUP:s@+209
push ax
call near ptr _printf
pop cx
; ?debug L 24
lea ax,word ptr [bp-4]
push ax
mov ax,offset DGROUP:s@+222
push ax
call near ptr _scanf
pop cx
pop cx
; ?debug L 25
cmp word ptr [bp-2],15258
jb @2
ja @3
cmp word ptr [bp-4],-13824
jbe @2
@3:
; ?debug L 27
mov word ptr [bp-2],15258
mov word ptr [bp-4],-13824
@2:
; ?debug L 29
mov dx,word ptr [bp-2]
mov ax,word ptr [bp-4]
jmp short @1
@1:
; ?debug L 30
mov sp,bp
pop bp
ret
_intro endp
; ?debug L 32
_pause proc near
push bp
mov bp,sp
sub sp,4
; ?debug L 36
mov word ptr [bp-2],0
mov word ptr [bp-4],0
jmp short @8
@7:
; ?debug L 38
add word ptr [bp-4],1
adc word ptr [bp-2],0
; ?debug L 39
sub word ptr [bp-4],1
sbb word ptr [bp-2],0
@6:
add word ptr [bp-4],1
adc word ptr [bp-2],0
@8:
mov dx,word ptr [bp-2]
mov ax,word ptr [bp-4]
cmp dx,word ptr [bp+6]
jb @7
jne @9
cmp ax,word ptr [bp+4]
jb @7
@9:
@5:
@4:
; ?debug L 42
mov sp,bp
pop bp
ret
_pause endp
; ?debug L 44
_plotcircle proc near
push bp
mov bp,sp
sub sp,54
push si
; ?debug L 50
mov word ptr [bp-42],16393
mov word ptr [bp-44],7864
mov word ptr [bp-46],20971
mov word ptr [bp-48],-31457
; ?debug L 51
FLD qword ptr DGROUP:s@+226
FMUL qword ptr [bp-48]
FSTP qword ptr [bp-40]
FWAIT
; ?debug L 52
FLD qword ptr [bp-40]
FDIV qword ptr DGROUP:s@+234
FSTP qword ptr [bp-8]
FWAIT
; ?debug L 54
mov word ptr [bp-18],16483
mov word ptr [bp-20],24576
mov word ptr [bp-22],0
mov word ptr [bp-24],0
; ?debug L 55
mov word ptr [bp-10],16473
mov word ptr [bp-12],0
mov word ptr [bp-14],0
mov word ptr [bp-16],0
; ?debug L 56
mov si,80
; ?debug L 58
mov word ptr [bp-50],1
; ?debug L 60
mov word ptr [bp-26],0
mov word ptr [bp-28],0
mov word ptr [bp-30],0
mov word ptr [bp-32],0
jmp @14
@13:
; ?debug L 62
push word ptr [bp+6]
push word ptr [bp+4]
call near ptr _pause
pop cx
pop cx
; ?debug L 64
push word ptr [bp-26]
push word ptr [bp-28]
push word ptr [bp-30]
push word ptr [bp-32]
call near ptr _cos
add sp,8
mov ax,si
cwd
push dx
push ax
FILD dword ptr [bp-60]
FWAIT
add sp,4
FMUL
FADD qword ptr [bp-24]
call far ptr FTOL@
mov word ptr [bp-54],ax
; ?debug L 65
push word ptr [bp-26]
push word ptr [bp-28]
push word ptr [bp-30]
push word ptr [bp-32]
call near ptr _sin
add sp,8
mov ax,si
cwd
push dx
push ax
FILD dword ptr [bp-60]
FWAIT
add sp,4
FMUL
FADD qword ptr [bp-16]
call far ptr FTOL@
mov word ptr [bp-52],ax
; ?debug L 67
mov bx, [bp-54]
; ?debug L 68
mov al, bl
; ?debug L 69
mov ah, 0ch
; ?debug L 70
mov cx, 1
; ?debug L 71
mov dx, 1
; ?debug L 72
int 10h
; ?debug L 74
mov al, bh
; ?debug L 75
mov ah, 0ch
; ?debug L 76
mov cx, 2
; ?debug L 77
mov dx, 1
; ?debug L 78
int 10h
; ?debug L 80
mov bx, [bp-52]
; ?debug L 81
mov al, bl
; ?debug L 82
mov ah, 0ch
; ?debug L 83
mov cx, 1
; ?debug L 84
mov dx, 2
; ?debug L 85
int 10h
; ?debug L 87
mov al, bh
; ?debug L 88
mov ah, 0ch
; ?debug L 89
mov cx, 2
; ?debug L 90
mov dx, 2
; ?debug L 91
int 10h
; ?debug L 93
inc word ptr [bp-50]
; ?debug L 94
mov ax,word ptr [bp-50]
mov bx,15
cwd
idiv bx
inc dx
mov word ptr [bp-50],dx
; ?debug L 95
mov ax, [bp-50]
; ?debug L 96
mov ah, 0ch
; ?debug L 97
mov cx, 1
; ?debug L 98
mov dx, 3
; ?debug L 99
int 10h
; ?debug L 101
call near ptr _plotdot
@12:
FLD qword ptr [bp-32]
FADD qword ptr [bp-8]
FSTP qword ptr [bp-32]
FWAIT
@14:
FLD qword ptr [bp-32]
FCOMP qword ptr [bp-40]
FSTSW word ptr DGROUP:FLAGS8087@
FWAIT
mov ah,byte ptr DGROUP:FLAGS8087@+1
sahf
jae @15
jmp @13
@15:
@11:
@10:
; ?debug L 103
pop si
mov sp,bp
pop bp
ret
_plotcircle endp
_TEXT ends
_DATA segment word public 'DATA'
_DATA ends
_TEXT segment byte public 'CODE'
; ?debug L 105
_main proc near
push bp
mov bp,sp
sub sp,4
@17:
; ?debug L 110
call near ptr _intro
mov word ptr [bp-2],dx
mov word ptr [bp-4],ax
; ?debug L 111
mov ax,word ptr [bp-4]
or ax,word ptr [bp-2]
jne @18
; ?debug L 113
jmp short @19
@18:
; ?debug L 116
mov al, 19
; ?debug L 117
mov ah, 0
; ?debug L 118
int 10h
; ?debug L 120
push word ptr [bp-2]
push word ptr [bp-4]
call near ptr _plotcircle
pop cx
pop cx
; ?debug L 122
mov ah, 0
; ?debug L 123
int 16h
; ?debug L 125
jmp short @17
@19:
; ?debug L 127
mov al, 3
; ?debug L 128
mov ah, 0
; ?debug L 129
int 10h
; ?debug L 131
mov ax,offset DGROUP:s@+242
push ax
call near ptr _printf
pop cx
; ?debug L 132
mov ax,offset DGROUP:s@+265
push ax
call near ptr _printf
pop cx
; ?debug L 134
mov ah, 0
; ?debug L 135
int 16h
; ?debug L 137
xor ax,ax
jmp short @16
@16:
; ?debug L 138
mov sp,bp
pop bp
ret
_main endp
_TEXT ends
?debug C E9
_DATA segment word public 'DATA'
s@ label byte
db 99
db 108
db 115
db 0
db 10
db 32
db 109
db 111
db 109
db 58
db 32
db 32
db 72
db 117
db 111
db 110
db 103
db 32
db 84
db 104
db 105
db 32
db 84
db 104
db 117
db 121
db 101
db 110
db 32
db 86
db 117
db 0
db 10
db 32
db 100
db 97
db 100
db 58
db 32
db 32
db 78
db 103
db 117
db 121
db 101
db 110
db 32
db 66
db 105
db 110
db 104
db 32
db 84
db 104
db 117
db 121
db 0
db 10
db 32
db 0
db 10
db 32
db 80
db 108
db 101
db 97
db 115
db 101
db 32
db 101
db 110
db 116
db 101
db 114
db 32
db 100
db 101
db 108
db 97
db 121
db 32
db 118
db 97
db 108
db 117
db 101
db 58
db 32
db 40
db 48
db 45
db 49
db 48
db 48
db 48
db 48
db 48
db 48
db 48
db 48
db 48
db 41
db 0
db 10
db 32
db 48
db 32
db 119
db 105
db 108
db 108
db 32
db 101
db 120
db 105
db 116
db 32
db 112
db 114
db 111
db 103
db 114
db 97
db 109
db 46
db 0
db 10
db 32
db 65
db 32
db 118
db 97
db 108
db 117
db 101
db 32
db 116
db 111
db 111
db 32
db 108
db 97
db 114
db 103
db 101
db 32
db 109
db 97
db 121
db 32
db 108
db 111
db 99
db 107
db 32
db 117
db 112
db 32
db 111
db 110
db 32
db 115
db 108
db 111
db 119
db 32
db 67
db 80
db 85
db 0
db 10
db 32
db 84
db 114
db 121
db 32
db 49
db 50
db 48
db 48
db 48
db 32
db 116
db 104
db 101
db 110
db 32
db 109
db 111
db 118
db 101
db 32
db 97
db 100
db 100
db 32
db 48
db 32
db 101
db 118
db 101
db 114
db 121
db 32
db 116
db 105
db 109
db 101
db 0
db 10
db 32
db 84
db 104
db 97
db 110
db 107
db 32
db 121
db 111
db 117
db 46
db 0
db 37
db 108
db 117
db 0
db 0
db 0
db 0
db 0
db 0
db 0
db 0
db 64
db 0
db 0
db 0
db 0
db 0
db 128
db 118
db 64
db 10
db 32
db 83
db 101
db 101
db 32
db 121
db 111
db 117
db 32
db 110
db 101
db 120
db 116
db 32
db 116
db 105
db 109
db 101
db 46
db 46
db 46
db 0
db 10
db 32
db 78
db 69
db 86
db 69
db 82
db 32
db 70
db 79
db 82
db 71
db 69
db 84
db 32
db 71
db 79
db 68
db 33
db 0
_DATA ends
extrn FLAGS8087@:word
extrn FIDRQQ:far
extrn FTOL@:far
_TEXT segment byte public 'CODE'
extrn _plotdot:near
extrn _system:near
extrn _printf:near
extrn _scanf:near
extrn _cos:near
extrn _sin:near
_TEXT ends
public _plotcircle
public _intro
public _main
public _pause
end
Well the program is in assembly language. You have to have the Borland proprietary software to compile these two programs into a single whole. However it produces the "OUTPUT58.exe" that runs on Windows.