941225:
~~~~~~~
* Skrev färdigt C versionen av testprogrammet. Började fixa alla
buggar (fler än i första versionen av asm-ver av testprogrammet).
* Slösade resten av dagen på att hitta en konstig bugg som gjorde
att hotkeyarna slutade repetera efter att de hade repeterat 4
gånger.
Hittade felet då jag startade MemSnapII och märkte att programmet
allokerade ca 1k minne varje sekund. ListView gadgeten sätter
IDCMP_INTUITICKS flaggan (genom LISTVIEWIDCMP) och programmet fick
då ett meddelande 50 ggr/s. Jag hade använt fel ROM rutin för att
skicka tillbaka meddelandet: ReplyMsg i stället för GT_ReplyIMsg.
Konstigt att jag inte märkte det 7 timmar tidigare... (det var den
sista raden i hela testprogrammet förutom alla ([}{]) tecken som
används i C).
* Gjorde två små rutiner för C-versionen av testprogrammet för att
kunna blinka med ljudfiltret.
* Det verkar som att C-kompilatorerna inte kan läsa ett longword från
två word variablar direkt efter varandra.
Det gick att ordna på ett konstigt sätt som borde fungera med alla
C-kompilatorer.
long coords;
coords = (LONG)imsg->MouseX << 16 | imsg->MouseY;
motsvarar i assembler (om imsg finns i A0 och coords sparas i 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
eller lite optimerat:
move.w im_MouseX(a0),d0 ; coords = MouseX
swap d0 ; x coord i övre wordet
move.w im_MouseY(a0),d0 ; y coord i nedre wordet
eller helt optimerat:
move.l im_MouseX(a0),d0 ; X coord i övre, Y coord i nedre word
Converted on 19 Jul 1996 with RexxDoesAmigaGuide2HTML by Michael Ranner.