Ich habe mal versucht zu gucken woran es liegt. Aber irgendwie fehlt es mir am nötigen Wissen dazu.
Ich habe das TOS 1.04 mit TT-Digger de-assembliert (richtig geschrieben?) und wollte herausfinden, wo sich evnt_dclick befindet und wo diese Funktion seine Werte sichert.
Glücklicherweise sind die Adressen der Systemvektoren dokumentiert. Bei Adresse $88 befindet sich der Trap 2 Vektor, welcher für AES und VDI zuständig ist. Also musste ich nur schauen, wo diese Adresse beschrieben wird (ist ja zunächst leer).
FC920A: move.l #$00FC9332,$00000084.l ; 21774 00FC933200000084# 2
FC9214: move.l $00000088.l,$00001818.l ; 21771 0000008800001818#
FC921E: move.l #$00FC9278,$00000088.l ; 21774 00FC927800000088# x
Jetzt noch bei FC9278 schauen und dann müsste da ja der Trap 2 sein.
FC9278: tst.w d0 ; 45100 J@
FC927A: beq.s $00FC92A0 ; 63444 g$
FC927C: cmp.w #$0073,d0 ; B0174 0073 | s
FC9280: bne.s $00FC928A ; 63010 f
FC9282: jsr $00FCAB20.l ; 47271 00FCAB20 N
FC9288: rte ; 47163 Ns
FC928A: cmp.w #-$0001,d0 ; B0174 FFFF |
FC928E: bne.s $00FC9298 ; 63010 f
FC9290: move.l #$00FCAB20,d0 ; 20074 00FCAB20 <
FC9296: rte ; 47163 Ns
FC9298: move.l $00001818.l,-(a7) ; 27471 00001818 /9
FC929E: rts ; 47165 Nu
FC92A0: movea.l $00FE857E.l,a7 ; 27171 00FE857E .y ~
FC92A6: clr.w -(a7) ; 41147 Bg
FC92A8: bsr $00FC8126 ; 60400 EE7C a |
FC92AC: illegal ; 45374 J
FC92AE: rte ; 47163 Ns
In D0 steht beim Aufruf $73 für VDI und $200 für AES. VDI wäre also demnach bei FCAB20. Wir wollen AES und gucken demnach bei FC928A weiter. Und da blick ich nicht mehr so durch.
Schau ich hingegen bei FCAB20 weiter, so taucht dort auch $200 auf und es werden Offsets für Sprünge berechnet. Und da hört es bei mir zZ auf.
FCAB20: movem.l d1-d7/a0-a6,-(a7) ; 44347 7FFE H
FCAB24: movea.l d1,a0 ; 20101 A
FCAB26: lea $00002AE0.l,a1 ; 41771 00002AE0 C *
FCAB2C: lea $00001B1C.l,a3 ; 43771 00001B1C G
FCAB32: movea.l (a0)+,a2 ; 22130 $X
FCAB34: move.l a2,(a1)+ ; 21312 "
FCAB36: move.l (a0)+,(a1)+ ; 21330 "
FCAB38: movea.l (a0)+,a4 ; 24130 (X
FCAB3A: move.l a3,(a1)+ ; 21313 "
FCAB3C: move.l (a0)+,(a1)+ ; 21330 "
FCAB3E: move.l (a0)+,(a1)+ ; 21330 "
FCAB40: move.w $0002(a2),d0 ; 30052 0002 0*
FCAB44: move.w d0,-(a7) ; 37400 ?
FCAB46: beq.s $00FCAB7A ; 63462 g2
FCAB48: move.w #$0200,d1 ; 31074 0200 2<
FCAB4C: cmp.w d1,d0 ; B0101 A
FCAB4E: ble.s $00FCAB56 ; 67406 o
FCAB50: move.w d1,d0 ; 30001 0
FCAB52: move.w d1,$0002(a2) ; 32501 0002 5A
FCAB56: move.w d0,d1 ; 31000 2
FCAB58: asr.w #3,d0 ; E3100 @
FCAB5A: andi.w #$0007,d1 ; 01101 0007 A
FCAB5E: add.w d1,d1 ; D1101 A
FCAB60: neg.w d1 ; 42101 DA
FCAB62: jmp $00FCAB76(pc,d1.w) ; 47373 1012 N
FCAB66: move.l (a4)+,(a3)+ ; 23334 &
FCAB68: move.l (a4)+,(a3)+ ; 23334 &
FCAB6A: move.l (a4)+,(a3)+ ; 23334 &
FCAB6C: move.l (a4)+,(a3)+ ; 23334 &
FCAB6E: move.l (a4)+,(a3)+ ; 23334 &
FCAB70: move.l (a4)+,(a3)+ ; 23334 &
FCAB72: move.l (a4)+,(a3)+ ; 23334 &
FCAB74: move.l (a4)+,(a3)+ ; 23334 &
FCAB76: dbf d0,$00FCAB66 ; 50710 FFEE Q
FCAB7A: jsr $00FCB684.l ; 47271 00FCB684 N
FCAB80: movea.l $00002AE0.l,a0 ; 20171 00002AE0 y *
FCAB86: move.w (a7)+,$0002(a0) ; 30537 0002 1_
FCAB8A: movem.l (a7)+,d1-d7/a0-a6 ; 46337 7FFE L
FCAB8E: move.w $00001860.l,d0 ; 30071 00001860 09 `
FCAB94: rts ; 47165 Nu
FCAB96: movea.l $0002(a7),a1 ; 21157 0002 "o
FCAB9A: move.w (a1),d2 ; 32021 4
FCAB9C: and.w #$0FFF,d2 ; C2174 0FFF |
FCABA0: addq.l #2,a1 ; 52211 T
FCABA2: move.l a1,$0002(a7) ; 27511 0002 /I
FCABA6: cmp.w #$000F,d2 ; B2174 000F |
FCABAA: bhi.s $00FCABBC ; 61020 b
FCABAC: lsl.w #2,d2 ; E2512 J
FCABAE: movea.l $00FCABD4(pc,d2.w),a1 ; 21173 2024 "{ $
FCABB2: movem.l d3-d7/a3-a5,-(a7) ; 44347 1F1C H
FCABB6: jsr (a1) ; 47221 N
FCABB8: movem.l (a7)+,d3-d7/a3-a5 ; 46337 38F8 L 8
FCABBC: rte ; 47163 Ns
edit: Ah, in D1 steht die Adresse des Parameterblock.