From ba4c7437b4370cd83d548a77b7af4846ff495913 Mon Sep 17 00:00:00 2001 From: Ivan Izaguirre Date: Mon, 18 Dec 2023 23:16:41 +0100 Subject: [PATCH] Emulate the Brain Board II --- README.md | 3 + apple2Setup.go | 5 ++ apple2main.go | 7 +++ cardBrainBoard2.go | 105 +++++++++++++++++++++++++++++++++ resources/ApplesoftInteger.BIN | Bin 0 -> 65536 bytes 5 files changed, 120 insertions(+) create mode 100644 cardBrainBoard2.go create mode 100644 resources/ApplesoftInteger.BIN diff --git a/README.md b/README.md index 21d0947..2d92c4f 100644 --- a/README.md +++ b/README.md @@ -29,6 +29,7 @@ Portable emulator of an Apple II+ or //e. Written in Go. - No Slot Clock based on the DS1216 - Videx Videoterm 80 column card with the Videx Soft Video Switch (Apple ][+ only) - SwyftCard (Apple //e only) + - Brain Board II - Useful cards not emulating a real card - Bootable SmartPort / ProDOS card with the following smartport devices: - Block device (hard disks) @@ -185,6 +186,8 @@ Only valid on SDL mode ### Command line options ```terminal + -brainBoardSlot int + slot for the Brain Board II. -1 for none (default -1) -charRom string rom file for the character generator (default "") -consoleCardSlot int diff --git a/apple2Setup.go b/apple2Setup.go index 6ce714d..e5c1f0a 100644 --- a/apple2Setup.go +++ b/apple2Setup.go @@ -213,6 +213,11 @@ func (a *Apple2) AddSwyftCard() { a.insertCard(c, 3) } +// AddBrainBoardII inserts a Brain Board II card +func (a *Apple2) AddBrainBoardII(slot int) { + a.insertCard(NewCardBrainBoardII(), slot) +} + // AddRGBCard inserts an RBG option to the Apple IIe 80 col 64KB card func (a *Apple2) AddRGBCard() { setupRGBCard(a) diff --git a/apple2main.go b/apple2main.go index 957aee1..aa7fe08 100644 --- a/apple2main.go +++ b/apple2main.go @@ -80,6 +80,10 @@ func MainApple() *Apple2 { "printer", 1, "slot for the Parallel Printer Interface. -1 for none") + brainBoard := flag.Int( + "brainBoardSlot", + -1, + "slot for the Brain Board II. -1 for none") ramWorksKb := flag.Int( "ramworks", 8192, @@ -278,6 +282,9 @@ func MainApple() *Apple2 { } a.AddSwyftCard() } + if *brainBoard > 0 { + a.AddBrainBoardII(*brainBoard) + } var trackTracer trackTracer if *traceTracks { diff --git a/cardBrainBoard2.go b/cardBrainBoard2.go new file mode 100644 index 0000000..c095e2d --- /dev/null +++ b/cardBrainBoard2.go @@ -0,0 +1,105 @@ +package izapple2 + +/* + Brain board II card for Apple II + +See: + http://www.willegal.net/appleii/brainboard.htm + http://www.willegal.net/appleii/bb-v5_3.1.pdf + https://github.com/Alex-Kw/Brain-Board-II + +The Brain Board II card has 4 banks instead of the 2 of the +original Brain Board: + Bank 0: SS clear, DIP2 OFF (wozaniam) + Bank 1: SS set, DIP2 OFF (applesoft) + Bank 2: SS clear, DIP2 ON (wozaniam) + Bank 3: SS set, DIP2 ON (integer) + +The card is emulated as having the DIP switches as follows: + 1 - ON: The range F8 can be replaced + 2 - ON: Select the two top banks + 3 - OFF: The motherboard ROM is always replaced + 4 - ON: The softswitch selects low or high bank + +Softswitches: + $COsO - SS clear: Low bank selected + $COs1 - SS set: High bank selected + +Operation: + The card boots on wozaniam. Use CAPS LOCK for the commands + to work. Starts with left arrow. + To siwtch to Integer BASIC, type: + 1000:AD 91 C0 6C FC FF + R + To return to wozaniam, type: + CALL -151 + 1000:AD 90 C0 6C FD FF + 1000G +*/ + +// CardBrainBoardII represents a Brain Board II card +type CardBrainBoardII struct { + cardBase + highBank bool + dip2 bool + rom []uint8 +} + +// NewCardBrainBoardII creates a new CardBrainBoardII +func NewCardBrainBoardII() *CardBrainBoardII { + var c CardBrainBoardII + c.name = "Brain Board II" + + c.highBank = false // Start with wozaniam by default + c.dip2 = true // Use the wozaniam+integer banks + + // The ROM has:xaa-wozaniam xab-applesoft xac-wozaniam xad-integer + data, _, err := LoadResource("/ApplesoftInteger.BIN") + if err != nil { + // The resource should be internal and never fail + panic(err) + } + c.rom = data + + // The ROM of the card is paged as the rest of the ROMs + c.romCxxx = &c + return &c +} + +func (c *CardBrainBoardII) assign(a *Apple2, slot int) { + c.addCardSoftSwitchRW(0, func() uint8 { + c.highBank = false + return 0x55 + }, "BRAINCLEAR") + + c.addCardSoftSwitchRW(1, func() uint8 { + c.highBank = true + return 0x55 + }, "BRAINSET") + + c.cardBase.assign(a, slot) + a.mmu.inhibitROM(c) +} + +func (c *CardBrainBoardII) translateAddress(address uint16) uint16 { + translated := address - 0xc000 + if c.highBank { + translated += 0x4000 + } + if c.dip2 { + translated += 0x8000 + } + return translated +} + +func (c *CardBrainBoardII) peek(address uint16) uint8 { + return c.rom[c.translateAddress(address)] +} + +func (c *CardBrainBoardII) poke(address uint16, value uint8) { + // Nothing +} + +func (c *CardBrainBoardII) setBase(base uint16) { + // Nothing +} diff --git a/resources/ApplesoftInteger.BIN b/resources/ApplesoftInteger.BIN new file mode 100644 index 0000000000000000000000000000000000000000..b695fa285aaa0a97421eb8951f1fb134690e48e1 GIT binary patch literal 65536 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 literal 0 HcmV?d00001