1 - Indexed addressing mode gave unwanted sign extends.

They are replaced by additions.
2 - Added pointer checks.
3 - Completed parametrization of addresses of locals.

This commit is contained in:
keie 1984-12-18 17:04:24 +00:00
parent 9ea83d0838
commit 5f41dcd958
3 changed files with 352 additions and 78 deletions

View file

@ -1,5 +1,5 @@
!-------------------------------------------------------------------------- !--------------------------------------------------------------------------
! Laod constant , load local , store local ! Load constant , load local , store local
!-------------------------------------------------------------------------- !--------------------------------------------------------------------------
loc_0: mov d6,-(sp) loc_0: mov d6,-(sp)
@ -46,7 +46,7 @@ ldc_l:
adroff adroff
move.w (a1),d0 move.w (a1),d0
ext.l d0 !ext works only on d register ext.l d0 !ext works only on d register
4: move.l d0,-(sp) !adapt for l , then "move.2l" signextended 4: move.l d0,-(sp)
#ifdef lword #ifdef lword
bmi 0f bmi 0f
clr.l -(sp) clr.l -(sp)
@ -57,7 +57,12 @@ ldc_l:
jmp (a4) jmp (a4)
ldc_q: ldc_q:
#ifdef lword #ifdef lword
tst.l (sp)
bmi 0f
clr.l -(sp) clr.l -(sp)
bra 1f
0: move.l #-1,-(sp)
1:
#endif #endif
jmp (a4) jmp (a4)
@ -80,23 +85,41 @@ lol__7W: mov l_7(a2),-(sp) ; jmp (a4)
lol__8W: mov l_8(a2),-(sp) ; jmp (a4) lol__8W: mov l_8(a2),-(sp) ; jmp (a4)
lol_w0: clr.w d0 lol_w0: clr.w d0
move.b (a3)+,d0 move.b (a3)+,d0
5: asl.l wmu,d0 asl.w wmu,d0
mov 16(a2,d0),-(sp) mov l0(a2,d0),-(sp)
jmp (a4) jmp (a4)
lol_w_1: move.l #-1,d0 lol_w_1: move.l #-1,d0
move.b (a3)+,d0 move.b (a3)+,d0
2: asl.l wmu,d0 asl.w wmu,d0
mov 0(a2,d0),-(sp) mov 0(a2,d0),-(sp)
jmp (a4) jmp (a4)
lol_pw: adroff lol_pw: adroff
move.w (a1),d0 move.w (a1),d0
bra 5b 5: asl.l wmu,d0
add.l a2,d0
move.l d0,a0
#if test
locptr
7: bra e_badptr
6:
#endif
mov l0(a0),-(sp)
jmp (a4)
lol_nw: adroff lol_nw: adroff
move.w (a1),d0 move.w (a1),d0
ext.l d0 ext.l d0
bra 2b 2: asl.l wmu,d0
add.l a2,d0
move.l d0,a0
#if test
locptr
7: bra e_badptr
6:
#endif
mov (a0),-(sp)
jmp (a4)
lol_qnw: move.l (sp)+,d0 lol_qnw: move.l (sp)+,d0
bra 2b bra 2b
lol_qpw: move.l (sp)+,d0 lol_qpw: move.l (sp)+,d0
@ -111,14 +134,28 @@ ldl_0: mov l1(a2),-(sp) !offset code
ldl_w_1: move.l #-1,d0 ldl_w_1: move.l #-1,d0
move.b (a3)+,d0 move.b (a3)+,d0
2: asl.l wmu,d0 2: asl.l wmu,d0
mov word(a2,d0),-(sp) add.l a2,d0
mov 0(a2,d0),-(sp) move.l d0,a0
#if test
locptr
7: bra e_badptr
6:
#endif
mov word(a0),-(sp)
mov (a0),-(sp)
jmp (a4) jmp (a4)
ldl_pw: adroff ldl_pw: adroff
move.w (a1),d0 move.w (a1),d0
5: asl.l wmu,d0 5: asl.l wmu,d0
mov l1(a2,d0),-(sp) add.l a2,d0
mov l0(a2,d0),-(sp) move.l d0,a0
#if test
locptr
7: bra e_badptr
6:
#endif
mov l1(a0),-(sp)
mov l0(a0),-(sp)
jmp (a4) jmp (a4)
ldl_nw: adroff ldl_nw: adroff
move.w (a1),d0 move.w (a1),d0
@ -140,9 +177,15 @@ loe_w0: loe_w1: loe_w2: loe_w3: loe_w4:
sub.w #624,d0 sub.w #624,d0
asl.w #6,d0 asl.w #6,d0
move.b (a3)+,d0 move.b (a3)+,d0
1: ext.l d0 1: asl.l wmu,d0
asl.l wmu,d0 add.l a6,d0
mov 0(a6,d0),-(sp) move.l d0,a0
#if test
extptr
7: bra e_badptr
6:
#endif
mov (a0),-(sp)
jmp (a4) jmp (a4)
lde_lw: adroff lde_lw: adroff
@ -154,15 +197,36 @@ lde_qw: move.l (sp)+,d0
lde_w0: clr.w d0 lde_w0: clr.w d0
move.b (a3)+,d0 move.b (a3)+,d0
1: asl.l wmu,d0 1: asl.l wmu,d0
mov word(a6,d0),-(sp) add.l a6,d0
mov 0(a6,d0),-(sp) move.l d0,a0
#if test
extptr
7: bra e_badptr
6:
#endif
mov word(a0),-(sp)
mov (a0),-(sp)
jmp (a4) jmp (a4)
!------------------------------------------------------------------------------ !------------------------------------------------------------------------------
lil_0: move.l l0(a2),a0 lil_0: move.l l0(a2),a0
#if test
locptr
heaptr
extptr
7: bra e_badptr
6:
#endif
mov (a0),-(sp) mov (a0),-(sp)
jmp (a4) jmp (a4)
lil_1W: move.l l1(a2),a0 lil_1W: move.l l1(a2),a0
#if test
locptr
heaptr
extptr
7: bra e_badptr
6:
#endif
mov (a0),-(sp) mov (a0),-(sp)
jmp (a4) jmp (a4)
lil_pw: adroff lil_pw: adroff
@ -174,7 +238,21 @@ lil_qpw: move.l (sp)+,d0
lil_w0: clr.w d0 lil_w0: clr.w d0
move.b (a3)+,d0 move.b (a3)+,d0
1: asl.l wmu,d0 1: asl.l wmu,d0
move.l l0(a2,d0),a0 add.l a2,d0
move.l d0,a0
#if test
locptr
7: bra e_badptr
6:
#endif
move.l l0(a0),a0
#if test
locptr
heaptr
extptr
7: bra e_badptr
6:
#endif
mov (a0),-(sp) mov (a0),-(sp)
jmp (a4) jmp (a4)
@ -188,7 +266,21 @@ lil_qnw: move.l (sp)+,d0
lil_w_1: move.l #-1,d0 lil_w_1: move.l #-1,d0
move.b (a3)+,d0 move.b (a3)+,d0
1: asl.l wmu,d0 1: asl.l wmu,d0
move.l 0(a2,d0),a0 add.l a2,d0
move.l d0,a0
#if test
locptr
7: bra e_badptr
6:
#endif
move.l (a0),a0
#if test
locptr
heaptr
extptr
7: bra e_badptr
6:
#endif
mov (a0),-(sp) mov (a0),-(sp)
jmp (a4) jmp (a4)
@ -202,20 +294,35 @@ lof_l: adroff
bra 1f bra 1f
lof_q: move.l (sp)+,d0 lof_q: move.l (sp)+,d0
bra 1f bra 1f
lof_1W: move.l #1,d0 lof_1W: move.l wrd,d0
2: asl.w wmu,d0
1: move.l (sp)+,a0 1: move.l (sp)+,a0
mov 0(a0,d0),-(sp) add.l d0,a0
#if test
locptr
heaptr
extptr
7: bra e_badptr
6:
#endif
mov (a0),-(sp)
jmp (a4) jmp (a4)
lof_2W: move.l #2,d0 ; bra 2b lof_2W: move.l wrd+word,d0 ; bra 1b
lof_3W: move.l #3,d0 ; bra 2b lof_3W: move.l wrd+word+word,d0 ; bra 1b
lof_4W: move.l #4,d0 ; bra 2b lof_4W: move.l wrd+word+word+word,d0 ; bra 1b
ldf_l: adroff ldf_l: adroff
move.w (a1),d0 move.w (a1),d0
ext.l d0 ext.l d0
2: move.l (sp)+,a0 2: move.l (sp)+,a0
mov word(a0,d0),-(sp) add.l d0,a0
mov 0(a0,d0),-(sp) #if test
locptr
heaptr
extptr
7: bra e_badptr
6:
#endif
mov word(a0),-(sp)
mov (a0),-(sp)
jmp (a4) jmp (a4)
ldf_q: move.l (sp)+,d0 ldf_q: move.l (sp)+,d0
bra 2b bra 2b
@ -226,20 +333,23 @@ lal_p: adroff
move.w (a1),d0 move.w (a1),d0
bra 1f bra 1f
lal_qp: move.l (sp)+,d0 lal_qp: move.l (sp)+,d0
bra 1f 1: add.l #0+l0,d0
lal_0: pea 16(a2) bra 4f
lal_0: pea l0(a2)
jmp (a4) jmp (a4)
lal_w0: clr.w d0 lal_w0: clr.w d0
move.b (a3)+,d0 move.b (a3)+,d0
asl.l wmu,d0 asl.l wmu,d0
1: add.l #16,d0 add.l #0+l0,d0
bra 3f bra 3f
lal_n: adroff lal_n: adroff
move.w (a1),d0 move.w (a1),d0
ext.l d0 ext.l d0
bra 3f bra 4f
lal_qn: move.l (sp)+,d0 lal_qn: move.l (sp)+,d0
bra 3f 4: add.l a2,d0
move.l d0,-(sp)
jmp (a4)
lal__1: move.l #-1,d0 lal__1: move.l #-1,d0
3: pea 0(a2,d0) 3: pea 0(a2,d0)
jmp (a4) jmp (a4)
@ -249,22 +359,25 @@ lal_w_1: move.l #-1,d0
bra 3b bra 3b
lal_w_2: move.l #-512,d0 lal_w_2: move.l #-512,d0
bra 2b bra 2b
lae_l: adroff lae_l: adroff
move.w (a1),d0 move.w (a1),d0
bra 1f 1: add.l a6,d0
move.l d0,-(sp)
jmp (a4)
lae_q: move.l (sp)+,d0 lae_q: move.l (sp)+,d0
bra 1f bra 1b
lae_w0: lae_w1: lae_w2: lae_w3: lae_w4: lae_w0: lae_w1: lae_w2: lae_w3: lae_w4:
lae_w5: lae_w6: lae_w5: lae_w6:
sub.w #484,d0 sub.w #484,d0
asl.w #6,d0 asl.w #6,d0
move.b (a3)+,d0 move.b (a3)+,d0
asl.w wmu,d0 asl.w wmu,d0
1: pea 0(a6,d0) pea 0(a6,d0)
jmp (a4) jmp (a4)
!--------------------------------------------------------------------------- !---------------------------------------------------------------------------
lxl_1: move.l 16(a2),-(sp) lxl_1: move.l l0(a2),-(sp)
jmp (a4) jmp (a4)
lxl_l: adroff lxl_l: adroff
move.w (a1),d0 move.w (a1),d0
@ -273,9 +386,14 @@ lxl_l: adroff
blt e_oddz blt e_oddz
1: sub.l #1,d0 1: sub.l #1,d0
bra 2f bra 2f
lxl_2: move.w #1,d0 lxl_2: move.l #1,d0
2: move.l a2,a0 2: move.l a2,a0
3: move.l 16(a0),a0 3: move.l l0(a0),a0
#if test
locptr
7: bra e_badptr
6:
#endif
dbra d0,3b dbra d0,3b
move.l a0,-(sp) move.l a0,-(sp)
jmp (a4) jmp (a4)
@ -288,13 +406,18 @@ lxa_l: adroff
move.w (a1),d0 move.w (a1),d0
bgt 1f bgt 1f
blt e_oddz blt e_oddz
pea 16(a2) pea l0(a2)
jmp (a4) jmp (a4)
1: sub.l #1,d0 1: sub.l #1,d0
3: move.l a2,a0 3: move.l a2,a0
2: move.l 16(a0),a0 2: move.l l0(a0),a0
#if test
locptr
7: bra e_badptr
6:
#endif
dbra d0,2b dbra d0,2b
pea 16(a0) pea l0(a0)
jmp (a4) jmp (a4)
!----------------------------------------------------------------------- !-----------------------------------------------------------------------
@ -303,7 +426,7 @@ loi_l: adroff
clr.l d1 clr.l d1
move.w (a1),d1 move.w (a1),d1
bra 8f bra 8f
loi_s0: clr.l d1 loi_s0: move.l #0,d1
move.b (a3)+,d1 move.b (a3)+,d1
8: cmp.w #1,d1 8: cmp.w #1,d1
beq loi_1 beq loi_1
@ -321,16 +444,37 @@ loi_1W: loi_2W: loi_3W: loi_4W:
asl.w wmu,d1 asl.w wmu,d1
5: move.l (sp)+,a0 5: move.l (sp)+,a0
add.l d1,a0 add.l d1,a0
#if test
locptr
heaptr
extptr
7: bra e_badptr
6:
#endif
sub.w #1,d0 sub.w #1,d0
1: mov -(a0),-(sp) 1: mov -(a0),-(sp)
dbra d0,1b dbra d0,1b
jmp (a4) jmp (a4)
2: move.l (sp)+,a0 2: move.l (sp)+,a0
#if test
locptr
heaptr
extptr
7: bra e_badptr
6:
#endif
move.w (a0),d0 move.w (a0),d0
mov d0,-(sp) mov d0,-(sp)
jmp (a4) jmp (a4)
loi_1: move.l (sp)+,a0 loi_1: move.l (sp)+,a0
move.w d6,d0 move.w d6,d0
#if test
locptr
heaptr
extptr
7: bra e_badptr
6:
#endif
move.b (a0),d0 move.b (a0),d0
mov d0,-(sp) mov d0,-(sp)
jmp (a4) jmp (a4)

View file

@ -2,10 +2,17 @@
! STORE GROUP ! STORE GROUP
!--------------------------------------------------------------------- !---------------------------------------------------------------------
stl_pw: adroff stl_pw: adroff
move.w (a1),d0 move.w (a1),d0
3: asl.l wmu,d0 3: asl.l wmu,d0
mov (sp)+,16(a2,d0) add.l a2,d0
move.l d0,a0
#if test
locptr
7: bra e_badptr
6:
#endif
mov (sp)+,l0(a0)
jmp (a4) jmp (a4)
stl_qpw: move.l (sp)+,d0 stl_qpw: move.l (sp)+,d0
bra 3b bra 3b
@ -19,9 +26,16 @@ stl_qnw: move.l (sp)+,d0
stl_w_1: move.l #-1,d0 stl_w_1: move.l #-1,d0
move.b (a3)+,d0 move.b (a3)+,d0
1: asl.l wmu,d0 1: asl.l wmu,d0
mov (sp)+,0(a2,d0) add.l a2,d0
move.l d0,a0
#if test
locptr
7: bra e_badptr
6:
#endif
mov (sp)+,(a0)
jmp (a4) jmp (a4)
stl_0: mov (sp)+,16(a2) ; jmp (a4) stl_0: mov (sp)+,l0(a2) ; jmp (a4)
stl_1W: mov (sp)+,l1(a2) ; jmp (a4) stl_1W: mov (sp)+,l1(a2) ; jmp (a4)
stl__1W: mov (sp)+,l_1(a2) ; jmp (a4) stl__1W: mov (sp)+,l_1(a2) ; jmp (a4)
stl__2W: mov (sp)+,l_2(a2) ; jmp (a4) stl__2W: mov (sp)+,l_2(a2) ; jmp (a4)
@ -31,8 +45,15 @@ stl__5W: mov (sp)+,l_5(a2) ; jmp (a4)
sdl_w_1: move.l #-1,d0 sdl_w_1: move.l #-1,d0
move.b (a3)+,d0 move.b (a3)+,d0
2: asl.l wmu,d0 2: asl.l wmu,d0
mov (sp)+,0(a2,d0) add.l a2,d0
mov (sp)+,word(a2,d0) move.l d0,a0
#if test
locptr
7: bra e_badptr
6:
#endif
mov (sp)+,(a0)
mov (sp)+,word(a0)
jmp (a4) jmp (a4)
sdl_nw: adroff sdl_nw: adroff
move.w (a1),d0 move.w (a1),d0
@ -45,8 +66,15 @@ sdl_qpw: move.l (sp)+,d0
sdl_pw: adroff sdl_pw: adroff
move.w (a1),d0 move.w (a1),d0
4: asl.l wmu,d0 4: asl.l wmu,d0
mov (sp)+,l0(a2,d0) add.l a2,d0
mov (sp)+,l1(a2,d0) move.l d0,a0
#if test
locptr
7: bra e_badptr
6:
#endif
mov (sp)+,l0(a0)
mov (sp)+,l1(a0)
jmp (a4) jmp (a4)
!------------------------------------------------------------------------ !------------------------------------------------------------------------
@ -55,8 +83,15 @@ sde_q: move.l (sp)+,d0
bra 1f bra 1f
sde_l: adroff sde_l: adroff
move.w (a1),d0 move.w (a1),d0
1: mov (sp)+,0(a6,d0) 1: add.l a6,d0
mov (sp)+,word(a6,d0) move.l d0,a0
#if test
extptr
7: bra e_badptr
6:
#endif
mov (sp)+,(a0)
mov (sp)+,word(a0)
jmp (a4) jmp (a4)
ste_qw: move.l (sp)+,d0 ste_qw: move.l (sp)+,d0
bra 1f bra 1f
@ -68,33 +103,54 @@ ste_w1: move.w #256,d0 ; bra 0f
ste_w0: clr.w d0 ste_w0: clr.w d0
0: move.b (a3)+,d0 0: move.b (a3)+,d0
1: asl.l wmu,d0 1: asl.l wmu,d0
mov (sp)+,0(a6,d0) add.l a6,d0
move.l d0,a0
#if test
extptr
7: bra e_badptr
6:
#endif
mov (sp)+,(a0)
jmp (a4) jmp (a4)
!------------------------------------------------------------------------- !-------------------------------------------------------------------------
stf_q: move.l (sp)+,a0 stf_q: move.l (sp)+,a0
bra 6f bra 0f
stf_l: adroff stf_l: adroff
move.l #0,a0 move.l #0,a0
move.w (a1),a0 move.w (a1),a0
bra 6f bra 0f
stf_2W: move.l wrd,a0 ; add.l a0,a0 stf_2W: move.l wrd+word,d0 ; move.l d0,a0
bra 6f bra 0f
stf_s0: clr.w d0 stf_s0: clr.w d0
move.b (a3)+,d0 move.b (a3)+,d0
move.l d0,a0 move.l d0,a0
bra 6f bra 0f
stf_1W: move.l wrd,a0 stf_1W: move.l wrd,d0 ; move.l d0,a0
6: add.l (sp)+,a0 0: add.l (sp)+,a0
#if test
locptr
heaptr
extptr
7: bra e_badptr
6:
#endif
mov (sp)+,(a0) mov (sp)+,(a0)
jmp (a4) jmp (a4)
sdf_q: move.l (sp)+,a0 sdf_q: move.l (sp)+,a0
bra 7f bra 1f
sdf_l: adroff sdf_l: adroff
move.l d6,a0 move.l d6,a0
move.w (a1),a0 move.w (a1),a0
7: add.l (sp)+,a0 1: add.l (sp)+,a0
#if test
locptr
heaptr
extptr
7: bra e_badptr
6:
#endif
mov (sp)+,(a0)+ mov (sp)+,(a0)+
mov (sp)+,(a0) mov (sp)+,(a0)
jmp (a4) jmp (a4)
@ -103,14 +159,42 @@ sdf_l: adroff
!----------------------------------------------------------------------------- !-----------------------------------------------------------------------------
sil_w0: move.w d6,d0 sil_w0: move.w d6,d0
move.b (a3)+,d0 move.b (a3)+,d0
asl.l wmu,d0 5: asl.l wmu,d0
5: move.l 16(a2,d0),a0 add.l a2,d0
move.l d0,a0
#if test
locptr
7: bra e_badptr
6:
#endif
move.l l0(a0),a0
#if test
locptr
heaptr
extptr
7: bra e_badptr
6:
#endif
mov (sp)+,(a0) mov (sp)+,(a0)
jmp (a4) jmp (a4)
sil_w_1: move.l #-1,d0 sil_w_1: move.l #-1,d0
move.b (a3)+,d0 move.b (a3)+,d0
asl.l wmu,d0 2: asl.l wmu,d0
2: move.l 0(a2,d0),a0 add.l a2,d0
move.l d0,a0
#if test
locptr
7: bra e_badptr
6:
#endif
move.l (a0),a0
#if test
locptr
heaptr
extptr
7: bra e_badptr
6:
#endif
mov (sp)+,(a0) mov (sp)+,(a0)
jmp (a4) jmp (a4)
sil_pw: adroff sil_pw: adroff
@ -127,7 +211,14 @@ sil_qnw: move.l (sp)+,d0
!---------------------------------------------------------------------------- !----------------------------------------------------------------------------
sti_1: move.l (sp)+,a0 sti_1: move.l (sp)+,a0
move.b word-1(sp),(a0) !lsb,msb goed? #if test
locptr
heaptr
extptr
7: bra e_badptr
6:
#endif
move.b word-1(sp),(a0)
add.l wrd,sp add.l wrd,sp
jmp (a4) jmp (a4)
sti_l: adroff ; move.w (a1),d0 ; bra 0f sti_l: adroff ; move.w (a1),d0 ; bra 0f
@ -138,6 +229,13 @@ sti_s0: clr.w d0 ; move.b (a3)+,d0
#ifdef lword #ifdef lword
asr.l #1,d0 ; bne 2f asr.l #1,d0 ; bne 2f
move.l (sp)+,a0; lea 2(sp),sp move.l (sp)+,a0; lea 2(sp),sp
#if test
locptr
heaptr
extptr
7: bra e_badptr
6:
#endif
move.w (sp)+,(a0); jmp (a4) move.w (sp)+,(a0); jmp (a4)
2: bcs e_oddz 2: bcs e_oddz
#endif #endif
@ -145,6 +243,13 @@ sti_s0: clr.w d0 ; move.b (a3)+,d0
sti_1W: sti_2W: sti_3W: sti_4W: sti_1W: sti_2W: sti_3W: sti_4W:
sub.w #876,d0 ; asr.w #2,d0 sub.w #876,d0 ; asr.w #2,d0
3: move.l (sp)+,a0 3: move.l (sp)+,a0
#if test
locptr
heaptr
extptr
7: bra e_badptr
6:
#endif
4: mov (sp)+,(a0)+ 4: mov (sp)+,(a0)+
dbra d0,4b dbra d0,4b
jmp (a4) jmp (a4)
@ -177,9 +282,7 @@ ads_z: mov (sp)+,d0
2: move.w (sp)+,d1 ; ext.l d1 2: move.w (sp)+,d1 ; ext.l d1
add.l d1,(sp) ; jmp (a4) add.l d1,(sp) ; jmp (a4)
ads_1W: mov (sp)+,d0 ads_1W: mov (sp)+,d0
#ifndef lword extend d0
ext.l d0
#endif
add.l d0,(sp); jmp (a4) add.l d0,(sp); jmp (a4)
sbs_l: adroff ; move.w (a1),d0 sbs_l: adroff ; move.w (a1),d0
bra 0f bra 0f

View file

@ -9,7 +9,10 @@ inc_z: move.l sp,a0
bne 3f ; bsr e_iund bne 3f ; bsr e_iund
3: 3:
#endif #endif
ad #1,(a0) ; bvs 9f ad #1,(a0)
#if test
bvs 9f
#endif
jmp (a4) jmp (a4)
#ifdef lword #ifdef lword
inl__1W: move.l a2,a0 ; sub.l #4,a0 ; bra 4b inl__1W: move.l a2,a0 ; sub.l #4,a0 ; bra 4b
@ -24,7 +27,7 @@ inl_w_1: move.l #-1,d0 ; move.b (a3)+,d0
2: asl.l wmu,d0 2: asl.l wmu,d0
1: move.l a2,a0 ; add.l d0,a0 ; bra 4b 1: move.l a2,a0 ; add.l d0,a0 ; bra 4b
inl_pw: adroff ; move.w (a1),d0 inl_pw: adroff ; move.w (a1),d0
6: asl.l wmu,d0 ; add.l #16,d0 6: asl.l wmu,d0 ; add.l #0+l0,d0
bra 1b bra 1b
inl_qpw: move.l (sp)+,d0 ; bra 6b inl_qpw: move.l (sp)+,d0 ; bra 6b
inl_nw: adroff ; move.w (a1),d0 inl_nw: adroff ; move.w (a1),d0
@ -41,18 +44,25 @@ ine_w0: clr.w d0 ; move.b (a3)+,d0
dec_z: move.l sp,a0 dec_z: move.l sp,a0
4: 4:
#if test #if test
!let op , test gebruikt voor tst? locptr
heaptr
extptr
7: bra e_badptr
6:
comp und,(a0) ;bne 3f comp und,(a0) ;bne 3f
bsr e_iund bsr e_iund
3: 3:
#endif #endif
subt #1,(a0) ; bvs 9f subt #1,(a0)
#if test
bvs 9f
#endif
jmp (a4) jmp (a4)
del_w_1: move.l #-1,d0 ; move.b (a3)+,d0 del_w_1: move.l #-1,d0 ; move.b (a3)+,d0
1: asl.l wmu,d0 1: asl.l wmu,d0
2: move.l a2,a0 ; add.l d0,a0 ; bra 4b 2: move.l a2,a0 ; add.l d0,a0 ; bra 4b
del_pw: adroff ; move.w (a1),d0 del_pw: adroff ; move.w (a1),d0
5: asl.l wmu,d0 ; add.l #16,d0 ; bra 2b 5: asl.l wmu,d0 ; add.l #0+l0,d0 ; bra 2b
del_qpw: move.l (sp)+,d0 ; bra 5b del_qpw: move.l (sp)+,d0 ; bra 5b
del_nw: adroff ; move.w (a1),d0 del_nw: adroff ; move.w (a1),d0
ext.l d0 ; bra 1f ext.l d0 ; bra 1f
@ -63,27 +73,44 @@ dee_w0: clr.w d0 ; move.b (a3)+,d0
dee_lw: adroff ; move.w (a1),d0 ; bra 0b dee_lw: adroff ; move.w (a1),d0 ; bra 0b
dee_qw: move.l (sp)+,d0 ; bra 0b dee_qw: move.l (sp)+,d0 ; bra 0b
#if test
9: bsr e_iovfl !error routine for integer overflow 9: bsr e_iovfl !error routine for integer overflow
jmp (a4) jmp (a4)
#endif
!---------------------------------------------------------------------------- !----------------------------------------------------------------------------
zrl__1W: cl l_1(a2) ; jmp (a4) zrl__1W: cl l_1(a2) ; jmp (a4)
zrl__2W: cl l_2(a2) ; jmp (a4) zrl__2W: cl l_2(a2) ; jmp (a4)
zrl_w_1: move.l #-1,d0 ; move.b (a3)+,d0 zrl_w_1: move.l #-1,d0 ; move.b (a3)+,d0
1: asl.l wmu,d0 ; cl 0(a2,d0) 1: asl.l wmu,d0 ; add.l a2,d0
move.l d0,a0
#if test
locptr
7: bra e_badptr
6:
#endif
cl (a0)
jmp (a4) jmp (a4)
zrl_nw: adroff ; move.w (a1),d0 zrl_nw: adroff ; move.w (a1),d0
ext.l d0 ; bra 1b ext.l d0 ; bra 1b
zrl_qnw: move.l (sp)+,d0 ; bra 1b zrl_qnw: move.l (sp)+,d0 ; bra 1b
zrl_pw: adroff ; move.w (a1),d0 zrl_pw: adroff ; move.w (a1),d0
2: asl.l wmu,d0 ; cl 16(a2,d0) 2: asl.l wmu,d0 ; add.l a2,d0
move.l d0,a0 ; cl l0(a0)
jmp (a4) jmp (a4)
zrl_qpw: move.l (sp)+,d0 ; bra 2b zrl_qpw: move.l (sp)+,d0 ; bra 2b
zre_lw: adroff ; move.w (a1),d0 ; bra 7f zre_lw: adroff ; move.w (a1),d0 ; bra 7f
zre_qw: move.l (sp)+,d0 ; bra 7f zre_qw: move.l (sp)+,d0 ; bra 7f
zre_w0: clr.w d0 ; move.b (a3)+,d0 zre_w0: clr.w d0 ; move.b (a3)+,d0
7: asl.l wmu,d0 ; cl 0(a6,d0) 7: asl.l wmu,d0 ; add.l a6,d0
move.l d0,a0
#if test
extptr
7: bra e_badptr
6:
#endif
cl (a0)
jmp (a4) jmp (a4)
zrf_l: adroff ; move.w (a1),d0 ; bra 8f zrf_l: adroff ; move.w (a1),d0 ; bra 8f
zrf_z: mov (sp)+,d0 zrf_z: mov (sp)+,d0
@ -184,7 +211,7 @@ ror_z: mov (sp)+,d0
!------------------------------------------------------------------------------ !------------------------------------------------------------------------------
set_s0: clr.w d0 ; move.b (a3)+,d0 set_s0: clr.w d0 ; move.b (a3)+,d0
0: ble e_oddz ; clr.l d1 0: ble e_oddz ; move.l #0,d1
mov (sp)+,d1; move.l d0,d2 mov (sp)+,d1; move.l d0,d2
move.l d7,d3 move.l d7,d3
1: asr.l #1,d2 ; dbcs d3,1b 1: asr.l #1,d2 ; dbcs d3,1b