From c5f16cd15a6ebbc9fcf939549061f1ffa9e85132 Mon Sep 17 00:00:00 2001 From: tudnai Date: Sun, 24 May 2020 21:04:34 -0700 Subject: [PATCH] Display Text Page 2 --- A2Mac/ViewController.swift | 15 ++++++++++++--- src/dev/mem/mmio.h | 2 +- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/A2Mac/ViewController.swift b/A2Mac/ViewController.swift index 4be933c..d7fb448 100644 --- a/A2Mac/ViewController.swift +++ b/A2Mac/ViewController.swift @@ -170,7 +170,8 @@ class ViewController: NSViewController { } - static let textBaseAddr = 0x400 + static let textPage1Addr = 0x400 + static let textPage2Addr = 0x800 static let textBufferSize = 0x400 // static only needed to be able to initialize things @@ -191,8 +192,10 @@ class ViewController: NSViewController { // static var flashingSpace : Character = " " let ramBufferPointer = UnsafeRawBufferPointer(start: MEM, count: 64 * 1024) - let textBufferPointer = UnsafeRawBufferPointer(start: MEM + textBaseAddr, count: textBufferSize * 2) - let textAuxBufferPointer = UnsafeRawBufferPointer(start: AUX + textBaseAddr, count: textBufferSize) + static let textPage1Pointer = UnsafeRawBufferPointer(start: MEM + textPage1Addr, count: textBufferSize * 2) + static let textPage2Pointer = UnsafeRawBufferPointer(start: MEM + textPage2Addr, count: textBufferSize * 2) + var textBufferPointer = textPage1Pointer + let textAuxBufferPointer = UnsafeRawBufferPointer(start: AUX + textPage1Addr, count: textBufferSize) static let textArraySize = textLines * (textCols + lineEndChars) + textCols * 2 @@ -518,6 +521,12 @@ class ViewController: NSViewController { // 40 col if videoMode.col80 == 0 { + if MEMcfg.txt_page_2 == 0 { + self.textBufferPointer = ViewController.textPage1Pointer + } + else { + self.textBufferPointer = ViewController.textPage2Pointer + } // render the rest of the text screen for y in fromLines ..< toLines { for x in 0 ..< self.textCols { diff --git a/src/dev/mem/mmio.h b/src/dev/mem/mmio.h index 4b721bd..b7baa9a 100644 --- a/src/dev/mem/mmio.h +++ b/src/dev/mem/mmio.h @@ -786,7 +786,7 @@ INLINE void ioWrite( uint16_t addr, uint8_t val ) { case io_VID_TXTPAGE2: // printf("io_VID_TXTPAGE2\n"); - MEMcfg.txt_page_2 = 1; + MEMcfg.txt_page_2 = ! MEMcfg.is_80STORE; textPageSelect(); break;