.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