+VBL:
+ addq.l #1,(vtimer).l
+ movem.l d0-d7/a0-a5,-(a7)
+
+ /* draw main stuff */
+ clr.l d7
+ move.l a6,d0
+ lsr.l #8,d0
+ move.l d0,a1 /* current addr */
+
+ movea.l #0xe004,a2
+ move.l #27-1,d5
+
+draw_column:
+ move.l a2,a0
+ jsr load_prepare
+
+ /* addr */
+ move.l a1,d2
+ moveq.l #6,d3
+ jsr print_hex_preped
+
+ /* 4 shorts */
+ moveq.l #4-1,d4
+draw_shorts:
+ move.w #' ',(a0)
+ move.w (a1)+,d2
+ moveq.l #4,d3
+ jsr print_hex_preped
+ dbra d4,draw_shorts
+
+ move.w #' ',(a0)
+ move.w #' ',(a0)
+
+ /* 8 chars */
+ subq.l #8,a1
+ moveq.l #8-1,d4
+draw_chars:
+ move.b (a1)+,d0
+ move.b d0,d1
+ sub.b #0x20,d1
+ cmp.b #0x60,d1
+ blo 0f
+ move.w #'.',d0
+0:
+ move.w d0,(a0)
+ dbra d4,draw_chars
+
+ add.w #0x80,a2
+ dbra d5,draw_column
+
+ /* handle input */
+ jsr get_input /* x0cbrldu x1sa00du */
+ btst.b #0,d0
+ beq _in_nup
+ sub.l #0x0800,a6
+
+_in_nup:
+ btst.b #1,d0
+ beq _in_ndn
+ add.l #0x0800,a6
+
+_in_ndn:
+ btst.l #10,d0
+ beq _in_nleft
+ sub.l #0xd800,a6
+
+_in_nleft:
+ btst.b #11,d0
+ beq _in_nright
+ add.l #0xd800,a6
+
+_in_nright:
+
+end:
+ movem.l (a7)+,d0-d7/a0-a5
+ rte
+
+