Jump to content


  • Content Count

  • Joined

  • Last visited

Posts posted by jum

  1. More feedback:

    Lately I have built another SIO2Arduino using an Arduino Nano and MicroSD card breakout.

    No code changes were required.

    This version is powered by +5V SIO pin (pin 10), seems to work fine (mostly?). (Current draw is less than 20mA according to my USB inline power monitor).

    However when you switch the Atari off and on to "hard reset" the computer, the Nano is also rebooted, and forgets which disk image is inserted (defaults back to SDRIVE disk).

    I am thinking about overcoming this issue by using the Nanos 1kB EEPROM to store the currently selected ATR(s), and adding the SIO2Arduino "reset" pushbutton to tell the Nano to switch back to the default SDRIVE ATR.



    Well today I finally managed to fix the 800XL :) :-D :) :-D :)


    After lots more probing and investigating and swapping out chips with my 600XL, I noticed with my cheap logic analyser that the correct reset vector ($C2AA?) was not being loaded on reset, meaning OS ROM was not being enabled on reset, which lead me to discover that the 6520 PIA was not pulling the REN line on the MMU high (like ti should be doing). So I swapped out the PIA with the PIA from my 600XL and happy day there was the "READY" text on the screen!


    (Never thought to swap the PIA before as I have never seen it mentioned as a common failure).


    Thanks for all the help and cheers! I'm going to have a beer now...

    • Like 3

  3. I have built 2 SIO2Arduinos lately, just wanted to give some feedback:


    1st try was using an Arduino Leonardo with an ethernet shield. Reason for using a Leonardo was so that I could use the debugging output. Initially had a problem with the SDFat library and the Arduino IDE versions not playing nicely, this was fixed by using an older sdfat lib which is mentioned int he github issues section somewhere. Had to make some small changes to the source code to get it working on Leonardo. This version worked, but was quite flaky, less so after I realised that most software won't run on my 16k 600XL (PAL), and I modded it thereafter to 64k.


    2nd try was using an Arduino Uno R3 and a "data logger" shield, also with the older sdfat lib. This works great using SDRIVE as a UI for selecting boot images. No buttons or LCD display for now (I just reset the Arduino if I want to get back to SDRIVE image).


    I have noticed that while most of the software (ATR) that I have tested runs fine, a lot of disk images do not run, or crash. Not sure if due to needing more than 64k, or disk protection, or NTSC/PAL issues, or my flaky SIO wiring, or something the SIO2Arduino doesn't support.


    For me, making the SIO2Arduino was the quickest/easiest way of getting a disk drive for my 600XL. But the SIO2SD (lotharek) looks pretty good, I'm very tempted to buy one.







  4. Very interested in this project!


    Will 5200Bas be able to compile for the 8-bit computers also?


    It should be possible to allow for building an 8K image to go in "Cartridge A" memory slot (0xA000 to 0xBFFF). Would require use of alternative memory map. I will do some investigation.

    • Like 1

  5. Does this program work with Atari 5200 roms also ?. I want to convert some Atari 5200 roms to Car format. Is there som other tool for this also ?


    I just found out it can be used with 5200 roms. So nevermind the question.. Great Tool .. Thanks :)

    Why exactly do you want the roms in CAR format?


    It's a very bad idea to "spoil" Atari 5200 roms by adding headers and other crap.

    - Many 5200 emulators expect unmodified rom/bin files of exactly 16k or 32k..

    - If you want to write the rom to a flashcart or an EPROM, it expects 16k or 32k exactly.

    - If can't think of why you need a header on an A5200 rom. If you want extra "metadata" attached to a rom, use a database that links to the rom via its crc.


    I'm sure other people will have their own opinions, but they are wrong.

  6. OK so I think the 5200BAS python conversion is at a state where it's basically useable, so if you want to grab it and mess around:




    (You will need Python 3 installed on your PC).


    Non-exhaustive list of changes/updates (v1.97 conversion):

    1. Straight conversion from QBX code to Python code
    2. Combined includel.bas into the main python script
    3. Modifications to strings and arrays to better suit Python lists and dictionaries
    4. Descriptive variable names
    5. Try reduce global variables and scope everything better
    6. Most error messages updated to provide more specific info (user-friendliness)
    7. Bug fixes to some small code and logic errors
    8. Python script now calls DASM/TASM with the compiled asm output as input to the assembler
    9. SCREEN command now supports ANTIC modes 2 to 14 (sets up display list depending on mode)
    10. Added some more examples (pm.bas, joytest.bas)
    11. 5200basl.py now runs the assembler (DASM) if the BASIC code compiles to asm without error.
    12. Added warning output if dlist/sprites/screen/charset not on correct page/1K boundary, or in invalid address
    The "hello.bas" and "pm.bas" examples show how to use 5200BAS as a beginner (ie: without using POKEs or inline assembly).
    Other examples by 3rd parties are credited in their respective folders.
    I have only test-built hello.bas, pm.bas, joytest.bas and jumpong2.bas.
    However there are some things that can be done to make 5200BAS more user-friendly and beginner-friendly (ie: reduce need to POKE, better manage the addresses of resources etc), as I've come to realise that 5200BAS should be positioned for beginners or maybe quick prototyping of ideas. This because if you have a more advanced project, you may as well do your project in ASM and spend your time battling with ASM rather than spend your time battling with wondering why 5200BAS code is not compiling/working.
    Feedback greatly appreciated as always.

  7. Progress update:

    Spent some time converting Dan Boris' DASM player-missile example ("52pm.txt") to 5200BAS, which resulted in some bug fixes in the python code, and adding some more items to the list of improvements that could be added to 5200BAS, eg:


    POKE $1000, $77 not possible (have to use "A=$77 : POKE $1000,A")


    Error messages need to be more concise.


    Also need to compare 5200BAS with Batari basic.

  8. There are only very minor differences between DASM and TASM syntax, so it's easy for 5200BAS to switch between the two (using if() statements sprinkled lightly thru the code).

    Not sure how similar ca65 syntax is. If it is not very similar, then to support it would probably require some significant changes.

    Maybe someone can make a quick list of the differences between DASM and ca65 syntax.

    Or maybe there is an existing tool to translate from DASM/TASM to ca65.

    Edit: Have checked out ca65 - seems to use C-style linking and sections. 5200BAS would need some major changes to support it.


    Do you think the asm syntax could be modified for ca65 from the cc65 suite? As it's well supported, portable, and is very configurable in term of targets.

  9. Yes thanks for the web.archive,org link ricortes - seems to have all the original files/info.


    I already have the 5200BAS documentation, the new Python compiler and some examples on github. But like I said just waiting for feedback from calamari.


    5200BAS also seems easily modifiable to output executable or cart image for the Atari 8-bit computers too, would make building a game for both 5200 and 8-bit computer doable, would just have to sort the memory map differences. Other 6502 targets are possible, but would require some work. Also there are probably Batari basics or similar for 2600/7800/Lynx.


    5200BAS does let you use inline assembly if you want, but you don't have to.


    It's also a pretty low-level BASIC, so generates very fast assembly output.


    Maybe someone who's up to date with latest DASM / TASM can advise on which versions work on Windows 7/8/10, and if they available on Linux/Mac?

  10. So I have finally converted the 5200BAS compiler (originally written in QuickBasic) to Python, in order to make it more portable. The python version was developed on Windows, but should run on Mac or Linux too.


    At this point I am waiting on feedback from the original 5200BAS author (calamari), and have only tested with DASM and one sample (need to test with TASM and some more samples).

    • Like 4

  11. Hi lynxianer. Sqrxz would be nice on the Lynx, but very difficult to port for many reasons:


    - Sqrxz uses SDL for its many ports. There is no SDL for Lynx. (ie: Sqyrxz assumes a more powerful system)

    - Sqrxz is designed for 320x240 resolution. Lynx is 160 x 102.

    - Sqxrz uses MOD tracker music. Lynx may have some kind of MOD tracker, but not enough to support Sqrxz music / effects properly.


    Better to create a game that is designed specifically for the Lynx.


    When SYNC is toggling sometimes, then it seems that the OS could start the very first part of coldstart (RESET) routine. First is to watch every D0...D7 and A0...A15 line. I´ve had some bad CPUs in the past where only one address line was broken. In some cases the system could start, but crashes after a few opcodes, of course. You can see this immediately with your scope.


    You can use NTSC ANTIC or GTIA for testing, you also should get a picture, but it´s black/white. And if you have a very old "PAL only" television or monitor, the picture may roll. But for a quick test it´s ok.


    In over 80% of these issues bad DRAM is the reason why the computer won´t start. Even when there are only some bits bad, when the CPU´s stack ($0100-$01FF) is affected, the OS-ROM coldstart subroutine will return to Nirvana - computer hangs. So changing the DRAMs is the first thing you should do. You can use any 4164 DRAM (as also found in some C64, Apple II and some other 8-Bit machines) or 41256 DRAMs (found on a lot of Amiga 500 memory expansions, all Atari ST 260,520,1040 ST/STF (not STE) and so on...).



    Thanks Jurgen

    All the address lines have pulses, but only 2 data lines seem to have proper pulses.

    My 800XL has 4564 RAM chips. I will try swap in some 4164 chips from my broken Apple II and an old XT motherboard.

    Maybe I will test my RAM using Arduino:



    I also have a very cheap USB logic analyser that I need to learn...

    • Like 1

  13. Seems like the RESET is actually working as expected (I was previously measuring PIN 14 of U19, not pin 8 (doh!)). (See attached reset1,jpg). There is a delay of about 350ms after power on, before RESET goes high. (C49 is charged to about 1.6V before U19 pin 8 goes high).


    Also attached are traces from the SYNC pin on the 6502 (sync signal in cyan).






  14. For the purpose of testing it's fine to use the Antic from NTSC 5200.

    Swapped in the ANTIC from my 5200. No change.


    I was checking the reset circuit again, according to Sams troubleshooting guide. I noticed that there is no delay between power on and 5V on pin 8 of U19 (74LS14). See attached screenshot. Checked capacitor C49 (47uF), it takes 20+ seconds to charge up to around 5V. Is this normal?


    PS: Thanks for all your replies, I wasn't expecting so much help :)


  15. OS is unable to start early initialization. GTIA will often/usually display a reddish brown as background colour on startup, this is normally cleared by OS startup within about 1/2 second.


    Bad Ram won't necessarily be the cause though if the Ram is outputting data in an unsolicited way it could crash the CPU.

    Easy way to test, remove all the Ram, easy so long as it's socketed that is.


    My order of suspicsion would be CPU, Antic, MMU, OS Rom. This is a lot easier to debug if you have a similar known good machine to test swap components.

    I'll try removing all the RAM (luckily everything is socketed). What should happen if I boot without RAM?

    Edit: Removed all the RAM. No difference (red screen as before).


    I have already swapped the CPU with the one from my broken 5200 (unknown condition). No difference.


    My 5200 is NTSC, so I don't think I can swap its ANTIC into the PAL 800XL.


    Atari 600/800s are extremely rare in these parts, difficult to find a known good machine.

  16. Hi, I have a PAL 800XL with red screen syndrome.


    I have been trying to troubleshoot the cause of the fault (using the field service and Sams manual), would appear to be something wrong in the address decoding, mmu or roms. I'm kind of stuck now until I can get hold of some chips to swap out.


    Anyway, I noticed that the signal on the data bus looks a little weird. See attached oscilloscope pics (The light blue signal is a line on the address bus, and the yellow is a line on the data bus).


    Anyone seen this before or know what causes it?


    Cheers - James







  17. My 2c off the top of my head:


    1. Keep it simple and low cost

    2. Try to avoid pitfalls of similar projects (scope/cost creep, redesign, runaway release date)

    3. What differentiates your project vs MIST / MCC-216 /etc ?

    4. Many retro players/collectors have a CRT TV / monitor specially for playing old games on, so composite output would be nice.

    5. Make the project "open" or collaborate - you won't have time to do everything yourself.


    I would definately buy an FPGA system for $150 or less.


    Best of luck with your Zimba project.

  • Create New...