Want to read Slashdot from your mobile device? Point it at m.slashdot.org and keep reading!


Forgot your password?
Programming Amiga OS X Operating Systems IT Technology

Scripting In Commodore BASIC For Windows & Linux 213

SomeoneGotMyNick writes "Someone more nostalgic than I am, and with a lot of time on their hands, had created a scripting language based on Commodore BASIC for Mac OS X. They recently finished a version that works on Windows and Linux. You can pass the text of a BASIC program as a parameter to the program. I found it odd that it took 1.8 MB of source code to compile to an interpreter that used to fit in 8K of ROM space. If this ever becomes popular, perhaps we'll see Obfuscated CBM BASIC contests." In a simliar vein, in the comments someone points out what is essentially an open source AmigaOS Classic.
This discussion has been archived. No new comments can be posted.

Scripting In Commodore BASIC For Windows & Linux

Comments Filter:
  • TI Basic (Score:2, Interesting)

    by mfh ( 56 )

    I remember coding four pages from 99er, to make a little box go from one side of the screen to the other and change colors, while playing a midi tune. More serious business was the epic dungeon text adventures!

    Now of course this would be nice to have on Linux.

    • Re:TI Basic (Score:4, Informative)

      by pilgrim23 ( 716938 ) on Tuesday November 04, 2008 @05:51PM (#25633303)

      plugh! or was it xyzzy? :)
      there are several Apple II emulators that allow programming in Apple Basic or even Merlin Assembler (65816) for both Mac and Windows. Sweet16 is the best of OS X (a port of Bernie ][ the Rescue from BeOS; originally on Mac Classic), XGS, KEGS and many others are also out there...

      CALL -151

    • Re: (Score:3, Interesting)

      by jojisan ( 465449 )

      Was that a stock 99-4A or did you have the extended memory cartridge?
      I really do miss call sprite...

      • Re:TI Basic (Score:5, Informative)

        by mfh ( 56 ) on Tuesday November 04, 2008 @05:59PM (#25633425) Homepage Journal

        Was that a stock 99-4A or did you have the extended memory cartridge?

        I had the 10 ton silver expansion box! 32k baby!!! It was the BEST! :) With the Speech Synthesizer to boot! Doc Watson makes me cry when I think about how much that thing cost me... right out of pocket too from my paper route!!

        This particular code made use of CALL SPRITE, but also had the most advanced calls available. Man that brings back memories...


        The cartridge was Extended Basic, which was totally elite at the time. :P

        We were all designing color output, while the poor VIC-20 guys were still monochrome.

        I still remember the text adventure, where if you type look up, a piano falls on your head. I think it was called Asylum or something? Man that is going way back to the summer of 1983, if memory serves.

        • Re: (Score:3, Interesting)

          I was in the Apple store, asking a Genius why Ms. Pac-Man, which ran on an Atari 2600, is taking up almost 20 megabytes on my iPod Nano. He told me it's because they have to fit all those in-game sound effects into the download. Pure genius.
        • We were all designing color output, while the poor VIC-20 guys were still monochrome.

          VIC-20 gave their users black and white monitors? They were lucky! We only had black, so we had to guess which characters where showing based on electromagnetic radiation.

    • Re:TI Basic (Score:5, Funny)

      by aardwolf64 ( 160070 ) on Tuesday November 04, 2008 @06:02PM (#25633477) Homepage

      I had to get my dad to program the dungeon text adventures, so it wouldn't spoil everything for me. There's just something about typing everything that could happen to you that ruins the game.

      • Re:TI Basic (Score:5, Funny)

        by lxs ( 131946 ) on Tuesday November 04, 2008 @08:32PM (#25635207)

        I used to have a book with type-in adventures where they obfuscated all the strings by shifting them one character precisely to counter that problem.

        Oh and typing in five pages of numbers representing binary code was fun. There were actually checksums printed at the end of each line and a little program showed you the checksums in the corner of the screen after entering each line of code.

        Man I feel old. You young whippersnappers don't know how good you have it with your iPhones and your WiFi.

        • I'm still trying to get my hands on the old Arcade Explorers books. Interesting concept - choose your own adventure, and your choices determine the parameters of the game you type in (via different sections of code). Of course the games were simple, but still neat for their time.
      • by raddan ( 519638 )
        I discovered this, too. My parents bought me a book called "Great Games for the TI-99/4A". I still have it floating around somewhere. Unfortunately, you figured out exactly what _not_ to do by having to program in every permutation of death. But there were other games-- there was an Asteroids clone, if I remember correctly. Of course, I had to write these things multiple times-- the external 5 1/4" floppy drive seemed to only excel at losing data.
    • Re: (Score:3, Interesting)

      I remember a similar demo in the TI/994A Reference Manual. It also had a program to re-define a character to make a little jumping man in an 8x16 grid. One of my first programs was to make a running man move across the screen based on the code in the reference manual.

  • by Thelasko ( 1196535 ) on Tuesday November 04, 2008 @05:46PM (#25633231) Journal
    When will somebody port Radar Rat Race [wikipedia.org] to Windows or Linux?
  • READY. (Score:3, Funny)

    by F-3582 ( 996772 ) on Tuesday November 04, 2008 @05:49PM (#25633269)
    10 FORA=1TO300
    20 PRINT"YAY!"
    30 NEXT
  • Why it's 1.8MB (Score:5, Insightful)

    by Anonymous Coward on Tuesday November 04, 2008 @05:49PM (#25633273)

    It turns out that this is just a disassembly of the interpreter translated into C. The file is so large because it has lots of really long computer-generated symbols.

    It's a shame that this is not a reimplementation of BASIC in C.


  • by GrpA ( 691294 ) on Tuesday November 04, 2008 @05:50PM (#25633295)

    I guess basic is basic unless it's on a machine you're familiar with... I find Freebasic ( www.freebasic.net ) useful, probably because I came from the same era and did all my programming back then too, although I used a Spectrum and I'd never want to have to use that sort of keyboard again.

    Freebasic is a fairly recent compiler that makes pretty neat code and has all the common C calls available to it too as well as being able to process native Qbasic programs (if you migrated from the C64 type basic to the PC later) without many of the limitations and nearly complete compatability.

    It also allows cross-scripting between Mac, PC and Linux with the same program which I find useful too.



    ps. Basic may not be dead, but you still get funny looks when people see you programming in it. I think some consider it even more ancient and antiquated than cobol (which it's not).

  • Commodore BASIC (Score:5, Insightful)

    by hpa ( 7948 ) on Tuesday November 04, 2008 @05:51PM (#25633305) Homepage

    I have to say, Commodore BASIC was one of the worst BASIC interpreters available in the "home computer" market. It's pretty clear the C64 was really a game console with a keyboard, so it could be (very successfully, and legitimately so) sold as a computer. If you actually wanted the C64 to do anything interesting, you had the choice of assembly, or BASIC that looked like assembly but ran like crap. As far as I can tell, the C64 BASIC didn't use any of the techniques used by other BASICs from the same era to not run like a total dog.

    Don't get me wrong, the C64 was a great machine. It just wasn't a great machine for BASIC programming.

    • Re:Commodore BASIC (Score:4, Interesting)

      by decipher_saint ( 72686 ) on Tuesday November 04, 2008 @05:58PM (#25633421)

      Compared to...?

      I'm actually quite curious what the differences would be that would make it a bad interpreter.

      C64 was my first exposure to programming (I was 8 when I got my hot little hands on it), and not having tried anything else from that particular era of home computing I don't have a yardstick to measure that sort of thing.

      So please, tell me more :-)

      • Re:Commodore BASIC (Score:5, Informative)

        by hpa ( 7948 ) on Tuesday November 04, 2008 @06:40PM (#25633971) Homepage

        A few things that made Commodore BASIC slow compared to some of the BASICs of the time:

        1. A lot of parsing was done at runtime, rather than at entry time or program startup time. This meant that a lot of work got done over and over rather than once per execution, and also encouraged practices that made programs hard to read, like omitting comments and whitespace.
        2. No support for integer-only arithmetic.
        3. Very few high-level constructs. This didn't just turn programs into a mess of POKE statements, but frequently meant that a lot of them were needed -- all of which involved two floating-point to integer conversions to set a single byte.

        Most BASICs at the time would at least tokenize at entry time, and many even converted programs to P-code for execution. It was still much slower than true assembly, but it wasn't anywhere near as bad as the CBM basic. Similarly, most (but again, not all) BASICs of the time supported integer-only arithmetic at least as an option.

        I have to admit to being a bit spoiled at the time, since I first learned to program on the Swedish ABC80 [abc80.org] computer, which had a very fast BASIC interpreter. Its follower, ABC800, even had a decent collection of high-level programming constructs in its BASIC. Too bad neither had acceptable graphics, nor a reasonable price point for home use (they ended up being sold mostly into schools and small offices.)

        • Re:Commodore BASIC (Score:5, Informative)

          by BitterOak ( 537666 ) on Tuesday November 04, 2008 @08:04PM (#25634875)

          No support for integer-only arithmetic.

          Actually, that isn't true. You could specify integer variables by suffixing them with a percent sign (eg. i%=1). But most people were lazy and omitted the percent sign, so their programs ended up doing a lot of floating point math unnecessarily.

          • Re: (Score:3, Informative)

            Additionally, Commodore BASIC _did_ tokenize input at data entry time.

            That's how the "shortcut" keywords worked -- PRINT's shortcut was P-shift-R (graphical underscore-like character), and not uncoincidentally, that was also the token for the PRINT statement.

            I'm not sure the grandparent is, in fact, talking about CBM BASIC 2.0. :)

            (which, don't get me wrong, sucked -- but it's not like AppleSoft BASIC was any better. Or Timex-Sinclair BASIC. Let's see. What BASIC is he referring to that has data structures a

        • by SurturZ ( 54334 )

          encouraged practices that made programs hard to read, like omitting comments and whitespace.

          I think that is a bit unfair. Given the limited memory of the C64, best programming practice was to omit comments in favour of code. Remember, C64 BASIC was interpreted, not compiled, so comments chewed up memory... memory measured in KILObytes. Comments (actually, they were called REMarks back then) were a luxury.

          I was a bit young to do any serious programming on the C64, but I do remember my father rewriting a line

      • I guess all the poor kids were using the Aquarius from Mattel, or any one of several other competing systems all based on the Zilog Z80 processor. This was the first time I came in contact with anything from "Microsoft"

      • Being less talented than your average /.er, Commodore *64* basic reduced me to whimpers at that tender age. I pulled out all the stops and mortgaged my childhood in chores to upgrade to the Commodore 128, and that is basically the best value in an upgrade I'll ever see. Helped by the extra passage of years, on the 128 I made maze programs, a Dodge-The-Mall-Traffic Simulator as a joke, Ethnic dialects of Eliza including the Angry New Yorker, and a few quasi-utilities that were more basic concept exercises. T

        • You young whippersnapper....

          I became proficient in Commodore BASIC with my VIC-20. We HAD to PEEK and POKE everything and tighten our belts when saving RAM.

          We also had to remap entire character sets to get hi-res graphics.

          The C64 made hi-res graphics easier to manage than that, even requiring continued use of PEEK and POKE.

    • Re: (Score:3, Interesting)

      by LWATCDR ( 28044 )

      Actually Atari Basic was arguably worse the Basic 2.0.
      Atari Basic had totally none standard String handling.
      C64 Basic lacked extensions for graphics and sound but other than that it wasn't terrible.

      • Actually Atari Basic was arguably worse the Basic 2.0. Atari Basic had totally none standard String handling. C64 Basic lacked extensions for graphics and sound but other than that it wasn't terrible.

        Atari BASIC was no worse than a lot of 8-bit BASICs. Nothing amazing- it lacked structured programming beyond GOTO (but then so did most 8-bits apart from the BBC Micro) and it wasn't too fast, but it was respectable enough.

        Yeah, the string handling was a bit nonstandard (and slightly annoying in some ways), but that was hardly the end of the world. Supported lettered device handler names and access to drivers via XIO. I'd take that over a mess of POKEs and control characters for even the most simple faci

    • by ghjm ( 8918 )

      Is this still going around? It's been 30 years.

      Yes, Commodore BASIC was slower than integer BASIC on the Apple ][. That's because Commodore BASIC used all floating point numbers. It was the same speed as Applesoft BASIC, since both of them came from the same Microsoft codebase and ran on the same CPU.

      So unless you're comparing Commodore BASIC to Apple Integer BASIC, what are you talking about?

    • How would that compare to a TRS-80... I grew up on that thing and never touched a C64.

    • I'd agree with you except that my Mom wrote her master's thesis on our C64 when I was 14 or 15. I don't think she could have done it on a Nintendo.
      (What was a it called? Speedscript?)

    • I agree that Commodore BASIC was horrible. I first learned BASIC on a Commodore PET 3008 and it was very limited unless you started POKEing into memory. Sinclair BASIC for the ZX81 (my first computer) wasn't much better. The best BASIC of the era came on the BBC Micro which supported REPEAT UNTIL loops, PROCs and so on so you didn't have to write code full of GOTOs. Oh, and it was easily the fastest machine on the block for years after release despite being based on the 6502 just as the CBM machines wer

    • Re:Commodore BASIC (Score:4, Interesting)

      by ACMENEWSLLC ( 940904 ) on Tuesday November 04, 2008 @07:26PM (#25634479) Homepage

      I learned BASIC on an Apple and then moved to the C16 then to a C128 with C64 embedded. I really enjoyed BASIC on the Commodore platform. I loved POKE and PEEK. The with my Super Snapshot card I could get into a pretty good machine language decompiler. From there I could create programs in the $c000 range, store them to a floppy, and sys them. I loved monitoring the raster ($d018 or somewhere close) and changing it's color when it's at various positions to create screenshots better than what the C64 normally allowed.

      I never have got as deep with the x86 platform.

      The thing I've found with most emulators is that this trickery just doesn't work right. A lot of it depended on the set Mhz rate of the hardware.

      I find it odd as many fanboys of the C64 as there are, why not embed one onto a USB dongle. The other end with a RS232C cord?
          Something like this http://www.vesalia.de/e_c64dtv%5B5732%5D.htm?slc=us [vesalia.de] ported for us programmer types.

    • The Vic-20 was the wo-
      rst of both worlds,
      bad games, crappy basi
      c, and only 22 columns
      across. Oh yea, and a
      300-baud modem and no
      disk drive, just casse
      tte. Still, INFOCOM h
      ad a few good text adv
      entures on it.

  • Why? You can already download a C64 emulator for your chosen platform and use REAL Commodore BASIC.

  • If you have any of those old CBM-BASIC listings from 80's computing magazines, it's full of POKE x,y statements (and sometimes the program is just a hex loader with bunch of READ...DATAs). So I'm really not so sure of the value of this experiment.

    (One of the longest "commercial" CBM-BASIC programs I remember - that actually used it for lots of things - was Sid Meier's Pirates! [wikipedia.org]. (Haven't tested the newest Remake - I did like Pirates Gold!, the first remake, a lot)

  • by sucker_muts ( 776572 ) <`moc.liamtoh' `ta' `nvp_rekcus'> on Tuesday November 04, 2008 @05:58PM (#25633407) Homepage Journal
    I found it odd that it took 1.8 MB of source code to compile to an interpreter that used to fit in 8K of ROM space

    Don't forget that the commodore cpu was 8 bit and current cpu's are 32 or 64 bit: Most of the commands were 8 bit and their equivalents are bigger nowadays. That explains the 8KB of ROM

    And they did not need fancy memory protection stuff, they hacked straight into the hardware. No dll's, so's to use or API's to follow. Even if it is a lot assembly code, there are a lot more bytes in assembly source than in binary executables.

    Context, people, context! ;-)
  • Is that, some old assembly hackers ought to be able to whip up a fairly tiny basic interpreter. It should be fun in a way and still easier than in the old days of 6502. You have more registers, some basic string instructions, and outstanding support for floating point. I doubt it could be quite as small though, as, the big thing that would bloat it up would be that instructions themselves in 32 bit. For an easier and almost weekend job of it, you could do it in 64 bit assembly for Linux only. That spar

    • For an easier and almost weekend job of it, you could do it in 64 bit assembly for Linux only. That spares you the need to do COM type of stuff and other weirdness that permeates the Windows API.

      You don't need to use "COM type of stuff" to access filesystem (or, indeed, do pretty much anything else that a BASIC interpreter needs to do, including graphics) on Win32.

  • by Simonetta ( 207550 ) on Tuesday November 04, 2008 @06:03PM (#25633483)

    But the real question is....Why would anybody do this?? Port Commodore64 BASIC to a PC?

        I used to have a Commodore64 and learned 6502 Assembler on it. When I got a PC (a 286) I felt nostalgic for the C64 and bought a cheap one. I used it about ten minutes and realized what a mistake it was. Fortunately I was able to sell it right away.

        Never look back. There is is nothing that was written for Commodore 64 that isn't 1000 times better on modern PCs. Nothing. Don't give me any BS about the wonderful SID chip and its KOOL mickey-mouse MOD files. They suck, really. Don't tell me about that fantastic game that you used to play on the C64 and have never been able to recreate the excitement on a PC. It's because you were a kid discovering video-games, not the Commode64.

        Are you going to tell me that you miss spending four minutes to load a 25K file from the excretable 1541 disk drive? Or spending 40 minutes to download a 25K file on a 300 baud modem from a long-distance BBS when you're paying the phone bill? Or the stupid PEEKs and POKEs. Do you miss typing in hundreds of numbers from Compute's Gazette because the program is written in super-fast 6502 1.2MHz machine code?

        The only good thing about the C64 was the keyboard. And once you start talking to your 3GigaHertz PC and having your words appear on the screen as you speak, you don't miss the keyboard. Regardless of how good it is.

        Commodore 64's rule!! But, really they suck. Never look back on trash.

    • Because it's there (Score:3, Insightful)

      by Nimey ( 114278 )


    • by spaceyhackerlady ( 462530 ) on Tuesday November 04, 2008 @06:14PM (#25633611)

      But the real question is....Why would anybody do this?? Port Commodore64 BASIC to a PC?

      Three reasons come to mind:

      1. Because it's there.

      2. Because you can.

      3. Because it's cool. :-)


    • Re: (Score:2, Insightful)

      by Super Jamie ( 779597 )
      I agree that there is nothing wonderful about C64 BASIC, and also wonder why someone would port an awful archaic language to modern PCs, when there are far better BASIC interpreters around already.

      However, hardware sound reproduction is something else. SID chips produce a noticeable sound, and sound decks with SIDs built in are worth several thousand dollars and used by many popular recording artists today.

      You'll also find the Gameboy has a popular sound production scene associated with it. Look on Yo
    • by Zarhan ( 415465 )

      I miss ONE particular game that I don't think anyone has managed to re-create. I'd very much appreciate a new version of PSI-5 Trading co [mobygames.com]. You have your standard Elite-esque "trade stuff between planets A, B & C"-thing go on...but the beef is that you command your spaceship *completely* by just giving your crew orders - and they attempt to execute them. So you become Captain Kirk and just bark orders for your Sulu, Chekov and Scotty. I haven't heard of other such games - I mean, you are *always* expecte

      • by Hatta ( 162192 )

        Star Trek: The Kobiyashi Alternative is played pretty much as you describe. Star Trek: Bridge Commander is somewhat similar too.

      • Re: (Score:2, Informative)

        by eharvill ( 991859 )

        Yes, the Mobygames lists DOS version, but the CGA glory isn't exactly the best release.

        Grab a c64 emulator and play the full color version, as shown from the game box screen shots.

    • *whoosh* (Score:4, Insightful)

      by frieko ( 855745 ) on Tuesday November 04, 2008 @06:46PM (#25634041)
      Of course this is a useless project! Almost as useless as model airplanes and magic tricks and football and all of the other wonderfully useless things people do to amuse themselves. Don't care for it? Fine, but no need to insult it.
    • I disagree, though it took me a minute to formulate the counter-reason.

      No one is going to attempt to run Pixar graphics on this. The point is a form of "Limited Time Machine" in which we can return to portions of the past (here, the language) but abuse modern hardware to get sickening speed increases. Then we just drift back in our memories a little about that program we wrote Back In The Day, but now it eats Crays for breakfast.

      As for SID tunes, yea, that hardware implementation has passed its prime, but e

    • Re: (Score:3, Informative)

      The attraction of the home computer scene of the early 80's wasn't productivity, it was the sheer fucking joy of exploration.

    • You missed one thing -- the C64 is a hardware hacker's dream. There is NOTHING simpler to interface with out there in the real world than the C64's user port.

      Assuming your real world revolves around unclocked TTL logic.

      Well, I guess the other Commodore machines with user ports are about as easy.

    • by keeboo ( 724305 )

      I used to have a Commodore64 and learned 6502 Assembler on it. When I got a PC (a 286) I felt nostalgic for the C64 and bought a cheap one. I used it about ten minutes and realized what a mistake it was. Fortunately I was able to sell it right away.

      When you were young, did your parents forced you to use a C64 while chained to a wall, while expecting for the dialy meal of a dry bread and a dirty glass with tap water?

      I've never had a C64, I had a MSX instead but I respected the capabilities of the former.
      I don't regret my 8-bit days, the resources were limited but I've learned to write software and enjoyed the games from an era when each improvement was like "wow" instead of "yawn, more polygons per second" of the current games.

    • And yet, with all the powerful CPUs we have now, CBM still surpasses us in one regard: In the 1980s computers like CBM were sold with a programming language by default, so any new computer owner could (and often had) to learn programming, but today in the 2000s computers are sold with spyware and adware without any mention of programmability, so new computers owners now tend to see the computer as something working automagically like a TV. CBM encourages you to learn programming, today's PCs don't even me

      • by g253 ( 855070 )
        Maybe the reason people spent so much time coding and hacking and exploring their computers back then is the fact they couldn't download pr0n...
  • by ducomputergeek ( 595742 ) on Tuesday November 04, 2008 @06:14PM (#25633603)

    I have an old book on how to build your own telescope from the 1980's that included how to hook up a C64 and use a joystick to control the telescope's movements all written in C64 Basic. I remember porting it to QBasic circa 1994/5 and using it for a telescope I had to account for planetary motion for photography. (Back before every telescope came with such features).

    That would almost be fun...wow I really am a geek....*shudders* I'm going back to my cave now.

  • by Orion Blastar ( 457579 ) <orionblastar@@@gmail...com> on Tuesday November 04, 2008 @06:29PM (#25633801) Homepage Journal

    Now my 25 year old C64 BASIC programs can run under Linux, OSX, or Windows.

    If only my 1541 floppies didn't suffer from bit rot and I loaned most of my collection to friends who didn't return them and somehow lost it after they moved.

  • Just as we do our best to get .vbs files locked down someone comes up with a new scripting language just waiting for exploitation.
  • by JoshDM ( 741866 ) on Tuesday November 04, 2008 @06:32PM (#25633849) Homepage Journal

    If you know the dir of the nerdcore rhyme, then holler!

  • The main advantage to BASIC is that it's trivial to get simple graphics going so you can learn how to make a wide variety of games without having to get overloaded with information about APIs and whatnot. Unfortunatly most games don't have terrible graphics so beginning programmers tend not to be satisified with large solid colored blocks.

    It may be worthwhile to come up with a compiler that expands the BASIC commands to include functions which load various graphics formats into sprites and allow you to dis

    • by raynet ( 51803 )

      Someone should port Simon's Basic for C64 which gave powerful (albeit slow) graphics commands and allowed me to render my first fractal images (in about a week per image).

  • BASIC 2.0 seems pretty worthless without support for all the PEEKs, POKEs, and SYSs, though. Is there a port of BASIC 7.0? Or at least BASIC 3.5?
  • 5 CLS
    15 IF A$ = "JOE" THEN GOTO 50
    30 FOR I = 1 TO 10000
    35 NEXT I
    40 GOTO 5
    50 FOR I = 1 TO 20
    60 NEXT I
    70 FOR I = 1 TO 10000
    80 NEXT I

  • scripting + commodore + linux. Who did it? Taht boy in Afghanistan?

  • by Phizzle ( 1109923 ) on Tuesday November 04, 2008 @08:23PM (#25635085) Homepage
    I remember coding a nuissance program in 6510 assembler on my C-64 that sat in the background and when a key was pressed it had a tiny chance not to echo it to the screen or to echo it twice. After installing it on several classroom computers off the old 1541 floppy it drove some students batty, they thought they had sticky keys. This was before real viruses :)
  • by RackinFrackin ( 152232 ) on Tuesday November 04, 2008 @10:11PM (#25635943)

    SYS 64738

  • I'll say. (Score:3, Insightful)

    by uhlume ( 597871 ) on Wednesday November 05, 2008 @12:14AM (#25636607) Homepage

    I found it odd that it took 1.8 MB of source code to compile to an interpreter that used to fit in 8K of ROM space.

    Especially when you consider that Farbrausch [farb-rausch.com] were able to create a near-complete c64 emulator [scene.org] for Windows in under 64K a couple of years ago.

    So what does that other 1.74M go to?

I've got a bad feeling about this.