{"version":3,"sources":["redux/reducers/circuit2.js","components/MemoryRecord/MemoryRecord.js","redux/reducers/pinState.js","components/Memory/Memory.js","redux/reducers/circuit.js","components/SimulationControls/SimulationControls.js","components/SideBar/SideBar.js","components/ConBar/pins.js","components/ConBar/ConBar.js","styles.js","components/Module/Bus/Bus.js","components/Module/Module.js","components/Module/Pin/Pin.js","components/ModulesCanvas/ModulesCanvas.js","App.js","reportWebVitals.js","index.js","components/Memory/parsing.js"],"names":["INSTRUCTIONS","BIN_TO_INSTRUCTIONS","Circuit","pins","values","memory","t","bus","pc","mar","ram","NaN","ir","cu","areg","alu","breg","outreg","binDis","this","states","i","con","tick","undefined","push","console","log","controlUnit","setPins","programCounter","inputRegister","bRegister","aRegister","outputRegister","binaryDisplay","Object","control","slice","clock","pin","val","indexOf","keys","forEach","e","isActive","parseInt","toString","padStart","substring","MemoryRecord","address","value","view","isCurrentInstruction","addressDisplay","valueDisplay","instruction","Box","className","data-testid","p","flex","isactiveinstruction","isactive","bgcolor","blue","minWidth","defaultProps","clockMap","controlMap","pinsSlice","createSlice","name","initialState","version","step","steps","0","1","2","3","14","15","reducers","setClock","state","payload","setControl","reset","setState","setStepCount","setStep","nextStep","previousStep","toggleView","actions","store","configureStore","reducer","useStyles","makeStyles","theme","root","overflow","boxShadow","shadows","toolbar","padding","paddingLeft","spacing","backgroundColor","color","scroller","maxHeight","textarea","width","height","fontSize","fontFamily","lineHeight","about","borderRadius","margin","grey","Transition","React","forwardRef","props","ref","Slide","direction","Memory","useState","isInfoOpen","setIsInfoOpen","isEditing","setIsEditing","useSelector","dispatch","useDispatch","memoryItems","serializedMemory","map","join","customMemory","setCustomMemory","classes","buildMemory","toggleViewClick","AppBar","position","style","Toolbar","variant","Typography","Tooltip","title","IconButton","edge","aria-label","onClick","mem","trim","replace","split","saveMemory","onKeyDown","stopPropagation","onChange","target","ButtonBase","display","paddingRight","pl","textAlign","Dialog","open","TransitionComponent","keepMounted","onClose","aria-labelledby","aria-describedby","DialogContent","pt","pb","alignItems","Avatar","alt","src","DialogActions","Button","c","24","99","setValue","execute","sourcePins","image","SimulationControls","snackbarOpen","setSnackbarOpen","setSteps","currentVersion","setCurrentVersion","useEffect","run","length","Slider","defaultValue","marks","min","max","disabled","arrow","fullWidth","maxWidth","flexDirection","Snackbar","severity","autoHideDuration","message","action","anchorOrigin","vertical","horizontal","SideBar","ex","controlPins","CP","EP","clockPins","CLK","CLR","active","green","fontWeight","zIndex","paddingTop","pinDescription","top","binValue","bottom","left","ConBar","toggle","red","pinAlt","toggleClockPin","styles","highlight","cursor","Bus","enable","rest","enabled","justifyContent","chip","textShadow","background","borderTop","borderBottom","borderLeft","borderRight","label","marginBottom","letterSpacing","Module","size","children","right","isNaN","wire","opacity","Pin","pinValues","ModulesCanvas","visibility","App","key","tabIndex","reportWebVitals","onPerfEntry","Function","then","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","render","StrictMode","document","getElementById","OPCODE_MAPPING","LDA","ADD","SUB","OUT","HLT","parseLine","line","parts","opcode","opDisplay","module","exports","records","ret","current","shift"],"mappings":"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","file":"static/js/main.d20897fc.chunk.js","sourcesContent":["const INSTRUCTIONS = {\n LDA: 0b0000,\n ADD: 0b0001,\n SUB: 0b0010,\n OUT: 0b1110,\n HLT: 0b1111\n};\n\nexport const BIN_TO_INSTRUCTIONS = {\n \"0000\": \"LDA\",\n \"0001\": \"ADD\",\n \"0010\": \"SUB\",\n \"1110\": \"OUT\",\n \"1111\": \"HLT\"\n};\n\nexport class Circuit {\n memory = {\n\n };\n t = 0;\n \n instruction;\n\n pins = {\n \"CP\": 0,\n \"EP\": 0,\n \"L'M\": 0,\n \"CE'\": 0,\n \"L'I\": 0,\n \"E'I\": 0,\n \"L'A\": 0,\n \"EA\": 0,\n \"SU\": 0,\n \"EU\": 0,\n \"L'B\": 0,\n \"L'O\": 0,\n \"CLK\": 0,\n \"CLR\": 0,\n \"CLK'\": 1,\n \"CLR'\": 1,\n }\n\n values = {\n bus: 0b00000,\n pc: 0b0000,\n mar: 0b00000,\n ram: NaN,\n ir: NaN,\n cu: NaN,\n areg: NaN,\n alu: NaN,\n breg: NaN,\n outreg: NaN,\n binDis: NaN,\n };\n\n constructor({pins, values, memory}){\n this.pins = pins || this.pins;\n this.values = values || this.values;\n this.memory = memory || this.memory;\n }\n\n run(){\n\n const states = [];\n for(let i = 0; i < 200; i++){\n const t = i % 6 + 1;\n this.t = t;\n const con = this.tick();\n \n if(con === undefined){\n break;\n }\n\n states.push(con);\n }\n console.log(states);\n return states;\n\n }\n\n tick(){\n\n const pins = this.controlUnit();\n \n //HLT\n if(pins === undefined){\n return undefined;\n }\n\n this.setPins(pins);\n\n this.programCounter();\n \n this.mar();\n this.ram();\n this.mar();\n this.inputRegister();\n \n this.ram();\n this.mar();\n this.ram();\n\n this.bRegister();\n // this.aRegister();\n \n this.alu();\n this.aRegister();\n\n this.outputRegister();\n this.binaryDisplay();\n\n const values = Object.values(this.pins);\n\n const state = {\n t: this.t,\n control: values.slice(0,12),\n clock: values.slice(12,16),\n values: {\n bus: this.values.bus,\n pc: this.values.pc,\n cu: this.values.cu,\n mar: this.values.mar,\n ram: this.values.ram,\n ir: this.values.ir,\n areg: this.values.areg,\n alu: this.values.alu,\n breg: this.values.breg,\n outreg: this.values.outreg,\n binDis: this.values.binDis\n },\n // memory: this.memory\n\n }\n\n return state;\n }\n\n isActive(pin){\n if(pin === undefined){\n return false;\n }\n \n const val = this.pins[pin];\n \n //if has prime\n if(pin.indexOf(\"'\") !== -1){\n return !val;\n }\n \n return val;\n }\n\n setPins(values){\n\n Object.keys(this.pins).forEach((e,i)=>{\n this.pins[e] = values[i];\n });\n\n }\n\n bus() {\n \n }\n\n programCounter() {\n if(this.isActive(\"CP\")){\n this.values.pc++;\n }\n\n if(this.isActive(\"EP\")){\n this.values.bus = this.values.pc;\n }\n }\n\n mar() {\n\n if(this.isActive(\"L'M\")){\n this.values.mar = this.values.bus;\n }\n\n }\n\n ram(){\n this.values.ram = this.memory[this.values.mar];\n if(this.isActive(\"CE'\")){\n this.values.bus = this.values.ram;\n return;\n }\n }\n\n inputRegister(){\n\n if(this.isActive(\"L'I\")){\n this.values.ir = this.values.bus;\n }\n\n if(this.isActive(\"E'I\")){\n this.values.bus = parseInt((this.values.ir||0).toString(2).padStart(8,\"0\").substring(4),2);\n }\n\n this.values.cu = parseInt((this.values.ir||0).toString(2).padStart(8,\"0\").substring(0,4),2);\n // console.log(\"cu\", this.values.cu);\n }\n\n controlUnit() {\n\n if(this.t === 1){\n return [0,1,0,1, 1,1,1,0, 0,0,1,1];\n }\n\n if(this.t === 2){\n return [1,0,1,1, 1,1,1,0, 0,0,1,1];\n }\n\n if(this.t === 3){\n return [0,0,1,0, 0,1,1,0, 0,0,1,1];\n }\n\n if(this.values.cu === INSTRUCTIONS.LDA){\n \n if(this.t === 4){\n return [0,0,0,1, 1,0,1,0, 0,0,1,1];\n }\n\n if(this.t === 5){\n return [0,0,1,0, 1,1,0,0, 0,0,1,1];\n }\n\n }\n\n if(this.values.cu === INSTRUCTIONS.ADD){\n \n if(this.t === 4){\n return [0,0,0,1, 1,0,1,0, 0,0,1,1];\n }\n\n if(this.t === 5){\n return [0,0,1,0, 1,1,1,0, 0,0,0,1];\n }\n\n if(this.t === 6){\n return [0,0,1,1, 1,1,0,0, 0,1,1,1];\n }\n }\n\n if(this.values.cu === INSTRUCTIONS.SUB){\n \n if(this.t === 4){\n return [0,0,0,1, 1,0,1,0, 0,0,1,1];\n }\n\n if(this.t === 5){\n return [0,0,1,0, 1,1,1,0, 0,0,0,1];\n }\n\n if(this.t === 6){\n return [0,0,1,1, 1,1,0,0, 1,1,1,1];\n }\n }\n\n if(this.values.cu === INSTRUCTIONS.OUT){\n \n if(this.t === 4){\n return [0,0,1,1, 1,1,1,1, 0,0,1,0];\n }\n\n }\n\n if(this.values.cu === INSTRUCTIONS.HLT){\n \n if(this.t === 4){\n return undefined;\n }\n\n }\n\n //noop\n return [0,0,1,1, 1,1,1,0, 0,0,1,1];\n }\n\n aRegister() {\n if(this.isActive(\"L'A\")){\n this.values.areg = this.values.bus;\n }\n\n if(this.isActive(\"EA\")){\n this.values.bus = this.values.areg;\n }\n }\n\n alu(){\n if(this.isActive(\"EU\")){\n \n ///TODO: check how addition is toggled\n if(this.isActive('SU')){\n this.values.alu = this.values.breg - this.values.areg;\n }else{\n this.values.alu = this.values.breg + this.values.areg;\n }\n\n this.values.bus = this.values.alu;\n }\n }\n\n bRegister(){\n \n if(this.isActive(\"L'B\")){\n this.values.breg = this.values.bus;\n }\n }\n\n outputRegister(){\n if(this.isActive(\"L'O\")){\n this.values.outreg = this.values.bus;\n }\n }\n\n binaryDisplay(){\n this.values.binDis = this.values.outreg;\n }\n}","import React from 'react';\nimport PropTypes from 'prop-types';\nimport './MemoryRecord.scss';\nimport { Box, makeStyles } from '@material-ui/core';\nimport { blue, blueGrey } from '@material-ui/core/colors';\nimport { BIN_TO_INSTRUCTIONS } from '../../redux/reducers/circuit2';\n\n\nconst MemoryRecord = ({address, value, view, isCurrentInstruction, isActive }) => {\n \n address = parseInt(address);\n value = parseInt(value);\n\n let addressDisplay = address.toString(2).padStart(4,\"0\");\n let valueDisplay = value.toString(2).padStart(8,\"0\");\n\n if(view === 'readable'){\n addressDisplay = address.toString().padStart(2,\"0\");\n \n const instruction = BIN_TO_INSTRUCTIONS[valueDisplay.substring(0,4)];\n\n valueDisplay = instruction + \" \" + parseInt(valueDisplay.substring(4),2).toString(2).padStart(4,\"0\");\n \n }\n\n if(address === \"...\"){\n return (\n \n {/* {(address + \"\").padStart(2,\"0\")} */}\n ...\n \n )\n }\n\n return (\n \n {/* Current: {JSON.stringify(isCurrentInstruction)}

\n IsActive: {JSON.stringify(isActive)} */}\n {addressDisplay}\n {valueDisplay}\n
\n )\n};\n\nMemoryRecord.propTypes = {};\n\nMemoryRecord.defaultProps = {};\n\nexport default MemoryRecord;\n","import { createSlice, configureStore } from '@reduxjs/toolkit'\n\n\nconst controlPins = {\n \"CP\": 1,\n \"EP\": 0,\n \"L'M\": 1,\n \"CE'\": 1,\n \"L'I\": 1,\n \"E'I\": 1,\n \"L'A\": 1,\n \"EA\": 0,\n \"SU\": 0,\n \"EU\": 0,\n \"L'B\": 1,\n \"L'O\": 1,\n}\n\n\nconst clockPins = {\n \"CLK\": 0,\n \"CLR\": 0,\n \"CLK'\": 0,\n \"CLR'\": 0,\n}\n\n\nexport const clockMap = [\"CLK\",\"CLR\",\"CLK'\",\"CLR'\"];\nexport const controlMap = [\"CP\",\"EP\",\"L'M\",\"CE'\",\"L'I\",\"E'I\",\"L'A\",\"EA\",\"SU\",\"EU\",\"L'B\",\"L'O\"];\n\nconst pinsSlice = createSlice({\n name: 'pins',\n initialState: {\n version: 0,\n view: 'binary',\n step: 0,\n steps: 0,\n t: 1,\n values: {\n bus: 0b00000,\n pc: 0b0000,\n mar: 0b00000,\n ram: NaN,\n ir: NaN,\n cu: NaN,\n areg: NaN,\n alu: NaN,\n breg: NaN,\n outreg: NaN,\n binDis: NaN,\n },\n memory: {\n \n 0: 0b00001111,\n 1: 0b00011110,\n 2: 0b11100000,\n 3: 0b11110000,\n 14: 0b00000101,\n 15: 0b00000001\n \n },\n control: controlPins,\n clock: clockPins,\n value: 0\n },\n reducers: {\n setClock: (state, {payload}) => {\n state.clock = payload;\n },\n setControl: (state, {payload}) => {\n // console.log(payload);\n state.control = payload;\n },\n reset: (state, {payload}) => {\n state.version += 1;\n state.memory = payload;\n },\n setState: (state, {payload})=>{\n\n\n if(payload === undefined){\n return;\n }\n\n state.values = payload.values;\n\n const control = {};\n controlMap.forEach((e,i)=>{\n control[e] = payload.control[i];\n });\n\n const clock = {};\n clockMap.forEach((e,i)=>{\n clock[e] = payload.clock[i];\n });\n state.t = payload.t;\n state.control = control;\n state.clock = clock;\n },\n setStepCount: (state, {payload}) =>{\n state.steps = payload;\n },\n setStep: (state, {payload}) => {\n state.step = payload;\n },\n nextStep: (state) => {\n \n if(state.step >= state.steps){\n return;\n }\n\n state.step += 1;\n },\n previousStep: (state) => {\n if(state.step === 0){\n return;\n }\n\n state.step -= 1;\n },\n toggleView: (state) => {\n \n if(state.view === 'binary'){\n state.view = \"readable\";\n return;\n }\n\n state.view = 'binary';\n },\n }\n})\n\nexport const { setControl, setClock, setState, nextStep, setStepCount, setStep, reset, previousStep, toggleView } = pinsSlice.actions\n\n\nconst store = configureStore({\n reducer: pinsSlice.reducer\n})\n\nexport default store;\n\n// Can still subscribe to the store\n// store.subscribe(() => console.log(store.getState()))\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport './Memory.scss';\nimport { AppBar, Avatar, Box, Button, ButtonBase, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle, IconButton, makeStyles, Slide, Toolbar, Tooltip, Typography } from '@material-ui/core';\nimport { Menu as MenuIcon } from '@material-ui/icons';\nimport VisibilityOutlinedIcon from '@material-ui/icons/VisibilityOutlined';\nimport VisibilityIcon from '@material-ui/icons/Visibility';\nimport EditIcon from '@material-ui/icons/Edit';\nimport DoneIcon from '@material-ui/icons/Done';\nimport MemoryRecord from '../MemoryRecord/MemoryRecord';\nimport { buildMemory } from './parsing';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { toggleView, reset } from '../../redux/reducers/pinState'\nimport SchoolIcon from '@material-ui/icons/School';\nimport { grey } from '@material-ui/core/colors';\n\nimport TouchRipple from '@material-ui/core/ButtonBase/TouchRipple';\n\n\n\nconst useStyles = makeStyles((theme)=>({\n root: {\n flex: \"1\",\n overflow: \"hidden\",\n boxShadow: theme.shadows[2]\n },\n toolbar: {\n padding: \"0px\",\n paddingLeft: theme.spacing(1),\n backgroundColor: \"white\",\n color: \"black\"\n },\n scroller: {\n maxHeight: \"100%\",\n overflow: \"scroll\"\n },\n textarea: {\n width: \"100%\",\n height: \"100%\",\n fontSize: \"20px\",\n fontFamily: \"Monaco, Monospace, Consolas\",\n lineHeight: \"3em\",\n padding: \"0px 15px\"\n },\n about: {\n borderRadius: \"5px\",\n padding: \"10px\",\n margin: \"10px\",\n fontSize: \"15px\",\n \"&:hover\": {\n backgroundColor: grey[100],\n }\n }\n}));\n\n\nconst initial = `\n00 LDA 15\n01 SUB 14\n02 HLT\n14 LDA 02\n15 1\n`;\n\nconst renderRecords = (records) => {\n \n // const ret = [];\n // let filled = ;\n\n const toRender = [];\n\n let skip = false;\n records.forEach((e,i)=>{\n \n if(e !== undefined){\n skip = false;\n }\n\n if(skip){\n return;\n }\n\n if(e === undefined){\n skip = true;\n } \n\n toRender.push(e);\n })\n\n return (\n <>\n {toRender.map((e,i)=>{\n if(e === undefined){\n return ;\n }\n \n return \n })}\n \n )\n\n};\n\nconst Transition = React.forwardRef(function Transition(props, ref) {\n return ;\n});\n\nconst Memory = () => {\n\n const [isInfoOpen, setIsInfoOpen] = useState(false);\n\n\n const [isEditing, setIsEditing] = useState(false);\n const mar = useSelector(e=>e.values.mar);\n const pc = useSelector(e=>e.values.pc);\n const view = useSelector(e=>e.view);\n\n const dispatch = useDispatch();\n const memoryItems = useSelector(e=>e.memory);\n\n const serializedMemory = Object.keys(memoryItems).map((address,i)=>(parseInt(address).toString(2).padStart(4,\"0\") + \" \" + memoryItems[address].toString(2).padStart(8,\"0\"))).join(\"\\n\");\n const [customMemory, setCustomMemory] = useState(serializedMemory);\n\n const mem = buildMemory(initial);\n const classes = useStyles();\n\n const toggleViewClick = () =>{\n dispatch(toggleView());\n }\n\n const saveMemory = () => {\n\n setIsEditing(false);\n \n const mem = {};\n \n customMemory.trim().replace(/ +/g, ' ').split(\"\\n\").forEach(e=>{\n const [address, value] = e.split(\" \");\n mem[parseInt(address,2)] = parseInt(value,2);\n })\n \n console.log(mem);\n dispatch(reset(mem))\n }\n\n const keyDown = (e) => {\n // console.log(e);\n e.stopPropagation();\n // e.preventDefault();\n // e.nativeEvent.stopImmediatePropagation();\n return false;\n }\n\n return (\n
\n \n \n \n \n Memory\n \n \n { isEditing ? \n \n saveMemory()}>\n \n \n \n :\n \n setIsEditing(true)}>\n \n \n \n }\n \n { view === \"binary\" ? \n (\n \n \n \n \n \n ) :\n (\n \n \n \n \n \n )\n\n }\n\n \n \n { isEditing ? \n (\n \n ) : \"\"\n }\n \n \n {/* {renderRecords(mem)} */}\n {\n Object.keys(memoryItems).map((e,i)=>(\n \n ))\n }\n setIsInfoOpen(true)} className={classes.about} display=\"flex\" style={{color: grey[600]}}>\n \n \n MSCS 2021
\n \n Technological University of the Philippines\n \n
\n
\n\n setIsInfoOpen(false)}\n aria-labelledby=\"alert-dialog-slide-title\"\n aria-describedby=\"alert-dialog-slide-description\"\n >\n \n About the creators\n \n

This simulator was a Part of the requirements for completing the Computer Architecture Course for the MSCS Program.

\n\n \n Contributors\n \n \n \n \n \n Louie Almeda\n Senior Full-stack Software Engineer \n \n \n

\n Louie has always been passionate with his craft ever since he first exposed himself to coding in high school and later on got involved in Competitive Programming. To this day, he continuously challenges his skills by learning and training himself on leading-edge technologies. He also finds satisfaction through teaching and sharing his expertise and love for technology. \n

\n
\n\n \n \n \n \n Robert Wilfred O. Arzaga\n Junior Software Engineer \n \n \n

\n Robert is an energetic young professional that enjoys solving thought-provoking problems with logic thru coding. He aspires to have a career on using various types of state-of-the-art technologies to be the best in his profession as a software engineer.\n

\n
\n\n \n \n \n \n Joeny Germo\n {/* Lorem ipsum */}\n \n \n

\n {/* Lorem ipsum dolor sit amet */}\n

\n
\n\n \n \n \n \n Reginald Gosela\n {/* Lorem ipsum */}\n \n \n

\n {/* Lorem ipsum dolor sit amet */}\n

\n
\n\n \n \n \n \n Jhune Hay Mitra\n College Instructor \n \n \n

\n Jhune Hay is a passionate College Instructor since 2017 at Cavite State University taking the degree of Master of Science in Computer Science at the Technological Institute of the Philippines. He loved the feel of fulfillment to share the knowledge that the students need in their field of study.\n

\n
\n \n
\n \n \n \n \n\n \n {/* \n */}\n \n
\n )\n};\n\nMemory.propTypes = {};\n\nMemory.defaultProps = {};\n\nexport default Memory;\n","const pins = {\n \"CP\": 0,\n \"EP\": 0,\n \"L'M\": 0,\n \"CE'\": 0,\n \"L'I\": 0,\n \"E'I\": 0,\n \"L'A\": 0,\n \"EA\": 0,\n \"SU\": 0,\n \"EU\": 0,\n \"L'B\": 0,\n \"L'O\": 0,\n \"CLK\": 0,\n \"CLR\": 0,\n \"CLK'\": 1,\n \"CLR'\": 1,\n}\n\n \nexport const c = {\n memory: {\n 0: 0b0100001,\n 1: 0b0000001,\n 24: 0b000010,\n 99: 0b00000001\n },\n t: 0,\n setPins: (values) => {\n // TODO\n\n Object.keys(pins).forEach((e,i)=>{\n pins[e] = values[i];\n })\n\n },\n bus: {\n value: 0b0000000,\n setValue: (value) => {\n c.bus.value = value;\n \n },\n execute: () => {\n\n if(isActive(\"L'M\")){\n c.mar.execute();\n }\n }\n },\n programCounter: {\n value: 0b00000000,\n execute: () => {\n //return single\n \n if(isActive('EP')){\n c.bus.setValue(c.programCounter.value);\n }\n }\n },\n mar: {\n value: 0,\n execute: () => {\n \n if(isActive(\"L'M\")){\n c.mar.value = c.bus.value;\n }\n\n c.ram.execute();\n }\n },\n ram: {\n value: 0,\n execute: () => {\n //return single\n c.ram.value = c.memory[c.mar.value];\n\n if(isActive(\"CE'\")){\n c.bus.setValue(c.ram.value);\n }\n }\n },\n inputRegister: {\n value: 0,\n execute: () => {\n //return single\n // c.ram.value = c.memory[c.mar.value];\n \n if(isActive(\"L'I\")){\n c.ram.value = c.bus.value;\n }\n\n if(isActive(\"E'I\")){\n c.bus.setValue(c.inputRegister.value);\n }\n }\n },\n controlUnit: {\n value: 0,\n execute: () => {\n\n const opcode = c.inputRegister.value; // TODO: split binary\n\n if(c.t === 2){\n c.setPins([1,0,1,1,1,1, 1, 0, 0, 0,1,1]);\n }\n }\n },\n aRegister: {\n value: 0,\n execute: () => {\n\n \n }\n },\n bRegister: {\n value: 0,\n execute: () => {\n\n \n }\n },\n alu: {\n value: 0,\n execute: () => {\n\n \n }\n },\n outputRegister: {\n value: 0,\n execute: () => {\n\n \n }\n },\n binaryDisplay: {\n value: 0,\n execute: () => {\n\n \n }\n }\n\n}\n\nexport const isActive = (pin, sourcePins) => {\n if(pin === undefined){\n return false;\n }\n sourcePins = sourcePins || pins;\n\n const val = sourcePins[pin];\n\n //if has prime\n if(pin.indexOf(\"'\") !== -1){\n return !val;\n }\n\n return val;\n}\n\nconst executionSequence = [\n c.programCounter.execute,\n c.mar.execute,\n c.ram.execute,\n c.inputRegister.execute,\n c.controlUnit.execute,\n c.aRegister.execute,\n c.bRegister.execute,\n c.alu.execute,\n c.bus.execute,\n c.outputRegister.execute,\n c.binaryDisplay.execute\n];\n\nexport const run = (c) => {\n \n const states = [];\n for(let i = 0; i < 10; i++){\n const t = i % 6 + 1;\n\n states.push(tick(t, pins, c));\n }\n return states;\n}\n\nconst tick = (t, pins, c) => {\n \n executionSequence.forEach(e=> {\n e();\n });\n\n const values = Object.values(pins);\n\n return {\n t,\n control: values.slice(0,12),\n clock: values.slice(12,16),\n values: {\n bus: c.bus.value,\n pc: c.programCounter.value,\n mar: c.mar.value,\n ram: c.ram.value,\n ir: c.inputRegister.value,\n cu: c.controlUnit.value,\n areg: c.aRegister.value,\n alu: c.alu.value,\n breg: c.bRegister.value,\n outreg: c.outputRegister.value,\n binDis: c.binaryDisplay.value,\n }\n\n }\n\n}\n\nexport const steps = [\n {\n t: 1,\n control: [0,1,0,1, 1,1,1,0, 0,0,1,1],\n clock: [0,0,0,0],\n values: {\n bus: 0,\n pc: 0b0000,\n mar: 0b0000,\n ram: 0b0000,\n ir: 0b00000,\n cu: 0,\n areg: 0,\n alu: 0,\n breg: 0,\n outreg: 0,\n binDis: 0,\n },\n memory: {\n 0: 0b0100001,\n 1: 0b0000001,\n 2: 0b0000001,\n 24: 0b000010,\n 99: 0b00000001\n }\n },\n {\n t: 2,\n control: [1,0,1,1, 1,1,1,0, 0,0,1,1],\n clock: [1,1,1,1],\n values: {\n bus: 0,\n pc: 0b0001,\n mar: 0b0000,\n ram: 0,\n ir: 0b0000,\n cu: 0,\n areg: 0,\n alu: 0,\n breg: 0,\n outreg: 0,\n binDis: 0,\n },\n memory: {\n 0: 0b0100001,\n 1: 0b0000001,\n 2: 0b0000001,\n 24: 0b000010,\n 99: 0b00000001\n }\n },\n {\n t: 3,\n control: [0,0,1,0, 0,1,1,0, 0,0,1,1],\n clock: [0,0,0,0],\n values: {\n bus: 0b00010100,\n pc: 0b0001,\n mar: 0b0000,\n ram: 0b010100, //TODO: change random number\n ir: 0b00010100,\n cu: 0,\n areg: 0,\n alu: 0,\n breg: 0,\n outreg: 0,\n binDis: 0,\n },\n memory: {\n 0: 0b0100001,\n 1: 0b0000001,\n 2: 0b0000001,\n 24: 0b000010,\n 99: 0b00000001\n }\n },\n {\n t: 4,\n control: [0,0,0,1, 1,0,1,0, 0,0,1,1],\n clock: [0,0,0,0],\n values: {\n bus: 0b000100,\n pc: 0b0001,\n mar: 0b0100,\n ram: 0b0100, //TODO: change random number\n ir: 0b00010100,\n cu: 0b0001,\n areg: 0,\n alu: 0,\n breg: 0,\n outreg: 0,\n binDis: 0,\n },\n memory: {\n 0: 0b0100001,\n 1: 0b0000001,\n 2: 0b0000001,\n 24: 0b000010,\n 99: 0b00000001\n }\n }\n]","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport './SimulationControls.scss';\nimport { AppBar, Box, Button, Dialog, DialogActions, DialogContent, DialogContentText, IconButton, makeStyles, Slide, Slider, Snackbar, Toolbar, Tooltip, Typography } from '@material-ui/core';\nimport ChevronRightIcon from '@material-ui/icons/ChevronRight';\nimport ChevronLeftIcon from '@material-ui/icons/ChevronLeft';\n\nimport UndoIcon from '@material-ui/icons/Undo';\nimport RedoIcon from '@material-ui/icons/Redo';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport {steps} from '../../redux/reducers/circuit'\nimport {nextStep, previousStep, setState, setStep, setStepCount } from '../../redux/reducers/pinState'\nimport { Circuit } from '../../redux/reducers/circuit2';\nimport HelpOutlineIcon from '@material-ui/icons/HelpOutline';\nimport CloseIcon from '@material-ui/icons/Close';\n\n\nconst useStyles = makeStyles((theme)=>({\n toolbar: {\n padding: \"0px\",\n paddingLeft: theme.spacing(1)\n },\n image: {\n borderRadius: \"5px\",\n boxShadow: theme.shadows[10]\n }\n}));\n\nconst SimulationControls = () => {\n const classes = useStyles();\n const memory = useSelector(e=>e.memory);\n \n const [snackbarOpen, setSnackbarOpen] = useState(true);\n const [isInfoOpen, setIsInfoOpen] = useState(false);\n\n const [steps, setSteps] = useState([]);\n const [currentVersion, setCurrentVersion] = useState(-1);\n\n const version = useSelector(e=>e.version);\n\n const step = useSelector(e=>e.step) || 0;\n const dispatch = useDispatch();\n\n\n useEffect(()=>{\n\n if(steps === undefined){\n return;\n }\n\n dispatch(setState(steps[step]));\n },[step, steps, dispatch]);\n\n useEffect(()=>{\n\n // if(steps !== undefined ){\n // return;\n // }\n\n if(currentVersion >= version){\n return;\n }\n\n setCurrentVersion(version);\n\n const c = new Circuit({memory});\n\n const states = c.run();\n dispatch(setStepCount(states.length));\n console.log(\"Regenerated\");\n setSteps(states);\n dispatch(setStep(0));\n // console.log(states);\n\n },[steps, memory, version, currentVersion, dispatch]);\n\n const next = () => {\n\n dispatch(nextStep());\n \n }\n\n const back = () => {\n\n dispatch(previousStep());\n }\n\n return (\n
\n \n \n dispatch(setStep(val))}\n />\n \n \n {/* \n Memory\n \n */}\n \n \n \n \n \n \n {/* {step} */}\n \n \n \n \n \n \n\n\n setIsInfoOpen(false)}\n aria-labelledby=\"alert-dialog-slide-title\"\n aria-describedby=\"alert-dialog-slide-description\"\n >\n \n \n SAP 1 Architecture Simulator\n \n

This simulator aims to help Educators teach how the SAP 1 Architecture works. This simulator features capabilities to support that goal.

\n\n \n Overview\n

\n \"Playback\"\n\n \n\n Interactive Control Pins\n

Visually demonstrate how the control pins affects the connections between components.

\n \"Control\n \n \n Playback controls\n

Observe how the whole system interact with the memory, and which pins are changed based on the cycle time and instructions.

\n \"Playback\"\n \n\n \n Toggle Memory Display\n

Toggle between readable and binary view. Please note that when showing as MNEMONICS, the data memory values may incorrectly show as instructions. The memory doesn't really know which records are instructions or data.

\n \"Playback\"\n \n\n \n Edit Memory and Instruction set\n

Edit the instruction set and variables using this control. Please make sure to enter your data as binary.
Little validation is done on this part, so ensure that you've entered a valid structure and instructions

\n

The format should be always be a 4-bit address <space> 8-bit value

\n
address value
\n
0000 00001110
\n \n Supported Instructions are:\n
LDA: 0000
\n
ADD: 0001
\n
SUB: 0010
\n
OUT: 1110
\n
HLT: 1111
\n\n \n \"Playback\"\n \n
\n \n \n \n \n Show me}\n onClose={()=>setSnackbarOpen(false)}\n // TransitionComponent={transition}\n message=\"Need help?\"\n action={\n <> \n \n \n setSnackbarOpen(false)}>\n \n \n \n }\n // key={transition ? transition.name : ''}\n anchorOrigin={{vertical: 'bottom', horizontal:'right'}}\n />\n
\n )\n\n};\n\nSimulationControls.propTypes = {};\n\nSimulationControls.defaultProps = {};\n\nexport default SimulationControls;\n\n\nconst Transition = React.forwardRef(function Transition(props, ref) {\n return ;\n});","import React from 'react';\nimport PropTypes from 'prop-types';\nimport './SideBar.scss';\nimport Memory from '../Memory/Memory';\nimport { Box } from '@material-ui/core';\n\nimport SimulationControls from '../SimulationControls/SimulationControls'\n\n\nconst SideBar = () => (\n \n \n \n\n \n \n);\n\nSideBar.propTypes = {};\n\nSideBar.defaultProps = {};\n\nexport default SideBar;\n","const controlPins = {\n CP: {\n val: 1,\n display: <>CP\n },\n EP: {\n val: 0,\n display: <>EP\n },\n \"L'M\": {\n val: 0,\n display: <>L'M\n },\n \"CE'\": {\n val: 0,\n display: <>CE'\n },\n \"L'I\": {\n val: 1,\n display: <>L'I\n },\n \"E'I\": {\n val: 0,\n display: <>E'I,\n },\n \"L'A\": {\n val: 1,\n display: <>L'A,\n },\n \"EA\": {\n val: 0,\n display: <>EA,\n },\n \"SU\": {\n val: 0,\n display: <>SU,\n },\n \"EU\": {\n val: 0,\n display: <>EU,\n },\n \"L'B\": {\n val: 0,\n display: <>L'B,\n },\n \"L'O\": {\n val: 0,\n display: <>L'O,\n },\n}\n\n\nconst clockPins = {\n CLK: {\n val: 1,\n display: <>CLK\n },\n CLR: {\n val: 0,\n display: <>CLR\n },\n \"CLK'\": {\n val: 0,\n display: <>CLK'\n },\n \"CLR'\": {\n val: 1,\n display: <>CLR'\n },\n}\n\n\nconst ex = {\n controlPins, \n clockPins\n}\n\nexport default ex;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport './ConBar.scss';\nimport { Box, makeStyles } from '@material-ui/core';\nimport { green, red } from '@material-ui/core/colors';\nimport pins from './pins';\nimport { useSelector, useDispatch } from 'react-redux';\nimport {setControl,setClock} from '../../redux/reducers/pinState';\nimport Button from '@material-ui/core/Button';\nimport { isActive } from '../../redux/reducers/circuit';\n\n// const activations = [0,1,0,0,0,1,1,0,1];\n// const pins2 = [\n// <>CP,\n// <>EP,\n// <>L'M,\n// <>CE',\n// <>L'I,\n// <>E'I,\n// <>L'A,\n// <>EA,\n// <>SU,\n// <>EU,\n// <>L'B,\n// <>L'O,\n// ];\n\nconst useStyles = makeStyles((theme)=>({\n active: {\n backgroundColor: green[100],\n \"&:hover\": {\n backgroundColor: green[200],\n }\n },\n pins: {\n fontSize: '20px',\n boxShadow: theme.shadows[10]\n },\n t: {\n fontSize: \"36px\",\n fontWeight: \"bold\",\n zIndex: 1,\n color: \"#F55\",\n padding: \"3px 10px\",\n paddingTop: \"5px\",\n // boxShadow: theme.shadows[10]\n },\n pinDescription: {\n position: \"relative\",\n top: \"-3px\"\n },\n binValue: {\n position: \"absolute\",\n bottom: \"-9px\",\n fontSize: \"13px\",\n left: \"calc(50% - 2px)\",\n fontWeight: \"bold\"\n },\n}));\n\nconst ConBar = () => {\n\n const classes = useStyles();\n \n const dispatch = useDispatch();\n const controlPins = useSelector(e=>e.control);\n const clockPins = useSelector(e=>e.clock);\n const t = useSelector(e=>e.t);\n \n\n const toggle = (pin) => {\n const target = {...controlPins};\n \n target[pin] = target[pin] === 0 ? 1 : 0;\n \n dispatch(setControl(target));\n }\n\n const toggleClockPin = (pin) => {\n const target = {...clockPins};\n \n const pinAlt = pin.indexOf(\"'\") === -1 ? pin + \"'\" : pin.replace(\"'\", \"\");\n\n target[pin] = target[pin] === 0 ? 1 : 0;\n target[pinAlt] = target[pin];\n\n dispatch(setClock(target));\n }\n\n return (\n \n \n {Object.keys(controlPins).map((e,i)=>(\n \n ))}\n \n \n \n T{t}\n {Object.keys(clockPins).map((e,i)=>(\n \n ))}\n \n \n )\n};\n\nConBar.propTypes = {};\n\nConBar.defaultProps = {};\n\nexport default ConBar;","const styles = {\n highlight: { \n // boxShadow: \"0px 0px 0px 3px #E7EEF0, 0px 0px 0px 8px red\",\n boxShadow: \"0px 0px 0px 6px red\",\n zIndex: 100,\n borderRadius: \"3px\"\n }\n}\n\nexport default styles;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Box, makeStyles } from '@material-ui/core';\nimport { grey } from '@material-ui/core/colors';\nimport ChevronRightIcon from '@material-ui/icons/ChevronRight';\nimport KeyboardArrowDownIcon from '@material-ui/icons/KeyboardArrowDown';\nimport KeyboardArrowUpIcon from '@material-ui/icons/KeyboardArrowUp';\nimport ChevronLeftIcon from '@material-ui/icons/ChevronLeft';\nimport styles from '../../../styles';\n\nimport pins from '../../ConBar/pins';\nimport { useSelector } from 'react-redux';\nimport { isActive } from '../../../redux/reducers/circuit';\n\n\nconst useStyles = makeStyles(()=>({\n root:{\n backgroundColor: \"rgba(0,0,0,0.1)\",\n // padding: \"2px 0px 2px 10px\",\n \"&:hover\": styles.highlight,\n cursor: \"default\",\n \"&[active=true]\": {\n backgroundColor: \"#555\",\n color: \"white\"\n }\n }\n}));\n\nconst Bus = ({direction, width, enable, ...rest}) => {\n const classes = useStyles();\n\n const controlPins = useSelector(e=>e.control);\n const clockPins = useSelector(e=>e.clock);\n\n const pins = {...controlPins, ...clockPins};\n \n // let display = (pins.controlPins[enable] || pins.clockPins[enable] || {}).display;\n let enabled = isActive(enable, pins) || enable === \"true\";// controlPins[enable] || clockPins[enable] || false;\n\n // let selected = pins.controlPins[enable] || pins.clockPins[enable] || {};\n \n if(direction === \"up\"){\n return (\n \n \n {width}\n \n )\n }\n\n if(direction === \"down\"){\n return (\n \n {width}\n \n \n )\n }\n\n if(direction === \"left\"){\n return (\n \n \n {width}\n \n )\n }\n\n return (\n \n {width}\n \n \n )\n};\n\nBus.propTypes = {\n\n};\n\nBus.defaultProps = {};\n\nexport default Bus;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport './Module.scss';\nimport { Box, makeStyles } from '@material-ui/core';\nimport Bus from './Bus/Bus'\nimport styles from '../../styles';\nimport { useSelector } from 'react-redux';\n\nconst useStyles = makeStyles((theme)=>({\n root: {\n // flex: \"1\",\n // overflow: \"hidden\",\n },\n chip: {\n textShadow: \"0px -1px rgb(0 0 0 / 50%), 0px 0px rgb(255 255 255)\",\n color: \"rgba(255,255,255, 0.9)\",\n boxShadow: theme.shadows[4],\n borderRadius: \"4px\",\n backgroundColor: \"white\",\n background: \"radial-gradient(circle, rgba(102,102,102,1) 30%, rgba(80,80,80,1) 120%)\",\n borderTop: \"1px solid #AAA\",\n borderBottom: \"1px solid #222\",\n borderLeft: \"1px solid #777\",\n borderRight: \"1px solid #777\",\n zIndex: 10,\n cursor: \"default\",\n \"&:hover\": styles.highlight\n },\n label: {\n textAlign: \"center\",\n fontWeight: \"bold\",\n fontSize: \"24px\",\n color: \"white\",\n marginBottom: \"10px\"\n },\n value: {\n textAlign: \"center\",\n backgroundColor: \"#222\",\n background: \"linear-gradient(180deg, rgba(255,255,255,1) 0%, rgba(102,102,102,1) 8%, rgba(0,0,0,1) 29%, rgba(24,24,24,1) 54%, rgba(43,43,43,1) 56%, rgba(36,36,36,1) 99%, rgba(66,66,66,1) 100%);\",\n color: \"white\",\n fontSize: \"16px\",\n fontWeight: \"bold\",\n padding: \"3px 7px\",\n borderRadius: \"3px\",\n fontFamily: 'Monaco, Monospace, Consolas',\n letterSpacing: \"2px\",\n boxShadow: \"0px 2px 6px rgb(0 0 0 / 30%)\",\n cursor: \"text\",\n \"&:hover\": styles.highlight\n }\n}));\n\nconst Module = ({name, size, children, left, right, top, bottom, ...rest}) => {\n const classes = useStyles();\n\n size = size || 8;\n const value = useSelector(e=>e.values[name]);\n \n let display = value;\n\n if(isNaN(value)){\n display = \"\".padStart(size, \"X\")\n }\n return (\n \n {top}\n \n {left}\n \n {children}\n \n {/* {display} {value} */}\n {display.toString(2).padStart(size, \"0\")}\n \n \n {right}\n \n {bottom}\n \n )\n};\n\nModule.propTypes = {};\n\nModule.defaultProps = {};\n\nexport default Module;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport pins from '../../ConBar/pins';\nimport { Box, makeStyles } from '@material-ui/core';\nimport { green } from '@material-ui/core/colors';\nimport styles from '../../../styles';\nimport { useSelector } from 'react-redux';\nimport { isActive } from '../../../redux/reducers/circuit';\n\nconst useStyles = makeStyles((theme)=>({\n root: {\n position: \"relative\",\n width: \"60px\",\n cursor: \"default\",\n // backgroundColor: \"red\"\n \"&>*\": {\n padding: \"2px 15px 2px 10px\"\n },\n \"&[direction=left]\": {\n \"&>*\": {\n padding: \"2px 8px 2px 15px\",\n textAlign: \"right\"\n }, \n \"&>$wire\": {\n padding: \"0px\",\n left: \"0px\"\n }\n },\n \"&:hover\": styles.highlight\n },\n active: {\n backgroundColor: green[200]\n },\n wire: {\n height: \"2px\",\n padding: \"0px\",\n width: \"15px\",\n backgroundColor: \"black\",\n position: \"absolute\",\n right: \"0px\",\n top: \"50%\",\n opacity: 0.5\n }\n}));\n\n\nconst Pin = ({value, children, ...rest}) => {\n const classes = useStyles();\n\n const controlPins = useSelector(e=>e.control);\n const clockPins = useSelector(e=>e.clock);\n \n const pinValues = {...controlPins, ...clockPins};\n\n let display = (pins.controlPins[value] || pins.clockPins[value] || {}).display;\n let enabled = isActive(value, pinValues);// controlPins[value] || clockPins[value] || false;\n \n return (\n
\n \n {display}\n \n
\n
\n )\n};\n\nPin.propTypes = {};\n\nPin.defaultProps = {};\n\nexport default Pin;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport './ModulesCanvas.scss';\n\nimport Module from '../Module/Module';\nimport { Box } from '@material-ui/core';\nimport Pin from '../Module/Pin/Pin';\nimport Bus from '../Module/Bus/Bus';\n\nconst ModulesCanvas = () => (\n \n \n \n \n \n \n \n \n }\n\n right={\n <>\n \n \n }\n bottom={\n \n }\n >Program Counter\n \n \n \n \n \n }\n right={\n <>\n \n \n }\n\n bottom={\n <>\n \n \n }\n >MAR\n \n \n \n \n }\n\n right={\n <>\n \n \n }\n bottom={\n \n }\n >RAM\n \n \n \n \n \n \n }\n\n right={\n <>\n \n \n \n }\n\n bottom={\n <>\n \n \n }\n >Input Register\n \n }\n\n bottom={\n <>\n \n \n }\n right={\n <>\n \n \n \n \n \n }\n >Control Unit\n \n \n Bus\n \n \n \n \n \n \n \n }\n left={\n <>\n \n \n \n }\n bottom={\n <>\n \n \n }\n >A Register\n \n \n \n \n }\n left={\n <>\n {/* TODO: Double check enable */}\n \n \n }\n >ALU\n \n \n \n \n }\n left={\n <>\n \n \n }\n\n top={\n <>\n \n \n }\n\n bottom={\n <>\n \n \n }\n >B Register\n \n \n \n \n }\n left={\n <>\n \n \n }\n\n bottom={\n <>\n {/* Todo: Doublecheck */}\n \n \n }\n >Output Register\n \n \n \n }\n left={\n \n \n \n }\n >Binary Display\n \n \n);\n\nModulesCanvas.propTypes = {};\n\nModulesCanvas.defaultProps = {};\n\nexport default ModulesCanvas;\n","import './App.css';\nimport { Box } from '@material-ui/core';\nimport SideBar from './components/SideBar/SideBar';\nimport ConBar from './components/ConBar/ConBar';\nimport ModulesCanvas from './components/ModulesCanvas/ModulesCanvas';\nimport { Provider } from 'react-redux';\nimport store from './redux/reducers/pinState';\n\nimport { useSelector, useDispatch } from 'react-redux';\nimport {nextStep, previousStep} from './redux/reducers/pinState';\n\nfunction App() {\n \n const dispatch = useDispatch();\n\n const keyDown = (e) => {\n if(e.key === \"ArrowRight\"){\n dispatch(nextStep());\n }\n if(e.key === \"ArrowLeft\"){\n dispatch(previousStep());\n \n }\n }\n\n return (\n \n \n \n \n \n \n \n );\n}\n\nexport default App;\n","const reportWebVitals = onPerfEntry => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './App';\nimport reportWebVitals from './reportWebVitals';\nimport { Provider } from 'react-redux';\nimport store from './redux/reducers/pinState';\n\nReactDOM.render(\n \n \n \n \n\n ,\n document.getElementById('root')\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n","const OPCODE_MAPPING = {\n LDA: [0,0,0,0],\n ADD: [0,0,0,1],\n SUB: [0,0,1,0],\n OUT: [1,1,1,0],\n HLT: [1,1,1,1]\n}\n\n// 01 ADD 23\n// 02 HLT\n// 99 1\nconst buildMemory = (records) => {\n records = records.trim();\n records = records.split(\"\\n\");\n\n const ret = [];\n let current = parseLine(records.shift());\n\n for(var i = 0; i< 16; i++){\n\n if(current === undefined || current.address > i){\n ret.push(undefined);\n continue;\n }\n\n ret.push(current);\n\n if(records.length > 0){\n current = parseLine(records.shift()); \n }\n }\n\n return ret;\n\n}\n\n//01 ADD 23\nconst parseLine = (line) => {\n\n line = line.trim();\n line = line.replace(/ +/g, ' ');\n\n const parts = line.split(\" \");\n \n let value = parseInt(parts[2] || parts[1]);\n if(isNaN(value)){\n value = undefined;\n }\n\n return {\n address: parseInt(parts[0]),\n opcode: OPCODE_MAPPING[parts[1]],\n opDisplay: OPCODE_MAPPING[parts[1]] ? parts[1] : undefined,\n value: value,\n display: (parts[1] + \" \" + (parts[2] || \"\")).trim()\n }\n}\n\n// buildMemory([\n// \"01 LDA 4\",\n// \"02 HLT\",\n// \"99 1\"\n// ])\n\nmodule.exports = {\n parseLine,\n buildMemory\n}"],"sourceRoot":""}