From 7b624b55069429c6a48db24b0f0e31d877dfb35f Mon Sep 17 00:00:00 2001 From: JetSetIlly Date: Fri, 16 Oct 2020 14:50:23 +0100 Subject: [PATCH] removed some staticcheck errors (golangci-lint -E staticcheck) supercharger tap window will now set tape counter (revealed by staticcheck) --- .golangci.yml | 1 - Makefile | 2 +- debugger/commands.go | 5 +++-- debugger/terminal/commandline/parser_test.go | 3 +++ .../terminal/commandline/tabcompletion_test.go | 4 ++++ .../terminal/commandline/validation_test.go | 6 ++++++ disassembly/preferences.go | 6 +++++- gui/sdlimgui/prefs.go | 3 +++ gui/sdlimgui/win_cart_tape.go | 7 +++++++ gui/sdlimgui/win_control.go | 2 -- gui/sdlimgui/win_terminal.go | 2 +- hardware/cpu/cpu.go | 18 ++++++------------ hardware/cpu/registers/decimal_mode_test.go | 10 +++++----- hardware/memory/cartridge/mapper/mapper.go | 3 +++ .../memory/cartridge/plusrom/preferences.go | 4 ++++ .../memory/cartridge/supercharger/registers.go | 4 ++-- .../memory/cartridge/supercharger/soundload.go | 8 ++++++++ .../cartridge/supercharger/supercharger.go | 10 ++++++++++ hardware/tia/tia.go | 2 +- hiscore/preferences.go | 4 ++++ patch/patch.go | 5 ++++- prefs/disk.go | 4 ++-- 22 files changed, 82 insertions(+), 31 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index 22b203ad..ce31bad5 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -2,7 +2,6 @@ linters: disable: - errcheck - ineffassign - - staticcheck enable: - bodyclose - unconvert diff --git a/Makefile b/Makefile index d01a9409..1589bc12 100644 --- a/Makefile +++ b/Makefile @@ -20,7 +20,7 @@ generate: lint: # uses .golangci.yml configuration file - golangci-lint run + golangci-lint run --sort-results test: go test -tags=testing ./... diff --git a/debugger/commands.go b/debugger/commands.go index 66bdad25..8c7a0392 100644 --- a/debugger/commands.go +++ b/debugger/commands.go @@ -1038,7 +1038,8 @@ func (dbg *Debugger) processTokens(tokens *commandline.Tokens) (bool, error) { return false, curated.Errorf("value required for %s %s", cmdDisplay, action) } - scale, err := strconv.ParseFloat(scl, 32) + var scale float64 + scale, err = strconv.ParseFloat(scl, 32) if err != nil { return false, curated.Errorf("%s %s value not valid (%s)", cmdDisplay, action, scl) } @@ -1100,7 +1101,7 @@ func (dbg *Debugger) processTokens(tokens *commandline.Tokens) (bool, error) { return false, nil } - option, ok := tokens.Get() + option, _ := tokens.Get() switch option { case "NICK": diff --git a/debugger/terminal/commandline/parser_test.go b/debugger/terminal/commandline/parser_test.go index 456a697f..85a703fe 100644 --- a/debugger/terminal/commandline/parser_test.go +++ b/debugger/terminal/commandline/parser_test.go @@ -317,6 +317,9 @@ func TestParser_optional(t *testing.T) { } cmds, err = commandline.ParseCommandTemplate(template) + if err != nil { + t.Errorf("does not parse: %s", err) + } f, err := os.Create("memviz.dot") if err != nil { diff --git a/debugger/terminal/commandline/tabcompletion_test.go b/debugger/terminal/commandline/tabcompletion_test.go index cc10ead6..196ae43f 100644 --- a/debugger/terminal/commandline/tabcompletion_test.go +++ b/debugger/terminal/commandline/tabcompletion_test.go @@ -269,6 +269,10 @@ func TestTabCompletion_nestedGroups(t *testing.T) { cmds, err = commandline.ParseCommandTemplate([]string{ "PREF ([SET|NO|TOGGLE] [RANDSTART|RANDPINS])", }) + if err != nil { + t.Errorf("does not parse: %s", err) + } + tc = commandline.NewTabCompletion(cmds) completion = "P" expected = "PREF " diff --git a/debugger/terminal/commandline/validation_test.go b/debugger/terminal/commandline/validation_test.go index 8c5b5386..66caee5a 100644 --- a/debugger/terminal/commandline/validation_test.go +++ b/debugger/terminal/commandline/validation_test.go @@ -261,6 +261,9 @@ func TestValidation_singluarOption(t *testing.T) { if err != nil { t.Fatalf("%s", err) } + if err != nil { + t.Errorf("does not parse: %s", err) + } err = cmds.Validate("SCRIPT foo") if err != nil { @@ -501,6 +504,9 @@ func TestValidation_optional_group(t *testing.T) { cmds, err = commandline.ParseCommandTemplate([]string{ "PREF ([SET|NO|TOGGLE] [RANDSTART|RANDPINS])", }) + if err != nil { + t.Errorf("does not parse: %s", err) + } err = cmds.Validate("pref") if err != nil { diff --git a/disassembly/preferences.go b/disassembly/preferences.go index d679a738..5acd3139 100644 --- a/disassembly/preferences.go +++ b/disassembly/preferences.go @@ -54,6 +54,10 @@ func newPreferences(dsm *Disassembly) (*Preferences, error) { } p.dsk, err = prefs.NewDisk(pth) + if err != nil { + return nil, err + } + p.dsk.Add("disassembly.fxxxMirror", &p.FxxxMirror) p.dsk.Add("disassembly.symbols", &p.Symbols) @@ -68,7 +72,7 @@ func newPreferences(dsm *Disassembly) (*Preferences, error) { err = p.dsk.Load(true) if err != nil { - return p, err + return nil, err } return p, nil diff --git a/gui/sdlimgui/prefs.go b/gui/sdlimgui/prefs.go index 4d65131a..8c503b7c 100644 --- a/gui/sdlimgui/prefs.go +++ b/gui/sdlimgui/prefs.go @@ -38,6 +38,9 @@ func (img *SdlImgui) initPrefs(group prefGroup) error { return err } img.prefs, err = prefs.NewDisk(pth) + if err != nil { + return err + } err = img.prefs.Add(fmt.Sprintf("%s.windowsize", group), prefs.NewGeneric( func(s string) error { diff --git a/gui/sdlimgui/win_cart_tape.go b/gui/sdlimgui/win_cart_tape.go index e5db18fc..b80045bd 100644 --- a/gui/sdlimgui/win_cart_tape.go +++ b/gui/sdlimgui/win_cart_tape.go @@ -17,6 +17,7 @@ package sdlimgui import ( "fmt" + "strconv" "github.com/inkyblackness/imgui-go/v2" ) @@ -63,6 +64,12 @@ func (win *winCartTape) draw() { imguiText("Counter") counter := fmt.Sprintf("%8d", win.img.lz.Cart.TapeState.Counter) if imguiDecimalInput("##counter", !win.img.paused, 8, &counter) { + win.img.lz.Dbg.PushRawEvent(func() { + c, err := strconv.ParseInt(counter, 10, 64) + if err == nil { + win.img.lz.Cart.TapeBus.SetTapeCounter(int(c)) + } + }) } imgui.SameLine() imgui.Text("/") diff --git a/gui/sdlimgui/win_control.go b/gui/sdlimgui/win_control.go index d359d990..0cb27eaf 100644 --- a/gui/sdlimgui/win_control.go +++ b/gui/sdlimgui/win_control.go @@ -134,11 +134,9 @@ func (win *winControl) drawQuantumToggle() { if toggle { stepLabel = videoCycleLabel if videoStep != toggle { - videoStep = toggle win.img.term.pushCommand("QUANTUM VIDEO") } } else if videoStep != toggle { - videoStep = toggle win.img.term.pushCommand("QUANTUM CPU") } diff --git a/gui/sdlimgui/win_terminal.go b/gui/sdlimgui/win_terminal.go index 59cfacef..21ee29f9 100644 --- a/gui/sdlimgui/win_terminal.go +++ b/gui/sdlimgui/win_terminal.go @@ -219,7 +219,6 @@ func (win *winTerm) saveOutput() { n.Year(), n.Month(), n.Day(), n.Hour(), n.Minute(), n.Second())) f, err := os.Create(fn) - defer f.Close() if err != nil { win.output = append(win.output, terminalOutput{ style: terminal.StyleError, @@ -228,6 +227,7 @@ func (win *winTerm) saveOutput() { }) return } + defer f.Close() for _, o := range win.output { f.Write([]byte(o.text)) diff --git a/hardware/cpu/cpu.go b/hardware/cpu/cpu.go index 420565f5..ecd7b2d0 100644 --- a/hardware/cpu/cpu.go +++ b/hardware/cpu/cpu.go @@ -302,10 +302,8 @@ func (mc *CPU) read8BitPC(f func(val uint8) error) error { mc.LastResult.Error = err.Error() } - carry, _ := mc.PC.Add(1) - if carry { - // program counter cycled - } + // ignoring if program counter cycling + mc.PC.Add(1) // bump the number of bytes read during instruction decode mc.LastResult.ByteCount++ @@ -345,10 +343,8 @@ func (mc *CPU) read16BitPC() error { mc.LastResult.Error = err.Error() } - carry, _ := mc.PC.Add(1) - if carry { - // program counter cycled - } + // ignoring if program counter cycling + mc.PC.Add(1) // bump the number of bytes read during instruction decode mc.LastResult.ByteCount++ @@ -370,10 +366,8 @@ func (mc *CPU) read16BitPC() error { mc.LastResult.Error = err.Error() } - carry, _ = mc.PC.Add(1) - if carry { - // program counter cycled - } + // ignoring if program counter cycling + mc.PC.Add(1) // bump the number of bytes read during instruction decode mc.LastResult.ByteCount++ diff --git a/hardware/cpu/registers/decimal_mode_test.go b/hardware/cpu/registers/decimal_mode_test.go index 6c8ce0bf..5ac5f4d2 100644 --- a/hardware/cpu/registers/decimal_mode_test.go +++ b/hardware/cpu/registers/decimal_mode_test.go @@ -42,21 +42,21 @@ func TestDecimalModeCarry(t *testing.T) { // subtraction with carry (subtract value) r8.Load(9) rtest.EquateRegisters(t, r8, 0x09) - rcarry, _, _, _ = r8.SubtractDecimal(1, true) + r8.SubtractDecimal(1, true) rtest.EquateRegisters(t, r8, 0x08) // subtraction without carry (subtract value and another 1) - rcarry, _, _, _ = r8.SubtractDecimal(1, false) + r8.SubtractDecimal(1, false) rtest.EquateRegisters(t, r8, 0x06) // addition on tens boundary r8.Load(9) rtest.EquateRegisters(t, r8, 0x09) - rcarry, _, _, _ = r8.AddDecimal(1, false) + r8.AddDecimal(1, false) rtest.EquateRegisters(t, r8, 0x10) // subtraction on tens boundary - rcarry, _, _, _ = r8.SubtractDecimal(1, true) + r8.SubtractDecimal(1, true) rtest.EquateRegisters(t, r8, 0x09) // addition on hundreds boundary @@ -67,7 +67,7 @@ func TestDecimalModeCarry(t *testing.T) { test.Equate(t, rcarry, true) // subtraction on hundreds boundary - rcarry, _, _, _ = r8.SubtractDecimal(1, true) + r8.SubtractDecimal(1, true) rtest.EquateRegisters(t, r8, 0x99) } diff --git a/hardware/memory/cartridge/mapper/mapper.go b/hardware/memory/cartridge/mapper/mapper.go index 10dcd09a..64d096ce 100644 --- a/hardware/memory/cartridge/mapper/mapper.go +++ b/hardware/memory/cartridge/mapper/mapper.go @@ -173,6 +173,9 @@ type CartTapeBus interface { // effective Rewind() bool + // Set tape counter to specified value + SetTapeCounter(c int) + // GetTapeState retrieves a copy of the current state of the tape. returns // true is state is valid GetTapeState() (bool, CartTapeState) diff --git a/hardware/memory/cartridge/plusrom/preferences.go b/hardware/memory/cartridge/plusrom/preferences.go index d7f846dc..45277c64 100644 --- a/hardware/memory/cartridge/plusrom/preferences.go +++ b/hardware/memory/cartridge/plusrom/preferences.go @@ -51,6 +51,10 @@ func newPreferences() (*Preferences, error) { } p.dsk, err = prefs.NewDisk(pth) + if err != nil { + return nil, err + } + p.dsk.Add("plusrom.nick", &p.Nick) p.dsk.Add("plusrom.id", &p.ID) diff --git a/hardware/memory/cartridge/supercharger/registers.go b/hardware/memory/cartridge/supercharger/registers.go index c4473b3d..9a29bb27 100644 --- a/hardware/memory/cartridge/supercharger/registers.go +++ b/hardware/memory/cartridge/supercharger/registers.go @@ -152,7 +152,7 @@ func (cart *Supercharger) PutRegister(register string, data string) { case "delay": v, _ := strconv.ParseUint(data, 16, 8) - if v < 0 || v > 6 { + if v > 6 { panic("delay value out of range") } cart.registers.Delay = int(v) @@ -178,7 +178,7 @@ func (cart *Supercharger) PutRegister(register string, data string) { case "bankingmode": v, _ := strconv.ParseUint(data, 16, 8) - if v < 0 || v > 7 { + if v > 7 { panic("bankingmode value out of range") } cart.registers.BankingMode = int(v) diff --git a/hardware/memory/cartridge/supercharger/soundload.go b/hardware/memory/cartridge/supercharger/soundload.go index 307d6b01..f1f03081 100644 --- a/hardware/memory/cartridge/supercharger/soundload.go +++ b/hardware/memory/cartridge/supercharger/soundload.go @@ -149,6 +149,14 @@ func (tap *SoundLoad) Rewind() bool { return true } +// SetTapeCounter implements the mapper.CartTapeBus interface +func (tap *SoundLoad) SetTapeCounter(c int) { + if c >= len(tap.samples) { + c = len(tap.samples) + } + tap.idx = c +} + // the number of samples to copy and return from GetTapeState() const numStateSamples = 100 diff --git a/hardware/memory/cartridge/supercharger/supercharger.go b/hardware/memory/cartridge/supercharger/supercharger.go index e6a9f02a..cfeef660 100644 --- a/hardware/memory/cartridge/supercharger/supercharger.go +++ b/hardware/memory/cartridge/supercharger/supercharger.go @@ -393,6 +393,16 @@ func (cart *Supercharger) Rewind() bool { return false } +// SetTapeCounter implements the mapper.CartTapeBus interface +// +// Whether this does anything meaningful depends on the interal implementation +// of the 'tape' interface. +func (cart *Supercharger) SetTapeCounter(c int) { + if tape, ok := cart.tape.(mapper.CartTapeBus); ok { + tape.SetTapeCounter(c) + } +} + // GetTapeState implements the mapper.CartTapeBus interface // // Whether this does anything meaningful depends on the interal implementation diff --git a/hardware/tia/tia.go b/hardware/tia/tia.go index 16bac713..1301fa4c 100644 --- a/hardware/tia/tia.go +++ b/hardware/tia/tia.go @@ -481,7 +481,7 @@ func (tia *TIA) Step(readMemory bool) (bool, error) { readMemory = tia.Video.UpdateSpritePixels(memoryData) } if readMemory { - readMemory = tia.Audio.UpdateRegisters(memoryData) + _ = tia.Audio.UpdateRegisters(memoryData) } // copy audio to television signal diff --git a/hiscore/preferences.go b/hiscore/preferences.go index dd43037c..11f05e43 100644 --- a/hiscore/preferences.go +++ b/hiscore/preferences.go @@ -43,6 +43,10 @@ func newPreferences() (*Preferences, error) { } p.dsk, err = prefs.NewDisk(pth) + if err != nil { + return p, curated.Errorf("hiscore: %v", err) + } + p.dsk.Add("hiscore.server", &p.Server) p.dsk.Add("hiscore.authtoken", &p.AuthToken) diff --git a/patch/patch.go b/patch/patch.go index 9f6411e6..2ac9e675 100644 --- a/patch/patch.go +++ b/patch/patch.go @@ -57,10 +57,13 @@ func CartridgeMemory(mem *cartridge.Cartridge, patchFile string) (bool, error) { // make sure we're at the beginning of the file if _, err = f.Seek(0, io.SeekStart); err != nil { - return false, err + return false, curated.Errorf("patch: %v", err) } buffer, err := ioutil.ReadAll(f) + if err != nil { + return false, curated.Errorf("patch: %v", err) + } // once a patch has been made then we'll flip patched to true and return it // to the calling function diff --git a/prefs/disk.go b/prefs/disk.go index b19084fa..8bfd8bdd 100644 --- a/prefs/disk.go +++ b/prefs/disk.go @@ -126,7 +126,7 @@ func (dsk *Disk) Save() error { var n int // add warning label - n, err = fmt.Fprintf(f, fmt.Sprintf("%s\n", WarningBoilerPlate)) + n, err = fmt.Fprintf(f, "%s\n", WarningBoilerPlate) if err != nil { return curated.Errorf("prefs: %v", err) } @@ -135,7 +135,7 @@ func (dsk *Disk) Save() error { } // write entries (combination of old and live entries) to disk - n, err = fmt.Fprintf(f, entries.String()) + n, err = fmt.Fprint(f, entries.String()) if err != nil { return curated.Errorf("prefs: %v", err) }