Previous 199869 Revisions Next

r26397 Sunday 24th November, 2013 at 14:39:10 UTC by Jürgen Buchmüller
Describe inputs and outputs of the JK FFs.
[/branches/alto2/src/emu/cpu/alto2]a2emu.c a2ether.c a2ether.h

branches/alto2/src/emu/cpu/alto2/a2emu.c
r26396r26397
361361      LOG((LOG_EMU,2,"****   Software boot feature\n"));
362362      soft_reset();
363363   } else {
364      LOG((LOG_EMU,2,"****   Ethernet start frame\n"));
364      LOG((LOG_EMU,2,"****   Ethernet start function\n"));
365365      eth_startf();
366366   }
367367}
branches/alto2/src/emu/cpu/alto2/a2ether.c
r26396r26397
571571 */
572572void alto2_cpu_device::eth_startf()
573573{
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);
576619   LOG((LOG_ETH,3, "   STARTF; ICMD=%u OCMD=%u\n", GET_ETH_ICMD(m_eth.status), GET_ETH_ICMD(m_eth.status)));
577620   eth_wakeup();
578621}
r26396r26397
835878   m_ewfct = 0;
836879}
837880
881void 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
8381231/**
8391232 * @brief ethernet task slot initialization
8401233 */
branches/alto2/src/emu/cpu/alto2/a2ether.h
r26396r26397
7070   jkff_t ff_31b;                        //!< JK flip-flop 31b OEOT (Sheet 19)
7171   jkff_t ff_35a;                        //!< JK flip-flop 35a OCMD (Sheet 7)
7272   jkff_t ff_35b;                        //!< JK flip-flop 35b ICMD (Sheet 7)
73   jkff_t ff_47a;                        //!< JK flip-flop 47a ISR14 (Sheet 15)
74   jkff_t ff_47b;                        //!< JK flip-flop 47b ISR15 (Sheet 15)
7375   jkff_t ff_51a;                        //!< JK flip-flop 51a EWFCT latch (Sheet 19)
7476   jkff_t ff_51b;                        //!< JK flip-flop 51b OCDW (Sheet 19)
7577   jkff_t ff_52b;                        //!< JK flip-flop 52b OSLOAD (Sheet 17)
r26396r26397
105107void f2_late_ecbfct();                     //!< F2 func: Ethernet countdown branch function
106108void f2_late_eisfct();                     //!< F2 func: Ethernet input start function
107109void activate_eth();                     //!< called by the CPU when the Ethernet task becomes active
110void update_ether();                     //!< update all JK flip-flops for this cycle
108111void init_ether(int task = task_ether);         //!< initialize the ethernet task
109112void exit_ether();                        //!< deinitialize the ethernet task
110113void reset_ether();                        //!< reset the ethernet task

Previous 199869 Revisions Next


© 1997-2024 The MAME Team