QB64 Project

This Forum is archived and is Read Only.

Run QB code in 64-bit Windows / 32-bit Linux / or Full Screen in Vista: Download at QB64.net
 
QB64 Large Program Page   Search QB64 Forum

QB64 Feature Request List

by qbguy (no login)


I.
Complex Numbers -- Scheme has complex numbers, FORTRAN has complex numbers, FreeBASIC^H^H^H^H^HCOBOL has complex numbers. Why doesn't QBASIC have complex numbers? I mean who doesn't want their computer to know that LOG(-1)/SQR(-1) = PI ?

II.
Pointers -- C has pointers and FORTRAN (but only Fortran 90 and higher) has pointers. The C people seem to want to use pointers to add two numbers together. Look at Fortran 90's -- http://www.personal.psu.edu/faculty/j/h/jhm/f90/lectures/42.html -- and then put in QB64 -- or just use C++'s pointer syntax.

Posted on Jan 13, 2008, 4:02 PM

Respond to this message   

Return to Index


* LOL Nice use of the backspace key.

by rpgfan3233 (no login)

Posted on Jan 13, 2008, 6:55 PM

Respond to this message   

Return to Index


* What part of keep your dream list till LATER don't you understand QB!

by (Login burger2227)
R

Comon pal, let Galleon get QB done before you start asking for a C type language! Apparently you are so far advanced that QB is getting too easy for you! (sure lol)

Learn C, code C, play with C all you want! Just let the man do what he started to do without your great(?) ideas!

Personally, WHOGAS what you think? And if you keep tossing out arsehole answers to newbies I will jump all over your ass too!

Ted



    
This message has been edited by burger2227 on Jan 13, 2008 7:32 PM
This message has been edited by burger2227 on Jan 13, 2008 7:30 PM

Posted on Jan 13, 2008, 7:28 PM

Respond to this message   

Return to Index


Here's something for DEMO 5 -- ASCII PONG!!!

by qbguy (no login)

' This work has been released into the public domain by the copyright
' holder. This applies worldwide.
'
' In case this is not legally possible:
' The copyright holder grants any entity the right to use this work for any
' purpose, without any conditions, unless such conditions are required by
' law.

DEFINT A-Z
DIM SCORE AS LONG, DELAY AS SINGLE, T AS SINGLE
SCREEN 12 ' This is just to make it full screen
SCREEN 0 ' Screen 0 rules
WIDTH 40
CLS
X = 50: Y = 50: X2 = 130: Y2 = 150
PSPEED = 5: XADJ = 1: YADJ = 1: DELAY = .05
DO
CLS
PRESS$ = INKEY$
LOCATE Y \ 8 + 1, X \ 8 + 1
PRINT "o"
LOCATE Y2 \ 8 + 1, X2 \ 8 + 1
PRINT STRING$(4, 219)
LOCATE 1, 1
PRINT SCORE
IF Y <= 20 THEN YADJ = 1
IF Y >= 180 THEN YADJ = -1
IF X >= 300 THEN XADJ = -1
IF X <= 20 THEN XADJ = 1
SELECT CASE PRESS$
CASE CHR$(0) + CHR$(75)
IF X2 > 1 THEN X2 = X2 - PSPEED
CASE CHR$(0) + CHR$(77)
IF X2 < 290 THEN X2 = X2 + PSPEED
CASE CHR$(27)
END
CASE CHR$(0) + CHR$(72)
DELAY = DELAY - .002
CASE CHR$(0) + CHR$(80)
DELAY = DELAY + .002
END SELECT
X = X + XADJ
Y = Y + YADJ
IF Y < Y2 + 8 AND Y > Y2 - 8 AND X < X2 + 32 AND X > X2 THEN
YADJ = -1: SCORE = SCORE + 1
END IF
IF Y > Y2 + 10 THEN
PRESS$=""
DO WHILE PRESS$ <> ""
PRESS$ = INKEY$
COLOR INT(RND(1) * 16)
PRINT "GAME OVER",
LOOP
END
END IF
T = TIMER + DELAY
WHILE T > TIMER: WEND
LOOP



Posted on Jan 11, 2008, 7:21 PM

Respond to this message   

Return to Index


*nice

by mennonite (no login)

Posted on Jan 11, 2008, 7:29 PM

Respond to this message   

Return to Index


* Hey man! You F Lee Bailey or somtin? I can sue you in Panama man.

by Cheech (Login burger2227)
R

Posted on Jan 11, 2008, 9:10 PM

Respond to this message   

Return to Index


OK... Lawyer Joke Time...

by qbguy (no login)

A Dublin lawyer died in poverty and many barristers of the city subscribed to a fund for his funeral. The Lord Chief Justice of Orbury was asked to donate a shilling.
"Only a shilling?" said the Justice, "Only a shilling to bury an attorney? Here's a guinea; go and bury 20 of them."

-----

A man walking along the beach found a bottle. When he rubbed it, lo and behold, a genie appeared.

"I will grant you three wishes," announced the genie. "But there is one condition. I am a lawyer's genie. That means that for every wish you make, every lawyer in the world gets the wish as well -- only double."

The man thought about this for a while. "For my first wish, I would like ten million dollars," he announced.

Instantly the genie gave him a Swiss bank account number and assured the man that $10,000,000 had been deposited. "But every lawyer in the world has just received $20,000,000," the genie said.

"I've always wanted a Ferrari," the man said. "That's my second wish."

Instantly a Ferrari appeared. "But every lawyer in the world has just received two Ferraris," the genie said. "And what is your last wish?"

"Well," said the man, "I've always wanted to donate a kidney...


-----

A man walked into a bar with his alligator and asked the bartender, "Do you serve lawyers here?".
"Sure do," replied the bartender.
"Good," said the man. "Give me a beer, and I'll have a lawyer for my 'gator."

-----

It's been getting so cold lately, a saw a lawyer with his hands in his OWN pockets.

-----

"You seem to have more than the average share of intelligence for a man of your background," sneered the lawyer at a witness on the stand.

"If I wasn't under oath, I'd return the compliment," replied the witness.

-----

At a convention of biological scientists one researcher remarks to another, "Did you know that in our lab we have switched from mice to lawyers for our experiments?" "Really?" the other replied, "Why did you switch?" "Well, for three reasons. First we found that lawyers are far more plentiful, second, the lab assistants don't get so attached to them, and thirdly there are some things even a rat won't do. However, sometimes it very hard to extrapolate our test results to human beings."

-----


Posted on Jan 12, 2008, 5:53 AM

Respond to this message   

Return to Index


IF laugh > &H64 THEN PRINT "HAHAHAHAHAHAHA"

by rpgfan3233 (no login)

HAHAHAHAHAHAHA

'I laughed a lot while reading those. They were very funny!

Posted on Jan 12, 2008, 11:05 AM

Respond to this message   

Return to Index


*you meant <

by mennonite (no login)

Posted on Jan 12, 2008, 11:38 AM

Respond to this message   

Return to Index


* D'oh! How'd I miss that typo? I'm usually great at fixing those right after typing them.

by rpgfan3233 (no login)

Posted on Jan 12, 2008, 2:40 PM

Respond to this message   

Return to Index


Been too busy playing Akalabeth to work on QB64 today!

by (no login)

It'd have to be one of the best basic games of its time and was even distributed commercially.

Because it is hard to get a copy I've posted it in the "big programs" forum. It works fine in QBASIC without any modifications though it's more like GWBASIC code.
http://www.network54.com/Forum/190883/message/1200048268/Aklabeth+%28The+precursor+to+the+famous+Ultima+series%29

It also works fine in QB64 too! Check out some screen-shots of me playing...
http://img140.imageshack.us/img140/8663/qb64aklapd7.png

I'm going away on a nice holiday for a week so don't expect any responses from me throughout this time, but for now...
...back to playing Akalabeth!
Galleon

PS. All of the nice little programs in 9liners.zip found on Antoni's website(
http://www.geocities.com/antonigual/qbasic.html
)now also run perfectly without any modifications except for one which requires that you comment out a line containing the word "ffix". The vertical retrace checking (WAIT &H3DA,8) in CUBEROT.BAS works beautifully.

PPS. Can't wait to release the next Demo, thanks for the support everyone!

Posted on Jan 11, 2008, 3:03 AM

Respond to this message   

Return to Index


Enjoy your holiday Galleon...you deserve it.

by (Login MystikShadows)
R

You've been putting alot of work into QB64 so yeah a little break like that will be great for ya.

When you get back, or, if anyone happens to know, I'm wondering or suggesting (depending) if QB64 has a _DIR$ function or if one is in the big picture. ;-) In my case it's one of the first things that pushed me to wards the PDS and VB-DOS for most tools/apps a _DIR$ function of some sort would save a lot of stress ;-). Just a suggestion hehe.

I can't wait for demo #5 like I'm sure most here can't wait either. hehe.

Posted on Jan 11, 2008, 4:25 AM

Respond to this message   

Return to Index


*I didn't see the memo that we provide UNpaid vacations! Enjoy your holiday G!

by Pete (Login The-Universe)
Admin

Posted on Jan 11, 2008, 8:00 AM

Respond to this message   

Return to Index


qb64 feature list (*url)

by mennonite (no login)

http://www.network54.com/Forum/190883/thread/1199858084/qb64+feature+list+works+in+qb64+and+qbasic

Posted on Jan 8, 2008, 9:57 PM

Respond to this message   

Return to Index


Nice features list program! (Well worth trying for anyone interested in QB64)

by (no login)

99% right!
I noticed a couple of incorrect colors but I think I'll wait till Demo #5 is released before fixing this up. Thanks for providing a good reference everyone can have fun using.

Posted on Jan 9, 2008, 2:40 AM

Respond to this message   

Return to Index


Here's another features list of things added over the past few days for Demo #5!

by (no login)

CINT/CLNG/CSNG/CDBL/INT/FIX/_ROUND
OPTION BASE
CSRLIN
DATE$ (both function & statement implemented)
TIME$ (both function & statement implemented)
TAN
ATN
LOG
EXP

Of course, that's just what's been coded over the past few days, Demo #5 has so much more!

PS. _ROUND rounds numbers to integers as appose to CINT which rounds numbers to INTEGERs. Make sense? Anyway _ROUND is faster and works on a much wider range of numbers (it can return signed or unsigned INTEGER64 values) but provides no overflow checking.

Posted on Jan 9, 2008, 2:46 AM

Respond to this message   

Return to Index


About the _ROUND function :-).

by (no login)

I'm just curious as to which rounding algorithm you used. as you might have read in Moneo's rounding tutorial there's more than one way to round a number :-).

The way you describe _ROUND here seems to be a 64bit replacement for the CINT() or INT() functions would round allow to say round to 2 decimal places for example? or does it always round to the nearest integer value. I assume the latter since you said it returns a 64 bit signed or unsigned integer. :-). Perhaps a rounding function that allows to define the number of decimal places to round to might be fun. :-).

Just a suggestion hehe.

Posted on Jan 9, 2008, 3:43 AM

Respond to this message   

Return to Index


Aww.... Why'd ya have to go and ask that, Mystik! Now I'm curious too!

by rpgfan3233 (no login)

I like my rounding method, which implements symmetric arithmetic rounding (aka "round-half-up"):
DEF FNround(x) = FIX(x + 0.5 * SGN(x))
or
DEF FNround(x) = INT(x + 0.5 * SGN(x))

In some typical C code:
#define ROUND(x) ((int)(x + 0.5 * ((x < 0) ? -1 : 1)))

Yeah, functions are better (they have type-checking and such), but the macro and DEF FN was simplest. Shoot me. Err... No, wait! SUE ME! SUE ME! *the MPAA comes in* Aww, man!

unsigned int n = 0xffffffffUL;
printf("I have %u pirated movies.\n", ++n);
/* thank goodness for the behavior of C */

Posted on Jan 9, 2008, 6:44 AM

Respond to this message   

Return to Index


*right now i just use dim a as integer, - .5 from a and it's like int(a) for a > 0

by mennonite (no login)

Posted on Jan 9, 2008, 8:41 AM

Respond to this message   

Return to Index


of course here's how i would do a round function

by mennonite (no login)

'public domain

here's locate:
locate y
locate y,x
locate ,x
locate y,x,v

here's roundnum:
round(n)
round(n, -1, 10)

the default, round(n) is like using round(n,0,1)

n is the numeric you're rounding, the next is -1 (up) or 1 (down) or default 0 (nearest) and the next is the nearest what- so round(n,1,100) would round 147 to 200. round(n,0,1) would work like dim n as integer, and round(n,-1,1) would be much like or exactly like int(n)

Posted on Jan 9, 2008, 8:49 AM

Respond to this message   

Return to Index


um, yeah

by mennonite (no login)

it would actually be called roundnum() and -1 would be round down, and 1 would be round up, but other than that, yeah.

Posted on Jan 9, 2008, 8:50 AM

Respond to this message   

Return to Index


About _ROUND(...)

by (no login)

The problem with CINT and CLNG is they are specific to a particular data type and also require range checks for compatibility with QBASIC. QB64 contains more data types so it was necessary to add a new function. If it were called _CINT64 then you'd expect it to return a value which is a signed 64 bit integer, however this would have been misleading because it you pass it an unsigned value it returns it as is. I also wanted a simple rounding function which would round a float to an integer value quickly and this meant skipping range checking.

How does it round?
The same way QBASIC automatically rounds floating point numbers to integers. Consider the following code.
a!=1.6
b%=a!
print b%
It prints 2. In the same way the following code...
print _ROUND(1.6)
...would also print 2.

What about other rounding methods?
I really like the idea of extending the _ROUND function or perhaps making a different function which can round using a variety/combination of rules.
The rules I see as important are:
1. The direction it rounds positive and negative numbers
2. How many decimal places it rounds the number to
3. The decimal fraction which is the pivot point around which a rounding decision would be made (typically 0.5) or indeed if there is no pivot point and it always rounds up/down.
4. How it rounds a number ending with the pivot point fraction.
Consider the following...
a%=0.5
a%=0.51
a%=0.59
The 4th rule above would make a big difference to the number a% becomes
If anyone can come up with a really simple function format which could do all of the above I'm sure I'd find a way to include it.

Posted on Jan 9, 2008, 3:56 PM

Respond to this message   

Return to Index


i really like mine although there's one thing i can't think of a way to express

by mennonite (no login)

_roundnum(n) would by default be like _roundnum(n,0,1) which would be like dim a as integer.

i like to truncate, and usually let int() do this for me, even though int(-0.5) will actually be -1, it's okay. i never use any of the other rounding, int is popular and "good enough."

but for rounding, i like being able to round nearest, up, or down, that's the 0:

_roundnum(n,0,1) nearest
_roundnum(n,-1,1) round down
_roundnum(n,1,1) round up

and the 1 there is so you can _roundnum(8200,1,500) and it will round up to the nearest 500: 8500

so it has a certain number of options you can use, but too many, it's like line or locate.

the one thing it won't do is say you want to always round up... and you consider _roundnum(-0.4) well rounding that up would be -1. or would it be 0? should there be another option for which is up, or should the best option be chosen? that i wish people could tell me.

Posted on Jan 9, 2008, 4:10 PM

Respond to this message   

Return to Index


i do want to add this to what i said

by mennonite (no login)

i like the idea of _roundnum() a lot, and it's being offered to you as a favor, but i don't think you need to include it.

if int() works as you say it will (qb compatible) i will be happy. i mention _roundnum() because you're trying to figure out an improved statement. i'm trying to help you do it. the statements you add should be for now at least, up to you i think. _roundnum() is your option, and if you "mess it up" i can call it something else if i want it in another basic language, no worries.

Posted on Jan 9, 2008, 4:13 PM

Respond to this message   

Return to Index


I like it Galleon

by (Login burger2227)
R

Simple and to the point. If the user needs to round up or down, he can make his own FUNCTION to do that. No need to mess with the number in the rounding Function itself.

For instance, Moneo objected to an old post that rounded up by adding .5 to the number before making it an integer using INT(). He thought it should have been done another way. Fine! That is up to the programmer........

Ted

Posted on Jan 9, 2008, 6:09 PM

Respond to this message   

Return to Index


I thought INT was like the mathematical Floor function - it rounds down every time.

by rpgfan3233 (no login)

Implementations of modern rounding algorithms in QBasic:
DEF FNceil (x) = FIX(x + SGN(x))

DEF FNfloor (x) = INT(x) 'INT rounds down every time, so INT = Floor

DEF FNroundHalfUp (x) = FIX(x + .5 * SGN(x)) 'also known as Symmetric Arithmetic Rounding

DEF FNroundHalfDown (x) = FIX(x + (ABS(x - FIX(x)) > .5) * SGN(x) * -.5)


I'm a FIX master, mainly because symmetry works well with me. For that reason, I don't like INT nearly as much. However, the floor function has been very handy in other languages, and for that reason I do not ignore the fact that it exists. Also, I really can't ignore it because of the fact that "(int)variable" type-casts some variable as an int, in which case it is like the FIX function. That would be so confusing to a beginner!

Anyway, I could have done the floor function with FIX instead of using the built-in INT function:
DEF FNfloorAlternate (x) = FIX(x + (SGN(x) = -1))

It is amazing what you can do with logical operations that can be used as integers instead of being strictly-typed boolean values. :)

Posted on Jan 9, 2008, 7:23 PM

Respond to this message   

Return to Index


someone researched it before i wrote my tutorial

by mennonite (no login)

it truncates unless the value is negative. moneo has an article about these, but i don't know when it came up before i wrote my intro to qb.

the example output in my tutorial is from actual code.

Posted on Jan 9, 2008, 8:05 PM

Respond to this message   

Return to Index


Moneo would disagree with your symmetry

by (Login burger2227)
R

I think that symmetry works in opposite directions on each side of 0. FIX is symmetric without adding a number to the value. Adding .5 would round up in some cases. But INT would do that too.

Really, I think it is a matter of what you are trying to do. Such as payroll or banking. Moneo and I got in an argument about your method. He found a posted thread from 4 years earlier and said it was misleading. In Tricks Forum. His recent essay is in Big Programs.

That is why I like Galleons Round Function because not everybody agrees on the method.
Keep in mind that it will be using number ranges above QB's. Later he can make new FIX and CINT functions perhaps.

Ted

Posted on Jan 10, 2008, 1:57 AM

Respond to this message   

Return to Index


BTW, DEF Fn is not a really good kind of function

by (Login burger2227)
R

QB Help recommends FUNCTION because DEF Fn needs you to assign it to a variable if you want to manipulate the value. Also DEF Fn cannot be used recursively(defined more than once in a program). That limits it's usefulness in programs doing the same routine twice.

DEF Fn is a legacy compatability from the GW Basic days.

Ted



    
This message has been edited by burger2227 on Jan 10, 2008 1:45 PM
This message has been edited by burger2227 on Jan 10, 2008 12:37 PM

Posted on Jan 10, 2008, 12:36 PM

Respond to this message   

Return to Index


Some on DEF FN

by (no login)

With the DEF FN function, you can define up to 26 functions in a set of code.

Not being able to reuse DEF FNA(X), for example, is not all that much of a drawback. If you need another, use DEF FNB(X).

I'm for putting DEF FN into the QB64 package.

It may not be as elaborate as other languages, but it is wonderful as a teaching tool, because of its simplicity.

QB64 geniuses--give us DEF FN.

Posted on Dec 15, 2010, 5:57 AM

Respond to this message   

Return to Index


Once it is put in QB64 we cannot use variables like Fname$ for first or file name.

by Clippy (Login burger2227)
R

You can rationalize it all you want, but EVEN M$ recommends using a REAL FUNCTION!

Posted on Dec 15, 2010, 8:54 AM

Respond to this message   

Return to Index


thanks, your corrections are welcome

by mennonite (no login)

took a bit of research, but there were a couple i wasn't even sure about. although i tried out a lot of stuff in 3 and 4.

for demo2, there were things that were not features of demo2, but they were in the program you wrote in basic to make demo2, etc, so i assumed they were already part of qb64 by then.

Posted on Jan 9, 2008, 8:37 AM

Respond to this message   

Return to Index


Galleon, I think that you may be wasting time on QB quirks

by (Login burger2227)
R

Of course, QB has some inconsistencies, but dwelling on them at this point is not really necessary.

I would make the stuff to work using the rules of the help index. Although some may not be very clear, I don't understand going to extremes to test them at this point.

As long as they work using common sense coding practices, why worry about someone who is a lamebrain to begin with? Once again, no applause is necessary!

Ted



    
This message has been edited by burger2227 on Jan 8, 2008 4:50 PM

Posted on Jan 8, 2008, 3:53 PM

Respond to this message   

Return to Index


Because BASIC is BASIC ;-).

by (no login)

Not that I'm one of those, but remember that BASIC was invented so that the non scientific and non engineering community could make computers do things without scientific theories and hypothesis and big complex notions. It's what makes BASIC what it is and what makes QB as popular as it was and actually still is today.

Ignoring these quirks is not the way to go I honestly believe. Now if you're saying it's too early in the project to focus on the quirks, I still have to disagree (that's my professional advice) because adding these quirks after is gonna be hectic at best if done after it's one thing to add quirks to a 300 line project, it's another if you have to do the same in a 200,000 project, believe you me. Maybe each demo will be delayed right now by a day or a week but after the demo is released well we know it was done the right way.

What you're suggesting should be used if and only if there's no possible way in 32bits to achieve what the 16 bit QB does. Then you might think of making it follow the rules as described in the online help or manuals.

For example, in windows you can't call interrupt 10h (direct video) directly, in the command prompt's that's emulated. Now do we want him to thunk in a 16 bit ASM code in some way? or do we just want him to do (using what means windows API or SDL allows) mimic what QB does when you call an interrupt? That's just an example, LPRINT can be another. ;-). Along with a few others of course.

My two cents ;-).

Posted on Jan 8, 2008, 5:21 PM

Respond to this message   

Return to Index


I meant in the context of expected coding practices

by (Login burger2227)
R

EVERY command or function can be abused by somebody not familiar with some syntaxes. That will be the job of a compatable compiler/ide to figure out and that is not gonna be done for a while.

I realize that the code has to be tested and Galleon's findings are important in that regard. I like that he has been documenting acccidental findings also. But I would draw the line at stuff like trying to enter TIME$ = "00". The next thing I see is a post that you can do that in PDS. PDS is not even on the drawing board and as far as the added functions in it, I would rather see Galleon work on Qbasic stuff first.

It would be nice information for anybody who wishes to make the IDE/Compiler however.
I am sure bugs will be found by some of our more enthusiastic coders anyhow. :>)

Ted

Posted on Jan 9, 2008, 12:37 PM

Respond to this message   

Return to Index


Yeah there's a fine line between...

by Anonymous (no login)

What the languages allows one to do versus what the user can choose to do to get his job done. BASICs should allow one and the other coding practices, not enforce on or the other on the user. ;-)

But I do see what you're saying and in that context coding it once and coding it right I think is still the best approach. What defines the "coding it right" aspect of it I think galleon has the right approach on this. so how it should work, how it can work, what's allowed that shouldn't be etc...even if it was never used in coding the routine would still give him one awesome insight on what QB is really all about and ease his deciision making process on the "quirks" that should or should not be.

But like he said, 100% compatibility is a must, if it compiles in QB it should compile in QB64, and well that's the golden rule, the prime directive so to speak ;-). So if this is the QB64 path, then he might as well do it right and all the way. :-).

Posted on Jan 9, 2008, 12:45 PM

Respond to this message   

Return to Index


That was me above...

by (no login)

Not sure what happened, but I think this post is gonna have my name like it's supposed to. lol

Posted on Jan 9, 2008, 1:22 PM

Respond to this message   

Return to Index


that's what they said at fb.net

by mennonite (no login)

fb has basic syntax, (well, some of it) it's the quirks that make it so that no qbasic program works in fb.

keep in mind they think a cursor in screen 12 is a quirk. well you said we should use the help index as a standard. the help index says locate's full syntax is:

locate row,col,vis,start,finish

the last three have to do with the cursor. there's nothing about whether it works in screen 12 or not, that's the syntax for the locate statement. originally you were like, let's not add anything. now you're basically saying, let's not even bother with compatibility. do you think it would be a bad thing if it was more compatible?

you probably call things quirks other people will have to code around. if i say color 0,1:cls that clears the screen and makes it blue. otherwise i have to print 2000 spaces to the screen every time i use cls or my only option is a black background. galleon will be working on that "quirk" among many next. so tell me, what's a "quirk?," or does it mean what it means at fb.net? "a native feature we're too 1337 to care about"

Posted on Jan 8, 2008, 5:56 PM

Respond to this message   

Return to Index


The way I see it

by Iain (no login)

I haven't been around for a few months, so all this is new to me.

However, it seems to me that if a program that compiles with QB, say 4.5, then it should compile with this new version. Otherwise, what is the point?

I should be able to compile my slightly broken Enigma program and get the same weird output.

Posted on Jan 16, 2008, 1:44 PM

Respond to this message   

Return to Index


Some QB "quirks" are a very important part of QBASIC

by (no login)

I think it's important to make a distiction between bugs/errors in QBASIC vs specifics.

Take the TIME$="00" bug I quoted on the forum. That's a bug. I take the time to research each command and note any unexpected behaviour.

If I see the unexpected behaviour as a bug then I fix the bug in QB64. So QB64 allows TIME$="00"

If I see the unexpected behaviour as reasonable, like adding trailing "garbage" to the string passed to TIME$ eg. TIME$="01:01:01d[va\nmb3298sda" still working then I make sure QB64 can handle this in the same way too. Sometimes I take an ecentricity and make it more general so that it can be explained in a simple rule. So I've made QB64 also allows trailing "garbage" if only hours or hours&minutes are specified whereas QBASIC does not.

Recently I implemented the PAINT statement with its string tiling option. Because the QBASIC help documentation is vague and its behaviour very specific I opted for implementing it with 100% compatibility and 100% of the same restrictions.

My goal is to code it once and code it right. It may not be using the fastest possible C++ code (although I always try to make it very effecient) but it works the way it is supposed to. Having said this, I'm sure there will be little bugs to fix in Demo #5 when it is released, especially because so much has been added since Demo #4.

I agree with MystikShadows. Ignoring these quirks would only mean things have to be coded again. It would also mean that programmers wanting a 100% compatible version of QBASIC would be very disappointed, including me.

There's no point rushing QB64 and having it turn into something less than what it could have been,
Galleon

PS. I doubt Demo #6 will be anything more than improvements to the already implemented features of Demo #5!

Posted on Jan 8, 2008, 6:01 PM

Respond to this message   

Return to Index


* Looks good

by qbguy (no login)

Posted on Jan 8, 2008, 7:11 PM

Respond to this message   

Return to Index


QB compatability in FB 0.17

by Cheech (Login burger2227)
R

Here are portions of the compiler change log that specifically target QB compatibility related issues since the addition of "-lang qb" in version 0.17 through 0.18.4:

- added the -lang command-line option, to allow language compatibility without keeping FB from progress, see the migrating.txt file (v1c)
- lang qb: DATA should be allowed inside compound-statements (v1c)
- lang qb: MKI/CVI now return 16-bit sized results (counting_pine)
- lang qb: INTEGER (%) and LONG (&) are now, respectively, 16- and 32-bit wide (v1c)
- lang qb: default numeric literals are now assumed to be INTEGER or SINGLE (v1c)
- lang qb: symbols with the same name as keywords are now allowed: dim left as integer: const dim$ = "" etc (v1c)
- lang qb: all data types and functions/keywords not present in QuickBASIC were removed (v1c)
- lang qb: SLEEP(n) expects seconds (feature request #1718012) (jeffm)
- lang qb: INKEY$ returns CHR$(0) as the extended character (feature request #1718012) (jeffm)
- SCREEN now follows the QB syntax in -lang qb (v1c)
- RND is now 100% compatible with QB in -lang qb mode (patch written by counting_pine)
- ERASE is now compatible with QB, that is when ERASE is called on a variable-length array, the bounds information is reset in addition to the data being destroyed (cha0s)
- -lang qb now skips UDT alignment by default (cha0s)
- LOCATE will now accept a full 5 args to be compatible with QB, however the final 2 args have no effect (cha0s)
- STR will now pad positive numbers with a single space, as in QB, but ONLY if -lang qb is used (cha0s)
- OPEN now is more compatible with QB, the file/device is parsed at runtime (cha0s)
- fixed #1790722 - INPUT wasn't prompting with a '?' if no prompt string was given (cha0s)
- lang qb: STICK(n) and STRIG(n) functions (jeffm)
- added error when NEXT var does not match FOR var (jeffm)
- added First version of COM/serial support for DOS, W.I.P. (jeffm)
- cursor support for INPUT/LINE INPUT in GFX modes (v1c)
- 'PCOPY [srcPg] [, dstPg]' and 'SCREEN [, activePg] [, visiblePg]' for non-graphic, console, screen 0 mode - for DOS and Windows only (v1c)



    
This message has been edited by burger2227 on Jan 8, 2008 3:36 PM

Posted on Jan 8, 2008, 1:50 PM

Respond to this message   

Return to Index


QB compatability in FB 0.19

by mennonite (no login)

what are we being flamed/trolled/"ignored"/banned about today?

Posted on Jan 8, 2008, 3:30 PM

Respond to this message   

Return to Index


This is the QB64 forum Cheech! Don't bother posting here again!

by (no login)

Who cares what exact features they've changed in FB to try and make it more compatible with QBASIC? I always keep a copy of the latest version of FB on my computer just to test it and despite some improvements (with the -lang QB option) it will never even come close to the level of compatibility QB64 offers.

Posted on Jan 8, 2008, 5:37 PM

Respond to this message   

Return to Index


*new bug, demo 4: q$="$dynamic"

by mennonite (no login)

Posted on Jan 7, 2008, 9:02 AM

Respond to this message   

Return to Index


*it's ok if it doesn't start with $, workaround is "$"+"dynamic"

by mennonite (no login)

Posted on Jan 7, 2008, 9:15 AM

Respond to this message   

Return to Index


* Dammit Menn! Quit answering your own questions!

by (Login burger2227)
R

Posted on Jan 7, 2008, 9:45 AM

Respond to this message   

Return to Index


*pt1=bug report, pt2=workaround if found

by mennonite (no login)

Posted on Jan 7, 2008, 10:08 AM

Respond to this message   

Return to Index


*your compiler stops at chr$(26) but that's probably 7.1,!=resolved until it self compiles

by mennonite (no login)

Posted on Jan 7, 2008, 10:06 AM

Respond to this message   

Return to Index


*also chr$(250)

by mennonite (no login)

Posted on Jan 7, 2008, 10:09 AM

Respond to this message   

Return to Index


I don't know what the big fuss is about QB64, anyawy. We had Atari64 over 25 years ago!

by SOD (Login The-Universe)
Admin

So how hard can doing this really be?

SOD - Either that's DOS written backwards or Stupid Old Dude, take your pick.

----------------------

Kiddig aside, good luck with your current release. I'm looking forward to testing some WP apps on it when the time comes.

Pete

Posted on Jan 6, 2008, 11:14 AM

Respond to this message   

Return to Index


* I thought you were burnt out oldgeezer!

by (Login burger2227)
R

Posted on Jan 6, 2008, 11:35 AM

Respond to this message   

Return to Index


* You ought to call it 640K -- then no one can complain!

by Bill Gates (no login)

Posted on Jan 7, 2008, 10:31 AM

Respond to this message   

Return to Index


Useless Screen Saver for QB64 Demo #5

by qbguy (no login)

REM THIS PROGRAM IS IN T3H PUBLIC DOMAIN

SCREEN 12
LINE (0, 0)-(640, 480), 15, BF
DO
X = INT(RND(1) * 640)
Y = INT(RND(1) * 480)
Z = INT(RND(1) * 50) + 10
COLOUR = INT(RND(1) * 14) + 1
COLOR COLOUR
CIRCLE (X, Y), Z, COLOUR
PAINT (X, Y), COLOUR
IF INKEY$ = CHR$(27) THEN EXIT DO
LOOP

Posted on Jan 6, 2008, 8:15 AM

Respond to this message   

Return to Index


*the would really be better than t3h

by mennonite (no login)

Posted on Jan 6, 2008, 10:56 AM

Respond to this message   

Return to Index


The PAINT statement has been fully coded!

by (no login)

Here's a screenshot of using the PAINT statement to tile a circle with the 8x8 image of the letter A. The source for this program can be found in my post about research on the PAINT statement. QB64's PAINT statement is 100% compatible with QBASIC's (just as it should be).

http://img221.imageshack.us/img221/6649/paintcx7.png

Whilst coding this routine I often had "wouldn't it be good if I allowed it to..." such as being about to accept more than 64 vertical rows for the tile and/or having it loop around after the bottom of the screen and become a second horizontal row. I opted against this and went for a 100% pure implementation of the PAINT statement with all its restrictions. In all honesty, the tiling feature is extremely difficult to use and the people who created BASIC should have either left it out or designed it better. QB64 may eventually have an easier to use paint tiler but it'd be included as a separate function.

Posted on Jan 6, 2008, 3:43 AM

Respond to this message   

Return to Index


This may be a good idea

by (Login Tusike)

I'm sure many people have wanted to paint something in that had many different colors on it's border. PAINT only looks at one color as the border.

RRRRRRRGGGGGGGBBBB
WRRRRRRRRRRRRRRRRR
W0000000000000000R
W0000000000000000R
W0000000000000000R
W0000000000000000R
WRRGGBBBBBBBBBBBBR

Let's say I wanted to PAINT all the 0's to (Y)ellow. I wouldn't be able to do that using PAINT, since the border consists of 4 colors (Red, White, Green and Blue). I think something like this may be useful:

PAINT (5, 5), 14, 4 'this would paint everything yellow until it reaches the border color, 4

NOT PAINT (5, 5), 14, 0 'this would paint only color 0's, and everything else would be the border.


Sorry if I'm posting too many ideas for new features that I think qb64 should have. The main goal is to get it working like Qbasic after all.

-Tusike

Posted on Jan 6, 2008, 4:50 AM

Respond to this message   

Return to Index


oh yeah, qb64 ought to have a new paint

by mennonite (no login)

i mean here's what paint means everywhere else:

paint (x,y),c 'fill every adjacent pixel that is the color found at x,y before fill

and here's what it is in basic:

paint (x,y),c 'fill every adjacent pixel and don't stop until you reach a border of color ?

but i respect that you stayed compatible. i would happily use _this to use a real paint routine. nice work.

Posted on Jan 6, 2008, 11:00 AM

Respond to this message   

Return to Index


Just let him get it finished first....

by Pete (Login The-Universe)
Admin

We can paint it later. Maybe we'll take it to Earl Scheib. He'll paint any app for only 39.95... RRRRight!

Pete



    
This message has been edited by The-Universe on Jan 6, 2008 12:21 PM

Posted on Jan 6, 2008, 11:07 AM

Respond to this message   

Return to Index


i didn't mean now

by mennonite (no login)

the first rule of qb64 is qb64 will be compatible with qb.
the second rule of qb64 is qb64 will be compatible with qb.

no one understands that more than i do, it's the thing that makes qb64 special.
but we can still talk about the future of it, and he already planned to add to it, i think the fewer promises galleon makes about ideas irrelevant to qb the easier it will be for him to do what he's trying to do. we can still talk about other features, as long as we remember the first two rules of qb64.

Posted on Jan 6, 2008, 11:23 AM

Respond to this message   

Return to Index


* I completely agree.

by Pete (Login The-Universe)
Admin

Posted on Jan 6, 2008, 11:36 AM

Respond to this message   

Return to Index


*Make up a wish list for now, like I am doing.

by (Login burger2227)
R

Posted on Jan 6, 2008, 11:39 AM

Respond to this message   

Return to Index


oh i've got plenty of ideas, ted

by mennonite (no login)

for the same reason pete thinks we should go easy on those, i already try. i'm not talking about every idea i have for qb64, because i don't think it's the right time to talk about all of them.

but i do think it's the right time to talk about some of them, particularly when a feature like paint comes up, and, tusike already mentions it. then i agree with him, and might even talk a moment about it.

Posted on Jan 6, 2008, 11:50 AM

Respond to this message   

Return to Index


and since qb64 is basic, my own posts will also take these into account:

by mennonite (no login)


1. Be easy for beginners to use.

2. Be a general-purpose programming language.

to me this means not just for cgiscripts, and not just for gaming, but you could make a gaming language based on basic, at least give it a name like "gamebasic" (someone already did)

3. Allow advanced features to be added for experts (while keeping the language simple for beginners).

4. Be interactive.

gwbasic and qbasic are interactive, i'm not certain this excludes compilers, but it's an interesting idea that would at least suggest an ide is always a good idea.

5. Provide clear and friendly error messages.

6. Respond quickly for small programs.

7. Not to require an understanding of computer hardware.

8. Shield the user from the operating system.

of course there are some things in basic meant to give the user access to the operating system. shell is one example, it lets the user give commands directly to the os. another is asm. however with these exceptions, i see basic as a language that ordinarily does not require any knowledge of the operating system. see the third principle if i'm unclear.

it was myst that introduced me to these, amd alluded to them in his article in qbe #19. you can find this list at http://en.wikipedia.org/wiki/Basic_%28computer_language%29#History

Posted on Jan 6, 2008, 11:45 AM

Respond to this message   

Return to Index


*and, not amd, see me in my office!

by spelling principle (no login)

Posted on Jan 6, 2008, 11:48 AM

Respond to this message   

Return to Index


*It's Principal, not principle [wrong word]... You're on suspension, rookie!

by Chief of Spelling Police (Login The-Universe)
Admin



    
This message has been edited by The-Universe on Jan 6, 2008 12:25 PM

Posted on Jan 6, 2008, 12:24 PM

Respond to this message   

Return to Index


*that's alright son, we'll take it from here.

by context police (no login)

Posted on Jan 7, 2008, 3:26 AM

Respond to this message   

Return to Index


Talk about luck!

by (Login burger2227)
R

In 1975, MITS released Altair BASIC, developed by college drop-outs Bill Gates and Paul Allen as the company Micro-Soft (who started today's corporate giant, Microsoft). The first Altair version was co-written by Gates, Allen and Monte Davidoff in a burst of enthusiasm and neglect of studies. Versions of Microsoft BASIC (also known then, and most widely as M BASIC or MBASIC) was soon bundled with the original floppy disk-based IBM-PC computers. Eventually tens-of-thousands of copies and variants were in use because of the success of the IBM-PC. Because of the portability factor, it also became one of the standard languages on the Apple II, which was based on a different microprocessor, the 6502 MPU. By 1979, Microsoft was talking with several microcomputer vendors, including IBM, about licensing a BASIC interpreter for their computers. A version was included in the IBM PC ROM chips and as a result, PCs without floppy disks automatically booted into BASIC just like many other small computers.

Newer companies attempted to follow the successes of MITS, IMSAI, North Star and Apple, thus creating a home computer industry. Meanwhile, BASIC became a standard feature of all but a very few home computers. Most came with a BASIC interpreter in ROM, thus avoiding the problems with not having (or being able to afford) a disk. Soon there were millions of machines running BASIC variants around the world. This was likely a far greater number than all the users of all other languages put together at that time.

How soon Bill forgets! Eventually fewer people got involved as Windows no longer required a knowledge of DOS programming and M$ is now trying to get money from the programmers that are left. VB.NET can cost over $1000 easily!

Ted



    
This message has been edited by burger2227 on Jan 6, 2008 12:20 PM

Posted on Jan 6, 2008, 12:13 PM

Respond to this message   

Return to Index


Personally, I welcome any FB programmers!

by (no login)

As long as they respect that this forum is about QBASIC and QB64. It is inevitable that programmers will mention the names of programming languages they often use or have used. The context of their mention should be constructive and any criticisms of QB64 made by comparing the two should only be made if their goal is constructive to QB64's development.

Comments like "QB64 is dumb because it doesn't have subs or functions yet" are nonconstructive and unwelcome. Comments that either promote or link to another site to promote it without my prior permission are also unwelcome. If you want to "flame" QB64 do it somewhere else. If you come here to create ill will towards those who are enthusiastic about QB64 you are also not welcome here.

Galleon

PS. Everyone gets a bit edgy when they perceive QB64 as being unduly criticized, especially as it is at such an early stage of development. I can take constructive criticism, even when I don't necessarily agree with someone's point of view I try and appreciate where they are coming from. Don't expect me to enter a "flame war", as I don't approve of adding fuel to fires. I also apologize for some posts which I will not/have not responded to where I feel the answer should have been obvious. I also refrain from continuing to reply to posts from people if I have given them my point of view on a topic and my opinion has not changed.

Posted on Jan 5, 2008, 2:12 AM

Respond to this message   

Return to Index


That's like asking for a 3.14 right in the face...

by The Rock (Login The-Universe)
Admin

But that's OK, The Rock likes Pi. :)

Pete

Posted on Jan 5, 2008, 11:46 AM

Respond to this message   

Return to Index


That's a good attitude to have, Galleon

by (no login)

Any user is a good user, end of story. The attitude expressed by some of the people on this forum is similar to the two signs the US now has on the border with Mexico: "Keep Out!" and "Help Wanted".

I hope you're not implying that I insulted QB64 for not having function support, because I did not. I had previously said that it is brainless to add (and it is, or at least it is when you're converting BASIC to C). At the time, I had absolutely no interest in supporting your compiler. However, I am rather unpredictable, and what I will or will not support can change, unlike most humans who set their issues in stone and refuse to budge. I offer my support for QB64, and since I do have a lot of previous experience in compiler design, I will offer you any assistance you might need in bringing QB64 to maturity. I extended the same hand of help to the FB team back in the day, and for all intents and purposes, had it slapped away. That's one of the reasons I developed BSDBASIC and NeoQB. But I digress.

I think QB64 has a future, but you're going to have to keep your admirers under control if you want that future protected. A project's community can bury that project long before the project is usable; it happens all the time on sourceforge.

Posted on Jan 5, 2008, 12:23 PM

Respond to this message   

Return to Index


If you want to help act like it! Quit flaming the people here!

by (Login burger2227)
R

The duck likes 4 * ATN(1#) for accuracy!

Good idea Galleon, make a Pi function.

Ted

Posted on Jan 5, 2008, 1:14 PM

Respond to this message   

Return to Index


OK

by (Login dean.menezes)
R

FUNCTION PI()
  PRINT "   3.141592"
  PRINT "  653589793"
  PRINT " 23    84"
  PRINT "6 2    64"
  PRINT "  3    38"
  PRINT "  3    27"
  PRINT "  9    50 2"
  PRINT "8 8    4197"
  PRINT " 16     93  QB64"
  PI=3.14159265358979323846264338419716939937510
END FUNCTION

#define _ -F<00||--F-OO--;
 int F=00,OO=00;main(){F_OO();printf("%1.3f\n",4.*-F/OO/OO);}F_OO()
 {
             _-_-_-_
        _-_-_-_-_-_-_-_-_
     _-_-_-_-_-_-_-_-_-_-_-_
   _-_-_-_-_-_-_-_-_-_-_-_-_-_
  _-_-_-_-_-_-_-_-_-_-_-_-_-_-_
  _-_-_-_-_-_-_-_-_-_-_-_-_-_-_
 _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
 _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
 _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
 _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
  _-_-_-_-_-_-_-_-_-_-_-_-_-_-_
  _-_-_-_-_-_-_-_-_-_-_-_-_-_-_
   _-_-_-_-_-_-_-_-_-_-_-_-_-_
     _-_-_-_-_-_-_-_-_-_-_-_
         _-_-_-_-_-_-_-_
             _-_-_-_
 }

char
    _3141592654[3141
  ],__3141[3141];_314159[31415],_3141[31415];main(){register char*
      _3_141,*_3_1415, *_3__1415; register int _314,_31415,__31415,*_31,
    _3_14159,__3_1415;*_3141592654=__31415=2,_3141592654[0][_3141592654
   -1]=1[__3141]=5;__3_1415=1;do{_3_14159=_314=0,__31415++;for( _31415
  =0;_31415<(3,14-4)*__31415;_31415++)_31415[_3141]=_314159[_31415]= -
1;_3141[*_314159=_3_14159]=_314;_3_141=_3141592654+__3_1415;_3_1415=
__3_1415    +__3141;for (_31415 = 3141-
   __3_1415  ; _31415;_31415--
   ,_3_141 ++, _3_1415++){_314
   +=_314<<2 ; _314<<=1;_314+=
  *_3_1415;_31  =_314159+_314;
  if(!(*_31+1)  )* _31 =_314 /
  __31415,_314  [_3141]=_314 %
  __31415 ;* (  _3__1415=_3_141
 )+= *_3_1415   = *_31;while(*
 _3__1415 >=   31415/3141 ) *
 _3__1415+= -   10,(*--_3__1415
)++;_314=_314   [_3141]; if ( !
_3_14159 && *   _3_1415)_3_14159
=1,__3_1415 =   3141-_31415;}if(
_314+(__31415    >>1)>=__31415 )
while ( ++ *    _3_141==3141/314
       )*_3_141--=0    ;}while(_3_14159
       ) ; { char *    __3_14= "3.1415";
       write((3,1),    (--*__3_14,__3_14
       ),(_3_14159     ++,++_3_14159))+
      3.1415926; }     for ( _31415 = 1;
     _31415<3141-     1;_31415++)write(
    31415% 314-(     3,14),_3141592654[
  _31415    ] +    "0123456789","314"
  [ 3]+1)-_314;    puts((*_3141592654=0
,_3141592654))     ;_314= *"3.141592";}



    
This message has been edited by dean.menezes on Jan 5, 2008 1:30 PM

Posted on Jan 5, 2008, 1:29 PM

Respond to this message   

Return to Index


* This forum needs formatted text

by qbguy (no login)

Posted on Jan 5, 2008, 1:35 PM

Respond to this message   

Return to Index


* shell "cmd /c start www.piday.org/million.php"

by qbguy (no login)

Posted on Jan 5, 2008, 3:06 PM

Respond to this message   

Return to Index


* Or shell "start www.piday.org/million.php" on WIN98 OR LOWER!!!

by qbguy (no login)

Posted on Jan 5, 2008, 3:06 PM

Respond to this message   

Return to Index


*<insane>That's my favorite site of every year! I'm not kidding either...</insane>

by rpgfan3233 (no login)

Posted on Jan 8, 2008, 8:44 PM

Respond to this message   

Return to Index


Follow your own advice, eh?

by (no login)

I've seen you flaming plenty of people, so for you to tell someone else to stop flaming people is a bit of ironic hypocrisy. Fortunately, I haven't seen you flame anyone recently. Maybe you're changing for the better. Here's hoping.

Posted on Jan 5, 2008, 3:36 PM

Respond to this message   

Return to Index


I need help RE: the last parameter in the PAINT statement

by (no login)

I'll try and solve this myself tonight but...
PAINT (x,y),[color|patternstring],[backgroundcolor],[maskstring]

patternstring was difficult enough for me to investigate but I've got in figured out except for 4 color modes. maskstring has me totally baffled but I haven't investigated it enough yet.

Anyone an expert on this...?

Thanks,
Galleon

PS. In all honestly I didn't know PAINT accepted string parameters until yesterday! If you don't know what I'm talking about try this...
SCREEN 13
PAINT (0,0),"ABCDEFGHIJKLMNOPQRSTUVWXYZ" 'taste the stripy rainbow!

Posted on Jan 4, 2008, 2:02 AM

Respond to this message   

Return to Index


Interesting -----^^0^^

by (Premier Login iorr5t)
Forum Owner

I note that CLS is required before every PAINT that is to be honored.

Mac

SCREEN 13
FOR i = 1 TO 26
PAINT (0, 0), LEFT$("ABCDEFGHIJKLMNOPQRSTUVWXYZ", i)
SELECT CASE INPUT$(1)
CASE "c", "C": CLS
CASE CHR$(27): EXIT FOR
END SELECT
NEXT i
SYSTEM


QBasic rules.

Posted on Jan 4, 2008, 2:42 AM

Respond to this message   

Return to Index


Research on PAINT statement complete! (valuable QBASIC info here +examples)

by (no login)

I've spent (wasted?) a good number of hours investigating string arguments for the PAINT statement and am confident I have understood how it works.

(x,y),[color|patternstring],[backgroundcolor],[maskstring]
Important points:

The patternstring contains bit-data identical to that stored by a graphics GET statment of an image to tile whilst painting, just without the width or height specified. The width depends on the screen mode:
256 color modes: width 1 pixel
16 color modes: width 8 pixels
4 color modes: width 4 pixels
2 color modes: width 8 pixels
The height of the tile depends on how many pixels worth of data are represented in the string.

Example #1:
SCREEN 7
PRINT "A"
DIM a(1 TO 18) AS INTEGER
GET (0, 0)-(7, 7), a(1)
FOR i = 3 TO 18
p$ = p$ + MKI$(a(i))
NEXT
CIRCLE (160, 100), 80
PAINT (160, 100), p$

There are some catches that apply when tile painting:
1. If you don't specify the background color, it is white or whatever you have selected as the current QBASIC color. The tiling will ALWAYS stop at this color and you cannot override this.
2. There is another reason why tiling can stop. It stops IF THE PIXEL IT WILL SET IS ALREADY THE COLOR IT WILL SET IT TO. This only applies to tile painting!

The mask-string effectively specifies only 1 single colour despite storing its data in a string containing what could potentially be 100s of pixels (I have tried many ways to prove this fact wrong!). If it gets to a pixel of this color on the screen it WILL SKIP CHECK 2 mentioned above for that particular pixel but still perform check 1.
Specifying this color varies depending on the screen mode:
256 color modes: m$=CHR$(maskcolor)
16 color modes:
m$=""
if maskcolor&1 then m$=m$+CHR$(255) else m$=m$+CHR$(0)
if maskcolor&2 then m$=m$+CHR$(255) else m$=m$+CHR$(0)
if maskcolor&4 then m$=m$+CHR$(255) else m$=m$+CHR$(0)
if maskcolor&8 then m$=m$+CHR$(255) else m$=m$+CHR$(0)
4 color modes:
if maskcolor=0 then m$=CHR$(0)
if maskcolor=1 then m$=CHR$(128+32+8+2)
if maskcolor=2 then m$=CHR$(64+16+4+1)
if maskcolor=3 then m$=CHR$(255)
2 color modes:
if maskcolor=0 then m$=CHR$(0)
if maskcolor=1 then m$=CHR$(255)

Example #2:
SCREEN 13
PAINT (160, 100), CHR$(1) + CHR$(2), 15
PRINT "The pattern"
DO: LOOP WHILE INKEY$ = ""
CLS
LINE (0, 50)-(319, 50), 1
PRINT "A line"
DO: LOOP WHILE INKEY$ = ""
PAINT (160, 100), CHR$(1) + CHR$(2), 15
PRINT "The pattern is blocked by the line even though the border color is white because the destination pixel was already the color the pattern would have set it to!"
DO: LOOP WHILE INKEY$ = ""
CLS
LINE (0, 50)-(319, 50), 1
PRINT "The same line"
DO: LOOP WHILE INKEY$ = ""
PAINT (160, 100), CHR$(1) + CHR$(2), 15, CHR$(1)
PRINT "The pattern was able to paint over the blue line and continue because a background string was specified!"

I hoped this helped someone. To my knowledge this is the only post on the net where you can find any technical information about the background string.

Cheers,
Galleon

Posted on Jan 4, 2008, 5:46 AM

Respond to this message   

Return to Index


I could have told you that!

by Earthborn (no login)

This is fairly common knowledge for people who ever read a GWBasic manual when CGA resolutions were the rage. It was primarily used to fill stuff with patterns on monochrome screen resolutions.

Here is a good description of how it works:
http://www.ojodepez-fanzine.net/network/qbdl/GW-MAN/PAINT.html (thanks to the GWBASIC user's manual: http://www.ojodepez-fanzine.net/network/qbdl/GW-MAN/PAINT.html)

Still striving to get QB64 to respond exactly the same as QBasic? Read this:
http://support.microsoft.com/kb/79046

Posted on Jan 4, 2008, 1:26 PM

Respond to this message   

Return to Index


Thank you very much Earthborn!

by (no login)

I already knew about the Microsoft link to the problem which causes an error and other Microsoft pages about the PAINT statement.

I didn't know about the gwbasic site's information about the PAINT statement. It's by far the best description (however still not nearly as clear as it could be) of how the background string works that I've found. Although it didn't give me any new information as such, it clarified a lot of my research. I'm surprised I was able to deduce as much as I have correctly purely through investigation. I'm particularly happy it validated my observations that the background string only really defines one color.

One statement in the gwbasic site's info still baffles me:
"You cannot specify more than two consecutive bytes in the tile string that match the background attribute. Specifying more than two results in an "Illegal function call" error."
I can understand what they are saying and can make this error happen but my question is WHY this should cause an error? Any ideas?

Thanks again,
Galleon

PS. Now I can actually begin coding again!

Posted on Jan 5, 2008, 1:39 AM

Respond to this message   

Return to Index


Any plans for an IDE?

by (no login)

Probably already been mentioned before, but what are the plans, if any, for an official IDE?

Posted on Jan 3, 2008, 6:35 PM

Respond to this message   

Return to Index


You see that's the beauty of it; we already have one.

by Pete (no login)

It's called QB 1.1, 4.5, or PDS. All run in Vista. When you are 100% QB compatible, you don't need an new IDE. I can run up to 300K programs in the 4.5 IDE, just fine. If anyone makes single programs larger than that, then they would have to write it in a different editor. Either way, all code would have to be saved and compiled from the command line or an easy to program QB64 compiler utility.

Pete

Posted on Jan 3, 2008, 7:29 PM

Respond to this message   

Return to Index


*you've gotta be kidding

by mennonite (no login)

Posted on Jan 3, 2008, 8:13 PM

Respond to this message   

Return to Index


Well, that's not so bad

by (no login)

although a proper implementation wouldn't hurt either. Not everyone's going to want to use that clunky old blue-screen-of-slowness and are going to want a more modern IDE made for their OS of choice.

Posted on Jan 3, 2008, 8:45 PM

Respond to this message   

Return to Index


oh i like the look

by mennonite (no login)

i like the one in freepascal, too. but the idea of qb64 is to run where qb can't, right? i would like to see qb64 running in a variety of ide's but come with a native one very similar to qbasic. being interactive is actually one of the things that makes basic basic, but the ide is the smallest of the important issues, in my opinion. to other people it matters more. i'm also looking forward to qb64 being less limited than qbasic, but i think compatibility should be the first issue.

Posted on Jan 3, 2008, 9:10 PM

Respond to this message   

Return to Index


Not kidding...

by Pete (no login)

And if I was Galleon with my finished compiler, I'd tell the first person who asked: Hey, where's the IDE? To take his keyboard, turn it sideways, and I'm sure you know the rest. Getting the compiler is a must. Getting an IDE would be a neat project for someone else to do, unless Galleon feels he is up to it. Until then, I'll use the QB IDE and compile my programs from the command line or use one of my command line SHELL routines to compile my programs in QB64. That is if I code in QuickBasic, QB64, or any other language in the near or distant future.

Pete

Posted on Jan 3, 2008, 9:16 PM

Respond to this message   

Return to Index


"where's the ide" is a valid question, though

by mennonite (no login)

qbasic just wouldn't be qbasic without "run."

hell, even rom basic for the pcjr had that. you and i have both been doing this for more than 20 years, but you've forgotton what it's like to learn basic, and sound like one of the guys at fb.net. even nek posted something more open minded, although i figure he doesn't think it's a requirement either. oh i could make something that was suitable for my own use in qb64 or even dos batch if there was no ide, but there's a reason people ask.

Posted on Jan 3, 2008, 9:37 PM

Respond to this message   

Return to Index


and as far as criticism from eponasoft goes

by mennonite (no login)

i'm glad someone fairly reasonable is here to offer intelligent criticism. i may only agree with some of the conclusions he reaches, and some of his arguments, but there are probably a few things we can learn from him, and even from fb, even if i think fb will likely have more to learn from qb64.

then again i think eponasoft probably underestimates galleon. i think a number of people are telling him things he already knows, but i'm willing to also. i also don't have the galleon=god thing that many people have for v1c. so far though, galleon is pretty awesome. as i mentioned, i was feeling the way you were, until i tried qb64. it's already fun.

Posted on Jan 3, 2008, 9:56 PM

Respond to this message   

Return to Index


Everyone's a critic :-)

by (no login)

I don't underestimate Galleon (it's against my philosophies to underestimate a fellow programmer), but I'm afraid he's underestimating the level of work he's getting himself into. It's great to have ambition, but ambition isn't enough; it has to be backed up with the means of bringing those ambitions to fruition. A compiler is a *massive* project that requires a high level of technical ability, especially if you're trying to develop one on-par with a Microsoft effort.

As far as the Galleon vs v1c "who is god" thing...well, I see it in both places (fb.net and here), and it irritates me equally in both places. That's why I rarely post at fb.net, and that's why I have a major problem with the ass-kissing here.

QB64 won't be "fun" for me until it gets some basic (pun unintentional) features that it should already have; I think I've mentioned what they are enough times. And even then, coding for me is all business; the fun is only in the finished product.

By the way...don't count on the FB developers learning much from QB64. Remember that 100% QB compatibility is the goal of THIS project, not theirs. However, expect some fierce competition from them in the coming months; the FB project has several highly skilled developers working on it, all with past experience. While I didn't originally think a real competition would break out between the two, now it seems inevitable. Galleon's going to need help eventually, and not in the form of parrots and zealots spamming up other forums.

Posted on Jan 4, 2008, 12:09 AM

Respond to this message   

Return to Index


But parrots are fun... They can bite your worst enemy's fingers off!

by rpgfan3233 (no login)

On a more serious note, Galleon <> "God" as far as I'm concerned. However, I do agree that he has chosen a very difficult project. Considering the fact that he is working on it himself, only using others as bug testers and the like, I'd say that he's pretty far along already. I'm no suck-up, but I do congratulate someone when they deserve it, even if I get a bit too enthusiastic. ^_^

Okay! Back off-topic! Who knew that one could represent so many emotions just by typing them, using text to create smilies or to shape the mood of the words like a story? ^_^

Go, Kirbies!
(>^.^)><(^.^)><(^.^<)

Posted on Jan 4, 2008, 1:16 AM

Respond to this message   

Return to Index


long reply about people and crap like that (*url)

by mennonite (no login)

this was meant to be a few paragraphs, i ended up writing more. i'm certainly not going to try to make anyone go here: http://www.network54.com/Forum/183705/message/1199448642

Posted on Jan 4, 2008, 4:11 AM

Respond to this message   

Return to Index


RE: IDE for QB64

by (no login)

IDE or DIE? That is the question...
===================================

1. QB64 will need an IDE
2. There is no point having an IDE until the compiler is primarily complete.
3. There are benefits in regards to instant debugging info without noisy file access and the ability to update the IDE as the compiler develops easily by having the IDE as a program written in QB64 as a MODULE which COMPILE.BAS could optionally be compiled with to create an integrated IDE such in QBASIC. If I write an IDE, it would be of this type.
4. Nothing is stopping anyone else from writing an IDE for QB64. If it's good, I'll include in on the official QB64 site (which doesn't exist yet).

Posted on Jan 4, 2008, 1:48 AM

Respond to this message   

Return to Index


*that's basically what i figured

by mennonite (no login)

Posted on Jan 4, 2008, 4:26 AM

Respond to this message   

Return to Index


*The IDE would be a lot easier with documentation about comiler

by (Login burger2227)
R

Posted on Jan 9, 2008, 1:37 PM

Respond to this message   

Return to Index


What do you plan to add beside all QB commands?

by (Login Tusike)

I mean are you going to have a function for loading bmps or midi files, or the mouse? And what will the highest screen resolution possible be, 640 * 480 or higher?

I got interested in this project.

-Tusike

Posted on Jan 3, 2008, 8:42 AM

Respond to this message   

Return to Index


* The current plans are to just get QB commands working. Extras can be worked in later.

by Do you know the Plan9 Man? (no login)

Posted on Jan 3, 2008, 11:11 AM

Respond to this message   

Return to Index


*I thought so

by (Login Tusike)

*

Posted on Jan 3, 2008, 11:15 AM

Respond to this message   

Return to Index


* If it works in the OS, it will be a lot better than DOS emulation

by (Login burger2227)
R

Posted on Jan 3, 2008, 3:45 PM

Respond to this message   

Return to Index


* Hey, you have to code something yourself !

by (Login burger2227)
R

Posted on Jan 3, 2008, 4:54 PM

Respond to this message   

Return to Index


*Any ideas? What should I code, if I can?

by (Login Tusike)

*

Posted on Jan 4, 2008, 9:38 AM

Respond to this message   

Return to Index


Hrm

by (no login)

The intention is true QBASIC compatibility, which means 640x480 would be supported with 16 colors (SCREEN 12). That's the best you're going to get for hi-res natively. On a more personal note though, I'd hate to see MIDI supported unless someone had plans to use it for its intended purpose: MIDI hardware. Besides, there are always libraries that can be used for music playback, such as Bass, FMOD, dumb, mikmod, etc. Once QBASIC is fully implemented (harder than it sounds), I just hope Galleon has the foresight to allow external libraries to be linked in (this won't be hard whatsoever, a mere afterthought even...it's really *that simple*, and I speak from experience). The icing on the cake would be full support for OOP libraries; I'm personally longing for a BASIC compiler that can handle Irrlicht natively without getting stupid (*cough* DarkBasic). Since QB64 compiles to C++, this shouldn't be a problem down the road.

Once QB64 has proper function support (why it doesn't yet is beyond me), I'm going to write some QB lib remappers for people who might want to port old QB games. Since there's no way in hell QB64 is ever going to be able to support things like DirectQB natively, a library to remap its functions would be in order. That way, people could recompile their lib-laden QB games in QB64 without a hitch. I've already got a working prototype of a GDM playback library for Windows that could also be easily ported to *nix.

Posted on Jan 3, 2008, 6:11 PM

Respond to this message   

Return to Index


Compatability would not limit screen colors to 16

by (Login burger2227)
R

I see no reason why SCREEN 12 or any other screen mode would only be able to use just 16 colors. If more colors are made available, old code would still be compatable and new code could do much more.
SCREEN 13 uses the same first 16 colors after all.

Compatability just means that any new functions will be under different names when they are added.

Ted



    
This message has been edited by burger2227 on Jan 3, 2008 10:14 PM

Posted on Jan 3, 2008, 10:11 PM

Respond to this message   

Return to Index


Sure it would

by (no login)

If you try assigning more colors in a mode that doesn't support it, you get an ILLEGAL FUNCTION CALL. Go ahead and give it a try; do a SCREEN 12 and then do something like PALETTE 19, 2 and tell me what you get. You would have to write new code to take advantage of new features anyways, which means that the core functionality of SCREEN would have to change by either taking on additional parameters or adopting new screen modes. SCREEN 12 *can never support more than 16 colors* when implemented 100% accurately to QBASIC's limitations. It's a hard fact. Using a 640x480 graphics mode in more than 16 colors is no longer SCREEN 12.

Posted on Jan 3, 2008, 11:50 PM

Respond to this message   

Return to Index


limits vs. incompatibility

by mennonite (no login)

there are times when extending the limits of something makes it incompatible, and generally i'm in favor of using new statements to extend what a language can do, so long as it doesn't keep existing code from working.

i can easily imagine code that could have a problem if mid$() suddenly accepted negative variables, a lot more easily than i can imagine it being a problem if you can now color 47 in screen 12. or what if you could color screen 47, 250? in screen 12, background colors are not accepted.

by the way, color 19 is a color in screen 0, but i'm not absolutely sure that you can use palette on it. i should actually say it's an attribute, it's color 3 blinking.

in screen 12, if you use a color past 15, you get white or black. a program that would use that would suddenly find it is showing more colors, so you're right. but within reason, it's possible to extend the language and be compatible enough, although people should be too careful. it's a lot more possible than if you try to rewrite the language before it's implemented, or consider extending the language (or feature requests) more important than the first goal of the project.

i think qb64 will be closer to 100% than freebasic, because that's the first goal of the project. it will be 99% at most, but it matters which 99%. it's clear that galleon understands priorities, but you're right to warn him. if you look at my post about mid$ and space$ i did too. no one should really use the number 100%, ever, but we do- because it's what some of us are aiming for. can you extend and also aim for 100%? oh sure. absolutely, even if it means you won't get there. but compatibility is still *the* thing, not lack of features. you're right that it's a compromise. hopefully qb64 will have the right 99% mix, and never stray below 98, or deprecate compatibility.

Posted on Jan 4, 2008, 5:14 AM

Respond to this message   

Return to Index


and if that's not close enough

by mennonite (no login)

then he always has the option of creating _color and _palette and _screen

i found another project that uses his naming scheme, there was some code on the autoit forum that uses _playsound, a custom routine. playsound is a routine that exists native to autoit or an extension that _playsound uses. of course i think rather than add more colors in screen 12 or 13, galleon should just make a screen 14 and 15. i used to use a loop, error handling, and screen variable to find which screen modes were available in qb.

Posted on Jan 4, 2008, 5:19 AM

Respond to this message   

Return to Index


SCREEN extension

by (no login)

What I had suggested to v1ctor in the early days of FB was to extend SCREEN to include VESA modes. Seems no one liked my idea very much though, but it made perfect sense to me since I had already been using VESA in pure QB for ages. In any event, here's a list of the available VESA modes:

http://en.wikipedia.org/wiki/VESA_BIOS_Extensions

By the way, my PALETTE example would set palette index 19 to RGB(2,0,0) (remember that SCREEN 12 is a VGA mode, therefore uses RGB rules [B<<16 + G<<8 + R] rather than the built-in 16 color palette). In SCREEN 12, this generates an ILLEGAL FUNCTION CALL. It works fine in SCREEN 13 though, since 19 is a perfectly legal palette entry.

Posted on Jan 4, 2008, 12:39 PM

Respond to this message   

Return to Index


no one likes vesa, do they?

by mennonite (no login)

i don't have to tell you that i'm not an expert with stuff like that, all i know is that arachne worked beautifully on so many dos machines using vesa modes. but that was vesa 2, right? and if fb uses any vesa, it's vesa 3?

there's all kinds of stuff you need to know to make graphics reliable. arachne knew, qbasic knew, and hopefully galleon will listen to someone that knows if he ever makes qb64 work with a real console. right now i assume he's only working with sdl, but that's about as reliable (very) as qbasic in dosbox, and a lot faster.

Posted on Jan 4, 2008, 1:32 PM

Respond to this message   

Return to Index


VESA and whatnot

by (no login)

I would assume that the MSDOS port of gfxlib2 uses VESA. But my idea was to simply use the numbering scheme VESA adopted prior to 2.0. It's clean and doesn't require SCREEN argument changes.

I'm personally not a fan of using SDL whatsoever, but if it works, then it works. Clearly it's going to be the easiest method available, since SDL exists on all the major platforms (even FreeBSD, my Unix of choice).

Posted on Jan 4, 2008, 1:49 PM

Respond to this message   

Return to Index


sdl isn't my choice, but of things that aren't my choice, it's great

by mennonite (no login)

it's a choice for compatibility with many environments. i hate to see a total lack of console support in qb45, how do you copy and paste text?

but despite that, it's running and well. perhaps there will be a way to enter an actual console mode, without syntactic doo like _console.print. i'd be happy with screen -1 or even _screen -1, but sdl will be easier once you can write files in demo 5. by the way, ever set a window screen mode for 1024x768 and get a window plus almost 1024 and almost 768?

Posted on Jan 4, 2008, 2:12 PM

Respond to this message   

Return to Index


Wait a second...

by (no login)

There's no console mode?

Posted on Jan 4, 2008, 2:27 PM

Respond to this message   

Return to Index


all i know is that screen 0 appears to be sdl still

by mennonite (no login)

i mean screen 0 works beautifully, but you can't copy text like from a real console in windows.

pete makes a really good case for sdl, mentioning that vista (one of the reasons for qb64) won't show any console apps fullscreen. i haven't tried alt+enter. last time i did that in sdl/dosbox/supertux i had to restart windows and change the resolution.

Posted on Jan 4, 2008, 2:32 PM

Respond to this message   

Return to Index


Really in QB all console mode is really all there is...

by Pete (no login)

What's the other mode, well Windows of course so I really don't understand your question. Galleon has the SDK that allows QB64 to run a screen zero text application in FULL SCREEN in Vista. That is more then FreePascal or FreeBasic has been able to accomplish.

From a prior Eponasoft post:

>"I have a major problem with the ass-kissing here."<

My response, up yours! No one is kissing anybones behind at this forum. You came here from that idiotic FreeBasic site, so maybe you don't know any better than to make such a stupid statement here.

Pete



Posted on Jan 4, 2008, 2:56 PM

Respond to this message   

Return to Index


mennonite defends fb?

by mennonite (no login)

no, one of the main differences between fb and qb64 is i actually like qb64 (another is basic.)

eponasoft is from fb.net, but most of fb.net is from here, or somewhere that used to be like here. just like you do pete, eponasoft has his own idea of what bs is, and dislikes it, just like you and i do.

apart from that one time (or two, i dunno) that he attacked me on fb.net (i'm not pretending we're friends anyway) eponasoft makes a lot of sense. we don't always agree, but if we did, that would be odd.

there's got to be something that a person earns for being one of the more reasonable people to go to fb.net and leave. respect? highly priced around here, i can't even afford the counterfeit variety from pete berg and his team of experts that live with him and tell him what fb is (he's never used it.) decency? well, we all argue sometimes.

how about a slightly open mind? contrary to popular myth, i like to offer that whenever possible. i think eponasoft has earned at least that just by being intelligent and not spewing hivemind at us, whatever my opinion means. but i've always tried to be honest, and honestly, i don't think eponasoft is being totally unreasonable. 50% reasonable? more? i dunno, but reasonable enough.

as for freebasic, it works great in the console, and freepascal is even better with that. qbasic is better still, until you want more than 80 columns. you can blame eponasoft when he corrects you for being unfair, but you can't blame him for being wrong.

fb does what it does. it's not what you or i want, but except for pcopy (in earlier versions,) working with the console is not one of fb's shortcomings. i know, i've written a lot of stuff for the console in fb, for what, a year or two?

Posted on Jan 4, 2008, 3:12 PM

Respond to this message   

Return to Index


He can go straight back to FB.net as far as I'm concerned.

by Pete (Login The-Universe)
Admin

Ass-kissing? I'm not going to put up with that crap here at all. You can if you want to, but not me. And FB and FP do not run full screen console apps in Vista, period. QB64 does. I don't really give a rot13-ascii about the lines of resolution in any of them.

Pete

PS Yeah, you were open-minded alright - which cost you a waste of time FBing around for the past year. I'll stick with my closed-mindedness, because at least it recognize a piece of absolute crap when it sees it.

Posted on Jan 4, 2008, 3:34 PM

Respond to this message   

Return to Index


* Your right Pete! Kiss Kiss

by (Login burger2227)
R

Posted on Jan 4, 2008, 3:43 PM

Respond to this message   

Return to Index


Don't make me buy the Steelers, Ted, I'll move them to Iowa!

by Pete (Login The-Universe)
Admin

But LOL, you made me laugh. You know though, when I was a kid, I wished the Los Angeles Rams would move to Tijuana. They did move south, but South East, oh well. I've always been a Niners fan for the most part, Joe Montana days. Long story short, I like winners. FB is not a winner. QB64 is a much better idea. Galleon has a lot of work, that's for sure. I can't help him. I don't know enough C. I can only write keyboard routines, etc. in C. Again, of little to no help. I do have experience with making large apps though, so I'm not going to yack about it's too big to do. It isn't, it just takes a lot of dedication, focus, time, and tenacity. Galleon can finish it. It's just a question of when he can finish it.

As far as this IDE stuff goes, I hope Galleon can appreciate what I'm doing for him here. It amazes me how when someone works night and day on a huge programming project, some other senseless bozo comes along and expects the next thing before the first thing is even anywhere near completion. "One damn minute Captain," to quote Mr. Spock from the best Star Trek movie, ever. (The whale should have won the best actor award, but that's just my opinion.)

Pete

Posted on Jan 4, 2008, 4:15 PM

Respond to this message   

Return to Index


man i hate it when you go elitist. senseless bozo?

by mennonite (no login)

explain this pete, how is someone a "senseless bozo" for asking about a feature that the project leader was and is actually planning? no one asked you to code anything, in fact no demands were made of anyone, IT WAS JUST A QUESTION!

also explain how someone is supposed to use the ide from qb (as you suggested was a reasonable solution) if one of the the points of the project is to work in vista without dosbox, when said ide will not always work without dosbox?

Posted on Jan 4, 2008, 4:30 PM

Respond to this message   

Return to Index


The IDE works, as I have already stated, in Vista...

by Pete (Login The-Universe)
Admin

As long as it is 32-bit Vista. 64-bit anything, then no. What I hate is when people get unreasonable expectations. My apologies if you were the senseless bozo that wanted the IDE. I'm not keeping track of who said what about it.

Pete

Posted on Jan 4, 2008, 4:39 PM

Respond to this message   

Return to Index


IT DOESNT MATTER WHO SAID IT

by not really the rock (no login)

it was a reasonable request.

"64-bit anything, then no." what the **** is the project called, pete?

Posted on Jan 4, 2008, 4:42 PM

Respond to this message   

Return to Index


Take your opinion, turn it sideways, and shove it up your candy ascii.

by The Rock (Login The-Universe)
Admin

Personally, you are the biggest hypocrite I've ever met in my entire life. I can only assume when God made you, he broke the mold... in the middle of the job. Look, I'm getting really tired of your fly-by-night opinions. You can be funny but like Clippy said, at what expense? Too much of the time you are, as many people have said, just a pain in the ascii. Now, you can add me to the - I'm sick of mennoninte list.

Pete

Posted on Jan 4, 2008, 5:00 PM

Respond to this message   

Return to Index


whatever p3t3

by mennonite (no login)

it's p3t3 right? like v1c and z!re?

you're in good company, they're stupid, elitist ass-holes too. why don't you kiss MY ass?

Posted on Jan 4, 2008, 5:02 PM

Respond to this message   

Return to Index


*OK, boys! Just use Notepad if you really need to for now

by (Login burger2227)
R

Posted on Jan 5, 2008, 1:53 AM

Respond to this message   

Return to Index


That's what I do already!

by (no login)

Notepad is the best editor available. It never gripes about bad syntax (which can make you lose your train of thought), it never bothers your eyes with ugly colors (some IDEs are ugly no matter what colors you choose), and it starts up virtually immediately (what other Windows-based editor can say that? NONE! Especially coding IDEs!). It also keeps your coding intellect sharp because you have to remember what it is you're coding, rather than having the IDE autocorrect everything for you or give you lazy shortcuts (autocomplete is for slackers).

Posted on Jan 5, 2008, 12:52 PM

Respond to this message   

Return to Index


* OK you offered to help. Make an IDE that doesn't complain then

by (Login burger2227)
R

Posted on Jan 5, 2008, 1:17 PM

Respond to this message   

Return to Index


* OOPS! The IDE is SUPPOSED to do that, No?

by (Login burger2227)
R

Posted on Jan 5, 2008, 1:22 PM

Respond to this message   

Return to Index


LOL @ bad syntax can make you lose your train of thought.

by Pete (Login The-Universe)
Admin

And from what I've seen of your program site, you're not running much more than a tiny steam engine with 1/2 an ascii caboose attached to it. BTW - In QuickBasic you can turn syntax checking off. But I digress...

I have a long list of people I like online and a short list of this I don't. You're on the short list. That list can change, but coming back to this forum after many years away and calling Mac a 'problem' and people here ass-kissers has put you where you are, on my short list. Besides, aren't you just some fly-by-night? You're unhappy with this, you're unhappy with that... Well, I'm unhappy with you. So maybe I'll get Mac to make an I'm Unhappy Subforum and you can finally have a home. This has nothing to do with FB or QB64. This is strictly personal. But seriously, you can’t keep a train of thought going because of a syntax error message? Please.

Pete

Posted on Jan 5, 2008, 1:43 PM

Respond to this message   

Return to Index


* Perhaps he meant Brain of thought, Man. Pass the doobie!

by Cheech (Login burger2227)
R

Posted on Jan 5, 2008, 1:52 PM

Respond to this message   

Return to Index


Oh, I'm just so crushed.

by (no login)

Oh no, I'm on someone's short list. "I don't like you!" Remind me why I care. And which program site are you referring to? I own three software labels, plus maintain my own page of personal projects. Which one are you referring to?

As for the error message, I didn't say that *I* get sidetracked by it. But when you've known as many coders as I have, you tend to learn a lot about their various quirks and hangups when coding.

Furthermore, you can stop attempting to start a war with me. It's never going to happen. Your petty insults are amusing at best, but you're never going to get me to fight with you.

Posted on Jan 5, 2008, 3:33 PM

Respond to this message   

Return to Index


well, you can establish a backwoods if you want to, pete

by mennonite (no login)

personally, i don't like everything being "us and them." it was crappy when they did it to me, and what eponasoft said wasn't any worse than what i said.

you wanna put up a "no outsiders!" sign, cool. i don't believe in clubs4us and no fber's allowed. it's one thing if they come here and troll, it's another if they come here and you attack them just for being from fb.net. hell even relsoft isn't that reasonable anymore, and he used to be the nicest of all of them.

if someone from fb.net wants to come here and be slightly reasonable, i'm not going to be the one that bans and censors them, like what happens over at fb.net. it's not like reasonable people are going to leave there every day. most of them aren't. i wasn't what they said i was, and i don't think eponasoft is what you say.

but either way, you sound like them right now.

Posted on Jan 4, 2008, 3:49 PM

Respond to this message   

Return to Index


Hrm...no it doesn't.

by (no login)

QB64 emulates console mode using SDL. That's not real console mode. Vista doesn't allow real console mode to be run fullscreen. It's a limitation of the OS, not of the compiler. Get your facts straight.

So then, let's talk about this "absolute crap". Give your reasons for why you say that. Unless you can provide legitimate reasons, your words are hollow and meaningless. Because right now, you and Clippy are certainly tied for the title of "QB64's Biggest Zealot". Actually, no wait...Clippy showed signs of mellowing out earlier (I have hope for him now!), so the title belongs to you. Congratulations kiddo, you've earned it.

Posted on Jan 5, 2008, 12:42 PM

Respond to this message   

Return to Index


/me attempts to resist the urge to bring up Z!re... Oops... Too late. :P *

by rpgfan3233 (no login)

Posted on Jan 4, 2008, 4:51 PM

Respond to this message   

Return to Index


Actually...you're wrong. Very wrong.

by (no login)

I'm from all over the QB scene. My QB forum history dates as far back as 1996. Countless disc.server forums, Neozones, Tsugumo's Lair, even qbasic.com saw me posting back in the days when Mallard owned the place. Pete's QB Site, qbasicnews.com, rpg-dev, rpgdx, QBRPGs (the one owned by LordQB/Liquidex), the list goes on and on and on. I was even there for the birth of efnet's #quickbasic channel (which now is nothing more than a slime pit of idiocy...you want to see real losers? go there someday). I was also the founder and editor-in-chief of QB On Acid, and the co-owner of The Basic Network. All of these things happened long before FB even existed (except TBN, it was originally created about the same time).

So, my response to you is: do your homework next time. If you think I'm "from fb.net", then you obviously have no clue as to who I really am. I also find it bloody hilarious that you, along with a few others here, like to take single lines out of context and gripe about them, managing to completely miss the point of the rest of the post. But that's fine with me; it just lets me know who's who around here.

Posted on Jan 5, 2008, 12:35 PM

Respond to this message   

Return to Index


* Yes and Tricks are for kids!

by (Login burger2227)
R

Posted on Jan 5, 2008, 1:19 PM

Respond to this message   

Return to Index


I like VESA...

by rpgfan3233 (no login)

There is an old game called "Action SuperCross" for Windows/DOS (think about the 3.1/95 days), but it is similar to a more modern game called "Elasto Mania" (aka "Elma"). Basically you have a motorbike, and your goal is to collect all the apples and get to the flower as quickly as possible without crashing or getting a flat tire. I ALWAYS loved VESA for that game, mainly because I liked how I could see more than just a little bit of the screen at a time. At the time, DirectX and Direct3D weren't very widespread, and I think it makes sense that VESA was used considering MS-DOS was still around at the time(c. 1997).

I LOVE games like this. Excitebike for the NES is _still_ entertaining for a few hours... :P

Posted on Jan 4, 2008, 4:49 PM

Respond to this message   

Return to Index


* It most likely would not be exactly screen 12 as you define it!

by (Login burger2227)
R

Posted on Jan 4, 2008, 4:04 PM

Respond to this message   

Return to Index


no it wouldn't be, it really would be something else

by mennonite (no login)

screen 13 isn't a basic statement, it exists in 16bit environments without basic to describe it.

"screen 13" is always 320x200x256, there is no 640x480 version of "screen 13" it would be a different mode, regardless of what you called it.

then again, screen 13 is not really screen 13 as long as it's in sdl. for vista, that's good. vista can do sdl, and we know it can do sdl.

screen 13, which you get by interfacing with int13h, does not exist in qb64. what qb64 does is emulate code in sdl that would interface with screen 13. i do not believe it interfaces with int13h like screen 13 would.

you could add colors to what we now call "screen 13," but you're not really using it in the first place. you would be adding it to sdl, and sdl can already go past 320x200x256. to make it more like screen 13 (but still not screen 13, but in a console...) you'd probably need vesa to do it right, and there's more to it than just using vesa. you can use sdl fullscreen, but that's not console, that's a layer.

Posted on Jan 4, 2008, 4:22 PM

Respond to this message   

Return to Index


I'm glad someone asked about new features...

by (no login)

Yes, of course there will be new features, not just 100% support for QBASIC programs. New features will use keywords than begin with an underscore to avoid any variable name conflicts.

Some new features are already available including bit, byte, unsigned and 64 bit data types. My primary focus is getting QBASIC/QB4.5 programs to run without any modifications in QB64. The reason I have added some extra features is because if I left them out it would be more difficult to add them later.

So what new features will QB64 have? To name a few...
-Ability to run under Windows, Linux & Mac-OSX
-Easy to use networking support over TCP/IP
-Ability to play .WAV, .MIDI, .MP3 files etc.
-Ability to load .BMP, .PNG, .GIF, .JPG etc. images
-Video playback
-Multiple text/graphical windows of user defined sizes
-24bit color with alpha support
-Image "surfaces" of user defined size and bit-depth onto which all graphics commands can be applied
-Mouse support
-More keyboard input methods
-Input from other devices such as gamepads, web-cams, etc.
-3D support via OpenGL
-Structures will support arrays inside them (they might also support functions and the concept of "public" and "private" data as found in object orientated programs)
-You can have subs/functions which accept special QB64 structures as arguments like...
SUB whatisit(a AS _ANY)
if a.ISARRAY=1 THEN
PRINT "You passed any array to whatisit!"
PRINT "It's size in bytes is";a.SIZEINBYTES
'etc.
END SUB
SUB whatisit(a AS _BYTEBLOCK)
'etc.
END SUB
-Semi-fixed-length strings. They act like variable length strings but their size never exceeds their defined maximum size so they can be stored like fixed-length strings.
DIM a AS STRING <=10
-Pointers

I'm reluctant to jump into adding new routines until I am 100% confident in their format.
For example... _PLAYWAV "sound.wav"
Looks reasonable? right? But what if the programmer wants to terminate/pause that sound before it finishes? You need handles. What if they want to play it multiple times or edit its volume or balance before playing? You need to separate loading and playing and be able to duplicate the handle. What if you want to play midi as well? You don't want to have an entirely new set of functions for every musical sound file!!!
So maybe... myhandle=_LOADSOUND("sound.mid") Or should it be more of a QBASIC syntax? OPEN "sound.wav" FOR PLAYING SOUND AS #1: PLAY #1: CLOSE #1
I'll be asking for advice from the QB community on what seems to most "basic" way of implementing new features as I get to them.

Hope some of these new features appeal to you,
Galleon

Posted on Jan 3, 2008, 11:01 PM

Respond to this message   

Return to Index


i'm glad you finally mentioned them

by mennonite (no login)

there were other people implying it won't, and you waited long enough to respond to them i almost started believing them.

from the beginning, i've had mixed feelings about "_" but it's a good idea, better than many others, better than other languages where to print to the console you need all of console.print and so on. my complaint is you have to shift to type _ (imagine doing that all the time) but it's tricky to find a better symbol:

let's look at the symbols you can type with only one finger: ` -= []\ ;' ,./

` almost invisible, and looks almost exactly like 'rem

- denotes math, that could create messy code

= denotes math and variable assignment, that could create messy code

[ looks like ( and implies there is a ]

] looks like ) and implies there is a [ but classic apple fans might like it
+++++

\ difficult to type for many who confuse it with / but actually the best one on the list i think.
+++++

/ denotes math

; way too close to :
-----

' would stop 'rem from working
-----

, makes no sense and looks like the middle of a statement

. a favorite except for visibility, that's why i like \

/ denotes math

it's not a simple choice, and _ makes the most sense, except for having to shift all the time. if there was a _ key (- doesn't count) i'd be all for it...

it would be easy to argue, on the other hand, that one -lang qb makes more sense than a relatively unlimited number of _

*i think it would make a lot more sense to have langqb as an opening statement in the program, than a compiler feature. qbasic used things like that.*

i also never liked lang qb because it was used to deprecate before it was used for compatibility. it was like dealing with the unsuitability of freebasic without admitting it was never suitable, extending the issue and posing as a solution.

i realize the decision has been made, but qb64 is not an island, it's worth pointing this out the next time someone wants to make a basic language.

oh, and the main thing i wish qbasic had was getmouse. i mean qb64 already has more memory for strings and arrays, that's soooo wonderful. i would not mind typing a _ just to use _getmouse and _setmouse and i wouldn't need most of the things that qb64 might add.

so it's not actually like i would use _this _all _the _time but i would feel sorry for people that needed to. other than that it's a very elegant solution, even in comparison to several other basics which seem to make things more tedious.

Posted on Jan 4, 2008, 6:01 AM

Respond to this message   

Return to Index


I don't think you should add a -lang switch

by (Login Tusike)

That would be the start of qb64 not being qb anymore. I think _ is a really good idea. Menn, take _ as part of the command's name, and you probably _won't _be typing _like _this _while you _are writing _the program. I always type commands in uppercase, so for me it wouldn't be that hard to get used to, plus the main commands I'll use won't need it, and I don't think this only applies to me.
I'm happy to hear that there will be an IDE.

-Tusike

Posted on Jan 4, 2008, 9:21 AM

Respond to this message   

Return to Index


*i don't either

by mennonite (no login)

Posted on Jan 4, 2008, 9:35 AM

Respond to this message   

Return to Index


*I'd like to add one to Mennonite sometimes LOL

by (Login burger2227)
R

Posted on Jan 5, 2008, 1:56 AM

Respond to this message   

Return to Index


An alternate idea

by (no login)

Rather than prefixing _ to already implemented functions (this is messy and besides, some compilers prefix user functions with _ when compiling) or using a language switch on the command line (inconvenient), you could merely add a new metacommand. It's probably the cleanest method available, and it wouldn't break QB compatibility since you'd have to specifically add the line to your source to take advantage of the enhanced functions. Without the metacommand added, the compiler should bail if one of the functions is used with its enhanced features. And then, even with the metacommand added, the code will still compile in QB itself...it'll just error out if you use something illegal. :)

'$QB64ENHANCEDMODE

Posted on Jan 4, 2008, 1:00 PM

Respond to this message   

Return to Index


Not a bad idea

by (Login Tusike)

But I don't understand why we need a switch or anything in the first place. It shouldn't bother an original QB1.1(4.5, 7.1) program if qb64 has new commands, because it doesn't use them. Why can't we have new names for the commands (LOADSND, LOADBMP, ...)

Well for me it doesn't matter that much, I think we should be happy if qb64 is created and works well.

-Tusike

Posted on Jan 4, 2008, 1:04 PM

Respond to this message   

Return to Index


Common function name collisions

by (no login)

Although I personally would have no problems avoiding this (since I tend to "emulate" namespaces in BASIC), some source codes could easily suffer from function name collisions by using "common" names. LOADBMP is a terribly common function name in QB apps. Furthermore, polluting the keyword list isn't in the best interests of any compiler that's implementing an existing language. Namespace emulation would be a good idea in this case; QB64_LOADBMP would be a valid choice, because it attaches a unique prefix to the function name, as well as says "hey, this is a new QB64 function". It would also make documentation a snap, since the only functions that would be unique to QB64 would be prefixed like this; you can see at a glance what the new functions are.

Posted on Jan 4, 2008, 1:15 PM

Respond to this message   

Return to Index


i talked about qb64as a prefix alternative to _ too

by mennonite (no login)

this was in chat. my issue with "qb64" prefix is that it still takes more typing, _ is a compromise then. another one that came to mind was just "64" as a prefix.

no shifting, and there are zero existing qbasic programs with variables that begin with "64" because all qbasic variables must start with a letter. still a metacommand is easier to enter, although i would also propose an automated way to determine whether the metacommand would apply or not.

Posted on Jan 4, 2008, 1:42 PM

Respond to this message   

Return to Index


that's exactly what i meant

by mennonite (no login)

and you even wrote it in the form that existing metacommands take. i point out that i mentioned it, as we agree this is a good idea.

that doesn't mean i am sure we will see it in qb64, but maybe someday it will be an alternative to using _ i mean... perhaps galleon is in love with _this("type of solution") and it's good enough, but you could honestly have both. i would not mind using a metacommand to save typing all those _, as an option in later versions. of course the problem with a compiler switch is that you should be able to have it compile by just putting the same program in... without specifying the language you're compiling. a metacommand does a better job than the command line, so does _

Posted on Jan 4, 2008, 1:37 PM

Respond to this message   

Return to Index


Ideas

by qbguy (no login)

-Ability to run under Windows, Linux & Mac-OS X

You plan to do this by compiling the QB71 code to C under Windows and then compiling the C code under Linux, right?

-Easy to use networking support over TCP/IP

OPEN "ftp.fbi.gov" FOR FTP LOGIN="George Bush" PASSWD="password" AS #1
_FTPPUT #1, "STUFF.TXT"
_FTPGET #1, "OTHERSTUFF.TXT"
CLOSE #1

-Ability to play .WAV, .MIDI, .MP3 files etc

CALL _PLAYWAV("stuff.wav")

-Ability to load .BMP, .PNG, .GIF, .JPG etc. images

CALL _BMPPLOT("stuff.bmp", [x, y, height, width, transparent])

- SUB stuff(a as _any)

Um... doesn't QB 7.1 have that already?

Anyway, it would be kind of stupid to have:

FUNCTION stuff(BYVAL a) for PDS 7.1 and VBDOS
FUNCTION stuff(a) and then use extra parenthesis for QB 1.1 and 4.5
FUNCTION stuff(_BYVAL a) for QB64

Posted on Jan 7, 2008, 10:28 AM

Respond to this message   

Return to Index


Calm down QB! Don't get riled about things in the future

by (Login burger2227)
R

7.1 is not even on the drawing board yet! Make a list of wishes and let Galleon have some time dude!

Ted



    
This message has been edited by burger2227 on Jan 7, 2008 11:27 AM

Posted on Jan 7, 2008, 11:25 AM

Respond to this message   

Return to Index


CIRCLE statement fully implemented in preparation for Demo #5! (+screenshot)

by (no login)

Here's a link to a screen-shot:
http://img216.imageshack.us/img216/9403/circlescn6.png

Here's the QBASIC program QB64 used to generate it:

'"GALLEON'S NOT SELF OBSESSED!" by Galleon
'for QB64 Demo #5
SCREEN 13
x = 30 'starting x-offset
y = 100 'y-offset
s = 50 'average spacing
r = 24 'average radius
col = 32 'color
CIRCLE (x, y), r, col, 1, -.1, 1
x = x + s: col = col + 2
CIRCLE (x, y + r), r * 2, col, 0, 3.1, 2
x = x + s * .75: col = col + 2
CIRCLE (x, y), r, col, -1.5, 5, 10
x = x + s * .5: col = col + 2
CIRCLE (x, y), r, col, -1.5, 5, 10
x = x + s * .75: col = col + 2
CIRCLE (x, y), r, col, -.1, 5.5, 1
x = x + s: col = col + 2
CIRCLE (x, y), r, col, , , 1
x = x + s: col = col + 2
CIRCLE (x, y + r), r * 2, col, 0, 3.1, 2
'horizontal bubbles (1:1 perspective)
LOCATE 5, 1
PRINT "1:1 perspective:"
col = 32
x = -1
y = 50
PSET (x, y)
FOR r = 0 TO 16
CIRCLE STEP(r * 2 + 1, 0), r, col, , , 1
col = col + 1
NEXT
'horizontal bubbles (default perspective)
LOCATE 21, 1
PRINT "Default perspective:"
col = 32
x = -1
y = 150
PSET (x, y)
FOR r = 0 TO 16
CIRCLE STEP(r * 2 + 1, 0), r, col
col = col + 1
NEXT

Posted on Jan 2, 2008, 7:53 PM

Respond to this message   

Return to Index


nice, although when you said "circle statement" i thought you meant

by mennonite (no login)

"the wise will specifically choose [what] makes more sense."

Posted on Jan 2, 2008, 8:03 PM

Respond to this message   

Return to Index


*I feel like I've read that somewhere recently...

by (no login)

Posted on Jan 2, 2008, 8:07 PM

Respond to this message   

Return to Index


Not bad

by (no login)

Your algorithm seems slightly different than the one used in QBASIC though. It's especially noticeable on the smaller circles. But you'd really have to be looking for the differences; the average coder probably isn't going to sweat a couple of pixels.

The original source code for QBASIC's CIRCLE function is found at /45/SRC/runtime/rt/CIRCLE.ASM but it is written entirely in 16 bit assembly language.

Posted on Jan 2, 2008, 9:06 PM

Respond to this message   

Return to Index


*can't use it without copyright infringement, can you?

by (Login MCalkins)
R

Posted on Jan 2, 2008, 9:22 PM

Respond to this message   

Return to Index


copyright isn't the issue

by mennonite (no login)

i'm sure galleon isn't stupid enough to use code written by microsoft, but for a lot of things, just looking at someone's code that does the same thing is an issue.

otoh, it might be alright if the code was published, by microsoft, such as in a book for sale to the public. that's more an issue for lawyers, though. not looking at microsoft code is pretty simple.

as for a few pixels, i'm less worried about a few pixels and more worried about draw "ta" in gwbasic and freebasic. in qbasic, you can draw spirals that correspond to the instructions, directions, and distance the program is written to display. in gwbasic, they seem to be off.

freebasic seems to have the same issue with draw "ta" that gwbasic does. hopefully you'll get the same image in qb64 as in qbasic, but in freebasic it's not a difference of a few pixels.

Posted on Jan 2, 2008, 9:30 PM

Respond to this message   

Return to Index


He can't use it as-is anyways

by (no login)

as it's 16 bit assembly language; to even consider using it would require quite a bit of a rewrite and by then, you might as well just write your own function anyways...which is what he's already done.

Hey, got any examples of the DRAW flaw? I'd like to see what you're referring to, sounds interesting.

Posted on Jan 2, 2008, 9:48 PM

Respond to this message   

Return to Index


draw: gwbasic vs qbasic vs fb

by mennonite (no login)

the code:

10 SCREEN 12 ' this is public domain
CLS ' 2006 mennonite
PALETTE 6, 256 ^ 0 * 58 + 256 ^ 1 * 58 + 256 ^ 2 * 10
FOR q = 1 TO 15
a = INT(RND * 10 + 1) * 10
IF INT(RND * 2) THEN b = -1 ELSE b = 1
xf = INT(RND * 140)
yf = INT(RND * 440 + 20)
FOR n = 1 TO 360 * 20 STEP 4
IF n = 1 THEN y = 0 ELSE y = y + 1 * b
DRAW "bm" + STR$(INT(n / 17) + 20 + xf) + "," + STR$(20 + INT(y / a) + yf)
DRAW "ta" + STR$(n MOD 360) + "bu8"
FOR x = 0 TO 1
CIRCLE (POINT(0), POINT(1)), 3, 6
CIRCLE (POINT(0) + x, POINT(1)), 4, 14
NEXT x
DRAW "ta" + STR$(n MOD 360) + "bd8"
NEXT n
NEXT q
IF INKEY$ = "" THEN 10

the screen: http://img134.imageshack.us/img134/4578/fusilliwv7.png

the gwbasic version: (added line numbers, ' on palette, changed screen 12 to 9)

10 SCREEN 9 ' this is public domain
20 CLS ' 2008 mennonite
30 rem PALETTE 6, 256 ^ 0 * 58 + 256 ^ 1 * 58 + 256 ^ 2 * 10
40 FOR q = 1 TO 15
50 a = INT(RND * 10 + 1) * 10
60 IF INT(RND * 2) THEN b = -1 ELSE b = 1
70 xf = INT(RND * 140)
80 yf = INT(RND * 440 + 20)
90 FOR n = 1 TO 360 * 20 STEP 4
100 IF n = 1 THEN y = 0 ELSE y = y + 1 * b
110 DRAW "bm" + STR$(INT(n / 17) + 20 + xf) + "," + STR$(20 + INT(y / a) + yf)
120 DRAW "ta" + STR$(n MOD 360) + "bu8"
130 FOR x = 0 TO 1
140 CIRCLE (POINT(0), POINT(1)), 3, 6
150 CIRCLE (POINT(0) + x, POINT(1)), 4, 14
160 NEXT x
170 DRAW "ta" + STR$(n MOD 360) + "bd8"
180 NEXT n
190 NEXT q
200 IF INKEY$ = "" THEN 10

Posted on Jan 3, 2008, 11:43 AM

Respond to this message   

Return to Index


That's pretty weird...

by (no login)

Those two programs actually produce different results in QB itself. I ran both, the differences were slight but noticeable. I ran only the first one through FB 0.14, it drew a bunch of circles onscreen. I couldn't test it in BSDBASIC since it doesn't support DRAW (and never will). I don't know how well it would work in other BASIC compilers/interpreters either. Have you tried it in PowerBasic 3.5? I'll give it a run through GW-BASIC when I get my VM up and running again.

DRAW uses a pretty nifty (and somewhat complex with all of its calculations) metalanguage, it's not surprising that it's difficult to replicate correctly.

Posted on Jan 3, 2008, 12:06 PM

Respond to this message   

Return to Index


you should get the same size and shape each time

by mennonite (no login)

but it draws the angle of the "fusilli" randomly. draw is pretty simple, most of it i wouldn't use, i would use line. the one thing i use draw for is draw "ta" (turn angle)

instead of learning trig, which is great, you can just use draw +"ta"+str$(angle)+"u"+str$(length) to draw a line from your coordinates to those at angle, length. you can even draw a circle by putting angle in a loop.

Posted on Jan 3, 2008, 12:15 PM

Respond to this message   

Return to Index


more about using draw

by mennonite (no login)

draw ta will let you make a circle that shows each of the coordinates of that circle, which you can find with point(0) and point(1).

circle always returns the coordinates of the center, so if you want to make a circle of other things than pixels, you can use draw ta.

Posted on Jan 3, 2008, 12:20 PM

Respond to this message   

Return to Index


Couldn't you draw a simple circle using SIN and COS

by (Login burger2227)
R

And increment the center coordinates?

I guess you are not crazy about radians either LOL. Me neither.

Ted

Posted on Jan 3, 2008, 3:18 PM

Respond to this message   

Return to Index


got a public domain routine that does it?

by mennonite (no login)

never found a nice public domain circle routine, i'm sure they're more common now. i can convert between radians and degrees.

Posted on Jan 3, 2008, 4:41 PM

Respond to this message   

Return to Index


* LOL@publicdomain

by (Login burger2227)
R

Posted on Jan 3, 2008, 4:49 PM

Respond to this message   

Return to Index


Here's a complete function for you

by (no login)

but it's written in C++.

http://research.microsoft.com/~awf/graphics/bres-ellipse.html

It comes from Edinburgh University and has no copyrights applied, so it is in the public domain.

Here's the ellipse routine I wrote for Useless Sock. This is pure QB, but intended for text mode. It shouldn't be hard for someone to figure out how to adapt it to their own programs. It is a closed ellipse routine, there is no start or stop parameters; it was made this way for speed as well as minimal size of the function.

SUB USdrawEllipse (x AS INTEGER, y AS INTEGER, xr AS INTEGER, yr AS INTEGER, element AS INTEGER, colour AS INTEGER, destSegment AS INTEGER, destOffset AS INTEGER)
'Draws an ellipse
FOR xl = xr TO 0 STEP -1
yl = SQR(xr * xr - xl * xl) * yr / xr%: Y2 = yl%
DO
USplaceElement (x + xl), (y + yl), element, colour, destSegment, destOffset
USplaceElement (x - xl), (y + yl), element, colour, destSegment, destOffset
USplaceElement (x + xl), (y - yl), element, colour, destSegment, destOffset
USplaceElement (x - xl), (y - yl), element, colour, destSegment, destOffset
yl = yl - 1
LOOP WHILE yl > Y1%
Y1 = Y2%
NEXT
END SUB

Posted on Jan 3, 2008, 6:20 PM

Respond to this message   

Return to Index


Of ALL the people to ask that question.

by (Login burger2227)
R

Aren't Copyrights just wonderful? I wonder what is patented by M$? Why don't you research the QB code to see what he can get away with too?

After all, you seem to know all of the rules!

Ted

Posted on Jan 3, 2008, 3:52 PM

Respond to this message   

Return to Index


* You should be asking "I wonder what ISN'T patented by M$?" :P

by rpgfan3233 (no login)

Posted on Jan 3, 2008, 4:03 PM

Respond to this message   

Return to Index


* If it was up to them, it would cost a nickel to doubleclick!

by (Login burger2227)
R

Posted on Jan 3, 2008, 4:51 PM

Respond to this message   

Return to Index


wouldn't reading their source code be a bad idea?

by mennonite (no login)

i mean generally speaking. in the u.s. there are really strict laws about reverse engineering. i figured qb64 was aiming to be legit.

Posted on Jan 2, 2008, 9:23 PM

Respond to this message   

Return to Index


It's not reverse engineering

by (no login)

In order to be reverse engineered, you'd have to disassemble an existing binary. Since the source itself is available, this wouldn't be the case. But I'm not referring to ripping off the code in this case, I'm referring to mimicking the technique that was used. Though frankly, QB64's CIRCLE looks a bit cleaner; the same code that produces nice circles in the QB64 screenshot produces a few rather ugly circles in QBASIC itself. QB64 looks like it uses a straight-up Bresenham ellipse algorithm...I'm not quite sure of the algo QBASIC uses but it doesn't look like Bresenham's ellipse.

Posted on Jan 2, 2008, 9:37 PM

Respond to this message   

Return to Index


Why doesn't this work?

by (Login Tusike)

6 people go to the movies, and they 6 tickets for seats that are in one row. AB want to sit next to each other, CD don't. How many ways can they sit down? :

DIM names(1 TO 6)
CLS
count = 0
FOR i = 1 TO 6
names(i) = i + 64
NEXT
FOR a = 1 TO 6
FOR b = 1 TO 6
IF b <> a THEN
FOR c = 1 TO 6
IF c <> a AND c <> b THEN
FOR d = 1 TO 6
IF d <> a AND d <> b AND d <> c THEN
FOR e = 1 TO 6
IF e <> a AND e <> b AND e <> c AND e <> d THEN
FOR f = 1 TO 6
IF f <> a AND f <> b AND f <> c AND f <> d AND f <> e THEN
text$ = CHR$(a + 64) + CHR$(b + 64) + CHR$(c + 64) + CHR$(d + 64) + CHR$(e + 64) + CHR$(f + 64)
GOSUB analyse

END IF
NEXT
END IF
NEXT
END IF
NEXT
END IF
NEXT
END IF
NEXT
NEXT

PRINT count: END
analyse:
ABright = 0
FOR x = 1 TO 5
IF RIGHT$(LEFT$(text$, x), 1) = "A" AND RIGHT$(LEFT$(text$, x + 1), 1) = "B" THEN ABright = 1: GOTO 1
IF RIGHT$(LEFT$(text$, x), 1) = "B" AND RIGHT$(LEFT$(text$, x + 1), 1) = "A" THEN ABright = 1: GOTO 1
NEXT
1
CDright = 0
FOR x = 1 TO 5
IF RIGHT$(LEFT$(text$, x), 1) = "C" AND RIGHT$(LEFT$(text$, x + 1), 1) = "D" THEN CDright = 1: GOTO 2
IF RIGHT$(LEFT$(text$, x), 1) = "D" AND RIGHT$(LEFT$(text$, x + 1), 1) = "C" THEN CDright = 1: GOTO 2
NEXT
2
IF ABright = 1 AND CDright = 0 THEN count = count + 1: COLOR 9: PRINT text$: 'SLEEP 1
RETURN

Posted on Jan 2, 2008, 9:43 AM

Respond to this message   

Return to Index


Found the problem

by (Login Tusike)

The line after label 2, the command PRINT text$.
If I say SCREEN 12 at the beginning or LOCATE 1, 1 before printing, the program compiles.

-Tusike

Posted on Jan 2, 2008, 10:53 AM

Respond to this message   

Return to Index


i dunno

by mennonite (no login)

2
IF ABright = 1 AND CDright = 0 THEN
count = count + 1
COLOR 9
PRINT text$
'SLEEP 1
end if

Posted on Jan 2, 2008, 10:56 AM

Respond to this message   

Return to Index


Why didn't Tusike's program compile? A bug in QB64...

by (no login)

In the following line:

IF ABright = 1 AND CDright = 0 THEN count = count + 1: COLOR 9: PRINT text$: 'SLEEP 1

After QB64 removed the comment and checked it for metacommands the line looked like:

IF ABright = 1 AND CDright = 0 THEN count = count + 1: COLOR 9: PRINT text$:

The trailing : in conjunction with the IF statement causes a bug in the C++ code generated involving mis-matched numbers of open and closed brackets.

Thank you for bringing this to my attention as I was unaware of this issue. It will definitely be fixed in the Demo #5 release,
Galleon

PS. A lot has changed since Demo #4 was released and many issues like this one will not exist in Demo #5.

Posted on Jan 2, 2008, 7:05 PM

Respond to this message   

Return to Index


a list of things i noticed about 0.40

by mennonite (no login)

commands i coded around:

val()
mid$
time$
csrlin
line input variable$

cls doesnt set the background color like in qb: color ,1: cls

i understand it takes time to do a good job and i respect that.

i addressed the bug you mentioned that tusike found by using if... end if

i used an 8k string likethi$="8k text" in qb but it would not compile in 0.40

rnd in qb is just rnd, but qb64 doesn't like that, it wants rnd(arbitrary)

Posted on Jan 2, 2008, 7:36 PM

Respond to this message   

Return to Index


RE: a list of things i noticed about 0.40

by (no login)

"i addressed the bug you mentioned that tusike found by using if... end if"
Yes, a good work-around. It'll be fixed in Demo #5.

"cls doesnt set the background color like in qb: color ,1: cls"
This one slipped past me, thanks for telling me about it, I'll investigate further. It's probably as simple as changing a line of C++ code.

"i used an 8k string likethis$="8k text" in qb but it would not compile in 0.40"
Atm this seems to be a problem with COMPILE.EXE being an .EXE made by QB for DOS and the limited amount of string processing space available. Once QB64 self compiles this issue won't exist. I'll hard code it in C++ and see if the C++ compiler could have taken the string if QB's string space hadn't overflowed. There could also be work-arounds for this like getting COMPILE.BAS to store direct strings in a file and processing them from there. I doubt this issue will be resolved by Demo #5.

"rnd in qb is just rnd, but qb64 doesn't like that, it wants rnd(arbitrary)"
Demo #4 didn't accept option arguments for functions, Demo #5 already does. This problem (which was noted in the Demo #4 release notes) will no longer occur.

Keep up these bug reports Mennonite and thank you for the time you've put into investigating QB64 (particularly in regards to Demo #4),
Galleon

PS. Demo #5 will be released this month. It definitely will not be released before the 20th. I thought you'd like to get an idea of the time-frames I'm working within.

Posted on Jan 3, 2008, 1:02 AM

Respond to this message   

Return to Index


*looking forward to 0.5x

by mennonite (no login)

Posted on Jan 3, 2008, 8:08 AM

Respond to this message   

Return to Index


oh and print!

by mennonite (no login)

print "........\....."
there's a backspace in there. in order to make it work in demo 4:

print "........"+chr$(192)+"....." ' i think it's 192.
if that works, try the kite program, which used to use "\" and now uses ""+chr$(192)+""

Posted on Jan 3, 2008, 12:32 PM

Respond to this message   

Return to Index


Yes, I've already fixed the backslash issue for Demo #5

by (no login)

It just wasn't a priority for Demo #4, but when I added file access for Demo #5 I fixed this issue too. Your work-around for use in Demo #4 is a good one. In C++ strings a / is kinda like numbers starting with &H in QBASIC, it denotes something different coming up next. I'm not going to go into further details about C++ strings because it is irrelevant.

Thanks for alerting others about this issue, I should have mentioned it in the Demo #4 release notes,
Galleon

Posted on Jan 3, 2008, 2:07 PM

Respond to this message   

Return to Index


*yay for demo 5 (i know it means something in other languages)

by mennonite (no login)

Posted on Jan 3, 2008, 2:42 PM

Respond to this message   

Return to Index


Hrm...

by (no login)

If you're converting that particular line to an if() block in C++, shouldn't it just become a blank line? Although IMO, that line is bad coding style, but QB is quirky and lets it slip through the cracks.

Here's how it'd be converted in one of my BASIC compilers (specifically, this is the BSDBASIC output of that line):

if (s16_ABright == 1 && s16_CDright == 0) // IF ABright = 1 AND CDright = 0 THEN
{
count++; // count = count + 1
bfunc_color_onearg(9); // COLOR 9
bfunc_print(is_text); // PRINT text$
//
}

Posted on Jan 2, 2008, 7:50 PM

Respond to this message   

Return to Index


shouldn't that be bitand?

by (Login MCalkins)
R

> if (s16_ABright == 1 && s16_CDright == 0) // IF ABright = 1 AND CDright = 0 THEN

&& is and, & is bitand. QBASIC's AND is bitwise.

Regards, Michael

Posted on Jan 2, 2008, 9:26 PM

Respond to this message   

Return to Index


*i'm not sure that qbasic and is.

by mennonite (no login)

Posted on Jan 2, 2008, 9:33 PM

Respond to this message   

Return to Index


Re: *i'm not sure that qbasic and is.

by (Login MCalkins)
R

CLS
PRINT "QBASIC's boolean operators are always bitwise"
IF 2 AND 1 THEN PRINT "not bitwise" ELSE PRINT "bitwise"
IF NOT 5 THEN PRINT "bitwise" ELSE PRINT "not bitwise"
PRINT
PRINT 6 AND 12; "will be 4 because binary 110 AND binary 1100 is binary 100"
PRINT
PRINT "QBASIC's comparison operators return 0 for false, -1 for true, unlike C's."
PRINT 5 < 3, "0x"; HEX$(5 < 3)
PRINT 5 > 3, "0x"; HEX$(5 > 3)
PRINT 5 = 3, "0x"; HEX$(5 = 3)
PRINT 5 = 5, "0x"; HEX$(5 = 5)
PRINT
PRINT -1; "is 0x"; HEX$(-1); ", binary 1111111111111111, ideal for bitwise logic."
PRINT
PRINT (0 = 0) AND 48; "will be 48, because 0xffff AND 0x30 is 0x30"
PRINT NOT 500; "is -501 because NOT 0x1f4 is 0xfe0b"

'Regards, Michael

Posted on Jan 2, 2008, 11:21 PM

Respond to this message   

Return to Index


Yep! That's right!

by rpgfan3233 (no login)

If you think about it, it makes sense to implement Boolean operators as bitwise. After all, you only have two values - TRUE (-1 in QB, 1 in C) and FALSE (0). In the case of the value of Boolean truth, it doesn't matter whether TRUE is -1 or 1, because in either case, you only need to compare the LSB (least significant bit) to determine whether it is TRUE or FALSE: -1 = 111111111111...111111 and 1 = 0000000000...000001. If the LSB is 0, it is FALSE. Otherwise, it is TRUE.

What about conditionals? Check this out:

x = 4
y = 5
PRINT (x = 4 AND y = 2) 'PRINT (-1 AND 0)

Obviously -1 AND 0 is 0. That is how it gets its FALSE value when it comes to emulating Boolean operators.

PRINT (x = 4 AND NOT y = 2) '-1 AND NOT 0, or -1 AND -1 (bitwise NOT 0 is -1, unlike most implementations of a Boolean NOT, which use 0 and 1)

Interesting, isn't it? I suppose someone might use such things to determine operator precedence in QB. Here's a start - bitwise operators have the lowest precedence. I could go into why certain bitwise operators have a certain amount of precedence, but it is actually really simple if you understand the connection between logic and maths. Just know that addition is OR, AND is multiplication and NOT is negation. Also note that whether it is a logical disjunction (OR) or an exclusive disjunction (XOR), it is still addition, so for brevity I will simply refer to both as OR since they have the same properties. With that in mind, check out

http://www.ee.surrey.ac.uk/Projects/Labview/boolalgebra/index.html

for a list of Boolean Algebra laws/theorems and a quick tutorial. For an in-depth tutorial on the topic, consider

http://www.allaboutcircuits.com/vol_4/chpt_7/2.html

or Chandler's very own Boolean algebra tutorial at
http://eternalbinary.s4.bizhat.com/viewtopic.php?t=90&mforum=eternalbinary

Why do I bring up Boolean Algebra? Well, consider the following IF...THEN statement:

IF (x = 4 AND y < 4) OR NOT (x = 4 AND y > 9) THEN
'no clue why you would even use the above, but put the conditional code here anyway
END IF

That can be optimized using Boolean Algebra:
IF (A AND B) OR NOT (A AND C) THEN...
'AB + -(AC)
'-(-(-A + -C)(-A + -B))
'-(AC(-A + -B))
'-(-AAC + -BAC)
'-(-BAC)
'B + -A + -C
IF (y < 4) OR NOT (x = 4) OR NOT(y > 9) THEN... 'substitute the real expressions back in

It is shorter, right? Not only that, but consider the fact that you only have 2 logic gates (OR, OR) instead of 4 (AND, OR, NOT, AND). This is the usefulness of Boolean Algebra, and it is the foundation for building optimized circuits.
Also note that you can discard the NOTs by reversing the logic of the statement enclosed by the NOT, shortening it even more:
IF (y < 4) OR (x <> 4) OR (y <= 9) THEN...

Notice the newly introduced redundancy with (y < 4) and (y <= 9)? That means that you can do away with the (y < 4) part! That means that as long as ((x <> 4) OR (y <= 9)), you got it working with only a single logic gate! Note that you need a new truth table if you use the version without the NOT statements as the other one is no longer valid because it relied on the NOT gates, and you can't just trash (y < 4) and expect it to still work. The new truth table reflects the changes. Guess what? It is a simple OR, meaning that it follows the already well-known OR table. Congratulations - you just simplified a 4-gate expression down to a single-gate expression! Think it is unimportant these days? Think again. While it may be unimportant when it comes to modern computers, I think it is very important for circuits, which power our beloved computers. I recommend getting a good handle on this because it can be useful, as I have just shown.

If you find an error or have questions, let me or Chandler know on the Non-QB forum (isn't logic a form of programming?) or whatever forum would be appropriate. That first tutorial has a sort of quiz at the end. I'd be happy to explain how things work.

Posted on Jan 4, 2008, 11:48 PM

Respond to this message   

Return to Index


*(URL)

by (Login MCalkins)
R

http://www.network54.com/Forum/190885/message/1199580319/

Posted on Jan 5, 2008, 4:46 PM

Respond to this message   

Return to Index


QBASIC's AND

by (no login)

It's both bitwise and comparative. A true BASIC compiler has to be able to understand the expression and apply the correct methodology. This code is simply doing two comparisons, comparing ABright to 1 and CDright to 0. Or at least that's what it's SUPPOSED to be doing by QBASIC's syntax.

Posted on Jan 2, 2008, 9:43 PM

Respond to this message   

Return to Index


Re: QBASIC's AND

by (Login MCalkins)
R

QBASIC's Boolean operators are always bitwise. However, C's comparison operators return 1 for true instead of the more logical -1 QBASIC uses.

With

IF ABright = 1 AND CDright = 0 THEN

it's not really an issue, if the compiler is smart enough to see that just comparison and boolean operators are being used.

However, if it were something like:

IF ABright = 1 AND someothervariable THEN

it would have to be coded something like this:

if (((ABright == 1) * -1) & someothervariable)

to convert the result of the == operator to a QBASIC compatible value. I'm a n00b at C, but I believe that would work.

If you're converting to Asm instead of C, then it could be something like this.

IF ABright = 1 AND CDright = 0 THEN

mov word [temp0],0
mov ax,[_ABright]
cmp ax,1
jne skip0
dec word [temp0]
skip0
mov word [temp1],0
mov ax,[_CDright]
cmp ax,0
jne skip1
dec word [temp1]
skip1
mov ax,[temp0]
test ax,[temp1]
jz endif0

not very efficient, but should be compatible. (I'm guessing the temp variables would be on the stack as negative offsets from BP.)

Regards,
Michael



    
This message has been edited by MCalkins on Jan 2, 2008 10:52 PM
This message has been edited by MCalkins on Jan 2, 2008 10:50 PM
This message has been edited by MCalkins on Jan 2, 2008 10:44 PM

Posted on Jan 2, 2008, 10:40 PM

Respond to this message   

Return to Index


I realized later....

by (Login MCalkins)
R

>IF ABright = 1 AND someothervariable THEN

>it would have to be coded something like this:

>if (((ABright == 1) * -1) & someothervariable)

if ((ABright == 1) && someothervariable)

should produce the same result. The value of the expression will be different, but the IF statement will behave correctly. Multiplying the result of comparisons by -1 (or doing something with the same result) would be necessary in some cases, though.

Regards,
Michael

Posted on Jan 4, 2008, 5:46 PM

Respond to this message   

Return to Index


version of asciclok for qb64 demo 4 (*url)

by mennonite (no login)

http://www.network54.com/Forum/190883/message/1199295229/asciclok+for+qb64+demo+4

Posted on Jan 2, 2008, 9:40 AM

Respond to this message   

Return to Index


8k string okay in qb, not in demo 4 (*url)

by mennonite (no login)

http://www.network54.com/Forum/190883/message/1199288002/this+will+qbasic+-run+but+not+qb64+compile

Posted on Jan 2, 2008, 7:35 AM

Respond to this message   

Return to Index


to make it work in demo 4

by mennonite (no login)

i'm planning to use an array. that will also take care of no val() instead of using left$(right$()) to simulate mid$ (the way solitaire would use mid$ to create a val())

Posted on Jan 2, 2008, 7:38 AM

Respond to this message   

Return to Index


time$ in demo 4

by mennonite (no login)

'2008 mennonite
'public domain
DIM hour AS LONG
DIM min AS LONG
DIM sec AS LONG
t = TIMER
hour = (t / 60 / 60 - .5)
min = ((t - (hour * 60 * 60)) / 60 - .5)
sec = (t - hour * 60 * 60 - min * 60)
tm$ = RIGHT$("0" + LTRIM$(RTRIM$(STR$(hour))), 2) + ":"
tm$ = tm$ + RIGHT$("0" + LTRIM$(RTRIM$(STR$(min))), 2) + ":"
tm$ = tm$ + RIGHT$("0" + LTRIM$(RTRIM$(STR$(sec))), 2)
PRINT tm$

Posted on Jan 2, 2008, 4:15 AM

Respond to this message   

Return to Index


Some old programs of mine (most contain subs and functions)

by (Login MCalkins)
R

----- scientific calculator (will probably work in Demo #5)

A calculator program I wrote in 2005. This one will probably work unmodified in Demo #5.
Demo #4 stops with LINE 225:SELECT CASE K$
FBC 0.18.2 compiles it, but it does not run correctly.

http://www.network54.com/Forum/178387/message/1127701709/


----- primitive Width 40 text game (should work with modification)

Also, here is a short Width 40 game I wrote in 2005 based on someone's homework question.

http://www.network54.com/Forum/190883/message/1117665993/

The PeanutWare SUB isn't necessary to the game and can be commented out to test QB64. FBC 0.18.2 compiles the program, but the game acts differently. QB64 Demo #4 seems to freeze without any error message.


----- 3 pretty old text games (won't work yet)

back when I still wrote big (from my point of view) games.

These programs contain SUBs and FUNCTIONs, so will not work in QB64 Demo #5. However, they might be useful for testing future versions. 2 also contain TYPEs.

These are really old programs of mine (skipbo v5 and tictctoe go back to circa 2002, and maybe earlier), and obviously my coding style has changed (I hope for the better).

http://www.network54.com/Forum/190883/message/1134980869/

The Skip-Bo game especially is one that I am proud of. The user interface (keyboard input for human player) is a bit clunky. One day I should clean it up a little. Otherwise, it's actually fun to play. It might infringe on a Mattel trademark.

Of those 3 games, Tictctoe compiles in FBC 0.18.2, but does not run correctly. The other 2 fail to compile.

Obviously, these won't work in QB64 yet.

If you redistribute them, please include my name and email address. Thank you.

-----
Regards, Michael



    
This message has been edited by MCalkins on Jan 2, 2008 12:00 AM
This message has been edited by MCalkins on Jan 1, 2008 11:50 PM

Posted on Jan 1, 2008, 11:46 PM

Respond to this message   

Return to Index


*Thanks Michael, I try them out

by (no login)

Posted on Jan 2, 2008, 1:24 AM

Respond to this message   

Return to Index


if width 40 is not available before shell is

by mennonite (no login)

'public domain (no other reasonable way to do it anyway)
shell "mode con cols=40 lines=25" '40, 25
shell "mode con cols=40 lines=43" '40, 43
shell "mode con cols=40 lines=50" '40, 50
shell "mode con cols=80 lines=25" '80, 25
shell "mode con cols=80 lines=43" '80, 43
shell "mode con cols=80 lines=50" '80, 50

Posted on Jan 2, 2008, 4:27 AM

Respond to this message   

Return to Index


*shell "mode should probably be shell "cmd /c mode

by mennonite (no login)

Posted on Jan 2, 2008, 4:31 AM

Respond to this message   

Return to Index


*The WIDTH statement is already implemented in Demo #4!

by (no login)

Posted on Jan 2, 2008, 6:53 PM

Respond to this message   

Return to Index


*thanks i noticed that later

by mennonite (no login)

Posted on Jan 3, 2008, 12:27 PM

Respond to this message   

Return to Index


another program

by mennonite (no login)

'2007 mennonite
'public domain
SCREEN 13
FOR z = 1 TO 190 STEP 1 / 2 ^ 3
FOR x = -3.14 TO 3.14 STEP 1 / 2 ^ 7
f = f + (1 / 2 ^ 22)
y = SIN(x * 8) * 10 + SIN((z / 4) * x / 1.5) * 10
LINE (x * 100 + SIN(z * 8) + z, (y + 25 + z) / (1 + f))-STEP(0, 2), (z / 2), B
NEXT
NEXT z

Posted on Jan 1, 2008, 9:30 AM

Respond to this message   

Return to Index


* I'll be impressed when it can run one of my word-pro apps.

by Pete (Login The-Universe)
Admin

Posted on Jan 1, 2008, 9:40 AM

Respond to this message   

Return to Index


me too

by mennonite (no login)

i wish i could get you to release them as foss.

Posted on Jan 1, 2008, 10:01 AM

Respond to this message   

Return to Index


* You wrote a word processor in QBASIC? Where can I get it?

by qbguy (no login)

Posted on Jan 1, 2008, 10:43 AM

Respond to this message   

Return to Index


* A mini-word processor for the forum posted in The Big Programs Forum.

by Pete (Login The-Universe)
Admin

Posted on Jan 1, 2008, 11:12 AM

Respond to this message   

Return to Index


o¤°`°¤o,¸¸¸,o¤° Happy New Year °¤o,¸¸¸,o¤°`°¤o (+bonus progress update)

by (no login)

File access subs/functions are coded
Get/Put graphics subs are coded
Bload & Bsave subs are coded
Data, Read & Restore almost finished

Apart from CIRCLE, which I've already worked out the code for in QBASIC (it has many options) it's largely lots of little things to add, improve or check so that the goals of Demo #5 can be reached.

Posted on Jan 1, 2008, 12:52 AM

Respond to this message   

Return to Index


Check this out!

by (no login)

Demo #5 now runs the following program without any modifications necessary! Unbelievable! But to see it for yourself you'll just have to wait till I release Demo #5 ;)

'FOREST.BAS by Antoni Gual
'For the Future Software 2002 7 liner contest
'NOTE: Data lines did not count by the rules of THAT contest.
'----------------------------------------------------------------------------
1 SCREEN 13
2 IF i& = 0 THEN DEF SEG = &HA000 ELSE DIM b%(164)
3 IF (i& \ 320) < 150 THEN READ c&, a$ ELSE j = j ^ 1 + 1 ^ 1 MOD 250
4 IF (i& \ 320) < 150 THEN i& = i& + 1& ELSE PUT (1 ^ 1, 150 ^ 1 + (j ^ 1 MOD 49 ^ 1)), b%(0), PSET
5 IF (i& \ 320) < 150 THEN POKE i&, ASC(MID$(a$, i& MOD 160 + 1, 1)) ELSE GET (1 ^ 1, 150 ^ 1 - (j ^ 1 MOD 49 ^ 1) - 5 ^ 1 * SIN(j ^ 1 \ 2 ^ 1 * 2 ^ 1))-(319 ^ 1, 150 ^ 1 - (j ^ 1 MOD 49 ^ 1) - 5 ^ 1 * SIN(j ^ 1 \ 2 ^ 1 * 2 ^ 1) ^ 1), b%(0)
6 IF (i& \ 160) < 256 THEN IF (i& MOD 160) = 0 THEN PALETTE (i& \ 160), c&
7 IF LEN(INKEY$) = 0 THEN IF (i& \ 320) < 150 THEN IF ((i& + 1) MOD 160) THEN GOTO 4 ELSE GOTO 3 ELSE GOTO 2

DATA 0 ," –ššŕĐɂȡfWpĘĘĘÜpfÍf‹ĘÜÜĘrĘCpĘÍšCŹš–‹ŕĘŕ‹‹Ę“LŃĘĘĘŹpCĘCCpX–ĘÉÉÉÍÍrmÍiĹ‹ÉĘCĘĘPWČNf‹ŕÜpXÍ–wĐ–łĐš––ś–w¬fÍÉÉÉL–NČfČPPPLɬÍN¬©L–sWĘfĘPp–Č›PLČPPÄabYĘpš—pspĘČČfÍNš"
DATA 0 ,"ÍÉÄČ–LsŚÄ ĹČŚYĘĘĘÍŕNČŚ©–YÄ`–fĘŹĘ‹šPŮĽŚÄČp–ŐaĐ›L—¬Ů¨›uáiusČiČ~ŚŰLNuY›¬ÄN–ŽČZÄĐNuP¤CÜ‹fxX–Ő§©¬ÍĘRLĎXL–šÍ‹jjL––ĺf‹–NfwĘXN–ÍĘš––͇apa‹Ę¸ffܬ¬N–çççfĺĘp–¸ĽCrźaźĘp®"
DATA 0 ," mĘpLfČšÍLXšLÍĘppfĘ‹‹fp‹fX®pÜ‹fĘCČÍ‹‹pĘĘfĘĘĘĘCppÍÉLLNppĘĘd®‹fĎŃŐĎffÍf^–NfÍĘXĘĘĘ–}NfššCLNC–ÍššÍÍšŕ–šž‹sjÍCCŹ×fPP^ĐLČš^š¬fÉCÉ—Ő¬jpĘCÄpjÜsČNNfÄNĘYC®ĘYÍCLĘŃ›XÍĎĘÉ"
DATA 0 ,"LaČPČL¬›ĹLÄŚCCŚšÜŰŚPJjĐČ–jffšĘĘଠj`jMXŹsެL Ü~ĐP”—›bNÍĐj׋f`ÉŚPŮ…©aNČwZ‹š¬ÄjffÍĘÄpĘĘfż–PNx”Č‹¬Čźp‚Ń|ĎáCŚ–LXˇ´NLČXżffˇÍ¬fĐf–Đfp‚NÍNŕCĐÄ‹ŧC¸ĘppĘçxW®WW–pCpf"
DATA 0 ," L‹XˇĘĘČfĘČČ–ĺCĘĘĘpĘĘCpĘCĘĘĘ‹ĘĘÜĘÍĘW‹L‹CpĘĘ–ĘC–C–ÉĐCšpCppdʡfXfÍÍŽĎÉfÉwzš‹~C×ĘŹÉĘČpÍĐĘÍsÉÉÉȖͬÍĐfĐ‚L–XLZaÍCͬLLČaĬÄNÉL‚NČ×psNÜÍdČČÍČPa—a–Xš“NCÜpCĺsCp›ÍźŃ~©¬"
DATA 0 ,"PPÉCČz—ŹŚ›XLsXCwšjŚCŚ Ĺ–uafÜfÜCĘšfĹ—jsPÜÄČ–Lf®ÄPfŮÉjj››NsČbuÝŚNŮ ÄjČÄ›©bÄČÉÄafÉ~¸ČyĎĘĘÜĎstzN©Í^¬ÍXNf¬ĎĘÉsź©ĘfĘLašČźÉ–ffpÜaĘ–Í––WČÉf–Ü‹LfPjf`çCĘpĘżŐ©˝fÍĘĘppO"
DATA 0 ," ššŐÍŃÍÍ–Í‚šČfĘCÜpŹĘffĘÜĘĺf‹ĘĘ®Üf‹š‹fĘfÉLpLšĘĘĘ‹‹–‹XfpCÜĘCĘ‹XŃĎŽ‹ŃÍĎÉĎCNXĘf–Í‹®ČšÍNbĘf®aÍĘšXČĐĘČfÉś‹šLÉCNjjšČ~ÉČÉš×ŮČ}ÍĐŐŮPuiLŐpCĘĐ–CPČĹČWŐPašĘCpĘCC›ŹĘpfŃ~Lźź"
DATA 0 ,"NZC‹›P‹›f‚›YfCRsjÍĹŚŞÉÄuŮĐXfCÜffupuĐ”bĬ^©Ô›ŚčŚŚjsssP—¬¬ČĐ›uŔČŚjPb—źÝŚj”Č‹C›¨©LsN©zyĘCĘPPĄNÉÍČPNĎÍiÍČ–Ëf–šNCfPšLÍČLÉLˇL–fpf–L‹ŕfai–CLXÔŐNš›tpÜpCmiÍLffCpÜr|"
DATA 0 ," ČČ‹p‹ŕwĘĘfX–ĘĺĘĘĘĘpCŕÜÜpĘĘpfÜŕrĘĘa‹p‹pĘĺ}ppÍrpÜfĘ‹LÍĘĘppĘĘp–fÍĎXČffÜf‚C–ÍĘfCĺÜÉLN‹LCĘÍÜfÍĘ‹–W}ČĐÉ–ČĘš–P–NÄĐČPz›ČśÉuŐPÍÉPjź¬Ű–´×ÄrĘffĘpfĐaČÉNĐLNĘĘp–ĘĘĘpNÉfsŃś"
DATA 0 ,"LPj©PNfÜšÍfŐfÍnu›•ÄY––Ź`bujPpfrŚĺ®ŐfNjuʨÉs››ťÄŚuĐuWjPĐšŮŃś¬jś zsubŚuČ›jsZŮuɬЖ›–ÍĐLÂppĘjĄxšafsČPŕsܬÓĎ–ĐЬLpĘČLXXuÉźČPC–CĐÍXPŰpÉĘftĺCfaĽsÄPĐpĘf‚tš–f–ĘCpÜŘĐ"
DATA 0 ," }šCÉ‹ÍfÉ͡ĘÍpĘpĘĘĘpfppÜCfĘĘĘÜĘĘCš‹ĘÍĘ–p––ššÉšp–š‹f‹ČCCCĘCCfÍÜXÍXmX‡‚ÍžÍCm‚ĘĘĘĘĘP–ČL–a–ÍPXLf͋ȋʋN‹CČfLsČLŕPŘsX‹sjš nźN͡ťzNzŮpĺL审dyssLŹ‚CpÜfpjffCpL–Ț̀ż"
DATA 0 ,"P§zŚŚçp–fO‹‹f¬aÄj¨ŚšfÍufȬ‚ĺĘŹŐjsÍĐĐ–ÜsYź›ŚÉyŚČČfs›~ŚÉŐsyŮPťLnuuŚ›a¬jĐNČNLuNÉÍNjĬLÍČͧCCĘCfsČŕN‹Ŕ©NLČČ~ÉL´×CpLÍXÉČaLsf–Äa©žÍXšL‹LČÍÉPÍ–fJPČĐ–ÜCĘCPɬĘppŕf‹–Ë"
DATA 0 ," f‹Đŕ‹šp‹‹šĘźCĘCĘĘĘĘĘĘfŕXÍCĘĘfĘĘĘšÍĘfCfXCff‹Íš–pÉLW‹–pĘCĘCfÍfÍÍfÍfĎš¬Í‹ÍŹCĘppĘp¬ŃĘ͡––šĐaĐÍNÍÍCpf–ĐLššLPZfLÍWÉͬČN›ŰČfyĐÍÉPj¬ČjCĘĎXNÉPÍC–ÍZĘĘppCŐdĘrf‚–X¸XÄĹ"
DATA 0 ,"L‹Ou jŤ–P–Ę“jYĐÄĘ–Ü‹uz–ffĺrdČťÍ~CŚŚrĐ–uuŚjj›ZP››j—›¨s~nŮXŮĹśfŚ—uśuĺÉfĎNPjNPĬ´ĘLLÍĐLp®pÍ–ÍšÍĐĄn–ĐÍNNaĘipdf‚źPššLŽzˇÍÍ–XŃXČfČNČ‹–fČÉČnras‹CpŹa–ÉĘdĘĘXÄ×"
DATA 0 ," p‚LĘĹššLššfppCppĘpĘĘpfffĘĘpfCpĘĘŕ‹–‚CCšš‹Íš‹–‹CfĘĐ‹CĘĘC–fšXXÍÍÍÍfÍĎLXĘ–fČŕCĘĘXÍ–ĘŕLÍĹÍĹrLaĐ–iNÍfLÍĐNL‚šÉ©Í¬ŕPPŮjČČÄufČ©zČČfNsšĘ‚Ď–šsušuČĐNČLCÜĘĺŮCĘCÍ–~ÍYzÄ"
DATA 0 ,"u§ť{ÄÍssuĘsfjmsÉÄŚ›––ČĘ–fppÜCéLaŐjŚŚŚLÄ›‹sÄu}›¬śuÉsbuaČČ–jŐ‚¬ŮťŚŮÝÝŚŚuuĐÄs“ČPNCfČ—Ę–ĐNšĐĘrCןLšÍ–fšPÉ´śĘCĘÍÉNÜfa›aĘXsPČČż‚ČČĐš‹ˇLČÍfNš~ĘNĄ–šCpĺĘ‹ĐÜĺaĘfa–´O"
DATA 0 ," ĘĘĘĘÍ‹f‹Í‚ĘLĘĘC‹CĘpfpXĺĘpppX®ffpÍ‹šff–šCÜÍÍĐzW‹špĘÍCĘĘCdffL‹šĎXXÍÉff®ˇĘNsÜppCrfÍĘČ––ÍÍÍCÉLLÍĐNÍĘLČLČfÍÉPP¬Đ›PČČȟȴČPLN“aČÉNÄĘXPu¬ÄÍ®sšśsÍĘppÍP›dÜsÍĘÉ‹PzNu"
DATA 0 ,"ÝuŚxŰssZšspÉfNÄ NČXŚÄÉjCNŞĺŹC Ř ¨ŚŚŚŚC¨¬š›ÉjČaNb¬bp›LČĄ¬uL©€sbŚbjjšzLnYNLĘwCÍsɬPpLšLĐĐsÉaC~Č‹ČÉ‹aĐs–YÍČĐźÍC–sÉšČPĘĐĘšaĘ‚šÉLĘ“ĹçЋ͟W͸ŹNź–ʡ–ĘCĺpˇCÜÜNĘpĐĐ–Ę"
DATA 0 ," ĘÉfCp–XĘL–ĐfĘĘĘpCppÍff‹ĘfpĘĺĘĘŹppĘf‹Ę‹š‹C‹‹p‹ŕ––šf‹ĘĘCĘĘÜfXÜfϦ‚ĎŽ‹ĺĘPfʮʋfĘŹLfLp®ČČĐĐ}ÄÉXXCÍLÉĹpš›źi¬LaČ–N‹É}Äxj×y¬›śĐb¬LpfPĐ›¨¬Ś‹ĐjŮ›CĘÜCČXĘpfĐźPš–nju"
DATA 0 ,"su ›JpL‹Ĺ‚Řr§Yu›X~jé–CjĘCĘ›uu uŚuuÍĘ~n›jjŚčj›®¤šPVLLČjśN›NŮLzLfsÉ©šLPČÉššL›PĐf¸NČÉŕNÍÍ}š–ÍÍÍÍNČÉĐfĐrĐLsNÍ~CČpNzsaĘĐfX¬ çN¬šç¬ĺżtLĘP~ÍÍĘC‹fLĘĘÜĘÜÜ‚ĺĘÍ"
DATA 0 ," ĘCpšf‹ĘLĹfppCpĘCpŕĘfpĘĘĘ‹‹®pfpĘ–WpĘCpŕpĘp‹‹ŕCČĘfšCCCCĘpf®–Ü‹ÍĘXÉmŃČšsL|LfĘÉĺ‹Xfp‹fĘp–P‹–¬sCL–a–É´ÍĹNĘĐNĐmČČ´–śĐÍšĘ~CČCszŔfČČÉCXÄL–É›nCÄ~ÄjCpĘP¬śÜpCfPČ–źLšĽ¤"
DATA 0 ,"`›bNÄÄnšCšČZPNpYČsŇŰuffĘĘf››Nč¬bڬÍÍLŮ×´–ÍPLP¬ĐŮZ–fLXuČabĐLNЛׂsPxÉf‹ČĐČÍĐL}Ča€ČN–a‹NršÉfĘĘĘ‹–ĽÉČśZČP͔ȜÜX´pzÍČpČN¬É–ÜÍ‹®źRtČŽČLšçĺÍa©naNPČšÜĘ–ppˇfapfĘpNČy"
DATA 0 ," pX‹‹LĘpCX‹L‚ĘĘĘfppĘĘĘfCĘppffXfpÜĘÍКɋfa‹ĘLCĘĘ–W¸pCCĘppCffÍÜÍÍŐź‹šÄÉLšŐLfrÜpĘCĘffCĐĘ´ÍŕÍNÜšfÍNČČšLPČÍ©NXČX‹X´LĐ–¬sÍzaɬPÉb´xNŽCp–źzW›¬ČPŚbspŹ‹LYsCĘ~Ü‹ĐČÜĎLj"
DATA 0 ,"› zÉĐN~C—sZ›w›šÜu§u‚ÔfCCpNĐsLČZjNuuj¬YjČf›Íj›•fzusŰyPźbssPźPÍNP›zaČšLĐsÍĐNČšfÍ©™ç}ČĘC©ÍimÍČ€CpfÉCšC–XÍLPPˇĘĐfŮfÉPÉayĐÍ´‹ĐžźČČŐĺŕLfÍ®fš}a–Ę‚YĘÜpÜpNfCpfÉLa–"
DATA 0 ," CĘpp͂ʖ͡ĘfĘĺĺĘĘrĘprrpĘXffĘĘĘpĘ‹–Í‹ĘĐ‚‹fC´pĘffÍ‹–‹ĘCCĘCffff–XÍŃfXĘmĘžLÉ–ČNˇ‹ĺĘCfϮןŹČaČ–pĘpČĐfLšPNšLČČÍš©©Đ‹NŹfČČÉLzÍÍNśNL–ČYCCLujuĐ—NŮNĬpĘÜĘ›jĘCNź––p“LČPy"
DATA 0 ,"ĐNN~šstĺxČ u´zÄbpPÄaY‹Ę®ĘujZuXsjO›uuON´aÉPNťÍjŚťĐ׌bËLš¸ÓPusNxPšĘźNsPsČ›ĐLPzLÉĄCČšśČNČP‹N–ÍČLÜL‹––ÍÜČĎCŮ‚CC›ÍNŽŮNPż¤tСĘL–§sČçˇĐšç®iiš¦Íа‹CŹÜpfĺ–rCpfNČLÍÉ"
DATA 0 ," CĘÉĘĐÉÉÍÍĘf‹ĘfĘĺppĘp®ppCCÜĘpĘpÜf‹‹‹f–ˇp–ź–pÉCCĺffLapĘŹppfŃffXŃŃĎŐifffÉL–XÍLĘ–fĘpfdCfĘfÍšLĐPĐĐ–PL‹‹LCX‹LN–©PLsČrfČ‹zČČÉÍLLÍĐ~׋pf´śLČ›bX›ĐpĘ–yC‚Ę–PÜČÍ›ÍaÉaÍ"
DATA 0 ,"jš›L¬ĹĘĘČuPunÄ––‹Đ–f‹›ĎCĘÉČNPa¬´PŮnŚŰNśˇ–Lu¬u‚uŚušuXPsÉZPuĹsÄCZuŮ~n“zLČNČ}›~Nź~PLP©LĐzYĐf—ÉĐżˇĺˇ–‡riŃÉÉĎŚśĘfĐ‹NČČs¬PĹPˇČÉáxN͢LLL‹çĘ‹ČXČPfČ‚ppĘp‹dP‚®fČLČuLX"
DATA 0 ," pˇÍ‹C‹šCÍŐ‹fpĘpppĘprpŹĘĘpÍCĘĘĘĘCp‹CšLŕĘpW‹ppˇCˇCšš‹ĘĘpĘ‹f®ĘßfXXÍ‹Ďf‹‹ČČĎÉÍÉfˇCpp‹¬LXCN–ˇ‹ČÉLLÍXCČšÍfĘfX‚ÍĘÉČĐÍȡÄsÍČÉz‚ŮNÉ–ŰĐČÍÍpĺˇŔČjjOuCÉÍŹp‹Ę ©ĘʬLpf–Ę–¬Ďuŕ"
DATA 0 ,"LLÍCŹ–źbZ¬šuLÜf‹sÍ–ÍfĹĘĘjŬČYZ‹b´ĐjsĽnÉuÄ›ŚuŚPYŚnsŰÉšbČ©›ČÍĘɬ“~šPC›jČNPšzŮL›ČÉČÍsL‹ÍzLÍLÉNŰ®fĘÍ–ÍĘmCÍsNĺ‹–´ÉšsPˇČnЬ‚C‹ffĘ~ççš–‹ç‹ÍČÍĐÍaÉĘCpĘpfÍNpĘLzťsš¬Ä"
DATA 0 ," f‹–fˇÍpČÓpL~‹pĘĘ‹ĺpʋʋf‹fĘʮʏĘpš–‹LšÍšČpCp‚p‹ĘfCfCpCĘpCX–Í‹X‚ÍÍff–pš–‹Đpf‹‹ÉĘĘCŃ–ÍĘL~śLPL‹CÉLf–Ča–ĘafŐ¬XĐȬȜˇ‹fÍfLwČĐČČÉ©‹ŮL–fÜCĎxw×ŰCspĘCĘÜ´sÜCbjÍLaČ–ĐXuĐ"
DATA 0 ,"ÄašppPs›ŚČĐČÉpÍf–ff–PÉCĺÜP¨¬N¬Č—m`NPNnĐ`—›ŚuŚubĐjuPčnzśZ›sɡjś›´PjNĹasY×LĐ‹LÍ´Ő~Pš×LÉÍffŐ–Üpĺ®ppĘ‹®fr‹XźPfĘNÉÍĐ嬋´ĐÉŘĹçP–Ę×Pf©tçCfÉ©pÜÜ®–ŘͨżXÜŹpfś¦ĘLČĘCWČśÉ"
DATA 0 ," pĘĘpŕCĘĹf–šŕppĘppÜĘÜ‹CpppĘĘppCĘĘpŕĘÍĘ–fLXČN–CĘpÍC‹LCpĘ®ĘfXÍĘĎLmŃaĎÉššf–ˇšNNĘLCppffpĘrNšNśÉŮČ–f–žPÄÜNĘČЬNL‹ČšÉČCšĘCfČLÉfnˇĹ‹ˇs–fĺPnLŮLČŮpppĘCC®ˇCĘPĐČaÍČĐLšsČ}"
DATA 0 ,"ÉPpÜĐsuL›jN}Č‹‹ˇ‹–sfšfĺpXju›–j×usjsnuśjjŮbŮŚCsNŘČa ŚÍĄsÄZ—ĄĐ׬PšĘsźWC–°sÜáPĐj ĘC–CzĺiCaĐĎĐCpźç¬ĹppÜÜfmLŃĐCÜÍĘÉPw–Ču–čFx–ČšWNš\Y×pLçĺpa–ÍNžpsfĺŹpˇÄpÜNsĄ‹ĐNšL"
DATA 0 ," pŕCˇÍÍźÍÍLɡš‹ppCpp‹rpfpCpCpĘĘĘpCÍĎL–ŕŕC›špLC‹pŕfĘšCCpCCpf‹ÍÍźĎXÍXĘĘ–ÉfÍČźLĘfŹĘpfyĘfĘfÍ‹fLCfšLZyLL¬Ča}ČĐÉpNĹČaPLČĐL–‹pC‹Ps~žpġ‹}礩šÄsŔ®ŹpfCCCĘpWsLaLŃasŃfLČ"
DATA 0 ,"`ĘĘPÄ›aÍ–¸–›j€ŕäŮC––ÜĘNjÝšČNN¬j›Ír–sPzYŚŮNŮuCLLys¨ŚuŚ›ÉĎjž–sN—P—žšČnÉpzČj‚ČĘfĐČbXpPsaĐP€ÉNźnfźÍCˇpfpf–Í[CÜČffuČNÄĐššstxÄĐܡÄÉĘĹ}pNÄLfLĘšŔž›^×Ę®ĘCÜ×pĘ–pÄjp¬Č‰"
DATA 0 ," ÍÍ‹‹CÄ“a‹aLĘ–Ę‹ĘppĘppfXpĘĘĘĘpŹĘŹĘ‹‹šĘXP‹ĺ‹CC͡ĘÍĺ‹CĘCCCŹ®f‹ffĘXfÍÍŃffĘĘiČͬ‹rPppĘNifĐfĐĐĘ‹ĘĺaÍNČČ‚šP¸ĐŃÉšaĐN–ÍÍXČrLLfN–ĐP–sŬʋšzXČL׬bpfĘdĺpźĘffÉX}Í––š¬Čfu"
DATA 0 ,"ŚĘś—ĐÍ‚ĐjŮČšPÜPfffŕ‹‹ĘpCĘsČČĎČ—“NNĐ–sLNPu›jjPj—ŹuśŚ¨LfŚŚXNLŐ—¬sN–ÄśĐYšĐLÄsN¬C¬~uÉCĐsĐČ©PŘ´sČLĐĐŽfnšpĘĘÜXÍÜaffĺÍÉĐÉÉĘYHĘOÜ©šČnb—ĘbčˇPsNC–ĘkŚŚŮfčpĘppŹCÜN¬ÍžČČnźP"
DATA 0 ," ššaÉ‹LLpa‹©r–ˇpp‹WpĘpf‹fpfĘfCĘCpĘ‹–‹p‹aČ‹Éff‹–Íĺpš–pĘĘpˇÜ–XĘÍff‹fXf‹‹XšĘ¬ĺ‚ĘNPpCĐžLLp~L´Đ‹ˇČNaĐ‹C‚ppLLšzpfNpÉLLLCĐ‹ÍĐÉaPŮ‹ÉzźrXNȸźYLpČĘÂCÜĘĘÉpCuuL–L–ÍfÉČN"
DATA 0 ,"ÜLPjjÍbšČ×›¬Đ¬–f–~ČNCĘÜä¬aśÉČjaČÍLÉ›Ny¨šŐMĐNZbC´jŚŚŮŚśnLjsLfČZLNbjNzČaĐČ‚NČfPzCPśŰP‹‹Ä~ĐŮs©k¬Đ€f›ĘCĘĘp®jp®ĺxĘĐČ–LCnŃЬ}fmĎççpfçśs––PfśzOžuš‹Ę®pĺfpßĐCCPLÉfźĐ"
DATA 0 ," pĘĘf‹ÍLšÉpĘf‹ĘĘpĘpĘfĘX‹ÍfÜĘXĘXppĘWÜšWfĘŕpÜĘ‹Ír–pĘ‚pCCCpCpfpĘfÜfÜXźÉĘ‹Cp¸šĐaCÜšNp‹NÍź‹XXÍš–ČšĐpĹLfÍČšĐČfaa–pp‹ĹÍĺČšpLP×ÉźaPN‚Épʬ›ŤjŹPĹšĺÜĘĘĺCCCC‹sLPC–ŕÍpÍäf"
DATA 0 ,"CCPśuĘŚš}–¬j›a^‹Ń›N–ÉĘ®LȬĹä¬NsÉsPLfLNČśš©—jjÄ–ÄP´›—ŚuĐŮsfkŰĺ¬zŮÄč—LfśČxČĐ›YzÍfČČŕۡdśŁsĐN›¬ĐPśÄÉČpfÜpĺźfČÜaCfCpCCĘpˇĘÉ«›©¸jçËĐP]W––Č›fÍNP–kÉfÍpĘĘpĘpĐuXLĐ–Ńz~¨"
DATA 0 ," C‹š‹~Cfp‹fCĘ‹pC‹fÜfpffÜĘfpĘfXfppĘ~f––ˇĘfppŕ‹ˇ‹pLNPČCĘCpfpŕfffXfXŃXXĺfš‹pfÍ––p–fĺrÍ}´a–‹fČÍĐ´LLšČšĐÜ–ČaÉ–‹–Ér–sašĐNNf͚ȟsČȩыÉff‹śPÉÉkPrÉ®ˇfĐÍĘpŐĐŮaČfˇĘÍfŐfi"
DATA 0 ,"ťjnĎbÄČČNŚPjČ®jɬ–fĺĘĺnč››OuŮn›aa¬ÍËsP PažP–zsu®ÉZśÍÍ›ÄzsžČśŰYPjŮa–ÄsOĐĘÉ‚—‡ĘpÍLÔČPfźaXLsf¬©É›XaÍČϬprÜÜmXfäŹXCçʸ˘ŮPy•C›YppÜÍÍuCЬjLfÉu©WaLCC®ĘÜX›ĘXLNLČyŕP"
DATA 0 ," ‹ĘWfŕWÉĺ‹ff–ŕÜppp‹ĘpĘXÜĘX‹‹ÍfCŹĘpŕĺš–Ęfp‹‹‹Üffaš‹ffĘĺĘXdCffÍÍÍĺf€Ďfp‹CfÍ––ĘfCÍCpfpĘff–ČššÉÍČ‹XfĺNPršf–ĐźČXŐ‹‚ÜLPaLĺĐžÍČĐÉXźLpĘĘϤ¸zP~a}ŹbŕĘCŚfĺCkŃLfÍPXiXfÍČČ"
DATA 0 ,"çju–ĘČNÉÉfYfĹLfpÍśÍfCŹŹbjjÄ”us¨sLNf‹aLLÉN~ťNxČĐ~sŮĘĐPP—}ŚPP~N–PŔP¬~©sĹ‚ŮŘfĘĺÍz‹LssĐĐĘ©fÉsČÍäŘfÉPafźÍ®ÜÜܬÜŕC‚ČCˇĘĎuLu›`xm®Č NfͬN|śpf‹Í›ŘuĐn¤ĘÜĘfXŐPjXX|ŰČČ–P"
DATA 0 ," ˇfpĘpˇ‹ŕfWp‹‹pppĘpÜpCWĘÜCʡÜĘ‚fpĘÉÍ–Í‹–Li–L–Ęŕf–––pCĘĘĘpÜĺÍfXXXÍÉX‹‹C‹fLLašˇĘĘfÜ®ÜpLpˇČLL–ČĐfLPLČa–ÉĐÉaLÜf–źÍĺNĺPšÉ‚š‹Ď–ĺ–fÉžCĘ–ČžsLNzŐpuČ®ĘŮCĘĘLN›pf¬ŐĘfĘ©›"
DATA 0 ,"PŐjŮLPfLNÍČkČÍpkjPČCfCNĐ”v‹ÉjL©jPś~LaÉʬPLsN©Ä›sŕCkÉáPPbśsČssČsNuZPSNsLČÉ—¨PjĐnĐNśČLsŮ—ÉÄuźĎPÉNŮOÜmÜ‹CÜÍÍĘNČf¦YżĘL–ÉsZ}§‹iCC¨CÉŰÄ–ČČČX©‹Đ–‹zč®CĺĘn}ŚzźfĺxŮzČ–"
DATA 0 ," ‹pf‹f‹W‹fpÜCfppĘĘppfˇpÍfX‹Í͡ĘCŹC‹Ęŕ––¬Íf‹LšÍĺÜ–‹rpppĘpĘfŕffĘĺĘÉÉXĐŕfpfÍfX͡mĘĘĘÜpÍźfĘfLĘNšČ‹Đš‚LaŕfÉLÍ–CLs–¬pNÍpLf›´Y©´sP–ĐÍ–CfĎšzyS©LÍ›ÍĘĘĘpCجPpf®C܇XŐÄ"
DATA 0 ,"ssš—}uuaź–PLĺuNNÉĘpĘP‹j›ĐšźLaPŕsNĐN›ÜĐ©sj¬—›ĎĘjjpžČLuP×ŕ fuPL››ĐLÉCsCĘ›ś›×©ČuŮjL››š€XauČjCÜff|fŃÍ–ÂÜĘĘÜĘĘĐźˇ‹ĘŮz޸CnÉsfPRšaLNČÉČÍfNsP—fž NÜĘ®Ü~sjsL–ÍLXzzĐ"
DATA 0 ," CpŕWĘ‹‹ˇ–‹fpWW‹ˇĘĘp‹Üf‹ĘÍfĘ‹ÜŕrCĘÍpĘÜLfĘ©ŕffWÜĘ‹–LpCCCpfff‚LÍ–ÍÍ‹‹pŕp‹f‹Í––Íf‹šCppŕfÜCŐ‹“źCÉČ––aČÜÍLŇfÍaL—ÍźÉCiPšP‹›Đ¬jČNpš¤U–ppXzÉ–LjŮÜNxÍCpÉfpCPČ©ÍŃÍĘĘfÍŃÍŚ"
DATA 0 ,"PČj”ĐLuPČa›YYĄÉbLCÜĘL“NPNśĐ–źÉNĐČ´–L›ausLŽYu¨ŮLŚjNnššO–j}čÍĺWaČsȬśXČfaŹušuŮbNš¬ÄÉLŕs´ŕpÉsŮÄNs—CWÍ‹ÉĎi®ppÜ–L¬aaCfšPĘs~n١ĹÉnĎ‹ĐČ“NČ´ÉÍ–Ő¬jČLLĐÜĺ‹fzNŮĐLf–f×N–Í"
DATA 0 ," ‹–‹ŕfWĘĘ͡‹Í‹ÜCppppĘXĘfĘÜfĘXCĘ‹ĘLpLĘĘpš–‹Ęˇff‹fÍÍÜĘŹĘĘffĘÍXXÍÜpÍfLPĺpfˇÉfL–pp‹fĘÜÍLĘfNLLÍL–pĐЬL–‹ŕ©fÄC–ĘČLÉ~–PĎLfXĐ‹¬›–¬Í‚ĺpfsWŕČNsͤ–ĘĘĘ®ĘÜ–|bŚšźfpiŐ¸¸CO"
DATA 0 ,"Űj×›§uĘnČpɤp –pfpCÄšŮćŚNźÉ––ČNPLfša–—WĽ›jĺ‹Éجs›ÄŚNžuLPĺzj×fX—Np ÉNĺŚČČjĐČ×Ę›ČsLĐČjšfL蚤ŚZ~ĐĐĺźXsÜšĘĘfĘÍfjt®ČLĐÍÄФˋĘČÍLLL‚aČLЧfČ´b—ťnaĘÜCÜrPaͬ–LĐÄpŐ–L"
DATA 0 ," WWĘŕĘfrffpĘX‹‹CĘpCĘĺXCXĘfÜĘfˇĘfĘĘ‹f‹Ę–CC‹f‹p‹p–‹ffÜĘCĘ‹fĺXˇfÍÍÍÍÉ‹šCfCfÜĘf‹LĐ‹ĐĐŹĘ–LCÍšÉLÍXaÍĘYLN–CÉ~ÜŃÍLCLÍĘ^aÍČCĘ“¬ČssĐNj–prpˇČźXfźĘLŢĘĘCĘĘNČzČ–ÉĘÍÍRŐmĐn"
DATA 0 ,"®ŐuNbĐĐĐĐNuNÜšČÍC®ĘPLNNžPLaĺÍČÉ‹LÍĐĘ~j–M›J›PŃÍ–z›”ŮĘXPzsPP¨C›LpĐ–Üs–CLs×O—›śĐb~©Lz~NaN¸ČNĐŘN¤ZxÄŮpÍźÉČ~ŃpÜĺfÍCfXČÉzç°¤Cj›źźĐˇÉLͬNĐÍĹČ‹źZZjj®ÜpÜĘÜPf¬Yi–Cafsp"
DATA 0 ," ÍÉC‹Cp‹šfĘWˇŕ‹CĘĘpĘpXCp–pff‚C‹Ü‹ÜĘpšppĘĘfpŕĺ–ĘaffÍĘĺpĘ‚fÜfL‡ÍÍÍ´Ďf‹ąpÜr–‹ĘfÍ–fÍfCÜ–fa–Í–‹dČČL–šŃĐšCCĺÜšÍ}L–´ÉÜÍÍ‚Lf›N›z–Nšź~nNĺĘLi–z€ČĘfLĘĘpÜĘpuPÄuÍXĘźfÄm©u´"
DATA 0 ,"šLŮČ–ÄsZ–Cśuuܬ›PĺpCÄaÍm›N–sĐÍufLžĘČ–©ay×É‹`©P´PÄjNśXŮsX›uâÄaPŚČČuĘÄŹu®zuuaĐ›jNzČZjĐiPzĐwuaČĢnjCиĎpiÍ‹fĘĘ–špĘPaČZnCbj›©}žĐaĐÍLÍČ×s´ÍLPŮžfffĘÜrĺĐLÍ–ÄĺrfŘN–Ů"
DATA 32 ," pf‹fCÍĘĘĘĘ‹‹Í–ppfĘĘÜfĘÜfXĘ®ĘĘĘpfĘfˇĺĘ‹ĘÍ–‹–‹ËĺÜfÍĐŹCCCÜĘÜf–fÍffXĎff–ÜĘfLˇ–fĐrCÍĘĘL¬´ÍPČLXf–‹––fˇšĘ¬Üɮ͖ÄfLj~fLfXXaf–fNČȬ–NĐĐpÜźžČ}‰sÜ×L–Ęp®pÜČÄjbš¬p–ĎŐÍŽČPá"
DATA 8192 ,"NufYssçÄjuPśÉĘÍppĘpiĐP–źÄsyjČLCËNN–ÉĹ´nju¬NČWČzzśus›PsĹÍÉsŚ ČĐ ÜŘŃĘp®NMi›¦sŮPČŐLN}nĄ~sÜ©ŘŮ›ÍPjŚŚĺĎ€mŃfĘRÍʡÜL©ŕCLN´›pšçuÉÄmtLĐfi¬Ča––LĘL›nÜÜCÜpĘXźÍČpŐXfÉ~´–s"
DATA 8224 ," pŕff‹CfßŕCfÍfšpĘÜXpĘĘCfppXÜCĘĘĘCCĘĐÍfCL–ÍššLLĐĐ–fLCŹĘĘCf‹ff–ffÍ–ĎÉ‹pppĘÍLČfšČÜÜČCpX‹ŃÜĐ–ÜĘXf–Đf›ÍP–ÉpšĐÍfĐ–Ę~LC¬ĐCfÍfzĐ–‹ŘPÍĐžĘfŹCzNŮ–X¬ÉĺĘpĘĘÜWĹzyLÍpĎLĎϸlÍČ"
DATA 2097152 ,"k¬´PsŮaP—ťLŞXCĘpÍČÍLszfLÄšž ŰSɬÍzLjnšjuťjpź›xÍĘČČġÄjÜjČ©ŚčfŮÍap‚NP›jš›aXLu›Éś›¬PYPĐš”Ps×f––u~CyfXÍŽ¸CĘÜrXY©CÍĐČ›©«¸ĐP…§ÍCCufÍÉf–XĐpĘpÍ´Cprfá–P¬ÍfÉLÍÍĐ"
DATA 2097184 ," wĘpfpĘpffĘ‹Wf–ĘĺpĘfffXCfĘfʡXfpCpĘLČĐĘLĘ–ÍĐĘpf‹fĘ‹pCC®ĘÜpfXÉpXfŃfÍCÜ–ĘL–XašLzfĘfĘĘfpÓ–NźźLLČ®NĘĘNN‹XÍ‹ČfPĘfĎX–~Ď›CĘÍÉXppXfprLČĘĺĎÉZŞžCf“ŃXĘĘÜpĘjNŁNLĘź¬É¸iŐ›nN"
DATA 2105344 ,"ÉÉnaP¬ĎNiž›©ĹÉĘĘfC›L©NĐĐČÉČÉX}Lz›—LÍN‹›ŮŚ—ËNšzČČaÔČĐśNCÄpänNLÄbnĐĘXL¬PLyj¬śjÖĘÉPCLfČČÍf´Č´ ‹—ĘNOÄLLNźfÍÍźLfÜĘCPCÉÉ›jL¤çtPsu XÍn–fLĺfXÍĺ–勬ufĘĘf×sČPfźŮNPPN"
DATA 3158064 ," ˇpŕpfŕŕĘ–C‹ff‹‹ĘĘĺpĘpCffÜ‹fĘpĘĘpCĘpLCaLf‹źfpÍpffÜĺÜĘCĘĘppi–ÜfĘĘĺÍĘš–LˇČÍĺ‹ÍNśppfpp––š–L–ÍfÍ–š‹šf–Nfsʬf–LÍÍČÍÍC‹fN–Ę–fÍbs–ČĐsNLCÍLNNźĺf}‹Č‹Ür®ĘĘOÍPsfpĘ~iĎĎÍĎÄ"
DATA 3159856 ,"Đš–LNÉjÝzNssLCÜÜL`׬崋ĐN‹ÍŕLLaČL––sĐPLsśyNשPs–PLÉsNsŕNĘÄÍOCÄYpNC‚ĘmO›unš¬ËČPjuNf‹Ąj—ssŚjĐušÄu¬uj€–ÉfÉN©LLʡCfXCÍLĘ©jĐ}nNĐÍjçĐ––nXÜĐÜĘ–fRfĘiČfĺĺ®Xs¸Č–LfNŃ´LPN"
DATA 3945001 ," pĘĺpŕĘff‹ĘfÜ‹ĘfĘĘĘĘĘCĘʦfĘfĘXĘCĘXÜĹ®ˇpÜffŕČaÍC‹ffp®ĘÜCfXfXÍŃÍfĘÜĘf~aÍp‹fff–ÍfÜĘCpĘšffŕpLˇĺLĘaaLĘĐpĐffCp–faÉpXÉĘsn×C›¬©PźŃ´ČˇsRĘp‹Y´N§N‹s–Č–ppprÜLLČjÜĐzÉĎÉXLÄšś"
DATA 65793 ,"uu¬‹¸LϬaLujLĘĘܡŮĐuNšNNĐČĺÜjLLPa´¬páȨLPNĐͤšf–PŮĘasĘÍČjŚĘÉCÄĹÉ›ÍufÜzäkunsPÄO}ŮśŘϸwÍČssN©uۧnvnuŰiL‹ŐŐ°źšiĘrp®ÜÜYž–nČŕfi~u¬ÉfĘXfśPff––CÜCNNs®®fÍsĐ–Yź–NĘ´Đu—"
DATA 65825 ," fpĘpĘĘŕfŕpĘpĘXĘĺÜĘĘfĘf‚frXp‹ffŃʦ‹LC–‹ŕš––p–‹ff–fĘCŹĘĺ‹f‹XfÍÜpfÜf‹ÉrĐĘ‹–Ü‹aĘ´ĘÜCĘĘ‹fĺa´fÉ´LaLĐȬĘČšCĺf¬z–pr–׋ÉLsŰfÉĺPNĐÉPNLZjĘppÍ›}sXf©ŘNzCpp®Ę›uzXŹš–XÍźČYÍÍN"
DATA 861953 ,"–ĚʖfL~~Ś~ČČÜppYN—s–LWNĐÍaaLÜ–~ĐČČNLČĐa©ŮÉbČ›Śuz´m–—LP—u®ĺ´ÉȬs×pÜjšuuuČ٬uXÜpf›PXsÉČ`PLNĐsЧČŐfŃĎÍĎźsČÜpp®ĺÜf×ŇžżtĹjź¸LLĹźÜwdĐCśCÍfpfaa~PÜpÜfN~ŰzÍ–ÍĐĐźśs"
DATA 76577 ," ĘpfĘCŕppĘppp‹‹C®ĘCpŕÜĘĘ‹ĘCĘĘÜ‹f‹CpĘXÍĺfLf‹pffĘfšÍ‹pĘĘĘfĺfšfX‹–Üĺ–fÍ‹–ppĘpfa‹ŕĺfÉCÜC–aСÍLCĐĐĐĘfĘĘfÉLfPÜCffšÍšafÍ´ÄšaČśfç—fNNĘrĘrsNstfĘNzĐĘĘpĘĘ–ČnpNXÍÍŃLLXpXĎ"
DATA 3096353 ,"ŘLÍÍn¸—sNf›ĄpprLf͸ÂL×ÍČ–ÍNPNsfÍLÉfXĐN–Č–Č›Ůsf–i‹ÍaŐPyCLzá rpЬ~s×NLĐuĐ ¨ŘPŁLN jsĐ–ŰNs‹ĽssźPČsźYaNfĎ–iɡźLČÍfĘÜĘÜfÜ–…y¨—ĐŔźX‚ČaffÉČLÍzĐaĘpÜNĐ›ťĘCÜÜLLPšĎÍĐ›¬ČNC"
DATA 729403 ," ĘCpCpĘppWfŕĘpĘppCŕfÜĘĘĘfĘfXfXfŕffÜf‹ČfÜšfĺĺ–ppĘĘĘfCCpppf‹‹fĘ–ff–Ďff–‹ĺĺLL‹LL‹LĘšÜĘĘXšĘĘšfLLRČÍfCĘŮÍpĘÉ–ffĺÉL}pašÉČfČrĐĐPĐČĘOžaÜŐĎkČÄž‹NÍÉ›sĘCfpʧĐŐp©Üf~ŃÍ‹ÍXPb"
DATA 459033 ,"PjÄ©čŚĹNšÉNCĘpĺŃ‹fźČXןYĐČaÍNLOŰfa‹ÍĄ~N–ĐLN¬sLĐÍsś–ČC—NN›ŹŚ–‹Í~žus¬‹nasŔťYjs›zbPMPNČ–a“PaČÄY–ČÄ–j×afšXÍźPÍÉÍÍĘÜÜfĘfź~› –Éf¬´aaiĐLf–ĐĐźfrN–nušÜCźÍĐČÜNÉĎPČ—zN—"
DATA 70913 ," ŕ‹špĘp‹fĘ‹ffpCĘpŹppÜ‹fĘfĘĘp®ÜfˇÜfpf–‹pĘʡfWpˇ–ˇffĘĘpĘĺpWf‚‹XrĘffÍ–ÜČfL––W‹–W‹ĐCĘpĘÜfffĐC´ppNšĺfšpšĘĘĘffNL‹fśš‹š–ÍPÉĐš‚NCŰ´P–fĎĘpźÍ©ˇXCšÍ›ÉCpÜĘÜNsÜNPNfĎÍŐÍiÄNP"
DATA 2695437 ,"¬›RPpsÍÍĐLPCÜC©ĐšŐ×XÍ––‹aLNŕ~Ń¸š …šĺaXžN~X‹~OËLNPÉĐŮ–L}PČLXPzsŃÜŮNzsXČŚäLĽNCÍ–ˇNN›NN´Zś–NšÔš¬śL›ČuujźX‹źĎyĺÜÜNCÜppĘÜX蟥ÍиiaL–Í׬N––ÔfĘĺ›Pk¬L‹Ę‹L–iĐLÍ€LĘĐÉkĐs"
DATA 467217 ," pp‹ĘfpĘp‹CfŕfĘĘpfÜfˇCĺCÍÍÍ‹ĘĺpfĘĘŕfˇ‹ŕĘffšC‹–‹ĘŕpĘpĘppÜfĘš–ffÍiÍfaÍf–Ę‹–CpffŕrĘÜffLCfÍC–ĺÍLČCÍÉsNaˇC}NšÉÉLLff©šÉ–LLL–sXŘĹsaX‚ĘrCČPfp–fPšsPCfpĘĘLÉÜLP‚~ÜɬÉÄźÉ"
DATA 81713 ,"©¬uŮś´zĘsrĘ®ÜÉ–SaźČfLĐČźLĐaPšÉNLĄCpf®ĐČĐËnsf–ČĄ©zŮ´fĐjYN¨pŰCĐ––ĹjĐP´Ü´kjbĐs›bPuusNuu€PXĐĐ›xČÉsPLNfXÉÍź¸Ęźa–“×ĘÜCP®ÜÍ›ĐC©ypĘ–ĐN®ZÜ€ÍP‹ĘfP×YÍLĘĘpfĘĐ´pÍČÍN©sP¬Č"
DATA 471321 ," ‹–fpĘf‹ffĘpff®ĘŕpĘffpXXfp‹ppŕ‹ĘfĘĘĘppCppĘŕ–pšÍĘfpÜpĘCĘffÜXĘCfXfXffˇ‹f––ĎÍ‹LLLf®CĘ‹ŕĘĘ‹ÍfĘźp´C–ffÉCÍŮÍĐLfČCĐk–LÍÍÍÍzźNsfśĘfC®f€‹¬ĘL›šaÉfpÜfĘŹ‹ÍĘÉfP–ĘrͬÍČPĐ"
DATA 1785649 ,"–ÍrPÍ›ĺfapĘfffˇLpĺÍČ–ĐČ–Í‹LĐÉČšĘϬaaiu©LŘ—sbŮuL—Üĺs¬LLLĺ~XĐŰNjCÍ—LXÍĘfjuj›NŰšČČjŮLs¬sČNLXÉČaYzuPLLm–ĐŐĐĹŐĐCYÜPsLrpCÍĺÜCÍäpϸsNWĺXžfÍĺĺp–ź—țɖCÜ®ĘĘ~Đsf‹ijĐLs–C"
DATA 471841 ," ‹ĘĘCŕˇĘĘpˇĘf‹ĘĘrpĘ‹p‹ĘÍCĘCĘpĘpĘfpĘppŕ‹ÜfĘĘ–‹‹Ź–fĺpĘpfĘfÜ–LĎfŃXŽfÍfpČĘf––Í–Üa––pCĘfLCC–fÜpĘĘLÍXĎ–‹ĘpfÍšNNÉaCÍ–NN~ĄL–СĐ×––NfLĺĘLŕ‹ĺĘLŤŐjPÜCfĘCfČĘPČ—fLLXfźĎČPČ"
DATA 65801 ,"©LšĐnPsÍÜÜĘa‹N––`–¬šNa–WLa›Éj©f¤śÉN®Éu—ČçŚjśjĐjPĹן´jĐŞLCpuĐkPnÍÍškŞĘš›NPČĘ›us—–LyPNuZP§´sŕj®ČuN~ŮfÍXŃÍŐźPÉĐfjĐÉprpČŮpfČy–źźĐË~–ܜʖfĘĐÜNĐČL‹ÄCĘpĺĘfČČÍaš‚ĐŮNĐ´"
DATA 1650987 ," fŕpĘĘĘpfpĘÍpÜpˇfˇ‹‹‹ĘpfĘĘfffʦCCĘpÍffĘĘŕĘšf‹Ę‹fÍpÜÜÜ®ŕĘÍfXÍÍfÜĺŐp–fÜfp‹XfÍffĺĺCÜĘf‹ffܡpĘpĺ‹ppXĐfCp‹p¬sašĘ‹ČśÍLÉLfLÍLLfxCČfLĘCĘĐNwfÍÍ…–ÍWÜXĘCnCĘssšÍXXf´ĎÍfL"
DATA 2965297 ,"ŮĺPĘ ‹ÉÍĘrĘšŔ‹‚jĄ¬Űu}}–Ę—Cis~–šnMČiur‡šťj›ŮČuĘXu››Pž–Čz‹NN–j| ´fjfkbáfO×sžNuauLšzPjLž PNźČNŕÍČČĹ›pPź‹LĎŮu–fČz–ĘĘŕÜĘjĺĺfŐĎŐ—b›pLjfĘLÜČf×zŰČÉLĘĘĘĘĘP–LÍĐČjs~PÉa"
DATA 1511681 ," ĘĘp‹p‹‹Wpŕŕfš‹pĘĘpfʋʋ‹pˇĘCĘĘĘfĘĘĘĘĘÍ‹f–p}X‹––Í–pCprĘfĘr‚LÍÍLXLźˇffff®–L‹fXÉfÜpĘp‹f–ĘpapÜČÍfL–ĐfÜCˇĘfĄš‹–NP‹LfĐaÜĐfÍffÍ––śL´fppÜ©ĄCĐyafÍťĺĺĘĘĘČCLÄ´‹–LÉÍfRXiL"
DATA 1646875 ,"jfŮrÍŚÄĘĘpČNsÄŚ–ĺR~P¨ÉÉÉÍuZŰÉP›ZuŰP¬ČÉss–ڍjPŮŰ©OP›PN—fPz—´ČufÜZpr®Ľu–jŰbuśuČŚĐ›ZzĐLfĐžČ×PÉLNLLÍÍ–źXĺ´Ca¬–LYdĘX–LCÜÍŐ¸ŐÍsśfÉĐĺL–ÍL–NNĐX–apCfCĘP—´L¬É—sLĐPY"
DATA 78141 ," –ĘpCÍppfpĘpĘĘ‹‹pĘŕ‹fĘĘpfpÍ‹fĘÜfĘfpŕpCÉÍCfCWÜÍf–‹fp®XĘprpfÉĘfšÍffĎL‚ĺpÍp–ÍÜfif‹pĘĘĘŕĘĘÍLÍ–pĘ‹ĘLašßLÜ–LY–ššfĐPÉČš–ĘÉff–€ÉÍÍLfśaĺCĘÉNĘš‹ĐĐLZĘÜÜĘCLĘzÉLf–ĎŃÉ͸ŐÍL"
DATA 68865 ,"›ĎŮxɨepĺĘnnpÍOyCtÍŮuśLĐXLZ‹jÔNjŰuťNpČLŘ ~jÉĐĐjŚuÄž›ťNjnĐNsz–PŐv›ź®pX®fžŘŚŚ›sjZŮNOŚ›nuŘanĺfÍNŰsͬ¨›ffÍŃÉšÍÄŮÍĘ©pČÍĐĺfpśÍfÜNPĐ–~~‹ffĐXĘLpf––f–LsCpĘpĘÍiL|LÍ––~XÍ–"
DATA 332045 ," ĘĘĘCšŹ‚f‹‹ĘĘpĘĘfŕfĘfpĘppfĘfCpXĘĘpÜČNszLÉÍÍfĘ‹p‹ÍŕĘpĘfXfÍÍfÍXff‚XŐšCĺ–LĘĘĺp–aÜršCpĘÍĘCÍL––Í‹L–pLČLa–aLÜžaNx–LÉfXĘLŕNÉÉÍÍaÍšLLĘffLYĺL–ĐČ´źÍXŕÜXÜfÉŔNĘfÍźĎf–©ĎČP"
DATA 467743 ,"uO~ŔČÉ®ÜÜCśnsLÍͬOи čO}}f–f‹NÔ–śLČfmNźjuÄ–j Ä ©NjPĐPNŮuvYĐ®jČšPZ¨pÜšfĐjŮu©ju›Ä›Ůuj Ś›ĐzNĐŃ—Ä–¬LM–aĎŃiźijČ–śŮzPźa®ÜrČsfff׬ŘNČÉfCÜĘj‹ffśNĐfYCĺCpp–ĐŃ–LLÉÍ–ÉÉL"
DATA 80673 ," ŕ‹ŕpĘ‹‹‹ĘĺĘffĘĘprpĘĘfCĘĘĘŕĘĘĘĘp®pĘÜC‹ÜÉpŕ‹–fĘ‹–‹pĘĘĘĘffffXÍ‚X¬ÍšÍÍŕfffpŹfÜÜĘ‹pppĘĘšCpšpf–iÍWĺff‹–¨L‹‹LĘaL–ČȬČČČÜaiÍXL–ÍXaCPĺĘpLĺĘÍÍšźÉ›CÜĘĺÜÍfŘ’ÉŮ–XźÍĐ–~i~f"
DATA 4144945 ,"ÉX~Ę–pĘÜĘNĐź›–ͬ–›ĐŰn–YÍ–af–Í–ĺ}u–ff–Đß–NyȬ¬j}Őš——¬NnĐsjĐPČŁf~NLNPĐpzfŚjSxZuŚNPuŚNŰ~šN´ČĐNYžĐzs“LÍ–‹ĘˇžfÍuČLÍf–iÉaĘĺCÜ›z–fzaסNLNf®ĘL›ČĘajiśÉŚCpĘÜrz–sLfÍ–LšLz¬"
DATA 2830609 ," ĘĘĘĘpĘĘŕĘĘCĘ‹f‹ĘĘĘfpĘfÍÜŕfffXXXĘĘpšfĘ‹ÍĘĘrĘffĘ–ĘfĘĘf®ÍCffÍĎÍĎf‚XĎÍfĺČČfĘÍffafĘĘÜCpfpC‹ĘpŕšLf–Ír–šf‹–LfĐ–ČLСsČĐÍĘĘaÍfÍĎCĐ–ĘšLpÍź“C‚LLLNČCĘĘpÜĘCČÉÍjNÜÍfm‹źÉĎ´ź"
DATA 1784593 ,"ČĹL×ä‚CÜCÉsÉWL–––—š‹LČÉ‚ÍŐÍfĘ–sÉsÉipÍsNNuubĐ×vn v¤›śˇ^“¬NaČLNśX¦ŮPs–fup×®›śPMŮŮON~ŚzNP¬L›sÉ©ŘËĐsĺÍ–¬Ő›LYXź›śŰĘO–LĄNfŹĺĘpÉ|Ęź´LP~ČĺfpÉsN¬śśNj×ČÜffĘXĐLjCa–Í–ÍÉĐz"
DATA 463127 ," ppWĘʡĘĘpCpfĘ‹‹ÜpĘpp‹ĘffŕfĘĘĘpĘÜĘĘĘpfˇpXfff–ŕrppCCp‹ĘÍX‹ÍÉÉ‹X¬Ńŕŕ‹ˇš¬‹Źš‹f–ŕĘpfĘŹĘpʡšpÜÍ‹pĘfʚ͖ˇ–‹fÜLÍČÉ–Nɡf–ffÍĘfLLfrČfÍÜĺfLÜLaLČX´ĘĘfĺÜĘČĘaÉ–iÍÍfLÉf©sĹČ"
DATA 1128255 ,"~sČśWrÜpĄNĐÄ´‹ĘLvĐ–aĐÍaš‹fLĘLfÍpÍyC–ÍĄ–sN~ČPj×ȬL–©pžĐ×ĐÉČČÄO©ÍĐCpC—®fZP~NĐP›—uäŃ×sNNNLĐPŮ~uŘj¨nNÍ–ŐLXźPMPsp‚Đ×LČPÍpĺĺNsfÜiČNNĐ~CÜĘNjPÍX›N›NĐCÜfŕfČjČźźiPLÉĐN¦"
DATA 81725 ," pppʋ͋pĘpppĘ‹ĘfĘ‹pÍ–fXĘÜ‹ff‹ĘÜpĘffŕÍÍÍ‹ffĘĘšĘÜfĘĘĘĘfC–f–XfÉfffÍÜÉL–faÍÜÍ‹–ffĘfĘprĘpXÍ‹rfĘ–L‹‹XČša–ĘLf¸LPŕČ–‹––f‹Ď‹špf–ÍPÍ‹–źĘÜŹÍfÍsČĐśfpĘÜĘCPkš–C–šXÉÍĎĘŐ¬aa"
DATA 466697 ,"ȸѰČĘrĘyNš––ža–ĐLÉr––LfLaŕČLĺ–fNLzffˇĐÍsašČ–uuj ÉaMP›×›aNsĐxŚLČĐĘ›CÜ–ÜLuŚ—×Ö´Ls›PČvPŰŮŮasĐ×N—zn—ČŰ–iŃĎiźĐĐfsČĐNÉ—ĄÜpĺnPf¦›©śČÉaÜÜ‹×LĐNĘÉZya—ĘÜCÜ–sj–fCĐ‹N—fĘ"
DATA 81709 ," PĘfĘĘ‹‹pĘppĘ‹ĘpfĘŕĘĘfĘpĘfCĘfĘÜ‹ĘpÜĘÜ®Ęp‹‹f‹Ę–ÜCppĘĘÜpÜfpX‹ŃXŽÉĎfLÍfÍÍfĘCXfÍpĘĘĘpĘfĘp––ĺÍffĘfÜLČf‹W–‹NĐLĐĐÍÍČź–fĘĘÍ–Lf‹arŐÍfČ×ĘĘĺCmČs–ČNĺf®Ę‹žSjČfÉs–ĺ‹ĎĎ–źĎŃP"
DATA 4010767 ,"“ĐĎ–C®ĺrÉĐźĺLf–ĐJ‹Đ‹ff–nśĘL–Ä–}–Ę–CrLjÍsP‚ŘZ×ÍĐusČͬjP—Đś–L–Ůś›b–u®CĘCnĐ—źu©PŘŰČun—jŮ×kaL–Đ›NnĹš‹iPLfÉfČLÜĐaÍÉfÄipÜÜÍČĘĘÜNsĄÍ–ÜpaČašf~–ašs—ĹppWCLŮsaLÜfNËĺf–"
DATA 196871 ," pĘĘfpCppĘĘĘĺˇppĘ‹‹Ęp‹ĘĘĘCĘf‹Xfpp¦ĘÜÜ‹f͋ʖffĘCpˇĺĘĘĘĘCrÍfÍXÜÍfÜLNš‹–ffCĘf–XCĘĘifÍ‹ĺLĘÜpÍ––ČLˇmšL©afaÍ‹ČÍĐźĘLL–ÍCfĐ‹Čf––fLpCf–‹pÜĘČČ~NȬ´ŕf®fĘz©›ËÍÉÜĘf–źĎLĎN¸"
DATA 80147 ,"L–N›ĘfrNȬšČ‹‹pfČaÍ–––ČČLĐkĐr‚‹Čj–fL×Luť—PٔٛLN›ÉÄĐťzPuuĐszjś›ŮĘŰpĘÜÄO¤ĹjPÄsjnNN›Đkj}ČáĐsujç©uЀ˚‹ČÍm}ɀȖPĐC´ČŘÜp®LŽÜĘzÄPP‹fpLšNffÍČČČuśfĘÜÜXÍaPff–L´®Ę–Č"
DATA 331529 ," pCppĘp‚ĘŕpĘĘĘpppĘĘpĘfĘpĘĘ‹–XfÍĘšĘĘĘ‹fppĘfĘ‹fpˇĘĘpĘŹfĺffC––ÍŃXfa–Í‹šf–ÜXÍš‹pÜÜĘppĘp–‹pf‹ff–špČLź–ÉÍÜ‹WÍźfÍÜppšLCfpĐpL–ĺfXfšiÍCÜÍwpÉÍÍ͸pĘ®pÜpÉNȬs–ČŹfiÉźŃÉÉŽ–"
DATA 2176831 ,"NÍČĘÜĘC©ÍČÉ–ĐĐŕÍšNÍ‹–źŃÍX–É–sŮśas–fĐNL–L›ŮŰ–‹ČĐĘ~©jLśP´¬ž––ČśLz–N§L–ĘÍwzĐjujŮMu¬nsĐusLŐ€LaanPsj~ÚĐL¬ÍÉÍNОɋ–jČsČCNŮPˇffjĎfÜbsĐsĘCrfNNfČ‹fNNOPÍŹpĘŹ¬NČÍrÉ–dÍÖśb"
DATA 71999 ," ĐĘ‹p‹pĘĘĘp‹f‹ĘĘf‹ĘĘÍĘrffÜX‹ŕfXXĘĘÜr–‹ĘpfpffršŕCLpdʂʋ‹fÍÍÉY‚XXÍ‹LźWff塖ČCĘpfC‹ĘpĘffĘČpĘCafaÉ–Íšf‹ˇÜrÍ–ŕĘĘLf–¬ÜLÍf––LfÍaf–LXÍfŕˇfXXĘÜČÜÜ‹ÜĘf´ÉČÉ–a©ÍÉÍfŽiźmLR"
DATA 860433 ,"–źÉĘpĘ–LzšąÉĐÜĐN©ĎÉźĐNm´ĐaLZNÍčś}š—j٩ЖźÉŰÍĐLĐN}×NÄsaa‹šNaf›NOŮNĐÉfÜÉĘPŔOÄsNŚZל¬N›Ů äj—MĐuäŚON›ĎšL–Ő–saNN‹ĄČĐ×f´ČsČÜĺppffuťsŰĺpĘ‹“–‹ÍN–N–ju‚ĘpĘĘNšLLfNy‹CČP}"
DATA 605489 ," fpĘĘĘĘppĘĘĘpfĘĘĘĘpÜĘܡffÜÜÜĘĺf‹pWĺĘffšLČfp‹š–ˇÜfpĘrĘXfÍÍŃfŐÉÜĎXÍĐ–ÍČ‹LNÜĘCš–ÜpXCŕÍCŕĺff¬ĘĘW–f–‹Í––a–ifÍ‹––fpW–fŃÜrffLaĘfLfš–ČĘXĘÜĘfLĘXf–ĘĘĺŹaˇČ~‹ÉĐÄLĎXfXϬLÂnu"
DATA 999203 ,"ÄPŠpĺÜžĐLŃšČLÍČÍLfÍÍČu žÍPšyYŮvĄ‹jY›a–‹N–ĐfXOśzžz~N×PĐL›Ůs›jPPŰ–›Đ©®fĽ¸ÉČj›NŮNśsŚNj××–žn©——nužj›fĎ–Đ|´iźśÍfĄ×Čjršzsśpf®XCfLáסÜĘfĐ×L–fÍsNśNĐ‹ĘWfʦNaÍLĐpÜĐÍsČ"
DATA 854279 ," Ę‹ĘCĘĘpÍpfĘĺfffĘpÜ®ĘĘ‹p–f‹ĘĘĘĘĘĘĘĘĘfĘĘf‹šÍČLX}pÉĘŹĘĘf‹XrÍÉffpXÍÉXÍLŕaLČĘĘÍÍXĘĘffr‹p–CfffXf–Íip–p–f–fĘXf––ÍĘÍ–‹ff¬W–f–pfšL–LLĘÜfĺĺLĘ–f~|ÜpÜÜfÉÄi–ĐÉÍÍÉfÜÍ‹XfĎu”"
DATA 860959 ,"ČĘĘÜ›ŘÍzXNaNNÍČÍĄäÍfpśÉ–¬LLśiLLsČÄCČ‹fÄ–P¬P šYśĐNĐ–ÄÔaśjNÉu›Čsšš–jbnĺ‹ĘjáĐzNL—sLPĐŮśÄPPŮuÚ›śšPbZŃÍĐŐÉ€–N–ffŰPČLÜ–źP›pĺĘ‚ÂĘp—śpĺĺĺpLŰÜÜfzČ´uČpĘf®fšLČÉ–®fČPaĐ–"
DATA 1785661 ," Č–ˇp‹pŕf‹ĘĘp–ĘŕÜf‹Ę–ĘXpĘĘfÜĘXĘĘpppffĘĘNŐfšPYšfLÜpfC‹ffffffÍfXĎÓšffiĘLXĘÜÍffĘĘĘffffffffĺźĘaf––fÜÍL‹Ęp‹fp–ÜXĘffp–‹Í––f‹ĺŕ–´p–ÉĘ‹f–ĐLÍ–ĘNÜ®fÜÜfĘLLN–a–sfÍXfÍ–fÉnj"
DATA 854283 ,"©aĘĘšZNJÉĐČXPČÍf–Đs–ĘšLĐLĐšˇ‹avźĐsÍsL–ĐzPNNLNL–z›NĐšNPÉN›NNL›—jzNujprĘĐźĄN››k¬ĐĐ´sŚśĐspOŘPśsŰ›y—–mŐŃÉČsČÜÜĐsŁĘfČNČNp®ÜNźĺĘNkCÜXpp‹Ĺpp‹L›N}LCCffÜNÄuźÍÜ–Đś}z~"
DATA 66817 ," ĐĘ–ÍpĘ‹ŕšfĘĘʡpĘĘĘÜXfrCĘĘ‹‹ŹXĘpCpĘppÜĘĺpL–ÉLWrÉÜĘŕĘÜfŕÍfÍffÉÍfš‹ffffĘÜrĺ–pĘĘÍXf‹p–f‹f‹fÉpffÜÍ‹pź–CĐffÜĘÜĘĘÜÜŕXÍpffˇpp–L–fČCĘÜfČfĐɚ͖CÜppĘŕuȬaNšŕf‹XYŐČmšç"
DATA 4144929 ,"ÍrĘĘšŮĐšafĘ´ÍÍĐ´zšČL~aČÍsÍfN›PLf‚NźppČLĐČyN“‚śsNLukjš´s–NÍ~sÉČP›sÉÜPNfĘÉssĐzČśMÄĐ©u›uŮĐ—ČkףŘČssPĎÍźÍiÉиČÜLŰsŘ®Đ~É…sČpĺfźXÜ®pÜrÜ®WfuĘffPČaPjCĘĘpĺNjČÜp–ÉNj—jŘ"
DATA 67845 ," ÉLpC‹ĘĘCĘŕšfˇĘpĘĘ‹ĺwĘĘĘĘfĘĘfp‹CpfĘpšfff–ÜĐ‹f––ĘLĘĘĘfÜXĺŃmff‚Xi–ÍĎpNˇŕ–C–ÍÍfĘÜĘÍfĘÜpfĘfpÍĘL‹f‹ÍL–ÍLffĐCĘppĘĺfĘfÜĘCp–ĘĺffÍfÍÍÍpĘÜ–WfĺĘCĘfXffĘpppśšCLÍÉÍ–XČźXÜĘ"
DATA 604449 ,"ĘĘ͸ĎĘÍXšĘˇÍ‚žPpjČĐĐf–a‹ĽisNNjČĐË–s–‹f×ČĐĐsĐĐN››PÄ©s–ÍP¬PČsšfNĐyxjžĐppĘN´×śLs›LĐj›— ŚašLsujP¬Đ‹Nii–iźÍi~rfÉLČÍĘLÍ|ĘśĐÜĘX©źĺÜܡÜfÜÜf}fff¬aÉPŁpf®fL–}‚fpXĄžNsk¬"
DATA 4143935 ," ‹‹pĘCĘĘfĘ‹ĘĘÍĘĘĘĘĘĘĘfŕĺĘĘCŹpf‹rĘĘpĘĘCCšaXPŕf–Ęf‹ÜX‚fXXfÍÍÍfL|‹rĺfˇf–ČXpXÍ‹fC‹ÜXÜŹW–fÜÍCLXŕĘĘLfff–Í–ÍąppffĘfĘĄÉNL‹ÜfĘfffpffrfpĘĺLɡÍĘÜLLˇĘrˇpuj”sfs¸fp–џɓŐÄçO"
DATA 737083 ,"śĘĘÍfÍĐLÜźfźWLĐLfÍÉLaÍČ‹–pĘfÜÜaLśÍNÉɨĐYČfÍLź´sĄźČ~jŐÍfX–¸–ɬNNN–Đ–pWÍĺĘCĐsPÄsČfÉ´zčsŮŰ uuujjj›ZzŚśšÍĎÜÉÄŐ–šĘźČČśff–pĐPĐpÜÜXĎC®ĘÜĘpÜĘXŮĘĺfțțśˇÜÜfÜLNŕˇĘPŘjPjNN"
DATA 735505 ," ‹fÍÍpĘĘĘCĘ‹fpĘfpĘĘĘ‹fÜĘC‹fÜfĘʡĘÜĘ‹pˇŕpĘf‹‹‹šĘĘpppff‹–XÜŕfŐ–ĎÍ–f‹ĘLf‹pf–fĘÜĘĘ‹–pĺ‹fpĘĘĘCffĘfĘLfCÜĐĘšLpĘCp‹‹CNŕšffĘČNČŘČČNĐÍCrf–ÍČPĘr–ÍĘĘfprinĺnÍĄfĘÍÉÍϬŐĐĽČ"
DATA 67853 ,"ŃpfÍf‹Č‚j“JfLÍÍf–ffXLĎĘjŰbjjfĘN‹NĐźÉĘPČ–ČČÄLLsLnĎÍu–ÉĐNP~X›Đ~ŘNĐ—L›afĘĘL›´ČČĐČÍ´Đɬ´jNNĐŰjMŮÄŮŮĐPiźmÍĎÄĎRNŐĐLÍaÍ~—s¬ĘĘrĺ‰CĘrÜÜĘffpNĘ®‹–ŕ×ČsCˇĺfXLCffĎÍ~zPźÉĐ"
DATA 2834237 ," ŕCČĘw‹f‹LšCĐšpĘĘ‹ÍĘĘĘĘĘĘĘfXfĘĘCĘĘĘĘŕLš‹‹fXŕfffĘpÜÜCCĘfÉĎÍLÉĎ–Í––Í‹‹‹ĘpÜfpÍĘpÜÜĘ®rĘĘÜf‹–fÜC–rLʋ͋‹P–p‹ŕppĘ‹ĘÍĐĘÍNNNCČČWjˇÉfCfÍsNČźNNĐCpppf‹NËĐf‹ÜÄC‹–Éɬ¸¬ˇ"
DATA 998705 ,"CXffĐ–Íź€LLLPČs–ČLÍaLˇÉf–r–‹ČÍÍzĐ›u×Ü–aśsjĐfŮÍLĐNśČÉČ–z›ŮuĎČČaNN´ČubuCCŹ›Ő´ĐČNLČN—Ȭsz¨usŰśO›jjŮNL–ÍXź~XYRZfÉPpÜČÍ~zś¬ĺĘĘĘm›CĘĘfÍpĘÜĐĘrĘŕÉN~jʡ–fśČpŹ~źź~L›ĐsČ"
DATA 998185 ," ŕŕpĘŹĘĘp‹fĘCf‹Ę‹‹XĘfffĘĘpĘpĘĘĘĘĘĘĘŹ‹‹CfĘ‹ÍpCšfŹĘÜĘpĘĘCÍ‹fiÍĎÍźÉĘNÉfppÜĘ‹Lf–fpÜĘĘÜffĘĘff––ÍÜCriˇf‹Í–fĘ–fĘpĘĺpĘfĘĘf‹Ę®‹–p‚LsLĘp‹–Ly–ÍPČ×pĺfĘĐĐ´}W‹¸Ő–‹LLźf|š×"
DATA 73515 ,"ŹfĘÍzŕYifźLNw¬ap–ČĘČÍĎÍaČfÍN‹ˇ‹ÉÍ—–ÉÜf‹ĐĐbLĺNa–§yĐ—Đp¸f›NĎNÍL¬šZaŮNuf‹‹~~LNÍLsČaNPžsĐČ—Y©©uČ´›šĘf–ÍX€¸ŽĐĘÍśLp‹ÍČšĐNĐČpĘpf´ÜfĘfĘĘĺXÄfÍfÍÍĐĐŮÜÜĘpCĘp›źPPP—ĐLNĐ"
DATA 856327 ," f͡fC‹Cp‹ŕpfpĘpĘĘCpĘĘĘĘĘÜĘĘpĘĘĘĘCpĘpCźp‹C‹Đ‹šĘpĘĘÜCĘÜfÍÍfÍXX¬ÍĎXČfˇffWĘÜfĘĘfĘĘĘĘÜXÜĺ‹pĘfpfC–fÍLÍLÜ‹fCĘšp–ĘĐšČLšĐŹšCĘÜCW‹f‹Í‚ĘÍfNČL~N¬sNŐĘpĘ‹zšNLPˇĘ‹w–Íf͇Ϭ~ŕĘ"
DATA 76049 ,"ĘpfLuÉ›LLČČXaÍźśÍźÜÍifĺWf‹Í–LÍ‚ĐsNL‹ĘaLš¬ÉLLÍ~ЋЖš–ÍÉ–~sÉź—PČsĐČNŮN¨Č–ĘĘLĐČP}‹aa¨X~LĐÉžNNsa–ĐN©ÄČX͖͸ÉÍLÉfĘĄ›fÜpPLĐ´Ůĺ®ĘpfĐ–ppÜ‹CˇfĐ‹ffNNśČśˇfĘĺpfCrŐÉśs›PÍNĐ"
DATA 865057 ," ‹rŕPaCX‹ĘpĘŕpp‚ĘpXĘĘĘfĘ‹pĘCĘCĘĘĘĘĘĘĘšššĘ‹ŕšš´ÍCpĘĘpĘĘÜĘfÍŃÍÍX‹XÍfp–ĺpĘL–fpĘfpffĺĘĘLpfˇ‚Ęfp––‚–pĘL‹ÜĘfP‹ÍšĘČ‹LŕfĐfffĘ––LÜ–aĘfĎiLf¬Í–ČÉCpĘpˇšĐsЬȖ–CÍXXÍ~ÂXÜ"
DATA 465173 ,"ÜĘs–Nsj§Éš–LĹu†žZÍÍÍLÍ–fŕa€‚Đ––ĐČ×Čfp×pËÉ©X~ČaNWLŮLs—ŮL›ČNźPsiY¬ÍYĐL×Í´Ę–ĐaÍĐĐÍÄ´a¤ĐČNČN¬×ĐŰsiČNNĐPšLLXŽ–ˇs–ÉČLpźŁNÉ—C¬NPĺpfXĐÜCÜĘĺĘÍzĘfšŰLČÍÄÜĺfĺÍCNÉČPsšNĐ›–Í"
DATA 858377 ," ČĘ–¬ČpÄpĘĘĘpĘ‹pĘfĘXĘfĘ–ĘĘĘŹĘpĘĘĘŕpĘĘp‹ĘLÍĘ´‹ŕĘCpĺppĘĘĘXXÉĘXLÍĎĘĘ‹ĘĘpÜĘĘfLÍ–L–ĘŕŕĘĘĘšLÍ‹ĘĘfÜĘaWŃf–ĘĘfĘf–pCLCČ–ŹXffŕÜppÜČČÍĘÉ––f€L–ĐaÉCÜf‹ˇNČÍNžLNÍLpˇ€–fÉmfÜ"
DATA 4142361 ,"ÜĘČźnf×Lf–ÉX}~čzÍLLÍÉÍfÍLČ–śČLaifÍĐŃÜ–Nf—PNzźČĹf–iČȋПLĐiŘ×ÉÉŚPźN~שżLffČss–¬ČÉĐÉN––sÄÉ›š¸ĄP–ssNNĘźifwf¸uÍČLÄĘĎYNN–PNNĺĘÜĘŮfpÜÜpĘi—fĘf–XŘjĘCffÜfĐXČa~PͬLLĐ"
DATA 69389 ," ŕ‹‹Lf‹‹XÉCĘĘC‹ĘĘ‹ĘĘĘĘ‹ÍĺĘĘĘCĘCrĘÜCpppĘpĘpWLfC‹ppŹĘĘ‹XfÍrÍffÍĎÉϡpppÜXpĘĘpa‹ˇĘˇŕffLfpˇ–ĘÉfĘ®pÜÜff‹fLp¸ÜWfpĘČLaP‹É‹–´pĘĘC–pÜÜÜÜpČĘ–‹aLĐČfrŹÜĘf–ĐN©ssÉLXĎźÍĎaČĺĺ"
DATA 860425 ,"®–źaPPfÍÍĐŞfs¸Í–ĺLfÍÍĘša–ŕ––šLppXś‹X‚CĐËžsLś´Đ‹aÍÍf–ÉÄ×ĐN´Lj}ÉČjP–Đ×ÉyPpܬj–ČN©fz¬ČÉ}М˴N´LĐfPśN×ČĎĎ–LŃŽÍĘfĄĐ–ÉČŮśPaLLÄĘfĘ×sÜ®ÜÜÉŃŰÜÜÜLsi~ffĘĺĺp–LŃČL´NĐfa–p"
DATA 67865 ," ffLĘfšŹĘĘ–ĘpC‹ĘÜfĘffXfffĘffCpĘĘĘĘpĘĘĘĘppĘŹĘL‹‹ĘĘpppÍfÜÍÍŽÓźfŃÍYÍappÜpfÜĘffaÉĘLL–‹ff‹ĘffL‹‹ĘÍĘrĺ–pfĐĐ®–ĘpĘÍXfČÜPš–Nf‹–aĺfÍÜĘĘfp–ff––afL–ÜpĘfĐšLˇNÍLČ–É‹–‹ĘČÉmČÜ‹"
DATA 71425 ,"fŕÍČaĐPYĎf‹–LLXÉfŐÍfĺÍXfÍČfpPÍfÍ–XŃLfśL|ÉfÉ›ČĐÍĐXĐu“×Đ“O×ŘY—Č–ŮLĐaž–uĺĺf×ÄÄĐ—ÍĐ×ŮČNĐšNČĐPČĐ–©ONÍaNÍ–ČÉȸÉŐÜÍÉÍĐiÉĐČźČČNĐÉÜC®ÜץÜÜÜ®ź–ÜffÉČČ›–Ę®fĺÜLNÉÉÍaL¬NśLĐ"
DATA 1777409 ," p‹ĺ‹ÍĘp‚fĘp¬ppr‹‹ĘfĘpCĘ‹ĘfÜĘCCÜĘXĘpʡšĘf–‹‹–‹fpCĘĘĺÜf‚‡YÍmÍĎŐY‚fLÍfLÍÍĘĘ‹fÜÜĘÜfšfÜĺCCfš‹‚ff®ĘĘfÍffXf‹ČLfÜpÍĘL–Xp×Č–ĘÍČLpšCÍÜÜrÍff–f–N–®ĘĘXpČa‹ÍČśÍfLL‹Lpff¬L©ÜÜ"
DATA 856335 ,"Ęfff‹ĘpÍf–ÍÍ–¬zpXa–ÜÍ–XÜ–fffaĘĘ‹Ęk¬´ĘNLP›ÉÍ©PaLYL¬Ő¬XLLČÍNžP›´¸ŰyŮzŐN¸ĘĺXuÍÍXXL´ČÍ–ČźaNN×k››ČNaLŮÍĎXŃĎÉŃfÜĘÜ×ŃČfLŃĐ~´ŮŕYĎÜĺĺĘźĘĘÜĺfŰ®rfŘÉŃĐPÜ®ÜffźÉaʬ´PPNČÍs"
DATA 77083 ," ĘCp‹X‹Xf‹‹ĘCĘĘpfĘfĘĘĘÜCrf‹ĘĘfĘfrÜÜĘ‹ÍĺWpš‹ÍfČšpŹŹĘXrÍÍfς͋͟XCšLÜfŕLpf––ÍĘĘÜÜĘfĺĘĘÉ‹‹ŕfĘĺLĘÍ–ÍĘÍPLLÍLLsp‹ĘČ–ÜaĘÜĺ–ÍaĘČafCpC‹‹‹‹¦‹ÍLffĺprÍLšĐLYŐˇXN–Í‹L¦ŃˇXÄÜÜ"
DATA 2830619 ,"ffČÜĘCš–ÍÍLa–LLŃÍpĘÉfffffffp‹ĐŘsLÜĐĐŕkLss´fŕÍPzLrNÄjšźsÍsČ×ĐNČs–´Čź–ÍLLNÜC‹Đ›ś––rÉ~LsĐass—››ĐČÉźjjLĎÍšfÍ‹ĎfŃĘrĐĺ–´ČśLšPsLPmĘĘfpfÜÜC®—ĘÜffČČČĘÜfÜfLL͟ɓŐČČaśĐ"
DATA 2047807 ," CCXpĘĘĘpCĘĘĘŹĘpffXĘpĘĘp‹ÜfĘĘĺĘĘĘĘĘfĘLfW‹LĐ‹‹WʡĺĘĘĘĘĘf‹ĘfffŐÍÍwLffÍfffĘĘ‹ĐÍÜ‚ĘpĘCĘÜp‹fÜÍLfĘ–LÍČ–ČLČzĘXÍXĐČaÍ–fCÜš–ĺCfĘLšLšLĘĘÜÜ–ĺ–fšršĘÜĘĘĘLš–Č‹ÉX‹‹CX–ÉL‚ĎfrÜr"
DATA 68871 ,"–ĺffÜfĐ®XpaLLÉ‹–ÍĐ–ÍfÜ–fÍĘp‹–ŘĘfLČÉÍźfNźN¸Ls×L¬ÍÉČ–LLĎ—–¬LNŮ–Ë–Čn–ż´É´–ĐÍĐsÉÉNÍ´šsČLÉĐ~zNȬjkĐČP—XÍÉaL–ffČĘXffĐaNNĐ××NÄkČ~zaÜf‹rLÜŹÜĺffÍfsĐLNX®ÜĺfĘČÜÍPa´NL´źČĐ"
DATA 737087 ," ppĘĘĘĘCĘĘpppĘĘĘXĘʋܡCppĘÜĘĘĘpĘĘĘĘpLL‹ÍĘCpLpĘpCĘÜĘ–pfÍfX^ÍifLpf‹ffĘfÜpfffĘĘf®fĘpĘCfÉr–Ürf–ŕĘĘ‹–p‹ÍÜšĘ͋ЬÍfĘ–pÍСÍLaaLČPČĘCpĘ‹‹ĘÍČ–Đ–pÜfĘf‹PČÍÍŔŃXLfÍfL|ĎÍCpf"
DATA 3096383 ,"ÍfšpÍ–fS–ÍpČLfX©kĘČWĘXXf–Č–f–LprCX–Č–aÉĐL‹ÉČĐ´aNÍÍ“Éŕ‹f–aČÍf›ŮĐ×sLNiśÍLf–pLÉNfÍČrN–×LuNsž€LĐ´ÄČ–‹NšÍÍLfÉĎŐÜÜa®PsĐČNL~PČÍPŐĺffÜČfĺĘX–ÜÜŃÉ›ŽŮĘĘÜ‹ÜÍLffLLšźČPČN–"
DATA 858903 ," ĘĘpĘĘĘĘfĘCĘĘpĘŕĘŹĘĘ‹ĘĘCĘĘ‹ĘĘĘĘÜŕĘĘĘĘĘCCĘÍĘLpÍfCĘCĘÍ–XŽŽÍXXĘXÍ‹Íf–‹–ĘĘĘfXXĘfĘĘĘÜČpÍfÍĘpĘĘp͖͖͋–LČ–Lff‹LCfp––‹fLČLf‹frLÍÍCĘfffpÍÍfXĘÜĘrĘšrÓĐ‹fČĹČÉ––ÍfÉX–źÜpf"
DATA 65795 ,"Ępˇ‹ÍL–rp‚–f–çOśÍ͡Íj––pXLpĺf~ÍLÜÜLÍÉ–ÉP´ĐÉźźyLXČĐͬ×N–ČĐČĐČ´Í–®–L¬ÜL©Ęĺ–źN–ČÉXČXČNNPĐŘĄLČLLPNĘsŃf–XÍÉÉLźÉ––NČXsLLĄP×LN~ĄÉ´®ÜÜpĘ®ÜÜĺĘfÍfČĎNd‹pŕfL´“L“ČÍfĐĄ¬“€"
DATA 68905 ," ĘppCĘĘĘĘĘppŕĘpf‹fĘĘpĘĘCÜpĘpĘĘĘpCĘĘĘ‹ĘCCČL‹ÉpĘÜĺÜĘ‹ĘÜXÍXfĘÍXYŐCÉ–ffĘXĘĘfĺÜĘfÜCĘÜfpCĘÍCC®ĘC‹L‚–Đf––fLÍÜšĘLpĘrĘÜĘpĘpfÍĘĎĐpCĘĺÉĎ‹ÜÍf‹–ĺfÜpfÜL–É––fĐLLfĐOPXÍÍĘf‹"
DATA 1647401 ,"ffĘÍff‹fÍ–°ZÍXČ]MjzÉČfĐWĘpfX®ˇfČL–aÜ–pp塸´–ŕuÄЂȟ–ČfXŰNžCfzźN›–ifzLs´ÉfĘrrĘ‹‹ŕLźČČ~Nź´©‹–a—aŮČfšfÍ–ÍÉ–fĘĘLÍps¬“×Lf“NźPN›s¬ĐffÜĘÍ–ĘÜfĘp–ź›YsŹpÜpÜLLÜ^ÍÉssaÉNĐ‹"
DATA 2830637 ," ĘĘĘĘĘpCpĘĘ‹ĘĘfŕĘÜĘĘĘĘpÜĘĘŹŹCpĘĘ®ĘÜĘLšff–fˇffpĘĘĘpĘfÜĘXÍĘÍm¬fpLŕLĘĘXpĘf‹f‹XpĘrÜfpĘpCfiĘĘĘpfpfĘšfÍfĘCÜĐ‹‹LÍ~aČÍ–CfLÉĘĘLfĺppĘŃ‹~Ďśpf‹–pfĘpÜf‹fÓšŹšC–É–É©fźÉĎCĘff"
DATA 75031 ,"ˇ–~mw‹‚fLÍfĹÓŕ–š×©ž‹–ČČĘ‹‹fĺ‹fĐ–ĘpffaĘL––NLLČÍ›ČCŃfLĘÍČw–fONsÍ‹‚ˇi–žÍs–´Cp®f–É–LĐf–ĐČÉ–aN›PÉPP×ÉÍ~ĎfLŃÍÍźÍL‹NÍČp–ČjČ©a¬śČČĐPČLĺĘÜfL–ĺ®fÜÜ–zĐÉdĘffĘÍźaĺÍČLLĘCCÜĘ"
DATA 78121 ," ŕpppŹpĘpĘpʡĘŕfĘpĘĘpĘĘĘĘpÜCĘÜCÜCCĘÜfÍXʡĘpĘĘrpĘĘĘpĘpf–fĘXĎ–LĎXLĐrĘšĘÜĘ–Ę–ÍXŕpÜĘŕCÍÜĘÜfĘpĘf––‹fʡĘĘXšf‹®pĘLš‚šfĐÜLĘšpĘCfpÍʡĐLČĘÍpŕ‹ĘĘpĺĘÍNLĘLź––LĘÍfÜÍfÍ®Üfp"
DATA 602429 ,"ÍĘfŕÜÍLÚCfÉ–ÍÄ›PÍaLffÜfĘfrŕĺĺf–ÍÍpfÍČf‹šXÜĘźLŮsspkŘÍLf–fĐifPPnaLff‹–Í›a–prpČP‹fLLÍ‹–ČČÍNLaĐaĐ–ĐLÍČČ–ÍŃÍ‹LŃÍffĐĘLfapf–NLLNLŐNPÜŕr–ÍpÜÜĘpf~NXĹĘ®fÜfÉźĐĐXmL޸fÍ–"
DATA 333577 ," ppCCĘĘĘĘĘ‹ĘĘŕ‹ppĘĘpCĘĺĘCÜfpĺĘĘĘCpfCš‹É‚ŕĘĘĘppĘCCĘCĘĘf‹XX–XmRÜXfĘšCĘĘĘÜ–pÜppĘŕfĘ‹fCpĘ–pĘĘĘĘÜŕppĘš–ĘĺfĘfpĘŕfĘÍLffÜ–ĘCÍĐwÍÍCĘ‹ffPĐfCČ–pÜĘĘĘ~ČČ–LLffČLLLŃÍŃfÄĘĺĘX"
DATA 474915 ,"¬ČLĘLffÍšff‚Ř×ÍXĘĘĐf‹‹Ü‹ÍfŕfĘpĘËf‹fXĐffĘÍNĐLf–f¬Oz›ČLĘÍYźÍ›É×P©m›Lsa×fČLpÍP´ÉLLÍLf–ĹLsNyLN]´fff–LʬiĎŽf–ŽŐÉÉXŮXĐĺĐĺfZĺÍPLÍĎNśNrfÍdfpÜĘLĘf–Đ–´ÜĘfĘĘiĐNfĘÍĐ––Í–Pi"
DATA 4144949 ," ĘĘĘŹpĘĘpĘŕĘĘŕĘŕfĘĘĘCĘCfÜĘCĘfŹXĘĘŹĘĘĘĘCĘĘĘĘpĘpppppÜpCp–fÍfÉĎRXŕrÍĘÍĘfpĘĘpĘĘĘŕĘĘÜXĘŕCfŕšf–XÍf–pĘÍfĘÜfCŕpĘĘprŕpÍfÍCĘaLfNÍĘĐ–pfXÍŕ´šO©ČŕĘfÍĘÜÜÍĐNÉfwj–ÉNpŕXÍXĘ®ffÍ"
DATA 1651007 ,"f–ÜCÍÍaśČfˇfËdÍfÜfLfpfĘŕXWÍ–pX––fÍĘ–LNÉźČ͚іXPPÉpÍaÍfź–¬LpfĎĎĐLP–L~ČXČfL´LÉĎĺXfĐÓÍĐfaašŕśŕff×aÉČ~aŽXfšĎ–zX‡ÉÜLf–nNfsuž›NĐsy—´LĘĘÜÜÜĺĺÜÜĘszĐPÜĘĘfÍrNĐČ––fÍf–ĘLL"
DATA 71949 ," ŕCĘĘĘĘĘĘppŕŕĘCpĘCCĘĘpĘĘfÜĘĘĘŕĘĘĘŹĘÜŹĘpĘĘĘpCr–ˇ®ĘpĘĘfŕĘXÉffšXXĘ–fŕŕ––ŕĘpĘfÜĘf®ŹĘʡpCÍfÍ–ffCĘaĘfÜpŕŕĘĺĘWŕfĘCĘĘĘÜpWĘP–XÜ›–Ér¦ffĘfpÍ…ÂLdĘ®LÜĘʚͬ–ZffĺšLšŔCNLÜ®Xfr"
DATA 604969 ,"CCaÍfŕffwčuÜĘfĘÍCÍÍCĘWfÍ‚fpfĘČÉĺÍN–XÍfĹpĐ–XfŮ›ČfÉ©›XLčČi–u›››fLČ~LČLČÍXˇCĐĎL–ffŕfÍŕšLfWLĐPĐ´s–ĘfffŽÍiimĎLĐŕ–Ďp´Ü–Nj®aZÉL ZsÉ×jŮCffÜlĺÜ®fĘa¬PNĘfXfĘLi–ÍźazNĐŕŕ–Í"
DATA 473371 ," ĘĘpĘĘĘĘĘĘĘŕĘĘCCÍpĘĘĘĘĘĘŕĘÜĘźĘĘĘĘCÜĘĘĘĘĘĘĘĘpfŹpCCʡfÍfŽÉfĘŕfŽĘCpĘŕÜ–ŹĘfW–ĘŕĘĘpĘfĘpCpffĘĘĘŕˇÍĘffXĘĘŕĘĘ®ŕĘXrpĘĘrÜfšfpĘfÍaĘŹĘpĘC‚XĐZNčˇĘfÍÜĘŕÉĐ–ŹXLÍÍLaČĐaÓXpCĘÜĘ"
DATA 606003 ,"ÜpfÍXŕ–ĘffÍfÜfĺpfXf–ČfĐÍźÍfffpfĐf––ˇfĐČafLfXÉLL¬sČjjNĘČĐLLpšYźNŽ×ČNLz´ĐšÍŕPNÉŕa–L––NLfČaÍaÍČĐČNaÜÉfÍÉXfÉźXÜĐfĐ®Ęk–sĐLŮĐPsZNNsP^pÜÜÜÜĘÜŕfaŕa–ĺĘĘXfĐ´iLŰČ~fÉŕ–PÉ"
DATA 1654049 ," ŹŹĘŹĘĘŹĘĘCpĘĘĘCĘĘpĘpĘpĘf¦ĘĘCĘĘĘŕCÜCCĘĺĘĘĘŹpCĘĘŹŹĘĘŕfĺXXĘXĘfĘÉĎŹpfÜfŕpXÜĘfĘpĘŕfÜĘÜĘĘpppCfĘCĘffŕ‚ŕŕXffÜĘĘĘŕĘĘŕpCCCÍw–CXĘLÍNÜĘCĘÜfĐ‚XPÜĺŕ}ĘĘĘ‚ČČÉÉPŕČrČÉ‚NÍܡĘfŕ"
DATA 863001 ,"fˇffšÜfiaÉpf®Ę–‚XXČĘpÜpfÉfĘŕp–fp‚––aČ–ČÍppÄL¬ÄL–ÉfafÍĘĐČuÉXLČÍĐĎzĐĘÍaLÉĺźČaČĘaÜÉĐŐfaÍ–fš–ÜfČL––×ÍXmLÉŐ–ĘLÜśĘCL–ÍLČ©YsšĐN¬ČLĐĘfpĘppĘĘÍz€—PppfÜ–LÉČNNfŕĐfĺ–Č~"
DATA 1785663 ," ĘpCCCpĘĘĘpĘĘĘpĘpĘĘŹĘfĘĘfĘĘÜĘĘĘĘXCĘĘĘppppCĘĘpĘĘpCĘĘ‚ĘX‚ĘÍÍÜŕXŃÍĘĘĘŕĘpŕŕÜWpppĘŕĘĘfĺŕŕŕĘĘ–C‚fXfĘŕŕfŕĘpĘĘĘppĘĘfpCĘĘ–NČĐŹÍĺpĘpĘfpfXĘCafÍfffLÜfÜĘÍČČ×f‚ÍČNĐČŕLCÜŕLʡ"
DATA 67329 ,"ĘfaffÍšXÉ—©ĘfĘCĘf–®pfLĘĺÍrŕŕLfĘĘĐÍÍÉN—ÍfLXaaPÉČ͕ɬ–´~ĘÄĹźu~NLXs×aČÍÍČČfÜL–LČXÍÍĺˇfĐĐ}XLČLÍ´Đ´‚–ŕÍźÉÉÍaŐšŐ|ŃĘLfĘaNČ´ĐP›L¬YĐpNjśÜÜppCpWpXzNLČĘĺrÜÍi–®~LNČĐw–pfŕ"
DATA 4013869 ," CĘCĘCCĘĘĘpŕpĘĘĘpppĘĘŕĘĘXĘpĘCĘCĘwCXĘĘĘĘpĘrĘĘĘĘpCŹpĘĘfXÍfÍfŕpĘÍŃĘĘCĘĘĘĘÜĘ–šfCŕfCĘšĘCrÜÜĘŕŕfŘŕĘf~fpWÍ–ŕĘfĘpĘŕpĘpL–Ęfŕ–NšÍÜɡĘXLfpĘpYĐNČÜĘpšp®CĺfĐXÍNÜLÉÉ–sNapÜĘLCŕ"
DATA 737059 ,"LÍŕ–ÜfNÍÜÍffX–šfffpĘLČfŃÜŕfff–CNÜš|ÉrÍĘf–ŕXL‚®N´ĺĺfÜp–ÜĎÜfWÍÍĐĘNĐČ––fĘaÍš–ÍLšLf–CÍLXLÍNĐ–ÉČfNĐŃ–fXfÉLĎžfÉĘŕĘĘĐČŘLLČĐLĐNɬs´PpĘÜdp®®ÜfXLÍ®Üĺ–NrÓYLĐLźLCfaff"
DATA 4013887 ," CĘpĘĘĘĘĘpĘpCpĘĘĘĘĘĘppĘĘpĘCĘĘCĘŹĘŕpĘĘppĘĘĘĘpCCĘĘCCŕÜfXrLfi͸RmÉĘĘŕfpŕšĘCŕpŕŕpCšpÜf–ĘffĘ–ÜÜÜXÍfĘĘpfŕfÜÜĘŕĘpĘCĘLpfŕÍĘL–pXĘÜĘÜźXfźÜfÍf–ĘffLĺ´Í–Pš¬Xjpf–ĘPNĹfĘĘXŐr–"
DATA 997659 ,"Ęŕpf–ffšÍa–XXCLČiafĘpfLĘXŕpX–Íf–L®fĘĺÜfÍÍŃfŕ®PĘÜfĺŕLsmŃÉŕÍŕffĘͬ¬–fÜĘÍšĺp––šf–––ĘÍ–fa–P––Đ´Č–XÉNĐÍÍĎÉÍLĎĐŃiÍ–ff®ffŕÍfCŕĘjśsȬPfPCŕrpÜC®ŹĘPNÍÜC®Ü®ÍXaÉPČÍĐZNČ–ČX"
DATA 329997 ," CCpĘĘCĘCĘĘpĘCĘĘĘÜŕĘŹŹpCpĘĘpĘĘŕĘpCĘpCĘpĘĘĘĘpCppĘpĘĘpXfXĘĘŕÍÉfXmCĘÜŕ–fĘĘŹŕŕĘpŕĘCŕŕˇfĘ–ĘĘfXffpÍfXÜŕĘffffÜpĘŕfCĘĘĘÜ®pÜĘĐĘĘCĘĘʡiĘĘC–ČŕpĘĘpĘŕÜÍLPÍzNČNNzÉLĘɬĘÜĘLÄÍa"
DATA 2834239 ,"Ęf–LX–f–faĐfČCX–ČĘpĘfpĘÍÍfCff––ČLŰ–P¬dupffŕČCf–pkfĺČËÄČPfz–fÜpÍLfLLšĘL–pfŕ––ÍÍfLÍÍWafŕĐPaĐÉÉČČĐČČp–ĺĘ嬖iĎźXÍf–ĘCÍŘĐpČLLCLLfL–ČssfpĘĘĘÜĘfLÜÉpÜÜĘfÜĎf–ffsšXaÉÍČr"
DATA 868147 ," CĘppĘĘpCpCĘĘĘĘCĘĘppĘĘĘĘŕĘĘĘĘpĘĘĘCĘĘĘCĘĘpĘĘŕĘĘĘĘCCĘĘĘÍfĎźšČYĎŕppŕŕWCp®f–ŕĘfĘpŕĘ–XCÍpp–pŕfŕÍXfÜ–fŕ–ÍĺÜĘ®ŕfÜĘĘÜf®ĘĘCĘĘʡÜCrÜÜŹaaNĘÍĐĘÜʦĘĘŕ´p¬Č–zLNŕŕÄsP–ÜÜÜXÄCf"
DATA 1654573 ,"ŕĘÍfÍÍffpfÍÜČźÉÉ–L–pCĘffLÍČfÍfff›yjXCŕÍ–LÍ–ffpÜfŕfCN×jyLffÍaPš–ÍLĎÉÍČźÉŃ–fĘiÍ–fÍ–f–ŕÍ–Đ–ČOsČĐaŕLpfĘĎf–iÍšźĎ–apafˇNĐŮČ×sĹssČsPÉĐźÜÜf®®ÜĺÍÍÜĘĺĘĘܦÉŕNPČLČLŕ––Í"
DATA 465183 ," ĘĘĘĘĘCpppĘĘĘĘĘĘĘĘĘCpĘĘĘŹpĘŹĘĘCŹCCĘĘŹpÜĘCĘĘĘĘĘĘĘCĘĘfXÍÍÍŃÉÓÍXŃĘĘCŕŕŕpĘĘŕĐfppÍĎĐÜfŕpfpĘĘĘf–ÜfĘĘĘw–pÜfŕŕfĘĘffĘfĺpĘĘÜĘfŕfˇfÜĘfŕĘŕpfˇpĘĘŕÜfpŹŕfL–NČÉLŕLÓ–ČŹÉĘÜŕ~ĎfÜ"
DATA 4013855 ,"ÜXÍ–ŕXfČÜpfa–XpÜCŕĘ–ÍfPfÉĘ–ĘŃfš–f–fĘffÍf–ĘÍ–fĘXfpŕf´Í—YĘ´P–ĐzrffÍÉĘŕ|L–fŕWfffffÍf–fffČLČW–L´ČffÍfÍĎÍŃČŕXŐÉpfpfffšŰNNjĐČ~ŮsaaÉĐĘÜpĘÜĺÜfsĐfÜÜÜffČ–ÍÍÍXYLLLˇ–L–"
DATA 469791 ," ŹĘCpCĘĘĘppŹĘĘCĘĘpĘĘĘĘpĘĘĘCĘŹŕĘŕCĘĘCCĘÜĘĘCĘpĘĘĘCCĘĘfÍĘ–ÍYwšÄfŐÜĘpCŕŕĘp͡pfÜfÜŕŕfŹĘĘŹÜÜfĘĺĘÍÍpfÜĘĘÍ–ffĘĘĺĘŕfĘÜĘCÍĘÜĐÉÍĘŕŕpprĘrffÍpfpĘĘĘfĘpfN¬ČĐČNLѬiŕĘNÍĘf–XXŕ"
DATA 999231 ,"LNČ–LĘÉĺjnPRŕšXĘCĘČÜff–Źffff–´P›ŕĘÜĘrŕĺŐzŮÜÜX–ÍĘÜršÉťČÍL–fŚPNČ–YÉÍXÍÍffš––f–ÜŕfÍÜa–––ŕÉŕČLLÜźsĘÍŕÍN€XŕÍÉ|X¸ÄXafpĘas´}ČÜ––sś››NÍsŹĺ–ĘÜĘĘXNČNÜÜĺĘÜÉÍ€L}–Č–ÍLŕNL–"
DATA 196865 ," ŹŹĘCŹŹpCpĘĘĘĘŹĘĘpĘŹĘŹĘCĘŕĘĘŹCCĘĘĘCĘCŹppŹCĘĘCĘŹĘCĘŕĘŕfĘÍXXXÍXfĘpĘŕ–rĘCpĘfŕĘŕŕfšŕĘpfdĘpŕÜpÜfĘff–ĘĘÜĘ–f×ĘfĘŕŕÜpˇrÜĘĘÍÍCpfĘ®®ĘŕÜŕrfpÜ®ĘfĘfĘÜp–ffÜ–śLNĐČLCLĘ®ĘŕzÍup"
DATA 1648387 ,"ÍĄžĹ¸jNp©É©ĎffLĘĘpfŕŕĘĘfCf®Xf®fÜÍfffÜfĘÍfÜX–ffŕpÜfÜĺĘŕÍČNf–PŃNPŮaaÜÍf–Üp––Íff–ĺËfŕĐĐ–Í–ŕŕPLL®ŕfÉČaÉ–ŃÍwLÍÍŐŽrŽ®ĺfLÍÉsÍLsLfuz›NÍPśÜÜĘÜCÜĘĘÉpfCÜĺfrÍXXfX–ŕ–ÍÍLf–Í"
DATA 598315 ," ŹŹĘĘĘĘŹĘĘĘpĘĘŹŕĘCpĘĘĘCCpfĘĘĘfĘĘĘCĘĘĘÜfŹCĘĘŹĘCpCĺĘĘXXÍÉ–ŕŐXŕźpʡCĘĘŕĘÜf®f®fĘfĘpÉĘĘŹĘĘĘfĘĘCĘĘĘXÍfĘfŕĘpÜ–LĘÜĘĘĺĘŕĘĘfÜfŹÜĘĘ–XĘCfppfŕpCĘĘrĘÜĺÜĐČČL´ŕŕzČN¬čaĘÜfĐX–Ęy"
DATA 1647419 ,"čČžÉz¸pÉsŮÍnnÍ–pŕˇĘ®ŕĘÜffÜpafŕÜXÜX–ÜÉÍŕÍÜÜŕĘfÍfĘŕCÉÜĘÜLĎ–fL–ĘšÍ~LffÍšČÍŕÜfffÜ–ĺf–f–aÍXÍXfŕ–Ž‚ĐfX~zaČX€ÉXÍŐYÍpfĘČÍfNĘpĹN¬Čŕw›s–ÜČ–ÜÜĘCÜCŕĎfŕĘÜpÜpÜpXf–ŕaLÍNÍČĘČ"
DATA 65823 ," pĘCwCĘĘĘĘĘCĘŕĘĘĘCĘĘĘĘĘĘ–ĘCĘpĘĘCĘXĘŹĘĘCĘĘpĘŕCŕĘĺĘppŕ–XĘXÜfÉmŐXwĘĘpĘĘĘĘĘĘĘÜfĘĘĘÍLĘÜŕŕĘÜĘÍÜCĘÜp¦ĘĘrÜĘĘŕfŕfʡfĘĘ–CŕrĘ®ĘfCÜĘĘ–ÜfC®®p‚ŕŕĘÜpĺĘfĘXÍXČČYLÜLj¬ČŕÉpfXČźĘÉ"
DATA 69895 ,"LĽÍLp›‚ÄÍ—ÍfÜ–fĘLĐLÍŕĘCf®pÜffÜff–fffÍfĘÜŕpfŕfĘ–fÍĘÜpX–fÍ–fLÉfafrLšXLÜL–LfffffÍĘXÍfÍĺfˇfLČrĘ–ÍfÜLpÜÜLÍŕLfĎŃĎÍ–ÜÜÍČXf–fĘNNČÉ–ČsjsjČpĘÜÜĺÜĺĘČÍČpÜpffffÍffČĐXÜL–ÜNs"
DATA 864537 ," XppCĘĘŹĘĘŹĘĘĘĘpĘĘpĘXĘCCfŕCĺĘĘCpĘÍpĘÜŹĘĘCĘĘĘpĘĘrĘŹprfŕfÉfÍÉÍfŹĘpŹĘĘĘĘĘĘCppĘfÂÜŹCXÍĘĘĘLffÜĺĘĘfŕ–ĘfĘĺCfܡĘĘĐĘĘÜfppĘpĘĘĘĺĘĘpĺĘÜĘŕfÍXŕĘÜfĘÜĘfÍÍÜŕXÉĘÍĘÜÍaŕĘĘfÉĐ––Ő"
DATA 2047795 ,"©PNfÜjkÜLĘfĘÜÉLCĘfLfŕÍfffrX–rĘXfĘĘĘĘXf‚ÍXfÍÜfÜffšXĘŕĺĺff–ÍÍźXÍÉXˇŕš–fČšĐfpCfÍfÜfÍÍfÍÍff–ÜĘfLÍCfÜiÍfLfXÍfĎXÉiiLÜpXČ–šLLĘN›ŕČÉPj›NNÄÜÍpĺÜ®pÜLĘČfĘÜf–ĐÉN–Íś—ŕČ×LL–"
DATA 3096371 ," ÍpĘĘppCCŕwppĘĘĘÜĘĘCŕĘŕCĘĘĘĘĘĘ‚dpĘĘĘĘĘCĘĘCCĘĘĘŹpĘpĘĘĘĘpÍXÍ‚fÍY‚ppŹpĘĘÜĘŕ–pfffĘCÜŹC¦ČÍfĘXĘĘpÜÜĘĘpĘÜfšÜŕÜÍŕĘffĘĘÜĘĘĘĘpÜĘĘCĘĘĘŕfĘĘĘĘĘrrÍÜfĘĘXÜ–ĘfÍĘĺfXŕÍffÜÉfšYŕY–Ü"
DATA 1642761 ,"LLšËŕĘĘL×–ŰspfÍfČŕf–šfĘp–ÍL–ĺfĘĘÜĘCĘfĘff¦rĘĘffÍ–ššffŕfĘÉfffffÉŕĐL–ÍfXfÍf–ffffrÍLÜÍÍŕ–fÍ––fĘŕࡖLĐÍÍÜÜĺf–fĎĎĎpfÜ®ÜLÍ–NfÍČP›aPNĐLŐČĐĘpĘCĺ®ÜipšÍʏܮʖfrf›ÉPȬuťLÍ"
DATA 1650461 ," ĘĘĘĘŹĘĘĘĘĘĘĘĘĘĘÜĘĘĘŕĘCĘfĘpĘĘfXXĘCĘĘĘpCĘffpŕĘCpĘŹ®ŕfX‚fmfĎĎXfĘÜĘCĘĘĘpÍrŕĘĘCĘĘŕCpÜĘfÜʡprÜĘĘĘĘĘÜĘfppfÜĘpŕ––ČpĘĘfĘĘCĘĘpĘÜfLXLfĘpŕˇĘpÜÍrĺpCÍšŕrLÍŕŕÉ–ŕĘÜŹÜß›ÉčNNÍ"
DATA 69377 ,"XĘÍaˇ›NĺĺfÍf–ÉÍfÜšpCp–Xŕfff–ÜÜXfšpp®LĘÜÜŕĺfffšˇŕŕ–ĺĺfrĘfCĘÜXĘĘÉfLÍŕÍÍÜÜf–Ę–fffÜffÜĘrš–Ü–ÜÉWÍČf–pfÍÍÉfÜfXfĘŃX––Ęfp~É´N–¬NČŕЬ~–PNČÍwĘĘĘĘpĘfCÉŐĘʮܖff®~ɬNŕ¬ŕČNČÜ"
DATA 81697 ," CCŕCĘĘĘĘCĘŕĘŹCĘĘĘĘĘĘCĘpĘĘĘĘŕĘwĘXŕpĘÜĺC–ĘĘšXÜĘĘŹpĘfXXŕŽÍÍŃČÍÍXpCppĘpĘĘXĘĘLšpĘĘf®ĘĘĘĘĘCŕpˇŹÜpfĘĘĘĘÜĘfLfÍ–fŕ‚pĘfÜCĘĘ‚ĘĘĘC®Ę–ĘŕpfĘfĘppfĘfÍĘŕŕfĘrpš–XŕLÍfrÜrŕĘÍPČŮN"
DATA 4144947 ,"ĐpL‚fÜfXXŕYŕĘ–ĘfĐppÜĘĺpÜÍ®–ÜfŕĘĘĘfŕÜÍfpXffĘfÜfŕLČš®fffŕffĘÜfŕfXŕÍ–fÍÍš–XfÜLfÍ–Í–––LfÍffŕXWf–LLČL}ˇpffÍĺÜfÍfÜÉpĘÜfŕÍÉLrÍÓpÍLLŕL‚LLÜÜÜÜÜĘĘĘĘž–ĺÜܸÜÜÜfX–ĺL–ßÍsČp"
DATA 1649935 ," ‚ŹŕĘ‚ĘĘCĘĘpĘCĘĘĘĘĘĘĘĘĘĘXpXŕXÍ–ÜCŹŹpĘŹrĘĘĘfXwĘpĘĘĘfÍf‚ŕÍ‚ĎÍmXĘXĘĘCĘĘĘCpCfĘŕCĘĘĘĘĘpfĘĘfÜXĘr®ŹfĘÜĘĘĘĘ–XfŕšĘÜpˇXĘfpĘfÜĘĘfĘfĘĘÜĘĘĘrŕĘĘpCĘĘĘ‚ĘĘÉfXCf–šLÍČXfrŕXNXfNN–L"
DATA 858913 ,"©RÍLpfXfpfffÜÜCfÍĘĘpÜĘÜšŕŕĘÍÜĘĘĘÜĘŕpiĘdÍÍĘpÜĺ–L–ŕÍfÜĘÜÜfÜXf––ĘfÍpĺĺÜ–LffÜfܡfĘffĘĘ––ff–fÍXÍ–ÍLźNÉNÉfÉÍÜmŕffÍĺf®ĘpfrÜČÍLpLÉfÍͬ´źČĐÜprĘCppĘwÍpfrfXÍafÉ–fXÉXźÍ–źif"
DATA 3227411 ," ŕĘĘCĘpŕCCĘĘĘCĘĘŹĘCĘĘpĘĘĘĘŹĘÍšXwĘCĘĘĘĘĘprÜfŕĘĘpCĘĘĘÍ‚ÍÉ‚YXÜÜĘCpÜŹĘĘĘŹfŕCĘĘpĘĘĘwĘĘfCĘfĘÜŹĘĘĘŕĘXŕf–ppĘfŕŕŕfŕŕpĘf‚fffĘ–ĘĘĘŕÍŕĘpĘÜĘĘĘĘĘĘÜÜXÍfšLfĘL×p–šfpĘĘÜ–LÍiL©©"
DATA 2834207 ,"ÍÍמNsŕĘĘĘĘĘÜfXš–f–LÍLÍXX–ÍÉĎ–LXÉšL–ÍfÉź–Xšp–f–ffŕ–ĘÜÍÜĘŕfÜ–Ü–ŕÜÉfffĘČÍffpĺÜfÍ®––ŕff–ŕ–LfšXŕČPLfLČff–ÜffXffmXŃpÜŕfĘŕfÍ–LĐfXŃL~¸ÍfĐfÜĘĺppĘÜÜPČĘÜfÜĘČĘfXźÜfffÍLffĘ"
DATA 2834223 ," ĘĘŕŕŕfŕĘĘĘXpĘĘĘĘŹĘppĘĘppĘwCĘfÜĘpp®pÜŕĘÍŕÍĘĘCpŹĘXXfXĘšfY€mŃĘÜÍĘŕCĘĘĘĘĘĘĘĘĘĘĘĘĘXĘŹĘĘfp®®dpCCXŕĘĘXĘŕ––fŕšĘĘffĘÍŕĘŹĘĘfCÜpfĘÜfpšfĘĘÜXĘpĘÜÜfĘÜÜĘ–fĘŕL×ĘÍÍÜĘÜC}L––aLW"
DATA 4013843 ,"–fČLÍ×LjĘĘŕfŕfCXLNLČČźšÉČČČČšĐaLLÍLÉÍÍŕ¬ÍÍLŕÍÉiLź–ČźLČźPfLLaĘfrÜLÍf–fÜaÜfĘĘÍ–Í–fÍÍĐLÍf–Íff–LaLĐšrČsXÍXÍ–ÜÉźŕfpdLÍĘfÜffX–p–ČNźÉČfÍĘXĘÜpĘĺĘĘLŕĘrfÜfCĘNŕÜpźÍ^š–Üp"
DATA 1646349 ," ĘŕĘfŕffffĘĘšXŕCÜĘĘĘÜĘĘŕrfĘ‚fXÜf®ĘĘĘĘĘÜ–‚ÜĘ‚XCŹĘ‚ĘĘʡÉXĘf‚ĘXXXfŕĘŕfpĘŹŕfĘrĺĘĘĘĘĘĘCŹĘÜĘĘÜÜCĘfĘĘĘXŕffĘĘfXĘf®ppšĘfpĘĘŕĘCC–ĘĘp~ŕffš–ÍrpĘÜŕpXŕĘfĘĘŕĘpšĘfÍĘĘLĘfÜLÍÉ–Íf"
DATA 2699583 ,"šiNÍĘÖLčŕÜĐpŕĘĘÍ–ÉČČšÄL–sLČLLÉĐL‚ČÉXXČXfrÉXÍÍÍĄŕfÍaLfLfÍXLÉÍÍŕ––ffŕŕLŕpÍÜffÉL–ČLffiL–L–źf¬CLfÍLLÜÜXĎffĘ‚ÜÍĘffLXÜÍŕpfĘŕfXÉY¬ČÉČÜÜĘĘÜpÜpÜÍPÜĘfffÜĺ–fffĘ®–LÜpĘX"
DATA 602921 ," fŕffX–fÉÍÍÓfĘCŕĘĘCĘfĘĘŕpÜĘĘĘÍŕfĺĘ®ĘpĘĘ–ÍĘX‚XĘĘĘŕÜXfwšÍmÉÉÜXČfšÜLŕXĘĘĘfŢppfĺĘÜpĘĘCX–ÜfĘܦf~ffÜÜĘĘrÜŕrĘĘpŕĘpĘ–ĘfĘŕĘĘĘpĘpÜfXCfˇLˇfĘfppÜfܦLĘXÜĘfĺÜĘfŕfĘĘŕfĘPÜffŕ–Í"
DATA 73495 ,"XjÍ–ÄÍuçˇpsuNXp–fff‚Č–ÍfÍiX–LX–ČÉLÉ–Č~Č–pŕÍÉ–Íf–X‚ÍŕĐÍŕČ––fÉLÍÍĘÍĺÍrf–f–LfÜf–ŕĘšÉL®pffaaf–ĎNÍLaĘ–ĘffXLźĘXˇÍaffÜfXĘ–f~ĐCŕ‚ĘÍÍČPŐPźČŕfÜÜpĘppĺšNdÜiĘfpfÜČ–XfĘfÜĺĘŃ"
DATA 466751 ," ŕŕŕŕšŕŕšššÍŕXŕŕĘĘCĘĘĘCĘÍŕfĘXfXXÜfĘÜĘpC–ÍÍXÉĘĘdĘwfÜfĘÍĎÍĘŕÍYXšfšLÍĘĘĘŹĘĘrÍŕfŹĘÜĺĘŕfܦpÍŕÍŕĘXÜĘfĘĘĘĘÜÜĘŕÜ®ĘĘĘĘĘfppĘÍŐÜĘÜĘppfĘpÍpʡĘĘÜpÜXŕXÜĘpÜĘÜffLÍĘfpÜČČÉČ›LźÍ"
DATA 593707 ,"ÜrÜNÉźČÉĘfX›ffÜÍÍXÍfÍ‚–fÍ´ŐĐÍ‚šČL–ÍÉiLfĘĘ^ÉÉČLLL–ĐšČʚʟÍÍ‚ÉÍšafXÍÍ–P×–ŕffCffŕf–LLÜfŕ–Ü–pÍÍĐČÉNÍČdÍÜffXffÜfLĘŃÜffÍXšXĐfĐÜŕaÄĐČLLÉźÜfÜpÜĘ®ĘCpLĘĘĺXfĘĘCŕXŕfLÜĺfÉÍC"
DATA 469273 ," ĘĘfĘŕŕ–LŕššÍÍÍĘĘpšXĘŕŕÜfX‚ˇXÜfĘXĘÜXrXŹfXÉÉšĘĘĘĘĘCÍfĎÍÍŕfXRXÍššLČCĘCĘŹÜÍ–fĘpÍĘfŕfĘXĘĘfŕfÜĘfĘffXĘÜfĘfÍpĘffppʡŕCĘpĘĘĘĘÜfĘĘŕĘĘfÉŕŕpĘŕĘCĘf®ĘĘʡffÍÜÍĘĘĘf~ĐXXÉÍÉXL"
DATA 467223 ,"ČLČfĐČÉŕˇXX––Ę–š‚šÍfXrL–ÍÍXÍÉLĹLÉyNpXĘČXĘ–NŕÍÍšÉČÍĎČÉrĐČLÉfÍfÍÜĎÄ´›ŕŕffĘÜÜŕĘÍÉ‚ff®N–ĺpČČČÍ–aĘÉÜÜĺXXŃÍffXČÍ‚ĘÜfL–LLšfÍrPŕČNNĘaLLĘĘĘ®pˇĘÜÜÜLpĘÜÜʡff–fpĘĘÜCÜfܬ"
DATA 67333 ," fĘrÉpfrfĘÍrššXšĘĘĘpŕŕĘfÜfXĘĺܦXʦĘĘfĘdCšÍLÍĘĘCĘŕĘXXŕXXĘŽiXXÍÉ–šLXĘĘĘCĘCˇXŕCÍ–fŕfr–fCĘÜĘfĘrXĘĘÍĘÜĘpĘĘfffpĘĘĘĘppĘCĘŕXĘĘfĺfpfCrŕÉC×pĘrf®ĘXÜNŕŕfĺÍfÉĘÜŕĘŕfXffÄź^ÉL"
DATA 465153 ,"©LNLÄPÍźÄa¬ÉšÉf‚ÉPÉČYÉaLÍÍŕÉĐLČ}PsaŕČŐÍXL¬ČNĘÍ–ÍÍŕɬɚĐN´ČN¬ĐL¬––¬fÍXŕfĘĘÜŕ–ÜffLŐŕŕ–ÍffÍ–ÍÍLÉÜĐpĘĘpÜĺĘXÍXÍXÍÜĘÍ–LÉNÉXÍŕNČN›ČP¬ÉNĘprÜÜĺÜĘÜÜÍĘĘÜĘffCÍpfÜfffpCĘĐX"
DATA 995647 ," rĘf–šŕšš–fšŕŕÉŕrĘĘĘÍĘŕĘrĘXÜfÜܦĘĘĘĘĘĘĘdÍXŕÍĘĘŹˇĘĘŕĘfÍÍĎXĘÉmYĘĘÉ–ŕŕÜCpĘĘÍ–ĘpÍf–ŕÜĘLffÜĘĘĘŕšrfĘĘfŕŕfĘŕĘÍÍfĘĘfĘĘfĘĘCĘĘŕfĘĺĘXppCĘpXŕଷĘĘ®ĘĘĘ–LX–pŕCpppĘŹfŕĘšf–ÍLz›"
DATA 465167 ,"Í–›LČYÉČšÉPPLȬNzÉLPPLXÍČÍšÉL~ÉšLČPLLÉČšCXČĐššÍaĹČa–ČLĘNaÍsÍssPČ´ĎLČÍÍffC–ffÜfŕff´LŕrLCˇf–LČ–LČČ‚ĘĘĘĺÜXfÍÍP–XĘÜ´ČÍLĐNNNP›N¬ČaĐNČĐfÍ–ĘÜĘĘĘĘpXÜÜCĘXLĐČĘĺĘĘfˇfjÄ›š"
DATA 2047763 ," ĘÍĘĘšÍŕĘfXšŕšŕfĘCpfĘŕX‚CĘĘĘĘfĘĘĘĘÜĘĘĘpŹÉfÉCÜĘĘĘĘܦŕffXXCĘĘššLĘĘĘĘĘfÍ–XÍfŕŕCŕfÍffĘXfŕf–X–ĘŕCŕÉXfĘÍaŕÍ–ĘŕŕŕĘĘÜĘĘfˇÜf‚Íp›É¬–LNa–ĘĘpĘĘfĘ–NÜ–LCĘÉŕʦĹwÍŕÜÜfĘYj"
DATA 860439 ,"pLĹÉÄȬš›sčĽĐNÄPšPPPšNPPČ×ĐPL¬ŐÉČPĐČČ–NĹNpĘČLYPЬÍPČČÄsNs¬sN}ȬČÉČÉĘf–XfÍĘÍÜÍŕffffLXLwLĘfÉ–ÍÍÍLLNfÜff¦ČfÜ–ČfŃfŕN›N¬ÉÍaȬČÉÉÉĐĐP¬–ššÍČĘʡĺĘĘÜĘÜÜfpLfÜĘÉXa°sXĘÍ"
DATA 469265 ," ŕĘĘĘŕrŕŕrfŕÍŕŕrfĘĘCpĘpfXĘĘĘĘ‚ÜXĘĘĘĘĘĘĘĘŕ–šŕŹŹCĘĘÍÍĘfXÍff–^XŹpĘ‚XÍšŹŹŹCŹÍ‚ÍÍ–ff––ĘLš–fĘÍĘL–fÍNĘXLf–a¬aÍŕÉŕffŕŕfĘĘĘfĘŕĘpĘaŕÉrÜLˇÄ©ĘĘXĘĘXw›ssČÍCsĘÜdĘÉĘĘŕĘÜLÜź–É"
DATA 858383 ,"LÉÉPY›NÉjziNNÄNŮČĹČPN´ČPLČPśPNaPN¬¬NLaČLČČ–PČLP×N¬ĹLɬČPNNÉaÍź}aÉL–aXĐ–fŕ–fĘfXĘfLrÍÉČNPČÉČNɬPČÉČrfĘffÜÜX‚źfÍĘŕÄÉLĹĐČČÍČLLLČÉɬČČÍLÉLrppĘpĺĘfÜÜ–ĘĘŕNÜĐNP–pÉf"
DATA 69401 ," ÍŕÍfĘŕfšXšĘĘXXXCĘĘÜĘĘĘŹĘXXĘŕfÜXĘÜĘĘĘĘCĘXÍŕf®ŹpĘĘĘŕÍÍXĎŽYĎÍŕĘCpĘĘĘÍCCĘCpĘfŕXĘ–ˇŕLššaŕÍĘĘCfXÜČXŕXfŕLfXXfšÍŕPpĘL–šLrCŕÉpĘĘpšfLŕ¬Í¬Č–ĘCĘfCp®XČÄŮÄC›ČŕÜĘĘŕpXXfLŕXĘ"
DATA 70925 ,"PÄNÉLs›ČN¬jL››Nť›PPPPČ~z¬PČ›sNsLaLNN›ČÉĐPČPČPPN¬ÉN~PPÉLČ—ÉČÉĐÉNšLĘČŕXLfĘĐaXfĘĘfÍfffÍšŕČPČYźszČLNĹNŕC–ÜĘfĘfĘČĘf¬¬ČŕPȬNšPČĐÉaNNÉ}ÉNĹĐĐLNCÜĘpĺĘffŹĺÍPČPĘCfĘÍŕf–ÍŕX"
DATA 474907 ," ĘĘĘŕXŕXŕŕXĘĘŕĘŕĘĘĘXĘfĘĘĘĘpĘ®ĘfĘĘfpŕĘĘĺĘ‚ÍX‚CŹpĘĘĘĘ^fŕX‚^ÍÍŹCrĘŕĘfĘCppCfĘÍŕfŕfXÍÍpĘXÍĘĘp–ÍLÍLĘĘ‚ÉĘaĘLÍČÜČČNNŕ͚Ț‚Ę´LL¦pL–šPL–ČNLĘĘXÍĘĘpÍČLwCnPĘĘĘ›LÜŕXĘffXŃYŮ"
DATA 863007 ,"sČP›j´¬Ůz¬ČLa›jjŘuNs›ŮNssśN›ĐŘjĐ›Pj—Ů}›}NPČsjNLP›ČsPś›P›ČPĐČaČ–ŕČŕ–fˇˇČaÓpL–ČpÜŕPfĐšNÍČNPNLšČĐLNfÜfĘffXČdXČaNN›ČČPNNLPN¬ČČ~ĐPČČźČaĐĘC®ÜĘfĘÜfÜ–pCÜĘšĘČfÍfÉČĐX"
DATA 999195 ," C‚fXĘ{wrŕŕÜXÍÍÍCʡʏĘĘĘʡŹĘÜXwĘfĘĘpĘĘĘŹŕšffCpĘĘÍÍĘ^XÜmXÍĎCCĘŕŕfLĘCCpŹÍšŕŕ–p–ÍŕŕšLÍÍfĘŹČČ–LLŕĘČfÉšÉaÍÍaČšLÉÉČČČČ–fNĘĘĘ–É~›N¬PMssĘpfLĘĘĘŕÍĘĘP›NCĘĘĘrpĘXfÉÉĘÉL"
DATA 867105 ,"XujPsssŐťźÄ›Nj›Zb›s›NŮPPsČ›››ÄkŰ›sN›ČN›~›Čs}ssŘNNPÄssjÄzjsPČ×PPČPršNȬPÉfČĐŐPČsÄČPÉČČČPĐÍsPČLPśČČČLÜĘŕšÍfXČŕšš¬PPČPN¬¬N¬›ŘČÄĐz٬NČČLȬpÜĘĘÜĘ®ÜÜf–ÍPĺfÍff–ÍČČfLÍ"
DATA 999211 ," ŕŕf–ĘŕĘrÍÍŕfŕŕXĘĘĘCĘĘĘĘĘĘÜpÜĘÍXĘĘĘĘrĘĘĘ–‚ÍĘĺĘCw¦fÍXfÍĎĎXÍŽĘĘĘpĘĘÍĘpĘÜĘŕŕ–ÍšCL¬XźLXČÉĘĘĘaˇL–NCŕLĹLČÉ–ČfÍšĹPČPÍšÍĺwĘPĘÍŕŕČČČ›PĐČsÉĘĘĘjĘĘĘŕpP×ÉPNpfĘĺNCppÍÍŕÍf‚u"
DATA 605995 ,"uNŮ›CYPsj›—u›Śśy©ÄťzŘČss›PLusPzjĄjsNNŮPé¬ČPNsPČNj›N›ŮPjPs¬PPNjȬsj×›N›PČÄašČ›NsN¬jsČjNšPČPČPĐPNźP–ÉŕLÍNÉL¬ČÉÉČL¬NČNĐÄPs›ÄČsNČNN´LČČĐPČCpp®ÜĘĘĘĘXfaCfČÍŕŕĘÍffČfĐ"
DATA 1785635 ," CĘĘrÜŕŕ‚ĘÍŕŕŕÍXĘĘĘĘĘfŹpÜŕwĘĘĘXĘĘĘ‚fĘĘpCÍÍĘpĘĘĘfĘŕmX‚fXÍRŐĺCŹĘĘXfĘšĘC–šPLÉÉ–ĘfČšÍŕȬĘCĘŕLLaÉÜXŕÉLČLŕLsÉ}ČPÉÉČpČfĘ´wÍČjČs¬PLČ‚ĘCĘuÜܡĘNLPPPCĘfĘjČCpĘfXXÍÍÍM"
DATA 737073 ,"NPjÄPŕPjjťN›Ä›u›uŰj››MPzssśjjPPPsPČ››j›PĐŮusLsPs››ÄČśssMČNČusNČN›››—Čś›s›PÍPNP›¬PNĐ×ČČP—NPNČPśÍÉCNČČL–ÉČČŕȬNYČN¬ĐNNČČNNPP´›NNČNČŕĘCĘĺ®ffŕpĘČp–aźLČČÉLLź–P"
DATA 198919 ," ĘpĘrĘŕŕÍŕĘĘXfŕffĘĘĘĘŕÜĘCXĘXĘfXpĘĘĘXĘĘĘĘÍÉĘĘŹCrĘĘĘff¦ĘźŽÍf‡ĎĘĘĘĘXÍCĘŕĘC‚XŕŕšÍ–ŕšČLLÉ¬É‚ŹŹÍŕš––ĘX–ȬaŕČaLÉPšš¬LPźLsŕÜCĘXPLYČNssCŹCX¬ĘĘfCPĹČśjppfÜZÉpÜfÜXXÍÍ|NP"
DATA 81727 ,"Ä–©ŰPÍPsNjÄ›s—Ś—›Śj—uČjNuu—N—s~P›uz›PŮ›sjNN—j us›PsNČj›sPČjNP›NsÄ›śzPNsjsP´NsLsy¬u¬ČČs¬ĐPŮNNŮsPÉLsNĐÉPUaŕÓÍȬÉLČČLȬNš¬šĐPNčP¬NÉNYNYpˇCÜrCfĺfLfrfÉ~źČYČźČNČ–"
DATA 67855 ," ĘĘCŕĘĘŕŕĘÜf‚XfÍŕĘXĘĘĘfĘXÜĘCĘŕÜfÜfÜĘĘĘCŹpĘĘÜŹŹĘwĘĘĘXŞf‚XXŃŞĘĘpfYĹCĘLÜĘĘÍÍÜÍÍ–Íf¬ffaÍCCĘČšĹÍLĘXÍPš–N¬ČĬPÉȬČLPY¬LÉLCXfNÍšŕ}NaĘpCÍĹŹCĘy¬ÉČÄPfifNÉĐ–pXpXfXÜX›y"
DATA 69391 ,"u›sPČÉĹPPPPÄ› ›Ű›››u›sČu›jujŚjŘ›jsPuNPŮşP›Ű›j–sj٬PsjsN›PČŰÄÔsjŮPĐŘśjČsP×›yśNus›PNЛЛN›sNN›Éssj—¬PsPČČČÉPČNLNaČNLNČČLNPÍČšČNNNÄČÉÉNNPPpĘC®ÜfĘĘĘ–CĘfLfÉaĐÍŕČÉÜÉ"
DATA 69383 ," ĘŕpCĘÍfŕŕff‚fŕŕfXĘXXXwpCwĘÜĘCÜĘXXppŹĘCĘŕŹCrÜÜfŕÜĘÜXffĘfdŽfÜĘĘfXXXĘpfŹĘČfCXČfŕŕÍ–ÍšfÍÉpCĘČLÄÍČÜXŕÉĐLŕŕPÉÉÍN¬ÍÉšaÍČšČÍĘXLČNšaČČCĘĘĘÉp®ĘĐÍLŕLĘpĘĘNsČ®CpfLfÉPj›s"
DATA 868159 ,"PÄsuLLČĬČŰsuČz›ÄsuéÄsŚNuŁś›NŰnunŁČNZ›suśČPŰČsPŘzČs—sĐsPsŕ›››sČťsjz›śsČN›ÄjPssPPs¬PNsPsNs¬NČN›NPsNÉČNÄNÄ×ÉČ~NŮĐaLLLNČÉÍ–LČČNČĄPČČČLČLrpĘĘĘÜÜfÜfĘÉÍ~XÍfĘfÍ––ÍL"
DATA 78123 ," ŕšfÜŕX–ššfŕ–ĘĘĘĘXĘXĘĘĘĘĘfXfX¦pĘXĘĘŕĘĘpĘŹĘÜŹĘÜXÜfĘXXÍX‚ʂ͏ÜĘfXĎfĘĘĘĘŹŕPLŕˇÍffĘŕÉÍ–ŕLCCʬŕÍšĹĘÜX–XÉ–ČČÍšÍČLÉÍfÜÍÍ›ĘĘĘfšfNLČÓÉČÜXĘpp®ÜʬXÍN¬ÜĘfĘN¬aXČšĘÉČĬ¬›É"
DATA 1782079 ,"zÄNÉLssÄP¬sÄ›NP›}MbjŮjuP›ŮŰuş›Čsu›ÉĐuyNkj×s››sŁČ¬aNjNNsPČ›ssPNsÍNP›ČNjNPjPbLPN›ČÄPN¬›PssNP›NsÄ—sssNČP¬›¬sČšČÄ›PNPĐČNČČPȬČNÉNsÉĐ›PČPĐ–L–ĘĘÜĘĘĘĘCrĘfČ´Ę–Í–ÜfÍfÍfX"
DATA 1916735 ," wĘĘŕŕfĘŕŕ‚ࡖfĘšÜĘ‚ÜfĘXˇXÜXfÜXĘĘpĘĘfĘĘCĘŹĘĘĘCÜĘĘfŽÍXŕĘĘÍUXdpŕÍ^XÉĘĘĘŹdŕ‚fCšŕŕf–LÍLĐL¬ĺĘĘĘLLXÍXČŕÍŕͬLÍÉNÍČ–LÍXĐfŕ¬ČŇĘʡĘČLLLWÜஏp‚ĘÜÜĘČÉŕN‚ĘCfČÉ–LČĐČÉÉÍÍLNśY"
DATA 198401 ,"jNPČNz٬ssj››P©ŚNzzÄŁuŰ©Ś›ŮŮsjŮ›Pz—NĐÉŮśssP›zÔ›NNs¬´¬sĐČPsPČzsNsŮÄČÄĐȬĐÉPNNNNÄzNs›ĐPĐPČsN›sPPÉNČNČČČPsPČČNšČaśN¬ČČPNȬ¬NÉÉsPČĐČLČNpĘCÜĘÜÜpÜĘÍšÉffšfÍ–fŕŕPX"
DATA 4013871 ," ĘÍÉÍšfĘÍÍĘŕÜ‚šXÉfĘÜpÜXÍfĘÜÍfÜÜßĘCĘĘrXĘŹĘCCÜĘŹĘĘĘÍXÍXÍXXźŐCCŹĘĺfÜĘCĘpCČ–ÍrÍÉŕČČŕLÉÍšĘĘĘCÍČffĘfÍ–šÍYČL–ÍÉÍŕ–ŕ–pĹÉšÍCĘfĘĘLÉŕČČNÜfĘÜÜĘCfĘXČLL–pĘĘÜ–ČČXfČĐaPÉ›ÉYÉN"
DATA 4144959 ,"—NP›ČČjś›s›ĐPN›LPČNssŮsĄPČ››Ű›s›—›NyPPÄŰNPPs›sÉ›j¬ÄPjŮÄsP—PÄj›P¬¬NPNsPÄ}NÍPČÍÍĬNu¬ČPNšPPsP¬aÉČČ–LźL¬ČLÍ–N¬—zNšČYL¬ČNЬN¬NČP¬Č¬›ĐČN¬ĐČÉĘCĘĘÜÜÜĘĘÜČ–š¬–fĘNÍfLÄfÍ"
DATA 2965311 ," ÍŕLŕŕŕŕfŕfpfšfŕĘpXXfXXÍpĎfCÜCrXŕfĘĘĘÜŹWŹŹĘĘŕŕÜÉźŽXŽÍfXpĘĘÉpĘÉĘĘĘĘĘLšš–LšČČÍLÍaÍĘĘfĘĘĘÉfÜšfÉČfÍÍXLÍŕĐfLŕÍÉČĺĐXš–CĘĘĘfÉLÍyÍf–ÍĘfÜfĘCÉÜČÍ–ČŹĘfÍ––ČȖɬLČČČ–LÉÉ"
DATA 999219 ,"ČPČÄsĐNÄČPsPČNśŘs›YzsÄ›PP››PNs›ČŰjPsjPŮÄ~sŰsjZPNĐśPPPLus×ŐŮŮÄ›sPsÄ››ČMLs¬PN¬¬sČNjPPsPsP´ČČNNČaPČČLÍČNsPČ›źČÄNČ´¸ÄČÉNsRaĹL¬ÉPÉÉÉĐČšÉČÉČČ‚ÜÜÜXrĘÜÜfLÉfÍÜÍ–LLfffĘÍ"
DATA 4144927 ," š–fŕŕX‚ŕŕ‚šÍÍĹaĘĘŕXrÍŕ‚ÍŕÍX–ĘfXfĘfÍĘĘĘÜÍÜÜXŹĘʦĘf–ÜŐXŃÉĘpĘCźLÍCŹĘĘŕŕČÍr–fĐšfÍÍŕšffĘpŹpŕffŕÍĘL–fffÍffÍX–ÍfÍÉͬČfÜCĘXÍ–LLͬČXšfpĘĘĘĘÜfČĘšdÜĘXLČČPÉLšÉČ~ČĐLČŰ"
DATA 4144700 ,"PPsN¬¬P¬NPŘsNLssPN—j×z¬éPÉČaČPM—ŰNj›PsPP›jPPzNЬsj—N—sjP¬—ssČP›ČPťsČPNs›ČNÄsNN›NP›¬›ČČČ×ĐPP×PÍÉL٬ĐČźNNČÄPÄ´ĐȬČČÄPиNsČLČLÉɬPÉȬĐLČČČŹÜ®ĘĘÜĘÜfLÓÜÍЬC–Í–ff~Í"
DATA 2105360 ," rpXffÍÍÍrÍšX–fXŕXĘXf–ĘX‚XͦʂĘXXĘĘŕĘĘĘCĘĘĘʦdĘXĘfXXX‚frÉĘĘĹfÄ––ĘĘĘpÍÉf–LXÍšfĘŕXŕfffĘĘCXĘÍŕp^fĘĘĘŕpĘXĘ–fŕʬĘŕĹŕÍȡĘĘfašČÉȬ¬ÍČŕĘÜwÜÜÜĘLfXĘ®ĘĘšLÉPĹLČX´ČsNNČČN"
DATA 16160 ,"ÄN¬››P›s›ČÄPPbPPNjČ×zÄČ›PČ´P~sNPjsNPPťČPN›¬¬PPs›ÄťÄPsPPČNĐNś¬Č×›PNP›PČsĐsLjÉ›ÄsČČČNPPLČČNN›NÄɬČČNÉLLĹČČNNLČČPXČa–ČÍ~¬a´PȬNÉÍČ–NLLŐ¬ÍÄÜpÜĘĺÜĘÜÜČČfĘYÉ–aÜŕfÉĎ–"
DATA 4112 ," LššˇŕÍLL–šŕÍšŕŕšĘĘXĘĘÜŕÍfÍfXÍCfÍXĘĘĘCCĘÜfŹĘpĘXĘX^ĘÜÍĘŃŽwCĘÜÍ^ČXfĘfÜÉŕÍfXfŕf͡–ĘŕŕĘfĘĘĘCĘĘĘÜ–ŕffĘpXCĘÜŕY–ÉÉ––¬ÉÍͬʂĘÍĹa¬ÉČLĹČĹĘĘpÜÜĘĘĘC‚fĺÜÜPNNź›–›ZČLPÉPPXÉÉ"
DATA 2699836 ,"LČČYPČNÄŐPČ›Pź¬PŮssP›PMPsszk¬›Č~ÄN¬››NNŮĐsN´NPČzsÄNLN›ĐPsPPPNŘPNČN~ŘssČĐPÄPȬNPÉ~¬zČČNLNNsNȬNČČNP¬ČPN¬ÄLȬNY¬ÍšNašĹČČNČazÉČLźXÉÍÉ–LLLLÜÍCrĺfĺfLÉfÍÍLÍČšČČfÜXŕ"
DATA 8255 ," ‚ffĘ‚fĘÜĘÉšCÍŕfXĘĘĘrĘXĘĘ‚XfLmÍĘĘĘʏܡĘÜÜÉŹĘĘCXĘpXĘXÍr‚ĎdĘfˇÉXÍš–‚ĘŕfĘffÜ‚ÉĘÜĘŕĘÍfLÍÍĘĘpĘĘĘÜÍLCĘĘÉfĘCfČÉŕ–ŕNŕÍŕÍÍLffŕÉÉNČLÍLÉĘĘĘĘpĘÜŕÉšĘĘXX¬Đ–ČĐL¬É¬ŐLaPNČź"
DATA 2631721 ,"šuPpČPjČNY¬NČČÍź›ČÍjPśNĐ›PNPssNPLČP›´¬›n¬PLÄČN›sPNNsPLNNÉNČÄzš›PPNZČ›sasLLČČśĐĐÄ›ĐPPNPaČȬNČÉ–NÉNĐPÉPPĐČYPNÉzČČaYÉÉČĹLČČÉÉYĐČ–ČLLšLšŕpĘÜĘXfÍĐŃČ–LfLź‚Éf¬LŕÍ"
DATA 4128 ," ‚šŕšŕĘĘfŕfXXÍXÜʦĘŕfÜÍX®ŹĘŕ^ÜÜʦpĘpÜpŹdXŹĘÜʦXĘfXXŐrźŕ®ĘĘXŃšÍÍfXĘfÍĘfŕʡaĘŕ–ŕĘĘfXĘĘĘĘĘLL¦CNÍÍĘĘCfÉfĘš‚fYaÍ––ČaÉÉܦXÉÉPLPČČÉNĘĘĘÜĘpŕfÉ–ĘfĘ^ČĐLĬÉ~LČÍČLČČPP×"
DATA 4128800 ,"´jPzČÉNÄPź¬Ča¬Č´Ns¬NN×NČĐPČPÄ×~ź›sČ›jsjs~Ps›ÄN¬ČNÄNsÍĐNŮĐ´~ČČPÉP›ŘPNśČPźÄsĐNsNČČȬ¬ĐČČ×ČÉĐĐzČÄČPČPšČČÉNNČÉNÍfČČŕaPPČPČYČÉÉČ´ÉLÍLÍȬÍÍ‚–ČYCÜÜĘ–XÜČfNNXLšÉ¬LČLfÉ"
DATA 1048608 ," ÍššÜŕÍÍfp‚šfĹĹXÍfĘĘĘĘĘfĘXXXfXXÜCĘĘĘĘĘŹĘĘpĘĘĘpŹĘXf^XfaÉĘXÉŹĘXĘĘYX‚L–Lfȡ‚rÍ‚LĘfLpŕCĘfXŹĘĘĘÍCÜÍ–Éa–ͬÉÉČźLÍNYšNĹĹČiXĘ®ĘXÉÉšLĐPLCXĘĘCĘĘšaŹĘÜXÍššPČÉÓsYÍČĐsssÍP"
DATA 2101248 ,"sPPYjsŐNLLČNLÉPČ›ČPsÄNsNP–LP›¬ssPsÉČPPČNśPsšČPNsČP¬}rÄČĐͬNÄ›PČĎsČPsČČPaPŐzLĐÉČČP¬NČLPÍ›L¬NLsNĐĹČLNĎLNYČÉČČź¬LÉLČaNź¬aÉŐaČɬČÉ–ČĐNÍš–ÉLĐÉĘĘÜpfĺfČYÍLL´LL–ÉÉraÍX"
DATA 3948095 ," XCš‚‚Xŕŕ‚šfr‚ŕÍÍŕffXŹĘfÜwfXŕÜÜÜĘĘĘĘCpÜÜĘfĘfÜfĘĘXX‚X^ÍXĘĘĘĘCRÉÜ–ÉLšLŕßÍÓXLЬÍÍš¬ÉČČÍff–ĘĘÍĹČ‚šÍĐLiЬ–ŕČČÍÉ–ČÍ–CpĘŕXČŕÉČLLÉĐÍpXĘfCĘĘf´ĘĘŕÜÍÍ–NČLČÉjČČšĐLPNÉ–"
DATA 2697256 ,"~PP¬zÉČ~NNŬ›¬PL¬NÄssN´NÄĐĐPNP›ÄNČsjČPLPČČsNĐÄ›ŮČČNNLP}as´¬NPČPz~ĐÉNNČČČNÄPŮČaĐČśPÉÍČŮ´ÉÍŕ–ĐČÍȬLĐČÍĐĐPNNŘČČrČa¬NÉLČP–ÉšÉN–ÉPČČXLÍČČPĐšLĐL‚ĘpXÍĘĺČČĘÍ–É–ČšČČĐLÍ"
DATA 2105376 ," XŕĘŕŕCrĘŕÍf‚XŕÍrĘĘXXĘpXĘXĘfĘXfĘÜXĘĘĘĘŕCCCŹĘĘĘĘĘiÍÍĎUXÍUrXĘĘÍ^šÉ–ÍÍfÉšLŕÉ–ršLšÉ–ÍÉÉÍÍXLĘfÜĘĘXČČČÉaÉ–NČXČXpČššaÉLÍÉCdCWXPŕÍÉČLČšÍÜĘĘĘÜĘŢPfpÜfĘĘX–a–ÉÉÉP¬ÉpÉÉČČČÉ"
DATA 63 ,"›ČPjZsP¬ČsNÄNNČPNÍyP¬PPNČPLL›NPČČÉÉNÉČLĐP}ajNPČsČsź¬ČNÄÉŕȬšPN›NuNČČČLNÄ–¬ÉLaĐLČLaČÉNÍaČČĐLČLČŮLLaPPNPĎLČČČŐÉĎĐPČ~LČČsČÉLŃČÉLNÍLČČa–LrLĺÉÉwÜfÉaLČÉaČĹÉÉLÉšLf"
DATA 16128 ," frLÍŕĘrĘĘŕffXŕfĘppXĘXXCĘÜÜÍŞC®ŹfÜĘpŹĘŕpĘĘCŹpfXĘŃfѦ^XŽĘĘĘXÍXšaÓÍfššČŕŕffŕš–ÍLšašp–XĘĘĘÉ‚ÉÍYĐÍ–ÉČšÉÍÍLÉfČČLČLLŹĘffXL¬ČČaČŕ–ČpĘXĘÜfXÉÉwĘpÍŐĘX–ČaaL¬ČLČɬX´~Ő"
DATA 16191 ,"ÉÉźPsL–ČsYPsČČPNźÉÉPPČČĐšLŕȬĐLÍČP›ČČÄÄfČČĐPČs¬¬ĐPNNÄČPČČNPЬČÉPNĐPzČPČĐÉN›LÉÉNšLNL´ĐP¬ČNLfLĐČPČČN~LÉČÍČÄČȬĐsŐÉNśa¬La¬XÜÍXČLÉÉfNČČXLͬ–ĎfCpŃÜpLLa¬ĐLLÉ}LÉXÍÍ"
DATA 4128768 ," ŕĘL‚ŕŕŕĘĘŕrÜŕŕĘX®CĘÜÜC‚ĘĘŕĘfŹĘÜXĘÜĘĘĘĘĘCCĘĘÜXpÍffmĺÍŽm|ĘX¦ŽĘÍÉšĐfšÍÉŕČaÉČšÍLŕXLLĐÍĹ‚ĘĘĘp–šÍÉ–ČLšÉČČPČÍÉČŃČLĐÍLpffLÉąÍČLČČfČNCÜÜÜĘĘÜLdĺĘŕNP¬šNÉÉÍ–ÍČNČLČNČČ"
DATA 4128831 ,"¬LšÍČL–¬ČČČÄČÄNNNYNssČNČɬȬNČ›PÉÍYPČČP¬ÉLČPNÉLÄČ›NLPČČ~PNzNNLČNČLP}ĐPśN~¬rPȬ¬NÉPĐNČ–ŐPLČÉPÉČfČaN~a–LaĐPČNÄČĐNÉÉČČÉPšČLÍČČLLLÍÍÉČf–f–ĐČpĘÍÍfdÍŐÉČČYÍÍČČÍaš––"
DATA 4144896 ," Í–ffppÜĘ–Í–XšfĘĘĘĘĘĘ‚ÍXfXXwXĘXĘĘppĘĘpĘĘŹfÜĘĘĘÍXĘÍÄÉfXmŹŹÜÍp‚ÉÜšĐXfšafLšfÉL–ÍÍŕŃLÍš¬ÉšĘŕĘÍÍšÉĐLLÍš–fXÉČLČCLPšÍĐLNĘŕfXČŕLÍÉŕÍLÉ–ÜĘĘÜĘfĘPĘĘʦČČLXŰ~ÉN~šLfČÍČaɬN"
DATA 4144959 ,"ȬXf¬NNŕÉLPLLN´sLPČČNN›ČNÉs¬›ČPNP›NaĐPجP~źLPLĐNČĐĐPsP~sNČPPÄ›PLPČÉČĹČČPzČL~PLČÉaČLaČLNĐNĐČČLČČÉČ}ÍĐsLÍpČČŐšČČfĐ–ÉČČĹČšČafa¬LfNÓÍÍ–šĎffXLĐff~ÍfÜLfLĐÉÍšĐÉČ~¬ČXÉ"
DATA 0 ," ŕÍšĘfĘfČÍĘšaŕ–XŕĘXfĘXÍfĘʦĘXĘÜXX¦ŹpĘpCÜĘĘĘĘXŕfĘfCYÍĘXÄĎܦŹXfĘLfŕšfŕÉšXšŕÍÍŕpÉÉßÍ–XÍŕfrfŹŕÉLÉXLL–fÍLČšÍČÉÍššpČČšĐĘpfXČŕ׬ČČČÉ–šĘÜĘĘCpXĐrĘpĘLĎP¬ČÍNaČÄzͬČNzČP"
DATA 0 ,"Ä×YÍPČÉfČNÉÍČÄČŐČLP–ČN›ČLČNNČLPNaČNČsfČ–ČČČĐČNČČPźČ¬NNČČPNPČLĐfNLÉÉNĐČLÄČÉČÉPĐĐÉLÍPN¬LČLÉČĐ›P–ŕÉČNPšš´PĐLÄ~NLLPÍÉÉČLYLLXČÍČ´ŕÜ–ŃČČźČfiČĘfČĘfPŕ–ÍfŕÉÉÉŐČLÍ––"
DATA 0 ," rXfĘfŕĘ‚ŕfXŕXŕšĘ¦Ę‚fĘCŕĘĘfŕĘĘCĘXĘXĘĘĘĘĘCÜŹÍpXÜfÍXXCźiŕźpĘĘÉf‚ÍĘaÉrÍÍŕšXf––ÉXš‚ÍšÉŕÍšĘpʬfÜ–ÉÉÉĘ‚LPÉNLÉČaĘ–š¬sÉÉŕĘĘfÍČNÍČČČČĐͬCĘpÍÜĘXČĘÜĘrČŐÉČLČŕ~L¬––N¬ÉšÉČN"
DATA 0 ,"ŐPPfšĹ›sLa¬¬PźŰNČ~ŕ–ȬNČČČÄČÉjsPPP¬¬PP¬LPP—sNĐČȬČŐĐČČPČ´ČLNYaÄČLNLČČ–LNsLśÉĹČČšLLÍLČšNNÉaÉ–NXÍ––ÉLŕPfÉP~ČÉČźašÉLČÓĐ–aÉPČ–ČČ´š¬–ÍÍČČÉÉÉaČXLXÜfPÍÍ–fLLLɚ͖fÍ–"
DATA 0 ," ÜXšÜ–ŕ‚ĘfĘÉŕÍ‚ÍffĘĘĘfÜĘĘCŕĘÍfĘ®¦ŕĘpĘĘĘĘĘŹCĘrĘXXXŐĎfÍXÜÍfĘĘŕXŕpLXLfÍČÍ´–a–fÍXšLL–¬ŕÍšLÉĘĘĘĘf–¬LšpÄLÉ–LÍÉÍ–Č–LČÍXĘʦf‡ÉfLšĐÍÉÉČĹ®ÜX¦pĘpĘCÜĘLĘÍÍLÄLÉLĹ›PźČšÉČÍP¬"
DATA 0 ,"NČNČ–ČČY¬LČN¬sÄP›k¬¬PÄPNČYČČP¬N¬NČL¬ČźČ›ČN¬ÄČLPÉLÉLNaČȬ¬P¬NYČsĐÉ›NÉ–NsĹĐšLLšPśPČÉČLЬČL›LL‡Č›PˇŕÉ–L›źLČLÉ–ÉźPÍL–¬ÉČX–aLȬČLȬȬ¬Í–NČfLr––faČŕfpfLČPČLšÉšÉÉÍfÜÜ"
DATA 0 ," Xfŕŕf‚XŕŕXšfXfĘš¦ĘĘXÜXÜĘpÍĘÜĘŕĘŹpĘĘĘĘĘŹĘĘĘCĘXÜfXÍÍmiŹfŹC‚LLÉÍÍLLÍÉČXÉ–ŕfaašfČČŕĘšÉLfpCĘLŕČXÍLNfNLČÍÍšÉfšČÍ–ĘÍĘXŕfÍŕÉĹLšNrNLÍÜ‚pÜdĘ‚–ĘĘĘfLÉšČLÉÍÍČČČaÉ‚ÍÜźĐL"
DATA 0 ,"›P¬źLÍNXaȬ–ČYLÄȬĐaČČȬČČLČ}ɬPÉLLȬPNȬXNLšNČ–ČĄšČPČČLČPČČNČ–ČLzPLPČŃÉÉ–ČĐLĐšźPЬЬ–ČČČafČČĐLČfwÉLL¬Č–~¬L¬¬ČÉźLLÍÍÉČÉ–šLČÍaÉLĐČLÉČLČÍŕĐYfLÉÉŕÍLÉÍ–ÍÉaLLffŕff"
DATA 0 ," ĘŕÜĘfĘf‚fÍÍfĘÍšŕĘĘÜfpĘʦŹfĘĘĘCĘĘĘĘĘĘĘĘdCĘĘpwfCÍÍÉĘwÍfXĘfÜfXÉ–fŕX–ÜÉ––Üff––ÍČ–Í–šÉffÍÉÜ–ÍLČÍ–fÍšLČČÍŕÉÍ–ÍffÍČšÍĘÜXfÍÉÍ–X––ŐÍÉČÍÍfĘŹCLLNÜĘÍĐfPLČÍČ–LÉĐÍÍfŕĐLL–"
DATA 0 ,"PPČYN–ČČźXLÉÉЬČY¬ČsPÄNLfLȬ›LČLČČĐÉPLÉČL¬ÉšČČČPLLÍLLČÉČNPÄźNPYÍÉNsaNČÉNÉ–NĬČLČPźĐ¬ČČP¬NĐČĐČÉČÍfÍ–LNĐNźČLÍPP´aNÍÓPPȬ–šŕÉÍf–ČPNȬšČŕʬa–ÍÍÍÉL–XČ–ÉĎÍ–ÉaaÍXĘÍ–"
DATA 0 ," ÜĘ‚ÍŕĘffŕĘŕŕĘ‚XĘCCpĘĘĘĘĘʦĘfĺwĘÜCĘĘÜCĘĘCCĘ®ĘXpŕĘXĘfX‡XXfÍÍXˇŕŕ‚XÉÍĘXffŕÍ‚LÍÍffÍf–fÜfŕYšÍšÉšŕ¬Xfŕ–fXČÍšČXÉX~ĐLŕ¬Üʦf–––Xš––ČÉ––Ęfpš–ČLČXČЬČfaÉšLČÓ–LĺLȬÍf–š"
DATA 0 ,"źÉLLČČNȬÉČŬPÍÉÉLČČÉša¬LČČÉČČÍÓLNČ–¬LNČȬÉP–ĐN~PPČČČiČLNČPÉÉa~Yźš‚ČÍšČÍČŐÉČNNÉĐaÉLXČÉĐNÉČÉLČĐźÉf–ÜČÍĐNČŐÉÉČLLLČČĐČLÉČĐ–X––LÍČČLź–ĐČÍff–ÍČ––ÉČNYNšÍ–LÍČÉLLiŕÜ"
DATA 0 ," ĘŕfpŕĘĘĘXXŕĘŕfŕCĘpĘf‚ÜĘX‚ÜŹÜfÜÜĘŕĘŹĘŹÜĘÜĘdÜĘrĘÍfÍĘÍ‚‚CÜXXXXLfWŕÜĘÍfršfÍÉÉLÉÍf–pfrÓĹLfČšÍÍÍČYXXXŕLfLNšXÍŕšÉPfXŕpfÜÉPXĘ––LfNÉČfŃŕŕČÉČšXXČ–LÉÍÉÍšźšÉÉLÍČNš–ČÉÉ"
DATA 0 ,"šÉÉÉLȬÉÉČĐPÉN~Ȭa–ašÉLЬX–ÉÉ~ɬaÉsÉNČaÉČČÉNÍÉČPČČĐČN~ĐLČLČČȬN¬ČPšĐĐLČšNNNPPaNšČNČšČÉČÉPČČPNÉČĐČČČČČLČĐÍaÍ‚ČsĎČČLPĐĐ–ĐÜÜfɟКÉaČÉČP–L–ČĐÉČLfÍpXÉLaLpLNLLšfÍa"
DATA 0 ," ¦XÜrĘŕĘŕfĘŕŕŕÍŕfÜĘĘCÜwÍÍfĘ‚¦^XpˇĘĘŹdÜCŹŹCCĘĘŕf¦ĘĘÍpmXÜpĘĘÄXXffX–Ír–ÜČÜLÍLÍÉÉÉÍŕ–ÍXfĘÉÓšÍŕÍŕfÉXČffLŕLfÍ–fXܡXÍÍšÜĘĘŃĘÉÉÉÍÍšfff¬aÍÍšČÍÉi¬ˇÍ–ÉÍÍrČŕÉa´–ÉLaXÍČšPČa"
DATA 0 ,"ČšaČÍĐ›LšÍŬNČÉÍf–¬‚LźPĐLÉšÍP´aXšÉ–šÄÉČÉsššÍ¬¬aPPNLNaÉČČÍÉLČ~NČČČaÍĺNČšĐÉ–ČLЬČČš¬ÍaĐČ–ÉÍLLČČaššPLČÉfÍfČLLɬŕ~¬PźÉL€XL‚Ífff–ÉČaČČLLÉĐÉšLaÉÉČĐfČČaLČÍšÍÍÍÉÉa–X"
DATA 0 ," ŕfĘĘĘĘĘÍf‚XXĘĘŕÜĘĘĘ®XĘÜfͦĘĘÜĘĘĘCĘĘĘpfĘŹpĘÜĘÍfĘXÍŐfŃŽÍŽĘffŽĘaf–fXˇCšĘÍšÉXÉLÍŕ‚–fLČĘĘŕÍŕÍÍaČLÜfÍÍÍfÜLÍÍŕšNÍšĐÍ–CĘŕXfaÉÍp––ĘÍÉNŐ–ÍČpLÍČfL–fLČLšXXfČČšLČÍ‚ČÉĹ–L–"
DATA 0 ,"LČšŐŐaN¬¬ÉČÉČĐČ–ÉŕČfLfČPČČČČLLL–NÓÍĐĹaĐĐÍź–ČÍĐĐNČšČĐČLNÉČČČÍÉÉȬȖLÉLPYź~piL¬ČX–LČkfĘĐfČÍLČP–ÉĐPźPfÉfŃźPL–ÉLÉXČf¬–´fÜÍČXÉ–ÍfLaLČźLLČLLÍČČ–Č–ĐXLXfLpf–Í–Í–ÉfÉXĘ"
DATA 0 ," ŕŕŕÍŕ®ĘCĘŕŕfĘĘĘĘĘĘĘĘĘĘŹfÍC®XÜŹŹŹÜÜŹÜŹĘpŹÜŹĘĘXÜŕfÍX¦ĘÍ|mÜmŽ–XÍfÍ–YfÜÉšXŕÍXLÉÍÍffLĘ‚fLÍ‚LɬÍĘffČYÉÍČČrÍLfLČ–ÍLrĘX˝ČLÉLÍXÍ–ÍĐČfÉ–ŕÜfLfÍ~źÍ¬ČšaÉŕ–ÍÍšÍLNĐČČL›"
DATA 0 ,"LPŕČĐ–sÉfČÍČČPÉN–NČfĐÉČPČLÉČNČYša¬LLYNLÍaĐL–NLĐÉČÉNLaČN–ÉPLŕaLNLNŰ~ČČČLaÉaaLśpÉXYÍ€ĐfaL¬LÉŕLČČČÉÉÍČÍÍLČĐČ–ŕfÍLźaLČÍfXÜÜfÍfrŕaLÍźaÍNß–LÉ´LÍÍ–LÜXÉĘź¬–rÍĐX–C–"
DATA 0 ," ŕfĘĘŕXĘŕfÜX‚pXCĘĘÜĘXÜĘĘfffpˇĘĘĘĘĘĘŹÜÜĘĘĘĘrĘfrĘfXÍĘŽf|Ę^͸XÜĘ‚ˇźLČšÜĹÉXLLÍĘpXLLÍšLfÉÉČÍÍ–PrYXŐÉČČŕXÍÉÍšfĐrLÍfÍrÜfÜaÉLČaŕff–ÉÉČĘ–ÜafXLLÉÍLĐŐšÍLČXÍÉ´¬ĐÍČLČLŕ"
DATA 0 ,"ÉČČPČĐÍÄÉÉÉLaČLČNN¬PÉȬȚš¬NČĐÉÍLÉČ–Ői¬–ŐaLLrX–Í–LŕLNČfŕš×ČL–PĐÍ–Đ~ÍPĹ´ČĐšČŕšXÉN–N¬NČLŕfŕČČaČLLÍÉČ–¬Č–šÍLÉaźÉĎLLfÍĐÍfɬf–XffĺĘČLČPL–ČČLČÉÍĐČNŕČČČĐÍšĘÍÉČɖͬ›¬¬´"
DATA 0 ," ĘŕXfĘ‚ŕĘĘĘŕĘĘŕĘĘĘfÜŕpܦÜpĘÜŹĘXĘÜŹĘCĘĘŹÜÜĘĘĘĘĘXĘĘCŽޏŕfŞźXfÜɡfĘXfLXÜfÍÉLpÍŕffXČÄNČČÉ–ĹÉLXLĹÉ–ČÉČŕLLÍPČašffLÍfšCp¦É˝¬ČˇČÍÉÍfaÍšfLLÍŕÍÍÉĘfLÉÉNŕĹÍÜffNšLÍaLšÉĐL"
DATA 0 ,"zLÍiЬ–š´LČÉÍČYLÉÉĐČÄČP¬ČĘĹNČĐL¬ČÉÍČLfÍÜÍNĺÉÍNĐČÍLL–Đ–fšL}ČČČČČ}Lͬ¬NÍsČČL–ĐĐ–ŕLĹ´Í×aÉaĘŕČ–LLÍČLšÉÓÍÉÄČÍLLÍaLWLfÉL–pÍŕ¬Ü–f–ÍÜÍÍŕČfČČÉÉ–LLLÉNÍÍČÍÍafÉÍÉÉLĐÍÉČÍÉ–"
DATA 0 ," ŕĘ‚XĘdfCĘĘ‚ŕfĘ‚ŕĘÜÜĘpŕÜĘÜÜĘCĘÉÜĘfĘCĘĘpĘpCÜĘfĘXffXĘŃXXXŽĘĘUXpÜLÉ–ÍĐšLffŞšČÍfÉĘÍLLÉÍÍ–É–aÍČLÄLČÉČ‚Óa–šaLL––ÍLšXÉĘÜ®wfrČČLČÓšfLÍÉLXĹÉÉLfÍÉXÍfЬČLČNšŕafČČLfÉaČČ"
DATA 0 ,"šĺŕ¬aÉLXÍPL´É–šLÉšLiNČPÉČČ›PNČČLĐ–fÉL–aÉšČÍPČ–ÉĐÍÍ‚ÍaaLŕÍĐÍČNNČNźŕY–LaČšÍfYÓ–¬´ŕLÍɬČP¬NÉLÉL€a~ŕÉLČfPÉfČLĎĐL´LÉÉźŕČL¬ÉLČÜ–fĘiÉfffĘÍ–ÉČČÉČČLaÉfXÍšPĐL‚LČČLŕŕČĐͬ"
DATA 0 ," ĘĘĘĘXĘfŕCfĘffĘfĘ®ÜĘĘÜXÜÜ®ÜĘĘĘCĘĘCÜŹCĘŹĘŹÜĘpĘffXÍĘĘmŕÍɦĘwѦĘÜrÉšL–fŕXÍÍ–ÍČÍXß–ÍLŕ–ÉXČLÍLÍÍX–Ü–ÍLÍLLČÍÍÍŕÍ–ĺĘwXÉr´LÉ–ÉČLĐÍ–~L–ÉÍ–Č‚šXÍLČ–NLČČÉÍaČÍLšČNȬÍ"
DATA 0 ,"LXXšČČLaÍ€ÉÍČLffÍČNÉfÍPÍČPLČȬNLš–‚ČfÉÉÉČÍ–sĐLČLÉÍiNÄXrfLŕ–PČNČÉfŕPÉČaLÉLLČČÉX–PL~ČÉČČČN–ÜÍÍÍ–L––LÉČÉČÉÍČiÍÉ–ŐĎL‚ffźÍČČÄĘÍÍÜiCźź~–LÍfzČÉÍÍLÉÍ~ŕÜiašš–ČLfÜaĐLÍLÍ"
DATA 0 ," ĘĘŕŕ®ĘŕpŕXĘŕŕĘĘĘĘÜŹfÜfXwfĘpĘCĘŹĘCĘŹpfĘ®CCĺĘŹfʦpĘfÍĎXĎXČ~XXĘĘÍŕ–ÍYÍwÜÍÍLÉÍpÍÍĐÉffff–ŕÜLLÉÍÉ–ŕČ‚LX–f–LÍÍ–šf–fČÜÜXfĘ–LČfLČLLÉÉČŕašpĘŕf~ÉPČfXfšČͬ~LšLfšÉŕYÍČÍN"
DATA 0 ,"–ÉšÉČ–Í|ČČfÍÉfLPN~´LsÉČ–Ü–fÄͬaLÍffšÍL–ČÍ´fŁÉČĐÍČs~ÉNLÍffŃLÉÍČČÉf¬Čš–ĐN¬–ÜĐÍÉfLČLPÍÍÉĐČš–fÍÍÜPÍÍÍČÉ–ÉYČŕ–NŕPrÍXaÍ–ˇČ–Č–É––fĺfÍĘfÍČÉ–ÍiaLÍČLÉaĐLYNÍL–šXÜXČLL–LÍaÍ"
DATA 0 ," ĘĘĘŕĘĘĘŕŕŕĘĘ‚pĘĘĘĘĘÜfÜ®pĘĘCĘĘÜĘC¦CÜĘÜĘŹÜÜĘĘĘŹXfXfX‚f‡fʦ^ĘÍĘĘÍfši‚fÓffÉÍÍšÍČfÉÍfÍ–LfĐČÍfLĘfČXÍLf––LNLfÍfššfŕÍĘŕfĘXÉÍšÉaLšČŕPLLĐYÍČČL´ĘiČffXČLCČČÉLaĐX‚–ÍĐÍf"
DATA 0 ,"ÉNČÉȬLĎͬšN–NPČLz´Đ–fX‚ĘȬÍN¬ĘÍšLLf}LXÉLĐÜÍŕrL–ČŕPĘaĘLÍČ›NNÍLLȬ–~LPÉÍͬČXŕLÉČNLPÉČPÍÍÜÍ–Čš~ÍšÍÉÍČČLĐŐŕLfŃČÉ–ŕPČÓÉÉffLLfÍ–LfĘ~ÍfÉÍXÍÉÍ–fĐĘLŐÍÍaX–ffĐLL–fÍ–fÍÉ"
DATA 0 ," ĘĘĘĘĘĘpĘĘpĘĘĘĘÜCĘĘpĘŕXp‚¦ĘŹĘŹĘŹŹÜĘŹĘĺĘCĘfĘÜĘffÜÜfĘfrĘXXÍ|ĘŕĘÍfÉÍfpÍ–LLLÉÉ–ÍfXÍrÍpÉÉɬÍÉÜÍČÉÍ–Í–ÉĘĘ–Xaŕ–ČLŕĎ–ĘĘÜŃfÍÍČaLLŕÍ–~ÉLČĐÉÍ´XÜ–P–LÉ––jXfLLLÉÉɚͬ–Xf"
DATA 0 ,"pPLÍLfšLÉYL¬LÍɬ¬PČĐY›CXXP–saÍČÉ–XC–ÉČ–ff–ĎÍÉs¬N–ĐÉÄÍŕfÍNÉĐNČL–ŃLÉÍȬLšÉNL–YLČČ›ČÍL~źÉLźLÍXf–faČÉ–ČLÉźĐLLfÍ–ČĺŕÉÍišÍfLN~C¬YÍ–fČLLČaĘLȬLfÍLÍLÍÉÜLLfČLÉ––fŕÍX"
DATA 0 ," ĘfĘĘĘpŕĘĘppŕĘĘĘÜĘĘĘpXXĘfĘC¦ĘCĘŹÜĘĘĘCÜÜŹCCŹĘCfXÍÍŽ€‡‡¦ĘX‚XfĘŕÍXĘÍÍÍXfXÍL–ÍÍÍfČÜirÍĘźfrÜNÍŕNÉfÍÍaÓÉÍ–ČÍÉfÉfÜÍĘĘXXÜÜPÉLiÍŕLÉÉLÉĐaĎÍ–Í–źLšÍČÍČÉPČšČČČÍÍĐÉLLČ"
DATA 0 ,"¬NÉNÍČĐ–ČÍfXČPČ´ČLfÍLÉLČČLČLPĘPNPÍŕpÍNNfČȬ›LČČNÜCÉpLČÄN~ÍÍČÍNČČȬ¬ÉČ––ĎÉaNaČšź¬ČČLÍaÉfÍÍzfffPf´LLÍLL––ČLXȬՖČÉLšÍ–ÉLźÍfÉXŐÍĐÉŕ–ČN–Č塖LfÉ–š~ŕ‚š–É––ÍXÉL"
DATA 0 ," XŕĘÜĘrppĘĘĘĘĘĘĘĘĘ‚ĘXfÜĘĘÜwÜCĘÜĺÜÜŹÜŹrXĘĘÜŹXĘXÜCĘpĎŽ‚Ńm^ĘĘXp¦ĘĘÍŕpÉŕ‚LL–šLĐ–ŕXX–͡ÍLšÍÍÉÜÍfLÉ‚P‚XšÉ–LLf–ÉÉČ®ĺaÍrfÜÜrffÍÉÉÍÍLÍXŕČXaLȬÉafiÍ–ÉŐÍÍLšČźPNYLČNLaÉČ–ÉÍ"
DATA 0 ,"LÉL¬LČLfLČXČÄČLȬČČ–Éŕ–~CLLÉŕĐLČÍČPÄLP¬ÉČČÓÉͬPźČš–ČĘČLÉ}L¬jÍĐXšČĎPÍŕŐPLČÜĐČXŐČͬČČLźČXNfŕf–Í–XÉaLɖɬČÍfĐ–źÍLLLČͬf–¬ÍČšÍĘÍ–ÍXLÍĺŕfÉČĹNfŹfXĘÍĺLL‚É–Í–É–fšÍÍ"
DATA 0 ," ĘĘĘXĘpĘĘĘĘpĘĘĘĘĘĘĘXÜÜdÜdĺÜÜĘŹÜĘĘĘʡŕCĘÜÜĘĘĘĘX¦ÜĘfŹffXXpĘÍfXÜÍÜXXÉš‚–Íšfa–¬Ó–ÍLÉÜffÉXĹ®ĘLfLXÍ–ÉÍXÉXf–ÍÍYÍXŕĺÜXfĐXÍLČÍfÉČÉČČpČLČČ~LYÉČČÍšÉÉŕLÉ–Č‚źČ–ČXX~źP´Č"
DATA 0 ,"É––ÉašÉČЬČČŐČČČɬÍČ–Č~LČLÉLÉÍĐLÉÉNČLyPČÉÉČČÉĐLÄPLŕĺČŕČČČ´¬–ÉÉÍͬafNÍÉÍČL¬ČLČÉaLÉNÍŕÉLaÍfŕfĘLÍĺLÍ–¬šLÉźÍČČČNĘĐŕfÍČPČÉL¬šLɬXXXÜĐ–ĘXL–ÍɬĘŕͬȖČaLÍpLLÍšfLf–Lf"
DATA 0 ," ĘĘfĘfŕpCĘĘšXŕŕCĘĘĘÜÜXÜĘŹÜĘĘŹĘŹĘCĘ‚ÉÍĘĘĘŹĘŹpĘfXfXXXX^wXXCČXXfĘŕÍŕrffXÉŕ–‚ÍŕXš–ŕÉÉČfÍXÍšfXÍwXČXXLÍÍfČfĐČfÜ–f–wŹfXXf¦fČX–LŕpfaÉ–ÍČ–LČČĘXĘÉXÍš–ÉŽNfĐɚŚXLČÍÍLČ"
DATA 0 ,"P–ÉÍÉÉČČČÉÍaĺ–fČšČfYÉLÉČLXLšÓÉͬÉÉČČÍfČČNČÍČÉLÍČLLšŕ–NŃŕ–ĐÉÍÍÉÄ–ÉLLš¬X¬Lɬ–ÉLšČš¬ÉXČÉČ–ČÍLaÉÍ–Xĺĺ¬ÍÍČšÉČfXČÍLLiÍĘ–faP–ÍÍČÉÉĎ´É–f–f–XfÜÍLXLšÍaÍČffaLXLÍĘÍfÜĺfŕfšL"
DATA 0 ," ĘCŕĘĘĘĘXfĘCšŕŹĘĘÜĘfĘĘXĘĘĘÜÜĘĘĘŕÍĘ‚ĘÍšĘĘCpCĘCXX¦ÜXfĘXX‡XĘÍ‚CĘŹĘšČĘfÍfÜĎfXÍÉX––ÍŕXÍX–LfÍfÉXĘaĎÜČÍXĘĐÉĐČÉÉÍÍČÉßffÜĘXXfĘĘČLÍÜÍXÍšL–iLÍÍČÉČȬĘČfrŕĘŃČL¬ÉĐLaÍČČÉX–ˇ"
DATA 0 ,"f¬fÉȬfČLĘÉffČČČČČÉfČČÍÉLČLfXÉLšÉĐČYČXsÉȟϟČÍĎ–P¬ÍaÍźNfXÍČͬšPȬČĐjÉ–L–ÉÍ–ÉČČXŃÍČ~¬LXČL~ÍfÉÉf–ĘLÓ€LÍČÉĎÍÉÍÍaLÜ–ÜÍÍÍLČLfÍ–Éfr–ÜLÜf–f––fÍČÍLĘÍL–ffšLÍÍŕŕÜÜff–––"
DATA 0 ," rŕXÍpĘŕpĘwŕĘŹĘĘĘŹĘĘXwÜXXCÜĘÜC‚‚fp–ŕ–ĘpŹŹĘŹÜĘfĘX–ÍfXŽĘXÜCÍXÍĘXCÍXÍXÍŕÍÍafÍÍXLffĘÜXXfCÉf‚ÍrÜŕĘČpLCÜČPLÉÉaČfLźÉXÍĘL–LPÉÍfLPXpŹY–s–LÍÉLÍ~ČfÍĐÍazÍÜfÍÉČLÉL––ČLČ–LX"
DATA 0 ,"NÉ–YPÍ–ÉÍLĘČĐšLŕČČ–¬XfÍŕÉÉf–ܡŕfČͬ¬ČÉČa–šiĹČÍ–ÉrČ–ČfffĺÄ‚–YČLÉČsČfŕČÍC›LČČČ–X–PÉźÉa––LÓĎČÉfpCČÍfpfźČÉa–ŕfČLf–fÜPfÍÍŕÍÉL–ÍÍÍČpfĘfÜĘĘÍÍšŕÍŕÍaÍL–ˇÍfÍfÍ–‚–fšÍŕÉ"

Posted on Jan 1, 2008, 3:46 AM

Respond to this message   

Return to Index


Link to downloadable version of FOREST.BAS in 9LINERS.ZIP (*URL)

by (no login)

http://www.geocities.com/antonigual/qbsource/9liners.zip

The character encodings didn't work correctly in the DATA statements of the program I posted. If you want to see what the above program does download and try FOREST.BAS in QBASIC using the above link.

Posted on Jan 1, 2008, 3:55 AM

Respond to this message   

Return to Index


Another QB-like compiler attempting to compile FOREST.BAS

by (no login)

C:\fb>fbc -lang qb c:\9\forest.bas
c:/9/forest.bas(6) error 10: Expected '=', found 'SEG'
2 IF i& = 0 THEN DEF SEG = &HA000 ELSE DIM b%(164)
^
c:/9/forest.bas(8) error 67: Array not dimensioned, before '('
4 IF (i& \ 320) < 150 THEN i& = i& + 1& ELSE PUT (1 ^ 1, 150 ^ 1 + (j ^ 1 MOD 49
^ 1)), b%(0), PSET

^
c:/9/forest.bas(9) error 67: Array not dimensioned, before '('
5 IF (i& \ 320) < 150 THEN POKE i&, ASC(MID$(a$, i& MOD 160 + 1, 1)) ELSE GET (1
^ 1, 150 ^ 1 - (j ^ 1 MOD 49 ^ 1) - 5 ^ 1 * SIN(j ^ 1 \ 2 ^ 1 * 2 ^ 1))-(319 ^
1, 150 ^ 1 - (j ^ 1 MOD 49 ^ 1) - 5 ^ 1 * SIN(j ^ 1 \ 2 ^ 1 * 2 ^ 1) ^ 1), b%(0)

Posted on Jan 1, 2008, 4:08 AM

Respond to this message   

Return to Index


* Well, stupid is as stupid does. - lang whogas

by Forrest.Gump (Login The-Universe)
Admin

Posted on Jan 1, 2008, 7:13 AM

Respond to this message   

Return to Index


I got it to compile fine in that other QB wanabe...

by (no login)

...just not as-is since DEF SEG obviously isn't supported (because segments simply don't exist in 32 bit mode). Changes:

2 IF i& <> 0 THEN DIM b%(164)

and

5 IF (i& \ 320) < 150 THEN PSET (i& - (INT(i& / 320) * 320),INT(i&/320)), ASC(MID$(a$, i& MOD 160 + 1, 1)) ELSE GET (1 ^ 1, 150 ^ 1 - (j ^ 1 MOD 49 ^ 1) - 5 ^ 1 * SIN(j ^ 1 \ 2 ^ 1 * 2 ^ 1))-(319 ^ 1, 150 ^ 1 - (j ^ 1 MOD 49 ^ 1) - 5 ^ 1 * SIN(j ^ 1 \ 2 ^ 1 * 2 ^ 1) ^ 1), b%(0)

and it compiles and runs fine in 0.14. Dunno about later versions, never use 'em.

Posted on Jan 1, 2008, 11:58 AM

Respond to this message   

Return to Index


FINE??? Eponasoft made significant technical changes to the source

by (no login)

1. The changes you made have edited the original source of another person's work which ran perfectly well in QBASIC as is. Is that fine?
2. The changes could only have been done by someone who is an "expert" programmer. How could the average programmer interested in QBASIC who finds this source on the net run it in that version of BASIC without your level of technical knowledge?

Don't try and pretend the differences in compatibility aren't there Eponasoft.

PS. I bet FB will support DEF SEG (sort of) and poking (just to the video memory of SCREEN 13) in -lang qb mode (only, so you cannot improve the existing program using any advanced features of FB because none are available) in their next update. And I say... good on them! It'd be another step in the right direction. The question is why didn't they do it sooner?

Posted on Jan 1, 2008, 1:28 PM

Respond to this message   

Return to Index


That's my view, too

by Pete (no login)

I had a mini wp program I posted here awhile ago. It took me about 2 hours to get to run in PowerBasic. I couldn't even come close to converting it in FreeBasic, and that was back when it was supposed to be more QB-like.

Pete

Posted on Jan 1, 2008, 1:41 PM

Respond to this message   

Return to Index


Hrm...

by (no login)

...it certainly used to support DEF SEG and POKE for video card stuff, but I guess that was removed somewhere down the line. The original gfxlib (the non-Angelo version, his version is gfxlib2) probably supported it too, but I don't exactly remember. But yeah, having it compile without any changes whatsoever would be impossible in current FB simply because they don't intend to maintain complete backwards compatibility. Many things have to be emulated, and for that, you tend to lose efficiency. My educated guess is that the developers of FB are much more interested in raw power than backwards compatibility. But anyways, it's good that QB64 can at least emulate DEF SEG for video access, as that means less code editing when porting to a newer platform, although in the interests of efficiency, I would likely modify code anyways to better run on modern systems. Many things have changed since QB's heyday; technology advanced and obsoleted many old methods. Sometimes, in order to do the best job possible, you have to advance with the advancements.

Posted on Jan 1, 2008, 10:41 PM

Respond to this message   

Return to Index


if so much is impossible because they don't intend to maintain compatibility

by mennonite (no login)

what's possible when you intend to?

Posted on Jan 2, 2008, 4:10 AM

Respond to this message   

Return to Index


Well, that depends on a lot of things

by (no login)

If your intention is true 100% compatibility, like QB64 intends, you need to emulate a LOT of things. However, if your purpose is NOT 100% compatibility, you have to draw a line somewhere...what features are worth emulating? What features aren't? In the case of video memory, the reason we all used to set the segment to the start of video memory and POKE values to VRAM was because it was far faster than using QBASIC's built-in PSET. But with FB, the PSET present in gfxlib is already highly optimized, and it would actually cause a performance degradation to emulate the old QBASIC method of DEF SEG + POKE. So it's a matter of implementation. Furthermore, sometimes it is better to rewrite certain portions of code to run better on systems in use *now* rather than just trying to recompile antique source unmodified.

Take that forest program, for example. Running it in QBASIC, it was subject to the wonderful hitches of XP's MSDOS virtual machine: occasional slowdown for no apparent reason, stuttering, and let's not forget the lack of a windowed display. However, by doing a minor recode to compile in FB, its performance increased substantially, and it could also be run windowed (though admittedly, its windowed display was pretty gritty).

Posted on Jan 2, 2008, 5:42 PM

Respond to this message   

Return to Index


RE: Eponasoft's replies

by (no login)

"But yeah, having it compile without any changes whatsoever would be impossible in current FB simply because they don't intend to maintain complete backwards compatibility" -Eponasoft
Something we all agree with.

"it's good that QB64 can at least emulate DEF SEG for video access" -Eponasoft
You forgot to mention that QB64 supports everything to do with 16-bit memory addressing, not simply poking to &HA000!

You seem to think that by having less compatibility with older BASICs you will be able support better things in the future. This is not necessarily the case. As for your obsession with re-writing QBASIC code so that it can run correctly in FB, please refer to my previous explanation about why this is not a productive argument.

Galleon

Posted on Jan 2, 2008, 6:51 PM

Respond to this message   

Return to Index


Obsession? Hardly.

by (no login)

I hardly call modifying two little lines of a tiny QBASIC program to compile under an old version of FB to be "an obsession". Sounds like you've still got some angst to get out.

And having less compatibility to support better things in the future isn't even something I ever said. That's a complete straw man. But in any event, it has less to do with merely being compatible with older BASICs and more to do with being natively feasible without requiring emulation. There's nothing *wrong* with fully supporting old BASICs, but people need to understand that it will come at a price, and that's where they should be able to choose whether or not they want to pay that price. Even with this example; emulating VRAM addressing or using code that runs natively, which do you use? The wise will specifically choose the latter because it makes more sense.

Posted on Jan 2, 2008, 7:37 PM

Respond to this message   

Return to Index


Now QB64 has to be compatable to FB, make me laugh!

by (Login burger2227)
R

Sorry, you adopted the animal so you live with it! What part of QB64 don't you understand?

Sure, we all want to add new stuff to keep up with the technology, but first we gotta have a TRUE QB compatable base code.

After that, the possibilities are endless. Just wait a while OK? There is a lot of work to go in Galleons project and we don't need any garbage tossed into the gears!

Ted

This is not gonna be a FB clone!

Posted on Jan 3, 2008, 3:42 PM

Respond to this message   

Return to Index


*no one can be compatible with fb until fb knows what it is.

by mennonite (no login)

Posted on Jan 3, 2008, 4:49 PM

Respond to this message   

Return to Index


Why bother anyways?

by (no login)

It's an okay compiler, but why bother cloning it? Besides, no one's even said that that's what should be done. Clippy just needs an excuse to bitch.

Posted on Jan 3, 2008, 5:58 PM

Respond to this message   

Return to Index


What's to understand?

by (no login)

It's a QB compiler. End of story. There's nothing else to understand. No one said it had to be an FB clone, nor compatible with FB. If you're going to keep bringing in the red herrings, at least bring some fine wine with them.

I also love how you say "we", as if you have anything at all to do with its development (other than bringing shame to its name at every possible opportunity by being a troll). The only one tossing garbage into the gears is YOU. Unlike you, my purpose here is to shed a realistic light onto this project, not to sit on the forum and fling insults and straw men at people who show no intention of playing shine-helmet. I would like to see QB64 succeed, but in order for it TO succeed, it needs people like you to knock off the bullcrap.

Can't you even make ONE LEGITIMATE POST without throwing some kind of FB reference or insult into it? In fact, I challenge you to go a week without being a zealot.

Posted on Jan 3, 2008, 5:55 PM

Respond to this message   

Return to Index


getting demo 4 to fly a kite

by mennonite (no login)

'the statements remarked out do not yet work in qb64, the rest compile and seem to do what they intend. timer is probably just a zero

variable to demo 4, it will be cool if/when it's a timer. the last part was added to see if locate works fully yet. it does. the very large

array was added to see if arrays work, then made very large to see the possible advantage of qb64. it's disappointing to see that qb64 cannot

do a "real" text screen, although that's no worse than qb in dosbox?

'2007 mennonite
'public domain
q$ ="...../"+chr$(92)+"........./__"+chr$(92)+"......./____"+chr$(92)+"...../__:P__"+chr$(92)+".../________"+chr$(92)+"./_:P___:P__"+chr$(92)
q$ = q$+chr$(92)+"__________/."+chr$(92)+"___:P___/..."+chr$(92)+"______/....."+chr$(92)+"____/......."+chr$(92)+"__/........."+chr$(92)+"/....."
COLOR 0, 1 '\ doesn't work until you change it to chr$(92)
CLS
dim array(1090000) 'without instr and mid$ this will need to be written using another method.
array(1090000)=12
RANDOMIZE TIMER
FOR a = 1 TO 10
strn$ = strn$ + "||" + CHR$(247)
NEXT a
DO
CLS
'b = b + INT(RND * 3 - 1)
'a = a + INT(RND * 3 - 1)
IF b < 1 THEN b = 1 ELSE IF b > 10 THEN b = 10
IF a < 1 THEN a = 1 ELSE IF a > 67 THEN a = 67
FOR y = 1 TO 12
FOR x = 1 TO 12
'one$ = MID$(q$, y * 12 - 12 + x, 1)
'fc = INSTR(".2_4567890\23:5", one$)
'IF fc < 1 THEN fc = INSTR("1234567890/23P5", one$)
COLOR fc
LOCATE y + b, x + a
PRINT one$;
NEXT x
NEXT y
COLOR 15
atwo = 0
DO WHILE CSRLIN <= 24
csrlin=50 'this is because it's not a function yet
LOCATE CSRLIN + 1, x + a - 6 + atwo
'atwo = atwo + INT(RND * 3 - 1)
'PRINT MID$(strn$, CSRLIN, 1);
LOOP
t = TIMER: DO: LOOP UNTIL t > TIMER + .25 OR t < TIMER - .25
LOOP UNTIL INKEY$ = CHR$(27)
print array(1090000)

cls
for y=25 to 1 step -1
for x=1 to 80
locate y,x
color y*x mod 15 +1
print chr$(219);
next y
next x
DO: LOOP UNTIL INKEY$ = CHR$(27)

Posted on Dec 31, 2007, 8:46 AM

Respond to this message   

Return to Index


okay, you don't need arrays for this, simulate mid$ using left$() and right$()

by mennonite (no login)

'2007 mennonite

'public domain

qbasic:
z$="hello"
for n=1 to len(z$)
? mid$(z$,n,1);
next n

demo4:
z$="hello"
for n=1 to len(z$)
print right$(left$(z$,n),1);
next n

Posted on Dec 31, 2007, 8:53 AM

Respond to this message   

Return to Index


getting there

by mennonite (no login)

'2007 mennonite
'public domain
q$ ="...../"+chr$(92)+"........./__"+chr$(92)+"......./____"+chr$(92)+"...../__:P__"+chr$(92)+".../________"+chr$(92)+"./_:P___:P__"+chr$(92)
q$ =q$+chr$(92)+"__________/."+chr$(92)+"___:P___/..."+chr$(92)+"______/....."+chr$(92)+"____/......."+chr$(92)+"__/........."+chr$(92)+"/....."
COLOR , 1 '\ doesn't work until you change it to chr$(92)
'CLS in qb if you change the bcolor and cls, it makes the screen that color. to work in demo4:
for y=25 to 1 step -1
for x=1 to 80
locate y,x: print chr$(32);
next x
next y: locate 1,1

RANDOMIZE TIMER
FOR a = 1 TO 10
strn$ = strn$ + "||" + CHR$(247)
NEXT a
DO

'CLS in qb if you change the bcolor and cls, it makes the screen that color. to work in demo4:
for y=25 to 1 step -1
for x=1 to 80
locate y,x: print chr$(32);
next x
next y: locate 1,1

'b = b + INT(RND * 3 - 1)
'a = a + INT(RND * 3 - 1)
IF b < 1 THEN b = 1 ELSE IF b > 10 THEN b = 10
IF a < 1 THEN a = 1 ELSE IF a > 67 THEN a = 67
FOR y = 1 TO 12
FOR x = 1 TO 12
one$ = right$(left$(q$,y * 12 - 12 + x),1)

''''fc = INSTR(".2_4567890\23:5", one$) 'without instr will need to be written using another method?
'IF fc < 1 THEN fc = INSTR("1234567890/23P5", one$)
fc=0
if one$="." then fc=1
if one$="_" then fc=3
if one$=chr$(92) then fc=11 '\ seems to mean something in qb64, in qb it's literally "\"
if one$=":" then fc=14
if one$="/" then fc=11
if one$="P" then fc=14

COLOR fc
LOCATE y + b, x + a
PRINT one$;
NEXT x
NEXT y
COLOR 15
atwo = 0
DO WHILE CSRLIN <= 24
csrlin=50 'this is because it's not a function yet
LOCATE CSRLIN + 1, x + a - 6 + atwo
'atwo = atwo + INT(RND * 3 - 1)
PRINT right$(left$(strn$,csrlin),1) 'csrlin is not available yet, we'll do something for that next.
LOOP
t = TIMER: DO: LOOP UNTIL t > TIMER + .25 OR t < TIMER - .25
LOOP UNTIL INKEY$ = CHR$(27)

Posted on Dec 31, 2007, 9:17 AM

Respond to this message   

Return to Index


demo 4 howto int(rnd * 3 - 1)

by mennonite (no login)

'2007 mennonite
'public domain
randomize timer
dim a as integer
do
a=(rnd(1) *3 -.5 -1)
print a;
loop until inkey$=chr$(27)

Posted on Dec 31, 2007, 11:02 AM

Respond to this message   

Return to Index


still no tail, but look

by mennonite (no login)

'2007 mennonite
'public domain

on error goto 10
dim b as integer '}
dim a as integer '... } until int works
dim atwo as integer '}
q$="...../"+chr$(92)+"........./__"+chr$(92)+"......./____"+chr$(92)+"...../_q____"+chr$(92)+".../___b____"+chr$(92)+"./__________"+chr$(92)
q$=q$+chr$(92)+"__________/."+chr$(92)+"____6___/..."+chr$(92)+"____4_/....."+chr$(92)+"____/......."+chr$(92)+"__/........."+chr$(92)+"/....."
COLOR , 1 '\ doesn't work until you change it to chr$(92)
'CLS in qb if you change the bcolor and cls, it makes the screen that color. to work in demo4:
for y=25 to 1 step -1
for x=1 to 80
locate y,x: print chr$(32);
next x
next y: locate 1,1

RANDOMIZE TIMER
FOR a = 1 TO 10
strn$ = strn$ + "||" + CHR$(247)
NEXT a
DO

'CLS in qb if you change the bcolor and cls, it makes the screen that color. to work in demo4:
for y=25 to 1 step -1
for x=1 to 80
locate y,x: print chr$(32);
next x
next y: locate 1,1

b = b + (RND(1) * 3 -.5 - 1)
a = a + (RND(1) * 3 -.5 - 1)
IF b < 1 THEN b = 1 ELSE IF b > 10 THEN b = 10
IF a < 1 THEN a = 1 ELSE IF a > 67 THEN a = 67
FOR y = 1 TO 12
FOR x = 1 TO 12
one$ = right$(left$(q$,y * 12 - 12 + x),1)

fc=11
if one$="." then fc=1
if one$="_" then fc=3
if asc(ucase$(one$))>64 and asc(ucase$(one$))<91 then fc=14
if asc(ucase$(one$))>47 and asc(ucase$(one$))<58 then fc=14

COLOR fc
LOCATE y + b, x + a
PRINT one$;
NEXT x
NEXT y
COLOR 15
atwo = 0
DO WHILE CSRLIN <= 24
csrlin=50 'this is because it's not a function yet
LOCATE CSRLIN + 1, x + a - 6 + atwo
atwo = atwo + (RND(1) * 3 -.5 - 1)
PRINT right$(left$(strn$,csrlin),1) 'csrlin is not available yet, we'll do something for that next.
LOOP
t = TIMER: DO: LOOP UNTIL t > TIMER + .25 OR t < TIMER - .25
LOOP UNTIL INKEY$ = CHR$(27)

color 7,0
for y=25 to 1 step -1
for x=1 to 80
locate y,x: print chr$(32);
next x
next y: locate 1,1
end
10 resume next

Posted on Dec 31, 2007, 11:35 AM

Respond to this message   

Return to Index


version 1.0 (*url)

by mennonite (no login)

http://www.network54.com/Forum/585676/message/1199131000/qb64+kite

Posted on Dec 31, 2007, 11:58 AM

Respond to this message   

Return to Index


two options when csrlin becomes an actual function

by mennonite (no login)

1. remove these lines:

csrlin=b+12
csrlin=csrlin+1

2. change all instances of "csrlin" (case insensitive) to "csrl

Posted on Dec 31, 2007, 12:02 PM

Respond to this message   

Return to Index


Thanks for your excellent contributions Mennonite

by (no login)

RE: kite program
Using csrlin as a variable just because it had not been implemented as a function in Demo #4 yet was a bit naughty! As you identified, it doesn't work in QBASIC and it won't work in Demo #5. I did the modification you suggested and seeing The BoBing around of the kite brought a smile to my face, very therapeutic.

RE: sinecube program
I've never seen anything like this one before. Very nice.

RE: haiku program
Clever, but probably not the best example of QB64's capabilities.

I really appreciate your contributions & support.
Happy New Year,
Galleon

Posted on Dec 31, 2007, 6:49 PM

Respond to this message   

Return to Index


*Rot13 is worth including too

by (no login)

Posted on Dec 31, 2007, 6:52 PM

Respond to this message   

Return to Index


oh i'm glad you like them, thanks

by mennonite (no login)

yeah, actually i would have gone ahead and made the changes so that kite worked in qb too, but then i'd feel obligated to paste them into notepad again, and compile again, and then run again...

i wrote haiku for the funny, you're certainly not obligated to include it. i'm really enjoying getting programs to run in qb64, above all, it's basic (so far,) and your approach is to make something basic. (people think i'm against additions... i'm against basic not being the priority, but that's got nothing to do with qb64.) so i'll probably post a lot more. use the ones you want. comment on what you want. hopefully there is room on your subforum for the rest. if not, i'll post to another subforum.

Posted on Dec 31, 2007, 8:12 PM

Respond to this message   

Return to Index


* Do you mean that Menn is worth all of the aggrivation?

by (Login burger2227)
R

Posted on Jan 1, 2008, 12:22 AM

Respond to this message   

Return to Index


Not able to run demo #4

by jason (no login)

Hello, I just downloaded qb64 demo #4 and I receive the following error in command prompt when running compile.bat

The image file D:\qb64\internal\qb64\COMPILE.EXE is
valid, but is for a machine type other than the current machine.

also I get a popup saying this program isnt for use in a 64bit OS...


any suggestions?

jason

Posted on Dec 28, 2007, 10:55 PM

Respond to this message   

Return to Index


Some considerations...

by (no login)

It's worth noting that COMPILE.EXE is a DOS program created by QB7.1

Get a copy of DOSBOX and try compiling from within DOSBOX. The compiler should be able to create an .EXE from the sample .BAS files. The .EXE created should run correctly on your system without requiring DOSBOX. If it does not, then I'd like to know more about the machine & OS you are using. Also note that COMPILE.EXE only generates .EXE files for Windows atm.

But why should you need DOSBOX to compile?
Because QB64 is not finished. When it is, COMPILE.EXE will no longer be a DOS program. In fact, it will be an .EXE compiled by QB64 itself and it will run (in its respective forms) on Windows, Linux & Mac OSX.

Please ask if you need further assistance,
Galleon

PS. Thank you for bringing this issue to my attention.

Posted on Dec 29, 2007, 2:20 AM

Respond to this message   

Return to Index


thanks..

by jason (no login)

Well I got it to work.. but I'm not sure if this is how I am supposed to do it..

I ran compile.bat in DOSBOX and receive this result:

QB64 COMPILER V0.40
COMPILING C++ CODE INTO EXE...
This program cannot be run in DOS mode.
C++ COMPILATION FAILED!

so.. to get it to work I have to run gpp.exe in command prompt by copy/pasting the line from contcomp.bat.
then i go back to DOSBOX to run check.exe.

The final .exe works fine in windows!


:)

Posted on Dec 29, 2007, 8:04 AM

Respond to this message   

Return to Index


HELP make DEMO #5 a VERSION TO REMEMBER

by (no login)

...in a good way.

Merry Christmas and a happy New Year (in advance) to all. Thank you for following this project either passively or actively.

As you probably know, Demo #4 was a major milestone but was not an "exciting" version. A lot of internal structural problems were addressed and array access made possible. What actually worked and didn't work was very ambiguous.

Demo #5's goal is to implement as much of the "little" things as possible so that what remains is a clear, short set of unimplemented features.

I would like your help!
I would like you to (carefully) read the list of restrictions Demo #5 will have. Then I'd like you to post either code (or a link to code, or a link to a websites containing the program) which could serve as a "fun" example in the upcoming demo. Data files can accompany the .bas file too. I'll collate these, make sure they all work in QB64, then include them in the download for Demo #5.

I know this is a big ask, so I'll understand if no-one replies!
Galleon

---------------------------------------------------------------
DEMO #5 - Restrictions
---------------------------------------------------------------
Structural:
USER DEFINED SUBS/FUNCTIONS
USER DEFINED TYPES (TYPE ...., END TYPE)
DECLARE/BYVAL/ANY/CDECL/ALIAS
CALL/CALLS
DEF FN...END DEF, EXIT DEF
SHARED/COMMON
ON ... EVENTS/...ON/...OFF/...STOP (except for ON ERROR. All error handling is implemented)
'$INCLUDE:...
CONST
TRON/TROFF

Tricky to implement subs/functions:
PRINT[#] USING
LPRINT/LPOS
DRAW
PLAY
CLEAR
FIELD
LOCK/UNLOCK

Device access:
OPEN com/scrn/lpt/kybd/cons
IOCTL/IOCTL$
PEN
STICK/STRIG
INP/OUT/WAIT (very limited functionality)

Machine code:
CALL ABSOLUTE
CALL INTERRUPT

OS access:
CHAIN
SHELL
FILES
KILL
NAME
FILEATTR
CHDIR/MKDIR/RMDIR
ENVIRON/ENVIRON$
RUN

Posted on Dec 27, 2007, 2:54 AM

Respond to this message   

Return to Index


no IF THEN or FOR NEXT?

by mennonite (no login)

i could use DRAW but i don't see SCREEN (12 or 13 work?)
usually i use ta which is a powerful thing in draw, it lets you work with angles. when i see a draw statement in a free version of basic, i check for that first. in freebasic, there is something "wrong" with the angles in draw. in qbasic, it works properly. (gwbasic has the same problem as freebasic, oddly.)

which macros under "draw" besides l d r u are there? are there any commands in qb64 yet for looping or conditions?

Posted on Dec 27, 2007, 3:04 AM

Respond to this message   

Return to Index


If something wasn't listed as a restriction, it means it works!

by (no login)

Of course IF-THEN and FOR-NEXT work. They've been in QB64 for many versions.

Posted on Dec 27, 2007, 1:38 PM

Respond to this message   

Return to Index


Ok, here's some programs

by QBGUY (no login)

1: SELF-REPLICATING PROGRAM

P$="+CHR$(34):PRINT MID$(P$,35)+P$+P$'P$="+CHR$(34):PRINT MID$(P$,35)+P$+P$'P$="


2: HUNT THE WUMPUS WITH MODIFICATION:
* ALL GOTOS MADE EXPLICIT (no IF foo THEN 35)
* ALL "ON foo GOTO x, y, z" CONVERTED TO a SELECT CASE
* NOTE THAT IT STILL USES LINE NUMBERS -- IF LINE NUMBERS
ARE NOT SUPPORTED THEN IT IS NECESSARY TO CONVERT THEM TO
LINE LABELS


REM *** HUNT THE WUMPUS **
DIM p(5)
PRINT "INSTRUCTIONS (Y-N)";
INPUT i$
i$ = UCASE$(i$)
IF (i$ = "Y") OR (i$ = "YES") THEN GOSUB 375
REM *** SET UP CAVE (DODECAHEDRAL NODE LIST) ***
DIM s(20, 3)
FOR j = 1 TO 20
FOR k = 1 TO 3
READ s(j, k)
NEXT k
NEXT j
DATA 2,5,8,1,3,10,2,4,12,3,5,14,1,4,6
DATA 5,7,15,6,8,17,1,7,9,8,10,18,2,9,11
DATA 10,12,19,3,11,13,12,14,20,4,13,15,6,14,16
DATA 15,17,20,7,16,18,9,17,19,11,18,20,13,16,19
DEF fna (X) = INT(20 * RND(1)) + 1
DEF fnb (X) = INT(3 * RND(1)) + 1
DEF fnc (X) = INT(4 * RND(1)) + 1
REM *** LOCATE L ARRAY ITEMS ***
REM *** 1-YOU, 2-WUMPUS, 3&4-PITS, 5&6-BATS ***
DIM l(6)
DIM m(6)
170 FOR j = 1 TO 6
l(j) = fna(0)
m(j) = l(j)
NEXT j
REM *** CHECK FOR CROSSOVERS (IE l(1)=l(2), ETC) ***
FOR j = 1 TO 6
FOR k = 1 TO 6
IF j = k THEN GOTO 215
IF l(j) = l(k) THEN GOTO 170
215 NEXT k
NEXT j
REM *** SET NO. OF ARROWS ***
230 a = 5
l = l(1)
REM *** RUN THE GAME ***
PRINT "HUNT THE WUMPUS"
REM *** HAZARD WARNING AND LOCATION ***
255 GOSUB 585
REM *** MOVE OR SHOOT ***
GOSUB 670
IF o = 1 THEN GOTO 280
IF o = 2 THEN GOTO 300
REM *** SHOOT ***
280 GOSUB 715
IF f = 0 THEN GOTO 255
GOTO 310
REM *** MOVE ***
300 GOSUB 975
IF f = 0 THEN GOTO 255
310 IF f > 0 THEN GOTO 335
REM *** LOSE ***
PRINT "HA HA HA - YOU LOSE!"
GOTO 340
REM *** WIN ***
335 PRINT "HEE HEE HEE - THE WUMPUS'LL GET YOU NEXT TIME!!"
340 FOR j = 1 TO 6
l(j) = m(j)
NEXT j
PRINT "SAME SETUP (Y-N)";
INPUT i$
IF (i$ <> "Y") AND (i$ <> "y") THEN GOTO 170
GOTO 230
375 REM *** INSTRUCTIONS ***
PRINT "WELCOME TO 'HUNT THE WUMPUS'"
PRINT " THE WUMPUS LIVES IN A CAVE OF 20 ROOMS. EACH ROOM"
PRINT "HAS 3 TUNNELS LEADING TO OTHER ROOMS. (LOOK AT A"
PRINT "DODECAHEDRON TO SEE HOW THIS WORKS-IF YOU DON'T KNOW"
PRINT "WHAT A DODECAHEDRON IS, ASK SOMEONE)"
PRINT
PRINT " HAZARDS:"
PRINT " BOTTOMLESS PITS - TWO ROOMS HAVE BOTTOMLESS PITS IN THEM"
PRINT " IF YOU GO THERE, YOU FALL INTO THE PIT (& LOSE!)"
PRINT " SUPER BATS - TWO OTHER ROOMS HAVE SUPER BATS. IF YOU"
PRINT " GO THERE, A BAT GRABS YOU AND TAKES YOU TO SOME OTHER"
PRINT " ROOM AT RANDOM. (WHICH MAY BE TROUBLESOME)"
INPUT "HIT RETURN TO CONTINUE"; a$
PRINT " WUMPUS:"
PRINT " THE WUMPUS IS NOT BOTHERED BY HAZARDS (HE HAS SUCKER"
PRINT " FEET AND IS TOO BIG FOR A BAT TO LIFT). USUALLY"
PRINT " HE IS ASLEEP. TWO THINGS WAKE HIM UP: YOU SHOOTING AN"
PRINT "ARROW OR YOU ENTERING HIS ROOM."
PRINT " IF THE WUMPUS WAKES HE MOVES (P=.75) ONE ROOM"
PRINT " OR STAYS STILL (P=.25). AFTER THAT, IF HE IS WHERE YOU"
PRINT " ARE, HE EATS YOU UP AND YOU LOSE!"
PRINT
PRINT " YOU:"
PRINT " EACH TURN YOU MAY MOVE OR SHOOT A CROOKED ARROW"
PRINT " MOVING: YOU CAN MOVE ONE ROOM (THRU ONE TUNNEL)"
PRINT " ARROWS: YOU HAVE 5 ARROWS. YOU LOSE WHEN YOU RUN OUT"
PRINT " EACH ARROW CAN GO FROM 1 TO 5 ROOMS. YOU AIM BY TELLING"
PRINT " THE COMPUTER THE ROOM#S YOU WANT THE ARROW TO GO TO."
PRINT " IF THE ARROW CAN'T GO THAT WAY (IF NO TUNNEL) IT MOVES"
PRINT " AT RANDOM TO THE NEXT ROOM."
PRINT " IF THE ARROW HITS THE WUMPUS, YOU WIN."
PRINT " IF THE ARROW HITS YOU, YOU LOSE."
INPUT "HIT RETURN TO CONTINUE"; a$
PRINT " WARNINGS:"
PRINT " WHEN YOU ARE ONE ROOM AWAY FROM A WUMPUS OR HAZARD,"
PRINT " THE COMPUTER SAYS:"
PRINT " WUMPUS: 'I SMELL A WUMPUS'"
PRINT " BAT : 'BATS NEARBY'"
PRINT " PIT : 'I FEEL A DRAFT'"
PRINT
RETURN
585 REM *** PRINT LOCATION & HAZARD WARNINGS ***
PRINT
FOR j = 2 TO 6
FOR k = 1 TO 3
IF s(l(1), k) <> l(j) THEN GOTO 640
SELECT CASE j - 1
CASE 1
GOTO 615
CASE 2
GOTO 625
CASE 3
GOTO 625
CASE 4
GOTO 635
CASE 5
GOTO 635
END SELECT
615 PRINT "I SMELL A WUMPUS!"
GOTO 640
625 PRINT "I FEEL A DRAFT"
GOTO 640
635 PRINT "BATS NEARBY!"
640 NEXT k
NEXT j
PRINT "YOU ARE IN ROOM "; l(1)
PRINT "TUNNELS LEAD TO "; s(l, 1); " "; s(l, 2); " "; s(l, 3)
PRINT
RETURN
670 REM *** CHOOSE OPTION ***
675 PRINT "SHOOT OR MOVE (S-M)";
INPUT i$
IF (i$ <> "S") AND (i$ <> "s") THEN GOTO 700
o = 1
RETURN
700 IF (i$ <> "M") AND (i$ <> "m") THEN GOTO 675
o = 2
RETURN
715 REM *** ARROW ROUTINE ***
f = 0
REM *** PATH OF ARROW ***
735 PRINT "NO. OF ROOMS (1-5)";
INPUT j9
IF j9 < 1 THEN GOTO 735
IF j9 > 5 THEN GOTO 735
FOR k = 1 TO j9
760 PRINT "ROOM #";
INPUT p(k)
IF k <= 2 THEN 790
IF p(k) <> p(k - 2) THEN GOTO 790
PRINT "ARROWS AREN'T THAT CROOKED - TRY ANOTHER ROOM"
GOTO 760
790 NEXT k
REM *** SHOOT ARROW ***
l = l(1)
FOR k = 1 TO j9
FOR k1 = 1 TO 3
IF s(l, k1) = p(k) THEN GOTO 895
NEXT k1
REM *** NO TUNNEL FOR ARROW ***
l = s(l, fnb(1))
GOTO 900
840 NEXT k
PRINT "MISSED"
l = l(1)
REM *** MOVE WUMPUS ***
GOSUB 935
REM *** AMMO CHECK ***
a = a - 1
IF a > 0 THEN 885
880 f = -1
885 RETURN
REM *** SEE IF ARROW IS AT l(1) OR AT l(2)
895 l = p(k)
900 IF l <> l(2) THEN 920
PRINT "AHA! YOU GOT THE WUMPUS!"
f = 1
RETURN
920 IF l <> l(1) THEN GOTO 840
PRINT "OUCH! ARROW GOT YOU!"
GOTO 880
935 REM *** MOVE WUMPUS ROUTINE ***
940 k = fnc(0)
IF k = 4 THEN GOTO 955
l(2) = s(l(2), k)
955 IF l(2) <> l THEN GOTO 970
PRINT "TSK TSK TSK - WUMPUS GOT YOU!"
f = -1
970 RETURN
975 REM *** MOVE ROUTINE ***
f = 0
985 PRINT "WHERE TO";
INPUT l
IF l < 1 THEN GOTO 985
IF l > 20 THEN GOTO 985
FOR k = 1 TO 3
REM *** CHECK IF LEGAL MOVE ***
IF s(l(1), k) = l THEN GOTO 1045
NEXT k
IF l = l(1) THEN GOTO 1045
PRINT "NOT POSSIBLE -";
GOTO 985
REM *** CHECK FOR HAZARDS ***
1045 l(1) = l
REM *** WUMPUS ***
IF l <> l(2) THEN GOTO 1090
PRINT "... OOPS! BUMPED A WUMPUS!"
REM *** MOVE WUMPUS ***
GOSUB 940
IF f = 0 THEN GOTO 1090
RETURN
REM *** PIT ***
1090 IF l = l(3) THEN GOTO 1100
IF l <> l(4) THEN GOTO 1120
1100 PRINT "YYYYIIIIEEEE . . . FELL IN PIT"
f = -1
RETURN
REM *** BATS ***
1120 IF l = l(5) THEN GOTO 1130
IF l <> l(6) THEN GOTO 1145
1130 PRINT "ZAP--SUPER BAT SNATCH! ELSEWHEREVILLE FOR YOU!"
l = fna(1)
GOTO 1045
1145 RETURN
END


3: SUBLIMIAL MESSAGE GENERATOR -- HIDES MESSAGE IN STRANGE BEEPING NOISES

' modify w$ for different subliminal message

CLS
DO WHILE INKEY$ <> CHR$(27)
COLOR INT(RND(1) * 16), INT(RND(1) * 16)
PRINT " ";
w$ = "QB64 RULES"
y% = (y% + 1)
IF y% > LEN(w$) THEN y% = y% MOD LEN(w$)
z% = ASC(MID$(w$, y%, 1))
x% = 9 * z% + 100
SOUND x%, 1
LOOP

Posted on Dec 27, 2007, 8:58 AM

Respond to this message   

Return to Index


Thanks Qbguy, it's an excellent start

by (no login)

1. I don't get the self replicating program! Care to explain?
2. This line in hunt the wumpus won't work in Demo #5 because it creates a user defined function:
DEF fna (X) = INT(20 * RND(1)) + 1
3. This will work fine.

Posted on Dec 27, 2007, 1:44 PM

Respond to this message   

Return to Index


OK, I'll explain the self-replicating program

by qbguy (no login)

What it's supposed to do is print it's source code to the screen.

CHR$(34) is the quote character. MID$(P$, 35) Prints everything in p$ after the 35 the character, so it would print:

P$="

Then it would print the whole of p$, so now

P$="+CHR$(34):PRINT MID$(P$,35)+P$+P$'P$="

is on the screen

then it would print p$ again:

P$="+CHR$(34):PRINT MID$(P$,35)+P$+P$'P$="+CHR$(34):PRINT MID$(P$,35)+P$+P$'P$="

which is the source code of the program.

The idea is that p$ stores the whole program. Then we print p$ *twice* -- once to show the definition of p$ and again to show the printing of p$.

P$="+CHR$(34):PRINT MID$(P$,35)+P$+P$'P$="+CHR$(34):PRINT MID$(P$,35)+P$+P$'P$="

Posted on Dec 27, 2007, 2:40 PM

Respond to this message   

Return to Index


*Thanks, I get it now.

by (no login)

Posted on Dec 27, 2007, 4:26 PM

Respond to this message   

Return to Index


rot13

by mennonite (no login)

'2007 mennonite
'public domain
z$="hello"
for n = 1 TO len(z$)
a$ = right$(left$(z$,n),1)
b$ = a$
c = asc(ucase$(a$))
if c > 64 and c < 91 then b$ = chr$((c - 65 + 13) mod 26 + 65)
if asc(a$) > 91 then b$ = lcase$(b$)
print b$;
next n

Posted on Dec 31, 2007, 10:00 AM

Respond to this message   

Return to Index


*it would be a lot cooler with line input z$ or z$=command$

by mennonite (no login)

Posted on Dec 31, 2007, 10:05 AM

Respond to this message   

Return to Index


qb64 kite

by mennonite (no login)

'2007 mennonite
'public domain

on error goto 10
dim b as integer
dim a as integer
dim atwo as integer
q$="...../"+chr$(92)+"........./__"+chr$(92)+"......./____"+chr$(92)+"...../_q____"+chr$(92)+".../___b____"+chr$(92)+"./__________"+chr$(92)
q$=q$+chr$(92)+"__________/."+chr$(92)+"____6___/..."+chr$(92)+"____4_/....."+chr$(92)+"____/......."+chr$(92)+"__/........."+chr$(92)+"/....."
COLOR , 1

for y=25 to 1 step -1
for x=1 to 80
locate y,x: print chr$(32);
next x
next y: locate 1,1

RANDOMIZE TIMER
FOR a = 1 TO 10
strn$ = strn$ + "||" + CHR$(247)
NEXT a
DO

for y=25 to 1 step -1
for x=1 to 80
locate y,x: print chr$(32);
next x
next y: locate 1,1

b = b + (RND(1) * 3 -.5 - 1)
a = a + (RND(1) * 3 -.5 - 1)
IF b < 1 THEN b = 1 ELSE IF b > 10 THEN b = 10
IF a < 1 THEN a = 1 ELSE IF a > 67 THEN a = 67
FOR y = 1 TO 12
FOR x = 1 TO 12
one$ = right$(left$(q$,y * 12 - 12 + x),1)

fc=11
if one$="." then fc=1
if one$="_" then fc=3
if asc(ucase$(one$))>64 and asc(ucase$(one$))<91 then fc=14
if asc(ucase$(one$))>47 and asc(ucase$(one$))<58 then fc=14

COLOR fc
LOCATE y + b, x + a
PRINT one$;
NEXT x
NEXT y
COLOR 15
atwo = 0
csrlin=b+12
DO WHILE CSRLIN <= 24
LOCATE CSRLIN + 1, x + a - 6 + atwo
atwo = atwo + (RND(1) * 3 -.5 - 1)
PRINT right$(left$(strn$,csrlin),1);
csrlin=csrlin+1
LOOP
t = TIMER: DO: LOOP UNTIL t > TIMER + .25 OR t < TIMER - .25
LOOP UNTIL INKEY$ = CHR$(27)

color 7,0
for y=25 to 1 step -1
for x=1 to 80
locate y,x: print chr$(32);
next x
next y: locate 1,1
end
10 resume next

Posted on Dec 31, 2007, 11:56 AM

Respond to this message   

Return to Index


sinecube

by mennonite (no login)

'sinecube 2006 mennonite
'public domain

DIM blox(40, 40, 40) AS INTEGER

SCREEN 12: LINE (0, 0)-(639, 479), , B

l = 8

B$ = B$ + "00000000..."
B$ = B$ + "llnnnnnnl.."
B$ = B$ + "l8lnnnnnnl."
B$ = B$ + "l88llllllll"
B$ = B$ + "l88l000000l"
B$ = B$ + "l88l000000l"
B$ = B$ + "l88l000000l"
B$ = B$ + "l88l000000l"
B$ = B$ + ".l8l000000l"
B$ = B$ + "..ll000000l"
B$ = B$ + "...llllllll"

blox(2, 3, 32) = 1

FOR l = 8 * 32 TO 1 STEP -8

FOR y = 4 TO 4 * 32 STEP 4
FOR x = 8 * 32 TO 1 STEP -8

mm = SIN(x * y * l * 3.14): if mm<0 then mm=-1 else if mm>0 then mm=1
IF blox(x / 8, y / 4, l / 8) = mm + 1 THEN
FOR by = 1 TO 11
FOR bx = 1 TO 11
IF right$(left$(b$,(by - 1) * 11 + bx),1) <> "." THEN
z = 11
PSET (x + bx - 1 + y - 3, by - 1 + y + l + 4), ASC(right$(left$(b$,(by - 1) * 11 + bx),1)) MOD 16 + (y MOD 2)
END IF

NEXT bx
NEXT by

END IF
IF INKEY$ = CHR$(27) THEN END

NEXT x

t = TIMER: DO: LOOP UNTIL t <> TIMER

NEXT y

NEXT l

Posted on Dec 31, 2007, 2:44 PM

Respond to this message   

Return to Index


haiku (this is public domain of course)

by mennonite (no login)

screen 12: cls
pset (200,15)
print "hello": system

Posted on Dec 31, 2007, 2:53 PM

Respond to this message   

Return to Index


You pronounce it like this, right?

by qbguy (no login)

Screen twelve. Cee Ell Ess. (5 syllables)
PSET Two Hundred Fifteen (7 syllables)
PRINT Hello. System (5 syllable)

Posted on Dec 31, 2007, 2:57 PM

Respond to this message   

Return to Index


You pronounce it like this, right?

by qbguy (no login)

Screen twelve. Cee Ell Ess. (5 syllables)
PSET Two Hundred Fifteen (7 syllables)
PRINT Hello. System (5 syllable)

Posted on Dec 31, 2007, 2:57 PM

Respond to this message   

Return to Index


* What the heck? It posted twice

by qbguy (no login)

Posted on Dec 31, 2007, 2:57 PM

Respond to this message   

Return to Index


yeah :)

by mennonite (no login)

Screen twelve. Cee Ell Ess. (5 syllables)
P SET Two Hundred Fifteen (7 syllables)
PRINT Hello. System (5 syllables)

Posted on Dec 31, 2007, 3:31 PM

Respond to this message   

Return to Index


it's actually pretty cool how system is treated by qb64

by mennonite (no login)

it makes sense. in (a language whose mention is often censored) you have to put sleep or q$=input(1) or something like that at the end of each program to get it to be more like using qbasic.

in qb64, it does the press any key to continue thing, like it would in the ide. that annoyed a few people at (a forum whose mention is often censored.) but just like with the ide, if you use system instead of end, it just quits when its done, no pauses. i don't know how perfectly galleon is going to get this "qbasic" thing, but sometimes you can really tell he's paying attention. i'm enjoying demo 4 a lot.

Posted on Dec 31, 2007, 3:38 PM

Respond to this message   

Return to Index


pcopy in screen 0

by mennonite (no login)

'2007 mennonite
'public domain
screen 0,0
color 10
locate 1,1
print "hello"
pcopy 0,1
color 1
locate 1,1
print "hello"
pcopy 0,2
do
screen ,,1
t=timer:do:loop until t<>timer
screen ,,2
t=timer:do:loop until t<>timer
loop until inkey$=chr$(27)
screen 0,0

Posted on Dec 31, 2007, 6:37 PM

Respond to this message   

Return to Index


*I can't begin to imagine why pcopy in screen 0 is significant... (grins evilly)

by (no login)


Posted on Dec 31, 2007, 6:56 PM

Respond to this message   

Return to Index


* Yeah, them's fightin' words!

by Pete (Login The-Universe)
Admin

Posted on Dec 31, 2007, 7:14 PM

Respond to this message   

Return to Index


FOR...NEXT issue

by (Login MCalkins)
R

QB64 Demo #4 treats FOR...NEXT differently than QBASIC, although I can hardly blame it, as QBASIC's treatment of it is very strange. That brings up the question of whether it's even necessary to imitate QBASIC's weirdness (bugginess?). I would say yes, but others might validly disagree.

http://www.network54.com/Forum/178565/message/1198695624/

Regards,
Michael

Posted on Dec 26, 2007, 12:14 PM

Respond to this message   

Return to Index


Those are some ugly code fragments

by (no login)

It's been a long time since I saw such blatant abuse of looping functions. You won't generally find such extreme code fragments in a real-world application unless it was written by a psychopath.

Posted on Dec 26, 2007, 7:21 PM

Respond to this message   

Return to Index


You are funny :-)

by (Login MCalkins)
R

I LOVE the way you worded that post. Yeah, I wouldn't expect to see anything like that either. But I got curious after that post by Raymond Walden, and Pete's and my responses to it.

I was working on my dad's ranch Monday, walking around scattering rye seed on areas he had missed. I had plenty of time to think, and somehow I got to thinking about what would happen if you executed one DO or FOR and then jumped to a different LOOP or NEXT. The examples I had posted as a response to Raymond were hard-coded for their specific DO or FOR statements. He had said he used the stack, and I figured maybe that was so that the LOOP or NEXT knew which DO or FOR had already been executed. Still out in the field, I started trying to think up a stack-safe way of doing that. It wasn't until yesterday or this morning that I tried testing how QBASIC handle constructs like that.

Anyway, I think QBASIC's treatment of FOR...NEXT is really strange. I hope there's some pattern to it. Unless I get bored of this, I'll try to see if there's an easy pattern. I wonder whether QuickBASIC is the same or not. If QuickBASIC is more consistent, then maybe this is a bug or oversight in QBASIC. I'm also about to test FreeBASIC's treatment of this.

And no, you won't see me using GOTO very much anymore. I agree that those constructs I posted are ridiculous, but they're sort of a "what if" or a compatibility issue for compilers that aim to be 100% compatible with QBASIC.

Regards,
Michael



    
This message has been edited by MCalkins on Dec 26, 2007 8:13 PM

Posted on Dec 26, 2007, 8:11 PM

Respond to this message   

Return to Index


by the way, have you seen our Challenges subforum?

by (Login MCalkins)
R

http://www.network54.com/Forum/202193/message/1142540676/

The above is a challenge to write the least efficient Hello World program. My entry generates a program with over 1600 GOTO statements.

To get Kewbie's Part 1 to execute, I just commented out SpiralOut, but I wasn't patient enough to watch it all the way through.

http://www.network54.com/Forum/202193/message/1053693932/

A challenge involving the creation of screen savers using a minimal number of lines. Some of the entries are really good.

Also, this is interesting:

http://www.network54.com/Forum/202193/message/1171385074/

>blatant abuse of looping functions

a few interesting jokes could be based on that. We (people who have responded to those challenges, and others) are the "code molesters", we can't be trusted around QBASIC, etc. It reminds me of a Dilbert cartoon where Dilbert, after having been caught trying to relocate his computer, accepted a plea bargain of "lewd conduct with appliances". Wally then taunted him: "Would you like a minute alone with 'Mr. Coffee'?"

Regards,
Michael



    
This message has been edited by MCalkins on Dec 27, 2007 3:38 PM

Posted on Dec 26, 2007, 11:37 PM

Respond to this message   

Return to Index


RE: FOR...NEXT issues

by (no login)

For starters, QB64 doesn't support the sleep statement yet, so I'm a little surprised the code even compiled! Secondly, I believe the reason it did not work is to do with the way the increment and final value's data is initialised even before any code is run. It's easy to implement this. Thirdly, if DO can be coupled with a WEND that's something I'm happy to support too. These are exploitations (not bugs), but if they work in QBASIC, they should would in QB64 too if possible.

Thanks for alerting me to these Michael,
Galleon

PS. I'm pretty busy working on other parts of QB64 atm but I have added this to my todo list.

PPS. QB64 does make a couple of deliberate changes to the FOR...NEXT statement that are unrelated to the above mentioned exploitations;
FOR a%=-32768 TO 32767: NEXT a
This works in QB64, but creates an error in QBASIC.

Posted on Dec 27, 2007, 1:44 AM

Respond to this message   

Return to Index


*Sorry, should have typed-> FOR a%=-32768 TO 32767: NEXT a%

by (no login)

Posted on Dec 27, 2007, 2:58 AM

Respond to this message   

Return to Index


Re: RE: FOR...NEXT issues

by (Login MCalkins)
R

>sleep statement

I replaced it with
input a$
for QB64.

>Thirdly, if DO can be coupled with a WEND that's something I'm happy to support too.

I don't think it can, can it?

>These are exploitations (not bugs), but if they work in QBASIC, they should would in QB64 too if possible.

I guess what they are is a matter of opinion, unless someone from Microsoft wrote about this. I agree with Rpgfan that at least some of these appear to be bugs, but that's just opinion at the moment.

>Thanks for alerting me to these Michael,

You're welcome.

>PS. I'm pretty busy working on other parts of QB64 atm but I have added this to my todo list.

Thank you. I wouldn't put much priority on this. Eponasoft is right that this issue would probably almost never occur in the real world.

It'll take more testing to even figure out what QBASIC does in various cases.

Regards,
Michael

Posted on Dec 27, 2007, 3:52 PM

Respond to this message   

Return to Index


Merry Christmas Galleon.

by Pete (Login The-Universe)
Admin

You’re probably using your day to code QB64 but hey, doing what you love is all that counts. I hope this project is still as exciting to you as it is to all of us. I appreciate your run and gun attitude, probably because it reminds me of someone I know, me. I cross bridges when I come to them to, or hang glide over them, preferably.

Question: If a person has QB1.0, wouldn't the CALL ABSOLUTE routine continue to work? My thinking is along the lines that QB can be compiled with other source code. If so, I would think that for the present time you could just rely on the existing libraries in these included QB modules. What I suppose will be wrong with my line of thinking is that these modules are 16-bit and won't run in the 64-bit environment. That's a shame. How about renaming the project QB32, assuming it would work in a 32-bit environment? I know all my 16-bit apps run fine in my wife's 32-bit Vista.

Anyway, a "No Pete it won't work that way." response is fine for a reply. You don't need to waste your time with an elaborate explanation. I'm just brainstorming a bit in an area where the terrain is unfamiliar to me.

In other news, I hope SHELL proves to be straight forward. I would think that all that would be needed is a way to access the command line and come back to the program.

As far as printing is concerned, anyone who has been programming in the last few years has had to get used to changes like USB printers, etc. SHELL to Wordpad, Notepad, etc. probably makes up a lot of programs these days. So maybe LPRINT shouldn't be a priority, the priority should be SHELL.

I suppose there will come times of tough choices where use of an existing C library is easier than trying to make 100% QB emulation. My guess is that it would be easier to make a printer routine into a library than to make LPRINT work like it used to work. Personally, I don't have a problem with that. I just want to be able to print stuff. Besides, the ability to use whatever printer is installed beats the use of a parallel printer on LPT1; so if it were darn near impossible to bring back LPRINT, a more modern printing routine might be a gainful sacrifice to make.

Pete

Posted on Dec 25, 2007, 12:29 PM

Respond to this message   

Return to Index


hello pete

by mennonite (no login)

i believe that qb64 will run in a 32bit environment anyway.

i'm not sure what part of windows allows 16bit dos apps to run, i would imagine ntvdm. there's a thing in windows that allows 16-bit windows apps to run. these environments may not be around in the newer versions of windows. you and i of course, don't care about those, but qb64 exists largely to make qbasic possible in them.

i'm not sure about call absolute. it seems to me that you should be able to simply translate the addresses from 16bit to 32bit, so you're sort or running the same code a different way.

if the newer cpus include the same instruction set as the previous, i can't imagine why a 64bit cpu can't run 16bit code. but then you'd be better off asking michael, who will probably tell you he read about it, but won't know until he tries running 16-bit asm on a 64bit cpu.

i do think that most 16bit "asm" in qbasic can be made to run with just a little math, not an emulator, based on talking to a particular software engineer about this. call absolute, i'm not sure. we'll see what galleon says.

Posted on Dec 26, 2007, 1:26 AM

Respond to this message   

Return to Index


The 64-to-16 bit issue

by (no login)

AMD's (and Intel's clone of such) 64 bit chip can operate either in native mode or in legacy mode. In legacy mode, it has no problems executing 16 bit code. However, in native mode, V86 doesn't exist and therefore while running in native mode, these CPUs cannot execute 16 bit applications. Not only that, but segmented addressing also disappears in native mode, which is necessary for 16 bit applications. So it depends on how you're using the CPU. Many people run their 64-bt CPUs in legacy mode anyways, running Windows XP or Vista-32.

Posted on Dec 26, 2007, 10:00 AM

Respond to this message   

Return to Index


i was assuming a 32bit environment

by mennonite (no login)

being relatively unfamiliar with 64bit, which may or may not apply.

qb64 is being designed to run on 64bit machines, but i'm told it should run in 32bit environments, that's my first assumption.

the second is that it's possible to translate 32bit addresses to 16bit segmented addresses, or rather the other way around.

is it possible to take asm that was designed for 16bit, and simply change the addresses (and segments, which i'm not articulating in a way that suggests i know what segments are, but i've seen enough 16bit basic code "def seg" and love the simplicity of 32bit memory access) so that the 16 bit code will become 32bit code?

if that's possible, which i'm told it is (at least on a 32bit x86) then is it possible to perform that process automatically, in the context of a compiler? i believe it can be done without writing a full on emulator, that's what i'm assuming. i don't know exactly where call absolute enters, but i'm not arguing about call absolute, it can be treated apart from this. rather than being based on what i know (very very little) about asm, the above is based on talking with people that can write i

Posted on Dec 27, 2007, 2:51 AM

Respond to this message   

Return to Index


*...n it.

by mennonite (no login)

Posted on Dec 27, 2007, 2:52 AM

Respond to this message   

Return to Index


some reading

by (Login MCalkins)
R

http://en.wikipedia.org/wiki/Protected_mode#Virtual_8086_mode
http://en.wikipedia.org/wiki/Virtual_8086_mode

"Programs that require segment manipulation, privileged instructions, direct hardware access, or use self-modifying code, will generate an exception and not be executable.[25]"

That seems weird, because I'm pretty sure QBASIC fits most of those categories, including self-modifying code.

The second link says that 9x uses v86 mode for DOS programs. What mode does NT use?

http://en.wikipedia.org/wiki/Windows_on_Windows
http://en.wikipedia.org/wiki/WOW64
http://en.wikipedia.org/wiki/X86-64#Operating_modes
http://en.wikipedia.org/wiki/Long_mode
http://en.wikipedia.org/wiki/Windows_XP_Professional_x64_Edition#Compatibility_with_32-bit_applications

Evidently, 64 bit Windows OSes use compatibility mode. Even though NTVDM is not present, v86 mode should be available, though I imagine that it would take privileged code? Maybe you'd need the user to install a special driver for QB64?
Actually, I don't know if v86 mode would be available, but some form of hardware based 16 bit compatibility exists, with or without NTVDM.

http://nasm.sourceforge.net/doc/nasmdoc0.html (chapters 7 thru 10.)

Regards,
Michael



    
This message has been edited by MCalkins on Dec 26, 2007 10:41 AM

Posted on Dec 26, 2007, 10:38 AM

Respond to this message   

Return to Index


Merry Christmas Pete!

by (no login)

Spend my Christmas day at my computer coding QB64? I don't think so.
I am however, as dedicated to this project as I have ever been. The original December goal was way too ambitious, but with the progress I've made I'm sure Demo #5 will be ready sometime in January.

As for CALL ABSOLUTE in QBASIC, simply running the machine code as-is could not work. I won't go into details ;)

I hope SHELL will work without much work too. There is a C function designed to do exactly this, but what is sent to it may require QB64 to make some minor changes under Linux and OsX.

LPRINT? The only real problem is that older dot matrix printers used to print one line at a time, so they could stop in the middle of a page happily for hours before continuing on that same page later. I'd probably have to have some kind of a time-out feature where-by after a certain time where no LPRINT calls are made it prints out the buffered data. I'll be aiming for 100% compatibility with QBASIC's LPRINT (although on modern machines where you cannot print using LPRINT anyway it will be more than 100% compatible!)

Posted on Dec 26, 2007, 1:56 AM

Respond to this message   

Return to Index


QB64 Questions (Mac/Linux Compatiblilty, etc.)

by qbguy (no login)

1. Since Linux is case-sensitive theFile and thefile are actually two different files. In QBASIC, 'OPEN "thefile" FOR OUTPUT' and 'OPEN "theFile" FOR OUTPUT' both create a new file called THEFILE. How will QB64 address case-sensitivity issues? (I think Mac OS is case sensitive since it is UNIX based but am not sure).

2. How will the SHELL command on non-Windows operating systems work? Will it start a *NIX shell (since Linux and Mac are both based on Unix) or a DOS shell (for compatibility with Windows)? No, wait, most of the commands in *NIX are separate applications, so a DOS shell could also use UNIX commands (I think).

3. How will DOS devices work on non-Windows OS's? Will "con" redirect to /dev/tty and "nul" redirect to /dev/null etc. Or will they open actual files called con and nul which don't do anything?

4. LPRINT -- will it work? (Will it do something like go to the actual LPT1 if it exists, otherwise create a vitrtual Epson printer and make a DVI/PDF/PS, then start a DVI/PDF/PS viewer [or send it to the printer] when the program finishes?)

5. Will we still be able to open the CD drive using ASM ;)

Posted on Dec 23, 2007, 10:12 AM

Respond to this message   

Return to Index


RE: qbguy's 4 questions

by (no login)

Many of these questions are bridges I will cross when I get to them, so my answer now my not reflect the final solution.

1. Ideally, if it cannot find the file it would secretly do a directory scan to detect a file with the same name (without being sensitive to case). I say ideally because that would be the most compatible solution. I'm sure this issue isn't new and I will have to investigate how others have resolved it.

2. No idea. I'm still working on how I'll redirect the output of the console into the emulated QB64 screen window in Windows!

3. Again, no idea, but devices opened using BASIC code using the OPEN command will be emulated as best as possible.

4. LPRINT? I cannot effectively answer this question until I have investigated printer functions further.

5. Yes. Firstly as many interrupts as possible will be emulated. Machine code called by CALL ABSOLUTE will first be checked for a "signature", and if a signature is found it will run a special function which correctly carries out what that code intended to do. If not, the machine code will be passed to an emulator/interpreter with limited functionality which will attempt to carry out the assembly instructions one by one. I say limited because it WON'T allow complex instructions such as those associated with protected mode. If it cannot interpret an instruction a non-continuable error will occur.

I appreciate the thought you have clearly put into these questions before posting them and apologize that I cannot, as yet, provide more concrete answers.

Posted on Dec 25, 2007, 12:59 AM

Respond to this message   

Return to Index


possible solutions

by mennonite (no login)

the following constitutes ideas, not even suggestions, let alone requests.

quote: "Many of these questions are bridges I will cross when I get to them, so my answer now my not reflect the final solution."


>> 1. Ideally, if it cannot find the file it would secretly do a directory scan to detect a file with the same name (without being sensitive to case). I say ideally because that would be the most compatible solution.

that's possible, one of the principles behind basic is to shield you from the operating system. thus if you argue you shouldn't have to know how the o.s. is to work in basic, that's valid. on the other hand, we're also talking about 100% qbasic compatibility, and qbasic doesn't compensate at all for the operating system here. if you're in windows, it doesn't work with windows (for obvious reasons) it still works in a dos way.

if you made it handle windows files the way windows files work, that is, long filenames and case insensitive, that makes sense for windows, as working with dos made sense with dos. it's still basic.

likewise, if someone using linux is working with linux, it makes sense to be able to work with case sensitive files. although it's stupid (imo) to be able to have two files named HELLO.txt and hello.txt in the same folder, the fact is that can happen. which is more like basic to you, a file open routine that can work like this:

open "HELLO.txt" for input as #1
and can open the other file this way:

open "hello.txt" for input as #1

or, one that requires you to shell to linux like you have to shell in windows to get around limitations in basic:

shell "mkdir tempfolder && cp hello.txt tempfolder
open "hello.txt" 'open the second file with the same name by copying to a temp location

i think the first way was more like basic. in dos, it opens files the way they are named in dos (case insensitive.) in windows, it opens files the way they are named in windows. (long, case insensitive) in linux, it opens files the way they are named in linux (long, case sensitive)

i don't think basic can shield the user from the operating system when it comes to the name of something you're opening.

but then i'll be happy enough if it can just do it the way qbasic does. there's always shell.




>> 2. i imagine that if you're using shell, it's to shell to the operating system you're running on, not an imaginary system. otherwise you lose most of the advantages of having a shell command. unlike most basic commands, shell is the one that is there specifically to give you access to the os itself. if you're in dos, you get dos.

if you're in windows, and you run qbasic, and you say cmd /c start notepad, you don't expect "this requires microsoft windows," you expect it to run notepad, even though that would never work if you were running the program in dos. likewise, qbasic in windows cannot run certain dos programs that would not run from windows anyway.




>> 3. although con is a device, it's addressed as a file. if you have a file named con, you should probably open con. if you have a file named /dev/tty, you should probably open /dev/tty.

similar to the issue with opening case sensitive files, there will always be the option of using the os in a non-basic way to get around limitations in qb64. if galleon decides that open con should be opened as /dev/tty, (the trick would be knowing which tty you're running qb in?) you can still open files named "con" by creating a symlink using shell.




>> 4. LPRINT? I cannot effectively answer this question until I have investigated printer functions further.

good luck with that one.




>> 5. Yes. Firstly as many interrupts as possible will be emulated. Machine code called by CALL ABSOLUTE will first be checked for a "signature", and if a signature is found it will run a special function which correctly carries out what that code intended to do.

that will probably take a lot of the power out of asm, to presume what the code does and then try to do the same thing using asm on a mac, particularly on a ppc.

"hi! it looks like you're trying to address the mouse using asm, can i help with a premade mouse routine made for this os?" * no, i want to use my own routine. "hi! it looks like you're trying to address the mouse using asm, can i help with a premade mouse routine made for this os?"

i'm no expert on asm, but i think to do what you're talking about, you'd need to basically write s kind of "anti-virus engine" but for good code. and to do a good job of it, you'd need to outdo an anti-virus engine.

on the other hand, i do like the idea of emulating 16bit addresses so that you can use old basic programs with 16 bit code and compile (or interpret) as 32 or 64 bit. if 32 bit asm is used, it could automatically treat it as 32.

Posted on Dec 25, 2007, 3:14 AM

Respond to this message   

Return to Index


LPRINT and assembly...

by (no login)

As far as I know...in Windows, printers are handled by the HAL and it's just a matter of using a couple of API calls to print to whatever printer is set as default. Dunno how it's done on the Mac though, but for Windows at least, LPRINT shouldn't be terribly hard to handle.

As for the assembly thing...if he's intending on emulating QBASIC but not QB, he doesn't need to worry about 32 bit assembly. As far as I know, ABSOLUTE only supports 8086 assembly; you need QB to use 32 bit assembly and then only as an external library. But if he plans on allowing ABSOLUTE...well, good luck there, as it's going to require a built-in 8086 emulator to fully support it, and that's a project in and of itself.

Posted on Dec 25, 2007, 9:56 AM

Respond to this message   

Return to Index


Re: LPRINT and assembly...

by (Login MCalkins)
R

>if he's intending on emulating QBASIC but not QB, he doesn't need to worry about 32 bit assembly. As far as I know, ABSOLUTE only supports 8086 assembly;

I've used i386 instructions in call absolute() routines. Check out my sha1 program.
I've wondered if i386 instructions could be run in v86 mode. I'm guessing yes, since my program works in Windows...

http://www.network54.com/Forum/190885/message/1197964176/

>good luck there, as it's going to require a built-in 8086 emulator to fully support it, and that's a project in and of itself.

No kidding. He's basically going to have to include an entire machine emulator. It would be like merging Bochs or DOSBox into QB64.

I've said before that I believe instead of trying to build QBASIC compilers that target other platforms, it would be easier to build an open source compiler targeting DOS, and then recommend that people with Linux or 64 bit Windows use an emulator, like they would for QBASIC. The purpose of the project would be to have a free (as in freedom) alternative to the proprietary QuickBASIC. That would be the only way of having a 100% compatible compiler without a whole bunch of work.

Another thing to think about would be to give the user options at compile time. If a program contains Absolute calls, ask the user what to do. If it's a simple mouse routine, etc, maybe have premade routines for the target OS. But ask the user rather then trying to figure it out by analyzing the code. Mennonite is right; it would be too difficult and unreliable. Alternately, show the user guidelines for manually porting the routines to the target platform. Some routines will require little or no modification. For example, my sha1 routines have no OS dependencies (they make no DOS or BIOS calls). With guidelines available, it would be a simple thing to modify it (from source) for 32 bit memory access mode. However, if the program relies on OS API services, I'm not sure what would be involved. Would it be possible, or necessary, to link an Absolute() routine with the DLLs that provide the API? I'm not a win32 programmer, so I don't know. In the case of mouse access, maybe it would be easier for QB64 to provide extensions to the language to avoid needing Absolute() altogether. But that leaves all the other miscellaneous Absolute() routines.
Also, would it be possible to run OS and BIOS independent 16 bit memory access mode code unchanged in v86 mode? Could that work if the code accesses QBASIC variables? Some of these issues would also exist if trying to target protected mode DOS.



    
This message has been edited by MCalkins on Dec 26, 2007 9:31 AM
This message has been edited by MCalkins on Dec 26, 2007 9:29 AM
This message has been edited by MCalkins on Dec 26, 2007 9:24 AM

Posted on Dec 26, 2007, 9:21 AM

Respond to this message   

Return to Index


that post may have been a fuzz pessimistic

by (Login MCalkins)
R

>instead of trying to build QBASIC compilers that target other platforms, it would be easier to build an open source compiler targeting DOS, and then recommend that people with Linux or 64 bit Windows use an emulator

I should add that it is a worthwhile goal to have mostly compatible compilers target other platforms. Aside from Absolute() and other platform specific stuff, it would indeed be nice to have a compatible compiler. The platform specific stuff, while nice, isn't necessary for the average program, and if it's supported at all, even through limited partial emulation, that will be a bonus.

I haven't yet tried out QB64, except on the FOR...NEXT issue. (I intend to try compiling a few of my smaller programs to see how well they work.) But from what I have read has already been implemented in Demo #4, I'm impressed. He has already implemented ON ERROR. That is actually amazing. I've been thinking about how that might be done, and I'm surprised that Galleon was able to do it already.

Regards, Michael

Posted on Dec 26, 2007, 4:09 PM

Respond to this message   

Return to Index


What bugs me...

by (no login)

...is that it supports ON ERROR, yet not SUB or FUNCTION. Functions are one of the most essential building blocks of all programs. I can only liken it to the QBASIC user's obsession with spaghetti code; when you pasta-code (GOTO-happy programming technique), you make more mistakes, so having an error trap for your pasta program is helpful in debugging it...even though you'd make less mistakes using functions. :)

Now, before someone goes off on some ridiculous tangent, putting words into my mouth about "the evils of GOTO" which I never even mentioned, understand that I have been a GOTO advocate for over 15 years. But even I can't help but cringe at GOTO-laden programs that would be far cleaner and more organized by using functions.

Posted on Dec 26, 2007, 7:28 PM

Respond to this message   

Return to Index


ON ERROR

by (Login MCalkins)
R

>you make more mistakes, so having an error trap for your pasta program is helpful in debugging it.

For debugging purposes, it is best to not use an error handler. That way, the interpreter suspends execution, and gives you a chance to figure out what went wrong.

I could somewhat understand a person distributing a finished program to non-programmers including an error handler to print an error message and a request to report the bug. That would shield the end user from getting lost in the interpreter. However, I would not prefer this. Most of the people who run my programs are programmers. Also I don't generally like to distribute programs to non-programmers that I'd admit would likely be buggy. Also, exposing non-programmers to the QBASIC interpreter is a good way of getting them interested in programming.

The one thing I use ON ERROR for, almost exclusively nowadays, is to test for the existence of files. I set a variable, enable my error handler, and try to open a file for input. If the file doesn't exist, the error handler clears the variable. If it does exist, I close the file. I use ON ERROR GOTO 0 immediately after the OPEN statement. It is the easiest way I know of in QBASIC to test for the existence of a file. I would like an easier, cleaner method, but that's what works.

One other thing I've used ON ERROR for, though not as much recently, is to detect the video hardware. The Microsoft demo game Gorillas illustrates this, even using ON ERROR along with PALETTE to determine the video memory of an EGA card.

It seems to me that QBASIC-style event trapping of any sort, especially ON ERROR, would be very difficult to implement in a compiler.

One other event trapping thing that is useful is ON PLAY. It can be used to determine when to load more music in the PLAY buffer, and is very useful for lyrics synchronization. But here also, I would prefer a method that would not rely on event trapping, but that is what is available.

Regards, Michael

Posted on Dec 26, 2007, 7:56 PM

Respond to this message   

Return to Index


the only people that are obsessed with "goto" don't understand what basic is for

by mennonite (no login)

noobs are not obsessed with goto, they just don't know better.

most people know better. they aren't obsessed with goto, they just avoid it.

some people are obsessed about how everyone else should avoid goto. they don't understand that basic is for learning, and suppose that gosub or sub are easy enough to learn, without teaching goto first.

i disagree. it's good to keep it in the language for teaching purposes. it's also good to move on from goto, but basic is basic. it's not the people still using goto that are obsessed with it, it's usually the people that don't.

Posted on Dec 31, 2007, 9:56 AM

Respond to this message   

Return to Index


You might want to look at this

by (no login)

Here is some code I ran across for an 8086 emulator in Quickbasic:
http://pastebin.com/JD38yW43#
Hope this helps.

Posted on Oct 25, 2012, 7:18 AM

Respond to this message   

Return to Index


* Check the post dates before you post...2007?

by Clippy (no login)

Posted on Oct 31, 2012, 2:22 PM

Respond to this message   

Return to Index


* Thank you for the link.

by (Login MCalkins)
R

Posted on Nov 1, 2012, 2:11 AM

Respond to this message   

Return to Index


Are you saying that you want a QB64 Clippy?

by (Login burger2227)
R

>>>>>"hi! it looks like you're trying to address the mouse using asm, can i help with a premade mouse routine made for this os?" * no, i want to use my own routine. "hi! it looks like you're trying to address the mouse using asm, can i help with a premade mouse routine made for this os?"

Let's not put the cart before the horse just yet! Galleon has a long way to go before those kind of decisions are made.

Let's let him work on the basic stuff and not overwhelm him with a bunch of hurdles that are to come later! So far he has been working on this project in a logical way and that has kept him focused.

Ted

Posted on Dec 25, 2007, 1:53 PM

Respond to this message   

Return to Index


oh god no!

by mennonite (no login)

no i was exaggerating the horror of a compiler (or interpreter) rewriting your asm for you.

the thing is, it could probably be done. i think the chances of that particular igea going well are very small, and i was illustratrating what it could be like... i'm not asking galleon to make any decisions about it. it was just a reply to something he said, and he too said it was an idea, not necessarily one he's married to.

Posted on Dec 26, 2007, 1:15 AM

Respond to this message   

Return to Index


Some remarks about a bit variable type and QB64 (URL)

by (Login burger2227)
R

http://www.petesqbsite.com/forum/viewtopic.php?t=2541

By RubyNL and Nodvelt LOL,

Ted

Posted on Dec 21, 2007, 3:13 PM

Respond to this message   

Return to Index


Codemss = RubyNL?

by (no login)

Good to know.

Posted on Dec 21, 2007, 5:39 PM

Respond to this message   

Return to Index


RE: remarks about the bit variable type in QB64

by (no login)

Nodtveidt says:
"Having a BIT variable type is a tremendously bad idea because it isn't the way the CPU works. The smallest amount of data you can directly access is the byte, and there is no way around this. In order for a BIT variable type to work, a full byte has to be used, leaving seven bits unused. This could add up pretty quickly, and is more than likely the reason why no normal compiler features a bit type...it's terribly wasteful, inefficient, and requires special code in the runtime library to handle it, expanding the final binary size further."

Nodtveidt's criticisms are valid, but he forgets to look at the other side's arguments...
1. If a beginning programmer wants to work with bits without worrying too much about MASKing and SHIFTing it is virtually impossible for them to code or understand the help others give them.
2. Many programmers are forced to continuously write their own subs/functions to handle bits, and it frustrating to get them to work correctly.
3. Even if you do write your own with the overhead of BASIC programs it's unlikely it will run faster or that it will be easier to use.
4. Sometimes you MUST work with bits to compress data such as network messages, reading compressed file formats, etc.
5. As for the restrictions of what the CPU can access in a single command... who cares? If a procedure is that time critical it should be coded in assembly language. QB64 should be platform and CPU independent anyway.

Indeed I plan to add another variable type to QB64 one day called _BITSTRING which will allow the programmer to access strings of bits using standard string processing calls like LEFT$, RIGHT$, MID$,INSTR,VAL,etc. This will be even more useful than bit arrays.

Posted on Dec 22, 2007, 2:58 AM

Respond to this message   

Return to Index


My thoughts on the topic

by rpgfan3233 (no login)

I can see the use of a BIT type. However, it would still be a byte in reality since the smallest amount of data a computer can access at any given time is a byte. The issue with it is a matter of implementation efficiency. For example, if you have two BIT variables and a BYTE variable, do the two BIT variables get compressed into a single byte or do they each take up a single byte, effectively illustrating that they should be BYTE variables?

Just my 2 cents...

Posted on Dec 22, 2007, 8:54 AM

Respond to this message   

Return to Index


Re: My thoughts on the topic

by (no login)

If qb64 allocates the space for bit variables by putting them together in bytes (rather than each bit variable getting its own byte), then space is saved. The advantage for the programmer is that they can work with individual bits without bit handling routines, as Galleon said earlier. Thus, the best of both worlds.

Posted on Dec 22, 2007, 9:40 AM

Respond to this message   

Return to Index


*Welcome to QB64. lol

by roy (no login)

Posted on Dec 22, 2007, 12:27 PM

Respond to this message   

Return to Index


* I forgot Daniel "Theopage" Clark .

by roy (no login)

Posted on Dec 22, 2007, 12:33 PM

Respond to this message   

Return to Index


* or even Daniel " Theophage" Clark.

by roy (no login)

Posted on Dec 22, 2007, 12:36 PM

Respond to this message   

Return to Index


That would work

by (no login)

and was something I had thought of as well. It would have to be handled either by the preprocessor (unlikely) or the first pass (probably safest to do it here). C/C++ has a BOOL type which only utilizes a single bit, but the type itself uses a whole byte and anyone trying to make a large BOOL array is immediately considered insane.

*It will work* but it will be inefficient unless the compiler packs the bits correctly, and even then it still won't perform as well as just using a single byte due to the additional code overhead in the runtime library. I would also question how it would be of benefit to a beginner; it's not really teaching them anything, and in fact, is actually giving them a crutch to lean on. Bit twiddling isn't a novice subject but it's certainly a very important thing to learn if you ever intend to get serious. By abstracting this basic concept, you're hindering their ability to fully understand how bits and bytes work. But that's just my two cents, take it or leave it.

Posted on Dec 22, 2007, 1:39 PM

Respond to this message   

Return to Index


The bool issue is one of the reasons for the creation of bitset, a part of the STL.

by rpgfan3233 (no login)

After all, why have a bunch of bools taking up a single byte when you can pack it all together? The size of a bool variable is the same size as a char variable (1 byte) in my compiler. I'm not sure what the C++98 spec says on bool variables, but I know the C99 spec says that any integral type, whether it is short int, int, long int or long long int (signedness is irrelevant in this case), is guaranteed to be at least the same size as a char, and a char is defined as a single byte. Of course, I'm oversimplifying it. Here is what actually happens:
sizeof(long long int) >= sizeof(long int) >= sizeof(short int) >= sizeof(char) = 1

It also doesn't specify whether the generic int type corresponds to a short int or a long int - that is left up to the implementation.

I'm sure with bools in C++, they are probably defined to be the same size as a char.

The STL bitset class was created to store bits in the same way we might optimize a compiler to store bools. More details on it can be found at http://www.sgi.com/tech/stl/bitset.html

Posted on Dec 22, 2007, 2:00 PM

Respond to this message   

Return to Index


That could be used to QB64's advantage

by (no login)

After all, Galleon is using C++ as the target language for QB64.

Posted on Dec 22, 2007, 2:04 PM

Respond to this message   

Return to Index


* I think FORTRAN 2003 has a BIT variable type, too

by qbguy (no login)

Posted on Dec 27, 2007, 12:30 PM

Respond to this message   

Return to Index


Here's what the FreeBASIC people have to say about QB64 (*URL)

by qbguy (no login)

http://www.freebasic.net/forum/viewtopic.php?t=9413&start=75&postdays=0&postorder=asc&highlight=

Posted on Dec 20, 2007, 8:02 AM

Respond to this message   

Return to Index


Latest FB update of the month

by (Login burger2227)
R

Improved QB and cross platform compatibility are the two main issues addressed in this release. Many bug fixes as well.

Most Significant Changes:

>>>>>>>>>>> QB Compatibility Improvements:
Updates to SCREEN, RND, INPUT, ERASE, PCOPY in text mode, all impoved for 100% compatibility with QB sources.

Default field alignment in TYPE's:
For improved header portability, and to fix the long time problems with BFD compatibility on linux, the default field alignment in TYPE's have been changed to 4 bytes on DOS and Linux.

>>>>>> FreeBASIC libraries will likely need to be rebuilt due to this change.

In all platforms, care must be taken when using TYPE's for file I/O, and it is recommended that FIELD=1 be used in such cases to save space as well platform portable field alignment.

Cross Compilation:
The windows version was previously enabled with all the possible cross compilation targets. This was cut down to just Cygwin and DOS as both should work. The other cross compilation targets are available: compile fbc from sources and specify the needed --enable-crosscomp-target switches. See ./src/compiler/INSTALL in the source distribution for more details.

There is a lot of chat about QB64. When do those people ever have time to program anything? LOL. I think Galleon's effort is paying off for BOTH communities!

Ted



    
This message has been edited by burger2227 on Dec 20, 2007 2:18 PM
This message has been edited by burger2227 on Dec 20, 2007 1:46 PM

Posted on Dec 20, 2007, 1:06 PM

Respond to this message   

Return to Index


Didn't you learn your lesson?

by (no login)

http://www.network54.com/Forum/585676/message/1197870858/Maybe+that+should+be+a+good+lesson+to+learn...

Posted on Dec 20, 2007, 7:31 PM

Respond to this message   

Return to Index


* I saw your BS on the FB forum site. So all bets are off!

by (Login burger2227)
R

Posted on Dec 20, 2007, 8:27 PM

Respond to this message   

Return to Index


Since when are we betting?

by (no login)

I don't recall placing any bets.

Posted on Dec 20, 2007, 9:01 PM

Respond to this message   

Return to Index


Someone's not paying attention

by (no login)

That thread is exceptionally old and is the only place on the FB.net forums where QB64 is even brought up. Do a search for QB64 on the forum for proof of this.

Posted on Dec 20, 2007, 7:27 PM

Respond to this message   

Return to Index


I got about 5 pages of QB64 stuff I read today.

by (Login burger2227)
R

I am a member now too, so watch your P's and Q's. What I saw was a bunch of supposed coders making rude comments is all! I can be just as rude too! If they ban me, you are still free to come here, because we are not a bunch of arrogant asses!

We do not like Stalkers however!

I even read some of your BLAH BLAH too! Go redo your libraries LOL! Even if I used FB, I would not brag about it with all of those mental giants there.

Ted



    
This message has been edited by burger2227 on Dec 20, 2007 8:38 PM

Posted on Dec 20, 2007, 8:37 PM

Respond to this message   

Return to Index


Mental giant?

by (no login)

"Go redo your libraries LOL!" yeah great, wonderful AOL-speak there, kiddo. And no, most of the people here at network54 are not a bunch of arrogant asses, but you in particular ARE. You also run your mouth at Pete's QB Site. You are a disgrace to Galleon's efforts and I can only hope that he ostracizes you for the sake of his project and his own reputation.

By the way, as I told lurah, I don't even use FB anymore. I've said it countless times over the last few months. You, however, like the stereotypical troll you are, don't understand this and like the fanboy/bandwagon rider that you also are, automatically assume that if someone's posting against your nonsense then they must be an FB user. Every day you make yourself look more and more like an ass. I find it funny but, at the same time, just a little sad. I used to think that Mac was the problem; actually, Mac is pretty level-headed compared to zealots like you.

But of course, this kind of reaction is exactly what you're looking for to feed your ego. So, I guess I'm just playing along with your little head game. I do tend to feed trolls for a little while, until they get boring anyways, so it's a good thing you're starting to bore me.

Posted on Dec 20, 2007, 9:00 PM

Respond to this message   

Return to Index


GOTCHA sweetheart ! You lose....................

by (Login burger2227)
R

So why are you lurking at the FB site? Are you their roving reporter? I hope that you are bored and stay as far away as possible from me.

What do you do now? Play Candyland?

Bafungol

Posted on Dec 20, 2007, 9:45 PM

Respond to this message   

Return to Index


Its not about winning or loosing

by E.K.Virtanen (no login)

This is gettin way too stupid.

Would it be best to give peace for galleon with hes project? After all, there is huge workload still to do even with out peoples here messing around and fighting about other basic dialects too.

QB64 is in a road to same place where FB was goin originally. FB dev-team noticed that it can be much more than just a QB clone and they decided to move that direction. Its their call, not my, your or anyone else.

FB is great tool that actually can kick commercial dialects in ass, and i cant be unhappy with that solution. It means that some QB'rs looses something, but many other gets something too.
I know it makes a bitter thoughts when compiler what was supposed to be a next QB grows out of "box", but it was something to expect. I mean if fb dev-team realises that they can do much more than just a QB clone, why on earth they should not do it?

QB64 is just a baby. Comparing it to FB is childish and stupid. Lets wait like a year and lots of demo tests before we even consider this comparing.
And even then, it is stupid since goals of these two projetcs are so different. The other tries to develop as best basic in town while other wants to be as QB as possible. How anyone can compare them?

I really do hope that someday i can work with QB64 in my linux box, but until then im forced to use other alternatives.

Maybe it would be better to concencrate to code, not bashing? Everyone.

Posted on Dec 20, 2007, 10:50 PM

Respond to this message   

Return to Index


I agree with most of what you say

by (Login MCalkins)
R

>And even then, it is stupid since goals of these two projetcs are so different. The other tries to develop as best basic in town while other wants to be as QB as possible. How anyone can compare them?

FB brings comparison upon itself by its claims (at least in the past) of QBASIC compatibility. If it claims to be compatible, it is entirely valid to criticize it for not being so, especially if FBers mock QBers for being stuck in the past. Comparisons are entirely valid if QB64 ends up being more compatible with QBASIC than FB will be. QBASIC compatibility was a stated goal of FreeBASIC, if I'm not mistaken. Even you seem to agree with this:

>QB64 is in a road to same place where FB was goin originally.

...

But I agree that there has been way WAY too much hostility, anger, and antagonism. I spent quite a bit of time today reading posts here and on freebasic.net (from links posted here). Several people here have been deliberately hostile and antagonistic, to quite a big degree. I suspect some of it is brought on by the evangelical nature of FBers (Btw, I am a religious evangelizer...). But still, the antagonism from some of our regulars has been extreme. I partly understand you FBers being a little ticked.

But also, you FBers posted very disrespectful comments about us on your freebasic.net. I saw a few posts say respectful things or make admissions, but there were plenty that were hostile and sarcastic (such as the "out of string space" crap (though that was funny)). Even v1c was very disrespectful. Also, it is not appreciated when FBers come here and either spam or antagonize. Some of your exchanges with Mennonite demonstrate unnecessary antagonism from you, although you were both out of line. (I've gotten antagonistic with him and others. One of my worst fights with him in the chatroom was a direct result of me being deliberately antagonistic. I regret it.)

I think we should respect each other.
We should respect you guys. You are using a compiler that you like, that is in active development, and is quite powerful and modern. You are successfully writing software in its language (which we will correctly contend is not the QBASIC language). We should not treat FreeBASIC as taboo or refer to it as the F word (except in joke). The subforums here should not be offlimits to discussion, or even respectful recommendation of FB. Even in the main forum, it should not be completely taboo (just as all other non-QBASIC languages). We should respect you guys, but some of us will continue not to.
You should respect us. We happen to like the archaic language and software that is QBASIC. Some of us have tried FreeBASIC and were dissatisfied with it. Some of us were much more patient with it than others were. (I barely tried it at all, just writing part of a program in .14 using code written by Matthew and Ellipse to implement a chat bot.) Mennonite wrote a complete program in FB and was patient enough to try several versions. Also, most of us are not stuck with QBASIC. Quite a few know and use other languages as well. Ildűrest and ComputerGhost are just 2 examples of quite knowledgeable and skilled people who know and use other languages, and who absolutely deserve respect from all of you, even your best devs. Even those of us who use QBASIC exclusively do not merit disrespect merely for being nostalgic dinosaurs. You should respect us, but some of you will continue not to.

Regards,
Michael



    
This message has been edited by MCalkins on Dec 20, 2007 11:42 PM
This message has been edited by MCalkins on Dec 20, 2007 11:40 PM

Posted on Dec 20, 2007, 11:38 PM

Respond to this message   

Return to Index


*well said.

by mennonite (no login)

Posted on Dec 20, 2007, 11:44 PM

Respond to this message   

Return to Index


Re: I agree with most of what you say

by (no login)

> FB brings comparison upon itself by its claims (at least in the past) of QBASIC compatibility.
> If it claims to be compatible, it is entirely valid to criticize it for not being so, especially if FBers mock QBers for being stuck in the past.
> Comparisons are entirely valid if QB64 ends up being more compatible with QBASIC than FB will be.
> QBASIC compatibility was a stated goal of FreeBASIC, if I'm not mistaken. Even you seem to agree with this:


I dont actually know about this so much. Maybe two years ago it was "advertised" like this but today, i dont know anymore.
If there reads something like that it is QB compatible then i think its not so right anymore. It has grown out of QB, tho it is still one of the most qb compatible compilers, atleast what i know basic dialects.
Mocking for stucking in the past is irritating. I get lots of rude posts about this thing since i am "ASCII lover", "pervert oldish lover", "******* who dont want to evolve" and related.

> But I agree that there has been way WAY too much hostility, anger, and antagonism.

Yes, its not about the languages anymore, its about who can make the most rude bashing.

> I spent quite a bit of time today reading posts here and on freebasic.net (from links posted here).
> Several people here have been deliberately hostile and antagonistic, to quite a big degree.
> I suspect some of it is brought on by the evangelical nature of FBers (Btw, I am a religious evangelizer...).
> But still, the antagonism from some of our regulars has been extreme. I partly understand you FBers being a little ticked.

Please, do not take me as FBrs since i am not that. Ill use it __when__ its best for the job. Personally i think small interpreters are cool, such as yaBasic, smallBasic and Chipmunk Basic. But they cant do the job allways so got to use FB or some other similar alternative.
I get angry every time when i see someone asking "how i do this with qb?" and first response is "Use FB".
But when there is a job what needs to be done and FB is better solution than QB, then i dont see why not reply like "FB is better here".


> I think we should respect each other.
> We should respect you guys. You are using a compiler that you like, that is in active development, and is quite powerful and modern. You are successfully writing software in its language (which we will correctly contend is not the QBASIC language). We should not treat FreeBASIC as taboo or refer to it as the F word (except in joke). The subforums here should not be offlimits to discussion, or even respectful recommendation of FB. Even in the main forum, it should not be completely taboo (just as all other non-QBASIC languages). We should respect you guys, but some of us will continue not to.
> You should respect us. We happen to like the archaic language and software that is QBASIC. Some of us have tried FreeBASIC and were dissatisfied with it. Some of us were much more patient with it than others were. (I barely tried it at all, just writing part of a program in .14 using code written by Matthew and Ellipse to implement a chat bot.) Mennonite wrote a complete program in FB and was patient enough to try several versions. Also, most of us are not stuck with QBASIC. Quite a few know and use other languages as well. Ildűrest and ComputerGhost are just 2 examples of quite knowledgeable and skilled people who know and use other languages, and who absolutely deserve respect from all of you, even your best devs. Even those of us who use QBASIC exclusively do not merit disrespect merely for being nostalgic dinosaurs. You should respect us, but some of you will continue not to.

Respect should not be up to language, it should be up to personality, knowledge and skills. I know nicks you mentioned but i do not know what and when happened since i skip 99% of posts at fb.net (where i assume these things happened).
I have allways sayd that if there would be QB for linux, i would use it too still today. There is not so i cant use it. Thats why i hope QB64 will not come as failure and i can use it in my linux. But untill we are there, it takes lots of time.
I dont have absolutely anything againts QB, and i think both QB and FB has their place in this planet.
Fact is, if someone throws a rock, there is someone who throws it back. Maybe then it would be good to stop throwing rocks, and if some jerk still does, not to throw back.

I am not here for praising or blaming, i have just followed posts here and at fb.net in the past times and i know there is no winner or looser. Only lots of bad feelings.
http://www.petesqbsite.com/forum/viewtopic.php?t=2525&sid=142304d291f8887b382bcd429172f88a

E.K.Virtanen

Posted on Dec 21, 2007, 12:29 AM

Respond to this message   

Return to Index


Re: I agree with most of what you say

by (Login MCalkins)
R

>But when there is a job what needs to be done and FB is better solution than QB, then i dont see why not reply like "FB is better here".

I agree.

>Respect should not be up to language, it should be up to personality, knowledge and skills.

I agree.

>I know nicks you mentioned but i do not know what and when happened since i skip 99% of posts at fb.net (where i assume these things happened).

With regard to Ildűrest and CG, I wasn't referring to any specific reference. I was using them as examples of skillful people here whom even fb devs like v1c should not underestimate. Specifically, they were examples of network54 regulars who do not use just QBASIC. There are plenty of other examples (Solitaire and Mac use VB, Kewbie uses Perl, etc.) In other words, many of us aren't "stuck in the past". There were general insults aimed at network54 regulars collectively.

Mennonite is right when he says that even newbies deserve respect. It's hard to remember to give it to them, sometimes.

An older friend of mine, whom I had gotten into a bad fight with just prior, told me once that everyone should be given respect, whether they deserve it or not. (I don't live up to this, but I think he's right.)

Regards, Michael



    
This message has been edited by MCalkins on Dec 21, 2007 10:14 AM

Posted on Dec 21, 2007, 10:08 AM

Respond to this message   

Return to Index


...

by (no login)

> With regard to Ildűrest and CG, I wasn't referring to any specific reference. I was using them as examples of skillful people here whom even fb devs like v1c should not underestimate...

Aye, i didnt know this part. Im not fan of v1ctor either but since i am not aware of what happened i dont take part of this journey.

> Mennonite is right when he says that even newbies deserve respect. It's hard to remember to give it to them, sometimes.

Well good to know there is atleast one thing where i and menno think same way.

Anyway, this is so offtopic in this forum so i dont see point to continue anymore.

Have a nice christmas.

Posted on Dec 21, 2007, 10:51 AM

Respond to this message   

Return to Index


* That should be "I know there is no winner or loser"

by Spelling Police (no login)

Posted on Dec 21, 2007, 12:26 PM

Respond to this message   

Return to Index


Way back when...

by (Login MystikShadows)
R

Mennonite didn't just write an application for it. his history goes far back longer than that. It's all about the replies to his questions that started all this.

back then, FB was a QB Compatible language it was atleast trying to live up to it's original promise in default mode, now it's a -lang qb option. So back then, when menn would try to code the way he's used to in QB some things wouldn't compile or wouldn't work. So he'd ask questions about those. these weren't bashes or comparisons between qb and FB here. He was coding in FB and asking FB related questions and even in that context couldn't get any useful answers. The classic example, he wanted to draw a line with the LINE statement back them, he was answered to use Allegro instead. Allegro isa DOS equivalent to OpenGL, which on earth should he learn Allegro just to draw a line on the screen? When all your attempts at trying to use FB are met with responses like this one (or worse ones too) how long is anyone suppose to sit back and live with the lack of useful answers. Clearly he was stating a bug in the LINE statement or wanted to know the difference in syntax, he didn't want to be told to learn allegro. There were other questions in other situations too that I noticed. The replies were less than social and next to 0% constructive or useful in getting him on the right parh to answering his questions, not one of them. That was just him, of course there were others with these kinds of questions too, and they got the same replies. Back then no one posted "we're looking into this and we'll fix the problem with the line statement or the screen statement or the circle statement. So he was much more patient with the FB crew than what you saw in that program he created, he created much more and/or tried to port some of his qb tools he created to FB and after a couple dozen times of getting replies like those, well, enough is enough. Don't you think?

v1c was glad, I'm sure to see all the support he got from the QB Community when FB started. Today, some of the more well known names aren't using FB anymore because FB drifted away from that original concept. When I say drifted away, I mean that based on the first original set of posts, -lang qb should have been the default mode, not an "option" and any add ons should have been done in different switches if they didn't or couldn't add a feature without breaking QB compatibility. These roles shifted with fb 0.16b now it's all about being gcc compatible because the -lang qb is now an option which puts it as a 2nd priority not a first as it used to be. This kind of shift can't be exptected to happen without consequences. It's not just about adding a -lang qb to our compiler calls.

So now that QB64 is trying to do this as a default since the QB community is still looking for the QB alternative. I'm sure Galleon is glad to see the support he's getting just as v1c was back when he first announced FB. Things changed since then, things evolved, and well FB is a language among others.

The bottom line is that there's more the menn's history with FB than meets the eye. He tried hard to be able to use it, he didn't just do that program and call it quits. FB failed him, as it did others. Some welcome the drift away from the QB goal others drifted away from FB at the same speed fb drifted away from Basic and it's defining principles. Can't please everybody in a crowd.

Posted on Dec 21, 2007, 5:35 AM

Respond to this message   

Return to Index


Hi mystik

by (no login)

Yah, i dont see anyone here disagrees with the fact that fb has grown out of qb and there is justificated fear for everyone that it might grow out of basic too. Though, i dont see situation yet this bad.
Back in time when .16 released, there were a hell in loose. I think 50% of fb users then either flamed or was flamed because of disagrees.
Still, i do not think its right to spoil or bash fb nor qb users. Specially after this long time.

I think it was inevitable to face that situation when that promising compiler breaks out of the box. To be honest, if that would not happened, it would have been waste of great resource atleast in my opinion.

I was bitter too when Option Explicit came as default and forced peoples to dim variables. Few weeks after i realised it was a good move. Personally i cant see nothing bad if variables are declared, it only clears the code and is good to learn even for newbies.

What comes for the fb community itself, i dont think there is no more *******s than here is or in any other programming forum. Those peoples are everywhere, you cant get riddof them.

While fb compiler itself is developed where it is goin now, i think there is major improvements happened at the userbase itself. It is pretty nice place after all in these days. Naturally if you want to start a war there, it is easy but it is easy here too?

There is billion basic dialects, i like to use them. Im frustrated since everytime i ask something at fb forums that is self-evident with other dialects, reply too often is like "MID$ is there only because compatibility for qb, use blaablaa function".
But still, it is a neat compiler. Not worth of bashing no matter what has happened year(s) ago.

But this is a qb64 forum, why on earth we are tlaking about this here? Galleon gets pissed, and with a reason too.

Posted on Dec 21, 2007, 9:35 AM

Respond to this message   

Return to Index


Right EK, let's move to the Non QB Forum

by (Login burger2227)
R

That was my original intention anyway, but it got sidetracked by ESP.....

I will edit my blasts!

Ted

Posted on Dec 21, 2007, 11:12 AM

Respond to this message   

Return to Index


Round & round we go!

by (no login)

Most of the arguments raised are valid and fair.
None of the arguments are new. In fact I referred to the link qbguy mentions long ago (and I've tracked it for months). I find the thread more informative than offensive, let them post what they like, its their forum.
I disagree that QB64 will go down the path of FB, honestly I'm not out to re-invent the wheel.

Posted on Dec 21, 2007, 12:10 AM

Respond to this message   

Return to Index


But the possibilities are enormous

by (Login burger2227)
R

Once you get QB64 fully compatable with QB, new functionality could be added the correct way. QB needs to have some new stuff as you have already pointed out.

We do not need or want a FB clone! I understand that.

Keep up the great work Galleon,

Ted

Posted on Dec 21, 2007, 11:22 AM

Respond to this message   

Return to Index


A misunderstanding.

by (Login MystikShadows)
R

I think the post should have been read as.

QB64 will follow FB's original path, not the path it's on now. which understates that QB compatibility is a first priority.

Posted on Dec 21, 2007, 11:32 AM

Respond to this message   

Return to Index


I am pissing off a lot of FB users, so keep up the good work!

by (Login burger2227)
R

I have been to Pete's site and bragged about your project! You get this QB thing finished and then you can really go to town. You can add anything you want after that and FB will be dead if you push it! A lot of them are getting fed up with having to rewrite their code for the latest version!

Go! The key is to keep new stuff named differently and you got them big time!

Ted



    
This message has been edited by burger2227 on Dec 15, 2007 1:30 AM

Posted on Dec 15, 2007, 1:27 AM

Respond to this message   

Return to Index


"A lot of them are getting fed up with having to rewrite their code"

by mennonite (no login)

oh my god they're turning into mennonite!

actually, i was just tired of the way they compensated for design issues by berating those that hadn't become drones already. if you've been coding in qbasic for decades, and fb is "compatible," you shouldn't be treated like a noob. in fact, no one in a "basic" forum should be treated like a "noob," unless by request. it was about version 0.16 that i decided no more versions and 0.15b was the best ever. if you stuck around for three more crappy versions you're better than i am, or you think you are.

Posted on Dec 15, 2007, 2:02 AM

Respond to this message   

Return to Index


It IS better

by (no login)

0.15 is better than all subsequent versions in terms of compatibility. With all of the time and effort I poured into FB productions, I sure as hell wasn't going to upgrade just to rewrite 20% of my code. So I just stuck with 0.15. If it ain't broke, don't fix it.

Posted on Dec 15, 2007, 8:37 AM

Respond to this message   

Return to Index


do you know where you can still download the source?

by mennonite (no login)

i know myst offers a download of the versions for dos, windows, and linux, of 0.15b, but unless it's on ibiblio, i don't know where you can get the source for 0.15b.

that would be ideal if anyone was ever going to "go code something useful" out of freebasic.

Posted on Dec 15, 2007, 3:10 PM

Respond to this message   

Return to Index


I got the FB 0.15 source code...

by (Login MystikShadows)
R

Make that the compiler and the runtime both. 0.15b

if there's a demain I can upload them and make them available if it's wanted.

Posted on Dec 15, 2007, 3:14 PM

Respond to this message   

Return to Index


where are you keeping the binaries?

by mennonite (no login)

last i saw them, they were still part of the software development initiative.

if people are going to try freebasic, they should at least see it at its best.

Posted on Dec 15, 2007, 3:47 PM

Respond to this message   

Return to Index


* I'm gonna upload them and post back here the URLs

by (Login MystikShadows)
R

Posted on Dec 15, 2007, 3:55 PM

Respond to this message   

Return to Index


Ok I posted the binaries and source files (URL)...

by (Login MystikShadows)
R

I posted it in the Non_QBasic forum, I believe, where it goes hehe.

http://www.network54.com/Forum/190885/message/1197764294/FreeBASIC+0.15+dowloads...

Posted on Dec 15, 2007, 4:19 PM

Respond to this message   

Return to Index


A bit inconsiderate?

by (no login)

Let's keep this forum about QB64.
If you want to post links to versions of FB consider doing it elsewhere!

Posted on Dec 15, 2007, 5:51 PM

Respond to this message   

Return to Index


honestly, you shouldn't worry.

by mennonite (no login)

first of all, you'll never meet anyone more considerate than myst.

second, he actually posted it in another subforum, in response to my question. blame clippy for mentioning fb.

third, and most importantly:

**any version of freebasic is free advertising for qb64.**

but if clippy never brings it up again, i won't. good luck with your project.

Posted on Dec 15, 2007, 7:19 PM

Respond to this message   

Return to Index


That is a LAME ass excuse for a bunch of retards to loaf here!

by (Login burger2227)
R

FB sucks and we all know it! This is just another sad attempt to try to make people use a lame programming language that continually is updated at the whim of a bunch of kid gamers!

Go play with your paddles kids!

You may be taking over Pete's site with you rudeness, but that won't work here! Isn't it time to update your old programs again? I hear there is another update coming......

Lay off! Lemmonite! I hope Mac deletes this whole thread!

Ted



    
This message has been edited by burger2227 on Dec 16, 2007 1:34 PM
This message has been edited by burger2227 on Dec 16, 2007 1:33 PM

Posted on Dec 16, 2007, 1:29 PM

Respond to this message   

Return to Index


*hypocrite. read the title of your post opening the thread

by mennonite (no login)

Posted on Dec 16, 2007, 5:31 PM

Respond to this message   

Return to Index


* LOL, you cannot blame me for YOUR mistakes!

by (Login burger2227)
R

Posted on Dec 16, 2007, 8:00 PM

Respond to this message   

Return to Index


that was a joke, ted

by mennonite (no login)

i REALLY don't want this conversation to continue, it's taking up too much space.

you remember when you told me to "lighten up?" i'm trying, ted, but i'm a little tired of being bossed around by you, you're not admin, you don't need to flag everything as something you don't like when even *i* can't berate people as much as you do. and i really don't appreciate being called a "LAME retard." stop dishing it out, *or* stop acting like we should be deleted each time we actually do what you do everyday. is one of those too much to ask? thanks.

Posted on Dec 16, 2007, 8:07 PM

Respond to this message   

Return to Index


I don't think any of this stuff should be here

by (Login burger2227)
R

After all, it is about his effort and chatting about FB is not really what I intended when I posted that. Actually a few have shown interest in this project for obvious reasons.

I am not trying to boss anybody around, so don't take it that way please. I wish I had not mentiond the F word at all!

Ted

Posted on Dec 16, 2007, 9:38 PM

Respond to this message   

Return to Index


Maybe that should be a good lesson to learn...

by (no login)

...never to mention it again. :)

Posted on Dec 16, 2007, 9:54 PM

Respond to this message   

Return to Index


re:That is a LAME ass excuse for a bunch of retards to loaf here!

by (no login)

Are you including yourself amongst those retards? :)

Posted on Dec 16, 2007, 9:16 PM

Respond to this message   

Return to Index


It's what I tried to do.... :-)

by (Login MystikShadows)
R

By posting that as a link to the other forum, the Non QBasic Forum, where the actual download links are, to divert the discussion there. Now if anyone wants to say anything they can do it there instead of here. :-)

Like menn said it's just to answer his question.

MystikShadows

Posted on Dec 16, 2007, 2:50 AM

Respond to this message   

Return to Index


Response to Mystic Shadows...

by Pete (Login The-Universe)
Admin

http://www.network54.com/Forum/190885/message/1197826842/

Posted on Dec 16, 2007, 9:41 AM

Respond to this message   

Return to Index


LOL that was a trip (in all sense of the word lol) ...

by (Login MystikShadows)
R

Only you Pete can create a reply like that that's also coherent ;-).

Posted on Dec 16, 2007, 10:29 AM

Respond to this message   

Return to Index


*Glad you (enjoyed?) it.

by Pete (Login The-Universe)
Admin

Posted on Dec 16, 2007, 10:37 AM

Respond to this message   

Return to Index


* lol I sure did ;-) hehe

by (Login MystikShadows)
R

Posted on Dec 16, 2007, 11:00 AM

Respond to this message   

Return to Index


Chill out

by (no login)

There's nothing wrong with what he did. Why are you creating conflict where there should be none?

Posted on Dec 16, 2007, 10:19 AM

Respond to this message   

Return to Index


A short progress update (fyi)

by (no login)

Thanks for your support of QB64 Clippy.

I haven't posted a progress update over the last week because it has been very difficult to implement sub syntax-ing correctly. The good news is I am past this hurdle and have begun work on the OPEN command and file access in general. I doubt the "late December" deadline can be effectively met for DEMO #5 with all the features I proposed, nor do I want to release the next version without those features. So the release date of DEMO #5 will be early-mid January. Work commitments and Christmas commitments have affected progress as well. The great news (for QB64) is that I'll be on holiday all throughout January, so expect a MASSIVE AMOUNT OF PROGRESS then.

I can see the benefit of 100% compatibility, but under certain circumstances I can also see the benefit of being more lenient. I'd love some opinions on the following...
QUESTION 1. In the following...
a$="ABCDEFG"
MID$(a$,-2)="12345"
...should a$="45CDEFG" or should it create an error?
QUESTION 2. In the following...
a$=SPACE$(-2)
...should it simply return a null length string or create an error?

Posted on Dec 15, 2007, 3:12 AM

Respond to this message   

Return to Index


why it should create an error

by mennonite (no login)

basic doesn't pass errors to be annoying, it passes them so that you can debug your code.

to be "lenient" as you put it, which there may be better examples for than mid$(a$,-2) is just a way to have fewer "errors" which means fewer bugs caught when someone tests a program. what you're trying to accomplish is mid$(a$,2,2)=left$("12345",2) and while that may seem "unreasonable" for one example, i think it's more likely that someone would put a variable (from some numeric function) where "-2" is.

Posted on Dec 15, 2007, 3:42 AM

Respond to this message   

Return to Index


Yes, it should generate an error

by (no login)

Both of those examples generate an Illegal Function Call in QB, as they should. Besides, there is absolutely no advantage to be gained by using these functions outside of their intended parameters.

Posted on Dec 15, 2007, 8:41 AM

Respond to this message   

Return to Index


Caught between Iraq and a hard place here...

by Pete (no login)

Personally I see nothing wrong with allowing a function for negative numbers in string manipulation. I look at functional bugs more closely than I do at bugs caused because the user somehow allowed for a variable to surface like -2, which when interpreted by QBasic MID$ would cause an error. What I would have to ask myself here is am I thinking logically? In other words, would there be a logical progression from: MID$(a$, 2) : MID$(a$, 1) : MID$(a$, 0) : MID$(a$, -1) : MID$(a$, -2) ?

IF a$ = "12345" then...
MID$(a$, 2) = "2345"
MID$(a$, 1) = "12345"
MID$(a$, 0) = ??????
MID$(a$, -1) = "1234" : same as MID$(a$, 1, LEN(a$) -1)
MID$(a$, -2) = "123" : same as MID$(a$, 1, LEN(a$) -2)

-----------------

I cannot see a mathematical relationship here without manipulating the equation to stand for "When we go zero, we return "null" and when we reach negative, we start subtracting string characters from the right side, so I would punt on this one. IN other words, I see this as 'trendy' string manipulation and I therefore question its overall value. Also, we already have coded programs with simple enough to use LEN() statements in them to achieve this result. I think what you are considering wouldn't make me want to change the way I manipulate a string in the future.

Maybe this favorite saying I credit myself as creating (probably someone else said it years ago but I was too stubborn to ever hear it) would be useful:

Just because you can doesn't mean you should.

Anyway, that is my take on this particular question that you have raised.

The 'hard' place in the message title is that I do agree on improving things that show obvious weakness. Hey, that’s 'hard' to pass up. For instance, QB64 inherently brings great memory strength to the table without changing on 'bite' (excuse the pun) of code. But then something comes up like:

a$ = "Pete thinks this may be useful."
areplace$ = "might"
PRINT MID$(a$, 1, 18) + areplace$ + MID$(a$, 21)

Output = Pete thinks this might be useful.

- There are times when I wished QB could just do this "REPLACE" function with:

MID$(a$, 18, 3) = areplace$: PRINT a$

Output = Pete thinks this might be useful.

So things like REPLACE$(a$, 18, 3) = variable$ might be a neat feature.

All of this now stated, I still feel very strongly that there is a lot of work in a compiler and that too many of these ideas, as 'neat' as they might sound, could push the finished product too far off into the future. I certainly would recommend that you write these ideas down and keep them handy for future releases. As I've stated before, I like the idea of added features once the original QB all-compatible compiler is finished.

My 2-cents... and I threw in a buck-25 extra... because it's close to Chrstmas.

Pete

PS On a personal note, we are all very appreciative of what you are doing as well as the WAY you are doing it. Thanks for being part of this community and for my friend mennonite, menn, just remember – you can’t spell ‘appreciate’ with the letters: CIA, (Sorry Galleon, just a running gag between the two of us.)

Posted on Dec 15, 2007, 9:13 AM

Respond to this message   

Return to Index


Your right Pete

by (Login burger2227)
R

The first thing to get done should be the QB code and extras should come after that.

There will be some issues to address about some of the sacrifices that using QB64 will force on us anyhow, such as the graphics window sizes!

Galleon should not get sidetracked from the original idea or we may end up with another FB.

Ted

Posted on Dec 16, 2007, 1:44 PM

Respond to this message   

Return to Index


And my take ;-)...

by (Login MystikShadows)
R

QUESTION 1. In the following...
a$="ABCDEFG"
MID$(a$,-2)="12345"
...should a$="45CDEFG" or should it create an error?

I agree with Pete here. This shouldn't be allowed (at least not in QB Compatibility mode). In the case of an "added feature" it would depend on the type of string.

If it's decuared DIM MyVariable AS STRING then concatenation should occur and A$ should be 45ABCDEFG"

IF it's declare DIM MyVariable AS STRING * 5 then you could either truncate (as expected by a fixed length string) or generate an error since the string doesn't fit.

I would keep the syntax QB Compatible however, so perhaps either extra parameters maybe a Concatenation Type parameter for (Position and Insert or Position and Overwrite) but as long as if these parameters aren't there the MID$ is treated as QB's MID$ is. :-).



QUESTION 2. In the following...
a$=SPACE$(-2)
...should it simply return a null length string or create an error?

Same here, as QB does it. Generate an error.

Posted on Dec 15, 2007, 3:25 PM

Respond to this message   

Return to Index


i think you were agreeing with everyone but pete

by mennonite (no login)

pete seems the most openminded about it.

this isn't something i feel very strongly about, however, but i was hoping you'd reply as i would generally defer to your answer about this kind of thing.

i think we agree though, that if you make enough changes, the project becomes something else entirely.

if you need someone with a stronger opinion about that than my own, you can always ask mac. since i plan to be using only freedos, linux and reactos in the future, i don't have any strong feelings about qb64, but it sounds good so far. reactos is coming along better than before, it might reach beta and run qb64 in 2008. who knows, qb64 may even run in wine someday.

Posted on Dec 15, 2007, 3:43 PM

Respond to this message   

Return to Index


* But QB64 will have a native Linux version, so you won't need Wine

by qbguy (no login)

Posted on Dec 15, 2007, 3:48 PM

Respond to this message   

Return to Index


nice!

by mennonite (no login)

i'm still trying not to get my hopes up about qb64.

i really didn't like the "bait-and-switch" approach to compatibility/even native features in freebasic, nor the attitudes shown to people that were expecting freebasic to live up to its claims, when it was repeatedly touted as something a few people think it never was. that all went so incredibly well, i decided from the beginning to pretty much leave qb64 the hell alone.

i'll try it when the source is out, assuming it goes copyleft, but i'm content enough with the attitude being shown by the developer(s). they seem honest and reasonable.

i'm sure they'll try their best. and you can count on myst to give you good, no- the best ideas, as long as you're still asking for them. once you stop asking, you'll only get compliments.

Posted on Dec 15, 2007, 4:04 PM

Respond to this message   

Return to Index


* You used the F word twice! But you can blame it on me?

by (Login burger2227)
R

Posted on Dec 16, 2007, 1:49 PM

Respond to this message   

Return to Index


The F word?

by (no login)

I was expecting to see the REAL F word, not the name of Y.A.B.C.

Posted on Dec 16, 2007, 9:05 PM

Respond to this message   

Return to Index


clippy, this will run in qb64 when it has graphics

by mennonite (no login)

'public domain
SCREEN 13
LOCATE 2, 2
q$ = CHR$(34) + "blame clippy..." + CHR$(34)
FOR n = 1 TO LEN(q$)
PRINT MID$(q$, n, 1);
SLEEP 1
NEXT n
CLS
b$ = "it was a joke! get over it! give it a rest!" + CHR$(32)
FOR n = 1 TO LEN(b$)
SELECT CASE ASC(MID$(b$, n, 1))
CASE 32
COLOR 15
PRINT tk$: tk$ = ""
GOSUB en
CASE ASC("!")
ef = 1
tk$ = tk$ + "!"
CASE ELSE
tk$ = tk$ + MID$(b$, n, 1)
END SELECT
NEXT n
DO WHILE 0 = 1
en:
FOR y = 0 TO 8
FOR x = 0 TO 38
pixel = POINT(x, y)
COLOR pixel
LOCATE y + 4, x + 2
PRINT CHR$(219)
NEXT x
NEXT y
COLOR 15
IF ef = 1 THEN SLEEP 1
SLEEP 1
CLS
ef = 0
RETURN
LOOP

Posted on Dec 17, 2007, 2:22 AM

Respond to this message   

Return to Index


If it has a BSD port, I'll be impressed...

by (no login)

...but I won't expect it. Everyone seems to disregard the BSD family of Unices, despite being far superior to the butchered slopjob that is Linux.

Posted on Dec 15, 2007, 9:23 PM

Respond to this message   

Return to Index


About proposed changes to MID$ and SPACE$

by (no login)

How the changes would effect existing QBASIC programs:
I can't think of a single existing program this would effect. Yes, it would be possible to deliberately write a program to demonstrate the differences.

Changes to MID$:
This is perhaps the most useful change. Consider the following...
for x=100 to -100 step -1
a$="1234567890123456789012345678901234567890"
b$="watch me move"
mid$(a$,x)=b$
locate 10,1: print a$
next
Under normal QBASIC it would happily scroll in from the right (try it) then create an error when x became 0. Under the proposed changes, it would continue to scroll off to the left. Make sense?

Changes to SPACE$:
I'm less passionate about these changes, as stated, they don't provide any new functionality, but it would be very useful when working with complex string manipulations.

As for the time it would take to include the changes? Actually I've already included these changes! But I may undo them based on your opinions (which is why I asked). Thanks for taking the time to respond to what is essentially a trivial issue.

Posted on Dec 15, 2007, 6:08 PM

Respond to this message   

Return to Index


i only answered in case it wasn't trivial...

by mennonite (no login)

but i'd rather it was. in basic, the more issues that are unimportant, the better.

Posted on Dec 15, 2007, 7:18 PM

Respond to this message   

Return to Index


Not a very good idea

by (no login)

I mean after all, you're supposed to be reimplementing QB's core functionality, right? That would go against that philosophy. Why not just implement it properly? There's always the possibility of an old QB program relying on an error condition with MID$, and if you change its functionality, that program will fail to work as expected.

Posted on Dec 16, 2007, 10:18 AM

Respond to this message   

Return to Index


I'm going to second that....Galleon...

by Pete (Login The-Universe)
Admin

It wouldn't be how I would code but if someone set up an ertor trap so that if a variable sent into MID$() became less than one, you've created a bu for them. Hence you are throwing the 100% working QB compatibility out the window for a 'trivial' matter. So, I have to agree with Eponasoft on this issue. Ouch, that really hurt.

As far as adding new features in the future with NEW statements, again, I'm all for those.

Pete

Posted on Dec 16, 2007, 11:31 AM

Respond to this message   

Return to Index


*I third that.

by Simple roy (no login)

Posted on Dec 16, 2007, 1:46 PM

Respond to this message   

Return to Index


* LOL

by (Login burger2227)
R

Posted on Dec 16, 2007, 1:51 PM

Respond to this message   

Return to Index


I'll consider the vote passed in favo(u)r of the against!

by (no login)

It's very important that I value the opinions of others when making this project otherwise I may as well not be releasing Demos or discussing issues. The changes are (as stated) already implemented but it is easy enough to un-implement them which I will do.

So what changed my mind?
1. The principle of the issue in regards to maintaining 100% compatibility. Although I know this will not affect any existing QBASIC programs QB64 users need to know they can trust QB64 as much as possible.
2. The functionality provided could easily be provided by creating a custom sub/function to do a similar job.
3. No positive votes for the changes, some were neutral, but most negative.

Thanks for the advice,
Galleon

Posted on Dec 17, 2007, 1:21 AM

Respond to this message   

Return to Index


QB64 can now load files...

by Galleon (no login)

...sort-of
I've still got a lot of work to do on this but the following code does compile and run perfectly in the version I'm working on. Samus looks nice too, but I digress ;)

SCREEN 13
OPEN "f:\qb64\samus.raw" FOR BINARY AS #1
a$ = " "
FOR y = 0 TO 199
FOR x = 0 TO 319
GET #1, , a$
c = ASC(a$)
PSET (x, y), c
NEXT
NEXT
DO: LOOP WHILE INKEY$ = ""

Posted on Dec 15, 2007, 8:53 PM

Respond to this message   

Return to Index


Quick follow-up on file access implementation

by (no login)

I've implemented the most difficult aspects of file access including the scanning of numbers within valid ranges. This is a situation in which QB64 does create an OVERFLOW error which is important because the content of a file is unpredictable.

Also, I hope someone can shed some light on RANDOM access files for me. As far as I can tell they are exactly the same a BINARY access except the offset to read-to/write-from is multiplied by the value of "len=?". Am I missing something?

Posted on Dec 21, 2007, 4:33 AM

Respond to this message   

Return to Index


The intricacies of Random Access Files.

by (Login MystikShadows)
R

Hi Galeon,

There's basically one difference I can think of between binary files and random access files, they're called record delimiters.

Basically, random access files stores the records and the marker to the end of the record. so it knows where to place the pointer. It's more a language thing than a file thing but if you create a type/end type that' has 80 bytes in it. and you store them in a random access file and a binary files, using the same TYPE END TYPE construct you'll notice a difference in file size.

The position pointer in a random access file is expected to move at the beginning of the next record which explains the need for a end of record delimiter, not the next byte which is why the LEN option exists when you open a file for random access. I have in my mind CHR$920) being used as the end of record delimiter character, but don't quote me, I might be mixing word perfect field delimiter codes in here lol.

I'll try to see what it is. Not sure if the information is out there. lol

Posted on Dec 21, 2007, 5:48 AM

Respond to this message   

Return to Index


Just please try to keep the RA files QBish...

by Pete (no login)

Don't FB them up with changes like CHR$(0) can;t be used in an RA file. Previous versions of FB had that restriction and maybe current ones still do. I don't keep up, because when you get FB, you get enough versions to fill an ocean, or so I've heard. QB also allows RA files to be made without the use of the LEN statement.

Pete

Posted on Dec 21, 2007, 9:05 AM

Respond to this message   

Return to Index


*I'll be keeping it 100% QBASIC compatible Pete

by (no login)

Posted on Dec 21, 2007, 1:15 PM

Respond to this message   

Return to Index


Great! Then count me in to write the HELP files for it...

by Pete (Login The-Universe)
Admin

I can cut and paste QB help as fast as anyone here can. OK, well maybe not as fast as mennonite, but he'll stop 1/2 way through the job to bitch about something or write a song, so I would get done first. :)

Pete

PS Oh well, back to this miserable coding project I'm in the middle of, which never seems to end... as soon as I go write a song.

Posted on Dec 21, 2007, 2:48 PM

Respond to this message   

Return to Index


Thanks MystikShadows

by (no login)

There's definitely more the RA files than meets the eye. I'll have to conduct my own investigation into these before implementing them. Any further information you can give me on these would be very useful, particularly on the file format and padding between entries.

"Not sure if the information is out there."-MystikShadows
The problem with RA file access is the description of how they work in the QBASIC help is very vague, I guess it's a bit like the old "How much space do I need to store a graphic with the GET statement?" for which there should be an easy answer for beginning QB'ers (or a function to return this information) but there isn't!

Posted on Dec 21, 2007, 1:13 PM

Respond to this message   

Return to Index


All The Bob does is count backwards in the array

by (Login burger2227)
R

Until he gets a value other than 0. He uses a PSET to set the end of the array in case the area uses a 0 color attribute. That gives you the number of elements used.

However, I don't know if that would help you with files.

Ted

Posted on Dec 21, 2007, 3:24 PM

Respond to this message   

Return to Index


OPEN LTRIM$(" funfun.bin") FOR BINARY ACCESS READ WRITE LOCK READ WRITE AS #a+b LEN=c*d

by (no login)

File access. How hard could that be to add anyway...
Oh.
"?[{FOR}{RANDOM|BINARY|INPUT|OUTPUT|APPEND}][{ACCESS}][{READ}][{WRITE}][{SHARED|LOCK}][{READ}][{WRITE}]{AS}[#]?[{LEN=}][?]"

Posted on Dec 3, 2007, 1:03 AM

Respond to this message   

Return to Index


Upgrading to support indewelling optional [ ]s in sub syntax...

by (no login)

The time has come for me to improve a critical function in the compiler that converts the user's input into meaningful chucks according to a subs syntax string. Up until now it didn't support optional [] inside other optional [], so subs like line looked like:
[{STEP}][(?,?)]-[{STEP}](?,?),[?],[{B|BF}],[?]
instead of:
[[{STEP}](?,?)]-[{STEP}](?,?)[,[?][,[{B|BF}][,?]]]

I'll also be making it support spaces in the options so inside the syntax for open instead of having:
[{ACCESS}[{READ}][{WRITE}]]
It'll have:
[{ACCESS READ WRITE|ACCESS READ|ACCESS WRITE}]
Which means one value can be passed to the SUB to represent this information instead of 3.

I've also identified a way to improve the error-handling in situations like:
DIM a(1 TO 10) AS INTEGER
PRINT a(-5)
Currently, trying to read the array causes a sub-script out of range error and the array value 0 is passed to PRINT which prints 0 to the screen. BUT it shouldn't behave this way. Nothing should be printed to the screen at all. I knew about this problem from the start but didn't think of the solution till now.

How does this affect you?
It doesn't :)

Just keeping everyone up to date,
Galleon

Posted on Dec 3, 2007, 11:25 AM

Respond to this message   

Return to Index


This part's taking longer than I thought!

by (no login)

Luckily I'm 90% percent done and happy with the way it works. There are a number of steps in interpreting a sub's syntax and applying it to the user's code. Here's a sneak peek of the first step. I like to work using visual models because they help me identify loopholes in my logic and see patterns.

http://img145.imageshack.us/img145/5139/linecn2.jpg

This is the format of the line statement.
The light gray numbers are the level to which the option is indwelled in optional []. The blue numbers show the MINIMUM level from which you can enter the option from the previous position (nm if you don't get this!). The RED X and GREEN P indicate whether the item's value should be passed to the sub. An X means there is no point passing a value for the item because it can be assumed based on the existence/omition of another value or it is always there.

The second step is to trace the user's code from left to right one word at a time and check whether that word (or group of words) matches any future item (very non-trivial! but almost implemented).

I'll share this piece code with anyone interested after I get it working properly because it was a nightmare to work out how to code and could have a myriad of different uses.

Posted on Dec 6, 2007, 2:17 AM

Respond to this message   

Return to Index


RE: DEMO #5

by (no login)

Now that DEMO #4 has been successfully released I am already working towards the next demo.

There's been somewhat less enthusiasm surrounding the release of DEMO #4 which I fully understand and attribute to a number of factors including:
1) Although arrays are included and of critical importance without data to use them with their functionality is limited. If I'd managed to include some file access routines or DATA & READ support by this update they may have proved more useful.
2) 16-bit memory referencing is very important for compatibility but at this early stage of QB64's development not very interesting unless you like the technical side of QBASIC.
3) There are still a large number of unimplemented subs/functions you'd just assume exist but don't like INT() or CINT() and it is most frustrating to look through an unsorted list of implemented commands when trying to figure out what can be made.

DEMO #5 will be the "fun" demo.
The goal of DEMO #5 is to implement as much as possible. I imagine the list of what won't be in DEMO #5 to look somewhat like...
USER DEFINED SUBS/FUNCTIONS
USER DEFINED TYPES
PRINT USING
DRAW
PLAY
CALL ABSOLUTE
CALL INTERRUPT
CHAIN
SHELL
CLEAR
ON ... EVENTS (except for ON ERROR which is already implemented!)

As a general rule, if it can be coded in a day or two, expect to see it implemented in DEMO #5!

DEMO #5 will be released late December.

PS. Already coded since DEMO #4 was released...
MID$(function)
MID$(statement)
INSTR
SPACE$

Posted on Nov 28, 2007, 4:00 AM

Respond to this message   

Return to Index


Ahh haa, now we're talking, ;-).....

by (Login MystikShadows)
R

Don't forget that one of your biggest fan (aside me hehe) is gone and will be back late December too.

As for what's planned in demo 5, I think it's the perfect set of "next things to do" And I have plenty of code to test that once's it's done too. specially the file functionality. :-).

So I'm looking VERY forward to seeing demo 5 in action :-).

Posted on Nov 28, 2007, 7:56 AM

Respond to this message   

Return to Index


* Not to mention it is shopping time! QB64 will be your gift!

by (Login burger2227)
R

Posted on Nov 28, 2007, 2:21 PM

Respond to this message   

Return to Index


More additions for the next update fully coded...

by Galleon (no login)

STRING$ (both forms of the function!)
LSET
RSET
CV... examples: a=_CV(INTEGER,i$) OR a=CVI(i$)
MK...$ examples: a$=MKI$(10) OR a$=_MK$(INTEGER,10)

Posted on Nov 30, 2007, 9:14 PM

Respond to this message   

Return to Index


Excellent additions. :-) ....

by (Login MystikShadows)
R

CVI and family are used quite alot in file manipulation among other places. So great idea to have them implemented upfront.

Demo $5 is gonna be a milestone :-).

Posted on Dec 1, 2007, 3:32 AM

Respond to this message   

Return to Index


* Only $5 ? I thought it was free LOL

by (Login burger2227)
R

Posted on Dec 1, 2007, 11:30 AM

Respond to this message   

Return to Index


LOL What can I say....

by (Login MystikShadows)
R

I blame the keyboard manufacturers for putting the # so darn close to the $ ;-)

Or maybe I'm Galleon's pimp LOL.



    
This message has been edited by MystikShadows on Dec 1, 2007 2:35 PM

Posted on Dec 1, 2007, 2:15 PM

Respond to this message   

Return to Index


Galleon, make us a new keyboard too please!

by (Login burger2227)
R

I gather you have the same problem with variable types. Try just Dimming them LOL.

Ted

Posted on Dec 1, 2007, 8:50 PM

Respond to this message   

Return to Index


You could use the UK keyboard -- then the # sign is way apart from the dollar sign.

by qbguy (no login)


http://en.wikipedia.org/wiki/Image:KB_United_Kingdom.svg


There is also a UK Dvorak for people who like Dvorak:

http://www.typocheck.co.uk/dvorak/switch.html
http://www.typocheck.co.uk/dvorak/img/UK-Dvorak-layout.png

Posted on Dec 2, 2007, 1:15 PM

Respond to this message   

Return to Index


*Never met the man! But his keyboard is not loved.

by (Login burger2227)
R

Posted on Dec 3, 2007, 3:14 AM

Respond to this message   

Return to Index


*I preferred his New World Symphony.

by roy (no login)

*

Posted on Dec 3, 2007, 6:49 AM

Respond to this message   

Return to Index


DOWNLOAD DEMO #4 NOW!

by (no login)

Link to .zip file (~5MB):
http://www.mediafire.com/?ctmxcjjwu3v

Known issues:
*comventional memory string descriptors cannot be freed and cause an out of memory error if too many strings referenced by 16-bit memory referencing are allocated (can be fixed easily by the next demo).
*INPUT doesn't accept arrays as arguments yet
*RND without brackets freezes the compiler
*NEXT x,y won't work yet. Use NEXT x: NEXT y
*IF a=1 GOTO 4 doesn't work yet. Use IF a=1 THEN GOTO 4

Thank you again, for supporting QB64.
Galleon

(the below is copied from README.TXT)

QB64 COMPILER V0.4 DOCUMENTATION
================================
Thanks for trying QB64!

What's NEW in this demo?
-arrays
-16 bit memory referencing (DEF SEG, PEEK, POKE, VARSEG, VARPTR, VARPTR$, SADD)
-CLS
-PRINT (improved)
-error handling (ON ERROR..., RESUME, ERROR, ERL, ERR, etc.)
-GOSUB/RETURN
-numbers written in source code (eg. -5.06E+1) work
-some floating point math improvements
-SIN,COS,SQR
-ABS
-CHR$
...and many, many other important improvements "under the hood"

To compile a QBASIC/QB4.5 .BAS program simply run the program COMPILE.BAT. It will prompt
you to enter the .BAS file's name.
*****MAKE SURE YOUR .BAS FILE IS SAVED IN TEXT FORMAT*****

RE: INCLUDED SAMPLE .BAS PROGRAMS
I TAKE NO CREDIT FOR PROGRAMMING THESE SAMPLES (EXCEPT howclose.bas & memtest.bas)
SOME PROGRAMS WERE MODIFIED TO MAKE THEM RUN UNDER DEMO #4
PLEASE DON'T DISTRIBUTE THESE SAMPLES UNLESS FOR THE SOLE PURPOSE OF TESTING DEMO #4
SOME RUN WAY TOO FAST! TRY THEM UNDER QBASIC TO "GET THE IDEA"
flormap.bas: a raycaster-like floor mapper
lines.bas: nice effect using intersecting lines which create various patterns
wheel.bas: nice effect by joining lines at varying intervals around a circle
matrix.bas: like the movie! a scrolling text effect
pattern.bas: makes wierd patterns in SCREEN 13 (bizarre)
rotozoom.bas: rotates and zooms an image in and out at the same time
starwars.bas: plays a starwars tune
fracmand.bas: draw a mandelbrot fractal (same as in Demo #3)
fracnice.bas: draws a fractal and cycles its colors
fracfern.bas: draws a fern
howclose.bas: visual representation of an algorithm to identify nearby points quickly
flame.bas: draws a cool flame effect
memtest.bas: demonstrates QB64 can handle ALL 16-bit memory referencing

IMPORTANT NOTES:
-Still lots of bugs/loose ends to fix, please report your findings, but take into account
what is/isn't supported before saying something doesn't work (listed below).
-If C++ COMPILATION FAILS, it doesn't mean there is something wrong with the C++
compiler it means that the C++ code generated by COMPILE.EXE was wrong, and that the
QB64 compiler wasn't good enough to find the problem (as it is in the early stages
of development).
-ONLY WINDOWS executable programs are possible atm (no Linux or Mac compilations yet).
-You can also enter the name of the program to compile on the command line: (eg.)
COMPILE frac.bas
-You don't need to "INSTALL" QB64, just extract it using its current directory
structure.

WHAT IS NOT SUPPORTED YET:
-Subs/functions
-User defined types
-File access
-Select case
-EXIT DO/FOR/etc.
-ELSEIF
-String comparison using <,<=,>= (=,<>,> ARE supported)
-REM (use ' instead!)
-Any QB statement/function not listed below, or usage of a function below which
requires one of the above

WHAT IS SUPPORTED: (and known limitations)
PRINT
IF-THEN-ELSE-ENDIF
DO-LOOP
FOR-NEXT (may not work with bit-length variables)
WHILE-WEND
GOTO
DIM
DEFINT/etc.
LINE
SOUND
TIMER
RND (must use RND(...), without brackets the compiler will freeze!)
RANDOMIZE
OUT (but only to palette registers in SCREEN 13)
PCOPY
VIEW (graphics)
VIEW (text)
INPUT (but not line input! also, inputting of bitlength-variables is unfinished)
WINDOW
LOCATE
COLOR
PALETTE
WIDTH
SCREEN
PSET
ASC
LEN
INKEY$
STR$
UCASE$
LCASE$
LEFT$
RIGHT$
LTRIM$
RTRIM$
DEF SEG, PEEK, POKE, VARSEG, VARPTR, VARPTR$, SADD
CLS
GOSUB/RETURN
ON ERROR
RESUME
SIN
COS
SQR
CHR$
ABS
ERL
ERR
ERROR
REDIM

WHAT'S NEW IN QB64? (COMPARED TO QBASIC)
INPUT PROTECTION:
Say good-bye to "REDO FROM START" messages with input protection which stops the
user from typing in invalid data before they even press ENTER. Try it with fixed
length strings to limit how many characters a user can enter.
DATA TYPES & THEIR USAGE:
_BIT name`
_UNSIGNED _BIT name~`
_BIT*4 name`4
_UNSIGNED _BIT*4 name~`4
_BYTE name%%
_UNSIGNED _BYTE name~%%
INTEGER name%
_UNSIGNED INTEGER name~%
LONG name&
_UNSIGNED LONG name~&
_INTEGER64 name&&
_UNSIGNED _INTEGER64 name~&&
SINGLE name!
DOUBLE name#
_FLOAT name##
STRING name$
STRING*100 name$100
THE NEW _DEFINE COMMAND:
Instead of having DEFBIT,DEFUBT,DEFBYT,DEFUBY etc. for all the new data types
there is a simple command which can be used like DEFINT for new types (or old
types if you want to) as follows...
_DEFINE A-C,Z AS DOUBLE 'the same as DEFDBL A-C,Z

Posted on Nov 24, 2007, 5:49 PM

Respond to this message   

Return to Index


* Looks good

by qbguy (no login)

Posted on Nov 24, 2007, 7:01 PM

Respond to this message   

Return to Index


* did you mean IF a=1 THEN 4 doesn't work. I'm pretty sure THEN is always required.

by qbguy (no login)

Posted on Nov 24, 2007, 7:03 PM

Respond to this message   

Return to Index


RE: IF a=1 GOTO 10

by (no login)

Just to clarify, QBASIC actually accepts ALL of the following:
IF A=1 GOTO 10
IF A=1 THEN GOTO 10
IF A=1 THEN 10
10

QB64 currently only supports the following method:
IF A=1 THEN GOTO 10
10

Posted on Nov 24, 2007, 7:27 PM

Respond to this message   

Return to Index


* Does " IF a THEN" work?

by (Login burger2227)
R

Posted on Nov 27, 2007, 11:25 AM

Respond to this message   

Return to Index


*Yes, because like QBASIC, QB64 evaluates "IF"s as =0 or <>0 expressions

by Galleon (no login)

Posted on Nov 27, 2007, 1:13 PM

Respond to this message   

Return to Index


* But QB true = -1 which is also not zero eh........

by (Login burger2227)
R

Posted on Nov 28, 2007, 12:27 AM

Respond to this message   

Return to Index


I ran some quick tests

by roy (no login)

Everything worked fine but I am too busy at the moment to do any extensive tests. Great work.

Posted on Nov 25, 2007, 7:33 AM

Respond to this message   

Return to Index


Real nice!

by (Login burger2227)
R

I like the way the screens look and the sounds work great. Although Starwars was a bit loud LOL.

I will try some of my stuff with it.

Ted

Posted on Nov 27, 2007, 11:23 AM

Respond to this message   

Return to Index


Noticed one thing. The window size changes

by (Login burger2227)
R

Some graphic screens are larger than others. Screen 13 was the smallest window. Why is that?

Ted

Posted on Nov 28, 2007, 12:32 AM

Respond to this message   

Return to Index


Explaination about why window changes size in different video modes

by Galleon (no login)

SCREEN 13 has 320x200 pixels, so its window has 320x200 pixels
SCREEN 12 has 640x480 pixels, so its window has 640x480 pixels

Now, what's the resolution of SCREEN 0? The answer depends on the screen's WIDTH selected and the number of rows. The default is 80x25 with characters which are 8x16 pixels. Doing the math (80*8,25*16) you'll find this mode has a pixel resolution of 640x400.

There are also some aspect ratio issues in full screen mode which I need to address too. At the moment it always displays a 4:3 ratio screen with black bars at the top and bottom if the QBASIC screen mode doesn't have a 4:3 ratio. Ideally it would stretch the screens surface or select a more appropriate video mode. Of course, in window'd mode you'd always expect the window to have the same ratio as the desktops video mode.

320x200 in window'd mode can be a little small. I'll probably add some scaling options and "renderers" (like 2XSAI) at some stage.

Posted on Nov 28, 2007, 2:36 AM

Respond to this message   

Return to Index


13 should be 640 X 400 I think.

by (Login burger2227)
R

I don't know if that is easy to do, but it would be a lot better and closer to the average screen mode size.

Is there a way to go to full screen or almost with the maximize window? I know that windows is tough to make work full screen, but I have seen some program libraries capable of doing that in VB without losing the video quality.

Keep up the good work,

Ted

Posted on Nov 28, 2007, 2:35 PM

Respond to this message   

Return to Index


qbasic commands

by vaibhav (no login)

pls send me qbasic

Posted on Mar 4, 2008, 1:37 AM

Respond to this message   

Return to Index


Click here

by (Premier Login iorr5t)
Forum Owner

To get QBasic, go here:

http://www.network54.com/Realm/QBZips/QBZips.html

However, you are not in The QBasic Forum. You want to be at
http://www.network54.com/Forum/13959/

If you meant QB64, sorry, you are at the
right place. Download here
http://www.network54.com/Forum/585676/message/1204460008

Mac




QBasic rules.

Posted on Mar 4, 2008, 2:27 AM

Respond to this message   

Return to Index


DOWNLOAD DEMO #4 NOW!

by (no login)

Link to .zip file (~5MB):
http://www.mediafire.com/?ctmxcjjwu3v

Known issues:
*comventional memory string descriptors cannot be freed and cause an out of memory error if too many strings referenced by 16-bit memory referencing are allocated (can be fixed easily by the next demo).
*INPUT doesn't accept arrays as arguments yet
*RND without brackets freezes the compiler
*NEXT x,y won't work yet. Use NEXT x: NEXT y
*IF a=1 GOTO 4 doesn't work yet. Use IF a=1 THEN GOTO 4

Thank you again, for supporting QB64.
Galleon

(the below is copied from README.TXT)

QB64 COMPILER V0.4 DOCUMENTATION
================================
Thanks for trying QB64!

What's NEW in this demo?
-arrays
-16 bit memory referencing (DEF SEG, PEEK, POKE, VARSEG, VARPTR, VARPTR$, SADD)
-CLS
-PRINT (improved)
-error handling (ON ERROR..., RESUME, ERROR, ERL, ERR, etc.)
-GOSUB/RETURN
-numbers written in source code (eg. -5.06E+1) work
-some floating point math improvements
-SIN,COS,SQR
-ABS
-CHR$
...and many, many other important improvements "under the hood"

To compile a QBASIC/QB4.5 .BAS program simply run the program COMPILE.BAT. It will prompt
you to enter the .BAS file's name.
*****MAKE SURE YOUR .BAS FILE IS SAVED IN TEXT FORMAT*****

RE: INCLUDED SAMPLE .BAS PROGRAMS
I TAKE NO CREDIT FOR PROGRAMMING THESE SAMPLES (EXCEPT howclose.bas & memtest.bas)
SOME PROGRAMS WERE MODIFIED TO MAKE THEM RUN UNDER DEMO #4
PLEASE DON'T DISTRIBUTE THESE SAMPLES UNLESS FOR THE SOLE PURPOSE OF TESTING DEMO #4
SOME RUN WAY TOO FAST! TRY THEM UNDER QBASIC TO "GET THE IDEA"
flormap.bas: a raycaster-like floor mapper
lines.bas: nice effect using intersecting lines which create various patterns
wheel.bas: nice effect by joining lines at varying intervals around a circle
matrix.bas: like the movie! a scrolling text effect
pattern.bas: makes wierd patterns in SCREEN 13 (bizarre)
rotozoom.bas: rotates and zooms an image in and out at the same time
starwars.bas: plays a starwars tune
fracmand.bas: draw a mandelbrot fractal (same as in Demo #3)
fracnice.bas: draws a fractal and cycles its colors
fracfern.bas: draws a fern
howclose.bas: visual representation of an algorithm to identify nearby points quickly
flame.bas: draws a cool flame effect
memtest.bas: demonstrates QB64 can handle ALL 16-bit memory referencing

IMPORTANT NOTES:
-Still lots of bugs/loose ends to fix, please report your findings, but take into account
what is/isn't supported before saying something doesn't work (listed below).
-If C++ COMPILATION FAILS, it doesn't mean there is something wrong with the C++
compiler it means that the C++ code generated by COMPILE.EXE was wrong, and that the
QB64 compiler wasn't good enough to find the problem (as it is in the early stages
of development).
-ONLY WINDOWS executable programs are possible atm (no Linux or Mac compilations yet).
-You can also enter the name of the program to compile on the command line: (eg.)
COMPILE frac.bas
-You don't need to "INSTALL" QB64, just extract it using its current directory
structure.

WHAT IS NOT SUPPORTED YET:
-Subs/functions
-User defined types
-File access
-Select case
-EXIT DO/FOR/etc.
-ELSEIF
-String comparison using <,<=,>= (=,<>,> ARE supported)
-REM (use ' instead!)
-Any QB statement/function not listed below, or usage of a function below which
requires one of the above

WHAT IS SUPPORTED: (and known limitations)
PRINT
IF-THEN-ELSE-ENDIF
DO-LOOP
FOR-NEXT (may not work with bit-length variables)
WHILE-WEND
GOTO
DIM
DEFINT/etc.
LINE
SOUND
TIMER
RND (must use RND(...), without brackets the compiler will freeze!)
RANDOMIZE
OUT (but only to palette registers in SCREEN 13)
PCOPY
VIEW (graphics)
VIEW (text)
INPUT (but not line input! also, inputting of bitlength-variables is unfinished)
WINDOW
LOCATE
COLOR
PALETTE
WIDTH
SCREEN
PSET
ASC
LEN
INKEY$
STR$
UCASE$
LCASE$
LEFT$
RIGHT$
LTRIM$
RTRIM$
DEF SEG, PEEK, POKE, VARSEG, VARPTR, VARPTR$, SADD
CLS
GOSUB/RETURN
ON ERROR
RESUME
SIN
COS
SQR
CHR$
ABS
ERL
ERR
ERROR
REDIM

WHAT'S NEW IN QB64? (COMPARED TO QBASIC)
INPUT PROTECTION:
Say good-bye to "REDO FROM START" messages with input protection which stops the
user from typing in invalid data before they even press ENTER. Try it with fixed
length strings to limit how many characters a user can enter.
DATA TYPES & THEIR USAGE:
_BIT name`
_UNSIGNED _BIT name~`
_BIT*4 name`4
_UNSIGNED _BIT*4 name~`4
_BYTE name%%
_UNSIGNED _BYTE name~%%
INTEGER name%
_UNSIGNED INTEGER name~%
LONG name&
_UNSIGNED LONG name~&
_INTEGER64 name&&
_UNSIGNED _INTEGER64 name~&&
SINGLE name!
DOUBLE name#
_FLOAT name##
STRING name$
STRING*100 name$100
THE NEW _DEFINE COMMAND:
Instead of having DEFBIT,DEFUBT,DEFBYT,DEFUBY etc. for all the new data types
there is a simple command which can be used like DEFINT for new types (or old
types if you want to) as follows...
_DEFINE A-C,Z AS DOUBLE 'the same as DEFDBL A-C,Z

Posted on Nov 24, 2007, 5:48 PM

Respond to this message   

Return to Index


*double post (sorry!)

by (no login)

Posted on Nov 24, 2007, 5:50 PM

Respond to this message   

Return to Index


*1 Day to go*

by Galleon (no login)

Posted on Nov 24, 2007, 4:15 AM

Respond to this message   

Return to Index


Demo #4 release postponed to 25th November

by (no login)

Despite significant improvements to QB64 other commitments will mean that the planned release of Demo #4 this weekend is impossible.
Sorry!

Posted on Nov 15, 2007, 3:55 AM

Respond to this message   

Return to Index


CLS finally implemented!

by Galleon (no login)

For some reason it's always the easy things I leave till last. It does, of course, support the optional parameter values from 0 to 2. I also fixed up the VIEW (graphics) statement which had a minor bug and didn't previously draw frames and fill regions.

I'll be making some minor improvements to the print statement tomorrow then releasing DEMO #4 on Sunday.

Posted on Nov 23, 2007, 3:16 AM

Respond to this message   

Return to Index


Sounds like you are progressing nicely

by (Login burger2227)
R

You are smart to only work in steps, rather than get overwhelemed by the entire project all at once.

Also, I am glad this is not being done by a team of programmers, like FB is. That would have a bunch of people wanting different things done different ways!

And I like it that your goal for now is simply to make QB useable on 64 machines.

Already I can see benefits to your effort. Now I can print screen a graphics page! And I will still be using my 32 machine.

Thanks,

Ted

Posted on Nov 23, 2007, 3:21 PM

Respond to this message   

Return to Index


I agree with Clippy ...

by (Login MystikShadows)
R

This is great news indeed. I just got back online today and noticed this post ;-). demo #4 soon huh? I can't wait. :-)

Great work.

Posted on Nov 23, 2007, 4:00 PM

Respond to this message   

Return to Index


A short progress update...

by (no login)

Significant progress on memory allocation and arrays has occurred over the past week. Four days ago I added support of variable-length string arrays, however through rigorous testing I identified a bug in the string subsystem. The bug was very difficult to pin-down and took me several days to locate and correct. Thankfully this problem is now fixed. This bug is present in Demo #3 but cannot cause any harm except for creating corrupt strings.

Demo #3 was released on the 10th of October and ideally I'd like to release Demo #4 this weekend but because of a focus on the "big" issues I still haven't had time for the small/easy improvements I wanted to include in Demo #4 (like CLS and improving PRINT). I've still got a little more work to do on arrays too. So I've decided to set the official release date of DEMO #4 as Sunday, the 18th of November. I'll use the extra week to "stabilize" QB64 and add commands which are easy to implement (like CLS!).

On a side-note, I've taken some interest in PCOPY (the QB "magazine") and QB EXPRESS. I'm not sure exactly in what way publishing information about QB64 would be useful (at this early stage) but perhaps in the future when QB64 has more functionality a FAQ/interview about QB64 there would be warranted.

Thank you to everyone who has had input into QB64's development so far.

Posted on Nov 6, 2007, 1:32 AM

Respond to this message   

Return to Index


RE: Feature request for file access commands in Demo #4

by (no login)

Mysticshadows, you put in a feature request for Demo #4 as follows:

"How about our good old OPEN / PRINT #, INPUT $, LINE INPUT #, GET, PUT, SEEK, EOF, LOF, and the likes? Of course, for RANDOM and BINARY I would assume you need all your data types to be treated as expected first. ;-)."

I agree that file access would be a wonderful thing to implement soon, however there is not enough time to include it in the Demo #4. Perhaps #5?

Posted on Nov 6, 2007, 1:38 AM

Respond to this message   

Return to Index


Ooooo...

by (no login)

Also, Could there be like UTF reading.. Like, ReadInt, WriteInt, ReadLong, WriteLong... ect

Posted on Nov 21, 2007, 9:13 PM

Respond to this message   

Return to Index


RE: Unicode

by (no login)

QB64 will undoubtedly have to support unicode (and proper, variable width fonts to display it) at some stage. However, this will not be the default (ever tried working with VB strings to hold data?).

In regards to supporting ReadInt, WriteInt, ReadLong, WriteLong, etc. QBASIC already has commands which can achieve this and it would be easy to create a set of functions to make what you request if so desired. Especially when it comes to file access any speed gains of having internal versions of these functions in raw C++ would be totally unnoticeable. It would also just encourage the unnecessary production of code which wouldn't be compatible with QBASIC, which I want to keep to a minimum. (Please note the distinction between code written in QB64 which QBASIC can run vs. code written in QBASIC which QB64 can run.)

Posted on Nov 22, 2007, 2:55 AM

Respond to this message   

Return to Index


What's happening now...

by (no login)

Arrays of all data types, including fixed or variable length strings and bit-length variable arrays now work perfectly. I'm currently extending this functionality by implementing the REDIM and ERASE commands which will be in Demo #4 next weekend when it is released. The focus of Demo #5 will likely be the implementation of heaps of QBASIC subs and functions, after which QB64 will be compatible with most GWBASIC programs (as GWBASIC programs don't support user defined types or formal subs/functions). After that the focus will be the inclusion user defined types and sub/function support.

Anyway, less talk, more coding ;)

PS. Not sure if recent improvements to FB re. further compatibility with QBASIC were fueled by QB64's existance/progress. We should, however, be glad that they are making these changes. It's unlikely, however, that they will ever support the 16-bit memory references found in many QBASIC programs or calls to interrupts and call absolute. FB also contains many function names which will conflict with variables used in existing QBASIC programs. Furthermore, FB still requires the use of the -lang QB switch to compile QBASIC source with any chance of success. Using this switch then makes the code incompatible with existing "pure" FB programs! So QB64 will remain an essential tool for extending existing QBASIC programs without the need for modifications.

PPS. I'm on the lookout for programmers who have MAC or LINUX computers to devise methods for compiling QB64 programs on these systems. I've taken every opportunity to avoid windows specific calls and use libraries compatible with MAC and LINUX. So in theory it'd just be a matter of finding a suitable "free" C++ compiler. I'll also be working on this issue as I have access to MAC and LINUX machines. I'd be awesome if the compilers on each of the 3 platforms also created executable files for use on the alternative 2 platforms without actually having to have access to the alternative platforms. Eg. When I compile on my windows PC I have the option to compile my program as mac and linux source as well. Then those 3 executable files could sit in the main folder of my program and the end-user would just run the executable file specific to their system.

Posted on Nov 9, 2007, 1:59 PM

Respond to this message   

Return to Index


I love a progress report that actually reports progress ;-)....

by (Login MystikShadows)
R

Galleon,

This is all great news to read. It seems that the plan and the way it's being executed is just awesome. :-).


As for the mac, remember that today you'll find 2 types of Mac's you need to worry about ;-). The Macs with the mottorolla C.P.U.s and the Macs with the Intel C.P.U.s

Not sure if you aim for QB64 to be usable on Macs with say System 8.x.x or 7.x.x but I think for now, Mac OS/X is the more widespread Mac OS to aim for.

Now, Among other things, the Macs with the motorolla C.P.U.s use the opposite of Intel Based CPU as far as Big Endian and Little Endian goes. Where for example:

On a PC, the first 16 bits of a 32 bit Value is interpreted and recognized as the Most Significant Byte (MSB), on a Mac with a Motorolla CPU the are the Least Significant Bytes (LSB) and same thing for the last 16 bits of a 32 bit value. Not exactly sure what that means for negative and unsigned values as well as for floating point values but I think it's one of the bigger considerations you need to, err, well, consider ;-).

As far as compilers go on the mac, I believe there are ports of GNU C/C++ for both CPUs based Macs on Mac Os/X.

If not, well the Mac OS/X now has XCode which is the better solution for Mac OS?X development you can get it here http://developer.apple.com/tools/xcode/ but it should come with a Mac OS/X installation.

Also you can use Eclipse with teh CDT extensions you can get eclipse http://www.eclipse.org/ and installation help can be read on the apple website itself here http://developer.apple.com/tools/eclipse.html

HOpe all this information helps you for that port, I don't hhave access to a Mac, but yes I do know about it, I used to have one. ;-). I have a linux box to help you on that side too. I think you know what C/C++ compiler you need on Linux huh? hehe...

I can't wait to try out Demo #4, and #5, and #6, and so on, and so on, lol..you get the picture.

MystikShadows
Stephane Richard



    
This message has been edited by MystikShadows on Nov 9, 2007 3:52 PM

Posted on Nov 9, 2007, 3:48 PM

Respond to this message   

Return to Index


*Thank you for the valuable information!

by (no login)

Posted on Nov 9, 2007, 6:27 PM

Respond to this message   

Return to Index


Improvements...

by (no login)

Finished including for the next demo:
REDIM
ERASE

I also made QB64 auto-define undefined arrays with 0 TO 10 indexes just like QBASIC!

All the dynamic vs static differences have also been accounted for.

Posted on Nov 12, 2007, 4:18 AM

Respond to this message   

Return to Index


Can't Wait... Sounds great

by (no login)

Sounds Great... I have been a fan for qbasic for ages. Just thinking... GCC and GNU compilers... They are free... and work with linux as they are multi platform (Not windows nor Intel persific). Could be worth looking into... The code, Are you making your own compiler? Does it convert to C then Compile?? I will most likly forget to return to this site for a while.. So please Email me... I have included it above.


-Josh

Posted on Nov 21, 2007, 8:29 PM

Respond to this message   

Return to Index


* I have a ubuntu dual-boot system and would be willing to help test

by qbguy (no login)

Posted on Nov 22, 2007, 5:43 AM

Respond to this message   

Return to Index


Thanks for the offer qbguy!

by (no login)

After the next demo is released I'll explain which files are required to be compiled on your Linux based OS. To be honest, all the different versions of Linux based OS scare me! But I'm sure it is possible to compile code which runs across all of them, especially because of the libs I'm using. Do you have a C++ compiler on your Linux system? That would be the first step, and the rest is just minor details and perhaps a few adjustments.

Posted on Nov 23, 2007, 3:03 AM

Respond to this message   

Return to Index


* Yes, I have g++ installed (or can get it with apt-get if I don't)

by qbguy (no login)

Posted on Nov 23, 2007, 5:55 PM

Respond to this message   

Return to Index


* OK, booted into Linux and confirmed that I have g++ installed

by qbguy (no login)

Posted on Nov 23, 2007, 6:12 PM

Respond to this message   

Return to Index


* Is there a website for the QB64 project?

by Dav (no login)

Posted on Nov 3, 2007, 4:44 AM

Respond to this message   

Return to Index


I don't think so at the moment no....But...

by (Login MystikShadows)
R

But if there's a need for a website, I'd be happy to offer some server space for it. So Galleon, just say the word :).

Posted on Nov 3, 2007, 11:19 AM

Respond to this message   

Return to Index


* Galleon is busy enough without working on a website.

by (Login burger2227)
R

Posted on Nov 3, 2007, 12:39 PM

Respond to this message   

Return to Index


there isn't a single question that's reasonable in your book is there?

by mennonite (no login)

funny, and you spend that much time on a help forum. GO FIGURE.

Posted on Nov 5, 2007, 10:49 PM

Respond to this message   

Return to Index


*Who are you talking about? LEMMONITE you are a sourpuss!

by (Login burger2227)
R

Posted on Nov 6, 2007, 11:40 AM

Respond to this message   

Return to Index


Clippy, you didn't read the post right.

by (Login MystikShadows)
R

I siad "if Galleon wants to amke a website, I'm offering the space for it." IF being the operative word here.

You're right he's busy with the compiler, it's like a big wheel I guess, often the success of a project has as much to do with it's website as it does with the project being developed. No, not at first (atleast not when you plan to be the only developer of the code), but not at the end of the project either ;-).

And well, when inspiration strikes it's the best time to foster your creativity., you get the idea ;-).

Now don't jump on menn like that all the time, you'll break the server. ;-) lol

Posted on Nov 6, 2007, 12:44 PM

Respond to this message   

Return to Index


I am sure he appreciates the offer

by (Login burger2227)
R

I really think that somebody else should set it up. You know how to do it.
I appoint you! :) LOL, just think about it. Anything that slows him down
will not help his efforts. A small site with a link here for discussion
would be all he needs. He can then post updates and some progress reports.

As for LEMMONITE, he has made 3 sour ass posts. Does he dislike Solitare?
I have not seen him for quite a while and, no matter how good he is as a
programmer, he needs to try to be nice. I really don't understand his
comment in this forum and I don't know who he was addressing. I thought
Mennonites were peaceful.

Ted

Posted on Nov 6, 2007, 7:05 PM

Respond to this message   

Return to Index


As stated, there is no QB64 website yet.

by (no login)

All questions about QB64 are welcome here, and I'd like to think of this forum as the official QB64 "site" atm.

Posted on Nov 6, 2007, 1:03 AM

Respond to this message   

Return to Index


Adding 16-bit addressing statements

by (no login)

I'm currently in the process of including support for:
DEF SEG, PEEK, POKE, VARSEG, VARPTR, VARPTR$ and SADD

So far I've successfully included:
DEF SEG, PEEK, POKE, VARSEG, VARPTR and SADD

VARPTR$ is going to set me back a days coding because I'd forgotten that variable-length strings in DBLOCK also have a string descriptor of 4 bytes describing their length & current offset. How silly of me ;)
Thankfully it's quite easy to fix.

The reason I'm currently including these is because I want arrays to be allocated correctly. The factors affecting where an array is created in memory are:
1. If it is referenced by: VARSEG, VARPTR, VARPTR$, SADD
2. If its dimensions are derived from constant equations
3. If the $DYNAMIC or $STATIC metacommand is currently being used
So to include arrays properly I need to support the above 3 things.

Posted on Oct 31, 2007, 4:51 AM

Respond to this message   

Return to Index


* All of the commands that people DREAD! LOL you'll figure it out.

by (Login burger2227)
R

Posted on Oct 31, 2007, 8:34 PM

Respond to this message   

Return to Index


Yep, I did figure it out!

by (no login)

The next version of QB64 now fully supports VARSEG, VARPTR, VARPTR$, PEEK, POKE & SADD

I added some new values for the first byte of the 3 byte variable address returned by VARPTR$ (The last 2 bytes are an offset within the default data segment)

Original QBASIC/QB4.5 first byte:
INTEGER=2
STRING=3
SINGLE=4
DOUBLE=8
LONG=20

QB64 first byte:
If top bit (of value 128) is on, variable is unsigned
If 2nd top bit (of value 64) is on, variable is a bit-length type of length described by the bottom 6 bits of the byte
If it's not a bit-length variable, the bottom 6 bits indicate the type:
_BYTE=1
INTEGER=2
STRING=3
SINGLE=4
_INTEGER64=5
_FLOAT=6
DOUBLE=8
LONG=20

As you can see it's fully compatible with QBASIC and QB4.5!
Interestingly QB7.1/PDS returns something different when you call VARPTR$, but QB64 is built to be compatible with QBASIC & QB4.5 first and foremost. To bad Microsoft couldn't even keep new versions of QB compatible with old ones.

Posted on Nov 1, 2007, 5:48 AM

Respond to this message   

Return to Index


Here's a link to Microsoft's excuse for non-compatibility between QBASIC and QB7 ( *URL)

by (no login)

http://support.microsoft.com/kb/65924

Posted on Nov 1, 2007, 5:54 AM

Respond to this message   

Return to Index


???

by (Premier Login iorr5t)
Forum Owner

I went to that link and saw stuff like this:

SUMMARY
This article describes how to get the absolute memory address of the contents of a variable-length string variable in compiled Basic. The sample code below also shows how to PEEK at the string in memory.

No mention of compatibility

Mac

QBasic rules.

Posted on Nov 1, 2007, 2:12 PM

Respond to this message   

Return to Index


Sorry for the lack of explanation Mac

by Galleon (no login)

I was frustrated yesterday because of an incompatibility between QBASIC/QB4.5 vs QB7.1
QB7.1 stores its variable length strings in segments other than the default data segment. This means QBASIC/QB4.5 code may not run in QB7.1 because of this difference, as in QB4.5 and QBASIC all variable length strings can be assumed to be stored in DBLOCK and require no segment changes before peek'ing data. It's sad Microsoft didn't find some way to maintain backwards compatibility.

Posted on Nov 1, 2007, 7:36 PM

Respond to this message   

Return to Index


That is a lot of QB's and M$'s program problems.

by (Login burger2227)
R

Qbasic cannot do this, QB4.5 can, PDS needs SSEG. I am currently trying to make a program compatable for them all using Interrupt code, and it is not easy. I know your feelings sometimes!

M$ has always had the idea to just change things and worry about it later, IF it becomes a problem. VISTA is just one more testing project to see what they can get away with. Very similar to most of their OS's when first thrown out to the public! ME was just tossed to the dogs! XP SP1 sucked compared to SP2. One more reason to wait 2 or 3 years to upgrade!

So far, I have heard that VISTA messes up VB6 and .NET programming! No wonder they have now started updating secretly and silently, which is just plain wrong to do. Are they immune from any rules? I have been getting this one update for over 8 months and it will not install, but keeps coming back!
Soon XP updates will be cut off. MS$ may well be the next ENRON!

Ted

Posted on Nov 2, 2007, 6:29 PM

Respond to this message   

Return to Index


Now witness the true power of QB64

by (no login)

DIM mega(10000000) AS INTEGER
mega(50) = 14
PRINT STR$(mega(50))

DIM mini(100) AS INTEGER
mini(50) = 13
DEF SEG = VARSEG(mini(0))
PRINT STR$(PEEK(VARPTR(mini(50))))

-----------------------------------------
I've completed an important stage of development which has allowed for the above code to compile and run perfectly. At first glance one might think that it is simply allocating the mini array in virtual-conventional memory because it is smaller, and if this were true then the above code would not be so remarkable. It's actually allocating mini in virtual-conventional memory because it is later referenced by VARSEG and VARPTR. If I tried to make mini larger than 64K I'd get an out of memory error.

Posted on Nov 2, 2007, 5:47 AM

Respond to this message   

Return to Index


Re: Now witness the true power of QB64

by theophage (no login)

So you mean the compiler looks at whether or not an array will accessed using VARSEG / VARPTR and uses that to determine where to store it? That's pretty nifty.

Posted on Nov 2, 2007, 7:00 AM

Respond to this message   

Return to Index


*So what happens to the big array? It cannot be accessed the same ways.

by (Login burger2227)
R

Posted on Nov 2, 2007, 6:06 PM

Respond to this message   

Return to Index


Glad you asked

by (no login)

To access a massive array like;
DIM a(10000000) AS INTEGER
it's fairly obvious that you aren't going to be able to reference this array with the 16-bit offset returned by VARPTR(...)
It should also be obvious that an array like this would never have been possible under QBASIC or QB4.5 because of conventional memory limitations.
QB64 will use the @ symbol before a variable or array to return its 64-bit offset (on 32-bit CPUs the top unused bits are set to 0).
So for a big array like the one above instead of;
o=VARPTR(a(500000))
you'd instead use;
o=@a(500000)
Think of the @ symbol as meaning "the offset at/of"

Posted on Nov 3, 2007, 2:00 AM

Respond to this message   

Return to Index


More about pointer usage in QB64

by Galleon (no login)

Although pointer usage is at this stage highly theoretical and none of it has of yet been implemented I've been thinking about how it could work in user defined types.

Here's an example of how I imagine it could work:

TYPE node
value AS LONG
next AS node POINTER
END TYPE

DIM nodea AS node
DIM nodeb AS node
DIM lastnode AS node

@nodea.next=@nodeb
@nodeb.next=@lastnode
@lastnode.next=@lastnode

'read the value of the next node
nodeb.value=1
v=nodea.next.value
END

If this were in c++, the last three lines would have looked very different. For starters, C++ distinguishes between a regular variable inside a UDT and a pointer to another variable with a -> symbol. This makes pointer usage obvious. My goal is to make it virtually indistinguishable, once pointers have been setup correctly, to tell whether you are accessing a regular variable or a pointer.

The reason I want to make it indistinguishable is so that a more skilled QB64 programmer could create a set of subs/functions which manage pointers but to the user of those subs/functions the variables they return (or are passed) are just like any regular QBASIC variables.

These are just ideas, let me know what you think,
Galleon

Posted on Oct 29, 2007, 4:30 AM

Respond to this message   

Return to Index


Very intelligent concept Galleon.

by (Login MystikShadows)
R

I think I like it this way, because well, the obvious reason you mention and because it seems to respect the 8th BASIC principle to shield the user from the OS (or low level functionality) while giving them that said functionality.

I guess we need to discuss what could/should happen at this point. AS you know, there is more than one type of coder. Take me for example, I like to use the CALL statement when calling SUBs because it makes the code clear as to what the statement does. hence:

CALL MySubroutine() tells me MySubroutine is a SUB that I'm calling. For QB codersr it's obvious that MySubroutine is a sub cause it's not a QB keyword, but for newcomers learning from my code, having the CALL there just emphasize the fact that it's a QB keyword ;-). I wonder how many might think or like this approach. (trying to put myself in everybody's shoes here hehe). If there's alot of them. Perhaps they would like a difference like C that says.

ThisType.ThatField is a direct field definition acces.
ThisType->PointedField is a pointer.

As far as code documentation goes this would tell me, ok this is a pointer not a regular field. Might be usefult o know in some cases. But your idea to make them indistinguisable has it's merits too and some strong ones. ;-)

AS such, I wonder if it wouldn't be both implementations. So that people can use either methods to perform the same action. Perhaps on a general level a difference between the two would be good for documentation. and subs or fgunctions accessing or making use of these pointed fields could use the common QB way with the . so that the code can remain as expected. so if it's not too much extra trouble (and work) to allow both, I would say it's probably the best way to go. :-).

My two cents.

MystikShadows

Posted on Oct 29, 2007, 7:07 AM

Respond to this message   

Return to Index


RE: MystikShadows reply

by (no login)

Thanks for the ongoing encouragement and support.

In regards to the use of CALL (QB64 will support this of course) I believe it is actually better coding practice to place it before subs as you suggest.
Why? Run the following program, but before you do ask yourself how many times it will print hello.

doit: doit
END
SUB doit
PRINT "hello"
END SUB

I don't like the idea of supporting either . or -> to achieve the same result at the programmers preference. I believe this would cause more confusion. I'm glad you too see the merits of "shielding the programmer" and the need to keep things simple.


Posted on Oct 30, 2007, 4:55 AM

Respond to this message   

Return to Index


Yes indeed. :-).

by (Login MystikShadows)
R

And in the context of shielding the programmer, your suggestion is the only one that should prevail :-).

Posted on Oct 30, 2007, 6:12 AM

Respond to this message   

Return to Index


Re: More about pointer usage in QB64

by counting_pine (no login)

So, pointers would start out dereferenced, and the "@" would be a sort of "anti-dereference" operator?
Following the idea to extend to other concepts:

Pointers to pointers would start out fully dereferenced; to get the base pointer you would have to do multiple antidereferences, e.g. "@@" to antidereference twice.

You would need a "redereference" operator ("*", I guess) if you wanted to access memory at an address, without having to physically store that address in a pointer first.

Pointer indexing would probably look like "antidereference, add, redereference" internally.
Or perhaps just "add, dereference" like C, which would require a manual antidereference first. (Technically, this would allow you to use "[0]" to dereference, so you wouldn't technically need the "*" operator.)


Technically, I think it allows the same functionality. I have to say though, this is an unconventional system. Nothing inherently wrong with that, but it will be counter-intuitive for people used to the C-style method.

Also, it does make some operations a bit messier. For example, accessing an element in a ragged array.

In C:
a[i][j]
or *(*(a + i) + j)

QB64 method:
*((@a)[i])[j] (I think)
or *(*(@@a + i) + j)

Alternatively, for indexing without automatic antidereferencing:
(@@a)[i][j]


I guess actually it's better without automatically antidereferencing. It would make it slightly more difficult indexing simple pointers, but would save a lot of headaches in other places.
I'm still not sure it's a good idea overall, though.

Posted on Oct 29, 2007, 8:21 AM

Respond to this message   

Return to Index


RE: counting_pine's comments

by Galleon (no login)

I never intend for QB64 to be as "clever" as C++, but I do want to include enough features so that you can still achieve the same result as a C++ statement even though it may take a slightly longer method. I want to keep BASIC basic.

There will only be one way of setting the offset a pointer will read its data from, and that is by placing the @ symbol it front of the pointer variable on the left hand side of an assignment equation. eg. @myintegerpointer=theoffsetofmydata
At all other times reading the pointer simply results in reading the variable it points to.

There will be no other symbol apart from @, and there certainly won't ever be two @s (eg. @@myvariable) in a row.

The only other time you can use @ is for reading the offset of a variable, much like the VARPTR(myvariable) function does but it will return a 64bit pointer. If you try to read the offset of a pointer by placing @ in front of it you will get "the offset of the variable it is pointing to" ie. the value of the actual pointer.

There will be no stand-alone POINTER type, nor will there be a way to re-cast a pointer without having 2 seperate pointer variables.

This method has one limitation I have identified:
YOU CANNOT FIND THE OFFSET OF THE POINTER ITSELF!
(Unless the pointer was a member of a user-defined type or an element in an array)
Is this a very bad thing? I believe not. In fact I believe it's better that pointers themselves remain a process/method.
I want people to use pointers as a way to reference areas of memory. It's not necessary for the programmer to know where in memory a pointer is or how many bytes a pointer is consuming.

I bet I've opened a whole can of worms now,
Galleon

Posted on Oct 30, 2007, 4:44 AM

Respond to this message   

Return to Index


I think you are right to protect the programmer

by roy (no login)

When pointers are initialized or deleted they ought to be assigned to null or 0 but if you do the same thing with a reference you can create an invalid program. If a program is invalid it could wipe all the files from your disk.
Please concentrate on CLS. lol

Posted on Oct 30, 2007, 6:59 AM

Respond to this message   

Return to Index


A change in direction...

by (no login)

There's been a lot of improvements to QB64 behind the scenes in preparation for Demo #4, but the main priority I stated for Demo #4, that being UDTs (user defined types), has now become the goal for Demo #5.

Why?
It's the old problem of the chicken and the egg. Which came first?
At first I wanted to include user defined types first because you could have an array of user defined types but not arrays in user defined types. I thought arrays within user defined types would be a good feature to add much later down the track. However, even QB7.1 supports this feature and I would hate to "code myself into a corner" where adding support for this requires a major overhaul. I've also decided to prioritize the ability to define arrays over the ability to use user defined types because:
i) It will allow me to include internal subs/functions which rely on arrays
ii) It will allow compatibility with more basic code sooner. A lot more basic code includes arrays than user defined types. It also allows me to compile GW-BASIC programs for testing.

So essentially the new focus is:
DEMO #4: Arrays
DEMO #5: User Defined Types

This could possibly delay the intended release date of DEMO #4 by up to few weeks.

Posted on Oct 25, 2007, 3:42 AM

Respond to this message   

Return to Index


Well of course the array came first ;-).....

by (Login MystikShadows)
R

Arrays are important, I noticed, as you have, a whole lot more of sample code with arrays than I have with UDT's.

Besides, once you have the arrays down with the standard data types it should be a simple question of the length of the UDT * The number of desired dimensions at that point that you'd be allocating, reallocating and deallocating as needed.

So good, a sense of direction, even if it changes along the way is a very important part of your balanced breakfast, errr, I mean, of a project such as this one ;-).

MystikShadows

Posted on Oct 25, 2007, 4:08 AM

Respond to this message   

Return to Index


Some early progress with arrays

by (no login)

There's a long way to go with getting arrays to work correctly, but I've made some good progress so far. The version of QB64 I'm working on now compiles and correctly runs the example below which demonstrates:
*use of dynamically created arrays
*multidimensional arrays
*array index ranges (eg. -10 to 10)
*error handling of out of range subscripts
The compiler also supports arrays of all other QB64 data types except bit-length data types which I will add soon. I can't wait to make some bit arrays :)

ON ERROR GOTO erroroccured

PRINT "Welcome to the array checker (press enter after typing each number)"

PRINT "DIM array(? TO ?,? TO ?,? TO ?) AS DOUBLE"
INPUT ; "DIM array(", e1from%
INPUT ; " TO ", e1to%
INPUT ; ", ", e2from%
INPUT ; " TO ", e2to%
INPUT ; ", ", e3from%
INPUT ; " TO ", e3to%
PRINT ") AS DOUBLE"
DIM a(e1from% TO e1to%, e2from% TO e2to%, e3from% TO e3to%) AS DOUBLE

GOSUB displaymenu
DO
k$ = UCASE$(INKEY$)

IF k$ = "G" THEN
INPUT ; "PRINT array(", e1%
INPUT ; ", ", e2%
INPUT ; ", ", e3%
PRINT ")"
PRINT STR$(a(e1%, e2%, e3%))
GOSUB displaymenu
END IF

IF k$ = "S" THEN
INPUT ; "array(", e1%
INPUT ; ", ", e2%
INPUT ; ", ", e3%
INPUT ")=", v#
a(e1%, e2%, e3%) = v#
GOSUB displaymenu
END IF

LOOP WHILE k$ <> CHR$(27) AND k$ <> "Q"
END

displaymenu:
COLOR 15: PRINT "S"; : COLOR 7: PRINT "et or "; : COLOR 15: PRINT "G"; : COLOR 7: PRINT "et value in array?"
RETURN

erroroccured:
PRINT "An error occurred!"
RESUME NEXT

Posted on Oct 26, 2007, 4:51 AM

Respond to this message   

Return to Index


Galleon look out! The forum is getting UGLY!

by (Login burger2227)
R

1) There is a big debate about RND and RANDOMIZE as usual. Mac just wanted a better randomizing routine to start it off. One reason that I see a real need to have that problem addressed somehow.

2) There are some people that think the following should be allowed:

PRINT 2+++2 without the IDE correcting it to PRINT 2 + 2

I don't think that this type of stuff is compatable and is totally ridiculous!

I cannot get QB 4.5 to even allow me to do it and others can't in 1.1 either. So one person found a way and mentions that QB64 should be able to compile it too!

I feel sorry for you having to deal with such personalities!

Good Luck,

Ted

Posted on Oct 18, 2007, 6:30 PM

Respond to this message   

Return to Index


Syntax error - UGLY is not a recognized statement or command in QB64.

by Pete (Login The-Universe)
Admin

Just people expressing their opinions, not ugly. I've often noticed with programmers there is no subject too picky to pick on. That is good, because as the old saying goes, the devil is in the details. Stir it around enough and some benefit will emerge from all the discussion.

Pete



    
This message has been edited by The-Universe on Oct 18, 2007 7:48 PM

Posted on Oct 18, 2007, 7:47 PM

Respond to this message   

Return to Index


Ok...

by (no login)

It's kinda funny how QB64 keeps popping up in fairly non-QB64 related threads on the main QBASIC forum, but anyway...

RE: Clippy's heads up
Thanks for the heads up! (Though I was trying not to buy into the debate!)
I think keeping the QB64 random and randomize statements just like they currently are in qbasic is the most important thing for now. If someone wants to plug in a super-duper random formula they can just make a function which does the job.
It turns out PRINT a+++++1 wasn't truncated only in the immediate window in the original QBASIC, a point I overlooked. So should I support it? I believe it should come down to the fact that QB64 is a programming language with binary and unary operators. Binary operators typically work upon a variable/value on their left-hand-side and right-hand-side. Unary operators typically work upon a value on either their left or their right (but not both). In qbasic the only unary operators are - and NOT. - means either subtraction or negation depending on where it is positioned in an equation. + is binary operator so the equation a++++1 is clearly not possible. a----1 is possible if the equation is calculated from right to left as: a-(-(-(-1))). I too believe, however, that supporting this is absurd. My official position is that this practice will not be supported in QB64.

RE: Pete's comment
I couldn't agree more, that's why when I find a can of worms I throw it out there for a good old debate. I'm lucky to have you guys to debate it with.

Posted on Oct 19, 2007, 2:47 AM

Respond to this message   

Return to Index


Ask yourself: What would Jesus do?

by Pete (no login)

Jesus was a healer, so my guess is that he would heal the mistakes that Micro$oft produced when they published these products.

And we are in luck, because Galleon has more time to spend on this project than Jesus would have. After all, Jesus would also exorcise demons; so, he would have to spend most of his time working on FreeBasic.

Anyway, kidding aside, I think all that is needed is documentation for differences in QB64 which should clearly state: QB64 does not support the use of multiple operands such as +++. Such coding practices were considered to be unusual and unnecessary by the developer and were therefore removed.

When it comes to the randomization issue, the standard QB randomization should be supported as designed but a new randomization function with an additional syntax could certainly be added at some point after the initial project is completed. I'm sure there will be some other 64-bit advantages that could be added as well. Again, ask yourself what would happen if the software was still supported? Of course the developers would improve it to compete on the market. The trick is to document all changes and to always maintain backwards compatibility without any change in syntax after the initial fully compatible version has been produced.

Pete

Posted on Oct 19, 2007, 9:13 AM

Respond to this message   

Return to Index


Backward compatability will create it's own problems

by (Login burger2227)
R

M$ created the monsters when they changed QB45 to have a library and made it necessary to use it for ABSOLUTE or INTERRUPT calls. So there will have to be some compromise to be compatible with all versions. This will bother some people who think a library is extra baggage(Mac?). Hopefully the library will be a part of the package so that QB64 /L is not necessary. But then some people would like an option not to use it for their programs.

Compatability will need to address BUGS in all of the versions and not keep them unless they have become programming advantages in some way. I would be inclined to accept improvements, so that 1+++++++++++++++1 does not EVER work again! EVER! I am sure there are other tricks that will come up while Galleon works on this, but they should not hinder an improvement in QB64.

Here's to the NEWRND function! Whenever you get around to it.

Ted

Posted on Oct 19, 2007, 10:38 AM

Respond to this message   

Return to Index


Ted makes a good point here... Lose the /l switch.

by Pete (Login The-Universe)
Admin

If I designed this project, I'd do as Ted suggested and make QB64 automatically load the needed libraries to use CALL ABSOLUTE, CALL INTERRUPT, and CALL INTERRUPTX routines.

Pete

Posted on Oct 20, 2007, 3:54 PM

Respond to this message   

Return to Index


Agreed, I've already stated my position on this. (URL*)

by (no login)

http://www.network54.com/Forum/585676/message/1192073766/RE-+-L+default+library+in+QB4.5

Posted on Oct 20, 2007, 7:03 PM

Respond to this message   

Return to Index


What do you want to implement next? (DEMO #4 etc.)

by (no login)

I'm now thinking about future "demos" and the development time-line. Atm this is the schedule:

Demo #4 - Release before November 15th, 2007
Essential feature: Support for user defined types
Also add if possible:
-GOSUB & line numbers (as apposed to just line labels)
-SELECT CASE (and any other missing flow control like EXIT FOR)
-NEGATION(-) and all other operators/operations (including all those for string comparison)
-proper interpretation of all numbers in source code
-All dual-byte characters correct with INKEY$
-Error trapping using ON ERROR GOTO ....
-REM (not just the ' character)
-PRINT to work properly in all cases, not just accept a single string variable
-LINE INPUT
-Support more string functions such as INSTR, MID, etc.
-Support of RND without need of brackets by supporting optional parameters for functions.
-Make bit-length variables work in all circumstances
-Fix bug in graphics VIEW statement

Demo #5 - Release before December 25th, 2007
Essential feature: Support for arrays

Demo #6 - Release before Jan 31st, 2007
Essential feature: Support for subs and functions

That's my plan "in a nutshell"!
If you want something else to be added soon feel free to request it and I will make it a priority. If it's a very easy thing to add I'll include it in Demo #4.

Thanks,
Galleon

Posted on Oct 16, 2007, 2:52 AM

Respond to this message   

Return to Index


I doubt this will be in Demo #4 but ... ;-).

by (Login MystikShadows)
R

How about our good old OPEN / PRINT #, INPUT $, LINE INPUT #, GET, PUT, SEEK, EOF, LOF, and the likes?

Of course, for RANDOM and BINARY I would assume you need all your data types to be treated as expected first. ;-).

Posted on Oct 16, 2007, 4:01 AM

Respond to this message   

Return to Index


*You forgot PCOPY!

by Antoni (no login)

Posted on Oct 17, 2007, 11:35 AM

Respond to this message   

Return to Index


* Ahh but that's in the specs already ;-)

by (Login MystikShadows)
R

Posted on Oct 17, 2007, 11:51 AM

Respond to this message   

Return to Index


Yeah, but I still love Antoni's sense of humor.

by Pete (Login The-Universe)
Admin

SELECT CASE would be nice to try out soon. GOSUB/SUBS as well. I don't do graphics, so I'll leave that to others. Mostly what I'm looking forward to is a good INKEY$ routine I can test. Past that ARRAYS, MID$(), and all the string manipulation statements including INSTR().

Of course, when the project is completed, the order in which it was completed really won't have mattered but since you asked for suggestions, those are the ones that were on the top of my head and I'm glad they're up there; they help cover my bald spot!

Pete

SCREEN 0, 0, 0, 0
LET NoGain$ = "HAIR"
PCOPY NoGain$, Pete
SYSTEM

Posted on Oct 17, 2007, 1:17 PM

Respond to this message   

Return to Index


Hi MystikShadows

by (no login)

You wrote:
"How about our good old OPEN / PRINT #, INPUT $, LINE INPUT #, GET, PUT, SEEK, EOF, LOF, and the likes?
Of course, for RANDOM and BINARY I would assume you need all your data types to be treated as expected first. ;-)."

I can't see any problem with starting work on file access statements. As you say implementing BINARY/RANDOM/GET/PUT are quite defendant on UDTs and arrays. Implementing OPEN,LINE INPUT #,SEEK,EOF and LOF would be relatively easy.
Due to the formatting required implementing PRINT # and INPUT # could take a while. If I get time I'll start on these. I too would like to be able to make something happen outside the program window.

Behind the scenes, I've made good progress so far on minor improvements such as:
-Managing CRTL-BREAK & BREAK
-Allowing line NUMBERS
-Error handling (eg. ON ERROR... RESUME [0|label|NEXT])
-Warnings if required data files are missing (and all files of compiler have names of 8 bytes or less)
-negation,NOT,EQV and IMP implemented
-& lots of other small improvements

Posted on Oct 19, 2007, 3:23 AM

Respond to this message   

Return to Index


Very good so far Galleon ....

by (Login MystikShadows)
R

Yes, there's alot of side details that are all part of how things should work like those you mentioned.

Oh and to make things official, add that PCOPY Anthony mentioned ;-).

I've been wondering about ON ERROR myself. Alot of the QB and even VB Windows complaint I've heard among collegues of mine was that ON error doesn't manage errors globally. People wanted a centralized error management system. As in, no need for an ON ERROR in ever sub or function. They wanted to be able to do soemthing like:

ON GLOBAL ERROR CALL ErrorSubroutine or
ON GLOBAL ERROR RESUME NEXT

Maybe in the main part of the program so we know it's at the top level. Right now, if you put an ON ERROR in the main part of a module, each sub or function that gets called still need their own error management code. Whereas if you did this suggestion (as an added feature of course so not to break QB compatibility). Then each sub that creates an error would get sent to that global errorSubroutine or resume next or whatever specified in the ON GLOBAL ERROR Clause.

And every sub and function would I guess raise errors and return to the calling module. and in those subs and functions if you wanted something different to happen in the case of some of the errors you'd get you would use something like:

ON ERROR GOTO <LabelName | LineNumber | 0>

I kinda liked that approach and as an added feature (not a default feature so no QB compatibility is broken) perhaps I can post this as a suggestion for a added feature. :-) Let's face it, for alot of cases atleast having to add an ON ERROR clause and lable or whatever can get redundant if it can be avoided with some kind of Application wide error management system hehe.

Looks like QB64 is taking shape quite nicely Galleon, great work so far.

Posted on Oct 19, 2007, 3:57 AM

Respond to this message   

Return to Index


That was a very confusing post MystikShadows...

by (no login)

In QBASIC & QB4.5 ALL errors are managed globally by jumping to a line in the main module of the program. In QBASIC and QB4.5 you can't actually have local error handling routines inside SUBS/FUNCTIONS. The details in the help say you can do this, however despite my best attempts it simply doesn't work. Now, QB7.1 /PDS is a different story, it does support local error handling inside subs/functions. I'm yet to support local handling such as that found in QB7.1/PDS, but I can see the benefits of it. I'm also thinking of allowing the user to code a sub specifically for error handling:
ON ERROR CALL mysub
a%=100000
END

SUB mysub
PRINT "You stuffed up again!"
RESUME NEXT
END SUB

PS. Did I misunderstand your post? Are you talking about multiple modules?

Posted on Oct 19, 2007, 5:34 AM

Respond to this message   

Return to Index


Yes, I am talkng about multiple modules :-).

by (Login MystikShadows)
R

But even in one module, if you have, in the main part, something like:

ON ERROR GOTO <label> or whatever..

and in the main part, you can a SUB the code in the sub won't use the statement of the ON ERROR in the main part of the program will it? if it already does, fine, but if it doesn't then the need for a global error management system appears. :-).

I guess the best way would be to have all sub raise their errors rather than management them so that when going back to the main part of the module, they get received and managed at that level rather than in the sub itself.

Posted on Oct 19, 2007, 6:11 AM

Respond to this message   

Return to Index


Ya gotta put one in every module

by (Login burger2227)
R

ON ERROR is placed in the main module and it trips in any SUB or FUNCTION.

Don't you have to use the same COMMON SHARED statements in each module?

I know that CHAIN requires the SAME exact list in the same order too!

I guess it's just part of the way QB was made, but I would not want that changed just now.

Let's let Galleon get this thing rolling, or we all will just confuse the situation! We don't want another FB do we? Too many chiefs and no warriors!

Save all our wish lists till later. I am already making mine, but it is gonna slow down progress with us all huddling behind him while he works.

Ted

Posted on Oct 26, 2007, 7:59 PM

Respond to this message   

Return to Index


NEW VERSION! TESTED ON WINDOWS MILLENIUM PERSONALLY!

by (no login)

Here's a link to the new download package [qb64v012.zip]:
http://www.mediafire.com/?2hdscdzyzmo

So what's changed?
1. The key reason it didn't compile before in Windows ME (and 95/98) was the way the compiler was told to redirect output using 2>d.txt which is unsupported under 95/98/ME. This has been changed.
2. The C++ codes reliance on the KERNAL32.DLL:GetConsoleWindow() function stopped the .EXE files generated from running because the 95/98/ME versions of KERNAL32.DLL didn't have the GetConsoleWindow() function yet! I have changed this to a FreeConsole() call which IS supported.

I installed Windows ME on an old laptop to personally test it and fix it up. Thank you Roy for your patience and efforts trying to get it to work, they were not in vain. Pete, I'd also appreciate it if you could test this on Windows 98.

Enjoy,
Galleon

Posted on Oct 15, 2007, 6:24 AM

Respond to this message   

Return to Index


*Works great. Well done.

by roy (no login)

*

Posted on Oct 15, 2007, 8:35 AM

Respond to this message   

Return to Index


* Windows 98 results are in... Yeah, it works on 98, too.

by Pete (no login)

Posted on Oct 16, 2007, 2:05 PM

Respond to this message   

Return to Index


*Thanks Pete, that's exactly what I was hoping for!

by (no login)

Posted on Oct 17, 2007, 3:22 AM

Respond to this message   

Return to Index


* Works fine in Win 2000 too. Great work.

by Dav (no login)

Posted on Oct 31, 2007, 12:21 PM

Respond to this message   

Return to Index


New .EXE to fix non-compilation in Windows ME/98/95

by (no login)

Here is a link to a new compiler .EXE
http://www.mediafire.com/?ehsxz4kgrdz

This .EXE fixes an inconsistency between different versions of windows. So it is compatible with all windows versions. Remember this is a replacement file for COMPILE.EXE in the DEMO #3 download and will not work without the other files in the download. If you use Windows 2000,NT,XP or Vista this .EXE will run on your system, but contains no benefits compared to the previous version.

Further information:
The problem related to ME/98/95 not supporting CMD.EXE
Due to inconsistencies between instances of COMMAND.COM when running batch files which set default paths this problem was not easy to fix.

Posted on Oct 12, 2007, 2:57 AM

Respond to this message   

Return to Index


Slight improvement.

by roy (no login)

I now get :-
COMPILING C++ CODE INTO EXE...
Bad command or file name
G_"1.EXE:2:No such file or directory

Then I get about 40 lines of warnings etc

C++ COMPILATION FAILED

Posted on Oct 12, 2007, 1:11 PM

Respond to this message   

Return to Index


Thanks for that info Roy...

by (no login)

Firstly, you can ignore the "Bad command or file name" line. That is simply your computer responding to not having CMD.EXE, later I will hide this output.

The rest is a big problem.
I have no idea what G_"1.EXE:2:No such file or directory is or means!
Clearly g++ was run correctly automatically from the directory set in the PATH statement in the .bat file, so paths are working.
I'm also surprised that the 40 lines were displayed on the screen, not redirected into the disk file .\qb64\internal\c\cdebug.txt

Please, if possible, post the 40 lines of warnings for me to examine.

Sorry for the inconvenience, and thank you for your help,
Galleon

Posted on Oct 12, 2007, 3:35 PM

Respond to this message   

Return to Index


From what I can see.....

by (Login MystikShadows)
R

Your call to the c++ compiler might be:

Using relative paths with spaces that ME might have a problem with. It's not unheard of, back then that C:\Program Files\ were causing problems because of that space between them. If that's the case or to rule it out the call to the compiler should be done as follows:

G++.exe "<path to the C++ file" <- note the quotes around the file name. From Windows 2000 / Windows XP onwards it's been preetty good with that but before that, it was risky. So that might explain why you can't reproduce the problem but he can get it every time. And the trick with the quotes just might fix the issue for you.



    
This message has been edited by MystikShadows on Oct 12, 2007 4:07 PM

Posted on Oct 12, 2007, 4:06 PM

Respond to this message   

Return to Index


I've found a solution!

by (no login)

I've found a way to compile with gcc without needing to change the PATH environment at all by organizing the files in a slightly different way. It'll require me to remake the "package" but it should solve all these problems.

Mystikshadows, fyi there are no paths/filenames with spaces, nor with more than 8 characters in the name of the file/folder.

I should have the updated package ready today sometime. It'll need to be a new download link, so don't just try downloading from the old links.

Posted on Oct 12, 2007, 7:42 PM

Respond to this message   

Return to Index


Three error messages if needed.

by roy (no login)

Small sample in case you still need it :-

main.txt:39: warning: passing ' long double' for converting 2 of ' void sub_out (lo
ng int, long int)'

qbx.cpp: In function ' int SDL_main (int , char**)':

qbx.cpp: warning: unused variable ' z4'

The top ones scroll too quickly to copy.

Posted on Oct 13, 2007, 12:37 AM

Respond to this message   

Return to Index


The above .EXE doesn't fix the problem, BUT this will!

by (no login)

Here's a link to a new "package" as a .zip
http://www.mediafire.com/?8rbczvgnmd1

I think it's much more likely to work than the EXE. You might notice it is smaller than the previous .zip package. This is because I've also been pruning unnecessary GCC files, and restructured it a bit. Simply run compile.bat in the main qb64 folder.

I'm keeping my fingers crossed,
Galleon

Posted on Oct 13, 2007, 1:58 AM

Respond to this message   

Return to Index


Different

by roy (no login)

I now get
GPP.EXE: 2: No such file or directory
and then the list of faults and warnings.

Posted on Oct 13, 2007, 6:16 AM

Respond to this message   

Return to Index


Thanks Roy, guess I didn't cross my fingers tightly enough!

by (no login)

Short of a VNC hookup I'm very doubtful whether I can solve this problem without a but of intuitive work from you.

(This info pertains to the new version btw)
1. begin a DOS prompt session
2. goto your QB64 folder
3. type COMPILE FRAC
4. ignore any errors
5. does the file FRAC.EXE exist? if it does... good, let me know about it
6. ok, frac.exe couldn't be compiled, continue
7. goto the qb64\internal\c folder
8. type the following (or copy and paste it in if you know how):
.\bin\gpp.exe -Wall -I../sdl/include -L../sdl/lib qbx.cpp -lmingw32 -lSDLmain -lSDL -mwindows -o ..\..\test 2>..\temp\d.txt

Let me know what happened!
If it worked, a file called test.exe should have been created in your qb64 folder. When run, it should draw a fractal.

Thanks again,
Galleon

PS. I'm going to get my old Windows 95 laptop out of the garage and see it it gets the same problems you describe.

Posted on Oct 13, 2007, 6:48 AM

Respond to this message   

Return to Index


*I have lost the will to live.

by roy (no login)

Posted on Oct 13, 2007, 8:01 AM

Respond to this message   

Return to Index


You don't need a will to live, you only need one of those after you're dead!

by Pete (Login The-Universe)
Admin

And don't you dare leave me that piece of crap ME computer in that will!

Pete

- I will check out QB64 on my 98 later today or tomorrow and see if it works or doesn't.

Posted on Oct 13, 2007, 11:46 AM

Respond to this message   

Return to Index


*Good LUCK on that LOL!

by (Login burger2227)
R

Posted on Oct 26, 2007, 8:00 PM

Respond to this message   

Return to Index


Give up with ME and me lol.

by roy (no login)

I searched for GPP.EXE and found it in QB64\internal\c\bin
then I tried running QB64/compile.bat from the command line
and this is what the command line looked like:-
file:///c:/My%20Documents/QB64/compile.bat
but it still does not work any differently.

Posted on Oct 13, 2007, 6:48 AM

Respond to this message   

Return to Index


Hmmm I see a space here ;-).

by (Login MystikShadows)
R

Roy, try to copy the QB64 folder (and everything under it) to c:\ so you have C:\QB64\....

The commands just might work this way, my guess is the compling system is set to work when everything is under the C drive, not C:\My Documents\ like it is now.

Posted on Oct 13, 2007, 11:46 AM

Respond to this message   

Return to Index


I have tried it before in c:

by roy (no login)

It does make it easier from the command line but the result is the same.
ME is so hard to work with it tries to do everything for you but sods it up.
I will forget it until I upgrade to XP.
Thanks for your effort and especially Galleon who tried hard.

Posted on Oct 13, 2007, 1:04 PM

Respond to this message   

Return to Index


Well hurry the hell up, roy...

by Pete (Login The-Universe)
Admin

Micro$oft plans to discontinue XP in December. You could probably still buy one on eBay after that, but eBay sucks.

XP with SPII has been a decent OS in my experience. The only thing I miss is the ability to run as many QB IDE's as I want in my older 98. XP "sods" that up royally. I don't care how much time you fiddle with the priority settings, it still finds a way to make all but one IDE move at a snails pace.

Just be careful if you get a new computer not to get a damn Vista or any 64-bit system. 32-bit systems are more reliable, are completely needed for QB, and nobody needs a 64-bit system, anyway. There is a big jump in ability between 16-bit to 32-bit technology, but not much at all from 32 to 64.

By the way, Gateway still sells XP systems, if you are interested in a new computer. I'm not sure what is available in the UK, but pre-installed systems always seem to have fewer problems than upgrades or switch-outs, in my opinion.

Pete



    
This message has been edited by The-Universe on Oct 13, 2007 1:19 PM

Posted on Oct 13, 2007, 1:18 PM

Respond to this message   

Return to Index


*Thanks

by roy (no login)

*

Posted on Oct 13, 2007, 2:12 PM

Respond to this message   

Return to Index


RE: Non-compilation in Win. ME/?

by (no login)

I've now tried everything I can think of atm short of installing a copy of ME (or while I'm at it 95/98) onto an older PC I have to test. I thought I had 95 installed on it but it turned out to be 2000, which for the record compiled frac and starwars without any problems. I don't have a spare copy of 95,98 or ME lying around so my hands are tied on this issue atm.

Roy, if you are willing I'd like to discuss this issue over instant messanger (IM). My Yahoo IM id is galleondragon and my MSN id is [email protected]
I'm sure the issue can be resolved. But I'm also quite happy to let it rest for now.

Thanks for the help and information you've given me,
Galleon

Posted on Oct 13, 2007, 7:46 PM

Respond to this message   

Return to Index


What's this? (*URL)

by (no login)

http://www.mininova.org/tor/858335

I'd better download it and burn it onto a CD to see if it is genuine so I can report this software piracy to Microsoft. ;)

Posted on Oct 13, 2007, 10:09 PM

Respond to this message   

Return to Index


* I noticed the message about DOS in ME compared to 98.

by roy (no login)

Posted on Oct 14, 2007, 8:42 AM

Respond to this message   

Return to Index


Did you see?

by (Login burger2227)
R

This was one of the most publicized changes in Windows Me, because applications that needed real mode DOS to run, such as older disk utilities, did not run under Windows Me.

Posted on Oct 14, 2007, 8:47 PM

Respond to this message   

Return to Index


RE: MystikShadows' suggestion to move QB64 folder to C:\

by (no login)

This will make no difference. All files are read relative to the QB64 folder itself, I've been very careful in this regard.

Posted on Oct 13, 2007, 7:50 PM

Respond to this message   

Return to Index


*I tested both downloads in my 98. Neither would compile starwars.

by Pete (no login)

Posted on Oct 13, 2007, 10:02 PM

Respond to this message   

Return to Index


Downloading QB64

by (Premier Login iorr5t)
Forum Owner

Did you ever get it to download?

Using Firefox, I simply clicked on
http://www.mediafire.com/?b1v0zn05yd5

Immediately, a screen came up with the message "Click here to download"

I clicked on that message and the ZIP file downloaded. (qb64v01.zip 6,173 KB)

I had previously tried IE5, but got an attempt to download HTML rather than the ZIP file. Plus I got annoying pop-ups.

Mac

P.S. I guess I was expecting a simple EXE file, much like QBasic.EXE. Instead, it is a zillion files. Will study later.



QBasic rules.

Posted on Oct 11, 2007, 5:28 AM

Respond to this message   

Return to Index


I think Galleon put in a lot of examples to try it with...

by Pete (Login The-Universe)
Admin

Also, I would recommend SENDFILE.COM I think it's called. If I remember right, I recommended that to someone here a year or so ago. No popups and it's a straight forward free download service.

I never seem to have any trouble with this type of stuff, which is strange, since I state that I don't like puzzles. Just keep clicking #$%^ until something downloads the file, that's my motto. Impatience’s always wins out over reasoning. I'm thinking of starting a file share site called gorillashare.com for my fellow primates who share this same hammer on the keyboard until you get your banana! Wait a minute... that last statement could possibly be misconstrued. See the trouble I get into when I have to explain things to you guys? Gees! Just use SENFILE.COM and don't monkey around next time.

Pete

Posted on Oct 11, 2007, 8:33 AM

Respond to this message   

Return to Index


* At least you did not become a member like I did LOL

by (Login burger2227)
R

Posted on Oct 11, 2007, 9:16 PM

Respond to this message   

Return to Index


The Library in QB4.5 verses 1.1

by (Login burger2227)
R

Mac and I just had a conversation about QB4.5's ABSOLUTE needing the library.
It requires that the QB.EXE /L switch be used to load the library verses 1.1 having the ABSOLUTE call included in the programs you can write. No library needed! Since this difference would not really affect the IDE code or Compiler, why couldn't both ABSOLUTE and INTERRUPT routines be included in QB64 without needing the library at all?

Here are my thoughts on the matter:

I would add an option at compile time to either use it or not or............
perhaps the Compiler could figure out if it was required also by looking for ABSOLUTE or INTERRUPT in the IDE code written. This would allow users to use
both subroutines in a module without needing the library specifically.
If you compile in a command line, an option switch could be used there.

Mac thinks that M$ should have done that anyhow to make it backward compatible.
I agree!

Good luck on this project!

Ted

Posted on Oct 10, 2007, 6:49 PM

Respond to this message   

Return to Index


RE: /L default library in QB4.5

by (no login)

My intention is for QB64 to always automatically compile as if the /L option was given in QB4.5
The only issue this could cause is if someone is using a sub called INTERRUPT or INTERRUPTX. In this case, like Clippy says, it would not be difficult to have their sub override the default library's statements.

Posted on Oct 10, 2007, 8:36 PM

Respond to this message   

Return to Index


Well, not exactly what I meant

by (Login burger2227)
R

Mac would have a fit if he needs to use the library. He hates stuff that is unnecessary!

I tested both of the INTERRUPT and INTERRUPTX procedures by using a new BI file that did not include the DECLARE statements in QB.BI. The new file I made is called RegType.BI as below:

TYPE RegType
ax AS INTEGER
bx AS INTEGER
cx AS INTEGER
dx AS INTEGER
bp AS INTEGER
si AS INTEGER
di AS INTEGER
flags AS INTEGER
ds AS INTEGER
es AS INTEGER
END TYPE

That is all that is in it! So I included it in my Interrupt and InterruptX programs to see how it worked. In fact I found that I did not even need InterruptX in any program to access DS and ES! Strange eh? Just CALL Interrupt seemed to work fine! I did not DECLARE them in my programs either!

Seems that QB4.5 must define the SUBs in the library somewhere. If the library is included with ALL programs when compiled, there would be some bloating of the EXE file at compile time. This is not necessary in most programs!

My idea would be to either offer an option at compile time or somehow have QB64 figure out if the library is required. That would be up to you Galleon.
It took me a year to realize that you needed the Library with ABSOLUTE or INTERRUPT in a program and newbies just wonder why it doesn't run and gives an error.

Are you planning on using the present library or a new one? It would be better if we don't have to remember to load it.

But then Mac won't be happy either LOL.

Thanks for your time,

Ted

Posted on Oct 10, 2007, 9:26 PM

Respond to this message   

Return to Index


RE: Having to define Interrupt & InterruptX

by (no login)

You are right, as long as you start QB4.5 with the /L option you don't need:
DECLARE SUB INTERRUPT (intnum AS INTEGER, inreg AS RegType, outreg AS RegType)
DECLARE SUB INTERRUPTX (intnum AS INTEGER, inreg AS RegTypeX, outreg AS RegTypeX)
DECLARE SUB ABSOLUTE (address AS INTEGER)

In fact, you don't even need to define a RegType structure if you use the older commands...
DECLARE SUB INT86OLD (intnum AS INTEGER, inarray() AS INTEGER, outarray() AS INTEGER)
DECLARE SUB INT86XOLD (intnum AS INTEGER, inarray() AS INTEGER, outarray() AS INTEGER)
...because you simply pass them the registers in an array.

"Are you planning on using the present library or a new one? It would be better if we don't have to remember to load it." -Clippy
QB64 will support the QB.BI include file. As for the library, it is compiled, machine code. QB64 will have it's own version of these commands, so effectively, yes, it will have its own library to perform these commands.

Posted on Oct 10, 2007, 10:03 PM

Respond to this message   

Return to Index


DOWNLOAD DEMO #3 NOW!

by (no login)

Thank you to those who have contributed feedback so far. As stated, this version allows you to compile your own .BAS programs into WINDOWS .EXE form. Please read readme.txt carefully, I've provided a copy of it in this post after the download link. There is no "install" as such, just extract the files keeping their folder structure intact. Make sure you use an extractor which supports long file names (some DOS ones don't).

I've provided the download in .ZIP (approx. 6MEG) or .RAR (approx. 5MEG) form for your convenience. They are both identical.

Link to the .RAR version:
http://www.mediafire.com/?exexg3yymms

Link to the .ZIP version:
http://www.mediafire.com/?b1v0zn05yd5

#################################################################
README.TXT
#################################################################
QB64 COMPILER V0.1 DOCUMENTATION
================================
Thanks for trying QB64! QB64 is only at the very beginning of development so don't expect much from this version.

To compile a QBASIC/QB4.5 .BAS program simply run the program COMPILE.EXE. It will prompt you to enter the .BAS file's name.
*****MAKE SURE YOUR .BAS FILE IS SAVED IN TEXT FORMAT*****

IMPORTANT NOTES:
-Lots of bugs/loose ends to fix, please report your findings, but take into account what is/isn't supported before saying something doesn't work (listed below).
-If C++ COMPILATION FAILS, it doesn't mean there is something wrong with the C++ compiler it means that the C++ code generated by COMPILE.EXE was wrong, and that the QB64 compiler wasn't good enough to find the problem (as it is in the early stages
of development).
-ONLY WINDOWS executable programs are possible atm (no Linux or Mac compilations yet).
-You can also enter the name of the program to compile on the command line: (eg.)
COMPILE frac.bas
-You don't need to "INSTALL" QB64, just extract it using its current directory structure.

WHAT IS NOT SUPPORTED YET:
(As you can see some of the things on the list are little things it wouldn't take long to add, I just haven't gotten around to them yet)
-Subs/functions/gosub
-Arrays
-User defined types
-File access
-Memory referencing
-Select case
-Negation(using - sign),IMP,EQV,NOT
-String comparison using <,<=,>= (> is supported)
-Numbers written directly in source code with special QB symbols (eg. 23&,1D+1)
-Line NUMBERS (labels work fine)
-Keyboard entry of special dual byte characters is not quite correct yet
-Exit DO/FOR/etc.
-ELSEIF
-Error trapping & event trapping
-REM
-Any QB statement/function not listed below, or usage of a function below which requires one of the above

WHAT IS SUPPORTED:
PRINT *highly limited atm (sorry!), it MUST be parsed a single string variable
IF-THEN-ELSE-ENDIF
DO-LOOP
FOR-NEXT *can't use a bit-length variable here yet
WHILE-WEND
GOTO
DIM
DEFINT/etc.
LINE
SOUND
TIMER
RND *but only in form which uses brackets like RND(1), not simply RND
RANDOMIZE
OUT *but only to palette registers in SCREEN 13
PCOPY
VIEW (graphics) *a bug exists with this one when SCREEN option isn't used, no bounding boxes are drawn yet either
VIEW (text)
INPUT *but not line input! also, inputting of bitlength-variables is unfinished
WINDOW
LOCATE
COLOR
PALETTE
WIDTH
SCREEN
PSET
ASC
LEN
INKEY$
STR$
UCASE$
LCASE$
LEFT$
RIGHT$
LTRIM$
RTRIM$

WHAT'S NEW IN QB64?
INPUT PROTECTION:
Say good-bye to "REDO FROM START" messages with input protection which stops the user from typing in invalid data before they even press ENTER. Try it with fixed length strings to limit how many characters a user can enter.
DATA TYPES & THEIR USAGE:
_BIT name`
_UNSIGNED _BIT name~`
_BIT*4 name`4
_UNSIGNED _BIT*4 name~`4
_BYTE name%%
_UNSIGNED _BYTE name~%%
INTEGER name%
_UNSIGNED INTEGER name~%
LONG name&
_UNSIGNED LONG name~&
_INTEGER64 name&&
_UNSIGNED _INTEGER64 name~&&
SINGLE name!
DOUBLE name#
_FLOAT name##
STRING name$
STRING*100 name$100
THE NEW _DEFINE COMMAND:
Instead of having DEFBIT,DEFUBT,DEFBYT,DEFUBY etc. for all the new data types there is a simple command which can be used like DEFINT for new types (or old types if you want to) as follows...
_DEFINE A-C,Z AS DOUBLE 'the same as DEFDBL A-C,Z

Posted on Oct 10, 2007, 6:27 PM

Respond to this message   

Return to Index


Floating Point Bug

by qbguy (no login)

I compiled the following program using QB64 (example 3):

X#=9533.24-215.1
X$=STR$(X#)
PRINT X$

Using QB 7.1 and QBASIC 1.1: 9318.140228271484
Using QB64 (demo 3): 9318.139999999999

I'm thinking, "Oh, it's a bug in the C++ compiler." However, when I wrote this C++ program:

#include <iostream>
using namespace std;

int main ()
{
double x;
x = 9533.24 - 215.1;
cout << x;
return 0;
}

And compile it:

C:\qb64>g++ --version
g++ (GCC) 3.4.2 (mingw-special)
Copyright (C) 2004 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


C:\qb64>g++ test.cpp
test.cpp:10:2: warning: no newline at end of file

I get this:

C:\qb64>a.exe
9318.14

Why?

Posted on Oct 10, 2007, 7:31 PM

Respond to this message   

Return to Index


Well spotted, looks like a minor rounding bug

by (no login)

I'll have it fixed in the next version to return 9318.14
Of course, that's not what QBASIC is returning, but I think people would rather get 9318.14
For the record, QB64 was closer to the right answer than QBASIC

As for WHY?
It's to do with the way floating point DECIMAL numbers are stored in BINARY form. Even seemingly simple decimal fractions cannot be represented perfectly in binary form.

Posted on Oct 10, 2007, 7:46 PM

Respond to this message   

Return to Index


RE: The "Floating Point Bug"

by Galleon (no login)

Further investigation reveals that QB64 returns the exact same results as QB if you convert the numbers entered into SINGLE precision numbers first as follows:
s!=9533.24
s2!=215.1
X#=s!-s2!
X$=STR$(X#)
PRINT X$

Furthermore, you can get QB to return what QB64 does by explicitly telling QB that the numbers are double precision as follows:
X#=9533.24#-215.1#
X$=STR$(X#)
PRINT X$

The only reason for the discrepancy is because QB64 currently interprets all floating point numbers entered in the code as doubles. This was eluded to in readme.txt under the not supported yet section:
-Numbers written directly in source code with special QB symbols (eg. 23&,1D+1)

So later, QB64 will return the exact same results as QBASIC after I implement the above. BUT, is that a good thing?
Here we have a topic for a debate!

Posted on Oct 10, 2007, 10:22 PM

Respond to this message   

Return to Index


Floating point errors? We don't need no stinkin' floating point errors...

by Pete (Login The-Universe)
Admin

If some people have based their programs on QB floating point errors, they are too stupid to live and if so, in a couple of days, it won't matter, because they will be dead. Then the rest of us can enjoy a less buggy programming experience, thanks to Galleon.

OK, kidding aside as I often state, here's a mattter of discussion and possibly testing that could be required to help answer this question. How would changing the way QB64 handles floating point errors affect QB programs that have ways to handle these errors already factored into them? We might have to go over a list of some tricks here to see if anyone is using an algorithm that would fail to respond correctly if such a change was made. That is the only area of support for keeping it 100% floating point error compatible, in my opinion.

Pete

Posted on Oct 10, 2007, 11:58 PM

Respond to this message   

Return to Index


Pete makes a point :-).....

by (no login)

It's one of the only area of debate indeed. IT all depends on what it does now (QB64 that is) and what it could do.

A single datatype could just be interpreted as a double internally. SINGLE is 32 bits and DOUBLE is 64 bits right?

So just shifting the SINGLE value 32 bits to the right would the make it lign up with the DOUBLE 64 bits to be read as the same value. Likewise any numbers with decimals could be internally terated as DOUBLES. and any Integer values could be internally treated as 32 or 64 but INTEGERS.

Why am I suggesting this? because I assume that if you are supporting all these datatypes then you are faced with the following situation anyway.

a bytw can allow up to 11111111 on a 32 bit register like in the CPU it needs to get translated to 00000000 00000000 00000000 11111111 so it both fits in a 32 bit addres and be interpreted as 255 afterwards. Hence any non 32 bit datatypes must be slower than 32 bit integers when executed on a 32 bit CPU because of this shifting that needs to occur to store these valuesn as 32 bit values before further processing occurs whereas a 32 bit value like integer needs no fancy work to get it stored as expected. On a 64 bit CPU well I assume it's all 64 bit internally and this might need to be concidered as well in the long run. ;-).

Now if internally you treat them all as integers, I believe that:

1. the whole language would be faster and you can add range checking per type into the translator.
2. the SINGLE to DOUBLE situation you describe here would vanish as singles would be just treated as doubles internally. Needless to say I've had to deal with that discrepancy oh too many times in my career and I don't recall enjoying it once LOL.

This is of course just a suggestion, not an order ;-). But I think it might have some value for the reasons I mention here. hehe.

My two cents.

MystikShadows


Posted on Oct 11, 2007, 1:37 AM

Respond to this message   

Return to Index


I'm here to turn Steve's suggestion into an order... And can I get fries with that?

by GWB (Login The-Universe)
Admin

Darn you Myst, you evil genius! You basically take what I state in plain English and turn it into computerese, which is good because Galleon can probably use it but that leaves me completely in the dark because I don't understand a single word of it. Blondie just tells me it's all French to her. Nobody helps!

Kidding aside, you never seem to let me down on how well rounded your computer education actually is. Me, I just code. What the hell it does once it gets inside the computer makes no difference to me. I keep a large paper back book on ASM handy, in case of emergency. Not to help me understand this stuff, but in case the power gets cut off, that's the first item that will get thrown into the fireplace. Yep, no way my family is going to freeze in one of these bone-chilling 48 degree Southern California winter nights.

Pete

PS: Just so you know, I do get why floating point errors happen and I blame Chandler! Darn Binary system.



    
This message has been edited by The-Universe on Oct 11, 2007 2:27 PM

Posted on Oct 11, 2007, 8:44 AM

Respond to this message   

Return to Index


ROFL @....@...Oh the whole darn post. lol.

by (no login)

First thanks for the kinds words about my education. ;-). it was only my adult education and all my teenage and kid education teacher can vouch for that, I was quite the trouble make and I made them even madder cause I never lied. The'd walk up to me, yell out loud "DID YOU DO THIS?" and I'd just answer, in an ever so calm voice, "yes, I did". I think some wanted to beat me up after class or something lol. I've read alot of books in my pass and all that served me to learn is that I ain't done reading yet. :-). "Well round education", how appropriate a choice of terms here. LOLOL...

But yes, I think the did miracles when you consider what binary is and trhowing a decimal point in the recipe. But yes, 0s and 1s can only do so much ;-). maybe when we have 612 bits CPUs maybe then precision will have a whole new meaning ;-).

Posted on Oct 11, 2007, 10:54 AM

Respond to this message   

Return to Index


Darn! This place won't even round off your smiley faces!

by (Login burger2227)
R

Posted on Oct 11, 2007, 9:27 PM

Respond to this message   

Return to Index


RE: floating point inaccuracies

by (no login)

There are fractions it is impossible to represent in decimal form (without repeater symbols). Lets take one seventh: 0.14285714285714285714285714285714...
Just the same there are fractions/decimals which are impossible to represent exactly in binary form.

9318.14 is a decimal number which cannot be represented exactly in binary form.
9318.1399999999999999999999999999999999999999999999999999999.......(etc) can be represented in binary form, and is the closest representation of 9318.14 possible using a 64 bit floating point number (a DOUBLE).

Qbguy got his C++ code to output 9318.14 exactly, but this is because the function he called to print the number either 1:rounded the number or 2:converted the number to a single precision number which effectively meant the output didn't contain enough decimal places to see that the number wasn't exactly 9318.14
Indeed, if you do the code Qbguy did in QBASIC but put the value into a SINGLE before printing it you also get 9318.14!

Pete, you suggest "fixing" the problem however I hope from my above explanation that you see the problem cannot be "fixed". There is no error in the FPU/CPU, it's just representing a number the best way it can. What I can do is change my rounding technique to be a tad more aggressive when it comes to printing double precision numbers with so many digits, which would mean STR$(double) would return a more human friendly result in this case. I BELIEVE THERE IS ENOUGH JUSTIFICATION FOR DOING THIS!

MystikShadows, if I were coding QB64 in assembly language a lot of your points make excellent sense, but C++ does, and I have tested this, exactly what you said about moving the bytes/integers into 32bit longs internally for processing automatically.
Now onto your floating point suggestions: I agree. Whenever a decimal number is directly typed in the code why not process it as a DOUBLE, which will give greater accuracy. The other suggestion about processing SINGLE variables as doubles is redundant, because the FPU (floating point processing unit, hardware chip) loads all values and instantly converts them to 10 byte long floats, processing them all the same.

TWO IMPORTANT DIFFERENCES TO THE WAY QB64 AND QBASIC WILL HANDLE FLOATING POINT
1. Any decimal numbers in the source code will be given to C++ as doubles (never singles) for processing. The QB64 compiler will still recognize the difference between directly typed SINGLES and DOUBLES so that they can be represented by the correct amount of decimal places by PRINT, STR$, etc.
2. When PRINT or STR$ handle a DOUBLE with a large amount of representable digits (eg 1.119999999999) which are very close to a whole number it will round up to that number (in this case 1.12).

Posted on Oct 11, 2007, 3:19 AM

Respond to this message   

Return to Index


* We already have that with PRINT USING !

by (Login burger2227)
R

Posted on Oct 11, 2007, 4:41 AM

Respond to this message   

Return to Index


Hi Galleon, yes, that's exactly what I meant by "fix" the problem...

by Pete (Login The-Universe)
Admin

>Pete, you suggest "fixing" the problem however I hope from my above explanation that you see the problem cannot be "fixed". There is no error in the FPU/CPU, it's just representing a number the best way it can. What I can do is change my rounding technique to be a tad more aggressive when it comes to printing double precision numbers with so many digits, which would mean STR$(double) would return a more human friendly result in this case. I BELIEVE THERE IS ENOUGH JUSTIFICATION FOR DOING THIS!<

I completely get that there is no way to eliminate all floating point errors in computers because computers are binary, not base 10. No problem. I use fix it as meaning improve it. Just as FORTRAN and COBOL were better languages for mathematic calculations than Basic and other languages.

I wonder what M$ would have done if they were the M$ of 20 years ago in regard to upgrading QB to 32/64 bit ability? I certainly think they would have improved it if there was no reason to leave it the same; so we just need to try to figure that question out: Would it hurt anything if the rounding was improved?

As far as testing goes, how easy would it be to try it both ways? If it's easy, I'd say release both in the next beta test so we can hammer it out. If it is days of extra work, another idea is in order.

By the way, I'll admit I don't know everything about a computer but I do know that the CD-tray is not a cup holder... or at least it won't be until they make that Micro$oft Surface.

Pete

Posted on Oct 11, 2007, 8:53 AM

Respond to this message   

Return to Index


Fixed floating point issues in preparation for DEMO #4

by (no login)

I just added support for the correct interpretation of numbers written in the source code under all circumstances.
It includes support for numbers in a variety of formats including numbers like:
-10&
32000%
.1E30
12000000000D+200
5.12
5.00000000124
3!
.1#
&HA13FB29C17000000
It also includes the two important changes previously discussed in the post titled:
RE: floating point inaccuracies

Interestingly, I found out that QB7.1/PDS returns different results than QBASIC/QB4.5 under certain conditions which indicates that they somewhat fixed this problem in QB7.1, however the solution used in QB64 is even more effective and does return the expected result (9318.14) when given:
X#=9533.24-215.1
X$=STR$(X#)
PRINT X$

Posted on Oct 21, 2007, 5:15 AM

Respond to this message   

Return to Index


Still unable to compile in ME.

by roy (no login)

It finds the file but is unable to compile it. I tried compiling STARWARS.BAS but still no luck, yet STARWARS.BAS compiled with 4.5.
Good work, everyone says ME is rubbish.

Posted on Oct 11, 2007, 6:05 AM

Respond to this message   

Return to Index


ROY, please help me to fix this problem!

by (no login)

1. Attempt to compile either starwars.bas or frac.bas
(It will fail, saying the C++ compilation failed right?)
2. Now goto the folder QB64\INTERNAL\C
3. Find the file cdebug.txt
4. Post the contents of that file here for me.

Thanks,
Galleon

PS. I suspect it's a compiler paths problem, but I need to be sure before we try other things.

Posted on Oct 11, 2007, 3:40 PM

Respond to this message   

Return to Index


DEBUG.TXT is in the folder

by roy (no login)

Contents:-
QB ERROR
ERR = 53
ERL = 9999

Message recieved when trying to compile :-
COMPILING C++ CODE INTO EXE...
Bad command or file name
C++ COMPILATION FAILED

I tried moving QB64 to other areas of the computer.

Posted on Oct 11, 2007, 11:47 PM

Respond to this message   

Return to Index


Roy, try the fix I posted for ME/98/95

by (no login)

Did it work?

Thanks,
Galleon

Posted on Oct 11, 2007, 11:53 PM

Respond to this message   

Return to Index


RE: Not compiling in Windows ME/98/95

by (no login)

It seems Windows ME, Windows 98 (and previous versions) don't support the CMD.EXE command which is the equivalent to COMMAND.COM

The obvious solution is for me to use command.com (QBASIC's natural SHELL) to launch the compilation batch file. But, it's not quite so simple because then compiling under XP,Vista won't work because paths are forgotten when calling a batch file using command.com between each line.

Anyway, an immediate solution which will probably work for ME/98/95 is:
1. Compile your program using compile.exe
(this will say it failed which is OK)
2. type the following at the dos prompt (or make it into a .bat file at your preference)
cd internal\c
path ..\mingw\;..\mingw\bin;..\mingw\libexec\gcc\mingw32\3.4.2\
g++ -Wall -I../sdl/include -L../sdl/lib qbx.cpp -lmingw32 -lSDLmain -lSDL -mwindows -o ..\..\test 2>cdebug.txt
cd ..\..
3. run test.exe

Sorry for the unforeseeable problems,
Galleon

Posted on Oct 11, 2007, 11:51 PM

Respond to this message   

Return to Index


I do not get a DOS prompt it just terminates.

by roy (no login)

When I get the C++ COMPILATION FAILED, anything I try after that gives me the message that This MS-DOS program has teminated. I will try other things tomorrow but I will be busy today.
Do not worry about it, I can always upgrade.

Posted on Oct 12, 2007, 12:52 AM

Respond to this message   

Return to Index


I'm surprised this wouldn't work...

by Pete (Login The-Universe)
Admin

CLS
locate 10,15
print "hello world."
do
loop until inkey$ <> ""
cls
end

------------------------------------

It would not acknowledge a key press. It failed with several other inkey operations, too. Too many things right now that won't work to give it much of a test in this area. :(

Posted on Oct 11, 2007, 3:43 PM

Respond to this message   

Return to Index


On the other hand, this does...

by Pete (Login The-Universe)
Admin

screen 0,0,0,0
view print 5 to 15
locate 10,15
print "hello world."
a = 24
if a > 12 then print "A is greater than 12"
do
b$ = inkey$
loop until b$ <> ""
if asc(b$) = 27 then print "esc"
color 14,1
print "color text."
pcopy 0, 1
screen 0,0,1,1
sound 100,1
cls
end

------------------------------------

Everything except the last CLS statement, which won't clear the screen.

Pete

Posted on Oct 11, 2007, 4:21 PM

Respond to this message   

Return to Index


It's sounds crazy but CLS and END aren't implemented yet Pete!

by (no login)

Unfortunately, atm the QB64 compiler doesn't create an error when you enter a line beginning with something it cannot resolve. It just ignores it and reads the next line.

Your code worked exactly as I'd predict! But all it does is:
locate 10,15
print "hello world."
do
loop until inkey$ <> ""

Thanks for trying out QB64. I'm sorry it is so limited and so poor at error checking, but it is a very early release.
Galleon

Posted on Oct 11, 2007, 9:12 PM

Respond to this message   

Return to Index


Oops, my bad, CLS was not on the working list.

by Pete (Login The-Universe)
Admin

I think when either GOSUB or SUBS are supported and SELECT CASE then I will have an eaiser time testing it out. That's probably not too far off in the future. Right now it's like trying to come up with a lot of programming fragments, which for me is actually harder to do than to write a regular routine.

Anyway, thanks for posting it. I think you are doing the right thing. I mean you could wait until it's all finished but you would miss a lot of feedback, some of it even useful (hehe) and we would miss a lot of the fun at seeing the project come together.

Pete

Posted on Oct 12, 2007, 12:36 AM

Respond to this message   

Return to Index


DEMO #3 will be released tomorrow!

by (no login)

There's been a lot of development in QB64 over the past few weeks, there always seem to be so many loose ends to fix up. However loose ends and all I will be providing a download link to DEMO #3 of QB64 tomorrow. It's a notable demo because it is the first to allow you to compile your own code, as aposed to just having a few exes compiled in QB64 to demonstrate specific functionality.

Please don't get too excited though ;)
QB64 is at a very early stage of development and very little is implemented. Although a fuller list will be distributed with the download of what is/isn't implemented the basic gist of it is:
NO USER DEFINED TYPES
NO ARRAYS
NO MAKING OF SUBS/FUNCTIONS
NO DISK FILE ACCESS
NO... (well I think you get the idea of how restrictive it will be!)

I'll also include a couple of .BAS files with the download you can compile and run to give you an idea of what is possible at the current stage of development.

Until tomorrow,
Galleon

Posted on Oct 10, 2007, 12:06 AM

Respond to this message   

Return to Index