Bug fix. It just did'nt work.
authorceriel <none@none>
Tue, 22 Jul 1986 15:11:09 +0000 (15:11 +0000)
committerceriel <none@none>
Tue, 22 Jul 1986 15:11:09 +0000 (15:11 +0000)
mach/m68k4/libem/ara.s

index bc90ea2..929ada9 100644 (file)
 .aar:
        move.l  4(sp),a0        ! descriptor address
        move.l  8(sp),d0        ! index
-       move.l  12(sp),a1       ! base address
        sub.l   (a0),d0         ! index - lower bound : relative index
        move.l  8(a0),-(sp)     ! # bytes / element
        move.l  d0,-(sp)
        jsr     .mlu
+       move.l  12(sp),a1       ! base address
        add.l   d1,a1           ! address of element
        move.l  (sp)+,a0        ! return address
-       add.l   #12,sp          ! pop arguments
-       move.l  a1,-(sp)        ! returned on stack
+       add.l   #8,sp           ! pop arguments
+       move.l  a1,(sp)         ! returned on stack
        jmp     (a0)
 
 .lar:
        move.l  12(sp),a1
        sub.l   (a0),d0
        move.l  d0,-(sp)
-       move.l  8(a0),d0
-       move.l  d0,-(sp)
+       move.l  8(a0),-(sp)
        jsr     .mlu
+       move.l  12(sp),a1
+       move.l  4(sp),a0
        add.l   d1,a1           ! address of element
        add.l   8(a0),a1        ! a1++ because of predecrement
        move.l  (sp)+,a0        ! return address
        add.l   #12,sp          ! pop parameters
        clr.l   d1              !?nodig?
+       move.l  8(a0),d0
        asr     #1,d0
        bne     3f
        move.b  -(a1),d1        ! 1 byte element
        move.l  12(sp),a1
        sub.l   (a0),d0
        move.l  d0,-(sp)
-       move.l  8(a0),d0        ! # bytes / element
-       move.l  d0,-(sp)
+       move.l  8(a0),-(sp)
        jsr     .mlu
+       move.l  12(sp),a1
+       move.l  4(sp),a0
        add.l   d1,a1
+       move.l  8(a0),d0        ! # bytes / element
        move.l  (sp)+,a0        ! return address
        add.l   #12,sp          ! pop parameters
        clr.l   d1              !?nodig?