From 7abf45e98d3c2b76edf40ba3c746956f25489dd2 Mon Sep 17 00:00:00 2001 From: Jim Taylor Date: Wed, 14 May 2025 20:10:52 -0500 Subject: [PATCH 1/2] Initial commit --- UE1/Software/Go-UE1/README.md | 54 +++++++++ UE1/Software/Go-UE1/asm.go | 113 ++++++++++++++++++ UE1/Software/Go-UE1/bin.go | 185 ++++++++++++++++++++++++++++++ UE1/Software/Go-UE1/build.go | 185 ++++++++++++++++++++++++++++++ UE1/Software/Go-UE1/demo/demo.gif | Bin 0 -> 249734 bytes UE1/Software/Go-UE1/emu.go | 118 +++++++++++++++++++ UE1/Software/Go-UE1/go.mod | 3 + UE1/Software/Go-UE1/main.go | 89 ++++++++++++++ 8 files changed, 747 insertions(+) create mode 100644 UE1/Software/Go-UE1/README.md create mode 100644 UE1/Software/Go-UE1/asm.go create mode 100644 UE1/Software/Go-UE1/bin.go create mode 100644 UE1/Software/Go-UE1/build.go create mode 100644 UE1/Software/Go-UE1/demo/demo.gif create mode 100644 UE1/Software/Go-UE1/emu.go create mode 100644 UE1/Software/Go-UE1/go.mod create mode 100644 UE1/Software/Go-UE1/main.go diff --git a/UE1/Software/Go-UE1/README.md b/UE1/Software/Go-UE1/README.md new file mode 100644 index 0000000..4bcc546 --- /dev/null +++ b/UE1/Software/Go-UE1/README.md @@ -0,0 +1,54 @@ +# UE1 Assembler and Emulator in Go + +For those who would rather not fire up DOSBox and QuickBASIC to write and run UE1 software, this is for you! + +## Building + +`go build` in this directory should be sufficient on any operating system where Go is installable. + +## Usage + +### ue1 build + +`ue1 build ` is the most basic use. Extension can be anything, but the default output is `.bin`. Only the final extension is changed, so `foo.bar.asm` would become `foo.bar.bin`. + +If desired, you can pass the `-d` or `--dump` flags to dump the binary to stdout rather than a bin file. This will print the bytes in a human-readable form (ala hexdump), as below: + +``` +000  40 A8 B8 58 80 81 82 83  84 85 86 87 88 89 8A 8B  |@..X............| +010  8C 8D 8E 8F 90 98 40 58  10 24 80 11 25 81 12 26  |......@X.$..%..&| +020  82 13 27 83 10 88 11 89  12 8A 13 8B 40 58 10 24  |..'.........@X.$| +030  84 11 25 85 12 26 86 13  27 87 14 88 15 89 16 8A  |..%..&..'.......| +040  17 8B 40 58 10 24 80 11  25 81 12 26 82 13 27 83  |..@X.$..%..&..'.| +050  10 88 11 89 12 8A 13 8B  40 58 10 24 84 11 25 85  |........@X.$..%.| +060  12 26 86 13 27 87 14 88  15 89 16 8A 17 8B 40 58  |.&..'.........@X| +070  10 24 80 11 25 81 12 26  82 13 27 83 10 88 11 89  |.$..%..&..'.....| +080  12 8A 13 8B 40 58 10 24  84 11 25 85 12 26 86 13  |....@X.$..%..&..| +090  27 87 14 88 15 89 16 8A  17 8B 40 58 10 24 80 11  |'.........@X.$..| +0A0  25 81 12 26 82 13 27 83  10 88 11 89 12 8A 13 8B  |%..&..'.........| +0B0  40 58 10 24 84 11 25 85  12 26 86 13 27 87 28 8C  |@X.$..%..&..'.(.| +0C0  14 88 15 89 16 8A 17 8B  C0 F0 |..........| +0CA +``` + +### ue1 emu + +Options are: + +``` +-a +--asm + Use provided unassembled assembly file for input. + +-n +--non-interactive + Do not display execution, only show output register (and maybe ring terminal bell). + +-s +--speed + Speed in Hertz. Must be an integer. Default is 60. +``` + +## Demo + +![Fibonacci at 10 Hz](demo/demo.gif) diff --git a/UE1/Software/Go-UE1/asm.go b/UE1/Software/Go-UE1/asm.go new file mode 100644 index 0000000..44a8612 --- /dev/null +++ b/UE1/Software/Go-UE1/asm.go @@ -0,0 +1,113 @@ +package main + +import ( + "bufio" + "fmt" + "os" + "strconv" + "strings" + "time" +) + +func getBitPosition(addr string) (int, error) { + pos, err := strconv.Atoi(string(addr[2])) + if err != nil { + return -1, fmt.Errorf("error converting address bit position: %v", err) + } + return pos, nil +} + +func (c *CPU) parseAddressString(addr string) (err error) { + var bitPos int + dcAddress := strings.ToLower(addr) + + switch { + case strings.HasPrefix(dcAddress, "sr"): + if bitPos, err = getBitPosition(dcAddress); err == nil { + c.whichBit = 1 << bitPos + c.whichOutput = Scratch + c.tmpbit = (c.register.scratch & c.whichBit) >> bitPos + } + case strings.HasPrefix(dcAddress, "or"): + if bitPos, err = getBitPosition(dcAddress); err == nil { + c.whichBit = 1 << bitPos + c.whichOutput = Output + c.tmpbit = (c.register.output & c.whichBit) >> bitPos + } + case strings.HasPrefix(dcAddress, "ir"): + if bitPos, err = getBitPosition(dcAddress); err == nil { + c.tmpbit = (c.register.input & c.whichBit) >> bitPos + } + case dcAddress == "rr": + c.tmpbit = c.register.rr + default: + return fmt.Errorf("unable to parse address pnemonic `%s`: %v", + addr, err) + } + return +} + +func (c *CPU) parseOpcodeString(opcode string) (err error) { + // I ain't writin' no long switch statement twice! + dcOpcode := strings.ToLower(opcode) + opcodeBin := opcodes[dcOpcode] + + return c.parseOpcodeBin(opcodeBin) +} + +func (c *CPU) processAsm(args []string, speed int, nonint bool) { + ticker := time.NewTicker(time.Second / time.Duration(speed)) + defer ticker.Stop() + + source, err := os.Open(args[len(args)-1]) + if err != nil { + fatalln(err) + } + defer source.Close() + + scanner := bufio.NewScanner(source) + for scanner.Scan() { + line := scanner.Text() + tokens := strings.Fields(line) + + if tokens[0] == ";" { + continue + } + + if err = c.parseAddressString(tokens[1]); err != nil { + fatalln(err) + } + + if err = c.parseOpcodeString(tokens[0]); err != nil { + fatalln(err) + } + + if c.flag.wrt == 1 { + if c.whichOutput == Output { + err = c.writeMemRegister(Output) + } else { + err = c.writeMemRegister(Scratch) + } + } + if err != nil { + + fatalln(err) + } + + if nonint { + c.flag.wrt = 0 + continue + } + + <-ticker.C + fmt.Println("INSTRUCTION : ", tokens[0]) + fmt.Println("MEMORY ADDRESS: ", tokens[1]) + + c.printCpuStat() + c.flag.wrt = 0 + } + if nonint { + fmt.Printf("OUTPUT = %b (%d)\n", + c.register.output, c.register.output) + } +} diff --git a/UE1/Software/Go-UE1/bin.go b/UE1/Software/Go-UE1/bin.go new file mode 100644 index 0000000..21fc641 --- /dev/null +++ b/UE1/Software/Go-UE1/bin.go @@ -0,0 +1,185 @@ +package main + +import ( + "bufio" + "fmt" + "os" + "time" +) + +var opcodeStrings = [16]string{ + "NOP0", "LD", "ADD", "SUB", + "ONE", "NAND", "OR", "XOR", + "STO", "STOC", "IEN", "OEN", + "IOC", "RTN", "SKZ", "NOPF", +} + +func (c *CPU) parseOpcodeBin(b byte) (err error) { + switch b { + case nopz: + c.flag.zero = 1 + case ld: + if c.register.ien == 1 { + c.register.rr = c.tmpbit + } + case add: + if c.register.ien == 1 { + c.tmprr = c.register.rr + c.register.carry + c.tmpbit + + c.register.rr = c.tmprr & 1 + c.register.carry = (c.tmprr & 0b10) >> 1 + } + case sub: + if c.register.ien == 1 { + c.tmpdb = ^c.tmpbit & 1 + c.tmprr = c.register.rr + c.register.carry + c.tmpdb + + c.register.rr = c.tmprr & 1 + c.register.carry = (c.tmprr & 0b10) >> 1 + } + case one: + c.register.rr = 1 + c.register.carry = 0 + case nand: + if c.register.ien == 1 { + c.tmprr = c.register.rr & c.tmpbit + + if c.tmprr == 1 { + c.register.rr = 0 + } else if c.register.rr == 0 { + c.register.rr = 1 + } + } + case or: + if c.register.ien == 1 { + c.register.rr = c.register.rr | c.tmpbit + } + case xor: + if c.register.ien == 1 { + c.register.rr = c.register.rr ^ c.tmpbit + } + case sto: + if c.register.oen == 1 { + c.flag.wrt = 1 + } + case stoc: + if c.register.oen == 1 { + c.flag.wrt = 1 + c.tmprr = ^c.register.rr & 1 + } + case ien: + c.register.ien = c.tmpbit + case oen: + c.register.oen = c.tmpbit + case ioc: + c.flag.ioc = 1 + fmt.Print("\a") // BEEP, depending on terminal settings + case rtn: + c.flag.rtn = 1 + case skz: + c.flag.skz = 1 + case nopf: + c.flag.f = 1 + default: + return fmt.Errorf("unrecognized opcode. byte value: %X", b) + } + + if c.flag.wrt == 1 { + if b != stoc { + c.tmprr = c.register.rr + } + } + return +} + +func (c *CPU) parseAddressBin(b byte) (err error) { + var bitPos int + + op := b & 0xF0 + addr := b & 0x0F + switch { + case addr < 0x08: + // SR0 - SR7 + c.whichBit = 1 << int(addr) + c.whichOutput = Scratch + c.tmpbit = (c.register.scratch & c.whichBit) >> int(addr) + case addr == 0x08 && !(op == sto || op == stoc): + // RR + c.tmpbit = c.register.rr + case addr < 0x10: + bitPos = int(addr - 0x08) + c.whichBit = 1 << bitPos + + // OR0 - OR7 + if op == sto || op == stoc { + c.whichBit = 1 << bitPos + c.whichOutput = Output + c.tmpbit = (c.register.output & c.whichBit) >> bitPos + } else { + // IR1 - IR7 + c.tmpbit = (c.register.input & c.whichBit) >> bitPos + } + default: + return fmt.Errorf("unable to parse address in byte: %v", err) + } + return +} + +func (c *CPU) processBin(args []string, speed int, nonint bool) { + ticker := time.NewTicker(time.Second / time.Duration(speed)) + defer ticker.Stop() + + source, err := os.Open(args[len(args)-1]) + if err != nil { + fatalln(err) + } + defer source.Close() + + reader := bufio.NewReader(source) + for { + b, err := reader.ReadByte() + if err != nil { + if err.Error() == "EOF" { + break + } + fatalln(err) + } + + if err = c.parseAddressBin(b); err != nil { + fatalln(err) + } + + if err = c.parseOpcodeBin(b & 0xF0); err != nil { + fatalln(err) + } + + if c.flag.wrt == 1 { + if c.whichOutput == Output { + err = c.writeMemRegister(Output) + } else { + err = c.writeMemRegister(Scratch) + } + } + if err != nil { + fatalln(err) + } + + if nonint { + c.flag.wrt = 0 + continue + } + + <-ticker.C + opString := opcodeStrings[b&0xF0>>4] + addrString := fmt.Sprintf("%02X", int(b&0x0F)) + fmt.Println("INSTRUCTION : ", opString) + fmt.Println("MEMORY ADDRESS: ", addrString) + + c.printCpuStat() + c.flag.wrt = 0 + } + if nonint { + fmt.Printf("OUTPUT = %b (%d)\n", + c.register.output, c.register.output) + } +} diff --git a/UE1/Software/Go-UE1/build.go b/UE1/Software/Go-UE1/build.go new file mode 100644 index 0000000..81cdf7e --- /dev/null +++ b/UE1/Software/Go-UE1/build.go @@ -0,0 +1,185 @@ +package main + +import ( + "bufio" + "flag" + "fmt" + "os" + "strings" +) + +func isAscii(b byte) bool { return b >= 32 && b <= 126 } + +func writeOpcode(op string) (byte, error) { + dcOp := strings.ToLower(op) + if b, ok := opcodes[dcOp]; ok { + return b, nil + } + return 0, fmt.Errorf("Opcode invalid: %s\n", op) +} + +func writeAddress(b byte, addr string) (byte, error) { + var err error + var bitPos int + dcAddress := strings.ToLower(addr) + + switch { + case strings.HasPrefix(dcAddress, "sr"): + if bitPos, err = getBitPosition(dcAddress); err == nil { + b += byte(bitPos) + } + case strings.HasPrefix(dcAddress, "or"), + strings.HasPrefix(dcAddress, "ir"): + if bitPos, err = getBitPosition(dcAddress); err == nil { + b += byte(bitPos + 8) + } + case dcAddress == "rr": + b += 8 + default: + return 0, fmt.Errorf("Memory address invalid: %v\n", err) + } + return b, nil +} + +func makeBinFilename(filename string) string { + split := strings.Split(filename, ".") + prefix := strings.Join(split[:len(split)-1], ".") + + return prefix + ".bin" +} + +func handleDump(bytes []byte) { + for i := 0; i < len(bytes); i++ { + // byte count to start the row, much like hexdump + if i%16 == 0 { + fmt.Printf("%03X\u00A0 ", i) + } + + // bytes are a space apart, except after 8 bytes, + // just like hexd-... well, you get the idea. + fmt.Printf("%02X ", bytes[i]) + if (i+1)%8 == 0 { + fmt.Printf("\u00A0") + } + + // there will likely never be deliberate characters + // in the output, but we're on a roll! + if (i+1)%16 == 0 { + fmt.Printf("|") + for j := i - 15; j <= i; j++ { + if isAscii(bytes[j]) { + fmt.Printf("%c", bytes[j]) + } else { + fmt.Printf(".") + } + } + fmt.Printf("|\n") + } + } + + // handle the last partial line, if there is one + if len(bytes)%16 != 0 { + remaining := len(bytes) % 16 + for k := 0; k < (16-remaining)*3; k++ { // padding + fmt.Printf(" ") + } + if (16 - remaining) > 8 { + fmt.Printf(" ") // add extra space for the 8-byte boundary + } + fmt.Printf(" |") + + start := len(bytes) - remaining + for l := start; l < len(bytes); l++ { + if isAscii(bytes[l]) { + fmt.Printf("%c", bytes[l]) + } else { + fmt.Printf(".") + } + } + fmt.Printf("|\n") + } + fmt.Printf("%03X\n", len(bytes)) +} + +func assemble(f *os.File) (bytes []byte, err error) { + defer f.Close() + + scanner := bufio.NewScanner(f) + for scanner.Scan() { + line := scanner.Text() + tokens := strings.Fields(line) + + if tokens[0] == ";" { + continue + } + + op, err := writeOpcode(tokens[0]) + if err != nil { + break + } + + fullbyte, err := writeAddress(op, tokens[1]) + if err != nil { + break + } + + bytes = append(bytes, fullbyte) + } + return +} + +func buildAsm(args []string) { + flagSet := flag.NewFlagSet("ue1 build", flag.ExitOnError) + flagSet.Usage = usage("Usage: ue1 build (options) \n", flagSet) + + dump := flagSet.Bool("d", false, "") + flagSet.BoolVar(dump, "dump", false, "dump assembled output to stdout in hex") + + output := flagSet.String("o", "", "filename for output (default is .bin)") + + err := flagSet.Parse(args) + if err != nil { + fatalln(err) + } + args = flagSet.Args() + + if len(args) != 1 { + fatalln(fmt.Errorf("ASM file not supplied")) + } + + asmFile := args[len(args)-1] + binFile := makeBinFilename(asmFile) + if *output != "" { + binFile = *output + } + + src, err := os.Open(asmFile) + if err != nil { + fatalln(err) + } + + assembled, err := assemble(src) + if err != nil { + fatalln(err) + } + + // dump to stdout rather than a binary, in a hexdump-y sort of way + if *dump { + handleDump(assembled) + return + } + + dest, err := os.Create(binFile) + if err != nil { + fatalln(err) + } + defer dest.Close() + + length, err := dest.Write(assembled) + if err != nil { + fatalln(err) + } + dest.Sync() + + fmt.Printf("Wrote %d bytes to '%s'\n", length, binFile) +} diff --git a/UE1/Software/Go-UE1/demo/demo.gif b/UE1/Software/Go-UE1/demo/demo.gif new file mode 100644 index 0000000000000000000000000000000000000000..28054df0e23a6d14875d842772f9d1dd97124e01 GIT binary patch literal 249734 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%0AC1X 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

~ee(HkRKNia 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\n", flagSet) + + asmRun := flagSet.Bool("a", false, "") + flagSet.BoolVar(asmRun, "asm", false, "use a .asm file for input rather than a binary") + + nonInt := flagSet.Bool("n", false, "") + flagSet.BoolVar(nonInt, "non-interactive", false, "noninteractive mode - only output register displayed") + + speed := flagSet.Int("s", 60, "") + flagSet.IntVar(speed, "speed", 60, "simulated clock speed in Hertz") + + err := flagSet.Parse(args) + if err != nil { + fatalln(err) + } + args = flagSet.Args() + + if len(args) != 1 { + fatalln(fmt.Errorf("input file not supplied")) + } + + if *speed <= 0 { + fatalf("user-supplied speed cannot be used. got: %d\n", *speed) + } + + if *asmRun { + c.processAsm(args, *speed, *nonInt) + return + } + c.processBin(args, *speed, *nonInt) +} diff --git a/UE1/Software/Go-UE1/go.mod b/UE1/Software/Go-UE1/go.mod new file mode 100644 index 0000000..735dd2b --- /dev/null +++ b/UE1/Software/Go-UE1/go.mod @@ -0,0 +1,3 @@ +module ue1 + +go 1.23.5 diff --git a/UE1/Software/Go-UE1/main.go b/UE1/Software/Go-UE1/main.go new file mode 100644 index 0000000..3b64a60 --- /dev/null +++ b/UE1/Software/Go-UE1/main.go @@ -0,0 +1,89 @@ +package main + +import ( + "flag" + "fmt" + "os" +) + +// enumerate both output and opcodes here in main - +// assembly and emulation both need these constants +const ( + Output = iota + Scratch +) + +const ( + nopz byte = iota << 4 + ld + add + sub + one + nand + or + xor + sto + stoc + ien + oen + ioc + rtn + skz + nopf +) + +// a little concordance we'll use later +var opcodes = map[string]byte{ + "nop0": nopz, "ld": ld, "add": add, "sub": sub, + "one": one, "nand": nand, "or": or, "xor": xor, + "sto": sto, "stoc": stoc, "ien": ien, "oen": oen, + "ioc": ioc, "rtn": rtn, "skz": skz, "nopf": nopf, +} + +func fatalf(f string, v ...any) { + fmt.Printf(f, v) + os.Exit(1) +} + +func fatalln(e error) { + fmt.Println(e) + os.Exit(1) +} + +func usage(msg string, f *flag.FlagSet) func() { + return func() { + fmt.Fprintf(os.Stderr, msg) + + if f != nil { + f.PrintDefaults() + } + os.Exit(1) + } +} + +func main() { + defaultUsage := usage("Usage: ue1 [build, emu] (options) \n", nil) + flag.Usage = defaultUsage + flag.Parse() + + args := flag.Args() + if len(args) == 0 { + defaultUsage() + } + cmd, args := args[0], args[1:] + + switch cmd { + case "build": + buildAsm(args) + case "emu": + ueOne := &CPU{ + flag: new(Flags), + register: new(Registers), + } + + ueOne.startEmulation(args) + default: + fmt.Printf("Unrecognized subcommand %q.\n", cmd) + defaultUsage() + } +} From d333d5495e23308f18d706b1c5d6607d28bae039 Mon Sep 17 00:00:00 2001 From: Jim Taylor Date: Wed, 14 May 2025 20:17:56 -0500 Subject: [PATCH 2/2] Removed an extra newline --- UE1/Software/Go-UE1/asm.go | 1 - 1 file changed, 1 deletion(-) diff --git a/UE1/Software/Go-UE1/asm.go b/UE1/Software/Go-UE1/asm.go index 44a8612..b76de6e 100644 --- a/UE1/Software/Go-UE1/asm.go +++ b/UE1/Software/Go-UE1/asm.go @@ -90,7 +90,6 @@ func (c *CPU) processAsm(args []string, speed int, nonint bool) { } } if err != nil { - fatalln(err) }