mirror of
https://github.com/ivanizag/izapple2.git
synced 2024-12-23 00:30:21 +00:00
78 lines
2.3 KiB
Go
78 lines
2.3 KiB
Go
package izapple2
|
|
|
|
/*
|
|
Extended 80-Column Text AppleColor Card or Video7 RGB-SL7 card
|
|
See:
|
|
https://mirrors.apple2.org.za/Apple%20II%20Documentation%20Project/Interface%20Cards/Apple%20IIe/Apple%20IIe%20Extended%2080%20Column%20RGB%20Card/Manuals/Apple%20Ext80ColumnAppleColorCardHR%20Manual.pdf
|
|
https://apple2online.com/web_documents/Video-7%20Manual%20KB.pdf
|
|
https://mirrors.apple2.org.za/ftp.apple.asimov.net/documentation/hardware/video/DIGICARD%2064K%20Extended%2080%20Column%20RGB%20Card%20for%20Apple%20IIe%20Instruction%20Manual.pdf
|
|
|
|
Diagnostics disk:
|
|
https://mirrors.apple2.org.za/ftp.apple.asimov.net/images/hardware/video/Video-7%20Apple%20II%20RGB%20Demo%20%28Video-7%2C%20Inc.%29%281984%29.dsk
|
|
|
|
It goes to the 80 column slot.
|
|
|
|
To set the state it AN3 in graphics mode has to go off-on-off-on. Each pair off-on record the state of 80col:
|
|
on step 0, an ANN3OFF moves to step 1
|
|
on step 1, an ANN3ON moves to step 2, and the value of 80COL is copied to RGB flag 1
|
|
on step 2, an ANN3OFF moves to step 3
|
|
on step 3, an ANN3ON moves to step 4, and the value of 80COL is copied to RGB flag 2
|
|
|
|
Modes by RGB flags 1 and 2:
|
|
0-0: 560*192 mono
|
|
1-1: 140*192 ntsc
|
|
0-1: Mixed mode
|
|
1-0: 160*192 ntsc
|
|
|
|
*/
|
|
|
|
type cardRGB struct {
|
|
// cardBase, not a regular card
|
|
step uint8
|
|
}
|
|
|
|
func setupRGBCard(a *Apple2) *cardRGB {
|
|
var c cardRGB
|
|
c.step = 0
|
|
|
|
a.io.softSwitchesData[ioFlagRGBCardActive] = ssOn
|
|
|
|
// Does not have ROM or private softswitches. It spies on the softswitches
|
|
a.io.addSoftSwitchRW(0x50, func(io *ioC0Page) uint8 {
|
|
io.softSwitchesData[ioFlagText] = ssOff
|
|
// Reset RGB modes when entering graphics mode
|
|
c.step = 0
|
|
io.softSwitchesData[ioFlag1RGBCard] = ssOn
|
|
io.softSwitchesData[ioFlag2RGBCard] = ssOn
|
|
return 0
|
|
}, "TEXTOFF")
|
|
|
|
a.io.addSoftSwitchRW(0x5e, func(io *ioC0Page) uint8 {
|
|
io.softSwitchesData[ioFlagAnnunciator3] = ssOff
|
|
switch c.step {
|
|
case 0:
|
|
c.step++
|
|
case 2:
|
|
c.step++
|
|
}
|
|
|
|
return 0
|
|
}, "ANN3OFF-RGB")
|
|
|
|
a.io.addSoftSwitchRW(0x5f, func(io *ioC0Page) uint8 {
|
|
io.softSwitchesData[ioFlagAnnunciator3] = ssOn
|
|
switch c.step {
|
|
case 1:
|
|
io.softSwitchesData[ioFlag1RGBCard] = io.softSwitchesData[ioFlag80Col]
|
|
c.step++
|
|
case 3:
|
|
io.softSwitchesData[ioFlag2RGBCard] = io.softSwitchesData[ioFlag80Col]
|
|
c.step++
|
|
}
|
|
|
|
return 0
|
|
}, "ANN3ON-RGB")
|
|
|
|
return &c
|
|
}
|