Jump to content
IGNORED

TurboFreezer XL/XE 2011 in a remake of 2016


santosp

Recommended Posts

I've now tested my Freezer with another Incognito and still the same thing with games. I've been using Archon (via .xex) as my test bench. It runs fine on a 130XE with U1MB, but not with my Incognito. When simply activating the Turbo Freezer and then returning to the system, the PM graphics are all scrampled. Here is a screenshot:

post-37301-0-40995100-1460054873_thumb.jpg

 

Also, when I attempted to flash the latest beta firmware for the Freezer, the flash utility hangs.

post-37301-0-48400400-1460055031_thumb.jpg

 

It would be nice to know if either of these work for anyone else using a Turbo Freezer and Incognito.

 

Link to comment
Share on other sites

I've now tested my Freezer with another Incognito and still the same thing with games. I've been using Archon (via .xex) as my test bench. It runs fine on a 130XE with U1MB, but not with my Incognito. When simply activating the Turbo Freezer and then returning to the system, the PM graphics are all scrambled.

Also, when I attempted to flash the latest beta firmware for the Freezer, the flash utility hangs.

I'm able to duplicate the exact same issues here.

Link to comment
Share on other sites

I'm able to duplicate the exact same issues here.

Thanks for testing! At least we know now that both Panos' remake and the original Freezer work (or fail :) identically with the Incognito board.

 

I think it might be worth a try adding a 100pF cap on the Reset line of the Incognito (as close as possible to the CPLD).

 

Another interesting test would be to save an Archon snapshot with the Incognito and then trying to resume it on a real XL/XE (with identical OS and configuration as the Incognito).

 

@Jon: which $D5xx locations to you use in the Incognito BIOS? $D59x could potentially be problematic if the flash write or cart emu switches are set to on on the Freezer.

 

When the flasher locks up can you activate the Freezer? If yes, enter the debugger and use "R" to check the processor registers, especially PC would be interesting to see if it's spinning somewhere.

 

I'd also be interested in the snapshots of Archon and the locked up flasher (if possible). Configure the Incognito to stock XL OS, no RAM upgrade and no PBI stuff, load Archon/Flasher from via SIO and then save the snapshots to a DD Dos2.x ATR and mail that to me. Maybe that'll reveal something.

 

so long,

 

Hias

Link to comment
Share on other sites

Yes, I can activate Freezer when the flasher locks up, but then I found that if I run the flasher from SpartaDOS (off of the Incognito) instead of the MyDOS disk the flasher is on, it works fine.

Here are the register contents when the flasher does lock up:

A X Y S NV-BDIZC PC

D0 E7 AF E4 11100101 C0DF

 

I took a snapshot of Archon from the Incognito system configured as a stock XE with everything disabled and then tried to launch it on an actual stock XE and it didn't work. I will PM the disk image to you.

Link to comment
Share on other sites

I think it might be worth a try adding a 100pF cap on the Reset line of the Incognito (as close as possible to the CPLD).

Sure - I can get this done tomorrow.

 

@Jon: which $D5xx locations to you use in the Incognito BIOS? $D59x could potentially be problematic if the flash write or cart emu switches are set to on on the Freezer.

No $D5xx locations are used by the main BIOS. The PBI BIOS uses RAM at $D500-$D5BF, but if the PBI is disabled there should be no danger of conflicts. Even PBI usage is problematic, however, since it was recently discovered that cartridge writes to CCTL pass through to the IORAM at the same address even when $D1FF = 0. The on-board SDX itself corrupted the partition table for this reason, requiring temporary kludges until a CPLD update is available. The U1MB has no such problem, so there's one clear difference between the two devices.

Link to comment
Share on other sites

I took a snapshot of Archon from the Incognito system configured as a stock XE with everything disabled and then tried to launch it on an actual stock XE and it didn't work. I will PM the disk image to you.

Thanks a lot for the snapshot, I had a look at it and it revealed some very interesting things:

 

I tried to resume the snapshot on my XL and it just locked up. I fired up the Freezer and saw the Atari was spinning at $C0DF - same as in your flasher lockup.

 

$C0DF is the "Halt" location in the XL OS, containing a "JMP $C0DF". Every VBI (unless critic is set) the OS compares $D013 (TRIG3 - the status of the RD5 line, i.e. cartridge present) with $03FA (GINTLK, copy of $D013) and if they don't match (i.e. cart inserted or removed) the OS jumps to that endless "Halt" loop.

 

I checked $03FA with the Freezer and it contained the value $D0 - huh, it should be either 0 or 1, but not $D0 ?!?

 

Also the GTIA shadow memory contained $D0 on almost all locations (except $D010 and $D013) and the ANTIC shadow memory contained $D4 on all locations.

 

The POKEY shadow memory was OK, though.

 

Here's are the memory dumps of Archon, first Panther's snapshot from the Incognito, then the snapshot on my XL:

post-9299-0-82766800-1460321974_thumb.jpgpost-9299-0-49198800-1460322541_thumb.jpg

 

So, something _really_ strange seems to be going on with the incognito on ANTIC and GTIA accesses.

 

The only explanation that I have for the $D4/$D5 values in the shadow memory is that the PBI databus was tri-stated during ANTIC/GTIA writes and the bus-hold logic of Xilinx on the Freezer chip kept the databus at the last value (which would usually be $D0 in case of STA $D0xx and $D4 in case of STA $D4xx - unless there was an ANTIC DMA in the cycle before that). But why would the Incognito tri-state the PBI databus on ANTIC/GTIA writes? It would need separate logic and a busdriver to do that.

 

And, I have absolutely no idea how $D0 ended up in $03FA. The Freezer doesn't drive $D013 at all if the CartEmu is disabled, so the Incognito somehow must be responsible for reading $D0 from $D013. Most certainly that value doesn't come from GTIA (it would only respond with $00 or $01) but the Incognito contains some logic to mimic the RD5/TRIG3 connection that's only present on the XLs.

 

@Panther @Jon could you check what values you get from "?PEEK(53267), PEEK(1018)" in BASIC, with the Freezer plugged and unplugged, and also with SDX on the incognito enabled and disabled?

 

so long,

 

Hias

Edited by HiassofT
Link to comment
Share on other sites

@Panther @Jon could you check what values you get from "?PEEK(53267), PEEK(1018)" in BASIC, with the Freezer plugged and unplugged, and also with SDX on the incognito enabled and disabled?

 

Thank you for looking into this.

Whether SDX is enabled or not, and with the Freezer plugged in or not, both locations always held 208.

Link to comment
Share on other sites

Thank you for looking into this.

Whether SDX is enabled or not, and with the Freezer plugged in or not, both locations always held 208.

Thanks for testing, that's what I was suspecting.

 

Do you have a BASIC cart? If yes, rerun that test with the BASIC cart plugged in, SDX in incognito disabled and the freezer unplugged. Also run it with SDX enabled, once starting the BASIC cart with "CAR" and once starting the built-in BASIC with "BAS".

 

And another tests, without cart, Freezer plugged in, Flash Write switch on the Freezer set to on, all other switches off. Please run once with SDX enabled and once with SDX disabled.

 

When you are in BASIC or at the SDX prompt activate the Freezer, enter the debugger and then type:

DD000
DD400
DIO<1
K<0
DD013
KN<1
DD013
The output should look like this (the important things are the D000 and D400 values and the D013 values - 00 in the first case, 01 in the second case).

post-9299-0-67958200-1460329470_thumb.jpg

 

so long,

 

Hias

Link to comment
Share on other sites

I had actually run them earlier with both a BASIC cartridge and the built-in BASIC for which the results were 208, 208 each time, however, that was with the hard disk disabled and PBI enabled.

I found that with the hard disk enabled, I get 0, 208 when running the cartridge, and 208, 208 when running internal BASIC (with SDX enabled both times).

With SDX disabled, hard disk disabled, and PBI enabled, running from the BASIC cartridge results in 2, 208.

 

SDX enabled, hard disk disabled, PBI enabled, no cart, with Freezer: 208, 208 (flash write enabled)

SDX disabled, hard disk disabled, PBI enabled, no cart, with Freezer: 208, 208 (flash write enabled)

SDX enabled, hard disk enabled, PBI enabled, no cart, with Freezer: 208, 208 (flash write enabled)

SDX disabled, hard disk enabled, PBI enabled, no cart, with Freezer: 0, 208 (flash write enabled)

 

post-37301-0-68337600-1460336933_thumb.jpg

 

I discovered that if I'm in the Freezer menu and hit the keys to enter the Incognito menu, my Incognito settings get messed up.

 

Link to comment
Share on other sites

I found that with the hard disk enabled, I get 0, 208 when running the cartridge, and 208, 208 when running internal BASIC (with SDX enabled both times).

Just to be sure I understand you correctly:

 

You entered "?PEEK(53267), PEEK(1018)" in BASIC and got "0 208" printed on the screen?

 

If that's the case it means reading $D013 on the Incognito results in random values.... Ouch.

 

I discovered that if I'm in the Freezer menu and hit the keys to enter the Incognito menu, my Incognito settings get messed up.

Which keys do you have to hit to enter the Incognito menu? Sorry, I'm totally unfamiliar with that upgrade :)

 

When you are in the Freezer menu the Freezer maps in it's own RAM and ROM at $0000-$3FFF, so the Atari isn't exactly in a normal state.

 

On the Atari XL/XE when you press the reset button (eg to enter the U1MB menu with help+reset) the reset line on the PBI is asserted and the Freezer is reset as well (and unmapping it's RAM/ROM).

 

If activating the Incognito menu involves pressing the System Reset key that probably means the Incognito doesn't emulate the hardware reset key behaviour of the XL/XEs. If System Reset isn't involved scratch that and just don't do it.

 

Anyways: the Incognito seems to have too many bugs and quirks to actually work with the Freezer in a reliable way. You'll have to contact the Incognito devs and ask them to fix these issues so that an Incognito Atari 800 actually behaves like a real Atari XL/XE. As the Incognito is a closed source design there's nothing else we can do about it, only the Incognito developers can fix that.

 

so long,

 

Hias

Link to comment
Share on other sites

Which keys do you have to hit to enter the Incognito menu? Sorry, I'm totally unfamiliar with that upgrade :)

Atari Logo + Reset by default.

 

If activating the Incognito menu involves pressing the System Reset key that probably means the Incognito doesn't emulate the hardware reset key behaviour of the XL/XEs. If System Reset isn't involved scratch that and just don't do it.

Incognito requires system reset to be tied to the RNMI and therefore generates an NMI on reset which is handled by the BIOS. There's also an extra register at $D384 to disambiguate the source of the NMI. Here's the Ultimate reset handler from the new BIOS with the Incognito parts in conditional blocks:

 

	.if .def Incognito
	
	.local TestReset
	pha			; pushing A here, so we don't need to do it in the VBI handler
	lda UltimateRESET	; $D384
	bne NMI.NMIVBI
	lda #0
	sta NMIEN
	sta DMACTL
@
	lda UltimateReset	; wait until reset key is released
	beq @-
	ldx #3
@
	jsr WaitForSync
	dex
	bpl @-
	jmp Main
	.endl
	
	.endif
	




//
//	NMI Handler
//

	.local NMI
	.if .def Incognito
	bit NMIST
	bpl TestReset	; if not DLI, test reset flag (if not reset, it's a VBI)
	.else
	bit NMIST
	bpl NMIVBI
	.endif
	jmp (VDSLST)
	
NMIVBI
	cld
	.ifndef Incognito
	pha
	.endif
	txa
	pha
	tya
	pha
	sta NMIRES
	jmp (VVBLKI)
	.endl

Anyways: the Incognito seems to have too many bugs and quirks to actually work with the Freezer in a reliable way. You'll have to contact the Incognito devs and ask them to fix these issues so that an Incognito Atari 800 actually behaves like a real Atari XL/XE. As the Incognito is a closed source design there's nothing else we can do about it, only the Incognito developers can fix that.

I must admit I'm yet to speak to Candle about the $D5xx write-through issue as well, but I had a feeling some posts back that the flasher hang would somehow be related to TRIG3/GINTLK. I have vague memories of inconsistent Incognito behaviour regarding cartridge interlock when developing UFLASH, but thought nothing of it at the time. Unfortunately I've done all I can in software regarding Freezer compatibility so it's VHDL time, as you say. ;)

Link to comment
Share on other sites

When you are in BASIC or at the SDX prompt activate the Freezer, enter the debugger and then type:

DD000
DD400
DIO<1
K<0
DD013
KN<1
DD013
The output should look like this (the important things are the D000 and D400 values and the D013 values - 00 in the first case, 01 in the second case).

attachicon.gifcarttest.jpg

 

With SDX enabled in the Incognito setup menu and flashing enabled on the Freezer, I get $D0 followed by $01 in $D013 in the above test. Performing the same test again with SDX disabled, I get $00 followed by $D0.

Link to comment
Share on other sites

  • 2 weeks later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

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