Jump to content

OLD CS1

+AtariAge Subscriber
  • Content Count

    6,787
  • Joined

  • Days Won

    5

Blog Entries posted by OLD CS1

  1. OLD CS1
    What is the value of a $40 power supply? To the guy who built it, that may be $20 in parts and some labor, plus the time to research the necessary parts and the recognition of the need for the product in the first place.  What about when he ships out the wrong power supply and then exchanges it, but through an eBay quirk the buyer winds up not paying for anything?
     
    One of the first computers I touched with a GUI was my grandfather's Atari 520ST some 30 or-so years ago.  After his retirement from the Air Force he worked in a few jobs, one as an electrical engineer designing and building motors.  He used a CADD program on his ST to do work at home.  "Boomers" get a bad rap today for being technologically inept and largely incapable of using computers, but not only did his generation largely invent the damned things but he and many of his cohorts did and do quite well.
     
    He spent time with me setting up some floppies to use for drawing, my own CADD stuff, some games, even programming in GFA BASIC.  While I still have those floppies, no one seems to know what happened to his collection after he passed.
     
    Recently I picked up an Atari 520ST just like his and in near-perfect condition, though it lacks a floppy drive, power supply, and monitor.  I have set out to build this system and came across a custom Atari ST power supply on eBay.  But the seller shipped me an Amiga power supply!  A very nice one, but I already have plenty of those.  He immediately offered to exchange it.  I just had to process a return and he immediately shipped me a replacement.  I received a refund and several days later I received the replacement.
     
    After a few exchanges and looking through PayPal and eBay I found I did not have a way to pay him.  Not only that, but having me pay for the item outside of an eBay auction would put him in peril of violating eBay policies.  Sure, there are some ways he could have handled this to square it up and get his money, but instead he offered to let me keep it.
     
    While trying to "rebuild" my grandfathers computer -- the one which launched me into graphical environments owned by a man who had a long-lasting influence on me -- though my time-line took me through Amiga rather than Atari, I found a $40 custom Atari ST power supply and the generosity of a stranger to be invaluable.
  2. OLD CS1
    I pre-ordered my The C64 Mini from WalMart and it arrived on October 9, which I picked up a mere six hours before the store closed in preparation for Hurricane Michael which would arrive the next day. As a result, my time with the new goody was pushed back over a week.
     
    But I have now had a chance to spend a few hours every day or so for the past week and a-half and am happy to present the results of my fun and hard work putting this all together.
     
     
     
     
    (User @wongojack has a great post with some tips for sourcing and managing disk files here.)
     
    The Dressing
     
    With many things, the packaging is the first and most important part of a product on a shelf since it more often than not what the prospective buyer see first in the store, and what the buyer sees first when it arrives in a plain brown box.
     
     
     
     
     

    Eh, not too shabby on the shelf.





     
    Then comes the obligatory un-boxing. (Quick aside, these photos are places two-by-two, so you may need want to widen your window or set your zoom so save you scrolling so much -- provided you can still read the text.)
     
    First sitting on my flux-stained soldering bench. It did not occur to me until later I should be doing this without the board in place. (I am not professional reviewer, after all, and I hope that fact also wins me forgiveness for the color and lighting imbalances in the photos.) Here you can see the intact seal on the box to validate this is, indeed, a virgin product.
     
     
     
     
     
     
     








    Break the seal and open 'er up, nice and gently, now.













    Nice packaging on the shelf, and the inside does not disappoint, either. Not quite the "Welcome to the World of Commodore" to level-up to a Mac or my old Sony Ericsson boxes, but still teases a little more as to the wonders which wait within.
     
     
     
     
     
     











    Pay dirt and, again, not too shabby. Presentation here is clean and crisp, and the extra mile of clear plastic protection to ensure there are no scuffs or marks as the "product may settle during transport." Little I hate more than spending a pretty penny on something cool to find it has box bruising.
     
     
     
     
     
     











    But, like so many good products -- the printer or scanner lacking a USB cable, for instance -- the package complete with quality HDMI and USB cable does not contain a USB power adapter, quality or otherwise. Now, while the argument may go, "everyone has one or two laying about," my counter is far too many are cheap and may not stand up the voltage to the power draw, or may even reference ground signals right to your outlet power thanks to cheap design. For the $79 price tag I would think including a manufacturer-approved power supply would be a given.
     
     
     
     
     
     












    USB power source notwithstanding, it does come with a nice-looking Commodore-esque instruction manual.













     
     
    Under the Dressing
     
    Past the outer layers is the first opportunity to observe the superficial presentation of the product body. First and foremost is enumerating ports and how to actually use the device.
     
    Simplicity is the key, with HDMI video output, micro-USB for power, two ports to accept accessories via USB, and one button to turn it on. Note the USB ports are upside-down due to the internal mounting of the system board.
     
     
     
     
     
     
     



     
    Closer examination of the detail and the best thing I can say is, wow. It is obvious a good amount of thought went into this design. Without calipers one can quickly determine this is a near-exact replica of our beloved brown bread-bin beast, right down to the texture of the clamshell.
     
     
     
     
     
     
     



     
    The correctly sized badge with product-specific design, and the brightness of the LED bolster the relationship to the original.
     
     
     
     
     
     
     







    The keyboard looks near-perfect except for the glaring omission of the print screening on the key fronts -- no special characters nor even-number F-keys. But, the impersonation of the original is so good that, especially out of the corner of the eye, THEC64 Mini is easily mistaken for the old gal.
     
     
     
     
     
     







     
     
    In the Living Room
     
    Having taken in the sights of the new lady in then out of the dressing and assessed how to play, the next logical step is to evaluate the play. I suspect the majority of those who will bring her into their home are not too concerned about her language skills, so I mainly focused on game-play and accommodation thus.
     
    First thing to address is the joystick. I have never been a fan of the Competition Pro, though it apparently has an almost cult-like following. As the design of the C64 Mini is closely linked to this rather crafty eight-button rendition of the classic, I am stuck using it to some degree rather than my preferred Atari CX-40 style of joystick.
     
     
     
     
     
     



     
    In testing I was happy to find my trust old Gravis Gamepad Pro works perfectly fine for games. As indicated in the documentation, the start button acts as the menu button and other buttons simply fire. The arcade-style controller for my NeoGeo X Gold which works perfectly with Windows does not work here. When two joysticks are connected the C64 Mini does a really smart thing: whichever joystick is used to navigate the menu becomes the primary joystick which is always Joystick 2. More about that below.
     
    The Games She Plays
     
    The C64 Mini comes loaded with 64 games listed on the official website and includes manuals for each. Suffice to say, there is a mix of games in the North American release which may or may not be recognized by U.S. players. I do not see this as a problem, really, as you will get games you like, love, and new ones to try out.
     
    Navigating the menu system is easy, painless, and intuitive, and navigating once inside a game is simple, too. Pressing the menu button on the joystick brings up the in-game control menu to save/load a saved game state, call up the virtual keyboard, or exit the game.
     
     
     
     
     
     
     

    In-game control menu





     
    The system provides four save slots for each game. The virtual keyboard is another clever feature which slides in from the right-side of the screen, pushing the video over to the left, taking advantage of the space "wasted" by a square video display view in widescreen. It is responsive and does not take terribly long to type in what you might need in a game, though I would not recommend this over a real keyboard for programming in BASIC. Several of the red buttons are given functions in the virtual keyboard, such as SPACE, ENTER, and backspace/delete, while the menu button hides the virtual keyboard. The keyboard is divided into three blocks of alphanumeric keys, symbols, and special and function keys, with a red button to jump between these blocks. Much quicker than pressing the joystick a million times to get to that odd key. My only lament regarding the virtual keyboard is the special buttons for ENTER and SPACE are not activated until opening the virtual keyboard.
     
     
     
     
     
     
     

    THEC64 MIni virtual keyboard. (AA editor lacks a way to align text around a graphic.)




     
    I started with the most recent firmware release to date, v1.1.4, available from the website update section. Firmware updates are ridiculously simple to apply when needed, and this update includes the File Loader, a promised addition to allow easier running of games from a USB flash drive. File Loader is accessible via the icon which looks like a USB stick in the icon dock at the bottom of the screen.
     
     
     
     
     
     
     

    Menu icon dock: screen settings, about, settings, and file loader.





     
    As the system is built from Vice, confirmed by scrolling through the licensing information which apparently comprises a bulk portion of the 3.5MB firmware image, one would and can expect vast compatibility for games and programs.
     
    The File Loader is compatible with D64, G64, D71, and D81 disk images, T64 and TAP tape images, PRG and P00 program files, and CRT cartridge files. My testing included D64, G64, T64, and PRG files with minimal fuss and no incompatibilities.
     
    The system has, by default, disk acceleration which makes loading games much faster than in real life. This can be turned off for compatibility purposes. The acceleration also appears to have influence on tape loading. I did not test for compatibility with commercial tapes and fast-load tapes as I am unfamiliar with this facet of Commodore life. The single T64 image tested was Laser Strike, a COMPUTE! Magazine type-in BASIC program, which loads and runs with no problems.
     
    More Than Just a Pretty Face
     
    Indeed, the File Loader has a lot more features under the hood as explained on the website. I will not be delving into the deep details of the extremely powerful CJM files which allow detailed configuration right down to the special buttons. In fact, I only investigated this as I was having problems with some programs running at all. Ballblazer, a G64, would not load at all, nor would Ghosts 'n Goblins Arcade or several of the demos on D64.
     
    File names on the USB stick can include settings options which are demarcated by a "_" as the end of the filename, before the extension. For example, to get Ballblazer to load I renamed Ballblazer [NTSC].G64 to Ballblazer [NTSC]_AD.G64 to activate "accurate drive" mode and it fired up and played like a champ. Accurate drive mode is exactly as it sounds: an accurate emulation of the 1541 disk drive to support programs which rely upon its functionality. Enabling accurate drive mode also enables a flickering floppy icon in the upper-right of the screen to show when the "drive" is being accessed.
     
    Demos which would not function properly were fixed with the "TP" option to set PAL mode. PAL mode also fixed Frogger Arcade Edition and allows for the excellent Yoomp! Video captures indicate the output changes to 50Hz when in PAL mode.
     
    Lastly, the C64 Mini assigns the primary joystick as port 2. Familiar to all of us is the frustration of single-player games which eschew this standard. Welcome the "J1" option which changes the primary joystick to port 1, which then resolved problems with those games which expect a joystick in port 1, like Blackhawk, Arkanoid, Satan's Hollow, and others.
     
    Thus, after making the necessary filename changes with the "AD", "TP", or "J1" options I happily found myself with a full complement of usable games and demos on my USB stick.
     
     
     
     
     
     
     

    Rather than lengthen this entry even more with videos, check them out in my gallery dedicated to the THEC64 Mini, recorded with video in "Pixel Perfect" mode.





     
    The only major shortfall I see off the bat with the File Loader is it only supports a single disk at a time. This means you will not be playing the eight-sided adventure of Pool of Radiance or the flippy Last Ninja. You need a keyboard for the latter, anyway, but we have that covered below. Swapping disks is currently possible, as detailed in the troubleshooting section, but doing so requires loading games via BASIC and using a special disk image naming scheme and game saves. A better method is promised for a future firmware update:

     
    I hope to see a "swap disk" option in the in-game menu which would then lead to the File Loader to select the next disk.
     
    I will not go over the built-in games any more than to say they play well and the ones I recognize play just as well and are still just as fun as in the old days, or just as frustrating in regard to Coil Cop. At least two of the included games are obviously modified for the C64 Mini. Specifically, Cybernoid has been updated to remove the option to use the keyboard as a controller:
     
     
     
     
     
     
     

    Original release on the left, showing options 2 and 3 for keyboard controls, C64Mini release on the right missing these options.









    The website also notes other games may have been modified to fit the new form-factor, but the modifications do not substantially alter or affect game-play.
     
    Accessorizing
     
    I tested a few different USB sticks, ranging from really old Sandisk 1GB sticks, a 4GB promotional key-shaped stick, a 128GB Samsung USB3 nano, and finally resting on a Sandisk 32GB nano. All worked perfectly fine with no hiccups.
     
    The manual indicates that if you need more than two USB devices you should use a self-powered USB hub. Sage advice, though I did not follow it. I used an inexpensive Manhattan 4-port USB2 mini-hub to connect a standard Logitech keyboard, the THEC64 joystick, and a often a second controller. This worked fine and I give more details below on the power draw. Make certain that your hub is plugged in before applying power or it may not be recognized.
     
     
     
     
     
     
     



     
     
    While disappointed, I was not surprised to find this configuration would not work:
     
     
     
     
     
     
     

    XU1541 USB to CBM serial with a 1541-II disk drive... no worky, but perhaps one day?





     
    Power
     
    Since the C64 Mini comes without a manufacturer-approved USB power source, we are left to experiment with our own. I have a two-port USB power supply built into a three-outlet station which powered this just fine. So well, in fact, I also used the other USB port to power a 5-inch monitor, the Eyoyo S501H. Together idle, the pair draw around 430mA, and when playing I would see jumps up to 560mA, most of the delta drawn by the monitor speaker.
     
     
     
     
     
     
     



     
    Having an all USB-powered portable Commodore 64 in enticing, and the low power draw means a good battery pack should be fine. I pulled out my Anker PowerCore 26800 three-outlet 26,800mAh power pack and gave them a whirl, the monitor plugged in directly so I could monitor the C64 Mini and its accessories alone. Great success! So what about other battery packs? I happen to have a few clearance USB batteries to try out. These held up, as well, with the only one to not dip below 5V being the cheapest of them all. Impressive, even if the smaller packs will be far more short-lived at a rated capacity of 2200mAh and a measured capacity of around 1750mAh.
     
     
     
     
     
     
     

    The Anker running a game of Space Taxi





     
     
     
     
     
     
     

    The best and worst voltage levels from the Anker while in use, the C64 Mini measured alone





     
     
     
     
     
     
     

    The cheap-o USB battery packs get to play, too.






     
    What's in the Box?!
     
    This part is just pictures of the inside of the C64 Mini. Noteworthy points are the three large metal weights to give it a little heft. These are Bucky Ball confirmed to be magnetic but not magnetized.
     
     
     
     
     
     
     
















    I suspect the chip under the metal heatsink is the SOC. The case is well-enclosed with minimal ventilation so I thought to get some temperature measurements going from idle into starting an FLI demo (which ostensibly would draw more resources from the emulation.) The chip never measured any hotter than the 114 degree reading in open air, but I suspect it does not get much hotter when assembled.
     
     
     
     
     
     
     

    Lowest and highest temperature readings





     
    One last point before closing out is a photo of what happened when I connected the C64 Mini to a monitor via an HDMI-to-DVI cable. What happened here?
     
     
     
     
     
     



     
    Conclusion
     
    I have not been kind to this product which I expected to capitalize on the nostalgia set aflame by devices like the Atari Flashback and Nintendo's recently-released NES Classic Mini. And the hipsters who have no connection at all to a major centerpiece of my youth.
     
    I like to think I am a big boy and able to admit when I may have been mistaken, even through a large bite of crow. This may very well be that situation. I have made posts here at AtariAge and a couple of tech forums disparaging the mere inception of this device for various reasons, but primarily my disgust at how many vultures have picked through the rotting remains of a beloved machine.
     
    Having gotten my grubby hands on it and given it a good once-over I see its place. Given the right purposes, I see it making a handy option for toting around versus a full system. This is very much a nice combination of accurate-enough emulation and portability, and the ease of switching to support PAL-only games and demos is an immeasurable bonus. The native HDMI output, as with retro systems offering the same, is perfect for resolving the "240p problem" with modern displays.
     
    Given its physical appearance and attention to detail, accuracy of emulation, expansion capabilities, commitment to continued improvement of the firmware, the effort exerted to license games: I admit the THEC64 Mini is a pleasant surprise.
     
    Now, about that full-sized thingie.
     
     
    EDIT: As promised, I have included the programs and demos I used for testing, plus a few others I did not include in the videos.
     
  3. OLD CS1
    SonyEricsson's PC Suite had a nice feature which would synchronize your phone's clock to your PC's clock when establishing a connection. I found more often than not my frequently-synchronized computer time differed by a minute or more from the Cingular/AT&T network time.

    (quick bitching about Sony)


    Since PC Companion no longer synchronizes my phone's clock with my PC, using the SonyEricsson AT Commands reference guide I wrote a Powershell script to take up the slack. The script opens the Bluetooth COM port set in the first line (no error checking, sorry so lazy) which is COM14 on my laptop, then sends the AT*EDST and AT+CCLK commands to set daylight saving time status and the clock, respectively. Setting DST is extremely important for setting appointments as I do not enjoy being an hour late or early.

    Since Get-Date returns the local time adjusted for DST, the time submitted to the phone must compensate. The IsDaylightSavingTime() return from the Get-Date object is perfect for this as it returns 0 for "not DST" and 1 for "DST," so this is subtracted from the current hour. The important here trick is to clear DST before setting the time. Otherwise, the phone accepts the given time as the current time including DST, but since DST has already been accounted for the time gets set an hour off.

    *EDST is sent to the phone first, per SE recommendations, then +CCLK. $seTZ holds the time zone offset, which is the offset from UTC in quarter-hours, calculated by comparing the local time to UTC, adjusting for local DST, then multiplying by 4. Finally, the real DST setting is sent.

    I put one-second pauses between sending each of the three commands to the phone. Without this pause commands will sometimes get missed. I suspect this is due to not reading the phone's responses which I do not try to read. This is a very primitive script which does not check to make sure the port is even open, so why even bother registering an event for reading the port?



    $sePort = new-Object System.IO.Ports.SerialPort COM14,9600,None,8,one$sePort.Open()$sePort.WriteLine("at*edst=0`r")Start-Sleep -Seconds 1$seTime = Get-Date$seEDST = If ($seTime.IsDaylightSavingTime()) { 1 } else { 0 }$seTZ = (($seTime-$seTime.ToUniversalTime()).Hours-$seEDST) * 4$seCommand = "at+cclk=`"$($seTime.AddHours(-$seEDST).ToString("yy/MM/dd,HH:mm:ss"))$($seTZ)`""$sePort.WriteLine($seCommand+"`r")Write-Host Time command $seCommand sent to SonyEricsson phone.Start-Sleep -Seconds 1Write-Host Setting DST on SonyEricsson phone to `"$seEDST`"$sePort.WriteLine("at*edst=$($seEDST)`r")Start-Sleep -Seconds 1$sePort.Close()Write-Host ** DONE **
  4. OLD CS1
    I can be an asshole and sometimes a bit crotchety. It was a relief, therefore, to find that I am not the only one who finds the concept of "life hacks" cringe-worthy and often aggravating, if only for misusing the word "hack." You might come across some viral new "life hack" and think, "nothing special about that," since you or someone or some group of people you know have done this particularly amazing thing forever.
     
    The latest one which grabbed me the wrong way was the whole "eating your hamburger upside-down" thing, since my dad taught me that for when working with sloppy burgers (like Sloppy Joes.)
     
    What the heck, I thought. Maybe I should just post up one of my stupid things. Maybe it will go viral and I can earn another 30 seconds of my promised 15 minutes of fame.
     
    Bachelor living life hack!
     
    Most bachelors, and some beyond, will keep dishes in the kitchen sink for several days at a time. Rinsing dishes and even giving them a quick soapy splash will help knock off food and keep it all from getting too stinky. Even so, dishes left in the sink tend to collect dirty water and foster organic films of nastiness. Bowls especially like to collect fouled water which becomes smelly. I have even seen it turn a greenish color (still have not figured that one out.)
     
    A simple solution to keeping bowls in the sink for a few days before washing is to rinse them well then set them in the sink upside-down. This allows water to drain completely and prevents the bowl from trapping more ick.
     
    Of course, an arguably easier solution is to not allow dishes to collect in the sink. Often easier said than done.
  5. OLD CS1
    I have held season tickets since earning my Criminology degree at Florida State University (FSU.) Before then I attended games as a student, and even before I was a student I attended games with friends who were students.
     
    One thing to which we held firm was we always showed up on time for kick-off and we never left early. Of course, in the early days there was little reason to leave early unless, for pity's sake, you simply could not stomach watching our boys on the field win the game by enormous margins. Florida State was in the midst of a great dynasty under head coach Bobby Bowden, and irrespective of your feelings toward Bobby or the team, we as a school played like winners both in the stands and especially on the field.
     
    The energy was unstoppable.
     
    Things have changed over the years with the eye-opening moment standing in the student section at the north end zone when we lost to North Carolina State, experiencing our first ever Atlantic Coast Conference loss at home. A painful loss in which our oft-maligned quarterback Chris Rix marched the team down-field in the last two minutes of the game, from our 22 to N.C. State's 15, and threw a touch-down pass in the last remaining seven seconds.
     
    At least, from our vantage we thought it was a touch-down pass. In reality, P.J. Ward (#24) barely missed the reception due the ball slipping through the hands of N.C. State defender Lamont Reed (#28,) knocking the ball down. With three seconds remaining, under pressure at the 25 yard line, Rix put up one of his beautiful and strong passes to the back-left corner of the end zone to a double-covered Talman Gardner (#21,) who went up for the ball but, as was often Rix's way, the ball was just inches too high.
     
    N.C. State won the game 34-28. Those last two plays so critical and could have meant we eeked out a one-point win against a tough team in a tough game. This, however, was neither the source of my disgust nor what turned me cynical toward my fellow fans.
     
    No, it was how the student section and many of the alumni near us turned their backs on the team as they came off the field to the tunnel below us. Livid. Irate. Furious. These words lack the bite of what I felt that day toward those in the stands with me.
     
    Over the years I have watched a decline in the team and the fans. Fans screeched, howled, and demanded Bobby's head over his reluctance to eliminate his son, Jeff, from a coaching position he obviously could not handle. Before Bobby's retirement we learned he would be replaced by Jimbo Fisher, who the following year rode shotgun to the strength of a young and impetuous quarterback Jameis Winston. As incorrigible as he was, Jameis is also a born leader who lifted the team and held spirits high, eventually winning Florida State the last ever B.C.S. National Championship.
     
    The team became disjointed on the field and made ever-increasingly ridiculous blunders. Without Jameis, Fisher's flaws and lack of dedication to the program began to show. Then, with the glaringly obvious trajectory of the team, previous set-backs in his personal life, and the lure of money he wanted and facilities he desperately coveted, Fisher left Florida State for Texas A & M.
     
    Fisher has since been replaced by Coach Willie Taggart, who came here excited to be a Seminole -- excitement which brought a breath of fresh air to the sport versus Fisher's very closed and blunt business-like presentation -- with a bright outlook and fresh attitude toward the team. Many people expected to be a winning team out of the gate, but I found a more measured outlook understanding this was the first year under a new coach, a rebuilding year so they say. A lot of work needed to be done to bring the team back from the mediocrity which had gripped it under Fisher, and a lot of old bad habits had to be shaken. Habits back into which you can see players falling when under pressure. As with all things, in a crisis you fall back on your training, and these boys had not been well prepared.
     
    Now for the embarrassment that was the 2018 match against Clemson and its frustrating factors.
     
    I spent all day Sunday stewing over the game and the performance of our players which led me to leave a game early for the first time in 20 years. I buried myself in household chores and electronic hobbies, deliberately trying to avoid anything related to the game to prevent both my thoughts being clouded and me from boiling over in both anger and disappointment.
     
    Chances are those who do not "get" the emotional attachment some people have to sports are likely not to get this, either. Fans are an important part of the game and a heartbeat for the team. When the fans have energy so does the team. When the team performs well that energy increases. It is a self-feeding symbiotic relationship. I am not a professional football fan for the reason that I am a college football fan now and was a high school football fan before.
     
    Playing sports as youths we learn to play hard, to give the game more than what we have, and that "losers" only ever "do their best." Play hard and you win big and sometimes you lose big. In both cases, however, you should learn something. As a former manager used to tell me, "the biggest room in the world is the room for improvement."
     
    Our parents told us there is little worse than wasted talent and potential. Your parents, peers, mentors, teachers, coaches, even managers cultivate it. Even with all the positive influences, you have to be willing to be guided and molded, and you have to execute. Some more than others, we all have it within us to overcome adversity and life's obstacles. I enjoy watching these kids grow and advance and transition from wet behind the ears to strong and confident both individually and as a team. I take pride in our mutual love for our school and our desire to be better than the best we can be, knowing that our school provides a supportive and nurturing environment for bettering one's self, and prepares us to continue to grow and mature well past our college years.
     
    The past few seasons of Florida State Football have been a stark contrast to our teams of old. We would many times spend the first quarter or so feeling out our opponents, making a few mistakes as we adjusted to their strengths but also exploiting our strengths to put up points. Sometimes we would be behind later in the game but would pull it out in the end, as "fourth-quarter team."
     
    Now, however, in the face of a strong adversary, offense shuts down toward the end of the third quarter and defense follows mid-fourth. All of this follows little if any exercise of team strengths to put points on the scoreboard.
     
    Even with a new coach, with a fresh attitude, with renewed fan excitement, support, and vigor, we were presented with the mess this last Saturday. For that performance these kids should all be ashamed. If they are not then Coach Taggart needs to make them feel ashamed of themselves. It was clear to everyone watching that these boys flat out gave up, and even the ones who were genuinely trying were up against not only Clemson but their own teammates who had already quit playing.
     
    Shortly after the muffed punt return in the third this fact was all too clear to me. I pointed out that they had given up and there was no reason for us to stay. Never in 20 years of attending Florida State football games had I left early. I was disgusted with the team for its waste, myself for feeling this way, and the team again for making me feel this way.
     
    The team's failure does not rest solely on the players' shoulders. In fact, during the game we witnessed numerous times when plays were taking damn near forever to get called in, leaving already stymied players even more confused and constrained for time. Indeed, the coaches need to step up their game, as well.
     
    To address and not forget, the punches thrown by Noonie, White, and Murray should earn all three bench seats for the rest of the season. There is no room in our game for, and unsportsmanlike-like conduct does not adequately describe, this loser behavior. Period. We certainly do not need to descend into the same thuggish behavior and mind-set we have decried for many years coming from other teams.
     
    All around, it is time for the coaches to be coaches and not players' buddies, time for players to get their heads out of their behinds, and for everyone, including the players themselves, to demand from the entire team all of what it is capable.
     
    I have been complaining for several seasons about the shushing of the crowd while we are on offense, as back-in-the-day we cheered whether we were on defense or offense. The team trained to play in constant noise, loud noise, in particular because some of our competitors are homed in incredibly loud stadiums. Deafening stadiums, even, like The Swamp at the University of Florida. Shutting down the fans' energy during offensive plays, only allowing small outbursts on good plays, is a momentum-killer for the fans. It is difficult to maintain when you have to keep stopping. While I have complained about this, I had it pointed out to me this shushing really gives you an idea of the team's head-space.
     
    Maybe this will not be the year we pull it together to regain our winning acumen, but in the process we should not accept this downward spiral. I will continue to show up and support our boys but only if they give themselves and us 100% or better. While I love my school and I love my team, love is a two-way street and we fans are not getting back what we put in. Indeed, it is time for Coach Taggart and his staff to "Do Something."
  6. OLD CS1
    How about 800x600? HAHAHAHAHA
     
    No, but seriously. I will refrain from elaborating on my principle and philosophic aversion to New Year Resolutions (which nearly got me into trouble in third grade,) instead I want to make a short plan for 2018.
     
    First part of my plan is to finally buckle down on my conversion of Arkanoid for the TI-99/4A. I have put a ton of work into the assets so not finishing the game will be a disastrous waste and let-down.
     
    Secondly, I started on a project last year to produce a clone of the ForTI sound card which will connect to @jedimatt42's 32k clone. I have been working on specs for yet another sound player which will support such a card and including the mechanisms of instruments and patterns, which has also bred a simpler sound player for the same. This entails a couple of things: I need to learn a PCB layout program and write the two sound players to support the card. One player builds on the other so this constitutes a single part rather than two parts.
     
    Third, I have been working on assets for several other game conversions. In short: Demon Attack (based upon the 2600 version,) Gauntlet, and Ballblazer. I would like to actually execute the conversions but I am not confident I will have the time to do so. Ballblazer is something I have always wanted on the TI and the foundation exists thanks to @Asmusr; this will be an in-depth project for me but also fun as I have been studying the algorithmic process of creating the theme.
     
    While Gauntlet has been intimated and effectively claimed by another in the TI forum, this is also a game I have always wanted on the TI and would like to try my hand at. If it looks like I will not be on the road to started these games by 2019 I will release the assets I have built to that point -- sound, graphics, and whatever programming.
     
    Irrespective of the progression of the games themselves I will likely continue posting up my music in blog posts as I have been doing.
     
    Meanwhile I have been working on my sound_list.rexx script and expanding it to manipulate and perform conversions between ISR sound lists, PSG VGMs, and my special ForTI format. Once I adapt the script to manage stereo VGMs the simple four-chip ForTI clone format will be easier. The VGM output is working well and I am currently working on procedures for merging and optimizing lists and producing SIDdump-like outputs. In terms of creating, I have been looking at Deflemask, a multi-format tracker which includes PSG, as a replacement for my laborious use of Rasmus' SoundListRipper. Being that Rexx is a bit esoteric in the home computer arena outside of the Amiga world I have been tossing around the idea of converting to Perl, but that is way down on the priority list.
  7. OLD CS1
    The beige model of the TI-99/4A usually has the oft-maligned post action keyboard with a membrane contact system contained within which is prone to failure. In my first blog post I was both happy and disappointed to find a couple of variants of the beige keyboard which had, respectively, the spring-leaf style contact with full square action and a non-Mitsumi model with the hated membrane contact system.
     
    Generally the black keyboards are the full square action with spring-lead contacts. I am aware the black keyboards also came as post action models, but to my recollection I had not come across them before. Digging through storage this past weekend I found one black keyboard remaining from a bunch I was given some time back.
     

    Made by "General Instruments | Keyboard Division" (upper-left, poorly exposed)










    Keyboard post





     
    On the up-side, General Instruments did try to prevent this from happening.
     



     
    My original post on the good beige keyboard is below.
     

    https://atariage.com/forums/blogs/entry/12110-the-good-beige-994a-keyboard/
     
  8. OLD CS1
    I received the UltraSharp 2007FPb this week and tried it with both my Sega Nomad and TI-99/4A. There are some significant differences to the UltraSharp 2001FP which I covered before. Most importantly, as with the 2001FP the 2007FPb will sync properly to a 240p signal, though also samples it as a 480i signal.
     
    Dell moved the power supply into the monitor so it only requires the single simple IEC power cable. It has the same inputs and outputs as the 2001FP with some additional features, including PIP (picture-in-picture.)
     
    Functionally the monitors are the same, however I found the S-Video suffers worse quality than composite using the same composite source. I have a handful of composite-S-Video active adapters with a capacitor and resistor to prevent as much signal leakage between chroma and luma when separating, unlike many cheap adapters which simply wire the composite signal to both posts. These work demonstrably well with "good" video systems.
     
    But, sadly and interestingly a composite signal shows better on the 2007FPb than the actively split signal in the S-Video port -- the opposite of the results on the 2001FP. Check out these photos of the Micro Pinball II screen.
     

    S-Video










    Composite










    S-Video










    Composite





     
    I like the stand of the 2007FPb versus the 2001FP as it is flat and does not block as much usable desk space. I am still curious as the whether these two monitors will sync to a 15kHz signal from an Amiga but I will not be able to test as I lack the necessary Amiga video port adapter.
     
    Addendum: I discovered with
    † the 2007FPb does not smooth corners the way the 2001FP does. As a result, and what lead me to the discover, the ghosts in the game have more squarely-rounded heads on the 2007FPb whereas on the 2001FP the heads are pointy. 
    † The way he was playing, I suspect he did not know you can also fill in holes and he could have achieved a higher score had he known.
  9. OLD CS1
    Having an affinity for and owning Sega Genesis and Genesis 2 consoles, I found myself intrigued by AtGames' new Sega Genesis Flashback. I have experience with AtGames' Sega Genesis Classic and Portable which I found lacking to some degree though usable, but the promises of an updated emulation engine and built-in HDMI were a draw which I could not resist. I have spent some time since the November 10 release to give it a whirl and I am far more satisfied than most early reviewers.
     
    Leading up to the official launch I watched videos and read articles by a number of reviewers who had been graced with review models. I cannot recall one overly positive review. I am not a professional reviewer and I am not a marketer so I shall jump right in to the meat.
     
    First, all of the AtGames Genesis devices are built on an emulator called "FireCore." From my own experiences and what others have posted around the webs I find FireCore has some limitations which seem unnecessary given how well other emulators play Genesis titles, including the free "MD.emu" which I run on my HP TouchPad†. I am left to wonder what the quality would be if Sega rolled its own emulation core the way Nintendo did for its NES and SNES Classic Edition products.
     
    The built-in HDMI makes the device a welcome addition now my entertainment system is digital at its core, though anyone familiar with using emulation on a high resolution screen should be able to relate to its one woe. I really do not mind the large pixels and blocky graphics resulting from scaling a "240p" screen to 720p. Many emulators have some kind of filter which provides output which roughly approximates the output on a TV, CRT, or other low-tech display. The Sega Genesis Flashback has only a scanline filter which puts faded lines between what would be the scan lines in an attempt to achieve the look of TV scanlines, and it really does not look good at all. Clean and crisp audio is also carried on the HDMI. While I lack the abilities to test, I suspect this configuration will not suffer the "240p problem." In fact, the only issue I have with the HDMI port is a problem playing nice with my ioGear Wireless HDMI kit, but a power-cycle of the ioGear transmitter resolves the issue.
     
    Speaking of power, while the Sega Genesis Flashback is rated to run on 5V DC at 2A, AtGames elected to use a barrel power connector instead of a micro-USB port like its recently-released Nintendo competition. I was able to power mine using a USB-A to 3mm/1mm barrel on an appropriate USB power supply, and the system under normal use pulls under 500mA. This made providing power to both the Flashback device and the ioGear HDMI transmitter much easier and makes the system more portable: both run just fine on my Anker PowerCore 26800.
     
    Getting back to the audio, playing some of the games I am certain I hear something different about the FM synthesized instruments, almost like the FireCore emulation uses different but similar instrument set (like a MIDI sound font.) To test this I whipped out my trusty Sega Nomad and ran games on both systems but I was not able to punch down any specific differences. So far on everything I tried the sound was near perfect.
     
    Video was another complaint on just about every pre-release review list. Glitchy graphics and sprites, and lagged screen scrolling being chief among the criticisms. Indeed, my prior experience with FireCore in the previous Sega Genesis Classic edition as well as the portable was not entirely perfect. Several of my cartridge games are not recognized by the Classic, and on both units my favorite game, Skitchin', suffered from missing graphics and sprites making it unplayable. I was very pleased to find Skitchin' works almost perfectly on the Flashback.
     
    I noticed on several games scrolling would suffer a short freeze which does not appear to be a frame-skipping problem as suspected in one of the early reviews. In fact, it appears the problem generally does not affect the entire screen but rather only a portion. For instance, in the original Sonic the Hedgehog one of the background planes stutters while animation on the rest of the screen continues. Realistically, I do not think most people will even notice, and if this is indeed a problem with the emulator or the horsepower of the machine I would further speculate AtGames counts on that presumption, as well.
     
    In this regard I noticed a couple of times when Skitchin' will completely freeze for a few jiffies, more of a short and quick stutter, but ultimately the game is still playable.
     
    Cool Spot is another great game which plays very well, though this is one of the games in which the FM music seems a little off-instrument but still perfectly acceptable. Shadow of the Beast will not play past the Electronic Arts logo, Flashback is not recognized at all while Out of this World plays beautifully, Frogger plays perfectly, and while the system comes with Mortal Kombat 3, my Mortal Kombat 3 Ultimate results in just a red screen.
     
    The last game I tried was Primal Rage, which suffered from strange graphics glitches which did not stop game play, such as a black line separating the vital stats area at the top of the screen from the battle area, and green borders around all screens except the title screen. This does not show on the Nomad, but I have not yet tried the game on a full Genesis console connected via standard video output so I cannot say for certain whether the green borders are normal. I would test with the Nomad but I seem to have misplaced the video output cable. Ah, well.
     
    I will repeat what prior reviews have said about the menu system. It is awkward, non-intuitive, and just weird. I have not found myself using the saved game nor rewind features, but I can see the value of both and imagine I will use them at some point in the future.
     
    Let us now focus for a few seconds on the hardware itself. The included controllers suck out of the box, with a capital "suck." The range is bad enough to prevent sitting across my living room and maintaining control, noting that my home environment is completely devoid of internally-generated 2.4GHz signals under normal circumstances: my phones are DECT, my wireless is 5GHz, Bluetooth devices are disabled unless in-use, and all 2.4GHz-only devices are turned off. Demonstrably, I have no locally-generated 2.4GHz signal interference. Initially it appeared they did not work even close-up, but the rebuild I describe shortly fixed this problem.
     
    The controllers just suck. When I originally un-boxed my Flashback I did not stop when I got to its rather touching rendition of the original console's gloss and textured black body and red "cylon eye" in front of the cartridge port. Inside I found three chips on a small circuit board, and what looks like one of those Arduino add-on modules, reminiscent of a "Bluetooth Shield" module. Soldered onto the antenna of this module is a red wire about six inches long, which is identical in both module and attached wire in each of the controllers. It looks like AtGames was aware of the poor range of the controllers and tried to engineer a quick-fix.
     
    As implied, I did take apart one of the controllers in the hopes of a rebuild improving its functionality. I found the standard complement of button, rubber nipples with contact pads, and exposed circuit pads one would find in regular controllers of the era. I grabbed my contact cleaning pen with harsh fiberglass bristles and gave the metal pads a few rubs each. Upon reassembling the controller I found to my relief it worked far more reliably and I could actually play games and even enter Mortal Kombat's "blood code." Thankfully the Flashback does support real Genesis controllers even if it only supports six-button units -- this remains untested for me, including the six-button arcade controller, as all my Genesis console hardware is stashed away for the moment.
     
    There is a USB port on the Flashback main board. It is a shame AtGames did not expose this out the back as a power port, though I suppose the reason is to prevent easy access to what I suspect is a hackable interface to the heart of the machine, probably in the near future -- not by me as I lack time for that kind of adventure.
     
    My assessment over-all is this is not a bad machine to have and use. If you do not have a Sega Genesis you should consider this as a possibility, weighing the benefits and caveats which are, as I see them:
     
    Pros:
     

    AtGames Sega Genesis Flashback Currently available for under $100
    Built-in games (both Sega and classic Master System games)
    HDMI output (720p)
    Capable of using real cartridges
    Capable of using real six-button controllers


    Real Sega Genesis Not difficult to find
    Not too expensive depending upon source, most under $100
    Some sellers will include a few common games
    Compatible with all Sega Genesis hardware
    Possible to expand with a Sega CD

     
    Cons:
     

    AtGames Sega Genesis Flashback Alternate source pricing will double or more if and when stock runs out
    Included controllers SUCK
    Emulation is not quite 100%
    Not all cartridges work
    Does not recognize three-button controllers (not verified, and who really cares?)
    No guarantee homebrews or demos will work


    Real Sega Genesis Analog-only output requires up-scaling for digital home systems (on the up-side, the Genesis 2 has YPrPb component RGB output)
    No games built-in
    Upscaling will suffer the "240p problem"
    Old hardware is, well, old and subject to fail

    If you already have a Genesis, I believe the Flashback makes a viable surrogate for a digital entertainment system provided any lost compatibility is acceptable.
     
    † "MD.emu" is excellent on the TouchPad, including support for the iCade Core Bluetooth arcade joystick. It is available and actively developed for Android in both free and paid editions. I highly recommend this emulator.
  10. OLD CS1
    This monitor sports composite and S-Video inputs in addition to the standard DVI and SVGA. It works well with the TI-99/4A with some minor limitations. I took a little time to figure out how to get the best picture from the TI and give some information on what to expect.
     
     
    In 2006 I purchased two Dell UltraSharp 2001FP 20.1 inch monitors for the home office. Notably, these monitors not only have DVI and VGA inputs meaning I could switch between my Amiga 4000 and my Windows PC, but also composite and S-Video inputs meaning I could hook up my Commodore 128D, as well.
     
    These monitors still work just fine and sit on my desk with my Windows PC, Amiga 4000, and MorphOS MacMini, and I use the input selection to select the computer each screen will use. Works nicely.
     
    I managed to grab a third monitor for my play desk where my TI-99/4A, Commodore 128D, Amiga 1200, and Atari 130XE sit. Right now the only computer I have running due to space and time constraints is my TI and some fiddling was called for.
     
    The TI-99/4A console is a standard TI system (non-"QI") with no video output quality hacks. I started using it on the composite port to leave the S-Video port free for the Commodore 128D but I noticed the video quality was not at a level which made me happy. I grabbed one of my active composite to S-Video adapters to try. (These adapters include a capacitor and resistor to help separate the luma and chroma signals, unlike many cheap ones which simply run the composite signal through both input ports giving an image which is sub-par even for composite.)
     
    The difference is noticeable and much more usable than the composite input. I may use the composite input for something else, for instance an extension to connect temporary devices like the Jaxx Pacific many-in-one arcade sticks or the C64DTV.
     
    The differences really show with white graphics on a black background as these photos of Micro Pinball II demonstrate.





    Composite input










    S-Video input with active adapter





     
    Now, this monitor is not perfect and appears to suffer from the "240p problem" treating the input as if it were 480i. For certain, this means anything which flashes every frame will either always show or not show at all. In Micro Pinball II this made the game name graphic in the upper-left show as always white or always the original color, though the timing of either the monitor or the flashing is not perfect and every so often the appearance of the image will go the other way: always white then always colored, and vice-versa.
     
    Additionally, the S-Video input shows vertical lines which I believe to either the luma or chroma signal being higher-powered than the other. There is some difference in the aspect of the 9918A's video signal and the 1600x1200 monitor, so some columns are displayed wider than others, which is also another potential source of the vertical bands. Lastly, the monitor does some rounding of horizontal lines which softens the ends of letters like "E", and makes the ghosts in Midnite Mason appear to have more pointy heads.
     
    In this image the vertical lines do not show very well and rather the cyan screen shows more mesh-like†, but you can see the widened vertical lines and rounding of horizontal lines.
     



     
    The replacement for the 2001FP is the 2007FPb supposedly with the same input characteristics. I am not certain the difference over-all, but it turned out I was able to grab a 2007FPb cheaper and in better condition than another 2001FP when I last looked. It will not be here until next Monday but I got impatient and posted this in advance. If there is any significant difference I will post a follow-up.
     
    † A quick post-script on the "mesh-like" appearance: after a little reflection I recall the screen looking this way when displayed on a black-and-white TV through the video modulator. In any case it does not bother me at all and it does not detract from nor cause problems with using the monitor.
     
     
     
     
  11. OLD CS1
    I needed to swap around parts to build a beige TI-99/4A console using a standard main-board, "QI" power supply, and a keyboard which does not stick. The original standard board came in another beige console which at one point in its life lived in a smoking household, leaving the case stained yellow by, and with a sticky layer of, nicotine, and the keyboard suffering from the same ailments -- sadly as it is not one of the crappy post-and-membrane types usually found in the in the beige consoles.
     
    The donor case is from a malfunctioning "QI" console. Upon installing the standard board in the "QI" case I found the case would not close completely. I opened to inspect my work and found the board would not push into the GROM (cartridge) port trap-door assembly. After a minute or so of fiddling with the fit I discovered the problem.
     
    The "QI" GROM port assembly has two posts extruding from its bottom which block the metal covering of the standard board.
     

    The "QI" GROM port assembly on the left, standard on the right.












     
    I did not try the standard board without its metal shielding so I cannot say for certain the board will not fit without it.
     
    Something else noteworthy is the part numbers look very similar. Not knowing the way TI numbered its parts they look the same.
     
    The part number "1015982 N" is molded onto the assembly. The "QI" assembly has a "7" floating off to the left side while the assembly for a case holding a standard board has a "5." As well, the "QI" part has "-04XX" seemingly hot-branded above and to the right of the molded part number.
     

    Close-up of the part number on a "QI" GROM port assembly.







     
  12. OLD CS1
    I do not have the time available yet to jump back into the forums as I have been cleaning up my home-office and integrating my former state office. Part of the process involves archiving items in storage for long-term safe-keeping.
     
    While I am not certain how available these are, I figured mine are in good enough condition to go ahead and scan up.
     
    Included are 300dpi PDF and black-and-white TIFF† scans of both the beginner pack included in an envelope in the box, and the loose quick reference sheet.
     
    Sometime later I will do more detailed scans at 600dpi and correct some of the defects introduced by the scanning process.
     
    Enjoy!
     
    † TIFF files are in the Zip, as TIFFs are not allowed uploads on AA.
  13. OLD CS1
    After hearing a couple of remixes of "Bruce Lee" from the Commodore 64, I was compelled (distracted?) to make a quick conversion and my own little remix (not yet completed,) both in TI-99 ISR format. This particular piece is a good candidate for its own special player, being that the format of the song is roughly A-B-B-C-D-D-C-(E-F-G)-H. Nothing fancy in terms of a player, just one that can do repeats and patterns.
     
    Original Commodore 64 SID:
    Bruce_Lee.sid
    Bruce_Lee(SID).mp3
     
    I have provided my conversion as an MP3, and as usual a binary which can be loaded via Rasmus' SoundListRipper.
     
    Bruce_Lee(TMS-9919).mp3
    bruce_lee-full.bin
     
     
     
  14. OLD CS1
    I needed a short example to try out some of my Rexx script transforms. The main thing this demonstrates is taking a bass-line in tone channel three and changing it into a periodic noise bass-line. The transform command is "nb" so the files are named accordingly.
     
    The script is still a work-in-progress missing some functions and sloppy as hell so I will not be showing it off just yet. Plus there is a major bug in the remove transform which removes a tone from a list, which instead winds up corrupting the list to the point that it cannot be recognized. I am also working to implement giving transforms line ranges. But enough of that. Enjoy these.
     
    Xevious - Start Game (TMS-9919).mp3
    Xevious - Start Game(faster).bin
     
     
     
    Xevious - Start Game (NB) (TMS-9919).mp3
    Xevious - Start Game (NB)(faster).bin
     
     
     
     
    Xevious - In Game (TMS-9919).mp3
    Xevious - In Game.bin
     
     
     
    (updated to include start-game source sound, captured using Audacity via Windows StereoMix)
  15. OLD CS1
    Vorticon asked me to provide the sound effects for his TI conversion of
    . I started working on them and at the same time picked back up on Rasmus' challenge to me to arrange "Monty on the Run." I have been bouncing between Jetpac and Monty, as well as my A/Rexx script to manipulate ISR sound list binaries. Tonight I was playing with the Monty bass-line, over-laying it with a SIDPlay export (Monty_on_the_Run.mp3) and I thought I would share part of my process for doing my conversions. It is nothing special but I enjoy it. 
    I am using SIDdump to dump the original SID to a text file using time sequence instead of frame numbering. I take those tones and bump them down an octave or two to match up with the 9919's idea of octave numbering and finagle the timing. 1/60s does not always match a SID frame so sometimes it is not possible to get exact timing, but close enough. (A quick related note on Jetpac sounds: the time resolution in the original ZX game is about double that of the TI ISR, so the sound effects are four, sometimes five, distinct tones in the space of two or three on the TI so I have to finagle that, too.)
     
    I am using Rasmus' excellent Sound List Ripper, which he has admonished me (nicely) for using in this capacity. It is not a tracker but it works for my purposes. With this and my A/Rexx tool, which is still very much a work-in-progress, I can do quite a lot very quickly.
     
    In the video below (low quality on my old phone, but the sound is good,) you see (not clearly, heheheh) the SoundListRipper window open on the left, the VLC window playing the Monty on the Run music, and the Windows audio mixer at the bottom I am using to give the SLR more volume over VLC. At about 0:41 and 0:47 I mute VLC so you can hear the output of SLR, which is a very accurate simulation of the 9919's output. (Yes, I know I can control the volume and mute in VLC.) You will also hear where I mis-fired the SLR to start it too early.
     
     


     
  16. OLD CS1
    Actually, I am not really certain what to call what I am doing here. Essentially, I need a table of values which can be referenced both by number (ordinal) and the value itself (associative.)
     
    I reach back to the TI-99 ISR (interrupt service routine) sound lists for a practical example. I want to create a transform which will increase or decrease tone values by semitones or octaves (12 semitones.) To do that, I have to load the channel sound command, which consists of two bytes, from the list. Some manipulation has to be done to convert it from (for example) >8C1F to >01FC, A-1 on channel 1, but that is another exercise.
     
    Now I have my tone value. Say I want to increase this by an octave to A-2, >00FE. While I know an octave is 12 steps, I have no way of knowing that >00FE is 12 steps away from >01FC unless I have it in an indexed table in which I can count the 12 steps to find the value. But I also need to know at what index the initial value resides. I have not used a language with associative arrays which can actually produce an index as the elements are usually stored as some kind of hash. You can step through all of the elements, but not in any useful order.
     
    To accomplish this I only need one variable but two ways of storing information. The first will convert a given value to an index, and the second which can then convert an index to a value.
     
    In the example below I am doing this, as well as something else I consider neat. I am actually storing the list of values I need indexed in the script I am running as a long comment. Sure I could have dome some kind of Fu to get a long monotonous list of assignments (in this case 150,) but this method allows me an easy (and did I mention neat?) way to build the stem variable at run-time and more simply maintenance the table.
     
    The script scans through itself looking for its table values. In this case I am indicating a wanted value with the ">", which is the hexadecimal notation prefix in 9900 assembler. As the routine takes in values it increments the index variable. Each value is stored in two ways using the same stem: the index is stored as an associative leaf, then the value is stored with the index as its leaf. TONE.0 is used to store the length of the table for walking.
     
    Thus, the script is
     

    TONE.value = index
    TONE.index = value  
    If value is 01FC and index is 13, A/Rexx executes this:
     

    TONE.01FC = 13
    TONE.13 = 01FC  
    Remember, I want to increase this tone by an octave which is 12 semitones. Because I know the value I can now find the index. The new index is 25, and TONE.25 gives 00FE. Done!
     
    I can use this one stem variable to work in both up and down directions, as well as between index and value, for whatever purpose.
     
    In the script below, the table is read from the comments at the end of the file. To save time in longer scripts I also facilitate a termination value to stop reading the file any further once the end of the table is read. For some reason i was unable to get BREAK within the DO loop to work in Regina Rexx and I did not try it in ARexx, though the script does otherwise work in ARexx if you comment out or remove the OPTIONS line. As well, since the script was created in Windows it contains carriage-returns at the end of lines, so I had to PARSE that out. If the build routine is fed a file which lacks carriage-returns, the last character of the pattern simply does not get matched and it still executes as expected.
     
    Once the table is read into the stem variable, it is then walked and output to the screen, thus proving its might.
     
     
     
    This routine could be adapted to handle more than a single table in a file. For that matter each table could be stored in separate files, but storing the table or tables in the executing script just makes less clutter in the file system. Plus it is kind-of neat.
     
    For my purpose, and ease of constructing the two sound channel command bytes, I can and most likely will change the order of the nibbles in the table. Done this way, building the sound channel command is a simple BITOR() instead of a more involved process of swapping nibbles around in the script.
     
  17. OLD CS1
    I have been working on some Rexx scripts to manipulate sound list binary files exported from Rasmus' soundlistripper. I ran into a few problems here and there, and found these problems were mostly due to my experience in ARexx, Amiga REXX, which has some differences compared to various Rexx interpreters. To demonstrate my lacking in "standard" Rexx I went back to basics and wrote a simple dump program.
     
    This is also where the statement OPTIONS AREXX_BIFS AREXX_SEMANTICS comes into play.
     
    This requires the latest Regina Rexx (3.9.1 at the time of this writing.) In particular because earlier versions (not sure where the cut-off is, but for certain 3.7) seem to only allow a stream of around 1.5k bytes. The Regina manual states the limit on a single line with READLN() in ARexx is 1,000 characters, while the rest can be read via READCH() or additional READLN(), but I found some sources which indicate a maximum of 64k bytes. In any case, there was definitely a limitation on Win64 reading some long sound lists via READCH() which was resolved by upgrading from Regina 3.7 to 3.9.1.
     
    I had to make some other adjustments to get my ARexx-fu to work in Regina, but at least now it does work and I can go back to the larger manipulation program and fix my stuff. (For one thing, I need to make the program more modular and have just a single section for input and output rather than in each manipulation.✝)
     
    If you have .rexx associated with Regina and Regina is in your PATH, you can execute the script below like this:
     
    sound_list_dump.rexx filename
     
    The input file is a raw binary dump of an ISR sound list, the output is 9900 assembler BYTE statements representing the contents of binary, one statement per row. This does no checking on the content of the file other than watching for a duration of "0" which indicates the end of a sound list. So unpredictable results occur if you feed it something else.
     
     
     
     
     
     
    ✝ The last update I made to this post includes changes to use a stem or compound variable, which is essentially an array, to store the loaded sound list. This make manipulations far easier. For instance, swapping or copying channels, changing tone frequencies, changing channel attenuation, etc. As well, I made changes to the way I was calling WRITELN() and WRITECH(). I had not used these in ARexx so I was not following a proper convention, calling them as functions. Using CALL corrects this.
     
     
     
     
     
     
     
  18. OLD CS1
    After alternating between beating and gingerly pressing on my beige 99/4A's God-awful membrane-switched keyboard to obtain desired results -- a key on-screen with no repeats -- I was finally able to locate the leaf-switched type with real beige keys. This was a Radio Shack special I found on eBay and it cost me around $12 shipped.
     
    Originally, I had all of the right hallmarks if looking at the bottom of the keyboard (note, not by looking through the bottom of the console, as the keyboard bottom was covered by a metal shield):
     




    Green with solder points! Looks good, right?










    SURPRISE SUCKER! Meh, it is an Alps.






    Now for the "good" keyboard. Yes, this keyboard has the leaf switches, even though a few are severely bent they are still operational. Unfortunately, age and shipping were not friendly to this device. All of the keys were loose upon receipt, and just about every one of the green sliders (the "action" of the key) were cracked or broken. The ALPHA LOCK key assembly, for instance, had to be glued back together entirely.
     














    In the end, even if the keyboard part does not work well or will not hold all of the keys, I at least now have beige square-bottomed keys that can be transplanted over to a surrogate black keyboard.
     
     
     
     
     
     
     
×
×
  • Create New...