- do_dpad 0, sub, subq, 0x0008, 0x0800
- do_dpad 1, add, addq, 0x0008, 0x0800
- do_dpad 10, sub, subq, 0x0001, 0xd800
- do_dpad 11, add, addq, 0x0001, 0xd800
-input_end:
-
+ btst.l #16+4,d0 /* A - scroll modifier */
+ beq input_noa
+
+ do_dpad 16+0, sub, #0x0800
+ do_dpad 16+1, add, #0x0800
+ do_dpad 16+10, sub, #0xd800
+ do_dpad 16+11, add, #0xd800
+input_noa:
+ moveq.l #0,d1
+ btst.l #15,d7
+ seq d1
+ neg.b d1 /* 1 if word sel */
+ add.b #1,d1
+
+ do_dpad 0, subq, #0x0008
+ do_dpad 1, addq, #0x0008
+ do_dpad 10, sub, d1
+ do_dpad 11, add, d1
+
+dpad_end:
+ moveq.l #0,d1
+ btst.l #12,d0 /* B - switch byte/word mode */
+ beq input_nob
+ bchg.l #15,d7
+ move.l a6,d1
+ and.l #1,d1
+ sub.l d1,a6 /* make even, just in case */
+
+input_nob:
+ btst.l #13,d0 /* C - edit selected byte */
+ beq input_noc
+# and.w #0xf8ff,d7
+ or.w #0x0100,d7 /* switch to edit mode */
+ write_vdp_reg 12,(VDP12_SCREEN_V224 | VDP12_SCREEN_H320 | VDP12_STE)
+
+input_noc: