941225: ~~~~~~~ * Finished the C version of the test program. Started to fix all bugs in it (more than in the first version of the assembly language test program). * Spent the rest of this day to find a weird bug that made the hotkeys stop repeating after that they had repeated 4 times. Found the bug when I started MemSnapII and saw that the program allocated around 1k memory every second. The ListView gadget sets the IDCMP_INTUITICKS flag (it's in LISTVIEWIDCMP) and the program got a message every 1/50s. I did use the wrong ROM routine to reply the message: ReplyMsg instead of GU/GT_ReplyIMsg. Weird that I didn't notice this 7 hours earlier... (the error was on the last line in the C source code except for all lines with a lot of ([}{]) chars that is used in C). * Wrote two small assembly language routines to change the LED (sound filter) directly from a function call in C. * It seems that C-compilers can't read a longword from two words right after each other in a structure. It could be done in a complicated way that should work with all C-compilers. long coords; coords = (LONG)imsg->MouseX << 16 | imsg->MouseY; corresponds to this code in assembler (if imsg is in A0 and the coords should be saved in D0): moveq.l #0,d0 ; coords = 0 move.w im_MouseX(a0),d0 ; coords = MouseX lsl.l #16,d0 ; << 16 or.w im_MouseY(a0),d0 ; | MouseY or a bit optimized: move.w im_MouseX(a0),d0 ; coords = MouseX swap d0 ; x coord in the high word move.w im_MouseY(a0),d0 ; y coord in the low word or fully optimized: move.l im_MouseX(a0),d0 ; X coord in high, Y coord in the low
Converted on 19 Jul 1996 with RexxDoesAmigaGuide2HTML by Michael Ranner.