Jump to content

Rybags's Photo


Member Since 29 Sep 2005
ONLINE Last Active Today, 11:17 PM

#3527936 What a mess...130XE RAM

Posted by Rybags on Thu Jun 9, 2016 7:21 AM

The technique for desoldering is as/more important than the gear used.


Not that a lot of mine has been on XE but the best desolder technique I found, use an iron with tapered tip at about 240 Degrees C.

Apply the heat to the side of chip pins.  So, the soldering iron will be almost parallel with the pin, almost right-angled to the motherboard.

Don't actually touch the motherboard, just allow the heat to transfer.  Then use solder sucker from the non-component side of the motherboard after applying about 10-15 seconds worth of heat.

Once you get good, once per pin will be enough.  Leave the power/Gnd pins with larger traces for last, they're usually harder as the fatter trace acts as a heatsink.  For some chips it's just easier to prize the chip out while applying heat then clean up the residual later.


Using such method you should be able to almost guarantee no damage to the motherboard and you can reuse the ICs too.  Though with faulty Ram you tend to just throw the lot out.


To hold the motherboard during the operation, either a hobby vice or use a cardboard box with slots cut to hold it for you.

#3527411 is there any software for converting atariwin snapshots to cassette files?

Posted by Rybags on Wed Jun 8, 2016 11:58 AM

In almost every case just converting an available Xex to work on tape would be more efficient. Snapshots will tend to be much bigger files though could use compression. A good case though for snapshots would be for when you want to resume an in progress game.

#3521364 Dead Atari 800XL

Posted by Rybags on Tue May 31, 2016 4:32 AM

Usually when you turn on an XL the screen will be entirely reddish brown for about 1/4 second before turning black.

This is good diagnosis evidence.  If the screen remains brown it means the OS is unable to start up, which could mean bad OS Rom, CPU, or MMU (or <other>)

#3521267 Dead Atari 800XL

Posted by Rybags on Mon May 30, 2016 11:35 PM

Occasionally there will be mixed brands of Ram in a machine.


The main thing is that you don't have MT branded Ram, it's by far the most prone to failure.

Replacement Ram chips can be had from various sources, arcade/pinball part suppliers are a good source.

The requirement for 8-bit Atari is 250ns access speed or better.  Generally any replacement Ram you get for XL or later will meet that requirement.

#3521231 Changing a character set in a display list interrupt

Posted by Rybags on Mon May 30, 2016 9:50 PM

You could equally do what you want with the same block of code for 2 or more DLIs.  Just maintain an index then keep stuff like chset values and colours in tables.


That said, your program has a bug.  When it's initializing there's no way to know which DLI will trigger first, so each run there's random chance of where each chset appears (of course the one that the OS sets in VBlank will be always right).


The trick there is either use indexes and same routine like I said, then set the index value to 0 again in a VBlank Immediate routine.

Or have the initialize part of your program wait for the active scanline to be outside the display.


  lda $14 ; get rtclock value
waitvb  cmp $14
  beq waitvb ; wait until rtclock changes, this means the active scanline will be offscreen

#3519550 Gold Atari 800

Posted by Rybags on Sat May 28, 2016 10:00 AM

OK, the question that has to be asked:


Does the gold improve RFI suppression?

#3519486 1064XL Schematics?

Posted by Rybags on Sat May 28, 2016 7:17 AM

Why would you want to do it that way?


In my mind, the sensible option for something onboard the 1090 would be provision to plug in 512K, 1 Meg, <whatever> worth of modern day SRAM.

Then have an option jumper as to whether you override onboard Ram (for 16K 600XL) or run only as expanded.


But the problem with that and some Ram expansions - VBXE relies on itself being able to be the sole provider of override to system Ram which makes it incompatible with some types of Ram expansion.

#3518897 New Demo release - MemoPad 480i

Posted by Rybags on Fri May 27, 2016 10:22 AM

I'll have to look at the program but fairly sure it doesn't do any processing on the font data.


The fonts themselves alternate between fields, one displays scanlines 0, 2, 4 etc. and the other displays scanlines 1, 3, 5 etc.

Not sure if there's many tools around that will deal with that requirement.  Plus the way I have them in the BMP isn't suited to easy extraction either.

Pretty sure I just did a Basic program that did a linear read of the BMP and placed into memory the way it was needed, then just save the data out as resource files.

#3518608 Cyan Engineering Floppy Drive?

Posted by Rybags on Thu May 26, 2016 9:41 PM

A single stereo track is 0.6 mm + 0.3 seperation = 0.9mm, that equates to only 28.22 tracks per inch.  A standard 40 track floppy is 48 TPI.

Also, cassette heads are much more bulky so you'd probably lose several tracks at each end.

I also wonder could it operate without an erase head.  And what sort of density could be supported?  Maybe the drive speed would need to be significantly lowered, which in itself would probably result in a pretty poor transfer rate.

#3517981 33 year old programming mystery solved

Posted by Rybags on Thu May 26, 2016 7:04 AM

I used to use tongs, but people would complain when I put them back in the salad bowl.

#3516507 What is meant by the ABBUC advice....

Posted by Rybags on Tue May 24, 2016 12:30 AM

You could get it even more compact.


repeat  bit ptrig7
  bmi repeat


Also, it's often the case your DList will be somewhere fairly high in memory.  If it's fixed location above $8000 just put the high byte in PTRIG.


Alternate to my method - two STA WSYNC instructions in a row should guarantee that VBlank doesn't occur between the DList stores.

#3516389 What is meant by the ABBUC advice....

Posted by Rybags on Mon May 23, 2016 7:31 PM

Actually there is the chance a VBlank could occur with that method I mentioned.  If an IRQ occurred after the STX then the VBlank during servicing of that.  But it wouldn't matter as Stage 2 would be skipped anyway. 

#3516279 What is meant by the ABBUC advice....

Posted by Rybags on Mon May 23, 2016 4:51 PM

Actually, for just the DList pointer none of that is necessary.  Just use the same method the OS does with it's SETVBV routine.


  ldx #<new_dlist
  ldy #>new_dlist
  sta wsync
  stx sdslstl
  sty sdslsth


Since NMIs will only occur at cycle 7 (?) of a scanline the write to WSync ensures both parts of the pointer will be written before an NMI can start.  I assume this should still work fine in the worst case DMA situation (wide screen, 40 character mode badline, 3 byte DList instruction, PMG DMA enabled)

#3515265 Maximum line length in basic exceeded by Compute! listing

Posted by Rybags on Sun May 22, 2016 1:37 AM

Yep.  114 characters (3*38) is the default limit you can type, E: limit is 120.  Basic itself actually can accept 256 characters and sets up the input buffer as such which allows longer lines if using e.g. the ENTER "filespec" command.

That limit also allows overflow such that the first half of page 6 can get overwritten.


Also, now famously such exploits are used in the 10-liner Basic game competition.

#3514718 New Demo release - MemoPad 480i

Posted by Rybags on Sat May 21, 2016 12:28 AM

Attached File  Memt617a.zip   4.63KB   40 downloads


I think this is the latest version of the source code.  I developed it using AtAsm but it should be short work to convert to MADs.


There's a seperate resource that has 2 chunks of bitmap data used for the logo at the top (even/odd scanlines in seperate blocks).  I've got the original bitmap as 8-bit BMP but can't seem to find whatever it was I used to build the final executable.

But it's not vital to get it working so I'll upload it later if I can find it, or alternatively just build some raw data files which can be included with INCBIN.