Search found 81 matches
- Sat Mar 26, 2011 2:56 pm
- Forum: Blabla
- Topic: GCC question
- Replies: 3
- Views: 3930
Strike that. Not enough coffee. Your (smth - 1) is executed using integers in C. -1 % 32 = -1, which when re-read as unsigned char is 255. The compiler is correct. You could try (unsigned int)(smth - 1) % 32. However, the solution using & 31 is probably what you mean anyway (as in, you want the low ...
- Sat Mar 26, 2011 2:25 pm
- Forum: Blabla
- Topic: GCC question
- Replies: 3
- Views: 3930
From only this information, it looks like a compiler bug. Nothing %32 should be >= 32 by definition. 68K gcc I assume? What version of the compiler are you using? Can you post the disassembly (use -fsave-temps or objdump -S).
As a workaround, you could do smth=(smth-1)&31. It's more efficient anyway.
As a workaround, you could do smth=(smth-1)&31. It's more efficient anyway.
- Sat Mar 26, 2011 2:20 pm
- Forum: Megadrive/Genesis
- Topic: Super Magic Drive research thread
- Replies: 133
- Views: 268074
- Fri Nov 19, 2010 1:19 am
- Forum: Blabla
- Topic: Devcart wishlist?
- Replies: 42
- Views: 26927
I'm pretty interested in hardware development and I have a bunch of ideas of things I want to do with FPGAs connected to the MD. However, I don't want to go to the trouble and expense of building a full featured flash/RAM cart like the ones in this thread. For me, my ideal devcart would have a passt...
- Sat Sep 11, 2010 9:08 pm
- Forum: Megadrive/Genesis
- Topic: Wierd Interrupt Issue
- Replies: 12
- Views: 7354
Oh yeah. Hadn't noticed that. Here's a larger chunk of disassembled code: // asm volatile ("move.w #0x2000, %sr"); do { // Apparently, stop #0x2000 doesn't seem to work when the Z80 is banging the bus! asm volatile ("stop #0x2000"); 2c0410: 4e72 2000 stop #8192 } while (frame == frame_counter); 2c04...
- Sat Sep 11, 2010 7:39 pm
- Forum: Megadrive/Genesis
- Topic: Wierd Interrupt Issue
- Replies: 12
- Views: 7354
I've never had a problem with GCC's code generator. It's C code generation is pretty decent, and the inline assembler surpasses any other compiler I've used in the past. If you've had problems with GCC nuking your assembly code or hoisting it out of loops, it could be because you haven't properly de...
- Wed Sep 08, 2010 11:58 pm
- Forum: Megadrive/Genesis
- Topic: Wierd Interrupt Issue
- Replies: 12
- Views: 7354
Yes, I meant stop, not halt. asm volatile ("move.w #0x2000, %sr"); do { // Apparently, stop #0x2000 doesn't seem to work when the Z80 is banging the bus! // asm volatile ("stop #0x2000"); } while (frame == frame_counter); 'frame' is a non-volatile local variable, and frame_counter is a volatile glob...
- Mon Sep 06, 2010 1:24 am
- Forum: Megadrive/Genesis
- Topic: Wierd Interrupt Issue
- Replies: 12
- Views: 7354
Well, I think I've solved the problem - or at least worked around it. I'm not sure what the problem was, exactly. I was running the 68K with interrupts off most of the time and using halt 0x2000 to wait for an interrupt to occur, and that was working just fine until the Z80 started pulling data out ...
- Sat Sep 04, 2010 8:30 pm
- Forum: Megadrive/Genesis
- Topic: Wierd Interrupt Issue
- Replies: 12
- Views: 7354
Sorry, yes, that was a bit vague now that I re-read it. It's the 68k VINT that seems to stop. Here's some pseudo-code: 68K: volatile int frame_count; void vint(void) { frame_count++; } void fill_z80_ring() { while (space_in_ring()) { append_command_to_ring(); } } void working() { while (1) { fill_z8...
- Fri Sep 03, 2010 5:35 pm
- Forum: Megadrive/Genesis
- Topic: Wierd Interrupt Issue
- Replies: 12
- Views: 7354
Wierd Interrupt Issue
I have an app that has a 68k component and a z80 component. The two components communicate with a ring buffer at the end of the z80's ram. The z80 spins waiting on the ring buffer to be filled by the 68k. This all seems to work fine, except that once I send a command to the z80 and it starts pulling...
- Thu Jul 15, 2010 12:16 pm
- Forum: Megadrive/Genesis
- Topic: Strange cart on eBay
- Replies: 23
- Views: 19427
- Thu Jul 08, 2010 11:39 am
- Forum: Hardware
- Topic: Making Light gun for LCD TV
- Replies: 45
- Views: 93609
Maybe you could intercept the video signal and use a sync separator to extract hsync and vsync. If you synchronize an internal counter to the TV's beam, you would know where the HV counter was. Then, when you get the trigger signal from the light gun, you would wait until the HV counter reaches the ...
- Wed Jun 16, 2010 12:43 am
- Forum: Hardware
- Topic: SEGA Genesis/Megadrive clone in a FPGA
- Replies: 30
- Views: 35402
Yeah, I guess. I just get a warm fuzzy feeling from coding on real hardware - even if it is an FPGA board! Dunno if anyone looked at http://www.experiment-s.de/en/ . These guys don't just 'emulate', they're pin-compatible with the ST. http://www.experiment-s.de/en/pictures/english/atari-custom-chips...
- Wed Jun 16, 2010 12:26 am
- Forum: Hardware
- Topic: SEGA Genesis/Megadrive clone in a FPGA
- Replies: 30
- Views: 35402
This is pretty cool. I'd be interested in 'enhancing' the capabilities of the Genesis. For example, what could you do if the DACs were really 4-bits per channel instead of 3? The bits are there, the RAM is there, just the LSB in the DAC is missing. Then we'd have 4 palettes of 16 (or 15) out of 4096...
- Wed Jun 16, 2010 12:19 am
- Forum: Tools
- Topic: bss section in asmx
- Replies: 2
- Views: 3621
I've been using GNU binutils (as), built from scratch. It works very well for me. I use custom linker scripts to get the sections in the right place, can use gcc for pre-processed source and the assembler support AT&T and Motorola syntax. I've had no problems with .rodata, .bss or even initialized ....