branches/alto2/src/emu/cpu/alto2/a2ether.c
r26396 | r26397 | |
571 | 571 | */ |
572 | 572 | void alto2_cpu_device::eth_startf() |
573 | 573 | { |
574 | | PUT_ETH_ICMD(m_eth.status, X_BIT(m_bus,16,14)); |
575 | | PUT_ETH_OCMD(m_eth.status, X_BIT(m_bus,16,15)); |
| 574 | for (int sysclk = 0; sysclk < 2; sysclk++) |
| 575 | { |
| 576 | UINT8 s0, s1; |
| 577 | /* |
| 578 | * JK flip-flop 35a (SIO' and SYSCLK clocked) |
| 579 | * (Sheet 7) |
| 580 | * |
| 581 | * CLK (SIO & SYSCLK)' |
| 582 | * J BUS[15] |
| 583 | * K' 1 |
| 584 | * S' 1 |
| 585 | * C' ERESET' |
| 586 | * Q OCMD |
| 587 | * Q' OCMD' |
| 588 | */ |
| 589 | s0 = m_eth.ff_35a; |
| 590 | s1 = sysclk ? JKFF_CLK : JKFF_0; |
| 591 | if (X_BIT(m_bus,16,15)) |
| 592 | s1 |= JKFF_J; |
| 593 | s1 |= JKFF_K; |
| 594 | s1 |= JKFF_C; // ERESET not now |
| 595 | m_eth.ff_35a = update_jkff(s0, s1, "35a OCMD "); |
| 596 | |
| 597 | /* |
| 598 | * JK flip-flop 35b (SIO' and SYSCLK clocked) |
| 599 | * (Sheet 7) |
| 600 | * |
| 601 | * CLK (SIO & SYSCLK)' |
| 602 | * J BUS[14] |
| 603 | * K' 1 |
| 604 | * S' 1 |
| 605 | * C' ERESET' |
| 606 | * Q ICMD |
| 607 | * Q' ICMD' |
| 608 | */ |
| 609 | s0 = m_eth.ff_35b; |
| 610 | s1 = sysclk ? JKFF_CLK : JKFF_0; |
| 611 | if (X_BIT(m_bus,16,14)) |
| 612 | s1 |= JKFF_J; |
| 613 | s1 |= JKFF_K; |
| 614 | s1 |= JKFF_C; // ERESET not now |
| 615 | m_eth.ff_35b = update_jkff(s0, s1, "35b ICMD "); |
| 616 | } |
| 617 | PUT_ETH_OCMD(m_eth.status, m_eth.ff_35a & JKFF_Q ? 1 : 0); |
| 618 | PUT_ETH_ICMD(m_eth.status, m_eth.ff_35b & JKFF_Q ? 1 : 0); |
576 | 619 | LOG((LOG_ETH,3, " STARTF; ICMD=%u OCMD=%u\n", GET_ETH_ICMD(m_eth.status), GET_ETH_ICMD(m_eth.status))); |
577 | 620 | eth_wakeup(); |
578 | 621 | } |
r26396 | r26397 | |
835 | 878 | m_ewfct = 0; |
836 | 879 | } |
837 | 880 | |
| 881 | void alto2_cpu_device::update_ether() |
| 882 | { |
| 883 | UINT8 s0, s1; |
| 884 | |
| 885 | /* |
| 886 | * JK flip-flop 65a IDL (Sheet 10) |
| 887 | * |
| 888 | * CLK ARC' |
| 889 | * J 65b Q |
| 890 | * K' 1 |
| 891 | * S' 1 |
| 892 | * C' ERESET' |
| 893 | * Q IDL |
| 894 | * Q' IDL' |
| 895 | */ |
| 896 | s0 = m_eth.ff_65a; |
| 897 | s1 = JKFF_CLK; |
| 898 | m_eth.ff_65a = update_jkff(s0, s1, "65a IDL "); |
| 899 | |
| 900 | /* |
| 901 | * JK flip-flop 65b IO (Sheet 10) |
| 902 | * |
| 903 | * CLK ISRFULL |
| 904 | * J WLF |
| 905 | * K' 1 |
| 906 | * S' 1 |
| 907 | * C' ERESET |
| 908 | * Q to 65a J |
| 909 | * Q' --- |
| 910 | */ |
| 911 | s0 = m_eth.ff_65b; |
| 912 | s1 = JKFF_CLK; |
| 913 | m_eth.ff_65b = update_jkff(s0, s1, "65b IO "); |
| 914 | |
| 915 | /* |
| 916 | * JK flip-flop 77a WR (Sheet 10) |
| 917 | * |
| 918 | * CLK ARC' |
| 919 | * J RW' |
| 920 | * K' (WLF & BF')' |
| 921 | * S' BUSY |
| 922 | * C' 1 |
| 923 | * Q WR' |
| 924 | * Q' WR |
| 925 | */ |
| 926 | s0 = m_eth.ff_77a; |
| 927 | s1 = JKFF_CLK; |
| 928 | m_eth.ff_77a = update_jkff(s0, s1, "77a WR "); |
| 929 | |
| 930 | /* |
| 931 | * JK flip-flop 77b WLF (Sheet 10) |
| 932 | * |
| 933 | * CLK WLLOAD |
| 934 | * J 1 |
| 935 | * K' 1 |
| 936 | * S' 1 |
| 937 | * C' (BUSY | WE') |
| 938 | * Q WLF |
| 939 | * Q' WLF' |
| 940 | */ |
| 941 | s0 = m_eth.ff_77b; |
| 942 | s1 = JKFF_CLK; |
| 943 | m_eth.ff_77b = update_jkff(s0, s1, "77b WLF "); |
| 944 | |
| 945 | /* |
| 946 | * JK flip-flop 10a IBUSY (Sheet 13) |
| 947 | * |
| 948 | * CLK SYSCLK' |
| 949 | * J 0 |
| 950 | * K' EISFCT' |
| 951 | * S' ERESET' |
| 952 | * C' 1 |
| 953 | * Q IBUSY' |
| 954 | * Q' IBUSY |
| 955 | */ |
| 956 | s0 = m_eth.ff_10a; |
| 957 | s1 = JKFF_CLK; |
| 958 | m_eth.ff_10a = update_jkff(s0, s1, "10a IBUSY "); |
| 959 | |
| 960 | /* |
| 961 | * JK flip-flop 10b OBUSY (Sheet 13) |
| 962 | * |
| 963 | * CLK SYSCLK' |
| 964 | * J 0 |
| 965 | * K' EOSFCT' |
| 966 | * S' ERESET' |
| 967 | * C' 1 |
| 968 | * Q OBUSY' |
| 969 | * Q' OBUSY |
| 970 | */ |
| 971 | s0 = m_eth.ff_10b; |
| 972 | s1 = JKFF_CLK; |
| 973 | m_eth.ff_10b = update_jkff(s0, s1, "10b OBUSY "); |
| 974 | |
| 975 | /* |
| 976 | * JK flip-flop 69a IT (Sheet 14) |
| 977 | * |
| 978 | * CLK ARC' |
| 979 | * J (BNE & ILOC & IMID & WR') |
| 980 | * K' 1 |
| 981 | * S' 1 |
| 982 | * C' ERESET' |
| 983 | * Q INGONE |
| 984 | * Q' INGONE' |
| 985 | */ |
| 986 | s0 = m_eth.ff_69a; |
| 987 | s1 = JKFF_CLK; |
| 988 | m_eth.ff_69a = update_jkff(s0, s1, "69a IT "); |
| 989 | |
| 990 | /* |
| 991 | * JK flip-flop 69b INON (Sheet 14) |
| 992 | * |
| 993 | * CLK ARC' |
| 994 | * J CARRIER' |
| 995 | * K' (IMID' & ILOC)' |
| 996 | * S' 1 |
| 997 | * C' IBUSY |
| 998 | * Q INON |
| 999 | * Q' INON' |
| 1000 | */ |
| 1001 | s0 = m_eth.ff_69b; |
| 1002 | s1 = JKFF_CLK; |
| 1003 | m_eth.ff_69b = update_jkff(s0, s1, "69b INON "); |
| 1004 | |
| 1005 | /* |
| 1006 | * JK flip-flop 70a IMID (Sheet 14) |
| 1007 | * |
| 1008 | * CLK RCLK |
| 1009 | * J ISR00 |
| 1010 | * K' 1 |
| 1011 | * S' 1 |
| 1012 | * C' INON |
| 1013 | * Q IMID |
| 1014 | * Q' IMID' |
| 1015 | */ |
| 1016 | s0 = m_eth.ff_70a; |
| 1017 | s1 = JKFF_CLK; |
| 1018 | m_eth.ff_70a = update_jkff(s0, s1, "70a IMID "); |
| 1019 | |
| 1020 | /* |
| 1021 | * JK flip-flop 70b ILOC (Sheet 14) |
| 1022 | * |
| 1023 | * CLK CARRIER' |
| 1024 | * J 1 |
| 1025 | * K' 1 |
| 1026 | * S' 1 |
| 1027 | * C' INON |
| 1028 | * Q ILOC |
| 1029 | * Q' ILOC' |
| 1030 | */ |
| 1031 | s0 = m_eth.ff_70b; |
| 1032 | s1 = JKFF_CLK; |
| 1033 | m_eth.ff_70b = update_jkff(s0, s1, "70b ILOC "); |
| 1034 | |
| 1035 | /* |
| 1036 | * JK flip-flop 47a OUTON (Sheet 15) |
| 1037 | * |
| 1038 | * CLK RCLK |
| 1039 | * J (ISR15 | ISRFULL)' |
| 1040 | * K' dito |
| 1041 | * S' INON |
| 1042 | * C' 1 |
| 1043 | * Q --- |
| 1044 | * Q' ISR14 |
| 1045 | */ |
| 1046 | s0 = m_eth.ff_47a; |
| 1047 | s1 = JKFF_CLK; |
| 1048 | m_eth.ff_47a = update_jkff(s0, s1, "47a ISR14 "); |
| 1049 | |
| 1050 | /* |
| 1051 | * JK flip-flop 47b COLL (Sheet 15) |
| 1052 | * |
| 1053 | * CLK RCLK |
| 1054 | * J RDATA |
| 1055 | * K' dito |
| 1056 | * S' 1 |
| 1057 | * C' INON |
| 1058 | * Q ISR15 |
| 1059 | * Q' --- |
| 1060 | */ |
| 1061 | s0 = m_eth.ff_47b; |
| 1062 | s1 = JKFF_CLK; |
| 1063 | m_eth.ff_47b = update_jkff(s0, s1, "47b ISR15 "); |
| 1064 | |
| 1065 | /* |
| 1066 | * JK flip-flop 52b OSLOAD (Sheet 17) |
| 1067 | * |
| 1068 | * CLK TCLK' |
| 1069 | * J PROM a42 O2 |
| 1070 | * K' dito |
| 1071 | * S' 1 |
| 1072 | * C' 1 |
| 1073 | * Q OSLOAD' |
| 1074 | * Q' OSLOAD |
| 1075 | */ |
| 1076 | s0 = m_eth.ff_52b; |
| 1077 | s1 = JKFF_CLK; |
| 1078 | m_eth.ff_52b = update_jkff(s0, s1, "52b OSLOAD "); |
| 1079 | |
| 1080 | /* |
| 1081 | * JK flip-flop 51a EWFCT latch (Sheet 19) |
| 1082 | * |
| 1083 | * CLK SYSCLK' |
| 1084 | * J OCDW |
| 1085 | * K' EWFCT' |
| 1086 | * S' ERSET' |
| 1087 | * C' 1 |
| 1088 | * Q EWFCT latch(?) |
| 1089 | * Q' --- |
| 1090 | */ |
| 1091 | s0 = m_eth.ff_51a; |
| 1092 | s1 = JKFF_CLK; |
| 1093 | m_eth.ff_51a = update_jkff(s0, s1, "51a EWFCT_L "); |
| 1094 | |
| 1095 | /* |
| 1096 | * JK flip-flop 51b OCDW (Sheet 19) |
| 1097 | * |
| 1098 | * CLK ARC' |
| 1099 | * J (EWFCT latch | SWAKMRT')' |
| 1100 | * K' ETAC' |
| 1101 | * S' 1 |
| 1102 | * C' ERESET' |
| 1103 | * Q OCDW |
| 1104 | * Q' OCDW' |
| 1105 | */ |
| 1106 | s0 = m_eth.ff_51b; |
| 1107 | s1 = JKFF_CLK; |
| 1108 | m_eth.ff_51b = update_jkff(s0, s1, "51b OCDW "); |
| 1109 | |
| 1110 | /* |
| 1111 | * JK flip-flop 21a OUTON (Sheet 19) |
| 1112 | * |
| 1113 | * CLK OTHER' |
| 1114 | * J OUTON |
| 1115 | * K' 1 |
| 1116 | * S' 1 |
| 1117 | * C' OBUSY |
| 1118 | * Q to FF 21b J and K' |
| 1119 | * Q' --- |
| 1120 | */ |
| 1121 | s0 = m_eth.ff_21a; |
| 1122 | s1 = JKFF_CLK; |
| 1123 | m_eth.ff_21a = update_jkff(s0, s1, "21a OUTON "); |
| 1124 | |
| 1125 | /* |
| 1126 | * JK flip-flop 21b COLL (Sheet 19) |
| 1127 | * |
| 1128 | * CLK ARC' |
| 1129 | * J from FF 21a Q |
| 1130 | * K' dito |
| 1131 | * S' 1 |
| 1132 | * C' OBUSY |
| 1133 | * Q COLL |
| 1134 | * Q' COLL' |
| 1135 | */ |
| 1136 | s0 = m_eth.ff_21b; |
| 1137 | s1 = JKFF_CLK; |
| 1138 | m_eth.ff_21b = update_jkff(s0, s1, "21b COLL "); |
| 1139 | |
| 1140 | /* |
| 1141 | * JK flip-flop 31a OUTGONE (Sheet 19) |
| 1142 | * |
| 1143 | * CLK OUTON' |
| 1144 | * J 1 |
| 1145 | * K' 1 |
| 1146 | * S' 1 |
| 1147 | * C' OBUSY |
| 1148 | * Q OUTGONE |
| 1149 | * Q' OUTGONE' |
| 1150 | */ |
| 1151 | s0 = m_eth.ff_31a; |
| 1152 | s1 = JKFF_CLK; |
| 1153 | m_eth.ff_31a = update_jkff(s0, s1, "31a OUTGONE "); |
| 1154 | |
| 1155 | /* |
| 1156 | * JK flip-flop 31b OEOT (Sheet 19) |
| 1157 | * |
| 1158 | * CLK SYSCLK' |
| 1159 | * J 0 |
| 1160 | * K' EEFCT' |
| 1161 | * S' ERESET' |
| 1162 | * C' 1 |
| 1163 | * Q OEOT' |
| 1164 | * Q' --- |
| 1165 | */ |
| 1166 | s0 = m_eth.ff_31b; |
| 1167 | s1 = JKFF_CLK; |
| 1168 | m_eth.ff_31b = update_jkff(s0, s1, "31b OEOT "); |
| 1169 | |
| 1170 | /* |
| 1171 | * JK flip-flop 61a CRCGO (Sheet 21) |
| 1172 | * |
| 1173 | * CLK TCLK' |
| 1174 | * J (OSLOAD & BE) |
| 1175 | * K' 1 |
| 1176 | * S' 1 |
| 1177 | * C' OUTEND' |
| 1178 | * Q CRCGO |
| 1179 | * Q' CRCGO' |
| 1180 | */ |
| 1181 | s0 = m_eth.ff_61a; |
| 1182 | s1 = JKFF_CLK; |
| 1183 | m_eth.ff_61a = update_jkff(s0, s1, "61a CRCGO "); |
| 1184 | |
| 1185 | /* |
| 1186 | * JK flip-flop 61b OUTRGO (Sheet 21) |
| 1187 | * |
| 1188 | * CLK TCLK' |
| 1189 | * J OUTGO |
| 1190 | * K' dito |
| 1191 | * S' 1 |
| 1192 | * C' OUTEND' |
| 1193 | * Q OUTRGO |
| 1194 | * Q' --- |
| 1195 | */ |
| 1196 | s0 = m_eth.ff_61b; |
| 1197 | s1 = JKFF_CLK; |
| 1198 | m_eth.ff_61b = update_jkff(s0, s1, "61b OUTRGO "); |
| 1199 | |
| 1200 | /* |
| 1201 | * JK flip-flop 62a OUTGO (Sheet 21) |
| 1202 | * |
| 1203 | * CLK TCLK' |
| 1204 | * J OUTON |
| 1205 | * K' 1 |
| 1206 | * S' 1 |
| 1207 | * C' OUTEND' |
| 1208 | * Q OUTGO |
| 1209 | * Q' --- |
| 1210 | */ |
| 1211 | s0 = m_eth.ff_62a; |
| 1212 | s1 = JKFF_CLK; |
| 1213 | m_eth.ff_62a = update_jkff(s0, s1, "62a OUTGO "); |
| 1214 | |
| 1215 | /* |
| 1216 | * JK flip-flop 62b OUTON (Sheet 21) |
| 1217 | * |
| 1218 | * CLK TCLK' |
| 1219 | * J (FEOT' | OOK')' |
| 1220 | * K' (CRCGO & OSLOAD)' |
| 1221 | * S' 1 |
| 1222 | * C' PESTOP' |
| 1223 | * Q OUTON |
| 1224 | * Q' OUTON' |
| 1225 | */ |
| 1226 | s0 = m_eth.ff_62b; |
| 1227 | s1 = JKFF_CLK; |
| 1228 | m_eth.ff_62b = update_jkff(s0, s1, "62b OUTON "); |
| 1229 | } |
| 1230 | |
838 | 1231 | /** |
839 | 1232 | * @brief ethernet task slot initialization |
840 | 1233 | */ |