misc/rom16pat.s (2/2)
1 2
	.dc.w	%1100000011000000
	.dc.w	%1100000011000000
	.dc.w	%1100000011000000
	.dc.w	%1100000011000000
	.dc.w	%1100000011000000
	.dc.w	%1100000011000000
	.dc.w	%0110000110000000
	.dc.w	%0001111000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	11	;$50 P
	.dc.w	%0000000000000000
	.dc.w	%1111111000000000
	.dc.w	%0110000110000000
	.dc.w	%0110000011000000
	.dc.w	%0110000011000000
	.dc.w	%0110000011000000
	.dc.w	%0110000110000000
	.dc.w	%0111111000000000
	.dc.w	%0110000000000000
	.dc.w	%0110000000000000
	.dc.w	%0110000000000000
	.dc.w	%1111000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	11	;$51 Q
	.dc.w	%0000000000000000
	.dc.w	%0001111000000000
	.dc.w	%0110000110000000
	.dc.w	%1100000011000000
	.dc.w	%1100000011000000
	.dc.w	%1100000011000000
	.dc.w	%1100000011000000
	.dc.w	%1100000011000000
	.dc.w	%1101110011000000
	.dc.w	%1111011110000000
	.dc.w	%0110001100000000
	.dc.w	%0001111100000000
	.dc.w	%0000000110000000
	.dc.w	%0000000011000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	11	;$52 R
	.dc.w	%0000000000000000
	.dc.w	%1111111000000000
	.dc.w	%0110000110000000
	.dc.w	%0110000011000000
	.dc.w	%0110000011000000
	.dc.w	%0110000011000000
	.dc.w	%0110000110000000
	.dc.w	%0111111000000000
	.dc.w	%0110111000000000
	.dc.w	%0110011100000000
	.dc.w	%0110001110000000
	.dc.w	%1111000111000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	9	;$53 S
	.dc.w	%0000000000000000
	.dc.w	%0001110100000000
	.dc.w	%0110001100000000
	.dc.w	%1100000100000000
	.dc.w	%1110000000000000
	.dc.w	%0111000000000000
	.dc.w	%0011110000000000
	.dc.w	%0000111000000000
	.dc.w	%0000011100000000
	.dc.w	%1000001100000000
	.dc.w	%1100011000000000
	.dc.w	%1011100000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	11	;$54 T
	.dc.w	%0000000000000000
	.dc.w	%1111111111000000
	.dc.w	%1100110011000000
	.dc.w	%1000110001000000
	.dc.w	%0000110000000000
	.dc.w	%0000110000000000
	.dc.w	%0000110000000000
	.dc.w	%0000110000000000
	.dc.w	%0000110000000000
	.dc.w	%0000110000000000
	.dc.w	%0000110000000000
	.dc.w	%0011111100000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	11	;$55 U
	.dc.w	%0000000000000000
	.dc.w	%1111000111000000
	.dc.w	%0110000010000000
	.dc.w	%0110000010000000
	.dc.w	%0110000010000000
	.dc.w	%0110000010000000
	.dc.w	%0110000010000000
	.dc.w	%0110000010000000
	.dc.w	%0110000010000000
	.dc.w	%0110000010000000
	.dc.w	%0011000100000000
	.dc.w	%0000111000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	11	;$56 V
	.dc.w	%0000000000000000
	.dc.w	%1111000111000000
	.dc.w	%0110000010000000
	.dc.w	%0110000010000000
	.dc.w	%0011000100000000
	.dc.w	%0011000100000000
	.dc.w	%0011000100000000
	.dc.w	%0001101000000000
	.dc.w	%0001101000000000
	.dc.w	%0001101000000000
	.dc.w	%0000110000000000
	.dc.w	%0000110000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	16	;$57 W
	.dc.w	%0000000000000000
	.dc.w	%1111000110001110
	.dc.w	%0110000110000100
	.dc.w	%0011000111000100
	.dc.w	%0011000111000100
	.dc.w	%0011001011001000
	.dc.w	%0001101001101000
	.dc.w	%0001101001101000
	.dc.w	%0001101001101000
	.dc.w	%0000110000110000
	.dc.w	%0000110000110000
	.dc.w	%0000110000110000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	11	;$58 X
	.dc.w	%0000000000000000
	.dc.w	%1111000111000000
	.dc.w	%0110000010000000
	.dc.w	%0011000100000000
	.dc.w	%0011001000000000
	.dc.w	%0001110000000000
	.dc.w	%0000110000000000
	.dc.w	%0000111000000000
	.dc.w	%0001001100000000
	.dc.w	%0010001100000000
	.dc.w	%0100000110000000
	.dc.w	%1110001111000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	11	;$59 Y
	.dc.w	%0000000000000000
	.dc.w	%1111000111000000
	.dc.w	%0110000010000000
	.dc.w	%0011000100000000
	.dc.w	%0011000100000000
	.dc.w	%0001101000000000
	.dc.w	%0001101000000000
	.dc.w	%0000110000000000
	.dc.w	%0000110000000000
	.dc.w	%0000110000000000
	.dc.w	%0000110000000000
	.dc.w	%0001111000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	11	;$5A Z
	.dc.w	%0000000000000000
	.dc.w	%1111111111000000
	.dc.w	%1100000011000000
	.dc.w	%1000000110000000
	.dc.w	%0000001100000000
	.dc.w	%0000011000000000
	.dc.w	%0000110000000000
	.dc.w	%0001100000000000
	.dc.w	%0011000000000000
	.dc.w	%0110000001000000
	.dc.w	%1100000011000000
	.dc.w	%1111111111000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	6	;$5B [
	.dc.w	%0000000000000000
	.dc.w	%0111000000000000
	.dc.w	%0100000000000000
	.dc.w	%0100000000000000
	.dc.w	%0100000000000000
	.dc.w	%0100000000000000
	.dc.w	%0100000000000000
	.dc.w	%0100000000000000
	.dc.w	%0100000000000000
	.dc.w	%0100000000000000
	.dc.w	%0100000000000000
	.dc.w	%0100000000000000
	.dc.w	%0100000000000000
	.dc.w	%0111000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	8	;$5C ¥
	.dc.w	%0000000000000000
	.dc.w	%1000001000000000
	.dc.w	%1000001000000000
	.dc.w	%0100010000000000
	.dc.w	%0100010000000000
	.dc.w	%0010100000000000
	.dc.w	%0010100000000000
	.dc.w	%0111110000000000
	.dc.w	%0001000000000000
	.dc.w	%0111110000000000
	.dc.w	%0001000000000000
	.dc.w	%0001000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	6	;$5D ]
	.dc.w	%0000000000000000
	.dc.w	%0111000000000000
	.dc.w	%0001000000000000
	.dc.w	%0001000000000000
	.dc.w	%0001000000000000
	.dc.w	%0001000000000000
	.dc.w	%0001000000000000
	.dc.w	%0001000000000000
	.dc.w	%0001000000000000
	.dc.w	%0001000000000000
	.dc.w	%0001000000000000
	.dc.w	%0001000000000000
	.dc.w	%0001000000000000
	.dc.w	%0111000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	8	;$5E ^
	.dc.w	%0000000000000000
	.dc.w	%0001000000000000
	.dc.w	%0010100000000000
	.dc.w	%0100010000000000
	.dc.w	%1000001000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	6	;$5F _
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%1111100000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	5	;$60 `
	.dc.w	%0000000000000000
	.dc.w	%0010000000000000
	.dc.w	%0100000000000000
	.dc.w	%0100000000000000
	.dc.w	%0110000000000000
	.dc.w	%0110000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	9	;$61 a
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0111110000000000
	.dc.w	%1100111000000000
	.dc.w	%0000011000000000
	.dc.w	%0011111000000000
	.dc.w	%0110011000000000
	.dc.w	%1100011000000000
	.dc.w	%1100111000000000
	.dc.w	%0111011100000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	10	;$62 b
	.dc.w	%0000000000000000
	.dc.w	%1110000000000000
	.dc.w	%0110000000000000
	.dc.w	%0110000000000000
	.dc.w	%0110111000000000
	.dc.w	%0111001100000000
	.dc.w	%0110000110000000
	.dc.w	%0110000110000000
	.dc.w	%0110000110000000
	.dc.w	%0110000110000000
	.dc.w	%0111001100000000
	.dc.w	%1101111000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	8	;$63 c
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0011110000000000
	.dc.w	%0110011000000000
	.dc.w	%1100000000000000
	.dc.w	%1100000000000000
	.dc.w	%1100000000000000
	.dc.w	%1100000000000000
	.dc.w	%0110011000000000
	.dc.w	%0011110000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	10	;$64 d
	.dc.w	%0000000000000000
	.dc.w	%0000011100000000
	.dc.w	%0000001100000000
	.dc.w	%0000001100000000
	.dc.w	%0011101100000000
	.dc.w	%0110011100000000
	.dc.w	%1100001100000000
	.dc.w	%1100001100000000
	.dc.w	%1100001100000000
	.dc.w	%1100001100000000
	.dc.w	%0110011100000000
	.dc.w	%0011101110000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	8	;$65 e
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0011110000000000
	.dc.w	%0110011000000000
	.dc.w	%1100001000000000
	.dc.w	%1111111000000000
	.dc.w	%1100000000000000
	.dc.w	%1100000000000000
	.dc.w	%0110011000000000
	.dc.w	%0011110000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	7	;$66 f
	.dc.w	%0000000000000000
	.dc.w	%0011100000000000
	.dc.w	%0110110000000000
	.dc.w	%0110000000000000
	.dc.w	%0110000000000000
	.dc.w	%1111100000000000
	.dc.w	%0110000000000000
	.dc.w	%0110000000000000
	.dc.w	%0110000000000000
	.dc.w	%0110000000000000
	.dc.w	%0110000000000000
	.dc.w	%1111000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	9	;$67 g
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0111110100000000
	.dc.w	%1100011000000000
	.dc.w	%1100011000000000
	.dc.w	%1100011000000000
	.dc.w	%0111110000000000
	.dc.w	%1100000000000000
	.dc.w	%0111111000000000
	.dc.w	%1100001100000000
	.dc.w	%1100001100000000
	.dc.w	%1100001100000000
	.dc.w	%0111111000000000
	.dc.w	%0000000000000000
	.dc.w	10	;$68 h
	.dc.w	%0000000000000000
	.dc.w	%1110000000000000
	.dc.w	%0110000000000000
	.dc.w	%0110000000000000
	.dc.w	%0110111000000000
	.dc.w	%0111011100000000
	.dc.w	%0110001100000000
	.dc.w	%0110001100000000
	.dc.w	%0110001100000000
	.dc.w	%0110001100000000
	.dc.w	%0110001100000000
	.dc.w	%1111011110000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	5	;$69 i
	.dc.w	%0000000000000000
	.dc.w	%0110000000000000
	.dc.w	%0110000000000000
	.dc.w	%0000000000000000
	.dc.w	%1110000000000000
	.dc.w	%0110000000000000
	.dc.w	%0110000000000000
	.dc.w	%0110000000000000
	.dc.w	%0110000000000000
	.dc.w	%0110000000000000
	.dc.w	%0110000000000000
	.dc.w	%1111000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	6	;$6A j
	.dc.w	%0000000000000000
	.dc.w	%0001100000000000
	.dc.w	%0001100000000000
	.dc.w	%0000000000000000
	.dc.w	%0011100000000000
	.dc.w	%0001100000000000
	.dc.w	%0001100000000000
	.dc.w	%0001100000000000
	.dc.w	%0001100000000000
	.dc.w	%0001100000000000
	.dc.w	%0001100000000000
	.dc.w	%0001100000000000
	.dc.w	%0001100000000000
	.dc.w	%1101100000000000
	.dc.w	%0111000000000000
	.dc.w	%0000000000000000
	.dc.w	9	;$6B k
	.dc.w	%0000000000000000
	.dc.w	%1110000000000000
	.dc.w	%0110000000000000
	.dc.w	%0110000000000000
	.dc.w	%0110111000000000
	.dc.w	%0110010000000000
	.dc.w	%0110100000000000
	.dc.w	%0111000000000000
	.dc.w	%0111100000000000
	.dc.w	%0110110000000000
	.dc.w	%0110011000000000
	.dc.w	%1111011100000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	5	;$6C l
	.dc.w	%0000000000000000
	.dc.w	%1110000000000000
	.dc.w	%0110000000000000
	.dc.w	%0110000000000000
	.dc.w	%0110000000000000
	.dc.w	%0110000000000000
	.dc.w	%0110000000000000
	.dc.w	%0110000000000000
	.dc.w	%0110000000000000
	.dc.w	%0110000000000000
	.dc.w	%0110000000000000
	.dc.w	%1111000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	15	;$6D m
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%1101111011110000
	.dc.w	%0111011110111000
	.dc.w	%0110001100011000
	.dc.w	%0110001100011000
	.dc.w	%0110001100011000
	.dc.w	%0110001100011000
	.dc.w	%0110001100011000
	.dc.w	%1111011110111100
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	10	;$6E n
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%1110111000000000
	.dc.w	%0111011100000000
	.dc.w	%0110001100000000
	.dc.w	%0110001100000000
	.dc.w	%0110001100000000
	.dc.w	%0110001100000000
	.dc.w	%0110001100000000
	.dc.w	%1111011110000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	9	;$6F o
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0011110000000000
	.dc.w	%0110011000000000
	.dc.w	%1100001100000000
	.dc.w	%1100001100000000
	.dc.w	%1100001100000000
	.dc.w	%1100001100000000
	.dc.w	%0110011000000000
	.dc.w	%0011110000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	9	;$70 p
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%1110111000000000
	.dc.w	%0111011100000000
	.dc.w	%0110001100000000
	.dc.w	%0110001100000000
	.dc.w	%0110001100000000
	.dc.w	%0110001100000000
	.dc.w	%0111011100000000
	.dc.w	%0110111000000000
	.dc.w	%0110000000000000
	.dc.w	%0110000000000000
	.dc.w	%1111000000000000
	.dc.w	%0000000000000000
	.dc.w	9	;$71 q
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0111011100000000
	.dc.w	%1110111000000000
	.dc.w	%1100011000000000
	.dc.w	%1100011000000000
	.dc.w	%1100011000000000
	.dc.w	%1100011000000000
	.dc.w	%1110111000000000
	.dc.w	%0111011000000000
	.dc.w	%0000011000000000
	.dc.w	%0000011000000000
	.dc.w	%0000111100000000
	.dc.w	%0000000000000000
	.dc.w	9	;$72 r
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%1110111000000000
	.dc.w	%0111001100000000
	.dc.w	%0110000000000000
	.dc.w	%0110000000000000
	.dc.w	%0110000000000000
	.dc.w	%0110000000000000
	.dc.w	%0110000000000000
	.dc.w	%1111000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	8	;$73 s
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0111101000000000
	.dc.w	%1100011000000000
	.dc.w	%1100001000000000
	.dc.w	%0111100000000000
	.dc.w	%0011110000000000
	.dc.w	%1000011000000000
	.dc.w	%1100011000000000
	.dc.w	%1011110000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	7	;$74 t
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0110000000000000
	.dc.w	%0110000000000000
	.dc.w	%1111100000000000
	.dc.w	%0110000000000000
	.dc.w	%0110000000000000
	.dc.w	%0110000000000000
	.dc.w	%0110000000000000
	.dc.w	%0110000000000000
	.dc.w	%0110110000000000
	.dc.w	%0011100000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	10	;$75 u
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%1110011100000000
	.dc.w	%0110001100000000
	.dc.w	%0110001100000000
	.dc.w	%0110001100000000
	.dc.w	%0110001100000000
	.dc.w	%0110001100000000
	.dc.w	%0110011100000000
	.dc.w	%0011110110000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	9	;$76 v
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%1111011100000000
	.dc.w	%0110001000000000
	.dc.w	%0110010000000000
	.dc.w	%0011010000000000
	.dc.w	%0011100000000000
	.dc.w	%0011100000000000
	.dc.w	%0001000000000000
	.dc.w	%0001000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	14	;$77 w
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%1111001000111000
	.dc.w	%0110001100010000
	.dc.w	%0110001100010000
	.dc.w	%0011010110100000
	.dc.w	%0011010110100000
	.dc.w	%0001110011100000
	.dc.w	%0001100011000000
	.dc.w	%0000100001000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	10	;$78 x
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%1111011100000000
	.dc.w	%0110001000000000
	.dc.w	%0011010000000000
	.dc.w	%0001100000000000
	.dc.w	%0001110000000000
	.dc.w	%0010011000000000
	.dc.w	%0100001100000000
	.dc.w	%1110011110000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	10	;$79 y
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%1111001110000000
	.dc.w	%0110000100000000
	.dc.w	%0110000100000000
	.dc.w	%0011001000000000
	.dc.w	%0011001000000000
	.dc.w	%0001110000000000
	.dc.w	%0001110000000000
	.dc.w	%0000100000000000
	.dc.w	%0000100000000000
	.dc.w	%0001000000000000
	.dc.w	%0110000000000000
	.dc.w	%0000000000000000
	.dc.w	8	;$7A z
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%1111111000000000
	.dc.w	%1000011000000000
	.dc.w	%0000110000000000
	.dc.w	%0001100000000000
	.dc.w	%0011000000000000
	.dc.w	%0110000000000000
	.dc.w	%1100001000000000
	.dc.w	%1111111000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	6	;$7B {
	.dc.w	%0000000000000000
	.dc.w	%0001100000000000
	.dc.w	%0010000000000000
	.dc.w	%0010000000000000
	.dc.w	%0010000000000000
	.dc.w	%0010000000000000
	.dc.w	%0100000000000000
	.dc.w	%1000000000000000
	.dc.w	%0100000000000000
	.dc.w	%0010000000000000
	.dc.w	%0010000000000000
	.dc.w	%0010000000000000
	.dc.w	%0010000000000000
	.dc.w	%0001100000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	6	;$7C |
	.dc.w	%0000000000000000
	.dc.w	%0010000000000000
	.dc.w	%0010000000000000
	.dc.w	%0010000000000000
	.dc.w	%0010000000000000
	.dc.w	%0010000000000000
	.dc.w	%0010000000000000
	.dc.w	%0010000000000000
	.dc.w	%0010000000000000
	.dc.w	%0010000000000000
	.dc.w	%0010000000000000
	.dc.w	%0010000000000000
	.dc.w	%0010000000000000
	.dc.w	%0010000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	6	;$7D }
	.dc.w	%0000000000000000
	.dc.w	%1100000000000000
	.dc.w	%0010000000000000
	.dc.w	%0010000000000000
	.dc.w	%0010000000000000
	.dc.w	%0010000000000000
	.dc.w	%0001000000000000
	.dc.w	%0000100000000000
	.dc.w	%0001000000000000
	.dc.w	%0010000000000000
	.dc.w	%0010000000000000
	.dc.w	%0010000000000000
	.dc.w	%0010000000000000
	.dc.w	%1100000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	6	;$7E  ̄
	.dc.w	%0000000000000000
	.dc.w	%1111100000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	8	;$7F DL
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	6	;$80 \
	.dc.w	%0000000000000000
	.dc.w	%1000000000000000
	.dc.w	%1000000000000000
	.dc.w	%1000000000000000
	.dc.w	%0100000000000000
	.dc.w	%0100000000000000
	.dc.w	%0010000000000000
	.dc.w	%0010000000000000
	.dc.w	%0010000000000000
	.dc.w	%0001000000000000
	.dc.w	%0001000000000000
	.dc.w	%0000100000000000
	.dc.w	%0000100000000000
	.dc.w	%0000100000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	8	;$81 ~
	.dc.w	%0000000000000000
	.dc.w	%0110000000000000
	.dc.w	%1001001000000000
	.dc.w	%0000110000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	6	;$82 �
	.dc.w	%0000000000000000
	.dc.w	%0010000000000000
	.dc.w	%0010000000000000
	.dc.w	%0010000000000000
	.dc.w	%0010000000000000
	.dc.w	%0010000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000
	.dc.w	%0010000000000000
	.dc.w	%0010000000000000
	.dc.w	%0010000000000000
	.dc.w	%0010000000000000
	.dc.w	%0010000000000000
	.dc.w	%0000000000000000
	.dc.w	%0000000000000000



;----------------------------------------------------------------
;
;	SASI IOCS
;
;----------------------------------------------------------------

SASI_OFFSET	equ	-$95B6+$CCB8

;----------------------------------------------------------------
;	絶対アドレス
;		リロケートする
;	変更前
;		000095BE 49F9(01)00009E30 	lea.l	sasi_seek_command,a4		;SEEKコマンド
;----------------------------------------------------------------
	PATCH_DATA	p95be,$00FF95BE+SASI_OFFSET,$00FF95BE+5+SASI_OFFSET,$49F900FF
	lea.l	$00FF9E30+SASI_OFFSET,a4
;----------------------------------------------------------------
;	変更前
;		00009650 49F9(01)00009E3C 		lea.l	sasi_set_drive_parameter_command,a4	;SET DRIVE PARAMETERコマンド
;----------------------------------------------------------------
	PATCH_DATA	p9650,$00FF9650+SASI_OFFSET,$00FF9650+5+SASI_OFFSET,$49F900FF
	lea.l	$00FF9E3C+SASI_OFFSET,a4
;----------------------------------------------------------------
;	変更前
;		0000965E 49F9(01)00009E60 			lea.l	sasi_20mb_shipping_parameter,a4	;20MBドライブパラメータ(シッピングゾーン)
;----------------------------------------------------------------
	PATCH_DATA	p965E,$00FF965E+SASI_OFFSET,$00FF965E+5+SASI_OFFSET,$49F900FF
	lea.l	$00FF9E60+SASI_OFFSET,a4
;----------------------------------------------------------------
;	変更前
;		00009684 43F9(01)00009E42 					lea.l	sasi_10mb_drive_parameter,a1	;10MBドライブパラメータ
;----------------------------------------------------------------
	PATCH_DATA	p9684,$00FF9684+SASI_OFFSET,$00FF9684+5+SASI_OFFSET,$43F900FF
	lea.l	$00FF9E42+SASI_OFFSET,a1
;----------------------------------------------------------------
;	変更前
;		00009694 43F9(01)00009E42 						lea.l	sasi_10mb_drive_parameter,a1	;10MBドライブパラメータ
;----------------------------------------------------------------
	PATCH_DATA	p9694,$00FF9694+SASI_OFFSET,$00FF9694+5+SASI_OFFSET,$43F900FF
	lea.l	$00FF9E42+SASI_OFFSET,a1
;----------------------------------------------------------------
;	変更前
;		000096C8 49F9(01)00009E3C 						lea.l	sasi_set_drive_parameter_command,a4		;SET DRIVE PARAMETERコマンド
;----------------------------------------------------------------
	PATCH_DATA	p96C8,$00FF96C8+SASI_OFFSET,$00FF96C8+5+SASI_OFFSET,$49F900FF
	lea.l	$00FF9E3C+SASI_OFFSET,a4
;----------------------------------------------------------------
;	変更前
;		00009728 49F9(01)00009E0C 	lea.l	sasi_test_drive_ready_command,a4	;TEST DRIVE READYコマンド
;----------------------------------------------------------------
	PATCH_DATA	p9728,$00FF9728+SASI_OFFSET,$00FF9728+5+SASI_OFFSET,$49F900FF
	lea.l	$00FF9E0C+SASI_OFFSET,a4
;----------------------------------------------------------------
;	変更前
;		000097B0 49F9(01)00009E2A 	lea.l	sasi_write_command,a4	;WRITEコマンド
;----------------------------------------------------------------
	PATCH_DATA	p97B0,$00FF97B0+SASI_OFFSET,$00FF97B0+5+SASI_OFFSET,$49F900FF
	lea.l	$00FF9E2A+SASI_OFFSET,a4
;----------------------------------------------------------------
;	変更前
;		00009854 49F9(01)00009E24 	lea.l	sasi_read_command,a4		;READコマンド
;----------------------------------------------------------------
	PATCH_DATA	p9854,$00FF9854+SASI_OFFSET,$00FF9854+5+SASI_OFFSET,$49F900FF
	lea.l	$00FF9E24+SASI_OFFSET,a4
;----------------------------------------------------------------
;	変更前
;		000098A6 49F9(01)00009E36 	lea.l	sasi_format_alternate_track_command,a4		;FORAMT ALTERNATE TRACKコマンド
;----------------------------------------------------------------
	PATCH_DATA	p98A6,$00FF98A6+SASI_OFFSET,$00FF98A6+5+SASI_OFFSET,$49F900FF
	lea.l	$00FF9E36+SASI_OFFSET,a4
;----------------------------------------------------------------
;	変更前
;		000098D6 49F9(01)00009E1E 	lea.l	sasi_format_bad_track_command,a4	;FORMAT BAD TRACKコマンド
;----------------------------------------------------------------
	PATCH_DATA	p98D6,$00FF98D6+SASI_OFFSET,$00FF98D6+5+SASI_OFFSET,$49F900FF
	lea.l	$00FF9E1E+SASI_OFFSET,a4
;----------------------------------------------------------------
;	変更前
;		000098FE 49F9(01)00009E18 	lea.l	sasi_format_track_command,a4		;FORMAT TRACKコマンド
;----------------------------------------------------------------
	PATCH_DATA	p98FE,$00FF98FE+SASI_OFFSET,$00FF98FE+5+SASI_OFFSET,$49F900FF
	lea.l	$00FF9E18+SASI_OFFSET,a4
;----------------------------------------------------------------
;	変更前
;		0000993A 43F9(01)00009E56 	lea.l	sasi_20mb_drive_parameter,a1	;20MBドライブパラメータ
;----------------------------------------------------------------
	PATCH_DATA	p993A,$00FF993A+SASI_OFFSET,$00FF993A+5+SASI_OFFSET,$43F900FF
	lea.l	$00FF9E56+SASI_OFFSET,a1
;----------------------------------------------------------------
;	変更前
;		00009946 43F9(01)00009E6A 		lea.l	sasi_40mb_drive_parameter,a1	;40MBドライブパラメータ
;----------------------------------------------------------------
	PATCH_DATA	p9946,$00FF9946+SASI_OFFSET,$00FF9946+5+SASI_OFFSET,$43F900FF
	lea.l	$00FF9E6A+SASI_OFFSET,a1
;----------------------------------------------------------------
;	変更前
;		00009952 43F9(01)00009E42 			lea.l	sasi_10mb_drive_parameter,a1	;10MBドライブパラメータ
;----------------------------------------------------------------
	PATCH_DATA	p9952,$00FF9952+SASI_OFFSET,$00FF9952+5+SASI_OFFSET,$43F900FF
	lea.l	$00FF9E42+SASI_OFFSET,a1
;----------------------------------------------------------------
;	変更前
;		00009972 43F9(01)00009E42 				lea.l	sasi_10mb_drive_parameter,a1	;10MBドライブパラメータ
;----------------------------------------------------------------
	PATCH_DATA	p9972,$00FF9972+SASI_OFFSET,$00FF9972+5+SASI_OFFSET,$43F900FF
	lea.l	$00FF9E42+SASI_OFFSET,a1
;----------------------------------------------------------------
;	変更前
;		000099B2 49F9(01)00009E3C 		lea.l	sasi_set_drive_parameter_command,a4	;SET DRIVE PARAMETERコマンド
;----------------------------------------------------------------
	PATCH_DATA	p99B2,$00FF99B2+SASI_OFFSET,$00FF99B2+5+SASI_OFFSET,$49F900FF
	lea.l	$00FF9E3C+SASI_OFFSET,a4
;----------------------------------------------------------------
;	変更前
;		000099FE 43F9(01)00009E60 			lea.l	sasi_20mb_shipping_parameter,a1
;----------------------------------------------------------------
	PATCH_DATA	p99FE,$00FF99FE+SASI_OFFSET,$00FF99FE+5+SASI_OFFSET,$43F900FF
	lea.l	$00FF9E60+SASI_OFFSET,a1
;----------------------------------------------------------------
;	変更前
;		00009A10 43F9(01)00009E74 				lea.l	sasi_40mb_shipping_parameter,a1
;----------------------------------------------------------------
	PATCH_DATA	p9A10,$00FF9A10+SASI_OFFSET,$00FF9A10+5+SASI_OFFSET,$43F900FF
	lea.l	$00FF9E74+SASI_OFFSET,a1
;----------------------------------------------------------------
;	変更前
;		00009A22 43F9(01)00009E4C 					lea.l	sasi_10mb_shipping_parameter,a1
;----------------------------------------------------------------
	PATCH_DATA	p9A22,$00FF9A22+SASI_OFFSET,$00FF9A22+5+SASI_OFFSET,$43F900FF
	lea.l	$00FF9E4C+SASI_OFFSET,a1
;----------------------------------------------------------------
;	変更前
;		00009A2E 49F9(01)00009E3C 				lea.l	sasi_set_drive_parameter_command,a4	;SET DRIVE PARAMETERコマンド
;----------------------------------------------------------------
	PATCH_DATA	p9A2E,$00FF9A2E+SASI_OFFSET,$00FF9A2E+5+SASI_OFFSET,$49F900FF
	lea.l	$00FF9E3C+SASI_OFFSET,a4
;----------------------------------------------------------------
;	変更前
;		00009A48 49F9(01)00009E30 							lea.l	sasi_seek_command,a4	;SEEKコマンド
;----------------------------------------------------------------
	PATCH_DATA	p9A48,$00FF9A48+SASI_OFFSET,$00FF9A48+5+SASI_OFFSET,$49F900FF
	lea.l	$00FF9E30+SASI_OFFSET,a4
;----------------------------------------------------------------
;	変更前
;		00009D76 49F9(01)00009E12 		lea.l	sasi_recalibrate_command,a4	;RECALIBRATEコマンド
;----------------------------------------------------------------
	PATCH_DATA	p9D76,$00FF9D76+SASI_OFFSET,$00FF9D76+5+SASI_OFFSET,$49F900FF
	lea.l	$00FF9E12+SASI_OFFSET,a4

;----------------------------------------------------------------
;	SASIベリファイ(1024バイト以下)
;	問題
;		https://twitter.com/kamadox/status/1361214698226479109
;		IOCS _B_VERIFYがSASIハードディスクのとき対象をスーパーバイザスタックに読み込んでメモリ上でデータを比較している
;		つまりOSの検査を受けていないバッファにDMA転送している
;		この構造はまずい。ローカルメモリがあるときスーパーバイザスタックにDMAが届くとは限らない
;	対策
;		比較するデータは直前にディスクに書き込んだデータでありそのバッファはDMA転送可能な領域にあることが期待できる
;		(1)バッファの先頭アドレスが$00F00000~$00FFFFFFの範囲にあるとき比較を行わず常に成功を返す
;		(2)比較するデータをバッファからスタックへコピーする
;		(3)比較されるデータをディスクからバッファへ読み込む
;		(4)読み込み成功のときバッファとスタックを比較する
;		(5)読み込み失敗または不一致のとき比較するデータをスタックからバッファへコピーする
;----------------------------------------------------------------
	PATCH_DATA	p9618,$00FF9618+SASI_OFFSET,$00FF963F+SASI_OFFSET,$4FEFFC00
	jmp	sasi_verify_1024
	PATCH_TEXT
;<d1.w:$8000|HD-ID(0~15)<<8
;<d2.l:レコード番号
;<d3.w:バイト数。1024以下
;<a1.l:バッファの先頭アドレス
;>d0.l:0=成功,-2=失敗
sasi_verify_1024:
	push	d4/a0-a1/a6,1024
;(1)バッファの先頭アドレスが$00F00000~$00FFFFFFの範囲にあるとき比較を行わず常に成功を返す
	moveq.l	#0,d0			;成功
	gotoand	<cmpa.l #$00F00000,a1>,hs,<cmpa.l #$00FFFFFF,a1>,ls,90f
;(2)比較するデータをバッファからスタックへコピーする
	movea.l	a1,a6			;バッファ
;	movea.l	a6,a1			;バッファ
	movea.l	sp,a0			;スタック
	move.w	d3,d4
	subq.w	#1,d4
	for	d4
		move.b	(a1)+,(a0)+
	next
;(3)比較されるデータをディスクからバッファへ読み込む
	movea.l	a6,a1			;バッファ
	jsr	$00FF9826+SASI_OFFSET	;sasi_read_modify。d1-d3/a1/a6は破壊されない
	goto	<tst.b d0>,ne,10f	;読み込み失敗
;読み込み成功
;(4)読み込み成功のときバッファとスタックを比較する
	moveq.l	#0,d0			;成功
;	movea.l	a6,a1			;バッファ
	movea.l	sp,a0			;スタック
	move.w	d3,d4
	subq.w	#1,d4
	for	d4
		cmpm.b	(a1)+,(a0)+
	next	eq
	goto	eq,90f			;一致
;不一致
	moveq.l	#-2,d0			;失敗
;(5)読み込み失敗または不一致のとき比較するデータをスタックからバッファへコピーする
10:	movea.l	sp,a1			;スタック
	movea.l	a6,a0			;バッファ
	move.w	d3,d4
	subq.w	#1,d4
	for	d4
		move.b	(a1)+,(a0)+
	next
90:	pop
	rts

;----------------------------------------------------------------
;	sasi_write_retryのループ
;		これはリトライ回数なのでこのまま
;	変更前
;		00009798 3F3C0064         	move.w	#100,-(sp)
;----------------------------------------------------------------

;----------------------------------------------------------------
;	sasi_read_retryのループ
;		これはリトライ回数なのでこのまま
;	変更前
;		0000983C 3F3C0064         	move.w	#100,-(sp)
;----------------------------------------------------------------

;----------------------------------------------------------------
;	sasi_preprocessのループ
;		バスフリーフェーズを待つ。要調整
;	変更前
;		00009AA4 203C000000C8     	move.l	#201-1,d0
;----------------------------------------------------------------
	PATCH_DATA	p9AA4,$00FF9AA4+SASI_OFFSET,$00FF9AA4+5+SASI_OFFSET,$203C0000
	move.w	BIOS_MPU_SPEED_ROM.w,d0
	lsr.w	#2,d0			;(10*1000/12)/4=208

;----------------------------------------------------------------
;	sasi_do_selectのループ
;		バスフリーフェーズを待つ。要調整
;	変更前
;		00009B24 203C000007D0     		move.l	#2001-1,d0
;----------------------------------------------------------------
	PATCH_DATA	p9B24,$00FF9B24+SASI_OFFSET,$00FF9B24+5+SASI_OFFSET,$203C0000
	jsr	p9b24
	PATCH_TEXT
p9b24:
	move.w	BIOS_MPU_SPEED_ROM.w,d0
	mulu.w	#3,d0			;(10*1000/12)*3=2500
	rts
;----------------------------------------------------------------
;	変更前
;		00009B34*51C8FFF4_00009B2A	dbra	~~forDn,~~redo68
;----------------------------------------------------------------
	PATCH_DATA	p9B34,$00FF9B34+SASI_OFFSET,$00FF9B34+3+SASI_OFFSET,$51C8FFF4
	subq.l	#1,d0
	bcc.s	(*)-$9B36+$9B2A

;----------------------------------------------------------------
;	sasi_do_select_10のループ
;		BSYがセットされるのを待つ。要調整
;	変更前
;		00009B64 203C00001388     	move.l	#5000,d0
;----------------------------------------------------------------
	PATCH_DATA	p9B64,$00FF9B64+SASI_OFFSET,$00FF9B64+5+SASI_OFFSET,$203C0000
	jsr	p9b64
	PATCH_TEXT
p9b64:
	move.w	BIOS_MPU_SPEED_ROM.w,d0
	mulu.w	#6,d0			;(10*1000/12)*6=5000
	rts

;----------------------------------------------------------------
;	sasi_stsin_msginのsasi_wait_statusの引数
;		ステータスフェーズとメッセージフェーズを待つ。要調整
;	変更前
;		00009B94 2A3C004C4B40     	move.l	#5000000,d5
;----------------------------------------------------------------
	PATCH_DATA	p9B94,$00FF9B94+SASI_OFFSET,$00FF9B94+5+SASI_OFFSET,$2A3C004C
	jsr	p9b94
	PATCH_TEXT
p9b94:
	move.w	BIOS_MPU_SPEED_ROM.w,d5
	mulu.w	#6000,d5		;(10*1000/12)*6000=5000000
	rts
;----------------------------------------------------------------
;	変更前
;		00009BA8 2A3C0001E848     		move.l	#125000,d5
;----------------------------------------------------------------
	PATCH_DATA	p9BA8,$00FF9BA8+SASI_OFFSET,$00FF9BA8+5+SASI_OFFSET,$2A3C0001
	jsr	p9ba8
	PATCH_TEXT
p9ba8:
	move.w	BIOS_MPU_SPEED_ROM.w,d5
	mulu.w	#150,d5			;(10*1000/12)*150=125000
	rts

;----------------------------------------------------------------
;	sasi_receive_senseのループ
;		データインフェーズを待つ。要調整
;	変更前
;		00009C3E 283C0003D090     		move.l	#250000,d4
;----------------------------------------------------------------
	PATCH_DATA	p9C3E,$00FF9C3E+SASI_OFFSET,$00FF9C3E+5+SASI_OFFSET,$283C0003
	jsr	p9c3e
	PATCH_TEXT
p9c3e:
	move.w	BIOS_MPU_SPEED_ROM.w,d4
	mulu.w	#300,d4			;(10*1000/12)*300=250000
	rts

;----------------------------------------------------------------
;	sasi_send_commandのループ
;		コマンドフェーズを待つ。要調整
;	変更前
;		00009CC6 243C0003D090     		move.l	#250000,d2
;----------------------------------------------------------------
	PATCH_DATA	p9CC6,$00FF9CC6+SASI_OFFSET,$00FF9CC6+5+SASI_OFFSET,$243C0003
	jsr	p9cc6
	PATCH_TEXT
p9cc6:
	move.w	BIOS_MPU_SPEED_ROM.w,d2
	mulu.w	#300,d2			;(10*1000/12)*300=250000
	rts

;----------------------------------------------------------------
;	sasi_command_startのループ
;		コマンドフェーズを待つ。最初の5バイトと最後の1バイト。要調整
;	変更前
;		00009D14 243C0003D090     		move.l	#250000,d2
;----------------------------------------------------------------
	PATCH_DATA	p9D14,$00FF9D14+SASI_OFFSET,$00FF9D14+5+SASI_OFFSET,$243C0003
	jsr	p9d14
	PATCH_TEXT
p9d14:
	move.w	BIOS_MPU_SPEED_ROM.w,d2
	mulu.w	#300,d2			;(10*1000/12)*300=250000
	rts
;----------------------------------------------------------------
;	変更前
;		00009D40 243C0003D090     	move.l	#250000,d2
;----------------------------------------------------------------
	PATCH_DATA	p9D40,$00FF9D40+SASI_OFFSET,$00FF9D40+5+SASI_OFFSET,$243C0003
	jsr	p9d40
	PATCH_TEXT
p9d40:
	move.w	BIOS_MPU_SPEED_ROM.w,d2
	mulu.w	#300,d2			;(10*1000/12)*300=250000
;DMA転送前のキャッシュフラッシュ
;	コマンドの最後の1バイトを送信する直前にキャッシュをフラッシュしておく
;	$00FF9E02の転送開始の直前で時間をかけるとDMACが最初の外部転送要求を見逃す可能性がある
	bra	cache_flush

;----------------------------------------------------------------
;	sasi_mpuout_10byteのループ
;		データアウトフェーズを待つ。要調整
;	変更前
;		00009DA0 283C0003D090     		move.l	#250000,d4
;----------------------------------------------------------------
	PATCH_DATA	p9DA0,$00FF9DA0+SASI_OFFSET,$00FF9DA0+5+SASI_OFFSET,$283C0003
	jsr	p9da0
	PATCH_TEXT
p9da0:
	move.w	BIOS_MPU_SPEED_ROM.w,d4
	mulu.w	#300,d4			;(10*1000/12)*300=250000
	rts

;----------------------------------------------------------------
;	sasi_do_recalibrateのsasi_wait_statusの引数
;		ステータスフェーズを待つ。要調整
;	変更前
;		00009D82 2A3C004C4B40     			move.l	#5000000,d5
;----------------------------------------------------------------
	PATCH_DATA	p9D82,$00FF9D82+SASI_OFFSET,$00FF9D82+5+SASI_OFFSET,$2A3C004C
	jsr	p9d82
	PATCH_TEXT
p9d82:
	move.w	BIOS_MPU_SPEED_ROM.w,d5
	mulu.w	#6000,d5		;(10*1000/12)*6000=5000000
	rts



;----------------------------------------------------------------
;	IOCS$4xのHDの処理
;		SCSI内蔵機のとき何もせずエラーを返す
;			SCSI内蔵機のときIOCS$4xのHDの処理はここに来る前に終わっている
;		SASI内蔵機のときSASI IOCSにジャンプする
;	変更前
;		00008704 670009B2_000090B8        beq     scsi_40_B_SEEK          ;IOCSコール$40 _B_SEEK(SCSI)
;----------------------------------------------------------------
	PATCH_DATA	p8704,$00FF8704,$00FF8704+3,$670009B2
;	beq.w	(*)-$8704+$95B6+SASI_OFFSET	;sasi_40_B_SEEK
	PATCH_beq.w	pD580,pD580_40
;----------------------------------------------------------------
;	変更前
;		0000874A 67000A9C_000091E8        beq     scsi_41_B_VERIFY        ;IOCSコール$41 _B_VERIFY(SCSI)
;----------------------------------------------------------------
	PATCH_DATA	p874A,$00FF874A,$00FF874A+3,$67000A9C
;	beq.w	(*)-$874A+$95DA+SASI_OFFSET	;sasi_41_B_VERIFY
	PATCH_beq.w	pD580,pD580_41
;----------------------------------------------------------------
;	変更前
;		0000884C 67000A02_00009250        beq     scsi_43_B_DSKINI        ;IOCSコール$43 _B_DSKINI(SCSI)
;----------------------------------------------------------------
	PATCH_DATA	p884C,$00FF884C,$00FF884C+3,$67000A02
;	beq.w	(*)-$884C+$9640+SASI_OFFSET	;sasi_43_B_DSKINI
	PATCH_beq.w	pD580,pD580_43
;----------------------------------------------------------------
;	変更前
;		00008890 67000844_000090D6        beq     scsi_44_B_DRVSNS        ;IOCSコール$44 _B_DRVSNS(SCSI)
;----------------------------------------------------------------
	PATCH_DATA	p8890,$00FF8890,$00FF8890+3,$67000844
;	beq.w	(*)-$8890+$9720+SASI_OFFSET	;sasi_44_B_DRVSNS
	PATCH_beq.w	pD580,pD580_44
;----------------------------------------------------------------
;	変更前
;		000088D0 670008B0_00009182        beq     scsi_45_B_WRITE         ;IOCSコール$45 _B_WRITE(SCSI)
;----------------------------------------------------------------
	PATCH_DATA	p88D0,$00FF88D0,$00FF88D0+3,$670008B0
;	beq.w	(*)-$88D0+$9744+SASI_OFFSET	;sasi_45_B_WRITE
	PATCH_beq.w	pD580,pD580_45
;----------------------------------------------------------------
;	変更前
;		00008950 6700082A_0000917C        beq     scsi_46_B_READ          ;IOCSコール$46 _B_READ(SCSI)
;----------------------------------------------------------------
	PATCH_DATA	p8950,$00FF8950,$00FF8950+3,$6700082A
;	beq.w	(*)-$8950+$97E8+SASI_OFFSET	;sasi_46_B_READ
	PATCH_beq.w	pD580,pD580_46
;----------------------------------------------------------------
;	変更前
;		000089C6 670006F6_000090BE        beq     scsi_47_B_RECALI        ;IOCSコール$47 _B_RECALI(SCSI)
;----------------------------------------------------------------
	PATCH_DATA	p89C6,$00FF89C6,$00FF89C6+3,$670006F6
;	beq.w	(*)-$89C6+$988C+SASI_OFFSET	;sasi_47_B_RECALI
	PATCH_beq.w	pD580,pD580_47
;----------------------------------------------------------------
;	変更前
;		00008A96 6700062C_000090C4        beq     scsi_48_B_ASSIGN        ;IOCSコール$48 _B_ASSIGN(SCSI)
;----------------------------------------------------------------
	PATCH_DATA	p8A96,$00FF8A96,$00FF8A96+3,$6700062C
;	beq.w	(*)-$8A96+$989E+SASI_OFFSET	;sasi_48_B_ASSIGN
	PATCH_beq.w	pD580,pD580_48
;----------------------------------------------------------------
;	変更前
;		00008B2E 6700059A_000090CA        beq     scsi_4B_B_BADFMT        ;IOCSコール$4B _B_BADFMT(SCSI)
;----------------------------------------------------------------
	PATCH_DATA	p8B2E,$00FF8B2E,$00FF8B2E+3,$6700059A
;	beq.w	(*)-$8B2E+$98CE+SASI_OFFSET	;sasi_4B_B_BADFMT
	PATCH_beq.w	pD580,pD580_4B
;----------------------------------------------------------------
;	変更前
;		00008B80 6700054E_000090D0        beq     scsi_4D_B_FORMAT        ;IOCSコール$4D _B_FORMAT(SCSI)
;----------------------------------------------------------------
	PATCH_DATA	p8B80,$00FF8B80,$00FF8B80+3,$6700054E
;	beq.w	(*)-$8B80+$98F6+SASI_OFFSET	;sasi_4D_B_FORMAT
	PATCH_beq.w	pD580,pD580_4D
;----------------------------------------------------------------
;	変更前
;		00008D4C 670003C6_00009114        beq     scsi_4F_B_EJECT         ;IOCSコール$4F _B_EJECT(SCSI)
;----------------------------------------------------------------
	PATCH_DATA	p8D4C,$00FF8D4C,$00FF8D4C+3,$670003C6
;	beq.w	(*)-$8D4C+$99D0+SASI_OFFSET	;sasi_4F_B_EJECT
	PATCH_beq.w	pD580,pD580_4F
;----------------------------------------------------------------
;	変更前
;		0000D580 102E0009         		move.b	SPC_INTS(aSPC),d0
;----------------------------------------------------------------
;	PATCH_DATA	pD580,$00FFD580,$00FFDCE3,$102E0009
	PATCH_DATA	pD580,$00FFD580,$00FFD67F,$102E0009
pD580_40:
	goto	<tst.b BIOS_BUILTIN_SCSI.w>,ne,pD580_error
	goto	($00FF95B6+SASI_OFFSET)PATCH_ZL	;sasi_40_B_SEEK
pD580_41:
	goto	<tst.b BIOS_BUILTIN_SCSI.w>,ne,pD580_error
	goto	($00FF95DA+SASI_OFFSET)PATCH_ZL	;sasi_41_B_VERIFY
pD580_43:
	goto	<tst.b BIOS_BUILTIN_SCSI.w>,ne,pD580_error
	goto	($00FF9640+SASI_OFFSET)PATCH_ZL	;sasi_43_B_DSKINI
pD580_44:
	goto	<tst.b BIOS_BUILTIN_SCSI.w>,ne,pD580_error
	goto	($00FF9720+SASI_OFFSET)PATCH_ZL	;sasi_44_B_DRVSNS
pD580_45:
	goto	<tst.b BIOS_BUILTIN_SCSI.w>,ne,pD580_error
	goto	($00FF9744+SASI_OFFSET)PATCH_ZL	;sasi_45_B_WRITE
pD580_46:
	goto	<tst.b BIOS_BUILTIN_SCSI.w>,ne,pD580_error
	goto	($00FF97E8+SASI_OFFSET)PATCH_ZL	;sasi_46_B_READ
pD580_47:
	goto	<tst.b BIOS_BUILTIN_SCSI.w>,ne,pD580_error
	goto	($00FF988C+SASI_OFFSET)PATCH_ZL	;sasi_47_B_RECALI
pD580_48:
	goto	<tst.b BIOS_BUILTIN_SCSI.w>,ne,pD580_error
	goto	($00FF989E+SASI_OFFSET)PATCH_ZL	;sasi_48_B_ASSIGN
pD580_4B:
	goto	<tst.b BIOS_BUILTIN_SCSI.w>,ne,pD580_error
	goto	($00FF98CE+SASI_OFFSET)PATCH_ZL	;sasi_4B_B_BADFMT
pD580_4D:
	goto	<tst.b BIOS_BUILTIN_SCSI.w>,ne,pD580_error
	goto	($00FF98F6+SASI_OFFSET)PATCH_ZL	;sasi_4D_B_FORMAT
pD580_4F:
	goto	<tst.b BIOS_BUILTIN_SCSI.w>,ne,pD580_error
	goto	($00FF99D0+SASI_OFFSET)PATCH_ZL	;sasi_4F_B_EJECT
pD580_error:
	moveq.l	#-1,d0
	rts



;----------------------------------------------------------------
;
;	パッチデータの末尾
;
;----------------------------------------------------------------

	PATCH_END



	.end
1 2