sanny Posted September 19, 2016 Share Posted September 19, 2016 Hi, is it possible to programmatically check if separate CPU/Antic accesses are supported on a RAM extenstion? If yes, how? regards, chris Quote Link to comment Share on other sites More sharing options...
MaPa Posted September 19, 2016 Share Posted September 19, 2016 (edited) Simply ask the user Maybe it can be much easier but I would prepare some simple display list in extended RAM with DLI (in which set some flag that the DLI was run) and the same WITHOUT DLI in standard RAM at the same memory location. Set separate access for ANTIC to the extended RAM, enable DLI, wait one frame and check for the flag... Edited September 19, 2016 by MaPa Quote Link to comment Share on other sites More sharing options...
sanny Posted September 19, 2016 Author Share Posted September 19, 2016 Simply ask the user That's not really "programmatically", is it? Maybe it can be much easier but I would prepare some simple display list in extended RAM with DLI (in which set some flag that the DLI was run) and the same WITHOUT DLI in standard RAM at the same memory location. Then enable DLI, wait one frame and check for the flag... Yeah, that's a good idea. Quote Link to comment Share on other sites More sharing options...
MaPa Posted September 19, 2016 Share Posted September 19, 2016 That's not really "programmatically", is it? Sure it is.. you have to program to display the question, get the user input and process it Quote Link to comment Share on other sites More sharing options...
xxl Posted September 19, 2016 Share Posted September 19, 2016 in DisplayList set LMS $4000, store to GRAFPx and check KOLPxPF :-) 1 Quote Link to comment Share on other sites More sharing options...
sanny Posted September 19, 2016 Author Share Posted September 19, 2016 in DisplayList set LMS $4000, store to GRAFPx and check KOLPxPF :-) Could you elaborate a bit more? Quote Link to comment Share on other sites More sharing options...
flashjazzcat Posted September 19, 2016 Share Posted September 19, 2016 Peter Dell's explanation of the method: You can using the PM collision registers to do that. Put zeros in the normal bank and $FF on the XRAM bank, then set PMBASE to $40 and HPOS to $80 or so.Put some graphics there, too then check if GTIA detects a collision between PM and playfield. Only takes one frame and you can just set all colors to black, so nobody will notice. But he adds: While this is possible, you should consider coding in a way that does not rely on separate CPU/ANTIC access. Everything else will limit your customer base. http://atariage.com/forums/topic/251634-130xe-and-antic-cycle-stealing/?do=findComment&comment=3493748 1 Quote Link to comment Share on other sites More sharing options...
MaPa Posted September 19, 2016 Share Posted September 19, 2016 You need to setup two display lists (standard and extended RAM), one with no playfield data (empty dlist) and another with some playfield data, enable PMG, set GRAFx to fill PMG stripe on screen, set it's position that it will collide with the possible playfield data and then check collision register. 1 Quote Link to comment Share on other sites More sharing options...
retrocanada76 Posted September 19, 2016 Share Posted September 19, 2016 Peter Dell's explanation of the method: But he adds: While this is possible, you should consider coding in a way that does not rely on separate CPU/ANTIC access. Everything else will limit your customer base. http://atariage.com/forums/topic/251634-130xe-and-antic-cycle-stealing/?do=findComment&comment=3493748 That's funny because using extended RAM limits your customer base, as well as requiring 64k, 48k, 32k and 16k, Not to forget the most limiting factor: PAL ONLY. 3 1 Quote Link to comment Share on other sites More sharing options...
sanny Posted September 19, 2016 Author Share Posted September 19, 2016 Ok. I think I understood. For a simple test program which outputs "supported yes/no", started from DOS, I think MaPa's idea is better. The other method will change/flicker the screen, IIUC. MaPa's method could be made to be "flickerless". So, another question: For extensions with much memory (many banks), is this check needed for every bank, or can one say if one bank works, any bank works (don't know offhand if such a > 128KB configuration could be possible with the 8 bits of PORTB without disturbing the CPU/Antic bits)? Quote Link to comment Share on other sites More sharing options...
xxl Posted September 19, 2016 Share Posted September 19, 2016 with one DLIST this is also possible: lda #4 jsr $ef9c ; gr.4 ldy #4 lda $230 sta $80 lda $231 sta $81 lda #$00 @ sta ($80),y iny eor #$40 bne @- ; LMS $4000 lda #%11001111 sta $d301 sta $4000 ; ext ram lda #%11011111 sta $d301 lda #$00 sta $4000 ; base ram @ lda $d40b bne @- sta $d40a sta $d40a ; wait sta $d01e ; hitctr lda #$ff sta $d00d ;graf lda #$31 sta $d000 ;pos @ lda $d40b ; wait bne @- lda $d004 ; p0pf A=1 - means 100% compatible 2 Quote Link to comment Share on other sites More sharing options...
Mathy Posted September 19, 2016 Share Posted September 19, 2016 Hello sanny You only have to test one bank of the extended memory. The banks either all have separate ANTIC and CPU access or none of them have it. I once developed a 1MB upgrade for the XEGS. My XEGS has 1MB extended memory, 64 kB of main RAM, separate access of ANTIC and CPU plus full software control of BASIC, OS ROM/RAM, Selftest and Missile Command. And no flickering. I'm only using $D301. Unfortunately, I don't have the knowledge to turn it into a marketable product that will work on all XLs and XEs. Sincerely Mathy 2 Quote Link to comment Share on other sites More sharing options...
sanny Posted September 19, 2016 Author Share Posted September 19, 2016 Sure it is.. you have to program to display the question, get the user input and process it How would you avoid obnoxious users giving a wrong answer? 1 Quote Link to comment Share on other sites More sharing options...
tane Posted February 11, 2021 Share Posted February 11, 2021 (edited) A program to test the presence of extended memory (130XE): org $600 ; Address of this segment ; Init lda #$00 ; Disable the display sta DMACTL sta SDMCTL lda PORTB ; Disable BASIC on XL/XE ora #$02 sta PORTB lda #$01 sta $0244 ; Coldstart ; Init end ;Base 64kb RAM: lda #%11111111 ;Set Base 64kb RAM ($FF) sta $d301 lda #$10 ;It should be stored to Base 64kb RAM sta $4000 ;Bank 1: lda #%11000011 ;Set Extended 64kb RAM: 16kb bank 1 ($C3) to $4000-$7999 sta $d301 lda #$01 ;It should be stored to bank 1 sta $4000 ldy $4000 ;Back to main RAM: lda #%11111111 ;Set Base 64kb RAM ($FF) sta $d301 sty $4001 ;It should be stored to Base 64kb RAM ;Bank 2: lda #%11000111 ;Set Extended 64kb RAM: 16kb bank 2 ($C7) to $4000-$7999 sta $d301 lda #$02 ;It should be stored to bank 2 sta $4000 ldy $4000 ;Back to main RAM: lda #%11111111 ;Set Base 64kb RAM ($FF) sta $d301 sty $4002 ;It should be stored to Base 64kb RAM ;Bank 3: lda #%11001011 ;Set Extended 64kb RAM: 16kb bank 3 ($CB) to $4000-$7999 sta $d301 lda #$03 ;It should be stored to bank 3 sta $4000 ldy $4000 ;Back to main RAM: lda #%11111111 ;Set Base 64kb RAM ($FF) sta $d301 sty $4003 ;It should be stored to Base 64kb RAM ;Bank 4: lda #%11001111 ;Set Extended 64kb RAM: 16kb bank 4 ($CF) to $4000-$7999 sta $d301 lda #$04 ;It should be stored to bank 4 sta $4000 ldy $4000 ;Back to main RAM: lda #%11111111 ;Set Base 64kb RAM ($FF) sta $d301 sty $4004 ;It should be stored to Base 64kb RAM loop jmp loop run $600 ;Start this program 130XE: 65XE: 130XE Memory Management.pdf Edited February 11, 2021 by tane Quote Link to comment Share on other sites More sharing options...
+Nezgar Posted February 20, 2021 Share Posted February 20, 2021 Do the methods posted so far also test for machines where ANTIC banks separately (like a stock 130XE / COMPY upgrade), or with the CPU (like some RAMBO/PETERSON style upgrades?) or of course not at all, ANTIC stays in base ram all the time... Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.