Code: Select all
@NAME = "Радио-86РК Z80 RAM 32*8K ROM 16*2K"
@CPU_FREQUENCY = 2000000
@CRT_FREQUENCY = 1333333
@ROM_0 = "rk86/ROMS/rom0.DAT"
@ROM_1 = "rk86/ROMS/rom1.DAT"
@ROM_2 = "rk86/ROMS/rom2.DAT"
@ROM_3 = "rk86/ROMS/rom3.DAT"
@ROM_4 = "rk86/ROMS/rom4.DAT"
@ROM_5 = "rk86/ROMS/rom5.DAT"
@ROM_6 = "rk86/ROMS/rom6.DAT"
@ROM_7 = "rk86/ROMS/rom7.DAT"
@ROM_8 = "rk86/ROMS/rom8.DAT"
@ROM_9 = "rk86/ROMS/rom9.DAT"
@ROM_10 = "rk86/ROMS/rom10.DAT"
@ROM_11 = "rk86/ROMS/rom11.DAT"
@ROM_12 = "rk86/ROMS/rom12.DAT"
@ROM_13 = "rk86/ROMS/rom13.DAT"
@ROM_14 = "rk86/ROMS/rom14.DAT"
@ROM_15 = "rk86/ROMS/rom15.DAT"
@ROM_otl = "rk86/ROMS/otlad.DAT"
@F806_ADDR = 0xfb98
@F80C_ADDR = 0xfc46
@F803_ADDR = 0xfe63
CpuZ80 cpu
@SYM_GEN = "rk86/sgr.bin"
@FONT = "rk86/fontr.bin"
@DOS = "rk86/RKDOS.DAT"
@OPT_FILE = "rk86/rk86.opt"
@ROM_DISK = "rk86/romdisk.DAT"
######## Window ########
EmuWindow window
window.caption = @NAME
# Default window size for window.windowStyle = fixed (default = 800, 600)
window.defaultWindowSize = 960, 640
# Window style: autosize, sizable, fixed, fullscreen (default = autosise)
window.windowStyle = autosize
#window.windowStyle = sizable
# Window scaling option: 1x, 2x, 3x, fit, bestFit, fitKeepAR (default = bestFit)
window.frameScale = 2x
#window.frameScale = fitKeepAR
#window.frameScale = bestFit
# Window fields mixing: none, mix, interlace (default = none)
#window.fieldsMixing = mix
# Image antialiasing (default = no)
window.antialiasing = no
# Aspect correction (default = no)
window.aspectCorrection = no
#window.aspectCorrection = yes
######## Platform #####
Ram ram = 0x8000
Rom otlad = @ROM_otl,0x1000
Rom rom0 = @ROM_0,0x800
Rom rom1 = @ROM_1,0x800
Rom rom2 = @ROM_2,0x800
Rom rom3 = @ROM_3,0x800
Rom rom4 = @ROM_4,0x800
Rom rom5 = @ROM_5,0x800
Rom rom6 = @ROM_6,0x800
Rom rom7 = @ROM_7,0x800
Rom rom8 = @ROM_8,0x800
Rom rom9 = @ROM_9,0x800
Rom rom10 = @ROM_10,0x800
Rom rom11 = @ROM_11,0x800
Rom rom12 = @ROM_12,0x800
Rom rom13 = @ROM_13,0x800
Rom rom14 = @ROM_14,0x800
Rom rom15 = @ROM_15,0x800
AddrSpaceMapper rom = 16
rom.page = 0, &rom0
rom.page = 1, &rom1
rom.page = 2, &rom2
rom.page = 3, &rom3
rom.page = 4, &rom4
rom.page = 5, &rom5
rom.page = 6, &rom6
rom.page = 7, &rom7
rom.page = 8, &rom8
rom.page = 9, &rom9
rom.page = 10, &rom10
rom.page = 11, &rom11
rom.page = 12, &rom12
rom.page = 13, &rom13
rom.page = 14, &rom14
rom.page = 15, &rom15
Ram ram0 = 0xC000
Ram ram1 = 0xC000
Ram ram2 = 0xC000
Ram ram3 = 0xC000
Ram ram4 = 0xC000
Ram ram5 = 0xC000
Ram ram6 = 0xC000
Ram ram7 = 0xC000
Ram ram8 = 0xC000
Ram ram9 = 0xC000
Ram ram10 = 0xC000
Ram ram11 = 0xC000
Ram ram12 = 0xC000
Ram ram13 = 0xC000
Ram ram14 = 0xC000
Ram ram15 = 0xC000
Ram ram16 = 0xC000
Ram ram17 = 0xC000
Ram ram18 = 0xC000
Ram ram19 = 0xC000
Ram ram20 = 0xC000
Ram ram21 = 0xC000
Ram ram22 = 0xC000
Ram ram23 = 0xC000
Ram ram24 = 0xC000
Ram ram25 = 0xC000
Ram ram26 = 0xC000
Ram ram27 = 0xC000
Ram ram28 = 0xC000
Ram ram29 = 0xC000
Ram ram30 = 0xC000
Ram ram31 = 0xC000
AddrSpaceMapper pages = 32
pages.page = 0, &ram0
pages.page = 1, &ram1
pages.page = 2, &ram2
pages.page = 3, &ram3
pages.page = 4, &ram4
pages.page = 5, &ram5
pages.page = 6, &ram6
pages.page = 7, &ram7
pages.page = 8, &ram8
pages.page = 9, &ram9
pages.page = 10, &ram10
pages.page = 11, &ram11
pages.page = 12, &ram12
pages.page = 13, &ram13
pages.page = 14, &ram14
pages.page = 15, &ram15
pages.page = 16, &ram16
pages.page = 17, &ram17
pages.page = 18, &ram18
pages.page = 19, &ram19
pages.page = 20, &ram20
pages.page = 21, &ram21
pages.page = 22, &ram22
pages.page = 23, &ram23
pages.page = 24, &ram24
pages.page = 25, &ram25
pages.page = 26, &ram26
pages.page = 27, &ram27
pages.page = 28, &ram28
pages.page = 29, &ram29
pages.page = 30, &ram30
pages.page = 31, &ram31
Rom fdcRom = @DOS, 0x1000
Ppi8255 ppi1
Ppi8255 ppi2
Ppi8255 fdcPpi
# ROM pages
PageSelector romPageSelector
romPageSelector.mapper = &rom
Translator Rom_Select = &romPageSelector
Rom_Select.writeAndMask = 0x7
# RAM pages
PageSelector pageSelector
pageSelector.mapper = &pages
Translator Xram_Select = &pageSelector
Xram_Select.writeAndMask = 0x01F
Dma8257 dma
dma.frequency = @CPU_FREQUENCY
Crt8275 crt
crt.frequency = @CRT_FREQUENCY
crt.dma = &dma, 2
Rk86Renderer crtRenderer
crtRenderer.font = @SYM_GEN
crtRenderer.altFont = @FONT
crtRenderer.altRenderer = no
crtRenderer.crt = &crt
Rk86Core core
core.window = &window
core.crtRenderer = &crtRenderer
crt.core = &core
RkFddRegister fddReg
RkFddController fdc
fdc.fddRegister = &fddReg
fdcPpi.circuit = &fdc
AddrSpace fdcAddrSpace
fdcAddrSpace.range = &fdcPpi, 0, 3
fdcAddrSpace.range = &fddReg, 4, 4
fdcAddrSpace.addrMask = 7
AddrSpace addrSpace
addrSpace.range = &ram, 0x0000, 0x7FFF
addrSpace.range = &ppi1, 0x8000, 0x83FF
addrSpace.range = &ppi2, 0x8400, 0x87FF
addrSpace.writeRange = &Xram_Select, 0x8800, 0x8CFF
addrSpace.range = &otlad, 0x9000, 0x9FFF
addrSpace.range = &pages, 0xA000, 0xBFFF
addrSpace.range = &crt, 0xC000, 0xDFFF
addrSpace.writeRange = &dma, 0xE000, 0xEFFF
addrSpace.readRange = &fdcRom, 0xE000, 0xEFFF
addrSpace.range = &fdcAddrSpace, 0xF000, 0xF7FF
addrSpace.writeRange = &Rom_Select, 0xF800, 0xF8FF
addrSpace.readRange = &rom, 0xF800, 0xFFFF
cpu.frequency = @CPU_FREQUENCY
cpu.startAddr = 0xF800
cpu.addrSpace = &addrSpace
cpu.core = &core
dma.addrSpace = &addrSpace
dma.cpu = &cpu
RkKeybLayout kbdLayout
RkKeyboard keyboard
RkPpi8255Circuit ppiCircuit
ppiCircuit.rkKeyboard = &keyboard
ppi1.circuit = &ppiCircuit
RkRomDisk romDisk = @ROM_DISK
ppi2.circuit = &romDisk
######## File I/O ########
RkFileLoader loader
loader.addrSpace = &addrSpace
loader.filter = "Файлы РК-86 (*.rkr, *.gam)|*.rkr;*.gam;*.RKR;*.GAM|Файлы RK-совместимых ПК (*.rk?)|*.rk;*.rk?;*.RK;*.RK?|Все файлы (*.*)|*"
TapeRedirector tapeInFile
tapeInFile.mode = "r"
tapeInFile.filter = "Файлы РК-86 (*.rkr, *.gam)|*.rkr;*.gam;*.RKR;*.GAM|Файлы RK-совместимых ПК (*.rk?)|*.rk;*.rk?;*.RK;*.RK?|Файлы BSM (*.bsm)|*.bsm;*.BSM|Файлы EDM (*.edm)|*.edm;*.EDM|Все файлы (*.*)|*"
#tapeInFile.fileName = "program.gam"
TapeRedirector tapeOutFile
tapeOutFile.mode = "w"
tapeOutFile.filter = "Файлы РК-86 (*.rkr)|*.rkr|Файлы RK-совместимых ПК (*.rk)|*.rk|Файлы BSM (*.bsm)|*.bsm|Файлы EDM (*.edm)|*.edm|Все файлы (*.*)|*"
FdImage diskA = 80, 2, 1, 3125
diskA.label = A
diskA.readOnly = NO
diskA.filter = "Образы дисков РК-86 (*.rkdisk, *.rdi)|*.rkdisk;*.rdi;*.RDI|Все файлы (*.*)|*"
diskA.fileName = "rk86/PROGS/CPM.rkdisk"
FdImage diskB = 80, 2, 1, 3125
diskB.label = B
diskB.filter = "Образы дисков РК-86 (*.rkdisk, *.rdi)|*.rkdisk;*.rdi;*.RDI|Все файлы (*.*)|*"
#diskB.fileName = "rk86/DISKS/BLANK.rkdisk"
fdc.fdImage = 0, &diskA
fdc.fdImage = 1, &diskB
RkTapeInHook tapeInHook = @F806_ADDR
tapeInHook.tapeRedirector = &tapeInFile
cpu.addHook = &tapeInHook
RkTapeOutHook tapeOutHook = @F80C_ADDR
tapeOutHook.tapeRedirector = &tapeOutFile
cpu.addHook = &tapeOutHook
CloseFileHook closeFileHook = @F803_ADDR
closeFileHook.addTapeRedirector = &tapeInFile
closeFileHook.addTapeRedirector = &tapeOutFile
cpu.addHook = &closeFileHook
EmuObjectGroup tapeGrp
tapeGrp.addItem = &tapeOutHook
tapeGrp.addItem = &tapeInHook
tapeGrp.addItem = &closeFileHook
#tapeGrp.enabled = no
######## Include Saved Options ########
include @OPT_FILE
######## Configuration Window ########
ConfigTab configTab = @NAME
configTab.optFileName = @OPT_FILE
#window.frameScale
ConfigRadioSelector scaleSelector = &window, frameScale, "Масштабирование"
scaleSelector.addItem = 1x, "1x"
scaleSelector.addItem = 2x, "2x"
scaleSelector.addItem = 3x, "3x"
scaleSelector.addItem = fit, "Растянуть во все окно"
scaleSelector.addItem = fitKeepAR, "Растянуть с сохранением пропорций"
scaleSelector.addItem = bestFit, "Растянуть с целым коэффициентом"
configTab.addControl = 1, &scaleSelector
#window.windowStyle
ConfigRadioSelector styleSelector = &window, windowStyle, "Размер окна"
styleSelector.addItem = autosize, "Автоматически подстраивать"
styleSelector.addItem = sizable, "Изменяемый пользователем"
styleSelector.addItem = fixed, "Фиксированный"
configTab.addControl = 1, &styleSelector
#window.antialiasing
ConfigRadioSelector aaSelector = &window, antialiasing, "Сглаживание"
aaSelector.addItem = no, "Выкл."
aaSelector.addItem = yes, "Вкл."
configTab.addControl = 1, &aaSelector
#window.aspectCorrection
ConfigRadioSelector arSelector = &window, aspectCorrection, "Учитывать Aspect Ratio"
arSelector.addItem = no, "Нет (1:1)"
arSelector.addItem = yes, "Оригинальный AR"
configTab.addControl = 2, &arSelector
#window.fieldsMixing
ConfigRadioSelector mixSelector = &window, fieldsMixing, "Смешивание полукадров"
mixSelector.addItem = none, "Выкл."
mixSelector.addItem = mix, "Вкл."
configTab.addControl = 2, &mixSelector
#crtRenderer.altRenderer
ConfigRadioSelector rendSelector = &crtRenderer, altRenderer, "Шрифт ВГ8275"
rendSelector.addItem = no, "Оригинальный шрифт"
rendSelector.addItem = yes, "8×16 / 8×12 / 8×8"
configTab.addControl = 2, &rendSelector
#crtRenderer.colorMode
ConfigRadioSelector colorSelector = &crtRenderer, colorMode, "Режим цвета"
colorSelector.addItem = mono, "Ч/б"
colorSelector.addItem = color1, "Цветной (схема Толкалина)"
colorSelector.addItem = color2, "Самоцвет-М (схема Акименко)"
configTab.addControl = 2, &colorSelector
#kbdLayout.layout
ConfigRadioSelector laSelector = &kbdLayout, layout, "Раскладка клавиатуры"
laSelector.addItem = qwerty, "Qwerty"
laSelector.addItem = jcuken, "Йцукен"
configTab.addControl = 3, &laSelector
#tapeGrp.enabled
ConfigRadioSelector tapeSelector = &tapeGrp, enabled, "Перехват обращений к магнитофону"
tapeSelector.addItem = yes, "Вкл."
tapeSelector.addItem = no, "Выкл."
configTab.addControl = 3, &tapeSelector
cpu.debugOnHalt = yes
cpu.debugOnIllegalCmd = yes