dc.w 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
dc.w 0x0000,0x0e44,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
dc.w 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
dc.w 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
dc.w 0x0000,0x0e44,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
dc.w 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
+ dc.w 0x0000,0x044e,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
+ dc.w 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
predef_addrs:
dc.l 0x000000, 0x200000, 0x400000, 0xa00000, 0xa10000
predef_addrs:
dc.l 0x000000, 0x200000, 0x400000, 0xa00000, 0xa10000
- dc.l 0xa11100, 0xa12000, 0xa13000, 0xc00000
+ dc.l 0xa11100, 0xa12000, 0xa13000, 0xa14000, 0xc00000
- dc.l 0xa00000, 0xa163ff /* FIXME */
- /* TODO: VDP */
+ dc.l 0xa00000, 0xa100ff
+ dc.l 0xa11000, 0xa113ff
+ dc.l 0xa12000, 0xa120ff
+ dc.l 0xa13000, 0xa130ff
move.l #'?'|('?'<<16),(a0)
move.l #'?'|('?'<<16),(a0)
move.l #'?'|('?'<<16),(a0)
move.l #'?'|('?'<<16),(a0)
+ bra draw_chars_hsafe_next
+0:
+ btst.l #15,d7 /* must perform correct read type */
+ bne 0f /* doing byte reads on security reg hangs */
+ move.b (0,a1),d0
+ lsl.l #8,d0
+ move.b (1,a1),d0
+ bra 1f
+0:
+ move.w (a1),d0
+1:
+ ror.l #8,d0
+ move.b d0,d1
+ sub.b #0x20,d1
+ cmp.b #0x60,d1
+ blo 0f
+ move.b #'.',d0
+0:
+ move.w d0,(a0)
+
+ move.b #0,d0
+ rol.l #8,d0
+ move.b d0,d1
+ sub.b #0x20,d1
+ cmp.b #0x60,d1
+ blo 0f
+ move.b #'.',d0
+0:
+ move.w d0,(a0)
+
+draw_chars_hsafe_next:
+ addq.l #2,a1
+ dbra d4,draw_chars_hsafe
+
+ moveq.l #0x0c,d0
+ cmp.l #0xa14000,d1
+ beq gsm_rts
+
+ moveq.l #0x08,d0
+ cmp.l #0xa14100,d1
+ beq gsm_rts
+
+ /* check for VDP address */
+ move.l d1,d0
+ swap d0
+ and.b #0xe0,d0
+ cmp.b #0xc0,d0
+ bne addr_unsafe /* not vdp */
+
+ move.l d1,d0
+ and.l #0x0700e0,d0
+ bne addr_unsafe
+
+ move.l d1,d0
+ and.b #0x1f,d0
+ cmp.b #0x04,d0
+ blt addr_hsafe_3 /* data port */
+ cmp.b #0x10,d0
+ blt addr_safe /* below PSG */
+ cmp.b #0x18,d0
+ bge addr_safe /* above PSG */
+
+addr_unsafe:
+ moveq.l #0,d0 /* skip line */
+ rts
+
+addr_hsafe_3:
+ moveq.l #3,d0 /* skip 2 words */