This code has been previously discussed as troublesome for a different processor:
05BC BD 1045 [9] 00920 jsr RANDOM ; Gen random X
05BF 84 03 [2] 00921 anda #3
05C1 97 56 [4] 00922 staa ASAVE
05C3 27 05 (05CA) [4] 00923 beq PUTIN2
05C5 56 [2] 00924 PUTIN1 rorb ; Find X position
05C6 56 [2] 00925 rorb
05C7 4A [2] 00926 deca
05C8 26 FB (05C5) [4] 00927 bne PUTIN1
05CA C5 03 [2] 00928 PUTIN2 bitb #3 ; Is position empty?
05CC 26 DF (05AD) [4] 00929 bne PUTINM ; If not, repeat
05CE DA 53 [3] 00930 orab MASK
05D0 96 56 [3] 00931 ldaa ASAVE
05D2 27 05 (05D9) [4] 00932 beq PUTIN4
05D4 59 [2] 00933 PUTIN3 rolb ; Put object in map
05D5 59 [2] 00934 rolb
05D6 4A [2] 00935 deca
05D7 26 FB (05D4) [4] 00936 bne PUTIN3
05D9 E7 00 [6] 00937 PUTIN4 stab 0,X ; Save it
05DB 7A 0030 [6] 00938 dec COUNT
05DE 26 CD (05AD) [4] 00939 bne PUTINM
05E0 96 53 [3] 00940 ldaa MASK
05E2 81 03 [2] 00941 cmpa #3 ; Was object a base?
05E4 26 0E (05F4) [4] 00942 bne PUTIN6
05E6 D6 5A [3] 00943 ldab TSAVE1
05E8 0C [2] 00944 clc
05E9 56 [2] 00945 rorb ; Find position
05EA 96 56 [3] 00946 ldaa ASAVE
05EC 24 02 (05F0) [4] 00947 bcc PUTIN5
05EE 8B 04 [2] 00948 adda #4
05F0 97 23 [4] 00949 PUTIN5 staa BASESX ; Save X position
This is the 68000 version:
600 T 00000920 61000D6A bsr RANDOM ; Gen random X
601 T 00000924 02000003 andi.b #3,D0
602 T 00000928 13C0000017E4 move.b D0,ASAVE
603 T 0000092E 6700000E beq PUTIN2
604 T 00000932 E20A PUTIN1: lsr.b #1,D2 ; Recover X flag
605 T 00000934 E411 roxr.b #2,D1 ; Find X position
606 T 00000936 E30A lsl.b #1,D2 ; Save X flag
607 T 00000938 5300 subq.b #1,D0
608 T 0000093A 6600FFF6 bne PUTIN1
609 T 0000093E 1601 PUTIN2: move.b D1,D3
610 T 00000940 02030003 andi.b #3,D3 ; Is position empty?
611 T 00000944 6600FFC0 bne PUTINM ; If not, repeat
612 T 00000948 8239000017E1 or.b MASK,D1
613 T 0000094E 1039000017E4 move.b ASAVE,D0
614 T 00000954 6700000E beq PUTIN4
615 T 00000958 E20A PUTIN3: lsr.b #1,D2 ; Recover X flag
616 T 0000095A E511 roxl.b #2,D1 ; Put object in map
617 T 0000095C E30A lsl.b #1,D2 ; Save X flag
618 T 0000095E 5300 subq.b #1,D0
619 T 00000960 6600FFF6 bne PUTIN3
620 T 00000964 1681 PUTIN4: move.b D1,(A3) ; Save it
621 T 00000966 5339000017CE subq.b #1,COUNT
622 T 0000096C 6600FF98 bne PUTINM
623 T 00000970 1039000017E1 move.b MASK,D0
624 T 00000976 0C000003 cmpi.b #3,D0 ; Was object a base?
625 T 0000097A 66000026 bne PUTIN6
626 T 0000097E 1239000017E6 move.b TSAVE1,D1
627 T 00000984 023C00FE andi #$FE,CCR
628 T 00000988 E211 roxr.b #1,D1 ; Find position
629 T 0000098A 1039000017E4 move.b ASAVE,D0
630 T 00000990 64000004 bcc PUTIN5
631 T 00000994 5800 addq.b #4,D0
632 T 00000996 13C0000017C1 PUTIN5: move.b D0,BASESX ; Save X position
Here is another one which had not been trouble before, but does not like the lack of non-carrying increment and decrement:
0A4D CE 00B1 [3] 01496 KILALK ldx #SECMAP ; Remove K's from Q
0A50 86 10 [2] 01497 ldaa #16
0A52 97 30 [4] 01498 staa COUNT ; Setup count
0A54 C6 04 [2] 01499 KILAL1 ldab #4
0A56 A6 00 [5] 01500 ldaa 0,X ; Find all Klingons
0A58 46 [2] 01501 KILAL2 rora
0A59 25 12 (0A6D) [4] 01502 bcs KILAL4
0A5B 46 [2] 01503 rora
0A5C 24 01 (0A5F) [4] 01504 bcc KILAL3
0A5E 0C [2] 01505 clc ; Clear out
0A5F 5A [2] 01506 KILAL3 decb
0A60 26 F6 (0A58) [4] 01507 bne KILAL2
0A62 46 [2] 01508 rora
0A63 A7 00 [6] 01509 staa 0,X
0A65 08 [4] 01510 inx
0A66 7A 0030 [6] 01511 dec COUNT ; If not done rpt
0A69 26 E9 (0A54) [4] 01512 bne KILAL1
0A6B 20 13 (0A80) [4] 01513 bra PHASR6
0A6D 46 [2] 01514 KILAL4 rora
0A6E 20 EF (0A5F) [4] 01515 bra KILAL3
0A70 DE 40 [4] 01516 PHASR5 ldx PHSENG
and the 68000 version
1173 T 00001210 207C00001837 KILALK: movea.l #SECMAP,A0 ; Remove K's from Q
1174 T 00001216 103C0010 move.b #16,D0
1175 T 0000121A 13C0000017CE move.b D0,COUNT ; Setup count
1176 T 00001220 123C0004 KILAL1: move.b #4,D1
1177 T 00001224 1010 move.b (A0),D0 ; Find all Klingons
1178 T 00001226 E20A KILAL2: lsr.b #1,D2 ; Recover X flag
1179 T 00001228 E210 roxr.b #1,D0
1180 T 0000122A 65000028 bcs KILAL4
1181 T 0000122E E210 roxr.b #1,D0
1182 T 00001230 64000006 bcc KILAL3
1183 T 00001234 023C00FE andi #$FE,CCR ; Clear out
1184 T 00001238 E30A KILAL3: lsl.b #1,D2 ; Save X flag
1185 T 0000123A 5301 subq.b #1,D1
1186 T 0000123C 6600FFE8 bne KILAL2
1187 T 00001240 E20A lsr.b #1,D2 ; Recover X flag
1188 T 00001242 E210 roxr.b #1,D0
1189 T 00001244 10C0 move.b D0,(A0)+
1190 T 00001246 5339000017CE subq.b #1,COUNT ; If not done rpt
1191 T 0000124C 6600FFD2 bne KILAL1
1192 T 00001250 60000028 bra PHASR6
1193 T 00001254 E210 KILAL4: roxr.b #1,D0
1194 T 00001256 6000FFE0 bra KILAL3
1195 T 0000125A 3039000017B8 PHASR5: move.w PHSENG,D0