[*]
; unreal speccy configuration file

UNREAL=0.37.3   ; make sure you don't have old INI version


[MISC]
; give idle timeslices to other applications
ShareCPU=1      ; 1 - only for fast CPUs (incompatible with SoundDrv=none)
;
HighPriority=1  ; boost process priority, disabled on ShareCPU=0
;
; high memory: PENTAGON, SCORPION, PROFSCORP, GMX, PROFI, ATM450, ATM710, KAY, PHOENIX
HIMEM=PHOENIX
; memory size, KB. pentagon,atm2: 128/256/512/1024, scorp,kay: 256/1024,
; ATM450: 512/1024, profi: 1024 only, phoenix: 1024/2048
RAMSize=2048
; start tape on ROM load routine
TapeAutoStart=1
; cmos on DFF7/BFF7: none, DALLAS (pc chip), or 512Bu1 (russian chip)
CMOS=512Bu1
; cache size: 16,32 or 0 - disabled. no effect for ATM-4.50 model
Cache=0
; bits, that can't be updated by Z80 and cleared by RESET (decimal value)
; ex: mask=3 - disable HWMC and 512x192, mask=255 - disable all additional hardware
EFF7mask=0      ; EFF7mask=0 - all pentagon features on
;
SMUC=1          ; enable/disable NVRAM + CMOS RTC
;
RESET=MENU       ; may be: BASIC,DOS,MENU,SYS
;
ZC=0             ; enable/disable Z-Controller
;
HideConsole=0   ; for gui freaks, who annoyed by main console window, set to 1
;
ConfirmExit=0   ; 1 for exit confirmation message
;
; help filename
Help=help_eng.html

; directory with zx-files
DIR=.

; Kondrat'yev ISA modem emulated through windows modem on COM-port
; if you own internal PCI modem, use "settings/input" dialog to find out port
Modem=NONE      ; NONE or COM1-COM4

Read7FFD=1


[AUTOLOAD]
; disk images and snapshot, loaded at startup
; file may be compressed, but only one file in archive is allowed
diskA=
diskB=
diskC=
diskD=
;snapshot=demo1.sna


[INPUT]
; you can define own layout, naming section in this INI file [ZX.KEYS.myname]
; create layouts for xas/storm/zxasm/alasm/zxword/sts/etc yourself, i'm bored
KeybLayout=default
Mouse=KEMPSTON  ; mouse type: NONE/KEMPSTON/AY
Wheel=KEMPSTON  ; mouse wheel: NONE/KEMPSTON/KEYBOARD
JoyMouse=0      ; emulate kempston joystick on mouse
MouseScale=0    ; logarithmic scale: ZX_mouse=PC_mouse*2^(Scale), valid: [-3;3]
SwapMouse=0     ; swap left and right mouse buttons
KJoystick=1     ; emulate kempston joystick on keyboard and/or gameport
Matrix=1        ; emulate keymatrix effect
Fire=KFIRE      ; autofire key -> kempston
FireRate=1      ; autofire button up/down delay (INTs)
AltLock=1       ; does not update ZX-SPECTRUM keyboard while ALT pressed
XTKBD=0        ; ATM PC/XT keyboard controller

; clipboad paste delays
HoldDelay=2
ReleaseDelay=5
NewlineDelay=20


[ULA]
Frame=71680   ; t-states in frame
Paper=17989   ; t-states before paper
Line=224      ; t-states in line
int=50        ; int freq
intlen=32     ; int length in t-states
EvenM1=0      ; align M1 cycle to even T-state (for scorpion)
4TBorder=0    ; update border every 4T states (for scorpion)
FloatBus=0    ; unstable data bus
FloatDOS=0    ; unstable data bus in TR-DOS mode

Preset=PHOENIX    ; don't use above settings and load preset

; PRESET.NAME=FRAME,PAPER,LINE,INT,INTLEN,EvenM1,4TBorder,floatBus,floatDOS
PRESET.PENTAGON=71680,17989,224,50,32,0,0,0,1
PRESET.SCORPION=69888,14344,224,50,32,1,1,0,0
PRESET.PHOENIX=69888,12540,224,50,32,0,0,0,0
PRESET.ATM=71680,17989,224,50,32,0,0,0,0

; ATM 7.10 hi-res video modes swap RAM/CPU address bus A5-A7<=>A8-A10
AtmMemSwap=0
; reprogram color DACs with ATM palette. with this option
; noflic filter works only in fullscreen 16/32-bit,
; colors of system leds are also affected
UsePalette=1


[VIDEO]

VSync=0       ; enable for slower, but less jerky screen repaint.
              ; uses backbuffer - requires twice more video memory
              ; WARNING: eats a lot of cpu time!

FullScr=0     ; start at full-screen. windowed mode can be used only for
              ; GDI, Blitter or Overlay video filter / driver

Refresh=0     ; monitor refresh rate in fullscreen mode (0-default).
              ; for video=resampler, the more - the better

Border=small  ; border size:            none / small / wide
NoFlic=0      ; apply noflic filter
AltNoFlic=0   ; use interlaced algorithm for video=double
FlashColor=0  ;

MinRes=480    ; minimal screen y-resolution in fullscreen mode
              ; use 480 or higher to avoid switching mode when entering monitor
              ; use 1024 to force 1280x1024 on LCD instead of 1280x960


ChunkSize=auto  ; 2,4, or auto-detect (only for ch* videofilters)
PixelScroll=0   ; detect per-pixel scrolling for video=text


; frame resampler options:
rsm.frames=4  ; frames to mix (2-8)

; fir interpolation mode:
; 2C - 12hz cut-off (gigascreen), 3C - 8hz cut-off (3-color)
; FULL - full details (scrollers), SIMPLE - average of last 2 frames
rsm.mode=2C


; scale factor for 'video=advmame'. accepted values: 2,3,4
; 4x scale requires 1280x960 pixels. use border=none, if your monitor displays only 1024x768
scale=2

; video filter/renderer

video=double

; values for video filter:
;  normal - fastest, but supports only standart spectrum screen, noflic, flash-color and HWMC
;  double - slower, but offers better quality and works in: pentagon 512x192, profi 512x240, ...
;  quad - 4x picture scale, designed to use in LCD with 1280x1024 to avoid hardware stretching
;         use with minres=1024 to avoid 1280x960 mode
;  text - converts 4x8 fonts to 8x8 or 8x16 (for reading e-zines)
;  resampler - converts spectrum 50hz-int into 60/75/80/... hz display refresh
;  bilinear - color interpolation (MMX)
;  scale - fake 'vector' scaling
;  advmame - 2x,3x,4x scaling algorithm from AdvanceMAME project
;  tv - color TV emulation, windowed mode
;  ch_ov - chunky (fast), windowed mode (overlay, 16bit)
;  ch_hw - chunky (fast), windowed mode (hardware accel, 32bit)
;  ch_bl - chunky (filtered,320x240x16)
;  ch_b  - chunky (filtered,640x480x16)
;  ch4true - 32bit 4x4 chunky, full color precision (slow, but no special hardware reqd)

; driver for video=normal/double/text

driver=blt

; video driver:
;   ddraw - direct access to video memory, fullscreen only, fastest
;   gdi   - standart windows driver (slowest, but most compatible)
;   blt   - hardware blitter. recommended for accelerated cards (geforce4/etc)
;   ovr   - video overlay. recommended in windowed mode for slow video cards
;   ddrawh, ddrawt - fullscreen 16- and 32-bit modes

fastlines=0 ; for video=double - draw twice faster in expense of visual quality
            ; for video=anti64 - 4x8->8x8, else 4x8->8x16

; use overlay is faster, but you'll get wrong colors if videocard can't
; use RGB555/RGB565 pixels formats for overlay (such as all nVidia cards)
; some video cards do interpolation in overlay mode,
; even if we don't requested it

ScanIntens=45  ; (%) bright for scan lines when video=double,fastlines=0
               ; only for true-color and high-color modes
               ; 8-bit modes use palette values ZN,ZB

; ignore these filters
Hide= ;ch_bl,ch_ov,ch4true

; update border for CPU expensive filters
Update=1
; how much frames to skip before displaying frame (for PCI video set to 2)
SkipFrame=0
; don't wastetime on drawing when running on max speed
SkipFrameMaxSpeed=64
; screenshot format: SCR or BMP
ScrShot=BMP
; when enabled, displays videocard vendor id, device id, card name
; (warning: sometimes uses driver database at http://crl.microsoft.com !!!)
; when disabled, faster startup but no additional information
DetectModel=0

; apply filter for 1x2 Atari chunks. situable for games, converted from XL,
; like SpyVsSpy, Flying Shark. presets for games defined in [COLORS] section
; (for now, filter works in 8-bit and 16-bit-normal /not-double/ modes)
;AtariPreset=fl_shark_red_palette
AtariPreset=none


[BETA128]
Beta128=1
Noise=1 ; seek noise
Traps=1 ; intercept sector save/load routines in TR-DOS ROM for faster loading
Fast=1  ; disable all FDD/FDC delays. some programs will not work
IL=1    ; sector interleave (1=1:1, 2=2:1, 3=3:1) applied when loading TRD/SCL
        ; if you prefer fast=0, set to 2 for 3d13 loaders, to 1 for turbo-loaders
BOOT=boot6.$b

[SOUND]
SoundFilter=0   ; lowpass filter (good for beeper)
SoundDrv=ds     ; wave, ds or none
RejectDC=1      ; reject DC component of output sound
Preamp=4	; works only with RejectDC=1

; sound buffer size for SoundDrv=wave
; the more buffer, the more delay before sound playing...
; if sound is jerky, try SoundBuffer=16
; for really fast computers with windows 2000, try SoundBuffer=4
SoundBuffer=auto;10  ; only for SoundDrv=wave

DSPrimary=0;1     ; use primary buffer for DSound. no sound in background.
                ; useful only for troubleshooting


; when [SOUND] Enabled=0, emulator runs on maximum speed
Enabled=1

Fq=44100        ; check maximum sampling rate in your soundcard manual
                ; setting freq not supported by hardware
                ; will cause resampling and degrade quality and performance

GSType=Z80      ; BASS, Z80 or NONE
GSReset=0       ; reinit GS on reset

SD=0            ; enable/disable soundrive
CovoxFB=0       ; enable/disable pentagon covox
CovoxDD=0       ; enable/disable scorpion covox

; max sound volume is 8192. set to 0 to completely disable sound device
BeeperVol=8192     ; most popular sound device
MicOutVol=1000     ; tape saving
MicInVol=1000      ; tape loading
AYVol=8192         ; volume of each channel
CovoxFBVol=8192    ; pentagon covox
CovoxDDVol=6000    ; scorpion covox
CovoxProfiVol=8000 ; profi covox
SDVol=4000         ; soundrive
GSVol=8000         ; general sound (for both high- and low- level emulation modes)
BASSVol=8000       ; MOD-player of BASS.DLL
SAAVol=8192	   ; SAA1099 volume

[NGS]           ; neo gs settings
; sdcard image
SDCARD=

[ZC]            ; Z-Controller settings
; sdcard image
SDCARD=

[AY]
Chip=YM                         ; bus reaction (none/AY/YM/YM2203)
FQ=1774400                      ; chip clock fq
Stereo=ABC                      ; AY stereo mode - any of STEREO.*
VolTab=default.YM               ; volume table - any of VOLTAB.*
UseSamples=0                    ; 0 - square tones, 1 - digital samples (low quality)
; double-AY scheme:
;   none    - no soundchip
;   default - single AY/YM
;   PSEUDO  - pseudo-turbo (one port for two devices + some phase shift)
;   QUADRO  - pentagon 2nd AY on #AFFD,#EFFD
;   POS     - power of sound turbo-AY (bit 0 of port #1F)
;   CHRV    - NedoPC turbo-sound (switch chip on selection reg #FE/FF)
;   ZXM	    - ZXM-SoundCard (TSFM + SAA1099)
Scheme=ZXM	;CHRV;default


; STEREO.PRESET_NAME=A_left,A_right,B_left,B_right,C_left,C_right
; (you can define your custom presets, all numbers are from [0; 100])
STEREO.ABC=100,10,66,66,10,100
STEREO.ACB=100,10,10,100,66,66
STEREO.BAC=66,66,100,10,10,100
STEREO.mono=66,66,66,66,66,66
STEREO.unreal=90,20,66,66,20,90

; volume tables
VOLTAB.default.AY=0000,0340,04C0,06F2,0A44,0F13,1510,227E,289F,414E,5B21,7258,905E,B550,D7A0,FFFF
VOLTAB.default.YM=0000,0000,00EF,01D0,0290,032A,03EE,04D2,0611,0782,0912,0A36,0C31,0EB6,1130,13A0,1751,1BF5,20E2,2594,2CA1,357F,3E45,475E,5502,6620,7730,8844,A1D2,C102,E0A2,FFFF
VOLTAB.BULBA_OPEN.AY=0000,1111,2222,3333,4444,5555,6666,7777,8888,9999,AAAA,BBBB,CCCC,DDDD,EEEE,FFFF
VOLTAB.BULBA_OPEN.YM=0000,0000,041A,08D4,11A8,1A7B,234F,2C23,34F7,3DCB,469F,4F72,5846,611A,69EE,72C2,7B96,8469,8D3D,9611,9EE5,A7B9,B08D,B960,C234,CB08,D3DB,DCB0,E584,EE57,F72B,FFFF
VOLTAB.DELPHISPEC=0136,0170,01B5,0208,026A,02DF,0369,040E,04D2,05BB,06CF,0818,099F,0B6F,0D97,1026,1332,16D0,1B1D,203A,264D,2D85,361A,404D,4C6C,5AD4,6BF3,804D,987C,B53B,D764,FFFF
VOLTAB.X128=0000,0200,0500,0700,0A00,0C00,1200,1600,1D00,2200,2600,2C00,3F00,3F00,3F00,FF00
VOLTAB.YASE=0000,0200,0500,0700,0A00,0C00,1200,1600,1D00,2200,2600,2C00,3F00,3F00,3F00,FF00
VOLTAB.ZXMAK=0000,0000,00F8,01C2,029E,033A,03F2,04D7,0610,077F,090A,0A42,0C3B,0EC2,1137,13A7,1750,1BF9,20DF,2596,2C9D,3579,3E55,4768,54FF,6624,773B,883F,A1DA,C0FC,E094,FFFF
;original Lion17.YM=0000,0156,0228,033A,0502,086F,0CD4,17B9,1AF0,2E8D,4047,4F47,6528,7B19,92E1,AAAA
;original Lion17.AY=0000,0014,007F,00BF,00FA,0139,0175,01BB,0241,02F1,03F2,04B2,05DE,076B,08BA,0A0F
VOLTAB.Lion17.YM=0000,0201,033C,04D7,0783,0CA6,133E,2395,2868,45D3,606A,76EA,97BC,B8A5,DC51,FFFF
VOLTAB.Lion17.AY=0000,01FD,0CA0,12FD,18DA,1F1E,2515,2C0A,395C,4ADC,6468,777F,9552,BCCA,DE18,FFFF
;original Vaggelis Kapartzianis=00,03,04,05,06,07,08,0A,0C,0E,11,15,19,1D,23,2A
VOLTAB.Vaggelis Kapartzianis=0000,1249,1861,1E79,2492,2AAA,30C2,3CF3,4924,5555,679E,7FFF,9860,B0C2,D554,FFFF
VOLTAB.RAMSOFT.AY=0000,0364,0500,0700,0A80,1000,1600,2300,2A00,4300,5C00,7300,9180,B400,D800,FFFF
VOLTAB.RAMSOFT.YM=0000,0000,00F8,01C2,029E,033A,03F2,04D7,0610,077F,090A,0A42,0C3B,0EC2,1137,13A7,1750,1BF9,20DF,2596,2C9D,3579,3E55,4768,54FF,6624,773B,883F,A1DA,C0FC,E094,FFFF
VOLTAB.R80=0000,0201,033C,04D7,0783,0CA6,133E,2396,2868,45D4,606A,76EA,97BC,B8A6,DC52,FFFF

[COLORS]
color=alone     ; default

; palette format:
; name=ZZ,ZN,NN,NB,BB,ZB:R11,R12,R13;R21;R22;R23;R31;R32;R33
; where ZZ,NN,BB - bright levels for black,normal,and bright colors
; ZN,NB,ZB - bright levels for zero+normal, normal+bright, zero+bright
;            for GIGASCREEN and FLASH-COLORS
; Rnn - matrix for post-processing:
;  real_Red    = (Red*R11 + Green*R12 + Blue*R13) / 0x100
;  real_Green  = (Red*R21 + Green*R22 + Blue*R23) / 0x100
;  real_Blue   = (Red*R31 + Green*R32 + Blue*R33) / 0x100
;
; note: emulator uses 8-bit precision for color components,
; 8-bit filters: use 6 bit precision (VGA palette limitation)
; overlay & hi-color: truncates results to 5 bit
; true color: no quality loss
;
; palette settings does not affect chunky modes
;
; default=00,80,C0,E0,FF,C8:FF,00,00;00,FF,00;00,00,FF

Mars=00,80,C0,E0,FF,C8:FF,00,00;40,C0,00;00,40,C0
Ocean=20,80,A0,C0,E0,A8:D0,00,30;00,D0,30;00,00,FF
Grey=00,80,C0,E0,FF,C8:49,92,24;49,92,24;49,92,24
alone=00,60,A0,E0,FF,A0:FF,00,00;00,FF,00;00,00,FF
pulsar=00,76,CD,E9,FF,9F:FF,00,00;00,FF,00;00,00,FF
ATM=00,55,AA,E0,FF,80:FF,00,00;00,FF,00;00,00,FF

; presets for atari-like mode
; format: <PAPER><INK>:<COL1><COL2><COL3><COL4> [ , <PAPER><INK>:<COL1><COL2><COL3><COL4> ]*
; color is a mix of 2 pure spectrum colors, e.g. 11=red+red=red, 47=green+white=light-green, etc...
atari.fl_shark_red_palette=06:EE666600
atari.test=70:00132177,0F:001199FF,34:33119944


[HDD]
Scheme=NONE     ; interface type: NONE/ATM/NEMO/NEMO-A8/SMUC/PROFI
SkipReal=1;1  ; disable work with physical drives. faster startup when
            ; you have no connected spectrum drive(s)

CDROM=;ASPI;SPTI  ; SPTI (native WinNT) or ASPI (use 3rd-party library wnaspi32.dll)

; for image file, specify filename with full path, else it'll not work

; master device. specify image filename or <MODEL,SERIAL> to use real drive
Image0=
;D:\CPM.HDD
CHS0=20/16/63  ; max size, accessible through CHS. not used for real drive
LBA0=20160;412110     ; max size, accessible through LBA. not used for real drive
HD0RO=1         ; read only flag

; slave device. empty filename used for disconnected device
Image1=
;<SAMSUNG CD-ROM SC-140F,>
;<_NEC CD-RW NR-7800B>
;<SONY DVD RW DRU-710A,May26,2005>
CHS1=0/0/0
LBA1=0
HD1RO=0


[ROM]
; general sound firmware
GS=ROMs\bootgs.rom

; 64/128/512/1024K ROM images (single file)

ATM1=ROMs\atm103rs.rom

;ATM2=ROMs\Xbios103.rom
ATM2=ROMs\bios_1_07_13.rom
;ATM2=ROMs\glukatm.rom

; standard PROFI 64K rom
PROFI=ROMs\profi_my.rom

; standard scorpion 64K rom
SCORP=ROMs\scorpion.rom

; for SMUC 512k ROM, use file.rom:0 and file.rom:1 to select active bank
PROFROM=ROMs\prof401.rom:0

; GMX rom
GMX=ROMs\GMX50.rom

; standard KAY 64K rom
KAY=ROMs\kay1024s.rom

; standard Phoenix 64k rom
PHOENIX=ROMs\ZXM-Phoenix_bios.bin

; you can create own 64K-ROMSET, naming ini section [ROM.my_own_set]
; for empty ROMSET, single-file large ROM used (accordingly to memory model)
ROMSET=

[ROM.default]
title=Separate ROMs set
; service rom [optional]
sys=ROMs\gluk61r.rom
; basic48 - high 16K of sinclair rom [required!]
sos=ROMs\sos.rom
; tr-dos [optional]
dos=ROMs\dos.rom
; basic128 - low 16K of sinclair rom [optional]
128=ROMs\128_low.rom

[ROM.pentagon]
title=Pentagon-128 (32K) + TR-DOS
128=ROMs\pentagon.rom:0
sos=ROMs\pentagon.rom:1
dos=ROMs\trd503.rom
sys=ROMs\trd503.rom

[ROM.GLUK]
title=Mr Gluk Reset Service
128=ROMs\qc_3_05.rom
sos=ROMs\2006.rom
dos=ROMs\dos6_10e.rom
sys=ROMs\glukpen.rom

[ROM.scorpion]
title=Scorpion (64K,v2.95)
128=ROMs\scorpion.rom:0
sos=ROMs\scorpion.rom:1
sys=ROMs\scorpion.rom:2
dos=ROMs\scorpion.rom:3

[ROM.profi]
title=PROFI (64k)
128=ROMs\profi.rom:2
sos=ROMs\profi.rom:3
sys=ROMs\profi.rom:0
dos=ROMs\profi.rom:1

[ROM.KAY]
title=KAY (64k)
128=ROMs\kay1024s.rom:0
sos=ROMs\kay1024s.rom:1
sys=ROMs\kay1024s.rom:2
dos=ROMs\kay1024s.rom:3

[ROM.48K]
title=ZX-Spectrum 48K
sos=ROMs\48.rom

[ROM.128K]
title=ZX-Spectrum 128K
128=ROMs\128.rom:0
sos=ROMs\128.rom:1

[ROM.ATM2]
Title=BIOS1.07.13 for ATM2
sos=ROMs\bios_1_07_13.rom:0
dos=ROMs\bios_1_07_13.rom:1
128=ROMs\bios_1_07_13.rom:2
sys=ROMs\bios_1_07_13.rom:3


[LEDS]
; enable leds
leds=1
; ay amplitude peaks on keyboard leds
KBD_AY=0

; led coordinates in pixels. comment out, if you don't want some led
; negative coordinates are offset from bottom and right
; WARNING! if you choose coordinates outside visible screen area
; emulator will crash

; AY volumes. color indicates noise, envelope or digital sound use
AY=1:1,1
; show Z80 t-states between HALTs and PC framerate
Perf=1:1,-11
PerfShowT=0             ; display used CPU t-states

; GS/TRDOS/TAPE read/write
LOAD=1:-24,1
; active input devices: keyboard, mouse, kempston
Input=1:20,1
; local time
Time=1:-32,-10
; on-screen watches (debugger)
OSW=0:-50,26
; zx-spectrum memory in dynamic: read/write/execute
MemBand=0:60,3
; bytes per pixel in memory band (allowed 64,128,256,512)
BandBpp=256

[ARC]
; these files are ignored
SkipFiles=*.nfo;*.txt;*.diz;*.inf;files.bbs;descript.ion

; you may add your own archivers!

; command line to extract all files without pathnames and without
; queries on overwrite, use %s to indicate archive filename;
; use archivers, that understand long filenames!
CAB=extrac32 /E /Y "%s"
ZIP=pkzip25 -extract=all -overwrite=all "%s"
ZIP=pkunzip -o -Jahrs %s
ZIP=pkunzip -o %s
ZIP=pkunzip %s
RAR=rar32 e -y "%s"
RAR=rar e -y "%s"

[SYSTEM.KEYS]

; pc keyboard:
;
;  ESC  F1  F2  F3  F4     F5  F6  F7  F8    F9  F10 F11 F12          PRSCR SCLOCK PAUSE
;  TIL   1   2   3   4   5   6   7   8   9   0 MINUS PLUS  BACK         INS HOME PGUP     NUMLOCK GRDIV GRMUL GRSUB
;  TAB   Q   W   E   R   T   Y   U   I   O   P   LB    RB               DEL END  PGDN        N7    N8    N9   GRADD
;  CAPS  A   S   D   F   G   H   J   K   L   COL QUOTE ENTER                                 N4    N5    N6
;  LSHIFT Z  X   C   V   B   N   M COMMA POINT SLASH RSHIFT BACKSL           UP              N1    N2    N3   ENTER
;  LCONTROL LALT              SPACE                  RALT RCONTROL     LEFT DOWN RIGHT       N0          NP

; LMB,RMB,MMB - mouse buttons
; MWU,MWD - mouse wheel up/down
; JLEFT,JRIGHT,JUP,JDOWN,JFIRE - joystick/gamepad

; mouse & joystick "keys" can't be bound to commands, only to spectrum keys

; p.s.
;      CONTROL = LCONTROL or RCONTROL
;      ALT     = LALT or RALT
;      SHIFT   = LSHIFT or RSHIFT
; numlock must be on for N0-N9 and NP

; system commands:
; command=key1 [key2 [key3 [key4]]]

; keys active in emulation mode

main.exit=ALT F4           ; why do this?
main.lockmouse=MMB         ; read kempston mouse in windowed mode
main.monitor=ESC           ; for hackers only
main.selectfilter=F4       ; select video filter
main.selectdriver=SHIFT F4 ; select video driver for some filters
main.fullscreen=ALT ENTER  ; toggle full-screen on/off
main.pause=PAUSE           ; pause
main.selectfix=GRMUL       ; select video parameter
main.selectsnd=ALT GRMUL   ; select soundchip parameter or palette
main.incfix=SHIFT GRADD    ; fine tuneup
main.decfix=SHIFT GRSUB    ; fine tuneup
main.incfix10=GRADD        ; tuneup
main.decfix10=GRSUB        ; tuneup
main.leds=GRDIV            ; leds on/off
main.maxspeed=NUMLOCK      ; max speed on/off
main.pokedialog=F6         ; enter poke(s)
main.starttape=F7          ; start/stop tape
main.tapebrowser=SHIFT F7  ; tape browser
main.screenshot=ALT F8     ; screenshot
main.reset=F12             ; reset to [MISC]Reset=DOS/BASIC/MENU/SYS
main.reset128=CONTROL SHIFT F12 ; reset to basic 128
main.resetsys=ALT F12      ; reset to service ROM
main.reset48=ALT SHIFT F12 ; reset to basic 48 with locked 128k memory
main.resetbasic=SHIFT F12  ; reset to basic 48 with unlocked 128k memory
main.resetdos=CONTROL F12  ; reset to TR-DOS
main.resetcache=ALT CONTROL F12    ; reset to cache
main.nmi=ALT SHIFT F11     ; NMI without ROM switching
main.nmidos=CONTROL F11    ; TR-DOS magic
main.nmicache=ALT F11      ; NMI in cache
main.help=F1               ; show keys
main.settings=Alt F1       ; emulation settings (GUI)
main.save=F2               ; save disk/snapshot
main.load=F3               ; load disk/tape/snapshot
main.savesound=F5          ; save WAV/VTX
main.qsave1=ALT F2         ; quick save to qsave1.sna
main.qsave2=CONTROL F2     ; quick save to qsave2.sna
main.qsave3=SHIFT F2       ; quick save to qsave3.sna
main.qload1=ALT F3         ; quick load from qsave1.sna
main.qload2=CONTROL F3     ; quick load from qsave2.sna
main.qload3=SHIFT F3       ; quick load from qsave3.sna
main.keystick=SCLOCK       ; toggle keystick mode
main.autofire=ALT NUMLOCK  ; toggle autofire mode
main.saveall=F9            ; quick save cmos and disks
main.xtkbd=ALT CONTROL Z   ; enable/disable ATM XT keyboard (emulation controls blocked!)
main.pastetext=ALT SHIFT INS ; copy text from clipboard to keyboard buffer
main.size1=ALT 1           ; set normal window size (in windowed mode)
main.size2=ALT 2           ; set double window size (in windowed mode)
main.sizem=ALT 3           ; maximize window (in windowed mode)
main.memsearch=ALT F6      ; search in memory for changed values (cheats, etc)

; keys in all monitor windows

mon.exit=ALT F4           ;
mon.emul=ESC              ; back to emulation
mon.bpdialog=ALT C        ; conditional breakpoints dialog
mon.gs=ALT G              ; gs status dialog
mon.pokedialog=ALT P      ; enter poke(s) F6 is already used
mon.tapebrowser=SHIFT F7  ; tape browser
mon.reset=F12             ; reset to [MISC]Reset=DOS/BASIC/MENU/SYS
mon.reset128=CONTROL SHIFT F12 ; reset to basic 128
mon.resetsys=ALT F12      ; reset to service ROM
mon.reset48=ALT SHIFT F12 ; reset to basic 48 with locked 128k memory
mon.resetbasic=SHIFT F12  ; reset to basic 48 with unlocked 128k memory
mon.resetdos=CONTROL F12  ; reset to TR-DOS
mon.resetcache=ALT CONTROL F12    ; reset to cache
mon.nmi=ALT SHIFT F11     ; NMI without ROM switching
mon.nmidos=CONTROL F11    ; TR-DOS magic
mon.nmicache=ALT F11      ; NMI in cache
mon.help=F1               ; show keys
mon.settings=ALT F1       ; emulation settings (GUI)
mon.save=F2               ; save disk/snapshot
mon.load=F3               ; load disk/tape/snapshot
mon.savesound=F5          ; save WAV/VTX
mon.qsave1=ALT F2         ; quick save to qsave1.sna
mon.qsave2=CONTROL F2     ; quick save to qsave2.sna
mon.qsave3=SHIFT F2       ; quick save to qsave3.sna
mon.qload1=ALT F3         ; quick load from qsave1.sna
mon.qload2=CONTROL F3     ; quick load from qsave2.sna
mon.qload3=SHIFT F3       ; quick load from qsave3.sna
mon.setrange=F6           ; set range of breakpoints
mon.resetrange=SHIFT F6   ; reset range of breakpoints
mon.screen=F9             ; show screen, as it present in video memory
mon.altscreen=SHIFT F9    ; show inactive screen
mon.rayscreen=ALT F9      ; show painted screen area until crt-ray (with MC, border & 2-scr effects)
mon.step=F7               ; single step
mon.stepover=F8           ; step over loops and calls
mon.exitsub=F11           ; trace until (sp)
mon.loadblock=ALT R       ; load memory block
mon.saveblock=ALT W       ; save memory block
mon.fillblock=ALT F       ; fill memory block with pattern
mon.setbank=ALT B         ; write to #7FFD
mon.sethimem=ALT M        ; write to model-specific extended memory port
mon.next=TAB              ; next window
mon.prev=SHIFT TAB        ; prev window
mon.dump=ALT D            ; toggle dump
mon.rip=ALT T             ; ripper's tool
mon.osw=ALT O             ; setup on-screen watches
mon.scrshot=ALT S         ; toggle screenshot/scrdump/watches
mon.setwatch=CONTROL U    ; set user-defined watch address
mon.switchay=ALT Y        ; switch active AY (turbo-sound)
mon.labels=CONTROL J      ; goto label
mon.memsearch=ALT F6      ; search in memory for changed values (cheats, etc)
mon.cpu=CONTROL TIL       ; switch to next cpu
; keys in registers window

reg.left=LEFT           ; select register
reg.right=RIGHT         ; select register
reg.up=UP               ; select register
reg.down=DOWN           ; select register
reg.edit=ENTER          ; edit current register
reg.a=CONTROL A         ; edit A
reg.f=CONTROL F         ; edit flags
reg.bc=CONTROL B        ; edit BC
reg.de=CONTROL D        ; edit DE
reg.hl=H                ; edit HL
reg.pc=P                ; edit PC
reg.sp=S                ; edit SP
reg.ix=X                ; edit IX
reg.iy=Y                ; edit IY
reg.i=I                 ; edit i
reg.r=R                 ; edit R
reg.im=M                ; edit im
reg.iff1=CONTROL 1      ; edit iff1
reg.iff2=CONTROL 2      ; edit iff2
reg.SF=ALT S            ; toggle SF
reg.ZF=ALT Z            ; toggle ZF
reg.F5=ALT 5            ; toggle F5
reg.HF=ALT H            ; toggle HF
reg.F3=ALT 3            ; toggle F3
reg.PF=ALT P            ; toggle PF/PV
reg.NF=ALT N            ; toggle NF
reg.CF=ALT C            ; toggle CF
reg.codejump=QUOTE      ; goto address in code window under cursor
reg.datajump=COL        ; goto address in data window under cursor

; keys in cpu window

cpu.findpc=HOME         ; set cursor at PC
cpu.here=F4             ; trace to cursor
cpu.findtext=ALT F7     ; find string
cpu.findcode=CONTROL F7 ; find code with mask
cpu.goto=G              ; goto address
cpu.bpx=SPACE           ; breakpoint under cursor
cpu.asm=ENTER           ; edit instruction
cpu.setpc=Z             ; set PC to cursor
cpu.up=UP               ; move cursor up
;cpu.up=MWU             ; move cursor up
cpu.down=DOWN           ; move cursor down
;cpu.down=MWD           ; move cursor down
cpu.left=LEFT           ; move cursor left
cpu.right=RIGHT         ; move cursor right
cpu.pgdn=PGDN           ; next page
cpu.pgup=PGUP           ; prev page
cpu.save1=CONTROL 1     ; save cursor position to slot 1
cpu.save2=CONTROL 2
cpu.save3=CONTROL 3
cpu.save4=CONTROL 4
cpu.save5=CONTROL 5
cpu.save6=CONTROL 6
cpu.save7=CONTROL 7
cpu.save8=CONTROL 8
cpu.rest1=1             ; save cursor position to jumpstack, load from slot 1
cpu.rest2=2
cpu.rest3=3
cpu.rest4=4
cpu.rest5=5
cpu.rest6=6
cpu.rest7=7
cpu.rest8=8
cpu.back=BACK           ; pop cursor position from jumpstack
cpu.context=QUOTE       ; push cursor position and goto instruction operand
cpu.datajump=COL        ; jump to instruction operand in data window
cpu.labels=CONTROL L    ; show labels on/off
cpu.importl=CONTROL A   ; menu for importing labels from XAS/ALASM

; keys in memory dump window

mem.left=LEFT           ; cursor left
mem.right=RIGHT         ; cursor right
mem.up=UP               ; cursor up
mem.down=DOWN           ; cursor down
mem.pgup=PGUP           ; page up
mem.pgdn=PGDN           ; page down
mem.switch=CONTROL TAB  ; move to hex/ascii
mem.stline=HOME         ; start of line
mem.endline=END         ; end of line
mem.findtext=ALT F7     ; find text in memory / disk track
mem.findcode=CONTROL F7 ; find code with mask in memory / disk track
mem.goto=CONTROL G      ; goto address
mem.mem=CONTROL M       ; select memory editor
mem.diskphys=CONTROL V  ; select disk editor (physical track)
mem.disklog=CONTROL O   ; select disk editor (logical sectors)
mem.diskgo=CONTROL T    ; select drive/track/sector in diskeditor
mem.pc=CONTROL P        ; goto PC
mem.sp=CONTROL S        ; goto SP
mem.bc=CONTROL B        ; goto BC
mem.de=CONTROL D        ; goto DE
mem.hl=CONTROL H        ; goto HL
mem.ix=CONTROL X        ; goto IX
mem.iy=CONTROL Y        ; goto IY



[ZX.KEYS.default]

Name=unreal default

;               ZX keyboard layout:
;
;  1    2    3    4    5    6    7    8    9    0
;  Q    W    E    R    T    Y    U    I    O    P
;  A    S    D    F    G    H    J    K    L   ENT
; CAP   Z    X    C    V    B    N    M   SYM  SPC

; KLEFT,KRIGHT,KUP,KDOWN,KFIRE        - kempston joystick

; format:
; PC_KEY=[ZX_KEY_SHIFT] ZX_KEY

1=1
2=2
3=3
4=4
5=5
6=6
7=7
8=8
9=9
0=0
Q=Q
W=W
E=E
R=R
T=T
Y=Y
U=U
I=I
O=O
P=P
A=A
S=S
D=D
F=F
G=G
H=H
J=J
K=K
L=L
Z=Z
X=X
C=C
V=V
B=B
N=N
M=M
TIL=CAP 1
CAPS=CAP 2
PGUP=CAP 3
PGDN=CAP 4
LEFT=CAP 5
DOWN=CAP 6
UP=CAP 7
RIGHT=CAP 8
DEL=CAP 9
BACK=CAP 0
MINUS=SYM J
PLUS=SYM K
COMMA=SYM N
POINT=SYM M
ENTER=ENT
SPACE=SPC
LB=SYM 8
RB=SYM 9
COL=SYM Z
TAB=CAP SPC             ; break
INS=SYM W
HOME=SYM Q
END=SYM E
QUOTE=SYM P
SLASH=SYM C
BACKSL=SYM CAP

LSHIFT=CAP
RSHIFT=SYM

N4=KLEFT
N6=KRIGHT
N8=KUP
N2=KDOWN
N5=KFIRE
N1=KLEFT KDOWN
N3=KRIGHT KDOWN
N7=KUP KLEFT
N9=KUP KRIGHT

MWU=CAP 7
MWD=CAP 6

JLEFT=KLEFT
JRIGHT=KRIGHT
JUP=KUP
JDOWN=KDOWN
JFIRE=KFIRE

[ZX.KEYS.XAS]

Name=XAS 7.xx (incomplete)

1=1
2=2
3=3
4=4
5=5
6=6
7=7
8=8
9=9
0=0
Q=Q
W=W
E=E
R=R
T=T
Y=Y
U=U
I=I
O=O
P=P
A=A
S=S
D=D
F=F
G=G
H=H
J=J
K=K
L=L
Z=Z
X=X
C=C
V=V
B=B
N=N
M=M
SHIFT=CAP
CONTROL=SYM

[ZX.KEYS.ACEDIT]

; layout created by Alone Coder

Name=ACEdit

1=1
2=2
3=3
4=4
5=5
6=6
7=7
8=8
9=9
0=0
Q=Q
W=W
E=E
R=R
T=T
Y=Y
U=U
I=I
O=O
P=P
A=A
S=S
D=D
F=F
G=G
H=H
J=J
K=K
L=L
Z=Z
X=X
C=C
V=V
B=B
N=N
M=M
TIL=CAP 1
CAPS=CAP 2
PGUP=CAP 3
PGDN=CAP 4
LEFT=CAP 5
DOWN=CAP 6
UP=CAP 7
RIGHT=CAP 8
DEL=CAP 9
BACK=CAP 0
MINUS=SYM J
PLUS=SYM L
COMMA=SYM N
POINT=SYM M
ENTER=ENT
SPACE=SPC
LB=SYM 8
RB=SYM 9
COL=SYM O
TAB=SYM CAP
;ESC=CAP SPC
INS=SYM W
HOME=SYM Q
END=SYM E
QUOTE=SYM P
SLASH=SYM C
BACKSL=SYM Z

SHIFT=CAP
CONTROL=SYM

N4=KLEFT
N6=KRIGHT
N8=KUP
N2=KDOWN
N5=KFIRE
N1=KLEFT KDOWN
N3=KRIGHT KDOWN
N7=KUP KLEFT
N9=KUP KRIGHT
GRSUB=SYM J
GRADD=SYM K
GRMUL=SYM B
GRDIV=SYM V

[ZX.KEYS.Z80Stealth]

Name=Z80Stealth default

;               ZX keyboard layout:
;
;  1    2    3    4    5    6    7    8    9    0
;  Q    W    E    R    T    Y    U    I    O    P
;  A    S    D    F    G    H    J    K    L   ENT
; CAP   Z    X    C    V    B    N    M   SYM  SPC

; KLEFT,KRIGHT,KUP,KDOWN,KFIRE        - kempston joystick

; format:
; PC_KEY=[ZX_KEY_SHIFT] ZX_KEY

1=1
2=2
3=3
4=4
5=5
6=6
7=7
8=8
9=9
0=0
Q=Q
W=W
E=E
R=R
T=T
Y=Y
U=U
I=I
O=O
P=P
A=A
S=S
D=D
F=F
G=G
H=H
J=J
K=K
L=L
Z=Z
X=X
C=C
V=V
B=B
N=N
M=M
TIL=CAP 1
CAPS=CAP 2
PGUP=CAP 3
PGDN=CAP 4
LEFT=CAP 5
DOWN=CAP 6
UP=CAP 7
RIGHT=CAP 8
DEL=CAP 9
BACK=CAP 0
MINUS=SYM J
PLUS=SYM K
COMMA=SYM N
POINT=SYM M
ENTER=ENT
SPACE=SPC
LB=SYM 8
RB=SYM 9
COL=SYM Z
TAB=CAP SPC             ; break
INS=SYM W
HOME=SYM Q
END=SYM E
QUOTE=SYM P
SLASH=SYM C
BACKSL=SYM CAP

RALT=SYM
LSHIFT=CAP
RSHIFT=CAP
RCONTROL=CAP SYM

N4=KLEFT
N6=KRIGHT
N8=KUP
N2=KDOWN
N5=KFIRE
N1=KLEFT KDOWN
N3=KRIGHT KDOWN
N7=KUP KLEFT
N9=KUP KRIGHT

MWU=CAP 7
MWD=CAP 6

JLEFT=KLEFT
JRIGHT=KRIGHT
JUP=KUP
JDOWN=KDOWN
JFIRE=KFIRE
