Jump to content

Blogs

Our community blogs

  1. RetroSonicHero
    Latest Entry

    I haven't been actively doing this as much recently, I've had the sudden urge to play some Sonic, and, well, you know how that goes..

     

    But yeah, at this point I've learned the majority of the bit-specific instructions. The ones I've learned over the last few days are:

     

    or
    eor
    bset
    bclr
    bchg

    I'll briefly go over each of them.

     

    The "or" instruction is similar to the "and" instruction I talked about last time. What it does is compare the bits of the source and destination operand. If the bits of each are either both 1, or one of them is 1, then the result will be "set" for that bit. "eor" (written as "xor" in most other assemblers) stands for "exclusive or". It works the same way as OR, except, the result will only be 1 if either the destination or source has a 1 for that bit. Unlike OR, it can't be both.

     

    bset, blcr, and bchg all follow the same overall rules apart from the function they serve.

     

    As you may know, there are two different states a bit can be in:

    0 = clear
    1 = set

    As such, these three instructions are pretty self explanatory. What they do is modify the state of a bit that you've specified. They can be used on data registers, and directly into memory addresses. They however, CANNOT be used directly on address registers, but they can be used on the data contained in the offest of an address register.

     

    Let's say you wanted to "clear" a bit in data register 0. Well, for starters, the 68000 has data and address registers which contain a long-word of space. Meaning, you have 32 bits to work with. Now that we know that, the next bit of code should be more clear:

    bclr.l    #$1F,d0

    This will clear the bit 1F (31 in decimal) in data register 0.

     

    Lets say you wanted to clear a bit directly in memory. This is just as simple, except, you can only specify a byte of data. Meaning, you can only change the state of 1 out of 8 bits at once:

    bclr.b    #$07,$0000002A

    This will clear the 07th (8th) bit held at offset 0000002A. Let's pretend that address contains the byte "FF". In binary, that's 1111 1111. Because we've cleared bit 07, that gives us 0111 1111. Which equals 7F. Offset 0000002A now contains 7F.

     

    To clarify, the "bchg" instruction works just like bclr and bset. What it does is reverse the bit specified. For example, if a bit is clear, bchg will make it set, and vice versa. All other rules apply.

     

    That's all for today. I'll have more content soon.

  2. Recently I've been reading old ACE Eugene newsletters, as Kay Savetz posted a whole slew of them to archive.org.  When I read them, I take the opportunity to clean up the OCR of the issue as well so I can search it in the future.  For program listings, the OCR's tend to be terrible, so I prefer to find the listing on a PD disk if I can, and insert that into the OCR listing instead.

     

    So I was reading the November 1983, issue, which has a copy of Stan Ockers "Cannibals and Missionaries".  I searched for a copy on a disk and found one on the ABBUC disk 454 side B, which I believe I obtained from the Pooldisk Too.  It's a saved BASIC copy, so I use the tools I've discussed previously in this blog to extract the file from the disk and parse the BASIC into a listing.  Unfortunately, the parse failed, the image is corrupt, so it needs some attention.

     

    The first problem is the parser finds a line that has a zero length declared, so it loops on itself forever.  Actually, it would have except that my parser sees the line numbers aren't increasing and aborts the parse at that point.  The line with this error is the last line, 32768, or the immediate line [not quite, see addenda below].  I put in the correct length ($12 instead of $00) and my parser now outputs a listing.

     

    The listing however, doesn't look right.  All the variables seem to be wrong, with FOR loops over string variables and other odd anomalies.  So I examine the variable names and I can see the names go immediate wrong, with the first two variables names being "CHR$(27)" and "$".  Looking at the listing, I know the first variable should be A$, so that I guess that the first value should instead be 'A' and then all the variables after that will shift down by one slot.  This does indeed seem to fix the listing, and I now can run the program from the disk.

     

    So two byte changes and the listing is restored.  There may be more "bit rot" on this disk, but here's the "fixed" version for anyone who wants it.

     

    Addenda

     

    I probably should have examined the rest of the disk, as two more BASIC files have similar changes (SMOKEY and MELTDOWN),  suggesting this is a deliberate change to inhibit listing the programs.  Another common trait shared by these three files is that the last line is actually a valid line number (32767), not 32768 as you'd typically see for a SAVE'd BASIC file.  MELTDOWN is further protected by having the entire variable name table overwritten with $9B, rather than just the first value, so it can't be so easily restored.  In addition, it has an extra 16 bytes of garbage data at the end.

     

    Anyhow, I've made similar small adjustments to the other two programs to make them more easily examinable for now.  I'll have to investigate how common this type of listing protection is.

     

    454_b.atr

  3. Omegamatrix
    Latest Entry

    Tonight I was scrubbing my blogs to reformat all the mangled code block entries and thought about some code I made in @Karl G's topic about BCD to Binary Routines.

     

    Here is the last routine I made:

    ; BCD value $0 - $99 is in A. Returns binary number 0-99 in A
    BCDtoBin6:
        sta Temp
        and #$F0
        lsr
        sta Temp2
        lsr
        lsr
        adc Temp
        sec
        sbc Temp2
        rts

     

    Here is @Andrew Davie's explaination of the routine:

    Quote

    I like this, very clever.
    To explain for others...

     

    bcd format $XY = effectively 16X + Y (where X and Y are the decimal digits of the number)
    we want decimal format XY = effectively 10X + Y
    So we need to subtract 6X from the original number and we'll have our answer
    The code first isolates X (and #$F0) and then divides by 2, giving us 8X stored in Temp2
    Then divides by 4, giving 2X, adds it to the original number so that's now (16+2)X + Y
    And finally subtracts 8X (in Temp2), giving (16+2-8)X + Y
    --> 10X + Y

     

    Lovely.

     

  4. One thing that must be said, is how much I appreciate all the help I've gotten from kind people in retro computing forums and communities. I've been met with patience and kindness everywhere, although I'm not exactly the sharpest programmer out there. I've learned so much about how these old lovely things work in just a couple of years. 
     
    BIG HUGE thanks to all the kind people who's helped me gather tons of knowledge on this adventure / journey over at:
     
    - AtariAge Atari Lynx Forum
    - Datorernas folkvagn and Lemon64 Commodore 64 Forums
    - AtariAge Atari 7800 Forum
    - Vic-20 Denial Forums
    - ZX Spectrum Computing Forums 
    - AtariAge Atari 2600 Forum
    - Plus/4 World Forums
    - CPCWiki Forums
    - AtariAge Atari 8-bit computers Forum
    - Sinclair ZX80/ZX81 Forums
    - TRSE Turbo Rascal Syntax Error FB-group
    - MSX, Amiga and Atari ST FB-groups, Atari-Forum (Atari ST).
    ?:waving:
     
    "Lovejoy" was/is supposed to be a long term game project for many old systems. So far it's been mostly an adventure into learning about graphics modes, technical details, tools and development for a whole bunch of old computers and consoles. 
     
    Getting the game to the point where the Vic-20, Atari 7800, Commodore 64 and C16/Plus4 version are now, is the fun part, learning about graphic modes, sprite movement, sprite animation, platform collission, collectable collision, sfx & music. After that comes a lot of the more (for me at least) boring stuff. Game states, bank switching, pal/ntsc compatibility, creating content i.e. level design etc. so it's really easy hitting an inspiration wall at that point. 
     
    Of course I would want to finish the game(s), because I'm really fascinated by all of these old systems, but in reality it takes a lot of energy, time and commitment to finish even one single very small game alone (with a day job, kids, I'm all over the place, including drawing, music making and other retro-dev projects too), so let's see if I can manage to pull of one version for starters (at some point) or if I was completely megalomanic when conceiving the idea. Perhaps I should join up with other retro-developers (too), to join some projects that are more sane.
     
    Anyhow, I've realized that with limited spare time it's important to do exactly whatever you want to do at that specific moment - to stay sane, so I'm not going to stress it (anymore).
     
    Here's a small video of the latest version I've experimented with. I thought the main character sprite became pretty funny.  I want the graphics to be really clear, cartoony and cute, but also a bit of "80s euro-clumsy" and very "digital" (few animation frames etc. as opposed to "analog" / "realistic"). Please note I only have collission in the feet yet, that's why I have to jump high to get the coins in the video. The Atari 7800 is really a surprisingly interesting 8-bit system that has way more potential than its official game library would show.
     
    • 1
      entry
    • 0
      comments
    • 1864
      views

    Recent Entries

    Well, I just discovered I have the ability to blog here. Maybe I'll write something less vacuous next time... who knows?!

     

    ~Simon

  5. Busby the Bobcat
    Latest Entry

    You think, that Bubsy 3 "No More Mr. Nice Guy!" is the rarest media from Bubsy? Well apparently, Michael Berlyn tried to make Bubsy 4 after Bubsy 3D. Or did he?

    There are only two articles about it. The first article confirms the existence of it:

     

    "We learned a lot about 3D design and coding and the environment and what could and what couldn’t be done," he said, "and we went to Sony to pitch them on doing a product. We brought a prototype for Bubsy 4, which was really just nothing other than a calling card. And they could see where we had taken it, and said, 'Oh yeah, we’d be interested in doing a product with you. Absolutely not a furry animal product, though, we already have one of those." At this time, the Sony marketing machine was busy placing their new mascot, Crash Bandicoot, into pizza commercials. "So we said okay, pick a product any product, and by mutual consent, we agreed to do Syphon Filter." Syphon Filter, a 3D action game obviously inspired by Metal Gear Solid, would prove to be Berlyn's last.

    - Gamasutra, 2005

     

    The other article declines it:

     

    Josh: As the legend goes, you sort of got pulled into Syphon Filter as you were trying to pitch Bubsy 4. Is that true?

     

    Michael: I pitched two other products that were not Bubsy. One was called Sparky and Bolt, which was an electrical boy and a sidekick who was a dog, who was electrical also, in kind of a Jetsons future where appliances had come to life and were attacking the city. Sparky’s goal was to kill the enemies, and Bolt would act as a sidekick and recharge him and shoot lightning bolts out of his nose. It was a very well-developed concept.

     

    Josh: Yeah, that sounds really fun.

     

    Michael: I pitched it to Sega, and Sega said, “Not enough edge. Have Sparky be a punk with an attitude, and have Bolt be some sort of nasty cat or something.” And I said, “You’re missing the point.” And I guess I was the one missing the point, because they turned it down.

    I pitched it to Accolade, and Accolade said, “Ummmmm, I don’t think so. We’re more interested in a Bubsy 4.” And I said, “I really think Bubsy’s dead by now. Between what you guys did with Bubsy 2 and What I did with Bubsy 3D, it’s time to move on.” They didn’t agree.

    At the time, Sony was making noises about wanting to buy the development company, and I had just left it. So Bubsy 4 was not a possibility, and Sparky and Bolt never happened, and Dingo Dan never happened.

    - Retrovolve, 2015

     

    Sources:

    https://www.gamasutra.com/view/news/97672/Playing_CatchUp_Bubsys_Michael_Berlyn.php

    https://retrovolve.com/a-chat-with-bubsys-michael-berlyn-part-2-rejection-and-reinvention/

    (found by Polimpiastro on Reddit: https://www.reddit.com/user/Polimpiastro/)

     

     

     

  6. 1.21 Gigawatts of Gaming is back on the air and to start things off, gonna start off in newer territory with an 8 part episode of Adventure for the Sinclair ZX81/Spectrum. It is a series of text adventure games where you must complete certain tasks to beat the game.

     

    Adventure A - Planet of Death

     

    Adventure B - Inca Curse

     

    Adventure C - Ship of Doom (the toughest of the bunch due to random encounters)

     

    Adventure D - Espionage Island

     

    Adventure E - The Golden Apple (we got color now)

     

    Adventure F - The Eye of Bain

     

    Adventure G - Ground Zero

     

    Adventure H - Robin Hood (lots of visuals here)

  7. Hey! want to sell your PS5™ devkit or testkit but don't want to risk it through eBay? then you are in the right place!
    I am spanish collector interested in buying PS5 dev and testing kits (boxed, unboxed, expired, working or not working) all anonymously, if interested, please PM me to: myfriendpedro.com@gmail.com with your asking price, conditions, etc. (reply in 24h)
    Please check this "Want to buy" list/interested in:

     

    Sony PS5 Development Kit (DFI-D series) Prospero (2018-2020):

     

    DEV KIT: Development Kit (for PlayStation®5/PS5) DFI-D1000AA, DFI-D1001AA, DFI-D1002AA, DFI-D1003AA, DFI-D1004AA, DFI-D1005AA, DFI-D1006AA, DFI-D1007AA, DFI-D1008AA, DFI-D1009AA, DFI-D1010AA (DFI-D1000 EU/US series)

    DEV KIT: Development Kit (for PlayStation®5/PS5) DFI-D1000JA, DFI-D1001JA, DFI-D1002JA, DFI-D1003JA, DFI-D1004JA, DFI-D1005JA, DFI-D1006JA, DFI-D1007JA, DFI-D1008JA, DFI-D1009JA, DFI-D1010JA (DFI-D1000 AS/JA series)

    DEV KIT: Development Kit (for PlayStation®5/PS5) DFI-D1100AA, DFI-D1101AA, DFI-D1102AA, DFI-D1103AA, DFI-D1104AA, DFI-D1105AA, DFI-D1106AA, DFI-D1107AA, DFI-D1108AA, DFI-D1109AA, DFI-D1110AA (DFI-D1100 EU/US series)

    DEV KIT: Development Kit (for PlayStation®5/PS5) DFI-D1100JA, DFI-D1101JA, DFI-D1102JA, DFI-D1103JA, DFI-D1104JA, DFI-D1105JA, DFI-D1106JA, DFI-D1107JA, DFI-D1108JA, DFI-D1109JA, DFI-D1110JA (DFI-D1100 AS/JA series)

    DEV KIT: Development Kit (for PlayStation®5/PS5) DFI-D1200AA, DFI-D1201AA, DFI-D1202AA, DFI-D1203AA, DFI-D1204AA, DFI-D1205AA, DFI-D1206AA, DFI-D1207AA, DFI-D1208AA, DFI-D1209AA, DFI-D1210AA (DFI-D1200 EU/US series)

    DEV KIT: Development Kit (for PlayStation®5/PS5) DFI-D1200JA, DFI-D1201JA, DFI-D1202JA, DFI-D1203JA, DFI-D1204JA, DFI-D1205JA, DFI-D1206JA, DFI-D1207JA, DFI-D1208JA, DFI-D1209JA, DFI-D1210JA (DFI-D1200 AS/JA series)

     

    Sony PS5 Testing Kit (DFI-T series) Prospero (2018-2020):

     

    TEST KIT: Testing Kit (for PlayStation®5/PS5) DFI-T1000AA, DFI-T1001AA, DFI-T1002AA, DFI-T1003AA, DFI-T1004AA, DFI-T1005AA, DFI-T1006AA, DFI-T1007AA, DFI-T1008AA, DFI-T1009AA, DFI-T1010AA (DFI-T1000 EU/US series)

    TEST KIT: Testing Kit (for PlayStation®5/PS5) DFI-T1000JA, DFI-T1001JA, DFI-T1002JA, DFI-T1003JA, DFI-T1004JA, DFI-T1005JA, DFI-T1006JA, DFI-T1007JA, DFI-T1008JA, DFI-T1009JA, DFI-T1010JA (DFI-T1000 AS/JA series)

    TEST KIT: Testing Kit (for PlayStation®5/PS5) DFI-T1100AA, DFI-T1101AA, DFI-T1102AA, DFI-T1103AA, DFI-T1104AA, DFI-T1105AA, DFI-T1106AA, DFI-T1107AA, DFI-T1108AA, DFI-T1109AA, DFI-T1110AA (DFI-T1100 EU/US series)

    TEST KIT: Testing Kit (for PlayStation®5/PS5) DFI-T1100JA, DFI-T1101JA, DFI-T1102JA, DFI-T1103JA, DFI-T1104JA, DFI-T1105JA, DFI-T1106JA, DFI-T1107JA, DFI-T1108JA, DFI-T1109JA, DFI-T1110JA (DFI-T1100 AS/JA series)

    TEST KIT: Testing Kit (for PlayStation®5/PS5) DFI-T1200AA, DFI-T1201AA, DFI-T1202AA, DFI-T1203AA, DFI-T1204AA, DFI-T1205AA, DFI-T1206AA, DFI-T1207AA, DFI-T1208AA, DFI-T1209AA, DFI-T1210AA (DFI-T1200 EU/US series)

    TEST KIT: Testing Kit (for PlayStation®5/PS5) DFI-T1200JA, DFI-T1201JA, DFI-T1202JA, DFI-T1203JA, DFI-T1204JA, DFI-T1205JA, DFI-T1206JA, DFI-T1207JA, DFI-T1208JA, DFI-T1209JA, DFI-T1210JA (DFI-T1200 AS/JA series)

     

    Thanks for watching. Interested also on SDK (Software Development Kit), GDK (Game Development Kit), tools, firmware/updates, etc.
    Regards

     

    Have a Sony PS5 Dev Kit for Sale? contact me.

     

    PS5-devkit-test-dfi-d1000aa-dfi-t1000aa-

     

    Have a Sony PS5 Dev Kit for Sale? contact me.

     

    PS5-devkit-test-dfi-d1000aa-dfi-t1000aa-

     

    Have a Sony PS5 Dev Kit for Sale? contact me.

     

    PS5-devkit-test-dfi-d1000aa-dfi-t1000aa-

     

    Have a Sony PS5 Dev Kit for Sale? contact me.

     

    PS5-devkit-test-dfi-d1000aa-dfi-t1000aa-

     

    Have a Sony PS5 Dev Kit for Sale? contact me.

     

    PS5-devkit-test-dfi-d1000aa-dfi-t1000aa-

     

    Have a Sony PS5 Dev Kit for Sale? contact me.

     

    PS5-devkit-test-dfi-d1000aa-dfi-t1000aa-

     

    Have a Sony PS5 Dev Kit for Sale? contact me.

     

    PS5-devkit-test-dfi-d1000aa-dfi-t1000aa-

     

    Have a Sony PS5 Dev Kit for Sale? contact me.

     

    PS5-devkit-test-dfi-d1000aa-dfi-t1000aa-

     

    Have a Sony PS5 Dev Kit for Sale? contact me.

     

    PS5-devkit-test-dfi-d1000aa-dfi-t1000aa-

     

    Have a Sony PS5 Dev Kit for Sale? contact me.

     

    PS5-devkit-test-dfi-d1000aa-dfi-t1000aa-

     

    Have a Sony PS5 Dev Kit for Sale? contact me.

     

    PS5-devkit-test-dfi-d1000aa-dfi-t1000aa-

     

    Have a Sony PS5 Dev Kit for Sale? contact me.

     

    PS5-devkit-test-dfi-d1000aa-dfi-t1000aa-

     

    Have a Sony PS5 Dev Kit for Sale? contact me.

     

    PS5-devkit-test-dfi-d1000aa-dfi-t1000aa-

     

    Have a Sony PS5 Dev Kit for Sale? contact me.

     

    PS5-devkit-test-dfi-d1000aa-dfi-t1000aa-

     

    Have a Sony PS5 Dev Kit for Sale? contact me.

     

  8. I'm feeling especially bored today so I worked on Tal Tal Heights. I'm around halfway finished, and that first half is complete, has no discernable issues. The latter half shouldn't be too hard. After I'm done with the other half, I'm going to add a second part which is going to be based on the Switch remake version of the piece. They're similar but different enough to be worth arranging separately. For example, in the original Gameboy version the main melody is played by the highest voice therefore is represented by the violin. In the Switch remake however, a lot of the melody is also played by the Cello.

    Anyways, here's first half of the Gameboy version of Tal Tal Heights. Enjoy.

    Tal Tal Heights.mp3

  9. Once again I am reseting development on my Sonic VCS homebrew, in this first log I've taken the liberty of making the game's "floor plan."

     

    Sonic VCS

     

    * Two Stages

    * Stage 1 is a Single Screen Platformer

    * 25 Playfields in Stage 1

    * 24 of them randomize

    * Stage 1 ends when collecting maguffin and hitting Robotnik

    * Stage 2 is a Boss Stage (Arena based shu'mup)

    * Sonic must battle Robotnik

    * Once Robotnik is defeated, the game starts over from Stage 1

    * Difficulty Switches toggle options

    * Left switch controls audio

    * A turns on Music during gameplay (but sacrifices sounds)

    * B is the default setting for audio (Sound FXs during gameplay)

    * B/W switch pauses game, color unpauses game

    * Right switch controls difficulty (B is default randomization for stage 1, A to Unrandomizes playfields for stage 1)

    * Uses existing code from @Random Terrain & @Atarius Maximus (Both users will be given credit)

    Any Suggestions on what to do next with the other switches (Different game variations maybe?

  10. And here we have another entry from the great Vidtec...or was it US Games? Whatever. Apparently Vidtec was just a brand label? No idea why. Moving on. So yeah, if you don't already know (and lucky you if you don't) "Sneak'n Peak" is a video game of...hide and seek. Yeah, real thrilling idea. Now, I understand that some publishers wanted to market games to children. There isn't really anything wrong with that, but this is a case where it really would just be easier for a child around the age of 5 to just go and play hide and seek. What kind of kid wants to sit with his friends and try to figure out what random spot on the screen will magically make your character hide? Or even worse, what kind of kid wants to play hide and seek alone? How sad is that!

     

    So, with the obvious out of the way, we get to the game play and things just get weirder. "Sneak'n Peak" consists of 4 screens making up the areas of the house: The Living Room, The Pink Bedroom, The Blue Bedroom, and The Yard. In each of these rooms there are various areas to hide. Now this is from the manual. Just take a look at this picture...really soak it in.

    image.thumb.png.e65b488a7e5f6b7af2a48bf215321368.png

     

    Each rectangle or series of dots is a hiding place. To get into one of these hiding places you have to move in the stated direction at a certain spot on the screen and you will go in. For some areas this makes sense. You would expect to hide in a closet or under a bed. But a random spot under the carpet? Or offscreen in a random place? Or, hell, what about under the pathway? There really isn't an indication of where you can hide either. Even if I know that you can hid under the bed, I have to be in a pixel perfect spot in order to actually make it work. This also works if you have to seek a person. Also, why would you bother printing the hiding places in the manual anyway? There are only 20 possible hiding spaces to begin with, and if you read the manual (or played it a lot) you could just check every space before the time limit runs out. 

     

    Really, this boils down to 2 main problems. This game was made for nobody, and it doesn't really play well anyway. You put those two together and you get a game that nobody would want. US Games apparently had a deal in which they would buy back their games you bought if you weren't satisfied within 5 days. I can't imagine how many copies of Sneak'n Peak were returned. Who knows. US Games went of business in 1983 and games like this probably didn't stop that from happening.

  11. Season 3, episode 20 of the podcast my brother rand I do about "growing up Atari" is about the local arcade we frequented in the 80's and how it was used as filming location for an episode of CHiPs.  We have a story about the arcade and then we recap the entire CHiPs episode.

    https://intotheverticalblank.com/2020/10/04/s3e20-the-ballad-of-castle-park-arcade/


     

    s3e20_new.thumb.png.8774d8162bbbccce6972396f9eafffa9.png

     

  12. Masterplay alike adapter with support for Sega Genesis (3 or 6 button) and Nintendo (NES or SNES) controllers and provides START and PAUSE keys functionality for convenience. Remaining functions can be accessed by a standard joystick connected on the 16 vias IDC connector on the board.  

     

    Buttons and keys are mapped as follows:

     

    image.png.c567a997cf2d8df4375a1172b039a50e.thumb.png.1b3b6a065a0be729aabba33c69ce7ce9.png

     

    Two printed circuit boards available. Compact board measures 1.6"x1.6" (41x41mm)

     

    image.png.c91e2015aaf57c92571e82de200de41a.png.3757bf17e7024ab93f38677f192f7d9b.png

     

    A second version of the board fits inside a Hammond 1593J case:

     

    image.thumb.png.aff1b3bdc44a532e17ac4a5ca9da2daa.png

     

    Work in progress.

    Project repository available at Github

     

  13. Title: Base Attack
    System: Atari 2600
    Game Information: Released Game
    Additional Information: 
    Copyrights ©:
    - Game: Home Vision

    IMG_8559.JPG

    IMG_8560.JPG

    IMG_8562.JPG

    IMG_8565.JPG

  14. Did a really quick little project last night. I'd been kicking this around in my head but decided to try it finally last night. The M.O.D.E. or Multi-Optical-Disc-Emulator from TerraOnion has a nifty set of additional pins along one side of it for adding in additional features. Among them are the ability to add in a wire for adding a physical reset button or button to simulate a Disc Swap process etc. One of the extra pins is for wiring in an additional LED in the system somewhere that is directly tied to the small SMD access LED on the M.O.D.E.'s PCB itself. Because this LED isn't usually visible with all inside the case of the console it makes sense that they would provide such a pin. I'm sure it was intended for an additional LED but I decided to instead change the actual power on LED on my Dreamcast to act as the access LED. This way, it still serves as a power on indicator when you see it blinking with 'disc' access activity taking place. 

     

    The way I did this wasn't difficult at all. I simply removed the power LED from the controller board. Reformed the + lead on the LED to be 90 degrees pointing toward the back of the DC when reinstalled. From that reformed lead, I soldered on about a foot of wire to it. That wire in turn would connect to the LED pin on the M.O.D.E.. I then soldered the power LED back in place on the controller board only soldering in the - or ground lead in place. This way, when the system is powered on and in use, the + voltage to feed the LED and light it up will come from the M.O.D.E. during disc access activity indications. Again this isn't difficult at all and I did add shrink tubing off my + lead and soldered wire to ensure no shorts would occur around the controller board. But here is an edited video example I took off my phone showing how it looks.

     

     

    • 1
      entry
    • 0
      comments
    • 630
      views

    Recent Entries

    For this first post, I will present a project –more precisely a rework of the project– that I recently released.

     

    Sporniket Nostalgie v2 is an opentype font that renders like the 8×16 system font (a.k.a the 'hires' font) of the Atari ST.

     

    The first version was kind of OK but it had 2 major flaws and a minor one : first, it required a weird size (25 pt at 72 dpi) to render correctly, as I wanted to have room for accented uppercase without deformation of the glyph ; second, I was not entirely faithfull in the shape of the glyph anyways as I wanted to remove what I considered as 'flaws', like serifs on a generally sans serif font, I made an '&' that looked like 'Et', and so on ; and last, the shape of my glyphes were stuck to the original pixels and used handcrafted curves, making a not so nice feeling on printed paper. That said, I enjoyed using this font for a few years before changing my computers, and the rendering on paper was as intended, with rounded shapes and all.

     

    Another fact that made the rework necessary was that nowadays, exporting the font gives an bugged files, lots of letters seems to have lost their width. In practice, you see several letters at the same location.

     

    So, I decided to do it again, with the following objectives :

     

    • faithfull to the original material at 8×16 pixels
    • beautiful on paper : I used the "spiro" tool of Font Forge to have very smooth transition between straight sections and rounded section of a curve (third or forth order continuity), and tricking the rasterization algorithm (no hinting) to get the rights pixels while having constant width strokes on paper.
    • A first release with the following unicode range supported : US-ASCII a.k.a Basic latin (any printable character from code 32 —space— to 127) ; Latin-1 supplement ; 'oe' ligatures and Ÿ to support french.

     

    The latest releases are here. You will find the font in 3 formats (opentype, truetype and woff), as well as a sample html demo to see the font on screen, and on paper if you print it.

     

    Since the release I set up my computer system (ubuntu linux) to use the font. I have yet to write a theme to use the font in the title bar.

     

    Following, some screenshots from my terminal.

     

    First, without anti-aliasing.

    SporniketNostalgie2-console-demo-aliased.png

     

     

    Then, with anti-aliasing –I prefer this rendering–.

    SporniketNostalgie2-console-demo-antialiased.png

     

    I plan to make the same work for the 8×8 font soon, and try to do the 6×6 font later.

  15. (Apologies for the short, and underwhelming review, I literally just finished this a couple of minutes ago since I honestly couldn't find anything to talk about)

     

    VS. Super Mario Bros. is a platforming game for the Nintendo VS. system released In 1986 by Nintendo.

     

    The game is hard... Really hard. Like, it compares to Mario 2 JP in terms of difficulty, I rarely get angry at games, but I was this close to throwing my Joycons while playing this.

     

    I'm not gonna talk about the graphics since they're just slightly enhanced versions of the SMB1 sprites.

     

    The controls, sadly, ruin the entire thing for me, in the Arcade Archives release, the controls are delayed. The delay can cause anything from a mild inconvenience to a matter of life and death.

     

    Overall, I'd say that the game itself is great and is a good step up if you've mastered the original SMB. But the delay on the controls on the Arcade Archives release is so bad, I can't justify getting it, especially for $7.99, 5/10.

     

  16. Busby the Bobcat
    Latest Entry

    1.) The same people made The Moo Family Holiday Hoe-Down (1992). The same Director, same Producers, same Production (Calico Entertainment), same Musicians, same Art Director… It even has close to have the same voiceactors. But Neil Ross wasn't in it and Brian Cummings was in it.

    DvQhhPJXQAEuyOP.thumb.jpg.fecf41907a3b4c1fe34798c0d88967d7.jpg1901556120_credit2.png.64d6602f1a3277b2962281f82dcc9a2f.png   Dvstzjuehrstj.thumb.jpg.1891301051c08d25a54def2a196d7dae.jpg2069489993_credit3.png.d040f420491134b2f2e5847e20a9a084.png

    Dvsdgrhz46.thumb.png.0445349de9ed811f298a0083633ebee6.png1395085078_credit5.png.cbf0fe4bc996e1ba16389f46061d61bf.png   DvQiWDWX4AEZi1M.jpg.17189fefeadd3157a7e1c92049f8fd3b.jpg52312509_credit18.png.8aee0626e9616084679277da5f8284d5.png

    Dv453645.thumb.png.6c2b6257b969be38863a75bb6f351476.png1295052933_credit19.png.be25a956884fe7a987ffef241484399a.png

     

    2.) Rob Paulsen, the voiceactor of Bubsy, also voiceacted him for Bubsy 2 (1994) and for Bubsy in Fractured Furry Tales (1994).

    Bubsy_II_Title.png   Bubsyjag.png

     

    3.) The cast and the production of it are interesting. Like, did you know, that the writer was Ray De Laurentis, who was a writer for the Fairly Odd Parents (2009-2017) and T.U.F.F. Puppy (2010-2015)? Did you know that it was animated by Sei Young animation, who also animated for Super Mario Bros. Super Show? And did you know, that the voiceactors of it are also the voices of Animaniacs, Tiny Toon Adventures... ? Here's more information about its cast and production: https://atariage.com/forums/blogs/entry/16780-2-the-production-and-cast/

     

    4.) In Super Bubsy version, they mention "What could possibly go wrong?" phrase 10 times (Bubsy says 8 times, Arnold says 2 times) but in TV version, they cut some of them and they mention 8 times (Bubsy says 6 times, Arnold says 2 times). Not much of a difference, but yea. Even the title is called that.

     

    5.) Bubsy has 8 quotes in this:

    • "What could possibly go wrong?"
    • "I'm a hero for crying out loud!"
    • "I was just testing ya!"
    • "I think I saw Elvis!"                                                                                                         
    • "And if that's a crime, then book me!"                                                                                      
    • "I think of something that really blows my hair back."                                                                                                    
    • "IIIII like it!"
    • "(Hey turkey! Surronder ; hend over that helmet) before I force to humble you!"

     

    6.) Three of his quotes are from Bubsy in Claws Encounters of the Furred Kind:

    • "What could possibly go wrong?" (He also says that in level 1)
    • "I think I saw Elvis!"  (He also says that in level 5: Hey, I thought I saw Elvis back there!)
    • "I think of something that really blows my hair back." (He also says that in level 4: Hey whatever blows your hair back!)

    And some of the quotes are used later:

    • "IIIII like it!" (He also says that on Bubsy 2 and on Bubsy: the Woolies Strikes Back)
    • "What could possibly go wrong?" (He also says that on Bubsy: the Woolies Strikes Back)

     

    7.) In Bubsy 3D, one of Bubsy's quotes mentions Arnold: "This would've killed Arnold!"[1 time: 2:55]

     

    8.) Oblivia, the assistant of Virgil was created by Michael Berlyn. The reason for it is because he was inspired by his relative.[2 time: 53:00 - 1:33:00]

     

    9.) Speaking of Oblivia, did you know, that in Bubsy: Paws on Fire! (2019) has an easter egg for her. And that is, if you look closer to the wall in this scene, it sprayed "Oblivia was here" 

    dfgjzz.thumb.png.3782cfa326addbeaded3f5a01f18e3a5.png

     

    10.) One of the clips that they used is very popular.

    A footage of Frank Richards (who stops cannonball by his stomach) was also used in many cartoons like "The Chip (Part 1)" of Freakazoid!, the episode "Fairly Oddbaby" of Fairly OddParents. It was also used in the documentary called "Ripley's Believe It or Not!"[3]

    1.thumb.png.6b5cc656cea4d6da4d1f6ffc998b042f.png

     

    11.) At the end, when you see a superhero flying in the sky is actually a scene from a movie called Invaders from Space (1965).[4                                                          9.thumb.png.c4bbcdd5d3771b50526eb5780a8fd5d4.png

     

    12.) Even tho' the Bubsy TV Pilot failed, there still some products of it. There is even Press kit character model sheets of Ally,Virgil,Oblivia,Buzz and more!

    Read more about other products in here: https://atariage.com/forums/blogs/entry/16788-9-products/ 

    533491740_unknownkopija.png.6c69f1d2799d521d0793daaa3a741690.png   

     

    13.) Someone has an original picture of Bubsy standing on 2 TVs while holding what appears to be a Bubsy Oscar 

    It was also used for the cover of MegaTech (Issue 31) and for promotion of Bubsy 2 on July of 1994.

    257615152_IMG_20190703_095811kopija.jpg.01dca3819b64758873e824ba08b51556.jpg  109223577_large.megatech31.jpg.1883ad86653d2ff605162c2a8359a387kopija.thumb.jpg.eabdb6f35ce4ce80b21765357310b221.jpg

     

    14.) There was a contest called Bubsy's Watch'n Win Contest. The Grand Prize was going to Hollywood for 3 days and spending 250$!

    Read more about it in here: https://atariage.com/forums/blogs/entry/16787-8-bubsys-watchn-win-contest/ 

    jhnhpzr.thumb.png.0e1180da52541f727a1739f00d7c86b5.png

     

    15.) Bubsy: What could Possibly go wrong? was part of Bohbot Entertainment's "Kids Day Off" three hour block on Thanksgiving 1993.

    image0.thumb.jpg.5f3437fdbbb46ce3be9e07c63116764f.jpg


    Source

    [1] https://www.youtube.com/watch?v=jXGCb38zVNQ (time: 2:55)

    [2] https://www.youtube.com/watch?v=jlYW3pof8JI&t (time: 53:00 - 1:33:00)

    [3] https://en.wikipedia.org/wiki/Frank_"Cannonball"_Richards

    [4] https://atariage.com/forums/blogs/entry/16792-10-footages-origins/

    [5] https://atariage.com/forums/blogs/entry/16788-9-products/

     

     

     

     

  17. For the past month and a half I have been furiously writing a sequel to my first story. I finished it several days ago and it is now live on the site!

    Currently it is just a first draft, its rough around the edges but I feel it gets the story across.

    Now I'm just gonna focus on shorter stories because juggling over 25 named characters gets really exhausting and I just want to do something simple for a while.

    I wrote the story with almost no roadmap, I just knew where the story started and where it ended with everything in between comprising entirely of improv, I think it turned out rather well for what it is.

    http://alcadon.home.blog/alcadon-2-the-citadel/

    As for the first book it's still in a constant state of editing limbo, I keep finding more and more spelling or grammatical errors that prevent me from wanting to put it up on Amazon. I'd also like to figure out how to get a print version so that may delay things further.

    (These are just stats for future reference cause I love editing on the fly and ruing the final word count)

    Started: May 16 2020 Finished: June 23 2020 Final Word Count: 104,829

     

  18. I just had to blog this. But spoiler alerts are due. So, if you haven't watched Seasons 3 or 4 of The Last Kingdom and intend watching it, feel free to come back later.

     

    I love historical shows and movies. An extreme example of what I've witnessed in The Last Kingdom was the Starz show, Black Sails. This was where the writers came up with a historical setting and shoehorned characters from books and actual historical pirates into the show. It was never intended to be historically accurate but a rough representation of what pirates dealt with and how life was for them in somewhere like Nasau.

     

    The Last Kingdom is based on a book. Fair enough. So you don't expect 100% accuracy but, given that it's based not just on the life of Uhtred but also those of actual historical people who lived at that time, you'd expect them to take more care with historical facts because people are going to look them up.

     

    It was nice to see that the Welsh, for once, weren't forgotten. If all you ever learned was what you saw in movies, you'd swear that it was just Scotland, England and Ireland in this part of the world. But let's get to the elephant in the room. The fact that they have completely screwed over the timeline.

     

    They seem to have gone to some lengths to get the Saxon aristocracy right.

    Alfred died in 899. He was succeeded by his son Edward, who would have been 25 at the time. That all seems to check out judging by the apparent age of the actor who plays him. But it seems to point to the fact that, certainly where the English are concerned, the writers were trying to stick to history as much as possible while keeping the story going. In fact, they even put in the story about his son, Aethelstan being possibly illegitimate. That is historically accurate in that nobody has ever known for certain. They managed to intertwine that into the story.

    All good so far. They do play fast and loose with Aethelred of Mercia. By the time he died in 911, he'd been on the throne for 30 years, so the actor is too young but at least the timing of his death is kind of within an acceptable range. The suspicions of the Mercians towards Edward's intentions for their lands in the show is also based on historical fact. Edward did eventually take over Mercia, but not for another 15 years.

    They're trying to be accurate-ish, but when it came to Wales, everything went out of the window.

     

    The Hywel that Wessex went to for aid was undoubtedly Hywel Dda (Hywel the Good). This was confirmed after a couple of episodes where he tells his right-hand man, Rhodri, that he's going on pilgrimage. Again, that was historically accurate because he did, becoming the first Welsh ruler to go on pilgrimage and return. When I heard Ealhswith ask Father Pyrlig to go to Hywel, I knew that it had to be Hywel Dda because if there's one thing the show does, is pick up on some of the better known characters from that time. But when I saw him, I had a feeling something was a little off. He was too old.

     

    In fact, the real Hywel was about 6 years YOUNGER than Edward, not 30 years OLDER!! When we're first introduced to the Welsh when Pyrlig is confronted by a couple of guards, the name Deheubarth appears across the screen to tell us all where they are. This show is currently set at some point between 899 and 905AD. Deheubarth didn't even exist. It wouldn't exist for at least another 15 years when Hywel created it after joining up two kingdoms he ruled over. What's more, Pyrlig would have had to cross at least one other Welsh kingdom to get to Hywel's domain because he had no lands that bordered the English kingdoms at that time.

    He ruled from around 918 and, contrary to his depiction in the show as being fiercely independent, he and his brother (joint ruler) submitted to Edward. He became sole ruler in 920 and expanded his domains to cover almost all of Wales.

    The shift in the timeline also leads to another huge inaccuracy. When Edward does die in 924, it's his alleged illegitimate son, Aethelstan, who takes over. Hywel became close friends with him. If Hywel was as old as he's depicted in the show, he'd probably be dead by the time Edward dies and would possibly never have even met Aethelstan.

    I think the problem for the writers was that they wanted to introduce a strong character who was well-known. Unfortunately, this was really a time when there were in fact few Welsh rulers who's names had resonated through the centuries. Rhodri Mawr (Rhodri the Great) died 25 years before Alfred. A better character for them to use would have been a guy called Anarawd, Rhodri's son and King of Gwynedd at the time of the events depicted in the show. If they had been clever, they could even have intertwined him with Aethelred's story because he invaded Gwynedd and had his ass handed to him by Anarawd. Anarawd also had to deal with an attack by Danes from Ireland in 902. Gwynedd's lands also bordered Saxon lands.

    So, given that I've just finished watching an episode where Hywel discovers that the Danes are coming for him from Ireland, I think what's happened is that the writers took Anarawd and replaced him with Hywel, changing the location and Hywel's age as well in the process. Few people have even heard of Anarawd, even though his father remains one of the most revered Welsh leaders. And we have places named after Hywel.

    I don't mind inaccuracy for the sake of pushing along a story but this was just too much.

  19. At least this is the thought that went through my mind this evening and after mention of the remake on the 'What Movies Have You Watched Recently?' thread. I must admit, I had actually looked forward to the 25th anniversary of The Lion King last year. There was hope of a chance to perhaps see the original film in the theaters again and a little bit of hope that some nice merchandise would appear to mark the occasion. (Had really hoped for a BIG Simba plush! Heehee!) Sadly, we didn't get any of that. What we got was a hollow, soulless cash grab remake that preyed on people's nostalgia. Yes it was a technical achievement and people will argue it was good, but it lacks the character, fun, and nuance of the original from what I have seen and heard. Of course, it made over 1.5 billion in the theaters when all was said and done, the only real thing that matters in the Iger era of Disney. Never mind that it got toppled by Hobbes & Shaw on it's third week! (Actually, I wonder if the remake would have done as well had there been any other solid family movies out over the summer?)

    Merchandise-wise, pathetic basically describes the toys I saw. What little came out for the original movie last summer was mostly revamped Lion Guard items that were of poor quality and seemed to be only out to promote the remake coming out. Even the merchandise for the remake was fairly thin and by the holidays it was already forgotten as the new Frozen movie and TROS was rolled out. I can recall the original Lion King having solid merchandise and sales for almost a year and you could get some nice swag at the Disney store for a while after that! Definitely recall shelves stuffed with toys through the 1994 holiday season. I actually remember having a shelf of plush Lion King toys let go and collapse on me at our local KB toys that summer! No harm done and it's funny to think of now as that moment got my interest started in The Lion King.

    I guess I got kinda spoiled with the Star Trek and Star Wars 25th (and even 20th!) anniversaries as they felt like actual events. I would have thought the original Lion King would have gotten a little bit more than it did being that it was the highest grossing and often held as the best traditional animated film of all time.  Disney, I give you a zero out of five stars for the handling of the 25th anniversary of one of your greatest animated films ever.

    Well, this is the end of my musing for today. Thanks for reading! :)

  20. The ELF computer, which first made its appearance in August 1976 in the Popular Electronics magazine, was a very basic experimenter's board based on the RCA CDP1802 CPU, a rather obscure processor primarily used in embedded systems by the likes of the DOD and NASA. It's main advantage was its simplicity of interfacing and ease of programming. Needless to say that the ELF developed a large following as many hobbyists built their own boards from scratch using the published details in the magazine, and several companies sprung up offering upgraded versions of it.

     

    1013535391_PopularElectronicsELF.thumb.png.4a8017342882044ef9517a31ff09584f.png

     

    Here's the original article: PopularElecELF.pdf

     

    A modern iteration of it is the so-called Membership Card designed by Lee Hart, which reduces the ELF to the size of an Altoids tin, adds 32K of memory (as compared to the original 256 bytes) and replaces the hexadecimal display with a row of LEDs. It also conveniently incorporates a DB25 connector with the computer signals routed to it for easy interfacing. In fact, it is still being developed and sold here.

     

    153053728_20200201_073647-Copy.thumb.jpg.ab67a8baf3fbf0da42a0339e0c656050.jpg

     

    The ELF is programmed by entering CDP1802 machine language in binary using the 8 data switches, and as you might imagine this could become extremely tedious for long programs and very error prone, not to mention the horrendous debugging process using just this set up. Incidentally, I did write a basic monitor for the ELF which could help alleviate the difficulty of program development called ELFMON, and it can be found on the attached disk, but it was still clunky at best.

     

    Happily, there was a far better way to go about programming the ELF, using a full-fledged computer to write the program in 1802 assembler, assemble it, and transfer it directly to the ELF using the DB25 connector. And while this could be done using any computer, I decided to do it using the TI 99/4A computer. Essentially it became a retrocomputing project inside another retrocomputer! ?

     

    The way to go about this is to place a byte on the data lines of the ELF's connector (pins 2-9), toggle the ELF's input switch using pin 1 to store the byte in the ELF's memory, then repeat the process for the rest of the instructions. Clearly, the TI's parallel port would be ideal for this, so I created an adapter cable to connect it to the ELF.

     

    1834028804_20200201_073708-Copy.thumb.jpg.43295fbc88d704d7135e3d6e8219b183.jpg

     

    The pinout is as follows:

     

         TI PIO                   ELF DB25

            1  -------------------->1

            2  -------------------->2

            3  -------------------->3

            4  -------------------->4

            5 --------------------->5

            6  -------------------->6

            7  -------------------->7

            8  -------------------->8

            9  -------------------->9

            12 ------------------->14

     

    From there, it was just a matter of software. The ELF program can written directly on the TI using any one of the available text editors, with the following format:

     

    <label><opcode><operand><comment>

     

    Each part needs to be separated by a single space. The label is optional and can be up to 6 alpha-numeric characters, the opcode cannot exceed 4 characters, the operand cannot exceed 7 characters, and the comment is optional and of arbitrary length.

    When referring to a label in the operand field, the label needs to be preceded by a *.

    Register numbers should be entered as a single hex digit from 0 to F. 

    Numbers should be entered as either 2 or 4 digit hex digits from 0 to F preceded by a >. For example F is entered as >0F. B41 is entered as >0B41.

    Finally, the last opcode of the program should be the reserved word END .

     

    If the formatting is wrong, then the assembler output will be wrong as well!

     

    Once the program is typed in, it should be saved in the standard TI DV/80 format.

     

    I wrote a primitive CDP 1802 assembler in Rich Extended Basic (RXB) which is my favorite interfacing language because it has facilities to access hardware at the low-level. The assembler is sloooooooooow, but hey it beats flipping switches! The operation of the assembler is self-explanatory: just follow the prompts. Below is a listing of the program:

     

     

    //1802 ASSEMBLER FOR ELF MEMBERSHIP CARD
    //BY WALID MAALOULI
    //JANUARY 2020
    //VERSION 0.1
    
    CALL CLEAR
    OPTION BASE 0
    DIM REFTABLE$(100),HEX$(16),REFADR(100)
    RESTORE HexData
    FOR I=0 TO 15
    	READ HEXVALUE$::
    	HEX$(I)=HEXVALUE$
    NEXT I
    CRU=2432 !RS232 CRU OF >1300 DIVIDED BY 2
    
    PRINT "    CDP 1802 ASSEMBLER"
    PRINT " WALID MAALOULI - JAN 2020"
    PRINT::PRINT::PRINT::PRINT
    
    //GET SOURCE FILE
    ON ERROR InputSource
    InputSource:
    INPUT "ENTER SOURCE FILE PATH:     ":SOURCE$
    OPEN #1:SOURCE$
    ON ERROR STOP
    PRINT::PRINT "1- SEND HEX FILE TO ELF"
    PRINT "2- ASSEMBLE FILE"
    PRINT::INPUT FCTN
    IF FCTN=1 THEN
    	SendELF
    	
    PRINT::PRINT "ENTER DECIMAL START ADDRESS:"
    INPUT OFFSET
    
    PRINT::PRINT "SELECT OUTPUT OPTION:"
    PRINT "1- LIST TO SCREEN"
    PRINT "2- SEND TO PRINTER"
    PRINT "3- SAVE TO FILE"
    PRINT "4- SEND TO MEMBERSHIP CARD"
    PRINT
    GetOutputSelect:
    INPUT OUTSEL
    IF OUTSEL<>1 AND OUTSEL<>2 AND OUTSEL<>3 AND OUTSEL<>4 THEN
    	GetOutputSelect
    IF OUTSEL=2 THEN
    	OPEN #2:"PIO",OUTPUT
    IF OUTSEL=4 THEN
    	SendELF
    IF OUTSEL<>3 THEN
    	StartAsm
    ON ERROR InputSource1
    InputSource1:
    PRINT
    INPUT "ENTER SAVE FILE PATH:       ":DEST$
    OPEN #2:DEST$,OUTPUT
    ON ERROR STOP
    GOTO StartAsm
    
    SendELF:
    PRINT
    PRINT "PREPARE ELF TO RECEIVE DATA:"
    PRINT 
    PRINT "1-CONNECT CABLE"
    PRINT "2-LOAD AND CLR SWITCHES DOWN"
    PRINT "3-READ SWITCH UP"
    PRINT "4-ALL DATA SWITCHES UP"
    PRINT
    PRINT "PRESS ANY KEY WHEN READY"
    CALL KEY("",0,K,S)
    IF FCTN=2 THEN
    	StartAsm
    
    //TRANSFER HEX FILE TO ELF
    TransferHex:
    IF EOF(1) THEN
    	CLOSE #1::
    	PRINT::
    	PRINT "TRANSFER COMPLETE!"::
    	STOP
    LINPUT #1:LINE$
    PRINT LINE$
    HVAL$=SEG$(LINE$,6,2)
    CALL HEXDEC(HVAL$,DECVAL)
    GOSUB SendByte
    IF SEG$(LINE$,9,1)="" OR SEG$(LINE$,9,1)=" " THEN
    	TransferHex
    HVAL$=SEG$(LINE$,9,2)
    CALL HEXDEC(HVAL$,DECVAL)
    GOSUB SendByte
    IF SEG$(LINE$,12,1)="" OR SEG$(LINE$,12,1)=" " THEN
    	TransferHex
    HVAL$=SEG$(LINE$,12,2)
    CALL HEXDEC(HVAL$,DECVAL)
    GOSUB SendByte
    GOTO TransferHex
    
    //START OF ASSEMBLY
    StartAsm:
    LINE=OFFSET
    RPOINT=0
    PASS=1
    PRINT::PRINT "FIRST PASS"::PRINT
    
    //READ LINE FROM FILE
    ReadLine:
    TEMP$=""
    TEMP1$=""
    LINPUT #1:LINE$
    IF PASS=1 THEN
    	PRINT SEG$(LINE$,1,19)
    IF PASS=2 THEN
    	SkipLabel
    LABEL$=SEG$(LINE$,1,6)
    FOR I=1 TO LEN(LABEL$)
    	IF SEG$(LABEL$,I,1)<>" " THEN
    		TEMP1$=TEMP1$&SEG$(LABEL$,I,1)
    NEXT I
    LABEL$=TEMP1$
    SkipLabel:
    OPCODE$=SEG$(LINE$,8,4)
    IF SEG$(OPCODE$,1,1)=">" AND PASS=1 THEN
    	OPRNUM=0::
    	GOTO FirstPass
    IF SEG$(OPCODE$,1,1)=">" THEN
    	HEXVAL$=SEG$(OPCODE$,2,2)::
    	OPRNUM=0::
    	OPERAND$=""::
    	GOTO FoundLabel
    FOR I=1 TO LEN(OPCODE$)
    	IF SEG$(OPCODE$,I,1)<>" " THEN
    		TEMP$=TEMP$&SEG$(OPCODE$,I,1)
    NEXT I
    OPCODE$=TEMP$
    OPERAND$=SEG$(LINE$,13,7)
    IF SEG$(OPERAND$,1,1)<>">" THEN
    	NotNumber
    OPERAND$=SEG$(OPERAND$,2,LEN(OPERAND$)-1)
    TEMP$=""
    FOR I=1 TO LEN(OPERAND$)
    	IF SEG$(OPERAND$,I,1)<>" " THEN
    		TEMP$=TEMP$&SEG$(OPERAND$,I,1)
    NEXT I
    OPERAND$=TEMP$
    
    NotNumber:
    IF OPCODE$="END" AND PASS=2 THEN
    	PRINT::
    	PRINT "ASSEMBLY COMPLETE!"::
    	CLOSE#1::
    	IF OUTSEL=3 THEN
    		CLOSE #2::
    		STOP
    	ELSE
    		STOP
    IF OPCODE$="END" THEN
    	RESTORE #1::
    	PASS=2::
    	LINE=OFFSET::
    	PRINT::
    	PRINT "SECOND PASS"::
    	PRINT::
    	GOTO ReadLine
    
    //ASSEMBLE LINE
    IF PASS=2 THEN
    	SearchData
    IF RPOINT=49 THEN
    	PRINT "REFERENCE TABLE FULL!"::
    	STOP
    IF LABEL$<>"" THEN 
    	REFTABLE$(RPOINT)=LABEL$::
    	REFADR(RPOINT)=LINE::
    	RPOINT=RPOINT+1
    		
    SearchData:
    IF SEG$(OPCODE$,1,1)="A" THEN
    	RESTORE AData
    IF SEG$(OPCODE$,1,1)="B" THEN
    	RESTORE BData
    IF SEG$(OPCODE$,1,1)="D" THEN
    	RESTORE DData
    IF SEG$(OPCODE$,1,1)="G" THEN
    	RESTORE GData
    IF SEG$(OPCODE$,1,1)="I" THEN
    	RESTORE IData
    IF SEG$(OPCODE$,1,1)="L" THEN
    	RESTORE LData
    IF SEG$(OPCODE$,1,1)="M" THEN
    	RESTORE MData
    IF SEG$(OPCODE$,1,1)="N" THEN
    	RESTORE NData
    IF SEG$(OPCODE$,1,1)="O" THEN
    	RESTORE OData
    IF SEG$(OPCODE$,1,1)="P" THEN
    	RESTORE PData
    IF SEG$(OPCODE$,1,1)="R" THEN
    	RESTORE RData
    IF SEG$(OPCODE$,1,1)="S" THEN
    	RESTORE SData
    IF SEG$(OPCODE$,1,1)="X" THEN
    	RESTORE XData
    ReadData:
    READ OPC$,HEXVAL$,OPRNUM
    IF OPC$="XXX" THEN
    	PRINT::
    	PRINT "INCORRECT OPCODE IN LINE ";LINE::
    	STOP
    IF OPC$<>OPCODE$ THEN
    	ReadData
    IF (OPRNUM>0 OR OPRNUM=-1) AND OPERAND$="       " THEN
    	PRINT::
    	PRINT "MISSING OPERAND IN LINE ";LINE::
    	STOP
    IF OPCODE$="INP" THEN
    	OPERAND$=HEX$(VAL(OPERAND$)+8)
    IF OPRNUM=-1 THEN
    	HEXVAL$=SEG$(HEXVAL$,1,1)&SEG$(OPERAND$,1,1)::
    	OPERAND$=""
    IF SEG$(OPERAND$,1,1)<>"*" OR PASS=1 THEN
    	FoundLabel
    OPERAND$=SEG$(OPERAND$,2,LEN(OPERAND$)-1)
    TEMP$=""
    FOR I=1 TO LEN(OPERAND$)
    	IF SEG$(OPERAND$,I,1)<>" " THEN
    		TEMP$=TEMP$&SEG$(OPERAND$,I,1)
    NEXT I
    OPERAND$=TEMP$	
    FOR I=0 TO 49
    	IF REFTABLE$(I)<>OPERAND$ THEN
    		NextEntry
    	CALL HEX(REFADR(I),OPERAND$)
    	IF OPRNUM=1 THEN
    		OPERAND$=SEG$(OPERAND$,3,2)
    	GOTO FoundLabel
    NextEntry:
    NEXT I
    PRINT "LABEL NOT FOUND IN LINE ";LINE::
    STOP
    FoundLabel:
    IF PASS=1 THEN
    	FirstPass
    CALL HEX(LINE,HEXLINE$)
    ASMLINE$=HEXLINE$&" "&HEXVAL$&" "&OPERAND$
    PRINT ASMLINE$
    IF OUTSEL=4 THEN
    	ElfSend
    IF OUTSEL=2 OR OUTSEL=3 THEN
    	PRINT #2:ASMLINE$
    GOTO FirstPass
    ElfSend:
    CALL HEX(HEXVAL$,DECVAL)
    GOSUB SendByte
    IF OPRNUM<=0 THEN
    	FirstPass
    IF LEN(OPERAND$)>2 THEN
    	OPR1$=SEG$(OPERAND$,1,2)::
    	CALL HEX(OPR1$,DECVAL)::
    	GOSUB SendByte::
    	OPERAND$=SEG$(OPERAND$,3,2)
    
    CALL HEXDEC(OPERAND$,DECVAL)
    GOSUB SendByte
    	
    FirstPass:
    IF OPRNUM=-1 THEN 
    	OPRNUM=0
    LINE=LINE+OPRNUM+1
    GOTO ReadLine
    	
    //OPCODE DATABASE
    AData:
    DATA ADC,74,0		
    DATA ADD,F4,0		
    DATA ADI,FC,1		
    DATA AND,F2,0		
    DATA ANI,FA,1	
    DATA XXX,XX,0
    BData:	
    DATA B1,34,1		
    DATA B2,35,1
    DATA B3,36,1		
    DATA B4,37,1		
    DATA BDF,33,1	
    DATA BN1,3C,1
    DATA BN2,3D,1
    DATA BN3,3E,1
    DATA BN4,3F,1
    DATA BNF,3B,1
    DATA BNQ,39,1
    DATA BNZ,3A,1
    DATA BQ,31,1
    DATA BR,30,1
    DATA BZ,32,1
    DATA XXX,XX,0
    DData:
    DATA DEC,20,-1	
    DATA DIS,71,0
    DATA XXX,XX,0
    GData:
    DATA GHI,90,-1
    DATA GLO,80,-1
    DATA XXX,XX,0
    IData:
    DATA IDL,00,0
    DATA INC,10,-1
    DATA INP,60,-1
    DATA IRX,60,0
    DATA XXX,XX,0
    LData:
    DATA LBDF,C3,2
    DATA LBNF,CB,2
    DATA LBNQ,C9,2
    DATA LBNZ,CA,2
    DATA LBQ,C1,2
    DATA LBR,C0,2
    DATA LBZ,C2,2
    DATA LDA,40,-1
    DATA LDI,F8,1
    DATA LDN,00,-1
    DATA LDX,F0,0
    DATA LDXA,72,0
    DATA LSDF,CF,0
    DATA LSIE,CC,0
    DATA LSKP,C8,0
    DATA LSNF,C7,0
    DATA LSNQ,C5,0
    DATA LSNZ,C6,0
    DATA LSQ,CD,0
    DATA LSZ,CE,0
    DATA XXX,XX,0
    MData:
    DATA MARK,79,0
    DATA XXX,XX,0
    NData:
    DATA NOP,C4,0
    DATA XXX,XX,0
    OData:
    DATA OR,F1,0
    DATA ORI,F9,1
    DATA OUT,60,-1
    DATA XXX,XX,0
    PData:
    DATA PHI,B0,-1
    DATA PLO,A0,-1
    DATA XXX,XX,0
    RData:
    DATA REQ,7A,0
    DATA RET,70,0
    DATA XXX,XX,0
    SData:
    DATA SAV,78,0
    DATA SD,F5,0
    DATA SDB,75,0
    DATA SDBI,7D,1
    DATA SDI,FD,1
    DATA SEP,D0,-1
    DATA SEQ,7B,0
    DATA SEX,E0,-1
    DATA SHL,FE,0
    DATA SHLC,7E,0
    DATA SHR,F6,0
    DATA SHRC,76,0
    DATA SKP,38,0
    DATA SM,F7,0
    DATA SMB,77,0
    DATA SMBI,7F,1
    DATA SMI,FF,1
    DATA STR,50,-1
    DATA STXD,73,0
    DATA XXX,XX,0
    XData:
    DATA XOR,F3,0
    DATA XRI,FB,1
    DATA XXX,XX,0	
    
    //Hexadecimal numbers
    HexData:
    DATA 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F	
    
    //SEND DATA TO ELF ROUTINE
    SendByte:
    CALL IO(3,1,CRU,1) !TURN ON RS232 CARD
    CALL IO(3,1,CRU+7,1) !TURN ON RS232 LED
    CALL IO(3,1,CRU+2,1) !SET HANDSHAKE OUT LINE TO HIGH
    CALL IO(3,1,CRU+1,0) !SET PIO PORT TO OUTPUT
    CALL LOAD(20480,DECVAL) !PLACE BYTE ON PIO PORT
    CALL IO(3,1,CRU+2,0) !CYCLE THE HANDSHAKE OUT LINE
    CALL IO(3,1,CRU+7,0)
    CALL IO(3,1,CRU+2,1) !TURN RS232 LED OFF
    CALL IO(3,1,CRU,0) !TURN OFF RS232
    RETURN

    The attached disk contains the assembler called ELFASM as well as 3 programs for the ELF. I use the extension _S to indicate that this is the text source file which contains the assembly language code as well as the program instructions, and the _HEX extension to indicate that this is the assembled hexadecimal version of the program suitable for downloading to the ELF. Feel free to use your own extensions as you see fit.

     

    1. ELFMON is the ELF monitor program I mentioned earlier
    2. CYLON is a small demo of the Cylon Eyes effect on the ELF's LED's (a.k.a Battlestar Galactica)
    3. HILO is a small game where you have to guess a random computer picked number with as few guesses as possible

     

    ELFASM can assemble a source file and then output it to the screen, to a file in HEX format, to the parallel printer, or transfer it to the ELF directly using the adapter cable. You can also load a previously assembled HEX file and transfer it to the ELF without the need of assembling it.

     

    And here's a video of the entire project. As is usual with my hobby projects, it is highly unlikely anyone else will find this useful outside of myself, but hey, it was a great learning experience :)

     

     

    ELF.dsk

     

  21. IMG_7994.thumb.JPG.a466a0a99c31df5dd2505c5f75f22b75.JPGAfter a month or so of waiting, the enhancement kit (consisting of four replacement roms and a 65C02 CPU) for my Apple IIe arrived. I decided to save a bit over ordering from Reactive Micro by buying it from a seller on Ebay, which was a mistake. It certainly appears to be vintage (which I honestly don't care about) but it took a month to arrive and was packed in such a way that the pins on half the ROMs were badly crushed. I'm shocked I was able to bend them all back into place without snapping any off.

     

    The enhancement kit made the IIe a bit more compatible with the IIc. It adds new characters (MouseText), a CPU upgrade (65C02 from 6502) and some other minor tweaks. The big deal for me was compatibility with ProTerm, a terminal software. I was ready to plug the WiModem232 in and flash back to my prime BBSing days when ... I realized I need a gender changer.

     

    Change of plans. I already have the IIe hooked up to my Raspberry Pi for ADTPro so I figured I'd get the Pi to act like a modem. This was much easier than I expected (so easy, that in retrospect I kind of wasted my money on the WiModem232) and basically consisted of using the serial <-> usb cables I already had hooked up, doing a quick compile from a git repo and running "tcpser -s 19200 -d /dev/ttyUSB0."

    83784612_10219321265656876_2855003347360940032_n.thumb.jpg.dbba5d0cf5f1108ffce4f5f23185d4b0.jpg

    And success! Spent a bit of time poking around the Captain's Quarters BBS, which I believe is running from an actual Apple II. I also tried visiting a few other BBS's I frequent (The Agency and The Black Flag) but none of them really work well from an Apple II. They're targeted towards the ANSI-heads of the mid 90's, and the poor Apple IIe just can't display or send the characters their menus expect. Tonight or tomorrow I'll telnet into the Pi and try using Alpine, Lynx and other tools to browse the Intarwebs.

     

    Next up on the TODO list: I have a BOOTI preordered, which will let me mount a USB drive as a hard drive (and then I can run stuff like the Total Replay game collection.) Then I need to get a Mockingboard or Phazor for sound. I'm still slowly playing my way through Wizardry too - don't want to jump to Ultima III before I have a Mockingboard.

     

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...