--- Begin Message ---
Subject: |
[Bug report] [0.9.0 x86/Linux] Sine / Cosine emulated incorrectly for QuickBasic 4.5 |
Date: |
Thu, 5 Jul 2007 13:54:27 +1200 (NZST) |
Hey there,
I've been doing a bit of programming with QuickBasic
using MS-DOS 6.22 running under QEMU 0.9.0/x86/Linux.
It's all fine and dandy except for one (big) problem:
sin() and cos() don't work correctly.
Here's a demonstration:
http://nonlogic.org/dump/bin/1183539319-glitchy.exe
It works fine on a real PC, and even VMWare, but not
under QEMU. I'm pretty sure it's QEMU, as I don't have
the problem running it under QBasic 1.0, which I hear
*emulates* sin() and cos(). But, let's face it,
compared with QuickBasic 4.5, QBasic 1.0 sucks.
What happens under QEMU is, after drawing 1/8, it
draws the third 1/8 when it should be drawing the
second 1/8, and vice versa. Same goes with the sixth
and seventh 1/8s.
Here's the source code:
CONST pi = 3.141592653589793#
CONST p256 = pi / 128
SCREEN 13
FOR i = 0 TO 31
PALETTE 0 + i, i * &H10101
PALETTE 32 + i, i * &H2
PALETTE 64 + i, i * &H200
PALETTE 96 + i, i * &H202
PALETTE 128 + i, i * &H20000
PALETTE 160 + i, i * &H20002
PALETTE 192 + i, i * &H20200
PALETTE 224 + i, i * &H20202
NEXT
FOR i = 0 TO 256
PSET (i, 0), i
px = 160 + SIN(i * p256) * 80
py = 100 + -COS(i * p256) * 80
PSET (px, py), i
t = TIMER
DO: LOOP WHILE TIMER - t < .01
NEXT
Note that it breaks with ANY use of sin() or cos()
under QB4.5.
--GreaseMonkey
Send instant messages to your online friends http://au.messenger.yahoo.com
--- End Message ---
--- Begin Message ---
Subject: |
confirm 7efaa8fcdb91465e6058ecb2e511841df0942eee |
If you reply to this message, keeping the Subject: header intact,
Mailman will discard the held message. Do this if the message is
spam. If you reply to this message and include an Approved: header
with the list password in it, the message will be approved for posting
to the list. The Approved: header can also appear in the first line
of the body of the reply.
--- End Message ---