Open GoogleCodeExporter opened 9 years ago
I also notice there is assembly language at video_gen.cpp.
__asm__ __volatile__ (
//save PORTB
"IN r16,%[port]\n\t"
"ANDI r16,0xFD\n\t"
".macro output\n\t"
"BLD r16,0\n\t" //output pin of the port here pinB0
"OUT %[port],r16\n" //and on the last line of asm
".endm\n"
".macro pixeldelay\n\t" // delay time for setting pixel width
"NOP\n\t" // one can be removed for smaller
"NOP\n\t" // pixels dont forget to remove the
"NOP\n\t" // nop at the start of byteshift
".endm\n"
".macro byteshift\n\t"
"NOP\n\t"
"BST __tmp_reg__,7\n\t"
"output\n\t"
"pixeldelay\n\t"
"BST __tmp_reg__,6\n\t"
"output\n\t"
"pixeldelay\n\t"
"BST __tmp_reg__,5\n\t"
"output\n\t"
"pixeldelay\n\t"
"BST __tmp_reg__,4\n\t"
"output\n\t"
"pixeldelay\n\t"
"BST __tmp_reg__,3\n\t"
"output\n\t"
"pixeldelay\n\t"
"BST __tmp_reg__,2\n\t"
"output\n\t"
"pixeldelay\n\t"
"BST __tmp_reg__,1\n\t"
"output\n\t"
"pixeldelay\n\t"
"BST __tmp_reg__,0\n\t"
"output\n"
".endm\n\t"
//output thingy
"LD __tmp_reg__,X+\n\t" //1
"byteshift\n\t"
"LD __tmp_reg__,X+\n\t" //2
"byteshift\n\t"
"LD __tmp_reg__,X+\n\t" //3
"byteshift\n\t"
"LD __tmp_reg__,X+\n\t" //4
"byteshift\n\t"
"LD __tmp_reg__,X+\n\t" //5
"byteshift\n\t"
"LD __tmp_reg__,X+\n\t" //6
"byteshift\n\t"
"LD __tmp_reg__,X+\n\t" //7
"byteshift\n\t"
"LD __tmp_reg__,X+\n\t" //8
"byteshift\n\t"
"LD __tmp_reg__,X+\n\t" //9
"byteshift\n\t"
"LD __tmp_reg__,X+\n\t" //10
"byteshift\n\t"
"LD __tmp_reg__,X+\n\t" //11
"byteshift\n\t"
"LD __tmp_reg__,X+\n\t" //12
"byteshift\n\t"
"LD __tmp_reg__,X+\n\t" //13
"byteshift\n\t"
"LD __tmp_reg__,X+\n\t" //14
"byteshift\n\t"
"LD __tmp_reg__,X+\n\t" //15
"byteshift\n\t"
"LD __tmp_reg__,X+\n\t" //16
"byteshift\n"
"EndLine_%=:\n\t"
"CBI %[port],0\n\t"
// assembly variable IO:
:
: [port] "i" (_SFR_IO_ADDR(PORTB)),
"x" (screenptr)
: "r16" // try to remove this clobber later...
);
renderLine+=16;
Original comment by darwins...@gmail.com
on 6 Aug 2015 at 10:36
Original issue reported on code.google.com by
darwins...@gmail.com
on 6 Aug 2015 at 10:35