From: Fabian Stemmler Date: Sat, 13 Jul 2019 10:33:03 +0000 (+0200) Subject: Merge branch 'development' of X-Git-Url: https://mograsim.net/gitweb/?a=commitdiff_plain;h=47ea68ed5c444dd14864412639f6a6fd60ab8a0f;hp=06eaa32eb35adf937f1e1a7b8a640ee117bfdc55;p=Mograsim.git Merge branch 'development' of https://gitlab.lrz.de/lrr-tum/students/eragp-misim-2019.git into development Conflicts: net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/wires/GUIWire.java net.mograsim.logic.ui/src/net/mograsim/logic/ui/serializing/DeserializedSubmodelComponent.java net.mograsim.logic.ui/src/net/mograsim/logic/ui/serializing/IndirectGUIComponentCreator.java --- diff --git a/SWTHelper b/SWTHelper index c152d5ee..db7cb7cb 160000 --- a/SWTHelper +++ b/SWTHelper @@ -1 +1 @@ -Subproject commit c152d5ee921ab7d8176e1124b8cb0146376bb579 +Subproject commit db7cb7cb9548c5c8dbf3b620cd5b9fa3415bb9a5 diff --git a/net.mograsim.logic.core/src/net/mograsim/logic/core/types/Bit.java b/net.mograsim.logic.core/src/net/mograsim/logic/core/types/Bit.java index 4fce8dde..8bff357a 100644 --- a/net.mograsim.logic.core/src/net/mograsim/logic/core/types/Bit.java +++ b/net.mograsim.logic.core/src/net/mograsim/logic/core/types/Bit.java @@ -91,6 +91,11 @@ public enum Bit implements StrictLogicType return values()[2 + (value & 1)]; } + public static Bit of(boolean binaryValue) + { + return binaryValue ? ONE : ZERO; + } + public static Bit parse(String s) { Bit bit = SYMBOL_MAP.get(s); diff --git a/net.mograsim.logic.core/src/net/mograsim/logic/core/types/BitVector.java b/net.mograsim.logic.core/src/net/mograsim/logic/core/types/BitVector.java index 9e09f43a..cce83f43 100644 --- a/net.mograsim.logic.core/src/net/mograsim/logic/core/types/BitVector.java +++ b/net.mograsim.logic.core/src/net/mograsim/logic/core/types/BitVector.java @@ -13,7 +13,6 @@ import java.util.function.UnaryOperator; /** * Immutable class representing a {@link Bit}Vector * - * * @author Christian Femers * */ @@ -23,7 +22,7 @@ public final class BitVector implements StrictLogicType, Iterable, IterablebitIndex. (leftmost bit of a binary number at the given index) + */ + public Bit getMSBit(int bitIndex) { return bits[bitIndex]; } + /** + * Returns the least significant bit at bitIndex. (rightmost bit of a binary number at the given index) + */ + public Bit getLSBit(int bitIndex) + { + return bits[bits.length - bitIndex - 1]; + } + public Bit[] getBits() { return bits.clone(); @@ -224,16 +234,38 @@ public final class BitVector implements StrictLogicType, IterablebitIndex. (leftmost bit of a binary number at the given index) + */ + public void setMSBit(int bitIndex, Bit bit) { bits[bitIndex] = bit; } - public Bit getBit(int bitIndex) + /** + * Set the least significant bit at bitIndex. (rightmost bit of a binary number at the given index) + */ + public void setLSBit(int bitIndex, Bit bit) + { + bits[bits.length - bitIndex - 1] = bit; + } + + /** + * Returns the most significant bit at bitIndex. (leftmost bit of a binary number at the given index) + */ + public Bit getMSBit(int bitIndex) { return bits[bitIndex]; } + /** + * Returns the least significant bit at bitIndex. (rightmost bit of a binary number at the given index) + */ + public Bit getLSBit(int bitIndex) + { + return bits[bits.length - bitIndex - 1]; + } + public int length() { return bits.length; @@ -286,45 +318,26 @@ public final class BitVector implements StrictLogicType, Iterable, Iterablefrom MSB to LSB (left to right). */ - public static BitVector parseMSBFirst(String s) - { - Bit[] values = new Bit[s.length()]; - for (int i = 0, j = s.length() - 1; j >= 0; i++, j--) - { - values[i] = Bit.parse(s, j); - } - return new BitVector(values); - } - @Override public Iterator iterator() { @@ -361,7 +362,7 @@ public final class BitVector implements StrictLogicType, Iterable + + + + + + + + + + + + + + + + diff --git a/net.mograsim.logic.model.am2900/.gitignore b/net.mograsim.logic.model.am2900/.gitignore new file mode 100644 index 00000000..ae3c1726 --- /dev/null +++ b/net.mograsim.logic.model.am2900/.gitignore @@ -0,0 +1 @@ +/bin/ diff --git a/net.mograsim.logic.model.am2900/.project b/net.mograsim.logic.model.am2900/.project new file mode 100644 index 00000000..5ac21380 --- /dev/null +++ b/net.mograsim.logic.model.am2900/.project @@ -0,0 +1,30 @@ + + + net.mograsim.logic.model.am2900 + + + net.mograsim.logic.ui + SWTZoomableCanvas + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.pde.PluginNature + + diff --git a/net.mograsim.logic.model.am2900/.settings/org.eclipse.jdt.core.prefs b/net.mograsim.logic.model.am2900/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 00000000..f8bd225a --- /dev/null +++ b/net.mograsim.logic.model.am2900/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,456 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled +org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore +org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull +org.eclipse.jdt.core.compiler.annotation.nonnull.secondary= +org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault +org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary= +org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable +org.eclipse.jdt.core.compiler.annotation.nullable.secondary= +org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=11 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=11 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.APILeak=warning +org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.autoboxing=ignore +org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning +org.eclipse.jdt.core.compiler.problem.deadCode=warning +org.eclipse.jdt.core.compiler.problem.deprecation=warning +org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled +org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled +org.eclipse.jdt.core.compiler.problem.discouragedReference=warning +org.eclipse.jdt.core.compiler.problem.emptyStatement=warning +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=warning +org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning +org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled +org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore +org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning +org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning +org.eclipse.jdt.core.compiler.problem.forbiddenReference=error +org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning +org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled +org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning +org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning +org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning +org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore +org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error +org.eclipse.jdt.core.compiler.problem.missingDefaultCase=warning +org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=info +org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled +org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=warning +org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning +org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled +org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning +org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=warning +org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning +org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning +org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore +org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning +org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning +org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error +org.eclipse.jdt.core.compiler.problem.nullReference=warning +org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error +org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning +org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning +org.eclipse.jdt.core.compiler.problem.parameterAssignment=warning +org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning +org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=error +org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning +org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=warning +org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning +org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning +org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning +org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=info +org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning +org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=info +org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=warning +org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled +org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning +org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled +org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled +org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled +org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=warning +org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning +org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning +org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=disabled +org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning +org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning +org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=warning +org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning +org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning +org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled +org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info +org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning +org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning +org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore +org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=info +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled +org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=warning +org.eclipse.jdt.core.compiler.problem.unusedImport=warning +org.eclipse.jdt.core.compiler.problem.unusedLabel=warning +org.eclipse.jdt.core.compiler.problem.unusedLocal=warning +org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=warning +org.eclipse.jdt.core.compiler.problem.unusedParameter=warning +org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled +org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled +org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled +org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning +org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=warning +org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning +org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning +org.eclipse.jdt.core.compiler.release=enabled +org.eclipse.jdt.core.compiler.source=11 +org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false +org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647 +org.eclipse.jdt.core.formatter.align_type_members_on_columns=false +org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false +org.eclipse.jdt.core.formatter.align_with_spaces=false +org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16 +org.eclipse.jdt.core.formatter.alignment_for_assignment=0 +org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16 +org.eclipse.jdt.core.formatter.alignment_for_compact_if=16 +org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16 +org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80 +org.eclipse.jdt.core.formatter.alignment_for_conditional_expression_chain=0 +org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16 +org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16 +org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0 +org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16 +org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0 +org.eclipse.jdt.core.formatter.alignment_for_module_statements=16 +org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16 +org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16 +org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0 +org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_relational_operator=0 +org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80 +org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16 +org.eclipse.jdt.core.formatter.alignment_for_shift_operator=0 +org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16 +org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0 +org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0 +org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16 +org.eclipse.jdt.core.formatter.blank_lines_after_imports=1 +org.eclipse.jdt.core.formatter.blank_lines_after_package=1 +org.eclipse.jdt.core.formatter.blank_lines_before_field=0 +org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0 +org.eclipse.jdt.core.formatter.blank_lines_before_imports=1 +org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1 +org.eclipse.jdt.core.formatter.blank_lines_before_method=1 +org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1 +org.eclipse.jdt.core.formatter.blank_lines_before_package=0 +org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1 +org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1 +org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=next_line +org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=next_line +org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_block=next_line +org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=next_line +org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=next_line +org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=next_line +org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=next_line +org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=next_line +org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=next_line +org.eclipse.jdt.core.formatter.brace_position_for_switch=next_line +org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=next_line +org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true +org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false +org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false +org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false +org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true +org.eclipse.jdt.core.formatter.comment.format_block_comments=true +org.eclipse.jdt.core.formatter.comment.format_header=false +org.eclipse.jdt.core.formatter.comment.format_html=true +org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true +org.eclipse.jdt.core.formatter.comment.format_line_comments=true +org.eclipse.jdt.core.formatter.comment.format_source_code=true +org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false +org.eclipse.jdt.core.formatter.comment.indent_root_tags=false +org.eclipse.jdt.core.formatter.comment.indent_tag_description=false +org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert +org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert +org.eclipse.jdt.core.formatter.comment.line_length=140 +org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true +org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true +org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false +org.eclipse.jdt.core.formatter.compact_else_if=true +org.eclipse.jdt.core.formatter.continuation_indentation=2 +org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2 +org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off +org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on +org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false +org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true +org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true +org.eclipse.jdt.core.formatter.indent_empty_lines=false +org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true +org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true +org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true +org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false +org.eclipse.jdt.core.formatter.indentation.size=4 +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=insert +org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=insert +org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert +org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert +org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert +org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert +org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert +org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert +org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert +org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert +org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert +org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert +org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert +org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert +org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert +org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert +org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert +org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert +org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert +org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert +org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert +org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert +org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert +org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.join_lines_in_comments=true +org.eclipse.jdt.core.formatter.join_wrapped_lines=true +org.eclipse.jdt.core.formatter.keep_annotation_declaration_on_one_line=one_line_never +org.eclipse.jdt.core.formatter.keep_anonymous_type_declaration_on_one_line=one_line_never +org.eclipse.jdt.core.formatter.keep_code_block_on_one_line=one_line_never +org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false +org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false +org.eclipse.jdt.core.formatter.keep_enum_constant_declaration_on_one_line=one_line_never +org.eclipse.jdt.core.formatter.keep_enum_declaration_on_one_line=one_line_never +org.eclipse.jdt.core.formatter.keep_if_then_body_block_on_one_line=one_line_never +org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false +org.eclipse.jdt.core.formatter.keep_lambda_body_block_on_one_line=one_line_never +org.eclipse.jdt.core.formatter.keep_loop_body_block_on_one_line=one_line_never +org.eclipse.jdt.core.formatter.keep_method_body_on_one_line=one_line_never +org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false +org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false +org.eclipse.jdt.core.formatter.keep_simple_getter_setter_on_one_line=false +org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false +org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false +org.eclipse.jdt.core.formatter.keep_type_declaration_on_one_line=one_line_never +org.eclipse.jdt.core.formatter.lineSplit=140 +org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false +org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false +org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0 +org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1 +org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines +org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines +org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines +org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines +org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines +org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines +org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines +org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines +org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines +org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines +org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true +org.eclipse.jdt.core.formatter.tabulation.char=tab +org.eclipse.jdt.core.formatter.tabulation.size=4 +org.eclipse.jdt.core.formatter.use_on_off_tags=true +org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false +org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true +org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false +org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true +org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true +org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true +org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true +org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true +org.eclipse.jdt.core.formatter.wrap_before_relational_operator=true +org.eclipse.jdt.core.formatter.wrap_before_shift_operator=true +org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true +org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true +org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter diff --git a/net.mograsim.logic.model.am2900/.settings/org.eclipse.jdt.ui.prefs b/net.mograsim.logic.model.am2900/.settings/org.eclipse.jdt.ui.prefs new file mode 100644 index 00000000..8f2c0a47 --- /dev/null +++ b/net.mograsim.logic.model.am2900/.settings/org.eclipse.jdt.ui.prefs @@ -0,0 +1,63 @@ +eclipse.preferences.version=1 +editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true +formatter_profile=_MoGraSim +formatter_settings_version=16 +sp_cleanup.add_default_serial_version_id=true +sp_cleanup.add_generated_serial_version_id=false +sp_cleanup.add_missing_annotations=true +sp_cleanup.add_missing_deprecated_annotations=true +sp_cleanup.add_missing_methods=false +sp_cleanup.add_missing_nls_tags=false +sp_cleanup.add_missing_override_annotations=true +sp_cleanup.add_missing_override_annotations_interface_methods=true +sp_cleanup.add_serial_version_id=false +sp_cleanup.always_use_blocks=true +sp_cleanup.always_use_parentheses_in_expressions=false +sp_cleanup.always_use_this_for_non_static_field_access=false +sp_cleanup.always_use_this_for_non_static_method_access=false +sp_cleanup.convert_functional_interfaces=false +sp_cleanup.convert_to_enhanced_for_loop=false +sp_cleanup.correct_indentation=false +sp_cleanup.format_source_code=true +sp_cleanup.format_source_code_changes_only=false +sp_cleanup.insert_inferred_type_arguments=false +sp_cleanup.make_local_variable_final=true +sp_cleanup.make_parameters_final=false +sp_cleanup.make_private_fields_final=true +sp_cleanup.make_type_abstract_if_missing_method=false +sp_cleanup.make_variable_declarations_final=false +sp_cleanup.never_use_blocks=false +sp_cleanup.never_use_parentheses_in_expressions=true +sp_cleanup.on_save_use_additional_actions=false +sp_cleanup.organize_imports=false +sp_cleanup.qualify_static_field_accesses_with_declaring_class=false +sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true +sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true +sp_cleanup.qualify_static_member_accesses_with_declaring_class=false +sp_cleanup.qualify_static_method_accesses_with_declaring_class=false +sp_cleanup.remove_private_constructors=true +sp_cleanup.remove_redundant_modifiers=false +sp_cleanup.remove_redundant_semicolons=false +sp_cleanup.remove_redundant_type_arguments=false +sp_cleanup.remove_trailing_whitespaces=false +sp_cleanup.remove_trailing_whitespaces_all=true +sp_cleanup.remove_trailing_whitespaces_ignore_empty=false +sp_cleanup.remove_unnecessary_casts=true +sp_cleanup.remove_unnecessary_nls_tags=false +sp_cleanup.remove_unused_imports=false +sp_cleanup.remove_unused_local_variables=false +sp_cleanup.remove_unused_private_fields=true +sp_cleanup.remove_unused_private_members=false +sp_cleanup.remove_unused_private_methods=true +sp_cleanup.remove_unused_private_types=true +sp_cleanup.sort_members=false +sp_cleanup.sort_members_all=false +sp_cleanup.use_anonymous_class_creation=false +sp_cleanup.use_blocks=false +sp_cleanup.use_blocks_only_for_return_and_throw=false +sp_cleanup.use_lambda=true +sp_cleanup.use_parentheses_in_expressions=false +sp_cleanup.use_this_for_non_static_field_access=false +sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true +sp_cleanup.use_this_for_non_static_method_access=false +sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true diff --git a/net.mograsim.logic.model.am2900/FullAdder.json b/net.mograsim.logic.model.am2900/FullAdder.json new file mode 100644 index 00000000..40c51c76 --- /dev/null +++ b/net.mograsim.logic.model.am2900/FullAdder.json @@ -0,0 +1,188 @@ +mograsim version: 0.1.1 +{ + "type": "SimpleRectangularSubmodelComponent", + "width": 35.0, + "height": 30.0, + "interfacePins": [ + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "A", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "B", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "C", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Y", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "Z", + "logicWidth": 1 + } + ], + "composition": { + "innerScale": 0.4, + "subComps": [ + { + "pos": { + "x": 5.0, + "y": 40.0 + }, + "type": "class:net.mograsim.logic.ui.model.components.mi.nandbased.GUIhalfadder", + "params": {} + }, + { + "pos": { + "x": 45.0, + "y": 7.5 + }, + "type": "class:net.mograsim.logic.ui.model.components.mi.nandbased.GUIhalfadder", + "params": {} + }, + { + "pos": { + "x": 57.5, + "y": 40.0 + }, + "type": "class:net.mograsim.logic.ui.model.components.GUINandGate", + "params": { + "logicWidth": 1 + } + } + ], + "innerWires": [ + { + "pin1": { + "compId": 0, + "pinName": "A" + }, + "pin2": { + "compId": 2, + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compId": 0, + "pinName": "B" + }, + "pin2": { + "compId": 1, + "pinName": "A" + } + }, + { + "pin1": { + "compId": 0, + "pinName": "C" + }, + "pin2": { + "compId": 1, + "pinName": "B" + } + }, + { + "pin1": { + "compId": 1, + "pinName": "Y" + }, + "pin2": { + "compId": 2, + "pinName": "B" + } + }, + { + "pin1": { + "compId": 1, + "pinName": "_Z" + }, + "pin2": { + "compId": 3, + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compId": 2, + "pinName": "Y" + }, + "pin2": { + "compId": 0, + "pinName": "Y" + }, + "path": [] + }, + { + "pin1": { + "compId": 2, + "pinName": "_Z" + }, + "pin2": { + "compId": 3, + "pinName": "A" + }, + "path": [ + { + "x": 82.5, + "y": 22.5 + }, + { + "x": 82.5, + "y": 35.0 + }, + { + "x": 52.5, + "y": 35.0 + }, + { + "x": 52.5, + "y": 45.0 + } + ] + }, + { + "pin1": { + "compId": 3, + "pinName": "Y" + }, + "pin2": { + "compId": 0, + "pinName": "Z" + } + } + ] + }, + "specialized": { + "input_count": 3, + "label": "GUIfulladder", + "logic_width": 1, + "output_count": 2 + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/HalfAdder.json b/net.mograsim.logic.model.am2900/HalfAdder.json new file mode 100644 index 00000000..48c19802 --- /dev/null +++ b/net.mograsim.logic.model.am2900/HalfAdder.json @@ -0,0 +1,323 @@ +mograsim version: 0.1.1 +{ + "type": "SimpleRectangularSubmodelComponent", + "width": 35.0, + "height": 20.0, + "interfacePins": [ + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "A", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "B", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Y", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "_Z", + "logicWidth": 1 + } + ], + "composition": { + "innerScale": 0.4, + "subComps": [ + { + "pos": { + "x": 10.0, + "y": 15.0 + }, + "type": "class:net.mograsim.logic.ui.model.components.GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 40.0, + "y": 2.5 + }, + "type": "class:net.mograsim.logic.ui.model.components.GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 40.0, + "y": 27.5 + }, + "type": "class:net.mograsim.logic.ui.model.components.GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 65.0, + "y": 2.5 + }, + "type": "class:net.mograsim.logic.ui.model.components.GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 4.0, + "y": 11.5 + }, + "type": "class:net.mograsim.logic.ui.model.wires.WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 4.0, + "y": 36.5 + }, + "type": "class:net.mograsim.logic.ui.model.wires.WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 34.0, + "y": 24.0 + }, + "type": "class:net.mograsim.logic.ui.model.wires.WireCrossPoint", + "params": { + "logicWidth": 1 + } + } + ], + "innerWires": [ + { + "pin1": { + "compId": 0, + "pinName": "A" + }, + "pin2": { + "compId": 5, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 5, + "pinName": "" + }, + "pin2": { + "compId": 2, + "pinName": "A" + }, + "path": [ + { + "x": 5.0, + "y": 7.5 + } + ] + }, + { + "pin1": { + "compId": 5, + "pinName": "" + }, + "pin2": { + "compId": 1, + "pinName": "A" + }, + "path": [ + { + "x": 5.0, + "y": 20.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "B" + }, + "pin2": { + "compId": 6, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 6, + "pinName": "" + }, + "pin2": { + "compId": 3, + "pinName": "B" + }, + "path": [ + { + "x": 5.0, + "y": 42.5 + } + ] + }, + { + "pin1": { + "compId": 6, + "pinName": "" + }, + "pin2": { + "compId": 1, + "pinName": "B" + }, + "path": [ + { + "x": 5.0, + "y": 30.0 + } + ] + }, + { + "pin1": { + "compId": 1, + "pinName": "Y" + }, + "pin2": { + "compId": 7, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 7, + "pinName": "" + }, + "pin2": { + "compId": 0, + "pinName": "_Z" + }, + "path": [ + { + "x": 80.0, + "y": 25.0 + }, + { + "x": 80.0, + "y": 37.5 + } + ] + }, + { + "pin1": { + "compId": 7, + "pinName": "" + }, + "pin2": { + "compId": 2, + "pinName": "B" + }, + "path": [ + { + "x": 35.0, + "y": 17.5 + } + ] + }, + { + "pin1": { + "compId": 7, + "pinName": "" + }, + "pin2": { + "compId": 3, + "pinName": "A" + }, + "path": [ + { + "x": 35.0, + "y": 32.5 + } + ] + }, + { + "pin1": { + "compId": 2, + "pinName": "Y" + }, + "pin2": { + "compId": 4, + "pinName": "A" + }, + "path": [ + { + "x": 62.5, + "y": 12.5 + }, + { + "x": 62.5, + "y": 7.5 + } + ] + }, + { + "pin1": { + "compId": 3, + "pinName": "Y" + }, + "pin2": { + "compId": 4, + "pinName": "B" + }, + "path": [ + { + "x": 62.5, + "y": 37.5 + }, + { + "x": 62.5, + "y": 17.5 + } + ] + }, + { + "pin1": { + "compId": 4, + "pinName": "Y" + }, + "pin2": { + "compId": 0, + "pinName": "Y" + }, + "path": [] + } + ] + }, + "specialized": { + "input_count": 2, + "label": "GUIhalfadder", + "logic_width": 1, + "output_count": 2 + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/META-INF/MANIFEST.MF b/net.mograsim.logic.model.am2900/META-INF/MANIFEST.MF new file mode 100644 index 00000000..71d5a3b6 --- /dev/null +++ b/net.mograsim.logic.model.am2900/META-INF/MANIFEST.MF @@ -0,0 +1,12 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: %Bundle-Name +Bundle-SymbolicName: net.mograsim.logic.model.am2900;singleton:=true +Bundle-Version: 0.1.0.qualifier +Export-Package: net.mograsim.logic.model.examples, + net.mograsim.logic.model.model.components.mi.nandbased, + net.mograsim.logic.model.model.components.mi.nandbased.am2901 +Bundle-RequiredExecutionEnvironment: JavaSE-11 +Require-Bundle: net.mograsim.logic.model;bundle-version="0.1.0";visibility:=reexport +Automatic-Module-Name: net.mograsim.logic.ui +Bundle-Vendor: Mograsim Team diff --git a/net.mograsim.logic.model.am2900/OSGI-INF/l10n/bundle.properties b/net.mograsim.logic.model.am2900/OSGI-INF/l10n/bundle.properties new file mode 100644 index 00000000..f1ecb432 --- /dev/null +++ b/net.mograsim.logic.model.am2900/OSGI-INF/l10n/bundle.properties @@ -0,0 +1,3 @@ +#Properties file for net.mograsim.logic.ui +Bundle-Vendor = Mograsim Team +Bundle-Name = Mograsim Am2900 logic \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/Test.json b/net.mograsim.logic.model.am2900/Test.json new file mode 100644 index 00000000..56085df7 --- /dev/null +++ b/net.mograsim.logic.model.am2900/Test.json @@ -0,0 +1,36 @@ +mograsim version: 0.1.1 +{ + "type": "SimpleRectangularSubmodelComponent", + "width": 35.0, + "height": 10.0, + "interfacePins": [ + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "Input pin #0", + "logicWidth": 1 + } + ], + "composition": { + "innerScale": 0.4, + "subComps": [ + { + "pos": { + "x": 0.0, + "y": 0.0 + }, + "type": "file:HalfAdder.json", + "params": {} + } + ], + "innerWires": [] + }, + "specialized": { + "input_count": 1, + "label": "Test", + "logic_width": 1, + "output_count": 0 + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/build.properties b/net.mograsim.logic.model.am2900/build.properties new file mode 100644 index 00000000..d6642e65 --- /dev/null +++ b/net.mograsim.logic.model.am2900/build.properties @@ -0,0 +1,4 @@ +source.. = src/ +bin.includes = META-INF/,\ + .,\ + OSGI-INF/ diff --git a/net.mograsim.logic.model.am2900/components/GUI_rsLatch.json b/net.mograsim.logic.model.am2900/components/GUI_rsLatch.json new file mode 100644 index 00000000..a91b8159 --- /dev/null +++ b/net.mograsim.logic.model.am2900/components/GUI_rsLatch.json @@ -0,0 +1,222 @@ +mograsim version: 0.1.3 +{ + "width": 35.0, + "height": 20.0, + "interfacePins": [ + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Q", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "_Q", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "_R", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "_S", + "logicWidth": 1 + } + ], + "submodel": { + "innerScale": 0.4, + "subComps": [ + { + "pos": { + "x": 40.0, + "y": 12.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#1", + "params": 1 + }, + { + "pos": { + "x": 10.0, + "y": 7.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#0", + "params": 1 + }, + { + "pos": { + "x": 64.0, + "y": 36.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#1", + "params": 1 + }, + { + "pos": { + "x": 34.0, + "y": 16.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#0", + "params": 1 + } + ], + "innerWires": [ + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "_S" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "_R" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "B" + }, + "path": [ + { + "x": 35.0, + "y": 37.5 + }, + { + "x": 35.0, + "y": 27.5 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#0", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUINandGate#1", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "path": [ + { + "x": 65.0, + "y": 22.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "B" + }, + "path": [ + { + "x": 65.0, + "y": 42.5 + }, + { + "x": 5.0, + "y": 42.5 + }, + { + "x": 5.0, + "y": 22.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Q" + }, + "path": [ + { + "x": 35.0, + "y": 17.5 + }, + { + "x": 35.0, + "y": 7.5 + }, + { + "x": 65.0, + "y": 7.5 + }, + { + "x": 65.0, + "y": 12.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "_Q" + }, + "path": [] + } + ] + }, + "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", + "symbolRendererParams": { + "centerText": "_rsLatch", + "horizontalComponentCenter": 17.5, + "centerTextHeight": 5.0, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/components/GUIand.json b/net.mograsim.logic.model.am2900/components/GUIand.json new file mode 100644 index 00000000..58772918 --- /dev/null +++ b/net.mograsim.logic.model.am2900/components/GUIand.json @@ -0,0 +1,146 @@ +mograsim version: 0.1.3 +{ + "width": 35.0, + "height": 20.0, + "interfacePins": [ + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "A", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "B", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Y", + "logicWidth": 1 + } + ], + "submodel": { + "innerScale": 0.4, + "subComps": [ + { + "pos": { + "x": 50.0, + "y": 15.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#1", + "params": 1 + }, + { + "pos": { + "x": 20.0, + "y": 15.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#0", + "params": 1 + }, + { + "pos": { + "x": 44.0, + "y": 24.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#0", + "params": 1 + } + ], + "innerWires": [ + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "A" + } + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "B" + } + }, + { + "pin1": { + "compName": "GUINandGate#0", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "A" + }, + "path": [ + { + "x": 45.0, + "y": 20.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "B" + }, + "path": [ + { + "x": 45.0, + "y": 30.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#1", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y" + } + } + ] + }, + "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", + "symbolRendererParams": { + "centerText": "GUIand", + "horizontalComponentCenter": 17.5, + "centerTextHeight": 5.0, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/components/GUIand41.json b/net.mograsim.logic.model.am2900/components/GUIand41.json new file mode 100644 index 00000000..973a4c9d --- /dev/null +++ b/net.mograsim.logic.model.am2900/components/GUIand41.json @@ -0,0 +1,328 @@ +mograsim version: 0.1.3 +{ + "width": 35.0, + "height": 50.0, + "interfacePins": [ + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "A1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "A2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "A3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 45.0 + }, + "name": "B", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 35.0 + }, + "name": "A4", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Y1", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "Y2", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 25.0 + }, + "name": "Y3", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 35.0 + }, + "name": "Y4", + "logicWidth": 1 + } + ], + "submodel": { + "innerScale": 0.4, + "subComps": [ + { + "pos": { + "x": 24.0, + "y": 71.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#1", + "params": 1 + }, + { + "pos": { + "x": 24.0, + "y": 46.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#0", + "params": 1 + }, + { + "pos": { + "x": 24.0, + "y": 96.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#2", + "params": 1 + }, + { + "pos": { + "x": 30.0, + "y": 7.5 + }, + "id": "GUIand", + "name": "GUIand#0" + }, + { + "pos": { + "x": 30.0, + "y": 57.5 + }, + "id": "GUIand", + "name": "GUIand#2" + }, + { + "pos": { + "x": 30.0, + "y": 32.5 + }, + "id": "GUIand", + "name": "GUIand#1" + }, + { + "pos": { + "x": 30.0, + "y": 82.5 + }, + "id": "GUIand", + "name": "GUIand#3" + } + ], + "innerWires": [ + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A1" + }, + "pin2": { + "compName": "GUIand#0", + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A2" + }, + "pin2": { + "compName": "GUIand#1", + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A3" + }, + "pin2": { + "compName": "GUIand#2", + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A4" + }, + "pin2": { + "compName": "GUIand#3", + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B" + }, + "pin2": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "path": [ + { + "x": 25.0, + "y": 112.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUIand#3", + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUIand#2", + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUIand#1", + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUIand#0", + "pinName": "B" + }, + "path": [ + { + "x": 25.0, + "y": 22.5 + } + ] + }, + { + "pin1": { + "compName": "GUIand#0", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y1" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIand#1", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y2" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIand#2", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y3" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIand#3", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y4" + }, + "path": [] + } + ] + }, + "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", + "symbolRendererParams": { + "centerText": "GUIand41", + "horizontalComponentCenter": 17.5, + "centerTextHeight": 5.0, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/components/GUIandor414.json b/net.mograsim.logic.model.am2900/components/GUIandor414.json new file mode 100644 index 00000000..5cadf0f6 --- /dev/null +++ b/net.mograsim.logic.model.am2900/components/GUIandor414.json @@ -0,0 +1,487 @@ +mograsim version: 0.1.3 +{ + "width": 35.0, + "height": 90.0, + "interfacePins": [ + { + "location": { + "x": 0.0, + "y": 85.0 + }, + "name": "B", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "C1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "C2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "C3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 45.0 + }, + "name": "A1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 35.0 + }, + "name": "C4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 55.0 + }, + "name": "A2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 65.0 + }, + "name": "A3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 75.0 + }, + "name": "A4", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Y1", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "Y2", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 25.0 + }, + "name": "Y3", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 35.0 + }, + "name": "Y4", + "logicWidth": 1 + } + ], + "submodel": { + "innerScale": 0.4, + "subComps": [ + { + "pos": { + "x": 35.0, + "y": 37.5 + }, + "id": "GUIor_4", + "name": "GUIor_4#0" + }, + { + "pos": { + "x": 15.0, + "y": 137.5 + }, + "id": "GUIand41", + "name": "GUIand41#0" + } + ], + "innerWires": [ + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A1" + }, + "pin2": { + "compName": "GUIand41#0", + "pinName": "A1" + }, + "path": [ + { + "x": 10.0, + "y": 112.5 + }, + { + "x": 10.0, + "y": 142.5 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A2" + }, + "pin2": { + "compName": "GUIand41#0", + "pinName": "A2" + }, + "path": [ + { + "x": 5.0, + "y": 137.5 + }, + { + "x": 5.0, + "y": 152.5 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A3" + }, + "pin2": { + "compName": "GUIand41#0", + "pinName": "A3" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A4" + }, + "pin2": { + "compName": "GUIand41#0", + "pinName": "A4" + }, + "path": [ + { + "x": 5.0, + "y": 187.5 + }, + { + "x": 5.0, + "y": 172.5 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B" + }, + "pin2": { + "compName": "GUIand41#0", + "pinName": "B" + }, + "path": [ + { + "x": 10.0, + "y": 212.5 + }, + { + "x": 10.0, + "y": 182.5 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "C1" + }, + "pin2": { + "compName": "GUIor_4#0", + "pinName": "A1" + }, + "path": [ + { + "x": 10.0, + "y": 12.5 + }, + { + "x": 10.0, + "y": 42.5 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "C2" + }, + "pin2": { + "compName": "GUIor_4#0", + "pinName": "A2" + }, + "path": [ + { + "x": 5.0, + "y": 37.5 + }, + { + "x": 5.0, + "y": 52.5 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "C3" + }, + "pin2": { + "compName": "GUIor_4#0", + "pinName": "A3" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "C4" + }, + "pin2": { + "compName": "GUIor_4#0", + "pinName": "A4" + }, + "path": [ + { + "x": 5.0, + "y": 87.5 + }, + { + "x": 5.0, + "y": 72.5 + } + ] + }, + { + "pin1": { + "compName": "GUIand41#0", + "pinName": "Y1" + }, + "pin2": { + "compName": "GUIor_4#0", + "pinName": "B1" + }, + "path": [ + { + "x": 70.0, + "y": 142.5 + }, + { + "x": 70.0, + "y": 120.0 + }, + { + "x": 30.0, + "y": 120.0 + }, + { + "x": 30.0, + "y": 82.5 + } + ] + }, + { + "pin1": { + "compName": "GUIand41#0", + "pinName": "Y2" + }, + "pin2": { + "compName": "GUIor_4#0", + "pinName": "B2" + }, + "path": [ + { + "x": 65.0, + "y": 152.5 + }, + { + "x": 65.0, + "y": 125.0 + }, + { + "x": 25.0, + "y": 125.0 + }, + { + "x": 25.0, + "y": 92.5 + } + ] + }, + { + "pin1": { + "compName": "GUIand41#0", + "pinName": "Y3" + }, + "pin2": { + "compName": "GUIor_4#0", + "pinName": "B3" + }, + "path": [ + { + "x": 60.0, + "y": 162.5 + }, + { + "x": 60.0, + "y": 130.0 + }, + { + "x": 20.0, + "y": 130.0 + }, + { + "x": 20.0, + "y": 102.5 + } + ] + }, + { + "pin1": { + "compName": "GUIand41#0", + "pinName": "Y4" + }, + "pin2": { + "compName": "GUIor_4#0", + "pinName": "B4" + }, + "path": [ + { + "x": 55.0, + "y": 172.5 + }, + { + "x": 55.0, + "y": 135.0 + }, + { + "x": 15.0, + "y": 135.0 + }, + { + "x": 15.0, + "y": 112.5 + } + ] + }, + { + "pin1": { + "compName": "GUIor_4#0", + "pinName": "Y1" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y1" + }, + "path": [ + { + "x": 75.0, + "y": 42.5 + }, + { + "x": 75.0, + "y": 12.5 + } + ] + }, + { + "pin1": { + "compName": "GUIor_4#0", + "pinName": "Y2" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y2" + }, + "path": [ + { + "x": 80.0, + "y": 52.5 + }, + { + "x": 80.0, + "y": 37.5 + } + ] + }, + { + "pin1": { + "compName": "GUIor_4#0", + "pinName": "Y3" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y3" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIor_4#0", + "pinName": "Y4" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y4" + }, + "path": [ + { + "x": 80.0, + "y": 72.5 + }, + { + "x": 80.0, + "y": 87.5 + } + ] + } + ] + }, + "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", + "symbolRendererParams": { + "centerText": "GUIandor414", + "horizontalComponentCenter": 17.5, + "centerTextHeight": 5.0, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/components/GUIdemux2.json b/net.mograsim.logic.model.am2900/components/GUIdemux2.json new file mode 100644 index 00000000..5ded84b7 --- /dev/null +++ b/net.mograsim.logic.model.am2900/components/GUIdemux2.json @@ -0,0 +1,511 @@ +mograsim version: 0.1.3 +{ + "width": 35.0, + "height": 40.0, + "interfacePins": [ + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Y00", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 35.0 + }, + "name": "Y11", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 25.0 + }, + "name": "Y10", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "Y01", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "S0", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "S1", + "logicWidth": 1 + } + ], + "submodel": { + "innerScale": 0.4, + "subComps": [ + { + "pos": { + "x": 10.0, + "y": 27.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#1", + "params": 1 + }, + { + "pos": { + "x": 10.0, + "y": 2.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#0", + "params": 1 + }, + { + "pos": { + "x": 40.0, + "y": 2.5 + }, + "id": "GUIand", + "name": "GUIand#0" + }, + { + "pos": { + "x": 40.0, + "y": 52.5 + }, + "id": "GUIand", + "name": "GUIand#2" + }, + { + "pos": { + "x": 40.0, + "y": 27.5 + }, + "id": "GUIand", + "name": "GUIand#1" + }, + { + "pos": { + "x": 40.0, + "y": 77.5 + }, + "id": "GUIand", + "name": "GUIand#3" + }, + { + "pos": { + "x": 6.5, + "y": 16.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#1", + "params": 1 + }, + { + "pos": { + "x": 6.5, + "y": 11.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#0", + "params": 1 + }, + { + "pos": { + "x": 4.0, + "y": 36.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#3", + "params": 1 + }, + { + "pos": { + "x": 36.5, + "y": 61.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#2", + "params": 1 + }, + { + "pos": { + "x": 31.5, + "y": 66.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#5", + "params": 1 + }, + { + "pos": { + "x": 4.0, + "y": 41.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#4", + "params": 1 + }, + { + "pos": { + "x": 34.0, + "y": 36.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#7", + "params": 1 + }, + { + "pos": { + "x": 31.5, + "y": 11.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#6", + "params": 1 + } + ], + "innerWires": [ + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "S0" + }, + "pin2": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "S1" + }, + "pin2": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "A" + }, + "path": [ + { + "x": 7.5, + "y": 7.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "A" + }, + "path": [ + { + "x": 5.0, + "y": 32.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "path": [ + { + "x": 7.5, + "y": 62.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "path": [ + { + "x": 5.0, + "y": 67.5 + }, + { + "x": 32.5, + "y": 67.5 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#0", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUINandGate#1", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "pin2": { + "compName": "GUIand#0", + "pinName": "A" + }, + "path": [ + { + "x": 32.5, + "y": 7.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "pin2": { + "compName": "GUIand#0", + "pinName": "B" + }, + "path": [ + { + "x": 35.0, + "y": 17.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUIand#1", + "pinName": "A" + }, + "path": [ + { + "x": 37.5, + "y": 32.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "pin2": { + "compName": "GUIand#1", + "pinName": "B" + }, + "path": [ + { + "x": 35.0, + "y": 42.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "pin2": { + "compName": "GUIand#2", + "pinName": "A" + }, + "path": [ + { + "x": 32.5, + "y": 57.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "pin2": { + "compName": "GUIand#2", + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUIand#3", + "pinName": "A" + }, + "path": [ + { + "x": 37.5, + "y": 82.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "pin2": { + "compName": "GUIand#3", + "pinName": "B" + }, + "path": [ + { + "x": 32.5, + "y": 92.5 + } + ] + }, + { + "pin1": { + "compName": "GUIand#0", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y00" + } + }, + { + "pin1": { + "compName": "GUIand#1", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y01" + } + }, + { + "pin1": { + "compName": "GUIand#2", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y10" + } + }, + { + "pin1": { + "compName": "GUIand#3", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y11" + } + } + ] + }, + "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", + "symbolRendererParams": { + "centerText": "GUIdemux2", + "horizontalComponentCenter": 17.5, + "centerTextHeight": 5.0, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/components/GUIdff.json b/net.mograsim.logic.model.am2900/components/GUIdff.json new file mode 100644 index 00000000..55151f8b --- /dev/null +++ b/net.mograsim.logic.model.am2900/components/GUIdff.json @@ -0,0 +1,328 @@ +mograsim version: 0.1.3 +{ + "width": 35.0, + "height": 20.0, + "interfacePins": [ + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Q", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "_Q", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "C", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "D", + "logicWidth": 1 + } + ], + "submodel": { + "innerScale": 0.2, + "subComps": [ + { + "pos": { + "x": 40.0, + "y": 10.0 + }, + "id": "GUI_rsLatch", + "name": "GUI_rsLatch#0" + }, + { + "pos": { + "x": 40.0, + "y": 40.0 + }, + "id": "GUInand3", + "name": "GUInand3#0" + }, + { + "pos": { + "x": 120.0, + "y": 60.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#0", + "params": 1 + }, + { + "pos": { + "x": 120.0, + "y": 30.0 + }, + "id": "GUI_rsLatch", + "name": "GUI_rsLatch#1" + }, + { + "pos": { + "x": 19.0, + "y": 64.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#1", + "params": 1 + }, + { + "pos": { + "x": 9.0, + "y": 24.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#0", + "params": 1 + }, + { + "pos": { + "x": 99.0, + "y": 44.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#3", + "params": 1 + }, + { + "pos": { + "x": 99.0, + "y": 34.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#2", + "params": 1 + } + ], + "innerWires": [ + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "C" + }, + "pin2": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUI_rsLatch#0", + "pinName": "_R" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUInand3#0", + "pinName": "B" + }, + "path": [ + { + "x": 10.0, + "y": 55.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "D" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUINandGate#0", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "path": [ + { + "x": 145.0, + "y": 70.0 + }, + { + "x": 145.0, + "y": 85.0 + }, + { + "x": 20.0, + "y": 85.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUI_rsLatch#0", + "pinName": "_S" + }, + "path": [ + { + "x": 20.0, + "y": 15.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUInand3#0", + "pinName": "C" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUI_rsLatch#0", + "pinName": "_Q" + }, + "pin2": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "path": [ + { + "x": 100.0, + "y": 25.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUInand3#0", + "pinName": "A" + }, + "path": [ + { + "x": 30.0, + "y": 35.0 + }, + { + "x": 30.0, + "y": 45.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUI_rsLatch#1", + "pinName": "_S" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUInand3#0", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "GUI_rsLatch#1", + "pinName": "_R" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "A" + }, + "path": [ + { + "x": 100.0, + "y": 65.0 + } + ] + }, + { + "pin1": { + "compName": "GUI_rsLatch#1", + "pinName": "Q" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Q" + } + }, + { + "pin1": { + "compName": "GUI_rsLatch#1", + "pinName": "_Q" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "_Q" + } + } + ] + }, + "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", + "symbolRendererParams": { + "centerText": "GUIdff", + "horizontalComponentCenter": 17.5, + "centerTextHeight": 5.0, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/components/GUIdlatch.json b/net.mograsim.logic.model.am2900/components/GUIdlatch.json new file mode 100644 index 00000000..69562cea --- /dev/null +++ b/net.mograsim.logic.model.am2900/components/GUIdlatch.json @@ -0,0 +1,238 @@ +mograsim version: 0.1.3 +{ + "width": 35.0, + "height": 20.0, + "interfacePins": [ + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Q", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "_Q", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "D", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "E", + "logicWidth": 1 + } + ], + "submodel": { + "innerScale": 0.4, + "subComps": [ + { + "pos": { + "x": 15.0, + "y": 27.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#1", + "params": 1 + }, + { + "pos": { + "x": 45.0, + "y": 7.5 + }, + "id": "GUI_rsLatch", + "name": "GUI_rsLatch#0" + }, + { + "pos": { + "x": 10.0, + "y": 2.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#0", + "params": 1 + }, + { + "pos": { + "x": 34.0, + "y": 11.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#1", + "params": 1 + }, + { + "pos": { + "x": 4.0, + "y": 36.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#0", + "params": 1 + } + ], + "innerWires": [ + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "D" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "A" + } + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "E" + }, + "pin2": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "B" + }, + "path": [ + { + "x": 5.0, + "y": 17.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "B" + }, + "path": [ + { + "x": 5.0, + "y": 42.5 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#0", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "A" + }, + "path": [ + { + "x": 35.0, + "y": 25.0 + }, + { + "x": 10.0, + "y": 25.0 + }, + { + "x": 10.0, + "y": 32.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUI_rsLatch#0", + "pinName": "_S" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUINandGate#1", + "pinName": "Y" + }, + "pin2": { + "compName": "GUI_rsLatch#0", + "pinName": "_R" + }, + "path": [ + { + "x": 40.0, + "y": 37.5 + }, + { + "x": 40.0, + "y": 22.5 + } + ] + }, + { + "pin1": { + "compName": "GUI_rsLatch#0", + "pinName": "Q" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Q" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUI_rsLatch#0", + "pinName": "_Q" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "_Q" + } + } + ] + }, + "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", + "symbolRendererParams": { + "centerText": "GUIdlatch", + "horizontalComponentCenter": 17.5, + "centerTextHeight": 5.0, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/components/GUIdlatch4.json b/net.mograsim.logic.model.am2900/components/GUIdlatch4.json new file mode 100644 index 00000000..29f4ac0f --- /dev/null +++ b/net.mograsim.logic.model.am2900/components/GUIdlatch4.json @@ -0,0 +1,328 @@ +mograsim version: 0.1.3 +{ + "width": 35.0, + "height": 50.0, + "interfacePins": [ + { + "location": { + "x": 0.0, + "y": 35.0 + }, + "name": "D4", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Q1", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "Q2", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 25.0 + }, + "name": "Q3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 45.0 + }, + "name": "C", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 35.0 + }, + "name": "Q4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "D1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "D2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "D3", + "logicWidth": 1 + } + ], + "submodel": { + "innerScale": 0.4, + "subComps": [ + { + "pos": { + "x": 14.0, + "y": 71.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#1", + "params": 1 + }, + { + "pos": { + "x": 14.0, + "y": 46.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#0", + "params": 1 + }, + { + "pos": { + "x": 14.0, + "y": 96.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#2", + "params": 1 + }, + { + "pos": { + "x": 30.0, + "y": 32.5 + }, + "id": "GUIdlatch", + "name": "GUIdlatch#1" + }, + { + "pos": { + "x": 30.0, + "y": 7.5 + }, + "id": "GUIdlatch", + "name": "GUIdlatch#0" + }, + { + "pos": { + "x": 30.0, + "y": 82.5 + }, + "id": "GUIdlatch", + "name": "GUIdlatch#3" + }, + { + "pos": { + "x": 30.0, + "y": 57.5 + }, + "id": "GUIdlatch", + "name": "GUIdlatch#2" + } + ], + "innerWires": [ + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "C" + }, + "pin2": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "path": [ + { + "x": 15.0, + "y": 112.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUIdlatch#3", + "pinName": "E" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUIdlatch#2", + "pinName": "E" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUIdlatch#1", + "pinName": "E" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUIdlatch#0", + "pinName": "E" + }, + "path": [ + { + "x": 15.0, + "y": 22.5 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "D1" + }, + "pin2": { + "compName": "GUIdlatch#0", + "pinName": "D" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "D2" + }, + "pin2": { + "compName": "GUIdlatch#1", + "pinName": "D" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "D3" + }, + "pin2": { + "compName": "GUIdlatch#2", + "pinName": "D" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "D4" + }, + "pin2": { + "compName": "GUIdlatch#3", + "pinName": "D" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdlatch#0", + "pinName": "Q" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Q1" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdlatch#1", + "pinName": "Q" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Q2" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdlatch#2", + "pinName": "Q" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Q3" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdlatch#3", + "pinName": "Q" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Q4" + }, + "path": [] + } + ] + }, + "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", + "symbolRendererParams": { + "centerText": "GUIdlatch4", + "horizontalComponentCenter": 17.5, + "centerTextHeight": 5.0, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/components/GUIfulladder.json b/net.mograsim.logic.model.am2900/components/GUIfulladder.json new file mode 100644 index 00000000..dc4c6162 --- /dev/null +++ b/net.mograsim.logic.model.am2900/components/GUIfulladder.json @@ -0,0 +1,188 @@ +mograsim version: 0.1.3 +{ + "width": 35.0, + "height": 30.0, + "interfacePins": [ + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "A", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "B", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "C", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Y", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "Z", + "logicWidth": 1 + } + ], + "submodel": { + "innerScale": 0.4, + "subComps": [ + { + "pos": { + "x": 57.5, + "y": 40.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#0", + "params": 1 + }, + { + "pos": { + "x": 5.0, + "y": 40.0 + }, + "id": "GUIhalfadder", + "name": "GUIhalfadder#0" + }, + { + "pos": { + "x": 45.0, + "y": 7.5 + }, + "id": "GUIhalfadder", + "name": "GUIhalfadder#1" + } + ], + "innerWires": [ + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A" + }, + "pin2": { + "compName": "GUIhalfadder#1", + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B" + }, + "pin2": { + "compName": "GUIhalfadder#0", + "pinName": "A" + } + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "C" + }, + "pin2": { + "compName": "GUIhalfadder#0", + "pinName": "B" + } + }, + { + "pin1": { + "compName": "GUIhalfadder#0", + "pinName": "Y" + }, + "pin2": { + "compName": "GUIhalfadder#1", + "pinName": "B" + } + }, + { + "pin1": { + "compName": "GUIhalfadder#0", + "pinName": "_Z" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIhalfadder#1", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIhalfadder#1", + "pinName": "_Z" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "A" + }, + "path": [ + { + "x": 82.5, + "y": 22.5 + }, + { + "x": 82.5, + "y": 35.0 + }, + { + "x": 52.5, + "y": 35.0 + }, + { + "x": 52.5, + "y": 45.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#0", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Z" + } + } + ] + }, + "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", + "symbolRendererParams": { + "centerText": "GUIfulladder", + "horizontalComponentCenter": 17.5, + "centerTextHeight": 5.0, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/components/GUIhalfadder.json b/net.mograsim.logic.model.am2900/components/GUIhalfadder.json new file mode 100644 index 00000000..761d6ce1 --- /dev/null +++ b/net.mograsim.logic.model.am2900/components/GUIhalfadder.json @@ -0,0 +1,317 @@ +mograsim version: 0.1.3 +{ + "width": 35.0, + "height": 20.0, + "interfacePins": [ + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "A", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "B", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Y", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "_Z", + "logicWidth": 1 + } + ], + "submodel": { + "innerScale": 0.4, + "subComps": [ + { + "pos": { + "x": 40.0, + "y": 2.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#1", + "params": 1 + }, + { + "pos": { + "x": 10.0, + "y": 15.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#0", + "params": 1 + }, + { + "pos": { + "x": 65.0, + "y": 2.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#3", + "params": 1 + }, + { + "pos": { + "x": 4.0, + "y": 36.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#1", + "params": 1 + }, + { + "pos": { + "x": 40.0, + "y": 27.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#2", + "params": 1 + }, + { + "pos": { + "x": 4.0, + "y": 11.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#0", + "params": 1 + }, + { + "pos": { + "x": 34.0, + "y": 24.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#2", + "params": 1 + } + ], + "innerWires": [ + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A" + }, + "pin2": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "A" + }, + "path": [ + { + "x": 5.0, + "y": 7.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "A" + }, + "path": [ + { + "x": 5.0, + "y": 20.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B" + }, + "pin2": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#2", + "pinName": "B" + }, + "path": [ + { + "x": 5.0, + "y": 42.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "B" + }, + "path": [ + { + "x": 5.0, + "y": 30.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#0", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "_Z" + }, + "path": [ + { + "x": 80.0, + "y": 25.0 + }, + { + "x": 80.0, + "y": 37.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "B" + }, + "path": [ + { + "x": 35.0, + "y": 17.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#2", + "pinName": "A" + }, + "path": [ + { + "x": 35.0, + "y": 32.5 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#1", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#3", + "pinName": "A" + }, + "path": [ + { + "x": 62.5, + "y": 12.5 + }, + { + "x": 62.5, + "y": 7.5 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#2", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#3", + "pinName": "B" + }, + "path": [ + { + "x": 62.5, + "y": 37.5 + }, + { + "x": 62.5, + "y": 17.5 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#3", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y" + }, + "path": [] + } + ] + }, + "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", + "symbolRendererParams": { + "centerText": "GUIhalfadder", + "horizontalComponentCenter": 17.5, + "centerTextHeight": 5.0, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/components/GUImux1.json b/net.mograsim.logic.model.am2900/components/GUImux1.json new file mode 100644 index 00000000..7ce90023 --- /dev/null +++ b/net.mograsim.logic.model.am2900/components/GUImux1.json @@ -0,0 +1,230 @@ +mograsim version: 0.1.3 +{ + "width": 35.0, + "height": 30.0, + "interfacePins": [ + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "I0", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "I1", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Y", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "S0", + "logicWidth": 1 + } + ], + "submodel": { + "innerScale": 0.4, + "subComps": [ + { + "pos": { + "x": 35.0, + "y": 22.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#1", + "params": 1 + }, + { + "pos": { + "x": 10.0, + "y": 7.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#0", + "params": 1 + }, + { + "pos": { + "x": 60.0, + "y": 30.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#3", + "params": 1 + }, + { + "pos": { + "x": 4.0, + "y": 21.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#1", + "params": 1 + }, + { + "pos": { + "x": 35.0, + "y": 47.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#2", + "params": 1 + }, + { + "pos": { + "x": 4.0, + "y": 11.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#0", + "params": 1 + } + ], + "innerWires": [ + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "S0" + }, + "pin2": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUINandGate#0", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "A" + } + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I0" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#2", + "pinName": "A" + }, + "path": [ + { + "x": 5.0, + "y": 52.5 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I1" + }, + "pin2": { + "compName": "GUINandGate#2", + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUINandGate#1", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#3", + "pinName": "A" + } + }, + { + "pin1": { + "compName": "GUINandGate#2", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#3", + "pinName": "B" + } + }, + { + "pin1": { + "compName": "GUINandGate#3", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y" + } + } + ] + }, + "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", + "symbolRendererParams": { + "centerText": "GUImux1", + "horizontalComponentCenter": 17.5, + "centerTextHeight": 5.0, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/components/GUImux1_4.json b/net.mograsim.logic.model.am2900/components/GUImux1_4.json new file mode 100644 index 00000000..21e2f213 --- /dev/null +++ b/net.mograsim.logic.model.am2900/components/GUImux1_4.json @@ -0,0 +1,468 @@ +mograsim version: 0.1.3 +{ + "width": 35.0, + "height": 90.0, + "interfacePins": [ + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "I0_1", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Y1", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "Y2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 35.0 + }, + "name": "I0_3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 65.0 + }, + "name": "I1_2", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 25.0 + }, + "name": "Y3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "I0_2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 55.0 + }, + "name": "I1_1", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 35.0 + }, + "name": "Y4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 85.0 + }, + "name": "I1_4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "S0", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 45.0 + }, + "name": "I0_4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 75.0 + }, + "name": "I1_3", + "logicWidth": 1 + } + ], + "submodel": { + "innerScale": 0.4, + "subComps": [ + { + "pos": { + "x": 30.0, + "y": 112.5 + }, + "id": "GUImux1", + "name": "GUImux1#3" + }, + { + "pos": { + "x": 24.0, + "y": 46.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#1", + "params": 1 + }, + { + "pos": { + "x": 24.0, + "y": 11.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#0", + "params": 1 + }, + { + "pos": { + "x": 30.0, + "y": 7.5 + }, + "id": "GUImux1", + "name": "GUImux1#0" + }, + { + "pos": { + "x": 24.0, + "y": 81.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#2", + "params": 1 + }, + { + "pos": { + "x": 30.0, + "y": 77.5 + }, + "id": "GUImux1", + "name": "GUImux1#2" + }, + { + "pos": { + "x": 30.0, + "y": 42.5 + }, + "id": "GUImux1", + "name": "GUImux1#1" + } + ], + "innerWires": [ + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "S0" + }, + "pin2": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUImux1#0", + "pinName": "S0" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I0_1" + }, + "pin2": { + "compName": "GUImux1#0", + "pinName": "I0" + }, + "path": [ + { + "x": 5.0, + "y": 37.5 + }, + { + "x": 5.0, + "y": 22.5 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I1_1" + }, + "pin2": { + "compName": "GUImux1#0", + "pinName": "I1" + }, + "path": [ + { + "x": 10.0, + "y": 137.5 + }, + { + "x": 10.0, + "y": 32.5 + } + ] + }, + { + "pin1": { + "compName": "GUImux1#0", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y1" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUImux1#1", + "pinName": "S0" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I0_2" + }, + "pin2": { + "compName": "GUImux1#1", + "pinName": "I0" + }, + "path": [ + { + "x": 5.0, + "y": 62.5 + }, + { + "x": 5.0, + "y": 57.5 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I1_2" + }, + "pin2": { + "compName": "GUImux1#1", + "pinName": "I1" + }, + "path": [ + { + "x": 15.0, + "y": 162.5 + }, + { + "x": 15.0, + "y": 67.5 + } + ] + }, + { + "pin1": { + "compName": "GUImux1#1", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y2" + } + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUImux1#2", + "pinName": "S0" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I0_3" + }, + "pin2": { + "compName": "GUImux1#2", + "pinName": "I0" + }, + "path": [ + { + "x": 5.0, + "y": 87.5 + }, + { + "x": 5.0, + "y": 92.5 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I1_3" + }, + "pin2": { + "compName": "GUImux1#2", + "pinName": "I1" + }, + "path": [ + { + "x": 20.0, + "y": 187.5 + }, + { + "x": 20.0, + "y": 102.5 + } + ] + }, + { + "pin1": { + "compName": "GUImux1#2", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y3" + } + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUImux1#3", + "pinName": "S0" + }, + "path": [ + { + "x": 25.0, + "y": 117.5 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I0_4" + }, + "pin2": { + "compName": "GUImux1#3", + "pinName": "I0" + }, + "path": [ + { + "x": 5.0, + "y": 112.5 + }, + { + "x": 5.0, + "y": 127.5 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I1_4" + }, + "pin2": { + "compName": "GUImux1#3", + "pinName": "I1" + }, + "path": [ + { + "x": 25.0, + "y": 212.5 + }, + { + "x": 25.0, + "y": 137.5 + } + ] + }, + { + "pin1": { + "compName": "GUImux1#3", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y4" + } + } + ] + }, + "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", + "symbolRendererParams": { + "centerText": "GUImux1_4", + "horizontalComponentCenter": 17.5, + "centerTextHeight": 5.0, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/components/GUInand3.json b/net.mograsim.logic.model.am2900/components/GUInand3.json new file mode 100644 index 00000000..b3a6300f --- /dev/null +++ b/net.mograsim.logic.model.am2900/components/GUInand3.json @@ -0,0 +1,204 @@ +mograsim version: 0.1.3 +{ + "width": 35.0, + "height": 30.0, + "interfacePins": [ + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "A", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "B", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "C", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Y", + "logicWidth": 1 + } + ], + "submodel": { + "innerScale": 0.4, + "subComps": [ + { + "pos": { + "x": 35.0, + "y": 15.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#1", + "params": 1 + }, + { + "pos": { + "x": 10.0, + "y": 15.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#0", + "params": 1 + }, + { + "pos": { + "x": 62.5, + "y": 2.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#2", + "params": 1 + }, + { + "pos": { + "x": 31.5, + "y": 24.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#0", + "params": 1 + } + ], + "innerWires": [ + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "A" + } + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "B" + } + }, + { + "pin1": { + "compName": "GUINandGate#0", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "A" + }, + "path": [ + { + "x": 32.5, + "y": 20.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "B" + }, + "path": [ + { + "x": 32.5, + "y": 30.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#1", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#2", + "pinName": "A" + }, + "path": [ + { + "x": 57.5, + "y": 25.0 + }, + { + "x": 57.5, + "y": 7.5 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "C" + }, + "pin2": { + "compName": "GUINandGate#2", + "pinName": "B" + }, + "path": [ + { + "x": 60.0, + "y": 62.5 + }, + { + "x": 60.0, + "y": 17.5 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#2", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y" + }, + "path": [] + } + ] + }, + "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", + "symbolRendererParams": { + "centerText": "GUInand3", + "horizontalComponentCenter": 17.5, + "centerTextHeight": 5.0, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/components/GUInot4.json b/net.mograsim.logic.model.am2900/components/GUInot4.json new file mode 100644 index 00000000..7d575c84 --- /dev/null +++ b/net.mograsim.logic.model.am2900/components/GUInot4.json @@ -0,0 +1,374 @@ +mograsim version: 0.1.3 +{ + "width": 35.0, + "height": 40.0, + "interfacePins": [ + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "A1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "A2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "A3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 35.0 + }, + "name": "A4", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Y1", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "Y2", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 25.0 + }, + "name": "Y3", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 35.0 + }, + "name": "Y4", + "logicWidth": 1 + } + ], + "submodel": { + "innerScale": 0.4, + "subComps": [ + { + "pos": { + "x": 30.0, + "y": 27.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#1", + "params": 1 + }, + { + "pos": { + "x": 30.0, + "y": 2.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#0", + "params": 1 + }, + { + "pos": { + "x": 30.0, + "y": 77.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#3", + "params": 1 + }, + { + "pos": { + "x": 14.0, + "y": 36.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#1", + "params": 1 + }, + { + "pos": { + "x": 30.0, + "y": 52.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#2", + "params": 1 + }, + { + "pos": { + "x": 14.0, + "y": 11.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#0", + "params": 1 + }, + { + "pos": { + "x": 14.0, + "y": 86.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#3", + "params": 1 + }, + { + "pos": { + "x": 14.0, + "y": 61.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#2", + "params": 1 + } + ], + "innerWires": [ + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A1" + }, + "pin2": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A2" + }, + "pin2": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A3" + }, + "pin2": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A4" + }, + "pin2": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "A" + }, + "path": [ + { + "x": 15.0, + "y": 7.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "A" + }, + "path": [ + { + "x": 15.0, + "y": 32.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#2", + "pinName": "A" + }, + "path": [ + { + "x": 15.0, + "y": 57.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#3", + "pinName": "A" + }, + "path": [ + { + "x": 15.0, + "y": 82.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "B" + }, + "path": [ + { + "x": 15.0, + "y": 17.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "B" + }, + "path": [ + { + "x": 15.0, + "y": 42.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#2", + "pinName": "B" + }, + "path": [ + { + "x": 15.0, + "y": 67.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#3", + "pinName": "B" + }, + "path": [ + { + "x": 15.0, + "y": 92.5 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#0", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y1" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUINandGate#1", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y2" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUINandGate#2", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y3" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUINandGate#3", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y4" + }, + "path": [] + } + ] + }, + "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", + "symbolRendererParams": { + "centerText": "GUInot4", + "horizontalComponentCenter": 17.5, + "centerTextHeight": 5.0, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/components/GUIor4.json b/net.mograsim.logic.model.am2900/components/GUIor4.json new file mode 100644 index 00000000..d4bcd579 --- /dev/null +++ b/net.mograsim.logic.model.am2900/components/GUIor4.json @@ -0,0 +1,525 @@ +mograsim version: 0.1.3 +{ + "width": 35.0, + "height": 40.0, + "interfacePins": [ + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "A1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "A2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "A3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 35.0 + }, + "name": "A4", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Y", + "logicWidth": 1 + } + ], + "submodel": { + "innerScale": 0.2, + "subComps": [ + { + "pos": { + "x": 20.0, + "y": 65.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#1", + "params": 1 + }, + { + "pos": { + "x": 20.0, + "y": 15.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#0", + "params": 1 + }, + { + "pos": { + "x": 20.0, + "y": 165.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#3", + "params": 1 + }, + { + "pos": { + "x": 20.0, + "y": 115.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#2", + "params": 1 + }, + { + "pos": { + "x": 14.0, + "y": 74.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#1", + "params": 1 + }, + { + "pos": { + "x": 14.0, + "y": 24.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#0", + "params": 1 + }, + { + "pos": { + "x": 14.0, + "y": 174.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#3", + "params": 1 + }, + { + "pos": { + "x": 14.0, + "y": 124.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#2", + "params": 1 + }, + { + "pos": { + "x": 104.0, + "y": 149.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#5", + "params": 1 + }, + { + "pos": { + "x": 104.0, + "y": 49.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#4", + "params": 1 + }, + { + "pos": { + "x": 140.0, + "y": 90.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#8", + "params": 1 + }, + { + "pos": { + "x": 50.0, + "y": 140.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#5", + "params": 1 + }, + { + "pos": { + "x": 50.0, + "y": 40.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#4", + "params": 1 + }, + { + "pos": { + "x": 110.0, + "y": 140.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#7", + "params": 1 + }, + { + "pos": { + "x": 110.0, + "y": 40.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#6", + "params": 1 + } + ], + "innerWires": [ + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A1" + }, + "pin2": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A2" + }, + "pin2": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A3" + }, + "pin2": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A4" + }, + "pin2": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "A" + }, + "path": [ + { + "x": 15.0, + "y": 20.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "A" + }, + "path": [ + { + "x": 15.0, + "y": 70.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#2", + "pinName": "A" + }, + "path": [ + { + "x": 15.0, + "y": 120.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#3", + "pinName": "A" + }, + "path": [ + { + "x": 15.0, + "y": 170.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "B" + }, + "path": [ + { + "x": 15.0, + "y": 30.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "B" + }, + "path": [ + { + "x": 15.0, + "y": 80.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#2", + "pinName": "B" + }, + "path": [ + { + "x": 15.0, + "y": 130.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#3", + "pinName": "B" + }, + "path": [ + { + "x": 15.0, + "y": 180.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#0", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#4", + "pinName": "A" + } + }, + { + "pin1": { + "compName": "GUINandGate#1", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#4", + "pinName": "B" + } + }, + { + "pin1": { + "compName": "GUINandGate#2", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#5", + "pinName": "A" + } + }, + { + "pin1": { + "compName": "GUINandGate#3", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#5", + "pinName": "B" + } + }, + { + "pin1": { + "compName": "GUINandGate#4", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUINandGate#5", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#6", + "pinName": "A" + }, + "path": [ + { + "x": 105.0, + "y": 45.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#6", + "pinName": "B" + }, + "path": [ + { + "x": 105.0, + "y": 55.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#7", + "pinName": "A" + }, + "path": [ + { + "x": 105.0, + "y": 145.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#7", + "pinName": "B" + }, + "path": [ + { + "x": 105.0, + "y": 155.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#6", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#8", + "pinName": "A" + } + }, + { + "pin1": { + "compName": "GUINandGate#7", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#8", + "pinName": "B" + } + }, + { + "pin1": { + "compName": "GUINandGate#8", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y" + } + } + ] + }, + "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", + "symbolRendererParams": { + "centerText": "GUIor4", + "horizontalComponentCenter": 17.5, + "centerTextHeight": 5.0, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/components/GUIor_4.json b/net.mograsim.logic.model.am2900/components/GUIor_4.json new file mode 100644 index 00000000..86b44135 --- /dev/null +++ b/net.mograsim.logic.model.am2900/components/GUIor_4.json @@ -0,0 +1,846 @@ +mograsim version: 0.1.3 +{ + "width": 35.0, + "height": 80.0, + "interfacePins": [ + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "A1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 55.0 + }, + "name": "B2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "A2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 65.0 + }, + "name": "B3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "A3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 75.0 + }, + "name": "B4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 35.0 + }, + "name": "A4", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Y1", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "Y2", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 25.0 + }, + "name": "Y3", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 35.0 + }, + "name": "Y4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 45.0 + }, + "name": "B1", + "logicWidth": 1 + } + ], + "submodel": { + "innerScale": 0.4, + "subComps": [ + { + "pos": { + "x": 15.0, + "y": 27.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#1", + "params": 1 + }, + { + "pos": { + "x": 15.0, + "y": 2.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#0", + "params": 1 + }, + { + "pos": { + "x": 15.0, + "y": 77.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#3", + "params": 1 + }, + { + "pos": { + "x": 15.0, + "y": 52.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#2", + "params": 1 + }, + { + "pos": { + "x": 65.0, + "y": 77.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#11", + "params": 1 + }, + { + "pos": { + "x": 65.0, + "y": 52.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#10", + "params": 1 + }, + { + "pos": { + "x": 6.5, + "y": 36.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#1", + "params": 1 + }, + { + "pos": { + "x": 6.5, + "y": 11.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#0", + "params": 1 + }, + { + "pos": { + "x": 6.5, + "y": 86.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#3", + "params": 1 + }, + { + "pos": { + "x": 6.5, + "y": 61.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#2", + "params": 1 + }, + { + "pos": { + "x": 6.5, + "y": 136.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#5", + "params": 1 + }, + { + "pos": { + "x": 6.5, + "y": 111.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#4", + "params": 1 + }, + { + "pos": { + "x": 65.0, + "y": 27.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#9", + "params": 1 + }, + { + "pos": { + "x": 6.5, + "y": 186.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#7", + "params": 1 + }, + { + "pos": { + "x": 65.0, + "y": 2.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#8", + "params": 1 + }, + { + "pos": { + "x": 6.5, + "y": 161.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#6", + "params": 1 + }, + { + "pos": { + "x": 15.0, + "y": 127.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#5", + "params": 1 + }, + { + "pos": { + "x": 15.0, + "y": 102.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#4", + "params": 1 + }, + { + "pos": { + "x": 15.0, + "y": 177.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#7", + "params": 1 + }, + { + "pos": { + "x": 15.0, + "y": 152.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#6", + "params": 1 + } + ], + "innerWires": [ + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A1" + }, + "pin2": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A2" + }, + "pin2": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A3" + }, + "pin2": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A4" + }, + "pin2": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B1" + }, + "pin2": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B2" + }, + "pin2": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B3" + }, + "pin2": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B4" + }, + "pin2": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "A" + }, + "path": [ + { + "x": 7.5, + "y": 7.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "B" + }, + "path": [ + { + "x": 7.5, + "y": 17.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "A" + }, + "path": [ + { + "x": 7.5, + "y": 32.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "B" + }, + "path": [ + { + "x": 7.5, + "y": 42.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#2", + "pinName": "A" + }, + "path": [ + { + "x": 7.5, + "y": 57.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#2", + "pinName": "B" + }, + "path": [ + { + "x": 7.5, + "y": 67.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#3", + "pinName": "A" + }, + "path": [ + { + "x": 7.5, + "y": 82.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#3", + "pinName": "B" + }, + "path": [ + { + "x": 7.5, + "y": 92.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#4", + "pinName": "A" + }, + "path": [ + { + "x": 7.5, + "y": 107.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#4", + "pinName": "B" + }, + "path": [ + { + "x": 7.5, + "y": 117.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#5", + "pinName": "A" + }, + "path": [ + { + "x": 7.5, + "y": 132.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#5", + "pinName": "B" + }, + "path": [ + { + "x": 7.5, + "y": 142.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#6", + "pinName": "A" + }, + "path": [ + { + "x": 7.5, + "y": 157.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#6", + "pinName": "B" + }, + "path": [ + { + "x": 7.5, + "y": 167.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#7", + "pinName": "A" + }, + "path": [ + { + "x": 7.5, + "y": 182.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#7", + "pinName": "B" + }, + "path": [ + { + "x": 7.5, + "y": 192.5 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#0", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#8", + "pinName": "A" + }, + "path": [ + { + "x": 40.0, + "y": 12.5 + }, + { + "x": 40.0, + "y": 7.5 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#4", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#8", + "pinName": "B" + }, + "path": [ + { + "x": 45.0, + "y": 112.5 + }, + { + "x": 45.0, + "y": 17.5 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#1", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#9", + "pinName": "A" + }, + "path": [ + { + "x": 40.0, + "y": 37.5 + }, + { + "x": 40.0, + "y": 32.5 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#5", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#9", + "pinName": "B" + }, + "path": [ + { + "x": 50.0, + "y": 137.5 + }, + { + "x": 50.0, + "y": 42.5 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#2", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#10", + "pinName": "A" + }, + "path": [ + { + "x": 40.0, + "y": 62.5 + }, + { + "x": 40.0, + "y": 57.5 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#6", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#10", + "pinName": "B" + }, + "path": [ + { + "x": 55.0, + "y": 162.5 + }, + { + "x": 55.0, + "y": 67.5 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#3", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#11", + "pinName": "A" + }, + "path": [ + { + "x": 40.0, + "y": 87.5 + }, + { + "x": 40.0, + "y": 82.5 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#7", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#11", + "pinName": "B" + }, + "path": [ + { + "x": 60.0, + "y": 187.5 + }, + { + "x": 60.0, + "y": 92.5 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#8", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y1" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUINandGate#9", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y2" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUINandGate#10", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y3" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUINandGate#11", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y4" + }, + "path": [] + } + ] + }, + "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", + "symbolRendererParams": { + "centerText": "GUIor_4", + "horizontalComponentCenter": 17.5, + "centerTextHeight": 5.0, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/components/GUIram2.json b/net.mograsim.logic.model.am2900/components/GUIram2.json new file mode 100644 index 00000000..3cb8583f --- /dev/null +++ b/net.mograsim.logic.model.am2900/components/GUIram2.json @@ -0,0 +1,2829 @@ +mograsim version: 0.1.3 +{ + "width": 35.0, + "height": 90.0, + "interfacePins": [ + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "QA1", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 55.0 + }, + "name": "QB2", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 45.0 + }, + "name": "QB1", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 25.0 + }, + "name": "QA3", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 75.0 + }, + "name": "QB4", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "QA2", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 65.0 + }, + "name": "QB3", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 35.0 + }, + "name": "QA4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 55.0 + }, + "name": "D1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "B0", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 45.0 + }, + "name": "WE", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 65.0 + }, + "name": "D2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "A0", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 35.0 + }, + "name": "B1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 75.0 + }, + "name": "D3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "A1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 85.0 + }, + "name": "D4", + "logicWidth": 1 + } + ], + "submodel": { + "innerScale": 0.1, + "subComps": [ + { + "pos": { + "x": 44.0, + "y": 649.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#14", + "params": 1 + }, + { + "pos": { + "x": 39.0, + "y": 639.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#13", + "params": 1 + }, + { + "pos": { + "x": 129.0, + "y": 329.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#16", + "params": 1 + }, + { + "pos": { + "x": 49.0, + "y": 659.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#15", + "params": 1 + }, + { + "pos": { + "x": 119.0, + "y": 349.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#18", + "params": 1 + }, + { + "pos": { + "x": 124.0, + "y": 339.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#17", + "params": 1 + }, + { + "pos": { + "x": 114.0, + "y": 359.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#19", + "params": 1 + }, + { + "pos": { + "x": 104.0, + "y": 164.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#1", + "params": 1 + }, + { + "pos": { + "x": 109.0, + "y": 154.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#0", + "params": 1 + }, + { + "pos": { + "x": 94.0, + "y": 184.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#3", + "params": 1 + }, + { + "pos": { + "x": 99.0, + "y": 174.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#2", + "params": 1 + }, + { + "pos": { + "x": 39.0, + "y": 649.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#5", + "params": 1 + }, + { + "pos": { + "x": 34.0, + "y": 549.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#4", + "params": 1 + }, + { + "pos": { + "x": 49.0, + "y": 809.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#7", + "params": 1 + }, + { + "pos": { + "x": 44.0, + "y": 749.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#6", + "params": 1 + }, + { + "pos": { + "x": 39.0, + "y": 489.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#9", + "params": 1 + }, + { + "pos": { + "x": 34.0, + "y": 479.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#8", + "params": 1 + }, + { + "pos": { + "x": 44.0, + "y": 499.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#10", + "params": 1 + }, + { + "pos": { + "x": 34.0, + "y": 629.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#12", + "params": 1 + }, + { + "pos": { + "x": 49.0, + "y": 509.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#11", + "params": 1 + }, + { + "pos": { + "x": 135.0, + "y": 735.0 + }, + "id": "GUIandor414", + "name": "GUIandor414#5" + }, + { + "pos": { + "x": 135.0, + "y": 435.0 + }, + "id": "GUIandor414", + "name": "GUIandor414#3" + }, + { + "pos": { + "x": 135.0, + "y": 585.0 + }, + "id": "GUIandor414", + "name": "GUIandor414#4" + }, + { + "pos": { + "x": 235.0, + "y": 635.0 + }, + "id": "GUIandor414", + "name": "GUIandor414#1" + }, + { + "pos": { + "x": 235.0, + "y": 785.0 + }, + "id": "GUIandor414", + "name": "GUIandor414#2" + }, + { + "pos": { + "x": 235.0, + "y": 485.0 + }, + "id": "GUIandor414", + "name": "GUIandor414#0" + }, + { + "pos": { + "x": 55.0, + "y": 475.0 + }, + "id": "GUIdlatch4", + "name": "GUIdlatch4#1" + }, + { + "pos": { + "x": 55.0, + "y": 325.0 + }, + "id": "GUIdlatch4", + "name": "GUIdlatch4#0" + }, + { + "pos": { + "x": 55.0, + "y": 775.0 + }, + "id": "GUIdlatch4", + "name": "GUIdlatch4#3" + }, + { + "pos": { + "x": 55.0, + "y": 625.0 + }, + "id": "GUIdlatch4", + "name": "GUIdlatch4#2" + }, + { + "pos": { + "x": 135.0, + "y": 325.0 + }, + "id": "GUIand41", + "name": "GUIand41#2" + }, + { + "pos": { + "x": 119.0, + "y": 799.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#30", + "params": 1 + }, + { + "pos": { + "x": 114.0, + "y": 809.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#31", + "params": 1 + }, + { + "pos": { + "x": 130.0, + "y": 150.0 + }, + "id": "GUIand41", + "name": "GUIand41#0" + }, + { + "pos": { + "x": 235.0, + "y": 375.0 + }, + "id": "GUIand41", + "name": "GUIand41#1" + }, + { + "pos": { + "x": 124.0, + "y": 639.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#25", + "params": 1 + }, + { + "pos": { + "x": 129.0, + "y": 629.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#24", + "params": 1 + }, + { + "pos": { + "x": 114.0, + "y": 659.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#27", + "params": 1 + }, + { + "pos": { + "x": 119.0, + "y": 649.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#26", + "params": 1 + }, + { + "pos": { + "x": 124.0, + "y": 789.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#29", + "params": 1 + }, + { + "pos": { + "x": 129.0, + "y": 779.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#28", + "params": 1 + }, + { + "pos": { + "x": 55.0, + "y": 150.0 + }, + "id": "GUIdemux2", + "name": "GUIdemux2#1" + }, + { + "pos": { + "x": 55.0, + "y": 45.0 + }, + "id": "GUIdemux2", + "name": "GUIdemux2#0" + }, + { + "pos": { + "x": 124.0, + "y": 489.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#21", + "params": 1 + }, + { + "pos": { + "x": 129.0, + "y": 479.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#20", + "params": 1 + }, + { + "pos": { + "x": 114.0, + "y": 509.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#23", + "params": 1 + }, + { + "pos": { + "x": 119.0, + "y": 499.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#22", + "params": 1 + } + ], + "innerWires": [ + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A0" + }, + "pin2": { + "compName": "GUIdemux2#0", + "pinName": "S0" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A1" + }, + "pin2": { + "compName": "GUIdemux2#0", + "pinName": "S1" + }, + "path": [ + { + "x": 10.0, + "y": 150.0 + }, + { + "x": 10.0, + "y": 60.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B0" + }, + "pin2": { + "compName": "GUIdemux2#1", + "pinName": "S0" + }, + "path": [ + { + "x": 5.0, + "y": 250.0 + }, + { + "x": 5.0, + "y": 155.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B1" + }, + "pin2": { + "compName": "GUIdemux2#1", + "pinName": "S1" + }, + "path": [ + { + "x": 10.0, + "y": 350.0 + }, + { + "x": 10.0, + "y": 165.0 + } + ] + }, + { + "pin1": { + "compName": "GUIdemux2#1", + "pinName": "Y00" + }, + "pin2": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdemux2#1", + "pinName": "Y01" + }, + "pin2": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdemux2#1", + "pinName": "Y10" + }, + "pin2": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdemux2#1", + "pinName": "Y11" + }, + "pin2": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUIand41#0", + "pinName": "A1" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUIand41#0", + "pinName": "A2" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUIand41#0", + "pinName": "A3" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "GUIand41#0", + "pinName": "A4" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "WE" + }, + "pin2": { + "compName": "GUIand41#0", + "pinName": "B" + }, + "path": [ + { + "x": 5.0, + "y": 450.0 + }, + { + "x": 5.0, + "y": 300.0 + }, + { + "x": 125.0, + "y": 300.0 + }, + { + "x": 125.0, + "y": 195.0 + } + ] + }, + { + "pin1": { + "compName": "GUIand41#0", + "pinName": "Y1" + }, + "pin2": { + "compName": "GUIdlatch4#0", + "pinName": "C" + }, + "path": [ + { + "x": 185.0, + "y": 155.0 + }, + { + "x": 185.0, + "y": 250.0 + }, + { + "x": 30.0, + "y": 250.0 + }, + { + "x": 30.0, + "y": 370.0 + } + ] + }, + { + "pin1": { + "compName": "GUIand41#0", + "pinName": "Y2" + }, + "pin2": { + "compName": "GUIdlatch4#1", + "pinName": "C" + }, + "path": [ + { + "x": 180.0, + "y": 165.0 + }, + { + "x": 180.0, + "y": 245.0 + }, + { + "x": 25.0, + "y": 245.0 + }, + { + "x": 25.0, + "y": 520.0 + } + ] + }, + { + "pin1": { + "compName": "GUIand41#0", + "pinName": "Y3" + }, + "pin2": { + "compName": "GUIdlatch4#2", + "pinName": "C" + }, + "path": [ + { + "x": 175.0, + "y": 175.0 + }, + { + "x": 175.0, + "y": 240.0 + }, + { + "x": 20.0, + "y": 240.0 + }, + { + "x": 20.0, + "y": 670.0 + } + ] + }, + { + "pin1": { + "compName": "GUIand41#0", + "pinName": "Y4" + }, + "pin2": { + "compName": "GUIdlatch4#3", + "pinName": "C" + }, + "path": [ + { + "x": 170.0, + "y": 185.0 + }, + { + "x": 170.0, + "y": 235.0 + }, + { + "x": 15.0, + "y": 235.0 + }, + { + "x": 15.0, + "y": 820.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "D1" + }, + "pin2": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "D2" + }, + "pin2": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "D3" + }, + "pin2": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "D4" + }, + "pin2": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "path": [ + { + "x": 50.0, + "y": 850.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#8", + "pinName": "" + }, + "pin2": { + "compName": "GUIdlatch4#0", + "pinName": "D1" + }, + "path": [ + { + "x": 35.0, + "y": 330.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#9", + "pinName": "" + }, + "pin2": { + "compName": "GUIdlatch4#0", + "pinName": "D2" + }, + "path": [ + { + "x": 40.0, + "y": 340.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#10", + "pinName": "" + }, + "pin2": { + "compName": "GUIdlatch4#0", + "pinName": "D3" + }, + "path": [ + { + "x": 45.0, + "y": 350.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#11", + "pinName": "" + }, + "pin2": { + "compName": "GUIdlatch4#0", + "pinName": "D4" + }, + "path": [ + { + "x": 50.0, + "y": 360.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#8", + "pinName": "" + }, + "pin2": { + "compName": "GUIdlatch4#1", + "pinName": "D1" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#9", + "pinName": "" + }, + "pin2": { + "compName": "GUIdlatch4#1", + "pinName": "D2" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#10", + "pinName": "" + }, + "pin2": { + "compName": "GUIdlatch4#1", + "pinName": "D3" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#11", + "pinName": "" + }, + "pin2": { + "compName": "GUIdlatch4#1", + "pinName": "D4" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#8", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#12", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#9", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#13", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#10", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#14", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#11", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#15", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#12", + "pinName": "" + }, + "pin2": { + "compName": "GUIdlatch4#2", + "pinName": "D1" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#13", + "pinName": "" + }, + "pin2": { + "compName": "GUIdlatch4#2", + "pinName": "D2" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#14", + "pinName": "" + }, + "pin2": { + "compName": "GUIdlatch4#2", + "pinName": "D3" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#15", + "pinName": "" + }, + "pin2": { + "compName": "GUIdlatch4#2", + "pinName": "D4" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#13", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#14", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#15", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#12", + "pinName": "" + }, + "pin2": { + "compName": "GUIdlatch4#3", + "pinName": "D1" + }, + "path": [ + { + "x": 35.0, + "y": 780.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "pin2": { + "compName": "GUIdlatch4#3", + "pinName": "D2" + }, + "path": [ + { + "x": 40.0, + "y": 790.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "pin2": { + "compName": "GUIdlatch4#3", + "pinName": "D3" + }, + "path": [ + { + "x": 45.0, + "y": 800.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "pin2": { + "compName": "GUIdlatch4#3", + "pinName": "D4" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdlatch4#0", + "pinName": "Q1" + }, + "pin2": { + "compName": "WireCrossPoint#16", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdlatch4#0", + "pinName": "Q2" + }, + "pin2": { + "compName": "WireCrossPoint#17", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdlatch4#0", + "pinName": "Q3" + }, + "pin2": { + "compName": "WireCrossPoint#18", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdlatch4#0", + "pinName": "Q4" + }, + "pin2": { + "compName": "WireCrossPoint#19", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdlatch4#1", + "pinName": "Q1" + }, + "pin2": { + "compName": "WireCrossPoint#20", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdlatch4#1", + "pinName": "Q2" + }, + "pin2": { + "compName": "WireCrossPoint#21", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdlatch4#1", + "pinName": "Q3" + }, + "pin2": { + "compName": "WireCrossPoint#22", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdlatch4#1", + "pinName": "Q4" + }, + "pin2": { + "compName": "WireCrossPoint#23", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdlatch4#2", + "pinName": "Q1" + }, + "pin2": { + "compName": "WireCrossPoint#24", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdlatch4#2", + "pinName": "Q2" + }, + "pin2": { + "compName": "WireCrossPoint#25", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdlatch4#2", + "pinName": "Q3" + }, + "pin2": { + "compName": "WireCrossPoint#26", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdlatch4#2", + "pinName": "Q4" + }, + "pin2": { + "compName": "WireCrossPoint#27", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdlatch4#3", + "pinName": "Q1" + }, + "pin2": { + "compName": "WireCrossPoint#28", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdlatch4#3", + "pinName": "Q2" + }, + "pin2": { + "compName": "WireCrossPoint#29", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdlatch4#3", + "pinName": "Q3" + }, + "pin2": { + "compName": "WireCrossPoint#30", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdlatch4#3", + "pinName": "Q4" + }, + "pin2": { + "compName": "WireCrossPoint#31", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdemux2#0", + "pinName": "Y00" + }, + "pin2": { + "compName": "GUIand41#1", + "pinName": "B" + }, + "path": [ + { + "x": 210.0, + "y": 50.0 + }, + { + "x": 210.0, + "y": 420.0 + } + ] + }, + { + "pin1": { + "compName": "GUIdemux2#0", + "pinName": "Y01" + }, + "pin2": { + "compName": "GUIandor414#0", + "pinName": "B" + }, + "path": [ + { + "x": 205.0, + "y": 60.0 + }, + { + "x": 205.0, + "y": 570.0 + } + ] + }, + { + "pin1": { + "compName": "GUIdemux2#0", + "pinName": "Y10" + }, + "pin2": { + "compName": "GUIandor414#1", + "pinName": "B" + }, + "path": [ + { + "x": 200.0, + "y": 70.0 + }, + { + "x": 200.0, + "y": 720.0 + } + ] + }, + { + "pin1": { + "compName": "GUIdemux2#0", + "pinName": "Y11" + }, + "pin2": { + "compName": "GUIandor414#2", + "pinName": "B" + }, + "path": [ + { + "x": 195.0, + "y": 80.0 + }, + { + "x": 195.0, + "y": 870.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUIand41#2", + "pinName": "B" + }, + "path": [ + { + "x": 110.0, + "y": 370.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUIandor414#3", + "pinName": "B" + }, + "path": [ + { + "x": 105.0, + "y": 520.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUIandor414#4", + "pinName": "B" + }, + "path": [ + { + "x": 100.0, + "y": 670.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "GUIandor414#5", + "pinName": "B" + }, + "path": [ + { + "x": 95.0, + "y": 820.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#16", + "pinName": "" + }, + "pin2": { + "compName": "GUIand41#1", + "pinName": "A1" + }, + "path": [ + { + "x": 130.0, + "y": 380.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#17", + "pinName": "" + }, + "pin2": { + "compName": "GUIand41#1", + "pinName": "A2" + }, + "path": [ + { + "x": 125.0, + "y": 390.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#18", + "pinName": "" + }, + "pin2": { + "compName": "GUIand41#1", + "pinName": "A3" + }, + "path": [ + { + "x": 120.0, + "y": 400.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#19", + "pinName": "" + }, + "pin2": { + "compName": "GUIand41#1", + "pinName": "A4" + }, + "path": [ + { + "x": 115.0, + "y": 410.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#20", + "pinName": "" + }, + "pin2": { + "compName": "GUIandor414#0", + "pinName": "A1" + }, + "path": [ + { + "x": 130.0, + "y": 530.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#21", + "pinName": "" + }, + "pin2": { + "compName": "GUIandor414#0", + "pinName": "A2" + }, + "path": [ + { + "x": 125.0, + "y": 540.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#22", + "pinName": "" + }, + "pin2": { + "compName": "GUIandor414#0", + "pinName": "A3" + }, + "path": [ + { + "x": 120.0, + "y": 550.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#23", + "pinName": "" + }, + "pin2": { + "compName": "GUIandor414#0", + "pinName": "A4" + }, + "path": [ + { + "x": 115.0, + "y": 560.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#24", + "pinName": "" + }, + "pin2": { + "compName": "GUIandor414#1", + "pinName": "A1" + }, + "path": [ + { + "x": 130.0, + "y": 680.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#25", + "pinName": "" + }, + "pin2": { + "compName": "GUIandor414#1", + "pinName": "A2" + }, + "path": [ + { + "x": 125.0, + "y": 690.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#26", + "pinName": "" + }, + "pin2": { + "compName": "GUIandor414#1", + "pinName": "A3" + }, + "path": [ + { + "x": 120.0, + "y": 700.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#27", + "pinName": "" + }, + "pin2": { + "compName": "GUIandor414#1", + "pinName": "A4" + }, + "path": [ + { + "x": 115.0, + "y": 710.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#28", + "pinName": "" + }, + "pin2": { + "compName": "GUIandor414#2", + "pinName": "A1" + }, + "path": [ + { + "x": 130.0, + "y": 830.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#29", + "pinName": "" + }, + "pin2": { + "compName": "GUIandor414#2", + "pinName": "A2" + }, + "path": [ + { + "x": 125.0, + "y": 840.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#30", + "pinName": "" + }, + "pin2": { + "compName": "GUIandor414#2", + "pinName": "A3" + }, + "path": [ + { + "x": 120.0, + "y": 850.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#31", + "pinName": "" + }, + "pin2": { + "compName": "GUIandor414#2", + "pinName": "A4" + }, + "path": [ + { + "x": 115.0, + "y": 860.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#16", + "pinName": "" + }, + "pin2": { + "compName": "GUIand41#2", + "pinName": "A1" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#17", + "pinName": "" + }, + "pin2": { + "compName": "GUIand41#2", + "pinName": "A2" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#18", + "pinName": "" + }, + "pin2": { + "compName": "GUIand41#2", + "pinName": "A3" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#19", + "pinName": "" + }, + "pin2": { + "compName": "GUIand41#2", + "pinName": "A4" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#20", + "pinName": "" + }, + "pin2": { + "compName": "GUIandor414#3", + "pinName": "A1" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#21", + "pinName": "" + }, + "pin2": { + "compName": "GUIandor414#3", + "pinName": "A2" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#22", + "pinName": "" + }, + "pin2": { + "compName": "GUIandor414#3", + "pinName": "A3" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#23", + "pinName": "" + }, + "pin2": { + "compName": "GUIandor414#3", + "pinName": "A4" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#24", + "pinName": "" + }, + "pin2": { + "compName": "GUIandor414#4", + "pinName": "A1" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#25", + "pinName": "" + }, + "pin2": { + "compName": "GUIandor414#4", + "pinName": "A2" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#26", + "pinName": "" + }, + "pin2": { + "compName": "GUIandor414#4", + "pinName": "A3" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#27", + "pinName": "" + }, + "pin2": { + "compName": "GUIandor414#4", + "pinName": "A4" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#28", + "pinName": "" + }, + "pin2": { + "compName": "GUIandor414#5", + "pinName": "A1" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#29", + "pinName": "" + }, + "pin2": { + "compName": "GUIandor414#5", + "pinName": "A2" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#30", + "pinName": "" + }, + "pin2": { + "compName": "GUIandor414#5", + "pinName": "A3" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#31", + "pinName": "" + }, + "pin2": { + "compName": "GUIandor414#5", + "pinName": "A4" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIand41#1", + "pinName": "Y1" + }, + "pin2": { + "compName": "GUIandor414#0", + "pinName": "C1" + }, + "path": [ + { + "x": 290.0, + "y": 380.0 + }, + { + "x": 290.0, + "y": 445.0 + }, + { + "x": 230.0, + "y": 445.0 + }, + { + "x": 230.0, + "y": 490.0 + } + ] + }, + { + "pin1": { + "compName": "GUIand41#1", + "pinName": "Y2" + }, + "pin2": { + "compName": "GUIandor414#0", + "pinName": "C2" + }, + "path": [ + { + "x": 285.0, + "y": 390.0 + }, + { + "x": 285.0, + "y": 440.0 + }, + { + "x": 225.0, + "y": 440.0 + }, + { + "x": 225.0, + "y": 500.0 + } + ] + }, + { + "pin1": { + "compName": "GUIand41#1", + "pinName": "Y3" + }, + "pin2": { + "compName": "GUIandor414#0", + "pinName": "C3" + }, + "path": [ + { + "x": 280.0, + "y": 400.0 + }, + { + "x": 280.0, + "y": 435.0 + }, + { + "x": 220.0, + "y": 435.0 + }, + { + "x": 220.0, + "y": 510.0 + } + ] + }, + { + "pin1": { + "compName": "GUIand41#1", + "pinName": "Y4" + }, + "pin2": { + "compName": "GUIandor414#0", + "pinName": "C4" + }, + "path": [ + { + "x": 275.0, + "y": 410.0 + }, + { + "x": 275.0, + "y": 430.0 + }, + { + "x": 215.0, + "y": 430.0 + }, + { + "x": 215.0, + "y": 520.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#0", + "pinName": "Y1" + }, + "pin2": { + "compName": "GUIandor414#1", + "pinName": "C1" + }, + "path": [ + { + "x": 290.0, + "y": 490.0 + }, + { + "x": 290.0, + "y": 595.0 + }, + { + "x": 230.0, + "y": 595.0 + }, + { + "x": 230.0, + "y": 640.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#0", + "pinName": "Y2" + }, + "pin2": { + "compName": "GUIandor414#1", + "pinName": "C2" + }, + "path": [ + { + "x": 285.0, + "y": 500.0 + }, + { + "x": 285.0, + "y": 590.0 + }, + { + "x": 225.0, + "y": 590.0 + }, + { + "x": 225.0, + "y": 650.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#0", + "pinName": "Y3" + }, + "pin2": { + "compName": "GUIandor414#1", + "pinName": "C3" + }, + "path": [ + { + "x": 280.0, + "y": 510.0 + }, + { + "x": 280.0, + "y": 585.0 + }, + { + "x": 220.0, + "y": 585.0 + }, + { + "x": 220.0, + "y": 660.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#0", + "pinName": "Y4" + }, + "pin2": { + "compName": "GUIandor414#1", + "pinName": "C4" + }, + "path": [ + { + "x": 275.0, + "y": 520.0 + }, + { + "x": 275.0, + "y": 580.0 + }, + { + "x": 215.0, + "y": 580.0 + }, + { + "x": 215.0, + "y": 670.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#1", + "pinName": "Y1" + }, + "pin2": { + "compName": "GUIandor414#2", + "pinName": "C1" + }, + "path": [ + { + "x": 290.0, + "y": 640.0 + }, + { + "x": 290.0, + "y": 745.0 + }, + { + "x": 230.0, + "y": 745.0 + }, + { + "x": 230.0, + "y": 790.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#1", + "pinName": "Y2" + }, + "pin2": { + "compName": "GUIandor414#2", + "pinName": "C2" + }, + "path": [ + { + "x": 285.0, + "y": 650.0 + }, + { + "x": 285.0, + "y": 740.0 + }, + { + "x": 225.0, + "y": 740.0 + }, + { + "x": 225.0, + "y": 800.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#1", + "pinName": "Y3" + }, + "pin2": { + "compName": "GUIandor414#2", + "pinName": "C3" + }, + "path": [ + { + "x": 280.0, + "y": 660.0 + }, + { + "x": 280.0, + "y": 735.0 + }, + { + "x": 220.0, + "y": 735.0 + }, + { + "x": 220.0, + "y": 810.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#1", + "pinName": "Y4" + }, + "pin2": { + "compName": "GUIandor414#2", + "pinName": "C4" + }, + "path": [ + { + "x": 275.0, + "y": 670.0 + }, + { + "x": 275.0, + "y": 730.0 + }, + { + "x": 215.0, + "y": 730.0 + }, + { + "x": 215.0, + "y": 820.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#2", + "pinName": "Y1" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "QA1" + }, + "path": [ + { + "x": 300.0, + "y": 790.0 + }, + { + "x": 300.0, + "y": 50.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#2", + "pinName": "Y2" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "QA2" + }, + "path": [ + { + "x": 305.0, + "y": 800.0 + }, + { + "x": 305.0, + "y": 150.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#2", + "pinName": "Y3" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "QA3" + }, + "path": [ + { + "x": 310.0, + "y": 810.0 + }, + { + "x": 310.0, + "y": 250.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#2", + "pinName": "Y4" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "QA4" + }, + "path": [ + { + "x": 315.0, + "y": 820.0 + }, + { + "x": 315.0, + "y": 350.0 + } + ] + }, + { + "pin1": { + "compName": "GUIand41#2", + "pinName": "Y1" + }, + "pin2": { + "compName": "GUIandor414#3", + "pinName": "C1" + }, + "path": [ + { + "x": 190.0, + "y": 330.0 + }, + { + "x": 190.0, + "y": 430.0 + }, + { + "x": 130.0, + "y": 430.0 + }, + { + "x": 130.0, + "y": 440.0 + } + ] + }, + { + "pin1": { + "compName": "GUIand41#2", + "pinName": "Y2" + }, + "pin2": { + "compName": "GUIandor414#3", + "pinName": "C2" + }, + "path": [ + { + "x": 185.0, + "y": 340.0 + }, + { + "x": 185.0, + "y": 425.0 + }, + { + "x": 125.0, + "y": 425.0 + }, + { + "x": 125.0, + "y": 450.0 + } + ] + }, + { + "pin1": { + "compName": "GUIand41#2", + "pinName": "Y3" + }, + "pin2": { + "compName": "GUIandor414#3", + "pinName": "C3" + }, + "path": [ + { + "x": 180.0, + "y": 350.0 + }, + { + "x": 180.0, + "y": 420.0 + }, + { + "x": 120.0, + "y": 420.0 + }, + { + "x": 120.0, + "y": 460.0 + } + ] + }, + { + "pin1": { + "compName": "GUIand41#2", + "pinName": "Y4" + }, + "pin2": { + "compName": "GUIandor414#3", + "pinName": "C4" + }, + "path": [ + { + "x": 175.0, + "y": 360.0 + }, + { + "x": 175.0, + "y": 415.0 + }, + { + "x": 115.0, + "y": 415.0 + }, + { + "x": 115.0, + "y": 470.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#3", + "pinName": "Y1" + }, + "pin2": { + "compName": "GUIandor414#4", + "pinName": "C1" + }, + "path": [ + { + "x": 190.0, + "y": 440.0 + }, + { + "x": 190.0, + "y": 580.0 + }, + { + "x": 130.0, + "y": 580.0 + }, + { + "x": 130.0, + "y": 590.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#3", + "pinName": "Y2" + }, + "pin2": { + "compName": "GUIandor414#4", + "pinName": "C2" + }, + "path": [ + { + "x": 185.0, + "y": 450.0 + }, + { + "x": 185.0, + "y": 575.0 + }, + { + "x": 125.0, + "y": 575.0 + }, + { + "x": 125.0, + "y": 600.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#3", + "pinName": "Y3" + }, + "pin2": { + "compName": "GUIandor414#4", + "pinName": "C3" + }, + "path": [ + { + "x": 180.0, + "y": 460.0 + }, + { + "x": 180.0, + "y": 570.0 + }, + { + "x": 120.0, + "y": 570.0 + }, + { + "x": 120.0, + "y": 610.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#3", + "pinName": "Y4" + }, + "pin2": { + "compName": "GUIandor414#4", + "pinName": "C4" + }, + "path": [ + { + "x": 175.0, + "y": 470.0 + }, + { + "x": 175.0, + "y": 565.0 + }, + { + "x": 115.0, + "y": 565.0 + }, + { + "x": 115.0, + "y": 620.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#4", + "pinName": "Y1" + }, + "pin2": { + "compName": "GUIandor414#5", + "pinName": "C1" + }, + "path": [ + { + "x": 190.0, + "y": 590.0 + }, + { + "x": 190.0, + "y": 730.0 + }, + { + "x": 130.0, + "y": 730.0 + }, + { + "x": 130.0, + "y": 740.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#4", + "pinName": "Y2" + }, + "pin2": { + "compName": "GUIandor414#5", + "pinName": "C2" + }, + "path": [ + { + "x": 185.0, + "y": 600.0 + }, + { + "x": 185.0, + "y": 725.0 + }, + { + "x": 125.0, + "y": 725.0 + }, + { + "x": 125.0, + "y": 750.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#4", + "pinName": "Y3" + }, + "pin2": { + "compName": "GUIandor414#5", + "pinName": "C3" + }, + "path": [ + { + "x": 180.0, + "y": 610.0 + }, + { + "x": 180.0, + "y": 720.0 + }, + { + "x": 120.0, + "y": 720.0 + }, + { + "x": 120.0, + "y": 760.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#4", + "pinName": "Y4" + }, + "pin2": { + "compName": "GUIandor414#5", + "pinName": "C4" + }, + "path": [ + { + "x": 175.0, + "y": 620.0 + }, + { + "x": 175.0, + "y": 715.0 + }, + { + "x": 115.0, + "y": 715.0 + }, + { + "x": 115.0, + "y": 770.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#5", + "pinName": "Y1" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "QB1" + }, + "path": [ + { + "x": 190.0, + "y": 740.0 + }, + { + "x": 190.0, + "y": 880.0 + }, + { + "x": 325.0, + "y": 880.0 + }, + { + "x": 325.0, + "y": 450.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#5", + "pinName": "Y2" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "QB2" + }, + "path": [ + { + "x": 185.0, + "y": 750.0 + }, + { + "x": 185.0, + "y": 885.0 + }, + { + "x": 330.0, + "y": 885.0 + }, + { + "x": 330.0, + "y": 550.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#5", + "pinName": "Y3" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "QB3" + }, + "path": [ + { + "x": 180.0, + "y": 760.0 + }, + { + "x": 180.0, + "y": 890.0 + }, + { + "x": 335.0, + "y": 890.0 + }, + { + "x": 335.0, + "y": 650.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#5", + "pinName": "Y4" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "QB4" + }, + "path": [ + { + "x": 175.0, + "y": 770.0 + }, + { + "x": 175.0, + "y": 895.0 + }, + { + "x": 340.0, + "y": 895.0 + }, + { + "x": 340.0, + "y": 750.0 + } + ] + } + ] + }, + "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", + "symbolRendererParams": { + "centerText": "GUIram2", + "horizontalComponentCenter": 17.5, + "centerTextHeight": 5.0, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/components/GUIram4.json b/net.mograsim.logic.model.am2900/components/GUIram4.json new file mode 100644 index 00000000..99f606dd --- /dev/null +++ b/net.mograsim.logic.model.am2900/components/GUIram4.json @@ -0,0 +1,3197 @@ +mograsim version: 0.1.3 +{ + "width": 35.0, + "height": 130.0, + "interfacePins": [ + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "QA1", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 55.0 + }, + "name": "QB2", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 45.0 + }, + "name": "QB1", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 25.0 + }, + "name": "QA3", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 75.0 + }, + "name": "QB4", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "QA2", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 65.0 + }, + "name": "QB3", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 35.0 + }, + "name": "QA4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 95.0 + }, + "name": "D1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 45.0 + }, + "name": "B0", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 85.0 + }, + "name": "WE", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 105.0 + }, + "name": "D2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "A0", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 55.0 + }, + "name": "B1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 115.0 + }, + "name": "D3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "A1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 65.0 + }, + "name": "B2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 125.0 + }, + "name": "D4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "A2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 75.0 + }, + "name": "B3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 35.0 + }, + "name": "A3", + "logicWidth": 1 + } + ], + "submodel": { + "innerScale": 0.1, + "subComps": [ + { + "pos": { + "x": 69.0, + "y": 854.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#14", + "params": 1 + }, + { + "pos": { + "x": 64.0, + "y": 844.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#13", + "params": 1 + }, + { + "pos": { + "x": 39.0, + "y": 484.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#16", + "params": 1 + }, + { + "pos": { + "x": 74.0, + "y": 864.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#15", + "params": 1 + }, + { + "pos": { + "x": 49.0, + "y": 504.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#18", + "params": 1 + }, + { + "pos": { + "x": 44.0, + "y": 494.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#17", + "params": 1 + }, + { + "pos": { + "x": 54.0, + "y": 514.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#19", + "params": 1 + }, + { + "pos": { + "x": 155.0, + "y": 325.0 + }, + "id": "GUIand41", + "name": "GUIand41#2" + }, + { + "pos": { + "x": 224.0, + "y": 164.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#1", + "params": 1 + }, + { + "pos": { + "x": 229.0, + "y": 154.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#0", + "params": 1 + }, + { + "pos": { + "x": 214.0, + "y": 184.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#3", + "params": 1 + }, + { + "pos": { + "x": 219.0, + "y": 174.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#2", + "params": 1 + }, + { + "pos": { + "x": 64.0, + "y": 544.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#5", + "params": 1 + }, + { + "pos": { + "x": 59.0, + "y": 534.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#4", + "params": 1 + }, + { + "pos": { + "x": 74.0, + "y": 564.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#7", + "params": 1 + }, + { + "pos": { + "x": 69.0, + "y": 554.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#6", + "params": 1 + }, + { + "pos": { + "x": 64.0, + "y": 694.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#9", + "params": 1 + }, + { + "pos": { + "x": 59.0, + "y": 684.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#8", + "params": 1 + }, + { + "pos": { + "x": 69.0, + "y": 704.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#10", + "params": 1 + }, + { + "pos": { + "x": 235.0, + "y": 150.0 + }, + "id": "GUIand41", + "name": "GUIand41#0" + }, + { + "pos": { + "x": 59.0, + "y": 834.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#12", + "params": 1 + }, + { + "pos": { + "x": 250.0, + "y": 375.0 + }, + "id": "GUIand41", + "name": "GUIand41#1" + }, + { + "pos": { + "x": 74.0, + "y": 714.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#11", + "params": 1 + }, + { + "pos": { + "x": 155.0, + "y": 735.0 + }, + "id": "GUIandor414", + "name": "GUIandor414#5" + }, + { + "pos": { + "x": 44.0, + "y": 349.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#25", + "params": 1 + }, + { + "pos": { + "x": 39.0, + "y": 334.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#24", + "params": 1 + }, + { + "pos": { + "x": 155.0, + "y": 435.0 + }, + "id": "GUIandor414", + "name": "GUIandor414#3" + }, + { + "pos": { + "x": 54.0, + "y": 749.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#27", + "params": 1 + }, + { + "pos": { + "x": 155.0, + "y": 585.0 + }, + "id": "GUIandor414", + "name": "GUIandor414#4" + }, + { + "pos": { + "x": 49.0, + "y": 649.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#26", + "params": 1 + }, + { + "pos": { + "x": 80.0, + "y": 780.0 + }, + "id": "GUIram2", + "name": "GUIram2#3" + }, + { + "pos": { + "x": 80.0, + "y": 630.0 + }, + "id": "GUIram2", + "name": "GUIram2#2" + }, + { + "pos": { + "x": 55.0, + "y": 150.0 + }, + "id": "GUIdemux2", + "name": "GUIdemux2#1" + }, + { + "pos": { + "x": 80.0, + "y": 480.0 + }, + "id": "GUIram2", + "name": "GUIram2#1" + }, + { + "pos": { + "x": 80.0, + "y": 330.0 + }, + "id": "GUIram2", + "name": "GUIram2#0" + }, + { + "pos": { + "x": 250.0, + "y": 635.0 + }, + "id": "GUIandor414", + "name": "GUIandor414#1" + }, + { + "pos": { + "x": 55.0, + "y": 45.0 + }, + "id": "GUIdemux2", + "name": "GUIdemux2#0" + }, + { + "pos": { + "x": 250.0, + "y": 785.0 + }, + "id": "GUIandor414", + "name": "GUIandor414#2" + }, + { + "pos": { + "x": 250.0, + "y": 485.0 + }, + "id": "GUIandor414", + "name": "GUIandor414#0" + }, + { + "pos": { + "x": 44.0, + "y": 644.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#21", + "params": 1 + }, + { + "pos": { + "x": 39.0, + "y": 634.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#20", + "params": 1 + }, + { + "pos": { + "x": 54.0, + "y": 664.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#23", + "params": 1 + }, + { + "pos": { + "x": 49.0, + "y": 654.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#22", + "params": 1 + } + ], + "innerWires": [ + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A0" + }, + "pin2": { + "compName": "GUIdemux2#0", + "pinName": "S0" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A1" + }, + "pin2": { + "compName": "GUIdemux2#0", + "pinName": "S1" + }, + "path": [ + { + "x": 10.0, + "y": 150.0 + }, + { + "x": 10.0, + "y": 60.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B0" + }, + "pin2": { + "compName": "GUIdemux2#1", + "pinName": "S0" + }, + "path": [ + { + "x": 5.0, + "y": 450.0 + }, + { + "x": 5.0, + "y": 155.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B1" + }, + "pin2": { + "compName": "GUIdemux2#1", + "pinName": "S1" + }, + "path": [ + { + "x": 10.0, + "y": 550.0 + }, + { + "x": 10.0, + "y": 165.0 + } + ] + }, + { + "pin1": { + "compName": "GUIdemux2#1", + "pinName": "Y00" + }, + "pin2": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdemux2#1", + "pinName": "Y01" + }, + "pin2": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdemux2#1", + "pinName": "Y10" + }, + "pin2": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdemux2#1", + "pinName": "Y11" + }, + "pin2": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUIand41#0", + "pinName": "A1" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUIand41#0", + "pinName": "A2" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUIand41#0", + "pinName": "A3" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "GUIand41#0", + "pinName": "A4" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "WE" + }, + "pin2": { + "compName": "GUIand41#0", + "pinName": "B" + }, + "path": [ + { + "x": 15.0, + "y": 850.0 + }, + { + "x": 15.0, + "y": 195.0 + } + ] + }, + { + "pin1": { + "compName": "GUIand41#0", + "pinName": "Y1" + }, + "pin2": { + "compName": "GUIram2#0", + "pinName": "WE" + }, + "path": [ + { + "x": 290.0, + "y": 155.0 + }, + { + "x": 290.0, + "y": 230.0 + }, + { + "x": 35.0, + "y": 230.0 + }, + { + "x": 35.0, + "y": 375.0 + } + ] + }, + { + "pin1": { + "compName": "GUIand41#0", + "pinName": "Y2" + }, + "pin2": { + "compName": "GUIram2#1", + "pinName": "WE" + }, + "path": [ + { + "x": 285.0, + "y": 165.0 + }, + { + "x": 285.0, + "y": 225.0 + }, + { + "x": 30.0, + "y": 225.0 + }, + { + "x": 30.0, + "y": 525.0 + } + ] + }, + { + "pin1": { + "compName": "GUIand41#0", + "pinName": "Y3" + }, + "pin2": { + "compName": "GUIram2#2", + "pinName": "WE" + }, + "path": [ + { + "x": 280.0, + "y": 175.0 + }, + { + "x": 280.0, + "y": 220.0 + }, + { + "x": 25.0, + "y": 220.0 + }, + { + "x": 25.0, + "y": 675.0 + } + ] + }, + { + "pin1": { + "compName": "GUIand41#0", + "pinName": "Y4" + }, + "pin2": { + "compName": "GUIram2#3", + "pinName": "WE" + }, + "path": [ + { + "x": 275.0, + "y": 185.0 + }, + { + "x": 275.0, + "y": 215.0 + }, + { + "x": 20.0, + "y": 215.0 + }, + { + "x": 20.0, + "y": 825.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#16", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#24", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#24", + "pinName": "" + }, + "pin2": { + "compName": "GUIram2#0", + "pinName": "A0" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#17", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#25", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#25", + "pinName": "" + }, + "pin2": { + "compName": "GUIram2#0", + "pinName": "A1" + }, + "path": [ + { + "x": 45.0, + "y": 345.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#18", + "pinName": "" + }, + "pin2": { + "compName": "GUIram2#0", + "pinName": "B0" + }, + "path": [ + { + "x": 50.0, + "y": 355.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#19", + "pinName": "" + }, + "pin2": { + "compName": "GUIram2#0", + "pinName": "B1" + }, + "path": [ + { + "x": 55.0, + "y": 365.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#16", + "pinName": "" + }, + "pin2": { + "compName": "GUIram2#1", + "pinName": "A0" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#17", + "pinName": "" + }, + "pin2": { + "compName": "GUIram2#1", + "pinName": "A1" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#18", + "pinName": "" + }, + "pin2": { + "compName": "GUIram2#1", + "pinName": "B0" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#19", + "pinName": "" + }, + "pin2": { + "compName": "GUIram2#1", + "pinName": "B1" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#16", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#20", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#17", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#21", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#18", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#26", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B2" + }, + "pin2": { + "compName": "WireCrossPoint#26", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#26", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#22", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#19", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#23", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#20", + "pinName": "" + }, + "pin2": { + "compName": "GUIram2#2", + "pinName": "A0" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#21", + "pinName": "" + }, + "pin2": { + "compName": "GUIram2#2", + "pinName": "A1" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#22", + "pinName": "" + }, + "pin2": { + "compName": "GUIram2#2", + "pinName": "B0" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#23", + "pinName": "" + }, + "pin2": { + "compName": "GUIram2#2", + "pinName": "B1" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#20", + "pinName": "" + }, + "pin2": { + "compName": "GUIram2#3", + "pinName": "A0" + }, + "path": [ + { + "x": 40.0, + "y": 785.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#21", + "pinName": "" + }, + "pin2": { + "compName": "GUIram2#3", + "pinName": "A1" + }, + "path": [ + { + "x": 45.0, + "y": 795.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#22", + "pinName": "" + }, + "pin2": { + "compName": "GUIram2#3", + "pinName": "B0" + }, + "path": [ + { + "x": 50.0, + "y": 805.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#23", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#27", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#27", + "pinName": "" + }, + "pin2": { + "compName": "GUIram2#3", + "pinName": "B1" + }, + "path": [ + { + "x": 55.0, + "y": 815.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A2" + }, + "pin2": { + "compName": "WireCrossPoint#24", + "pinName": "" + }, + "path": [ + { + "x": 40.0, + "y": 250.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A3" + }, + "pin2": { + "compName": "WireCrossPoint#25", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B3" + }, + "pin2": { + "compName": "WireCrossPoint#27", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "pin2": { + "compName": "GUIram2#0", + "pinName": "D1" + }, + "path": [ + { + "x": 60.0, + "y": 385.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "pin2": { + "compName": "GUIram2#0", + "pinName": "D2" + }, + "path": [ + { + "x": 65.0, + "y": 395.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "pin2": { + "compName": "GUIram2#0", + "pinName": "D3" + }, + "path": [ + { + "x": 70.0, + "y": 405.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "pin2": { + "compName": "GUIram2#0", + "pinName": "D4" + }, + "path": [ + { + "x": 75.0, + "y": 415.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "pin2": { + "compName": "GUIram2#1", + "pinName": "D1" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "pin2": { + "compName": "GUIram2#1", + "pinName": "D2" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "pin2": { + "compName": "GUIram2#1", + "pinName": "D3" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "pin2": { + "compName": "GUIram2#1", + "pinName": "D4" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#8", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#9", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#10", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#11", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#8", + "pinName": "" + }, + "pin2": { + "compName": "GUIram2#2", + "pinName": "D1" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#9", + "pinName": "" + }, + "pin2": { + "compName": "GUIram2#2", + "pinName": "D2" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#10", + "pinName": "" + }, + "pin2": { + "compName": "GUIram2#2", + "pinName": "D3" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#11", + "pinName": "" + }, + "pin2": { + "compName": "GUIram2#2", + "pinName": "D4" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#8", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#12", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#9", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#13", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#10", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#14", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#11", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#15", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#12", + "pinName": "" + }, + "pin2": { + "compName": "GUIram2#3", + "pinName": "D1" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#13", + "pinName": "" + }, + "pin2": { + "compName": "GUIram2#3", + "pinName": "D2" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#14", + "pinName": "" + }, + "pin2": { + "compName": "GUIram2#3", + "pinName": "D3" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#15", + "pinName": "" + }, + "pin2": { + "compName": "GUIram2#3", + "pinName": "D4" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "D1" + }, + "pin2": { + "compName": "WireCrossPoint#12", + "pinName": "" + }, + "path": [ + { + "x": 60.0, + "y": 950.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "D2" + }, + "pin2": { + "compName": "WireCrossPoint#13", + "pinName": "" + }, + "path": [ + { + "x": 65.0, + "y": 1050.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "D3" + }, + "pin2": { + "compName": "WireCrossPoint#14", + "pinName": "" + }, + "path": [ + { + "x": 70.0, + "y": 1150.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "D4" + }, + "pin2": { + "compName": "WireCrossPoint#15", + "pinName": "" + }, + "path": [ + { + "x": 75.0, + "y": 1250.0 + } + ] + }, + { + "pin1": { + "compName": "GUIdemux2#0", + "pinName": "Y00" + }, + "pin2": { + "compName": "GUIand41#2", + "pinName": "B" + }, + "path": [ + { + "x": 135.0, + "y": 50.0 + }, + { + "x": 135.0, + "y": 370.0 + } + ] + }, + { + "pin1": { + "compName": "GUIdemux2#0", + "pinName": "Y01" + }, + "pin2": { + "compName": "GUIandor414#3", + "pinName": "B" + }, + "path": [ + { + "x": 130.0, + "y": 60.0 + }, + { + "x": 130.0, + "y": 520.0 + } + ] + }, + { + "pin1": { + "compName": "GUIdemux2#0", + "pinName": "Y10" + }, + "pin2": { + "compName": "GUIandor414#4", + "pinName": "B" + }, + "path": [ + { + "x": 125.0, + "y": 70.0 + }, + { + "x": 125.0, + "y": 670.0 + } + ] + }, + { + "pin1": { + "compName": "GUIdemux2#0", + "pinName": "Y11" + }, + "pin2": { + "compName": "GUIandor414#5", + "pinName": "B" + }, + "path": [ + { + "x": 120.0, + "y": 80.0 + }, + { + "x": 120.0, + "y": 820.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUIand41#1", + "pinName": "B" + }, + "path": [ + { + "x": 230.0, + "y": 420.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUIandor414#0", + "pinName": "B" + }, + "path": [ + { + "x": 225.0, + "y": 570.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUIandor414#1", + "pinName": "B" + }, + "path": [ + { + "x": 220.0, + "y": 720.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "GUIandor414#2", + "pinName": "B" + }, + "path": [ + { + "x": 215.0, + "y": 870.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram2#0", + "pinName": "QB1" + }, + "pin2": { + "compName": "GUIand41#1", + "pinName": "A1" + }, + "path": [ + { + "x": 140.0, + "y": 375.0 + }, + { + "x": 140.0, + "y": 380.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram2#0", + "pinName": "QB2" + }, + "pin2": { + "compName": "GUIand41#1", + "pinName": "A2" + }, + "path": [ + { + "x": 140.0, + "y": 385.0 + }, + { + "x": 140.0, + "y": 390.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram2#0", + "pinName": "QB3" + }, + "pin2": { + "compName": "GUIand41#1", + "pinName": "A3" + }, + "path": [ + { + "x": 140.0, + "y": 395.0 + }, + { + "x": 140.0, + "y": 400.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram2#0", + "pinName": "QB4" + }, + "pin2": { + "compName": "GUIand41#1", + "pinName": "A4" + }, + "path": [ + { + "x": 140.0, + "y": 405.0 + }, + { + "x": 140.0, + "y": 410.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram2#1", + "pinName": "QB1" + }, + "pin2": { + "compName": "GUIandor414#0", + "pinName": "A1" + }, + "path": [ + { + "x": 140.0, + "y": 525.0 + }, + { + "x": 140.0, + "y": 530.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram2#1", + "pinName": "QB2" + }, + "pin2": { + "compName": "GUIandor414#0", + "pinName": "A2" + }, + "path": [ + { + "x": 140.0, + "y": 535.0 + }, + { + "x": 140.0, + "y": 540.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram2#1", + "pinName": "QB3" + }, + "pin2": { + "compName": "GUIandor414#0", + "pinName": "A3" + }, + "path": [ + { + "x": 140.0, + "y": 545.0 + }, + { + "x": 140.0, + "y": 550.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram2#1", + "pinName": "QB4" + }, + "pin2": { + "compName": "GUIandor414#0", + "pinName": "A4" + }, + "path": [ + { + "x": 140.0, + "y": 555.0 + }, + { + "x": 140.0, + "y": 560.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram2#2", + "pinName": "QB1" + }, + "pin2": { + "compName": "GUIandor414#1", + "pinName": "A1" + }, + "path": [ + { + "x": 140.0, + "y": 675.0 + }, + { + "x": 140.0, + "y": 680.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram2#2", + "pinName": "QB2" + }, + "pin2": { + "compName": "GUIandor414#1", + "pinName": "A2" + }, + "path": [ + { + "x": 140.0, + "y": 685.0 + }, + { + "x": 140.0, + "y": 690.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram2#2", + "pinName": "QB3" + }, + "pin2": { + "compName": "GUIandor414#1", + "pinName": "A3" + }, + "path": [ + { + "x": 140.0, + "y": 695.0 + }, + { + "x": 140.0, + "y": 700.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram2#2", + "pinName": "QB4" + }, + "pin2": { + "compName": "GUIandor414#1", + "pinName": "A4" + }, + "path": [ + { + "x": 140.0, + "y": 705.0 + }, + { + "x": 140.0, + "y": 710.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram2#3", + "pinName": "QB1" + }, + "pin2": { + "compName": "GUIandor414#2", + "pinName": "A1" + }, + "path": [ + { + "x": 140.0, + "y": 825.0 + }, + { + "x": 140.0, + "y": 830.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram2#3", + "pinName": "QB2" + }, + "pin2": { + "compName": "GUIandor414#2", + "pinName": "A2" + }, + "path": [ + { + "x": 140.0, + "y": 835.0 + }, + { + "x": 140.0, + "y": 840.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram2#3", + "pinName": "QB3" + }, + "pin2": { + "compName": "GUIandor414#2", + "pinName": "A3" + }, + "path": [ + { + "x": 140.0, + "y": 845.0 + }, + { + "x": 140.0, + "y": 850.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram2#3", + "pinName": "QB4" + }, + "pin2": { + "compName": "GUIandor414#2", + "pinName": "A4" + }, + "path": [ + { + "x": 140.0, + "y": 855.0 + }, + { + "x": 140.0, + "y": 860.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram2#0", + "pinName": "QA1" + }, + "pin2": { + "compName": "GUIand41#2", + "pinName": "A1" + }, + "path": [ + { + "x": 140.0, + "y": 335.0 + }, + { + "x": 140.0, + "y": 330.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram2#0", + "pinName": "QA2" + }, + "pin2": { + "compName": "GUIand41#2", + "pinName": "A2" + }, + "path": [ + { + "x": 140.0, + "y": 345.0 + }, + { + "x": 140.0, + "y": 340.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram2#0", + "pinName": "QA3" + }, + "pin2": { + "compName": "GUIand41#2", + "pinName": "A3" + }, + "path": [ + { + "x": 140.0, + "y": 355.0 + }, + { + "x": 140.0, + "y": 350.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram2#0", + "pinName": "QA4" + }, + "pin2": { + "compName": "GUIand41#2", + "pinName": "A4" + }, + "path": [ + { + "x": 140.0, + "y": 365.0 + }, + { + "x": 140.0, + "y": 360.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram2#1", + "pinName": "QA1" + }, + "pin2": { + "compName": "GUIandor414#3", + "pinName": "A1" + }, + "path": [ + { + "x": 140.0, + "y": 485.0 + }, + { + "x": 140.0, + "y": 480.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram2#1", + "pinName": "QA2" + }, + "pin2": { + "compName": "GUIandor414#3", + "pinName": "A2" + }, + "path": [ + { + "x": 140.0, + "y": 495.0 + }, + { + "x": 140.0, + "y": 490.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram2#1", + "pinName": "QA3" + }, + "pin2": { + "compName": "GUIandor414#3", + "pinName": "A3" + }, + "path": [ + { + "x": 140.0, + "y": 505.0 + }, + { + "x": 140.0, + "y": 500.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram2#1", + "pinName": "QA4" + }, + "pin2": { + "compName": "GUIandor414#3", + "pinName": "A4" + }, + "path": [ + { + "x": 140.0, + "y": 515.0 + }, + { + "x": 140.0, + "y": 510.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram2#2", + "pinName": "QA1" + }, + "pin2": { + "compName": "GUIandor414#4", + "pinName": "A1" + }, + "path": [ + { + "x": 140.0, + "y": 635.0 + }, + { + "x": 140.0, + "y": 630.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram2#2", + "pinName": "QA2" + }, + "pin2": { + "compName": "GUIandor414#4", + "pinName": "A2" + }, + "path": [ + { + "x": 140.0, + "y": 645.0 + }, + { + "x": 140.0, + "y": 640.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram2#2", + "pinName": "QA3" + }, + "pin2": { + "compName": "GUIandor414#4", + "pinName": "A3" + }, + "path": [ + { + "x": 140.0, + "y": 655.0 + }, + { + "x": 140.0, + "y": 650.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram2#2", + "pinName": "QA4" + }, + "pin2": { + "compName": "GUIandor414#4", + "pinName": "A4" + }, + "path": [ + { + "x": 140.0, + "y": 665.0 + }, + { + "x": 140.0, + "y": 660.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram2#3", + "pinName": "QA1" + }, + "pin2": { + "compName": "GUIandor414#5", + "pinName": "A1" + }, + "path": [ + { + "x": 140.0, + "y": 785.0 + }, + { + "x": 140.0, + "y": 780.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram2#3", + "pinName": "QA2" + }, + "pin2": { + "compName": "GUIandor414#5", + "pinName": "A2" + }, + "path": [ + { + "x": 140.0, + "y": 795.0 + }, + { + "x": 140.0, + "y": 790.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram2#3", + "pinName": "QA3" + }, + "pin2": { + "compName": "GUIandor414#5", + "pinName": "A3" + }, + "path": [ + { + "x": 140.0, + "y": 805.0 + }, + { + "x": 140.0, + "y": 800.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram2#3", + "pinName": "QA4" + }, + "pin2": { + "compName": "GUIandor414#5", + "pinName": "A4" + }, + "path": [ + { + "x": 140.0, + "y": 815.0 + }, + { + "x": 140.0, + "y": 810.0 + } + ] + }, + { + "pin1": { + "compName": "GUIand41#1", + "pinName": "Y1" + }, + "pin2": { + "compName": "GUIandor414#0", + "pinName": "C1" + }, + "path": [ + { + "x": 305.0, + "y": 380.0 + }, + { + "x": 305.0, + "y": 445.0 + }, + { + "x": 245.0, + "y": 445.0 + }, + { + "x": 245.0, + "y": 490.0 + } + ] + }, + { + "pin1": { + "compName": "GUIand41#1", + "pinName": "Y2" + }, + "pin2": { + "compName": "GUIandor414#0", + "pinName": "C2" + }, + "path": [ + { + "x": 300.0, + "y": 390.0 + }, + { + "x": 300.0, + "y": 440.0 + }, + { + "x": 240.0, + "y": 440.0 + }, + { + "x": 240.0, + "y": 500.0 + } + ] + }, + { + "pin1": { + "compName": "GUIand41#1", + "pinName": "Y3" + }, + "pin2": { + "compName": "GUIandor414#0", + "pinName": "C3" + }, + "path": [ + { + "x": 295.0, + "y": 400.0 + }, + { + "x": 295.0, + "y": 435.0 + }, + { + "x": 235.0, + "y": 435.0 + }, + { + "x": 235.0, + "y": 510.0 + } + ] + }, + { + "pin1": { + "compName": "GUIand41#1", + "pinName": "Y4" + }, + "pin2": { + "compName": "GUIandor414#0", + "pinName": "C4" + }, + "path": [ + { + "x": 290.0, + "y": 410.0 + }, + { + "x": 290.0, + "y": 430.0 + }, + { + "x": 230.0, + "y": 430.0 + }, + { + "x": 230.0, + "y": 520.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#0", + "pinName": "Y1" + }, + "pin2": { + "compName": "GUIandor414#1", + "pinName": "C1" + }, + "path": [ + { + "x": 305.0, + "y": 490.0 + }, + { + "x": 305.0, + "y": 595.0 + }, + { + "x": 245.0, + "y": 595.0 + }, + { + "x": 245.0, + "y": 640.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#0", + "pinName": "Y2" + }, + "pin2": { + "compName": "GUIandor414#1", + "pinName": "C2" + }, + "path": [ + { + "x": 300.0, + "y": 500.0 + }, + { + "x": 300.0, + "y": 590.0 + }, + { + "x": 240.0, + "y": 590.0 + }, + { + "x": 240.0, + "y": 650.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#0", + "pinName": "Y3" + }, + "pin2": { + "compName": "GUIandor414#1", + "pinName": "C3" + }, + "path": [ + { + "x": 295.0, + "y": 510.0 + }, + { + "x": 295.0, + "y": 585.0 + }, + { + "x": 235.0, + "y": 585.0 + }, + { + "x": 235.0, + "y": 660.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#0", + "pinName": "Y4" + }, + "pin2": { + "compName": "GUIandor414#1", + "pinName": "C4" + }, + "path": [ + { + "x": 290.0, + "y": 520.0 + }, + { + "x": 290.0, + "y": 580.0 + }, + { + "x": 230.0, + "y": 580.0 + }, + { + "x": 230.0, + "y": 670.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#1", + "pinName": "Y1" + }, + "pin2": { + "compName": "GUIandor414#2", + "pinName": "C1" + }, + "path": [ + { + "x": 305.0, + "y": 640.0 + }, + { + "x": 305.0, + "y": 745.0 + }, + { + "x": 245.0, + "y": 745.0 + }, + { + "x": 245.0, + "y": 790.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#1", + "pinName": "Y2" + }, + "pin2": { + "compName": "GUIandor414#2", + "pinName": "C2" + }, + "path": [ + { + "x": 300.0, + "y": 650.0 + }, + { + "x": 300.0, + "y": 740.0 + }, + { + "x": 240.0, + "y": 740.0 + }, + { + "x": 240.0, + "y": 800.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#1", + "pinName": "Y3" + }, + "pin2": { + "compName": "GUIandor414#2", + "pinName": "C3" + }, + "path": [ + { + "x": 295.0, + "y": 660.0 + }, + { + "x": 295.0, + "y": 735.0 + }, + { + "x": 235.0, + "y": 735.0 + }, + { + "x": 235.0, + "y": 810.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#1", + "pinName": "Y4" + }, + "pin2": { + "compName": "GUIandor414#2", + "pinName": "C4" + }, + "path": [ + { + "x": 290.0, + "y": 670.0 + }, + { + "x": 290.0, + "y": 730.0 + }, + { + "x": 230.0, + "y": 730.0 + }, + { + "x": 230.0, + "y": 820.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#2", + "pinName": "Y1" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "QB1" + }, + "path": [ + { + "x": 330.0, + "y": 790.0 + }, + { + "x": 330.0, + "y": 450.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#2", + "pinName": "Y2" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "QB2" + }, + "path": [ + { + "x": 335.0, + "y": 800.0 + }, + { + "x": 335.0, + "y": 550.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#2", + "pinName": "Y3" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "QB3" + }, + "path": [ + { + "x": 340.0, + "y": 810.0 + }, + { + "x": 340.0, + "y": 650.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#2", + "pinName": "Y4" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "QB4" + }, + "path": [ + { + "x": 345.0, + "y": 820.0 + }, + { + "x": 345.0, + "y": 750.0 + } + ] + }, + { + "pin1": { + "compName": "GUIand41#2", + "pinName": "Y1" + }, + "pin2": { + "compName": "GUIandor414#3", + "pinName": "C1" + }, + "path": [ + { + "x": 210.0, + "y": 330.0 + }, + { + "x": 210.0, + "y": 430.0 + }, + { + "x": 150.0, + "y": 430.0 + }, + { + "x": 150.0, + "y": 440.0 + } + ] + }, + { + "pin1": { + "compName": "GUIand41#2", + "pinName": "Y2" + }, + "pin2": { + "compName": "GUIandor414#3", + "pinName": "C2" + }, + "path": [ + { + "x": 205.0, + "y": 340.0 + }, + { + "x": 205.0, + "y": 425.0 + }, + { + "x": 145.0, + "y": 425.0 + }, + { + "x": 145.0, + "y": 450.0 + } + ] + }, + { + "pin1": { + "compName": "GUIand41#2", + "pinName": "Y3" + }, + "pin2": { + "compName": "GUIandor414#3", + "pinName": "C3" + }, + "path": [ + { + "x": 200.0, + "y": 350.0 + }, + { + "x": 200.0, + "y": 420.0 + }, + { + "x": 140.0, + "y": 420.0 + }, + { + "x": 140.0, + "y": 460.0 + } + ] + }, + { + "pin1": { + "compName": "GUIand41#2", + "pinName": "Y4" + }, + "pin2": { + "compName": "GUIandor414#3", + "pinName": "C4" + }, + "path": [ + { + "x": 195.0, + "y": 360.0 + }, + { + "x": 195.0, + "y": 415.0 + }, + { + "x": 135.0, + "y": 415.0 + }, + { + "x": 135.0, + "y": 470.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#3", + "pinName": "Y1" + }, + "pin2": { + "compName": "GUIandor414#4", + "pinName": "C1" + }, + "path": [ + { + "x": 210.0, + "y": 440.0 + }, + { + "x": 210.0, + "y": 580.0 + }, + { + "x": 150.0, + "y": 580.0 + }, + { + "x": 150.0, + "y": 590.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#3", + "pinName": "Y2" + }, + "pin2": { + "compName": "GUIandor414#4", + "pinName": "C2" + }, + "path": [ + { + "x": 205.0, + "y": 450.0 + }, + { + "x": 205.0, + "y": 575.0 + }, + { + "x": 145.0, + "y": 575.0 + }, + { + "x": 145.0, + "y": 600.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#3", + "pinName": "Y3" + }, + "pin2": { + "compName": "GUIandor414#4", + "pinName": "C3" + }, + "path": [ + { + "x": 200.0, + "y": 460.0 + }, + { + "x": 200.0, + "y": 570.0 + }, + { + "x": 140.0, + "y": 570.0 + }, + { + "x": 140.0, + "y": 610.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#3", + "pinName": "Y4" + }, + "pin2": { + "compName": "GUIandor414#4", + "pinName": "C4" + }, + "path": [ + { + "x": 195.0, + "y": 470.0 + }, + { + "x": 195.0, + "y": 565.0 + }, + { + "x": 135.0, + "y": 565.0 + }, + { + "x": 135.0, + "y": 620.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#4", + "pinName": "Y1" + }, + "pin2": { + "compName": "GUIandor414#5", + "pinName": "C1" + }, + "path": [ + { + "x": 210.0, + "y": 590.0 + }, + { + "x": 210.0, + "y": 730.0 + }, + { + "x": 150.0, + "y": 730.0 + }, + { + "x": 150.0, + "y": 740.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#4", + "pinName": "Y2" + }, + "pin2": { + "compName": "GUIandor414#5", + "pinName": "C2" + }, + "path": [ + { + "x": 205.0, + "y": 600.0 + }, + { + "x": 205.0, + "y": 725.0 + }, + { + "x": 145.0, + "y": 725.0 + }, + { + "x": 145.0, + "y": 750.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#4", + "pinName": "Y3" + }, + "pin2": { + "compName": "GUIandor414#5", + "pinName": "C3" + }, + "path": [ + { + "x": 200.0, + "y": 610.0 + }, + { + "x": 200.0, + "y": 720.0 + }, + { + "x": 140.0, + "y": 720.0 + }, + { + "x": 140.0, + "y": 760.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#4", + "pinName": "Y4" + }, + "pin2": { + "compName": "GUIandor414#5", + "pinName": "C4" + }, + "path": [ + { + "x": 195.0, + "y": 620.0 + }, + { + "x": 195.0, + "y": 715.0 + }, + { + "x": 135.0, + "y": 715.0 + }, + { + "x": 135.0, + "y": 770.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#5", + "pinName": "Y1" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "QA1" + }, + "path": [ + { + "x": 210.0, + "y": 740.0 + }, + { + "x": 210.0, + "y": 880.0 + }, + { + "x": 310.0, + "y": 880.0 + }, + { + "x": 310.0, + "y": 50.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#5", + "pinName": "Y2" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "QA2" + }, + "path": [ + { + "x": 205.0, + "y": 750.0 + }, + { + "x": 205.0, + "y": 885.0 + }, + { + "x": 315.0, + "y": 885.0 + }, + { + "x": 315.0, + "y": 150.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#5", + "pinName": "Y3" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "QA3" + }, + "path": [ + { + "x": 200.0, + "y": 760.0 + }, + { + "x": 200.0, + "y": 890.0 + }, + { + "x": 320.0, + "y": 890.0 + }, + { + "x": 320.0, + "y": 250.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#5", + "pinName": "Y4" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "QA4" + }, + "path": [ + { + "x": 195.0, + "y": 770.0 + }, + { + "x": 195.0, + "y": 895.0 + }, + { + "x": 325.0, + "y": 895.0 + }, + { + "x": 325.0, + "y": 350.0 + } + ] + } + ] + }, + "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", + "symbolRendererParams": { + "centerText": "GUIram4", + "horizontalComponentCenter": 17.5, + "centerTextHeight": 5.0, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/components/GUIsel2_4.json b/net.mograsim.logic.model.am2900/components/GUIsel2_4.json new file mode 100644 index 00000000..219e1b9d --- /dev/null +++ b/net.mograsim.logic.model.am2900/components/GUIsel2_4.json @@ -0,0 +1,812 @@ +mograsim version: 0.1.3 +{ + "width": 35.0, + "height": 100.0, + "interfacePins": [ + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "SA", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "SB", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 65.0 + }, + "name": "B1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "A1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 75.0 + }, + "name": "B2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 35.0 + }, + "name": "A2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 85.0 + }, + "name": "B3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 45.0 + }, + "name": "A3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 95.0 + }, + "name": "B4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 55.0 + }, + "name": "A4", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Y1", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "Y2", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 25.0 + }, + "name": "Y3", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 35.0 + }, + "name": "Y4", + "logicWidth": 1 + } + ], + "submodel": { + "innerScale": 0.4, + "subComps": [ + { + "pos": { + "x": 20.0, + "y": 52.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#1", + "params": 1 + }, + { + "pos": { + "x": 20.0, + "y": 2.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#0", + "params": 1 + }, + { + "pos": { + "x": 20.0, + "y": 152.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#3", + "params": 1 + }, + { + "pos": { + "x": 20.0, + "y": 102.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#2", + "params": 1 + }, + { + "pos": { + "x": 65.0, + "y": 77.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#11", + "params": 1 + }, + { + "pos": { + "x": 65.0, + "y": 52.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#10", + "params": 1 + }, + { + "pos": { + "x": 6.5, + "y": 66.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#1", + "params": 1 + }, + { + "pos": { + "x": 6.5, + "y": 16.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#0", + "params": 1 + }, + { + "pos": { + "x": 4.0, + "y": 41.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#3", + "params": 1 + }, + { + "pos": { + "x": 6.5, + "y": 116.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#2", + "params": 1 + }, + { + "pos": { + "x": 4.0, + "y": 141.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#5", + "params": 1 + }, + { + "pos": { + "x": 4.0, + "y": 91.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#4", + "params": 1 + }, + { + "pos": { + "x": 65.0, + "y": 27.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#9", + "params": 1 + }, + { + "pos": { + "x": 65.0, + "y": 2.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#8", + "params": 1 + }, + { + "pos": { + "x": 20.0, + "y": 77.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#5", + "params": 1 + }, + { + "pos": { + "x": 20.0, + "y": 27.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#4", + "params": 1 + }, + { + "pos": { + "x": 20.0, + "y": 177.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#7", + "params": 1 + }, + { + "pos": { + "x": 20.0, + "y": 127.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#6", + "params": 1 + } + ], + "innerWires": [ + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A1" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "A" + }, + "path": [ + { + "x": 15.0, + "y": 62.5 + }, + { + "x": 15.0, + "y": 7.5 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A2" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "A" + }, + "path": [ + { + "x": 17.5, + "y": 87.5 + }, + { + "x": 17.5, + "y": 57.5 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A3" + }, + "pin2": { + "compName": "GUINandGate#2", + "pinName": "A" + }, + "path": [ + { + "x": 17.5, + "y": 112.5 + }, + { + "x": 17.5, + "y": 107.5 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A4" + }, + "pin2": { + "compName": "GUINandGate#3", + "pinName": "A" + }, + "path": [ + { + "x": 17.5, + "y": 137.5 + }, + { + "x": 17.5, + "y": 157.5 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B1" + }, + "pin2": { + "compName": "GUINandGate#4", + "pinName": "A" + }, + "path": [ + { + "x": 10.0, + "y": 162.5 + }, + { + "x": 10.0, + "y": 32.5 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B2" + }, + "pin2": { + "compName": "GUINandGate#5", + "pinName": "A" + }, + "path": [ + { + "x": 12.5, + "y": 187.5 + }, + { + "x": 12.5, + "y": 82.5 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B3" + }, + "pin2": { + "compName": "GUINandGate#6", + "pinName": "A" + }, + "path": [ + { + "x": 15.0, + "y": 212.5 + }, + { + "x": 15.0, + "y": 132.5 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B4" + }, + "pin2": { + "compName": "GUINandGate#7", + "pinName": "A" + }, + "path": [ + { + "x": 10.0, + "y": 237.5 + }, + { + "x": 10.0, + "y": 182.5 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "SA" + }, + "pin2": { + "compName": "WireCrossPoint#0", + "pinName": "" + } + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "SB" + }, + "pin2": { + "compName": "WireCrossPoint#3", + "pinName": "" + } + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#1", + "pinName": "" + } + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "B" + } + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#2", + "pinName": "" + } + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "B" + } + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#2", + "pinName": "B" + } + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#3", + "pinName": "B" + }, + "path": [ + { + "x": 7.5, + "y": 167.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#4", + "pinName": "" + } + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#4", + "pinName": "B" + } + }, + { + "pin1": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#5", + "pinName": "" + } + }, + { + "pin1": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#5", + "pinName": "B" + } + }, + { + "pin1": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#6", + "pinName": "B" + } + }, + { + "pin1": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#7", + "pinName": "B" + }, + "path": [ + { + "x": 5.0, + "y": 192.5 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#0", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#8", + "pinName": "A" + }, + "path": [ + { + "x": 42.5, + "y": 12.5 + }, + { + "x": 42.5, + "y": 7.5 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#4", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#8", + "pinName": "B" + }, + "path": [ + { + "x": 45.0, + "y": 37.5 + }, + { + "x": 45.0, + "y": 17.5 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#1", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#9", + "pinName": "A" + }, + "path": [ + { + "x": 47.5, + "y": 62.5 + }, + { + "x": 47.5, + "y": 32.5 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#5", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#9", + "pinName": "B" + }, + "path": [ + { + "x": 50.0, + "y": 87.5 + }, + { + "x": 50.0, + "y": 42.5 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#2", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#10", + "pinName": "A" + }, + "path": [ + { + "x": 52.5, + "y": 112.5 + }, + { + "x": 52.5, + "y": 57.5 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#6", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#10", + "pinName": "B" + }, + "path": [ + { + "x": 55.0, + "y": 137.5 + }, + { + "x": 55.0, + "y": 67.5 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#3", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#11", + "pinName": "A" + }, + "path": [ + { + "x": 57.5, + "y": 162.5 + }, + { + "x": 57.5, + "y": 82.5 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#7", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#11", + "pinName": "B" + }, + "path": [ + { + "x": 60.0, + "y": 187.5 + }, + { + "x": 60.0, + "y": 92.5 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#8", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y1" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUINandGate#9", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y2" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUINandGate#10", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y3" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUINandGate#11", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y4" + }, + "path": [] + } + ] + }, + "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", + "symbolRendererParams": { + "centerText": "GUIsel2_4", + "horizontalComponentCenter": 17.5, + "centerTextHeight": 5.0, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/components/GUIsel3_4.json b/net.mograsim.logic.model.am2900/components/GUIsel3_4.json new file mode 100644 index 00000000..1cae789a --- /dev/null +++ b/net.mograsim.logic.model.am2900/components/GUIsel3_4.json @@ -0,0 +1,878 @@ +mograsim version: 0.1.3 +{ + "width": 35.0, + "height": 150.0, + "interfacePins": [ + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "SA", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 115.0 + }, + "name": "C1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "SB", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 75.0 + }, + "name": "B1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 125.0 + }, + "name": "C2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "SC", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 35.0 + }, + "name": "A1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 85.0 + }, + "name": "B2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 135.0 + }, + "name": "C3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 45.0 + }, + "name": "A2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 95.0 + }, + "name": "B3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 145.0 + }, + "name": "C4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 55.0 + }, + "name": "A3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 105.0 + }, + "name": "B4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 65.0 + }, + "name": "A4", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Y1", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "Y2", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 25.0 + }, + "name": "Y3", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 35.0 + }, + "name": "Y4", + "logicWidth": 1 + } + ], + "submodel": { + "innerScale": 0.2, + "subComps": [ + { + "pos": { + "x": 50.0, + "y": 620.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#1", + "params": 1 + }, + { + "pos": { + "x": 50.0, + "y": 570.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#0", + "params": 1 + }, + { + "pos": { + "x": 50.0, + "y": 720.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#3", + "params": 1 + }, + { + "pos": { + "x": 50.0, + "y": 670.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#2", + "params": 1 + }, + { + "pos": { + "x": 75.0, + "y": 250.0 + }, + "id": "GUInot4", + "name": "GUInot4#0" + }, + { + "pos": { + "x": 29.0, + "y": 634.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#1", + "params": 1 + }, + { + "pos": { + "x": 29.0, + "y": 584.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#0", + "params": 1 + }, + { + "pos": { + "x": 29.0, + "y": 684.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#2", + "params": 1 + }, + { + "pos": { + "x": 152.5, + "y": 65.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#5", + "params": 1 + }, + { + "pos": { + "x": 35.0, + "y": 250.0 + }, + "id": "GUIsel2_4", + "name": "GUIsel2_4#0" + }, + { + "pos": { + "x": 152.5, + "y": 15.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#4", + "params": 1 + }, + { + "pos": { + "x": 152.5, + "y": 165.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#7", + "params": 1 + }, + { + "pos": { + "x": 152.5, + "y": 115.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#6", + "params": 1 + } + ], + "innerWires": [ + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "SA" + }, + "pin2": { + "compName": "GUIsel2_4#0", + "pinName": "SA" + }, + "path": [ + { + "x": 25.0, + "y": 25.0 + }, + { + "x": 25.0, + "y": 255.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "SB" + }, + "pin2": { + "compName": "GUIsel2_4#0", + "pinName": "SB" + }, + "path": [ + { + "x": 20.0, + "y": 75.0 + }, + { + "x": 20.0, + "y": 265.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A1" + }, + "pin2": { + "compName": "GUIsel2_4#0", + "pinName": "A1" + }, + "path": [ + { + "x": 15.0, + "y": 175.0 + }, + { + "x": 15.0, + "y": 275.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A2" + }, + "pin2": { + "compName": "GUIsel2_4#0", + "pinName": "A2" + }, + "path": [ + { + "x": 10.0, + "y": 225.0 + }, + { + "x": 10.0, + "y": 285.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A3" + }, + "pin2": { + "compName": "GUIsel2_4#0", + "pinName": "A3" + }, + "path": [ + { + "x": 5.0, + "y": 275.0 + }, + { + "x": 5.0, + "y": 295.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A4" + }, + "pin2": { + "compName": "GUIsel2_4#0", + "pinName": "A4" + }, + "path": [ + { + "x": 5.0, + "y": 325.0 + }, + { + "x": 5.0, + "y": 305.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B1" + }, + "pin2": { + "compName": "GUIsel2_4#0", + "pinName": "B1" + }, + "path": [ + { + "x": 10.0, + "y": 375.0 + }, + { + "x": 10.0, + "y": 315.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B2" + }, + "pin2": { + "compName": "GUIsel2_4#0", + "pinName": "B2" + }, + "path": [ + { + "x": 15.0, + "y": 425.0 + }, + { + "x": 15.0, + "y": 325.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B3" + }, + "pin2": { + "compName": "GUIsel2_4#0", + "pinName": "B3" + }, + "path": [ + { + "x": 20.0, + "y": 475.0 + }, + { + "x": 20.0, + "y": 335.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B4" + }, + "pin2": { + "compName": "GUIsel2_4#0", + "pinName": "B4" + }, + "path": [ + { + "x": 25.0, + "y": 525.0 + }, + { + "x": 25.0, + "y": 345.0 + } + ] + }, + { + "pin1": { + "compName": "GUIsel2_4#0", + "pinName": "Y1" + }, + "pin2": { + "compName": "GUInot4#0", + "pinName": "A1" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIsel2_4#0", + "pinName": "Y2" + }, + "pin2": { + "compName": "GUInot4#0", + "pinName": "A2" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIsel2_4#0", + "pinName": "Y3" + }, + "pin2": { + "compName": "GUInot4#0", + "pinName": "A3" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIsel2_4#0", + "pinName": "Y4" + }, + "pin2": { + "compName": "GUInot4#0", + "pinName": "A4" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "SC" + }, + "pin2": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "path": [ + { + "x": 30.0, + "y": 125.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "path": [ + { + "x": 30.0, + "y": 125.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "path": [ + { + "x": 30.0, + "y": 125.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#2", + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#3", + "pinName": "B" + }, + "path": [ + { + "x": 30.0, + "y": 735.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "C1" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "C2" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "C3" + }, + "pin2": { + "compName": "GUINandGate#2", + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "C4" + }, + "pin2": { + "compName": "GUINandGate#3", + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUInot4#0", + "pinName": "Y1" + }, + "pin2": { + "compName": "GUINandGate#4", + "pinName": "A" + }, + "path": [ + { + "x": 115.0, + "y": 255.0 + }, + { + "x": 115.0, + "y": 20.0 + } + ] + }, + { + "pin1": { + "compName": "GUInot4#0", + "pinName": "Y2" + }, + "pin2": { + "compName": "GUINandGate#5", + "pinName": "A" + }, + "path": [ + { + "x": 120.0, + "y": 265.0 + }, + { + "x": 120.0, + "y": 70.0 + } + ] + }, + { + "pin1": { + "compName": "GUInot4#0", + "pinName": "Y3" + }, + "pin2": { + "compName": "GUINandGate#6", + "pinName": "A" + }, + "path": [ + { + "x": 125.0, + "y": 275.0 + }, + { + "x": 125.0, + "y": 120.0 + } + ] + }, + { + "pin1": { + "compName": "GUInot4#0", + "pinName": "Y4" + }, + "pin2": { + "compName": "GUINandGate#7", + "pinName": "A" + }, + "path": [ + { + "x": 130.0, + "y": 285.0 + }, + { + "x": 130.0, + "y": 170.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#0", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#4", + "pinName": "B" + }, + "path": [ + { + "x": 135.0, + "y": 580.0 + }, + { + "x": 135.0, + "y": 30.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#1", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#5", + "pinName": "B" + }, + "path": [ + { + "x": 140.0, + "y": 630.0 + }, + { + "x": 140.0, + "y": 80.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#2", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#6", + "pinName": "B" + }, + "path": [ + { + "x": 145.0, + "y": 680.0 + }, + { + "x": 145.0, + "y": 130.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#3", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#7", + "pinName": "B" + }, + "path": [ + { + "x": 150.0, + "y": 730.0 + }, + { + "x": 150.0, + "y": 180.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#4", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y1" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUINandGate#5", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y2" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUINandGate#6", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y3" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUINandGate#7", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y4" + }, + "path": [] + } + ] + }, + "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", + "symbolRendererParams": { + "centerText": "GUIsel3_4", + "horizontalComponentCenter": 17.5, + "centerTextHeight": 5.0, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/components/GUIxor.json b/net.mograsim.logic.model.am2900/components/GUIxor.json new file mode 100644 index 00000000..9e3ec592 --- /dev/null +++ b/net.mograsim.logic.model.am2900/components/GUIxor.json @@ -0,0 +1,267 @@ +mograsim version: 0.1.3 +{ + "width": 35.0, + "height": 20.0, + "interfacePins": [ + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "A", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "B", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Y", + "logicWidth": 1 + } + ], + "submodel": { + "innerScale": 0.4, + "subComps": [ + { + "pos": { + "x": 35.0, + "y": 2.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#1", + "params": 1 + }, + { + "pos": { + "x": 7.5, + "y": 15.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#0", + "params": 1 + }, + { + "pos": { + "x": 62.5, + "y": 15.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#3", + "params": 1 + }, + { + "pos": { + "x": 4.0, + "y": 36.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#1", + "params": 1 + }, + { + "pos": { + "x": 35.0, + "y": 27.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#2", + "params": 1 + }, + { + "pos": { + "x": 4.0, + "y": 11.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#0", + "params": 1 + }, + { + "pos": { + "x": 29.0, + "y": 24.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#2", + "params": 1 + } + ], + "innerWires": [ + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A" + }, + "pin2": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B" + }, + "pin2": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "A" + }, + "path": [ + { + "x": 5.0, + "y": 20.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "B" + }, + "path": [ + { + "x": 5.0, + "y": 30.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#0", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#2", + "pinName": "" + } + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "B" + }, + "path": [ + { + "x": 30.0, + "y": 17.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#2", + "pinName": "A" + }, + "path": [ + { + "x": 30.0, + "y": 32.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "A" + }, + "path": [ + { + "x": 5.0, + "y": 7.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#2", + "pinName": "B" + }, + "path": [ + { + "x": 5.0, + "y": 42.5 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#1", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#3", + "pinName": "A" + } + }, + { + "pin1": { + "compName": "GUINandGate#2", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#3", + "pinName": "B" + } + }, + { + "pin1": { + "compName": "GUINandGate#3", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y" + } + } + ] + }, + "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", + "symbolRendererParams": { + "centerText": "GUIxor", + "horizontalComponentCenter": 17.5, + "centerTextHeight": 5.0, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/components/am2901/GUIAm2901.json b/net.mograsim.logic.model.am2900/components/am2901/GUIAm2901.json new file mode 100644 index 00000000..7563d838 --- /dev/null +++ b/net.mograsim.logic.model.am2900/components/am2901/GUIAm2901.json @@ -0,0 +1,3245 @@ +mograsim version: 0.1.3 +{ + "width": 35.0, + "height": 270.0, + "interfacePins": [ + { + "location": { + "x": 35.0, + "y": 85.0 + }, + "name": "ORAMn", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 95.0 + }, + "name": "C", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 265.0 + }, + "name": "IQn+3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 85.0 + }, + "name": "I0", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 255.0 + }, + "name": "IQn", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 75.0 + }, + "name": "I1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 65.0 + }, + "name": "I2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 55.0 + }, + "name": "I3", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 65.0 + }, + "name": "OVR", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 45.0 + }, + "name": "I4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 105.0 + }, + "name": "Cn", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 115.0 + }, + "name": "OQn+3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 35.0 + }, + "name": "I5", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "I6", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 105.0 + }, + "name": "OQn", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "I7", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "I8", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 155.0 + }, + "name": "A0", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 165.0 + }, + "name": "A1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 175.0 + }, + "name": "A2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 185.0 + }, + "name": "A3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 235.0 + }, + "name": "IRAMn", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 55.0 + }, + "name": "Cn+4", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 95.0 + }, + "name": "ORAMn+3", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 45.0 + }, + "name": "F\u003d0", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 115.0 + }, + "name": "D1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 245.0 + }, + "name": "IRAMn+3", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 75.0 + }, + "name": "F3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 125.0 + }, + "name": "D2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 195.0 + }, + "name": "B0", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 135.0 + }, + "name": "D3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 205.0 + }, + "name": "B1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 145.0 + }, + "name": "D4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 215.0 + }, + "name": "B2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 225.0 + }, + "name": "B3", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Y1", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "Y2", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 25.0 + }, + "name": "Y3", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 35.0 + }, + "name": "Y4", + "logicWidth": 1 + } + ], + "submodel": { + "innerScale": 0.1, + "subComps": [ + { + "pos": { + "x": 45.0, + "y": 2310.0 + }, + "id": "GUIsel3_4", + "name": "GUIsel3_4#0" + }, + { + "pos": { + "x": 144.0, + "y": 2524.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#14", + "params": 1 + }, + { + "pos": { + "x": 45.0, + "y": 2510.0 + }, + "id": "GUIsel3_4", + "name": "GUIsel3_4#1" + }, + { + "pos": { + "x": 139.0, + "y": 2514.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#13", + "params": 1 + }, + { + "pos": { + "x": 234.0, + "y": 2524.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#16", + "params": 1 + }, + { + "pos": { + "x": 219.0, + "y": 2494.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#15", + "params": 1 + }, + { + "pos": { + "x": 15.0, + "y": 45.0 + }, + "id": "GUIAm2901DestDecode", + "name": "GUIAm2901DestDecode#0" + }, + { + "pos": { + "x": 39.0, + "y": 2634.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#18", + "params": 1 + }, + { + "pos": { + "x": 34.0, + "y": 2624.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#17", + "params": 1 + }, + { + "pos": { + "x": 279.0, + "y": 2114.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#19", + "params": 1 + }, + { + "pos": { + "x": 154.0, + "y": 89.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#1", + "params": 1 + }, + { + "pos": { + "x": 154.0, + "y": 949.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#0", + "params": 1 + }, + { + "pos": { + "x": 154.0, + "y": 2319.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#3", + "params": 1 + }, + { + "pos": { + "x": 154.0, + "y": 2264.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#2", + "params": 1 + }, + { + "pos": { + "x": 34.0, + "y": 2324.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#5", + "params": 1 + }, + { + "pos": { + "x": 39.0, + "y": 2314.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#4", + "params": 1 + }, + { + "pos": { + "x": 219.0, + "y": 2224.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#7", + "params": 1 + }, + { + "pos": { + "x": 29.0, + "y": 2334.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#6", + "params": 1 + }, + { + "pos": { + "x": 229.0, + "y": 2244.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#9", + "params": 1 + }, + { + "pos": { + "x": 224.0, + "y": 2234.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#8", + "params": 1 + }, + { + "pos": { + "x": 234.0, + "y": 2254.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#10", + "params": 1 + }, + { + "pos": { + "x": 134.0, + "y": 2504.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#12", + "params": 1 + }, + { + "pos": { + "x": 129.0, + "y": 2494.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#11", + "params": 1 + }, + { + "pos": { + "x": 160.0, + "y": 2275.0 + }, + "id": "GUIdlatch4", + "name": "GUIdlatch4#1" + }, + { + "pos": { + "x": 160.0, + "y": 2220.0 + }, + "id": "GUIdlatch4", + "name": "GUIdlatch4#0" + }, + { + "pos": { + "x": 314.0, + "y": 449.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#40", + "params": 1 + }, + { + "pos": { + "x": 90.0, + "y": 2490.0 + }, + "id": "GUIAm2901QReg", + "name": "GUIAm2901QReg#0" + }, + { + "pos": { + "x": 320.0, + "y": 440.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#1", + "params": 1 + }, + { + "pos": { + "x": 9.0, + "y": 2384.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#36", + "params": 1 + }, + { + "pos": { + "x": 160.0, + "y": 75.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#0", + "params": 1 + }, + { + "pos": { + "x": 24.0, + "y": 2414.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#35", + "params": 1 + }, + { + "pos": { + "x": 19.0, + "y": 2434.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#38", + "params": 1 + }, + { + "pos": { + "x": 14.0, + "y": 2424.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#37", + "params": 1 + }, + { + "pos": { + "x": 24.0, + "y": 2444.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#39", + "params": 1 + }, + { + "pos": { + "x": 190.0, + "y": 65.0 + }, + "id": "GUIand", + "name": "GUIand#0" + }, + { + "pos": { + "x": 275.0, + "y": 135.0 + }, + "id": "GUImux1_4", + "name": "GUImux1_4#0" + }, + { + "pos": { + "x": 9.0, + "y": 2354.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#30", + "params": 1 + }, + { + "pos": { + "x": 19.0, + "y": 2374.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#32", + "params": 1 + }, + { + "pos": { + "x": 14.0, + "y": 2364.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#31", + "params": 1 + }, + { + "pos": { + "x": 19.0, + "y": 2404.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#34", + "params": 1 + }, + { + "pos": { + "x": 14.0, + "y": 2394.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#33", + "params": 1 + }, + { + "pos": { + "x": 269.0, + "y": 2104.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#25", + "params": 1 + }, + { + "pos": { + "x": 264.0, + "y": 2099.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#24", + "params": 1 + }, + { + "pos": { + "x": 259.0, + "y": 459.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#27", + "params": 1 + }, + { + "pos": { + "x": 254.0, + "y": 449.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#26", + "params": 1 + }, + { + "pos": { + "x": 275.0, + "y": 445.0 + }, + "id": "GUIor4", + "name": "GUIor4#0" + }, + { + "pos": { + "x": 269.0, + "y": 479.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#29", + "params": 1 + }, + { + "pos": { + "x": 240.0, + "y": 2110.0 + }, + "id": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode", + "name": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0" + }, + { + "pos": { + "x": 264.0, + "y": 469.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#28", + "params": 1 + }, + { + "pos": { + "x": 95.0, + "y": 2220.0 + }, + "id": "GUIram4", + "name": "GUIram4#0" + }, + { + "pos": { + "x": 329.0, + "y": 949.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#21", + "params": 1 + }, + { + "pos": { + "x": 294.0, + "y": 2144.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#20", + "params": 1 + }, + { + "pos": { + "x": 259.0, + "y": 2094.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#23", + "params": 1 + }, + { + "pos": { + "x": 254.0, + "y": 2089.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#22", + "params": 1 + } + ], + "innerWires": [ + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I8" + }, + "pin2": { + "compName": "GUIAm2901DestDecode#0", + "pinName": "I8" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I7" + }, + "pin2": { + "compName": "GUIAm2901DestDecode#0", + "pinName": "I7" + }, + "path": [ + { + "x": 5.0, + "y": 150.0 + }, + { + "x": 5.0, + "y": 60.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I6" + }, + "pin2": { + "compName": "GUIAm2901DestDecode#0", + "pinName": "I6" + }, + "path": [ + { + "x": 10.0, + "y": 250.0 + }, + { + "x": 10.0, + "y": 70.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I5" + }, + "pin2": { + "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0", + "pinName": "I5" + }, + "path": [ + { + "x": 130.0, + "y": 350.0 + }, + { + "x": 130.0, + "y": 2115.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I4" + }, + "pin2": { + "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0", + "pinName": "I4" + }, + "path": [ + { + "x": 125.0, + "y": 450.0 + }, + { + "x": 125.0, + "y": 2125.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I3" + }, + "pin2": { + "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0", + "pinName": "I3" + }, + "path": [ + { + "x": 120.0, + "y": 550.0 + }, + { + "x": 120.0, + "y": 2135.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I2" + }, + "pin2": { + "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0", + "pinName": "I2" + }, + "path": [ + { + "x": 115.0, + "y": 650.0 + }, + { + "x": 115.0, + "y": 2145.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I1" + }, + "pin2": { + "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0", + "pinName": "I1" + }, + "path": [ + { + "x": 110.0, + "y": 750.0 + }, + { + "x": 110.0, + "y": 2155.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I0" + }, + "pin2": { + "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0", + "pinName": "I0" + }, + "path": [ + { + "x": 105.0, + "y": 850.0 + }, + { + "x": 105.0, + "y": 2165.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "C" + }, + "pin2": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "A" + }, + "path": [ + { + "x": 155.0, + "y": 80.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUIdlatch4#0", + "pinName": "C" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "GUIdlatch4#1", + "pinName": "C" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901QReg#0", + "pinName": "C" + }, + "path": [ + { + "x": 155.0, + "y": 2485.0 + }, + { + "x": 80.0, + "y": 2485.0 + }, + { + "x": 80.0, + "y": 2495.0 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901DestDecode#0", + "pinName": "LSH" + }, + "pin2": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "path": [ + { + "x": 55.0, + "y": 90.0 + }, + { + "x": 55.0, + "y": 125.0 + }, + { + "x": 40.0, + "y": 125.0 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901DestDecode#0", + "pinName": "NSH" + }, + "pin2": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "path": [ + { + "x": 60.0, + "y": 50.0 + }, + { + "x": 60.0, + "y": 120.0 + }, + { + "x": 35.0, + "y": 120.0 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901DestDecode#0", + "pinName": "RSH" + }, + "pin2": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "path": [ + { + "x": 65.0, + "y": 60.0 + }, + { + "x": 65.0, + "y": 115.0 + }, + { + "x": 30.0, + "y": 115.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel3_4#0", + "pinName": "SA" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel3_4#0", + "pinName": "SB" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel3_4#0", + "pinName": "SC" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel3_4#1", + "pinName": "SA" + }, + "path": [ + { + "x": 40.0, + "y": 2515.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel3_4#1", + "pinName": "SB" + }, + "path": [ + { + "x": 35.0, + "y": 2525.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel3_4#1", + "pinName": "SC" + }, + "path": [ + { + "x": 30.0, + "y": 2535.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A0" + }, + "pin2": { + "compName": "GUIram4#0", + "pinName": "A0" + }, + "path": [ + { + "x": 80.0, + "y": 1550.0 + }, + { + "x": 80.0, + "y": 2225.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A1" + }, + "pin2": { + "compName": "GUIram4#0", + "pinName": "A1" + }, + "path": [ + { + "x": 75.0, + "y": 1650.0 + }, + { + "x": 75.0, + "y": 2235.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A2" + }, + "pin2": { + "compName": "GUIram4#0", + "pinName": "A2" + }, + "path": [ + { + "x": 70.0, + "y": 1750.0 + }, + { + "x": 70.0, + "y": 2245.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A3" + }, + "pin2": { + "compName": "GUIram4#0", + "pinName": "A3" + }, + "path": [ + { + "x": 65.0, + "y": 1850.0 + }, + { + "x": 65.0, + "y": 2255.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B0" + }, + "pin2": { + "compName": "GUIram4#0", + "pinName": "B0" + }, + "path": [ + { + "x": 60.0, + "y": 1950.0 + }, + { + "x": 60.0, + "y": 2265.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B1" + }, + "pin2": { + "compName": "GUIram4#0", + "pinName": "B1" + }, + "path": [ + { + "x": 55.0, + "y": 2050.0 + }, + { + "x": 55.0, + "y": 2275.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B2" + }, + "pin2": { + "compName": "GUIram4#0", + "pinName": "B2" + }, + "path": [ + { + "x": 50.0, + "y": 2150.0 + }, + { + "x": 50.0, + "y": 2285.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B3" + }, + "pin2": { + "compName": "GUIram4#0", + "pinName": "B3" + }, + "path": [ + { + "x": 45.0, + "y": 2250.0 + }, + { + "x": 45.0, + "y": 2295.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram4#0", + "pinName": "QA1" + }, + "pin2": { + "compName": "GUIdlatch4#0", + "pinName": "D1" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIram4#0", + "pinName": "QA2" + }, + "pin2": { + "compName": "GUIdlatch4#0", + "pinName": "D2" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIram4#0", + "pinName": "QA3" + }, + "pin2": { + "compName": "GUIdlatch4#0", + "pinName": "D3" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIram4#0", + "pinName": "QA4" + }, + "pin2": { + "compName": "GUIdlatch4#0", + "pinName": "D4" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIram4#0", + "pinName": "QB1" + }, + "pin2": { + "compName": "GUIdlatch4#1", + "pinName": "D1" + }, + "path": [ + { + "x": 150.0, + "y": 2265.0 + }, + { + "x": 150.0, + "y": 2280.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram4#0", + "pinName": "QB2" + }, + "pin2": { + "compName": "GUIdlatch4#1", + "pinName": "D2" + }, + "path": [ + { + "x": 145.0, + "y": 2275.0 + }, + { + "x": 145.0, + "y": 2290.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram4#0", + "pinName": "QB3" + }, + "pin2": { + "compName": "GUIdlatch4#1", + "pinName": "D3" + }, + "path": [ + { + "x": 140.0, + "y": 2285.0 + }, + { + "x": 140.0, + "y": 2300.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram4#0", + "pinName": "QB4" + }, + "pin2": { + "compName": "GUIdlatch4#1", + "pinName": "D4" + }, + "path": [ + { + "x": 135.0, + "y": 2295.0 + }, + { + "x": 135.0, + "y": 2310.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "Cn" + }, + "pin2": { + "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0", + "pinName": "Cn" + }, + "path": [ + { + "x": 100.0, + "y": 1050.0 + }, + { + "x": 100.0, + "y": 2175.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "D1" + }, + "pin2": { + "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0", + "pinName": "D1" + }, + "path": [ + { + "x": 180.0, + "y": 1150.0 + }, + { + "x": 180.0, + "y": 2185.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "D2" + }, + "pin2": { + "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0", + "pinName": "D2" + }, + "path": [ + { + "x": 175.0, + "y": 1250.0 + }, + { + "x": 175.0, + "y": 2195.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "D3" + }, + "pin2": { + "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0", + "pinName": "D3" + }, + "path": [ + { + "x": 170.0, + "y": 1350.0 + }, + { + "x": 170.0, + "y": 2205.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "D4" + }, + "pin2": { + "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0", + "pinName": "D4" + }, + "path": [ + { + "x": 165.0, + "y": 1450.0 + }, + { + "x": 165.0, + "y": 2215.0 + } + ] + }, + { + "pin1": { + "compName": "GUIdlatch4#0", + "pinName": "Q1" + }, + "pin2": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdlatch4#0", + "pinName": "Q2" + }, + "pin2": { + "compName": "WireCrossPoint#8", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdlatch4#0", + "pinName": "Q3" + }, + "pin2": { + "compName": "WireCrossPoint#9", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdlatch4#0", + "pinName": "Q4" + }, + "pin2": { + "compName": "WireCrossPoint#10", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "pin2": { + "compName": "GUImux1_4#0", + "pinName": "I0_1" + }, + "path": [ + { + "x": 220.0, + "y": 150.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#8", + "pinName": "" + }, + "pin2": { + "compName": "GUImux1_4#0", + "pinName": "I0_2" + }, + "path": [ + { + "x": 225.0, + "y": 160.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#9", + "pinName": "" + }, + "pin2": { + "compName": "GUImux1_4#0", + "pinName": "I0_3" + }, + "path": [ + { + "x": 230.0, + "y": 170.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#10", + "pinName": "" + }, + "pin2": { + "compName": "GUImux1_4#0", + "pinName": "I0_4" + }, + "path": [ + { + "x": 235.0, + "y": 180.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0", + "pinName": "A1" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#8", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0", + "pinName": "A2" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#9", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0", + "pinName": "A3" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#10", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0", + "pinName": "A4" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdlatch4#1", + "pinName": "Q1" + }, + "pin2": { + "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0", + "pinName": "B1" + }, + "path": [ + { + "x": 200.0, + "y": 2280.0 + }, + { + "x": 200.0, + "y": 2265.0 + } + ] + }, + { + "pin1": { + "compName": "GUIdlatch4#1", + "pinName": "Q2" + }, + "pin2": { + "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0", + "pinName": "B2" + }, + "path": [ + { + "x": 205.0, + "y": 2290.0 + }, + { + "x": 205.0, + "y": 2275.0 + } + ] + }, + { + "pin1": { + "compName": "GUIdlatch4#1", + "pinName": "Q3" + }, + "pin2": { + "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0", + "pinName": "B3" + }, + "path": [ + { + "x": 210.0, + "y": 2300.0 + }, + { + "x": 210.0, + "y": 2285.0 + } + ] + }, + { + "pin1": { + "compName": "GUIdlatch4#1", + "pinName": "Q4" + }, + "pin2": { + "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0", + "pinName": "B4" + }, + "path": [ + { + "x": 215.0, + "y": 2310.0 + }, + { + "x": 215.0, + "y": 2295.0 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901QReg#0", + "pinName": "Q1" + }, + "pin2": { + "compName": "WireCrossPoint#11", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIAm2901QReg#0", + "pinName": "Q2" + }, + "pin2": { + "compName": "WireCrossPoint#12", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIAm2901QReg#0", + "pinName": "Q3" + }, + "pin2": { + "compName": "WireCrossPoint#13", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIAm2901QReg#0", + "pinName": "Q4" + }, + "pin2": { + "compName": "WireCrossPoint#14", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#11", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#15", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#15", + "pinName": "" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "OQn" + }, + "path": [ + { + "x": 335.0, + "y": 2495.0 + }, + { + "x": 335.0, + "y": 1050.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#14", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#16", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#16", + "pinName": "" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "OQn+3" + }, + "path": [ + { + "x": 340.0, + "y": 2525.0 + }, + { + "x": 340.0, + "y": 1150.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#12", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#17", + "pinName": "" + }, + "path": [ + { + "x": 135.0, + "y": 2670.0 + }, + { + "x": 30.0, + "y": 2670.0 + }, + { + "x": 30.0, + "y": 2635.0 + }, + { + "x": 35.0, + "y": 2635.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#13", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#18", + "pinName": "" + }, + "path": [ + { + "x": 140.0, + "y": 2675.0 + }, + { + "x": 35.0, + "y": 2675.0 + }, + { + "x": 35.0, + "y": 2640.0 + }, + { + "x": 40.0, + "y": 2640.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#17", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel3_4#1", + "pinName": "C1" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#18", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel3_4#1", + "pinName": "C2" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#14", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel3_4#1", + "pinName": "C3" + }, + "path": [ + { + "x": 145.0, + "y": 2680.0 + }, + { + "x": 40.0, + "y": 2680.0 + }, + { + "x": 40.0, + "y": 2645.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "IQn+3" + }, + "pin2": { + "compName": "GUIsel3_4#1", + "pinName": "C4" + }, + "path": [ + { + "x": 5.0, + "y": 2650.0 + }, + { + "x": 5.0, + "y": 2655.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "IQn" + }, + "pin2": { + "compName": "GUIsel3_4#1", + "pinName": "A1" + }, + "path": [ + { + "x": 5.0, + "y": 2550.0 + }, + { + "x": 5.0, + "y": 2545.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#11", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel3_4#1", + "pinName": "A2" + }, + "path": [ + { + "x": 130.0, + "y": 2665.0 + }, + { + "x": 25.0, + "y": 2665.0 + }, + { + "x": 25.0, + "y": 2630.0 + }, + { + "x": 30.0, + "y": 2630.0 + }, + { + "x": 30.0, + "y": 2555.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#15", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0", + "pinName": "Q1" + }, + "path": [ + { + "x": 220.0, + "y": 2305.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#12", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0", + "pinName": "Q2" + }, + "path": [ + { + "x": 225.0, + "y": 2505.0 + }, + { + "x": 225.0, + "y": 2315.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#13", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0", + "pinName": "Q3" + }, + "path": [ + { + "x": 230.0, + "y": 2515.0 + }, + { + "x": 230.0, + "y": 2325.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#16", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0", + "pinName": "Q4" + }, + "path": [ + { + "x": 235.0, + "y": 2335.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#17", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel3_4#1", + "pinName": "A3" + }, + "path": [ + { + "x": 35.0, + "y": 2565.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#18", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel3_4#1", + "pinName": "A4" + }, + "path": [ + { + "x": 40.0, + "y": 2575.0 + } + ] + }, + { + "pin1": { + "compName": "GUIsel3_4#1", + "pinName": "Y1" + }, + "pin2": { + "compName": "GUIAm2901QReg#0", + "pinName": "D1" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIsel3_4#1", + "pinName": "Y2" + }, + "pin2": { + "compName": "GUIAm2901QReg#0", + "pinName": "D2" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIsel3_4#1", + "pinName": "Y3" + }, + "pin2": { + "compName": "GUIAm2901QReg#0", + "pinName": "D3" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIsel3_4#1", + "pinName": "Y4" + }, + "pin2": { + "compName": "GUIAm2901QReg#0", + "pinName": "D4" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0", + "pinName": "Cn+4" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Cn+4" + }, + "path": [ + { + "x": 315.0, + "y": 2155.0 + }, + { + "x": 315.0, + "y": 550.0 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0", + "pinName": "OVR" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "OVR" + }, + "path": [ + { + "x": 320.0, + "y": 2165.0 + }, + { + "x": 320.0, + "y": 650.0 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0", + "pinName": "F1" + }, + "pin2": { + "compName": "WireCrossPoint#19", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0", + "pinName": "F4" + }, + "pin2": { + "compName": "WireCrossPoint#20", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#19", + "pinName": "" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "ORAMn" + }, + "path": [ + { + "x": 325.0, + "y": 2115.0 + }, + { + "x": 325.0, + "y": 850.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#20", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#21", + "pinName": "" + }, + "path": [ + { + "x": 330.0, + "y": 2145.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#21", + "pinName": "" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "ORAMn+3" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#21", + "pinName": "" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "F3" + }, + "path": [ + { + "x": 330.0, + "y": 750.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#19", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#22", + "pinName": "" + }, + "path": [ + { + "x": 280.0, + "y": 2090.0 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0", + "pinName": "F2" + }, + "pin2": { + "compName": "WireCrossPoint#23", + "pinName": "" + }, + "path": [ + { + "x": 285.0, + "y": 2125.0 + }, + { + "x": 285.0, + "y": 2095.0 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0", + "pinName": "F3" + }, + "pin2": { + "compName": "WireCrossPoint#24", + "pinName": "" + }, + "path": [ + { + "x": 290.0, + "y": 2135.0 + }, + { + "x": 290.0, + "y": 2100.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#20", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#25", + "pinName": "" + }, + "path": [ + { + "x": 295.0, + "y": 2105.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#22", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#26", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#23", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#27", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#24", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#28", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#25", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#29", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#26", + "pinName": "" + }, + "pin2": { + "compName": "GUIor4#0", + "pinName": "A1" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#27", + "pinName": "" + }, + "pin2": { + "compName": "GUIor4#0", + "pinName": "A2" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#28", + "pinName": "" + }, + "pin2": { + "compName": "GUIor4#0", + "pinName": "A3" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#29", + "pinName": "" + }, + "pin2": { + "compName": "GUIor4#0", + "pinName": "A4" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#26", + "pinName": "" + }, + "pin2": { + "compName": "GUImux1_4#0", + "pinName": "I1_1" + }, + "path": [ + { + "x": 255.0, + "y": 190.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#27", + "pinName": "" + }, + "pin2": { + "compName": "GUImux1_4#0", + "pinName": "I1_2" + }, + "path": [ + { + "x": 260.0, + "y": 200.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#28", + "pinName": "" + }, + "pin2": { + "compName": "GUImux1_4#0", + "pinName": "I1_3" + }, + "path": [ + { + "x": 265.0, + "y": 210.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#29", + "pinName": "" + }, + "pin2": { + "compName": "GUImux1_4#0", + "pinName": "I1_4" + }, + "path": [ + { + "x": 270.0, + "y": 220.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#22", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#30", + "pinName": "" + }, + "path": [ + { + "x": 10.0, + "y": 2090.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#23", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#31", + "pinName": "" + }, + "path": [ + { + "x": 15.0, + "y": 2095.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#24", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#32", + "pinName": "" + }, + "path": [ + { + "x": 20.0, + "y": 2100.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "IRAMn" + }, + "pin2": { + "compName": "GUIsel3_4#0", + "pinName": "A1" + }, + "path": [ + { + "x": 5.0, + "y": 2350.0 + }, + { + "x": 5.0, + "y": 2345.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#30", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel3_4#0", + "pinName": "A2" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#31", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel3_4#0", + "pinName": "A3" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#32", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel3_4#0", + "pinName": "A4" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#31", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#33", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#32", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#34", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#25", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#35", + "pinName": "" + }, + "path": [ + { + "x": 25.0, + "y": 2105.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#30", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#36", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#36", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel3_4#0", + "pinName": "B1" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#33", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel3_4#0", + "pinName": "B2" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#34", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel3_4#0", + "pinName": "B3" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#35", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel3_4#0", + "pinName": "B4" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#33", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#37", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#34", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#38", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#35", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#39", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#37", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel3_4#0", + "pinName": "C1" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#38", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel3_4#0", + "pinName": "C2" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#39", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel3_4#0", + "pinName": "C3" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "IRAMn+3" + }, + "pin2": { + "compName": "GUIsel3_4#0", + "pinName": "C4" + }, + "path": [ + { + "x": 5.0, + "y": 2450.0 + }, + { + "x": 5.0, + "y": 2455.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#36", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel3_4#1", + "pinName": "B1" + }, + "path": [ + { + "x": 10.0, + "y": 2585.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#37", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel3_4#1", + "pinName": "B2" + }, + "path": [ + { + "x": 15.0, + "y": 2595.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#38", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel3_4#1", + "pinName": "B3" + }, + "path": [ + { + "x": 20.0, + "y": 2605.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#39", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel3_4#1", + "pinName": "B4" + }, + "path": [ + { + "x": 25.0, + "y": 2615.0 + } + ] + }, + { + "pin1": { + "compName": "GUIsel3_4#0", + "pinName": "Y1" + }, + "pin2": { + "compName": "GUIram4#0", + "pinName": "D1" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIsel3_4#0", + "pinName": "Y2" + }, + "pin2": { + "compName": "GUIram4#0", + "pinName": "D2" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIsel3_4#0", + "pinName": "Y3" + }, + "pin2": { + "compName": "GUIram4#0", + "pinName": "D3" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIsel3_4#0", + "pinName": "Y4" + }, + "pin2": { + "compName": "GUIram4#0", + "pinName": "D4" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIAm2901DestDecode#0", + "pinName": "RAMWE" + }, + "pin2": { + "compName": "GUIand#0", + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUINandGate#0", + "pinName": "Y" + }, + "pin2": { + "compName": "GUIand#0", + "pinName": "B" + } + }, + { + "pin1": { + "compName": "GUIand#0", + "pinName": "Y" + }, + "pin2": { + "compName": "GUIram4#0", + "pinName": "WE" + }, + "path": [ + { + "x": 230.0, + "y": 70.0 + }, + { + "x": 230.0, + "y": 105.0 + }, + { + "x": 90.0, + "y": 105.0 + }, + { + "x": 90.0, + "y": 2305.0 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901DestDecode#0", + "pinName": "QWE" + }, + "pin2": { + "compName": "GUIAm2901QReg#0", + "pinName": "WE" + }, + "path": [ + { + "x": 85.0, + "y": 100.0 + }, + { + "x": 85.0, + "y": 2505.0 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901DestDecode#0", + "pinName": "YF" + }, + "pin2": { + "compName": "GUImux1_4#0", + "pinName": "S0" + }, + "path": [ + { + "x": 70.0, + "y": 80.0 + }, + { + "x": 70.0, + "y": 140.0 + } + ] + }, + { + "pin1": { + "compName": "GUImux1_4#0", + "pinName": "Y1" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y1" + }, + "path": [ + { + "x": 335.0, + "y": 140.0 + }, + { + "x": 335.0, + "y": 50.0 + } + ] + }, + { + "pin1": { + "compName": "GUImux1_4#0", + "pinName": "Y2" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y2" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUImux1_4#0", + "pinName": "Y3" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y3" + }, + "path": [ + { + "x": 335.0, + "y": 160.0 + }, + { + "x": 335.0, + "y": 250.0 + } + ] + }, + { + "pin1": { + "compName": "GUImux1_4#0", + "pinName": "Y4" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y4" + }, + "path": [ + { + "x": 325.0, + "y": 170.0 + }, + { + "x": 325.0, + "y": 350.0 + } + ] + }, + { + "pin1": { + "compName": "GUIor4#0", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#40", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#40", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "A" + }, + "path": [ + { + "x": 315.0, + "y": 445.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#40", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "B" + }, + "path": [ + { + "x": 315.0, + "y": 455.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#1", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "F\u003d0" + }, + "path": [] + } + ] + }, + "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", + "symbolRendererParams": { + "centerText": "GUIAm2901", + "horizontalComponentCenter": 17.5, + "centerTextHeight": 5.0, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/components/am2901/GUIAm2901ALUFuncDecode.json b/net.mograsim.logic.model.am2900/components/am2901/GUIAm2901ALUFuncDecode.json new file mode 100644 index 00000000..a24476b3 --- /dev/null +++ b/net.mograsim.logic.model.am2900/components/am2901/GUIAm2901ALUFuncDecode.json @@ -0,0 +1,681 @@ +mograsim version: 0.1.3 +{ + "width": 35.0, + "height": 60.0, + "interfacePins": [ + { + "location": { + "x": 35.0, + "y": 35.0 + }, + "name": "SBE", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 45.0 + }, + "name": "FN", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "I3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "I4", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 25.0 + }, + "name": "SN", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "I5", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "L", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 55.0 + }, + "name": "RN", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "CinE", + "logicWidth": 1 + } + ], + "submodel": { + "innerScale": 0.25, + "subComps": [ + { + "pos": { + "x": 15.0, + "y": 50.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#1", + "params": 1 + }, + { + "pos": { + "x": 55.0, + "y": 10.0 + }, + "id": "GUInand3", + "name": "GUInand3#0" + }, + { + "pos": { + "x": 15.0, + "y": 10.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#0", + "params": 1 + }, + { + "pos": { + "x": 55.0, + "y": 70.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#3", + "params": 1 + }, + { + "pos": { + "x": 55.0, + "y": 45.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#2", + "params": 1 + }, + { + "pos": { + "x": 100.0, + "y": 135.0 + }, + "id": "GUIand", + "name": "GUIand#0" + }, + { + "pos": { + "x": 4.0, + "y": 24.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#1", + "params": 1 + }, + { + "pos": { + "x": 4.0, + "y": 19.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#0", + "params": 1 + }, + { + "pos": { + "x": 9.0, + "y": 59.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#3", + "params": 1 + }, + { + "pos": { + "x": 4.0, + "y": 44.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#2", + "params": 1 + }, + { + "pos": { + "x": 9.0, + "y": 64.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#5", + "params": 1 + }, + { + "pos": { + "x": 9.0, + "y": 54.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#4", + "params": 1 + }, + { + "pos": { + "x": 49.0, + "y": 99.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#7", + "params": 1 + }, + { + "pos": { + "x": 9.0, + "y": 84.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#6", + "params": 1 + }, + { + "pos": { + "x": 39.0, + "y": 19.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#9", + "params": 1 + }, + { + "pos": { + "x": 49.0, + "y": 74.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#8", + "params": 1 + }, + { + "pos": { + "x": 39.0, + "y": 34.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#10", + "params": 1 + }, + { + "pos": { + "x": 100.0, + "y": 50.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#4", + "params": 1 + } + ], + "innerWires": [ + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I5" + }, + "pin2": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "A" + }, + "path": [ + { + "x": 5.0, + "y": 15.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#2", + "pinName": "A" + }, + "path": [ + { + "x": 45.0, + "y": 45.0 + }, + { + "x": 45.0, + "y": 50.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "FN" + }, + "path": [ + { + "x": 5.0, + "y": 180.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I4" + }, + "pin2": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "pin2": { + "compName": "GUInand3#0", + "pinName": "A" + }, + "path": [ + { + "x": 10.0, + "y": 40.0 + }, + { + "x": 45.0, + "y": 40.0 + }, + { + "x": 45.0, + "y": 15.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#3", + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "SN" + }, + "path": [ + { + "x": 10.0, + "y": 105.0 + }, + { + "x": 135.0, + "y": 105.0 + }, + { + "x": 135.0, + "y": 100.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I3" + }, + "pin2": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "path": [ + { + "x": 50.0, + "y": 100.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "RN" + }, + "path": [ + { + "x": 50.0, + "y": 220.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#8", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#8", + "pinName": "" + }, + "pin2": { + "compName": "GUInand3#0", + "pinName": "B" + }, + "path": [ + { + "x": 50.0, + "y": 25.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#8", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#3", + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUINandGate#0", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#9", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#9", + "pinName": "" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "CinE" + }, + "path": [ + { + "x": 40.0, + "y": 5.0 + }, + { + "x": 115.0, + "y": 5.0 + }, + { + "x": 115.0, + "y": 20.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#9", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#10", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#10", + "pinName": "" + }, + "pin2": { + "compName": "GUInand3#0", + "pinName": "C" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#10", + "pinName": "" + }, + "pin2": { + "compName": "GUIand#0", + "pinName": "B" + }, + "path": [ + { + "x": 40.0, + "y": 150.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#1", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#2", + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUInand3#0", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#4", + "pinName": "A" + } + }, + { + "pin1": { + "compName": "GUINandGate#2", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#4", + "pinName": "B" + } + }, + { + "pin1": { + "compName": "GUINandGate#3", + "pinName": "Y" + }, + "pin2": { + "compName": "GUIand#0", + "pinName": "A" + } + }, + { + "pin1": { + "compName": "GUINandGate#4", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "L" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIand#0", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "SBE" + }, + "path": [] + } + ] + }, + "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", + "symbolRendererParams": { + "centerText": "GUIAm2901ALUFuncDecode", + "horizontalComponentCenter": 17.5, + "centerTextHeight": 5.0, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/components/am2901/GUIAm2901ALUInclDecode.json b/net.mograsim.logic.model.am2900/components/am2901/GUIAm2901ALUInclDecode.json new file mode 100644 index 00000000..62d78f1e --- /dev/null +++ b/net.mograsim.logic.model.am2900/components/am2901/GUIAm2901ALUInclDecode.json @@ -0,0 +1,1453 @@ +mograsim version: 0.1.3 +{ + "width": 35.0, + "height": 120.0, + "interfacePins": [ + { + "location": { + "x": 0.0, + "y": 55.0 + }, + "name": "R2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 105.0 + }, + "name": "S3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 65.0 + }, + "name": "R3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 115.0 + }, + "name": "S4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 75.0 + }, + "name": "R4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "I3", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 55.0 + }, + "name": "OVR", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "I4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 35.0 + }, + "name": "Cn", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "F1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "I5", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "F2", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 25.0 + }, + "name": "F3", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 35.0 + }, + "name": "F4", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 45.0 + }, + "name": "Cn+4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 85.0 + }, + "name": "S1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 45.0 + }, + "name": "R1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 95.0 + }, + "name": "S2", + "logicWidth": 1 + } + ], + "submodel": { + "innerScale": 0.25, + "subComps": [ + { + "pos": { + "x": 34.0, + "y": 354.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#14", + "params": 1 + }, + { + "pos": { + "x": 34.0, + "y": 254.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#13", + "params": 1 + }, + { + "pos": { + "x": 36.5, + "y": 264.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#16", + "params": 1 + }, + { + "pos": { + "x": 36.5, + "y": 164.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#15", + "params": 1 + }, + { + "pos": { + "x": 84.0, + "y": 374.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#18", + "params": 1 + }, + { + "pos": { + "x": 36.5, + "y": 364.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#17", + "params": 1 + }, + { + "pos": { + "x": 20.0, + "y": 2.5 + }, + "id": "GUIAm2901ALUFuncDecode", + "name": "GUIAm2901ALUFuncDecode#0" + }, + { + "pos": { + "x": 45.0, + "y": 80.0 + }, + "id": "GUIAm2901ALUOneBit", + "name": "GUIAm2901ALUOneBit#0" + }, + { + "pos": { + "x": 84.0, + "y": 384.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#19", + "params": 1 + }, + { + "pos": { + "x": 95.0, + "y": 400.0 + }, + "id": "GUIxor", + "name": "GUIxor#0" + }, + { + "pos": { + "x": 24.0, + "y": 194.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#1", + "params": 1 + }, + { + "pos": { + "x": 24.0, + "y": 94.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#0", + "params": 1 + }, + { + "pos": { + "x": 26.5, + "y": 104.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#3", + "params": 1 + }, + { + "pos": { + "x": 24.0, + "y": 294.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#2", + "params": 1 + }, + { + "pos": { + "x": 26.5, + "y": 304.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#5", + "params": 1 + }, + { + "pos": { + "x": 26.5, + "y": 204.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#4", + "params": 1 + }, + { + "pos": { + "x": 45.0, + "y": 180.0 + }, + "id": "GUIAm2901ALUOneBit", + "name": "GUIAm2901ALUOneBit#1" + }, + { + "pos": { + "x": 29.0, + "y": 224.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#7", + "params": 1 + }, + { + "pos": { + "x": 45.0, + "y": 280.0 + }, + "id": "GUIAm2901ALUOneBit", + "name": "GUIAm2901ALUOneBit#2" + }, + { + "pos": { + "x": 29.0, + "y": 124.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#6", + "params": 1 + }, + { + "pos": { + "x": 45.0, + "y": 380.0 + }, + "id": "GUIAm2901ALUOneBit", + "name": "GUIAm2901ALUOneBit#3" + }, + { + "pos": { + "x": 31.5, + "y": 144.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#9", + "params": 1 + }, + { + "pos": { + "x": 29.0, + "y": 324.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#8", + "params": 1 + }, + { + "pos": { + "x": 31.5, + "y": 244.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#10", + "params": 1 + }, + { + "pos": { + "x": 34.0, + "y": 154.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#12", + "params": 1 + }, + { + "pos": { + "x": 31.5, + "y": 344.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#11", + "params": 1 + } + ], + "innerWires": [ + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I5" + }, + "pin2": { + "compName": "GUIAm2901ALUFuncDecode#0", + "pinName": "I5" + }, + "path": [ + { + "x": 5.0, + "y": 20.0 + }, + { + "x": 5.0, + "y": 7.5 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I4" + }, + "pin2": { + "compName": "GUIAm2901ALUFuncDecode#0", + "pinName": "I4" + }, + "path": [ + { + "x": 10.0, + "y": 60.0 + }, + { + "x": 10.0, + "y": 17.5 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I3" + }, + "pin2": { + "compName": "GUIAm2901ALUFuncDecode#0", + "pinName": "I3" + }, + "path": [ + { + "x": 15.0, + "y": 100.0 + }, + { + "x": 15.0, + "y": 27.5 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901ALUFuncDecode#0", + "pinName": "SBE" + }, + "pin2": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "path": [ + { + "x": 62.5, + "y": 37.5 + }, + { + "x": 62.5, + "y": 70.0 + }, + { + "x": 25.0, + "y": 70.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#0", + "pinName": "CoutE" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#1", + "pinName": "CoutE" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#2", + "pinName": "CoutE" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#3", + "pinName": "CoutE" + }, + "path": [ + { + "x": 25.0, + "y": 395.0 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901ALUFuncDecode#0", + "pinName": "CinE" + }, + "pin2": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "path": [ + { + "x": 70.0, + "y": 7.5 + }, + { + "x": 70.0, + "y": 77.5 + }, + { + "x": 27.5, + "y": 77.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#0", + "pinName": "CinE" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#1", + "pinName": "CinE" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#2", + "pinName": "CinE" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#3", + "pinName": "CinE" + }, + "path": [ + { + "x": 27.5, + "y": 405.0 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901ALUFuncDecode#0", + "pinName": "RN" + }, + "pin2": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "path": [ + { + "x": 57.5, + "y": 57.5 + }, + { + "x": 57.5, + "y": 65.0 + }, + { + "x": 30.0, + "y": 65.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#8", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#0", + "pinName": "RN" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#1", + "pinName": "RN" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#8", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#2", + "pinName": "RN" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#8", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#3", + "pinName": "RN" + }, + "path": [ + { + "x": 30.0, + "y": 425.0 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901ALUFuncDecode#0", + "pinName": "SN" + }, + "pin2": { + "compName": "WireCrossPoint#9", + "pinName": "" + }, + "path": [ + { + "x": 65.0, + "y": 27.5 + }, + { + "x": 65.0, + "y": 72.5 + }, + { + "x": 32.5, + "y": 72.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#9", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#10", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#10", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#11", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#9", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#0", + "pinName": "SN" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#10", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#1", + "pinName": "SN" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#11", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#2", + "pinName": "SN" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#11", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#3", + "pinName": "SN" + }, + "path": [ + { + "x": 32.5, + "y": 445.0 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901ALUFuncDecode#0", + "pinName": "FN" + }, + "pin2": { + "compName": "WireCrossPoint#12", + "pinName": "" + }, + "path": [ + { + "x": 60.0, + "y": 47.5 + }, + { + "x": 60.0, + "y": 67.5 + }, + { + "x": 35.0, + "y": 67.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#12", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#13", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#13", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#14", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#12", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#0", + "pinName": "FN" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#13", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#1", + "pinName": "FN" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#14", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#2", + "pinName": "FN" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#14", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#3", + "pinName": "FN" + }, + "path": [ + { + "x": 35.0, + "y": 455.0 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901ALUFuncDecode#0", + "pinName": "L" + }, + "pin2": { + "compName": "WireCrossPoint#15", + "pinName": "" + }, + "path": [ + { + "x": 67.5, + "y": 17.5 + }, + { + "x": 67.5, + "y": 75.0 + }, + { + "x": 37.5, + "y": 75.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#15", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#16", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#16", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#17", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#15", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#0", + "pinName": "L" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#16", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#1", + "pinName": "L" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#17", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#2", + "pinName": "L" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#17", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#3", + "pinName": "L" + }, + "path": [ + { + "x": 37.5, + "y": 465.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "R1" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#0", + "pinName": "R" + }, + "path": [ + { + "x": 10.0, + "y": 180.0 + }, + { + "x": 10.0, + "y": 115.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "R2" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#1", + "pinName": "R" + }, + "path": [ + { + "x": 10.0, + "y": 220.0 + }, + { + "x": 10.0, + "y": 215.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "R3" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#2", + "pinName": "R" + }, + "path": [ + { + "x": 10.0, + "y": 260.0 + }, + { + "x": 10.0, + "y": 315.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "R4" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#3", + "pinName": "R" + }, + "path": [ + { + "x": 20.0, + "y": 300.0 + }, + { + "x": 20.0, + "y": 415.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "S1" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#0", + "pinName": "S" + }, + "path": [ + { + "x": 15.0, + "y": 340.0 + }, + { + "x": 15.0, + "y": 135.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "S2" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#1", + "pinName": "S" + }, + "path": [ + { + "x": 5.0, + "y": 380.0 + }, + { + "x": 5.0, + "y": 235.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "S3" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#2", + "pinName": "S" + }, + "path": [ + { + "x": 10.0, + "y": 420.0 + }, + { + "x": 10.0, + "y": 335.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "S4" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#3", + "pinName": "S" + }, + "path": [ + { + "x": 10.0, + "y": 460.0 + }, + { + "x": 10.0, + "y": 435.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "Cn" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#0", + "pinName": "Cin" + }, + "path": [ + { + "x": 5.0, + "y": 140.0 + }, + { + "x": 5.0, + "y": 85.0 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901ALUOneBit#0", + "pinName": "Cout" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#1", + "pinName": "Cin" + }, + "path": [ + { + "x": 85.0, + "y": 85.0 + }, + { + "x": 85.0, + "y": 175.0 + }, + { + "x": 40.0, + "y": 175.0 + }, + { + "x": 40.0, + "y": 185.0 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901ALUOneBit#1", + "pinName": "Cout" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#2", + "pinName": "Cin" + }, + "path": [ + { + "x": 85.0, + "y": 185.0 + }, + { + "x": 85.0, + "y": 275.0 + }, + { + "x": 40.0, + "y": 275.0 + }, + { + "x": 40.0, + "y": 285.0 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901ALUOneBit#2", + "pinName": "Cout" + }, + "pin2": { + "compName": "WireCrossPoint#18", + "pinName": "" + }, + "path": [ + { + "x": 85.0, + "y": 285.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#18", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#3", + "pinName": "Cin" + }, + "path": [ + { + "x": 40.0, + "y": 375.0 + }, + { + "x": 40.0, + "y": 385.0 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901ALUOneBit#3", + "pinName": "Cout" + }, + "pin2": { + "compName": "WireCrossPoint#19", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIAm2901ALUOneBit#0", + "pinName": "F" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "F1" + }, + "path": [ + { + "x": 90.0, + "y": 95.0 + }, + { + "x": 90.0, + "y": 20.0 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901ALUOneBit#1", + "pinName": "F" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "F2" + }, + "path": [ + { + "x": 95.0, + "y": 195.0 + }, + { + "x": 95.0, + "y": 60.0 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901ALUOneBit#2", + "pinName": "F" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "F3" + }, + "path": [ + { + "x": 100.0, + "y": 295.0 + }, + { + "x": 100.0, + "y": 100.0 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901ALUOneBit#3", + "pinName": "F" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "F4" + }, + "path": [ + { + "x": 105.0, + "y": 395.0 + }, + { + "x": 105.0, + "y": 140.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#18", + "pinName": "" + }, + "pin2": { + "compName": "GUIxor#0", + "pinName": "A" + }, + "path": [ + { + "x": 90.0, + "y": 375.0 + }, + { + "x": 90.0, + "y": 405.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#19", + "pinName": "" + }, + "pin2": { + "compName": "GUIxor#0", + "pinName": "B" + }, + "path": [ + { + "x": 85.0, + "y": 415.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#19", + "pinName": "" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Cn+4" + }, + "path": [ + { + "x": 130.0, + "y": 385.0 + }, + { + "x": 130.0, + "y": 180.0 + } + ] + }, + { + "pin1": { + "compName": "GUIxor#0", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "OVR" + } + } + ] + }, + "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", + "symbolRendererParams": { + "centerText": "GUIAm2901ALUInclDecode", + "horizontalComponentCenter": 17.5, + "centerTextHeight": 5.0, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/components/am2901/GUIAm2901ALUInclSourceDecodeInclFunctionDecode.json b/net.mograsim.logic.model.am2900/components/am2901/GUIAm2901ALUInclSourceDecodeInclFunctionDecode.json new file mode 100644 index 00000000..75c63dd1 --- /dev/null +++ b/net.mograsim.logic.model.am2900/components/am2901/GUIAm2901ALUInclSourceDecodeInclFunctionDecode.json @@ -0,0 +1,1313 @@ +mograsim version: 0.1.3 +{ + "width": 35.0, + "height": 230.0, + "interfacePins": [ + { + "location": { + "x": 0.0, + "y": 195.0 + }, + "name": "Q1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 205.0 + }, + "name": "Q2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 215.0 + }, + "name": "Q3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 225.0 + }, + "name": "Q4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 55.0 + }, + "name": "I0", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 45.0 + }, + "name": "I1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 35.0 + }, + "name": "I2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "I3", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 55.0 + }, + "name": "OVR", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "I4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 65.0 + }, + "name": "Cn", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "I5", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 115.0 + }, + "name": "A1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 125.0 + }, + "name": "A2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 135.0 + }, + "name": "A3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 145.0 + }, + "name": "A4", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 45.0 + }, + "name": "Cn+4", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "F1", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "F2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 75.0 + }, + "name": "D1", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 25.0 + }, + "name": "F3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 85.0 + }, + "name": "D2", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 35.0 + }, + "name": "F4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 95.0 + }, + "name": "D3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 155.0 + }, + "name": "B1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 105.0 + }, + "name": "D4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 165.0 + }, + "name": "B2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 175.0 + }, + "name": "B3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 185.0 + }, + "name": "B4", + "logicWidth": 1 + } + ], + "submodel": { + "innerScale": 0.25, + "subComps": [ + { + "pos": { + "x": 45.0, + "y": 575.0 + }, + "id": "GUIsel3_4", + "name": "GUIsel3_4#0" + }, + { + "pos": { + "x": 14.0, + "y": 499.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#1", + "params": 1 + }, + { + "pos": { + "x": 9.0, + "y": 459.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#0", + "params": 1 + }, + { + "pos": { + "x": 60.0, + "y": 15.0 + }, + "id": "GUIAm2901ALUInclDecode", + "name": "GUIAm2901ALUInclDecode#0" + }, + { + "pos": { + "x": 24.0, + "y": 579.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#3", + "params": 1 + }, + { + "pos": { + "x": 19.0, + "y": 539.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#2", + "params": 1 + }, + { + "pos": { + "x": 45.0, + "y": 365.0 + }, + "id": "GUIsel2_4", + "name": "GUIsel2_4#0" + }, + { + "pos": { + "x": 15.0, + "y": 165.0 + }, + "id": "GUIAm2901SourceDecode", + "name": "GUIAm2901SourceDecode#0" + } + ], + "innerWires": [ + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I5" + }, + "pin2": { + "compName": "GUIAm2901ALUInclDecode#0", + "pinName": "I5" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I4" + }, + "pin2": { + "compName": "GUIAm2901ALUInclDecode#0", + "pinName": "I4" + }, + "path": [ + { + "x": 5.0, + "y": 60.0 + }, + { + "x": 5.0, + "y": 30.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I3" + }, + "pin2": { + "compName": "GUIAm2901ALUInclDecode#0", + "pinName": "I3" + }, + "path": [ + { + "x": 15.0, + "y": 100.0 + }, + { + "x": 15.0, + "y": 40.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I2" + }, + "pin2": { + "compName": "GUIAm2901SourceDecode#0", + "pinName": "I2" + }, + "path": [ + { + "x": 5.0, + "y": 140.0 + }, + { + "x": 5.0, + "y": 170.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I1" + }, + "pin2": { + "compName": "GUIAm2901SourceDecode#0", + "pinName": "I1" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I0" + }, + "pin2": { + "compName": "GUIAm2901SourceDecode#0", + "pinName": "I0" + }, + "path": [ + { + "x": 5.0, + "y": 220.0 + }, + { + "x": 5.0, + "y": 190.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "Cn" + }, + "pin2": { + "compName": "GUIAm2901ALUInclDecode#0", + "pinName": "Cn" + }, + "path": [ + { + "x": 10.0, + "y": 260.0 + }, + { + "x": 10.0, + "y": 50.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "D1" + }, + "pin2": { + "compName": "GUIsel2_4#0", + "pinName": "A1" + }, + "path": [ + { + "x": 15.0, + "y": 300.0 + }, + { + "x": 15.0, + "y": 390.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "D2" + }, + "pin2": { + "compName": "GUIsel2_4#0", + "pinName": "A2" + }, + "path": [ + { + "x": 10.0, + "y": 340.0 + }, + { + "x": 10.0, + "y": 400.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "D3" + }, + "pin2": { + "compName": "GUIsel2_4#0", + "pinName": "A3" + }, + "path": [ + { + "x": 5.0, + "y": 380.0 + }, + { + "x": 5.0, + "y": 410.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "D4" + }, + "pin2": { + "compName": "GUIsel2_4#0", + "pinName": "A4" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A1" + }, + "pin2": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A2" + }, + "pin2": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A3" + }, + "pin2": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A4" + }, + "pin2": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel2_4#0", + "pinName": "B1" + }, + "path": [ + { + "x": 10.0, + "y": 430.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel2_4#0", + "pinName": "B2" + }, + "path": [ + { + "x": 15.0, + "y": 440.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel2_4#0", + "pinName": "B3" + }, + "path": [ + { + "x": 20.0, + "y": 450.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel2_4#0", + "pinName": "B4" + }, + "path": [ + { + "x": 25.0, + "y": 460.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel3_4#0", + "pinName": "A1" + }, + "path": [ + { + "x": 10.0, + "y": 610.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel3_4#0", + "pinName": "A2" + }, + "path": [ + { + "x": 15.0, + "y": 620.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel3_4#0", + "pinName": "A3" + }, + "path": [ + { + "x": 20.0, + "y": 630.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel3_4#0", + "pinName": "A4" + }, + "path": [ + { + "x": 25.0, + "y": 640.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B1" + }, + "pin2": { + "compName": "GUIsel3_4#0", + "pinName": "B1" + }, + "path": [ + { + "x": 5.0, + "y": 620.0 + }, + { + "x": 5.0, + "y": 650.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B2" + }, + "pin2": { + "compName": "GUIsel3_4#0", + "pinName": "B2" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B3" + }, + "pin2": { + "compName": "GUIsel3_4#0", + "pinName": "B3" + }, + "path": [ + { + "x": 5.0, + "y": 700.0 + }, + { + "x": 5.0, + "y": 670.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B4" + }, + "pin2": { + "compName": "GUIsel3_4#0", + "pinName": "B4" + }, + "path": [ + { + "x": 10.0, + "y": 740.0 + }, + { + "x": 10.0, + "y": 680.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "Q1" + }, + "pin2": { + "compName": "GUIsel3_4#0", + "pinName": "C1" + }, + "path": [ + { + "x": 15.0, + "y": 780.0 + }, + { + "x": 15.0, + "y": 690.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "Q2" + }, + "pin2": { + "compName": "GUIsel3_4#0", + "pinName": "C2" + }, + "path": [ + { + "x": 20.0, + "y": 820.0 + }, + { + "x": 20.0, + "y": 700.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "Q3" + }, + "pin2": { + "compName": "GUIsel3_4#0", + "pinName": "C3" + }, + "path": [ + { + "x": 25.0, + "y": 860.0 + }, + { + "x": 25.0, + "y": 710.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "Q4" + }, + "pin2": { + "compName": "GUIsel3_4#0", + "pinName": "C4" + }, + "path": [ + { + "x": 30.0, + "y": 900.0 + }, + { + "x": 30.0, + "y": 720.0 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901SourceDecode#0", + "pinName": "SQ" + }, + "pin2": { + "compName": "GUIsel3_4#0", + "pinName": "SC" + }, + "path": [ + { + "x": 75.0, + "y": 170.0 + }, + { + "x": 75.0, + "y": 240.0 + }, + { + "x": 30.0, + "y": 240.0 + }, + { + "x": 30.0, + "y": 600.0 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901SourceDecode#0", + "pinName": "RA" + }, + "pin2": { + "compName": "GUIsel2_4#0", + "pinName": "SB" + }, + "path": [ + { + "x": 70.0, + "y": 180.0 + }, + { + "x": 70.0, + "y": 235.0 + }, + { + "x": 20.0, + "y": 235.0 + }, + { + "x": 20.0, + "y": 380.0 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901SourceDecode#0", + "pinName": "SB" + }, + "pin2": { + "compName": "GUIsel3_4#0", + "pinName": "SB" + }, + "path": [ + { + "x": 65.0, + "y": 190.0 + }, + { + "x": 65.0, + "y": 230.0 + }, + { + "x": 35.0, + "y": 230.0 + }, + { + "x": 35.0, + "y": 590.0 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901SourceDecode#0", + "pinName": "SA" + }, + "pin2": { + "compName": "GUIsel3_4#0", + "pinName": "SA" + }, + "path": [ + { + "x": 60.0, + "y": 200.0 + }, + { + "x": 60.0, + "y": 225.0 + }, + { + "x": 40.0, + "y": 225.0 + }, + { + "x": 40.0, + "y": 580.0 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901SourceDecode#0", + "pinName": "RD" + }, + "pin2": { + "compName": "GUIsel2_4#0", + "pinName": "SA" + }, + "path": [ + { + "x": 55.0, + "y": 210.0 + }, + { + "x": 55.0, + "y": 220.0 + }, + { + "x": 25.0, + "y": 220.0 + }, + { + "x": 25.0, + "y": 370.0 + } + ] + }, + { + "pin1": { + "compName": "GUIsel2_4#0", + "pinName": "Y1" + }, + "pin2": { + "compName": "GUIAm2901ALUInclDecode#0", + "pinName": "R1" + }, + "path": [ + { + "x": 82.5, + "y": 370.0 + }, + { + "x": 82.5, + "y": 162.5 + }, + { + "x": 20.0, + "y": 162.5 + }, + { + "x": 20.0, + "y": 60.0 + } + ] + }, + { + "pin1": { + "compName": "GUIsel2_4#0", + "pinName": "Y2" + }, + "pin2": { + "compName": "GUIAm2901ALUInclDecode#0", + "pinName": "R2" + }, + "path": [ + { + "x": 85.0, + "y": 380.0 + }, + { + "x": 85.0, + "y": 160.0 + }, + { + "x": 22.5, + "y": 160.0 + }, + { + "x": 22.5, + "y": 70.0 + } + ] + }, + { + "pin1": { + "compName": "GUIsel2_4#0", + "pinName": "Y3" + }, + "pin2": { + "compName": "GUIAm2901ALUInclDecode#0", + "pinName": "R3" + }, + "path": [ + { + "x": 87.5, + "y": 390.0 + }, + { + "x": 87.5, + "y": 157.5 + }, + { + "x": 25.0, + "y": 157.5 + }, + { + "x": 25.0, + "y": 80.0 + } + ] + }, + { + "pin1": { + "compName": "GUIsel2_4#0", + "pinName": "Y4" + }, + "pin2": { + "compName": "GUIAm2901ALUInclDecode#0", + "pinName": "R4" + }, + "path": [ + { + "x": 90.0, + "y": 400.0 + }, + { + "x": 90.0, + "y": 155.0 + }, + { + "x": 27.5, + "y": 155.0 + }, + { + "x": 27.5, + "y": 90.0 + } + ] + }, + { + "pin1": { + "compName": "GUIsel3_4#0", + "pinName": "Y1" + }, + "pin2": { + "compName": "GUIAm2901ALUInclDecode#0", + "pinName": "S1" + }, + "path": [ + { + "x": 92.5, + "y": 580.0 + }, + { + "x": 92.5, + "y": 152.5 + }, + { + "x": 30.0, + "y": 152.5 + }, + { + "x": 30.0, + "y": 100.0 + } + ] + }, + { + "pin1": { + "compName": "GUIsel3_4#0", + "pinName": "Y2" + }, + "pin2": { + "compName": "GUIAm2901ALUInclDecode#0", + "pinName": "S2" + }, + "path": [ + { + "x": 95.0, + "y": 590.0 + }, + { + "x": 95.0, + "y": 150.0 + }, + { + "x": 32.5, + "y": 150.0 + }, + { + "x": 32.5, + "y": 110.0 + } + ] + }, + { + "pin1": { + "compName": "GUIsel3_4#0", + "pinName": "Y3" + }, + "pin2": { + "compName": "GUIAm2901ALUInclDecode#0", + "pinName": "S3" + }, + "path": [ + { + "x": 97.5, + "y": 600.0 + }, + { + "x": 97.5, + "y": 147.5 + }, + { + "x": 35.0, + "y": 147.5 + }, + { + "x": 35.0, + "y": 120.0 + } + ] + }, + { + "pin1": { + "compName": "GUIsel3_4#0", + "pinName": "Y4" + }, + "pin2": { + "compName": "GUIAm2901ALUInclDecode#0", + "pinName": "S4" + }, + "path": [ + { + "x": 100.0, + "y": 610.0 + }, + { + "x": 100.0, + "y": 145.0 + }, + { + "x": 37.5, + "y": 145.0 + }, + { + "x": 37.5, + "y": 130.0 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901ALUInclDecode#0", + "pinName": "F1" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "F1" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIAm2901ALUInclDecode#0", + "pinName": "F2" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "F2" + }, + "path": [ + { + "x": 135.0, + "y": 30.0 + }, + { + "x": 135.0, + "y": 60.0 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901ALUInclDecode#0", + "pinName": "F3" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "F3" + }, + "path": [ + { + "x": 130.0, + "y": 40.0 + }, + { + "x": 130.0, + "y": 100.0 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901ALUInclDecode#0", + "pinName": "F4" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "F4" + }, + "path": [ + { + "x": 125.0, + "y": 50.0 + }, + { + "x": 125.0, + "y": 140.0 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901ALUInclDecode#0", + "pinName": "Cn+4" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Cn+4" + }, + "path": [ + { + "x": 120.0, + "y": 60.0 + }, + { + "x": 120.0, + "y": 180.0 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901ALUInclDecode#0", + "pinName": "OVR" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "OVR" + }, + "path": [ + { + "x": 115.0, + "y": 70.0 + }, + { + "x": 115.0, + "y": 220.0 + } + ] + } + ] + }, + "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", + "symbolRendererParams": { + "centerText": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode", + "horizontalComponentCenter": 17.5, + "centerTextHeight": 5.0, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/components/am2901/GUIAm2901ALUOneBit.json b/net.mograsim.logic.model.am2900/components/am2901/GUIAm2901ALUOneBit.json new file mode 100644 index 00000000..b6b05e1d --- /dev/null +++ b/net.mograsim.logic.model.am2900/components/am2901/GUIAm2901ALUOneBit.json @@ -0,0 +1,521 @@ +mograsim version: 0.1.3 +{ + "width": 35.0, + "height": 90.0, + "interfacePins": [ + { + "location": { + "x": 0.0, + "y": 35.0 + }, + "name": "R", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 55.0 + }, + "name": "S", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "F", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 75.0 + }, + "name": "FN", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "Cin", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 65.0 + }, + "name": "SN", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Cout", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 45.0 + }, + "name": "RN", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 85.0 + }, + "name": "L", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "CinE", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "CoutE", + "logicWidth": 1 + } + ], + "submodel": { + "innerScale": 0.2, + "subComps": [ + { + "pos": { + "x": 60.0, + "y": 55.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#0", + "params": 1 + }, + { + "pos": { + "x": 54.0, + "y": 69.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#1", + "params": 1 + }, + { + "pos": { + "x": 49.0, + "y": 59.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#0", + "params": 1 + }, + { + "pos": { + "x": 90.0, + "y": 70.0 + }, + "id": "GUImux1", + "name": "GUImux1#0" + }, + { + "pos": { + "x": 10.0, + "y": 20.0 + }, + "id": "GUIand", + "name": "GUIand#0" + }, + { + "pos": { + "x": 10.0, + "y": 290.0 + }, + "id": "GUIxor", + "name": "GUIxor#1" + }, + { + "pos": { + "x": 135.0, + "y": 70.0 + }, + "id": "GUIxor", + "name": "GUIxor#2" + }, + { + "pos": { + "x": 60.0, + "y": 20.0 + }, + "id": "GUIfulladder", + "name": "GUIfulladder#0" + }, + { + "pos": { + "x": 10.0, + "y": 190.0 + }, + "id": "GUIxor", + "name": "GUIxor#0" + }, + { + "pos": { + "x": 135.0, + "y": 20.0 + }, + "id": "GUIand", + "name": "GUIand#1" + } + ], + "innerWires": [ + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "Cin" + }, + "pin2": { + "compName": "GUIand#0", + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "CoutE" + }, + "pin2": { + "compName": "GUIand#1", + "pinName": "A" + }, + "path": [ + { + "x": 5.0, + "y": 75.0 + }, + { + "x": 5.0, + "y": 10.0 + }, + { + "x": 130.0, + "y": 10.0 + }, + { + "x": 130.0, + "y": 25.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "CinE" + }, + "pin2": { + "compName": "GUIand#0", + "pinName": "B" + }, + "path": [ + { + "x": 7.5, + "y": 125.0 + }, + { + "x": 7.5, + "y": 35.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "R" + }, + "pin2": { + "compName": "GUIxor#0", + "pinName": "A" + } + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "RN" + }, + "pin2": { + "compName": "GUIxor#0", + "pinName": "B" + } + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "S" + }, + "pin2": { + "compName": "GUIxor#1", + "pinName": "A" + } + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "SN" + }, + "pin2": { + "compName": "GUIxor#1", + "pinName": "B" + } + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "FN" + }, + "pin2": { + "compName": "GUIxor#2", + "pinName": "B" + }, + "path": [ + { + "x": 130.0, + "y": 375.0 + }, + { + "x": 130.0, + "y": 85.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "L" + }, + "pin2": { + "compName": "GUImux1#0", + "pinName": "S0" + }, + "path": [ + { + "x": 87.5, + "y": 425.0 + }, + { + "x": 87.5, + "y": 75.0 + } + ] + }, + { + "pin1": { + "compName": "GUIand#0", + "pinName": "Y" + }, + "pin2": { + "compName": "GUIfulladder#0", + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIxor#0", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "path": [ + { + "x": 50.0, + "y": 195.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUIfulladder#0", + "pinName": "B" + }, + "path": [ + { + "x": 50.0, + "y": 35.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIxor#1", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "path": [ + { + "x": 55.0, + "y": 295.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUIfulladder#0", + "pinName": "C" + }, + "path": [ + { + "x": 55.0, + "y": 45.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIfulladder#0", + "pinName": "Y" + }, + "pin2": { + "compName": "GUImux1#0", + "pinName": "I0" + }, + "path": [ + { + "x": 100.0, + "y": 25.0 + }, + { + "x": 100.0, + "y": 65.0 + }, + { + "x": 85.0, + "y": 65.0 + }, + { + "x": 85.0, + "y": 85.0 + } + ] + }, + { + "pin1": { + "compName": "GUIfulladder#0", + "pinName": "Z" + }, + "pin2": { + "compName": "GUIand#1", + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUINandGate#0", + "pinName": "Y" + }, + "pin2": { + "compName": "GUImux1#0", + "pinName": "I1" + }, + "path": [ + { + "x": 82.5, + "y": 65.0 + }, + { + "x": 82.5, + "y": 95.0 + } + ] + }, + { + "pin1": { + "compName": "GUImux1#0", + "pinName": "Y" + }, + "pin2": { + "compName": "GUIxor#2", + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIand#1", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Cout" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIxor#2", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "F" + }, + "path": [] + } + ] + }, + "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", + "symbolRendererParams": { + "centerText": "GUIAm2901ALUOneBit", + "horizontalComponentCenter": 17.5, + "centerTextHeight": 5.0, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/components/am2901/GUIAm2901DestDecode.json b/net.mograsim.logic.model.am2900/components/am2901/GUIAm2901DestDecode.json new file mode 100644 index 00000000..d80d0806 --- /dev/null +++ b/net.mograsim.logic.model.am2900/components/am2901/GUIAm2901DestDecode.json @@ -0,0 +1,1035 @@ +mograsim version: 0.1.3 +{ + "width": 35.0, + "height": 60.0, + "interfacePins": [ + { + "location": { + "x": 35.0, + "y": 45.0 + }, + "name": "LSH", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "NSH", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "RSH", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "I6", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 35.0 + }, + "name": "YF", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "I7", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 25.0 + }, + "name": "RAMWE", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 55.0 + }, + "name": "QWE", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "I8", + "logicWidth": 1 + } + ], + "submodel": { + "innerScale": 0.25, + "subComps": [ + { + "pos": { + "x": 15.0, + "y": 50.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#1", + "params": 1 + }, + { + "pos": { + "x": 74.0, + "y": 159.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#14", + "params": 1 + }, + { + "pos": { + "x": 15.0, + "y": 10.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#0", + "params": 1 + }, + { + "pos": { + "x": 74.0, + "y": 104.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#13", + "params": 1 + }, + { + "pos": { + "x": 15.0, + "y": 150.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#3", + "params": 1 + }, + { + "pos": { + "x": 15.0, + "y": 90.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#2", + "params": 1 + }, + { + "pos": { + "x": 109.0, + "y": 214.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#15", + "params": 1 + }, + { + "pos": { + "x": 4.0, + "y": 14.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#1", + "params": 1 + }, + { + "pos": { + "x": 4.0, + "y": 19.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#0", + "params": 1 + }, + { + "pos": { + "x": 9.0, + "y": 59.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#3", + "params": 1 + }, + { + "pos": { + "x": 4.0, + "y": 24.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#2", + "params": 1 + }, + { + "pos": { + "x": 9.0, + "y": 104.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#5", + "params": 1 + }, + { + "pos": { + "x": 9.0, + "y": 64.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#4", + "params": 1 + }, + { + "pos": { + "x": 39.0, + "y": 59.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#7", + "params": 1 + }, + { + "pos": { + "x": 4.0, + "y": 154.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#6", + "params": 1 + }, + { + "pos": { + "x": 44.0, + "y": 54.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#9", + "params": 1 + }, + { + "pos": { + "x": 44.0, + "y": 19.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#8", + "params": 1 + }, + { + "pos": { + "x": 39.0, + "y": 134.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#10", + "params": 1 + }, + { + "pos": { + "x": 74.0, + "y": 99.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#12", + "params": 1 + }, + { + "pos": { + "x": 74.0, + "y": 19.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#11", + "params": 1 + }, + { + "pos": { + "x": 115.0, + "y": 210.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#12", + "params": 1 + }, + { + "pos": { + "x": 110.0, + "y": 105.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#11", + "params": 1 + }, + { + "pos": { + "x": 80.0, + "y": 145.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#10", + "params": 1 + }, + { + "pos": { + "x": 80.0, + "y": 90.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#9", + "params": 1 + }, + { + "pos": { + "x": 80.0, + "y": 10.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#8", + "params": 1 + }, + { + "pos": { + "x": 50.0, + "y": 50.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#5", + "params": 1 + }, + { + "pos": { + "x": 50.0, + "y": 10.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#4", + "params": 1 + }, + { + "pos": { + "x": 50.0, + "y": 130.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#7", + "params": 1 + }, + { + "pos": { + "x": 50.0, + "y": 90.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#6", + "params": 1 + } + ], + "innerWires": [ + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I8" + }, + "pin2": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I7" + }, + "pin2": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "A" + }, + "path": [ + { + "x": 10.0, + "y": 55.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#2", + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#2", + "pinName": "A" + }, + "path": [ + { + "x": 5.0, + "y": 95.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I6" + }, + "pin2": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "path": [ + { + "x": 5.0, + "y": 100.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#3", + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#3", + "pinName": "B" + }, + "path": [ + { + "x": 5.0, + "y": 165.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#4", + "pinName": "A" + }, + "path": [ + { + "x": 5.0, + "y": 5.0 + }, + { + "x": 40.0, + "y": 5.0 + }, + { + "x": 40.0, + "y": 15.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#1", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#4", + "pinName": "B" + }, + "path": [ + { + "x": 40.0, + "y": 25.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#5", + "pinName": "B" + }, + "path": [ + { + "x": 40.0, + "y": 65.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#0", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#8", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#8", + "pinName": "" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "NSH" + }, + "path": [ + { + "x": 45.0, + "y": 5.0 + }, + { + "x": 135.0, + "y": 5.0 + }, + { + "x": 135.0, + "y": 20.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#8", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#9", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#9", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#5", + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#9", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#6", + "pinName": "A" + }, + "path": [ + { + "x": 45.0, + "y": 95.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#6", + "pinName": "B" + }, + "path": [ + { + "x": 10.0, + "y": 115.0 + }, + { + "x": 45.0, + "y": 115.0 + }, + { + "x": 45.0, + "y": 105.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#2", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#10", + "pinName": "" + }, + "path": [ + { + "x": 40.0, + "y": 100.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#10", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#7", + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#10", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#7", + "pinName": "B" + }, + "path": [ + { + "x": 40.0, + "y": 145.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#4", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#11", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#11", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#8", + "pinName": "A" + }, + "path": [ + { + "x": 75.0, + "y": 15.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#11", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#8", + "pinName": "B" + }, + "path": [ + { + "x": 75.0, + "y": 25.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#5", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "RAMWE" + }, + "path": [ + { + "x": 125.0, + "y": 60.0 + }, + { + "x": 125.0, + "y": 100.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#6", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#12", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#12", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#9", + "pinName": "A" + }, + "path": [ + { + "x": 75.0, + "y": 95.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#12", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#13", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#13", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#9", + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUINandGate#7", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "LSH" + }, + "path": [ + { + "x": 125.0, + "y": 140.0 + }, + { + "x": 125.0, + "y": 180.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#13", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#10", + "pinName": "A" + }, + "path": [ + { + "x": 75.0, + "y": 150.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#3", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#14", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#14", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#10", + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUINandGate#8", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "RSH" + }, + "path": [ + { + "x": 130.0, + "y": 20.0 + }, + { + "x": 130.0, + "y": 60.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#9", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#11", + "pinName": "A" + } + }, + { + "pin1": { + "compName": "WireCrossPoint#14", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#11", + "pinName": "B" + }, + "path": [ + { + "x": 75.0, + "y": 170.0 + }, + { + "x": 105.0, + "y": 170.0 + }, + { + "x": 105.0, + "y": 120.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#10", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#15", + "pinName": "" + }, + "path": [ + { + "x": 110.0, + "y": 155.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#15", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#12", + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#15", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#12", + "pinName": "B" + }, + "path": [ + { + "x": 110.0, + "y": 225.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#11", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "YF" + } + }, + { + "pin1": { + "compName": "GUINandGate#12", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "QWE" + }, + "path": [] + } + ] + }, + "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", + "symbolRendererParams": { + "centerText": "GUIAm2901DestDecode", + "horizontalComponentCenter": 17.5, + "centerTextHeight": 5.0, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/components/am2901/GUIAm2901QReg.json b/net.mograsim.logic.model.am2900/components/am2901/GUIAm2901QReg.json new file mode 100644 index 00000000..6af804d7 --- /dev/null +++ b/net.mograsim.logic.model.am2900/components/am2901/GUIAm2901QReg.json @@ -0,0 +1,408 @@ +mograsim version: 0.1.3 +{ + "width": 35.0, + "height": 60.0, + "interfacePins": [ + { + "location": { + "x": 0.0, + "y": 55.0 + }, + "name": "D4", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Q1", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "Q2", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 25.0 + }, + "name": "Q3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "C", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 35.0 + }, + "name": "Q4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "D1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "WE", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 35.0 + }, + "name": "D2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 45.0 + }, + "name": "D3", + "logicWidth": 1 + } + ], + "submodel": { + "innerScale": 0.4, + "subComps": [ + { + "pos": { + "x": 50.0, + "y": 32.5 + }, + "id": "GUIdff", + "name": "GUIdff#1" + }, + { + "pos": { + "x": 50.0, + "y": 7.5 + }, + "id": "GUIdff", + "name": "GUIdff#0" + }, + { + "pos": { + "x": 41.5, + "y": 36.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#1", + "params": 1 + }, + { + "pos": { + "x": 41.5, + "y": 19.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#0", + "params": 1 + }, + { + "pos": { + "x": 41.5, + "y": 61.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#2", + "params": 1 + }, + { + "pos": { + "x": 5.0, + "y": 15.0 + }, + "id": "GUIand", + "name": "GUIand#0" + }, + { + "pos": { + "x": 50.0, + "y": 82.5 + }, + "id": "GUIdff", + "name": "GUIdff#3" + }, + { + "pos": { + "x": 50.0, + "y": 57.5 + }, + "id": "GUIdff", + "name": "GUIdff#2" + } + ], + "innerWires": [ + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "C" + }, + "pin2": { + "compName": "GUIand#0", + "pinName": "A" + } + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "WE" + }, + "pin2": { + "compName": "GUIand#0", + "pinName": "B" + } + }, + { + "pin1": { + "compName": "GUIand#0", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUIdff#0", + "pinName": "C" + }, + "path": [ + { + "x": 42.5, + "y": 12.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUIdff#1", + "pinName": "C" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUIdff#2", + "pinName": "C" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUIdff#3", + "pinName": "C" + }, + "path": [ + { + "x": 42.5, + "y": 87.5 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "D1" + }, + "pin2": { + "compName": "GUIdff#0", + "pinName": "D" + }, + "path": [ + { + "x": 17.5, + "y": 62.5 + }, + { + "x": 17.5, + "y": 42.5 + }, + { + "x": 45.0, + "y": 42.5 + }, + { + "x": 45.0, + "y": 22.5 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "D2" + }, + "pin2": { + "compName": "GUIdff#1", + "pinName": "D" + }, + "path": [ + { + "x": 22.5, + "y": 87.5 + }, + { + "x": 22.5, + "y": 47.5 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "D3" + }, + "pin2": { + "compName": "GUIdff#2", + "pinName": "D" + }, + "path": [ + { + "x": 27.5, + "y": 112.5 + }, + { + "x": 27.5, + "y": 72.5 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "D4" + }, + "pin2": { + "compName": "GUIdff#3", + "pinName": "D" + }, + "path": [ + { + "x": 32.5, + "y": 137.5 + }, + { + "x": 32.5, + "y": 97.5 + } + ] + }, + { + "pin1": { + "compName": "GUIdff#0", + "pinName": "Q" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Q1" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdff#1", + "pinName": "Q" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Q2" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdff#2", + "pinName": "Q" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Q3" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdff#3", + "pinName": "Q" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Q4" + }, + "path": [] + } + ] + }, + "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", + "symbolRendererParams": { + "centerText": "GUIAm2901QReg", + "horizontalComponentCenter": 17.5, + "centerTextHeight": 5.0, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/components/am2901/GUIAm2901SourceDecode.json b/net.mograsim.logic.model.am2900/components/am2901/GUIAm2901SourceDecode.json new file mode 100644 index 00000000..e36193d9 --- /dev/null +++ b/net.mograsim.logic.model.am2900/components/am2901/GUIAm2901SourceDecode.json @@ -0,0 +1,1076 @@ +mograsim version: 0.1.3 +{ + "width": 35.0, + "height": 50.0, + "interfacePins": [ + { + "location": { + "x": 35.0, + "y": 45.0 + }, + "name": "RD", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "I0", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "I1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "I2", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "SQ", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 35.0 + }, + "name": "SA", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "RA", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 25.0 + }, + "name": "SB", + "logicWidth": 1 + } + ], + "submodel": { + "innerScale": 0.25, + "subComps": [ + { + "pos": { + "x": 10.0, + "y": 50.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#1", + "params": 1 + }, + { + "pos": { + "x": 94.0, + "y": 19.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#14", + "params": 1 + }, + { + "pos": { + "x": 10.0, + "y": 10.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#0", + "params": 1 + }, + { + "pos": { + "x": 64.0, + "y": 139.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#13", + "params": 1 + }, + { + "pos": { + "x": 40.0, + "y": 10.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#3", + "params": 1 + }, + { + "pos": { + "x": 10.0, + "y": 90.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#2", + "params": 1 + }, + { + "pos": { + "x": 94.0, + "y": 179.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#15", + "params": 1 + }, + { + "pos": { + "x": 6.5, + "y": 19.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#1", + "params": 1 + }, + { + "pos": { + "x": 4.0, + "y": 19.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#0", + "params": 1 + }, + { + "pos": { + "x": 6.5, + "y": 59.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#3", + "params": 1 + }, + { + "pos": { + "x": 4.0, + "y": 144.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#2", + "params": 1 + }, + { + "pos": { + "x": 6.5, + "y": 104.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#5", + "params": 1 + }, + { + "pos": { + "x": 6.5, + "y": 99.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#4", + "params": 1 + }, + { + "pos": { + "x": 34.0, + "y": 59.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#7", + "params": 1 + }, + { + "pos": { + "x": 31.5, + "y": 54.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#6", + "params": 1 + }, + { + "pos": { + "x": 34.0, + "y": 134.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#9", + "params": 1 + }, + { + "pos": { + "x": 34.0, + "y": 64.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#8", + "params": 1 + }, + { + "pos": { + "x": 36.5, + "y": 99.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#10", + "params": 1 + }, + { + "pos": { + "x": 64.0, + "y": 99.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#12", + "params": 1 + }, + { + "pos": { + "x": 64.0, + "y": 59.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#11", + "params": 1 + }, + { + "pos": { + "x": 70.0, + "y": 170.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#12", + "params": 1 + }, + { + "pos": { + "x": 70.0, + "y": 130.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#11", + "params": 1 + }, + { + "pos": { + "x": 100.0, + "y": 170.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#14", + "params": 1 + }, + { + "pos": { + "x": 100.0, + "y": 10.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#13", + "params": 1 + }, + { + "pos": { + "x": 70.0, + "y": 90.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#10", + "params": 1 + }, + { + "pos": { + "x": 70.0, + "y": 50.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#9", + "params": 1 + }, + { + "pos": { + "x": 70.0, + "y": 10.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#8", + "params": 1 + }, + { + "pos": { + "x": 40.0, + "y": 90.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#5", + "params": 1 + }, + { + "pos": { + "x": 40.0, + "y": 50.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#4", + "params": 1 + }, + { + "pos": { + "x": 40.0, + "y": 170.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#7", + "params": 1 + }, + { + "pos": { + "x": 40.0, + "y": 130.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#6", + "params": 1 + } + ], + "innerWires": [ + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I2" + }, + "pin2": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#3", + "pinName": "A" + }, + "path": [ + { + "x": 5.0, + "y": 5.0 + }, + { + "x": 35.0, + "y": 5.0 + }, + { + "x": 35.0, + "y": 15.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "A" + }, + "path": [ + { + "x": 7.5, + "y": 15.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "B" + }, + "path": [ + { + "x": 7.5, + "y": 25.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#6", + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#12", + "pinName": "B" + }, + "path": [ + { + "x": 5.0, + "y": 195.0 + }, + { + "x": 65.0, + "y": 195.0 + }, + { + "x": 65.0, + "y": 185.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I1" + }, + "pin2": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "A" + }, + "path": [ + { + "x": 7.5, + "y": 55.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "B" + }, + "path": [ + { + "x": 7.5, + "y": 65.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I0" + }, + "pin2": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#2", + "pinName": "A" + }, + "path": [ + { + "x": 7.5, + "y": 95.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#2", + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#5", + "pinName": "B" + }, + "path": [ + { + "x": 7.5, + "y": 112.5 + }, + { + "x": 32.5, + "y": 112.5 + }, + { + "x": 32.5, + "y": 105.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#0", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "path": [ + { + "x": 32.5, + "y": 20.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#4", + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#5", + "pinName": "A" + }, + "path": [ + { + "x": 32.5, + "y": 95.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#1", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#3", + "pinName": "B" + }, + "path": [ + { + "x": 35.0, + "y": 25.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#8", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#8", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#4", + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#8", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#9", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#9", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#6", + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#9", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#7", + "pinName": "A" + }, + "path": [ + { + "x": 35.0, + "y": 175.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#2", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#10", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#10", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#8", + "pinName": "B" + }, + "path": [ + { + "x": 37.5, + "y": 35.0 + }, + { + "x": 65.0, + "y": 35.0 + }, + { + "x": 65.0, + "y": 25.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#10", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#7", + "pinName": "B" + }, + "path": [ + { + "x": 37.5, + "y": 185.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#3", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#8", + "pinName": "A" + } + }, + { + "pin1": { + "compName": "GUINandGate#4", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#11", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#11", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#9", + "pinName": "A" + }, + "path": [ + { + "x": 65.0, + "y": 55.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#11", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#9", + "pinName": "B" + }, + "path": [ + { + "x": 65.0, + "y": 65.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#5", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#12", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#12", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#10", + "pinName": "A" + }, + "path": [ + { + "x": 65.0, + "y": 95.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#12", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#10", + "pinName": "B" + }, + "path": [ + { + "x": 65.0, + "y": 105.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#6", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#13", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#13", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#11", + "pinName": "A" + }, + "path": [ + { + "x": 65.0, + "y": 135.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#13", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#11", + "pinName": "B" + }, + "path": [ + { + "x": 65.0, + "y": 145.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#7", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#12", + "pinName": "A" + } + }, + { + "pin1": { + "compName": "GUINandGate#8", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#14", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#14", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#13", + "pinName": "A" + }, + "path": [ + { + "x": 95.0, + "y": 15.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#14", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#13", + "pinName": "B" + }, + "path": [ + { + "x": 95.0, + "y": 25.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#9", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "RA" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUINandGate#10", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "SB" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUINandGate#11", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "SA" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUINandGate#12", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#15", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#15", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#14", + "pinName": "A" + }, + "path": [ + { + "x": 95.0, + "y": 175.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#15", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#14", + "pinName": "B" + }, + "path": [ + { + "x": 95.0, + "y": 185.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#13", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "SQ" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUINandGate#14", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "RD" + }, + "path": [] + } + ] + }, + "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", + "symbolRendererParams": { + "centerText": "Am2901SourceDecode", + "horizontalComponentCenter": 17.5, + "centerTextHeight": 5.0, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/examples/ComponenetSerializer.java b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/examples/ComponenetSerializer.java new file mode 100644 index 00000000..3d568e36 --- /dev/null +++ b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/examples/ComponenetSerializer.java @@ -0,0 +1,65 @@ +package net.mograsim.logic.model.examples; + +import java.io.IOException; +import java.util.function.Function; + +import net.mograsim.logic.model.model.ViewModelModifiable; +import net.mograsim.logic.model.model.components.GUIComponent; +import net.mograsim.logic.model.model.components.mi.nandbased.GUI_rsLatch; +import net.mograsim.logic.model.model.components.mi.nandbased.GUIand; +import net.mograsim.logic.model.model.components.mi.nandbased.GUIand41; +import net.mograsim.logic.model.model.components.mi.nandbased.GUIandor414; +import net.mograsim.logic.model.model.components.mi.nandbased.GUIdemux2; +import net.mograsim.logic.model.model.components.mi.nandbased.GUIdff; +import net.mograsim.logic.model.model.components.mi.nandbased.GUIdlatch; +import net.mograsim.logic.model.model.components.mi.nandbased.GUIdlatch4; +import net.mograsim.logic.model.model.components.mi.nandbased.GUIfulladder; +import net.mograsim.logic.model.model.components.mi.nandbased.GUIhalfadder; +import net.mograsim.logic.model.model.components.mi.nandbased.GUImux1; +import net.mograsim.logic.model.model.components.mi.nandbased.GUImux1_4; +import net.mograsim.logic.model.model.components.mi.nandbased.GUInand3; +import net.mograsim.logic.model.model.components.mi.nandbased.GUInot4; +import net.mograsim.logic.model.model.components.mi.nandbased.GUIor4; +import net.mograsim.logic.model.model.components.mi.nandbased.GUIor_4; +import net.mograsim.logic.model.model.components.mi.nandbased.GUIram2; +import net.mograsim.logic.model.model.components.mi.nandbased.GUIram4; +import net.mograsim.logic.model.model.components.mi.nandbased.GUIsel2_4; +import net.mograsim.logic.model.model.components.mi.nandbased.GUIsel3_4; +import net.mograsim.logic.model.model.components.mi.nandbased.GUIxor; +import net.mograsim.logic.model.model.components.mi.nandbased.am2901.GUIAm2901; +import net.mograsim.logic.model.model.components.mi.nandbased.am2901.GUIAm2901ALUFuncDecode; +import net.mograsim.logic.model.model.components.mi.nandbased.am2901.GUIAm2901ALUInclDecode; +import net.mograsim.logic.model.model.components.mi.nandbased.am2901.GUIAm2901ALUInclSourceDecodeInclFunctionDecode; +import net.mograsim.logic.model.model.components.mi.nandbased.am2901.GUIAm2901ALUOneBit; +import net.mograsim.logic.model.model.components.mi.nandbased.am2901.GUIAm2901DestDecode; +import net.mograsim.logic.model.model.components.mi.nandbased.am2901.GUIAm2901QReg; +import net.mograsim.logic.model.model.components.mi.nandbased.am2901.GUIAm2901SourceDecode; +import net.mograsim.logic.model.model.components.submodels.SubmodelComponent; +import net.mograsim.logic.model.serializing.SubmodelComponentParams; +import net.mograsim.logic.model.util.JsonHandler; + +public class ComponenetSerializer +{ + public static void main(String[] args) throws IOException + { + // we know we only use components where this works + Function getIdentifier = c -> c.getClass().getSimpleName(); + + ViewModelModifiable model = new ViewModelModifiable(); + SubmodelComponent[] components = { new GUIAm2901(model), new GUIAm2901ALUFuncDecode(model), new GUIAm2901ALUInclDecode(model), + new GUIAm2901ALUInclSourceDecodeInclFunctionDecode(model), new GUIAm2901ALUOneBit(model), new GUIAm2901DestDecode(model), + new GUIAm2901QReg(model), new GUIAm2901SourceDecode(model), new GUI_rsLatch(model), new GUIand(model), new GUIand41(model), + new GUIandor414(model), new GUIdemux2(model), new GUIdff(model), new GUIdlatch(model), new GUIdlatch4(model), + new GUIfulladder(model), new GUIhalfadder(model), new GUImux1(model), new GUImux1_4(model), new GUInand3(model), + new GUInot4(model), new GUIor4(model), new GUIor_4(model), new GUIram2(model), new GUIram4(model), new GUIsel2_4(model), + new GUIsel3_4(model), new GUIxor(model) }; + + for (SubmodelComponent comp : components) + { + SubmodelComponentParams params = comp.calculateParams(getIdentifier); + JsonHandler.writeJson(params, "components/" + + comp.getClass().getName().substring("net.mograsim.logic.ui.model.components.mi.nandbased.".length()).replace('.', '/') + + ".json"); + } + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/examples/JsonExample.java b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/examples/JsonExample.java new file mode 100644 index 00000000..120ceb6c --- /dev/null +++ b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/examples/JsonExample.java @@ -0,0 +1,149 @@ +package net.mograsim.logic.model.examples; + +import java.io.IOException; + +import com.google.gson.JsonNull; + +import net.mograsim.logic.model.SimpleLogicUIStandalone; +import net.mograsim.logic.model.model.ViewModelModifiable; +import net.mograsim.logic.model.model.components.atomic.GUIBitDisplay; +import net.mograsim.logic.model.model.components.atomic.GUIManualSwitch; +import net.mograsim.logic.model.model.components.mi.nandbased.GUI_rsLatch; +import net.mograsim.logic.model.model.components.mi.nandbased.GUIfulladder; +import net.mograsim.logic.model.model.components.submodels.SimpleRectangularSubmodelComponent; +import net.mograsim.logic.model.model.components.submodels.SubmodelComponent; +import net.mograsim.logic.model.model.wires.GUIWire; +import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator; +import net.mograsim.logic.model.serializing.SubmodelComponentDeserializer; +import net.mograsim.logic.model.serializing.SubmodelComponentParams; +import net.mograsim.logic.model.util.JsonHandler; + +public class JsonExample +{ + public static void main(String[] args) + { + SimpleLogicUIStandalone.executeVisualisation(JsonExample::basicTest); + } + + public static void mappingTest(ViewModelModifiable model) + { + IndirectGUIComponentCreator.createComponent(model, "Am2901", JsonNull.INSTANCE, "Am2901 instance"); + } + + private static class TestComponent extends SimpleRectangularSubmodelComponent + { + protected TestComponent(ViewModelModifiable model, String name) + { + super(model, 1, "Test", name); + setSubmodelScale(.4); + setInputPins("Input pin #0"); + SubmodelComponentDeserializer.create(submodelModifiable, "HalfAdder.json", "halfadder"); + } + } + + @SuppressWarnings("unused") // GUIWires being created + private static void basicTest(ViewModelModifiable viewModel) + { + GUI_rsLatch comp = new GUI_rsLatch(viewModel, "Original RS latch"); + comp.moveTo(30, 0); + SubmodelComponentParams params = comp.calculateParams(); + String jsonString = JsonHandler.toJson(params); + System.out.println(jsonString); + SubmodelComponentParams paramsD = JsonHandler.fromJson(jsonString, SubmodelComponentParams.class); + SubmodelComponent componentD = SubmodelComponentDeserializer.create(viewModel, paramsD, "Deserialized RS latch"); + componentD.moveTo(30, 50); + double h = 0; + for (String s : comp.getInputPinNames()) + { + GUIManualSwitch sw = new GUIManualSwitch(viewModel); + sw.moveTo(0, h); + new GUIWire(viewModel, sw.getOutputPin(), comp.getPin(s)); + sw = new GUIManualSwitch(viewModel); + sw.moveTo(0, h + 50); + new GUIWire(viewModel, sw.getOutputPin(), componentD.getPin(s)); + h += 20; + } + h = 0; + for (String s : comp.getOutputPinNames()) + { + GUIBitDisplay bd = new GUIBitDisplay(viewModel); + bd.moveTo(80, h); + new GUIWire(viewModel, bd.getInputPin(), comp.getPin(s)); + bd = new GUIBitDisplay(viewModel); + bd.moveTo(80, h + 50); + new GUIWire(viewModel, bd.getInputPin(), componentD.getPin(s)); + h += 20; + } + } + + // Execute only after HalfAdder.json has been created + public static void refJsonFromJsonTest(ViewModelModifiable model) + { + TestComponent t = new TestComponent(model, "Original component"); + t.calculateParams().writeJson("Test.json"); + SubmodelComponent c = SubmodelComponentDeserializer.create(model, "Test.json", "Deserialized component"); + c.moveTo(0, 50); + } + + @SuppressWarnings("unused") // for GUIWires being created + public static void createFromJsonExample(ViewModelModifiable model) + { + SimpleRectangularSubmodelComponent tmp = new GUIfulladder(model, "Original full adder"); + SubmodelComponentParams pC = tmp.calculateParams(); + tmp.moveTo(1000, 100); + try + { + pC.writeJson("FullAdder.json"); + pC = SubmodelComponentParams.readJson("FullAdder.json"); + } + catch (IOException e) + { + e.printStackTrace(); + } + + SimpleRectangularSubmodelComponent adder = (SimpleRectangularSubmodelComponent) SubmodelComponentDeserializer.create(model, + "FullAdder.json", "Deserialized full adder"); + + GUIManualSwitch swA = new GUIManualSwitch(model); + swA.moveTo(0, 0); + GUIManualSwitch swB = new GUIManualSwitch(model); + swB.moveTo(0, 25); + GUIManualSwitch swC = new GUIManualSwitch(model); + swC.moveTo(0, 50); + + adder.moveTo(30, 10); + GUIBitDisplay bdY = new GUIBitDisplay(model); + bdY.moveTo(90, 12.5); + GUIBitDisplay bdZ = new GUIBitDisplay(model); + bdZ.moveTo(90, 30); + + new GUIWire(model, swA.getOutputPin(), adder.getPin("A")); + new GUIWire(model, swB.getOutputPin(), adder.getPin("B")); + new GUIWire(model, swC.getOutputPin(), adder.getPin("C")); + + new GUIWire(model, adder.getPin("Y"), bdY.getInputPin()); + new GUIWire(model, adder.getPin("Z"), bdZ.getInputPin()); + + SubmodelComponent adder2 = SubmodelComponentDeserializer.create(model, pC, "Full adder created from params instance"); + + swA = new GUIManualSwitch(model); + swA.moveTo(0, 70); + swB = new GUIManualSwitch(model); + swB.moveTo(0, 85); + swC = new GUIManualSwitch(model); + swC.moveTo(0, 100); + + adder2.moveTo(30, 80); + bdY = new GUIBitDisplay(model); + bdY.moveTo(90, 70); + bdZ = new GUIBitDisplay(model); + bdZ.moveTo(90, 85); + + new GUIWire(model, swA.getOutputPin(), adder2.getPin("A")); + new GUIWire(model, swB.getOutputPin(), adder2.getPin("B")); + new GUIWire(model, swC.getOutputPin(), adder2.getPin("C")); + + new GUIWire(model, adder2.getPin("Y"), bdY.getInputPin()); + new GUIWire(model, adder2.getPin("Z"), bdZ.getInputPin()); + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/examples/SubmodelComponentTestbench.java b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/examples/SubmodelComponentTestbench.java new file mode 100644 index 00000000..0d9c604d --- /dev/null +++ b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/examples/SubmodelComponentTestbench.java @@ -0,0 +1,51 @@ +package net.mograsim.logic.model.examples; + +import java.util.ArrayList; +import java.util.List; + +import net.mograsim.logic.model.SimpleLogicUIStandalone; +import net.mograsim.logic.model.model.ViewModelModifiable; +import net.mograsim.logic.model.model.components.atomic.GUIBitDisplay; +import net.mograsim.logic.model.model.components.atomic.GUIManualSwitch; +import net.mograsim.logic.model.model.components.submodels.SubmodelComponent; +import net.mograsim.logic.model.model.wires.GUIWire; +import net.mograsim.logic.model.model.wires.Pin; +import net.mograsim.logic.model.serializing.SubmodelComponentDeserializer; + +public class SubmodelComponentTestbench +{ + public static void main(String[] args) + { + SimpleLogicUIStandalone.executeVisualisation(SubmodelComponentTestbench::createTestbench); + } + + @SuppressWarnings("unused") // for GUIWires being created + public static void createTestbench(ViewModelModifiable model) + { + SubmodelComponent comp = SubmodelComponentDeserializer.create(model, "components/am2901/GUIAm2901.json"); + + // guess which pins are outputs and which are inputs + // TODO this code exists three times... but it seems too "hacky" to put it in a helper class + List inputPinNames = new ArrayList<>(); + List outputPinNames = new ArrayList<>(); + for (Pin p : comp.getPins().values()) + if (p.getRelX() == 0) + inputPinNames.add(p.name); + else + outputPinNames.add(p.name); + + comp.moveTo(100, 0); + for (int i = 0; i < inputPinNames.size(); i++) + { + GUIManualSwitch sw = new GUIManualSwitch(model); + sw.moveTo(0, 20 * i); + new GUIWire(model, comp.getPin(inputPinNames.get(i)), sw.getOutputPin()); + } + for (int i = 0; i < outputPinNames.size(); i++) + { + GUIBitDisplay bd = new GUIBitDisplay(model); + bd.moveTo(200, 20 * i); + new GUIWire(model, comp.getPin(outputPinNames.get(i)), bd.getInputPin()); + } + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/GUI_rsLatch.java b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/GUI_rsLatch.java new file mode 100644 index 00000000..20fbbaa5 --- /dev/null +++ b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/GUI_rsLatch.java @@ -0,0 +1,109 @@ +package net.mograsim.logic.model.model.components.mi.nandbased; + +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.mograsim.logic.core.types.Bit; +import net.mograsim.logic.core.types.BitVector; +import net.mograsim.logic.model.model.ViewModelModifiable; +import net.mograsim.logic.model.model.components.atomic.GUINandGate; +import net.mograsim.logic.model.model.components.submodels.SimpleRectangularSubmodelComponent; +import net.mograsim.logic.model.model.wires.GUIWire; +import net.mograsim.logic.model.model.wires.Pin; +import net.mograsim.logic.model.model.wires.WireCrossPoint; +import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator; + +public class GUI_rsLatch extends SimpleRectangularSubmodelComponent +{ + private GUIWire wireQ, wire_Q; + + public GUI_rsLatch(ViewModelModifiable model) + { + this(model, null); + } + + public GUI_rsLatch(ViewModelModifiable model, String name) + { + super(model, 1, "_rsLatch", name); + setSubmodelScale(.4); + setInputPins("_S", "_R"); + setOutputPins("Q", "_Q"); + initSubmodelComponents(); + } + + @SuppressWarnings("unused") // for GUIWires being created + private void initSubmodelComponents() + { + Pin _S = getSubmodelPin("_S"); + Pin _R = getSubmodelPin("_R"); + Pin Q = getSubmodelPin("Q"); + Pin _Q = getSubmodelPin("_Q"); + + GUINandGate nand1 = new GUINandGate(submodelModifiable, 1); + GUINandGate nand2 = new GUINandGate(submodelModifiable, 1); + + WireCrossPoint cp1 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cp2 = new WireCrossPoint(submodelModifiable, 1); + + nand1.moveTo(10, 7.5); + nand2.moveTo(40, 12.5); + cp1.moveCenterTo(35, 17.5); + cp2.moveCenterTo(65, 37.5); + + new GUIWire(submodelModifiable, _S, nand1.getPin("A"), new Point[0]); + new GUIWire(submodelModifiable, _R, nand2.getPin("B"), new Point(35, 37.5), new Point(35, 27.5)); + new GUIWire(submodelModifiable, nand1.getPin("Y"), cp1, new Point[0]); + new GUIWire(submodelModifiable, nand2.getPin("Y"), cp2, new Point(65, 22.5)); + new GUIWire(submodelModifiable, cp1, nand2.getPin("A"), new Point[0]); + new GUIWire(submodelModifiable, cp2, nand1.getPin("B"), new Point(65, 42.5), new Point(5, 42.5), new Point(5, 22.5)); + wireQ = new GUIWire(submodelModifiable, cp1, Q, new Point(35, 17.5), new Point(35, 7.5), new Point(65, 7.5), new Point(65, 12.5)); + wire_Q = new GUIWire(submodelModifiable, cp2, _Q, new Point[0]); + + addAtomicHighLevelStateID("q"); + } + + @Override + public void setAtomicHighLevelState(String stateID, Object newState) + { + switch (stateID) + { + case "q": + if (wireQ != null) + { + // TODO force this to happen without any Timeline updates in the meantime. + // Maybe make it a requirement of setHighLevelState that the Timeline is "halted" during a call? + Bit newStateCasted = (Bit) newState; + BitVector newStateVector = BitVector.of(newStateCasted); + if (wireQ.hasLogicModelBinding()) + wireQ.forceWireValues(newStateVector); + // We set both wires because then both outputs go to their correct state at the same time, and to avoid problems when not + // both + // inputs are 1 + if (wire_Q.hasLogicModelBinding()) + wire_Q.forceWireValues(newStateVector.not()); + } + break; + default: + // should not happen because we tell SubmodelComponent to only allow these state IDs. + throw new IllegalStateException("Illegal atomic state ID: " + stateID); + } + } + + @Override + public Object getAtomicHighLevelState(String stateID) + { + switch (stateID) + { + case "q": + if (wireQ.hasLogicModelBinding()) + return wireQ.getWireValues().getLSBit(0); + return null; + default: + // should not happen because we tell SubmodelComponent to only allow these state IDs. + throw new IllegalStateException("Illegal atomic state ID: " + stateID); + } + } + + static + { + IndirectGUIComponentCreator.setComponentSupplier(GUI_rsLatch.class.getCanonicalName(), (m, p, n) -> new GUI_rsLatch(m, n)); + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/GUIand.java b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/GUIand.java new file mode 100644 index 00000000..1e350e3e --- /dev/null +++ b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/GUIand.java @@ -0,0 +1,56 @@ +package net.mograsim.logic.model.model.components.mi.nandbased; + +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.mograsim.logic.model.model.ViewModelModifiable; +import net.mograsim.logic.model.model.components.atomic.GUINandGate; +import net.mograsim.logic.model.model.components.submodels.SimpleRectangularSubmodelComponent; +import net.mograsim.logic.model.model.wires.GUIWire; +import net.mograsim.logic.model.model.wires.Pin; +import net.mograsim.logic.model.model.wires.WireCrossPoint; +import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator; + +public class GUIand extends SimpleRectangularSubmodelComponent +{ + public GUIand(ViewModelModifiable model) + { + this(model, null); + } + + public GUIand(ViewModelModifiable model, String name) + { + super(model, 1, "GUIand", name); + setSubmodelScale(.4); + setInputPins("A", "B"); + setOutputPins("Y"); + initSubmodelComponents(); + } + + @SuppressWarnings("unused") // for GUIWires being created + private void initSubmodelComponents() + { + Pin A = getSubmodelPin("A"); + Pin B = getSubmodelPin("B"); + Pin Y = getSubmodelPin("Y"); + + GUINandGate nand = new GUINandGate(submodelModifiable, 1); + GUINandGate not = new GUINandGate(submodelModifiable, 1); + + WireCrossPoint cp1 = new WireCrossPoint(submodelModifiable, 1); + + nand.moveTo(20, 15); + not.moveTo(50, 15); + cp1.moveCenterTo(45, 25); + + new GUIWire(submodelModifiable, A, nand.getPin("A")); + new GUIWire(submodelModifiable, B, nand.getPin("B")); + new GUIWire(submodelModifiable, nand.getPin("Y"), cp1, new Point[0]); + new GUIWire(submodelModifiable, cp1, not.getPin("A"), new Point(45, 20)); + new GUIWire(submodelModifiable, cp1, not.getPin("B"), new Point(45, 30)); + new GUIWire(submodelModifiable, not.getPin("Y"), Y); + } + + static + { + IndirectGUIComponentCreator.setComponentSupplier(GUIand.class.getCanonicalName(), (m, p, n) -> new GUIand(m, n)); + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/GUIand41.java b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/GUIand41.java new file mode 100644 index 00000000..1074ab28 --- /dev/null +++ b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/GUIand41.java @@ -0,0 +1,78 @@ +package net.mograsim.logic.model.model.components.mi.nandbased; + +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.mograsim.logic.model.model.ViewModelModifiable; +import net.mograsim.logic.model.model.components.submodels.SimpleRectangularSubmodelComponent; +import net.mograsim.logic.model.model.wires.GUIWire; +import net.mograsim.logic.model.model.wires.Pin; +import net.mograsim.logic.model.model.wires.WireCrossPoint; +import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator; + +public class GUIand41 extends SimpleRectangularSubmodelComponent +{ + public GUIand41(ViewModelModifiable model) + { + this(model, null); + } + + public GUIand41(ViewModelModifiable model, String name) + { + super(model, 1, "GUIand41", name); + setSubmodelScale(.4); + setInputPins("A1", "A2", "A3", "A4", "B"); + setOutputPins("Y1", "Y2", "Y3", "Y4"); + initSubmodelComponents(); + } + + @SuppressWarnings("unused") // for GUIWires being created + private void initSubmodelComponents() + { + Pin A1 = getSubmodelPin("A1"); + Pin A2 = getSubmodelPin("A2"); + Pin A3 = getSubmodelPin("A3"); + Pin A4 = getSubmodelPin("A4"); + Pin B = getSubmodelPin("B"); + Pin Y1 = getSubmodelPin("Y1"); + Pin Y2 = getSubmodelPin("Y2"); + Pin Y3 = getSubmodelPin("Y3"); + Pin Y4 = getSubmodelPin("Y4"); + + GUIand and1 = new GUIand(submodelModifiable); + GUIand and2 = new GUIand(submodelModifiable); + GUIand and3 = new GUIand(submodelModifiable); + GUIand and4 = new GUIand(submodelModifiable); + + WireCrossPoint cpB2 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpB3 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpB4 = new WireCrossPoint(submodelModifiable, 1); + + and1.moveTo(30, 7.5); + and2.moveTo(30, 32.5); + and3.moveTo(30, 57.5); + and4.moveTo(30, 82.5); + cpB2.moveCenterTo(25, 47.5); + cpB3.moveCenterTo(25, 72.5); + cpB4.moveCenterTo(25, 97.5); + + new GUIWire(submodelModifiable, A1, and1.getPin("A"), new Point[0]); + new GUIWire(submodelModifiable, A2, and2.getPin("A"), new Point[0]); + new GUIWire(submodelModifiable, A3, and3.getPin("A"), new Point[0]); + new GUIWire(submodelModifiable, A4, and4.getPin("A"), new Point[0]); + new GUIWire(submodelModifiable, B, cpB4, new Point(25, 112.5)); + new GUIWire(submodelModifiable, cpB4, and4.getPin("B"), new Point[0]); + new GUIWire(submodelModifiable, cpB4, cpB3, new Point[0]); + new GUIWire(submodelModifiable, cpB3, and3.getPin("B"), new Point[0]); + new GUIWire(submodelModifiable, cpB3, cpB2, new Point[0]); + new GUIWire(submodelModifiable, cpB2, and2.getPin("B"), new Point[0]); + new GUIWire(submodelModifiable, cpB2, and1.getPin("B"), new Point(25, 22.5)); + new GUIWire(submodelModifiable, and1.getPin("Y"), Y1, new Point[0]); + new GUIWire(submodelModifiable, and2.getPin("Y"), Y2, new Point[0]); + new GUIWire(submodelModifiable, and3.getPin("Y"), Y3, new Point[0]); + new GUIWire(submodelModifiable, and4.getPin("Y"), Y4, new Point[0]); + } + + static + { + IndirectGUIComponentCreator.setComponentSupplier(GUIand41.class.getCanonicalName(), (m, p, n) -> new GUIand41(m, n)); + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/GUIandor414.java b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/GUIandor414.java new file mode 100644 index 00000000..963649a3 --- /dev/null +++ b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/GUIandor414.java @@ -0,0 +1,76 @@ +package net.mograsim.logic.model.model.components.mi.nandbased; + +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.mograsim.logic.model.model.ViewModelModifiable; +import net.mograsim.logic.model.model.components.submodels.SimpleRectangularSubmodelComponent; +import net.mograsim.logic.model.model.wires.GUIWire; +import net.mograsim.logic.model.model.wires.Pin; +import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator; + +public class GUIandor414 extends SimpleRectangularSubmodelComponent +{ + public GUIandor414(ViewModelModifiable model) + { + this(model, null); + } + + public GUIandor414(ViewModelModifiable model, String name) + { + super(model, 1, "GUIandor414", name); + setSubmodelScale(.4); + setInputPins("C1", "C2", "C3", "C4", "A1", "A2", "A3", "A4", "B"); + setOutputPins("Y1", "Y2", "Y3", "Y4"); + initSubmodelComponents(); + } + + @SuppressWarnings("unused") // for GUIWires being created + private void initSubmodelComponents() + { + Pin C1 = getSubmodelPin("C1"); + Pin C2 = getSubmodelPin("C2"); + Pin C3 = getSubmodelPin("C3"); + Pin C4 = getSubmodelPin("C4"); + Pin A1 = getSubmodelPin("A1"); + Pin A2 = getSubmodelPin("A2"); + Pin A3 = getSubmodelPin("A3"); + Pin A4 = getSubmodelPin("A4"); + Pin B = getSubmodelPin("B"); + Pin Y1 = getSubmodelPin("Y1"); + Pin Y2 = getSubmodelPin("Y2"); + Pin Y3 = getSubmodelPin("Y3"); + Pin Y4 = getSubmodelPin("Y4"); + + GUIand41 and = new GUIand41(submodelModifiable); + GUIor_4 or = new GUIor_4(submodelModifiable); + + and.moveTo(15, 137.5); + or.moveTo(35, 37.5); + + new GUIWire(submodelModifiable, A1, and.getPin("A1"), new Point(10, 112.5), new Point(10, 142.5)); + new GUIWire(submodelModifiable, A2, and.getPin("A2"), new Point(5, 137.5), new Point(5, 152.5)); + new GUIWire(submodelModifiable, A3, and.getPin("A3"), new Point[0]); + new GUIWire(submodelModifiable, A4, and.getPin("A4"), new Point(5, 187.5), new Point(5, 172.5)); + new GUIWire(submodelModifiable, B, and.getPin("B"), new Point(10, 212.5), new Point(10, 182.5)); + new GUIWire(submodelModifiable, C1, or.getPin("A1"), new Point(10, 12.5), new Point(10, 42.5)); + new GUIWire(submodelModifiable, C2, or.getPin("A2"), new Point(5, 37.5), new Point(5, 52.5)); + new GUIWire(submodelModifiable, C3, or.getPin("A3"), new Point[0]); + new GUIWire(submodelModifiable, C4, or.getPin("A4"), new Point(5, 87.5), new Point(5, 72.5)); + new GUIWire(submodelModifiable, and.getPin("Y1"), or.getPin("B1"), new Point(70, 142.5), new Point(70, 120), new Point(30, 120), + new Point(30, 82.5)); + new GUIWire(submodelModifiable, and.getPin("Y2"), or.getPin("B2"), new Point(65, 152.5), new Point(65, 125), new Point(25, 125), + new Point(25, 92.5)); + new GUIWire(submodelModifiable, and.getPin("Y3"), or.getPin("B3"), new Point(60, 162.5), new Point(60, 130), new Point(20, 130), + new Point(20, 102.5)); + new GUIWire(submodelModifiable, and.getPin("Y4"), or.getPin("B4"), new Point(55, 172.5), new Point(55, 135), new Point(15, 135), + new Point(15, 112.5)); + new GUIWire(submodelModifiable, or.getPin("Y1"), Y1, new Point(75, 42.5), new Point(75, 12.5)); + new GUIWire(submodelModifiable, or.getPin("Y2"), Y2, new Point(80, 52.5), new Point(80, 37.5)); + new GUIWire(submodelModifiable, or.getPin("Y3"), Y3, new Point[0]); + new GUIWire(submodelModifiable, or.getPin("Y4"), Y4, new Point(80, 72.5), new Point(80, 87.5)); + } + + static + { + IndirectGUIComponentCreator.setComponentSupplier(GUIandor414.class.getCanonicalName(), (m, p, n) -> new GUIandor414(m, n)); + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/GUIdemux2.java b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/GUIdemux2.java new file mode 100644 index 00000000..2b61cd4f --- /dev/null +++ b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/GUIdemux2.java @@ -0,0 +1,99 @@ +package net.mograsim.logic.model.model.components.mi.nandbased; + +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.mograsim.logic.model.model.ViewModelModifiable; +import net.mograsim.logic.model.model.components.atomic.GUINandGate; +import net.mograsim.logic.model.model.components.submodels.SimpleRectangularSubmodelComponent; +import net.mograsim.logic.model.model.wires.GUIWire; +import net.mograsim.logic.model.model.wires.Pin; +import net.mograsim.logic.model.model.wires.WireCrossPoint; +import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator; + +public class GUIdemux2 extends SimpleRectangularSubmodelComponent +{ + public GUIdemux2(ViewModelModifiable model) + { + this(model, null); + } + + public GUIdemux2(ViewModelModifiable model, String name) + { + super(model, 1, "GUIdemux2", name); + setSubmodelScale(.4); + setInputPins("S0", "S1"); + setOutputPins("Y00", "Y01", "Y10", "Y11"); + initSubmodelComponents(); + } + + @SuppressWarnings("unused") // for GUIWires being created + private void initSubmodelComponents() + { + Pin S0 = getSubmodelPin("S0"); + Pin S1 = getSubmodelPin("S1"); + Pin Y00 = getSubmodelPin("Y00"); + Pin Y01 = getSubmodelPin("Y01"); + Pin Y10 = getSubmodelPin("Y10"); + Pin Y11 = getSubmodelPin("Y11"); + + GUINandGate notS0 = new GUINandGate(submodelModifiable, 1); + GUINandGate notS1 = new GUINandGate(submodelModifiable, 1); + GUIand andY00 = new GUIand(submodelModifiable); + GUIand andY01 = new GUIand(submodelModifiable); + GUIand andY10 = new GUIand(submodelModifiable); + GUIand andY11 = new GUIand(submodelModifiable); + + WireCrossPoint cpS01 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpS02 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpS03 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpS11 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpS12 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpS13 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpNotS0 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpNotS1 = new WireCrossPoint(submodelModifiable, 1); + + notS0.moveTo(10, 2.5); + notS1.moveTo(10, 27.5); + andY00.moveTo(40, 2.5); + andY01.moveTo(40, 27.5); + andY10.moveTo(40, 52.5); + andY11.moveTo(40, 77.5); + cpS01.moveCenterTo(7.5, 12.5); + cpS11.moveCenterTo(5, 37.5); + cpS02.moveCenterTo(7.5, 17.5); + cpS12.moveCenterTo(5, 42.5); + cpS03.moveCenterTo(37.5, 62.5); + cpS13.moveCenterTo(32.5, 67.5); + cpNotS0.moveCenterTo(32.5, 12.5); + cpNotS1.moveCenterTo(35, 37.5); + + new GUIWire(submodelModifiable, S0, cpS01, new Point[0]); + new GUIWire(submodelModifiable, S1, cpS11, new Point[0]); + new GUIWire(submodelModifiable, cpS01, notS0.getPin("A"), new Point(7.5, 7.5)); + new GUIWire(submodelModifiable, cpS11, notS1.getPin("A"), new Point(5, 32.5)); + new GUIWire(submodelModifiable, cpS01, cpS02, new Point[0]); + new GUIWire(submodelModifiable, cpS11, cpS12, new Point[0]); + new GUIWire(submodelModifiable, cpS02, notS0.getPin("B"), new Point[0]); + new GUIWire(submodelModifiable, cpS12, notS1.getPin("B"), new Point[0]); + new GUIWire(submodelModifiable, cpS02, cpS03, new Point(7.5, 62.5)); + new GUIWire(submodelModifiable, cpS12, cpS13, new Point(5, 67.5), new Point(32.5, 67.5)); + new GUIWire(submodelModifiable, notS0.getPin("Y"), cpNotS0, new Point[0]); + new GUIWire(submodelModifiable, notS1.getPin("Y"), cpNotS1, new Point[0]); + new GUIWire(submodelModifiable, cpNotS0, andY00.getPin("A"), new Point(32.5, 7.5)); + new GUIWire(submodelModifiable, cpNotS1, andY00.getPin("B"), new Point(35, 17.5)); + new GUIWire(submodelModifiable, cpS03, andY01.getPin("A"), new Point(37.5, 32.5)); + new GUIWire(submodelModifiable, cpNotS1, andY01.getPin("B"), new Point(35, 42.5)); + new GUIWire(submodelModifiable, cpNotS0, andY10.getPin("A"), new Point(32.5, 57.5)); + new GUIWire(submodelModifiable, cpS13, andY10.getPin("B"), new Point[0]); + new GUIWire(submodelModifiable, cpS03, andY11.getPin("A"), new Point(37.5, 82.5)); + new GUIWire(submodelModifiable, cpS13, andY11.getPin("B"), new Point(32.5, 92.5)); + new GUIWire(submodelModifiable, andY00.getPin("Y"), Y00); + new GUIWire(submodelModifiable, andY01.getPin("Y"), Y01); + new GUIWire(submodelModifiable, andY10.getPin("Y"), Y10); + new GUIWire(submodelModifiable, andY11.getPin("Y"), Y11); + } + + static + { + IndirectGUIComponentCreator.setComponentSupplier(GUIdemux2.class.getCanonicalName(), (m, p, n) -> new GUIdemux2(m, n)); + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/GUIdff.java b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/GUIdff.java new file mode 100644 index 00000000..b8a5c8a3 --- /dev/null +++ b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/GUIdff.java @@ -0,0 +1,107 @@ +package net.mograsim.logic.model.model.components.mi.nandbased; + +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.mograsim.logic.model.model.ViewModelModifiable; +import net.mograsim.logic.model.model.components.atomic.GUINandGate; +import net.mograsim.logic.model.model.components.submodels.SimpleRectangularSubmodelComponent; +import net.mograsim.logic.model.model.wires.GUIWire; +import net.mograsim.logic.model.model.wires.Pin; +import net.mograsim.logic.model.model.wires.WireCrossPoint; +import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator; + +public class GUIdff extends SimpleRectangularSubmodelComponent +{ + private GUI_rsLatch _rsLatch; + + public GUIdff(ViewModelModifiable model) + { + this(model, null); + } + + public GUIdff(ViewModelModifiable model, String name) + { + super(model, 1, "GUIdff", name); + setSubmodelScale(.2); + setInputPins("C", "D"); + setOutputPins("Q", "_Q"); + initSubmodelComponents(); + } + + @SuppressWarnings("unused") // for GUIWires being created + private void initSubmodelComponents() + { + Pin C = getSubmodelPin("C"); + Pin D = getSubmodelPin("D"); + Pin Q = getSubmodelPin("Q"); + Pin _Q = getSubmodelPin("_Q"); + + GUI_rsLatch _rsLatch1 = new GUI_rsLatch(submodelModifiable); + GUInand3 nand3 = new GUInand3(submodelModifiable); + GUINandGate nand2 = new GUINandGate(submodelModifiable, 1); + GUI_rsLatch _rsLatch2 = this._rsLatch = new GUI_rsLatch(submodelModifiable); + + WireCrossPoint cp1 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cp2 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cp3 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cp4 = new WireCrossPoint(submodelModifiable, 1); + + _rsLatch1.moveTo(40, 10); + nand3.moveTo(40, 40); + nand2.moveTo(120, 60); + _rsLatch2.moveTo(120, 30); + cp1.moveCenterTo(10, 25); + cp2.moveCenterTo(20, 65); + cp3.moveCenterTo(100, 35); + cp4.moveCenterTo(100, 45); + + new GUIWire(submodelModifiable, C, cp1, new Point[0]); + new GUIWire(submodelModifiable, cp1, _rsLatch1.getPin("_R"), new Point[0]); + new GUIWire(submodelModifiable, cp1, nand3.getPin("B"), new Point(10, 55)); + new GUIWire(submodelModifiable, D, nand2.getPin("B"), new Point[0]); + new GUIWire(submodelModifiable, nand2.getPin("Y"), cp2, new Point(145, 70), new Point(145, 85), new Point(20, 85)); + new GUIWire(submodelModifiable, cp2, _rsLatch1.getPin("_S"), new Point(20, 15)); + new GUIWire(submodelModifiable, cp2, nand3.getPin("C"), new Point[0]); + new GUIWire(submodelModifiable, _rsLatch1.getPin("_Q"), cp3, new Point(100, 25)); + new GUIWire(submodelModifiable, cp3, nand3.getPin("A"), new Point(30, 35), new Point(30, 45)); + new GUIWire(submodelModifiable, cp3, _rsLatch2.getPin("_S"), new Point[0]); + new GUIWire(submodelModifiable, nand3.getPin("Y"), cp4, new Point[0]); + new GUIWire(submodelModifiable, cp4, _rsLatch2.getPin("_R"), new Point[0]); + new GUIWire(submodelModifiable, cp4, nand2.getPin("A"), new Point(100, 65)); + new GUIWire(submodelModifiable, _rsLatch2.getPin("Q"), Q); + new GUIWire(submodelModifiable, _rsLatch2.getPin("_Q"), _Q); + + addAtomicHighLevelStateID("q"); + } + + @Override + public void setAtomicHighLevelState(String stateID, Object newState) + { + switch (stateID) + { + case "q": + _rsLatch.setHighLevelState("q", newState); + break; + default: + // should not happen because we tell SubmodelComponent to only allow these state IDs. + throw new IllegalStateException("Illegal atomic state ID: " + stateID); + } + } + + @Override + public Object getAtomicHighLevelState(String stateID) + { + switch (stateID) + { + case "q": + return _rsLatch.getHighLevelState("q"); + default: + // should not happen because we tell SubmodelComponent to only allow these state IDs. + throw new IllegalStateException("Illegal atomic state ID: " + stateID); + } + } + + static + { + IndirectGUIComponentCreator.setComponentSupplier(GUIdff.class.getCanonicalName(), (m, p, n) -> new GUIdff(m, n)); + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/GUIdlatch.java b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/GUIdlatch.java new file mode 100644 index 00000000..7378237d --- /dev/null +++ b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/GUIdlatch.java @@ -0,0 +1,96 @@ +package net.mograsim.logic.model.model.components.mi.nandbased; + +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.mograsim.logic.model.model.ViewModelModifiable; +import net.mograsim.logic.model.model.components.atomic.GUINandGate; +import net.mograsim.logic.model.model.components.submodels.SimpleRectangularSubmodelComponent; +import net.mograsim.logic.model.model.wires.GUIWire; +import net.mograsim.logic.model.model.wires.Pin; +import net.mograsim.logic.model.model.wires.WireCrossPoint; +import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator; + +public class GUIdlatch extends SimpleRectangularSubmodelComponent +{ + private GUI_rsLatch _rsLatch; + + public GUIdlatch(ViewModelModifiable model) + { + this(model, null); + } + + public GUIdlatch(ViewModelModifiable model, String name) + { + super(model, 1, "GUIdlatch", name); + setSubmodelScale(.4); + setInputPins("D", "E"); + setOutputPins("Q", "_Q"); + initSubmodelComponents(); + } + + @SuppressWarnings("unused") // for GUIWires being created + private void initSubmodelComponents() + { + Pin D = getSubmodelPin("D"); + Pin E = getSubmodelPin("E"); + Pin Q = getSubmodelPin("Q"); + Pin _Q = getSubmodelPin("_Q"); + + GUINandGate nand1 = new GUINandGate(submodelModifiable, 1); + GUINandGate nand2 = new GUINandGate(submodelModifiable, 1); + _rsLatch = new GUI_rsLatch(submodelModifiable); + + WireCrossPoint cp1 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cp2 = new WireCrossPoint(submodelModifiable, 1); + + nand1.moveTo(10, 2.5); + nand2.moveTo(15, 27.5); + _rsLatch.moveTo(45, 7.5); + cp1.moveCenterTo(5, 37.5); + cp2.moveCenterTo(35, 12.5); + + new GUIWire(submodelModifiable, D, nand1.getPin("A")); + new GUIWire(submodelModifiable, E, cp1, new Point[0]); + new GUIWire(submodelModifiable, cp1, nand1.getPin("B"), new Point(5, 17.5)); + new GUIWire(submodelModifiable, cp1, nand2.getPin("B"), new Point(5, 42.5)); + new GUIWire(submodelModifiable, nand1.getPin("Y"), cp2, new Point[0]); + new GUIWire(submodelModifiable, cp2, nand2.getPin("A"), new Point(35, 25), new Point(10, 25), new Point(10, 32.5)); + new GUIWire(submodelModifiable, cp2, _rsLatch.getPin("_S"), new Point[0]); + new GUIWire(submodelModifiable, nand2.getPin("Y"), _rsLatch.getPin("_R"), new Point(40, 37.5), new Point(40, 22.5)); + new GUIWire(submodelModifiable, _rsLatch.getPin("Q"), Q, new Point[0]); + new GUIWire(submodelModifiable, _rsLatch.getPin("_Q"), _Q); + + addAtomicHighLevelStateID("q"); + } + + @Override + public void setAtomicHighLevelState(String stateID, Object newState) + { + switch (stateID) + { + case "q": + _rsLatch.setHighLevelState("q", newState); + break; + default: + // should not happen because we tell SubmodelComponent to only allow these state IDs. + throw new IllegalStateException("Illegal atomic state ID: " + stateID); + } + } + + @Override + public Object getAtomicHighLevelState(String stateID) + { + switch (stateID) + { + case "q": + return _rsLatch.getHighLevelState("q"); + default: + // should not happen because we tell SubmodelComponent to only allow these state IDs. + throw new IllegalStateException("Illegal atomic state ID: " + stateID); + } + } + + static + { + IndirectGUIComponentCreator.setComponentSupplier(GUIdlatch.class.getCanonicalName(), (m, p, n) -> new GUIdlatch(m, n)); + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/GUIdlatch4.java b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/GUIdlatch4.java new file mode 100644 index 00000000..875843f6 --- /dev/null +++ b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/GUIdlatch4.java @@ -0,0 +1,146 @@ +package net.mograsim.logic.model.model.components.mi.nandbased; + +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.mograsim.logic.core.types.Bit; +import net.mograsim.logic.core.types.BitVector; +import net.mograsim.logic.model.model.ViewModelModifiable; +import net.mograsim.logic.model.model.components.submodels.SimpleRectangularSubmodelComponent; +import net.mograsim.logic.model.model.wires.GUIWire; +import net.mograsim.logic.model.model.wires.Pin; +import net.mograsim.logic.model.model.wires.WireCrossPoint; +import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator; + +public class GUIdlatch4 extends SimpleRectangularSubmodelComponent +{ + private GUIdlatch dlatch1; + private GUIdlatch dlatch2; + private GUIdlatch dlatch3; + private GUIdlatch dlatch4; + + public GUIdlatch4(ViewModelModifiable model) + { + this(model, null); + } + + public GUIdlatch4(ViewModelModifiable model, String name) + { + super(model, 1, "GUIdlatch4", name); + setSubmodelScale(.4); + setInputPins("D1", "D2", "D3", "D4", "C"); + setOutputPins("Q1", "Q2", "Q3", "Q4"); + initSubmodelComponents(); + } + + @SuppressWarnings("unused") // for GUIWires being created + private void initSubmodelComponents() + { + Pin D1 = getSubmodelPin("D1"); + Pin D2 = getSubmodelPin("D2"); + Pin D3 = getSubmodelPin("D3"); + Pin D4 = getSubmodelPin("D4"); + Pin C = getSubmodelPin("C"); + Pin Q1 = getSubmodelPin("Q1"); + Pin Q2 = getSubmodelPin("Q2"); + Pin Q3 = getSubmodelPin("Q3"); + Pin Q4 = getSubmodelPin("Q4"); + + dlatch1 = new GUIdlatch(submodelModifiable); + dlatch2 = new GUIdlatch(submodelModifiable); + dlatch3 = new GUIdlatch(submodelModifiable); + dlatch4 = new GUIdlatch(submodelModifiable); + + WireCrossPoint cp2 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cp3 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cp4 = new WireCrossPoint(submodelModifiable, 1); + + dlatch1.moveTo(30, 7.5); + dlatch2.moveTo(30, 32.5); + dlatch3.moveTo(30, 57.5); + dlatch4.moveTo(30, 82.5); + cp2.moveCenterTo(15, 47.5); + cp3.moveCenterTo(15, 72.5); + cp4.moveCenterTo(15, 97.5); + + new GUIWire(submodelModifiable, C, cp4, new Point(15, 112.5)); + new GUIWire(submodelModifiable, cp4, dlatch4.getPin("E"), new Point[0]); + new GUIWire(submodelModifiable, cp4, cp3, new Point[0]); + new GUIWire(submodelModifiable, cp3, dlatch3.getPin("E"), new Point[0]); + new GUIWire(submodelModifiable, cp3, cp2, new Point[0]); + new GUIWire(submodelModifiable, cp2, dlatch2.getPin("E"), new Point[0]); + new GUIWire(submodelModifiable, cp2, dlatch1.getPin("E"), new Point(15, 22.5)); + new GUIWire(submodelModifiable, D1, dlatch1.getPin("D"), new Point[0]); + new GUIWire(submodelModifiable, D2, dlatch2.getPin("D"), new Point[0]); + new GUIWire(submodelModifiable, D3, dlatch3.getPin("D"), new Point[0]); + new GUIWire(submodelModifiable, D4, dlatch4.getPin("D"), new Point[0]); + new GUIWire(submodelModifiable, dlatch1.getPin("Q"), Q1, new Point[0]); + new GUIWire(submodelModifiable, dlatch2.getPin("Q"), Q2, new Point[0]); + new GUIWire(submodelModifiable, dlatch3.getPin("Q"), Q3, new Point[0]); + new GUIWire(submodelModifiable, dlatch4.getPin("Q"), Q4, new Point[0]); + + addAtomicHighLevelStateID("q1"); + addAtomicHighLevelStateID("q2"); + addAtomicHighLevelStateID("q3"); + addAtomicHighLevelStateID("q4"); + addAtomicHighLevelStateID("q"); + } + + @Override + public void setAtomicHighLevelState(String stateID, Object newState) + { + switch (stateID) + { + case "q1": + dlatch1.setHighLevelState("q", newState); + break; + case "q2": + dlatch2.setHighLevelState("q", newState); + break; + case "q3": + dlatch3.setHighLevelState("q", newState); + break; + case "q4": + dlatch4.setHighLevelState("q", newState); + break; + case "q": + BitVector newStateCasted = (BitVector) newState; + setHighLevelState("q1", newStateCasted.getLSBit(0)); + setHighLevelState("q2", newStateCasted.getLSBit(1)); + setHighLevelState("q3", newStateCasted.getLSBit(2)); + setHighLevelState("q4", newStateCasted.getLSBit(3)); + break; + default: + // should not happen because we tell SubmodelComponent to only allow these state IDs. + throw new IllegalStateException("Illegal atomic state ID: " + stateID); + } + } + + @Override + public Object getAtomicHighLevelState(String stateID) + { + switch (stateID) + { + case "q1": + return dlatch1.getHighLevelState("q"); + case "q2": + return dlatch2.getHighLevelState("q"); + case "q3": + return dlatch3.getHighLevelState("q"); + case "q4": + return dlatch4.getHighLevelState("q"); + case "q": + Bit q1 = (Bit) getHighLevelState("q1"); + Bit q2 = (Bit) getHighLevelState("q2"); + Bit q3 = (Bit) getHighLevelState("q3"); + Bit q4 = (Bit) getHighLevelState("q4"); + return BitVector.of(q4, q3, q2, q1); + default: + // should not happen because we tell SubmodelComponent to only allow these state IDs. + throw new IllegalStateException("Illegal atomic state ID: " + stateID); + } + } + + static + { + IndirectGUIComponentCreator.setComponentSupplier(GUIdlatch4.class.getCanonicalName(), (m, p, n) -> new GUIdlatch4(m, n)); + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/GUIfulladder.java b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/GUIfulladder.java new file mode 100644 index 00000000..258da912 --- /dev/null +++ b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/GUIfulladder.java @@ -0,0 +1,59 @@ +package net.mograsim.logic.model.model.components.mi.nandbased; + +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.mograsim.logic.model.model.ViewModelModifiable; +import net.mograsim.logic.model.model.components.atomic.GUINandGate; +import net.mograsim.logic.model.model.components.submodels.SimpleRectangularSubmodelComponent; +import net.mograsim.logic.model.model.wires.GUIWire; +import net.mograsim.logic.model.model.wires.Pin; +import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator; + +public class GUIfulladder extends SimpleRectangularSubmodelComponent +{ + public GUIfulladder(ViewModelModifiable model) + { + this(model, null); + } + + public GUIfulladder(ViewModelModifiable model, String name) + { + super(model, 1, "GUIfulladder", name); + setSubmodelScale(.4); + setInputPins("A", "B", "C"); + setOutputPins("Y", "Z"); + initSubmodelComponents(); + } + + @SuppressWarnings("unused") // for GUIWires being created + private void initSubmodelComponents() + { + Pin A = getSubmodelPin("A"); + Pin B = getSubmodelPin("B"); + Pin C = getSubmodelPin("C"); + Pin Y = getSubmodelPin("Y"); + Pin Z = getSubmodelPin("Z"); + + GUIhalfadder halfBC = new GUIhalfadder(submodelModifiable); + GUIhalfadder halfAY = new GUIhalfadder(submodelModifiable); + GUINandGate nandZ = new GUINandGate(submodelModifiable, 1); + + halfAY.moveTo(45, 7.5); + halfBC.moveTo(5, 40); + nandZ.moveTo(57.5, 40); + + new GUIWire(submodelModifiable, A, halfAY.getPin("A"), new Point[0]); + new GUIWire(submodelModifiable, B, halfBC.getPin("A")); + new GUIWire(submodelModifiable, C, halfBC.getPin("B")); + new GUIWire(submodelModifiable, halfBC.getPin("Y"), halfAY.getPin("B")); + new GUIWire(submodelModifiable, halfBC.getPin("_Z"), nandZ.getPin("B"), new Point[0]); + new GUIWire(submodelModifiable, halfAY.getPin("Y"), Y, new Point[0]); + new GUIWire(submodelModifiable, halfAY.getPin("_Z"), nandZ.getPin("A"), new Point(82.5, 22.5), new Point(82.5, 35), + new Point(52.5, 35), new Point(52.5, 45)); + new GUIWire(submodelModifiable, nandZ.getPin("Y"), Z); + } + + static + { + IndirectGUIComponentCreator.setComponentSupplier(GUIfulladder.class.getCanonicalName(), (m, p, n) -> new GUIfulladder(m, n)); + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/GUIhalfadder.java b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/GUIhalfadder.java new file mode 100644 index 00000000..3b100fde --- /dev/null +++ b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/GUIhalfadder.java @@ -0,0 +1,72 @@ +package net.mograsim.logic.model.model.components.mi.nandbased; + +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.mograsim.logic.model.model.ViewModelModifiable; +import net.mograsim.logic.model.model.components.atomic.GUINandGate; +import net.mograsim.logic.model.model.components.submodels.SimpleRectangularSubmodelComponent; +import net.mograsim.logic.model.model.wires.GUIWire; +import net.mograsim.logic.model.model.wires.Pin; +import net.mograsim.logic.model.model.wires.WireCrossPoint; +import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator; + +public class GUIhalfadder extends SimpleRectangularSubmodelComponent +{ + public GUIhalfadder(ViewModelModifiable model) + { + this(model, null); + } + + public GUIhalfadder(ViewModelModifiable model, String name) + { + super(model, 1, "GUIhalfadder", name); + setSubmodelScale(.4); + setInputPins("A", "B"); + setOutputPins("Y", "_Z"); + initSubmodelComponents(); + } + + @SuppressWarnings("unused") // for GUIWires being created + private void initSubmodelComponents() + { + Pin A = getSubmodelPin("A"); + Pin B = getSubmodelPin("B"); + Pin Y = getSubmodelPin("Y"); + Pin _Z = getSubmodelPin("_Z"); + + GUINandGate nand_Z = new GUINandGate(submodelModifiable, 1); + GUINandGate nandYA = new GUINandGate(submodelModifiable, 1); + GUINandGate nandYB = new GUINandGate(submodelModifiable, 1); + GUINandGate nandY = new GUINandGate(submodelModifiable, 1); + + WireCrossPoint cpA = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpB = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cp_Z = new WireCrossPoint(submodelModifiable, 1); + + nand_Z.moveTo(10, 15); + nandYA.moveTo(40, 2.5); + nandYB.moveTo(40, 27.5); + nandY.moveTo(65, 2.5); + cpA.moveCenterTo(5, 12.5); + cpB.moveCenterTo(5, 37.5); + cp_Z.moveCenterTo(35, 25); + + new GUIWire(submodelModifiable, A, cpA, new Point[0]); + new GUIWire(submodelModifiable, cpA, nandYA.getPin("A"), new Point(5, 7.5)); + new GUIWire(submodelModifiable, cpA, nand_Z.getPin("A"), new Point(5, 20)); + new GUIWire(submodelModifiable, B, cpB, new Point[0]); + new GUIWire(submodelModifiable, cpB, nandYB.getPin("B"), new Point(5, 42.5)); + new GUIWire(submodelModifiable, cpB, nand_Z.getPin("B"), new Point(5, 30)); + new GUIWire(submodelModifiable, nand_Z.getPin("Y"), cp_Z, new Point[0]); + new GUIWire(submodelModifiable, cp_Z, _Z, new Point(80, 25), new Point(80, 37.5)); + new GUIWire(submodelModifiable, cp_Z, nandYA.getPin("B"), new Point(35, 17.5)); + new GUIWire(submodelModifiable, cp_Z, nandYB.getPin("A"), new Point(35, 32.5)); + new GUIWire(submodelModifiable, nandYA.getPin("Y"), nandY.getPin("A"), new Point(62.5, 12.5), new Point(62.5, 7.5)); + new GUIWire(submodelModifiable, nandYB.getPin("Y"), nandY.getPin("B"), new Point(62.5, 37.5), new Point(62.5, 17.5)); + new GUIWire(submodelModifiable, nandY.getPin("Y"), Y, new Point[0]); + } + + static + { + IndirectGUIComponentCreator.setComponentSupplier(GUIhalfadder.class.getCanonicalName(), (m, p, n) -> new GUIhalfadder(m, n)); + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/GUImux1.java b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/GUImux1.java new file mode 100644 index 00000000..53682e9d --- /dev/null +++ b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/GUImux1.java @@ -0,0 +1,68 @@ +package net.mograsim.logic.model.model.components.mi.nandbased; + +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.mograsim.logic.model.model.ViewModelModifiable; +import net.mograsim.logic.model.model.components.atomic.GUINandGate; +import net.mograsim.logic.model.model.components.submodels.SimpleRectangularSubmodelComponent; +import net.mograsim.logic.model.model.wires.GUIWire; +import net.mograsim.logic.model.model.wires.Pin; +import net.mograsim.logic.model.model.wires.WireCrossPoint; +import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator; + +public class GUImux1 extends SimpleRectangularSubmodelComponent +{ + public GUImux1(ViewModelModifiable model) + { + this(model, null); + } + + public GUImux1(ViewModelModifiable model, String name) + { + super(model, 1, "GUImux1", name); + setSubmodelScale(.4); + setInputPins("S0", "I0", "I1"); + setOutputPins("Y"); + initSubmodelComponents(); + } + + @SuppressWarnings("unused") + private void initSubmodelComponents() + { + Pin S0 = getSubmodelPin("S0"); + Pin I0 = getSubmodelPin("I0"); + Pin I1 = getSubmodelPin("I1"); + Pin Y = getSubmodelPin("Y"); + + GUINandGate nandS0 = new GUINandGate(submodelModifiable, 1); + GUINandGate nandI0 = new GUINandGate(submodelModifiable, 1); + GUINandGate nandI1 = new GUINandGate(submodelModifiable, 1); + GUINandGate nandY = new GUINandGate(submodelModifiable, 1); + + WireCrossPoint cp0 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cp1 = new WireCrossPoint(submodelModifiable, 1); + + nandS0.moveTo(10, 7.5); + nandI0.moveTo(35, 22.5); + nandI1.moveTo(35, 47.5); + nandY.moveTo(60, 30); + cp0.moveCenterTo(5, 12.5); + cp1.moveCenterTo(5, 22.5); + + new GUIWire(submodelModifiable, S0, cp0, new Point[0]); + new GUIWire(submodelModifiable, cp0, nandS0.getPin("A"), new Point[0]); + new GUIWire(submodelModifiable, cp0, cp1, new Point[0]); + new GUIWire(submodelModifiable, cp1, nandS0.getPin("B"), new Point[0]); + new GUIWire(submodelModifiable, nandS0.getPin("Y"), nandI0.getPin("A")); + new GUIWire(submodelModifiable, I0, nandI0.getPin("B"), new Point[0]); + new GUIWire(submodelModifiable, cp1, nandI1.getPin("A"), new Point(5, 52.5)); + new GUIWire(submodelModifiable, I1, nandI1.getPin("B"), new Point[0]); + new GUIWire(submodelModifiable, nandI0.getPin("Y"), nandY.getPin("A")); + new GUIWire(submodelModifiable, nandI1.getPin("Y"), nandY.getPin("B")); + new GUIWire(submodelModifiable, nandY.getPin("Y"), Y); + } + + static + { + IndirectGUIComponentCreator.setComponentSupplier(GUImux1.class.getCanonicalName(), (m, p, n) -> new GUImux1(m, n)); + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/GUImux1_4.java b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/GUImux1_4.java new file mode 100644 index 00000000..8bfcce67 --- /dev/null +++ b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/GUImux1_4.java @@ -0,0 +1,87 @@ +package net.mograsim.logic.model.model.components.mi.nandbased; + +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.mograsim.logic.model.model.ViewModelModifiable; +import net.mograsim.logic.model.model.components.submodels.SimpleRectangularSubmodelComponent; +import net.mograsim.logic.model.model.wires.GUIWire; +import net.mograsim.logic.model.model.wires.Pin; +import net.mograsim.logic.model.model.wires.WireCrossPoint; +import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator; + +public class GUImux1_4 extends SimpleRectangularSubmodelComponent +{ + public GUImux1_4(ViewModelModifiable model) + { + this(model, null); + } + + public GUImux1_4(ViewModelModifiable model, String name) + { + super(model, 1, "GUImux1_4", name); + setSubmodelScale(.4); + setInputPins("S0", "I0_1", "I0_2", "I0_3", "I0_4", "I1_1", "I1_2", "I1_3", "I1_4"); + setOutputPins("Y1", "Y2", "Y3", "Y4"); + initSubmodelComponents(); + } + + @SuppressWarnings("unused") + private void initSubmodelComponents() + { + Pin S0 = getSubmodelPin("S0"); + Pin I0_1 = getSubmodelPin("I0_1"); + Pin I0_2 = getSubmodelPin("I0_2"); + Pin I0_3 = getSubmodelPin("I0_3"); + Pin I0_4 = getSubmodelPin("I0_4"); + Pin I1_1 = getSubmodelPin("I1_1"); + Pin I1_2 = getSubmodelPin("I1_2"); + Pin I1_3 = getSubmodelPin("I1_3"); + Pin I1_4 = getSubmodelPin("I1_4"); + Pin Y1 = getSubmodelPin("Y1"); + Pin Y2 = getSubmodelPin("Y2"); + Pin Y3 = getSubmodelPin("Y3"); + Pin Y4 = getSubmodelPin("Y4"); + + GUImux1 mux1 = new GUImux1(submodelModifiable); + GUImux1 mux2 = new GUImux1(submodelModifiable); + GUImux1 mux3 = new GUImux1(submodelModifiable); + GUImux1 mux4 = new GUImux1(submodelModifiable); + + WireCrossPoint cp1 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cp2 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cp3 = new WireCrossPoint(submodelModifiable, 1); + + mux1.moveTo(30, 7.5); + mux2.moveTo(30, 42.5); + mux3.moveTo(30, 77.5); + mux4.moveTo(30, 112.5); + cp1.moveCenterTo(25, 12.5); + cp2.moveCenterTo(25, 47.5); + cp3.moveCenterTo(25, 82.5); + + new GUIWire(submodelModifiable, S0, cp1, new Point[0]); + new GUIWire(submodelModifiable, cp1, mux1.getPin("S0"), new Point[0]); + new GUIWire(submodelModifiable, I0_1, mux1.getPin("I0"), new Point(5, 37.5), new Point(5, 22.5)); + new GUIWire(submodelModifiable, I1_1, mux1.getPin("I1"), new Point(10, 137.5), new Point(10, 32.5)); + new GUIWire(submodelModifiable, mux1.getPin("Y"), Y1, new Point[0]); + new GUIWire(submodelModifiable, cp1, cp2, new Point[0]); + new GUIWire(submodelModifiable, cp2, mux2.getPin("S0"), new Point[0]); + new GUIWire(submodelModifiable, I0_2, mux2.getPin("I0"), new Point(5, 62.5), new Point(5, 57.5)); + new GUIWire(submodelModifiable, I1_2, mux2.getPin("I1"), new Point(15, 162.5), new Point(15, 67.5)); + new GUIWire(submodelModifiable, mux2.getPin("Y"), Y2); + new GUIWire(submodelModifiable, cp2, cp3, new Point[0]); + new GUIWire(submodelModifiable, cp3, mux3.getPin("S0"), new Point[0]); + new GUIWire(submodelModifiable, I0_3, mux3.getPin("I0"), new Point(5, 87.5), new Point(5, 92.5)); + new GUIWire(submodelModifiable, I1_3, mux3.getPin("I1"), new Point(20, 187.5), new Point(20, 102.5)); + new GUIWire(submodelModifiable, mux3.getPin("Y"), Y3); + new GUIWire(submodelModifiable, cp3, mux4.getPin("S0"), new Point(25, 117.5)); + new GUIWire(submodelModifiable, I0_4, mux4.getPin("I0"), new Point(5, 112.5), new Point(5, 127.5)); + new GUIWire(submodelModifiable, I1_4, mux4.getPin("I1"), new Point(25, 212.5), new Point(25, 137.5)); + new GUIWire(submodelModifiable, mux4.getPin("Y"), Y4); + + } + + static + { + IndirectGUIComponentCreator.setComponentSupplier(GUImux1_4.class.getCanonicalName(), (m, p, n) -> new GUImux1_4(m, n)); + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/GUInand3.java b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/GUInand3.java new file mode 100644 index 00000000..99e204df --- /dev/null +++ b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/GUInand3.java @@ -0,0 +1,61 @@ +package net.mograsim.logic.model.model.components.mi.nandbased; + +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.mograsim.logic.model.model.ViewModelModifiable; +import net.mograsim.logic.model.model.components.atomic.GUINandGate; +import net.mograsim.logic.model.model.components.submodels.SimpleRectangularSubmodelComponent; +import net.mograsim.logic.model.model.wires.GUIWire; +import net.mograsim.logic.model.model.wires.Pin; +import net.mograsim.logic.model.model.wires.WireCrossPoint; +import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator; + +public class GUInand3 extends SimpleRectangularSubmodelComponent +{ + public GUInand3(ViewModelModifiable model) + { + this(model, null); + } + + public GUInand3(ViewModelModifiable model, String name) + { + super(model, 1, "GUInand3", name); + setSubmodelScale(.4); + setInputPins("A", "B", "C"); + setOutputPins("Y"); + initSubmodelComponents(); + } + + @SuppressWarnings("unused") // for GUIWires being created + private void initSubmodelComponents() + { + Pin A = getSubmodelPin("A"); + Pin B = getSubmodelPin("B"); + Pin C = getSubmodelPin("C"); + Pin Y = getSubmodelPin("Y"); + + GUINandGate nandAB = new GUINandGate(submodelModifiable, 1); + GUINandGate andAB = new GUINandGate(submodelModifiable, 1); + GUINandGate nandABC = new GUINandGate(submodelModifiable, 1); + + WireCrossPoint cpNandAB = new WireCrossPoint(submodelModifiable, 1); + + nandAB.moveTo(10, 15); + andAB.moveTo(35, 15); + nandABC.moveTo(62.5, 2.5); + cpNandAB.moveCenterTo(32.5, 25); + + new GUIWire(submodelModifiable, A, nandAB.getPin("A")); + new GUIWire(submodelModifiable, B, nandAB.getPin("B")); + new GUIWire(submodelModifiable, nandAB.getPin("Y"), cpNandAB, new Point[0]); + new GUIWire(submodelModifiable, cpNandAB, andAB.getPin("A"), new Point(32.5, 20)); + new GUIWire(submodelModifiable, cpNandAB, andAB.getPin("B"), new Point(32.5, 30)); + new GUIWire(submodelModifiable, andAB.getPin("Y"), nandABC.getPin("A"), new Point(57.5, 25), new Point(57.5, 7.5)); + new GUIWire(submodelModifiable, C, nandABC.getPin("B"), new Point(60, 62.5), new Point(60, 17.5)); + new GUIWire(submodelModifiable, nandABC.getPin("Y"), Y, new Point[0]); + } + + static + { + IndirectGUIComponentCreator.setComponentSupplier(GUInand3.class.getCanonicalName(), (m, p, n) -> new GUInand3(m, n)); + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/GUInot4.java b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/GUInot4.java new file mode 100644 index 00000000..d524332d --- /dev/null +++ b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/GUInot4.java @@ -0,0 +1,81 @@ +package net.mograsim.logic.model.model.components.mi.nandbased; + +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.mograsim.logic.model.model.ViewModelModifiable; +import net.mograsim.logic.model.model.components.atomic.GUINandGate; +import net.mograsim.logic.model.model.components.submodels.SimpleRectangularSubmodelComponent; +import net.mograsim.logic.model.model.wires.GUIWire; +import net.mograsim.logic.model.model.wires.Pin; +import net.mograsim.logic.model.model.wires.WireCrossPoint; +import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator; + +public class GUInot4 extends SimpleRectangularSubmodelComponent +{ + public GUInot4(ViewModelModifiable model) + { + this(model, null); + } + + public GUInot4(ViewModelModifiable model, String name) + { + super(model, 1, "GUInot4", name); + setSubmodelScale(.4); + setInputPins("A1", "A2", "A3", "A4"); + setOutputPins("Y1", "Y2", "Y3", "Y4"); + initSubmodelComponents(); + } + + @SuppressWarnings("unused") // for GUIWires being created + private void initSubmodelComponents() + { + Pin A1 = getSubmodelPin("A1"); + Pin A2 = getSubmodelPin("A2"); + Pin A3 = getSubmodelPin("A3"); + Pin A4 = getSubmodelPin("A4"); + Pin Y1 = getSubmodelPin("Y1"); + Pin Y2 = getSubmodelPin("Y2"); + Pin Y3 = getSubmodelPin("Y3"); + Pin Y4 = getSubmodelPin("Y4"); + + GUINandGate nand1 = new GUINandGate(submodelModifiable, 1); + GUINandGate nand2 = new GUINandGate(submodelModifiable, 1); + GUINandGate nand3 = new GUINandGate(submodelModifiable, 1); + GUINandGate nand4 = new GUINandGate(submodelModifiable, 1); + + WireCrossPoint cp1 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cp2 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cp3 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cp4 = new WireCrossPoint(submodelModifiable, 1); + + nand1.moveTo(30, 2.5); + nand2.moveTo(30, 27.5); + nand3.moveTo(30, 52.5); + nand4.moveTo(30, 77.5); + cp1.moveCenterTo(15, 12.5); + cp2.moveCenterTo(15, 37.5); + cp3.moveCenterTo(15, 62.5); + cp4.moveCenterTo(15, 87.5); + + new GUIWire(submodelModifiable, A1, cp1, new Point[0]); + new GUIWire(submodelModifiable, A2, cp2, new Point[0]); + new GUIWire(submodelModifiable, A3, cp3, new Point[0]); + new GUIWire(submodelModifiable, A4, cp4, new Point[0]); + new GUIWire(submodelModifiable, cp1, nand1.getPin("A"), new Point(15, 7.5)); + new GUIWire(submodelModifiable, cp2, nand2.getPin("A"), new Point(15, 32.5)); + new GUIWire(submodelModifiable, cp3, nand3.getPin("A"), new Point(15, 57.5)); + new GUIWire(submodelModifiable, cp4, nand4.getPin("A"), new Point(15, 82.5)); + new GUIWire(submodelModifiable, cp1, nand1.getPin("B"), new Point(15, 17.5)); + new GUIWire(submodelModifiable, cp2, nand2.getPin("B"), new Point(15, 42.5)); + new GUIWire(submodelModifiable, cp3, nand3.getPin("B"), new Point(15, 67.5)); + new GUIWire(submodelModifiable, cp4, nand4.getPin("B"), new Point(15, 92.5)); + new GUIWire(submodelModifiable, nand1.getPin("Y"), Y1, new Point[0]); + new GUIWire(submodelModifiable, nand2.getPin("Y"), Y2, new Point[0]); + new GUIWire(submodelModifiable, nand3.getPin("Y"), Y3, new Point[0]); + new GUIWire(submodelModifiable, nand4.getPin("Y"), Y4, new Point[0]); + } + + static + { + IndirectGUIComponentCreator.setComponentSupplier(GUInot4.class.getCanonicalName(), (m, p, n) -> new GUInot4(m, n)); + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/GUIor4.java b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/GUIor4.java new file mode 100644 index 00000000..ab3ed897 --- /dev/null +++ b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/GUIor4.java @@ -0,0 +1,101 @@ +package net.mograsim.logic.model.model.components.mi.nandbased; + +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.mograsim.logic.model.model.ViewModelModifiable; +import net.mograsim.logic.model.model.components.atomic.GUINandGate; +import net.mograsim.logic.model.model.components.submodels.SimpleRectangularSubmodelComponent; +import net.mograsim.logic.model.model.wires.GUIWire; +import net.mograsim.logic.model.model.wires.Pin; +import net.mograsim.logic.model.model.wires.WireCrossPoint; +import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator; + +public class GUIor4 extends SimpleRectangularSubmodelComponent +{ + public GUIor4(ViewModelModifiable model) + { + this(model, null); + } + + public GUIor4(ViewModelModifiable model, String name) + { + super(model, 1, "GUIor4", name); + setSubmodelScale(.2); + setInputPins("A1", "A2", "A3", "A4"); + setOutputPins("Y"); + initSubmodelComponents(); + } + + @SuppressWarnings("unused") // for GUIWires being created + private void initSubmodelComponents() + { + Pin A1 = getSubmodelPin("A1"); + Pin A2 = getSubmodelPin("A2"); + Pin A3 = getSubmodelPin("A3"); + Pin A4 = getSubmodelPin("A4"); + Pin Y = getSubmodelPin("Y"); + + GUINandGate nandA1 = new GUINandGate(submodelModifiable, 1); + GUINandGate nandA2 = new GUINandGate(submodelModifiable, 1); + GUINandGate nandA3 = new GUINandGate(submodelModifiable, 1); + GUINandGate nandA4 = new GUINandGate(submodelModifiable, 1); + GUINandGate or12 = new GUINandGate(submodelModifiable, 1); + GUINandGate or34 = new GUINandGate(submodelModifiable, 1); + GUINandGate nor12 = new GUINandGate(submodelModifiable, 1); + GUINandGate nor34 = new GUINandGate(submodelModifiable, 1); + GUINandGate or1234 = new GUINandGate(submodelModifiable, 1); + + WireCrossPoint cpA1 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpA2 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpA3 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpA4 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpOr12 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpOr34 = new WireCrossPoint(submodelModifiable, 1); + + nandA1.moveTo(20, 15); + nandA2.moveTo(20, 65); + nandA3.moveTo(20, 115); + nandA4.moveTo(20, 165); + or12.moveTo(50, 40); + or34.moveTo(50, 140); + nor12.moveTo(110, 40); + nor34.moveTo(110, 140); + or1234.moveTo(140, 90); + cpA1.moveCenterTo(15, 25); + cpA2.moveCenterTo(15, 75); + cpA3.moveCenterTo(15, 125); + cpA4.moveCenterTo(15, 175); + cpOr12.moveCenterTo(105, 50); + cpOr34.moveCenterTo(105, 150); + + new GUIWire(submodelModifiable, A1, cpA1, new Point[0]); + new GUIWire(submodelModifiable, A2, cpA2, new Point[0]); + new GUIWire(submodelModifiable, A3, cpA3, new Point[0]); + new GUIWire(submodelModifiable, A4, cpA4, new Point[0]); + new GUIWire(submodelModifiable, cpA1, nandA1.getPin("A"), new Point(15, 20)); + new GUIWire(submodelModifiable, cpA2, nandA2.getPin("A"), new Point(15, 70)); + new GUIWire(submodelModifiable, cpA3, nandA3.getPin("A"), new Point(15, 120)); + new GUIWire(submodelModifiable, cpA4, nandA4.getPin("A"), new Point(15, 170)); + new GUIWire(submodelModifiable, cpA1, nandA1.getPin("B"), new Point(15, 30)); + new GUIWire(submodelModifiable, cpA2, nandA2.getPin("B"), new Point(15, 80)); + new GUIWire(submodelModifiable, cpA3, nandA3.getPin("B"), new Point(15, 130)); + new GUIWire(submodelModifiable, cpA4, nandA4.getPin("B"), new Point(15, 180)); + new GUIWire(submodelModifiable, nandA1.getPin("Y"), or12.getPin("A")); + new GUIWire(submodelModifiable, nandA2.getPin("Y"), or12.getPin("B")); + new GUIWire(submodelModifiable, nandA3.getPin("Y"), or34.getPin("A")); + new GUIWire(submodelModifiable, nandA4.getPin("Y"), or34.getPin("B")); + new GUIWire(submodelModifiable, or12.getPin("Y"), cpOr12, new Point[0]); + new GUIWire(submodelModifiable, or34.getPin("Y"), cpOr34, new Point[0]); + new GUIWire(submodelModifiable, cpOr12, nor12.getPin("A"), new Point(105, 45)); + new GUIWire(submodelModifiable, cpOr12, nor12.getPin("B"), new Point(105, 55)); + new GUIWire(submodelModifiable, cpOr34, nor34.getPin("A"), new Point(105, 145)); + new GUIWire(submodelModifiable, cpOr34, nor34.getPin("B"), new Point(105, 155)); + new GUIWire(submodelModifiable, nor12.getPin("Y"), or1234.getPin("A")); + new GUIWire(submodelModifiable, nor34.getPin("Y"), or1234.getPin("B")); + new GUIWire(submodelModifiable, or1234.getPin("Y"), Y); + } + + static + { + IndirectGUIComponentCreator.setComponentSupplier(GUIor4.class.getCanonicalName(), (m, p, n) -> new GUIor4(m, n)); + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/GUIor_4.java b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/GUIor_4.java new file mode 100644 index 00000000..3082f72f --- /dev/null +++ b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/GUIor_4.java @@ -0,0 +1,129 @@ +package net.mograsim.logic.model.model.components.mi.nandbased; + +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.mograsim.logic.model.model.ViewModelModifiable; +import net.mograsim.logic.model.model.components.atomic.GUINandGate; +import net.mograsim.logic.model.model.components.submodels.SimpleRectangularSubmodelComponent; +import net.mograsim.logic.model.model.wires.GUIWire; +import net.mograsim.logic.model.model.wires.Pin; +import net.mograsim.logic.model.model.wires.WireCrossPoint; +import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator; + +public class GUIor_4 extends SimpleRectangularSubmodelComponent +{ + public GUIor_4(ViewModelModifiable model) + { + this(model, null); + } + + public GUIor_4(ViewModelModifiable model, String name) + { + super(model, 1, "GUIor_4", name); + setSubmodelScale(.4); + setInputPins("A1", "A2", "A3", "A4", "B1", "B2", "B3", "B4"); + setOutputPins("Y1", "Y2", "Y3", "Y4"); + initSubmodelComponents(); + } + + @SuppressWarnings("unused") // for GUIWires being created + private void initSubmodelComponents() + { + Pin A1 = getSubmodelPin("A1"); + Pin A2 = getSubmodelPin("A2"); + Pin A3 = getSubmodelPin("A3"); + Pin A4 = getSubmodelPin("A4"); + Pin B1 = getSubmodelPin("B1"); + Pin B2 = getSubmodelPin("B2"); + Pin B3 = getSubmodelPin("B3"); + Pin B4 = getSubmodelPin("B4"); + Pin Y1 = getSubmodelPin("Y1"); + Pin Y2 = getSubmodelPin("Y2"); + Pin Y3 = getSubmodelPin("Y3"); + Pin Y4 = getSubmodelPin("Y4"); + + GUINandGate notA1 = new GUINandGate(submodelModifiable, 1); + GUINandGate notA2 = new GUINandGate(submodelModifiable, 1); + GUINandGate notA3 = new GUINandGate(submodelModifiable, 1); + GUINandGate notA4 = new GUINandGate(submodelModifiable, 1); + GUINandGate notB1 = new GUINandGate(submodelModifiable, 1); + GUINandGate notB2 = new GUINandGate(submodelModifiable, 1); + GUINandGate notB3 = new GUINandGate(submodelModifiable, 1); + GUINandGate notB4 = new GUINandGate(submodelModifiable, 1); + GUINandGate nandY1 = new GUINandGate(submodelModifiable, 1); + GUINandGate nandY2 = new GUINandGate(submodelModifiable, 1); + GUINandGate nandY3 = new GUINandGate(submodelModifiable, 1); + GUINandGate nandY4 = new GUINandGate(submodelModifiable, 1); + + WireCrossPoint cpA1 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpA2 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpA3 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpA4 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpB1 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpB2 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpB3 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpB4 = new WireCrossPoint(submodelModifiable, 1); + + notA1.moveTo(15, 2.5); + notA2.moveTo(15, 27.5); + notA3.moveTo(15, 52.5); + notA4.moveTo(15, 77.5); + notB1.moveTo(15, 102.5); + notB2.moveTo(15, 127.5); + notB3.moveTo(15, 152.5); + notB4.moveTo(15, 177.5); + nandY1.moveTo(65, 2.5); + nandY2.moveTo(65, 27.5); + nandY3.moveTo(65, 52.5); + nandY4.moveTo(65, 77.5); + cpA1.moveCenterTo(7.5, 12.5); + cpA2.moveCenterTo(7.5, 37.5); + cpA3.moveCenterTo(7.5, 62.5); + cpA4.moveCenterTo(7.5, 87.5); + cpB1.moveCenterTo(7.5, 112.5); + cpB2.moveCenterTo(7.5, 137.5); + cpB3.moveCenterTo(7.5, 162.5); + cpB4.moveCenterTo(7.5, 187.5); + + new GUIWire(submodelModifiable, A1, cpA1, new Point[0]); + new GUIWire(submodelModifiable, A2, cpA2, new Point[0]); + new GUIWire(submodelModifiable, A3, cpA3, new Point[0]); + new GUIWire(submodelModifiable, A4, cpA4, new Point[0]); + new GUIWire(submodelModifiable, B1, cpB1, new Point[0]); + new GUIWire(submodelModifiable, B2, cpB2, new Point[0]); + new GUIWire(submodelModifiable, B3, cpB3, new Point[0]); + new GUIWire(submodelModifiable, B4, cpB4, new Point[0]); + new GUIWire(submodelModifiable, cpA1, notA1.getPin("A"), new Point(7.5, 7.5)); + new GUIWire(submodelModifiable, cpA1, notA1.getPin("B"), new Point(7.5, 17.5)); + new GUIWire(submodelModifiable, cpA2, notA2.getPin("A"), new Point(7.5, 32.5)); + new GUIWire(submodelModifiable, cpA2, notA2.getPin("B"), new Point(7.5, 42.5)); + new GUIWire(submodelModifiable, cpA3, notA3.getPin("A"), new Point(7.5, 57.5)); + new GUIWire(submodelModifiable, cpA3, notA3.getPin("B"), new Point(7.5, 67.5)); + new GUIWire(submodelModifiable, cpA4, notA4.getPin("A"), new Point(7.5, 82.5)); + new GUIWire(submodelModifiable, cpA4, notA4.getPin("B"), new Point(7.5, 92.5)); + new GUIWire(submodelModifiable, cpB1, notB1.getPin("A"), new Point(7.5, 107.5)); + new GUIWire(submodelModifiable, cpB1, notB1.getPin("B"), new Point(7.5, 117.5)); + new GUIWire(submodelModifiable, cpB2, notB2.getPin("A"), new Point(7.5, 132.5)); + new GUIWire(submodelModifiable, cpB2, notB2.getPin("B"), new Point(7.5, 142.5)); + new GUIWire(submodelModifiable, cpB3, notB3.getPin("A"), new Point(7.5, 157.5)); + new GUIWire(submodelModifiable, cpB3, notB3.getPin("B"), new Point(7.5, 167.5)); + new GUIWire(submodelModifiable, cpB4, notB4.getPin("A"), new Point(7.5, 182.5)); + new GUIWire(submodelModifiable, cpB4, notB4.getPin("B"), new Point(7.5, 192.5)); + new GUIWire(submodelModifiable, notA1.getPin("Y"), nandY1.getPin("A"), new Point(40, 12.5), new Point(40, 7.5)); + new GUIWire(submodelModifiable, notB1.getPin("Y"), nandY1.getPin("B"), new Point(45, 112.5), new Point(45, 17.5)); + new GUIWire(submodelModifiable, notA2.getPin("Y"), nandY2.getPin("A"), new Point(40, 37.5), new Point(40, 32.5)); + new GUIWire(submodelModifiable, notB2.getPin("Y"), nandY2.getPin("B"), new Point(50, 137.5), new Point(50, 42.5)); + new GUIWire(submodelModifiable, notA3.getPin("Y"), nandY3.getPin("A"), new Point(40, 62.5), new Point(40, 57.5)); + new GUIWire(submodelModifiable, notB3.getPin("Y"), nandY3.getPin("B"), new Point(55, 162.5), new Point(55, 67.5)); + new GUIWire(submodelModifiable, notA4.getPin("Y"), nandY4.getPin("A"), new Point(40, 87.5), new Point(40, 82.5)); + new GUIWire(submodelModifiable, notB4.getPin("Y"), nandY4.getPin("B"), new Point(60, 187.5), new Point(60, 92.5)); + new GUIWire(submodelModifiable, nandY1.getPin("Y"), Y1, new Point[0]); + new GUIWire(submodelModifiable, nandY2.getPin("Y"), Y2, new Point[0]); + new GUIWire(submodelModifiable, nandY3.getPin("Y"), Y3, new Point[0]); + new GUIWire(submodelModifiable, nandY4.getPin("Y"), Y4, new Point[0]); + } + + static + { + IndirectGUIComponentCreator.setComponentSupplier(GUIor_4.class.getCanonicalName(), (m, p, n) -> new GUIor_4(m, n)); + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/GUIram2.java b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/GUIram2.java new file mode 100644 index 00000000..2ebc1e33 --- /dev/null +++ b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/GUIram2.java @@ -0,0 +1,333 @@ +package net.mograsim.logic.model.model.components.mi.nandbased; + +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.mograsim.logic.core.types.BitVector; +import net.mograsim.logic.model.model.ViewModelModifiable; +import net.mograsim.logic.model.model.components.submodels.SimpleRectangularSubmodelComponent; +import net.mograsim.logic.model.model.wires.GUIWire; +import net.mograsim.logic.model.model.wires.Pin; +import net.mograsim.logic.model.model.wires.WireCrossPoint; +import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator; + +public class GUIram2 extends SimpleRectangularSubmodelComponent +{ + private GUIdlatch4 cell00; + private GUIdlatch4 cell01; + private GUIdlatch4 cell10; + private GUIdlatch4 cell11; + + public GUIram2(ViewModelModifiable model) + { + this(model, null); + } + + public GUIram2(ViewModelModifiable model, String name) + { + super(model, 1, "GUIram2", name); + setSubmodelScale(.1); + setInputPins("A0", "A1", "B0", "B1", "WE", "D1", "D2", "D3", "D4"); + setOutputPins("QA1", "QA2", "QA3", "QA4", "QB1", "QB2", "QB3", "QB4"); + initSubmodelComponents(); + } + + @SuppressWarnings("unused") // for GUIWires being created + private void initSubmodelComponents() + { + //@formatter:off + Pin A0 = getSubmodelPin("A0"); + Pin A1 = getSubmodelPin("A1"); + Pin B0 = getSubmodelPin("B0"); + Pin B1 = getSubmodelPin("B1"); + Pin WE = getSubmodelPin("WE"); + Pin D1 = getSubmodelPin("D1"); + Pin D2 = getSubmodelPin("D2"); + Pin D3 = getSubmodelPin("D3"); + Pin D4 = getSubmodelPin("D4"); + Pin QA1 = getSubmodelPin("QA1"); + Pin QA2 = getSubmodelPin("QA2"); + Pin QA3 = getSubmodelPin("QA3"); + Pin QA4 = getSubmodelPin("QA4"); + Pin QB1 = getSubmodelPin("QB1"); + Pin QB2 = getSubmodelPin("QB2"); + Pin QB3 = getSubmodelPin("QB3"); + Pin QB4 = getSubmodelPin("QB4"); + + GUIdemux2 demuxA = new GUIdemux2 (submodelModifiable); + GUIdemux2 demuxB = new GUIdemux2 (submodelModifiable); + GUIand41 weAndB = new GUIand41 (submodelModifiable); + cell00 = new GUIdlatch4 (submodelModifiable); + cell01 = new GUIdlatch4 (submodelModifiable); + cell10 = new GUIdlatch4 (submodelModifiable); + cell11 = new GUIdlatch4 (submodelModifiable); + GUIand41 andA00 = new GUIand41 (submodelModifiable); + GUIandor414 andorA01 = new GUIandor414(submodelModifiable); + GUIandor414 andorA10 = new GUIandor414(submodelModifiable); + GUIandor414 andorA11 = new GUIandor414(submodelModifiable); + GUIand41 andB00 = new GUIand41 (submodelModifiable); + GUIandor414 andorB01 = new GUIandor414(submodelModifiable); + GUIandor414 andorB10 = new GUIandor414(submodelModifiable); + GUIandor414 andorB11 = new GUIandor414(submodelModifiable); + + WireCrossPoint cpB00 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpB01 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpB10 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpB11 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpD1in = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpD2in = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpD3in = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpD4in = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpD101 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpD201 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpD301 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpD401 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpD110 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpD210 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpD310 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpD410 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpQ100 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpQ200 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpQ300 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpQ400 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpQ101 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpQ201 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpQ301 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpQ401 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpQ110 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpQ210 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpQ310 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpQ410 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpQ111 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpQ211 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpQ311 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpQ411 = new WireCrossPoint(submodelModifiable, 1); + + demuxA .moveTo( 55, 45); + demuxB .moveTo( 55, 150); + weAndB .moveTo(130, 150); + cell00 .moveTo( 55, 325); + cell01 .moveTo( 55, 475); + cell10 .moveTo( 55, 625); + cell11 .moveTo( 55, 775); + andA00 .moveTo(235, 375); + andorA01.moveTo(235, 485); + andorA10.moveTo(235, 635); + andorA11.moveTo(235, 785); + andB00 .moveTo(135, 325); + andorB01.moveTo(135, 435); + andorB10.moveTo(135, 585); + andorB11.moveTo(135, 735); + cpB00 .moveCenterTo(110, 155); + cpB01 .moveCenterTo(105, 165); + cpB10 .moveCenterTo(100, 175); + cpB11 .moveCenterTo( 95, 185); + cpD1in.moveCenterTo( 35, 550); + cpD2in.moveCenterTo( 40, 650); + cpD3in.moveCenterTo( 45, 750); + cpD4in.moveCenterTo( 50, 810); + cpD101.moveCenterTo( 35, 480); + cpD201.moveCenterTo( 40, 490); + cpD301.moveCenterTo( 45, 500); + cpD401.moveCenterTo( 50, 510); + cpD110.moveCenterTo( 35, 630); + cpD210.moveCenterTo( 40, 640); + cpD310.moveCenterTo( 45, 650); + cpD410.moveCenterTo( 50, 660); + cpQ100.moveCenterTo(130, 330); + cpQ200.moveCenterTo(125, 340); + cpQ300.moveCenterTo(120, 350); + cpQ400.moveCenterTo(115, 360); + cpQ101.moveCenterTo(130, 480); + cpQ201.moveCenterTo(125, 490); + cpQ301.moveCenterTo(120, 500); + cpQ401.moveCenterTo(115, 510); + cpQ110.moveCenterTo(130, 630); + cpQ210.moveCenterTo(125, 640); + cpQ310.moveCenterTo(120, 650); + cpQ410.moveCenterTo(115, 660); + cpQ111.moveCenterTo(130, 780); + cpQ211.moveCenterTo(125, 790); + cpQ311.moveCenterTo(120, 800); + cpQ411.moveCenterTo(115, 810); + + new GUIWire(submodelModifiable, A0, demuxA.getPin("S0"), new Point[0]); + new GUIWire(submodelModifiable, A1, demuxA.getPin("S1"), new Point(10, 150), new Point(10, 60)); + new GUIWire(submodelModifiable, B0, demuxB.getPin("S0"), new Point( 5, 250), new Point( 5, 155)); + new GUIWire(submodelModifiable, B1, demuxB.getPin("S1"), new Point(10, 350), new Point(10, 165)); + new GUIWire(submodelModifiable, demuxB.getPin("Y00"), cpB00, new Point[0]); + new GUIWire(submodelModifiable, demuxB.getPin("Y01"), cpB01, new Point[0]); + new GUIWire(submodelModifiable, demuxB.getPin("Y10"), cpB10, new Point[0]); + new GUIWire(submodelModifiable, demuxB.getPin("Y11"), cpB11, new Point[0]); + new GUIWire(submodelModifiable, cpB00, weAndB.getPin("A1"), new Point[0]); + new GUIWire(submodelModifiable, cpB01, weAndB.getPin("A2"), new Point[0]); + new GUIWire(submodelModifiable, cpB10, weAndB.getPin("A3"), new Point[0]); + new GUIWire(submodelModifiable, cpB11, weAndB.getPin("A4"), new Point[0]); + new GUIWire(submodelModifiable, WE, weAndB.getPin("B"), new Point(5, 450), new Point(5, 300), new Point(125, 300), new Point(125, 195)); + new GUIWire(submodelModifiable, weAndB.getPin("Y1"), cell00.getPin("C"), new Point(185, 155), new Point(185, 250), new Point(30, 250), new Point(30, 370)); + new GUIWire(submodelModifiable, weAndB.getPin("Y2"), cell01.getPin("C"), new Point(180, 165), new Point(180, 245), new Point(25, 245), new Point(25, 520)); + new GUIWire(submodelModifiable, weAndB.getPin("Y3"), cell10.getPin("C"), new Point(175, 175), new Point(175, 240), new Point(20, 240), new Point(20, 670)); + new GUIWire(submodelModifiable, weAndB.getPin("Y4"), cell11.getPin("C"), new Point(170, 185), new Point(170, 235), new Point(15, 235), new Point(15, 820)); + new GUIWire(submodelModifiable, D1, cpD1in , new Point[0]); + new GUIWire(submodelModifiable, D2, cpD2in , new Point[0]); + new GUIWire(submodelModifiable, D3, cpD3in , new Point[0]); + new GUIWire(submodelModifiable, D4, cpD4in , new Point(50, 850)); + new GUIWire(submodelModifiable, cpD101, cell00.getPin("D1"), new Point(35, 330)); + new GUIWire(submodelModifiable, cpD201, cell00.getPin("D2"), new Point(40, 340)); + new GUIWire(submodelModifiable, cpD301, cell00.getPin("D3"), new Point(45, 350)); + new GUIWire(submodelModifiable, cpD401, cell00.getPin("D4"), new Point(50, 360)); + new GUIWire(submodelModifiable, cpD101, cell01.getPin("D1"), new Point[0]); + new GUIWire(submodelModifiable, cpD201, cell01.getPin("D2"), new Point[0]); + new GUIWire(submodelModifiable, cpD301, cell01.getPin("D3"), new Point[0]); + new GUIWire(submodelModifiable, cpD401, cell01.getPin("D4"), new Point[0]); + new GUIWire(submodelModifiable, cpD101, cpD1in , new Point[0]); + new GUIWire(submodelModifiable, cpD1in, cpD110 , new Point[0]); + new GUIWire(submodelModifiable, cpD201, cpD210 , new Point[0]); + new GUIWire(submodelModifiable, cpD301, cpD310 , new Point[0]); + new GUIWire(submodelModifiable, cpD401, cpD410 , new Point[0]); + new GUIWire(submodelModifiable, cpD110, cell10.getPin("D1"), new Point[0]); + new GUIWire(submodelModifiable, cpD210, cell10.getPin("D2"), new Point[0]); + new GUIWire(submodelModifiable, cpD310, cell10.getPin("D3"), new Point[0]); + new GUIWire(submodelModifiable, cpD410, cell10.getPin("D4"), new Point[0]); + new GUIWire(submodelModifiable, cpD210, cpD2in , new Point[0]); + new GUIWire(submodelModifiable, cpD310, cpD3in , new Point[0]); + new GUIWire(submodelModifiable, cpD410, cpD4in , new Point[0]); + new GUIWire(submodelModifiable, cpD110, cell11.getPin("D1"), new Point(35, 780)); + new GUIWire(submodelModifiable, cpD2in, cell11.getPin("D2"), new Point(40, 790)); + new GUIWire(submodelModifiable, cpD3in, cell11.getPin("D3"), new Point(45, 800)); + new GUIWire(submodelModifiable, cpD4in, cell11.getPin("D4"), new Point[0]); + new GUIWire(submodelModifiable, cell00.getPin("Q1"), cpQ100, new Point[0]); + new GUIWire(submodelModifiable, cell00.getPin("Q2"), cpQ200, new Point[0]); + new GUIWire(submodelModifiable, cell00.getPin("Q3"), cpQ300, new Point[0]); + new GUIWire(submodelModifiable, cell00.getPin("Q4"), cpQ400, new Point[0]); + new GUIWire(submodelModifiable, cell01.getPin("Q1"), cpQ101, new Point[0]); + new GUIWire(submodelModifiable, cell01.getPin("Q2"), cpQ201, new Point[0]); + new GUIWire(submodelModifiable, cell01.getPin("Q3"), cpQ301, new Point[0]); + new GUIWire(submodelModifiable, cell01.getPin("Q4"), cpQ401, new Point[0]); + new GUIWire(submodelModifiable, cell10.getPin("Q1"), cpQ110, new Point[0]); + new GUIWire(submodelModifiable, cell10.getPin("Q2"), cpQ210, new Point[0]); + new GUIWire(submodelModifiable, cell10.getPin("Q3"), cpQ310, new Point[0]); + new GUIWire(submodelModifiable, cell10.getPin("Q4"), cpQ410, new Point[0]); + new GUIWire(submodelModifiable, cell11.getPin("Q1"), cpQ111, new Point[0]); + new GUIWire(submodelModifiable, cell11.getPin("Q2"), cpQ211, new Point[0]); + new GUIWire(submodelModifiable, cell11.getPin("Q3"), cpQ311, new Point[0]); + new GUIWire(submodelModifiable, cell11.getPin("Q4"), cpQ411, new Point[0]); + new GUIWire(submodelModifiable, demuxA.getPin("Y00"), andA00 .getPin("B"), new Point(210, 50), new Point(210, 420)); + new GUIWire(submodelModifiable, demuxA.getPin("Y01"), andorA01.getPin("B"), new Point(205, 60), new Point(205, 570)); + new GUIWire(submodelModifiable, demuxA.getPin("Y10"), andorA10.getPin("B"), new Point(200, 70), new Point(200, 720)); + new GUIWire(submodelModifiable, demuxA.getPin("Y11"), andorA11.getPin("B"), new Point(195, 80), new Point(195, 870)); + new GUIWire(submodelModifiable, cpB00 , andB00 .getPin("B"), new Point(110, 370)); + new GUIWire(submodelModifiable, cpB01 , andorB01.getPin("B"), new Point(105, 520)); + new GUIWire(submodelModifiable, cpB10 , andorB10.getPin("B"), new Point(100, 670)); + new GUIWire(submodelModifiable, cpB11 , andorB11.getPin("B"), new Point(95, 820)); + new GUIWire(submodelModifiable, cpQ100, andA00 .getPin("A1"), new Point(130, 380)); + new GUIWire(submodelModifiable, cpQ200, andA00 .getPin("A2"), new Point(125, 390)); + new GUIWire(submodelModifiable, cpQ300, andA00 .getPin("A3"), new Point(120, 400)); + new GUIWire(submodelModifiable, cpQ400, andA00 .getPin("A4"), new Point(115, 410)); + new GUIWire(submodelModifiable, cpQ101, andorA01.getPin("A1"), new Point(130, 530)); + new GUIWire(submodelModifiable, cpQ201, andorA01.getPin("A2"), new Point(125, 540)); + new GUIWire(submodelModifiable, cpQ301, andorA01.getPin("A3"), new Point(120, 550)); + new GUIWire(submodelModifiable, cpQ401, andorA01.getPin("A4"), new Point(115, 560)); + new GUIWire(submodelModifiable, cpQ110, andorA10.getPin("A1"), new Point(130, 680)); + new GUIWire(submodelModifiable, cpQ210, andorA10.getPin("A2"), new Point(125, 690)); + new GUIWire(submodelModifiable, cpQ310, andorA10.getPin("A3"), new Point(120, 700)); + new GUIWire(submodelModifiable, cpQ410, andorA10.getPin("A4"), new Point(115, 710)); + new GUIWire(submodelModifiable, cpQ111, andorA11.getPin("A1"), new Point(130, 830)); + new GUIWire(submodelModifiable, cpQ211, andorA11.getPin("A2"), new Point(125, 840)); + new GUIWire(submodelModifiable, cpQ311, andorA11.getPin("A3"), new Point(120, 850)); + new GUIWire(submodelModifiable, cpQ411, andorA11.getPin("A4"), new Point(115, 860)); + new GUIWire(submodelModifiable, cpQ100, andB00 .getPin("A1"), new Point[0]); + new GUIWire(submodelModifiable, cpQ200, andB00 .getPin("A2"), new Point[0]); + new GUIWire(submodelModifiable, cpQ300, andB00 .getPin("A3"), new Point[0]); + new GUIWire(submodelModifiable, cpQ400, andB00 .getPin("A4"), new Point[0]); + new GUIWire(submodelModifiable, cpQ101, andorB01.getPin("A1"), new Point[0]); + new GUIWire(submodelModifiable, cpQ201, andorB01.getPin("A2"), new Point[0]); + new GUIWire(submodelModifiable, cpQ301, andorB01.getPin("A3"), new Point[0]); + new GUIWire(submodelModifiable, cpQ401, andorB01.getPin("A4"), new Point[0]); + new GUIWire(submodelModifiable, cpQ110, andorB10.getPin("A1"), new Point[0]); + new GUIWire(submodelModifiable, cpQ210, andorB10.getPin("A2"), new Point[0]); + new GUIWire(submodelModifiable, cpQ310, andorB10.getPin("A3"), new Point[0]); + new GUIWire(submodelModifiable, cpQ410, andorB10.getPin("A4"), new Point[0]); + new GUIWire(submodelModifiable, cpQ111, andorB11.getPin("A1"), new Point[0]); + new GUIWire(submodelModifiable, cpQ211, andorB11.getPin("A2"), new Point[0]); + new GUIWire(submodelModifiable, cpQ311, andorB11.getPin("A3"), new Point[0]); + new GUIWire(submodelModifiable, cpQ411, andorB11.getPin("A4"), new Point[0]); + new GUIWire(submodelModifiable, andA00 .getPin("Y1"), andorA01.getPin("C1"), new Point(290, 380), new Point(290, 445), new Point(230, 445), new Point(230, 490)); + new GUIWire(submodelModifiable, andA00 .getPin("Y2"), andorA01.getPin("C2"), new Point(285, 390), new Point(285, 440), new Point(225, 440), new Point(225, 500)); + new GUIWire(submodelModifiable, andA00 .getPin("Y3"), andorA01.getPin("C3"), new Point(280, 400), new Point(280, 435), new Point(220, 435), new Point(220, 510)); + new GUIWire(submodelModifiable, andA00 .getPin("Y4"), andorA01.getPin("C4"), new Point(275, 410), new Point(275, 430), new Point(215, 430), new Point(215, 520)); + new GUIWire(submodelModifiable, andorA01.getPin("Y1"), andorA10.getPin("C1"), new Point(290, 490), new Point(290, 595), new Point(230, 595), new Point(230, 640)); + new GUIWire(submodelModifiable, andorA01.getPin("Y2"), andorA10.getPin("C2"), new Point(285, 500), new Point(285, 590), new Point(225, 590), new Point(225, 650)); + new GUIWire(submodelModifiable, andorA01.getPin("Y3"), andorA10.getPin("C3"), new Point(280, 510), new Point(280, 585), new Point(220, 585), new Point(220, 660)); + new GUIWire(submodelModifiable, andorA01.getPin("Y4"), andorA10.getPin("C4"), new Point(275, 520), new Point(275, 580), new Point(215, 580), new Point(215, 670)); + new GUIWire(submodelModifiable, andorA10.getPin("Y1"), andorA11.getPin("C1"), new Point(290, 640), new Point(290, 745), new Point(230, 745), new Point(230, 790)); + new GUIWire(submodelModifiable, andorA10.getPin("Y2"), andorA11.getPin("C2"), new Point(285, 650), new Point(285, 740), new Point(225, 740), new Point(225, 800)); + new GUIWire(submodelModifiable, andorA10.getPin("Y3"), andorA11.getPin("C3"), new Point(280, 660), new Point(280, 735), new Point(220, 735), new Point(220, 810)); + new GUIWire(submodelModifiable, andorA10.getPin("Y4"), andorA11.getPin("C4"), new Point(275, 670), new Point(275, 730), new Point(215, 730), new Point(215, 820)); + new GUIWire(submodelModifiable, andorA11.getPin("Y1"), QA1 , new Point(300, 790), new Point(300, 50)); + new GUIWire(submodelModifiable, andorA11.getPin("Y2"), QA2 , new Point(305, 800), new Point(305, 150)); + new GUIWire(submodelModifiable, andorA11.getPin("Y3"), QA3 , new Point(310, 810), new Point(310, 250)); + new GUIWire(submodelModifiable, andorA11.getPin("Y4"), QA4 , new Point(315, 820), new Point(315, 350)); + new GUIWire(submodelModifiable, andB00 .getPin("Y1"), andorB01.getPin("C1"), new Point(190, 330), new Point(190, 430), new Point(130, 430), new Point(130, 440)); + new GUIWire(submodelModifiable, andB00 .getPin("Y2"), andorB01.getPin("C2"), new Point(185, 340), new Point(185, 425), new Point(125, 425), new Point(125, 450)); + new GUIWire(submodelModifiable, andB00 .getPin("Y3"), andorB01.getPin("C3"), new Point(180, 350), new Point(180, 420), new Point(120, 420), new Point(120, 460)); + new GUIWire(submodelModifiable, andB00 .getPin("Y4"), andorB01.getPin("C4"), new Point(175, 360), new Point(175, 415), new Point(115, 415), new Point(115, 470)); + new GUIWire(submodelModifiable, andorB01.getPin("Y1"), andorB10.getPin("C1"), new Point(190, 440), new Point(190, 580), new Point(130, 580), new Point(130, 590)); + new GUIWire(submodelModifiable, andorB01.getPin("Y2"), andorB10.getPin("C2"), new Point(185, 450), new Point(185, 575), new Point(125, 575), new Point(125, 600)); + new GUIWire(submodelModifiable, andorB01.getPin("Y3"), andorB10.getPin("C3"), new Point(180, 460), new Point(180, 570), new Point(120, 570), new Point(120, 610)); + new GUIWire(submodelModifiable, andorB01.getPin("Y4"), andorB10.getPin("C4"), new Point(175, 470), new Point(175, 565), new Point(115, 565), new Point(115, 620)); + new GUIWire(submodelModifiable, andorB10.getPin("Y1"), andorB11.getPin("C1"), new Point(190, 590), new Point(190, 730), new Point(130, 730), new Point(130, 740)); + new GUIWire(submodelModifiable, andorB10.getPin("Y2"), andorB11.getPin("C2"), new Point(185, 600), new Point(185, 725), new Point(125, 725), new Point(125, 750)); + new GUIWire(submodelModifiable, andorB10.getPin("Y3"), andorB11.getPin("C3"), new Point(180, 610), new Point(180, 720), new Point(120, 720), new Point(120, 760)); + new GUIWire(submodelModifiable, andorB10.getPin("Y4"), andorB11.getPin("C4"), new Point(175, 620), new Point(175, 715), new Point(115, 715), new Point(115, 770)); + new GUIWire(submodelModifiable, andorB11.getPin("Y1"), QB1 , new Point(190, 740), new Point(190, 880), new Point(325, 880), new Point(325, 450)); + new GUIWire(submodelModifiable, andorB11.getPin("Y2"), QB2 , new Point(185, 750), new Point(185, 885), new Point(330, 885), new Point(330, 550)); + new GUIWire(submodelModifiable, andorB11.getPin("Y3"), QB3 , new Point(180, 760), new Point(180, 890), new Point(335, 890), new Point(335, 650)); + new GUIWire(submodelModifiable, andorB11.getPin("Y4"), QB4 , new Point(175, 770), new Point(175, 895), new Point(340, 895), new Point(340, 750)); + //@formatter:on + + addHighLevelStateSubcomponentID("c00", cell00); + addHighLevelStateSubcomponentID("c01", cell01); + addHighLevelStateSubcomponentID("c10", cell10); + addHighLevelStateSubcomponentID("c11", cell11); + addAtomicHighLevelStateID("q"); + } + + @Override + public void setAtomicHighLevelState(String stateID, Object newState) + { + switch (stateID) + { + case "q": + BitVector newStateCasted = (BitVector) newState; + setHighLevelState("c00.q", newStateCasted.subVector(0, 4)); + setHighLevelState("c01.q", newStateCasted.subVector(4, 8)); + setHighLevelState("c10.q", newStateCasted.subVector(8, 12)); + setHighLevelState("c11.q", newStateCasted.subVector(12, 16)); + break; + default: + // should not happen because we tell SubmodelComponent to only allow these state IDs. + throw new IllegalStateException("Illegal atomic state ID: " + stateID); + } + } + + @Override + public Object getAtomicHighLevelState(String stateID) + { + switch (stateID) + { + case "q": + BitVector q00 = (BitVector) getHighLevelState("c00.q"); + BitVector q01 = (BitVector) getHighLevelState("c01.q"); + BitVector q10 = (BitVector) getHighLevelState("c10.q"); + BitVector q11 = (BitVector) getHighLevelState("c11.q"); + return q00.concat(q01).concat(q10).concat(q11); + default: + // should not happen because we tell SubmodelComponent to only allow these state IDs. + throw new IllegalStateException("Illegal atomic state ID: " + stateID); + } + } + + static + { + IndirectGUIComponentCreator.setComponentSupplier(GUIram2.class.getCanonicalName(), (m, p, n) -> new GUIram2(m, n)); + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/GUIram4.java b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/GUIram4.java new file mode 100644 index 00000000..903a227f --- /dev/null +++ b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/GUIram4.java @@ -0,0 +1,371 @@ +package net.mograsim.logic.model.model.components.mi.nandbased; + +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.mograsim.logic.core.types.BitVector; +import net.mograsim.logic.model.model.ViewModelModifiable; +import net.mograsim.logic.model.model.components.submodels.SimpleRectangularSubmodelComponent; +import net.mograsim.logic.model.model.wires.GUIWire; +import net.mograsim.logic.model.model.wires.Pin; +import net.mograsim.logic.model.model.wires.WireCrossPoint; +import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator; + +public class GUIram4 extends SimpleRectangularSubmodelComponent +{ + public GUIram4(ViewModelModifiable model) + { + this(model, null); + } + + public GUIram4(ViewModelModifiable model, String name) + { + super(model, 1, "GUIram4", name); + setSubmodelScale(.1); + setInputPins("A0", "A1", "A2", "A3", "B0", "B1", "B2", "B3", "WE", "D1", "D2", "D3", "D4"); + setOutputPins("QA1", "QA2", "QA3", "QA4", "QB1", "QB2", "QB3", "QB4"); + initSubmodelComponents(); + } + + @SuppressWarnings("unused") // for GUIWires being created + private void initSubmodelComponents() + { + //@formatter:off + Pin A0 = getSubmodelPin("A0"); + Pin A1 = getSubmodelPin("A1"); + Pin A2 = getSubmodelPin("A2"); + Pin A3 = getSubmodelPin("A3"); + Pin B0 = getSubmodelPin("B0"); + Pin B1 = getSubmodelPin("B1"); + Pin B2 = getSubmodelPin("B2"); + Pin B3 = getSubmodelPin("B3"); + Pin WE = getSubmodelPin("WE"); + Pin D1 = getSubmodelPin("D1"); + Pin D2 = getSubmodelPin("D2"); + Pin D3 = getSubmodelPin("D3"); + Pin D4 = getSubmodelPin("D4"); + Pin QA1 =getSubmodelPin("QA1"); + Pin QA2 =getSubmodelPin("QA2"); + Pin QA3 =getSubmodelPin("QA3"); + Pin QA4 =getSubmodelPin("QA4"); + Pin QB1 =getSubmodelPin("QB1"); + Pin QB2 =getSubmodelPin("QB2"); + Pin QB3 =getSubmodelPin("QB3"); + Pin QB4 =getSubmodelPin("QB4"); + + GUIdemux2 demuxA = new GUIdemux2 (submodelModifiable); + GUIdemux2 demuxB = new GUIdemux2 (submodelModifiable); + GUIand41 weAndB = new GUIand41 (submodelModifiable); + GUIram2 cell00 = new GUIram2 (submodelModifiable); + GUIram2 cell01 = new GUIram2 (submodelModifiable); + GUIram2 cell10 = new GUIram2 (submodelModifiable); + GUIram2 cell11 = new GUIram2 (submodelModifiable); + GUIand41 andB00 = new GUIand41 (submodelModifiable); + GUIandor414 andorB01 = new GUIandor414(submodelModifiable); + GUIandor414 andorB10 = new GUIandor414(submodelModifiable); + GUIandor414 andorB11 = new GUIandor414(submodelModifiable); + GUIand41 andA00 = new GUIand41 (submodelModifiable); + GUIandor414 andorA01 = new GUIandor414(submodelModifiable); + GUIandor414 andorA10 = new GUIandor414(submodelModifiable); + GUIandor414 andorA11 = new GUIandor414(submodelModifiable); + + WireCrossPoint cpB00 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpB01 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpB10 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpB11 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpD_101 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpD_201 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpD_301 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpD_401 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpD_110 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpD_210 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpD_310 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpD_410 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpD_111 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpD_211 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpD_311 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpD_411 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpAB101 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpAB201 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpAB301 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpAB401 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpAB110 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpAB210 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpAB310 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpAB410 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpAB1in = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpAB2in = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpAB3in = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpAB4in = new WireCrossPoint(submodelModifiable, 1); + + demuxA .moveTo( 55, 45); + demuxB .moveTo( 55, 150); + weAndB .moveTo(235, 150); + cell00 .moveTo( 80, 330); + cell01 .moveTo( 80, 480); + cell10 .moveTo( 80, 630); + cell11 .moveTo( 80, 780); + andB00 .moveTo(250, 375); + andorB01.moveTo(250, 485); + andorB10.moveTo(250, 635); + andorB11.moveTo(250, 785); + andA00 .moveTo(155, 325); + andorA01.moveTo(155, 435); + andorA10.moveTo(155, 585); + andorA11.moveTo(155, 735); + cpB00 .moveCenterTo(230, 155); + cpB01 .moveCenterTo(225, 165); + cpB10 .moveCenterTo(220, 175); + cpB11 .moveCenterTo(215, 185); + cpD_101.moveCenterTo( 60, 535); + cpD_201.moveCenterTo( 65, 545); + cpD_301.moveCenterTo( 70, 555); + cpD_401.moveCenterTo( 75, 565); + cpD_110.moveCenterTo( 60, 685); + cpD_210.moveCenterTo( 65, 695); + cpD_310.moveCenterTo( 70, 705); + cpD_410.moveCenterTo( 75, 715); + cpD_111.moveCenterTo( 60, 835); + cpD_211.moveCenterTo( 65, 845); + cpD_311.moveCenterTo( 70, 855); + cpD_411.moveCenterTo( 75, 865); + cpAB101.moveCenterTo( 40, 485); + cpAB201.moveCenterTo( 45, 495); + cpAB301.moveCenterTo( 50, 505); + cpAB401.moveCenterTo( 55, 515); + cpAB110.moveCenterTo( 40, 635); + cpAB210.moveCenterTo( 45, 645); + cpAB310.moveCenterTo( 50, 655); + cpAB410.moveCenterTo( 55, 665); + cpAB1in.moveCenterTo( 40, 335); + cpAB2in.moveCenterTo( 45, 350); + cpAB3in.moveCenterTo( 50, 650); + cpAB4in.moveCenterTo( 55, 750); + + new GUIWire(submodelModifiable, A0, demuxA.getPin("S0"), new Point[0]); + new GUIWire(submodelModifiable, A1, demuxA.getPin("S1"), new Point(10, 150), new Point(10, 60)); + new GUIWire(submodelModifiable, B0, demuxB.getPin("S0"), new Point( 5, 450), new Point( 5, 155)); + new GUIWire(submodelModifiable, B1, demuxB.getPin("S1"), new Point(10, 550), new Point(10, 165)); + new GUIWire(submodelModifiable, demuxB.getPin("Y00"), cpB00, new Point[0]); + new GUIWire(submodelModifiable, demuxB.getPin("Y01"), cpB01, new Point[0]); + new GUIWire(submodelModifiable, demuxB.getPin("Y10"), cpB10, new Point[0]); + new GUIWire(submodelModifiable, demuxB.getPin("Y11"), cpB11, new Point[0]); + new GUIWire(submodelModifiable, cpB00, weAndB.getPin("A1"), new Point[0]); + new GUIWire(submodelModifiable, cpB01, weAndB.getPin("A2"), new Point[0]); + new GUIWire(submodelModifiable, cpB10, weAndB.getPin("A3"), new Point[0]); + new GUIWire(submodelModifiable, cpB11, weAndB.getPin("A4"), new Point[0]); + new GUIWire(submodelModifiable, WE, weAndB.getPin("B"), new Point(15, 850), new Point(15, 195)); + new GUIWire(submodelModifiable, weAndB.getPin("Y1"), cell00.getPin("WE"), new Point(290, 155), new Point(290, 230), new Point(35, 230), new Point(35, 375)); + new GUIWire(submodelModifiable, weAndB.getPin("Y2"), cell01.getPin("WE"), new Point(285, 165), new Point(285, 225), new Point(30, 225), new Point(30, 525)); + new GUIWire(submodelModifiable, weAndB.getPin("Y3"), cell10.getPin("WE"), new Point(280, 175), new Point(280, 220), new Point(25, 220), new Point(25, 675)); + new GUIWire(submodelModifiable, weAndB.getPin("Y4"), cell11.getPin("WE"), new Point(275, 185), new Point(275, 215), new Point(20, 215), new Point(20, 825)); + new GUIWire(submodelModifiable, cpAB101, cpAB1in , new Point[0]); + new GUIWire(submodelModifiable, cpAB1in, cell00.getPin("A0"), new Point[0]); + new GUIWire(submodelModifiable, cpAB201, cpAB2in , new Point[0]); + new GUIWire(submodelModifiable, cpAB2in, cell00.getPin("A1"), new Point(45, 345)); + new GUIWire(submodelModifiable, cpAB301, cell00.getPin("B0"), new Point(50, 355)); + new GUIWire(submodelModifiable, cpAB401, cell00.getPin("B1"), new Point(55, 365)); + new GUIWire(submodelModifiable, cpAB101, cell01.getPin("A0"), new Point[0]); + new GUIWire(submodelModifiable, cpAB201, cell01.getPin("A1"), new Point[0]); + new GUIWire(submodelModifiable, cpAB301, cell01.getPin("B0"), new Point[0]); + new GUIWire(submodelModifiable, cpAB401, cell01.getPin("B1"), new Point[0]); + new GUIWire(submodelModifiable, cpAB101, cpAB110 , new Point[0]); + new GUIWire(submodelModifiable, cpAB201, cpAB210 , new Point[0]); + new GUIWire(submodelModifiable, cpAB301, cpAB3in , new Point[0]); + new GUIWire(submodelModifiable, B2 , cpAB3in , new Point[0]); + new GUIWire(submodelModifiable, cpAB3in, cpAB310 , new Point[0]); + new GUIWire(submodelModifiable, cpAB401, cpAB410 , new Point[0]); + new GUIWire(submodelModifiable, cpAB110, cell10.getPin("A0"), new Point[0]); + new GUIWire(submodelModifiable, cpAB210, cell10.getPin("A1"), new Point[0]); + new GUIWire(submodelModifiable, cpAB310, cell10.getPin("B0"), new Point[0]); + new GUIWire(submodelModifiable, cpAB410, cell10.getPin("B1"), new Point[0]); + new GUIWire(submodelModifiable, cpAB110, cell11.getPin("A0"), new Point(40, 785)); + new GUIWire(submodelModifiable, cpAB210, cell11.getPin("A1"), new Point(45, 795)); + new GUIWire(submodelModifiable, cpAB310, cell11.getPin("B0"), new Point(50, 805)); + new GUIWire(submodelModifiable, cpAB410, cpAB4in , new Point[0]); + new GUIWire(submodelModifiable, cpAB4in, cell11.getPin("B1"), new Point(55, 815)); + new GUIWire(submodelModifiable, A2, cpAB1in , new Point(40, 250)); + new GUIWire(submodelModifiable, A3, cpAB2in , new Point[0]); + new GUIWire(submodelModifiable, B3, cpAB4in , new Point[0]); + new GUIWire(submodelModifiable, cpD_101, cell00.getPin("D1"), new Point(60, 385)); + new GUIWire(submodelModifiable, cpD_201, cell00.getPin("D2"), new Point(65, 395)); + new GUIWire(submodelModifiable, cpD_301, cell00.getPin("D3"), new Point(70, 405)); + new GUIWire(submodelModifiable, cpD_401, cell00.getPin("D4"), new Point(75, 415)); + new GUIWire(submodelModifiable, cpD_101, cell01.getPin("D1"), new Point[0]); + new GUIWire(submodelModifiable, cpD_201, cell01.getPin("D2"), new Point[0]); + new GUIWire(submodelModifiable, cpD_301, cell01.getPin("D3"), new Point[0]); + new GUIWire(submodelModifiable, cpD_401, cell01.getPin("D4"), new Point[0]); + new GUIWire(submodelModifiable, cpD_101, cpD_110 , new Point[0]); + new GUIWire(submodelModifiable, cpD_201, cpD_210 , new Point[0]); + new GUIWire(submodelModifiable, cpD_301, cpD_310 , new Point[0]); + new GUIWire(submodelModifiable, cpD_401, cpD_410 , new Point[0]); + new GUIWire(submodelModifiable, cpD_110, cell10.getPin("D1"), new Point[0]); + new GUIWire(submodelModifiable, cpD_210, cell10.getPin("D2"), new Point[0]); + new GUIWire(submodelModifiable, cpD_310, cell10.getPin("D3"), new Point[0]); + new GUIWire(submodelModifiable, cpD_410, cell10.getPin("D4"), new Point[0]); + new GUIWire(submodelModifiable, cpD_110, cpD_111 , new Point[0]); + new GUIWire(submodelModifiable, cpD_210, cpD_211 , new Point[0]); + new GUIWire(submodelModifiable, cpD_310, cpD_311 , new Point[0]); + new GUIWire(submodelModifiable, cpD_410, cpD_411 , new Point[0]); + new GUIWire(submodelModifiable, cpD_111, cell11.getPin("D1"), new Point[0]); + new GUIWire(submodelModifiable, cpD_211, cell11.getPin("D2"), new Point[0]); + new GUIWire(submodelModifiable, cpD_311, cell11.getPin("D3"), new Point[0]); + new GUIWire(submodelModifiable, cpD_411, cell11.getPin("D4"), new Point[0]); + new GUIWire(submodelModifiable, D1, cpD_111 , new Point(60, 950)); + new GUIWire(submodelModifiable, D2, cpD_211 , new Point(65, 1050)); + new GUIWire(submodelModifiable, D3, cpD_311 , new Point(70, 1150)); + new GUIWire(submodelModifiable, D4, cpD_411 , new Point(75, 1250)); + new GUIWire(submodelModifiable, demuxA.getPin("Y00"), andA00 .getPin("B"), new Point(135, 50), new Point(135, 370)); + new GUIWire(submodelModifiable, demuxA.getPin("Y01"), andorA01.getPin("B"), new Point(130, 60), new Point(130, 520)); + new GUIWire(submodelModifiable, demuxA.getPin("Y10"), andorA10.getPin("B"), new Point(125, 70), new Point(125, 670)); + new GUIWire(submodelModifiable, demuxA.getPin("Y11"), andorA11.getPin("B"), new Point(120, 80), new Point(120, 820)); + new GUIWire(submodelModifiable, cpB00, andB00 .getPin("B"), new Point(230, 420)); + new GUIWire(submodelModifiable, cpB01, andorB01.getPin("B"), new Point(225, 570)); + new GUIWire(submodelModifiable, cpB10, andorB10.getPin("B"), new Point(220, 720)); + new GUIWire(submodelModifiable, cpB11, andorB11.getPin("B"), new Point(215, 870)); + new GUIWire(submodelModifiable, cell00.getPin("QB1"), andB00 .getPin("A1"), new Point(140, 375), new Point(140, 380)); + new GUIWire(submodelModifiable, cell00.getPin("QB2"), andB00 .getPin("A2"), new Point(140, 385), new Point(140, 390)); + new GUIWire(submodelModifiable, cell00.getPin("QB3"), andB00 .getPin("A3"), new Point(140, 395), new Point(140, 400)); + new GUIWire(submodelModifiable, cell00.getPin("QB4"), andB00 .getPin("A4"), new Point(140, 405), new Point(140, 410)); + new GUIWire(submodelModifiable, cell01.getPin("QB1"), andorB01.getPin("A1"), new Point(140, 525), new Point(140, 530)); + new GUIWire(submodelModifiable, cell01.getPin("QB2"), andorB01.getPin("A2"), new Point(140, 535), new Point(140, 540)); + new GUIWire(submodelModifiable, cell01.getPin("QB3"), andorB01.getPin("A3"), new Point(140, 545), new Point(140, 550)); + new GUIWire(submodelModifiable, cell01.getPin("QB4"), andorB01.getPin("A4"), new Point(140, 555), new Point(140, 560)); + new GUIWire(submodelModifiable, cell10.getPin("QB1"), andorB10.getPin("A1"), new Point(140, 675), new Point(140, 680)); + new GUIWire(submodelModifiable, cell10.getPin("QB2"), andorB10.getPin("A2"), new Point(140, 685), new Point(140, 690)); + new GUIWire(submodelModifiable, cell10.getPin("QB3"), andorB10.getPin("A3"), new Point(140, 695), new Point(140, 700)); + new GUIWire(submodelModifiable, cell10.getPin("QB4"), andorB10.getPin("A4"), new Point(140, 705), new Point(140, 710)); + new GUIWire(submodelModifiable, cell11.getPin("QB1"), andorB11.getPin("A1"), new Point(140, 825), new Point(140, 830)); + new GUIWire(submodelModifiable, cell11.getPin("QB2"), andorB11.getPin("A2"), new Point(140, 835), new Point(140, 840)); + new GUIWire(submodelModifiable, cell11.getPin("QB3"), andorB11.getPin("A3"), new Point(140, 845), new Point(140, 850)); + new GUIWire(submodelModifiable, cell11.getPin("QB4"), andorB11.getPin("A4"), new Point(140, 855), new Point(140, 860)); + new GUIWire(submodelModifiable, cell00.getPin("QA1"), andA00 .getPin("A1"), new Point(140, 335), new Point(140, 330)); + new GUIWire(submodelModifiable, cell00.getPin("QA2"), andA00 .getPin("A2"), new Point(140, 345), new Point(140, 340)); + new GUIWire(submodelModifiable, cell00.getPin("QA3"), andA00 .getPin("A3"), new Point(140, 355), new Point(140, 350)); + new GUIWire(submodelModifiable, cell00.getPin("QA4"), andA00 .getPin("A4"), new Point(140, 365), new Point(140, 360)); + new GUIWire(submodelModifiable, cell01.getPin("QA1"), andorA01.getPin("A1"), new Point(140, 485), new Point(140, 480)); + new GUIWire(submodelModifiable, cell01.getPin("QA2"), andorA01.getPin("A2"), new Point(140, 495), new Point(140, 490)); + new GUIWire(submodelModifiable, cell01.getPin("QA3"), andorA01.getPin("A3"), new Point(140, 505), new Point(140, 500)); + new GUIWire(submodelModifiable, cell01.getPin("QA4"), andorA01.getPin("A4"), new Point(140, 515), new Point(140, 510)); + new GUIWire(submodelModifiable, cell10.getPin("QA1"), andorA10.getPin("A1"), new Point(140, 635), new Point(140, 630)); + new GUIWire(submodelModifiable, cell10.getPin("QA2"), andorA10.getPin("A2"), new Point(140, 645), new Point(140, 640)); + new GUIWire(submodelModifiable, cell10.getPin("QA3"), andorA10.getPin("A3"), new Point(140, 655), new Point(140, 650)); + new GUIWire(submodelModifiable, cell10.getPin("QA4"), andorA10.getPin("A4"), new Point(140, 665), new Point(140, 660)); + new GUIWire(submodelModifiable, cell11.getPin("QA1"), andorA11.getPin("A1"), new Point(140, 785), new Point(140, 780)); + new GUIWire(submodelModifiable, cell11.getPin("QA2"), andorA11.getPin("A2"), new Point(140, 795), new Point(140, 790)); + new GUIWire(submodelModifiable, cell11.getPin("QA3"), andorA11.getPin("A3"), new Point(140, 805), new Point(140, 800)); + new GUIWire(submodelModifiable, cell11.getPin("QA4"), andorA11.getPin("A4"), new Point(140, 815), new Point(140, 810)); + new GUIWire(submodelModifiable, andB00 .getPin("Y1"), andorB01.getPin("C1"), new Point(305, 380), new Point(305, 445), new Point(245, 445), new Point(245, 490)); + new GUIWire(submodelModifiable, andB00 .getPin("Y2"), andorB01.getPin("C2"), new Point(300, 390), new Point(300, 440), new Point(240, 440), new Point(240, 500)); + new GUIWire(submodelModifiable, andB00 .getPin("Y3"), andorB01.getPin("C3"), new Point(295, 400), new Point(295, 435), new Point(235, 435), new Point(235, 510)); + new GUIWire(submodelModifiable, andB00 .getPin("Y4"), andorB01.getPin("C4"), new Point(290, 410), new Point(290, 430), new Point(230, 430), new Point(230, 520)); + new GUIWire(submodelModifiable, andorB01.getPin("Y1"), andorB10.getPin("C1"), new Point(305, 490), new Point(305, 595), new Point(245, 595), new Point(245, 640)); + new GUIWire(submodelModifiable, andorB01.getPin("Y2"), andorB10.getPin("C2"), new Point(300, 500), new Point(300, 590), new Point(240, 590), new Point(240, 650)); + new GUIWire(submodelModifiable, andorB01.getPin("Y3"), andorB10.getPin("C3"), new Point(295, 510), new Point(295, 585), new Point(235, 585), new Point(235, 660)); + new GUIWire(submodelModifiable, andorB01.getPin("Y4"), andorB10.getPin("C4"), new Point(290, 520), new Point(290, 580), new Point(230, 580), new Point(230, 670)); + new GUIWire(submodelModifiable, andorB10.getPin("Y1"), andorB11.getPin("C1"), new Point(305, 640), new Point(305, 745), new Point(245, 745), new Point(245, 790)); + new GUIWire(submodelModifiable, andorB10.getPin("Y2"), andorB11.getPin("C2"), new Point(300, 650), new Point(300, 740), new Point(240, 740), new Point(240, 800)); + new GUIWire(submodelModifiable, andorB10.getPin("Y3"), andorB11.getPin("C3"), new Point(295, 660), new Point(295, 735), new Point(235, 735), new Point(235, 810)); + new GUIWire(submodelModifiable, andorB10.getPin("Y4"), andorB11.getPin("C4"), new Point(290, 670), new Point(290, 730), new Point(230, 730), new Point(230, 820)); + new GUIWire(submodelModifiable, andorB11.getPin("Y1"), QB1 , new Point(330, 790), new Point(330, 450)); + new GUIWire(submodelModifiable, andorB11.getPin("Y2"), QB2 , new Point(335, 800), new Point(335, 550)); + new GUIWire(submodelModifiable, andorB11.getPin("Y3"), QB3 , new Point(340, 810), new Point(340, 650)); + new GUIWire(submodelModifiable, andorB11.getPin("Y4"), QB4 , new Point(345, 820), new Point(345, 750)); + new GUIWire(submodelModifiable, andA00 .getPin("Y1"), andorA01.getPin("C1"), new Point(210, 330), new Point(210, 430), new Point(150, 430), new Point(150, 440)); + new GUIWire(submodelModifiable, andA00 .getPin("Y2"), andorA01.getPin("C2"), new Point(205, 340), new Point(205, 425), new Point(145, 425), new Point(145, 450)); + new GUIWire(submodelModifiable, andA00 .getPin("Y3"), andorA01.getPin("C3"), new Point(200, 350), new Point(200, 420), new Point(140, 420), new Point(140, 460)); + new GUIWire(submodelModifiable, andA00 .getPin("Y4"), andorA01.getPin("C4"), new Point(195, 360), new Point(195, 415), new Point(135, 415), new Point(135, 470)); + new GUIWire(submodelModifiable, andorA01.getPin("Y1"), andorA10.getPin("C1"), new Point(210, 440), new Point(210, 580), new Point(150, 580), new Point(150, 590)); + new GUIWire(submodelModifiable, andorA01.getPin("Y2"), andorA10.getPin("C2"), new Point(205, 450), new Point(205, 575), new Point(145, 575), new Point(145, 600)); + new GUIWire(submodelModifiable, andorA01.getPin("Y3"), andorA10.getPin("C3"), new Point(200, 460), new Point(200, 570), new Point(140, 570), new Point(140, 610)); + new GUIWire(submodelModifiable, andorA01.getPin("Y4"), andorA10.getPin("C4"), new Point(195, 470), new Point(195, 565), new Point(135, 565), new Point(135, 620)); + new GUIWire(submodelModifiable, andorA10.getPin("Y1"), andorA11.getPin("C1"), new Point(210, 590), new Point(210, 730), new Point(150, 730), new Point(150, 740)); + new GUIWire(submodelModifiable, andorA10.getPin("Y2"), andorA11.getPin("C2"), new Point(205, 600), new Point(205, 725), new Point(145, 725), new Point(145, 750)); + new GUIWire(submodelModifiable, andorA10.getPin("Y3"), andorA11.getPin("C3"), new Point(200, 610), new Point(200, 720), new Point(140, 720), new Point(140, 760)); + new GUIWire(submodelModifiable, andorA10.getPin("Y4"), andorA11.getPin("C4"), new Point(195, 620), new Point(195, 715), new Point(135, 715), new Point(135, 770)); + new GUIWire(submodelModifiable, andorA11.getPin("Y1"), QA1 , new Point(210, 740), new Point(210, 880), new Point(310, 880), new Point(310, 50)); + new GUIWire(submodelModifiable, andorA11.getPin("Y2"), QA2 , new Point(205, 750), new Point(205, 885), new Point(315, 885), new Point(315, 150)); + new GUIWire(submodelModifiable, andorA11.getPin("Y3"), QA3 , new Point(200, 760), new Point(200, 890), new Point(320, 890), new Point(320, 250)); + new GUIWire(submodelModifiable, andorA11.getPin("Y4"), QA4 , new Point(195, 770), new Point(195, 895), new Point(325, 895), new Point(325, 350)); + //@formatter:on + + addHighLevelStateSubcomponentID("c00", cell00); + addHighLevelStateSubcomponentID("c01", cell01); + addHighLevelStateSubcomponentID("c10", cell10); + addHighLevelStateSubcomponentID("c11", cell11); + addAtomicHighLevelStateID("q"); + } + + @Override + public void setAtomicHighLevelState(String stateID, Object newState) + { + switch (stateID) + { + case "q": + BitVector newStateCasted = (BitVector) newState; + setHighLevelState("c00.q", newStateCasted.subVector(0, 16)); + setHighLevelState("c01.q", newStateCasted.subVector(16, 32)); + setHighLevelState("c10.q", newStateCasted.subVector(32, 48)); + setHighLevelState("c11.q", newStateCasted.subVector(48, 64)); + break; + default: + // should not happen because we tell SubmodelComponent to only allow these state IDs. + throw new IllegalStateException("Illegal atomic state ID: " + stateID); + } + } + + @Override + protected void setSubcomponentHighLevelState(String subcomponentID, String subcomponentHighLevelStateID, Object newState) + { + if (checkSubcomponentID(subcomponentID)) + setHighLevelState(translateDirectCellAccess(subcomponentID, subcomponentHighLevelStateID), newState); + else + super.setSubcomponentHighLevelState(subcomponentID, subcomponentHighLevelStateID, newState); + + } + + @Override + public Object getAtomicHighLevelState(String stateID) + { + switch (stateID) + { + case "q": + BitVector q00 = (BitVector) getHighLevelState("c00.q"); + BitVector q01 = (BitVector) getHighLevelState("c01.q"); + BitVector q10 = (BitVector) getHighLevelState("c10.q"); + BitVector q11 = (BitVector) getHighLevelState("c11.q"); + return q00.concat(q01).concat(q10).concat(q11); + default: + // should not happen because we tell SubmodelComponent to only allow these state IDs. + throw new IllegalStateException("Illegal atomic state ID: " + stateID); + } + } + + @Override + protected Object getSubcomponentHighLevelState(String subcomponentID, String subcomponentHighLevelStateID) + { + if (checkSubcomponentID(subcomponentID)) + return getHighLevelState(translateDirectCellAccess(subcomponentID, subcomponentHighLevelStateID)); + return super.getSubcomponentHighLevelState(subcomponentID, subcomponentHighLevelStateID); + } + + private static String translateDirectCellAccess(String subcomponentID, String subcomponentHighLevelStateID) + { + return 'c' + subcomponentID.substring(3, 5) + "." + subcomponentID.substring(0, 3) + '.' + subcomponentHighLevelStateID; + } + + private static boolean checkSubcomponentID(String subcomponentID) + { + if (subcomponentID.length() != 5 || subcomponentID.charAt(0) != 'c') + return false; + char addr3 = subcomponentID.charAt(1); + char addr2 = subcomponentID.charAt(2); + char addr1 = subcomponentID.charAt(3); + char addr0 = subcomponentID.charAt(4); + return (addr3 == '0' || addr3 == '1') || (addr2 == '0' || addr2 == '1') || (addr1 == '0' || addr1 == '1') + || (addr0 == '0' || addr0 == '1'); + } + + static + { + IndirectGUIComponentCreator.setComponentSupplier(GUIram4.class.getCanonicalName(), (m, p, n) -> new GUIram4(m, n)); + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/GUIsel2_4.java b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/GUIsel2_4.java new file mode 100644 index 00000000..6f4a6cdd --- /dev/null +++ b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/GUIsel2_4.java @@ -0,0 +1,125 @@ +package net.mograsim.logic.model.model.components.mi.nandbased; + +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.mograsim.logic.model.model.ViewModelModifiable; +import net.mograsim.logic.model.model.components.atomic.GUINandGate; +import net.mograsim.logic.model.model.components.submodels.SimpleRectangularSubmodelComponent; +import net.mograsim.logic.model.model.wires.GUIWire; +import net.mograsim.logic.model.model.wires.Pin; +import net.mograsim.logic.model.model.wires.WireCrossPoint; +import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator; + +public class GUIsel2_4 extends SimpleRectangularSubmodelComponent +{ + public GUIsel2_4(ViewModelModifiable model) + { + this(model, null); + } + + public GUIsel2_4(ViewModelModifiable model, String name) + { + super(model, 1, "GUIsel2_4", name); + setSubmodelScale(.4); + setInputPins("SA", "SB", "A1", "A2", "A3", "A4", "B1", "B2", "B3", "B4"); + setOutputPins("Y1", "Y2", "Y3", "Y4"); + initSubmodelComponents(); + } + + @SuppressWarnings("unused") // for GUIWires being created + private void initSubmodelComponents() + { + Pin SA = getSubmodelPin("SA"); + Pin SB = getSubmodelPin("SB"); + Pin A1 = getSubmodelPin("A1"); + Pin A2 = getSubmodelPin("A2"); + Pin A3 = getSubmodelPin("A3"); + Pin A4 = getSubmodelPin("A4"); + Pin B1 = getSubmodelPin("B1"); + Pin B2 = getSubmodelPin("B2"); + Pin B3 = getSubmodelPin("B3"); + Pin B4 = getSubmodelPin("B4"); + Pin Y1 = getSubmodelPin("Y1"); + Pin Y2 = getSubmodelPin("Y2"); + Pin Y3 = getSubmodelPin("Y3"); + Pin Y4 = getSubmodelPin("Y4"); + + GUINandGate nandA1 = new GUINandGate(submodelModifiable, 1); + GUINandGate nandA2 = new GUINandGate(submodelModifiable, 1); + GUINandGate nandA3 = new GUINandGate(submodelModifiable, 1); + GUINandGate nandA4 = new GUINandGate(submodelModifiable, 1); + GUINandGate nandB1 = new GUINandGate(submodelModifiable, 1); + GUINandGate nandB2 = new GUINandGate(submodelModifiable, 1); + GUINandGate nandB3 = new GUINandGate(submodelModifiable, 1); + GUINandGate nandB4 = new GUINandGate(submodelModifiable, 1); + GUINandGate nandY1 = new GUINandGate(submodelModifiable, 1); + GUINandGate nandY2 = new GUINandGate(submodelModifiable, 1); + GUINandGate nandY3 = new GUINandGate(submodelModifiable, 1); + GUINandGate nandY4 = new GUINandGate(submodelModifiable, 1); + + WireCrossPoint cpA1 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpA2 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpA3 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpB1 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpB2 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpB3 = new WireCrossPoint(submodelModifiable, 1); + + nandA1.moveTo(20, 2.5); + nandB1.moveTo(20, 27.5); + nandA2.moveTo(20, 52.5); + nandB2.moveTo(20, 77.5); + nandA3.moveTo(20, 102.5); + nandB3.moveTo(20, 127.5); + nandA4.moveTo(20, 152.5); + nandB4.moveTo(20, 177.5); + nandY1.moveTo(65, 2.5); + nandY2.moveTo(65, 27.5); + nandY3.moveTo(65, 52.5); + nandY4.moveTo(65, 77.5); + cpA1.moveCenterTo(7.5, 17.5); + cpB1.moveCenterTo(5, 42.5); + cpA2.moveCenterTo(7.5, 67.5); + cpB2.moveCenterTo(5, 92.5); + cpA3.moveCenterTo(7.5, 117.5); + cpB3.moveCenterTo(5, 142.5); + + new GUIWire(submodelModifiable, A1, nandA1.getPin("A"), new Point(15, 62.5), new Point(15, 7.5)); + new GUIWire(submodelModifiable, A2, nandA2.getPin("A"), new Point(17.5, 87.5), new Point(17.5, 57.5)); + new GUIWire(submodelModifiable, A3, nandA3.getPin("A"), new Point(17.5, 112.5), new Point(17.5, 107.5)); + new GUIWire(submodelModifiable, A4, nandA4.getPin("A"), new Point(17.5, 137.5), new Point(17.5, 157.5)); + new GUIWire(submodelModifiable, B1, nandB1.getPin("A"), new Point(10, 162.5), new Point(10, 32.5)); + new GUIWire(submodelModifiable, B2, nandB2.getPin("A"), new Point(12.5, 187.5), new Point(12.5, 82.5)); + new GUIWire(submodelModifiable, B3, nandB3.getPin("A"), new Point(15, 212.5), new Point(15, 132.5)); + new GUIWire(submodelModifiable, B4, nandB4.getPin("A"), new Point(10, 237.5), new Point(10, 182.5)); + new GUIWire(submodelModifiable, SA, cpA1); + new GUIWire(submodelModifiable, SB, cpB1); + new GUIWire(submodelModifiable, cpA1, cpA2); + new GUIWire(submodelModifiable, cpA1, nandA1.getPin("B")); + new GUIWire(submodelModifiable, cpA2, cpA3); + new GUIWire(submodelModifiable, cpA2, nandA2.getPin("B")); + new GUIWire(submodelModifiable, cpA3, nandA3.getPin("B")); + new GUIWire(submodelModifiable, cpA3, nandA4.getPin("B"), new Point(7.5, 167.5)); + new GUIWire(submodelModifiable, cpB1, cpB2); + new GUIWire(submodelModifiable, cpB1, nandB1.getPin("B")); + new GUIWire(submodelModifiable, cpB2, cpB3); + new GUIWire(submodelModifiable, cpB2, nandB2.getPin("B")); + new GUIWire(submodelModifiable, cpB3, nandB3.getPin("B")); + new GUIWire(submodelModifiable, cpB3, nandB4.getPin("B"), new Point(5, 192.5)); + new GUIWire(submodelModifiable, nandA1.getPin("Y"), nandY1.getPin("A"), new Point(42.5, 12.5), new Point(42.5, 7.5)); + new GUIWire(submodelModifiable, nandB1.getPin("Y"), nandY1.getPin("B"), new Point(45, 37.5), new Point(45, 17.5)); + new GUIWire(submodelModifiable, nandA2.getPin("Y"), nandY2.getPin("A"), new Point(47.5, 62.5), new Point(47.5, 32.5)); + new GUIWire(submodelModifiable, nandB2.getPin("Y"), nandY2.getPin("B"), new Point(50, 87.5), new Point(50, 42.5)); + new GUIWire(submodelModifiable, nandA3.getPin("Y"), nandY3.getPin("A"), new Point(52.5, 112.5), new Point(52.5, 57.5)); + new GUIWire(submodelModifiable, nandB3.getPin("Y"), nandY3.getPin("B"), new Point(55, 137.5), new Point(55, 67.5)); + new GUIWire(submodelModifiable, nandA4.getPin("Y"), nandY4.getPin("A"), new Point(57.5, 162.5), new Point(57.5, 82.5)); + new GUIWire(submodelModifiable, nandB4.getPin("Y"), nandY4.getPin("B"), new Point(60, 187.5), new Point(60, 92.5)); + new GUIWire(submodelModifiable, nandY1.getPin("Y"), Y1, new Point[0]); + new GUIWire(submodelModifiable, nandY2.getPin("Y"), Y2, new Point[0]); + new GUIWire(submodelModifiable, nandY3.getPin("Y"), Y3, new Point[0]); + new GUIWire(submodelModifiable, nandY4.getPin("Y"), Y4, new Point[0]); + } + + static + { + IndirectGUIComponentCreator.setComponentSupplier(GUIsel2_4.class.getCanonicalName(), (m, p, n) -> new GUIsel2_4(m, n)); + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/GUIsel3_4.java b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/GUIsel3_4.java new file mode 100644 index 00000000..ec5891bb --- /dev/null +++ b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/GUIsel3_4.java @@ -0,0 +1,123 @@ +package net.mograsim.logic.model.model.components.mi.nandbased; + +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.mograsim.logic.model.model.ViewModelModifiable; +import net.mograsim.logic.model.model.components.atomic.GUINandGate; +import net.mograsim.logic.model.model.components.submodels.SimpleRectangularSubmodelComponent; +import net.mograsim.logic.model.model.wires.GUIWire; +import net.mograsim.logic.model.model.wires.Pin; +import net.mograsim.logic.model.model.wires.WireCrossPoint; +import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator; + +public class GUIsel3_4 extends SimpleRectangularSubmodelComponent +{ + public GUIsel3_4(ViewModelModifiable model) + { + this(model, null); + } + + public GUIsel3_4(ViewModelModifiable model, String name) + { + super(model, 1, "GUIsel3_4", name); + setSubmodelScale(.2); + setInputPins("SA", "SB", "SC", "A1", "A2", "A3", "A4", "B1", "B2", "B3", "B4", "C1", "C2", "C3", "C4"); + setOutputPins("Y1", "Y2", "Y3", "Y4"); + initSubmodelComponents(); + } + + @SuppressWarnings("unused") // for GUIWires being created + private void initSubmodelComponents() + { + Pin SA = getSubmodelPin("SA"); + Pin SB = getSubmodelPin("SB"); + Pin SC = getSubmodelPin("SC"); + Pin A1 = getSubmodelPin("A1"); + Pin A2 = getSubmodelPin("A2"); + Pin A3 = getSubmodelPin("A3"); + Pin A4 = getSubmodelPin("A4"); + Pin B1 = getSubmodelPin("B1"); + Pin B2 = getSubmodelPin("B2"); + Pin B3 = getSubmodelPin("B3"); + Pin B4 = getSubmodelPin("B4"); + Pin C1 = getSubmodelPin("C1"); + Pin C2 = getSubmodelPin("C2"); + Pin C3 = getSubmodelPin("C3"); + Pin C4 = getSubmodelPin("C4"); + Pin Y1 = getSubmodelPin("Y1"); + Pin Y2 = getSubmodelPin("Y2"); + Pin Y3 = getSubmodelPin("Y3"); + Pin Y4 = getSubmodelPin("Y4"); + + GUIsel2_4 sel2_4 = new GUIsel2_4(submodelModifiable); + GUInot4 not4 = new GUInot4(submodelModifiable); + GUINandGate nandC1 = new GUINandGate(submodelModifiable, 1); + GUINandGate nandC2 = new GUINandGate(submodelModifiable, 1); + GUINandGate nandC3 = new GUINandGate(submodelModifiable, 1); + GUINandGate nandC4 = new GUINandGate(submodelModifiable, 1); + GUINandGate nandY1 = new GUINandGate(submodelModifiable, 1); + GUINandGate nandY2 = new GUINandGate(submodelModifiable, 1); + GUINandGate nandY3 = new GUINandGate(submodelModifiable, 1); + GUINandGate nandY4 = new GUINandGate(submodelModifiable, 1); + + WireCrossPoint cpSC1 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpSC2 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpSC3 = new WireCrossPoint(submodelModifiable, 1); + + sel2_4.moveTo(35, 250); + not4.moveTo(75, 250); + nandC1.moveTo(50, 570); + nandC2.moveTo(50, 620); + nandC3.moveTo(50, 670); + nandC4.moveTo(50, 720); + nandY1.moveTo(152.5, 15); + nandY2.moveTo(152.5, 65); + nandY3.moveTo(152.5, 115); + nandY4.moveTo(152.5, 165); + cpSC1.moveCenterTo(30, 585); + cpSC2.moveCenterTo(30, 635); + cpSC3.moveCenterTo(30, 685); + + new GUIWire(submodelModifiable, SA, sel2_4.getPin("SA"), new Point(25, 25), new Point(25, 255)); + new GUIWire(submodelModifiable, SB, sel2_4.getPin("SB"), new Point(20, 75), new Point(20, 265)); + new GUIWire(submodelModifiable, A1, sel2_4.getPin("A1"), new Point(15, 175), new Point(15, 275)); + new GUIWire(submodelModifiable, A2, sel2_4.getPin("A2"), new Point(10, 225), new Point(10, 285)); + new GUIWire(submodelModifiable, A3, sel2_4.getPin("A3"), new Point(5, 275), new Point(5, 295)); + new GUIWire(submodelModifiable, A4, sel2_4.getPin("A4"), new Point(5, 325), new Point(5, 305)); + new GUIWire(submodelModifiable, B1, sel2_4.getPin("B1"), new Point(10, 375), new Point(10, 315)); + new GUIWire(submodelModifiable, B2, sel2_4.getPin("B2"), new Point(15, 425), new Point(15, 325)); + new GUIWire(submodelModifiable, B3, sel2_4.getPin("B3"), new Point(20, 475), new Point(20, 335)); + new GUIWire(submodelModifiable, B4, sel2_4.getPin("B4"), new Point(25, 525), new Point(25, 345)); + new GUIWire(submodelModifiable, sel2_4.getPin("Y1"), not4.getPin("A1"), new Point[0]); + new GUIWire(submodelModifiable, sel2_4.getPin("Y2"), not4.getPin("A2"), new Point[0]); + new GUIWire(submodelModifiable, sel2_4.getPin("Y3"), not4.getPin("A3"), new Point[0]); + new GUIWire(submodelModifiable, sel2_4.getPin("Y4"), not4.getPin("A4"), new Point[0]); + new GUIWire(submodelModifiable, SC, cpSC1, new Point(30, 125)); + new GUIWire(submodelModifiable, cpSC1, nandC1.getPin("B"), new Point[0]); + new GUIWire(submodelModifiable, cpSC1, cpSC2, new Point(30, 125)); + new GUIWire(submodelModifiable, cpSC2, nandC2.getPin("B"), new Point[0]); + new GUIWire(submodelModifiable, cpSC2, cpSC3, new Point(30, 125)); + new GUIWire(submodelModifiable, cpSC3, nandC3.getPin("B"), new Point[0]); + new GUIWire(submodelModifiable, cpSC3, nandC4.getPin("B"), new Point(30, 735)); + new GUIWire(submodelModifiable, C1, nandC1.getPin("A"), new Point[0]); + new GUIWire(submodelModifiable, C2, nandC2.getPin("A"), new Point[0]); + new GUIWire(submodelModifiable, C3, nandC3.getPin("A"), new Point[0]); + new GUIWire(submodelModifiable, C4, nandC4.getPin("A"), new Point[0]); + new GUIWire(submodelModifiable, not4.getPin("Y1"), nandY1.getPin("A"), new Point(115, 255), new Point(115, 20)); + new GUIWire(submodelModifiable, not4.getPin("Y2"), nandY2.getPin("A"), new Point(120, 265), new Point(120, 70)); + new GUIWire(submodelModifiable, not4.getPin("Y3"), nandY3.getPin("A"), new Point(125, 275), new Point(125, 120)); + new GUIWire(submodelModifiable, not4.getPin("Y4"), nandY4.getPin("A"), new Point(130, 285), new Point(130, 170)); + new GUIWire(submodelModifiable, nandC1.getPin("Y"), nandY1.getPin("B"), new Point(135, 580), new Point(135, 30)); + new GUIWire(submodelModifiable, nandC2.getPin("Y"), nandY2.getPin("B"), new Point(140, 630), new Point(140, 80)); + new GUIWire(submodelModifiable, nandC3.getPin("Y"), nandY3.getPin("B"), new Point(145, 680), new Point(145, 130)); + new GUIWire(submodelModifiable, nandC4.getPin("Y"), nandY4.getPin("B"), new Point(150, 730), new Point(150, 180)); + new GUIWire(submodelModifiable, nandY1.getPin("Y"), Y1, new Point[0]); + new GUIWire(submodelModifiable, nandY2.getPin("Y"), Y2, new Point[0]); + new GUIWire(submodelModifiable, nandY3.getPin("Y"), Y3, new Point[0]); + new GUIWire(submodelModifiable, nandY4.getPin("Y"), Y4, new Point[0]); + } + + static + { + IndirectGUIComponentCreator.setComponentSupplier(GUIsel3_4.class.getCanonicalName(), (m, p, n) -> new GUIsel3_4(m, n)); + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/GUIxor.java b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/GUIxor.java new file mode 100644 index 00000000..77b659d8 --- /dev/null +++ b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/GUIxor.java @@ -0,0 +1,70 @@ +package net.mograsim.logic.model.model.components.mi.nandbased; + +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.mograsim.logic.model.model.ViewModelModifiable; +import net.mograsim.logic.model.model.components.atomic.GUINandGate; +import net.mograsim.logic.model.model.components.submodels.SimpleRectangularSubmodelComponent; +import net.mograsim.logic.model.model.wires.GUIWire; +import net.mograsim.logic.model.model.wires.Pin; +import net.mograsim.logic.model.model.wires.WireCrossPoint; +import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator; + +public class GUIxor extends SimpleRectangularSubmodelComponent +{ + public GUIxor(ViewModelModifiable model) + { + this(model, null); + } + + public GUIxor(ViewModelModifiable model, String name) + { + super(model, 1, "GUIxor", name); + setSubmodelScale(.4); + setInputPins("A", "B"); + setOutputPins("Y"); + initSubmodelComponents(); + } + + @SuppressWarnings("unused") // for GUIWires being created + private void initSubmodelComponents() + { + Pin A = getSubmodelPin("A"); + Pin B = getSubmodelPin("B"); + Pin Y = getSubmodelPin("Y"); + + GUINandGate nandAB = new GUINandGate(submodelModifiable, 1); + GUINandGate nandYA = new GUINandGate(submodelModifiable, 1); + GUINandGate nandYB = new GUINandGate(submodelModifiable, 1); + GUINandGate nandY = new GUINandGate(submodelModifiable, 1); + + WireCrossPoint cpA = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpB = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpAB = new WireCrossPoint(submodelModifiable, 1); + + nandAB.moveTo(7.5, 15); + nandYA.moveTo(35, 2.5); + nandYB.moveTo(35, 27.5); + nandY.moveTo(62.5, 15); + cpA.moveCenterTo(5, 12.5); + cpB.moveCenterTo(5, 37.5); + cpAB.moveCenterTo(30, 25); + + new GUIWire(submodelModifiable, A, cpA, new Point[0]); + new GUIWire(submodelModifiable, B, cpB, new Point[0]); + new GUIWire(submodelModifiable, cpA, nandAB.getPin("A"), new Point(5, 20)); + new GUIWire(submodelModifiable, cpB, nandAB.getPin("B"), new Point(5, 30)); + new GUIWire(submodelModifiable, nandAB.getPin("Y"), cpAB); + new GUIWire(submodelModifiable, cpAB, nandYA.getPin("B"), new Point(30, 17.5)); + new GUIWire(submodelModifiable, cpAB, nandYB.getPin("A"), new Point(30, 32.5)); + new GUIWire(submodelModifiable, cpA, nandYA.getPin("A"), new Point(5, 7.5)); + new GUIWire(submodelModifiable, cpB, nandYB.getPin("B"), new Point(5, 42.5)); + new GUIWire(submodelModifiable, nandYA.getPin("Y"), nandY.getPin("A")); + new GUIWire(submodelModifiable, nandYB.getPin("Y"), nandY.getPin("B")); + new GUIWire(submodelModifiable, nandY.getPin("Y"), Y); + } + + static + { + IndirectGUIComponentCreator.setComponentSupplier(GUIxor.class.getCanonicalName(), (m, p, n) -> new GUIxor(m, n)); + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/am2901/GUIAm2901.java b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/am2901/GUIAm2901.java new file mode 100644 index 00000000..aca03d9b --- /dev/null +++ b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/am2901/GUIAm2901.java @@ -0,0 +1,357 @@ +package net.mograsim.logic.model.model.components.mi.nandbased.am2901; + +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.mograsim.logic.model.model.ViewModelModifiable; +import net.mograsim.logic.model.model.components.atomic.GUINandGate; +import net.mograsim.logic.model.model.components.mi.nandbased.GUIand; +import net.mograsim.logic.model.model.components.mi.nandbased.GUIdlatch4; +import net.mograsim.logic.model.model.components.mi.nandbased.GUImux1_4; +import net.mograsim.logic.model.model.components.mi.nandbased.GUIor4; +import net.mograsim.logic.model.model.components.mi.nandbased.GUIram4; +import net.mograsim.logic.model.model.components.mi.nandbased.GUIsel3_4; +import net.mograsim.logic.model.model.components.submodels.SimpleRectangularSubmodelComponent; +import net.mograsim.logic.model.model.wires.GUIWire; +import net.mograsim.logic.model.model.wires.Pin; +import net.mograsim.logic.model.model.wires.WireCrossPoint; +import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator; + +public class GUIAm2901 extends SimpleRectangularSubmodelComponent +{ + public GUIAm2901(ViewModelModifiable model) + { + this(model, null); + } + + public GUIAm2901(ViewModelModifiable model, String name) + { + super(model, 1, "GUIAm2901", name); + setSubmodelScale(.1); + setInputPins("I8", "I7", "I6", "I5", "I4", "I3", "I2", "I1", "I0", "C", "Cn", "D1", "D2", "D3", "D4", "A0", "A1", "A2", "A3", "B0", + "B1", "B2", "B3", "IRAMn", "IRAMn+3", "IQn", "IQn+3"); + setOutputPins("Y1", "Y2", "Y3", "Y4", "F=0", "Cn+4", "OVR", "F3", "ORAMn", "ORAMn+3", "OQn", "OQn+3"); + initSubmodelComponents(); + } + + @SuppressWarnings("unused") // for GUIWires being created + private void initSubmodelComponents() + { + Pin I8 = getSubmodelPin("I8"); + Pin I7 = getSubmodelPin("I7"); + Pin I6 = getSubmodelPin("I6"); + Pin I5 = getSubmodelPin("I5"); + Pin I4 = getSubmodelPin("I4"); + Pin I3 = getSubmodelPin("I3"); + Pin I2 = getSubmodelPin("I2"); + Pin I1 = getSubmodelPin("I1"); + Pin I0 = getSubmodelPin("I0"); + Pin C = getSubmodelPin("C"); + Pin Cn = getSubmodelPin("Cn"); + Pin D1 = getSubmodelPin("D1"); + Pin D2 = getSubmodelPin("D2"); + Pin D3 = getSubmodelPin("D3"); + Pin D4 = getSubmodelPin("D4"); + Pin A0 = getSubmodelPin("A0"); + Pin A1 = getSubmodelPin("A1"); + Pin A2 = getSubmodelPin("A2"); + Pin A3 = getSubmodelPin("A3"); + Pin B0 = getSubmodelPin("B0"); + Pin B1 = getSubmodelPin("B1"); + Pin B2 = getSubmodelPin("B2"); + Pin B3 = getSubmodelPin("B3"); + Pin IRAMn = getSubmodelPin("IRAMn"); + Pin IRAMnplus3 = getSubmodelPin("IRAMn+3"); + Pin IQn = getSubmodelPin("IQn"); + Pin IQnplus3 = getSubmodelPin("IQn+3"); + Pin Y1 = getSubmodelPin("Y1"); + Pin Y2 = getSubmodelPin("Y2"); + Pin Y3 = getSubmodelPin("Y3"); + Pin Y4 = getSubmodelPin("Y4"); + Pin Feq0 = getSubmodelPin("F=0"); + Pin Cnplus4 = getSubmodelPin("Cn+4"); + Pin OVR = getSubmodelPin("OVR"); + Pin F3 = getSubmodelPin("F3"); + Pin ORAMn = getSubmodelPin("ORAMn"); + Pin ORAMnplus3 = getSubmodelPin("ORAMn+3"); + Pin OQn = getSubmodelPin("OQn"); + Pin OQnplus3 = getSubmodelPin("OQn+3"); + + GUIAm2901DestDecode destDecode = new GUIAm2901DestDecode(submodelModifiable); + GUImux1_4 Ymux = new GUImux1_4(submodelModifiable); + GUIand ramweAnd = new GUIand(submodelModifiable); + GUINandGate notC = new GUINandGate(submodelModifiable, 1); + GUIAm2901ALUInclSourceDecodeInclFunctionDecode alu = new GUIAm2901ALUInclSourceDecodeInclFunctionDecode(submodelModifiable); + GUIor4 Fneq0 = new GUIor4(submodelModifiable); + GUINandGate notFneq0 = new GUINandGate(submodelModifiable, 1); + GUIram4 ram = new GUIram4(submodelModifiable); + GUIdlatch4 QAlatch = new GUIdlatch4(submodelModifiable); + GUIdlatch4 QBlatch = new GUIdlatch4(submodelModifiable); + GUIsel3_4 ramDsel = new GUIsel3_4(submodelModifiable); + GUIsel3_4 qregDsel = new GUIsel3_4(submodelModifiable); + GUIAm2901QReg qreg = new GUIAm2901QReg(submodelModifiable); + + WireCrossPoint cpC1 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpC2 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpC3 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpC4 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpLSH = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpNSH = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpRSH = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpQA1 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpQA2 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpQA3 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpQA4 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpQ1 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpQ2 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpQ3 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpQ4 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpOQn = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpOQnplus3 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpQ2Rsh = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpQ3Rsh = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpORAMn = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpORAMnplus3 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpF3 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpF11 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpF21 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpF31 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpF41 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpF12 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpF22 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpF32 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpF42 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpF1Lsh = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpF2Lsh = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpF3Lsh = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpF2Rsh = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpF3Rsh = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpF4Rsh = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpF13 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpF23 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpF33 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpF43 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpFneq0 = new WireCrossPoint(submodelModifiable, 1); + + destDecode.moveTo(15, 45); + Ymux.moveTo(275, 135); + ramweAnd.moveTo(190, 65); + notC.moveTo(160, 75); + alu.moveTo(240, 2110); + Fneq0.moveTo(275, 445); + notFneq0.moveTo(320, 440); + ram.moveTo(95, 2220); + QAlatch.moveTo(160, 2220); + QBlatch.moveTo(160, 2275); + ramDsel.moveTo(45, 2310); + qregDsel.moveTo(45, 2510); + qreg.moveTo(90, 2490); + cpC1.moveCenterTo(155, 950); + cpC2.moveCenterTo(155, 90); + cpC3.moveCenterTo(155, 2265); + cpC4.moveCenterTo(155, 2320); + cpLSH.moveCenterTo(40, 2315); + cpNSH.moveCenterTo(35, 2325); + cpRSH.moveCenterTo(30, 2335); + cpQA1.moveCenterTo(220, 2225); + cpQA2.moveCenterTo(225, 2235); + cpQA3.moveCenterTo(230, 2245); + cpQA4.moveCenterTo(235, 2255); + cpQ1.moveCenterTo(130, 2495); + cpQ2.moveCenterTo(135, 2505); + cpQ3.moveCenterTo(140, 2515); + cpQ4.moveCenterTo(145, 2525); + cpOQn.moveCenterTo(220, 2495); + cpOQnplus3.moveCenterTo(235, 2525); + cpQ2Rsh.moveCenterTo(35, 2625); + cpQ3Rsh.moveCenterTo(40, 2635); + cpORAMn.moveCenterTo(280, 2115); + cpORAMnplus3.moveCenterTo(295, 2145); + cpF3.moveCenterTo(330, 950); + cpF11.moveCenterTo(255, 2090); + cpF21.moveCenterTo(260, 2095); + cpF31.moveCenterTo(265, 2100); + cpF41.moveCenterTo(270, 2105); + cpF12.moveCenterTo(255, 450); + cpF22.moveCenterTo(260, 460); + cpF32.moveCenterTo(265, 470); + cpF42.moveCenterTo(270, 480); + cpF1Lsh.moveCenterTo(10, 2355); + cpF2Lsh.moveCenterTo(15, 2365); + cpF3Lsh.moveCenterTo(20, 2375); + cpF2Rsh.moveCenterTo(15, 2395); + cpF3Rsh.moveCenterTo(20, 2405); + cpF4Rsh.moveCenterTo(25, 2415); + cpF13.moveCenterTo(10, 2385); + cpF23.moveCenterTo(15, 2425); + cpF33.moveCenterTo(20, 2435); + cpF43.moveCenterTo(25, 2445); + cpFneq0.moveCenterTo(315, 450); + + new GUIWire(submodelModifiable, I8, destDecode.getPin("I8"), new Point[0]); + new GUIWire(submodelModifiable, I7, destDecode.getPin("I7"), new Point(5, 150), new Point(5, 60)); + new GUIWire(submodelModifiable, I6, destDecode.getPin("I6"), new Point(10, 250), new Point(10, 70)); + new GUIWire(submodelModifiable, I5, alu.getPin("I5"), new Point(130, 350), new Point(130, 2115)); + new GUIWire(submodelModifiable, I4, alu.getPin("I4"), new Point(125, 450), new Point(125, 2125)); + new GUIWire(submodelModifiable, I3, alu.getPin("I3"), new Point(120, 550), new Point(120, 2135)); + new GUIWire(submodelModifiable, I2, alu.getPin("I2"), new Point(115, 650), new Point(115, 2145)); + new GUIWire(submodelModifiable, I1, alu.getPin("I1"), new Point(110, 750), new Point(110, 2155)); + new GUIWire(submodelModifiable, I0, alu.getPin("I0"), new Point(105, 850), new Point(105, 2165)); + new GUIWire(submodelModifiable, C, cpC1, new Point[0]); + new GUIWire(submodelModifiable, cpC1, cpC2, new Point[0]); + new GUIWire(submodelModifiable, cpC2, notC.getPin("A"), new Point(155, 80)); + new GUIWire(submodelModifiable, cpC2, notC.getPin("B"), new Point[0]); + new GUIWire(submodelModifiable, cpC1, cpC3, new Point[0]); + new GUIWire(submodelModifiable, cpC3, QAlatch.getPin("C"), new Point[0]); + new GUIWire(submodelModifiable, cpC3, cpC4, new Point[0]); + new GUIWire(submodelModifiable, cpC4, QBlatch.getPin("C"), new Point[0]); + new GUIWire(submodelModifiable, cpC4, qreg.getPin("C"), new Point(155, 2485), new Point(80, 2485), new Point(80, 2495)); + new GUIWire(submodelModifiable, destDecode.getPin("LSH"), cpLSH, new Point(55, 90), new Point(55, 125), new Point(40, 125)); + new GUIWire(submodelModifiable, destDecode.getPin("NSH"), cpNSH, new Point(60, 50), new Point(60, 120), new Point(35, 120)); + new GUIWire(submodelModifiable, destDecode.getPin("RSH"), cpRSH, new Point(65, 60), new Point(65, 115), new Point(30, 115)); + new GUIWire(submodelModifiable, cpLSH, ramDsel.getPin("SA"), new Point[0]); + new GUIWire(submodelModifiable, cpNSH, ramDsel.getPin("SB"), new Point[0]); + new GUIWire(submodelModifiable, cpRSH, ramDsel.getPin("SC"), new Point[0]); + new GUIWire(submodelModifiable, cpLSH, qregDsel.getPin("SA"), new Point(40, 2515)); + new GUIWire(submodelModifiable, cpNSH, qregDsel.getPin("SB"), new Point(35, 2525)); + new GUIWire(submodelModifiable, cpRSH, qregDsel.getPin("SC"), new Point(30, 2535)); + new GUIWire(submodelModifiable, A0, ram.getPin("A0"), new Point(80, 1550), new Point(80, 2225)); + new GUIWire(submodelModifiable, A1, ram.getPin("A1"), new Point(75, 1650), new Point(75, 2235)); + new GUIWire(submodelModifiable, A2, ram.getPin("A2"), new Point(70, 1750), new Point(70, 2245)); + new GUIWire(submodelModifiable, A3, ram.getPin("A3"), new Point(65, 1850), new Point(65, 2255)); + new GUIWire(submodelModifiable, B0, ram.getPin("B0"), new Point(60, 1950), new Point(60, 2265)); + new GUIWire(submodelModifiable, B1, ram.getPin("B1"), new Point(55, 2050), new Point(55, 2275)); + new GUIWire(submodelModifiable, B2, ram.getPin("B2"), new Point(50, 2150), new Point(50, 2285)); + new GUIWire(submodelModifiable, B3, ram.getPin("B3"), new Point(45, 2250), new Point(45, 2295)); + new GUIWire(submodelModifiable, ram.getPin("QA1"), QAlatch.getPin("D1"), new Point[0]); + new GUIWire(submodelModifiable, ram.getPin("QA2"), QAlatch.getPin("D2"), new Point[0]); + new GUIWire(submodelModifiable, ram.getPin("QA3"), QAlatch.getPin("D3"), new Point[0]); + new GUIWire(submodelModifiable, ram.getPin("QA4"), QAlatch.getPin("D4"), new Point[0]); + new GUIWire(submodelModifiable, ram.getPin("QB1"), QBlatch.getPin("D1"), new Point(150, 2265), new Point(150, 2280)); + new GUIWire(submodelModifiable, ram.getPin("QB2"), QBlatch.getPin("D2"), new Point(145, 2275), new Point(145, 2290)); + new GUIWire(submodelModifiable, ram.getPin("QB3"), QBlatch.getPin("D3"), new Point(140, 2285), new Point(140, 2300)); + new GUIWire(submodelModifiable, ram.getPin("QB4"), QBlatch.getPin("D4"), new Point(135, 2295), new Point(135, 2310)); + new GUIWire(submodelModifiable, Cn, alu.getPin("Cn"), new Point(100, 1050), new Point(100, 2175)); + new GUIWire(submodelModifiable, D1, alu.getPin("D1"), new Point(180, 1150), new Point(180, 2185)); + new GUIWire(submodelModifiable, D2, alu.getPin("D2"), new Point(175, 1250), new Point(175, 2195)); + new GUIWire(submodelModifiable, D3, alu.getPin("D3"), new Point(170, 1350), new Point(170, 2205)); + new GUIWire(submodelModifiable, D4, alu.getPin("D4"), new Point(165, 1450), new Point(165, 2215)); + new GUIWire(submodelModifiable, QAlatch.getPin("Q1"), cpQA1, new Point[0]); + new GUIWire(submodelModifiable, QAlatch.getPin("Q2"), cpQA2, new Point[0]); + new GUIWire(submodelModifiable, QAlatch.getPin("Q3"), cpQA3, new Point[0]); + new GUIWire(submodelModifiable, QAlatch.getPin("Q4"), cpQA4, new Point[0]); + new GUIWire(submodelModifiable, cpQA1, Ymux.getPin("I0_1"), new Point(220, 150)); + new GUIWire(submodelModifiable, cpQA2, Ymux.getPin("I0_2"), new Point(225, 160)); + new GUIWire(submodelModifiable, cpQA3, Ymux.getPin("I0_3"), new Point(230, 170)); + new GUIWire(submodelModifiable, cpQA4, Ymux.getPin("I0_4"), new Point(235, 180)); + new GUIWire(submodelModifiable, cpQA1, alu.getPin("A1"), new Point[0]); + new GUIWire(submodelModifiable, cpQA2, alu.getPin("A2"), new Point[0]); + new GUIWire(submodelModifiable, cpQA3, alu.getPin("A3"), new Point[0]); + new GUIWire(submodelModifiable, cpQA4, alu.getPin("A4"), new Point[0]); + new GUIWire(submodelModifiable, QBlatch.getPin("Q1"), alu.getPin("B1"), new Point(200, 2280), new Point(200, 2265)); + new GUIWire(submodelModifiable, QBlatch.getPin("Q2"), alu.getPin("B2"), new Point(205, 2290), new Point(205, 2275)); + new GUIWire(submodelModifiable, QBlatch.getPin("Q3"), alu.getPin("B3"), new Point(210, 2300), new Point(210, 2285)); + new GUIWire(submodelModifiable, QBlatch.getPin("Q4"), alu.getPin("B4"), new Point(215, 2310), new Point(215, 2295)); + new GUIWire(submodelModifiable, qreg.getPin("Q1"), cpQ1, new Point[0]); + new GUIWire(submodelModifiable, qreg.getPin("Q2"), cpQ2, new Point[0]); + new GUIWire(submodelModifiable, qreg.getPin("Q3"), cpQ3, new Point[0]); + new GUIWire(submodelModifiable, qreg.getPin("Q4"), cpQ4, new Point[0]); + new GUIWire(submodelModifiable, cpQ1, cpOQn, new Point[0]); + new GUIWire(submodelModifiable, cpOQn, OQn, new Point(335, 2495), new Point(335, 1050)); + new GUIWire(submodelModifiable, cpQ4, cpOQnplus3, new Point[0]); + new GUIWire(submodelModifiable, cpOQnplus3, OQnplus3, new Point(340, 2525), new Point(340, 1150)); + new GUIWire(submodelModifiable, cpQ2, cpQ2Rsh, new Point(135, 2670), new Point(30, 2670), new Point(30, 2635), new Point(35, 2635)); + new GUIWire(submodelModifiable, cpQ3, cpQ3Rsh, new Point(140, 2675), new Point(35, 2675), new Point(35, 2640), new Point(40, 2640)); + new GUIWire(submodelModifiable, cpQ2Rsh, qregDsel.getPin("C1"), new Point[0]); + new GUIWire(submodelModifiable, cpQ3Rsh, qregDsel.getPin("C2"), new Point[0]); + new GUIWire(submodelModifiable, cpQ4, qregDsel.getPin("C3"), new Point(145, 2680), new Point(40, 2680), new Point(40, 2645)); + new GUIWire(submodelModifiable, IQnplus3, qregDsel.getPin("C4"), new Point(5, 2650), new Point(5, 2655)); + new GUIWire(submodelModifiable, IQn, qregDsel.getPin("A1"), new Point(5, 2550), new Point(5, 2545)); + new GUIWire(submodelModifiable, cpQ1, qregDsel.getPin("A2"), new Point(130, 2665), new Point(25, 2665), new Point(25, 2630), + new Point(30, 2630), new Point(30, 2555)); + new GUIWire(submodelModifiable, cpOQn, alu.getPin("Q1"), new Point(220, 2305)); + new GUIWire(submodelModifiable, cpQ2, alu.getPin("Q2"), new Point(225, 2505), new Point(225, 2315)); + new GUIWire(submodelModifiable, cpQ3, alu.getPin("Q3"), new Point(230, 2515), new Point(230, 2325)); + new GUIWire(submodelModifiable, cpOQnplus3, alu.getPin("Q4"), new Point(235, 2335)); + new GUIWire(submodelModifiable, cpQ2Rsh, qregDsel.getPin("A3"), new Point(35, 2565)); + new GUIWire(submodelModifiable, cpQ3Rsh, qregDsel.getPin("A4"), new Point(40, 2575)); + new GUIWire(submodelModifiable, qregDsel.getPin("Y1"), qreg.getPin("D1"), new Point[0]); + new GUIWire(submodelModifiable, qregDsel.getPin("Y2"), qreg.getPin("D2"), new Point[0]); + new GUIWire(submodelModifiable, qregDsel.getPin("Y3"), qreg.getPin("D3"), new Point[0]); + new GUIWire(submodelModifiable, qregDsel.getPin("Y4"), qreg.getPin("D4"), new Point[0]); + new GUIWire(submodelModifiable, alu.getPin("Cn+4"), Cnplus4, new Point(315, 2155), new Point(315, 550)); + new GUIWire(submodelModifiable, alu.getPin("OVR"), OVR, new Point(320, 2165), new Point(320, 650)); + new GUIWire(submodelModifiable, alu.getPin("F1"), cpORAMn, new Point[0]); + new GUIWire(submodelModifiable, alu.getPin("F4"), cpORAMnplus3, new Point[0]); + new GUIWire(submodelModifiable, cpORAMn, ORAMn, new Point(325, 2115), new Point(325, 850)); + new GUIWire(submodelModifiable, cpORAMnplus3, cpF3, new Point(330, 2145)); + new GUIWire(submodelModifiable, cpF3, ORAMnplus3, new Point[0]); + new GUIWire(submodelModifiable, cpF3, F3, new Point(330, 750)); + new GUIWire(submodelModifiable, cpORAMn, cpF11, new Point(280, 2090)); + new GUIWire(submodelModifiable, alu.getPin("F2"), cpF21, new Point(285, 2125), new Point(285, 2095)); + new GUIWire(submodelModifiable, alu.getPin("F3"), cpF31, new Point(290, 2135), new Point(290, 2100)); + new GUIWire(submodelModifiable, cpORAMnplus3, cpF41, new Point(295, 2105)); + new GUIWire(submodelModifiable, cpF11, cpF12, new Point[0]); + new GUIWire(submodelModifiable, cpF21, cpF22, new Point[0]); + new GUIWire(submodelModifiable, cpF31, cpF32, new Point[0]); + new GUIWire(submodelModifiable, cpF41, cpF42, new Point[0]); + new GUIWire(submodelModifiable, cpF12, Fneq0.getPin("A1"), new Point[0]); + new GUIWire(submodelModifiable, cpF22, Fneq0.getPin("A2"), new Point[0]); + new GUIWire(submodelModifiable, cpF32, Fneq0.getPin("A3"), new Point[0]); + new GUIWire(submodelModifiable, cpF42, Fneq0.getPin("A4"), new Point[0]); + new GUIWire(submodelModifiable, cpF12, Ymux.getPin("I1_1"), new Point(255, 190)); + new GUIWire(submodelModifiable, cpF22, Ymux.getPin("I1_2"), new Point(260, 200)); + new GUIWire(submodelModifiable, cpF32, Ymux.getPin("I1_3"), new Point(265, 210)); + new GUIWire(submodelModifiable, cpF42, Ymux.getPin("I1_4"), new Point(270, 220)); + new GUIWire(submodelModifiable, cpF11, cpF1Lsh, new Point(10, 2090)); + new GUIWire(submodelModifiable, cpF21, cpF2Lsh, new Point(15, 2095)); + new GUIWire(submodelModifiable, cpF31, cpF3Lsh, new Point(20, 2100)); + new GUIWire(submodelModifiable, IRAMn, ramDsel.getPin("A1"), new Point(5, 2350), new Point(5, 2345)); + new GUIWire(submodelModifiable, cpF1Lsh, ramDsel.getPin("A2"), new Point[0]); + new GUIWire(submodelModifiable, cpF2Lsh, ramDsel.getPin("A3"), new Point[0]); + new GUIWire(submodelModifiable, cpF3Lsh, ramDsel.getPin("A4"), new Point[0]); + new GUIWire(submodelModifiable, cpF2Lsh, cpF2Rsh, new Point[0]); + new GUIWire(submodelModifiable, cpF3Lsh, cpF3Rsh, new Point[0]); + new GUIWire(submodelModifiable, cpF41, cpF4Rsh, new Point(25, 2105)); + new GUIWire(submodelModifiable, cpF1Lsh, cpF13, new Point[0]); + new GUIWire(submodelModifiable, cpF13, ramDsel.getPin("B1"), new Point[0]); + new GUIWire(submodelModifiable, cpF2Rsh, ramDsel.getPin("B2"), new Point[0]); + new GUIWire(submodelModifiable, cpF3Rsh, ramDsel.getPin("B3"), new Point[0]); + new GUIWire(submodelModifiable, cpF4Rsh, ramDsel.getPin("B4"), new Point[0]); + new GUIWire(submodelModifiable, cpF2Rsh, cpF23, new Point[0]); + new GUIWire(submodelModifiable, cpF3Rsh, cpF33, new Point[0]); + new GUIWire(submodelModifiable, cpF4Rsh, cpF43, new Point[0]); + new GUIWire(submodelModifiable, cpF23, ramDsel.getPin("C1"), new Point[0]); + new GUIWire(submodelModifiable, cpF33, ramDsel.getPin("C2"), new Point[0]); + new GUIWire(submodelModifiable, cpF43, ramDsel.getPin("C3"), new Point[0]); + new GUIWire(submodelModifiable, IRAMnplus3, ramDsel.getPin("C4"), new Point(5, 2450), new Point(5, 2455)); + new GUIWire(submodelModifiable, cpF13, qregDsel.getPin("B1"), new Point(10, 2585)); + new GUIWire(submodelModifiable, cpF23, qregDsel.getPin("B2"), new Point(15, 2595)); + new GUIWire(submodelModifiable, cpF33, qregDsel.getPin("B3"), new Point(20, 2605)); + new GUIWire(submodelModifiable, cpF43, qregDsel.getPin("B4"), new Point(25, 2615)); + new GUIWire(submodelModifiable, ramDsel.getPin("Y1"), ram.getPin("D1"), new Point[0]); + new GUIWire(submodelModifiable, ramDsel.getPin("Y2"), ram.getPin("D2"), new Point[0]); + new GUIWire(submodelModifiable, ramDsel.getPin("Y3"), ram.getPin("D3"), new Point[0]); + new GUIWire(submodelModifiable, ramDsel.getPin("Y4"), ram.getPin("D4"), new Point[0]); + new GUIWire(submodelModifiable, destDecode.getPin("RAMWE"), ramweAnd.getPin("A"), new Point[0]); + new GUIWire(submodelModifiable, notC.getPin("Y"), ramweAnd.getPin("B")); + new GUIWire(submodelModifiable, ramweAnd.getPin("Y"), ram.getPin("WE"), new Point(230, 70), new Point(230, 105), new Point(90, 105), + new Point(90, 2305)); + new GUIWire(submodelModifiable, destDecode.getPin("QWE"), qreg.getPin("WE"), new Point(85, 100), new Point(85, 2505)); + new GUIWire(submodelModifiable, destDecode.getPin("YF"), Ymux.getPin("S0"), new Point(70, 80), new Point(70, 140)); + new GUIWire(submodelModifiable, Ymux.getPin("Y1"), Y1, new Point(335, 140), new Point(335, 50)); + new GUIWire(submodelModifiable, Ymux.getPin("Y2"), Y2, new Point[0]); + new GUIWire(submodelModifiable, Ymux.getPin("Y3"), Y3, new Point(335, 160), new Point(335, 250)); + new GUIWire(submodelModifiable, Ymux.getPin("Y4"), Y4, new Point(325, 170), new Point(325, 350)); + new GUIWire(submodelModifiable, Fneq0.getPin("Y"), cpFneq0, new Point[0]); + new GUIWire(submodelModifiable, cpFneq0, notFneq0.getPin("A"), new Point(315, 445)); + new GUIWire(submodelModifiable, cpFneq0, notFneq0.getPin("B"), new Point(315, 455)); + new GUIWire(submodelModifiable, notFneq0.getPin("Y"), Feq0, new Point[0]); + + addHighLevelStateSubcomponentID("regs", ram); + addHighLevelStateSubcomponentID("qreg", qreg); + } + + static + { + IndirectGUIComponentCreator.setComponentSupplier(GUIAm2901.class.getCanonicalName(), (m, p, n) -> new GUIAm2901(m, n)); + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/am2901/GUIAm2901ALUFuncDecode.java b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/am2901/GUIAm2901ALUFuncDecode.java new file mode 100644 index 00000000..8a62634b --- /dev/null +++ b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/am2901/GUIAm2901ALUFuncDecode.java @@ -0,0 +1,121 @@ +package net.mograsim.logic.model.model.components.mi.nandbased.am2901; + +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.mograsim.logic.model.model.ViewModelModifiable; +import net.mograsim.logic.model.model.components.atomic.GUINandGate; +import net.mograsim.logic.model.model.components.mi.nandbased.GUIand; +import net.mograsim.logic.model.model.components.mi.nandbased.GUInand3; +import net.mograsim.logic.model.model.components.submodels.SimpleRectangularSubmodelComponent; +import net.mograsim.logic.model.model.wires.GUIWire; +import net.mograsim.logic.model.model.wires.Pin; +import net.mograsim.logic.model.model.wires.WireCrossPoint; +import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator; + +public class GUIAm2901ALUFuncDecode extends SimpleRectangularSubmodelComponent +{ + public GUIAm2901ALUFuncDecode(ViewModelModifiable model) + { + this(model, null); + } + + public GUIAm2901ALUFuncDecode(ViewModelModifiable model, String name) + { + super(model, 1, "GUIAm2901ALUFuncDecode", name); + setSubmodelScale(.25); + setInputPins("I5", "I4", "I3"); + setOutputPins("CinE", "L", "SN", "SBE", "FN", "RN"); + initSubmodelComponents(); + } + + @SuppressWarnings("unused") // for GUIWires being created + private void initSubmodelComponents() + { + Pin I5 = getSubmodelPin("I5"); + Pin I4 = getSubmodelPin("I4"); + Pin I3 = getSubmodelPin("I3"); + Pin CinE = getSubmodelPin("CinE"); + Pin L = getSubmodelPin("L"); + Pin SN = getSubmodelPin("SN"); + Pin SBE = getSubmodelPin("SBE"); + Pin FN = getSubmodelPin("FN"); + Pin RN = getSubmodelPin("RN"); + + GUINandGate notI5 = new GUINandGate(submodelModifiable, 1); + GUINandGate notI4 = new GUINandGate(submodelModifiable, 1); + GUInand3 nandI4I3NotI5 = new GUInand3(submodelModifiable); + GUINandGate nandI5NotI4 = new GUINandGate(submodelModifiable, 1); + GUINandGate nandI3I4 = new GUINandGate(submodelModifiable, 1); + GUINandGate nandL = new GUINandGate(submodelModifiable, 1); + GUIand andSBE = new GUIand(submodelModifiable); + + WireCrossPoint cpI51 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpI52 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpI53 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpI41 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpI42 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpI43 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpI44 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpI31 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpI32 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpNotI51 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpNotI52 = new WireCrossPoint(submodelModifiable, 1); + + notI5.moveTo(15, 10); + notI4.moveTo(15, 50); + nandI4I3NotI5.moveTo(55, 10); + nandI5NotI4.moveTo(55, 45); + nandI3I4.moveTo(55, 70); + nandL.moveTo(100, 50); + andSBE.moveTo(100, 135); + cpI51.moveCenterTo(5, 20); + cpI52.moveCenterTo(5, 25); + cpI53.moveCenterTo(5, 45); + cpI41.moveCenterTo(10, 60); + cpI42.moveCenterTo(10, 55); + cpI43.moveCenterTo(10, 65); + cpI44.moveCenterTo(10, 85); + cpI31.moveCenterTo(50, 100); + cpI32.moveCenterTo(50, 75); + cpNotI51.moveCenterTo(40, 20); + cpNotI52.moveCenterTo(40, 35); + + new GUIWire(submodelModifiable, I5, cpI51, new Point[0]); + new GUIWire(submodelModifiable, cpI51, notI5.getPin("A"), new Point(5, 15)); + new GUIWire(submodelModifiable, cpI51, cpI52, new Point[0]); + new GUIWire(submodelModifiable, cpI52, notI5.getPin("B"), new Point[0]); + new GUIWire(submodelModifiable, cpI52, cpI53, new Point[0]); + new GUIWire(submodelModifiable, cpI53, nandI5NotI4.getPin("A"), new Point(45, 45), new Point(45, 50)); + new GUIWire(submodelModifiable, cpI53, FN, new Point(5, 180)); + new GUIWire(submodelModifiable, I4, cpI41, new Point[0]); + new GUIWire(submodelModifiable, cpI41, cpI42, new Point[0]); + new GUIWire(submodelModifiable, cpI42, nandI4I3NotI5.getPin("A"), new Point(10, 40), new Point(45, 40), new Point(45, 15)); + new GUIWire(submodelModifiable, cpI42, notI4.getPin("A"), new Point[0]); + new GUIWire(submodelModifiable, cpI41, cpI43, new Point[0]); + new GUIWire(submodelModifiable, cpI43, notI4.getPin("B"), new Point[0]); + new GUIWire(submodelModifiable, cpI43, cpI44, new Point[0]); + new GUIWire(submodelModifiable, cpI44, nandI3I4.getPin("B"), new Point[0]); + new GUIWire(submodelModifiable, cpI44, SN, new Point(10, 105), new Point(135, 105), new Point(135, 100)); + new GUIWire(submodelModifiable, I3, cpI31, new Point(50, 100)); + new GUIWire(submodelModifiable, cpI31, RN, new Point(50, 220)); + new GUIWire(submodelModifiable, cpI31, cpI32, new Point[0]); + new GUIWire(submodelModifiable, cpI32, nandI4I3NotI5.getPin("B"), new Point(50, 25)); + new GUIWire(submodelModifiable, cpI32, nandI3I4.getPin("A"), new Point[0]); + new GUIWire(submodelModifiable, notI5.getPin("Y"), cpNotI51, new Point[0]); + new GUIWire(submodelModifiable, cpNotI51, CinE, new Point(40, 5), new Point(115, 5), new Point(115, 20)); + new GUIWire(submodelModifiable, cpNotI51, cpNotI52, new Point[0]); + new GUIWire(submodelModifiable, cpNotI52, nandI4I3NotI5.getPin("C"), new Point[0]); + new GUIWire(submodelModifiable, cpNotI52, andSBE.getPin("B"), new Point(40, 150)); + new GUIWire(submodelModifiable, notI4.getPin("Y"), nandI5NotI4.getPin("B"), new Point[0]); + new GUIWire(submodelModifiable, nandI4I3NotI5.getPin("Y"), nandL.getPin("A")); + new GUIWire(submodelModifiable, nandI5NotI4.getPin("Y"), nandL.getPin("B")); + new GUIWire(submodelModifiable, nandI3I4.getPin("Y"), andSBE.getPin("A")); + new GUIWire(submodelModifiable, nandL.getPin("Y"), L, new Point[0]); + new GUIWire(submodelModifiable, andSBE.getPin("Y"), SBE, new Point[0]); + } + + static + { + IndirectGUIComponentCreator.setComponentSupplier(GUIAm2901ALUFuncDecode.class.getCanonicalName(), + (m, p, n) -> new GUIAm2901ALUFuncDecode(m, n)); + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/am2901/GUIAm2901ALUInclDecode.java b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/am2901/GUIAm2901ALUInclDecode.java new file mode 100644 index 00000000..5c1afe11 --- /dev/null +++ b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/am2901/GUIAm2901ALUInclDecode.java @@ -0,0 +1,181 @@ +package net.mograsim.logic.model.model.components.mi.nandbased.am2901; + +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.mograsim.logic.model.model.ViewModelModifiable; +import net.mograsim.logic.model.model.components.mi.nandbased.GUIxor; +import net.mograsim.logic.model.model.components.submodels.SimpleRectangularSubmodelComponent; +import net.mograsim.logic.model.model.wires.GUIWire; +import net.mograsim.logic.model.model.wires.Pin; +import net.mograsim.logic.model.model.wires.WireCrossPoint; +import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator; + +public class GUIAm2901ALUInclDecode extends SimpleRectangularSubmodelComponent +{ + public GUIAm2901ALUInclDecode(ViewModelModifiable model) + { + this(model, null); + } + + public GUIAm2901ALUInclDecode(ViewModelModifiable model, String name) + { + super(model, 1, "GUIAm2901ALUInclDecode", name); + setSubmodelScale(.25); + setInputPins("I5", "I4", "I3", "Cn", "R1", "R2", "R3", "R4", "S1", "S2", "S3", "S4"); + setOutputPins("F1", "F2", "F3", "F4", "Cn+4", "OVR"); + initSubmodelComponents(); + } + + @SuppressWarnings("unused") // for GUIWires being created + private void initSubmodelComponents() + { + Pin I5 = getSubmodelPin("I5"); + Pin I4 = getSubmodelPin("I4"); + Pin I3 = getSubmodelPin("I3"); + Pin Cn = getSubmodelPin("Cn"); + Pin R1 = getSubmodelPin("R1"); + Pin R2 = getSubmodelPin("R2"); + Pin R3 = getSubmodelPin("R3"); + Pin R4 = getSubmodelPin("R4"); + Pin S1 = getSubmodelPin("S1"); + Pin S2 = getSubmodelPin("S2"); + Pin S3 = getSubmodelPin("S3"); + Pin S4 = getSubmodelPin("S4"); + Pin F1 = getSubmodelPin("F1"); + Pin F2 = getSubmodelPin("F2"); + Pin F3 = getSubmodelPin("F3"); + Pin F4 = getSubmodelPin("F4"); + Pin Cnplus4 = getSubmodelPin("Cn+4"); + Pin OVR = getSubmodelPin("OVR"); + + GUIAm2901ALUFuncDecode funcDecode = new GUIAm2901ALUFuncDecode(submodelModifiable); + GUIAm2901ALUOneBit alu1 = new GUIAm2901ALUOneBit(submodelModifiable); + GUIAm2901ALUOneBit alu2 = new GUIAm2901ALUOneBit(submodelModifiable); + GUIAm2901ALUOneBit alu3 = new GUIAm2901ALUOneBit(submodelModifiable); + GUIAm2901ALUOneBit alu4 = new GUIAm2901ALUOneBit(submodelModifiable); + GUIxor xorOVR = new GUIxor(submodelModifiable); + + WireCrossPoint cpCoutE1 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpCoutE2 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpCoutE3 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpCinE1 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpCinE2 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpCinE3 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpRN1 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpRN2 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpRN3 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpSN1 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpSN2 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpSN3 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpFN1 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpFN2 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpFN3 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpL1 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpL2 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpL3 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpCnplus3 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpCnplus4 = new WireCrossPoint(submodelModifiable, 1); + + funcDecode.moveTo(20, 2.5); + alu1.moveTo(45, 80); + alu2.moveTo(45, 180); + alu3.moveTo(45, 280); + alu4.moveTo(45, 380); + xorOVR.moveTo(95, 400); + cpCoutE1.moveCenterTo(25, 95); + cpCoutE2.moveCenterTo(25, 195); + cpCoutE3.moveCenterTo(25, 295); + cpCinE1.moveCenterTo(27.5, 105); + cpCinE2.moveCenterTo(27.5, 205); + cpCinE3.moveCenterTo(27.5, 305); + cpRN1.moveCenterTo(30, 125); + cpRN2.moveCenterTo(30, 225); + cpRN3.moveCenterTo(30, 325); + cpSN1.moveCenterTo(32.5, 145); + cpSN2.moveCenterTo(32.5, 245); + cpSN3.moveCenterTo(32.5, 345); + cpFN1.moveCenterTo(35, 155); + cpFN2.moveCenterTo(35, 255); + cpFN3.moveCenterTo(35, 355); + cpL1.moveCenterTo(37.5, 165); + cpL2.moveCenterTo(37.5, 265); + cpL3.moveCenterTo(37.5, 365); + cpCnplus3.moveCenterTo(85, 375); + cpCnplus4.moveCenterTo(85, 385); + + new GUIWire(submodelModifiable, I5, funcDecode.getPin("I5"), new Point(5, 20), new Point(5, 7.5)); + new GUIWire(submodelModifiable, I4, funcDecode.getPin("I4"), new Point(10, 60), new Point(10, 17.5)); + new GUIWire(submodelModifiable, I3, funcDecode.getPin("I3"), new Point(15, 100), new Point(15, 27.5)); + new GUIWire(submodelModifiable, funcDecode.getPin("SBE"), cpCoutE1, new Point(62.5, 37.5), new Point(62.5, 70), new Point(25, 70)); + new GUIWire(submodelModifiable, cpCoutE1, cpCoutE2, new Point[0]); + new GUIWire(submodelModifiable, cpCoutE2, cpCoutE3, new Point[0]); + new GUIWire(submodelModifiable, cpCoutE1, alu1.getPin("CoutE"), new Point[0]); + new GUIWire(submodelModifiable, cpCoutE2, alu2.getPin("CoutE"), new Point[0]); + new GUIWire(submodelModifiable, cpCoutE3, alu3.getPin("CoutE"), new Point[0]); + new GUIWire(submodelModifiable, cpCoutE3, alu4.getPin("CoutE"), new Point(25, 395)); + new GUIWire(submodelModifiable, funcDecode.getPin("CinE"), cpCinE1, new Point(70, 7.5), new Point(70, 77.5), new Point(27.5, 77.5)); + new GUIWire(submodelModifiable, cpCinE1, cpCinE2, new Point[0]); + new GUIWire(submodelModifiable, cpCinE2, cpCinE3, new Point[0]); + new GUIWire(submodelModifiable, cpCinE1, alu1.getPin("CinE"), new Point[0]); + new GUIWire(submodelModifiable, cpCinE2, alu2.getPin("CinE"), new Point[0]); + new GUIWire(submodelModifiable, cpCinE3, alu3.getPin("CinE"), new Point[0]); + new GUIWire(submodelModifiable, cpCinE3, alu4.getPin("CinE"), new Point(27.5, 405)); + new GUIWire(submodelModifiable, funcDecode.getPin("RN"), cpRN1, new Point(57.5, 57.5), new Point(57.5, 65), new Point(30, 65)); + new GUIWire(submodelModifiable, cpRN1, cpRN2, new Point[0]); + new GUIWire(submodelModifiable, cpRN2, cpRN3, new Point[0]); + new GUIWire(submodelModifiable, cpRN1, alu1.getPin("RN"), new Point[0]); + new GUIWire(submodelModifiable, cpRN2, alu2.getPin("RN"), new Point[0]); + new GUIWire(submodelModifiable, cpRN3, alu3.getPin("RN"), new Point[0]); + new GUIWire(submodelModifiable, cpRN3, alu4.getPin("RN"), new Point(30, 425)); + new GUIWire(submodelModifiable, funcDecode.getPin("SN"), cpSN1, new Point(65, 27.5), new Point(65, 72.5), new Point(32.5, 72.5)); + new GUIWire(submodelModifiable, cpSN1, cpSN2, new Point[0]); + new GUIWire(submodelModifiable, cpSN2, cpSN3, new Point[0]); + new GUIWire(submodelModifiable, cpSN1, alu1.getPin("SN"), new Point[0]); + new GUIWire(submodelModifiable, cpSN2, alu2.getPin("SN"), new Point[0]); + new GUIWire(submodelModifiable, cpSN3, alu3.getPin("SN"), new Point[0]); + new GUIWire(submodelModifiable, cpSN3, alu4.getPin("SN"), new Point(32.5, 445)); + new GUIWire(submodelModifiable, funcDecode.getPin("FN"), cpFN1, new Point(60, 47.5), new Point(60, 67.5), new Point(35, 67.5)); + new GUIWire(submodelModifiable, cpFN1, cpFN2, new Point[0]); + new GUIWire(submodelModifiable, cpFN2, cpFN3, new Point[0]); + new GUIWire(submodelModifiable, cpFN1, alu1.getPin("FN"), new Point[0]); + new GUIWire(submodelModifiable, cpFN2, alu2.getPin("FN"), new Point[0]); + new GUIWire(submodelModifiable, cpFN3, alu3.getPin("FN"), new Point[0]); + new GUIWire(submodelModifiable, cpFN3, alu4.getPin("FN"), new Point(35, 455)); + new GUIWire(submodelModifiable, funcDecode.getPin("L"), cpL1, new Point(67.5, 17.5), new Point(67.5, 75), new Point(37.5, 75)); + new GUIWire(submodelModifiable, cpL1, cpL2, new Point[0]); + new GUIWire(submodelModifiable, cpL2, cpL3, new Point[0]); + new GUIWire(submodelModifiable, cpL1, alu1.getPin("L"), new Point[0]); + new GUIWire(submodelModifiable, cpL2, alu2.getPin("L"), new Point[0]); + new GUIWire(submodelModifiable, cpL3, alu3.getPin("L"), new Point[0]); + new GUIWire(submodelModifiable, cpL3, alu4.getPin("L"), new Point(37.5, 465)); + new GUIWire(submodelModifiable, R1, alu1.getPin("R"), new Point(10, 180), new Point(10, 115)); + new GUIWire(submodelModifiable, R2, alu2.getPin("R"), new Point(10, 220), new Point(10, 215)); + new GUIWire(submodelModifiable, R3, alu3.getPin("R"), new Point(10, 260), new Point(10, 315)); + new GUIWire(submodelModifiable, R4, alu4.getPin("R"), new Point(20, 300), new Point(20, 415)); + new GUIWire(submodelModifiable, S1, alu1.getPin("S"), new Point(15, 340), new Point(15, 135)); + new GUIWire(submodelModifiable, S2, alu2.getPin("S"), new Point(5, 380), new Point(5, 235)); + new GUIWire(submodelModifiable, S3, alu3.getPin("S"), new Point(10, 420), new Point(10, 335)); + new GUIWire(submodelModifiable, S4, alu4.getPin("S"), new Point(10, 460), new Point(10, 435)); + new GUIWire(submodelModifiable, Cn, alu1.getPin("Cin"), new Point(5, 140), new Point(5, 85)); + new GUIWire(submodelModifiable, alu1.getPin("Cout"), alu2.getPin("Cin"), new Point(85, 85), new Point(85, 175), new Point(40, 175), + new Point(40, 185)); + new GUIWire(submodelModifiable, alu2.getPin("Cout"), alu3.getPin("Cin"), new Point(85, 185), new Point(85, 275), new Point(40, 275), + new Point(40, 285)); + new GUIWire(submodelModifiable, alu3.getPin("Cout"), cpCnplus3, new Point(85, 285)); + new GUIWire(submodelModifiable, cpCnplus3, alu4.getPin("Cin"), new Point(40, 375), new Point(40, 385)); + new GUIWire(submodelModifiable, alu4.getPin("Cout"), cpCnplus4, new Point[0]); + new GUIWire(submodelModifiable, alu1.getPin("F"), F1, new Point(90, 95), new Point(90, 20)); + new GUIWire(submodelModifiable, alu2.getPin("F"), F2, new Point(95, 195), new Point(95, 60)); + new GUIWire(submodelModifiable, alu3.getPin("F"), F3, new Point(100, 295), new Point(100, 100)); + new GUIWire(submodelModifiable, alu4.getPin("F"), F4, new Point(105, 395), new Point(105, 140)); + new GUIWire(submodelModifiable, cpCnplus3, xorOVR.getPin("A"), new Point(90, 375), new Point(90, 405)); + new GUIWire(submodelModifiable, cpCnplus4, xorOVR.getPin("B"), new Point(85, 415)); + new GUIWire(submodelModifiable, cpCnplus4, Cnplus4, new Point(130, 385), new Point(130, 180)); + new GUIWire(submodelModifiable, xorOVR.getPin("Y"), OVR); + } + + static + { + IndirectGUIComponentCreator.setComponentSupplier(GUIAm2901ALUInclDecode.class.getCanonicalName(), + (m, p, n) -> new GUIAm2901ALUInclDecode(m, n)); + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/am2901/GUIAm2901ALUInclSourceDecodeInclFunctionDecode.java b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/am2901/GUIAm2901ALUInclSourceDecodeInclFunctionDecode.java new file mode 100644 index 00000000..a57e315b --- /dev/null +++ b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/am2901/GUIAm2901ALUInclSourceDecodeInclFunctionDecode.java @@ -0,0 +1,152 @@ +package net.mograsim.logic.model.model.components.mi.nandbased.am2901; + +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.mograsim.logic.model.model.ViewModelModifiable; +import net.mograsim.logic.model.model.components.mi.nandbased.GUIsel2_4; +import net.mograsim.logic.model.model.components.mi.nandbased.GUIsel3_4; +import net.mograsim.logic.model.model.components.submodels.SimpleRectangularSubmodelComponent; +import net.mograsim.logic.model.model.wires.GUIWire; +import net.mograsim.logic.model.model.wires.Pin; +import net.mograsim.logic.model.model.wires.WireCrossPoint; +import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator; + +public class GUIAm2901ALUInclSourceDecodeInclFunctionDecode extends SimpleRectangularSubmodelComponent +{ + public GUIAm2901ALUInclSourceDecodeInclFunctionDecode(ViewModelModifiable model) + { + this(model, null); + } + + public GUIAm2901ALUInclSourceDecodeInclFunctionDecode(ViewModelModifiable model, String name) + { + super(model, 1, "GUIAm2901ALUInclSourceDecodeInclFunctionDecode", name); + setSubmodelScale(.25); + setInputPins("I5", "I4", "I3", "I2", "I1", "I0", "Cn", "D1", "D2", "D3", "D4", "A1", "A2", "A3", "A4", "B1", "B2", "B3", "B4", "Q1", + "Q2", "Q3", "Q4"); + setOutputPins("F1", "F2", "F3", "F4", "Cn+4", "OVR"); + initSubmodelComponents(); + } + + @SuppressWarnings("unused") // for GUIWires being created + private void initSubmodelComponents() + { + Pin I5 = getSubmodelPin("I5"); + Pin I4 = getSubmodelPin("I4"); + Pin I3 = getSubmodelPin("I3"); + Pin I2 = getSubmodelPin("I2"); + Pin I1 = getSubmodelPin("I1"); + Pin I0 = getSubmodelPin("I0"); + Pin Cn = getSubmodelPin("Cn"); + Pin D1 = getSubmodelPin("D1"); + Pin D2 = getSubmodelPin("D2"); + Pin D3 = getSubmodelPin("D3"); + Pin D4 = getSubmodelPin("D4"); + Pin A1 = getSubmodelPin("A1"); + Pin A2 = getSubmodelPin("A2"); + Pin A3 = getSubmodelPin("A3"); + Pin A4 = getSubmodelPin("A4"); + Pin B1 = getSubmodelPin("B1"); + Pin B2 = getSubmodelPin("B2"); + Pin B3 = getSubmodelPin("B3"); + Pin B4 = getSubmodelPin("B4"); + Pin Q1 = getSubmodelPin("Q1"); + Pin Q2 = getSubmodelPin("Q2"); + Pin Q3 = getSubmodelPin("Q3"); + Pin Q4 = getSubmodelPin("Q4"); + Pin F1 = getSubmodelPin("F1"); + Pin F2 = getSubmodelPin("F2"); + Pin F3 = getSubmodelPin("F3"); + Pin F4 = getSubmodelPin("F4"); + Pin Cnplus4 = getSubmodelPin("Cn+4"); + Pin OVR = getSubmodelPin("OVR"); + + GUIAm2901SourceDecode sourceDecode = new GUIAm2901SourceDecode(submodelModifiable); + GUIsel2_4 selR = new GUIsel2_4(submodelModifiable); + GUIsel3_4 selS = new GUIsel3_4(submodelModifiable); + GUIAm2901ALUInclDecode alu = new GUIAm2901ALUInclDecode(submodelModifiable); + + WireCrossPoint cpA1 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpA2 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpA3 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpA4 = new WireCrossPoint(submodelModifiable, 1); + + sourceDecode.moveTo(15, 165); + selR.moveTo(45, 365); + selS.moveTo(45, 575); + alu.moveTo(60, 15); + cpA1.moveCenterTo(10, 460); + cpA2.moveCenterTo(15, 500); + cpA3.moveCenterTo(20, 540); + cpA4.moveCenterTo(25, 580); + + new GUIWire(submodelModifiable, I5, alu.getPin("I5"), new Point[0]); + new GUIWire(submodelModifiable, I4, alu.getPin("I4"), new Point(5, 60), new Point(5, 30)); + new GUIWire(submodelModifiable, I3, alu.getPin("I3"), new Point(15, 100), new Point(15, 40)); + new GUIWire(submodelModifiable, I2, sourceDecode.getPin("I2"), new Point(5, 140), new Point(5, 170)); + new GUIWire(submodelModifiable, I1, sourceDecode.getPin("I1"), new Point[0]); + new GUIWire(submodelModifiable, I0, sourceDecode.getPin("I0"), new Point(5, 220), new Point(5, 190)); + new GUIWire(submodelModifiable, Cn, alu.getPin("Cn"), new Point(10, 260), new Point(10, 50)); + new GUIWire(submodelModifiable, D1, selR.getPin("A1"), new Point(15, 300), new Point(15, 390)); + new GUIWire(submodelModifiable, D2, selR.getPin("A2"), new Point(10, 340), new Point(10, 400)); + new GUIWire(submodelModifiable, D3, selR.getPin("A3"), new Point(5, 380), new Point(5, 410)); + new GUIWire(submodelModifiable, D4, selR.getPin("A4"), new Point[0]); + new GUIWire(submodelModifiable, A1, cpA1, new Point[0]); + new GUIWire(submodelModifiable, A2, cpA2, new Point[0]); + new GUIWire(submodelModifiable, A3, cpA3, new Point[0]); + new GUIWire(submodelModifiable, A4, cpA4, new Point[0]); + new GUIWire(submodelModifiable, cpA1, selR.getPin("B1"), new Point(10, 430)); + new GUIWire(submodelModifiable, cpA2, selR.getPin("B2"), new Point(15, 440)); + new GUIWire(submodelModifiable, cpA3, selR.getPin("B3"), new Point(20, 450)); + new GUIWire(submodelModifiable, cpA4, selR.getPin("B4"), new Point(25, 460)); + new GUIWire(submodelModifiable, cpA1, selS.getPin("A1"), new Point(10, 610)); + new GUIWire(submodelModifiable, cpA2, selS.getPin("A2"), new Point(15, 620)); + new GUIWire(submodelModifiable, cpA3, selS.getPin("A3"), new Point(20, 630)); + new GUIWire(submodelModifiable, cpA4, selS.getPin("A4"), new Point(25, 640)); + new GUIWire(submodelModifiable, B1, selS.getPin("B1"), new Point(5, 620), new Point(5, 650)); + new GUIWire(submodelModifiable, B2, selS.getPin("B2"), new Point[0]); + new GUIWire(submodelModifiable, B3, selS.getPin("B3"), new Point(5, 700), new Point(5, 670)); + new GUIWire(submodelModifiable, B4, selS.getPin("B4"), new Point(10, 740), new Point(10, 680)); + new GUIWire(submodelModifiable, Q1, selS.getPin("C1"), new Point(15, 780), new Point(15, 690)); + new GUIWire(submodelModifiable, Q2, selS.getPin("C2"), new Point(20, 820), new Point(20, 700)); + new GUIWire(submodelModifiable, Q3, selS.getPin("C3"), new Point(25, 860), new Point(25, 710)); + new GUIWire(submodelModifiable, Q4, selS.getPin("C4"), new Point(30, 900), new Point(30, 720)); + new GUIWire(submodelModifiable, sourceDecode.getPin("SQ"), selS.getPin("SC"), new Point(75, 170), new Point(75, 240), + new Point(30, 240), new Point(30, 600)); + new GUIWire(submodelModifiable, sourceDecode.getPin("RA"), selR.getPin("SB"), new Point(70, 180), new Point(70, 235), + new Point(20, 235), new Point(20, 380)); + new GUIWire(submodelModifiable, sourceDecode.getPin("SB"), selS.getPin("SB"), new Point(65, 190), new Point(65, 230), + new Point(35, 230), new Point(35, 590)); + new GUIWire(submodelModifiable, sourceDecode.getPin("SA"), selS.getPin("SA"), new Point(60, 200), new Point(60, 225), + new Point(40, 225), new Point(40, 580)); + new GUIWire(submodelModifiable, sourceDecode.getPin("RD"), selR.getPin("SA"), new Point(55, 210), new Point(55, 220), + new Point(25, 220), new Point(25, 370)); + new GUIWire(submodelModifiable, selR.getPin("Y1"), alu.getPin("R1"), new Point(82.5, 370), new Point(82.5, 162.5), + new Point(20, 162.5), new Point(20, 60)); + new GUIWire(submodelModifiable, selR.getPin("Y2"), alu.getPin("R2"), new Point(85, 380), new Point(85, 160), new Point(22.5, 160), + new Point(22.5, 70)); + new GUIWire(submodelModifiable, selR.getPin("Y3"), alu.getPin("R3"), new Point(87.5, 390), new Point(87.5, 157.5), + new Point(25, 157.5), new Point(25, 80)); + new GUIWire(submodelModifiable, selR.getPin("Y4"), alu.getPin("R4"), new Point(90, 400), new Point(90, 155), new Point(27.5, 155), + new Point(27.5, 90)); + new GUIWire(submodelModifiable, selS.getPin("Y1"), alu.getPin("S1"), new Point(92.5, 580), new Point(92.5, 152.5), + new Point(30, 152.5), new Point(30, 100)); + new GUIWire(submodelModifiable, selS.getPin("Y2"), alu.getPin("S2"), new Point(95, 590), new Point(95, 150), new Point(32.5, 150), + new Point(32.5, 110)); + new GUIWire(submodelModifiable, selS.getPin("Y3"), alu.getPin("S3"), new Point(97.5, 600), new Point(97.5, 147.5), + new Point(35, 147.5), new Point(35, 120)); + new GUIWire(submodelModifiable, selS.getPin("Y4"), alu.getPin("S4"), new Point(100, 610), new Point(100, 145), new Point(37.5, 145), + new Point(37.5, 130)); + new GUIWire(submodelModifiable, alu.getPin("F1"), F1, new Point[0]); + new GUIWire(submodelModifiable, alu.getPin("F2"), F2, new Point(135, 30), new Point(135, 60)); + new GUIWire(submodelModifiable, alu.getPin("F3"), F3, new Point(130, 40), new Point(130, 100)); + new GUIWire(submodelModifiable, alu.getPin("F4"), F4, new Point(125, 50), new Point(125, 140)); + new GUIWire(submodelModifiable, alu.getPin("Cn+4"), Cnplus4, new Point(120, 60), new Point(120, 180)); + new GUIWire(submodelModifiable, alu.getPin("OVR"), OVR, new Point(115, 70), new Point(115, 220)); + } + + static + { + IndirectGUIComponentCreator.setComponentSupplier(GUIAm2901ALUInclSourceDecodeInclFunctionDecode.class.getCanonicalName(), + (m, p, n) -> new GUIAm2901ALUInclSourceDecodeInclFunctionDecode(m, n)); + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/am2901/GUIAm2901ALUOneBit.java b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/am2901/GUIAm2901ALUOneBit.java new file mode 100644 index 00000000..453a6694 --- /dev/null +++ b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/am2901/GUIAm2901ALUOneBit.java @@ -0,0 +1,101 @@ +package net.mograsim.logic.model.model.components.mi.nandbased.am2901; + +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.mograsim.logic.model.model.ViewModelModifiable; +import net.mograsim.logic.model.model.components.atomic.GUINandGate; +import net.mograsim.logic.model.model.components.mi.nandbased.GUIand; +import net.mograsim.logic.model.model.components.mi.nandbased.GUIfulladder; +import net.mograsim.logic.model.model.components.mi.nandbased.GUImux1; +import net.mograsim.logic.model.model.components.mi.nandbased.GUIxor; +import net.mograsim.logic.model.model.components.submodels.SimpleRectangularSubmodelComponent; +import net.mograsim.logic.model.model.wires.GUIWire; +import net.mograsim.logic.model.model.wires.Pin; +import net.mograsim.logic.model.model.wires.WireCrossPoint; +import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator; + +public class GUIAm2901ALUOneBit extends SimpleRectangularSubmodelComponent +{ + public GUIAm2901ALUOneBit(ViewModelModifiable model) + { + this(model, null); + } + + public GUIAm2901ALUOneBit(ViewModelModifiable model, String name) + { + super(model, 1, "GUIAm2901ALUOneBit", name); + setSubmodelScale(.2); + setInputPins("Cin", "CoutE", "CinE", "R", "RN", "S", "SN", "FN", "L"); + setOutputPins("Cout", "F"); + initSubmodelComponents(); + } + + @SuppressWarnings("unused") // for GUIWires being created + private void initSubmodelComponents() + { + Pin Cin = getSubmodelPin("Cin"); + Pin CoutE = getSubmodelPin("CoutE"); + Pin CinE = getSubmodelPin("CinE"); + Pin R = getSubmodelPin("R"); + Pin RN = getSubmodelPin("RN"); + Pin S = getSubmodelPin("S"); + Pin SN = getSubmodelPin("SN"); + Pin FN = getSubmodelPin("FN"); + Pin L = getSubmodelPin("L"); + Pin Cout = getSubmodelPin("Cout"); + Pin F = getSubmodelPin("F"); + + GUIand Cinand = new GUIand(submodelModifiable); + GUIxor Rxor = new GUIxor(submodelModifiable); + GUIxor Sxor = new GUIxor(submodelModifiable); + GUIfulladder add = new GUIfulladder(submodelModifiable); + GUINandGate nand = new GUINandGate(submodelModifiable, 1); + GUIand Coutand = new GUIand(submodelModifiable); + GUImux1 Fsel = new GUImux1(submodelModifiable); + GUIxor Fxor = new GUIxor(submodelModifiable); + + WireCrossPoint cpRXored = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpSXored = new WireCrossPoint(submodelModifiable, 1); + + Cinand.moveTo(10, 20); + Rxor.moveTo(10, 190); + Sxor.moveTo(10, 290); + add.moveTo(60, 20); + nand.moveTo(60, 55); + Coutand.moveTo(135, 20); + Fsel.moveTo(90, 70); + Fxor.moveTo(135, 70); + cpRXored.moveCenterTo(50, 60); + cpSXored.moveCenterTo(55, 70); + + new GUIWire(submodelModifiable, Cin, Cinand.getPin("A"), new Point[0]); + new GUIWire(submodelModifiable, CoutE, Coutand.getPin("A"), new Point(5, 75), new Point(5, 10), new Point(130, 10), + new Point(130, 25)); + new GUIWire(submodelModifiable, CinE, Cinand.getPin("B"), new Point(7.5, 125), new Point(7.5, 35)); + new GUIWire(submodelModifiable, R, Rxor.getPin("A")); + new GUIWire(submodelModifiable, RN, Rxor.getPin("B")); + new GUIWire(submodelModifiable, S, Sxor.getPin("A")); + new GUIWire(submodelModifiable, SN, Sxor.getPin("B")); + new GUIWire(submodelModifiable, FN, Fxor.getPin("B"), new Point(130, 375), new Point(130, 85)); + new GUIWire(submodelModifiable, L, Fsel.getPin("S0"), new Point(87.5, 425), new Point(87.5, 75)); + new GUIWire(submodelModifiable, Cinand.getPin("Y"), add.getPin("A"), new Point[0]); + new GUIWire(submodelModifiable, Rxor.getPin("Y"), cpRXored, new Point(50, 195)); + new GUIWire(submodelModifiable, cpRXored, add.getPin("B"), new Point(50, 35)); + new GUIWire(submodelModifiable, cpRXored, nand.getPin("A"), new Point[0]); + new GUIWire(submodelModifiable, Sxor.getPin("Y"), cpSXored, new Point(55, 295)); + new GUIWire(submodelModifiable, cpSXored, add.getPin("C"), new Point(55, 45)); + new GUIWire(submodelModifiable, cpSXored, nand.getPin("B"), new Point[0]); + new GUIWire(submodelModifiable, add.getPin("Y"), Fsel.getPin("I0"), new Point(100, 25), new Point(100, 65), new Point(85, 65), + new Point(85, 85)); + new GUIWire(submodelModifiable, add.getPin("Z"), Coutand.getPin("B"), new Point[0]); + new GUIWire(submodelModifiable, nand.getPin("Y"), Fsel.getPin("I1"), new Point(82.5, 65), new Point(82.5, 95)); + new GUIWire(submodelModifiable, Fsel.getPin("Y"), Fxor.getPin("A"), new Point[0]); + new GUIWire(submodelModifiable, Coutand.getPin("Y"), Cout, new Point[0]); + new GUIWire(submodelModifiable, Fxor.getPin("Y"), F, new Point[0]); + } + + static + { + IndirectGUIComponentCreator.setComponentSupplier(GUIAm2901ALUOneBit.class.getCanonicalName(), + (m, p, n) -> new GUIAm2901ALUOneBit(m, n)); + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/am2901/GUIAm2901DestDecode.java b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/am2901/GUIAm2901DestDecode.java new file mode 100644 index 00000000..fbdaeabe --- /dev/null +++ b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/am2901/GUIAm2901DestDecode.java @@ -0,0 +1,157 @@ +package net.mograsim.logic.model.model.components.mi.nandbased.am2901; + +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.mograsim.logic.model.model.ViewModelModifiable; +import net.mograsim.logic.model.model.components.atomic.GUINandGate; +import net.mograsim.logic.model.model.components.submodels.SimpleRectangularSubmodelComponent; +import net.mograsim.logic.model.model.wires.GUIWire; +import net.mograsim.logic.model.model.wires.Pin; +import net.mograsim.logic.model.model.wires.WireCrossPoint; +import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator; + +public class GUIAm2901DestDecode extends SimpleRectangularSubmodelComponent +{ + public GUIAm2901DestDecode(ViewModelModifiable model) + { + this(model, null); + } + + public GUIAm2901DestDecode(ViewModelModifiable model, String name) + { + super(model, 1, "GUIAm2901DestDecode", name); + setSubmodelScale(.25); + setInputPins("I8", "I7", "I6"); + setOutputPins("NSH", "RSH", "RAMWE", "YF", "LSH", "QWE"); + initSubmodelComponents(); + } + + @SuppressWarnings("unused") // for GUIWires being created + private void initSubmodelComponents() + { + Pin I8 = getSubmodelPin("I8"); + Pin I7 = getSubmodelPin("I7"); + Pin I6 = getSubmodelPin("I6"); + Pin NSH = getSubmodelPin("NSH"); + Pin RSH = getSubmodelPin("RSH"); + Pin RAMWE = getSubmodelPin("RAMWE"); + Pin YF = getSubmodelPin("YF"); + Pin LSH = getSubmodelPin("LSH"); + Pin QWE = getSubmodelPin("QWE"); + + GUINandGate notI8 = new GUINandGate(submodelModifiable, 1); + GUINandGate notI7 = new GUINandGate(submodelModifiable, 1); + GUINandGate nandI8I7 = new GUINandGate(submodelModifiable, 1); + GUINandGate notI6 = new GUINandGate(submodelModifiable, 1); + GUINandGate nandRSH = new GUINandGate(submodelModifiable, 1); + GUINandGate nandRAMWE = new GUINandGate(submodelModifiable, 1); + GUINandGate nandI7NotI8 = new GUINandGate(submodelModifiable, 1); + GUINandGate nandLSH = new GUINandGate(submodelModifiable, 1); + GUINandGate notRSH = new GUINandGate(submodelModifiable, 1); + GUINandGate andI7NotI8 = new GUINandGate(submodelModifiable, 1); + GUINandGate nandQWE = new GUINandGate(submodelModifiable, 1); + GUINandGate nandYF = new GUINandGate(submodelModifiable, 1); + GUINandGate notQWE = new GUINandGate(submodelModifiable, 1); + + WireCrossPoint cpI81 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpI82 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpI83 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpI71 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpI72 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpI73 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpI6 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpNotI7 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpNotI81 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpNotI82 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpNandI8I7 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpNotRSH = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpNandI7NotI81 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpNandI7NotI82 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpNotI6 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpNandQWE = new WireCrossPoint(submodelModifiable, 1); + + notI8.moveTo(15, 10); + notI7.moveTo(15, 50); + nandI8I7.moveTo(15, 90); + notI6.moveTo(15, 150); + nandRSH.moveTo(50, 10); + nandRAMWE.moveTo(50, 50); + nandI7NotI8.moveTo(50, 90); + nandLSH.moveTo(50, 130); + notRSH.moveTo(80, 10); + andI7NotI8.moveTo(80, 90); + nandQWE.moveTo(80, 145); + nandYF.moveTo(110, 105); + notQWE.moveTo(115, 210); + cpI81.moveCenterTo(5, 20); + cpI82.moveCenterTo(5, 15); + cpI83.moveCenterTo(5, 25); + cpI71.moveCenterTo(10, 60); + cpI72.moveCenterTo(10, 65); + cpI73.moveCenterTo(10, 105); + cpI6.moveCenterTo(5, 155); + cpNotI7.moveCenterTo(40, 60); + cpNotI81.moveCenterTo(45, 20); + cpNotI82.moveCenterTo(45, 55); + cpNandI8I7.moveCenterTo(40, 135); + cpNotRSH.moveCenterTo(75, 20); + cpNandI7NotI81.moveCenterTo(75, 100); + cpNandI7NotI82.moveCenterTo(75, 105); + cpNotI6.moveCenterTo(75, 160); + cpNandQWE.moveCenterTo(110, 215); + + new GUIWire(submodelModifiable, I8, cpI81, new Point[0]); + new GUIWire(submodelModifiable, cpI81, cpI82, new Point[0]); + new GUIWire(submodelModifiable, cpI81, cpI83, new Point[0]); + new GUIWire(submodelModifiable, cpI82, notI8.getPin("A"), new Point[0]); + new GUIWire(submodelModifiable, cpI83, notI8.getPin("B"), new Point[0]); + new GUIWire(submodelModifiable, I7, cpI71, new Point[0]); + new GUIWire(submodelModifiable, cpI71, notI7.getPin("A"), new Point(10, 55)); + new GUIWire(submodelModifiable, cpI71, cpI72, new Point[0]); + new GUIWire(submodelModifiable, cpI72, notI7.getPin("B"), new Point[0]); + new GUIWire(submodelModifiable, cpI72, cpI73, new Point[0]); + new GUIWire(submodelModifiable, cpI73, nandI8I7.getPin("B"), new Point[0]); + new GUIWire(submodelModifiable, cpI83, nandI8I7.getPin("A"), new Point(5, 95)); + new GUIWire(submodelModifiable, I6, cpI6, new Point(5, 100)); + new GUIWire(submodelModifiable, cpI6, notI6.getPin("A"), new Point[0]); + new GUIWire(submodelModifiable, cpI6, notI6.getPin("B"), new Point(5, 165)); + new GUIWire(submodelModifiable, cpI82, nandRSH.getPin("A"), new Point(5, 5), new Point(40, 5), new Point(40, 15)); + new GUIWire(submodelModifiable, notI7.getPin("Y"), cpNotI7, new Point[0]); + new GUIWire(submodelModifiable, cpNotI7, nandRSH.getPin("B"), new Point(40, 25)); + new GUIWire(submodelModifiable, cpNotI7, nandRAMWE.getPin("B"), new Point(40, 65)); + new GUIWire(submodelModifiable, notI8.getPin("Y"), cpNotI81, new Point[0]); + new GUIWire(submodelModifiable, cpNotI81, NSH, new Point(45, 5), new Point(135, 5), new Point(135, 20)); + new GUIWire(submodelModifiable, cpNotI81, cpNotI82, new Point[0]); + new GUIWire(submodelModifiable, cpNotI82, nandRAMWE.getPin("A"), new Point[0]); + new GUIWire(submodelModifiable, cpNotI82, nandI7NotI8.getPin("A"), new Point(45, 95)); + new GUIWire(submodelModifiable, cpI73, nandI7NotI8.getPin("B"), new Point(10, 115), new Point(45, 115), new Point(45, 105)); + new GUIWire(submodelModifiable, nandI8I7.getPin("Y"), cpNandI8I7, new Point(40, 100)); + new GUIWire(submodelModifiable, cpNandI8I7, nandLSH.getPin("A"), new Point[0]); + new GUIWire(submodelModifiable, cpNandI8I7, nandLSH.getPin("B"), new Point(40, 145)); + new GUIWire(submodelModifiable, nandRSH.getPin("Y"), cpNotRSH, new Point[0]); + new GUIWire(submodelModifiable, cpNotRSH, notRSH.getPin("A"), new Point(75, 15)); + new GUIWire(submodelModifiable, cpNotRSH, notRSH.getPin("B"), new Point(75, 25)); + new GUIWire(submodelModifiable, nandRAMWE.getPin("Y"), RAMWE, new Point(125, 60), new Point(125, 100)); + new GUIWire(submodelModifiable, nandI7NotI8.getPin("Y"), cpNandI7NotI81, new Point[0]); + new GUIWire(submodelModifiable, cpNandI7NotI81, andI7NotI8.getPin("A"), new Point(75, 95)); + new GUIWire(submodelModifiable, cpNandI7NotI81, cpNandI7NotI82, new Point[0]); + new GUIWire(submodelModifiable, cpNandI7NotI82, andI7NotI8.getPin("B"), new Point[0]); + new GUIWire(submodelModifiable, nandLSH.getPin("Y"), LSH, new Point(125, 140), new Point(125, 180)); + new GUIWire(submodelModifiable, cpNandI7NotI82, nandQWE.getPin("A"), new Point(75, 150)); + new GUIWire(submodelModifiable, notI6.getPin("Y"), cpNotI6, new Point[0]); + new GUIWire(submodelModifiable, cpNotI6, nandQWE.getPin("B"), new Point[0]); + new GUIWire(submodelModifiable, notRSH.getPin("Y"), RSH, new Point(130, 20), new Point(130, 60)); + new GUIWire(submodelModifiable, andI7NotI8.getPin("Y"), nandYF.getPin("A")); + new GUIWire(submodelModifiable, cpNotI6, nandYF.getPin("B"), new Point(75, 170), new Point(105, 170), new Point(105, 120)); + new GUIWire(submodelModifiable, nandQWE.getPin("Y"), cpNandQWE, new Point(110, 155)); + new GUIWire(submodelModifiable, cpNandQWE, notQWE.getPin("A"), new Point[0]); + new GUIWire(submodelModifiable, cpNandQWE, notQWE.getPin("B"), new Point(110, 225)); + new GUIWire(submodelModifiable, nandYF.getPin("Y"), YF); + new GUIWire(submodelModifiable, notQWE.getPin("Y"), QWE, new Point[0]); + } + + static + { + IndirectGUIComponentCreator.setComponentSupplier(GUIAm2901DestDecode.class.getCanonicalName(), + (m, p, n) -> new GUIAm2901DestDecode(m, n)); + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/am2901/GUIAm2901QReg.java b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/am2901/GUIAm2901QReg.java new file mode 100644 index 00000000..efae9afc --- /dev/null +++ b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/am2901/GUIAm2901QReg.java @@ -0,0 +1,154 @@ +package net.mograsim.logic.model.model.components.mi.nandbased.am2901; + +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.mograsim.logic.core.types.Bit; +import net.mograsim.logic.core.types.BitVector; +import net.mograsim.logic.model.model.ViewModelModifiable; +import net.mograsim.logic.model.model.components.mi.nandbased.GUIand; +import net.mograsim.logic.model.model.components.mi.nandbased.GUIdff; +import net.mograsim.logic.model.model.components.submodels.SimpleRectangularSubmodelComponent; +import net.mograsim.logic.model.model.wires.GUIWire; +import net.mograsim.logic.model.model.wires.Pin; +import net.mograsim.logic.model.model.wires.WireCrossPoint; +import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator; + +public class GUIAm2901QReg extends SimpleRectangularSubmodelComponent +{ + private GUIdff dff1; + private GUIdff dff2; + private GUIdff dff3; + private GUIdff dff4; + + public GUIAm2901QReg(ViewModelModifiable model) + { + this(model, null); + } + + public GUIAm2901QReg(ViewModelModifiable model, String name) + { + super(model, 1, "GUIAm2901QReg", name); + setSubmodelScale(.4); + setInputPins("C", "WE", "D1", "D2", "D3", "D4"); + setOutputPins("Q1", "Q2", "Q3", "Q4"); + initSubmodelComponents(); + } + + @SuppressWarnings("unused") // for GUIWires being created + private void initSubmodelComponents() + { + Pin C = getSubmodelPin("C"); + Pin WE = getSubmodelPin("WE"); + Pin D1 = getSubmodelPin("D1"); + Pin D2 = getSubmodelPin("D2"); + Pin D3 = getSubmodelPin("D3"); + Pin D4 = getSubmodelPin("D4"); + Pin Q1 = getSubmodelPin("Q1"); + Pin Q2 = getSubmodelPin("Q2"); + Pin Q3 = getSubmodelPin("Q3"); + Pin Q4 = getSubmodelPin("Q4"); + + GUIand and = new GUIand(submodelModifiable); + dff1 = new GUIdff(submodelModifiable); + dff2 = new GUIdff(submodelModifiable); + dff3 = new GUIdff(submodelModifiable); + dff4 = new GUIdff(submodelModifiable); + + WireCrossPoint cpC1 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpC2 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpC3 = new WireCrossPoint(submodelModifiable, 1); + + and.moveTo(5, 15); + dff1.moveTo(50, 7.5); + dff2.moveTo(50, 32.5); + dff3.moveTo(50, 57.5); + dff4.moveTo(50, 82.5); + cpC1.moveCenterTo(42.5, 20); + cpC2.moveCenterTo(42.5, 37.5); + cpC3.moveCenterTo(42.5, 62.5); + + new GUIWire(submodelModifiable, C, and.getPin("A")); + new GUIWire(submodelModifiable, WE, and.getPin("B")); + new GUIWire(submodelModifiable, and.getPin("Y"), cpC1, new Point[0]); + new GUIWire(submodelModifiable, cpC1, dff1.getPin("C"), new Point(42.5, 12.5)); + new GUIWire(submodelModifiable, cpC1, cpC2, new Point[0]); + new GUIWire(submodelModifiable, cpC2, dff2.getPin("C"), new Point[0]); + new GUIWire(submodelModifiable, cpC2, cpC3, new Point[0]); + new GUIWire(submodelModifiable, cpC3, dff3.getPin("C"), new Point[0]); + new GUIWire(submodelModifiable, cpC3, dff4.getPin("C"), new Point(42.5, 87.5)); + new GUIWire(submodelModifiable, D1, dff1.getPin("D"), new Point(17.5, 62.5), new Point(17.5, 42.5), new Point(45, 42.5), + new Point(45, 22.5)); + new GUIWire(submodelModifiable, D2, dff2.getPin("D"), new Point(22.5, 87.5), new Point(22.5, 47.5)); + new GUIWire(submodelModifiable, D3, dff3.getPin("D"), new Point(27.5, 112.5), new Point(27.5, 72.5)); + new GUIWire(submodelModifiable, D4, dff4.getPin("D"), new Point(32.5, 137.5), new Point(32.5, 97.5)); + new GUIWire(submodelModifiable, dff1.getPin("Q"), Q1, new Point[0]); + new GUIWire(submodelModifiable, dff2.getPin("Q"), Q2, new Point[0]); + new GUIWire(submodelModifiable, dff3.getPin("Q"), Q3, new Point[0]); + new GUIWire(submodelModifiable, dff4.getPin("Q"), Q4, new Point[0]); + + addAtomicHighLevelStateID("q1"); + addAtomicHighLevelStateID("q2"); + addAtomicHighLevelStateID("q3"); + addAtomicHighLevelStateID("q4"); + addAtomicHighLevelStateID("q"); + } + + @Override + public void setAtomicHighLevelState(String stateID, Object newState) + { + switch (stateID) + { + case "q1": + dff1.setHighLevelState("q", newState); + break; + case "q2": + dff2.setHighLevelState("q", newState); + break; + case "q3": + dff3.setHighLevelState("q", newState); + break; + case "q4": + dff4.setHighLevelState("q", newState); + break; + case "q": + BitVector newStateCasted = (BitVector) newState; + setHighLevelState("q1", newStateCasted.getLSBit(0)); + setHighLevelState("q2", newStateCasted.getLSBit(1)); + setHighLevelState("q3", newStateCasted.getLSBit(2)); + setHighLevelState("q4", newStateCasted.getLSBit(3)); + break; + default: + // should not happen because we tell SubmodelComponent to only allow these state IDs. + throw new IllegalStateException("Illegal atomic state ID: " + stateID); + } + } + + @Override + public Object getAtomicHighLevelState(String stateID) + { + switch (stateID) + { + case "q1": + return dff1.getHighLevelState("q"); + case "q2": + return dff2.getHighLevelState("q"); + case "q3": + return dff3.getHighLevelState("q"); + case "q4": + return dff4.getHighLevelState("q"); + case "q": + Bit q1 = (Bit) getHighLevelState("q1"); + Bit q2 = (Bit) getHighLevelState("q2"); + Bit q3 = (Bit) getHighLevelState("q3"); + Bit q4 = (Bit) getHighLevelState("q4"); + return BitVector.of(q4, q3, q2, q1); + default: + // should not happen because we tell SubmodelComponent to only allow these state IDs. + throw new IllegalStateException("Illegal atomic state ID: " + stateID); + } + } + + static + { + IndirectGUIComponentCreator.setComponentSupplier(GUIAm2901QReg.class.getCanonicalName(), (m, p, n) -> new GUIAm2901QReg(m, n)); + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/am2901/GUIAm2901SourceDecode.java b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/am2901/GUIAm2901SourceDecode.java new file mode 100644 index 00000000..dbe3a761 --- /dev/null +++ b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/model/components/mi/nandbased/am2901/GUIAm2901SourceDecode.java @@ -0,0 +1,163 @@ +package net.mograsim.logic.model.model.components.mi.nandbased.am2901; + +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.mograsim.logic.model.model.ViewModelModifiable; +import net.mograsim.logic.model.model.components.atomic.GUINandGate; +import net.mograsim.logic.model.model.components.submodels.SimpleRectangularSubmodelComponent; +import net.mograsim.logic.model.model.wires.GUIWire; +import net.mograsim.logic.model.model.wires.Pin; +import net.mograsim.logic.model.model.wires.WireCrossPoint; +import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator; + +public class GUIAm2901SourceDecode extends SimpleRectangularSubmodelComponent +{ + public GUIAm2901SourceDecode(ViewModelModifiable model) + { + this(model, null); + } + + public GUIAm2901SourceDecode(ViewModelModifiable model, String name) + { + super(model, 1, "Am2901SourceDecode", name); + setSubmodelScale(.25); + setInputPins("I2", "I1", "I0"); + setOutputPins("SQ", "RA", "SB", "SA", "RD"); + initSubmodelComponents(); + } + + @SuppressWarnings("unused") // for GUIWires being created + private void initSubmodelComponents() + { + Pin I2 = getSubmodelPin("I2"); + Pin I1 = getSubmodelPin("I1"); + Pin I0 = getSubmodelPin("I0"); + Pin SQ = getSubmodelPin("SQ"); + Pin RA = getSubmodelPin("RA"); + Pin SB = getSubmodelPin("SB"); + Pin SA = getSubmodelPin("SA"); + Pin RD = getSubmodelPin("RD"); + + GUINandGate notI2 = new GUINandGate(submodelModifiable, 1); + GUINandGate notI1 = new GUINandGate(submodelModifiable, 1); + GUINandGate notI0 = new GUINandGate(submodelModifiable, 1); + GUINandGate nand21 = new GUINandGate(submodelModifiable, 1); + GUINandGate nand22 = new GUINandGate(submodelModifiable, 1); + GUINandGate nand23 = new GUINandGate(submodelModifiable, 1); + GUINandGate nand24 = new GUINandGate(submodelModifiable, 1); + GUINandGate nand25 = new GUINandGate(submodelModifiable, 1); + GUINandGate nand31 = new GUINandGate(submodelModifiable, 1); + GUINandGate nand32 = new GUINandGate(submodelModifiable, 1); + GUINandGate nand33 = new GUINandGate(submodelModifiable, 1); + GUINandGate nand34 = new GUINandGate(submodelModifiable, 1); + GUINandGate nand35 = new GUINandGate(submodelModifiable, 1); + GUINandGate nand41 = new GUINandGate(submodelModifiable, 1); + GUINandGate nand42 = new GUINandGate(submodelModifiable, 1); + + WireCrossPoint cpI21 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpI22 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpI23 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpI1 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpI01 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpI02 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpNotI2 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpNotI11 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpNotI12 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpNotI13 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpNotI0 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpNand22 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpNand23 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpNand24 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpNand31 = new WireCrossPoint(submodelModifiable, 1); + WireCrossPoint cpNand35 = new WireCrossPoint(submodelModifiable, 1); + + notI2.moveTo(10, 10); + notI1.moveTo(10, 50); + notI0.moveTo(10, 90); + nand21.moveTo(40, 10); + nand22.moveTo(40, 50); + nand23.moveTo(40, 90); + nand24.moveTo(40, 130); + nand25.moveTo(40, 170); + nand31.moveTo(70, 10); + nand32.moveTo(70, 50); + nand33.moveTo(70, 90); + nand34.moveTo(70, 130); + nand35.moveTo(70, 170); + nand41.moveTo(100, 10); + nand42.moveTo(100, 170); + cpI21.moveCenterTo(5, 20); + cpI22.moveCenterTo(7.5, 20); + cpI23.moveCenterTo(5, 145); + cpI1.moveCenterTo(7.5, 60); + cpI01.moveCenterTo(7.5, 100); + cpI02.moveCenterTo(7.5, 105); + cpNotI2.moveCenterTo(32.5, 55); + cpNotI11.moveCenterTo(35, 60); + cpNotI12.moveCenterTo(35, 65); + cpNotI13.moveCenterTo(35, 135); + cpNotI0.moveCenterTo(37.5, 100); + cpNand22.moveCenterTo(65, 60); + cpNand23.moveCenterTo(65, 100); + cpNand24.moveCenterTo(65, 140); + cpNand31.moveCenterTo(95, 20); + cpNand35.moveCenterTo(95, 180); + + new GUIWire(submodelModifiable, I2, cpI21, new Point[0]); + new GUIWire(submodelModifiable, cpI21, nand21.getPin("A"), new Point(5, 5), new Point(35, 5), new Point(35, 15)); + new GUIWire(submodelModifiable, cpI21, cpI22, new Point[0]); + new GUIWire(submodelModifiable, cpI22, notI2.getPin("A"), new Point(7.5, 15)); + new GUIWire(submodelModifiable, cpI22, notI2.getPin("B"), new Point(7.5, 25)); + new GUIWire(submodelModifiable, cpI21, cpI23, new Point[0]); + new GUIWire(submodelModifiable, cpI23, nand24.getPin("B"), new Point[0]); + new GUIWire(submodelModifiable, cpI23, nand35.getPin("B"), new Point(5, 195), new Point(65, 195), new Point(65, 185)); + new GUIWire(submodelModifiable, I1, cpI1, new Point[0]); + new GUIWire(submodelModifiable, cpI1, notI1.getPin("A"), new Point(7.5, 55)); + new GUIWire(submodelModifiable, cpI1, notI1.getPin("B"), new Point(7.5, 65)); + new GUIWire(submodelModifiable, I0, cpI01, new Point[0]); + new GUIWire(submodelModifiable, cpI01, notI0.getPin("A"), new Point(7.5, 95)); + new GUIWire(submodelModifiable, cpI01, cpI02, new Point[0]); + new GUIWire(submodelModifiable, cpI02, notI0.getPin("B"), new Point[0]); + new GUIWire(submodelModifiable, cpI02, nand23.getPin("B"), new Point(7.5, 112.5), new Point(32.5, 112.5), new Point(32.5, 105)); + new GUIWire(submodelModifiable, notI2.getPin("Y"), cpNotI2, new Point(32.5, 20)); + new GUIWire(submodelModifiable, cpNotI2, nand22.getPin("A"), new Point[0]); + new GUIWire(submodelModifiable, cpNotI2, nand23.getPin("A"), new Point(32.5, 95)); + new GUIWire(submodelModifiable, notI1.getPin("Y"), cpNotI11, new Point[0]); + new GUIWire(submodelModifiable, cpNotI11, nand21.getPin("B"), new Point(35, 25)); + new GUIWire(submodelModifiable, cpNotI11, cpNotI12, new Point[0]); + new GUIWire(submodelModifiable, cpNotI12, nand22.getPin("B"), new Point[0]); + new GUIWire(submodelModifiable, cpNotI12, cpNotI13, new Point[0]); + new GUIWire(submodelModifiable, cpNotI13, nand24.getPin("A"), new Point[0]); + new GUIWire(submodelModifiable, cpNotI13, nand25.getPin("A"), new Point(35, 175)); + new GUIWire(submodelModifiable, notI0.getPin("Y"), cpNotI0, new Point[0]); + new GUIWire(submodelModifiable, cpNotI0, nand31.getPin("B"), new Point(37.5, 35), new Point(65, 35), new Point(65, 25)); + new GUIWire(submodelModifiable, cpNotI0, nand25.getPin("B"), new Point(37.5, 185)); + new GUIWire(submodelModifiable, nand21.getPin("Y"), nand31.getPin("A")); + new GUIWire(submodelModifiable, nand22.getPin("Y"), cpNand22, new Point[0]); + new GUIWire(submodelModifiable, cpNand22, nand32.getPin("A"), new Point(65, 55)); + new GUIWire(submodelModifiable, cpNand22, nand32.getPin("B"), new Point(65, 65)); + new GUIWire(submodelModifiable, nand23.getPin("Y"), cpNand23, new Point[0]); + new GUIWire(submodelModifiable, cpNand23, nand33.getPin("A"), new Point(65, 95)); + new GUIWire(submodelModifiable, cpNand23, nand33.getPin("B"), new Point(65, 105)); + new GUIWire(submodelModifiable, nand24.getPin("Y"), cpNand24, new Point[0]); + new GUIWire(submodelModifiable, cpNand24, nand34.getPin("A"), new Point(65, 135)); + new GUIWire(submodelModifiable, cpNand24, nand34.getPin("B"), new Point(65, 145)); + new GUIWire(submodelModifiable, nand25.getPin("Y"), nand35.getPin("A")); + new GUIWire(submodelModifiable, nand31.getPin("Y"), cpNand31, new Point[0]); + new GUIWire(submodelModifiable, cpNand31, nand41.getPin("A"), new Point(95, 15)); + new GUIWire(submodelModifiable, cpNand31, nand41.getPin("B"), new Point(95, 25)); + new GUIWire(submodelModifiable, nand32.getPin("Y"), RA, new Point[0]); + new GUIWire(submodelModifiable, nand33.getPin("Y"), SB, new Point[0]); + new GUIWire(submodelModifiable, nand34.getPin("Y"), SA, new Point[0]); + new GUIWire(submodelModifiable, nand35.getPin("Y"), cpNand35, new Point[0]); + new GUIWire(submodelModifiable, cpNand35, nand42.getPin("A"), new Point(95, 175)); + new GUIWire(submodelModifiable, cpNand35, nand42.getPin("B"), new Point(95, 185)); + new GUIWire(submodelModifiable, nand41.getPin("Y"), SQ, new Point[0]); + new GUIWire(submodelModifiable, nand42.getPin("Y"), RD, new Point[0]); + } + + static + { + IndirectGUIComponentCreator.setComponentSupplier(GUIAm2901SourceDecode.class.getCanonicalName(), + (m, p, n) -> new GUIAm2901SourceDecode(m, n)); + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/test/net/mograsim/logic/ui/am2900/Am2901Test.java b/net.mograsim.logic.model.am2900/test/net/mograsim/logic/ui/am2900/Am2901Test.java new file mode 100644 index 00000000..03790ec5 --- /dev/null +++ b/net.mograsim.logic.model.am2900/test/net/mograsim/logic/ui/am2900/Am2901Test.java @@ -0,0 +1,298 @@ +package net.mograsim.logic.ui.am2900; + +import static net.mograsim.logic.ui.am2900.TestUtil.*; +import static net.mograsim.logic.ui.am2900.TestableAm2901.Am2901_Dest.*; +import static net.mograsim.logic.ui.am2900.TestableAm2901.Am2901_Func.*; +import static net.mograsim.logic.ui.am2900.TestableAm2901.Am2901_Src.*; +import static net.mograsim.logic.ui.am2900.TestableAm2901.Register.*; +import static org.junit.jupiter.api.Assertions.*; + +import java.awt.Point; +import java.util.stream.IntStream; +import java.util.stream.Stream; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Order; +import org.junit.jupiter.api.MethodOrderer.OrderAnnotation; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestMethodOrder; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.EnumSource; + +import net.mograsim.logic.ui.am2900.TestableAm2901.Register; + +@DisplayName("Am2901 Tests") +@TestMethodOrder(OrderAnnotation.class) +public class Am2901Test +{ + private TestableAm2901 am2901; + + @BeforeEach + void initialize() + { + createAndSetup(); + setInputsToZero(); + } + + void createAndSetup() + { + am2901 = new TestableAm2901Impl(); + am2901.setup(); + } + + void setRegistersToZero() + { + setInputsToZero(); + for (Register r : Register.values()) + { + setRegisterToZero(r); + } + } + + void setRegisterToZero(Register r) + { + am2901.setD("0000"); + am2901.setSrc(DZ); + am2901.setFunc(AND); + setRegOutput(r); + + am2901.assertFullCycleSuccess(); + } + + void setRegOutput(Register r) + { + if (r == Q) + { + am2901.setDest(QREG); + } else + { + am2901.setReg_B(r.toBitString()); + am2901.setDest(RAMF); + } + } + + void setInputsToZero() + { + am2901.setCarryIn("0"); + am2901.setQ_0("0"); + am2901.setQ_3("0"); + am2901.setRAM_0("0"); + am2901.setRAM_3("0"); + am2901.setReg_A("0000"); + am2901.setReg_B("0000"); + am2901.setD("0000"); + am2901.setSrc(AB); + am2901.setFunc(ADD); + am2901.setDest(QREG); +// am2901.setNotOutEnable("0"); TODO + am2901.clockOn(true); + am2901.assertRunSuccess(); + } + + @ParameterizedTest(name = "{0}") + @Order(1) + @DisplayName("Direct / high level access") + @EnumSource(Register.class) + void testDirectAccess(Register r) + { + assertEquals("UUUU", am2901.getDirectly(r)); + + am2901.setDirectly(r, "1011"); + + assertEquals("1011", am2901.getDirectly(r)); + } + + @ParameterizedTest(name = "{0}") + @Order(2) + @DisplayName("Setting each register to 0") + @EnumSource(Register.class) + void testSetToZero(Register r) + { + assertEquals("UUUU", am2901.getDirectly(r)); + + setRegisterToZero(r); + + assertEquals("0000", am2901.getDirectly(r)); + assertEquals("0000", am2901.getY()); + assertEquals("0", am2901.getCarryOut()); + assertEquals("0", am2901.getOverflow()); + assertEquals("0", am2901.getSign()); + assertEquals("1", am2901.getZero()); + } + + @Test + @Order(3) + @DisplayName("Setting all registers to 0") + void testSetAllToZero() + { + setRegistersToZero(); + + assertEquals("0000", am2901.getY()); + assertEquals("0", am2901.getCarryOut()); + assertEquals("0", am2901.getOverflow()); + assertEquals("0", am2901.getSign()); + assertEquals("1", am2901.getZero()); + assertEquals("0", am2901.getQ_0()); + assertEquals("0", am2901.getQ_3()); + assertEquals("0", am2901.getRAM_0()); + assertEquals("0", am2901.getRAM_3()); + + assertAll("register values", Register.stream().map(r -> () -> + { + assertEquals("0000", am2901.getDirectly(r), r.name()); + })); + } + + @Test + @Order(4) + @DisplayName("ADD operation") + void testADD() + { + am2901.setSrc(DA); + am2901.setFunc(ADD); + am2901.setDest(NOP); + am2901.setReg_A(r0.toBitString()); + + assertAll(getAll4BitPairs().map(xy -> () -> + { + am2901.setDirectly(r0, to4bitBin(xy.x)); + am2901.setD(to4bitBin(xy.y)); + + am2901.assertFullCycleSuccess(); + + int res32Bit = xy.x + xy.y; + int res4Bit = res32Bit & 0b1111; + int res32Bit_sgn = signed4ToSigned32(xy.x) + signed4ToSigned32(xy.y); + int res4Bit_sgn = signed4ToSigned32(res32Bit_sgn); + + assertAll("Result of " + xy.x + " + " + xy.y + " = " + res32Bit, + () -> assertEquals(to4bitBin(res32Bit), am2901.getY(), " Y"), + () -> assertEquals(to1bitBin(res4Bit == 0), am2901.getZero(), " F=0"), + () -> assertEquals(to1bitBin(res4Bit & 0b1000), am2901.getSign(), " F3"), + () -> assertEquals(to1bitBin(res32Bit > 15), am2901.getCarryOut(), " Cn+4"), + () -> assertEquals(to1bitBin(res4Bit_sgn != res32Bit_sgn), am2901.getOverflow(), " OVR")); + })); + } + + @Test + @Order(4) + @DisplayName("AND operation") + void testAND() + { + am2901.setSrc(DA); + am2901.setFunc(AND); + am2901.setDest(NOP); + am2901.setReg_A(r0.toBitString()); + + assertAll(getAll4BitPairs().map(xy -> () -> + { + am2901.setDirectly(r0, to4bitBin(xy.x)); + am2901.setD(to4bitBin(xy.y)); + + am2901.assertFullCycleSuccess(); + + int res32Bit = xy.x & xy.y; + + assertAll("Result of " + xy.x + " & " + xy.y + " = " + res32Bit, + () -> assertEquals(to4bitBin(res32Bit), am2901.getY(), " Y"), + () -> assertEquals(to1bitBin(res32Bit == 0), am2901.getZero(), " F=0"), + () -> assertEquals(to1bitBin(res32Bit & 0b1000), am2901.getSign(), " F3") +// () -> assertEquals(to1bitBin(res32Bit), am2901.getCarryOut(), " Cn+4"), // TODO +// () -> assertEquals(to1bitBin(res32Bit), am2901.getOverflow(), " OVR") // TODO + ); + })); + } + + @Test + @Order(4) + @DisplayName("OR operation") + void testOR() + { + am2901.setSrc(DA); + am2901.setFunc(OR); + am2901.setDest(NOP); + am2901.setReg_A(r0.toBitString()); + + assertAll(getAll4BitPairs().map(xy -> () -> + { + am2901.setDirectly(r0, to4bitBin(xy.x)); + am2901.setD(to4bitBin(xy.y)); + + am2901.assertFullCycleSuccess(); + + int res32Bit = xy.x | xy.y; + + assertAll("Result of " + xy.x + " | " + xy.y + " = " + res32Bit, + () -> assertEquals(to4bitBin(res32Bit), am2901.getY(), " Y"), + () -> assertEquals(to1bitBin(res32Bit == 0), am2901.getZero(), " F=0"), + () -> assertEquals(to1bitBin(res32Bit & 0b1000), am2901.getSign(), " F3") +// () -> assertEquals(to1bitBin(res32Bit != 0b1111), am2901.getCarryOut(), " Cn+4"), // TODO +// () -> assertEquals(to1bitBin(res32Bit != 0b1111), am2901.getOverflow(), " OVR") // TODO + ); + })); + } + + @Test + @Order(4) + @DisplayName("XOR operation") + void testXOR() + { + am2901.setSrc(DA); + am2901.setFunc(EXOR); + am2901.setDest(NOP); + am2901.setReg_A(r0.toBitString()); + + assertAll(getAll4BitPairs().map(xy -> () -> + { + am2901.setDirectly(r0, to4bitBin(xy.x)); + am2901.setD(to4bitBin(xy.y)); + + am2901.assertFullCycleSuccess(); + + int res32Bit = xy.x ^ xy.y; + + assertAll("Result of " + xy.x + " ^ " + xy.y + " = " + res32Bit, + () -> assertEquals(to4bitBin(res32Bit), am2901.getY(), " Y"), + () -> assertEquals(to1bitBin(res32Bit == 0), am2901.getZero(), " F=0"), + () -> assertEquals(to1bitBin(res32Bit & 0b1000), am2901.getSign(), " F3")); + })); + } + + @Test + @Order(4) + @DisplayName("SUB operation") + void testSUB() + { + am2901.setSrc(DA); + am2901.setCarryIn("1"); + am2901.setFunc(SUBR); + am2901.setDest(NOP); + am2901.setReg_A(r0.toBitString()); + + assertAll(getAll4BitPairs().map(xy -> () -> + { + am2901.setDirectly(r0, to4bitBin(xy.x)); + am2901.setD(to4bitBin(xy.y)); + + am2901.assertFullCycleSuccess(); + + int res32Bit = xy.x - xy.y; + int res4Bit = res32Bit & 0b1111; + int res32Bit_sgn = signed4ToSigned32(xy.x) - signed4ToSigned32(xy.y); + int res4Bit_sgn = signed4ToSigned32(res32Bit_sgn); + + assertAll("Result of " + xy.x + " - " + xy.y + " = " + res32Bit, + () -> assertEquals(to4bitBin(res32Bit), am2901.getY(), " Y"), + () -> assertEquals(to1bitBin(res4Bit == 0), am2901.getZero(), " F=0"), + () -> assertEquals(to1bitBin(res4Bit & 0b1000), am2901.getSign(), " F3"), + () -> assertEquals(to1bitBin(xy.x >= xy.y), am2901.getCarryOut(), " Cn+4"), + () -> assertEquals(to1bitBin(res4Bit_sgn != res32Bit_sgn), am2901.getOverflow(), " OVR")); + })); + } + + static Stream getAll4BitPairs() + { + return IntStream.range(0, 16).boxed().flatMap(x -> IntStream.range(0, 16).mapToObj(y -> new Point(x, y))); + } +} diff --git a/net.mograsim.logic.model.am2900/test/net/mograsim/logic/ui/am2900/Am2901Testbench.java b/net.mograsim.logic.model.am2900/test/net/mograsim/logic/ui/am2900/Am2901Testbench.java new file mode 100644 index 00000000..7c68cc1a --- /dev/null +++ b/net.mograsim.logic.model.am2900/test/net/mograsim/logic/ui/am2900/Am2901Testbench.java @@ -0,0 +1,98 @@ +package net.mograsim.logic.ui.am2900; + +import java.util.ArrayList; +import java.util.List; + +import net.mograsim.logic.model.SimpleLogicUIStandalone; +import net.mograsim.logic.model.model.ViewModelModifiable; +import net.mograsim.logic.model.model.components.GUIComponent; +import net.mograsim.logic.model.model.components.atomic.GUIAndGate; +import net.mograsim.logic.model.model.components.atomic.GUIBitDisplay; +import net.mograsim.logic.model.model.components.atomic.GUIManualSwitch; +import net.mograsim.logic.model.model.components.atomic.GUINotGate; +import net.mograsim.logic.model.model.components.atomic.TextComponent; +import net.mograsim.logic.model.model.wires.Pin; +import net.mograsim.logic.model.model.wires.WireCrossPoint; +import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator; +import net.mograsim.logic.model.util.ModellingTool; + +public class Am2901Testbench +{ + public static void main(String[] args) + { + SimpleLogicUIStandalone.executeVisualisation(Am2901Testbench::createTestbench); + } + + public static void createTestbench(ViewModelModifiable model) + { + GUIComponent comp = IndirectGUIComponentCreator.createComponent(model, "GUIAm2901"); + ModellingTool tool = ModellingTool.createFor(model); + + comp.moveTo(240, 0); + + GUIManualSwitch enable = new GUIManualSwitch(model); + WireCrossPoint wcp0 = new WireCrossPoint(model, 1); + GUINotGate not1 = new GUINotGate(model, 1); + GUINotGate not2 = new GUINotGate(model, 1); + GUINotGate not3 = new GUINotGate(model, 1); + GUIAndGate and = new GUIAndGate(model, 1); + tool.connect(wcp0, enable, ""); + tool.connect(wcp0, and, "A"); + tool.connect(wcp0, not1, "A"); + tool.connect(not1, not2, "Y", "A"); + tool.connect(not2, not3, "Y", "A"); + tool.connect(not3, and, "Y", "B"); + enable.moveTo(20, -32.5); + wcp0.moveTo(35, -26); + not1.moveTo(50, -20); + not2.moveTo(80, -20); + not3.moveTo(110, -20); + and.moveTo(135, -30); + Pin last = and.getPin("Y"); + + // guess which pins are outputs and which are inputs + // TODO this code exists three times... but it seems too "hacky" to put it in a helper class + List inputPinNames = new ArrayList<>(); + List outputPinNames = new ArrayList<>(); + for (Pin p : comp.getPins().values()) + if (p.getRelX() == 0) + inputPinNames.add(p.name); + else + outputPinNames.add(p.name); + + for (int i = 0; i < inputPinNames.size(); i++) + { + double x = 55 + 70 * (i % 2); + double y = 10 * i; + + WireCrossPoint wcp = new WireCrossPoint(model, 1); + GUIComponent d_ff = IndirectGUIComponentCreator.createComponent(model, "GUIdff"); + GUIManualSwitch sw = new GUIManualSwitch(model); + + tool.connect(last, wcp); + tool.connect(wcp, d_ff, "C"); + tool.connect(sw, d_ff, "", "D"); + tool.connect(d_ff, comp, "Q", inputPinNames.get(i)); + last = wcp.getPin(); + + TextComponent label = new TextComponent(model, inputPinNames.get(i)); + + sw.moveTo(x, y + 7.5); + wcp.moveTo(160, y); + d_ff.moveTo(170, y); + label.moveTo(x - 25, y + 15); + } + + for (int i = 0; i < outputPinNames.size(); i++) + { + double x = 300 + 75 * (i % 2); + double y = 10 * i - 2.5; + GUIBitDisplay bd = new GUIBitDisplay(model); + bd.moveTo(x, y); + tool.connect(bd.getInputPin(), comp, outputPinNames.get(i)); + + TextComponent label = new TextComponent(model, outputPinNames.get(i)); + label.moveTo(x + 50, y + 8); + } + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/test/net/mograsim/logic/ui/am2900/TestUtil.java b/net.mograsim.logic.model.am2900/test/net/mograsim/logic/ui/am2900/TestUtil.java new file mode 100644 index 00000000..937e566a --- /dev/null +++ b/net.mograsim.logic.model.am2900/test/net/mograsim/logic/ui/am2900/TestUtil.java @@ -0,0 +1,84 @@ +package net.mograsim.logic.ui.am2900; + +public final class TestUtil +{ + private TestUtil() + { + + } + + /** + * Transforms the last four bits of an int to a string that contains the binary ('1' and '0') representation of the 4 bits + * + * @author Christian Femers + */ + public static String to4bitBin(int x) + { + StringBuilder sb = new StringBuilder(4); + sb.append((x & 0b1000) == 0 ? '0' : '1'); + sb.append((x & 0b0100) == 0 ? '0' : '1'); + sb.append((x & 0b0010) == 0 ? '0' : '1'); + sb.append((x & 0b0001) == 0 ? '0' : '1'); + return sb.toString(); + } + + /** + * Transforms the given boolean to a string that contains the binary ('1' and '0') representation of the bit + * + * @author Christian Femers + */ + public static String to1bitBin(boolean bitIsSet) + { + return bitIsSet ? "1" : "0"; + } + + /** + * Transforms the given int to a string that contains the binary ('1' and '0') representation of the int. "0" is only returned when the + * int is equal to zero. + * + * @author Christian Femers + */ + public static String to1bitBin(int someInt) + { + return someInt != 0 ? "1" : "0"; + } + + /** + * Transforms a 4 bit signed integer (-8 to 7) to a int representing the same number. (Adding leading 1-bits if the 4 bit int is + * negative) + * + * @author Christian Femers + */ + public static int signed4ToSigned32(int signed4bit) + { + if ((signed4bit & 0b1000) > 0) + return signed4bit | 0xFF_FF_FF_F0; + return signed4bit & 0x00_00_00_0F; + } + + /** + * Transforms a 16 bit signed integer (-32768 to 32767 - a short) to a int representing the same number. (Adding leading 1-bits if the + * 16 bit int is negative) + * + * @author Christian Femers + */ + public static int signed16ToSigned32(int signed16bit) + { + return (short) signed16bit; + } + + /** + * Transforms the last n bits of an int to a string that contains the binary ('1' and '0') representation of the n bits + * + * @author Christian Femers + */ + public static String toNbitString(int x, int n) + { + StringBuilder sb = new StringBuilder(n); + for (int i = 0; i < n; i++) + { + sb.append((x >> i) & 1); + } + return sb.reverse().toString(); + } +} diff --git a/net.mograsim.logic.model.am2900/test/net/mograsim/logic/ui/am2900/TestableAm2901.java b/net.mograsim.logic.model.am2900/test/net/mograsim/logic/ui/am2900/TestableAm2901.java new file mode 100644 index 00000000..ad0a0b87 --- /dev/null +++ b/net.mograsim.logic.model.am2900/test/net/mograsim/logic/ui/am2900/TestableAm2901.java @@ -0,0 +1,131 @@ +package net.mograsim.logic.ui.am2900; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.util.Arrays; +import java.util.stream.Stream; + +public interface TestableAm2901 +{ + void setup(); + + Result run(); + + void setDest(Am2901_Dest dest); + + void setFunc(Am2901_Func func); + + void setSrc(Am2901_Src src); + + void setReg_A(String val_4_bit); + + void setReg_B(String val_4_bit); + + void setCarryIn(String val_1_bit); + + void setNotOutEnable(String val_1_bit); + + void setD(String val_4_bit); + + void setQ_0(String val_1_bit); + + void setQ_3(String val_1_bit); + + void setRAM_0(String val_1_bit); + + void setRAM_3(String val_1_bit); + + void clockOn(boolean isClockOn); + + void setDirectly(Register r, String val_4_bit); + + String getQ_0(); + + String getQ_3(); + + String getRAM_0(); + + String getRAM_3(); + + String getNotP(); + + String getNotG(); + + String getCarryOut(); + + String getSign(); + + String getZero(); + + String getOverflow(); + + String getY(); + + String getDirectly(Register r); + + default void assertRunSuccess() + { + assertEquals(Result.SUCCESS, run()); + } + + default void assertFullCycleSuccess() + { + assertRunSuccess(); + clockOn(false); + assertRunSuccess(); + clockOn(true); + assertRunSuccess(); + } + + public enum Result + { + SUCCESS, OUT_OF_TIME, ERROR; + } + + public enum Am2901_Dest + { + QREG, NOP, RAMA, RAMF, RAMQD, RAMD, RAMQU, RAMU; + + public boolean doesShift() + { + return ordinal() >= 4; + } + + public int getShiftDir() + { + return doesShift() ? (ordinal() < 6 ? -1 : 1) : 0; + } + + public int getI7() + { + return this.ordinal() >> 1 & 1; + } + } + + public enum Am2901_Func + { + ADD, SUBR, SUBS, OR, AND, NOTRS, EXOR, EXNOR; + } + + public enum Am2901_Src + { + AQ, AB, ZQ, ZB, ZA, DA, DQ, DZ; + } + + public enum Register + { + r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, rA, rB, rC, rD, rE, rF, Q; + + public String toBitString() + { + if (this.ordinal() > 0xF) + throw new UnsupportedOperationException(); + return TestUtil.to4bitBin(this.ordinal()); + } + + public static Stream stream() + { + return Arrays.stream(values()); + } + } +} diff --git a/net.mograsim.logic.model.am2900/test/net/mograsim/logic/ui/am2900/TestableAm2901Impl.java b/net.mograsim.logic.model.am2900/test/net/mograsim/logic/ui/am2900/TestableAm2901Impl.java new file mode 100644 index 00000000..7bbc398c --- /dev/null +++ b/net.mograsim.logic.model.am2900/test/net/mograsim/logic/ui/am2900/TestableAm2901Impl.java @@ -0,0 +1,381 @@ +package net.mograsim.logic.ui.am2900; + +import static org.junit.jupiter.api.Assertions.fail; + +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.LinkedList; +import java.util.List; +import java.util.Objects; +import java.util.Queue; +import java.util.Set; +import java.util.TreeSet; + +import net.mograsim.logic.core.components.BitDisplay; +import net.mograsim.logic.core.components.ManualSwitch; +import net.mograsim.logic.core.timeline.Timeline; +import net.mograsim.logic.core.types.Bit; +import net.mograsim.logic.core.types.BitVector; +import net.mograsim.logic.core.types.BitVector.BitVectorMutator; +import net.mograsim.logic.model.model.ViewModel; +import net.mograsim.logic.model.model.ViewModelModifiable; +import net.mograsim.logic.model.model.components.GUIComponent; +import net.mograsim.logic.model.model.components.atomic.GUIBitDisplay; +import net.mograsim.logic.model.model.components.atomic.GUIManualSwitch; +import net.mograsim.logic.model.model.components.mi.nandbased.am2901.GUIAm2901; +import net.mograsim.logic.model.model.components.submodels.SubmodelComponent; +import net.mograsim.logic.model.model.wires.GUIWire; +import net.mograsim.logic.model.model.wires.Pin; +import net.mograsim.logic.model.modeladapter.LogicModelParameters; +import net.mograsim.logic.model.modeladapter.ViewLogicModelAdapter; + +public class TestableAm2901Impl implements TestableAm2901 +{ + private GUIComponent am2901; + private Timeline timeline; + private ManualSwitch I8, I7, I6, I5, I4, I3, I2, I1, I0; + private ManualSwitch C; + private ManualSwitch Cn; + private ManualSwitch D1, D2, D3, D4; + private ManualSwitch A0, A1, A2, A3; + private ManualSwitch B0, B1, B2, B3; + private ManualSwitch IRAMn, IRAMn_3, IQn, IQn_3; + private BitDisplay Y1, Y2, Y3, Y4; + private BitDisplay F_0, Cn_4, OVR, F3; + private BitDisplay ORAMn, ORAMn_3, OQn, OQn_3; + + private Set wireDebugChangeSet; + private boolean debugWires = false; + public int debugEventThreshold = 10_000; + public int debugEventCount = 500; + + private int eventCounter; + + @Override + public Result run() + { + // Normal execution until completion or eventLimit + int eventLimit = debugEventThreshold; + eventCounter = 0; + debugWires = false; + while (eventCounter < eventLimit) + { + timeline.executeNext(); + if (!timeline.hasNext()) + { +// System.out.println("run() took " + eventCounter + " events"); + return Result.SUCCESS; + } + } + // Start debugging if event limit is reached + debugWires = true; + wireDebugChangeSet = new TreeSet<>(); + Set oldChangeSet; + // observe wire changes to detect, if we are really stuck in an endless loop + do + { + eventLimit += debugEventCount; + oldChangeSet = wireDebugChangeSet; + wireDebugChangeSet = new TreeSet<>(); + while (eventCounter < eventLimit) + { + timeline.executeNext(); + if (!timeline.hasNext()) + { + // no endless loop, but more events needed than expected + System.out.println("run() took longer than expected: " + eventCounter); + return Result.SUCCESS; + } + } + } while (!oldChangeSet.equals(wireDebugChangeSet)); + // if stuck, abort execution and print wires + System.err.print("Problematic Wire updates:"); + wireDebugChangeSet.forEach(System.out::println); + System.err.println("run() failed: " + eventCounter); + return Result.OUT_OF_TIME; + } + + @SuppressWarnings("unused") + @Override + public void setup() + { + // Create view model + ViewModelModifiable viewModel = new ViewModelModifiable(); + // TODO replace with deserialized version as soon as high level states work for deserialized components + am2901 = new GUIAm2901(viewModel); +// am2901 = IndirectGUIComponentCreator.createComponent(viewModel, "GUIAm2901"); + // guess which pins are outputs and which are inputs + // TODO this code exists three times... but it seems too "hacky" to put it in a helper class + List inputPinNames = new ArrayList<>(); + List outputPinNames = new ArrayList<>(); + for (Pin p : am2901.getPins().values()) + if (p.getRelX() == 0) + inputPinNames.add(p.name); + else + outputPinNames.add(p.name); + // Get switches + HashMap idSwitchMap = new HashMap<>(); + for (String id : inputPinNames) + { + GUIManualSwitch sw = new GUIManualSwitch(viewModel); + new GUIWire(viewModel, am2901.getPin(id), sw.getOutputPin()); + idSwitchMap.put(id, sw); + } + // Get displays + HashMap idDisplayMap = new HashMap<>(); + for (String id : outputPinNames) + { + GUIBitDisplay bd = new GUIBitDisplay(viewModel); +// bd.addRedrawListener(() -> System.out.println(id + " " + bd.getBitDisplay().getDisplayedValue())); + new GUIWire(viewModel, am2901.getPin(id), bd.getInputPin()); + idDisplayMap.put(id, bd); + } + // Create logic model + LogicModelParameters params = new LogicModelParameters(); + params.gateProcessTime = 50; + params.wireTravelTime = 10; + timeline = ViewLogicModelAdapter.convert(viewModel, params); + // Bind switches/displays to this test class + for (var entry : idSwitchMap.entrySet()) + setField(entry.getKey().replaceAll("\\+|=", "_"), entry.getValue().getManualSwitch()); + for (var entry : idDisplayMap.entrySet()) + setField(entry.getKey().replaceAll("\\+|=", "_"), entry.getValue().getBitDisplay()); + + // Debug code + HashSet wiresIncludingSubmodels = new HashSet<>(); + Queue modelsToIterate = new LinkedList<>(); + modelsToIterate.add(viewModel); + while (modelsToIterate.size() > 0) + { + ViewModel model = modelsToIterate.poll(); + wiresIncludingSubmodels.addAll(model.getWires()); + for (GUIComponent comp : model.getComponentsByName().values()) + if (comp instanceof SubmodelComponent) + modelsToIterate.offer(((SubmodelComponent) comp).submodel); + } + wiresIncludingSubmodels.forEach(w -> w.addRedrawListener(() -> + { + if (debugWires) + { + wireDebugChangeSet.add(w.toString()); + } + })); + timeline.addEventAddedListener(te -> eventCounter++); + } + + @Override + public void setDest(Am2901_Dest dest) + { + var bits = of(dest.ordinal(), 3); + I8.setToValueOf(bits.getLSBit(2)); + I7.setToValueOf(bits.getLSBit(1)); + I6.setToValueOf(bits.getLSBit(0)); + } + + @Override + public void setFunc(Am2901_Func func) + { + var bits = of(func.ordinal(), 3); + I5.setToValueOf(bits.getLSBit(2)); + I4.setToValueOf(bits.getLSBit(1)); + I3.setToValueOf(bits.getLSBit(0)); + } + + @Override + public void setSrc(Am2901_Src src) + { + var bits = of(src.ordinal(), 3); + I2.setToValueOf(bits.getLSBit(2)); + I1.setToValueOf(bits.getLSBit(1)); + I0.setToValueOf(bits.getLSBit(0)); + } + + @Override + public void setReg_A(String val_4_bit) + { + var bits = BitVector.parse(val_4_bit); + A3.setToValueOf(bits.getLSBit(3)); + A2.setToValueOf(bits.getLSBit(2)); + A1.setToValueOf(bits.getLSBit(1)); + A0.setToValueOf(bits.getLSBit(0)); + } + + @Override + public void setReg_B(String val_4_bit) + { + var bits = BitVector.parse(val_4_bit); + B3.setToValueOf(bits.getLSBit(3)); + B2.setToValueOf(bits.getLSBit(2)); + B1.setToValueOf(bits.getLSBit(1)); + B0.setToValueOf(bits.getLSBit(0)); + } + + @Override + public void setCarryIn(String val_1_bit) + { + Cn.setToValueOf(Bit.parse(val_1_bit)); + } + + @Override + public void setNotOutEnable(String val_1_bit) + { + throw new UnsupportedOperationException(); // TODO + } + + @Override + public void setD(String val_4_bit) + { + var bits = BitVector.parse(val_4_bit); + D4.setToValueOf(bits.getLSBit(3)); + D3.setToValueOf(bits.getLSBit(2)); + D2.setToValueOf(bits.getLSBit(1)); + D1.setToValueOf(bits.getLSBit(0)); + } + + @Override + public void setQ_0(String val_1_bit) + { + IQn.setToValueOf(Bit.parse(val_1_bit)); + } + + @Override + public void setQ_3(String val_1_bit) + { + IQn_3.setToValueOf(Bit.parse(val_1_bit)); + } + + @Override + public void setRAM_0(String val_1_bit) + { + IRAMn.setToValueOf(Bit.parse(val_1_bit)); + } + + @Override + public void setRAM_3(String val_1_bit) + { + IRAMn_3.setToValueOf(Bit.parse(val_1_bit)); + } + + @Override + public void clockOn(boolean isClockOn) + { + C.setState(isClockOn); + } + + @Override + public String getQ_0() + { + return OQn.getDisplayedValue().toString(); + } + + @Override + public String getQ_3() + { + return OQn_3.getDisplayedValue().toString(); + } + + @Override + public String getRAM_0() + { + return ORAMn.getDisplayedValue().toString(); + } + + @Override + public String getRAM_3() + { + return ORAMn_3.getDisplayedValue().toString(); + } + + @Override + public String getNotP() + { + throw new UnsupportedOperationException(); // TODO + } + + @Override + public String getNotG() + { + throw new UnsupportedOperationException(); // TODO + } + + @Override + public String getCarryOut() + { + return Cn_4.getDisplayedValue().toString(); + } + + @Override + public String getSign() + { + return F3.getDisplayedValue().toString(); + } + + @Override + public String getZero() + { + return F_0.getDisplayedValue().toString(); + } + + @Override + public String getOverflow() + { + return OVR.getDisplayedValue().toString(); + } + + @Override + public String getY() + { + var y3 = Y4.getDisplayedValue(); + var y2 = Y3.getDisplayedValue(); + var y1 = Y2.getDisplayedValue(); + var y0 = Y1.getDisplayedValue(); + return y3.concat(y2).concat(y1).concat(y0).toString(); + } + + private void setField(String name, Object value) + { + try + { + Field f = TestableAm2901Impl.class.getDeclaredField(name); + f.setAccessible(true); + f.set(this, Objects.requireNonNull(value)); + } + catch (Exception e) + { + fail(e); + } + } + + private static BitVector of(int value, int length) + { + BitVectorMutator mutator = BitVectorMutator.ofLength(length); + int val = value; + for (int i = length - 1; i >= 0; i--) + { + mutator.setMSBit(i, Bit.lastBitOf(val)); + val >>>= 1; + } + return mutator.toBitVector(); + } + + @Override + public void setDirectly(Register r, String val_4_bit) + { + am2901.setHighLevelState(regToStateID(r), BitVector.parse(val_4_bit)); + } + + @Override + public String getDirectly(Register r) + { + return ((BitVector) am2901.getHighLevelState(regToStateID(r))).toString(); + } + + private static String regToStateID(Register r) + { + if (r == Register.Q) + return "qreg.q"; + return "regs.c" + r.toBitString() + ".q"; + } +} diff --git a/net.mograsim.logic.model.editor/.classpath b/net.mograsim.logic.model.editor/.classpath new file mode 100644 index 00000000..c4b0fff7 --- /dev/null +++ b/net.mograsim.logic.model.editor/.classpath @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/net.mograsim.logic.model.editor/.gitignore b/net.mograsim.logic.model.editor/.gitignore new file mode 100644 index 00000000..ae3c1726 --- /dev/null +++ b/net.mograsim.logic.model.editor/.gitignore @@ -0,0 +1 @@ +/bin/ diff --git a/net.mograsim.logic.model.editor/.project b/net.mograsim.logic.model.editor/.project new file mode 100644 index 00000000..4f792a69 --- /dev/null +++ b/net.mograsim.logic.model.editor/.project @@ -0,0 +1,28 @@ + + + net.mograsim.logic.model.editor + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.pde.PluginNature + + diff --git a/net.mograsim.logic.model.editor/.settings/org.eclipse.jdt.core.prefs b/net.mograsim.logic.model.editor/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 00000000..e2561585 --- /dev/null +++ b/net.mograsim.logic.model.editor/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,12 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=11 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=11 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.release=enabled +org.eclipse.jdt.core.compiler.source=11 diff --git a/net.mograsim.logic.model.editor/META-INF/MANIFEST.MF b/net.mograsim.logic.model.editor/META-INF/MANIFEST.MF new file mode 100644 index 00000000..40d06541 --- /dev/null +++ b/net.mograsim.logic.model.editor/META-INF/MANIFEST.MF @@ -0,0 +1,13 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: Editor +Bundle-SymbolicName: net.mograsim.logic.model.editor +Bundle-Version: 0.1.0.qualifier +Export-Package: net.mograsim.logic.model.editor, + net.mograsim.logic.model.editor.handles, + net.mograsim.logic.model.editor.states +Require-Bundle: net.mograsim.logic.model;bundle-version="0.1.0", + net.mograsim.preferences;bundle-version="0.1.0" +Bundle-RequiredExecutionEnvironment: JavaSE-11 +Automatic-Module-Name: net.mograsim.logic.ui +Bundle-Vendor: Mograsim Team diff --git a/net.mograsim.logic.model.editor/build.properties b/net.mograsim.logic.model.editor/build.properties new file mode 100644 index 00000000..d1763276 --- /dev/null +++ b/net.mograsim.logic.model.editor/build.properties @@ -0,0 +1,3 @@ +source.. = src/ +bin.includes = META-INF/,\ + .,\ \ No newline at end of file diff --git a/net.mograsim.logic.model.editor/components/GUI_rsLatch.json b/net.mograsim.logic.model.editor/components/GUI_rsLatch.json new file mode 100644 index 00000000..a91b8159 --- /dev/null +++ b/net.mograsim.logic.model.editor/components/GUI_rsLatch.json @@ -0,0 +1,222 @@ +mograsim version: 0.1.3 +{ + "width": 35.0, + "height": 20.0, + "interfacePins": [ + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Q", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "_Q", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "_R", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "_S", + "logicWidth": 1 + } + ], + "submodel": { + "innerScale": 0.4, + "subComps": [ + { + "pos": { + "x": 40.0, + "y": 12.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#1", + "params": 1 + }, + { + "pos": { + "x": 10.0, + "y": 7.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#0", + "params": 1 + }, + { + "pos": { + "x": 64.0, + "y": 36.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#1", + "params": 1 + }, + { + "pos": { + "x": 34.0, + "y": 16.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#0", + "params": 1 + } + ], + "innerWires": [ + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "_S" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "_R" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "B" + }, + "path": [ + { + "x": 35.0, + "y": 37.5 + }, + { + "x": 35.0, + "y": 27.5 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#0", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUINandGate#1", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "path": [ + { + "x": 65.0, + "y": 22.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "B" + }, + "path": [ + { + "x": 65.0, + "y": 42.5 + }, + { + "x": 5.0, + "y": 42.5 + }, + { + "x": 5.0, + "y": 22.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Q" + }, + "path": [ + { + "x": 35.0, + "y": 17.5 + }, + { + "x": 35.0, + "y": 7.5 + }, + { + "x": 65.0, + "y": 7.5 + }, + { + "x": 65.0, + "y": 12.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "_Q" + }, + "path": [] + } + ] + }, + "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", + "symbolRendererParams": { + "centerText": "_rsLatch", + "horizontalComponentCenter": 17.5, + "centerTextHeight": 5.0, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.editor/components/GUIand.json b/net.mograsim.logic.model.editor/components/GUIand.json new file mode 100644 index 00000000..58772918 --- /dev/null +++ b/net.mograsim.logic.model.editor/components/GUIand.json @@ -0,0 +1,146 @@ +mograsim version: 0.1.3 +{ + "width": 35.0, + "height": 20.0, + "interfacePins": [ + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "A", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "B", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Y", + "logicWidth": 1 + } + ], + "submodel": { + "innerScale": 0.4, + "subComps": [ + { + "pos": { + "x": 50.0, + "y": 15.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#1", + "params": 1 + }, + { + "pos": { + "x": 20.0, + "y": 15.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#0", + "params": 1 + }, + { + "pos": { + "x": 44.0, + "y": 24.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#0", + "params": 1 + } + ], + "innerWires": [ + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "A" + } + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "B" + } + }, + { + "pin1": { + "compName": "GUINandGate#0", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "A" + }, + "path": [ + { + "x": 45.0, + "y": 20.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "B" + }, + "path": [ + { + "x": 45.0, + "y": 30.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#1", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y" + } + } + ] + }, + "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", + "symbolRendererParams": { + "centerText": "GUIand", + "horizontalComponentCenter": 17.5, + "centerTextHeight": 5.0, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.editor/components/GUIand41.json b/net.mograsim.logic.model.editor/components/GUIand41.json new file mode 100644 index 00000000..973a4c9d --- /dev/null +++ b/net.mograsim.logic.model.editor/components/GUIand41.json @@ -0,0 +1,328 @@ +mograsim version: 0.1.3 +{ + "width": 35.0, + "height": 50.0, + "interfacePins": [ + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "A1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "A2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "A3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 45.0 + }, + "name": "B", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 35.0 + }, + "name": "A4", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Y1", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "Y2", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 25.0 + }, + "name": "Y3", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 35.0 + }, + "name": "Y4", + "logicWidth": 1 + } + ], + "submodel": { + "innerScale": 0.4, + "subComps": [ + { + "pos": { + "x": 24.0, + "y": 71.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#1", + "params": 1 + }, + { + "pos": { + "x": 24.0, + "y": 46.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#0", + "params": 1 + }, + { + "pos": { + "x": 24.0, + "y": 96.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#2", + "params": 1 + }, + { + "pos": { + "x": 30.0, + "y": 7.5 + }, + "id": "GUIand", + "name": "GUIand#0" + }, + { + "pos": { + "x": 30.0, + "y": 57.5 + }, + "id": "GUIand", + "name": "GUIand#2" + }, + { + "pos": { + "x": 30.0, + "y": 32.5 + }, + "id": "GUIand", + "name": "GUIand#1" + }, + { + "pos": { + "x": 30.0, + "y": 82.5 + }, + "id": "GUIand", + "name": "GUIand#3" + } + ], + "innerWires": [ + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A1" + }, + "pin2": { + "compName": "GUIand#0", + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A2" + }, + "pin2": { + "compName": "GUIand#1", + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A3" + }, + "pin2": { + "compName": "GUIand#2", + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A4" + }, + "pin2": { + "compName": "GUIand#3", + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B" + }, + "pin2": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "path": [ + { + "x": 25.0, + "y": 112.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUIand#3", + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUIand#2", + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUIand#1", + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUIand#0", + "pinName": "B" + }, + "path": [ + { + "x": 25.0, + "y": 22.5 + } + ] + }, + { + "pin1": { + "compName": "GUIand#0", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y1" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIand#1", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y2" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIand#2", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y3" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIand#3", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y4" + }, + "path": [] + } + ] + }, + "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", + "symbolRendererParams": { + "centerText": "GUIand41", + "horizontalComponentCenter": 17.5, + "centerTextHeight": 5.0, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.editor/components/GUIandor414.json b/net.mograsim.logic.model.editor/components/GUIandor414.json new file mode 100644 index 00000000..5cadf0f6 --- /dev/null +++ b/net.mograsim.logic.model.editor/components/GUIandor414.json @@ -0,0 +1,487 @@ +mograsim version: 0.1.3 +{ + "width": 35.0, + "height": 90.0, + "interfacePins": [ + { + "location": { + "x": 0.0, + "y": 85.0 + }, + "name": "B", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "C1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "C2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "C3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 45.0 + }, + "name": "A1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 35.0 + }, + "name": "C4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 55.0 + }, + "name": "A2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 65.0 + }, + "name": "A3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 75.0 + }, + "name": "A4", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Y1", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "Y2", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 25.0 + }, + "name": "Y3", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 35.0 + }, + "name": "Y4", + "logicWidth": 1 + } + ], + "submodel": { + "innerScale": 0.4, + "subComps": [ + { + "pos": { + "x": 35.0, + "y": 37.5 + }, + "id": "GUIor_4", + "name": "GUIor_4#0" + }, + { + "pos": { + "x": 15.0, + "y": 137.5 + }, + "id": "GUIand41", + "name": "GUIand41#0" + } + ], + "innerWires": [ + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A1" + }, + "pin2": { + "compName": "GUIand41#0", + "pinName": "A1" + }, + "path": [ + { + "x": 10.0, + "y": 112.5 + }, + { + "x": 10.0, + "y": 142.5 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A2" + }, + "pin2": { + "compName": "GUIand41#0", + "pinName": "A2" + }, + "path": [ + { + "x": 5.0, + "y": 137.5 + }, + { + "x": 5.0, + "y": 152.5 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A3" + }, + "pin2": { + "compName": "GUIand41#0", + "pinName": "A3" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A4" + }, + "pin2": { + "compName": "GUIand41#0", + "pinName": "A4" + }, + "path": [ + { + "x": 5.0, + "y": 187.5 + }, + { + "x": 5.0, + "y": 172.5 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B" + }, + "pin2": { + "compName": "GUIand41#0", + "pinName": "B" + }, + "path": [ + { + "x": 10.0, + "y": 212.5 + }, + { + "x": 10.0, + "y": 182.5 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "C1" + }, + "pin2": { + "compName": "GUIor_4#0", + "pinName": "A1" + }, + "path": [ + { + "x": 10.0, + "y": 12.5 + }, + { + "x": 10.0, + "y": 42.5 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "C2" + }, + "pin2": { + "compName": "GUIor_4#0", + "pinName": "A2" + }, + "path": [ + { + "x": 5.0, + "y": 37.5 + }, + { + "x": 5.0, + "y": 52.5 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "C3" + }, + "pin2": { + "compName": "GUIor_4#0", + "pinName": "A3" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "C4" + }, + "pin2": { + "compName": "GUIor_4#0", + "pinName": "A4" + }, + "path": [ + { + "x": 5.0, + "y": 87.5 + }, + { + "x": 5.0, + "y": 72.5 + } + ] + }, + { + "pin1": { + "compName": "GUIand41#0", + "pinName": "Y1" + }, + "pin2": { + "compName": "GUIor_4#0", + "pinName": "B1" + }, + "path": [ + { + "x": 70.0, + "y": 142.5 + }, + { + "x": 70.0, + "y": 120.0 + }, + { + "x": 30.0, + "y": 120.0 + }, + { + "x": 30.0, + "y": 82.5 + } + ] + }, + { + "pin1": { + "compName": "GUIand41#0", + "pinName": "Y2" + }, + "pin2": { + "compName": "GUIor_4#0", + "pinName": "B2" + }, + "path": [ + { + "x": 65.0, + "y": 152.5 + }, + { + "x": 65.0, + "y": 125.0 + }, + { + "x": 25.0, + "y": 125.0 + }, + { + "x": 25.0, + "y": 92.5 + } + ] + }, + { + "pin1": { + "compName": "GUIand41#0", + "pinName": "Y3" + }, + "pin2": { + "compName": "GUIor_4#0", + "pinName": "B3" + }, + "path": [ + { + "x": 60.0, + "y": 162.5 + }, + { + "x": 60.0, + "y": 130.0 + }, + { + "x": 20.0, + "y": 130.0 + }, + { + "x": 20.0, + "y": 102.5 + } + ] + }, + { + "pin1": { + "compName": "GUIand41#0", + "pinName": "Y4" + }, + "pin2": { + "compName": "GUIor_4#0", + "pinName": "B4" + }, + "path": [ + { + "x": 55.0, + "y": 172.5 + }, + { + "x": 55.0, + "y": 135.0 + }, + { + "x": 15.0, + "y": 135.0 + }, + { + "x": 15.0, + "y": 112.5 + } + ] + }, + { + "pin1": { + "compName": "GUIor_4#0", + "pinName": "Y1" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y1" + }, + "path": [ + { + "x": 75.0, + "y": 42.5 + }, + { + "x": 75.0, + "y": 12.5 + } + ] + }, + { + "pin1": { + "compName": "GUIor_4#0", + "pinName": "Y2" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y2" + }, + "path": [ + { + "x": 80.0, + "y": 52.5 + }, + { + "x": 80.0, + "y": 37.5 + } + ] + }, + { + "pin1": { + "compName": "GUIor_4#0", + "pinName": "Y3" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y3" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIor_4#0", + "pinName": "Y4" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y4" + }, + "path": [ + { + "x": 80.0, + "y": 72.5 + }, + { + "x": 80.0, + "y": 87.5 + } + ] + } + ] + }, + "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", + "symbolRendererParams": { + "centerText": "GUIandor414", + "horizontalComponentCenter": 17.5, + "centerTextHeight": 5.0, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.editor/components/GUIdemux2.json b/net.mograsim.logic.model.editor/components/GUIdemux2.json new file mode 100644 index 00000000..5ded84b7 --- /dev/null +++ b/net.mograsim.logic.model.editor/components/GUIdemux2.json @@ -0,0 +1,511 @@ +mograsim version: 0.1.3 +{ + "width": 35.0, + "height": 40.0, + "interfacePins": [ + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Y00", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 35.0 + }, + "name": "Y11", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 25.0 + }, + "name": "Y10", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "Y01", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "S0", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "S1", + "logicWidth": 1 + } + ], + "submodel": { + "innerScale": 0.4, + "subComps": [ + { + "pos": { + "x": 10.0, + "y": 27.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#1", + "params": 1 + }, + { + "pos": { + "x": 10.0, + "y": 2.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#0", + "params": 1 + }, + { + "pos": { + "x": 40.0, + "y": 2.5 + }, + "id": "GUIand", + "name": "GUIand#0" + }, + { + "pos": { + "x": 40.0, + "y": 52.5 + }, + "id": "GUIand", + "name": "GUIand#2" + }, + { + "pos": { + "x": 40.0, + "y": 27.5 + }, + "id": "GUIand", + "name": "GUIand#1" + }, + { + "pos": { + "x": 40.0, + "y": 77.5 + }, + "id": "GUIand", + "name": "GUIand#3" + }, + { + "pos": { + "x": 6.5, + "y": 16.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#1", + "params": 1 + }, + { + "pos": { + "x": 6.5, + "y": 11.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#0", + "params": 1 + }, + { + "pos": { + "x": 4.0, + "y": 36.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#3", + "params": 1 + }, + { + "pos": { + "x": 36.5, + "y": 61.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#2", + "params": 1 + }, + { + "pos": { + "x": 31.5, + "y": 66.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#5", + "params": 1 + }, + { + "pos": { + "x": 4.0, + "y": 41.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#4", + "params": 1 + }, + { + "pos": { + "x": 34.0, + "y": 36.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#7", + "params": 1 + }, + { + "pos": { + "x": 31.5, + "y": 11.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#6", + "params": 1 + } + ], + "innerWires": [ + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "S0" + }, + "pin2": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "S1" + }, + "pin2": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "A" + }, + "path": [ + { + "x": 7.5, + "y": 7.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "A" + }, + "path": [ + { + "x": 5.0, + "y": 32.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "path": [ + { + "x": 7.5, + "y": 62.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "path": [ + { + "x": 5.0, + "y": 67.5 + }, + { + "x": 32.5, + "y": 67.5 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#0", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUINandGate#1", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "pin2": { + "compName": "GUIand#0", + "pinName": "A" + }, + "path": [ + { + "x": 32.5, + "y": 7.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "pin2": { + "compName": "GUIand#0", + "pinName": "B" + }, + "path": [ + { + "x": 35.0, + "y": 17.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUIand#1", + "pinName": "A" + }, + "path": [ + { + "x": 37.5, + "y": 32.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "pin2": { + "compName": "GUIand#1", + "pinName": "B" + }, + "path": [ + { + "x": 35.0, + "y": 42.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "pin2": { + "compName": "GUIand#2", + "pinName": "A" + }, + "path": [ + { + "x": 32.5, + "y": 57.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "pin2": { + "compName": "GUIand#2", + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUIand#3", + "pinName": "A" + }, + "path": [ + { + "x": 37.5, + "y": 82.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "pin2": { + "compName": "GUIand#3", + "pinName": "B" + }, + "path": [ + { + "x": 32.5, + "y": 92.5 + } + ] + }, + { + "pin1": { + "compName": "GUIand#0", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y00" + } + }, + { + "pin1": { + "compName": "GUIand#1", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y01" + } + }, + { + "pin1": { + "compName": "GUIand#2", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y10" + } + }, + { + "pin1": { + "compName": "GUIand#3", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y11" + } + } + ] + }, + "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", + "symbolRendererParams": { + "centerText": "GUIdemux2", + "horizontalComponentCenter": 17.5, + "centerTextHeight": 5.0, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.editor/components/GUIdff.json b/net.mograsim.logic.model.editor/components/GUIdff.json new file mode 100644 index 00000000..55151f8b --- /dev/null +++ b/net.mograsim.logic.model.editor/components/GUIdff.json @@ -0,0 +1,328 @@ +mograsim version: 0.1.3 +{ + "width": 35.0, + "height": 20.0, + "interfacePins": [ + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Q", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "_Q", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "C", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "D", + "logicWidth": 1 + } + ], + "submodel": { + "innerScale": 0.2, + "subComps": [ + { + "pos": { + "x": 40.0, + "y": 10.0 + }, + "id": "GUI_rsLatch", + "name": "GUI_rsLatch#0" + }, + { + "pos": { + "x": 40.0, + "y": 40.0 + }, + "id": "GUInand3", + "name": "GUInand3#0" + }, + { + "pos": { + "x": 120.0, + "y": 60.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#0", + "params": 1 + }, + { + "pos": { + "x": 120.0, + "y": 30.0 + }, + "id": "GUI_rsLatch", + "name": "GUI_rsLatch#1" + }, + { + "pos": { + "x": 19.0, + "y": 64.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#1", + "params": 1 + }, + { + "pos": { + "x": 9.0, + "y": 24.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#0", + "params": 1 + }, + { + "pos": { + "x": 99.0, + "y": 44.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#3", + "params": 1 + }, + { + "pos": { + "x": 99.0, + "y": 34.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#2", + "params": 1 + } + ], + "innerWires": [ + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "C" + }, + "pin2": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUI_rsLatch#0", + "pinName": "_R" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUInand3#0", + "pinName": "B" + }, + "path": [ + { + "x": 10.0, + "y": 55.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "D" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUINandGate#0", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "path": [ + { + "x": 145.0, + "y": 70.0 + }, + { + "x": 145.0, + "y": 85.0 + }, + { + "x": 20.0, + "y": 85.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUI_rsLatch#0", + "pinName": "_S" + }, + "path": [ + { + "x": 20.0, + "y": 15.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUInand3#0", + "pinName": "C" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUI_rsLatch#0", + "pinName": "_Q" + }, + "pin2": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "path": [ + { + "x": 100.0, + "y": 25.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUInand3#0", + "pinName": "A" + }, + "path": [ + { + "x": 30.0, + "y": 35.0 + }, + { + "x": 30.0, + "y": 45.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUI_rsLatch#1", + "pinName": "_S" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUInand3#0", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "GUI_rsLatch#1", + "pinName": "_R" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "A" + }, + "path": [ + { + "x": 100.0, + "y": 65.0 + } + ] + }, + { + "pin1": { + "compName": "GUI_rsLatch#1", + "pinName": "Q" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Q" + } + }, + { + "pin1": { + "compName": "GUI_rsLatch#1", + "pinName": "_Q" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "_Q" + } + } + ] + }, + "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", + "symbolRendererParams": { + "centerText": "GUIdff", + "horizontalComponentCenter": 17.5, + "centerTextHeight": 5.0, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.editor/components/GUIdlatch.json b/net.mograsim.logic.model.editor/components/GUIdlatch.json new file mode 100644 index 00000000..69562cea --- /dev/null +++ b/net.mograsim.logic.model.editor/components/GUIdlatch.json @@ -0,0 +1,238 @@ +mograsim version: 0.1.3 +{ + "width": 35.0, + "height": 20.0, + "interfacePins": [ + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Q", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "_Q", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "D", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "E", + "logicWidth": 1 + } + ], + "submodel": { + "innerScale": 0.4, + "subComps": [ + { + "pos": { + "x": 15.0, + "y": 27.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#1", + "params": 1 + }, + { + "pos": { + "x": 45.0, + "y": 7.5 + }, + "id": "GUI_rsLatch", + "name": "GUI_rsLatch#0" + }, + { + "pos": { + "x": 10.0, + "y": 2.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#0", + "params": 1 + }, + { + "pos": { + "x": 34.0, + "y": 11.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#1", + "params": 1 + }, + { + "pos": { + "x": 4.0, + "y": 36.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#0", + "params": 1 + } + ], + "innerWires": [ + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "D" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "A" + } + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "E" + }, + "pin2": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "B" + }, + "path": [ + { + "x": 5.0, + "y": 17.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "B" + }, + "path": [ + { + "x": 5.0, + "y": 42.5 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#0", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "A" + }, + "path": [ + { + "x": 35.0, + "y": 25.0 + }, + { + "x": 10.0, + "y": 25.0 + }, + { + "x": 10.0, + "y": 32.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUI_rsLatch#0", + "pinName": "_S" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUINandGate#1", + "pinName": "Y" + }, + "pin2": { + "compName": "GUI_rsLatch#0", + "pinName": "_R" + }, + "path": [ + { + "x": 40.0, + "y": 37.5 + }, + { + "x": 40.0, + "y": 22.5 + } + ] + }, + { + "pin1": { + "compName": "GUI_rsLatch#0", + "pinName": "Q" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Q" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUI_rsLatch#0", + "pinName": "_Q" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "_Q" + } + } + ] + }, + "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", + "symbolRendererParams": { + "centerText": "GUIdlatch", + "horizontalComponentCenter": 17.5, + "centerTextHeight": 5.0, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.editor/components/GUIdlatch4.json b/net.mograsim.logic.model.editor/components/GUIdlatch4.json new file mode 100644 index 00000000..29f4ac0f --- /dev/null +++ b/net.mograsim.logic.model.editor/components/GUIdlatch4.json @@ -0,0 +1,328 @@ +mograsim version: 0.1.3 +{ + "width": 35.0, + "height": 50.0, + "interfacePins": [ + { + "location": { + "x": 0.0, + "y": 35.0 + }, + "name": "D4", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Q1", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "Q2", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 25.0 + }, + "name": "Q3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 45.0 + }, + "name": "C", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 35.0 + }, + "name": "Q4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "D1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "D2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "D3", + "logicWidth": 1 + } + ], + "submodel": { + "innerScale": 0.4, + "subComps": [ + { + "pos": { + "x": 14.0, + "y": 71.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#1", + "params": 1 + }, + { + "pos": { + "x": 14.0, + "y": 46.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#0", + "params": 1 + }, + { + "pos": { + "x": 14.0, + "y": 96.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#2", + "params": 1 + }, + { + "pos": { + "x": 30.0, + "y": 32.5 + }, + "id": "GUIdlatch", + "name": "GUIdlatch#1" + }, + { + "pos": { + "x": 30.0, + "y": 7.5 + }, + "id": "GUIdlatch", + "name": "GUIdlatch#0" + }, + { + "pos": { + "x": 30.0, + "y": 82.5 + }, + "id": "GUIdlatch", + "name": "GUIdlatch#3" + }, + { + "pos": { + "x": 30.0, + "y": 57.5 + }, + "id": "GUIdlatch", + "name": "GUIdlatch#2" + } + ], + "innerWires": [ + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "C" + }, + "pin2": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "path": [ + { + "x": 15.0, + "y": 112.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUIdlatch#3", + "pinName": "E" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUIdlatch#2", + "pinName": "E" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUIdlatch#1", + "pinName": "E" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUIdlatch#0", + "pinName": "E" + }, + "path": [ + { + "x": 15.0, + "y": 22.5 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "D1" + }, + "pin2": { + "compName": "GUIdlatch#0", + "pinName": "D" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "D2" + }, + "pin2": { + "compName": "GUIdlatch#1", + "pinName": "D" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "D3" + }, + "pin2": { + "compName": "GUIdlatch#2", + "pinName": "D" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "D4" + }, + "pin2": { + "compName": "GUIdlatch#3", + "pinName": "D" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdlatch#0", + "pinName": "Q" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Q1" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdlatch#1", + "pinName": "Q" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Q2" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdlatch#2", + "pinName": "Q" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Q3" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdlatch#3", + "pinName": "Q" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Q4" + }, + "path": [] + } + ] + }, + "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", + "symbolRendererParams": { + "centerText": "GUIdlatch4", + "horizontalComponentCenter": 17.5, + "centerTextHeight": 5.0, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.editor/components/GUIfulladder.json b/net.mograsim.logic.model.editor/components/GUIfulladder.json new file mode 100644 index 00000000..dc4c6162 --- /dev/null +++ b/net.mograsim.logic.model.editor/components/GUIfulladder.json @@ -0,0 +1,188 @@ +mograsim version: 0.1.3 +{ + "width": 35.0, + "height": 30.0, + "interfacePins": [ + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "A", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "B", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "C", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Y", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "Z", + "logicWidth": 1 + } + ], + "submodel": { + "innerScale": 0.4, + "subComps": [ + { + "pos": { + "x": 57.5, + "y": 40.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#0", + "params": 1 + }, + { + "pos": { + "x": 5.0, + "y": 40.0 + }, + "id": "GUIhalfadder", + "name": "GUIhalfadder#0" + }, + { + "pos": { + "x": 45.0, + "y": 7.5 + }, + "id": "GUIhalfadder", + "name": "GUIhalfadder#1" + } + ], + "innerWires": [ + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A" + }, + "pin2": { + "compName": "GUIhalfadder#1", + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B" + }, + "pin2": { + "compName": "GUIhalfadder#0", + "pinName": "A" + } + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "C" + }, + "pin2": { + "compName": "GUIhalfadder#0", + "pinName": "B" + } + }, + { + "pin1": { + "compName": "GUIhalfadder#0", + "pinName": "Y" + }, + "pin2": { + "compName": "GUIhalfadder#1", + "pinName": "B" + } + }, + { + "pin1": { + "compName": "GUIhalfadder#0", + "pinName": "_Z" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIhalfadder#1", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIhalfadder#1", + "pinName": "_Z" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "A" + }, + "path": [ + { + "x": 82.5, + "y": 22.5 + }, + { + "x": 82.5, + "y": 35.0 + }, + { + "x": 52.5, + "y": 35.0 + }, + { + "x": 52.5, + "y": 45.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#0", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Z" + } + } + ] + }, + "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", + "symbolRendererParams": { + "centerText": "GUIfulladder", + "horizontalComponentCenter": 17.5, + "centerTextHeight": 5.0, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.editor/components/GUIhalfadder.json b/net.mograsim.logic.model.editor/components/GUIhalfadder.json new file mode 100644 index 00000000..761d6ce1 --- /dev/null +++ b/net.mograsim.logic.model.editor/components/GUIhalfadder.json @@ -0,0 +1,317 @@ +mograsim version: 0.1.3 +{ + "width": 35.0, + "height": 20.0, + "interfacePins": [ + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "A", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "B", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Y", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "_Z", + "logicWidth": 1 + } + ], + "submodel": { + "innerScale": 0.4, + "subComps": [ + { + "pos": { + "x": 40.0, + "y": 2.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#1", + "params": 1 + }, + { + "pos": { + "x": 10.0, + "y": 15.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#0", + "params": 1 + }, + { + "pos": { + "x": 65.0, + "y": 2.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#3", + "params": 1 + }, + { + "pos": { + "x": 4.0, + "y": 36.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#1", + "params": 1 + }, + { + "pos": { + "x": 40.0, + "y": 27.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#2", + "params": 1 + }, + { + "pos": { + "x": 4.0, + "y": 11.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#0", + "params": 1 + }, + { + "pos": { + "x": 34.0, + "y": 24.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#2", + "params": 1 + } + ], + "innerWires": [ + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A" + }, + "pin2": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "A" + }, + "path": [ + { + "x": 5.0, + "y": 7.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "A" + }, + "path": [ + { + "x": 5.0, + "y": 20.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B" + }, + "pin2": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#2", + "pinName": "B" + }, + "path": [ + { + "x": 5.0, + "y": 42.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "B" + }, + "path": [ + { + "x": 5.0, + "y": 30.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#0", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "_Z" + }, + "path": [ + { + "x": 80.0, + "y": 25.0 + }, + { + "x": 80.0, + "y": 37.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "B" + }, + "path": [ + { + "x": 35.0, + "y": 17.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#2", + "pinName": "A" + }, + "path": [ + { + "x": 35.0, + "y": 32.5 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#1", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#3", + "pinName": "A" + }, + "path": [ + { + "x": 62.5, + "y": 12.5 + }, + { + "x": 62.5, + "y": 7.5 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#2", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#3", + "pinName": "B" + }, + "path": [ + { + "x": 62.5, + "y": 37.5 + }, + { + "x": 62.5, + "y": 17.5 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#3", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y" + }, + "path": [] + } + ] + }, + "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", + "symbolRendererParams": { + "centerText": "GUIhalfadder", + "horizontalComponentCenter": 17.5, + "centerTextHeight": 5.0, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.editor/components/GUImux1.json b/net.mograsim.logic.model.editor/components/GUImux1.json new file mode 100644 index 00000000..7ce90023 --- /dev/null +++ b/net.mograsim.logic.model.editor/components/GUImux1.json @@ -0,0 +1,230 @@ +mograsim version: 0.1.3 +{ + "width": 35.0, + "height": 30.0, + "interfacePins": [ + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "I0", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "I1", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Y", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "S0", + "logicWidth": 1 + } + ], + "submodel": { + "innerScale": 0.4, + "subComps": [ + { + "pos": { + "x": 35.0, + "y": 22.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#1", + "params": 1 + }, + { + "pos": { + "x": 10.0, + "y": 7.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#0", + "params": 1 + }, + { + "pos": { + "x": 60.0, + "y": 30.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#3", + "params": 1 + }, + { + "pos": { + "x": 4.0, + "y": 21.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#1", + "params": 1 + }, + { + "pos": { + "x": 35.0, + "y": 47.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#2", + "params": 1 + }, + { + "pos": { + "x": 4.0, + "y": 11.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#0", + "params": 1 + } + ], + "innerWires": [ + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "S0" + }, + "pin2": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUINandGate#0", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "A" + } + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I0" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#2", + "pinName": "A" + }, + "path": [ + { + "x": 5.0, + "y": 52.5 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I1" + }, + "pin2": { + "compName": "GUINandGate#2", + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUINandGate#1", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#3", + "pinName": "A" + } + }, + { + "pin1": { + "compName": "GUINandGate#2", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#3", + "pinName": "B" + } + }, + { + "pin1": { + "compName": "GUINandGate#3", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y" + } + } + ] + }, + "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", + "symbolRendererParams": { + "centerText": "GUImux1", + "horizontalComponentCenter": 17.5, + "centerTextHeight": 5.0, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.editor/components/GUImux1_4.json b/net.mograsim.logic.model.editor/components/GUImux1_4.json new file mode 100644 index 00000000..21e2f213 --- /dev/null +++ b/net.mograsim.logic.model.editor/components/GUImux1_4.json @@ -0,0 +1,468 @@ +mograsim version: 0.1.3 +{ + "width": 35.0, + "height": 90.0, + "interfacePins": [ + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "I0_1", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Y1", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "Y2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 35.0 + }, + "name": "I0_3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 65.0 + }, + "name": "I1_2", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 25.0 + }, + "name": "Y3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "I0_2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 55.0 + }, + "name": "I1_1", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 35.0 + }, + "name": "Y4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 85.0 + }, + "name": "I1_4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "S0", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 45.0 + }, + "name": "I0_4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 75.0 + }, + "name": "I1_3", + "logicWidth": 1 + } + ], + "submodel": { + "innerScale": 0.4, + "subComps": [ + { + "pos": { + "x": 30.0, + "y": 112.5 + }, + "id": "GUImux1", + "name": "GUImux1#3" + }, + { + "pos": { + "x": 24.0, + "y": 46.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#1", + "params": 1 + }, + { + "pos": { + "x": 24.0, + "y": 11.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#0", + "params": 1 + }, + { + "pos": { + "x": 30.0, + "y": 7.5 + }, + "id": "GUImux1", + "name": "GUImux1#0" + }, + { + "pos": { + "x": 24.0, + "y": 81.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#2", + "params": 1 + }, + { + "pos": { + "x": 30.0, + "y": 77.5 + }, + "id": "GUImux1", + "name": "GUImux1#2" + }, + { + "pos": { + "x": 30.0, + "y": 42.5 + }, + "id": "GUImux1", + "name": "GUImux1#1" + } + ], + "innerWires": [ + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "S0" + }, + "pin2": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUImux1#0", + "pinName": "S0" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I0_1" + }, + "pin2": { + "compName": "GUImux1#0", + "pinName": "I0" + }, + "path": [ + { + "x": 5.0, + "y": 37.5 + }, + { + "x": 5.0, + "y": 22.5 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I1_1" + }, + "pin2": { + "compName": "GUImux1#0", + "pinName": "I1" + }, + "path": [ + { + "x": 10.0, + "y": 137.5 + }, + { + "x": 10.0, + "y": 32.5 + } + ] + }, + { + "pin1": { + "compName": "GUImux1#0", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y1" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUImux1#1", + "pinName": "S0" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I0_2" + }, + "pin2": { + "compName": "GUImux1#1", + "pinName": "I0" + }, + "path": [ + { + "x": 5.0, + "y": 62.5 + }, + { + "x": 5.0, + "y": 57.5 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I1_2" + }, + "pin2": { + "compName": "GUImux1#1", + "pinName": "I1" + }, + "path": [ + { + "x": 15.0, + "y": 162.5 + }, + { + "x": 15.0, + "y": 67.5 + } + ] + }, + { + "pin1": { + "compName": "GUImux1#1", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y2" + } + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUImux1#2", + "pinName": "S0" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I0_3" + }, + "pin2": { + "compName": "GUImux1#2", + "pinName": "I0" + }, + "path": [ + { + "x": 5.0, + "y": 87.5 + }, + { + "x": 5.0, + "y": 92.5 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I1_3" + }, + "pin2": { + "compName": "GUImux1#2", + "pinName": "I1" + }, + "path": [ + { + "x": 20.0, + "y": 187.5 + }, + { + "x": 20.0, + "y": 102.5 + } + ] + }, + { + "pin1": { + "compName": "GUImux1#2", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y3" + } + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUImux1#3", + "pinName": "S0" + }, + "path": [ + { + "x": 25.0, + "y": 117.5 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I0_4" + }, + "pin2": { + "compName": "GUImux1#3", + "pinName": "I0" + }, + "path": [ + { + "x": 5.0, + "y": 112.5 + }, + { + "x": 5.0, + "y": 127.5 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I1_4" + }, + "pin2": { + "compName": "GUImux1#3", + "pinName": "I1" + }, + "path": [ + { + "x": 25.0, + "y": 212.5 + }, + { + "x": 25.0, + "y": 137.5 + } + ] + }, + { + "pin1": { + "compName": "GUImux1#3", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y4" + } + } + ] + }, + "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", + "symbolRendererParams": { + "centerText": "GUImux1_4", + "horizontalComponentCenter": 17.5, + "centerTextHeight": 5.0, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.editor/components/GUInand3.json b/net.mograsim.logic.model.editor/components/GUInand3.json new file mode 100644 index 00000000..b3a6300f --- /dev/null +++ b/net.mograsim.logic.model.editor/components/GUInand3.json @@ -0,0 +1,204 @@ +mograsim version: 0.1.3 +{ + "width": 35.0, + "height": 30.0, + "interfacePins": [ + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "A", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "B", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "C", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Y", + "logicWidth": 1 + } + ], + "submodel": { + "innerScale": 0.4, + "subComps": [ + { + "pos": { + "x": 35.0, + "y": 15.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#1", + "params": 1 + }, + { + "pos": { + "x": 10.0, + "y": 15.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#0", + "params": 1 + }, + { + "pos": { + "x": 62.5, + "y": 2.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#2", + "params": 1 + }, + { + "pos": { + "x": 31.5, + "y": 24.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#0", + "params": 1 + } + ], + "innerWires": [ + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "A" + } + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "B" + } + }, + { + "pin1": { + "compName": "GUINandGate#0", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "A" + }, + "path": [ + { + "x": 32.5, + "y": 20.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "B" + }, + "path": [ + { + "x": 32.5, + "y": 30.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#1", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#2", + "pinName": "A" + }, + "path": [ + { + "x": 57.5, + "y": 25.0 + }, + { + "x": 57.5, + "y": 7.5 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "C" + }, + "pin2": { + "compName": "GUINandGate#2", + "pinName": "B" + }, + "path": [ + { + "x": 60.0, + "y": 62.5 + }, + { + "x": 60.0, + "y": 17.5 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#2", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y" + }, + "path": [] + } + ] + }, + "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", + "symbolRendererParams": { + "centerText": "GUInand3", + "horizontalComponentCenter": 17.5, + "centerTextHeight": 5.0, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.editor/components/GUInot4.json b/net.mograsim.logic.model.editor/components/GUInot4.json new file mode 100644 index 00000000..7d575c84 --- /dev/null +++ b/net.mograsim.logic.model.editor/components/GUInot4.json @@ -0,0 +1,374 @@ +mograsim version: 0.1.3 +{ + "width": 35.0, + "height": 40.0, + "interfacePins": [ + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "A1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "A2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "A3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 35.0 + }, + "name": "A4", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Y1", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "Y2", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 25.0 + }, + "name": "Y3", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 35.0 + }, + "name": "Y4", + "logicWidth": 1 + } + ], + "submodel": { + "innerScale": 0.4, + "subComps": [ + { + "pos": { + "x": 30.0, + "y": 27.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#1", + "params": 1 + }, + { + "pos": { + "x": 30.0, + "y": 2.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#0", + "params": 1 + }, + { + "pos": { + "x": 30.0, + "y": 77.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#3", + "params": 1 + }, + { + "pos": { + "x": 14.0, + "y": 36.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#1", + "params": 1 + }, + { + "pos": { + "x": 30.0, + "y": 52.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#2", + "params": 1 + }, + { + "pos": { + "x": 14.0, + "y": 11.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#0", + "params": 1 + }, + { + "pos": { + "x": 14.0, + "y": 86.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#3", + "params": 1 + }, + { + "pos": { + "x": 14.0, + "y": 61.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#2", + "params": 1 + } + ], + "innerWires": [ + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A1" + }, + "pin2": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A2" + }, + "pin2": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A3" + }, + "pin2": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A4" + }, + "pin2": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "A" + }, + "path": [ + { + "x": 15.0, + "y": 7.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "A" + }, + "path": [ + { + "x": 15.0, + "y": 32.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#2", + "pinName": "A" + }, + "path": [ + { + "x": 15.0, + "y": 57.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#3", + "pinName": "A" + }, + "path": [ + { + "x": 15.0, + "y": 82.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "B" + }, + "path": [ + { + "x": 15.0, + "y": 17.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "B" + }, + "path": [ + { + "x": 15.0, + "y": 42.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#2", + "pinName": "B" + }, + "path": [ + { + "x": 15.0, + "y": 67.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#3", + "pinName": "B" + }, + "path": [ + { + "x": 15.0, + "y": 92.5 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#0", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y1" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUINandGate#1", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y2" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUINandGate#2", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y3" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUINandGate#3", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y4" + }, + "path": [] + } + ] + }, + "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", + "symbolRendererParams": { + "centerText": "GUInot4", + "horizontalComponentCenter": 17.5, + "centerTextHeight": 5.0, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.editor/components/GUIor4.json b/net.mograsim.logic.model.editor/components/GUIor4.json new file mode 100644 index 00000000..d4bcd579 --- /dev/null +++ b/net.mograsim.logic.model.editor/components/GUIor4.json @@ -0,0 +1,525 @@ +mograsim version: 0.1.3 +{ + "width": 35.0, + "height": 40.0, + "interfacePins": [ + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "A1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "A2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "A3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 35.0 + }, + "name": "A4", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Y", + "logicWidth": 1 + } + ], + "submodel": { + "innerScale": 0.2, + "subComps": [ + { + "pos": { + "x": 20.0, + "y": 65.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#1", + "params": 1 + }, + { + "pos": { + "x": 20.0, + "y": 15.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#0", + "params": 1 + }, + { + "pos": { + "x": 20.0, + "y": 165.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#3", + "params": 1 + }, + { + "pos": { + "x": 20.0, + "y": 115.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#2", + "params": 1 + }, + { + "pos": { + "x": 14.0, + "y": 74.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#1", + "params": 1 + }, + { + "pos": { + "x": 14.0, + "y": 24.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#0", + "params": 1 + }, + { + "pos": { + "x": 14.0, + "y": 174.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#3", + "params": 1 + }, + { + "pos": { + "x": 14.0, + "y": 124.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#2", + "params": 1 + }, + { + "pos": { + "x": 104.0, + "y": 149.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#5", + "params": 1 + }, + { + "pos": { + "x": 104.0, + "y": 49.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#4", + "params": 1 + }, + { + "pos": { + "x": 140.0, + "y": 90.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#8", + "params": 1 + }, + { + "pos": { + "x": 50.0, + "y": 140.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#5", + "params": 1 + }, + { + "pos": { + "x": 50.0, + "y": 40.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#4", + "params": 1 + }, + { + "pos": { + "x": 110.0, + "y": 140.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#7", + "params": 1 + }, + { + "pos": { + "x": 110.0, + "y": 40.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#6", + "params": 1 + } + ], + "innerWires": [ + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A1" + }, + "pin2": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A2" + }, + "pin2": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A3" + }, + "pin2": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A4" + }, + "pin2": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "A" + }, + "path": [ + { + "x": 15.0, + "y": 20.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "A" + }, + "path": [ + { + "x": 15.0, + "y": 70.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#2", + "pinName": "A" + }, + "path": [ + { + "x": 15.0, + "y": 120.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#3", + "pinName": "A" + }, + "path": [ + { + "x": 15.0, + "y": 170.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "B" + }, + "path": [ + { + "x": 15.0, + "y": 30.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "B" + }, + "path": [ + { + "x": 15.0, + "y": 80.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#2", + "pinName": "B" + }, + "path": [ + { + "x": 15.0, + "y": 130.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#3", + "pinName": "B" + }, + "path": [ + { + "x": 15.0, + "y": 180.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#0", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#4", + "pinName": "A" + } + }, + { + "pin1": { + "compName": "GUINandGate#1", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#4", + "pinName": "B" + } + }, + { + "pin1": { + "compName": "GUINandGate#2", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#5", + "pinName": "A" + } + }, + { + "pin1": { + "compName": "GUINandGate#3", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#5", + "pinName": "B" + } + }, + { + "pin1": { + "compName": "GUINandGate#4", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUINandGate#5", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#6", + "pinName": "A" + }, + "path": [ + { + "x": 105.0, + "y": 45.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#6", + "pinName": "B" + }, + "path": [ + { + "x": 105.0, + "y": 55.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#7", + "pinName": "A" + }, + "path": [ + { + "x": 105.0, + "y": 145.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#7", + "pinName": "B" + }, + "path": [ + { + "x": 105.0, + "y": 155.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#6", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#8", + "pinName": "A" + } + }, + { + "pin1": { + "compName": "GUINandGate#7", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#8", + "pinName": "B" + } + }, + { + "pin1": { + "compName": "GUINandGate#8", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y" + } + } + ] + }, + "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", + "symbolRendererParams": { + "centerText": "GUIor4", + "horizontalComponentCenter": 17.5, + "centerTextHeight": 5.0, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.editor/components/GUIor_4.json b/net.mograsim.logic.model.editor/components/GUIor_4.json new file mode 100644 index 00000000..86b44135 --- /dev/null +++ b/net.mograsim.logic.model.editor/components/GUIor_4.json @@ -0,0 +1,846 @@ +mograsim version: 0.1.3 +{ + "width": 35.0, + "height": 80.0, + "interfacePins": [ + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "A1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 55.0 + }, + "name": "B2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "A2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 65.0 + }, + "name": "B3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "A3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 75.0 + }, + "name": "B4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 35.0 + }, + "name": "A4", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Y1", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "Y2", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 25.0 + }, + "name": "Y3", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 35.0 + }, + "name": "Y4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 45.0 + }, + "name": "B1", + "logicWidth": 1 + } + ], + "submodel": { + "innerScale": 0.4, + "subComps": [ + { + "pos": { + "x": 15.0, + "y": 27.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#1", + "params": 1 + }, + { + "pos": { + "x": 15.0, + "y": 2.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#0", + "params": 1 + }, + { + "pos": { + "x": 15.0, + "y": 77.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#3", + "params": 1 + }, + { + "pos": { + "x": 15.0, + "y": 52.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#2", + "params": 1 + }, + { + "pos": { + "x": 65.0, + "y": 77.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#11", + "params": 1 + }, + { + "pos": { + "x": 65.0, + "y": 52.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#10", + "params": 1 + }, + { + "pos": { + "x": 6.5, + "y": 36.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#1", + "params": 1 + }, + { + "pos": { + "x": 6.5, + "y": 11.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#0", + "params": 1 + }, + { + "pos": { + "x": 6.5, + "y": 86.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#3", + "params": 1 + }, + { + "pos": { + "x": 6.5, + "y": 61.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#2", + "params": 1 + }, + { + "pos": { + "x": 6.5, + "y": 136.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#5", + "params": 1 + }, + { + "pos": { + "x": 6.5, + "y": 111.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#4", + "params": 1 + }, + { + "pos": { + "x": 65.0, + "y": 27.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#9", + "params": 1 + }, + { + "pos": { + "x": 6.5, + "y": 186.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#7", + "params": 1 + }, + { + "pos": { + "x": 65.0, + "y": 2.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#8", + "params": 1 + }, + { + "pos": { + "x": 6.5, + "y": 161.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#6", + "params": 1 + }, + { + "pos": { + "x": 15.0, + "y": 127.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#5", + "params": 1 + }, + { + "pos": { + "x": 15.0, + "y": 102.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#4", + "params": 1 + }, + { + "pos": { + "x": 15.0, + "y": 177.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#7", + "params": 1 + }, + { + "pos": { + "x": 15.0, + "y": 152.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#6", + "params": 1 + } + ], + "innerWires": [ + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A1" + }, + "pin2": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A2" + }, + "pin2": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A3" + }, + "pin2": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A4" + }, + "pin2": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B1" + }, + "pin2": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B2" + }, + "pin2": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B3" + }, + "pin2": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B4" + }, + "pin2": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "A" + }, + "path": [ + { + "x": 7.5, + "y": 7.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "B" + }, + "path": [ + { + "x": 7.5, + "y": 17.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "A" + }, + "path": [ + { + "x": 7.5, + "y": 32.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "B" + }, + "path": [ + { + "x": 7.5, + "y": 42.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#2", + "pinName": "A" + }, + "path": [ + { + "x": 7.5, + "y": 57.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#2", + "pinName": "B" + }, + "path": [ + { + "x": 7.5, + "y": 67.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#3", + "pinName": "A" + }, + "path": [ + { + "x": 7.5, + "y": 82.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#3", + "pinName": "B" + }, + "path": [ + { + "x": 7.5, + "y": 92.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#4", + "pinName": "A" + }, + "path": [ + { + "x": 7.5, + "y": 107.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#4", + "pinName": "B" + }, + "path": [ + { + "x": 7.5, + "y": 117.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#5", + "pinName": "A" + }, + "path": [ + { + "x": 7.5, + "y": 132.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#5", + "pinName": "B" + }, + "path": [ + { + "x": 7.5, + "y": 142.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#6", + "pinName": "A" + }, + "path": [ + { + "x": 7.5, + "y": 157.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#6", + "pinName": "B" + }, + "path": [ + { + "x": 7.5, + "y": 167.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#7", + "pinName": "A" + }, + "path": [ + { + "x": 7.5, + "y": 182.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#7", + "pinName": "B" + }, + "path": [ + { + "x": 7.5, + "y": 192.5 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#0", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#8", + "pinName": "A" + }, + "path": [ + { + "x": 40.0, + "y": 12.5 + }, + { + "x": 40.0, + "y": 7.5 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#4", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#8", + "pinName": "B" + }, + "path": [ + { + "x": 45.0, + "y": 112.5 + }, + { + "x": 45.0, + "y": 17.5 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#1", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#9", + "pinName": "A" + }, + "path": [ + { + "x": 40.0, + "y": 37.5 + }, + { + "x": 40.0, + "y": 32.5 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#5", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#9", + "pinName": "B" + }, + "path": [ + { + "x": 50.0, + "y": 137.5 + }, + { + "x": 50.0, + "y": 42.5 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#2", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#10", + "pinName": "A" + }, + "path": [ + { + "x": 40.0, + "y": 62.5 + }, + { + "x": 40.0, + "y": 57.5 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#6", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#10", + "pinName": "B" + }, + "path": [ + { + "x": 55.0, + "y": 162.5 + }, + { + "x": 55.0, + "y": 67.5 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#3", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#11", + "pinName": "A" + }, + "path": [ + { + "x": 40.0, + "y": 87.5 + }, + { + "x": 40.0, + "y": 82.5 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#7", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#11", + "pinName": "B" + }, + "path": [ + { + "x": 60.0, + "y": 187.5 + }, + { + "x": 60.0, + "y": 92.5 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#8", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y1" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUINandGate#9", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y2" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUINandGate#10", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y3" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUINandGate#11", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y4" + }, + "path": [] + } + ] + }, + "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", + "symbolRendererParams": { + "centerText": "GUIor_4", + "horizontalComponentCenter": 17.5, + "centerTextHeight": 5.0, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.editor/components/GUIram2.json b/net.mograsim.logic.model.editor/components/GUIram2.json new file mode 100644 index 00000000..3cb8583f --- /dev/null +++ b/net.mograsim.logic.model.editor/components/GUIram2.json @@ -0,0 +1,2829 @@ +mograsim version: 0.1.3 +{ + "width": 35.0, + "height": 90.0, + "interfacePins": [ + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "QA1", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 55.0 + }, + "name": "QB2", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 45.0 + }, + "name": "QB1", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 25.0 + }, + "name": "QA3", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 75.0 + }, + "name": "QB4", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "QA2", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 65.0 + }, + "name": "QB3", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 35.0 + }, + "name": "QA4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 55.0 + }, + "name": "D1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "B0", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 45.0 + }, + "name": "WE", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 65.0 + }, + "name": "D2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "A0", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 35.0 + }, + "name": "B1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 75.0 + }, + "name": "D3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "A1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 85.0 + }, + "name": "D4", + "logicWidth": 1 + } + ], + "submodel": { + "innerScale": 0.1, + "subComps": [ + { + "pos": { + "x": 44.0, + "y": 649.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#14", + "params": 1 + }, + { + "pos": { + "x": 39.0, + "y": 639.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#13", + "params": 1 + }, + { + "pos": { + "x": 129.0, + "y": 329.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#16", + "params": 1 + }, + { + "pos": { + "x": 49.0, + "y": 659.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#15", + "params": 1 + }, + { + "pos": { + "x": 119.0, + "y": 349.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#18", + "params": 1 + }, + { + "pos": { + "x": 124.0, + "y": 339.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#17", + "params": 1 + }, + { + "pos": { + "x": 114.0, + "y": 359.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#19", + "params": 1 + }, + { + "pos": { + "x": 104.0, + "y": 164.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#1", + "params": 1 + }, + { + "pos": { + "x": 109.0, + "y": 154.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#0", + "params": 1 + }, + { + "pos": { + "x": 94.0, + "y": 184.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#3", + "params": 1 + }, + { + "pos": { + "x": 99.0, + "y": 174.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#2", + "params": 1 + }, + { + "pos": { + "x": 39.0, + "y": 649.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#5", + "params": 1 + }, + { + "pos": { + "x": 34.0, + "y": 549.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#4", + "params": 1 + }, + { + "pos": { + "x": 49.0, + "y": 809.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#7", + "params": 1 + }, + { + "pos": { + "x": 44.0, + "y": 749.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#6", + "params": 1 + }, + { + "pos": { + "x": 39.0, + "y": 489.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#9", + "params": 1 + }, + { + "pos": { + "x": 34.0, + "y": 479.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#8", + "params": 1 + }, + { + "pos": { + "x": 44.0, + "y": 499.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#10", + "params": 1 + }, + { + "pos": { + "x": 34.0, + "y": 629.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#12", + "params": 1 + }, + { + "pos": { + "x": 49.0, + "y": 509.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#11", + "params": 1 + }, + { + "pos": { + "x": 135.0, + "y": 735.0 + }, + "id": "GUIandor414", + "name": "GUIandor414#5" + }, + { + "pos": { + "x": 135.0, + "y": 435.0 + }, + "id": "GUIandor414", + "name": "GUIandor414#3" + }, + { + "pos": { + "x": 135.0, + "y": 585.0 + }, + "id": "GUIandor414", + "name": "GUIandor414#4" + }, + { + "pos": { + "x": 235.0, + "y": 635.0 + }, + "id": "GUIandor414", + "name": "GUIandor414#1" + }, + { + "pos": { + "x": 235.0, + "y": 785.0 + }, + "id": "GUIandor414", + "name": "GUIandor414#2" + }, + { + "pos": { + "x": 235.0, + "y": 485.0 + }, + "id": "GUIandor414", + "name": "GUIandor414#0" + }, + { + "pos": { + "x": 55.0, + "y": 475.0 + }, + "id": "GUIdlatch4", + "name": "GUIdlatch4#1" + }, + { + "pos": { + "x": 55.0, + "y": 325.0 + }, + "id": "GUIdlatch4", + "name": "GUIdlatch4#0" + }, + { + "pos": { + "x": 55.0, + "y": 775.0 + }, + "id": "GUIdlatch4", + "name": "GUIdlatch4#3" + }, + { + "pos": { + "x": 55.0, + "y": 625.0 + }, + "id": "GUIdlatch4", + "name": "GUIdlatch4#2" + }, + { + "pos": { + "x": 135.0, + "y": 325.0 + }, + "id": "GUIand41", + "name": "GUIand41#2" + }, + { + "pos": { + "x": 119.0, + "y": 799.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#30", + "params": 1 + }, + { + "pos": { + "x": 114.0, + "y": 809.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#31", + "params": 1 + }, + { + "pos": { + "x": 130.0, + "y": 150.0 + }, + "id": "GUIand41", + "name": "GUIand41#0" + }, + { + "pos": { + "x": 235.0, + "y": 375.0 + }, + "id": "GUIand41", + "name": "GUIand41#1" + }, + { + "pos": { + "x": 124.0, + "y": 639.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#25", + "params": 1 + }, + { + "pos": { + "x": 129.0, + "y": 629.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#24", + "params": 1 + }, + { + "pos": { + "x": 114.0, + "y": 659.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#27", + "params": 1 + }, + { + "pos": { + "x": 119.0, + "y": 649.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#26", + "params": 1 + }, + { + "pos": { + "x": 124.0, + "y": 789.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#29", + "params": 1 + }, + { + "pos": { + "x": 129.0, + "y": 779.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#28", + "params": 1 + }, + { + "pos": { + "x": 55.0, + "y": 150.0 + }, + "id": "GUIdemux2", + "name": "GUIdemux2#1" + }, + { + "pos": { + "x": 55.0, + "y": 45.0 + }, + "id": "GUIdemux2", + "name": "GUIdemux2#0" + }, + { + "pos": { + "x": 124.0, + "y": 489.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#21", + "params": 1 + }, + { + "pos": { + "x": 129.0, + "y": 479.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#20", + "params": 1 + }, + { + "pos": { + "x": 114.0, + "y": 509.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#23", + "params": 1 + }, + { + "pos": { + "x": 119.0, + "y": 499.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#22", + "params": 1 + } + ], + "innerWires": [ + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A0" + }, + "pin2": { + "compName": "GUIdemux2#0", + "pinName": "S0" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A1" + }, + "pin2": { + "compName": "GUIdemux2#0", + "pinName": "S1" + }, + "path": [ + { + "x": 10.0, + "y": 150.0 + }, + { + "x": 10.0, + "y": 60.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B0" + }, + "pin2": { + "compName": "GUIdemux2#1", + "pinName": "S0" + }, + "path": [ + { + "x": 5.0, + "y": 250.0 + }, + { + "x": 5.0, + "y": 155.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B1" + }, + "pin2": { + "compName": "GUIdemux2#1", + "pinName": "S1" + }, + "path": [ + { + "x": 10.0, + "y": 350.0 + }, + { + "x": 10.0, + "y": 165.0 + } + ] + }, + { + "pin1": { + "compName": "GUIdemux2#1", + "pinName": "Y00" + }, + "pin2": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdemux2#1", + "pinName": "Y01" + }, + "pin2": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdemux2#1", + "pinName": "Y10" + }, + "pin2": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdemux2#1", + "pinName": "Y11" + }, + "pin2": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUIand41#0", + "pinName": "A1" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUIand41#0", + "pinName": "A2" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUIand41#0", + "pinName": "A3" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "GUIand41#0", + "pinName": "A4" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "WE" + }, + "pin2": { + "compName": "GUIand41#0", + "pinName": "B" + }, + "path": [ + { + "x": 5.0, + "y": 450.0 + }, + { + "x": 5.0, + "y": 300.0 + }, + { + "x": 125.0, + "y": 300.0 + }, + { + "x": 125.0, + "y": 195.0 + } + ] + }, + { + "pin1": { + "compName": "GUIand41#0", + "pinName": "Y1" + }, + "pin2": { + "compName": "GUIdlatch4#0", + "pinName": "C" + }, + "path": [ + { + "x": 185.0, + "y": 155.0 + }, + { + "x": 185.0, + "y": 250.0 + }, + { + "x": 30.0, + "y": 250.0 + }, + { + "x": 30.0, + "y": 370.0 + } + ] + }, + { + "pin1": { + "compName": "GUIand41#0", + "pinName": "Y2" + }, + "pin2": { + "compName": "GUIdlatch4#1", + "pinName": "C" + }, + "path": [ + { + "x": 180.0, + "y": 165.0 + }, + { + "x": 180.0, + "y": 245.0 + }, + { + "x": 25.0, + "y": 245.0 + }, + { + "x": 25.0, + "y": 520.0 + } + ] + }, + { + "pin1": { + "compName": "GUIand41#0", + "pinName": "Y3" + }, + "pin2": { + "compName": "GUIdlatch4#2", + "pinName": "C" + }, + "path": [ + { + "x": 175.0, + "y": 175.0 + }, + { + "x": 175.0, + "y": 240.0 + }, + { + "x": 20.0, + "y": 240.0 + }, + { + "x": 20.0, + "y": 670.0 + } + ] + }, + { + "pin1": { + "compName": "GUIand41#0", + "pinName": "Y4" + }, + "pin2": { + "compName": "GUIdlatch4#3", + "pinName": "C" + }, + "path": [ + { + "x": 170.0, + "y": 185.0 + }, + { + "x": 170.0, + "y": 235.0 + }, + { + "x": 15.0, + "y": 235.0 + }, + { + "x": 15.0, + "y": 820.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "D1" + }, + "pin2": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "D2" + }, + "pin2": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "D3" + }, + "pin2": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "D4" + }, + "pin2": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "path": [ + { + "x": 50.0, + "y": 850.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#8", + "pinName": "" + }, + "pin2": { + "compName": "GUIdlatch4#0", + "pinName": "D1" + }, + "path": [ + { + "x": 35.0, + "y": 330.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#9", + "pinName": "" + }, + "pin2": { + "compName": "GUIdlatch4#0", + "pinName": "D2" + }, + "path": [ + { + "x": 40.0, + "y": 340.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#10", + "pinName": "" + }, + "pin2": { + "compName": "GUIdlatch4#0", + "pinName": "D3" + }, + "path": [ + { + "x": 45.0, + "y": 350.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#11", + "pinName": "" + }, + "pin2": { + "compName": "GUIdlatch4#0", + "pinName": "D4" + }, + "path": [ + { + "x": 50.0, + "y": 360.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#8", + "pinName": "" + }, + "pin2": { + "compName": "GUIdlatch4#1", + "pinName": "D1" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#9", + "pinName": "" + }, + "pin2": { + "compName": "GUIdlatch4#1", + "pinName": "D2" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#10", + "pinName": "" + }, + "pin2": { + "compName": "GUIdlatch4#1", + "pinName": "D3" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#11", + "pinName": "" + }, + "pin2": { + "compName": "GUIdlatch4#1", + "pinName": "D4" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#8", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#12", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#9", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#13", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#10", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#14", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#11", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#15", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#12", + "pinName": "" + }, + "pin2": { + "compName": "GUIdlatch4#2", + "pinName": "D1" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#13", + "pinName": "" + }, + "pin2": { + "compName": "GUIdlatch4#2", + "pinName": "D2" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#14", + "pinName": "" + }, + "pin2": { + "compName": "GUIdlatch4#2", + "pinName": "D3" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#15", + "pinName": "" + }, + "pin2": { + "compName": "GUIdlatch4#2", + "pinName": "D4" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#13", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#14", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#15", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#12", + "pinName": "" + }, + "pin2": { + "compName": "GUIdlatch4#3", + "pinName": "D1" + }, + "path": [ + { + "x": 35.0, + "y": 780.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "pin2": { + "compName": "GUIdlatch4#3", + "pinName": "D2" + }, + "path": [ + { + "x": 40.0, + "y": 790.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "pin2": { + "compName": "GUIdlatch4#3", + "pinName": "D3" + }, + "path": [ + { + "x": 45.0, + "y": 800.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "pin2": { + "compName": "GUIdlatch4#3", + "pinName": "D4" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdlatch4#0", + "pinName": "Q1" + }, + "pin2": { + "compName": "WireCrossPoint#16", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdlatch4#0", + "pinName": "Q2" + }, + "pin2": { + "compName": "WireCrossPoint#17", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdlatch4#0", + "pinName": "Q3" + }, + "pin2": { + "compName": "WireCrossPoint#18", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdlatch4#0", + "pinName": "Q4" + }, + "pin2": { + "compName": "WireCrossPoint#19", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdlatch4#1", + "pinName": "Q1" + }, + "pin2": { + "compName": "WireCrossPoint#20", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdlatch4#1", + "pinName": "Q2" + }, + "pin2": { + "compName": "WireCrossPoint#21", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdlatch4#1", + "pinName": "Q3" + }, + "pin2": { + "compName": "WireCrossPoint#22", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdlatch4#1", + "pinName": "Q4" + }, + "pin2": { + "compName": "WireCrossPoint#23", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdlatch4#2", + "pinName": "Q1" + }, + "pin2": { + "compName": "WireCrossPoint#24", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdlatch4#2", + "pinName": "Q2" + }, + "pin2": { + "compName": "WireCrossPoint#25", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdlatch4#2", + "pinName": "Q3" + }, + "pin2": { + "compName": "WireCrossPoint#26", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdlatch4#2", + "pinName": "Q4" + }, + "pin2": { + "compName": "WireCrossPoint#27", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdlatch4#3", + "pinName": "Q1" + }, + "pin2": { + "compName": "WireCrossPoint#28", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdlatch4#3", + "pinName": "Q2" + }, + "pin2": { + "compName": "WireCrossPoint#29", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdlatch4#3", + "pinName": "Q3" + }, + "pin2": { + "compName": "WireCrossPoint#30", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdlatch4#3", + "pinName": "Q4" + }, + "pin2": { + "compName": "WireCrossPoint#31", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdemux2#0", + "pinName": "Y00" + }, + "pin2": { + "compName": "GUIand41#1", + "pinName": "B" + }, + "path": [ + { + "x": 210.0, + "y": 50.0 + }, + { + "x": 210.0, + "y": 420.0 + } + ] + }, + { + "pin1": { + "compName": "GUIdemux2#0", + "pinName": "Y01" + }, + "pin2": { + "compName": "GUIandor414#0", + "pinName": "B" + }, + "path": [ + { + "x": 205.0, + "y": 60.0 + }, + { + "x": 205.0, + "y": 570.0 + } + ] + }, + { + "pin1": { + "compName": "GUIdemux2#0", + "pinName": "Y10" + }, + "pin2": { + "compName": "GUIandor414#1", + "pinName": "B" + }, + "path": [ + { + "x": 200.0, + "y": 70.0 + }, + { + "x": 200.0, + "y": 720.0 + } + ] + }, + { + "pin1": { + "compName": "GUIdemux2#0", + "pinName": "Y11" + }, + "pin2": { + "compName": "GUIandor414#2", + "pinName": "B" + }, + "path": [ + { + "x": 195.0, + "y": 80.0 + }, + { + "x": 195.0, + "y": 870.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUIand41#2", + "pinName": "B" + }, + "path": [ + { + "x": 110.0, + "y": 370.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUIandor414#3", + "pinName": "B" + }, + "path": [ + { + "x": 105.0, + "y": 520.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUIandor414#4", + "pinName": "B" + }, + "path": [ + { + "x": 100.0, + "y": 670.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "GUIandor414#5", + "pinName": "B" + }, + "path": [ + { + "x": 95.0, + "y": 820.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#16", + "pinName": "" + }, + "pin2": { + "compName": "GUIand41#1", + "pinName": "A1" + }, + "path": [ + { + "x": 130.0, + "y": 380.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#17", + "pinName": "" + }, + "pin2": { + "compName": "GUIand41#1", + "pinName": "A2" + }, + "path": [ + { + "x": 125.0, + "y": 390.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#18", + "pinName": "" + }, + "pin2": { + "compName": "GUIand41#1", + "pinName": "A3" + }, + "path": [ + { + "x": 120.0, + "y": 400.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#19", + "pinName": "" + }, + "pin2": { + "compName": "GUIand41#1", + "pinName": "A4" + }, + "path": [ + { + "x": 115.0, + "y": 410.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#20", + "pinName": "" + }, + "pin2": { + "compName": "GUIandor414#0", + "pinName": "A1" + }, + "path": [ + { + "x": 130.0, + "y": 530.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#21", + "pinName": "" + }, + "pin2": { + "compName": "GUIandor414#0", + "pinName": "A2" + }, + "path": [ + { + "x": 125.0, + "y": 540.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#22", + "pinName": "" + }, + "pin2": { + "compName": "GUIandor414#0", + "pinName": "A3" + }, + "path": [ + { + "x": 120.0, + "y": 550.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#23", + "pinName": "" + }, + "pin2": { + "compName": "GUIandor414#0", + "pinName": "A4" + }, + "path": [ + { + "x": 115.0, + "y": 560.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#24", + "pinName": "" + }, + "pin2": { + "compName": "GUIandor414#1", + "pinName": "A1" + }, + "path": [ + { + "x": 130.0, + "y": 680.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#25", + "pinName": "" + }, + "pin2": { + "compName": "GUIandor414#1", + "pinName": "A2" + }, + "path": [ + { + "x": 125.0, + "y": 690.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#26", + "pinName": "" + }, + "pin2": { + "compName": "GUIandor414#1", + "pinName": "A3" + }, + "path": [ + { + "x": 120.0, + "y": 700.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#27", + "pinName": "" + }, + "pin2": { + "compName": "GUIandor414#1", + "pinName": "A4" + }, + "path": [ + { + "x": 115.0, + "y": 710.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#28", + "pinName": "" + }, + "pin2": { + "compName": "GUIandor414#2", + "pinName": "A1" + }, + "path": [ + { + "x": 130.0, + "y": 830.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#29", + "pinName": "" + }, + "pin2": { + "compName": "GUIandor414#2", + "pinName": "A2" + }, + "path": [ + { + "x": 125.0, + "y": 840.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#30", + "pinName": "" + }, + "pin2": { + "compName": "GUIandor414#2", + "pinName": "A3" + }, + "path": [ + { + "x": 120.0, + "y": 850.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#31", + "pinName": "" + }, + "pin2": { + "compName": "GUIandor414#2", + "pinName": "A4" + }, + "path": [ + { + "x": 115.0, + "y": 860.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#16", + "pinName": "" + }, + "pin2": { + "compName": "GUIand41#2", + "pinName": "A1" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#17", + "pinName": "" + }, + "pin2": { + "compName": "GUIand41#2", + "pinName": "A2" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#18", + "pinName": "" + }, + "pin2": { + "compName": "GUIand41#2", + "pinName": "A3" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#19", + "pinName": "" + }, + "pin2": { + "compName": "GUIand41#2", + "pinName": "A4" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#20", + "pinName": "" + }, + "pin2": { + "compName": "GUIandor414#3", + "pinName": "A1" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#21", + "pinName": "" + }, + "pin2": { + "compName": "GUIandor414#3", + "pinName": "A2" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#22", + "pinName": "" + }, + "pin2": { + "compName": "GUIandor414#3", + "pinName": "A3" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#23", + "pinName": "" + }, + "pin2": { + "compName": "GUIandor414#3", + "pinName": "A4" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#24", + "pinName": "" + }, + "pin2": { + "compName": "GUIandor414#4", + "pinName": "A1" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#25", + "pinName": "" + }, + "pin2": { + "compName": "GUIandor414#4", + "pinName": "A2" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#26", + "pinName": "" + }, + "pin2": { + "compName": "GUIandor414#4", + "pinName": "A3" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#27", + "pinName": "" + }, + "pin2": { + "compName": "GUIandor414#4", + "pinName": "A4" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#28", + "pinName": "" + }, + "pin2": { + "compName": "GUIandor414#5", + "pinName": "A1" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#29", + "pinName": "" + }, + "pin2": { + "compName": "GUIandor414#5", + "pinName": "A2" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#30", + "pinName": "" + }, + "pin2": { + "compName": "GUIandor414#5", + "pinName": "A3" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#31", + "pinName": "" + }, + "pin2": { + "compName": "GUIandor414#5", + "pinName": "A4" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIand41#1", + "pinName": "Y1" + }, + "pin2": { + "compName": "GUIandor414#0", + "pinName": "C1" + }, + "path": [ + { + "x": 290.0, + "y": 380.0 + }, + { + "x": 290.0, + "y": 445.0 + }, + { + "x": 230.0, + "y": 445.0 + }, + { + "x": 230.0, + "y": 490.0 + } + ] + }, + { + "pin1": { + "compName": "GUIand41#1", + "pinName": "Y2" + }, + "pin2": { + "compName": "GUIandor414#0", + "pinName": "C2" + }, + "path": [ + { + "x": 285.0, + "y": 390.0 + }, + { + "x": 285.0, + "y": 440.0 + }, + { + "x": 225.0, + "y": 440.0 + }, + { + "x": 225.0, + "y": 500.0 + } + ] + }, + { + "pin1": { + "compName": "GUIand41#1", + "pinName": "Y3" + }, + "pin2": { + "compName": "GUIandor414#0", + "pinName": "C3" + }, + "path": [ + { + "x": 280.0, + "y": 400.0 + }, + { + "x": 280.0, + "y": 435.0 + }, + { + "x": 220.0, + "y": 435.0 + }, + { + "x": 220.0, + "y": 510.0 + } + ] + }, + { + "pin1": { + "compName": "GUIand41#1", + "pinName": "Y4" + }, + "pin2": { + "compName": "GUIandor414#0", + "pinName": "C4" + }, + "path": [ + { + "x": 275.0, + "y": 410.0 + }, + { + "x": 275.0, + "y": 430.0 + }, + { + "x": 215.0, + "y": 430.0 + }, + { + "x": 215.0, + "y": 520.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#0", + "pinName": "Y1" + }, + "pin2": { + "compName": "GUIandor414#1", + "pinName": "C1" + }, + "path": [ + { + "x": 290.0, + "y": 490.0 + }, + { + "x": 290.0, + "y": 595.0 + }, + { + "x": 230.0, + "y": 595.0 + }, + { + "x": 230.0, + "y": 640.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#0", + "pinName": "Y2" + }, + "pin2": { + "compName": "GUIandor414#1", + "pinName": "C2" + }, + "path": [ + { + "x": 285.0, + "y": 500.0 + }, + { + "x": 285.0, + "y": 590.0 + }, + { + "x": 225.0, + "y": 590.0 + }, + { + "x": 225.0, + "y": 650.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#0", + "pinName": "Y3" + }, + "pin2": { + "compName": "GUIandor414#1", + "pinName": "C3" + }, + "path": [ + { + "x": 280.0, + "y": 510.0 + }, + { + "x": 280.0, + "y": 585.0 + }, + { + "x": 220.0, + "y": 585.0 + }, + { + "x": 220.0, + "y": 660.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#0", + "pinName": "Y4" + }, + "pin2": { + "compName": "GUIandor414#1", + "pinName": "C4" + }, + "path": [ + { + "x": 275.0, + "y": 520.0 + }, + { + "x": 275.0, + "y": 580.0 + }, + { + "x": 215.0, + "y": 580.0 + }, + { + "x": 215.0, + "y": 670.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#1", + "pinName": "Y1" + }, + "pin2": { + "compName": "GUIandor414#2", + "pinName": "C1" + }, + "path": [ + { + "x": 290.0, + "y": 640.0 + }, + { + "x": 290.0, + "y": 745.0 + }, + { + "x": 230.0, + "y": 745.0 + }, + { + "x": 230.0, + "y": 790.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#1", + "pinName": "Y2" + }, + "pin2": { + "compName": "GUIandor414#2", + "pinName": "C2" + }, + "path": [ + { + "x": 285.0, + "y": 650.0 + }, + { + "x": 285.0, + "y": 740.0 + }, + { + "x": 225.0, + "y": 740.0 + }, + { + "x": 225.0, + "y": 800.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#1", + "pinName": "Y3" + }, + "pin2": { + "compName": "GUIandor414#2", + "pinName": "C3" + }, + "path": [ + { + "x": 280.0, + "y": 660.0 + }, + { + "x": 280.0, + "y": 735.0 + }, + { + "x": 220.0, + "y": 735.0 + }, + { + "x": 220.0, + "y": 810.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#1", + "pinName": "Y4" + }, + "pin2": { + "compName": "GUIandor414#2", + "pinName": "C4" + }, + "path": [ + { + "x": 275.0, + "y": 670.0 + }, + { + "x": 275.0, + "y": 730.0 + }, + { + "x": 215.0, + "y": 730.0 + }, + { + "x": 215.0, + "y": 820.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#2", + "pinName": "Y1" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "QA1" + }, + "path": [ + { + "x": 300.0, + "y": 790.0 + }, + { + "x": 300.0, + "y": 50.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#2", + "pinName": "Y2" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "QA2" + }, + "path": [ + { + "x": 305.0, + "y": 800.0 + }, + { + "x": 305.0, + "y": 150.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#2", + "pinName": "Y3" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "QA3" + }, + "path": [ + { + "x": 310.0, + "y": 810.0 + }, + { + "x": 310.0, + "y": 250.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#2", + "pinName": "Y4" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "QA4" + }, + "path": [ + { + "x": 315.0, + "y": 820.0 + }, + { + "x": 315.0, + "y": 350.0 + } + ] + }, + { + "pin1": { + "compName": "GUIand41#2", + "pinName": "Y1" + }, + "pin2": { + "compName": "GUIandor414#3", + "pinName": "C1" + }, + "path": [ + { + "x": 190.0, + "y": 330.0 + }, + { + "x": 190.0, + "y": 430.0 + }, + { + "x": 130.0, + "y": 430.0 + }, + { + "x": 130.0, + "y": 440.0 + } + ] + }, + { + "pin1": { + "compName": "GUIand41#2", + "pinName": "Y2" + }, + "pin2": { + "compName": "GUIandor414#3", + "pinName": "C2" + }, + "path": [ + { + "x": 185.0, + "y": 340.0 + }, + { + "x": 185.0, + "y": 425.0 + }, + { + "x": 125.0, + "y": 425.0 + }, + { + "x": 125.0, + "y": 450.0 + } + ] + }, + { + "pin1": { + "compName": "GUIand41#2", + "pinName": "Y3" + }, + "pin2": { + "compName": "GUIandor414#3", + "pinName": "C3" + }, + "path": [ + { + "x": 180.0, + "y": 350.0 + }, + { + "x": 180.0, + "y": 420.0 + }, + { + "x": 120.0, + "y": 420.0 + }, + { + "x": 120.0, + "y": 460.0 + } + ] + }, + { + "pin1": { + "compName": "GUIand41#2", + "pinName": "Y4" + }, + "pin2": { + "compName": "GUIandor414#3", + "pinName": "C4" + }, + "path": [ + { + "x": 175.0, + "y": 360.0 + }, + { + "x": 175.0, + "y": 415.0 + }, + { + "x": 115.0, + "y": 415.0 + }, + { + "x": 115.0, + "y": 470.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#3", + "pinName": "Y1" + }, + "pin2": { + "compName": "GUIandor414#4", + "pinName": "C1" + }, + "path": [ + { + "x": 190.0, + "y": 440.0 + }, + { + "x": 190.0, + "y": 580.0 + }, + { + "x": 130.0, + "y": 580.0 + }, + { + "x": 130.0, + "y": 590.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#3", + "pinName": "Y2" + }, + "pin2": { + "compName": "GUIandor414#4", + "pinName": "C2" + }, + "path": [ + { + "x": 185.0, + "y": 450.0 + }, + { + "x": 185.0, + "y": 575.0 + }, + { + "x": 125.0, + "y": 575.0 + }, + { + "x": 125.0, + "y": 600.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#3", + "pinName": "Y3" + }, + "pin2": { + "compName": "GUIandor414#4", + "pinName": "C3" + }, + "path": [ + { + "x": 180.0, + "y": 460.0 + }, + { + "x": 180.0, + "y": 570.0 + }, + { + "x": 120.0, + "y": 570.0 + }, + { + "x": 120.0, + "y": 610.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#3", + "pinName": "Y4" + }, + "pin2": { + "compName": "GUIandor414#4", + "pinName": "C4" + }, + "path": [ + { + "x": 175.0, + "y": 470.0 + }, + { + "x": 175.0, + "y": 565.0 + }, + { + "x": 115.0, + "y": 565.0 + }, + { + "x": 115.0, + "y": 620.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#4", + "pinName": "Y1" + }, + "pin2": { + "compName": "GUIandor414#5", + "pinName": "C1" + }, + "path": [ + { + "x": 190.0, + "y": 590.0 + }, + { + "x": 190.0, + "y": 730.0 + }, + { + "x": 130.0, + "y": 730.0 + }, + { + "x": 130.0, + "y": 740.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#4", + "pinName": "Y2" + }, + "pin2": { + "compName": "GUIandor414#5", + "pinName": "C2" + }, + "path": [ + { + "x": 185.0, + "y": 600.0 + }, + { + "x": 185.0, + "y": 725.0 + }, + { + "x": 125.0, + "y": 725.0 + }, + { + "x": 125.0, + "y": 750.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#4", + "pinName": "Y3" + }, + "pin2": { + "compName": "GUIandor414#5", + "pinName": "C3" + }, + "path": [ + { + "x": 180.0, + "y": 610.0 + }, + { + "x": 180.0, + "y": 720.0 + }, + { + "x": 120.0, + "y": 720.0 + }, + { + "x": 120.0, + "y": 760.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#4", + "pinName": "Y4" + }, + "pin2": { + "compName": "GUIandor414#5", + "pinName": "C4" + }, + "path": [ + { + "x": 175.0, + "y": 620.0 + }, + { + "x": 175.0, + "y": 715.0 + }, + { + "x": 115.0, + "y": 715.0 + }, + { + "x": 115.0, + "y": 770.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#5", + "pinName": "Y1" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "QB1" + }, + "path": [ + { + "x": 190.0, + "y": 740.0 + }, + { + "x": 190.0, + "y": 880.0 + }, + { + "x": 325.0, + "y": 880.0 + }, + { + "x": 325.0, + "y": 450.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#5", + "pinName": "Y2" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "QB2" + }, + "path": [ + { + "x": 185.0, + "y": 750.0 + }, + { + "x": 185.0, + "y": 885.0 + }, + { + "x": 330.0, + "y": 885.0 + }, + { + "x": 330.0, + "y": 550.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#5", + "pinName": "Y3" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "QB3" + }, + "path": [ + { + "x": 180.0, + "y": 760.0 + }, + { + "x": 180.0, + "y": 890.0 + }, + { + "x": 335.0, + "y": 890.0 + }, + { + "x": 335.0, + "y": 650.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#5", + "pinName": "Y4" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "QB4" + }, + "path": [ + { + "x": 175.0, + "y": 770.0 + }, + { + "x": 175.0, + "y": 895.0 + }, + { + "x": 340.0, + "y": 895.0 + }, + { + "x": 340.0, + "y": 750.0 + } + ] + } + ] + }, + "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", + "symbolRendererParams": { + "centerText": "GUIram2", + "horizontalComponentCenter": 17.5, + "centerTextHeight": 5.0, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.editor/components/GUIram4.json b/net.mograsim.logic.model.editor/components/GUIram4.json new file mode 100644 index 00000000..99f606dd --- /dev/null +++ b/net.mograsim.logic.model.editor/components/GUIram4.json @@ -0,0 +1,3197 @@ +mograsim version: 0.1.3 +{ + "width": 35.0, + "height": 130.0, + "interfacePins": [ + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "QA1", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 55.0 + }, + "name": "QB2", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 45.0 + }, + "name": "QB1", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 25.0 + }, + "name": "QA3", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 75.0 + }, + "name": "QB4", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "QA2", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 65.0 + }, + "name": "QB3", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 35.0 + }, + "name": "QA4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 95.0 + }, + "name": "D1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 45.0 + }, + "name": "B0", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 85.0 + }, + "name": "WE", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 105.0 + }, + "name": "D2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "A0", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 55.0 + }, + "name": "B1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 115.0 + }, + "name": "D3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "A1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 65.0 + }, + "name": "B2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 125.0 + }, + "name": "D4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "A2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 75.0 + }, + "name": "B3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 35.0 + }, + "name": "A3", + "logicWidth": 1 + } + ], + "submodel": { + "innerScale": 0.1, + "subComps": [ + { + "pos": { + "x": 69.0, + "y": 854.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#14", + "params": 1 + }, + { + "pos": { + "x": 64.0, + "y": 844.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#13", + "params": 1 + }, + { + "pos": { + "x": 39.0, + "y": 484.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#16", + "params": 1 + }, + { + "pos": { + "x": 74.0, + "y": 864.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#15", + "params": 1 + }, + { + "pos": { + "x": 49.0, + "y": 504.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#18", + "params": 1 + }, + { + "pos": { + "x": 44.0, + "y": 494.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#17", + "params": 1 + }, + { + "pos": { + "x": 54.0, + "y": 514.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#19", + "params": 1 + }, + { + "pos": { + "x": 155.0, + "y": 325.0 + }, + "id": "GUIand41", + "name": "GUIand41#2" + }, + { + "pos": { + "x": 224.0, + "y": 164.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#1", + "params": 1 + }, + { + "pos": { + "x": 229.0, + "y": 154.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#0", + "params": 1 + }, + { + "pos": { + "x": 214.0, + "y": 184.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#3", + "params": 1 + }, + { + "pos": { + "x": 219.0, + "y": 174.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#2", + "params": 1 + }, + { + "pos": { + "x": 64.0, + "y": 544.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#5", + "params": 1 + }, + { + "pos": { + "x": 59.0, + "y": 534.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#4", + "params": 1 + }, + { + "pos": { + "x": 74.0, + "y": 564.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#7", + "params": 1 + }, + { + "pos": { + "x": 69.0, + "y": 554.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#6", + "params": 1 + }, + { + "pos": { + "x": 64.0, + "y": 694.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#9", + "params": 1 + }, + { + "pos": { + "x": 59.0, + "y": 684.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#8", + "params": 1 + }, + { + "pos": { + "x": 69.0, + "y": 704.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#10", + "params": 1 + }, + { + "pos": { + "x": 235.0, + "y": 150.0 + }, + "id": "GUIand41", + "name": "GUIand41#0" + }, + { + "pos": { + "x": 59.0, + "y": 834.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#12", + "params": 1 + }, + { + "pos": { + "x": 250.0, + "y": 375.0 + }, + "id": "GUIand41", + "name": "GUIand41#1" + }, + { + "pos": { + "x": 74.0, + "y": 714.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#11", + "params": 1 + }, + { + "pos": { + "x": 155.0, + "y": 735.0 + }, + "id": "GUIandor414", + "name": "GUIandor414#5" + }, + { + "pos": { + "x": 44.0, + "y": 349.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#25", + "params": 1 + }, + { + "pos": { + "x": 39.0, + "y": 334.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#24", + "params": 1 + }, + { + "pos": { + "x": 155.0, + "y": 435.0 + }, + "id": "GUIandor414", + "name": "GUIandor414#3" + }, + { + "pos": { + "x": 54.0, + "y": 749.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#27", + "params": 1 + }, + { + "pos": { + "x": 155.0, + "y": 585.0 + }, + "id": "GUIandor414", + "name": "GUIandor414#4" + }, + { + "pos": { + "x": 49.0, + "y": 649.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#26", + "params": 1 + }, + { + "pos": { + "x": 80.0, + "y": 780.0 + }, + "id": "GUIram2", + "name": "GUIram2#3" + }, + { + "pos": { + "x": 80.0, + "y": 630.0 + }, + "id": "GUIram2", + "name": "GUIram2#2" + }, + { + "pos": { + "x": 55.0, + "y": 150.0 + }, + "id": "GUIdemux2", + "name": "GUIdemux2#1" + }, + { + "pos": { + "x": 80.0, + "y": 480.0 + }, + "id": "GUIram2", + "name": "GUIram2#1" + }, + { + "pos": { + "x": 80.0, + "y": 330.0 + }, + "id": "GUIram2", + "name": "GUIram2#0" + }, + { + "pos": { + "x": 250.0, + "y": 635.0 + }, + "id": "GUIandor414", + "name": "GUIandor414#1" + }, + { + "pos": { + "x": 55.0, + "y": 45.0 + }, + "id": "GUIdemux2", + "name": "GUIdemux2#0" + }, + { + "pos": { + "x": 250.0, + "y": 785.0 + }, + "id": "GUIandor414", + "name": "GUIandor414#2" + }, + { + "pos": { + "x": 250.0, + "y": 485.0 + }, + "id": "GUIandor414", + "name": "GUIandor414#0" + }, + { + "pos": { + "x": 44.0, + "y": 644.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#21", + "params": 1 + }, + { + "pos": { + "x": 39.0, + "y": 634.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#20", + "params": 1 + }, + { + "pos": { + "x": 54.0, + "y": 664.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#23", + "params": 1 + }, + { + "pos": { + "x": 49.0, + "y": 654.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#22", + "params": 1 + } + ], + "innerWires": [ + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A0" + }, + "pin2": { + "compName": "GUIdemux2#0", + "pinName": "S0" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A1" + }, + "pin2": { + "compName": "GUIdemux2#0", + "pinName": "S1" + }, + "path": [ + { + "x": 10.0, + "y": 150.0 + }, + { + "x": 10.0, + "y": 60.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B0" + }, + "pin2": { + "compName": "GUIdemux2#1", + "pinName": "S0" + }, + "path": [ + { + "x": 5.0, + "y": 450.0 + }, + { + "x": 5.0, + "y": 155.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B1" + }, + "pin2": { + "compName": "GUIdemux2#1", + "pinName": "S1" + }, + "path": [ + { + "x": 10.0, + "y": 550.0 + }, + { + "x": 10.0, + "y": 165.0 + } + ] + }, + { + "pin1": { + "compName": "GUIdemux2#1", + "pinName": "Y00" + }, + "pin2": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdemux2#1", + "pinName": "Y01" + }, + "pin2": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdemux2#1", + "pinName": "Y10" + }, + "pin2": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdemux2#1", + "pinName": "Y11" + }, + "pin2": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUIand41#0", + "pinName": "A1" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUIand41#0", + "pinName": "A2" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUIand41#0", + "pinName": "A3" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "GUIand41#0", + "pinName": "A4" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "WE" + }, + "pin2": { + "compName": "GUIand41#0", + "pinName": "B" + }, + "path": [ + { + "x": 15.0, + "y": 850.0 + }, + { + "x": 15.0, + "y": 195.0 + } + ] + }, + { + "pin1": { + "compName": "GUIand41#0", + "pinName": "Y1" + }, + "pin2": { + "compName": "GUIram2#0", + "pinName": "WE" + }, + "path": [ + { + "x": 290.0, + "y": 155.0 + }, + { + "x": 290.0, + "y": 230.0 + }, + { + "x": 35.0, + "y": 230.0 + }, + { + "x": 35.0, + "y": 375.0 + } + ] + }, + { + "pin1": { + "compName": "GUIand41#0", + "pinName": "Y2" + }, + "pin2": { + "compName": "GUIram2#1", + "pinName": "WE" + }, + "path": [ + { + "x": 285.0, + "y": 165.0 + }, + { + "x": 285.0, + "y": 225.0 + }, + { + "x": 30.0, + "y": 225.0 + }, + { + "x": 30.0, + "y": 525.0 + } + ] + }, + { + "pin1": { + "compName": "GUIand41#0", + "pinName": "Y3" + }, + "pin2": { + "compName": "GUIram2#2", + "pinName": "WE" + }, + "path": [ + { + "x": 280.0, + "y": 175.0 + }, + { + "x": 280.0, + "y": 220.0 + }, + { + "x": 25.0, + "y": 220.0 + }, + { + "x": 25.0, + "y": 675.0 + } + ] + }, + { + "pin1": { + "compName": "GUIand41#0", + "pinName": "Y4" + }, + "pin2": { + "compName": "GUIram2#3", + "pinName": "WE" + }, + "path": [ + { + "x": 275.0, + "y": 185.0 + }, + { + "x": 275.0, + "y": 215.0 + }, + { + "x": 20.0, + "y": 215.0 + }, + { + "x": 20.0, + "y": 825.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#16", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#24", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#24", + "pinName": "" + }, + "pin2": { + "compName": "GUIram2#0", + "pinName": "A0" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#17", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#25", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#25", + "pinName": "" + }, + "pin2": { + "compName": "GUIram2#0", + "pinName": "A1" + }, + "path": [ + { + "x": 45.0, + "y": 345.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#18", + "pinName": "" + }, + "pin2": { + "compName": "GUIram2#0", + "pinName": "B0" + }, + "path": [ + { + "x": 50.0, + "y": 355.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#19", + "pinName": "" + }, + "pin2": { + "compName": "GUIram2#0", + "pinName": "B1" + }, + "path": [ + { + "x": 55.0, + "y": 365.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#16", + "pinName": "" + }, + "pin2": { + "compName": "GUIram2#1", + "pinName": "A0" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#17", + "pinName": "" + }, + "pin2": { + "compName": "GUIram2#1", + "pinName": "A1" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#18", + "pinName": "" + }, + "pin2": { + "compName": "GUIram2#1", + "pinName": "B0" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#19", + "pinName": "" + }, + "pin2": { + "compName": "GUIram2#1", + "pinName": "B1" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#16", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#20", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#17", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#21", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#18", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#26", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B2" + }, + "pin2": { + "compName": "WireCrossPoint#26", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#26", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#22", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#19", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#23", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#20", + "pinName": "" + }, + "pin2": { + "compName": "GUIram2#2", + "pinName": "A0" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#21", + "pinName": "" + }, + "pin2": { + "compName": "GUIram2#2", + "pinName": "A1" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#22", + "pinName": "" + }, + "pin2": { + "compName": "GUIram2#2", + "pinName": "B0" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#23", + "pinName": "" + }, + "pin2": { + "compName": "GUIram2#2", + "pinName": "B1" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#20", + "pinName": "" + }, + "pin2": { + "compName": "GUIram2#3", + "pinName": "A0" + }, + "path": [ + { + "x": 40.0, + "y": 785.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#21", + "pinName": "" + }, + "pin2": { + "compName": "GUIram2#3", + "pinName": "A1" + }, + "path": [ + { + "x": 45.0, + "y": 795.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#22", + "pinName": "" + }, + "pin2": { + "compName": "GUIram2#3", + "pinName": "B0" + }, + "path": [ + { + "x": 50.0, + "y": 805.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#23", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#27", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#27", + "pinName": "" + }, + "pin2": { + "compName": "GUIram2#3", + "pinName": "B1" + }, + "path": [ + { + "x": 55.0, + "y": 815.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A2" + }, + "pin2": { + "compName": "WireCrossPoint#24", + "pinName": "" + }, + "path": [ + { + "x": 40.0, + "y": 250.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A3" + }, + "pin2": { + "compName": "WireCrossPoint#25", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B3" + }, + "pin2": { + "compName": "WireCrossPoint#27", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "pin2": { + "compName": "GUIram2#0", + "pinName": "D1" + }, + "path": [ + { + "x": 60.0, + "y": 385.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "pin2": { + "compName": "GUIram2#0", + "pinName": "D2" + }, + "path": [ + { + "x": 65.0, + "y": 395.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "pin2": { + "compName": "GUIram2#0", + "pinName": "D3" + }, + "path": [ + { + "x": 70.0, + "y": 405.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "pin2": { + "compName": "GUIram2#0", + "pinName": "D4" + }, + "path": [ + { + "x": 75.0, + "y": 415.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "pin2": { + "compName": "GUIram2#1", + "pinName": "D1" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "pin2": { + "compName": "GUIram2#1", + "pinName": "D2" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "pin2": { + "compName": "GUIram2#1", + "pinName": "D3" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "pin2": { + "compName": "GUIram2#1", + "pinName": "D4" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#8", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#9", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#10", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#11", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#8", + "pinName": "" + }, + "pin2": { + "compName": "GUIram2#2", + "pinName": "D1" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#9", + "pinName": "" + }, + "pin2": { + "compName": "GUIram2#2", + "pinName": "D2" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#10", + "pinName": "" + }, + "pin2": { + "compName": "GUIram2#2", + "pinName": "D3" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#11", + "pinName": "" + }, + "pin2": { + "compName": "GUIram2#2", + "pinName": "D4" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#8", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#12", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#9", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#13", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#10", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#14", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#11", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#15", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#12", + "pinName": "" + }, + "pin2": { + "compName": "GUIram2#3", + "pinName": "D1" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#13", + "pinName": "" + }, + "pin2": { + "compName": "GUIram2#3", + "pinName": "D2" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#14", + "pinName": "" + }, + "pin2": { + "compName": "GUIram2#3", + "pinName": "D3" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#15", + "pinName": "" + }, + "pin2": { + "compName": "GUIram2#3", + "pinName": "D4" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "D1" + }, + "pin2": { + "compName": "WireCrossPoint#12", + "pinName": "" + }, + "path": [ + { + "x": 60.0, + "y": 950.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "D2" + }, + "pin2": { + "compName": "WireCrossPoint#13", + "pinName": "" + }, + "path": [ + { + "x": 65.0, + "y": 1050.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "D3" + }, + "pin2": { + "compName": "WireCrossPoint#14", + "pinName": "" + }, + "path": [ + { + "x": 70.0, + "y": 1150.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "D4" + }, + "pin2": { + "compName": "WireCrossPoint#15", + "pinName": "" + }, + "path": [ + { + "x": 75.0, + "y": 1250.0 + } + ] + }, + { + "pin1": { + "compName": "GUIdemux2#0", + "pinName": "Y00" + }, + "pin2": { + "compName": "GUIand41#2", + "pinName": "B" + }, + "path": [ + { + "x": 135.0, + "y": 50.0 + }, + { + "x": 135.0, + "y": 370.0 + } + ] + }, + { + "pin1": { + "compName": "GUIdemux2#0", + "pinName": "Y01" + }, + "pin2": { + "compName": "GUIandor414#3", + "pinName": "B" + }, + "path": [ + { + "x": 130.0, + "y": 60.0 + }, + { + "x": 130.0, + "y": 520.0 + } + ] + }, + { + "pin1": { + "compName": "GUIdemux2#0", + "pinName": "Y10" + }, + "pin2": { + "compName": "GUIandor414#4", + "pinName": "B" + }, + "path": [ + { + "x": 125.0, + "y": 70.0 + }, + { + "x": 125.0, + "y": 670.0 + } + ] + }, + { + "pin1": { + "compName": "GUIdemux2#0", + "pinName": "Y11" + }, + "pin2": { + "compName": "GUIandor414#5", + "pinName": "B" + }, + "path": [ + { + "x": 120.0, + "y": 80.0 + }, + { + "x": 120.0, + "y": 820.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUIand41#1", + "pinName": "B" + }, + "path": [ + { + "x": 230.0, + "y": 420.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUIandor414#0", + "pinName": "B" + }, + "path": [ + { + "x": 225.0, + "y": 570.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUIandor414#1", + "pinName": "B" + }, + "path": [ + { + "x": 220.0, + "y": 720.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "GUIandor414#2", + "pinName": "B" + }, + "path": [ + { + "x": 215.0, + "y": 870.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram2#0", + "pinName": "QB1" + }, + "pin2": { + "compName": "GUIand41#1", + "pinName": "A1" + }, + "path": [ + { + "x": 140.0, + "y": 375.0 + }, + { + "x": 140.0, + "y": 380.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram2#0", + "pinName": "QB2" + }, + "pin2": { + "compName": "GUIand41#1", + "pinName": "A2" + }, + "path": [ + { + "x": 140.0, + "y": 385.0 + }, + { + "x": 140.0, + "y": 390.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram2#0", + "pinName": "QB3" + }, + "pin2": { + "compName": "GUIand41#1", + "pinName": "A3" + }, + "path": [ + { + "x": 140.0, + "y": 395.0 + }, + { + "x": 140.0, + "y": 400.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram2#0", + "pinName": "QB4" + }, + "pin2": { + "compName": "GUIand41#1", + "pinName": "A4" + }, + "path": [ + { + "x": 140.0, + "y": 405.0 + }, + { + "x": 140.0, + "y": 410.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram2#1", + "pinName": "QB1" + }, + "pin2": { + "compName": "GUIandor414#0", + "pinName": "A1" + }, + "path": [ + { + "x": 140.0, + "y": 525.0 + }, + { + "x": 140.0, + "y": 530.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram2#1", + "pinName": "QB2" + }, + "pin2": { + "compName": "GUIandor414#0", + "pinName": "A2" + }, + "path": [ + { + "x": 140.0, + "y": 535.0 + }, + { + "x": 140.0, + "y": 540.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram2#1", + "pinName": "QB3" + }, + "pin2": { + "compName": "GUIandor414#0", + "pinName": "A3" + }, + "path": [ + { + "x": 140.0, + "y": 545.0 + }, + { + "x": 140.0, + "y": 550.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram2#1", + "pinName": "QB4" + }, + "pin2": { + "compName": "GUIandor414#0", + "pinName": "A4" + }, + "path": [ + { + "x": 140.0, + "y": 555.0 + }, + { + "x": 140.0, + "y": 560.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram2#2", + "pinName": "QB1" + }, + "pin2": { + "compName": "GUIandor414#1", + "pinName": "A1" + }, + "path": [ + { + "x": 140.0, + "y": 675.0 + }, + { + "x": 140.0, + "y": 680.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram2#2", + "pinName": "QB2" + }, + "pin2": { + "compName": "GUIandor414#1", + "pinName": "A2" + }, + "path": [ + { + "x": 140.0, + "y": 685.0 + }, + { + "x": 140.0, + "y": 690.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram2#2", + "pinName": "QB3" + }, + "pin2": { + "compName": "GUIandor414#1", + "pinName": "A3" + }, + "path": [ + { + "x": 140.0, + "y": 695.0 + }, + { + "x": 140.0, + "y": 700.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram2#2", + "pinName": "QB4" + }, + "pin2": { + "compName": "GUIandor414#1", + "pinName": "A4" + }, + "path": [ + { + "x": 140.0, + "y": 705.0 + }, + { + "x": 140.0, + "y": 710.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram2#3", + "pinName": "QB1" + }, + "pin2": { + "compName": "GUIandor414#2", + "pinName": "A1" + }, + "path": [ + { + "x": 140.0, + "y": 825.0 + }, + { + "x": 140.0, + "y": 830.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram2#3", + "pinName": "QB2" + }, + "pin2": { + "compName": "GUIandor414#2", + "pinName": "A2" + }, + "path": [ + { + "x": 140.0, + "y": 835.0 + }, + { + "x": 140.0, + "y": 840.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram2#3", + "pinName": "QB3" + }, + "pin2": { + "compName": "GUIandor414#2", + "pinName": "A3" + }, + "path": [ + { + "x": 140.0, + "y": 845.0 + }, + { + "x": 140.0, + "y": 850.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram2#3", + "pinName": "QB4" + }, + "pin2": { + "compName": "GUIandor414#2", + "pinName": "A4" + }, + "path": [ + { + "x": 140.0, + "y": 855.0 + }, + { + "x": 140.0, + "y": 860.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram2#0", + "pinName": "QA1" + }, + "pin2": { + "compName": "GUIand41#2", + "pinName": "A1" + }, + "path": [ + { + "x": 140.0, + "y": 335.0 + }, + { + "x": 140.0, + "y": 330.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram2#0", + "pinName": "QA2" + }, + "pin2": { + "compName": "GUIand41#2", + "pinName": "A2" + }, + "path": [ + { + "x": 140.0, + "y": 345.0 + }, + { + "x": 140.0, + "y": 340.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram2#0", + "pinName": "QA3" + }, + "pin2": { + "compName": "GUIand41#2", + "pinName": "A3" + }, + "path": [ + { + "x": 140.0, + "y": 355.0 + }, + { + "x": 140.0, + "y": 350.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram2#0", + "pinName": "QA4" + }, + "pin2": { + "compName": "GUIand41#2", + "pinName": "A4" + }, + "path": [ + { + "x": 140.0, + "y": 365.0 + }, + { + "x": 140.0, + "y": 360.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram2#1", + "pinName": "QA1" + }, + "pin2": { + "compName": "GUIandor414#3", + "pinName": "A1" + }, + "path": [ + { + "x": 140.0, + "y": 485.0 + }, + { + "x": 140.0, + "y": 480.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram2#1", + "pinName": "QA2" + }, + "pin2": { + "compName": "GUIandor414#3", + "pinName": "A2" + }, + "path": [ + { + "x": 140.0, + "y": 495.0 + }, + { + "x": 140.0, + "y": 490.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram2#1", + "pinName": "QA3" + }, + "pin2": { + "compName": "GUIandor414#3", + "pinName": "A3" + }, + "path": [ + { + "x": 140.0, + "y": 505.0 + }, + { + "x": 140.0, + "y": 500.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram2#1", + "pinName": "QA4" + }, + "pin2": { + "compName": "GUIandor414#3", + "pinName": "A4" + }, + "path": [ + { + "x": 140.0, + "y": 515.0 + }, + { + "x": 140.0, + "y": 510.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram2#2", + "pinName": "QA1" + }, + "pin2": { + "compName": "GUIandor414#4", + "pinName": "A1" + }, + "path": [ + { + "x": 140.0, + "y": 635.0 + }, + { + "x": 140.0, + "y": 630.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram2#2", + "pinName": "QA2" + }, + "pin2": { + "compName": "GUIandor414#4", + "pinName": "A2" + }, + "path": [ + { + "x": 140.0, + "y": 645.0 + }, + { + "x": 140.0, + "y": 640.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram2#2", + "pinName": "QA3" + }, + "pin2": { + "compName": "GUIandor414#4", + "pinName": "A3" + }, + "path": [ + { + "x": 140.0, + "y": 655.0 + }, + { + "x": 140.0, + "y": 650.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram2#2", + "pinName": "QA4" + }, + "pin2": { + "compName": "GUIandor414#4", + "pinName": "A4" + }, + "path": [ + { + "x": 140.0, + "y": 665.0 + }, + { + "x": 140.0, + "y": 660.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram2#3", + "pinName": "QA1" + }, + "pin2": { + "compName": "GUIandor414#5", + "pinName": "A1" + }, + "path": [ + { + "x": 140.0, + "y": 785.0 + }, + { + "x": 140.0, + "y": 780.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram2#3", + "pinName": "QA2" + }, + "pin2": { + "compName": "GUIandor414#5", + "pinName": "A2" + }, + "path": [ + { + "x": 140.0, + "y": 795.0 + }, + { + "x": 140.0, + "y": 790.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram2#3", + "pinName": "QA3" + }, + "pin2": { + "compName": "GUIandor414#5", + "pinName": "A3" + }, + "path": [ + { + "x": 140.0, + "y": 805.0 + }, + { + "x": 140.0, + "y": 800.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram2#3", + "pinName": "QA4" + }, + "pin2": { + "compName": "GUIandor414#5", + "pinName": "A4" + }, + "path": [ + { + "x": 140.0, + "y": 815.0 + }, + { + "x": 140.0, + "y": 810.0 + } + ] + }, + { + "pin1": { + "compName": "GUIand41#1", + "pinName": "Y1" + }, + "pin2": { + "compName": "GUIandor414#0", + "pinName": "C1" + }, + "path": [ + { + "x": 305.0, + "y": 380.0 + }, + { + "x": 305.0, + "y": 445.0 + }, + { + "x": 245.0, + "y": 445.0 + }, + { + "x": 245.0, + "y": 490.0 + } + ] + }, + { + "pin1": { + "compName": "GUIand41#1", + "pinName": "Y2" + }, + "pin2": { + "compName": "GUIandor414#0", + "pinName": "C2" + }, + "path": [ + { + "x": 300.0, + "y": 390.0 + }, + { + "x": 300.0, + "y": 440.0 + }, + { + "x": 240.0, + "y": 440.0 + }, + { + "x": 240.0, + "y": 500.0 + } + ] + }, + { + "pin1": { + "compName": "GUIand41#1", + "pinName": "Y3" + }, + "pin2": { + "compName": "GUIandor414#0", + "pinName": "C3" + }, + "path": [ + { + "x": 295.0, + "y": 400.0 + }, + { + "x": 295.0, + "y": 435.0 + }, + { + "x": 235.0, + "y": 435.0 + }, + { + "x": 235.0, + "y": 510.0 + } + ] + }, + { + "pin1": { + "compName": "GUIand41#1", + "pinName": "Y4" + }, + "pin2": { + "compName": "GUIandor414#0", + "pinName": "C4" + }, + "path": [ + { + "x": 290.0, + "y": 410.0 + }, + { + "x": 290.0, + "y": 430.0 + }, + { + "x": 230.0, + "y": 430.0 + }, + { + "x": 230.0, + "y": 520.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#0", + "pinName": "Y1" + }, + "pin2": { + "compName": "GUIandor414#1", + "pinName": "C1" + }, + "path": [ + { + "x": 305.0, + "y": 490.0 + }, + { + "x": 305.0, + "y": 595.0 + }, + { + "x": 245.0, + "y": 595.0 + }, + { + "x": 245.0, + "y": 640.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#0", + "pinName": "Y2" + }, + "pin2": { + "compName": "GUIandor414#1", + "pinName": "C2" + }, + "path": [ + { + "x": 300.0, + "y": 500.0 + }, + { + "x": 300.0, + "y": 590.0 + }, + { + "x": 240.0, + "y": 590.0 + }, + { + "x": 240.0, + "y": 650.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#0", + "pinName": "Y3" + }, + "pin2": { + "compName": "GUIandor414#1", + "pinName": "C3" + }, + "path": [ + { + "x": 295.0, + "y": 510.0 + }, + { + "x": 295.0, + "y": 585.0 + }, + { + "x": 235.0, + "y": 585.0 + }, + { + "x": 235.0, + "y": 660.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#0", + "pinName": "Y4" + }, + "pin2": { + "compName": "GUIandor414#1", + "pinName": "C4" + }, + "path": [ + { + "x": 290.0, + "y": 520.0 + }, + { + "x": 290.0, + "y": 580.0 + }, + { + "x": 230.0, + "y": 580.0 + }, + { + "x": 230.0, + "y": 670.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#1", + "pinName": "Y1" + }, + "pin2": { + "compName": "GUIandor414#2", + "pinName": "C1" + }, + "path": [ + { + "x": 305.0, + "y": 640.0 + }, + { + "x": 305.0, + "y": 745.0 + }, + { + "x": 245.0, + "y": 745.0 + }, + { + "x": 245.0, + "y": 790.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#1", + "pinName": "Y2" + }, + "pin2": { + "compName": "GUIandor414#2", + "pinName": "C2" + }, + "path": [ + { + "x": 300.0, + "y": 650.0 + }, + { + "x": 300.0, + "y": 740.0 + }, + { + "x": 240.0, + "y": 740.0 + }, + { + "x": 240.0, + "y": 800.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#1", + "pinName": "Y3" + }, + "pin2": { + "compName": "GUIandor414#2", + "pinName": "C3" + }, + "path": [ + { + "x": 295.0, + "y": 660.0 + }, + { + "x": 295.0, + "y": 735.0 + }, + { + "x": 235.0, + "y": 735.0 + }, + { + "x": 235.0, + "y": 810.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#1", + "pinName": "Y4" + }, + "pin2": { + "compName": "GUIandor414#2", + "pinName": "C4" + }, + "path": [ + { + "x": 290.0, + "y": 670.0 + }, + { + "x": 290.0, + "y": 730.0 + }, + { + "x": 230.0, + "y": 730.0 + }, + { + "x": 230.0, + "y": 820.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#2", + "pinName": "Y1" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "QB1" + }, + "path": [ + { + "x": 330.0, + "y": 790.0 + }, + { + "x": 330.0, + "y": 450.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#2", + "pinName": "Y2" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "QB2" + }, + "path": [ + { + "x": 335.0, + "y": 800.0 + }, + { + "x": 335.0, + "y": 550.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#2", + "pinName": "Y3" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "QB3" + }, + "path": [ + { + "x": 340.0, + "y": 810.0 + }, + { + "x": 340.0, + "y": 650.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#2", + "pinName": "Y4" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "QB4" + }, + "path": [ + { + "x": 345.0, + "y": 820.0 + }, + { + "x": 345.0, + "y": 750.0 + } + ] + }, + { + "pin1": { + "compName": "GUIand41#2", + "pinName": "Y1" + }, + "pin2": { + "compName": "GUIandor414#3", + "pinName": "C1" + }, + "path": [ + { + "x": 210.0, + "y": 330.0 + }, + { + "x": 210.0, + "y": 430.0 + }, + { + "x": 150.0, + "y": 430.0 + }, + { + "x": 150.0, + "y": 440.0 + } + ] + }, + { + "pin1": { + "compName": "GUIand41#2", + "pinName": "Y2" + }, + "pin2": { + "compName": "GUIandor414#3", + "pinName": "C2" + }, + "path": [ + { + "x": 205.0, + "y": 340.0 + }, + { + "x": 205.0, + "y": 425.0 + }, + { + "x": 145.0, + "y": 425.0 + }, + { + "x": 145.0, + "y": 450.0 + } + ] + }, + { + "pin1": { + "compName": "GUIand41#2", + "pinName": "Y3" + }, + "pin2": { + "compName": "GUIandor414#3", + "pinName": "C3" + }, + "path": [ + { + "x": 200.0, + "y": 350.0 + }, + { + "x": 200.0, + "y": 420.0 + }, + { + "x": 140.0, + "y": 420.0 + }, + { + "x": 140.0, + "y": 460.0 + } + ] + }, + { + "pin1": { + "compName": "GUIand41#2", + "pinName": "Y4" + }, + "pin2": { + "compName": "GUIandor414#3", + "pinName": "C4" + }, + "path": [ + { + "x": 195.0, + "y": 360.0 + }, + { + "x": 195.0, + "y": 415.0 + }, + { + "x": 135.0, + "y": 415.0 + }, + { + "x": 135.0, + "y": 470.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#3", + "pinName": "Y1" + }, + "pin2": { + "compName": "GUIandor414#4", + "pinName": "C1" + }, + "path": [ + { + "x": 210.0, + "y": 440.0 + }, + { + "x": 210.0, + "y": 580.0 + }, + { + "x": 150.0, + "y": 580.0 + }, + { + "x": 150.0, + "y": 590.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#3", + "pinName": "Y2" + }, + "pin2": { + "compName": "GUIandor414#4", + "pinName": "C2" + }, + "path": [ + { + "x": 205.0, + "y": 450.0 + }, + { + "x": 205.0, + "y": 575.0 + }, + { + "x": 145.0, + "y": 575.0 + }, + { + "x": 145.0, + "y": 600.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#3", + "pinName": "Y3" + }, + "pin2": { + "compName": "GUIandor414#4", + "pinName": "C3" + }, + "path": [ + { + "x": 200.0, + "y": 460.0 + }, + { + "x": 200.0, + "y": 570.0 + }, + { + "x": 140.0, + "y": 570.0 + }, + { + "x": 140.0, + "y": 610.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#3", + "pinName": "Y4" + }, + "pin2": { + "compName": "GUIandor414#4", + "pinName": "C4" + }, + "path": [ + { + "x": 195.0, + "y": 470.0 + }, + { + "x": 195.0, + "y": 565.0 + }, + { + "x": 135.0, + "y": 565.0 + }, + { + "x": 135.0, + "y": 620.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#4", + "pinName": "Y1" + }, + "pin2": { + "compName": "GUIandor414#5", + "pinName": "C1" + }, + "path": [ + { + "x": 210.0, + "y": 590.0 + }, + { + "x": 210.0, + "y": 730.0 + }, + { + "x": 150.0, + "y": 730.0 + }, + { + "x": 150.0, + "y": 740.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#4", + "pinName": "Y2" + }, + "pin2": { + "compName": "GUIandor414#5", + "pinName": "C2" + }, + "path": [ + { + "x": 205.0, + "y": 600.0 + }, + { + "x": 205.0, + "y": 725.0 + }, + { + "x": 145.0, + "y": 725.0 + }, + { + "x": 145.0, + "y": 750.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#4", + "pinName": "Y3" + }, + "pin2": { + "compName": "GUIandor414#5", + "pinName": "C3" + }, + "path": [ + { + "x": 200.0, + "y": 610.0 + }, + { + "x": 200.0, + "y": 720.0 + }, + { + "x": 140.0, + "y": 720.0 + }, + { + "x": 140.0, + "y": 760.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#4", + "pinName": "Y4" + }, + "pin2": { + "compName": "GUIandor414#5", + "pinName": "C4" + }, + "path": [ + { + "x": 195.0, + "y": 620.0 + }, + { + "x": 195.0, + "y": 715.0 + }, + { + "x": 135.0, + "y": 715.0 + }, + { + "x": 135.0, + "y": 770.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#5", + "pinName": "Y1" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "QA1" + }, + "path": [ + { + "x": 210.0, + "y": 740.0 + }, + { + "x": 210.0, + "y": 880.0 + }, + { + "x": 310.0, + "y": 880.0 + }, + { + "x": 310.0, + "y": 50.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#5", + "pinName": "Y2" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "QA2" + }, + "path": [ + { + "x": 205.0, + "y": 750.0 + }, + { + "x": 205.0, + "y": 885.0 + }, + { + "x": 315.0, + "y": 885.0 + }, + { + "x": 315.0, + "y": 150.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#5", + "pinName": "Y3" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "QA3" + }, + "path": [ + { + "x": 200.0, + "y": 760.0 + }, + { + "x": 200.0, + "y": 890.0 + }, + { + "x": 320.0, + "y": 890.0 + }, + { + "x": 320.0, + "y": 250.0 + } + ] + }, + { + "pin1": { + "compName": "GUIandor414#5", + "pinName": "Y4" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "QA4" + }, + "path": [ + { + "x": 195.0, + "y": 770.0 + }, + { + "x": 195.0, + "y": 895.0 + }, + { + "x": 325.0, + "y": 895.0 + }, + { + "x": 325.0, + "y": 350.0 + } + ] + } + ] + }, + "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", + "symbolRendererParams": { + "centerText": "GUIram4", + "horizontalComponentCenter": 17.5, + "centerTextHeight": 5.0, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.editor/components/GUIsel2_4.json b/net.mograsim.logic.model.editor/components/GUIsel2_4.json new file mode 100644 index 00000000..219e1b9d --- /dev/null +++ b/net.mograsim.logic.model.editor/components/GUIsel2_4.json @@ -0,0 +1,812 @@ +mograsim version: 0.1.3 +{ + "width": 35.0, + "height": 100.0, + "interfacePins": [ + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "SA", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "SB", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 65.0 + }, + "name": "B1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "A1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 75.0 + }, + "name": "B2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 35.0 + }, + "name": "A2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 85.0 + }, + "name": "B3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 45.0 + }, + "name": "A3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 95.0 + }, + "name": "B4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 55.0 + }, + "name": "A4", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Y1", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "Y2", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 25.0 + }, + "name": "Y3", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 35.0 + }, + "name": "Y4", + "logicWidth": 1 + } + ], + "submodel": { + "innerScale": 0.4, + "subComps": [ + { + "pos": { + "x": 20.0, + "y": 52.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#1", + "params": 1 + }, + { + "pos": { + "x": 20.0, + "y": 2.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#0", + "params": 1 + }, + { + "pos": { + "x": 20.0, + "y": 152.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#3", + "params": 1 + }, + { + "pos": { + "x": 20.0, + "y": 102.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#2", + "params": 1 + }, + { + "pos": { + "x": 65.0, + "y": 77.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#11", + "params": 1 + }, + { + "pos": { + "x": 65.0, + "y": 52.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#10", + "params": 1 + }, + { + "pos": { + "x": 6.5, + "y": 66.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#1", + "params": 1 + }, + { + "pos": { + "x": 6.5, + "y": 16.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#0", + "params": 1 + }, + { + "pos": { + "x": 4.0, + "y": 41.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#3", + "params": 1 + }, + { + "pos": { + "x": 6.5, + "y": 116.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#2", + "params": 1 + }, + { + "pos": { + "x": 4.0, + "y": 141.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#5", + "params": 1 + }, + { + "pos": { + "x": 4.0, + "y": 91.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#4", + "params": 1 + }, + { + "pos": { + "x": 65.0, + "y": 27.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#9", + "params": 1 + }, + { + "pos": { + "x": 65.0, + "y": 2.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#8", + "params": 1 + }, + { + "pos": { + "x": 20.0, + "y": 77.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#5", + "params": 1 + }, + { + "pos": { + "x": 20.0, + "y": 27.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#4", + "params": 1 + }, + { + "pos": { + "x": 20.0, + "y": 177.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#7", + "params": 1 + }, + { + "pos": { + "x": 20.0, + "y": 127.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#6", + "params": 1 + } + ], + "innerWires": [ + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A1" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "A" + }, + "path": [ + { + "x": 15.0, + "y": 62.5 + }, + { + "x": 15.0, + "y": 7.5 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A2" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "A" + }, + "path": [ + { + "x": 17.5, + "y": 87.5 + }, + { + "x": 17.5, + "y": 57.5 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A3" + }, + "pin2": { + "compName": "GUINandGate#2", + "pinName": "A" + }, + "path": [ + { + "x": 17.5, + "y": 112.5 + }, + { + "x": 17.5, + "y": 107.5 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A4" + }, + "pin2": { + "compName": "GUINandGate#3", + "pinName": "A" + }, + "path": [ + { + "x": 17.5, + "y": 137.5 + }, + { + "x": 17.5, + "y": 157.5 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B1" + }, + "pin2": { + "compName": "GUINandGate#4", + "pinName": "A" + }, + "path": [ + { + "x": 10.0, + "y": 162.5 + }, + { + "x": 10.0, + "y": 32.5 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B2" + }, + "pin2": { + "compName": "GUINandGate#5", + "pinName": "A" + }, + "path": [ + { + "x": 12.5, + "y": 187.5 + }, + { + "x": 12.5, + "y": 82.5 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B3" + }, + "pin2": { + "compName": "GUINandGate#6", + "pinName": "A" + }, + "path": [ + { + "x": 15.0, + "y": 212.5 + }, + { + "x": 15.0, + "y": 132.5 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B4" + }, + "pin2": { + "compName": "GUINandGate#7", + "pinName": "A" + }, + "path": [ + { + "x": 10.0, + "y": 237.5 + }, + { + "x": 10.0, + "y": 182.5 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "SA" + }, + "pin2": { + "compName": "WireCrossPoint#0", + "pinName": "" + } + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "SB" + }, + "pin2": { + "compName": "WireCrossPoint#3", + "pinName": "" + } + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#1", + "pinName": "" + } + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "B" + } + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#2", + "pinName": "" + } + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "B" + } + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#2", + "pinName": "B" + } + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#3", + "pinName": "B" + }, + "path": [ + { + "x": 7.5, + "y": 167.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#4", + "pinName": "" + } + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#4", + "pinName": "B" + } + }, + { + "pin1": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#5", + "pinName": "" + } + }, + { + "pin1": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#5", + "pinName": "B" + } + }, + { + "pin1": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#6", + "pinName": "B" + } + }, + { + "pin1": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#7", + "pinName": "B" + }, + "path": [ + { + "x": 5.0, + "y": 192.5 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#0", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#8", + "pinName": "A" + }, + "path": [ + { + "x": 42.5, + "y": 12.5 + }, + { + "x": 42.5, + "y": 7.5 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#4", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#8", + "pinName": "B" + }, + "path": [ + { + "x": 45.0, + "y": 37.5 + }, + { + "x": 45.0, + "y": 17.5 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#1", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#9", + "pinName": "A" + }, + "path": [ + { + "x": 47.5, + "y": 62.5 + }, + { + "x": 47.5, + "y": 32.5 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#5", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#9", + "pinName": "B" + }, + "path": [ + { + "x": 50.0, + "y": 87.5 + }, + { + "x": 50.0, + "y": 42.5 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#2", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#10", + "pinName": "A" + }, + "path": [ + { + "x": 52.5, + "y": 112.5 + }, + { + "x": 52.5, + "y": 57.5 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#6", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#10", + "pinName": "B" + }, + "path": [ + { + "x": 55.0, + "y": 137.5 + }, + { + "x": 55.0, + "y": 67.5 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#3", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#11", + "pinName": "A" + }, + "path": [ + { + "x": 57.5, + "y": 162.5 + }, + { + "x": 57.5, + "y": 82.5 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#7", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#11", + "pinName": "B" + }, + "path": [ + { + "x": 60.0, + "y": 187.5 + }, + { + "x": 60.0, + "y": 92.5 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#8", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y1" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUINandGate#9", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y2" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUINandGate#10", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y3" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUINandGate#11", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y4" + }, + "path": [] + } + ] + }, + "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", + "symbolRendererParams": { + "centerText": "GUIsel2_4", + "horizontalComponentCenter": 17.5, + "centerTextHeight": 5.0, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.editor/components/GUIsel3_4.json b/net.mograsim.logic.model.editor/components/GUIsel3_4.json new file mode 100644 index 00000000..1cae789a --- /dev/null +++ b/net.mograsim.logic.model.editor/components/GUIsel3_4.json @@ -0,0 +1,878 @@ +mograsim version: 0.1.3 +{ + "width": 35.0, + "height": 150.0, + "interfacePins": [ + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "SA", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 115.0 + }, + "name": "C1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "SB", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 75.0 + }, + "name": "B1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 125.0 + }, + "name": "C2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "SC", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 35.0 + }, + "name": "A1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 85.0 + }, + "name": "B2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 135.0 + }, + "name": "C3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 45.0 + }, + "name": "A2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 95.0 + }, + "name": "B3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 145.0 + }, + "name": "C4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 55.0 + }, + "name": "A3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 105.0 + }, + "name": "B4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 65.0 + }, + "name": "A4", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Y1", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "Y2", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 25.0 + }, + "name": "Y3", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 35.0 + }, + "name": "Y4", + "logicWidth": 1 + } + ], + "submodel": { + "innerScale": 0.2, + "subComps": [ + { + "pos": { + "x": 50.0, + "y": 620.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#1", + "params": 1 + }, + { + "pos": { + "x": 50.0, + "y": 570.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#0", + "params": 1 + }, + { + "pos": { + "x": 50.0, + "y": 720.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#3", + "params": 1 + }, + { + "pos": { + "x": 50.0, + "y": 670.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#2", + "params": 1 + }, + { + "pos": { + "x": 75.0, + "y": 250.0 + }, + "id": "GUInot4", + "name": "GUInot4#0" + }, + { + "pos": { + "x": 29.0, + "y": 634.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#1", + "params": 1 + }, + { + "pos": { + "x": 29.0, + "y": 584.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#0", + "params": 1 + }, + { + "pos": { + "x": 29.0, + "y": 684.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#2", + "params": 1 + }, + { + "pos": { + "x": 152.5, + "y": 65.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#5", + "params": 1 + }, + { + "pos": { + "x": 35.0, + "y": 250.0 + }, + "id": "GUIsel2_4", + "name": "GUIsel2_4#0" + }, + { + "pos": { + "x": 152.5, + "y": 15.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#4", + "params": 1 + }, + { + "pos": { + "x": 152.5, + "y": 165.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#7", + "params": 1 + }, + { + "pos": { + "x": 152.5, + "y": 115.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#6", + "params": 1 + } + ], + "innerWires": [ + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "SA" + }, + "pin2": { + "compName": "GUIsel2_4#0", + "pinName": "SA" + }, + "path": [ + { + "x": 25.0, + "y": 25.0 + }, + { + "x": 25.0, + "y": 255.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "SB" + }, + "pin2": { + "compName": "GUIsel2_4#0", + "pinName": "SB" + }, + "path": [ + { + "x": 20.0, + "y": 75.0 + }, + { + "x": 20.0, + "y": 265.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A1" + }, + "pin2": { + "compName": "GUIsel2_4#0", + "pinName": "A1" + }, + "path": [ + { + "x": 15.0, + "y": 175.0 + }, + { + "x": 15.0, + "y": 275.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A2" + }, + "pin2": { + "compName": "GUIsel2_4#0", + "pinName": "A2" + }, + "path": [ + { + "x": 10.0, + "y": 225.0 + }, + { + "x": 10.0, + "y": 285.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A3" + }, + "pin2": { + "compName": "GUIsel2_4#0", + "pinName": "A3" + }, + "path": [ + { + "x": 5.0, + "y": 275.0 + }, + { + "x": 5.0, + "y": 295.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A4" + }, + "pin2": { + "compName": "GUIsel2_4#0", + "pinName": "A4" + }, + "path": [ + { + "x": 5.0, + "y": 325.0 + }, + { + "x": 5.0, + "y": 305.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B1" + }, + "pin2": { + "compName": "GUIsel2_4#0", + "pinName": "B1" + }, + "path": [ + { + "x": 10.0, + "y": 375.0 + }, + { + "x": 10.0, + "y": 315.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B2" + }, + "pin2": { + "compName": "GUIsel2_4#0", + "pinName": "B2" + }, + "path": [ + { + "x": 15.0, + "y": 425.0 + }, + { + "x": 15.0, + "y": 325.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B3" + }, + "pin2": { + "compName": "GUIsel2_4#0", + "pinName": "B3" + }, + "path": [ + { + "x": 20.0, + "y": 475.0 + }, + { + "x": 20.0, + "y": 335.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B4" + }, + "pin2": { + "compName": "GUIsel2_4#0", + "pinName": "B4" + }, + "path": [ + { + "x": 25.0, + "y": 525.0 + }, + { + "x": 25.0, + "y": 345.0 + } + ] + }, + { + "pin1": { + "compName": "GUIsel2_4#0", + "pinName": "Y1" + }, + "pin2": { + "compName": "GUInot4#0", + "pinName": "A1" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIsel2_4#0", + "pinName": "Y2" + }, + "pin2": { + "compName": "GUInot4#0", + "pinName": "A2" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIsel2_4#0", + "pinName": "Y3" + }, + "pin2": { + "compName": "GUInot4#0", + "pinName": "A3" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIsel2_4#0", + "pinName": "Y4" + }, + "pin2": { + "compName": "GUInot4#0", + "pinName": "A4" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "SC" + }, + "pin2": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "path": [ + { + "x": 30.0, + "y": 125.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "path": [ + { + "x": 30.0, + "y": 125.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "path": [ + { + "x": 30.0, + "y": 125.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#2", + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#3", + "pinName": "B" + }, + "path": [ + { + "x": 30.0, + "y": 735.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "C1" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "C2" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "C3" + }, + "pin2": { + "compName": "GUINandGate#2", + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "C4" + }, + "pin2": { + "compName": "GUINandGate#3", + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUInot4#0", + "pinName": "Y1" + }, + "pin2": { + "compName": "GUINandGate#4", + "pinName": "A" + }, + "path": [ + { + "x": 115.0, + "y": 255.0 + }, + { + "x": 115.0, + "y": 20.0 + } + ] + }, + { + "pin1": { + "compName": "GUInot4#0", + "pinName": "Y2" + }, + "pin2": { + "compName": "GUINandGate#5", + "pinName": "A" + }, + "path": [ + { + "x": 120.0, + "y": 265.0 + }, + { + "x": 120.0, + "y": 70.0 + } + ] + }, + { + "pin1": { + "compName": "GUInot4#0", + "pinName": "Y3" + }, + "pin2": { + "compName": "GUINandGate#6", + "pinName": "A" + }, + "path": [ + { + "x": 125.0, + "y": 275.0 + }, + { + "x": 125.0, + "y": 120.0 + } + ] + }, + { + "pin1": { + "compName": "GUInot4#0", + "pinName": "Y4" + }, + "pin2": { + "compName": "GUINandGate#7", + "pinName": "A" + }, + "path": [ + { + "x": 130.0, + "y": 285.0 + }, + { + "x": 130.0, + "y": 170.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#0", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#4", + "pinName": "B" + }, + "path": [ + { + "x": 135.0, + "y": 580.0 + }, + { + "x": 135.0, + "y": 30.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#1", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#5", + "pinName": "B" + }, + "path": [ + { + "x": 140.0, + "y": 630.0 + }, + { + "x": 140.0, + "y": 80.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#2", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#6", + "pinName": "B" + }, + "path": [ + { + "x": 145.0, + "y": 680.0 + }, + { + "x": 145.0, + "y": 130.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#3", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#7", + "pinName": "B" + }, + "path": [ + { + "x": 150.0, + "y": 730.0 + }, + { + "x": 150.0, + "y": 180.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#4", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y1" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUINandGate#5", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y2" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUINandGate#6", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y3" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUINandGate#7", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y4" + }, + "path": [] + } + ] + }, + "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", + "symbolRendererParams": { + "centerText": "GUIsel3_4", + "horizontalComponentCenter": 17.5, + "centerTextHeight": 5.0, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.editor/components/GUIxor.json b/net.mograsim.logic.model.editor/components/GUIxor.json new file mode 100644 index 00000000..9e3ec592 --- /dev/null +++ b/net.mograsim.logic.model.editor/components/GUIxor.json @@ -0,0 +1,267 @@ +mograsim version: 0.1.3 +{ + "width": 35.0, + "height": 20.0, + "interfacePins": [ + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "A", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "B", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Y", + "logicWidth": 1 + } + ], + "submodel": { + "innerScale": 0.4, + "subComps": [ + { + "pos": { + "x": 35.0, + "y": 2.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#1", + "params": 1 + }, + { + "pos": { + "x": 7.5, + "y": 15.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#0", + "params": 1 + }, + { + "pos": { + "x": 62.5, + "y": 15.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#3", + "params": 1 + }, + { + "pos": { + "x": 4.0, + "y": 36.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#1", + "params": 1 + }, + { + "pos": { + "x": 35.0, + "y": 27.5 + }, + "id": "GUINandGate", + "name": "GUINandGate#2", + "params": 1 + }, + { + "pos": { + "x": 4.0, + "y": 11.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#0", + "params": 1 + }, + { + "pos": { + "x": 29.0, + "y": 24.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#2", + "params": 1 + } + ], + "innerWires": [ + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A" + }, + "pin2": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B" + }, + "pin2": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "A" + }, + "path": [ + { + "x": 5.0, + "y": 20.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "B" + }, + "path": [ + { + "x": 5.0, + "y": 30.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#0", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#2", + "pinName": "" + } + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "B" + }, + "path": [ + { + "x": 30.0, + "y": 17.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#2", + "pinName": "A" + }, + "path": [ + { + "x": 30.0, + "y": 32.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "A" + }, + "path": [ + { + "x": 5.0, + "y": 7.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#2", + "pinName": "B" + }, + "path": [ + { + "x": 5.0, + "y": 42.5 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#1", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#3", + "pinName": "A" + } + }, + { + "pin1": { + "compName": "GUINandGate#2", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#3", + "pinName": "B" + } + }, + { + "pin1": { + "compName": "GUINandGate#3", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y" + } + } + ] + }, + "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", + "symbolRendererParams": { + "centerText": "GUIxor", + "horizontalComponentCenter": 17.5, + "centerTextHeight": 5.0, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.editor/components/am2901/GUIAm2901.json b/net.mograsim.logic.model.editor/components/am2901/GUIAm2901.json new file mode 100644 index 00000000..7563d838 --- /dev/null +++ b/net.mograsim.logic.model.editor/components/am2901/GUIAm2901.json @@ -0,0 +1,3245 @@ +mograsim version: 0.1.3 +{ + "width": 35.0, + "height": 270.0, + "interfacePins": [ + { + "location": { + "x": 35.0, + "y": 85.0 + }, + "name": "ORAMn", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 95.0 + }, + "name": "C", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 265.0 + }, + "name": "IQn+3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 85.0 + }, + "name": "I0", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 255.0 + }, + "name": "IQn", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 75.0 + }, + "name": "I1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 65.0 + }, + "name": "I2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 55.0 + }, + "name": "I3", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 65.0 + }, + "name": "OVR", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 45.0 + }, + "name": "I4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 105.0 + }, + "name": "Cn", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 115.0 + }, + "name": "OQn+3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 35.0 + }, + "name": "I5", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "I6", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 105.0 + }, + "name": "OQn", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "I7", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "I8", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 155.0 + }, + "name": "A0", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 165.0 + }, + "name": "A1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 175.0 + }, + "name": "A2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 185.0 + }, + "name": "A3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 235.0 + }, + "name": "IRAMn", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 55.0 + }, + "name": "Cn+4", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 95.0 + }, + "name": "ORAMn+3", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 45.0 + }, + "name": "F\u003d0", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 115.0 + }, + "name": "D1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 245.0 + }, + "name": "IRAMn+3", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 75.0 + }, + "name": "F3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 125.0 + }, + "name": "D2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 195.0 + }, + "name": "B0", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 135.0 + }, + "name": "D3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 205.0 + }, + "name": "B1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 145.0 + }, + "name": "D4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 215.0 + }, + "name": "B2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 225.0 + }, + "name": "B3", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Y1", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "Y2", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 25.0 + }, + "name": "Y3", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 35.0 + }, + "name": "Y4", + "logicWidth": 1 + } + ], + "submodel": { + "innerScale": 0.1, + "subComps": [ + { + "pos": { + "x": 45.0, + "y": 2310.0 + }, + "id": "GUIsel3_4", + "name": "GUIsel3_4#0" + }, + { + "pos": { + "x": 144.0, + "y": 2524.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#14", + "params": 1 + }, + { + "pos": { + "x": 45.0, + "y": 2510.0 + }, + "id": "GUIsel3_4", + "name": "GUIsel3_4#1" + }, + { + "pos": { + "x": 139.0, + "y": 2514.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#13", + "params": 1 + }, + { + "pos": { + "x": 234.0, + "y": 2524.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#16", + "params": 1 + }, + { + "pos": { + "x": 219.0, + "y": 2494.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#15", + "params": 1 + }, + { + "pos": { + "x": 15.0, + "y": 45.0 + }, + "id": "GUIAm2901DestDecode", + "name": "GUIAm2901DestDecode#0" + }, + { + "pos": { + "x": 39.0, + "y": 2634.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#18", + "params": 1 + }, + { + "pos": { + "x": 34.0, + "y": 2624.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#17", + "params": 1 + }, + { + "pos": { + "x": 279.0, + "y": 2114.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#19", + "params": 1 + }, + { + "pos": { + "x": 154.0, + "y": 89.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#1", + "params": 1 + }, + { + "pos": { + "x": 154.0, + "y": 949.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#0", + "params": 1 + }, + { + "pos": { + "x": 154.0, + "y": 2319.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#3", + "params": 1 + }, + { + "pos": { + "x": 154.0, + "y": 2264.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#2", + "params": 1 + }, + { + "pos": { + "x": 34.0, + "y": 2324.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#5", + "params": 1 + }, + { + "pos": { + "x": 39.0, + "y": 2314.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#4", + "params": 1 + }, + { + "pos": { + "x": 219.0, + "y": 2224.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#7", + "params": 1 + }, + { + "pos": { + "x": 29.0, + "y": 2334.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#6", + "params": 1 + }, + { + "pos": { + "x": 229.0, + "y": 2244.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#9", + "params": 1 + }, + { + "pos": { + "x": 224.0, + "y": 2234.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#8", + "params": 1 + }, + { + "pos": { + "x": 234.0, + "y": 2254.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#10", + "params": 1 + }, + { + "pos": { + "x": 134.0, + "y": 2504.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#12", + "params": 1 + }, + { + "pos": { + "x": 129.0, + "y": 2494.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#11", + "params": 1 + }, + { + "pos": { + "x": 160.0, + "y": 2275.0 + }, + "id": "GUIdlatch4", + "name": "GUIdlatch4#1" + }, + { + "pos": { + "x": 160.0, + "y": 2220.0 + }, + "id": "GUIdlatch4", + "name": "GUIdlatch4#0" + }, + { + "pos": { + "x": 314.0, + "y": 449.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#40", + "params": 1 + }, + { + "pos": { + "x": 90.0, + "y": 2490.0 + }, + "id": "GUIAm2901QReg", + "name": "GUIAm2901QReg#0" + }, + { + "pos": { + "x": 320.0, + "y": 440.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#1", + "params": 1 + }, + { + "pos": { + "x": 9.0, + "y": 2384.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#36", + "params": 1 + }, + { + "pos": { + "x": 160.0, + "y": 75.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#0", + "params": 1 + }, + { + "pos": { + "x": 24.0, + "y": 2414.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#35", + "params": 1 + }, + { + "pos": { + "x": 19.0, + "y": 2434.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#38", + "params": 1 + }, + { + "pos": { + "x": 14.0, + "y": 2424.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#37", + "params": 1 + }, + { + "pos": { + "x": 24.0, + "y": 2444.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#39", + "params": 1 + }, + { + "pos": { + "x": 190.0, + "y": 65.0 + }, + "id": "GUIand", + "name": "GUIand#0" + }, + { + "pos": { + "x": 275.0, + "y": 135.0 + }, + "id": "GUImux1_4", + "name": "GUImux1_4#0" + }, + { + "pos": { + "x": 9.0, + "y": 2354.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#30", + "params": 1 + }, + { + "pos": { + "x": 19.0, + "y": 2374.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#32", + "params": 1 + }, + { + "pos": { + "x": 14.0, + "y": 2364.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#31", + "params": 1 + }, + { + "pos": { + "x": 19.0, + "y": 2404.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#34", + "params": 1 + }, + { + "pos": { + "x": 14.0, + "y": 2394.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#33", + "params": 1 + }, + { + "pos": { + "x": 269.0, + "y": 2104.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#25", + "params": 1 + }, + { + "pos": { + "x": 264.0, + "y": 2099.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#24", + "params": 1 + }, + { + "pos": { + "x": 259.0, + "y": 459.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#27", + "params": 1 + }, + { + "pos": { + "x": 254.0, + "y": 449.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#26", + "params": 1 + }, + { + "pos": { + "x": 275.0, + "y": 445.0 + }, + "id": "GUIor4", + "name": "GUIor4#0" + }, + { + "pos": { + "x": 269.0, + "y": 479.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#29", + "params": 1 + }, + { + "pos": { + "x": 240.0, + "y": 2110.0 + }, + "id": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode", + "name": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0" + }, + { + "pos": { + "x": 264.0, + "y": 469.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#28", + "params": 1 + }, + { + "pos": { + "x": 95.0, + "y": 2220.0 + }, + "id": "GUIram4", + "name": "GUIram4#0" + }, + { + "pos": { + "x": 329.0, + "y": 949.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#21", + "params": 1 + }, + { + "pos": { + "x": 294.0, + "y": 2144.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#20", + "params": 1 + }, + { + "pos": { + "x": 259.0, + "y": 2094.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#23", + "params": 1 + }, + { + "pos": { + "x": 254.0, + "y": 2089.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#22", + "params": 1 + } + ], + "innerWires": [ + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I8" + }, + "pin2": { + "compName": "GUIAm2901DestDecode#0", + "pinName": "I8" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I7" + }, + "pin2": { + "compName": "GUIAm2901DestDecode#0", + "pinName": "I7" + }, + "path": [ + { + "x": 5.0, + "y": 150.0 + }, + { + "x": 5.0, + "y": 60.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I6" + }, + "pin2": { + "compName": "GUIAm2901DestDecode#0", + "pinName": "I6" + }, + "path": [ + { + "x": 10.0, + "y": 250.0 + }, + { + "x": 10.0, + "y": 70.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I5" + }, + "pin2": { + "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0", + "pinName": "I5" + }, + "path": [ + { + "x": 130.0, + "y": 350.0 + }, + { + "x": 130.0, + "y": 2115.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I4" + }, + "pin2": { + "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0", + "pinName": "I4" + }, + "path": [ + { + "x": 125.0, + "y": 450.0 + }, + { + "x": 125.0, + "y": 2125.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I3" + }, + "pin2": { + "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0", + "pinName": "I3" + }, + "path": [ + { + "x": 120.0, + "y": 550.0 + }, + { + "x": 120.0, + "y": 2135.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I2" + }, + "pin2": { + "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0", + "pinName": "I2" + }, + "path": [ + { + "x": 115.0, + "y": 650.0 + }, + { + "x": 115.0, + "y": 2145.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I1" + }, + "pin2": { + "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0", + "pinName": "I1" + }, + "path": [ + { + "x": 110.0, + "y": 750.0 + }, + { + "x": 110.0, + "y": 2155.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I0" + }, + "pin2": { + "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0", + "pinName": "I0" + }, + "path": [ + { + "x": 105.0, + "y": 850.0 + }, + { + "x": 105.0, + "y": 2165.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "C" + }, + "pin2": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "A" + }, + "path": [ + { + "x": 155.0, + "y": 80.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUIdlatch4#0", + "pinName": "C" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "GUIdlatch4#1", + "pinName": "C" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901QReg#0", + "pinName": "C" + }, + "path": [ + { + "x": 155.0, + "y": 2485.0 + }, + { + "x": 80.0, + "y": 2485.0 + }, + { + "x": 80.0, + "y": 2495.0 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901DestDecode#0", + "pinName": "LSH" + }, + "pin2": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "path": [ + { + "x": 55.0, + "y": 90.0 + }, + { + "x": 55.0, + "y": 125.0 + }, + { + "x": 40.0, + "y": 125.0 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901DestDecode#0", + "pinName": "NSH" + }, + "pin2": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "path": [ + { + "x": 60.0, + "y": 50.0 + }, + { + "x": 60.0, + "y": 120.0 + }, + { + "x": 35.0, + "y": 120.0 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901DestDecode#0", + "pinName": "RSH" + }, + "pin2": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "path": [ + { + "x": 65.0, + "y": 60.0 + }, + { + "x": 65.0, + "y": 115.0 + }, + { + "x": 30.0, + "y": 115.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel3_4#0", + "pinName": "SA" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel3_4#0", + "pinName": "SB" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel3_4#0", + "pinName": "SC" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel3_4#1", + "pinName": "SA" + }, + "path": [ + { + "x": 40.0, + "y": 2515.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel3_4#1", + "pinName": "SB" + }, + "path": [ + { + "x": 35.0, + "y": 2525.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel3_4#1", + "pinName": "SC" + }, + "path": [ + { + "x": 30.0, + "y": 2535.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A0" + }, + "pin2": { + "compName": "GUIram4#0", + "pinName": "A0" + }, + "path": [ + { + "x": 80.0, + "y": 1550.0 + }, + { + "x": 80.0, + "y": 2225.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A1" + }, + "pin2": { + "compName": "GUIram4#0", + "pinName": "A1" + }, + "path": [ + { + "x": 75.0, + "y": 1650.0 + }, + { + "x": 75.0, + "y": 2235.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A2" + }, + "pin2": { + "compName": "GUIram4#0", + "pinName": "A2" + }, + "path": [ + { + "x": 70.0, + "y": 1750.0 + }, + { + "x": 70.0, + "y": 2245.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A3" + }, + "pin2": { + "compName": "GUIram4#0", + "pinName": "A3" + }, + "path": [ + { + "x": 65.0, + "y": 1850.0 + }, + { + "x": 65.0, + "y": 2255.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B0" + }, + "pin2": { + "compName": "GUIram4#0", + "pinName": "B0" + }, + "path": [ + { + "x": 60.0, + "y": 1950.0 + }, + { + "x": 60.0, + "y": 2265.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B1" + }, + "pin2": { + "compName": "GUIram4#0", + "pinName": "B1" + }, + "path": [ + { + "x": 55.0, + "y": 2050.0 + }, + { + "x": 55.0, + "y": 2275.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B2" + }, + "pin2": { + "compName": "GUIram4#0", + "pinName": "B2" + }, + "path": [ + { + "x": 50.0, + "y": 2150.0 + }, + { + "x": 50.0, + "y": 2285.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B3" + }, + "pin2": { + "compName": "GUIram4#0", + "pinName": "B3" + }, + "path": [ + { + "x": 45.0, + "y": 2250.0 + }, + { + "x": 45.0, + "y": 2295.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram4#0", + "pinName": "QA1" + }, + "pin2": { + "compName": "GUIdlatch4#0", + "pinName": "D1" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIram4#0", + "pinName": "QA2" + }, + "pin2": { + "compName": "GUIdlatch4#0", + "pinName": "D2" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIram4#0", + "pinName": "QA3" + }, + "pin2": { + "compName": "GUIdlatch4#0", + "pinName": "D3" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIram4#0", + "pinName": "QA4" + }, + "pin2": { + "compName": "GUIdlatch4#0", + "pinName": "D4" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIram4#0", + "pinName": "QB1" + }, + "pin2": { + "compName": "GUIdlatch4#1", + "pinName": "D1" + }, + "path": [ + { + "x": 150.0, + "y": 2265.0 + }, + { + "x": 150.0, + "y": 2280.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram4#0", + "pinName": "QB2" + }, + "pin2": { + "compName": "GUIdlatch4#1", + "pinName": "D2" + }, + "path": [ + { + "x": 145.0, + "y": 2275.0 + }, + { + "x": 145.0, + "y": 2290.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram4#0", + "pinName": "QB3" + }, + "pin2": { + "compName": "GUIdlatch4#1", + "pinName": "D3" + }, + "path": [ + { + "x": 140.0, + "y": 2285.0 + }, + { + "x": 140.0, + "y": 2300.0 + } + ] + }, + { + "pin1": { + "compName": "GUIram4#0", + "pinName": "QB4" + }, + "pin2": { + "compName": "GUIdlatch4#1", + "pinName": "D4" + }, + "path": [ + { + "x": 135.0, + "y": 2295.0 + }, + { + "x": 135.0, + "y": 2310.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "Cn" + }, + "pin2": { + "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0", + "pinName": "Cn" + }, + "path": [ + { + "x": 100.0, + "y": 1050.0 + }, + { + "x": 100.0, + "y": 2175.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "D1" + }, + "pin2": { + "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0", + "pinName": "D1" + }, + "path": [ + { + "x": 180.0, + "y": 1150.0 + }, + { + "x": 180.0, + "y": 2185.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "D2" + }, + "pin2": { + "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0", + "pinName": "D2" + }, + "path": [ + { + "x": 175.0, + "y": 1250.0 + }, + { + "x": 175.0, + "y": 2195.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "D3" + }, + "pin2": { + "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0", + "pinName": "D3" + }, + "path": [ + { + "x": 170.0, + "y": 1350.0 + }, + { + "x": 170.0, + "y": 2205.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "D4" + }, + "pin2": { + "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0", + "pinName": "D4" + }, + "path": [ + { + "x": 165.0, + "y": 1450.0 + }, + { + "x": 165.0, + "y": 2215.0 + } + ] + }, + { + "pin1": { + "compName": "GUIdlatch4#0", + "pinName": "Q1" + }, + "pin2": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdlatch4#0", + "pinName": "Q2" + }, + "pin2": { + "compName": "WireCrossPoint#8", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdlatch4#0", + "pinName": "Q3" + }, + "pin2": { + "compName": "WireCrossPoint#9", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdlatch4#0", + "pinName": "Q4" + }, + "pin2": { + "compName": "WireCrossPoint#10", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "pin2": { + "compName": "GUImux1_4#0", + "pinName": "I0_1" + }, + "path": [ + { + "x": 220.0, + "y": 150.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#8", + "pinName": "" + }, + "pin2": { + "compName": "GUImux1_4#0", + "pinName": "I0_2" + }, + "path": [ + { + "x": 225.0, + "y": 160.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#9", + "pinName": "" + }, + "pin2": { + "compName": "GUImux1_4#0", + "pinName": "I0_3" + }, + "path": [ + { + "x": 230.0, + "y": 170.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#10", + "pinName": "" + }, + "pin2": { + "compName": "GUImux1_4#0", + "pinName": "I0_4" + }, + "path": [ + { + "x": 235.0, + "y": 180.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0", + "pinName": "A1" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#8", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0", + "pinName": "A2" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#9", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0", + "pinName": "A3" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#10", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0", + "pinName": "A4" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdlatch4#1", + "pinName": "Q1" + }, + "pin2": { + "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0", + "pinName": "B1" + }, + "path": [ + { + "x": 200.0, + "y": 2280.0 + }, + { + "x": 200.0, + "y": 2265.0 + } + ] + }, + { + "pin1": { + "compName": "GUIdlatch4#1", + "pinName": "Q2" + }, + "pin2": { + "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0", + "pinName": "B2" + }, + "path": [ + { + "x": 205.0, + "y": 2290.0 + }, + { + "x": 205.0, + "y": 2275.0 + } + ] + }, + { + "pin1": { + "compName": "GUIdlatch4#1", + "pinName": "Q3" + }, + "pin2": { + "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0", + "pinName": "B3" + }, + "path": [ + { + "x": 210.0, + "y": 2300.0 + }, + { + "x": 210.0, + "y": 2285.0 + } + ] + }, + { + "pin1": { + "compName": "GUIdlatch4#1", + "pinName": "Q4" + }, + "pin2": { + "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0", + "pinName": "B4" + }, + "path": [ + { + "x": 215.0, + "y": 2310.0 + }, + { + "x": 215.0, + "y": 2295.0 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901QReg#0", + "pinName": "Q1" + }, + "pin2": { + "compName": "WireCrossPoint#11", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIAm2901QReg#0", + "pinName": "Q2" + }, + "pin2": { + "compName": "WireCrossPoint#12", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIAm2901QReg#0", + "pinName": "Q3" + }, + "pin2": { + "compName": "WireCrossPoint#13", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIAm2901QReg#0", + "pinName": "Q4" + }, + "pin2": { + "compName": "WireCrossPoint#14", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#11", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#15", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#15", + "pinName": "" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "OQn" + }, + "path": [ + { + "x": 335.0, + "y": 2495.0 + }, + { + "x": 335.0, + "y": 1050.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#14", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#16", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#16", + "pinName": "" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "OQn+3" + }, + "path": [ + { + "x": 340.0, + "y": 2525.0 + }, + { + "x": 340.0, + "y": 1150.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#12", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#17", + "pinName": "" + }, + "path": [ + { + "x": 135.0, + "y": 2670.0 + }, + { + "x": 30.0, + "y": 2670.0 + }, + { + "x": 30.0, + "y": 2635.0 + }, + { + "x": 35.0, + "y": 2635.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#13", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#18", + "pinName": "" + }, + "path": [ + { + "x": 140.0, + "y": 2675.0 + }, + { + "x": 35.0, + "y": 2675.0 + }, + { + "x": 35.0, + "y": 2640.0 + }, + { + "x": 40.0, + "y": 2640.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#17", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel3_4#1", + "pinName": "C1" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#18", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel3_4#1", + "pinName": "C2" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#14", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel3_4#1", + "pinName": "C3" + }, + "path": [ + { + "x": 145.0, + "y": 2680.0 + }, + { + "x": 40.0, + "y": 2680.0 + }, + { + "x": 40.0, + "y": 2645.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "IQn+3" + }, + "pin2": { + "compName": "GUIsel3_4#1", + "pinName": "C4" + }, + "path": [ + { + "x": 5.0, + "y": 2650.0 + }, + { + "x": 5.0, + "y": 2655.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "IQn" + }, + "pin2": { + "compName": "GUIsel3_4#1", + "pinName": "A1" + }, + "path": [ + { + "x": 5.0, + "y": 2550.0 + }, + { + "x": 5.0, + "y": 2545.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#11", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel3_4#1", + "pinName": "A2" + }, + "path": [ + { + "x": 130.0, + "y": 2665.0 + }, + { + "x": 25.0, + "y": 2665.0 + }, + { + "x": 25.0, + "y": 2630.0 + }, + { + "x": 30.0, + "y": 2630.0 + }, + { + "x": 30.0, + "y": 2555.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#15", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0", + "pinName": "Q1" + }, + "path": [ + { + "x": 220.0, + "y": 2305.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#12", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0", + "pinName": "Q2" + }, + "path": [ + { + "x": 225.0, + "y": 2505.0 + }, + { + "x": 225.0, + "y": 2315.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#13", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0", + "pinName": "Q3" + }, + "path": [ + { + "x": 230.0, + "y": 2515.0 + }, + { + "x": 230.0, + "y": 2325.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#16", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0", + "pinName": "Q4" + }, + "path": [ + { + "x": 235.0, + "y": 2335.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#17", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel3_4#1", + "pinName": "A3" + }, + "path": [ + { + "x": 35.0, + "y": 2565.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#18", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel3_4#1", + "pinName": "A4" + }, + "path": [ + { + "x": 40.0, + "y": 2575.0 + } + ] + }, + { + "pin1": { + "compName": "GUIsel3_4#1", + "pinName": "Y1" + }, + "pin2": { + "compName": "GUIAm2901QReg#0", + "pinName": "D1" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIsel3_4#1", + "pinName": "Y2" + }, + "pin2": { + "compName": "GUIAm2901QReg#0", + "pinName": "D2" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIsel3_4#1", + "pinName": "Y3" + }, + "pin2": { + "compName": "GUIAm2901QReg#0", + "pinName": "D3" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIsel3_4#1", + "pinName": "Y4" + }, + "pin2": { + "compName": "GUIAm2901QReg#0", + "pinName": "D4" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0", + "pinName": "Cn+4" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Cn+4" + }, + "path": [ + { + "x": 315.0, + "y": 2155.0 + }, + { + "x": 315.0, + "y": 550.0 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0", + "pinName": "OVR" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "OVR" + }, + "path": [ + { + "x": 320.0, + "y": 2165.0 + }, + { + "x": 320.0, + "y": 650.0 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0", + "pinName": "F1" + }, + "pin2": { + "compName": "WireCrossPoint#19", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0", + "pinName": "F4" + }, + "pin2": { + "compName": "WireCrossPoint#20", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#19", + "pinName": "" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "ORAMn" + }, + "path": [ + { + "x": 325.0, + "y": 2115.0 + }, + { + "x": 325.0, + "y": 850.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#20", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#21", + "pinName": "" + }, + "path": [ + { + "x": 330.0, + "y": 2145.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#21", + "pinName": "" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "ORAMn+3" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#21", + "pinName": "" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "F3" + }, + "path": [ + { + "x": 330.0, + "y": 750.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#19", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#22", + "pinName": "" + }, + "path": [ + { + "x": 280.0, + "y": 2090.0 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0", + "pinName": "F2" + }, + "pin2": { + "compName": "WireCrossPoint#23", + "pinName": "" + }, + "path": [ + { + "x": 285.0, + "y": 2125.0 + }, + { + "x": 285.0, + "y": 2095.0 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0", + "pinName": "F3" + }, + "pin2": { + "compName": "WireCrossPoint#24", + "pinName": "" + }, + "path": [ + { + "x": 290.0, + "y": 2135.0 + }, + { + "x": 290.0, + "y": 2100.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#20", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#25", + "pinName": "" + }, + "path": [ + { + "x": 295.0, + "y": 2105.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#22", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#26", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#23", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#27", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#24", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#28", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#25", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#29", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#26", + "pinName": "" + }, + "pin2": { + "compName": "GUIor4#0", + "pinName": "A1" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#27", + "pinName": "" + }, + "pin2": { + "compName": "GUIor4#0", + "pinName": "A2" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#28", + "pinName": "" + }, + "pin2": { + "compName": "GUIor4#0", + "pinName": "A3" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#29", + "pinName": "" + }, + "pin2": { + "compName": "GUIor4#0", + "pinName": "A4" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#26", + "pinName": "" + }, + "pin2": { + "compName": "GUImux1_4#0", + "pinName": "I1_1" + }, + "path": [ + { + "x": 255.0, + "y": 190.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#27", + "pinName": "" + }, + "pin2": { + "compName": "GUImux1_4#0", + "pinName": "I1_2" + }, + "path": [ + { + "x": 260.0, + "y": 200.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#28", + "pinName": "" + }, + "pin2": { + "compName": "GUImux1_4#0", + "pinName": "I1_3" + }, + "path": [ + { + "x": 265.0, + "y": 210.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#29", + "pinName": "" + }, + "pin2": { + "compName": "GUImux1_4#0", + "pinName": "I1_4" + }, + "path": [ + { + "x": 270.0, + "y": 220.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#22", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#30", + "pinName": "" + }, + "path": [ + { + "x": 10.0, + "y": 2090.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#23", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#31", + "pinName": "" + }, + "path": [ + { + "x": 15.0, + "y": 2095.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#24", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#32", + "pinName": "" + }, + "path": [ + { + "x": 20.0, + "y": 2100.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "IRAMn" + }, + "pin2": { + "compName": "GUIsel3_4#0", + "pinName": "A1" + }, + "path": [ + { + "x": 5.0, + "y": 2350.0 + }, + { + "x": 5.0, + "y": 2345.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#30", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel3_4#0", + "pinName": "A2" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#31", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel3_4#0", + "pinName": "A3" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#32", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel3_4#0", + "pinName": "A4" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#31", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#33", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#32", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#34", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#25", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#35", + "pinName": "" + }, + "path": [ + { + "x": 25.0, + "y": 2105.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#30", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#36", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#36", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel3_4#0", + "pinName": "B1" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#33", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel3_4#0", + "pinName": "B2" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#34", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel3_4#0", + "pinName": "B3" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#35", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel3_4#0", + "pinName": "B4" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#33", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#37", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#34", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#38", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#35", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#39", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#37", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel3_4#0", + "pinName": "C1" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#38", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel3_4#0", + "pinName": "C2" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#39", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel3_4#0", + "pinName": "C3" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "IRAMn+3" + }, + "pin2": { + "compName": "GUIsel3_4#0", + "pinName": "C4" + }, + "path": [ + { + "x": 5.0, + "y": 2450.0 + }, + { + "x": 5.0, + "y": 2455.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#36", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel3_4#1", + "pinName": "B1" + }, + "path": [ + { + "x": 10.0, + "y": 2585.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#37", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel3_4#1", + "pinName": "B2" + }, + "path": [ + { + "x": 15.0, + "y": 2595.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#38", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel3_4#1", + "pinName": "B3" + }, + "path": [ + { + "x": 20.0, + "y": 2605.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#39", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel3_4#1", + "pinName": "B4" + }, + "path": [ + { + "x": 25.0, + "y": 2615.0 + } + ] + }, + { + "pin1": { + "compName": "GUIsel3_4#0", + "pinName": "Y1" + }, + "pin2": { + "compName": "GUIram4#0", + "pinName": "D1" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIsel3_4#0", + "pinName": "Y2" + }, + "pin2": { + "compName": "GUIram4#0", + "pinName": "D2" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIsel3_4#0", + "pinName": "Y3" + }, + "pin2": { + "compName": "GUIram4#0", + "pinName": "D3" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIsel3_4#0", + "pinName": "Y4" + }, + "pin2": { + "compName": "GUIram4#0", + "pinName": "D4" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIAm2901DestDecode#0", + "pinName": "RAMWE" + }, + "pin2": { + "compName": "GUIand#0", + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUINandGate#0", + "pinName": "Y" + }, + "pin2": { + "compName": "GUIand#0", + "pinName": "B" + } + }, + { + "pin1": { + "compName": "GUIand#0", + "pinName": "Y" + }, + "pin2": { + "compName": "GUIram4#0", + "pinName": "WE" + }, + "path": [ + { + "x": 230.0, + "y": 70.0 + }, + { + "x": 230.0, + "y": 105.0 + }, + { + "x": 90.0, + "y": 105.0 + }, + { + "x": 90.0, + "y": 2305.0 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901DestDecode#0", + "pinName": "QWE" + }, + "pin2": { + "compName": "GUIAm2901QReg#0", + "pinName": "WE" + }, + "path": [ + { + "x": 85.0, + "y": 100.0 + }, + { + "x": 85.0, + "y": 2505.0 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901DestDecode#0", + "pinName": "YF" + }, + "pin2": { + "compName": "GUImux1_4#0", + "pinName": "S0" + }, + "path": [ + { + "x": 70.0, + "y": 80.0 + }, + { + "x": 70.0, + "y": 140.0 + } + ] + }, + { + "pin1": { + "compName": "GUImux1_4#0", + "pinName": "Y1" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y1" + }, + "path": [ + { + "x": 335.0, + "y": 140.0 + }, + { + "x": 335.0, + "y": 50.0 + } + ] + }, + { + "pin1": { + "compName": "GUImux1_4#0", + "pinName": "Y2" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y2" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUImux1_4#0", + "pinName": "Y3" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y3" + }, + "path": [ + { + "x": 335.0, + "y": 160.0 + }, + { + "x": 335.0, + "y": 250.0 + } + ] + }, + { + "pin1": { + "compName": "GUImux1_4#0", + "pinName": "Y4" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y4" + }, + "path": [ + { + "x": 325.0, + "y": 170.0 + }, + { + "x": 325.0, + "y": 350.0 + } + ] + }, + { + "pin1": { + "compName": "GUIor4#0", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#40", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#40", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "A" + }, + "path": [ + { + "x": 315.0, + "y": 445.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#40", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "B" + }, + "path": [ + { + "x": 315.0, + "y": 455.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#1", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "F\u003d0" + }, + "path": [] + } + ] + }, + "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", + "symbolRendererParams": { + "centerText": "GUIAm2901", + "horizontalComponentCenter": 17.5, + "centerTextHeight": 5.0, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.editor/components/am2901/GUIAm2901ALUFuncDecode.json b/net.mograsim.logic.model.editor/components/am2901/GUIAm2901ALUFuncDecode.json new file mode 100644 index 00000000..a24476b3 --- /dev/null +++ b/net.mograsim.logic.model.editor/components/am2901/GUIAm2901ALUFuncDecode.json @@ -0,0 +1,681 @@ +mograsim version: 0.1.3 +{ + "width": 35.0, + "height": 60.0, + "interfacePins": [ + { + "location": { + "x": 35.0, + "y": 35.0 + }, + "name": "SBE", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 45.0 + }, + "name": "FN", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "I3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "I4", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 25.0 + }, + "name": "SN", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "I5", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "L", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 55.0 + }, + "name": "RN", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "CinE", + "logicWidth": 1 + } + ], + "submodel": { + "innerScale": 0.25, + "subComps": [ + { + "pos": { + "x": 15.0, + "y": 50.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#1", + "params": 1 + }, + { + "pos": { + "x": 55.0, + "y": 10.0 + }, + "id": "GUInand3", + "name": "GUInand3#0" + }, + { + "pos": { + "x": 15.0, + "y": 10.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#0", + "params": 1 + }, + { + "pos": { + "x": 55.0, + "y": 70.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#3", + "params": 1 + }, + { + "pos": { + "x": 55.0, + "y": 45.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#2", + "params": 1 + }, + { + "pos": { + "x": 100.0, + "y": 135.0 + }, + "id": "GUIand", + "name": "GUIand#0" + }, + { + "pos": { + "x": 4.0, + "y": 24.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#1", + "params": 1 + }, + { + "pos": { + "x": 4.0, + "y": 19.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#0", + "params": 1 + }, + { + "pos": { + "x": 9.0, + "y": 59.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#3", + "params": 1 + }, + { + "pos": { + "x": 4.0, + "y": 44.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#2", + "params": 1 + }, + { + "pos": { + "x": 9.0, + "y": 64.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#5", + "params": 1 + }, + { + "pos": { + "x": 9.0, + "y": 54.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#4", + "params": 1 + }, + { + "pos": { + "x": 49.0, + "y": 99.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#7", + "params": 1 + }, + { + "pos": { + "x": 9.0, + "y": 84.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#6", + "params": 1 + }, + { + "pos": { + "x": 39.0, + "y": 19.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#9", + "params": 1 + }, + { + "pos": { + "x": 49.0, + "y": 74.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#8", + "params": 1 + }, + { + "pos": { + "x": 39.0, + "y": 34.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#10", + "params": 1 + }, + { + "pos": { + "x": 100.0, + "y": 50.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#4", + "params": 1 + } + ], + "innerWires": [ + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I5" + }, + "pin2": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "A" + }, + "path": [ + { + "x": 5.0, + "y": 15.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#2", + "pinName": "A" + }, + "path": [ + { + "x": 45.0, + "y": 45.0 + }, + { + "x": 45.0, + "y": 50.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "FN" + }, + "path": [ + { + "x": 5.0, + "y": 180.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I4" + }, + "pin2": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "pin2": { + "compName": "GUInand3#0", + "pinName": "A" + }, + "path": [ + { + "x": 10.0, + "y": 40.0 + }, + { + "x": 45.0, + "y": 40.0 + }, + { + "x": 45.0, + "y": 15.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#3", + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "SN" + }, + "path": [ + { + "x": 10.0, + "y": 105.0 + }, + { + "x": 135.0, + "y": 105.0 + }, + { + "x": 135.0, + "y": 100.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I3" + }, + "pin2": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "path": [ + { + "x": 50.0, + "y": 100.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "RN" + }, + "path": [ + { + "x": 50.0, + "y": 220.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#8", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#8", + "pinName": "" + }, + "pin2": { + "compName": "GUInand3#0", + "pinName": "B" + }, + "path": [ + { + "x": 50.0, + "y": 25.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#8", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#3", + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUINandGate#0", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#9", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#9", + "pinName": "" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "CinE" + }, + "path": [ + { + "x": 40.0, + "y": 5.0 + }, + { + "x": 115.0, + "y": 5.0 + }, + { + "x": 115.0, + "y": 20.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#9", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#10", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#10", + "pinName": "" + }, + "pin2": { + "compName": "GUInand3#0", + "pinName": "C" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#10", + "pinName": "" + }, + "pin2": { + "compName": "GUIand#0", + "pinName": "B" + }, + "path": [ + { + "x": 40.0, + "y": 150.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#1", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#2", + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUInand3#0", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#4", + "pinName": "A" + } + }, + { + "pin1": { + "compName": "GUINandGate#2", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#4", + "pinName": "B" + } + }, + { + "pin1": { + "compName": "GUINandGate#3", + "pinName": "Y" + }, + "pin2": { + "compName": "GUIand#0", + "pinName": "A" + } + }, + { + "pin1": { + "compName": "GUINandGate#4", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "L" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIand#0", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "SBE" + }, + "path": [] + } + ] + }, + "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", + "symbolRendererParams": { + "centerText": "GUIAm2901ALUFuncDecode", + "horizontalComponentCenter": 17.5, + "centerTextHeight": 5.0, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.editor/components/am2901/GUIAm2901ALUInclDecode.json b/net.mograsim.logic.model.editor/components/am2901/GUIAm2901ALUInclDecode.json new file mode 100644 index 00000000..62d78f1e --- /dev/null +++ b/net.mograsim.logic.model.editor/components/am2901/GUIAm2901ALUInclDecode.json @@ -0,0 +1,1453 @@ +mograsim version: 0.1.3 +{ + "width": 35.0, + "height": 120.0, + "interfacePins": [ + { + "location": { + "x": 0.0, + "y": 55.0 + }, + "name": "R2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 105.0 + }, + "name": "S3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 65.0 + }, + "name": "R3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 115.0 + }, + "name": "S4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 75.0 + }, + "name": "R4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "I3", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 55.0 + }, + "name": "OVR", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "I4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 35.0 + }, + "name": "Cn", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "F1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "I5", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "F2", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 25.0 + }, + "name": "F3", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 35.0 + }, + "name": "F4", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 45.0 + }, + "name": "Cn+4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 85.0 + }, + "name": "S1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 45.0 + }, + "name": "R1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 95.0 + }, + "name": "S2", + "logicWidth": 1 + } + ], + "submodel": { + "innerScale": 0.25, + "subComps": [ + { + "pos": { + "x": 34.0, + "y": 354.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#14", + "params": 1 + }, + { + "pos": { + "x": 34.0, + "y": 254.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#13", + "params": 1 + }, + { + "pos": { + "x": 36.5, + "y": 264.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#16", + "params": 1 + }, + { + "pos": { + "x": 36.5, + "y": 164.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#15", + "params": 1 + }, + { + "pos": { + "x": 84.0, + "y": 374.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#18", + "params": 1 + }, + { + "pos": { + "x": 36.5, + "y": 364.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#17", + "params": 1 + }, + { + "pos": { + "x": 20.0, + "y": 2.5 + }, + "id": "GUIAm2901ALUFuncDecode", + "name": "GUIAm2901ALUFuncDecode#0" + }, + { + "pos": { + "x": 45.0, + "y": 80.0 + }, + "id": "GUIAm2901ALUOneBit", + "name": "GUIAm2901ALUOneBit#0" + }, + { + "pos": { + "x": 84.0, + "y": 384.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#19", + "params": 1 + }, + { + "pos": { + "x": 95.0, + "y": 400.0 + }, + "id": "GUIxor", + "name": "GUIxor#0" + }, + { + "pos": { + "x": 24.0, + "y": 194.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#1", + "params": 1 + }, + { + "pos": { + "x": 24.0, + "y": 94.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#0", + "params": 1 + }, + { + "pos": { + "x": 26.5, + "y": 104.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#3", + "params": 1 + }, + { + "pos": { + "x": 24.0, + "y": 294.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#2", + "params": 1 + }, + { + "pos": { + "x": 26.5, + "y": 304.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#5", + "params": 1 + }, + { + "pos": { + "x": 26.5, + "y": 204.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#4", + "params": 1 + }, + { + "pos": { + "x": 45.0, + "y": 180.0 + }, + "id": "GUIAm2901ALUOneBit", + "name": "GUIAm2901ALUOneBit#1" + }, + { + "pos": { + "x": 29.0, + "y": 224.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#7", + "params": 1 + }, + { + "pos": { + "x": 45.0, + "y": 280.0 + }, + "id": "GUIAm2901ALUOneBit", + "name": "GUIAm2901ALUOneBit#2" + }, + { + "pos": { + "x": 29.0, + "y": 124.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#6", + "params": 1 + }, + { + "pos": { + "x": 45.0, + "y": 380.0 + }, + "id": "GUIAm2901ALUOneBit", + "name": "GUIAm2901ALUOneBit#3" + }, + { + "pos": { + "x": 31.5, + "y": 144.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#9", + "params": 1 + }, + { + "pos": { + "x": 29.0, + "y": 324.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#8", + "params": 1 + }, + { + "pos": { + "x": 31.5, + "y": 244.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#10", + "params": 1 + }, + { + "pos": { + "x": 34.0, + "y": 154.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#12", + "params": 1 + }, + { + "pos": { + "x": 31.5, + "y": 344.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#11", + "params": 1 + } + ], + "innerWires": [ + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I5" + }, + "pin2": { + "compName": "GUIAm2901ALUFuncDecode#0", + "pinName": "I5" + }, + "path": [ + { + "x": 5.0, + "y": 20.0 + }, + { + "x": 5.0, + "y": 7.5 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I4" + }, + "pin2": { + "compName": "GUIAm2901ALUFuncDecode#0", + "pinName": "I4" + }, + "path": [ + { + "x": 10.0, + "y": 60.0 + }, + { + "x": 10.0, + "y": 17.5 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I3" + }, + "pin2": { + "compName": "GUIAm2901ALUFuncDecode#0", + "pinName": "I3" + }, + "path": [ + { + "x": 15.0, + "y": 100.0 + }, + { + "x": 15.0, + "y": 27.5 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901ALUFuncDecode#0", + "pinName": "SBE" + }, + "pin2": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "path": [ + { + "x": 62.5, + "y": 37.5 + }, + { + "x": 62.5, + "y": 70.0 + }, + { + "x": 25.0, + "y": 70.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#0", + "pinName": "CoutE" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#1", + "pinName": "CoutE" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#2", + "pinName": "CoutE" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#3", + "pinName": "CoutE" + }, + "path": [ + { + "x": 25.0, + "y": 395.0 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901ALUFuncDecode#0", + "pinName": "CinE" + }, + "pin2": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "path": [ + { + "x": 70.0, + "y": 7.5 + }, + { + "x": 70.0, + "y": 77.5 + }, + { + "x": 27.5, + "y": 77.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#0", + "pinName": "CinE" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#1", + "pinName": "CinE" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#2", + "pinName": "CinE" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#3", + "pinName": "CinE" + }, + "path": [ + { + "x": 27.5, + "y": 405.0 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901ALUFuncDecode#0", + "pinName": "RN" + }, + "pin2": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "path": [ + { + "x": 57.5, + "y": 57.5 + }, + { + "x": 57.5, + "y": 65.0 + }, + { + "x": 30.0, + "y": 65.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#8", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#0", + "pinName": "RN" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#1", + "pinName": "RN" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#8", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#2", + "pinName": "RN" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#8", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#3", + "pinName": "RN" + }, + "path": [ + { + "x": 30.0, + "y": 425.0 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901ALUFuncDecode#0", + "pinName": "SN" + }, + "pin2": { + "compName": "WireCrossPoint#9", + "pinName": "" + }, + "path": [ + { + "x": 65.0, + "y": 27.5 + }, + { + "x": 65.0, + "y": 72.5 + }, + { + "x": 32.5, + "y": 72.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#9", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#10", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#10", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#11", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#9", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#0", + "pinName": "SN" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#10", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#1", + "pinName": "SN" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#11", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#2", + "pinName": "SN" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#11", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#3", + "pinName": "SN" + }, + "path": [ + { + "x": 32.5, + "y": 445.0 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901ALUFuncDecode#0", + "pinName": "FN" + }, + "pin2": { + "compName": "WireCrossPoint#12", + "pinName": "" + }, + "path": [ + { + "x": 60.0, + "y": 47.5 + }, + { + "x": 60.0, + "y": 67.5 + }, + { + "x": 35.0, + "y": 67.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#12", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#13", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#13", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#14", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#12", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#0", + "pinName": "FN" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#13", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#1", + "pinName": "FN" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#14", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#2", + "pinName": "FN" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#14", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#3", + "pinName": "FN" + }, + "path": [ + { + "x": 35.0, + "y": 455.0 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901ALUFuncDecode#0", + "pinName": "L" + }, + "pin2": { + "compName": "WireCrossPoint#15", + "pinName": "" + }, + "path": [ + { + "x": 67.5, + "y": 17.5 + }, + { + "x": 67.5, + "y": 75.0 + }, + { + "x": 37.5, + "y": 75.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#15", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#16", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#16", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#17", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#15", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#0", + "pinName": "L" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#16", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#1", + "pinName": "L" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#17", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#2", + "pinName": "L" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#17", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#3", + "pinName": "L" + }, + "path": [ + { + "x": 37.5, + "y": 465.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "R1" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#0", + "pinName": "R" + }, + "path": [ + { + "x": 10.0, + "y": 180.0 + }, + { + "x": 10.0, + "y": 115.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "R2" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#1", + "pinName": "R" + }, + "path": [ + { + "x": 10.0, + "y": 220.0 + }, + { + "x": 10.0, + "y": 215.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "R3" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#2", + "pinName": "R" + }, + "path": [ + { + "x": 10.0, + "y": 260.0 + }, + { + "x": 10.0, + "y": 315.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "R4" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#3", + "pinName": "R" + }, + "path": [ + { + "x": 20.0, + "y": 300.0 + }, + { + "x": 20.0, + "y": 415.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "S1" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#0", + "pinName": "S" + }, + "path": [ + { + "x": 15.0, + "y": 340.0 + }, + { + "x": 15.0, + "y": 135.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "S2" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#1", + "pinName": "S" + }, + "path": [ + { + "x": 5.0, + "y": 380.0 + }, + { + "x": 5.0, + "y": 235.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "S3" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#2", + "pinName": "S" + }, + "path": [ + { + "x": 10.0, + "y": 420.0 + }, + { + "x": 10.0, + "y": 335.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "S4" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#3", + "pinName": "S" + }, + "path": [ + { + "x": 10.0, + "y": 460.0 + }, + { + "x": 10.0, + "y": 435.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "Cn" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#0", + "pinName": "Cin" + }, + "path": [ + { + "x": 5.0, + "y": 140.0 + }, + { + "x": 5.0, + "y": 85.0 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901ALUOneBit#0", + "pinName": "Cout" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#1", + "pinName": "Cin" + }, + "path": [ + { + "x": 85.0, + "y": 85.0 + }, + { + "x": 85.0, + "y": 175.0 + }, + { + "x": 40.0, + "y": 175.0 + }, + { + "x": 40.0, + "y": 185.0 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901ALUOneBit#1", + "pinName": "Cout" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#2", + "pinName": "Cin" + }, + "path": [ + { + "x": 85.0, + "y": 185.0 + }, + { + "x": 85.0, + "y": 275.0 + }, + { + "x": 40.0, + "y": 275.0 + }, + { + "x": 40.0, + "y": 285.0 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901ALUOneBit#2", + "pinName": "Cout" + }, + "pin2": { + "compName": "WireCrossPoint#18", + "pinName": "" + }, + "path": [ + { + "x": 85.0, + "y": 285.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#18", + "pinName": "" + }, + "pin2": { + "compName": "GUIAm2901ALUOneBit#3", + "pinName": "Cin" + }, + "path": [ + { + "x": 40.0, + "y": 375.0 + }, + { + "x": 40.0, + "y": 385.0 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901ALUOneBit#3", + "pinName": "Cout" + }, + "pin2": { + "compName": "WireCrossPoint#19", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIAm2901ALUOneBit#0", + "pinName": "F" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "F1" + }, + "path": [ + { + "x": 90.0, + "y": 95.0 + }, + { + "x": 90.0, + "y": 20.0 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901ALUOneBit#1", + "pinName": "F" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "F2" + }, + "path": [ + { + "x": 95.0, + "y": 195.0 + }, + { + "x": 95.0, + "y": 60.0 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901ALUOneBit#2", + "pinName": "F" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "F3" + }, + "path": [ + { + "x": 100.0, + "y": 295.0 + }, + { + "x": 100.0, + "y": 100.0 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901ALUOneBit#3", + "pinName": "F" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "F4" + }, + "path": [ + { + "x": 105.0, + "y": 395.0 + }, + { + "x": 105.0, + "y": 140.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#18", + "pinName": "" + }, + "pin2": { + "compName": "GUIxor#0", + "pinName": "A" + }, + "path": [ + { + "x": 90.0, + "y": 375.0 + }, + { + "x": 90.0, + "y": 405.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#19", + "pinName": "" + }, + "pin2": { + "compName": "GUIxor#0", + "pinName": "B" + }, + "path": [ + { + "x": 85.0, + "y": 415.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#19", + "pinName": "" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Cn+4" + }, + "path": [ + { + "x": 130.0, + "y": 385.0 + }, + { + "x": 130.0, + "y": 180.0 + } + ] + }, + { + "pin1": { + "compName": "GUIxor#0", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "OVR" + } + } + ] + }, + "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", + "symbolRendererParams": { + "centerText": "GUIAm2901ALUInclDecode", + "horizontalComponentCenter": 17.5, + "centerTextHeight": 5.0, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.editor/components/am2901/GUIAm2901ALUInclSourceDecodeInclFunctionDecode.json b/net.mograsim.logic.model.editor/components/am2901/GUIAm2901ALUInclSourceDecodeInclFunctionDecode.json new file mode 100644 index 00000000..75c63dd1 --- /dev/null +++ b/net.mograsim.logic.model.editor/components/am2901/GUIAm2901ALUInclSourceDecodeInclFunctionDecode.json @@ -0,0 +1,1313 @@ +mograsim version: 0.1.3 +{ + "width": 35.0, + "height": 230.0, + "interfacePins": [ + { + "location": { + "x": 0.0, + "y": 195.0 + }, + "name": "Q1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 205.0 + }, + "name": "Q2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 215.0 + }, + "name": "Q3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 225.0 + }, + "name": "Q4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 55.0 + }, + "name": "I0", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 45.0 + }, + "name": "I1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 35.0 + }, + "name": "I2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "I3", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 55.0 + }, + "name": "OVR", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "I4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 65.0 + }, + "name": "Cn", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "I5", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 115.0 + }, + "name": "A1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 125.0 + }, + "name": "A2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 135.0 + }, + "name": "A3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 145.0 + }, + "name": "A4", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 45.0 + }, + "name": "Cn+4", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "F1", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "F2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 75.0 + }, + "name": "D1", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 25.0 + }, + "name": "F3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 85.0 + }, + "name": "D2", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 35.0 + }, + "name": "F4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 95.0 + }, + "name": "D3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 155.0 + }, + "name": "B1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 105.0 + }, + "name": "D4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 165.0 + }, + "name": "B2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 175.0 + }, + "name": "B3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 185.0 + }, + "name": "B4", + "logicWidth": 1 + } + ], + "submodel": { + "innerScale": 0.25, + "subComps": [ + { + "pos": { + "x": 45.0, + "y": 575.0 + }, + "id": "GUIsel3_4", + "name": "GUIsel3_4#0" + }, + { + "pos": { + "x": 14.0, + "y": 499.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#1", + "params": 1 + }, + { + "pos": { + "x": 9.0, + "y": 459.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#0", + "params": 1 + }, + { + "pos": { + "x": 60.0, + "y": 15.0 + }, + "id": "GUIAm2901ALUInclDecode", + "name": "GUIAm2901ALUInclDecode#0" + }, + { + "pos": { + "x": 24.0, + "y": 579.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#3", + "params": 1 + }, + { + "pos": { + "x": 19.0, + "y": 539.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#2", + "params": 1 + }, + { + "pos": { + "x": 45.0, + "y": 365.0 + }, + "id": "GUIsel2_4", + "name": "GUIsel2_4#0" + }, + { + "pos": { + "x": 15.0, + "y": 165.0 + }, + "id": "GUIAm2901SourceDecode", + "name": "GUIAm2901SourceDecode#0" + } + ], + "innerWires": [ + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I5" + }, + "pin2": { + "compName": "GUIAm2901ALUInclDecode#0", + "pinName": "I5" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I4" + }, + "pin2": { + "compName": "GUIAm2901ALUInclDecode#0", + "pinName": "I4" + }, + "path": [ + { + "x": 5.0, + "y": 60.0 + }, + { + "x": 5.0, + "y": 30.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I3" + }, + "pin2": { + "compName": "GUIAm2901ALUInclDecode#0", + "pinName": "I3" + }, + "path": [ + { + "x": 15.0, + "y": 100.0 + }, + { + "x": 15.0, + "y": 40.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I2" + }, + "pin2": { + "compName": "GUIAm2901SourceDecode#0", + "pinName": "I2" + }, + "path": [ + { + "x": 5.0, + "y": 140.0 + }, + { + "x": 5.0, + "y": 170.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I1" + }, + "pin2": { + "compName": "GUIAm2901SourceDecode#0", + "pinName": "I1" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I0" + }, + "pin2": { + "compName": "GUIAm2901SourceDecode#0", + "pinName": "I0" + }, + "path": [ + { + "x": 5.0, + "y": 220.0 + }, + { + "x": 5.0, + "y": 190.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "Cn" + }, + "pin2": { + "compName": "GUIAm2901ALUInclDecode#0", + "pinName": "Cn" + }, + "path": [ + { + "x": 10.0, + "y": 260.0 + }, + { + "x": 10.0, + "y": 50.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "D1" + }, + "pin2": { + "compName": "GUIsel2_4#0", + "pinName": "A1" + }, + "path": [ + { + "x": 15.0, + "y": 300.0 + }, + { + "x": 15.0, + "y": 390.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "D2" + }, + "pin2": { + "compName": "GUIsel2_4#0", + "pinName": "A2" + }, + "path": [ + { + "x": 10.0, + "y": 340.0 + }, + { + "x": 10.0, + "y": 400.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "D3" + }, + "pin2": { + "compName": "GUIsel2_4#0", + "pinName": "A3" + }, + "path": [ + { + "x": 5.0, + "y": 380.0 + }, + { + "x": 5.0, + "y": 410.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "D4" + }, + "pin2": { + "compName": "GUIsel2_4#0", + "pinName": "A4" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A1" + }, + "pin2": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A2" + }, + "pin2": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A3" + }, + "pin2": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A4" + }, + "pin2": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel2_4#0", + "pinName": "B1" + }, + "path": [ + { + "x": 10.0, + "y": 430.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel2_4#0", + "pinName": "B2" + }, + "path": [ + { + "x": 15.0, + "y": 440.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel2_4#0", + "pinName": "B3" + }, + "path": [ + { + "x": 20.0, + "y": 450.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel2_4#0", + "pinName": "B4" + }, + "path": [ + { + "x": 25.0, + "y": 460.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel3_4#0", + "pinName": "A1" + }, + "path": [ + { + "x": 10.0, + "y": 610.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel3_4#0", + "pinName": "A2" + }, + "path": [ + { + "x": 15.0, + "y": 620.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel3_4#0", + "pinName": "A3" + }, + "path": [ + { + "x": 20.0, + "y": 630.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "GUIsel3_4#0", + "pinName": "A4" + }, + "path": [ + { + "x": 25.0, + "y": 640.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B1" + }, + "pin2": { + "compName": "GUIsel3_4#0", + "pinName": "B1" + }, + "path": [ + { + "x": 5.0, + "y": 620.0 + }, + { + "x": 5.0, + "y": 650.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B2" + }, + "pin2": { + "compName": "GUIsel3_4#0", + "pinName": "B2" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B3" + }, + "pin2": { + "compName": "GUIsel3_4#0", + "pinName": "B3" + }, + "path": [ + { + "x": 5.0, + "y": 700.0 + }, + { + "x": 5.0, + "y": 670.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B4" + }, + "pin2": { + "compName": "GUIsel3_4#0", + "pinName": "B4" + }, + "path": [ + { + "x": 10.0, + "y": 740.0 + }, + { + "x": 10.0, + "y": 680.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "Q1" + }, + "pin2": { + "compName": "GUIsel3_4#0", + "pinName": "C1" + }, + "path": [ + { + "x": 15.0, + "y": 780.0 + }, + { + "x": 15.0, + "y": 690.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "Q2" + }, + "pin2": { + "compName": "GUIsel3_4#0", + "pinName": "C2" + }, + "path": [ + { + "x": 20.0, + "y": 820.0 + }, + { + "x": 20.0, + "y": 700.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "Q3" + }, + "pin2": { + "compName": "GUIsel3_4#0", + "pinName": "C3" + }, + "path": [ + { + "x": 25.0, + "y": 860.0 + }, + { + "x": 25.0, + "y": 710.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "Q4" + }, + "pin2": { + "compName": "GUIsel3_4#0", + "pinName": "C4" + }, + "path": [ + { + "x": 30.0, + "y": 900.0 + }, + { + "x": 30.0, + "y": 720.0 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901SourceDecode#0", + "pinName": "SQ" + }, + "pin2": { + "compName": "GUIsel3_4#0", + "pinName": "SC" + }, + "path": [ + { + "x": 75.0, + "y": 170.0 + }, + { + "x": 75.0, + "y": 240.0 + }, + { + "x": 30.0, + "y": 240.0 + }, + { + "x": 30.0, + "y": 600.0 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901SourceDecode#0", + "pinName": "RA" + }, + "pin2": { + "compName": "GUIsel2_4#0", + "pinName": "SB" + }, + "path": [ + { + "x": 70.0, + "y": 180.0 + }, + { + "x": 70.0, + "y": 235.0 + }, + { + "x": 20.0, + "y": 235.0 + }, + { + "x": 20.0, + "y": 380.0 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901SourceDecode#0", + "pinName": "SB" + }, + "pin2": { + "compName": "GUIsel3_4#0", + "pinName": "SB" + }, + "path": [ + { + "x": 65.0, + "y": 190.0 + }, + { + "x": 65.0, + "y": 230.0 + }, + { + "x": 35.0, + "y": 230.0 + }, + { + "x": 35.0, + "y": 590.0 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901SourceDecode#0", + "pinName": "SA" + }, + "pin2": { + "compName": "GUIsel3_4#0", + "pinName": "SA" + }, + "path": [ + { + "x": 60.0, + "y": 200.0 + }, + { + "x": 60.0, + "y": 225.0 + }, + { + "x": 40.0, + "y": 225.0 + }, + { + "x": 40.0, + "y": 580.0 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901SourceDecode#0", + "pinName": "RD" + }, + "pin2": { + "compName": "GUIsel2_4#0", + "pinName": "SA" + }, + "path": [ + { + "x": 55.0, + "y": 210.0 + }, + { + "x": 55.0, + "y": 220.0 + }, + { + "x": 25.0, + "y": 220.0 + }, + { + "x": 25.0, + "y": 370.0 + } + ] + }, + { + "pin1": { + "compName": "GUIsel2_4#0", + "pinName": "Y1" + }, + "pin2": { + "compName": "GUIAm2901ALUInclDecode#0", + "pinName": "R1" + }, + "path": [ + { + "x": 82.5, + "y": 370.0 + }, + { + "x": 82.5, + "y": 162.5 + }, + { + "x": 20.0, + "y": 162.5 + }, + { + "x": 20.0, + "y": 60.0 + } + ] + }, + { + "pin1": { + "compName": "GUIsel2_4#0", + "pinName": "Y2" + }, + "pin2": { + "compName": "GUIAm2901ALUInclDecode#0", + "pinName": "R2" + }, + "path": [ + { + "x": 85.0, + "y": 380.0 + }, + { + "x": 85.0, + "y": 160.0 + }, + { + "x": 22.5, + "y": 160.0 + }, + { + "x": 22.5, + "y": 70.0 + } + ] + }, + { + "pin1": { + "compName": "GUIsel2_4#0", + "pinName": "Y3" + }, + "pin2": { + "compName": "GUIAm2901ALUInclDecode#0", + "pinName": "R3" + }, + "path": [ + { + "x": 87.5, + "y": 390.0 + }, + { + "x": 87.5, + "y": 157.5 + }, + { + "x": 25.0, + "y": 157.5 + }, + { + "x": 25.0, + "y": 80.0 + } + ] + }, + { + "pin1": { + "compName": "GUIsel2_4#0", + "pinName": "Y4" + }, + "pin2": { + "compName": "GUIAm2901ALUInclDecode#0", + "pinName": "R4" + }, + "path": [ + { + "x": 90.0, + "y": 400.0 + }, + { + "x": 90.0, + "y": 155.0 + }, + { + "x": 27.5, + "y": 155.0 + }, + { + "x": 27.5, + "y": 90.0 + } + ] + }, + { + "pin1": { + "compName": "GUIsel3_4#0", + "pinName": "Y1" + }, + "pin2": { + "compName": "GUIAm2901ALUInclDecode#0", + "pinName": "S1" + }, + "path": [ + { + "x": 92.5, + "y": 580.0 + }, + { + "x": 92.5, + "y": 152.5 + }, + { + "x": 30.0, + "y": 152.5 + }, + { + "x": 30.0, + "y": 100.0 + } + ] + }, + { + "pin1": { + "compName": "GUIsel3_4#0", + "pinName": "Y2" + }, + "pin2": { + "compName": "GUIAm2901ALUInclDecode#0", + "pinName": "S2" + }, + "path": [ + { + "x": 95.0, + "y": 590.0 + }, + { + "x": 95.0, + "y": 150.0 + }, + { + "x": 32.5, + "y": 150.0 + }, + { + "x": 32.5, + "y": 110.0 + } + ] + }, + { + "pin1": { + "compName": "GUIsel3_4#0", + "pinName": "Y3" + }, + "pin2": { + "compName": "GUIAm2901ALUInclDecode#0", + "pinName": "S3" + }, + "path": [ + { + "x": 97.5, + "y": 600.0 + }, + { + "x": 97.5, + "y": 147.5 + }, + { + "x": 35.0, + "y": 147.5 + }, + { + "x": 35.0, + "y": 120.0 + } + ] + }, + { + "pin1": { + "compName": "GUIsel3_4#0", + "pinName": "Y4" + }, + "pin2": { + "compName": "GUIAm2901ALUInclDecode#0", + "pinName": "S4" + }, + "path": [ + { + "x": 100.0, + "y": 610.0 + }, + { + "x": 100.0, + "y": 145.0 + }, + { + "x": 37.5, + "y": 145.0 + }, + { + "x": 37.5, + "y": 130.0 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901ALUInclDecode#0", + "pinName": "F1" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "F1" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIAm2901ALUInclDecode#0", + "pinName": "F2" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "F2" + }, + "path": [ + { + "x": 135.0, + "y": 30.0 + }, + { + "x": 135.0, + "y": 60.0 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901ALUInclDecode#0", + "pinName": "F3" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "F3" + }, + "path": [ + { + "x": 130.0, + "y": 40.0 + }, + { + "x": 130.0, + "y": 100.0 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901ALUInclDecode#0", + "pinName": "F4" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "F4" + }, + "path": [ + { + "x": 125.0, + "y": 50.0 + }, + { + "x": 125.0, + "y": 140.0 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901ALUInclDecode#0", + "pinName": "Cn+4" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Cn+4" + }, + "path": [ + { + "x": 120.0, + "y": 60.0 + }, + { + "x": 120.0, + "y": 180.0 + } + ] + }, + { + "pin1": { + "compName": "GUIAm2901ALUInclDecode#0", + "pinName": "OVR" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "OVR" + }, + "path": [ + { + "x": 115.0, + "y": 70.0 + }, + { + "x": 115.0, + "y": 220.0 + } + ] + } + ] + }, + "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", + "symbolRendererParams": { + "centerText": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode", + "horizontalComponentCenter": 17.5, + "centerTextHeight": 5.0, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.editor/components/am2901/GUIAm2901ALUOneBit.json b/net.mograsim.logic.model.editor/components/am2901/GUIAm2901ALUOneBit.json new file mode 100644 index 00000000..b6b05e1d --- /dev/null +++ b/net.mograsim.logic.model.editor/components/am2901/GUIAm2901ALUOneBit.json @@ -0,0 +1,521 @@ +mograsim version: 0.1.3 +{ + "width": 35.0, + "height": 90.0, + "interfacePins": [ + { + "location": { + "x": 0.0, + "y": 35.0 + }, + "name": "R", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 55.0 + }, + "name": "S", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "F", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 75.0 + }, + "name": "FN", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "Cin", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 65.0 + }, + "name": "SN", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Cout", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 45.0 + }, + "name": "RN", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 85.0 + }, + "name": "L", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "CinE", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "CoutE", + "logicWidth": 1 + } + ], + "submodel": { + "innerScale": 0.2, + "subComps": [ + { + "pos": { + "x": 60.0, + "y": 55.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#0", + "params": 1 + }, + { + "pos": { + "x": 54.0, + "y": 69.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#1", + "params": 1 + }, + { + "pos": { + "x": 49.0, + "y": 59.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#0", + "params": 1 + }, + { + "pos": { + "x": 90.0, + "y": 70.0 + }, + "id": "GUImux1", + "name": "GUImux1#0" + }, + { + "pos": { + "x": 10.0, + "y": 20.0 + }, + "id": "GUIand", + "name": "GUIand#0" + }, + { + "pos": { + "x": 10.0, + "y": 290.0 + }, + "id": "GUIxor", + "name": "GUIxor#1" + }, + { + "pos": { + "x": 135.0, + "y": 70.0 + }, + "id": "GUIxor", + "name": "GUIxor#2" + }, + { + "pos": { + "x": 60.0, + "y": 20.0 + }, + "id": "GUIfulladder", + "name": "GUIfulladder#0" + }, + { + "pos": { + "x": 10.0, + "y": 190.0 + }, + "id": "GUIxor", + "name": "GUIxor#0" + }, + { + "pos": { + "x": 135.0, + "y": 20.0 + }, + "id": "GUIand", + "name": "GUIand#1" + } + ], + "innerWires": [ + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "Cin" + }, + "pin2": { + "compName": "GUIand#0", + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "CoutE" + }, + "pin2": { + "compName": "GUIand#1", + "pinName": "A" + }, + "path": [ + { + "x": 5.0, + "y": 75.0 + }, + { + "x": 5.0, + "y": 10.0 + }, + { + "x": 130.0, + "y": 10.0 + }, + { + "x": 130.0, + "y": 25.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "CinE" + }, + "pin2": { + "compName": "GUIand#0", + "pinName": "B" + }, + "path": [ + { + "x": 7.5, + "y": 125.0 + }, + { + "x": 7.5, + "y": 35.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "R" + }, + "pin2": { + "compName": "GUIxor#0", + "pinName": "A" + } + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "RN" + }, + "pin2": { + "compName": "GUIxor#0", + "pinName": "B" + } + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "S" + }, + "pin2": { + "compName": "GUIxor#1", + "pinName": "A" + } + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "SN" + }, + "pin2": { + "compName": "GUIxor#1", + "pinName": "B" + } + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "FN" + }, + "pin2": { + "compName": "GUIxor#2", + "pinName": "B" + }, + "path": [ + { + "x": 130.0, + "y": 375.0 + }, + { + "x": 130.0, + "y": 85.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "L" + }, + "pin2": { + "compName": "GUImux1#0", + "pinName": "S0" + }, + "path": [ + { + "x": 87.5, + "y": 425.0 + }, + { + "x": 87.5, + "y": 75.0 + } + ] + }, + { + "pin1": { + "compName": "GUIand#0", + "pinName": "Y" + }, + "pin2": { + "compName": "GUIfulladder#0", + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIxor#0", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "path": [ + { + "x": 50.0, + "y": 195.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUIfulladder#0", + "pinName": "B" + }, + "path": [ + { + "x": 50.0, + "y": 35.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIxor#1", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "path": [ + { + "x": 55.0, + "y": 295.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUIfulladder#0", + "pinName": "C" + }, + "path": [ + { + "x": 55.0, + "y": 45.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIfulladder#0", + "pinName": "Y" + }, + "pin2": { + "compName": "GUImux1#0", + "pinName": "I0" + }, + "path": [ + { + "x": 100.0, + "y": 25.0 + }, + { + "x": 100.0, + "y": 65.0 + }, + { + "x": 85.0, + "y": 65.0 + }, + { + "x": 85.0, + "y": 85.0 + } + ] + }, + { + "pin1": { + "compName": "GUIfulladder#0", + "pinName": "Z" + }, + "pin2": { + "compName": "GUIand#1", + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUINandGate#0", + "pinName": "Y" + }, + "pin2": { + "compName": "GUImux1#0", + "pinName": "I1" + }, + "path": [ + { + "x": 82.5, + "y": 65.0 + }, + { + "x": 82.5, + "y": 95.0 + } + ] + }, + { + "pin1": { + "compName": "GUImux1#0", + "pinName": "Y" + }, + "pin2": { + "compName": "GUIxor#2", + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIand#1", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Cout" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIxor#2", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "F" + }, + "path": [] + } + ] + }, + "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", + "symbolRendererParams": { + "centerText": "GUIAm2901ALUOneBit", + "horizontalComponentCenter": 17.5, + "centerTextHeight": 5.0, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.editor/components/am2901/GUIAm2901DestDecode.json b/net.mograsim.logic.model.editor/components/am2901/GUIAm2901DestDecode.json new file mode 100644 index 00000000..d80d0806 --- /dev/null +++ b/net.mograsim.logic.model.editor/components/am2901/GUIAm2901DestDecode.json @@ -0,0 +1,1035 @@ +mograsim version: 0.1.3 +{ + "width": 35.0, + "height": 60.0, + "interfacePins": [ + { + "location": { + "x": 35.0, + "y": 45.0 + }, + "name": "LSH", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "NSH", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "RSH", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "I6", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 35.0 + }, + "name": "YF", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "I7", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 25.0 + }, + "name": "RAMWE", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 55.0 + }, + "name": "QWE", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "I8", + "logicWidth": 1 + } + ], + "submodel": { + "innerScale": 0.25, + "subComps": [ + { + "pos": { + "x": 15.0, + "y": 50.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#1", + "params": 1 + }, + { + "pos": { + "x": 74.0, + "y": 159.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#14", + "params": 1 + }, + { + "pos": { + "x": 15.0, + "y": 10.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#0", + "params": 1 + }, + { + "pos": { + "x": 74.0, + "y": 104.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#13", + "params": 1 + }, + { + "pos": { + "x": 15.0, + "y": 150.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#3", + "params": 1 + }, + { + "pos": { + "x": 15.0, + "y": 90.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#2", + "params": 1 + }, + { + "pos": { + "x": 109.0, + "y": 214.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#15", + "params": 1 + }, + { + "pos": { + "x": 4.0, + "y": 14.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#1", + "params": 1 + }, + { + "pos": { + "x": 4.0, + "y": 19.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#0", + "params": 1 + }, + { + "pos": { + "x": 9.0, + "y": 59.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#3", + "params": 1 + }, + { + "pos": { + "x": 4.0, + "y": 24.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#2", + "params": 1 + }, + { + "pos": { + "x": 9.0, + "y": 104.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#5", + "params": 1 + }, + { + "pos": { + "x": 9.0, + "y": 64.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#4", + "params": 1 + }, + { + "pos": { + "x": 39.0, + "y": 59.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#7", + "params": 1 + }, + { + "pos": { + "x": 4.0, + "y": 154.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#6", + "params": 1 + }, + { + "pos": { + "x": 44.0, + "y": 54.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#9", + "params": 1 + }, + { + "pos": { + "x": 44.0, + "y": 19.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#8", + "params": 1 + }, + { + "pos": { + "x": 39.0, + "y": 134.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#10", + "params": 1 + }, + { + "pos": { + "x": 74.0, + "y": 99.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#12", + "params": 1 + }, + { + "pos": { + "x": 74.0, + "y": 19.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#11", + "params": 1 + }, + { + "pos": { + "x": 115.0, + "y": 210.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#12", + "params": 1 + }, + { + "pos": { + "x": 110.0, + "y": 105.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#11", + "params": 1 + }, + { + "pos": { + "x": 80.0, + "y": 145.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#10", + "params": 1 + }, + { + "pos": { + "x": 80.0, + "y": 90.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#9", + "params": 1 + }, + { + "pos": { + "x": 80.0, + "y": 10.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#8", + "params": 1 + }, + { + "pos": { + "x": 50.0, + "y": 50.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#5", + "params": 1 + }, + { + "pos": { + "x": 50.0, + "y": 10.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#4", + "params": 1 + }, + { + "pos": { + "x": 50.0, + "y": 130.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#7", + "params": 1 + }, + { + "pos": { + "x": 50.0, + "y": 90.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#6", + "params": 1 + } + ], + "innerWires": [ + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I8" + }, + "pin2": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I7" + }, + "pin2": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "A" + }, + "path": [ + { + "x": 10.0, + "y": 55.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#2", + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#2", + "pinName": "A" + }, + "path": [ + { + "x": 5.0, + "y": 95.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I6" + }, + "pin2": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "path": [ + { + "x": 5.0, + "y": 100.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#3", + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#3", + "pinName": "B" + }, + "path": [ + { + "x": 5.0, + "y": 165.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#4", + "pinName": "A" + }, + "path": [ + { + "x": 5.0, + "y": 5.0 + }, + { + "x": 40.0, + "y": 5.0 + }, + { + "x": 40.0, + "y": 15.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#1", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#4", + "pinName": "B" + }, + "path": [ + { + "x": 40.0, + "y": 25.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#5", + "pinName": "B" + }, + "path": [ + { + "x": 40.0, + "y": 65.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#0", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#8", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#8", + "pinName": "" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "NSH" + }, + "path": [ + { + "x": 45.0, + "y": 5.0 + }, + { + "x": 135.0, + "y": 5.0 + }, + { + "x": 135.0, + "y": 20.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#8", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#9", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#9", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#5", + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#9", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#6", + "pinName": "A" + }, + "path": [ + { + "x": 45.0, + "y": 95.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#6", + "pinName": "B" + }, + "path": [ + { + "x": 10.0, + "y": 115.0 + }, + { + "x": 45.0, + "y": 115.0 + }, + { + "x": 45.0, + "y": 105.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#2", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#10", + "pinName": "" + }, + "path": [ + { + "x": 40.0, + "y": 100.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#10", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#7", + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#10", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#7", + "pinName": "B" + }, + "path": [ + { + "x": 40.0, + "y": 145.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#4", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#11", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#11", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#8", + "pinName": "A" + }, + "path": [ + { + "x": 75.0, + "y": 15.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#11", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#8", + "pinName": "B" + }, + "path": [ + { + "x": 75.0, + "y": 25.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#5", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "RAMWE" + }, + "path": [ + { + "x": 125.0, + "y": 60.0 + }, + { + "x": 125.0, + "y": 100.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#6", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#12", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#12", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#9", + "pinName": "A" + }, + "path": [ + { + "x": 75.0, + "y": 95.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#12", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#13", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#13", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#9", + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUINandGate#7", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "LSH" + }, + "path": [ + { + "x": 125.0, + "y": 140.0 + }, + { + "x": 125.0, + "y": 180.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#13", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#10", + "pinName": "A" + }, + "path": [ + { + "x": 75.0, + "y": 150.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#3", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#14", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#14", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#10", + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUINandGate#8", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "RSH" + }, + "path": [ + { + "x": 130.0, + "y": 20.0 + }, + { + "x": 130.0, + "y": 60.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#9", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#11", + "pinName": "A" + } + }, + { + "pin1": { + "compName": "WireCrossPoint#14", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#11", + "pinName": "B" + }, + "path": [ + { + "x": 75.0, + "y": 170.0 + }, + { + "x": 105.0, + "y": 170.0 + }, + { + "x": 105.0, + "y": 120.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#10", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#15", + "pinName": "" + }, + "path": [ + { + "x": 110.0, + "y": 155.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#15", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#12", + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#15", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#12", + "pinName": "B" + }, + "path": [ + { + "x": 110.0, + "y": 225.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#11", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "YF" + } + }, + { + "pin1": { + "compName": "GUINandGate#12", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "QWE" + }, + "path": [] + } + ] + }, + "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", + "symbolRendererParams": { + "centerText": "GUIAm2901DestDecode", + "horizontalComponentCenter": 17.5, + "centerTextHeight": 5.0, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.editor/components/am2901/GUIAm2901QReg.json b/net.mograsim.logic.model.editor/components/am2901/GUIAm2901QReg.json new file mode 100644 index 00000000..6af804d7 --- /dev/null +++ b/net.mograsim.logic.model.editor/components/am2901/GUIAm2901QReg.json @@ -0,0 +1,408 @@ +mograsim version: 0.1.3 +{ + "width": 35.0, + "height": 60.0, + "interfacePins": [ + { + "location": { + "x": 0.0, + "y": 55.0 + }, + "name": "D4", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Q1", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "Q2", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 25.0 + }, + "name": "Q3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "C", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 35.0 + }, + "name": "Q4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "D1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "WE", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 35.0 + }, + "name": "D2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 45.0 + }, + "name": "D3", + "logicWidth": 1 + } + ], + "submodel": { + "innerScale": 0.4, + "subComps": [ + { + "pos": { + "x": 50.0, + "y": 32.5 + }, + "id": "GUIdff", + "name": "GUIdff#1" + }, + { + "pos": { + "x": 50.0, + "y": 7.5 + }, + "id": "GUIdff", + "name": "GUIdff#0" + }, + { + "pos": { + "x": 41.5, + "y": 36.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#1", + "params": 1 + }, + { + "pos": { + "x": 41.5, + "y": 19.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#0", + "params": 1 + }, + { + "pos": { + "x": 41.5, + "y": 61.5 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#2", + "params": 1 + }, + { + "pos": { + "x": 5.0, + "y": 15.0 + }, + "id": "GUIand", + "name": "GUIand#0" + }, + { + "pos": { + "x": 50.0, + "y": 82.5 + }, + "id": "GUIdff", + "name": "GUIdff#3" + }, + { + "pos": { + "x": 50.0, + "y": 57.5 + }, + "id": "GUIdff", + "name": "GUIdff#2" + } + ], + "innerWires": [ + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "C" + }, + "pin2": { + "compName": "GUIand#0", + "pinName": "A" + } + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "WE" + }, + "pin2": { + "compName": "GUIand#0", + "pinName": "B" + } + }, + { + "pin1": { + "compName": "GUIand#0", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUIdff#0", + "pinName": "C" + }, + "path": [ + { + "x": 42.5, + "y": 12.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUIdff#1", + "pinName": "C" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUIdff#2", + "pinName": "C" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUIdff#3", + "pinName": "C" + }, + "path": [ + { + "x": 42.5, + "y": 87.5 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "D1" + }, + "pin2": { + "compName": "GUIdff#0", + "pinName": "D" + }, + "path": [ + { + "x": 17.5, + "y": 62.5 + }, + { + "x": 17.5, + "y": 42.5 + }, + { + "x": 45.0, + "y": 42.5 + }, + { + "x": 45.0, + "y": 22.5 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "D2" + }, + "pin2": { + "compName": "GUIdff#1", + "pinName": "D" + }, + "path": [ + { + "x": 22.5, + "y": 87.5 + }, + { + "x": 22.5, + "y": 47.5 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "D3" + }, + "pin2": { + "compName": "GUIdff#2", + "pinName": "D" + }, + "path": [ + { + "x": 27.5, + "y": 112.5 + }, + { + "x": 27.5, + "y": 72.5 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "D4" + }, + "pin2": { + "compName": "GUIdff#3", + "pinName": "D" + }, + "path": [ + { + "x": 32.5, + "y": 137.5 + }, + { + "x": 32.5, + "y": 97.5 + } + ] + }, + { + "pin1": { + "compName": "GUIdff#0", + "pinName": "Q" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Q1" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdff#1", + "pinName": "Q" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Q2" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdff#2", + "pinName": "Q" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Q3" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUIdff#3", + "pinName": "Q" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Q4" + }, + "path": [] + } + ] + }, + "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", + "symbolRendererParams": { + "centerText": "GUIAm2901QReg", + "horizontalComponentCenter": 17.5, + "centerTextHeight": 5.0, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.editor/components/am2901/GUIAm2901SourceDecode.json b/net.mograsim.logic.model.editor/components/am2901/GUIAm2901SourceDecode.json new file mode 100644 index 00000000..e36193d9 --- /dev/null +++ b/net.mograsim.logic.model.editor/components/am2901/GUIAm2901SourceDecode.json @@ -0,0 +1,1076 @@ +mograsim version: 0.1.3 +{ + "width": 35.0, + "height": 50.0, + "interfacePins": [ + { + "location": { + "x": 35.0, + "y": 45.0 + }, + "name": "RD", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "I0", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "I1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "I2", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "SQ", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 35.0 + }, + "name": "SA", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "RA", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 25.0 + }, + "name": "SB", + "logicWidth": 1 + } + ], + "submodel": { + "innerScale": 0.25, + "subComps": [ + { + "pos": { + "x": 10.0, + "y": 50.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#1", + "params": 1 + }, + { + "pos": { + "x": 94.0, + "y": 19.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#14", + "params": 1 + }, + { + "pos": { + "x": 10.0, + "y": 10.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#0", + "params": 1 + }, + { + "pos": { + "x": 64.0, + "y": 139.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#13", + "params": 1 + }, + { + "pos": { + "x": 40.0, + "y": 10.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#3", + "params": 1 + }, + { + "pos": { + "x": 10.0, + "y": 90.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#2", + "params": 1 + }, + { + "pos": { + "x": 94.0, + "y": 179.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#15", + "params": 1 + }, + { + "pos": { + "x": 6.5, + "y": 19.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#1", + "params": 1 + }, + { + "pos": { + "x": 4.0, + "y": 19.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#0", + "params": 1 + }, + { + "pos": { + "x": 6.5, + "y": 59.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#3", + "params": 1 + }, + { + "pos": { + "x": 4.0, + "y": 144.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#2", + "params": 1 + }, + { + "pos": { + "x": 6.5, + "y": 104.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#5", + "params": 1 + }, + { + "pos": { + "x": 6.5, + "y": 99.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#4", + "params": 1 + }, + { + "pos": { + "x": 34.0, + "y": 59.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#7", + "params": 1 + }, + { + "pos": { + "x": 31.5, + "y": 54.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#6", + "params": 1 + }, + { + "pos": { + "x": 34.0, + "y": 134.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#9", + "params": 1 + }, + { + "pos": { + "x": 34.0, + "y": 64.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#8", + "params": 1 + }, + { + "pos": { + "x": 36.5, + "y": 99.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#10", + "params": 1 + }, + { + "pos": { + "x": 64.0, + "y": 99.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#12", + "params": 1 + }, + { + "pos": { + "x": 64.0, + "y": 59.0 + }, + "id": "WireCrossPoint", + "name": "WireCrossPoint#11", + "params": 1 + }, + { + "pos": { + "x": 70.0, + "y": 170.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#12", + "params": 1 + }, + { + "pos": { + "x": 70.0, + "y": 130.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#11", + "params": 1 + }, + { + "pos": { + "x": 100.0, + "y": 170.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#14", + "params": 1 + }, + { + "pos": { + "x": 100.0, + "y": 10.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#13", + "params": 1 + }, + { + "pos": { + "x": 70.0, + "y": 90.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#10", + "params": 1 + }, + { + "pos": { + "x": 70.0, + "y": 50.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#9", + "params": 1 + }, + { + "pos": { + "x": 70.0, + "y": 10.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#8", + "params": 1 + }, + { + "pos": { + "x": 40.0, + "y": 90.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#5", + "params": 1 + }, + { + "pos": { + "x": 40.0, + "y": 50.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#4", + "params": 1 + }, + { + "pos": { + "x": 40.0, + "y": 170.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#7", + "params": 1 + }, + { + "pos": { + "x": 40.0, + "y": 130.0 + }, + "id": "GUINandGate", + "name": "GUINandGate#6", + "params": 1 + } + ], + "innerWires": [ + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I2" + }, + "pin2": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#3", + "pinName": "A" + }, + "path": [ + { + "x": 5.0, + "y": 5.0 + }, + { + "x": 35.0, + "y": 5.0 + }, + { + "x": 35.0, + "y": 15.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "A" + }, + "path": [ + { + "x": 7.5, + "y": 15.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "B" + }, + "path": [ + { + "x": 7.5, + "y": 25.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#6", + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#12", + "pinName": "B" + }, + "path": [ + { + "x": 5.0, + "y": 195.0 + }, + { + "x": 65.0, + "y": 195.0 + }, + { + "x": 65.0, + "y": 185.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I1" + }, + "pin2": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "A" + }, + "path": [ + { + "x": 7.5, + "y": 55.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "B" + }, + "path": [ + { + "x": 7.5, + "y": 65.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I0" + }, + "pin2": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#2", + "pinName": "A" + }, + "path": [ + { + "x": 7.5, + "y": 95.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#2", + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#5", + "pinName": "B" + }, + "path": [ + { + "x": 7.5, + "y": 112.5 + }, + { + "x": 32.5, + "y": 112.5 + }, + { + "x": 32.5, + "y": 105.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#0", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "path": [ + { + "x": 32.5, + "y": 20.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#4", + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#5", + "pinName": "A" + }, + "path": [ + { + "x": 32.5, + "y": 95.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#1", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#3", + "pinName": "B" + }, + "path": [ + { + "x": 35.0, + "y": 25.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#8", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#8", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#4", + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#8", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#9", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#9", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#6", + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#9", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#7", + "pinName": "A" + }, + "path": [ + { + "x": 35.0, + "y": 175.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#2", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#10", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#10", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#8", + "pinName": "B" + }, + "path": [ + { + "x": 37.5, + "y": 35.0 + }, + { + "x": 65.0, + "y": 35.0 + }, + { + "x": 65.0, + "y": 25.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#10", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#7", + "pinName": "B" + }, + "path": [ + { + "x": 37.5, + "y": 185.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#3", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#8", + "pinName": "A" + } + }, + { + "pin1": { + "compName": "GUINandGate#4", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#11", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#11", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#9", + "pinName": "A" + }, + "path": [ + { + "x": 65.0, + "y": 55.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#11", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#9", + "pinName": "B" + }, + "path": [ + { + "x": 65.0, + "y": 65.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#5", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#12", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#12", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#10", + "pinName": "A" + }, + "path": [ + { + "x": 65.0, + "y": 95.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#12", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#10", + "pinName": "B" + }, + "path": [ + { + "x": 65.0, + "y": 105.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#6", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#13", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#13", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#11", + "pinName": "A" + }, + "path": [ + { + "x": 65.0, + "y": 135.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#13", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#11", + "pinName": "B" + }, + "path": [ + { + "x": 65.0, + "y": 145.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#7", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#12", + "pinName": "A" + } + }, + { + "pin1": { + "compName": "GUINandGate#8", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#14", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#14", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#13", + "pinName": "A" + }, + "path": [ + { + "x": 95.0, + "y": 15.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#14", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#13", + "pinName": "B" + }, + "path": [ + { + "x": 95.0, + "y": 25.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#9", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "RA" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUINandGate#10", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "SB" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUINandGate#11", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "SA" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUINandGate#12", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#15", + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#15", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#14", + "pinName": "A" + }, + "path": [ + { + "x": 95.0, + "y": 175.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#15", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#14", + "pinName": "B" + }, + "path": [ + { + "x": 95.0, + "y": 185.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#13", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "SQ" + }, + "path": [] + }, + { + "pin1": { + "compName": "GUINandGate#14", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "RD" + }, + "path": [] + } + ] + }, + "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", + "symbolRendererParams": { + "centerText": "Am2901SourceDecode", + "horizontalComponentCenter": 17.5, + "centerTextHeight": 5.0, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/DialogManager.java b/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/DialogManager.java new file mode 100644 index 00000000..347e6222 --- /dev/null +++ b/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/DialogManager.java @@ -0,0 +1,131 @@ +package net.mograsim.logic.model.editor; + +import org.eclipse.swt.SWT; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.MessageBox; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.swt.widgets.Text; + +public class DialogManager +{ + private Shell parent; + + public DialogManager(Shell parent) + { + this.parent = parent; + } + + public void openWarningDialog(String title, String message) + { + MessageBox b = new MessageBox(parent, SWT.ICON_WARNING | SWT.OK); + b.setText(title); + b.setMessage(message); + b.open(); + } + + public static class InteractiveDialog + { + private String[] finalInput; + private final Display display; + private final Shell shell; + private final Button b1, b2; + private Text[] textFields; + private InteractiveDialog.InteractiveDialogState state; + + public InteractiveDialog(String title, String acceptLabel, String cancelLabel, String... inputs) + { + display = Display.getDefault(); + shell = new Shell(SWT.CLOSE | SWT.TITLE | SWT.MIN | SWT.ON_TOP | SWT.APPLICATION_MODAL); + shell.setMinimumSize(500, 150); + shell.setText(title); + GridLayout layout = new GridLayout(); + layout.numColumns = 2; + shell.setLayout(layout); + + this.textFields = new Text[inputs.length]; + for (int i = 0; i < inputs.length; i++) + { + Label textFieldName = new Label(shell, SWT.NONE); + textFieldName.setText(inputs[i].concat(":")); + GridData g = new GridData(); + g.grabExcessHorizontalSpace = true; + g.horizontalAlignment = SWT.FILL; + Text newTextField = new Text(shell, SWT.BORDER); + newTextField.setLayoutData(g); + textFields[i] = newTextField; + } + b1 = new Button(shell, SWT.PUSH); + b1.addListener(SWT.Selection, e -> + { + state = InteractiveDialogState.ACCEPTED; + buildFinalInput(); + dispose(); + }); + b1.setText(acceptLabel); + b2 = new Button(shell, SWT.PUSH); + b2.addListener(SWT.Selection, e -> + { + state = InteractiveDialogState.CANCELLED; + buildFinalInput(); + dispose(); + }); + b2.setText(cancelLabel); + + state = InteractiveDialogState.ACTIVE; + + shell.pack(); + } + + public String getText() + { + return getText(0); + } + + public String getText(int index) + { + if (!shell.isDisposed()) + return textFields[index].getText(); + else + return finalInput[index]; + } + + public void open() + { + shell.open(); + while (!shell.isDisposed()) + if (!display.readAndDispatch()) + display.sleep(); + } + + public void dispose() + { + shell.dispose(); + } + + public InteractiveDialog.InteractiveDialogState getState() + { + return state; + } + + private void buildFinalInput() + { + finalInput = new String[textFields.length]; + for (int i = 0; i < textFields.length; i++) + finalInput[i] = textFields[i].getText(); + } + + public static enum InteractiveDialogState + { + ACTIVE, ACCEPTED, CANCELLED; + } + } + + public static void openAddPinDialog(Editor editor, double x, double y) + { + + } +} diff --git a/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/EditableSubmodelComponent.java b/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/EditableSubmodelComponent.java new file mode 100644 index 00000000..fac23049 --- /dev/null +++ b/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/EditableSubmodelComponent.java @@ -0,0 +1,89 @@ +package net.mograsim.logic.model.editor; + +import org.eclipse.swt.graphics.Color; + +import net.haspamelodica.swt.helper.gcs.GeneralGC; +import net.haspamelodica.swt.helper.swtobjectwrappers.Font; +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; +import net.mograsim.logic.model.model.ViewModelModifiable; +import net.mograsim.logic.model.model.wires.MovablePin; +import net.mograsim.logic.model.model.wires.Pin; +import net.mograsim.logic.model.serializing.DeserializedSubmodelComponent; +import net.mograsim.preferences.Preferences; + +public class EditableSubmodelComponent extends DeserializedSubmodelComponent +{ + private static final double labelFontHeight = 5; + private static final double pinNameFontHeight = 3; + private String label; + + public EditableSubmodelComponent(ViewModelModifiable model, String label) + { + super(model, label); //TODO: set name properly + this.label = label; + setSubmodelScale(0.2); + addSubmodelInterface(new MovablePin(this, "A Pin", 1, 0, 10)); + + } + + public ViewModelModifiable getSubmodelModifiable() + { + return submodelModifiable; + } + + @Override + protected void renderOutline(GeneralGC gc, Rectangle visibleRegion) + { + Color foreground = Preferences.current().getColor("net.mograsim.logic.model.color.foreground"); + if (foreground != null) + gc.setForeground(foreground); + gc.drawRectangle(getBounds()); + } + + @Override + protected void renderSymbol(GeneralGC gc, Rectangle visibleRegion) + { + Font oldFont = gc.getFont(); + gc.setFont(new Font(oldFont.getName(), labelFontHeight, oldFont.getStyle())); + Point textExtent = gc.textExtent(label); + Color textColor = Preferences.current().getColor("net.mograsim.logic.model.color.text"); + if (textColor != null) + gc.setForeground(textColor); + gc.drawText(label, getPosX() + (getWidth() - textExtent.x) / 2, getPosY() + (getHeight() - textExtent.y) / 2, + true); + gc.setFont(new Font(oldFont.getName(), pinNameFontHeight, oldFont.getStyle())); + for (String name : pinsUnmodifiable.keySet()) + { + Pin p = pinsUnmodifiable.get(name); + Point pos = p.getPos(); + gc.drawText(name, pos.x, pos.y, true); + } + gc.setFont(oldFont); + } + + public void setSubmodelScale(double scale) + { + super.setSubmodelScale(scale); + } + + public double getSubmodelScale() + { + return super.getSubmodelScale(); + } + + public void setSize(double width, double height) + { + super.setSize(width, height); + } + + public String getLabel() + { + return label; + } + + public void setLabel(String label) + { + this.label = label; + } +} diff --git a/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/Editor.java b/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/Editor.java new file mode 100644 index 00000000..36dcbc7f --- /dev/null +++ b/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/Editor.java @@ -0,0 +1,215 @@ +package net.mograsim.logic.model.editor; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Optional; +import java.util.Set; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; + +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.mograsim.logic.model.editor.handles.ComponentHandle; +import net.mograsim.logic.model.editor.handles.Handle; +import net.mograsim.logic.model.editor.handles.HandleManager; +import net.mograsim.logic.model.editor.handles.PinHandle; +import net.mograsim.logic.model.editor.states.StateManager; +import net.mograsim.logic.model.model.ViewModelModifiable; +import net.mograsim.logic.model.model.components.GUIComponent; +import net.mograsim.logic.model.model.wires.GUIWire; +import net.mograsim.logic.model.serializing.DeserializedSubmodelComponent; +import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator; + +public final class Editor +{ + final Selection selection = new Selection(); + final Set copyBuffer = new HashSet<>(); + public final DeserializedSubmodelComponent toBeEdited; + public final HandleManager handleManager; + final static Map identifierPerComponent = new HashMap<>(); + public final EditorGUI gui; + public final StateManager stateManager; + private final SaveLoadManager saveManager; + Snapping snapping = Snapping.ABSOLUTE; + private double snapX = 5, snapY = 5; + public final DialogManager dialogManager; + + public Editor(DeserializedSubmodelComponent toBeEdited) + { + this.toBeEdited = toBeEdited; + handleManager = new HandleManager(this); + gui = new EditorGUI(this); + stateManager = new StateManager(this); + handleManager.init(); + saveManager = new SaveLoadManager(this); + dialogManager = new DialogManager(gui.shell); + + toBeEdited.submodel.addComponentRemovedListener(c -> identifierPerComponent.remove(c)); + + gui.open(); + } + + public ViewModelModifiable getSubmodel() + { + return toBeEdited.getSubmodelModifiable(); + } + + public Selection getSelection() + { + return selection; + } + + //TODO: Remove this error prone method: Relative offset may change between multiple moves, + //because Handles have different ways of responding to reqMove(...), causing strange behaviour + @Deprecated + public void moveSelection(double x, double y) + { + Point ref = selection.getTopLeft(); + Point snapped = new Point(x, y); + applySnapping(snapped); + + for (Handle c : selection) + { + double newX, newY; + newX = snapped.x + c.getPosX() - ref.x; + newY = snapped.y + c.getPosY() - ref.y; + c.reqMove(newX, newY); + } + } + + public void moveHandles(double x, double y, Map handleOffsetMap) + { + Point snapped = new Point(x, y); + applySnapping(snapped); + + for (Handle c : handleOffsetMap.keySet()) + { + Point offset = handleOffsetMap.get(c); + double newX, newY; + newX = snapped.x + offset.x; + newY = snapped.y + offset.y; + c.reqMove(newX, newY); + } + } + + public void deleteSelection() + { + selection.forEach(h -> h.reqDelete()); + selection.clear(); + } + + public void copy() + { + copyBuffer.clear(); + Point refPoint = selection.getTopLeft(); + for (Handle h : selection) + { + Optional cInfo = h.reqCopy(refPoint); + if(cInfo.isPresent()) + copyBuffer.add(cInfo.get()); + } + } + + public void paste(double x, double y) + { + selection.clear(); + for (ComponentInfo info : copyBuffer) + { + GUIComponent comp = addComponent(info.identifier, info.params); + ComponentHandle h = handleManager.getHandle(comp); + h.reqMove(info.relX, info.relY); + selection.add(h); + } + moveSelection(x, y); + } + + public void save() + { + saveManager.save(); + } + + public void addComponent(double x, double y) + { + GUIComponent c = addComponent(gui.getAddListSelected(), new JsonObject()); + selection.clear(); + selection.add(handleManager.getHandle(c)); + moveSelection(x, y); + } + + private GUIComponent addComponent(String identifier, JsonElement params) + { + GUIComponent comp = IndirectGUIComponentCreator.createComponent(toBeEdited.getSubmodelModifiable(), identifier, + params); + identifierPerComponent.put(comp, identifier); + return comp; + } + + public static String getIdentifier(GUIComponent c) + { + return identifierPerComponent.get(c); + } + + public void duplicate() + { + copy(); + Point origin = selection.getTopLeft(); + paste(origin.x + 20, origin.y + 20); + } + + private void applySnapping(Point newP) + { + switch (snapping) + { + case OFF: + break; + case ABSOLUTE: + newP.x -= newP.x % snapX; + newP.y -= newP.y % snapY; + break; + } + } + + public static class ComponentInfo + { + public final double relX, relY; + public final String identifier; + public final JsonElement params; + + public ComponentInfo(double relX, double relY, String identifier, JsonElement params) + { + this.relX = relX; + this.relY = relY; + this.identifier = identifier; + this.params = params; + } + } + + public Point getCanvasMousePosition() + { + //TODO + org.eclipse.swt.graphics.Point canvasLoc = gui.logicCanvas.getLocation(), + mouseLoc = gui.display.getCursorLocation(), shellLoc = gui.shell.getLocation(); + return new Point(mouseLoc.x - shellLoc.x - canvasLoc.x, mouseLoc.y - shellLoc.y - canvasLoc.y); + } + + public Point getWorldMousePosition() + { + return gui.logicCanvas.canvasToWorldCoords(getCanvasMousePosition()); + } + + public void addWire(PinHandle a, PinHandle b) + { + new GUIWire(toBeEdited.getSubmodelModifiable(), a.getPin(), b.getPin(), new Point[0]); + } + + public static enum Snapping + { + OFF, ABSOLUTE; + } + + public static void main(String[] args) + { + SaveLoadManager.openLoadDialog(); + } +} diff --git a/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/EditorCanvas.java b/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/EditorCanvas.java new file mode 100644 index 00000000..df6b9137 --- /dev/null +++ b/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/EditorCanvas.java @@ -0,0 +1,42 @@ +package net.mograsim.logic.model.editor; + +import java.util.Collection; + +import org.eclipse.swt.graphics.Color; +import org.eclipse.swt.widgets.Composite; + +import net.haspamelodica.swt.helper.gcs.TranslatedGC; +import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; +import net.mograsim.logic.model.LogicUICanvas; +import net.mograsim.logic.model.editor.handles.Handle; +import net.mograsim.preferences.Preferences; + +public class EditorCanvas extends LogicUICanvas +{ + private Collection handles; + + public EditorCanvas(Composite parent, int style, Editor editor) + { + super(parent, style, editor.toBeEdited.submodel); + + handles = editor.handleManager.getHandles(); + editor.handleManager.addHandleAddedListener(h -> + h.addRedrawListener(this::redrawThreadsafe)); + //Is this even necessary? The Handle should be finalized by the gc + editor.handleManager.addHandleRemovedListener(h -> h.removeRedrawListener(this::redrawThreadsafe)); + + addZoomedRenderer(gc -> + { + Rectangle visibleRegion = new Rectangle(-offX / zoom, -offY / zoom, gW / zoom, gH / zoom); + Color background = Preferences.current().getColor("net.mograsim.logic.ui.color.background"); + if (background != null) + setBackground(background);// this.setBackground, not gc.setBackground to have the background fill the + // canvas + + TranslatedGC tgc = new TranslatedGC(gc, 0.0d, 0.0d, 1 / editor.toBeEdited.getSubmodelScale(), false); + editor.toBeEdited.outlineRenderer.render(tgc, new Rectangle(-offX / zoom, -offY / zoom, gW / zoom, gH / zoom)); + + handles.forEach(h -> h.render(gc, visibleRegion)); + }); + } +} diff --git a/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/EditorGUI.java b/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/EditorGUI.java new file mode 100644 index 00000000..2627d3c0 --- /dev/null +++ b/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/EditorGUI.java @@ -0,0 +1,78 @@ +package net.mograsim.logic.model.editor; + +import org.eclipse.swt.SWT; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.List; +import org.eclipse.swt.widgets.Shell; + +import net.haspamelodica.swt.helper.zoomablecanvas.helper.ZoomableCanvasOverlay; +import net.haspamelodica.swt.helper.zoomablecanvas.helper.ZoomableCanvasUserInput; +import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator; + +public class EditorGUI +{ + final Display display; + final Shell shell; + public final EditorCanvas logicCanvas; + private final List addList; + + public EditorGUI(Editor editor) + { + display = Display.getDefault(); + shell = new Shell(display); + + //Layout + GridLayout layout = new GridLayout(); + shell.setLayout(layout); + layout.numColumns = 2; + + GridData d = new GridData(); + d.grabExcessVerticalSpace = true; + d.verticalAlignment = SWT.FILL; + addList = new List(shell, SWT.FILL); + addList.setLayoutData(d); + refreshAddList(); + + d = new GridData(); + d.grabExcessHorizontalSpace = true; + d.horizontalAlignment = SWT.FILL; + d.grabExcessVerticalSpace = true; + d.verticalAlignment = SWT.FILL; + + logicCanvas = new EditorCanvas(shell, SWT.TRAIL, editor); + logicCanvas.setLayoutData(d); + + + new EditorUserInput(editor, this); + ZoomableCanvasUserInput userInput = new ZoomableCanvasUserInput(logicCanvas); + userInput.buttonDrag = 3; + userInput.buttonZoom = 2; + userInput.enableUserInput(); + new ZoomableCanvasOverlay(logicCanvas, null).enableScale(); + } + + public void refreshAddList() + { + addList.setItems(IndirectGUIComponentCreator.getStandardComponentIDs().toArray(String[]::new)); + addList.select(0); + } + + public String getAddListSelected() + { + String[] selection = addList.getSelection(); + if(selection.length == 0) + throw new IllegalStateException("Selection in the Add Component List may never be empty!"); + return selection[0]; + } + + public void open() + { + shell.open(); + while (!shell.isDisposed()) + if (!display.readAndDispatch()) + display.sleep(); + } + +} diff --git a/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/EditorUserInput.java b/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/EditorUserInput.java new file mode 100644 index 00000000..cb66e94f --- /dev/null +++ b/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/EditorUserInput.java @@ -0,0 +1,95 @@ +package net.mograsim.logic.model.editor; + +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.KeyEvent; +import org.eclipse.swt.events.KeyListener; +import org.eclipse.swt.events.MouseEvent; +import org.eclipse.swt.events.MouseListener; + +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; + +public class EditorUserInput +{ + public EditorUserInput(Editor editor, EditorGUI gui) + { + gui.logicCanvas.addMouseListener(new MouseListener() + { + @Override + public void mouseDoubleClick(MouseEvent e) + { + // TODO Auto-generated method stub + } + + @Override + public void mouseDown(MouseEvent e) + { + Point clicked = editor.gui.logicCanvas.canvasToWorldCoords(e.x, e.y); + switch (e.button) + { + case 1: + editor.handleManager.click(clicked, e.stateMask); + break; + } + + } + + @Override + public void mouseUp(MouseEvent e) {} + }); + + gui.logicCanvas.addMouseMoveListener((e) -> + { + Point dest = editor.gui.logicCanvas.canvasToWorldCoords(e.x, e.y); + editor.stateManager.mouseMoved(dest.x, dest.y); + }); + + gui.logicCanvas.addKeyListener(new KeyListener() + { + + @Override + public void keyReleased(KeyEvent e) + { + // TODO Auto-generated method stub + + } + + @Override + public void keyPressed(KeyEvent e) + { + switch (e.keyCode) + { + case 'c': + if ((e.stateMask & SWT.CTRL) == SWT.CTRL) + editor.stateManager.copy(); + break; + case 'v': + if ((e.stateMask & SWT.CTRL) == SWT.CTRL) + editor.stateManager.paste(); + break; + case 'd': + if ((e.stateMask & SWT.SHIFT) == SWT.SHIFT) + editor.stateManager.duplicate(); + break; + case 'g': + editor.stateManager.grab(); + break; + case 'r': + editor.stateManager.delete(); + break; + case 's': + if ((e.stateMask & SWT.CTRL) == SWT.CTRL) + editor.save(); + break; + case 'a': + if ((e.stateMask & SWT.SHIFT) == SWT.SHIFT) + editor.stateManager.add(); + break; + case 'h': + editor.stateManager.boxSelect(); + break; + } + + } + }); + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/SaveLoadManager.java b/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/SaveLoadManager.java new file mode 100644 index 00000000..848227bc --- /dev/null +++ b/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/SaveLoadManager.java @@ -0,0 +1,69 @@ +package net.mograsim.logic.model.editor; + +import java.io.IOException; + +import net.mograsim.logic.model.editor.DialogManager.InteractiveDialog; +import net.mograsim.logic.model.model.ViewModelModifiable; +import net.mograsim.logic.model.serializing.DeserializedSubmodelComponent; +import net.mograsim.logic.model.serializing.SubmodelComponentDeserializer; +import net.mograsim.logic.model.util.JsonHandler; + +public class SaveLoadManager +{ + private String savePath = null; + private Editor editor; + + public SaveLoadManager(Editor editor) + { + this.editor = editor; + } + + public void save() + { + if (savePath == null) + openSaveAsDialog(); + else + innerSave(); + } + + public void openSaveAsDialog() + { + InteractiveDialog d = new InteractiveDialog("Save as...", "Save", "Cancel", "Path"); + d.open(); + + if(InteractiveDialog.InteractiveDialogState.ACCEPTED.equals(d.getState())) + { + savePath = d.getText(); + innerSave(); + } + } + + private void innerSave() + { + try + { + JsonHandler.writeJson(editor.toBeEdited.calculateParams(c -> + { + if (Editor.identifierPerComponent.containsKey(c)) + return Editor.identifierPerComponent.get(c); + return "class:" + c.getClass().getCanonicalName(); + }), savePath); + } catch (IOException e) + { + savePath = null; + System.err.println("Failed to save component!"); + e.printStackTrace(); + } + } + + public static void openLoadDialog() + { + InteractiveDialog load = new InteractiveDialog("Load Component...", "Load", "Cancel", "Path"); + load.open(); + if(InteractiveDialog.InteractiveDialogState.ACCEPTED.equals(load.getState())) + { + new Editor((DeserializedSubmodelComponent) SubmodelComponentDeserializer + .create(new ViewModelModifiable(), load.getText())); + } + } +} diff --git a/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/Selection.java b/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/Selection.java new file mode 100644 index 00000000..23135e4a --- /dev/null +++ b/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/Selection.java @@ -0,0 +1,132 @@ +package net.mograsim.logic.model.editor; + +import java.util.Collection; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.Map; +import java.util.Set; +import java.util.function.DoubleBinaryOperator; + +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; +import net.mograsim.logic.model.editor.handles.Handle; + +public class Selection implements Iterable +{ + private Set selection = new HashSet<>(); + + public Map calculateOffsets() + { + Map offsets = new HashMap<>(); + Point ref = getTopLeft(); + selection.forEach(h -> offsets.put(h, new Point(h.getPosX() - ref.x, h.getPosY() - ref.y))); + return offsets; + } + + public Rectangle getBounds() + { + Point pos1 = getTopLeft(); + Point pos2 = getBottomRight(); + return new Rectangle(pos1.x, pos1.y, pos2.x - pos1.x, pos2.y - pos1.y); + } + + public double getWidth() + {// TODO: Compute this more efficiently + return getTopRight().x - getTopLeft().x; + } + + public double getHeight() + { + return getBottomLeft().y - getTopLeft().y; + } + + public Point getTopLeft() + { + return getCorner(Double.MAX_VALUE, Double::min, r -> 0, Double.MAX_VALUE, Double::min, r -> 0); + } + + public Point getTopRight() + { + return getCorner(-Double.MAX_VALUE, Double::max, r -> r.width, Double.MAX_VALUE, Double::min, r -> 0); + } + + public Point getBottomLeft() + { + return getCorner(Double.MAX_VALUE, Double::min, r -> 0, -Double.MAX_VALUE, Double::max, r -> r.height); + } + + public Point getBottomRight() + { + return getCorner(-Double.MAX_VALUE, Double::max, r -> r.width, -Double.MAX_VALUE, Double::max, r -> r.height); + } + + public Point getCorner(double xIdentity, DoubleBinaryOperator xOp, Offset xOffset, double yIdentity, + DoubleBinaryOperator yOp, Offset yOffset) + { + double x = xIdentity, y = yIdentity; + for (Handle c : selection) + { + Rectangle bounds = c.getBounds(); + x = xOp.applyAsDouble(x, bounds.x + xOffset.computeOffset(bounds)); + y = yOp.applyAsDouble(y, bounds.y + yOffset.computeOffset(bounds)); + } + return new Point(x, y); + } + + private static interface Offset + { + public double computeOffset(Rectangle bounds); + } + + public void add(Handle h) + { + selection.add(h); + h.onSelect(); + } + + public void remove(Handle h) + { + selection.remove(h); + h.onDeselect(); + } + + public void clear() + { + selection.forEach(h -> h.onDeselect()); + selection.clear(); + } + + public int size() + { + return selection.size(); + } + + public boolean contains(Handle h) + { + return selection.contains(h); + } + + public void addAll(Collection handles) + { + handles.forEach(h -> h.onSelect()); + selection.addAll(handles); + } + + @Override + public Iterator iterator() + { + return selection.iterator(); + } + + @Override + public String toString() + { + return selection.toString(); + } + + public boolean isEmpty() + { + return selection.isEmpty(); + } +} diff --git a/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/handles/ComponentHandle.java b/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/handles/ComponentHandle.java new file mode 100644 index 00000000..52b634da --- /dev/null +++ b/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/handles/ComponentHandle.java @@ -0,0 +1,96 @@ +package net.mograsim.logic.model.editor.handles; + +import java.util.Optional; + +import org.eclipse.swt.SWT; +import org.eclipse.swt.widgets.Display; + +import net.haspamelodica.swt.helper.gcs.GeneralGC; +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; +import net.mograsim.logic.model.editor.Editor; +import net.mograsim.logic.model.editor.Editor.ComponentInfo; +import net.mograsim.logic.model.model.components.GUIComponent; + +public class ComponentHandle extends Handle +{ + public final GUIComponent parent; + private final static double POS_OFFSET = 2.0d; + private final static double LENGTH_OFFSET = POS_OFFSET * 2; + boolean selected = false; + + public ComponentHandle(GUIComponent parent) + { + this.parent = parent; + Rectangle bounds = parent.getBounds(); + setSize(bounds.width, bounds.height); + parent.addComponentResizedListener((c) -> + { + Rectangle pBounds = c.getBounds(); + setSize(pBounds.width, pBounds.height); + }); + moveTo(parent.getPosX(), parent.getPosY()); + } + + @Override + protected void moveTo(double x, double y) + { + super.moveTo(x, y); + parent.moveTo(x, y); + } + + @Override + protected void render(GeneralGC gc) + { + if (selected) + { + gc.setLineWidth(2); + gc.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_YELLOW)); + Rectangle bounds = getBounds(); + bounds.x -= POS_OFFSET; + bounds.y -= POS_OFFSET; + bounds.width += LENGTH_OFFSET; + bounds.height += LENGTH_OFFSET; + gc.drawRectangle(bounds); + } + } + + @Override + public void reqMove(double x, double y) + { + moveTo(x, y); + } + + @Override + public void onSelect() + { + selected = true; + callRedrawListeners(); + } + + @Override + public void onDeselect() + { + selected = false; + callRedrawListeners(); + } + + @Override + public void reqDelete() + { + parent.destroy(); + } + + @Override + public Optional reqCopy(Point refPoint) + { + return Optional.of(new ComponentInfo(parent.getPosX() - refPoint.x, parent.getPosY() - refPoint.y, + Editor.getIdentifier(parent), parent.getParams())); + } + + @Override + public HandleType getType() + { + return HandleType.COMPONENT; + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/handles/CornerHandle.java b/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/handles/CornerHandle.java new file mode 100644 index 00000000..b56ec2bb --- /dev/null +++ b/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/handles/CornerHandle.java @@ -0,0 +1,71 @@ +package net.mograsim.logic.model.editor.handles; + +import org.eclipse.swt.SWT; +import org.eclipse.swt.widgets.Display; + +import net.haspamelodica.swt.helper.gcs.GeneralGC; +import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; +import net.mograsim.logic.model.serializing.DeserializedSubmodelComponent; + +public class CornerHandle extends Handle +{ + private final static int LENGTH = 5; + private final DeserializedSubmodelComponent toBeEdited; + private boolean selected; + + public CornerHandle(DeserializedSubmodelComponent toBeEdited) + { + super(); + this.toBeEdited = toBeEdited; + setSize(LENGTH, LENGTH); + initPos(); + } + + @Override + protected void render(GeneralGC gc) + { + gc.setBackground(Display.getCurrent().getSystemColor(selected ? SWT.COLOR_YELLOW : SWT.COLOR_DARK_GREEN)); + gc.fillRectangle(getPosX(), getPosY(), LENGTH, LENGTH); + } + + private void initPos() + { + Rectangle bounds = toBeEdited.getBounds(); + double subScale = toBeEdited.getSubmodelScale(); + moveTo(bounds.width / subScale, bounds.height / subScale); + } + + @Override + public void reqMove(double x, double y) + { + moveTo(x, y); + } + + @Override + public void onSelect() + { + selected = true; + callRedrawListeners(); + } + + @Override + public void onDeselect() + { + selected = false; + callRedrawListeners(); + } + + @Override + protected void moveTo(double x, double y) + { + super.moveTo(x, y); + double subScale = toBeEdited.getSubmodelScale(); + toBeEdited.setSize(x * subScale, y * subScale); + } + + @Override + public HandleType getType() + { + return HandleType.CORNER; + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/handles/Handle.java b/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/handles/Handle.java new file mode 100644 index 00000000..454f4214 --- /dev/null +++ b/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/handles/Handle.java @@ -0,0 +1,142 @@ +package net.mograsim.logic.model.editor.handles; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Optional; + +import net.haspamelodica.swt.helper.gcs.GeneralGC; +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; +import net.mograsim.logic.model.editor.Editor.ComponentInfo; +import net.mograsim.logic.model.editor.states.EditorState; + +public abstract class Handle +{ + private final Rectangle bounds; + private final Collection redrawListeners, destroyListeners; + + public Handle() + { + redrawListeners = new ArrayList<>(); + destroyListeners = new ArrayList<>(); + bounds = new Rectangle(0, 0, 0, 0); + callRedrawListeners(); + } + + final public void render(GeneralGC gc, Rectangle visibleRegion) + { + if (bounds.intersects(visibleRegion)) + render(gc); + } + + protected abstract void render(GeneralGC gc); + + protected void setSize(double width, double height) + { + bounds.width = width; + bounds.height = height; + callRedrawListeners(); + } + + protected void moveTo(double x, double y) + { + bounds.x = x; + bounds.y = y; + callRedrawListeners(); + } + + public Rectangle getBounds() + { + return new Rectangle(bounds.x, bounds.y, bounds.width, bounds.height); + } + + public void addRedrawListener(Runnable listener) + { + redrawListeners.add(listener); + } + + public void removeRedrawListener(Runnable listener) + { + redrawListeners.remove(listener); + } + + protected void callRedrawListeners() + { + redrawListeners.forEach(l -> l.run()); + } + + public double getPosX() + { + return bounds.x; + } + + public double getPosY() + { + return bounds.y; + } + + void destroy() + { + destroyListeners.forEach(l -> l.run()); + } + + public void addDestroyListener(Runnable listener) + { + redrawListeners.add(listener); + } + + public void removeDestroyListener(Runnable listener) + { + redrawListeners.remove(listener); + } + + public boolean contains(double x, double y) + { + return bounds.contains(x, y); + } + + public boolean contains(Point p) + { + return contains(p.x, p.y); + } + + /** + * Register a mouse click + * @param x Coordinate of the click in the world, not the display context + * @param y Coordinate of the click in the world, not the display context + * @return true if the click was consumed, false otherwise + */ + public boolean click(double x, double y, int stateMask, EditorState state) + { + if(contains(x, y)) + return state.clickedHandle(new HandleClickInfo(this, stateMask)); + return false; + } + + //@formatter:off + public void reqMove(double x, double y) {} + public void reqDelete() {} + public Optional reqCopy(Point refPoint) { return Optional.empty(); } + public void onSelect() {} + public void onDeselect() {} + //@formatter:on + + public abstract HandleType getType(); + + public static enum HandleType + { + COMPONENT, STATIC_PIN, INTERFACE_PIN, WIRE_POINT, WIRE, CORNER; + } + + public static class HandleClickInfo + { + public final int stateMask; + public final Handle clicked; + + HandleClickInfo(Handle clicked, int stateMask) + { + this.clicked = clicked; + this.stateMask = stateMask; + } + } +} diff --git a/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/handles/HandleManager.java b/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/handles/HandleManager.java new file mode 100644 index 00000000..f999c96a --- /dev/null +++ b/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/handles/HandleManager.java @@ -0,0 +1,391 @@ +package net.mograsim.logic.model.editor.handles; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.function.Consumer; +import java.util.stream.Collectors; + +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.mograsim.logic.model.editor.Editor; +import net.mograsim.logic.model.editor.states.EditorState; +import net.mograsim.logic.model.model.ViewModelModifiable; +import net.mograsim.logic.model.model.components.GUIComponent; +import net.mograsim.logic.model.model.wires.GUIWire; +import net.mograsim.logic.model.model.wires.MovablePin; +import net.mograsim.logic.model.model.wires.Pin; + +public class HandleManager +{ + private final Map handlePerPin; + private final Map handlePerInterfacePin; + private final Map> pointHandlesPerWire; + private final Map handlePerWire; + private final Set handles; + private final Set wirePointHandles; + private final Map handlePerComp; + + private final Collection> handleAddedListeners; + private final Collection> handleRemovedListeners; + private final Editor editor; + private boolean initialized = false; + + private CornerHandle cornerHandle; + + public HandleManager(Editor editor) + { + this.editor = editor; + handlePerPin = new HashMap<>(); + handlePerInterfacePin = new HashMap<>(); + pointHandlesPerWire = new HashMap<>(); + handlePerComp = new HashMap<>(); + handles = new HashSet<>(); + wirePointHandles = new HashSet<>(); + handlePerWire = new HashMap<>(); + + handleAddedListeners = new ArrayList<>(); + handleRemovedListeners = new ArrayList<>(); + + ViewModelModifiable model = editor.getSubmodel(); + + model.addComponentAddedListener(c -> registerComponent(c)); + + model.addComponentRemovedListener(c -> + { + removeComponentHandle(c); + }); + + model.addWireAddedListener(w -> + { + registerWire(w); + }); + + model.addWireRemovedListener(w -> + { + removeWireHandle(w); + removeWirePointHandles(w); + }); + } + + //////////////////////////////////////// + // -- Setting up initial handles -- /// + ////////////////////////////////////// + + public void init() + { + if (initialized) + System.err.println("Warning! HandleManager was already initialized."); + else + { + ViewModelModifiable model = editor.getSubmodel(); + Map compsByName = model.getComponentsByName(); + Set comps = new HashSet<>(compsByName.values()); + GUIComponent interfaceComp = compsByName.get("_submodelinterface"); + comps.remove(interfaceComp); + registerInterfaceComponent(interfaceComp); + comps.forEach(c -> registerComponent(c)); + + model.getWires().forEach(w -> registerWire(w)); + addHandle(cornerHandle = new CornerHandle(editor.toBeEdited)); + } + } + + private void registerInterfaceComponent(GUIComponent c) + { + c.getPins().values().forEach(p -> addInterfacePinHandle(p)); + c.addPinAddedListener(p -> addInterfacePinHandle(p)); + c.addPinRemovedListener(p -> removeInterfacePinHandle(p)); + } + + private void registerComponent(GUIComponent c) + { + addComponentHandle(c); + + c.getPins().values().forEach(p -> addPinHandle(p)); + + c.addPinAddedListener(p -> addPinHandle(p)); + c.addPinRemovedListener(p -> removePinHandle(p)); + } + + private void registerWire(GUIWire wire) + { + wire.addPathChangedListener((w, diff) -> + { + if(diff != 0) + { + if(diff > 0) + { + for(int i = 0; i < diff; i++) + addWirePointHandle(w); + } + else + { + for(int i = 0; i > diff; i--) + { + removeLastWirePointHandle(wire); + } + } + + List wpHandles = pointHandlesPerWire.get(w); + int size = wpHandles.size(); + for(int i = 0; i < size; i++) + { + wpHandles.get(i).setIndex(i); + } + } + pointHandlesPerWire.get(w).forEach(h -> h.updatePos()); + }); + addWireHandle(wire); + if (wire.getPath() == null) + return; + for (int i = 0; i < wire.getPath().length; i++) + { + addWirePointHandle(wire); + } + } + + ///////////////////////////////////// + // -- Adding/Removing handles -- /// + /////////////////////////////////// + + private void addComponentHandle(GUIComponent c) + { + ComponentHandle h = new ComponentHandle(c); + handlePerComp.put(c, h); + addHandle(h); + } + + private void removeComponentHandle(GUIComponent c) + { + ComponentHandle h = handlePerComp.get(c); + handlePerComp.remove(c); + removeHandle(h); + } + + private void addPinHandle(Pin owner) + { + StaticPinHandle h = new StaticPinHandle(owner); + handlePerPin.put(owner, h); + addHandle(h); + } + + private void removePinHandle(Pin owner) + { + StaticPinHandle h = handlePerPin.get(owner); + handlePerPin.remove(owner); + removeHandle(h); + } + + private void addInterfacePinHandle(Pin p) + { + //The following is not an alternative to the cast, because the new pin is not yet in the map, when the listener is called + //editor.toBeEdited.getSubmodelMovablePins().get(p.name); + MovablePin pM = (MovablePin) p; + InterfacePinHandle h = new InterfacePinHandle(pM, editor.toBeEdited); + handlePerInterfacePin.put(pM, h); + addHandle(h); + } + + private void removeInterfacePinHandle(Pin p) + { + InterfacePinHandle h = handlePerInterfacePin.get(p); + handlePerInterfacePin.remove(p); + removeHandle(h); + } + + private void addWirePointHandle(GUIWire w) + { + List wireHandles = pointHandlesPerWire.get(w); + WirePointHandle h; + if (wireHandles != null) + wireHandles.add(h = new WirePointHandle(w, wireHandles.size())); + else + { + wireHandles = new ArrayList<>(); + h = new WirePointHandle(w, 0); + wireHandles.add(h); + pointHandlesPerWire.put(h.parent, wireHandles); + } + this.wirePointHandles.add(h); + addHandle(h); + } + + private void removeLastWirePointHandle(GUIWire owner) + { + Handle h = pointHandlesPerWire.get(owner).remove(0); + wirePointHandles.remove(h); + removeHandle(h); + } + + private void removeWirePointHandles(GUIWire owner) + { + if(!pointHandlesPerWire.containsKey(owner)) + return; + pointHandlesPerWire.get(owner).forEach(h -> + { + wirePointHandles.remove(h); + removeHandle(h); + }); + pointHandlesPerWire.remove(owner); + } + + private void addWireHandle(GUIWire w) + { + WireHandle h = new WireHandle(w); + handlePerWire.put(w, h); + addHandle(h); + } + + private void removeWireHandle(GUIWire w) + { + WireHandle h = handlePerWire.get(w); + handlePerWire.remove(w); + removeHandle(h); + } + + private void addHandle(Handle h) + { + handles.add(h); + callHandleAddedListeners(h); + } + + private void removeHandle(Handle h) + { + handles.remove(h); + callHandleRemovedListeners(h); + h.destroy(); + } + + public StaticPinHandle getHandle(Pin parent) + { + return handlePerPin.get(parent); + } + + public ComponentHandle getHandle(GUIComponent parent) + { + return handlePerComp.get(parent); + } + + public WireHandle getHandle(GUIWire parent) + { + return handlePerWire.get(parent); + } + + public Handle getInterfacePinHandle(Pin p) + { + return handlePerInterfacePin.get(p); + } + + /** + * @return A Collection of the registered {@link WirePointHandle}s of the specified wire + */ + public Collection getWirePointHandles(GUIWire parent) + { + return pointHandlesPerWire.get(parent).stream().collect(Collectors.toSet()); + } + + /** + * @return An unmodifiable view of all registered {@link Handle}s + */ + public Collection getHandles() + { + return Collections.unmodifiableCollection(handles); + } + + /** + * @return An unmodifiable view of all registered {@link StaticPinHandle}s + */ + public Collection getPinHandles() + { + return Collections.unmodifiableCollection(handlePerPin.values()); + } + + /** + * @return An unmodifiable view of all registered {@link InterfacePinHandle}s + */ + public Collection getInterfacePinHandles() + { + return Collections.unmodifiableCollection(handlePerInterfacePin.values()); + } + + /** + * @return An unmodifiable view of all registered {@link ComponentHandle}s + */ + public Collection getComponentHandles() + { + return Collections.unmodifiableCollection(handlePerComp.values()); + } + + /** + * @return An unmodifiable view of all registered {@link WireHandle}s + */ + public Collection getWireHandles() + { + return Collections.unmodifiableCollection(handlePerWire.values()); + } + + /** + * @return An unmodifiable view of all registered {@link WirePointHandle}s + */ + public Collection getWirePointHandles() + { + return Collections.unmodifiableSet(wirePointHandles); + } + + public void click(Point clicked, int stateMask) + { + EditorState entryState = editor.stateManager.getState(); + + if (!cornerHandle.click(clicked.x, clicked.y, stateMask, entryState)) + if (!click(handlePerPin.values(), clicked, entryState, stateMask)) + if (!click(handlePerInterfacePin.values(), clicked, entryState, stateMask)) + if (!click(getWirePointHandles(), clicked, entryState, stateMask)) + if (!click(handlePerComp.values(), clicked, entryState, stateMask)) + if (!click(getWireHandles(), clicked, entryState, stateMask)) + entryState.clickedEmpty(clicked, stateMask); + entryState.clicked(clicked, stateMask); + } + + private boolean click(Collection handles, Point clicked, EditorState state, int stateMask) + { + for (Handle h : handles) + if (h.click(clicked.x, clicked.y, stateMask, state)) + return true; + return false; + } + + public void addHandleAddedListener(Consumer c) + { + handleAddedListeners.add(c); + } + + private void callHandleAddedListeners(Handle added) + { + handleAddedListeners.forEach(l -> l.accept(added)); + } + + public void removeHandleAddedListener(Consumer c) + { + handleAddedListeners.remove(c); + } + + public void addHandleRemovedListener(Consumer c) + { + handleRemovedListeners.add(c); + } + + private void callHandleRemovedListeners(Handle removed) + { + handleRemovedListeners.forEach(l -> l.accept(removed)); + } + + public void removeHandleRemovedListener(Consumer c) + { + handleRemovedListeners.remove(c); + } +} diff --git a/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/handles/InterfacePinHandle.java b/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/handles/InterfacePinHandle.java new file mode 100644 index 00000000..9eff5ced --- /dev/null +++ b/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/handles/InterfacePinHandle.java @@ -0,0 +1,109 @@ +package net.mograsim.logic.model.editor.handles; + +import org.eclipse.swt.SWT; +import org.eclipse.swt.widgets.Display; + +import net.haspamelodica.swt.helper.gcs.GeneralGC; +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.mograsim.logic.model.model.wires.MovablePin; +import net.mograsim.logic.model.model.wires.Pin; +import net.mograsim.logic.model.serializing.DeserializedSubmodelComponent; + +public class InterfacePinHandle extends PinHandle +{ + private final static int CIRCLE_DIAM = 4, CIRCLE_RADIUS = CIRCLE_DIAM / 2, SELECTED_CIRCLE_OFFSET = 1, + SELECTED_CIRCLE_DIAM = SELECTED_CIRCLE_OFFSET * 2 + CIRCLE_DIAM; + private final MovablePin parent; + private final DeserializedSubmodelComponent owner; + private boolean selected = false; + + public InterfacePinHandle(MovablePin parent, DeserializedSubmodelComponent pinOwner) + { + super(); + this.parent = parent; + this.owner = pinOwner; + setSize(CIRCLE_DIAM, CIRCLE_DIAM); + initPos(); + } + + private void initPos() + { + Point pos = parent.getPos(); + moveTo(pos.x - CIRCLE_RADIUS, pos.y - CIRCLE_RADIUS); + } + + @Override + protected void render(GeneralGC gc) + { + double x = getPosX(), y = getPosY(); + + gc.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE)); + gc.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_RED)); + gc.drawText(parent.name, x + CIRCLE_DIAM, y + CIRCLE_DIAM, true); + if (selected) + { + gc.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_YELLOW)); + gc.drawOval(x - SELECTED_CIRCLE_OFFSET, y - SELECTED_CIRCLE_OFFSET, SELECTED_CIRCLE_DIAM, + SELECTED_CIRCLE_DIAM); + } + gc.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_RED)); + gc.fillOval(getPosX(), getPosY(), CIRCLE_DIAM, CIRCLE_DIAM); + } + + @Override + public void reqMove(double x, double y) + { + moveTo(x, y); + } + + @Override + public void onSelect() + { + selected = true; + callRedrawListeners(); + } + + @Override + public void onDeselect() + { + selected = false; + callRedrawListeners(); + } + + @Override + public void reqDelete() + { + owner.removeSubmodelInterface(parent.name); + } + + @Override + protected void moveTo(double x, double y) + { + super.moveTo(x, y); + parent.setRelPos(getCenterX(), getCenterY()); + } + + @Override + public double getCenterX() + { + return getPosX() + CIRCLE_RADIUS; + } + + @Override + public double getCenterY() + { + return getPosY() + CIRCLE_RADIUS; + } + + @Override + public HandleType getType() + { + return HandleType.INTERFACE_PIN; + } + + @Override + public Pin getPin() + { + return parent; + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/handles/PinHandle.java b/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/handles/PinHandle.java new file mode 100644 index 00000000..365bec56 --- /dev/null +++ b/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/handles/PinHandle.java @@ -0,0 +1,15 @@ +package net.mograsim.logic.model.editor.handles; + +import net.mograsim.logic.model.model.wires.Pin; + +public abstract class PinHandle extends Handle +{ + public PinHandle() + { + super(); + } + + public abstract Pin getPin(); + public abstract double getCenterX(); + public abstract double getCenterY(); +} diff --git a/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/handles/StaticPinHandle.java b/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/handles/StaticPinHandle.java new file mode 100644 index 00000000..7c3f523f --- /dev/null +++ b/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/handles/StaticPinHandle.java @@ -0,0 +1,61 @@ +package net.mograsim.logic.model.editor.handles; + +import org.eclipse.swt.SWT; +import org.eclipse.swt.widgets.Display; + +import net.haspamelodica.swt.helper.gcs.GeneralGC; +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.mograsim.logic.model.model.wires.Pin; + +public class StaticPinHandle extends PinHandle +{ + private final static int CIRCLE_DIAM = 2; + private final static int CIRCLE_RADIUS = 1; + private final Pin parent; + + public StaticPinHandle(Pin parent) + { + super(); + this.parent = parent; + setSize(CIRCLE_DIAM, CIRCLE_DIAM); + parent.addPinMovedListener((p) -> updatePos()); + updatePos(); + } + + @Override + protected void render(GeneralGC gc) + { + gc.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_DARK_GREEN)); + gc.fillOval(getPosX(), getPosY(), CIRCLE_DIAM, CIRCLE_DIAM); + } + + private void updatePos() + { + Point pos = parent.getPos(); + moveTo(pos.x - CIRCLE_RADIUS, pos.y - CIRCLE_RADIUS); + } + + @Override + public double getCenterX() + { + return getPosX() + CIRCLE_RADIUS; + } + + @Override + public double getCenterY() + { + return getPosY() + CIRCLE_RADIUS; + } + + @Override + public HandleType getType() + { + return HandleType.STATIC_PIN; + } + + @Override + public Pin getPin() + { + return parent; + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/handles/WireHandle.java b/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/handles/WireHandle.java new file mode 100644 index 00000000..dcb94517 --- /dev/null +++ b/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/handles/WireHandle.java @@ -0,0 +1,161 @@ +package net.mograsim.logic.model.editor.handles; + +import java.util.Optional; + +import org.eclipse.swt.SWT; +import org.eclipse.swt.widgets.Display; + +import net.haspamelodica.swt.helper.gcs.GeneralGC; +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; +import net.mograsim.logic.model.editor.states.EditorState; +import net.mograsim.logic.model.model.wires.GUIWire; +import net.mograsim.logic.model.model.wires.GUIWire.PathChangedListener; + +public class WireHandle extends Handle implements PathChangedListener +{ + private boolean selected = false; + private final static double WIDTH = 2.0; + private final static double WIDTH_SQUARED = WIDTH * WIDTH; + public final GUIWire parent; + + public WireHandle(GUIWire parent) + { + this.parent = parent; + parent.addPathChangedListener(this); + updateBounds(); + } + + @Override + void destroy() + { + super.destroy(); + parent.removePathChangedListener(this); + } + + public void updateBounds() + { + Rectangle r = parent.getBounds(); + moveTo(r.x, r.y); + setSize(r.width, r.height); + } + + @Override + public void render(GeneralGC gc) + { + if(selected) + { + gc.setLineWidth(WIDTH); + gc.setForeground(Display.getDefault().getSystemColor(SWT.COLOR_YELLOW)); + gc.drawPolyline(parent.getEffectivePath()); + } + } + + @Override + public void onSelect() + { + selected = true; + callRedrawListeners(); + } + + @Override + public void onDeselect() + { + selected = false; + callRedrawListeners(); + } + + @Override + public void reqDelete() + { + parent.destroy(); + } + + @Override + public boolean contains(double x, double y) + { + return click(parent, x, y).isPresent(); + } + + @Override + public boolean click(double x, double y, int stateMask, EditorState state) + { + Optional op = click(parent, x, y); + if(op.isEmpty()) + return false; + WireClickData data = op.get(); + return state.clickedHandle(new WireHandleClickInfo(this, data.segment, data.pos, stateMask)); + } + + public static class WireHandleClickInfo extends HandleClickInfo + { + public final int segment; + public final Point posOnWire; + WireHandleClickInfo(WireHandle clicked, int segment, Point posOnWire, int stateMask) + { + super(clicked, stateMask); + this.segment = segment; + this.posOnWire = posOnWire; + } + + } + + private static Optional click(GUIWire w, double x, double y) + { + Rectangle modifiedBounds = w.getBounds(); + modifiedBounds.x -= WIDTH; + modifiedBounds.y -= WIDTH; + modifiedBounds.width += WIDTH * 2; + modifiedBounds.height += WIDTH * 2; + if (modifiedBounds.contains(x, y)) + { + double[] effectivePath = w.getEffectivePath(); + for (int i = 3; i < effectivePath.length; i += 2) + { + double a1 = effectivePath[i - 3], a2 = effectivePath[i - 2], b1 = effectivePath[i - 1], + b2 = effectivePath[i], r1 = b2 - a2, r2 = a1 - b1; + + double f = ((x - a1) * r2 + (a2 - y) * r1) / (-r2 * r2 - r1 * r1); + if (f >= 0 && f <= 1) + { + double e1 = a1 + f * (b1 - a1), e2 = a2 + f * (b2 - a2); + r1 = e1 - x; + r2 = e2 - y; + if (r1 * r1 + r2 * r2 <= WIDTH_SQUARED) + return Optional.of(new WireClickData(new Point(e1, e2), (i / 2) - 1)); + } + } + } + return Optional.empty(); + } + + private final static class WireClickData + { + WireClickData(Point pos, int segment) + { + this.pos = pos; + this.segment = segment; + } + + /** + * Position on the wire that is closest to the click + */ + public final Point pos; + /** + * Segment of the wire that the {@link Point} pos is on + */ + public final int segment; + } + + @Override + public HandleType getType() + { + return HandleType.WIRE; + } + + @Override + public void pathChanged(GUIWire wire, int diff) + { + updateBounds(); + } +} diff --git a/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/handles/WirePointHandle.java b/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/handles/WirePointHandle.java new file mode 100644 index 00000000..24575797 --- /dev/null +++ b/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/handles/WirePointHandle.java @@ -0,0 +1,85 @@ +package net.mograsim.logic.model.editor.handles; + +import org.eclipse.swt.SWT; +import org.eclipse.swt.widgets.Display; + +import net.haspamelodica.swt.helper.gcs.GeneralGC; +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.mograsim.logic.core.wires.Wire; +import net.mograsim.logic.model.model.wires.GUIWire; + +public class WirePointHandle extends Handle +{ + private final static int END_OFFSET = 4; + private boolean selected = false; + public final GUIWire parent; + + private int pointIndex; + + public WirePointHandle(GUIWire parent, int pointIndex) + { + super(); + this.parent = parent; + this.pointIndex = pointIndex; + setSize(END_OFFSET, END_OFFSET); + Point pathPoint = parent.getPathPoint(pointIndex); + moveTo(pathPoint.x, pathPoint.y); + } + + void updatePos() + { + Point p = parent.getPathPoint(pointIndex); + moveTo(p.x, p.y); + } + + @Override + public void render(GeneralGC gc) + { + gc.setLineWidth(1.0); + gc.setForeground(Display.getDefault().getSystemColor(selected ? SWT.COLOR_YELLOW : SWT.COLOR_BLUE)); + gc.drawLine(getPosX(), getPosY(), getPosX() + END_OFFSET, getPosY() + END_OFFSET); + } + + @Override + public void reqMove(double x, double y) + { + parent.setPathPoint(new Point(x, y), pointIndex); + } + + @Override + public void onSelect() + { + selected = true; + callRedrawListeners(); + } + + @Override + public void onDeselect() + { + selected = false; + callRedrawListeners(); + } + + @Override + public void reqDelete() + { + parent.removePathPoint(pointIndex); + } + + @Override + public HandleType getType() + { + return HandleType.WIRE_POINT; + } + + /** + * Sets the index of the {@link Point} within the parent {@link Wire}s path that is controlled by this handle + * @param index Index of the Point in the Wires path. + * @throws IndexOutOfBoundsException + */ + public void setIndex(int index) + { + this.pointIndex = index; + updatePos(); + } +} diff --git a/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/states/BoxSelectionState.java b/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/states/BoxSelectionState.java new file mode 100644 index 00000000..516f8e60 --- /dev/null +++ b/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/states/BoxSelectionState.java @@ -0,0 +1,91 @@ +package net.mograsim.logic.model.editor.states; + +import org.eclipse.swt.SWT; +import org.eclipse.swt.widgets.Display; + +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; +import net.haspamelodica.swt.helper.zoomablecanvas.ZoomableCanvas.ZoomedRenderer; +import net.mograsim.logic.model.editor.Editor; +import net.mograsim.logic.model.editor.Selection; +import net.mograsim.logic.model.editor.handles.Handle; + +public class BoxSelectionState extends EditorState +{ + private Point origin; + private double mX, mY; + + private final ZoomedRenderer boxRenderer = gc -> + { + if (origin != null) + { + gc.setLineWidth(0.5); + gc.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_DARK_YELLOW)); + gc.drawRectangle(origin.x, origin.y, mX - origin.x, mY - origin.y); + } + }; + + public BoxSelectionState(Editor editor, StateManager manager) + { + super(editor, manager); + } + + @Override + public void onEntry() + { + editor.gui.logicCanvas.addZoomedRenderer(boxRenderer); + editor.gui.logicCanvas.redrawThreadsafe(); + } + + @Override + public void onExit() + { + editor.gui.logicCanvas.removeZoomedRenderer(boxRenderer); + editor.gui.logicCanvas.redrawThreadsafe(); + } + + @Override + public void boxSelect() + { + manager.setState(new SelectionState(editor, manager)); + } + + @Override + public void clicked(Point clicked, int stateMask) + { + if (origin == null) + { + origin = new Point(clicked.x, clicked.y); + mX = clicked.x; + mY = clicked.y; + } else + { + Selection s = editor.getSelection(); + s.clear(); + boolean leftToRight = mX > origin.x, topToBottom = mY > origin.y; + double x = leftToRight ? origin.x : mX, y = topToBottom ? origin.y : mY, + width = leftToRight ? mX - origin.x : origin.x - mX, + height = topToBottom ? mY - origin.y : origin.y - mY; + + Rectangle selected = new Rectangle(x, y, width, height); + for (Handle h : editor.handleManager.getHandles()) + { + Rectangle hBounds = h.getBounds(); + if (selected.contains(hBounds.x, hBounds.y) + && selected.contains(hBounds.x + hBounds.width, hBounds.y + hBounds.height)) + { + s.add(h); + } + } + manager.setState(new SelectionState(editor, manager)); + } + } + + @Override + public void mouseMoved(double x, double y) + { + mX = x; + mY = y; + editor.gui.logicCanvas.redrawThreadsafe(); + } +} diff --git a/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/states/CreateWireState.java b/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/states/CreateWireState.java new file mode 100644 index 00000000..e955d8aa --- /dev/null +++ b/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/states/CreateWireState.java @@ -0,0 +1,85 @@ +package net.mograsim.logic.model.editor.states; + +import org.eclipse.swt.SWT; +import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Shell; + +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.haspamelodica.swt.helper.zoomablecanvas.ZoomableCanvas.ZoomedRenderer; +import net.mograsim.logic.model.editor.Editor; +import net.mograsim.logic.model.editor.handles.PinHandle; +import net.mograsim.logic.model.editor.handles.Handle.HandleClickInfo; + +public class CreateWireState extends EditorState +{ + private final PinHandle origin; + private double mX, mY; + private ZoomedRenderer drawLine; + + public CreateWireState(Editor session, StateManager manager, PinHandle origin) + { + super(session, manager); + this.origin = origin; + mX = origin.getCenterX(); + mY = origin.getCenterY(); + } + + @Override + public void mouseMoved(double x, double y) + { + this.mX = x; + this.mY = y; + editor.gui.logicCanvas.redraw(); + } + + @Override + public void onEntry() + { + editor.getSelection().clear(); + drawLine = gc -> + { + gc.setLineWidth(1); + gc.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_GREEN)); + gc.drawLine((int) origin.getCenterX(), (int) origin.getCenterY(), (int) mX, (int) mY); + }; + editor.gui.logicCanvas.addZoomedRenderer(drawLine); + editor.gui.logicCanvas.redraw(); + } + + @Override + public void onExit() + { + editor.gui.logicCanvas.removeZoomedRenderer(drawLine); + editor.gui.logicCanvas.redraw(); + } + + @Override + public boolean clickedHandle(HandleClickInfo handleClickInfo) + { + switch (handleClickInfo.clicked.getType()) + { + case INTERFACE_PIN: + case STATIC_PIN: + try + { + editor.addWire(origin, (PinHandle) handleClickInfo.clicked); + } + catch (IllegalArgumentException e) + { + Shell tmp = new Shell(Display.getCurrent()); + editor.dialogManager.openWarningDialog("Warning!", e.getMessage()); + tmp.dispose(); + } + break; + default: + return false; + } + return true; + } + + @Override + public void clicked(Point clicked, int stateMask) + { + manager.setState(new SelectionState(editor, manager)); + } +} diff --git a/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/states/EditorState.java b/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/states/EditorState.java new file mode 100644 index 00000000..05e05d85 --- /dev/null +++ b/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/states/EditorState.java @@ -0,0 +1,36 @@ +package net.mograsim.logic.model.editor.states; + +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.mograsim.logic.model.editor.Editor; +import net.mograsim.logic.model.editor.handles.InterfacePinHandle; +import net.mograsim.logic.model.editor.handles.Handle.HandleClickInfo; + +public abstract class EditorState +{ + protected final Editor editor; + protected final StateManager manager; + + public EditorState(Editor session, StateManager manager) + { + this.editor = session; + this.manager = manager; + } + + //@formatter:off + public void add() {} + public void delete() {} + public void copy() {} + public void paste() {} + public void duplicate() {} + public void grab() {} + public void mouseMoved(double x, double y) {} + public void select(Point pos, boolean additive) {} + public void boxSelect() {} + public void onEntry() {} + public void onExit() {} + public void clicked(InterfacePinHandle interfacePinHandle, int stateMask) {} + public void clickedEmpty(Point clicked, int stateMask) {} + public void clicked(Point clicked, int stateMask) {} + public boolean clickedHandle(HandleClickInfo handleClickInfo) { return false; } + //@formatter:on +} diff --git a/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/states/GrabState.java b/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/states/GrabState.java new file mode 100644 index 00000000..73691646 --- /dev/null +++ b/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/states/GrabState.java @@ -0,0 +1,41 @@ +package net.mograsim.logic.model.editor.states; + +import java.util.Map; + +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.mograsim.logic.model.editor.Editor; +import net.mograsim.logic.model.editor.handles.Handle; + +public class GrabState extends EditorState +{ + private Map offsets; + + public GrabState(Editor editor, StateManager manager) + { + super(editor, manager); + } + + @Override + public void onEntry() + { + offsets = editor.getSelection().calculateOffsets(); + } + + @Override + public void grab() + { + manager.setState(new SelectionState(editor, manager)); + } + + @Override + public void mouseMoved(double x, double y) + { + editor.moveHandles(x, y, offsets); + } + + @Override + public void clicked(Point clicked, int stateMask) + { + manager.setState(new SelectionState(editor, manager)); + } +} diff --git a/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/states/SelectionState.java b/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/states/SelectionState.java new file mode 100644 index 00000000..446635ee --- /dev/null +++ b/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/states/SelectionState.java @@ -0,0 +1,181 @@ +package net.mograsim.logic.model.editor.states; + +import org.eclipse.swt.SWT; +import org.eclipse.swt.widgets.Display; + +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.haspamelodica.swt.helper.zoomablecanvas.ZoomableCanvas.ZoomedRenderer; +import net.mograsim.logic.model.editor.Editor; +import net.mograsim.logic.model.editor.Selection; +import net.mograsim.logic.model.editor.DialogManager.InteractiveDialog; +import net.mograsim.logic.model.editor.handles.Handle; +import net.mograsim.logic.model.editor.handles.PinHandle; +import net.mograsim.logic.model.editor.handles.WireHandle; +import net.mograsim.logic.model.editor.handles.Handle.HandleClickInfo; +import net.mograsim.logic.model.editor.handles.WireHandle.WireHandleClickInfo; +import net.mograsim.logic.model.model.wires.MovablePin; +import net.mograsim.logic.model.model.wires.Pin; + +public class SelectionState extends EditorState +{ + private final ZoomedRenderer outlineRenderer = gc -> + { + if (editor.getSelection().size() > 1) + { + gc.setLineWidth(1); + gc.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_DARK_YELLOW)); + gc.drawRectangle(editor.getSelection().getBounds()); + } + }; + + public SelectionState(Editor editor, StateManager manager) + { + super(editor, manager); + } + + @Override + public void add() + { + Point curserPos = editor.getWorldMousePosition(); + editor.addComponent(curserPos.x, curserPos.y); + } + + @Override + public void delete() + { + editor.deleteSelection(); + } + + @Override + public void copy() + { + editor.copy(); + } + + @Override + public void paste() + { + Point curserPos = editor.getWorldMousePosition(); + editor.paste(curserPos.x, curserPos.y); + } + + @Override + public void duplicate() + { + editor.duplicate(); + } + + @Override + public void grab() + { + if (!editor.getSelection().isEmpty()) + manager.setState(new GrabState(editor, manager)); + } + + @Override + public void boxSelect() + { + manager.setState(new BoxSelectionState(editor, manager)); + } + + @Override + public void onEntry() + { + editor.gui.logicCanvas.addZoomedRenderer(outlineRenderer); + editor.gui.logicCanvas.redrawThreadsafe(); + } + + @Override + public void onExit() + { + editor.gui.logicCanvas.removeZoomedRenderer(outlineRenderer); + editor.gui.logicCanvas.redrawThreadsafe(); + } + + @Override + public void clickedEmpty(Point clicked, int stateMask) + { + editor.getSelection().clear(); + if ((stateMask & SWT.ALT) == SWT.ALT) + { + InteractiveDialog pinAdd = new InteractiveDialog("Add Pin...", "Add", "Cancel", "Name", "Logic Width"); + pinAdd.open(); + if (pinAdd.getState().equals(InteractiveDialog.InteractiveDialogState.ACCEPTED)) + { + try + { + Pin p = editor.toBeEdited.addSubmodelInterface(new MovablePin(editor.toBeEdited, pinAdd.getText(), + Integer.parseInt(pinAdd.getText(1)), clicked.x, clicked.y)); + editor.handleManager.getInterfacePinHandle(p).reqMove(clicked.x, clicked.y); + } catch (NumberFormatException e) + { + editor.dialogManager.openWarningDialog("Failed to create Pin!", "Bit width must be a number!"); + } + } + } + } + + @Override + public boolean clickedHandle(HandleClickInfo handleClickInfo) + { + switch (handleClickInfo.clicked.getType()) + { + case INTERFACE_PIN: + if ((handleClickInfo.stateMask & SWT.CTRL) == SWT.CTRL) + { + manager.setState(new CreateWireState(editor, manager, (PinHandle) handleClickInfo.clicked)); + break; + } + case CORNER: + case COMPONENT: + case WIRE_POINT: + boolean additive = (handleClickInfo.stateMask & SWT.SHIFT) == SWT.SHIFT; + select(handleClickInfo.clicked, additive); + break; + case STATIC_PIN: + if ((handleClickInfo.stateMask & SWT.CTRL) == SWT.CTRL) + manager.setState(new CreateWireState(editor, manager, (PinHandle) handleClickInfo.clicked)); + else + return false; + break; + case WIRE: + if ((handleClickInfo.stateMask & SWT.CTRL) == SWT.CTRL) + { + WireHandleClickInfo info = (WireHandleClickInfo) handleClickInfo; + WireHandle clicked = (WireHandle) info.clicked; + clicked.parent.insertPathPoint(info.posOnWire, info.segment); + } else + { + additive = (handleClickInfo.stateMask & SWT.SHIFT) == SWT.SHIFT; + select(handleClickInfo.clicked, additive); + } + break; + default: + return false; + } + return true; + } + + private void select(Handle h, boolean additive) + { + Selection sel = editor.getSelection(); + if (sel.contains(h)) + if (additive) + sel.remove(h); + else + { + if (editor.getSelection().size() > 1) + { + sel.clear(); + sel.add(h); + } else + sel.clear(); + } + else + { + if (!additive) + sel.clear(); + sel.add(h); + } + } +} diff --git a/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/states/StateManager.java b/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/states/StateManager.java new file mode 100644 index 00000000..d4b3fc4d --- /dev/null +++ b/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/states/StateManager.java @@ -0,0 +1,78 @@ +package net.mograsim.logic.model.editor.states; + +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.mograsim.logic.model.editor.Editor; +import net.mograsim.logic.model.editor.handles.Handle.HandleClickInfo; + +public class StateManager +{ + private EditorState state; + + public StateManager(Editor session) + { + state = new SelectionState(session, this); + state.onEntry(); + } + + public EditorState getState() + { + return state; + } + + public void setState(EditorState state) + { + this.state.onExit(); + this.state = state; + state.onEntry(); + } + + public void add() + { + state.add(); + } + + public void delete() + { + state.delete(); + } + + public void copy() + { + state.copy(); + } + + public void paste() + { + state.paste(); + } + + public void duplicate() + { + state.duplicate(); + } + + public void grab() + { + state.grab(); + } + + public void mouseMoved(double x, double y) + { + state.mouseMoved(x, y); + } + + public void select(Point pos, boolean additive) + { + state.select(pos, additive); + } + + public boolean clickedHandle(HandleClickInfo handleClickInfo) + { + return state.clickedHandle(handleClickInfo); + } + + public void boxSelect() + { + state.boxSelect(); + } +} diff --git a/net.mograsim.logic.model/.classpath b/net.mograsim.logic.model/.classpath new file mode 100644 index 00000000..4a00becd --- /dev/null +++ b/net.mograsim.logic.model/.classpath @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/net.mograsim.logic.model/.gitignore b/net.mograsim.logic.model/.gitignore new file mode 100644 index 00000000..ae3c1726 --- /dev/null +++ b/net.mograsim.logic.model/.gitignore @@ -0,0 +1 @@ +/bin/ diff --git a/net.mograsim.logic.model/.project b/net.mograsim.logic.model/.project new file mode 100644 index 00000000..c6d10606 --- /dev/null +++ b/net.mograsim.logic.model/.project @@ -0,0 +1,30 @@ + + + net.mograsim.logic.model + + + net.mograsim.logic.core + SWTZoomableCanvas + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.pde.PluginNature + + diff --git a/net.mograsim.logic.model/.settings/org.eclipse.jdt.core.prefs b/net.mograsim.logic.model/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 00000000..f8bd225a --- /dev/null +++ b/net.mograsim.logic.model/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,456 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled +org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore +org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull +org.eclipse.jdt.core.compiler.annotation.nonnull.secondary= +org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault +org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary= +org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable +org.eclipse.jdt.core.compiler.annotation.nullable.secondary= +org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=11 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=11 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.APILeak=warning +org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.autoboxing=ignore +org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning +org.eclipse.jdt.core.compiler.problem.deadCode=warning +org.eclipse.jdt.core.compiler.problem.deprecation=warning +org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled +org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled +org.eclipse.jdt.core.compiler.problem.discouragedReference=warning +org.eclipse.jdt.core.compiler.problem.emptyStatement=warning +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=warning +org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning +org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled +org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore +org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning +org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning +org.eclipse.jdt.core.compiler.problem.forbiddenReference=error +org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning +org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled +org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning +org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning +org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning +org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore +org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error +org.eclipse.jdt.core.compiler.problem.missingDefaultCase=warning +org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=info +org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled +org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=warning +org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning +org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled +org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning +org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=warning +org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning +org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning +org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore +org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning +org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning +org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error +org.eclipse.jdt.core.compiler.problem.nullReference=warning +org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error +org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning +org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning +org.eclipse.jdt.core.compiler.problem.parameterAssignment=warning +org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning +org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=error +org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning +org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=warning +org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning +org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning +org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning +org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=info +org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning +org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=info +org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=warning +org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled +org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning +org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled +org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled +org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled +org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=warning +org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning +org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning +org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=disabled +org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning +org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning +org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=warning +org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning +org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning +org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled +org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info +org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning +org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning +org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore +org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=info +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled +org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=warning +org.eclipse.jdt.core.compiler.problem.unusedImport=warning +org.eclipse.jdt.core.compiler.problem.unusedLabel=warning +org.eclipse.jdt.core.compiler.problem.unusedLocal=warning +org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=warning +org.eclipse.jdt.core.compiler.problem.unusedParameter=warning +org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled +org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled +org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled +org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning +org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=warning +org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning +org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning +org.eclipse.jdt.core.compiler.release=enabled +org.eclipse.jdt.core.compiler.source=11 +org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false +org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647 +org.eclipse.jdt.core.formatter.align_type_members_on_columns=false +org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false +org.eclipse.jdt.core.formatter.align_with_spaces=false +org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16 +org.eclipse.jdt.core.formatter.alignment_for_assignment=0 +org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16 +org.eclipse.jdt.core.formatter.alignment_for_compact_if=16 +org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16 +org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80 +org.eclipse.jdt.core.formatter.alignment_for_conditional_expression_chain=0 +org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16 +org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16 +org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0 +org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16 +org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0 +org.eclipse.jdt.core.formatter.alignment_for_module_statements=16 +org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16 +org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16 +org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0 +org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_relational_operator=0 +org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80 +org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16 +org.eclipse.jdt.core.formatter.alignment_for_shift_operator=0 +org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16 +org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0 +org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0 +org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16 +org.eclipse.jdt.core.formatter.blank_lines_after_imports=1 +org.eclipse.jdt.core.formatter.blank_lines_after_package=1 +org.eclipse.jdt.core.formatter.blank_lines_before_field=0 +org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0 +org.eclipse.jdt.core.formatter.blank_lines_before_imports=1 +org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1 +org.eclipse.jdt.core.formatter.blank_lines_before_method=1 +org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1 +org.eclipse.jdt.core.formatter.blank_lines_before_package=0 +org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1 +org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1 +org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=next_line +org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=next_line +org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_block=next_line +org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=next_line +org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=next_line +org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=next_line +org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=next_line +org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=next_line +org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=next_line +org.eclipse.jdt.core.formatter.brace_position_for_switch=next_line +org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=next_line +org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true +org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false +org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false +org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false +org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true +org.eclipse.jdt.core.formatter.comment.format_block_comments=true +org.eclipse.jdt.core.formatter.comment.format_header=false +org.eclipse.jdt.core.formatter.comment.format_html=true +org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true +org.eclipse.jdt.core.formatter.comment.format_line_comments=true +org.eclipse.jdt.core.formatter.comment.format_source_code=true +org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false +org.eclipse.jdt.core.formatter.comment.indent_root_tags=false +org.eclipse.jdt.core.formatter.comment.indent_tag_description=false +org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert +org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert +org.eclipse.jdt.core.formatter.comment.line_length=140 +org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true +org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true +org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false +org.eclipse.jdt.core.formatter.compact_else_if=true +org.eclipse.jdt.core.formatter.continuation_indentation=2 +org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2 +org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off +org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on +org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false +org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true +org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true +org.eclipse.jdt.core.formatter.indent_empty_lines=false +org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true +org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true +org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true +org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false +org.eclipse.jdt.core.formatter.indentation.size=4 +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=insert +org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=insert +org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert +org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert +org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert +org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert +org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert +org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert +org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert +org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert +org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert +org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert +org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert +org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert +org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert +org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert +org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert +org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert +org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert +org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert +org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert +org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert +org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert +org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.join_lines_in_comments=true +org.eclipse.jdt.core.formatter.join_wrapped_lines=true +org.eclipse.jdt.core.formatter.keep_annotation_declaration_on_one_line=one_line_never +org.eclipse.jdt.core.formatter.keep_anonymous_type_declaration_on_one_line=one_line_never +org.eclipse.jdt.core.formatter.keep_code_block_on_one_line=one_line_never +org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false +org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false +org.eclipse.jdt.core.formatter.keep_enum_constant_declaration_on_one_line=one_line_never +org.eclipse.jdt.core.formatter.keep_enum_declaration_on_one_line=one_line_never +org.eclipse.jdt.core.formatter.keep_if_then_body_block_on_one_line=one_line_never +org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false +org.eclipse.jdt.core.formatter.keep_lambda_body_block_on_one_line=one_line_never +org.eclipse.jdt.core.formatter.keep_loop_body_block_on_one_line=one_line_never +org.eclipse.jdt.core.formatter.keep_method_body_on_one_line=one_line_never +org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false +org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false +org.eclipse.jdt.core.formatter.keep_simple_getter_setter_on_one_line=false +org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false +org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false +org.eclipse.jdt.core.formatter.keep_type_declaration_on_one_line=one_line_never +org.eclipse.jdt.core.formatter.lineSplit=140 +org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false +org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false +org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0 +org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1 +org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines +org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines +org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines +org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines +org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines +org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines +org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines +org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines +org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines +org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines +org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true +org.eclipse.jdt.core.formatter.tabulation.char=tab +org.eclipse.jdt.core.formatter.tabulation.size=4 +org.eclipse.jdt.core.formatter.use_on_off_tags=true +org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false +org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true +org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false +org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true +org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true +org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true +org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true +org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true +org.eclipse.jdt.core.formatter.wrap_before_relational_operator=true +org.eclipse.jdt.core.formatter.wrap_before_shift_operator=true +org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true +org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true +org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter diff --git a/net.mograsim.logic.model/.settings/org.eclipse.jdt.ui.prefs b/net.mograsim.logic.model/.settings/org.eclipse.jdt.ui.prefs new file mode 100644 index 00000000..8f2c0a47 --- /dev/null +++ b/net.mograsim.logic.model/.settings/org.eclipse.jdt.ui.prefs @@ -0,0 +1,63 @@ +eclipse.preferences.version=1 +editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true +formatter_profile=_MoGraSim +formatter_settings_version=16 +sp_cleanup.add_default_serial_version_id=true +sp_cleanup.add_generated_serial_version_id=false +sp_cleanup.add_missing_annotations=true +sp_cleanup.add_missing_deprecated_annotations=true +sp_cleanup.add_missing_methods=false +sp_cleanup.add_missing_nls_tags=false +sp_cleanup.add_missing_override_annotations=true +sp_cleanup.add_missing_override_annotations_interface_methods=true +sp_cleanup.add_serial_version_id=false +sp_cleanup.always_use_blocks=true +sp_cleanup.always_use_parentheses_in_expressions=false +sp_cleanup.always_use_this_for_non_static_field_access=false +sp_cleanup.always_use_this_for_non_static_method_access=false +sp_cleanup.convert_functional_interfaces=false +sp_cleanup.convert_to_enhanced_for_loop=false +sp_cleanup.correct_indentation=false +sp_cleanup.format_source_code=true +sp_cleanup.format_source_code_changes_only=false +sp_cleanup.insert_inferred_type_arguments=false +sp_cleanup.make_local_variable_final=true +sp_cleanup.make_parameters_final=false +sp_cleanup.make_private_fields_final=true +sp_cleanup.make_type_abstract_if_missing_method=false +sp_cleanup.make_variable_declarations_final=false +sp_cleanup.never_use_blocks=false +sp_cleanup.never_use_parentheses_in_expressions=true +sp_cleanup.on_save_use_additional_actions=false +sp_cleanup.organize_imports=false +sp_cleanup.qualify_static_field_accesses_with_declaring_class=false +sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true +sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true +sp_cleanup.qualify_static_member_accesses_with_declaring_class=false +sp_cleanup.qualify_static_method_accesses_with_declaring_class=false +sp_cleanup.remove_private_constructors=true +sp_cleanup.remove_redundant_modifiers=false +sp_cleanup.remove_redundant_semicolons=false +sp_cleanup.remove_redundant_type_arguments=false +sp_cleanup.remove_trailing_whitespaces=false +sp_cleanup.remove_trailing_whitespaces_all=true +sp_cleanup.remove_trailing_whitespaces_ignore_empty=false +sp_cleanup.remove_unnecessary_casts=true +sp_cleanup.remove_unnecessary_nls_tags=false +sp_cleanup.remove_unused_imports=false +sp_cleanup.remove_unused_local_variables=false +sp_cleanup.remove_unused_private_fields=true +sp_cleanup.remove_unused_private_members=false +sp_cleanup.remove_unused_private_methods=true +sp_cleanup.remove_unused_private_types=true +sp_cleanup.sort_members=false +sp_cleanup.sort_members_all=false +sp_cleanup.use_anonymous_class_creation=false +sp_cleanup.use_blocks=false +sp_cleanup.use_blocks_only_for_return_and_throw=false +sp_cleanup.use_lambda=true +sp_cleanup.use_parentheses_in_expressions=false +sp_cleanup.use_this_for_non_static_field_access=false +sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true +sp_cleanup.use_this_for_non_static_method_access=false +sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true diff --git a/net.mograsim.logic.model/META-INF/MANIFEST.MF b/net.mograsim.logic.model/META-INF/MANIFEST.MF new file mode 100644 index 00000000..61a85d19 --- /dev/null +++ b/net.mograsim.logic.model/META-INF/MANIFEST.MF @@ -0,0 +1,28 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: %Bundle-Name +Bundle-SymbolicName: net.mograsim.logic.model;singleton:=true +Bundle-Version: 0.1.0.qualifier +Export-Package: net.mograsim.logic.model, + net.mograsim.logic.model.examples, + net.mograsim.logic.model.model, + net.mograsim.logic.model.model.components, + net.mograsim.logic.model.model.components.atomic, + net.mograsim.logic.model.model.components.submodels, + net.mograsim.logic.model.model.wires, + net.mograsim.logic.model.modeladapter, + net.mograsim.logic.model.modeladapter.componentadapters, + net.mograsim.logic.model.serializing, + net.mograsim.logic.model.serializing.snippets, + net.mograsim.logic.model.serializing.snippets.highlevelstatehandlers, + net.mograsim.logic.model.serializing.snippets.outlinerenderers, + net.mograsim.logic.model.serializing.snippets.symbolrenderers, + net.mograsim.logic.model.util +Bundle-RequiredExecutionEnvironment: JavaSE-11 +Require-Bundle: org.eclipse.swt;bundle-version="3.0.0";visibility:=reexport, + SWTZoomableCanvas;bundle-version="1.0.0";visibility:=reexport, + net.mograsim.logic.core;bundle-version="0.1.0";visibility:=reexport, + com.google.gson;bundle-version="2.8.2";visibility:=reexport, + net.mograsim.preferences;bundle-version="0.1.0" +Automatic-Module-Name: net.mograsim.logic.ui +Bundle-Vendor: Mograsim Team diff --git a/net.mograsim.logic.model/OSGI-INF/l10n/bundle.properties b/net.mograsim.logic.model/OSGI-INF/l10n/bundle.properties new file mode 100644 index 00000000..4eac2829 --- /dev/null +++ b/net.mograsim.logic.model/OSGI-INF/l10n/bundle.properties @@ -0,0 +1,3 @@ +#Properties file for net.mograsim.logic.ui +Bundle-Vendor = Mograsim Team +Bundle-Name = Mograsim logic user interface \ No newline at end of file diff --git a/net.mograsim.logic.model/build.properties b/net.mograsim.logic.model/build.properties new file mode 100644 index 00000000..d6642e65 --- /dev/null +++ b/net.mograsim.logic.model/build.properties @@ -0,0 +1,4 @@ +source.. = src/ +bin.includes = META-INF/,\ + .,\ + OSGI-INF/ diff --git a/net.mograsim.logic.model/oldsrc/GUIMerger.java b/net.mograsim.logic.model/oldsrc/GUIMerger.java new file mode 100644 index 00000000..64fd0aa9 --- /dev/null +++ b/net.mograsim.logic.model/oldsrc/GUIMerger.java @@ -0,0 +1,79 @@ +package era.mi.gui.components; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +import era.mi.logic.components.Merger; +import era.mi.logic.wires.Wire.ReadEnd; +import era.mi.logic.wires.Wire.ReadWriteEnd; +import net.haspamelodica.swt.helper.gcs.GeneralGC; +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; + +public class GUIMerger extends Merger implements GUIComponent +{ + private final int inputCount; + private final double height; + private final List connectedWireEnds; + private final List WireEndConnectionPoints; + + public GUIMerger(ReadWriteEnd union, ReadEnd... inputs) + { + super(union, inputs); + + List connectedWireEndsModifiable = new ArrayList<>(); + List WireEndConnectionPointsModifiable = new ArrayList<>(); + + this.inputCount = inputs.length; + this.height = (inputCount - 1) * 10; + + { + connectedWireEndsModifiable.addAll(Arrays.asList(inputs)); + double inputHeight = 0; + for (int i = 0; i < inputCount; i++, inputHeight += 10) + WireEndConnectionPointsModifiable.add(new Point(0, inputHeight)); + } + + connectedWireEndsModifiable.add(union); + WireEndConnectionPointsModifiable.add(new Point(20, height / 2)); + + this.connectedWireEnds = Collections.unmodifiableList(connectedWireEndsModifiable); + this.WireEndConnectionPoints = Collections.unmodifiableList(WireEndConnectionPointsModifiable); + } + + @Override + public Rectangle getBounds() + { + return new Rectangle(0, 0, 20, height); + } + + @Override + public void render(GeneralGC gc) + { + double inputHeight = 0; + for (int i = 0; i < inputCount; i++, inputHeight += 10) + gc.drawLine(0, inputHeight, 10, inputHeight); + gc.drawLine(10, 0, 10, height); + gc.drawLine(10, height / 2, 20, height / 2); + } + + @Override + public int getConnectedWireEndsCount() + { + return connectedWireEnds.size(); + } + + @Override + public ReadEnd getConnectedWireEnd(int connectionIndex) + { + return connectedWireEnds.get(connectionIndex); + } + + @Override + public Point getWireEndConnectionPoint(int connectionI) + { + return WireEndConnectionPoints.get(connectionI); + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model/oldsrc/GUIMux.java b/net.mograsim.logic.model/oldsrc/GUIMux.java new file mode 100644 index 00000000..d004d90f --- /dev/null +++ b/net.mograsim.logic.model/oldsrc/GUIMux.java @@ -0,0 +1,80 @@ +package era.mi.gui.components; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +import era.mi.logic.components.Mux; +import era.mi.logic.wires.Wire.ReadEnd; +import era.mi.logic.wires.Wire.ReadWriteEnd; +import net.haspamelodica.swt.helper.gcs.GeneralGC; +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; + +public class GUIMux extends Mux implements GUIComponent +{ + private final double height; + private final List connectedWireEnds; + private final List WireEndConnectionPoints; + + public GUIMux(int processTime, ReadWriteEnd out, ReadEnd select, ReadEnd... inputs) + { + super(processTime, out, select, inputs); + + double height = inputs.length * 5; + if (height < 10) + height = 10; + this.height = height; + + List connectedWireEndsModifiable = new ArrayList<>(); + List WireEndConnectionPointsModifiable = new ArrayList<>(); + + connectedWireEndsModifiable.add(out); + WireEndConnectionPointsModifiable.add(new Point(20, 10 + height / 2)); + + connectedWireEndsModifiable.add(select); + WireEndConnectionPointsModifiable.add(new Point(10, 5)); + + { + connectedWireEndsModifiable.addAll(Arrays.asList(inputs)); + double inputHeightIncrement = (height + 20) / inputs.length; + double inputHeight = inputHeightIncrement / 2; + for (int i = 0; i < inputs.length; i++, inputHeight += inputHeightIncrement) + WireEndConnectionPointsModifiable.add(new Point(0, inputHeight)); + } + + this.connectedWireEnds = Collections.unmodifiableList(connectedWireEndsModifiable); + this.WireEndConnectionPoints = Collections.unmodifiableList(WireEndConnectionPointsModifiable); + } + + @Override + public Rectangle getBounds() + { + return new Rectangle(0, 0, 20, height + 20); + } + + @Override + public void render(GeneralGC gc) + { + gc.drawPolygon(new double[] { 0, 0, 20, 10, 20, height + 10, 0, height + 20 }); + } + + @Override + public int getConnectedWireEndsCount() + { + return connectedWireEnds.size(); + } + + @Override + public ReadEnd getConnectedWireEnd(int connectionIndex) + { + return connectedWireEnds.get(connectionIndex); + } + + @Override + public Point getWireEndConnectionPoint(int connectionI) + { + return WireEndConnectionPoints.get(connectionI); + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model/oldsrc/GUISplitter.java b/net.mograsim.logic.model/oldsrc/GUISplitter.java new file mode 100644 index 00000000..1bff4247 --- /dev/null +++ b/net.mograsim.logic.model/oldsrc/GUISplitter.java @@ -0,0 +1,72 @@ +package era.mi.gui.components; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +import era.mi.gui.ViewModel; +import era.mi.logic.components.Splitter; +import era.mi.logic.wires.Wire.ReadEnd; +import era.mi.logic.wires.Wire.ReadWriteEnd; +import net.haspamelodica.swt.helper.gcs.GeneralGC; +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; + +public class GUISplitter extends GUIComponent +{ + public GUISplitter(ViewModel model) + { + super(model); + + this.outputCount = outputs.length; + this.height = (outputCount - 1) * 10; + + connectedWireEndsModifiable.add(input); + WireEndConnectionPointsModifiable.add(new Point(0, height / 2)); + + { + connectedWireEndsModifiable.addAll(Arrays.asList(outputs)); + double outputHeight = 0; + for (int i = 0; i < outputCount; i++, outputHeight += 10) + WireEndConnectionPointsModifiable.add(new Point(20, outputHeight)); + } + + this.connectedWireEnds = Collections.unmodifiableList(connectedWireEndsModifiable); + this.WireEndConnectionPoints = Collections.unmodifiableList(WireEndConnectionPointsModifiable); + } + + @Override + public Rectangle getBounds() + { + return new Rectangle(0, 0, 20, height); + } + + @Override + public void render(GeneralGC gc) + { + gc.drawLine(0, height / 2, 10, height / 2); + gc.drawLine(10, 0, 10, height); + double outputHeight = 0; + for (int i = 0; i < outputCount; i++, outputHeight += 10) + gc.drawLine(10, outputHeight, 20, outputHeight); + } + + @Override + public int getConnectedWireEndsCount() + { + return connectedWireEnds.size(); + } + + @Override + public ReadEnd getConnectedWireEnd(int connectionIndex) + { + return connectedWireEnds.get(connectionIndex); + } + + @Override + public Point getWireEndConnectionPoint(int connectionI) + { + return WireEndConnectionPoints.get(connectionI); + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/LogicExecuter.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/LogicExecuter.java new file mode 100644 index 00000000..aa36b1c4 --- /dev/null +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/LogicExecuter.java @@ -0,0 +1,111 @@ +package net.mograsim.logic.model; + +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.concurrent.atomic.AtomicLong; + +import net.mograsim.logic.core.timeline.Timeline; + +//TODO maybe move to logic core? +public class LogicExecuter +{ + // TODO replace with LogicModel when it exists + private final Timeline timeline; + + private final AtomicBoolean shouldBeRunningLive; + private final AtomicBoolean isRunningLive; + private final AtomicLong nextExecSimulTime; + private final Thread simulationThread; + + public LogicExecuter(Timeline timeline) + { + this.timeline = timeline; + + timeline.setTimeFunction(System::currentTimeMillis); + shouldBeRunningLive = new AtomicBoolean(); + isRunningLive = new AtomicBoolean(); + nextExecSimulTime = new AtomicLong(); + simulationThread = new Thread(() -> + { + isRunningLive.set(true); + synchronized (isRunningLive) + { + isRunningLive.notify(); + } + try + { + while (shouldBeRunningLive.get()) + { + // always execute to keep timeline from "hanging behind" for too long + long current = System.currentTimeMillis(); + timeline.executeUntil(timeline.laterThan(current), current + 10); + long sleepTime; + if (timeline.hasNext()) + sleepTime = timeline.nextEventTime() - current; + else + sleepTime = 10000; + try + { + nextExecSimulTime.set(current + sleepTime); + if (sleepTime > 0) + Thread.sleep(sleepTime); + } + catch (@SuppressWarnings("unused") InterruptedException e) + {// do nothing; it is normal execution flow to be interrupted + } + } + } + finally + { + isRunningLive.set(false); + synchronized (isRunningLive) + { + isRunningLive.notify(); + } + } + }); + timeline.addEventAddedListener(event -> + { + if (isRunningLive.get()) + if (Timeline.timeCmp(event.getTiming(), nextExecSimulTime.get()) < 0) + simulationThread.interrupt(); + }); + } + + public void executeNextStep() + { + timeline.executeNext(); + } + + public synchronized void startLiveExecution() + { + if (shouldBeRunningLive.get()) + return; + shouldBeRunningLive.set(true); + simulationThread.start(); + waitForIsRunning(true); + } + + public synchronized void stopLiveExecution() + { + if (!shouldBeRunningLive.get()) + return; + shouldBeRunningLive.set(false); + simulationThread.interrupt(); + waitForIsRunning(false); + } + + private void waitForIsRunning(boolean expectedState) + { + while (isRunningLive.get() ^ expectedState) + try + { + synchronized (isRunningLive) + { + isRunningLive.wait(); + } + } + catch (@SuppressWarnings("unused") InterruptedException e) + {// no need to do anything + } + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/LogicUICanvas.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/LogicUICanvas.java new file mode 100644 index 00000000..609bf74f --- /dev/null +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/LogicUICanvas.java @@ -0,0 +1,177 @@ +package net.mograsim.logic.model; + +import java.util.ArrayList; +import java.util.List; + +import org.eclipse.swt.SWT; +import org.eclipse.swt.graphics.Color; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Combo; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Event; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Listener; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.swt.widgets.Text; + +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; +import net.haspamelodica.swt.helper.zoomablecanvas.ZoomableCanvas; +import net.mograsim.logic.core.types.Bit; +import net.mograsim.logic.core.types.BitVector; +import net.mograsim.logic.model.model.ViewModel; +import net.mograsim.logic.model.model.components.GUIComponent; +import net.mograsim.logic.model.model.components.submodels.SubmodelComponent; +import net.mograsim.logic.model.model.components.submodels.SubmodelInterface; +import net.mograsim.logic.model.model.wires.WireCrossPoint; +import net.mograsim.preferences.Preferences; + +/** + * Simulation visualizer canvas. + * + * @author Daniel Kirschten + */ +public class LogicUICanvas extends ZoomableCanvas +{ + private static final boolean OPEN_DEBUG_SETHIGHLEVELSTATE_SHELL = false; + + private final ViewModel model; + + public LogicUICanvas(Composite parent, int style, ViewModel model) + { + super(parent, style); + + this.model = model; + + LogicUIRenderer renderer = new LogicUIRenderer(model); + addZoomedRenderer(gc -> + { + Color background = Preferences.current().getColor("net.mograsim.logic.ui.color.background"); + if (background != null) + setBackground(background);// this.setBackground, not gc.setBackground to have the background fill the canvas + renderer.render(gc, new Rectangle(-offX / zoom, -offY / zoom, gW / zoom, gH / zoom)); + }); + model.addRedrawListener(this::redrawThreadsafe); + + addListener(SWT.MouseDown, this::mouseDown); + + if (OPEN_DEBUG_SETHIGHLEVELSTATE_SHELL) + openDebugSetHighLevelStateShell(model); + } + + private void mouseDown(Event e) + { + if (e.button == 1) + { + Point click = canvasToWorldCoords(e.x, e.y); + for (GUIComponent component : model.getComponentsByName().values()) + if (component.getBounds().contains(click) && component.clicked(click.x, click.y)) + { + redraw(); + break; + } + } + } + + private void openDebugSetHighLevelStateShell(ViewModel model) + { + Shell debugShell = new Shell(); + debugShell.setLayout(new GridLayout(2, false)); + new Label(debugShell, SWT.NONE).setText("Target component: "); + Combo componentSelector = new Combo(debugShell, SWT.DROP_DOWN | SWT.READ_ONLY); + componentSelector.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); + List componentsByItemIndex = new ArrayList<>(); + model.addComponentAddedListener(c -> recalculateComponentSelector(componentsByItemIndex, componentSelector, model)); + model.addComponentRemovedListener(c -> recalculateComponentSelector(componentsByItemIndex, componentSelector, model)); + recalculateComponentSelector(componentsByItemIndex, componentSelector, model); + new Label(debugShell, SWT.NONE).setText("Target state ID: "); + Text stateIDText = new Text(debugShell, SWT.SINGLE | SWT.LEAD | SWT.BORDER); + stateIDText.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); + new Label(debugShell, SWT.NONE).setText("Value type: "); + Composite radioGroup = new Composite(debugShell, SWT.NONE); + radioGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); + GridLayout radioGroupLayout = new GridLayout(2, false); + radioGroupLayout.marginHeight = 0; + radioGroupLayout.marginWidth = 0; + radioGroup.setLayout(radioGroupLayout); + Button radioBit = new Button(radioGroup, SWT.RADIO); + radioBit.setText("Single bit"); + Button radioBitVector = new Button(radioGroup, SWT.RADIO); + radioBitVector.setText("Bitvector"); + new Label(debugShell, SWT.NONE).setText("Value string representation: \n(Bit vectors: MSBit...LSBit)"); + Text valueText = new Text(debugShell, SWT.SINGLE | SWT.LEAD | SWT.BORDER); + valueText.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); + Button send = new Button(debugShell, SWT.PUSH); + send.setText("Send!"); + Button get = new Button(debugShell, SWT.PUSH); + get.setText("Get!"); + Text output = new Text(debugShell, SWT.READ_ONLY); + output.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1)); + Listener sendAction = e -> + { + try + { + int componentIndex = componentSelector.getSelectionIndex(); + if (componentIndex < 0 || componentIndex >= componentsByItemIndex.size()) + throw new RuntimeException("No component selected"); + GUIComponent target = componentsByItemIndex.get(componentIndex); + String valueString = valueText.getText(); + Object value; + if (radioBit.getSelection()) + value = Bit.parse(valueString); + else if (radioBitVector.getSelection()) + value = BitVector.parse(valueString); + else + throw new RuntimeException("No value type selected"); + target.setHighLevelState(stateIDText.getText(), value); + output.setText("Success!"); + } + catch (Exception x) + { + output.setText(x.getClass().getSimpleName() + (x.getMessage() == null ? "" : ": " + x.getMessage())); + } + }; + Listener getAction = e -> + { + try + { + if (componentSelector.getSelectionIndex() >= componentsByItemIndex.size()) + throw new RuntimeException("No valid component selected"); + output.setText("Success! Value: \r\n" + + componentsByItemIndex.get(componentSelector.getSelectionIndex()).getHighLevelState(stateIDText.getText())); + } + catch (Exception x) + { + output.setText(x.getClass().getSimpleName() + (x.getMessage() == null ? "" : ": " + x.getMessage())); + } + }; + send.addListener(SWT.Selection, sendAction); + valueText.addListener(SWT.DefaultSelection, sendAction); + get.addListener(SWT.Selection, getAction); + stateIDText.addListener(SWT.DefaultSelection, getAction); + debugShell.open(); + } + + private void recalculateComponentSelector(List componentsByItemIndex, Combo componentSelector, ViewModel model) + { + componentsByItemIndex.clear(); + componentSelector.setItems(); + addComponentSelectorItems(componentsByItemIndex, "", componentSelector, model); + } + + private void addComponentSelectorItems(List componentsByItemIndex, String base, Combo componentSelector, ViewModel model) + { + for (GUIComponent c : model.getComponentsByName().values()) + if (!(c instanceof WireCrossPoint || c instanceof SubmodelInterface)) + { + String item = base + c.name; + componentsByItemIndex.add(c); + componentSelector.add(item); + if (c instanceof SubmodelComponent) + addComponentSelectorItems(componentsByItemIndex, item + " -> ", componentSelector, ((SubmodelComponent) c).submodel); + } + } + +} \ No newline at end of file diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/LogicUIRenderer.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/LogicUIRenderer.java new file mode 100644 index 00000000..c85dd531 --- /dev/null +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/LogicUIRenderer.java @@ -0,0 +1,57 @@ +package net.mograsim.logic.model; + +import org.eclipse.swt.SWT; + +import net.haspamelodica.swt.helper.gcs.GeneralGC; +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; +import net.mograsim.logic.model.model.ViewModel; +import net.mograsim.logic.model.model.components.GUIComponent; +import net.mograsim.logic.model.model.wires.Pin; + +public class LogicUIRenderer +{ + private static final boolean DRAW_PINS = false; + + private final ViewModel model; + + public LogicUIRenderer(ViewModel model) + { + this.model = model; + } + + public void render(GeneralGC gc, Rectangle visibleRegion) + { + gc.setAntialias(SWT.ON); + gc.setClipping(visibleRegion); + gc.setLineWidth(.5); + model.getWires().forEach(w -> + { + Rectangle bounds = w.getBounds(); + double lw = gc.getLineWidth(); + if (visibleRegion.intersects(bounds.x - lw, bounds.y - lw, bounds.width + lw + lw, bounds.height + lw + lw)) + w.render(gc); + }); + model.getComponentsByName().values().forEach(c -> renderComponent(gc, c, visibleRegion)); + } + + private static void renderComponent(GeneralGC gc, GUIComponent component, Rectangle visibleRegion) + { + Rectangle bounds = component.getBounds(); + double lw = gc.getLineWidth(); + if (visibleRegion.intersects(bounds.x - lw, bounds.y - lw, bounds.width + lw + lw, bounds.height + lw + lw)) + { + component.render(gc, visibleRegion); + if (DRAW_PINS) + { + gc.setBackground(gc.getDevice().getSystemColor(SWT.COLOR_DARK_CYAN)); + for (Pin p : component.getPins().values()) + { + Point pos = p.getPos(); + gc.fillOval(pos.x - 1, pos.y - 1, 2, 2); + } + } + } + } + +} \ No newline at end of file diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/LogicUIStandaloneGUI.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/LogicUIStandaloneGUI.java new file mode 100644 index 00000000..700f69b3 --- /dev/null +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/LogicUIStandaloneGUI.java @@ -0,0 +1,53 @@ +package net.mograsim.logic.model; + +import org.eclipse.swt.SWT; +import org.eclipse.swt.layout.FillLayout; +import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Shell; + +import net.haspamelodica.swt.helper.zoomablecanvas.helper.ZoomableCanvasOverlay; +import net.haspamelodica.swt.helper.zoomablecanvas.helper.ZoomableCanvasUserInput; +import net.mograsim.logic.model.model.ViewModel; + +/** + * Standalone simulation visualizer graphical user interface. + * + * @author Daniel Kirschten + */ +public class LogicUIStandaloneGUI implements Runnable +{ + private final Display display; + private final Shell shell; + private final LogicUICanvas ui; + + public LogicUIStandaloneGUI(ViewModel model) + { + display = new Display(); + shell = new Shell(display); + shell.setLayout(new FillLayout()); + ui = new LogicUICanvas(shell, SWT.NONE, model); + + ZoomableCanvasUserInput userInput = new ZoomableCanvasUserInput(ui); + userInput.buttonDrag = 3; + userInput.buttonZoom = 2; + userInput.enableUserInput(); + new ZoomableCanvasOverlay(ui, null).enableScale(); + } + + public LogicUICanvas getLogicUICanvas() + { + return ui; + } + + /** + * Opens the UI shell. Returns when the shell is closed. + */ + @Override + public void run() + { + shell.open(); + while (!shell.isDisposed()) + if (!display.readAndDispatch()) + display.sleep(); + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/SimpleLogicUIStandalone.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/SimpleLogicUIStandalone.java new file mode 100644 index 00000000..23252d4b --- /dev/null +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/SimpleLogicUIStandalone.java @@ -0,0 +1,43 @@ +package net.mograsim.logic.model; + +import java.util.function.Consumer; + +import net.mograsim.logic.core.timeline.Timeline; +import net.mograsim.logic.model.model.ViewModelModifiable; +import net.mograsim.logic.model.modeladapter.LogicModelParameters; +import net.mograsim.logic.model.modeladapter.ViewLogicModelAdapter; + +public class SimpleLogicUIStandalone +{ + public static void executeVisualisation(Consumer setupViewModel) + { + LogicModelParameters params = new LogicModelParameters(); + params.gateProcessTime = 50; + params.wireTravelTime = 10; + executeVisualisation(setupViewModel, params); + } + + public static void executeVisualisation(Consumer setupViewModel, LogicModelParameters params) + { + // setup view model + ViewModelModifiable viewModel = new ViewModelModifiable(); + setupViewModel.accept(viewModel); + + // convert to logic model + Timeline timeline = ViewLogicModelAdapter.convert(viewModel, params); + + // initialize UI and executer + LogicUIStandaloneGUI ui = new LogicUIStandaloneGUI(viewModel); + LogicExecuter exec = new LogicExecuter(timeline); + + // run it + exec.startLiveExecution(); + ui.run(); + exec.stopLiveExecution(); + } + + private SimpleLogicUIStandalone() + { + throw new UnsupportedOperationException("No SimpleLogicUIStandalone instances"); + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/examples/ClickableSubmodelComponentsTest.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/examples/ClickableSubmodelComponentsTest.java new file mode 100644 index 00000000..4ac98e3f --- /dev/null +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/examples/ClickableSubmodelComponentsTest.java @@ -0,0 +1,38 @@ +package net.mograsim.logic.model.examples; + +import net.mograsim.logic.model.SimpleLogicUIStandalone; +import net.mograsim.logic.model.model.ViewModelModifiable; +import net.mograsim.logic.model.model.components.atomic.GUIBitDisplay; +import net.mograsim.logic.model.model.components.atomic.GUIManualSwitch; +import net.mograsim.logic.model.model.components.submodels.SimpleRectangularSubmodelComponent; +import net.mograsim.logic.model.model.wires.GUIWire; + +public class ClickableSubmodelComponentsTest +{ + public static void main(String[] args) + { + SimpleLogicUIStandalone.executeVisualisation(ClickableSubmodelComponentsTest::createExample); + } + + public static void createExample(ViewModelModifiable model) + { + @SuppressWarnings("unused") // GUIWire + SimpleRectangularSubmodelComponent comp = new SimpleRectangularSubmodelComponent(model, 1, "") + { + { + setSubmodelScale(.4); + setOutputPins("O0"); + + GUIManualSwitch sw = new GUIManualSwitch(submodelModifiable); + GUIBitDisplay bd = new GUIBitDisplay(submodelModifiable); + + sw.moveTo(10, 5); + bd.moveTo(50, 5); + + new GUIWire(submodelModifiable, sw.getOutputPin(), bd.getInputPin()); + + } + }; + comp.moveTo(10, 10); + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/examples/RSLatchExample.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/examples/RSLatchExample.java new file mode 100644 index 00000000..005b39ac --- /dev/null +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/examples/RSLatchExample.java @@ -0,0 +1,61 @@ +package net.mograsim.logic.model.examples; + +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.mograsim.logic.model.SimpleLogicUIStandalone; +import net.mograsim.logic.model.model.ViewModelModifiable; +import net.mograsim.logic.model.model.components.atomic.GUIManualSwitch; +import net.mograsim.logic.model.model.components.atomic.GUINotGate; +import net.mograsim.logic.model.model.components.atomic.GUIOrGate; +import net.mograsim.logic.model.model.wires.GUIWire; +import net.mograsim.logic.model.model.wires.WireCrossPoint; + +public class RSLatchExample +{ + public static void main(String[] args) + { + SimpleLogicUIStandalone.executeVisualisation(RSLatchExample::createRSLatchExample); + } + + @SuppressWarnings("unused") // for GUIWires being created + public static void createRSLatchExample(ViewModelModifiable model) + { + GUIManualSwitch rIn = new GUIManualSwitch(model); + rIn.moveTo(100, 100); + GUIManualSwitch sIn = new GUIManualSwitch(model); + sIn.moveTo(100, 200); + + GUIOrGate or1 = new GUIOrGate(model, 1); + or1.moveTo(160, 102.5); + new GUIWire(model, rIn.getOutputPin(), or1.getPin("A")); + + GUIOrGate or2 = new GUIOrGate(model, 1); + or2.moveTo(160, 192.5); + new GUIWire(model, sIn.getOutputPin(), or2.getPin("B")); + + GUINotGate not1 = new GUINotGate(model, 1); + not1.moveTo(200, 107.5); + new GUIWire(model, or1.getPin("Y"), not1.getPin("A")); + + GUINotGate not2 = new GUINotGate(model, 1); + not2.moveTo(200, 197.5); + new GUIWire(model, or2.getPin("Y"), not2.getPin("A")); + + WireCrossPoint p1 = new WireCrossPoint(model, 1); + p1.moveCenterTo(250, 112.5); + new GUIWire(model, not1.getPin("Y"), p1); + new GUIWire(model, p1, or2.getPin("A"), new Point(250, 130), new Point(140, 185), new Point(140, 197.5)); + + WireCrossPoint p2 = new WireCrossPoint(model, 1); + p2.moveCenterTo(250, 202.5); + new GUIWire(model, not2.getPin("Y"), p2); + new GUIWire(model, p2, or1.getPin("B"), new Point(250, 185), new Point(140, 130), new Point(140, 117.5)); + + WireCrossPoint o1 = new WireCrossPoint(model, 1); + o1.moveCenterTo(270, 112.5); + new GUIWire(model, p1, o1); + + WireCrossPoint o2 = new WireCrossPoint(model, 1); + o2.moveCenterTo(270, 202.5); + new GUIWire(model, p2, o2); + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/model/ViewModel.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/model/ViewModel.java new file mode 100644 index 00000000..19381329 --- /dev/null +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/model/ViewModel.java @@ -0,0 +1,129 @@ +package net.mograsim.logic.model.model; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.function.Consumer; + +import net.mograsim.logic.model.model.components.GUIComponent; +import net.mograsim.logic.model.model.wires.GUIWire; + +public class ViewModel +{ + private final Map components; + private final Map componentsUnmodifiable; + private final List wires; + private final List wiresUnmodifiable; + + private final List> componentAddedListeners; + private final List> componentRemovedListeners; + private final List> wireAddedListeners; + private final List> wireRemovedListeners; + private final List redrawListeners; + + private final Runnable redrawListenerForSubcomponents; + + protected ViewModel() + { + components = new HashMap<>(); + componentsUnmodifiable = Collections.unmodifiableMap(components); + wires = new ArrayList<>(); + wiresUnmodifiable = Collections.unmodifiableList(wires); + + componentAddedListeners = new ArrayList<>(); + componentRemovedListeners = new ArrayList<>(); + wireAddedListeners = new ArrayList<>(); + wireRemovedListeners = new ArrayList<>(); + redrawListeners = new ArrayList<>(); + + redrawListenerForSubcomponents = this::callRedrawListeners; + } + + /** + * Adds the given component to the list of components and calls all componentAddedListeners. Don't call this method from application + * code as it is automatically called in {@link GUIComponent}'s constructor. + */ + protected void componentCreated(GUIComponent component) + { + if (components.containsKey(component.name)) + throw new IllegalStateException("Don't add the same component twice!"); + components.put(component.name, component); + callComponentAddedListeners(component); + component.addRedrawListener(redrawListenerForSubcomponents); + callRedrawListeners(); + } + + /** + * Removes the given component from the list of components and calls all componentRemovedListeners. Don't call this method from + * application code as it is automatically called in {@link GUIComponent#destroy()}. + */ + protected void componentDestroyed(GUIComponent component) + { + if (!components.containsKey(component.name)) + throw new IllegalStateException("Don't remove the same component twice!"); + components.remove(component.name); + callComponentRemovedListeners(component); + component.removeRedrawListener(redrawListenerForSubcomponents); + callRedrawListeners(); + } + + /** + * Adds the given wire to the list of wires and calls all wireAddedListeners. Don't call this method from application code as it is + * automatically called in {@link GUIWire}'s constructor(s). + */ + protected void wireCreated(GUIWire wire) + { + if (wires.contains(wire)) + throw new IllegalStateException("Don't add the same wire twice!"); + wires.add(wire); + callWireAddedListeners(wire); + wire.addRedrawListener(redrawListenerForSubcomponents); + callRedrawListeners(); + } + + /** + * Removes the given wire from the list of wires and calls all wireRemovedListeners. Don't call this method from application code as it + * is automatically called in {@link GUIWire#destroy()}. + */ + protected void wireDestroyed(GUIWire wire) + { + if (!wires.contains(wire)) + throw new IllegalStateException("Don't remove the same wire twice!"); + wires.remove(wire); + callWireRemovedListeners(wire); + wire.removeRedrawListener(redrawListenerForSubcomponents); + callRedrawListeners(); + } + + public Map getComponentsByName() + { + return componentsUnmodifiable; + } + + public List getWires() + { + return wiresUnmodifiable; + } + + // @formatter:off + public void addComponentAddedListener (Consumer listener) {componentAddedListeners .add (listener);} + public void addComponentRemovedListener (Consumer listener) {componentRemovedListeners.add (listener);} + public void addWireAddedListener (Consumer listener) {wireAddedListeners .add (listener);} + public void addWireRemovedListener (Consumer listener) {wireRemovedListeners .add (listener);} + public void addRedrawListener (Runnable listener) {redrawListeners .add (listener);} + + public void removeComponentAddedListener (Consumer listener) {componentAddedListeners .remove(listener);} + public void removeComponentRemovedListener(Consumer listener) {componentRemovedListeners.remove(listener);} + public void removeWireAddedListener (Consumer listener) {wireAddedListeners .remove(listener);} + public void removeWireRemovedListener (Consumer listener) {wireRemovedListeners .remove(listener);} + public void removeRedrawListener (Runnable listener) {redrawListeners .remove(listener);} + + private void callComponentAddedListeners (GUIComponent c) {componentAddedListeners .forEach(l -> l.accept(c));} + private void callComponentRemovedListeners(GUIComponent c) {componentRemovedListeners.forEach(l -> l.accept(c));} + private void callWireAddedListeners (GUIWire w ) {wireAddedListeners .forEach(l -> l.accept(w));} + private void callWireRemovedListeners (GUIWire w ) {wireRemovedListeners .forEach(l -> l.accept(w));} + private void callRedrawListeners ( ) {redrawListeners .forEach(l -> l.run( ));} + // @formatter:on +} \ No newline at end of file diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/model/ViewModelModifiable.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/model/ViewModelModifiable.java new file mode 100644 index 00000000..79304ec3 --- /dev/null +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/model/ViewModelModifiable.java @@ -0,0 +1,45 @@ +package net.mograsim.logic.model.model; + +import java.util.Set; + +import net.mograsim.logic.model.model.components.GUIComponent; +import net.mograsim.logic.model.model.wires.GUIWire; + +public class ViewModelModifiable extends ViewModel +{ + public String getDefaultComponentName(GUIComponent component) + { + Set componentNames = getComponentsByName().keySet(); + String nameBase = component.getClass().getSimpleName() + '#'; + for (int i = 0;; i++) + { + String nameCandidate = nameBase + i; + if (!componentNames.contains(nameCandidate)) + return nameCandidate; + } + } + + @Override + public void componentCreated(GUIComponent component) + { + super.componentCreated(component); + } + + @Override + public void componentDestroyed(GUIComponent component) + { + super.componentDestroyed(component); + } + + @Override + public void wireCreated(GUIWire wire) + { + super.wireCreated(wire); + } + + @Override + public void wireDestroyed(GUIWire wire) + { + super.wireDestroyed(wire); + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/GUIComponent.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/GUIComponent.java new file mode 100644 index 00000000..1b97cd31 --- /dev/null +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/GUIComponent.java @@ -0,0 +1,316 @@ +package net.mograsim.logic.model.model.components; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.function.Consumer; + +import com.google.gson.JsonElement; +import com.google.gson.JsonNull; + +import net.haspamelodica.swt.helper.gcs.GeneralGC; +import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; +import net.mograsim.logic.model.model.ViewModelModifiable; +import net.mograsim.logic.model.model.wires.Pin; +import net.mograsim.logic.model.serializing.snippets.HighLevelStateHandler; + +/** + * The base class for all GUI components.
+ * A GUIComponent has a position and size. The size can only be modified by subclasses.
+ * + * @author Daniel Kirschten + */ +public abstract class GUIComponent +{ + /** + * The model this component is a part of. + */ + protected final ViewModelModifiable model; + /** + * The name of this component. Is unique in its model. + */ + public final String name; + private final Rectangle bounds; + /** + * The list of all pins of this component by name. + */ + private final Map pinsByName; + /** + * An unmodifiable view of {@link #pinsByName}. + */ + protected final Map pinsUnmodifiable; + + private final List> componentMovedListeners; + private final List> componentResizedListeners; + private final List> pinAddedListeners; + private final List> pinRemovedListeners; + private final List redrawListeners; + + private final Runnable redrawListenerForSubcomponents; + // creation and destruction + + public GUIComponent(ViewModelModifiable model, String name) + { + this.model = model; + this.name = name == null ? model.getDefaultComponentName(this) : name; + this.bounds = new Rectangle(0, 0, 0, 0); + this.pinsByName = new HashMap<>(); + this.pinsUnmodifiable = Collections.unmodifiableMap(pinsByName); + + this.componentMovedListeners = new ArrayList<>(); + this.componentResizedListeners = new ArrayList<>(); + this.pinAddedListeners = new ArrayList<>(); + this.pinRemovedListeners = new ArrayList<>(); + this.redrawListeners = new ArrayList<>(); + + redrawListenerForSubcomponents = this::requestRedraw; + + model.componentCreated(this); + } + + /** + * Destroys this component. This method implicitly calls {@link ViewModelModifiable#componentDestroyed(GUIComponent) + * componentDestroyed()} for the model this component is a part of. + * + * @author Daniel Kirschten + */ + public void destroy() + { + pinsByName.values().forEach(p -> pinRemovedListeners.forEach(l -> l.accept(p))); + model.componentDestroyed(this); + } + + // pins + + /** + * Adds the given pin to this component and calls pinAddedListeners and redrawListeners. + * + * @throws IllegalArgumentException if the pin doesn't belong to this component + * @throws IllegalArgumentException if there already is a pin with the given name + * + * @author Daniel Kirschten + */ + protected void addPin(Pin pin) + { + if (pin.component != this) + throw new IllegalArgumentException("Can't add a pin not belonging to this component!"); + if (pinsByName.containsKey(pin.name)) + throw new IllegalArgumentException("Duplicate pin name: " + pin.name); + pinsByName.put(pin.name, pin); + callPinAddedListeners(pin); + pin.addRedrawListener(redrawListenerForSubcomponents); + requestRedraw(); + } + + /** + * Removes the given pin from this component and calls pinAddedListeners and redrawListeners. + * + * @throws NullPointerException if there was no pin with this name + * + * @author Daniel Kirschten + */ + protected void removePin(String name) + { + Pin pin = pinsByName.remove(name); + callPinRemovedListeners(pin); + pin.removeRedrawListener(redrawListenerForSubcomponents); + requestRedraw(); + } + + /** + * Returns a collection of pins of this component. + * + * @author Daniel Kirschten + */ + public Map getPins() + { + return pinsUnmodifiable; + } + + /** + * Returns the pin with the given name of this component. + * + * @throws IllegalArgumentException if there is no pin with the given name + * + * @author Daniel Kirschten + */ + public Pin getPin(String name) + { + Pin pin = pinsByName.get(name); + if (pin == null) + throw new IllegalArgumentException("No pin with the name " + name); + return pin; + } + + // high-level access + + /** + * Sets the given high-level state to the given value.
+ * See {@link HighLevelStateHandler#setHighLevelState(String, Object)} for an explanation of high-level state IDs. + * + * @see #getHighLevelState(String) + * @see HighLevelStateHandler#setHighLevelState(String, Object) + * + * @author Daniel Kirschten + */ + @SuppressWarnings({ "static-method", "unused" }) // this method is intended to be overridden + public void setHighLevelState(String stateID, Object newState) + { + throw new IllegalArgumentException("No high level state with ID " + stateID); + } + + /** + * Gets the current value of the given high-level state.
+ * See {@link HighLevelStateHandler#setHighLevelState(String, Object)} for an explanation of high-level state IDs. + * + * @see #setHighLevelState(String, Object) + * @see HighLevelStateHandler#getHighLevelState(String) + * + * @author Daniel Kirschten + */ + @SuppressWarnings("static-method") // this method is intended to be overridden + public Object getHighLevelState(String stateID) + { + throw new IllegalArgumentException("No high level state with ID " + stateID); + } + + // "graphical" operations + + /** + * Sets the position of this component and calls componentMovedListeners and redrawListeners. + * + * @author Daniel Kirschten + */ + public void moveTo(double x, double y) + { + bounds.x = x; + bounds.y = y; + callComponentMovedListeners(); + requestRedraw(); + } + + /** + * Sets the size of this component and calls redrawListeners. + * + * @author Daniel Kirschten + */ + protected void setSize(double width, double height) + { + bounds.width = width; + bounds.height = height; + callComponentResizedListener(); + requestRedraw(); + } + + /** + * Returns the bounds of this component. Is a bit slower than {@link #getPosX()}, {@link #getPosY()}, {@link #getWidth}, + * {@link #getHeight}, because new objects are created. + * + * @author Daniel Kirschten + */ + public final Rectangle getBounds() + { + return new Rectangle(bounds.x, bounds.y, bounds.width, bounds.height); + } + + /** + * Returns the x coordinate of the position of this component. Is a bit faster than {@link #getBounds()} because no objects are created. + * + * @author Daniel Kirschten + */ + public double getPosX() + { + return bounds.x; + } + + /** + * Returns the y coordinate of the position of this component. Is a bit faster than {@link #getBounds()} because no objects are created. + * + * @author Daniel Kirschten + */ + public double getPosY() + { + return bounds.y; + } + + /** + * Returns the (graphical) width of this component. Is a bit faster than {@link #getBounds()} because no objects are created. + * + * @author Daniel Kirschten + */ + public double getWidth() + { + return bounds.width; + } + + /** + * Returns the height of this component. Is a bit faster than {@link #getBounds()} because no objects are created. + * + * @author Daniel Kirschten + */ + public double getHeight() + { + return bounds.height; + } + + /** + * Called when this component is clicked. Absolute coordinates of the click are given. Returns true if this component consumed this + * click. + * + * @author Daniel Kirschten + */ + @SuppressWarnings({ "static-method", "unused" }) // this method is inteded to be overridden + public boolean clicked(double x, double y) + { + return false; + } + + /** + * Render this component to the given gc, in absoulute coordinates. + * + * @author Daniel Kirschten + */ + public abstract void render(GeneralGC gc, Rectangle visibleRegion); + + // serializing + + @SuppressWarnings("static-method") // this method is intended to be overridden + public JsonElement getParams() + { + return JsonNull.INSTANCE; + } + + // listeners + + /** + * Calls redraw listeners. + * + * @author Daniel Kirschten + */ + protected void requestRedraw() + { + callRedrawListeners(); + } + + // @formatter:off + public void addComponentMovedListener (Consumer listener) {componentMovedListeners .add (listener);} + public void addComponentResizedListener (Consumer listener) {componentResizedListeners.add (listener);} + public void addPinAddedListener (Consumer listener) {pinAddedListeners .add (listener);} + public void addPinRemovedListener (Consumer listener) {pinRemovedListeners .add (listener);} + public void addRedrawListener (Runnable listener) {redrawListeners .add (listener);} + + public void removeComponentMovedListener (Consumer listener) {componentMovedListeners .remove(listener);} + public void removeComponentResizedListener (Consumer listener) {componentResizedListeners.remove(listener);} + public void removePinAddedListener (Consumer listener) {pinAddedListeners .remove(listener);} + public void removePinRemovedListener (Consumer listener) {pinRemovedListeners .remove(listener);} + public void removeRedrawListener (Runnable listener) {redrawListeners .remove(listener);} + + private void callComponentMovedListeners ( ) {componentMovedListeners .forEach(l -> l.accept(this));} + private void callComponentResizedListener( ) {componentResizedListeners.forEach(l -> l.accept(this));} + private void callPinAddedListeners (Pin p) {pinAddedListeners .forEach(l -> l.accept(p ));} + private void callPinRemovedListeners (Pin p) {pinRemovedListeners .forEach(l -> l.accept(p ));} + private void callRedrawListeners ( ) {redrawListeners .forEach(l -> l.run( ));} + // @formatter:on +} \ No newline at end of file diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/atomic/GUIAndGate.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/atomic/GUIAndGate.java new file mode 100644 index 00000000..5859f1fa --- /dev/null +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/atomic/GUIAndGate.java @@ -0,0 +1,28 @@ +package net.mograsim.logic.model.model.components.atomic; + +import net.mograsim.logic.core.components.gates.AndGate; +import net.mograsim.logic.model.model.ViewModelModifiable; +import net.mograsim.logic.model.modeladapter.ViewLogicModelAdapter; +import net.mograsim.logic.model.modeladapter.componentadapters.SimpleGateAdapter; +import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator; + +public class GUIAndGate extends SimpleRectangularGUIGate +{ + public GUIAndGate(ViewModelModifiable model, int logicWidth) + { + this(model, logicWidth, null); + } + + public GUIAndGate(ViewModelModifiable model, int logicWidth, String name) + { + super(model, "&", false, logicWidth, name); + setInputCount(2);// TODO make variable + } + + static + { + ViewLogicModelAdapter.addComponentAdapter(new SimpleGateAdapter<>(GUIAndGate.class, AndGate::new)); + IndirectGUIComponentCreator.setComponentSupplier(GUIAndGate.class.getCanonicalName(), + (m, p, n) -> new GUIAndGate(m, p.getAsInt(), n)); + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/atomic/GUIBitDisplay.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/atomic/GUIBitDisplay.java new file mode 100644 index 00000000..46c85460 --- /dev/null +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/atomic/GUIBitDisplay.java @@ -0,0 +1,94 @@ +package net.mograsim.logic.model.model.components.atomic; + +import org.eclipse.swt.graphics.Color; + +import net.haspamelodica.swt.helper.gcs.GeneralGC; +import net.haspamelodica.swt.helper.swtobjectwrappers.Font; +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; +import net.mograsim.logic.core.LogicObserver; +import net.mograsim.logic.core.components.BitDisplay; +import net.mograsim.logic.core.types.BitVectorFormatter; +import net.mograsim.logic.model.model.ViewModelModifiable; +import net.mograsim.logic.model.model.components.GUIComponent; +import net.mograsim.logic.model.model.wires.Pin; +import net.mograsim.logic.model.modeladapter.ViewLogicModelAdapter; +import net.mograsim.logic.model.modeladapter.componentadapters.BitDisplayAdapter; +import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator; +import net.mograsim.preferences.Preferences; + +public class GUIBitDisplay extends GUIComponent +{ + private static final double width = 20; + private static final double height = 15; + private static final double fontHeight = 5; + + private final Pin inputPin; + + private final LogicObserver logicObs; + private BitDisplay bitDisplay; + + public GUIBitDisplay(ViewModelModifiable model) + { + this(model, null); + } + + public GUIBitDisplay(ViewModelModifiable model, String name) + { + super(model, name); + logicObs = (i) -> requestRedraw(); + + setSize(width, height); + addPin(this.inputPin = new Pin(this, "", 1, 0, height / 2)); + } + + @Override + public void render(GeneralGC gc, Rectangle visibleRegion) + { + Color foreground = Preferences.current().getColor("net.mograsim.logic.ui.color.foreground"); + if (foreground != null) + gc.setForeground(foreground); + gc.drawRectangle(getBounds()); + String label = bitDisplay == null ? BitVectorFormatter.formatAsString(null) + : BitVectorFormatter.formatAsString(bitDisplay.getDisplayedValue()); + Font oldFont = gc.getFont(); + Font labelFont = new Font(oldFont.getName(), fontHeight, oldFont.getStyle()); + gc.setFont(labelFont); + Point textExtent = gc.textExtent(label); + Color textColor = Preferences.current().getColor("net.mograsim.logic.ui.color.text"); + if (textColor != null) + gc.setForeground(textColor); + gc.drawText(label, getPosX() + (width - textExtent.x) / 2, getPosY() + (height - textExtent.y) / 2, true); + gc.setFont(oldFont); + } + + public void setLogicModelBinding(BitDisplay bitDisplay) + { + if (this.bitDisplay != null) + this.bitDisplay.deregisterObserver(logicObs); + this.bitDisplay = bitDisplay; + if (bitDisplay != null) + bitDisplay.registerObserver(logicObs); + } + + public boolean hasLogicModelBinding() + { + return bitDisplay != null; + } + + public BitDisplay getBitDisplay() + { + return bitDisplay; + } + + public Pin getInputPin() + { + return inputPin; + } + + static + { + ViewLogicModelAdapter.addComponentAdapter(new BitDisplayAdapter()); + IndirectGUIComponentCreator.setComponentSupplier(GUIBitDisplay.class.getCanonicalName(), (m, p, n) -> new GUIBitDisplay(m, n)); + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/atomic/GUIManualSwitch.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/atomic/GUIManualSwitch.java new file mode 100644 index 00000000..2fd1749d --- /dev/null +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/atomic/GUIManualSwitch.java @@ -0,0 +1,148 @@ +package net.mograsim.logic.model.model.components.atomic; + +import org.eclipse.swt.graphics.Color; + +import net.haspamelodica.swt.helper.gcs.GeneralGC; +import net.haspamelodica.swt.helper.swtobjectwrappers.Font; +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; +import net.mograsim.logic.core.LogicObservable; +import net.mograsim.logic.core.LogicObserver; +import net.mograsim.logic.core.components.ManualSwitch; +import net.mograsim.logic.core.types.Bit; +import net.mograsim.logic.core.types.BitVectorFormatter; +import net.mograsim.logic.core.wires.Wire.ReadEnd; +import net.mograsim.logic.model.model.ViewModelModifiable; +import net.mograsim.logic.model.model.components.GUIComponent; +import net.mograsim.logic.model.model.wires.Pin; +import net.mograsim.logic.model.modeladapter.ViewLogicModelAdapter; +import net.mograsim.logic.model.modeladapter.componentadapters.ManualSwitchAdapter; +import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator; +import net.mograsim.preferences.Preferences; + +public class GUIManualSwitch extends GUIComponent +{ + private static final double width = 20; + private static final double height = 15; + private static final double fontHeight = 5; + + private final Pin outputPin; + + private final LogicObserver logicObs; + private ManualSwitch logicSwitch; + private ReadEnd end; + + public GUIManualSwitch(ViewModelModifiable model) + { + this(model, null); + } + + public GUIManualSwitch(ViewModelModifiable model, String name) + { + super(model, name); + logicObs = (i) -> requestRedraw(); + + setSize(width, height); + addPin(this.outputPin = new Pin(this, "", 1, width, height / 2)); + } + + @Override + public void render(GeneralGC gc, Rectangle visibleRegion) + { + // TODO maybe draw switch state too? + Color foreground = Preferences.current().getColor("net.mograsim.logic.ui.color.foreground"); + if (foreground != null) + gc.setForeground(foreground); + gc.drawRectangle(getBounds()); + String label = BitVectorFormatter.formatValueAsString(end); + Font oldFont = gc.getFont(); + Font labelFont = new Font(oldFont.getName(), fontHeight, oldFont.getStyle()); + gc.setFont(labelFont); + Point textExtent = gc.textExtent(label); + Color textColor = Preferences.current().getColor("net.mograsim.logic.ui.color.text"); + if (textColor != null) + gc.setForeground(textColor); + gc.drawText(label, getPosX() + (width - textExtent.x) / 2, getPosY() + (height - textExtent.y) / 2, true); + gc.setFont(oldFont); + } + + public void setLogicModelBinding(ManualSwitch logicSwitch, ReadEnd end) + { + deregisterLogicObs(this.end); + deregisterLogicObs(this.logicSwitch); + this.logicSwitch = logicSwitch; + this.end = end; + registerLogicObs(end); + registerLogicObs(logicSwitch); + } + + public boolean hasLogicModelBinding() + { + return logicSwitch != null; + } + + @Override + public void setHighLevelState(String stateID, Object newState) + { + switch (stateID) + { + case "out": + if (logicSwitch != null) + logicSwitch.setToValueOf((Bit) newState); + break; + default: + super.setHighLevelState(stateID, newState); + break; + } + } + + @Override + public Object getHighLevelState(String stateID) + { + switch (stateID) + { + case "out": + if (logicSwitch != null) + return logicSwitch.getValue(); + return null; + default: + return super.getHighLevelState(stateID); + } + } + + private void registerLogicObs(LogicObservable observable) + { + if (observable != null) + observable.registerObserver(logicObs); + } + + private void deregisterLogicObs(LogicObservable observable) + { + if (observable != null) + observable.deregisterObserver(logicObs); + } + + @Override + public boolean clicked(double x, double y) + { + if (logicSwitch != null) + logicSwitch.toggle(); + return true; + } + + public ManualSwitch getManualSwitch() + { + return logicSwitch; + } + + public Pin getOutputPin() + { + return outputPin; + } + + static + { + ViewLogicModelAdapter.addComponentAdapter(new ManualSwitchAdapter()); + IndirectGUIComponentCreator.setComponentSupplier(GUIManualSwitch.class.getName(), (m, p, n) -> new GUIManualSwitch(m, n)); + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/atomic/GUINandGate.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/atomic/GUINandGate.java new file mode 100644 index 00000000..1d8f63da --- /dev/null +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/atomic/GUINandGate.java @@ -0,0 +1,28 @@ +package net.mograsim.logic.model.model.components.atomic; + +import net.mograsim.logic.core.components.gates.NandGate; +import net.mograsim.logic.model.model.ViewModelModifiable; +import net.mograsim.logic.model.modeladapter.ViewLogicModelAdapter; +import net.mograsim.logic.model.modeladapter.componentadapters.SimpleGateAdapter; +import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator; + +public class GUINandGate extends SimpleRectangularGUIGate +{ + public GUINandGate(ViewModelModifiable model, int logicWidth) + { + this(model, logicWidth, null); + } + + public GUINandGate(ViewModelModifiable model, int logicWidth, String name) + { + super(model, "&", true, logicWidth, name); + setInputCount(2);// TODO make variable + } + + static + { + ViewLogicModelAdapter.addComponentAdapter(new SimpleGateAdapter<>(GUINandGate.class, NandGate::new)); + IndirectGUIComponentCreator.setComponentSupplier(GUINandGate.class.getCanonicalName(), + (m, p, n) -> new GUINandGate(m, p.getAsInt(), n)); + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/atomic/GUINotGate.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/atomic/GUINotGate.java new file mode 100644 index 00000000..5dc69388 --- /dev/null +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/atomic/GUINotGate.java @@ -0,0 +1,28 @@ +package net.mograsim.logic.model.model.components.atomic; + +import net.mograsim.logic.core.components.gates.NotGate; +import net.mograsim.logic.model.model.ViewModelModifiable; +import net.mograsim.logic.model.modeladapter.ViewLogicModelAdapter; +import net.mograsim.logic.model.modeladapter.componentadapters.SimpleGateAdapter; +import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator; + +public class GUINotGate extends SimpleRectangularGUIGate +{ + public GUINotGate(ViewModelModifiable model, int logicWidth) + { + this(model, logicWidth, null); + } + + public GUINotGate(ViewModelModifiable model, int logicWidth, String name) + { + super(model, "1", true, logicWidth, name); + setInputCount(1); + } + + static + { + ViewLogicModelAdapter.addComponentAdapter(new SimpleGateAdapter<>(GUINotGate.class, (t, p, o, i) -> new NotGate(t, p, i[0], o))); + IndirectGUIComponentCreator.setComponentSupplier(GUINotGate.class.getCanonicalName(), + (m, p, n) -> new GUINotGate(m, p.getAsInt(), n)); + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/atomic/GUIOrGate.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/atomic/GUIOrGate.java new file mode 100644 index 00000000..65031a60 --- /dev/null +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/atomic/GUIOrGate.java @@ -0,0 +1,28 @@ +package net.mograsim.logic.model.model.components.atomic; + +import net.mograsim.logic.core.components.gates.OrGate; +import net.mograsim.logic.model.model.ViewModelModifiable; +import net.mograsim.logic.model.modeladapter.ViewLogicModelAdapter; +import net.mograsim.logic.model.modeladapter.componentadapters.SimpleGateAdapter; +import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator; + +public class GUIOrGate extends SimpleRectangularGUIGate +{ + public GUIOrGate(ViewModelModifiable model, int logicWidth) + { + this(model, logicWidth, null); + } + + public GUIOrGate(ViewModelModifiable model, int logicWidth, String name) + { + super(model, "\u22651", false, logicWidth, name);// ">=1" + setInputCount(2); + } + + static + { + ViewLogicModelAdapter.addComponentAdapter(new SimpleGateAdapter<>(GUIOrGate.class, OrGate::new)); + IndirectGUIComponentCreator.setComponentSupplier(GUIOrGate.class.getCanonicalName(), + (m, p, n) -> new GUIOrGate(m, p.getAsInt(), n)); + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/atomic/SimpleRectangularGUIGate.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/atomic/SimpleRectangularGUIGate.java new file mode 100644 index 00000000..c7c26072 --- /dev/null +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/atomic/SimpleRectangularGUIGate.java @@ -0,0 +1,101 @@ +package net.mograsim.logic.model.model.components.atomic; + +import java.util.ArrayList; +import java.util.List; + +import org.eclipse.swt.graphics.Color; + +import com.google.gson.JsonElement; +import com.google.gson.JsonPrimitive; + +import net.haspamelodica.swt.helper.gcs.GeneralGC; +import net.haspamelodica.swt.helper.swtobjectwrappers.Font; +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; +import net.mograsim.logic.model.model.ViewModelModifiable; +import net.mograsim.logic.model.model.components.GUIComponent; +import net.mograsim.logic.model.model.wires.MovablePin; +import net.mograsim.logic.model.model.wires.Pin; +import net.mograsim.preferences.Preferences; + +public class SimpleRectangularGUIGate extends GUIComponent +{ + private static final double width = 20; + private static final double pinDistance = 10; + private static final double fontHeight = 5; + private static final double invertedCircleDiam = 3.5; + + private final String label; + private final boolean isInverted; + protected final int logicWidth; + private final double rectWidth; + + private MovablePin outputPin; + private final List inputPins; + + protected SimpleRectangularGUIGate(ViewModelModifiable model, String label, boolean isInverted, int logicWidth, String name) + { + super(model, name); + this.label = label; + this.logicWidth = logicWidth; + this.isInverted = isInverted; + this.rectWidth = width - (isInverted ? invertedCircleDiam : 0); + this.outputPin = new MovablePin(this, "Y", logicWidth, width, 0); + addPin(outputPin); + this.inputPins = new ArrayList<>(); + setInputCount(1); + } + + protected void setInputCount(int inputCount) + { + int oldInputCount = inputPins.size(); + setSize(width, inputCount * pinDistance); + if (oldInputCount > inputCount) + while (inputPins.size() > inputCount) + removePin(inputPins.remove(inputCount).name); + else if (oldInputCount < inputCount) + for (int i = oldInputCount; i < inputCount; i++) + { + // TODO what for more than 24 input pins? + Pin pin = new Pin(this, String.valueOf((char) ('A' + i)), logicWidth, 0, pinDistance / 2 + i * pinDistance); + inputPins.add(pin); + addPin(pin); + } + outputPin.setRelPos(width, inputCount * pinDistance / 2); + } + + @Override + public void render(GeneralGC gc, Rectangle visibleRegion) + { + Color foreground = Preferences.current().getColor("net.mograsim.logic.ui.color.foreground"); + if (foreground != null) + gc.setForeground(foreground); + double height = (getPins().size() - 1) * pinDistance; + gc.drawRectangle(getPosX(), getPosY(), rectWidth, height); + if (isInverted) + gc.drawOval(getPosX() + rectWidth, getPosY() + (height - invertedCircleDiam) / 2, invertedCircleDiam, invertedCircleDiam); + Font oldFont = gc.getFont(); + Font labelFont = new Font(oldFont.getName(), fontHeight, oldFont.getStyle()); + gc.setFont(labelFont); + Point textExtent = gc.textExtent(label); + Color textColor = Preferences.current().getColor("net.mograsim.logic.ui.color.text"); + if (textColor != null) + gc.setForeground(textColor); + gc.drawText(label, getPosX() + (rectWidth - textExtent.x) / 2, getPosY() + (height - textExtent.y) / 2, true); + gc.setFont(oldFont); + } + + // serializing + + /** + * {@link SimpleRectangularGUIGate}s implementation returns a {@link JsonPrimitive} of type int containing the {@link #logicWidth} of + * this component. + * + * @see GUIComponent#getParams() + */ + @Override + public JsonElement getParams() + { + return new JsonPrimitive(logicWidth); + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/atomic/TextComponent.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/atomic/TextComponent.java new file mode 100644 index 00000000..64a6165e --- /dev/null +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/atomic/TextComponent.java @@ -0,0 +1,63 @@ +package net.mograsim.logic.model.model.components.atomic; + +import org.eclipse.swt.graphics.Color; + +import com.google.gson.JsonElement; +import com.google.gson.JsonPrimitive; + +import net.haspamelodica.swt.helper.gcs.GeneralGC; +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; +import net.mograsim.logic.model.model.ViewModelModifiable; +import net.mograsim.logic.model.model.components.GUIComponent; +import net.mograsim.logic.model.modeladapter.ViewLogicModelAdapter; +import net.mograsim.logic.model.modeladapter.componentadapters.NoLogicAdapter; +import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator; +import net.mograsim.preferences.Preferences; + +//TODO clean size calculation mess +public class TextComponent extends GUIComponent +{ + private final String text; + + public TextComponent(ViewModelModifiable model, String text) + { + this(model, text, null); + } + + public TextComponent(ViewModelModifiable model, String text, String name) + { + super(model, name); + this.text = text; + // If size is unset, it defaults to 0, which could prohibit this component from being rendered, which would prohibit the size being + // set to a better guess + setSize(1, 1); + } + + @Override + public void render(GeneralGC gc, Rectangle visibleRegion) + { + Point textExtent = gc.textExtent(text); + setSize(textExtent.x, textExtent.y); + + Color textColor = Preferences.current().getColor("net.mograsim.logic.ui.color.text"); + if (textColor != null) + gc.setForeground(textColor); + gc.drawText(text, getPosX(), getPosY(), true); + } + + // serializing + + @Override + public JsonElement getParams() + { + return new JsonPrimitive(text); + } + + static + { + ViewLogicModelAdapter.addComponentAdapter(new NoLogicAdapter<>(TextComponent.class)); + IndirectGUIComponentCreator.setComponentSupplier(TextComponent.class.getName(), + (m, p, n) -> new TextComponent(m, p.getAsString(), n)); + } +} diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/submodels/SimpleRectangularSubmodelComponent.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/submodels/SimpleRectangularSubmodelComponent.java new file mode 100644 index 00000000..530f0789 --- /dev/null +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/submodels/SimpleRectangularSubmodelComponent.java @@ -0,0 +1,166 @@ +package net.mograsim.logic.model.model.components.submodels; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.function.Function; + +import org.eclipse.swt.graphics.Color; + +import com.google.gson.JsonObject; + +import net.haspamelodica.swt.helper.gcs.GeneralGC; +import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; +import net.mograsim.logic.model.model.ViewModelModifiable; +import net.mograsim.logic.model.model.components.GUIComponent; +import net.mograsim.logic.model.model.wires.MovablePin; +import net.mograsim.logic.model.model.wires.Pin; +import net.mograsim.logic.model.serializing.SubmodelComponentParams; +import net.mograsim.logic.model.serializing.snippets.Renderer; +import net.mograsim.logic.model.serializing.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer; +import net.mograsim.logic.model.serializing.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer.SimpleRectangularLikeParams; +import net.mograsim.preferences.Preferences; + +public class SimpleRectangularSubmodelComponent extends SubmodelComponent +{ + private static final double width = 35; + private static final double pinDistance = 10; + private static final double pinNameMargin = .5; + private static final double labelFontHeight = 5; + private static final double pinNameFontHeight = 3.5; + + private final String label; + protected final int logicWidth; + + private final List inputPinNames; + private final List inputPinNamesUnmodifiable; + private final List outputPinNames; + private final List outputPinNamesUnmodifiable; + + private Renderer symbolRenderer; + + public SimpleRectangularSubmodelComponent(ViewModelModifiable model, int logicWidth, String label) + { + this(model, logicWidth, label, null); + } + + public SimpleRectangularSubmodelComponent(ViewModelModifiable model, int logicWidth, String label, String name) + { + super(model, name); + this.label = label; + this.logicWidth = logicWidth; + this.inputPinNames = new ArrayList<>(); + this.inputPinNamesUnmodifiable = Collections.unmodifiableList(inputPinNames); + this.outputPinNames = new ArrayList<>(); + this.outputPinNamesUnmodifiable = Collections.unmodifiableList(outputPinNames); + + SimpleRectangularLikeParams rendererParams = new SimpleRectangularLikeParams(); + rendererParams.centerText = label; + rendererParams.centerTextHeight = labelFontHeight; + rendererParams.horizontalComponentCenter = getWidth() / 2; + rendererParams.pinLabelHeight = pinNameFontHeight; + rendererParams.pinLabelMargin = pinNameMargin; + symbolRenderer = new SimpleRectangularLikeSymbolRenderer(this, rendererParams); + } + + protected void setInputPins(String... pinNames) + { + setIOPins(0, inputPinNames, outputPinNames, pinNames); + } + + protected void setOutputPins(String... pinNames) + { + setIOPins(width, outputPinNames, inputPinNames, pinNames); + } + + private void setIOPins(double relX, List pinNamesListThisSide, List pinNamesListOtherSide, String... newPinNames) + { + int inputCount = newPinNames.length; + List newPinNamesList = Arrays.asList(newPinNames); + if (new HashSet<>(newPinNamesList).size() != inputCount) + throw new IllegalArgumentException("Pin names contain duplicates"); + for (String pinName : newPinNamesList) + if (pinNamesListOtherSide.contains(pinName)) + throw new IllegalArgumentException("Can't add pin. There is a pin on the other side with the same name: " + pinName); + super.setSize(width, Math.max(inputCount, pinNamesListOtherSide.size()) * pinDistance); + for (int i = 0; i < inputCount; i++) + { + String pinName = newPinNames[i]; + int oldPinIndex = pinNamesListThisSide.indexOf(pinName); + if (oldPinIndex == -1) + super.addSubmodelInterface(new MovablePin(this, pinName, logicWidth, relX, pinDistance / 2 + i * pinDistance)); + else + getSupermodelMovablePin(pinName).setRelPos(relX, pinDistance / 2 + i * pinDistance); + } + for (String pinName : pinNamesListThisSide) + if (!newPinNamesList.contains(pinName)) + super.removeSubmodelInterface(pinName); + pinNamesListThisSide.clear(); + pinNamesListThisSide.addAll(newPinNamesList); + } + + public List getInputPinNames() + { + return inputPinNamesUnmodifiable; + } + + public List getOutputPinNames() + { + return outputPinNamesUnmodifiable; + } + + @Override + protected void renderSymbol(GeneralGC gc, Rectangle visibleRegion) + { + symbolRenderer.render(gc, visibleRegion); + } + + @Override + protected void renderOutline(GeneralGC gc, Rectangle visibleRegion) + { + Color foreground = Preferences.current().getColor("net.mograsim.logic.ui.color.foreground"); + if (foreground != null) + gc.setForeground(foreground); + gc.drawRectangle(getBounds()); + } + + // serializing + + @Override + public SubmodelComponentParams calculateParams(Function getIdentifier) + { + SubmodelComponentParams params = super.calculateParams(getIdentifier); + JsonObject symbolRendererParams = new JsonObject(); + symbolRendererParams.addProperty("centerText", label); + symbolRendererParams.addProperty("horizontalComponentCenter", getWidth() / 2); + symbolRendererParams.addProperty("centerTextHeight", labelFontHeight); + symbolRendererParams.addProperty("pinLabelHeight", pinNameFontHeight); + symbolRendererParams.addProperty("pinLabelMargin", pinNameMargin); + params.symbolRendererSnippetID = "SimpleRectangularLikeSymbolRenderer"; + params.symbolRendererParams = symbolRendererParams; + return params; + } + + @Override + protected Pin addSubmodelInterface(MovablePin supermodelPin) + { + throw new UnsupportedOperationException( + "Can't add submodel interfaces to a SimpleRectangularSubmodelComponent directly, call setInputPins / setOutputPins instead"); + } + + @Override + protected void removeSubmodelInterface(String name) + { + throw new UnsupportedOperationException( + "Can't remove submodel interfaces of a SimpleRectangularSubmodelComponent directly, call setInputPins / setOutputPins instead"); + } + + @Override + protected void setSize(double width, double height) + { + throw new UnsupportedOperationException( + "Can't set the size of a SimpleRectangularSubmodelComponent directly, call setInputPins / setOutputPins instead"); + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/submodels/SubmodelComponent.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/submodels/SubmodelComponent.java new file mode 100644 index 00000000..b19f05de --- /dev/null +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/submodels/SubmodelComponent.java @@ -0,0 +1,592 @@ +package net.mograsim.logic.model.model.components.submodels; + +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Set; +import java.util.function.Function; + +import net.haspamelodica.swt.helper.gcs.GCConfig; +import net.haspamelodica.swt.helper.gcs.GeneralGC; +import net.haspamelodica.swt.helper.gcs.TranslatedGC; +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; +import net.mograsim.logic.model.LogicUIRenderer; +import net.mograsim.logic.model.model.ViewModel; +import net.mograsim.logic.model.model.ViewModelModifiable; +import net.mograsim.logic.model.model.components.GUIComponent; +import net.mograsim.logic.model.model.wires.GUIWire; +import net.mograsim.logic.model.model.wires.MovablePin; +import net.mograsim.logic.model.model.wires.Pin; +import net.mograsim.logic.model.serializing.SubmodelComponentParams; +import net.mograsim.logic.model.serializing.SubmodelComponentParams.InterfacePinParams; +import net.mograsim.logic.model.serializing.SubmodelComponentParams.SubmodelParameters; +import net.mograsim.logic.model.serializing.SubmodelComponentParams.SubmodelParameters.InnerComponentParams; +import net.mograsim.logic.model.serializing.SubmodelComponentParams.SubmodelParameters.InnerWireParams; +import net.mograsim.logic.model.serializing.SubmodelComponentParams.SubmodelParameters.InnerWireParams.InnerPinParams; + +/** + * A {@link GUIComponent} consisting of another model. A SubmodelComponent can have so-called "interface pins" connecting the + * inner and outer models. + */ +public abstract class SubmodelComponent extends GUIComponent +{ + private static final String SUBMODEL_INTERFACE_NAME = "_submodelinterface"; + /** + * A modifiable view of {@link #submodel}. + */ + protected final ViewModelModifiable submodelModifiable; + /** + * The model this {@link SubmodelComponent} consists of. + */ + public final ViewModel submodel; + /** + * The list of all submodel interface pins of this {@link SubmodelComponent} on the submodel side. + */ + private final Map submodelPins; + /** + * An unmodifiable view of {@link #submodelPins}. + */ + private final Map submodelMovablePinsUnmodifiable; + /** + * An unmodifiable view of {@link #submodelPins} where pins are not movable. + */ + private final Map submodelUnmovablePinsUnmodifiable; + /** + * The list of all submodel interface pins of this {@link SubmodelComponent} on the supermodel side. + */ + private final Map supermodelPins; + /** + * An unmodifiable view of {@link #supermodelPins}. + */ + private final Map supermodelMovablePinsUnmodifiable; + /** + * An unmodifiable view of {@link #supermodelPins} where pins are not movable. + */ + private final Map supermodelUnmovablePinsUnmodifiable; + /** + * A pseudo-component containing all submodel interface pins on the submodel side. + */ + private final SubmodelInterface submodelInterface; + + /** + * The list of all high level state IDs this component supports without delegating to subcomponents. + */ + private final Set highLevelAtomicStates; + /** + * A map of high level state subcomponent IDs to the {@link GUIComponent} high level state access requests are delegated to. + */ + private final Map subcomponentsByHighLevelStateSubcomponentID; + + /** + * The factor by which the submodel is scaled when rendering. + */ + private double submodelScale; + /** + * If this {@link SubmodelComponent} fills at least this amount of the visible region vertically or horizontally, the submodel starts to + * be visible. + */ + private double maxVisibleRegionFillRatioForAlpha0; + /** + * If this {@link SubmodelComponent} fills at least this amount of the visible region vertically or horizontally, the submodel is fully + * visible. + */ + private double minVisibleRegionFillRatioForAlpha1; + /** + * The renderer used for rendering the submodel. + */ + private final LogicUIRenderer renderer; + + // creation and destruction + + public SubmodelComponent(ViewModelModifiable model, String name) + { + super(model, name); + this.submodelModifiable = new ViewModelModifiable(); + this.submodel = submodelModifiable; + this.submodelPins = new HashMap<>(); + this.submodelMovablePinsUnmodifiable = Collections.unmodifiableMap(submodelPins); + this.submodelUnmovablePinsUnmodifiable = Collections.unmodifiableMap(submodelPins); + this.supermodelPins = new HashMap<>(); + this.supermodelMovablePinsUnmodifiable = Collections.unmodifiableMap(supermodelPins); + this.supermodelUnmovablePinsUnmodifiable = Collections.unmodifiableMap(supermodelPins); + this.submodelInterface = new SubmodelInterface(submodelModifiable, SUBMODEL_INTERFACE_NAME); + + this.highLevelAtomicStates = new HashSet<>(); + this.subcomponentsByHighLevelStateSubcomponentID = new HashMap<>(); + + this.submodelScale = 1; + this.maxVisibleRegionFillRatioForAlpha0 = 0.4; + this.minVisibleRegionFillRatioForAlpha1 = 0.8; + this.renderer = new LogicUIRenderer(submodelModifiable); + + submodelModifiable.addRedrawListener(this::requestRedraw); + } + + // pins + + /** + * Adds a new submodel interface pin. + * + * @param supermodelPin the submodel interface pin on the supermodel side + * + * @return the submodel interface pin on the submodel side + * + * @author Daniel Kirschten + */ + protected Pin addSubmodelInterface(MovablePin supermodelPin) + { + super.addPin(supermodelPin);// do this first to be fail-fast if the supermodel does not belong to this component + + String name = supermodelPin.name; + MovablePin submodelPin = new MovablePin(submodelInterface, name, supermodelPin.logicWidth, supermodelPin.getRelX() / submodelScale, + supermodelPin.getRelY() / submodelScale); + + submodelPin.addPinMovedListener(p -> + { + double newRelX = p.getRelX() * submodelScale; + double newRelY = p.getRelY() * submodelScale; + if (supermodelPin.getRelX() != newRelX || supermodelPin.getRelY() != newRelY) + supermodelPin.setRelPos(newRelX, newRelY); + }); + supermodelPin.addPinMovedListener(p -> + { + double newRelX = p.getRelX() / submodelScale; + double newRelY = p.getRelY() / submodelScale; + if (submodelPin.getRelX() != newRelX || submodelPin.getRelY() != newRelY) + submodelPin.setRelPos(newRelX, newRelY); + }); + + submodelInterface.addPin(submodelPin); + + submodelPins.put(name, submodelPin); + supermodelPins.put(name, supermodelPin); + + // no need to call requestRedraw() because addPin() will request a redraw + return submodelPin; + } + + /** + * Removes a submodel interface pin. + * + * @author Daniel Kirschten + */ + protected void removeSubmodelInterface(String name) + { + super.removePin(name);// do this first to be fail-fast if this component doesn't have a pin with the given name + Pin submodelPin = submodelPins.remove(name); + submodelInterface.removePin(submodelPin.name); + supermodelPins.remove(name); + + // no need to call requestRedraw() because removePin() will request a redraw + } + + /** + * Returns a collection of submodel interface pins on the submodel side of this component. + * + * @author Daniel Kirschten + */ + public Map getSubmodelPins() + { + return submodelUnmovablePinsUnmodifiable; + } + + /** + * Returns the submodel interface pin with the given name on the submodel side of this component. + * + * @author Daniel Kirschten + */ + public Pin getSubmodelPin(String name) + { + return getSubmodelMovablePin(name); + } + + /** + * Returns a collection of movable submodel interface pins on the submodel side of this component. + * + * @author Daniel Kirschten + */ + protected Map getSubmodelMovablePins() + { + return submodelMovablePinsUnmodifiable; + } + + /** + * Returns the movable submodel interface pin with the given name on the submodel side of this component. + * + * @author Daniel Kirschten + */ + protected MovablePin getSubmodelMovablePin(String name) + { + return submodelPins.get(name); + } + + /** + * Returns a collection of submodel interface pins on the supermodel side of this component. + * + * @author Daniel Kirschten + */ + public Map getSupermodelPins() + { + return supermodelUnmovablePinsUnmodifiable; + } + + /** + * Returns the submodel interface pin with the given name on the supermodel side of this component. + * + * @author Daniel Kirschten + */ + public Pin getSupermodelPin(String name) + { + return getSupermodelMovablePin(name); + } + + /** + * Returns a collection of movable submodel interface pins on the supermodel side of this component. + * + * @author Daniel Kirschten + */ + protected Map getSupermodelMovablePins() + { + return supermodelMovablePinsUnmodifiable; + } + + /** + * Returns the movable submodel interface pin with the given name on the supermodel side of this component. + * + * @author Daniel Kirschten + */ + protected MovablePin getSupermodelMovablePin(String name) + { + return supermodelPins.get(name); + } + + // high-level access + + /** + * Adds the given subcomponent ID to the set of allowed subcomponent IDs and links the given {@link GUIComponent} as the delegate target + * for this subcomponent ID.
+ * Note that this method does not affect whether {@link #setSubcomponentHighLevelState(String, String, Object) + * set}/{@link #getSubcomponentHighLevelState(String, String)} will be called.
+ * See {@link GUIComponent#setHighLevelState(String, Object)} for details about subcomponent IDs. + * + * @author Daniel Kirschten + */ + protected void addHighLevelStateSubcomponentID(String subcomponentID, GUIComponent subcomponent) + { + checkHighLevelStateIDPart(subcomponentID); + subcomponentsByHighLevelStateSubcomponentID.put(subcomponentID, subcomponent); + } + + /** + * Removes the given subcomponent ID from the set of allowed subcomponent IDs.
+ * Note that this method does not affect whether {@link #setSubcomponentHighLevelState(String, String, Object) + * set}/{@link #getSubcomponentHighLevelState(String, String)} will be called.
+ * See {@link GUIComponent#setHighLevelState(String, Object)} for details about subcomponent IDs. + * + * @author Daniel Kirschten + */ + protected void removeHighLevelStateSubcomponentID(String subcomponentID) + { + subcomponentsByHighLevelStateSubcomponentID.remove(subcomponentID); + } + + /** + * Adds the given atomic state ID to the set of allowed atomic state IDs.
+ * See {@link GUIComponent#setHighLevelState(String, Object)} for details about atomic state IDs. + * + * @author Daniel Kirschten + */ + protected void addAtomicHighLevelStateID(String stateID) + { + checkHighLevelStateIDPart(stateID); + highLevelAtomicStates.add(stateID); + } + + /** + * Removes the given atomic state ID from the set of allowed atomic state IDs.
+ * See {@link GUIComponent#setHighLevelState(String, Object)} for details about atomic state IDs. + * + * @author Daniel Kirschten + */ + protected void removeAtomicHighLevelStateID(String stateID) + { + highLevelAtomicStates.remove(stateID); + } + + @Override + public final void setHighLevelState(String stateID, Object newState) + { + int indexOfDot = stateID.indexOf('.'); + if (indexOfDot == -1) + if (highLevelAtomicStates.contains(stateID)) + setAtomicHighLevelState(stateID, newState); + else + super.setHighLevelState(stateID, newState); + else + setSubcomponentHighLevelState(stateID.substring(0, indexOfDot), stateID.substring(indexOfDot + 1), newState); + } + + /** + * This method is called in {@link #setHighLevelState(String, Object)} when the state ID is not atomic. The default implementation uses + * the information given to {@link #addHighLevelStateSubcomponentID(String, GUIComponent) + * add}/{@link #removeHighLevelStateSubcomponentID(String)} to decide which subcomponent to delegate to.
+ * Note that {@link #addHighLevelStateSubcomponentID(String, GUIComponent) add}/{@link #removeHighLevelStateSubcomponentID(String)} + * don't affect whether this method will be called. + * + * @author Daniel Kirschten + */ + protected void setSubcomponentHighLevelState(String subcomponentID, String subcomponentHighLevelStateID, Object newState) + { + GUIComponent subcomponent = subcomponentsByHighLevelStateSubcomponentID.get(subcomponentID); + if (subcomponent != null) + subcomponent.setHighLevelState(subcomponentHighLevelStateID, newState); + else + super.setHighLevelState(subcomponentID + "." + subcomponentHighLevelStateID, newState); + } + + /** + * This method is called in {@link #setHighLevelState(String, Object)} when the state ID is atomic and in the set of allowed atomic + * state IDs.
+ * See {@link GUIComponent#setHighLevelState(String, Object)} for details about atomic state IDs. + * + * @author Daniel Kirschten + */ + @SuppressWarnings({ "static-method", "unused" }) // this method is intended to be overridden + protected void setAtomicHighLevelState(String stateID, Object newState) + { + throw new IllegalStateException("Unknown high level state ID: " + stateID); + } + + @Override + public final Object getHighLevelState(String stateID) + { + int indexOfDot = stateID.indexOf('.'); + if (indexOfDot == -1) + { + if (highLevelAtomicStates.contains(stateID)) + return getAtomicHighLevelState(stateID); + return super.getHighLevelState(stateID); + } + return getSubcomponentHighLevelState(stateID.substring(0, indexOfDot), stateID.substring(indexOfDot + 1)); + } + + /** + * This method is called in {@link #getHighLevelState(String, Object)} when the state ID is not atomic. The default implementation uses + * the information given to {@link #addHighLevelStateSubcomponentID(String, GUIComponent) + * add}/{@link #removeHighLevelStateSubcomponentID(String)} to decide which subcomponent to delegate to.
+ * Note that {@link #addHighLevelStateSubcomponentID(String, GUIComponent) add}/{@link #removeHighLevelStateSubcomponentID(String)} + * don't affect whether this method will be called. + * + * @author Daniel Kirschten + */ + protected Object getSubcomponentHighLevelState(String subcomponentID, String subcomponentHighLevelStateID) + { + GUIComponent subcomponent = subcomponentsByHighLevelStateSubcomponentID.get(subcomponentID); + if (subcomponent != null) + return subcomponent.getHighLevelState(subcomponentHighLevelStateID); + return super.getHighLevelState(subcomponentID + "." + subcomponentHighLevelStateID); + } + + /** + * This method is called in {@link SubmodelComponent#getHighLevelState(String)} when the state ID is in the set of allowed atomic state + * IDs.
+ * See {@link GUIComponent#setHighLevelState(String, Object)} for details about atomic state IDs. + * + * @author Daniel Kirschten + */ + @SuppressWarnings("static-method") // this method is intended to be overridden + protected Object getAtomicHighLevelState(String stateID) + { + throw new IllegalStateException("Unknown high level state ID: " + stateID); + } + + private static void checkHighLevelStateIDPart(String stateIDPart) + { + if (stateIDPart.indexOf('.') != -1) + throw new IllegalArgumentException("Illegal high level state ID part (contains dot): " + stateIDPart); + + } + + // "graphical" operations + + /** + * Sets the factor by which the submodel is scaled when rendering and calls redrawListeners. Note that the submodel interface pins will + * stay at their position relative to the supermodel, which means they will move relative to the submodel. + * + * @author Daniel Kirschten + */ + protected void setSubmodelScale(double submodelScale) + { + this.submodelScale = submodelScale; + + for (Entry e : supermodelPins.entrySet()) + getSubmodelMovablePin(e.getKey()).setRelPos(e.getValue().getRelX() * submodelScale, e.getValue().getRelY() * submodelScale); + + requestRedraw();// needed if there is no submodel interface pin + } + + /** + * Returns the current factor by which the submodel is scaled when rendering. + * + * @author Daniel Kirschten + */ + protected double getSubmodelScale() + { + return submodelScale; + } + + @Override + public void render(GeneralGC gc, Rectangle visibleRegion) + { + GCConfig conf = new GCConfig(gc); + TranslatedGC tgc = new TranslatedGC(gc, getPosX(), getPosY(), submodelScale, true); + conf.reset(tgc); + double visibleRegionFillRatio = Math.max(getWidth() / visibleRegion.width, getHeight() / visibleRegion.height); + double alphaFactor = map(visibleRegionFillRatio, maxVisibleRegionFillRatioForAlpha0, minVisibleRegionFillRatioForAlpha1, 0, 1); + alphaFactor = Math.max(0, Math.min(1, alphaFactor)); + // we need to take the old alpha into account to support nested submodules better. + int oldAlpha = gc.getAlpha(); + int submodelAlpha = Math.max(0, Math.min(255, (int) (oldAlpha * alphaFactor))); + int labelAlpha = Math.max(0, Math.min(255, (int) (oldAlpha * (1 - alphaFactor)))); + if (submodelAlpha != 0) + { + gc.setAlpha(submodelAlpha); + renderer.render(tgc, visibleRegion.translate(getPosX() / submodelScale, getPosY() / submodelScale, 1 / submodelScale)); + } + if (labelAlpha != 0) + { + gc.setAlpha(labelAlpha); + renderSymbol(gc, visibleRegion); + } + conf.reset(gc); + // draw the outline after all other operations to make interface pins look better + renderOutline(gc, visibleRegion); + } + + // TODO make this a path + /** + * Render the outline of this {@link SubmodelComponent}, e.g. the graphical elements that should stay visible if the submodel is drawn. + * + * @author Daniel Kirschten + */ + protected abstract void renderOutline(GeneralGC gc, Rectangle visibleRegion); + + /** + * Render the symbol of this {@link SubmodelComponent}, e.g. the things that should be hidden if the submodel is drawn. + * + * @author Daniel Kirschten + */ + protected abstract void renderSymbol(GeneralGC gc, Rectangle visibleRegion); + + private static double map(double val, double valMin, double valMax, double mapMin, double mapMax) + { + return mapMin + (val - valMin) * (mapMax - mapMin) / (valMax - valMin); + } + + @Override + public boolean clicked(double x, double y) + { + double scaledX = (x - getPosX()) / submodelScale; + double scaledY = (y - getPosY()) / submodelScale; + for (GUIComponent component : submodel.getComponentsByName().values()) + if (component.getBounds().contains(scaledX, scaledY) && component.clicked(scaledX, scaledY)) + return true; + return false; + } + + // serializing + + // TODO move the methods below to serializing classes + + public SubmodelComponentParams calculateParams() + { + return calculateParams(c -> "class:" + c.getClass().getCanonicalName()); + } + + /** + * @return {@link SubmodelComponentParams}, which describe this {@link SubmodelComponent}. + */ + public SubmodelComponentParams calculateParams(Function getIdentifier) + { + SubmodelComponentParams params = new SubmodelComponentParams(); + params.submodel = calculateSubmodelParams(getIdentifier); + + params.width = getWidth(); + params.height = getHeight(); + + InterfacePinParams[] iPins = new InterfacePinParams[getPins().size()]; + int i = 0; + for (Pin p : getPins().values()) + { + InterfacePinParams iPinParams = new InterfacePinParams(); + iPins[i] = iPinParams; + iPinParams.location = p.getRelPos(); + iPinParams.name = p.name; + iPinParams.logicWidth = p.logicWidth; + i++; + } + params.interfacePins = iPins; + return params; + } + + private SubmodelParameters calculateSubmodelParams(Function getIdentifier) + { + SubmodelParameters params = new SubmodelParameters(); + params.innerScale = getSubmodelScale(); + + Map components = new HashMap<>(submodel.getComponentsByName()); + components.remove(SUBMODEL_INTERFACE_NAME); + InnerComponentParams[] comps = new InnerComponentParams[components.size()]; + int i = 0; + for (GUIComponent component : components.values()) + { + InnerComponentParams inner = new InnerComponentParams(); + comps[i] = inner; + inner.pos = new Point(component.getPosX(), component.getPosY()); + inner.id = getIdentifier.apply(component); + inner.params = component.getParams(); + inner.name = component.name; + i++; + } + params.subComps = comps; + + List wireList = submodel.getWires(); + InnerWireParams wires[] = new InnerWireParams[wireList.size()]; + i = 0; + for (GUIWire wire : wireList) + { + InnerWireParams inner = new InnerWireParams(); + wires[i] = inner; + InnerPinParams pin1Params = new InnerPinParams(), pin2Params = new InnerPinParams(); + + pin1Params.pinName = wire.getPin1().name; + pin1Params.compName = wire.getPin1().component.name; + pin2Params.pinName = wire.getPin2().name; + pin2Params.compName = wire.getPin2().component.name; + inner.pin1 = pin1Params; + inner.pin2 = pin2Params; + inner.path = wire.getPath(); + i++; + } + params.innerWires = wires; + return params; + } + + // operations no longer supported + + @Override + protected void addPin(Pin pin) + { + throw new UnsupportedOperationException("Can't add pins to a SubmodelComponent directly, call addSubmodelInterface instead"); + } + + @Override + protected void removePin(String name) + { + throw new UnsupportedOperationException("Can't remove pins of a SubmodelComponent directly, call removeSubmodelInterface instead"); + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/submodels/SubmodelInterface.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/submodels/SubmodelInterface.java new file mode 100644 index 00000000..9ac1749d --- /dev/null +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/submodels/SubmodelInterface.java @@ -0,0 +1,50 @@ +package net.mograsim.logic.model.model.components.submodels; + +import net.haspamelodica.swt.helper.gcs.GeneralGC; +import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; +import net.mograsim.logic.model.model.ViewModelModifiable; +import net.mograsim.logic.model.model.components.GUIComponent; +import net.mograsim.logic.model.model.wires.Pin; + +public class SubmodelInterface extends GUIComponent +{ + public SubmodelInterface(ViewModelModifiable model, String name) + { + super(model, name); + } + + @Override + public void render(GeneralGC gc, Rectangle visibleRegion) + {// nothing to do here + } + + /** + * {@inheritDoc}
+ * This method is only marked public in {@link SubmodelInterface} for {@link SubmodelComponent} to be able to add / remove pins to / + * from a SubmodelInterface.
+ * + * @see GUIComponent#removePin(Pin) + * + * @author Daniel Kirschten + */ + @Override + public void addPin(Pin pin) + { + super.addPin(pin); + } + + /** + * {@inheritDoc}
+ * This method is only marked public in {@link SubmodelInterface} for {@link SubmodelComponent} to be able to add / remove pins to / + * from a SubmodelInterface.
+ * + * @see GUIComponent#removePin(Pin) + * + * @author Daniel Kirschten + */ + @Override + protected void removePin(String name) + { + super.removePin(name); + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/model/wires/GUIWire.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/model/wires/GUIWire.java new file mode 100644 index 00000000..d9b7cb91 --- /dev/null +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/model/wires/GUIWire.java @@ -0,0 +1,448 @@ +package net.mograsim.logic.model.model.wires; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import org.eclipse.swt.SWT; + +import net.haspamelodica.swt.helper.gcs.GeneralGC; +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; +import net.mograsim.logic.core.LogicObserver; +import net.mograsim.logic.core.types.BitVector; +import net.mograsim.logic.core.types.BitVectorFormatter; +import net.mograsim.logic.core.wires.Wire; +import net.mograsim.logic.core.wires.Wire.ReadEnd; +import net.mograsim.logic.model.model.ViewModelModifiable; +import net.mograsim.preferences.ColorDefinition; +import net.mograsim.preferences.ColorManager; + +/** + * A wire connecting exactly two {@link Pin}s. + * + * @author Daniel Kirschten + */ +public class GUIWire +{ + /** + * The model this wire is a part of. + */ + private final ViewModelModifiable model; + /** + * The logical width of this wire. Is equal to the logical with of {@link #pin1} and {@link #pin2}. + */ + public final int logicWidth; + /** + * The {@link Pin} on one side of this wire, usually the signal source. + */ + private Pin pin1; + /** + * The {@link Pin} on one side of this wire, usually the signal target. + */ + private Pin pin2; + /** + * The user-defined path between {@link #pin1} and {@link #pin2}.
+ * Special cases: null means "choose an interpolation as fits", and an empty array means "direct connection without any + * interpolation". + */ + private Point[] path; + /** + * The bounds of this wire, excluding line width (and line joins, if the line join is {@link SWT#JOIN_MITER}) + */ + private final Rectangle bounds; + /** + * The effective path of this wire, including automatic interpolation and the position of both {@link Pin}s. Is never null. + */ + private double[] effectivePath; + + private final List redrawListeners; + + private final Set pathChangedListeners; + + /** + * A LogicObserver calling redrawListeners. Used for logic model bindings. + */ + private final LogicObserver logicObs; + /** + * A ReadEnd of the logic wire this GUI wire currently is bound to. + */ + private ReadEnd end; + + // creation and destruction + + /** + * Creates a new {@link GUIWire} with automatic interpolation. + * + * @author Daniel Kirschten + */ + public GUIWire(ViewModelModifiable model, WireCrossPoint pin1, WireCrossPoint pin2) + { + this(model, pin1, pin2, (Point[]) null); + } + + /** + * Creates a new {@link GUIWire} with automatic interpolation. + * + * @author Daniel Kirschten + */ + public GUIWire(ViewModelModifiable model, WireCrossPoint pin1, Pin pin2) + { + this(model, pin1, pin2, (Point[]) null); + } + + /** + * Creates a new {@link GUIWire} with automatic interpolation. + * + * @author Daniel Kirschten + */ + public GUIWire(ViewModelModifiable model, Pin pin1, WireCrossPoint pin2) + { + this(model, pin1, pin2, (Point[]) null); + } + + /** + * Creates a new {@link GUIWire} with automatic interpolation. + * + * @author Daniel Kirschten + */ + public GUIWire(ViewModelModifiable model, Pin pin1, Pin pin2) + { + this(model, pin1, pin2, (Point[]) null); + } + + /** + * Creates a new {@link GUIWire} without automatic interpolation. + * + * @author Daniel Kirschten + */ + public GUIWire(ViewModelModifiable model, WireCrossPoint pin1, WireCrossPoint pin2, Point... path) + { + this(model, pin1.getPin(), pin2.getPin(), path); + } + + /** + * Creates a new {@link GUIWire} without automatic interpolation. + * + * @author Daniel Kirschten + */ + public GUIWire(ViewModelModifiable model, WireCrossPoint pin1, Pin pin2, Point... path) + { + this(model, pin1.getPin(), pin2, path); + } + + /** + * Creates a new {@link GUIWire} without automatic interpolation. + * + * @author Daniel Kirschten + */ + public GUIWire(ViewModelModifiable model, Pin pin1, WireCrossPoint pin2, Point... path) + { + this(model, pin1, pin2.getPin(), path); + } + + /** + * Creates a new {@link GUIWire} without automatic interpolation. + * + * @author Daniel Kirschten + */ + public GUIWire(ViewModelModifiable model, Pin pin1, Pin pin2, Point... path) + { + pathChangedListeners = new HashSet<>(); + logicObs = (i) -> callRedrawListeners(); + this.model = model; + this.logicWidth = pin1.logicWidth; + if (pin2.logicWidth != pin1.logicWidth) + throw new IllegalArgumentException("Can't connect pins of different logic width"); + + this.pin1 = pin1; + this.pin2 = pin2; + + this.path = path == null ? null : Arrays.copyOf(path, path.length); + this.bounds = new Rectangle(0, 0, -1, -1); + + redrawListeners = new ArrayList<>(); + + pin1.addPinMovedListener(p -> pinMoved()); + pin2.addPinMovedListener(p -> pinMoved()); + + recalculateEffectivePath(); + + model.wireCreated(this); + } + + /** + * Destroys this wire. This method implicitly calls {@link ViewModelModifiable#wireDestroyed(GUIWire) wireDestroyed()} for the model + * this component is a part of. + * + * @author Daniel Kirschten + */ + public void destroy() + { + model.wireDestroyed(this); + } + + // pins + + /** + * Returns the {@link Pin} on one side of this wire, usually the signal source. + * + * @author Daniel Kirschten + */ + public Pin getPin1() + { + return pin1; + } + + /** + * Returns the {@link Pin} on one side of this wire, usually the signal target. + * + * @author Daniel Kirschten + */ + public Pin getPin2() + { + return pin2; + } + + /** + * Called when {@link #pin1} or {@link #pin2} were moved. + * + * @author Daniel Kirschten + */ + private void pinMoved() + { + recalculateEffectivePath(); + callRedrawListeners(); + } + + // "graphical" operations + + /** + * Recalculates {@link #effectivePath} "from scratch". Also updates {@link #bounds}. + * + * @author Daniel Kirschten + */ + private void recalculateEffectivePath() + { + Point pos1 = pin1.getPos(), pos2 = pin2.getPos(); + + double boundsX1 = Math.min(pos1.x, pos2.x); + double boundsY1 = Math.min(pos1.y, pos2.y); + double boundsX2 = Math.max(pos1.x, pos2.x); + double boundsY2 = Math.max(pos1.y, pos2.y); + + if (path == null) + effectivePath = new double[] { pos1.x, pos1.y, (pos1.x + pos2.x) / 2, pos1.y, (pos1.x + pos2.x) / 2, pos2.y, pos2.x, pos2.y }; + else + { + effectivePath = new double[path.length * 2 + 4]; + effectivePath[0] = pos1.x; + effectivePath[1] = pos1.y; + for (int srcI = 0, dstI = 2; srcI < path.length; srcI++, dstI += 2) + { + double pathX = path[srcI].x; + double pathY = path[srcI].y; + effectivePath[dstI + 0] = pathX; + effectivePath[dstI + 1] = pathY; + if (pathX < boundsX1) + boundsX1 = pathX; + if (pathX > boundsX2) + boundsX2 = pathX; + if (pathY < boundsY1) + boundsY1 = pathY; + if (pathY > boundsY2) + boundsY2 = pathY; + } + effectivePath[effectivePath.length - 2] = pos2.x; + effectivePath[effectivePath.length - 1] = pos2.y; + } + + bounds.x = boundsX1; + bounds.y = boundsY1; + bounds.width = boundsX2 - boundsX1; + bounds.height = boundsY2 - boundsY1; + } + + /** + * Returns the bounds of this wire, excluding line width (and line joins, if the line join is {@link SWT#JOIN_MITER}) + * + * @author Daniel Kirschten + */ + public Rectangle getBounds() + { + return new Rectangle(bounds.x, bounds.y, bounds.width, bounds.height); + } + + /** + * Render this wire to the given gc, in absoulute coordinates. + * + * @author Daniel Kirschten + */ + public void render(GeneralGC gc) + { + ColorDefinition wireColor = BitVectorFormatter.formatAsColor(end); + if (wireColor != null) + gc.setForeground(ColorManager.current().toColor(wireColor)); + gc.drawPolyline(effectivePath); + } + + /** + * The user-defined path between {@link #pin1} and {@link #pin2}. Note that this is not neccessarily equal to the effective path drawn + * in {@link #render(GeneralGC)}.
+ * Special cases: null means "choose an interpolation as fits", and an empty array means "direct connection without any + * interpolation". + * + * @author Daniel Kirschten + */ + public Point[] getPath() + { + return path == null ? null : path.clone(); + } + + // logic model binding + + /** + * Binds this {@link GUIWire} to the given {@link ReadEnd}: The color of this {@link GUIWire} will now depend on the state of the given + * {@link ReadEnd}, and further changes of the given {@link ReadEnd} will result in readrawListeners being called.
+ * The argument can be null, in which case the old binding is stopped. + * + * @author Daniel Kirschten + */ + public void setLogicModelBinding(ReadEnd end) + { + if (this.end != null) + this.end.deregisterObserver(logicObs); + this.end = end; + if (end != null) + end.registerObserver(logicObs); + } + + /** + * Returns whether this {@link GUIWire} has a logic model binding or not. + * + * @author Daniel Kirschten + */ + public boolean hasLogicModelBinding() + { + return end != null; + } + + /** + * If this {@link GUIWire} has a logic model binding, delegates to {@link Wire#forceValues(BitVector)} for the {@link Wire} + * corresponding to this {@link GUIWire}. + * + * @author Daniel Kirschten + */ + public void forceWireValues(BitVector values) + { + end.getWire().forceValues(values); + } + + /** + * If this {@link GUIWire} has a logic model binding, delegates to {@link ReadEnd#getValues()} for the {@link ReadEnd} corresponding to + * this {@link GUIWire}. + * + * @author Daniel Kirschten + */ + public BitVector getWireValues() + { + return end.getValues(); + } + + // listeners + + // @formatter:off + public void addRedrawListener (Runnable listener) {redrawListeners .add (listener);} + + public void removeRedrawListener(Runnable listener) {redrawListeners .remove(listener);} + + private void callRedrawListeners() {redrawListeners.forEach(l -> l.run());} + + public void addPathChangedListener(PathChangedListener l) { pathChangedListeners.add(l); } + + public void removePathChangedListener(PathChangedListener l) { pathChangedListeners.remove(l); } + + public void callPathChangedListeners(int diff) { pathChangedListeners.forEach(l -> l.pathChanged(this, diff)); } + + @FunctionalInterface + public static interface PathChangedListener + { + /** + * Called whenever the {@link Wire}'s path changes + * + * @param wire The wire which had its path changed + * @param diff The length difference between before and after the path change. + */ + public void pathChanged(GUIWire wire, int diff); + } + // @formatter:on + + @Override + public String toString() + { + return "GUIWire [" + pin1 + "---" + pin2 + ", value=" + (end == null ? "null" : end.getValues()) + "]"; + } + + public void setPath(Point[] path) + { + int diff = (path == null ? 0 : path.length) - (this.path == null ? 0 : this.path.length); + this.path = path == null ? null : path.clone(); + recalculateEffectivePath(); + callPathChangedListeners(diff); + callRedrawListeners(); + } + + public void setPathPoint(Point p, int index) + { + path[index] = p; + recalculateEffectivePath(); + callPathChangedListeners(0); + callRedrawListeners(); + } + + public void insertPathPoint(Point p, int index) + { + Point[] path = getPath(); + if (path == null) + setPath(new Point[] { p }); + else + { + Point[] newPath = new Point[path.length + 1]; + System.arraycopy(path, 0, newPath, 0, index); + if (index < path.length) + System.arraycopy(path, index, newPath, index + 1, path.length - index); + newPath[index] = p; + setPath(newPath); + } + } + + public void removePathPoint(int index) + { + Point[] path = getPath(); + Point[] newPath = new Point[path.length - 1]; + System.arraycopy(path, 0, newPath, 0, index); + if (index < path.length - 1) + System.arraycopy(path, index + 1, newPath, index, path.length - index - 1); + setPath(newPath); + } + + /** + * @throws IndexOutOfBoundsException + */ + public Point getPathPoint(int index) + { + return path[index]; + } + + public int getPathLength() + { + return path.length; + } + + public double[] getEffectivePath() + { + return effectivePath.clone(); + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/model/wires/MovablePin.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/model/wires/MovablePin.java new file mode 100644 index 00000000..06f4de2b --- /dev/null +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/model/wires/MovablePin.java @@ -0,0 +1,22 @@ +package net.mograsim.logic.model.model.wires; + +import net.mograsim.logic.model.model.components.GUIComponent; + +/** + * Exactly like {@link Pin}, but {@link #setRelPos(double, double) setRelPos(...)} is public. + * + * @author Daniel Kirschten + */ +public class MovablePin extends Pin +{ + public MovablePin(GUIComponent component, String name, int logicWidth, double relX, double relY) + { + super(component, name, logicWidth, relX, relY); + } + + @Override + public void setRelPos(double relX, double relY) + { + super.setRelPos(relX, relY); + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/model/wires/Pin.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/model/wires/Pin.java new file mode 100644 index 00000000..794914eb --- /dev/null +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/model/wires/Pin.java @@ -0,0 +1,139 @@ +package net.mograsim.logic.model.model.wires; + +import java.util.ArrayList; +import java.util.List; +import java.util.function.Consumer; + +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.mograsim.logic.model.model.components.GUIComponent; + +/** + * A connection interface between a GUIComponent and the rest of a ViewModel. Pins usually are created by {@link GUIComponent}s themselves. + *
+ * A pin has a name identifying it. Pin names are unique for a {@link GUIComponent}: Every pin of a {@link GUIComponent} has a different + * name, but different {@link GUIComponent}s can have pins with the same name. + * + * @author Daniel Kirschten + */ +public class Pin +{ + /** + * The {@link GUIComponent} this pin belongs to + */ + public final GUIComponent component; + /** + * The name identifying this pin. Is unique for a {@link GUIComponent}. + */ + public final String name; + /** + * The logical width of this pin. Denotes how many bits this pin consists of. + */ + public final int logicWidth; + + /** + * The X position of this pin, relative to its component's location. + */ + protected double relX; + /** + * The Y position of this pin, relative to its component's location. + */ + protected double relY; + + private final List> pinMovedListeners; + private final List redrawListeners; + + // creation and destruction + + /** + * Creates a new pin. Usually it is not needed to call this constructor manually, as {@link GUIComponent}s create their pins themselves. + * + * @author Daniel Kirschten + */ + public Pin(GUIComponent component, String name, int logicWidth, double relX, double relY) + { + this.component = component; + this.name = name; + this.logicWidth = logicWidth; + this.relX = relX; + this.relY = relY; + + this.pinMovedListeners = new ArrayList<>(); + this.redrawListeners = new ArrayList<>(); + + component.addComponentMovedListener(c -> callPinMovedListeners()); + } + + // "graphical" operations + + /** + * Returns the X position of this pin relative to the position of its component. + * + * @author Daniel Kirschten + */ + public double getRelX() + { + return relX; + } + + /** + * Returns the Y position of this pin relative to the position of its component. + * + * @author Daniel Kirschten + */ + public double getRelY() + { + return relY; + } + + /** + * Returns the position of this pin relative to the position of its component. + * + * @author Daniel Kirschten + */ + public Point getRelPos() + { + return new Point(relX, relY); + } + + /** + * Returns the absolute position of this pin. + * + * @author Daniel Kirschten + */ + public Point getPos() + { + return new Point(relX + component.getPosX(), relY + component.getPosY()); + } + + /** + * Sets the position of this pin relative to the position of its component. + * + * @author Daniel Kirschten + */ + protected void setRelPos(double relX, double relY) + { + this.relX = relX; + this.relY = relY; + callPinMovedListeners(); + callRedrawListeners(); + } + + // listeners + + // @formatter:off + public void addPinMovedListener (Consumer listener){pinMovedListeners.add (listener);} + public void addRedrawListener (Runnable listener){redrawListeners .add (listener);} + + public void removePinMovedListener(Consumer listener){pinMovedListeners.remove(listener);} + public void removeRedrawListener (Runnable listener){redrawListeners .remove(listener);} + + private void callPinMovedListeners() {pinMovedListeners.forEach(l -> l.accept(this));} + private void callRedrawListeners () {redrawListeners .forEach(l -> l.run ( ));} + // @formatter:on + + @Override + public String toString() + { + return "Pin [" + name + ", point=" + getPos() + "]"; + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/model/wires/WireCrossPoint.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/model/wires/WireCrossPoint.java new file mode 100644 index 00000000..52db2777 --- /dev/null +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/model/wires/WireCrossPoint.java @@ -0,0 +1,128 @@ +package net.mograsim.logic.model.model.wires; + +import com.google.gson.JsonElement; +import com.google.gson.JsonPrimitive; + +import net.haspamelodica.swt.helper.gcs.GeneralGC; +import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; +import net.mograsim.logic.core.LogicObserver; +import net.mograsim.logic.core.types.BitVectorFormatter; +import net.mograsim.logic.core.wires.Wire.ReadEnd; +import net.mograsim.logic.model.model.ViewModelModifiable; +import net.mograsim.logic.model.model.components.GUIComponent; +import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator; +import net.mograsim.preferences.ColorDefinition; +import net.mograsim.preferences.ColorManager; + +/** + * A {@link GUIComponent} with only one pin. Is used to create wires connecting more than two pins.
+ * Example: There are three pins P1, P2, P3 that need to be connected. Solution: Create a + * WireCrossPoint (WCP) and create the GUIWires P1-WCP, P2-WCP, + * P3-WCP.
+ * Cross points are drawn as circles. The pin of cross points is in the center of this circle. + * + * @author Daniel Kirschten + */ +public class WireCrossPoint extends GUIComponent +{ + private static final int CIRCLE_RADIUS = 1; + private static final int CIRCLE_DIAM = CIRCLE_RADIUS * 2; + + /** + * The (single) pin of this cross point. + */ + private final Pin pin; + + /** + * A {@link LogicObserver} calling {@link #requestRedraw()}. + */ + private final LogicObserver logicObs; + /** + * The {@link ReadEnd} currently bound to this cross point. + */ + private ReadEnd end; + + // creation and destruction + + public WireCrossPoint(ViewModelModifiable model, int logicWidth) + { + this(model, logicWidth, null); + } + + public WireCrossPoint(ViewModelModifiable model, int logicWidth, String name) + { + super(model, name); + logicObs = (i) -> requestRedraw(); + + setSize(CIRCLE_DIAM, CIRCLE_DIAM); + addPin(this.pin = new Pin(this, "", logicWidth, CIRCLE_RADIUS, CIRCLE_RADIUS)); + } + + // pins + + public Pin getPin() + { + return pin; + } + + // "graphical" operations + + /** + * Moves the center (and therefore the pin) of this {@link WireCrossPoint} to the given location. + * + * @author Daniel Kirschten + */ + public void moveCenterTo(double x, double y) + { + moveTo(x - CIRCLE_RADIUS, y - CIRCLE_RADIUS); + } + + @Override + public void render(GeneralGC gc, Rectangle visibleRegion) + { + ColorDefinition wireColor = BitVectorFormatter.formatAsColor(end); + if (wireColor != null) + gc.setBackground(ColorManager.current().toColor(wireColor)); + gc.fillOval(getPosX(), getPosY(), CIRCLE_DIAM, CIRCLE_DIAM); + } + + // logic model binding + + /** + * Binds this {@link WireCrossPoint} to the given {@link ReadEnd}: The color of this {@link WireCrossPoint} will now depend on the state + * of the given {@link ReadEnd}, and further changes of the given {@link ReadEnd} will result in readrawListeners being called.
+ * The argument can be null, in which case the old binding is stopped. + * + * @author Daniel Kirschten + */ + public void setLogicModelBinding(ReadEnd end) + { + if (this.end != null) + this.end.deregisterObserver(logicObs); + this.end = end; + if (end != null) + end.registerObserver(logicObs); + } + + /** + * Returns whether this {@link WireCrossPoint} has a logic model binding or not. + */ + public boolean hasLogicModelBinding() + { + return end != null; + } + + // serializing + + @Override + public JsonElement getParams() + { + return new JsonPrimitive(pin.logicWidth); + } + + static + { + IndirectGUIComponentCreator.setComponentSupplier(WireCrossPoint.class.getCanonicalName(), + (m, p, n) -> new WireCrossPoint(m, p.getAsInt(), n)); + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/modeladapter/LogicModelParameters.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/modeladapter/LogicModelParameters.java new file mode 100644 index 00000000..1d83c5f8 --- /dev/null +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/modeladapter/LogicModelParameters.java @@ -0,0 +1,7 @@ +package net.mograsim.logic.model.modeladapter; + +public class LogicModelParameters +{ + public int wireTravelTime; + public int gateProcessTime; +} \ No newline at end of file diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/modeladapter/ViewLogicModelAdapter.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/modeladapter/ViewLogicModelAdapter.java new file mode 100644 index 00000000..16b52ee1 --- /dev/null +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/modeladapter/ViewLogicModelAdapter.java @@ -0,0 +1,157 @@ +package net.mograsim.logic.model.modeladapter; + +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Set; +import java.util.function.Function; +import java.util.stream.Collectors; + +import net.mograsim.logic.core.timeline.Timeline; +import net.mograsim.logic.core.wires.Wire; +import net.mograsim.logic.core.wires.Wire.ReadEnd; +import net.mograsim.logic.model.model.ViewModel; +import net.mograsim.logic.model.model.components.GUIComponent; +import net.mograsim.logic.model.model.components.submodels.SubmodelComponent; +import net.mograsim.logic.model.model.components.submodels.SubmodelInterface; +import net.mograsim.logic.model.model.wires.GUIWire; +import net.mograsim.logic.model.model.wires.Pin; +import net.mograsim.logic.model.model.wires.WireCrossPoint; +import net.mograsim.logic.model.modeladapter.componentadapters.ComponentAdapter; + +public class ViewLogicModelAdapter +{ + private final static Map, ComponentAdapter> componentAdapters = new HashMap<>(); + + public static void addComponentAdapter(ComponentAdapter componentAdapter) + { + componentAdapters.put(componentAdapter.getSupportedClass(), componentAdapter); + } + + public static Timeline convert(ViewModel viewModel, LogicModelParameters params) + { + // TODO replace Timeline with LogicModel as soon as it exists + Timeline timeline = new Timeline(10); + + convert(viewModel, params, timeline, Map.of()); + + return timeline; + } + + private static void convert(ViewModel viewModel, LogicModelParameters params, Timeline timeline, Map externalWires) + { + Map logicWiresPerPin = convertWires(getAllPins(viewModel), viewModel.getWires(), externalWires, params, timeline); + Map logicWiresPerPinUnmodifiable = Collections.unmodifiableMap(logicWiresPerPin); + + for (GUIComponent guiComp : viewModel.getComponentsByName().values()) + { + if (guiComp instanceof SubmodelComponent) + { + SubmodelComponent guiCompCasted = (SubmodelComponent) guiComp; + Map supermodelPins = guiCompCasted.getSupermodelPins(); + Map externalWiresForSubmodel = supermodelPins.entrySet().stream() + .collect(Collectors.toMap(e -> guiCompCasted.getSubmodelPin(e.getKey()), e -> logicWiresPerPin.get(e.getValue()))); + convert(guiCompCasted.submodel, params, timeline, externalWiresForSubmodel); + } else if (guiComp instanceof WireCrossPoint) + { + WireCrossPoint guiCompCasted = (WireCrossPoint) guiComp; + guiCompCasted.setLogicModelBinding(logicWiresPerPin.get(guiCompCasted.getPin()).createReadOnlyEnd()); + } else if (!(guiComp instanceof SubmodelInterface))// nothing to do for SubmodelInterfaces + createAndLinkComponent(timeline, params, guiComp, logicWiresPerPinUnmodifiable, componentAdapters.get(guiComp.getClass())); + } + } + + private static Set getAllPins(ViewModel viewModel) + { + return viewModel.getComponentsByName().values().stream().flatMap(component -> component.getPins().values().stream()) + .collect(Collectors.toSet()); + } + + private static Map convertWires(Set allPins, List wires, Map externalWires, + LogicModelParameters params, Timeline timeline) + { + Map> connectedPinGroups = getConnectedPinGroups(allPins, wires); + Map logicWiresPerPin = createLogicWires(params, timeline, connectedPinGroups, externalWires); + setGUIWiresLogicModelBinding(wires, logicWiresPerPin); + return logicWiresPerPin; + } + + private static Map createLogicWires(LogicModelParameters params, Timeline timeline, Map> connectedPinGroups, + Map externalWires) + { + Map logicWiresPerPin = new HashMap<>(); + Map, Wire> logicWiresPerPinGroup = new HashMap<>(); + for (Entry> e : connectedPinGroups.entrySet()) + logicWiresPerPin.put(e.getKey(), logicWiresPerPinGroup.computeIfAbsent(e.getValue(), set -> + { + Wire externalWire = null; + for (Pin p : set) + { + Wire externalWireCandidate = externalWires.get(p); + if (externalWireCandidate != null) + if (externalWire == null) + externalWire = externalWireCandidate; + else if (externalWire.length == externalWireCandidate.length) + Wire.fuse(externalWire, externalWireCandidate); + else + throw new IllegalArgumentException( + "Two pins to external wires with different logicWidths can't be connected directly"); + } + return externalWire == null ? new Wire(timeline, e.getKey().logicWidth, params.wireTravelTime) : externalWire; + })); + return logicWiresPerPin; + } + + private static void setGUIWiresLogicModelBinding(List wires, Map logicWiresPerPin) + { + Map guiWireSharedReadEnd = logicWiresPerPin.values().stream().distinct() + .collect(Collectors.toMap(Function.identity(), Wire::createReadOnlyEnd)); + for (GUIWire guiWire : wires) + guiWire.setLogicModelBinding(guiWireSharedReadEnd.get(logicWiresPerPin.get(guiWire.getPin1()))); + } + + private static Map> getConnectedPinGroups(Set allPins, List wires) + { + Map> connectedPinsPerPin = new HashMap<>(); + + for (Pin p : allPins) + { + HashSet connectedPins = new HashSet<>(); + connectedPins.add(p); + connectedPinsPerPin.put(p, connectedPins); + } + + wires.forEach(wire -> + { + Pin pin1 = wire.getPin1(); + Pin pin2 = wire.getPin2(); + + Set pin1ConnectedPins = connectedPinsPerPin.get(pin1); + Set pin2ConnectedPins = connectedPinsPerPin.get(pin2); + + pin1ConnectedPins.addAll(pin2ConnectedPins); + pin1ConnectedPins.add(pin1); + pin1ConnectedPins.add(pin2); + + pin2ConnectedPins.forEach(pin -> connectedPinsPerPin.put(pin, pin1ConnectedPins)); + }); + return connectedPinsPerPin; + } + + @SuppressWarnings("unchecked") + private static void createAndLinkComponent(Timeline timeline, LogicModelParameters params, + GUIComponent guiComponent, Map logicWiresPerPin, ComponentAdapter adapter) + { + if (adapter == null) + throw new IllegalArgumentException("Unknown component class: " + guiComponent.getClass()); + adapter.createAndLinkComponent(timeline, params, (G) guiComponent, logicWiresPerPin); + } + + private ViewLogicModelAdapter() + { + throw new UnsupportedOperationException("No ViewLogicModelConverter instances"); + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/modeladapter/componentadapters/BitDisplayAdapter.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/modeladapter/componentadapters/BitDisplayAdapter.java new file mode 100644 index 00000000..7e0a063b --- /dev/null +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/modeladapter/componentadapters/BitDisplayAdapter.java @@ -0,0 +1,29 @@ +package net.mograsim.logic.model.modeladapter.componentadapters; + +import java.util.Map; + +import net.mograsim.logic.core.components.BitDisplay; +import net.mograsim.logic.core.timeline.Timeline; +import net.mograsim.logic.core.wires.Wire; +import net.mograsim.logic.core.wires.Wire.ReadEnd; +import net.mograsim.logic.model.model.components.atomic.GUIBitDisplay; +import net.mograsim.logic.model.model.wires.Pin; +import net.mograsim.logic.model.modeladapter.LogicModelParameters; + +public class BitDisplayAdapter implements ComponentAdapter +{ + @Override + public Class getSupportedClass() + { + return GUIBitDisplay.class; + } + + @Override + public void createAndLinkComponent(Timeline timeline, LogicModelParameters params, GUIBitDisplay guiComponent, + Map logicWiresPerPin) + { + ReadEnd end = logicWiresPerPin.get(guiComponent.getInputPin()).createReadOnlyEnd(); + BitDisplay bitDisplay = new BitDisplay(timeline, end); + guiComponent.setLogicModelBinding(bitDisplay); + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/modeladapter/componentadapters/ComponentAdapter.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/modeladapter/componentadapters/ComponentAdapter.java new file mode 100644 index 00000000..b7780b3c --- /dev/null +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/modeladapter/componentadapters/ComponentAdapter.java @@ -0,0 +1,16 @@ +package net.mograsim.logic.model.modeladapter.componentadapters; + +import java.util.Map; + +import net.mograsim.logic.core.timeline.Timeline; +import net.mograsim.logic.core.wires.Wire; +import net.mograsim.logic.model.model.components.GUIComponent; +import net.mograsim.logic.model.model.wires.Pin; +import net.mograsim.logic.model.modeladapter.LogicModelParameters; + +public interface ComponentAdapter +{ + public Class getSupportedClass(); + + public void createAndLinkComponent(Timeline timeline, LogicModelParameters params, G guiComponent, Map logicWiresPerPin); +} \ No newline at end of file diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/modeladapter/componentadapters/ManualSwitchAdapter.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/modeladapter/componentadapters/ManualSwitchAdapter.java new file mode 100644 index 00000000..7ba8544a --- /dev/null +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/modeladapter/componentadapters/ManualSwitchAdapter.java @@ -0,0 +1,29 @@ +package net.mograsim.logic.model.modeladapter.componentadapters; + +import java.util.Map; + +import net.mograsim.logic.core.components.ManualSwitch; +import net.mograsim.logic.core.timeline.Timeline; +import net.mograsim.logic.core.wires.Wire; +import net.mograsim.logic.core.wires.Wire.ReadWriteEnd; +import net.mograsim.logic.model.model.components.atomic.GUIManualSwitch; +import net.mograsim.logic.model.model.wires.Pin; +import net.mograsim.logic.model.modeladapter.LogicModelParameters; + +public class ManualSwitchAdapter implements ComponentAdapter +{ + @Override + public Class getSupportedClass() + { + return GUIManualSwitch.class; + } + + @Override + public void createAndLinkComponent(Timeline timeline, LogicModelParameters params, GUIManualSwitch guiComponent, + Map logicWiresPerPin) + { + ReadWriteEnd end = logicWiresPerPin.get(guiComponent.getOutputPin()).createReadWriteEnd(); + ManualSwitch manualSwitch = new ManualSwitch(timeline, end); + guiComponent.setLogicModelBinding(manualSwitch, end); + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/modeladapter/componentadapters/NoLogicAdapter.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/modeladapter/componentadapters/NoLogicAdapter.java new file mode 100644 index 00000000..a084ba8e --- /dev/null +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/modeladapter/componentadapters/NoLogicAdapter.java @@ -0,0 +1,36 @@ +package net.mograsim.logic.model.modeladapter.componentadapters; + +import java.util.Map; + +import net.mograsim.logic.core.timeline.Timeline; +import net.mograsim.logic.core.wires.Wire; +import net.mograsim.logic.model.model.components.GUIComponent; +import net.mograsim.logic.model.model.wires.Pin; +import net.mograsim.logic.model.modeladapter.LogicModelParameters; + +/** + * For GUIComponents that do not have any simulation logic behaviour + * + * @author Christian Femers + */ +public class NoLogicAdapter implements ComponentAdapter +{ + private final Class guiComponentClass; + + public NoLogicAdapter(Class guiComponentClass) + { + this.guiComponentClass = guiComponentClass; + } + + @Override + public Class getSupportedClass() + { + return guiComponentClass; + } + + @Override + public void createAndLinkComponent(Timeline timeline, LogicModelParameters params, T guiComponent, Map logicWiresPerPin) + { + // do nothing + } +} diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/modeladapter/componentadapters/SimpleGateAdapter.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/modeladapter/componentadapters/SimpleGateAdapter.java new file mode 100644 index 00000000..2a800461 --- /dev/null +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/modeladapter/componentadapters/SimpleGateAdapter.java @@ -0,0 +1,50 @@ +package net.mograsim.logic.model.modeladapter.componentadapters; + +import java.util.Map; + +import net.mograsim.logic.core.components.Component; +import net.mograsim.logic.core.timeline.Timeline; +import net.mograsim.logic.core.wires.Wire; +import net.mograsim.logic.core.wires.Wire.ReadEnd; +import net.mograsim.logic.core.wires.Wire.ReadWriteEnd; +import net.mograsim.logic.model.model.components.atomic.SimpleRectangularGUIGate; +import net.mograsim.logic.model.model.wires.Pin; +import net.mograsim.logic.model.modeladapter.LogicModelParameters; + +public class SimpleGateAdapter implements ComponentAdapter +{ + private final Class supportedClass; + private final ComponentConstructor constructor; + + public SimpleGateAdapter(Class supportedClass, ComponentConstructor constructor) + { + this.supportedClass = supportedClass; + this.constructor = constructor; + } + + @Override + public Class getSupportedClass() + { + return supportedClass; + } + + @Override + public void createAndLinkComponent(Timeline timeline, LogicModelParameters params, G guiComponent, Map logicWiresPerPin) + { + ReadWriteEnd out = logicWiresPerPin.get(guiComponent.getPin("Y")).createReadWriteEnd(); + + // TODO can we do this prettier? + int inputPinCount = guiComponent.getPins().size() - 1; + ReadEnd[] ins = new ReadEnd[inputPinCount]; + for (int i = 0; i < inputPinCount; i++) + ins[i] = logicWiresPerPin.get(guiComponent.getPin(String.valueOf((char) ('A' + i)))).createReadOnlyEnd(); + + constructor.newComponent(timeline, params.gateProcessTime, out, ins); + } + + public static interface ComponentConstructor + { + public Component newComponent(Timeline timeline, int processTime, ReadWriteEnd out, ReadEnd[] ins); + } + +} \ No newline at end of file diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/CodeSnippetSupplier.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/CodeSnippetSupplier.java new file mode 100644 index 00000000..f9f151b5 --- /dev/null +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/CodeSnippetSupplier.java @@ -0,0 +1,117 @@ +package net.mograsim.logic.model.serializing; + +import java.io.IOException; +import java.io.InputStream; +import java.util.HashMap; +import java.util.Map; + +import net.mograsim.logic.model.serializing.snippets.HighLevelStateHandler; +import net.mograsim.logic.model.serializing.snippets.Renderer; +import net.mograsim.logic.model.serializing.snippets.SnippetSupplier; +import net.mograsim.logic.model.serializing.snippets.highlevelstatehandlers.DefaultHighLevelStateHandler; +import net.mograsim.logic.model.serializing.snippets.outlinerenderers.DefaultOutlineRenderer; +import net.mograsim.logic.model.serializing.snippets.symbolrenderers.DefaultSymbolRenderer; +import net.mograsim.logic.model.util.JsonHandler; + +public class CodeSnippetSupplier +{ + // public static members + public static final CodeSnippetSupplier symbolRendererSupplier; + public static final CodeSnippetSupplier outlineRendererSupplier; + public static final CodeSnippetSupplier highLevelStateHandlerSupplier; + + static + { + symbolRendererSupplier = new CodeSnippetSupplier<>(SnippetSupplier.create(Void.class, DefaultSymbolRenderer::new)); + outlineRendererSupplier = new CodeSnippetSupplier<>(SnippetSupplier.create(Void.class, DefaultOutlineRenderer::new)); + highLevelStateHandlerSupplier = new CodeSnippetSupplier<>(SnippetSupplier.create(Void.class, DefaultHighLevelStateHandler::new)); + } + + // per-instance members + + private final Map standardSnippetIDClassNames = new HashMap<>(); + private final Map> snippetSuppliersForClassNames = new HashMap<>(); + private final SnippetSupplier defaultSnippetSupplier; + + private CodeSnippetSupplier(SnippetSupplier defaultSnippetSupplier) + { + this.defaultSnippetSupplier = defaultSnippetSupplier; + } + + public void addStandardSnippetID(String standardSnippetID, String associatedSnippetClassName) + { + standardSnippetIDClassNames.put(standardSnippetID, associatedSnippetClassName); + } + + public void setSnippetSupplier(String id, SnippetSupplier snippetSupplier) + { + snippetSuppliersForClassNames.put(id, snippetSupplier); + } + + // TODO report errors + public SnippetSupplier getSnippetSupplier(String id) + { + if (id != null) + { + String snippetClassName; + if (id.startsWith("class:")) + snippetClassName = id.substring(6); + else + snippetClassName = standardSnippetIDClassNames.get(id); + if (snippetClassName != null) + { + tryLoadSnippetClass(snippetClassName); + SnippetSupplier snippetSupplier = snippetSuppliersForClassNames.get(snippetClassName); + if (snippetSupplier != null) + return snippetSupplier; + } + System.err.println("Couldn't load snippet " + id + "; using default"); + } + return defaultSnippetSupplier; + } + + // static helpers + + static + { + try (InputStream s = IndirectGUIComponentCreator.class.getResourceAsStream("./standardSnippetIDMapping.json")) + { + if (s == null) + throw new IOException("Resource not found"); + SnippetIDClassNames tmp = JsonHandler.readJson(s, SnippetIDClassNames.class); + tmp.standardOutlineRendererSuppliers.forEach(outlineRendererSupplier::addStandardSnippetID); + tmp.standardSymbolRendererSuppliers.forEach(symbolRendererSupplier::addStandardSnippetID); + tmp.standardHighLevelStateHandlerSuppliers.forEach(highLevelStateHandlerSupplier::addStandardSnippetID); + } + catch (Exception e) + { + System.err.println("Failed to initialize standard snippet ID mapping: "); + e.printStackTrace(); + } + } + + private static class SnippetIDClassNames + { + public Map standardOutlineRendererSuppliers; + public Map standardSymbolRendererSuppliers; + public Map standardHighLevelStateHandlerSuppliers; + } + + private static void tryLoadSnippetClass(String snippetClassName) + { + tryInvokeStaticInitializer(snippetClassName, "Error getting snippet class: %s: %s\n"); + } + + public static void tryInvokeStaticInitializer(String className, String errorMessageFormat) + { + try + { + Class.forName(className, true, CodeSnippetSupplier.class.getClassLoader()); + } + catch (ClassNotFoundException e) + { + System.err.printf(errorMessageFormat, className, "ClassNotFoundException thrown: " + e.getMessage()); + } + } + +} \ No newline at end of file diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/DeserializedSubmodelComponent.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/DeserializedSubmodelComponent.java new file mode 100644 index 00000000..adf24338 --- /dev/null +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/DeserializedSubmodelComponent.java @@ -0,0 +1,87 @@ +package net.mograsim.logic.model.serializing; + +import java.util.Map; + +import net.haspamelodica.swt.helper.gcs.GeneralGC; +import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; +import net.mograsim.logic.model.model.ViewModelModifiable; +import net.mograsim.logic.model.model.components.submodels.SubmodelComponent; +import net.mograsim.logic.model.model.wires.MovablePin; +import net.mograsim.logic.model.model.wires.Pin; +import net.mograsim.logic.model.serializing.snippets.Renderer; + +public class DeserializedSubmodelComponent extends SubmodelComponent +{ + public Renderer outlineRenderer; + public Renderer symbolRenderer; + + public DeserializedSubmodelComponent(ViewModelModifiable model, String name) + { + super(model, name); + } + + @Override + protected void renderOutline(GeneralGC gc, Rectangle visibleRegion) + { + if (outlineRenderer != null) + outlineRenderer.render(gc, visibleRegion); + } + + @Override + protected void renderSymbol(GeneralGC gc, Rectangle visibleRegion) + { + if (symbolRenderer != null) + symbolRenderer.render(gc, visibleRegion); + } + + public void setOutlineRenderer(Renderer outlineRenderer) + { + this.outlineRenderer = outlineRenderer; + } + + public void setSymbolRenderer(Renderer symbolRenderer) + { + this.symbolRenderer = symbolRenderer; + } + + public ViewModelModifiable getSubmodelModifiable() + { + return submodelModifiable; + } + + @Override + public void setSubmodelScale(double submodelScale) + { + super.setSubmodelScale(submodelScale); + } + + @Override + public void setSize(double width, double height) + { + super.setSize(width, height); + } + + @Override + public Pin addSubmodelInterface(MovablePin supermodelPin) + { + return super.addSubmodelInterface(supermodelPin); + } + + @Override + public double getSubmodelScale() + { + return super.getSubmodelScale(); + } + + @Override + public Map getSubmodelMovablePins() + { + return super.getSubmodelMovablePins(); + } + + @Override + public void removeSubmodelInterface(String name) + { + super.removeSubmodelInterface(name); + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/IndirectGUIComponentCreator.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/IndirectGUIComponentCreator.java new file mode 100644 index 00000000..1c6a4846 --- /dev/null +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/IndirectGUIComponentCreator.java @@ -0,0 +1,113 @@ +package net.mograsim.logic.model.serializing; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import com.google.gson.JsonElement; +import com.google.gson.JsonNull; + +import net.mograsim.logic.model.model.ViewModelModifiable; +import net.mograsim.logic.model.model.components.GUIComponent; +import net.mograsim.logic.model.util.JsonHandler; + +public class IndirectGUIComponentCreator +{ + private static final Map standardComponentIDs = new HashMap<>(); + + private static final Map componentSuppliers = new HashMap<>(); + + static + { + try (InputStream s = IndirectGUIComponentCreator.class.getResourceAsStream("./standardComponentIDMapping.json")) + { + if (s == null) + throw new IOException("Resource not found"); + Map tmp = JsonHandler.readJson(s, Map.class); + // don't use putAll to apply sanity checks + tmp.forEach((st, id) -> + { + try + { + addStandardComponentID(st, id); + } + catch (IllegalArgumentException e) + { + System.err.println("Component ID mapping contained illegal entry: " + e.getMessage()); + } + }); + } + catch (IOException e) + { + System.err.println("Failed to initialize standard snippet ID mapping: " + e.getMessage()); + } + } + + public static void addStandardComponentID(String standardComponentID, String associatedComponentID) + { + if (!associatedComponentID.startsWith("file:") && !associatedComponentID.startsWith("class:")) + throw new IllegalArgumentException("Unrecognized component ID format: " + associatedComponentID); + standardComponentIDs.put(standardComponentID, associatedComponentID); + } + + public static Collection getStandardComponentIDs() + { + return standardComponentIDs.keySet(); + } + + public static void setComponentSupplier(String className, ComponentSupplier componentSupplier) + { + componentSuppliers.put(className, componentSupplier); + } + + public static GUIComponent createComponent(ViewModelModifiable model, String id) + { + return createComponent(model, id, (String) null); + } + + public static GUIComponent createComponent(ViewModelModifiable model, String id, String name) + { + return createComponent(model, id, JsonNull.INSTANCE, name); + } + + public static GUIComponent createComponent(ViewModelModifiable model, String id, JsonElement params) + { + return createComponent(model, id, params, null); + } + + public static GUIComponent createComponent(ViewModelModifiable model, String id, JsonElement params, String name) + { + if (id != null) + { + String resolvedID; + if (id.startsWith("class:") || id.startsWith("file:")) + resolvedID = id; + else + resolvedID = standardComponentIDs.get(id); + if (resolvedID.startsWith("class:")) + { + String className = resolvedID.substring(6); + tryLoadComponentClass(className); + ComponentSupplier componentSupplier = componentSuppliers.get(className); + if (componentSupplier != null) + return componentSupplier.create(model, params, name); + } else + // we know id has to start with "file:" here + // because standardComponentIDs only contains strings starting with "class:" or "file:" + return SubmodelComponentDeserializer.create(model, resolvedID.substring(5), name); + } + throw new RuntimeException("Could not get component supplier for ID " + id); + } + + private static void tryLoadComponentClass(String componentClassName) + { + CodeSnippetSupplier.tryInvokeStaticInitializer(componentClassName, "Error loading component class %s: %s\n"); + } + + public static interface ComponentSupplier + { + public GUIComponent create(ViewModelModifiable model, JsonElement params, String name); + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/SubmodelComponentDeserializer.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/SubmodelComponentDeserializer.java new file mode 100644 index 00000000..a5e8793b --- /dev/null +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/SubmodelComponentDeserializer.java @@ -0,0 +1,102 @@ +package net.mograsim.logic.model.serializing; + +import java.io.IOException; +import java.util.Map; + +import net.mograsim.logic.model.model.ViewModelModifiable; +import net.mograsim.logic.model.model.components.GUIComponent; +import net.mograsim.logic.model.model.components.submodels.SubmodelComponent; +import net.mograsim.logic.model.model.wires.GUIWire; +import net.mograsim.logic.model.model.wires.MovablePin; +import net.mograsim.logic.model.serializing.SubmodelComponentParams.InterfacePinParams; +import net.mograsim.logic.model.serializing.SubmodelComponentParams.SubmodelParameters; +import net.mograsim.logic.model.serializing.SubmodelComponentParams.SubmodelParameters.InnerComponentParams; +import net.mograsim.logic.model.serializing.SubmodelComponentParams.SubmodelParameters.InnerWireParams; + +/** + * Creates {@link SubmodelComponent}s from {@link SubmodelComponentParams} + */ +public final class SubmodelComponentDeserializer +{ + /** + * Like {@link #create(ViewModelModifiable, String, String)}, but using the default name. + */ + public static SubmodelComponent create(ViewModelModifiable model, String path) + { + return create(model, path, null); + } + + /** + * Creates a {@link SubmodelComponent} from the {@link SubmodelComponentParams} located at the given path as a JSON file. The returned + * SubmodelComponent is a {@link DeserializedSubmodelComponent}. + * + * @param path The path of the file describing the {@link SubmodelComponentParams}, which define the new {@link SubmodelComponent} + * @return A new SubmodelComponent, as described in the file located at the given path + */ + public static SubmodelComponent create(ViewModelModifiable model, String path, String name) + { + try + { + SubmodelComponentParams params = SubmodelComponentParams.readJson(path); + SubmodelComponent ret = create(model, params, name); + return ret; + } + catch (IOException e) + { + throw new RuntimeException("Failed to construct GUICustomComponent. Parameters were not found.", e); + } + } + + /** + * Creates a {@link SubmodelComponent} from the specified {@link SubmodelComponentParams}. The returned SubmodelComponent is a + * {@link DeserializedSubmodelComponent}. + * + * @param params The parameters describing the {@link SubmodelComponent} + * + * @return A new SubmodelComponent, as described by the {@link SubmodelComponentParams} + */ + public static SubmodelComponent create(ViewModelModifiable model, SubmodelComponentParams params, String name) + { + DeserializedSubmodelComponent comp = createSubmodelComponent(model, params, name); + initSubmodel(comp, params.submodel); + return comp; + } + + private static DeserializedSubmodelComponent createSubmodelComponent(ViewModelModifiable model, SubmodelComponentParams params, + String name) + { + DeserializedSubmodelComponent comp = new DeserializedSubmodelComponent(model, name); + comp.setSubmodelScale(params.submodel.innerScale); + comp.setOutlineRenderer(CodeSnippetSupplier.outlineRendererSupplier.getSnippetSupplier(params.outlineRendererSnippetID).create(comp, + params.outlineRendererParams)); + comp.setSymbolRenderer(CodeSnippetSupplier.symbolRendererSupplier.getSnippetSupplier(params.symbolRendererSnippetID).create(comp, + params.symbolRendererParams)); + // TODO high level states + comp.setSize(params.width, params.height); + for (InterfacePinParams iPinParams : params.interfacePins) + comp.addSubmodelInterface( + new MovablePin(comp, iPinParams.name, iPinParams.logicWidth, iPinParams.location.x, iPinParams.location.y)); + return comp; + } + + @SuppressWarnings("unused") // GUIWire being created + private static void initSubmodel(DeserializedSubmodelComponent comp, SubmodelParameters params) + { + ViewModelModifiable submodelModifiable = comp.getSubmodelModifiable(); + Map componentsByName = submodelModifiable.getComponentsByName(); + GUIComponent[] components = new GUIComponent[params.subComps.length]; + for (int i = 0; i < components.length; i++) + { + InnerComponentParams cParams = params.subComps[i]; + components[i] = IndirectGUIComponentCreator.createComponent(submodelModifiable, cParams.id, cParams.params, cParams.name); + components[i].moveTo(cParams.pos.x, cParams.pos.y); + } + + for (int i = 0; i < params.innerWires.length; i++) + { + InnerWireParams innerWire = params.innerWires[i]; + new GUIWire(submodelModifiable, componentsByName.get(innerWire.pin1.compName).getPin(innerWire.pin1.pinName), + componentsByName.get(innerWire.pin2.compName).getPin(innerWire.pin2.pinName), innerWire.path); + } + } +} diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/SubmodelComponentParams.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/SubmodelComponentParams.java new file mode 100644 index 00000000..afce226c --- /dev/null +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/SubmodelComponentParams.java @@ -0,0 +1,83 @@ +package net.mograsim.logic.model.serializing; + +import java.io.IOException; + +import com.google.gson.JsonElement; + +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.mograsim.logic.model.model.components.submodels.SubmodelComponent; +import net.mograsim.logic.model.util.JsonHandler; + +/** + * This class contains all the information necessary to create a new {@link SubmodelComponent} + */ +public class SubmodelComponentParams +{ + // basic stuff + public double width, height; + public InterfacePinParams[] interfacePins; + public SubmodelParameters submodel; + + // functionality that needs to be expressed in Java code + public String outlineRendererSnippetID; + public JsonElement outlineRendererParams; + + public String symbolRendererSnippetID; + public JsonElement symbolRendererParams; + + public static class InterfacePinParams + { + public Point location; + public String name; + public int logicWidth; + } + + public static class SubmodelParameters + { + public double innerScale; + public InnerComponentParams[] subComps; + public InnerWireParams[] innerWires; + + public static class InnerComponentParams + { + public Point pos; + public String id; + public String name; + public JsonElement params; + } + + public static class InnerWireParams + { + public InnerPinParams pin1, pin2; + public Point[] path; + + public static class InnerPinParams + { + public String compName; + public String pinName; + } + } + } + + public static SubmodelComponentParams readJson(String path) throws IOException + { + return JsonHandler.readJson(path, SubmodelComponentParams.class); + } + + /** + * Writes this {@link SubmodelComponentParams} object into a file in json format. The correct file extension is important! Check + * {@link SubmodelComponentParams}.fileExtension + */ + public void writeJson(String path) + { + try + { + JsonHandler.writeJson(this, path); + } + catch (IOException e) + { + System.err.println("Failed to write SubComponentParams to file"); + e.printStackTrace(); + } + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/snippets/HighLevelStateHandler.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/snippets/HighLevelStateHandler.java new file mode 100644 index 00000000..f20b6642 --- /dev/null +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/snippets/HighLevelStateHandler.java @@ -0,0 +1,34 @@ +package net.mograsim.logic.model.serializing.snippets; + +import net.mograsim.logic.model.model.components.GUIComponent; + +public interface HighLevelStateHandler +{ + /** + * Sets the given high-level state to the given value.
+ * A high level state ID consists of parts separated by dots ('.').
+ * The last part (the part after the last dot) is called "atomic high level state ID". The parts before that part are called + * "subcomponent ID"s.
+ * If there is no dot in a high level state ID, the whole high level state ID is called atomic.
+ * Note that subcomponent IDs don't have to correspond to actual subcomponents. For example, a RAM component may supply subcomponent IDs + * "c0000", "c0001" ... "cFFFF" without actually having a subcomponent for each cell. It also is allowed to delegate an atomic high + * level state ID to a subcomponent. + * + * @see #getHighLevelState(String) + * @see GUIComponent#setHighLevelState(String, Object) + * + * @author Daniel Kirschten + */ + public void setHighLevelState(String stateID, Object newState); + + /** + * Gets the current value of the given high-level state.
+ * See {@link #setHighLevelState(String, Object)} for an explanation of high-level state IDs. + * + * @see #setHighLevelState(String, Object) + * @see GUIComponent#getHighLevelState(String) + * + * @author Daniel Kirschten + */ + public Object getHighLevelState(String stateID); +} \ No newline at end of file diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/snippets/Renderer.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/snippets/Renderer.java new file mode 100644 index 00000000..140780b7 --- /dev/null +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/snippets/Renderer.java @@ -0,0 +1,9 @@ +package net.mograsim.logic.model.serializing.snippets; + +import net.haspamelodica.swt.helper.gcs.GeneralGC; +import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; + +public interface Renderer +{ + public void render(GeneralGC gc, Rectangle visibleRegion); +} \ No newline at end of file diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/snippets/SnippetSupplier.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/snippets/SnippetSupplier.java new file mode 100644 index 00000000..a2b71b5d --- /dev/null +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/snippets/SnippetSupplier.java @@ -0,0 +1,38 @@ +package net.mograsim.logic.model.serializing.snippets; + +import java.util.function.BiFunction; + +import com.google.gson.Gson; +import com.google.gson.JsonElement; + +import net.mograsim.logic.model.model.components.submodels.SubmodelComponent; + +public interface SnippetSupplier +{ + public Class

getParamClass(); + + public S create(SubmodelComponent component, P params); + + public default S create(SubmodelComponent component, JsonElement params) + { + return create(component, new Gson().fromJson(params, getParamClass())); + } + + public static SnippetSupplier create(Class

paramClass, BiFunction supplier) + { + return new SnippetSupplier<>() + { + @Override + public Class

getParamClass() + { + return paramClass; + } + + @Override + public S create(SubmodelComponent component, P params) + { + return supplier.apply(component, params); + } + }; + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/snippets/highlevelstatehandlers/DefaultHighLevelStateHandler.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/snippets/highlevelstatehandlers/DefaultHighLevelStateHandler.java new file mode 100644 index 00000000..eb08addc --- /dev/null +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/snippets/highlevelstatehandlers/DefaultHighLevelStateHandler.java @@ -0,0 +1,33 @@ +package net.mograsim.logic.model.serializing.snippets.highlevelstatehandlers; + +import net.mograsim.logic.model.model.components.submodels.SubmodelComponent; +import net.mograsim.logic.model.serializing.CodeSnippetSupplier; +import net.mograsim.logic.model.serializing.snippets.HighLevelStateHandler; +import net.mograsim.logic.model.serializing.snippets.SnippetSupplier; + +public class DefaultHighLevelStateHandler implements HighLevelStateHandler +{ + @SuppressWarnings("unused") // we don't need the component; and params are always null + public DefaultHighLevelStateHandler(SubmodelComponent component, Void params) + { + // nothing to do here + } + + @Override + public void setHighLevelState(String stateID, Object newState) + { + throw new IllegalArgumentException("No high level state with ID " + stateID); + } + + @Override + public Object getHighLevelState(String stateID) + { + throw new IllegalArgumentException("No high level state with ID " + stateID); + } + + static + { + CodeSnippetSupplier.highLevelStateHandlerSupplier.setSnippetSupplier(DefaultHighLevelStateHandler.class.getCanonicalName(), + SnippetSupplier.create(Void.class, DefaultHighLevelStateHandler::new)); + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/snippets/outlinerenderers/DefaultOutlineRenderer.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/snippets/outlinerenderers/DefaultOutlineRenderer.java new file mode 100644 index 00000000..31528643 --- /dev/null +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/snippets/outlinerenderers/DefaultOutlineRenderer.java @@ -0,0 +1,37 @@ +package net.mograsim.logic.model.serializing.snippets.outlinerenderers; + +import net.haspamelodica.swt.helper.gcs.GeneralGC; +import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; +import net.mograsim.logic.model.model.components.GUIComponent; +import net.mograsim.logic.model.model.components.submodels.SubmodelComponent; +import net.mograsim.logic.model.serializing.CodeSnippetSupplier; +import net.mograsim.logic.model.serializing.snippets.Renderer; +import net.mograsim.logic.model.serializing.snippets.SnippetSupplier; +import net.mograsim.preferences.ColorDefinition; +import net.mograsim.preferences.ColorManager; +import net.mograsim.preferences.Preferences; + +public class DefaultOutlineRenderer implements Renderer +{ + private final GUIComponent component; + + public DefaultOutlineRenderer(SubmodelComponent component, @SuppressWarnings("unused") Void params) + { + this.component = component; + } + + @Override + public void render(GeneralGC gc, Rectangle visibleRegion) + { + ColorDefinition fg = Preferences.current().getColorDefinition("net.mograsim.logic.ui.color.foreground"); + if (fg != null) + gc.setForeground(ColorManager.current().toColor(fg)); + gc.drawRectangle(component.getBounds()); + } + + static + { + CodeSnippetSupplier.outlineRendererSupplier.setSnippetSupplier(DefaultOutlineRenderer.class.getCanonicalName(), + SnippetSupplier.create(Void.class, DefaultOutlineRenderer::new)); + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/snippets/symbolrenderers/CenteredTextSymbolRenderer.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/snippets/symbolrenderers/CenteredTextSymbolRenderer.java new file mode 100644 index 00000000..9ccfa9c7 --- /dev/null +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/snippets/symbolrenderers/CenteredTextSymbolRenderer.java @@ -0,0 +1,58 @@ +package net.mograsim.logic.model.serializing.snippets.symbolrenderers; + +import net.haspamelodica.swt.helper.gcs.GeneralGC; +import net.haspamelodica.swt.helper.swtobjectwrappers.Font; +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; +import net.mograsim.logic.model.model.components.GUIComponent; +import net.mograsim.logic.model.model.components.submodels.SubmodelComponent; +import net.mograsim.logic.model.serializing.CodeSnippetSupplier; +import net.mograsim.logic.model.serializing.snippets.Renderer; +import net.mograsim.logic.model.serializing.snippets.SnippetSupplier; +import net.mograsim.preferences.ColorDefinition; +import net.mograsim.preferences.ColorManager; +import net.mograsim.preferences.Preferences; + +/** + * Renders a text ("text") with a given font height ("height") in the center of the component. + * + * @author Daniel Kirschten + */ +public class CenteredTextSymbolRenderer implements Renderer +{ + private final GUIComponent component; + private final CenteredTextParams params; + + public CenteredTextSymbolRenderer(SubmodelComponent component, CenteredTextParams params) + { + this.component = component; + this.params = params; + + } + + @Override + public void render(GeneralGC gc, Rectangle visibleRegion) + { + Font oldFont = gc.getFont(); + gc.setFont(new Font(oldFont.getName(), params.fontHeight, oldFont.getStyle())); + ColorDefinition fg = Preferences.current().getColorDefinition("net.mograsim.logic.ui.color.text"); + if (fg != null) + gc.setForeground(ColorManager.current().toColor(fg)); + Point idSize = gc.textExtent(params.text); + Rectangle bounds = component.getBounds(); + gc.drawText(params.text, bounds.x + (bounds.width - idSize.x) / 2, bounds.y + (bounds.height - idSize.y) / 2, true); + gc.setFont(oldFont); + } + + public static class CenteredTextParams + { + public String text; + public double fontHeight; + } + + static + { + CodeSnippetSupplier.symbolRendererSupplier.setSnippetSupplier(CenteredTextSymbolRenderer.class.getCanonicalName(), + SnippetSupplier.create(CenteredTextParams.class, CenteredTextSymbolRenderer::new)); + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/snippets/symbolrenderers/DefaultSymbolRenderer.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/snippets/symbolrenderers/DefaultSymbolRenderer.java new file mode 100644 index 00000000..e6beadfe --- /dev/null +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/snippets/symbolrenderers/DefaultSymbolRenderer.java @@ -0,0 +1,42 @@ +package net.mograsim.logic.model.serializing.snippets.symbolrenderers; + +import net.haspamelodica.swt.helper.gcs.GeneralGC; +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; +import net.mograsim.logic.model.model.components.GUIComponent; +import net.mograsim.logic.model.model.components.submodels.SubmodelComponent; +import net.mograsim.logic.model.serializing.CodeSnippetSupplier; +import net.mograsim.logic.model.serializing.snippets.Renderer; +import net.mograsim.logic.model.serializing.snippets.SnippetSupplier; +import net.mograsim.preferences.ColorDefinition; +import net.mograsim.preferences.ColorManager; +import net.mograsim.preferences.Preferences; + +public class DefaultSymbolRenderer implements Renderer +{ + private static final String id = ""; + + private final GUIComponent component; + + public DefaultSymbolRenderer(SubmodelComponent component, @SuppressWarnings("unused") Void params) + { + this.component = component; + } + + @Override + public void render(GeneralGC gc, Rectangle visibleRegion) + { + ColorDefinition fg = Preferences.current().getColorDefinition("net.mograsim.logic.ui.color.text"); + if (fg != null) + gc.setForeground(ColorManager.current().toColor(fg)); + Point idSize = gc.textExtent(id); + Rectangle bounds = component.getBounds(); + gc.drawText(id, bounds.x + (bounds.width - idSize.x) / 2, bounds.y + (bounds.height - idSize.y) / 2, true); + } + + static + { + CodeSnippetSupplier.symbolRendererSupplier.setSnippetSupplier(DefaultSymbolRenderer.class.getCanonicalName(), + SnippetSupplier.create(Void.class, DefaultSymbolRenderer::new)); + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/snippets/symbolrenderers/SimpleRectangularLikeSymbolRenderer.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/snippets/symbolrenderers/SimpleRectangularLikeSymbolRenderer.java new file mode 100644 index 00000000..30ab4bca --- /dev/null +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/snippets/symbolrenderers/SimpleRectangularLikeSymbolRenderer.java @@ -0,0 +1,82 @@ +package net.mograsim.logic.model.serializing.snippets.symbolrenderers; + +import java.util.Map.Entry; + +import org.eclipse.swt.graphics.Color; + +import net.haspamelodica.swt.helper.gcs.GeneralGC; +import net.haspamelodica.swt.helper.swtobjectwrappers.Font; +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; +import net.mograsim.logic.model.model.components.GUIComponent; +import net.mograsim.logic.model.model.components.submodels.SubmodelComponent; +import net.mograsim.logic.model.model.wires.Pin; +import net.mograsim.logic.model.serializing.CodeSnippetSupplier; +import net.mograsim.logic.model.serializing.snippets.Renderer; +import net.mograsim.logic.model.serializing.snippets.SnippetSupplier; +import net.mograsim.preferences.Preferences; + +/** + * Renders a text ("centerText") with a given font height ("centerTextHeight") in the center of the component and + * draws a label for each pin with a given font height ("pinLabelHeight"). The labels of pins to the left of a given x + * coordinate ("horizontalComponentCenter") are drawn to the right of the respective pin; labels of pins to the right are drawn + * left. A margin ("pinLabelMargin") is applied for pin label drawing. + * + * @author Daniel Kirschten + */ +public class SimpleRectangularLikeSymbolRenderer implements Renderer +{ + private final GUIComponent component; + private final SimpleRectangularLikeParams params; + + public SimpleRectangularLikeSymbolRenderer(SubmodelComponent component, SimpleRectangularLikeParams params) + { + this.component = component; + this.params = params; + } + + @Override + public void render(GeneralGC gc, Rectangle visibleRegion) + { + double posX = component.getPosX(); + double posY = component.getPosY(); + double width = component.getWidth(); + double height = component.getHeight(); + + Font oldFont = gc.getFont(); + gc.setFont(new Font(oldFont.getName(), params.centerTextHeight, oldFont.getStyle())); + Point textExtent = gc.textExtent(params.centerText); + Color textColor = Preferences.current().getColor("net.mograsim.logic.ui.color.text"); + if (textColor != null) + gc.setForeground(textColor); + gc.drawText(params.centerText, posX + (width - textExtent.x) / 2, posY + (height - textExtent.y) / 2, true); + gc.setFont(new Font(oldFont.getName(), params.pinLabelHeight, oldFont.getStyle())); + for (Entry pinEntry : component.getPins().entrySet()) + { + String pinName = pinEntry.getKey(); + Pin pin = pinEntry.getValue(); + double pinX = pin.getRelX(); + double pinY = posY + pin.getRelY(); + textExtent = gc.textExtent(pinName); + gc.drawText(pinName, + posX + pinX + (pinX > params.horizontalComponentCenter ? -textExtent.x - params.pinLabelMargin : params.pinLabelMargin), + pinY - textExtent.y / 2, true); + } + gc.setFont(oldFont); + } + + public static class SimpleRectangularLikeParams + { + public String centerText; + public double centerTextHeight; + public double horizontalComponentCenter; + public double pinLabelHeight; + public double pinLabelMargin; + } + + static + { + CodeSnippetSupplier.symbolRendererSupplier.setSnippetSupplier(SimpleRectangularLikeSymbolRenderer.class.getCanonicalName(), + SnippetSupplier.create(SimpleRectangularLikeParams.class, SimpleRectangularLikeSymbolRenderer::new)); + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/standardComponentIDMapping.json b/net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/standardComponentIDMapping.json new file mode 100644 index 00000000..ad0194ab --- /dev/null +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/standardComponentIDMapping.json @@ -0,0 +1,36 @@ +mograsim version: 0.1.3 +{ + "GUIAm2901": "file:components/am2901/GUIAm2901.json", + "GUIAm2901ALUFuncDecode": "file:components/am2901/GUIAm2901ALUFuncDecode.json", + "GUIAm2901ALUInclDecode": "file:components/am2901/GUIAm2901ALUInclDecode.json", + "GUIAm2901ALUInclSourceDecodeInclFunctionDecode": "file:components/am2901/GUIAm2901ALUInclSourceDecodeInclFunctionDecode.json", + "GUIAm2901ALUOneBit": "file:components/am2901/GUIAm2901ALUOneBit.json", + "GUIAm2901DestDecode": "file:components/am2901/GUIAm2901DestDecode.json", + "GUIAm2901QReg": "file:components/am2901/GUIAm2901QReg.json", + "GUIAm2901SourceDecode": "file:components/am2901/GUIAm2901SourceDecode.json", + "GUIAndGate": "class:net.mograsim.logic.model.model.components.atomic.GUIAndGate", + "GUINandGate": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate", + "GUIOrGate": "class:net.mograsim.logic.model.model.components.atomic.GUIOrGate", + "GUI_rsLatch": "file:components/GUI_rsLatch.json", + "GUIand": "file:components/GUIand.json", + "GUIand41": "file:components/GUIand41.json", + "GUIandor414": "file:components/GUIandor414.json", + "GUIdemux2": "file:components/GUIdemux2.json", + "GUIdff": "file:components/GUIdff.json", + "GUIdlatch": "file:components/GUIdlatch.json", + "GUIdlatch4": "file:components/GUIdlatch4.json", + "GUIfulladder": "file:components/GUIfulladder.json", + "GUIhalfadder": "file:components/GUIhalfadder.json", + "GUImux1": "file:components/GUImux1.json", + "GUImux1_4": "file:components/GUImux1_4.json", + "GUInand3": "file:components/GUInand3.json", + "GUInot4": "file:components/GUInot4.json", + "GUIor4": "file:components/GUIor4.json", + "GUIor_4": "file:components/GUIor_4.json", + "GUIram2": "file:components/GUIram2.json", + "GUIram4": "file:components/GUIram4.json", + "GUIsel2_4": "file:components/GUIsel2_4.json", + "GUIsel3_4": "file:components/GUIsel3_4.json", + "GUIxor": "file:components/GUIxor.json", + "WireCrossPoint": "class:net.mograsim.logic.model.model.wires.WireCrossPoint" +} \ No newline at end of file diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/standardSnippetIDMapping.json b/net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/standardSnippetIDMapping.json new file mode 100644 index 00000000..db79c5fe --- /dev/null +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/standardSnippetIDMapping.json @@ -0,0 +1,9 @@ +mograsim version: 0.1.3 +{ + "standardOutlineRendererSuppliers": {}, + "standardSymbolRendererSuppliers": { + "CenteredTextSymbolRenderer": "net.mograsim.logic.model.serializing.snippets.symbolrenderers.CenteredTextSymbolRenderer", + "SimpleRectangularLikeSymbolRenderer": "net.mograsim.logic.model.serializing.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer" + }, + "standardHighLevelStateHandlerSuppliers": {} +} \ No newline at end of file diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/util/JsonHandler.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/util/JsonHandler.java new file mode 100644 index 00000000..9cd9e8cc --- /dev/null +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/util/JsonHandler.java @@ -0,0 +1,56 @@ +package net.mograsim.logic.model.util; + +import java.io.BufferedReader; +import java.io.FileInputStream; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.stream.Collectors; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; + +public class JsonHandler +{ + private static Gson parser = new GsonBuilder().setPrettyPrinting().create(); + + public static T readJson(String path, Class type) throws IOException + { + try (FileInputStream jsonStream = new FileInputStream(path)) + { + return readJson(jsonStream, type); + } + } + + /** + * @param input The Stream is closed after being read + */ + public static T readJson(InputStream input, Class type) throws IOException + { + try (InputStreamReader reader = new InputStreamReader(input); BufferedReader bf = new BufferedReader(reader)) + { + return fromJson(bf.lines().collect(Collectors.joining("\n")), type); + } + } + + public static T fromJson(String src, Class type) + { + // TODO actually parse and compare version + String rawJson = src.lines().dropWhile(s -> s.length() == 0 || s.charAt(0) != '{').collect(Collectors.joining()); + return parser.fromJson(rawJson, type); + } + + public static void writeJson(Object o, String path) throws IOException + { + try (FileWriter writer = new FileWriter(path)) + { + writer.write(toJson(o)); + } + } + + public static String toJson(Object o) + { + return String.format("mograsim version: %s\n%s", Version.jsonCompVersion.toString(), parser.toJson(o)); + } +} diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/util/ModellingTool.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/util/ModellingTool.java new file mode 100644 index 00000000..f3b9424d --- /dev/null +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/util/ModellingTool.java @@ -0,0 +1,67 @@ +package net.mograsim.logic.model.util; + +import net.mograsim.logic.model.model.ViewModelModifiable; +import net.mograsim.logic.model.model.components.GUIComponent; +import net.mograsim.logic.model.model.wires.GUIWire; +import net.mograsim.logic.model.model.wires.Pin; +import net.mograsim.logic.model.model.wires.WireCrossPoint; + +public class ModellingTool +{ + private ViewModelModifiable model; + + ModellingTool(ViewModelModifiable model) + { + this.model = model; + } + + public GUIWire connect(GUIComponent a, GUIComponent b, String pinA, String pinB) + { + return connect(a.getPin(pinA), b.getPin(pinB)); + } + + public GUIWire connect(WireCrossPoint a, GUIComponent b, String pinB) + { + return connect(a.getPin(), b.getPin(pinB)); + } + + public GUIWire connect(Pin a, GUIComponent b, String pinB) + { + return connect(a, b.getPin(pinB)); + } + + public GUIWire connect(GUIComponent a, WireCrossPoint b, String pinA) + { + return connect(a.getPin(pinA), b.getPin()); + } + + public GUIWire connect(WireCrossPoint a, WireCrossPoint b) + { + return connect(a.getPin(), b.getPin()); + } + + public GUIWire connect(Pin a, WireCrossPoint b) + { + return connect(a, b.getPin()); + } + + public GUIWire connect(GUIComponent a, Pin b, String pinA) + { + return connect(a.getPin(pinA), b); + } + + public GUIWire connect(WireCrossPoint a, Pin b) + { + return connect(a.getPin(), b); + } + + public GUIWire connect(Pin a, Pin b) + { + return new GUIWire(model, a, b); + } + + public static ModellingTool createFor(ViewModelModifiable model) + { + return new ModellingTool(model); + } +} diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/util/Version.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/util/Version.java new file mode 100644 index 00000000..b0a72982 --- /dev/null +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/util/Version.java @@ -0,0 +1,69 @@ +package net.mograsim.logic.model.util; + +public final class Version +{ + public final static Version jsonCompVersion = new Version(0, 1, 3); + public final int major, minor, patch; + + public Version(int major, int minor, int patch) + { + super(); + this.major = major; + this.minor = minor; + this.patch = patch; + } + + public int[] getVersionNumbers() + { + return new int[] { major, minor, patch }; + } + + @Override + public String toString() + { + return major + "." + minor + "." + patch; + } + + @Override + public int hashCode() + { + final int prime = 31; + int result = 1; + result = prime * result + major; + result = prime * result + minor; + result = prime * result + patch; + return result; + } + + @Override + public boolean equals(Object obj) + { + if (this == obj) + return true; + if (!(obj instanceof Version)) + return false; + Version other = (Version) obj; + if (major != other.major) + return false; + if (minor != other.minor) + return false; + if (patch != other.patch) + return false; + return true; + } + + public boolean is(int major) + { + return major != this.major; + } + + public boolean is(int major, int minor) + { + return is(major) && this.minor == minor; + } + + public boolean is(int major, int minor, int patch) + { + return is(major, minor) && this.patch == patch; + } +} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/.classpath b/net.mograsim.logic.ui.am2900/.classpath deleted file mode 100644 index da70a87e..00000000 --- a/net.mograsim.logic.ui.am2900/.classpath +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/net.mograsim.logic.ui.am2900/.gitignore b/net.mograsim.logic.ui.am2900/.gitignore deleted file mode 100644 index ae3c1726..00000000 --- a/net.mograsim.logic.ui.am2900/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/bin/ diff --git a/net.mograsim.logic.ui.am2900/.project b/net.mograsim.logic.ui.am2900/.project deleted file mode 100644 index b6f5f409..00000000 --- a/net.mograsim.logic.ui.am2900/.project +++ /dev/null @@ -1,30 +0,0 @@ - - - net.mograsim.logic.ui.am2900 - - - net.mograsim.logic.ui - SWTZoomableCanvas - - - - org.eclipse.jdt.core.javabuilder - - - - - org.eclipse.pde.ManifestBuilder - - - - - org.eclipse.pde.SchemaBuilder - - - - - - org.eclipse.jdt.core.javanature - org.eclipse.pde.PluginNature - - diff --git a/net.mograsim.logic.ui.am2900/.settings/org.eclipse.jdt.core.prefs b/net.mograsim.logic.ui.am2900/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index f8bd225a..00000000 --- a/net.mograsim.logic.ui.am2900/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,456 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled -org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore -org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull -org.eclipse.jdt.core.compiler.annotation.nonnull.secondary= -org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault -org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary= -org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable -org.eclipse.jdt.core.compiler.annotation.nullable.secondary= -org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=11 -org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=11 -org.eclipse.jdt.core.compiler.debug.lineNumber=generate -org.eclipse.jdt.core.compiler.debug.localVariable=generate -org.eclipse.jdt.core.compiler.debug.sourceFile=generate -org.eclipse.jdt.core.compiler.problem.APILeak=warning -org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.autoboxing=ignore -org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning -org.eclipse.jdt.core.compiler.problem.deadCode=warning -org.eclipse.jdt.core.compiler.problem.deprecation=warning -org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled -org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled -org.eclipse.jdt.core.compiler.problem.discouragedReference=warning -org.eclipse.jdt.core.compiler.problem.emptyStatement=warning -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=warning -org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning -org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled -org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore -org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning -org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning -org.eclipse.jdt.core.compiler.problem.forbiddenReference=error -org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning -org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled -org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning -org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning -org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning -org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore -org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error -org.eclipse.jdt.core.compiler.problem.missingDefaultCase=warning -org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=info -org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled -org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=warning -org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning -org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled -org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning -org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=warning -org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning -org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning -org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore -org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning -org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning -org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error -org.eclipse.jdt.core.compiler.problem.nullReference=warning -org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error -org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning -org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning -org.eclipse.jdt.core.compiler.problem.parameterAssignment=warning -org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning -org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=error -org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning -org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=warning -org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning -org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning -org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning -org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=info -org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning -org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=info -org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=warning -org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled -org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning -org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled -org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled -org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled -org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=warning -org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning -org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning -org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=disabled -org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning -org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning -org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=warning -org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning -org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning -org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled -org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info -org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning -org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning -org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore -org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=info -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled -org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=warning -org.eclipse.jdt.core.compiler.problem.unusedImport=warning -org.eclipse.jdt.core.compiler.problem.unusedLabel=warning -org.eclipse.jdt.core.compiler.problem.unusedLocal=warning -org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=warning -org.eclipse.jdt.core.compiler.problem.unusedParameter=warning -org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled -org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled -org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled -org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning -org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=warning -org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning -org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning -org.eclipse.jdt.core.compiler.release=enabled -org.eclipse.jdt.core.compiler.source=11 -org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false -org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647 -org.eclipse.jdt.core.formatter.align_type_members_on_columns=false -org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false -org.eclipse.jdt.core.formatter.align_with_spaces=false -org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16 -org.eclipse.jdt.core.formatter.alignment_for_assignment=0 -org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16 -org.eclipse.jdt.core.formatter.alignment_for_compact_if=16 -org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16 -org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80 -org.eclipse.jdt.core.formatter.alignment_for_conditional_expression_chain=0 -org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16 -org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16 -org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0 -org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16 -org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0 -org.eclipse.jdt.core.formatter.alignment_for_module_statements=16 -org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16 -org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16 -org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0 -org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_relational_operator=0 -org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80 -org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16 -org.eclipse.jdt.core.formatter.alignment_for_shift_operator=0 -org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16 -org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0 -org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0 -org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16 -org.eclipse.jdt.core.formatter.blank_lines_after_imports=1 -org.eclipse.jdt.core.formatter.blank_lines_after_package=1 -org.eclipse.jdt.core.formatter.blank_lines_before_field=0 -org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0 -org.eclipse.jdt.core.formatter.blank_lines_before_imports=1 -org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1 -org.eclipse.jdt.core.formatter.blank_lines_before_method=1 -org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1 -org.eclipse.jdt.core.formatter.blank_lines_before_package=0 -org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1 -org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1 -org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=next_line -org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=next_line -org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_block=next_line -org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=next_line -org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=next_line -org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=next_line -org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=next_line -org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=next_line -org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=next_line -org.eclipse.jdt.core.formatter.brace_position_for_switch=next_line -org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=next_line -org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true -org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false -org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false -org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false -org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true -org.eclipse.jdt.core.formatter.comment.format_block_comments=true -org.eclipse.jdt.core.formatter.comment.format_header=false -org.eclipse.jdt.core.formatter.comment.format_html=true -org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true -org.eclipse.jdt.core.formatter.comment.format_line_comments=true -org.eclipse.jdt.core.formatter.comment.format_source_code=true -org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false -org.eclipse.jdt.core.formatter.comment.indent_root_tags=false -org.eclipse.jdt.core.formatter.comment.indent_tag_description=false -org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert -org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert -org.eclipse.jdt.core.formatter.comment.line_length=140 -org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true -org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true -org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false -org.eclipse.jdt.core.formatter.compact_else_if=true -org.eclipse.jdt.core.formatter.continuation_indentation=2 -org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2 -org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off -org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on -org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false -org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true -org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_empty_lines=false -org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true -org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false -org.eclipse.jdt.core.formatter.indentation.size=4 -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=insert -org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=insert -org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert -org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert -org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert -org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert -org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert -org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert -org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert -org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert -org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert -org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert -org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert -org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.join_lines_in_comments=true -org.eclipse.jdt.core.formatter.join_wrapped_lines=true -org.eclipse.jdt.core.formatter.keep_annotation_declaration_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_anonymous_type_declaration_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_code_block_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false -org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false -org.eclipse.jdt.core.formatter.keep_enum_constant_declaration_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_enum_declaration_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_if_then_body_block_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false -org.eclipse.jdt.core.formatter.keep_lambda_body_block_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_loop_body_block_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_method_body_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false -org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false -org.eclipse.jdt.core.formatter.keep_simple_getter_setter_on_one_line=false -org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false -org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false -org.eclipse.jdt.core.formatter.keep_type_declaration_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.lineSplit=140 -org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false -org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false -org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0 -org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1 -org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines -org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true -org.eclipse.jdt.core.formatter.tabulation.char=tab -org.eclipse.jdt.core.formatter.tabulation.size=4 -org.eclipse.jdt.core.formatter.use_on_off_tags=true -org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false -org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true -org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false -org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true -org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true -org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true -org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true -org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true -org.eclipse.jdt.core.formatter.wrap_before_relational_operator=true -org.eclipse.jdt.core.formatter.wrap_before_shift_operator=true -org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true -org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true -org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter diff --git a/net.mograsim.logic.ui.am2900/.settings/org.eclipse.jdt.ui.prefs b/net.mograsim.logic.ui.am2900/.settings/org.eclipse.jdt.ui.prefs deleted file mode 100644 index 8f2c0a47..00000000 --- a/net.mograsim.logic.ui.am2900/.settings/org.eclipse.jdt.ui.prefs +++ /dev/null @@ -1,63 +0,0 @@ -eclipse.preferences.version=1 -editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true -formatter_profile=_MoGraSim -formatter_settings_version=16 -sp_cleanup.add_default_serial_version_id=true -sp_cleanup.add_generated_serial_version_id=false -sp_cleanup.add_missing_annotations=true -sp_cleanup.add_missing_deprecated_annotations=true -sp_cleanup.add_missing_methods=false -sp_cleanup.add_missing_nls_tags=false -sp_cleanup.add_missing_override_annotations=true -sp_cleanup.add_missing_override_annotations_interface_methods=true -sp_cleanup.add_serial_version_id=false -sp_cleanup.always_use_blocks=true -sp_cleanup.always_use_parentheses_in_expressions=false -sp_cleanup.always_use_this_for_non_static_field_access=false -sp_cleanup.always_use_this_for_non_static_method_access=false -sp_cleanup.convert_functional_interfaces=false -sp_cleanup.convert_to_enhanced_for_loop=false -sp_cleanup.correct_indentation=false -sp_cleanup.format_source_code=true -sp_cleanup.format_source_code_changes_only=false -sp_cleanup.insert_inferred_type_arguments=false -sp_cleanup.make_local_variable_final=true -sp_cleanup.make_parameters_final=false -sp_cleanup.make_private_fields_final=true -sp_cleanup.make_type_abstract_if_missing_method=false -sp_cleanup.make_variable_declarations_final=false -sp_cleanup.never_use_blocks=false -sp_cleanup.never_use_parentheses_in_expressions=true -sp_cleanup.on_save_use_additional_actions=false -sp_cleanup.organize_imports=false -sp_cleanup.qualify_static_field_accesses_with_declaring_class=false -sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true -sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true -sp_cleanup.qualify_static_member_accesses_with_declaring_class=false -sp_cleanup.qualify_static_method_accesses_with_declaring_class=false -sp_cleanup.remove_private_constructors=true -sp_cleanup.remove_redundant_modifiers=false -sp_cleanup.remove_redundant_semicolons=false -sp_cleanup.remove_redundant_type_arguments=false -sp_cleanup.remove_trailing_whitespaces=false -sp_cleanup.remove_trailing_whitespaces_all=true -sp_cleanup.remove_trailing_whitespaces_ignore_empty=false -sp_cleanup.remove_unnecessary_casts=true -sp_cleanup.remove_unnecessary_nls_tags=false -sp_cleanup.remove_unused_imports=false -sp_cleanup.remove_unused_local_variables=false -sp_cleanup.remove_unused_private_fields=true -sp_cleanup.remove_unused_private_members=false -sp_cleanup.remove_unused_private_methods=true -sp_cleanup.remove_unused_private_types=true -sp_cleanup.sort_members=false -sp_cleanup.sort_members_all=false -sp_cleanup.use_anonymous_class_creation=false -sp_cleanup.use_blocks=false -sp_cleanup.use_blocks_only_for_return_and_throw=false -sp_cleanup.use_lambda=true -sp_cleanup.use_parentheses_in_expressions=false -sp_cleanup.use_this_for_non_static_field_access=false -sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true -sp_cleanup.use_this_for_non_static_method_access=false -sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true diff --git a/net.mograsim.logic.ui.am2900/FullAdder.json b/net.mograsim.logic.ui.am2900/FullAdder.json deleted file mode 100644 index 40c51c76..00000000 --- a/net.mograsim.logic.ui.am2900/FullAdder.json +++ /dev/null @@ -1,188 +0,0 @@ -mograsim version: 0.1.1 -{ - "type": "SimpleRectangularSubmodelComponent", - "width": 35.0, - "height": 30.0, - "interfacePins": [ - { - "location": { - "x": 0.0, - "y": 5.0 - }, - "name": "A", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 15.0 - }, - "name": "B", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 25.0 - }, - "name": "C", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 5.0 - }, - "name": "Y", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 15.0 - }, - "name": "Z", - "logicWidth": 1 - } - ], - "composition": { - "innerScale": 0.4, - "subComps": [ - { - "pos": { - "x": 5.0, - "y": 40.0 - }, - "type": "class:net.mograsim.logic.ui.model.components.mi.nandbased.GUIhalfadder", - "params": {} - }, - { - "pos": { - "x": 45.0, - "y": 7.5 - }, - "type": "class:net.mograsim.logic.ui.model.components.mi.nandbased.GUIhalfadder", - "params": {} - }, - { - "pos": { - "x": 57.5, - "y": 40.0 - }, - "type": "class:net.mograsim.logic.ui.model.components.GUINandGate", - "params": { - "logicWidth": 1 - } - } - ], - "innerWires": [ - { - "pin1": { - "compId": 0, - "pinName": "A" - }, - "pin2": { - "compId": 2, - "pinName": "A" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "B" - }, - "pin2": { - "compId": 1, - "pinName": "A" - } - }, - { - "pin1": { - "compId": 0, - "pinName": "C" - }, - "pin2": { - "compId": 1, - "pinName": "B" - } - }, - { - "pin1": { - "compId": 1, - "pinName": "Y" - }, - "pin2": { - "compId": 2, - "pinName": "B" - } - }, - { - "pin1": { - "compId": 1, - "pinName": "_Z" - }, - "pin2": { - "compId": 3, - "pinName": "B" - }, - "path": [] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y" - }, - "path": [] - }, - { - "pin1": { - "compId": 2, - "pinName": "_Z" - }, - "pin2": { - "compId": 3, - "pinName": "A" - }, - "path": [ - { - "x": 82.5, - "y": 22.5 - }, - { - "x": 82.5, - "y": 35.0 - }, - { - "x": 52.5, - "y": 35.0 - }, - { - "x": 52.5, - "y": 45.0 - } - ] - }, - { - "pin1": { - "compId": 3, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Z" - } - } - ] - }, - "specialized": { - "input_count": 3, - "label": "GUIfulladder", - "logic_width": 1, - "output_count": 2 - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/HalfAdder.json b/net.mograsim.logic.ui.am2900/HalfAdder.json deleted file mode 100644 index 48c19802..00000000 --- a/net.mograsim.logic.ui.am2900/HalfAdder.json +++ /dev/null @@ -1,323 +0,0 @@ -mograsim version: 0.1.1 -{ - "type": "SimpleRectangularSubmodelComponent", - "width": 35.0, - "height": 20.0, - "interfacePins": [ - { - "location": { - "x": 0.0, - "y": 5.0 - }, - "name": "A", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 15.0 - }, - "name": "B", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 5.0 - }, - "name": "Y", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 15.0 - }, - "name": "_Z", - "logicWidth": 1 - } - ], - "composition": { - "innerScale": 0.4, - "subComps": [ - { - "pos": { - "x": 10.0, - "y": 15.0 - }, - "type": "class:net.mograsim.logic.ui.model.components.GUINandGate", - "params": { - "logicWidth": 1 - } - }, - { - "pos": { - "x": 40.0, - "y": 2.5 - }, - "type": "class:net.mograsim.logic.ui.model.components.GUINandGate", - "params": { - "logicWidth": 1 - } - }, - { - "pos": { - "x": 40.0, - "y": 27.5 - }, - "type": "class:net.mograsim.logic.ui.model.components.GUINandGate", - "params": { - "logicWidth": 1 - } - }, - { - "pos": { - "x": 65.0, - "y": 2.5 - }, - "type": "class:net.mograsim.logic.ui.model.components.GUINandGate", - "params": { - "logicWidth": 1 - } - }, - { - "pos": { - "x": 4.0, - "y": 11.5 - }, - "type": "class:net.mograsim.logic.ui.model.wires.WireCrossPoint", - "params": { - "logicWidth": 1 - } - }, - { - "pos": { - "x": 4.0, - "y": 36.5 - }, - "type": "class:net.mograsim.logic.ui.model.wires.WireCrossPoint", - "params": { - "logicWidth": 1 - } - }, - { - "pos": { - "x": 34.0, - "y": 24.0 - }, - "type": "class:net.mograsim.logic.ui.model.wires.WireCrossPoint", - "params": { - "logicWidth": 1 - } - } - ], - "innerWires": [ - { - "pin1": { - "compId": 0, - "pinName": "A" - }, - "pin2": { - "compId": 5, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 5, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "A" - }, - "path": [ - { - "x": 5.0, - "y": 7.5 - } - ] - }, - { - "pin1": { - "compId": 5, - "pinName": "" - }, - "pin2": { - "compId": 1, - "pinName": "A" - }, - "path": [ - { - "x": 5.0, - "y": 20.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "B" - }, - "pin2": { - "compId": 6, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 6, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "B" - }, - "path": [ - { - "x": 5.0, - "y": 42.5 - } - ] - }, - { - "pin1": { - "compId": 6, - "pinName": "" - }, - "pin2": { - "compId": 1, - "pinName": "B" - }, - "path": [ - { - "x": 5.0, - "y": 30.0 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y" - }, - "pin2": { - "compId": 7, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 7, - "pinName": "" - }, - "pin2": { - "compId": 0, - "pinName": "_Z" - }, - "path": [ - { - "x": 80.0, - "y": 25.0 - }, - { - "x": 80.0, - "y": 37.5 - } - ] - }, - { - "pin1": { - "compId": 7, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "B" - }, - "path": [ - { - "x": 35.0, - "y": 17.5 - } - ] - }, - { - "pin1": { - "compId": 7, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "A" - }, - "path": [ - { - "x": 35.0, - "y": 32.5 - } - ] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y" - }, - "pin2": { - "compId": 4, - "pinName": "A" - }, - "path": [ - { - "x": 62.5, - "y": 12.5 - }, - { - "x": 62.5, - "y": 7.5 - } - ] - }, - { - "pin1": { - "compId": 3, - "pinName": "Y" - }, - "pin2": { - "compId": 4, - "pinName": "B" - }, - "path": [ - { - "x": 62.5, - "y": 37.5 - }, - { - "x": 62.5, - "y": 17.5 - } - ] - }, - { - "pin1": { - "compId": 4, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y" - }, - "path": [] - } - ] - }, - "specialized": { - "input_count": 2, - "label": "GUIhalfadder", - "logic_width": 1, - "output_count": 2 - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/META-INF/MANIFEST.MF b/net.mograsim.logic.ui.am2900/META-INF/MANIFEST.MF deleted file mode 100644 index 627efe1f..00000000 --- a/net.mograsim.logic.ui.am2900/META-INF/MANIFEST.MF +++ /dev/null @@ -1,12 +0,0 @@ -Manifest-Version: 1.0 -Bundle-ManifestVersion: 2 -Bundle-Name: %Bundle-Name -Bundle-SymbolicName: net.mograsim.logic.ui.am2900;singleton:=true -Bundle-Version: 0.1.0.qualifier -Export-Package: net.mograsim.logic.ui.examples, - net.mograsim.logic.ui.model.components.mi.nandbased, - net.mograsim.logic.ui.model.components.mi.nandbased.am2901 -Bundle-RequiredExecutionEnvironment: JavaSE-11 -Require-Bundle: net.mograsim.logic.ui;bundle-version="0.1.0";visibility:=reexport -Automatic-Module-Name: net.mograsim.logic.ui -Bundle-Vendor: Mograsim Team diff --git a/net.mograsim.logic.ui.am2900/OSGI-INF/l10n/bundle.properties b/net.mograsim.logic.ui.am2900/OSGI-INF/l10n/bundle.properties deleted file mode 100644 index f1ecb432..00000000 --- a/net.mograsim.logic.ui.am2900/OSGI-INF/l10n/bundle.properties +++ /dev/null @@ -1,3 +0,0 @@ -#Properties file for net.mograsim.logic.ui -Bundle-Vendor = Mograsim Team -Bundle-Name = Mograsim Am2900 logic \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/Test.json b/net.mograsim.logic.ui.am2900/Test.json deleted file mode 100644 index 56085df7..00000000 --- a/net.mograsim.logic.ui.am2900/Test.json +++ /dev/null @@ -1,36 +0,0 @@ -mograsim version: 0.1.1 -{ - "type": "SimpleRectangularSubmodelComponent", - "width": 35.0, - "height": 10.0, - "interfacePins": [ - { - "location": { - "x": 0.0, - "y": 5.0 - }, - "name": "Input pin #0", - "logicWidth": 1 - } - ], - "composition": { - "innerScale": 0.4, - "subComps": [ - { - "pos": { - "x": 0.0, - "y": 0.0 - }, - "type": "file:HalfAdder.json", - "params": {} - } - ], - "innerWires": [] - }, - "specialized": { - "input_count": 1, - "label": "Test", - "logic_width": 1, - "output_count": 0 - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/build.properties b/net.mograsim.logic.ui.am2900/build.properties deleted file mode 100644 index d6642e65..00000000 --- a/net.mograsim.logic.ui.am2900/build.properties +++ /dev/null @@ -1,4 +0,0 @@ -source.. = src/ -bin.includes = META-INF/,\ - .,\ - OSGI-INF/ diff --git a/net.mograsim.logic.ui.am2900/components/GUI_rsLatch.json b/net.mograsim.logic.ui.am2900/components/GUI_rsLatch.json deleted file mode 100644 index 39ef290c..00000000 --- a/net.mograsim.logic.ui.am2900/components/GUI_rsLatch.json +++ /dev/null @@ -1,218 +0,0 @@ -mograsim version: 0.1.3 -{ - "width": 35.0, - "height": 20.0, - "interfacePins": [ - { - "location": { - "x": 35.0, - "y": 5.0 - }, - "name": "Q", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 15.0 - }, - "name": "_Q", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 15.0 - }, - "name": "_R", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 5.0 - }, - "name": "_S", - "logicWidth": 1 - } - ], - "submodel": { - "innerScale": 0.4, - "subComps": [ - { - "pos": { - "x": 10.0, - "y": 7.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 40.0, - "y": 12.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 34.0, - "y": 16.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 64.0, - "y": 36.5 - }, - "id": "WireCrossPoint", - "params": 1 - } - ], - "innerWires": [ - { - "pin1": { - "compId": 0, - "pinName": "_S" - }, - "pin2": { - "compId": 1, - "pinName": "A" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "_R" - }, - "pin2": { - "compId": 2, - "pinName": "B" - }, - "path": [ - { - "x": 35.0, - "y": 37.5 - }, - { - "x": 35.0, - "y": 27.5 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y" - }, - "pin2": { - "compId": 3, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y" - }, - "pin2": { - "compId": 4, - "pinName": "" - }, - "path": [ - { - "x": 65.0, - "y": 22.5 - } - ] - }, - { - "pin1": { - "compId": 3, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "A" - }, - "path": [] - }, - { - "pin1": { - "compId": 4, - "pinName": "" - }, - "pin2": { - "compId": 1, - "pinName": "B" - }, - "path": [ - { - "x": 65.0, - "y": 42.5 - }, - { - "x": 5.0, - "y": 42.5 - }, - { - "x": 5.0, - "y": 22.5 - } - ] - }, - { - "pin1": { - "compId": 3, - "pinName": "" - }, - "pin2": { - "compId": 0, - "pinName": "Q" - }, - "path": [ - { - "x": 35.0, - "y": 17.5 - }, - { - "x": 35.0, - "y": 7.5 - }, - { - "x": 65.0, - "y": 7.5 - }, - { - "x": 65.0, - "y": 12.5 - } - ] - }, - { - "pin1": { - "compId": 4, - "pinName": "" - }, - "pin2": { - "compId": 0, - "pinName": "_Q" - }, - "path": [] - } - ] - }, - "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", - "symbolRendererParams": { - "centerText": "_rsLatch", - "horizontalComponentCenter": 17.5, - "centerTextHeight": 5.0, - "pinLabelHeight": 3.5, - "pinLabelMargin": 0.5 - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/components/GUIand.json b/net.mograsim.logic.ui.am2900/components/GUIand.json deleted file mode 100644 index 9e801e1c..00000000 --- a/net.mograsim.logic.ui.am2900/components/GUIand.json +++ /dev/null @@ -1,143 +0,0 @@ -mograsim version: 0.1.3 -{ - "width": 35.0, - "height": 20.0, - "interfacePins": [ - { - "location": { - "x": 0.0, - "y": 5.0 - }, - "name": "A", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 15.0 - }, - "name": "B", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 5.0 - }, - "name": "Y", - "logicWidth": 1 - } - ], - "submodel": { - "innerScale": 0.4, - "subComps": [ - { - "pos": { - "x": 20.0, - "y": 15.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 50.0, - "y": 15.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 44.0, - "y": 24.0 - }, - "id": "WireCrossPoint", - "params": 1 - } - ], - "innerWires": [ - { - "pin1": { - "compId": 0, - "pinName": "A" - }, - "pin2": { - "compId": 1, - "pinName": "A" - } - }, - { - "pin1": { - "compId": 0, - "pinName": "B" - }, - "pin2": { - "compId": 1, - "pinName": "B" - } - }, - { - "pin1": { - "compId": 1, - "pinName": "Y" - }, - "pin2": { - "compId": 3, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 3, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "A" - }, - "path": [ - { - "x": 45.0, - "y": 20.0 - } - ] - }, - { - "pin1": { - "compId": 3, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "B" - }, - "path": [ - { - "x": 45.0, - "y": 30.0 - } - ] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y" - } - } - ] - }, - "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", - "symbolRendererParams": { - "centerText": "GUIand", - "horizontalComponentCenter": 17.5, - "centerTextHeight": 5.0, - "pinLabelHeight": 3.5, - "pinLabelMargin": 0.5 - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/components/GUIand41.json b/net.mograsim.logic.ui.am2900/components/GUIand41.json deleted file mode 100644 index c3157e9f..00000000 --- a/net.mograsim.logic.ui.am2900/components/GUIand41.json +++ /dev/null @@ -1,321 +0,0 @@ -mograsim version: 0.1.3 -{ - "width": 35.0, - "height": 50.0, - "interfacePins": [ - { - "location": { - "x": 0.0, - "y": 5.0 - }, - "name": "A1", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 15.0 - }, - "name": "A2", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 25.0 - }, - "name": "A3", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 45.0 - }, - "name": "B", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 35.0 - }, - "name": "A4", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 5.0 - }, - "name": "Y1", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 15.0 - }, - "name": "Y2", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 25.0 - }, - "name": "Y3", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 35.0 - }, - "name": "Y4", - "logicWidth": 1 - } - ], - "submodel": { - "innerScale": 0.4, - "subComps": [ - { - "pos": { - "x": 30.0, - "y": 7.5 - }, - "id": "GUIand" - }, - { - "pos": { - "x": 30.0, - "y": 32.5 - }, - "id": "GUIand" - }, - { - "pos": { - "x": 30.0, - "y": 57.5 - }, - "id": "GUIand" - }, - { - "pos": { - "x": 30.0, - "y": 82.5 - }, - "id": "GUIand" - }, - { - "pos": { - "x": 24.0, - "y": 46.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 24.0, - "y": 71.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 24.0, - "y": 96.5 - }, - "id": "WireCrossPoint", - "params": 1 - } - ], - "innerWires": [ - { - "pin1": { - "compId": 0, - "pinName": "A1" - }, - "pin2": { - "compId": 1, - "pinName": "A" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "A2" - }, - "pin2": { - "compId": 2, - "pinName": "A" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "A3" - }, - "pin2": { - "compId": 3, - "pinName": "A" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "A4" - }, - "pin2": { - "compId": 4, - "pinName": "A" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "B" - }, - "pin2": { - "compId": 7, - "pinName": "" - }, - "path": [ - { - "x": 25.0, - "y": 112.5 - } - ] - }, - { - "pin1": { - "compId": 7, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "B" - }, - "path": [] - }, - { - "pin1": { - "compId": 7, - "pinName": "" - }, - "pin2": { - "compId": 6, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 6, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "B" - }, - "path": [] - }, - { - "pin1": { - "compId": 6, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 5, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "B" - }, - "path": [] - }, - { - "pin1": { - "compId": 5, - "pinName": "" - }, - "pin2": { - "compId": 1, - "pinName": "B" - }, - "path": [ - { - "x": 25.0, - "y": 22.5 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y1" - }, - "path": [] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y2" - }, - "path": [] - }, - { - "pin1": { - "compId": 3, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y3" - }, - "path": [] - }, - { - "pin1": { - "compId": 4, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y4" - }, - "path": [] - } - ] - }, - "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", - "symbolRendererParams": { - "centerText": "GUIand41", - "horizontalComponentCenter": 17.5, - "centerTextHeight": 5.0, - "pinLabelHeight": 3.5, - "pinLabelMargin": 0.5 - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/components/GUIandor414.json b/net.mograsim.logic.ui.am2900/components/GUIandor414.json deleted file mode 100644 index 5021dbaa..00000000 --- a/net.mograsim.logic.ui.am2900/components/GUIandor414.json +++ /dev/null @@ -1,485 +0,0 @@ -mograsim version: 0.1.3 -{ - "width": 35.0, - "height": 90.0, - "interfacePins": [ - { - "location": { - "x": 0.0, - "y": 85.0 - }, - "name": "B", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 5.0 - }, - "name": "C1", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 15.0 - }, - "name": "C2", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 25.0 - }, - "name": "C3", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 45.0 - }, - "name": "A1", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 35.0 - }, - "name": "C4", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 55.0 - }, - "name": "A2", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 65.0 - }, - "name": "A3", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 75.0 - }, - "name": "A4", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 5.0 - }, - "name": "Y1", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 15.0 - }, - "name": "Y2", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 25.0 - }, - "name": "Y3", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 35.0 - }, - "name": "Y4", - "logicWidth": 1 - } - ], - "submodel": { - "innerScale": 0.4, - "subComps": [ - { - "pos": { - "x": 15.0, - "y": 137.5 - }, - "id": "GUIand41" - }, - { - "pos": { - "x": 35.0, - "y": 37.5 - }, - "id": "GUIor_4" - } - ], - "innerWires": [ - { - "pin1": { - "compId": 0, - "pinName": "A1" - }, - "pin2": { - "compId": 1, - "pinName": "A1" - }, - "path": [ - { - "x": 10.0, - "y": 112.5 - }, - { - "x": 10.0, - "y": 142.5 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "A2" - }, - "pin2": { - "compId": 1, - "pinName": "A2" - }, - "path": [ - { - "x": 5.0, - "y": 137.5 - }, - { - "x": 5.0, - "y": 152.5 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "A3" - }, - "pin2": { - "compId": 1, - "pinName": "A3" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "A4" - }, - "pin2": { - "compId": 1, - "pinName": "A4" - }, - "path": [ - { - "x": 5.0, - "y": 187.5 - }, - { - "x": 5.0, - "y": 172.5 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "B" - }, - "pin2": { - "compId": 1, - "pinName": "B" - }, - "path": [ - { - "x": 10.0, - "y": 212.5 - }, - { - "x": 10.0, - "y": 182.5 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "C1" - }, - "pin2": { - "compId": 2, - "pinName": "A1" - }, - "path": [ - { - "x": 10.0, - "y": 12.5 - }, - { - "x": 10.0, - "y": 42.5 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "C2" - }, - "pin2": { - "compId": 2, - "pinName": "A2" - }, - "path": [ - { - "x": 5.0, - "y": 37.5 - }, - { - "x": 5.0, - "y": 52.5 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "C3" - }, - "pin2": { - "compId": 2, - "pinName": "A3" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "C4" - }, - "pin2": { - "compId": 2, - "pinName": "A4" - }, - "path": [ - { - "x": 5.0, - "y": 87.5 - }, - { - "x": 5.0, - "y": 72.5 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y1" - }, - "pin2": { - "compId": 2, - "pinName": "B1" - }, - "path": [ - { - "x": 70.0, - "y": 142.5 - }, - { - "x": 70.0, - "y": 120.0 - }, - { - "x": 30.0, - "y": 120.0 - }, - { - "x": 30.0, - "y": 82.5 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y2" - }, - "pin2": { - "compId": 2, - "pinName": "B2" - }, - "path": [ - { - "x": 65.0, - "y": 152.5 - }, - { - "x": 65.0, - "y": 125.0 - }, - { - "x": 25.0, - "y": 125.0 - }, - { - "x": 25.0, - "y": 92.5 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y3" - }, - "pin2": { - "compId": 2, - "pinName": "B3" - }, - "path": [ - { - "x": 60.0, - "y": 162.5 - }, - { - "x": 60.0, - "y": 130.0 - }, - { - "x": 20.0, - "y": 130.0 - }, - { - "x": 20.0, - "y": 102.5 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y4" - }, - "pin2": { - "compId": 2, - "pinName": "B4" - }, - "path": [ - { - "x": 55.0, - "y": 172.5 - }, - { - "x": 55.0, - "y": 135.0 - }, - { - "x": 15.0, - "y": 135.0 - }, - { - "x": 15.0, - "y": 112.5 - } - ] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y1" - }, - "pin2": { - "compId": 0, - "pinName": "Y1" - }, - "path": [ - { - "x": 75.0, - "y": 42.5 - }, - { - "x": 75.0, - "y": 12.5 - } - ] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y2" - }, - "pin2": { - "compId": 0, - "pinName": "Y2" - }, - "path": [ - { - "x": 80.0, - "y": 52.5 - }, - { - "x": 80.0, - "y": 37.5 - } - ] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y3" - }, - "pin2": { - "compId": 0, - "pinName": "Y3" - }, - "path": [] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y4" - }, - "pin2": { - "compId": 0, - "pinName": "Y4" - }, - "path": [ - { - "x": 80.0, - "y": 72.5 - }, - { - "x": 80.0, - "y": 87.5 - } - ] - } - ] - }, - "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", - "symbolRendererParams": { - "centerText": "GUIandor414", - "horizontalComponentCenter": 17.5, - "centerTextHeight": 5.0, - "pinLabelHeight": 3.5, - "pinLabelMargin": 0.5 - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/components/GUIdemux2.json b/net.mograsim.logic.ui.am2900/components/GUIdemux2.json deleted file mode 100644 index 13ff9694..00000000 --- a/net.mograsim.logic.ui.am2900/components/GUIdemux2.json +++ /dev/null @@ -1,497 +0,0 @@ -mograsim version: 0.1.3 -{ - "width": 35.0, - "height": 40.0, - "interfacePins": [ - { - "location": { - "x": 35.0, - "y": 5.0 - }, - "name": "Y00", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 35.0 - }, - "name": "Y11", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 25.0 - }, - "name": "Y10", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 15.0 - }, - "name": "Y01", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 5.0 - }, - "name": "S0", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 15.0 - }, - "name": "S1", - "logicWidth": 1 - } - ], - "submodel": { - "innerScale": 0.4, - "subComps": [ - { - "pos": { - "x": 10.0, - "y": 2.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 10.0, - "y": 27.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 40.0, - "y": 2.5 - }, - "id": "GUIand" - }, - { - "pos": { - "x": 40.0, - "y": 27.5 - }, - "id": "GUIand" - }, - { - "pos": { - "x": 40.0, - "y": 52.5 - }, - "id": "GUIand" - }, - { - "pos": { - "x": 40.0, - "y": 77.5 - }, - "id": "GUIand" - }, - { - "pos": { - "x": 6.5, - "y": 11.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 6.5, - "y": 16.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 36.5, - "y": 61.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 4.0, - "y": 36.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 4.0, - "y": 41.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 31.5, - "y": 66.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 31.5, - "y": 11.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 34.0, - "y": 36.5 - }, - "id": "WireCrossPoint", - "params": 1 - } - ], - "innerWires": [ - { - "pin1": { - "compId": 0, - "pinName": "S0" - }, - "pin2": { - "compId": 7, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "S1" - }, - "pin2": { - "compId": 10, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 7, - "pinName": "" - }, - "pin2": { - "compId": 1, - "pinName": "A" - }, - "path": [ - { - "x": 7.5, - "y": 7.5 - } - ] - }, - { - "pin1": { - "compId": 10, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "A" - }, - "path": [ - { - "x": 5.0, - "y": 32.5 - } - ] - }, - { - "pin1": { - "compId": 7, - "pinName": "" - }, - "pin2": { - "compId": 8, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 10, - "pinName": "" - }, - "pin2": { - "compId": 11, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 8, - "pinName": "" - }, - "pin2": { - "compId": 1, - "pinName": "B" - }, - "path": [] - }, - { - "pin1": { - "compId": 11, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "B" - }, - "path": [] - }, - { - "pin1": { - "compId": 8, - "pinName": "" - }, - "pin2": { - "compId": 9, - "pinName": "" - }, - "path": [ - { - "x": 7.5, - "y": 62.5 - } - ] - }, - { - "pin1": { - "compId": 11, - "pinName": "" - }, - "pin2": { - "compId": 12, - "pinName": "" - }, - "path": [ - { - "x": 5.0, - "y": 67.5 - }, - { - "x": 32.5, - "y": 67.5 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y" - }, - "pin2": { - "compId": 13, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y" - }, - "pin2": { - "compId": 14, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 13, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "A" - }, - "path": [ - { - "x": 32.5, - "y": 7.5 - } - ] - }, - { - "pin1": { - "compId": 14, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "B" - }, - "path": [ - { - "x": 35.0, - "y": 17.5 - } - ] - }, - { - "pin1": { - "compId": 9, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "A" - }, - "path": [ - { - "x": 37.5, - "y": 32.5 - } - ] - }, - { - "pin1": { - "compId": 14, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "B" - }, - "path": [ - { - "x": 35.0, - "y": 42.5 - } - ] - }, - { - "pin1": { - "compId": 13, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "A" - }, - "path": [ - { - "x": 32.5, - "y": 57.5 - } - ] - }, - { - "pin1": { - "compId": 12, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "B" - }, - "path": [] - }, - { - "pin1": { - "compId": 9, - "pinName": "" - }, - "pin2": { - "compId": 6, - "pinName": "A" - }, - "path": [ - { - "x": 37.5, - "y": 82.5 - } - ] - }, - { - "pin1": { - "compId": 12, - "pinName": "" - }, - "pin2": { - "compId": 6, - "pinName": "B" - }, - "path": [ - { - "x": 32.5, - "y": 92.5 - } - ] - }, - { - "pin1": { - "compId": 3, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y00" - } - }, - { - "pin1": { - "compId": 4, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y01" - } - }, - { - "pin1": { - "compId": 5, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y10" - } - }, - { - "pin1": { - "compId": 6, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y11" - } - } - ] - }, - "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", - "symbolRendererParams": { - "centerText": "GUIdemux2", - "horizontalComponentCenter": 17.5, - "centerTextHeight": 5.0, - "pinLabelHeight": 3.5, - "pinLabelMargin": 0.5 - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/components/GUIdff.json b/net.mograsim.logic.ui.am2900/components/GUIdff.json deleted file mode 100644 index cc8ed5ee..00000000 --- a/net.mograsim.logic.ui.am2900/components/GUIdff.json +++ /dev/null @@ -1,320 +0,0 @@ -mograsim version: 0.1.3 -{ - "width": 35.0, - "height": 20.0, - "interfacePins": [ - { - "location": { - "x": 35.0, - "y": 5.0 - }, - "name": "Q", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 15.0 - }, - "name": "_Q", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 5.0 - }, - "name": "C", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 15.0 - }, - "name": "D", - "logicWidth": 1 - } - ], - "submodel": { - "innerScale": 0.2, - "subComps": [ - { - "pos": { - "x": 40.0, - "y": 10.0 - }, - "id": "GUI_rsLatch" - }, - { - "pos": { - "x": 40.0, - "y": 40.0 - }, - "id": "GUInand3" - }, - { - "pos": { - "x": 120.0, - "y": 60.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 120.0, - "y": 30.0 - }, - "id": "GUI_rsLatch" - }, - { - "pos": { - "x": 9.0, - "y": 24.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 19.0, - "y": 64.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 99.0, - "y": 34.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 99.0, - "y": 44.0 - }, - "id": "WireCrossPoint", - "params": 1 - } - ], - "innerWires": [ - { - "pin1": { - "compId": 0, - "pinName": "C" - }, - "pin2": { - "compId": 5, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 5, - "pinName": "" - }, - "pin2": { - "compId": 1, - "pinName": "_R" - }, - "path": [] - }, - { - "pin1": { - "compId": 5, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "B" - }, - "path": [ - { - "x": 10.0, - "y": 55.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "D" - }, - "pin2": { - "compId": 3, - "pinName": "B" - }, - "path": [] - }, - { - "pin1": { - "compId": 3, - "pinName": "Y" - }, - "pin2": { - "compId": 6, - "pinName": "" - }, - "path": [ - { - "x": 145.0, - "y": 70.0 - }, - { - "x": 145.0, - "y": 85.0 - }, - { - "x": 20.0, - "y": 85.0 - } - ] - }, - { - "pin1": { - "compId": 6, - "pinName": "" - }, - "pin2": { - "compId": 1, - "pinName": "_S" - }, - "path": [ - { - "x": 20.0, - "y": 15.0 - } - ] - }, - { - "pin1": { - "compId": 6, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "C" - }, - "path": [] - }, - { - "pin1": { - "compId": 1, - "pinName": "_Q" - }, - "pin2": { - "compId": 7, - "pinName": "" - }, - "path": [ - { - "x": 100.0, - "y": 25.0 - } - ] - }, - { - "pin1": { - "compId": 7, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "A" - }, - "path": [ - { - "x": 30.0, - "y": 35.0 - }, - { - "x": 30.0, - "y": 45.0 - } - ] - }, - { - "pin1": { - "compId": 7, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "_S" - }, - "path": [] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y" - }, - "pin2": { - "compId": 8, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 8, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "_R" - }, - "path": [] - }, - { - "pin1": { - "compId": 8, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "A" - }, - "path": [ - { - "x": 100.0, - "y": 65.0 - } - ] - }, - { - "pin1": { - "compId": 4, - "pinName": "Q" - }, - "pin2": { - "compId": 0, - "pinName": "Q" - } - }, - { - "pin1": { - "compId": 4, - "pinName": "_Q" - }, - "pin2": { - "compId": 0, - "pinName": "_Q" - } - } - ] - }, - "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", - "symbolRendererParams": { - "centerText": "GUIdff", - "horizontalComponentCenter": 17.5, - "centerTextHeight": 5.0, - "pinLabelHeight": 3.5, - "pinLabelMargin": 0.5 - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/components/GUIdlatch.json b/net.mograsim.logic.ui.am2900/components/GUIdlatch.json deleted file mode 100644 index 4b393472..00000000 --- a/net.mograsim.logic.ui.am2900/components/GUIdlatch.json +++ /dev/null @@ -1,233 +0,0 @@ -mograsim version: 0.1.3 -{ - "width": 35.0, - "height": 20.0, - "interfacePins": [ - { - "location": { - "x": 35.0, - "y": 5.0 - }, - "name": "Q", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 15.0 - }, - "name": "_Q", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 5.0 - }, - "name": "D", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 15.0 - }, - "name": "E", - "logicWidth": 1 - } - ], - "submodel": { - "innerScale": 0.4, - "subComps": [ - { - "pos": { - "x": 10.0, - "y": 2.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 15.0, - "y": 27.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 45.0, - "y": 7.5 - }, - "id": "GUI_rsLatch" - }, - { - "pos": { - "x": 4.0, - "y": 36.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 34.0, - "y": 11.5 - }, - "id": "WireCrossPoint", - "params": 1 - } - ], - "innerWires": [ - { - "pin1": { - "compId": 0, - "pinName": "D" - }, - "pin2": { - "compId": 1, - "pinName": "A" - } - }, - { - "pin1": { - "compId": 0, - "pinName": "E" - }, - "pin2": { - "compId": 4, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 4, - "pinName": "" - }, - "pin2": { - "compId": 1, - "pinName": "B" - }, - "path": [ - { - "x": 5.0, - "y": 17.5 - } - ] - }, - { - "pin1": { - "compId": 4, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "B" - }, - "path": [ - { - "x": 5.0, - "y": 42.5 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y" - }, - "pin2": { - "compId": 5, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 5, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "A" - }, - "path": [ - { - "x": 35.0, - "y": 25.0 - }, - { - "x": 10.0, - "y": 25.0 - }, - { - "x": 10.0, - "y": 32.5 - } - ] - }, - { - "pin1": { - "compId": 5, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "_S" - }, - "path": [] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y" - }, - "pin2": { - "compId": 3, - "pinName": "_R" - }, - "path": [ - { - "x": 40.0, - "y": 37.5 - }, - { - "x": 40.0, - "y": 22.5 - } - ] - }, - { - "pin1": { - "compId": 3, - "pinName": "Q" - }, - "pin2": { - "compId": 0, - "pinName": "Q" - }, - "path": [] - }, - { - "pin1": { - "compId": 3, - "pinName": "_Q" - }, - "pin2": { - "compId": 0, - "pinName": "_Q" - } - } - ] - }, - "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", - "symbolRendererParams": { - "centerText": "GUIdlatch", - "horizontalComponentCenter": 17.5, - "centerTextHeight": 5.0, - "pinLabelHeight": 3.5, - "pinLabelMargin": 0.5 - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/components/GUIdlatch4.json b/net.mograsim.logic.ui.am2900/components/GUIdlatch4.json deleted file mode 100644 index a1d560c4..00000000 --- a/net.mograsim.logic.ui.am2900/components/GUIdlatch4.json +++ /dev/null @@ -1,321 +0,0 @@ -mograsim version: 0.1.3 -{ - "width": 35.0, - "height": 50.0, - "interfacePins": [ - { - "location": { - "x": 0.0, - "y": 35.0 - }, - "name": "D4", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 5.0 - }, - "name": "Q1", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 15.0 - }, - "name": "Q2", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 25.0 - }, - "name": "Q3", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 45.0 - }, - "name": "C", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 35.0 - }, - "name": "Q4", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 5.0 - }, - "name": "D1", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 15.0 - }, - "name": "D2", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 25.0 - }, - "name": "D3", - "logicWidth": 1 - } - ], - "submodel": { - "innerScale": 0.4, - "subComps": [ - { - "pos": { - "x": 30.0, - "y": 7.5 - }, - "id": "GUIdlatch" - }, - { - "pos": { - "x": 30.0, - "y": 32.5 - }, - "id": "GUIdlatch" - }, - { - "pos": { - "x": 30.0, - "y": 57.5 - }, - "id": "GUIdlatch" - }, - { - "pos": { - "x": 30.0, - "y": 82.5 - }, - "id": "GUIdlatch" - }, - { - "pos": { - "x": 14.0, - "y": 46.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 14.0, - "y": 71.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 14.0, - "y": 96.5 - }, - "id": "WireCrossPoint", - "params": 1 - } - ], - "innerWires": [ - { - "pin1": { - "compId": 0, - "pinName": "C" - }, - "pin2": { - "compId": 7, - "pinName": "" - }, - "path": [ - { - "x": 15.0, - "y": 112.5 - } - ] - }, - { - "pin1": { - "compId": 7, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "E" - }, - "path": [] - }, - { - "pin1": { - "compId": 7, - "pinName": "" - }, - "pin2": { - "compId": 6, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 6, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "E" - }, - "path": [] - }, - { - "pin1": { - "compId": 6, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 5, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "E" - }, - "path": [] - }, - { - "pin1": { - "compId": 5, - "pinName": "" - }, - "pin2": { - "compId": 1, - "pinName": "E" - }, - "path": [ - { - "x": 15.0, - "y": 22.5 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "D1" - }, - "pin2": { - "compId": 1, - "pinName": "D" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "D2" - }, - "pin2": { - "compId": 2, - "pinName": "D" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "D3" - }, - "pin2": { - "compId": 3, - "pinName": "D" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "D4" - }, - "pin2": { - "compId": 4, - "pinName": "D" - }, - "path": [] - }, - { - "pin1": { - "compId": 1, - "pinName": "Q" - }, - "pin2": { - "compId": 0, - "pinName": "Q1" - }, - "path": [] - }, - { - "pin1": { - "compId": 2, - "pinName": "Q" - }, - "pin2": { - "compId": 0, - "pinName": "Q2" - }, - "path": [] - }, - { - "pin1": { - "compId": 3, - "pinName": "Q" - }, - "pin2": { - "compId": 0, - "pinName": "Q3" - }, - "path": [] - }, - { - "pin1": { - "compId": 4, - "pinName": "Q" - }, - "pin2": { - "compId": 0, - "pinName": "Q4" - }, - "path": [] - } - ] - }, - "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", - "symbolRendererParams": { - "centerText": "GUIdlatch4", - "horizontalComponentCenter": 17.5, - "centerTextHeight": 5.0, - "pinLabelHeight": 3.5, - "pinLabelMargin": 0.5 - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/components/GUIfulladder.json b/net.mograsim.logic.ui.am2900/components/GUIfulladder.json deleted file mode 100644 index aef6aee7..00000000 --- a/net.mograsim.logic.ui.am2900/components/GUIfulladder.json +++ /dev/null @@ -1,185 +0,0 @@ -mograsim version: 0.1.3 -{ - "width": 35.0, - "height": 30.0, - "interfacePins": [ - { - "location": { - "x": 0.0, - "y": 5.0 - }, - "name": "A", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 15.0 - }, - "name": "B", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 25.0 - }, - "name": "C", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 5.0 - }, - "name": "Y", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 15.0 - }, - "name": "Z", - "logicWidth": 1 - } - ], - "submodel": { - "innerScale": 0.4, - "subComps": [ - { - "pos": { - "x": 5.0, - "y": 40.0 - }, - "id": "GUIhalfadder" - }, - { - "pos": { - "x": 45.0, - "y": 7.5 - }, - "id": "GUIhalfadder" - }, - { - "pos": { - "x": 57.5, - "y": 40.0 - }, - "id": "GUINandGate", - "params": 1 - } - ], - "innerWires": [ - { - "pin1": { - "compId": 0, - "pinName": "A" - }, - "pin2": { - "compId": 2, - "pinName": "A" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "B" - }, - "pin2": { - "compId": 1, - "pinName": "A" - } - }, - { - "pin1": { - "compId": 0, - "pinName": "C" - }, - "pin2": { - "compId": 1, - "pinName": "B" - } - }, - { - "pin1": { - "compId": 1, - "pinName": "Y" - }, - "pin2": { - "compId": 2, - "pinName": "B" - } - }, - { - "pin1": { - "compId": 1, - "pinName": "_Z" - }, - "pin2": { - "compId": 3, - "pinName": "B" - }, - "path": [] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y" - }, - "path": [] - }, - { - "pin1": { - "compId": 2, - "pinName": "_Z" - }, - "pin2": { - "compId": 3, - "pinName": "A" - }, - "path": [ - { - "x": 82.5, - "y": 22.5 - }, - { - "x": 82.5, - "y": 35.0 - }, - { - "x": 52.5, - "y": 35.0 - }, - { - "x": 52.5, - "y": 45.0 - } - ] - }, - { - "pin1": { - "compId": 3, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Z" - } - } - ] - }, - "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", - "symbolRendererParams": { - "centerText": "GUIfulladder", - "horizontalComponentCenter": 17.5, - "centerTextHeight": 5.0, - "pinLabelHeight": 3.5, - "pinLabelMargin": 0.5 - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/components/GUIhalfadder.json b/net.mograsim.logic.ui.am2900/components/GUIhalfadder.json deleted file mode 100644 index 948192b3..00000000 --- a/net.mograsim.logic.ui.am2900/components/GUIhalfadder.json +++ /dev/null @@ -1,310 +0,0 @@ -mograsim version: 0.1.3 -{ - "width": 35.0, - "height": 20.0, - "interfacePins": [ - { - "location": { - "x": 0.0, - "y": 5.0 - }, - "name": "A", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 15.0 - }, - "name": "B", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 5.0 - }, - "name": "Y", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 15.0 - }, - "name": "_Z", - "logicWidth": 1 - } - ], - "submodel": { - "innerScale": 0.4, - "subComps": [ - { - "pos": { - "x": 10.0, - "y": 15.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 40.0, - "y": 2.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 40.0, - "y": 27.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 65.0, - "y": 2.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 4.0, - "y": 11.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 4.0, - "y": 36.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 34.0, - "y": 24.0 - }, - "id": "WireCrossPoint", - "params": 1 - } - ], - "innerWires": [ - { - "pin1": { - "compId": 0, - "pinName": "A" - }, - "pin2": { - "compId": 5, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 5, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "A" - }, - "path": [ - { - "x": 5.0, - "y": 7.5 - } - ] - }, - { - "pin1": { - "compId": 5, - "pinName": "" - }, - "pin2": { - "compId": 1, - "pinName": "A" - }, - "path": [ - { - "x": 5.0, - "y": 20.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "B" - }, - "pin2": { - "compId": 6, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 6, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "B" - }, - "path": [ - { - "x": 5.0, - "y": 42.5 - } - ] - }, - { - "pin1": { - "compId": 6, - "pinName": "" - }, - "pin2": { - "compId": 1, - "pinName": "B" - }, - "path": [ - { - "x": 5.0, - "y": 30.0 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y" - }, - "pin2": { - "compId": 7, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 7, - "pinName": "" - }, - "pin2": { - "compId": 0, - "pinName": "_Z" - }, - "path": [ - { - "x": 80.0, - "y": 25.0 - }, - { - "x": 80.0, - "y": 37.5 - } - ] - }, - { - "pin1": { - "compId": 7, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "B" - }, - "path": [ - { - "x": 35.0, - "y": 17.5 - } - ] - }, - { - "pin1": { - "compId": 7, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "A" - }, - "path": [ - { - "x": 35.0, - "y": 32.5 - } - ] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y" - }, - "pin2": { - "compId": 4, - "pinName": "A" - }, - "path": [ - { - "x": 62.5, - "y": 12.5 - }, - { - "x": 62.5, - "y": 7.5 - } - ] - }, - { - "pin1": { - "compId": 3, - "pinName": "Y" - }, - "pin2": { - "compId": 4, - "pinName": "B" - }, - "path": [ - { - "x": 62.5, - "y": 37.5 - }, - { - "x": 62.5, - "y": 17.5 - } - ] - }, - { - "pin1": { - "compId": 4, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y" - }, - "path": [] - } - ] - }, - "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", - "symbolRendererParams": { - "centerText": "GUIhalfadder", - "horizontalComponentCenter": 17.5, - "centerTextHeight": 5.0, - "pinLabelHeight": 3.5, - "pinLabelMargin": 0.5 - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/components/GUImux1.json b/net.mograsim.logic.ui.am2900/components/GUImux1.json deleted file mode 100644 index 4cc997ce..00000000 --- a/net.mograsim.logic.ui.am2900/components/GUImux1.json +++ /dev/null @@ -1,224 +0,0 @@ -mograsim version: 0.1.3 -{ - "width": 35.0, - "height": 30.0, - "interfacePins": [ - { - "location": { - "x": 0.0, - "y": 15.0 - }, - "name": "I0", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 25.0 - }, - "name": "I1", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 5.0 - }, - "name": "Y", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 5.0 - }, - "name": "S0", - "logicWidth": 1 - } - ], - "submodel": { - "innerScale": 0.4, - "subComps": [ - { - "pos": { - "x": 10.0, - "y": 7.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 35.0, - "y": 22.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 35.0, - "y": 47.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 60.0, - "y": 30.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 4.0, - "y": 11.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 4.0, - "y": 21.5 - }, - "id": "WireCrossPoint", - "params": 1 - } - ], - "innerWires": [ - { - "pin1": { - "compId": 0, - "pinName": "S0" - }, - "pin2": { - "compId": 5, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 5, - "pinName": "" - }, - "pin2": { - "compId": 1, - "pinName": "A" - }, - "path": [] - }, - { - "pin1": { - "compId": 5, - "pinName": "" - }, - "pin2": { - "compId": 6, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 6, - "pinName": "" - }, - "pin2": { - "compId": 1, - "pinName": "B" - }, - "path": [] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y" - }, - "pin2": { - "compId": 2, - "pinName": "A" - } - }, - { - "pin1": { - "compId": 0, - "pinName": "I0" - }, - "pin2": { - "compId": 2, - "pinName": "B" - }, - "path": [] - }, - { - "pin1": { - "compId": 6, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "A" - }, - "path": [ - { - "x": 5.0, - "y": 52.5 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "I1" - }, - "pin2": { - "compId": 3, - "pinName": "B" - }, - "path": [] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y" - }, - "pin2": { - "compId": 4, - "pinName": "A" - } - }, - { - "pin1": { - "compId": 3, - "pinName": "Y" - }, - "pin2": { - "compId": 4, - "pinName": "B" - } - }, - { - "pin1": { - "compId": 4, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y" - } - } - ] - }, - "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", - "symbolRendererParams": { - "centerText": "GUImux1", - "horizontalComponentCenter": 17.5, - "centerTextHeight": 5.0, - "pinLabelHeight": 3.5, - "pinLabelMargin": 0.5 - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/components/GUImux1_4.json b/net.mograsim.logic.ui.am2900/components/GUImux1_4.json deleted file mode 100644 index b7a8e71f..00000000 --- a/net.mograsim.logic.ui.am2900/components/GUImux1_4.json +++ /dev/null @@ -1,461 +0,0 @@ -mograsim version: 0.1.3 -{ - "width": 35.0, - "height": 90.0, - "interfacePins": [ - { - "location": { - "x": 0.0, - "y": 15.0 - }, - "name": "I0_1", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 5.0 - }, - "name": "Y1", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 15.0 - }, - "name": "Y2", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 35.0 - }, - "name": "I0_3", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 65.0 - }, - "name": "I1_2", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 25.0 - }, - "name": "Y3", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 25.0 - }, - "name": "I0_2", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 55.0 - }, - "name": "I1_1", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 35.0 - }, - "name": "Y4", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 85.0 - }, - "name": "I1_4", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 5.0 - }, - "name": "S0", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 45.0 - }, - "name": "I0_4", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 75.0 - }, - "name": "I1_3", - "logicWidth": 1 - } - ], - "submodel": { - "innerScale": 0.4, - "subComps": [ - { - "pos": { - "x": 30.0, - "y": 7.5 - }, - "id": "GUImux1" - }, - { - "pos": { - "x": 30.0, - "y": 42.5 - }, - "id": "GUImux1" - }, - { - "pos": { - "x": 30.0, - "y": 77.5 - }, - "id": "GUImux1" - }, - { - "pos": { - "x": 30.0, - "y": 112.5 - }, - "id": "GUImux1" - }, - { - "pos": { - "x": 24.0, - "y": 11.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 24.0, - "y": 46.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 24.0, - "y": 81.5 - }, - "id": "WireCrossPoint", - "params": 1 - } - ], - "innerWires": [ - { - "pin1": { - "compId": 0, - "pinName": "S0" - }, - "pin2": { - "compId": 5, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 5, - "pinName": "" - }, - "pin2": { - "compId": 1, - "pinName": "S0" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "I0_1" - }, - "pin2": { - "compId": 1, - "pinName": "I0" - }, - "path": [ - { - "x": 5.0, - "y": 37.5 - }, - { - "x": 5.0, - "y": 22.5 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "I1_1" - }, - "pin2": { - "compId": 1, - "pinName": "I1" - }, - "path": [ - { - "x": 10.0, - "y": 137.5 - }, - { - "x": 10.0, - "y": 32.5 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y1" - }, - "path": [] - }, - { - "pin1": { - "compId": 5, - "pinName": "" - }, - "pin2": { - "compId": 6, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 6, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "S0" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "I0_2" - }, - "pin2": { - "compId": 2, - "pinName": "I0" - }, - "path": [ - { - "x": 5.0, - "y": 62.5 - }, - { - "x": 5.0, - "y": 57.5 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "I1_2" - }, - "pin2": { - "compId": 2, - "pinName": "I1" - }, - "path": [ - { - "x": 15.0, - "y": 162.5 - }, - { - "x": 15.0, - "y": 67.5 - } - ] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y2" - } - }, - { - "pin1": { - "compId": 6, - "pinName": "" - }, - "pin2": { - "compId": 7, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 7, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "S0" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "I0_3" - }, - "pin2": { - "compId": 3, - "pinName": "I0" - }, - "path": [ - { - "x": 5.0, - "y": 87.5 - }, - { - "x": 5.0, - "y": 92.5 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "I1_3" - }, - "pin2": { - "compId": 3, - "pinName": "I1" - }, - "path": [ - { - "x": 20.0, - "y": 187.5 - }, - { - "x": 20.0, - "y": 102.5 - } - ] - }, - { - "pin1": { - "compId": 3, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y3" - } - }, - { - "pin1": { - "compId": 7, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "S0" - }, - "path": [ - { - "x": 25.0, - "y": 117.5 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "I0_4" - }, - "pin2": { - "compId": 4, - "pinName": "I0" - }, - "path": [ - { - "x": 5.0, - "y": 112.5 - }, - { - "x": 5.0, - "y": 127.5 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "I1_4" - }, - "pin2": { - "compId": 4, - "pinName": "I1" - }, - "path": [ - { - "x": 25.0, - "y": 212.5 - }, - { - "x": 25.0, - "y": 137.5 - } - ] - }, - { - "pin1": { - "compId": 4, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y4" - } - } - ] - }, - "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", - "symbolRendererParams": { - "centerText": "GUImux1_4", - "horizontalComponentCenter": 17.5, - "centerTextHeight": 5.0, - "pinLabelHeight": 3.5, - "pinLabelMargin": 0.5 - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/components/GUInand3.json b/net.mograsim.logic.ui.am2900/components/GUInand3.json deleted file mode 100644 index 559238d7..00000000 --- a/net.mograsim.logic.ui.am2900/components/GUInand3.json +++ /dev/null @@ -1,200 +0,0 @@ -mograsim version: 0.1.3 -{ - "width": 35.0, - "height": 30.0, - "interfacePins": [ - { - "location": { - "x": 0.0, - "y": 5.0 - }, - "name": "A", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 15.0 - }, - "name": "B", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 25.0 - }, - "name": "C", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 5.0 - }, - "name": "Y", - "logicWidth": 1 - } - ], - "submodel": { - "innerScale": 0.4, - "subComps": [ - { - "pos": { - "x": 10.0, - "y": 15.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 35.0, - "y": 15.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 62.5, - "y": 2.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 31.5, - "y": 24.0 - }, - "id": "WireCrossPoint", - "params": 1 - } - ], - "innerWires": [ - { - "pin1": { - "compId": 0, - "pinName": "A" - }, - "pin2": { - "compId": 1, - "pinName": "A" - } - }, - { - "pin1": { - "compId": 0, - "pinName": "B" - }, - "pin2": { - "compId": 1, - "pinName": "B" - } - }, - { - "pin1": { - "compId": 1, - "pinName": "Y" - }, - "pin2": { - "compId": 4, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 4, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "A" - }, - "path": [ - { - "x": 32.5, - "y": 20.0 - } - ] - }, - { - "pin1": { - "compId": 4, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "B" - }, - "path": [ - { - "x": 32.5, - "y": 30.0 - } - ] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y" - }, - "pin2": { - "compId": 3, - "pinName": "A" - }, - "path": [ - { - "x": 57.5, - "y": 25.0 - }, - { - "x": 57.5, - "y": 7.5 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "C" - }, - "pin2": { - "compId": 3, - "pinName": "B" - }, - "path": [ - { - "x": 60.0, - "y": 62.5 - }, - { - "x": 60.0, - "y": 17.5 - } - ] - }, - { - "pin1": { - "compId": 3, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y" - }, - "path": [] - } - ] - }, - "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", - "symbolRendererParams": { - "centerText": "GUInand3", - "horizontalComponentCenter": 17.5, - "centerTextHeight": 5.0, - "pinLabelHeight": 3.5, - "pinLabelMargin": 0.5 - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/components/GUInot4.json b/net.mograsim.logic.ui.am2900/components/GUInot4.json deleted file mode 100644 index a6268de7..00000000 --- a/net.mograsim.logic.ui.am2900/components/GUInot4.json +++ /dev/null @@ -1,366 +0,0 @@ -mograsim version: 0.1.3 -{ - "width": 35.0, - "height": 40.0, - "interfacePins": [ - { - "location": { - "x": 0.0, - "y": 5.0 - }, - "name": "A1", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 15.0 - }, - "name": "A2", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 25.0 - }, - "name": "A3", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 35.0 - }, - "name": "A4", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 5.0 - }, - "name": "Y1", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 15.0 - }, - "name": "Y2", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 25.0 - }, - "name": "Y3", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 35.0 - }, - "name": "Y4", - "logicWidth": 1 - } - ], - "submodel": { - "innerScale": 0.4, - "subComps": [ - { - "pos": { - "x": 30.0, - "y": 2.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 30.0, - "y": 27.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 30.0, - "y": 52.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 30.0, - "y": 77.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 14.0, - "y": 11.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 14.0, - "y": 36.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 14.0, - "y": 61.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 14.0, - "y": 86.5 - }, - "id": "WireCrossPoint", - "params": 1 - } - ], - "innerWires": [ - { - "pin1": { - "compId": 0, - "pinName": "A1" - }, - "pin2": { - "compId": 5, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "A2" - }, - "pin2": { - "compId": 6, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "A3" - }, - "pin2": { - "compId": 7, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "A4" - }, - "pin2": { - "compId": 8, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 5, - "pinName": "" - }, - "pin2": { - "compId": 1, - "pinName": "A" - }, - "path": [ - { - "x": 15.0, - "y": 7.5 - } - ] - }, - { - "pin1": { - "compId": 6, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "A" - }, - "path": [ - { - "x": 15.0, - "y": 32.5 - } - ] - }, - { - "pin1": { - "compId": 7, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "A" - }, - "path": [ - { - "x": 15.0, - "y": 57.5 - } - ] - }, - { - "pin1": { - "compId": 8, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "A" - }, - "path": [ - { - "x": 15.0, - "y": 82.5 - } - ] - }, - { - "pin1": { - "compId": 5, - "pinName": "" - }, - "pin2": { - "compId": 1, - "pinName": "B" - }, - "path": [ - { - "x": 15.0, - "y": 17.5 - } - ] - }, - { - "pin1": { - "compId": 6, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "B" - }, - "path": [ - { - "x": 15.0, - "y": 42.5 - } - ] - }, - { - "pin1": { - "compId": 7, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "B" - }, - "path": [ - { - "x": 15.0, - "y": 67.5 - } - ] - }, - { - "pin1": { - "compId": 8, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "B" - }, - "path": [ - { - "x": 15.0, - "y": 92.5 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y1" - }, - "path": [] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y2" - }, - "path": [] - }, - { - "pin1": { - "compId": 3, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y3" - }, - "path": [] - }, - { - "pin1": { - "compId": 4, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y4" - }, - "path": [] - } - ] - }, - "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", - "symbolRendererParams": { - "centerText": "GUInot4", - "horizontalComponentCenter": 17.5, - "centerTextHeight": 5.0, - "pinLabelHeight": 3.5, - "pinLabelMargin": 0.5 - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/components/GUIor4.json b/net.mograsim.logic.ui.am2900/components/GUIor4.json deleted file mode 100644 index 54933c40..00000000 --- a/net.mograsim.logic.ui.am2900/components/GUIor4.json +++ /dev/null @@ -1,510 +0,0 @@ -mograsim version: 0.1.3 -{ - "width": 35.0, - "height": 40.0, - "interfacePins": [ - { - "location": { - "x": 0.0, - "y": 5.0 - }, - "name": "A1", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 15.0 - }, - "name": "A2", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 25.0 - }, - "name": "A3", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 35.0 - }, - "name": "A4", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 5.0 - }, - "name": "Y", - "logicWidth": 1 - } - ], - "submodel": { - "innerScale": 0.2, - "subComps": [ - { - "pos": { - "x": 20.0, - "y": 15.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 20.0, - "y": 65.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 20.0, - "y": 115.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 20.0, - "y": 165.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 50.0, - "y": 40.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 50.0, - "y": 140.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 110.0, - "y": 40.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 110.0, - "y": 140.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 140.0, - "y": 90.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 14.0, - "y": 24.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 14.0, - "y": 74.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 14.0, - "y": 124.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 14.0, - "y": 174.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 104.0, - "y": 49.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 104.0, - "y": 149.0 - }, - "id": "WireCrossPoint", - "params": 1 - } - ], - "innerWires": [ - { - "pin1": { - "compId": 0, - "pinName": "A1" - }, - "pin2": { - "compId": 10, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "A2" - }, - "pin2": { - "compId": 11, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "A3" - }, - "pin2": { - "compId": 12, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "A4" - }, - "pin2": { - "compId": 13, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 10, - "pinName": "" - }, - "pin2": { - "compId": 1, - "pinName": "A" - }, - "path": [ - { - "x": 15.0, - "y": 20.0 - } - ] - }, - { - "pin1": { - "compId": 11, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "A" - }, - "path": [ - { - "x": 15.0, - "y": 70.0 - } - ] - }, - { - "pin1": { - "compId": 12, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "A" - }, - "path": [ - { - "x": 15.0, - "y": 120.0 - } - ] - }, - { - "pin1": { - "compId": 13, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "A" - }, - "path": [ - { - "x": 15.0, - "y": 170.0 - } - ] - }, - { - "pin1": { - "compId": 10, - "pinName": "" - }, - "pin2": { - "compId": 1, - "pinName": "B" - }, - "path": [ - { - "x": 15.0, - "y": 30.0 - } - ] - }, - { - "pin1": { - "compId": 11, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "B" - }, - "path": [ - { - "x": 15.0, - "y": 80.0 - } - ] - }, - { - "pin1": { - "compId": 12, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "B" - }, - "path": [ - { - "x": 15.0, - "y": 130.0 - } - ] - }, - { - "pin1": { - "compId": 13, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "B" - }, - "path": [ - { - "x": 15.0, - "y": 180.0 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y" - }, - "pin2": { - "compId": 5, - "pinName": "A" - } - }, - { - "pin1": { - "compId": 2, - "pinName": "Y" - }, - "pin2": { - "compId": 5, - "pinName": "B" - } - }, - { - "pin1": { - "compId": 3, - "pinName": "Y" - }, - "pin2": { - "compId": 6, - "pinName": "A" - } - }, - { - "pin1": { - "compId": 4, - "pinName": "Y" - }, - "pin2": { - "compId": 6, - "pinName": "B" - } - }, - { - "pin1": { - "compId": 5, - "pinName": "Y" - }, - "pin2": { - "compId": 14, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 6, - "pinName": "Y" - }, - "pin2": { - "compId": 15, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 14, - "pinName": "" - }, - "pin2": { - "compId": 7, - "pinName": "A" - }, - "path": [ - { - "x": 105.0, - "y": 45.0 - } - ] - }, - { - "pin1": { - "compId": 14, - "pinName": "" - }, - "pin2": { - "compId": 7, - "pinName": "B" - }, - "path": [ - { - "x": 105.0, - "y": 55.0 - } - ] - }, - { - "pin1": { - "compId": 15, - "pinName": "" - }, - "pin2": { - "compId": 8, - "pinName": "A" - }, - "path": [ - { - "x": 105.0, - "y": 145.0 - } - ] - }, - { - "pin1": { - "compId": 15, - "pinName": "" - }, - "pin2": { - "compId": 8, - "pinName": "B" - }, - "path": [ - { - "x": 105.0, - "y": 155.0 - } - ] - }, - { - "pin1": { - "compId": 7, - "pinName": "Y" - }, - "pin2": { - "compId": 9, - "pinName": "A" - } - }, - { - "pin1": { - "compId": 8, - "pinName": "Y" - }, - "pin2": { - "compId": 9, - "pinName": "B" - } - }, - { - "pin1": { - "compId": 9, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y" - } - } - ] - }, - "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", - "symbolRendererParams": { - "centerText": "GUIor4", - "horizontalComponentCenter": 17.5, - "centerTextHeight": 5.0, - "pinLabelHeight": 3.5, - "pinLabelMargin": 0.5 - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/components/GUIor_4.json b/net.mograsim.logic.ui.am2900/components/GUIor_4.json deleted file mode 100644 index 7db8660f..00000000 --- a/net.mograsim.logic.ui.am2900/components/GUIor_4.json +++ /dev/null @@ -1,826 +0,0 @@ -mograsim version: 0.1.3 -{ - "width": 35.0, - "height": 80.0, - "interfacePins": [ - { - "location": { - "x": 0.0, - "y": 5.0 - }, - "name": "A1", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 55.0 - }, - "name": "B2", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 15.0 - }, - "name": "A2", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 65.0 - }, - "name": "B3", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 25.0 - }, - "name": "A3", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 75.0 - }, - "name": "B4", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 35.0 - }, - "name": "A4", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 5.0 - }, - "name": "Y1", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 15.0 - }, - "name": "Y2", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 25.0 - }, - "name": "Y3", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 35.0 - }, - "name": "Y4", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 45.0 - }, - "name": "B1", - "logicWidth": 1 - } - ], - "submodel": { - "innerScale": 0.4, - "subComps": [ - { - "pos": { - "x": 15.0, - "y": 2.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 15.0, - "y": 27.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 15.0, - "y": 52.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 15.0, - "y": 77.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 15.0, - "y": 102.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 15.0, - "y": 127.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 15.0, - "y": 152.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 15.0, - "y": 177.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 65.0, - "y": 2.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 65.0, - "y": 27.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 65.0, - "y": 52.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 65.0, - "y": 77.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 6.5, - "y": 11.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 6.5, - "y": 36.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 6.5, - "y": 61.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 6.5, - "y": 86.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 6.5, - "y": 111.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 6.5, - "y": 136.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 6.5, - "y": 161.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 6.5, - "y": 186.5 - }, - "id": "WireCrossPoint", - "params": 1 - } - ], - "innerWires": [ - { - "pin1": { - "compId": 0, - "pinName": "A1" - }, - "pin2": { - "compId": 13, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "A2" - }, - "pin2": { - "compId": 14, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "A3" - }, - "pin2": { - "compId": 15, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "A4" - }, - "pin2": { - "compId": 16, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "B1" - }, - "pin2": { - "compId": 17, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "B2" - }, - "pin2": { - "compId": 18, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "B3" - }, - "pin2": { - "compId": 19, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "B4" - }, - "pin2": { - "compId": 20, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 13, - "pinName": "" - }, - "pin2": { - "compId": 1, - "pinName": "A" - }, - "path": [ - { - "x": 7.5, - "y": 7.5 - } - ] - }, - { - "pin1": { - "compId": 13, - "pinName": "" - }, - "pin2": { - "compId": 1, - "pinName": "B" - }, - "path": [ - { - "x": 7.5, - "y": 17.5 - } - ] - }, - { - "pin1": { - "compId": 14, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "A" - }, - "path": [ - { - "x": 7.5, - "y": 32.5 - } - ] - }, - { - "pin1": { - "compId": 14, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "B" - }, - "path": [ - { - "x": 7.5, - "y": 42.5 - } - ] - }, - { - "pin1": { - "compId": 15, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "A" - }, - "path": [ - { - "x": 7.5, - "y": 57.5 - } - ] - }, - { - "pin1": { - "compId": 15, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "B" - }, - "path": [ - { - "x": 7.5, - "y": 67.5 - } - ] - }, - { - "pin1": { - "compId": 16, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "A" - }, - "path": [ - { - "x": 7.5, - "y": 82.5 - } - ] - }, - { - "pin1": { - "compId": 16, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "B" - }, - "path": [ - { - "x": 7.5, - "y": 92.5 - } - ] - }, - { - "pin1": { - "compId": 17, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "A" - }, - "path": [ - { - "x": 7.5, - "y": 107.5 - } - ] - }, - { - "pin1": { - "compId": 17, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "B" - }, - "path": [ - { - "x": 7.5, - "y": 117.5 - } - ] - }, - { - "pin1": { - "compId": 18, - "pinName": "" - }, - "pin2": { - "compId": 6, - "pinName": "A" - }, - "path": [ - { - "x": 7.5, - "y": 132.5 - } - ] - }, - { - "pin1": { - "compId": 18, - "pinName": "" - }, - "pin2": { - "compId": 6, - "pinName": "B" - }, - "path": [ - { - "x": 7.5, - "y": 142.5 - } - ] - }, - { - "pin1": { - "compId": 19, - "pinName": "" - }, - "pin2": { - "compId": 7, - "pinName": "A" - }, - "path": [ - { - "x": 7.5, - "y": 157.5 - } - ] - }, - { - "pin1": { - "compId": 19, - "pinName": "" - }, - "pin2": { - "compId": 7, - "pinName": "B" - }, - "path": [ - { - "x": 7.5, - "y": 167.5 - } - ] - }, - { - "pin1": { - "compId": 20, - "pinName": "" - }, - "pin2": { - "compId": 8, - "pinName": "A" - }, - "path": [ - { - "x": 7.5, - "y": 182.5 - } - ] - }, - { - "pin1": { - "compId": 20, - "pinName": "" - }, - "pin2": { - "compId": 8, - "pinName": "B" - }, - "path": [ - { - "x": 7.5, - "y": 192.5 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y" - }, - "pin2": { - "compId": 9, - "pinName": "A" - }, - "path": [ - { - "x": 40.0, - "y": 12.5 - }, - { - "x": 40.0, - "y": 7.5 - } - ] - }, - { - "pin1": { - "compId": 5, - "pinName": "Y" - }, - "pin2": { - "compId": 9, - "pinName": "B" - }, - "path": [ - { - "x": 45.0, - "y": 112.5 - }, - { - "x": 45.0, - "y": 17.5 - } - ] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y" - }, - "pin2": { - "compId": 10, - "pinName": "A" - }, - "path": [ - { - "x": 40.0, - "y": 37.5 - }, - { - "x": 40.0, - "y": 32.5 - } - ] - }, - { - "pin1": { - "compId": 6, - "pinName": "Y" - }, - "pin2": { - "compId": 10, - "pinName": "B" - }, - "path": [ - { - "x": 50.0, - "y": 137.5 - }, - { - "x": 50.0, - "y": 42.5 - } - ] - }, - { - "pin1": { - "compId": 3, - "pinName": "Y" - }, - "pin2": { - "compId": 11, - "pinName": "A" - }, - "path": [ - { - "x": 40.0, - "y": 62.5 - }, - { - "x": 40.0, - "y": 57.5 - } - ] - }, - { - "pin1": { - "compId": 7, - "pinName": "Y" - }, - "pin2": { - "compId": 11, - "pinName": "B" - }, - "path": [ - { - "x": 55.0, - "y": 162.5 - }, - { - "x": 55.0, - "y": 67.5 - } - ] - }, - { - "pin1": { - "compId": 4, - "pinName": "Y" - }, - "pin2": { - "compId": 12, - "pinName": "A" - }, - "path": [ - { - "x": 40.0, - "y": 87.5 - }, - { - "x": 40.0, - "y": 82.5 - } - ] - }, - { - "pin1": { - "compId": 8, - "pinName": "Y" - }, - "pin2": { - "compId": 12, - "pinName": "B" - }, - "path": [ - { - "x": 60.0, - "y": 187.5 - }, - { - "x": 60.0, - "y": 92.5 - } - ] - }, - { - "pin1": { - "compId": 9, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y1" - }, - "path": [] - }, - { - "pin1": { - "compId": 10, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y2" - }, - "path": [] - }, - { - "pin1": { - "compId": 11, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y3" - }, - "path": [] - }, - { - "pin1": { - "compId": 12, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y4" - }, - "path": [] - } - ] - }, - "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", - "symbolRendererParams": { - "centerText": "GUIor_4", - "horizontalComponentCenter": 17.5, - "centerTextHeight": 5.0, - "pinLabelHeight": 3.5, - "pinLabelMargin": 0.5 - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/components/GUIram2.json b/net.mograsim.logic.ui.am2900/components/GUIram2.json deleted file mode 100644 index f748b0b0..00000000 --- a/net.mograsim.logic.ui.am2900/components/GUIram2.json +++ /dev/null @@ -1,2782 +0,0 @@ -mograsim version: 0.1.3 -{ - "width": 35.0, - "height": 90.0, - "interfacePins": [ - { - "location": { - "x": 35.0, - "y": 5.0 - }, - "name": "QA1", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 55.0 - }, - "name": "QB2", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 45.0 - }, - "name": "QB1", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 25.0 - }, - "name": "QA3", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 75.0 - }, - "name": "QB4", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 15.0 - }, - "name": "QA2", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 65.0 - }, - "name": "QB3", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 35.0 - }, - "name": "QA4", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 55.0 - }, - "name": "D1", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 25.0 - }, - "name": "B0", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 45.0 - }, - "name": "WE", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 65.0 - }, - "name": "D2", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 5.0 - }, - "name": "A0", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 35.0 - }, - "name": "B1", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 75.0 - }, - "name": "D3", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 15.0 - }, - "name": "A1", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 85.0 - }, - "name": "D4", - "logicWidth": 1 - } - ], - "submodel": { - "innerScale": 0.1, - "subComps": [ - { - "pos": { - "x": 55.0, - "y": 45.0 - }, - "id": "GUIdemux2" - }, - { - "pos": { - "x": 55.0, - "y": 150.0 - }, - "id": "GUIdemux2" - }, - { - "pos": { - "x": 130.0, - "y": 150.0 - }, - "id": "GUIand41" - }, - { - "pos": { - "x": 55.0, - "y": 325.0 - }, - "id": "GUIdlatch4" - }, - { - "pos": { - "x": 55.0, - "y": 475.0 - }, - "id": "GUIdlatch4" - }, - { - "pos": { - "x": 55.0, - "y": 625.0 - }, - "id": "GUIdlatch4" - }, - { - "pos": { - "x": 55.0, - "y": 775.0 - }, - "id": "GUIdlatch4" - }, - { - "pos": { - "x": 235.0, - "y": 375.0 - }, - "id": "GUIand41" - }, - { - "pos": { - "x": 235.0, - "y": 485.0 - }, - "id": "GUIandor414" - }, - { - "pos": { - "x": 235.0, - "y": 635.0 - }, - "id": "GUIandor414" - }, - { - "pos": { - "x": 235.0, - "y": 785.0 - }, - "id": "GUIandor414" - }, - { - "pos": { - "x": 135.0, - "y": 325.0 - }, - "id": "GUIand41" - }, - { - "pos": { - "x": 135.0, - "y": 435.0 - }, - "id": "GUIandor414" - }, - { - "pos": { - "x": 135.0, - "y": 585.0 - }, - "id": "GUIandor414" - }, - { - "pos": { - "x": 135.0, - "y": 735.0 - }, - "id": "GUIandor414" - }, - { - "pos": { - "x": 109.0, - "y": 154.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 104.0, - "y": 164.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 99.0, - "y": 174.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 94.0, - "y": 184.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 34.0, - "y": 549.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 39.0, - "y": 649.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 44.0, - "y": 749.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 49.0, - "y": 809.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 34.0, - "y": 479.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 39.0, - "y": 489.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 44.0, - "y": 499.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 49.0, - "y": 509.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 34.0, - "y": 629.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 39.0, - "y": 639.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 44.0, - "y": 649.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 49.0, - "y": 659.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 129.0, - "y": 329.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 124.0, - "y": 339.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 119.0, - "y": 349.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 114.0, - "y": 359.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 129.0, - "y": 479.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 124.0, - "y": 489.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 119.0, - "y": 499.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 114.0, - "y": 509.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 129.0, - "y": 629.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 124.0, - "y": 639.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 119.0, - "y": 649.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 114.0, - "y": 659.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 129.0, - "y": 779.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 124.0, - "y": 789.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 119.0, - "y": 799.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 114.0, - "y": 809.0 - }, - "id": "WireCrossPoint", - "params": 1 - } - ], - "innerWires": [ - { - "pin1": { - "compId": 0, - "pinName": "A0" - }, - "pin2": { - "compId": 1, - "pinName": "S0" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "A1" - }, - "pin2": { - "compId": 1, - "pinName": "S1" - }, - "path": [ - { - "x": 10.0, - "y": 150.0 - }, - { - "x": 10.0, - "y": 60.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "B0" - }, - "pin2": { - "compId": 2, - "pinName": "S0" - }, - "path": [ - { - "x": 5.0, - "y": 250.0 - }, - { - "x": 5.0, - "y": 155.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "B1" - }, - "pin2": { - "compId": 2, - "pinName": "S1" - }, - "path": [ - { - "x": 10.0, - "y": 350.0 - }, - { - "x": 10.0, - "y": 165.0 - } - ] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y00" - }, - "pin2": { - "compId": 16, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y01" - }, - "pin2": { - "compId": 17, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y10" - }, - "pin2": { - "compId": 18, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y11" - }, - "pin2": { - "compId": 19, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 16, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "A1" - }, - "path": [] - }, - { - "pin1": { - "compId": 17, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "A2" - }, - "path": [] - }, - { - "pin1": { - "compId": 18, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "A3" - }, - "path": [] - }, - { - "pin1": { - "compId": 19, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "A4" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "WE" - }, - "pin2": { - "compId": 3, - "pinName": "B" - }, - "path": [ - { - "x": 5.0, - "y": 450.0 - }, - { - "x": 5.0, - "y": 300.0 - }, - { - "x": 125.0, - "y": 300.0 - }, - { - "x": 125.0, - "y": 195.0 - } - ] - }, - { - "pin1": { - "compId": 3, - "pinName": "Y1" - }, - "pin2": { - "compId": 4, - "pinName": "C" - }, - "path": [ - { - "x": 185.0, - "y": 155.0 - }, - { - "x": 185.0, - "y": 250.0 - }, - { - "x": 30.0, - "y": 250.0 - }, - { - "x": 30.0, - "y": 370.0 - } - ] - }, - { - "pin1": { - "compId": 3, - "pinName": "Y2" - }, - "pin2": { - "compId": 5, - "pinName": "C" - }, - "path": [ - { - "x": 180.0, - "y": 165.0 - }, - { - "x": 180.0, - "y": 245.0 - }, - { - "x": 25.0, - "y": 245.0 - }, - { - "x": 25.0, - "y": 520.0 - } - ] - }, - { - "pin1": { - "compId": 3, - "pinName": "Y3" - }, - "pin2": { - "compId": 6, - "pinName": "C" - }, - "path": [ - { - "x": 175.0, - "y": 175.0 - }, - { - "x": 175.0, - "y": 240.0 - }, - { - "x": 20.0, - "y": 240.0 - }, - { - "x": 20.0, - "y": 670.0 - } - ] - }, - { - "pin1": { - "compId": 3, - "pinName": "Y4" - }, - "pin2": { - "compId": 7, - "pinName": "C" - }, - "path": [ - { - "x": 170.0, - "y": 185.0 - }, - { - "x": 170.0, - "y": 235.0 - }, - { - "x": 15.0, - "y": 235.0 - }, - { - "x": 15.0, - "y": 820.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "D1" - }, - "pin2": { - "compId": 20, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "D2" - }, - "pin2": { - "compId": 21, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "D3" - }, - "pin2": { - "compId": 22, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "D4" - }, - "pin2": { - "compId": 23, - "pinName": "" - }, - "path": [ - { - "x": 50.0, - "y": 850.0 - } - ] - }, - { - "pin1": { - "compId": 24, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "D1" - }, - "path": [ - { - "x": 35.0, - "y": 330.0 - } - ] - }, - { - "pin1": { - "compId": 25, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "D2" - }, - "path": [ - { - "x": 40.0, - "y": 340.0 - } - ] - }, - { - "pin1": { - "compId": 26, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "D3" - }, - "path": [ - { - "x": 45.0, - "y": 350.0 - } - ] - }, - { - "pin1": { - "compId": 27, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "D4" - }, - "path": [ - { - "x": 50.0, - "y": 360.0 - } - ] - }, - { - "pin1": { - "compId": 24, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "D1" - }, - "path": [] - }, - { - "pin1": { - "compId": 25, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "D2" - }, - "path": [] - }, - { - "pin1": { - "compId": 26, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "D3" - }, - "path": [] - }, - { - "pin1": { - "compId": 27, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "D4" - }, - "path": [] - }, - { - "pin1": { - "compId": 24, - "pinName": "" - }, - "pin2": { - "compId": 20, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 20, - "pinName": "" - }, - "pin2": { - "compId": 28, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 25, - "pinName": "" - }, - "pin2": { - "compId": 29, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 26, - "pinName": "" - }, - "pin2": { - "compId": 30, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 27, - "pinName": "" - }, - "pin2": { - "compId": 31, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 28, - "pinName": "" - }, - "pin2": { - "compId": 6, - "pinName": "D1" - }, - "path": [] - }, - { - "pin1": { - "compId": 29, - "pinName": "" - }, - "pin2": { - "compId": 6, - "pinName": "D2" - }, - "path": [] - }, - { - "pin1": { - "compId": 30, - "pinName": "" - }, - "pin2": { - "compId": 6, - "pinName": "D3" - }, - "path": [] - }, - { - "pin1": { - "compId": 31, - "pinName": "" - }, - "pin2": { - "compId": 6, - "pinName": "D4" - }, - "path": [] - }, - { - "pin1": { - "compId": 29, - "pinName": "" - }, - "pin2": { - "compId": 21, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 30, - "pinName": "" - }, - "pin2": { - "compId": 22, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 31, - "pinName": "" - }, - "pin2": { - "compId": 23, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 28, - "pinName": "" - }, - "pin2": { - "compId": 7, - "pinName": "D1" - }, - "path": [ - { - "x": 35.0, - "y": 780.0 - } - ] - }, - { - "pin1": { - "compId": 21, - "pinName": "" - }, - "pin2": { - "compId": 7, - "pinName": "D2" - }, - "path": [ - { - "x": 40.0, - "y": 790.0 - } - ] - }, - { - "pin1": { - "compId": 22, - "pinName": "" - }, - "pin2": { - "compId": 7, - "pinName": "D3" - }, - "path": [ - { - "x": 45.0, - "y": 800.0 - } - ] - }, - { - "pin1": { - "compId": 23, - "pinName": "" - }, - "pin2": { - "compId": 7, - "pinName": "D4" - }, - "path": [] - }, - { - "pin1": { - "compId": 4, - "pinName": "Q1" - }, - "pin2": { - "compId": 32, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 4, - "pinName": "Q2" - }, - "pin2": { - "compId": 33, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 4, - "pinName": "Q3" - }, - "pin2": { - "compId": 34, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 4, - "pinName": "Q4" - }, - "pin2": { - "compId": 35, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 5, - "pinName": "Q1" - }, - "pin2": { - "compId": 36, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 5, - "pinName": "Q2" - }, - "pin2": { - "compId": 37, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 5, - "pinName": "Q3" - }, - "pin2": { - "compId": 38, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 5, - "pinName": "Q4" - }, - "pin2": { - "compId": 39, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 6, - "pinName": "Q1" - }, - "pin2": { - "compId": 40, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 6, - "pinName": "Q2" - }, - "pin2": { - "compId": 41, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 6, - "pinName": "Q3" - }, - "pin2": { - "compId": 42, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 6, - "pinName": "Q4" - }, - "pin2": { - "compId": 43, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 7, - "pinName": "Q1" - }, - "pin2": { - "compId": 44, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 7, - "pinName": "Q2" - }, - "pin2": { - "compId": 45, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 7, - "pinName": "Q3" - }, - "pin2": { - "compId": 46, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 7, - "pinName": "Q4" - }, - "pin2": { - "compId": 47, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y00" - }, - "pin2": { - "compId": 8, - "pinName": "B" - }, - "path": [ - { - "x": 210.0, - "y": 50.0 - }, - { - "x": 210.0, - "y": 420.0 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y01" - }, - "pin2": { - "compId": 9, - "pinName": "B" - }, - "path": [ - { - "x": 205.0, - "y": 60.0 - }, - { - "x": 205.0, - "y": 570.0 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y10" - }, - "pin2": { - "compId": 10, - "pinName": "B" - }, - "path": [ - { - "x": 200.0, - "y": 70.0 - }, - { - "x": 200.0, - "y": 720.0 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y11" - }, - "pin2": { - "compId": 11, - "pinName": "B" - }, - "path": [ - { - "x": 195.0, - "y": 80.0 - }, - { - "x": 195.0, - "y": 870.0 - } - ] - }, - { - "pin1": { - "compId": 16, - "pinName": "" - }, - "pin2": { - "compId": 12, - "pinName": "B" - }, - "path": [ - { - "x": 110.0, - "y": 370.0 - } - ] - }, - { - "pin1": { - "compId": 17, - "pinName": "" - }, - "pin2": { - "compId": 13, - "pinName": "B" - }, - "path": [ - { - "x": 105.0, - "y": 520.0 - } - ] - }, - { - "pin1": { - "compId": 18, - "pinName": "" - }, - "pin2": { - "compId": 14, - "pinName": "B" - }, - "path": [ - { - "x": 100.0, - "y": 670.0 - } - ] - }, - { - "pin1": { - "compId": 19, - "pinName": "" - }, - "pin2": { - "compId": 15, - "pinName": "B" - }, - "path": [ - { - "x": 95.0, - "y": 820.0 - } - ] - }, - { - "pin1": { - "compId": 32, - "pinName": "" - }, - "pin2": { - "compId": 8, - "pinName": "A1" - }, - "path": [ - { - "x": 130.0, - "y": 380.0 - } - ] - }, - { - "pin1": { - "compId": 33, - "pinName": "" - }, - "pin2": { - "compId": 8, - "pinName": "A2" - }, - "path": [ - { - "x": 125.0, - "y": 390.0 - } - ] - }, - { - "pin1": { - "compId": 34, - "pinName": "" - }, - "pin2": { - "compId": 8, - "pinName": "A3" - }, - "path": [ - { - "x": 120.0, - "y": 400.0 - } - ] - }, - { - "pin1": { - "compId": 35, - "pinName": "" - }, - "pin2": { - "compId": 8, - "pinName": "A4" - }, - "path": [ - { - "x": 115.0, - "y": 410.0 - } - ] - }, - { - "pin1": { - "compId": 36, - "pinName": "" - }, - "pin2": { - "compId": 9, - "pinName": "A1" - }, - "path": [ - { - "x": 130.0, - "y": 530.0 - } - ] - }, - { - "pin1": { - "compId": 37, - "pinName": "" - }, - "pin2": { - "compId": 9, - "pinName": "A2" - }, - "path": [ - { - "x": 125.0, - "y": 540.0 - } - ] - }, - { - "pin1": { - "compId": 38, - "pinName": "" - }, - "pin2": { - "compId": 9, - "pinName": "A3" - }, - "path": [ - { - "x": 120.0, - "y": 550.0 - } - ] - }, - { - "pin1": { - "compId": 39, - "pinName": "" - }, - "pin2": { - "compId": 9, - "pinName": "A4" - }, - "path": [ - { - "x": 115.0, - "y": 560.0 - } - ] - }, - { - "pin1": { - "compId": 40, - "pinName": "" - }, - "pin2": { - "compId": 10, - "pinName": "A1" - }, - "path": [ - { - "x": 130.0, - "y": 680.0 - } - ] - }, - { - "pin1": { - "compId": 41, - "pinName": "" - }, - "pin2": { - "compId": 10, - "pinName": "A2" - }, - "path": [ - { - "x": 125.0, - "y": 690.0 - } - ] - }, - { - "pin1": { - "compId": 42, - "pinName": "" - }, - "pin2": { - "compId": 10, - "pinName": "A3" - }, - "path": [ - { - "x": 120.0, - "y": 700.0 - } - ] - }, - { - "pin1": { - "compId": 43, - "pinName": "" - }, - "pin2": { - "compId": 10, - "pinName": "A4" - }, - "path": [ - { - "x": 115.0, - "y": 710.0 - } - ] - }, - { - "pin1": { - "compId": 44, - "pinName": "" - }, - "pin2": { - "compId": 11, - "pinName": "A1" - }, - "path": [ - { - "x": 130.0, - "y": 830.0 - } - ] - }, - { - "pin1": { - "compId": 45, - "pinName": "" - }, - "pin2": { - "compId": 11, - "pinName": "A2" - }, - "path": [ - { - "x": 125.0, - "y": 840.0 - } - ] - }, - { - "pin1": { - "compId": 46, - "pinName": "" - }, - "pin2": { - "compId": 11, - "pinName": "A3" - }, - "path": [ - { - "x": 120.0, - "y": 850.0 - } - ] - }, - { - "pin1": { - "compId": 47, - "pinName": "" - }, - "pin2": { - "compId": 11, - "pinName": "A4" - }, - "path": [ - { - "x": 115.0, - "y": 860.0 - } - ] - }, - { - "pin1": { - "compId": 32, - "pinName": "" - }, - "pin2": { - "compId": 12, - "pinName": "A1" - }, - "path": [] - }, - { - "pin1": { - "compId": 33, - "pinName": "" - }, - "pin2": { - "compId": 12, - "pinName": "A2" - }, - "path": [] - }, - { - "pin1": { - "compId": 34, - "pinName": "" - }, - "pin2": { - "compId": 12, - "pinName": "A3" - }, - "path": [] - }, - { - "pin1": { - "compId": 35, - "pinName": "" - }, - "pin2": { - "compId": 12, - "pinName": "A4" - }, - "path": [] - }, - { - "pin1": { - "compId": 36, - "pinName": "" - }, - "pin2": { - "compId": 13, - "pinName": "A1" - }, - "path": [] - }, - { - "pin1": { - "compId": 37, - "pinName": "" - }, - "pin2": { - "compId": 13, - "pinName": "A2" - }, - "path": [] - }, - { - "pin1": { - "compId": 38, - "pinName": "" - }, - "pin2": { - "compId": 13, - "pinName": "A3" - }, - "path": [] - }, - { - "pin1": { - "compId": 39, - "pinName": "" - }, - "pin2": { - "compId": 13, - "pinName": "A4" - }, - "path": [] - }, - { - "pin1": { - "compId": 40, - "pinName": "" - }, - "pin2": { - "compId": 14, - "pinName": "A1" - }, - "path": [] - }, - { - "pin1": { - "compId": 41, - "pinName": "" - }, - "pin2": { - "compId": 14, - "pinName": "A2" - }, - "path": [] - }, - { - "pin1": { - "compId": 42, - "pinName": "" - }, - "pin2": { - "compId": 14, - "pinName": "A3" - }, - "path": [] - }, - { - "pin1": { - "compId": 43, - "pinName": "" - }, - "pin2": { - "compId": 14, - "pinName": "A4" - }, - "path": [] - }, - { - "pin1": { - "compId": 44, - "pinName": "" - }, - "pin2": { - "compId": 15, - "pinName": "A1" - }, - "path": [] - }, - { - "pin1": { - "compId": 45, - "pinName": "" - }, - "pin2": { - "compId": 15, - "pinName": "A2" - }, - "path": [] - }, - { - "pin1": { - "compId": 46, - "pinName": "" - }, - "pin2": { - "compId": 15, - "pinName": "A3" - }, - "path": [] - }, - { - "pin1": { - "compId": 47, - "pinName": "" - }, - "pin2": { - "compId": 15, - "pinName": "A4" - }, - "path": [] - }, - { - "pin1": { - "compId": 8, - "pinName": "Y1" - }, - "pin2": { - "compId": 9, - "pinName": "C1" - }, - "path": [ - { - "x": 290.0, - "y": 380.0 - }, - { - "x": 290.0, - "y": 445.0 - }, - { - "x": 230.0, - "y": 445.0 - }, - { - "x": 230.0, - "y": 490.0 - } - ] - }, - { - "pin1": { - "compId": 8, - "pinName": "Y2" - }, - "pin2": { - "compId": 9, - "pinName": "C2" - }, - "path": [ - { - "x": 285.0, - "y": 390.0 - }, - { - "x": 285.0, - "y": 440.0 - }, - { - "x": 225.0, - "y": 440.0 - }, - { - "x": 225.0, - "y": 500.0 - } - ] - }, - { - "pin1": { - "compId": 8, - "pinName": "Y3" - }, - "pin2": { - "compId": 9, - "pinName": "C3" - }, - "path": [ - { - "x": 280.0, - "y": 400.0 - }, - { - "x": 280.0, - "y": 435.0 - }, - { - "x": 220.0, - "y": 435.0 - }, - { - "x": 220.0, - "y": 510.0 - } - ] - }, - { - "pin1": { - "compId": 8, - "pinName": "Y4" - }, - "pin2": { - "compId": 9, - "pinName": "C4" - }, - "path": [ - { - "x": 275.0, - "y": 410.0 - }, - { - "x": 275.0, - "y": 430.0 - }, - { - "x": 215.0, - "y": 430.0 - }, - { - "x": 215.0, - "y": 520.0 - } - ] - }, - { - "pin1": { - "compId": 9, - "pinName": "Y1" - }, - "pin2": { - "compId": 10, - "pinName": "C1" - }, - "path": [ - { - "x": 290.0, - "y": 490.0 - }, - { - "x": 290.0, - "y": 595.0 - }, - { - "x": 230.0, - "y": 595.0 - }, - { - "x": 230.0, - "y": 640.0 - } - ] - }, - { - "pin1": { - "compId": 9, - "pinName": "Y2" - }, - "pin2": { - "compId": 10, - "pinName": "C2" - }, - "path": [ - { - "x": 285.0, - "y": 500.0 - }, - { - "x": 285.0, - "y": 590.0 - }, - { - "x": 225.0, - "y": 590.0 - }, - { - "x": 225.0, - "y": 650.0 - } - ] - }, - { - "pin1": { - "compId": 9, - "pinName": "Y3" - }, - "pin2": { - "compId": 10, - "pinName": "C3" - }, - "path": [ - { - "x": 280.0, - "y": 510.0 - }, - { - "x": 280.0, - "y": 585.0 - }, - { - "x": 220.0, - "y": 585.0 - }, - { - "x": 220.0, - "y": 660.0 - } - ] - }, - { - "pin1": { - "compId": 9, - "pinName": "Y4" - }, - "pin2": { - "compId": 10, - "pinName": "C4" - }, - "path": [ - { - "x": 275.0, - "y": 520.0 - }, - { - "x": 275.0, - "y": 580.0 - }, - { - "x": 215.0, - "y": 580.0 - }, - { - "x": 215.0, - "y": 670.0 - } - ] - }, - { - "pin1": { - "compId": 10, - "pinName": "Y1" - }, - "pin2": { - "compId": 11, - "pinName": "C1" - }, - "path": [ - { - "x": 290.0, - "y": 640.0 - }, - { - "x": 290.0, - "y": 745.0 - }, - { - "x": 230.0, - "y": 745.0 - }, - { - "x": 230.0, - "y": 790.0 - } - ] - }, - { - "pin1": { - "compId": 10, - "pinName": "Y2" - }, - "pin2": { - "compId": 11, - "pinName": "C2" - }, - "path": [ - { - "x": 285.0, - "y": 650.0 - }, - { - "x": 285.0, - "y": 740.0 - }, - { - "x": 225.0, - "y": 740.0 - }, - { - "x": 225.0, - "y": 800.0 - } - ] - }, - { - "pin1": { - "compId": 10, - "pinName": "Y3" - }, - "pin2": { - "compId": 11, - "pinName": "C3" - }, - "path": [ - { - "x": 280.0, - "y": 660.0 - }, - { - "x": 280.0, - "y": 735.0 - }, - { - "x": 220.0, - "y": 735.0 - }, - { - "x": 220.0, - "y": 810.0 - } - ] - }, - { - "pin1": { - "compId": 10, - "pinName": "Y4" - }, - "pin2": { - "compId": 11, - "pinName": "C4" - }, - "path": [ - { - "x": 275.0, - "y": 670.0 - }, - { - "x": 275.0, - "y": 730.0 - }, - { - "x": 215.0, - "y": 730.0 - }, - { - "x": 215.0, - "y": 820.0 - } - ] - }, - { - "pin1": { - "compId": 11, - "pinName": "Y1" - }, - "pin2": { - "compId": 0, - "pinName": "QA1" - }, - "path": [ - { - "x": 300.0, - "y": 790.0 - }, - { - "x": 300.0, - "y": 50.0 - } - ] - }, - { - "pin1": { - "compId": 11, - "pinName": "Y2" - }, - "pin2": { - "compId": 0, - "pinName": "QA2" - }, - "path": [ - { - "x": 305.0, - "y": 800.0 - }, - { - "x": 305.0, - "y": 150.0 - } - ] - }, - { - "pin1": { - "compId": 11, - "pinName": "Y3" - }, - "pin2": { - "compId": 0, - "pinName": "QA3" - }, - "path": [ - { - "x": 310.0, - "y": 810.0 - }, - { - "x": 310.0, - "y": 250.0 - } - ] - }, - { - "pin1": { - "compId": 11, - "pinName": "Y4" - }, - "pin2": { - "compId": 0, - "pinName": "QA4" - }, - "path": [ - { - "x": 315.0, - "y": 820.0 - }, - { - "x": 315.0, - "y": 350.0 - } - ] - }, - { - "pin1": { - "compId": 12, - "pinName": "Y1" - }, - "pin2": { - "compId": 13, - "pinName": "C1" - }, - "path": [ - { - "x": 190.0, - "y": 330.0 - }, - { - "x": 190.0, - "y": 430.0 - }, - { - "x": 130.0, - "y": 430.0 - }, - { - "x": 130.0, - "y": 440.0 - } - ] - }, - { - "pin1": { - "compId": 12, - "pinName": "Y2" - }, - "pin2": { - "compId": 13, - "pinName": "C2" - }, - "path": [ - { - "x": 185.0, - "y": 340.0 - }, - { - "x": 185.0, - "y": 425.0 - }, - { - "x": 125.0, - "y": 425.0 - }, - { - "x": 125.0, - "y": 450.0 - } - ] - }, - { - "pin1": { - "compId": 12, - "pinName": "Y3" - }, - "pin2": { - "compId": 13, - "pinName": "C3" - }, - "path": [ - { - "x": 180.0, - "y": 350.0 - }, - { - "x": 180.0, - "y": 420.0 - }, - { - "x": 120.0, - "y": 420.0 - }, - { - "x": 120.0, - "y": 460.0 - } - ] - }, - { - "pin1": { - "compId": 12, - "pinName": "Y4" - }, - "pin2": { - "compId": 13, - "pinName": "C4" - }, - "path": [ - { - "x": 175.0, - "y": 360.0 - }, - { - "x": 175.0, - "y": 415.0 - }, - { - "x": 115.0, - "y": 415.0 - }, - { - "x": 115.0, - "y": 470.0 - } - ] - }, - { - "pin1": { - "compId": 13, - "pinName": "Y1" - }, - "pin2": { - "compId": 14, - "pinName": "C1" - }, - "path": [ - { - "x": 190.0, - "y": 440.0 - }, - { - "x": 190.0, - "y": 580.0 - }, - { - "x": 130.0, - "y": 580.0 - }, - { - "x": 130.0, - "y": 590.0 - } - ] - }, - { - "pin1": { - "compId": 13, - "pinName": "Y2" - }, - "pin2": { - "compId": 14, - "pinName": "C2" - }, - "path": [ - { - "x": 185.0, - "y": 450.0 - }, - { - "x": 185.0, - "y": 575.0 - }, - { - "x": 125.0, - "y": 575.0 - }, - { - "x": 125.0, - "y": 600.0 - } - ] - }, - { - "pin1": { - "compId": 13, - "pinName": "Y3" - }, - "pin2": { - "compId": 14, - "pinName": "C3" - }, - "path": [ - { - "x": 180.0, - "y": 460.0 - }, - { - "x": 180.0, - "y": 570.0 - }, - { - "x": 120.0, - "y": 570.0 - }, - { - "x": 120.0, - "y": 610.0 - } - ] - }, - { - "pin1": { - "compId": 13, - "pinName": "Y4" - }, - "pin2": { - "compId": 14, - "pinName": "C4" - }, - "path": [ - { - "x": 175.0, - "y": 470.0 - }, - { - "x": 175.0, - "y": 565.0 - }, - { - "x": 115.0, - "y": 565.0 - }, - { - "x": 115.0, - "y": 620.0 - } - ] - }, - { - "pin1": { - "compId": 14, - "pinName": "Y1" - }, - "pin2": { - "compId": 15, - "pinName": "C1" - }, - "path": [ - { - "x": 190.0, - "y": 590.0 - }, - { - "x": 190.0, - "y": 730.0 - }, - { - "x": 130.0, - "y": 730.0 - }, - { - "x": 130.0, - "y": 740.0 - } - ] - }, - { - "pin1": { - "compId": 14, - "pinName": "Y2" - }, - "pin2": { - "compId": 15, - "pinName": "C2" - }, - "path": [ - { - "x": 185.0, - "y": 600.0 - }, - { - "x": 185.0, - "y": 725.0 - }, - { - "x": 125.0, - "y": 725.0 - }, - { - "x": 125.0, - "y": 750.0 - } - ] - }, - { - "pin1": { - "compId": 14, - "pinName": "Y3" - }, - "pin2": { - "compId": 15, - "pinName": "C3" - }, - "path": [ - { - "x": 180.0, - "y": 610.0 - }, - { - "x": 180.0, - "y": 720.0 - }, - { - "x": 120.0, - "y": 720.0 - }, - { - "x": 120.0, - "y": 760.0 - } - ] - }, - { - "pin1": { - "compId": 14, - "pinName": "Y4" - }, - "pin2": { - "compId": 15, - "pinName": "C4" - }, - "path": [ - { - "x": 175.0, - "y": 620.0 - }, - { - "x": 175.0, - "y": 715.0 - }, - { - "x": 115.0, - "y": 715.0 - }, - { - "x": 115.0, - "y": 770.0 - } - ] - }, - { - "pin1": { - "compId": 15, - "pinName": "Y1" - }, - "pin2": { - "compId": 0, - "pinName": "QB1" - }, - "path": [ - { - "x": 190.0, - "y": 740.0 - }, - { - "x": 190.0, - "y": 880.0 - }, - { - "x": 325.0, - "y": 880.0 - }, - { - "x": 325.0, - "y": 450.0 - } - ] - }, - { - "pin1": { - "compId": 15, - "pinName": "Y2" - }, - "pin2": { - "compId": 0, - "pinName": "QB2" - }, - "path": [ - { - "x": 185.0, - "y": 750.0 - }, - { - "x": 185.0, - "y": 885.0 - }, - { - "x": 330.0, - "y": 885.0 - }, - { - "x": 330.0, - "y": 550.0 - } - ] - }, - { - "pin1": { - "compId": 15, - "pinName": "Y3" - }, - "pin2": { - "compId": 0, - "pinName": "QB3" - }, - "path": [ - { - "x": 180.0, - "y": 760.0 - }, - { - "x": 180.0, - "y": 890.0 - }, - { - "x": 335.0, - "y": 890.0 - }, - { - "x": 335.0, - "y": 650.0 - } - ] - }, - { - "pin1": { - "compId": 15, - "pinName": "Y4" - }, - "pin2": { - "compId": 0, - "pinName": "QB4" - }, - "path": [ - { - "x": 175.0, - "y": 770.0 - }, - { - "x": 175.0, - "y": 895.0 - }, - { - "x": 340.0, - "y": 895.0 - }, - { - "x": 340.0, - "y": 750.0 - } - ] - } - ] - }, - "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", - "symbolRendererParams": { - "centerText": "GUIram2", - "horizontalComponentCenter": 17.5, - "centerTextHeight": 5.0, - "pinLabelHeight": 3.5, - "pinLabelMargin": 0.5 - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/components/GUIram4.json b/net.mograsim.logic.ui.am2900/components/GUIram4.json deleted file mode 100644 index 976f09cc..00000000 --- a/net.mograsim.logic.ui.am2900/components/GUIram4.json +++ /dev/null @@ -1,3154 +0,0 @@ -mograsim version: 0.1.3 -{ - "width": 35.0, - "height": 130.0, - "interfacePins": [ - { - "location": { - "x": 35.0, - "y": 5.0 - }, - "name": "QA1", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 55.0 - }, - "name": "QB2", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 45.0 - }, - "name": "QB1", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 25.0 - }, - "name": "QA3", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 75.0 - }, - "name": "QB4", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 15.0 - }, - "name": "QA2", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 65.0 - }, - "name": "QB3", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 35.0 - }, - "name": "QA4", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 95.0 - }, - "name": "D1", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 45.0 - }, - "name": "B0", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 85.0 - }, - "name": "WE", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 105.0 - }, - "name": "D2", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 5.0 - }, - "name": "A0", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 55.0 - }, - "name": "B1", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 115.0 - }, - "name": "D3", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 15.0 - }, - "name": "A1", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 65.0 - }, - "name": "B2", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 125.0 - }, - "name": "D4", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 25.0 - }, - "name": "A2", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 75.0 - }, - "name": "B3", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 35.0 - }, - "name": "A3", - "logicWidth": 1 - } - ], - "submodel": { - "innerScale": 0.1, - "subComps": [ - { - "pos": { - "x": 55.0, - "y": 45.0 - }, - "id": "GUIdemux2" - }, - { - "pos": { - "x": 55.0, - "y": 150.0 - }, - "id": "GUIdemux2" - }, - { - "pos": { - "x": 235.0, - "y": 150.0 - }, - "id": "GUIand41" - }, - { - "pos": { - "x": 80.0, - "y": 330.0 - }, - "id": "GUIram2" - }, - { - "pos": { - "x": 80.0, - "y": 480.0 - }, - "id": "GUIram2" - }, - { - "pos": { - "x": 80.0, - "y": 630.0 - }, - "id": "GUIram2" - }, - { - "pos": { - "x": 80.0, - "y": 780.0 - }, - "id": "GUIram2" - }, - { - "pos": { - "x": 250.0, - "y": 375.0 - }, - "id": "GUIand41" - }, - { - "pos": { - "x": 250.0, - "y": 485.0 - }, - "id": "GUIandor414" - }, - { - "pos": { - "x": 250.0, - "y": 635.0 - }, - "id": "GUIandor414" - }, - { - "pos": { - "x": 250.0, - "y": 785.0 - }, - "id": "GUIandor414" - }, - { - "pos": { - "x": 155.0, - "y": 325.0 - }, - "id": "GUIand41" - }, - { - "pos": { - "x": 155.0, - "y": 435.0 - }, - "id": "GUIandor414" - }, - { - "pos": { - "x": 155.0, - "y": 585.0 - }, - "id": "GUIandor414" - }, - { - "pos": { - "x": 155.0, - "y": 735.0 - }, - "id": "GUIandor414" - }, - { - "pos": { - "x": 229.0, - "y": 154.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 224.0, - "y": 164.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 219.0, - "y": 174.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 214.0, - "y": 184.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 59.0, - "y": 534.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 64.0, - "y": 544.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 69.0, - "y": 554.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 74.0, - "y": 564.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 59.0, - "y": 684.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 64.0, - "y": 694.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 69.0, - "y": 704.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 74.0, - "y": 714.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 59.0, - "y": 834.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 64.0, - "y": 844.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 69.0, - "y": 854.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 74.0, - "y": 864.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 39.0, - "y": 484.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 44.0, - "y": 494.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 49.0, - "y": 504.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 54.0, - "y": 514.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 39.0, - "y": 634.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 44.0, - "y": 644.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 49.0, - "y": 654.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 54.0, - "y": 664.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 39.0, - "y": 334.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 44.0, - "y": 349.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 49.0, - "y": 649.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 54.0, - "y": 749.0 - }, - "id": "WireCrossPoint", - "params": 1 - } - ], - "innerWires": [ - { - "pin1": { - "compId": 0, - "pinName": "A0" - }, - "pin2": { - "compId": 1, - "pinName": "S0" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "A1" - }, - "pin2": { - "compId": 1, - "pinName": "S1" - }, - "path": [ - { - "x": 10.0, - "y": 150.0 - }, - { - "x": 10.0, - "y": 60.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "B0" - }, - "pin2": { - "compId": 2, - "pinName": "S0" - }, - "path": [ - { - "x": 5.0, - "y": 450.0 - }, - { - "x": 5.0, - "y": 155.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "B1" - }, - "pin2": { - "compId": 2, - "pinName": "S1" - }, - "path": [ - { - "x": 10.0, - "y": 550.0 - }, - { - "x": 10.0, - "y": 165.0 - } - ] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y00" - }, - "pin2": { - "compId": 16, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y01" - }, - "pin2": { - "compId": 17, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y10" - }, - "pin2": { - "compId": 18, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y11" - }, - "pin2": { - "compId": 19, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 16, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "A1" - }, - "path": [] - }, - { - "pin1": { - "compId": 17, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "A2" - }, - "path": [] - }, - { - "pin1": { - "compId": 18, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "A3" - }, - "path": [] - }, - { - "pin1": { - "compId": 19, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "A4" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "WE" - }, - "pin2": { - "compId": 3, - "pinName": "B" - }, - "path": [ - { - "x": 15.0, - "y": 850.0 - }, - { - "x": 15.0, - "y": 195.0 - } - ] - }, - { - "pin1": { - "compId": 3, - "pinName": "Y1" - }, - "pin2": { - "compId": 4, - "pinName": "WE" - }, - "path": [ - { - "x": 290.0, - "y": 155.0 - }, - { - "x": 290.0, - "y": 230.0 - }, - { - "x": 35.0, - "y": 230.0 - }, - { - "x": 35.0, - "y": 375.0 - } - ] - }, - { - "pin1": { - "compId": 3, - "pinName": "Y2" - }, - "pin2": { - "compId": 5, - "pinName": "WE" - }, - "path": [ - { - "x": 285.0, - "y": 165.0 - }, - { - "x": 285.0, - "y": 225.0 - }, - { - "x": 30.0, - "y": 225.0 - }, - { - "x": 30.0, - "y": 525.0 - } - ] - }, - { - "pin1": { - "compId": 3, - "pinName": "Y3" - }, - "pin2": { - "compId": 6, - "pinName": "WE" - }, - "path": [ - { - "x": 280.0, - "y": 175.0 - }, - { - "x": 280.0, - "y": 220.0 - }, - { - "x": 25.0, - "y": 220.0 - }, - { - "x": 25.0, - "y": 675.0 - } - ] - }, - { - "pin1": { - "compId": 3, - "pinName": "Y4" - }, - "pin2": { - "compId": 7, - "pinName": "WE" - }, - "path": [ - { - "x": 275.0, - "y": 185.0 - }, - { - "x": 275.0, - "y": 215.0 - }, - { - "x": 20.0, - "y": 215.0 - }, - { - "x": 20.0, - "y": 825.0 - } - ] - }, - { - "pin1": { - "compId": 32, - "pinName": "" - }, - "pin2": { - "compId": 40, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 40, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "A0" - }, - "path": [] - }, - { - "pin1": { - "compId": 33, - "pinName": "" - }, - "pin2": { - "compId": 41, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 41, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "A1" - }, - "path": [ - { - "x": 45.0, - "y": 345.0 - } - ] - }, - { - "pin1": { - "compId": 34, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "B0" - }, - "path": [ - { - "x": 50.0, - "y": 355.0 - } - ] - }, - { - "pin1": { - "compId": 35, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "B1" - }, - "path": [ - { - "x": 55.0, - "y": 365.0 - } - ] - }, - { - "pin1": { - "compId": 32, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "A0" - }, - "path": [] - }, - { - "pin1": { - "compId": 33, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "A1" - }, - "path": [] - }, - { - "pin1": { - "compId": 34, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "B0" - }, - "path": [] - }, - { - "pin1": { - "compId": 35, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "B1" - }, - "path": [] - }, - { - "pin1": { - "compId": 32, - "pinName": "" - }, - "pin2": { - "compId": 36, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 33, - "pinName": "" - }, - "pin2": { - "compId": 37, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 34, - "pinName": "" - }, - "pin2": { - "compId": 42, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "B2" - }, - "pin2": { - "compId": 42, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 42, - "pinName": "" - }, - "pin2": { - "compId": 38, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 35, - "pinName": "" - }, - "pin2": { - "compId": 39, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 36, - "pinName": "" - }, - "pin2": { - "compId": 6, - "pinName": "A0" - }, - "path": [] - }, - { - "pin1": { - "compId": 37, - "pinName": "" - }, - "pin2": { - "compId": 6, - "pinName": "A1" - }, - "path": [] - }, - { - "pin1": { - "compId": 38, - "pinName": "" - }, - "pin2": { - "compId": 6, - "pinName": "B0" - }, - "path": [] - }, - { - "pin1": { - "compId": 39, - "pinName": "" - }, - "pin2": { - "compId": 6, - "pinName": "B1" - }, - "path": [] - }, - { - "pin1": { - "compId": 36, - "pinName": "" - }, - "pin2": { - "compId": 7, - "pinName": "A0" - }, - "path": [ - { - "x": 40.0, - "y": 785.0 - } - ] - }, - { - "pin1": { - "compId": 37, - "pinName": "" - }, - "pin2": { - "compId": 7, - "pinName": "A1" - }, - "path": [ - { - "x": 45.0, - "y": 795.0 - } - ] - }, - { - "pin1": { - "compId": 38, - "pinName": "" - }, - "pin2": { - "compId": 7, - "pinName": "B0" - }, - "path": [ - { - "x": 50.0, - "y": 805.0 - } - ] - }, - { - "pin1": { - "compId": 39, - "pinName": "" - }, - "pin2": { - "compId": 43, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 43, - "pinName": "" - }, - "pin2": { - "compId": 7, - "pinName": "B1" - }, - "path": [ - { - "x": 55.0, - "y": 815.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "A2" - }, - "pin2": { - "compId": 40, - "pinName": "" - }, - "path": [ - { - "x": 40.0, - "y": 250.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "A3" - }, - "pin2": { - "compId": 41, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "B3" - }, - "pin2": { - "compId": 43, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 20, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "D1" - }, - "path": [ - { - "x": 60.0, - "y": 385.0 - } - ] - }, - { - "pin1": { - "compId": 21, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "D2" - }, - "path": [ - { - "x": 65.0, - "y": 395.0 - } - ] - }, - { - "pin1": { - "compId": 22, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "D3" - }, - "path": [ - { - "x": 70.0, - "y": 405.0 - } - ] - }, - { - "pin1": { - "compId": 23, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "D4" - }, - "path": [ - { - "x": 75.0, - "y": 415.0 - } - ] - }, - { - "pin1": { - "compId": 20, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "D1" - }, - "path": [] - }, - { - "pin1": { - "compId": 21, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "D2" - }, - "path": [] - }, - { - "pin1": { - "compId": 22, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "D3" - }, - "path": [] - }, - { - "pin1": { - "compId": 23, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "D4" - }, - "path": [] - }, - { - "pin1": { - "compId": 20, - "pinName": "" - }, - "pin2": { - "compId": 24, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 21, - "pinName": "" - }, - "pin2": { - "compId": 25, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 22, - "pinName": "" - }, - "pin2": { - "compId": 26, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 23, - "pinName": "" - }, - "pin2": { - "compId": 27, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 24, - "pinName": "" - }, - "pin2": { - "compId": 6, - "pinName": "D1" - }, - "path": [] - }, - { - "pin1": { - "compId": 25, - "pinName": "" - }, - "pin2": { - "compId": 6, - "pinName": "D2" - }, - "path": [] - }, - { - "pin1": { - "compId": 26, - "pinName": "" - }, - "pin2": { - "compId": 6, - "pinName": "D3" - }, - "path": [] - }, - { - "pin1": { - "compId": 27, - "pinName": "" - }, - "pin2": { - "compId": 6, - "pinName": "D4" - }, - "path": [] - }, - { - "pin1": { - "compId": 24, - "pinName": "" - }, - "pin2": { - "compId": 28, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 25, - "pinName": "" - }, - "pin2": { - "compId": 29, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 26, - "pinName": "" - }, - "pin2": { - "compId": 30, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 27, - "pinName": "" - }, - "pin2": { - "compId": 31, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 28, - "pinName": "" - }, - "pin2": { - "compId": 7, - "pinName": "D1" - }, - "path": [] - }, - { - "pin1": { - "compId": 29, - "pinName": "" - }, - "pin2": { - "compId": 7, - "pinName": "D2" - }, - "path": [] - }, - { - "pin1": { - "compId": 30, - "pinName": "" - }, - "pin2": { - "compId": 7, - "pinName": "D3" - }, - "path": [] - }, - { - "pin1": { - "compId": 31, - "pinName": "" - }, - "pin2": { - "compId": 7, - "pinName": "D4" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "D1" - }, - "pin2": { - "compId": 28, - "pinName": "" - }, - "path": [ - { - "x": 60.0, - "y": 950.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "D2" - }, - "pin2": { - "compId": 29, - "pinName": "" - }, - "path": [ - { - "x": 65.0, - "y": 1050.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "D3" - }, - "pin2": { - "compId": 30, - "pinName": "" - }, - "path": [ - { - "x": 70.0, - "y": 1150.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "D4" - }, - "pin2": { - "compId": 31, - "pinName": "" - }, - "path": [ - { - "x": 75.0, - "y": 1250.0 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y00" - }, - "pin2": { - "compId": 12, - "pinName": "B" - }, - "path": [ - { - "x": 135.0, - "y": 50.0 - }, - { - "x": 135.0, - "y": 370.0 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y01" - }, - "pin2": { - "compId": 13, - "pinName": "B" - }, - "path": [ - { - "x": 130.0, - "y": 60.0 - }, - { - "x": 130.0, - "y": 520.0 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y10" - }, - "pin2": { - "compId": 14, - "pinName": "B" - }, - "path": [ - { - "x": 125.0, - "y": 70.0 - }, - { - "x": 125.0, - "y": 670.0 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y11" - }, - "pin2": { - "compId": 15, - "pinName": "B" - }, - "path": [ - { - "x": 120.0, - "y": 80.0 - }, - { - "x": 120.0, - "y": 820.0 - } - ] - }, - { - "pin1": { - "compId": 16, - "pinName": "" - }, - "pin2": { - "compId": 8, - "pinName": "B" - }, - "path": [ - { - "x": 230.0, - "y": 420.0 - } - ] - }, - { - "pin1": { - "compId": 17, - "pinName": "" - }, - "pin2": { - "compId": 9, - "pinName": "B" - }, - "path": [ - { - "x": 225.0, - "y": 570.0 - } - ] - }, - { - "pin1": { - "compId": 18, - "pinName": "" - }, - "pin2": { - "compId": 10, - "pinName": "B" - }, - "path": [ - { - "x": 220.0, - "y": 720.0 - } - ] - }, - { - "pin1": { - "compId": 19, - "pinName": "" - }, - "pin2": { - "compId": 11, - "pinName": "B" - }, - "path": [ - { - "x": 215.0, - "y": 870.0 - } - ] - }, - { - "pin1": { - "compId": 4, - "pinName": "QB1" - }, - "pin2": { - "compId": 8, - "pinName": "A1" - }, - "path": [ - { - "x": 140.0, - "y": 375.0 - }, - { - "x": 140.0, - "y": 380.0 - } - ] - }, - { - "pin1": { - "compId": 4, - "pinName": "QB2" - }, - "pin2": { - "compId": 8, - "pinName": "A2" - }, - "path": [ - { - "x": 140.0, - "y": 385.0 - }, - { - "x": 140.0, - "y": 390.0 - } - ] - }, - { - "pin1": { - "compId": 4, - "pinName": "QB3" - }, - "pin2": { - "compId": 8, - "pinName": "A3" - }, - "path": [ - { - "x": 140.0, - "y": 395.0 - }, - { - "x": 140.0, - "y": 400.0 - } - ] - }, - { - "pin1": { - "compId": 4, - "pinName": "QB4" - }, - "pin2": { - "compId": 8, - "pinName": "A4" - }, - "path": [ - { - "x": 140.0, - "y": 405.0 - }, - { - "x": 140.0, - "y": 410.0 - } - ] - }, - { - "pin1": { - "compId": 5, - "pinName": "QB1" - }, - "pin2": { - "compId": 9, - "pinName": "A1" - }, - "path": [ - { - "x": 140.0, - "y": 525.0 - }, - { - "x": 140.0, - "y": 530.0 - } - ] - }, - { - "pin1": { - "compId": 5, - "pinName": "QB2" - }, - "pin2": { - "compId": 9, - "pinName": "A2" - }, - "path": [ - { - "x": 140.0, - "y": 535.0 - }, - { - "x": 140.0, - "y": 540.0 - } - ] - }, - { - "pin1": { - "compId": 5, - "pinName": "QB3" - }, - "pin2": { - "compId": 9, - "pinName": "A3" - }, - "path": [ - { - "x": 140.0, - "y": 545.0 - }, - { - "x": 140.0, - "y": 550.0 - } - ] - }, - { - "pin1": { - "compId": 5, - "pinName": "QB4" - }, - "pin2": { - "compId": 9, - "pinName": "A4" - }, - "path": [ - { - "x": 140.0, - "y": 555.0 - }, - { - "x": 140.0, - "y": 560.0 - } - ] - }, - { - "pin1": { - "compId": 6, - "pinName": "QB1" - }, - "pin2": { - "compId": 10, - "pinName": "A1" - }, - "path": [ - { - "x": 140.0, - "y": 675.0 - }, - { - "x": 140.0, - "y": 680.0 - } - ] - }, - { - "pin1": { - "compId": 6, - "pinName": "QB2" - }, - "pin2": { - "compId": 10, - "pinName": "A2" - }, - "path": [ - { - "x": 140.0, - "y": 685.0 - }, - { - "x": 140.0, - "y": 690.0 - } - ] - }, - { - "pin1": { - "compId": 6, - "pinName": "QB3" - }, - "pin2": { - "compId": 10, - "pinName": "A3" - }, - "path": [ - { - "x": 140.0, - "y": 695.0 - }, - { - "x": 140.0, - "y": 700.0 - } - ] - }, - { - "pin1": { - "compId": 6, - "pinName": "QB4" - }, - "pin2": { - "compId": 10, - "pinName": "A4" - }, - "path": [ - { - "x": 140.0, - "y": 705.0 - }, - { - "x": 140.0, - "y": 710.0 - } - ] - }, - { - "pin1": { - "compId": 7, - "pinName": "QB1" - }, - "pin2": { - "compId": 11, - "pinName": "A1" - }, - "path": [ - { - "x": 140.0, - "y": 825.0 - }, - { - "x": 140.0, - "y": 830.0 - } - ] - }, - { - "pin1": { - "compId": 7, - "pinName": "QB2" - }, - "pin2": { - "compId": 11, - "pinName": "A2" - }, - "path": [ - { - "x": 140.0, - "y": 835.0 - }, - { - "x": 140.0, - "y": 840.0 - } - ] - }, - { - "pin1": { - "compId": 7, - "pinName": "QB3" - }, - "pin2": { - "compId": 11, - "pinName": "A3" - }, - "path": [ - { - "x": 140.0, - "y": 845.0 - }, - { - "x": 140.0, - "y": 850.0 - } - ] - }, - { - "pin1": { - "compId": 7, - "pinName": "QB4" - }, - "pin2": { - "compId": 11, - "pinName": "A4" - }, - "path": [ - { - "x": 140.0, - "y": 855.0 - }, - { - "x": 140.0, - "y": 860.0 - } - ] - }, - { - "pin1": { - "compId": 4, - "pinName": "QA1" - }, - "pin2": { - "compId": 12, - "pinName": "A1" - }, - "path": [ - { - "x": 140.0, - "y": 335.0 - }, - { - "x": 140.0, - "y": 330.0 - } - ] - }, - { - "pin1": { - "compId": 4, - "pinName": "QA2" - }, - "pin2": { - "compId": 12, - "pinName": "A2" - }, - "path": [ - { - "x": 140.0, - "y": 345.0 - }, - { - "x": 140.0, - "y": 340.0 - } - ] - }, - { - "pin1": { - "compId": 4, - "pinName": "QA3" - }, - "pin2": { - "compId": 12, - "pinName": "A3" - }, - "path": [ - { - "x": 140.0, - "y": 355.0 - }, - { - "x": 140.0, - "y": 350.0 - } - ] - }, - { - "pin1": { - "compId": 4, - "pinName": "QA4" - }, - "pin2": { - "compId": 12, - "pinName": "A4" - }, - "path": [ - { - "x": 140.0, - "y": 365.0 - }, - { - "x": 140.0, - "y": 360.0 - } - ] - }, - { - "pin1": { - "compId": 5, - "pinName": "QA1" - }, - "pin2": { - "compId": 13, - "pinName": "A1" - }, - "path": [ - { - "x": 140.0, - "y": 485.0 - }, - { - "x": 140.0, - "y": 480.0 - } - ] - }, - { - "pin1": { - "compId": 5, - "pinName": "QA2" - }, - "pin2": { - "compId": 13, - "pinName": "A2" - }, - "path": [ - { - "x": 140.0, - "y": 495.0 - }, - { - "x": 140.0, - "y": 490.0 - } - ] - }, - { - "pin1": { - "compId": 5, - "pinName": "QA3" - }, - "pin2": { - "compId": 13, - "pinName": "A3" - }, - "path": [ - { - "x": 140.0, - "y": 505.0 - }, - { - "x": 140.0, - "y": 500.0 - } - ] - }, - { - "pin1": { - "compId": 5, - "pinName": "QA4" - }, - "pin2": { - "compId": 13, - "pinName": "A4" - }, - "path": [ - { - "x": 140.0, - "y": 515.0 - }, - { - "x": 140.0, - "y": 510.0 - } - ] - }, - { - "pin1": { - "compId": 6, - "pinName": "QA1" - }, - "pin2": { - "compId": 14, - "pinName": "A1" - }, - "path": [ - { - "x": 140.0, - "y": 635.0 - }, - { - "x": 140.0, - "y": 630.0 - } - ] - }, - { - "pin1": { - "compId": 6, - "pinName": "QA2" - }, - "pin2": { - "compId": 14, - "pinName": "A2" - }, - "path": [ - { - "x": 140.0, - "y": 645.0 - }, - { - "x": 140.0, - "y": 640.0 - } - ] - }, - { - "pin1": { - "compId": 6, - "pinName": "QA3" - }, - "pin2": { - "compId": 14, - "pinName": "A3" - }, - "path": [ - { - "x": 140.0, - "y": 655.0 - }, - { - "x": 140.0, - "y": 650.0 - } - ] - }, - { - "pin1": { - "compId": 6, - "pinName": "QA4" - }, - "pin2": { - "compId": 14, - "pinName": "A4" - }, - "path": [ - { - "x": 140.0, - "y": 665.0 - }, - { - "x": 140.0, - "y": 660.0 - } - ] - }, - { - "pin1": { - "compId": 7, - "pinName": "QA1" - }, - "pin2": { - "compId": 15, - "pinName": "A1" - }, - "path": [ - { - "x": 140.0, - "y": 785.0 - }, - { - "x": 140.0, - "y": 780.0 - } - ] - }, - { - "pin1": { - "compId": 7, - "pinName": "QA2" - }, - "pin2": { - "compId": 15, - "pinName": "A2" - }, - "path": [ - { - "x": 140.0, - "y": 795.0 - }, - { - "x": 140.0, - "y": 790.0 - } - ] - }, - { - "pin1": { - "compId": 7, - "pinName": "QA3" - }, - "pin2": { - "compId": 15, - "pinName": "A3" - }, - "path": [ - { - "x": 140.0, - "y": 805.0 - }, - { - "x": 140.0, - "y": 800.0 - } - ] - }, - { - "pin1": { - "compId": 7, - "pinName": "QA4" - }, - "pin2": { - "compId": 15, - "pinName": "A4" - }, - "path": [ - { - "x": 140.0, - "y": 815.0 - }, - { - "x": 140.0, - "y": 810.0 - } - ] - }, - { - "pin1": { - "compId": 8, - "pinName": "Y1" - }, - "pin2": { - "compId": 9, - "pinName": "C1" - }, - "path": [ - { - "x": 305.0, - "y": 380.0 - }, - { - "x": 305.0, - "y": 445.0 - }, - { - "x": 245.0, - "y": 445.0 - }, - { - "x": 245.0, - "y": 490.0 - } - ] - }, - { - "pin1": { - "compId": 8, - "pinName": "Y2" - }, - "pin2": { - "compId": 9, - "pinName": "C2" - }, - "path": [ - { - "x": 300.0, - "y": 390.0 - }, - { - "x": 300.0, - "y": 440.0 - }, - { - "x": 240.0, - "y": 440.0 - }, - { - "x": 240.0, - "y": 500.0 - } - ] - }, - { - "pin1": { - "compId": 8, - "pinName": "Y3" - }, - "pin2": { - "compId": 9, - "pinName": "C3" - }, - "path": [ - { - "x": 295.0, - "y": 400.0 - }, - { - "x": 295.0, - "y": 435.0 - }, - { - "x": 235.0, - "y": 435.0 - }, - { - "x": 235.0, - "y": 510.0 - } - ] - }, - { - "pin1": { - "compId": 8, - "pinName": "Y4" - }, - "pin2": { - "compId": 9, - "pinName": "C4" - }, - "path": [ - { - "x": 290.0, - "y": 410.0 - }, - { - "x": 290.0, - "y": 430.0 - }, - { - "x": 230.0, - "y": 430.0 - }, - { - "x": 230.0, - "y": 520.0 - } - ] - }, - { - "pin1": { - "compId": 9, - "pinName": "Y1" - }, - "pin2": { - "compId": 10, - "pinName": "C1" - }, - "path": [ - { - "x": 305.0, - "y": 490.0 - }, - { - "x": 305.0, - "y": 595.0 - }, - { - "x": 245.0, - "y": 595.0 - }, - { - "x": 245.0, - "y": 640.0 - } - ] - }, - { - "pin1": { - "compId": 9, - "pinName": "Y2" - }, - "pin2": { - "compId": 10, - "pinName": "C2" - }, - "path": [ - { - "x": 300.0, - "y": 500.0 - }, - { - "x": 300.0, - "y": 590.0 - }, - { - "x": 240.0, - "y": 590.0 - }, - { - "x": 240.0, - "y": 650.0 - } - ] - }, - { - "pin1": { - "compId": 9, - "pinName": "Y3" - }, - "pin2": { - "compId": 10, - "pinName": "C3" - }, - "path": [ - { - "x": 295.0, - "y": 510.0 - }, - { - "x": 295.0, - "y": 585.0 - }, - { - "x": 235.0, - "y": 585.0 - }, - { - "x": 235.0, - "y": 660.0 - } - ] - }, - { - "pin1": { - "compId": 9, - "pinName": "Y4" - }, - "pin2": { - "compId": 10, - "pinName": "C4" - }, - "path": [ - { - "x": 290.0, - "y": 520.0 - }, - { - "x": 290.0, - "y": 580.0 - }, - { - "x": 230.0, - "y": 580.0 - }, - { - "x": 230.0, - "y": 670.0 - } - ] - }, - { - "pin1": { - "compId": 10, - "pinName": "Y1" - }, - "pin2": { - "compId": 11, - "pinName": "C1" - }, - "path": [ - { - "x": 305.0, - "y": 640.0 - }, - { - "x": 305.0, - "y": 745.0 - }, - { - "x": 245.0, - "y": 745.0 - }, - { - "x": 245.0, - "y": 790.0 - } - ] - }, - { - "pin1": { - "compId": 10, - "pinName": "Y2" - }, - "pin2": { - "compId": 11, - "pinName": "C2" - }, - "path": [ - { - "x": 300.0, - "y": 650.0 - }, - { - "x": 300.0, - "y": 740.0 - }, - { - "x": 240.0, - "y": 740.0 - }, - { - "x": 240.0, - "y": 800.0 - } - ] - }, - { - "pin1": { - "compId": 10, - "pinName": "Y3" - }, - "pin2": { - "compId": 11, - "pinName": "C3" - }, - "path": [ - { - "x": 295.0, - "y": 660.0 - }, - { - "x": 295.0, - "y": 735.0 - }, - { - "x": 235.0, - "y": 735.0 - }, - { - "x": 235.0, - "y": 810.0 - } - ] - }, - { - "pin1": { - "compId": 10, - "pinName": "Y4" - }, - "pin2": { - "compId": 11, - "pinName": "C4" - }, - "path": [ - { - "x": 290.0, - "y": 670.0 - }, - { - "x": 290.0, - "y": 730.0 - }, - { - "x": 230.0, - "y": 730.0 - }, - { - "x": 230.0, - "y": 820.0 - } - ] - }, - { - "pin1": { - "compId": 11, - "pinName": "Y1" - }, - "pin2": { - "compId": 0, - "pinName": "QB1" - }, - "path": [ - { - "x": 330.0, - "y": 790.0 - }, - { - "x": 330.0, - "y": 450.0 - } - ] - }, - { - "pin1": { - "compId": 11, - "pinName": "Y2" - }, - "pin2": { - "compId": 0, - "pinName": "QB2" - }, - "path": [ - { - "x": 335.0, - "y": 800.0 - }, - { - "x": 335.0, - "y": 550.0 - } - ] - }, - { - "pin1": { - "compId": 11, - "pinName": "Y3" - }, - "pin2": { - "compId": 0, - "pinName": "QB3" - }, - "path": [ - { - "x": 340.0, - "y": 810.0 - }, - { - "x": 340.0, - "y": 650.0 - } - ] - }, - { - "pin1": { - "compId": 11, - "pinName": "Y4" - }, - "pin2": { - "compId": 0, - "pinName": "QB4" - }, - "path": [ - { - "x": 345.0, - "y": 820.0 - }, - { - "x": 345.0, - "y": 750.0 - } - ] - }, - { - "pin1": { - "compId": 12, - "pinName": "Y1" - }, - "pin2": { - "compId": 13, - "pinName": "C1" - }, - "path": [ - { - "x": 210.0, - "y": 330.0 - }, - { - "x": 210.0, - "y": 430.0 - }, - { - "x": 150.0, - "y": 430.0 - }, - { - "x": 150.0, - "y": 440.0 - } - ] - }, - { - "pin1": { - "compId": 12, - "pinName": "Y2" - }, - "pin2": { - "compId": 13, - "pinName": "C2" - }, - "path": [ - { - "x": 205.0, - "y": 340.0 - }, - { - "x": 205.0, - "y": 425.0 - }, - { - "x": 145.0, - "y": 425.0 - }, - { - "x": 145.0, - "y": 450.0 - } - ] - }, - { - "pin1": { - "compId": 12, - "pinName": "Y3" - }, - "pin2": { - "compId": 13, - "pinName": "C3" - }, - "path": [ - { - "x": 200.0, - "y": 350.0 - }, - { - "x": 200.0, - "y": 420.0 - }, - { - "x": 140.0, - "y": 420.0 - }, - { - "x": 140.0, - "y": 460.0 - } - ] - }, - { - "pin1": { - "compId": 12, - "pinName": "Y4" - }, - "pin2": { - "compId": 13, - "pinName": "C4" - }, - "path": [ - { - "x": 195.0, - "y": 360.0 - }, - { - "x": 195.0, - "y": 415.0 - }, - { - "x": 135.0, - "y": 415.0 - }, - { - "x": 135.0, - "y": 470.0 - } - ] - }, - { - "pin1": { - "compId": 13, - "pinName": "Y1" - }, - "pin2": { - "compId": 14, - "pinName": "C1" - }, - "path": [ - { - "x": 210.0, - "y": 440.0 - }, - { - "x": 210.0, - "y": 580.0 - }, - { - "x": 150.0, - "y": 580.0 - }, - { - "x": 150.0, - "y": 590.0 - } - ] - }, - { - "pin1": { - "compId": 13, - "pinName": "Y2" - }, - "pin2": { - "compId": 14, - "pinName": "C2" - }, - "path": [ - { - "x": 205.0, - "y": 450.0 - }, - { - "x": 205.0, - "y": 575.0 - }, - { - "x": 145.0, - "y": 575.0 - }, - { - "x": 145.0, - "y": 600.0 - } - ] - }, - { - "pin1": { - "compId": 13, - "pinName": "Y3" - }, - "pin2": { - "compId": 14, - "pinName": "C3" - }, - "path": [ - { - "x": 200.0, - "y": 460.0 - }, - { - "x": 200.0, - "y": 570.0 - }, - { - "x": 140.0, - "y": 570.0 - }, - { - "x": 140.0, - "y": 610.0 - } - ] - }, - { - "pin1": { - "compId": 13, - "pinName": "Y4" - }, - "pin2": { - "compId": 14, - "pinName": "C4" - }, - "path": [ - { - "x": 195.0, - "y": 470.0 - }, - { - "x": 195.0, - "y": 565.0 - }, - { - "x": 135.0, - "y": 565.0 - }, - { - "x": 135.0, - "y": 620.0 - } - ] - }, - { - "pin1": { - "compId": 14, - "pinName": "Y1" - }, - "pin2": { - "compId": 15, - "pinName": "C1" - }, - "path": [ - { - "x": 210.0, - "y": 590.0 - }, - { - "x": 210.0, - "y": 730.0 - }, - { - "x": 150.0, - "y": 730.0 - }, - { - "x": 150.0, - "y": 740.0 - } - ] - }, - { - "pin1": { - "compId": 14, - "pinName": "Y2" - }, - "pin2": { - "compId": 15, - "pinName": "C2" - }, - "path": [ - { - "x": 205.0, - "y": 600.0 - }, - { - "x": 205.0, - "y": 725.0 - }, - { - "x": 145.0, - "y": 725.0 - }, - { - "x": 145.0, - "y": 750.0 - } - ] - }, - { - "pin1": { - "compId": 14, - "pinName": "Y3" - }, - "pin2": { - "compId": 15, - "pinName": "C3" - }, - "path": [ - { - "x": 200.0, - "y": 610.0 - }, - { - "x": 200.0, - "y": 720.0 - }, - { - "x": 140.0, - "y": 720.0 - }, - { - "x": 140.0, - "y": 760.0 - } - ] - }, - { - "pin1": { - "compId": 14, - "pinName": "Y4" - }, - "pin2": { - "compId": 15, - "pinName": "C4" - }, - "path": [ - { - "x": 195.0, - "y": 620.0 - }, - { - "x": 195.0, - "y": 715.0 - }, - { - "x": 135.0, - "y": 715.0 - }, - { - "x": 135.0, - "y": 770.0 - } - ] - }, - { - "pin1": { - "compId": 15, - "pinName": "Y1" - }, - "pin2": { - "compId": 0, - "pinName": "QA1" - }, - "path": [ - { - "x": 210.0, - "y": 740.0 - }, - { - "x": 210.0, - "y": 880.0 - }, - { - "x": 310.0, - "y": 880.0 - }, - { - "x": 310.0, - "y": 50.0 - } - ] - }, - { - "pin1": { - "compId": 15, - "pinName": "Y2" - }, - "pin2": { - "compId": 0, - "pinName": "QA2" - }, - "path": [ - { - "x": 205.0, - "y": 750.0 - }, - { - "x": 205.0, - "y": 885.0 - }, - { - "x": 315.0, - "y": 885.0 - }, - { - "x": 315.0, - "y": 150.0 - } - ] - }, - { - "pin1": { - "compId": 15, - "pinName": "Y3" - }, - "pin2": { - "compId": 0, - "pinName": "QA3" - }, - "path": [ - { - "x": 200.0, - "y": 760.0 - }, - { - "x": 200.0, - "y": 890.0 - }, - { - "x": 320.0, - "y": 890.0 - }, - { - "x": 320.0, - "y": 250.0 - } - ] - }, - { - "pin1": { - "compId": 15, - "pinName": "Y4" - }, - "pin2": { - "compId": 0, - "pinName": "QA4" - }, - "path": [ - { - "x": 195.0, - "y": 770.0 - }, - { - "x": 195.0, - "y": 895.0 - }, - { - "x": 325.0, - "y": 895.0 - }, - { - "x": 325.0, - "y": 350.0 - } - ] - } - ] - }, - "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", - "symbolRendererParams": { - "centerText": "GUIram4", - "horizontalComponentCenter": 17.5, - "centerTextHeight": 5.0, - "pinLabelHeight": 3.5, - "pinLabelMargin": 0.5 - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/components/GUIsel2_4.json b/net.mograsim.logic.ui.am2900/components/GUIsel2_4.json deleted file mode 100644 index 9f7babea..00000000 --- a/net.mograsim.logic.ui.am2900/components/GUIsel2_4.json +++ /dev/null @@ -1,794 +0,0 @@ -mograsim version: 0.1.3 -{ - "width": 35.0, - "height": 100.0, - "interfacePins": [ - { - "location": { - "x": 0.0, - "y": 5.0 - }, - "name": "SA", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 15.0 - }, - "name": "SB", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 65.0 - }, - "name": "B1", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 25.0 - }, - "name": "A1", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 75.0 - }, - "name": "B2", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 35.0 - }, - "name": "A2", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 85.0 - }, - "name": "B3", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 45.0 - }, - "name": "A3", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 95.0 - }, - "name": "B4", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 55.0 - }, - "name": "A4", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 5.0 - }, - "name": "Y1", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 15.0 - }, - "name": "Y2", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 25.0 - }, - "name": "Y3", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 35.0 - }, - "name": "Y4", - "logicWidth": 1 - } - ], - "submodel": { - "innerScale": 0.4, - "subComps": [ - { - "pos": { - "x": 20.0, - "y": 2.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 20.0, - "y": 52.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 20.0, - "y": 102.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 20.0, - "y": 152.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 20.0, - "y": 27.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 20.0, - "y": 77.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 20.0, - "y": 127.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 20.0, - "y": 177.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 65.0, - "y": 2.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 65.0, - "y": 27.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 65.0, - "y": 52.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 65.0, - "y": 77.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 6.5, - "y": 16.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 6.5, - "y": 66.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 6.5, - "y": 116.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 4.0, - "y": 41.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 4.0, - "y": 91.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 4.0, - "y": 141.5 - }, - "id": "WireCrossPoint", - "params": 1 - } - ], - "innerWires": [ - { - "pin1": { - "compId": 0, - "pinName": "A1" - }, - "pin2": { - "compId": 1, - "pinName": "A" - }, - "path": [ - { - "x": 15.0, - "y": 62.5 - }, - { - "x": 15.0, - "y": 7.5 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "A2" - }, - "pin2": { - "compId": 2, - "pinName": "A" - }, - "path": [ - { - "x": 17.5, - "y": 87.5 - }, - { - "x": 17.5, - "y": 57.5 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "A3" - }, - "pin2": { - "compId": 3, - "pinName": "A" - }, - "path": [ - { - "x": 17.5, - "y": 112.5 - }, - { - "x": 17.5, - "y": 107.5 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "A4" - }, - "pin2": { - "compId": 4, - "pinName": "A" - }, - "path": [ - { - "x": 17.5, - "y": 137.5 - }, - { - "x": 17.5, - "y": 157.5 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "B1" - }, - "pin2": { - "compId": 5, - "pinName": "A" - }, - "path": [ - { - "x": 10.0, - "y": 162.5 - }, - { - "x": 10.0, - "y": 32.5 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "B2" - }, - "pin2": { - "compId": 6, - "pinName": "A" - }, - "path": [ - { - "x": 12.5, - "y": 187.5 - }, - { - "x": 12.5, - "y": 82.5 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "B3" - }, - "pin2": { - "compId": 7, - "pinName": "A" - }, - "path": [ - { - "x": 15.0, - "y": 212.5 - }, - { - "x": 15.0, - "y": 132.5 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "B4" - }, - "pin2": { - "compId": 8, - "pinName": "A" - }, - "path": [ - { - "x": 10.0, - "y": 237.5 - }, - { - "x": 10.0, - "y": 182.5 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "SA" - }, - "pin2": { - "compId": 13, - "pinName": "" - } - }, - { - "pin1": { - "compId": 0, - "pinName": "SB" - }, - "pin2": { - "compId": 16, - "pinName": "" - } - }, - { - "pin1": { - "compId": 13, - "pinName": "" - }, - "pin2": { - "compId": 14, - "pinName": "" - } - }, - { - "pin1": { - "compId": 13, - "pinName": "" - }, - "pin2": { - "compId": 1, - "pinName": "B" - } - }, - { - "pin1": { - "compId": 14, - "pinName": "" - }, - "pin2": { - "compId": 15, - "pinName": "" - } - }, - { - "pin1": { - "compId": 14, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "B" - } - }, - { - "pin1": { - "compId": 15, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "B" - } - }, - { - "pin1": { - "compId": 15, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "B" - }, - "path": [ - { - "x": 7.5, - "y": 167.5 - } - ] - }, - { - "pin1": { - "compId": 16, - "pinName": "" - }, - "pin2": { - "compId": 17, - "pinName": "" - } - }, - { - "pin1": { - "compId": 16, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "B" - } - }, - { - "pin1": { - "compId": 17, - "pinName": "" - }, - "pin2": { - "compId": 18, - "pinName": "" - } - }, - { - "pin1": { - "compId": 17, - "pinName": "" - }, - "pin2": { - "compId": 6, - "pinName": "B" - } - }, - { - "pin1": { - "compId": 18, - "pinName": "" - }, - "pin2": { - "compId": 7, - "pinName": "B" - } - }, - { - "pin1": { - "compId": 18, - "pinName": "" - }, - "pin2": { - "compId": 8, - "pinName": "B" - }, - "path": [ - { - "x": 5.0, - "y": 192.5 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y" - }, - "pin2": { - "compId": 9, - "pinName": "A" - }, - "path": [ - { - "x": 42.5, - "y": 12.5 - }, - { - "x": 42.5, - "y": 7.5 - } - ] - }, - { - "pin1": { - "compId": 5, - "pinName": "Y" - }, - "pin2": { - "compId": 9, - "pinName": "B" - }, - "path": [ - { - "x": 45.0, - "y": 37.5 - }, - { - "x": 45.0, - "y": 17.5 - } - ] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y" - }, - "pin2": { - "compId": 10, - "pinName": "A" - }, - "path": [ - { - "x": 47.5, - "y": 62.5 - }, - { - "x": 47.5, - "y": 32.5 - } - ] - }, - { - "pin1": { - "compId": 6, - "pinName": "Y" - }, - "pin2": { - "compId": 10, - "pinName": "B" - }, - "path": [ - { - "x": 50.0, - "y": 87.5 - }, - { - "x": 50.0, - "y": 42.5 - } - ] - }, - { - "pin1": { - "compId": 3, - "pinName": "Y" - }, - "pin2": { - "compId": 11, - "pinName": "A" - }, - "path": [ - { - "x": 52.5, - "y": 112.5 - }, - { - "x": 52.5, - "y": 57.5 - } - ] - }, - { - "pin1": { - "compId": 7, - "pinName": "Y" - }, - "pin2": { - "compId": 11, - "pinName": "B" - }, - "path": [ - { - "x": 55.0, - "y": 137.5 - }, - { - "x": 55.0, - "y": 67.5 - } - ] - }, - { - "pin1": { - "compId": 4, - "pinName": "Y" - }, - "pin2": { - "compId": 12, - "pinName": "A" - }, - "path": [ - { - "x": 57.5, - "y": 162.5 - }, - { - "x": 57.5, - "y": 82.5 - } - ] - }, - { - "pin1": { - "compId": 8, - "pinName": "Y" - }, - "pin2": { - "compId": 12, - "pinName": "B" - }, - "path": [ - { - "x": 60.0, - "y": 187.5 - }, - { - "x": 60.0, - "y": 92.5 - } - ] - }, - { - "pin1": { - "compId": 9, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y1" - }, - "path": [] - }, - { - "pin1": { - "compId": 10, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y2" - }, - "path": [] - }, - { - "pin1": { - "compId": 11, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y3" - }, - "path": [] - }, - { - "pin1": { - "compId": 12, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y4" - }, - "path": [] - } - ] - }, - "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", - "symbolRendererParams": { - "centerText": "GUIsel2_4", - "horizontalComponentCenter": 17.5, - "centerTextHeight": 5.0, - "pinLabelHeight": 3.5, - "pinLabelMargin": 0.5 - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/components/GUIsel3_4.json b/net.mograsim.logic.ui.am2900/components/GUIsel3_4.json deleted file mode 100644 index f999b22f..00000000 --- a/net.mograsim.logic.ui.am2900/components/GUIsel3_4.json +++ /dev/null @@ -1,865 +0,0 @@ -mograsim version: 0.1.3 -{ - "width": 35.0, - "height": 150.0, - "interfacePins": [ - { - "location": { - "x": 0.0, - "y": 5.0 - }, - "name": "SA", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 115.0 - }, - "name": "C1", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 15.0 - }, - "name": "SB", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 75.0 - }, - "name": "B1", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 125.0 - }, - "name": "C2", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 25.0 - }, - "name": "SC", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 35.0 - }, - "name": "A1", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 85.0 - }, - "name": "B2", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 135.0 - }, - "name": "C3", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 45.0 - }, - "name": "A2", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 95.0 - }, - "name": "B3", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 145.0 - }, - "name": "C4", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 55.0 - }, - "name": "A3", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 105.0 - }, - "name": "B4", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 65.0 - }, - "name": "A4", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 5.0 - }, - "name": "Y1", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 15.0 - }, - "name": "Y2", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 25.0 - }, - "name": "Y3", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 35.0 - }, - "name": "Y4", - "logicWidth": 1 - } - ], - "submodel": { - "innerScale": 0.2, - "subComps": [ - { - "pos": { - "x": 35.0, - "y": 250.0 - }, - "id": "GUIsel2_4" - }, - { - "pos": { - "x": 75.0, - "y": 250.0 - }, - "id": "GUInot4" - }, - { - "pos": { - "x": 50.0, - "y": 570.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 50.0, - "y": 620.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 50.0, - "y": 670.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 50.0, - "y": 720.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 152.5, - "y": 15.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 152.5, - "y": 65.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 152.5, - "y": 115.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 152.5, - "y": 165.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 29.0, - "y": 584.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 29.0, - "y": 634.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 29.0, - "y": 684.0 - }, - "id": "WireCrossPoint", - "params": 1 - } - ], - "innerWires": [ - { - "pin1": { - "compId": 0, - "pinName": "SA" - }, - "pin2": { - "compId": 1, - "pinName": "SA" - }, - "path": [ - { - "x": 25.0, - "y": 25.0 - }, - { - "x": 25.0, - "y": 255.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "SB" - }, - "pin2": { - "compId": 1, - "pinName": "SB" - }, - "path": [ - { - "x": 20.0, - "y": 75.0 - }, - { - "x": 20.0, - "y": 265.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "A1" - }, - "pin2": { - "compId": 1, - "pinName": "A1" - }, - "path": [ - { - "x": 15.0, - "y": 175.0 - }, - { - "x": 15.0, - "y": 275.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "A2" - }, - "pin2": { - "compId": 1, - "pinName": "A2" - }, - "path": [ - { - "x": 10.0, - "y": 225.0 - }, - { - "x": 10.0, - "y": 285.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "A3" - }, - "pin2": { - "compId": 1, - "pinName": "A3" - }, - "path": [ - { - "x": 5.0, - "y": 275.0 - }, - { - "x": 5.0, - "y": 295.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "A4" - }, - "pin2": { - "compId": 1, - "pinName": "A4" - }, - "path": [ - { - "x": 5.0, - "y": 325.0 - }, - { - "x": 5.0, - "y": 305.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "B1" - }, - "pin2": { - "compId": 1, - "pinName": "B1" - }, - "path": [ - { - "x": 10.0, - "y": 375.0 - }, - { - "x": 10.0, - "y": 315.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "B2" - }, - "pin2": { - "compId": 1, - "pinName": "B2" - }, - "path": [ - { - "x": 15.0, - "y": 425.0 - }, - { - "x": 15.0, - "y": 325.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "B3" - }, - "pin2": { - "compId": 1, - "pinName": "B3" - }, - "path": [ - { - "x": 20.0, - "y": 475.0 - }, - { - "x": 20.0, - "y": 335.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "B4" - }, - "pin2": { - "compId": 1, - "pinName": "B4" - }, - "path": [ - { - "x": 25.0, - "y": 525.0 - }, - { - "x": 25.0, - "y": 345.0 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y1" - }, - "pin2": { - "compId": 2, - "pinName": "A1" - }, - "path": [] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y2" - }, - "pin2": { - "compId": 2, - "pinName": "A2" - }, - "path": [] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y3" - }, - "pin2": { - "compId": 2, - "pinName": "A3" - }, - "path": [] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y4" - }, - "pin2": { - "compId": 2, - "pinName": "A4" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "SC" - }, - "pin2": { - "compId": 11, - "pinName": "" - }, - "path": [ - { - "x": 30.0, - "y": 125.0 - } - ] - }, - { - "pin1": { - "compId": 11, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "B" - }, - "path": [] - }, - { - "pin1": { - "compId": 11, - "pinName": "" - }, - "pin2": { - "compId": 12, - "pinName": "" - }, - "path": [ - { - "x": 30.0, - "y": 125.0 - } - ] - }, - { - "pin1": { - "compId": 12, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "B" - }, - "path": [] - }, - { - "pin1": { - "compId": 12, - "pinName": "" - }, - "pin2": { - "compId": 13, - "pinName": "" - }, - "path": [ - { - "x": 30.0, - "y": 125.0 - } - ] - }, - { - "pin1": { - "compId": 13, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "B" - }, - "path": [] - }, - { - "pin1": { - "compId": 13, - "pinName": "" - }, - "pin2": { - "compId": 6, - "pinName": "B" - }, - "path": [ - { - "x": 30.0, - "y": 735.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "C1" - }, - "pin2": { - "compId": 3, - "pinName": "A" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "C2" - }, - "pin2": { - "compId": 4, - "pinName": "A" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "C3" - }, - "pin2": { - "compId": 5, - "pinName": "A" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "C4" - }, - "pin2": { - "compId": 6, - "pinName": "A" - }, - "path": [] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y1" - }, - "pin2": { - "compId": 7, - "pinName": "A" - }, - "path": [ - { - "x": 115.0, - "y": 255.0 - }, - { - "x": 115.0, - "y": 20.0 - } - ] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y2" - }, - "pin2": { - "compId": 8, - "pinName": "A" - }, - "path": [ - { - "x": 120.0, - "y": 265.0 - }, - { - "x": 120.0, - "y": 70.0 - } - ] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y3" - }, - "pin2": { - "compId": 9, - "pinName": "A" - }, - "path": [ - { - "x": 125.0, - "y": 275.0 - }, - { - "x": 125.0, - "y": 120.0 - } - ] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y4" - }, - "pin2": { - "compId": 10, - "pinName": "A" - }, - "path": [ - { - "x": 130.0, - "y": 285.0 - }, - { - "x": 130.0, - "y": 170.0 - } - ] - }, - { - "pin1": { - "compId": 3, - "pinName": "Y" - }, - "pin2": { - "compId": 7, - "pinName": "B" - }, - "path": [ - { - "x": 135.0, - "y": 580.0 - }, - { - "x": 135.0, - "y": 30.0 - } - ] - }, - { - "pin1": { - "compId": 4, - "pinName": "Y" - }, - "pin2": { - "compId": 8, - "pinName": "B" - }, - "path": [ - { - "x": 140.0, - "y": 630.0 - }, - { - "x": 140.0, - "y": 80.0 - } - ] - }, - { - "pin1": { - "compId": 5, - "pinName": "Y" - }, - "pin2": { - "compId": 9, - "pinName": "B" - }, - "path": [ - { - "x": 145.0, - "y": 680.0 - }, - { - "x": 145.0, - "y": 130.0 - } - ] - }, - { - "pin1": { - "compId": 6, - "pinName": "Y" - }, - "pin2": { - "compId": 10, - "pinName": "B" - }, - "path": [ - { - "x": 150.0, - "y": 730.0 - }, - { - "x": 150.0, - "y": 180.0 - } - ] - }, - { - "pin1": { - "compId": 7, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y1" - }, - "path": [] - }, - { - "pin1": { - "compId": 8, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y2" - }, - "path": [] - }, - { - "pin1": { - "compId": 9, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y3" - }, - "path": [] - }, - { - "pin1": { - "compId": 10, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y4" - }, - "path": [] - } - ] - }, - "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", - "symbolRendererParams": { - "centerText": "GUIsel3_4", - "horizontalComponentCenter": 17.5, - "centerTextHeight": 5.0, - "pinLabelHeight": 3.5, - "pinLabelMargin": 0.5 - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/components/GUIxor.json b/net.mograsim.logic.ui.am2900/components/GUIxor.json deleted file mode 100644 index 8f589d5a..00000000 --- a/net.mograsim.logic.ui.am2900/components/GUIxor.json +++ /dev/null @@ -1,260 +0,0 @@ -mograsim version: 0.1.3 -{ - "width": 35.0, - "height": 20.0, - "interfacePins": [ - { - "location": { - "x": 0.0, - "y": 5.0 - }, - "name": "A", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 15.0 - }, - "name": "B", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 5.0 - }, - "name": "Y", - "logicWidth": 1 - } - ], - "submodel": { - "innerScale": 0.4, - "subComps": [ - { - "pos": { - "x": 7.5, - "y": 15.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 35.0, - "y": 2.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 35.0, - "y": 27.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 62.5, - "y": 15.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 4.0, - "y": 11.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 4.0, - "y": 36.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 29.0, - "y": 24.0 - }, - "id": "WireCrossPoint", - "params": 1 - } - ], - "innerWires": [ - { - "pin1": { - "compId": 0, - "pinName": "A" - }, - "pin2": { - "compId": 5, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "B" - }, - "pin2": { - "compId": 6, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 5, - "pinName": "" - }, - "pin2": { - "compId": 1, - "pinName": "A" - }, - "path": [ - { - "x": 5.0, - "y": 20.0 - } - ] - }, - { - "pin1": { - "compId": 6, - "pinName": "" - }, - "pin2": { - "compId": 1, - "pinName": "B" - }, - "path": [ - { - "x": 5.0, - "y": 30.0 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y" - }, - "pin2": { - "compId": 7, - "pinName": "" - } - }, - { - "pin1": { - "compId": 7, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "B" - }, - "path": [ - { - "x": 30.0, - "y": 17.5 - } - ] - }, - { - "pin1": { - "compId": 7, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "A" - }, - "path": [ - { - "x": 30.0, - "y": 32.5 - } - ] - }, - { - "pin1": { - "compId": 5, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "A" - }, - "path": [ - { - "x": 5.0, - "y": 7.5 - } - ] - }, - { - "pin1": { - "compId": 6, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "B" - }, - "path": [ - { - "x": 5.0, - "y": 42.5 - } - ] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y" - }, - "pin2": { - "compId": 4, - "pinName": "A" - } - }, - { - "pin1": { - "compId": 3, - "pinName": "Y" - }, - "pin2": { - "compId": 4, - "pinName": "B" - } - }, - { - "pin1": { - "compId": 4, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y" - } - } - ] - }, - "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", - "symbolRendererParams": { - "centerText": "GUIxor", - "horizontalComponentCenter": 17.5, - "centerTextHeight": 5.0, - "pinLabelHeight": 3.5, - "pinLabelMargin": 0.5 - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/components/am2901/GUIAm2901.json b/net.mograsim.logic.ui.am2900/components/am2901/GUIAm2901.json deleted file mode 100644 index af066819..00000000 --- a/net.mograsim.logic.ui.am2900/components/am2901/GUIAm2901.json +++ /dev/null @@ -1,3191 +0,0 @@ -mograsim version: 0.1.3 -{ - "width": 35.0, - "height": 270.0, - "interfacePins": [ - { - "location": { - "x": 35.0, - "y": 85.0 - }, - "name": "ORAMn", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 95.0 - }, - "name": "C", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 265.0 - }, - "name": "IQn+3", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 85.0 - }, - "name": "I0", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 255.0 - }, - "name": "IQn", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 75.0 - }, - "name": "I1", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 65.0 - }, - "name": "I2", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 55.0 - }, - "name": "I3", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 65.0 - }, - "name": "OVR", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 45.0 - }, - "name": "I4", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 105.0 - }, - "name": "Cn", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 115.0 - }, - "name": "OQn+3", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 35.0 - }, - "name": "I5", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 25.0 - }, - "name": "I6", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 105.0 - }, - "name": "OQn", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 15.0 - }, - "name": "I7", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 5.0 - }, - "name": "I8", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 155.0 - }, - "name": "A0", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 165.0 - }, - "name": "A1", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 175.0 - }, - "name": "A2", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 185.0 - }, - "name": "A3", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 235.0 - }, - "name": "IRAMn", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 55.0 - }, - "name": "Cn+4", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 95.0 - }, - "name": "ORAMn+3", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 45.0 - }, - "name": "F\u003d0", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 115.0 - }, - "name": "D1", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 245.0 - }, - "name": "IRAMn+3", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 75.0 - }, - "name": "F3", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 125.0 - }, - "name": "D2", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 195.0 - }, - "name": "B0", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 135.0 - }, - "name": "D3", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 205.0 - }, - "name": "B1", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 145.0 - }, - "name": "D4", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 215.0 - }, - "name": "B2", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 225.0 - }, - "name": "B3", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 5.0 - }, - "name": "Y1", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 15.0 - }, - "name": "Y2", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 25.0 - }, - "name": "Y3", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 35.0 - }, - "name": "Y4", - "logicWidth": 1 - } - ], - "submodel": { - "innerScale": 0.1, - "subComps": [ - { - "pos": { - "x": 15.0, - "y": 45.0 - }, - "id": "GUIAm2901DestDecode" - }, - { - "pos": { - "x": 275.0, - "y": 135.0 - }, - "id": "GUImux1_4" - }, - { - "pos": { - "x": 190.0, - "y": 65.0 - }, - "id": "GUIand" - }, - { - "pos": { - "x": 160.0, - "y": 75.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 240.0, - "y": 2110.0 - }, - "id": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode" - }, - { - "pos": { - "x": 275.0, - "y": 445.0 - }, - "id": "GUIor4" - }, - { - "pos": { - "x": 320.0, - "y": 440.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 95.0, - "y": 2220.0 - }, - "id": "GUIram4" - }, - { - "pos": { - "x": 160.0, - "y": 2220.0 - }, - "id": "GUIdlatch4" - }, - { - "pos": { - "x": 160.0, - "y": 2275.0 - }, - "id": "GUIdlatch4" - }, - { - "pos": { - "x": 45.0, - "y": 2310.0 - }, - "id": "GUIsel3_4" - }, - { - "pos": { - "x": 45.0, - "y": 2510.0 - }, - "id": "GUIsel3_4" - }, - { - "pos": { - "x": 90.0, - "y": 2490.0 - }, - "id": "GUIAm2901QReg" - }, - { - "pos": { - "x": 154.0, - "y": 949.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 154.0, - "y": 89.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 154.0, - "y": 2264.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 154.0, - "y": 2319.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 39.0, - "y": 2314.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 34.0, - "y": 2324.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 29.0, - "y": 2334.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 219.0, - "y": 2224.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 224.0, - "y": 2234.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 229.0, - "y": 2244.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 234.0, - "y": 2254.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 129.0, - "y": 2494.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 134.0, - "y": 2504.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 139.0, - "y": 2514.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 144.0, - "y": 2524.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 219.0, - "y": 2494.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 234.0, - "y": 2524.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 34.0, - "y": 2624.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 39.0, - "y": 2634.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 279.0, - "y": 2114.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 294.0, - "y": 2144.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 329.0, - "y": 949.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 254.0, - "y": 2089.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 259.0, - "y": 2094.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 264.0, - "y": 2099.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 269.0, - "y": 2104.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 254.0, - "y": 449.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 259.0, - "y": 459.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 264.0, - "y": 469.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 269.0, - "y": 479.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 9.0, - "y": 2354.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 14.0, - "y": 2364.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 19.0, - "y": 2374.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 14.0, - "y": 2394.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 19.0, - "y": 2404.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 24.0, - "y": 2414.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 9.0, - "y": 2384.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 14.0, - "y": 2424.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 19.0, - "y": 2434.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 24.0, - "y": 2444.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 314.0, - "y": 449.0 - }, - "id": "WireCrossPoint", - "params": 1 - } - ], - "innerWires": [ - { - "pin1": { - "compId": 0, - "pinName": "I8" - }, - "pin2": { - "compId": 1, - "pinName": "I8" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "I7" - }, - "pin2": { - "compId": 1, - "pinName": "I7" - }, - "path": [ - { - "x": 5.0, - "y": 150.0 - }, - { - "x": 5.0, - "y": 60.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "I6" - }, - "pin2": { - "compId": 1, - "pinName": "I6" - }, - "path": [ - { - "x": 10.0, - "y": 250.0 - }, - { - "x": 10.0, - "y": 70.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "I5" - }, - "pin2": { - "compId": 5, - "pinName": "I5" - }, - "path": [ - { - "x": 130.0, - "y": 350.0 - }, - { - "x": 130.0, - "y": 2115.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "I4" - }, - "pin2": { - "compId": 5, - "pinName": "I4" - }, - "path": [ - { - "x": 125.0, - "y": 450.0 - }, - { - "x": 125.0, - "y": 2125.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "I3" - }, - "pin2": { - "compId": 5, - "pinName": "I3" - }, - "path": [ - { - "x": 120.0, - "y": 550.0 - }, - { - "x": 120.0, - "y": 2135.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "I2" - }, - "pin2": { - "compId": 5, - "pinName": "I2" - }, - "path": [ - { - "x": 115.0, - "y": 650.0 - }, - { - "x": 115.0, - "y": 2145.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "I1" - }, - "pin2": { - "compId": 5, - "pinName": "I1" - }, - "path": [ - { - "x": 110.0, - "y": 750.0 - }, - { - "x": 110.0, - "y": 2155.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "I0" - }, - "pin2": { - "compId": 5, - "pinName": "I0" - }, - "path": [ - { - "x": 105.0, - "y": 850.0 - }, - { - "x": 105.0, - "y": 2165.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "C" - }, - "pin2": { - "compId": 14, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 14, - "pinName": "" - }, - "pin2": { - "compId": 15, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 15, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "A" - }, - "path": [ - { - "x": 155.0, - "y": 80.0 - } - ] - }, - { - "pin1": { - "compId": 15, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "B" - }, - "path": [] - }, - { - "pin1": { - "compId": 14, - "pinName": "" - }, - "pin2": { - "compId": 16, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 16, - "pinName": "" - }, - "pin2": { - "compId": 9, - "pinName": "C" - }, - "path": [] - }, - { - "pin1": { - "compId": 16, - "pinName": "" - }, - "pin2": { - "compId": 17, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 17, - "pinName": "" - }, - "pin2": { - "compId": 10, - "pinName": "C" - }, - "path": [] - }, - { - "pin1": { - "compId": 17, - "pinName": "" - }, - "pin2": { - "compId": 13, - "pinName": "C" - }, - "path": [ - { - "x": 155.0, - "y": 2485.0 - }, - { - "x": 80.0, - "y": 2485.0 - }, - { - "x": 80.0, - "y": 2495.0 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "LSH" - }, - "pin2": { - "compId": 18, - "pinName": "" - }, - "path": [ - { - "x": 55.0, - "y": 90.0 - }, - { - "x": 55.0, - "y": 125.0 - }, - { - "x": 40.0, - "y": 125.0 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "NSH" - }, - "pin2": { - "compId": 19, - "pinName": "" - }, - "path": [ - { - "x": 60.0, - "y": 50.0 - }, - { - "x": 60.0, - "y": 120.0 - }, - { - "x": 35.0, - "y": 120.0 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "RSH" - }, - "pin2": { - "compId": 20, - "pinName": "" - }, - "path": [ - { - "x": 65.0, - "y": 60.0 - }, - { - "x": 65.0, - "y": 115.0 - }, - { - "x": 30.0, - "y": 115.0 - } - ] - }, - { - "pin1": { - "compId": 18, - "pinName": "" - }, - "pin2": { - "compId": 11, - "pinName": "SA" - }, - "path": [] - }, - { - "pin1": { - "compId": 19, - "pinName": "" - }, - "pin2": { - "compId": 11, - "pinName": "SB" - }, - "path": [] - }, - { - "pin1": { - "compId": 20, - "pinName": "" - }, - "pin2": { - "compId": 11, - "pinName": "SC" - }, - "path": [] - }, - { - "pin1": { - "compId": 18, - "pinName": "" - }, - "pin2": { - "compId": 12, - "pinName": "SA" - }, - "path": [ - { - "x": 40.0, - "y": 2515.0 - } - ] - }, - { - "pin1": { - "compId": 19, - "pinName": "" - }, - "pin2": { - "compId": 12, - "pinName": "SB" - }, - "path": [ - { - "x": 35.0, - "y": 2525.0 - } - ] - }, - { - "pin1": { - "compId": 20, - "pinName": "" - }, - "pin2": { - "compId": 12, - "pinName": "SC" - }, - "path": [ - { - "x": 30.0, - "y": 2535.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "A0" - }, - "pin2": { - "compId": 8, - "pinName": "A0" - }, - "path": [ - { - "x": 80.0, - "y": 1550.0 - }, - { - "x": 80.0, - "y": 2225.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "A1" - }, - "pin2": { - "compId": 8, - "pinName": "A1" - }, - "path": [ - { - "x": 75.0, - "y": 1650.0 - }, - { - "x": 75.0, - "y": 2235.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "A2" - }, - "pin2": { - "compId": 8, - "pinName": "A2" - }, - "path": [ - { - "x": 70.0, - "y": 1750.0 - }, - { - "x": 70.0, - "y": 2245.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "A3" - }, - "pin2": { - "compId": 8, - "pinName": "A3" - }, - "path": [ - { - "x": 65.0, - "y": 1850.0 - }, - { - "x": 65.0, - "y": 2255.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "B0" - }, - "pin2": { - "compId": 8, - "pinName": "B0" - }, - "path": [ - { - "x": 60.0, - "y": 1950.0 - }, - { - "x": 60.0, - "y": 2265.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "B1" - }, - "pin2": { - "compId": 8, - "pinName": "B1" - }, - "path": [ - { - "x": 55.0, - "y": 2050.0 - }, - { - "x": 55.0, - "y": 2275.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "B2" - }, - "pin2": { - "compId": 8, - "pinName": "B2" - }, - "path": [ - { - "x": 50.0, - "y": 2150.0 - }, - { - "x": 50.0, - "y": 2285.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "B3" - }, - "pin2": { - "compId": 8, - "pinName": "B3" - }, - "path": [ - { - "x": 45.0, - "y": 2250.0 - }, - { - "x": 45.0, - "y": 2295.0 - } - ] - }, - { - "pin1": { - "compId": 8, - "pinName": "QA1" - }, - "pin2": { - "compId": 9, - "pinName": "D1" - }, - "path": [] - }, - { - "pin1": { - "compId": 8, - "pinName": "QA2" - }, - "pin2": { - "compId": 9, - "pinName": "D2" - }, - "path": [] - }, - { - "pin1": { - "compId": 8, - "pinName": "QA3" - }, - "pin2": { - "compId": 9, - "pinName": "D3" - }, - "path": [] - }, - { - "pin1": { - "compId": 8, - "pinName": "QA4" - }, - "pin2": { - "compId": 9, - "pinName": "D4" - }, - "path": [] - }, - { - "pin1": { - "compId": 8, - "pinName": "QB1" - }, - "pin2": { - "compId": 10, - "pinName": "D1" - }, - "path": [ - { - "x": 150.0, - "y": 2265.0 - }, - { - "x": 150.0, - "y": 2280.0 - } - ] - }, - { - "pin1": { - "compId": 8, - "pinName": "QB2" - }, - "pin2": { - "compId": 10, - "pinName": "D2" - }, - "path": [ - { - "x": 145.0, - "y": 2275.0 - }, - { - "x": 145.0, - "y": 2290.0 - } - ] - }, - { - "pin1": { - "compId": 8, - "pinName": "QB3" - }, - "pin2": { - "compId": 10, - "pinName": "D3" - }, - "path": [ - { - "x": 140.0, - "y": 2285.0 - }, - { - "x": 140.0, - "y": 2300.0 - } - ] - }, - { - "pin1": { - "compId": 8, - "pinName": "QB4" - }, - "pin2": { - "compId": 10, - "pinName": "D4" - }, - "path": [ - { - "x": 135.0, - "y": 2295.0 - }, - { - "x": 135.0, - "y": 2310.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "Cn" - }, - "pin2": { - "compId": 5, - "pinName": "Cn" - }, - "path": [ - { - "x": 100.0, - "y": 1050.0 - }, - { - "x": 100.0, - "y": 2175.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "D1" - }, - "pin2": { - "compId": 5, - "pinName": "D1" - }, - "path": [ - { - "x": 180.0, - "y": 1150.0 - }, - { - "x": 180.0, - "y": 2185.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "D2" - }, - "pin2": { - "compId": 5, - "pinName": "D2" - }, - "path": [ - { - "x": 175.0, - "y": 1250.0 - }, - { - "x": 175.0, - "y": 2195.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "D3" - }, - "pin2": { - "compId": 5, - "pinName": "D3" - }, - "path": [ - { - "x": 170.0, - "y": 1350.0 - }, - { - "x": 170.0, - "y": 2205.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "D4" - }, - "pin2": { - "compId": 5, - "pinName": "D4" - }, - "path": [ - { - "x": 165.0, - "y": 1450.0 - }, - { - "x": 165.0, - "y": 2215.0 - } - ] - }, - { - "pin1": { - "compId": 9, - "pinName": "Q1" - }, - "pin2": { - "compId": 21, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 9, - "pinName": "Q2" - }, - "pin2": { - "compId": 22, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 9, - "pinName": "Q3" - }, - "pin2": { - "compId": 23, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 9, - "pinName": "Q4" - }, - "pin2": { - "compId": 24, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 21, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "I0_1" - }, - "path": [ - { - "x": 220.0, - "y": 150.0 - } - ] - }, - { - "pin1": { - "compId": 22, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "I0_2" - }, - "path": [ - { - "x": 225.0, - "y": 160.0 - } - ] - }, - { - "pin1": { - "compId": 23, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "I0_3" - }, - "path": [ - { - "x": 230.0, - "y": 170.0 - } - ] - }, - { - "pin1": { - "compId": 24, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "I0_4" - }, - "path": [ - { - "x": 235.0, - "y": 180.0 - } - ] - }, - { - "pin1": { - "compId": 21, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "A1" - }, - "path": [] - }, - { - "pin1": { - "compId": 22, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "A2" - }, - "path": [] - }, - { - "pin1": { - "compId": 23, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "A3" - }, - "path": [] - }, - { - "pin1": { - "compId": 24, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "A4" - }, - "path": [] - }, - { - "pin1": { - "compId": 10, - "pinName": "Q1" - }, - "pin2": { - "compId": 5, - "pinName": "B1" - }, - "path": [ - { - "x": 200.0, - "y": 2280.0 - }, - { - "x": 200.0, - "y": 2265.0 - } - ] - }, - { - "pin1": { - "compId": 10, - "pinName": "Q2" - }, - "pin2": { - "compId": 5, - "pinName": "B2" - }, - "path": [ - { - "x": 205.0, - "y": 2290.0 - }, - { - "x": 205.0, - "y": 2275.0 - } - ] - }, - { - "pin1": { - "compId": 10, - "pinName": "Q3" - }, - "pin2": { - "compId": 5, - "pinName": "B3" - }, - "path": [ - { - "x": 210.0, - "y": 2300.0 - }, - { - "x": 210.0, - "y": 2285.0 - } - ] - }, - { - "pin1": { - "compId": 10, - "pinName": "Q4" - }, - "pin2": { - "compId": 5, - "pinName": "B4" - }, - "path": [ - { - "x": 215.0, - "y": 2310.0 - }, - { - "x": 215.0, - "y": 2295.0 - } - ] - }, - { - "pin1": { - "compId": 13, - "pinName": "Q1" - }, - "pin2": { - "compId": 25, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 13, - "pinName": "Q2" - }, - "pin2": { - "compId": 26, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 13, - "pinName": "Q3" - }, - "pin2": { - "compId": 27, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 13, - "pinName": "Q4" - }, - "pin2": { - "compId": 28, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 25, - "pinName": "" - }, - "pin2": { - "compId": 29, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 29, - "pinName": "" - }, - "pin2": { - "compId": 0, - "pinName": "OQn" - }, - "path": [ - { - "x": 335.0, - "y": 2495.0 - }, - { - "x": 335.0, - "y": 1050.0 - } - ] - }, - { - "pin1": { - "compId": 28, - "pinName": "" - }, - "pin2": { - "compId": 30, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 30, - "pinName": "" - }, - "pin2": { - "compId": 0, - "pinName": "OQn+3" - }, - "path": [ - { - "x": 340.0, - "y": 2525.0 - }, - { - "x": 340.0, - "y": 1150.0 - } - ] - }, - { - "pin1": { - "compId": 26, - "pinName": "" - }, - "pin2": { - "compId": 31, - "pinName": "" - }, - "path": [ - { - "x": 135.0, - "y": 2670.0 - }, - { - "x": 30.0, - "y": 2670.0 - }, - { - "x": 30.0, - "y": 2635.0 - }, - { - "x": 35.0, - "y": 2635.0 - } - ] - }, - { - "pin1": { - "compId": 27, - "pinName": "" - }, - "pin2": { - "compId": 32, - "pinName": "" - }, - "path": [ - { - "x": 140.0, - "y": 2675.0 - }, - { - "x": 35.0, - "y": 2675.0 - }, - { - "x": 35.0, - "y": 2640.0 - }, - { - "x": 40.0, - "y": 2640.0 - } - ] - }, - { - "pin1": { - "compId": 31, - "pinName": "" - }, - "pin2": { - "compId": 12, - "pinName": "C1" - }, - "path": [] - }, - { - "pin1": { - "compId": 32, - "pinName": "" - }, - "pin2": { - "compId": 12, - "pinName": "C2" - }, - "path": [] - }, - { - "pin1": { - "compId": 28, - "pinName": "" - }, - "pin2": { - "compId": 12, - "pinName": "C3" - }, - "path": [ - { - "x": 145.0, - "y": 2680.0 - }, - { - "x": 40.0, - "y": 2680.0 - }, - { - "x": 40.0, - "y": 2645.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "IQn+3" - }, - "pin2": { - "compId": 12, - "pinName": "C4" - }, - "path": [ - { - "x": 5.0, - "y": 2650.0 - }, - { - "x": 5.0, - "y": 2655.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "IQn" - }, - "pin2": { - "compId": 12, - "pinName": "A1" - }, - "path": [ - { - "x": 5.0, - "y": 2550.0 - }, - { - "x": 5.0, - "y": 2545.0 - } - ] - }, - { - "pin1": { - "compId": 25, - "pinName": "" - }, - "pin2": { - "compId": 12, - "pinName": "A2" - }, - "path": [ - { - "x": 130.0, - "y": 2665.0 - }, - { - "x": 25.0, - "y": 2665.0 - }, - { - "x": 25.0, - "y": 2630.0 - }, - { - "x": 30.0, - "y": 2630.0 - }, - { - "x": 30.0, - "y": 2555.0 - } - ] - }, - { - "pin1": { - "compId": 29, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "Q1" - }, - "path": [ - { - "x": 220.0, - "y": 2305.0 - } - ] - }, - { - "pin1": { - "compId": 26, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "Q2" - }, - "path": [ - { - "x": 225.0, - "y": 2505.0 - }, - { - "x": 225.0, - "y": 2315.0 - } - ] - }, - { - "pin1": { - "compId": 27, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "Q3" - }, - "path": [ - { - "x": 230.0, - "y": 2515.0 - }, - { - "x": 230.0, - "y": 2325.0 - } - ] - }, - { - "pin1": { - "compId": 30, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "Q4" - }, - "path": [ - { - "x": 235.0, - "y": 2335.0 - } - ] - }, - { - "pin1": { - "compId": 31, - "pinName": "" - }, - "pin2": { - "compId": 12, - "pinName": "A3" - }, - "path": [ - { - "x": 35.0, - "y": 2565.0 - } - ] - }, - { - "pin1": { - "compId": 32, - "pinName": "" - }, - "pin2": { - "compId": 12, - "pinName": "A4" - }, - "path": [ - { - "x": 40.0, - "y": 2575.0 - } - ] - }, - { - "pin1": { - "compId": 12, - "pinName": "Y1" - }, - "pin2": { - "compId": 13, - "pinName": "D1" - }, - "path": [] - }, - { - "pin1": { - "compId": 12, - "pinName": "Y2" - }, - "pin2": { - "compId": 13, - "pinName": "D2" - }, - "path": [] - }, - { - "pin1": { - "compId": 12, - "pinName": "Y3" - }, - "pin2": { - "compId": 13, - "pinName": "D3" - }, - "path": [] - }, - { - "pin1": { - "compId": 12, - "pinName": "Y4" - }, - "pin2": { - "compId": 13, - "pinName": "D4" - }, - "path": [] - }, - { - "pin1": { - "compId": 5, - "pinName": "Cn+4" - }, - "pin2": { - "compId": 0, - "pinName": "Cn+4" - }, - "path": [ - { - "x": 315.0, - "y": 2155.0 - }, - { - "x": 315.0, - "y": 550.0 - } - ] - }, - { - "pin1": { - "compId": 5, - "pinName": "OVR" - }, - "pin2": { - "compId": 0, - "pinName": "OVR" - }, - "path": [ - { - "x": 320.0, - "y": 2165.0 - }, - { - "x": 320.0, - "y": 650.0 - } - ] - }, - { - "pin1": { - "compId": 5, - "pinName": "F1" - }, - "pin2": { - "compId": 33, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 5, - "pinName": "F4" - }, - "pin2": { - "compId": 34, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 33, - "pinName": "" - }, - "pin2": { - "compId": 0, - "pinName": "ORAMn" - }, - "path": [ - { - "x": 325.0, - "y": 2115.0 - }, - { - "x": 325.0, - "y": 850.0 - } - ] - }, - { - "pin1": { - "compId": 34, - "pinName": "" - }, - "pin2": { - "compId": 35, - "pinName": "" - }, - "path": [ - { - "x": 330.0, - "y": 2145.0 - } - ] - }, - { - "pin1": { - "compId": 35, - "pinName": "" - }, - "pin2": { - "compId": 0, - "pinName": "ORAMn+3" - }, - "path": [] - }, - { - "pin1": { - "compId": 35, - "pinName": "" - }, - "pin2": { - "compId": 0, - "pinName": "F3" - }, - "path": [ - { - "x": 330.0, - "y": 750.0 - } - ] - }, - { - "pin1": { - "compId": 33, - "pinName": "" - }, - "pin2": { - "compId": 36, - "pinName": "" - }, - "path": [ - { - "x": 280.0, - "y": 2090.0 - } - ] - }, - { - "pin1": { - "compId": 5, - "pinName": "F2" - }, - "pin2": { - "compId": 37, - "pinName": "" - }, - "path": [ - { - "x": 285.0, - "y": 2125.0 - }, - { - "x": 285.0, - "y": 2095.0 - } - ] - }, - { - "pin1": { - "compId": 5, - "pinName": "F3" - }, - "pin2": { - "compId": 38, - "pinName": "" - }, - "path": [ - { - "x": 290.0, - "y": 2135.0 - }, - { - "x": 290.0, - "y": 2100.0 - } - ] - }, - { - "pin1": { - "compId": 34, - "pinName": "" - }, - "pin2": { - "compId": 39, - "pinName": "" - }, - "path": [ - { - "x": 295.0, - "y": 2105.0 - } - ] - }, - { - "pin1": { - "compId": 36, - "pinName": "" - }, - "pin2": { - "compId": 40, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 37, - "pinName": "" - }, - "pin2": { - "compId": 41, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 38, - "pinName": "" - }, - "pin2": { - "compId": 42, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 39, - "pinName": "" - }, - "pin2": { - "compId": 43, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 40, - "pinName": "" - }, - "pin2": { - "compId": 6, - "pinName": "A1" - }, - "path": [] - }, - { - "pin1": { - "compId": 41, - "pinName": "" - }, - "pin2": { - "compId": 6, - "pinName": "A2" - }, - "path": [] - }, - { - "pin1": { - "compId": 42, - "pinName": "" - }, - "pin2": { - "compId": 6, - "pinName": "A3" - }, - "path": [] - }, - { - "pin1": { - "compId": 43, - "pinName": "" - }, - "pin2": { - "compId": 6, - "pinName": "A4" - }, - "path": [] - }, - { - "pin1": { - "compId": 40, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "I1_1" - }, - "path": [ - { - "x": 255.0, - "y": 190.0 - } - ] - }, - { - "pin1": { - "compId": 41, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "I1_2" - }, - "path": [ - { - "x": 260.0, - "y": 200.0 - } - ] - }, - { - "pin1": { - "compId": 42, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "I1_3" - }, - "path": [ - { - "x": 265.0, - "y": 210.0 - } - ] - }, - { - "pin1": { - "compId": 43, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "I1_4" - }, - "path": [ - { - "x": 270.0, - "y": 220.0 - } - ] - }, - { - "pin1": { - "compId": 36, - "pinName": "" - }, - "pin2": { - "compId": 44, - "pinName": "" - }, - "path": [ - { - "x": 10.0, - "y": 2090.0 - } - ] - }, - { - "pin1": { - "compId": 37, - "pinName": "" - }, - "pin2": { - "compId": 45, - "pinName": "" - }, - "path": [ - { - "x": 15.0, - "y": 2095.0 - } - ] - }, - { - "pin1": { - "compId": 38, - "pinName": "" - }, - "pin2": { - "compId": 46, - "pinName": "" - }, - "path": [ - { - "x": 20.0, - "y": 2100.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "IRAMn" - }, - "pin2": { - "compId": 11, - "pinName": "A1" - }, - "path": [ - { - "x": 5.0, - "y": 2350.0 - }, - { - "x": 5.0, - "y": 2345.0 - } - ] - }, - { - "pin1": { - "compId": 44, - "pinName": "" - }, - "pin2": { - "compId": 11, - "pinName": "A2" - }, - "path": [] - }, - { - "pin1": { - "compId": 45, - "pinName": "" - }, - "pin2": { - "compId": 11, - "pinName": "A3" - }, - "path": [] - }, - { - "pin1": { - "compId": 46, - "pinName": "" - }, - "pin2": { - "compId": 11, - "pinName": "A4" - }, - "path": [] - }, - { - "pin1": { - "compId": 45, - "pinName": "" - }, - "pin2": { - "compId": 47, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 46, - "pinName": "" - }, - "pin2": { - "compId": 48, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 39, - "pinName": "" - }, - "pin2": { - "compId": 49, - "pinName": "" - }, - "path": [ - { - "x": 25.0, - "y": 2105.0 - } - ] - }, - { - "pin1": { - "compId": 44, - "pinName": "" - }, - "pin2": { - "compId": 50, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 50, - "pinName": "" - }, - "pin2": { - "compId": 11, - "pinName": "B1" - }, - "path": [] - }, - { - "pin1": { - "compId": 47, - "pinName": "" - }, - "pin2": { - "compId": 11, - "pinName": "B2" - }, - "path": [] - }, - { - "pin1": { - "compId": 48, - "pinName": "" - }, - "pin2": { - "compId": 11, - "pinName": "B3" - }, - "path": [] - }, - { - "pin1": { - "compId": 49, - "pinName": "" - }, - "pin2": { - "compId": 11, - "pinName": "B4" - }, - "path": [] - }, - { - "pin1": { - "compId": 47, - "pinName": "" - }, - "pin2": { - "compId": 51, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 48, - "pinName": "" - }, - "pin2": { - "compId": 52, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 49, - "pinName": "" - }, - "pin2": { - "compId": 53, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 51, - "pinName": "" - }, - "pin2": { - "compId": 11, - "pinName": "C1" - }, - "path": [] - }, - { - "pin1": { - "compId": 52, - "pinName": "" - }, - "pin2": { - "compId": 11, - "pinName": "C2" - }, - "path": [] - }, - { - "pin1": { - "compId": 53, - "pinName": "" - }, - "pin2": { - "compId": 11, - "pinName": "C3" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "IRAMn+3" - }, - "pin2": { - "compId": 11, - "pinName": "C4" - }, - "path": [ - { - "x": 5.0, - "y": 2450.0 - }, - { - "x": 5.0, - "y": 2455.0 - } - ] - }, - { - "pin1": { - "compId": 50, - "pinName": "" - }, - "pin2": { - "compId": 12, - "pinName": "B1" - }, - "path": [ - { - "x": 10.0, - "y": 2585.0 - } - ] - }, - { - "pin1": { - "compId": 51, - "pinName": "" - }, - "pin2": { - "compId": 12, - "pinName": "B2" - }, - "path": [ - { - "x": 15.0, - "y": 2595.0 - } - ] - }, - { - "pin1": { - "compId": 52, - "pinName": "" - }, - "pin2": { - "compId": 12, - "pinName": "B3" - }, - "path": [ - { - "x": 20.0, - "y": 2605.0 - } - ] - }, - { - "pin1": { - "compId": 53, - "pinName": "" - }, - "pin2": { - "compId": 12, - "pinName": "B4" - }, - "path": [ - { - "x": 25.0, - "y": 2615.0 - } - ] - }, - { - "pin1": { - "compId": 11, - "pinName": "Y1" - }, - "pin2": { - "compId": 8, - "pinName": "D1" - }, - "path": [] - }, - { - "pin1": { - "compId": 11, - "pinName": "Y2" - }, - "pin2": { - "compId": 8, - "pinName": "D2" - }, - "path": [] - }, - { - "pin1": { - "compId": 11, - "pinName": "Y3" - }, - "pin2": { - "compId": 8, - "pinName": "D3" - }, - "path": [] - }, - { - "pin1": { - "compId": 11, - "pinName": "Y4" - }, - "pin2": { - "compId": 8, - "pinName": "D4" - }, - "path": [] - }, - { - "pin1": { - "compId": 1, - "pinName": "RAMWE" - }, - "pin2": { - "compId": 3, - "pinName": "A" - }, - "path": [] - }, - { - "pin1": { - "compId": 4, - "pinName": "Y" - }, - "pin2": { - "compId": 3, - "pinName": "B" - } - }, - { - "pin1": { - "compId": 3, - "pinName": "Y" - }, - "pin2": { - "compId": 8, - "pinName": "WE" - }, - "path": [ - { - "x": 230.0, - "y": 70.0 - }, - { - "x": 230.0, - "y": 105.0 - }, - { - "x": 90.0, - "y": 105.0 - }, - { - "x": 90.0, - "y": 2305.0 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "QWE" - }, - "pin2": { - "compId": 13, - "pinName": "WE" - }, - "path": [ - { - "x": 85.0, - "y": 100.0 - }, - { - "x": 85.0, - "y": 2505.0 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "YF" - }, - "pin2": { - "compId": 2, - "pinName": "S0" - }, - "path": [ - { - "x": 70.0, - "y": 80.0 - }, - { - "x": 70.0, - "y": 140.0 - } - ] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y1" - }, - "pin2": { - "compId": 0, - "pinName": "Y1" - }, - "path": [ - { - "x": 335.0, - "y": 140.0 - }, - { - "x": 335.0, - "y": 50.0 - } - ] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y2" - }, - "pin2": { - "compId": 0, - "pinName": "Y2" - }, - "path": [] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y3" - }, - "pin2": { - "compId": 0, - "pinName": "Y3" - }, - "path": [ - { - "x": 335.0, - "y": 160.0 - }, - { - "x": 335.0, - "y": 250.0 - } - ] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y4" - }, - "pin2": { - "compId": 0, - "pinName": "Y4" - }, - "path": [ - { - "x": 325.0, - "y": 170.0 - }, - { - "x": 325.0, - "y": 350.0 - } - ] - }, - { - "pin1": { - "compId": 6, - "pinName": "Y" - }, - "pin2": { - "compId": 54, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 54, - "pinName": "" - }, - "pin2": { - "compId": 7, - "pinName": "A" - }, - "path": [ - { - "x": 315.0, - "y": 445.0 - } - ] - }, - { - "pin1": { - "compId": 54, - "pinName": "" - }, - "pin2": { - "compId": 7, - "pinName": "B" - }, - "path": [ - { - "x": 315.0, - "y": 455.0 - } - ] - }, - { - "pin1": { - "compId": 7, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "F\u003d0" - }, - "path": [] - } - ] - }, - "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", - "symbolRendererParams": { - "centerText": "GUIAm2901", - "horizontalComponentCenter": 17.5, - "centerTextHeight": 5.0, - "pinLabelHeight": 3.5, - "pinLabelMargin": 0.5 - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/components/am2901/GUIAm2901ALUFuncDecode.json b/net.mograsim.logic.ui.am2900/components/am2901/GUIAm2901ALUFuncDecode.json deleted file mode 100644 index dfa954ab..00000000 --- a/net.mograsim.logic.ui.am2900/components/am2901/GUIAm2901ALUFuncDecode.json +++ /dev/null @@ -1,663 +0,0 @@ -mograsim version: 0.1.3 -{ - "width": 35.0, - "height": 60.0, - "interfacePins": [ - { - "location": { - "x": 35.0, - "y": 35.0 - }, - "name": "SBE", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 45.0 - }, - "name": "FN", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 25.0 - }, - "name": "I3", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 15.0 - }, - "name": "I4", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 25.0 - }, - "name": "SN", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 5.0 - }, - "name": "I5", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 15.0 - }, - "name": "L", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 55.0 - }, - "name": "RN", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 5.0 - }, - "name": "CinE", - "logicWidth": 1 - } - ], - "submodel": { - "innerScale": 0.25, - "subComps": [ - { - "pos": { - "x": 15.0, - "y": 10.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 15.0, - "y": 50.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 55.0, - "y": 10.0 - }, - "id": "GUInand3" - }, - { - "pos": { - "x": 55.0, - "y": 45.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 55.0, - "y": 70.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 100.0, - "y": 50.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 100.0, - "y": 135.0 - }, - "id": "GUIand" - }, - { - "pos": { - "x": 4.0, - "y": 19.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 4.0, - "y": 24.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 4.0, - "y": 44.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 9.0, - "y": 59.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 9.0, - "y": 54.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 9.0, - "y": 64.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 9.0, - "y": 84.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 49.0, - "y": 99.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 49.0, - "y": 74.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 39.0, - "y": 19.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 39.0, - "y": 34.0 - }, - "id": "WireCrossPoint", - "params": 1 - } - ], - "innerWires": [ - { - "pin1": { - "compId": 0, - "pinName": "I5" - }, - "pin2": { - "compId": 8, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 8, - "pinName": "" - }, - "pin2": { - "compId": 1, - "pinName": "A" - }, - "path": [ - { - "x": 5.0, - "y": 15.0 - } - ] - }, - { - "pin1": { - "compId": 8, - "pinName": "" - }, - "pin2": { - "compId": 9, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 9, - "pinName": "" - }, - "pin2": { - "compId": 1, - "pinName": "B" - }, - "path": [] - }, - { - "pin1": { - "compId": 9, - "pinName": "" - }, - "pin2": { - "compId": 10, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 10, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "A" - }, - "path": [ - { - "x": 45.0, - "y": 45.0 - }, - { - "x": 45.0, - "y": 50.0 - } - ] - }, - { - "pin1": { - "compId": 10, - "pinName": "" - }, - "pin2": { - "compId": 0, - "pinName": "FN" - }, - "path": [ - { - "x": 5.0, - "y": 180.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "I4" - }, - "pin2": { - "compId": 11, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 11, - "pinName": "" - }, - "pin2": { - "compId": 12, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 12, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "A" - }, - "path": [ - { - "x": 10.0, - "y": 40.0 - }, - { - "x": 45.0, - "y": 40.0 - }, - { - "x": 45.0, - "y": 15.0 - } - ] - }, - { - "pin1": { - "compId": 12, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "A" - }, - "path": [] - }, - { - "pin1": { - "compId": 11, - "pinName": "" - }, - "pin2": { - "compId": 13, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 13, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "B" - }, - "path": [] - }, - { - "pin1": { - "compId": 13, - "pinName": "" - }, - "pin2": { - "compId": 14, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 14, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "B" - }, - "path": [] - }, - { - "pin1": { - "compId": 14, - "pinName": "" - }, - "pin2": { - "compId": 0, - "pinName": "SN" - }, - "path": [ - { - "x": 10.0, - "y": 105.0 - }, - { - "x": 135.0, - "y": 105.0 - }, - { - "x": 135.0, - "y": 100.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "I3" - }, - "pin2": { - "compId": 15, - "pinName": "" - }, - "path": [ - { - "x": 50.0, - "y": 100.0 - } - ] - }, - { - "pin1": { - "compId": 15, - "pinName": "" - }, - "pin2": { - "compId": 0, - "pinName": "RN" - }, - "path": [ - { - "x": 50.0, - "y": 220.0 - } - ] - }, - { - "pin1": { - "compId": 15, - "pinName": "" - }, - "pin2": { - "compId": 16, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 16, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "B" - }, - "path": [ - { - "x": 50.0, - "y": 25.0 - } - ] - }, - { - "pin1": { - "compId": 16, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "A" - }, - "path": [] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y" - }, - "pin2": { - "compId": 17, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 17, - "pinName": "" - }, - "pin2": { - "compId": 0, - "pinName": "CinE" - }, - "path": [ - { - "x": 40.0, - "y": 5.0 - }, - { - "x": 115.0, - "y": 5.0 - }, - { - "x": 115.0, - "y": 20.0 - } - ] - }, - { - "pin1": { - "compId": 17, - "pinName": "" - }, - "pin2": { - "compId": 18, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 18, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "C" - }, - "path": [] - }, - { - "pin1": { - "compId": 18, - "pinName": "" - }, - "pin2": { - "compId": 7, - "pinName": "B" - }, - "path": [ - { - "x": 40.0, - "y": 150.0 - } - ] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y" - }, - "pin2": { - "compId": 4, - "pinName": "B" - }, - "path": [] - }, - { - "pin1": { - "compId": 3, - "pinName": "Y" - }, - "pin2": { - "compId": 6, - "pinName": "A" - } - }, - { - "pin1": { - "compId": 4, - "pinName": "Y" - }, - "pin2": { - "compId": 6, - "pinName": "B" - } - }, - { - "pin1": { - "compId": 5, - "pinName": "Y" - }, - "pin2": { - "compId": 7, - "pinName": "A" - } - }, - { - "pin1": { - "compId": 6, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "L" - }, - "path": [] - }, - { - "pin1": { - "compId": 7, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "SBE" - }, - "path": [] - } - ] - }, - "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", - "symbolRendererParams": { - "centerText": "GUIAm2901ALUFuncDecode", - "horizontalComponentCenter": 17.5, - "centerTextHeight": 5.0, - "pinLabelHeight": 3.5, - "pinLabelMargin": 0.5 - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/components/am2901/GUIAm2901ALUInclDecode.json b/net.mograsim.logic.ui.am2900/components/am2901/GUIAm2901ALUInclDecode.json deleted file mode 100644 index 9d6395c6..00000000 --- a/net.mograsim.logic.ui.am2900/components/am2901/GUIAm2901ALUInclDecode.json +++ /dev/null @@ -1,1427 +0,0 @@ -mograsim version: 0.1.3 -{ - "width": 35.0, - "height": 120.0, - "interfacePins": [ - { - "location": { - "x": 0.0, - "y": 55.0 - }, - "name": "R2", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 105.0 - }, - "name": "S3", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 65.0 - }, - "name": "R3", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 115.0 - }, - "name": "S4", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 75.0 - }, - "name": "R4", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 25.0 - }, - "name": "I3", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 55.0 - }, - "name": "OVR", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 15.0 - }, - "name": "I4", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 35.0 - }, - "name": "Cn", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 5.0 - }, - "name": "F1", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 5.0 - }, - "name": "I5", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 15.0 - }, - "name": "F2", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 25.0 - }, - "name": "F3", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 35.0 - }, - "name": "F4", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 45.0 - }, - "name": "Cn+4", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 85.0 - }, - "name": "S1", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 45.0 - }, - "name": "R1", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 95.0 - }, - "name": "S2", - "logicWidth": 1 - } - ], - "submodel": { - "innerScale": 0.25, - "subComps": [ - { - "pos": { - "x": 20.0, - "y": 2.5 - }, - "id": "GUIAm2901ALUFuncDecode" - }, - { - "pos": { - "x": 45.0, - "y": 80.0 - }, - "id": "GUIAm2901ALUOneBit" - }, - { - "pos": { - "x": 45.0, - "y": 180.0 - }, - "id": "GUIAm2901ALUOneBit" - }, - { - "pos": { - "x": 45.0, - "y": 280.0 - }, - "id": "GUIAm2901ALUOneBit" - }, - { - "pos": { - "x": 45.0, - "y": 380.0 - }, - "id": "GUIAm2901ALUOneBit" - }, - { - "pos": { - "x": 95.0, - "y": 400.0 - }, - "id": "GUIxor" - }, - { - "pos": { - "x": 24.0, - "y": 94.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 24.0, - "y": 194.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 24.0, - "y": 294.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 26.5, - "y": 104.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 26.5, - "y": 204.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 26.5, - "y": 304.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 29.0, - "y": 124.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 29.0, - "y": 224.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 29.0, - "y": 324.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 31.5, - "y": 144.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 31.5, - "y": 244.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 31.5, - "y": 344.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 34.0, - "y": 154.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 34.0, - "y": 254.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 34.0, - "y": 354.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 36.5, - "y": 164.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 36.5, - "y": 264.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 36.5, - "y": 364.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 84.0, - "y": 374.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 84.0, - "y": 384.0 - }, - "id": "WireCrossPoint", - "params": 1 - } - ], - "innerWires": [ - { - "pin1": { - "compId": 0, - "pinName": "I5" - }, - "pin2": { - "compId": 1, - "pinName": "I5" - }, - "path": [ - { - "x": 5.0, - "y": 20.0 - }, - { - "x": 5.0, - "y": 7.5 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "I4" - }, - "pin2": { - "compId": 1, - "pinName": "I4" - }, - "path": [ - { - "x": 10.0, - "y": 60.0 - }, - { - "x": 10.0, - "y": 17.5 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "I3" - }, - "pin2": { - "compId": 1, - "pinName": "I3" - }, - "path": [ - { - "x": 15.0, - "y": 100.0 - }, - { - "x": 15.0, - "y": 27.5 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "SBE" - }, - "pin2": { - "compId": 7, - "pinName": "" - }, - "path": [ - { - "x": 62.5, - "y": 37.5 - }, - { - "x": 62.5, - "y": 70.0 - }, - { - "x": 25.0, - "y": 70.0 - } - ] - }, - { - "pin1": { - "compId": 7, - "pinName": "" - }, - "pin2": { - "compId": 8, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 8, - "pinName": "" - }, - "pin2": { - "compId": 9, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 7, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "CoutE" - }, - "path": [] - }, - { - "pin1": { - "compId": 8, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "CoutE" - }, - "path": [] - }, - { - "pin1": { - "compId": 9, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "CoutE" - }, - "path": [] - }, - { - "pin1": { - "compId": 9, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "CoutE" - }, - "path": [ - { - "x": 25.0, - "y": 395.0 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "CinE" - }, - "pin2": { - "compId": 10, - "pinName": "" - }, - "path": [ - { - "x": 70.0, - "y": 7.5 - }, - { - "x": 70.0, - "y": 77.5 - }, - { - "x": 27.5, - "y": 77.5 - } - ] - }, - { - "pin1": { - "compId": 10, - "pinName": "" - }, - "pin2": { - "compId": 11, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 11, - "pinName": "" - }, - "pin2": { - "compId": 12, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 10, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "CinE" - }, - "path": [] - }, - { - "pin1": { - "compId": 11, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "CinE" - }, - "path": [] - }, - { - "pin1": { - "compId": 12, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "CinE" - }, - "path": [] - }, - { - "pin1": { - "compId": 12, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "CinE" - }, - "path": [ - { - "x": 27.5, - "y": 405.0 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "RN" - }, - "pin2": { - "compId": 13, - "pinName": "" - }, - "path": [ - { - "x": 57.5, - "y": 57.5 - }, - { - "x": 57.5, - "y": 65.0 - }, - { - "x": 30.0, - "y": 65.0 - } - ] - }, - { - "pin1": { - "compId": 13, - "pinName": "" - }, - "pin2": { - "compId": 14, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 14, - "pinName": "" - }, - "pin2": { - "compId": 15, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 13, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "RN" - }, - "path": [] - }, - { - "pin1": { - "compId": 14, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "RN" - }, - "path": [] - }, - { - "pin1": { - "compId": 15, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "RN" - }, - "path": [] - }, - { - "pin1": { - "compId": 15, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "RN" - }, - "path": [ - { - "x": 30.0, - "y": 425.0 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "SN" - }, - "pin2": { - "compId": 16, - "pinName": "" - }, - "path": [ - { - "x": 65.0, - "y": 27.5 - }, - { - "x": 65.0, - "y": 72.5 - }, - { - "x": 32.5, - "y": 72.5 - } - ] - }, - { - "pin1": { - "compId": 16, - "pinName": "" - }, - "pin2": { - "compId": 17, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 17, - "pinName": "" - }, - "pin2": { - "compId": 18, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 16, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "SN" - }, - "path": [] - }, - { - "pin1": { - "compId": 17, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "SN" - }, - "path": [] - }, - { - "pin1": { - "compId": 18, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "SN" - }, - "path": [] - }, - { - "pin1": { - "compId": 18, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "SN" - }, - "path": [ - { - "x": 32.5, - "y": 445.0 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "FN" - }, - "pin2": { - "compId": 19, - "pinName": "" - }, - "path": [ - { - "x": 60.0, - "y": 47.5 - }, - { - "x": 60.0, - "y": 67.5 - }, - { - "x": 35.0, - "y": 67.5 - } - ] - }, - { - "pin1": { - "compId": 19, - "pinName": "" - }, - "pin2": { - "compId": 20, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 20, - "pinName": "" - }, - "pin2": { - "compId": 21, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 19, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "FN" - }, - "path": [] - }, - { - "pin1": { - "compId": 20, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "FN" - }, - "path": [] - }, - { - "pin1": { - "compId": 21, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "FN" - }, - "path": [] - }, - { - "pin1": { - "compId": 21, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "FN" - }, - "path": [ - { - "x": 35.0, - "y": 455.0 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "L" - }, - "pin2": { - "compId": 22, - "pinName": "" - }, - "path": [ - { - "x": 67.5, - "y": 17.5 - }, - { - "x": 67.5, - "y": 75.0 - }, - { - "x": 37.5, - "y": 75.0 - } - ] - }, - { - "pin1": { - "compId": 22, - "pinName": "" - }, - "pin2": { - "compId": 23, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 23, - "pinName": "" - }, - "pin2": { - "compId": 24, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 22, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "L" - }, - "path": [] - }, - { - "pin1": { - "compId": 23, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "L" - }, - "path": [] - }, - { - "pin1": { - "compId": 24, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "L" - }, - "path": [] - }, - { - "pin1": { - "compId": 24, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "L" - }, - "path": [ - { - "x": 37.5, - "y": 465.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "R1" - }, - "pin2": { - "compId": 2, - "pinName": "R" - }, - "path": [ - { - "x": 10.0, - "y": 180.0 - }, - { - "x": 10.0, - "y": 115.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "R2" - }, - "pin2": { - "compId": 3, - "pinName": "R" - }, - "path": [ - { - "x": 10.0, - "y": 220.0 - }, - { - "x": 10.0, - "y": 215.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "R3" - }, - "pin2": { - "compId": 4, - "pinName": "R" - }, - "path": [ - { - "x": 10.0, - "y": 260.0 - }, - { - "x": 10.0, - "y": 315.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "R4" - }, - "pin2": { - "compId": 5, - "pinName": "R" - }, - "path": [ - { - "x": 20.0, - "y": 300.0 - }, - { - "x": 20.0, - "y": 415.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "S1" - }, - "pin2": { - "compId": 2, - "pinName": "S" - }, - "path": [ - { - "x": 15.0, - "y": 340.0 - }, - { - "x": 15.0, - "y": 135.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "S2" - }, - "pin2": { - "compId": 3, - "pinName": "S" - }, - "path": [ - { - "x": 5.0, - "y": 380.0 - }, - { - "x": 5.0, - "y": 235.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "S3" - }, - "pin2": { - "compId": 4, - "pinName": "S" - }, - "path": [ - { - "x": 10.0, - "y": 420.0 - }, - { - "x": 10.0, - "y": 335.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "S4" - }, - "pin2": { - "compId": 5, - "pinName": "S" - }, - "path": [ - { - "x": 10.0, - "y": 460.0 - }, - { - "x": 10.0, - "y": 435.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "Cn" - }, - "pin2": { - "compId": 2, - "pinName": "Cin" - }, - "path": [ - { - "x": 5.0, - "y": 140.0 - }, - { - "x": 5.0, - "y": 85.0 - } - ] - }, - { - "pin1": { - "compId": 2, - "pinName": "Cout" - }, - "pin2": { - "compId": 3, - "pinName": "Cin" - }, - "path": [ - { - "x": 85.0, - "y": 85.0 - }, - { - "x": 85.0, - "y": 175.0 - }, - { - "x": 40.0, - "y": 175.0 - }, - { - "x": 40.0, - "y": 185.0 - } - ] - }, - { - "pin1": { - "compId": 3, - "pinName": "Cout" - }, - "pin2": { - "compId": 4, - "pinName": "Cin" - }, - "path": [ - { - "x": 85.0, - "y": 185.0 - }, - { - "x": 85.0, - "y": 275.0 - }, - { - "x": 40.0, - "y": 275.0 - }, - { - "x": 40.0, - "y": 285.0 - } - ] - }, - { - "pin1": { - "compId": 4, - "pinName": "Cout" - }, - "pin2": { - "compId": 25, - "pinName": "" - }, - "path": [ - { - "x": 85.0, - "y": 285.0 - } - ] - }, - { - "pin1": { - "compId": 25, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "Cin" - }, - "path": [ - { - "x": 40.0, - "y": 375.0 - }, - { - "x": 40.0, - "y": 385.0 - } - ] - }, - { - "pin1": { - "compId": 5, - "pinName": "Cout" - }, - "pin2": { - "compId": 26, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 2, - "pinName": "F" - }, - "pin2": { - "compId": 0, - "pinName": "F1" - }, - "path": [ - { - "x": 90.0, - "y": 95.0 - }, - { - "x": 90.0, - "y": 20.0 - } - ] - }, - { - "pin1": { - "compId": 3, - "pinName": "F" - }, - "pin2": { - "compId": 0, - "pinName": "F2" - }, - "path": [ - { - "x": 95.0, - "y": 195.0 - }, - { - "x": 95.0, - "y": 60.0 - } - ] - }, - { - "pin1": { - "compId": 4, - "pinName": "F" - }, - "pin2": { - "compId": 0, - "pinName": "F3" - }, - "path": [ - { - "x": 100.0, - "y": 295.0 - }, - { - "x": 100.0, - "y": 100.0 - } - ] - }, - { - "pin1": { - "compId": 5, - "pinName": "F" - }, - "pin2": { - "compId": 0, - "pinName": "F4" - }, - "path": [ - { - "x": 105.0, - "y": 395.0 - }, - { - "x": 105.0, - "y": 140.0 - } - ] - }, - { - "pin1": { - "compId": 25, - "pinName": "" - }, - "pin2": { - "compId": 6, - "pinName": "A" - }, - "path": [ - { - "x": 90.0, - "y": 375.0 - }, - { - "x": 90.0, - "y": 405.0 - } - ] - }, - { - "pin1": { - "compId": 26, - "pinName": "" - }, - "pin2": { - "compId": 6, - "pinName": "B" - }, - "path": [ - { - "x": 85.0, - "y": 415.0 - } - ] - }, - { - "pin1": { - "compId": 26, - "pinName": "" - }, - "pin2": { - "compId": 0, - "pinName": "Cn+4" - }, - "path": [ - { - "x": 130.0, - "y": 385.0 - }, - { - "x": 130.0, - "y": 180.0 - } - ] - }, - { - "pin1": { - "compId": 6, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "OVR" - } - } - ] - }, - "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", - "symbolRendererParams": { - "centerText": "GUIAm2901ALUInclDecode", - "horizontalComponentCenter": 17.5, - "centerTextHeight": 5.0, - "pinLabelHeight": 3.5, - "pinLabelMargin": 0.5 - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/components/am2901/GUIAm2901ALUInclSourceDecodeInclFunctionDecode.json b/net.mograsim.logic.ui.am2900/components/am2901/GUIAm2901ALUInclSourceDecodeInclFunctionDecode.json deleted file mode 100644 index fb6e9112..00000000 --- a/net.mograsim.logic.ui.am2900/components/am2901/GUIAm2901ALUInclSourceDecodeInclFunctionDecode.json +++ /dev/null @@ -1,1305 +0,0 @@ -mograsim version: 0.1.3 -{ - "width": 35.0, - "height": 230.0, - "interfacePins": [ - { - "location": { - "x": 0.0, - "y": 195.0 - }, - "name": "Q1", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 205.0 - }, - "name": "Q2", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 215.0 - }, - "name": "Q3", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 225.0 - }, - "name": "Q4", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 55.0 - }, - "name": "I0", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 45.0 - }, - "name": "I1", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 35.0 - }, - "name": "I2", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 25.0 - }, - "name": "I3", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 55.0 - }, - "name": "OVR", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 15.0 - }, - "name": "I4", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 65.0 - }, - "name": "Cn", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 5.0 - }, - "name": "I5", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 115.0 - }, - "name": "A1", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 125.0 - }, - "name": "A2", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 135.0 - }, - "name": "A3", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 145.0 - }, - "name": "A4", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 45.0 - }, - "name": "Cn+4", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 5.0 - }, - "name": "F1", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 15.0 - }, - "name": "F2", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 75.0 - }, - "name": "D1", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 25.0 - }, - "name": "F3", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 85.0 - }, - "name": "D2", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 35.0 - }, - "name": "F4", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 95.0 - }, - "name": "D3", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 155.0 - }, - "name": "B1", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 105.0 - }, - "name": "D4", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 165.0 - }, - "name": "B2", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 175.0 - }, - "name": "B3", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 185.0 - }, - "name": "B4", - "logicWidth": 1 - } - ], - "submodel": { - "innerScale": 0.25, - "subComps": [ - { - "pos": { - "x": 15.0, - "y": 165.0 - }, - "id": "GUIAm2901SourceDecode" - }, - { - "pos": { - "x": 45.0, - "y": 365.0 - }, - "id": "GUIsel2_4" - }, - { - "pos": { - "x": 45.0, - "y": 575.0 - }, - "id": "GUIsel3_4" - }, - { - "pos": { - "x": 60.0, - "y": 15.0 - }, - "id": "GUIAm2901ALUInclDecode" - }, - { - "pos": { - "x": 9.0, - "y": 459.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 14.0, - "y": 499.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 19.0, - "y": 539.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 24.0, - "y": 579.0 - }, - "id": "WireCrossPoint", - "params": 1 - } - ], - "innerWires": [ - { - "pin1": { - "compId": 0, - "pinName": "I5" - }, - "pin2": { - "compId": 4, - "pinName": "I5" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "I4" - }, - "pin2": { - "compId": 4, - "pinName": "I4" - }, - "path": [ - { - "x": 5.0, - "y": 60.0 - }, - { - "x": 5.0, - "y": 30.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "I3" - }, - "pin2": { - "compId": 4, - "pinName": "I3" - }, - "path": [ - { - "x": 15.0, - "y": 100.0 - }, - { - "x": 15.0, - "y": 40.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "I2" - }, - "pin2": { - "compId": 1, - "pinName": "I2" - }, - "path": [ - { - "x": 5.0, - "y": 140.0 - }, - { - "x": 5.0, - "y": 170.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "I1" - }, - "pin2": { - "compId": 1, - "pinName": "I1" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "I0" - }, - "pin2": { - "compId": 1, - "pinName": "I0" - }, - "path": [ - { - "x": 5.0, - "y": 220.0 - }, - { - "x": 5.0, - "y": 190.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "Cn" - }, - "pin2": { - "compId": 4, - "pinName": "Cn" - }, - "path": [ - { - "x": 10.0, - "y": 260.0 - }, - { - "x": 10.0, - "y": 50.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "D1" - }, - "pin2": { - "compId": 2, - "pinName": "A1" - }, - "path": [ - { - "x": 15.0, - "y": 300.0 - }, - { - "x": 15.0, - "y": 390.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "D2" - }, - "pin2": { - "compId": 2, - "pinName": "A2" - }, - "path": [ - { - "x": 10.0, - "y": 340.0 - }, - { - "x": 10.0, - "y": 400.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "D3" - }, - "pin2": { - "compId": 2, - "pinName": "A3" - }, - "path": [ - { - "x": 5.0, - "y": 380.0 - }, - { - "x": 5.0, - "y": 410.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "D4" - }, - "pin2": { - "compId": 2, - "pinName": "A4" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "A1" - }, - "pin2": { - "compId": 5, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "A2" - }, - "pin2": { - "compId": 6, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "A3" - }, - "pin2": { - "compId": 7, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "A4" - }, - "pin2": { - "compId": 8, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 5, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "B1" - }, - "path": [ - { - "x": 10.0, - "y": 430.0 - } - ] - }, - { - "pin1": { - "compId": 6, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "B2" - }, - "path": [ - { - "x": 15.0, - "y": 440.0 - } - ] - }, - { - "pin1": { - "compId": 7, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "B3" - }, - "path": [ - { - "x": 20.0, - "y": 450.0 - } - ] - }, - { - "pin1": { - "compId": 8, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "B4" - }, - "path": [ - { - "x": 25.0, - "y": 460.0 - } - ] - }, - { - "pin1": { - "compId": 5, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "A1" - }, - "path": [ - { - "x": 10.0, - "y": 610.0 - } - ] - }, - { - "pin1": { - "compId": 6, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "A2" - }, - "path": [ - { - "x": 15.0, - "y": 620.0 - } - ] - }, - { - "pin1": { - "compId": 7, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "A3" - }, - "path": [ - { - "x": 20.0, - "y": 630.0 - } - ] - }, - { - "pin1": { - "compId": 8, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "A4" - }, - "path": [ - { - "x": 25.0, - "y": 640.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "B1" - }, - "pin2": { - "compId": 3, - "pinName": "B1" - }, - "path": [ - { - "x": 5.0, - "y": 620.0 - }, - { - "x": 5.0, - "y": 650.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "B2" - }, - "pin2": { - "compId": 3, - "pinName": "B2" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "B3" - }, - "pin2": { - "compId": 3, - "pinName": "B3" - }, - "path": [ - { - "x": 5.0, - "y": 700.0 - }, - { - "x": 5.0, - "y": 670.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "B4" - }, - "pin2": { - "compId": 3, - "pinName": "B4" - }, - "path": [ - { - "x": 10.0, - "y": 740.0 - }, - { - "x": 10.0, - "y": 680.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "Q1" - }, - "pin2": { - "compId": 3, - "pinName": "C1" - }, - "path": [ - { - "x": 15.0, - "y": 780.0 - }, - { - "x": 15.0, - "y": 690.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "Q2" - }, - "pin2": { - "compId": 3, - "pinName": "C2" - }, - "path": [ - { - "x": 20.0, - "y": 820.0 - }, - { - "x": 20.0, - "y": 700.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "Q3" - }, - "pin2": { - "compId": 3, - "pinName": "C3" - }, - "path": [ - { - "x": 25.0, - "y": 860.0 - }, - { - "x": 25.0, - "y": 710.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "Q4" - }, - "pin2": { - "compId": 3, - "pinName": "C4" - }, - "path": [ - { - "x": 30.0, - "y": 900.0 - }, - { - "x": 30.0, - "y": 720.0 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "SQ" - }, - "pin2": { - "compId": 3, - "pinName": "SC" - }, - "path": [ - { - "x": 75.0, - "y": 170.0 - }, - { - "x": 75.0, - "y": 240.0 - }, - { - "x": 30.0, - "y": 240.0 - }, - { - "x": 30.0, - "y": 600.0 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "RA" - }, - "pin2": { - "compId": 2, - "pinName": "SB" - }, - "path": [ - { - "x": 70.0, - "y": 180.0 - }, - { - "x": 70.0, - "y": 235.0 - }, - { - "x": 20.0, - "y": 235.0 - }, - { - "x": 20.0, - "y": 380.0 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "SB" - }, - "pin2": { - "compId": 3, - "pinName": "SB" - }, - "path": [ - { - "x": 65.0, - "y": 190.0 - }, - { - "x": 65.0, - "y": 230.0 - }, - { - "x": 35.0, - "y": 230.0 - }, - { - "x": 35.0, - "y": 590.0 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "SA" - }, - "pin2": { - "compId": 3, - "pinName": "SA" - }, - "path": [ - { - "x": 60.0, - "y": 200.0 - }, - { - "x": 60.0, - "y": 225.0 - }, - { - "x": 40.0, - "y": 225.0 - }, - { - "x": 40.0, - "y": 580.0 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "RD" - }, - "pin2": { - "compId": 2, - "pinName": "SA" - }, - "path": [ - { - "x": 55.0, - "y": 210.0 - }, - { - "x": 55.0, - "y": 220.0 - }, - { - "x": 25.0, - "y": 220.0 - }, - { - "x": 25.0, - "y": 370.0 - } - ] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y1" - }, - "pin2": { - "compId": 4, - "pinName": "R1" - }, - "path": [ - { - "x": 82.5, - "y": 370.0 - }, - { - "x": 82.5, - "y": 162.5 - }, - { - "x": 20.0, - "y": 162.5 - }, - { - "x": 20.0, - "y": 60.0 - } - ] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y2" - }, - "pin2": { - "compId": 4, - "pinName": "R2" - }, - "path": [ - { - "x": 85.0, - "y": 380.0 - }, - { - "x": 85.0, - "y": 160.0 - }, - { - "x": 22.5, - "y": 160.0 - }, - { - "x": 22.5, - "y": 70.0 - } - ] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y3" - }, - "pin2": { - "compId": 4, - "pinName": "R3" - }, - "path": [ - { - "x": 87.5, - "y": 390.0 - }, - { - "x": 87.5, - "y": 157.5 - }, - { - "x": 25.0, - "y": 157.5 - }, - { - "x": 25.0, - "y": 80.0 - } - ] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y4" - }, - "pin2": { - "compId": 4, - "pinName": "R4" - }, - "path": [ - { - "x": 90.0, - "y": 400.0 - }, - { - "x": 90.0, - "y": 155.0 - }, - { - "x": 27.5, - "y": 155.0 - }, - { - "x": 27.5, - "y": 90.0 - } - ] - }, - { - "pin1": { - "compId": 3, - "pinName": "Y1" - }, - "pin2": { - "compId": 4, - "pinName": "S1" - }, - "path": [ - { - "x": 92.5, - "y": 580.0 - }, - { - "x": 92.5, - "y": 152.5 - }, - { - "x": 30.0, - "y": 152.5 - }, - { - "x": 30.0, - "y": 100.0 - } - ] - }, - { - "pin1": { - "compId": 3, - "pinName": "Y2" - }, - "pin2": { - "compId": 4, - "pinName": "S2" - }, - "path": [ - { - "x": 95.0, - "y": 590.0 - }, - { - "x": 95.0, - "y": 150.0 - }, - { - "x": 32.5, - "y": 150.0 - }, - { - "x": 32.5, - "y": 110.0 - } - ] - }, - { - "pin1": { - "compId": 3, - "pinName": "Y3" - }, - "pin2": { - "compId": 4, - "pinName": "S3" - }, - "path": [ - { - "x": 97.5, - "y": 600.0 - }, - { - "x": 97.5, - "y": 147.5 - }, - { - "x": 35.0, - "y": 147.5 - }, - { - "x": 35.0, - "y": 120.0 - } - ] - }, - { - "pin1": { - "compId": 3, - "pinName": "Y4" - }, - "pin2": { - "compId": 4, - "pinName": "S4" - }, - "path": [ - { - "x": 100.0, - "y": 610.0 - }, - { - "x": 100.0, - "y": 145.0 - }, - { - "x": 37.5, - "y": 145.0 - }, - { - "x": 37.5, - "y": 130.0 - } - ] - }, - { - "pin1": { - "compId": 4, - "pinName": "F1" - }, - "pin2": { - "compId": 0, - "pinName": "F1" - }, - "path": [] - }, - { - "pin1": { - "compId": 4, - "pinName": "F2" - }, - "pin2": { - "compId": 0, - "pinName": "F2" - }, - "path": [ - { - "x": 135.0, - "y": 30.0 - }, - { - "x": 135.0, - "y": 60.0 - } - ] - }, - { - "pin1": { - "compId": 4, - "pinName": "F3" - }, - "pin2": { - "compId": 0, - "pinName": "F3" - }, - "path": [ - { - "x": 130.0, - "y": 40.0 - }, - { - "x": 130.0, - "y": 100.0 - } - ] - }, - { - "pin1": { - "compId": 4, - "pinName": "F4" - }, - "pin2": { - "compId": 0, - "pinName": "F4" - }, - "path": [ - { - "x": 125.0, - "y": 50.0 - }, - { - "x": 125.0, - "y": 140.0 - } - ] - }, - { - "pin1": { - "compId": 4, - "pinName": "Cn+4" - }, - "pin2": { - "compId": 0, - "pinName": "Cn+4" - }, - "path": [ - { - "x": 120.0, - "y": 60.0 - }, - { - "x": 120.0, - "y": 180.0 - } - ] - }, - { - "pin1": { - "compId": 4, - "pinName": "OVR" - }, - "pin2": { - "compId": 0, - "pinName": "OVR" - }, - "path": [ - { - "x": 115.0, - "y": 70.0 - }, - { - "x": 115.0, - "y": 220.0 - } - ] - } - ] - }, - "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", - "symbolRendererParams": { - "centerText": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode", - "horizontalComponentCenter": 17.5, - "centerTextHeight": 5.0, - "pinLabelHeight": 3.5, - "pinLabelMargin": 0.5 - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/components/am2901/GUIAm2901ALUOneBit.json b/net.mograsim.logic.ui.am2900/components/am2901/GUIAm2901ALUOneBit.json deleted file mode 100644 index ac53c55c..00000000 --- a/net.mograsim.logic.ui.am2900/components/am2901/GUIAm2901ALUOneBit.json +++ /dev/null @@ -1,511 +0,0 @@ -mograsim version: 0.1.3 -{ - "width": 35.0, - "height": 90.0, - "interfacePins": [ - { - "location": { - "x": 0.0, - "y": 35.0 - }, - "name": "R", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 55.0 - }, - "name": "S", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 15.0 - }, - "name": "F", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 75.0 - }, - "name": "FN", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 5.0 - }, - "name": "Cin", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 65.0 - }, - "name": "SN", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 5.0 - }, - "name": "Cout", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 45.0 - }, - "name": "RN", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 85.0 - }, - "name": "L", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 25.0 - }, - "name": "CinE", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 15.0 - }, - "name": "CoutE", - "logicWidth": 1 - } - ], - "submodel": { - "innerScale": 0.2, - "subComps": [ - { - "pos": { - "x": 10.0, - "y": 20.0 - }, - "id": "GUIand" - }, - { - "pos": { - "x": 10.0, - "y": 190.0 - }, - "id": "GUIxor" - }, - { - "pos": { - "x": 10.0, - "y": 290.0 - }, - "id": "GUIxor" - }, - { - "pos": { - "x": 60.0, - "y": 20.0 - }, - "id": "GUIfulladder" - }, - { - "pos": { - "x": 60.0, - "y": 55.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 135.0, - "y": 20.0 - }, - "id": "GUIand" - }, - { - "pos": { - "x": 90.0, - "y": 70.0 - }, - "id": "GUImux1" - }, - { - "pos": { - "x": 135.0, - "y": 70.0 - }, - "id": "GUIxor" - }, - { - "pos": { - "x": 49.0, - "y": 59.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 54.0, - "y": 69.0 - }, - "id": "WireCrossPoint", - "params": 1 - } - ], - "innerWires": [ - { - "pin1": { - "compId": 0, - "pinName": "Cin" - }, - "pin2": { - "compId": 1, - "pinName": "A" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "CoutE" - }, - "pin2": { - "compId": 6, - "pinName": "A" - }, - "path": [ - { - "x": 5.0, - "y": 75.0 - }, - { - "x": 5.0, - "y": 10.0 - }, - { - "x": 130.0, - "y": 10.0 - }, - { - "x": 130.0, - "y": 25.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "CinE" - }, - "pin2": { - "compId": 1, - "pinName": "B" - }, - "path": [ - { - "x": 7.5, - "y": 125.0 - }, - { - "x": 7.5, - "y": 35.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "R" - }, - "pin2": { - "compId": 2, - "pinName": "A" - } - }, - { - "pin1": { - "compId": 0, - "pinName": "RN" - }, - "pin2": { - "compId": 2, - "pinName": "B" - } - }, - { - "pin1": { - "compId": 0, - "pinName": "S" - }, - "pin2": { - "compId": 3, - "pinName": "A" - } - }, - { - "pin1": { - "compId": 0, - "pinName": "SN" - }, - "pin2": { - "compId": 3, - "pinName": "B" - } - }, - { - "pin1": { - "compId": 0, - "pinName": "FN" - }, - "pin2": { - "compId": 8, - "pinName": "B" - }, - "path": [ - { - "x": 130.0, - "y": 375.0 - }, - { - "x": 130.0, - "y": 85.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "L" - }, - "pin2": { - "compId": 7, - "pinName": "S0" - }, - "path": [ - { - "x": 87.5, - "y": 425.0 - }, - { - "x": 87.5, - "y": 75.0 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y" - }, - "pin2": { - "compId": 4, - "pinName": "A" - }, - "path": [] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y" - }, - "pin2": { - "compId": 9, - "pinName": "" - }, - "path": [ - { - "x": 50.0, - "y": 195.0 - } - ] - }, - { - "pin1": { - "compId": 9, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "B" - }, - "path": [ - { - "x": 50.0, - "y": 35.0 - } - ] - }, - { - "pin1": { - "compId": 9, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "A" - }, - "path": [] - }, - { - "pin1": { - "compId": 3, - "pinName": "Y" - }, - "pin2": { - "compId": 10, - "pinName": "" - }, - "path": [ - { - "x": 55.0, - "y": 295.0 - } - ] - }, - { - "pin1": { - "compId": 10, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "C" - }, - "path": [ - { - "x": 55.0, - "y": 45.0 - } - ] - }, - { - "pin1": { - "compId": 10, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "B" - }, - "path": [] - }, - { - "pin1": { - "compId": 4, - "pinName": "Y" - }, - "pin2": { - "compId": 7, - "pinName": "I0" - }, - "path": [ - { - "x": 100.0, - "y": 25.0 - }, - { - "x": 100.0, - "y": 65.0 - }, - { - "x": 85.0, - "y": 65.0 - }, - { - "x": 85.0, - "y": 85.0 - } - ] - }, - { - "pin1": { - "compId": 4, - "pinName": "Z" - }, - "pin2": { - "compId": 6, - "pinName": "B" - }, - "path": [] - }, - { - "pin1": { - "compId": 5, - "pinName": "Y" - }, - "pin2": { - "compId": 7, - "pinName": "I1" - }, - "path": [ - { - "x": 82.5, - "y": 65.0 - }, - { - "x": 82.5, - "y": 95.0 - } - ] - }, - { - "pin1": { - "compId": 7, - "pinName": "Y" - }, - "pin2": { - "compId": 8, - "pinName": "A" - }, - "path": [] - }, - { - "pin1": { - "compId": 6, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Cout" - }, - "path": [] - }, - { - "pin1": { - "compId": 8, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "F" - }, - "path": [] - } - ] - }, - "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", - "symbolRendererParams": { - "centerText": "GUIAm2901ALUOneBit", - "horizontalComponentCenter": 17.5, - "centerTextHeight": 5.0, - "pinLabelHeight": 3.5, - "pinLabelMargin": 0.5 - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/components/am2901/GUIAm2901DestDecode.json b/net.mograsim.logic.ui.am2900/components/am2901/GUIAm2901DestDecode.json deleted file mode 100644 index 613b9b93..00000000 --- a/net.mograsim.logic.ui.am2900/components/am2901/GUIAm2901DestDecode.json +++ /dev/null @@ -1,1006 +0,0 @@ -mograsim version: 0.1.3 -{ - "width": 35.0, - "height": 60.0, - "interfacePins": [ - { - "location": { - "x": 35.0, - "y": 45.0 - }, - "name": "LSH", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 5.0 - }, - "name": "NSH", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 15.0 - }, - "name": "RSH", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 25.0 - }, - "name": "I6", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 35.0 - }, - "name": "YF", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 15.0 - }, - "name": "I7", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 25.0 - }, - "name": "RAMWE", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 55.0 - }, - "name": "QWE", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 5.0 - }, - "name": "I8", - "logicWidth": 1 - } - ], - "submodel": { - "innerScale": 0.25, - "subComps": [ - { - "pos": { - "x": 15.0, - "y": 10.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 15.0, - "y": 50.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 15.0, - "y": 90.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 15.0, - "y": 150.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 50.0, - "y": 10.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 50.0, - "y": 50.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 50.0, - "y": 90.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 50.0, - "y": 130.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 80.0, - "y": 10.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 80.0, - "y": 90.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 80.0, - "y": 145.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 110.0, - "y": 105.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 115.0, - "y": 210.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 4.0, - "y": 19.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 4.0, - "y": 14.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 4.0, - "y": 24.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 9.0, - "y": 59.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 9.0, - "y": 64.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 9.0, - "y": 104.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 4.0, - "y": 154.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 39.0, - "y": 59.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 44.0, - "y": 19.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 44.0, - "y": 54.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 39.0, - "y": 134.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 74.0, - "y": 19.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 74.0, - "y": 99.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 74.0, - "y": 104.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 74.0, - "y": 159.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 109.0, - "y": 214.0 - }, - "id": "WireCrossPoint", - "params": 1 - } - ], - "innerWires": [ - { - "pin1": { - "compId": 0, - "pinName": "I8" - }, - "pin2": { - "compId": 14, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 14, - "pinName": "" - }, - "pin2": { - "compId": 15, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 14, - "pinName": "" - }, - "pin2": { - "compId": 16, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 15, - "pinName": "" - }, - "pin2": { - "compId": 1, - "pinName": "A" - }, - "path": [] - }, - { - "pin1": { - "compId": 16, - "pinName": "" - }, - "pin2": { - "compId": 1, - "pinName": "B" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "I7" - }, - "pin2": { - "compId": 17, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 17, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "A" - }, - "path": [ - { - "x": 10.0, - "y": 55.0 - } - ] - }, - { - "pin1": { - "compId": 17, - "pinName": "" - }, - "pin2": { - "compId": 18, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 18, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "B" - }, - "path": [] - }, - { - "pin1": { - "compId": 18, - "pinName": "" - }, - "pin2": { - "compId": 19, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 19, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "B" - }, - "path": [] - }, - { - "pin1": { - "compId": 16, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "A" - }, - "path": [ - { - "x": 5.0, - "y": 95.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "I6" - }, - "pin2": { - "compId": 20, - "pinName": "" - }, - "path": [ - { - "x": 5.0, - "y": 100.0 - } - ] - }, - { - "pin1": { - "compId": 20, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "A" - }, - "path": [] - }, - { - "pin1": { - "compId": 20, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "B" - }, - "path": [ - { - "x": 5.0, - "y": 165.0 - } - ] - }, - { - "pin1": { - "compId": 15, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "A" - }, - "path": [ - { - "x": 5.0, - "y": 5.0 - }, - { - "x": 40.0, - "y": 5.0 - }, - { - "x": 40.0, - "y": 15.0 - } - ] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y" - }, - "pin2": { - "compId": 21, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 21, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "B" - }, - "path": [ - { - "x": 40.0, - "y": 25.0 - } - ] - }, - { - "pin1": { - "compId": 21, - "pinName": "" - }, - "pin2": { - "compId": 6, - "pinName": "B" - }, - "path": [ - { - "x": 40.0, - "y": 65.0 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y" - }, - "pin2": { - "compId": 22, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 22, - "pinName": "" - }, - "pin2": { - "compId": 0, - "pinName": "NSH" - }, - "path": [ - { - "x": 45.0, - "y": 5.0 - }, - { - "x": 135.0, - "y": 5.0 - }, - { - "x": 135.0, - "y": 20.0 - } - ] - }, - { - "pin1": { - "compId": 22, - "pinName": "" - }, - "pin2": { - "compId": 23, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 23, - "pinName": "" - }, - "pin2": { - "compId": 6, - "pinName": "A" - }, - "path": [] - }, - { - "pin1": { - "compId": 23, - "pinName": "" - }, - "pin2": { - "compId": 7, - "pinName": "A" - }, - "path": [ - { - "x": 45.0, - "y": 95.0 - } - ] - }, - { - "pin1": { - "compId": 19, - "pinName": "" - }, - "pin2": { - "compId": 7, - "pinName": "B" - }, - "path": [ - { - "x": 10.0, - "y": 115.0 - }, - { - "x": 45.0, - "y": 115.0 - }, - { - "x": 45.0, - "y": 105.0 - } - ] - }, - { - "pin1": { - "compId": 3, - "pinName": "Y" - }, - "pin2": { - "compId": 24, - "pinName": "" - }, - "path": [ - { - "x": 40.0, - "y": 100.0 - } - ] - }, - { - "pin1": { - "compId": 24, - "pinName": "" - }, - "pin2": { - "compId": 8, - "pinName": "A" - }, - "path": [] - }, - { - "pin1": { - "compId": 24, - "pinName": "" - }, - "pin2": { - "compId": 8, - "pinName": "B" - }, - "path": [ - { - "x": 40.0, - "y": 145.0 - } - ] - }, - { - "pin1": { - "compId": 5, - "pinName": "Y" - }, - "pin2": { - "compId": 25, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 25, - "pinName": "" - }, - "pin2": { - "compId": 9, - "pinName": "A" - }, - "path": [ - { - "x": 75.0, - "y": 15.0 - } - ] - }, - { - "pin1": { - "compId": 25, - "pinName": "" - }, - "pin2": { - "compId": 9, - "pinName": "B" - }, - "path": [ - { - "x": 75.0, - "y": 25.0 - } - ] - }, - { - "pin1": { - "compId": 6, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "RAMWE" - }, - "path": [ - { - "x": 125.0, - "y": 60.0 - }, - { - "x": 125.0, - "y": 100.0 - } - ] - }, - { - "pin1": { - "compId": 7, - "pinName": "Y" - }, - "pin2": { - "compId": 26, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 26, - "pinName": "" - }, - "pin2": { - "compId": 10, - "pinName": "A" - }, - "path": [ - { - "x": 75.0, - "y": 95.0 - } - ] - }, - { - "pin1": { - "compId": 26, - "pinName": "" - }, - "pin2": { - "compId": 27, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 27, - "pinName": "" - }, - "pin2": { - "compId": 10, - "pinName": "B" - }, - "path": [] - }, - { - "pin1": { - "compId": 8, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "LSH" - }, - "path": [ - { - "x": 125.0, - "y": 140.0 - }, - { - "x": 125.0, - "y": 180.0 - } - ] - }, - { - "pin1": { - "compId": 27, - "pinName": "" - }, - "pin2": { - "compId": 11, - "pinName": "A" - }, - "path": [ - { - "x": 75.0, - "y": 150.0 - } - ] - }, - { - "pin1": { - "compId": 4, - "pinName": "Y" - }, - "pin2": { - "compId": 28, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 28, - "pinName": "" - }, - "pin2": { - "compId": 11, - "pinName": "B" - }, - "path": [] - }, - { - "pin1": { - "compId": 9, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "RSH" - }, - "path": [ - { - "x": 130.0, - "y": 20.0 - }, - { - "x": 130.0, - "y": 60.0 - } - ] - }, - { - "pin1": { - "compId": 10, - "pinName": "Y" - }, - "pin2": { - "compId": 12, - "pinName": "A" - } - }, - { - "pin1": { - "compId": 28, - "pinName": "" - }, - "pin2": { - "compId": 12, - "pinName": "B" - }, - "path": [ - { - "x": 75.0, - "y": 170.0 - }, - { - "x": 105.0, - "y": 170.0 - }, - { - "x": 105.0, - "y": 120.0 - } - ] - }, - { - "pin1": { - "compId": 11, - "pinName": "Y" - }, - "pin2": { - "compId": 29, - "pinName": "" - }, - "path": [ - { - "x": 110.0, - "y": 155.0 - } - ] - }, - { - "pin1": { - "compId": 29, - "pinName": "" - }, - "pin2": { - "compId": 13, - "pinName": "A" - }, - "path": [] - }, - { - "pin1": { - "compId": 29, - "pinName": "" - }, - "pin2": { - "compId": 13, - "pinName": "B" - }, - "path": [ - { - "x": 110.0, - "y": 225.0 - } - ] - }, - { - "pin1": { - "compId": 12, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "YF" - } - }, - { - "pin1": { - "compId": 13, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "QWE" - }, - "path": [] - } - ] - }, - "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", - "symbolRendererParams": { - "centerText": "GUIAm2901DestDecode", - "horizontalComponentCenter": 17.5, - "centerTextHeight": 5.0, - "pinLabelHeight": 3.5, - "pinLabelMargin": 0.5 - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/components/am2901/GUIAm2901QReg.json b/net.mograsim.logic.ui.am2900/components/am2901/GUIAm2901QReg.json deleted file mode 100644 index 71889721..00000000 --- a/net.mograsim.logic.ui.am2900/components/am2901/GUIAm2901QReg.json +++ /dev/null @@ -1,400 +0,0 @@ -mograsim version: 0.1.3 -{ - "width": 35.0, - "height": 60.0, - "interfacePins": [ - { - "location": { - "x": 0.0, - "y": 55.0 - }, - "name": "D4", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 5.0 - }, - "name": "Q1", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 15.0 - }, - "name": "Q2", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 25.0 - }, - "name": "Q3", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 5.0 - }, - "name": "C", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 35.0 - }, - "name": "Q4", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 25.0 - }, - "name": "D1", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 15.0 - }, - "name": "WE", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 35.0 - }, - "name": "D2", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 45.0 - }, - "name": "D3", - "logicWidth": 1 - } - ], - "submodel": { - "innerScale": 0.4, - "subComps": [ - { - "pos": { - "x": 5.0, - "y": 15.0 - }, - "id": "GUIand" - }, - { - "pos": { - "x": 50.0, - "y": 7.5 - }, - "id": "GUIdff" - }, - { - "pos": { - "x": 50.0, - "y": 32.5 - }, - "id": "GUIdff" - }, - { - "pos": { - "x": 50.0, - "y": 57.5 - }, - "id": "GUIdff" - }, - { - "pos": { - "x": 50.0, - "y": 82.5 - }, - "id": "GUIdff" - }, - { - "pos": { - "x": 41.5, - "y": 19.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 41.5, - "y": 36.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 41.5, - "y": 61.5 - }, - "id": "WireCrossPoint", - "params": 1 - } - ], - "innerWires": [ - { - "pin1": { - "compId": 0, - "pinName": "C" - }, - "pin2": { - "compId": 1, - "pinName": "A" - } - }, - { - "pin1": { - "compId": 0, - "pinName": "WE" - }, - "pin2": { - "compId": 1, - "pinName": "B" - } - }, - { - "pin1": { - "compId": 1, - "pinName": "Y" - }, - "pin2": { - "compId": 6, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 6, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "C" - }, - "path": [ - { - "x": 42.5, - "y": 12.5 - } - ] - }, - { - "pin1": { - "compId": 6, - "pinName": "" - }, - "pin2": { - "compId": 7, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 7, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "C" - }, - "path": [] - }, - { - "pin1": { - "compId": 7, - "pinName": "" - }, - "pin2": { - "compId": 8, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 8, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "C" - }, - "path": [] - }, - { - "pin1": { - "compId": 8, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "C" - }, - "path": [ - { - "x": 42.5, - "y": 87.5 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "D1" - }, - "pin2": { - "compId": 2, - "pinName": "D" - }, - "path": [ - { - "x": 17.5, - "y": 62.5 - }, - { - "x": 17.5, - "y": 42.5 - }, - { - "x": 45.0, - "y": 42.5 - }, - { - "x": 45.0, - "y": 22.5 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "D2" - }, - "pin2": { - "compId": 3, - "pinName": "D" - }, - "path": [ - { - "x": 22.5, - "y": 87.5 - }, - { - "x": 22.5, - "y": 47.5 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "D3" - }, - "pin2": { - "compId": 4, - "pinName": "D" - }, - "path": [ - { - "x": 27.5, - "y": 112.5 - }, - { - "x": 27.5, - "y": 72.5 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "D4" - }, - "pin2": { - "compId": 5, - "pinName": "D" - }, - "path": [ - { - "x": 32.5, - "y": 137.5 - }, - { - "x": 32.5, - "y": 97.5 - } - ] - }, - { - "pin1": { - "compId": 2, - "pinName": "Q" - }, - "pin2": { - "compId": 0, - "pinName": "Q1" - }, - "path": [] - }, - { - "pin1": { - "compId": 3, - "pinName": "Q" - }, - "pin2": { - "compId": 0, - "pinName": "Q2" - }, - "path": [] - }, - { - "pin1": { - "compId": 4, - "pinName": "Q" - }, - "pin2": { - "compId": 0, - "pinName": "Q3" - }, - "path": [] - }, - { - "pin1": { - "compId": 5, - "pinName": "Q" - }, - "pin2": { - "compId": 0, - "pinName": "Q4" - }, - "path": [] - } - ] - }, - "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", - "symbolRendererParams": { - "centerText": "GUIAm2901QReg", - "horizontalComponentCenter": 17.5, - "centerTextHeight": 5.0, - "pinLabelHeight": 3.5, - "pinLabelMargin": 0.5 - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/components/am2901/GUIAm2901SourceDecode.json b/net.mograsim.logic.ui.am2900/components/am2901/GUIAm2901SourceDecode.json deleted file mode 100644 index 75b5f703..00000000 --- a/net.mograsim.logic.ui.am2900/components/am2901/GUIAm2901SourceDecode.json +++ /dev/null @@ -1,1045 +0,0 @@ -mograsim version: 0.1.3 -{ - "width": 35.0, - "height": 50.0, - "interfacePins": [ - { - "location": { - "x": 35.0, - "y": 45.0 - }, - "name": "RD", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 25.0 - }, - "name": "I0", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 15.0 - }, - "name": "I1", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 5.0 - }, - "name": "I2", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 5.0 - }, - "name": "SQ", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 35.0 - }, - "name": "SA", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 15.0 - }, - "name": "RA", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 25.0 - }, - "name": "SB", - "logicWidth": 1 - } - ], - "submodel": { - "innerScale": 0.25, - "subComps": [ - { - "pos": { - "x": 10.0, - "y": 10.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 10.0, - "y": 50.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 10.0, - "y": 90.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 40.0, - "y": 10.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 40.0, - "y": 50.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 40.0, - "y": 90.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 40.0, - "y": 130.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 40.0, - "y": 170.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 70.0, - "y": 10.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 70.0, - "y": 50.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 70.0, - "y": 90.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 70.0, - "y": 130.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 70.0, - "y": 170.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 100.0, - "y": 10.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 100.0, - "y": 170.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 4.0, - "y": 19.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 6.5, - "y": 19.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 4.0, - "y": 144.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 6.5, - "y": 59.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 6.5, - "y": 99.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 6.5, - "y": 104.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 31.5, - "y": 54.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 34.0, - "y": 59.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 34.0, - "y": 64.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 34.0, - "y": 134.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 36.5, - "y": 99.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 64.0, - "y": 59.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 64.0, - "y": 99.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 64.0, - "y": 139.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 94.0, - "y": 19.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 94.0, - "y": 179.0 - }, - "id": "WireCrossPoint", - "params": 1 - } - ], - "innerWires": [ - { - "pin1": { - "compId": 0, - "pinName": "I2" - }, - "pin2": { - "compId": 16, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 16, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "A" - }, - "path": [ - { - "x": 5.0, - "y": 5.0 - }, - { - "x": 35.0, - "y": 5.0 - }, - { - "x": 35.0, - "y": 15.0 - } - ] - }, - { - "pin1": { - "compId": 16, - "pinName": "" - }, - "pin2": { - "compId": 17, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 17, - "pinName": "" - }, - "pin2": { - "compId": 1, - "pinName": "A" - }, - "path": [ - { - "x": 7.5, - "y": 15.0 - } - ] - }, - { - "pin1": { - "compId": 17, - "pinName": "" - }, - "pin2": { - "compId": 1, - "pinName": "B" - }, - "path": [ - { - "x": 7.5, - "y": 25.0 - } - ] - }, - { - "pin1": { - "compId": 16, - "pinName": "" - }, - "pin2": { - "compId": 18, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 18, - "pinName": "" - }, - "pin2": { - "compId": 7, - "pinName": "B" - }, - "path": [] - }, - { - "pin1": { - "compId": 18, - "pinName": "" - }, - "pin2": { - "compId": 13, - "pinName": "B" - }, - "path": [ - { - "x": 5.0, - "y": 195.0 - }, - { - "x": 65.0, - "y": 195.0 - }, - { - "x": 65.0, - "y": 185.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "I1" - }, - "pin2": { - "compId": 19, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 19, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "A" - }, - "path": [ - { - "x": 7.5, - "y": 55.0 - } - ] - }, - { - "pin1": { - "compId": 19, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "B" - }, - "path": [ - { - "x": 7.5, - "y": 65.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "I0" - }, - "pin2": { - "compId": 20, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 20, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "A" - }, - "path": [ - { - "x": 7.5, - "y": 95.0 - } - ] - }, - { - "pin1": { - "compId": 20, - "pinName": "" - }, - "pin2": { - "compId": 21, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 21, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "B" - }, - "path": [] - }, - { - "pin1": { - "compId": 21, - "pinName": "" - }, - "pin2": { - "compId": 6, - "pinName": "B" - }, - "path": [ - { - "x": 7.5, - "y": 112.5 - }, - { - "x": 32.5, - "y": 112.5 - }, - { - "x": 32.5, - "y": 105.0 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y" - }, - "pin2": { - "compId": 22, - "pinName": "" - }, - "path": [ - { - "x": 32.5, - "y": 20.0 - } - ] - }, - { - "pin1": { - "compId": 22, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "A" - }, - "path": [] - }, - { - "pin1": { - "compId": 22, - "pinName": "" - }, - "pin2": { - "compId": 6, - "pinName": "A" - }, - "path": [ - { - "x": 32.5, - "y": 95.0 - } - ] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y" - }, - "pin2": { - "compId": 23, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 23, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "B" - }, - "path": [ - { - "x": 35.0, - "y": 25.0 - } - ] - }, - { - "pin1": { - "compId": 23, - "pinName": "" - }, - "pin2": { - "compId": 24, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 24, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "B" - }, - "path": [] - }, - { - "pin1": { - "compId": 24, - "pinName": "" - }, - "pin2": { - "compId": 25, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 25, - "pinName": "" - }, - "pin2": { - "compId": 7, - "pinName": "A" - }, - "path": [] - }, - { - "pin1": { - "compId": 25, - "pinName": "" - }, - "pin2": { - "compId": 8, - "pinName": "A" - }, - "path": [ - { - "x": 35.0, - "y": 175.0 - } - ] - }, - { - "pin1": { - "compId": 3, - "pinName": "Y" - }, - "pin2": { - "compId": 26, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 26, - "pinName": "" - }, - "pin2": { - "compId": 9, - "pinName": "B" - }, - "path": [ - { - "x": 37.5, - "y": 35.0 - }, - { - "x": 65.0, - "y": 35.0 - }, - { - "x": 65.0, - "y": 25.0 - } - ] - }, - { - "pin1": { - "compId": 26, - "pinName": "" - }, - "pin2": { - "compId": 8, - "pinName": "B" - }, - "path": [ - { - "x": 37.5, - "y": 185.0 - } - ] - }, - { - "pin1": { - "compId": 4, - "pinName": "Y" - }, - "pin2": { - "compId": 9, - "pinName": "A" - } - }, - { - "pin1": { - "compId": 5, - "pinName": "Y" - }, - "pin2": { - "compId": 27, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 27, - "pinName": "" - }, - "pin2": { - "compId": 10, - "pinName": "A" - }, - "path": [ - { - "x": 65.0, - "y": 55.0 - } - ] - }, - { - "pin1": { - "compId": 27, - "pinName": "" - }, - "pin2": { - "compId": 10, - "pinName": "B" - }, - "path": [ - { - "x": 65.0, - "y": 65.0 - } - ] - }, - { - "pin1": { - "compId": 6, - "pinName": "Y" - }, - "pin2": { - "compId": 28, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 28, - "pinName": "" - }, - "pin2": { - "compId": 11, - "pinName": "A" - }, - "path": [ - { - "x": 65.0, - "y": 95.0 - } - ] - }, - { - "pin1": { - "compId": 28, - "pinName": "" - }, - "pin2": { - "compId": 11, - "pinName": "B" - }, - "path": [ - { - "x": 65.0, - "y": 105.0 - } - ] - }, - { - "pin1": { - "compId": 7, - "pinName": "Y" - }, - "pin2": { - "compId": 29, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 29, - "pinName": "" - }, - "pin2": { - "compId": 12, - "pinName": "A" - }, - "path": [ - { - "x": 65.0, - "y": 135.0 - } - ] - }, - { - "pin1": { - "compId": 29, - "pinName": "" - }, - "pin2": { - "compId": 12, - "pinName": "B" - }, - "path": [ - { - "x": 65.0, - "y": 145.0 - } - ] - }, - { - "pin1": { - "compId": 8, - "pinName": "Y" - }, - "pin2": { - "compId": 13, - "pinName": "A" - } - }, - { - "pin1": { - "compId": 9, - "pinName": "Y" - }, - "pin2": { - "compId": 30, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 30, - "pinName": "" - }, - "pin2": { - "compId": 14, - "pinName": "A" - }, - "path": [ - { - "x": 95.0, - "y": 15.0 - } - ] - }, - { - "pin1": { - "compId": 30, - "pinName": "" - }, - "pin2": { - "compId": 14, - "pinName": "B" - }, - "path": [ - { - "x": 95.0, - "y": 25.0 - } - ] - }, - { - "pin1": { - "compId": 10, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "RA" - }, - "path": [] - }, - { - "pin1": { - "compId": 11, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "SB" - }, - "path": [] - }, - { - "pin1": { - "compId": 12, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "SA" - }, - "path": [] - }, - { - "pin1": { - "compId": 13, - "pinName": "Y" - }, - "pin2": { - "compId": 31, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 31, - "pinName": "" - }, - "pin2": { - "compId": 15, - "pinName": "A" - }, - "path": [ - { - "x": 95.0, - "y": 175.0 - } - ] - }, - { - "pin1": { - "compId": 31, - "pinName": "" - }, - "pin2": { - "compId": 15, - "pinName": "B" - }, - "path": [ - { - "x": 95.0, - "y": 185.0 - } - ] - }, - { - "pin1": { - "compId": 14, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "SQ" - }, - "path": [] - }, - { - "pin1": { - "compId": 15, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "RD" - }, - "path": [] - } - ] - }, - "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", - "symbolRendererParams": { - "centerText": "Am2901SourceDecode", - "horizontalComponentCenter": 17.5, - "centerTextHeight": 5.0, - "pinLabelHeight": 3.5, - "pinLabelMargin": 0.5 - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/examples/ComponenetSerializer.java b/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/examples/ComponenetSerializer.java deleted file mode 100644 index 4c7b5d9f..00000000 --- a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/examples/ComponenetSerializer.java +++ /dev/null @@ -1,65 +0,0 @@ -package net.mograsim.logic.ui.examples; - -import java.io.IOException; -import java.util.function.Function; - -import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.logic.ui.model.components.GUIComponent; -import net.mograsim.logic.ui.model.components.mi.nandbased.GUI_rsLatch; -import net.mograsim.logic.ui.model.components.mi.nandbased.GUIand; -import net.mograsim.logic.ui.model.components.mi.nandbased.GUIand41; -import net.mograsim.logic.ui.model.components.mi.nandbased.GUIandor414; -import net.mograsim.logic.ui.model.components.mi.nandbased.GUIdemux2; -import net.mograsim.logic.ui.model.components.mi.nandbased.GUIdff; -import net.mograsim.logic.ui.model.components.mi.nandbased.GUIdlatch; -import net.mograsim.logic.ui.model.components.mi.nandbased.GUIdlatch4; -import net.mograsim.logic.ui.model.components.mi.nandbased.GUIfulladder; -import net.mograsim.logic.ui.model.components.mi.nandbased.GUIhalfadder; -import net.mograsim.logic.ui.model.components.mi.nandbased.GUImux1; -import net.mograsim.logic.ui.model.components.mi.nandbased.GUImux1_4; -import net.mograsim.logic.ui.model.components.mi.nandbased.GUInand3; -import net.mograsim.logic.ui.model.components.mi.nandbased.GUInot4; -import net.mograsim.logic.ui.model.components.mi.nandbased.GUIor4; -import net.mograsim.logic.ui.model.components.mi.nandbased.GUIor_4; -import net.mograsim.logic.ui.model.components.mi.nandbased.GUIram2; -import net.mograsim.logic.ui.model.components.mi.nandbased.GUIram4; -import net.mograsim.logic.ui.model.components.mi.nandbased.GUIsel2_4; -import net.mograsim.logic.ui.model.components.mi.nandbased.GUIsel3_4; -import net.mograsim.logic.ui.model.components.mi.nandbased.GUIxor; -import net.mograsim.logic.ui.model.components.mi.nandbased.am2901.GUIAm2901; -import net.mograsim.logic.ui.model.components.mi.nandbased.am2901.GUIAm2901ALUFuncDecode; -import net.mograsim.logic.ui.model.components.mi.nandbased.am2901.GUIAm2901ALUInclDecode; -import net.mograsim.logic.ui.model.components.mi.nandbased.am2901.GUIAm2901ALUInclSourceDecodeInclFunctionDecode; -import net.mograsim.logic.ui.model.components.mi.nandbased.am2901.GUIAm2901ALUOneBit; -import net.mograsim.logic.ui.model.components.mi.nandbased.am2901.GUIAm2901DestDecode; -import net.mograsim.logic.ui.model.components.mi.nandbased.am2901.GUIAm2901QReg; -import net.mograsim.logic.ui.model.components.mi.nandbased.am2901.GUIAm2901SourceDecode; -import net.mograsim.logic.ui.model.components.submodels.SubmodelComponent; -import net.mograsim.logic.ui.serializing.SubmodelComponentParams; -import net.mograsim.logic.ui.util.JsonHandler; - -public class ComponenetSerializer -{ - public static void main(String[] args) throws IOException - { - // we know we only use components where this works - Function getIdentifier = c -> c.getClass().getSimpleName(); - - ViewModelModifiable model = new ViewModelModifiable(); - SubmodelComponent[] components = { new GUIAm2901(model), new GUIAm2901ALUFuncDecode(model), new GUIAm2901ALUInclDecode(model), - new GUIAm2901ALUInclSourceDecodeInclFunctionDecode(model), new GUIAm2901ALUOneBit(model), new GUIAm2901DestDecode(model), - new GUIAm2901QReg(model), new GUIAm2901SourceDecode(model), new GUI_rsLatch(model), new GUIand(model), new GUIand41(model), - new GUIandor414(model), new GUIdemux2(model), new GUIdff(model), new GUIdlatch(model), new GUIdlatch4(model), - new GUIfulladder(model), new GUIhalfadder(model), new GUImux1(model), new GUImux1_4(model), new GUInand3(model), - new GUInot4(model), new GUIor4(model), new GUIor_4(model), new GUIram2(model), new GUIram4(model), new GUIsel2_4(model), - new GUIsel3_4(model), new GUIxor(model) }; - - for (SubmodelComponent comp : components) - { - SubmodelComponentParams params = comp.calculateParams(getIdentifier); - JsonHandler.writeJson(params, "components/" - + comp.getClass().getName().substring("net.mograsim.logic.ui.model.components.mi.nandbased.".length()).replace('.', '/') - + ".json"); - } - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/examples/JsonExample.java b/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/examples/JsonExample.java deleted file mode 100644 index c0ebad60..00000000 --- a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/examples/JsonExample.java +++ /dev/null @@ -1,168 +0,0 @@ -package net.mograsim.logic.ui.examples; - -import java.io.IOException; - -import com.google.gson.JsonNull; - -import net.mograsim.logic.ui.SimpleLogicUIStandalone; -import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.logic.ui.model.components.atomic.GUIBitDisplay; -import net.mograsim.logic.ui.model.components.atomic.GUIManualSwitch; -import net.mograsim.logic.ui.model.components.mi.nandbased.GUI_rsLatch; -import net.mograsim.logic.ui.model.components.mi.nandbased.GUIfulladder; -import net.mograsim.logic.ui.model.components.mi.nandbased.GUIhalfadder; -import net.mograsim.logic.ui.model.components.submodels.SimpleRectangularSubmodelComponent; -import net.mograsim.logic.ui.model.components.submodels.SubmodelComponent; -import net.mograsim.logic.ui.model.wires.GUIWire; -import net.mograsim.logic.ui.serializing.IndirectGUIComponentCreator; -import net.mograsim.logic.ui.serializing.SubmodelComponentDeserializer; -import net.mograsim.logic.ui.serializing.SubmodelComponentParams; -import net.mograsim.logic.ui.util.JsonHandler; - -public class JsonExample -{ - public static void main(String[] args) - { - SimpleLogicUIStandalone.executeVisualisation(JsonExample::basicTest); - } - - public static void mappingTest(ViewModelModifiable model) - { - IndirectGUIComponentCreator.createComponent(model, "Am2901", JsonNull.INSTANCE); - } - - private static class TestComponent extends SimpleRectangularSubmodelComponent - { - protected TestComponent(ViewModelModifiable model) - { - super(model, 1, "Test"); - setSubmodelScale(.4); - setInputPins("Input pin #0"); - SubmodelComponentDeserializer.create(submodelModifiable, "HalfAdder.json"); - } - } - - @SuppressWarnings("unused") // GUIWires being created - private static void basicTest(ViewModelModifiable viewModel) - { - GUI_rsLatch comp = new GUI_rsLatch(viewModel); - comp.moveTo(30, 0); - SubmodelComponentParams params = comp.calculateParams(); - String jsonString = JsonHandler.toJson(params); - System.out.println(jsonString); - SubmodelComponentParams paramsD = JsonHandler.fromJson(jsonString, SubmodelComponentParams.class); - SubmodelComponent componentD = SubmodelComponentDeserializer.create(viewModel, paramsD); - componentD.moveTo(30, 50); - double h = 0; - for (String s : comp.getInputPinNames()) - { - GUIManualSwitch sw = new GUIManualSwitch(viewModel); - sw.moveTo(0, h); - new GUIWire(viewModel, sw.getOutputPin(), comp.getPin(s)); - sw = new GUIManualSwitch(viewModel); - sw.moveTo(0, h + 50); - new GUIWire(viewModel, sw.getOutputPin(), componentD.getPin(s)); - h += 20; - } - h = 0; - for (String s : comp.getOutputPinNames()) - { - GUIBitDisplay bd = new GUIBitDisplay(viewModel); - bd.moveTo(80, h); - new GUIWire(viewModel, bd.getInputPin(), comp.getPin(s)); - bd = new GUIBitDisplay(viewModel); - bd.moveTo(80, h + 50); - new GUIWire(viewModel, bd.getInputPin(), componentD.getPin(s)); - h += 20; - } - } - - // Execute only after HalfAdder.json has been created - public static void refJsonFromJsonTest(ViewModelModifiable model) - { - TestComponent t = new TestComponent(model); - t.calculateParams().writeJson("Test.json"); - SubmodelComponent c = SubmodelComponentDeserializer.create(model, "Test.json"); - c.moveTo(0, 50); - } - - public static void createHalfAdderExample(ViewModelModifiable model) - { - GUIhalfadder tmp = new GUIhalfadder(model); - tmp.moveTo(1000, 50); - SubmodelComponentParams p = tmp.calculateParams(); - try - { - p.writeJson("HalfAdder.json"); - p = SubmodelComponentParams.readJson("HalfAdder.json"); - } - catch (IOException e) - { - e.printStackTrace(); - } - - SubmodelComponentDeserializer.create(model, p); - } - - @SuppressWarnings("unused") // for GUIWires being created - public static void createFromJsonExample(ViewModelModifiable model) - { - SimpleRectangularSubmodelComponent tmp = new GUIfulladder(model); - SubmodelComponentParams pC = tmp.calculateParams(); - tmp.moveTo(1000, 100); - try - { - pC.writeJson("FullAdder.json"); - pC = SubmodelComponentParams.readJson("FullAdder.json"); - } - catch (IOException e) - { - e.printStackTrace(); - } - - SimpleRectangularSubmodelComponent adder = (SimpleRectangularSubmodelComponent) SubmodelComponentDeserializer.create(model, - "FullAdder.json"); - - GUIManualSwitch swA = new GUIManualSwitch(model); - swA.moveTo(0, 0); - GUIManualSwitch swB = new GUIManualSwitch(model); - swB.moveTo(0, 25); - GUIManualSwitch swC = new GUIManualSwitch(model); - swC.moveTo(0, 50); - - adder.moveTo(30, 10); - GUIBitDisplay bdY = new GUIBitDisplay(model); - bdY.moveTo(90, 12.5); - GUIBitDisplay bdZ = new GUIBitDisplay(model); - bdZ.moveTo(90, 30); - - new GUIWire(model, swA.getOutputPin(), adder.getPin("A")); - new GUIWire(model, swB.getOutputPin(), adder.getPin("B")); - new GUIWire(model, swC.getOutputPin(), adder.getPin("C")); - - new GUIWire(model, adder.getPin("Y"), bdY.getInputPin()); - new GUIWire(model, adder.getPin("Z"), bdZ.getInputPin()); - - SubmodelComponent adder2 = SubmodelComponentDeserializer.create(model, pC); - - swA = new GUIManualSwitch(model); - swA.moveTo(0, 70); - swB = new GUIManualSwitch(model); - swB.moveTo(0, 85); - swC = new GUIManualSwitch(model); - swC.moveTo(0, 100); - - adder2.moveTo(30, 80); - bdY = new GUIBitDisplay(model); - bdY.moveTo(90, 70); - bdZ = new GUIBitDisplay(model); - bdZ.moveTo(90, 85); - - new GUIWire(model, swA.getOutputPin(), adder2.getPin("A")); - new GUIWire(model, swB.getOutputPin(), adder2.getPin("B")); - new GUIWire(model, swC.getOutputPin(), adder2.getPin("C")); - - new GUIWire(model, adder2.getPin("Y"), bdY.getInputPin()); - new GUIWire(model, adder2.getPin("Z"), bdZ.getInputPin()); - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/examples/SubmodelComponentTestbench.java b/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/examples/SubmodelComponentTestbench.java deleted file mode 100644 index 5f10c729..00000000 --- a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/examples/SubmodelComponentTestbench.java +++ /dev/null @@ -1,50 +0,0 @@ -package net.mograsim.logic.ui.examples; - -import java.util.ArrayList; -import java.util.List; - -import net.mograsim.logic.ui.SimpleLogicUIStandalone; -import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.logic.ui.model.components.atomic.GUIBitDisplay; -import net.mograsim.logic.ui.model.components.atomic.GUIManualSwitch; -import net.mograsim.logic.ui.model.components.submodels.SubmodelComponent; -import net.mograsim.logic.ui.model.wires.GUIWire; -import net.mograsim.logic.ui.model.wires.Pin; -import net.mograsim.logic.ui.serializing.SubmodelComponentDeserializer; - -public class SubmodelComponentTestbench -{ - public static void main(String[] args) - { - SimpleLogicUIStandalone.executeVisualisation(SubmodelComponentTestbench::createTestbench); - } - - @SuppressWarnings("unused") // for GUIWires being created - public static void createTestbench(ViewModelModifiable model) - { - SubmodelComponent comp = SubmodelComponentDeserializer.create(model, "components/am2901/GUIAm2901.json"); - - // guess which pins are outputs and which are inputs - List inputPinNames = new ArrayList<>(); - List outputPinNames = new ArrayList<>(); - for (Pin p : comp.getPins().values()) - if (p.getRelX() == 0) - inputPinNames.add(p.name); - else - outputPinNames.add(p.name); - - comp.moveTo(100, 0); - for (int i = 0; i < inputPinNames.size(); i++) - { - GUIManualSwitch sw = new GUIManualSwitch(model); - sw.moveTo(0, 20 * i); - new GUIWire(model, comp.getPin(inputPinNames.get(i)), sw.getOutputPin()); - } - for (int i = 0; i < outputPinNames.size(); i++) - { - GUIBitDisplay bd = new GUIBitDisplay(model); - bd.moveTo(200, 20 * i); - new GUIWire(model, comp.getPin(outputPinNames.get(i)), bd.getInputPin()); - } - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUI_rsLatch.java b/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUI_rsLatch.java deleted file mode 100644 index b190ffa8..00000000 --- a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUI_rsLatch.java +++ /dev/null @@ -1,104 +0,0 @@ -package net.mograsim.logic.ui.model.components.mi.nandbased; - -import net.haspamelodica.swt.helper.swtobjectwrappers.Point; -import net.mograsim.logic.core.types.Bit; -import net.mograsim.logic.core.types.BitVector; -import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.logic.ui.model.components.atomic.GUINandGate; -import net.mograsim.logic.ui.model.components.submodels.SimpleRectangularSubmodelComponent; -import net.mograsim.logic.ui.model.wires.GUIWire; -import net.mograsim.logic.ui.model.wires.Pin; -import net.mograsim.logic.ui.model.wires.WireCrossPoint; -import net.mograsim.logic.ui.serializing.IndirectGUIComponentCreator; - -public class GUI_rsLatch extends SimpleRectangularSubmodelComponent -{ - private GUIWire wireQ, wire_Q; - - public GUI_rsLatch(ViewModelModifiable model) - { - super(model, 1, "_rsLatch"); - setSubmodelScale(.4); - setInputPins("_S", "_R"); - setOutputPins("Q", "_Q"); - initSubmodelComponents(); - } - - @SuppressWarnings("unused") // for GUIWires being created - private void initSubmodelComponents() - { - Pin _S = getSubmodelPin("_S"); - Pin _R = getSubmodelPin("_R"); - Pin Q = getSubmodelPin("Q"); - Pin _Q = getSubmodelPin("_Q"); - - GUINandGate nand1 = new GUINandGate(submodelModifiable, 1); - GUINandGate nand2 = new GUINandGate(submodelModifiable, 1); - - WireCrossPoint cp1 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cp2 = new WireCrossPoint(submodelModifiable, 1); - - nand1.moveTo(10, 7.5); - nand2.moveTo(40, 12.5); - cp1.moveCenterTo(35, 17.5); - cp2.moveCenterTo(65, 37.5); - - new GUIWire(submodelModifiable, _S, nand1.getPin("A"), new Point[0]); - new GUIWire(submodelModifiable, _R, nand2.getPin("B"), new Point(35, 37.5), new Point(35, 27.5)); - new GUIWire(submodelModifiable, nand1.getPin("Y"), cp1, new Point[0]); - new GUIWire(submodelModifiable, nand2.getPin("Y"), cp2, new Point(65, 22.5)); - new GUIWire(submodelModifiable, cp1, nand2.getPin("A"), new Point[0]); - new GUIWire(submodelModifiable, cp2, nand1.getPin("B"), new Point(65, 42.5), new Point(5, 42.5), new Point(5, 22.5)); - wireQ = new GUIWire(submodelModifiable, cp1, Q, new Point(35, 17.5), new Point(35, 7.5), new Point(65, 7.5), new Point(65, 12.5)); - wire_Q = new GUIWire(submodelModifiable, cp2, _Q, new Point[0]); - - addAtomicHighLevelStateID("q"); - } - - @Override - public void setAtomicHighLevelState(String stateID, Object newState) - { - switch (stateID) - { - case "q": - if (wireQ != null) - { - // TODO force this to happen without any Timeline updates in the meantime. - // Maybe make it a requirement of setHighLevelState that the Timeline is "halted" during a call? - Bit newStateCasted = (Bit) newState; - BitVector newStateVector = BitVector.of(newStateCasted); - if (wireQ.hasLogicModelBinding()) - wireQ.forceWireValues(newStateVector); - // We set both wires because then both outputs go to their correct state at the same time, and to avoid problems when not - // both - // inputs are 1 - if (wire_Q.hasLogicModelBinding()) - wire_Q.forceWireValues(newStateVector.not()); - } - break; - default: - // should not happen because we tell SubmodelComponent to only allow these state IDs. - throw new IllegalStateException("Illegal atomic state ID: " + stateID); - } - } - - @Override - public Object getAtomicHighLevelState(String stateID) - { - switch (stateID) - { - case "q": - if (wireQ.hasLogicModelBinding()) - return wireQ.getWireValues().getBit(0); - return null; - default: - // should not happen because we tell SubmodelComponent to only allow these state IDs. - throw new IllegalStateException("Illegal atomic state ID: " + stateID); - } - } - - static - { - IndirectGUIComponentCreator.setComponentProvider(GUI_rsLatch.class.getCanonicalName(), (m, p) -> new GUI_rsLatch(m)); - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIand.java b/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIand.java deleted file mode 100644 index b21474ef..00000000 --- a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIand.java +++ /dev/null @@ -1,51 +0,0 @@ -package net.mograsim.logic.ui.model.components.mi.nandbased; - -import net.haspamelodica.swt.helper.swtobjectwrappers.Point; -import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.logic.ui.model.components.atomic.GUINandGate; -import net.mograsim.logic.ui.model.components.submodels.SimpleRectangularSubmodelComponent; -import net.mograsim.logic.ui.model.wires.GUIWire; -import net.mograsim.logic.ui.model.wires.Pin; -import net.mograsim.logic.ui.model.wires.WireCrossPoint; -import net.mograsim.logic.ui.serializing.IndirectGUIComponentCreator; - -public class GUIand extends SimpleRectangularSubmodelComponent -{ - public GUIand(ViewModelModifiable model) - { - super(model, 1, "GUIand"); - setSubmodelScale(.4); - setInputPins("A", "B"); - setOutputPins("Y"); - initSubmodelComponents(); - } - - @SuppressWarnings("unused") // for GUIWires being created - private void initSubmodelComponents() - { - Pin A = getSubmodelPin("A"); - Pin B = getSubmodelPin("B"); - Pin Y = getSubmodelPin("Y"); - - GUINandGate nand = new GUINandGate(submodelModifiable, 1); - GUINandGate not = new GUINandGate(submodelModifiable, 1); - - WireCrossPoint cp1 = new WireCrossPoint(submodelModifiable, 1); - - nand.moveTo(20, 15); - not.moveTo(50, 15); - cp1.moveCenterTo(45, 25); - - new GUIWire(submodelModifiable, A, nand.getPin("A")); - new GUIWire(submodelModifiable, B, nand.getPin("B")); - new GUIWire(submodelModifiable, nand.getPin("Y"), cp1, new Point[0]); - new GUIWire(submodelModifiable, cp1, not.getPin("A"), new Point(45, 20)); - new GUIWire(submodelModifiable, cp1, not.getPin("B"), new Point(45, 30)); - new GUIWire(submodelModifiable, not.getPin("Y"), Y); - } - - static - { - IndirectGUIComponentCreator.setComponentProvider(GUIand.class.getCanonicalName(), (m, p) -> new GUIand(m)); - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIand41.java b/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIand41.java deleted file mode 100644 index fc1a5bd7..00000000 --- a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIand41.java +++ /dev/null @@ -1,73 +0,0 @@ -package net.mograsim.logic.ui.model.components.mi.nandbased; - -import net.haspamelodica.swt.helper.swtobjectwrappers.Point; -import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.logic.ui.model.components.submodels.SimpleRectangularSubmodelComponent; -import net.mograsim.logic.ui.model.wires.GUIWire; -import net.mograsim.logic.ui.model.wires.Pin; -import net.mograsim.logic.ui.model.wires.WireCrossPoint; -import net.mograsim.logic.ui.serializing.IndirectGUIComponentCreator; - -public class GUIand41 extends SimpleRectangularSubmodelComponent -{ - public GUIand41(ViewModelModifiable model) - { - super(model, 1, "GUIand41"); - setSubmodelScale(.4); - setInputPins("A1", "A2", "A3", "A4", "B"); - setOutputPins("Y1", "Y2", "Y3", "Y4"); - initSubmodelComponents(); - } - - @SuppressWarnings("unused") // for GUIWires being created - private void initSubmodelComponents() - { - Pin A1 = getSubmodelPin("A1"); - Pin A2 = getSubmodelPin("A2"); - Pin A3 = getSubmodelPin("A3"); - Pin A4 = getSubmodelPin("A4"); - Pin B = getSubmodelPin("B"); - Pin Y1 = getSubmodelPin("Y1"); - Pin Y2 = getSubmodelPin("Y2"); - Pin Y3 = getSubmodelPin("Y3"); - Pin Y4 = getSubmodelPin("Y4"); - - GUIand and1 = new GUIand(submodelModifiable); - GUIand and2 = new GUIand(submodelModifiable); - GUIand and3 = new GUIand(submodelModifiable); - GUIand and4 = new GUIand(submodelModifiable); - - WireCrossPoint cpB2 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpB3 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpB4 = new WireCrossPoint(submodelModifiable, 1); - - and1.moveTo(30, 7.5); - and2.moveTo(30, 32.5); - and3.moveTo(30, 57.5); - and4.moveTo(30, 82.5); - cpB2.moveCenterTo(25, 47.5); - cpB3.moveCenterTo(25, 72.5); - cpB4.moveCenterTo(25, 97.5); - - new GUIWire(submodelModifiable, A1, and1.getPin("A"), new Point[0]); - new GUIWire(submodelModifiable, A2, and2.getPin("A"), new Point[0]); - new GUIWire(submodelModifiable, A3, and3.getPin("A"), new Point[0]); - new GUIWire(submodelModifiable, A4, and4.getPin("A"), new Point[0]); - new GUIWire(submodelModifiable, B, cpB4, new Point(25, 112.5)); - new GUIWire(submodelModifiable, cpB4, and4.getPin("B"), new Point[0]); - new GUIWire(submodelModifiable, cpB4, cpB3, new Point[0]); - new GUIWire(submodelModifiable, cpB3, and3.getPin("B"), new Point[0]); - new GUIWire(submodelModifiable, cpB3, cpB2, new Point[0]); - new GUIWire(submodelModifiable, cpB2, and2.getPin("B"), new Point[0]); - new GUIWire(submodelModifiable, cpB2, and1.getPin("B"), new Point(25, 22.5)); - new GUIWire(submodelModifiable, and1.getPin("Y"), Y1, new Point[0]); - new GUIWire(submodelModifiable, and2.getPin("Y"), Y2, new Point[0]); - new GUIWire(submodelModifiable, and3.getPin("Y"), Y3, new Point[0]); - new GUIWire(submodelModifiable, and4.getPin("Y"), Y4, new Point[0]); - } - - static - { - IndirectGUIComponentCreator.setComponentProvider(GUIand41.class.getCanonicalName(), (m, p) -> new GUIand41(m)); - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIandor414.java b/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIandor414.java deleted file mode 100644 index c514d4ca..00000000 --- a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIandor414.java +++ /dev/null @@ -1,71 +0,0 @@ -package net.mograsim.logic.ui.model.components.mi.nandbased; - -import net.haspamelodica.swt.helper.swtobjectwrappers.Point; -import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.logic.ui.model.components.submodels.SimpleRectangularSubmodelComponent; -import net.mograsim.logic.ui.model.wires.GUIWire; -import net.mograsim.logic.ui.model.wires.Pin; -import net.mograsim.logic.ui.serializing.IndirectGUIComponentCreator; - -public class GUIandor414 extends SimpleRectangularSubmodelComponent -{ - public GUIandor414(ViewModelModifiable model) - { - super(model, 1, "GUIandor414"); - setSubmodelScale(.4); - setInputPins("C1", "C2", "C3", "C4", "A1", "A2", "A3", "A4", "B"); - setOutputPins("Y1", "Y2", "Y3", "Y4"); - initSubmodelComponents(); - } - - @SuppressWarnings("unused") // for GUIWires being created - private void initSubmodelComponents() - { - Pin C1 = getSubmodelPin("C1"); - Pin C2 = getSubmodelPin("C2"); - Pin C3 = getSubmodelPin("C3"); - Pin C4 = getSubmodelPin("C4"); - Pin A1 = getSubmodelPin("A1"); - Pin A2 = getSubmodelPin("A2"); - Pin A3 = getSubmodelPin("A3"); - Pin A4 = getSubmodelPin("A4"); - Pin B = getSubmodelPin("B"); - Pin Y1 = getSubmodelPin("Y1"); - Pin Y2 = getSubmodelPin("Y2"); - Pin Y3 = getSubmodelPin("Y3"); - Pin Y4 = getSubmodelPin("Y4"); - - GUIand41 and = new GUIand41(submodelModifiable); - GUIor_4 or = new GUIor_4(submodelModifiable); - - and.moveTo(15, 137.5); - or.moveTo(35, 37.5); - - new GUIWire(submodelModifiable, A1, and.getPin("A1"), new Point(10, 112.5), new Point(10, 142.5)); - new GUIWire(submodelModifiable, A2, and.getPin("A2"), new Point(5, 137.5), new Point(5, 152.5)); - new GUIWire(submodelModifiable, A3, and.getPin("A3"), new Point[0]); - new GUIWire(submodelModifiable, A4, and.getPin("A4"), new Point(5, 187.5), new Point(5, 172.5)); - new GUIWire(submodelModifiable, B, and.getPin("B"), new Point(10, 212.5), new Point(10, 182.5)); - new GUIWire(submodelModifiable, C1, or.getPin("A1"), new Point(10, 12.5), new Point(10, 42.5)); - new GUIWire(submodelModifiable, C2, or.getPin("A2"), new Point(5, 37.5), new Point(5, 52.5)); - new GUIWire(submodelModifiable, C3, or.getPin("A3"), new Point[0]); - new GUIWire(submodelModifiable, C4, or.getPin("A4"), new Point(5, 87.5), new Point(5, 72.5)); - new GUIWire(submodelModifiable, and.getPin("Y1"), or.getPin("B1"), new Point(70, 142.5), new Point(70, 120), new Point(30, 120), - new Point(30, 82.5)); - new GUIWire(submodelModifiable, and.getPin("Y2"), or.getPin("B2"), new Point(65, 152.5), new Point(65, 125), new Point(25, 125), - new Point(25, 92.5)); - new GUIWire(submodelModifiable, and.getPin("Y3"), or.getPin("B3"), new Point(60, 162.5), new Point(60, 130), new Point(20, 130), - new Point(20, 102.5)); - new GUIWire(submodelModifiable, and.getPin("Y4"), or.getPin("B4"), new Point(55, 172.5), new Point(55, 135), new Point(15, 135), - new Point(15, 112.5)); - new GUIWire(submodelModifiable, or.getPin("Y1"), Y1, new Point(75, 42.5), new Point(75, 12.5)); - new GUIWire(submodelModifiable, or.getPin("Y2"), Y2, new Point(80, 52.5), new Point(80, 37.5)); - new GUIWire(submodelModifiable, or.getPin("Y3"), Y3, new Point[0]); - new GUIWire(submodelModifiable, or.getPin("Y4"), Y4, new Point(80, 72.5), new Point(80, 87.5)); - } - - static - { - IndirectGUIComponentCreator.setComponentProvider(GUIandor414.class.getCanonicalName(), (m, p) -> new GUIandor414(m)); - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIdemux2.java b/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIdemux2.java deleted file mode 100644 index 1f1940b1..00000000 --- a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIdemux2.java +++ /dev/null @@ -1,94 +0,0 @@ -package net.mograsim.logic.ui.model.components.mi.nandbased; - -import net.haspamelodica.swt.helper.swtobjectwrappers.Point; -import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.logic.ui.model.components.atomic.GUINandGate; -import net.mograsim.logic.ui.model.components.submodels.SimpleRectangularSubmodelComponent; -import net.mograsim.logic.ui.model.wires.GUIWire; -import net.mograsim.logic.ui.model.wires.Pin; -import net.mograsim.logic.ui.model.wires.WireCrossPoint; -import net.mograsim.logic.ui.serializing.IndirectGUIComponentCreator; - -public class GUIdemux2 extends SimpleRectangularSubmodelComponent -{ - public GUIdemux2(ViewModelModifiable model) - { - super(model, 1, "GUIdemux2"); - setSubmodelScale(.4); - setInputPins("S0", "S1"); - setOutputPins("Y00", "Y01", "Y10", "Y11"); - initSubmodelComponents(); - } - - @SuppressWarnings("unused") // for GUIWires being created - private void initSubmodelComponents() - { - Pin S0 = getSubmodelPin("S0"); - Pin S1 = getSubmodelPin("S1"); - Pin Y00 = getSubmodelPin("Y00"); - Pin Y01 = getSubmodelPin("Y01"); - Pin Y10 = getSubmodelPin("Y10"); - Pin Y11 = getSubmodelPin("Y11"); - - GUINandGate notS0 = new GUINandGate(submodelModifiable, 1); - GUINandGate notS1 = new GUINandGate(submodelModifiable, 1); - GUIand andY00 = new GUIand(submodelModifiable); - GUIand andY01 = new GUIand(submodelModifiable); - GUIand andY10 = new GUIand(submodelModifiable); - GUIand andY11 = new GUIand(submodelModifiable); - - WireCrossPoint cpS01 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpS02 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpS03 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpS11 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpS12 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpS13 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpNotS0 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpNotS1 = new WireCrossPoint(submodelModifiable, 1); - - notS0.moveTo(10, 2.5); - notS1.moveTo(10, 27.5); - andY00.moveTo(40, 2.5); - andY01.moveTo(40, 27.5); - andY10.moveTo(40, 52.5); - andY11.moveTo(40, 77.5); - cpS01.moveCenterTo(7.5, 12.5); - cpS11.moveCenterTo(5, 37.5); - cpS02.moveCenterTo(7.5, 17.5); - cpS12.moveCenterTo(5, 42.5); - cpS03.moveCenterTo(37.5, 62.5); - cpS13.moveCenterTo(32.5, 67.5); - cpNotS0.moveCenterTo(32.5, 12.5); - cpNotS1.moveCenterTo(35, 37.5); - - new GUIWire(submodelModifiable, S0, cpS01, new Point[0]); - new GUIWire(submodelModifiable, S1, cpS11, new Point[0]); - new GUIWire(submodelModifiable, cpS01, notS0.getPin("A"), new Point(7.5, 7.5)); - new GUIWire(submodelModifiable, cpS11, notS1.getPin("A"), new Point(5, 32.5)); - new GUIWire(submodelModifiable, cpS01, cpS02, new Point[0]); - new GUIWire(submodelModifiable, cpS11, cpS12, new Point[0]); - new GUIWire(submodelModifiable, cpS02, notS0.getPin("B"), new Point[0]); - new GUIWire(submodelModifiable, cpS12, notS1.getPin("B"), new Point[0]); - new GUIWire(submodelModifiable, cpS02, cpS03, new Point(7.5, 62.5)); - new GUIWire(submodelModifiable, cpS12, cpS13, new Point(5, 67.5), new Point(32.5, 67.5)); - new GUIWire(submodelModifiable, notS0.getPin("Y"), cpNotS0, new Point[0]); - new GUIWire(submodelModifiable, notS1.getPin("Y"), cpNotS1, new Point[0]); - new GUIWire(submodelModifiable, cpNotS0, andY00.getPin("A"), new Point(32.5, 7.5)); - new GUIWire(submodelModifiable, cpNotS1, andY00.getPin("B"), new Point(35, 17.5)); - new GUIWire(submodelModifiable, cpS03, andY01.getPin("A"), new Point(37.5, 32.5)); - new GUIWire(submodelModifiable, cpNotS1, andY01.getPin("B"), new Point(35, 42.5)); - new GUIWire(submodelModifiable, cpNotS0, andY10.getPin("A"), new Point(32.5, 57.5)); - new GUIWire(submodelModifiable, cpS13, andY10.getPin("B"), new Point[0]); - new GUIWire(submodelModifiable, cpS03, andY11.getPin("A"), new Point(37.5, 82.5)); - new GUIWire(submodelModifiable, cpS13, andY11.getPin("B"), new Point(32.5, 92.5)); - new GUIWire(submodelModifiable, andY00.getPin("Y"), Y00); - new GUIWire(submodelModifiable, andY01.getPin("Y"), Y01); - new GUIWire(submodelModifiable, andY10.getPin("Y"), Y10); - new GUIWire(submodelModifiable, andY11.getPin("Y"), Y11); - } - - static - { - IndirectGUIComponentCreator.setComponentProvider(GUIdemux2.class.getCanonicalName(), (m, p) -> new GUIdemux2(m)); - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIdff.java b/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIdff.java deleted file mode 100644 index 440f4d1d..00000000 --- a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIdff.java +++ /dev/null @@ -1,102 +0,0 @@ -package net.mograsim.logic.ui.model.components.mi.nandbased; - -import net.haspamelodica.swt.helper.swtobjectwrappers.Point; -import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.logic.ui.model.components.atomic.GUINandGate; -import net.mograsim.logic.ui.model.components.submodels.SimpleRectangularSubmodelComponent; -import net.mograsim.logic.ui.model.wires.GUIWire; -import net.mograsim.logic.ui.model.wires.Pin; -import net.mograsim.logic.ui.model.wires.WireCrossPoint; -import net.mograsim.logic.ui.serializing.IndirectGUIComponentCreator; - -public class GUIdff extends SimpleRectangularSubmodelComponent -{ - private GUI_rsLatch _rsLatch; - - public GUIdff(ViewModelModifiable model) - { - super(model, 1, "GUIdff"); - setSubmodelScale(.2); - setInputPins("C", "D"); - setOutputPins("Q", "_Q"); - initSubmodelComponents(); - } - - @SuppressWarnings("unused") // for GUIWires being created - private void initSubmodelComponents() - { - Pin C = getSubmodelPin("C"); - Pin D = getSubmodelPin("D"); - Pin Q = getSubmodelPin("Q"); - Pin _Q = getSubmodelPin("_Q"); - - GUI_rsLatch _rsLatch1 = new GUI_rsLatch(submodelModifiable); - GUInand3 nand3 = new GUInand3(submodelModifiable); - GUINandGate nand2 = new GUINandGate(submodelModifiable, 1); - GUI_rsLatch _rsLatch2 = this._rsLatch = new GUI_rsLatch(submodelModifiable); - - WireCrossPoint cp1 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cp2 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cp3 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cp4 = new WireCrossPoint(submodelModifiable, 1); - - _rsLatch1.moveTo(40, 10); - nand3.moveTo(40, 40); - nand2.moveTo(120, 60); - _rsLatch2.moveTo(120, 30); - cp1.moveCenterTo(10, 25); - cp2.moveCenterTo(20, 65); - cp3.moveCenterTo(100, 35); - cp4.moveCenterTo(100, 45); - - new GUIWire(submodelModifiable, C, cp1, new Point[0]); - new GUIWire(submodelModifiable, cp1, _rsLatch1.getPin("_R"), new Point[0]); - new GUIWire(submodelModifiable, cp1, nand3.getPin("B"), new Point(10, 55)); - new GUIWire(submodelModifiable, D, nand2.getPin("B"), new Point[0]); - new GUIWire(submodelModifiable, nand2.getPin("Y"), cp2, new Point(145, 70), new Point(145, 85), new Point(20, 85)); - new GUIWire(submodelModifiable, cp2, _rsLatch1.getPin("_S"), new Point(20, 15)); - new GUIWire(submodelModifiable, cp2, nand3.getPin("C"), new Point[0]); - new GUIWire(submodelModifiable, _rsLatch1.getPin("_Q"), cp3, new Point(100, 25)); - new GUIWire(submodelModifiable, cp3, nand3.getPin("A"), new Point(30, 35), new Point(30, 45)); - new GUIWire(submodelModifiable, cp3, _rsLatch2.getPin("_S"), new Point[0]); - new GUIWire(submodelModifiable, nand3.getPin("Y"), cp4, new Point[0]); - new GUIWire(submodelModifiable, cp4, _rsLatch2.getPin("_R"), new Point[0]); - new GUIWire(submodelModifiable, cp4, nand2.getPin("A"), new Point(100, 65)); - new GUIWire(submodelModifiable, _rsLatch2.getPin("Q"), Q); - new GUIWire(submodelModifiable, _rsLatch2.getPin("_Q"), _Q); - - addAtomicHighLevelStateID("q"); - } - - @Override - public void setAtomicHighLevelState(String stateID, Object newState) - { - switch (stateID) - { - case "q": - _rsLatch.setHighLevelState("q", newState); - break; - default: - // should not happen because we tell SubmodelComponent to only allow these state IDs. - throw new IllegalStateException("Illegal atomic state ID: " + stateID); - } - } - - @Override - public Object getAtomicHighLevelState(String stateID) - { - switch (stateID) - { - case "q": - return _rsLatch.getHighLevelState("q"); - default: - // should not happen because we tell SubmodelComponent to only allow these state IDs. - throw new IllegalStateException("Illegal atomic state ID: " + stateID); - } - } - - static - { - IndirectGUIComponentCreator.setComponentProvider(GUIdff.class.getCanonicalName(), (m, p) -> new GUIdff(m)); - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIdlatch.java b/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIdlatch.java deleted file mode 100644 index ff158923..00000000 --- a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIdlatch.java +++ /dev/null @@ -1,91 +0,0 @@ -package net.mograsim.logic.ui.model.components.mi.nandbased; - -import net.haspamelodica.swt.helper.swtobjectwrappers.Point; -import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.logic.ui.model.components.atomic.GUINandGate; -import net.mograsim.logic.ui.model.components.submodels.SimpleRectangularSubmodelComponent; -import net.mograsim.logic.ui.model.wires.GUIWire; -import net.mograsim.logic.ui.model.wires.Pin; -import net.mograsim.logic.ui.model.wires.WireCrossPoint; -import net.mograsim.logic.ui.serializing.IndirectGUIComponentCreator; - -public class GUIdlatch extends SimpleRectangularSubmodelComponent -{ - private GUI_rsLatch _rsLatch; - - public GUIdlatch(ViewModelModifiable model) - { - super(model, 1, "GUIdlatch"); - setSubmodelScale(.4); - setInputPins("D", "E"); - setOutputPins("Q", "_Q"); - initSubmodelComponents(); - } - - @SuppressWarnings("unused") // for GUIWires being created - private void initSubmodelComponents() - { - Pin D = getSubmodelPin("D"); - Pin E = getSubmodelPin("E"); - Pin Q = getSubmodelPin("Q"); - Pin _Q = getSubmodelPin("_Q"); - - GUINandGate nand1 = new GUINandGate(submodelModifiable, 1); - GUINandGate nand2 = new GUINandGate(submodelModifiable, 1); - _rsLatch = new GUI_rsLatch(submodelModifiable); - - WireCrossPoint cp1 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cp2 = new WireCrossPoint(submodelModifiable, 1); - - nand1.moveTo(10, 2.5); - nand2.moveTo(15, 27.5); - _rsLatch.moveTo(45, 7.5); - cp1.moveCenterTo(5, 37.5); - cp2.moveCenterTo(35, 12.5); - - new GUIWire(submodelModifiable, D, nand1.getPin("A")); - new GUIWire(submodelModifiable, E, cp1, new Point[0]); - new GUIWire(submodelModifiable, cp1, nand1.getPin("B"), new Point(5, 17.5)); - new GUIWire(submodelModifiable, cp1, nand2.getPin("B"), new Point(5, 42.5)); - new GUIWire(submodelModifiable, nand1.getPin("Y"), cp2, new Point[0]); - new GUIWire(submodelModifiable, cp2, nand2.getPin("A"), new Point(35, 25), new Point(10, 25), new Point(10, 32.5)); - new GUIWire(submodelModifiable, cp2, _rsLatch.getPin("_S"), new Point[0]); - new GUIWire(submodelModifiable, nand2.getPin("Y"), _rsLatch.getPin("_R"), new Point(40, 37.5), new Point(40, 22.5)); - new GUIWire(submodelModifiable, _rsLatch.getPin("Q"), Q, new Point[0]); - new GUIWire(submodelModifiable, _rsLatch.getPin("_Q"), _Q); - - addAtomicHighLevelStateID("q"); - } - - @Override - public void setAtomicHighLevelState(String stateID, Object newState) - { - switch (stateID) - { - case "q": - _rsLatch.setHighLevelState("q", newState); - break; - default: - // should not happen because we tell SubmodelComponent to only allow these state IDs. - throw new IllegalStateException("Illegal atomic state ID: " + stateID); - } - } - - @Override - public Object getAtomicHighLevelState(String stateID) - { - switch (stateID) - { - case "q": - return _rsLatch.getHighLevelState("q"); - default: - // should not happen because we tell SubmodelComponent to only allow these state IDs. - throw new IllegalStateException("Illegal atomic state ID: " + stateID); - } - } - - static - { - IndirectGUIComponentCreator.setComponentProvider(GUIdlatch.class.getCanonicalName(), (m, p) -> new GUIdlatch(m)); - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIdlatch4.java b/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIdlatch4.java deleted file mode 100644 index 10ee84db..00000000 --- a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIdlatch4.java +++ /dev/null @@ -1,141 +0,0 @@ -package net.mograsim.logic.ui.model.components.mi.nandbased; - -import net.haspamelodica.swt.helper.swtobjectwrappers.Point; -import net.mograsim.logic.core.types.Bit; -import net.mograsim.logic.core.types.BitVector; -import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.logic.ui.model.components.submodels.SimpleRectangularSubmodelComponent; -import net.mograsim.logic.ui.model.wires.GUIWire; -import net.mograsim.logic.ui.model.wires.Pin; -import net.mograsim.logic.ui.model.wires.WireCrossPoint; -import net.mograsim.logic.ui.serializing.IndirectGUIComponentCreator; - -public class GUIdlatch4 extends SimpleRectangularSubmodelComponent -{ - private GUIdlatch dlatch1; - private GUIdlatch dlatch2; - private GUIdlatch dlatch3; - private GUIdlatch dlatch4; - - public GUIdlatch4(ViewModelModifiable model) - { - super(model, 1, "GUIdlatch4"); - setSubmodelScale(.4); - setInputPins("D1", "D2", "D3", "D4", "C"); - setOutputPins("Q1", "Q2", "Q3", "Q4"); - initSubmodelComponents(); - } - - @SuppressWarnings("unused") // for GUIWires being created - private void initSubmodelComponents() - { - Pin D1 = getSubmodelPin("D1"); - Pin D2 = getSubmodelPin("D2"); - Pin D3 = getSubmodelPin("D3"); - Pin D4 = getSubmodelPin("D4"); - Pin C = getSubmodelPin("C"); - Pin Q1 = getSubmodelPin("Q1"); - Pin Q2 = getSubmodelPin("Q2"); - Pin Q3 = getSubmodelPin("Q3"); - Pin Q4 = getSubmodelPin("Q4"); - - dlatch1 = new GUIdlatch(submodelModifiable); - dlatch2 = new GUIdlatch(submodelModifiable); - dlatch3 = new GUIdlatch(submodelModifiable); - dlatch4 = new GUIdlatch(submodelModifiable); - - WireCrossPoint cp2 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cp3 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cp4 = new WireCrossPoint(submodelModifiable, 1); - - dlatch1.moveTo(30, 7.5); - dlatch2.moveTo(30, 32.5); - dlatch3.moveTo(30, 57.5); - dlatch4.moveTo(30, 82.5); - cp2.moveCenterTo(15, 47.5); - cp3.moveCenterTo(15, 72.5); - cp4.moveCenterTo(15, 97.5); - - new GUIWire(submodelModifiable, C, cp4, new Point(15, 112.5)); - new GUIWire(submodelModifiable, cp4, dlatch4.getPin("E"), new Point[0]); - new GUIWire(submodelModifiable, cp4, cp3, new Point[0]); - new GUIWire(submodelModifiable, cp3, dlatch3.getPin("E"), new Point[0]); - new GUIWire(submodelModifiable, cp3, cp2, new Point[0]); - new GUIWire(submodelModifiable, cp2, dlatch2.getPin("E"), new Point[0]); - new GUIWire(submodelModifiable, cp2, dlatch1.getPin("E"), new Point(15, 22.5)); - new GUIWire(submodelModifiable, D1, dlatch1.getPin("D"), new Point[0]); - new GUIWire(submodelModifiable, D2, dlatch2.getPin("D"), new Point[0]); - new GUIWire(submodelModifiable, D3, dlatch3.getPin("D"), new Point[0]); - new GUIWire(submodelModifiable, D4, dlatch4.getPin("D"), new Point[0]); - new GUIWire(submodelModifiable, dlatch1.getPin("Q"), Q1, new Point[0]); - new GUIWire(submodelModifiable, dlatch2.getPin("Q"), Q2, new Point[0]); - new GUIWire(submodelModifiable, dlatch3.getPin("Q"), Q3, new Point[0]); - new GUIWire(submodelModifiable, dlatch4.getPin("Q"), Q4, new Point[0]); - - addAtomicHighLevelStateID("q1"); - addAtomicHighLevelStateID("q2"); - addAtomicHighLevelStateID("q3"); - addAtomicHighLevelStateID("q4"); - addAtomicHighLevelStateID("q"); - } - - @Override - public void setAtomicHighLevelState(String stateID, Object newState) - { - switch (stateID) - { - case "q1": - dlatch1.setHighLevelState("q", newState); - break; - case "q2": - dlatch2.setHighLevelState("q", newState); - break; - case "q3": - dlatch3.setHighLevelState("q", newState); - break; - case "q4": - dlatch4.setHighLevelState("q", newState); - break; - case "q": - BitVector newStateCasted = (BitVector) newState; - setHighLevelState("q1", newStateCasted.getBit(0)); - setHighLevelState("q2", newStateCasted.getBit(1)); - setHighLevelState("q3", newStateCasted.getBit(2)); - setHighLevelState("q4", newStateCasted.getBit(3)); - break; - default: - // should not happen because we tell SubmodelComponent to only allow these state IDs. - throw new IllegalStateException("Illegal atomic state ID: " + stateID); - } - } - - @Override - public Object getAtomicHighLevelState(String stateID) - { - switch (stateID) - { - case "q1": - return dlatch1.getHighLevelState("q"); - case "q2": - return dlatch2.getHighLevelState("q"); - case "q3": - return dlatch3.getHighLevelState("q"); - case "q4": - return dlatch4.getHighLevelState("q"); - case "q": - Bit q1 = (Bit) getHighLevelState("q1"); - Bit q2 = (Bit) getHighLevelState("q2"); - Bit q3 = (Bit) getHighLevelState("q3"); - Bit q4 = (Bit) getHighLevelState("q4"); - return BitVector.of(q1, q2, q3, q4); - default: - // should not happen because we tell SubmodelComponent to only allow these state IDs. - throw new IllegalStateException("Illegal atomic state ID: " + stateID); - } - } - - static - { - IndirectGUIComponentCreator.setComponentProvider(GUIdlatch4.class.getCanonicalName(), (m, p) -> new GUIdlatch4(m)); - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIfulladder.java b/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIfulladder.java deleted file mode 100644 index 7ec77711..00000000 --- a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIfulladder.java +++ /dev/null @@ -1,54 +0,0 @@ -package net.mograsim.logic.ui.model.components.mi.nandbased; - -import net.haspamelodica.swt.helper.swtobjectwrappers.Point; -import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.logic.ui.model.components.atomic.GUINandGate; -import net.mograsim.logic.ui.model.components.submodels.SimpleRectangularSubmodelComponent; -import net.mograsim.logic.ui.model.wires.GUIWire; -import net.mograsim.logic.ui.model.wires.Pin; -import net.mograsim.logic.ui.serializing.IndirectGUIComponentCreator; - -public class GUIfulladder extends SimpleRectangularSubmodelComponent -{ - public GUIfulladder(ViewModelModifiable model) - { - super(model, 1, "GUIfulladder"); - setSubmodelScale(.4); - setInputPins("A", "B", "C"); - setOutputPins("Y", "Z"); - initSubmodelComponents(); - } - - @SuppressWarnings("unused") // for GUIWires being created - private void initSubmodelComponents() - { - Pin A = getSubmodelPin("A"); - Pin B = getSubmodelPin("B"); - Pin C = getSubmodelPin("C"); - Pin Y = getSubmodelPin("Y"); - Pin Z = getSubmodelPin("Z"); - - GUIhalfadder halfBC = new GUIhalfadder(submodelModifiable); - GUIhalfadder halfAY = new GUIhalfadder(submodelModifiable); - GUINandGate nandZ = new GUINandGate(submodelModifiable, 1); - - halfAY.moveTo(45, 7.5); - halfBC.moveTo(5, 40); - nandZ.moveTo(57.5, 40); - - new GUIWire(submodelModifiable, A, halfAY.getPin("A"), new Point[0]); - new GUIWire(submodelModifiable, B, halfBC.getPin("A")); - new GUIWire(submodelModifiable, C, halfBC.getPin("B")); - new GUIWire(submodelModifiable, halfBC.getPin("Y"), halfAY.getPin("B")); - new GUIWire(submodelModifiable, halfBC.getPin("_Z"), nandZ.getPin("B"), new Point[0]); - new GUIWire(submodelModifiable, halfAY.getPin("Y"), Y, new Point[0]); - new GUIWire(submodelModifiable, halfAY.getPin("_Z"), nandZ.getPin("A"), new Point(82.5, 22.5), new Point(82.5, 35), - new Point(52.5, 35), new Point(52.5, 45)); - new GUIWire(submodelModifiable, nandZ.getPin("Y"), Z); - } - - static - { - IndirectGUIComponentCreator.setComponentProvider(GUIfulladder.class.getCanonicalName(), (m, p) -> new GUIfulladder(m)); - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIhalfadder.java b/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIhalfadder.java deleted file mode 100644 index 7a80a959..00000000 --- a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIhalfadder.java +++ /dev/null @@ -1,67 +0,0 @@ -package net.mograsim.logic.ui.model.components.mi.nandbased; - -import net.haspamelodica.swt.helper.swtobjectwrappers.Point; -import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.logic.ui.model.components.atomic.GUINandGate; -import net.mograsim.logic.ui.model.components.submodels.SimpleRectangularSubmodelComponent; -import net.mograsim.logic.ui.model.wires.GUIWire; -import net.mograsim.logic.ui.model.wires.Pin; -import net.mograsim.logic.ui.model.wires.WireCrossPoint; -import net.mograsim.logic.ui.serializing.IndirectGUIComponentCreator; - -public class GUIhalfadder extends SimpleRectangularSubmodelComponent -{ - public GUIhalfadder(ViewModelModifiable model) - { - super(model, 1, "GUIhalfadder"); - setSubmodelScale(.4); - setInputPins("A", "B"); - setOutputPins("Y", "_Z"); - initSubmodelComponents(); - } - - @SuppressWarnings("unused") // for GUIWires being created - private void initSubmodelComponents() - { - Pin A = getSubmodelPin("A"); - Pin B = getSubmodelPin("B"); - Pin Y = getSubmodelPin("Y"); - Pin _Z = getSubmodelPin("_Z"); - - GUINandGate nand_Z = new GUINandGate(submodelModifiable, 1); - GUINandGate nandYA = new GUINandGate(submodelModifiable, 1); - GUINandGate nandYB = new GUINandGate(submodelModifiable, 1); - GUINandGate nandY = new GUINandGate(submodelModifiable, 1); - - WireCrossPoint cpA = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpB = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cp_Z = new WireCrossPoint(submodelModifiable, 1); - - nand_Z.moveTo(10, 15); - nandYA.moveTo(40, 2.5); - nandYB.moveTo(40, 27.5); - nandY.moveTo(65, 2.5); - cpA.moveCenterTo(5, 12.5); - cpB.moveCenterTo(5, 37.5); - cp_Z.moveCenterTo(35, 25); - - new GUIWire(submodelModifiable, A, cpA, new Point[0]); - new GUIWire(submodelModifiable, cpA, nandYA.getPin("A"), new Point(5, 7.5)); - new GUIWire(submodelModifiable, cpA, nand_Z.getPin("A"), new Point(5, 20)); - new GUIWire(submodelModifiable, B, cpB, new Point[0]); - new GUIWire(submodelModifiable, cpB, nandYB.getPin("B"), new Point(5, 42.5)); - new GUIWire(submodelModifiable, cpB, nand_Z.getPin("B"), new Point(5, 30)); - new GUIWire(submodelModifiable, nand_Z.getPin("Y"), cp_Z, new Point[0]); - new GUIWire(submodelModifiable, cp_Z, _Z, new Point(80, 25), new Point(80, 37.5)); - new GUIWire(submodelModifiable, cp_Z, nandYA.getPin("B"), new Point(35, 17.5)); - new GUIWire(submodelModifiable, cp_Z, nandYB.getPin("A"), new Point(35, 32.5)); - new GUIWire(submodelModifiable, nandYA.getPin("Y"), nandY.getPin("A"), new Point(62.5, 12.5), new Point(62.5, 7.5)); - new GUIWire(submodelModifiable, nandYB.getPin("Y"), nandY.getPin("B"), new Point(62.5, 37.5), new Point(62.5, 17.5)); - new GUIWire(submodelModifiable, nandY.getPin("Y"), Y, new Point[0]); - } - - static - { - IndirectGUIComponentCreator.setComponentProvider(GUIhalfadder.class.getCanonicalName(), (m, p) -> new GUIhalfadder(m)); - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUImux1.java b/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUImux1.java deleted file mode 100644 index 291f628e..00000000 --- a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUImux1.java +++ /dev/null @@ -1,63 +0,0 @@ -package net.mograsim.logic.ui.model.components.mi.nandbased; - -import net.haspamelodica.swt.helper.swtobjectwrappers.Point; -import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.logic.ui.model.components.atomic.GUINandGate; -import net.mograsim.logic.ui.model.components.submodels.SimpleRectangularSubmodelComponent; -import net.mograsim.logic.ui.model.wires.GUIWire; -import net.mograsim.logic.ui.model.wires.Pin; -import net.mograsim.logic.ui.model.wires.WireCrossPoint; -import net.mograsim.logic.ui.serializing.IndirectGUIComponentCreator; - -public class GUImux1 extends SimpleRectangularSubmodelComponent -{ - public GUImux1(ViewModelModifiable model) - { - super(model, 1, "GUImux1"); - setSubmodelScale(.4); - setInputPins("S0", "I0", "I1"); - setOutputPins("Y"); - initSubmodelComponents(); - } - - @SuppressWarnings("unused") - private void initSubmodelComponents() - { - Pin S0 = getSubmodelPin("S0"); - Pin I0 = getSubmodelPin("I0"); - Pin I1 = getSubmodelPin("I1"); - Pin Y = getSubmodelPin("Y"); - - GUINandGate nandS0 = new GUINandGate(submodelModifiable, 1); - GUINandGate nandI0 = new GUINandGate(submodelModifiable, 1); - GUINandGate nandI1 = new GUINandGate(submodelModifiable, 1); - GUINandGate nandY = new GUINandGate(submodelModifiable, 1); - - WireCrossPoint cp0 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cp1 = new WireCrossPoint(submodelModifiable, 1); - - nandS0.moveTo(10, 7.5); - nandI0.moveTo(35, 22.5); - nandI1.moveTo(35, 47.5); - nandY.moveTo(60, 30); - cp0.moveCenterTo(5, 12.5); - cp1.moveCenterTo(5, 22.5); - - new GUIWire(submodelModifiable, S0, cp0, new Point[0]); - new GUIWire(submodelModifiable, cp0, nandS0.getPin("A"), new Point[0]); - new GUIWire(submodelModifiable, cp0, cp1, new Point[0]); - new GUIWire(submodelModifiable, cp1, nandS0.getPin("B"), new Point[0]); - new GUIWire(submodelModifiable, nandS0.getPin("Y"), nandI0.getPin("A")); - new GUIWire(submodelModifiable, I0, nandI0.getPin("B"), new Point[0]); - new GUIWire(submodelModifiable, cp1, nandI1.getPin("A"), new Point(5, 52.5)); - new GUIWire(submodelModifiable, I1, nandI1.getPin("B"), new Point[0]); - new GUIWire(submodelModifiable, nandI0.getPin("Y"), nandY.getPin("A")); - new GUIWire(submodelModifiable, nandI1.getPin("Y"), nandY.getPin("B")); - new GUIWire(submodelModifiable, nandY.getPin("Y"), Y); - } - - static - { - IndirectGUIComponentCreator.setComponentProvider(GUImux1.class.getCanonicalName(), (m, p) -> new GUImux1(m)); - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUImux1_4.java b/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUImux1_4.java deleted file mode 100644 index ff0353bb..00000000 --- a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUImux1_4.java +++ /dev/null @@ -1,82 +0,0 @@ -package net.mograsim.logic.ui.model.components.mi.nandbased; - -import net.haspamelodica.swt.helper.swtobjectwrappers.Point; -import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.logic.ui.model.components.submodels.SimpleRectangularSubmodelComponent; -import net.mograsim.logic.ui.model.wires.GUIWire; -import net.mograsim.logic.ui.model.wires.Pin; -import net.mograsim.logic.ui.model.wires.WireCrossPoint; -import net.mograsim.logic.ui.serializing.IndirectGUIComponentCreator; - -public class GUImux1_4 extends SimpleRectangularSubmodelComponent -{ - public GUImux1_4(ViewModelModifiable model) - { - super(model, 1, "GUImux1_4"); - setSubmodelScale(.4); - setInputPins("S0", "I0_1", "I0_2", "I0_3", "I0_4", "I1_1", "I1_2", "I1_3", "I1_4"); - setOutputPins("Y1", "Y2", "Y3", "Y4"); - initSubmodelComponents(); - } - - @SuppressWarnings("unused") - private void initSubmodelComponents() - { - Pin S0 = getSubmodelPin("S0"); - Pin I0_1 = getSubmodelPin("I0_1"); - Pin I0_2 = getSubmodelPin("I0_2"); - Pin I0_3 = getSubmodelPin("I0_3"); - Pin I0_4 = getSubmodelPin("I0_4"); - Pin I1_1 = getSubmodelPin("I1_1"); - Pin I1_2 = getSubmodelPin("I1_2"); - Pin I1_3 = getSubmodelPin("I1_3"); - Pin I1_4 = getSubmodelPin("I1_4"); - Pin Y1 = getSubmodelPin("Y1"); - Pin Y2 = getSubmodelPin("Y2"); - Pin Y3 = getSubmodelPin("Y3"); - Pin Y4 = getSubmodelPin("Y4"); - - GUImux1 mux1 = new GUImux1(submodelModifiable); - GUImux1 mux2 = new GUImux1(submodelModifiable); - GUImux1 mux3 = new GUImux1(submodelModifiable); - GUImux1 mux4 = new GUImux1(submodelModifiable); - - WireCrossPoint cp1 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cp2 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cp3 = new WireCrossPoint(submodelModifiable, 1); - - mux1.moveTo(30, 7.5); - mux2.moveTo(30, 42.5); - mux3.moveTo(30, 77.5); - mux4.moveTo(30, 112.5); - cp1.moveCenterTo(25, 12.5); - cp2.moveCenterTo(25, 47.5); - cp3.moveCenterTo(25, 82.5); - - new GUIWire(submodelModifiable, S0, cp1, new Point[0]); - new GUIWire(submodelModifiable, cp1, mux1.getPin("S0"), new Point[0]); - new GUIWire(submodelModifiable, I0_1, mux1.getPin("I0"), new Point(5, 37.5), new Point(5, 22.5)); - new GUIWire(submodelModifiable, I1_1, mux1.getPin("I1"), new Point(10, 137.5), new Point(10, 32.5)); - new GUIWire(submodelModifiable, mux1.getPin("Y"), Y1, new Point[0]); - new GUIWire(submodelModifiable, cp1, cp2, new Point[0]); - new GUIWire(submodelModifiable, cp2, mux2.getPin("S0"), new Point[0]); - new GUIWire(submodelModifiable, I0_2, mux2.getPin("I0"), new Point(5, 62.5), new Point(5, 57.5)); - new GUIWire(submodelModifiable, I1_2, mux2.getPin("I1"), new Point(15, 162.5), new Point(15, 67.5)); - new GUIWire(submodelModifiable, mux2.getPin("Y"), Y2); - new GUIWire(submodelModifiable, cp2, cp3, new Point[0]); - new GUIWire(submodelModifiable, cp3, mux3.getPin("S0"), new Point[0]); - new GUIWire(submodelModifiable, I0_3, mux3.getPin("I0"), new Point(5, 87.5), new Point(5, 92.5)); - new GUIWire(submodelModifiable, I1_3, mux3.getPin("I1"), new Point(20, 187.5), new Point(20, 102.5)); - new GUIWire(submodelModifiable, mux3.getPin("Y"), Y3); - new GUIWire(submodelModifiable, cp3, mux4.getPin("S0"), new Point(25, 117.5)); - new GUIWire(submodelModifiable, I0_4, mux4.getPin("I0"), new Point(5, 112.5), new Point(5, 127.5)); - new GUIWire(submodelModifiable, I1_4, mux4.getPin("I1"), new Point(25, 212.5), new Point(25, 137.5)); - new GUIWire(submodelModifiable, mux4.getPin("Y"), Y4); - - } - - static - { - IndirectGUIComponentCreator.setComponentProvider(GUImux1_4.class.getCanonicalName(), (m, p) -> new GUImux1_4(m)); - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUInand3.java b/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUInand3.java deleted file mode 100644 index 39d29e26..00000000 --- a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUInand3.java +++ /dev/null @@ -1,56 +0,0 @@ -package net.mograsim.logic.ui.model.components.mi.nandbased; - -import net.haspamelodica.swt.helper.swtobjectwrappers.Point; -import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.logic.ui.model.components.atomic.GUINandGate; -import net.mograsim.logic.ui.model.components.submodels.SimpleRectangularSubmodelComponent; -import net.mograsim.logic.ui.model.wires.GUIWire; -import net.mograsim.logic.ui.model.wires.Pin; -import net.mograsim.logic.ui.model.wires.WireCrossPoint; -import net.mograsim.logic.ui.serializing.IndirectGUIComponentCreator; - -public class GUInand3 extends SimpleRectangularSubmodelComponent -{ - public GUInand3(ViewModelModifiable model) - { - super(model, 1, "GUInand3"); - setSubmodelScale(.4); - setInputPins("A", "B", "C"); - setOutputPins("Y"); - initSubmodelComponents(); - } - - @SuppressWarnings("unused") // for GUIWires being created - private void initSubmodelComponents() - { - Pin A = getSubmodelPin("A"); - Pin B = getSubmodelPin("B"); - Pin C = getSubmodelPin("C"); - Pin Y = getSubmodelPin("Y"); - - GUINandGate nandAB = new GUINandGate(submodelModifiable, 1); - GUINandGate andAB = new GUINandGate(submodelModifiable, 1); - GUINandGate nandABC = new GUINandGate(submodelModifiable, 1); - - WireCrossPoint cpNandAB = new WireCrossPoint(submodelModifiable, 1); - - nandAB.moveTo(10, 15); - andAB.moveTo(35, 15); - nandABC.moveTo(62.5, 2.5); - cpNandAB.moveCenterTo(32.5, 25); - - new GUIWire(submodelModifiable, A, nandAB.getPin("A")); - new GUIWire(submodelModifiable, B, nandAB.getPin("B")); - new GUIWire(submodelModifiable, nandAB.getPin("Y"), cpNandAB, new Point[0]); - new GUIWire(submodelModifiable, cpNandAB, andAB.getPin("A"), new Point(32.5, 20)); - new GUIWire(submodelModifiable, cpNandAB, andAB.getPin("B"), new Point(32.5, 30)); - new GUIWire(submodelModifiable, andAB.getPin("Y"), nandABC.getPin("A"), new Point(57.5, 25), new Point(57.5, 7.5)); - new GUIWire(submodelModifiable, C, nandABC.getPin("B"), new Point(60, 62.5), new Point(60, 17.5)); - new GUIWire(submodelModifiable, nandABC.getPin("Y"), Y, new Point[0]); - } - - static - { - IndirectGUIComponentCreator.setComponentProvider(GUInand3.class.getCanonicalName(), (m, p) -> new GUInand3(m)); - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUInot4.java b/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUInot4.java deleted file mode 100644 index 13d2b1f8..00000000 --- a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUInot4.java +++ /dev/null @@ -1,76 +0,0 @@ -package net.mograsim.logic.ui.model.components.mi.nandbased; - -import net.haspamelodica.swt.helper.swtobjectwrappers.Point; -import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.logic.ui.model.components.atomic.GUINandGate; -import net.mograsim.logic.ui.model.components.submodels.SimpleRectangularSubmodelComponent; -import net.mograsim.logic.ui.model.wires.GUIWire; -import net.mograsim.logic.ui.model.wires.Pin; -import net.mograsim.logic.ui.model.wires.WireCrossPoint; -import net.mograsim.logic.ui.serializing.IndirectGUIComponentCreator; - -public class GUInot4 extends SimpleRectangularSubmodelComponent -{ - public GUInot4(ViewModelModifiable model) - { - super(model, 1, "GUInot4"); - setSubmodelScale(.4); - setInputPins("A1", "A2", "A3", "A4"); - setOutputPins("Y1", "Y2", "Y3", "Y4"); - initSubmodelComponents(); - } - - @SuppressWarnings("unused") // for GUIWires being created - private void initSubmodelComponents() - { - Pin A1 = getSubmodelPin("A1"); - Pin A2 = getSubmodelPin("A2"); - Pin A3 = getSubmodelPin("A3"); - Pin A4 = getSubmodelPin("A4"); - Pin Y1 = getSubmodelPin("Y1"); - Pin Y2 = getSubmodelPin("Y2"); - Pin Y3 = getSubmodelPin("Y3"); - Pin Y4 = getSubmodelPin("Y4"); - - GUINandGate nand1 = new GUINandGate(submodelModifiable, 1); - GUINandGate nand2 = new GUINandGate(submodelModifiable, 1); - GUINandGate nand3 = new GUINandGate(submodelModifiable, 1); - GUINandGate nand4 = new GUINandGate(submodelModifiable, 1); - - WireCrossPoint cp1 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cp2 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cp3 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cp4 = new WireCrossPoint(submodelModifiable, 1); - - nand1.moveTo(30, 2.5); - nand2.moveTo(30, 27.5); - nand3.moveTo(30, 52.5); - nand4.moveTo(30, 77.5); - cp1.moveCenterTo(15, 12.5); - cp2.moveCenterTo(15, 37.5); - cp3.moveCenterTo(15, 62.5); - cp4.moveCenterTo(15, 87.5); - - new GUIWire(submodelModifiable, A1, cp1, new Point[0]); - new GUIWire(submodelModifiable, A2, cp2, new Point[0]); - new GUIWire(submodelModifiable, A3, cp3, new Point[0]); - new GUIWire(submodelModifiable, A4, cp4, new Point[0]); - new GUIWire(submodelModifiable, cp1, nand1.getPin("A"), new Point(15, 7.5)); - new GUIWire(submodelModifiable, cp2, nand2.getPin("A"), new Point(15, 32.5)); - new GUIWire(submodelModifiable, cp3, nand3.getPin("A"), new Point(15, 57.5)); - new GUIWire(submodelModifiable, cp4, nand4.getPin("A"), new Point(15, 82.5)); - new GUIWire(submodelModifiable, cp1, nand1.getPin("B"), new Point(15, 17.5)); - new GUIWire(submodelModifiable, cp2, nand2.getPin("B"), new Point(15, 42.5)); - new GUIWire(submodelModifiable, cp3, nand3.getPin("B"), new Point(15, 67.5)); - new GUIWire(submodelModifiable, cp4, nand4.getPin("B"), new Point(15, 92.5)); - new GUIWire(submodelModifiable, nand1.getPin("Y"), Y1, new Point[0]); - new GUIWire(submodelModifiable, nand2.getPin("Y"), Y2, new Point[0]); - new GUIWire(submodelModifiable, nand3.getPin("Y"), Y3, new Point[0]); - new GUIWire(submodelModifiable, nand4.getPin("Y"), Y4, new Point[0]); - } - - static - { - IndirectGUIComponentCreator.setComponentProvider(GUInot4.class.getCanonicalName(), (m, p) -> new GUInot4(m)); - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIor4.java b/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIor4.java deleted file mode 100644 index 9f7dde4f..00000000 --- a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIor4.java +++ /dev/null @@ -1,96 +0,0 @@ -package net.mograsim.logic.ui.model.components.mi.nandbased; - -import net.haspamelodica.swt.helper.swtobjectwrappers.Point; -import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.logic.ui.model.components.atomic.GUINandGate; -import net.mograsim.logic.ui.model.components.submodels.SimpleRectangularSubmodelComponent; -import net.mograsim.logic.ui.model.wires.GUIWire; -import net.mograsim.logic.ui.model.wires.Pin; -import net.mograsim.logic.ui.model.wires.WireCrossPoint; -import net.mograsim.logic.ui.serializing.IndirectGUIComponentCreator; - -public class GUIor4 extends SimpleRectangularSubmodelComponent -{ - public GUIor4(ViewModelModifiable model) - { - super(model, 1, "GUIor4"); - setSubmodelScale(.2); - setInputPins("A1", "A2", "A3", "A4"); - setOutputPins("Y"); - initSubmodelComponents(); - } - - @SuppressWarnings("unused") // for GUIWires being created - private void initSubmodelComponents() - { - Pin A1 = getSubmodelPin("A1"); - Pin A2 = getSubmodelPin("A2"); - Pin A3 = getSubmodelPin("A3"); - Pin A4 = getSubmodelPin("A4"); - Pin Y = getSubmodelPin("Y"); - - GUINandGate nandA1 = new GUINandGate(submodelModifiable, 1); - GUINandGate nandA2 = new GUINandGate(submodelModifiable, 1); - GUINandGate nandA3 = new GUINandGate(submodelModifiable, 1); - GUINandGate nandA4 = new GUINandGate(submodelModifiable, 1); - GUINandGate or12 = new GUINandGate(submodelModifiable, 1); - GUINandGate or34 = new GUINandGate(submodelModifiable, 1); - GUINandGate nor12 = new GUINandGate(submodelModifiable, 1); - GUINandGate nor34 = new GUINandGate(submodelModifiable, 1); - GUINandGate or1234 = new GUINandGate(submodelModifiable, 1); - - WireCrossPoint cpA1 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpA2 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpA3 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpA4 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpOr12 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpOr34 = new WireCrossPoint(submodelModifiable, 1); - - nandA1.moveTo(20, 15); - nandA2.moveTo(20, 65); - nandA3.moveTo(20, 115); - nandA4.moveTo(20, 165); - or12.moveTo(50, 40); - or34.moveTo(50, 140); - nor12.moveTo(110, 40); - nor34.moveTo(110, 140); - or1234.moveTo(140, 90); - cpA1.moveCenterTo(15, 25); - cpA2.moveCenterTo(15, 75); - cpA3.moveCenterTo(15, 125); - cpA4.moveCenterTo(15, 175); - cpOr12.moveCenterTo(105, 50); - cpOr34.moveCenterTo(105, 150); - - new GUIWire(submodelModifiable, A1, cpA1, new Point[0]); - new GUIWire(submodelModifiable, A2, cpA2, new Point[0]); - new GUIWire(submodelModifiable, A3, cpA3, new Point[0]); - new GUIWire(submodelModifiable, A4, cpA4, new Point[0]); - new GUIWire(submodelModifiable, cpA1, nandA1.getPin("A"), new Point(15, 20)); - new GUIWire(submodelModifiable, cpA2, nandA2.getPin("A"), new Point(15, 70)); - new GUIWire(submodelModifiable, cpA3, nandA3.getPin("A"), new Point(15, 120)); - new GUIWire(submodelModifiable, cpA4, nandA4.getPin("A"), new Point(15, 170)); - new GUIWire(submodelModifiable, cpA1, nandA1.getPin("B"), new Point(15, 30)); - new GUIWire(submodelModifiable, cpA2, nandA2.getPin("B"), new Point(15, 80)); - new GUIWire(submodelModifiable, cpA3, nandA3.getPin("B"), new Point(15, 130)); - new GUIWire(submodelModifiable, cpA4, nandA4.getPin("B"), new Point(15, 180)); - new GUIWire(submodelModifiable, nandA1.getPin("Y"), or12.getPin("A")); - new GUIWire(submodelModifiable, nandA2.getPin("Y"), or12.getPin("B")); - new GUIWire(submodelModifiable, nandA3.getPin("Y"), or34.getPin("A")); - new GUIWire(submodelModifiable, nandA4.getPin("Y"), or34.getPin("B")); - new GUIWire(submodelModifiable, or12.getPin("Y"), cpOr12, new Point[0]); - new GUIWire(submodelModifiable, or34.getPin("Y"), cpOr34, new Point[0]); - new GUIWire(submodelModifiable, cpOr12, nor12.getPin("A"), new Point(105, 45)); - new GUIWire(submodelModifiable, cpOr12, nor12.getPin("B"), new Point(105, 55)); - new GUIWire(submodelModifiable, cpOr34, nor34.getPin("A"), new Point(105, 145)); - new GUIWire(submodelModifiable, cpOr34, nor34.getPin("B"), new Point(105, 155)); - new GUIWire(submodelModifiable, nor12.getPin("Y"), or1234.getPin("A")); - new GUIWire(submodelModifiable, nor34.getPin("Y"), or1234.getPin("B")); - new GUIWire(submodelModifiable, or1234.getPin("Y"), Y); - } - - static - { - IndirectGUIComponentCreator.setComponentProvider(GUIor4.class.getCanonicalName(), (m, p) -> new GUIor4(m)); - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIor_4.java b/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIor_4.java deleted file mode 100644 index ba10373c..00000000 --- a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIor_4.java +++ /dev/null @@ -1,124 +0,0 @@ -package net.mograsim.logic.ui.model.components.mi.nandbased; - -import net.haspamelodica.swt.helper.swtobjectwrappers.Point; -import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.logic.ui.model.components.atomic.GUINandGate; -import net.mograsim.logic.ui.model.components.submodels.SimpleRectangularSubmodelComponent; -import net.mograsim.logic.ui.model.wires.GUIWire; -import net.mograsim.logic.ui.model.wires.Pin; -import net.mograsim.logic.ui.model.wires.WireCrossPoint; -import net.mograsim.logic.ui.serializing.IndirectGUIComponentCreator; - -public class GUIor_4 extends SimpleRectangularSubmodelComponent -{ - public GUIor_4(ViewModelModifiable model) - { - super(model, 1, "GUIor_4"); - setSubmodelScale(.4); - setInputPins("A1", "A2", "A3", "A4", "B1", "B2", "B3", "B4"); - setOutputPins("Y1", "Y2", "Y3", "Y4"); - initSubmodelComponents(); - } - - @SuppressWarnings("unused") // for GUIWires being created - private void initSubmodelComponents() - { - Pin A1 = getSubmodelPin("A1"); - Pin A2 = getSubmodelPin("A2"); - Pin A3 = getSubmodelPin("A3"); - Pin A4 = getSubmodelPin("A4"); - Pin B1 = getSubmodelPin("B1"); - Pin B2 = getSubmodelPin("B2"); - Pin B3 = getSubmodelPin("B3"); - Pin B4 = getSubmodelPin("B4"); - Pin Y1 = getSubmodelPin("Y1"); - Pin Y2 = getSubmodelPin("Y2"); - Pin Y3 = getSubmodelPin("Y3"); - Pin Y4 = getSubmodelPin("Y4"); - - GUINandGate notA1 = new GUINandGate(submodelModifiable, 1); - GUINandGate notA2 = new GUINandGate(submodelModifiable, 1); - GUINandGate notA3 = new GUINandGate(submodelModifiable, 1); - GUINandGate notA4 = new GUINandGate(submodelModifiable, 1); - GUINandGate notB1 = new GUINandGate(submodelModifiable, 1); - GUINandGate notB2 = new GUINandGate(submodelModifiable, 1); - GUINandGate notB3 = new GUINandGate(submodelModifiable, 1); - GUINandGate notB4 = new GUINandGate(submodelModifiable, 1); - GUINandGate nandY1 = new GUINandGate(submodelModifiable, 1); - GUINandGate nandY2 = new GUINandGate(submodelModifiable, 1); - GUINandGate nandY3 = new GUINandGate(submodelModifiable, 1); - GUINandGate nandY4 = new GUINandGate(submodelModifiable, 1); - - WireCrossPoint cpA1 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpA2 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpA3 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpA4 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpB1 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpB2 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpB3 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpB4 = new WireCrossPoint(submodelModifiable, 1); - - notA1.moveTo(15, 2.5); - notA2.moveTo(15, 27.5); - notA3.moveTo(15, 52.5); - notA4.moveTo(15, 77.5); - notB1.moveTo(15, 102.5); - notB2.moveTo(15, 127.5); - notB3.moveTo(15, 152.5); - notB4.moveTo(15, 177.5); - nandY1.moveTo(65, 2.5); - nandY2.moveTo(65, 27.5); - nandY3.moveTo(65, 52.5); - nandY4.moveTo(65, 77.5); - cpA1.moveCenterTo(7.5, 12.5); - cpA2.moveCenterTo(7.5, 37.5); - cpA3.moveCenterTo(7.5, 62.5); - cpA4.moveCenterTo(7.5, 87.5); - cpB1.moveCenterTo(7.5, 112.5); - cpB2.moveCenterTo(7.5, 137.5); - cpB3.moveCenterTo(7.5, 162.5); - cpB4.moveCenterTo(7.5, 187.5); - - new GUIWire(submodelModifiable, A1, cpA1, new Point[0]); - new GUIWire(submodelModifiable, A2, cpA2, new Point[0]); - new GUIWire(submodelModifiable, A3, cpA3, new Point[0]); - new GUIWire(submodelModifiable, A4, cpA4, new Point[0]); - new GUIWire(submodelModifiable, B1, cpB1, new Point[0]); - new GUIWire(submodelModifiable, B2, cpB2, new Point[0]); - new GUIWire(submodelModifiable, B3, cpB3, new Point[0]); - new GUIWire(submodelModifiable, B4, cpB4, new Point[0]); - new GUIWire(submodelModifiable, cpA1, notA1.getPin("A"), new Point(7.5, 7.5)); - new GUIWire(submodelModifiable, cpA1, notA1.getPin("B"), new Point(7.5, 17.5)); - new GUIWire(submodelModifiable, cpA2, notA2.getPin("A"), new Point(7.5, 32.5)); - new GUIWire(submodelModifiable, cpA2, notA2.getPin("B"), new Point(7.5, 42.5)); - new GUIWire(submodelModifiable, cpA3, notA3.getPin("A"), new Point(7.5, 57.5)); - new GUIWire(submodelModifiable, cpA3, notA3.getPin("B"), new Point(7.5, 67.5)); - new GUIWire(submodelModifiable, cpA4, notA4.getPin("A"), new Point(7.5, 82.5)); - new GUIWire(submodelModifiable, cpA4, notA4.getPin("B"), new Point(7.5, 92.5)); - new GUIWire(submodelModifiable, cpB1, notB1.getPin("A"), new Point(7.5, 107.5)); - new GUIWire(submodelModifiable, cpB1, notB1.getPin("B"), new Point(7.5, 117.5)); - new GUIWire(submodelModifiable, cpB2, notB2.getPin("A"), new Point(7.5, 132.5)); - new GUIWire(submodelModifiable, cpB2, notB2.getPin("B"), new Point(7.5, 142.5)); - new GUIWire(submodelModifiable, cpB3, notB3.getPin("A"), new Point(7.5, 157.5)); - new GUIWire(submodelModifiable, cpB3, notB3.getPin("B"), new Point(7.5, 167.5)); - new GUIWire(submodelModifiable, cpB4, notB4.getPin("A"), new Point(7.5, 182.5)); - new GUIWire(submodelModifiable, cpB4, notB4.getPin("B"), new Point(7.5, 192.5)); - new GUIWire(submodelModifiable, notA1.getPin("Y"), nandY1.getPin("A"), new Point(40, 12.5), new Point(40, 7.5)); - new GUIWire(submodelModifiable, notB1.getPin("Y"), nandY1.getPin("B"), new Point(45, 112.5), new Point(45, 17.5)); - new GUIWire(submodelModifiable, notA2.getPin("Y"), nandY2.getPin("A"), new Point(40, 37.5), new Point(40, 32.5)); - new GUIWire(submodelModifiable, notB2.getPin("Y"), nandY2.getPin("B"), new Point(50, 137.5), new Point(50, 42.5)); - new GUIWire(submodelModifiable, notA3.getPin("Y"), nandY3.getPin("A"), new Point(40, 62.5), new Point(40, 57.5)); - new GUIWire(submodelModifiable, notB3.getPin("Y"), nandY3.getPin("B"), new Point(55, 162.5), new Point(55, 67.5)); - new GUIWire(submodelModifiable, notA4.getPin("Y"), nandY4.getPin("A"), new Point(40, 87.5), new Point(40, 82.5)); - new GUIWire(submodelModifiable, notB4.getPin("Y"), nandY4.getPin("B"), new Point(60, 187.5), new Point(60, 92.5)); - new GUIWire(submodelModifiable, nandY1.getPin("Y"), Y1, new Point[0]); - new GUIWire(submodelModifiable, nandY2.getPin("Y"), Y2, new Point[0]); - new GUIWire(submodelModifiable, nandY3.getPin("Y"), Y3, new Point[0]); - new GUIWire(submodelModifiable, nandY4.getPin("Y"), Y4, new Point[0]); - } - - static - { - IndirectGUIComponentCreator.setComponentProvider(GUIor_4.class.getCanonicalName(), (m, p) -> new GUIor_4(m)); - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIram2.java b/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIram2.java deleted file mode 100644 index f0bbf490..00000000 --- a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIram2.java +++ /dev/null @@ -1,328 +0,0 @@ -package net.mograsim.logic.ui.model.components.mi.nandbased; - -import net.haspamelodica.swt.helper.swtobjectwrappers.Point; -import net.mograsim.logic.core.types.BitVector; -import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.logic.ui.model.components.submodels.SimpleRectangularSubmodelComponent; -import net.mograsim.logic.ui.model.wires.GUIWire; -import net.mograsim.logic.ui.model.wires.Pin; -import net.mograsim.logic.ui.model.wires.WireCrossPoint; -import net.mograsim.logic.ui.serializing.IndirectGUIComponentCreator; - -public class GUIram2 extends SimpleRectangularSubmodelComponent -{ - private GUIdlatch4 cell00; - private GUIdlatch4 cell01; - private GUIdlatch4 cell10; - private GUIdlatch4 cell11; - - public GUIram2(ViewModelModifiable model) - { - super(model, 1, "GUIram2"); - setSubmodelScale(.1); - setInputPins("A0", "A1", "B0", "B1", "WE", "D1", "D2", "D3", "D4"); - setOutputPins("QA1", "QA2", "QA3", "QA4", "QB1", "QB2", "QB3", "QB4"); - initSubmodelComponents(); - } - - @SuppressWarnings("unused") // for GUIWires being created - private void initSubmodelComponents() - { - //@formatter:off - Pin A0 = getSubmodelPin("A0"); - Pin A1 = getSubmodelPin("A1"); - Pin B0 = getSubmodelPin("B0"); - Pin B1 = getSubmodelPin("B1"); - Pin WE = getSubmodelPin("WE"); - Pin D1 = getSubmodelPin("D1"); - Pin D2 = getSubmodelPin("D2"); - Pin D3 = getSubmodelPin("D3"); - Pin D4 = getSubmodelPin("D4"); - Pin QA1 = getSubmodelPin("QA1"); - Pin QA2 = getSubmodelPin("QA2"); - Pin QA3 = getSubmodelPin("QA3"); - Pin QA4 = getSubmodelPin("QA4"); - Pin QB1 = getSubmodelPin("QB1"); - Pin QB2 = getSubmodelPin("QB2"); - Pin QB3 = getSubmodelPin("QB3"); - Pin QB4 = getSubmodelPin("QB4"); - - GUIdemux2 demuxA = new GUIdemux2 (submodelModifiable); - GUIdemux2 demuxB = new GUIdemux2 (submodelModifiable); - GUIand41 weAndB = new GUIand41 (submodelModifiable); - cell00 = new GUIdlatch4 (submodelModifiable); - cell01 = new GUIdlatch4 (submodelModifiable); - cell10 = new GUIdlatch4 (submodelModifiable); - cell11 = new GUIdlatch4 (submodelModifiable); - GUIand41 andA00 = new GUIand41 (submodelModifiable); - GUIandor414 andorA01 = new GUIandor414(submodelModifiable); - GUIandor414 andorA10 = new GUIandor414(submodelModifiable); - GUIandor414 andorA11 = new GUIandor414(submodelModifiable); - GUIand41 andB00 = new GUIand41 (submodelModifiable); - GUIandor414 andorB01 = new GUIandor414(submodelModifiable); - GUIandor414 andorB10 = new GUIandor414(submodelModifiable); - GUIandor414 andorB11 = new GUIandor414(submodelModifiable); - - WireCrossPoint cpB00 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpB01 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpB10 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpB11 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpD1in = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpD2in = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpD3in = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpD4in = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpD101 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpD201 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpD301 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpD401 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpD110 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpD210 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpD310 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpD410 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpQ100 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpQ200 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpQ300 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpQ400 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpQ101 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpQ201 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpQ301 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpQ401 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpQ110 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpQ210 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpQ310 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpQ410 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpQ111 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpQ211 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpQ311 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpQ411 = new WireCrossPoint(submodelModifiable, 1); - - demuxA .moveTo( 55, 45); - demuxB .moveTo( 55, 150); - weAndB .moveTo(130, 150); - cell00 .moveTo( 55, 325); - cell01 .moveTo( 55, 475); - cell10 .moveTo( 55, 625); - cell11 .moveTo( 55, 775); - andA00 .moveTo(235, 375); - andorA01.moveTo(235, 485); - andorA10.moveTo(235, 635); - andorA11.moveTo(235, 785); - andB00 .moveTo(135, 325); - andorB01.moveTo(135, 435); - andorB10.moveTo(135, 585); - andorB11.moveTo(135, 735); - cpB00 .moveCenterTo(110, 155); - cpB01 .moveCenterTo(105, 165); - cpB10 .moveCenterTo(100, 175); - cpB11 .moveCenterTo( 95, 185); - cpD1in.moveCenterTo( 35, 550); - cpD2in.moveCenterTo( 40, 650); - cpD3in.moveCenterTo( 45, 750); - cpD4in.moveCenterTo( 50, 810); - cpD101.moveCenterTo( 35, 480); - cpD201.moveCenterTo( 40, 490); - cpD301.moveCenterTo( 45, 500); - cpD401.moveCenterTo( 50, 510); - cpD110.moveCenterTo( 35, 630); - cpD210.moveCenterTo( 40, 640); - cpD310.moveCenterTo( 45, 650); - cpD410.moveCenterTo( 50, 660); - cpQ100.moveCenterTo(130, 330); - cpQ200.moveCenterTo(125, 340); - cpQ300.moveCenterTo(120, 350); - cpQ400.moveCenterTo(115, 360); - cpQ101.moveCenterTo(130, 480); - cpQ201.moveCenterTo(125, 490); - cpQ301.moveCenterTo(120, 500); - cpQ401.moveCenterTo(115, 510); - cpQ110.moveCenterTo(130, 630); - cpQ210.moveCenterTo(125, 640); - cpQ310.moveCenterTo(120, 650); - cpQ410.moveCenterTo(115, 660); - cpQ111.moveCenterTo(130, 780); - cpQ211.moveCenterTo(125, 790); - cpQ311.moveCenterTo(120, 800); - cpQ411.moveCenterTo(115, 810); - - new GUIWire(submodelModifiable, A0, demuxA.getPin("S0"), new Point[0]); - new GUIWire(submodelModifiable, A1, demuxA.getPin("S1"), new Point(10, 150), new Point(10, 60)); - new GUIWire(submodelModifiable, B0, demuxB.getPin("S0"), new Point( 5, 250), new Point( 5, 155)); - new GUIWire(submodelModifiable, B1, demuxB.getPin("S1"), new Point(10, 350), new Point(10, 165)); - new GUIWire(submodelModifiable, demuxB.getPin("Y00"), cpB00, new Point[0]); - new GUIWire(submodelModifiable, demuxB.getPin("Y01"), cpB01, new Point[0]); - new GUIWire(submodelModifiable, demuxB.getPin("Y10"), cpB10, new Point[0]); - new GUIWire(submodelModifiable, demuxB.getPin("Y11"), cpB11, new Point[0]); - new GUIWire(submodelModifiable, cpB00, weAndB.getPin("A1"), new Point[0]); - new GUIWire(submodelModifiable, cpB01, weAndB.getPin("A2"), new Point[0]); - new GUIWire(submodelModifiable, cpB10, weAndB.getPin("A3"), new Point[0]); - new GUIWire(submodelModifiable, cpB11, weAndB.getPin("A4"), new Point[0]); - new GUIWire(submodelModifiable, WE, weAndB.getPin("B"), new Point(5, 450), new Point(5, 300), new Point(125, 300), new Point(125, 195)); - new GUIWire(submodelModifiable, weAndB.getPin("Y1"), cell00.getPin("C"), new Point(185, 155), new Point(185, 250), new Point(30, 250), new Point(30, 370)); - new GUIWire(submodelModifiable, weAndB.getPin("Y2"), cell01.getPin("C"), new Point(180, 165), new Point(180, 245), new Point(25, 245), new Point(25, 520)); - new GUIWire(submodelModifiable, weAndB.getPin("Y3"), cell10.getPin("C"), new Point(175, 175), new Point(175, 240), new Point(20, 240), new Point(20, 670)); - new GUIWire(submodelModifiable, weAndB.getPin("Y4"), cell11.getPin("C"), new Point(170, 185), new Point(170, 235), new Point(15, 235), new Point(15, 820)); - new GUIWire(submodelModifiable, D1, cpD1in , new Point[0]); - new GUIWire(submodelModifiable, D2, cpD2in , new Point[0]); - new GUIWire(submodelModifiable, D3, cpD3in , new Point[0]); - new GUIWire(submodelModifiable, D4, cpD4in , new Point(50, 850)); - new GUIWire(submodelModifiable, cpD101, cell00.getPin("D1"), new Point(35, 330)); - new GUIWire(submodelModifiable, cpD201, cell00.getPin("D2"), new Point(40, 340)); - new GUIWire(submodelModifiable, cpD301, cell00.getPin("D3"), new Point(45, 350)); - new GUIWire(submodelModifiable, cpD401, cell00.getPin("D4"), new Point(50, 360)); - new GUIWire(submodelModifiable, cpD101, cell01.getPin("D1"), new Point[0]); - new GUIWire(submodelModifiable, cpD201, cell01.getPin("D2"), new Point[0]); - new GUIWire(submodelModifiable, cpD301, cell01.getPin("D3"), new Point[0]); - new GUIWire(submodelModifiable, cpD401, cell01.getPin("D4"), new Point[0]); - new GUIWire(submodelModifiable, cpD101, cpD1in , new Point[0]); - new GUIWire(submodelModifiable, cpD1in, cpD110 , new Point[0]); - new GUIWire(submodelModifiable, cpD201, cpD210 , new Point[0]); - new GUIWire(submodelModifiable, cpD301, cpD310 , new Point[0]); - new GUIWire(submodelModifiable, cpD401, cpD410 , new Point[0]); - new GUIWire(submodelModifiable, cpD110, cell10.getPin("D1"), new Point[0]); - new GUIWire(submodelModifiable, cpD210, cell10.getPin("D2"), new Point[0]); - new GUIWire(submodelModifiable, cpD310, cell10.getPin("D3"), new Point[0]); - new GUIWire(submodelModifiable, cpD410, cell10.getPin("D4"), new Point[0]); - new GUIWire(submodelModifiable, cpD210, cpD2in , new Point[0]); - new GUIWire(submodelModifiable, cpD310, cpD3in , new Point[0]); - new GUIWire(submodelModifiable, cpD410, cpD4in , new Point[0]); - new GUIWire(submodelModifiable, cpD110, cell11.getPin("D1"), new Point(35, 780)); - new GUIWire(submodelModifiable, cpD2in, cell11.getPin("D2"), new Point(40, 790)); - new GUIWire(submodelModifiable, cpD3in, cell11.getPin("D3"), new Point(45, 800)); - new GUIWire(submodelModifiable, cpD4in, cell11.getPin("D4"), new Point[0]); - new GUIWire(submodelModifiable, cell00.getPin("Q1"), cpQ100, new Point[0]); - new GUIWire(submodelModifiable, cell00.getPin("Q2"), cpQ200, new Point[0]); - new GUIWire(submodelModifiable, cell00.getPin("Q3"), cpQ300, new Point[0]); - new GUIWire(submodelModifiable, cell00.getPin("Q4"), cpQ400, new Point[0]); - new GUIWire(submodelModifiable, cell01.getPin("Q1"), cpQ101, new Point[0]); - new GUIWire(submodelModifiable, cell01.getPin("Q2"), cpQ201, new Point[0]); - new GUIWire(submodelModifiable, cell01.getPin("Q3"), cpQ301, new Point[0]); - new GUIWire(submodelModifiable, cell01.getPin("Q4"), cpQ401, new Point[0]); - new GUIWire(submodelModifiable, cell10.getPin("Q1"), cpQ110, new Point[0]); - new GUIWire(submodelModifiable, cell10.getPin("Q2"), cpQ210, new Point[0]); - new GUIWire(submodelModifiable, cell10.getPin("Q3"), cpQ310, new Point[0]); - new GUIWire(submodelModifiable, cell10.getPin("Q4"), cpQ410, new Point[0]); - new GUIWire(submodelModifiable, cell11.getPin("Q1"), cpQ111, new Point[0]); - new GUIWire(submodelModifiable, cell11.getPin("Q2"), cpQ211, new Point[0]); - new GUIWire(submodelModifiable, cell11.getPin("Q3"), cpQ311, new Point[0]); - new GUIWire(submodelModifiable, cell11.getPin("Q4"), cpQ411, new Point[0]); - new GUIWire(submodelModifiable, demuxA.getPin("Y00"), andA00 .getPin("B"), new Point(210, 50), new Point(210, 420)); - new GUIWire(submodelModifiable, demuxA.getPin("Y01"), andorA01.getPin("B"), new Point(205, 60), new Point(205, 570)); - new GUIWire(submodelModifiable, demuxA.getPin("Y10"), andorA10.getPin("B"), new Point(200, 70), new Point(200, 720)); - new GUIWire(submodelModifiable, demuxA.getPin("Y11"), andorA11.getPin("B"), new Point(195, 80), new Point(195, 870)); - new GUIWire(submodelModifiable, cpB00 , andB00 .getPin("B"), new Point(110, 370)); - new GUIWire(submodelModifiable, cpB01 , andorB01.getPin("B"), new Point(105, 520)); - new GUIWire(submodelModifiable, cpB10 , andorB10.getPin("B"), new Point(100, 670)); - new GUIWire(submodelModifiable, cpB11 , andorB11.getPin("B"), new Point(95, 820)); - new GUIWire(submodelModifiable, cpQ100, andA00 .getPin("A1"), new Point(130, 380)); - new GUIWire(submodelModifiable, cpQ200, andA00 .getPin("A2"), new Point(125, 390)); - new GUIWire(submodelModifiable, cpQ300, andA00 .getPin("A3"), new Point(120, 400)); - new GUIWire(submodelModifiable, cpQ400, andA00 .getPin("A4"), new Point(115, 410)); - new GUIWire(submodelModifiable, cpQ101, andorA01.getPin("A1"), new Point(130, 530)); - new GUIWire(submodelModifiable, cpQ201, andorA01.getPin("A2"), new Point(125, 540)); - new GUIWire(submodelModifiable, cpQ301, andorA01.getPin("A3"), new Point(120, 550)); - new GUIWire(submodelModifiable, cpQ401, andorA01.getPin("A4"), new Point(115, 560)); - new GUIWire(submodelModifiable, cpQ110, andorA10.getPin("A1"), new Point(130, 680)); - new GUIWire(submodelModifiable, cpQ210, andorA10.getPin("A2"), new Point(125, 690)); - new GUIWire(submodelModifiable, cpQ310, andorA10.getPin("A3"), new Point(120, 700)); - new GUIWire(submodelModifiable, cpQ410, andorA10.getPin("A4"), new Point(115, 710)); - new GUIWire(submodelModifiable, cpQ111, andorA11.getPin("A1"), new Point(130, 830)); - new GUIWire(submodelModifiable, cpQ211, andorA11.getPin("A2"), new Point(125, 840)); - new GUIWire(submodelModifiable, cpQ311, andorA11.getPin("A3"), new Point(120, 850)); - new GUIWire(submodelModifiable, cpQ411, andorA11.getPin("A4"), new Point(115, 860)); - new GUIWire(submodelModifiable, cpQ100, andB00 .getPin("A1"), new Point[0]); - new GUIWire(submodelModifiable, cpQ200, andB00 .getPin("A2"), new Point[0]); - new GUIWire(submodelModifiable, cpQ300, andB00 .getPin("A3"), new Point[0]); - new GUIWire(submodelModifiable, cpQ400, andB00 .getPin("A4"), new Point[0]); - new GUIWire(submodelModifiable, cpQ101, andorB01.getPin("A1"), new Point[0]); - new GUIWire(submodelModifiable, cpQ201, andorB01.getPin("A2"), new Point[0]); - new GUIWire(submodelModifiable, cpQ301, andorB01.getPin("A3"), new Point[0]); - new GUIWire(submodelModifiable, cpQ401, andorB01.getPin("A4"), new Point[0]); - new GUIWire(submodelModifiable, cpQ110, andorB10.getPin("A1"), new Point[0]); - new GUIWire(submodelModifiable, cpQ210, andorB10.getPin("A2"), new Point[0]); - new GUIWire(submodelModifiable, cpQ310, andorB10.getPin("A3"), new Point[0]); - new GUIWire(submodelModifiable, cpQ410, andorB10.getPin("A4"), new Point[0]); - new GUIWire(submodelModifiable, cpQ111, andorB11.getPin("A1"), new Point[0]); - new GUIWire(submodelModifiable, cpQ211, andorB11.getPin("A2"), new Point[0]); - new GUIWire(submodelModifiable, cpQ311, andorB11.getPin("A3"), new Point[0]); - new GUIWire(submodelModifiable, cpQ411, andorB11.getPin("A4"), new Point[0]); - new GUIWire(submodelModifiable, andA00 .getPin("Y1"), andorA01.getPin("C1"), new Point(290, 380), new Point(290, 445), new Point(230, 445), new Point(230, 490)); - new GUIWire(submodelModifiable, andA00 .getPin("Y2"), andorA01.getPin("C2"), new Point(285, 390), new Point(285, 440), new Point(225, 440), new Point(225, 500)); - new GUIWire(submodelModifiable, andA00 .getPin("Y3"), andorA01.getPin("C3"), new Point(280, 400), new Point(280, 435), new Point(220, 435), new Point(220, 510)); - new GUIWire(submodelModifiable, andA00 .getPin("Y4"), andorA01.getPin("C4"), new Point(275, 410), new Point(275, 430), new Point(215, 430), new Point(215, 520)); - new GUIWire(submodelModifiable, andorA01.getPin("Y1"), andorA10.getPin("C1"), new Point(290, 490), new Point(290, 595), new Point(230, 595), new Point(230, 640)); - new GUIWire(submodelModifiable, andorA01.getPin("Y2"), andorA10.getPin("C2"), new Point(285, 500), new Point(285, 590), new Point(225, 590), new Point(225, 650)); - new GUIWire(submodelModifiable, andorA01.getPin("Y3"), andorA10.getPin("C3"), new Point(280, 510), new Point(280, 585), new Point(220, 585), new Point(220, 660)); - new GUIWire(submodelModifiable, andorA01.getPin("Y4"), andorA10.getPin("C4"), new Point(275, 520), new Point(275, 580), new Point(215, 580), new Point(215, 670)); - new GUIWire(submodelModifiable, andorA10.getPin("Y1"), andorA11.getPin("C1"), new Point(290, 640), new Point(290, 745), new Point(230, 745), new Point(230, 790)); - new GUIWire(submodelModifiable, andorA10.getPin("Y2"), andorA11.getPin("C2"), new Point(285, 650), new Point(285, 740), new Point(225, 740), new Point(225, 800)); - new GUIWire(submodelModifiable, andorA10.getPin("Y3"), andorA11.getPin("C3"), new Point(280, 660), new Point(280, 735), new Point(220, 735), new Point(220, 810)); - new GUIWire(submodelModifiable, andorA10.getPin("Y4"), andorA11.getPin("C4"), new Point(275, 670), new Point(275, 730), new Point(215, 730), new Point(215, 820)); - new GUIWire(submodelModifiable, andorA11.getPin("Y1"), QA1 , new Point(300, 790), new Point(300, 50)); - new GUIWire(submodelModifiable, andorA11.getPin("Y2"), QA2 , new Point(305, 800), new Point(305, 150)); - new GUIWire(submodelModifiable, andorA11.getPin("Y3"), QA3 , new Point(310, 810), new Point(310, 250)); - new GUIWire(submodelModifiable, andorA11.getPin("Y4"), QA4 , new Point(315, 820), new Point(315, 350)); - new GUIWire(submodelModifiable, andB00 .getPin("Y1"), andorB01.getPin("C1"), new Point(190, 330), new Point(190, 430), new Point(130, 430), new Point(130, 440)); - new GUIWire(submodelModifiable, andB00 .getPin("Y2"), andorB01.getPin("C2"), new Point(185, 340), new Point(185, 425), new Point(125, 425), new Point(125, 450)); - new GUIWire(submodelModifiable, andB00 .getPin("Y3"), andorB01.getPin("C3"), new Point(180, 350), new Point(180, 420), new Point(120, 420), new Point(120, 460)); - new GUIWire(submodelModifiable, andB00 .getPin("Y4"), andorB01.getPin("C4"), new Point(175, 360), new Point(175, 415), new Point(115, 415), new Point(115, 470)); - new GUIWire(submodelModifiable, andorB01.getPin("Y1"), andorB10.getPin("C1"), new Point(190, 440), new Point(190, 580), new Point(130, 580), new Point(130, 590)); - new GUIWire(submodelModifiable, andorB01.getPin("Y2"), andorB10.getPin("C2"), new Point(185, 450), new Point(185, 575), new Point(125, 575), new Point(125, 600)); - new GUIWire(submodelModifiable, andorB01.getPin("Y3"), andorB10.getPin("C3"), new Point(180, 460), new Point(180, 570), new Point(120, 570), new Point(120, 610)); - new GUIWire(submodelModifiable, andorB01.getPin("Y4"), andorB10.getPin("C4"), new Point(175, 470), new Point(175, 565), new Point(115, 565), new Point(115, 620)); - new GUIWire(submodelModifiable, andorB10.getPin("Y1"), andorB11.getPin("C1"), new Point(190, 590), new Point(190, 730), new Point(130, 730), new Point(130, 740)); - new GUIWire(submodelModifiable, andorB10.getPin("Y2"), andorB11.getPin("C2"), new Point(185, 600), new Point(185, 725), new Point(125, 725), new Point(125, 750)); - new GUIWire(submodelModifiable, andorB10.getPin("Y3"), andorB11.getPin("C3"), new Point(180, 610), new Point(180, 720), new Point(120, 720), new Point(120, 760)); - new GUIWire(submodelModifiable, andorB10.getPin("Y4"), andorB11.getPin("C4"), new Point(175, 620), new Point(175, 715), new Point(115, 715), new Point(115, 770)); - new GUIWire(submodelModifiable, andorB11.getPin("Y1"), QB1 , new Point(190, 740), new Point(190, 880), new Point(325, 880), new Point(325, 450)); - new GUIWire(submodelModifiable, andorB11.getPin("Y2"), QB2 , new Point(185, 750), new Point(185, 885), new Point(330, 885), new Point(330, 550)); - new GUIWire(submodelModifiable, andorB11.getPin("Y3"), QB3 , new Point(180, 760), new Point(180, 890), new Point(335, 890), new Point(335, 650)); - new GUIWire(submodelModifiable, andorB11.getPin("Y4"), QB4 , new Point(175, 770), new Point(175, 895), new Point(340, 895), new Point(340, 750)); - //@formatter:on - - addHighLevelStateSubcomponentID("c00", cell00); - addHighLevelStateSubcomponentID("c01", cell01); - addHighLevelStateSubcomponentID("c10", cell10); - addHighLevelStateSubcomponentID("c11", cell11); - addAtomicHighLevelStateID("q"); - } - - @Override - public void setAtomicHighLevelState(String stateID, Object newState) - { - switch (stateID) - { - case "q": - BitVector newStateCasted = (BitVector) newState; - setHighLevelState("c00.q", newStateCasted.subVector(0, 4)); - setHighLevelState("c01.q", newStateCasted.subVector(4, 8)); - setHighLevelState("c10.q", newStateCasted.subVector(8, 12)); - setHighLevelState("c11.q", newStateCasted.subVector(12, 16)); - break; - default: - // should not happen because we tell SubmodelComponent to only allow these state IDs. - throw new IllegalStateException("Illegal atomic state ID: " + stateID); - } - } - - @Override - public Object getAtomicHighLevelState(String stateID) - { - switch (stateID) - { - case "q": - BitVector q00 = (BitVector) getHighLevelState("c00.q"); - BitVector q01 = (BitVector) getHighLevelState("c01.q"); - BitVector q10 = (BitVector) getHighLevelState("c10.q"); - BitVector q11 = (BitVector) getHighLevelState("c11.q"); - return q00.concat(q01).concat(q10).concat(q11); - default: - // should not happen because we tell SubmodelComponent to only allow these state IDs. - throw new IllegalStateException("Illegal atomic state ID: " + stateID); - } - } - - static - { - IndirectGUIComponentCreator.setComponentProvider(GUIram2.class.getCanonicalName(), (m, p) -> new GUIram2(m)); - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIram4.java b/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIram4.java deleted file mode 100644 index 35d3df59..00000000 --- a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIram4.java +++ /dev/null @@ -1,366 +0,0 @@ -package net.mograsim.logic.ui.model.components.mi.nandbased; - -import net.haspamelodica.swt.helper.swtobjectwrappers.Point; -import net.mograsim.logic.core.types.BitVector; -import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.logic.ui.model.components.submodels.SimpleRectangularSubmodelComponent; -import net.mograsim.logic.ui.model.wires.GUIWire; -import net.mograsim.logic.ui.model.wires.Pin; -import net.mograsim.logic.ui.model.wires.WireCrossPoint; -import net.mograsim.logic.ui.serializing.IndirectGUIComponentCreator; - -public class GUIram4 extends SimpleRectangularSubmodelComponent -{ - public GUIram4(ViewModelModifiable model) - { - super(model, 1, "GUIram4"); - setSubmodelScale(.1); - setInputPins("A0", "A1", "A2", "A3", "B0", "B1", "B2", "B3", "WE", "D1", "D2", "D3", "D4"); - setOutputPins("QA1", "QA2", "QA3", "QA4", "QB1", "QB2", "QB3", "QB4"); - initSubmodelComponents(); - } - - @SuppressWarnings("unused") // for GUIWires being created - private void initSubmodelComponents() - { - //@formatter:off - Pin A0 = getSubmodelPin("A0"); - Pin A1 = getSubmodelPin("A1"); - Pin A2 = getSubmodelPin("A2"); - Pin A3 = getSubmodelPin("A3"); - Pin B0 = getSubmodelPin("B0"); - Pin B1 = getSubmodelPin("B1"); - Pin B2 = getSubmodelPin("B2"); - Pin B3 = getSubmodelPin("B3"); - Pin WE = getSubmodelPin("WE"); - Pin D1 = getSubmodelPin("D1"); - Pin D2 = getSubmodelPin("D2"); - Pin D3 = getSubmodelPin("D3"); - Pin D4 = getSubmodelPin("D4"); - Pin QA1 =getSubmodelPin("QA1"); - Pin QA2 =getSubmodelPin("QA2"); - Pin QA3 =getSubmodelPin("QA3"); - Pin QA4 =getSubmodelPin("QA4"); - Pin QB1 =getSubmodelPin("QB1"); - Pin QB2 =getSubmodelPin("QB2"); - Pin QB3 =getSubmodelPin("QB3"); - Pin QB4 =getSubmodelPin("QB4"); - - GUIdemux2 demuxA = new GUIdemux2 (submodelModifiable); - GUIdemux2 demuxB = new GUIdemux2 (submodelModifiable); - GUIand41 weAndB = new GUIand41 (submodelModifiable); - GUIram2 cell00 = new GUIram2 (submodelModifiable); - GUIram2 cell01 = new GUIram2 (submodelModifiable); - GUIram2 cell10 = new GUIram2 (submodelModifiable); - GUIram2 cell11 = new GUIram2 (submodelModifiable); - GUIand41 andB00 = new GUIand41 (submodelModifiable); - GUIandor414 andorB01 = new GUIandor414(submodelModifiable); - GUIandor414 andorB10 = new GUIandor414(submodelModifiable); - GUIandor414 andorB11 = new GUIandor414(submodelModifiable); - GUIand41 andA00 = new GUIand41 (submodelModifiable); - GUIandor414 andorA01 = new GUIandor414(submodelModifiable); - GUIandor414 andorA10 = new GUIandor414(submodelModifiable); - GUIandor414 andorA11 = new GUIandor414(submodelModifiable); - - WireCrossPoint cpB00 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpB01 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpB10 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpB11 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpD_101 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpD_201 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpD_301 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpD_401 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpD_110 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpD_210 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpD_310 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpD_410 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpD_111 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpD_211 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpD_311 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpD_411 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpAB101 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpAB201 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpAB301 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpAB401 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpAB110 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpAB210 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpAB310 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpAB410 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpAB1in = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpAB2in = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpAB3in = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpAB4in = new WireCrossPoint(submodelModifiable, 1); - - demuxA .moveTo( 55, 45); - demuxB .moveTo( 55, 150); - weAndB .moveTo(235, 150); - cell00 .moveTo( 80, 330); - cell01 .moveTo( 80, 480); - cell10 .moveTo( 80, 630); - cell11 .moveTo( 80, 780); - andB00 .moveTo(250, 375); - andorB01.moveTo(250, 485); - andorB10.moveTo(250, 635); - andorB11.moveTo(250, 785); - andA00 .moveTo(155, 325); - andorA01.moveTo(155, 435); - andorA10.moveTo(155, 585); - andorA11.moveTo(155, 735); - cpB00 .moveCenterTo(230, 155); - cpB01 .moveCenterTo(225, 165); - cpB10 .moveCenterTo(220, 175); - cpB11 .moveCenterTo(215, 185); - cpD_101.moveCenterTo( 60, 535); - cpD_201.moveCenterTo( 65, 545); - cpD_301.moveCenterTo( 70, 555); - cpD_401.moveCenterTo( 75, 565); - cpD_110.moveCenterTo( 60, 685); - cpD_210.moveCenterTo( 65, 695); - cpD_310.moveCenterTo( 70, 705); - cpD_410.moveCenterTo( 75, 715); - cpD_111.moveCenterTo( 60, 835); - cpD_211.moveCenterTo( 65, 845); - cpD_311.moveCenterTo( 70, 855); - cpD_411.moveCenterTo( 75, 865); - cpAB101.moveCenterTo( 40, 485); - cpAB201.moveCenterTo( 45, 495); - cpAB301.moveCenterTo( 50, 505); - cpAB401.moveCenterTo( 55, 515); - cpAB110.moveCenterTo( 40, 635); - cpAB210.moveCenterTo( 45, 645); - cpAB310.moveCenterTo( 50, 655); - cpAB410.moveCenterTo( 55, 665); - cpAB1in.moveCenterTo( 40, 335); - cpAB2in.moveCenterTo( 45, 350); - cpAB3in.moveCenterTo( 50, 650); - cpAB4in.moveCenterTo( 55, 750); - - new GUIWire(submodelModifiable, A0, demuxA.getPin("S0"), new Point[0]); - new GUIWire(submodelModifiable, A1, demuxA.getPin("S1"), new Point(10, 150), new Point(10, 60)); - new GUIWire(submodelModifiable, B0, demuxB.getPin("S0"), new Point( 5, 450), new Point( 5, 155)); - new GUIWire(submodelModifiable, B1, demuxB.getPin("S1"), new Point(10, 550), new Point(10, 165)); - new GUIWire(submodelModifiable, demuxB.getPin("Y00"), cpB00, new Point[0]); - new GUIWire(submodelModifiable, demuxB.getPin("Y01"), cpB01, new Point[0]); - new GUIWire(submodelModifiable, demuxB.getPin("Y10"), cpB10, new Point[0]); - new GUIWire(submodelModifiable, demuxB.getPin("Y11"), cpB11, new Point[0]); - new GUIWire(submodelModifiable, cpB00, weAndB.getPin("A1"), new Point[0]); - new GUIWire(submodelModifiable, cpB01, weAndB.getPin("A2"), new Point[0]); - new GUIWire(submodelModifiable, cpB10, weAndB.getPin("A3"), new Point[0]); - new GUIWire(submodelModifiable, cpB11, weAndB.getPin("A4"), new Point[0]); - new GUIWire(submodelModifiable, WE, weAndB.getPin("B"), new Point(15, 850), new Point(15, 195)); - new GUIWire(submodelModifiable, weAndB.getPin("Y1"), cell00.getPin("WE"), new Point(290, 155), new Point(290, 230), new Point(35, 230), new Point(35, 375)); - new GUIWire(submodelModifiable, weAndB.getPin("Y2"), cell01.getPin("WE"), new Point(285, 165), new Point(285, 225), new Point(30, 225), new Point(30, 525)); - new GUIWire(submodelModifiable, weAndB.getPin("Y3"), cell10.getPin("WE"), new Point(280, 175), new Point(280, 220), new Point(25, 220), new Point(25, 675)); - new GUIWire(submodelModifiable, weAndB.getPin("Y4"), cell11.getPin("WE"), new Point(275, 185), new Point(275, 215), new Point(20, 215), new Point(20, 825)); - new GUIWire(submodelModifiable, cpAB101, cpAB1in , new Point[0]); - new GUIWire(submodelModifiable, cpAB1in, cell00.getPin("A0"), new Point[0]); - new GUIWire(submodelModifiable, cpAB201, cpAB2in , new Point[0]); - new GUIWire(submodelModifiable, cpAB2in, cell00.getPin("A1"), new Point(45, 345)); - new GUIWire(submodelModifiable, cpAB301, cell00.getPin("B0"), new Point(50, 355)); - new GUIWire(submodelModifiable, cpAB401, cell00.getPin("B1"), new Point(55, 365)); - new GUIWire(submodelModifiable, cpAB101, cell01.getPin("A0"), new Point[0]); - new GUIWire(submodelModifiable, cpAB201, cell01.getPin("A1"), new Point[0]); - new GUIWire(submodelModifiable, cpAB301, cell01.getPin("B0"), new Point[0]); - new GUIWire(submodelModifiable, cpAB401, cell01.getPin("B1"), new Point[0]); - new GUIWire(submodelModifiable, cpAB101, cpAB110 , new Point[0]); - new GUIWire(submodelModifiable, cpAB201, cpAB210 , new Point[0]); - new GUIWire(submodelModifiable, cpAB301, cpAB3in , new Point[0]); - new GUIWire(submodelModifiable, B2 , cpAB3in , new Point[0]); - new GUIWire(submodelModifiable, cpAB3in, cpAB310 , new Point[0]); - new GUIWire(submodelModifiable, cpAB401, cpAB410 , new Point[0]); - new GUIWire(submodelModifiable, cpAB110, cell10.getPin("A0"), new Point[0]); - new GUIWire(submodelModifiable, cpAB210, cell10.getPin("A1"), new Point[0]); - new GUIWire(submodelModifiable, cpAB310, cell10.getPin("B0"), new Point[0]); - new GUIWire(submodelModifiable, cpAB410, cell10.getPin("B1"), new Point[0]); - new GUIWire(submodelModifiable, cpAB110, cell11.getPin("A0"), new Point(40, 785)); - new GUIWire(submodelModifiable, cpAB210, cell11.getPin("A1"), new Point(45, 795)); - new GUIWire(submodelModifiable, cpAB310, cell11.getPin("B0"), new Point(50, 805)); - new GUIWire(submodelModifiable, cpAB410, cpAB4in , new Point[0]); - new GUIWire(submodelModifiable, cpAB4in, cell11.getPin("B1"), new Point(55, 815)); - new GUIWire(submodelModifiable, A2, cpAB1in , new Point(40, 250)); - new GUIWire(submodelModifiable, A3, cpAB2in , new Point[0]); - new GUIWire(submodelModifiable, B3, cpAB4in , new Point[0]); - new GUIWire(submodelModifiable, cpD_101, cell00.getPin("D1"), new Point(60, 385)); - new GUIWire(submodelModifiable, cpD_201, cell00.getPin("D2"), new Point(65, 395)); - new GUIWire(submodelModifiable, cpD_301, cell00.getPin("D3"), new Point(70, 405)); - new GUIWire(submodelModifiable, cpD_401, cell00.getPin("D4"), new Point(75, 415)); - new GUIWire(submodelModifiable, cpD_101, cell01.getPin("D1"), new Point[0]); - new GUIWire(submodelModifiable, cpD_201, cell01.getPin("D2"), new Point[0]); - new GUIWire(submodelModifiable, cpD_301, cell01.getPin("D3"), new Point[0]); - new GUIWire(submodelModifiable, cpD_401, cell01.getPin("D4"), new Point[0]); - new GUIWire(submodelModifiable, cpD_101, cpD_110 , new Point[0]); - new GUIWire(submodelModifiable, cpD_201, cpD_210 , new Point[0]); - new GUIWire(submodelModifiable, cpD_301, cpD_310 , new Point[0]); - new GUIWire(submodelModifiable, cpD_401, cpD_410 , new Point[0]); - new GUIWire(submodelModifiable, cpD_110, cell10.getPin("D1"), new Point[0]); - new GUIWire(submodelModifiable, cpD_210, cell10.getPin("D2"), new Point[0]); - new GUIWire(submodelModifiable, cpD_310, cell10.getPin("D3"), new Point[0]); - new GUIWire(submodelModifiable, cpD_410, cell10.getPin("D4"), new Point[0]); - new GUIWire(submodelModifiable, cpD_110, cpD_111 , new Point[0]); - new GUIWire(submodelModifiable, cpD_210, cpD_211 , new Point[0]); - new GUIWire(submodelModifiable, cpD_310, cpD_311 , new Point[0]); - new GUIWire(submodelModifiable, cpD_410, cpD_411 , new Point[0]); - new GUIWire(submodelModifiable, cpD_111, cell11.getPin("D1"), new Point[0]); - new GUIWire(submodelModifiable, cpD_211, cell11.getPin("D2"), new Point[0]); - new GUIWire(submodelModifiable, cpD_311, cell11.getPin("D3"), new Point[0]); - new GUIWire(submodelModifiable, cpD_411, cell11.getPin("D4"), new Point[0]); - new GUIWire(submodelModifiable, D1, cpD_111 , new Point(60, 950)); - new GUIWire(submodelModifiable, D2, cpD_211 , new Point(65, 1050)); - new GUIWire(submodelModifiable, D3, cpD_311 , new Point(70, 1150)); - new GUIWire(submodelModifiable, D4, cpD_411 , new Point(75, 1250)); - new GUIWire(submodelModifiable, demuxA.getPin("Y00"), andA00 .getPin("B"), new Point(135, 50), new Point(135, 370)); - new GUIWire(submodelModifiable, demuxA.getPin("Y01"), andorA01.getPin("B"), new Point(130, 60), new Point(130, 520)); - new GUIWire(submodelModifiable, demuxA.getPin("Y10"), andorA10.getPin("B"), new Point(125, 70), new Point(125, 670)); - new GUIWire(submodelModifiable, demuxA.getPin("Y11"), andorA11.getPin("B"), new Point(120, 80), new Point(120, 820)); - new GUIWire(submodelModifiable, cpB00, andB00 .getPin("B"), new Point(230, 420)); - new GUIWire(submodelModifiable, cpB01, andorB01.getPin("B"), new Point(225, 570)); - new GUIWire(submodelModifiable, cpB10, andorB10.getPin("B"), new Point(220, 720)); - new GUIWire(submodelModifiable, cpB11, andorB11.getPin("B"), new Point(215, 870)); - new GUIWire(submodelModifiable, cell00.getPin("QB1"), andB00 .getPin("A1"), new Point(140, 375), new Point(140, 380)); - new GUIWire(submodelModifiable, cell00.getPin("QB2"), andB00 .getPin("A2"), new Point(140, 385), new Point(140, 390)); - new GUIWire(submodelModifiable, cell00.getPin("QB3"), andB00 .getPin("A3"), new Point(140, 395), new Point(140, 400)); - new GUIWire(submodelModifiable, cell00.getPin("QB4"), andB00 .getPin("A4"), new Point(140, 405), new Point(140, 410)); - new GUIWire(submodelModifiable, cell01.getPin("QB1"), andorB01.getPin("A1"), new Point(140, 525), new Point(140, 530)); - new GUIWire(submodelModifiable, cell01.getPin("QB2"), andorB01.getPin("A2"), new Point(140, 535), new Point(140, 540)); - new GUIWire(submodelModifiable, cell01.getPin("QB3"), andorB01.getPin("A3"), new Point(140, 545), new Point(140, 550)); - new GUIWire(submodelModifiable, cell01.getPin("QB4"), andorB01.getPin("A4"), new Point(140, 555), new Point(140, 560)); - new GUIWire(submodelModifiable, cell10.getPin("QB1"), andorB10.getPin("A1"), new Point(140, 675), new Point(140, 680)); - new GUIWire(submodelModifiable, cell10.getPin("QB2"), andorB10.getPin("A2"), new Point(140, 685), new Point(140, 690)); - new GUIWire(submodelModifiable, cell10.getPin("QB3"), andorB10.getPin("A3"), new Point(140, 695), new Point(140, 700)); - new GUIWire(submodelModifiable, cell10.getPin("QB4"), andorB10.getPin("A4"), new Point(140, 705), new Point(140, 710)); - new GUIWire(submodelModifiable, cell11.getPin("QB1"), andorB11.getPin("A1"), new Point(140, 825), new Point(140, 830)); - new GUIWire(submodelModifiable, cell11.getPin("QB2"), andorB11.getPin("A2"), new Point(140, 835), new Point(140, 840)); - new GUIWire(submodelModifiable, cell11.getPin("QB3"), andorB11.getPin("A3"), new Point(140, 845), new Point(140, 850)); - new GUIWire(submodelModifiable, cell11.getPin("QB4"), andorB11.getPin("A4"), new Point(140, 855), new Point(140, 860)); - new GUIWire(submodelModifiable, cell00.getPin("QA1"), andA00 .getPin("A1"), new Point(140, 335), new Point(140, 330)); - new GUIWire(submodelModifiable, cell00.getPin("QA2"), andA00 .getPin("A2"), new Point(140, 345), new Point(140, 340)); - new GUIWire(submodelModifiable, cell00.getPin("QA3"), andA00 .getPin("A3"), new Point(140, 355), new Point(140, 350)); - new GUIWire(submodelModifiable, cell00.getPin("QA4"), andA00 .getPin("A4"), new Point(140, 365), new Point(140, 360)); - new GUIWire(submodelModifiable, cell01.getPin("QA1"), andorA01.getPin("A1"), new Point(140, 485), new Point(140, 480)); - new GUIWire(submodelModifiable, cell01.getPin("QA2"), andorA01.getPin("A2"), new Point(140, 495), new Point(140, 490)); - new GUIWire(submodelModifiable, cell01.getPin("QA3"), andorA01.getPin("A3"), new Point(140, 505), new Point(140, 500)); - new GUIWire(submodelModifiable, cell01.getPin("QA4"), andorA01.getPin("A4"), new Point(140, 515), new Point(140, 510)); - new GUIWire(submodelModifiable, cell10.getPin("QA1"), andorA10.getPin("A1"), new Point(140, 635), new Point(140, 630)); - new GUIWire(submodelModifiable, cell10.getPin("QA2"), andorA10.getPin("A2"), new Point(140, 645), new Point(140, 640)); - new GUIWire(submodelModifiable, cell10.getPin("QA3"), andorA10.getPin("A3"), new Point(140, 655), new Point(140, 650)); - new GUIWire(submodelModifiable, cell10.getPin("QA4"), andorA10.getPin("A4"), new Point(140, 665), new Point(140, 660)); - new GUIWire(submodelModifiable, cell11.getPin("QA1"), andorA11.getPin("A1"), new Point(140, 785), new Point(140, 780)); - new GUIWire(submodelModifiable, cell11.getPin("QA2"), andorA11.getPin("A2"), new Point(140, 795), new Point(140, 790)); - new GUIWire(submodelModifiable, cell11.getPin("QA3"), andorA11.getPin("A3"), new Point(140, 805), new Point(140, 800)); - new GUIWire(submodelModifiable, cell11.getPin("QA4"), andorA11.getPin("A4"), new Point(140, 815), new Point(140, 810)); - new GUIWire(submodelModifiable, andB00 .getPin("Y1"), andorB01.getPin("C1"), new Point(305, 380), new Point(305, 445), new Point(245, 445), new Point(245, 490)); - new GUIWire(submodelModifiable, andB00 .getPin("Y2"), andorB01.getPin("C2"), new Point(300, 390), new Point(300, 440), new Point(240, 440), new Point(240, 500)); - new GUIWire(submodelModifiable, andB00 .getPin("Y3"), andorB01.getPin("C3"), new Point(295, 400), new Point(295, 435), new Point(235, 435), new Point(235, 510)); - new GUIWire(submodelModifiable, andB00 .getPin("Y4"), andorB01.getPin("C4"), new Point(290, 410), new Point(290, 430), new Point(230, 430), new Point(230, 520)); - new GUIWire(submodelModifiable, andorB01.getPin("Y1"), andorB10.getPin("C1"), new Point(305, 490), new Point(305, 595), new Point(245, 595), new Point(245, 640)); - new GUIWire(submodelModifiable, andorB01.getPin("Y2"), andorB10.getPin("C2"), new Point(300, 500), new Point(300, 590), new Point(240, 590), new Point(240, 650)); - new GUIWire(submodelModifiable, andorB01.getPin("Y3"), andorB10.getPin("C3"), new Point(295, 510), new Point(295, 585), new Point(235, 585), new Point(235, 660)); - new GUIWire(submodelModifiable, andorB01.getPin("Y4"), andorB10.getPin("C4"), new Point(290, 520), new Point(290, 580), new Point(230, 580), new Point(230, 670)); - new GUIWire(submodelModifiable, andorB10.getPin("Y1"), andorB11.getPin("C1"), new Point(305, 640), new Point(305, 745), new Point(245, 745), new Point(245, 790)); - new GUIWire(submodelModifiable, andorB10.getPin("Y2"), andorB11.getPin("C2"), new Point(300, 650), new Point(300, 740), new Point(240, 740), new Point(240, 800)); - new GUIWire(submodelModifiable, andorB10.getPin("Y3"), andorB11.getPin("C3"), new Point(295, 660), new Point(295, 735), new Point(235, 735), new Point(235, 810)); - new GUIWire(submodelModifiable, andorB10.getPin("Y4"), andorB11.getPin("C4"), new Point(290, 670), new Point(290, 730), new Point(230, 730), new Point(230, 820)); - new GUIWire(submodelModifiable, andorB11.getPin("Y1"), QB1 , new Point(330, 790), new Point(330, 450)); - new GUIWire(submodelModifiable, andorB11.getPin("Y2"), QB2 , new Point(335, 800), new Point(335, 550)); - new GUIWire(submodelModifiable, andorB11.getPin("Y3"), QB3 , new Point(340, 810), new Point(340, 650)); - new GUIWire(submodelModifiable, andorB11.getPin("Y4"), QB4 , new Point(345, 820), new Point(345, 750)); - new GUIWire(submodelModifiable, andA00 .getPin("Y1"), andorA01.getPin("C1"), new Point(210, 330), new Point(210, 430), new Point(150, 430), new Point(150, 440)); - new GUIWire(submodelModifiable, andA00 .getPin("Y2"), andorA01.getPin("C2"), new Point(205, 340), new Point(205, 425), new Point(145, 425), new Point(145, 450)); - new GUIWire(submodelModifiable, andA00 .getPin("Y3"), andorA01.getPin("C3"), new Point(200, 350), new Point(200, 420), new Point(140, 420), new Point(140, 460)); - new GUIWire(submodelModifiable, andA00 .getPin("Y4"), andorA01.getPin("C4"), new Point(195, 360), new Point(195, 415), new Point(135, 415), new Point(135, 470)); - new GUIWire(submodelModifiable, andorA01.getPin("Y1"), andorA10.getPin("C1"), new Point(210, 440), new Point(210, 580), new Point(150, 580), new Point(150, 590)); - new GUIWire(submodelModifiable, andorA01.getPin("Y2"), andorA10.getPin("C2"), new Point(205, 450), new Point(205, 575), new Point(145, 575), new Point(145, 600)); - new GUIWire(submodelModifiable, andorA01.getPin("Y3"), andorA10.getPin("C3"), new Point(200, 460), new Point(200, 570), new Point(140, 570), new Point(140, 610)); - new GUIWire(submodelModifiable, andorA01.getPin("Y4"), andorA10.getPin("C4"), new Point(195, 470), new Point(195, 565), new Point(135, 565), new Point(135, 620)); - new GUIWire(submodelModifiable, andorA10.getPin("Y1"), andorA11.getPin("C1"), new Point(210, 590), new Point(210, 730), new Point(150, 730), new Point(150, 740)); - new GUIWire(submodelModifiable, andorA10.getPin("Y2"), andorA11.getPin("C2"), new Point(205, 600), new Point(205, 725), new Point(145, 725), new Point(145, 750)); - new GUIWire(submodelModifiable, andorA10.getPin("Y3"), andorA11.getPin("C3"), new Point(200, 610), new Point(200, 720), new Point(140, 720), new Point(140, 760)); - new GUIWire(submodelModifiable, andorA10.getPin("Y4"), andorA11.getPin("C4"), new Point(195, 620), new Point(195, 715), new Point(135, 715), new Point(135, 770)); - new GUIWire(submodelModifiable, andorA11.getPin("Y1"), QA1 , new Point(210, 740), new Point(210, 880), new Point(310, 880), new Point(310, 50)); - new GUIWire(submodelModifiable, andorA11.getPin("Y2"), QA2 , new Point(205, 750), new Point(205, 885), new Point(315, 885), new Point(315, 150)); - new GUIWire(submodelModifiable, andorA11.getPin("Y3"), QA3 , new Point(200, 760), new Point(200, 890), new Point(320, 890), new Point(320, 250)); - new GUIWire(submodelModifiable, andorA11.getPin("Y4"), QA4 , new Point(195, 770), new Point(195, 895), new Point(325, 895), new Point(325, 350)); - //@formatter:on - - addHighLevelStateSubcomponentID("c00", cell00); - addHighLevelStateSubcomponentID("c01", cell01); - addHighLevelStateSubcomponentID("c10", cell10); - addHighLevelStateSubcomponentID("c11", cell11); - addAtomicHighLevelStateID("q"); - } - - @Override - public void setAtomicHighLevelState(String stateID, Object newState) - { - switch (stateID) - { - case "q": - BitVector newStateCasted = (BitVector) newState; - setHighLevelState("c00.q", newStateCasted.subVector(0, 16)); - setHighLevelState("c01.q", newStateCasted.subVector(16, 32)); - setHighLevelState("c10.q", newStateCasted.subVector(32, 48)); - setHighLevelState("c11.q", newStateCasted.subVector(48, 64)); - break; - default: - // should not happen because we tell SubmodelComponent to only allow these state IDs. - throw new IllegalStateException("Illegal atomic state ID: " + stateID); - } - } - - @Override - protected void setSubcomponentHighLevelState(String subcomponentID, String subcomponentHighLevelStateID, Object newState) - { - if (checkSubcomponentID(subcomponentID)) - setHighLevelState(translateDirectCellAccess(subcomponentID, subcomponentHighLevelStateID), newState); - else - super.setSubcomponentHighLevelState(subcomponentID, subcomponentHighLevelStateID, newState); - - } - - @Override - public Object getAtomicHighLevelState(String stateID) - { - switch (stateID) - { - case "q": - BitVector q00 = (BitVector) getHighLevelState("c00.q"); - BitVector q01 = (BitVector) getHighLevelState("c01.q"); - BitVector q10 = (BitVector) getHighLevelState("c10.q"); - BitVector q11 = (BitVector) getHighLevelState("c11.q"); - return q00.concat(q01).concat(q10).concat(q11); - default: - // should not happen because we tell SubmodelComponent to only allow these state IDs. - throw new IllegalStateException("Illegal atomic state ID: " + stateID); - } - } - - @Override - protected Object getSubcomponentHighLevelState(String subcomponentID, String subcomponentHighLevelStateID) - { - if (checkSubcomponentID(subcomponentID)) - return getHighLevelState(translateDirectCellAccess(subcomponentID, subcomponentHighLevelStateID)); - return super.getSubcomponentHighLevelState(subcomponentID, subcomponentHighLevelStateID); - } - - private static String translateDirectCellAccess(String subcomponentID, String subcomponentHighLevelStateID) - { - return 'c' + subcomponentID.substring(3, 5) + "." + subcomponentID.substring(0, 3) + '.' + subcomponentHighLevelStateID; - } - - private static boolean checkSubcomponentID(String subcomponentID) - { - if (subcomponentID.length() != 5 || subcomponentID.charAt(0) != 'c') - return false; - char addr3 = subcomponentID.charAt(1); - char addr2 = subcomponentID.charAt(2); - char addr1 = subcomponentID.charAt(3); - char addr0 = subcomponentID.charAt(4); - return (addr3 == '0' || addr3 == '1') || (addr2 == '0' || addr2 == '1') || (addr1 == '0' || addr1 == '1') - || (addr0 == '0' || addr0 == '1'); - } - - static - { - IndirectGUIComponentCreator.setComponentProvider(GUIram4.class.getCanonicalName(), (m, p) -> new GUIram4(m)); - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIsel2_4.java b/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIsel2_4.java deleted file mode 100644 index fadfd385..00000000 --- a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIsel2_4.java +++ /dev/null @@ -1,120 +0,0 @@ -package net.mograsim.logic.ui.model.components.mi.nandbased; - -import net.haspamelodica.swt.helper.swtobjectwrappers.Point; -import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.logic.ui.model.components.atomic.GUINandGate; -import net.mograsim.logic.ui.model.components.submodels.SimpleRectangularSubmodelComponent; -import net.mograsim.logic.ui.model.wires.GUIWire; -import net.mograsim.logic.ui.model.wires.Pin; -import net.mograsim.logic.ui.model.wires.WireCrossPoint; -import net.mograsim.logic.ui.serializing.IndirectGUIComponentCreator; - -public class GUIsel2_4 extends SimpleRectangularSubmodelComponent -{ - public GUIsel2_4(ViewModelModifiable model) - { - super(model, 1, "GUIsel2_4"); - setSubmodelScale(.4); - setInputPins("SA", "SB", "A1", "A2", "A3", "A4", "B1", "B2", "B3", "B4"); - setOutputPins("Y1", "Y2", "Y3", "Y4"); - initSubmodelComponents(); - } - - @SuppressWarnings("unused") // for GUIWires being created - private void initSubmodelComponents() - { - Pin SA = getSubmodelPin("SA"); - Pin SB = getSubmodelPin("SB"); - Pin A1 = getSubmodelPin("A1"); - Pin A2 = getSubmodelPin("A2"); - Pin A3 = getSubmodelPin("A3"); - Pin A4 = getSubmodelPin("A4"); - Pin B1 = getSubmodelPin("B1"); - Pin B2 = getSubmodelPin("B2"); - Pin B3 = getSubmodelPin("B3"); - Pin B4 = getSubmodelPin("B4"); - Pin Y1 = getSubmodelPin("Y1"); - Pin Y2 = getSubmodelPin("Y2"); - Pin Y3 = getSubmodelPin("Y3"); - Pin Y4 = getSubmodelPin("Y4"); - - GUINandGate nandA1 = new GUINandGate(submodelModifiable, 1); - GUINandGate nandA2 = new GUINandGate(submodelModifiable, 1); - GUINandGate nandA3 = new GUINandGate(submodelModifiable, 1); - GUINandGate nandA4 = new GUINandGate(submodelModifiable, 1); - GUINandGate nandB1 = new GUINandGate(submodelModifiable, 1); - GUINandGate nandB2 = new GUINandGate(submodelModifiable, 1); - GUINandGate nandB3 = new GUINandGate(submodelModifiable, 1); - GUINandGate nandB4 = new GUINandGate(submodelModifiable, 1); - GUINandGate nandY1 = new GUINandGate(submodelModifiable, 1); - GUINandGate nandY2 = new GUINandGate(submodelModifiable, 1); - GUINandGate nandY3 = new GUINandGate(submodelModifiable, 1); - GUINandGate nandY4 = new GUINandGate(submodelModifiable, 1); - - WireCrossPoint cpA1 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpA2 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpA3 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpB1 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpB2 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpB3 = new WireCrossPoint(submodelModifiable, 1); - - nandA1.moveTo(20, 2.5); - nandB1.moveTo(20, 27.5); - nandA2.moveTo(20, 52.5); - nandB2.moveTo(20, 77.5); - nandA3.moveTo(20, 102.5); - nandB3.moveTo(20, 127.5); - nandA4.moveTo(20, 152.5); - nandB4.moveTo(20, 177.5); - nandY1.moveTo(65, 2.5); - nandY2.moveTo(65, 27.5); - nandY3.moveTo(65, 52.5); - nandY4.moveTo(65, 77.5); - cpA1.moveCenterTo(7.5, 17.5); - cpB1.moveCenterTo(5, 42.5); - cpA2.moveCenterTo(7.5, 67.5); - cpB2.moveCenterTo(5, 92.5); - cpA3.moveCenterTo(7.5, 117.5); - cpB3.moveCenterTo(5, 142.5); - - new GUIWire(submodelModifiable, A1, nandA1.getPin("A"), new Point(15, 62.5), new Point(15, 7.5)); - new GUIWire(submodelModifiable, A2, nandA2.getPin("A"), new Point(17.5, 87.5), new Point(17.5, 57.5)); - new GUIWire(submodelModifiable, A3, nandA3.getPin("A"), new Point(17.5, 112.5), new Point(17.5, 107.5)); - new GUIWire(submodelModifiable, A4, nandA4.getPin("A"), new Point(17.5, 137.5), new Point(17.5, 157.5)); - new GUIWire(submodelModifiable, B1, nandB1.getPin("A"), new Point(10, 162.5), new Point(10, 32.5)); - new GUIWire(submodelModifiable, B2, nandB2.getPin("A"), new Point(12.5, 187.5), new Point(12.5, 82.5)); - new GUIWire(submodelModifiable, B3, nandB3.getPin("A"), new Point(15, 212.5), new Point(15, 132.5)); - new GUIWire(submodelModifiable, B4, nandB4.getPin("A"), new Point(10, 237.5), new Point(10, 182.5)); - new GUIWire(submodelModifiable, SA, cpA1); - new GUIWire(submodelModifiable, SB, cpB1); - new GUIWire(submodelModifiable, cpA1, cpA2); - new GUIWire(submodelModifiable, cpA1, nandA1.getPin("B")); - new GUIWire(submodelModifiable, cpA2, cpA3); - new GUIWire(submodelModifiable, cpA2, nandA2.getPin("B")); - new GUIWire(submodelModifiable, cpA3, nandA3.getPin("B")); - new GUIWire(submodelModifiable, cpA3, nandA4.getPin("B"), new Point(7.5, 167.5)); - new GUIWire(submodelModifiable, cpB1, cpB2); - new GUIWire(submodelModifiable, cpB1, nandB1.getPin("B")); - new GUIWire(submodelModifiable, cpB2, cpB3); - new GUIWire(submodelModifiable, cpB2, nandB2.getPin("B")); - new GUIWire(submodelModifiable, cpB3, nandB3.getPin("B")); - new GUIWire(submodelModifiable, cpB3, nandB4.getPin("B"), new Point(5, 192.5)); - new GUIWire(submodelModifiable, nandA1.getPin("Y"), nandY1.getPin("A"), new Point(42.5, 12.5), new Point(42.5, 7.5)); - new GUIWire(submodelModifiable, nandB1.getPin("Y"), nandY1.getPin("B"), new Point(45, 37.5), new Point(45, 17.5)); - new GUIWire(submodelModifiable, nandA2.getPin("Y"), nandY2.getPin("A"), new Point(47.5, 62.5), new Point(47.5, 32.5)); - new GUIWire(submodelModifiable, nandB2.getPin("Y"), nandY2.getPin("B"), new Point(50, 87.5), new Point(50, 42.5)); - new GUIWire(submodelModifiable, nandA3.getPin("Y"), nandY3.getPin("A"), new Point(52.5, 112.5), new Point(52.5, 57.5)); - new GUIWire(submodelModifiable, nandB3.getPin("Y"), nandY3.getPin("B"), new Point(55, 137.5), new Point(55, 67.5)); - new GUIWire(submodelModifiable, nandA4.getPin("Y"), nandY4.getPin("A"), new Point(57.5, 162.5), new Point(57.5, 82.5)); - new GUIWire(submodelModifiable, nandB4.getPin("Y"), nandY4.getPin("B"), new Point(60, 187.5), new Point(60, 92.5)); - new GUIWire(submodelModifiable, nandY1.getPin("Y"), Y1, new Point[0]); - new GUIWire(submodelModifiable, nandY2.getPin("Y"), Y2, new Point[0]); - new GUIWire(submodelModifiable, nandY3.getPin("Y"), Y3, new Point[0]); - new GUIWire(submodelModifiable, nandY4.getPin("Y"), Y4, new Point[0]); - } - - static - { - IndirectGUIComponentCreator.setComponentProvider(GUIsel2_4.class.getCanonicalName(), (m, p) -> new GUIsel2_4(m)); - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIsel3_4.java b/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIsel3_4.java deleted file mode 100644 index 83440eee..00000000 --- a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIsel3_4.java +++ /dev/null @@ -1,118 +0,0 @@ -package net.mograsim.logic.ui.model.components.mi.nandbased; - -import net.haspamelodica.swt.helper.swtobjectwrappers.Point; -import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.logic.ui.model.components.atomic.GUINandGate; -import net.mograsim.logic.ui.model.components.submodels.SimpleRectangularSubmodelComponent; -import net.mograsim.logic.ui.model.wires.GUIWire; -import net.mograsim.logic.ui.model.wires.Pin; -import net.mograsim.logic.ui.model.wires.WireCrossPoint; -import net.mograsim.logic.ui.serializing.IndirectGUIComponentCreator; - -public class GUIsel3_4 extends SimpleRectangularSubmodelComponent -{ - public GUIsel3_4(ViewModelModifiable model) - { - super(model, 1, "GUIsel3_4"); - setSubmodelScale(.2); - setInputPins("SA", "SB", "SC", "A1", "A2", "A3", "A4", "B1", "B2", "B3", "B4", "C1", "C2", "C3", "C4"); - setOutputPins("Y1", "Y2", "Y3", "Y4"); - initSubmodelComponents(); - } - - @SuppressWarnings("unused") // for GUIWires being created - private void initSubmodelComponents() - { - Pin SA = getSubmodelPin("SA"); - Pin SB = getSubmodelPin("SB"); - Pin SC = getSubmodelPin("SC"); - Pin A1 = getSubmodelPin("A1"); - Pin A2 = getSubmodelPin("A2"); - Pin A3 = getSubmodelPin("A3"); - Pin A4 = getSubmodelPin("A4"); - Pin B1 = getSubmodelPin("B1"); - Pin B2 = getSubmodelPin("B2"); - Pin B3 = getSubmodelPin("B3"); - Pin B4 = getSubmodelPin("B4"); - Pin C1 = getSubmodelPin("C1"); - Pin C2 = getSubmodelPin("C2"); - Pin C3 = getSubmodelPin("C3"); - Pin C4 = getSubmodelPin("C4"); - Pin Y1 = getSubmodelPin("Y1"); - Pin Y2 = getSubmodelPin("Y2"); - Pin Y3 = getSubmodelPin("Y3"); - Pin Y4 = getSubmodelPin("Y4"); - - GUIsel2_4 sel2_4 = new GUIsel2_4(submodelModifiable); - GUInot4 not4 = new GUInot4(submodelModifiable); - GUINandGate nandC1 = new GUINandGate(submodelModifiable, 1); - GUINandGate nandC2 = new GUINandGate(submodelModifiable, 1); - GUINandGate nandC3 = new GUINandGate(submodelModifiable, 1); - GUINandGate nandC4 = new GUINandGate(submodelModifiable, 1); - GUINandGate nandY1 = new GUINandGate(submodelModifiable, 1); - GUINandGate nandY2 = new GUINandGate(submodelModifiable, 1); - GUINandGate nandY3 = new GUINandGate(submodelModifiable, 1); - GUINandGate nandY4 = new GUINandGate(submodelModifiable, 1); - - WireCrossPoint cpSC1 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpSC2 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpSC3 = new WireCrossPoint(submodelModifiable, 1); - - sel2_4.moveTo(35, 250); - not4.moveTo(75, 250); - nandC1.moveTo(50, 570); - nandC2.moveTo(50, 620); - nandC3.moveTo(50, 670); - nandC4.moveTo(50, 720); - nandY1.moveTo(152.5, 15); - nandY2.moveTo(152.5, 65); - nandY3.moveTo(152.5, 115); - nandY4.moveTo(152.5, 165); - cpSC1.moveCenterTo(30, 585); - cpSC2.moveCenterTo(30, 635); - cpSC3.moveCenterTo(30, 685); - - new GUIWire(submodelModifiable, SA, sel2_4.getPin("SA"), new Point(25, 25), new Point(25, 255)); - new GUIWire(submodelModifiable, SB, sel2_4.getPin("SB"), new Point(20, 75), new Point(20, 265)); - new GUIWire(submodelModifiable, A1, sel2_4.getPin("A1"), new Point(15, 175), new Point(15, 275)); - new GUIWire(submodelModifiable, A2, sel2_4.getPin("A2"), new Point(10, 225), new Point(10, 285)); - new GUIWire(submodelModifiable, A3, sel2_4.getPin("A3"), new Point(5, 275), new Point(5, 295)); - new GUIWire(submodelModifiable, A4, sel2_4.getPin("A4"), new Point(5, 325), new Point(5, 305)); - new GUIWire(submodelModifiable, B1, sel2_4.getPin("B1"), new Point(10, 375), new Point(10, 315)); - new GUIWire(submodelModifiable, B2, sel2_4.getPin("B2"), new Point(15, 425), new Point(15, 325)); - new GUIWire(submodelModifiable, B3, sel2_4.getPin("B3"), new Point(20, 475), new Point(20, 335)); - new GUIWire(submodelModifiable, B4, sel2_4.getPin("B4"), new Point(25, 525), new Point(25, 345)); - new GUIWire(submodelModifiable, sel2_4.getPin("Y1"), not4.getPin("A1"), new Point[0]); - new GUIWire(submodelModifiable, sel2_4.getPin("Y2"), not4.getPin("A2"), new Point[0]); - new GUIWire(submodelModifiable, sel2_4.getPin("Y3"), not4.getPin("A3"), new Point[0]); - new GUIWire(submodelModifiable, sel2_4.getPin("Y4"), not4.getPin("A4"), new Point[0]); - new GUIWire(submodelModifiable, SC, cpSC1, new Point(30, 125)); - new GUIWire(submodelModifiable, cpSC1, nandC1.getPin("B"), new Point[0]); - new GUIWire(submodelModifiable, cpSC1, cpSC2, new Point(30, 125)); - new GUIWire(submodelModifiable, cpSC2, nandC2.getPin("B"), new Point[0]); - new GUIWire(submodelModifiable, cpSC2, cpSC3, new Point(30, 125)); - new GUIWire(submodelModifiable, cpSC3, nandC3.getPin("B"), new Point[0]); - new GUIWire(submodelModifiable, cpSC3, nandC4.getPin("B"), new Point(30, 735)); - new GUIWire(submodelModifiable, C1, nandC1.getPin("A"), new Point[0]); - new GUIWire(submodelModifiable, C2, nandC2.getPin("A"), new Point[0]); - new GUIWire(submodelModifiable, C3, nandC3.getPin("A"), new Point[0]); - new GUIWire(submodelModifiable, C4, nandC4.getPin("A"), new Point[0]); - new GUIWire(submodelModifiable, not4.getPin("Y1"), nandY1.getPin("A"), new Point(115, 255), new Point(115, 20)); - new GUIWire(submodelModifiable, not4.getPin("Y2"), nandY2.getPin("A"), new Point(120, 265), new Point(120, 70)); - new GUIWire(submodelModifiable, not4.getPin("Y3"), nandY3.getPin("A"), new Point(125, 275), new Point(125, 120)); - new GUIWire(submodelModifiable, not4.getPin("Y4"), nandY4.getPin("A"), new Point(130, 285), new Point(130, 170)); - new GUIWire(submodelModifiable, nandC1.getPin("Y"), nandY1.getPin("B"), new Point(135, 580), new Point(135, 30)); - new GUIWire(submodelModifiable, nandC2.getPin("Y"), nandY2.getPin("B"), new Point(140, 630), new Point(140, 80)); - new GUIWire(submodelModifiable, nandC3.getPin("Y"), nandY3.getPin("B"), new Point(145, 680), new Point(145, 130)); - new GUIWire(submodelModifiable, nandC4.getPin("Y"), nandY4.getPin("B"), new Point(150, 730), new Point(150, 180)); - new GUIWire(submodelModifiable, nandY1.getPin("Y"), Y1, new Point[0]); - new GUIWire(submodelModifiable, nandY2.getPin("Y"), Y2, new Point[0]); - new GUIWire(submodelModifiable, nandY3.getPin("Y"), Y3, new Point[0]); - new GUIWire(submodelModifiable, nandY4.getPin("Y"), Y4, new Point[0]); - } - - static - { - IndirectGUIComponentCreator.setComponentProvider(GUIsel3_4.class.getCanonicalName(), (m, p) -> new GUIsel3_4(m)); - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIxor.java b/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIxor.java deleted file mode 100644 index 537ed00e..00000000 --- a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIxor.java +++ /dev/null @@ -1,65 +0,0 @@ -package net.mograsim.logic.ui.model.components.mi.nandbased; - -import net.haspamelodica.swt.helper.swtobjectwrappers.Point; -import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.logic.ui.model.components.atomic.GUINandGate; -import net.mograsim.logic.ui.model.components.submodels.SimpleRectangularSubmodelComponent; -import net.mograsim.logic.ui.model.wires.GUIWire; -import net.mograsim.logic.ui.model.wires.Pin; -import net.mograsim.logic.ui.model.wires.WireCrossPoint; -import net.mograsim.logic.ui.serializing.IndirectGUIComponentCreator; - -public class GUIxor extends SimpleRectangularSubmodelComponent -{ - public GUIxor(ViewModelModifiable model) - { - super(model, 1, "GUIxor"); - setSubmodelScale(.4); - setInputPins("A", "B"); - setOutputPins("Y"); - initSubmodelComponents(); - } - - @SuppressWarnings("unused") // for GUIWires being created - private void initSubmodelComponents() - { - Pin A = getSubmodelPin("A"); - Pin B = getSubmodelPin("B"); - Pin Y = getSubmodelPin("Y"); - - GUINandGate nandAB = new GUINandGate(submodelModifiable, 1); - GUINandGate nandYA = new GUINandGate(submodelModifiable, 1); - GUINandGate nandYB = new GUINandGate(submodelModifiable, 1); - GUINandGate nandY = new GUINandGate(submodelModifiable, 1); - - WireCrossPoint cpA = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpB = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpAB = new WireCrossPoint(submodelModifiable, 1); - - nandAB.moveTo(7.5, 15); - nandYA.moveTo(35, 2.5); - nandYB.moveTo(35, 27.5); - nandY.moveTo(62.5, 15); - cpA.moveCenterTo(5, 12.5); - cpB.moveCenterTo(5, 37.5); - cpAB.moveCenterTo(30, 25); - - new GUIWire(submodelModifiable, A, cpA, new Point[0]); - new GUIWire(submodelModifiable, B, cpB, new Point[0]); - new GUIWire(submodelModifiable, cpA, nandAB.getPin("A"), new Point(5, 20)); - new GUIWire(submodelModifiable, cpB, nandAB.getPin("B"), new Point(5, 30)); - new GUIWire(submodelModifiable, nandAB.getPin("Y"), cpAB); - new GUIWire(submodelModifiable, cpAB, nandYA.getPin("B"), new Point(30, 17.5)); - new GUIWire(submodelModifiable, cpAB, nandYB.getPin("A"), new Point(30, 32.5)); - new GUIWire(submodelModifiable, cpA, nandYA.getPin("A"), new Point(5, 7.5)); - new GUIWire(submodelModifiable, cpB, nandYB.getPin("B"), new Point(5, 42.5)); - new GUIWire(submodelModifiable, nandYA.getPin("Y"), nandY.getPin("A")); - new GUIWire(submodelModifiable, nandYB.getPin("Y"), nandY.getPin("B")); - new GUIWire(submodelModifiable, nandY.getPin("Y"), Y); - } - - static - { - IndirectGUIComponentCreator.setComponentProvider(GUIxor.class.getCanonicalName(), (m, p) -> new GUIxor(m)); - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/am2901/GUIAm2901.java b/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/am2901/GUIAm2901.java deleted file mode 100644 index ec3cf86f..00000000 --- a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/am2901/GUIAm2901.java +++ /dev/null @@ -1,353 +0,0 @@ -package net.mograsim.logic.ui.model.components.mi.nandbased.am2901; - -import net.haspamelodica.swt.helper.swtobjectwrappers.Point; -import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.logic.ui.model.components.atomic.GUINandGate; -import net.mograsim.logic.ui.model.components.mi.nandbased.GUIand; -import net.mograsim.logic.ui.model.components.mi.nandbased.GUIdlatch4; -import net.mograsim.logic.ui.model.components.mi.nandbased.GUImux1_4; -import net.mograsim.logic.ui.model.components.mi.nandbased.GUIor4; -import net.mograsim.logic.ui.model.components.mi.nandbased.GUIram4; -import net.mograsim.logic.ui.model.components.mi.nandbased.GUIsel3_4; -import net.mograsim.logic.ui.model.components.submodels.SimpleRectangularSubmodelComponent; -import net.mograsim.logic.ui.model.wires.GUIWire; -import net.mograsim.logic.ui.model.wires.Pin; -import net.mograsim.logic.ui.model.wires.WireCrossPoint; -import net.mograsim.logic.ui.serializing.IndirectGUIComponentCreator; - -public class GUIAm2901 extends SimpleRectangularSubmodelComponent -{ - - public GUIAm2901(ViewModelModifiable model) - { - super(model, 1, "GUIAm2901"); - setSubmodelScale(.1); - setInputPins("I8", "I7", "I6", "I5", "I4", "I3", "I2", "I1", "I0", "C", "Cn", "D1", "D2", "D3", "D4", "A0", "A1", "A2", "A3", "B0", - "B1", "B2", "B3", "IRAMn", "IRAMn+3", "IQn", "IQn+3"); - setOutputPins("Y1", "Y2", "Y3", "Y4", "F=0", "Cn+4", "OVR", "F3", "ORAMn", "ORAMn+3", "OQn", "OQn+3"); - initSubmodelComponents(); - } - - @SuppressWarnings("unused") // for GUIWires being created - private void initSubmodelComponents() - { - Pin I8 = getSubmodelPin("I8"); - Pin I7 = getSubmodelPin("I7"); - Pin I6 = getSubmodelPin("I6"); - Pin I5 = getSubmodelPin("I5"); - Pin I4 = getSubmodelPin("I4"); - Pin I3 = getSubmodelPin("I3"); - Pin I2 = getSubmodelPin("I2"); - Pin I1 = getSubmodelPin("I1"); - Pin I0 = getSubmodelPin("I0"); - Pin C = getSubmodelPin("C"); - Pin Cn = getSubmodelPin("Cn"); - Pin D1 = getSubmodelPin("D1"); - Pin D2 = getSubmodelPin("D2"); - Pin D3 = getSubmodelPin("D3"); - Pin D4 = getSubmodelPin("D4"); - Pin A0 = getSubmodelPin("A0"); - Pin A1 = getSubmodelPin("A1"); - Pin A2 = getSubmodelPin("A2"); - Pin A3 = getSubmodelPin("A3"); - Pin B0 = getSubmodelPin("B0"); - Pin B1 = getSubmodelPin("B1"); - Pin B2 = getSubmodelPin("B2"); - Pin B3 = getSubmodelPin("B3"); - Pin IRAMn = getSubmodelPin("IRAMn"); - Pin IRAMnplus3 = getSubmodelPin("IRAMn+3"); - Pin IQn = getSubmodelPin("IQn"); - Pin IQnplus3 = getSubmodelPin("IQn+3"); - Pin Y1 = getSubmodelPin("Y1"); - Pin Y2 = getSubmodelPin("Y2"); - Pin Y3 = getSubmodelPin("Y3"); - Pin Y4 = getSubmodelPin("Y4"); - Pin Feq0 = getSubmodelPin("F=0"); - Pin Cnplus4 = getSubmodelPin("Cn+4"); - Pin OVR = getSubmodelPin("OVR"); - Pin F3 = getSubmodelPin("F3"); - Pin ORAMn = getSubmodelPin("ORAMn"); - Pin ORAMnplus3 = getSubmodelPin("ORAMn+3"); - Pin OQn = getSubmodelPin("OQn"); - Pin OQnplus3 = getSubmodelPin("OQn+3"); - - GUIAm2901DestDecode destDecode = new GUIAm2901DestDecode(submodelModifiable); - GUImux1_4 Ymux = new GUImux1_4(submodelModifiable); - GUIand ramweAnd = new GUIand(submodelModifiable); - GUINandGate notC = new GUINandGate(submodelModifiable, 1); - GUIAm2901ALUInclSourceDecodeInclFunctionDecode alu = new GUIAm2901ALUInclSourceDecodeInclFunctionDecode(submodelModifiable); - GUIor4 Fneq0 = new GUIor4(submodelModifiable); - GUINandGate notFneq0 = new GUINandGate(submodelModifiable, 1); - GUIram4 ram = new GUIram4(submodelModifiable); - GUIdlatch4 QAlatch = new GUIdlatch4(submodelModifiable); - GUIdlatch4 QBlatch = new GUIdlatch4(submodelModifiable); - GUIsel3_4 ramDsel = new GUIsel3_4(submodelModifiable); - GUIsel3_4 qregDsel = new GUIsel3_4(submodelModifiable); - GUIAm2901QReg qreg = new GUIAm2901QReg(submodelModifiable); - - WireCrossPoint cpC1 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpC2 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpC3 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpC4 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpLSH = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpNSH = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpRSH = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpQA1 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpQA2 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpQA3 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpQA4 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpQ1 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpQ2 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpQ3 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpQ4 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpOQn = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpOQnplus3 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpQ2Rsh = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpQ3Rsh = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpORAMn = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpORAMnplus3 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpF3 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpF11 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpF21 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpF31 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpF41 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpF12 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpF22 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpF32 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpF42 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpF1Lsh = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpF2Lsh = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpF3Lsh = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpF2Rsh = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpF3Rsh = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpF4Rsh = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpF13 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpF23 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpF33 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpF43 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpFneq0 = new WireCrossPoint(submodelModifiable, 1); - - destDecode.moveTo(15, 45); - Ymux.moveTo(275, 135); - ramweAnd.moveTo(190, 65); - notC.moveTo(160, 75); - alu.moveTo(240, 2110); - Fneq0.moveTo(275, 445); - notFneq0.moveTo(320, 440); - ram.moveTo(95, 2220); - QAlatch.moveTo(160, 2220); - QBlatch.moveTo(160, 2275); - ramDsel.moveTo(45, 2310); - qregDsel.moveTo(45, 2510); - qreg.moveTo(90, 2490); - cpC1.moveCenterTo(155, 950); - cpC2.moveCenterTo(155, 90); - cpC3.moveCenterTo(155, 2265); - cpC4.moveCenterTo(155, 2320); - cpLSH.moveCenterTo(40, 2315); - cpNSH.moveCenterTo(35, 2325); - cpRSH.moveCenterTo(30, 2335); - cpQA1.moveCenterTo(220, 2225); - cpQA2.moveCenterTo(225, 2235); - cpQA3.moveCenterTo(230, 2245); - cpQA4.moveCenterTo(235, 2255); - cpQ1.moveCenterTo(130, 2495); - cpQ2.moveCenterTo(135, 2505); - cpQ3.moveCenterTo(140, 2515); - cpQ4.moveCenterTo(145, 2525); - cpOQn.moveCenterTo(220, 2495); - cpOQnplus3.moveCenterTo(235, 2525); - cpQ2Rsh.moveCenterTo(35, 2625); - cpQ3Rsh.moveCenterTo(40, 2635); - cpORAMn.moveCenterTo(280, 2115); - cpORAMnplus3.moveCenterTo(295, 2145); - cpF3.moveCenterTo(330, 950); - cpF11.moveCenterTo(255, 2090); - cpF21.moveCenterTo(260, 2095); - cpF31.moveCenterTo(265, 2100); - cpF41.moveCenterTo(270, 2105); - cpF12.moveCenterTo(255, 450); - cpF22.moveCenterTo(260, 460); - cpF32.moveCenterTo(265, 470); - cpF42.moveCenterTo(270, 480); - cpF1Lsh.moveCenterTo(10, 2355); - cpF2Lsh.moveCenterTo(15, 2365); - cpF3Lsh.moveCenterTo(20, 2375); - cpF2Rsh.moveCenterTo(15, 2395); - cpF3Rsh.moveCenterTo(20, 2405); - cpF4Rsh.moveCenterTo(25, 2415); - cpF13.moveCenterTo(10, 2385); - cpF23.moveCenterTo(15, 2425); - cpF33.moveCenterTo(20, 2435); - cpF43.moveCenterTo(25, 2445); - cpFneq0.moveCenterTo(315, 450); - - new GUIWire(submodelModifiable, I8, destDecode.getPin("I8"), new Point[0]); - new GUIWire(submodelModifiable, I7, destDecode.getPin("I7"), new Point(5, 150), new Point(5, 60)); - new GUIWire(submodelModifiable, I6, destDecode.getPin("I6"), new Point(10, 250), new Point(10, 70)); - new GUIWire(submodelModifiable, I5, alu.getPin("I5"), new Point(130, 350), new Point(130, 2115)); - new GUIWire(submodelModifiable, I4, alu.getPin("I4"), new Point(125, 450), new Point(125, 2125)); - new GUIWire(submodelModifiable, I3, alu.getPin("I3"), new Point(120, 550), new Point(120, 2135)); - new GUIWire(submodelModifiable, I2, alu.getPin("I2"), new Point(115, 650), new Point(115, 2145)); - new GUIWire(submodelModifiable, I1, alu.getPin("I1"), new Point(110, 750), new Point(110, 2155)); - new GUIWire(submodelModifiable, I0, alu.getPin("I0"), new Point(105, 850), new Point(105, 2165)); - new GUIWire(submodelModifiable, C, cpC1, new Point[0]); - new GUIWire(submodelModifiable, cpC1, cpC2, new Point[0]); - new GUIWire(submodelModifiable, cpC2, notC.getPin("A"), new Point(155, 80)); - new GUIWire(submodelModifiable, cpC2, notC.getPin("B"), new Point[0]); - new GUIWire(submodelModifiable, cpC1, cpC3, new Point[0]); - new GUIWire(submodelModifiable, cpC3, QAlatch.getPin("C"), new Point[0]); - new GUIWire(submodelModifiable, cpC3, cpC4, new Point[0]); - new GUIWire(submodelModifiable, cpC4, QBlatch.getPin("C"), new Point[0]); - new GUIWire(submodelModifiable, cpC4, qreg.getPin("C"), new Point(155, 2485), new Point(80, 2485), new Point(80, 2495)); - new GUIWire(submodelModifiable, destDecode.getPin("LSH"), cpLSH, new Point(55, 90), new Point(55, 125), new Point(40, 125)); - new GUIWire(submodelModifiable, destDecode.getPin("NSH"), cpNSH, new Point(60, 50), new Point(60, 120), new Point(35, 120)); - new GUIWire(submodelModifiable, destDecode.getPin("RSH"), cpRSH, new Point(65, 60), new Point(65, 115), new Point(30, 115)); - new GUIWire(submodelModifiable, cpLSH, ramDsel.getPin("SA"), new Point[0]); - new GUIWire(submodelModifiable, cpNSH, ramDsel.getPin("SB"), new Point[0]); - new GUIWire(submodelModifiable, cpRSH, ramDsel.getPin("SC"), new Point[0]); - new GUIWire(submodelModifiable, cpLSH, qregDsel.getPin("SA"), new Point(40, 2515)); - new GUIWire(submodelModifiable, cpNSH, qregDsel.getPin("SB"), new Point(35, 2525)); - new GUIWire(submodelModifiable, cpRSH, qregDsel.getPin("SC"), new Point(30, 2535)); - new GUIWire(submodelModifiable, A0, ram.getPin("A0"), new Point(80, 1550), new Point(80, 2225)); - new GUIWire(submodelModifiable, A1, ram.getPin("A1"), new Point(75, 1650), new Point(75, 2235)); - new GUIWire(submodelModifiable, A2, ram.getPin("A2"), new Point(70, 1750), new Point(70, 2245)); - new GUIWire(submodelModifiable, A3, ram.getPin("A3"), new Point(65, 1850), new Point(65, 2255)); - new GUIWire(submodelModifiable, B0, ram.getPin("B0"), new Point(60, 1950), new Point(60, 2265)); - new GUIWire(submodelModifiable, B1, ram.getPin("B1"), new Point(55, 2050), new Point(55, 2275)); - new GUIWire(submodelModifiable, B2, ram.getPin("B2"), new Point(50, 2150), new Point(50, 2285)); - new GUIWire(submodelModifiable, B3, ram.getPin("B3"), new Point(45, 2250), new Point(45, 2295)); - new GUIWire(submodelModifiable, ram.getPin("QA1"), QAlatch.getPin("D1"), new Point[0]); - new GUIWire(submodelModifiable, ram.getPin("QA2"), QAlatch.getPin("D2"), new Point[0]); - new GUIWire(submodelModifiable, ram.getPin("QA3"), QAlatch.getPin("D3"), new Point[0]); - new GUIWire(submodelModifiable, ram.getPin("QA4"), QAlatch.getPin("D4"), new Point[0]); - new GUIWire(submodelModifiable, ram.getPin("QB1"), QBlatch.getPin("D1"), new Point(150, 2265), new Point(150, 2280)); - new GUIWire(submodelModifiable, ram.getPin("QB2"), QBlatch.getPin("D2"), new Point(145, 2275), new Point(145, 2290)); - new GUIWire(submodelModifiable, ram.getPin("QB3"), QBlatch.getPin("D3"), new Point(140, 2285), new Point(140, 2300)); - new GUIWire(submodelModifiable, ram.getPin("QB4"), QBlatch.getPin("D4"), new Point(135, 2295), new Point(135, 2310)); - new GUIWire(submodelModifiable, Cn, alu.getPin("Cn"), new Point(100, 1050), new Point(100, 2175)); - new GUIWire(submodelModifiable, D1, alu.getPin("D1"), new Point(180, 1150), new Point(180, 2185)); - new GUIWire(submodelModifiable, D2, alu.getPin("D2"), new Point(175, 1250), new Point(175, 2195)); - new GUIWire(submodelModifiable, D3, alu.getPin("D3"), new Point(170, 1350), new Point(170, 2205)); - new GUIWire(submodelModifiable, D4, alu.getPin("D4"), new Point(165, 1450), new Point(165, 2215)); - new GUIWire(submodelModifiable, QAlatch.getPin("Q1"), cpQA1, new Point[0]); - new GUIWire(submodelModifiable, QAlatch.getPin("Q2"), cpQA2, new Point[0]); - new GUIWire(submodelModifiable, QAlatch.getPin("Q3"), cpQA3, new Point[0]); - new GUIWire(submodelModifiable, QAlatch.getPin("Q4"), cpQA4, new Point[0]); - new GUIWire(submodelModifiable, cpQA1, Ymux.getPin("I0_1"), new Point(220, 150)); - new GUIWire(submodelModifiable, cpQA2, Ymux.getPin("I0_2"), new Point(225, 160)); - new GUIWire(submodelModifiable, cpQA3, Ymux.getPin("I0_3"), new Point(230, 170)); - new GUIWire(submodelModifiable, cpQA4, Ymux.getPin("I0_4"), new Point(235, 180)); - new GUIWire(submodelModifiable, cpQA1, alu.getPin("A1"), new Point[0]); - new GUIWire(submodelModifiable, cpQA2, alu.getPin("A2"), new Point[0]); - new GUIWire(submodelModifiable, cpQA3, alu.getPin("A3"), new Point[0]); - new GUIWire(submodelModifiable, cpQA4, alu.getPin("A4"), new Point[0]); - new GUIWire(submodelModifiable, QBlatch.getPin("Q1"), alu.getPin("B1"), new Point(200, 2280), new Point(200, 2265)); - new GUIWire(submodelModifiable, QBlatch.getPin("Q2"), alu.getPin("B2"), new Point(205, 2290), new Point(205, 2275)); - new GUIWire(submodelModifiable, QBlatch.getPin("Q3"), alu.getPin("B3"), new Point(210, 2300), new Point(210, 2285)); - new GUIWire(submodelModifiable, QBlatch.getPin("Q4"), alu.getPin("B4"), new Point(215, 2310), new Point(215, 2295)); - new GUIWire(submodelModifiable, qreg.getPin("Q1"), cpQ1, new Point[0]); - new GUIWire(submodelModifiable, qreg.getPin("Q2"), cpQ2, new Point[0]); - new GUIWire(submodelModifiable, qreg.getPin("Q3"), cpQ3, new Point[0]); - new GUIWire(submodelModifiable, qreg.getPin("Q4"), cpQ4, new Point[0]); - new GUIWire(submodelModifiable, cpQ1, cpOQn, new Point[0]); - new GUIWire(submodelModifiable, cpOQn, OQn, new Point(335, 2495), new Point(335, 1050)); - new GUIWire(submodelModifiable, cpQ4, cpOQnplus3, new Point[0]); - new GUIWire(submodelModifiable, cpOQnplus3, OQnplus3, new Point(340, 2525), new Point(340, 1150)); - new GUIWire(submodelModifiable, cpQ2, cpQ2Rsh, new Point(135, 2670), new Point(30, 2670), new Point(30, 2635), new Point(35, 2635)); - new GUIWire(submodelModifiable, cpQ3, cpQ3Rsh, new Point(140, 2675), new Point(35, 2675), new Point(35, 2640), new Point(40, 2640)); - new GUIWire(submodelModifiable, cpQ2Rsh, qregDsel.getPin("C1"), new Point[0]); - new GUIWire(submodelModifiable, cpQ3Rsh, qregDsel.getPin("C2"), new Point[0]); - new GUIWire(submodelModifiable, cpQ4, qregDsel.getPin("C3"), new Point(145, 2680), new Point(40, 2680), new Point(40, 2645)); - new GUIWire(submodelModifiable, IQnplus3, qregDsel.getPin("C4"), new Point(5, 2650), new Point(5, 2655)); - new GUIWire(submodelModifiable, IQn, qregDsel.getPin("A1"), new Point(5, 2550), new Point(5, 2545)); - new GUIWire(submodelModifiable, cpQ1, qregDsel.getPin("A2"), new Point(130, 2665), new Point(25, 2665), new Point(25, 2630), - new Point(30, 2630), new Point(30, 2555)); - new GUIWire(submodelModifiable, cpOQn, alu.getPin("Q1"), new Point(220, 2305)); - new GUIWire(submodelModifiable, cpQ2, alu.getPin("Q2"), new Point(225, 2505), new Point(225, 2315)); - new GUIWire(submodelModifiable, cpQ3, alu.getPin("Q3"), new Point(230, 2515), new Point(230, 2325)); - new GUIWire(submodelModifiable, cpOQnplus3, alu.getPin("Q4"), new Point(235, 2335)); - new GUIWire(submodelModifiable, cpQ2Rsh, qregDsel.getPin("A3"), new Point(35, 2565)); - new GUIWire(submodelModifiable, cpQ3Rsh, qregDsel.getPin("A4"), new Point(40, 2575)); - new GUIWire(submodelModifiable, qregDsel.getPin("Y1"), qreg.getPin("D1"), new Point[0]); - new GUIWire(submodelModifiable, qregDsel.getPin("Y2"), qreg.getPin("D2"), new Point[0]); - new GUIWire(submodelModifiable, qregDsel.getPin("Y3"), qreg.getPin("D3"), new Point[0]); - new GUIWire(submodelModifiable, qregDsel.getPin("Y4"), qreg.getPin("D4"), new Point[0]); - new GUIWire(submodelModifiable, alu.getPin("Cn+4"), Cnplus4, new Point(315, 2155), new Point(315, 550)); - new GUIWire(submodelModifiable, alu.getPin("OVR"), OVR, new Point(320, 2165), new Point(320, 650)); - new GUIWire(submodelModifiable, alu.getPin("F1"), cpORAMn, new Point[0]); - new GUIWire(submodelModifiable, alu.getPin("F4"), cpORAMnplus3, new Point[0]); - new GUIWire(submodelModifiable, cpORAMn, ORAMn, new Point(325, 2115), new Point(325, 850)); - new GUIWire(submodelModifiable, cpORAMnplus3, cpF3, new Point(330, 2145)); - new GUIWire(submodelModifiable, cpF3, ORAMnplus3, new Point[0]); - new GUIWire(submodelModifiable, cpF3, F3, new Point(330, 750)); - new GUIWire(submodelModifiable, cpORAMn, cpF11, new Point(280, 2090)); - new GUIWire(submodelModifiable, alu.getPin("F2"), cpF21, new Point(285, 2125), new Point(285, 2095)); - new GUIWire(submodelModifiable, alu.getPin("F3"), cpF31, new Point(290, 2135), new Point(290, 2100)); - new GUIWire(submodelModifiable, cpORAMnplus3, cpF41, new Point(295, 2105)); - new GUIWire(submodelModifiable, cpF11, cpF12, new Point[0]); - new GUIWire(submodelModifiable, cpF21, cpF22, new Point[0]); - new GUIWire(submodelModifiable, cpF31, cpF32, new Point[0]); - new GUIWire(submodelModifiable, cpF41, cpF42, new Point[0]); - new GUIWire(submodelModifiable, cpF12, Fneq0.getPin("A1"), new Point[0]); - new GUIWire(submodelModifiable, cpF22, Fneq0.getPin("A2"), new Point[0]); - new GUIWire(submodelModifiable, cpF32, Fneq0.getPin("A3"), new Point[0]); - new GUIWire(submodelModifiable, cpF42, Fneq0.getPin("A4"), new Point[0]); - new GUIWire(submodelModifiable, cpF12, Ymux.getPin("I1_1"), new Point(255, 190)); - new GUIWire(submodelModifiable, cpF22, Ymux.getPin("I1_2"), new Point(260, 200)); - new GUIWire(submodelModifiable, cpF32, Ymux.getPin("I1_3"), new Point(265, 210)); - new GUIWire(submodelModifiable, cpF42, Ymux.getPin("I1_4"), new Point(270, 220)); - new GUIWire(submodelModifiable, cpF11, cpF1Lsh, new Point(10, 2090)); - new GUIWire(submodelModifiable, cpF21, cpF2Lsh, new Point(15, 2095)); - new GUIWire(submodelModifiable, cpF31, cpF3Lsh, new Point(20, 2100)); - new GUIWire(submodelModifiable, IRAMn, ramDsel.getPin("A1"), new Point(5, 2350), new Point(5, 2345)); - new GUIWire(submodelModifiable, cpF1Lsh, ramDsel.getPin("A2"), new Point[0]); - new GUIWire(submodelModifiable, cpF2Lsh, ramDsel.getPin("A3"), new Point[0]); - new GUIWire(submodelModifiable, cpF3Lsh, ramDsel.getPin("A4"), new Point[0]); - new GUIWire(submodelModifiable, cpF2Lsh, cpF2Rsh, new Point[0]); - new GUIWire(submodelModifiable, cpF3Lsh, cpF3Rsh, new Point[0]); - new GUIWire(submodelModifiable, cpF41, cpF4Rsh, new Point(25, 2105)); - new GUIWire(submodelModifiable, cpF1Lsh, cpF13, new Point[0]); - new GUIWire(submodelModifiable, cpF13, ramDsel.getPin("B1"), new Point[0]); - new GUIWire(submodelModifiable, cpF2Rsh, ramDsel.getPin("B2"), new Point[0]); - new GUIWire(submodelModifiable, cpF3Rsh, ramDsel.getPin("B3"), new Point[0]); - new GUIWire(submodelModifiable, cpF4Rsh, ramDsel.getPin("B4"), new Point[0]); - new GUIWire(submodelModifiable, cpF2Rsh, cpF23, new Point[0]); - new GUIWire(submodelModifiable, cpF3Rsh, cpF33, new Point[0]); - new GUIWire(submodelModifiable, cpF4Rsh, cpF43, new Point[0]); - new GUIWire(submodelModifiable, cpF23, ramDsel.getPin("C1"), new Point[0]); - new GUIWire(submodelModifiable, cpF33, ramDsel.getPin("C2"), new Point[0]); - new GUIWire(submodelModifiable, cpF43, ramDsel.getPin("C3"), new Point[0]); - new GUIWire(submodelModifiable, IRAMnplus3, ramDsel.getPin("C4"), new Point(5, 2450), new Point(5, 2455)); - new GUIWire(submodelModifiable, cpF13, qregDsel.getPin("B1"), new Point(10, 2585)); - new GUIWire(submodelModifiable, cpF23, qregDsel.getPin("B2"), new Point(15, 2595)); - new GUIWire(submodelModifiable, cpF33, qregDsel.getPin("B3"), new Point(20, 2605)); - new GUIWire(submodelModifiable, cpF43, qregDsel.getPin("B4"), new Point(25, 2615)); - new GUIWire(submodelModifiable, ramDsel.getPin("Y1"), ram.getPin("D1"), new Point[0]); - new GUIWire(submodelModifiable, ramDsel.getPin("Y2"), ram.getPin("D2"), new Point[0]); - new GUIWire(submodelModifiable, ramDsel.getPin("Y3"), ram.getPin("D3"), new Point[0]); - new GUIWire(submodelModifiable, ramDsel.getPin("Y4"), ram.getPin("D4"), new Point[0]); - new GUIWire(submodelModifiable, destDecode.getPin("RAMWE"), ramweAnd.getPin("A"), new Point[0]); - new GUIWire(submodelModifiable, notC.getPin("Y"), ramweAnd.getPin("B")); - new GUIWire(submodelModifiable, ramweAnd.getPin("Y"), ram.getPin("WE"), new Point(230, 70), new Point(230, 105), new Point(90, 105), - new Point(90, 2305)); - new GUIWire(submodelModifiable, destDecode.getPin("QWE"), qreg.getPin("WE"), new Point(85, 100), new Point(85, 2505)); - new GUIWire(submodelModifiable, destDecode.getPin("YF"), Ymux.getPin("S0"), new Point(70, 80), new Point(70, 140)); - new GUIWire(submodelModifiable, Ymux.getPin("Y1"), Y1, new Point(335, 140), new Point(335, 50)); - new GUIWire(submodelModifiable, Ymux.getPin("Y2"), Y2, new Point[0]); - new GUIWire(submodelModifiable, Ymux.getPin("Y3"), Y3, new Point(335, 160), new Point(335, 250)); - new GUIWire(submodelModifiable, Ymux.getPin("Y4"), Y4, new Point(325, 170), new Point(325, 350)); - new GUIWire(submodelModifiable, Fneq0.getPin("Y"), cpFneq0, new Point[0]); - new GUIWire(submodelModifiable, cpFneq0, notFneq0.getPin("A"), new Point(315, 445)); - new GUIWire(submodelModifiable, cpFneq0, notFneq0.getPin("B"), new Point(315, 455)); - new GUIWire(submodelModifiable, notFneq0.getPin("Y"), Feq0, new Point[0]); - - addHighLevelStateSubcomponentID("regs", ram); - addHighLevelStateSubcomponentID("qreg", qreg); - } - - static - { - IndirectGUIComponentCreator.setComponentProvider(GUIAm2901.class.getCanonicalName(), (m, p) -> new GUIAm2901(m)); - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/am2901/GUIAm2901ALUFuncDecode.java b/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/am2901/GUIAm2901ALUFuncDecode.java deleted file mode 100644 index f08898ff..00000000 --- a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/am2901/GUIAm2901ALUFuncDecode.java +++ /dev/null @@ -1,116 +0,0 @@ -package net.mograsim.logic.ui.model.components.mi.nandbased.am2901; - -import net.haspamelodica.swt.helper.swtobjectwrappers.Point; -import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.logic.ui.model.components.atomic.GUINandGate; -import net.mograsim.logic.ui.model.components.mi.nandbased.GUIand; -import net.mograsim.logic.ui.model.components.mi.nandbased.GUInand3; -import net.mograsim.logic.ui.model.components.submodels.SimpleRectangularSubmodelComponent; -import net.mograsim.logic.ui.model.wires.GUIWire; -import net.mograsim.logic.ui.model.wires.Pin; -import net.mograsim.logic.ui.model.wires.WireCrossPoint; -import net.mograsim.logic.ui.serializing.IndirectGUIComponentCreator; - -public class GUIAm2901ALUFuncDecode extends SimpleRectangularSubmodelComponent -{ - public GUIAm2901ALUFuncDecode(ViewModelModifiable model) - { - super(model, 1, "GUIAm2901ALUFuncDecode"); - setSubmodelScale(.25); - setInputPins("I5", "I4", "I3"); - setOutputPins("CinE", "L", "SN", "SBE", "FN", "RN"); - initSubmodelComponents(); - } - - @SuppressWarnings("unused") // for GUIWires being created - private void initSubmodelComponents() - { - Pin I5 = getSubmodelPin("I5"); - Pin I4 = getSubmodelPin("I4"); - Pin I3 = getSubmodelPin("I3"); - Pin CinE = getSubmodelPin("CinE"); - Pin L = getSubmodelPin("L"); - Pin SN = getSubmodelPin("SN"); - Pin SBE = getSubmodelPin("SBE"); - Pin FN = getSubmodelPin("FN"); - Pin RN = getSubmodelPin("RN"); - - GUINandGate notI5 = new GUINandGate(submodelModifiable, 1); - GUINandGate notI4 = new GUINandGate(submodelModifiable, 1); - GUInand3 nandI4I3NotI5 = new GUInand3(submodelModifiable); - GUINandGate nandI5NotI4 = new GUINandGate(submodelModifiable, 1); - GUINandGate nandI3I4 = new GUINandGate(submodelModifiable, 1); - GUINandGate nandL = new GUINandGate(submodelModifiable, 1); - GUIand andSBE = new GUIand(submodelModifiable); - - WireCrossPoint cpI51 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpI52 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpI53 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpI41 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpI42 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpI43 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpI44 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpI31 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpI32 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpNotI51 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpNotI52 = new WireCrossPoint(submodelModifiable, 1); - - notI5.moveTo(15, 10); - notI4.moveTo(15, 50); - nandI4I3NotI5.moveTo(55, 10); - nandI5NotI4.moveTo(55, 45); - nandI3I4.moveTo(55, 70); - nandL.moveTo(100, 50); - andSBE.moveTo(100, 135); - cpI51.moveCenterTo(5, 20); - cpI52.moveCenterTo(5, 25); - cpI53.moveCenterTo(5, 45); - cpI41.moveCenterTo(10, 60); - cpI42.moveCenterTo(10, 55); - cpI43.moveCenterTo(10, 65); - cpI44.moveCenterTo(10, 85); - cpI31.moveCenterTo(50, 100); - cpI32.moveCenterTo(50, 75); - cpNotI51.moveCenterTo(40, 20); - cpNotI52.moveCenterTo(40, 35); - - new GUIWire(submodelModifiable, I5, cpI51, new Point[0]); - new GUIWire(submodelModifiable, cpI51, notI5.getPin("A"), new Point(5, 15)); - new GUIWire(submodelModifiable, cpI51, cpI52, new Point[0]); - new GUIWire(submodelModifiable, cpI52, notI5.getPin("B"), new Point[0]); - new GUIWire(submodelModifiable, cpI52, cpI53, new Point[0]); - new GUIWire(submodelModifiable, cpI53, nandI5NotI4.getPin("A"), new Point(45, 45), new Point(45, 50)); - new GUIWire(submodelModifiable, cpI53, FN, new Point(5, 180)); - new GUIWire(submodelModifiable, I4, cpI41, new Point[0]); - new GUIWire(submodelModifiable, cpI41, cpI42, new Point[0]); - new GUIWire(submodelModifiable, cpI42, nandI4I3NotI5.getPin("A"), new Point(10, 40), new Point(45, 40), new Point(45, 15)); - new GUIWire(submodelModifiable, cpI42, notI4.getPin("A"), new Point[0]); - new GUIWire(submodelModifiable, cpI41, cpI43, new Point[0]); - new GUIWire(submodelModifiable, cpI43, notI4.getPin("B"), new Point[0]); - new GUIWire(submodelModifiable, cpI43, cpI44, new Point[0]); - new GUIWire(submodelModifiable, cpI44, nandI3I4.getPin("B"), new Point[0]); - new GUIWire(submodelModifiable, cpI44, SN, new Point(10, 105), new Point(135, 105), new Point(135, 100)); - new GUIWire(submodelModifiable, I3, cpI31, new Point(50, 100)); - new GUIWire(submodelModifiable, cpI31, RN, new Point(50, 220)); - new GUIWire(submodelModifiable, cpI31, cpI32, new Point[0]); - new GUIWire(submodelModifiable, cpI32, nandI4I3NotI5.getPin("B"), new Point(50, 25)); - new GUIWire(submodelModifiable, cpI32, nandI3I4.getPin("A"), new Point[0]); - new GUIWire(submodelModifiable, notI5.getPin("Y"), cpNotI51, new Point[0]); - new GUIWire(submodelModifiable, cpNotI51, CinE, new Point(40, 5), new Point(115, 5), new Point(115, 20)); - new GUIWire(submodelModifiable, cpNotI51, cpNotI52, new Point[0]); - new GUIWire(submodelModifiable, cpNotI52, nandI4I3NotI5.getPin("C"), new Point[0]); - new GUIWire(submodelModifiable, cpNotI52, andSBE.getPin("B"), new Point(40, 150)); - new GUIWire(submodelModifiable, notI4.getPin("Y"), nandI5NotI4.getPin("B"), new Point[0]); - new GUIWire(submodelModifiable, nandI4I3NotI5.getPin("Y"), nandL.getPin("A")); - new GUIWire(submodelModifiable, nandI5NotI4.getPin("Y"), nandL.getPin("B")); - new GUIWire(submodelModifiable, nandI3I4.getPin("Y"), andSBE.getPin("A")); - new GUIWire(submodelModifiable, nandL.getPin("Y"), L, new Point[0]); - new GUIWire(submodelModifiable, andSBE.getPin("Y"), SBE, new Point[0]); - } - - static - { - IndirectGUIComponentCreator.setComponentProvider(GUIAm2901ALUFuncDecode.class.getCanonicalName(), - (m, p) -> new GUIAm2901ALUFuncDecode(m)); - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/am2901/GUIAm2901ALUInclDecode.java b/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/am2901/GUIAm2901ALUInclDecode.java deleted file mode 100644 index 79bbba6e..00000000 --- a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/am2901/GUIAm2901ALUInclDecode.java +++ /dev/null @@ -1,176 +0,0 @@ -package net.mograsim.logic.ui.model.components.mi.nandbased.am2901; - -import net.haspamelodica.swt.helper.swtobjectwrappers.Point; -import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.logic.ui.model.components.mi.nandbased.GUIxor; -import net.mograsim.logic.ui.model.components.submodels.SimpleRectangularSubmodelComponent; -import net.mograsim.logic.ui.model.wires.GUIWire; -import net.mograsim.logic.ui.model.wires.Pin; -import net.mograsim.logic.ui.model.wires.WireCrossPoint; -import net.mograsim.logic.ui.serializing.IndirectGUIComponentCreator; - -public class GUIAm2901ALUInclDecode extends SimpleRectangularSubmodelComponent -{ - public GUIAm2901ALUInclDecode(ViewModelModifiable model) - { - super(model, 1, "GUIAm2901ALUInclDecode"); - setSubmodelScale(.25); - setInputPins("I5", "I4", "I3", "Cn", "R1", "R2", "R3", "R4", "S1", "S2", "S3", "S4"); - setOutputPins("F1", "F2", "F3", "F4", "Cn+4", "OVR"); - initSubmodelComponents(); - } - - @SuppressWarnings("unused") // for GUIWires being created - private void initSubmodelComponents() - { - Pin I5 = getSubmodelPin("I5"); - Pin I4 = getSubmodelPin("I4"); - Pin I3 = getSubmodelPin("I3"); - Pin Cn = getSubmodelPin("Cn"); - Pin R1 = getSubmodelPin("R1"); - Pin R2 = getSubmodelPin("R2"); - Pin R3 = getSubmodelPin("R3"); - Pin R4 = getSubmodelPin("R4"); - Pin S1 = getSubmodelPin("S1"); - Pin S2 = getSubmodelPin("S2"); - Pin S3 = getSubmodelPin("S3"); - Pin S4 = getSubmodelPin("S4"); - Pin F1 = getSubmodelPin("F1"); - Pin F2 = getSubmodelPin("F2"); - Pin F3 = getSubmodelPin("F3"); - Pin F4 = getSubmodelPin("F4"); - Pin Cnplus4 = getSubmodelPin("Cn+4"); - Pin OVR = getSubmodelPin("OVR"); - - GUIAm2901ALUFuncDecode funcDecode = new GUIAm2901ALUFuncDecode(submodelModifiable); - GUIAm2901ALUOneBit alu1 = new GUIAm2901ALUOneBit(submodelModifiable); - GUIAm2901ALUOneBit alu2 = new GUIAm2901ALUOneBit(submodelModifiable); - GUIAm2901ALUOneBit alu3 = new GUIAm2901ALUOneBit(submodelModifiable); - GUIAm2901ALUOneBit alu4 = new GUIAm2901ALUOneBit(submodelModifiable); - GUIxor xorOVR = new GUIxor(submodelModifiable); - - WireCrossPoint cpCoutE1 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpCoutE2 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpCoutE3 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpCinE1 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpCinE2 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpCinE3 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpRN1 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpRN2 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpRN3 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpSN1 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpSN2 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpSN3 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpFN1 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpFN2 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpFN3 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpL1 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpL2 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpL3 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpCnplus3 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpCnplus4 = new WireCrossPoint(submodelModifiable, 1); - - funcDecode.moveTo(20, 2.5); - alu1.moveTo(45, 80); - alu2.moveTo(45, 180); - alu3.moveTo(45, 280); - alu4.moveTo(45, 380); - xorOVR.moveTo(95, 400); - cpCoutE1.moveCenterTo(25, 95); - cpCoutE2.moveCenterTo(25, 195); - cpCoutE3.moveCenterTo(25, 295); - cpCinE1.moveCenterTo(27.5, 105); - cpCinE2.moveCenterTo(27.5, 205); - cpCinE3.moveCenterTo(27.5, 305); - cpRN1.moveCenterTo(30, 125); - cpRN2.moveCenterTo(30, 225); - cpRN3.moveCenterTo(30, 325); - cpSN1.moveCenterTo(32.5, 145); - cpSN2.moveCenterTo(32.5, 245); - cpSN3.moveCenterTo(32.5, 345); - cpFN1.moveCenterTo(35, 155); - cpFN2.moveCenterTo(35, 255); - cpFN3.moveCenterTo(35, 355); - cpL1.moveCenterTo(37.5, 165); - cpL2.moveCenterTo(37.5, 265); - cpL3.moveCenterTo(37.5, 365); - cpCnplus3.moveCenterTo(85, 375); - cpCnplus4.moveCenterTo(85, 385); - - new GUIWire(submodelModifiable, I5, funcDecode.getPin("I5"), new Point(5, 20), new Point(5, 7.5)); - new GUIWire(submodelModifiable, I4, funcDecode.getPin("I4"), new Point(10, 60), new Point(10, 17.5)); - new GUIWire(submodelModifiable, I3, funcDecode.getPin("I3"), new Point(15, 100), new Point(15, 27.5)); - new GUIWire(submodelModifiable, funcDecode.getPin("SBE"), cpCoutE1, new Point(62.5, 37.5), new Point(62.5, 70), new Point(25, 70)); - new GUIWire(submodelModifiable, cpCoutE1, cpCoutE2, new Point[0]); - new GUIWire(submodelModifiable, cpCoutE2, cpCoutE3, new Point[0]); - new GUIWire(submodelModifiable, cpCoutE1, alu1.getPin("CoutE"), new Point[0]); - new GUIWire(submodelModifiable, cpCoutE2, alu2.getPin("CoutE"), new Point[0]); - new GUIWire(submodelModifiable, cpCoutE3, alu3.getPin("CoutE"), new Point[0]); - new GUIWire(submodelModifiable, cpCoutE3, alu4.getPin("CoutE"), new Point(25, 395)); - new GUIWire(submodelModifiable, funcDecode.getPin("CinE"), cpCinE1, new Point(70, 7.5), new Point(70, 77.5), new Point(27.5, 77.5)); - new GUIWire(submodelModifiable, cpCinE1, cpCinE2, new Point[0]); - new GUIWire(submodelModifiable, cpCinE2, cpCinE3, new Point[0]); - new GUIWire(submodelModifiable, cpCinE1, alu1.getPin("CinE"), new Point[0]); - new GUIWire(submodelModifiable, cpCinE2, alu2.getPin("CinE"), new Point[0]); - new GUIWire(submodelModifiable, cpCinE3, alu3.getPin("CinE"), new Point[0]); - new GUIWire(submodelModifiable, cpCinE3, alu4.getPin("CinE"), new Point(27.5, 405)); - new GUIWire(submodelModifiable, funcDecode.getPin("RN"), cpRN1, new Point(57.5, 57.5), new Point(57.5, 65), new Point(30, 65)); - new GUIWire(submodelModifiable, cpRN1, cpRN2, new Point[0]); - new GUIWire(submodelModifiable, cpRN2, cpRN3, new Point[0]); - new GUIWire(submodelModifiable, cpRN1, alu1.getPin("RN"), new Point[0]); - new GUIWire(submodelModifiable, cpRN2, alu2.getPin("RN"), new Point[0]); - new GUIWire(submodelModifiable, cpRN3, alu3.getPin("RN"), new Point[0]); - new GUIWire(submodelModifiable, cpRN3, alu4.getPin("RN"), new Point(30, 425)); - new GUIWire(submodelModifiable, funcDecode.getPin("SN"), cpSN1, new Point(65, 27.5), new Point(65, 72.5), new Point(32.5, 72.5)); - new GUIWire(submodelModifiable, cpSN1, cpSN2, new Point[0]); - new GUIWire(submodelModifiable, cpSN2, cpSN3, new Point[0]); - new GUIWire(submodelModifiable, cpSN1, alu1.getPin("SN"), new Point[0]); - new GUIWire(submodelModifiable, cpSN2, alu2.getPin("SN"), new Point[0]); - new GUIWire(submodelModifiable, cpSN3, alu3.getPin("SN"), new Point[0]); - new GUIWire(submodelModifiable, cpSN3, alu4.getPin("SN"), new Point(32.5, 445)); - new GUIWire(submodelModifiable, funcDecode.getPin("FN"), cpFN1, new Point(60, 47.5), new Point(60, 67.5), new Point(35, 67.5)); - new GUIWire(submodelModifiable, cpFN1, cpFN2, new Point[0]); - new GUIWire(submodelModifiable, cpFN2, cpFN3, new Point[0]); - new GUIWire(submodelModifiable, cpFN1, alu1.getPin("FN"), new Point[0]); - new GUIWire(submodelModifiable, cpFN2, alu2.getPin("FN"), new Point[0]); - new GUIWire(submodelModifiable, cpFN3, alu3.getPin("FN"), new Point[0]); - new GUIWire(submodelModifiable, cpFN3, alu4.getPin("FN"), new Point(35, 455)); - new GUIWire(submodelModifiable, funcDecode.getPin("L"), cpL1, new Point(67.5, 17.5), new Point(67.5, 75), new Point(37.5, 75)); - new GUIWire(submodelModifiable, cpL1, cpL2, new Point[0]); - new GUIWire(submodelModifiable, cpL2, cpL3, new Point[0]); - new GUIWire(submodelModifiable, cpL1, alu1.getPin("L"), new Point[0]); - new GUIWire(submodelModifiable, cpL2, alu2.getPin("L"), new Point[0]); - new GUIWire(submodelModifiable, cpL3, alu3.getPin("L"), new Point[0]); - new GUIWire(submodelModifiable, cpL3, alu4.getPin("L"), new Point(37.5, 465)); - new GUIWire(submodelModifiable, R1, alu1.getPin("R"), new Point(10, 180), new Point(10, 115)); - new GUIWire(submodelModifiable, R2, alu2.getPin("R"), new Point(10, 220), new Point(10, 215)); - new GUIWire(submodelModifiable, R3, alu3.getPin("R"), new Point(10, 260), new Point(10, 315)); - new GUIWire(submodelModifiable, R4, alu4.getPin("R"), new Point(20, 300), new Point(20, 415)); - new GUIWire(submodelModifiable, S1, alu1.getPin("S"), new Point(15, 340), new Point(15, 135)); - new GUIWire(submodelModifiable, S2, alu2.getPin("S"), new Point(5, 380), new Point(5, 235)); - new GUIWire(submodelModifiable, S3, alu3.getPin("S"), new Point(10, 420), new Point(10, 335)); - new GUIWire(submodelModifiable, S4, alu4.getPin("S"), new Point(10, 460), new Point(10, 435)); - new GUIWire(submodelModifiable, Cn, alu1.getPin("Cin"), new Point(5, 140), new Point(5, 85)); - new GUIWire(submodelModifiable, alu1.getPin("Cout"), alu2.getPin("Cin"), new Point(85, 85), new Point(85, 175), new Point(40, 175), - new Point(40, 185)); - new GUIWire(submodelModifiable, alu2.getPin("Cout"), alu3.getPin("Cin"), new Point(85, 185), new Point(85, 275), new Point(40, 275), - new Point(40, 285)); - new GUIWire(submodelModifiable, alu3.getPin("Cout"), cpCnplus3, new Point(85, 285)); - new GUIWire(submodelModifiable, cpCnplus3, alu4.getPin("Cin"), new Point(40, 375), new Point(40, 385)); - new GUIWire(submodelModifiable, alu4.getPin("Cout"), cpCnplus4, new Point[0]); - new GUIWire(submodelModifiable, alu1.getPin("F"), F1, new Point(90, 95), new Point(90, 20)); - new GUIWire(submodelModifiable, alu2.getPin("F"), F2, new Point(95, 195), new Point(95, 60)); - new GUIWire(submodelModifiable, alu3.getPin("F"), F3, new Point(100, 295), new Point(100, 100)); - new GUIWire(submodelModifiable, alu4.getPin("F"), F4, new Point(105, 395), new Point(105, 140)); - new GUIWire(submodelModifiable, cpCnplus3, xorOVR.getPin("A"), new Point(90, 375), new Point(90, 405)); - new GUIWire(submodelModifiable, cpCnplus4, xorOVR.getPin("B"), new Point(85, 415)); - new GUIWire(submodelModifiable, cpCnplus4, Cnplus4, new Point(130, 385), new Point(130, 180)); - new GUIWire(submodelModifiable, xorOVR.getPin("Y"), OVR); - } - - static - { - IndirectGUIComponentCreator.setComponentProvider(GUIAm2901ALUInclDecode.class.getCanonicalName(), - (m, p) -> new GUIAm2901ALUInclDecode(m)); - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/am2901/GUIAm2901ALUInclSourceDecodeInclFunctionDecode.java b/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/am2901/GUIAm2901ALUInclSourceDecodeInclFunctionDecode.java deleted file mode 100644 index 784e200e..00000000 --- a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/am2901/GUIAm2901ALUInclSourceDecodeInclFunctionDecode.java +++ /dev/null @@ -1,147 +0,0 @@ -package net.mograsim.logic.ui.model.components.mi.nandbased.am2901; - -import net.haspamelodica.swt.helper.swtobjectwrappers.Point; -import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.logic.ui.model.components.mi.nandbased.GUIsel2_4; -import net.mograsim.logic.ui.model.components.mi.nandbased.GUIsel3_4; -import net.mograsim.logic.ui.model.components.submodels.SimpleRectangularSubmodelComponent; -import net.mograsim.logic.ui.model.wires.GUIWire; -import net.mograsim.logic.ui.model.wires.Pin; -import net.mograsim.logic.ui.model.wires.WireCrossPoint; -import net.mograsim.logic.ui.serializing.IndirectGUIComponentCreator; - -public class GUIAm2901ALUInclSourceDecodeInclFunctionDecode extends SimpleRectangularSubmodelComponent -{ - public GUIAm2901ALUInclSourceDecodeInclFunctionDecode(ViewModelModifiable model) - { - super(model, 1, "GUIAm2901ALUInclSourceDecodeInclFunctionDecode"); - setSubmodelScale(.25); - setInputPins("I5", "I4", "I3", "I2", "I1", "I0", "Cn", "D1", "D2", "D3", "D4", "A1", "A2", "A3", "A4", "B1", "B2", "B3", "B4", "Q1", - "Q2", "Q3", "Q4"); - setOutputPins("F1", "F2", "F3", "F4", "Cn+4", "OVR"); - initSubmodelComponents(); - } - - @SuppressWarnings("unused") // for GUIWires being created - private void initSubmodelComponents() - { - Pin I5 = getSubmodelPin("I5"); - Pin I4 = getSubmodelPin("I4"); - Pin I3 = getSubmodelPin("I3"); - Pin I2 = getSubmodelPin("I2"); - Pin I1 = getSubmodelPin("I1"); - Pin I0 = getSubmodelPin("I0"); - Pin Cn = getSubmodelPin("Cn"); - Pin D1 = getSubmodelPin("D1"); - Pin D2 = getSubmodelPin("D2"); - Pin D3 = getSubmodelPin("D3"); - Pin D4 = getSubmodelPin("D4"); - Pin A1 = getSubmodelPin("A1"); - Pin A2 = getSubmodelPin("A2"); - Pin A3 = getSubmodelPin("A3"); - Pin A4 = getSubmodelPin("A4"); - Pin B1 = getSubmodelPin("B1"); - Pin B2 = getSubmodelPin("B2"); - Pin B3 = getSubmodelPin("B3"); - Pin B4 = getSubmodelPin("B4"); - Pin Q1 = getSubmodelPin("Q1"); - Pin Q2 = getSubmodelPin("Q2"); - Pin Q3 = getSubmodelPin("Q3"); - Pin Q4 = getSubmodelPin("Q4"); - Pin F1 = getSubmodelPin("F1"); - Pin F2 = getSubmodelPin("F2"); - Pin F3 = getSubmodelPin("F3"); - Pin F4 = getSubmodelPin("F4"); - Pin Cnplus4 = getSubmodelPin("Cn+4"); - Pin OVR = getSubmodelPin("OVR"); - - GUIAm2901SourceDecode sourceDecode = new GUIAm2901SourceDecode(submodelModifiable); - GUIsel2_4 selR = new GUIsel2_4(submodelModifiable); - GUIsel3_4 selS = new GUIsel3_4(submodelModifiable); - GUIAm2901ALUInclDecode alu = new GUIAm2901ALUInclDecode(submodelModifiable); - - WireCrossPoint cpA1 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpA2 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpA3 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpA4 = new WireCrossPoint(submodelModifiable, 1); - - sourceDecode.moveTo(15, 165); - selR.moveTo(45, 365); - selS.moveTo(45, 575); - alu.moveTo(60, 15); - cpA1.moveCenterTo(10, 460); - cpA2.moveCenterTo(15, 500); - cpA3.moveCenterTo(20, 540); - cpA4.moveCenterTo(25, 580); - - new GUIWire(submodelModifiable, I5, alu.getPin("I5"), new Point[0]); - new GUIWire(submodelModifiable, I4, alu.getPin("I4"), new Point(5, 60), new Point(5, 30)); - new GUIWire(submodelModifiable, I3, alu.getPin("I3"), new Point(15, 100), new Point(15, 40)); - new GUIWire(submodelModifiable, I2, sourceDecode.getPin("I2"), new Point(5, 140), new Point(5, 170)); - new GUIWire(submodelModifiable, I1, sourceDecode.getPin("I1"), new Point[0]); - new GUIWire(submodelModifiable, I0, sourceDecode.getPin("I0"), new Point(5, 220), new Point(5, 190)); - new GUIWire(submodelModifiable, Cn, alu.getPin("Cn"), new Point(10, 260), new Point(10, 50)); - new GUIWire(submodelModifiable, D1, selR.getPin("A1"), new Point(15, 300), new Point(15, 390)); - new GUIWire(submodelModifiable, D2, selR.getPin("A2"), new Point(10, 340), new Point(10, 400)); - new GUIWire(submodelModifiable, D3, selR.getPin("A3"), new Point(5, 380), new Point(5, 410)); - new GUIWire(submodelModifiable, D4, selR.getPin("A4"), new Point[0]); - new GUIWire(submodelModifiable, A1, cpA1, new Point[0]); - new GUIWire(submodelModifiable, A2, cpA2, new Point[0]); - new GUIWire(submodelModifiable, A3, cpA3, new Point[0]); - new GUIWire(submodelModifiable, A4, cpA4, new Point[0]); - new GUIWire(submodelModifiable, cpA1, selR.getPin("B1"), new Point(10, 430)); - new GUIWire(submodelModifiable, cpA2, selR.getPin("B2"), new Point(15, 440)); - new GUIWire(submodelModifiable, cpA3, selR.getPin("B3"), new Point(20, 450)); - new GUIWire(submodelModifiable, cpA4, selR.getPin("B4"), new Point(25, 460)); - new GUIWire(submodelModifiable, cpA1, selS.getPin("A1"), new Point(10, 610)); - new GUIWire(submodelModifiable, cpA2, selS.getPin("A2"), new Point(15, 620)); - new GUIWire(submodelModifiable, cpA3, selS.getPin("A3"), new Point(20, 630)); - new GUIWire(submodelModifiable, cpA4, selS.getPin("A4"), new Point(25, 640)); - new GUIWire(submodelModifiable, B1, selS.getPin("B1"), new Point(5, 620), new Point(5, 650)); - new GUIWire(submodelModifiable, B2, selS.getPin("B2"), new Point[0]); - new GUIWire(submodelModifiable, B3, selS.getPin("B3"), new Point(5, 700), new Point(5, 670)); - new GUIWire(submodelModifiable, B4, selS.getPin("B4"), new Point(10, 740), new Point(10, 680)); - new GUIWire(submodelModifiable, Q1, selS.getPin("C1"), new Point(15, 780), new Point(15, 690)); - new GUIWire(submodelModifiable, Q2, selS.getPin("C2"), new Point(20, 820), new Point(20, 700)); - new GUIWire(submodelModifiable, Q3, selS.getPin("C3"), new Point(25, 860), new Point(25, 710)); - new GUIWire(submodelModifiable, Q4, selS.getPin("C4"), new Point(30, 900), new Point(30, 720)); - new GUIWire(submodelModifiable, sourceDecode.getPin("SQ"), selS.getPin("SC"), new Point(75, 170), new Point(75, 240), - new Point(30, 240), new Point(30, 600)); - new GUIWire(submodelModifiable, sourceDecode.getPin("RA"), selR.getPin("SB"), new Point(70, 180), new Point(70, 235), - new Point(20, 235), new Point(20, 380)); - new GUIWire(submodelModifiable, sourceDecode.getPin("SB"), selS.getPin("SB"), new Point(65, 190), new Point(65, 230), - new Point(35, 230), new Point(35, 590)); - new GUIWire(submodelModifiable, sourceDecode.getPin("SA"), selS.getPin("SA"), new Point(60, 200), new Point(60, 225), - new Point(40, 225), new Point(40, 580)); - new GUIWire(submodelModifiable, sourceDecode.getPin("RD"), selR.getPin("SA"), new Point(55, 210), new Point(55, 220), - new Point(25, 220), new Point(25, 370)); - new GUIWire(submodelModifiable, selR.getPin("Y1"), alu.getPin("R1"), new Point(82.5, 370), new Point(82.5, 162.5), - new Point(20, 162.5), new Point(20, 60)); - new GUIWire(submodelModifiable, selR.getPin("Y2"), alu.getPin("R2"), new Point(85, 380), new Point(85, 160), new Point(22.5, 160), - new Point(22.5, 70)); - new GUIWire(submodelModifiable, selR.getPin("Y3"), alu.getPin("R3"), new Point(87.5, 390), new Point(87.5, 157.5), - new Point(25, 157.5), new Point(25, 80)); - new GUIWire(submodelModifiable, selR.getPin("Y4"), alu.getPin("R4"), new Point(90, 400), new Point(90, 155), new Point(27.5, 155), - new Point(27.5, 90)); - new GUIWire(submodelModifiable, selS.getPin("Y1"), alu.getPin("S1"), new Point(92.5, 580), new Point(92.5, 152.5), - new Point(30, 152.5), new Point(30, 100)); - new GUIWire(submodelModifiable, selS.getPin("Y2"), alu.getPin("S2"), new Point(95, 590), new Point(95, 150), new Point(32.5, 150), - new Point(32.5, 110)); - new GUIWire(submodelModifiable, selS.getPin("Y3"), alu.getPin("S3"), new Point(97.5, 600), new Point(97.5, 147.5), - new Point(35, 147.5), new Point(35, 120)); - new GUIWire(submodelModifiable, selS.getPin("Y4"), alu.getPin("S4"), new Point(100, 610), new Point(100, 145), new Point(37.5, 145), - new Point(37.5, 130)); - new GUIWire(submodelModifiable, alu.getPin("F1"), F1, new Point[0]); - new GUIWire(submodelModifiable, alu.getPin("F2"), F2, new Point(135, 30), new Point(135, 60)); - new GUIWire(submodelModifiable, alu.getPin("F3"), F3, new Point(130, 40), new Point(130, 100)); - new GUIWire(submodelModifiable, alu.getPin("F4"), F4, new Point(125, 50), new Point(125, 140)); - new GUIWire(submodelModifiable, alu.getPin("Cn+4"), Cnplus4, new Point(120, 60), new Point(120, 180)); - new GUIWire(submodelModifiable, alu.getPin("OVR"), OVR, new Point(115, 70), new Point(115, 220)); - } - - static - { - IndirectGUIComponentCreator.setComponentProvider(GUIAm2901ALUInclSourceDecodeInclFunctionDecode.class.getCanonicalName(), - (m, p) -> new GUIAm2901ALUInclSourceDecodeInclFunctionDecode(m)); - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/am2901/GUIAm2901ALUOneBit.java b/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/am2901/GUIAm2901ALUOneBit.java deleted file mode 100644 index c35f7cf2..00000000 --- a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/am2901/GUIAm2901ALUOneBit.java +++ /dev/null @@ -1,95 +0,0 @@ -package net.mograsim.logic.ui.model.components.mi.nandbased.am2901; - -import net.haspamelodica.swt.helper.swtobjectwrappers.Point; -import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.logic.ui.model.components.atomic.GUINandGate; -import net.mograsim.logic.ui.model.components.mi.nandbased.GUIand; -import net.mograsim.logic.ui.model.components.mi.nandbased.GUIfulladder; -import net.mograsim.logic.ui.model.components.mi.nandbased.GUImux1; -import net.mograsim.logic.ui.model.components.mi.nandbased.GUIxor; -import net.mograsim.logic.ui.model.components.submodels.SimpleRectangularSubmodelComponent; -import net.mograsim.logic.ui.model.wires.GUIWire; -import net.mograsim.logic.ui.model.wires.Pin; -import net.mograsim.logic.ui.model.wires.WireCrossPoint; -import net.mograsim.logic.ui.serializing.IndirectGUIComponentCreator; - -public class GUIAm2901ALUOneBit extends SimpleRectangularSubmodelComponent -{ - public GUIAm2901ALUOneBit(ViewModelModifiable model) - { - super(model, 1, "GUIAm2901ALUOneBit"); - setSubmodelScale(.2); - setInputPins("Cin", "CoutE", "CinE", "R", "RN", "S", "SN", "FN", "L"); - setOutputPins("Cout", "F"); - initSubmodelComponents(); - } - - @SuppressWarnings("unused") // for GUIWires being created - private void initSubmodelComponents() - { - Pin Cin = getSubmodelPin("Cin"); - Pin CoutE = getSubmodelPin("CoutE"); - Pin CinE = getSubmodelPin("CinE"); - Pin R = getSubmodelPin("R"); - Pin RN = getSubmodelPin("RN"); - Pin S = getSubmodelPin("S"); - Pin SN = getSubmodelPin("SN"); - Pin FN = getSubmodelPin("FN"); - Pin L = getSubmodelPin("L"); - Pin Cout = getSubmodelPin("Cout"); - Pin F = getSubmodelPin("F"); - - GUIand Cinand = new GUIand(submodelModifiable); - GUIxor Rxor = new GUIxor(submodelModifiable); - GUIxor Sxor = new GUIxor(submodelModifiable); - GUIfulladder add = new GUIfulladder(submodelModifiable); - GUINandGate nand = new GUINandGate(submodelModifiable, 1); - GUIand Coutand = new GUIand(submodelModifiable); - GUImux1 Fsel = new GUImux1(submodelModifiable); - GUIxor Fxor = new GUIxor(submodelModifiable); - - WireCrossPoint cpRXored = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpSXored = new WireCrossPoint(submodelModifiable, 1); - - Cinand.moveTo(10, 20); - Rxor.moveTo(10, 190); - Sxor.moveTo(10, 290); - add.moveTo(60, 20); - nand.moveTo(60, 55); - Coutand.moveTo(135, 20); - Fsel.moveTo(90, 70); - Fxor.moveTo(135, 70); - cpRXored.moveCenterTo(50, 60); - cpSXored.moveCenterTo(55, 70); - - new GUIWire(submodelModifiable, Cin, Cinand.getPin("A"), new Point[0]); - new GUIWire(submodelModifiable, CoutE, Coutand.getPin("A"), new Point(5, 75), new Point(5, 10), new Point(130, 10), - new Point(130, 25)); - new GUIWire(submodelModifiable, CinE, Cinand.getPin("B"), new Point(7.5, 125), new Point(7.5, 35)); - new GUIWire(submodelModifiable, R, Rxor.getPin("A")); - new GUIWire(submodelModifiable, RN, Rxor.getPin("B")); - new GUIWire(submodelModifiable, S, Sxor.getPin("A")); - new GUIWire(submodelModifiable, SN, Sxor.getPin("B")); - new GUIWire(submodelModifiable, FN, Fxor.getPin("B"), new Point(130, 375), new Point(130, 85)); - new GUIWire(submodelModifiable, L, Fsel.getPin("S0"), new Point(87.5, 425), new Point(87.5, 75)); - new GUIWire(submodelModifiable, Cinand.getPin("Y"), add.getPin("A"), new Point[0]); - new GUIWire(submodelModifiable, Rxor.getPin("Y"), cpRXored, new Point(50, 195)); - new GUIWire(submodelModifiable, cpRXored, add.getPin("B"), new Point(50, 35)); - new GUIWire(submodelModifiable, cpRXored, nand.getPin("A"), new Point[0]); - new GUIWire(submodelModifiable, Sxor.getPin("Y"), cpSXored, new Point(55, 295)); - new GUIWire(submodelModifiable, cpSXored, add.getPin("C"), new Point(55, 45)); - new GUIWire(submodelModifiable, cpSXored, nand.getPin("B"), new Point[0]); - new GUIWire(submodelModifiable, add.getPin("Y"), Fsel.getPin("I0"), new Point(100, 25), new Point(100, 65), new Point(85, 65), - new Point(85, 85)); - new GUIWire(submodelModifiable, add.getPin("Z"), Coutand.getPin("B"), new Point[0]); - new GUIWire(submodelModifiable, nand.getPin("Y"), Fsel.getPin("I1"), new Point(82.5, 65), new Point(82.5, 95)); - new GUIWire(submodelModifiable, Fsel.getPin("Y"), Fxor.getPin("A"), new Point[0]); - new GUIWire(submodelModifiable, Coutand.getPin("Y"), Cout, new Point[0]); - new GUIWire(submodelModifiable, Fxor.getPin("Y"), F, new Point[0]); - } - - static - { - IndirectGUIComponentCreator.setComponentProvider(GUIAm2901ALUOneBit.class.getCanonicalName(), (m, p) -> new GUIAm2901ALUOneBit(m)); - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/am2901/GUIAm2901DestDecode.java b/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/am2901/GUIAm2901DestDecode.java deleted file mode 100644 index defe85b2..00000000 --- a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/am2901/GUIAm2901DestDecode.java +++ /dev/null @@ -1,152 +0,0 @@ -package net.mograsim.logic.ui.model.components.mi.nandbased.am2901; - -import net.haspamelodica.swt.helper.swtobjectwrappers.Point; -import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.logic.ui.model.components.atomic.GUINandGate; -import net.mograsim.logic.ui.model.components.submodels.SimpleRectangularSubmodelComponent; -import net.mograsim.logic.ui.model.wires.GUIWire; -import net.mograsim.logic.ui.model.wires.Pin; -import net.mograsim.logic.ui.model.wires.WireCrossPoint; -import net.mograsim.logic.ui.serializing.IndirectGUIComponentCreator; - -public class GUIAm2901DestDecode extends SimpleRectangularSubmodelComponent -{ - public GUIAm2901DestDecode(ViewModelModifiable model) - { - super(model, 1, "GUIAm2901DestDecode"); - setSubmodelScale(.25); - setInputPins("I8", "I7", "I6"); - setOutputPins("NSH", "RSH", "RAMWE", "YF", "LSH", "QWE"); - initSubmodelComponents(); - } - - @SuppressWarnings("unused") // for GUIWires being created - private void initSubmodelComponents() - { - Pin I8 = getSubmodelPin("I8"); - Pin I7 = getSubmodelPin("I7"); - Pin I6 = getSubmodelPin("I6"); - Pin NSH = getSubmodelPin("NSH"); - Pin RSH = getSubmodelPin("RSH"); - Pin RAMWE = getSubmodelPin("RAMWE"); - Pin YF = getSubmodelPin("YF"); - Pin LSH = getSubmodelPin("LSH"); - Pin QWE = getSubmodelPin("QWE"); - - GUINandGate notI8 = new GUINandGate(submodelModifiable, 1); - GUINandGate notI7 = new GUINandGate(submodelModifiable, 1); - GUINandGate nandI8I7 = new GUINandGate(submodelModifiable, 1); - GUINandGate notI6 = new GUINandGate(submodelModifiable, 1); - GUINandGate nandRSH = new GUINandGate(submodelModifiable, 1); - GUINandGate nandRAMWE = new GUINandGate(submodelModifiable, 1); - GUINandGate nandI7NotI8 = new GUINandGate(submodelModifiable, 1); - GUINandGate nandLSH = new GUINandGate(submodelModifiable, 1); - GUINandGate notRSH = new GUINandGate(submodelModifiable, 1); - GUINandGate andI7NotI8 = new GUINandGate(submodelModifiable, 1); - GUINandGate nandQWE = new GUINandGate(submodelModifiable, 1); - GUINandGate nandYF = new GUINandGate(submodelModifiable, 1); - GUINandGate notQWE = new GUINandGate(submodelModifiable, 1); - - WireCrossPoint cpI81 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpI82 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpI83 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpI71 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpI72 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpI73 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpI6 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpNotI7 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpNotI81 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpNotI82 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpNandI8I7 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpNotRSH = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpNandI7NotI81 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpNandI7NotI82 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpNotI6 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpNandQWE = new WireCrossPoint(submodelModifiable, 1); - - notI8.moveTo(15, 10); - notI7.moveTo(15, 50); - nandI8I7.moveTo(15, 90); - notI6.moveTo(15, 150); - nandRSH.moveTo(50, 10); - nandRAMWE.moveTo(50, 50); - nandI7NotI8.moveTo(50, 90); - nandLSH.moveTo(50, 130); - notRSH.moveTo(80, 10); - andI7NotI8.moveTo(80, 90); - nandQWE.moveTo(80, 145); - nandYF.moveTo(110, 105); - notQWE.moveTo(115, 210); - cpI81.moveCenterTo(5, 20); - cpI82.moveCenterTo(5, 15); - cpI83.moveCenterTo(5, 25); - cpI71.moveCenterTo(10, 60); - cpI72.moveCenterTo(10, 65); - cpI73.moveCenterTo(10, 105); - cpI6.moveCenterTo(5, 155); - cpNotI7.moveCenterTo(40, 60); - cpNotI81.moveCenterTo(45, 20); - cpNotI82.moveCenterTo(45, 55); - cpNandI8I7.moveCenterTo(40, 135); - cpNotRSH.moveCenterTo(75, 20); - cpNandI7NotI81.moveCenterTo(75, 100); - cpNandI7NotI82.moveCenterTo(75, 105); - cpNotI6.moveCenterTo(75, 160); - cpNandQWE.moveCenterTo(110, 215); - - new GUIWire(submodelModifiable, I8, cpI81, new Point[0]); - new GUIWire(submodelModifiable, cpI81, cpI82, new Point[0]); - new GUIWire(submodelModifiable, cpI81, cpI83, new Point[0]); - new GUIWire(submodelModifiable, cpI82, notI8.getPin("A"), new Point[0]); - new GUIWire(submodelModifiable, cpI83, notI8.getPin("B"), new Point[0]); - new GUIWire(submodelModifiable, I7, cpI71, new Point[0]); - new GUIWire(submodelModifiable, cpI71, notI7.getPin("A"), new Point(10, 55)); - new GUIWire(submodelModifiable, cpI71, cpI72, new Point[0]); - new GUIWire(submodelModifiable, cpI72, notI7.getPin("B"), new Point[0]); - new GUIWire(submodelModifiable, cpI72, cpI73, new Point[0]); - new GUIWire(submodelModifiable, cpI73, nandI8I7.getPin("B"), new Point[0]); - new GUIWire(submodelModifiable, cpI83, nandI8I7.getPin("A"), new Point(5, 95)); - new GUIWire(submodelModifiable, I6, cpI6, new Point(5, 100)); - new GUIWire(submodelModifiable, cpI6, notI6.getPin("A"), new Point[0]); - new GUIWire(submodelModifiable, cpI6, notI6.getPin("B"), new Point(5, 165)); - new GUIWire(submodelModifiable, cpI82, nandRSH.getPin("A"), new Point(5, 5), new Point(40, 5), new Point(40, 15)); - new GUIWire(submodelModifiable, notI7.getPin("Y"), cpNotI7, new Point[0]); - new GUIWire(submodelModifiable, cpNotI7, nandRSH.getPin("B"), new Point(40, 25)); - new GUIWire(submodelModifiable, cpNotI7, nandRAMWE.getPin("B"), new Point(40, 65)); - new GUIWire(submodelModifiable, notI8.getPin("Y"), cpNotI81, new Point[0]); - new GUIWire(submodelModifiable, cpNotI81, NSH, new Point(45, 5), new Point(135, 5), new Point(135, 20)); - new GUIWire(submodelModifiable, cpNotI81, cpNotI82, new Point[0]); - new GUIWire(submodelModifiable, cpNotI82, nandRAMWE.getPin("A"), new Point[0]); - new GUIWire(submodelModifiable, cpNotI82, nandI7NotI8.getPin("A"), new Point(45, 95)); - new GUIWire(submodelModifiable, cpI73, nandI7NotI8.getPin("B"), new Point(10, 115), new Point(45, 115), new Point(45, 105)); - new GUIWire(submodelModifiable, nandI8I7.getPin("Y"), cpNandI8I7, new Point(40, 100)); - new GUIWire(submodelModifiable, cpNandI8I7, nandLSH.getPin("A"), new Point[0]); - new GUIWire(submodelModifiable, cpNandI8I7, nandLSH.getPin("B"), new Point(40, 145)); - new GUIWire(submodelModifiable, nandRSH.getPin("Y"), cpNotRSH, new Point[0]); - new GUIWire(submodelModifiable, cpNotRSH, notRSH.getPin("A"), new Point(75, 15)); - new GUIWire(submodelModifiable, cpNotRSH, notRSH.getPin("B"), new Point(75, 25)); - new GUIWire(submodelModifiable, nandRAMWE.getPin("Y"), RAMWE, new Point(125, 60), new Point(125, 100)); - new GUIWire(submodelModifiable, nandI7NotI8.getPin("Y"), cpNandI7NotI81, new Point[0]); - new GUIWire(submodelModifiable, cpNandI7NotI81, andI7NotI8.getPin("A"), new Point(75, 95)); - new GUIWire(submodelModifiable, cpNandI7NotI81, cpNandI7NotI82, new Point[0]); - new GUIWire(submodelModifiable, cpNandI7NotI82, andI7NotI8.getPin("B"), new Point[0]); - new GUIWire(submodelModifiable, nandLSH.getPin("Y"), LSH, new Point(125, 140), new Point(125, 180)); - new GUIWire(submodelModifiable, cpNandI7NotI82, nandQWE.getPin("A"), new Point(75, 150)); - new GUIWire(submodelModifiable, notI6.getPin("Y"), cpNotI6, new Point[0]); - new GUIWire(submodelModifiable, cpNotI6, nandQWE.getPin("B"), new Point[0]); - new GUIWire(submodelModifiable, notRSH.getPin("Y"), RSH, new Point(130, 20), new Point(130, 60)); - new GUIWire(submodelModifiable, andI7NotI8.getPin("Y"), nandYF.getPin("A")); - new GUIWire(submodelModifiable, cpNotI6, nandYF.getPin("B"), new Point(75, 170), new Point(105, 170), new Point(105, 120)); - new GUIWire(submodelModifiable, nandQWE.getPin("Y"), cpNandQWE, new Point(110, 155)); - new GUIWire(submodelModifiable, cpNandQWE, notQWE.getPin("A"), new Point[0]); - new GUIWire(submodelModifiable, cpNandQWE, notQWE.getPin("B"), new Point(110, 225)); - new GUIWire(submodelModifiable, nandYF.getPin("Y"), YF); - new GUIWire(submodelModifiable, notQWE.getPin("Y"), QWE, new Point[0]); - } - - static - { - IndirectGUIComponentCreator.setComponentProvider(GUIAm2901DestDecode.class.getCanonicalName(), - (m, p) -> new GUIAm2901DestDecode(m)); - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/am2901/GUIAm2901QReg.java b/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/am2901/GUIAm2901QReg.java deleted file mode 100644 index 804e85d2..00000000 --- a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/am2901/GUIAm2901QReg.java +++ /dev/null @@ -1,149 +0,0 @@ -package net.mograsim.logic.ui.model.components.mi.nandbased.am2901; - -import net.haspamelodica.swt.helper.swtobjectwrappers.Point; -import net.mograsim.logic.core.types.Bit; -import net.mograsim.logic.core.types.BitVector; -import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.logic.ui.model.components.mi.nandbased.GUIand; -import net.mograsim.logic.ui.model.components.mi.nandbased.GUIdff; -import net.mograsim.logic.ui.model.components.submodels.SimpleRectangularSubmodelComponent; -import net.mograsim.logic.ui.model.wires.GUIWire; -import net.mograsim.logic.ui.model.wires.Pin; -import net.mograsim.logic.ui.model.wires.WireCrossPoint; -import net.mograsim.logic.ui.serializing.IndirectGUIComponentCreator; - -public class GUIAm2901QReg extends SimpleRectangularSubmodelComponent -{ - private GUIdff dff1; - private GUIdff dff2; - private GUIdff dff3; - private GUIdff dff4; - - public GUIAm2901QReg(ViewModelModifiable model) - { - super(model, 1, "GUIAm2901QReg"); - setSubmodelScale(.4); - setInputPins("C", "WE", "D1", "D2", "D3", "D4"); - setOutputPins("Q1", "Q2", "Q3", "Q4"); - initSubmodelComponents(); - } - - @SuppressWarnings("unused") // for GUIWires being created - private void initSubmodelComponents() - { - Pin C = getSubmodelPin("C"); - Pin WE = getSubmodelPin("WE"); - Pin D1 = getSubmodelPin("D1"); - Pin D2 = getSubmodelPin("D2"); - Pin D3 = getSubmodelPin("D3"); - Pin D4 = getSubmodelPin("D4"); - Pin Q1 = getSubmodelPin("Q1"); - Pin Q2 = getSubmodelPin("Q2"); - Pin Q3 = getSubmodelPin("Q3"); - Pin Q4 = getSubmodelPin("Q4"); - - GUIand and = new GUIand(submodelModifiable); - dff1 = new GUIdff(submodelModifiable); - dff2 = new GUIdff(submodelModifiable); - dff3 = new GUIdff(submodelModifiable); - dff4 = new GUIdff(submodelModifiable); - - WireCrossPoint cpC1 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpC2 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpC3 = new WireCrossPoint(submodelModifiable, 1); - - and.moveTo(5, 15); - dff1.moveTo(50, 7.5); - dff2.moveTo(50, 32.5); - dff3.moveTo(50, 57.5); - dff4.moveTo(50, 82.5); - cpC1.moveCenterTo(42.5, 20); - cpC2.moveCenterTo(42.5, 37.5); - cpC3.moveCenterTo(42.5, 62.5); - - new GUIWire(submodelModifiable, C, and.getPin("A")); - new GUIWire(submodelModifiable, WE, and.getPin("B")); - new GUIWire(submodelModifiable, and.getPin("Y"), cpC1, new Point[0]); - new GUIWire(submodelModifiable, cpC1, dff1.getPin("C"), new Point(42.5, 12.5)); - new GUIWire(submodelModifiable, cpC1, cpC2, new Point[0]); - new GUIWire(submodelModifiable, cpC2, dff2.getPin("C"), new Point[0]); - new GUIWire(submodelModifiable, cpC2, cpC3, new Point[0]); - new GUIWire(submodelModifiable, cpC3, dff3.getPin("C"), new Point[0]); - new GUIWire(submodelModifiable, cpC3, dff4.getPin("C"), new Point(42.5, 87.5)); - new GUIWire(submodelModifiable, D1, dff1.getPin("D"), new Point(17.5, 62.5), new Point(17.5, 42.5), new Point(45, 42.5), - new Point(45, 22.5)); - new GUIWire(submodelModifiable, D2, dff2.getPin("D"), new Point(22.5, 87.5), new Point(22.5, 47.5)); - new GUIWire(submodelModifiable, D3, dff3.getPin("D"), new Point(27.5, 112.5), new Point(27.5, 72.5)); - new GUIWire(submodelModifiable, D4, dff4.getPin("D"), new Point(32.5, 137.5), new Point(32.5, 97.5)); - new GUIWire(submodelModifiable, dff1.getPin("Q"), Q1, new Point[0]); - new GUIWire(submodelModifiable, dff2.getPin("Q"), Q2, new Point[0]); - new GUIWire(submodelModifiable, dff3.getPin("Q"), Q3, new Point[0]); - new GUIWire(submodelModifiable, dff4.getPin("Q"), Q4, new Point[0]); - - addAtomicHighLevelStateID("q1"); - addAtomicHighLevelStateID("q2"); - addAtomicHighLevelStateID("q3"); - addAtomicHighLevelStateID("q4"); - addAtomicHighLevelStateID("q"); - } - - @Override - public void setAtomicHighLevelState(String stateID, Object newState) - { - switch (stateID) - { - case "q1": - dff1.setHighLevelState("q", newState); - break; - case "q2": - dff2.setHighLevelState("q", newState); - break; - case "q3": - dff3.setHighLevelState("q", newState); - break; - case "q4": - dff4.setHighLevelState("q", newState); - break; - case "q": - BitVector newStateCasted = (BitVector) newState; - setHighLevelState("q1", newStateCasted.getBit(0)); - setHighLevelState("q2", newStateCasted.getBit(1)); - setHighLevelState("q3", newStateCasted.getBit(2)); - setHighLevelState("q4", newStateCasted.getBit(3)); - break; - default: - // should not happen because we tell SubmodelComponent to only allow these state IDs. - throw new IllegalStateException("Illegal atomic state ID: " + stateID); - } - } - - @Override - public Object getAtomicHighLevelState(String stateID) - { - switch (stateID) - { - case "q1": - return dff1.getHighLevelState("q"); - case "q2": - return dff2.getHighLevelState("q"); - case "q3": - return dff3.getHighLevelState("q"); - case "q4": - return dff4.getHighLevelState("q"); - case "q": - Bit q1 = (Bit) getHighLevelState("q1"); - Bit q2 = (Bit) getHighLevelState("q2"); - Bit q3 = (Bit) getHighLevelState("q3"); - Bit q4 = (Bit) getHighLevelState("q4"); - return BitVector.of(q1, q2, q3, q4); - default: - // should not happen because we tell SubmodelComponent to only allow these state IDs. - throw new IllegalStateException("Illegal atomic state ID: " + stateID); - } - } - - static - { - IndirectGUIComponentCreator.setComponentProvider(GUIAm2901QReg.class.getCanonicalName(), (m, p) -> new GUIAm2901QReg(m)); - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/am2901/GUIAm2901SourceDecode.java b/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/am2901/GUIAm2901SourceDecode.java deleted file mode 100644 index d0ef4d5e..00000000 --- a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/model/components/mi/nandbased/am2901/GUIAm2901SourceDecode.java +++ /dev/null @@ -1,158 +0,0 @@ -package net.mograsim.logic.ui.model.components.mi.nandbased.am2901; - -import net.haspamelodica.swt.helper.swtobjectwrappers.Point; -import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.logic.ui.model.components.atomic.GUINandGate; -import net.mograsim.logic.ui.model.components.submodels.SimpleRectangularSubmodelComponent; -import net.mograsim.logic.ui.model.wires.GUIWire; -import net.mograsim.logic.ui.model.wires.Pin; -import net.mograsim.logic.ui.model.wires.WireCrossPoint; -import net.mograsim.logic.ui.serializing.IndirectGUIComponentCreator; - -public class GUIAm2901SourceDecode extends SimpleRectangularSubmodelComponent -{ - public GUIAm2901SourceDecode(ViewModelModifiable model) - { - super(model, 1, "Am2901SourceDecode"); - setSubmodelScale(.25); - setInputPins("I2", "I1", "I0"); - setOutputPins("SQ", "RA", "SB", "SA", "RD"); - initSubmodelComponents(); - } - - @SuppressWarnings("unused") // for GUIWires being created - private void initSubmodelComponents() - { - Pin I2 = getSubmodelPin("I2"); - Pin I1 = getSubmodelPin("I1"); - Pin I0 = getSubmodelPin("I0"); - Pin SQ = getSubmodelPin("SQ"); - Pin RA = getSubmodelPin("RA"); - Pin SB = getSubmodelPin("SB"); - Pin SA = getSubmodelPin("SA"); - Pin RD = getSubmodelPin("RD"); - - GUINandGate notI2 = new GUINandGate(submodelModifiable, 1); - GUINandGate notI1 = new GUINandGate(submodelModifiable, 1); - GUINandGate notI0 = new GUINandGate(submodelModifiable, 1); - GUINandGate nand21 = new GUINandGate(submodelModifiable, 1); - GUINandGate nand22 = new GUINandGate(submodelModifiable, 1); - GUINandGate nand23 = new GUINandGate(submodelModifiable, 1); - GUINandGate nand24 = new GUINandGate(submodelModifiable, 1); - GUINandGate nand25 = new GUINandGate(submodelModifiable, 1); - GUINandGate nand31 = new GUINandGate(submodelModifiable, 1); - GUINandGate nand32 = new GUINandGate(submodelModifiable, 1); - GUINandGate nand33 = new GUINandGate(submodelModifiable, 1); - GUINandGate nand34 = new GUINandGate(submodelModifiable, 1); - GUINandGate nand35 = new GUINandGate(submodelModifiable, 1); - GUINandGate nand41 = new GUINandGate(submodelModifiable, 1); - GUINandGate nand42 = new GUINandGate(submodelModifiable, 1); - - WireCrossPoint cpI21 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpI22 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpI23 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpI1 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpI01 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpI02 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpNotI2 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpNotI11 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpNotI12 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpNotI13 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpNotI0 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpNand22 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpNand23 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpNand24 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpNand31 = new WireCrossPoint(submodelModifiable, 1); - WireCrossPoint cpNand35 = new WireCrossPoint(submodelModifiable, 1); - - notI2.moveTo(10, 10); - notI1.moveTo(10, 50); - notI0.moveTo(10, 90); - nand21.moveTo(40, 10); - nand22.moveTo(40, 50); - nand23.moveTo(40, 90); - nand24.moveTo(40, 130); - nand25.moveTo(40, 170); - nand31.moveTo(70, 10); - nand32.moveTo(70, 50); - nand33.moveTo(70, 90); - nand34.moveTo(70, 130); - nand35.moveTo(70, 170); - nand41.moveTo(100, 10); - nand42.moveTo(100, 170); - cpI21.moveCenterTo(5, 20); - cpI22.moveCenterTo(7.5, 20); - cpI23.moveCenterTo(5, 145); - cpI1.moveCenterTo(7.5, 60); - cpI01.moveCenterTo(7.5, 100); - cpI02.moveCenterTo(7.5, 105); - cpNotI2.moveCenterTo(32.5, 55); - cpNotI11.moveCenterTo(35, 60); - cpNotI12.moveCenterTo(35, 65); - cpNotI13.moveCenterTo(35, 135); - cpNotI0.moveCenterTo(37.5, 100); - cpNand22.moveCenterTo(65, 60); - cpNand23.moveCenterTo(65, 100); - cpNand24.moveCenterTo(65, 140); - cpNand31.moveCenterTo(95, 20); - cpNand35.moveCenterTo(95, 180); - - new GUIWire(submodelModifiable, I2, cpI21, new Point[0]); - new GUIWire(submodelModifiable, cpI21, nand21.getPin("A"), new Point(5, 5), new Point(35, 5), new Point(35, 15)); - new GUIWire(submodelModifiable, cpI21, cpI22, new Point[0]); - new GUIWire(submodelModifiable, cpI22, notI2.getPin("A"), new Point(7.5, 15)); - new GUIWire(submodelModifiable, cpI22, notI2.getPin("B"), new Point(7.5, 25)); - new GUIWire(submodelModifiable, cpI21, cpI23, new Point[0]); - new GUIWire(submodelModifiable, cpI23, nand24.getPin("B"), new Point[0]); - new GUIWire(submodelModifiable, cpI23, nand35.getPin("B"), new Point(5, 195), new Point(65, 195), new Point(65, 185)); - new GUIWire(submodelModifiable, I1, cpI1, new Point[0]); - new GUIWire(submodelModifiable, cpI1, notI1.getPin("A"), new Point(7.5, 55)); - new GUIWire(submodelModifiable, cpI1, notI1.getPin("B"), new Point(7.5, 65)); - new GUIWire(submodelModifiable, I0, cpI01, new Point[0]); - new GUIWire(submodelModifiable, cpI01, notI0.getPin("A"), new Point(7.5, 95)); - new GUIWire(submodelModifiable, cpI01, cpI02, new Point[0]); - new GUIWire(submodelModifiable, cpI02, notI0.getPin("B"), new Point[0]); - new GUIWire(submodelModifiable, cpI02, nand23.getPin("B"), new Point(7.5, 112.5), new Point(32.5, 112.5), new Point(32.5, 105)); - new GUIWire(submodelModifiable, notI2.getPin("Y"), cpNotI2, new Point(32.5, 20)); - new GUIWire(submodelModifiable, cpNotI2, nand22.getPin("A"), new Point[0]); - new GUIWire(submodelModifiable, cpNotI2, nand23.getPin("A"), new Point(32.5, 95)); - new GUIWire(submodelModifiable, notI1.getPin("Y"), cpNotI11, new Point[0]); - new GUIWire(submodelModifiable, cpNotI11, nand21.getPin("B"), new Point(35, 25)); - new GUIWire(submodelModifiable, cpNotI11, cpNotI12, new Point[0]); - new GUIWire(submodelModifiable, cpNotI12, nand22.getPin("B"), new Point[0]); - new GUIWire(submodelModifiable, cpNotI12, cpNotI13, new Point[0]); - new GUIWire(submodelModifiable, cpNotI13, nand24.getPin("A"), new Point[0]); - new GUIWire(submodelModifiable, cpNotI13, nand25.getPin("A"), new Point(35, 175)); - new GUIWire(submodelModifiable, notI0.getPin("Y"), cpNotI0, new Point[0]); - new GUIWire(submodelModifiable, cpNotI0, nand31.getPin("B"), new Point(37.5, 35), new Point(65, 35), new Point(65, 25)); - new GUIWire(submodelModifiable, cpNotI0, nand25.getPin("B"), new Point(37.5, 185)); - new GUIWire(submodelModifiable, nand21.getPin("Y"), nand31.getPin("A")); - new GUIWire(submodelModifiable, nand22.getPin("Y"), cpNand22, new Point[0]); - new GUIWire(submodelModifiable, cpNand22, nand32.getPin("A"), new Point(65, 55)); - new GUIWire(submodelModifiable, cpNand22, nand32.getPin("B"), new Point(65, 65)); - new GUIWire(submodelModifiable, nand23.getPin("Y"), cpNand23, new Point[0]); - new GUIWire(submodelModifiable, cpNand23, nand33.getPin("A"), new Point(65, 95)); - new GUIWire(submodelModifiable, cpNand23, nand33.getPin("B"), new Point(65, 105)); - new GUIWire(submodelModifiable, nand24.getPin("Y"), cpNand24, new Point[0]); - new GUIWire(submodelModifiable, cpNand24, nand34.getPin("A"), new Point(65, 135)); - new GUIWire(submodelModifiable, cpNand24, nand34.getPin("B"), new Point(65, 145)); - new GUIWire(submodelModifiable, nand25.getPin("Y"), nand35.getPin("A")); - new GUIWire(submodelModifiable, nand31.getPin("Y"), cpNand31, new Point[0]); - new GUIWire(submodelModifiable, cpNand31, nand41.getPin("A"), new Point(95, 15)); - new GUIWire(submodelModifiable, cpNand31, nand41.getPin("B"), new Point(95, 25)); - new GUIWire(submodelModifiable, nand32.getPin("Y"), RA, new Point[0]); - new GUIWire(submodelModifiable, nand33.getPin("Y"), SB, new Point[0]); - new GUIWire(submodelModifiable, nand34.getPin("Y"), SA, new Point[0]); - new GUIWire(submodelModifiable, nand35.getPin("Y"), cpNand35, new Point[0]); - new GUIWire(submodelModifiable, cpNand35, nand42.getPin("A"), new Point(95, 175)); - new GUIWire(submodelModifiable, cpNand35, nand42.getPin("B"), new Point(95, 185)); - new GUIWire(submodelModifiable, nand41.getPin("Y"), SQ, new Point[0]); - new GUIWire(submodelModifiable, nand42.getPin("Y"), RD, new Point[0]); - } - - static - { - IndirectGUIComponentCreator.setComponentProvider(GUIAm2901SourceDecode.class.getCanonicalName(), - (m, p) -> new GUIAm2901SourceDecode(m)); - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/test/net/mograsim/logic/ui/am2900/Am2901Test.java b/net.mograsim.logic.ui.am2900/test/net/mograsim/logic/ui/am2900/Am2901Test.java deleted file mode 100644 index 21cb52f6..00000000 --- a/net.mograsim.logic.ui.am2900/test/net/mograsim/logic/ui/am2900/Am2901Test.java +++ /dev/null @@ -1,292 +0,0 @@ -package net.mograsim.logic.ui.am2900; - -import static net.mograsim.logic.ui.am2900.TestUtil.*; -import static net.mograsim.logic.ui.am2900.TestableAm2901.Am2901_Dest.*; -import static net.mograsim.logic.ui.am2900.TestableAm2901.Am2901_Func.*; -import static net.mograsim.logic.ui.am2900.TestableAm2901.Am2901_Src.*; -import static net.mograsim.logic.ui.am2900.TestableAm2901.Register.*; -import static org.junit.jupiter.api.Assertions.*; - -import java.awt.Point; -import java.util.stream.IntStream; -import java.util.stream.Stream; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Order; -import org.junit.jupiter.api.MethodOrderer.OrderAnnotation; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.TestMethodOrder; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.ArgumentsSource; -import net.mograsim.logic.ui.am2900.TestableAm2901.Register; - -@TestMethodOrder(OrderAnnotation.class) -public class Am2901Test -{ - private TestableAm2901 am2901; - - @BeforeEach - void initialize() - { - createAndSetup(); - setInputsToZero(); - } - - void createAndSetup() - { - am2901 = new TestableAm2901Impl(); - am2901.setup(); - } - - void setRegistersToZero() - { - setInputsToZero(); - for (Register r : Register.values()) - { - setRegisterToZero(r); - } - } - - void setRegisterToZero(Register r) - { - am2901.setD("0000"); - am2901.setSrc(DZ); - am2901.setFunc(AND); - setRegOutput(r); - - am2901.assertFullCycleSuccess(); - } - - void setRegOutput(Register r) - { - if (r == Q) - { - am2901.setDest(QREG); - } else - { - am2901.setReg_B(r.toBitString()); - am2901.setDest(RAMF); - } - } - - void setInputsToZero() - { - am2901.setCarryIn("0"); - am2901.setQ_0("0"); - am2901.setQ_3("0"); - am2901.setRAM_0("0"); - am2901.setRAM_3("0"); - am2901.setReg_A("0000"); - am2901.setReg_B("0000"); - am2901.setD("0000"); - am2901.setSrc(AB); - am2901.setFunc(ADD); - am2901.setDest(QREG); -// am2901.setNotOutEnable("0"); TODO - am2901.clockOn(true); - am2901.assertRunSuccess(); - } - - @Order(1) - @ParameterizedTest - @ArgumentsSource(TestableAm2901.RegisterProvider.class) - void testDirectAccess(Register r) - { - assertEquals("UUUU", am2901.getDirectly(r)); - - am2901.setDirectly(r, "1011"); - - assertEquals("1011", am2901.getDirectly(r)); - } - - @Order(2) - @ParameterizedTest - @ArgumentsSource(TestableAm2901.RegisterProvider.class) - void testSetToZero(Register r) - { - assertEquals("UUUU", am2901.getDirectly(r)); - - setRegisterToZero(r); - - assertEquals("0000", am2901.getDirectly(r)); - assertEquals("0000", am2901.getY()); - assertEquals("0", am2901.getCarryOut()); - assertEquals("0", am2901.getOverflow()); - assertEquals("0", am2901.getSign()); - assertEquals("1", am2901.getZero()); - } - - @Order(3) - @Test - void testSetAllToZero() - { - setRegistersToZero(); - - assertEquals("0000", am2901.getY()); - assertEquals("0", am2901.getCarryOut()); - assertEquals("0", am2901.getOverflow()); - assertEquals("0", am2901.getSign()); - assertEquals("1", am2901.getZero()); - assertEquals("0", am2901.getQ_0()); - assertEquals("0", am2901.getQ_3()); - assertEquals("0", am2901.getRAM_0()); - assertEquals("0", am2901.getRAM_3()); - - assertAll("register values", Register.stream().map(r -> () -> - { - assertEquals("0000", am2901.getDirectly(r), r.name()); - })); - } - - @Order(4) - @Test - void testADD() - { - am2901.setSrc(DA); - am2901.setFunc(ADD); - am2901.setDest(NOP); - am2901.setReg_A(r0.toBitString()); - - assertAll(getAll4BitPairs().map(xy -> () -> - { - am2901.setDirectly(r0, to4bitBin(xy.x)); - am2901.setD(to4bitBin(xy.y)); - - am2901.assertFullCycleSuccess(); - - int res32Bit = xy.x + xy.y; - int res4Bit = res32Bit & 0b1111; - int res32Bit_sgn = signed4ToSigned32(xy.x) + signed4ToSigned32(xy.y); - int res4Bit_sgn = signed4ToSigned32(res32Bit_sgn); - - String desc = xy.x + " + " + xy.y + " = " + res4Bit + ": "; - - assertEquals(to4bitBin(res4Bit & 0b1111), am2901.getY(), desc + "Y"); - assertEquals(to1bitBin(res4Bit == 0), am2901.getZero(), desc + "F=0"); - assertEquals(to1bitBin(res4Bit & 0b1000), am2901.getSign(), desc + "F3"); - assertEquals(to1bitBin(res32Bit & 0b1_0000), am2901.getCarryOut(), desc + "Cn+4"); - assertEquals(to1bitBin(res4Bit_sgn != res32Bit_sgn), am2901.getOverflow(), desc + "OVR"); - })); - } - - @Order(4) - @Test - void testAND() - { - am2901.setSrc(DA); - am2901.setFunc(AND); - am2901.setDest(NOP); - am2901.setReg_A(r0.toBitString()); - - assertAll(getAll4BitPairs().map(xy -> () -> - { - am2901.setDirectly(r0, to4bitBin(xy.x)); - am2901.setD(to4bitBin(xy.y)); - - am2901.assertFullCycleSuccess(); - - int res32Bit = xy.x & xy.y; - - String desc = xy.x + " & " + xy.y + " = " + res32Bit + ": "; - - assertEquals(to4bitBin(res32Bit), am2901.getY(), desc + "Y"); - assertEquals(to1bitBin(res32Bit == 0), am2901.getZero(), desc + "F=0"); - assertEquals(to1bitBin(res32Bit & 0b1000), am2901.getSign(), desc + "F3"); -// assertEquals(to1bitBin(res32Bit), am2901.getCarryOut(), desc + "Cn+4"); // TODO -// assertEquals(to1bitBin(res32Bit), am2901.getOverflow(), desc + "OVR"); // TODO - })); - } - - @Order(4) - @Test - void testOR() - { - am2901.setSrc(DA); - am2901.setFunc(OR); - am2901.setDest(NOP); - am2901.setReg_A(r0.toBitString()); - - assertAll(getAll4BitPairs().map(xy -> () -> - { - am2901.setDirectly(r0, to4bitBin(xy.x)); - am2901.setD(to4bitBin(xy.y)); - - am2901.assertFullCycleSuccess(); - - int res32Bit = xy.x | xy.y; - - String desc = xy.x + " | " + xy.y + " = " + res32Bit + ": "; - - assertEquals(to4bitBin(res32Bit), am2901.getY(), desc + "Y"); - assertEquals(to1bitBin(res32Bit == 0), am2901.getZero(), desc + "F=0"); - assertEquals(to1bitBin(res32Bit & 0b1000), am2901.getSign(), desc + "F3"); -// assertEquals(to1bitBin(res32Bit != 0b1111), am2901.getCarryOut(), desc + "Cn+4"); // TODO -// assertEquals(to1bitBin(res32Bit != 0b1111), am2901.getOverflow(), desc + "OVR"); // TODO - })); - } - - @Order(4) - @Test - void testXOR() - { - am2901.setSrc(DA); - am2901.setFunc(EXOR); - am2901.setDest(NOP); - am2901.setReg_A(r0.toBitString()); - - assertAll(getAll4BitPairs().map(xy -> () -> - { - am2901.setDirectly(r0, to4bitBin(xy.x)); - am2901.setD(to4bitBin(xy.y)); - - am2901.assertFullCycleSuccess(); - - int res32Bit = xy.x ^ xy.y; - - String desc = xy.x + " ^ " + xy.y + " = " + res32Bit + ": "; - - assertEquals(to4bitBin(res32Bit), am2901.getY(), desc + "Y"); - assertEquals(to1bitBin(res32Bit == 0), am2901.getZero(), desc + "F=0"); - assertEquals(to1bitBin(res32Bit & 0b1000), am2901.getSign(), desc + "F3"); -// assertEquals(to1bitBin(res32Bit != 0b1111), am2901.getCarryOut(), desc + "Cn+4"); // TODO -// assertEquals(to1bitBin(res32Bit != 0b1111), am2901.getOverflow(), desc + "OVR"); // TODO - })); - } - - @Order(4) - @Test - void testSUB() - { - am2901.setSrc(DA); - am2901.setCarryIn("1"); - am2901.setFunc(SUBR); - am2901.setDest(NOP); - am2901.setReg_A(r0.toBitString()); - - assertAll(getAll4BitPairs().map(xy -> () -> - { - am2901.setDirectly(r0, to4bitBin(xy.x)); - am2901.setD(to4bitBin(xy.y)); - - am2901.assertFullCycleSuccess(); - - int res32Bit = xy.x - xy.y; - int res4Bit = res32Bit & 0b1111; - int res32Bit_sgn = signed4ToSigned32(xy.x) - signed4ToSigned32(xy.y); - int res4Bit_sgn = signed4ToSigned32(res32Bit_sgn); - - String desc = xy.x + " - " + xy.y + " = " + res4Bit + ": "; - - assertEquals(to4bitBin(res4Bit & 0b1111), am2901.getY(), desc + "Y"); - assertEquals(to1bitBin(res4Bit == 0), am2901.getZero(), desc + "F=0"); - assertEquals(to1bitBin(res4Bit & 0b1000), am2901.getSign(), desc + "F3"); - assertEquals(to1bitBin(xy.x >= xy.y), am2901.getCarryOut(), desc + "Cn+4"); - assertEquals(to1bitBin(res4Bit_sgn != res32Bit_sgn), am2901.getOverflow(), desc + "OVR"); - })); - } - - static Stream getAll4BitPairs() - { - return IntStream.range(0, 16).boxed().flatMap(x -> IntStream.range(0, 16).mapToObj(y -> new Point(x, y))); - } -} diff --git a/net.mograsim.logic.ui.am2900/test/net/mograsim/logic/ui/am2900/Am2901Testbench.java b/net.mograsim.logic.ui.am2900/test/net/mograsim/logic/ui/am2900/Am2901Testbench.java deleted file mode 100644 index 34c4cbe7..00000000 --- a/net.mograsim.logic.ui.am2900/test/net/mograsim/logic/ui/am2900/Am2901Testbench.java +++ /dev/null @@ -1,86 +0,0 @@ -package net.mograsim.logic.ui.am2900; - -import net.mograsim.logic.ui.SimpleLogicUIStandalone; -import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.logic.ui.model.components.atomic.GUIAndGate; -import net.mograsim.logic.ui.model.components.atomic.GUIBitDisplay; -import net.mograsim.logic.ui.model.components.atomic.GUIManualSwitch; -import net.mograsim.logic.ui.model.components.atomic.GUINotGate; -import net.mograsim.logic.ui.model.components.atomic.TextComponent; -import net.mograsim.logic.ui.model.components.mi.nandbased.GUIdff; -import net.mograsim.logic.ui.model.components.mi.nandbased.am2901.GUIAm2901; -import net.mograsim.logic.ui.model.components.submodels.SimpleRectangularSubmodelComponent; -import net.mograsim.logic.ui.model.wires.ConnectionPoint; -import net.mograsim.logic.ui.model.wires.WireCrossPoint; -import net.mograsim.logic.ui.util.ModellingTool; - -public class Am2901Testbench -{ - public static void main(String[] args) - { - SimpleLogicUIStandalone.executeVisualisation(Am2901Testbench::createTestbench); - } - - public static void createTestbench(ViewModelModifiable model) - { - SimpleRectangularSubmodelComponent comp = new GUIAm2901(model); - ModellingTool tool = ModellingTool.createFor(model); - - comp.moveTo(240, 0); - - GUIManualSwitch enable = new GUIManualSwitch(model); - WireCrossPoint wcp0 = new WireCrossPoint(model, 1); - GUINotGate not1 = new GUINotGate(model, 1); - GUINotGate not2 = new GUINotGate(model, 1); - GUINotGate not3 = new GUINotGate(model, 1); - GUIAndGate and = new GUIAndGate(model, 1); - tool.connect(wcp0, enable, ""); - tool.connect(wcp0, and, "A"); - tool.connect(wcp0, not1, "A"); - tool.connect(not1, not2, "Y", "A"); - tool.connect(not2, not3, "Y", "A"); - tool.connect(not3, and, "Y", "B"); - enable.moveTo(20, -32.5); - wcp0.moveTo(35, -26); - not1.moveTo(50, -20); - not2.moveTo(80, -20); - not3.moveTo(110, -20); - and.moveTo(135, -30); - ConnectionPoint last = and.getPin("Y"); - - for (int i = 0; i < comp.getInputPinNames().size(); i++) - { - double x = 55 + 70 * (i % 2); - double y = 10 * i; - - WireCrossPoint wcp = new WireCrossPoint(model, 1); - GUIdff d_ff = new GUIdff(model); - GUIManualSwitch sw = new GUIManualSwitch(model); - - tool.connect(last, wcp); - tool.connect(wcp, d_ff, "C"); - tool.connect(sw, d_ff, "", "D"); - tool.connect(d_ff, comp, "Q", comp.getInputPinNames().get(i)); - last = wcp.getPin(); - - TextComponent label = new TextComponent(model, comp.getInputPinNames().get(i)); - - sw.moveTo(x, y + 7.5); - wcp.moveTo(160, y); - d_ff.moveTo(170, y); - label.moveTo(x - 25, y + 15); - } - - for (int i = 0; i < comp.getOutputPinNames().size(); i++) - { - double x = 300 + 75 * (i % 2); - double y = 10 * i - 2.5; - GUIBitDisplay bd = new GUIBitDisplay(model); - bd.moveTo(x, y); - tool.connect(bd.getInputPin(), comp, comp.getOutputPinNames().get(i)); - - TextComponent label = new TextComponent(model, comp.getOutputPinNames().get(i)); - label.moveTo(x + 50, y + 8); - } - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.am2900/test/net/mograsim/logic/ui/am2900/TestUtil.java b/net.mograsim.logic.ui.am2900/test/net/mograsim/logic/ui/am2900/TestUtil.java deleted file mode 100644 index 937e566a..00000000 --- a/net.mograsim.logic.ui.am2900/test/net/mograsim/logic/ui/am2900/TestUtil.java +++ /dev/null @@ -1,84 +0,0 @@ -package net.mograsim.logic.ui.am2900; - -public final class TestUtil -{ - private TestUtil() - { - - } - - /** - * Transforms the last four bits of an int to a string that contains the binary ('1' and '0') representation of the 4 bits - * - * @author Christian Femers - */ - public static String to4bitBin(int x) - { - StringBuilder sb = new StringBuilder(4); - sb.append((x & 0b1000) == 0 ? '0' : '1'); - sb.append((x & 0b0100) == 0 ? '0' : '1'); - sb.append((x & 0b0010) == 0 ? '0' : '1'); - sb.append((x & 0b0001) == 0 ? '0' : '1'); - return sb.toString(); - } - - /** - * Transforms the given boolean to a string that contains the binary ('1' and '0') representation of the bit - * - * @author Christian Femers - */ - public static String to1bitBin(boolean bitIsSet) - { - return bitIsSet ? "1" : "0"; - } - - /** - * Transforms the given int to a string that contains the binary ('1' and '0') representation of the int. "0" is only returned when the - * int is equal to zero. - * - * @author Christian Femers - */ - public static String to1bitBin(int someInt) - { - return someInt != 0 ? "1" : "0"; - } - - /** - * Transforms a 4 bit signed integer (-8 to 7) to a int representing the same number. (Adding leading 1-bits if the 4 bit int is - * negative) - * - * @author Christian Femers - */ - public static int signed4ToSigned32(int signed4bit) - { - if ((signed4bit & 0b1000) > 0) - return signed4bit | 0xFF_FF_FF_F0; - return signed4bit & 0x00_00_00_0F; - } - - /** - * Transforms a 16 bit signed integer (-32768 to 32767 - a short) to a int representing the same number. (Adding leading 1-bits if the - * 16 bit int is negative) - * - * @author Christian Femers - */ - public static int signed16ToSigned32(int signed16bit) - { - return (short) signed16bit; - } - - /** - * Transforms the last n bits of an int to a string that contains the binary ('1' and '0') representation of the n bits - * - * @author Christian Femers - */ - public static String toNbitString(int x, int n) - { - StringBuilder sb = new StringBuilder(n); - for (int i = 0; i < n; i++) - { - sb.append((x >> i) & 1); - } - return sb.reverse().toString(); - } -} diff --git a/net.mograsim.logic.ui.am2900/test/net/mograsim/logic/ui/am2900/TestableAm2901.java b/net.mograsim.logic.ui.am2900/test/net/mograsim/logic/ui/am2900/TestableAm2901.java deleted file mode 100644 index fc4a80a5..00000000 --- a/net.mograsim.logic.ui.am2900/test/net/mograsim/logic/ui/am2900/TestableAm2901.java +++ /dev/null @@ -1,146 +0,0 @@ -package net.mograsim.logic.ui.am2900; - -import static org.junit.jupiter.api.Assertions.assertEquals; - -import java.util.Arrays; -import java.util.stream.Stream; - -import org.junit.jupiter.api.extension.ExtensionContext; -import org.junit.jupiter.params.provider.Arguments; -import org.junit.jupiter.params.provider.ArgumentsProvider; - -public interface TestableAm2901 -{ - void setup(); - - Result run(); - - void setDest(Am2901_Dest dest); - - void setFunc(Am2901_Func func); - - void setSrc(Am2901_Src src); - - void setReg_A(String val_4_bit); - - void setReg_B(String val_4_bit); - - void setCarryIn(String val_1_bit); - - void setNotOutEnable(String val_1_bit); - - void setD(String val_4_bit); - - void setQ_0(String val_1_bit); - - void setQ_3(String val_1_bit); - - void setRAM_0(String val_1_bit); - - void setRAM_3(String val_1_bit); - - void clockOn(boolean isClockOn); - - void setDirectly(Register r, String val_4_bit); - - String getQ_0(); - - String getQ_3(); - - String getRAM_0(); - - String getRAM_3(); - - String getNotP(); - - String getNotG(); - - String getCarryOut(); - - String getSign(); - - String getZero(); - - String getOverflow(); - - String getY(); - - String getDirectly(Register r); - - default void assertRunSuccess() - { - assertEquals(Result.SUCCESS, run()); - } - - default void assertFullCycleSuccess() - { - assertRunSuccess(); - clockOn(false); - assertRunSuccess(); - clockOn(true); - assertRunSuccess(); - } - - public enum Result - { - SUCCESS, OUT_OF_TIME, ERROR; - } - - public enum Am2901_Dest - { - QREG, NOP, RAMA, RAMF, RAMQD, RAMD, RAMQU, RAMU; - - public boolean doesShift() - { - return ordinal() >= 4; - } - - public int getShiftDir() - { - return doesShift() ? (ordinal() < 6 ? -1 : 1) : 0; - } - - public int getI7() - { - return this.ordinal() >> 1 & 1; - } - } - - public enum Am2901_Func - { - ADD, SUBR, SUBS, OR, AND, NOTRS, EXOR, EXNOR; - } - - public enum Am2901_Src - { - AQ, AB, ZQ, ZB, ZA, DA, DQ, DZ; - } - - public enum Register - { - r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, rA, rB, rC, rD, rE, rF, Q; - - public String toBitString() - { - if (this.ordinal() > 0xF) - throw new UnsupportedOperationException(); - return TestUtil.to4bitBin(this.ordinal()); - } - - public static Stream stream() - { - return Arrays.stream(values()); - } - } - - public static class RegisterProvider implements ArgumentsProvider - { - - @Override - public Stream provideArguments(ExtensionContext context) throws Exception - { - return Register.stream().map(Arguments::of); - } - - } -} diff --git a/net.mograsim.logic.ui.am2900/test/net/mograsim/logic/ui/am2900/TestableAm2901Impl.java b/net.mograsim.logic.ui.am2900/test/net/mograsim/logic/ui/am2900/TestableAm2901Impl.java deleted file mode 100644 index 9ca395af..00000000 --- a/net.mograsim.logic.ui.am2900/test/net/mograsim/logic/ui/am2900/TestableAm2901Impl.java +++ /dev/null @@ -1,367 +0,0 @@ -package net.mograsim.logic.ui.am2900; - -import static org.junit.jupiter.api.Assertions.fail; - -import java.lang.reflect.Field; -import java.util.HashMap; -import java.util.HashSet; -import java.util.LinkedList; -import java.util.Objects; -import java.util.Queue; -import java.util.Set; -import java.util.TreeSet; - -import net.mograsim.logic.core.components.BitDisplay; -import net.mograsim.logic.core.components.ManualSwitch; -import net.mograsim.logic.core.timeline.Timeline; -import net.mograsim.logic.core.types.Bit; -import net.mograsim.logic.core.types.BitVector; -import net.mograsim.logic.core.types.BitVector.BitVectorMutator; -import net.mograsim.logic.ui.model.ViewModel; -import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.logic.ui.model.components.GUIComponent; -import net.mograsim.logic.ui.model.components.atomic.GUIBitDisplay; -import net.mograsim.logic.ui.model.components.atomic.GUIManualSwitch; -import net.mograsim.logic.ui.model.components.mi.nandbased.am2901.GUIAm2901; -import net.mograsim.logic.ui.model.components.submodels.SubmodelComponent; -import net.mograsim.logic.ui.model.wires.GUIWire; -import net.mograsim.logic.ui.modeladapter.LogicModelParameters; -import net.mograsim.logic.ui.modeladapter.ViewLogicModelAdapter; - -public class TestableAm2901Impl implements TestableAm2901 -{ - private GUIAm2901 am2901; - private Timeline timeline; - private ManualSwitch I8, I7, I6, I5, I4, I3, I2, I1, I0; - private ManualSwitch C; - private ManualSwitch Cn; - private ManualSwitch D1, D2, D3, D4; - private ManualSwitch A0, A1, A2, A3; - private ManualSwitch B0, B1, B2, B3; - private ManualSwitch IRAMn, IRAMn_3, IQn, IQn_3; - private BitDisplay Y1, Y2, Y3, Y4; - private BitDisplay F_0, Cn_4, OVR, F3; - private BitDisplay ORAMn, ORAMn_3, OQn, OQn_3; - - private Set wireDebugChangeSet; - private boolean debugWires = false; - public int debugEventThreshold = 10_000; - public int debugEventCount = 500; - - private int eventCounter; - - @Override - public Result run() - { - // Normal execution until completion or eventLimit - int eventLimit = debugEventThreshold; - eventCounter = 0; - debugWires = false; - while (eventCounter < eventLimit) - { - timeline.executeNext(); - if (!timeline.hasNext()) - { -// System.out.println("run() took " + eventCounter + " events"); - return Result.SUCCESS; - } - } - // Start debugging if event limit is reached - debugWires = true; - wireDebugChangeSet = new TreeSet<>(); - Set oldChangeSet; - // observe wire changes to detect, if we are really stuck in an endless loop - do - { - eventLimit += debugEventCount; - oldChangeSet = wireDebugChangeSet; - wireDebugChangeSet = new TreeSet<>(); - while (eventCounter < eventLimit) - { - timeline.executeNext(); - if (!timeline.hasNext()) - { - // no endless loop, but more events needed than expected - System.out.println("run() took longer than expected: " + eventCounter); - return Result.SUCCESS; - } - } - } while (!oldChangeSet.equals(wireDebugChangeSet)); - // if stuck, abort execution and print wires - System.err.print("Problematic Wire updates:"); - wireDebugChangeSet.forEach(System.out::println); - System.err.println("run() failed: " + eventCounter); - return Result.OUT_OF_TIME; - } - - @SuppressWarnings("unused") - @Override - public void setup() - { - // Create view model - ViewModelModifiable viewModel = new ViewModelModifiable(); - am2901 = new GUIAm2901(viewModel); - // Get switches - HashMap idSwitchMap = new HashMap<>(); - for (String id : am2901.getInputPinNames()) - { - GUIManualSwitch sw = new GUIManualSwitch(viewModel); - new GUIWire(viewModel, am2901.getPin(id), sw.getOutputPin()); - idSwitchMap.put(id, sw); - } - // Get displays - HashMap idDisplayMap = new HashMap<>(); - for (String id : am2901.getOutputPinNames()) - { - GUIBitDisplay bd = new GUIBitDisplay(viewModel); -// bd.addRedrawListener(() -> System.out.println(id + " " + bd.getBitDisplay().getDisplayedValue())); - new GUIWire(viewModel, am2901.getPin(id), bd.getInputPin()); - idDisplayMap.put(id, bd); - } - // Create logic model - LogicModelParameters params = new LogicModelParameters(); - params.gateProcessTime = 50; - params.wireTravelTime = 10; - timeline = ViewLogicModelAdapter.convert(viewModel, params); - // Bind switches/displays to this test class - for (var entry : idSwitchMap.entrySet()) - setField(entry.getKey().replaceAll("\\+|=", "_"), entry.getValue().getManualSwitch()); - for (var entry : idDisplayMap.entrySet()) - setField(entry.getKey().replaceAll("\\+|=", "_"), entry.getValue().getBitDisplay()); - - // Debug code - HashSet wiresIncludingSubmodels = new HashSet<>(); - Queue modelsToIterate = new LinkedList<>(); - modelsToIterate.add(viewModel); - while (modelsToIterate.size() > 0) - { - ViewModel model = modelsToIterate.poll(); - wiresIncludingSubmodels.addAll(model.getWires()); - for (GUIComponent comp : model.getComponents()) - if (comp instanceof SubmodelComponent) - modelsToIterate.offer(((SubmodelComponent) comp).submodel); - } - wiresIncludingSubmodels.forEach(w -> w.addRedrawListener(() -> - { - if (debugWires) - { - wireDebugChangeSet.add(w.toString()); - } - })); - timeline.addEventAddedListener(te -> eventCounter++); - } - - @Override - public void setDest(Am2901_Dest dest) - { - var bits = of(dest.ordinal(), 3); - I8.setToValueOf(bits.getBit(0)); - I7.setToValueOf(bits.getBit(1)); - I6.setToValueOf(bits.getBit(2)); - } - - @Override - public void setFunc(Am2901_Func func) - { - var bits = of(func.ordinal(), 3); - I5.setToValueOf(bits.getBit(0)); - I4.setToValueOf(bits.getBit(1)); - I3.setToValueOf(bits.getBit(2)); - } - - @Override - public void setSrc(Am2901_Src src) - { - var bits = of(src.ordinal(), 3); - I2.setToValueOf(bits.getBit(0)); - I1.setToValueOf(bits.getBit(1)); - I0.setToValueOf(bits.getBit(2)); - } - - @Override - public void setReg_A(String val_4_bit) - { - var bits = BitVector.parseMSBFirst(val_4_bit); - A3.setToValueOf(bits.getBit(3)); - A2.setToValueOf(bits.getBit(2)); - A1.setToValueOf(bits.getBit(1)); - A0.setToValueOf(bits.getBit(0)); - } - - @Override - public void setReg_B(String val_4_bit) - { - var bits = BitVector.parseMSBFirst(val_4_bit); - B3.setToValueOf(bits.getBit(3)); - B2.setToValueOf(bits.getBit(2)); - B1.setToValueOf(bits.getBit(1)); - B0.setToValueOf(bits.getBit(0)); - } - - @Override - public void setCarryIn(String val_1_bit) - { - Cn.setToValueOf(Bit.parse(val_1_bit)); - } - - @Override - public void setNotOutEnable(String val_1_bit) - { - throw new UnsupportedOperationException(); // TODO - } - - @Override - public void setD(String val_4_bit) - { - var bits = BitVector.parseMSBFirst(val_4_bit); - D4.setToValueOf(bits.getBit(3)); - D3.setToValueOf(bits.getBit(2)); - D2.setToValueOf(bits.getBit(1)); - D1.setToValueOf(bits.getBit(0)); - } - - @Override - public void setQ_0(String val_1_bit) - { - IQn.setToValueOf(Bit.parse(val_1_bit)); - } - - @Override - public void setQ_3(String val_1_bit) - { - IQn_3.setToValueOf(Bit.parse(val_1_bit)); - } - - @Override - public void setRAM_0(String val_1_bit) - { - IRAMn.setToValueOf(Bit.parse(val_1_bit)); - } - - @Override - public void setRAM_3(String val_1_bit) - { - IRAMn_3.setToValueOf(Bit.parse(val_1_bit)); - } - - @Override - public void clockOn(boolean isClockOn) - { - C.setState(isClockOn); - } - - @Override - public String getQ_0() - { - return OQn.getDisplayedValue().toString(); - } - - @Override - public String getQ_3() - { - return OQn_3.getDisplayedValue().toString(); - } - - @Override - public String getRAM_0() - { - return ORAMn.getDisplayedValue().toString(); - } - - @Override - public String getRAM_3() - { - return ORAMn_3.getDisplayedValue().toString(); - } - - @Override - public String getNotP() - { - throw new UnsupportedOperationException(); // TODO - } - - @Override - public String getNotG() - { - throw new UnsupportedOperationException(); // TODO - } - - @Override - public String getCarryOut() - { - return Cn_4.getDisplayedValue().toString(); - } - - @Override - public String getSign() - { - return F3.getDisplayedValue().toString(); - } - - @Override - public String getZero() - { - return F_0.getDisplayedValue().toString(); - } - - @Override - public String getOverflow() - { - return OVR.getDisplayedValue().toString(); - } - - @Override - public String getY() - { - var y3 = Y4.getDisplayedValue(); - var y2 = Y3.getDisplayedValue(); - var y1 = Y2.getDisplayedValue(); - var y0 = Y1.getDisplayedValue(); - return y0.concat(y1).concat(y2).concat(y3).toBitStringMSBFirst(); - } - - private void setField(String name, Object value) - { - try - { - Field f = TestableAm2901Impl.class.getDeclaredField(name); - f.setAccessible(true); - f.set(this, Objects.requireNonNull(value)); - } - catch (Exception e) - { - fail(e); - } - } - - private static BitVector of(int value, int length) - { - BitVectorMutator mutator = BitVectorMutator.ofLength(length); - int val = value; - for (int i = length - 1; i >= 0; i--) - { - mutator.setBit(i, Bit.lastBitOf(val)); - val >>>= 1; - } - return mutator.toBitVector(); - } - - @Override - public void setDirectly(Register r, String val_4_bit) - { - am2901.setHighLevelState(regToStateID(r), BitVector.parseMSBFirst(val_4_bit)); - } - - @Override - public String getDirectly(Register r) - { - return ((BitVector) am2901.getHighLevelState(regToStateID(r))).toBitStringMSBFirst(); - } - - private static String regToStateID(Register r) - { - if (r == Register.Q) - return "qreg.q"; - return "regs.c" + r.toBitString() + ".q"; - } -} diff --git a/net.mograsim.logic.ui.editor/.classpath b/net.mograsim.logic.ui.editor/.classpath deleted file mode 100644 index c4b0fff7..00000000 --- a/net.mograsim.logic.ui.editor/.classpath +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/net.mograsim.logic.ui.editor/.gitignore b/net.mograsim.logic.ui.editor/.gitignore deleted file mode 100644 index ae3c1726..00000000 --- a/net.mograsim.logic.ui.editor/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/bin/ diff --git a/net.mograsim.logic.ui.editor/.project b/net.mograsim.logic.ui.editor/.project deleted file mode 100644 index 6956b66a..00000000 --- a/net.mograsim.logic.ui.editor/.project +++ /dev/null @@ -1,28 +0,0 @@ - - - net.mograsim.logic.ui.editor - - - - - - org.eclipse.jdt.core.javabuilder - - - - - org.eclipse.pde.ManifestBuilder - - - - - org.eclipse.pde.SchemaBuilder - - - - - - org.eclipse.jdt.core.javanature - org.eclipse.pde.PluginNature - - diff --git a/net.mograsim.logic.ui.editor/.settings/org.eclipse.jdt.core.prefs b/net.mograsim.logic.ui.editor/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index e2561585..00000000 --- a/net.mograsim.logic.ui.editor/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,12 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=11 -org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=11 -org.eclipse.jdt.core.compiler.debug.lineNumber=generate -org.eclipse.jdt.core.compiler.debug.localVariable=generate -org.eclipse.jdt.core.compiler.debug.sourceFile=generate -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.release=enabled -org.eclipse.jdt.core.compiler.source=11 diff --git a/net.mograsim.logic.ui.editor/META-INF/MANIFEST.MF b/net.mograsim.logic.ui.editor/META-INF/MANIFEST.MF deleted file mode 100644 index 45b4e871..00000000 --- a/net.mograsim.logic.ui.editor/META-INF/MANIFEST.MF +++ /dev/null @@ -1,13 +0,0 @@ -Manifest-Version: 1.0 -Bundle-ManifestVersion: 2 -Bundle-Name: Editor -Bundle-SymbolicName: net.mograsim.logic.ui.editor -Bundle-Version: 0.1.0.qualifier -Export-Package: net.mograsim.logic.ui.editor, - net.mograsim.logic.ui.editor.handles, - net.mograsim.logic.ui.editor.states -Require-Bundle: net.mograsim.logic.ui;bundle-version="0.1.0", - net.mograsim.preferences;bundle-version="0.1.0" -Bundle-RequiredExecutionEnvironment: JavaSE-11 -Automatic-Module-Name: net.mograsim.logic.ui -Bundle-Vendor: Mograsim Team diff --git a/net.mograsim.logic.ui.editor/build.properties b/net.mograsim.logic.ui.editor/build.properties deleted file mode 100644 index d1763276..00000000 --- a/net.mograsim.logic.ui.editor/build.properties +++ /dev/null @@ -1,3 +0,0 @@ -source.. = src/ -bin.includes = META-INF/,\ - .,\ \ No newline at end of file diff --git a/net.mograsim.logic.ui.editor/components/GUI_rsLatch.json b/net.mograsim.logic.ui.editor/components/GUI_rsLatch.json deleted file mode 100644 index 1db162da..00000000 --- a/net.mograsim.logic.ui.editor/components/GUI_rsLatch.json +++ /dev/null @@ -1,218 +0,0 @@ -mograsim version: 0.1.3 -{ - "width": 35.0, - "height": 20.0, - "interfacePins": [ - { - "location": { - "x": 35.0, - "y": 5.0 - }, - "name": "Q", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 15.0 - }, - "name": "_Q", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 15.0 - }, - "name": "_R", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 5.0 - }, - "name": "_S", - "logicWidth": 1 - } - ], - "submodel": { - "innerScale": 0.4, - "subComps": [ - { - "pos": { - "x": 10.0, - "y": 7.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 40.0, - "y": 12.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 34.0, - "y": 16.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 64.0, - "y": 36.5 - }, - "id": "WireCrossPoint", - "params": 1 - } - ], - "innerWires": [ - { - "pin1": { - "compId": 0, - "pinName": "_S" - }, - "pin2": { - "compId": 1, - "pinName": "A" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "_R" - }, - "pin2": { - "compId": 2, - "pinName": "B" - }, - "path": [ - { - "x": 35.0, - "y": 37.5 - }, - { - "x": 35.0, - "y": 27.5 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y" - }, - "pin2": { - "compId": 3, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y" - }, - "pin2": { - "compId": 4, - "pinName": "" - }, - "path": [ - { - "x": 65.0, - "y": 22.5 - } - ] - }, - { - "pin1": { - "compId": 3, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "A" - }, - "path": [] - }, - { - "pin1": { - "compId": 4, - "pinName": "" - }, - "pin2": { - "compId": 1, - "pinName": "B" - }, - "path": [ - { - "x": 65.0, - "y": 42.5 - }, - { - "x": 5.0, - "y": 42.5 - }, - { - "x": 5.0, - "y": 22.5 - } - ] - }, - { - "pin1": { - "compId": 3, - "pinName": "" - }, - "pin2": { - "compId": 0, - "pinName": "Q" - }, - "path": [ - { - "x": 35.0, - "y": 17.5 - }, - { - "x": 35.0, - "y": 7.5 - }, - { - "x": 65.0, - "y": 7.5 - }, - { - "x": 65.0, - "y": 12.5 - } - ] - }, - { - "pin1": { - "compId": 4, - "pinName": "" - }, - "pin2": { - "compId": 0, - "pinName": "_Q" - }, - "path": [] - } - ] - }, - "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", - "symbolRendererParams": { - "centerText": "_rsLatch", - "horizontalComponentCenter": 17.5, - "centerTextHeight": 5.0, - "pinLabelHeight": 3.5, - "pinLabelMargin": 0.5 - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.editor/components/GUIand.json b/net.mograsim.logic.ui.editor/components/GUIand.json deleted file mode 100644 index 1b032718..00000000 --- a/net.mograsim.logic.ui.editor/components/GUIand.json +++ /dev/null @@ -1,143 +0,0 @@ -mograsim version: 0.1.3 -{ - "width": 35.0, - "height": 20.0, - "interfacePins": [ - { - "location": { - "x": 0.0, - "y": 5.0 - }, - "name": "A", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 15.0 - }, - "name": "B", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 5.0 - }, - "name": "Y", - "logicWidth": 1 - } - ], - "submodel": { - "innerScale": 0.4, - "subComps": [ - { - "pos": { - "x": 20.0, - "y": 15.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 50.0, - "y": 15.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 44.0, - "y": 24.0 - }, - "id": "WireCrossPoint", - "params": 1 - } - ], - "innerWires": [ - { - "pin1": { - "compId": 0, - "pinName": "A" - }, - "pin2": { - "compId": 1, - "pinName": "A" - } - }, - { - "pin1": { - "compId": 0, - "pinName": "B" - }, - "pin2": { - "compId": 1, - "pinName": "B" - } - }, - { - "pin1": { - "compId": 1, - "pinName": "Y" - }, - "pin2": { - "compId": 3, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 3, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "A" - }, - "path": [ - { - "x": 45.0, - "y": 20.0 - } - ] - }, - { - "pin1": { - "compId": 3, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "B" - }, - "path": [ - { - "x": 45.0, - "y": 30.0 - } - ] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y" - } - } - ] - }, - "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", - "symbolRendererParams": { - "centerText": "GUIand", - "horizontalComponentCenter": 17.5, - "centerTextHeight": 5.0, - "pinLabelHeight": 3.5, - "pinLabelMargin": 0.5 - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.editor/components/GUIand41.json b/net.mograsim.logic.ui.editor/components/GUIand41.json deleted file mode 100644 index 50ce0a3a..00000000 --- a/net.mograsim.logic.ui.editor/components/GUIand41.json +++ /dev/null @@ -1,321 +0,0 @@ -mograsim version: 0.1.3 -{ - "width": 35.0, - "height": 50.0, - "interfacePins": [ - { - "location": { - "x": 0.0, - "y": 5.0 - }, - "name": "A1", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 15.0 - }, - "name": "A2", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 25.0 - }, - "name": "A3", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 45.0 - }, - "name": "B", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 35.0 - }, - "name": "A4", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 5.0 - }, - "name": "Y1", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 15.0 - }, - "name": "Y2", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 25.0 - }, - "name": "Y3", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 35.0 - }, - "name": "Y4", - "logicWidth": 1 - } - ], - "submodel": { - "innerScale": 0.4, - "subComps": [ - { - "pos": { - "x": 30.0, - "y": 7.5 - }, - "id": "GUIand" - }, - { - "pos": { - "x": 30.0, - "y": 32.5 - }, - "id": "GUIand" - }, - { - "pos": { - "x": 30.0, - "y": 57.5 - }, - "id": "GUIand" - }, - { - "pos": { - "x": 30.0, - "y": 82.5 - }, - "id": "GUIand" - }, - { - "pos": { - "x": 24.0, - "y": 46.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 24.0, - "y": 71.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 24.0, - "y": 96.5 - }, - "id": "WireCrossPoint", - "params": 1 - } - ], - "innerWires": [ - { - "pin1": { - "compId": 0, - "pinName": "A1" - }, - "pin2": { - "compId": 1, - "pinName": "A" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "A2" - }, - "pin2": { - "compId": 2, - "pinName": "A" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "A3" - }, - "pin2": { - "compId": 3, - "pinName": "A" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "A4" - }, - "pin2": { - "compId": 4, - "pinName": "A" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "B" - }, - "pin2": { - "compId": 7, - "pinName": "" - }, - "path": [ - { - "x": 25.0, - "y": 112.5 - } - ] - }, - { - "pin1": { - "compId": 7, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "B" - }, - "path": [] - }, - { - "pin1": { - "compId": 7, - "pinName": "" - }, - "pin2": { - "compId": 6, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 6, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "B" - }, - "path": [] - }, - { - "pin1": { - "compId": 6, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 5, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "B" - }, - "path": [] - }, - { - "pin1": { - "compId": 5, - "pinName": "" - }, - "pin2": { - "compId": 1, - "pinName": "B" - }, - "path": [ - { - "x": 25.0, - "y": 22.5 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y1" - }, - "path": [] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y2" - }, - "path": [] - }, - { - "pin1": { - "compId": 3, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y3" - }, - "path": [] - }, - { - "pin1": { - "compId": 4, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y4" - }, - "path": [] - } - ] - }, - "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", - "symbolRendererParams": { - "centerText": "GUIand41", - "horizontalComponentCenter": 17.5, - "centerTextHeight": 5.0, - "pinLabelHeight": 3.5, - "pinLabelMargin": 0.5 - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.editor/components/GUIandor414.json b/net.mograsim.logic.ui.editor/components/GUIandor414.json deleted file mode 100644 index a6765951..00000000 --- a/net.mograsim.logic.ui.editor/components/GUIandor414.json +++ /dev/null @@ -1,485 +0,0 @@ -mograsim version: 0.1.3 -{ - "width": 35.0, - "height": 90.0, - "interfacePins": [ - { - "location": { - "x": 0.0, - "y": 85.0 - }, - "name": "B", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 5.0 - }, - "name": "C1", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 15.0 - }, - "name": "C2", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 25.0 - }, - "name": "C3", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 45.0 - }, - "name": "A1", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 35.0 - }, - "name": "C4", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 55.0 - }, - "name": "A2", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 65.0 - }, - "name": "A3", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 75.0 - }, - "name": "A4", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 5.0 - }, - "name": "Y1", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 15.0 - }, - "name": "Y2", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 25.0 - }, - "name": "Y3", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 35.0 - }, - "name": "Y4", - "logicWidth": 1 - } - ], - "submodel": { - "innerScale": 0.4, - "subComps": [ - { - "pos": { - "x": 15.0, - "y": 137.5 - }, - "id": "GUIand41" - }, - { - "pos": { - "x": 35.0, - "y": 37.5 - }, - "id": "GUIor_4" - } - ], - "innerWires": [ - { - "pin1": { - "compId": 0, - "pinName": "A1" - }, - "pin2": { - "compId": 1, - "pinName": "A1" - }, - "path": [ - { - "x": 10.0, - "y": 112.5 - }, - { - "x": 10.0, - "y": 142.5 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "A2" - }, - "pin2": { - "compId": 1, - "pinName": "A2" - }, - "path": [ - { - "x": 5.0, - "y": 137.5 - }, - { - "x": 5.0, - "y": 152.5 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "A3" - }, - "pin2": { - "compId": 1, - "pinName": "A3" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "A4" - }, - "pin2": { - "compId": 1, - "pinName": "A4" - }, - "path": [ - { - "x": 5.0, - "y": 187.5 - }, - { - "x": 5.0, - "y": 172.5 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "B" - }, - "pin2": { - "compId": 1, - "pinName": "B" - }, - "path": [ - { - "x": 10.0, - "y": 212.5 - }, - { - "x": 10.0, - "y": 182.5 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "C1" - }, - "pin2": { - "compId": 2, - "pinName": "A1" - }, - "path": [ - { - "x": 10.0, - "y": 12.5 - }, - { - "x": 10.0, - "y": 42.5 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "C2" - }, - "pin2": { - "compId": 2, - "pinName": "A2" - }, - "path": [ - { - "x": 5.0, - "y": 37.5 - }, - { - "x": 5.0, - "y": 52.5 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "C3" - }, - "pin2": { - "compId": 2, - "pinName": "A3" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "C4" - }, - "pin2": { - "compId": 2, - "pinName": "A4" - }, - "path": [ - { - "x": 5.0, - "y": 87.5 - }, - { - "x": 5.0, - "y": 72.5 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y1" - }, - "pin2": { - "compId": 2, - "pinName": "B1" - }, - "path": [ - { - "x": 70.0, - "y": 142.5 - }, - { - "x": 70.0, - "y": 120.0 - }, - { - "x": 30.0, - "y": 120.0 - }, - { - "x": 30.0, - "y": 82.5 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y2" - }, - "pin2": { - "compId": 2, - "pinName": "B2" - }, - "path": [ - { - "x": 65.0, - "y": 152.5 - }, - { - "x": 65.0, - "y": 125.0 - }, - { - "x": 25.0, - "y": 125.0 - }, - { - "x": 25.0, - "y": 92.5 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y3" - }, - "pin2": { - "compId": 2, - "pinName": "B3" - }, - "path": [ - { - "x": 60.0, - "y": 162.5 - }, - { - "x": 60.0, - "y": 130.0 - }, - { - "x": 20.0, - "y": 130.0 - }, - { - "x": 20.0, - "y": 102.5 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y4" - }, - "pin2": { - "compId": 2, - "pinName": "B4" - }, - "path": [ - { - "x": 55.0, - "y": 172.5 - }, - { - "x": 55.0, - "y": 135.0 - }, - { - "x": 15.0, - "y": 135.0 - }, - { - "x": 15.0, - "y": 112.5 - } - ] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y1" - }, - "pin2": { - "compId": 0, - "pinName": "Y1" - }, - "path": [ - { - "x": 75.0, - "y": 42.5 - }, - { - "x": 75.0, - "y": 12.5 - } - ] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y2" - }, - "pin2": { - "compId": 0, - "pinName": "Y2" - }, - "path": [ - { - "x": 80.0, - "y": 52.5 - }, - { - "x": 80.0, - "y": 37.5 - } - ] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y3" - }, - "pin2": { - "compId": 0, - "pinName": "Y3" - }, - "path": [] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y4" - }, - "pin2": { - "compId": 0, - "pinName": "Y4" - }, - "path": [ - { - "x": 80.0, - "y": 72.5 - }, - { - "x": 80.0, - "y": 87.5 - } - ] - } - ] - }, - "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", - "symbolRendererParams": { - "centerText": "GUIandor414", - "horizontalComponentCenter": 17.5, - "centerTextHeight": 5.0, - "pinLabelHeight": 3.5, - "pinLabelMargin": 0.5 - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.editor/components/GUIdemux2.json b/net.mograsim.logic.ui.editor/components/GUIdemux2.json deleted file mode 100644 index 3d774456..00000000 --- a/net.mograsim.logic.ui.editor/components/GUIdemux2.json +++ /dev/null @@ -1,497 +0,0 @@ -mograsim version: 0.1.3 -{ - "width": 35.0, - "height": 40.0, - "interfacePins": [ - { - "location": { - "x": 35.0, - "y": 5.0 - }, - "name": "Y00", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 35.0 - }, - "name": "Y11", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 25.0 - }, - "name": "Y10", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 15.0 - }, - "name": "Y01", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 5.0 - }, - "name": "S0", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 15.0 - }, - "name": "S1", - "logicWidth": 1 - } - ], - "submodel": { - "innerScale": 0.4, - "subComps": [ - { - "pos": { - "x": 10.0, - "y": 2.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 10.0, - "y": 27.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 40.0, - "y": 2.5 - }, - "id": "GUIand" - }, - { - "pos": { - "x": 40.0, - "y": 27.5 - }, - "id": "GUIand" - }, - { - "pos": { - "x": 40.0, - "y": 52.5 - }, - "id": "GUIand" - }, - { - "pos": { - "x": 40.0, - "y": 77.5 - }, - "id": "GUIand" - }, - { - "pos": { - "x": 6.5, - "y": 11.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 6.5, - "y": 16.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 36.5, - "y": 61.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 4.0, - "y": 36.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 4.0, - "y": 41.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 31.5, - "y": 66.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 31.5, - "y": 11.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 34.0, - "y": 36.5 - }, - "id": "WireCrossPoint", - "params": 1 - } - ], - "innerWires": [ - { - "pin1": { - "compId": 0, - "pinName": "S0" - }, - "pin2": { - "compId": 7, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "S1" - }, - "pin2": { - "compId": 10, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 7, - "pinName": "" - }, - "pin2": { - "compId": 1, - "pinName": "A" - }, - "path": [ - { - "x": 7.5, - "y": 7.5 - } - ] - }, - { - "pin1": { - "compId": 10, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "A" - }, - "path": [ - { - "x": 5.0, - "y": 32.5 - } - ] - }, - { - "pin1": { - "compId": 7, - "pinName": "" - }, - "pin2": { - "compId": 8, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 10, - "pinName": "" - }, - "pin2": { - "compId": 11, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 8, - "pinName": "" - }, - "pin2": { - "compId": 1, - "pinName": "B" - }, - "path": [] - }, - { - "pin1": { - "compId": 11, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "B" - }, - "path": [] - }, - { - "pin1": { - "compId": 8, - "pinName": "" - }, - "pin2": { - "compId": 9, - "pinName": "" - }, - "path": [ - { - "x": 7.5, - "y": 62.5 - } - ] - }, - { - "pin1": { - "compId": 11, - "pinName": "" - }, - "pin2": { - "compId": 12, - "pinName": "" - }, - "path": [ - { - "x": 5.0, - "y": 67.5 - }, - { - "x": 32.5, - "y": 67.5 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y" - }, - "pin2": { - "compId": 13, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y" - }, - "pin2": { - "compId": 14, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 13, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "A" - }, - "path": [ - { - "x": 32.5, - "y": 7.5 - } - ] - }, - { - "pin1": { - "compId": 14, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "B" - }, - "path": [ - { - "x": 35.0, - "y": 17.5 - } - ] - }, - { - "pin1": { - "compId": 9, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "A" - }, - "path": [ - { - "x": 37.5, - "y": 32.5 - } - ] - }, - { - "pin1": { - "compId": 14, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "B" - }, - "path": [ - { - "x": 35.0, - "y": 42.5 - } - ] - }, - { - "pin1": { - "compId": 13, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "A" - }, - "path": [ - { - "x": 32.5, - "y": 57.5 - } - ] - }, - { - "pin1": { - "compId": 12, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "B" - }, - "path": [] - }, - { - "pin1": { - "compId": 9, - "pinName": "" - }, - "pin2": { - "compId": 6, - "pinName": "A" - }, - "path": [ - { - "x": 37.5, - "y": 82.5 - } - ] - }, - { - "pin1": { - "compId": 12, - "pinName": "" - }, - "pin2": { - "compId": 6, - "pinName": "B" - }, - "path": [ - { - "x": 32.5, - "y": 92.5 - } - ] - }, - { - "pin1": { - "compId": 3, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y00" - } - }, - { - "pin1": { - "compId": 4, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y01" - } - }, - { - "pin1": { - "compId": 5, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y10" - } - }, - { - "pin1": { - "compId": 6, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y11" - } - } - ] - }, - "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", - "symbolRendererParams": { - "centerText": "GUIdemux2", - "horizontalComponentCenter": 17.5, - "centerTextHeight": 5.0, - "pinLabelHeight": 3.5, - "pinLabelMargin": 0.5 - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.editor/components/GUIdff.json b/net.mograsim.logic.ui.editor/components/GUIdff.json deleted file mode 100644 index be06355d..00000000 --- a/net.mograsim.logic.ui.editor/components/GUIdff.json +++ /dev/null @@ -1,320 +0,0 @@ -mograsim version: 0.1.3 -{ - "width": 35.0, - "height": 20.0, - "interfacePins": [ - { - "location": { - "x": 35.0, - "y": 5.0 - }, - "name": "Q", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 15.0 - }, - "name": "_Q", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 5.0 - }, - "name": "C", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 15.0 - }, - "name": "D", - "logicWidth": 1 - } - ], - "submodel": { - "innerScale": 0.2, - "subComps": [ - { - "pos": { - "x": 40.0, - "y": 10.0 - }, - "id": "GUI_rsLatch" - }, - { - "pos": { - "x": 40.0, - "y": 40.0 - }, - "id": "GUInand3" - }, - { - "pos": { - "x": 120.0, - "y": 60.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 120.0, - "y": 30.0 - }, - "id": "GUI_rsLatch" - }, - { - "pos": { - "x": 9.0, - "y": 24.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 19.0, - "y": 64.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 99.0, - "y": 34.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 99.0, - "y": 44.0 - }, - "id": "WireCrossPoint", - "params": 1 - } - ], - "innerWires": [ - { - "pin1": { - "compId": 0, - "pinName": "C" - }, - "pin2": { - "compId": 5, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 5, - "pinName": "" - }, - "pin2": { - "compId": 1, - "pinName": "_R" - }, - "path": [] - }, - { - "pin1": { - "compId": 5, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "B" - }, - "path": [ - { - "x": 10.0, - "y": 55.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "D" - }, - "pin2": { - "compId": 3, - "pinName": "B" - }, - "path": [] - }, - { - "pin1": { - "compId": 3, - "pinName": "Y" - }, - "pin2": { - "compId": 6, - "pinName": "" - }, - "path": [ - { - "x": 145.0, - "y": 70.0 - }, - { - "x": 145.0, - "y": 85.0 - }, - { - "x": 20.0, - "y": 85.0 - } - ] - }, - { - "pin1": { - "compId": 6, - "pinName": "" - }, - "pin2": { - "compId": 1, - "pinName": "_S" - }, - "path": [ - { - "x": 20.0, - "y": 15.0 - } - ] - }, - { - "pin1": { - "compId": 6, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "C" - }, - "path": [] - }, - { - "pin1": { - "compId": 1, - "pinName": "_Q" - }, - "pin2": { - "compId": 7, - "pinName": "" - }, - "path": [ - { - "x": 100.0, - "y": 25.0 - } - ] - }, - { - "pin1": { - "compId": 7, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "A" - }, - "path": [ - { - "x": 30.0, - "y": 35.0 - }, - { - "x": 30.0, - "y": 45.0 - } - ] - }, - { - "pin1": { - "compId": 7, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "_S" - }, - "path": [] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y" - }, - "pin2": { - "compId": 8, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 8, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "_R" - }, - "path": [] - }, - { - "pin1": { - "compId": 8, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "A" - }, - "path": [ - { - "x": 100.0, - "y": 65.0 - } - ] - }, - { - "pin1": { - "compId": 4, - "pinName": "Q" - }, - "pin2": { - "compId": 0, - "pinName": "Q" - } - }, - { - "pin1": { - "compId": 4, - "pinName": "_Q" - }, - "pin2": { - "compId": 0, - "pinName": "_Q" - } - } - ] - }, - "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", - "symbolRendererParams": { - "centerText": "GUIdff", - "horizontalComponentCenter": 17.5, - "centerTextHeight": 5.0, - "pinLabelHeight": 3.5, - "pinLabelMargin": 0.5 - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.editor/components/GUIdlatch.json b/net.mograsim.logic.ui.editor/components/GUIdlatch.json deleted file mode 100644 index 7497d34c..00000000 --- a/net.mograsim.logic.ui.editor/components/GUIdlatch.json +++ /dev/null @@ -1,233 +0,0 @@ -mograsim version: 0.1.3 -{ - "width": 35.0, - "height": 20.0, - "interfacePins": [ - { - "location": { - "x": 35.0, - "y": 5.0 - }, - "name": "Q", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 15.0 - }, - "name": "_Q", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 5.0 - }, - "name": "D", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 15.0 - }, - "name": "E", - "logicWidth": 1 - } - ], - "submodel": { - "innerScale": 0.4, - "subComps": [ - { - "pos": { - "x": 10.0, - "y": 2.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 15.0, - "y": 27.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 45.0, - "y": 7.5 - }, - "id": "GUI_rsLatch" - }, - { - "pos": { - "x": 4.0, - "y": 36.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 34.0, - "y": 11.5 - }, - "id": "WireCrossPoint", - "params": 1 - } - ], - "innerWires": [ - { - "pin1": { - "compId": 0, - "pinName": "D" - }, - "pin2": { - "compId": 1, - "pinName": "A" - } - }, - { - "pin1": { - "compId": 0, - "pinName": "E" - }, - "pin2": { - "compId": 4, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 4, - "pinName": "" - }, - "pin2": { - "compId": 1, - "pinName": "B" - }, - "path": [ - { - "x": 5.0, - "y": 17.5 - } - ] - }, - { - "pin1": { - "compId": 4, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "B" - }, - "path": [ - { - "x": 5.0, - "y": 42.5 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y" - }, - "pin2": { - "compId": 5, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 5, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "A" - }, - "path": [ - { - "x": 35.0, - "y": 25.0 - }, - { - "x": 10.0, - "y": 25.0 - }, - { - "x": 10.0, - "y": 32.5 - } - ] - }, - { - "pin1": { - "compId": 5, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "_S" - }, - "path": [] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y" - }, - "pin2": { - "compId": 3, - "pinName": "_R" - }, - "path": [ - { - "x": 40.0, - "y": 37.5 - }, - { - "x": 40.0, - "y": 22.5 - } - ] - }, - { - "pin1": { - "compId": 3, - "pinName": "Q" - }, - "pin2": { - "compId": 0, - "pinName": "Q" - }, - "path": [] - }, - { - "pin1": { - "compId": 3, - "pinName": "_Q" - }, - "pin2": { - "compId": 0, - "pinName": "_Q" - } - } - ] - }, - "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", - "symbolRendererParams": { - "centerText": "GUIdlatch", - "horizontalComponentCenter": 17.5, - "centerTextHeight": 5.0, - "pinLabelHeight": 3.5, - "pinLabelMargin": 0.5 - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.editor/components/GUIdlatch4.json b/net.mograsim.logic.ui.editor/components/GUIdlatch4.json deleted file mode 100644 index 00b260d9..00000000 --- a/net.mograsim.logic.ui.editor/components/GUIdlatch4.json +++ /dev/null @@ -1,321 +0,0 @@ -mograsim version: 0.1.3 -{ - "width": 35.0, - "height": 50.0, - "interfacePins": [ - { - "location": { - "x": 0.0, - "y": 35.0 - }, - "name": "D4", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 5.0 - }, - "name": "Q1", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 15.0 - }, - "name": "Q2", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 25.0 - }, - "name": "Q3", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 45.0 - }, - "name": "C", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 35.0 - }, - "name": "Q4", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 5.0 - }, - "name": "D1", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 15.0 - }, - "name": "D2", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 25.0 - }, - "name": "D3", - "logicWidth": 1 - } - ], - "submodel": { - "innerScale": 0.4, - "subComps": [ - { - "pos": { - "x": 30.0, - "y": 7.5 - }, - "id": "GUIdlatch" - }, - { - "pos": { - "x": 30.0, - "y": 32.5 - }, - "id": "GUIdlatch" - }, - { - "pos": { - "x": 30.0, - "y": 57.5 - }, - "id": "GUIdlatch" - }, - { - "pos": { - "x": 30.0, - "y": 82.5 - }, - "id": "GUIdlatch" - }, - { - "pos": { - "x": 14.0, - "y": 46.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 14.0, - "y": 71.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 14.0, - "y": 96.5 - }, - "id": "WireCrossPoint", - "params": 1 - } - ], - "innerWires": [ - { - "pin1": { - "compId": 0, - "pinName": "C" - }, - "pin2": { - "compId": 7, - "pinName": "" - }, - "path": [ - { - "x": 15.0, - "y": 112.5 - } - ] - }, - { - "pin1": { - "compId": 7, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "E" - }, - "path": [] - }, - { - "pin1": { - "compId": 7, - "pinName": "" - }, - "pin2": { - "compId": 6, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 6, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "E" - }, - "path": [] - }, - { - "pin1": { - "compId": 6, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 5, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "E" - }, - "path": [] - }, - { - "pin1": { - "compId": 5, - "pinName": "" - }, - "pin2": { - "compId": 1, - "pinName": "E" - }, - "path": [ - { - "x": 15.0, - "y": 22.5 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "D1" - }, - "pin2": { - "compId": 1, - "pinName": "D" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "D2" - }, - "pin2": { - "compId": 2, - "pinName": "D" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "D3" - }, - "pin2": { - "compId": 3, - "pinName": "D" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "D4" - }, - "pin2": { - "compId": 4, - "pinName": "D" - }, - "path": [] - }, - { - "pin1": { - "compId": 1, - "pinName": "Q" - }, - "pin2": { - "compId": 0, - "pinName": "Q1" - }, - "path": [] - }, - { - "pin1": { - "compId": 2, - "pinName": "Q" - }, - "pin2": { - "compId": 0, - "pinName": "Q2" - }, - "path": [] - }, - { - "pin1": { - "compId": 3, - "pinName": "Q" - }, - "pin2": { - "compId": 0, - "pinName": "Q3" - }, - "path": [] - }, - { - "pin1": { - "compId": 4, - "pinName": "Q" - }, - "pin2": { - "compId": 0, - "pinName": "Q4" - }, - "path": [] - } - ] - }, - "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", - "symbolRendererParams": { - "centerText": "GUIdlatch4", - "horizontalComponentCenter": 17.5, - "centerTextHeight": 5.0, - "pinLabelHeight": 3.5, - "pinLabelMargin": 0.5 - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.editor/components/GUIfulladder.json b/net.mograsim.logic.ui.editor/components/GUIfulladder.json deleted file mode 100644 index 1a8b2459..00000000 --- a/net.mograsim.logic.ui.editor/components/GUIfulladder.json +++ /dev/null @@ -1,185 +0,0 @@ -mograsim version: 0.1.3 -{ - "width": 35.0, - "height": 30.0, - "interfacePins": [ - { - "location": { - "x": 0.0, - "y": 5.0 - }, - "name": "A", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 15.0 - }, - "name": "B", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 25.0 - }, - "name": "C", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 5.0 - }, - "name": "Y", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 15.0 - }, - "name": "Z", - "logicWidth": 1 - } - ], - "submodel": { - "innerScale": 0.4, - "subComps": [ - { - "pos": { - "x": 5.0, - "y": 40.0 - }, - "id": "GUIhalfadder" - }, - { - "pos": { - "x": 45.0, - "y": 7.5 - }, - "id": "GUIhalfadder" - }, - { - "pos": { - "x": 57.5, - "y": 40.0 - }, - "id": "GUINandGate", - "params": 1 - } - ], - "innerWires": [ - { - "pin1": { - "compId": 0, - "pinName": "A" - }, - "pin2": { - "compId": 2, - "pinName": "A" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "B" - }, - "pin2": { - "compId": 1, - "pinName": "A" - } - }, - { - "pin1": { - "compId": 0, - "pinName": "C" - }, - "pin2": { - "compId": 1, - "pinName": "B" - } - }, - { - "pin1": { - "compId": 1, - "pinName": "Y" - }, - "pin2": { - "compId": 2, - "pinName": "B" - } - }, - { - "pin1": { - "compId": 1, - "pinName": "_Z" - }, - "pin2": { - "compId": 3, - "pinName": "B" - }, - "path": [] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y" - }, - "path": [] - }, - { - "pin1": { - "compId": 2, - "pinName": "_Z" - }, - "pin2": { - "compId": 3, - "pinName": "A" - }, - "path": [ - { - "x": 82.5, - "y": 22.5 - }, - { - "x": 82.5, - "y": 35.0 - }, - { - "x": 52.5, - "y": 35.0 - }, - { - "x": 52.5, - "y": 45.0 - } - ] - }, - { - "pin1": { - "compId": 3, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Z" - } - } - ] - }, - "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", - "symbolRendererParams": { - "centerText": "GUIfulladder", - "horizontalComponentCenter": 17.5, - "centerTextHeight": 5.0, - "pinLabelHeight": 3.5, - "pinLabelMargin": 0.5 - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.editor/components/GUIhalfadder.json b/net.mograsim.logic.ui.editor/components/GUIhalfadder.json deleted file mode 100644 index 1714a4d4..00000000 --- a/net.mograsim.logic.ui.editor/components/GUIhalfadder.json +++ /dev/null @@ -1,310 +0,0 @@ -mograsim version: 0.1.3 -{ - "width": 35.0, - "height": 20.0, - "interfacePins": [ - { - "location": { - "x": 0.0, - "y": 5.0 - }, - "name": "A", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 15.0 - }, - "name": "B", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 5.0 - }, - "name": "Y", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 15.0 - }, - "name": "_Z", - "logicWidth": 1 - } - ], - "submodel": { - "innerScale": 0.4, - "subComps": [ - { - "pos": { - "x": 10.0, - "y": 15.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 40.0, - "y": 2.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 40.0, - "y": 27.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 65.0, - "y": 2.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 4.0, - "y": 11.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 4.0, - "y": 36.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 34.0, - "y": 24.0 - }, - "id": "WireCrossPoint", - "params": 1 - } - ], - "innerWires": [ - { - "pin1": { - "compId": 0, - "pinName": "A" - }, - "pin2": { - "compId": 5, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 5, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "A" - }, - "path": [ - { - "x": 5.0, - "y": 7.5 - } - ] - }, - { - "pin1": { - "compId": 5, - "pinName": "" - }, - "pin2": { - "compId": 1, - "pinName": "A" - }, - "path": [ - { - "x": 5.0, - "y": 20.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "B" - }, - "pin2": { - "compId": 6, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 6, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "B" - }, - "path": [ - { - "x": 5.0, - "y": 42.5 - } - ] - }, - { - "pin1": { - "compId": 6, - "pinName": "" - }, - "pin2": { - "compId": 1, - "pinName": "B" - }, - "path": [ - { - "x": 5.0, - "y": 30.0 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y" - }, - "pin2": { - "compId": 7, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 7, - "pinName": "" - }, - "pin2": { - "compId": 0, - "pinName": "_Z" - }, - "path": [ - { - "x": 80.0, - "y": 25.0 - }, - { - "x": 80.0, - "y": 37.5 - } - ] - }, - { - "pin1": { - "compId": 7, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "B" - }, - "path": [ - { - "x": 35.0, - "y": 17.5 - } - ] - }, - { - "pin1": { - "compId": 7, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "A" - }, - "path": [ - { - "x": 35.0, - "y": 32.5 - } - ] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y" - }, - "pin2": { - "compId": 4, - "pinName": "A" - }, - "path": [ - { - "x": 62.5, - "y": 12.5 - }, - { - "x": 62.5, - "y": 7.5 - } - ] - }, - { - "pin1": { - "compId": 3, - "pinName": "Y" - }, - "pin2": { - "compId": 4, - "pinName": "B" - }, - "path": [ - { - "x": 62.5, - "y": 37.5 - }, - { - "x": 62.5, - "y": 17.5 - } - ] - }, - { - "pin1": { - "compId": 4, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y" - }, - "path": [] - } - ] - }, - "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", - "symbolRendererParams": { - "centerText": "GUIhalfadder", - "horizontalComponentCenter": 17.5, - "centerTextHeight": 5.0, - "pinLabelHeight": 3.5, - "pinLabelMargin": 0.5 - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.editor/components/GUImux1.json b/net.mograsim.logic.ui.editor/components/GUImux1.json deleted file mode 100644 index 856a0f3d..00000000 --- a/net.mograsim.logic.ui.editor/components/GUImux1.json +++ /dev/null @@ -1,224 +0,0 @@ -mograsim version: 0.1.3 -{ - "width": 35.0, - "height": 30.0, - "interfacePins": [ - { - "location": { - "x": 0.0, - "y": 15.0 - }, - "name": "I0", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 25.0 - }, - "name": "I1", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 5.0 - }, - "name": "Y", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 5.0 - }, - "name": "S0", - "logicWidth": 1 - } - ], - "submodel": { - "innerScale": 0.4, - "subComps": [ - { - "pos": { - "x": 10.0, - "y": 7.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 35.0, - "y": 22.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 35.0, - "y": 47.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 60.0, - "y": 30.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 4.0, - "y": 11.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 4.0, - "y": 21.5 - }, - "id": "WireCrossPoint", - "params": 1 - } - ], - "innerWires": [ - { - "pin1": { - "compId": 0, - "pinName": "S0" - }, - "pin2": { - "compId": 5, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 5, - "pinName": "" - }, - "pin2": { - "compId": 1, - "pinName": "A" - }, - "path": [] - }, - { - "pin1": { - "compId": 5, - "pinName": "" - }, - "pin2": { - "compId": 6, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 6, - "pinName": "" - }, - "pin2": { - "compId": 1, - "pinName": "B" - }, - "path": [] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y" - }, - "pin2": { - "compId": 2, - "pinName": "A" - } - }, - { - "pin1": { - "compId": 0, - "pinName": "I0" - }, - "pin2": { - "compId": 2, - "pinName": "B" - }, - "path": [] - }, - { - "pin1": { - "compId": 6, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "A" - }, - "path": [ - { - "x": 5.0, - "y": 52.5 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "I1" - }, - "pin2": { - "compId": 3, - "pinName": "B" - }, - "path": [] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y" - }, - "pin2": { - "compId": 4, - "pinName": "A" - } - }, - { - "pin1": { - "compId": 3, - "pinName": "Y" - }, - "pin2": { - "compId": 4, - "pinName": "B" - } - }, - { - "pin1": { - "compId": 4, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y" - } - } - ] - }, - "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", - "symbolRendererParams": { - "centerText": "GUImux1", - "horizontalComponentCenter": 17.5, - "centerTextHeight": 5.0, - "pinLabelHeight": 3.5, - "pinLabelMargin": 0.5 - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.editor/components/GUImux1_4.json b/net.mograsim.logic.ui.editor/components/GUImux1_4.json deleted file mode 100644 index f69adfce..00000000 --- a/net.mograsim.logic.ui.editor/components/GUImux1_4.json +++ /dev/null @@ -1,461 +0,0 @@ -mograsim version: 0.1.3 -{ - "width": 35.0, - "height": 90.0, - "interfacePins": [ - { - "location": { - "x": 0.0, - "y": 15.0 - }, - "name": "I0_1", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 5.0 - }, - "name": "Y1", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 15.0 - }, - "name": "Y2", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 35.0 - }, - "name": "I0_3", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 65.0 - }, - "name": "I1_2", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 25.0 - }, - "name": "Y3", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 25.0 - }, - "name": "I0_2", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 55.0 - }, - "name": "I1_1", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 35.0 - }, - "name": "Y4", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 85.0 - }, - "name": "I1_4", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 5.0 - }, - "name": "S0", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 45.0 - }, - "name": "I0_4", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 75.0 - }, - "name": "I1_3", - "logicWidth": 1 - } - ], - "submodel": { - "innerScale": 0.4, - "subComps": [ - { - "pos": { - "x": 30.0, - "y": 7.5 - }, - "id": "GUImux1" - }, - { - "pos": { - "x": 30.0, - "y": 42.5 - }, - "id": "GUImux1" - }, - { - "pos": { - "x": 30.0, - "y": 77.5 - }, - "id": "GUImux1" - }, - { - "pos": { - "x": 30.0, - "y": 112.5 - }, - "id": "GUImux1" - }, - { - "pos": { - "x": 24.0, - "y": 11.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 24.0, - "y": 46.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 24.0, - "y": 81.5 - }, - "id": "WireCrossPoint", - "params": 1 - } - ], - "innerWires": [ - { - "pin1": { - "compId": 0, - "pinName": "S0" - }, - "pin2": { - "compId": 5, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 5, - "pinName": "" - }, - "pin2": { - "compId": 1, - "pinName": "S0" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "I0_1" - }, - "pin2": { - "compId": 1, - "pinName": "I0" - }, - "path": [ - { - "x": 5.0, - "y": 37.5 - }, - { - "x": 5.0, - "y": 22.5 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "I1_1" - }, - "pin2": { - "compId": 1, - "pinName": "I1" - }, - "path": [ - { - "x": 10.0, - "y": 137.5 - }, - { - "x": 10.0, - "y": 32.5 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y1" - }, - "path": [] - }, - { - "pin1": { - "compId": 5, - "pinName": "" - }, - "pin2": { - "compId": 6, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 6, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "S0" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "I0_2" - }, - "pin2": { - "compId": 2, - "pinName": "I0" - }, - "path": [ - { - "x": 5.0, - "y": 62.5 - }, - { - "x": 5.0, - "y": 57.5 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "I1_2" - }, - "pin2": { - "compId": 2, - "pinName": "I1" - }, - "path": [ - { - "x": 15.0, - "y": 162.5 - }, - { - "x": 15.0, - "y": 67.5 - } - ] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y2" - } - }, - { - "pin1": { - "compId": 6, - "pinName": "" - }, - "pin2": { - "compId": 7, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 7, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "S0" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "I0_3" - }, - "pin2": { - "compId": 3, - "pinName": "I0" - }, - "path": [ - { - "x": 5.0, - "y": 87.5 - }, - { - "x": 5.0, - "y": 92.5 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "I1_3" - }, - "pin2": { - "compId": 3, - "pinName": "I1" - }, - "path": [ - { - "x": 20.0, - "y": 187.5 - }, - { - "x": 20.0, - "y": 102.5 - } - ] - }, - { - "pin1": { - "compId": 3, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y3" - } - }, - { - "pin1": { - "compId": 7, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "S0" - }, - "path": [ - { - "x": 25.0, - "y": 117.5 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "I0_4" - }, - "pin2": { - "compId": 4, - "pinName": "I0" - }, - "path": [ - { - "x": 5.0, - "y": 112.5 - }, - { - "x": 5.0, - "y": 127.5 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "I1_4" - }, - "pin2": { - "compId": 4, - "pinName": "I1" - }, - "path": [ - { - "x": 25.0, - "y": 212.5 - }, - { - "x": 25.0, - "y": 137.5 - } - ] - }, - { - "pin1": { - "compId": 4, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y4" - } - } - ] - }, - "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", - "symbolRendererParams": { - "centerText": "GUImux1_4", - "horizontalComponentCenter": 17.5, - "centerTextHeight": 5.0, - "pinLabelHeight": 3.5, - "pinLabelMargin": 0.5 - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.editor/components/GUInand3.json b/net.mograsim.logic.ui.editor/components/GUInand3.json deleted file mode 100644 index 5ae7657a..00000000 --- a/net.mograsim.logic.ui.editor/components/GUInand3.json +++ /dev/null @@ -1,200 +0,0 @@ -mograsim version: 0.1.3 -{ - "width": 35.0, - "height": 30.0, - "interfacePins": [ - { - "location": { - "x": 0.0, - "y": 5.0 - }, - "name": "A", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 15.0 - }, - "name": "B", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 25.0 - }, - "name": "C", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 5.0 - }, - "name": "Y", - "logicWidth": 1 - } - ], - "submodel": { - "innerScale": 0.4, - "subComps": [ - { - "pos": { - "x": 10.0, - "y": 15.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 35.0, - "y": 15.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 62.5, - "y": 2.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 31.5, - "y": 24.0 - }, - "id": "WireCrossPoint", - "params": 1 - } - ], - "innerWires": [ - { - "pin1": { - "compId": 0, - "pinName": "A" - }, - "pin2": { - "compId": 1, - "pinName": "A" - } - }, - { - "pin1": { - "compId": 0, - "pinName": "B" - }, - "pin2": { - "compId": 1, - "pinName": "B" - } - }, - { - "pin1": { - "compId": 1, - "pinName": "Y" - }, - "pin2": { - "compId": 4, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 4, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "A" - }, - "path": [ - { - "x": 32.5, - "y": 20.0 - } - ] - }, - { - "pin1": { - "compId": 4, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "B" - }, - "path": [ - { - "x": 32.5, - "y": 30.0 - } - ] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y" - }, - "pin2": { - "compId": 3, - "pinName": "A" - }, - "path": [ - { - "x": 57.5, - "y": 25.0 - }, - { - "x": 57.5, - "y": 7.5 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "C" - }, - "pin2": { - "compId": 3, - "pinName": "B" - }, - "path": [ - { - "x": 60.0, - "y": 62.5 - }, - { - "x": 60.0, - "y": 17.5 - } - ] - }, - { - "pin1": { - "compId": 3, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y" - }, - "path": [] - } - ] - }, - "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", - "symbolRendererParams": { - "centerText": "GUInand3", - "horizontalComponentCenter": 17.5, - "centerTextHeight": 5.0, - "pinLabelHeight": 3.5, - "pinLabelMargin": 0.5 - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.editor/components/GUInot4.json b/net.mograsim.logic.ui.editor/components/GUInot4.json deleted file mode 100644 index fb548eba..00000000 --- a/net.mograsim.logic.ui.editor/components/GUInot4.json +++ /dev/null @@ -1,366 +0,0 @@ -mograsim version: 0.1.3 -{ - "width": 35.0, - "height": 40.0, - "interfacePins": [ - { - "location": { - "x": 0.0, - "y": 5.0 - }, - "name": "A1", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 15.0 - }, - "name": "A2", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 25.0 - }, - "name": "A3", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 35.0 - }, - "name": "A4", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 5.0 - }, - "name": "Y1", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 15.0 - }, - "name": "Y2", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 25.0 - }, - "name": "Y3", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 35.0 - }, - "name": "Y4", - "logicWidth": 1 - } - ], - "submodel": { - "innerScale": 0.4, - "subComps": [ - { - "pos": { - "x": 30.0, - "y": 2.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 30.0, - "y": 27.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 30.0, - "y": 52.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 30.0, - "y": 77.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 14.0, - "y": 11.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 14.0, - "y": 36.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 14.0, - "y": 61.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 14.0, - "y": 86.5 - }, - "id": "WireCrossPoint", - "params": 1 - } - ], - "innerWires": [ - { - "pin1": { - "compId": 0, - "pinName": "A1" - }, - "pin2": { - "compId": 5, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "A2" - }, - "pin2": { - "compId": 6, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "A3" - }, - "pin2": { - "compId": 7, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "A4" - }, - "pin2": { - "compId": 8, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 5, - "pinName": "" - }, - "pin2": { - "compId": 1, - "pinName": "A" - }, - "path": [ - { - "x": 15.0, - "y": 7.5 - } - ] - }, - { - "pin1": { - "compId": 6, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "A" - }, - "path": [ - { - "x": 15.0, - "y": 32.5 - } - ] - }, - { - "pin1": { - "compId": 7, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "A" - }, - "path": [ - { - "x": 15.0, - "y": 57.5 - } - ] - }, - { - "pin1": { - "compId": 8, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "A" - }, - "path": [ - { - "x": 15.0, - "y": 82.5 - } - ] - }, - { - "pin1": { - "compId": 5, - "pinName": "" - }, - "pin2": { - "compId": 1, - "pinName": "B" - }, - "path": [ - { - "x": 15.0, - "y": 17.5 - } - ] - }, - { - "pin1": { - "compId": 6, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "B" - }, - "path": [ - { - "x": 15.0, - "y": 42.5 - } - ] - }, - { - "pin1": { - "compId": 7, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "B" - }, - "path": [ - { - "x": 15.0, - "y": 67.5 - } - ] - }, - { - "pin1": { - "compId": 8, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "B" - }, - "path": [ - { - "x": 15.0, - "y": 92.5 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y1" - }, - "path": [] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y2" - }, - "path": [] - }, - { - "pin1": { - "compId": 3, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y3" - }, - "path": [] - }, - { - "pin1": { - "compId": 4, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y4" - }, - "path": [] - } - ] - }, - "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", - "symbolRendererParams": { - "centerText": "GUInot4", - "horizontalComponentCenter": 17.5, - "centerTextHeight": 5.0, - "pinLabelHeight": 3.5, - "pinLabelMargin": 0.5 - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.editor/components/GUIor4.json b/net.mograsim.logic.ui.editor/components/GUIor4.json deleted file mode 100644 index f07bd8a4..00000000 --- a/net.mograsim.logic.ui.editor/components/GUIor4.json +++ /dev/null @@ -1,510 +0,0 @@ -mograsim version: 0.1.3 -{ - "width": 35.0, - "height": 40.0, - "interfacePins": [ - { - "location": { - "x": 0.0, - "y": 5.0 - }, - "name": "A1", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 15.0 - }, - "name": "A2", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 25.0 - }, - "name": "A3", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 35.0 - }, - "name": "A4", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 5.0 - }, - "name": "Y", - "logicWidth": 1 - } - ], - "submodel": { - "innerScale": 0.2, - "subComps": [ - { - "pos": { - "x": 20.0, - "y": 15.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 20.0, - "y": 65.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 20.0, - "y": 115.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 20.0, - "y": 165.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 50.0, - "y": 40.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 50.0, - "y": 140.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 110.0, - "y": 40.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 110.0, - "y": 140.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 140.0, - "y": 90.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 14.0, - "y": 24.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 14.0, - "y": 74.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 14.0, - "y": 124.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 14.0, - "y": 174.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 104.0, - "y": 49.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 104.0, - "y": 149.0 - }, - "id": "WireCrossPoint", - "params": 1 - } - ], - "innerWires": [ - { - "pin1": { - "compId": 0, - "pinName": "A1" - }, - "pin2": { - "compId": 10, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "A2" - }, - "pin2": { - "compId": 11, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "A3" - }, - "pin2": { - "compId": 12, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "A4" - }, - "pin2": { - "compId": 13, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 10, - "pinName": "" - }, - "pin2": { - "compId": 1, - "pinName": "A" - }, - "path": [ - { - "x": 15.0, - "y": 20.0 - } - ] - }, - { - "pin1": { - "compId": 11, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "A" - }, - "path": [ - { - "x": 15.0, - "y": 70.0 - } - ] - }, - { - "pin1": { - "compId": 12, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "A" - }, - "path": [ - { - "x": 15.0, - "y": 120.0 - } - ] - }, - { - "pin1": { - "compId": 13, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "A" - }, - "path": [ - { - "x": 15.0, - "y": 170.0 - } - ] - }, - { - "pin1": { - "compId": 10, - "pinName": "" - }, - "pin2": { - "compId": 1, - "pinName": "B" - }, - "path": [ - { - "x": 15.0, - "y": 30.0 - } - ] - }, - { - "pin1": { - "compId": 11, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "B" - }, - "path": [ - { - "x": 15.0, - "y": 80.0 - } - ] - }, - { - "pin1": { - "compId": 12, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "B" - }, - "path": [ - { - "x": 15.0, - "y": 130.0 - } - ] - }, - { - "pin1": { - "compId": 13, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "B" - }, - "path": [ - { - "x": 15.0, - "y": 180.0 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y" - }, - "pin2": { - "compId": 5, - "pinName": "A" - } - }, - { - "pin1": { - "compId": 2, - "pinName": "Y" - }, - "pin2": { - "compId": 5, - "pinName": "B" - } - }, - { - "pin1": { - "compId": 3, - "pinName": "Y" - }, - "pin2": { - "compId": 6, - "pinName": "A" - } - }, - { - "pin1": { - "compId": 4, - "pinName": "Y" - }, - "pin2": { - "compId": 6, - "pinName": "B" - } - }, - { - "pin1": { - "compId": 5, - "pinName": "Y" - }, - "pin2": { - "compId": 14, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 6, - "pinName": "Y" - }, - "pin2": { - "compId": 15, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 14, - "pinName": "" - }, - "pin2": { - "compId": 7, - "pinName": "A" - }, - "path": [ - { - "x": 105.0, - "y": 45.0 - } - ] - }, - { - "pin1": { - "compId": 14, - "pinName": "" - }, - "pin2": { - "compId": 7, - "pinName": "B" - }, - "path": [ - { - "x": 105.0, - "y": 55.0 - } - ] - }, - { - "pin1": { - "compId": 15, - "pinName": "" - }, - "pin2": { - "compId": 8, - "pinName": "A" - }, - "path": [ - { - "x": 105.0, - "y": 145.0 - } - ] - }, - { - "pin1": { - "compId": 15, - "pinName": "" - }, - "pin2": { - "compId": 8, - "pinName": "B" - }, - "path": [ - { - "x": 105.0, - "y": 155.0 - } - ] - }, - { - "pin1": { - "compId": 7, - "pinName": "Y" - }, - "pin2": { - "compId": 9, - "pinName": "A" - } - }, - { - "pin1": { - "compId": 8, - "pinName": "Y" - }, - "pin2": { - "compId": 9, - "pinName": "B" - } - }, - { - "pin1": { - "compId": 9, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y" - } - } - ] - }, - "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", - "symbolRendererParams": { - "centerText": "GUIor4", - "horizontalComponentCenter": 17.5, - "centerTextHeight": 5.0, - "pinLabelHeight": 3.5, - "pinLabelMargin": 0.5 - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.editor/components/GUIor_4.json b/net.mograsim.logic.ui.editor/components/GUIor_4.json deleted file mode 100644 index 0dae4d42..00000000 --- a/net.mograsim.logic.ui.editor/components/GUIor_4.json +++ /dev/null @@ -1,826 +0,0 @@ -mograsim version: 0.1.3 -{ - "width": 35.0, - "height": 80.0, - "interfacePins": [ - { - "location": { - "x": 0.0, - "y": 5.0 - }, - "name": "A1", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 55.0 - }, - "name": "B2", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 15.0 - }, - "name": "A2", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 65.0 - }, - "name": "B3", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 25.0 - }, - "name": "A3", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 75.0 - }, - "name": "B4", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 35.0 - }, - "name": "A4", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 5.0 - }, - "name": "Y1", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 15.0 - }, - "name": "Y2", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 25.0 - }, - "name": "Y3", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 35.0 - }, - "name": "Y4", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 45.0 - }, - "name": "B1", - "logicWidth": 1 - } - ], - "submodel": { - "innerScale": 0.4, - "subComps": [ - { - "pos": { - "x": 15.0, - "y": 2.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 15.0, - "y": 27.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 15.0, - "y": 52.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 15.0, - "y": 77.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 15.0, - "y": 102.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 15.0, - "y": 127.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 15.0, - "y": 152.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 15.0, - "y": 177.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 65.0, - "y": 2.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 65.0, - "y": 27.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 65.0, - "y": 52.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 65.0, - "y": 77.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 6.5, - "y": 11.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 6.5, - "y": 36.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 6.5, - "y": 61.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 6.5, - "y": 86.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 6.5, - "y": 111.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 6.5, - "y": 136.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 6.5, - "y": 161.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 6.5, - "y": 186.5 - }, - "id": "WireCrossPoint", - "params": 1 - } - ], - "innerWires": [ - { - "pin1": { - "compId": 0, - "pinName": "A1" - }, - "pin2": { - "compId": 13, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "A2" - }, - "pin2": { - "compId": 14, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "A3" - }, - "pin2": { - "compId": 15, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "A4" - }, - "pin2": { - "compId": 16, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "B1" - }, - "pin2": { - "compId": 17, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "B2" - }, - "pin2": { - "compId": 18, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "B3" - }, - "pin2": { - "compId": 19, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "B4" - }, - "pin2": { - "compId": 20, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 13, - "pinName": "" - }, - "pin2": { - "compId": 1, - "pinName": "A" - }, - "path": [ - { - "x": 7.5, - "y": 7.5 - } - ] - }, - { - "pin1": { - "compId": 13, - "pinName": "" - }, - "pin2": { - "compId": 1, - "pinName": "B" - }, - "path": [ - { - "x": 7.5, - "y": 17.5 - } - ] - }, - { - "pin1": { - "compId": 14, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "A" - }, - "path": [ - { - "x": 7.5, - "y": 32.5 - } - ] - }, - { - "pin1": { - "compId": 14, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "B" - }, - "path": [ - { - "x": 7.5, - "y": 42.5 - } - ] - }, - { - "pin1": { - "compId": 15, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "A" - }, - "path": [ - { - "x": 7.5, - "y": 57.5 - } - ] - }, - { - "pin1": { - "compId": 15, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "B" - }, - "path": [ - { - "x": 7.5, - "y": 67.5 - } - ] - }, - { - "pin1": { - "compId": 16, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "A" - }, - "path": [ - { - "x": 7.5, - "y": 82.5 - } - ] - }, - { - "pin1": { - "compId": 16, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "B" - }, - "path": [ - { - "x": 7.5, - "y": 92.5 - } - ] - }, - { - "pin1": { - "compId": 17, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "A" - }, - "path": [ - { - "x": 7.5, - "y": 107.5 - } - ] - }, - { - "pin1": { - "compId": 17, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "B" - }, - "path": [ - { - "x": 7.5, - "y": 117.5 - } - ] - }, - { - "pin1": { - "compId": 18, - "pinName": "" - }, - "pin2": { - "compId": 6, - "pinName": "A" - }, - "path": [ - { - "x": 7.5, - "y": 132.5 - } - ] - }, - { - "pin1": { - "compId": 18, - "pinName": "" - }, - "pin2": { - "compId": 6, - "pinName": "B" - }, - "path": [ - { - "x": 7.5, - "y": 142.5 - } - ] - }, - { - "pin1": { - "compId": 19, - "pinName": "" - }, - "pin2": { - "compId": 7, - "pinName": "A" - }, - "path": [ - { - "x": 7.5, - "y": 157.5 - } - ] - }, - { - "pin1": { - "compId": 19, - "pinName": "" - }, - "pin2": { - "compId": 7, - "pinName": "B" - }, - "path": [ - { - "x": 7.5, - "y": 167.5 - } - ] - }, - { - "pin1": { - "compId": 20, - "pinName": "" - }, - "pin2": { - "compId": 8, - "pinName": "A" - }, - "path": [ - { - "x": 7.5, - "y": 182.5 - } - ] - }, - { - "pin1": { - "compId": 20, - "pinName": "" - }, - "pin2": { - "compId": 8, - "pinName": "B" - }, - "path": [ - { - "x": 7.5, - "y": 192.5 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y" - }, - "pin2": { - "compId": 9, - "pinName": "A" - }, - "path": [ - { - "x": 40.0, - "y": 12.5 - }, - { - "x": 40.0, - "y": 7.5 - } - ] - }, - { - "pin1": { - "compId": 5, - "pinName": "Y" - }, - "pin2": { - "compId": 9, - "pinName": "B" - }, - "path": [ - { - "x": 45.0, - "y": 112.5 - }, - { - "x": 45.0, - "y": 17.5 - } - ] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y" - }, - "pin2": { - "compId": 10, - "pinName": "A" - }, - "path": [ - { - "x": 40.0, - "y": 37.5 - }, - { - "x": 40.0, - "y": 32.5 - } - ] - }, - { - "pin1": { - "compId": 6, - "pinName": "Y" - }, - "pin2": { - "compId": 10, - "pinName": "B" - }, - "path": [ - { - "x": 50.0, - "y": 137.5 - }, - { - "x": 50.0, - "y": 42.5 - } - ] - }, - { - "pin1": { - "compId": 3, - "pinName": "Y" - }, - "pin2": { - "compId": 11, - "pinName": "A" - }, - "path": [ - { - "x": 40.0, - "y": 62.5 - }, - { - "x": 40.0, - "y": 57.5 - } - ] - }, - { - "pin1": { - "compId": 7, - "pinName": "Y" - }, - "pin2": { - "compId": 11, - "pinName": "B" - }, - "path": [ - { - "x": 55.0, - "y": 162.5 - }, - { - "x": 55.0, - "y": 67.5 - } - ] - }, - { - "pin1": { - "compId": 4, - "pinName": "Y" - }, - "pin2": { - "compId": 12, - "pinName": "A" - }, - "path": [ - { - "x": 40.0, - "y": 87.5 - }, - { - "x": 40.0, - "y": 82.5 - } - ] - }, - { - "pin1": { - "compId": 8, - "pinName": "Y" - }, - "pin2": { - "compId": 12, - "pinName": "B" - }, - "path": [ - { - "x": 60.0, - "y": 187.5 - }, - { - "x": 60.0, - "y": 92.5 - } - ] - }, - { - "pin1": { - "compId": 9, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y1" - }, - "path": [] - }, - { - "pin1": { - "compId": 10, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y2" - }, - "path": [] - }, - { - "pin1": { - "compId": 11, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y3" - }, - "path": [] - }, - { - "pin1": { - "compId": 12, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y4" - }, - "path": [] - } - ] - }, - "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", - "symbolRendererParams": { - "centerText": "GUIor_4", - "horizontalComponentCenter": 17.5, - "centerTextHeight": 5.0, - "pinLabelHeight": 3.5, - "pinLabelMargin": 0.5 - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.editor/components/GUIram2.json b/net.mograsim.logic.ui.editor/components/GUIram2.json deleted file mode 100644 index c6503865..00000000 --- a/net.mograsim.logic.ui.editor/components/GUIram2.json +++ /dev/null @@ -1,2782 +0,0 @@ -mograsim version: 0.1.3 -{ - "width": 35.0, - "height": 90.0, - "interfacePins": [ - { - "location": { - "x": 35.0, - "y": 5.0 - }, - "name": "QA1", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 55.0 - }, - "name": "QB2", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 45.0 - }, - "name": "QB1", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 25.0 - }, - "name": "QA3", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 75.0 - }, - "name": "QB4", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 15.0 - }, - "name": "QA2", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 65.0 - }, - "name": "QB3", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 35.0 - }, - "name": "QA4", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 55.0 - }, - "name": "D1", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 25.0 - }, - "name": "B0", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 45.0 - }, - "name": "WE", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 65.0 - }, - "name": "D2", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 5.0 - }, - "name": "A0", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 35.0 - }, - "name": "B1", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 75.0 - }, - "name": "D3", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 15.0 - }, - "name": "A1", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 85.0 - }, - "name": "D4", - "logicWidth": 1 - } - ], - "submodel": { - "innerScale": 0.1, - "subComps": [ - { - "pos": { - "x": 55.0, - "y": 45.0 - }, - "id": "GUIdemux2" - }, - { - "pos": { - "x": 55.0, - "y": 150.0 - }, - "id": "GUIdemux2" - }, - { - "pos": { - "x": 130.0, - "y": 150.0 - }, - "id": "GUIand41" - }, - { - "pos": { - "x": 55.0, - "y": 325.0 - }, - "id": "GUIdlatch4" - }, - { - "pos": { - "x": 55.0, - "y": 475.0 - }, - "id": "GUIdlatch4" - }, - { - "pos": { - "x": 55.0, - "y": 625.0 - }, - "id": "GUIdlatch4" - }, - { - "pos": { - "x": 55.0, - "y": 775.0 - }, - "id": "GUIdlatch4" - }, - { - "pos": { - "x": 235.0, - "y": 375.0 - }, - "id": "GUIand41" - }, - { - "pos": { - "x": 235.0, - "y": 485.0 - }, - "id": "GUIandor414" - }, - { - "pos": { - "x": 235.0, - "y": 635.0 - }, - "id": "GUIandor414" - }, - { - "pos": { - "x": 235.0, - "y": 785.0 - }, - "id": "GUIandor414" - }, - { - "pos": { - "x": 135.0, - "y": 325.0 - }, - "id": "GUIand41" - }, - { - "pos": { - "x": 135.0, - "y": 435.0 - }, - "id": "GUIandor414" - }, - { - "pos": { - "x": 135.0, - "y": 585.0 - }, - "id": "GUIandor414" - }, - { - "pos": { - "x": 135.0, - "y": 735.0 - }, - "id": "GUIandor414" - }, - { - "pos": { - "x": 109.0, - "y": 154.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 104.0, - "y": 164.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 99.0, - "y": 174.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 94.0, - "y": 184.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 34.0, - "y": 549.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 39.0, - "y": 649.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 44.0, - "y": 749.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 49.0, - "y": 809.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 34.0, - "y": 479.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 39.0, - "y": 489.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 44.0, - "y": 499.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 49.0, - "y": 509.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 34.0, - "y": 629.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 39.0, - "y": 639.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 44.0, - "y": 649.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 49.0, - "y": 659.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 129.0, - "y": 329.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 124.0, - "y": 339.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 119.0, - "y": 349.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 114.0, - "y": 359.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 129.0, - "y": 479.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 124.0, - "y": 489.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 119.0, - "y": 499.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 114.0, - "y": 509.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 129.0, - "y": 629.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 124.0, - "y": 639.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 119.0, - "y": 649.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 114.0, - "y": 659.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 129.0, - "y": 779.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 124.0, - "y": 789.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 119.0, - "y": 799.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 114.0, - "y": 809.0 - }, - "id": "WireCrossPoint", - "params": 1 - } - ], - "innerWires": [ - { - "pin1": { - "compId": 0, - "pinName": "A0" - }, - "pin2": { - "compId": 1, - "pinName": "S0" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "A1" - }, - "pin2": { - "compId": 1, - "pinName": "S1" - }, - "path": [ - { - "x": 10.0, - "y": 150.0 - }, - { - "x": 10.0, - "y": 60.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "B0" - }, - "pin2": { - "compId": 2, - "pinName": "S0" - }, - "path": [ - { - "x": 5.0, - "y": 250.0 - }, - { - "x": 5.0, - "y": 155.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "B1" - }, - "pin2": { - "compId": 2, - "pinName": "S1" - }, - "path": [ - { - "x": 10.0, - "y": 350.0 - }, - { - "x": 10.0, - "y": 165.0 - } - ] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y00" - }, - "pin2": { - "compId": 16, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y01" - }, - "pin2": { - "compId": 17, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y10" - }, - "pin2": { - "compId": 18, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y11" - }, - "pin2": { - "compId": 19, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 16, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "A1" - }, - "path": [] - }, - { - "pin1": { - "compId": 17, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "A2" - }, - "path": [] - }, - { - "pin1": { - "compId": 18, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "A3" - }, - "path": [] - }, - { - "pin1": { - "compId": 19, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "A4" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "WE" - }, - "pin2": { - "compId": 3, - "pinName": "B" - }, - "path": [ - { - "x": 5.0, - "y": 450.0 - }, - { - "x": 5.0, - "y": 300.0 - }, - { - "x": 125.0, - "y": 300.0 - }, - { - "x": 125.0, - "y": 195.0 - } - ] - }, - { - "pin1": { - "compId": 3, - "pinName": "Y1" - }, - "pin2": { - "compId": 4, - "pinName": "C" - }, - "path": [ - { - "x": 185.0, - "y": 155.0 - }, - { - "x": 185.0, - "y": 250.0 - }, - { - "x": 30.0, - "y": 250.0 - }, - { - "x": 30.0, - "y": 370.0 - } - ] - }, - { - "pin1": { - "compId": 3, - "pinName": "Y2" - }, - "pin2": { - "compId": 5, - "pinName": "C" - }, - "path": [ - { - "x": 180.0, - "y": 165.0 - }, - { - "x": 180.0, - "y": 245.0 - }, - { - "x": 25.0, - "y": 245.0 - }, - { - "x": 25.0, - "y": 520.0 - } - ] - }, - { - "pin1": { - "compId": 3, - "pinName": "Y3" - }, - "pin2": { - "compId": 6, - "pinName": "C" - }, - "path": [ - { - "x": 175.0, - "y": 175.0 - }, - { - "x": 175.0, - "y": 240.0 - }, - { - "x": 20.0, - "y": 240.0 - }, - { - "x": 20.0, - "y": 670.0 - } - ] - }, - { - "pin1": { - "compId": 3, - "pinName": "Y4" - }, - "pin2": { - "compId": 7, - "pinName": "C" - }, - "path": [ - { - "x": 170.0, - "y": 185.0 - }, - { - "x": 170.0, - "y": 235.0 - }, - { - "x": 15.0, - "y": 235.0 - }, - { - "x": 15.0, - "y": 820.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "D1" - }, - "pin2": { - "compId": 20, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "D2" - }, - "pin2": { - "compId": 21, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "D3" - }, - "pin2": { - "compId": 22, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "D4" - }, - "pin2": { - "compId": 23, - "pinName": "" - }, - "path": [ - { - "x": 50.0, - "y": 850.0 - } - ] - }, - { - "pin1": { - "compId": 24, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "D1" - }, - "path": [ - { - "x": 35.0, - "y": 330.0 - } - ] - }, - { - "pin1": { - "compId": 25, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "D2" - }, - "path": [ - { - "x": 40.0, - "y": 340.0 - } - ] - }, - { - "pin1": { - "compId": 26, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "D3" - }, - "path": [ - { - "x": 45.0, - "y": 350.0 - } - ] - }, - { - "pin1": { - "compId": 27, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "D4" - }, - "path": [ - { - "x": 50.0, - "y": 360.0 - } - ] - }, - { - "pin1": { - "compId": 24, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "D1" - }, - "path": [] - }, - { - "pin1": { - "compId": 25, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "D2" - }, - "path": [] - }, - { - "pin1": { - "compId": 26, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "D3" - }, - "path": [] - }, - { - "pin1": { - "compId": 27, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "D4" - }, - "path": [] - }, - { - "pin1": { - "compId": 24, - "pinName": "" - }, - "pin2": { - "compId": 20, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 20, - "pinName": "" - }, - "pin2": { - "compId": 28, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 25, - "pinName": "" - }, - "pin2": { - "compId": 29, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 26, - "pinName": "" - }, - "pin2": { - "compId": 30, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 27, - "pinName": "" - }, - "pin2": { - "compId": 31, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 28, - "pinName": "" - }, - "pin2": { - "compId": 6, - "pinName": "D1" - }, - "path": [] - }, - { - "pin1": { - "compId": 29, - "pinName": "" - }, - "pin2": { - "compId": 6, - "pinName": "D2" - }, - "path": [] - }, - { - "pin1": { - "compId": 30, - "pinName": "" - }, - "pin2": { - "compId": 6, - "pinName": "D3" - }, - "path": [] - }, - { - "pin1": { - "compId": 31, - "pinName": "" - }, - "pin2": { - "compId": 6, - "pinName": "D4" - }, - "path": [] - }, - { - "pin1": { - "compId": 29, - "pinName": "" - }, - "pin2": { - "compId": 21, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 30, - "pinName": "" - }, - "pin2": { - "compId": 22, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 31, - "pinName": "" - }, - "pin2": { - "compId": 23, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 28, - "pinName": "" - }, - "pin2": { - "compId": 7, - "pinName": "D1" - }, - "path": [ - { - "x": 35.0, - "y": 780.0 - } - ] - }, - { - "pin1": { - "compId": 21, - "pinName": "" - }, - "pin2": { - "compId": 7, - "pinName": "D2" - }, - "path": [ - { - "x": 40.0, - "y": 790.0 - } - ] - }, - { - "pin1": { - "compId": 22, - "pinName": "" - }, - "pin2": { - "compId": 7, - "pinName": "D3" - }, - "path": [ - { - "x": 45.0, - "y": 800.0 - } - ] - }, - { - "pin1": { - "compId": 23, - "pinName": "" - }, - "pin2": { - "compId": 7, - "pinName": "D4" - }, - "path": [] - }, - { - "pin1": { - "compId": 4, - "pinName": "Q1" - }, - "pin2": { - "compId": 32, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 4, - "pinName": "Q2" - }, - "pin2": { - "compId": 33, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 4, - "pinName": "Q3" - }, - "pin2": { - "compId": 34, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 4, - "pinName": "Q4" - }, - "pin2": { - "compId": 35, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 5, - "pinName": "Q1" - }, - "pin2": { - "compId": 36, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 5, - "pinName": "Q2" - }, - "pin2": { - "compId": 37, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 5, - "pinName": "Q3" - }, - "pin2": { - "compId": 38, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 5, - "pinName": "Q4" - }, - "pin2": { - "compId": 39, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 6, - "pinName": "Q1" - }, - "pin2": { - "compId": 40, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 6, - "pinName": "Q2" - }, - "pin2": { - "compId": 41, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 6, - "pinName": "Q3" - }, - "pin2": { - "compId": 42, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 6, - "pinName": "Q4" - }, - "pin2": { - "compId": 43, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 7, - "pinName": "Q1" - }, - "pin2": { - "compId": 44, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 7, - "pinName": "Q2" - }, - "pin2": { - "compId": 45, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 7, - "pinName": "Q3" - }, - "pin2": { - "compId": 46, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 7, - "pinName": "Q4" - }, - "pin2": { - "compId": 47, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y00" - }, - "pin2": { - "compId": 8, - "pinName": "B" - }, - "path": [ - { - "x": 210.0, - "y": 50.0 - }, - { - "x": 210.0, - "y": 420.0 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y01" - }, - "pin2": { - "compId": 9, - "pinName": "B" - }, - "path": [ - { - "x": 205.0, - "y": 60.0 - }, - { - "x": 205.0, - "y": 570.0 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y10" - }, - "pin2": { - "compId": 10, - "pinName": "B" - }, - "path": [ - { - "x": 200.0, - "y": 70.0 - }, - { - "x": 200.0, - "y": 720.0 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y11" - }, - "pin2": { - "compId": 11, - "pinName": "B" - }, - "path": [ - { - "x": 195.0, - "y": 80.0 - }, - { - "x": 195.0, - "y": 870.0 - } - ] - }, - { - "pin1": { - "compId": 16, - "pinName": "" - }, - "pin2": { - "compId": 12, - "pinName": "B" - }, - "path": [ - { - "x": 110.0, - "y": 370.0 - } - ] - }, - { - "pin1": { - "compId": 17, - "pinName": "" - }, - "pin2": { - "compId": 13, - "pinName": "B" - }, - "path": [ - { - "x": 105.0, - "y": 520.0 - } - ] - }, - { - "pin1": { - "compId": 18, - "pinName": "" - }, - "pin2": { - "compId": 14, - "pinName": "B" - }, - "path": [ - { - "x": 100.0, - "y": 670.0 - } - ] - }, - { - "pin1": { - "compId": 19, - "pinName": "" - }, - "pin2": { - "compId": 15, - "pinName": "B" - }, - "path": [ - { - "x": 95.0, - "y": 820.0 - } - ] - }, - { - "pin1": { - "compId": 32, - "pinName": "" - }, - "pin2": { - "compId": 8, - "pinName": "A1" - }, - "path": [ - { - "x": 130.0, - "y": 380.0 - } - ] - }, - { - "pin1": { - "compId": 33, - "pinName": "" - }, - "pin2": { - "compId": 8, - "pinName": "A2" - }, - "path": [ - { - "x": 125.0, - "y": 390.0 - } - ] - }, - { - "pin1": { - "compId": 34, - "pinName": "" - }, - "pin2": { - "compId": 8, - "pinName": "A3" - }, - "path": [ - { - "x": 120.0, - "y": 400.0 - } - ] - }, - { - "pin1": { - "compId": 35, - "pinName": "" - }, - "pin2": { - "compId": 8, - "pinName": "A4" - }, - "path": [ - { - "x": 115.0, - "y": 410.0 - } - ] - }, - { - "pin1": { - "compId": 36, - "pinName": "" - }, - "pin2": { - "compId": 9, - "pinName": "A1" - }, - "path": [ - { - "x": 130.0, - "y": 530.0 - } - ] - }, - { - "pin1": { - "compId": 37, - "pinName": "" - }, - "pin2": { - "compId": 9, - "pinName": "A2" - }, - "path": [ - { - "x": 125.0, - "y": 540.0 - } - ] - }, - { - "pin1": { - "compId": 38, - "pinName": "" - }, - "pin2": { - "compId": 9, - "pinName": "A3" - }, - "path": [ - { - "x": 120.0, - "y": 550.0 - } - ] - }, - { - "pin1": { - "compId": 39, - "pinName": "" - }, - "pin2": { - "compId": 9, - "pinName": "A4" - }, - "path": [ - { - "x": 115.0, - "y": 560.0 - } - ] - }, - { - "pin1": { - "compId": 40, - "pinName": "" - }, - "pin2": { - "compId": 10, - "pinName": "A1" - }, - "path": [ - { - "x": 130.0, - "y": 680.0 - } - ] - }, - { - "pin1": { - "compId": 41, - "pinName": "" - }, - "pin2": { - "compId": 10, - "pinName": "A2" - }, - "path": [ - { - "x": 125.0, - "y": 690.0 - } - ] - }, - { - "pin1": { - "compId": 42, - "pinName": "" - }, - "pin2": { - "compId": 10, - "pinName": "A3" - }, - "path": [ - { - "x": 120.0, - "y": 700.0 - } - ] - }, - { - "pin1": { - "compId": 43, - "pinName": "" - }, - "pin2": { - "compId": 10, - "pinName": "A4" - }, - "path": [ - { - "x": 115.0, - "y": 710.0 - } - ] - }, - { - "pin1": { - "compId": 44, - "pinName": "" - }, - "pin2": { - "compId": 11, - "pinName": "A1" - }, - "path": [ - { - "x": 130.0, - "y": 830.0 - } - ] - }, - { - "pin1": { - "compId": 45, - "pinName": "" - }, - "pin2": { - "compId": 11, - "pinName": "A2" - }, - "path": [ - { - "x": 125.0, - "y": 840.0 - } - ] - }, - { - "pin1": { - "compId": 46, - "pinName": "" - }, - "pin2": { - "compId": 11, - "pinName": "A3" - }, - "path": [ - { - "x": 120.0, - "y": 850.0 - } - ] - }, - { - "pin1": { - "compId": 47, - "pinName": "" - }, - "pin2": { - "compId": 11, - "pinName": "A4" - }, - "path": [ - { - "x": 115.0, - "y": 860.0 - } - ] - }, - { - "pin1": { - "compId": 32, - "pinName": "" - }, - "pin2": { - "compId": 12, - "pinName": "A1" - }, - "path": [] - }, - { - "pin1": { - "compId": 33, - "pinName": "" - }, - "pin2": { - "compId": 12, - "pinName": "A2" - }, - "path": [] - }, - { - "pin1": { - "compId": 34, - "pinName": "" - }, - "pin2": { - "compId": 12, - "pinName": "A3" - }, - "path": [] - }, - { - "pin1": { - "compId": 35, - "pinName": "" - }, - "pin2": { - "compId": 12, - "pinName": "A4" - }, - "path": [] - }, - { - "pin1": { - "compId": 36, - "pinName": "" - }, - "pin2": { - "compId": 13, - "pinName": "A1" - }, - "path": [] - }, - { - "pin1": { - "compId": 37, - "pinName": "" - }, - "pin2": { - "compId": 13, - "pinName": "A2" - }, - "path": [] - }, - { - "pin1": { - "compId": 38, - "pinName": "" - }, - "pin2": { - "compId": 13, - "pinName": "A3" - }, - "path": [] - }, - { - "pin1": { - "compId": 39, - "pinName": "" - }, - "pin2": { - "compId": 13, - "pinName": "A4" - }, - "path": [] - }, - { - "pin1": { - "compId": 40, - "pinName": "" - }, - "pin2": { - "compId": 14, - "pinName": "A1" - }, - "path": [] - }, - { - "pin1": { - "compId": 41, - "pinName": "" - }, - "pin2": { - "compId": 14, - "pinName": "A2" - }, - "path": [] - }, - { - "pin1": { - "compId": 42, - "pinName": "" - }, - "pin2": { - "compId": 14, - "pinName": "A3" - }, - "path": [] - }, - { - "pin1": { - "compId": 43, - "pinName": "" - }, - "pin2": { - "compId": 14, - "pinName": "A4" - }, - "path": [] - }, - { - "pin1": { - "compId": 44, - "pinName": "" - }, - "pin2": { - "compId": 15, - "pinName": "A1" - }, - "path": [] - }, - { - "pin1": { - "compId": 45, - "pinName": "" - }, - "pin2": { - "compId": 15, - "pinName": "A2" - }, - "path": [] - }, - { - "pin1": { - "compId": 46, - "pinName": "" - }, - "pin2": { - "compId": 15, - "pinName": "A3" - }, - "path": [] - }, - { - "pin1": { - "compId": 47, - "pinName": "" - }, - "pin2": { - "compId": 15, - "pinName": "A4" - }, - "path": [] - }, - { - "pin1": { - "compId": 8, - "pinName": "Y1" - }, - "pin2": { - "compId": 9, - "pinName": "C1" - }, - "path": [ - { - "x": 290.0, - "y": 380.0 - }, - { - "x": 290.0, - "y": 445.0 - }, - { - "x": 230.0, - "y": 445.0 - }, - { - "x": 230.0, - "y": 490.0 - } - ] - }, - { - "pin1": { - "compId": 8, - "pinName": "Y2" - }, - "pin2": { - "compId": 9, - "pinName": "C2" - }, - "path": [ - { - "x": 285.0, - "y": 390.0 - }, - { - "x": 285.0, - "y": 440.0 - }, - { - "x": 225.0, - "y": 440.0 - }, - { - "x": 225.0, - "y": 500.0 - } - ] - }, - { - "pin1": { - "compId": 8, - "pinName": "Y3" - }, - "pin2": { - "compId": 9, - "pinName": "C3" - }, - "path": [ - { - "x": 280.0, - "y": 400.0 - }, - { - "x": 280.0, - "y": 435.0 - }, - { - "x": 220.0, - "y": 435.0 - }, - { - "x": 220.0, - "y": 510.0 - } - ] - }, - { - "pin1": { - "compId": 8, - "pinName": "Y4" - }, - "pin2": { - "compId": 9, - "pinName": "C4" - }, - "path": [ - { - "x": 275.0, - "y": 410.0 - }, - { - "x": 275.0, - "y": 430.0 - }, - { - "x": 215.0, - "y": 430.0 - }, - { - "x": 215.0, - "y": 520.0 - } - ] - }, - { - "pin1": { - "compId": 9, - "pinName": "Y1" - }, - "pin2": { - "compId": 10, - "pinName": "C1" - }, - "path": [ - { - "x": 290.0, - "y": 490.0 - }, - { - "x": 290.0, - "y": 595.0 - }, - { - "x": 230.0, - "y": 595.0 - }, - { - "x": 230.0, - "y": 640.0 - } - ] - }, - { - "pin1": { - "compId": 9, - "pinName": "Y2" - }, - "pin2": { - "compId": 10, - "pinName": "C2" - }, - "path": [ - { - "x": 285.0, - "y": 500.0 - }, - { - "x": 285.0, - "y": 590.0 - }, - { - "x": 225.0, - "y": 590.0 - }, - { - "x": 225.0, - "y": 650.0 - } - ] - }, - { - "pin1": { - "compId": 9, - "pinName": "Y3" - }, - "pin2": { - "compId": 10, - "pinName": "C3" - }, - "path": [ - { - "x": 280.0, - "y": 510.0 - }, - { - "x": 280.0, - "y": 585.0 - }, - { - "x": 220.0, - "y": 585.0 - }, - { - "x": 220.0, - "y": 660.0 - } - ] - }, - { - "pin1": { - "compId": 9, - "pinName": "Y4" - }, - "pin2": { - "compId": 10, - "pinName": "C4" - }, - "path": [ - { - "x": 275.0, - "y": 520.0 - }, - { - "x": 275.0, - "y": 580.0 - }, - { - "x": 215.0, - "y": 580.0 - }, - { - "x": 215.0, - "y": 670.0 - } - ] - }, - { - "pin1": { - "compId": 10, - "pinName": "Y1" - }, - "pin2": { - "compId": 11, - "pinName": "C1" - }, - "path": [ - { - "x": 290.0, - "y": 640.0 - }, - { - "x": 290.0, - "y": 745.0 - }, - { - "x": 230.0, - "y": 745.0 - }, - { - "x": 230.0, - "y": 790.0 - } - ] - }, - { - "pin1": { - "compId": 10, - "pinName": "Y2" - }, - "pin2": { - "compId": 11, - "pinName": "C2" - }, - "path": [ - { - "x": 285.0, - "y": 650.0 - }, - { - "x": 285.0, - "y": 740.0 - }, - { - "x": 225.0, - "y": 740.0 - }, - { - "x": 225.0, - "y": 800.0 - } - ] - }, - { - "pin1": { - "compId": 10, - "pinName": "Y3" - }, - "pin2": { - "compId": 11, - "pinName": "C3" - }, - "path": [ - { - "x": 280.0, - "y": 660.0 - }, - { - "x": 280.0, - "y": 735.0 - }, - { - "x": 220.0, - "y": 735.0 - }, - { - "x": 220.0, - "y": 810.0 - } - ] - }, - { - "pin1": { - "compId": 10, - "pinName": "Y4" - }, - "pin2": { - "compId": 11, - "pinName": "C4" - }, - "path": [ - { - "x": 275.0, - "y": 670.0 - }, - { - "x": 275.0, - "y": 730.0 - }, - { - "x": 215.0, - "y": 730.0 - }, - { - "x": 215.0, - "y": 820.0 - } - ] - }, - { - "pin1": { - "compId": 11, - "pinName": "Y1" - }, - "pin2": { - "compId": 0, - "pinName": "QA1" - }, - "path": [ - { - "x": 300.0, - "y": 790.0 - }, - { - "x": 300.0, - "y": 50.0 - } - ] - }, - { - "pin1": { - "compId": 11, - "pinName": "Y2" - }, - "pin2": { - "compId": 0, - "pinName": "QA2" - }, - "path": [ - { - "x": 305.0, - "y": 800.0 - }, - { - "x": 305.0, - "y": 150.0 - } - ] - }, - { - "pin1": { - "compId": 11, - "pinName": "Y3" - }, - "pin2": { - "compId": 0, - "pinName": "QA3" - }, - "path": [ - { - "x": 310.0, - "y": 810.0 - }, - { - "x": 310.0, - "y": 250.0 - } - ] - }, - { - "pin1": { - "compId": 11, - "pinName": "Y4" - }, - "pin2": { - "compId": 0, - "pinName": "QA4" - }, - "path": [ - { - "x": 315.0, - "y": 820.0 - }, - { - "x": 315.0, - "y": 350.0 - } - ] - }, - { - "pin1": { - "compId": 12, - "pinName": "Y1" - }, - "pin2": { - "compId": 13, - "pinName": "C1" - }, - "path": [ - { - "x": 190.0, - "y": 330.0 - }, - { - "x": 190.0, - "y": 430.0 - }, - { - "x": 130.0, - "y": 430.0 - }, - { - "x": 130.0, - "y": 440.0 - } - ] - }, - { - "pin1": { - "compId": 12, - "pinName": "Y2" - }, - "pin2": { - "compId": 13, - "pinName": "C2" - }, - "path": [ - { - "x": 185.0, - "y": 340.0 - }, - { - "x": 185.0, - "y": 425.0 - }, - { - "x": 125.0, - "y": 425.0 - }, - { - "x": 125.0, - "y": 450.0 - } - ] - }, - { - "pin1": { - "compId": 12, - "pinName": "Y3" - }, - "pin2": { - "compId": 13, - "pinName": "C3" - }, - "path": [ - { - "x": 180.0, - "y": 350.0 - }, - { - "x": 180.0, - "y": 420.0 - }, - { - "x": 120.0, - "y": 420.0 - }, - { - "x": 120.0, - "y": 460.0 - } - ] - }, - { - "pin1": { - "compId": 12, - "pinName": "Y4" - }, - "pin2": { - "compId": 13, - "pinName": "C4" - }, - "path": [ - { - "x": 175.0, - "y": 360.0 - }, - { - "x": 175.0, - "y": 415.0 - }, - { - "x": 115.0, - "y": 415.0 - }, - { - "x": 115.0, - "y": 470.0 - } - ] - }, - { - "pin1": { - "compId": 13, - "pinName": "Y1" - }, - "pin2": { - "compId": 14, - "pinName": "C1" - }, - "path": [ - { - "x": 190.0, - "y": 440.0 - }, - { - "x": 190.0, - "y": 580.0 - }, - { - "x": 130.0, - "y": 580.0 - }, - { - "x": 130.0, - "y": 590.0 - } - ] - }, - { - "pin1": { - "compId": 13, - "pinName": "Y2" - }, - "pin2": { - "compId": 14, - "pinName": "C2" - }, - "path": [ - { - "x": 185.0, - "y": 450.0 - }, - { - "x": 185.0, - "y": 575.0 - }, - { - "x": 125.0, - "y": 575.0 - }, - { - "x": 125.0, - "y": 600.0 - } - ] - }, - { - "pin1": { - "compId": 13, - "pinName": "Y3" - }, - "pin2": { - "compId": 14, - "pinName": "C3" - }, - "path": [ - { - "x": 180.0, - "y": 460.0 - }, - { - "x": 180.0, - "y": 570.0 - }, - { - "x": 120.0, - "y": 570.0 - }, - { - "x": 120.0, - "y": 610.0 - } - ] - }, - { - "pin1": { - "compId": 13, - "pinName": "Y4" - }, - "pin2": { - "compId": 14, - "pinName": "C4" - }, - "path": [ - { - "x": 175.0, - "y": 470.0 - }, - { - "x": 175.0, - "y": 565.0 - }, - { - "x": 115.0, - "y": 565.0 - }, - { - "x": 115.0, - "y": 620.0 - } - ] - }, - { - "pin1": { - "compId": 14, - "pinName": "Y1" - }, - "pin2": { - "compId": 15, - "pinName": "C1" - }, - "path": [ - { - "x": 190.0, - "y": 590.0 - }, - { - "x": 190.0, - "y": 730.0 - }, - { - "x": 130.0, - "y": 730.0 - }, - { - "x": 130.0, - "y": 740.0 - } - ] - }, - { - "pin1": { - "compId": 14, - "pinName": "Y2" - }, - "pin2": { - "compId": 15, - "pinName": "C2" - }, - "path": [ - { - "x": 185.0, - "y": 600.0 - }, - { - "x": 185.0, - "y": 725.0 - }, - { - "x": 125.0, - "y": 725.0 - }, - { - "x": 125.0, - "y": 750.0 - } - ] - }, - { - "pin1": { - "compId": 14, - "pinName": "Y3" - }, - "pin2": { - "compId": 15, - "pinName": "C3" - }, - "path": [ - { - "x": 180.0, - "y": 610.0 - }, - { - "x": 180.0, - "y": 720.0 - }, - { - "x": 120.0, - "y": 720.0 - }, - { - "x": 120.0, - "y": 760.0 - } - ] - }, - { - "pin1": { - "compId": 14, - "pinName": "Y4" - }, - "pin2": { - "compId": 15, - "pinName": "C4" - }, - "path": [ - { - "x": 175.0, - "y": 620.0 - }, - { - "x": 175.0, - "y": 715.0 - }, - { - "x": 115.0, - "y": 715.0 - }, - { - "x": 115.0, - "y": 770.0 - } - ] - }, - { - "pin1": { - "compId": 15, - "pinName": "Y1" - }, - "pin2": { - "compId": 0, - "pinName": "QB1" - }, - "path": [ - { - "x": 190.0, - "y": 740.0 - }, - { - "x": 190.0, - "y": 880.0 - }, - { - "x": 325.0, - "y": 880.0 - }, - { - "x": 325.0, - "y": 450.0 - } - ] - }, - { - "pin1": { - "compId": 15, - "pinName": "Y2" - }, - "pin2": { - "compId": 0, - "pinName": "QB2" - }, - "path": [ - { - "x": 185.0, - "y": 750.0 - }, - { - "x": 185.0, - "y": 885.0 - }, - { - "x": 330.0, - "y": 885.0 - }, - { - "x": 330.0, - "y": 550.0 - } - ] - }, - { - "pin1": { - "compId": 15, - "pinName": "Y3" - }, - "pin2": { - "compId": 0, - "pinName": "QB3" - }, - "path": [ - { - "x": 180.0, - "y": 760.0 - }, - { - "x": 180.0, - "y": 890.0 - }, - { - "x": 335.0, - "y": 890.0 - }, - { - "x": 335.0, - "y": 650.0 - } - ] - }, - { - "pin1": { - "compId": 15, - "pinName": "Y4" - }, - "pin2": { - "compId": 0, - "pinName": "QB4" - }, - "path": [ - { - "x": 175.0, - "y": 770.0 - }, - { - "x": 175.0, - "y": 895.0 - }, - { - "x": 340.0, - "y": 895.0 - }, - { - "x": 340.0, - "y": 750.0 - } - ] - } - ] - }, - "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", - "symbolRendererParams": { - "centerText": "GUIram2", - "horizontalComponentCenter": 17.5, - "centerTextHeight": 5.0, - "pinLabelHeight": 3.5, - "pinLabelMargin": 0.5 - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.editor/components/GUIram4.json b/net.mograsim.logic.ui.editor/components/GUIram4.json deleted file mode 100644 index f214452d..00000000 --- a/net.mograsim.logic.ui.editor/components/GUIram4.json +++ /dev/null @@ -1,3154 +0,0 @@ -mograsim version: 0.1.3 -{ - "width": 35.0, - "height": 130.0, - "interfacePins": [ - { - "location": { - "x": 35.0, - "y": 5.0 - }, - "name": "QA1", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 55.0 - }, - "name": "QB2", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 45.0 - }, - "name": "QB1", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 25.0 - }, - "name": "QA3", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 75.0 - }, - "name": "QB4", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 15.0 - }, - "name": "QA2", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 65.0 - }, - "name": "QB3", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 35.0 - }, - "name": "QA4", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 95.0 - }, - "name": "D1", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 45.0 - }, - "name": "B0", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 85.0 - }, - "name": "WE", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 105.0 - }, - "name": "D2", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 5.0 - }, - "name": "A0", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 55.0 - }, - "name": "B1", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 115.0 - }, - "name": "D3", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 15.0 - }, - "name": "A1", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 65.0 - }, - "name": "B2", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 125.0 - }, - "name": "D4", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 25.0 - }, - "name": "A2", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 75.0 - }, - "name": "B3", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 35.0 - }, - "name": "A3", - "logicWidth": 1 - } - ], - "submodel": { - "innerScale": 0.1, - "subComps": [ - { - "pos": { - "x": 55.0, - "y": 45.0 - }, - "id": "GUIdemux2" - }, - { - "pos": { - "x": 55.0, - "y": 150.0 - }, - "id": "GUIdemux2" - }, - { - "pos": { - "x": 235.0, - "y": 150.0 - }, - "id": "GUIand41" - }, - { - "pos": { - "x": 80.0, - "y": 330.0 - }, - "id": "GUIram2" - }, - { - "pos": { - "x": 80.0, - "y": 480.0 - }, - "id": "GUIram2" - }, - { - "pos": { - "x": 80.0, - "y": 630.0 - }, - "id": "GUIram2" - }, - { - "pos": { - "x": 80.0, - "y": 780.0 - }, - "id": "GUIram2" - }, - { - "pos": { - "x": 250.0, - "y": 375.0 - }, - "id": "GUIand41" - }, - { - "pos": { - "x": 250.0, - "y": 485.0 - }, - "id": "GUIandor414" - }, - { - "pos": { - "x": 250.0, - "y": 635.0 - }, - "id": "GUIandor414" - }, - { - "pos": { - "x": 250.0, - "y": 785.0 - }, - "id": "GUIandor414" - }, - { - "pos": { - "x": 155.0, - "y": 325.0 - }, - "id": "GUIand41" - }, - { - "pos": { - "x": 155.0, - "y": 435.0 - }, - "id": "GUIandor414" - }, - { - "pos": { - "x": 155.0, - "y": 585.0 - }, - "id": "GUIandor414" - }, - { - "pos": { - "x": 155.0, - "y": 735.0 - }, - "id": "GUIandor414" - }, - { - "pos": { - "x": 229.0, - "y": 154.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 224.0, - "y": 164.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 219.0, - "y": 174.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 214.0, - "y": 184.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 59.0, - "y": 534.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 64.0, - "y": 544.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 69.0, - "y": 554.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 74.0, - "y": 564.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 59.0, - "y": 684.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 64.0, - "y": 694.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 69.0, - "y": 704.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 74.0, - "y": 714.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 59.0, - "y": 834.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 64.0, - "y": 844.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 69.0, - "y": 854.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 74.0, - "y": 864.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 39.0, - "y": 484.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 44.0, - "y": 494.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 49.0, - "y": 504.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 54.0, - "y": 514.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 39.0, - "y": 634.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 44.0, - "y": 644.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 49.0, - "y": 654.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 54.0, - "y": 664.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 39.0, - "y": 334.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 44.0, - "y": 349.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 49.0, - "y": 649.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 54.0, - "y": 749.0 - }, - "id": "WireCrossPoint", - "params": 1 - } - ], - "innerWires": [ - { - "pin1": { - "compId": 0, - "pinName": "A0" - }, - "pin2": { - "compId": 1, - "pinName": "S0" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "A1" - }, - "pin2": { - "compId": 1, - "pinName": "S1" - }, - "path": [ - { - "x": 10.0, - "y": 150.0 - }, - { - "x": 10.0, - "y": 60.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "B0" - }, - "pin2": { - "compId": 2, - "pinName": "S0" - }, - "path": [ - { - "x": 5.0, - "y": 450.0 - }, - { - "x": 5.0, - "y": 155.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "B1" - }, - "pin2": { - "compId": 2, - "pinName": "S1" - }, - "path": [ - { - "x": 10.0, - "y": 550.0 - }, - { - "x": 10.0, - "y": 165.0 - } - ] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y00" - }, - "pin2": { - "compId": 16, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y01" - }, - "pin2": { - "compId": 17, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y10" - }, - "pin2": { - "compId": 18, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y11" - }, - "pin2": { - "compId": 19, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 16, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "A1" - }, - "path": [] - }, - { - "pin1": { - "compId": 17, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "A2" - }, - "path": [] - }, - { - "pin1": { - "compId": 18, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "A3" - }, - "path": [] - }, - { - "pin1": { - "compId": 19, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "A4" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "WE" - }, - "pin2": { - "compId": 3, - "pinName": "B" - }, - "path": [ - { - "x": 15.0, - "y": 850.0 - }, - { - "x": 15.0, - "y": 195.0 - } - ] - }, - { - "pin1": { - "compId": 3, - "pinName": "Y1" - }, - "pin2": { - "compId": 4, - "pinName": "WE" - }, - "path": [ - { - "x": 290.0, - "y": 155.0 - }, - { - "x": 290.0, - "y": 230.0 - }, - { - "x": 35.0, - "y": 230.0 - }, - { - "x": 35.0, - "y": 375.0 - } - ] - }, - { - "pin1": { - "compId": 3, - "pinName": "Y2" - }, - "pin2": { - "compId": 5, - "pinName": "WE" - }, - "path": [ - { - "x": 285.0, - "y": 165.0 - }, - { - "x": 285.0, - "y": 225.0 - }, - { - "x": 30.0, - "y": 225.0 - }, - { - "x": 30.0, - "y": 525.0 - } - ] - }, - { - "pin1": { - "compId": 3, - "pinName": "Y3" - }, - "pin2": { - "compId": 6, - "pinName": "WE" - }, - "path": [ - { - "x": 280.0, - "y": 175.0 - }, - { - "x": 280.0, - "y": 220.0 - }, - { - "x": 25.0, - "y": 220.0 - }, - { - "x": 25.0, - "y": 675.0 - } - ] - }, - { - "pin1": { - "compId": 3, - "pinName": "Y4" - }, - "pin2": { - "compId": 7, - "pinName": "WE" - }, - "path": [ - { - "x": 275.0, - "y": 185.0 - }, - { - "x": 275.0, - "y": 215.0 - }, - { - "x": 20.0, - "y": 215.0 - }, - { - "x": 20.0, - "y": 825.0 - } - ] - }, - { - "pin1": { - "compId": 32, - "pinName": "" - }, - "pin2": { - "compId": 40, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 40, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "A0" - }, - "path": [] - }, - { - "pin1": { - "compId": 33, - "pinName": "" - }, - "pin2": { - "compId": 41, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 41, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "A1" - }, - "path": [ - { - "x": 45.0, - "y": 345.0 - } - ] - }, - { - "pin1": { - "compId": 34, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "B0" - }, - "path": [ - { - "x": 50.0, - "y": 355.0 - } - ] - }, - { - "pin1": { - "compId": 35, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "B1" - }, - "path": [ - { - "x": 55.0, - "y": 365.0 - } - ] - }, - { - "pin1": { - "compId": 32, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "A0" - }, - "path": [] - }, - { - "pin1": { - "compId": 33, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "A1" - }, - "path": [] - }, - { - "pin1": { - "compId": 34, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "B0" - }, - "path": [] - }, - { - "pin1": { - "compId": 35, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "B1" - }, - "path": [] - }, - { - "pin1": { - "compId": 32, - "pinName": "" - }, - "pin2": { - "compId": 36, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 33, - "pinName": "" - }, - "pin2": { - "compId": 37, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 34, - "pinName": "" - }, - "pin2": { - "compId": 42, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "B2" - }, - "pin2": { - "compId": 42, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 42, - "pinName": "" - }, - "pin2": { - "compId": 38, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 35, - "pinName": "" - }, - "pin2": { - "compId": 39, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 36, - "pinName": "" - }, - "pin2": { - "compId": 6, - "pinName": "A0" - }, - "path": [] - }, - { - "pin1": { - "compId": 37, - "pinName": "" - }, - "pin2": { - "compId": 6, - "pinName": "A1" - }, - "path": [] - }, - { - "pin1": { - "compId": 38, - "pinName": "" - }, - "pin2": { - "compId": 6, - "pinName": "B0" - }, - "path": [] - }, - { - "pin1": { - "compId": 39, - "pinName": "" - }, - "pin2": { - "compId": 6, - "pinName": "B1" - }, - "path": [] - }, - { - "pin1": { - "compId": 36, - "pinName": "" - }, - "pin2": { - "compId": 7, - "pinName": "A0" - }, - "path": [ - { - "x": 40.0, - "y": 785.0 - } - ] - }, - { - "pin1": { - "compId": 37, - "pinName": "" - }, - "pin2": { - "compId": 7, - "pinName": "A1" - }, - "path": [ - { - "x": 45.0, - "y": 795.0 - } - ] - }, - { - "pin1": { - "compId": 38, - "pinName": "" - }, - "pin2": { - "compId": 7, - "pinName": "B0" - }, - "path": [ - { - "x": 50.0, - "y": 805.0 - } - ] - }, - { - "pin1": { - "compId": 39, - "pinName": "" - }, - "pin2": { - "compId": 43, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 43, - "pinName": "" - }, - "pin2": { - "compId": 7, - "pinName": "B1" - }, - "path": [ - { - "x": 55.0, - "y": 815.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "A2" - }, - "pin2": { - "compId": 40, - "pinName": "" - }, - "path": [ - { - "x": 40.0, - "y": 250.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "A3" - }, - "pin2": { - "compId": 41, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "B3" - }, - "pin2": { - "compId": 43, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 20, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "D1" - }, - "path": [ - { - "x": 60.0, - "y": 385.0 - } - ] - }, - { - "pin1": { - "compId": 21, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "D2" - }, - "path": [ - { - "x": 65.0, - "y": 395.0 - } - ] - }, - { - "pin1": { - "compId": 22, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "D3" - }, - "path": [ - { - "x": 70.0, - "y": 405.0 - } - ] - }, - { - "pin1": { - "compId": 23, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "D4" - }, - "path": [ - { - "x": 75.0, - "y": 415.0 - } - ] - }, - { - "pin1": { - "compId": 20, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "D1" - }, - "path": [] - }, - { - "pin1": { - "compId": 21, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "D2" - }, - "path": [] - }, - { - "pin1": { - "compId": 22, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "D3" - }, - "path": [] - }, - { - "pin1": { - "compId": 23, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "D4" - }, - "path": [] - }, - { - "pin1": { - "compId": 20, - "pinName": "" - }, - "pin2": { - "compId": 24, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 21, - "pinName": "" - }, - "pin2": { - "compId": 25, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 22, - "pinName": "" - }, - "pin2": { - "compId": 26, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 23, - "pinName": "" - }, - "pin2": { - "compId": 27, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 24, - "pinName": "" - }, - "pin2": { - "compId": 6, - "pinName": "D1" - }, - "path": [] - }, - { - "pin1": { - "compId": 25, - "pinName": "" - }, - "pin2": { - "compId": 6, - "pinName": "D2" - }, - "path": [] - }, - { - "pin1": { - "compId": 26, - "pinName": "" - }, - "pin2": { - "compId": 6, - "pinName": "D3" - }, - "path": [] - }, - { - "pin1": { - "compId": 27, - "pinName": "" - }, - "pin2": { - "compId": 6, - "pinName": "D4" - }, - "path": [] - }, - { - "pin1": { - "compId": 24, - "pinName": "" - }, - "pin2": { - "compId": 28, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 25, - "pinName": "" - }, - "pin2": { - "compId": 29, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 26, - "pinName": "" - }, - "pin2": { - "compId": 30, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 27, - "pinName": "" - }, - "pin2": { - "compId": 31, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 28, - "pinName": "" - }, - "pin2": { - "compId": 7, - "pinName": "D1" - }, - "path": [] - }, - { - "pin1": { - "compId": 29, - "pinName": "" - }, - "pin2": { - "compId": 7, - "pinName": "D2" - }, - "path": [] - }, - { - "pin1": { - "compId": 30, - "pinName": "" - }, - "pin2": { - "compId": 7, - "pinName": "D3" - }, - "path": [] - }, - { - "pin1": { - "compId": 31, - "pinName": "" - }, - "pin2": { - "compId": 7, - "pinName": "D4" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "D1" - }, - "pin2": { - "compId": 28, - "pinName": "" - }, - "path": [ - { - "x": 60.0, - "y": 950.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "D2" - }, - "pin2": { - "compId": 29, - "pinName": "" - }, - "path": [ - { - "x": 65.0, - "y": 1050.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "D3" - }, - "pin2": { - "compId": 30, - "pinName": "" - }, - "path": [ - { - "x": 70.0, - "y": 1150.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "D4" - }, - "pin2": { - "compId": 31, - "pinName": "" - }, - "path": [ - { - "x": 75.0, - "y": 1250.0 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y00" - }, - "pin2": { - "compId": 12, - "pinName": "B" - }, - "path": [ - { - "x": 135.0, - "y": 50.0 - }, - { - "x": 135.0, - "y": 370.0 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y01" - }, - "pin2": { - "compId": 13, - "pinName": "B" - }, - "path": [ - { - "x": 130.0, - "y": 60.0 - }, - { - "x": 130.0, - "y": 520.0 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y10" - }, - "pin2": { - "compId": 14, - "pinName": "B" - }, - "path": [ - { - "x": 125.0, - "y": 70.0 - }, - { - "x": 125.0, - "y": 670.0 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y11" - }, - "pin2": { - "compId": 15, - "pinName": "B" - }, - "path": [ - { - "x": 120.0, - "y": 80.0 - }, - { - "x": 120.0, - "y": 820.0 - } - ] - }, - { - "pin1": { - "compId": 16, - "pinName": "" - }, - "pin2": { - "compId": 8, - "pinName": "B" - }, - "path": [ - { - "x": 230.0, - "y": 420.0 - } - ] - }, - { - "pin1": { - "compId": 17, - "pinName": "" - }, - "pin2": { - "compId": 9, - "pinName": "B" - }, - "path": [ - { - "x": 225.0, - "y": 570.0 - } - ] - }, - { - "pin1": { - "compId": 18, - "pinName": "" - }, - "pin2": { - "compId": 10, - "pinName": "B" - }, - "path": [ - { - "x": 220.0, - "y": 720.0 - } - ] - }, - { - "pin1": { - "compId": 19, - "pinName": "" - }, - "pin2": { - "compId": 11, - "pinName": "B" - }, - "path": [ - { - "x": 215.0, - "y": 870.0 - } - ] - }, - { - "pin1": { - "compId": 4, - "pinName": "QB1" - }, - "pin2": { - "compId": 8, - "pinName": "A1" - }, - "path": [ - { - "x": 140.0, - "y": 375.0 - }, - { - "x": 140.0, - "y": 380.0 - } - ] - }, - { - "pin1": { - "compId": 4, - "pinName": "QB2" - }, - "pin2": { - "compId": 8, - "pinName": "A2" - }, - "path": [ - { - "x": 140.0, - "y": 385.0 - }, - { - "x": 140.0, - "y": 390.0 - } - ] - }, - { - "pin1": { - "compId": 4, - "pinName": "QB3" - }, - "pin2": { - "compId": 8, - "pinName": "A3" - }, - "path": [ - { - "x": 140.0, - "y": 395.0 - }, - { - "x": 140.0, - "y": 400.0 - } - ] - }, - { - "pin1": { - "compId": 4, - "pinName": "QB4" - }, - "pin2": { - "compId": 8, - "pinName": "A4" - }, - "path": [ - { - "x": 140.0, - "y": 405.0 - }, - { - "x": 140.0, - "y": 410.0 - } - ] - }, - { - "pin1": { - "compId": 5, - "pinName": "QB1" - }, - "pin2": { - "compId": 9, - "pinName": "A1" - }, - "path": [ - { - "x": 140.0, - "y": 525.0 - }, - { - "x": 140.0, - "y": 530.0 - } - ] - }, - { - "pin1": { - "compId": 5, - "pinName": "QB2" - }, - "pin2": { - "compId": 9, - "pinName": "A2" - }, - "path": [ - { - "x": 140.0, - "y": 535.0 - }, - { - "x": 140.0, - "y": 540.0 - } - ] - }, - { - "pin1": { - "compId": 5, - "pinName": "QB3" - }, - "pin2": { - "compId": 9, - "pinName": "A3" - }, - "path": [ - { - "x": 140.0, - "y": 545.0 - }, - { - "x": 140.0, - "y": 550.0 - } - ] - }, - { - "pin1": { - "compId": 5, - "pinName": "QB4" - }, - "pin2": { - "compId": 9, - "pinName": "A4" - }, - "path": [ - { - "x": 140.0, - "y": 555.0 - }, - { - "x": 140.0, - "y": 560.0 - } - ] - }, - { - "pin1": { - "compId": 6, - "pinName": "QB1" - }, - "pin2": { - "compId": 10, - "pinName": "A1" - }, - "path": [ - { - "x": 140.0, - "y": 675.0 - }, - { - "x": 140.0, - "y": 680.0 - } - ] - }, - { - "pin1": { - "compId": 6, - "pinName": "QB2" - }, - "pin2": { - "compId": 10, - "pinName": "A2" - }, - "path": [ - { - "x": 140.0, - "y": 685.0 - }, - { - "x": 140.0, - "y": 690.0 - } - ] - }, - { - "pin1": { - "compId": 6, - "pinName": "QB3" - }, - "pin2": { - "compId": 10, - "pinName": "A3" - }, - "path": [ - { - "x": 140.0, - "y": 695.0 - }, - { - "x": 140.0, - "y": 700.0 - } - ] - }, - { - "pin1": { - "compId": 6, - "pinName": "QB4" - }, - "pin2": { - "compId": 10, - "pinName": "A4" - }, - "path": [ - { - "x": 140.0, - "y": 705.0 - }, - { - "x": 140.0, - "y": 710.0 - } - ] - }, - { - "pin1": { - "compId": 7, - "pinName": "QB1" - }, - "pin2": { - "compId": 11, - "pinName": "A1" - }, - "path": [ - { - "x": 140.0, - "y": 825.0 - }, - { - "x": 140.0, - "y": 830.0 - } - ] - }, - { - "pin1": { - "compId": 7, - "pinName": "QB2" - }, - "pin2": { - "compId": 11, - "pinName": "A2" - }, - "path": [ - { - "x": 140.0, - "y": 835.0 - }, - { - "x": 140.0, - "y": 840.0 - } - ] - }, - { - "pin1": { - "compId": 7, - "pinName": "QB3" - }, - "pin2": { - "compId": 11, - "pinName": "A3" - }, - "path": [ - { - "x": 140.0, - "y": 845.0 - }, - { - "x": 140.0, - "y": 850.0 - } - ] - }, - { - "pin1": { - "compId": 7, - "pinName": "QB4" - }, - "pin2": { - "compId": 11, - "pinName": "A4" - }, - "path": [ - { - "x": 140.0, - "y": 855.0 - }, - { - "x": 140.0, - "y": 860.0 - } - ] - }, - { - "pin1": { - "compId": 4, - "pinName": "QA1" - }, - "pin2": { - "compId": 12, - "pinName": "A1" - }, - "path": [ - { - "x": 140.0, - "y": 335.0 - }, - { - "x": 140.0, - "y": 330.0 - } - ] - }, - { - "pin1": { - "compId": 4, - "pinName": "QA2" - }, - "pin2": { - "compId": 12, - "pinName": "A2" - }, - "path": [ - { - "x": 140.0, - "y": 345.0 - }, - { - "x": 140.0, - "y": 340.0 - } - ] - }, - { - "pin1": { - "compId": 4, - "pinName": "QA3" - }, - "pin2": { - "compId": 12, - "pinName": "A3" - }, - "path": [ - { - "x": 140.0, - "y": 355.0 - }, - { - "x": 140.0, - "y": 350.0 - } - ] - }, - { - "pin1": { - "compId": 4, - "pinName": "QA4" - }, - "pin2": { - "compId": 12, - "pinName": "A4" - }, - "path": [ - { - "x": 140.0, - "y": 365.0 - }, - { - "x": 140.0, - "y": 360.0 - } - ] - }, - { - "pin1": { - "compId": 5, - "pinName": "QA1" - }, - "pin2": { - "compId": 13, - "pinName": "A1" - }, - "path": [ - { - "x": 140.0, - "y": 485.0 - }, - { - "x": 140.0, - "y": 480.0 - } - ] - }, - { - "pin1": { - "compId": 5, - "pinName": "QA2" - }, - "pin2": { - "compId": 13, - "pinName": "A2" - }, - "path": [ - { - "x": 140.0, - "y": 495.0 - }, - { - "x": 140.0, - "y": 490.0 - } - ] - }, - { - "pin1": { - "compId": 5, - "pinName": "QA3" - }, - "pin2": { - "compId": 13, - "pinName": "A3" - }, - "path": [ - { - "x": 140.0, - "y": 505.0 - }, - { - "x": 140.0, - "y": 500.0 - } - ] - }, - { - "pin1": { - "compId": 5, - "pinName": "QA4" - }, - "pin2": { - "compId": 13, - "pinName": "A4" - }, - "path": [ - { - "x": 140.0, - "y": 515.0 - }, - { - "x": 140.0, - "y": 510.0 - } - ] - }, - { - "pin1": { - "compId": 6, - "pinName": "QA1" - }, - "pin2": { - "compId": 14, - "pinName": "A1" - }, - "path": [ - { - "x": 140.0, - "y": 635.0 - }, - { - "x": 140.0, - "y": 630.0 - } - ] - }, - { - "pin1": { - "compId": 6, - "pinName": "QA2" - }, - "pin2": { - "compId": 14, - "pinName": "A2" - }, - "path": [ - { - "x": 140.0, - "y": 645.0 - }, - { - "x": 140.0, - "y": 640.0 - } - ] - }, - { - "pin1": { - "compId": 6, - "pinName": "QA3" - }, - "pin2": { - "compId": 14, - "pinName": "A3" - }, - "path": [ - { - "x": 140.0, - "y": 655.0 - }, - { - "x": 140.0, - "y": 650.0 - } - ] - }, - { - "pin1": { - "compId": 6, - "pinName": "QA4" - }, - "pin2": { - "compId": 14, - "pinName": "A4" - }, - "path": [ - { - "x": 140.0, - "y": 665.0 - }, - { - "x": 140.0, - "y": 660.0 - } - ] - }, - { - "pin1": { - "compId": 7, - "pinName": "QA1" - }, - "pin2": { - "compId": 15, - "pinName": "A1" - }, - "path": [ - { - "x": 140.0, - "y": 785.0 - }, - { - "x": 140.0, - "y": 780.0 - } - ] - }, - { - "pin1": { - "compId": 7, - "pinName": "QA2" - }, - "pin2": { - "compId": 15, - "pinName": "A2" - }, - "path": [ - { - "x": 140.0, - "y": 795.0 - }, - { - "x": 140.0, - "y": 790.0 - } - ] - }, - { - "pin1": { - "compId": 7, - "pinName": "QA3" - }, - "pin2": { - "compId": 15, - "pinName": "A3" - }, - "path": [ - { - "x": 140.0, - "y": 805.0 - }, - { - "x": 140.0, - "y": 800.0 - } - ] - }, - { - "pin1": { - "compId": 7, - "pinName": "QA4" - }, - "pin2": { - "compId": 15, - "pinName": "A4" - }, - "path": [ - { - "x": 140.0, - "y": 815.0 - }, - { - "x": 140.0, - "y": 810.0 - } - ] - }, - { - "pin1": { - "compId": 8, - "pinName": "Y1" - }, - "pin2": { - "compId": 9, - "pinName": "C1" - }, - "path": [ - { - "x": 305.0, - "y": 380.0 - }, - { - "x": 305.0, - "y": 445.0 - }, - { - "x": 245.0, - "y": 445.0 - }, - { - "x": 245.0, - "y": 490.0 - } - ] - }, - { - "pin1": { - "compId": 8, - "pinName": "Y2" - }, - "pin2": { - "compId": 9, - "pinName": "C2" - }, - "path": [ - { - "x": 300.0, - "y": 390.0 - }, - { - "x": 300.0, - "y": 440.0 - }, - { - "x": 240.0, - "y": 440.0 - }, - { - "x": 240.0, - "y": 500.0 - } - ] - }, - { - "pin1": { - "compId": 8, - "pinName": "Y3" - }, - "pin2": { - "compId": 9, - "pinName": "C3" - }, - "path": [ - { - "x": 295.0, - "y": 400.0 - }, - { - "x": 295.0, - "y": 435.0 - }, - { - "x": 235.0, - "y": 435.0 - }, - { - "x": 235.0, - "y": 510.0 - } - ] - }, - { - "pin1": { - "compId": 8, - "pinName": "Y4" - }, - "pin2": { - "compId": 9, - "pinName": "C4" - }, - "path": [ - { - "x": 290.0, - "y": 410.0 - }, - { - "x": 290.0, - "y": 430.0 - }, - { - "x": 230.0, - "y": 430.0 - }, - { - "x": 230.0, - "y": 520.0 - } - ] - }, - { - "pin1": { - "compId": 9, - "pinName": "Y1" - }, - "pin2": { - "compId": 10, - "pinName": "C1" - }, - "path": [ - { - "x": 305.0, - "y": 490.0 - }, - { - "x": 305.0, - "y": 595.0 - }, - { - "x": 245.0, - "y": 595.0 - }, - { - "x": 245.0, - "y": 640.0 - } - ] - }, - { - "pin1": { - "compId": 9, - "pinName": "Y2" - }, - "pin2": { - "compId": 10, - "pinName": "C2" - }, - "path": [ - { - "x": 300.0, - "y": 500.0 - }, - { - "x": 300.0, - "y": 590.0 - }, - { - "x": 240.0, - "y": 590.0 - }, - { - "x": 240.0, - "y": 650.0 - } - ] - }, - { - "pin1": { - "compId": 9, - "pinName": "Y3" - }, - "pin2": { - "compId": 10, - "pinName": "C3" - }, - "path": [ - { - "x": 295.0, - "y": 510.0 - }, - { - "x": 295.0, - "y": 585.0 - }, - { - "x": 235.0, - "y": 585.0 - }, - { - "x": 235.0, - "y": 660.0 - } - ] - }, - { - "pin1": { - "compId": 9, - "pinName": "Y4" - }, - "pin2": { - "compId": 10, - "pinName": "C4" - }, - "path": [ - { - "x": 290.0, - "y": 520.0 - }, - { - "x": 290.0, - "y": 580.0 - }, - { - "x": 230.0, - "y": 580.0 - }, - { - "x": 230.0, - "y": 670.0 - } - ] - }, - { - "pin1": { - "compId": 10, - "pinName": "Y1" - }, - "pin2": { - "compId": 11, - "pinName": "C1" - }, - "path": [ - { - "x": 305.0, - "y": 640.0 - }, - { - "x": 305.0, - "y": 745.0 - }, - { - "x": 245.0, - "y": 745.0 - }, - { - "x": 245.0, - "y": 790.0 - } - ] - }, - { - "pin1": { - "compId": 10, - "pinName": "Y2" - }, - "pin2": { - "compId": 11, - "pinName": "C2" - }, - "path": [ - { - "x": 300.0, - "y": 650.0 - }, - { - "x": 300.0, - "y": 740.0 - }, - { - "x": 240.0, - "y": 740.0 - }, - { - "x": 240.0, - "y": 800.0 - } - ] - }, - { - "pin1": { - "compId": 10, - "pinName": "Y3" - }, - "pin2": { - "compId": 11, - "pinName": "C3" - }, - "path": [ - { - "x": 295.0, - "y": 660.0 - }, - { - "x": 295.0, - "y": 735.0 - }, - { - "x": 235.0, - "y": 735.0 - }, - { - "x": 235.0, - "y": 810.0 - } - ] - }, - { - "pin1": { - "compId": 10, - "pinName": "Y4" - }, - "pin2": { - "compId": 11, - "pinName": "C4" - }, - "path": [ - { - "x": 290.0, - "y": 670.0 - }, - { - "x": 290.0, - "y": 730.0 - }, - { - "x": 230.0, - "y": 730.0 - }, - { - "x": 230.0, - "y": 820.0 - } - ] - }, - { - "pin1": { - "compId": 11, - "pinName": "Y1" - }, - "pin2": { - "compId": 0, - "pinName": "QB1" - }, - "path": [ - { - "x": 330.0, - "y": 790.0 - }, - { - "x": 330.0, - "y": 450.0 - } - ] - }, - { - "pin1": { - "compId": 11, - "pinName": "Y2" - }, - "pin2": { - "compId": 0, - "pinName": "QB2" - }, - "path": [ - { - "x": 335.0, - "y": 800.0 - }, - { - "x": 335.0, - "y": 550.0 - } - ] - }, - { - "pin1": { - "compId": 11, - "pinName": "Y3" - }, - "pin2": { - "compId": 0, - "pinName": "QB3" - }, - "path": [ - { - "x": 340.0, - "y": 810.0 - }, - { - "x": 340.0, - "y": 650.0 - } - ] - }, - { - "pin1": { - "compId": 11, - "pinName": "Y4" - }, - "pin2": { - "compId": 0, - "pinName": "QB4" - }, - "path": [ - { - "x": 345.0, - "y": 820.0 - }, - { - "x": 345.0, - "y": 750.0 - } - ] - }, - { - "pin1": { - "compId": 12, - "pinName": "Y1" - }, - "pin2": { - "compId": 13, - "pinName": "C1" - }, - "path": [ - { - "x": 210.0, - "y": 330.0 - }, - { - "x": 210.0, - "y": 430.0 - }, - { - "x": 150.0, - "y": 430.0 - }, - { - "x": 150.0, - "y": 440.0 - } - ] - }, - { - "pin1": { - "compId": 12, - "pinName": "Y2" - }, - "pin2": { - "compId": 13, - "pinName": "C2" - }, - "path": [ - { - "x": 205.0, - "y": 340.0 - }, - { - "x": 205.0, - "y": 425.0 - }, - { - "x": 145.0, - "y": 425.0 - }, - { - "x": 145.0, - "y": 450.0 - } - ] - }, - { - "pin1": { - "compId": 12, - "pinName": "Y3" - }, - "pin2": { - "compId": 13, - "pinName": "C3" - }, - "path": [ - { - "x": 200.0, - "y": 350.0 - }, - { - "x": 200.0, - "y": 420.0 - }, - { - "x": 140.0, - "y": 420.0 - }, - { - "x": 140.0, - "y": 460.0 - } - ] - }, - { - "pin1": { - "compId": 12, - "pinName": "Y4" - }, - "pin2": { - "compId": 13, - "pinName": "C4" - }, - "path": [ - { - "x": 195.0, - "y": 360.0 - }, - { - "x": 195.0, - "y": 415.0 - }, - { - "x": 135.0, - "y": 415.0 - }, - { - "x": 135.0, - "y": 470.0 - } - ] - }, - { - "pin1": { - "compId": 13, - "pinName": "Y1" - }, - "pin2": { - "compId": 14, - "pinName": "C1" - }, - "path": [ - { - "x": 210.0, - "y": 440.0 - }, - { - "x": 210.0, - "y": 580.0 - }, - { - "x": 150.0, - "y": 580.0 - }, - { - "x": 150.0, - "y": 590.0 - } - ] - }, - { - "pin1": { - "compId": 13, - "pinName": "Y2" - }, - "pin2": { - "compId": 14, - "pinName": "C2" - }, - "path": [ - { - "x": 205.0, - "y": 450.0 - }, - { - "x": 205.0, - "y": 575.0 - }, - { - "x": 145.0, - "y": 575.0 - }, - { - "x": 145.0, - "y": 600.0 - } - ] - }, - { - "pin1": { - "compId": 13, - "pinName": "Y3" - }, - "pin2": { - "compId": 14, - "pinName": "C3" - }, - "path": [ - { - "x": 200.0, - "y": 460.0 - }, - { - "x": 200.0, - "y": 570.0 - }, - { - "x": 140.0, - "y": 570.0 - }, - { - "x": 140.0, - "y": 610.0 - } - ] - }, - { - "pin1": { - "compId": 13, - "pinName": "Y4" - }, - "pin2": { - "compId": 14, - "pinName": "C4" - }, - "path": [ - { - "x": 195.0, - "y": 470.0 - }, - { - "x": 195.0, - "y": 565.0 - }, - { - "x": 135.0, - "y": 565.0 - }, - { - "x": 135.0, - "y": 620.0 - } - ] - }, - { - "pin1": { - "compId": 14, - "pinName": "Y1" - }, - "pin2": { - "compId": 15, - "pinName": "C1" - }, - "path": [ - { - "x": 210.0, - "y": 590.0 - }, - { - "x": 210.0, - "y": 730.0 - }, - { - "x": 150.0, - "y": 730.0 - }, - { - "x": 150.0, - "y": 740.0 - } - ] - }, - { - "pin1": { - "compId": 14, - "pinName": "Y2" - }, - "pin2": { - "compId": 15, - "pinName": "C2" - }, - "path": [ - { - "x": 205.0, - "y": 600.0 - }, - { - "x": 205.0, - "y": 725.0 - }, - { - "x": 145.0, - "y": 725.0 - }, - { - "x": 145.0, - "y": 750.0 - } - ] - }, - { - "pin1": { - "compId": 14, - "pinName": "Y3" - }, - "pin2": { - "compId": 15, - "pinName": "C3" - }, - "path": [ - { - "x": 200.0, - "y": 610.0 - }, - { - "x": 200.0, - "y": 720.0 - }, - { - "x": 140.0, - "y": 720.0 - }, - { - "x": 140.0, - "y": 760.0 - } - ] - }, - { - "pin1": { - "compId": 14, - "pinName": "Y4" - }, - "pin2": { - "compId": 15, - "pinName": "C4" - }, - "path": [ - { - "x": 195.0, - "y": 620.0 - }, - { - "x": 195.0, - "y": 715.0 - }, - { - "x": 135.0, - "y": 715.0 - }, - { - "x": 135.0, - "y": 770.0 - } - ] - }, - { - "pin1": { - "compId": 15, - "pinName": "Y1" - }, - "pin2": { - "compId": 0, - "pinName": "QA1" - }, - "path": [ - { - "x": 210.0, - "y": 740.0 - }, - { - "x": 210.0, - "y": 880.0 - }, - { - "x": 310.0, - "y": 880.0 - }, - { - "x": 310.0, - "y": 50.0 - } - ] - }, - { - "pin1": { - "compId": 15, - "pinName": "Y2" - }, - "pin2": { - "compId": 0, - "pinName": "QA2" - }, - "path": [ - { - "x": 205.0, - "y": 750.0 - }, - { - "x": 205.0, - "y": 885.0 - }, - { - "x": 315.0, - "y": 885.0 - }, - { - "x": 315.0, - "y": 150.0 - } - ] - }, - { - "pin1": { - "compId": 15, - "pinName": "Y3" - }, - "pin2": { - "compId": 0, - "pinName": "QA3" - }, - "path": [ - { - "x": 200.0, - "y": 760.0 - }, - { - "x": 200.0, - "y": 890.0 - }, - { - "x": 320.0, - "y": 890.0 - }, - { - "x": 320.0, - "y": 250.0 - } - ] - }, - { - "pin1": { - "compId": 15, - "pinName": "Y4" - }, - "pin2": { - "compId": 0, - "pinName": "QA4" - }, - "path": [ - { - "x": 195.0, - "y": 770.0 - }, - { - "x": 195.0, - "y": 895.0 - }, - { - "x": 325.0, - "y": 895.0 - }, - { - "x": 325.0, - "y": 350.0 - } - ] - } - ] - }, - "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", - "symbolRendererParams": { - "centerText": "GUIram4", - "horizontalComponentCenter": 17.5, - "centerTextHeight": 5.0, - "pinLabelHeight": 3.5, - "pinLabelMargin": 0.5 - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.editor/components/GUIsel2_4.json b/net.mograsim.logic.ui.editor/components/GUIsel2_4.json deleted file mode 100644 index ccb4bbbd..00000000 --- a/net.mograsim.logic.ui.editor/components/GUIsel2_4.json +++ /dev/null @@ -1,794 +0,0 @@ -mograsim version: 0.1.3 -{ - "width": 35.0, - "height": 100.0, - "interfacePins": [ - { - "location": { - "x": 0.0, - "y": 5.0 - }, - "name": "SA", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 15.0 - }, - "name": "SB", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 65.0 - }, - "name": "B1", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 25.0 - }, - "name": "A1", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 75.0 - }, - "name": "B2", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 35.0 - }, - "name": "A2", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 85.0 - }, - "name": "B3", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 45.0 - }, - "name": "A3", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 95.0 - }, - "name": "B4", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 55.0 - }, - "name": "A4", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 5.0 - }, - "name": "Y1", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 15.0 - }, - "name": "Y2", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 25.0 - }, - "name": "Y3", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 35.0 - }, - "name": "Y4", - "logicWidth": 1 - } - ], - "submodel": { - "innerScale": 0.4, - "subComps": [ - { - "pos": { - "x": 20.0, - "y": 2.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 20.0, - "y": 52.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 20.0, - "y": 102.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 20.0, - "y": 152.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 20.0, - "y": 27.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 20.0, - "y": 77.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 20.0, - "y": 127.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 20.0, - "y": 177.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 65.0, - "y": 2.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 65.0, - "y": 27.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 65.0, - "y": 52.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 65.0, - "y": 77.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 6.5, - "y": 16.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 6.5, - "y": 66.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 6.5, - "y": 116.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 4.0, - "y": 41.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 4.0, - "y": 91.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 4.0, - "y": 141.5 - }, - "id": "WireCrossPoint", - "params": 1 - } - ], - "innerWires": [ - { - "pin1": { - "compId": 0, - "pinName": "A1" - }, - "pin2": { - "compId": 1, - "pinName": "A" - }, - "path": [ - { - "x": 15.0, - "y": 62.5 - }, - { - "x": 15.0, - "y": 7.5 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "A2" - }, - "pin2": { - "compId": 2, - "pinName": "A" - }, - "path": [ - { - "x": 17.5, - "y": 87.5 - }, - { - "x": 17.5, - "y": 57.5 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "A3" - }, - "pin2": { - "compId": 3, - "pinName": "A" - }, - "path": [ - { - "x": 17.5, - "y": 112.5 - }, - { - "x": 17.5, - "y": 107.5 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "A4" - }, - "pin2": { - "compId": 4, - "pinName": "A" - }, - "path": [ - { - "x": 17.5, - "y": 137.5 - }, - { - "x": 17.5, - "y": 157.5 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "B1" - }, - "pin2": { - "compId": 5, - "pinName": "A" - }, - "path": [ - { - "x": 10.0, - "y": 162.5 - }, - { - "x": 10.0, - "y": 32.5 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "B2" - }, - "pin2": { - "compId": 6, - "pinName": "A" - }, - "path": [ - { - "x": 12.5, - "y": 187.5 - }, - { - "x": 12.5, - "y": 82.5 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "B3" - }, - "pin2": { - "compId": 7, - "pinName": "A" - }, - "path": [ - { - "x": 15.0, - "y": 212.5 - }, - { - "x": 15.0, - "y": 132.5 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "B4" - }, - "pin2": { - "compId": 8, - "pinName": "A" - }, - "path": [ - { - "x": 10.0, - "y": 237.5 - }, - { - "x": 10.0, - "y": 182.5 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "SA" - }, - "pin2": { - "compId": 13, - "pinName": "" - } - }, - { - "pin1": { - "compId": 0, - "pinName": "SB" - }, - "pin2": { - "compId": 16, - "pinName": "" - } - }, - { - "pin1": { - "compId": 13, - "pinName": "" - }, - "pin2": { - "compId": 14, - "pinName": "" - } - }, - { - "pin1": { - "compId": 13, - "pinName": "" - }, - "pin2": { - "compId": 1, - "pinName": "B" - } - }, - { - "pin1": { - "compId": 14, - "pinName": "" - }, - "pin2": { - "compId": 15, - "pinName": "" - } - }, - { - "pin1": { - "compId": 14, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "B" - } - }, - { - "pin1": { - "compId": 15, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "B" - } - }, - { - "pin1": { - "compId": 15, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "B" - }, - "path": [ - { - "x": 7.5, - "y": 167.5 - } - ] - }, - { - "pin1": { - "compId": 16, - "pinName": "" - }, - "pin2": { - "compId": 17, - "pinName": "" - } - }, - { - "pin1": { - "compId": 16, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "B" - } - }, - { - "pin1": { - "compId": 17, - "pinName": "" - }, - "pin2": { - "compId": 18, - "pinName": "" - } - }, - { - "pin1": { - "compId": 17, - "pinName": "" - }, - "pin2": { - "compId": 6, - "pinName": "B" - } - }, - { - "pin1": { - "compId": 18, - "pinName": "" - }, - "pin2": { - "compId": 7, - "pinName": "B" - } - }, - { - "pin1": { - "compId": 18, - "pinName": "" - }, - "pin2": { - "compId": 8, - "pinName": "B" - }, - "path": [ - { - "x": 5.0, - "y": 192.5 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y" - }, - "pin2": { - "compId": 9, - "pinName": "A" - }, - "path": [ - { - "x": 42.5, - "y": 12.5 - }, - { - "x": 42.5, - "y": 7.5 - } - ] - }, - { - "pin1": { - "compId": 5, - "pinName": "Y" - }, - "pin2": { - "compId": 9, - "pinName": "B" - }, - "path": [ - { - "x": 45.0, - "y": 37.5 - }, - { - "x": 45.0, - "y": 17.5 - } - ] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y" - }, - "pin2": { - "compId": 10, - "pinName": "A" - }, - "path": [ - { - "x": 47.5, - "y": 62.5 - }, - { - "x": 47.5, - "y": 32.5 - } - ] - }, - { - "pin1": { - "compId": 6, - "pinName": "Y" - }, - "pin2": { - "compId": 10, - "pinName": "B" - }, - "path": [ - { - "x": 50.0, - "y": 87.5 - }, - { - "x": 50.0, - "y": 42.5 - } - ] - }, - { - "pin1": { - "compId": 3, - "pinName": "Y" - }, - "pin2": { - "compId": 11, - "pinName": "A" - }, - "path": [ - { - "x": 52.5, - "y": 112.5 - }, - { - "x": 52.5, - "y": 57.5 - } - ] - }, - { - "pin1": { - "compId": 7, - "pinName": "Y" - }, - "pin2": { - "compId": 11, - "pinName": "B" - }, - "path": [ - { - "x": 55.0, - "y": 137.5 - }, - { - "x": 55.0, - "y": 67.5 - } - ] - }, - { - "pin1": { - "compId": 4, - "pinName": "Y" - }, - "pin2": { - "compId": 12, - "pinName": "A" - }, - "path": [ - { - "x": 57.5, - "y": 162.5 - }, - { - "x": 57.5, - "y": 82.5 - } - ] - }, - { - "pin1": { - "compId": 8, - "pinName": "Y" - }, - "pin2": { - "compId": 12, - "pinName": "B" - }, - "path": [ - { - "x": 60.0, - "y": 187.5 - }, - { - "x": 60.0, - "y": 92.5 - } - ] - }, - { - "pin1": { - "compId": 9, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y1" - }, - "path": [] - }, - { - "pin1": { - "compId": 10, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y2" - }, - "path": [] - }, - { - "pin1": { - "compId": 11, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y3" - }, - "path": [] - }, - { - "pin1": { - "compId": 12, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y4" - }, - "path": [] - } - ] - }, - "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", - "symbolRendererParams": { - "centerText": "GUIsel2_4", - "horizontalComponentCenter": 17.5, - "centerTextHeight": 5.0, - "pinLabelHeight": 3.5, - "pinLabelMargin": 0.5 - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.editor/components/GUIsel3_4.json b/net.mograsim.logic.ui.editor/components/GUIsel3_4.json deleted file mode 100644 index eafc524e..00000000 --- a/net.mograsim.logic.ui.editor/components/GUIsel3_4.json +++ /dev/null @@ -1,865 +0,0 @@ -mograsim version: 0.1.3 -{ - "width": 35.0, - "height": 150.0, - "interfacePins": [ - { - "location": { - "x": 0.0, - "y": 5.0 - }, - "name": "SA", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 115.0 - }, - "name": "C1", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 15.0 - }, - "name": "SB", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 75.0 - }, - "name": "B1", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 125.0 - }, - "name": "C2", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 25.0 - }, - "name": "SC", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 35.0 - }, - "name": "A1", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 85.0 - }, - "name": "B2", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 135.0 - }, - "name": "C3", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 45.0 - }, - "name": "A2", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 95.0 - }, - "name": "B3", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 145.0 - }, - "name": "C4", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 55.0 - }, - "name": "A3", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 105.0 - }, - "name": "B4", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 65.0 - }, - "name": "A4", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 5.0 - }, - "name": "Y1", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 15.0 - }, - "name": "Y2", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 25.0 - }, - "name": "Y3", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 35.0 - }, - "name": "Y4", - "logicWidth": 1 - } - ], - "submodel": { - "innerScale": 0.2, - "subComps": [ - { - "pos": { - "x": 35.0, - "y": 250.0 - }, - "id": "GUIsel2_4" - }, - { - "pos": { - "x": 75.0, - "y": 250.0 - }, - "id": "GUInot4" - }, - { - "pos": { - "x": 50.0, - "y": 570.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 50.0, - "y": 620.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 50.0, - "y": 670.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 50.0, - "y": 720.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 152.5, - "y": 15.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 152.5, - "y": 65.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 152.5, - "y": 115.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 152.5, - "y": 165.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 29.0, - "y": 584.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 29.0, - "y": 634.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 29.0, - "y": 684.0 - }, - "id": "WireCrossPoint", - "params": 1 - } - ], - "innerWires": [ - { - "pin1": { - "compId": 0, - "pinName": "SA" - }, - "pin2": { - "compId": 1, - "pinName": "SA" - }, - "path": [ - { - "x": 25.0, - "y": 25.0 - }, - { - "x": 25.0, - "y": 255.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "SB" - }, - "pin2": { - "compId": 1, - "pinName": "SB" - }, - "path": [ - { - "x": 20.0, - "y": 75.0 - }, - { - "x": 20.0, - "y": 265.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "A1" - }, - "pin2": { - "compId": 1, - "pinName": "A1" - }, - "path": [ - { - "x": 15.0, - "y": 175.0 - }, - { - "x": 15.0, - "y": 275.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "A2" - }, - "pin2": { - "compId": 1, - "pinName": "A2" - }, - "path": [ - { - "x": 10.0, - "y": 225.0 - }, - { - "x": 10.0, - "y": 285.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "A3" - }, - "pin2": { - "compId": 1, - "pinName": "A3" - }, - "path": [ - { - "x": 5.0, - "y": 275.0 - }, - { - "x": 5.0, - "y": 295.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "A4" - }, - "pin2": { - "compId": 1, - "pinName": "A4" - }, - "path": [ - { - "x": 5.0, - "y": 325.0 - }, - { - "x": 5.0, - "y": 305.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "B1" - }, - "pin2": { - "compId": 1, - "pinName": "B1" - }, - "path": [ - { - "x": 10.0, - "y": 375.0 - }, - { - "x": 10.0, - "y": 315.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "B2" - }, - "pin2": { - "compId": 1, - "pinName": "B2" - }, - "path": [ - { - "x": 15.0, - "y": 425.0 - }, - { - "x": 15.0, - "y": 325.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "B3" - }, - "pin2": { - "compId": 1, - "pinName": "B3" - }, - "path": [ - { - "x": 20.0, - "y": 475.0 - }, - { - "x": 20.0, - "y": 335.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "B4" - }, - "pin2": { - "compId": 1, - "pinName": "B4" - }, - "path": [ - { - "x": 25.0, - "y": 525.0 - }, - { - "x": 25.0, - "y": 345.0 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y1" - }, - "pin2": { - "compId": 2, - "pinName": "A1" - }, - "path": [] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y2" - }, - "pin2": { - "compId": 2, - "pinName": "A2" - }, - "path": [] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y3" - }, - "pin2": { - "compId": 2, - "pinName": "A3" - }, - "path": [] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y4" - }, - "pin2": { - "compId": 2, - "pinName": "A4" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "SC" - }, - "pin2": { - "compId": 11, - "pinName": "" - }, - "path": [ - { - "x": 30.0, - "y": 125.0 - } - ] - }, - { - "pin1": { - "compId": 11, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "B" - }, - "path": [] - }, - { - "pin1": { - "compId": 11, - "pinName": "" - }, - "pin2": { - "compId": 12, - "pinName": "" - }, - "path": [ - { - "x": 30.0, - "y": 125.0 - } - ] - }, - { - "pin1": { - "compId": 12, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "B" - }, - "path": [] - }, - { - "pin1": { - "compId": 12, - "pinName": "" - }, - "pin2": { - "compId": 13, - "pinName": "" - }, - "path": [ - { - "x": 30.0, - "y": 125.0 - } - ] - }, - { - "pin1": { - "compId": 13, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "B" - }, - "path": [] - }, - { - "pin1": { - "compId": 13, - "pinName": "" - }, - "pin2": { - "compId": 6, - "pinName": "B" - }, - "path": [ - { - "x": 30.0, - "y": 735.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "C1" - }, - "pin2": { - "compId": 3, - "pinName": "A" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "C2" - }, - "pin2": { - "compId": 4, - "pinName": "A" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "C3" - }, - "pin2": { - "compId": 5, - "pinName": "A" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "C4" - }, - "pin2": { - "compId": 6, - "pinName": "A" - }, - "path": [] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y1" - }, - "pin2": { - "compId": 7, - "pinName": "A" - }, - "path": [ - { - "x": 115.0, - "y": 255.0 - }, - { - "x": 115.0, - "y": 20.0 - } - ] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y2" - }, - "pin2": { - "compId": 8, - "pinName": "A" - }, - "path": [ - { - "x": 120.0, - "y": 265.0 - }, - { - "x": 120.0, - "y": 70.0 - } - ] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y3" - }, - "pin2": { - "compId": 9, - "pinName": "A" - }, - "path": [ - { - "x": 125.0, - "y": 275.0 - }, - { - "x": 125.0, - "y": 120.0 - } - ] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y4" - }, - "pin2": { - "compId": 10, - "pinName": "A" - }, - "path": [ - { - "x": 130.0, - "y": 285.0 - }, - { - "x": 130.0, - "y": 170.0 - } - ] - }, - { - "pin1": { - "compId": 3, - "pinName": "Y" - }, - "pin2": { - "compId": 7, - "pinName": "B" - }, - "path": [ - { - "x": 135.0, - "y": 580.0 - }, - { - "x": 135.0, - "y": 30.0 - } - ] - }, - { - "pin1": { - "compId": 4, - "pinName": "Y" - }, - "pin2": { - "compId": 8, - "pinName": "B" - }, - "path": [ - { - "x": 140.0, - "y": 630.0 - }, - { - "x": 140.0, - "y": 80.0 - } - ] - }, - { - "pin1": { - "compId": 5, - "pinName": "Y" - }, - "pin2": { - "compId": 9, - "pinName": "B" - }, - "path": [ - { - "x": 145.0, - "y": 680.0 - }, - { - "x": 145.0, - "y": 130.0 - } - ] - }, - { - "pin1": { - "compId": 6, - "pinName": "Y" - }, - "pin2": { - "compId": 10, - "pinName": "B" - }, - "path": [ - { - "x": 150.0, - "y": 730.0 - }, - { - "x": 150.0, - "y": 180.0 - } - ] - }, - { - "pin1": { - "compId": 7, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y1" - }, - "path": [] - }, - { - "pin1": { - "compId": 8, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y2" - }, - "path": [] - }, - { - "pin1": { - "compId": 9, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y3" - }, - "path": [] - }, - { - "pin1": { - "compId": 10, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y4" - }, - "path": [] - } - ] - }, - "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", - "symbolRendererParams": { - "centerText": "GUIsel3_4", - "horizontalComponentCenter": 17.5, - "centerTextHeight": 5.0, - "pinLabelHeight": 3.5, - "pinLabelMargin": 0.5 - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.editor/components/GUIxor.json b/net.mograsim.logic.ui.editor/components/GUIxor.json deleted file mode 100644 index a3285fe0..00000000 --- a/net.mograsim.logic.ui.editor/components/GUIxor.json +++ /dev/null @@ -1,260 +0,0 @@ -mograsim version: 0.1.3 -{ - "width": 35.0, - "height": 20.0, - "interfacePins": [ - { - "location": { - "x": 0.0, - "y": 5.0 - }, - "name": "A", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 15.0 - }, - "name": "B", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 5.0 - }, - "name": "Y", - "logicWidth": 1 - } - ], - "submodel": { - "innerScale": 0.4, - "subComps": [ - { - "pos": { - "x": 7.5, - "y": 15.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 35.0, - "y": 2.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 35.0, - "y": 27.5 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 62.5, - "y": 15.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 4.0, - "y": 11.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 4.0, - "y": 36.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 29.0, - "y": 24.0 - }, - "id": "WireCrossPoint", - "params": 1 - } - ], - "innerWires": [ - { - "pin1": { - "compId": 0, - "pinName": "A" - }, - "pin2": { - "compId": 5, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "B" - }, - "pin2": { - "compId": 6, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 5, - "pinName": "" - }, - "pin2": { - "compId": 1, - "pinName": "A" - }, - "path": [ - { - "x": 5.0, - "y": 20.0 - } - ] - }, - { - "pin1": { - "compId": 6, - "pinName": "" - }, - "pin2": { - "compId": 1, - "pinName": "B" - }, - "path": [ - { - "x": 5.0, - "y": 30.0 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y" - }, - "pin2": { - "compId": 7, - "pinName": "" - } - }, - { - "pin1": { - "compId": 7, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "B" - }, - "path": [ - { - "x": 30.0, - "y": 17.5 - } - ] - }, - { - "pin1": { - "compId": 7, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "A" - }, - "path": [ - { - "x": 30.0, - "y": 32.5 - } - ] - }, - { - "pin1": { - "compId": 5, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "A" - }, - "path": [ - { - "x": 5.0, - "y": 7.5 - } - ] - }, - { - "pin1": { - "compId": 6, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "B" - }, - "path": [ - { - "x": 5.0, - "y": 42.5 - } - ] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y" - }, - "pin2": { - "compId": 4, - "pinName": "A" - } - }, - { - "pin1": { - "compId": 3, - "pinName": "Y" - }, - "pin2": { - "compId": 4, - "pinName": "B" - } - }, - { - "pin1": { - "compId": 4, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Y" - } - } - ] - }, - "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", - "symbolRendererParams": { - "centerText": "GUIxor", - "horizontalComponentCenter": 17.5, - "centerTextHeight": 5.0, - "pinLabelHeight": 3.5, - "pinLabelMargin": 0.5 - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.editor/components/am2901/GUIAm2901.json b/net.mograsim.logic.ui.editor/components/am2901/GUIAm2901.json deleted file mode 100644 index 6874bec4..00000000 --- a/net.mograsim.logic.ui.editor/components/am2901/GUIAm2901.json +++ /dev/null @@ -1,3191 +0,0 @@ -mograsim version: 0.1.3 -{ - "width": 35.0, - "height": 270.0, - "interfacePins": [ - { - "location": { - "x": 35.0, - "y": 85.0 - }, - "name": "ORAMn", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 95.0 - }, - "name": "C", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 265.0 - }, - "name": "IQn+3", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 85.0 - }, - "name": "I0", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 255.0 - }, - "name": "IQn", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 75.0 - }, - "name": "I1", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 65.0 - }, - "name": "I2", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 55.0 - }, - "name": "I3", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 65.0 - }, - "name": "OVR", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 45.0 - }, - "name": "I4", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 105.0 - }, - "name": "Cn", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 115.0 - }, - "name": "OQn+3", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 35.0 - }, - "name": "I5", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 25.0 - }, - "name": "I6", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 105.0 - }, - "name": "OQn", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 15.0 - }, - "name": "I7", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 5.0 - }, - "name": "I8", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 155.0 - }, - "name": "A0", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 165.0 - }, - "name": "A1", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 175.0 - }, - "name": "A2", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 185.0 - }, - "name": "A3", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 235.0 - }, - "name": "IRAMn", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 55.0 - }, - "name": "Cn+4", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 95.0 - }, - "name": "ORAMn+3", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 45.0 - }, - "name": "F\u003d0", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 115.0 - }, - "name": "D1", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 245.0 - }, - "name": "IRAMn+3", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 75.0 - }, - "name": "F3", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 125.0 - }, - "name": "D2", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 195.0 - }, - "name": "B0", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 135.0 - }, - "name": "D3", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 205.0 - }, - "name": "B1", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 145.0 - }, - "name": "D4", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 215.0 - }, - "name": "B2", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 225.0 - }, - "name": "B3", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 5.0 - }, - "name": "Y1", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 15.0 - }, - "name": "Y2", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 25.0 - }, - "name": "Y3", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 35.0 - }, - "name": "Y4", - "logicWidth": 1 - } - ], - "submodel": { - "innerScale": 0.1, - "subComps": [ - { - "pos": { - "x": 15.0, - "y": 45.0 - }, - "id": "GUIAm2901DestDecode" - }, - { - "pos": { - "x": 275.0, - "y": 135.0 - }, - "id": "GUImux1_4" - }, - { - "pos": { - "x": 190.0, - "y": 65.0 - }, - "id": "GUIand" - }, - { - "pos": { - "x": 160.0, - "y": 75.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 240.0, - "y": 2110.0 - }, - "id": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode" - }, - { - "pos": { - "x": 275.0, - "y": 445.0 - }, - "id": "GUIor4" - }, - { - "pos": { - "x": 320.0, - "y": 440.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 95.0, - "y": 2220.0 - }, - "id": "GUIram4" - }, - { - "pos": { - "x": 160.0, - "y": 2220.0 - }, - "id": "GUIdlatch4" - }, - { - "pos": { - "x": 160.0, - "y": 2275.0 - }, - "id": "GUIdlatch4" - }, - { - "pos": { - "x": 45.0, - "y": 2310.0 - }, - "id": "GUIsel3_4" - }, - { - "pos": { - "x": 45.0, - "y": 2510.0 - }, - "id": "GUIsel3_4" - }, - { - "pos": { - "x": 90.0, - "y": 2490.0 - }, - "id": "GUIAm2901QReg" - }, - { - "pos": { - "x": 154.0, - "y": 949.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 154.0, - "y": 89.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 154.0, - "y": 2264.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 154.0, - "y": 2319.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 39.0, - "y": 2314.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 34.0, - "y": 2324.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 29.0, - "y": 2334.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 219.0, - "y": 2224.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 224.0, - "y": 2234.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 229.0, - "y": 2244.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 234.0, - "y": 2254.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 129.0, - "y": 2494.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 134.0, - "y": 2504.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 139.0, - "y": 2514.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 144.0, - "y": 2524.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 219.0, - "y": 2494.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 234.0, - "y": 2524.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 34.0, - "y": 2624.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 39.0, - "y": 2634.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 279.0, - "y": 2114.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 294.0, - "y": 2144.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 329.0, - "y": 949.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 254.0, - "y": 2089.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 259.0, - "y": 2094.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 264.0, - "y": 2099.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 269.0, - "y": 2104.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 254.0, - "y": 449.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 259.0, - "y": 459.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 264.0, - "y": 469.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 269.0, - "y": 479.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 9.0, - "y": 2354.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 14.0, - "y": 2364.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 19.0, - "y": 2374.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 14.0, - "y": 2394.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 19.0, - "y": 2404.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 24.0, - "y": 2414.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 9.0, - "y": 2384.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 14.0, - "y": 2424.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 19.0, - "y": 2434.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 24.0, - "y": 2444.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 314.0, - "y": 449.0 - }, - "id": "WireCrossPoint", - "params": 1 - } - ], - "innerWires": [ - { - "pin1": { - "compId": 0, - "pinName": "I8" - }, - "pin2": { - "compId": 1, - "pinName": "I8" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "I7" - }, - "pin2": { - "compId": 1, - "pinName": "I7" - }, - "path": [ - { - "x": 5.0, - "y": 150.0 - }, - { - "x": 5.0, - "y": 60.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "I6" - }, - "pin2": { - "compId": 1, - "pinName": "I6" - }, - "path": [ - { - "x": 10.0, - "y": 250.0 - }, - { - "x": 10.0, - "y": 70.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "I5" - }, - "pin2": { - "compId": 5, - "pinName": "I5" - }, - "path": [ - { - "x": 130.0, - "y": 350.0 - }, - { - "x": 130.0, - "y": 2115.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "I4" - }, - "pin2": { - "compId": 5, - "pinName": "I4" - }, - "path": [ - { - "x": 125.0, - "y": 450.0 - }, - { - "x": 125.0, - "y": 2125.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "I3" - }, - "pin2": { - "compId": 5, - "pinName": "I3" - }, - "path": [ - { - "x": 120.0, - "y": 550.0 - }, - { - "x": 120.0, - "y": 2135.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "I2" - }, - "pin2": { - "compId": 5, - "pinName": "I2" - }, - "path": [ - { - "x": 115.0, - "y": 650.0 - }, - { - "x": 115.0, - "y": 2145.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "I1" - }, - "pin2": { - "compId": 5, - "pinName": "I1" - }, - "path": [ - { - "x": 110.0, - "y": 750.0 - }, - { - "x": 110.0, - "y": 2155.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "I0" - }, - "pin2": { - "compId": 5, - "pinName": "I0" - }, - "path": [ - { - "x": 105.0, - "y": 850.0 - }, - { - "x": 105.0, - "y": 2165.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "C" - }, - "pin2": { - "compId": 14, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 14, - "pinName": "" - }, - "pin2": { - "compId": 15, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 15, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "A" - }, - "path": [ - { - "x": 155.0, - "y": 80.0 - } - ] - }, - { - "pin1": { - "compId": 15, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "B" - }, - "path": [] - }, - { - "pin1": { - "compId": 14, - "pinName": "" - }, - "pin2": { - "compId": 16, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 16, - "pinName": "" - }, - "pin2": { - "compId": 9, - "pinName": "C" - }, - "path": [] - }, - { - "pin1": { - "compId": 16, - "pinName": "" - }, - "pin2": { - "compId": 17, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 17, - "pinName": "" - }, - "pin2": { - "compId": 10, - "pinName": "C" - }, - "path": [] - }, - { - "pin1": { - "compId": 17, - "pinName": "" - }, - "pin2": { - "compId": 13, - "pinName": "C" - }, - "path": [ - { - "x": 155.0, - "y": 2485.0 - }, - { - "x": 80.0, - "y": 2485.0 - }, - { - "x": 80.0, - "y": 2495.0 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "LSH" - }, - "pin2": { - "compId": 18, - "pinName": "" - }, - "path": [ - { - "x": 55.0, - "y": 90.0 - }, - { - "x": 55.0, - "y": 125.0 - }, - { - "x": 40.0, - "y": 125.0 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "NSH" - }, - "pin2": { - "compId": 19, - "pinName": "" - }, - "path": [ - { - "x": 60.0, - "y": 50.0 - }, - { - "x": 60.0, - "y": 120.0 - }, - { - "x": 35.0, - "y": 120.0 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "RSH" - }, - "pin2": { - "compId": 20, - "pinName": "" - }, - "path": [ - { - "x": 65.0, - "y": 60.0 - }, - { - "x": 65.0, - "y": 115.0 - }, - { - "x": 30.0, - "y": 115.0 - } - ] - }, - { - "pin1": { - "compId": 18, - "pinName": "" - }, - "pin2": { - "compId": 11, - "pinName": "SA" - }, - "path": [] - }, - { - "pin1": { - "compId": 19, - "pinName": "" - }, - "pin2": { - "compId": 11, - "pinName": "SB" - }, - "path": [] - }, - { - "pin1": { - "compId": 20, - "pinName": "" - }, - "pin2": { - "compId": 11, - "pinName": "SC" - }, - "path": [] - }, - { - "pin1": { - "compId": 18, - "pinName": "" - }, - "pin2": { - "compId": 12, - "pinName": "SA" - }, - "path": [ - { - "x": 40.0, - "y": 2515.0 - } - ] - }, - { - "pin1": { - "compId": 19, - "pinName": "" - }, - "pin2": { - "compId": 12, - "pinName": "SB" - }, - "path": [ - { - "x": 35.0, - "y": 2525.0 - } - ] - }, - { - "pin1": { - "compId": 20, - "pinName": "" - }, - "pin2": { - "compId": 12, - "pinName": "SC" - }, - "path": [ - { - "x": 30.0, - "y": 2535.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "A0" - }, - "pin2": { - "compId": 8, - "pinName": "A0" - }, - "path": [ - { - "x": 80.0, - "y": 1550.0 - }, - { - "x": 80.0, - "y": 2225.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "A1" - }, - "pin2": { - "compId": 8, - "pinName": "A1" - }, - "path": [ - { - "x": 75.0, - "y": 1650.0 - }, - { - "x": 75.0, - "y": 2235.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "A2" - }, - "pin2": { - "compId": 8, - "pinName": "A2" - }, - "path": [ - { - "x": 70.0, - "y": 1750.0 - }, - { - "x": 70.0, - "y": 2245.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "A3" - }, - "pin2": { - "compId": 8, - "pinName": "A3" - }, - "path": [ - { - "x": 65.0, - "y": 1850.0 - }, - { - "x": 65.0, - "y": 2255.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "B0" - }, - "pin2": { - "compId": 8, - "pinName": "B0" - }, - "path": [ - { - "x": 60.0, - "y": 1950.0 - }, - { - "x": 60.0, - "y": 2265.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "B1" - }, - "pin2": { - "compId": 8, - "pinName": "B1" - }, - "path": [ - { - "x": 55.0, - "y": 2050.0 - }, - { - "x": 55.0, - "y": 2275.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "B2" - }, - "pin2": { - "compId": 8, - "pinName": "B2" - }, - "path": [ - { - "x": 50.0, - "y": 2150.0 - }, - { - "x": 50.0, - "y": 2285.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "B3" - }, - "pin2": { - "compId": 8, - "pinName": "B3" - }, - "path": [ - { - "x": 45.0, - "y": 2250.0 - }, - { - "x": 45.0, - "y": 2295.0 - } - ] - }, - { - "pin1": { - "compId": 8, - "pinName": "QA1" - }, - "pin2": { - "compId": 9, - "pinName": "D1" - }, - "path": [] - }, - { - "pin1": { - "compId": 8, - "pinName": "QA2" - }, - "pin2": { - "compId": 9, - "pinName": "D2" - }, - "path": [] - }, - { - "pin1": { - "compId": 8, - "pinName": "QA3" - }, - "pin2": { - "compId": 9, - "pinName": "D3" - }, - "path": [] - }, - { - "pin1": { - "compId": 8, - "pinName": "QA4" - }, - "pin2": { - "compId": 9, - "pinName": "D4" - }, - "path": [] - }, - { - "pin1": { - "compId": 8, - "pinName": "QB1" - }, - "pin2": { - "compId": 10, - "pinName": "D1" - }, - "path": [ - { - "x": 150.0, - "y": 2265.0 - }, - { - "x": 150.0, - "y": 2280.0 - } - ] - }, - { - "pin1": { - "compId": 8, - "pinName": "QB2" - }, - "pin2": { - "compId": 10, - "pinName": "D2" - }, - "path": [ - { - "x": 145.0, - "y": 2275.0 - }, - { - "x": 145.0, - "y": 2290.0 - } - ] - }, - { - "pin1": { - "compId": 8, - "pinName": "QB3" - }, - "pin2": { - "compId": 10, - "pinName": "D3" - }, - "path": [ - { - "x": 140.0, - "y": 2285.0 - }, - { - "x": 140.0, - "y": 2300.0 - } - ] - }, - { - "pin1": { - "compId": 8, - "pinName": "QB4" - }, - "pin2": { - "compId": 10, - "pinName": "D4" - }, - "path": [ - { - "x": 135.0, - "y": 2295.0 - }, - { - "x": 135.0, - "y": 2310.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "Cn" - }, - "pin2": { - "compId": 5, - "pinName": "Cn" - }, - "path": [ - { - "x": 100.0, - "y": 1050.0 - }, - { - "x": 100.0, - "y": 2175.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "D1" - }, - "pin2": { - "compId": 5, - "pinName": "D1" - }, - "path": [ - { - "x": 180.0, - "y": 1150.0 - }, - { - "x": 180.0, - "y": 2185.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "D2" - }, - "pin2": { - "compId": 5, - "pinName": "D2" - }, - "path": [ - { - "x": 175.0, - "y": 1250.0 - }, - { - "x": 175.0, - "y": 2195.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "D3" - }, - "pin2": { - "compId": 5, - "pinName": "D3" - }, - "path": [ - { - "x": 170.0, - "y": 1350.0 - }, - { - "x": 170.0, - "y": 2205.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "D4" - }, - "pin2": { - "compId": 5, - "pinName": "D4" - }, - "path": [ - { - "x": 165.0, - "y": 1450.0 - }, - { - "x": 165.0, - "y": 2215.0 - } - ] - }, - { - "pin1": { - "compId": 9, - "pinName": "Q1" - }, - "pin2": { - "compId": 21, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 9, - "pinName": "Q2" - }, - "pin2": { - "compId": 22, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 9, - "pinName": "Q3" - }, - "pin2": { - "compId": 23, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 9, - "pinName": "Q4" - }, - "pin2": { - "compId": 24, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 21, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "I0_1" - }, - "path": [ - { - "x": 220.0, - "y": 150.0 - } - ] - }, - { - "pin1": { - "compId": 22, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "I0_2" - }, - "path": [ - { - "x": 225.0, - "y": 160.0 - } - ] - }, - { - "pin1": { - "compId": 23, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "I0_3" - }, - "path": [ - { - "x": 230.0, - "y": 170.0 - } - ] - }, - { - "pin1": { - "compId": 24, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "I0_4" - }, - "path": [ - { - "x": 235.0, - "y": 180.0 - } - ] - }, - { - "pin1": { - "compId": 21, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "A1" - }, - "path": [] - }, - { - "pin1": { - "compId": 22, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "A2" - }, - "path": [] - }, - { - "pin1": { - "compId": 23, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "A3" - }, - "path": [] - }, - { - "pin1": { - "compId": 24, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "A4" - }, - "path": [] - }, - { - "pin1": { - "compId": 10, - "pinName": "Q1" - }, - "pin2": { - "compId": 5, - "pinName": "B1" - }, - "path": [ - { - "x": 200.0, - "y": 2280.0 - }, - { - "x": 200.0, - "y": 2265.0 - } - ] - }, - { - "pin1": { - "compId": 10, - "pinName": "Q2" - }, - "pin2": { - "compId": 5, - "pinName": "B2" - }, - "path": [ - { - "x": 205.0, - "y": 2290.0 - }, - { - "x": 205.0, - "y": 2275.0 - } - ] - }, - { - "pin1": { - "compId": 10, - "pinName": "Q3" - }, - "pin2": { - "compId": 5, - "pinName": "B3" - }, - "path": [ - { - "x": 210.0, - "y": 2300.0 - }, - { - "x": 210.0, - "y": 2285.0 - } - ] - }, - { - "pin1": { - "compId": 10, - "pinName": "Q4" - }, - "pin2": { - "compId": 5, - "pinName": "B4" - }, - "path": [ - { - "x": 215.0, - "y": 2310.0 - }, - { - "x": 215.0, - "y": 2295.0 - } - ] - }, - { - "pin1": { - "compId": 13, - "pinName": "Q1" - }, - "pin2": { - "compId": 25, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 13, - "pinName": "Q2" - }, - "pin2": { - "compId": 26, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 13, - "pinName": "Q3" - }, - "pin2": { - "compId": 27, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 13, - "pinName": "Q4" - }, - "pin2": { - "compId": 28, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 25, - "pinName": "" - }, - "pin2": { - "compId": 29, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 29, - "pinName": "" - }, - "pin2": { - "compId": 0, - "pinName": "OQn" - }, - "path": [ - { - "x": 335.0, - "y": 2495.0 - }, - { - "x": 335.0, - "y": 1050.0 - } - ] - }, - { - "pin1": { - "compId": 28, - "pinName": "" - }, - "pin2": { - "compId": 30, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 30, - "pinName": "" - }, - "pin2": { - "compId": 0, - "pinName": "OQn+3" - }, - "path": [ - { - "x": 340.0, - "y": 2525.0 - }, - { - "x": 340.0, - "y": 1150.0 - } - ] - }, - { - "pin1": { - "compId": 26, - "pinName": "" - }, - "pin2": { - "compId": 31, - "pinName": "" - }, - "path": [ - { - "x": 135.0, - "y": 2670.0 - }, - { - "x": 30.0, - "y": 2670.0 - }, - { - "x": 30.0, - "y": 2635.0 - }, - { - "x": 35.0, - "y": 2635.0 - } - ] - }, - { - "pin1": { - "compId": 27, - "pinName": "" - }, - "pin2": { - "compId": 32, - "pinName": "" - }, - "path": [ - { - "x": 140.0, - "y": 2675.0 - }, - { - "x": 35.0, - "y": 2675.0 - }, - { - "x": 35.0, - "y": 2640.0 - }, - { - "x": 40.0, - "y": 2640.0 - } - ] - }, - { - "pin1": { - "compId": 31, - "pinName": "" - }, - "pin2": { - "compId": 12, - "pinName": "C1" - }, - "path": [] - }, - { - "pin1": { - "compId": 32, - "pinName": "" - }, - "pin2": { - "compId": 12, - "pinName": "C2" - }, - "path": [] - }, - { - "pin1": { - "compId": 28, - "pinName": "" - }, - "pin2": { - "compId": 12, - "pinName": "C3" - }, - "path": [ - { - "x": 145.0, - "y": 2680.0 - }, - { - "x": 40.0, - "y": 2680.0 - }, - { - "x": 40.0, - "y": 2645.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "IQn+3" - }, - "pin2": { - "compId": 12, - "pinName": "C4" - }, - "path": [ - { - "x": 5.0, - "y": 2650.0 - }, - { - "x": 5.0, - "y": 2655.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "IQn" - }, - "pin2": { - "compId": 12, - "pinName": "A1" - }, - "path": [ - { - "x": 5.0, - "y": 2550.0 - }, - { - "x": 5.0, - "y": 2545.0 - } - ] - }, - { - "pin1": { - "compId": 25, - "pinName": "" - }, - "pin2": { - "compId": 12, - "pinName": "A2" - }, - "path": [ - { - "x": 130.0, - "y": 2665.0 - }, - { - "x": 25.0, - "y": 2665.0 - }, - { - "x": 25.0, - "y": 2630.0 - }, - { - "x": 30.0, - "y": 2630.0 - }, - { - "x": 30.0, - "y": 2555.0 - } - ] - }, - { - "pin1": { - "compId": 29, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "Q1" - }, - "path": [ - { - "x": 220.0, - "y": 2305.0 - } - ] - }, - { - "pin1": { - "compId": 26, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "Q2" - }, - "path": [ - { - "x": 225.0, - "y": 2505.0 - }, - { - "x": 225.0, - "y": 2315.0 - } - ] - }, - { - "pin1": { - "compId": 27, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "Q3" - }, - "path": [ - { - "x": 230.0, - "y": 2515.0 - }, - { - "x": 230.0, - "y": 2325.0 - } - ] - }, - { - "pin1": { - "compId": 30, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "Q4" - }, - "path": [ - { - "x": 235.0, - "y": 2335.0 - } - ] - }, - { - "pin1": { - "compId": 31, - "pinName": "" - }, - "pin2": { - "compId": 12, - "pinName": "A3" - }, - "path": [ - { - "x": 35.0, - "y": 2565.0 - } - ] - }, - { - "pin1": { - "compId": 32, - "pinName": "" - }, - "pin2": { - "compId": 12, - "pinName": "A4" - }, - "path": [ - { - "x": 40.0, - "y": 2575.0 - } - ] - }, - { - "pin1": { - "compId": 12, - "pinName": "Y1" - }, - "pin2": { - "compId": 13, - "pinName": "D1" - }, - "path": [] - }, - { - "pin1": { - "compId": 12, - "pinName": "Y2" - }, - "pin2": { - "compId": 13, - "pinName": "D2" - }, - "path": [] - }, - { - "pin1": { - "compId": 12, - "pinName": "Y3" - }, - "pin2": { - "compId": 13, - "pinName": "D3" - }, - "path": [] - }, - { - "pin1": { - "compId": 12, - "pinName": "Y4" - }, - "pin2": { - "compId": 13, - "pinName": "D4" - }, - "path": [] - }, - { - "pin1": { - "compId": 5, - "pinName": "Cn+4" - }, - "pin2": { - "compId": 0, - "pinName": "Cn+4" - }, - "path": [ - { - "x": 315.0, - "y": 2155.0 - }, - { - "x": 315.0, - "y": 550.0 - } - ] - }, - { - "pin1": { - "compId": 5, - "pinName": "OVR" - }, - "pin2": { - "compId": 0, - "pinName": "OVR" - }, - "path": [ - { - "x": 320.0, - "y": 2165.0 - }, - { - "x": 320.0, - "y": 650.0 - } - ] - }, - { - "pin1": { - "compId": 5, - "pinName": "F1" - }, - "pin2": { - "compId": 33, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 5, - "pinName": "F4" - }, - "pin2": { - "compId": 34, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 33, - "pinName": "" - }, - "pin2": { - "compId": 0, - "pinName": "ORAMn" - }, - "path": [ - { - "x": 325.0, - "y": 2115.0 - }, - { - "x": 325.0, - "y": 850.0 - } - ] - }, - { - "pin1": { - "compId": 34, - "pinName": "" - }, - "pin2": { - "compId": 35, - "pinName": "" - }, - "path": [ - { - "x": 330.0, - "y": 2145.0 - } - ] - }, - { - "pin1": { - "compId": 35, - "pinName": "" - }, - "pin2": { - "compId": 0, - "pinName": "ORAMn+3" - }, - "path": [] - }, - { - "pin1": { - "compId": 35, - "pinName": "" - }, - "pin2": { - "compId": 0, - "pinName": "F3" - }, - "path": [ - { - "x": 330.0, - "y": 750.0 - } - ] - }, - { - "pin1": { - "compId": 33, - "pinName": "" - }, - "pin2": { - "compId": 36, - "pinName": "" - }, - "path": [ - { - "x": 280.0, - "y": 2090.0 - } - ] - }, - { - "pin1": { - "compId": 5, - "pinName": "F2" - }, - "pin2": { - "compId": 37, - "pinName": "" - }, - "path": [ - { - "x": 285.0, - "y": 2125.0 - }, - { - "x": 285.0, - "y": 2095.0 - } - ] - }, - { - "pin1": { - "compId": 5, - "pinName": "F3" - }, - "pin2": { - "compId": 38, - "pinName": "" - }, - "path": [ - { - "x": 290.0, - "y": 2135.0 - }, - { - "x": 290.0, - "y": 2100.0 - } - ] - }, - { - "pin1": { - "compId": 34, - "pinName": "" - }, - "pin2": { - "compId": 39, - "pinName": "" - }, - "path": [ - { - "x": 295.0, - "y": 2105.0 - } - ] - }, - { - "pin1": { - "compId": 36, - "pinName": "" - }, - "pin2": { - "compId": 40, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 37, - "pinName": "" - }, - "pin2": { - "compId": 41, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 38, - "pinName": "" - }, - "pin2": { - "compId": 42, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 39, - "pinName": "" - }, - "pin2": { - "compId": 43, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 40, - "pinName": "" - }, - "pin2": { - "compId": 6, - "pinName": "A1" - }, - "path": [] - }, - { - "pin1": { - "compId": 41, - "pinName": "" - }, - "pin2": { - "compId": 6, - "pinName": "A2" - }, - "path": [] - }, - { - "pin1": { - "compId": 42, - "pinName": "" - }, - "pin2": { - "compId": 6, - "pinName": "A3" - }, - "path": [] - }, - { - "pin1": { - "compId": 43, - "pinName": "" - }, - "pin2": { - "compId": 6, - "pinName": "A4" - }, - "path": [] - }, - { - "pin1": { - "compId": 40, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "I1_1" - }, - "path": [ - { - "x": 255.0, - "y": 190.0 - } - ] - }, - { - "pin1": { - "compId": 41, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "I1_2" - }, - "path": [ - { - "x": 260.0, - "y": 200.0 - } - ] - }, - { - "pin1": { - "compId": 42, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "I1_3" - }, - "path": [ - { - "x": 265.0, - "y": 210.0 - } - ] - }, - { - "pin1": { - "compId": 43, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "I1_4" - }, - "path": [ - { - "x": 270.0, - "y": 220.0 - } - ] - }, - { - "pin1": { - "compId": 36, - "pinName": "" - }, - "pin2": { - "compId": 44, - "pinName": "" - }, - "path": [ - { - "x": 10.0, - "y": 2090.0 - } - ] - }, - { - "pin1": { - "compId": 37, - "pinName": "" - }, - "pin2": { - "compId": 45, - "pinName": "" - }, - "path": [ - { - "x": 15.0, - "y": 2095.0 - } - ] - }, - { - "pin1": { - "compId": 38, - "pinName": "" - }, - "pin2": { - "compId": 46, - "pinName": "" - }, - "path": [ - { - "x": 20.0, - "y": 2100.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "IRAMn" - }, - "pin2": { - "compId": 11, - "pinName": "A1" - }, - "path": [ - { - "x": 5.0, - "y": 2350.0 - }, - { - "x": 5.0, - "y": 2345.0 - } - ] - }, - { - "pin1": { - "compId": 44, - "pinName": "" - }, - "pin2": { - "compId": 11, - "pinName": "A2" - }, - "path": [] - }, - { - "pin1": { - "compId": 45, - "pinName": "" - }, - "pin2": { - "compId": 11, - "pinName": "A3" - }, - "path": [] - }, - { - "pin1": { - "compId": 46, - "pinName": "" - }, - "pin2": { - "compId": 11, - "pinName": "A4" - }, - "path": [] - }, - { - "pin1": { - "compId": 45, - "pinName": "" - }, - "pin2": { - "compId": 47, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 46, - "pinName": "" - }, - "pin2": { - "compId": 48, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 39, - "pinName": "" - }, - "pin2": { - "compId": 49, - "pinName": "" - }, - "path": [ - { - "x": 25.0, - "y": 2105.0 - } - ] - }, - { - "pin1": { - "compId": 44, - "pinName": "" - }, - "pin2": { - "compId": 50, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 50, - "pinName": "" - }, - "pin2": { - "compId": 11, - "pinName": "B1" - }, - "path": [] - }, - { - "pin1": { - "compId": 47, - "pinName": "" - }, - "pin2": { - "compId": 11, - "pinName": "B2" - }, - "path": [] - }, - { - "pin1": { - "compId": 48, - "pinName": "" - }, - "pin2": { - "compId": 11, - "pinName": "B3" - }, - "path": [] - }, - { - "pin1": { - "compId": 49, - "pinName": "" - }, - "pin2": { - "compId": 11, - "pinName": "B4" - }, - "path": [] - }, - { - "pin1": { - "compId": 47, - "pinName": "" - }, - "pin2": { - "compId": 51, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 48, - "pinName": "" - }, - "pin2": { - "compId": 52, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 49, - "pinName": "" - }, - "pin2": { - "compId": 53, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 51, - "pinName": "" - }, - "pin2": { - "compId": 11, - "pinName": "C1" - }, - "path": [] - }, - { - "pin1": { - "compId": 52, - "pinName": "" - }, - "pin2": { - "compId": 11, - "pinName": "C2" - }, - "path": [] - }, - { - "pin1": { - "compId": 53, - "pinName": "" - }, - "pin2": { - "compId": 11, - "pinName": "C3" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "IRAMn+3" - }, - "pin2": { - "compId": 11, - "pinName": "C4" - }, - "path": [ - { - "x": 5.0, - "y": 2450.0 - }, - { - "x": 5.0, - "y": 2455.0 - } - ] - }, - { - "pin1": { - "compId": 50, - "pinName": "" - }, - "pin2": { - "compId": 12, - "pinName": "B1" - }, - "path": [ - { - "x": 10.0, - "y": 2585.0 - } - ] - }, - { - "pin1": { - "compId": 51, - "pinName": "" - }, - "pin2": { - "compId": 12, - "pinName": "B2" - }, - "path": [ - { - "x": 15.0, - "y": 2595.0 - } - ] - }, - { - "pin1": { - "compId": 52, - "pinName": "" - }, - "pin2": { - "compId": 12, - "pinName": "B3" - }, - "path": [ - { - "x": 20.0, - "y": 2605.0 - } - ] - }, - { - "pin1": { - "compId": 53, - "pinName": "" - }, - "pin2": { - "compId": 12, - "pinName": "B4" - }, - "path": [ - { - "x": 25.0, - "y": 2615.0 - } - ] - }, - { - "pin1": { - "compId": 11, - "pinName": "Y1" - }, - "pin2": { - "compId": 8, - "pinName": "D1" - }, - "path": [] - }, - { - "pin1": { - "compId": 11, - "pinName": "Y2" - }, - "pin2": { - "compId": 8, - "pinName": "D2" - }, - "path": [] - }, - { - "pin1": { - "compId": 11, - "pinName": "Y3" - }, - "pin2": { - "compId": 8, - "pinName": "D3" - }, - "path": [] - }, - { - "pin1": { - "compId": 11, - "pinName": "Y4" - }, - "pin2": { - "compId": 8, - "pinName": "D4" - }, - "path": [] - }, - { - "pin1": { - "compId": 1, - "pinName": "RAMWE" - }, - "pin2": { - "compId": 3, - "pinName": "A" - }, - "path": [] - }, - { - "pin1": { - "compId": 4, - "pinName": "Y" - }, - "pin2": { - "compId": 3, - "pinName": "B" - } - }, - { - "pin1": { - "compId": 3, - "pinName": "Y" - }, - "pin2": { - "compId": 8, - "pinName": "WE" - }, - "path": [ - { - "x": 230.0, - "y": 70.0 - }, - { - "x": 230.0, - "y": 105.0 - }, - { - "x": 90.0, - "y": 105.0 - }, - { - "x": 90.0, - "y": 2305.0 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "QWE" - }, - "pin2": { - "compId": 13, - "pinName": "WE" - }, - "path": [ - { - "x": 85.0, - "y": 100.0 - }, - { - "x": 85.0, - "y": 2505.0 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "YF" - }, - "pin2": { - "compId": 2, - "pinName": "S0" - }, - "path": [ - { - "x": 70.0, - "y": 80.0 - }, - { - "x": 70.0, - "y": 140.0 - } - ] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y1" - }, - "pin2": { - "compId": 0, - "pinName": "Y1" - }, - "path": [ - { - "x": 335.0, - "y": 140.0 - }, - { - "x": 335.0, - "y": 50.0 - } - ] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y2" - }, - "pin2": { - "compId": 0, - "pinName": "Y2" - }, - "path": [] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y3" - }, - "pin2": { - "compId": 0, - "pinName": "Y3" - }, - "path": [ - { - "x": 335.0, - "y": 160.0 - }, - { - "x": 335.0, - "y": 250.0 - } - ] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y4" - }, - "pin2": { - "compId": 0, - "pinName": "Y4" - }, - "path": [ - { - "x": 325.0, - "y": 170.0 - }, - { - "x": 325.0, - "y": 350.0 - } - ] - }, - { - "pin1": { - "compId": 6, - "pinName": "Y" - }, - "pin2": { - "compId": 54, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 54, - "pinName": "" - }, - "pin2": { - "compId": 7, - "pinName": "A" - }, - "path": [ - { - "x": 315.0, - "y": 445.0 - } - ] - }, - { - "pin1": { - "compId": 54, - "pinName": "" - }, - "pin2": { - "compId": 7, - "pinName": "B" - }, - "path": [ - { - "x": 315.0, - "y": 455.0 - } - ] - }, - { - "pin1": { - "compId": 7, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "F\u003d0" - }, - "path": [] - } - ] - }, - "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", - "symbolRendererParams": { - "centerText": "GUIAm2901", - "horizontalComponentCenter": 17.5, - "centerTextHeight": 5.0, - "pinLabelHeight": 3.5, - "pinLabelMargin": 0.5 - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.editor/components/am2901/GUIAm2901ALUFuncDecode.json b/net.mograsim.logic.ui.editor/components/am2901/GUIAm2901ALUFuncDecode.json deleted file mode 100644 index e6eac9e8..00000000 --- a/net.mograsim.logic.ui.editor/components/am2901/GUIAm2901ALUFuncDecode.json +++ /dev/null @@ -1,663 +0,0 @@ -mograsim version: 0.1.3 -{ - "width": 35.0, - "height": 60.0, - "interfacePins": [ - { - "location": { - "x": 35.0, - "y": 35.0 - }, - "name": "SBE", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 45.0 - }, - "name": "FN", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 25.0 - }, - "name": "I3", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 15.0 - }, - "name": "I4", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 25.0 - }, - "name": "SN", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 5.0 - }, - "name": "I5", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 15.0 - }, - "name": "L", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 55.0 - }, - "name": "RN", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 5.0 - }, - "name": "CinE", - "logicWidth": 1 - } - ], - "submodel": { - "innerScale": 0.25, - "subComps": [ - { - "pos": { - "x": 15.0, - "y": 10.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 15.0, - "y": 50.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 55.0, - "y": 10.0 - }, - "id": "GUInand3" - }, - { - "pos": { - "x": 55.0, - "y": 45.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 55.0, - "y": 70.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 100.0, - "y": 50.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 100.0, - "y": 135.0 - }, - "id": "GUIand" - }, - { - "pos": { - "x": 4.0, - "y": 19.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 4.0, - "y": 24.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 4.0, - "y": 44.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 9.0, - "y": 59.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 9.0, - "y": 54.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 9.0, - "y": 64.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 9.0, - "y": 84.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 49.0, - "y": 99.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 49.0, - "y": 74.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 39.0, - "y": 19.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 39.0, - "y": 34.0 - }, - "id": "WireCrossPoint", - "params": 1 - } - ], - "innerWires": [ - { - "pin1": { - "compId": 0, - "pinName": "I5" - }, - "pin2": { - "compId": 8, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 8, - "pinName": "" - }, - "pin2": { - "compId": 1, - "pinName": "A" - }, - "path": [ - { - "x": 5.0, - "y": 15.0 - } - ] - }, - { - "pin1": { - "compId": 8, - "pinName": "" - }, - "pin2": { - "compId": 9, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 9, - "pinName": "" - }, - "pin2": { - "compId": 1, - "pinName": "B" - }, - "path": [] - }, - { - "pin1": { - "compId": 9, - "pinName": "" - }, - "pin2": { - "compId": 10, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 10, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "A" - }, - "path": [ - { - "x": 45.0, - "y": 45.0 - }, - { - "x": 45.0, - "y": 50.0 - } - ] - }, - { - "pin1": { - "compId": 10, - "pinName": "" - }, - "pin2": { - "compId": 0, - "pinName": "FN" - }, - "path": [ - { - "x": 5.0, - "y": 180.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "I4" - }, - "pin2": { - "compId": 11, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 11, - "pinName": "" - }, - "pin2": { - "compId": 12, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 12, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "A" - }, - "path": [ - { - "x": 10.0, - "y": 40.0 - }, - { - "x": 45.0, - "y": 40.0 - }, - { - "x": 45.0, - "y": 15.0 - } - ] - }, - { - "pin1": { - "compId": 12, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "A" - }, - "path": [] - }, - { - "pin1": { - "compId": 11, - "pinName": "" - }, - "pin2": { - "compId": 13, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 13, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "B" - }, - "path": [] - }, - { - "pin1": { - "compId": 13, - "pinName": "" - }, - "pin2": { - "compId": 14, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 14, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "B" - }, - "path": [] - }, - { - "pin1": { - "compId": 14, - "pinName": "" - }, - "pin2": { - "compId": 0, - "pinName": "SN" - }, - "path": [ - { - "x": 10.0, - "y": 105.0 - }, - { - "x": 135.0, - "y": 105.0 - }, - { - "x": 135.0, - "y": 100.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "I3" - }, - "pin2": { - "compId": 15, - "pinName": "" - }, - "path": [ - { - "x": 50.0, - "y": 100.0 - } - ] - }, - { - "pin1": { - "compId": 15, - "pinName": "" - }, - "pin2": { - "compId": 0, - "pinName": "RN" - }, - "path": [ - { - "x": 50.0, - "y": 220.0 - } - ] - }, - { - "pin1": { - "compId": 15, - "pinName": "" - }, - "pin2": { - "compId": 16, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 16, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "B" - }, - "path": [ - { - "x": 50.0, - "y": 25.0 - } - ] - }, - { - "pin1": { - "compId": 16, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "A" - }, - "path": [] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y" - }, - "pin2": { - "compId": 17, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 17, - "pinName": "" - }, - "pin2": { - "compId": 0, - "pinName": "CinE" - }, - "path": [ - { - "x": 40.0, - "y": 5.0 - }, - { - "x": 115.0, - "y": 5.0 - }, - { - "x": 115.0, - "y": 20.0 - } - ] - }, - { - "pin1": { - "compId": 17, - "pinName": "" - }, - "pin2": { - "compId": 18, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 18, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "C" - }, - "path": [] - }, - { - "pin1": { - "compId": 18, - "pinName": "" - }, - "pin2": { - "compId": 7, - "pinName": "B" - }, - "path": [ - { - "x": 40.0, - "y": 150.0 - } - ] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y" - }, - "pin2": { - "compId": 4, - "pinName": "B" - }, - "path": [] - }, - { - "pin1": { - "compId": 3, - "pinName": "Y" - }, - "pin2": { - "compId": 6, - "pinName": "A" - } - }, - { - "pin1": { - "compId": 4, - "pinName": "Y" - }, - "pin2": { - "compId": 6, - "pinName": "B" - } - }, - { - "pin1": { - "compId": 5, - "pinName": "Y" - }, - "pin2": { - "compId": 7, - "pinName": "A" - } - }, - { - "pin1": { - "compId": 6, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "L" - }, - "path": [] - }, - { - "pin1": { - "compId": 7, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "SBE" - }, - "path": [] - } - ] - }, - "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", - "symbolRendererParams": { - "centerText": "GUIAm2901ALUFuncDecode", - "horizontalComponentCenter": 17.5, - "centerTextHeight": 5.0, - "pinLabelHeight": 3.5, - "pinLabelMargin": 0.5 - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.editor/components/am2901/GUIAm2901ALUInclDecode.json b/net.mograsim.logic.ui.editor/components/am2901/GUIAm2901ALUInclDecode.json deleted file mode 100644 index c69ffdf0..00000000 --- a/net.mograsim.logic.ui.editor/components/am2901/GUIAm2901ALUInclDecode.json +++ /dev/null @@ -1,1427 +0,0 @@ -mograsim version: 0.1.3 -{ - "width": 35.0, - "height": 120.0, - "interfacePins": [ - { - "location": { - "x": 0.0, - "y": 55.0 - }, - "name": "R2", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 105.0 - }, - "name": "S3", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 65.0 - }, - "name": "R3", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 115.0 - }, - "name": "S4", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 75.0 - }, - "name": "R4", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 25.0 - }, - "name": "I3", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 55.0 - }, - "name": "OVR", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 15.0 - }, - "name": "I4", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 35.0 - }, - "name": "Cn", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 5.0 - }, - "name": "F1", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 5.0 - }, - "name": "I5", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 15.0 - }, - "name": "F2", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 25.0 - }, - "name": "F3", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 35.0 - }, - "name": "F4", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 45.0 - }, - "name": "Cn+4", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 85.0 - }, - "name": "S1", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 45.0 - }, - "name": "R1", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 95.0 - }, - "name": "S2", - "logicWidth": 1 - } - ], - "submodel": { - "innerScale": 0.25, - "subComps": [ - { - "pos": { - "x": 20.0, - "y": 2.5 - }, - "id": "GUIAm2901ALUFuncDecode" - }, - { - "pos": { - "x": 45.0, - "y": 80.0 - }, - "id": "GUIAm2901ALUOneBit" - }, - { - "pos": { - "x": 45.0, - "y": 180.0 - }, - "id": "GUIAm2901ALUOneBit" - }, - { - "pos": { - "x": 45.0, - "y": 280.0 - }, - "id": "GUIAm2901ALUOneBit" - }, - { - "pos": { - "x": 45.0, - "y": 380.0 - }, - "id": "GUIAm2901ALUOneBit" - }, - { - "pos": { - "x": 95.0, - "y": 400.0 - }, - "id": "GUIxor" - }, - { - "pos": { - "x": 24.0, - "y": 94.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 24.0, - "y": 194.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 24.0, - "y": 294.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 26.5, - "y": 104.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 26.5, - "y": 204.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 26.5, - "y": 304.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 29.0, - "y": 124.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 29.0, - "y": 224.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 29.0, - "y": 324.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 31.5, - "y": 144.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 31.5, - "y": 244.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 31.5, - "y": 344.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 34.0, - "y": 154.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 34.0, - "y": 254.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 34.0, - "y": 354.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 36.5, - "y": 164.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 36.5, - "y": 264.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 36.5, - "y": 364.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 84.0, - "y": 374.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 84.0, - "y": 384.0 - }, - "id": "WireCrossPoint", - "params": 1 - } - ], - "innerWires": [ - { - "pin1": { - "compId": 0, - "pinName": "I5" - }, - "pin2": { - "compId": 1, - "pinName": "I5" - }, - "path": [ - { - "x": 5.0, - "y": 20.0 - }, - { - "x": 5.0, - "y": 7.5 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "I4" - }, - "pin2": { - "compId": 1, - "pinName": "I4" - }, - "path": [ - { - "x": 10.0, - "y": 60.0 - }, - { - "x": 10.0, - "y": 17.5 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "I3" - }, - "pin2": { - "compId": 1, - "pinName": "I3" - }, - "path": [ - { - "x": 15.0, - "y": 100.0 - }, - { - "x": 15.0, - "y": 27.5 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "SBE" - }, - "pin2": { - "compId": 7, - "pinName": "" - }, - "path": [ - { - "x": 62.5, - "y": 37.5 - }, - { - "x": 62.5, - "y": 70.0 - }, - { - "x": 25.0, - "y": 70.0 - } - ] - }, - { - "pin1": { - "compId": 7, - "pinName": "" - }, - "pin2": { - "compId": 8, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 8, - "pinName": "" - }, - "pin2": { - "compId": 9, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 7, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "CoutE" - }, - "path": [] - }, - { - "pin1": { - "compId": 8, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "CoutE" - }, - "path": [] - }, - { - "pin1": { - "compId": 9, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "CoutE" - }, - "path": [] - }, - { - "pin1": { - "compId": 9, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "CoutE" - }, - "path": [ - { - "x": 25.0, - "y": 395.0 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "CinE" - }, - "pin2": { - "compId": 10, - "pinName": "" - }, - "path": [ - { - "x": 70.0, - "y": 7.5 - }, - { - "x": 70.0, - "y": 77.5 - }, - { - "x": 27.5, - "y": 77.5 - } - ] - }, - { - "pin1": { - "compId": 10, - "pinName": "" - }, - "pin2": { - "compId": 11, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 11, - "pinName": "" - }, - "pin2": { - "compId": 12, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 10, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "CinE" - }, - "path": [] - }, - { - "pin1": { - "compId": 11, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "CinE" - }, - "path": [] - }, - { - "pin1": { - "compId": 12, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "CinE" - }, - "path": [] - }, - { - "pin1": { - "compId": 12, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "CinE" - }, - "path": [ - { - "x": 27.5, - "y": 405.0 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "RN" - }, - "pin2": { - "compId": 13, - "pinName": "" - }, - "path": [ - { - "x": 57.5, - "y": 57.5 - }, - { - "x": 57.5, - "y": 65.0 - }, - { - "x": 30.0, - "y": 65.0 - } - ] - }, - { - "pin1": { - "compId": 13, - "pinName": "" - }, - "pin2": { - "compId": 14, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 14, - "pinName": "" - }, - "pin2": { - "compId": 15, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 13, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "RN" - }, - "path": [] - }, - { - "pin1": { - "compId": 14, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "RN" - }, - "path": [] - }, - { - "pin1": { - "compId": 15, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "RN" - }, - "path": [] - }, - { - "pin1": { - "compId": 15, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "RN" - }, - "path": [ - { - "x": 30.0, - "y": 425.0 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "SN" - }, - "pin2": { - "compId": 16, - "pinName": "" - }, - "path": [ - { - "x": 65.0, - "y": 27.5 - }, - { - "x": 65.0, - "y": 72.5 - }, - { - "x": 32.5, - "y": 72.5 - } - ] - }, - { - "pin1": { - "compId": 16, - "pinName": "" - }, - "pin2": { - "compId": 17, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 17, - "pinName": "" - }, - "pin2": { - "compId": 18, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 16, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "SN" - }, - "path": [] - }, - { - "pin1": { - "compId": 17, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "SN" - }, - "path": [] - }, - { - "pin1": { - "compId": 18, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "SN" - }, - "path": [] - }, - { - "pin1": { - "compId": 18, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "SN" - }, - "path": [ - { - "x": 32.5, - "y": 445.0 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "FN" - }, - "pin2": { - "compId": 19, - "pinName": "" - }, - "path": [ - { - "x": 60.0, - "y": 47.5 - }, - { - "x": 60.0, - "y": 67.5 - }, - { - "x": 35.0, - "y": 67.5 - } - ] - }, - { - "pin1": { - "compId": 19, - "pinName": "" - }, - "pin2": { - "compId": 20, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 20, - "pinName": "" - }, - "pin2": { - "compId": 21, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 19, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "FN" - }, - "path": [] - }, - { - "pin1": { - "compId": 20, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "FN" - }, - "path": [] - }, - { - "pin1": { - "compId": 21, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "FN" - }, - "path": [] - }, - { - "pin1": { - "compId": 21, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "FN" - }, - "path": [ - { - "x": 35.0, - "y": 455.0 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "L" - }, - "pin2": { - "compId": 22, - "pinName": "" - }, - "path": [ - { - "x": 67.5, - "y": 17.5 - }, - { - "x": 67.5, - "y": 75.0 - }, - { - "x": 37.5, - "y": 75.0 - } - ] - }, - { - "pin1": { - "compId": 22, - "pinName": "" - }, - "pin2": { - "compId": 23, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 23, - "pinName": "" - }, - "pin2": { - "compId": 24, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 22, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "L" - }, - "path": [] - }, - { - "pin1": { - "compId": 23, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "L" - }, - "path": [] - }, - { - "pin1": { - "compId": 24, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "L" - }, - "path": [] - }, - { - "pin1": { - "compId": 24, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "L" - }, - "path": [ - { - "x": 37.5, - "y": 465.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "R1" - }, - "pin2": { - "compId": 2, - "pinName": "R" - }, - "path": [ - { - "x": 10.0, - "y": 180.0 - }, - { - "x": 10.0, - "y": 115.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "R2" - }, - "pin2": { - "compId": 3, - "pinName": "R" - }, - "path": [ - { - "x": 10.0, - "y": 220.0 - }, - { - "x": 10.0, - "y": 215.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "R3" - }, - "pin2": { - "compId": 4, - "pinName": "R" - }, - "path": [ - { - "x": 10.0, - "y": 260.0 - }, - { - "x": 10.0, - "y": 315.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "R4" - }, - "pin2": { - "compId": 5, - "pinName": "R" - }, - "path": [ - { - "x": 20.0, - "y": 300.0 - }, - { - "x": 20.0, - "y": 415.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "S1" - }, - "pin2": { - "compId": 2, - "pinName": "S" - }, - "path": [ - { - "x": 15.0, - "y": 340.0 - }, - { - "x": 15.0, - "y": 135.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "S2" - }, - "pin2": { - "compId": 3, - "pinName": "S" - }, - "path": [ - { - "x": 5.0, - "y": 380.0 - }, - { - "x": 5.0, - "y": 235.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "S3" - }, - "pin2": { - "compId": 4, - "pinName": "S" - }, - "path": [ - { - "x": 10.0, - "y": 420.0 - }, - { - "x": 10.0, - "y": 335.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "S4" - }, - "pin2": { - "compId": 5, - "pinName": "S" - }, - "path": [ - { - "x": 10.0, - "y": 460.0 - }, - { - "x": 10.0, - "y": 435.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "Cn" - }, - "pin2": { - "compId": 2, - "pinName": "Cin" - }, - "path": [ - { - "x": 5.0, - "y": 140.0 - }, - { - "x": 5.0, - "y": 85.0 - } - ] - }, - { - "pin1": { - "compId": 2, - "pinName": "Cout" - }, - "pin2": { - "compId": 3, - "pinName": "Cin" - }, - "path": [ - { - "x": 85.0, - "y": 85.0 - }, - { - "x": 85.0, - "y": 175.0 - }, - { - "x": 40.0, - "y": 175.0 - }, - { - "x": 40.0, - "y": 185.0 - } - ] - }, - { - "pin1": { - "compId": 3, - "pinName": "Cout" - }, - "pin2": { - "compId": 4, - "pinName": "Cin" - }, - "path": [ - { - "x": 85.0, - "y": 185.0 - }, - { - "x": 85.0, - "y": 275.0 - }, - { - "x": 40.0, - "y": 275.0 - }, - { - "x": 40.0, - "y": 285.0 - } - ] - }, - { - "pin1": { - "compId": 4, - "pinName": "Cout" - }, - "pin2": { - "compId": 25, - "pinName": "" - }, - "path": [ - { - "x": 85.0, - "y": 285.0 - } - ] - }, - { - "pin1": { - "compId": 25, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "Cin" - }, - "path": [ - { - "x": 40.0, - "y": 375.0 - }, - { - "x": 40.0, - "y": 385.0 - } - ] - }, - { - "pin1": { - "compId": 5, - "pinName": "Cout" - }, - "pin2": { - "compId": 26, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 2, - "pinName": "F" - }, - "pin2": { - "compId": 0, - "pinName": "F1" - }, - "path": [ - { - "x": 90.0, - "y": 95.0 - }, - { - "x": 90.0, - "y": 20.0 - } - ] - }, - { - "pin1": { - "compId": 3, - "pinName": "F" - }, - "pin2": { - "compId": 0, - "pinName": "F2" - }, - "path": [ - { - "x": 95.0, - "y": 195.0 - }, - { - "x": 95.0, - "y": 60.0 - } - ] - }, - { - "pin1": { - "compId": 4, - "pinName": "F" - }, - "pin2": { - "compId": 0, - "pinName": "F3" - }, - "path": [ - { - "x": 100.0, - "y": 295.0 - }, - { - "x": 100.0, - "y": 100.0 - } - ] - }, - { - "pin1": { - "compId": 5, - "pinName": "F" - }, - "pin2": { - "compId": 0, - "pinName": "F4" - }, - "path": [ - { - "x": 105.0, - "y": 395.0 - }, - { - "x": 105.0, - "y": 140.0 - } - ] - }, - { - "pin1": { - "compId": 25, - "pinName": "" - }, - "pin2": { - "compId": 6, - "pinName": "A" - }, - "path": [ - { - "x": 90.0, - "y": 375.0 - }, - { - "x": 90.0, - "y": 405.0 - } - ] - }, - { - "pin1": { - "compId": 26, - "pinName": "" - }, - "pin2": { - "compId": 6, - "pinName": "B" - }, - "path": [ - { - "x": 85.0, - "y": 415.0 - } - ] - }, - { - "pin1": { - "compId": 26, - "pinName": "" - }, - "pin2": { - "compId": 0, - "pinName": "Cn+4" - }, - "path": [ - { - "x": 130.0, - "y": 385.0 - }, - { - "x": 130.0, - "y": 180.0 - } - ] - }, - { - "pin1": { - "compId": 6, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "OVR" - } - } - ] - }, - "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", - "symbolRendererParams": { - "centerText": "GUIAm2901ALUInclDecode", - "horizontalComponentCenter": 17.5, - "centerTextHeight": 5.0, - "pinLabelHeight": 3.5, - "pinLabelMargin": 0.5 - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.editor/components/am2901/GUIAm2901ALUInclSourceDecodeInclFunctionDecode.json b/net.mograsim.logic.ui.editor/components/am2901/GUIAm2901ALUInclSourceDecodeInclFunctionDecode.json deleted file mode 100644 index 0a6a275e..00000000 --- a/net.mograsim.logic.ui.editor/components/am2901/GUIAm2901ALUInclSourceDecodeInclFunctionDecode.json +++ /dev/null @@ -1,1305 +0,0 @@ -mograsim version: 0.1.3 -{ - "width": 35.0, - "height": 230.0, - "interfacePins": [ - { - "location": { - "x": 0.0, - "y": 195.0 - }, - "name": "Q1", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 205.0 - }, - "name": "Q2", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 215.0 - }, - "name": "Q3", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 225.0 - }, - "name": "Q4", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 55.0 - }, - "name": "I0", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 45.0 - }, - "name": "I1", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 35.0 - }, - "name": "I2", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 25.0 - }, - "name": "I3", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 55.0 - }, - "name": "OVR", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 15.0 - }, - "name": "I4", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 65.0 - }, - "name": "Cn", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 5.0 - }, - "name": "I5", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 115.0 - }, - "name": "A1", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 125.0 - }, - "name": "A2", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 135.0 - }, - "name": "A3", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 145.0 - }, - "name": "A4", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 45.0 - }, - "name": "Cn+4", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 5.0 - }, - "name": "F1", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 15.0 - }, - "name": "F2", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 75.0 - }, - "name": "D1", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 25.0 - }, - "name": "F3", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 85.0 - }, - "name": "D2", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 35.0 - }, - "name": "F4", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 95.0 - }, - "name": "D3", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 155.0 - }, - "name": "B1", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 105.0 - }, - "name": "D4", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 165.0 - }, - "name": "B2", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 175.0 - }, - "name": "B3", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 185.0 - }, - "name": "B4", - "logicWidth": 1 - } - ], - "submodel": { - "innerScale": 0.25, - "subComps": [ - { - "pos": { - "x": 15.0, - "y": 165.0 - }, - "id": "GUIAm2901SourceDecode" - }, - { - "pos": { - "x": 45.0, - "y": 365.0 - }, - "id": "GUIsel2_4" - }, - { - "pos": { - "x": 45.0, - "y": 575.0 - }, - "id": "GUIsel3_4" - }, - { - "pos": { - "x": 60.0, - "y": 15.0 - }, - "id": "GUIAm2901ALUInclDecode" - }, - { - "pos": { - "x": 9.0, - "y": 459.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 14.0, - "y": 499.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 19.0, - "y": 539.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 24.0, - "y": 579.0 - }, - "id": "WireCrossPoint", - "params": 1 - } - ], - "innerWires": [ - { - "pin1": { - "compId": 0, - "pinName": "I5" - }, - "pin2": { - "compId": 4, - "pinName": "I5" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "I4" - }, - "pin2": { - "compId": 4, - "pinName": "I4" - }, - "path": [ - { - "x": 5.0, - "y": 60.0 - }, - { - "x": 5.0, - "y": 30.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "I3" - }, - "pin2": { - "compId": 4, - "pinName": "I3" - }, - "path": [ - { - "x": 15.0, - "y": 100.0 - }, - { - "x": 15.0, - "y": 40.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "I2" - }, - "pin2": { - "compId": 1, - "pinName": "I2" - }, - "path": [ - { - "x": 5.0, - "y": 140.0 - }, - { - "x": 5.0, - "y": 170.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "I1" - }, - "pin2": { - "compId": 1, - "pinName": "I1" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "I0" - }, - "pin2": { - "compId": 1, - "pinName": "I0" - }, - "path": [ - { - "x": 5.0, - "y": 220.0 - }, - { - "x": 5.0, - "y": 190.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "Cn" - }, - "pin2": { - "compId": 4, - "pinName": "Cn" - }, - "path": [ - { - "x": 10.0, - "y": 260.0 - }, - { - "x": 10.0, - "y": 50.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "D1" - }, - "pin2": { - "compId": 2, - "pinName": "A1" - }, - "path": [ - { - "x": 15.0, - "y": 300.0 - }, - { - "x": 15.0, - "y": 390.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "D2" - }, - "pin2": { - "compId": 2, - "pinName": "A2" - }, - "path": [ - { - "x": 10.0, - "y": 340.0 - }, - { - "x": 10.0, - "y": 400.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "D3" - }, - "pin2": { - "compId": 2, - "pinName": "A3" - }, - "path": [ - { - "x": 5.0, - "y": 380.0 - }, - { - "x": 5.0, - "y": 410.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "D4" - }, - "pin2": { - "compId": 2, - "pinName": "A4" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "A1" - }, - "pin2": { - "compId": 5, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "A2" - }, - "pin2": { - "compId": 6, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "A3" - }, - "pin2": { - "compId": 7, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "A4" - }, - "pin2": { - "compId": 8, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 5, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "B1" - }, - "path": [ - { - "x": 10.0, - "y": 430.0 - } - ] - }, - { - "pin1": { - "compId": 6, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "B2" - }, - "path": [ - { - "x": 15.0, - "y": 440.0 - } - ] - }, - { - "pin1": { - "compId": 7, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "B3" - }, - "path": [ - { - "x": 20.0, - "y": 450.0 - } - ] - }, - { - "pin1": { - "compId": 8, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "B4" - }, - "path": [ - { - "x": 25.0, - "y": 460.0 - } - ] - }, - { - "pin1": { - "compId": 5, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "A1" - }, - "path": [ - { - "x": 10.0, - "y": 610.0 - } - ] - }, - { - "pin1": { - "compId": 6, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "A2" - }, - "path": [ - { - "x": 15.0, - "y": 620.0 - } - ] - }, - { - "pin1": { - "compId": 7, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "A3" - }, - "path": [ - { - "x": 20.0, - "y": 630.0 - } - ] - }, - { - "pin1": { - "compId": 8, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "A4" - }, - "path": [ - { - "x": 25.0, - "y": 640.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "B1" - }, - "pin2": { - "compId": 3, - "pinName": "B1" - }, - "path": [ - { - "x": 5.0, - "y": 620.0 - }, - { - "x": 5.0, - "y": 650.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "B2" - }, - "pin2": { - "compId": 3, - "pinName": "B2" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "B3" - }, - "pin2": { - "compId": 3, - "pinName": "B3" - }, - "path": [ - { - "x": 5.0, - "y": 700.0 - }, - { - "x": 5.0, - "y": 670.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "B4" - }, - "pin2": { - "compId": 3, - "pinName": "B4" - }, - "path": [ - { - "x": 10.0, - "y": 740.0 - }, - { - "x": 10.0, - "y": 680.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "Q1" - }, - "pin2": { - "compId": 3, - "pinName": "C1" - }, - "path": [ - { - "x": 15.0, - "y": 780.0 - }, - { - "x": 15.0, - "y": 690.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "Q2" - }, - "pin2": { - "compId": 3, - "pinName": "C2" - }, - "path": [ - { - "x": 20.0, - "y": 820.0 - }, - { - "x": 20.0, - "y": 700.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "Q3" - }, - "pin2": { - "compId": 3, - "pinName": "C3" - }, - "path": [ - { - "x": 25.0, - "y": 860.0 - }, - { - "x": 25.0, - "y": 710.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "Q4" - }, - "pin2": { - "compId": 3, - "pinName": "C4" - }, - "path": [ - { - "x": 30.0, - "y": 900.0 - }, - { - "x": 30.0, - "y": 720.0 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "SQ" - }, - "pin2": { - "compId": 3, - "pinName": "SC" - }, - "path": [ - { - "x": 75.0, - "y": 170.0 - }, - { - "x": 75.0, - "y": 240.0 - }, - { - "x": 30.0, - "y": 240.0 - }, - { - "x": 30.0, - "y": 600.0 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "RA" - }, - "pin2": { - "compId": 2, - "pinName": "SB" - }, - "path": [ - { - "x": 70.0, - "y": 180.0 - }, - { - "x": 70.0, - "y": 235.0 - }, - { - "x": 20.0, - "y": 235.0 - }, - { - "x": 20.0, - "y": 380.0 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "SB" - }, - "pin2": { - "compId": 3, - "pinName": "SB" - }, - "path": [ - { - "x": 65.0, - "y": 190.0 - }, - { - "x": 65.0, - "y": 230.0 - }, - { - "x": 35.0, - "y": 230.0 - }, - { - "x": 35.0, - "y": 590.0 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "SA" - }, - "pin2": { - "compId": 3, - "pinName": "SA" - }, - "path": [ - { - "x": 60.0, - "y": 200.0 - }, - { - "x": 60.0, - "y": 225.0 - }, - { - "x": 40.0, - "y": 225.0 - }, - { - "x": 40.0, - "y": 580.0 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "RD" - }, - "pin2": { - "compId": 2, - "pinName": "SA" - }, - "path": [ - { - "x": 55.0, - "y": 210.0 - }, - { - "x": 55.0, - "y": 220.0 - }, - { - "x": 25.0, - "y": 220.0 - }, - { - "x": 25.0, - "y": 370.0 - } - ] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y1" - }, - "pin2": { - "compId": 4, - "pinName": "R1" - }, - "path": [ - { - "x": 82.5, - "y": 370.0 - }, - { - "x": 82.5, - "y": 162.5 - }, - { - "x": 20.0, - "y": 162.5 - }, - { - "x": 20.0, - "y": 60.0 - } - ] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y2" - }, - "pin2": { - "compId": 4, - "pinName": "R2" - }, - "path": [ - { - "x": 85.0, - "y": 380.0 - }, - { - "x": 85.0, - "y": 160.0 - }, - { - "x": 22.5, - "y": 160.0 - }, - { - "x": 22.5, - "y": 70.0 - } - ] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y3" - }, - "pin2": { - "compId": 4, - "pinName": "R3" - }, - "path": [ - { - "x": 87.5, - "y": 390.0 - }, - { - "x": 87.5, - "y": 157.5 - }, - { - "x": 25.0, - "y": 157.5 - }, - { - "x": 25.0, - "y": 80.0 - } - ] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y4" - }, - "pin2": { - "compId": 4, - "pinName": "R4" - }, - "path": [ - { - "x": 90.0, - "y": 400.0 - }, - { - "x": 90.0, - "y": 155.0 - }, - { - "x": 27.5, - "y": 155.0 - }, - { - "x": 27.5, - "y": 90.0 - } - ] - }, - { - "pin1": { - "compId": 3, - "pinName": "Y1" - }, - "pin2": { - "compId": 4, - "pinName": "S1" - }, - "path": [ - { - "x": 92.5, - "y": 580.0 - }, - { - "x": 92.5, - "y": 152.5 - }, - { - "x": 30.0, - "y": 152.5 - }, - { - "x": 30.0, - "y": 100.0 - } - ] - }, - { - "pin1": { - "compId": 3, - "pinName": "Y2" - }, - "pin2": { - "compId": 4, - "pinName": "S2" - }, - "path": [ - { - "x": 95.0, - "y": 590.0 - }, - { - "x": 95.0, - "y": 150.0 - }, - { - "x": 32.5, - "y": 150.0 - }, - { - "x": 32.5, - "y": 110.0 - } - ] - }, - { - "pin1": { - "compId": 3, - "pinName": "Y3" - }, - "pin2": { - "compId": 4, - "pinName": "S3" - }, - "path": [ - { - "x": 97.5, - "y": 600.0 - }, - { - "x": 97.5, - "y": 147.5 - }, - { - "x": 35.0, - "y": 147.5 - }, - { - "x": 35.0, - "y": 120.0 - } - ] - }, - { - "pin1": { - "compId": 3, - "pinName": "Y4" - }, - "pin2": { - "compId": 4, - "pinName": "S4" - }, - "path": [ - { - "x": 100.0, - "y": 610.0 - }, - { - "x": 100.0, - "y": 145.0 - }, - { - "x": 37.5, - "y": 145.0 - }, - { - "x": 37.5, - "y": 130.0 - } - ] - }, - { - "pin1": { - "compId": 4, - "pinName": "F1" - }, - "pin2": { - "compId": 0, - "pinName": "F1" - }, - "path": [] - }, - { - "pin1": { - "compId": 4, - "pinName": "F2" - }, - "pin2": { - "compId": 0, - "pinName": "F2" - }, - "path": [ - { - "x": 135.0, - "y": 30.0 - }, - { - "x": 135.0, - "y": 60.0 - } - ] - }, - { - "pin1": { - "compId": 4, - "pinName": "F3" - }, - "pin2": { - "compId": 0, - "pinName": "F3" - }, - "path": [ - { - "x": 130.0, - "y": 40.0 - }, - { - "x": 130.0, - "y": 100.0 - } - ] - }, - { - "pin1": { - "compId": 4, - "pinName": "F4" - }, - "pin2": { - "compId": 0, - "pinName": "F4" - }, - "path": [ - { - "x": 125.0, - "y": 50.0 - }, - { - "x": 125.0, - "y": 140.0 - } - ] - }, - { - "pin1": { - "compId": 4, - "pinName": "Cn+4" - }, - "pin2": { - "compId": 0, - "pinName": "Cn+4" - }, - "path": [ - { - "x": 120.0, - "y": 60.0 - }, - { - "x": 120.0, - "y": 180.0 - } - ] - }, - { - "pin1": { - "compId": 4, - "pinName": "OVR" - }, - "pin2": { - "compId": 0, - "pinName": "OVR" - }, - "path": [ - { - "x": 115.0, - "y": 70.0 - }, - { - "x": 115.0, - "y": 220.0 - } - ] - } - ] - }, - "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", - "symbolRendererParams": { - "centerText": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode", - "horizontalComponentCenter": 17.5, - "centerTextHeight": 5.0, - "pinLabelHeight": 3.5, - "pinLabelMargin": 0.5 - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.editor/components/am2901/GUIAm2901ALUOneBit.json b/net.mograsim.logic.ui.editor/components/am2901/GUIAm2901ALUOneBit.json deleted file mode 100644 index 13491267..00000000 --- a/net.mograsim.logic.ui.editor/components/am2901/GUIAm2901ALUOneBit.json +++ /dev/null @@ -1,511 +0,0 @@ -mograsim version: 0.1.3 -{ - "width": 35.0, - "height": 90.0, - "interfacePins": [ - { - "location": { - "x": 0.0, - "y": 35.0 - }, - "name": "R", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 55.0 - }, - "name": "S", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 15.0 - }, - "name": "F", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 75.0 - }, - "name": "FN", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 5.0 - }, - "name": "Cin", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 65.0 - }, - "name": "SN", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 5.0 - }, - "name": "Cout", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 45.0 - }, - "name": "RN", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 85.0 - }, - "name": "L", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 25.0 - }, - "name": "CinE", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 15.0 - }, - "name": "CoutE", - "logicWidth": 1 - } - ], - "submodel": { - "innerScale": 0.2, - "subComps": [ - { - "pos": { - "x": 10.0, - "y": 20.0 - }, - "id": "GUIand" - }, - { - "pos": { - "x": 10.0, - "y": 190.0 - }, - "id": "GUIxor" - }, - { - "pos": { - "x": 10.0, - "y": 290.0 - }, - "id": "GUIxor" - }, - { - "pos": { - "x": 60.0, - "y": 20.0 - }, - "id": "GUIfulladder" - }, - { - "pos": { - "x": 60.0, - "y": 55.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 135.0, - "y": 20.0 - }, - "id": "GUIand" - }, - { - "pos": { - "x": 90.0, - "y": 70.0 - }, - "id": "GUImux1" - }, - { - "pos": { - "x": 135.0, - "y": 70.0 - }, - "id": "GUIxor" - }, - { - "pos": { - "x": 49.0, - "y": 59.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 54.0, - "y": 69.0 - }, - "id": "WireCrossPoint", - "params": 1 - } - ], - "innerWires": [ - { - "pin1": { - "compId": 0, - "pinName": "Cin" - }, - "pin2": { - "compId": 1, - "pinName": "A" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "CoutE" - }, - "pin2": { - "compId": 6, - "pinName": "A" - }, - "path": [ - { - "x": 5.0, - "y": 75.0 - }, - { - "x": 5.0, - "y": 10.0 - }, - { - "x": 130.0, - "y": 10.0 - }, - { - "x": 130.0, - "y": 25.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "CinE" - }, - "pin2": { - "compId": 1, - "pinName": "B" - }, - "path": [ - { - "x": 7.5, - "y": 125.0 - }, - { - "x": 7.5, - "y": 35.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "R" - }, - "pin2": { - "compId": 2, - "pinName": "A" - } - }, - { - "pin1": { - "compId": 0, - "pinName": "RN" - }, - "pin2": { - "compId": 2, - "pinName": "B" - } - }, - { - "pin1": { - "compId": 0, - "pinName": "S" - }, - "pin2": { - "compId": 3, - "pinName": "A" - } - }, - { - "pin1": { - "compId": 0, - "pinName": "SN" - }, - "pin2": { - "compId": 3, - "pinName": "B" - } - }, - { - "pin1": { - "compId": 0, - "pinName": "FN" - }, - "pin2": { - "compId": 8, - "pinName": "B" - }, - "path": [ - { - "x": 130.0, - "y": 375.0 - }, - { - "x": 130.0, - "y": 85.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "L" - }, - "pin2": { - "compId": 7, - "pinName": "S0" - }, - "path": [ - { - "x": 87.5, - "y": 425.0 - }, - { - "x": 87.5, - "y": 75.0 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y" - }, - "pin2": { - "compId": 4, - "pinName": "A" - }, - "path": [] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y" - }, - "pin2": { - "compId": 9, - "pinName": "" - }, - "path": [ - { - "x": 50.0, - "y": 195.0 - } - ] - }, - { - "pin1": { - "compId": 9, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "B" - }, - "path": [ - { - "x": 50.0, - "y": 35.0 - } - ] - }, - { - "pin1": { - "compId": 9, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "A" - }, - "path": [] - }, - { - "pin1": { - "compId": 3, - "pinName": "Y" - }, - "pin2": { - "compId": 10, - "pinName": "" - }, - "path": [ - { - "x": 55.0, - "y": 295.0 - } - ] - }, - { - "pin1": { - "compId": 10, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "C" - }, - "path": [ - { - "x": 55.0, - "y": 45.0 - } - ] - }, - { - "pin1": { - "compId": 10, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "B" - }, - "path": [] - }, - { - "pin1": { - "compId": 4, - "pinName": "Y" - }, - "pin2": { - "compId": 7, - "pinName": "I0" - }, - "path": [ - { - "x": 100.0, - "y": 25.0 - }, - { - "x": 100.0, - "y": 65.0 - }, - { - "x": 85.0, - "y": 65.0 - }, - { - "x": 85.0, - "y": 85.0 - } - ] - }, - { - "pin1": { - "compId": 4, - "pinName": "Z" - }, - "pin2": { - "compId": 6, - "pinName": "B" - }, - "path": [] - }, - { - "pin1": { - "compId": 5, - "pinName": "Y" - }, - "pin2": { - "compId": 7, - "pinName": "I1" - }, - "path": [ - { - "x": 82.5, - "y": 65.0 - }, - { - "x": 82.5, - "y": 95.0 - } - ] - }, - { - "pin1": { - "compId": 7, - "pinName": "Y" - }, - "pin2": { - "compId": 8, - "pinName": "A" - }, - "path": [] - }, - { - "pin1": { - "compId": 6, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "Cout" - }, - "path": [] - }, - { - "pin1": { - "compId": 8, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "F" - }, - "path": [] - } - ] - }, - "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", - "symbolRendererParams": { - "centerText": "GUIAm2901ALUOneBit", - "horizontalComponentCenter": 17.5, - "centerTextHeight": 5.0, - "pinLabelHeight": 3.5, - "pinLabelMargin": 0.5 - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.editor/components/am2901/GUIAm2901DestDecode.json b/net.mograsim.logic.ui.editor/components/am2901/GUIAm2901DestDecode.json deleted file mode 100644 index 72daafa8..00000000 --- a/net.mograsim.logic.ui.editor/components/am2901/GUIAm2901DestDecode.json +++ /dev/null @@ -1,1006 +0,0 @@ -mograsim version: 0.1.3 -{ - "width": 35.0, - "height": 60.0, - "interfacePins": [ - { - "location": { - "x": 35.0, - "y": 45.0 - }, - "name": "LSH", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 5.0 - }, - "name": "NSH", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 15.0 - }, - "name": "RSH", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 25.0 - }, - "name": "I6", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 35.0 - }, - "name": "YF", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 15.0 - }, - "name": "I7", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 25.0 - }, - "name": "RAMWE", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 55.0 - }, - "name": "QWE", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 5.0 - }, - "name": "I8", - "logicWidth": 1 - } - ], - "submodel": { - "innerScale": 0.25, - "subComps": [ - { - "pos": { - "x": 15.0, - "y": 10.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 15.0, - "y": 50.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 15.0, - "y": 90.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 15.0, - "y": 150.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 50.0, - "y": 10.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 50.0, - "y": 50.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 50.0, - "y": 90.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 50.0, - "y": 130.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 80.0, - "y": 10.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 80.0, - "y": 90.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 80.0, - "y": 145.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 110.0, - "y": 105.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 115.0, - "y": 210.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 4.0, - "y": 19.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 4.0, - "y": 14.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 4.0, - "y": 24.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 9.0, - "y": 59.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 9.0, - "y": 64.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 9.0, - "y": 104.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 4.0, - "y": 154.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 39.0, - "y": 59.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 44.0, - "y": 19.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 44.0, - "y": 54.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 39.0, - "y": 134.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 74.0, - "y": 19.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 74.0, - "y": 99.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 74.0, - "y": 104.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 74.0, - "y": 159.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 109.0, - "y": 214.0 - }, - "id": "WireCrossPoint", - "params": 1 - } - ], - "innerWires": [ - { - "pin1": { - "compId": 0, - "pinName": "I8" - }, - "pin2": { - "compId": 14, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 14, - "pinName": "" - }, - "pin2": { - "compId": 15, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 14, - "pinName": "" - }, - "pin2": { - "compId": 16, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 15, - "pinName": "" - }, - "pin2": { - "compId": 1, - "pinName": "A" - }, - "path": [] - }, - { - "pin1": { - "compId": 16, - "pinName": "" - }, - "pin2": { - "compId": 1, - "pinName": "B" - }, - "path": [] - }, - { - "pin1": { - "compId": 0, - "pinName": "I7" - }, - "pin2": { - "compId": 17, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 17, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "A" - }, - "path": [ - { - "x": 10.0, - "y": 55.0 - } - ] - }, - { - "pin1": { - "compId": 17, - "pinName": "" - }, - "pin2": { - "compId": 18, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 18, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "B" - }, - "path": [] - }, - { - "pin1": { - "compId": 18, - "pinName": "" - }, - "pin2": { - "compId": 19, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 19, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "B" - }, - "path": [] - }, - { - "pin1": { - "compId": 16, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "A" - }, - "path": [ - { - "x": 5.0, - "y": 95.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "I6" - }, - "pin2": { - "compId": 20, - "pinName": "" - }, - "path": [ - { - "x": 5.0, - "y": 100.0 - } - ] - }, - { - "pin1": { - "compId": 20, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "A" - }, - "path": [] - }, - { - "pin1": { - "compId": 20, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "B" - }, - "path": [ - { - "x": 5.0, - "y": 165.0 - } - ] - }, - { - "pin1": { - "compId": 15, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "A" - }, - "path": [ - { - "x": 5.0, - "y": 5.0 - }, - { - "x": 40.0, - "y": 5.0 - }, - { - "x": 40.0, - "y": 15.0 - } - ] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y" - }, - "pin2": { - "compId": 21, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 21, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "B" - }, - "path": [ - { - "x": 40.0, - "y": 25.0 - } - ] - }, - { - "pin1": { - "compId": 21, - "pinName": "" - }, - "pin2": { - "compId": 6, - "pinName": "B" - }, - "path": [ - { - "x": 40.0, - "y": 65.0 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y" - }, - "pin2": { - "compId": 22, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 22, - "pinName": "" - }, - "pin2": { - "compId": 0, - "pinName": "NSH" - }, - "path": [ - { - "x": 45.0, - "y": 5.0 - }, - { - "x": 135.0, - "y": 5.0 - }, - { - "x": 135.0, - "y": 20.0 - } - ] - }, - { - "pin1": { - "compId": 22, - "pinName": "" - }, - "pin2": { - "compId": 23, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 23, - "pinName": "" - }, - "pin2": { - "compId": 6, - "pinName": "A" - }, - "path": [] - }, - { - "pin1": { - "compId": 23, - "pinName": "" - }, - "pin2": { - "compId": 7, - "pinName": "A" - }, - "path": [ - { - "x": 45.0, - "y": 95.0 - } - ] - }, - { - "pin1": { - "compId": 19, - "pinName": "" - }, - "pin2": { - "compId": 7, - "pinName": "B" - }, - "path": [ - { - "x": 10.0, - "y": 115.0 - }, - { - "x": 45.0, - "y": 115.0 - }, - { - "x": 45.0, - "y": 105.0 - } - ] - }, - { - "pin1": { - "compId": 3, - "pinName": "Y" - }, - "pin2": { - "compId": 24, - "pinName": "" - }, - "path": [ - { - "x": 40.0, - "y": 100.0 - } - ] - }, - { - "pin1": { - "compId": 24, - "pinName": "" - }, - "pin2": { - "compId": 8, - "pinName": "A" - }, - "path": [] - }, - { - "pin1": { - "compId": 24, - "pinName": "" - }, - "pin2": { - "compId": 8, - "pinName": "B" - }, - "path": [ - { - "x": 40.0, - "y": 145.0 - } - ] - }, - { - "pin1": { - "compId": 5, - "pinName": "Y" - }, - "pin2": { - "compId": 25, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 25, - "pinName": "" - }, - "pin2": { - "compId": 9, - "pinName": "A" - }, - "path": [ - { - "x": 75.0, - "y": 15.0 - } - ] - }, - { - "pin1": { - "compId": 25, - "pinName": "" - }, - "pin2": { - "compId": 9, - "pinName": "B" - }, - "path": [ - { - "x": 75.0, - "y": 25.0 - } - ] - }, - { - "pin1": { - "compId": 6, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "RAMWE" - }, - "path": [ - { - "x": 125.0, - "y": 60.0 - }, - { - "x": 125.0, - "y": 100.0 - } - ] - }, - { - "pin1": { - "compId": 7, - "pinName": "Y" - }, - "pin2": { - "compId": 26, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 26, - "pinName": "" - }, - "pin2": { - "compId": 10, - "pinName": "A" - }, - "path": [ - { - "x": 75.0, - "y": 95.0 - } - ] - }, - { - "pin1": { - "compId": 26, - "pinName": "" - }, - "pin2": { - "compId": 27, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 27, - "pinName": "" - }, - "pin2": { - "compId": 10, - "pinName": "B" - }, - "path": [] - }, - { - "pin1": { - "compId": 8, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "LSH" - }, - "path": [ - { - "x": 125.0, - "y": 140.0 - }, - { - "x": 125.0, - "y": 180.0 - } - ] - }, - { - "pin1": { - "compId": 27, - "pinName": "" - }, - "pin2": { - "compId": 11, - "pinName": "A" - }, - "path": [ - { - "x": 75.0, - "y": 150.0 - } - ] - }, - { - "pin1": { - "compId": 4, - "pinName": "Y" - }, - "pin2": { - "compId": 28, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 28, - "pinName": "" - }, - "pin2": { - "compId": 11, - "pinName": "B" - }, - "path": [] - }, - { - "pin1": { - "compId": 9, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "RSH" - }, - "path": [ - { - "x": 130.0, - "y": 20.0 - }, - { - "x": 130.0, - "y": 60.0 - } - ] - }, - { - "pin1": { - "compId": 10, - "pinName": "Y" - }, - "pin2": { - "compId": 12, - "pinName": "A" - } - }, - { - "pin1": { - "compId": 28, - "pinName": "" - }, - "pin2": { - "compId": 12, - "pinName": "B" - }, - "path": [ - { - "x": 75.0, - "y": 170.0 - }, - { - "x": 105.0, - "y": 170.0 - }, - { - "x": 105.0, - "y": 120.0 - } - ] - }, - { - "pin1": { - "compId": 11, - "pinName": "Y" - }, - "pin2": { - "compId": 29, - "pinName": "" - }, - "path": [ - { - "x": 110.0, - "y": 155.0 - } - ] - }, - { - "pin1": { - "compId": 29, - "pinName": "" - }, - "pin2": { - "compId": 13, - "pinName": "A" - }, - "path": [] - }, - { - "pin1": { - "compId": 29, - "pinName": "" - }, - "pin2": { - "compId": 13, - "pinName": "B" - }, - "path": [ - { - "x": 110.0, - "y": 225.0 - } - ] - }, - { - "pin1": { - "compId": 12, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "YF" - } - }, - { - "pin1": { - "compId": 13, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "QWE" - }, - "path": [] - } - ] - }, - "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", - "symbolRendererParams": { - "centerText": "GUIAm2901DestDecode", - "horizontalComponentCenter": 17.5, - "centerTextHeight": 5.0, - "pinLabelHeight": 3.5, - "pinLabelMargin": 0.5 - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.editor/components/am2901/GUIAm2901QReg.json b/net.mograsim.logic.ui.editor/components/am2901/GUIAm2901QReg.json deleted file mode 100644 index 5af80ebe..00000000 --- a/net.mograsim.logic.ui.editor/components/am2901/GUIAm2901QReg.json +++ /dev/null @@ -1,400 +0,0 @@ -mograsim version: 0.1.3 -{ - "width": 35.0, - "height": 60.0, - "interfacePins": [ - { - "location": { - "x": 0.0, - "y": 55.0 - }, - "name": "D4", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 5.0 - }, - "name": "Q1", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 15.0 - }, - "name": "Q2", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 25.0 - }, - "name": "Q3", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 5.0 - }, - "name": "C", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 35.0 - }, - "name": "Q4", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 25.0 - }, - "name": "D1", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 15.0 - }, - "name": "WE", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 35.0 - }, - "name": "D2", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 45.0 - }, - "name": "D3", - "logicWidth": 1 - } - ], - "submodel": { - "innerScale": 0.4, - "subComps": [ - { - "pos": { - "x": 5.0, - "y": 15.0 - }, - "id": "GUIand" - }, - { - "pos": { - "x": 50.0, - "y": 7.5 - }, - "id": "GUIdff" - }, - { - "pos": { - "x": 50.0, - "y": 32.5 - }, - "id": "GUIdff" - }, - { - "pos": { - "x": 50.0, - "y": 57.5 - }, - "id": "GUIdff" - }, - { - "pos": { - "x": 50.0, - "y": 82.5 - }, - "id": "GUIdff" - }, - { - "pos": { - "x": 41.5, - "y": 19.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 41.5, - "y": 36.5 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 41.5, - "y": 61.5 - }, - "id": "WireCrossPoint", - "params": 1 - } - ], - "innerWires": [ - { - "pin1": { - "compId": 0, - "pinName": "C" - }, - "pin2": { - "compId": 1, - "pinName": "A" - } - }, - { - "pin1": { - "compId": 0, - "pinName": "WE" - }, - "pin2": { - "compId": 1, - "pinName": "B" - } - }, - { - "pin1": { - "compId": 1, - "pinName": "Y" - }, - "pin2": { - "compId": 6, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 6, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "C" - }, - "path": [ - { - "x": 42.5, - "y": 12.5 - } - ] - }, - { - "pin1": { - "compId": 6, - "pinName": "" - }, - "pin2": { - "compId": 7, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 7, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "C" - }, - "path": [] - }, - { - "pin1": { - "compId": 7, - "pinName": "" - }, - "pin2": { - "compId": 8, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 8, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "C" - }, - "path": [] - }, - { - "pin1": { - "compId": 8, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "C" - }, - "path": [ - { - "x": 42.5, - "y": 87.5 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "D1" - }, - "pin2": { - "compId": 2, - "pinName": "D" - }, - "path": [ - { - "x": 17.5, - "y": 62.5 - }, - { - "x": 17.5, - "y": 42.5 - }, - { - "x": 45.0, - "y": 42.5 - }, - { - "x": 45.0, - "y": 22.5 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "D2" - }, - "pin2": { - "compId": 3, - "pinName": "D" - }, - "path": [ - { - "x": 22.5, - "y": 87.5 - }, - { - "x": 22.5, - "y": 47.5 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "D3" - }, - "pin2": { - "compId": 4, - "pinName": "D" - }, - "path": [ - { - "x": 27.5, - "y": 112.5 - }, - { - "x": 27.5, - "y": 72.5 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "D4" - }, - "pin2": { - "compId": 5, - "pinName": "D" - }, - "path": [ - { - "x": 32.5, - "y": 137.5 - }, - { - "x": 32.5, - "y": 97.5 - } - ] - }, - { - "pin1": { - "compId": 2, - "pinName": "Q" - }, - "pin2": { - "compId": 0, - "pinName": "Q1" - }, - "path": [] - }, - { - "pin1": { - "compId": 3, - "pinName": "Q" - }, - "pin2": { - "compId": 0, - "pinName": "Q2" - }, - "path": [] - }, - { - "pin1": { - "compId": 4, - "pinName": "Q" - }, - "pin2": { - "compId": 0, - "pinName": "Q3" - }, - "path": [] - }, - { - "pin1": { - "compId": 5, - "pinName": "Q" - }, - "pin2": { - "compId": 0, - "pinName": "Q4" - }, - "path": [] - } - ] - }, - "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", - "symbolRendererParams": { - "centerText": "GUIAm2901QReg", - "horizontalComponentCenter": 17.5, - "centerTextHeight": 5.0, - "pinLabelHeight": 3.5, - "pinLabelMargin": 0.5 - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.editor/components/am2901/GUIAm2901SourceDecode.json b/net.mograsim.logic.ui.editor/components/am2901/GUIAm2901SourceDecode.json deleted file mode 100644 index e9a5f1e4..00000000 --- a/net.mograsim.logic.ui.editor/components/am2901/GUIAm2901SourceDecode.json +++ /dev/null @@ -1,1045 +0,0 @@ -mograsim version: 0.1.3 -{ - "width": 35.0, - "height": 50.0, - "interfacePins": [ - { - "location": { - "x": 35.0, - "y": 45.0 - }, - "name": "RD", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 25.0 - }, - "name": "I0", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 15.0 - }, - "name": "I1", - "logicWidth": 1 - }, - { - "location": { - "x": 0.0, - "y": 5.0 - }, - "name": "I2", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 5.0 - }, - "name": "SQ", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 35.0 - }, - "name": "SA", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 15.0 - }, - "name": "RA", - "logicWidth": 1 - }, - { - "location": { - "x": 35.0, - "y": 25.0 - }, - "name": "SB", - "logicWidth": 1 - } - ], - "submodel": { - "innerScale": 0.25, - "subComps": [ - { - "pos": { - "x": 10.0, - "y": 10.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 10.0, - "y": 50.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 10.0, - "y": 90.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 40.0, - "y": 10.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 40.0, - "y": 50.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 40.0, - "y": 90.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 40.0, - "y": 130.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 40.0, - "y": 170.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 70.0, - "y": 10.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 70.0, - "y": 50.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 70.0, - "y": 90.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 70.0, - "y": 130.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 70.0, - "y": 170.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 100.0, - "y": 10.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 100.0, - "y": 170.0 - }, - "id": "GUINandGate", - "params": 1 - }, - { - "pos": { - "x": 4.0, - "y": 19.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 6.5, - "y": 19.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 4.0, - "y": 144.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 6.5, - "y": 59.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 6.5, - "y": 99.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 6.5, - "y": 104.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 31.5, - "y": 54.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 34.0, - "y": 59.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 34.0, - "y": 64.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 34.0, - "y": 134.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 36.5, - "y": 99.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 64.0, - "y": 59.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 64.0, - "y": 99.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 64.0, - "y": 139.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 94.0, - "y": 19.0 - }, - "id": "WireCrossPoint", - "params": 1 - }, - { - "pos": { - "x": 94.0, - "y": 179.0 - }, - "id": "WireCrossPoint", - "params": 1 - } - ], - "innerWires": [ - { - "pin1": { - "compId": 0, - "pinName": "I2" - }, - "pin2": { - "compId": 16, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 16, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "A" - }, - "path": [ - { - "x": 5.0, - "y": 5.0 - }, - { - "x": 35.0, - "y": 5.0 - }, - { - "x": 35.0, - "y": 15.0 - } - ] - }, - { - "pin1": { - "compId": 16, - "pinName": "" - }, - "pin2": { - "compId": 17, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 17, - "pinName": "" - }, - "pin2": { - "compId": 1, - "pinName": "A" - }, - "path": [ - { - "x": 7.5, - "y": 15.0 - } - ] - }, - { - "pin1": { - "compId": 17, - "pinName": "" - }, - "pin2": { - "compId": 1, - "pinName": "B" - }, - "path": [ - { - "x": 7.5, - "y": 25.0 - } - ] - }, - { - "pin1": { - "compId": 16, - "pinName": "" - }, - "pin2": { - "compId": 18, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 18, - "pinName": "" - }, - "pin2": { - "compId": 7, - "pinName": "B" - }, - "path": [] - }, - { - "pin1": { - "compId": 18, - "pinName": "" - }, - "pin2": { - "compId": 13, - "pinName": "B" - }, - "path": [ - { - "x": 5.0, - "y": 195.0 - }, - { - "x": 65.0, - "y": 195.0 - }, - { - "x": 65.0, - "y": 185.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "I1" - }, - "pin2": { - "compId": 19, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 19, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "A" - }, - "path": [ - { - "x": 7.5, - "y": 55.0 - } - ] - }, - { - "pin1": { - "compId": 19, - "pinName": "" - }, - "pin2": { - "compId": 2, - "pinName": "B" - }, - "path": [ - { - "x": 7.5, - "y": 65.0 - } - ] - }, - { - "pin1": { - "compId": 0, - "pinName": "I0" - }, - "pin2": { - "compId": 20, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 20, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "A" - }, - "path": [ - { - "x": 7.5, - "y": 95.0 - } - ] - }, - { - "pin1": { - "compId": 20, - "pinName": "" - }, - "pin2": { - "compId": 21, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 21, - "pinName": "" - }, - "pin2": { - "compId": 3, - "pinName": "B" - }, - "path": [] - }, - { - "pin1": { - "compId": 21, - "pinName": "" - }, - "pin2": { - "compId": 6, - "pinName": "B" - }, - "path": [ - { - "x": 7.5, - "y": 112.5 - }, - { - "x": 32.5, - "y": 112.5 - }, - { - "x": 32.5, - "y": 105.0 - } - ] - }, - { - "pin1": { - "compId": 1, - "pinName": "Y" - }, - "pin2": { - "compId": 22, - "pinName": "" - }, - "path": [ - { - "x": 32.5, - "y": 20.0 - } - ] - }, - { - "pin1": { - "compId": 22, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "A" - }, - "path": [] - }, - { - "pin1": { - "compId": 22, - "pinName": "" - }, - "pin2": { - "compId": 6, - "pinName": "A" - }, - "path": [ - { - "x": 32.5, - "y": 95.0 - } - ] - }, - { - "pin1": { - "compId": 2, - "pinName": "Y" - }, - "pin2": { - "compId": 23, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 23, - "pinName": "" - }, - "pin2": { - "compId": 4, - "pinName": "B" - }, - "path": [ - { - "x": 35.0, - "y": 25.0 - } - ] - }, - { - "pin1": { - "compId": 23, - "pinName": "" - }, - "pin2": { - "compId": 24, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 24, - "pinName": "" - }, - "pin2": { - "compId": 5, - "pinName": "B" - }, - "path": [] - }, - { - "pin1": { - "compId": 24, - "pinName": "" - }, - "pin2": { - "compId": 25, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 25, - "pinName": "" - }, - "pin2": { - "compId": 7, - "pinName": "A" - }, - "path": [] - }, - { - "pin1": { - "compId": 25, - "pinName": "" - }, - "pin2": { - "compId": 8, - "pinName": "A" - }, - "path": [ - { - "x": 35.0, - "y": 175.0 - } - ] - }, - { - "pin1": { - "compId": 3, - "pinName": "Y" - }, - "pin2": { - "compId": 26, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 26, - "pinName": "" - }, - "pin2": { - "compId": 9, - "pinName": "B" - }, - "path": [ - { - "x": 37.5, - "y": 35.0 - }, - { - "x": 65.0, - "y": 35.0 - }, - { - "x": 65.0, - "y": 25.0 - } - ] - }, - { - "pin1": { - "compId": 26, - "pinName": "" - }, - "pin2": { - "compId": 8, - "pinName": "B" - }, - "path": [ - { - "x": 37.5, - "y": 185.0 - } - ] - }, - { - "pin1": { - "compId": 4, - "pinName": "Y" - }, - "pin2": { - "compId": 9, - "pinName": "A" - } - }, - { - "pin1": { - "compId": 5, - "pinName": "Y" - }, - "pin2": { - "compId": 27, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 27, - "pinName": "" - }, - "pin2": { - "compId": 10, - "pinName": "A" - }, - "path": [ - { - "x": 65.0, - "y": 55.0 - } - ] - }, - { - "pin1": { - "compId": 27, - "pinName": "" - }, - "pin2": { - "compId": 10, - "pinName": "B" - }, - "path": [ - { - "x": 65.0, - "y": 65.0 - } - ] - }, - { - "pin1": { - "compId": 6, - "pinName": "Y" - }, - "pin2": { - "compId": 28, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 28, - "pinName": "" - }, - "pin2": { - "compId": 11, - "pinName": "A" - }, - "path": [ - { - "x": 65.0, - "y": 95.0 - } - ] - }, - { - "pin1": { - "compId": 28, - "pinName": "" - }, - "pin2": { - "compId": 11, - "pinName": "B" - }, - "path": [ - { - "x": 65.0, - "y": 105.0 - } - ] - }, - { - "pin1": { - "compId": 7, - "pinName": "Y" - }, - "pin2": { - "compId": 29, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 29, - "pinName": "" - }, - "pin2": { - "compId": 12, - "pinName": "A" - }, - "path": [ - { - "x": 65.0, - "y": 135.0 - } - ] - }, - { - "pin1": { - "compId": 29, - "pinName": "" - }, - "pin2": { - "compId": 12, - "pinName": "B" - }, - "path": [ - { - "x": 65.0, - "y": 145.0 - } - ] - }, - { - "pin1": { - "compId": 8, - "pinName": "Y" - }, - "pin2": { - "compId": 13, - "pinName": "A" - } - }, - { - "pin1": { - "compId": 9, - "pinName": "Y" - }, - "pin2": { - "compId": 30, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 30, - "pinName": "" - }, - "pin2": { - "compId": 14, - "pinName": "A" - }, - "path": [ - { - "x": 95.0, - "y": 15.0 - } - ] - }, - { - "pin1": { - "compId": 30, - "pinName": "" - }, - "pin2": { - "compId": 14, - "pinName": "B" - }, - "path": [ - { - "x": 95.0, - "y": 25.0 - } - ] - }, - { - "pin1": { - "compId": 10, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "RA" - }, - "path": [] - }, - { - "pin1": { - "compId": 11, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "SB" - }, - "path": [] - }, - { - "pin1": { - "compId": 12, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "SA" - }, - "path": [] - }, - { - "pin1": { - "compId": 13, - "pinName": "Y" - }, - "pin2": { - "compId": 31, - "pinName": "" - }, - "path": [] - }, - { - "pin1": { - "compId": 31, - "pinName": "" - }, - "pin2": { - "compId": 15, - "pinName": "A" - }, - "path": [ - { - "x": 95.0, - "y": 175.0 - } - ] - }, - { - "pin1": { - "compId": 31, - "pinName": "" - }, - "pin2": { - "compId": 15, - "pinName": "B" - }, - "path": [ - { - "x": 95.0, - "y": 185.0 - } - ] - }, - { - "pin1": { - "compId": 14, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "SQ" - }, - "path": [] - }, - { - "pin1": { - "compId": 15, - "pinName": "Y" - }, - "pin2": { - "compId": 0, - "pinName": "RD" - }, - "path": [] - } - ] - }, - "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer", - "symbolRendererParams": { - "centerText": "Am2901SourceDecode", - "horizontalComponentCenter": 17.5, - "centerTextHeight": 5.0, - "pinLabelHeight": 3.5, - "pinLabelMargin": 0.5 - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/DialogManager.java b/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/DialogManager.java deleted file mode 100644 index 12c7adb8..00000000 --- a/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/DialogManager.java +++ /dev/null @@ -1,131 +0,0 @@ -package net.mograsim.logic.ui.editor; - -import org.eclipse.swt.SWT; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Display; -import org.eclipse.swt.widgets.Label; -import org.eclipse.swt.widgets.MessageBox; -import org.eclipse.swt.widgets.Shell; -import org.eclipse.swt.widgets.Text; - -public class DialogManager -{ - private Shell parent; - - public DialogManager(Shell parent) - { - this.parent = parent; - } - - public void openWarningDialog(String title, String message) - { - MessageBox b = new MessageBox(parent, SWT.ICON_WARNING | SWT.OK); - b.setText(title); - b.setMessage(message); - b.open(); - } - - public static class InteractiveDialog - { - private String[] finalInput; - private final Display display; - private final Shell shell; - private final Button b1, b2; - private Text[] textFields; - private InteractiveDialog.InteractiveDialogState state; - - public InteractiveDialog(String title, String acceptLabel, String cancelLabel, String... inputs) - { - display = Display.getDefault(); - shell = new Shell(SWT.CLOSE | SWT.TITLE | SWT.MIN | SWT.ON_TOP | SWT.APPLICATION_MODAL); - shell.setMinimumSize(500, 150); - shell.setText(title); - GridLayout layout = new GridLayout(); - layout.numColumns = 2; - shell.setLayout(layout); - - this.textFields = new Text[inputs.length]; - for (int i = 0; i < inputs.length; i++) - { - Label textFieldName = new Label(shell, SWT.NONE); - textFieldName.setText(inputs[i].concat(":")); - GridData g = new GridData(); - g.grabExcessHorizontalSpace = true; - g.horizontalAlignment = SWT.FILL; - Text newTextField = new Text(shell, SWT.BORDER); - newTextField.setLayoutData(g); - textFields[i] = newTextField; - } - b1 = new Button(shell, SWT.PUSH); - b1.addListener(SWT.Selection, e -> - { - state = InteractiveDialogState.ACCEPTED; - buildFinalInput(); - dispose(); - }); - b1.setText(acceptLabel); - b2 = new Button(shell, SWT.PUSH); - b2.addListener(SWT.Selection, e -> - { - state = InteractiveDialogState.CANCELLED; - buildFinalInput(); - dispose(); - }); - b2.setText(cancelLabel); - - state = InteractiveDialogState.ACTIVE; - - shell.pack(); - } - - public String getText() - { - return getText(0); - } - - public String getText(int index) - { - if (!shell.isDisposed()) - return textFields[index].getText(); - else - return finalInput[index]; - } - - public void open() - { - shell.open(); - while (!shell.isDisposed()) - if (!display.readAndDispatch()) - display.sleep(); - } - - public void dispose() - { - shell.dispose(); - } - - public InteractiveDialog.InteractiveDialogState getState() - { - return state; - } - - private void buildFinalInput() - { - finalInput = new String[textFields.length]; - for (int i = 0; i < textFields.length; i++) - finalInput[i] = textFields[i].getText(); - } - - public static enum InteractiveDialogState - { - ACTIVE, ACCEPTED, CANCELLED; - } - } - - public static void openAddPinDialog(Editor editor, double x, double y) - { - - } -} diff --git a/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/EditableSubmodelComponent.java b/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/EditableSubmodelComponent.java deleted file mode 100644 index 5c9452f9..00000000 --- a/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/EditableSubmodelComponent.java +++ /dev/null @@ -1,89 +0,0 @@ -package net.mograsim.logic.ui.editor; - -import org.eclipse.swt.graphics.Color; - -import net.haspamelodica.swt.helper.gcs.GeneralGC; -import net.haspamelodica.swt.helper.swtobjectwrappers.Font; -import net.haspamelodica.swt.helper.swtobjectwrappers.Point; -import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; -import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.logic.ui.model.wires.MovablePin; -import net.mograsim.logic.ui.model.wires.Pin; -import net.mograsim.logic.ui.serializing.DeserializedSubmodelComponent; -import net.mograsim.preferences.Preferences; - -public class EditableSubmodelComponent extends DeserializedSubmodelComponent -{ - private static final double labelFontHeight = 5; - private static final double pinNameFontHeight = 3; - private String label; - - public EditableSubmodelComponent(ViewModelModifiable model, String label) - { - super(model); - this.label = label; - setSubmodelScale(0.2); - addSubmodelInterface(new MovablePin(this, "A Pin", 1, 0, 10)); - - } - - public ViewModelModifiable getSubmodelModifiable() - { - return submodelModifiable; - } - - @Override - protected void renderOutline(GeneralGC gc, Rectangle visibleRegion) - { - Color foreground = Preferences.current().getColor("net.mograsim.logic.ui.color.foreground"); - if (foreground != null) - gc.setForeground(foreground); - gc.drawRectangle(getBounds()); - } - - @Override - protected void renderSymbol(GeneralGC gc, Rectangle visibleRegion) - { - Font oldFont = gc.getFont(); - gc.setFont(new Font(oldFont.getName(), labelFontHeight, oldFont.getStyle())); - Point textExtent = gc.textExtent(label); - Color textColor = Preferences.current().getColor("net.mograsim.logic.ui.color.text"); - if (textColor != null) - gc.setForeground(textColor); - gc.drawText(label, getPosX() + (getWidth() - textExtent.x) / 2, getPosY() + (getHeight() - textExtent.y) / 2, - true); - gc.setFont(new Font(oldFont.getName(), pinNameFontHeight, oldFont.getStyle())); - for (String name : pinsUnmodifiable.keySet()) - { - Pin p = pinsUnmodifiable.get(name); - Point pos = p.getPos(); - gc.drawText(name, pos.x, pos.y, true); - } - gc.setFont(oldFont); - } - - public void setSubmodelScale(double scale) - { - super.setSubmodelScale(scale); - } - - public double getSubmodelScale() - { - return super.getSubmodelScale(); - } - - public void setSize(double width, double height) - { - super.setSize(width, height); - } - - public String getLabel() - { - return label; - } - - public void setLabel(String label) - { - this.label = label; - } -} diff --git a/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/Editor.java b/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/Editor.java deleted file mode 100644 index 71414af4..00000000 --- a/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/Editor.java +++ /dev/null @@ -1,215 +0,0 @@ -package net.mograsim.logic.ui.editor; - -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.Optional; -import java.util.Set; - -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; - -import net.haspamelodica.swt.helper.swtobjectwrappers.Point; -import net.mograsim.logic.ui.editor.handles.ComponentHandle; -import net.mograsim.logic.ui.editor.handles.Handle; -import net.mograsim.logic.ui.editor.handles.HandleManager; -import net.mograsim.logic.ui.editor.handles.PinHandle; -import net.mograsim.logic.ui.editor.states.StateManager; -import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.logic.ui.model.components.GUIComponent; -import net.mograsim.logic.ui.model.wires.GUIWire; -import net.mograsim.logic.ui.serializing.DeserializedSubmodelComponent; -import net.mograsim.logic.ui.serializing.IndirectGUIComponentCreator; - -public final class Editor -{ - final Selection selection = new Selection(); - final Set copyBuffer = new HashSet<>(); - public final DeserializedSubmodelComponent toBeEdited; - public final HandleManager handleManager; - final static Map identifierPerComponent = new HashMap<>(); - public final EditorGUI gui; - public final StateManager stateManager; - private final SaveLoadManager saveManager; - Snapping snapping = Snapping.ABSOLUTE; - private double snapX = 5, snapY = 5; - public final DialogManager dialogManager; - - public Editor(DeserializedSubmodelComponent toBeEdited) - { - this.toBeEdited = toBeEdited; - handleManager = new HandleManager(this); - gui = new EditorGUI(this); - stateManager = new StateManager(this); - handleManager.init(); - saveManager = new SaveLoadManager(this); - dialogManager = new DialogManager(gui.shell); - - toBeEdited.submodel.addComponentRemovedListener(c -> identifierPerComponent.remove(c)); - - gui.open(); - } - - public ViewModelModifiable getSubmodel() - { - return toBeEdited.getSubmodelModifiable(); - } - - public Selection getSelection() - { - return selection; - } - - //TODO: Remove this error prone method: Relative offset may change between multiple moves, - //because Handles have different ways of responding to reqMove(...), causing strange behaviour - @Deprecated - public void moveSelection(double x, double y) - { - Point ref = selection.getTopLeft(); - Point snapped = new Point(x, y); - applySnapping(snapped); - - for (Handle c : selection) - { - double newX, newY; - newX = snapped.x + c.getPosX() - ref.x; - newY = snapped.y + c.getPosY() - ref.y; - c.reqMove(newX, newY); - } - } - - public void moveHandles(double x, double y, Map handleOffsetMap) - { - Point snapped = new Point(x, y); - applySnapping(snapped); - - for (Handle c : handleOffsetMap.keySet()) - { - Point offset = handleOffsetMap.get(c); - double newX, newY; - newX = snapped.x + offset.x; - newY = snapped.y + offset.y; - c.reqMove(newX, newY); - } - } - - public void deleteSelection() - { - selection.forEach(h -> h.reqDelete()); - selection.clear(); - } - - public void copy() - { - copyBuffer.clear(); - Point refPoint = selection.getTopLeft(); - for (Handle h : selection) - { - Optional cInfo = h.reqCopy(refPoint); - if(cInfo.isPresent()) - copyBuffer.add(cInfo.get()); - } - } - - public void paste(double x, double y) - { - selection.clear(); - for (ComponentInfo info : copyBuffer) - { - GUIComponent comp = addComponent(info.identifier, info.params); - ComponentHandle h = handleManager.getHandle(comp); - h.reqMove(info.relX, info.relY); - selection.add(h); - } - moveSelection(x, y); - } - - public void save() - { - saveManager.save(); - } - - public void addComponent(double x, double y) - { - GUIComponent c = addComponent(gui.getAddListSelected(), new JsonObject()); - selection.clear(); - selection.add(handleManager.getHandle(c)); - moveSelection(x, y); - } - - private GUIComponent addComponent(String identifier, JsonElement params) - { - GUIComponent comp = IndirectGUIComponentCreator.createComponent(toBeEdited.getSubmodelModifiable(), identifier, - params); - identifierPerComponent.put(comp, identifier); - return comp; - } - - public static String getIdentifier(GUIComponent c) - { - return identifierPerComponent.get(c); - } - - public void duplicate() - { - copy(); - Point origin = selection.getTopLeft(); - paste(origin.x + 20, origin.y + 20); - } - - private void applySnapping(Point newP) - { - switch (snapping) - { - case OFF: - break; - case ABSOLUTE: - newP.x -= newP.x % snapX; - newP.y -= newP.y % snapY; - break; - } - } - - public static class ComponentInfo - { - public final double relX, relY; - public final String identifier; - public final JsonElement params; - - public ComponentInfo(double relX, double relY, String identifier, JsonElement params) - { - this.relX = relX; - this.relY = relY; - this.identifier = identifier; - this.params = params; - } - } - - public Point getCanvasMousePosition() - { - //TODO - org.eclipse.swt.graphics.Point canvasLoc = gui.logicCanvas.getLocation(), - mouseLoc = gui.display.getCursorLocation(), shellLoc = gui.shell.getLocation(); - return new Point(mouseLoc.x - shellLoc.x - canvasLoc.x, mouseLoc.y - shellLoc.y - canvasLoc.y); - } - - public Point getWorldMousePosition() - { - return gui.logicCanvas.displayToWorldCoords(getCanvasMousePosition()); - } - - public void addWire(PinHandle a, PinHandle b) - { - new GUIWire(toBeEdited.getSubmodelModifiable(), a.getPin(), b.getPin(), new Point[0]); - } - - public static enum Snapping - { - OFF, ABSOLUTE; - } - - public static void main(String[] args) - { - SaveLoadManager.openLoadDialog(); - } -} diff --git a/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/EditorCanvas.java b/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/EditorCanvas.java deleted file mode 100644 index a6e8add5..00000000 --- a/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/EditorCanvas.java +++ /dev/null @@ -1,42 +0,0 @@ -package net.mograsim.logic.ui.editor; - -import java.util.Collection; - -import org.eclipse.swt.graphics.Color; -import org.eclipse.swt.widgets.Composite; - -import net.haspamelodica.swt.helper.gcs.TranslatedGC; -import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; -import net.mograsim.logic.ui.LogicUICanvas; -import net.mograsim.logic.ui.editor.handles.Handle; -import net.mograsim.preferences.Preferences; - -public class EditorCanvas extends LogicUICanvas -{ - private Collection handles; - - public EditorCanvas(Composite parent, int style, Editor editor) - { - super(parent, style, editor.toBeEdited.submodel); - - handles = editor.handleManager.getHandles(); - editor.handleManager.addHandleAddedListener(h -> - h.addRedrawListener(this::redrawThreadsafe)); - //Is this even necessary? The Handle should be finalized by the gc - editor.handleManager.addHandleRemovedListener(h -> h.removeRedrawListener(this::redrawThreadsafe)); - - addZoomedRenderer(gc -> - { - Rectangle visibleRegion = new Rectangle(-offX / zoom, -offY / zoom, gW / zoom, gH / zoom); - Color background = Preferences.current().getColor("net.mograsim.logic.ui.color.background"); - if (background != null) - setBackground(background);// this.setBackground, not gc.setBackground to have the background fill the - // canvas - - TranslatedGC tgc = new TranslatedGC(gc, 0.0d, 0.0d, 1 / editor.toBeEdited.getSubmodelScale(), false); - editor.toBeEdited.outlineRenderer.render(tgc, new Rectangle(-offX / zoom, -offY / zoom, gW / zoom, gH / zoom)); - - handles.forEach(h -> h.render(gc, visibleRegion)); - }); - } -} diff --git a/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/EditorGUI.java b/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/EditorGUI.java deleted file mode 100644 index fbc3aac1..00000000 --- a/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/EditorGUI.java +++ /dev/null @@ -1,78 +0,0 @@ -package net.mograsim.logic.ui.editor; - -import org.eclipse.swt.SWT; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Display; -import org.eclipse.swt.widgets.List; -import org.eclipse.swt.widgets.Shell; - -import net.haspamelodica.swt.helper.zoomablecanvas.helper.ZoomableCanvasOverlay; -import net.haspamelodica.swt.helper.zoomablecanvas.helper.ZoomableCanvasUserInput; -import net.mograsim.logic.ui.serializing.IndirectGUIComponentCreator; - -public class EditorGUI -{ - final Display display; - final Shell shell; - public final EditorCanvas logicCanvas; - private final List addList; - - public EditorGUI(Editor editor) - { - display = Display.getDefault(); - shell = new Shell(display); - - //Layout - GridLayout layout = new GridLayout(); - shell.setLayout(layout); - layout.numColumns = 2; - - GridData d = new GridData(); - d.grabExcessVerticalSpace = true; - d.verticalAlignment = SWT.FILL; - addList = new List(shell, SWT.FILL); - addList.setLayoutData(d); - refreshAddList(); - - d = new GridData(); - d.grabExcessHorizontalSpace = true; - d.horizontalAlignment = SWT.FILL; - d.grabExcessVerticalSpace = true; - d.verticalAlignment = SWT.FILL; - - logicCanvas = new EditorCanvas(shell, SWT.TRAIL, editor); - logicCanvas.setLayoutData(d); - - - new EditorUserInput(editor, this); - ZoomableCanvasUserInput userInput = new ZoomableCanvasUserInput(logicCanvas); - userInput.buttonDrag = 3; - userInput.buttonZoom = 2; - userInput.enableUserInput(); - new ZoomableCanvasOverlay(logicCanvas, null).enableScale(); - } - - public void refreshAddList() - { - addList.setItems(IndirectGUIComponentCreator.getStandardComponentIDs().toArray(String[]::new)); - addList.select(0); - } - - public String getAddListSelected() - { - String[] selection = addList.getSelection(); - if(selection.length == 0) - throw new IllegalStateException("Selection in the Add Component List may never be empty!"); - return selection[0]; - } - - public void open() - { - shell.open(); - while (!shell.isDisposed()) - if (!display.readAndDispatch()) - display.sleep(); - } - -} diff --git a/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/EditorUserInput.java b/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/EditorUserInput.java deleted file mode 100644 index 05a02775..00000000 --- a/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/EditorUserInput.java +++ /dev/null @@ -1,95 +0,0 @@ -package net.mograsim.logic.ui.editor; - -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.KeyEvent; -import org.eclipse.swt.events.KeyListener; -import org.eclipse.swt.events.MouseEvent; -import org.eclipse.swt.events.MouseListener; - -import net.haspamelodica.swt.helper.swtobjectwrappers.Point; - -public class EditorUserInput -{ - public EditorUserInput(Editor editor, EditorGUI gui) - { - gui.logicCanvas.addMouseListener(new MouseListener() - { - @Override - public void mouseDoubleClick(MouseEvent e) - { - // TODO Auto-generated method stub - } - - @Override - public void mouseDown(MouseEvent e) - { - Point clicked = editor.gui.logicCanvas.displayToWorldCoords(e.x, e.y); - switch (e.button) - { - case 1: - editor.handleManager.click(clicked, e.stateMask); - break; - } - - } - - @Override - public void mouseUp(MouseEvent e) {} - }); - - gui.logicCanvas.addMouseMoveListener((e) -> - { - Point dest = editor.gui.logicCanvas.displayToWorldCoords(e.x, e.y); - editor.stateManager.mouseMoved(dest.x, dest.y); - }); - - gui.logicCanvas.addKeyListener(new KeyListener() - { - - @Override - public void keyReleased(KeyEvent e) - { - // TODO Auto-generated method stub - - } - - @Override - public void keyPressed(KeyEvent e) - { - switch (e.keyCode) - { - case 'c': - if ((e.stateMask & SWT.CTRL) == SWT.CTRL) - editor.stateManager.copy(); - break; - case 'v': - if ((e.stateMask & SWT.CTRL) == SWT.CTRL) - editor.stateManager.paste(); - break; - case 'd': - if ((e.stateMask & SWT.SHIFT) == SWT.SHIFT) - editor.stateManager.duplicate(); - break; - case 'g': - editor.stateManager.grab(); - break; - case 'r': - editor.stateManager.delete(); - break; - case 's': - if ((e.stateMask & SWT.CTRL) == SWT.CTRL) - editor.save(); - break; - case 'a': - if ((e.stateMask & SWT.SHIFT) == SWT.SHIFT) - editor.stateManager.add(); - break; - case 'h': - editor.stateManager.boxSelect(); - break; - } - - } - }); - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/SaveLoadManager.java b/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/SaveLoadManager.java deleted file mode 100644 index c7060972..00000000 --- a/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/SaveLoadManager.java +++ /dev/null @@ -1,69 +0,0 @@ -package net.mograsim.logic.ui.editor; - -import java.io.IOException; - -import net.mograsim.logic.ui.editor.DialogManager.InteractiveDialog; -import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.logic.ui.serializing.DeserializedSubmodelComponent; -import net.mograsim.logic.ui.serializing.SubmodelComponentDeserializer; -import net.mograsim.logic.ui.util.JsonHandler; - -public class SaveLoadManager -{ - private String savePath = null; - private Editor editor; - - public SaveLoadManager(Editor editor) - { - this.editor = editor; - } - - public void save() - { - if (savePath == null) - openSaveAsDialog(); - else - innerSave(); - } - - public void openSaveAsDialog() - { - InteractiveDialog d = new InteractiveDialog("Save as...", "Save", "Cancel", "Path"); - d.open(); - - if(InteractiveDialog.InteractiveDialogState.ACCEPTED.equals(d.getState())) - { - savePath = d.getText(); - innerSave(); - } - } - - private void innerSave() - { - try - { - JsonHandler.writeJson(editor.toBeEdited.calculateParams(c -> - { - if (Editor.identifierPerComponent.containsKey(c)) - return Editor.identifierPerComponent.get(c); - return "class:" + c.getClass().getCanonicalName(); - }), savePath); - } catch (IOException e) - { - savePath = null; - System.err.println("Failed to save component!"); - e.printStackTrace(); - } - } - - public static void openLoadDialog() - { - InteractiveDialog load = new InteractiveDialog("Load Component...", "Load", "Cancel", "Path"); - load.open(); - if(InteractiveDialog.InteractiveDialogState.ACCEPTED.equals(load.getState())) - { - new Editor((DeserializedSubmodelComponent) SubmodelComponentDeserializer - .create(new ViewModelModifiable(), load.getText())); - } - } -} diff --git a/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/Selection.java b/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/Selection.java deleted file mode 100644 index ee197711..00000000 --- a/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/Selection.java +++ /dev/null @@ -1,132 +0,0 @@ -package net.mograsim.logic.ui.editor; - -import java.util.Collection; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.Map; -import java.util.Set; -import java.util.function.DoubleBinaryOperator; - -import net.haspamelodica.swt.helper.swtobjectwrappers.Point; -import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; -import net.mograsim.logic.ui.editor.handles.Handle; - -public class Selection implements Iterable -{ - private Set selection = new HashSet<>(); - - public Map calculateOffsets() - { - Map offsets = new HashMap<>(); - Point ref = getTopLeft(); - selection.forEach(h -> offsets.put(h, new Point(h.getPosX() - ref.x, h.getPosY() - ref.y))); - return offsets; - } - - public Rectangle getBounds() - { - Point pos1 = getTopLeft(); - Point pos2 = getBottomRight(); - return new Rectangle(pos1.x, pos1.y, pos2.x - pos1.x, pos2.y - pos1.y); - } - - public double getWidth() - {// TODO: Compute this more efficiently - return getTopRight().x - getTopLeft().x; - } - - public double getHeight() - { - return getBottomLeft().y - getTopLeft().y; - } - - public Point getTopLeft() - { - return getCorner(Double.MAX_VALUE, Double::min, r -> 0, Double.MAX_VALUE, Double::min, r -> 0); - } - - public Point getTopRight() - { - return getCorner(-Double.MAX_VALUE, Double::max, r -> r.width, Double.MAX_VALUE, Double::min, r -> 0); - } - - public Point getBottomLeft() - { - return getCorner(Double.MAX_VALUE, Double::min, r -> 0, -Double.MAX_VALUE, Double::max, r -> r.height); - } - - public Point getBottomRight() - { - return getCorner(-Double.MAX_VALUE, Double::max, r -> r.width, -Double.MAX_VALUE, Double::max, r -> r.height); - } - - public Point getCorner(double xIdentity, DoubleBinaryOperator xOp, Offset xOffset, double yIdentity, - DoubleBinaryOperator yOp, Offset yOffset) - { - double x = xIdentity, y = yIdentity; - for (Handle c : selection) - { - Rectangle bounds = c.getBounds(); - x = xOp.applyAsDouble(x, bounds.x + xOffset.computeOffset(bounds)); - y = yOp.applyAsDouble(y, bounds.y + yOffset.computeOffset(bounds)); - } - return new Point(x, y); - } - - private static interface Offset - { - public double computeOffset(Rectangle bounds); - } - - public void add(Handle h) - { - selection.add(h); - h.onSelect(); - } - - public void remove(Handle h) - { - selection.remove(h); - h.onDeselect(); - } - - public void clear() - { - selection.forEach(h -> h.onDeselect()); - selection.clear(); - } - - public int size() - { - return selection.size(); - } - - public boolean contains(Handle h) - { - return selection.contains(h); - } - - public void addAll(Collection handles) - { - handles.forEach(h -> h.onSelect()); - selection.addAll(handles); - } - - @Override - public Iterator iterator() - { - return selection.iterator(); - } - - @Override - public String toString() - { - return selection.toString(); - } - - public boolean isEmpty() - { - return selection.isEmpty(); - } -} diff --git a/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/handles/ComponentHandle.java b/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/handles/ComponentHandle.java deleted file mode 100644 index 7e897fce..00000000 --- a/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/handles/ComponentHandle.java +++ /dev/null @@ -1,96 +0,0 @@ -package net.mograsim.logic.ui.editor.handles; - -import java.util.Optional; - -import org.eclipse.swt.SWT; -import org.eclipse.swt.widgets.Display; - -import net.haspamelodica.swt.helper.gcs.GeneralGC; -import net.haspamelodica.swt.helper.swtobjectwrappers.Point; -import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; -import net.mograsim.logic.ui.editor.Editor; -import net.mograsim.logic.ui.editor.Editor.ComponentInfo; -import net.mograsim.logic.ui.model.components.GUIComponent; - -public class ComponentHandle extends Handle -{ - public final GUIComponent parent; - private final static double POS_OFFSET = 2.0d; - private final static double LENGTH_OFFSET = POS_OFFSET * 2; - boolean selected = false; - - public ComponentHandle(GUIComponent parent) - { - this.parent = parent; - Rectangle bounds = parent.getBounds(); - setSize(bounds.width, bounds.height); - parent.addComponentResizedListener((c) -> - { - Rectangle pBounds = c.getBounds(); - setSize(pBounds.width, pBounds.height); - }); - moveTo(parent.getPosX(), parent.getPosY()); - } - - @Override - protected void moveTo(double x, double y) - { - super.moveTo(x, y); - parent.moveTo(x, y); - } - - @Override - protected void render(GeneralGC gc) - { - if (selected) - { - gc.setLineWidth(2); - gc.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_YELLOW)); - Rectangle bounds = getBounds(); - bounds.x -= POS_OFFSET; - bounds.y -= POS_OFFSET; - bounds.width += LENGTH_OFFSET; - bounds.height += LENGTH_OFFSET; - gc.drawRectangle(bounds); - } - } - - @Override - public void reqMove(double x, double y) - { - moveTo(x, y); - } - - @Override - public void onSelect() - { - selected = true; - callRedrawListeners(); - } - - @Override - public void onDeselect() - { - selected = false; - callRedrawListeners(); - } - - @Override - public void reqDelete() - { - parent.destroy(); - } - - @Override - public Optional reqCopy(Point refPoint) - { - return Optional.of(new ComponentInfo(parent.getPosX() - refPoint.x, parent.getPosY() - refPoint.y, - Editor.getIdentifier(parent), parent.getParams())); - } - - @Override - public HandleType getType() - { - return HandleType.COMPONENT; - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/handles/CornerHandle.java b/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/handles/CornerHandle.java deleted file mode 100644 index f786fb3d..00000000 --- a/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/handles/CornerHandle.java +++ /dev/null @@ -1,71 +0,0 @@ -package net.mograsim.logic.ui.editor.handles; - -import org.eclipse.swt.SWT; -import org.eclipse.swt.widgets.Display; - -import net.haspamelodica.swt.helper.gcs.GeneralGC; -import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; -import net.mograsim.logic.ui.serializing.DeserializedSubmodelComponent; - -public class CornerHandle extends Handle -{ - private final static int LENGTH = 5; - private final DeserializedSubmodelComponent toBeEdited; - private boolean selected; - - public CornerHandle(DeserializedSubmodelComponent toBeEdited) - { - super(); - this.toBeEdited = toBeEdited; - setSize(LENGTH, LENGTH); - initPos(); - } - - @Override - protected void render(GeneralGC gc) - { - gc.setBackground(Display.getCurrent().getSystemColor(selected ? SWT.COLOR_YELLOW : SWT.COLOR_DARK_GREEN)); - gc.fillRectangle(getPosX(), getPosY(), LENGTH, LENGTH); - } - - private void initPos() - { - Rectangle bounds = toBeEdited.getBounds(); - double subScale = toBeEdited.getSubmodelScale(); - moveTo(bounds.width / subScale, bounds.height / subScale); - } - - @Override - public void reqMove(double x, double y) - { - moveTo(x, y); - } - - @Override - public void onSelect() - { - selected = true; - callRedrawListeners(); - } - - @Override - public void onDeselect() - { - selected = false; - callRedrawListeners(); - } - - @Override - protected void moveTo(double x, double y) - { - super.moveTo(x, y); - double subScale = toBeEdited.getSubmodelScale(); - toBeEdited.setSize(x * subScale, y * subScale); - } - - @Override - public HandleType getType() - { - return HandleType.CORNER; - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/handles/Handle.java b/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/handles/Handle.java deleted file mode 100644 index 66271079..00000000 --- a/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/handles/Handle.java +++ /dev/null @@ -1,142 +0,0 @@ -package net.mograsim.logic.ui.editor.handles; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Optional; - -import net.haspamelodica.swt.helper.gcs.GeneralGC; -import net.haspamelodica.swt.helper.swtobjectwrappers.Point; -import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; -import net.mograsim.logic.ui.editor.Editor.ComponentInfo; -import net.mograsim.logic.ui.editor.states.EditorState; - -public abstract class Handle -{ - private final Rectangle bounds; - private final Collection redrawListeners, destroyListeners; - - public Handle() - { - redrawListeners = new ArrayList<>(); - destroyListeners = new ArrayList<>(); - bounds = new Rectangle(0, 0, 0, 0); - callRedrawListeners(); - } - - final public void render(GeneralGC gc, Rectangle visibleRegion) - { - if (bounds.intersects(visibleRegion)) - render(gc); - } - - protected abstract void render(GeneralGC gc); - - protected void setSize(double width, double height) - { - bounds.width = width; - bounds.height = height; - callRedrawListeners(); - } - - protected void moveTo(double x, double y) - { - bounds.x = x; - bounds.y = y; - callRedrawListeners(); - } - - public Rectangle getBounds() - { - return new Rectangle(bounds.x, bounds.y, bounds.width, bounds.height); - } - - public void addRedrawListener(Runnable listener) - { - redrawListeners.add(listener); - } - - public void removeRedrawListener(Runnable listener) - { - redrawListeners.remove(listener); - } - - protected void callRedrawListeners() - { - redrawListeners.forEach(l -> l.run()); - } - - public double getPosX() - { - return bounds.x; - } - - public double getPosY() - { - return bounds.y; - } - - void destroy() - { - destroyListeners.forEach(l -> l.run()); - } - - public void addDestroyListener(Runnable listener) - { - redrawListeners.add(listener); - } - - public void removeDestroyListener(Runnable listener) - { - redrawListeners.remove(listener); - } - - public boolean contains(double x, double y) - { - return bounds.contains(x, y); - } - - public boolean contains(Point p) - { - return contains(p.x, p.y); - } - - /** - * Register a mouse click - * @param x Coordinate of the click in the world, not the display context - * @param y Coordinate of the click in the world, not the display context - * @return true if the click was consumed, false otherwise - */ - public boolean click(double x, double y, int stateMask, EditorState state) - { - if(contains(x, y)) - return state.clickedHandle(new HandleClickInfo(this, stateMask)); - return false; - } - - //@formatter:off - public void reqMove(double x, double y) {} - public void reqDelete() {} - public Optional reqCopy(Point refPoint) { return Optional.empty(); } - public void onSelect() {} - public void onDeselect() {} - //@formatter:on - - public abstract HandleType getType(); - - public static enum HandleType - { - COMPONENT, STATIC_PIN, INTERFACE_PIN, WIRE_POINT, WIRE, CORNER; - } - - public static class HandleClickInfo - { - public final int stateMask; - public final Handle clicked; - - HandleClickInfo(Handle clicked, int stateMask) - { - this.clicked = clicked; - this.stateMask = stateMask; - } - } -} diff --git a/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/handles/HandleManager.java b/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/handles/HandleManager.java deleted file mode 100644 index da4b2a00..00000000 --- a/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/handles/HandleManager.java +++ /dev/null @@ -1,390 +0,0 @@ -package net.mograsim.logic.ui.editor.handles; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.function.Consumer; -import java.util.stream.Collectors; - -import net.haspamelodica.swt.helper.swtobjectwrappers.Point; -import net.mograsim.logic.ui.editor.Editor; -import net.mograsim.logic.ui.editor.states.EditorState; -import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.logic.ui.model.components.GUIComponent; -import net.mograsim.logic.ui.model.wires.GUIWire; -import net.mograsim.logic.ui.model.wires.MovablePin; -import net.mograsim.logic.ui.model.wires.Pin; - -public class HandleManager -{ - private final Map handlePerPin; - private final Map handlePerInterfacePin; - private final Map> pointHandlesPerWire; - private final Map handlePerWire; - private final Set handles; - private final Set wirePointHandles; - private final Map handlePerComp; - - private final Collection> handleAddedListeners; - private final Collection> handleRemovedListeners; - private final Editor editor; - private boolean initialized = false; - - private CornerHandle cornerHandle; - - public HandleManager(Editor editor) - { - this.editor = editor; - handlePerPin = new HashMap<>(); - handlePerInterfacePin = new HashMap<>(); - pointHandlesPerWire = new HashMap<>(); - handlePerComp = new HashMap<>(); - handles = new HashSet<>(); - wirePointHandles = new HashSet<>(); - handlePerWire = new HashMap<>(); - - handleAddedListeners = new ArrayList<>(); - handleRemovedListeners = new ArrayList<>(); - - ViewModelModifiable model = editor.getSubmodel(); - - model.addComponentAddedListener(c -> registerComponent(c)); - - model.addComponentRemovedListener(c -> - { - removeComponentHandle(c); - }); - - model.addWireAddedListener(w -> - { - registerWire(w); - }); - - model.addWireRemovedListener(w -> - { - removeWireHandle(w); - removeWirePointHandles(w); - }); - } - - //////////////////////////////////////// - // -- Setting up initial handles -- /// - ////////////////////////////////////// - - public void init() - { - if (initialized) - System.err.println("Warning! HandleManager was already initialized."); - else - { - ViewModelModifiable model = editor.getSubmodel(); - - Iterator cIt = model.getComponents().iterator(); - // First GUIComponent is the Submodel Interface - registerInterfaceComponent(cIt.next()); - cIt.forEachRemaining(c -> registerComponent(c)); - model.getWires().forEach(w -> registerWire(w)); - addHandle(cornerHandle = new CornerHandle(editor.toBeEdited)); - } - } - - private void registerInterfaceComponent(GUIComponent c) - { - c.getPins().values().forEach(p -> addInterfacePinHandle(p)); - c.addPinAddedListener(p -> addInterfacePinHandle(p)); - c.addPinRemovedListener(p -> removeInterfacePinHandle(p)); - } - - private void registerComponent(GUIComponent c) - { - addComponentHandle(c); - - c.getPins().values().forEach(p -> addPinHandle(p)); - - c.addPinAddedListener(p -> addPinHandle(p)); - c.addPinRemovedListener(p -> removePinHandle(p)); - } - - private void registerWire(GUIWire wire) - { - wire.addPathChangedListener((w, diff) -> - { - if(diff != 0) - { - if(diff > 0) - { - for(int i = 0; i < diff; i++) - addWirePointHandle(w); - } - else - { - for(int i = 0; i > diff; i--) - { - removeLastWirePointHandle(wire); - } - } - - List wpHandles = pointHandlesPerWire.get(w); - int size = wpHandles.size(); - for(int i = 0; i < size; i++) - { - wpHandles.get(i).setIndex(i); - } - } - pointHandlesPerWire.get(w).forEach(h -> h.updatePos()); - }); - addWireHandle(wire); - if (wire.getPath() == null) - return; - for (int i = 0; i < wire.getPath().length; i++) - { - addWirePointHandle(wire); - } - } - - ///////////////////////////////////// - // -- Adding/Removing handles -- /// - /////////////////////////////////// - - private void addComponentHandle(GUIComponent c) - { - ComponentHandle h = new ComponentHandle(c); - handlePerComp.put(c, h); - addHandle(h); - } - - private void removeComponentHandle(GUIComponent c) - { - ComponentHandle h = handlePerComp.get(c); - handlePerComp.remove(c); - removeHandle(h); - } - - private void addPinHandle(Pin owner) - { - StaticPinHandle h = new StaticPinHandle(owner); - handlePerPin.put(owner, h); - addHandle(h); - } - - private void removePinHandle(Pin owner) - { - StaticPinHandle h = handlePerPin.get(owner); - handlePerPin.remove(owner); - removeHandle(h); - } - - private void addInterfacePinHandle(Pin p) - { - //The following is not an alternative to the cast, because the new pin is not yet in the map, when the listener is called - //editor.toBeEdited.getSubmodelMovablePins().get(p.name); - MovablePin pM = (MovablePin) p; - InterfacePinHandle h = new InterfacePinHandle(pM, editor.toBeEdited); - handlePerInterfacePin.put(pM, h); - addHandle(h); - } - - private void removeInterfacePinHandle(Pin p) - { - InterfacePinHandle h = handlePerInterfacePin.get(p); - handlePerInterfacePin.remove(p); - removeHandle(h); - } - - private void addWirePointHandle(GUIWire w) - { - List wireHandles = pointHandlesPerWire.get(w); - WirePointHandle h; - if (wireHandles != null) - wireHandles.add(h = new WirePointHandle(w, wireHandles.size())); - else - { - wireHandles = new ArrayList<>(); - h = new WirePointHandle(w, 0); - wireHandles.add(h); - pointHandlesPerWire.put(h.parent, wireHandles); - } - this.wirePointHandles.add(h); - addHandle(h); - } - - private void removeLastWirePointHandle(GUIWire owner) - { - Handle h = pointHandlesPerWire.get(owner).remove(0); - wirePointHandles.remove(h); - removeHandle(h); - } - - private void removeWirePointHandles(GUIWire owner) - { - if(!pointHandlesPerWire.containsKey(owner)) - return; - pointHandlesPerWire.get(owner).forEach(h -> - { - wirePointHandles.remove(h); - removeHandle(h); - }); - pointHandlesPerWire.remove(owner); - } - - private void addWireHandle(GUIWire w) - { - WireHandle h = new WireHandle(w); - handlePerWire.put(w, h); - addHandle(h); - } - - private void removeWireHandle(GUIWire w) - { - WireHandle h = handlePerWire.get(w); - handlePerWire.remove(w); - removeHandle(h); - } - - private void addHandle(Handle h) - { - handles.add(h); - callHandleAddedListeners(h); - } - - private void removeHandle(Handle h) - { - handles.remove(h); - callHandleRemovedListeners(h); - h.destroy(); - } - - public StaticPinHandle getHandle(Pin parent) - { - return handlePerPin.get(parent); - } - - public ComponentHandle getHandle(GUIComponent parent) - { - return handlePerComp.get(parent); - } - - public WireHandle getHandle(GUIWire parent) - { - return handlePerWire.get(parent); - } - - public Handle getInterfacePinHandle(Pin p) - { - return handlePerInterfacePin.get(p); - } - - /** - * @return A Collection of the registered {@link WirePointHandle}s of the specified wire - */ - public Collection getWirePointHandles(GUIWire parent) - { - return pointHandlesPerWire.get(parent).stream().collect(Collectors.toSet()); - } - - /** - * @return An unmodifiable view of all registered {@link Handle}s - */ - public Collection getHandles() - { - return Collections.unmodifiableCollection(handles); - } - - /** - * @return An unmodifiable view of all registered {@link StaticPinHandle}s - */ - public Collection getPinHandles() - { - return Collections.unmodifiableCollection(handlePerPin.values()); - } - - /** - * @return An unmodifiable view of all registered {@link InterfacePinHandle}s - */ - public Collection getInterfacePinHandles() - { - return Collections.unmodifiableCollection(handlePerInterfacePin.values()); - } - - /** - * @return An unmodifiable view of all registered {@link ComponentHandle}s - */ - public Collection getComponentHandles() - { - return Collections.unmodifiableCollection(handlePerComp.values()); - } - - /** - * @return An unmodifiable view of all registered {@link WireHandle}s - */ - public Collection getWireHandles() - { - return Collections.unmodifiableCollection(handlePerWire.values()); - } - - /** - * @return An unmodifiable view of all registered {@link WirePointHandle}s - */ - public Collection getWirePointHandles() - { - return Collections.unmodifiableSet(wirePointHandles); - } - - public void click(Point clicked, int stateMask) - { - EditorState entryState = editor.stateManager.getState(); - - if (!cornerHandle.click(clicked.x, clicked.y, stateMask, entryState)) - if (!click(handlePerPin.values(), clicked, entryState, stateMask)) - if (!click(handlePerInterfacePin.values(), clicked, entryState, stateMask)) - if (!click(getWirePointHandles(), clicked, entryState, stateMask)) - if (!click(handlePerComp.values(), clicked, entryState, stateMask)) - if (!click(getWireHandles(), clicked, entryState, stateMask)) - entryState.clickedEmpty(clicked, stateMask); - entryState.clicked(clicked, stateMask); - } - - private boolean click(Collection handles, Point clicked, EditorState state, int stateMask) - { - for (Handle h : handles) - if (h.click(clicked.x, clicked.y, stateMask, state)) - return true; - return false; - } - - public void addHandleAddedListener(Consumer c) - { - handleAddedListeners.add(c); - } - - private void callHandleAddedListeners(Handle added) - { - handleAddedListeners.forEach(l -> l.accept(added)); - } - - public void removeHandleAddedListener(Consumer c) - { - handleAddedListeners.remove(c); - } - - public void addHandleRemovedListener(Consumer c) - { - handleRemovedListeners.add(c); - } - - private void callHandleRemovedListeners(Handle removed) - { - handleRemovedListeners.forEach(l -> l.accept(removed)); - } - - public void removeHandleRemovedListener(Consumer c) - { - handleRemovedListeners.remove(c); - } -} diff --git a/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/handles/InterfacePinHandle.java b/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/handles/InterfacePinHandle.java deleted file mode 100644 index ddc02985..00000000 --- a/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/handles/InterfacePinHandle.java +++ /dev/null @@ -1,109 +0,0 @@ -package net.mograsim.logic.ui.editor.handles; - -import org.eclipse.swt.SWT; -import org.eclipse.swt.widgets.Display; - -import net.haspamelodica.swt.helper.gcs.GeneralGC; -import net.haspamelodica.swt.helper.swtobjectwrappers.Point; -import net.mograsim.logic.ui.model.wires.MovablePin; -import net.mograsim.logic.ui.model.wires.Pin; -import net.mograsim.logic.ui.serializing.DeserializedSubmodelComponent; - -public class InterfacePinHandle extends PinHandle -{ - private final static int CIRCLE_DIAM = 4, CIRCLE_RADIUS = CIRCLE_DIAM / 2, SELECTED_CIRCLE_OFFSET = 1, - SELECTED_CIRCLE_DIAM = SELECTED_CIRCLE_OFFSET * 2 + CIRCLE_DIAM; - private final MovablePin parent; - private final DeserializedSubmodelComponent owner; - private boolean selected = false; - - public InterfacePinHandle(MovablePin parent, DeserializedSubmodelComponent pinOwner) - { - super(); - this.parent = parent; - this.owner = pinOwner; - setSize(CIRCLE_DIAM, CIRCLE_DIAM); - initPos(); - } - - private void initPos() - { - Point pos = parent.getPos(); - moveTo(pos.x - CIRCLE_RADIUS, pos.y - CIRCLE_RADIUS); - } - - @Override - protected void render(GeneralGC gc) - { - double x = getPosX(), y = getPosY(); - - gc.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE)); - gc.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_RED)); - gc.drawText(parent.name, x + CIRCLE_DIAM, y + CIRCLE_DIAM, true); - if (selected) - { - gc.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_YELLOW)); - gc.drawOval(x - SELECTED_CIRCLE_OFFSET, y - SELECTED_CIRCLE_OFFSET, SELECTED_CIRCLE_DIAM, - SELECTED_CIRCLE_DIAM); - } - gc.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_RED)); - gc.fillOval(getPosX(), getPosY(), CIRCLE_DIAM, CIRCLE_DIAM); - } - - @Override - public void reqMove(double x, double y) - { - moveTo(x, y); - } - - @Override - public void onSelect() - { - selected = true; - callRedrawListeners(); - } - - @Override - public void onDeselect() - { - selected = false; - callRedrawListeners(); - } - - @Override - public void reqDelete() - { - owner.removeSubmodelInterface(parent.name); - } - - @Override - protected void moveTo(double x, double y) - { - super.moveTo(x, y); - parent.setRelPos(getCenterX(), getCenterY()); - } - - @Override - public double getCenterX() - { - return getPosX() + CIRCLE_RADIUS; - } - - @Override - public double getCenterY() - { - return getPosY() + CIRCLE_RADIUS; - } - - @Override - public HandleType getType() - { - return HandleType.INTERFACE_PIN; - } - - @Override - public Pin getPin() - { - return parent; - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/handles/PinHandle.java b/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/handles/PinHandle.java deleted file mode 100644 index a82ae103..00000000 --- a/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/handles/PinHandle.java +++ /dev/null @@ -1,15 +0,0 @@ -package net.mograsim.logic.ui.editor.handles; - -import net.mograsim.logic.ui.model.wires.Pin; - -public abstract class PinHandle extends Handle -{ - public PinHandle() - { - super(); - } - - public abstract Pin getPin(); - public abstract double getCenterX(); - public abstract double getCenterY(); -} diff --git a/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/handles/StaticPinHandle.java b/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/handles/StaticPinHandle.java deleted file mode 100644 index d0f02f42..00000000 --- a/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/handles/StaticPinHandle.java +++ /dev/null @@ -1,61 +0,0 @@ -package net.mograsim.logic.ui.editor.handles; - -import org.eclipse.swt.SWT; -import org.eclipse.swt.widgets.Display; - -import net.haspamelodica.swt.helper.gcs.GeneralGC; -import net.haspamelodica.swt.helper.swtobjectwrappers.Point; -import net.mograsim.logic.ui.model.wires.Pin; - -public class StaticPinHandle extends PinHandle -{ - private final static int CIRCLE_DIAM = 2; - private final static int CIRCLE_RADIUS = 1; - private final Pin parent; - - public StaticPinHandle(Pin parent) - { - super(); - this.parent = parent; - setSize(CIRCLE_DIAM, CIRCLE_DIAM); - parent.addPinMovedListener((p) -> updatePos()); - updatePos(); - } - - @Override - protected void render(GeneralGC gc) - { - gc.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_DARK_GREEN)); - gc.fillOval(getPosX(), getPosY(), CIRCLE_DIAM, CIRCLE_DIAM); - } - - private void updatePos() - { - Point pos = parent.getPos(); - moveTo(pos.x - CIRCLE_RADIUS, pos.y - CIRCLE_RADIUS); - } - - @Override - public double getCenterX() - { - return getPosX() + CIRCLE_RADIUS; - } - - @Override - public double getCenterY() - { - return getPosY() + CIRCLE_RADIUS; - } - - @Override - public HandleType getType() - { - return HandleType.STATIC_PIN; - } - - @Override - public Pin getPin() - { - return parent; - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/handles/WireHandle.java b/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/handles/WireHandle.java deleted file mode 100644 index fc905518..00000000 --- a/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/handles/WireHandle.java +++ /dev/null @@ -1,161 +0,0 @@ -package net.mograsim.logic.ui.editor.handles; - -import java.util.Optional; - -import org.eclipse.swt.SWT; -import org.eclipse.swt.widgets.Display; - -import net.haspamelodica.swt.helper.gcs.GeneralGC; -import net.haspamelodica.swt.helper.swtobjectwrappers.Point; -import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; -import net.mograsim.logic.ui.editor.states.EditorState; -import net.mograsim.logic.ui.model.wires.GUIWire; -import net.mograsim.logic.ui.model.wires.GUIWire.PathChangedListener; - -public class WireHandle extends Handle implements PathChangedListener -{ - private boolean selected = false; - private final static double WIDTH = 2.0; - private final static double WIDTH_SQUARED = WIDTH * WIDTH; - public final GUIWire parent; - - public WireHandle(GUIWire parent) - { - this.parent = parent; - parent.addPathChangedListener(this); - updateBounds(); - } - - @Override - void destroy() - { - super.destroy(); - parent.removePathChangedListener(this); - } - - public void updateBounds() - { - Rectangle r = parent.getBounds(); - moveTo(r.x, r.y); - setSize(r.width, r.height); - } - - @Override - public void render(GeneralGC gc) - { - if(selected) - { - gc.setLineWidth(WIDTH); - gc.setForeground(Display.getDefault().getSystemColor(SWT.COLOR_YELLOW)); - gc.drawPolyline(parent.getEffectivePath()); - } - } - - @Override - public void onSelect() - { - selected = true; - callRedrawListeners(); - } - - @Override - public void onDeselect() - { - selected = false; - callRedrawListeners(); - } - - @Override - public void reqDelete() - { - parent.destroy(); - } - - @Override - public boolean contains(double x, double y) - { - return click(parent, x, y).isPresent(); - } - - @Override - public boolean click(double x, double y, int stateMask, EditorState state) - { - Optional op = click(parent, x, y); - if(op.isEmpty()) - return false; - WireClickData data = op.get(); - return state.clickedHandle(new WireHandleClickInfo(this, data.segment, data.pos, stateMask)); - } - - public static class WireHandleClickInfo extends HandleClickInfo - { - public final int segment; - public final Point posOnWire; - WireHandleClickInfo(WireHandle clicked, int segment, Point posOnWire, int stateMask) - { - super(clicked, stateMask); - this.segment = segment; - this.posOnWire = posOnWire; - } - - } - - private static Optional click(GUIWire w, double x, double y) - { - Rectangle modifiedBounds = w.getBounds(); - modifiedBounds.x -= WIDTH; - modifiedBounds.y -= WIDTH; - modifiedBounds.width += WIDTH * 2; - modifiedBounds.height += WIDTH * 2; - if (modifiedBounds.contains(x, y)) - { - double[] effectivePath = w.getEffectivePath(); - for (int i = 3; i < effectivePath.length; i += 2) - { - double a1 = effectivePath[i - 3], a2 = effectivePath[i - 2], b1 = effectivePath[i - 1], - b2 = effectivePath[i], r1 = b2 - a2, r2 = a1 - b1; - - double f = ((x - a1) * r2 + (a2 - y) * r1) / (-r2 * r2 - r1 * r1); - if (f >= 0 && f <= 1) - { - double e1 = a1 + f * (b1 - a1), e2 = a2 + f * (b2 - a2); - r1 = e1 - x; - r2 = e2 - y; - if (r1 * r1 + r2 * r2 <= WIDTH_SQUARED) - return Optional.of(new WireClickData(new Point(e1, e2), (i / 2) - 1)); - } - } - } - return Optional.empty(); - } - - private final static class WireClickData - { - WireClickData(Point pos, int segment) - { - this.pos = pos; - this.segment = segment; - } - - /** - * Position on the wire that is closest to the click - */ - public final Point pos; - /** - * Segment of the wire that the {@link Point} pos is on - */ - public final int segment; - } - - @Override - public HandleType getType() - { - return HandleType.WIRE; - } - - @Override - public void pathChanged(GUIWire wire, int diff) - { - updateBounds(); - } -} diff --git a/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/handles/WirePointHandle.java b/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/handles/WirePointHandle.java deleted file mode 100644 index 527bb9f0..00000000 --- a/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/handles/WirePointHandle.java +++ /dev/null @@ -1,85 +0,0 @@ -package net.mograsim.logic.ui.editor.handles; - -import org.eclipse.swt.SWT; -import org.eclipse.swt.widgets.Display; - -import net.haspamelodica.swt.helper.gcs.GeneralGC; -import net.haspamelodica.swt.helper.swtobjectwrappers.Point; -import net.mograsim.logic.core.wires.Wire; -import net.mograsim.logic.ui.model.wires.GUIWire; - -public class WirePointHandle extends Handle -{ - private final static int END_OFFSET = 4; - private boolean selected = false; - public final GUIWire parent; - - private int pointIndex; - - public WirePointHandle(GUIWire parent, int pointIndex) - { - super(); - this.parent = parent; - this.pointIndex = pointIndex; - setSize(END_OFFSET, END_OFFSET); - Point pathPoint = parent.getPathPoint(pointIndex); - moveTo(pathPoint.x, pathPoint.y); - } - - void updatePos() - { - Point p = parent.getPathPoint(pointIndex); - moveTo(p.x, p.y); - } - - @Override - public void render(GeneralGC gc) - { - gc.setLineWidth(1.0); - gc.setForeground(Display.getDefault().getSystemColor(selected ? SWT.COLOR_YELLOW : SWT.COLOR_BLUE)); - gc.drawLine(getPosX(), getPosY(), getPosX() + END_OFFSET, getPosY() + END_OFFSET); - } - - @Override - public void reqMove(double x, double y) - { - parent.setPathPoint(new Point(x, y), pointIndex); - } - - @Override - public void onSelect() - { - selected = true; - callRedrawListeners(); - } - - @Override - public void onDeselect() - { - selected = false; - callRedrawListeners(); - } - - @Override - public void reqDelete() - { - parent.removePathPoint(pointIndex); - } - - @Override - public HandleType getType() - { - return HandleType.WIRE_POINT; - } - - /** - * Sets the index of the {@link Point} within the parent {@link Wire}s path that is controlled by this handle - * @param index Index of the Point in the Wires path. - * @throws IndexOutOfBoundsException - */ - public void setIndex(int index) - { - this.pointIndex = index; - updatePos(); - } -} diff --git a/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/states/BoxSelectionState.java b/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/states/BoxSelectionState.java deleted file mode 100644 index 5694bddc..00000000 --- a/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/states/BoxSelectionState.java +++ /dev/null @@ -1,91 +0,0 @@ -package net.mograsim.logic.ui.editor.states; - -import org.eclipse.swt.SWT; -import org.eclipse.swt.widgets.Display; - -import net.haspamelodica.swt.helper.swtobjectwrappers.Point; -import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; -import net.haspamelodica.swt.helper.zoomablecanvas.ZoomableCanvas.ZoomedRenderer; -import net.mograsim.logic.ui.editor.Editor; -import net.mograsim.logic.ui.editor.Selection; -import net.mograsim.logic.ui.editor.handles.Handle; - -public class BoxSelectionState extends EditorState -{ - private Point origin; - private double mX, mY; - - private final ZoomedRenderer boxRenderer = gc -> - { - if (origin != null) - { - gc.setLineWidth(0.5); - gc.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_DARK_YELLOW)); - gc.drawRectangle(origin.x, origin.y, mX - origin.x, mY - origin.y); - } - }; - - public BoxSelectionState(Editor editor, StateManager manager) - { - super(editor, manager); - } - - @Override - public void onEntry() - { - editor.gui.logicCanvas.addZoomedRenderer(boxRenderer); - editor.gui.logicCanvas.redrawThreadsafe(); - } - - @Override - public void onExit() - { - editor.gui.logicCanvas.removeZoomedRenderer(boxRenderer); - editor.gui.logicCanvas.redrawThreadsafe(); - } - - @Override - public void boxSelect() - { - manager.setState(new SelectionState(editor, manager)); - } - - @Override - public void clicked(Point clicked, int stateMask) - { - if (origin == null) - { - origin = new Point(clicked.x, clicked.y); - mX = clicked.x; - mY = clicked.y; - } else - { - Selection s = editor.getSelection(); - s.clear(); - boolean leftToRight = mX > origin.x, topToBottom = mY > origin.y; - double x = leftToRight ? origin.x : mX, y = topToBottom ? origin.y : mY, - width = leftToRight ? mX - origin.x : origin.x - mX, - height = topToBottom ? mY - origin.y : origin.y - mY; - - Rectangle selected = new Rectangle(x, y, width, height); - for (Handle h : editor.handleManager.getHandles()) - { - Rectangle hBounds = h.getBounds(); - if (selected.contains(hBounds.x, hBounds.y) - && selected.contains(hBounds.x + hBounds.width, hBounds.y + hBounds.height)) - { - s.add(h); - } - } - manager.setState(new SelectionState(editor, manager)); - } - } - - @Override - public void mouseMoved(double x, double y) - { - mX = x; - mY = y; - editor.gui.logicCanvas.redrawThreadsafe(); - } -} diff --git a/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/states/CreateWireState.java b/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/states/CreateWireState.java deleted file mode 100644 index 93a3cfaa..00000000 --- a/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/states/CreateWireState.java +++ /dev/null @@ -1,85 +0,0 @@ -package net.mograsim.logic.ui.editor.states; - -import org.eclipse.swt.SWT; -import org.eclipse.swt.widgets.Display; -import org.eclipse.swt.widgets.Shell; - -import net.haspamelodica.swt.helper.swtobjectwrappers.Point; -import net.haspamelodica.swt.helper.zoomablecanvas.ZoomableCanvas.ZoomedRenderer; -import net.mograsim.logic.ui.editor.Editor; -import net.mograsim.logic.ui.editor.handles.PinHandle; -import net.mograsim.logic.ui.editor.handles.Handle.HandleClickInfo; - -public class CreateWireState extends EditorState -{ - private final PinHandle origin; - private double mX, mY; - private ZoomedRenderer drawLine; - - public CreateWireState(Editor session, StateManager manager, PinHandle origin) - { - super(session, manager); - this.origin = origin; - mX = origin.getCenterX(); - mY = origin.getCenterY(); - } - - @Override - public void mouseMoved(double x, double y) - { - this.mX = x; - this.mY = y; - editor.gui.logicCanvas.redraw(); - } - - @Override - public void onEntry() - { - editor.getSelection().clear(); - drawLine = gc -> - { - gc.setLineWidth(1); - gc.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_GREEN)); - gc.drawLine((int) origin.getCenterX(), (int) origin.getCenterY(), (int) mX, (int) mY); - }; - editor.gui.logicCanvas.addZoomedRenderer(drawLine); - editor.gui.logicCanvas.redraw(); - } - - @Override - public void onExit() - { - editor.gui.logicCanvas.removeZoomedRenderer(drawLine); - editor.gui.logicCanvas.redraw(); - } - - @Override - public boolean clickedHandle(HandleClickInfo handleClickInfo) - { - switch (handleClickInfo.clicked.getType()) - { - case INTERFACE_PIN: - case STATIC_PIN: - try - { - editor.addWire(origin, (PinHandle) handleClickInfo.clicked); - } - catch (IllegalArgumentException e) - { - Shell tmp = new Shell(Display.getCurrent()); - editor.dialogManager.openWarningDialog("Warning!", e.getMessage()); - tmp.dispose(); - } - break; - default: - return false; - } - return true; - } - - @Override - public void clicked(Point clicked, int stateMask) - { - manager.setState(new SelectionState(editor, manager)); - } -} diff --git a/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/states/EditorState.java b/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/states/EditorState.java deleted file mode 100644 index 2b96d3bb..00000000 --- a/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/states/EditorState.java +++ /dev/null @@ -1,36 +0,0 @@ -package net.mograsim.logic.ui.editor.states; - -import net.haspamelodica.swt.helper.swtobjectwrappers.Point; -import net.mograsim.logic.ui.editor.Editor; -import net.mograsim.logic.ui.editor.handles.Handle.HandleClickInfo; -import net.mograsim.logic.ui.editor.handles.InterfacePinHandle; - -public abstract class EditorState -{ - protected final Editor editor; - protected final StateManager manager; - - public EditorState(Editor session, StateManager manager) - { - this.editor = session; - this.manager = manager; - } - - //@formatter:off - public void add() {} - public void delete() {} - public void copy() {} - public void paste() {} - public void duplicate() {} - public void grab() {} - public void mouseMoved(double x, double y) {} - public void select(Point pos, boolean additive) {} - public void boxSelect() {} - public void onEntry() {} - public void onExit() {} - public void clicked(InterfacePinHandle interfacePinHandle, int stateMask) {} - public void clickedEmpty(Point clicked, int stateMask) {} - public void clicked(Point clicked, int stateMask) {} - public boolean clickedHandle(HandleClickInfo handleClickInfo) { return false; } - //@formatter:on -} diff --git a/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/states/GrabState.java b/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/states/GrabState.java deleted file mode 100644 index 75a378db..00000000 --- a/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/states/GrabState.java +++ /dev/null @@ -1,41 +0,0 @@ -package net.mograsim.logic.ui.editor.states; - -import java.util.Map; - -import net.haspamelodica.swt.helper.swtobjectwrappers.Point; -import net.mograsim.logic.ui.editor.Editor; -import net.mograsim.logic.ui.editor.handles.Handle; - -public class GrabState extends EditorState -{ - private Map offsets; - - public GrabState(Editor editor, StateManager manager) - { - super(editor, manager); - } - - @Override - public void onEntry() - { - offsets = editor.getSelection().calculateOffsets(); - } - - @Override - public void grab() - { - manager.setState(new SelectionState(editor, manager)); - } - - @Override - public void mouseMoved(double x, double y) - { - editor.moveHandles(x, y, offsets); - } - - @Override - public void clicked(Point clicked, int stateMask) - { - manager.setState(new SelectionState(editor, manager)); - } -} diff --git a/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/states/SelectionState.java b/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/states/SelectionState.java deleted file mode 100644 index f9a4b76b..00000000 --- a/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/states/SelectionState.java +++ /dev/null @@ -1,181 +0,0 @@ -package net.mograsim.logic.ui.editor.states; - -import org.eclipse.swt.SWT; -import org.eclipse.swt.widgets.Display; - -import net.haspamelodica.swt.helper.swtobjectwrappers.Point; -import net.haspamelodica.swt.helper.zoomablecanvas.ZoomableCanvas.ZoomedRenderer; -import net.mograsim.logic.ui.editor.Editor; -import net.mograsim.logic.ui.editor.Selection; -import net.mograsim.logic.ui.editor.DialogManager.InteractiveDialog; -import net.mograsim.logic.ui.editor.handles.Handle; -import net.mograsim.logic.ui.editor.handles.Handle.HandleClickInfo; -import net.mograsim.logic.ui.editor.handles.PinHandle; -import net.mograsim.logic.ui.editor.handles.WireHandle; -import net.mograsim.logic.ui.editor.handles.WireHandle.WireHandleClickInfo; -import net.mograsim.logic.ui.model.wires.MovablePin; -import net.mograsim.logic.ui.model.wires.Pin; - -public class SelectionState extends EditorState -{ - private final ZoomedRenderer outlineRenderer = gc -> - { - if (editor.getSelection().size() > 1) - { - gc.setLineWidth(1); - gc.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_DARK_YELLOW)); - gc.drawRectangle(editor.getSelection().getBounds()); - } - }; - - public SelectionState(Editor editor, StateManager manager) - { - super(editor, manager); - } - - @Override - public void add() - { - Point curserPos = editor.getWorldMousePosition(); - editor.addComponent(curserPos.x, curserPos.y); - } - - @Override - public void delete() - { - editor.deleteSelection(); - } - - @Override - public void copy() - { - editor.copy(); - } - - @Override - public void paste() - { - Point curserPos = editor.getWorldMousePosition(); - editor.paste(curserPos.x, curserPos.y); - } - - @Override - public void duplicate() - { - editor.duplicate(); - } - - @Override - public void grab() - { - if (!editor.getSelection().isEmpty()) - manager.setState(new GrabState(editor, manager)); - } - - @Override - public void boxSelect() - { - manager.setState(new BoxSelectionState(editor, manager)); - } - - @Override - public void onEntry() - { - editor.gui.logicCanvas.addZoomedRenderer(outlineRenderer); - editor.gui.logicCanvas.redrawThreadsafe(); - } - - @Override - public void onExit() - { - editor.gui.logicCanvas.removeZoomedRenderer(outlineRenderer); - editor.gui.logicCanvas.redrawThreadsafe(); - } - - @Override - public void clickedEmpty(Point clicked, int stateMask) - { - editor.getSelection().clear(); - if ((stateMask & SWT.ALT) == SWT.ALT) - { - InteractiveDialog pinAdd = new InteractiveDialog("Add Pin...", "Add", "Cancel", "Name", "Logic Width"); - pinAdd.open(); - if (pinAdd.getState().equals(InteractiveDialog.InteractiveDialogState.ACCEPTED)) - { - try - { - Pin p = editor.toBeEdited.addSubmodelInterface(new MovablePin(editor.toBeEdited, pinAdd.getText(), - Integer.parseInt(pinAdd.getText(1)), clicked.x, clicked.y)); - editor.handleManager.getInterfacePinHandle(p).reqMove(clicked.x, clicked.y); - } catch (NumberFormatException e) - { - editor.dialogManager.openWarningDialog("Failed to create Pin!", "Bit width must be a number!"); - } - } - } - } - - @Override - public boolean clickedHandle(HandleClickInfo handleClickInfo) - { - switch (handleClickInfo.clicked.getType()) - { - case INTERFACE_PIN: - if ((handleClickInfo.stateMask & SWT.CTRL) == SWT.CTRL) - { - manager.setState(new CreateWireState(editor, manager, (PinHandle) handleClickInfo.clicked)); - break; - } - case CORNER: - case COMPONENT: - case WIRE_POINT: - boolean additive = (handleClickInfo.stateMask & SWT.SHIFT) == SWT.SHIFT; - select(handleClickInfo.clicked, additive); - break; - case STATIC_PIN: - if ((handleClickInfo.stateMask & SWT.CTRL) == SWT.CTRL) - manager.setState(new CreateWireState(editor, manager, (PinHandle) handleClickInfo.clicked)); - else - return false; - break; - case WIRE: - if ((handleClickInfo.stateMask & SWT.CTRL) == SWT.CTRL) - { - WireHandleClickInfo info = (WireHandleClickInfo) handleClickInfo; - WireHandle clicked = (WireHandle) info.clicked; - clicked.parent.insertPathPoint(info.posOnWire, info.segment); - } else - { - additive = (handleClickInfo.stateMask & SWT.SHIFT) == SWT.SHIFT; - select(handleClickInfo.clicked, additive); - } - break; - default: - return false; - } - return true; - } - - private void select(Handle h, boolean additive) - { - Selection sel = editor.getSelection(); - if (sel.contains(h)) - if (additive) - sel.remove(h); - else - { - if (editor.getSelection().size() > 1) - { - sel.clear(); - sel.add(h); - } else - sel.clear(); - } - else - { - if (!additive) - sel.clear(); - sel.add(h); - } - } -} diff --git a/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/states/StateManager.java b/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/states/StateManager.java deleted file mode 100644 index 5f16765d..00000000 --- a/net.mograsim.logic.ui.editor/src/net/mograsim/logic/ui/editor/states/StateManager.java +++ /dev/null @@ -1,78 +0,0 @@ -package net.mograsim.logic.ui.editor.states; - -import net.haspamelodica.swt.helper.swtobjectwrappers.Point; -import net.mograsim.logic.ui.editor.Editor; -import net.mograsim.logic.ui.editor.handles.Handle.HandleClickInfo; - -public class StateManager -{ - private EditorState state; - - public StateManager(Editor session) - { - state = new SelectionState(session, this); - state.onEntry(); - } - - public EditorState getState() - { - return state; - } - - public void setState(EditorState state) - { - this.state.onExit(); - this.state = state; - state.onEntry(); - } - - public void add() - { - state.add(); - } - - public void delete() - { - state.delete(); - } - - public void copy() - { - state.copy(); - } - - public void paste() - { - state.paste(); - } - - public void duplicate() - { - state.duplicate(); - } - - public void grab() - { - state.grab(); - } - - public void mouseMoved(double x, double y) - { - state.mouseMoved(x, y); - } - - public void select(Point pos, boolean additive) - { - state.select(pos, additive); - } - - public boolean clickedHandle(HandleClickInfo handleClickInfo) - { - return state.clickedHandle(handleClickInfo); - } - - public void boxSelect() - { - state.boxSelect(); - } -} diff --git a/net.mograsim.logic.ui/.classpath b/net.mograsim.logic.ui/.classpath deleted file mode 100644 index 4a00becd..00000000 --- a/net.mograsim.logic.ui/.classpath +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/net.mograsim.logic.ui/.gitignore b/net.mograsim.logic.ui/.gitignore deleted file mode 100644 index ae3c1726..00000000 --- a/net.mograsim.logic.ui/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/bin/ diff --git a/net.mograsim.logic.ui/.project b/net.mograsim.logic.ui/.project deleted file mode 100644 index 8ce0afd8..00000000 --- a/net.mograsim.logic.ui/.project +++ /dev/null @@ -1,30 +0,0 @@ - - - net.mograsim.logic.ui - - - net.mograsim.logic.core - SWTZoomableCanvas - - - - org.eclipse.jdt.core.javabuilder - - - - - org.eclipse.pde.ManifestBuilder - - - - - org.eclipse.pde.SchemaBuilder - - - - - - org.eclipse.jdt.core.javanature - org.eclipse.pde.PluginNature - - diff --git a/net.mograsim.logic.ui/.settings/org.eclipse.jdt.core.prefs b/net.mograsim.logic.ui/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index f8bd225a..00000000 --- a/net.mograsim.logic.ui/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,456 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled -org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore -org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull -org.eclipse.jdt.core.compiler.annotation.nonnull.secondary= -org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault -org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary= -org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable -org.eclipse.jdt.core.compiler.annotation.nullable.secondary= -org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=11 -org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=11 -org.eclipse.jdt.core.compiler.debug.lineNumber=generate -org.eclipse.jdt.core.compiler.debug.localVariable=generate -org.eclipse.jdt.core.compiler.debug.sourceFile=generate -org.eclipse.jdt.core.compiler.problem.APILeak=warning -org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.autoboxing=ignore -org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning -org.eclipse.jdt.core.compiler.problem.deadCode=warning -org.eclipse.jdt.core.compiler.problem.deprecation=warning -org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled -org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled -org.eclipse.jdt.core.compiler.problem.discouragedReference=warning -org.eclipse.jdt.core.compiler.problem.emptyStatement=warning -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=warning -org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning -org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled -org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore -org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning -org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning -org.eclipse.jdt.core.compiler.problem.forbiddenReference=error -org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning -org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled -org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning -org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning -org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning -org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore -org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error -org.eclipse.jdt.core.compiler.problem.missingDefaultCase=warning -org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=info -org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled -org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=warning -org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning -org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled -org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning -org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=warning -org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning -org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning -org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore -org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning -org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning -org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error -org.eclipse.jdt.core.compiler.problem.nullReference=warning -org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error -org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning -org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning -org.eclipse.jdt.core.compiler.problem.parameterAssignment=warning -org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning -org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=error -org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning -org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=warning -org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning -org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning -org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning -org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=info -org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning -org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=info -org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=warning -org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled -org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning -org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled -org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled -org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled -org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=warning -org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning -org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning -org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=disabled -org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning -org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning -org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=warning -org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning -org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning -org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled -org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info -org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning -org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning -org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore -org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=info -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled -org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=warning -org.eclipse.jdt.core.compiler.problem.unusedImport=warning -org.eclipse.jdt.core.compiler.problem.unusedLabel=warning -org.eclipse.jdt.core.compiler.problem.unusedLocal=warning -org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=warning -org.eclipse.jdt.core.compiler.problem.unusedParameter=warning -org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled -org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled -org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled -org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning -org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=warning -org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning -org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning -org.eclipse.jdt.core.compiler.release=enabled -org.eclipse.jdt.core.compiler.source=11 -org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false -org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647 -org.eclipse.jdt.core.formatter.align_type_members_on_columns=false -org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false -org.eclipse.jdt.core.formatter.align_with_spaces=false -org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16 -org.eclipse.jdt.core.formatter.alignment_for_assignment=0 -org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16 -org.eclipse.jdt.core.formatter.alignment_for_compact_if=16 -org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16 -org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80 -org.eclipse.jdt.core.formatter.alignment_for_conditional_expression_chain=0 -org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16 -org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16 -org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0 -org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16 -org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0 -org.eclipse.jdt.core.formatter.alignment_for_module_statements=16 -org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16 -org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16 -org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0 -org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_relational_operator=0 -org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80 -org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16 -org.eclipse.jdt.core.formatter.alignment_for_shift_operator=0 -org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16 -org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0 -org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0 -org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16 -org.eclipse.jdt.core.formatter.blank_lines_after_imports=1 -org.eclipse.jdt.core.formatter.blank_lines_after_package=1 -org.eclipse.jdt.core.formatter.blank_lines_before_field=0 -org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0 -org.eclipse.jdt.core.formatter.blank_lines_before_imports=1 -org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1 -org.eclipse.jdt.core.formatter.blank_lines_before_method=1 -org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1 -org.eclipse.jdt.core.formatter.blank_lines_before_package=0 -org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1 -org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1 -org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=next_line -org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=next_line -org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_block=next_line -org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=next_line -org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=next_line -org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=next_line -org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=next_line -org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=next_line -org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=next_line -org.eclipse.jdt.core.formatter.brace_position_for_switch=next_line -org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=next_line -org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true -org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false -org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false -org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false -org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true -org.eclipse.jdt.core.formatter.comment.format_block_comments=true -org.eclipse.jdt.core.formatter.comment.format_header=false -org.eclipse.jdt.core.formatter.comment.format_html=true -org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true -org.eclipse.jdt.core.formatter.comment.format_line_comments=true -org.eclipse.jdt.core.formatter.comment.format_source_code=true -org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false -org.eclipse.jdt.core.formatter.comment.indent_root_tags=false -org.eclipse.jdt.core.formatter.comment.indent_tag_description=false -org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert -org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert -org.eclipse.jdt.core.formatter.comment.line_length=140 -org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true -org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true -org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false -org.eclipse.jdt.core.formatter.compact_else_if=true -org.eclipse.jdt.core.formatter.continuation_indentation=2 -org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2 -org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off -org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on -org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false -org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true -org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_empty_lines=false -org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true -org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false -org.eclipse.jdt.core.formatter.indentation.size=4 -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=insert -org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=insert -org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert -org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert -org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert -org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert -org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert -org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert -org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert -org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert -org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert -org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert -org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert -org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.join_lines_in_comments=true -org.eclipse.jdt.core.formatter.join_wrapped_lines=true -org.eclipse.jdt.core.formatter.keep_annotation_declaration_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_anonymous_type_declaration_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_code_block_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false -org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false -org.eclipse.jdt.core.formatter.keep_enum_constant_declaration_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_enum_declaration_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_if_then_body_block_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false -org.eclipse.jdt.core.formatter.keep_lambda_body_block_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_loop_body_block_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_method_body_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false -org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false -org.eclipse.jdt.core.formatter.keep_simple_getter_setter_on_one_line=false -org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false -org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false -org.eclipse.jdt.core.formatter.keep_type_declaration_on_one_line=one_line_never -org.eclipse.jdt.core.formatter.lineSplit=140 -org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false -org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false -org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0 -org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1 -org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines -org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true -org.eclipse.jdt.core.formatter.tabulation.char=tab -org.eclipse.jdt.core.formatter.tabulation.size=4 -org.eclipse.jdt.core.formatter.use_on_off_tags=true -org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false -org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true -org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false -org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true -org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true -org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true -org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true -org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true -org.eclipse.jdt.core.formatter.wrap_before_relational_operator=true -org.eclipse.jdt.core.formatter.wrap_before_shift_operator=true -org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true -org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true -org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter diff --git a/net.mograsim.logic.ui/.settings/org.eclipse.jdt.ui.prefs b/net.mograsim.logic.ui/.settings/org.eclipse.jdt.ui.prefs deleted file mode 100644 index 8f2c0a47..00000000 --- a/net.mograsim.logic.ui/.settings/org.eclipse.jdt.ui.prefs +++ /dev/null @@ -1,63 +0,0 @@ -eclipse.preferences.version=1 -editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true -formatter_profile=_MoGraSim -formatter_settings_version=16 -sp_cleanup.add_default_serial_version_id=true -sp_cleanup.add_generated_serial_version_id=false -sp_cleanup.add_missing_annotations=true -sp_cleanup.add_missing_deprecated_annotations=true -sp_cleanup.add_missing_methods=false -sp_cleanup.add_missing_nls_tags=false -sp_cleanup.add_missing_override_annotations=true -sp_cleanup.add_missing_override_annotations_interface_methods=true -sp_cleanup.add_serial_version_id=false -sp_cleanup.always_use_blocks=true -sp_cleanup.always_use_parentheses_in_expressions=false -sp_cleanup.always_use_this_for_non_static_field_access=false -sp_cleanup.always_use_this_for_non_static_method_access=false -sp_cleanup.convert_functional_interfaces=false -sp_cleanup.convert_to_enhanced_for_loop=false -sp_cleanup.correct_indentation=false -sp_cleanup.format_source_code=true -sp_cleanup.format_source_code_changes_only=false -sp_cleanup.insert_inferred_type_arguments=false -sp_cleanup.make_local_variable_final=true -sp_cleanup.make_parameters_final=false -sp_cleanup.make_private_fields_final=true -sp_cleanup.make_type_abstract_if_missing_method=false -sp_cleanup.make_variable_declarations_final=false -sp_cleanup.never_use_blocks=false -sp_cleanup.never_use_parentheses_in_expressions=true -sp_cleanup.on_save_use_additional_actions=false -sp_cleanup.organize_imports=false -sp_cleanup.qualify_static_field_accesses_with_declaring_class=false -sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true -sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true -sp_cleanup.qualify_static_member_accesses_with_declaring_class=false -sp_cleanup.qualify_static_method_accesses_with_declaring_class=false -sp_cleanup.remove_private_constructors=true -sp_cleanup.remove_redundant_modifiers=false -sp_cleanup.remove_redundant_semicolons=false -sp_cleanup.remove_redundant_type_arguments=false -sp_cleanup.remove_trailing_whitespaces=false -sp_cleanup.remove_trailing_whitespaces_all=true -sp_cleanup.remove_trailing_whitespaces_ignore_empty=false -sp_cleanup.remove_unnecessary_casts=true -sp_cleanup.remove_unnecessary_nls_tags=false -sp_cleanup.remove_unused_imports=false -sp_cleanup.remove_unused_local_variables=false -sp_cleanup.remove_unused_private_fields=true -sp_cleanup.remove_unused_private_members=false -sp_cleanup.remove_unused_private_methods=true -sp_cleanup.remove_unused_private_types=true -sp_cleanup.sort_members=false -sp_cleanup.sort_members_all=false -sp_cleanup.use_anonymous_class_creation=false -sp_cleanup.use_blocks=false -sp_cleanup.use_blocks_only_for_return_and_throw=false -sp_cleanup.use_lambda=true -sp_cleanup.use_parentheses_in_expressions=false -sp_cleanup.use_this_for_non_static_field_access=false -sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true -sp_cleanup.use_this_for_non_static_method_access=false -sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true diff --git a/net.mograsim.logic.ui/META-INF/MANIFEST.MF b/net.mograsim.logic.ui/META-INF/MANIFEST.MF deleted file mode 100644 index b8c297a9..00000000 --- a/net.mograsim.logic.ui/META-INF/MANIFEST.MF +++ /dev/null @@ -1,27 +0,0 @@ -Manifest-Version: 1.0 -Bundle-ManifestVersion: 2 -Bundle-Name: %Bundle-Name -Bundle-SymbolicName: net.mograsim.logic.ui;singleton:=true -Bundle-Version: 0.1.0.qualifier -Export-Package: net.mograsim.logic.ui, - net.mograsim.logic.ui.examples, - net.mograsim.logic.ui.model, - net.mograsim.logic.ui.model.components, - net.mograsim.logic.ui.model.components.atomic, - net.mograsim.logic.ui.model.components.submodels, - net.mograsim.logic.ui.model.wires, - net.mograsim.logic.ui.modeladapter, - net.mograsim.logic.ui.modeladapter.componentadapters, - net.mograsim.logic.ui.serializing, - net.mograsim.logic.ui.serializing.snippets, - net.mograsim.logic.ui.serializing.snippets.outlinerenderers, - net.mograsim.logic.ui.serializing.snippets.symbolrenderers, - net.mograsim.logic.ui.util -Bundle-RequiredExecutionEnvironment: JavaSE-11 -Require-Bundle: org.eclipse.swt;bundle-version="3.0.0";visibility:=reexport, - SWTZoomableCanvas;bundle-version="1.0.0";visibility:=reexport, - net.mograsim.logic.core;bundle-version="0.1.0";visibility:=reexport, - com.google.gson;bundle-version="2.8.2";visibility:=reexport, - net.mograsim.preferences;bundle-version="0.1.0" -Automatic-Module-Name: net.mograsim.logic.ui -Bundle-Vendor: Mograsim Team diff --git a/net.mograsim.logic.ui/OSGI-INF/l10n/bundle.properties b/net.mograsim.logic.ui/OSGI-INF/l10n/bundle.properties deleted file mode 100644 index 4eac2829..00000000 --- a/net.mograsim.logic.ui/OSGI-INF/l10n/bundle.properties +++ /dev/null @@ -1,3 +0,0 @@ -#Properties file for net.mograsim.logic.ui -Bundle-Vendor = Mograsim Team -Bundle-Name = Mograsim logic user interface \ No newline at end of file diff --git a/net.mograsim.logic.ui/build.properties b/net.mograsim.logic.ui/build.properties deleted file mode 100644 index d6642e65..00000000 --- a/net.mograsim.logic.ui/build.properties +++ /dev/null @@ -1,4 +0,0 @@ -source.. = src/ -bin.includes = META-INF/,\ - .,\ - OSGI-INF/ diff --git a/net.mograsim.logic.ui/oldsrc/GUIMerger.java b/net.mograsim.logic.ui/oldsrc/GUIMerger.java deleted file mode 100644 index 64fd0aa9..00000000 --- a/net.mograsim.logic.ui/oldsrc/GUIMerger.java +++ /dev/null @@ -1,79 +0,0 @@ -package era.mi.gui.components; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; - -import era.mi.logic.components.Merger; -import era.mi.logic.wires.Wire.ReadEnd; -import era.mi.logic.wires.Wire.ReadWriteEnd; -import net.haspamelodica.swt.helper.gcs.GeneralGC; -import net.haspamelodica.swt.helper.swtobjectwrappers.Point; -import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; - -public class GUIMerger extends Merger implements GUIComponent -{ - private final int inputCount; - private final double height; - private final List connectedWireEnds; - private final List WireEndConnectionPoints; - - public GUIMerger(ReadWriteEnd union, ReadEnd... inputs) - { - super(union, inputs); - - List connectedWireEndsModifiable = new ArrayList<>(); - List WireEndConnectionPointsModifiable = new ArrayList<>(); - - this.inputCount = inputs.length; - this.height = (inputCount - 1) * 10; - - { - connectedWireEndsModifiable.addAll(Arrays.asList(inputs)); - double inputHeight = 0; - for (int i = 0; i < inputCount; i++, inputHeight += 10) - WireEndConnectionPointsModifiable.add(new Point(0, inputHeight)); - } - - connectedWireEndsModifiable.add(union); - WireEndConnectionPointsModifiable.add(new Point(20, height / 2)); - - this.connectedWireEnds = Collections.unmodifiableList(connectedWireEndsModifiable); - this.WireEndConnectionPoints = Collections.unmodifiableList(WireEndConnectionPointsModifiable); - } - - @Override - public Rectangle getBounds() - { - return new Rectangle(0, 0, 20, height); - } - - @Override - public void render(GeneralGC gc) - { - double inputHeight = 0; - for (int i = 0; i < inputCount; i++, inputHeight += 10) - gc.drawLine(0, inputHeight, 10, inputHeight); - gc.drawLine(10, 0, 10, height); - gc.drawLine(10, height / 2, 20, height / 2); - } - - @Override - public int getConnectedWireEndsCount() - { - return connectedWireEnds.size(); - } - - @Override - public ReadEnd getConnectedWireEnd(int connectionIndex) - { - return connectedWireEnds.get(connectionIndex); - } - - @Override - public Point getWireEndConnectionPoint(int connectionI) - { - return WireEndConnectionPoints.get(connectionI); - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui/oldsrc/GUIMux.java b/net.mograsim.logic.ui/oldsrc/GUIMux.java deleted file mode 100644 index d004d90f..00000000 --- a/net.mograsim.logic.ui/oldsrc/GUIMux.java +++ /dev/null @@ -1,80 +0,0 @@ -package era.mi.gui.components; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; - -import era.mi.logic.components.Mux; -import era.mi.logic.wires.Wire.ReadEnd; -import era.mi.logic.wires.Wire.ReadWriteEnd; -import net.haspamelodica.swt.helper.gcs.GeneralGC; -import net.haspamelodica.swt.helper.swtobjectwrappers.Point; -import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; - -public class GUIMux extends Mux implements GUIComponent -{ - private final double height; - private final List connectedWireEnds; - private final List WireEndConnectionPoints; - - public GUIMux(int processTime, ReadWriteEnd out, ReadEnd select, ReadEnd... inputs) - { - super(processTime, out, select, inputs); - - double height = inputs.length * 5; - if (height < 10) - height = 10; - this.height = height; - - List connectedWireEndsModifiable = new ArrayList<>(); - List WireEndConnectionPointsModifiable = new ArrayList<>(); - - connectedWireEndsModifiable.add(out); - WireEndConnectionPointsModifiable.add(new Point(20, 10 + height / 2)); - - connectedWireEndsModifiable.add(select); - WireEndConnectionPointsModifiable.add(new Point(10, 5)); - - { - connectedWireEndsModifiable.addAll(Arrays.asList(inputs)); - double inputHeightIncrement = (height + 20) / inputs.length; - double inputHeight = inputHeightIncrement / 2; - for (int i = 0; i < inputs.length; i++, inputHeight += inputHeightIncrement) - WireEndConnectionPointsModifiable.add(new Point(0, inputHeight)); - } - - this.connectedWireEnds = Collections.unmodifiableList(connectedWireEndsModifiable); - this.WireEndConnectionPoints = Collections.unmodifiableList(WireEndConnectionPointsModifiable); - } - - @Override - public Rectangle getBounds() - { - return new Rectangle(0, 0, 20, height + 20); - } - - @Override - public void render(GeneralGC gc) - { - gc.drawPolygon(new double[] { 0, 0, 20, 10, 20, height + 10, 0, height + 20 }); - } - - @Override - public int getConnectedWireEndsCount() - { - return connectedWireEnds.size(); - } - - @Override - public ReadEnd getConnectedWireEnd(int connectionIndex) - { - return connectedWireEnds.get(connectionIndex); - } - - @Override - public Point getWireEndConnectionPoint(int connectionI) - { - return WireEndConnectionPoints.get(connectionI); - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui/oldsrc/GUISplitter.java b/net.mograsim.logic.ui/oldsrc/GUISplitter.java deleted file mode 100644 index 1bff4247..00000000 --- a/net.mograsim.logic.ui/oldsrc/GUISplitter.java +++ /dev/null @@ -1,72 +0,0 @@ -package era.mi.gui.components; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; - -import era.mi.gui.ViewModel; -import era.mi.logic.components.Splitter; -import era.mi.logic.wires.Wire.ReadEnd; -import era.mi.logic.wires.Wire.ReadWriteEnd; -import net.haspamelodica.swt.helper.gcs.GeneralGC; -import net.haspamelodica.swt.helper.swtobjectwrappers.Point; -import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; - -public class GUISplitter extends GUIComponent -{ - public GUISplitter(ViewModel model) - { - super(model); - - this.outputCount = outputs.length; - this.height = (outputCount - 1) * 10; - - connectedWireEndsModifiable.add(input); - WireEndConnectionPointsModifiable.add(new Point(0, height / 2)); - - { - connectedWireEndsModifiable.addAll(Arrays.asList(outputs)); - double outputHeight = 0; - for (int i = 0; i < outputCount; i++, outputHeight += 10) - WireEndConnectionPointsModifiable.add(new Point(20, outputHeight)); - } - - this.connectedWireEnds = Collections.unmodifiableList(connectedWireEndsModifiable); - this.WireEndConnectionPoints = Collections.unmodifiableList(WireEndConnectionPointsModifiable); - } - - @Override - public Rectangle getBounds() - { - return new Rectangle(0, 0, 20, height); - } - - @Override - public void render(GeneralGC gc) - { - gc.drawLine(0, height / 2, 10, height / 2); - gc.drawLine(10, 0, 10, height); - double outputHeight = 0; - for (int i = 0; i < outputCount; i++, outputHeight += 10) - gc.drawLine(10, outputHeight, 20, outputHeight); - } - - @Override - public int getConnectedWireEndsCount() - { - return connectedWireEnds.size(); - } - - @Override - public ReadEnd getConnectedWireEnd(int connectionIndex) - { - return connectedWireEnds.get(connectionIndex); - } - - @Override - public Point getWireEndConnectionPoint(int connectionI) - { - return WireEndConnectionPoints.get(connectionI); - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/LogicExecuter.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/LogicExecuter.java deleted file mode 100644 index eb8a7235..00000000 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/LogicExecuter.java +++ /dev/null @@ -1,111 +0,0 @@ -package net.mograsim.logic.ui; - -import java.util.concurrent.atomic.AtomicBoolean; -import java.util.concurrent.atomic.AtomicLong; - -import net.mograsim.logic.core.timeline.Timeline; - -//TODO maybe move to logic core? -public class LogicExecuter -{ - // TODO replace with LogicModel when it exists - private final Timeline timeline; - - private final AtomicBoolean shouldBeRunningLive; - private final AtomicBoolean isRunningLive; - private final AtomicLong nextExecSimulTime; - private final Thread simulationThread; - - public LogicExecuter(Timeline timeline) - { - this.timeline = timeline; - - timeline.setTimeFunction(System::currentTimeMillis); - shouldBeRunningLive = new AtomicBoolean(); - isRunningLive = new AtomicBoolean(); - nextExecSimulTime = new AtomicLong(); - simulationThread = new Thread(() -> - { - isRunningLive.set(true); - synchronized (isRunningLive) - { - isRunningLive.notify(); - } - try - { - while (shouldBeRunningLive.get()) - { - // always execute to keep timeline from "hanging behind" for too long - long current = System.currentTimeMillis(); - timeline.executeUntil(timeline.laterThan(current), current + 10); - long sleepTime; - if (timeline.hasNext()) - sleepTime = timeline.nextEventTime() - current; - else - sleepTime = 10000; - try - { - nextExecSimulTime.set(current + sleepTime); - if (sleepTime > 0) - Thread.sleep(sleepTime); - } - catch (@SuppressWarnings("unused") InterruptedException e) - {// do nothing; it is normal execution flow to be interrupted - } - } - } - finally - { - isRunningLive.set(false); - synchronized (isRunningLive) - { - isRunningLive.notify(); - } - } - }); - timeline.addEventAddedListener(event -> - { - if (isRunningLive.get()) - if (Timeline.timeCmp(event.getTiming(), nextExecSimulTime.get()) < 0) - simulationThread.interrupt(); - }); - } - - public void executeNextStep() - { - timeline.executeNext(); - } - - public synchronized void startLiveExecution() - { - if (shouldBeRunningLive.get()) - return; - shouldBeRunningLive.set(true); - simulationThread.start(); - waitForIsRunning(true); - } - - public synchronized void stopLiveExecution() - { - if (!shouldBeRunningLive.get()) - return; - shouldBeRunningLive.set(false); - simulationThread.interrupt(); - waitForIsRunning(false); - } - - private void waitForIsRunning(boolean expectedState) - { - while (isRunningLive.get() ^ expectedState) - try - { - synchronized (isRunningLive) - { - isRunningLive.wait(); - } - } - catch (@SuppressWarnings("unused") InterruptedException e) - {// no need to do anything - } - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/LogicUICanvas.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/LogicUICanvas.java deleted file mode 100644 index 0ea2680d..00000000 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/LogicUICanvas.java +++ /dev/null @@ -1,177 +0,0 @@ -package net.mograsim.logic.ui; - -import java.util.ArrayList; -import java.util.List; - -import org.eclipse.swt.SWT; -import org.eclipse.swt.graphics.Color; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Combo; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Event; -import org.eclipse.swt.widgets.Label; -import org.eclipse.swt.widgets.Listener; -import org.eclipse.swt.widgets.Shell; -import org.eclipse.swt.widgets.Text; - -import net.haspamelodica.swt.helper.swtobjectwrappers.Point; -import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; -import net.haspamelodica.swt.helper.zoomablecanvas.ZoomableCanvas; -import net.mograsim.logic.core.types.Bit; -import net.mograsim.logic.core.types.BitVector; -import net.mograsim.logic.ui.model.ViewModel; -import net.mograsim.logic.ui.model.components.GUIComponent; -import net.mograsim.logic.ui.model.components.submodels.SubmodelComponent; -import net.mograsim.logic.ui.model.components.submodels.SubmodelInterface; -import net.mograsim.logic.ui.model.wires.WireCrossPoint; -import net.mograsim.preferences.Preferences; - -/** - * Simulation visualizer canvas. - * - * @author Daniel Kirschten - */ -public class LogicUICanvas extends ZoomableCanvas -{ - private static final boolean OPEN_DEBUG_SETHIGHLEVELSTATE_SHELL = false; - - private final ViewModel model; - - public LogicUICanvas(Composite parent, int style, ViewModel model) - { - super(parent, style); - - this.model = model; - - LogicUIRenderer renderer = new LogicUIRenderer(model); - addZoomedRenderer(gc -> - { - Color background = Preferences.current().getColor("net.mograsim.logic.ui.color.background"); - if (background != null) - setBackground(background);// this.setBackground, not gc.setBackground to have the background fill the canvas - renderer.render(gc, new Rectangle(-offX / zoom, -offY / zoom, gW / zoom, gH / zoom)); - }); - model.addRedrawListener(this::redrawThreadsafe); - - addListener(SWT.MouseDown, this::mouseDown); - - if (OPEN_DEBUG_SETHIGHLEVELSTATE_SHELL) - openDebugSetHighLevelStateShell(model); - } - - private void mouseDown(Event e) - { - if (e.button == 1) - { - Point click = displayToWorldCoords(e.x, e.y); - for (GUIComponent component : model.getComponents()) - if (component.getBounds().contains(click) && component.clicked(click.x, click.y)) - { - redraw(); - break; - } - } - } - - private void openDebugSetHighLevelStateShell(ViewModel model) - { - Shell debugShell = new Shell(); - debugShell.setLayout(new GridLayout(2, false)); - new Label(debugShell, SWT.NONE).setText("Target component: "); - Combo componentSelector = new Combo(debugShell, SWT.DROP_DOWN | SWT.READ_ONLY); - componentSelector.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); - List componentsByItemIndex = new ArrayList<>(); - model.addComponentAddedListener(c -> recalculateComponentSelector(componentsByItemIndex, componentSelector, model)); - model.addComponentRemovedListener(c -> recalculateComponentSelector(componentsByItemIndex, componentSelector, model)); - recalculateComponentSelector(componentsByItemIndex, componentSelector, model); - new Label(debugShell, SWT.NONE).setText("Target state ID: "); - Text stateIDText = new Text(debugShell, SWT.SINGLE | SWT.LEAD | SWT.BORDER); - stateIDText.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); - new Label(debugShell, SWT.NONE).setText("Value type: "); - Composite radioGroup = new Composite(debugShell, SWT.NONE); - radioGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); - GridLayout radioGroupLayout = new GridLayout(2, false); - radioGroupLayout.marginHeight = 0; - radioGroupLayout.marginWidth = 0; - radioGroup.setLayout(radioGroupLayout); - Button radioBit = new Button(radioGroup, SWT.RADIO); - radioBit.setText("Single bit"); - Button radioBitVector = new Button(radioGroup, SWT.RADIO); - radioBitVector.setText("Bitvector"); - new Label(debugShell, SWT.NONE).setText("Value string representation: \n(Bit vectors: MSBit...LSBit)"); - Text valueText = new Text(debugShell, SWT.SINGLE | SWT.LEAD | SWT.BORDER); - valueText.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); - Button send = new Button(debugShell, SWT.PUSH); - send.setText("Send!"); - Button get = new Button(debugShell, SWT.PUSH); - get.setText("Get!"); - Text output = new Text(debugShell, SWT.READ_ONLY); - output.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1)); - Listener sendAction = e -> - { - try - { - int componentIndex = componentSelector.getSelectionIndex(); - if (componentIndex < 0 || componentIndex >= componentsByItemIndex.size()) - throw new RuntimeException("No component selected"); - GUIComponent target = componentsByItemIndex.get(componentIndex); - String valueString = valueText.getText(); - Object value; - if (radioBit.getSelection()) - value = Bit.parse(valueString); - else if (radioBitVector.getSelection()) - value = BitVector.parseMSBFirst(valueString); - else - throw new RuntimeException("No value type selected"); - target.setHighLevelState(stateIDText.getText(), value); - output.setText("Success!"); - } - catch (Exception x) - { - output.setText(x.getClass().getSimpleName() + (x.getMessage() == null ? "" : ": " + x.getMessage())); - } - }; - Listener getAction = e -> - { - try - { - if (componentSelector.getSelectionIndex() >= componentsByItemIndex.size()) - throw new RuntimeException("No valid component selected"); - output.setText("Success! Value: \r\n" - + componentsByItemIndex.get(componentSelector.getSelectionIndex()).getHighLevelState(stateIDText.getText())); - } - catch (Exception x) - { - output.setText(x.getClass().getSimpleName() + (x.getMessage() == null ? "" : ": " + x.getMessage())); - } - }; - send.addListener(SWT.Selection, sendAction); - valueText.addListener(SWT.DefaultSelection, sendAction); - get.addListener(SWT.Selection, getAction); - stateIDText.addListener(SWT.DefaultSelection, getAction); - debugShell.open(); - } - - private void recalculateComponentSelector(List componentsByItemIndex, Combo componentSelector, ViewModel model) - { - componentsByItemIndex.clear(); - componentSelector.setItems(); - addComponentSelectorItems(componentsByItemIndex, "", componentSelector, model); - } - - private void addComponentSelectorItems(List componentsByItemIndex, String base, Combo componentSelector, ViewModel model) - { - for (GUIComponent c : model.getComponents()) - if (!(c instanceof WireCrossPoint || c instanceof SubmodelInterface)) - { - String item = base + c.getClass().getSimpleName(); - componentsByItemIndex.add(c); - componentSelector.add(item); - if (c instanceof SubmodelComponent) - addComponentSelectorItems(componentsByItemIndex, item + " -> ", componentSelector, ((SubmodelComponent) c).submodel); - } - } - -} \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/LogicUIRenderer.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/LogicUIRenderer.java deleted file mode 100644 index 7858a704..00000000 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/LogicUIRenderer.java +++ /dev/null @@ -1,57 +0,0 @@ -package net.mograsim.logic.ui; - -import org.eclipse.swt.SWT; - -import net.haspamelodica.swt.helper.gcs.GeneralGC; -import net.haspamelodica.swt.helper.swtobjectwrappers.Point; -import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; -import net.mograsim.logic.ui.model.ViewModel; -import net.mograsim.logic.ui.model.components.GUIComponent; -import net.mograsim.logic.ui.model.wires.Pin; - -public class LogicUIRenderer -{ - private static final boolean DRAW_PINS = false; - - private final ViewModel model; - - public LogicUIRenderer(ViewModel model) - { - this.model = model; - } - - public void render(GeneralGC gc, Rectangle visibleRegion) - { - gc.setAntialias(SWT.ON); - gc.setClipping(visibleRegion); - gc.setLineWidth(.5); - model.getWires().forEach(w -> - { - Rectangle bounds = w.getBounds(); - double lw = gc.getLineWidth(); - if (visibleRegion.intersects(bounds.x - lw, bounds.y - lw, bounds.width + lw + lw, bounds.height + lw + lw)) - w.render(gc); - }); - model.getComponents().forEach(c -> renderComponent(gc, c, visibleRegion)); - } - - private static void renderComponent(GeneralGC gc, GUIComponent component, Rectangle visibleRegion) - { - Rectangle bounds = component.getBounds(); - double lw = gc.getLineWidth(); - if (visibleRegion.intersects(bounds.x - lw, bounds.y - lw, bounds.width + lw + lw, bounds.height + lw + lw)) - { - component.render(gc, visibleRegion); - if (DRAW_PINS) - { - gc.setBackground(gc.getDevice().getSystemColor(SWT.COLOR_DARK_CYAN)); - for (Pin p : component.getPins().values()) - { - Point pos = p.getPos(); - gc.fillOval(pos.x - 1, pos.y - 1, 2, 2); - } - } - } - } - -} \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/LogicUIStandaloneGUI.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/LogicUIStandaloneGUI.java deleted file mode 100644 index a71cdde4..00000000 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/LogicUIStandaloneGUI.java +++ /dev/null @@ -1,53 +0,0 @@ -package net.mograsim.logic.ui; - -import org.eclipse.swt.SWT; -import org.eclipse.swt.layout.FillLayout; -import org.eclipse.swt.widgets.Display; -import org.eclipse.swt.widgets.Shell; - -import net.haspamelodica.swt.helper.zoomablecanvas.helper.ZoomableCanvasOverlay; -import net.haspamelodica.swt.helper.zoomablecanvas.helper.ZoomableCanvasUserInput; -import net.mograsim.logic.ui.model.ViewModel; - -/** - * Standalone simulation visualizer graphical user interface. - * - * @author Daniel Kirschten - */ -public class LogicUIStandaloneGUI implements Runnable -{ - private final Display display; - private final Shell shell; - private final LogicUICanvas ui; - - public LogicUIStandaloneGUI(ViewModel model) - { - display = new Display(); - shell = new Shell(display); - shell.setLayout(new FillLayout()); - ui = new LogicUICanvas(shell, SWT.NONE, model); - - ZoomableCanvasUserInput userInput = new ZoomableCanvasUserInput(ui); - userInput.buttonDrag = 3; - userInput.buttonZoom = 2; - userInput.enableUserInput(); - new ZoomableCanvasOverlay(ui, null).enableScale(); - } - - public LogicUICanvas getLogicUICanvas() - { - return ui; - } - - /** - * Opens the UI shell. Returns when the shell is closed. - */ - @Override - public void run() - { - shell.open(); - while (!shell.isDisposed()) - if (!display.readAndDispatch()) - display.sleep(); - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/SimpleLogicUIStandalone.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/SimpleLogicUIStandalone.java deleted file mode 100644 index 6c856c47..00000000 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/SimpleLogicUIStandalone.java +++ /dev/null @@ -1,43 +0,0 @@ -package net.mograsim.logic.ui; - -import java.util.function.Consumer; - -import net.mograsim.logic.core.timeline.Timeline; -import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.logic.ui.modeladapter.LogicModelParameters; -import net.mograsim.logic.ui.modeladapter.ViewLogicModelAdapter; - -public class SimpleLogicUIStandalone -{ - public static void executeVisualisation(Consumer setupViewModel) - { - LogicModelParameters params = new LogicModelParameters(); - params.gateProcessTime = 50; - params.wireTravelTime = 10; - executeVisualisation(setupViewModel, params); - } - - public static void executeVisualisation(Consumer setupViewModel, LogicModelParameters params) - { - // setup view model - ViewModelModifiable viewModel = new ViewModelModifiable(); - setupViewModel.accept(viewModel); - - // convert to logic model - Timeline timeline = ViewLogicModelAdapter.convert(viewModel, params); - - // initialize UI and executer - LogicUIStandaloneGUI ui = new LogicUIStandaloneGUI(viewModel); - LogicExecuter exec = new LogicExecuter(timeline); - - // run it - exec.startLiveExecution(); - ui.run(); - exec.stopLiveExecution(); - } - - private SimpleLogicUIStandalone() - { - throw new UnsupportedOperationException("No SimpleLogicUIStandalone instances"); - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/examples/ClickableSubmodelComponentsTest.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/examples/ClickableSubmodelComponentsTest.java deleted file mode 100644 index d5832ce9..00000000 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/examples/ClickableSubmodelComponentsTest.java +++ /dev/null @@ -1,34 +0,0 @@ -package net.mograsim.logic.ui.examples; - -import net.mograsim.logic.ui.SimpleLogicUIStandalone; -import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.logic.ui.model.components.atomic.GUIBitDisplay; -import net.mograsim.logic.ui.model.components.atomic.GUIManualSwitch; -import net.mograsim.logic.ui.model.components.submodels.SimpleRectangularSubmodelComponent; - -public class ClickableSubmodelComponentsTest -{ - public static void main(String[] args) - { - SimpleLogicUIStandalone.executeVisualisation(ClickableSubmodelComponentsTest::createExample); - } - - public static void createExample(ViewModelModifiable model) - { - SimpleRectangularSubmodelComponent comp = new SimpleRectangularSubmodelComponent(model, 1, "") - { - { - setSubmodelScale(.4); - setOutputPins("O0"); - - GUIManualSwitch sw = new GUIManualSwitch(submodelModifiable); - GUIBitDisplay bd = new GUIBitDisplay(submodelModifiable); - - sw.moveTo(10, 5); - bd.moveTo(50, 5); - - } - }; - comp.moveTo(10, 10); - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/examples/RSLatchExample.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/examples/RSLatchExample.java deleted file mode 100644 index 91cdd174..00000000 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/examples/RSLatchExample.java +++ /dev/null @@ -1,61 +0,0 @@ -package net.mograsim.logic.ui.examples; - -import net.haspamelodica.swt.helper.swtobjectwrappers.Point; -import net.mograsim.logic.ui.SimpleLogicUIStandalone; -import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.logic.ui.model.components.atomic.GUIManualSwitch; -import net.mograsim.logic.ui.model.components.atomic.GUINotGate; -import net.mograsim.logic.ui.model.components.atomic.GUIOrGate; -import net.mograsim.logic.ui.model.wires.GUIWire; -import net.mograsim.logic.ui.model.wires.WireCrossPoint; - -public class RSLatchExample -{ - public static void main(String[] args) - { - SimpleLogicUIStandalone.executeVisualisation(RSLatchExample::createRSLatchExample); - } - - @SuppressWarnings("unused") // for GUIWires being created - public static void createRSLatchExample(ViewModelModifiable model) - { - GUIManualSwitch rIn = new GUIManualSwitch(model); - rIn.moveTo(100, 100); - GUIManualSwitch sIn = new GUIManualSwitch(model); - sIn.moveTo(100, 200); - - GUIOrGate or1 = new GUIOrGate(model, 1); - or1.moveTo(160, 102.5); - new GUIWire(model, rIn.getOutputPin(), or1.getPin("A")); - - GUIOrGate or2 = new GUIOrGate(model, 1); - or2.moveTo(160, 192.5); - new GUIWire(model, sIn.getOutputPin(), or2.getPin("B")); - - GUINotGate not1 = new GUINotGate(model, 1); - not1.moveTo(200, 107.5); - new GUIWire(model, or1.getPin("Y"), not1.getPin("A")); - - GUINotGate not2 = new GUINotGate(model, 1); - not2.moveTo(200, 197.5); - new GUIWire(model, or2.getPin("Y"), not2.getPin("A")); - - WireCrossPoint p1 = new WireCrossPoint(model, 1); - p1.moveCenterTo(250, 112.5); - new GUIWire(model, not1.getPin("Y"), p1); - new GUIWire(model, p1, or2.getPin("A"), new Point(250, 130), new Point(140, 185), new Point(140, 197.5)); - - WireCrossPoint p2 = new WireCrossPoint(model, 1); - p2.moveCenterTo(250, 202.5); - new GUIWire(model, not2.getPin("Y"), p2); - new GUIWire(model, p2, or1.getPin("B"), new Point(250, 185), new Point(140, 130), new Point(140, 117.5)); - - WireCrossPoint o1 = new WireCrossPoint(model, 1); - o1.moveCenterTo(270, 112.5); - new GUIWire(model, p1, o1); - - WireCrossPoint o2 = new WireCrossPoint(model, 1); - o2.moveCenterTo(270, 202.5); - new GUIWire(model, p2, o2); - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/ViewModel.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/ViewModel.java deleted file mode 100644 index 55402c24..00000000 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/ViewModel.java +++ /dev/null @@ -1,127 +0,0 @@ -package net.mograsim.logic.ui.model; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.function.Consumer; - -import net.mograsim.logic.ui.model.components.GUIComponent; -import net.mograsim.logic.ui.model.wires.GUIWire; - -public class ViewModel -{ - private final List components; - private final List componentsUnmodifiable; - private final List wires; - private final List wiresUnmodifiable; - - private final List> componentAddedListeners; - private final List> componentRemovedListeners; - private final List> wireAddedListeners; - private final List> wireRemovedListeners; - private final List redrawListeners; - - private final Runnable redrawListenerForSubcomponents; - - protected ViewModel() - { - components = new ArrayList<>(); - componentsUnmodifiable = Collections.unmodifiableList(components); - wires = new ArrayList<>(); - wiresUnmodifiable = Collections.unmodifiableList(wires); - - componentAddedListeners = new ArrayList<>(); - componentRemovedListeners = new ArrayList<>(); - wireAddedListeners = new ArrayList<>(); - wireRemovedListeners = new ArrayList<>(); - redrawListeners = new ArrayList<>(); - - redrawListenerForSubcomponents = this::callRedrawListeners; - } - - /** - * Adds the given component to the list of components and calls all componentAddedListeners. Don't call this method from application - * code as it is automatically called in {@link GUIComponent}'s constructor. - */ - protected void componentCreated(GUIComponent component) - { - if (components.contains(component)) - throw new IllegalStateException("Don't add the same component twice!"); - components.add(component); - callComponentAddedListeners(component); - component.addRedrawListener(redrawListenerForSubcomponents); - callRedrawListeners(); - } - - /** - * Removes the given component from the list of components and calls all componentRemovedListeners. Don't call this method from - * application code as it is automatically called in {@link GUIComponent#destroy()}. - */ - protected void componentDestroyed(GUIComponent component) - { - if (!components.contains(component)) - throw new IllegalStateException("Don't remove the same component twice!"); - components.remove(component); - callComponentRemovedListeners(component); - component.removeRedrawListener(redrawListenerForSubcomponents); - callRedrawListeners(); - } - - /** - * Adds the given wire to the list of wires and calls all wireAddedListeners. Don't call this method from application code as it is - * automatically called in {@link GUIWire}'s constructor(s). - */ - protected void wireCreated(GUIWire wire) - { - if (wires.contains(wire)) - throw new IllegalStateException("Don't add the same wire twice!"); - wires.add(wire); - callWireAddedListeners(wire); - wire.addRedrawListener(redrawListenerForSubcomponents); - callRedrawListeners(); - } - - /** - * Removes the given wire from the list of wires and calls all wireRemovedListeners. Don't call this method from application code as it - * is automatically called in {@link GUIWire#destroy()}. - */ - protected void wireDestroyed(GUIWire wire) - { - if (!wires.contains(wire)) - throw new IllegalStateException("Don't remove the same wire twice!"); - wires.remove(wire); - callWireRemovedListeners(wire); - wire.removeRedrawListener(redrawListenerForSubcomponents); - callRedrawListeners(); - } - - public List getComponents() - { - return componentsUnmodifiable; - } - - public List getWires() - { - return wiresUnmodifiable; - } - - // @formatter:off - public void addComponentAddedListener (Consumer listener) {componentAddedListeners .add (listener);} - public void addComponentRemovedListener (Consumer listener) {componentRemovedListeners.add (listener);} - public void addWireAddedListener (Consumer listener) {wireAddedListeners .add (listener);} - public void addWireRemovedListener (Consumer listener) {wireRemovedListeners .add (listener);} - public void addRedrawListener (Runnable listener) {redrawListeners .add (listener);} - - public void removeComponentAddedListener (Consumer listener) {componentAddedListeners .remove(listener);} - public void removeComponentRemovedListener(Consumer listener) {componentRemovedListeners.remove(listener);} - public void removeWireAddedListener (Consumer listener) {wireAddedListeners .remove(listener);} - public void removeWireRemovedListener (Consumer listener) {wireRemovedListeners .remove(listener);} - public void removeRedrawListener (Runnable listener) {redrawListeners .remove(listener);} - - private void callComponentAddedListeners (GUIComponent c) {componentAddedListeners .forEach(l -> l.accept(c));} - private void callComponentRemovedListeners(GUIComponent c) {componentRemovedListeners.forEach(l -> l.accept(c));} - private void callWireAddedListeners (GUIWire w ) {wireAddedListeners .forEach(l -> l.accept(w));} - private void callWireRemovedListeners (GUIWire w ) {wireRemovedListeners .forEach(l -> l.accept(w));} - private void callRedrawListeners ( ) {redrawListeners .forEach(l -> l.run( ));} - // @formatter:on -} \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/ViewModelModifiable.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/ViewModelModifiable.java deleted file mode 100644 index 21863db7..00000000 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/ViewModelModifiable.java +++ /dev/null @@ -1,31 +0,0 @@ -package net.mograsim.logic.ui.model; - -import net.mograsim.logic.ui.model.components.GUIComponent; -import net.mograsim.logic.ui.model.wires.GUIWire; - -public class ViewModelModifiable extends ViewModel -{ - @Override - public void componentCreated(GUIComponent component) - { - super.componentCreated(component); - } - - @Override - public void componentDestroyed(GUIComponent component) - { - super.componentDestroyed(component); - } - - @Override - public void wireCreated(GUIWire wire) - { - super.wireCreated(wire); - } - - @Override - public void wireDestroyed(GUIWire wire) - { - super.wireDestroyed(wire); - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/GUIComponent.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/GUIComponent.java deleted file mode 100644 index 83e6d61d..00000000 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/GUIComponent.java +++ /dev/null @@ -1,310 +0,0 @@ -package net.mograsim.logic.ui.model.components; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.function.Consumer; - -import com.google.gson.JsonElement; -import com.google.gson.JsonNull; - -import net.haspamelodica.swt.helper.gcs.GeneralGC; -import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; -import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.logic.ui.model.wires.Pin; - -/** - * The base class for all GUI components.
- * A GUIComponent has a position and size. The size can only be modified by subclasses.
- * - * @author Daniel Kirschten - */ -public abstract class GUIComponent -{ - /** - * The model this component is a part of. - */ - protected final ViewModelModifiable model; - private final Rectangle bounds; - /** - * The list of all pins of this component by name. - */ - private final Map pinsByName; - /** - * An unmodifiable view of {@link #pinsByName}. - */ - protected final Map pinsUnmodifiable; - - private final List> componentMovedListeners; - private final List> componentResizedListeners; - private final List> pinAddedListeners; - private final List> pinRemovedListeners; - private final List redrawListeners; - - private final Runnable redrawListenerForSubcomponents; - // creation and destruction - - public GUIComponent(ViewModelModifiable model) - { - this.model = model; - this.bounds = new Rectangle(0, 0, 0, 0); - this.pinsByName = new HashMap<>(); - this.pinsUnmodifiable = Collections.unmodifiableMap(pinsByName); - - this.componentMovedListeners = new ArrayList<>(); - this.componentResizedListeners = new ArrayList<>(); - this.pinAddedListeners = new ArrayList<>(); - this.pinRemovedListeners = new ArrayList<>(); - this.redrawListeners = new ArrayList<>(); - - redrawListenerForSubcomponents = this::requestRedraw; - - model.componentCreated(this); - } - - /** - * Destroys this component. This method implicitly calls {@link ViewModelModifiable#componentDestroyed(GUIComponent) - * componentDestroyed()} for the model this component is a part of. - * - * @author Daniel Kirschten - */ - public void destroy() - { - pinsByName.values().forEach(p -> pinRemovedListeners.forEach(l -> l.accept(p))); - model.componentDestroyed(this); - } - - // pins - - /** - * Adds the given pin to this component and calls pinAddedListeners and redrawListeners. - * - * @throws IllegalArgumentException if the pin doesn't belong to this component - * @throws IllegalArgumentException if there already is a pin with the given name - * - * @author Daniel Kirschten - */ - protected void addPin(Pin pin) - { - if (pin.component != this) - throw new IllegalArgumentException("Can't add a pin not belonging to this component!"); - if (pinsByName.containsKey(pin.name)) - throw new IllegalArgumentException("Duplicate pin name: " + pin.name); - pinsByName.put(pin.name, pin); - callPinAddedListeners(pin); - pin.addRedrawListener(redrawListenerForSubcomponents); - requestRedraw(); - } - - /** - * Removes the given pin from this component and calls pinAddedListeners and redrawListeners. - * - * @throws NullPointerException if there was no pin with this name - * - * @author Daniel Kirschten - */ - protected void removePin(String name) - { - Pin pin = pinsByName.remove(name); - callPinRemovedListeners(pin); - pin.removeRedrawListener(redrawListenerForSubcomponents); - requestRedraw(); - } - - /** - * Returns a collection of pins of this component. - * - * @author Daniel Kirschten - */ - public Map getPins() - { - return pinsUnmodifiable; - } - - /** - * Returns the pin with the given name of this component. - * - * @throws IllegalArgumentException if there is no pin with the given name - * - * @author Daniel Kirschten - */ - public Pin getPin(String name) - { - Pin pin = pinsByName.get(name); - if (pin == null) - throw new IllegalArgumentException("No pin with the name " + name); - return pin; - } - - // high-level access - - /** - * Sets the given high-level state to the given value.
- * A high level state ID consists of parts separated by dots ('.').
- * The last part (the part after the last dot) is called "atomic high level state ID". The parts before that part are called - * "subcomponent ID"s.
- * If there is no dot in a high level state ID, the whole high level state ID is called atomic.
- * Note that subcomponent IDs don't have to correspond to actual subcomponents. For example, a RAM component may supply subcomponent IDs - * "c0000", "c0001" ... "cFFFF" without actually having a subcomponent for each cell. It also is allowed for an atomic high level state - * ID to be delegated to a subcomponent. - * - * @author Daniel Kirschten - */ - @SuppressWarnings({ "static-method", "unused" }) // this method is intended to be overridden - public void setHighLevelState(String stateID, Object newState) - { - throw new IllegalArgumentException("No high level state with ID " + stateID); - } - - /** - * Gets the current value of the given high-level state.
- * See {@link #setHighLevelState(String, Object)} for an explanation of high-level state IDs. - * - * @author Daniel Kirschten - */ - @SuppressWarnings("static-method") // this method is intended to be overridden - public Object getHighLevelState(String stateID) - { - throw new IllegalArgumentException("No high level state with ID " + stateID); - } - - // "graphical" operations - - /** - * Sets the position of this component and calls componentMovedListeners and redrawListeners. - * - * @author Daniel Kirschten - */ - public void moveTo(double x, double y) - { - bounds.x = x; - bounds.y = y; - callComponentMovedListeners(); - requestRedraw(); - } - - /** - * Sets the size of this component and calls redrawListeners. - * - * @author Daniel Kirschten - */ - protected void setSize(double width, double height) - { - bounds.width = width; - bounds.height = height; - callComponentResizedListener(); - requestRedraw(); - } - - /** - * Returns the bounds of this component. Is a bit slower than {@link #getPosX()}, {@link #getPosY()}, {@link #getWidth}, - * {@link #getHeight}, because new objects are created. - * - * @author Daniel Kirschten - */ - public final Rectangle getBounds() - { - return new Rectangle(bounds.x, bounds.y, bounds.width, bounds.height); - } - - /** - * Returns the x coordinate of the position of this component. Is a bit faster than {@link #getBounds()} because no objects are created. - * - * @author Daniel Kirschten - */ - public double getPosX() - { - return bounds.x; - } - - /** - * Returns the y coordinate of the position of this component. Is a bit faster than {@link #getBounds()} because no objects are created. - * - * @author Daniel Kirschten - */ - public double getPosY() - { - return bounds.y; - } - - /** - * Returns the (graphical) width of this component. Is a bit faster than {@link #getBounds()} because no objects are created. - * - * @author Daniel Kirschten - */ - public double getWidth() - { - return bounds.width; - } - - /** - * Returns the height of this component. Is a bit faster than {@link #getBounds()} because no objects are created. - * - * @author Daniel Kirschten - */ - public double getHeight() - { - return bounds.height; - } - - /** - * Called when this component is clicked. Absolute coordinates of the click are given. Returns true if this component consumed this - * click. - * - * @author Daniel Kirschten - */ - @SuppressWarnings({ "static-method", "unused" }) // this method is inteded to be overridden - public boolean clicked(double x, double y) - { - return false; - } - - /** - * Render this component to the given gc, in absoulute coordinates. - * - * @author Daniel Kirschten - */ - public abstract void render(GeneralGC gc, Rectangle visibleRegion); - - // serializing - - @SuppressWarnings("static-method") // this method is intended to be overridden - public JsonElement getParams() - { - return JsonNull.INSTANCE; - } - - // listeners - - /** - * Calls redraw listeners. - * - * @author Daniel Kirschten - */ - protected void requestRedraw() - { - callRedrawListeners(); - } - - // @formatter:off - public void addComponentMovedListener (Consumer listener) {componentMovedListeners .add (listener);} - public void addComponentResizedListener (Consumer listener) {componentResizedListeners.add (listener);} - public void addPinAddedListener (Consumer listener) {pinAddedListeners .add (listener);} - public void addPinRemovedListener (Consumer listener) {pinRemovedListeners .add (listener);} - public void addRedrawListener (Runnable listener) {redrawListeners .add (listener);} - - public void removeComponentMovedListener (Consumer listener) {componentMovedListeners .remove(listener);} - public void removeComponentResizedListener (Consumer listener) {componentResizedListeners.remove(listener);} - public void removePinAddedListener (Consumer listener) {pinAddedListeners .remove(listener);} - public void removePinRemovedListener (Consumer listener) {pinRemovedListeners .remove(listener);} - public void removeRedrawListener (Runnable listener) {redrawListeners .remove(listener);} - - private void callComponentMovedListeners ( ) {componentMovedListeners .forEach(l -> l.accept(this));} - private void callComponentResizedListener( ) {componentResizedListeners.forEach(l -> l.accept(this));} - private void callPinAddedListeners (Pin p) {pinAddedListeners .forEach(l -> l.accept(p ));} - private void callPinRemovedListeners (Pin p) {pinRemovedListeners .forEach(l -> l.accept(p ));} - private void callRedrawListeners ( ) {redrawListeners .forEach(l -> l.run( ));} - // @formatter:on -} \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/atomic/GUIAndGate.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/atomic/GUIAndGate.java deleted file mode 100644 index 0b1a4971..00000000 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/atomic/GUIAndGate.java +++ /dev/null @@ -1,22 +0,0 @@ -package net.mograsim.logic.ui.model.components.atomic; - -import net.mograsim.logic.core.components.gates.AndGate; -import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.logic.ui.modeladapter.ViewLogicModelAdapter; -import net.mograsim.logic.ui.modeladapter.componentadapters.SimpleGateAdapter; -import net.mograsim.logic.ui.serializing.IndirectGUIComponentCreator; - -public class GUIAndGate extends SimpleRectangularGUIGate -{ - public GUIAndGate(ViewModelModifiable model, int logicWidth) - { - super(model, logicWidth, "&", false); - setInputCount(2);// TODO make variable - } - - static - { - ViewLogicModelAdapter.addComponentAdapter(new SimpleGateAdapter<>(GUIAndGate.class, AndGate::new)); - IndirectGUIComponentCreator.setComponentProvider(GUIAndGate.class.getCanonicalName(), (m, p) -> new GUIAndGate(m, p.getAsInt())); - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/atomic/GUIBitDisplay.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/atomic/GUIBitDisplay.java deleted file mode 100644 index de755cd0..00000000 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/atomic/GUIBitDisplay.java +++ /dev/null @@ -1,89 +0,0 @@ -package net.mograsim.logic.ui.model.components.atomic; - -import org.eclipse.swt.graphics.Color; - -import net.haspamelodica.swt.helper.gcs.GeneralGC; -import net.haspamelodica.swt.helper.swtobjectwrappers.Font; -import net.haspamelodica.swt.helper.swtobjectwrappers.Point; -import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; -import net.mograsim.logic.core.LogicObserver; -import net.mograsim.logic.core.components.BitDisplay; -import net.mograsim.logic.core.types.BitVectorFormatter; -import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.logic.ui.model.components.GUIComponent; -import net.mograsim.logic.ui.model.wires.Pin; -import net.mograsim.logic.ui.modeladapter.ViewLogicModelAdapter; -import net.mograsim.logic.ui.modeladapter.componentadapters.BitDisplayAdapter; -import net.mograsim.logic.ui.serializing.IndirectGUIComponentCreator; -import net.mograsim.preferences.Preferences; - -public class GUIBitDisplay extends GUIComponent -{ - private static final double width = 20; - private static final double height = 15; - private static final double fontHeight = 5; - - private final Pin inputPin; - - private final LogicObserver logicObs; - private BitDisplay bitDisplay; - - public GUIBitDisplay(ViewModelModifiable model) - { - super(model); - logicObs = (i) -> requestRedraw(); - - setSize(width, height); - addPin(this.inputPin = new Pin(this, "", 1, 0, height / 2)); - } - - @Override - public void render(GeneralGC gc, Rectangle visibleRegion) - { - Color foreground = Preferences.current().getColor("net.mograsim.logic.ui.color.foreground"); - if (foreground != null) - gc.setForeground(foreground); - gc.drawRectangle(getBounds()); - String label = bitDisplay == null ? BitVectorFormatter.formatAsString(null) - : BitVectorFormatter.formatAsString(bitDisplay.getDisplayedValue()); - Font oldFont = gc.getFont(); - Font labelFont = new Font(oldFont.getName(), fontHeight, oldFont.getStyle()); - gc.setFont(labelFont); - Point textExtent = gc.textExtent(label); - Color textColor = Preferences.current().getColor("net.mograsim.logic.ui.color.text"); - if (textColor != null) - gc.setForeground(textColor); - gc.drawText(label, getPosX() + (width - textExtent.x) / 2, getPosY() + (height - textExtent.y) / 2, true); - gc.setFont(oldFont); - } - - public void setLogicModelBinding(BitDisplay bitDisplay) - { - if (this.bitDisplay != null) - this.bitDisplay.deregisterObserver(logicObs); - this.bitDisplay = bitDisplay; - if (bitDisplay != null) - bitDisplay.registerObserver(logicObs); - } - - public boolean hasLogicModelBinding() - { - return bitDisplay != null; - } - - public BitDisplay getBitDisplay() - { - return bitDisplay; - } - - public Pin getInputPin() - { - return inputPin; - } - - static - { - ViewLogicModelAdapter.addComponentAdapter(new BitDisplayAdapter()); - IndirectGUIComponentCreator.setComponentProvider(GUIBitDisplay.class.getCanonicalName(), (m, p) -> new GUIBitDisplay(m)); - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/atomic/GUIManualSwitch.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/atomic/GUIManualSwitch.java deleted file mode 100644 index 285cd16b..00000000 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/atomic/GUIManualSwitch.java +++ /dev/null @@ -1,143 +0,0 @@ -package net.mograsim.logic.ui.model.components.atomic; - -import org.eclipse.swt.graphics.Color; - -import net.haspamelodica.swt.helper.gcs.GeneralGC; -import net.haspamelodica.swt.helper.swtobjectwrappers.Font; -import net.haspamelodica.swt.helper.swtobjectwrappers.Point; -import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; -import net.mograsim.logic.core.LogicObservable; -import net.mograsim.logic.core.LogicObserver; -import net.mograsim.logic.core.components.ManualSwitch; -import net.mograsim.logic.core.types.Bit; -import net.mograsim.logic.core.types.BitVectorFormatter; -import net.mograsim.logic.core.wires.Wire.ReadEnd; -import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.logic.ui.model.components.GUIComponent; -import net.mograsim.logic.ui.model.wires.Pin; -import net.mograsim.logic.ui.modeladapter.ViewLogicModelAdapter; -import net.mograsim.logic.ui.modeladapter.componentadapters.ManualSwitchAdapter; -import net.mograsim.logic.ui.serializing.IndirectGUIComponentCreator; -import net.mograsim.preferences.Preferences; - -public class GUIManualSwitch extends GUIComponent -{ - private static final double width = 20; - private static final double height = 15; - private static final double fontHeight = 5; - - private final Pin outputPin; - - private final LogicObserver logicObs; - private ManualSwitch logicSwitch; - private ReadEnd end; - - public GUIManualSwitch(ViewModelModifiable model) - { - super(model); - logicObs = (i) -> requestRedraw(); - - setSize(width, height); - addPin(this.outputPin = new Pin(this, "", 1, width, height / 2)); - } - - @Override - public void render(GeneralGC gc, Rectangle visibleRegion) - { - // TODO maybe draw switch state too? - Color foreground = Preferences.current().getColor("net.mograsim.logic.ui.color.foreground"); - if (foreground != null) - gc.setForeground(foreground); - gc.drawRectangle(getBounds()); - String label = BitVectorFormatter.formatValueAsString(end); - Font oldFont = gc.getFont(); - Font labelFont = new Font(oldFont.getName(), fontHeight, oldFont.getStyle()); - gc.setFont(labelFont); - Point textExtent = gc.textExtent(label); - Color textColor = Preferences.current().getColor("net.mograsim.logic.ui.color.text"); - if (textColor != null) - gc.setForeground(textColor); - gc.drawText(label, getPosX() + (width - textExtent.x) / 2, getPosY() + (height - textExtent.y) / 2, true); - gc.setFont(oldFont); - } - - public void setLogicModelBinding(ManualSwitch logicSwitch, ReadEnd end) - { - deregisterLogicObs(this.end); - deregisterLogicObs(this.logicSwitch); - this.logicSwitch = logicSwitch; - this.end = end; - registerLogicObs(end); - registerLogicObs(logicSwitch); - } - - public boolean hasLogicModelBinding() - { - return logicSwitch != null; - } - - @Override - public void setHighLevelState(String stateID, Object newState) - { - switch (stateID) - { - case "out": - if (logicSwitch != null) - logicSwitch.setToValueOf((Bit) newState); - break; - default: - super.setHighLevelState(stateID, newState); - break; - } - } - - @Override - public Object getHighLevelState(String stateID) - { - switch (stateID) - { - case "out": - if (logicSwitch != null) - return logicSwitch.getValue(); - return null; - default: - return super.getHighLevelState(stateID); - } - } - - private void registerLogicObs(LogicObservable observable) - { - if (observable != null) - observable.registerObserver(logicObs); - } - - private void deregisterLogicObs(LogicObservable observable) - { - if (observable != null) - observable.deregisterObserver(logicObs); - } - - @Override - public boolean clicked(double x, double y) - { - if (logicSwitch != null) - logicSwitch.toggle(); - return true; - } - - public ManualSwitch getManualSwitch() - { - return logicSwitch; - } - - public Pin getOutputPin() - { - return outputPin; - } - - static - { - ViewLogicModelAdapter.addComponentAdapter(new ManualSwitchAdapter()); - IndirectGUIComponentCreator.setComponentProvider(GUIManualSwitch.class.getName(), (m, p) -> new GUIManualSwitch(m)); - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/atomic/GUINandGate.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/atomic/GUINandGate.java deleted file mode 100644 index f07b4324..00000000 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/atomic/GUINandGate.java +++ /dev/null @@ -1,22 +0,0 @@ -package net.mograsim.logic.ui.model.components.atomic; - -import net.mograsim.logic.core.components.gates.NandGate; -import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.logic.ui.modeladapter.ViewLogicModelAdapter; -import net.mograsim.logic.ui.modeladapter.componentadapters.SimpleGateAdapter; -import net.mograsim.logic.ui.serializing.IndirectGUIComponentCreator; - -public class GUINandGate extends SimpleRectangularGUIGate -{ - public GUINandGate(ViewModelModifiable model, int logicWidth) - { - super(model, logicWidth, "&", true); - setInputCount(2);// TODO make variable - } - - static - { - ViewLogicModelAdapter.addComponentAdapter(new SimpleGateAdapter<>(GUINandGate.class, NandGate::new)); - IndirectGUIComponentCreator.setComponentProvider(GUINandGate.class.getCanonicalName(), (m, p) -> new GUINandGate(m, p.getAsInt())); - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/atomic/GUINotGate.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/atomic/GUINotGate.java deleted file mode 100644 index f6ef0247..00000000 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/atomic/GUINotGate.java +++ /dev/null @@ -1,22 +0,0 @@ -package net.mograsim.logic.ui.model.components.atomic; - -import net.mograsim.logic.core.components.gates.NotGate; -import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.logic.ui.modeladapter.ViewLogicModelAdapter; -import net.mograsim.logic.ui.modeladapter.componentadapters.SimpleGateAdapter; -import net.mograsim.logic.ui.serializing.IndirectGUIComponentCreator; - -public class GUINotGate extends SimpleRectangularGUIGate -{ - public GUINotGate(ViewModelModifiable model, int logicWidth) - { - super(model, logicWidth, "1", true); - setInputCount(1); - } - - static - { - ViewLogicModelAdapter.addComponentAdapter(new SimpleGateAdapter<>(GUINotGate.class, (t, p, o, i) -> new NotGate(t, p, i[0], o))); - IndirectGUIComponentCreator.setComponentProvider(GUINotGate.class.getCanonicalName(), (m, p) -> new GUINotGate(m, p.getAsInt())); - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/atomic/GUIOrGate.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/atomic/GUIOrGate.java deleted file mode 100644 index 50050e04..00000000 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/atomic/GUIOrGate.java +++ /dev/null @@ -1,22 +0,0 @@ -package net.mograsim.logic.ui.model.components.atomic; - -import net.mograsim.logic.core.components.gates.OrGate; -import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.logic.ui.modeladapter.ViewLogicModelAdapter; -import net.mograsim.logic.ui.modeladapter.componentadapters.SimpleGateAdapter; -import net.mograsim.logic.ui.serializing.IndirectGUIComponentCreator; - -public class GUIOrGate extends SimpleRectangularGUIGate -{ - public GUIOrGate(ViewModelModifiable model, int logicWidth) - { - super(model, logicWidth, "\u22651", false);// ">=1" - setInputCount(2); - } - - static - { - ViewLogicModelAdapter.addComponentAdapter(new SimpleGateAdapter<>(GUIOrGate.class, OrGate::new)); - IndirectGUIComponentCreator.setComponentProvider(GUIOrGate.class.getCanonicalName(), (m, p) -> new GUIOrGate(m, p.getAsInt())); - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/atomic/SimpleRectangularGUIGate.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/atomic/SimpleRectangularGUIGate.java deleted file mode 100644 index 7debf238..00000000 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/atomic/SimpleRectangularGUIGate.java +++ /dev/null @@ -1,101 +0,0 @@ -package net.mograsim.logic.ui.model.components.atomic; - -import java.util.ArrayList; -import java.util.List; - -import org.eclipse.swt.graphics.Color; - -import com.google.gson.JsonElement; -import com.google.gson.JsonPrimitive; - -import net.haspamelodica.swt.helper.gcs.GeneralGC; -import net.haspamelodica.swt.helper.swtobjectwrappers.Font; -import net.haspamelodica.swt.helper.swtobjectwrappers.Point; -import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; -import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.logic.ui.model.components.GUIComponent; -import net.mograsim.logic.ui.model.wires.MovablePin; -import net.mograsim.logic.ui.model.wires.Pin; -import net.mograsim.preferences.Preferences; - -public class SimpleRectangularGUIGate extends GUIComponent -{ - private static final double width = 20; - private static final double pinDistance = 10; - private static final double fontHeight = 5; - private static final double invertedCircleDiam = 3.5; - - private final String label; - protected final int logicWidth; - private final boolean isInverted; - private final double rectWidth; - - private MovablePin outputPin; - private final List inputPins; - - protected SimpleRectangularGUIGate(ViewModelModifiable model, int logicWidth, String label, boolean isInverted) - { - super(model); - this.label = label; - this.logicWidth = logicWidth; - this.isInverted = isInverted; - this.rectWidth = width - (isInverted ? invertedCircleDiam : 0); - this.outputPin = new MovablePin(this, "Y", logicWidth, width, 0); - addPin(outputPin); - this.inputPins = new ArrayList<>(); - setInputCount(1); - } - - protected void setInputCount(int inputCount) - { - int oldInputCount = inputPins.size(); - setSize(width, inputCount * pinDistance); - if (oldInputCount > inputCount) - while (inputPins.size() > inputCount) - removePin(inputPins.remove(inputCount).name); - else if (oldInputCount < inputCount) - for (int i = oldInputCount; i < inputCount; i++) - { - // TODO what for more than 24 input pins? - Pin pin = new Pin(this, String.valueOf((char) ('A' + i)), logicWidth, 0, pinDistance / 2 + i * pinDistance); - inputPins.add(pin); - addPin(pin); - } - outputPin.setRelPos(width, inputCount * pinDistance / 2); - } - - @Override - public void render(GeneralGC gc, Rectangle visibleRegion) - { - Color foreground = Preferences.current().getColor("net.mograsim.logic.ui.color.foreground"); - if (foreground != null) - gc.setForeground(foreground); - double height = (getPins().size() - 1) * pinDistance; - gc.drawRectangle(getPosX(), getPosY(), rectWidth, height); - if (isInverted) - gc.drawOval(getPosX() + rectWidth, getPosY() + (height - invertedCircleDiam) / 2, invertedCircleDiam, invertedCircleDiam); - Font oldFont = gc.getFont(); - Font labelFont = new Font(oldFont.getName(), fontHeight, oldFont.getStyle()); - gc.setFont(labelFont); - Point textExtent = gc.textExtent(label); - Color textColor = Preferences.current().getColor("net.mograsim.logic.ui.color.text"); - if (textColor != null) - gc.setForeground(textColor); - gc.drawText(label, getPosX() + (rectWidth - textExtent.x) / 2, getPosY() + (height - textExtent.y) / 2, true); - gc.setFont(oldFont); - } - - // serializing - - /** - * {@link SimpleRectangularGUIGate}s implementation returns a {@link JsonPrimitive} of type int containing the {@link #logicWidth} of - * this component. - * - * @see GUIComponent#getParams() - */ - @Override - public JsonElement getParams() - { - return new JsonPrimitive(logicWidth); - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/atomic/TextComponent.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/atomic/TextComponent.java deleted file mode 100644 index d7255d35..00000000 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/atomic/TextComponent.java +++ /dev/null @@ -1,57 +0,0 @@ -package net.mograsim.logic.ui.model.components.atomic; - -import org.eclipse.swt.graphics.Color; - -import com.google.gson.JsonElement; -import com.google.gson.JsonPrimitive; - -import net.haspamelodica.swt.helper.gcs.GeneralGC; -import net.haspamelodica.swt.helper.swtobjectwrappers.Point; -import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; -import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.logic.ui.model.components.GUIComponent; -import net.mograsim.logic.ui.modeladapter.ViewLogicModelAdapter; -import net.mograsim.logic.ui.modeladapter.componentadapters.NoLogicAdapter; -import net.mograsim.logic.ui.serializing.IndirectGUIComponentCreator; -import net.mograsim.preferences.Preferences; - -//TODO clean size calculation mess -public class TextComponent extends GUIComponent -{ - private final String text; - - public TextComponent(ViewModelModifiable model, String text) - { - super(model); - this.text = text; - // If size is unset, it defaults to 0, which could prohibit this component from being rendered, which would prohibit the size being - // set to a better guess - setSize(1, 1); - } - - @Override - public void render(GeneralGC gc, Rectangle visibleRegion) - { - Point textExtent = gc.textExtent(text); - setSize(textExtent.x, textExtent.y); - - Color textColor = Preferences.current().getColor("net.mograsim.logic.ui.color.text"); - if (textColor != null) - gc.setForeground(textColor); - gc.drawText(text, getPosX(), getPosY(), true); - } - - // serializing - - @Override - public JsonElement getParams() - { - return new JsonPrimitive(text); - } - - static - { - ViewLogicModelAdapter.addComponentAdapter(new NoLogicAdapter<>(TextComponent.class)); - IndirectGUIComponentCreator.setComponentProvider(TextComponent.class.getName(), (m, p) -> new TextComponent(m, p.getAsString())); - } -} diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/submodels/SimpleRectangularSubmodelComponent.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/submodels/SimpleRectangularSubmodelComponent.java deleted file mode 100644 index d7ac643d..00000000 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/submodels/SimpleRectangularSubmodelComponent.java +++ /dev/null @@ -1,161 +0,0 @@ -package net.mograsim.logic.ui.model.components.submodels; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.HashSet; -import java.util.List; -import java.util.function.Function; - -import org.eclipse.swt.graphics.Color; - -import com.google.gson.JsonObject; - -import net.haspamelodica.swt.helper.gcs.GeneralGC; -import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; -import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.logic.ui.model.components.GUIComponent; -import net.mograsim.logic.ui.model.wires.MovablePin; -import net.mograsim.logic.ui.model.wires.Pin; -import net.mograsim.logic.ui.serializing.SubmodelComponentParams; -import net.mograsim.logic.ui.serializing.snippets.Renderer; -import net.mograsim.logic.ui.serializing.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer; -import net.mograsim.logic.ui.serializing.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer.SimpleRectangularLikeParams; -import net.mograsim.preferences.Preferences; - -public class SimpleRectangularSubmodelComponent extends SubmodelComponent -{ - private static final double width = 35; - private static final double pinDistance = 10; - private static final double pinNameMargin = .5; - private static final double labelFontHeight = 5; - private static final double pinNameFontHeight = 3.5; - - private final String label; - protected final int logicWidth; - - private final List inputPinNames; - private final List inputPinNamesUnmodifiable; - private final List outputPinNames; - private final List outputPinNamesUnmodifiable; - - private Renderer symbolRenderer; - - public SimpleRectangularSubmodelComponent(ViewModelModifiable model, int logicWidth, String label) - { - super(model); - this.label = label; - this.logicWidth = logicWidth; - this.inputPinNames = new ArrayList<>(); - this.inputPinNamesUnmodifiable = Collections.unmodifiableList(inputPinNames); - this.outputPinNames = new ArrayList<>(); - this.outputPinNamesUnmodifiable = Collections.unmodifiableList(outputPinNames); - - SimpleRectangularLikeParams rendererParams = new SimpleRectangularLikeParams(); - rendererParams.centerText = label; - rendererParams.centerTextHeight = labelFontHeight; - rendererParams.horizontalComponentCenter = getWidth() / 2; - rendererParams.pinLabelHeight = pinNameFontHeight; - rendererParams.pinLabelMargin = pinNameMargin; - symbolRenderer = new SimpleRectangularLikeSymbolRenderer(this, rendererParams); - } - - protected void setInputPins(String... pinNames) - { - setIOPins(0, inputPinNames, outputPinNames, pinNames); - } - - protected void setOutputPins(String... pinNames) - { - setIOPins(width, outputPinNames, inputPinNames, pinNames); - } - - private void setIOPins(double relX, List pinNamesListThisSide, List pinNamesListOtherSide, String... newPinNames) - { - int inputCount = newPinNames.length; - List newPinNamesList = Arrays.asList(newPinNames); - if (new HashSet<>(newPinNamesList).size() != inputCount) - throw new IllegalArgumentException("Pin names contain duplicates"); - for (String pinName : newPinNamesList) - if (pinNamesListOtherSide.contains(pinName)) - throw new IllegalArgumentException("Can't add pin. There is a pin on the other side with the same name: " + pinName); - super.setSize(width, Math.max(inputCount, pinNamesListOtherSide.size()) * pinDistance); - for (int i = 0; i < inputCount; i++) - { - String pinName = newPinNames[i]; - int oldPinIndex = pinNamesListThisSide.indexOf(pinName); - if (oldPinIndex == -1) - super.addSubmodelInterface(new MovablePin(this, pinName, logicWidth, relX, pinDistance / 2 + i * pinDistance)); - else - getSupermodelMovablePin(pinName).setRelPos(relX, pinDistance / 2 + i * pinDistance); - } - for (String pinName : pinNamesListThisSide) - if (!newPinNamesList.contains(pinName)) - super.removeSubmodelInterface(pinName); - pinNamesListThisSide.clear(); - pinNamesListThisSide.addAll(newPinNamesList); - } - - public List getInputPinNames() - { - return inputPinNamesUnmodifiable; - } - - public List getOutputPinNames() - { - return outputPinNamesUnmodifiable; - } - - @Override - protected void renderSymbol(GeneralGC gc, Rectangle visibleRegion) - { - symbolRenderer.render(gc, visibleRegion); - } - - @Override - protected void renderOutline(GeneralGC gc, Rectangle visibleRegion) - { - Color foreground = Preferences.current().getColor("net.mograsim.logic.ui.color.foreground"); - if (foreground != null) - gc.setForeground(foreground); - gc.drawRectangle(getBounds()); - } - - // serializing - - @Override - public SubmodelComponentParams calculateParams(Function getIdentifier) - { - SubmodelComponentParams params = super.calculateParams(getIdentifier); - JsonObject symbolRendererParams = new JsonObject(); - symbolRendererParams.addProperty("centerText", label); - symbolRendererParams.addProperty("horizontalComponentCenter", getWidth() / 2); - symbolRendererParams.addProperty("centerTextHeight", labelFontHeight); - symbolRendererParams.addProperty("pinLabelHeight", pinNameFontHeight); - symbolRendererParams.addProperty("pinLabelMargin", pinNameMargin); - params.symbolRendererSnippetID = "SimpleRectangularLikeSymbolRenderer"; - params.symbolRendererParams = symbolRendererParams; - return params; - } - - @Override - protected Pin addSubmodelInterface(MovablePin supermodelPin) - { - throw new UnsupportedOperationException( - "Can't add submodel interfaces to a SimpleRectangularSubmodelComponent directly, call setInputPins / setOutputPins instead"); - } - - @Override - protected void removeSubmodelInterface(String name) - { - throw new UnsupportedOperationException( - "Can't remove submodel interfaces of a SimpleRectangularSubmodelComponent directly, call setInputPins / setOutputPins instead"); - } - - @Override - protected void setSize(double width, double height) - { - throw new UnsupportedOperationException( - "Can't set the size of a SimpleRectangularSubmodelComponent directly, call setInputPins / setOutputPins instead"); - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/submodels/SubmodelComponent.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/submodels/SubmodelComponent.java deleted file mode 100644 index 49c2b5ce..00000000 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/submodels/SubmodelComponent.java +++ /dev/null @@ -1,593 +0,0 @@ -package net.mograsim.logic.ui.model.components.submodels; - -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; -import java.util.function.Function; - -import net.haspamelodica.swt.helper.gcs.GCConfig; -import net.haspamelodica.swt.helper.gcs.GeneralGC; -import net.haspamelodica.swt.helper.gcs.TranslatedGC; -import net.haspamelodica.swt.helper.swtobjectwrappers.Point; -import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; -import net.mograsim.logic.ui.LogicUIRenderer; -import net.mograsim.logic.ui.model.ViewModel; -import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.logic.ui.model.components.GUIComponent; -import net.mograsim.logic.ui.model.wires.GUIWire; -import net.mograsim.logic.ui.model.wires.MovablePin; -import net.mograsim.logic.ui.model.wires.Pin; -import net.mograsim.logic.ui.serializing.SubmodelComponentParams; -import net.mograsim.logic.ui.serializing.SubmodelComponentParams.InterfacePinParams; -import net.mograsim.logic.ui.serializing.SubmodelComponentParams.SubmodelParameters; -import net.mograsim.logic.ui.serializing.SubmodelComponentParams.SubmodelParameters.InnerComponentParams; -import net.mograsim.logic.ui.serializing.SubmodelComponentParams.SubmodelParameters.InnerWireParams; -import net.mograsim.logic.ui.serializing.SubmodelComponentParams.SubmodelParameters.InnerWireParams.InnerPinParams; - -/** - * A {@link GUIComponent} consisting of another model. A SubmodelComponent can have so-called "interface pins" connecting the - * inner and outer models. - */ -public abstract class SubmodelComponent extends GUIComponent -{ - /** - * A modifiable view of {@link #submodel}. - */ - protected final ViewModelModifiable submodelModifiable; - /** - * The model this {@link SubmodelComponent} consists of. - */ - public final ViewModel submodel; - /** - * The list of all submodel interface pins of this {@link SubmodelComponent} on the submodel side. - */ - private final Map submodelPins; - /** - * An unmodifiable view of {@link #submodelPins}. - */ - private final Map submodelMovablePinsUnmodifiable; - /** - * An unmodifiable view of {@link #submodelPins} where pins are not movable. - */ - private final Map submodelUnmovablePinsUnmodifiable; - /** - * The list of all submodel interface pins of this {@link SubmodelComponent} on the supermodel side. - */ - private final Map supermodelPins; - /** - * An unmodifiable view of {@link #supermodelPins}. - */ - private final Map supermodelMovablePinsUnmodifiable; - /** - * An unmodifiable view of {@link #supermodelPins} where pins are not movable. - */ - private final Map supermodelUnmovablePinsUnmodifiable; - /** - * A pseudo-component containing all submodel interface pins on the submodel side. - */ - private final SubmodelInterface submodelInterface; - - /** - * The list of all high level state IDs this component supports without delegating to subcomponents. - */ - private final Set highLevelAtomicStates; - /** - * A map of high level state subcomponent IDs to the {@link GUIComponent} high level state access requests are delegated to. - */ - private final Map subcomponentsByHighLevelStateSubcomponentID; - - /** - * The factor by which the submodel is scaled when rendering. - */ - private double submodelScale; - /** - * If this {@link SubmodelComponent} fills at least this amount of the visible region vertically or horizontally, the submodel starts to - * be visible. - */ - private double maxVisibleRegionFillRatioForAlpha0; - /** - * If this {@link SubmodelComponent} fills at least this amount of the visible region vertically or horizontally, the submodel is fully - * visible. - */ - private double minVisibleRegionFillRatioForAlpha1; - /** - * The renderer used for rendering the submodel. - */ - private final LogicUIRenderer renderer; - - // creation and destruction - - public SubmodelComponent(ViewModelModifiable model) - { - super(model); - this.submodelModifiable = new ViewModelModifiable(); - this.submodel = submodelModifiable; - this.submodelPins = new HashMap<>(); - this.submodelMovablePinsUnmodifiable = Collections.unmodifiableMap(submodelPins); - this.submodelUnmovablePinsUnmodifiable = Collections.unmodifiableMap(submodelPins); - this.supermodelPins = new HashMap<>(); - this.supermodelMovablePinsUnmodifiable = Collections.unmodifiableMap(supermodelPins); - this.supermodelUnmovablePinsUnmodifiable = Collections.unmodifiableMap(supermodelPins); - this.submodelInterface = new SubmodelInterface(submodelModifiable); - - this.highLevelAtomicStates = new HashSet<>(); - this.subcomponentsByHighLevelStateSubcomponentID = new HashMap<>(); - - this.submodelScale = 1; - this.maxVisibleRegionFillRatioForAlpha0 = 0.4; - this.minVisibleRegionFillRatioForAlpha1 = 0.8; - this.renderer = new LogicUIRenderer(submodelModifiable); - - submodelModifiable.addRedrawListener(this::requestRedraw); - } - - // pins - - /** - * Adds a new submodel interface pin. - * - * @param supermodelPin the submodel interface pin on the supermodel side - * - * @return the submodel interface pin on the submodel side - * - * @author Daniel Kirschten - */ - protected Pin addSubmodelInterface(MovablePin supermodelPin) - { - super.addPin(supermodelPin);// do this first to be fail-fast if the supermodel does not belong to this component - - String name = supermodelPin.name; - MovablePin submodelPin = new MovablePin(submodelInterface, name, supermodelPin.logicWidth, supermodelPin.getRelX() / submodelScale, - supermodelPin.getRelY() / submodelScale); - - submodelPin.addPinMovedListener(p -> - { - double newRelX = p.getRelX() * submodelScale; - double newRelY = p.getRelY() * submodelScale; - if (supermodelPin.getRelX() != newRelX || supermodelPin.getRelY() != newRelY) - supermodelPin.setRelPos(newRelX, newRelY); - }); - supermodelPin.addPinMovedListener(p -> - { - double newRelX = p.getRelX() / submodelScale; - double newRelY = p.getRelY() / submodelScale; - if (submodelPin.getRelX() != newRelX || submodelPin.getRelY() != newRelY) - submodelPin.setRelPos(newRelX, newRelY); - }); - - submodelInterface.addPin(submodelPin); - - submodelPins.put(name, submodelPin); - supermodelPins.put(name, supermodelPin); - - // no need to call requestRedraw() because addPin() will request a redraw - return submodelPin; - } - - /** - * Removes a submodel interface pin. - * - * @author Daniel Kirschten - */ - protected void removeSubmodelInterface(String name) - { - super.removePin(name);// do this first to be fail-fast if this component doesn't have a pin with the given name - Pin submodelPin = submodelPins.remove(name); - submodelInterface.removePin(submodelPin.name); - supermodelPins.remove(name); - - // no need to call requestRedraw() because removePin() will request a redraw - } - - /** - * Returns a collection of submodel interface pins on the submodel side of this component. - * - * @author Daniel Kirschten - */ - public Map getSubmodelPins() - { - return submodelUnmovablePinsUnmodifiable; - } - - /** - * Returns the submodel interface pin with the given name on the submodel side of this component. - * - * @author Daniel Kirschten - */ - public Pin getSubmodelPin(String name) - { - return getSubmodelMovablePin(name); - } - - /** - * Returns a collection of movable submodel interface pins on the submodel side of this component. - * - * @author Daniel Kirschten - */ - protected Map getSubmodelMovablePins() - { - return submodelMovablePinsUnmodifiable; - } - - /** - * Returns the movable submodel interface pin with the given name on the submodel side of this component. - * - * @author Daniel Kirschten - */ - protected MovablePin getSubmodelMovablePin(String name) - { - return submodelPins.get(name); - } - - /** - * Returns a collection of submodel interface pins on the supermodel side of this component. - * - * @author Daniel Kirschten - */ - public Map getSupermodelPins() - { - return supermodelUnmovablePinsUnmodifiable; - } - - /** - * Returns the submodel interface pin with the given name on the supermodel side of this component. - * - * @author Daniel Kirschten - */ - public Pin getSupermodelPin(String name) - { - return getSupermodelMovablePin(name); - } - - /** - * Returns a collection of movable submodel interface pins on the supermodel side of this component. - * - * @author Daniel Kirschten - */ - protected Map getSupermodelMovablePins() - { - return supermodelMovablePinsUnmodifiable; - } - - /** - * Returns the movable submodel interface pin with the given name on the supermodel side of this component. - * - * @author Daniel Kirschten - */ - protected MovablePin getSupermodelMovablePin(String name) - { - return supermodelPins.get(name); - } - - // high-level access - - /** - * Adds the given subcomponent ID to the set of allowed subcomponent IDs and links the given {@link GUIComponent} as the delegate target - * for this subcomponent ID.
- * Note that this method does not affect whether {@link #setSubcomponentHighLevelState(String, String, Object) - * set}/{@link #getSubcomponentHighLevelState(String, String)} will be called.
- * See {@link GUIComponent#setHighLevelState(String, Object)} for details about subcomponent IDs. - * - * @author Daniel Kirschten - */ - protected void addHighLevelStateSubcomponentID(String subcomponentID, GUIComponent subcomponent) - { - checkHighLevelStateIDPart(subcomponentID); - subcomponentsByHighLevelStateSubcomponentID.put(subcomponentID, subcomponent); - } - - /** - * Removes the given subcomponent ID from the set of allowed subcomponent IDs.
- * Note that this method does not affect whether {@link #setSubcomponentHighLevelState(String, String, Object) - * set}/{@link #getSubcomponentHighLevelState(String, String)} will be called.
- * See {@link GUIComponent#setHighLevelState(String, Object)} for details about subcomponent IDs. - * - * @author Daniel Kirschten - */ - protected void removeHighLevelStateSubcomponentID(String subcomponentID) - { - subcomponentsByHighLevelStateSubcomponentID.remove(subcomponentID); - } - - /** - * Adds the given atomic state ID to the set of allowed atomic state IDs.
- * See {@link GUIComponent#setHighLevelState(String, Object)} for details about atomic state IDs. - * - * @author Daniel Kirschten - */ - protected void addAtomicHighLevelStateID(String stateID) - { - checkHighLevelStateIDPart(stateID); - highLevelAtomicStates.add(stateID); - } - - /** - * Removes the given atomic state ID from the set of allowed atomic state IDs.
- * See {@link GUIComponent#setHighLevelState(String, Object)} for details about atomic state IDs. - * - * @author Daniel Kirschten - */ - protected void removeAtomicHighLevelStateID(String stateID) - { - highLevelAtomicStates.remove(stateID); - } - - @Override - public final void setHighLevelState(String stateID, Object newState) - { - int indexOfDot = stateID.indexOf('.'); - if (indexOfDot == -1) - if (highLevelAtomicStates.contains(stateID)) - setAtomicHighLevelState(stateID, newState); - else - super.setHighLevelState(stateID, newState); - else - setSubcomponentHighLevelState(stateID.substring(0, indexOfDot), stateID.substring(indexOfDot + 1), newState); - } - - /** - * This method is called in {@link #setHighLevelState(String, Object)} when the state ID is not atomic. The default implementation uses - * the information given to {@link #addHighLevelStateSubcomponentID(String, GUIComponent) - * add}/{@link #removeHighLevelStateSubcomponentID(String)} to decide which subcomponent to delegate to.
- * Note that {@link #addHighLevelStateSubcomponentID(String, GUIComponent) add}/{@link #removeHighLevelStateSubcomponentID(String)} - * don't affect whether this method will be called. - * - * @author Daniel Kirschten - */ - protected void setSubcomponentHighLevelState(String subcomponentID, String subcomponentHighLevelStateID, Object newState) - { - GUIComponent subcomponent = subcomponentsByHighLevelStateSubcomponentID.get(subcomponentID); - if (subcomponent != null) - subcomponent.setHighLevelState(subcomponentHighLevelStateID, newState); - else - super.setHighLevelState(subcomponentID + "." + subcomponentHighLevelStateID, newState); - } - - /** - * This method is called in {@link #setHighLevelState(String, Object)} when the state ID is atomic and in the set of allowed atomic - * state IDs.
- * See {@link GUIComponent#setHighLevelState(String, Object)} for details about atomic state IDs. - * - * @author Daniel Kirschten - */ - @SuppressWarnings({ "static-method", "unused" }) // this method is intended to be overridden - protected void setAtomicHighLevelState(String stateID, Object newState) - { - throw new IllegalStateException("Unknown high level state ID: " + stateID); - } - - @Override - public final Object getHighLevelState(String stateID) - { - int indexOfDot = stateID.indexOf('.'); - if (indexOfDot == -1) - { - if (highLevelAtomicStates.contains(stateID)) - return getAtomicHighLevelState(stateID); - return super.getHighLevelState(stateID); - } - return getSubcomponentHighLevelState(stateID.substring(0, indexOfDot), stateID.substring(indexOfDot + 1)); - } - - /** - * This method is called in {@link #getHighLevelState(String, Object)} when the state ID is not atomic. The default implementation uses - * the information given to {@link #addHighLevelStateSubcomponentID(String, GUIComponent) - * add}/{@link #removeHighLevelStateSubcomponentID(String)} to decide which subcomponent to delegate to.
- * Note that {@link #addHighLevelStateSubcomponentID(String, GUIComponent) add}/{@link #removeHighLevelStateSubcomponentID(String)} - * don't affect whether this method will be called. - * - * @author Daniel Kirschten - */ - protected Object getSubcomponentHighLevelState(String subcomponentID, String subcomponentHighLevelStateID) - { - GUIComponent subcomponent = subcomponentsByHighLevelStateSubcomponentID.get(subcomponentID); - if (subcomponent != null) - return subcomponent.getHighLevelState(subcomponentHighLevelStateID); - return super.getHighLevelState(subcomponentID + "." + subcomponentHighLevelStateID); - } - - /** - * This method is called in {@link SubmodelComponent#getHighLevelState(String)} when the state ID is in the set of allowed atomic state - * IDs.
- * See {@link GUIComponent#setHighLevelState(String, Object)} for details about atomic state IDs. - * - * @author Daniel Kirschten - */ - @SuppressWarnings("static-method") // this method is intended to be overridden - protected Object getAtomicHighLevelState(String stateID) - { - throw new IllegalStateException("Unknown high level state ID: " + stateID); - } - - private static void checkHighLevelStateIDPart(String stateIDPart) - { - if (stateIDPart.indexOf('.') != -1) - throw new IllegalArgumentException("Illegal high level state ID part (contains dot): " + stateIDPart); - - } - - // "graphical" operations - - /** - * Sets the factor by which the submodel is scaled when rendering and calls redrawListeners. Note that the submodel interface pins will - * stay at their position relative to the supermodel, which means they will move relative to the submodel. - * - * @author Daniel Kirschten - */ - protected void setSubmodelScale(double submodelScale) - { - this.submodelScale = submodelScale; - - for (Entry e : supermodelPins.entrySet()) - getSubmodelMovablePin(e.getKey()).setRelPos(e.getValue().getRelX() * submodelScale, e.getValue().getRelY() * submodelScale); - - requestRedraw();// needed if there is no submodel interface pin - } - - /** - * Returns the current factor by which the submodel is scaled when rendering. - * - * @author Daniel Kirschten - */ - protected double getSubmodelScale() - { - return submodelScale; - } - - @Override - public void render(GeneralGC gc, Rectangle visibleRegion) - { - GCConfig conf = new GCConfig(gc); - TranslatedGC tgc = new TranslatedGC(gc, getPosX(), getPosY(), submodelScale, true); - conf.reset(tgc); - double visibleRegionFillRatio = Math.max(getWidth() / visibleRegion.width, getHeight() / visibleRegion.height); - double alphaFactor = map(visibleRegionFillRatio, maxVisibleRegionFillRatioForAlpha0, minVisibleRegionFillRatioForAlpha1, 0, 1); - alphaFactor = Math.max(0, Math.min(1, alphaFactor)); - // we need to take the old alpha into account to support nested submodules better. - int oldAlpha = gc.getAlpha(); - int submodelAlpha = Math.max(0, Math.min(255, (int) (oldAlpha * alphaFactor))); - int labelAlpha = Math.max(0, Math.min(255, (int) (oldAlpha * (1 - alphaFactor)))); - if (submodelAlpha != 0) - { - gc.setAlpha(submodelAlpha); - renderer.render(tgc, visibleRegion.translate(getPosX() / submodelScale, getPosY() / submodelScale, 1 / submodelScale)); - } - if (labelAlpha != 0) - { - gc.setAlpha(labelAlpha); - renderSymbol(gc, visibleRegion); - } - conf.reset(gc); - // draw the outline after all other operations to make interface pins look better - renderOutline(gc, visibleRegion); - } - - // TODO make this a path - /** - * Render the outline of this {@link SubmodelComponent}, e.g. the graphical elements that should stay visible if the submodel is drawn. - * - * @author Daniel Kirschten - */ - protected abstract void renderOutline(GeneralGC gc, Rectangle visibleRegion); - - /** - * Render the symbol of this {@link SubmodelComponent}, e.g. the things that should be hidden if the submodel is drawn. - * - * @author Daniel Kirschten - */ - protected abstract void renderSymbol(GeneralGC gc, Rectangle visibleRegion); - - private static double map(double val, double valMin, double valMax, double mapMin, double mapMax) - { - return mapMin + (val - valMin) * (mapMax - mapMin) / (valMax - valMin); - } - - @Override - public boolean clicked(double x, double y) - { - double scaledX = (x - getPosX()) / submodelScale; - double scaledY = (y - getPosY()) / submodelScale; - for (GUIComponent component : submodel.getComponents()) - if (component.getBounds().contains(scaledX, scaledY) && component.clicked(scaledX, scaledY)) - return true; - return false; - } - - // serializing - - // TODO move the methods below to serializing classes - - public SubmodelComponentParams calculateParams() - { - return calculateParams(c -> "class:" + c.getClass().getCanonicalName()); - } - - /** - * @return {@link SubmodelComponentParams}, which describe this {@link SubmodelComponent}. - */ - public SubmodelComponentParams calculateParams(Function getIdentifier) - { - SubmodelComponentParams params = new SubmodelComponentParams(); - params.submodel = calculateSubmodelParams(getIdentifier); - - params.width = getWidth(); - params.height = getHeight(); - - InterfacePinParams[] iPins = new InterfacePinParams[getPins().size()]; - int i = 0; - for (Pin p : getPins().values()) - { - InterfacePinParams iPinParams = new InterfacePinParams(); - iPins[i] = iPinParams; - iPinParams.location = p.getRelPos(); - iPinParams.name = p.name; - iPinParams.logicWidth = p.logicWidth; - i++; - } - params.interfacePins = iPins; - return params; - } - - private SubmodelParameters calculateSubmodelParams(Function getIdentifier) - { - SubmodelParameters params = new SubmodelParameters(); - params.innerScale = getSubmodelScale(); - - List compList = submodel.getComponents(); - Iterator componentIt = compList.iterator(); - componentIt.next(); // Skip inner SubmodelInterface - InnerComponentParams[] comps = new InnerComponentParams[compList.size() - 1]; - int i = 0; - while (componentIt.hasNext()) - { - GUIComponent component = componentIt.next(); - InnerComponentParams inner = new InnerComponentParams(); - comps[i] = inner; - inner.pos = new Point(component.getPosX(), component.getPosY()); - inner.id = getIdentifier.apply(component); - inner.params = component.getParams(); - i++; - } - params.subComps = comps; - - List wireList = submodel.getWires(); - InnerWireParams wires[] = new InnerWireParams[wireList.size()]; - i = 0; - for (GUIWire wire : wireList) - { - InnerWireParams inner = new InnerWireParams(); - wires[i] = inner; - InnerPinParams pin1Params = new InnerPinParams(), pin2Params = new InnerPinParams(); - - pin1Params.pinName = wire.getPin1().name; - pin1Params.compId = compList.indexOf(wire.getPin1().component); - pin2Params.pinName = wire.getPin2().name; - pin2Params.compId = compList.indexOf(wire.getPin2().component); - inner.pin1 = pin1Params; - inner.pin2 = pin2Params; - inner.path = wire.getPath(); - i++; - } - params.innerWires = wires; - return params; - } - - // operations no longer supported - - @Override - protected void addPin(Pin pin) - { - throw new UnsupportedOperationException("Can't add pins to a SubmodelComponent directly, call addSubmodelInterface instead"); - } - - @Override - protected void removePin(String name) - { - throw new UnsupportedOperationException("Can't remove pins of a SubmodelComponent directly, call removeSubmodelInterface instead"); - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/submodels/SubmodelInterface.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/submodels/SubmodelInterface.java deleted file mode 100644 index 21b9e13c..00000000 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/submodels/SubmodelInterface.java +++ /dev/null @@ -1,50 +0,0 @@ -package net.mograsim.logic.ui.model.components.submodels; - -import net.haspamelodica.swt.helper.gcs.GeneralGC; -import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; -import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.logic.ui.model.components.GUIComponent; -import net.mograsim.logic.ui.model.wires.Pin; - -public class SubmodelInterface extends GUIComponent -{ - public SubmodelInterface(ViewModelModifiable model) - { - super(model); - } - - @Override - public void render(GeneralGC gc, Rectangle visibleRegion) - {// nothing to do here - } - - /** - * {@inheritDoc}
- * This method is only marked public in {@link SubmodelInterface} for {@link SubmodelComponent} to be able to add / remove pins to / - * from a SubmodelInterface.
- * - * @see GUIComponent#removePin(Pin) - * - * @author Daniel Kirschten - */ - @Override - public void addPin(Pin pin) - { - super.addPin(pin); - } - - /** - * {@inheritDoc}
- * This method is only marked public in {@link SubmodelInterface} for {@link SubmodelComponent} to be able to add / remove pins to / - * from a SubmodelInterface.
- * - * @see GUIComponent#removePin(Pin) - * - * @author Daniel Kirschten - */ - @Override - protected void removePin(String name) - { - super.removePin(name); - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/wires/ConnectionPoint.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/wires/ConnectionPoint.java deleted file mode 100644 index ed10286d..00000000 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/wires/ConnectionPoint.java +++ /dev/null @@ -1,13 +0,0 @@ -package net.mograsim.logic.ui.model.wires; - -public interface ConnectionPoint -{ - /** - * Retrieves the {@link Pin}, that is used by the {@link GUIWire} to connect to. - * - * @return the {@link Pin} for the wire to connect to. - * - * @author Christian Femers - */ - Pin getPin(); -} diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/wires/GUIWire.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/wires/GUIWire.java deleted file mode 100644 index 2e36c617..00000000 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/wires/GUIWire.java +++ /dev/null @@ -1,399 +0,0 @@ -package net.mograsim.logic.ui.model.wires; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -import org.eclipse.swt.SWT; - -import net.haspamelodica.swt.helper.gcs.GeneralGC; -import net.haspamelodica.swt.helper.swtobjectwrappers.Point; -import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; -import net.mograsim.logic.core.LogicObserver; -import net.mograsim.logic.core.types.BitVector; -import net.mograsim.logic.core.types.BitVectorFormatter; -import net.mograsim.logic.core.wires.Wire; -import net.mograsim.logic.core.wires.Wire.ReadEnd; -import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.preferences.ColorDefinition; -import net.mograsim.preferences.ColorManager; - -/** - * A wire connecting exactly two {@link Pin}s. - * - * @author Daniel Kirschten - */ -public class GUIWire -{ - - private final Set pathChangedListeners; - - /** - * The model this wire is a part of. - */ - private final ViewModelModifiable model; - /** - * The logical width of this wire. Is equal to the logical with of {@link #pin1} and {@link #pin2}. - */ - public final int logicWidth; - /** - * The {@link Pin} on one side of this wire, usually the signal source. - */ - private Pin pin1; - /** - * The {@link Pin} on one side of this wire, usually the signal target. - */ - private Pin pin2; - /** - * The user-defined path between {@link #pin1} and {@link #pin2}.
- * Special cases: null means "choose an interpolation as fits", and an empty array means "direct connection without any - * interpolation". - */ - private Point[] path; - /** - * The bounds of this wire, excluding line width (and line joins, if the line join is {@link SWT#JOIN_MITER}) - */ - private final Rectangle bounds; - /** - * The effective path of this wire, including automatic interpolation and the position of both {@link Pin}s. Is never null. - */ - protected double[] effectivePath; - - private final List redrawListeners; - - /** - * A LogicObserver calling redrawListeners. Used for logic model bindings. - */ - private final LogicObserver logicObs; - /** - * A ReadEnd of the logic wire this GUI wire currently is bound to. - */ - private ReadEnd end; - - // creation and destruction - - /** - * Creates a new {@link GUIWire} with automatic interpolation. - * - * @author Daniel Kirschten - */ - public GUIWire(ViewModelModifiable model, ConnectionPoint pin1, ConnectionPoint pin2) - { - this(model, pin1, pin2, (Point[]) null); - } - - /** - * Creates a new {@link GUIWire} without automatic interpolation. - * - * @author Daniel Kirschten - */ - public GUIWire(ViewModelModifiable model, ConnectionPoint pin1, ConnectionPoint pin2, Point... path) - { - this(model, pin1.getPin(), pin2.getPin(), path); - } - - /** - * Creates a new {@link GUIWire} without automatic interpolation. - * - * @author Daniel Kirschten - */ - GUIWire(ViewModelModifiable model, Pin pin1, Pin pin2, Point... path) - { - pathChangedListeners = new HashSet<>(); - logicObs = (i) -> callRedrawListeners(); - this.model = model; - this.logicWidth = pin1.logicWidth; - if (pin2.logicWidth != pin1.logicWidth) - throw new IllegalArgumentException("Can't connect pins of different logic width"); - - this.pin1 = pin1; - this.pin2 = pin2; - - this.path = path == null ? null : Arrays.copyOf(path, path.length); - this.bounds = new Rectangle(0, 0, -1, -1); - - redrawListeners = new ArrayList<>(); - - pin1.addPinMovedListener(p -> pinMoved()); - pin2.addPinMovedListener(p -> pinMoved()); - - recalculateEffectivePath(); - - model.wireCreated(this); - } - - /** - * Destroys this wire. This method implicitly calls {@link ViewModelModifiable#wireDestroyed(GUIWire) wireDestroyed()} for the model - * this component is a part of. - * - * @author Daniel Kirschten - */ - public void destroy() - { - model.wireDestroyed(this); - } - - // pins - - /** - * Returns the {@link Pin} on one side of this wire, usually the signal source. - * - * @author Daniel Kirschten - */ - public Pin getPin1() - { - return pin1; - } - - /** - * Returns the {@link Pin} on one side of this wire, usually the signal target. - * - * @author Daniel Kirschten - */ - public Pin getPin2() - { - return pin2; - } - - /** - * Called when {@link #pin1} or {@link #pin2} were moved. - * - * @author Daniel Kirschten - */ - private void pinMoved() - { - recalculateEffectivePath(); - callRedrawListeners(); - } - - // "graphical" operations - - /** - * Recalculates {@link #effectivePath} "from scratch". Also updates {@link #bounds}. - * - * @author Daniel Kirschten - */ - private void recalculateEffectivePath() - { - Point pos1 = pin1.getPos(), pos2 = pin2.getPos(); - - double boundsX1 = Math.min(pos1.x, pos2.x); - double boundsY1 = Math.min(pos1.y, pos2.y); - double boundsX2 = Math.max(pos1.x, pos2.x); - double boundsY2 = Math.max(pos1.y, pos2.y); - - if (path == null) - effectivePath = new double[] { pos1.x, pos1.y, (pos1.x + pos2.x) / 2, pos1.y, (pos1.x + pos2.x) / 2, pos2.y, pos2.x, pos2.y }; - else - { - effectivePath = new double[path.length * 2 + 4]; - effectivePath[0] = pos1.x; - effectivePath[1] = pos1.y; - for (int srcI = 0, dstI = 2; srcI < path.length; srcI++, dstI += 2) - { - double pathX = path[srcI].x; - double pathY = path[srcI].y; - effectivePath[dstI + 0] = pathX; - effectivePath[dstI + 1] = pathY; - if (pathX < boundsX1) - boundsX1 = pathX; - if (pathX > boundsX2) - boundsX2 = pathX; - if (pathY < boundsY1) - boundsY1 = pathY; - if (pathY > boundsY2) - boundsY2 = pathY; - } - effectivePath[effectivePath.length - 2] = pos2.x; - effectivePath[effectivePath.length - 1] = pos2.y; - } - - bounds.x = boundsX1; - bounds.y = boundsY1; - bounds.width = boundsX2 - boundsX1; - bounds.height = boundsY2 - boundsY1; - } - - /** - * Returns the bounds of this wire, excluding line width (and line joins, if the line join is {@link SWT#JOIN_MITER}) - * - * @author Daniel Kirschten - */ - public Rectangle getBounds() - { - return new Rectangle(bounds.x, bounds.y, bounds.width, bounds.height); - } - - /** - * Render this wire to the given gc, in absoulute coordinates. - * - * @author Daniel Kirschten - */ - public void render(GeneralGC gc) - { - ColorDefinition wireColor = BitVectorFormatter.formatAsColor(end); - if (wireColor != null) - gc.setForeground(ColorManager.current().toColor(wireColor)); - gc.drawPolyline(effectivePath); - } - - /** - * The user-defined path between {@link #pin1} and {@link #pin2}. Note that this is not neccessarily equal to the effective path drawn - * in {@link #render(GeneralGC)}.
- * Special cases: null means "choose an interpolation as fits", and an empty array means "direct connection without any - * interpolation". - * - * @author Daniel Kirschten - */ - public Point[] getPath() - { - return path == null ? null : path.clone(); - } - - // logic model binding - - /** - * Binds this {@link GUIWire} to the given {@link ReadEnd}: The color of this {@link GUIWire} will now depend on the state of the given - * {@link ReadEnd}, and further changes of the given {@link ReadEnd} will result in readrawListeners being called.
- * The argument can be null, in which case the old binding is stopped. - * - * @author Daniel Kirschten - */ - public void setLogicModelBinding(ReadEnd end) - { - if (this.end != null) - this.end.deregisterObserver(logicObs); - this.end = end; - if (end != null) - end.registerObserver(logicObs); - } - - /** - * Returns whether this {@link GUIWire} has a logic model binding or not. - * - * @author Daniel Kirschten - */ - public boolean hasLogicModelBinding() - { - return end != null; - } - - /** - * If this {@link GUIWire} has a logic model binding, delegates to {@link Wire#forceValues(BitVector)} for the {@link Wire} - * corresponding to this {@link GUIWire}. - * - * @author Daniel Kirschten - */ - public void forceWireValues(BitVector values) - { - end.getWire().forceValues(values); - } - - /** - * If this {@link GUIWire} has a logic model binding, delegates to {@link ReadEnd#getValues()} for the {@link ReadEnd} corresponding to - * this {@link GUIWire}. - * - * @author Daniel Kirschten - */ - public BitVector getWireValues() - { - return end.getValues(); - } - - // listeners - - // @formatter:off - public void addRedrawListener (Runnable listener) {redrawListeners .add (listener);} - - public void removeRedrawListener(Runnable listener) {redrawListeners .remove(listener);} - - private void callRedrawListeners() {redrawListeners.forEach(l -> l.run());} - - public void addPathChangedListener(PathChangedListener l) { pathChangedListeners.add(l); } - - public void removePathChangedListener(PathChangedListener l) { pathChangedListeners.remove(l); } - - public void callPathChangedListeners(int diff) { pathChangedListeners.forEach(l -> l.pathChanged(this, diff)); } - - @FunctionalInterface - public static interface PathChangedListener - { - /** - * Called whenever the {@link Wire}'s path changes - * - * @param wire The wire which had its path changed - * @param diff The length difference between before and after the path change. - */ - public void pathChanged(GUIWire wire, int diff); - } - // @formatter:on - - @Override - public String toString() - { - return "GUIWire [" + pin1 + "---" + pin2 + ", value=" + (end == null ? "null" : end.getValues()) + "]"; - } - - public void setPath(Point[] path) - { - int diff = (path == null ? 0 : path.length) - (this.path == null ? 0 : this.path.length); - this.path = path == null ? null : path.clone(); - recalculateEffectivePath(); - callPathChangedListeners(diff); - callRedrawListeners(); - } - - public void setPathPoint(Point p, int index) - { - path[index] = p; - recalculateEffectivePath(); - callPathChangedListeners(0); - callRedrawListeners(); - } - - public void insertPathPoint(Point p, int index) - { - Point[] path = getPath(); - if (path == null) - setPath(new Point[] { p }); - else - { - Point[] newPath = new Point[path.length + 1]; - System.arraycopy(path, 0, newPath, 0, index); - if (index < path.length) - System.arraycopy(path, index, newPath, index + 1, path.length - index); - newPath[index] = p; - setPath(newPath); - } - } - - public void removePathPoint(int index) - { - Point[] path = getPath(); - Point[] newPath = new Point[path.length - 1]; - System.arraycopy(path, 0, newPath, 0, index); - if (index < path.length - 1) - System.arraycopy(path, index + 1, newPath, index, path.length - index - 1); - setPath(newPath); - } - - /** - * @throws IndexOutOfBoundsException - */ - public Point getPathPoint(int index) - { - return path[index]; - } - - public int getPathLength() - { - return path.length; - } - - public double[] getEffectivePath() - { - return effectivePath.clone(); - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/wires/MovablePin.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/wires/MovablePin.java deleted file mode 100644 index f697a22f..00000000 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/wires/MovablePin.java +++ /dev/null @@ -1,22 +0,0 @@ -package net.mograsim.logic.ui.model.wires; - -import net.mograsim.logic.ui.model.components.GUIComponent; - -/** - * Exactly like {@link Pin}, but {@link #setRelPos(double, double) setRelPos(...)} is public. - * - * @author Daniel Kirschten - */ -public class MovablePin extends Pin -{ - public MovablePin(GUIComponent component, String name, int logicWidth, double relX, double relY) - { - super(component, name, logicWidth, relX, relY); - } - - @Override - public void setRelPos(double relX, double relY) - { - super.setRelPos(relX, relY); - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/wires/Pin.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/wires/Pin.java deleted file mode 100644 index b761c0e7..00000000 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/wires/Pin.java +++ /dev/null @@ -1,145 +0,0 @@ -package net.mograsim.logic.ui.model.wires; - -import java.util.ArrayList; -import java.util.List; -import java.util.function.Consumer; - -import net.haspamelodica.swt.helper.swtobjectwrappers.Point; -import net.mograsim.logic.ui.model.components.GUIComponent; - -/** - * A connection interface between a GUIComponent and the rest of a ViewModel. Pins usually are created by {@link GUIComponent}s themselves. - *
- * A pin has a name identifying it. Pin names are unique for a {@link GUIComponent}: Every pin of a {@link GUIComponent} has a different - * name, but different {@link GUIComponent}s can have pins with the same name. - * - * @author Daniel Kirschten - */ -public class Pin implements ConnectionPoint -{ - /** - * The {@link GUIComponent} this pin belongs to - */ - public final GUIComponent component; - /** - * The name identifying this pin. Is unique for a {@link GUIComponent}. - */ - public final String name; - /** - * The logical width of this pin. Denotes how many bits this pin consists of. - */ - public final int logicWidth; - - /** - * The X position of this pin, relative to its component's location. - */ - protected double relX; - /** - * The Y position of this pin, relative to its component's location. - */ - protected double relY; - - private final List> pinMovedListeners; - private final List redrawListeners; - - // creation and destruction - - /** - * Creates a new pin. Usually it is not needed to call this constructor manually, as {@link GUIComponent}s create their pins themselves. - * - * @author Daniel Kirschten - */ - public Pin(GUIComponent component, String name, int logicWidth, double relX, double relY) - { - this.component = component; - this.name = name; - this.logicWidth = logicWidth; - this.relX = relX; - this.relY = relY; - - this.pinMovedListeners = new ArrayList<>(); - this.redrawListeners = new ArrayList<>(); - - component.addComponentMovedListener(c -> callPinMovedListeners()); - } - - // "graphical" operations - - /** - * Returns the X position of this pin relative to the position of its component. - * - * @author Daniel Kirschten - */ - public double getRelX() - { - return relX; - } - - /** - * Returns the Y position of this pin relative to the position of its component. - * - * @author Daniel Kirschten - */ - public double getRelY() - { - return relY; - } - - /** - * Returns the position of this pin relative to the position of its component. - * - * @author Daniel Kirschten - */ - public Point getRelPos() - { - return new Point(relX, relY); - } - - /** - * Returns the absolute position of this pin. - * - * @author Daniel Kirschten - */ - public Point getPos() - { - return new Point(relX + component.getPosX(), relY + component.getPosY()); - } - - /** - * Sets the position of this pin relative to the position of its component. - * - * @author Daniel Kirschten - */ - protected void setRelPos(double relX, double relY) - { - this.relX = relX; - this.relY = relY; - callPinMovedListeners(); - callRedrawListeners(); - } - - // listeners - - // @formatter:off - public void addPinMovedListener (Consumer listener){pinMovedListeners.add (listener);} - public void addRedrawListener (Runnable listener){redrawListeners .add (listener);} - - public void removePinMovedListener(Consumer listener){pinMovedListeners.remove(listener);} - public void removeRedrawListener (Runnable listener){redrawListeners .remove(listener);} - - private void callPinMovedListeners() {pinMovedListeners.forEach(l -> l.accept(this));} - private void callRedrawListeners () {redrawListeners .forEach(l -> l.run ( ));} - // @formatter:on - - @Override - public String toString() - { - return "Pin [" + name + ", point=" + getPos() + "]"; - } - - @Override - public Pin getPin() - { - return this; - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/wires/WireCrossPoint.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/wires/WireCrossPoint.java deleted file mode 100644 index 1a3f893a..00000000 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/wires/WireCrossPoint.java +++ /dev/null @@ -1,124 +0,0 @@ -package net.mograsim.logic.ui.model.wires; - -import com.google.gson.JsonElement; -import com.google.gson.JsonPrimitive; - -import net.haspamelodica.swt.helper.gcs.GeneralGC; -import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; -import net.mograsim.logic.core.LogicObserver; -import net.mograsim.logic.core.types.BitVectorFormatter; -import net.mograsim.logic.core.wires.Wire.ReadEnd; -import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.logic.ui.model.components.GUIComponent; -import net.mograsim.logic.ui.serializing.IndirectGUIComponentCreator; -import net.mograsim.preferences.ColorDefinition; -import net.mograsim.preferences.ColorManager; - -/** - * A {@link GUIComponent} with only one pin. Is used to create wires connecting more than two pins.
- * Example: There are three pins P1, P2, P3 that need to be connected. Solution: Create a - * WireCrossPoint (WCP) and create the GUIWires P1-WCP, P2-WCP, - * P3-WCP.
- * Cross points are drawn as circles. The pin of cross points is in the center of this circle. - * - * @author Daniel Kirschten - */ -public class WireCrossPoint extends GUIComponent implements ConnectionPoint -{ - private static final int CIRCLE_RADIUS = 1; - private static final int CIRCLE_DIAM = CIRCLE_RADIUS * 2; - - /** - * The (single) pin of this cross point. - */ - private final Pin pin; - - /** - * A {@link LogicObserver} calling {@link #requestRedraw()}. - */ - private final LogicObserver logicObs; - /** - * The {@link ReadEnd} currently bound to this cross point. - */ - private ReadEnd end; - - // creation and destruction - - public WireCrossPoint(ViewModelModifiable model, int logicWidth) - { - super(model); - logicObs = (i) -> requestRedraw(); - - setSize(CIRCLE_DIAM, CIRCLE_DIAM); - addPin(this.pin = new Pin(this, "", logicWidth, CIRCLE_RADIUS, CIRCLE_RADIUS)); - } - - // pins - - @Override - public Pin getPin() - { - return pin; - } - - // "graphical" operations - - /** - * Moves the center (and therefore the pin) of this {@link WireCrossPoint} to the given location. - * - * @author Daniel Kirschten - */ - public void moveCenterTo(double x, double y) - { - moveTo(x - CIRCLE_RADIUS, y - CIRCLE_RADIUS); - } - - @Override - public void render(GeneralGC gc, Rectangle visibleRegion) - { - ColorDefinition wireColor = BitVectorFormatter.formatAsColor(end); - if (wireColor != null) - gc.setBackground(ColorManager.current().toColor(wireColor)); - gc.fillOval(getPosX(), getPosY(), CIRCLE_DIAM, CIRCLE_DIAM); - } - - // logic model binding - - /** - * Binds this {@link WireCrossPoint} to the given {@link ReadEnd}: The color of this {@link WireCrossPoint} will now depend on the state - * of the given {@link ReadEnd}, and further changes of the given {@link ReadEnd} will result in readrawListeners being called.
- * The argument can be null, in which case the old binding is stopped. - * - * @author Daniel Kirschten - */ - public void setLogicModelBinding(ReadEnd end) - { - if (this.end != null) - this.end.deregisterObserver(logicObs); - this.end = end; - if (end != null) - end.registerObserver(logicObs); - } - - /** - * Returns whether this {@link WireCrossPoint} has a logic model binding or not. - */ - public boolean hasLogicModelBinding() - { - return end != null; - } - - // serializing - - @Override - public JsonElement getParams() - { - return new JsonPrimitive(pin.logicWidth); - } - - static - { - IndirectGUIComponentCreator.setComponentProvider(WireCrossPoint.class.getCanonicalName(), - (m, p) -> new WireCrossPoint(m, p.getAsInt())); - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/modeladapter/LogicModelParameters.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/modeladapter/LogicModelParameters.java deleted file mode 100644 index d75cb1b9..00000000 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/modeladapter/LogicModelParameters.java +++ /dev/null @@ -1,7 +0,0 @@ -package net.mograsim.logic.ui.modeladapter; - -public class LogicModelParameters -{ - public int wireTravelTime; - public int gateProcessTime; -} \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/modeladapter/ViewLogicModelAdapter.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/modeladapter/ViewLogicModelAdapter.java deleted file mode 100644 index 88e7c1b8..00000000 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/modeladapter/ViewLogicModelAdapter.java +++ /dev/null @@ -1,156 +0,0 @@ -package net.mograsim.logic.ui.modeladapter; - -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; -import java.util.function.Function; -import java.util.stream.Collectors; - -import net.mograsim.logic.core.timeline.Timeline; -import net.mograsim.logic.core.wires.Wire; -import net.mograsim.logic.core.wires.Wire.ReadEnd; -import net.mograsim.logic.ui.model.ViewModel; -import net.mograsim.logic.ui.model.components.GUIComponent; -import net.mograsim.logic.ui.model.components.submodels.SubmodelComponent; -import net.mograsim.logic.ui.model.components.submodels.SubmodelInterface; -import net.mograsim.logic.ui.model.wires.GUIWire; -import net.mograsim.logic.ui.model.wires.Pin; -import net.mograsim.logic.ui.model.wires.WireCrossPoint; -import net.mograsim.logic.ui.modeladapter.componentadapters.ComponentAdapter; - -public class ViewLogicModelAdapter -{ - private final static Map, ComponentAdapter> componentAdapters = new HashMap<>(); - - public static void addComponentAdapter(ComponentAdapter componentAdapter) - { - componentAdapters.put(componentAdapter.getSupportedClass(), componentAdapter); - } - - public static Timeline convert(ViewModel viewModel, LogicModelParameters params) - { - // TODO replace Timeline with LogicModel as soon as it exists - Timeline timeline = new Timeline(10); - - convert(viewModel, params, timeline, Map.of()); - - return timeline; - } - - private static void convert(ViewModel viewModel, LogicModelParameters params, Timeline timeline, Map externalWires) - { - Map logicWiresPerPin = convertWires(getAllPins(viewModel), viewModel.getWires(), externalWires, params, timeline); - Map logicWiresPerPinUnmodifiable = Collections.unmodifiableMap(logicWiresPerPin); - - for (GUIComponent guiComp : viewModel.getComponents()) - { - if (guiComp instanceof SubmodelComponent) - { - SubmodelComponent guiCompCasted = (SubmodelComponent) guiComp; - Map supermodelPins = guiCompCasted.getSupermodelPins(); - Map externalWiresForSubmodel = supermodelPins.entrySet().stream() - .collect(Collectors.toMap(e -> guiCompCasted.getSubmodelPin(e.getKey()), e -> logicWiresPerPin.get(e.getValue()))); - convert(guiCompCasted.submodel, params, timeline, externalWiresForSubmodel); - } else if (guiComp instanceof WireCrossPoint) - { - WireCrossPoint guiCompCasted = (WireCrossPoint) guiComp; - guiCompCasted.setLogicModelBinding(logicWiresPerPin.get(guiCompCasted.getPin()).createReadOnlyEnd()); - } else if (!(guiComp instanceof SubmodelInterface))// nothing to do for SubmodelInterfaces - createAndLinkComponent(timeline, params, guiComp, logicWiresPerPinUnmodifiable, componentAdapters.get(guiComp.getClass())); - } - } - - private static Set getAllPins(ViewModel viewModel) - { - return viewModel.getComponents().stream().flatMap(component -> component.getPins().values().stream()).collect(Collectors.toSet()); - } - - private static Map convertWires(Set allPins, List wires, Map externalWires, - LogicModelParameters params, Timeline timeline) - { - Map> connectedPinGroups = getConnectedPinGroups(allPins, wires); - Map logicWiresPerPin = createLogicWires(params, timeline, connectedPinGroups, externalWires); - setGUIWiresLogicModelBinding(wires, logicWiresPerPin); - return logicWiresPerPin; - } - - private static Map createLogicWires(LogicModelParameters params, Timeline timeline, Map> connectedPinGroups, - Map externalWires) - { - Map logicWiresPerPin = new HashMap<>(); - Map, Wire> logicWiresPerPinGroup = new HashMap<>(); - for (Entry> e : connectedPinGroups.entrySet()) - logicWiresPerPin.put(e.getKey(), logicWiresPerPinGroup.computeIfAbsent(e.getValue(), set -> - { - Wire externalWire = null; - for (Pin p : set) - { - Wire externalWireCandidate = externalWires.get(p); - if (externalWireCandidate != null) - if (externalWire == null) - externalWire = externalWireCandidate; - else if (externalWire.length == externalWireCandidate.length) - Wire.fuse(externalWire, externalWireCandidate); - else - throw new IllegalArgumentException( - "Two pins to external wires with different logicWidths can't be connected directly"); - } - return externalWire == null ? new Wire(timeline, e.getKey().logicWidth, params.wireTravelTime) : externalWire; - })); - return logicWiresPerPin; - } - - private static void setGUIWiresLogicModelBinding(List wires, Map logicWiresPerPin) - { - Map guiWireSharedReadEnd = logicWiresPerPin.values().stream().distinct() - .collect(Collectors.toMap(Function.identity(), Wire::createReadOnlyEnd)); - for (GUIWire guiWire : wires) - guiWire.setLogicModelBinding(guiWireSharedReadEnd.get(logicWiresPerPin.get(guiWire.getPin1()))); - } - - private static Map> getConnectedPinGroups(Set allPins, List wires) - { - Map> connectedPinsPerPin = new HashMap<>(); - - for (Pin p : allPins) - { - HashSet connectedPins = new HashSet<>(); - connectedPins.add(p); - connectedPinsPerPin.put(p, connectedPins); - } - - wires.forEach(wire -> - { - Pin pin1 = wire.getPin1(); - Pin pin2 = wire.getPin2(); - - Set pin1ConnectedPins = connectedPinsPerPin.get(pin1); - Set pin2ConnectedPins = connectedPinsPerPin.get(pin2); - - pin1ConnectedPins.addAll(pin2ConnectedPins); - pin1ConnectedPins.add(pin1); - pin1ConnectedPins.add(pin2); - - pin2ConnectedPins.forEach(pin -> connectedPinsPerPin.put(pin, pin1ConnectedPins)); - }); - return connectedPinsPerPin; - } - - @SuppressWarnings("unchecked") - private static void createAndLinkComponent(Timeline timeline, LogicModelParameters params, - GUIComponent guiComponent, Map logicWiresPerPin, ComponentAdapter adapter) - { - if (adapter == null) - throw new IllegalArgumentException("Unknown component class: " + guiComponent.getClass()); - adapter.createAndLinkComponent(timeline, params, (G) guiComponent, logicWiresPerPin); - } - - private ViewLogicModelAdapter() - { - throw new UnsupportedOperationException("No ViewLogicModelConverter instances"); - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/modeladapter/componentadapters/BitDisplayAdapter.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/modeladapter/componentadapters/BitDisplayAdapter.java deleted file mode 100644 index 33d4ac18..00000000 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/modeladapter/componentadapters/BitDisplayAdapter.java +++ /dev/null @@ -1,29 +0,0 @@ -package net.mograsim.logic.ui.modeladapter.componentadapters; - -import java.util.Map; - -import net.mograsim.logic.core.components.BitDisplay; -import net.mograsim.logic.core.timeline.Timeline; -import net.mograsim.logic.core.wires.Wire; -import net.mograsim.logic.core.wires.Wire.ReadEnd; -import net.mograsim.logic.ui.model.components.atomic.GUIBitDisplay; -import net.mograsim.logic.ui.model.wires.Pin; -import net.mograsim.logic.ui.modeladapter.LogicModelParameters; - -public class BitDisplayAdapter implements ComponentAdapter -{ - @Override - public Class getSupportedClass() - { - return GUIBitDisplay.class; - } - - @Override - public void createAndLinkComponent(Timeline timeline, LogicModelParameters params, GUIBitDisplay guiComponent, - Map logicWiresPerPin) - { - ReadEnd end = logicWiresPerPin.get(guiComponent.getInputPin()).createReadOnlyEnd(); - BitDisplay bitDisplay = new BitDisplay(timeline, end); - guiComponent.setLogicModelBinding(bitDisplay); - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/modeladapter/componentadapters/ComponentAdapter.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/modeladapter/componentadapters/ComponentAdapter.java deleted file mode 100644 index 85cff71e..00000000 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/modeladapter/componentadapters/ComponentAdapter.java +++ /dev/null @@ -1,16 +0,0 @@ -package net.mograsim.logic.ui.modeladapter.componentadapters; - -import java.util.Map; - -import net.mograsim.logic.core.timeline.Timeline; -import net.mograsim.logic.core.wires.Wire; -import net.mograsim.logic.ui.model.components.GUIComponent; -import net.mograsim.logic.ui.model.wires.Pin; -import net.mograsim.logic.ui.modeladapter.LogicModelParameters; - -public interface ComponentAdapter -{ - public Class getSupportedClass(); - - public void createAndLinkComponent(Timeline timeline, LogicModelParameters params, G guiComponent, Map logicWiresPerPin); -} \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/modeladapter/componentadapters/ManualSwitchAdapter.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/modeladapter/componentadapters/ManualSwitchAdapter.java deleted file mode 100644 index d623dab2..00000000 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/modeladapter/componentadapters/ManualSwitchAdapter.java +++ /dev/null @@ -1,29 +0,0 @@ -package net.mograsim.logic.ui.modeladapter.componentadapters; - -import java.util.Map; - -import net.mograsim.logic.core.components.ManualSwitch; -import net.mograsim.logic.core.timeline.Timeline; -import net.mograsim.logic.core.wires.Wire; -import net.mograsim.logic.core.wires.Wire.ReadWriteEnd; -import net.mograsim.logic.ui.model.components.atomic.GUIManualSwitch; -import net.mograsim.logic.ui.model.wires.Pin; -import net.mograsim.logic.ui.modeladapter.LogicModelParameters; - -public class ManualSwitchAdapter implements ComponentAdapter -{ - @Override - public Class getSupportedClass() - { - return GUIManualSwitch.class; - } - - @Override - public void createAndLinkComponent(Timeline timeline, LogicModelParameters params, GUIManualSwitch guiComponent, - Map logicWiresPerPin) - { - ReadWriteEnd end = logicWiresPerPin.get(guiComponent.getOutputPin()).createReadWriteEnd(); - ManualSwitch manualSwitch = new ManualSwitch(timeline, end); - guiComponent.setLogicModelBinding(manualSwitch, end); - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/modeladapter/componentadapters/NoLogicAdapter.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/modeladapter/componentadapters/NoLogicAdapter.java deleted file mode 100644 index d07da2e9..00000000 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/modeladapter/componentadapters/NoLogicAdapter.java +++ /dev/null @@ -1,36 +0,0 @@ -package net.mograsim.logic.ui.modeladapter.componentadapters; - -import java.util.Map; - -import net.mograsim.logic.core.timeline.Timeline; -import net.mograsim.logic.core.wires.Wire; -import net.mograsim.logic.ui.model.components.GUIComponent; -import net.mograsim.logic.ui.model.wires.Pin; -import net.mograsim.logic.ui.modeladapter.LogicModelParameters; - -/** - * For GUIComponents that do not have any simulation logic behaviour - * - * @author Christian Femers - */ -public class NoLogicAdapter implements ComponentAdapter -{ - private final Class guiComponentClass; - - public NoLogicAdapter(Class guiComponentClass) - { - this.guiComponentClass = guiComponentClass; - } - - @Override - public Class getSupportedClass() - { - return guiComponentClass; - } - - @Override - public void createAndLinkComponent(Timeline timeline, LogicModelParameters params, T guiComponent, Map logicWiresPerPin) - { - // do nothing - } -} diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/modeladapter/componentadapters/SimpleGateAdapter.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/modeladapter/componentadapters/SimpleGateAdapter.java deleted file mode 100644 index 0460906d..00000000 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/modeladapter/componentadapters/SimpleGateAdapter.java +++ /dev/null @@ -1,50 +0,0 @@ -package net.mograsim.logic.ui.modeladapter.componentadapters; - -import java.util.Map; - -import net.mograsim.logic.core.components.Component; -import net.mograsim.logic.core.timeline.Timeline; -import net.mograsim.logic.core.wires.Wire; -import net.mograsim.logic.core.wires.Wire.ReadEnd; -import net.mograsim.logic.core.wires.Wire.ReadWriteEnd; -import net.mograsim.logic.ui.model.components.atomic.SimpleRectangularGUIGate; -import net.mograsim.logic.ui.model.wires.Pin; -import net.mograsim.logic.ui.modeladapter.LogicModelParameters; - -public class SimpleGateAdapter implements ComponentAdapter -{ - private final Class supportedClass; - private final ComponentConstructor constructor; - - public SimpleGateAdapter(Class supportedClass, ComponentConstructor constructor) - { - this.supportedClass = supportedClass; - this.constructor = constructor; - } - - @Override - public Class getSupportedClass() - { - return supportedClass; - } - - @Override - public void createAndLinkComponent(Timeline timeline, LogicModelParameters params, G guiComponent, Map logicWiresPerPin) - { - ReadWriteEnd out = logicWiresPerPin.get(guiComponent.getPin("Y")).createReadWriteEnd(); - - // TODO can we do this prettier? - int inputPinCount = guiComponent.getPins().size() - 1; - ReadEnd[] ins = new ReadEnd[inputPinCount]; - for (int i = 0; i < inputPinCount; i++) - ins[i] = logicWiresPerPin.get(guiComponent.getPin(String.valueOf((char) ('A' + i)))).createReadOnlyEnd(); - - constructor.newComponent(timeline, params.gateProcessTime, out, ins); - } - - public static interface ComponentConstructor - { - public Component newComponent(Timeline timeline, int processTime, ReadWriteEnd out, ReadEnd[] ins); - } - -} \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/serializing/CodeSnippetSupplier.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/serializing/CodeSnippetSupplier.java deleted file mode 100644 index d6bdbb45..00000000 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/serializing/CodeSnippetSupplier.java +++ /dev/null @@ -1,111 +0,0 @@ -package net.mograsim.logic.ui.serializing; - -import java.io.IOException; -import java.io.InputStream; -import java.util.HashMap; -import java.util.Map; - -import net.mograsim.logic.ui.serializing.snippets.Renderer; -import net.mograsim.logic.ui.serializing.snippets.SnippetSupplier; -import net.mograsim.logic.ui.serializing.snippets.outlinerenderers.DefaultOutlineRenderer; -import net.mograsim.logic.ui.serializing.snippets.symbolrenderers.DefaultSymbolRenderer; -import net.mograsim.logic.ui.util.JsonHandler; - -public class CodeSnippetSupplier -{ - // public static members - public static final CodeSnippetSupplier symbolRendererProviderSupplier; - public static final CodeSnippetSupplier outlineRendererProviderSupplier; - - static - { - symbolRendererProviderSupplier = new CodeSnippetSupplier<>(SnippetSupplier.create(Void.class, DefaultSymbolRenderer::new)); - outlineRendererProviderSupplier = new CodeSnippetSupplier<>(SnippetSupplier.create(Void.class, DefaultOutlineRenderer::new)); - } - - // per-instance members - - private final Map standardSnippetIDClassNames = new HashMap<>(); - private final Map> snippetProvidersForClassNames = new HashMap<>(); - private final SnippetSupplier defaultSnippetProvider; - - private CodeSnippetSupplier(SnippetSupplier defaultSnippetProvider) - { - this.defaultSnippetProvider = defaultSnippetProvider; - } - - public void addStandardSnippetID(String standardSnippetID, String associatedSnippetClassName) - { - standardSnippetIDClassNames.put(standardSnippetID, associatedSnippetClassName); - } - - public void setSnippetProvider(String id, SnippetSupplier snippetProvider) - { - snippetProvidersForClassNames.put(id, snippetProvider); - } - - // TODO report errors - public SnippetSupplier getSnippetProvider(String id) - { - if (id != null) - { - String snippetProviderClassName; - if (id.startsWith("class:")) - snippetProviderClassName = id.substring(6); - else - snippetProviderClassName = standardSnippetIDClassNames.get(id); - if (snippetProviderClassName != null) - { - tryLoadSnippetClass(snippetProviderClassName); - SnippetSupplier snippetProvider = snippetProvidersForClassNames.get(snippetProviderClassName); - if (snippetProvider != null) - return snippetProvider; - } - } - System.err.println("Couldn't load snippet " + id + "; using default"); - return defaultSnippetProvider; - } - - // static helpers - - static - { - try (InputStream s = IndirectGUIComponentCreator.class.getResourceAsStream("./standardSnippetIDMapping.json")) - { - if (s == null) - throw new IOException("Resource not found"); - SnippetIDClassNames tmp = JsonHandler.readJson(s, SnippetIDClassNames.class); - tmp.standardOutlineRendererProviders.forEach(outlineRendererProviderSupplier::addStandardSnippetID); - tmp.standardSymbolRendererProviders.forEach(symbolRendererProviderSupplier::addStandardSnippetID); - } - catch (Exception e) - { - System.err.println("Failed to initialize standard snippet ID mapping: "); - e.printStackTrace(); - } - } - - private static class SnippetIDClassNames - { - public Map standardOutlineRendererProviders; - public Map standardSymbolRendererProviders; - } - - private static void tryLoadSnippetClass(String snippetClassName) - { - tryInvokeStaticInitializer(snippetClassName, "Error getting snippet class: %s: %s\n"); - } - - public static void tryInvokeStaticInitializer(String className, String errorMessageFormat) - { - try - { - Class.forName(className, true, CodeSnippetSupplier.class.getClassLoader()); - } - catch (ClassNotFoundException e) - { - System.err.printf(errorMessageFormat, className, "ClassNotFoundException thrown: " + e.getMessage()); - } - } - -} \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/serializing/DeserializedSubmodelComponent.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/serializing/DeserializedSubmodelComponent.java deleted file mode 100644 index fbcf0809..00000000 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/serializing/DeserializedSubmodelComponent.java +++ /dev/null @@ -1,87 +0,0 @@ -package net.mograsim.logic.ui.serializing; - -import java.util.Map; - -import net.haspamelodica.swt.helper.gcs.GeneralGC; -import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; -import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.logic.ui.model.components.submodels.SubmodelComponent; -import net.mograsim.logic.ui.model.wires.MovablePin; -import net.mograsim.logic.ui.model.wires.Pin; -import net.mograsim.logic.ui.serializing.snippets.Renderer; - -public class DeserializedSubmodelComponent extends SubmodelComponent -{ - public Renderer outlineRenderer; - public Renderer symbolRenderer; - - public DeserializedSubmodelComponent(ViewModelModifiable model) - { - super(model); - } - - @Override - protected void renderOutline(GeneralGC gc, Rectangle visibleRegion) - { - if (outlineRenderer != null) - outlineRenderer.render(gc, visibleRegion); - } - - @Override - protected void renderSymbol(GeneralGC gc, Rectangle visibleRegion) - { - if (symbolRenderer != null) - symbolRenderer.render(gc, visibleRegion); - } - - public void setOutlineRenderer(Renderer outlineRenderer) - { - this.outlineRenderer = outlineRenderer; - } - - public void setSymbolRenderer(Renderer symbolRenderer) - { - this.symbolRenderer = symbolRenderer; - } - - public ViewModelModifiable getSubmodelModifiable() - { - return submodelModifiable; - } - - @Override - public void setSubmodelScale(double submodelScale) - { - super.setSubmodelScale(submodelScale); - } - - @Override - public double getSubmodelScale() - { - return super.getSubmodelScale(); - } - - @Override - public Map getSubmodelMovablePins() - { - return super.getSubmodelMovablePins(); - } - - @Override - public void setSize(double width, double height) - { - super.setSize(width, height); - } - - @Override - public Pin addSubmodelInterface(MovablePin supermodelPin) - { - return super.addSubmodelInterface(supermodelPin); - } - - @Override - public void removeSubmodelInterface(String name) - { - super.removeSubmodelInterface(name); - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/serializing/IndirectGUIComponentCreator.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/serializing/IndirectGUIComponentCreator.java deleted file mode 100644 index 5e25c8bd..00000000 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/serializing/IndirectGUIComponentCreator.java +++ /dev/null @@ -1,97 +0,0 @@ -package net.mograsim.logic.ui.serializing; - -import java.io.IOException; -import java.io.InputStream; -import java.util.Collection; -import java.util.HashMap; -import java.util.Map; - -import com.google.gson.JsonElement; - -import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.logic.ui.model.components.GUIComponent; -import net.mograsim.logic.ui.util.JsonHandler; - -public class IndirectGUIComponentCreator -{ - private static final Map standardComponentIDs = new HashMap<>(); - - private static final Map componentProviders = new HashMap<>(); - - static - { - try (InputStream s = IndirectGUIComponentCreator.class.getResourceAsStream("./standardComponentIDMapping.json")) - { - if (s == null) - throw new IOException("Resource not found"); - Map tmp = JsonHandler.readJson(s, Map.class); - // don't use putAll to apply sanity checks - tmp.forEach((st, id) -> - { - try - { - addStandardComponentID(st, id); - } - catch (IllegalArgumentException e) - { - System.err.println("Component ID mapping contained illegal entry: " + e.getMessage()); - } - }); - } - catch (IOException e) - { - System.err.println("Failed to initialize standard snippet ID mapping: " + e.getMessage()); - } - } - - public static Collection getStandardComponentIDs() - { - return standardComponentIDs.keySet(); - } - - public static void addStandardComponentID(String standardComponentID, String associatedComponentID) - { - if (!associatedComponentID.startsWith("file:") && !associatedComponentID.startsWith("class:")) - throw new IllegalArgumentException("Unrecognized component ID format: " + associatedComponentID); - standardComponentIDs.put(standardComponentID, associatedComponentID); - } - - public static void setComponentProvider(String className, ComponentProvider componentProvider) - { - componentProviders.put(className, componentProvider); - } - - public static GUIComponent createComponent(ViewModelModifiable model, String id, JsonElement params) - { - if (id != null) - { - String resolvedID; - if (id.startsWith("class:") || id.startsWith("file:")) - resolvedID = id; - else - resolvedID = standardComponentIDs.get(id); - if (resolvedID.startsWith("class:")) - { - String className = resolvedID.substring(6); - tryLoadComponentClass(className); - ComponentProvider componentProvider = componentProviders.get(className); - if (componentProvider != null) - return componentProvider.create(model, params); - } else - // we know id has to start with "file:" here - // because standardComponentIDs only contains strings starting with "class:" or "file:" - return SubmodelComponentDeserializer.create(model, resolvedID.substring(5)); - } - throw new RuntimeException("Could not get component provider for ID " + id); - } - - private static void tryLoadComponentClass(String componentClassName) - { - CodeSnippetSupplier.tryInvokeStaticInitializer(componentClassName, "Error loading component class %s: %s\n"); - } - - public static interface ComponentProvider - { - public GUIComponent create(ViewModelModifiable model, JsonElement params); - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/serializing/SubmodelComponentDeserializer.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/serializing/SubmodelComponentDeserializer.java deleted file mode 100644 index 20961a7d..00000000 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/serializing/SubmodelComponentDeserializer.java +++ /dev/null @@ -1,96 +0,0 @@ -package net.mograsim.logic.ui.serializing; - -import java.io.IOException; - -import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.logic.ui.model.components.GUIComponent; -import net.mograsim.logic.ui.model.components.submodels.SimpleRectangularSubmodelComponent; -import net.mograsim.logic.ui.model.components.submodels.SubmodelComponent; -import net.mograsim.logic.ui.model.wires.GUIWire; -import net.mograsim.logic.ui.model.wires.MovablePin; -import net.mograsim.logic.ui.serializing.SubmodelComponentParams.InterfacePinParams; -import net.mograsim.logic.ui.serializing.SubmodelComponentParams.SubmodelParameters; -import net.mograsim.logic.ui.serializing.SubmodelComponentParams.SubmodelParameters.InnerComponentParams; -import net.mograsim.logic.ui.serializing.SubmodelComponentParams.SubmodelParameters.InnerWireParams; - -/** - * Creates {@link SubmodelComponent}s from {@link SubmodelComponentParams} - */ -public final class SubmodelComponentDeserializer -{ - /** - * Creates a {@link SubmodelComponent} from the {@link SubmodelComponentParams}, specified at the given path. The returned - * SubmodelComponent can also be e.g. a {@link SimpleRectangularSubmodelComponent}, depending on what the - * {@link SubmodelComponentParams} describe. - * - * @param path The path of the file describing the {@link SubmodelComponentParams}, which define the new {@link SubmodelComponent} - * @return A new SubmodelComponent, as described in the file located at the given path - */ - public static SubmodelComponent create(ViewModelModifiable model, String path) - { - try - { - SubmodelComponentParams params = SubmodelComponentParams.readJson(path); - SubmodelComponent ret = create(model, params); - return ret; - } - catch (IOException e) - { - System.err.println("Failed to construct GUICustomComponent. Parameters were not found."); - e.printStackTrace(); - } - return new SimpleRectangularSubmodelComponent(model, 0, "ERROR"); - } - - /** - * Creates a {@link SubmodelComponent} from the specified {@link SubmodelComponentParams}. The returned SubmodelComponent can also be - * e.g. a {@link SimpleRectangularSubmodelComponent}, depending on what the {@link SubmodelComponentParams} describe. - * - * @param params The parameters describing the {@link SubmodelComponent} - * - * @return A new SubmodelComponent, as described by the {@link SubmodelComponentParams} - */ - public static SubmodelComponent create(ViewModelModifiable model, SubmodelComponentParams params) - { - DeserializedSubmodelComponent comp = createSubmodelComponent(model, params); - initSubmodel(comp, params.submodel); - return comp; - } - - private static DeserializedSubmodelComponent createSubmodelComponent(ViewModelModifiable model, SubmodelComponentParams params) - { - DeserializedSubmodelComponent comp = new DeserializedSubmodelComponent(model); - comp.setSubmodelScale(params.submodel.innerScale); - comp.setOutlineRenderer(CodeSnippetSupplier.outlineRendererProviderSupplier.getSnippetProvider(params.outlineRendererSnippetID) - .create(comp, params.outlineRendererParams)); - comp.setSymbolRenderer(CodeSnippetSupplier.symbolRendererProviderSupplier.getSnippetProvider(params.symbolRendererSnippetID) - .create(comp, params.symbolRendererParams)); - // TODO high level states - comp.setSize(params.width, params.height); - for (InterfacePinParams iPinParams : params.interfacePins) - comp.addSubmodelInterface( - new MovablePin(comp, iPinParams.name, iPinParams.logicWidth, iPinParams.location.x, iPinParams.location.y)); - return comp; - } - - @SuppressWarnings("unused") - private static void initSubmodel(DeserializedSubmodelComponent comp, SubmodelParameters params) - { - GUIComponent[] components = new GUIComponent[params.subComps.length]; - for (int i = 0; i < components.length; i++) - { - InnerComponentParams cParams = params.subComps[i]; - String path = cParams.id; - components[i] = IndirectGUIComponentCreator.createComponent(comp.getSubmodelModifiable(), cParams.id, cParams.params); - components[i].moveTo(cParams.pos.x, cParams.pos.y); - } - - for (int i = 0; i < params.innerWires.length; i++) - { - InnerWireParams innerWire = params.innerWires[i]; - new GUIWire(comp.getSubmodelModifiable(), - comp.getSubmodelModifiable().getComponents().get(innerWire.pin1.compId).getPin(innerWire.pin1.pinName), - comp.getSubmodelModifiable().getComponents().get(innerWire.pin2.compId).getPin(innerWire.pin2.pinName), innerWire.path); - } - } -} diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/serializing/SubmodelComponentParams.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/serializing/SubmodelComponentParams.java deleted file mode 100644 index e2a0e482..00000000 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/serializing/SubmodelComponentParams.java +++ /dev/null @@ -1,82 +0,0 @@ -package net.mograsim.logic.ui.serializing; - -import java.io.IOException; - -import com.google.gson.JsonElement; - -import net.haspamelodica.swt.helper.swtobjectwrappers.Point; -import net.mograsim.logic.ui.model.components.submodels.SubmodelComponent; -import net.mograsim.logic.ui.util.JsonHandler; - -/** - * This class contains all the information necessary to create a new {@link SubmodelComponent} - */ -public class SubmodelComponentParams -{ - // basic stuff - public double width, height; - public InterfacePinParams[] interfacePins; - public SubmodelParameters submodel; - - // functionality that needs to be expressed in Java code - public String outlineRendererSnippetID; - public JsonElement outlineRendererParams; - - public String symbolRendererSnippetID; - public JsonElement symbolRendererParams; - - public static class InterfacePinParams - { - public Point location; - public String name; - public int logicWidth; - } - - public static class SubmodelParameters - { - public double innerScale; - public InnerComponentParams[] subComps; - public InnerWireParams[] innerWires; - - public static class InnerComponentParams - { - public Point pos; - public String id; - public JsonElement params; - } - - public static class InnerWireParams - { - public InnerPinParams pin1, pin2; - public Point[] path; - - public static class InnerPinParams - { - public int compId; - public String pinName; - } - } - } - - public static SubmodelComponentParams readJson(String path) throws IOException - { - return JsonHandler.readJson(path, SubmodelComponentParams.class); - } - - /** - * Writes this {@link SubmodelComponentParams} object into a file in json format. The correct file extension is important! Check - * {@link SubmodelComponentParams}.fileExtension - */ - public void writeJson(String path) - { - try - { - JsonHandler.writeJson(this, path); - } - catch (IOException e) - { - System.err.println("Failed to write SubComponentParams to file"); - e.printStackTrace(); - } - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/serializing/snippets/Renderer.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/serializing/snippets/Renderer.java deleted file mode 100644 index bc0f3939..00000000 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/serializing/snippets/Renderer.java +++ /dev/null @@ -1,9 +0,0 @@ -package net.mograsim.logic.ui.serializing.snippets; - -import net.haspamelodica.swt.helper.gcs.GeneralGC; -import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; - -public interface Renderer -{ - public void render(GeneralGC gc, Rectangle visibleRegion); -} \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/serializing/snippets/SnippetSupplier.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/serializing/snippets/SnippetSupplier.java deleted file mode 100644 index 3adb9e8d..00000000 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/serializing/snippets/SnippetSupplier.java +++ /dev/null @@ -1,38 +0,0 @@ -package net.mograsim.logic.ui.serializing.snippets; - -import java.util.function.BiFunction; - -import com.google.gson.Gson; -import com.google.gson.JsonElement; - -import net.mograsim.logic.ui.model.components.submodels.SubmodelComponent; - -public interface SnippetSupplier -{ - public Class

getParamClass(); - - public S create(SubmodelComponent component, P params); - - public default S create(SubmodelComponent component, JsonElement params) - { - return create(component, new Gson().fromJson(params, getParamClass())); - } - - public static SnippetSupplier create(Class

paramClass, BiFunction supplier) - { - return new SnippetSupplier<>() - { - @Override - public Class

getParamClass() - { - return paramClass; - } - - @Override - public S create(SubmodelComponent component, P params) - { - return supplier.apply(component, params); - } - }; - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/serializing/snippets/outlinerenderers/DefaultOutlineRenderer.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/serializing/snippets/outlinerenderers/DefaultOutlineRenderer.java deleted file mode 100644 index 8fe41c65..00000000 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/serializing/snippets/outlinerenderers/DefaultOutlineRenderer.java +++ /dev/null @@ -1,37 +0,0 @@ -package net.mograsim.logic.ui.serializing.snippets.outlinerenderers; - -import net.haspamelodica.swt.helper.gcs.GeneralGC; -import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; -import net.mograsim.logic.ui.model.components.GUIComponent; -import net.mograsim.logic.ui.model.components.submodels.SubmodelComponent; -import net.mograsim.logic.ui.serializing.CodeSnippetSupplier; -import net.mograsim.logic.ui.serializing.snippets.Renderer; -import net.mograsim.logic.ui.serializing.snippets.SnippetSupplier; -import net.mograsim.preferences.ColorDefinition; -import net.mograsim.preferences.ColorManager; -import net.mograsim.preferences.Preferences; - -public class DefaultOutlineRenderer implements Renderer -{ - private final GUIComponent component; - - public DefaultOutlineRenderer(SubmodelComponent component, @SuppressWarnings("unused") Void params) - { - this.component = component; - } - - @Override - public void render(GeneralGC gc, Rectangle visibleRegion) - { - ColorDefinition fg = Preferences.current().getColorDefinition("net.mograsim.logic.ui.color.foreground"); - if (fg != null) - gc.setForeground(ColorManager.current().toColor(fg)); - gc.drawRectangle(component.getBounds()); - } - - static - { - CodeSnippetSupplier.outlineRendererProviderSupplier.setSnippetProvider(DefaultOutlineRenderer.class.getCanonicalName(), - SnippetSupplier.create(Void.class, DefaultOutlineRenderer::new)); - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/serializing/snippets/symbolrenderers/CenteredTextSymbolRenderer.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/serializing/snippets/symbolrenderers/CenteredTextSymbolRenderer.java deleted file mode 100644 index 2309f148..00000000 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/serializing/snippets/symbolrenderers/CenteredTextSymbolRenderer.java +++ /dev/null @@ -1,58 +0,0 @@ -package net.mograsim.logic.ui.serializing.snippets.symbolrenderers; - -import net.haspamelodica.swt.helper.gcs.GeneralGC; -import net.haspamelodica.swt.helper.swtobjectwrappers.Font; -import net.haspamelodica.swt.helper.swtobjectwrappers.Point; -import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; -import net.mograsim.logic.ui.model.components.GUIComponent; -import net.mograsim.logic.ui.model.components.submodels.SubmodelComponent; -import net.mograsim.logic.ui.serializing.CodeSnippetSupplier; -import net.mograsim.logic.ui.serializing.snippets.Renderer; -import net.mograsim.logic.ui.serializing.snippets.SnippetSupplier; -import net.mograsim.preferences.ColorDefinition; -import net.mograsim.preferences.ColorManager; -import net.mograsim.preferences.Preferences; - -/** - * Renders a text ("text") with a given font height ("height") in the center of the component. - * - * @author Daniel Kirschten - */ -public class CenteredTextSymbolRenderer implements Renderer -{ - private final GUIComponent component; - private final CenteredTextParams params; - - public CenteredTextSymbolRenderer(SubmodelComponent component, CenteredTextParams params) - { - this.component = component; - this.params = params; - - } - - @Override - public void render(GeneralGC gc, Rectangle visibleRegion) - { - Font oldFont = gc.getFont(); - gc.setFont(new Font(oldFont.getName(), params.fontHeight, oldFont.getStyle())); - ColorDefinition fg = Preferences.current().getColorDefinition("net.mograsim.logic.ui.color.text"); - if (fg != null) - gc.setForeground(ColorManager.current().toColor(fg)); - Point idSize = gc.textExtent(params.text); - Rectangle bounds = component.getBounds(); - gc.drawText(params.text, bounds.x + (bounds.width - idSize.x) / 2, bounds.y + (bounds.height - idSize.y) / 2, true); - gc.setFont(oldFont); - } - - public static class CenteredTextParams - { - public String text; - public double fontHeight; - } - - static - { - CodeSnippetSupplier.symbolRendererProviderSupplier.setSnippetProvider(CenteredTextSymbolRenderer.class.getCanonicalName(), - SnippetSupplier.create(CenteredTextParams.class, CenteredTextSymbolRenderer::new)); - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/serializing/snippets/symbolrenderers/DefaultSymbolRenderer.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/serializing/snippets/symbolrenderers/DefaultSymbolRenderer.java deleted file mode 100644 index 4600531f..00000000 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/serializing/snippets/symbolrenderers/DefaultSymbolRenderer.java +++ /dev/null @@ -1,42 +0,0 @@ -package net.mograsim.logic.ui.serializing.snippets.symbolrenderers; - -import net.haspamelodica.swt.helper.gcs.GeneralGC; -import net.haspamelodica.swt.helper.swtobjectwrappers.Point; -import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; -import net.mograsim.logic.ui.model.components.GUIComponent; -import net.mograsim.logic.ui.model.components.submodels.SubmodelComponent; -import net.mograsim.logic.ui.serializing.CodeSnippetSupplier; -import net.mograsim.logic.ui.serializing.snippets.Renderer; -import net.mograsim.logic.ui.serializing.snippets.SnippetSupplier; -import net.mograsim.preferences.ColorDefinition; -import net.mograsim.preferences.ColorManager; -import net.mograsim.preferences.Preferences; - -public class DefaultSymbolRenderer implements Renderer -{ - private static final String id = ""; - - private final GUIComponent component; - - public DefaultSymbolRenderer(SubmodelComponent component, @SuppressWarnings("unused") Void params) - { - this.component = component; - } - - @Override - public void render(GeneralGC gc, Rectangle visibleRegion) - { - ColorDefinition fg = Preferences.current().getColorDefinition("net.mograsim.logic.ui.color.text"); - if (fg != null) - gc.setForeground(ColorManager.current().toColor(fg)); - Point idSize = gc.textExtent(id); - Rectangle bounds = component.getBounds(); - gc.drawText(id, bounds.x + (bounds.width - idSize.x) / 2, bounds.y + (bounds.height - idSize.y) / 2, true); - } - - static - { - CodeSnippetSupplier.symbolRendererProviderSupplier.setSnippetProvider(DefaultSymbolRenderer.class.getCanonicalName(), - SnippetSupplier.create(Void.class, DefaultSymbolRenderer::new)); - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/serializing/snippets/symbolrenderers/SimpleRectangularLikeSymbolRenderer.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/serializing/snippets/symbolrenderers/SimpleRectangularLikeSymbolRenderer.java deleted file mode 100644 index 515c9c44..00000000 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/serializing/snippets/symbolrenderers/SimpleRectangularLikeSymbolRenderer.java +++ /dev/null @@ -1,82 +0,0 @@ -package net.mograsim.logic.ui.serializing.snippets.symbolrenderers; - -import java.util.Map.Entry; - -import org.eclipse.swt.graphics.Color; - -import net.haspamelodica.swt.helper.gcs.GeneralGC; -import net.haspamelodica.swt.helper.swtobjectwrappers.Font; -import net.haspamelodica.swt.helper.swtobjectwrappers.Point; -import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; -import net.mograsim.logic.ui.model.components.GUIComponent; -import net.mograsim.logic.ui.model.components.submodels.SubmodelComponent; -import net.mograsim.logic.ui.model.wires.Pin; -import net.mograsim.logic.ui.serializing.CodeSnippetSupplier; -import net.mograsim.logic.ui.serializing.snippets.Renderer; -import net.mograsim.logic.ui.serializing.snippets.SnippetSupplier; -import net.mograsim.preferences.Preferences; - -/** - * Renders a text ("centerText") with a given font height ("centerTextHeight") in the center of the component and - * draws a label for each pin with a given font height ("pinLabelHeight"). The labels of pins to the left of a given x - * coordinate ("horizontalComponentCenter") are drawn to the right of the respective pin; labels of pins to the right are drawn - * left. A margin ("pinLabelMargin") is applied for pin label drawing. - * - * @author Daniel Kirschten - */ -public class SimpleRectangularLikeSymbolRenderer implements Renderer -{ - private final GUIComponent component; - private final SimpleRectangularLikeParams params; - - public SimpleRectangularLikeSymbolRenderer(SubmodelComponent component, SimpleRectangularLikeParams params) - { - this.component = component; - this.params = params; - } - - @Override - public void render(GeneralGC gc, Rectangle visibleRegion) - { - double posX = component.getPosX(); - double posY = component.getPosY(); - double width = component.getWidth(); - double height = component.getHeight(); - - Font oldFont = gc.getFont(); - gc.setFont(new Font(oldFont.getName(), params.centerTextHeight, oldFont.getStyle())); - Point textExtent = gc.textExtent(params.centerText); - Color textColor = Preferences.current().getColor("net.mograsim.logic.ui.color.text"); - if (textColor != null) - gc.setForeground(textColor); - gc.drawText(params.centerText, posX + (width - textExtent.x) / 2, posY + (height - textExtent.y) / 2, true); - gc.setFont(new Font(oldFont.getName(), params.pinLabelHeight, oldFont.getStyle())); - for (Entry pinEntry : component.getPins().entrySet()) - { - String pinName = pinEntry.getKey(); - Pin pin = pinEntry.getValue(); - double pinX = pin.getRelX(); - double pinY = posY + pin.getRelY(); - textExtent = gc.textExtent(pinName); - gc.drawText(pinName, - posX + pinX + (pinX > params.horizontalComponentCenter ? -textExtent.x - params.pinLabelMargin : params.pinLabelMargin), - pinY - textExtent.y / 2, true); - } - gc.setFont(oldFont); - } - - public static class SimpleRectangularLikeParams - { - public String centerText; - public double centerTextHeight; - public double horizontalComponentCenter; - public double pinLabelHeight; - public double pinLabelMargin; - } - - static - { - CodeSnippetSupplier.symbolRendererProviderSupplier.setSnippetProvider(SimpleRectangularLikeSymbolRenderer.class.getCanonicalName(), - SnippetSupplier.create(SimpleRectangularLikeParams.class, SimpleRectangularLikeSymbolRenderer::new)); - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/serializing/standardComponentIDMapping.json b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/serializing/standardComponentIDMapping.json deleted file mode 100644 index 366f9c24..00000000 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/serializing/standardComponentIDMapping.json +++ /dev/null @@ -1,36 +0,0 @@ -mograsim version: 0.1.3 -{ - "GUIAm2901": "file:components/am2901/GUIAm2901.json", - "GUIAm2901ALUFuncDecode": "file:components/am2901/GUIAm2901ALUFuncDecode.json", - "GUIAm2901ALUInclDecode": "file:components/am2901/GUIAm2901ALUInclDecode.json", - "GUIAm2901ALUInclSourceDecodeInclFunctionDecode": "file:components/am2901/GUIAm2901ALUInclSourceDecodeInclFunctionDecode.json", - "GUIAm2901ALUOneBit": "file:components/am2901/GUIAm2901ALUOneBit.json", - "GUIAm2901DestDecode": "file:components/am2901/GUIAm2901DestDecode.json", - "GUIAm2901QReg": "file:components/am2901/GUIAm2901QReg.json", - "GUIAm2901SourceDecode": "file:components/am2901/GUIAm2901SourceDecode.json", - "GUIAndGate": "class:net.mograsim.logic.ui.model.components.atomic.GUIAndGate", - "GUINandGate": "class:net.mograsim.logic.ui.model.components.atomic.GUINandGate", - "GUIOrGate": "class:net.mograsim.logic.ui.model.components.atomic.GUIOrGate", - "GUI_rsLatch": "file:components/GUI_rsLatch.json", - "GUIand": "file:components/GUIand.json", - "GUIand41": "file:components/GUIand41.json", - "GUIandor414": "file:components/GUIandor414.json", - "GUIdemux2": "file:components/GUIdemux2.json", - "GUIdff": "file:components/GUIdff.json", - "GUIdlatch": "file:components/GUIdlatch.json", - "GUIdlatch4": "file:components/GUIdlatch4.json", - "GUIfulladder": "file:components/GUIfulladder.json", - "GUIhalfadder": "file:components/GUIhalfadder.json", - "GUImux1": "file:components/GUImux1.json", - "GUImux1_4": "file:components/GUImux1_4.json", - "GUInand3": "file:components/GUInand3.json", - "GUInot4": "file:components/GUInot4.json", - "GUIor4": "file:components/GUIor4.json", - "GUIor_4": "file:components/GUIor_4.json", - "GUIram2": "file:components/GUIram2.json", - "GUIram4": "file:components/GUIram4.json", - "GUIsel2_4": "file:components/GUIsel2_4.json", - "GUIsel3_4": "file:components/GUIsel3_4.json", - "GUIxor": "file:components/GUIxor.json", - "WireCrossPoint": "class:net.mograsim.logic.ui.model.wires.WireCrossPoint" -} \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/serializing/standardSnippetIDMapping.json b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/serializing/standardSnippetIDMapping.json deleted file mode 100644 index 7cdc9f32..00000000 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/serializing/standardSnippetIDMapping.json +++ /dev/null @@ -1,8 +0,0 @@ -mograsim version: 0.1.3 -{ - "standardOutlineRendererProviders": {}, - "standardSymbolRendererProviders": { - "CenteredTextSymbolRenderer": "net.mograsim.logic.ui.serializing.snippets.symbolrenderers.CenteredTextSymbolRenderer", - "SimpleRectangularLikeSymbolRenderer": "net.mograsim.logic.ui.serializing.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer" - } -} \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/util/JsonHandler.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/util/JsonHandler.java deleted file mode 100644 index df482666..00000000 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/util/JsonHandler.java +++ /dev/null @@ -1,56 +0,0 @@ -package net.mograsim.logic.ui.util; - -import java.io.BufferedReader; -import java.io.FileInputStream; -import java.io.FileWriter; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.util.stream.Collectors; - -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; - -public class JsonHandler -{ - private static Gson parser = new GsonBuilder().setPrettyPrinting().create(); - - public static T readJson(String path, Class type) throws IOException - { - try (FileInputStream jsonStream = new FileInputStream(path)) - { - return readJson(jsonStream, type); - } - } - - /** - * @param input The Stream is closed after being read - */ - public static T readJson(InputStream input, Class type) throws IOException - { - try (InputStreamReader reader = new InputStreamReader(input); BufferedReader bf = new BufferedReader(reader)) - { - return fromJson(bf.lines().collect(Collectors.joining("\n")), type); - } - } - - public static T fromJson(String src, Class type) - { - // TODO actually parse and compare version - String rawJson = src.lines().dropWhile(s -> s.length() == 0 || s.charAt(0) != '{').collect(Collectors.joining()); - return parser.fromJson(rawJson, type); - } - - public static void writeJson(Object o, String path) throws IOException - { - try (FileWriter writer = new FileWriter(path)) - { - writer.write(toJson(o)); - } - } - - public static String toJson(Object o) - { - return String.format("mograsim version: %s\n%s", Version.jsonCompVersion.toString(), parser.toJson(o)); - } -} diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/util/ModellingTool.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/util/ModellingTool.java deleted file mode 100644 index 61252ea4..00000000 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/util/ModellingTool.java +++ /dev/null @@ -1,36 +0,0 @@ -package net.mograsim.logic.ui.util; - -import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.logic.ui.model.components.GUIComponent; -import net.mograsim.logic.ui.model.wires.ConnectionPoint; -import net.mograsim.logic.ui.model.wires.GUIWire; - -public class ModellingTool -{ - private ViewModelModifiable model; - - ModellingTool(ViewModelModifiable model) - { - this.model = model; - } - - public GUIWire connect(GUIComponent a, GUIComponent b, String pinA, String pinB) - { - return connect(a.getPin(pinA), b.getPin(pinB)); - } - - public GUIWire connect(ConnectionPoint a, GUIComponent b, String pinB) - { - return connect(a, b.getPin(pinB)); - } - - public GUIWire connect(ConnectionPoint a, ConnectionPoint b) - { - return new GUIWire(model, a, b); - } - - public static ModellingTool createFor(ViewModelModifiable model) - { - return new ModellingTool(model); - } -} diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/util/Version.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/util/Version.java deleted file mode 100644 index aa845682..00000000 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/util/Version.java +++ /dev/null @@ -1,69 +0,0 @@ -package net.mograsim.logic.ui.util; - -public final class Version -{ - public final static Version jsonCompVersion = new Version(0, 1, 3); - public final int major, minor, patch; - - public Version(int major, int minor, int patch) - { - super(); - this.major = major; - this.minor = minor; - this.patch = patch; - } - - public int[] getVersionNumbers() - { - return new int[] { major, minor, patch }; - } - - @Override - public String toString() - { - return major + "." + minor + "." + patch; - } - - @Override - public int hashCode() - { - final int prime = 31; - int result = 1; - result = prime * result + major; - result = prime * result + minor; - result = prime * result + patch; - return result; - } - - @Override - public boolean equals(Object obj) - { - if (this == obj) - return true; - if (!(obj instanceof Version)) - return false; - Version other = (Version) obj; - if (major != other.major) - return false; - if (minor != other.minor) - return false; - if (patch != other.patch) - return false; - return true; - } - - public boolean is(int major) - { - return major != this.major; - } - - public boolean is(int major, int minor) - { - return is(major) && this.minor == minor; - } - - public boolean is(int major, int minor, int patch) - { - return is(major, minor) && this.patch == patch; - } -} \ No newline at end of file diff --git a/net.mograsim.plugin.core/META-INF/MANIFEST.MF b/net.mograsim.plugin.core/META-INF/MANIFEST.MF index b125d7eb..fa50b3b2 100644 --- a/net.mograsim.plugin.core/META-INF/MANIFEST.MF +++ b/net.mograsim.plugin.core/META-INF/MANIFEST.MF @@ -7,7 +7,6 @@ Export-Package: net.mograsim.plugin;uses:="org.eclipse.ui.themes,org.eclipse.swt net.mograsim.plugin.asm, net.mograsim.plugin.asm.editor, net.mograsim.plugin.asm.editor.rules, - net.mograsim.plugin.asm.model, net.mograsim.plugin.nature, net.mograsim.plugin.views Require-Bundle: org.eclipse.core.runtime, @@ -20,8 +19,8 @@ Require-Bundle: org.eclipse.core.runtime, org.eclipse.e4.ui.di, org.eclipse.e4.ui.model.workbench, org.eclipse.ui.themes;bundle-version="1.2.400", - net.mograsim.logic.ui;bundle-version="0.1.0";visibility:=reexport, - net.mograsim.logic.ui.am2900;bundle-version="0.1.0";visibility:=reexport, + net.mograsim.logic.model;bundle-version="0.1.0";visibility:=reexport, + net.mograsim.logic.model.am2900;bundle-version="0.1.0";visibility:=reexport, javax.annotation;bundle-version="1.0.0", net.mograsim.preferences;bundle-version="0.1.0" Bundle-RequiredExecutionEnvironment: JavaSE-11 diff --git a/net.mograsim.plugin.core/src/net/mograsim/plugin/SimulationPreview.java b/net.mograsim.plugin.core/src/net/mograsim/plugin/SimulationPreview.java index d76cd59f..03cdbb4b 100644 --- a/net.mograsim.plugin.core/src/net/mograsim/plugin/SimulationPreview.java +++ b/net.mograsim.plugin.core/src/net/mograsim/plugin/SimulationPreview.java @@ -7,16 +7,16 @@ import org.eclipse.ui.themes.IThemePreview; import net.haspamelodica.swt.helper.swtobjectwrappers.Point; import net.mograsim.logic.core.timeline.Timeline; -import net.mograsim.logic.ui.LogicExecuter; -import net.mograsim.logic.ui.LogicUICanvas; -import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.logic.ui.model.components.atomic.GUIManualSwitch; -import net.mograsim.logic.ui.model.components.atomic.GUINotGate; -import net.mograsim.logic.ui.model.components.atomic.GUIOrGate; -import net.mograsim.logic.ui.model.wires.GUIWire; -import net.mograsim.logic.ui.model.wires.WireCrossPoint; -import net.mograsim.logic.ui.modeladapter.LogicModelParameters; -import net.mograsim.logic.ui.modeladapter.ViewLogicModelAdapter; +import net.mograsim.logic.model.LogicExecuter; +import net.mograsim.logic.model.LogicUICanvas; +import net.mograsim.logic.model.model.ViewModelModifiable; +import net.mograsim.logic.model.model.components.atomic.GUIManualSwitch; +import net.mograsim.logic.model.model.components.atomic.GUINotGate; +import net.mograsim.logic.model.model.components.atomic.GUIOrGate; +import net.mograsim.logic.model.model.wires.GUIWire; +import net.mograsim.logic.model.model.wires.WireCrossPoint; +import net.mograsim.logic.model.modeladapter.LogicModelParameters; +import net.mograsim.logic.model.modeladapter.ViewLogicModelAdapter; import net.mograsim.preferences.Preferences; public class SimulationPreview implements IThemePreview diff --git a/net.mograsim.plugin.core/src/net/mograsim/plugin/asm/model/AsmElement.java b/net.mograsim.plugin.core/src/net/mograsim/plugin/asm/model/AsmElement.java deleted file mode 100644 index 832984fe..00000000 --- a/net.mograsim.plugin.core/src/net/mograsim/plugin/asm/model/AsmElement.java +++ /dev/null @@ -1,6 +0,0 @@ -package net.mograsim.plugin.asm.model; - -public interface AsmElement -{ - // only marker at the moment -} diff --git a/net.mograsim.plugin.core/src/net/mograsim/plugin/asm/model/AsmInstruction.java b/net.mograsim.plugin.core/src/net/mograsim/plugin/asm/model/AsmInstruction.java deleted file mode 100644 index 1591e218..00000000 --- a/net.mograsim.plugin.core/src/net/mograsim/plugin/asm/model/AsmInstruction.java +++ /dev/null @@ -1,39 +0,0 @@ -package net.mograsim.plugin.asm.model; - -import java.util.Objects; - -public final class AsmInstruction implements AsmElement -{ - private final AsmOperation operation; - private final AsmOperands operands; - - public AsmInstruction(AsmOperation operation, AsmOperands operands) - { - this.operation = Objects.requireNonNull(operation); - this.operands = Objects.requireNonNull(operands); - } - - @Override - public int hashCode() - { - return Objects.hash(operands, operation); - } - - @Override - public boolean equals(Object obj) - { - if (this == obj) - return true; - if (!(obj instanceof AsmInstruction)) - return false; - AsmInstruction other = (AsmInstruction) obj; - return Objects.equals(operands, other.operands) && Objects.equals(operation, other.operation); - } - - @Override - public String toString() - { - return String.format("%s %s", operation, operands).trim(); - } - -} diff --git a/net.mograsim.plugin.core/src/net/mograsim/plugin/asm/model/AsmLabel.java b/net.mograsim.plugin.core/src/net/mograsim/plugin/asm/model/AsmLabel.java deleted file mode 100644 index eb25f53c..00000000 --- a/net.mograsim.plugin.core/src/net/mograsim/plugin/asm/model/AsmLabel.java +++ /dev/null @@ -1,49 +0,0 @@ -package net.mograsim.plugin.asm.model; - -import java.util.Objects; - -public final class AsmLabel implements AsmElement -{ - private final String name; - private AsmInstruction inst; - - public AsmLabel(String name) - { - this.name = Objects.requireNonNull(name); - } - - public String getName() - { - return name; - } - - public void setInst(AsmInstruction inst) - { - if (inst != null) - throw new IllegalStateException("Instrution already set for " + name); - this.inst = inst; - } - - @Override - public String toString() - { - return name + ":"; - } - - @Override - public int hashCode() - { - return Objects.hash(inst, name); - } - - @Override - public boolean equals(Object obj) - { - if (this == obj) - return true; - if (!(obj instanceof AsmLabel)) - return false; - AsmLabel other = (AsmLabel) obj; - return Objects.equals(inst, other.inst) && Objects.equals(name, other.name); - } -} diff --git a/net.mograsim.plugin.core/src/net/mograsim/plugin/asm/model/AsmOperand.java b/net.mograsim.plugin.core/src/net/mograsim/plugin/asm/model/AsmOperand.java deleted file mode 100644 index 5c3a2021..00000000 --- a/net.mograsim.plugin.core/src/net/mograsim/plugin/asm/model/AsmOperand.java +++ /dev/null @@ -1,6 +0,0 @@ -package net.mograsim.plugin.asm.model; - -public interface AsmOperand -{ - -} diff --git a/net.mograsim.plugin.core/src/net/mograsim/plugin/asm/model/AsmOperands.java b/net.mograsim.plugin.core/src/net/mograsim/plugin/asm/model/AsmOperands.java deleted file mode 100644 index 8e5b475f..00000000 --- a/net.mograsim.plugin.core/src/net/mograsim/plugin/asm/model/AsmOperands.java +++ /dev/null @@ -1,43 +0,0 @@ -package net.mograsim.plugin.asm.model; - -import java.util.List; -import java.util.Objects; -import java.util.stream.Collectors; - -public final class AsmOperands -{ - private final List operands; - - public AsmOperands(List operands) - { - this.operands = Objects.requireNonNull(operands); - } - - public List getOperands() - { - return operands; - } - - @Override - public int hashCode() - { - return operands.hashCode(); - } - - @Override - public boolean equals(Object obj) - { - if (this == obj) - return true; - if (!(obj instanceof AsmOperands)) - return false; - AsmOperands other = (AsmOperands) obj; - return operands.equals(other.operands); - } - - @Override - public String toString() - { - return operands.stream().map(AsmOperand::toString).collect(Collectors.joining(", ")); - } -} diff --git a/net.mograsim.plugin.core/src/net/mograsim/plugin/asm/model/AsmOperation.java b/net.mograsim.plugin.core/src/net/mograsim/plugin/asm/model/AsmOperation.java deleted file mode 100644 index 248fcb16..00000000 --- a/net.mograsim.plugin.core/src/net/mograsim/plugin/asm/model/AsmOperation.java +++ /dev/null @@ -1,41 +0,0 @@ -package net.mograsim.plugin.asm.model; - -import java.util.Objects; - -public final class AsmOperation -{ - private final String mnemonic; - - public AsmOperation(String mnemonic) - { - this.mnemonic = Objects.requireNonNull(mnemonic.toLowerCase()); - } - - public String getMnemonic() - { - return mnemonic; - } - - @Override - public String toString() - { - return getMnemonic(); - } - - @Override - public int hashCode() - { - return mnemonic.hashCode(); - } - - @Override - public boolean equals(Object obj) - { - if (this == obj) - return true; - if (!(obj instanceof AsmOperation)) - return false; - AsmOperation other = (AsmOperation) obj; - return mnemonic.equals(other.mnemonic); - } -} diff --git a/net.mograsim.plugin.core/src/net/mograsim/plugin/asm/model/NumericOperand.java b/net.mograsim.plugin.core/src/net/mograsim/plugin/asm/model/NumericOperand.java deleted file mode 100644 index 8391067d..00000000 --- a/net.mograsim.plugin.core/src/net/mograsim/plugin/asm/model/NumericOperand.java +++ /dev/null @@ -1,6 +0,0 @@ -package net.mograsim.plugin.asm.model; - -public class NumericOperand -{ - -} diff --git a/net.mograsim.plugin.core/src/net/mograsim/plugin/views/LogicUIPart.java b/net.mograsim.plugin.core/src/net/mograsim/plugin/views/LogicUIPart.java index 0892f248..33fb7253 100644 --- a/net.mograsim.plugin.core/src/net/mograsim/plugin/views/LogicUIPart.java +++ b/net.mograsim.plugin.core/src/net/mograsim/plugin/views/LogicUIPart.java @@ -10,16 +10,16 @@ import org.eclipse.ui.part.ViewPart; import net.haspamelodica.swt.helper.zoomablecanvas.helper.ZoomableCanvasUserInput; import net.mograsim.logic.core.timeline.Timeline; -import net.mograsim.logic.ui.LogicExecuter; -import net.mograsim.logic.ui.LogicUICanvas; -import net.mograsim.logic.ui.model.ViewModelModifiable; -import net.mograsim.logic.ui.model.components.atomic.GUIBitDisplay; -import net.mograsim.logic.ui.model.components.atomic.GUIManualSwitch; -import net.mograsim.logic.ui.model.components.mi.nandbased.am2901.GUIAm2901; -import net.mograsim.logic.ui.model.components.submodels.SimpleRectangularSubmodelComponent; -import net.mograsim.logic.ui.model.wires.GUIWire; -import net.mograsim.logic.ui.modeladapter.LogicModelParameters; -import net.mograsim.logic.ui.modeladapter.ViewLogicModelAdapter; +import net.mograsim.logic.model.LogicExecuter; +import net.mograsim.logic.model.LogicUICanvas; +import net.mograsim.logic.model.model.ViewModelModifiable; +import net.mograsim.logic.model.model.components.atomic.GUIBitDisplay; +import net.mograsim.logic.model.model.components.atomic.GUIManualSwitch; +import net.mograsim.logic.model.model.components.mi.nandbased.am2901.GUIAm2901; +import net.mograsim.logic.model.model.components.submodels.SimpleRectangularSubmodelComponent; +import net.mograsim.logic.model.model.wires.GUIWire; +import net.mograsim.logic.model.modeladapter.LogicModelParameters; +import net.mograsim.logic.model.modeladapter.ViewLogicModelAdapter; import net.mograsim.plugin.ThemePreferences; import net.mograsim.preferences.Preferences;