コード例 #1
0
ファイル: test.go プロジェクト: aoisensi/metaputer
func handle(conn net.Conn) {
	defer conn.Close()
	mouth := make([]m16arch.Byte, 4)
	hip := make([]byte, 8)
	mouth[0] = 2
	for a, d := range tests {
		mouth[1] = m16arch.Byte(a)
		mouth[2] = m16arch.Byte(d)
		conn.Write(m16arch.To8Byte(mouth))
		conn.Read(hip)
	}
	s := 256
	mouth[0] = 1
	mouth[2] = 0
	for a, d := range tests {
		mouth[1] = m16arch.Byte(a)
		conn.Write(m16arch.To8Byte(mouth))
		conn.Read(hip)
		out := m16arch.From8Byte(hip)
		if out[0] == d {
			s--
		}
	}
	log.Printf("Failed test is %v times.\n", s)
}
コード例 #2
0
ファイル: main.go プロジェクト: aoisensi/metaputer
func readMem(addr m16arch.Byte) m16arch.Byte {
	date := []m16arch.Byte{0x1, m16arch.Byte(addr), 0, 0}
	d := m16arch.To8Byte(date)
	memcon.Write(d)
	memcon.Read(d)
	out := m16arch.From8Byte(d)
	return out[0]
}
コード例 #3
0
ファイル: main.go プロジェクト: aoisensi/metaputer
func main() {
	memcon = connect(*memplug)
	cpucon = connect(*cpuplug)
	for a, v := range bios {
		date := []m16arch.Byte{0x2, m16arch.Byte(a), m16arch.Byte(v), 0}
		d := m16arch.To8Byte(date)
		memcon.Write(d)
		memcon.Read(d)
	}
	for {
		in := make([]byte, 8)
		cpucon.Read(in)
		input := m16arch.From8Byte(in)
		out := make([]m16arch.Byte, 4)
		switch input[0] {
		case 1:
			out[0] = readMem(input[1])
		}
		cpucon.Write(m16arch.To8Byte(out))
	}
}
コード例 #4
0
ファイル: main.go プロジェクト: aoisensi/metaputer
func main() {
	flag.Parse()
	mem = make([]m16arch.Byte, *capacity)
	var conn net.Conn
	for {
		var err error
		conn, err = net.Dial("tcp", *plug)
		if err == nil {
			break
		}
	}
	log.Println("Connected!!")
	defer conn.Close()
	for {
		mouth := make([]byte, 8)
		out := make([]m16arch.Byte, 4)

		_, err := conn.Read(mouth)
		if err != nil {
			break
		}
		input := m16arch.From8Byte(mouth)
		switch input[0] {
		case 1: //Read
			out[0] = mem[input[1]]
			if *debug {
				log.Printf("Readed value from %x is %x", input[1], mem[input[1]])
			}
		case 2: //Write
			mem[input[1]] = input[2]
			if *debug {
				log.Printf("Writed %x value to %x", input[2], input[1])
			}
		}
		_, err = conn.Write(m16arch.To8Byte(out))
		if err != nil {
			break
		}
	}
}
コード例 #5
0
ファイル: main.go プロジェクト: aoisensi/metaputer
func writeMem(addr, value m16arch.Byte) {
	date := []m16arch.Byte{0x2, m16arch.Byte(addr), m16arch.Byte(value), 0}
	d := m16arch.To8Byte(date)
	memcon.Write(d)
	memcon.Read(d)
}
コード例 #6
0
ファイル: cpu.go プロジェクト: aoisensi/metaputer
func readMem(addr m16arch.Byte) m16arch.Byte {
	conn.Write(m16arch.To8Byte([]m16arch.Byte{0x1, addr, 0x0, 0x0}))
	date := make([]byte, 8)
	conn.Read(date)
	return m16arch.From8Byte(date)[0]
}