Slashdot Mirror


User: Halcyon-X

Halcyon-X's activity in the archive.

Stories
0
Comments
235
First seen
Last seen
Profile
(view on slashdot.org)

Comments · 235

  1. Expecting too much out from too little? on Has The Internet Peaked? · · Score: 2
    It's rediculous to assume that a faster means of information will magically provide us with new experiences. The limits aren't in bandwidth but how content providers choose to use it.

    Personally, I din't expect the internet to deliver an TV-like experience, that's what TV is for... as for interactive TV, that's just complicating matters, I use my television to relax, the entire point is to be enjoying a show, not anything else.

    Basically I think they are expecting too much from such a small step forward. Our computers don't provide those experiences locally with all the bandwidth available from our hard disks, so why expect this experience to come true with the relatively small bandwidth the internet provides?

    However with new codecs such as Microsoft's Video/Audio 8 and 3ivx, maybe it's possible, but I wouldn't expect anything too revolutionary considering what we have to work with.

    To say that the internet is at its peak is silly in itself, technology will always advance. Just because the hype made people expect too much doesn't mean this isn't possible at a later time.

  2. Linux already here as an alternative to Windows on ESR: Microsoft Could Collapse In 6 Months (updated) · · Score: 1

    Microbytes is already offering Linux as the standard OS installed on all of their PCs, but the only reason they state is to dodge the so-called "Windows Tax" and give the end user a cheaper PC. Keep in mind this store sells custom-built PCs, and the reason they state for installing Linux is that they all know everyone has a copy of Windows and the clientel are perfectly capable of installing it themselves. In other words, they don't want to re-sell it.

  3. Who cares about binary drivers? on id On Linux: Bad News · · Score: 1

    Windows has binary-only drivers and it is hugely successful. I don't see your point.

  4. It's not id's responsibility to create the OS on id On Linux: Bad News · · Score: 1
    > Id should have provided a simple test program (rotating cube) and simple code to try different configurations.

    I don't think that's id's responsibility. DirectX comes with a program to do this called DXDIAG and I'm pretty sure whatever API Linux has should come with a way to test it as well. It's not the game creator's responsability to make sure the OS runs smoothly.

    > They could also have provided some additional software to help the user configure their X server;

    This should be the responsability of the people who programmed X. Why would they make an interface that can't even be configured properly with their own software?

    To me, X should have been distributed with these features already there. Why should software developers have to also support the OS? The OS should be supporting the software developers.

  5. Re:Include Japanese Please! on Akira on DVD? It Might Happen · · Score: 1

    You can turn on closed captioning! :D

  6. No good dubs? Yeah right! on Akira on DVD? It Might Happen · · Score: 1

    I guess you must have really high standards, but personally I thought the dubs of Neon Genesis, Macross Plus, Ranma, Dragon Ball Z, and Princess Mononoke (to name a few) were great. I have only seen one Ranma episode and one of the Macross Plus parts in Japanese, but I didn't think I was missing anything - except the picture since I was busy reading all the subtitles. If you get the English dubs, you won't be missing anything. The voices on the dubs are at least on par with any animated films we have here (though the content is usually entirely different, of course).

  7. What was the point of the GeForce 2 Ultra then? on Nvidia's NV20 · · Score: 1
    The NV20 is coming out in January if I'm not mistaken? So what is the point of NVidia releasing so many versions of the GeForce? The GeForce 2 Ultra just hit stores around here and now we hear the NV20 is going to be released soon.

    So far as I know, there has been the GeForce, GeForce DDR, GeForce 2 MX, GeForce 2 GTS, GeForce 2 Pro (Same as GF2GTS but faster RAM), and GeForce 2 Ultra. 6 products in 6 months. Isn't this overkill? I would have been much happier if they just released the GeForce 2 GTS for hardcore gamers, and GeForce 2 MX for the consumer market. I don't think any other manufacturer has this many variations of their chipsets, and I don't really see what makes this any good. Sure there is something for everyone, but isn't this over-saturation?

    The worst of it is that we aren't warned when or if NVidia's going to spring a better version of their video cards on us, making our very expensive purchase obsolete.

  8. Wouldn't the same go for Microsoft then? on Tom's Hardware Retracts P4 Endorsement · · Score: 1

    You'd think this logic would apply to Microsoft but people never think of them that way either. They always call them M$, Microsloth, their product Winblows, Windoze...

  9. Mousekeys on Whistler vs. KDE/Gnome · · Score: 1

    Oh, I almost forgot, in the Accessibility Control Panel, you can turn on Mousekeys which lets you move the mouse cursor with the numeric keypad. There's pretty much no room for error this way.

  10. Use the Windows Logo key or CTRL+ESC and arrows on Whistler vs. KDE/Gnome · · Score: 2
    Use the Windows Logo key or CTRL+ESC and arrows, you can navigate the start menu pretty easily this way. I've found that generally Windows is completely navigatable with the keyboard.

    ALT brings up the menus while arrows navigate them, CTRL+TAB navigates tabs at the top of dialog boxes, TAB moves the cursor to different buttons, Space presses a button or widget (checkbox/radio button), ALT+Letter selects a control with an underline in its name, ALT+TAB switches applications, ALT+ESC navigates open applications in a sequential order, Logo+D toggles minimizing of every application to see the desktop, ALT+Space brings up the system menu, ALT+F4 closes an application, F3 initiates the Find command (or Logo+F), ALT+Arrow initiates the "Back" or "Forward" command in explorer windows, Backspace navigates up one folder in the tree of My Computer or Explorer, F2 usually renames something, and F4 brings down the "Drives" in a dialog box or My Computer

    In Internet Explorer, F11 makes it full screen, F6 lets you type in the "Address" bar, F4 pulls down the "Address" bar, ALT+Arrows works here too, and so on.

    Hope this helps. Personally, I never use the mouse except in games or when navigating web pages.

  11. Re:Actually, I will go off. on Canada May Name High-Speed Access "Essential" · · Score: 1

    I pay $35/month to get a rock-solid DSL connection (yes dynamic IP) from sympatico.ca at 960kb/sec, and I can independantly connect every machine in my house since the modem is connected to my hub and they each get 960kb/sec as well. I can't say I've ever needed tech support so I can't say how good it is. Since cable has a limit of 6GB/month around here through Videotron, this is the best option I can get. Redundant connections for greater bandwidth is great, and it doesn't violate my contract. Sympatico's attitude seems to be "As long as you don't break anything or need our help to do anything extra, go for it." I believe the connections will be upgraded to 3mb/sec in January and soon after that 7mb/sec. For $34/month, I feel that I get way more than I expected.

  12. Re:Platform "independance" on Has Netscape's Browser Become Too Self-Serving? · · Score: 1

    Ah I had no idea, I don't use linux. C is portable though and I'm sure they could include x86 emulation. That'd be cool. Then again there's Bochs, a platform independant x86 emulator that can be found here.

  13. Platform "independance" on Has Netscape's Browser Become Too Self-Serving? · · Score: 1

    I dunno if you would call it platform independant but IE is on x86, WinCE machines, PowerPC, and DEC Alpha, and you can use it in Wine on any platform ;P

  14. Re:IE 5.5 faster on Netscape 6 Is Out (Really!) · · Score: 1

    I was referring to speed, though, not overall score. Overall, it's just personal preference either way.

  15. IE 5.5 faster on Netscape 6 Is Out (Really!) · · Score: 1
    It might be different for Windows 2000 (I can't imagine it being that much different, though), but C|Net has posted benchmarks comparing Netscape 6, Netscape 4.7x, and IE 5.5.

    Click this link to see the benchmarks and this link for the entire page of that article.

    Clearly IE is faster, by a huge margin (surprising actually).

  16. PS2 DVD on Indrema vs Xbox vs PS2 · · Score: 1

    The comparison on that page shows that the PS2 needs software on a PS2 memory card to play a DVD. I own a US PS2 and can verify the console plays DVDs in hardware with a "driver" built into the system's firmware/bios which can be updated by software (perhaps contained on a memory card). It can certainly be used to play DVDs right out of the box with nothing extra.

  17. Sounds like you ordered a Dreamcast on Indrema vs Xbox vs PS2 · · Score: 1

    Well the SEGA Dreamcast lets you use any dialup ISP, and it's basically what you ask for, plays games and does nothing else. Not that that's bad, cos it's definitely good at playing games. Check out http://dc.ign.com to see that the Dreamcast has many quality titles. Personally I own both a PS2 and a Dreamcast. Since I can't afford any games for the PS2 yet (haha) I can't really compare the two fairly. But I must say I'm disappointed that I can't get online with my PS2 right now... there is no connectivity for it by default.

  18. Is Linux the only "feature" that sets IES apart? on Indrema vs Xbox vs PS2 · · Score: 1

    So... the only thing special about the IES is that it runs Linux? I don't think the end user cares about such things, only that it plays the games from popular development houses that want a large audience (therefore profit). Why should they market it as a special feature? Every video game system has operating software. It's nothing new... Since Linux enables free software development kits. I wonder if Indrema corp is taking any steps to prevent any old joe from marketing a big turd and pass it off as an exciting game, launching the next Atari-and-the-video-game-market-crash.

    Personally I don't like its retro-70's "space-age" look. Yes this is opinion, I'm not knocking the machine just because of personal taste, but it doesn't fit in at all with my component entertainment system.

  19. Re:missing the point on Bootable Game CDROMs Using Linux · · Score: 1

    If you use it to make a self-bootable game, then you change hardware, it won't work anymore will it? You can't just write the new drivers and configure it right on the CD, you'll have to end up re-burning all your games. It's not really that practical an idea...

  20. Nevermind on Tetris Study Reveals Dreaming's Role In Memory · · Score: 1

    For some reason the code screwed up from putting it in a message as opposed to the file itself. I copied back the code and a bunch of things were missing. Oh well if you can fix it for yourself go ahead. Too bad I can't attach files in a post (or the posts show up the way I made them in plain text).

  21. I have a reality... on Tetris Study Reveals Dreaming's Role In Memory · · Score: 1

    Well, maybe this would be interesting. It's by me! I hope this works for you. I used QBasic 4.5

    ----Textris.cfg----
    CGA
    0
    28
    1
    0
    9

    // Line one is video mode (CGA, EGA, VGA)
    // Line two is difficulty (0-5)
    // Line three is Textris window width
    // Line four is endless game (Y = 1, N = 0)
    // Line five is background color (0-5)
    // Line six is foreground color (0-15)
    ----End Textris.cfg----

    ----Textris.bas----
    DECLARE SUB Ending ()
    DECLARE SUB EraseBlock ()
    DECLARE SUB DrawBlock ()
    DECLARE SUB TitleScreen ()
    DECLARE SUB DrawScrn ()
    DECLARE FUNCTION CalcDelay! ()
    DECLARE SUB Rest (T!)
    DIM SHARED scrSavBlocks(80, 25)
    DIM SHARED BlockType
    DIM SHARED Difficulty
    DIM SHARED Rotation
    DIM SHARED BlockX
    DIM SHARED BlockY
    DIM SHARED MachSpeed AS SINGLE
    DIM SHARED WindowWidth
    DIM Nono(1, 1)
    DIM scrSavBlocksSave(25, 80)
    DIM SHARED Foregrnd
    DIM SHARED Backgrnd
    ON ERROR GOTO BetaError
    MachSpeed = CalcDelay!
    TitleScreen
    P$ = INPUT$(1)
    Endless = 0
    WindowWidth = 33
    LevelNumber = 1
    PlayerScore = 0

    OPEN "TEXTRIS.CFG" FOR INPUT AS #1
    SEEK #1, 1
    LINE INPUT #1, Video$
    INPUT #1, Difficulty
    IF Difficulty 5 THEN Difficulty = 0
    INPUT #1, WindowWidth
    IF WindowWidth 33 THEN WindowWidth = 28
    INPUT #1, Endless
    IF Endless 1 THEN Endless = 0
    INPUT #1, Backgrnd
    IF Backgrnd 5 THEN Backgrnd = 1
    INPUT #1, Foregrnd
    IF Foregrnd 15 THEN Foregrnd = 9
    CLOSE #1

    SCREEN 0
    IF COMMAND$ = "/?" OR COMMAND$ = "?" THEN GOTO ParametersHelp
    IF UCASE$(COMMAND$) >= "CONFIG" THEN GOSUB Configuration
    IF UCASE$(COMMAND$) >= "CGA" THEN WIDTH 80, 25
    IF UCASE$(COMMAND$) >= "EGA" THEN WIDTH 80, 43
    IF UCASE$(COMMAND$) >= "VGA" THEN WIDTH 80, 50
    IF UCASE$(Video$) >= "CGA" THEN WIDTH 80, 25
    IF UCASE$(Video$) >= "EGA" THEN WIDTH 80, 43
    IF UCASE$(Video$) >= "VGA" THEN WIDTH 80, 50
    COLOR 7, 0
    LOCATE 1, 1, 0
    CLS

    LevelUp = 10
    BlocksLeft = 10
    DrawScrn

    GOSUB NewBlock
    PlayerScore = 0
    LOCATE 4, 10: PRINT LevelNumber
    LOCATE 7, 4: PRINT PlayerScore
    LOCATE 17, 5: COLOR 15: PRINT LevelUp - BlocksBusted
    Rotation = 1

    DO
    KEY(0) ON
    ON KEY(10) GOSUB EndTheProgram
    ON KEY(11) GOSUB RotateBlock
    ON KEY(12) GOSUB LeftBlock
    ON KEY(13) GOSUB RightBlock
    ON KEY(14) GOSUB DropBlock
    TextrisKey$ = INKEY$
    IF TextrisKey$ = CHR$(0) + "H" THEN GOSUB RotateBlock
    IF TextrisKey$ = CHR$(0) + "P" THEN GOSUB DropBlock
    IF TextrisKey$ = CHR$(0) + "K" THEN GOSUB LeftBlock
    IF TextrisKey$ = CHR$(0) + "M" THEN GOSUB RightBlock

    IF BlocksLeft = 22 THEN GOSUB NewBlock

    IF Endless = 0 THEN Rest .1 * LevelNumber ELSE Rest .3
    IF Endless = 0 THEN IF LevelNumber >= 10 THEN KEY(0) OFF: GOTO EndingOfGame
    KEY(0) OFF
    IF PlayerScore >= 999999999 THEN PlayerScore = 999999999
    IF LevelNumber >= 100 THEN LevelNumber = 100
    WHILE INKEY$ "": WEND

    IF BlockType = 1 AND Rotation = 1 THEN scrSav = SCREEN(BlockY + 4, BlockX): scrSavB = 0: scrSavC = 0: scrSavD = 0
    IF BlockType = 1 AND Rotation = 2 THEN scrSav = SCREEN(BlockY + 1, BlockX): scrSavB = SCREEN(BlockY + 1, BlockX + 1): scrSavC = SCREEN(BlockY + 1, BlockX + 2): scrSavD = SCREEN(BlockY + 1, BlockX + 3)

    IF BlockType = 2 AND Rotation = 1 THEN scrSav = SCREEN(BlockY + 3, BlockX): scrSavB = SCREEN(BlockY + 3, BlockX + 1): scrSavC = 0: scrSavD = 0
    IF BlockType = 2 AND Rotation = 2 THEN scrSav = SCREEN(BlockY + 2, BlockX): scrSavB = SCREEN(BlockY + 1, BlockX + 1): scrSavC = SCREEN(BlockY + 1, BlockX + 2): scrSavD = 0
    IF BlockType = 2 AND Rotation = 3 THEN scrSav = SCREEN(BlockY + 1, BlockX): scrSavB = SCREEN(BlockY + 3, BlockX + 1): scrSavC = 0: scrSavD = 0
    IF BlockType = 2 AND Rotation = 4 THEN scrSav = SCREEN(BlockY + 2, BlockX): scrSavB = SCREEN(BlockY + 2, BlockX + 1): scrSavC = SCREEN(BlockY + 2, BlockX + 2): scrSavD = 0

    IF BlockType = 3 AND Rotation = 1 THEN scrSav = SCREEN(BlockY + 3, BlockX): scrSavB = SCREEN(BlockY + 3, BlockX + 1): scrSavC = 0: scrSavD = 0
    IF BlockType = 3 AND Rotation = 2 THEN scrSav = SCREEN(BlockY + 2, BlockX): scrSavB = SCREEN(BlockY + 2, BlockX + 1): scrSavC = SCREEN(BlockY + 2, BlockX + 2): scrSavD = 0
    IF BlockType = 3 AND Rotation = 3 THEN scrSav = SCREEN(BlockY + 3, BlockX): scrSavB = SCREEN(BlockY + 1, BlockX + 1): scrSavC = 0: scrSavD = 0
    IF BlockType = 3 AND Rotation = 4 THEN scrSav = SCREEN(BlockY + 1, BlockX): scrSavB = SCREEN(BlockY + 1, BlockX + 1): scrSavC = SCREEN(BlockY + 2, BlockX + 2): scrSavD = 0

    IF BlockType = 4 AND Rotation = 1 THEN scrSav = SCREEN(BlockY + 2, BlockX): scrSavB = SCREEN(BlockY + 2, BlockX + 1): scrSavC = SCREEN(BlockY + 2, BlockX + 2): scrSavD = 0
    IF BlockType = 4 AND Rotation = 2 THEN scrSav = SCREEN(BlockY + 3, BlockX): scrSavB = SCREEN(BlockY + 2, BlockX + 1): scrSavC = 0: scrSavD = 0
    IF BlockType = 4 AND Rotation = 3 THEN scrSav = SCREEN(BlockY + 1, BlockX): scrSavB = SCREEN(BlockY + 2, BlockX + 1): scrSavC = SCREEN(BlockY + 1, BlockX + 2): scrSavD = 0
    IF BlockType = 4 AND Rotation = 4 THEN scrSav = SCREEN(BlockY + 2, BlockX): scrSavB = SCREEN(BlockY + 3, BlockX + 1): scrSavC = 0: scrSavD = 0

    IF BlockType = 5 THEN scrSav = SCREEN(BlockY + 2, BlockX): scrSavB = SCREEN(BlockY + 2, BlockX + 1): scrSavC = 0: scrSavD = 0

    IF BlockType = 6 AND Rotation = 1 THEN scrSav = SCREEN(BlockY + 2, BlockX): scrSavB = SCREEN(BlockY + 3, BlockX + 1): scrSavC = 0: scrSavD = 0
    IF BlockType = 6 AND Rotation = 2 THEN scrSav = SCREEN(BlockY + 2, BlockX): scrSavB = SCREEN(BlockY + 2, BlockX + 1): scrSavC = SCREEN(BlockY + 1, BlockX + 2): scrSavD = 0

    IF BlockType = 7 AND Rotation = 1 THEN scrSav = SCREEN(BlockY + 3, BlockX): scrSavB = SCREEN(BlockY + 2, BlockX + 1): scrSavC = 0: scrSavD = 0
    IF BlockType = 7 AND Rotation = 2 THEN scrSav = SCREEN(BlockY + 1, BlockX): scrSavB = SCREEN(BlockY + 2, BlockX + 1): scrSavC = SCREEN(BlockY + 2, BlockX + 1): scrSavD = 0

    IF scrSav > 175 OR scrSavB > 175 OR scrSavC > 175 OR scrSavD > 175 THEN
    GOSUB NewBlock

    ELSE
    EraseBlock
    BlockY = BlockY + 1
    DO UNTIL CHR$(scrSav) = " "
    scrSav = SCREEN(BlockY + 2, BlockX)
    LOCATE BlockY - 1, BlockX: PRINT " "
    LOOP
    DrawBlock
    END IF
    KEY(0) ON
    LOOP

    RotateBlock:
    KEY(0) OFF
    IF BlockType = 1 AND Rotation = 1 THEN LOCATE BlockY, BlockX: PRINT " ": LOCATE BlockY + 1, BlockX: PRINT " ": LOCATE BlockY + 2, BlockX: PRINT " ": LOCATE BlockY + 3, BlockX: PRINT " "
    IF BlockType = 1 AND Rotation = 2 THEN LOCATE BlockY, BlockX: PRINT " ": LOCATE BlockY, BlockX + 1: PRINT " ": LOCATE BlockY, BlockX + 2: PRINT " ": LOCATE BlockY, BlockX + 3: PRINT " "
    IF BlockType = 1 AND Rotation = 2 THEN scrSav = SCREEN(BlockY, BlockX): scrSavB = SCREEN(BlockY + 1, BlockX): scrSavC = SCREEN(BlockY + 2, BlockX): scrSavD = SCREEN(BlockY + 3, BlockX)
    IF BlockType = 1 AND Rotation = 1 THEN scrSav = SCREEN(BlockY, BlockX): scrSavB = SCREEN(BlockY, BlockX + 1): scrSavC = SCREEN(BlockY, BlockX + 2): scrSavD = SCREEN(BlockY, BlockX + 3)
    IF scrSav > 175 OR scrSavB > 175 OR scrSavC > 175 OR scrSavD > 175 THEN DrawBlock: RETURN
    IF BlockType = 1 AND Rotation = 1 AND BlockX 175 OR scrSavB > 175 OR scrSavC > 175 OR scrSavD > 175 THEN DrawBlock: RETURN
    IF BlockType = 2 AND Rotation = 1 AND BlockX 175 OR scrSavB > 175 OR scrSavC > 175 OR scrSavD > 175 THEN DrawBlock: RETURN
    IF BlockType = 3 AND Rotation = 1 AND BlockX 175 OR scrSavB > 175 OR scrSavC > 175 OR scrSavD > 175 THEN DrawBlock: RETURN
    IF BlockType = 4 AND Rotation = 1 AND BlockX 175 OR scrSavB > 175 OR scrSavC > 175 OR scrSavD > 175 THEN DrawBlock: RETURN
    IF BlockType = 6 AND Rotation = 1 AND BlockX 175 OR scrSavB > 175 OR scrSavC > 175 OR scrSavD > 175 THEN DrawBlock: RETURN
    IF BlockType = 7 AND Rotation = 1 AND BlockX "": WEND
    IF BlockType = 1 AND Rotation = 1 THEN scrSav = SCREEN(BlockY, BlockX - 1): scrSavB = SCREEN(BlockY + 1, BlockX - 1): scrSavC = SCREEN(BlockY + 2, BlockX - 1): scrSavD = SCREEN(BlockY + 3, BlockX - 1)
    IF BlockType = 1 AND Rotation = 2 THEN scrSav = SCREEN(BlockY, BlockX - 1): scrSavB = 0: scrSavC = 0: scrSavD = 0
    IF BlockType = 2 AND Rotation = 1 THEN scrSav = SCREEN(BlockY, BlockX - 1): scrSavB = SCREEN(BlockY + 1, BlockX - 1): scrSavC = SCREEN(BlockY + 2, BlockX - 1): scrSavD = 0
    IF BlockType = 2 AND Rotation = 2 THEN scrSav = SCREEN(BlockY, BlockX - 1): scrSavB = SCREEN(BlockY + 1, BlockX - 1): scrSavC = 0: scrSavD = 0
    IF BlockType = 2 AND Rotation = 3 THEN scrSav = SCREEN(BlockY, BlockX - 1): scrSavB = SCREEN(BlockY + 1, BlockX): scrSavC = SCREEN(BlockY + 2, BlockX): scrSavD = 0
    IF BlockType = 2 AND Rotation = 4 THEN scrSav = SCREEN(BlockY, BlockX + 1): scrSavB = SCREEN(BlockY + 1, BlockX - 1): scrSavC = 0: scrSavD = 0
    IF BlockType = 3 AND Rotation = 1 THEN scrSav = SCREEN(BlockY, BlockX): scrSavB = SCREEN(BlockY + 1, BlockX): scrSavC = SCREEN(BlockY + 2, BlockX - 1): scrSavD = 0
    IF BlockType = 3 AND Rotation = 2 THEN scrSav = SCREEN(BlockY, BlockX - 1): scrSavB = SCREEN(BlockY + 1, BlockX - 1): scrSavC = 0: scrSavD = 0
    IF BlockType = 3 AND Rotation = 3 THEN scrSav = SCREEN(BlockY, BlockX - 1): scrSavB = SCREEN(BlockY + 1, BlockX - 1): scrSavC = SCREEN(BlockY + 2, BlockX - 1): scrSavD = 0
    IF BlockType = 3 AND Rotation = 4 THEN scrSav = SCREEN(BlockY, BlockX - 1): scrSavB = SCREEN(BlockY + 1, BlockX + 1): scrSavC = 0: scrSavD = 0
    IF BlockType = 4 AND Rotation = 1 THEN scrSav = SCREEN(BlockY, BlockX): scrSavB = SCREEN(BlockY + 1, BlockX - 1): scrSavC = 0: scrSavD = 0
    IF BlockType = 4 AND Rotation = 2 THEN scrSav = SCREEN(BlockY, BlockX - 1): scrSavB = SCREEN(BlockY + 1, BlockX - 1): scrSavC = SCREEN(BlockY + 2, BlockX - 1): scrSavD = 0
    IF BlockType = 4 AND Rotation = 3 THEN scrSav = SCREEN(BlockY, BlockX - 1): scrSavB = SCREEN(BlockY + 1, BlockX): scrSavC = 0: scrSavD = 0
    IF BlockType = 4 AND Rotation = 4 THEN scrSav = SCREEN(BlockY, BlockX): scrSavB = SCREEN(BlockY + 1, BlockX - 1): scrSavC = SCREEN(BlockY + 2, BlockX): scrSavD = 0
    IF BlockType = 5 THEN scrSav = SCREEN(BlockY, BlockX - 1): scrSavB = SCREEN(BlockY + 1, BlockX - 1): scrSavC = 0: scrSavD = 0
    IF BlockType = 6 AND Rotation = 1 THEN scrSav = SCREEN(BlockY, BlockX - 1): scrSavB = SCREEN(BlockY + 1, BlockX - 1): scrSavC = SCREEN(BlockY + 2, BlockX): scrSavD = 0
    IF BlockType = 6 AND Rotation = 2 THEN scrSav = SCREEN(BlockY, BlockX): scrSavB = SCREEN(BlockY + 1, BlockX - 1): scrSavC = 0: scrSavD = 0
    IF BlockType = 7 AND Rotation = 1 THEN scrSav = SCREEN(BlockY, BlockX): scrSavB = SCREEN(BlockY + 1, BlockX - 1): scrSavC = SCREEN(BlockY + 2, BlockX - 1): scrSavD = 0
    IF BlockType = 7 AND Rotation = 2 THEN scrSav = SCREEN(BlockY, BlockX - 1): scrSavB = SCREEN(BlockY + 1, BlockX): scrSavC = 0: scrSavD = 0

    IF scrSav > 175 OR scrSavB > 175 OR scrSavC > 175 OR scrSavD > 175 THEN
    RETURN
    ELSE

    EraseBlock
    BlockX = BlockX - 1
    IF BlockX "": WEND
    IF BlockType = 1 AND Rotation = 1 THEN scrSav = SCREEN(BlockY, BlockX + 1): scrSavB = SCREEN(BlockY + 1, BlockX + 1): scrSavC = SCREEN(BlockY + 2, BlockX + 1): scrSavD = SCREEN(BlockY + 3, BlockX + 1)
    IF BlockType = 1 AND Rotation = 2 THEN scrSav = SCREEN(BlockY, BlockX + 4): scrSavB = 0: scrSavC = 0: scrSavD = 0
    IF BlockType = 2 AND Rotation = 1 THEN scrSav = SCREEN(BlockY, BlockX + 1): scrSavB = SCREEN(BlockY + 1, BlockX + 1): scrSavC = SCREEN(BlockY + 2, BlockX + 2): scrSavD = 0
    IF BlockType = 2 AND Rotation = 2 THEN scrSav = SCREEN(BlockY, BlockX + 3): scrSavB = SCREEN(BlockY + 1, BlockX + 1): scrSavC = 0: scrSavD = 0
    IF BlockType = 2 AND Rotation = 3 THEN scrSav = SCREEN(BlockY, BlockX + 2): scrSavB = SCREEN(BlockY + 1, BlockX + 2): scrSavC = SCREEN(BlockY + 2, BlockX + 2): scrSavD = 0
    IF BlockType = 2 AND Rotation = 4 THEN scrSav = SCREEN(BlockY, BlockX + 3): scrSavB = SCREEN(BlockY + 1, BlockX + 3): scrSavC = 0: scrSavD = 0
    IF BlockType = 3 AND Rotation = 1 THEN scrSav = SCREEN(BlockY, BlockX + 2): scrSavB = SCREEN(BlockY + 1, BlockX + 2): scrSavC = SCREEN(BlockY + 2, BlockX + 2): scrSavD = 0
    IF BlockType = 3 AND Rotation = 2 THEN scrSav = SCREEN(BlockY, BlockX + 1): scrSavB = SCREEN(BlockY + 1, BlockX + 3): scrSavC = 0: scrSavD = 0
    IF BlockType = 3 AND Rotation = 3 THEN scrSav = SCREEN(BlockY, BlockX + 2): scrSavB = SCREEN(BlockY + 1, BlockX + 2): scrSavC = SCREEN(BlockY + 2, BlockX + 2): scrSavD = 0
    IF BlockType = 3 AND Rotation = 4 THEN scrSav = SCREEN(BlockY, BlockX + 3): scrSavB = SCREEN(BlockY + 1, BlockX + 3): scrSavC = 0: scrSavD = 0
    IF BlockType = 4 AND Rotation = 1 THEN scrSav = SCREEN(BlockY, BlockX + 2): scrSavB = SCREEN(BlockY + 1, BlockX + 3): scrSavC = 0: scrSavD = 0
    IF BlockType = 4 AND Rotation = 2 THEN scrSav = SCREEN(BlockY, BlockX + 1): scrSavB = SCREEN(BlockY + 1, BlockX + 2): scrSavC = SCREEN(BlockY + 2, BlockX + 1): scrSavD = 0
    IF BlockType = 4 AND Rotation = 3 THEN scrSav = SCREEN(BlockY, BlockX + 3): scrSavB = SCREEN(BlockY + 1, BlockX + 2): scrSavC = 0: scrSavD = 0
    IF BlockType = 4 AND Rotation = 4 THEN scrSav = SCREEN(BlockY, BlockX + 2): scrSavB = SCREEN(BlockY + 1, BlockX + 2): scrSavC = SCREEN(BlockY + 2, BlockX + 2): scrSavD = 0
    IF BlockType = 5 THEN scrSav = SCREEN(BlockY, BlockX + 2): scrSavB = SCREEN(BlockY + 1, BlockX + 2): scrSavC = 0: scrSavD = 0
    IF BlockType = 6 AND Rotation = 1 THEN scrSav = SCREEN(BlockY, BlockX + 1): scrSavB = SCREEN(BlockY + 1, BlockX + 2): scrSavC = SCREEN(BlockY + 2, BlockX + 2): scrSavD = 0
    IF BlockType = 6 AND Rotation = 2 THEN scrSav = SCREEN(BlockY, BlockX + 3): scrSavB = SCREEN(BlockY + 1, BlockX + 2): scrSavC = 0: scrSavD = 0
    IF BlockType = 7 AND Rotation = 1 THEN scrSav = SCREEN(BlockY, BlockX + 2): scrSavB = SCREEN(BlockY + 1, BlockX + 2): scrSavC = SCREEN(BlockY + 2, BlockX + 1): scrSavD = 0
    IF BlockType = 7 AND Rotation = 2 THEN scrSav = SCREEN(BlockY, BlockX + 2): scrSavB = SCREEN(BlockY + 1, BlockX + 3): scrSavC = 0: scrSavD = 0

    IF scrSav > 175 OR scrSavB > 175 OR scrSavC > 175 OR scrSavD > 175 THEN
    RETURN
    ELSE

    EraseBlock
    BlockX = BlockX + 1
    IF BlockType = 1 AND BlockX >= 53 AND Rotation = 1 THEN BlockX = 53
    IF BlockType = 1 AND BlockX >= 50 AND Rotation = 2 THEN BlockX = 50
    IF BlockType = 2 AND BlockX >= 52 THEN BlockX = 52
    IF BlockType = 2 AND BlockX >= 51 AND Rotation = 2 THEN BlockX = 51
    IF BlockType = 2 AND BlockX >= 52 AND Rotation = 3 THEN BlockX = 52
    IF BlockType = 2 AND BlockX >= 51 AND Rotation = 4 THEN BlockX = 51
    IF BlockType = 3 AND BlockX >= 52 AND Rotation = 1 THEN BlockX = 52
    IF BlockType = 3 AND BlockX >= 51 AND Rotation = 2 THEN BlockX = 51
    IF BlockType = 3 AND BlockX >= 52 AND Rotation = 3 THEN BlockX = 52
    IF BlockType = 3 AND BlockX >= 51 AND Rotation = 4 THEN BlockX = 51
    IF BlockType = 4 AND BlockX >= 51 AND Rotation = 1 THEN BlockX = 51
    IF BlockType = 4 AND BlockX >= 51 AND Rotation = 2 THEN BlockX = 52
    IF BlockType = 4 AND BlockX >= 51 AND Rotation = 3 THEN BlockX = 51
    IF BlockType = 4 AND BlockX >= 51 AND Rotation = 4 THEN BlockX = 52
    IF BlockType = 5 AND BlockX >= 52 THEN BlockX = 52
    IF BlockType = 6 AND BlockX >= 52 AND Rotation = 1 THEN BlockX = 52
    IF BlockType = 6 AND BlockX >= 51 AND Rotation = 2 THEN BlockX = 51
    IF BlockType = 7 AND BlockX >= 52 AND Rotation = 1 THEN BlockX = 52
    IF BlockType = 7 AND BlockX >= 51 AND Rotation = 2 THEN BlockX = 51
    DrawBlock
    END IF
    KEY(0) ON
    RETURN

    DropBlock:
    KEY(0) OFF
    WHILE INKEY$ "": WEND

    IF BlockType = 1 AND Rotation = 1 THEN scrSav = SCREEN(BlockY + 4, BlockX): scrSavB = 0: scrSavC = 0: scrSavD = 0
    IF BlockType = 1 AND Rotation = 2 THEN scrSav = SCREEN(BlockY + 1, BlockX): scrSavB = SCREEN(BlockY + 1, BlockX + 1): scrSavC = SCREEN(BlockY + 1, BlockX + 2): scrSavD = SCREEN(BlockY + 1, BlockX + 3)
    IF BlockType = 2 AND Rotation = 1 THEN scrSav = SCREEN(BlockY + 3, BlockX): scrSavB = SCREEN(BlockY + 3, BlockX + 1): scrSavC = 0: scrSavD = 0
    IF BlockType = 2 AND Rotation = 2 THEN scrSav = SCREEN(BlockY + 2, BlockX): scrSavB = SCREEN(BlockY + 1, BlockX + 1): scrSavC = SCREEN(BlockY + 1, BlockX + 2): scrSavD = 0
    IF BlockType = 2 AND Rotation = 3 THEN scrSav = SCREEN(BlockY + 1, BlockX): scrSavB = SCREEN(BlockY + 3, BlockX + 1): scrSavC = 0: scrSavD = 0
    IF BlockType = 2 AND Rotation = 4 THEN scrSav = SCREEN(BlockY + 2, BlockX): scrSavB = SCREEN(BlockY + 2, BlockX + 1): scrSavC = SCREEN(BlockY + 2, BlockX + 2): scrSavD = 0
    IF BlockType = 3 AND Rotation = 1 THEN scrSav = SCREEN(BlockY + 3, BlockX): scrSavB = SCREEN(BlockY + 3, BlockX + 1): scrSavC = 0: scrSavD = 0
    IF BlockType = 3 AND Rotation = 2 THEN scrSav = SCREEN(BlockY + 2, BlockX): scrSavB = SCREEN(BlockY + 2, BlockX + 1): scrSavC = SCREEN(BlockY + 2, BlockX + 2): scrSavD = 0
    IF BlockType = 3 AND Rotation = 3 THEN scrSav = SCREEN(BlockY + 3, BlockX): scrSavB = SCREEN(BlockY + 1, BlockX + 1): scrSavC = 0: scrSavD = 0
    IF BlockType = 3 AND Rotation = 4 THEN scrSav = SCREEN(BlockY + 1, BlockX): scrSavB = SCREEN(BlockY + 1, BlockX + 1): scrSavC = SCREEN(BlockY + 2, BlockX + 2): scrSavD = 0
    IF BlockType = 4 AND Rotation = 1 THEN scrSav = SCREEN(BlockY + 2, BlockX): scrSavB = SCREEN(BlockY + 2, BlockX + 1): scrSavC = SCREEN(BlockY + 2, BlockX + 2): scrSavD = 0
    IF BlockType = 4 AND Rotation = 2 THEN scrSav = SCREEN(BlockY + 3, BlockX): scrSavB = SCREEN(BlockY + 2, BlockX + 1): scrSavC = 0: scrSavD = 0
    IF BlockType = 4 AND Rotation = 3 THEN scrSav = SCREEN(BlockY + 1, BlockX): scrSavB = SCREEN(BlockY + 2, BlockX + 1): scrSavC = SCREEN(BlockY + 1, BlockX + 2): scrSavD = 0
    IF BlockType = 4 AND Rotation = 4 THEN scrSav = SCREEN(BlockY + 2, BlockX): scrSavB = SCREEN(BlockY + 3, BlockX + 1): scrSavC = 0: scrSavD = 0
    IF BlockType = 5 THEN scrSav = SCREEN(BlockY + 2, BlockX): scrSavB = SCREEN(BlockY + 2, BlockX + 1): scrSavC = 0: scrSavD = 0
    IF BlockType = 6 AND Rotation = 1 THEN scrSav = SCREEN(BlockY + 2, BlockX): scrSavB = SCREEN(BlockY + 3, BlockX + 1): scrSavC = 0: scrSavD = 0
    IF BlockType = 6 AND Rotation = 2 THEN scrSav = SCREEN(BlockY + 2, BlockX): scrSavB = SCREEN(BlockY + 2, BlockX + 1): scrSavC = SCREEN(BlockY + 1, BlockX + 2): scrSavD = 0
    IF BlockType = 7 AND Rotation = 1 THEN scrSav = SCREEN(BlockY + 3, BlockX): scrSavB = SCREEN(BlockY + 2, BlockX + 1): scrSavC = 0: scrSavD = 0
    IF BlockType = 7 AND Rotation = 2 THEN scrSav = SCREEN(BlockY + 1, BlockX): scrSavB = SCREEN(BlockY + 2, BlockX + 1): scrSavC = SCREEN(BlockY + 2, BlockX + 1): scrSavD = 0

    IF scrSav > 175 OR scrSavB > 175 OR scrSavC > 175 OR scrSavD > 175 THEN
    GOSUB NewBlock

    ELSE
    EraseBlock
    BlockY = BlockY + 1
    DO UNTIL CHR$(scrSav) = " "
    scrSav = SCREEN(BlockY + 2, BlockX)
    LOCATE BlockY - 1, BlockX: PRINT " "
    LOOP
    DrawBlock
    END IF
    KEY(0) ON
    RETURN

    LevelPassed:
    COLOR 15, 0
    PlayerScore = PlayerScore + (LevelNumber * 10)
    BlocksBusted = 0
    LevelNumber = LevelNumber + 1
    LOCATE 4, 10: PRINT LevelNumber
    LevelUp = (LevelNumber * 10)
    BlocksLeft = LevelUp
    RETURN

    NewBlock:
    KEY(0) OFF
    WHILE INKEY$ "": WEND

    FOR Y = 3 TO 22
    FOR X = 1 TO WindowWidth
    LineBlock$ = LineBlock$ + CHR$(SCREEN(Y, X + 20))
    NEXT X
    IF INSTR(LineBlock$, " ") > 0 THEN
    LineBlock$ = ""
    ELSE
    FOR BlinkLine = 1 TO 14
    COLOR BlinkLine
    LOCATE Y, 21: PRINT LineBlock$
    Rest 2
    NEXT BlinkLine
    LineBlock$ = ""
    LOCATE Y, 21: PRINT STRING$(WindowWidth, " ")
    PlayerScore = PlayerScore + 10
    IF PlayerScore >= 999999999 THEN PlayerScore = 999999999
    IF LevelNumber >= 100 THEN LevelNumber = 100
    BlocksBusted = BlocksBusted + 1
    BlocksLeft = LevelUp - BlocksBusted
    IF BlocksLeft = 999999999 THEN PlayerScore = 999999999
    IF LevelNumber >= 100 THEN LevelNumber = 100
    LOCATE 7, 4: PRINT PlayerScore
    DrawBlock
    'Û ± ð é ÛÛÛÛ ±± ±±± ðð éé
    'Û ± ðð éé ± ± ± ðð éé
    'Û ±± ð é ±±± ±


    KEY(0) ON
    RETURN

    EndingOfGame:
    Ending
    EndTheProgram:
    SCREEN 0
    WIDTH 80, 25
    COLOR 7, 0
    LOCATE 1, 1, 0
    CLS
    PRINT
    PRINT "Thank you for playing Textris"
    PRINT "Your last score was "; PlayerScore; "pts"
    IF PlayerScore = 0 THEN PRINT "I guess you don't like my game!"
    IF PlayerScore = 1 THEN PRINT "Practice more often..."
    IF PlayerScore = 50 THEN PRINT "Getting there..."
    IF PlayerScore = 150 THEN PRINT "Not bad!"
    IF PlayerScore = 200 THEN PRINT "Good!"
    IF PlayerScore = 400 THEN PRINT "Excellent!"
    IF PlayerScore = 700 THEN PRINT "I can't beleive you played this long!"
    IF PlayerScore >= 1000 THEN PRINT "Supreme Textris Master!!"
    PRINT
    PRINT "By: Scape (C) 1995"
    PRINT
    PRINT
    PRINT
    SYSTEM
    LOCATE 1, 1: PRINT "Exit Failed!!"
    RETURN

    GameOver:
    LOCATE 2, 20: PRINT "ÚTextris" + STRING$(WindowWidth - 9, "Ä") + ""
    COLOR 9, 1
    FOR Y = 1 TO 20
    LOCATE Y + 2, 21: PRINT STRING$(WindowWidth, "")'""
    Rest 1
    NEXT
    X = 0
    LOCATE 12, 21 + INT((WindowWidth / 2) - 4): PRINT "GAME OVER"
    COLOR 15, 0
    LOCATE 23, 20: PRINT "À" + STRING$(WindowWidth, "Ä") + "Ù"
    P$ = ""
    DO UNTIL P$ = " "
    P$ = INKEY$
    COLOR X, 1
    X = X + 1: IF X >= 14 THEN X = 0
    LOCATE 12, 21 + INT((WindowWidth / 2) - 4): PRINT "GAME OVER"
    LOOP
    GOTO EndTheProgram

    Configuration:
    SCREEN 0
    WIDTH 80, 25
    COLOR 7, 0
    CLS
    PRINT "Video Type Selection"
    PRINT
    LOCATE 3, 3: COLOR 15, 5: PRINT "-=CGA=-"
    LOCATE 4, 1: COLOR 7, 0: PRINT "2 -=EGA=-"
    LOCATE 5, 1: COLOR 7, 0: PRINT "3 -=VGA/SVGA=-"
    COLOR 7, 0: LOCATE 3, 12: PRINT "(Default)": LOCATE 3, 1: PRINT "1"
    Video$ = ""
    DO UNTIL Video$ = "CGA" OR Video$ = "VGA" OR Video$ = "EGA"
    Video$ = INPUT$(1)
    IF Video$ = "2" THEN Video$ = "EGA"
    IF Video$ = "3" THEN Video$ = "VGA"
    IF Video$ = "1" THEN Video$ = "CGA"
    LOOP
    CLS
    PRINT "Textris Window Width (23 - 33) Default 33"
    PRINT
    INPUT "", WindowWidth
    IF WindowWidth > 33 THEN WindowWidth = 33
    IF WindowWidth = .5
    CalcDelay! = I!

    END FUNCTION

    DEFSNG A-Z
    SUB DrawBlock
    IF BlockType = 1 AND Rotation = 1 THEN LOCATE BlockY, BlockX: PRINT "Û": LOCATE BlockY + 1, BlockX: PRINT "Û": LOCATE BlockY + 2, BlockX: PRINT "Û": LOCATE BlockY + 3, BlockX: PRINT "Û"
    IF BlockType = 1 AND Rotation = 2 THEN LOCATE BlockY, BlockX: PRINT "Û": LOCATE BlockY, BlockX + 1: PRINT "Û": LOCATE BlockY, BlockX + 2: PRINT "Û": LOCATE BlockY, BlockX + 3: PRINT "Û"
    IF BlockType = 2 AND Rotation = 1 THEN LOCATE BlockY, BlockX: PRINT "": LOCATE BlockY + 1, BlockX: PRINT "": LOCATE BlockY + 2, BlockX: PRINT "": LOCATE BlockY + 2, BlockX + 1: PRINT ""
    IF BlockType = 2 AND Rotation = 2 THEN LOCATE BlockY, BlockX: PRINT "": LOCATE BlockY + 1, BlockX: PRINT ""
    IF BlockType = 2 AND Rotation = 3 THEN LOCATE BlockY, BlockX: PRINT "": LOCATE BlockY + 1, BlockX + 1: PRINT "": LOCATE BlockY + 2, BlockX + 1: PRINT "": LOCATE BlockY + 2, BlockX + 1: PRINT ""
    IF BlockType = 2 AND Rotation = 4 THEN LOCATE BlockY, BlockX + 2: PRINT "": LOCATE BlockY + 1, BlockX: PRINT ""
    IF BlockType = 3 AND Rotation = 1 THEN LOCATE BlockY, BlockX + 1: PRINT "±": LOCATE BlockY + 1, BlockX + 1: PRINT "±": LOCATE BlockY + 2, BlockX + 1: PRINT "±": LOCATE BlockY + 2, BlockX: PRINT "±"
    IF BlockType = 3 AND Rotation = 2 THEN LOCATE BlockY, BlockX: PRINT "±": LOCATE BlockY + 1, BlockX: PRINT "±±±"
    IF BlockType = 3 AND Rotation = 3 THEN LOCATE BlockY, BlockX: PRINT "±±": LOCATE BlockY + 1, BlockX: PRINT "±": LOCATE BlockY + 2, BlockX: PRINT "±"
    IF BlockType = 3 AND Rotation = 4 THEN LOCATE BlockY, BlockX: PRINT "±±±": LOCATE BlockY + 1, BlockX + 2: PRINT "±"
    IF BlockType = 4 AND Rotation = 1 THEN LOCATE BlockY, BlockX + 1: PRINT "": LOCATE BlockY + 1, BlockX: PRINT "": LOCATE BlockY + 1, BlockX + 1: PRINT "": LOCATE BlockY + 1, BlockX + 2: PRINT ""
    IF BlockType = 4 AND Rotation = 2 THEN LOCATE BlockY, BlockX: PRINT "": LOCATE BlockY + 1, BlockX: PRINT "": LOCATE BlockY + 2, BlockX: PRINT ""
    IF BlockType = 4 AND Rotation = 3 THEN LOCATE BlockY, BlockX: PRINT "": LOCATE BlockY + 1, BlockX + 1: PRINT ""
    IF BlockType = 4 AND Rotation = 4 THEN LOCATE BlockY, BlockX + 1: PRINT "": LOCATE BlockY + 1, BlockX: PRINT "": LOCATE BlockY + 2, BlockX + 1: PRINT ""
    IF BlockType = 5 THEN LOCATE BlockY, BlockX: PRINT "": LOCATE BlockY + 1, BlockX: PRINT "":
    IF BlockType = 6 AND Rotation = 1 THEN LOCATE BlockY, BlockX: PRINT "ð": LOCATE BlockY + 1, BlockX: PRINT "ðð": LOCATE BlockY + 2, BlockX + 1: PRINT "ð"
    IF BlockType = 6 AND Rotation = 2 THEN LOCATE BlockY, BlockX + 1: PRINT "ðð": LOCATE BlockY + 1, BlockX: PRINT "ðð"
    IF BlockType = 7 AND Rotation = 1 THEN LOCATE BlockY, BlockX + 1: PRINT "é": LOCATE BlockY + 1, BlockX: PRINT "éé": LOCATE BlockY + 2, BlockX: PRINT "é"
    IF BlockType = 7 AND Rotation = 2 THEN LOCATE BlockY, BlockX: PRINT "éé": LOCATE BlockY + 1, BlockX + 1: PRINT "éé"
    END SUB

    SUB DrawScrn
    COLOR 15, 1
    LOCATE 25, 1: PRINT " Textris - Text Mode Version "
    VIEW PRINT 1 TO 25
    LOCATE 24, 1: PRINT "ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ"
    COLOR Foregrnd, Backgrnd
    FOR X = 1 TO 80
    FOR Y = 1 TO 23
    LOCATE Y, X: PRINT CHR$(176)
    NEXT Y
    NEXT X
    COLOR 15, 0
    LOCATE 3, 67: PRINT "ÚÄÄÄÄÄÄÄÄÄÄ"
    LOCATE 4, 67: PRINT "F10 = QUIT"
    LOCATE 5, 67: PRINT "ÀÄÄÄÄÄÄÄÄÄÄÙ"
    LOCATE 3, 3: PRINT "ÚStatusÄÄÄ"
    LOCATE 4, 3: PRINT "Level: "
    LOCATE 5, 3: PRINT "ÃÄÄÄÄÄÄÄÄÄÄÄ"
    LOCATE 6, 3: PRINT "Score: "
    LOCATE 7, 3: PRINT " "
    LOCATE 8, 3: PRINT "ÀÄÄÄÄÄÄÄÄÄÄÄÙ"
    LOCATE 10, 3: PRINT "ÚControlsÄ"
    LOCATE 11, 3: PRINT "Numpad: "
    LOCATE 12, 3: PRINT " Up, Dn, "
    LOCATE 13, 3: PRINT " Lt, Rt "
    LOCATE 14, 3: PRINT "ÀÄÄÄÄÄÄÄÄÄÄÄÙ"
    LOCATE 16, 3: PRINT "ÚLevel UpÄ"
    LOCATE 17, 3: PRINT " "
    LOCATE 18, 3: PRINT "ÀÄÄÄÄÄÄÄÄÄÄÄÙ"
    LOCATE 2, 20: PRINT "ÚTextris" + STRING$(WindowWidth - 9, "Ä") + ""
    FOR Y = 1 TO 21
    LOCATE Y + 2, 20: PRINT "" + STRING$(WindowWidth, " ") + ""
    NEXT
    LOCATE 23, 20: PRINT "À" + STRING$(WindowWidth, "Ä") + "Ù"
    TimesCrazyDone = 0
    DO UNTIL TimesCrazyDone = Difficulty
    DO UNTIL LEN(CrazyBar$) = WindowWidth
    RANDOMIZE TIMER
    CrazyBar = INT(RND * 12) + 1
    IF CrazyBar = 1 THEN CrazyBar$ = CrazyBar$ + "Û"
    IF CrazyBar = 2 THEN CrazyBar$ = CrazyBar$ + ""
    IF CrazyBar = 3 THEN CrazyBar$ = CrazyBar$ + "±"
    IF CrazyBar = 4 THEN CrazyBar$ = CrazyBar$ + ""
    IF CrazyBar = 5 THEN CrazyBar$ = CrazyBar$ + "é"
    IF CrazyBar = 6 THEN CrazyBar$ = CrazyBar$ + "ð"
    IF CrazyBar = 7 THEN CrazyBar$ = CrazyBar$ + ""
    IF CrazyBar = 8 THEN CrazyBar$ = CrazyBar$ + "Î"
    IF CrazyBar = 9 THEN CrazyBar$ = CrazyBar$ + "ê"
    IF CrazyBar = 10 THEN CrazyBar$ = CrazyBar$ + " "
    IF CrazyBar = 11 THEN CrazyBar$ = CrazyBar$ + " "
    IF CrazyBar = 12 THEN CrazyBar$ = CrazyBar$ + " "
    LOOP
    LOCATE 22 - CrazyBarDiff, 21: PRINT CrazyBar$
    CrazyBarDiff = CrazyBarDiff + 1
    TimesCrazyDone = TimesCrazyDone + 1
    CrazyBar$ = ""
    LOOP
    END SUB

    SUB Ending
    SCREEN 0
    WIDTH 80, 25
    COLOR 7, 0
    CLS
    PRINT " ßÜ Ü ÛÛÛÛÜ Ü Ü Ü ÜÛ Ü Ü ±±±"
    PRINT " ±±± Û Û Û Û Û Û Û ÛÛ Û Û ±±±"
    PRINT "±±±± ßÛ Û Û Û Û Û Ü Û ÛÛ ÛÛ Û Û ÛÛÛ±±±±±±"
    PRINT "±±± Û ßÛÛÛÛ Û Û Û Û Û Û Û Û Û Û ÛÛ±±±±±±"
    PRINT " ±Û Üß ÛÜ ÜÛ Û Û Û Û Û Û ÛÛ±±±±±±"
    PRINT " ±±±ÛÛ ßßß ß ß Û ÛÛ ß ÛÛÛ±±±±±±"
    PRINT " ±±±±ÛÛ ±±±"
    PRINT " ±±±ÛÛ ±±±"
    PRINT " ±±±ÛÛ ÛÛÛÛÛÛÛÛ ±±±±"
    PRINT " ±±±ÛÛ ÛÛÛÛÛÛ ±±±±"
    PRINT "±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±± ±±± ÛÛ"
    PRINT " ±±"
    PRINT " ±±±±±±"
    PRINT "±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±± ±±± ±±±±±±"
    PRINT " ±±"
    PRINT "± ±±"
    PRINT "±±±± ±±±±±±±±Û"
    PRINT "±±±±±±±±±±± ±±±±±±±±±Û"
    PRINT " ±Û"
    PRINT "ÛÛ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ ÛÛÛÛÛÛÛÛÛÛÛÛ"
    PRINT "±Û ÛÛÛÛ"
    WHILE INKEY$ "": WEND
    P$ = INPUT$(1)
    END SUB

    SUB EraseBlock
    IF BlockType = 1 AND Rotation = 1 THEN LOCATE BlockY, BlockX: PRINT " ": LOCATE BlockY + 1, BlockX: PRINT " ": LOCATE BlockY + 2, BlockX: PRINT " ": LOCATE BlockY + 3, BlockX: PRINT " "
    IF BlockType = 1 AND Rotation = 2 THEN LOCATE BlockY, BlockX: PRINT " ": LOCATE BlockY, BlockX + 1: PRINT " ": LOCATE BlockY, BlockX + 2: PRINT " ": LOCATE BlockY, BlockX + 3: PRINT " "
    IF BlockType = 2 AND Rotation = 1 THEN LOCATE BlockY, BlockX: PRINT " ": LOCATE BlockY + 1, BlockX: PRINT " ": LOCATE BlockY + 2, BlockX: PRINT " ": LOCATE BlockY + 2, BlockX + 1: PRINT " "
    IF BlockType = 2 AND Rotation = 2 THEN LOCATE BlockY, BlockX: PRINT " ": LOCATE BlockY + 1, BlockX: PRINT " "
    IF BlockType = 2 AND Rotation = 3 THEN LOCATE BlockY, BlockX: PRINT " ": LOCATE BlockY + 1, BlockX + 1: PRINT " ": LOCATE BlockY + 2, BlockX + 1: PRINT " ": LOCATE BlockY + 2, BlockX + 1: PRINT " "
    IF BlockType = 2 AND Rotation = 4 THEN LOCATE BlockY, BlockX + 2: PRINT " ": LOCATE BlockY + 1, BlockX: PRINT " "
    IF BlockType = 3 AND Rotation = 1 THEN LOCATE BlockY, BlockX + 1: PRINT " ": LOCATE BlockY + 1, BlockX + 1: PRINT " ": LOCATE BlockY + 2, BlockX + 1: PRINT " ": LOCATE BlockY + 2, BlockX: PRINT " "
    IF BlockType = 3 AND Rotation = 2 THEN LOCATE BlockY, BlockX: PRINT " ": LOCATE BlockY + 1, BlockX: PRINT " "
    IF BlockType = 3 AND Rotation = 3 THEN LOCATE BlockY, BlockX: PRINT " ": LOCATE BlockY + 1, BlockX: PRINT " ": LOCATE BlockY + 2, BlockX: PRINT " "
    IF BlockType = 3 AND Rotation = 4 THEN LOCATE BlockY, BlockX: PRINT " ": LOCATE BlockY + 1, BlockX + 2: PRINT " "
    IF BlockType = 4 AND Rotation = 1 THEN LOCATE BlockY, BlockX + 1: PRINT " ": LOCATE BlockY + 1, BlockX: PRINT " ": LOCATE BlockY + 1, BlockX + 2: PRINT " ": LOCATE BlockY + 1, BlockX + 1: PRINT " "
    IF BlockType = 4 AND Rotation = 2 THEN LOCATE BlockY, BlockX: PRINT " ": LOCATE BlockY + 1, BlockX: PRINT " ": LOCATE BlockY + 2, BlockX: PRINT " "
    IF BlockType = 4 AND Rotation = 3 THEN LOCATE BlockY, BlockX: PRINT " ": LOCATE BlockY + 1, BlockX + 1: PRINT " "
    IF BlockType = 4 AND Rotation = 4 THEN LOCATE BlockY, BlockX + 1: PRINT " ": LOCATE BlockY + 1, BlockX: PRINT " ": LOCATE BlockY + 2, BlockX + 1: PRINT " "
    IF BlockType = 5 THEN LOCATE BlockY, BlockX: PRINT " ": LOCATE BlockY + 1, BlockX: PRINT " ":
    IF BlockType = 6 AND Rotation = 1 THEN LOCATE BlockY, BlockX: PRINT " ": LOCATE BlockY + 1, BlockX: PRINT " ": LOCATE BlockY + 2, BlockX + 1: PRINT " "
    IF BlockType = 6 AND Rotation = 2 THEN LOCATE BlockY, BlockX + 1: PRINT " ": LOCATE BlockY + 1, BlockX: PRINT " "
    IF BlockType = 7 AND Rotation = 1 THEN LOCATE BlockY, BlockX + 1: PRINT " ": LOCATE BlockY + 1, BlockX: PRINT " ": LOCATE BlockY + 2, BlockX: PRINT " "
    IF BlockType = 7 AND Rotation = 2 THEN LOCATE BlockY, BlockX: PRINT " ": LOCATE BlockY + 1, BlockX + 1: PRINT " "
    END SUB

    DEFINT A-Z
    'Rest:
    ' pauses the program
    SUB Rest (T!)
    DO
    D! = D! + 1
    LOOP UNTIL D! >= MachSpeed / T!
    END SUB

    DEFSNG A-Z
    SUB TitleScreen
    COLOR 15, 0
    CLS
    LOCATE 4, 1: PRINT "ú ú"
    LOCATE 5, 1: PRINT "ù ù"
    LOCATE 6, 1: PRINT ". ."
    LOCATE 7, 1: PRINT ": :"
    LOCATE 8, 1: PRINT " "
    LOCATE 9, 1: PRINT "ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ"
    LOCATE 17, 1: PRINT "ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ"
    LOCATE 18, 1: PRINT " "
    LOCATE 19, 1: PRINT ": :"
    COLOR 8, 0: LOCATE 19, 6: PRINT "Textris was originally coded by: Anthony Gornicki for Scape (C) 1995"
    COLOR 15, 0
    LOCATE 20, 1: PRINT ". ."
    LOCATE 21, 1: PRINT "ù ù"
    LOCATE 22, 1: PRINT "ú ú"

    COLOR 15, 1
    FOR Y = 10 TO 16
    FOR X = 1 TO 80
    LOCATE Y, X: PRINT " "
    NEXT X
    NEXT Y
    COLOR 4, 1: LOCATE 11, 1: PRINT " ÛßßÛßßÛ ÛßßßÛ ßÛ Ûß ÛßßÛßßÛ ßÛßßßÛ ÛßÛßÛ ÛßßßÛ"
    COLOR 3, 1: LOCATE 12, 1: PRINT " Û Û Ü Û Û Û ÜÛÜÜÜÛ Û ÛÜÜÜÜ"
    COLOR 9, 1: LOCATE 13, 1: PRINT " Û ÛßßßÛ Û Û Û ßÜ Û Û"
    COLOR 6, 1: LOCATE 14, 1: PRINT " Û Û Û Û Û Û ßÜ Û Û"
    COLOR 8, 1: LOCATE 15, 1: PRINT " Û ÛÜÜÜÛ ÜÛ ÛÜ Û ÜÛÜ ÜÛÜ ÛÜÛÜÛ ÛÜÜÜÛ"
    END SUB

    ----End Textris.bas----

  22. I like ICQ! on AOL Trying To Unify AIM And ICQ Services · · Score: 1

    I really like the fact that in ICQ you can switch between AIM-style and ICQ-style messaging. Personally I like the ICQ-style because there is not such an annoying blinking effect as with in AIM. That is one big reason why I want to use ICQ mainly.

    If anyone wants to petition AOL to make the blinking in AIM an option, or less annoying, please go here: http://www3.sympatico.ca/anthonyg/aimpetition.html

  23. I'd rather buy a new CPU than change my RAM on Real Review of DDR Mobo · · Score: 1

    10-15% is a small speed increase, replacing my CPU for a 30% speed boost would be cheaper and more effective than buying 256MB of new RAM.

  24. Not raw speed... on 1.13GHz Pentium3 Processors Unstable? Answer:Yes · · Score: 1

    I don't think that all Intel cares about is raw speed... The Pentium 4 is apparently 20% slower than the Pentium 3 at the same clock speed.

  25. Try this on Windows ME - The End Of UMSDOS And BeOSfs Over Vfat? · · Score: 1
    Try Start -> Programs -> Accessories -> Command Prompt

    Or you can always get a third party shell such as BASH

    Normally a administrator (regarding Windows) often uses a boot disk to get to the command prompt.

    You can always make an option in your Autoexec.bat to check if you're holding down a key to bring you to the command prompt, or to use the Choice command to prompt you to continue running Windows or launch a shell. (That is, if the command still exists in WinME)

    I understand this isn't easy for the average user to do, but using the command prompt is considered an advanced feature to the targeted Windows ME market.

    I hope this helps anyone