[*]
; unreal speccy configuration file
UNREAL=0.39.0 ; 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
;
SyncMode=tsc ; video synchronization method: sound, tsc, video
;
HighResolutionTimer=0 ; 1 - set system timer resolution to 1ms, 0 - default timer resolution (~15ms)
;
; high memory: PENTAGON, SCORPION, PROFSCORP, PROFI, ATM450, ATM710, ATM3, KAY, PLUS3, QUORUM
HIMEM=ATM3
; memory size, KB. pentagon,atm2: 128/256/512/1024, scorp,kay: 256/1024,
; ATM450: 512/1024, profi: 1024 only, quorum: 128/1024
RAMSize=4096
;Pattern for fill RAM on start
ColdRAM=00030003
; Lock memory above 128k when loading sna128 (pentagon only)
Sna128Lock=1
; intercept rom tape loader for faster loading
TapeTraps=1
; start tape on ROM load routine
TapeAutoStart=1
; cmos on DFF7/BFF7: none, DALLAS (pc chip), or 512Bu1 (russian chip)
CMOS=DALLAS
; 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=0 ; enable/disable NVRAM + CMOS RTC
;
RESET=MENU ; may be: BASIC,DOS,MENU,SYS
;
ZC=1 ; 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-COM255
[AUTOLOAD]
; disk images and snapshot, loaded at startup
; file may be compressed, but only one file in archive is allowed
;c:\zx\us032atm\atmmm4.trd
;c:\zx\sys.trd
diskA=
diskB=
diskC=
diskD=
;snapshot=demo1.sna
DefaultDrive=Auto ; Auto, A, B, C, D
[INPUT]
; default/bk08/quorum
ZXKeyMap=default
; 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
KeybPCMode=0 ; when enabled, using pc defaults, ex: SHIFT+7 => &
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
FJoystick=0 ; emulate fuller 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
ATMKBD=0 ; ATM PC/XT keyboard controller
Joy=0 ; Joystick id (0, 1, ...)
; clipboad paste delays
HoldDelay=2
ReleaseDelay=5
NewlineDelay=20
[ULA]
Frame=200000 ; 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
PortFF=0 ; enable/disable port FF
mcx_small=320 ; visible multicolor area width (small border)
mcy_small=240 ; visible multicolor area height (small border)
b_top_small=24 ; top border height (small border)
b_left_small=32 ; left border width (small border)
mcx_full=384 ; visible multicolor area width (full border)
mcy_full=288 ; visible multicolor area height (full border)
b_top_full=48 ; top border height (full border)
b_left_full=64 ; left border width (full border)
;Preset=PENTAGON ; don't use above settings and load preset
; PRESET.NAME=FRAME,PAPER,LINE,INT,INTLEN,EvenM1,4TBorder,floatBus,floatDOS,PortFF,
; mcx_small,mcy_small,b_top_small,b_left_small,mcx_full,mcy_full,b_top_full,b_left_full
PRESET.PENTAGON=71680,17989,224,50,32,0,0,0,0,0,320,240,24,32,384,288,48,64
PRESET.SCORPION=69888,14344,224,50,32,1,1,0,0,1,320,240,24,32,384,288,48,64 ; thanks to Faster
PRESET.SCORPION_TURBO+=70784,14344,224,50,32,0,1,0,0,1,320,240,24,32,384,288,48,64 ; thanks to Faster
PRESET.ATM1_2_3.5MHz=69888,14395,224,50,32,0,0,0,0,1,320,240,24,32,384,288,48,64 ; thanks to DDp
PRESET.ATM1_2_7.0MHz=99880,17989,224,50,32,0,0,0,0,1,320,240,24,32,384,288,48,64
PRESET.PROFI=69888,12580,224,50,28,0,0,0,0,0,320,240,24,32,384,288,48,64 ; thanks to DDp
PRESET.KAY1024=69887,16132,224,50,32,0,1,0,0,0,320,240,24,32,384,296,56,64 ; (яюфуюэ яюф kay_demo)
; 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
ProfiMonochrome=0
;
ULAPlus=0 ; enable/disable ULA+
[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
; window scale factor (for hardware stretching)
winscale=1
; video filter/renderer
video=normal
; 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, ...
; triple - 3x picture scale
; 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/triple/quad/text
driver=gdi
; video driver:
; ddraw - direct access to video memory, fullscreen only, fastest
; ddrawh, ddrawt - fullscreen 16- and 32-bit modes
; 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
; d3d - hardware scaling via direct 3d surface (dx9 required)
; d3de - hardware scaling via direct 3d surface (dx9 required) fullscreen only
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=100;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, BMP, PNG
ScrShot=PNG
; directory for screenshots (without '\' at end)
ScrShotDir=.
; 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
; ffmpeg settings
; exec: path and name of ffmpeg executable (without quotes)
; newconsole: 1 - open new console for ffmpeg output,
; 0 - print ffmpeg output into emul's console (useful for debug)
; parm: encoding settings (see ffmpeg doc)
; vout: output video file name (use '#' sign for sequence number substitution)
ffmpeg.exec=ffmpeg.exe
ffmpeg.newconsole=0
; ffmpeg encoding options
; -ss 00:00:00.500 - skip first 500 ms (skip 25 frames with status line)
; -af volume=3.0 - gain sound volume by 3
; -vf "..." - apply video filter
; -r 25 - set 25 fps
; -c:a ... - set audio codec ("copy" for uncompressed wav)
; -c:v ... - set video codec ("copy" for uncompressed rgb24)
; -b:a 320k - set bitrate for audio
; -b:v 2800k - set bitrate for video
;# mp3:320kbps, x264:baseline,10
ffmpeg.parm=-c:a libmp3lame -b:a 320k -af volume=3.000000 -c:v libopenh264 -pix_fmt yuvj420p -preset:v veryfast -crf 10 -ss 00:00:00.500
ffmpeg.vout=video#.avi
;# mp3:320kbps, x264:lossless
;ffmpeg.parm=-c:a libmp3lame -b:a 320k -af volume=3.000000 -c:v libx264 -pix_fmt yuvj420p -preset:v veryfast -crf 0 -ss 00:00:00.500
;ffmpeg.vout=video#.avi
;# wav, x264:lossless
;ffmpeg.parm=-c:a copy -c:v libx264 -pix_fmt yuvj420p -preset:v veryfast -crf 0 -ss 00:00:00.500
;ffmpeg.vout=video#.avi
;# uncompressed
;ffmpeg.parm=-c:a copy -c:v copy -ss 00:00:00.500
;ffmpeg.vout=video#.avi
;# Image sequence: PNG
;ffmpeg.parm=
;ffmpeg.vout=video#_%06d.png
;# PAL DVD video
; MUST use picture size greater than 720x576 (for example, DOUBLE SIZE and COMPLETE border)!
;ffmpeg.parm=-af volume=3.000000 -bf 2 -vf "crop=720:576,tinterlace=mode=interlacex2" -aspect 4:3 -target pal-dvd -r 25 -b:v 2800k -ss 00:00:00.500
;ffmpeg.vout=video#.mpg
;# PAL DVD video
; MUST use picture size lower than 720x576 (and DOUBLE SIZE for correct interlace)!
;ffmpeg.parm=-af volume=3.000000 -bf 2 -vf "pad=720:576:(ow-iw)/2:(oh-ih)/2,tinterlace=mode=interlacex2" -aspect 4:3 -target pal-dvd -r 25 -b:v 2800k -ss 00:00:00.500
;ffmpeg.vout=video#.mpg
;# RTMP streaming: justin.tv
;ffmpeg.parm=-af volume=3.000000 -r 10 -ss 00:00:00.500 -f flv
;ffmpeg.vout=rtmp://live.justin.tv/app/live_74829844_mfrdpoeg034tn03gn03ring3f0rngc
;# RTMP streaming: own3d.tv
;ffmpeg.parm=-af volume=3.000000 -r 10 -ss 00:00:00.500 -c:v libx264 -pix_fmt yuvj420p -preset:v veryfast -profile:v baseline -crf 10 -f flv
;ffmpeg.vout=rtmp://live.eu.own3d.tv/live/b8493921_949585_kjhb5632l3l1
;# RTMP streaming: twitch.tv
;ffmpeg.parm=-af volume=3.000000 -r 10 -ss 00:00:00.500 -c:v libx264 -pix_fmt yuvj420p -preset:v veryfast -profile:v baseline -crf 10 -bufsize 1835k -f flv
;ffmpeg.vout=rtmp://live.justin.tv/app/live_sub_5b8ed4fae83fe83e920227337beab7e73b7a3ba3
[BETA128]
Beta128=1
Noise=0 ; 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
;Activates the substitution of RAM for i/o in FDD.
RamPageFddIO=254 ;RAM page. Comment out this line if you do not need it.
[USBZXNET]
WizNet=1
[SOUND]
SoundFilter=0 ; lowpass filter (good for beeper)
SoundDrv=ds ; wave, ds or none
RejectDC=1 ; reject DC component of output sound
; 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=1 ; enable/disable pentagon covox
CovoxDD=0 ; enable/disable scorpion covox
MoonSound=1 ; enable/disable moonsound
Saa1099=TFMpro ; NONE, ZXM, TFMpro
; 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
SDVol=4000 ; soundrive
GSVol=8000 ; general sound (for both high- and low- level emulation modes)
BASSVol=8000 ; MOD-player of BASS.DLL
MoonSoundVol=8000 ; ZXM-MoonSound
[NGS] ; neo gs settings
RamSize=2048 ; ngs ram size 2048, 4096
; sdcard image
SDCARD=;./sd_nedo.vhd
[SAA1099]
FQ=8000000
[AY]
Chip=YM2203 ; 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
; FULLER - fuller box (single AY/YM) (0x3F, 0x5F)
; 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)
Scheme=CHRV;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
;
; R, G, B - 0..0xFF
; R11..R33 - 0..0x100
; palette settings does not affect chunky modes
;
; default=00,80,C0,E0,FF,C8:100,00,00;00,100,00;00,00,100
Mars=00,80,C0,E0,FF,C8:100,00,00;40,C0,00;00,40,C0
Ocean=20,80,A0,C0,E0,A8:D0,00,30;00,D0,30;00,00,100
Grey=00,80,C0,E0,FF,C8:49,92,24;49,92,24;49,92,24
alone=00,60,AA,E0,FF,AA:100,00,00;00,100,00;00,00,100
pulsar=00,76,CD,E9,FF,9F:100,00,00;00,100,00;00,00,100
ATM=00,55,AA,E0,FF,AA:100,00,00;00,100,00;00,00,100
; 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=NEMO-DIVIDE ; interface type: NONE/ATM/NEMO/NEMO-A8/NEMO-DIVIDE/SMUC/PROFI/DIVIDE
SkipReal=1;1 ; disable work with physical drives. faster startup when
; you have no connected spectrum drive(s)
CDROM=SPTI ;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=609/16/63 ; max size, accessible through CHS. not used for real drive
LBA0=614400 ; max size, accessible through LBA. not used for real drive
HD0RO=0 ; read only flag
CD0=0 ; 1 if image is cdrom
; 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
CD1=0 ; 1 if image is cdrom
[ZC] ; Z-Controller settings
; sdcard image or <CH341> for use ch341 controller
; pins on ch341: D0 - CS, D3 - CLK, D5 - MOSI, D7 - MISO
;SDCARD=z:\home\lvd\d\nedoos\sd_nedo.vhd
SDCARD=sd_nedo.vhd
SDDelay=1500 ; delay before data token, T-states
[ROM]
; general sound firmware
GS=bootgs.rom
; 64/128/512/1024K ROM images (single file)
ATM1=atm103rs.rom
;ATM2=Xbios103.rom
ATM2=bios_1_07_13.rom
;ATM2=glukatm.rom
ATM3=zxevo_fe.rom
; standard PROFI 64K rom
PROFI=profi.rom
; standard scorpion 64K rom
SCORP=scorp295.rom
; for SMUC 512k ROM, use file.rom:0 and file.rom:1 to select active bank
PROFROM=scorp_prof401.rom:0
; standard +3 64K rom
PLUS3=plus341.rom
; standard quorum 64K rom
QUORUM=qu7v42.rom
; moonsound wavetable
MOONSOUND=yrw801.rom
; 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=glukpen.rom
; basic48 - high 16K of sinclair rom [required!]
sos=2006.rom
; tr-dos [optional]
dos=dos6_10e.rom
; basic128 - low 16K of sinclair rom [optional]
128=qc_3_05.rom
[ROM.pentagon]
title=Pentagon-128 (32K) + TR-DOS
128=pentagon.rom:0
sos=pentagon.rom:1
dos=trd504tm.rom
sys=trd504tm.rom
[ROM.GLUK]
title=Mr Gluk Reset Service
128=qc_3_05.rom
sos=2006.rom
dos=dos6_10e.rom
sys=glukpen.rom
[ROM.scorpion]
title=Scorpion (64K,v2.95)
128=scorp295.rom:0
sos=scorp295.rom:1
sys=scorp295.rom:2
dos=scorp295.rom:3
[ROM.profi]
title=PROFI (64k)
sys=profi.rom:0
dos=profi.rom:1
128=profi.rom:2
sos=profi.rom:3
[ROM.KAY1]
title=KAY 2002 (64K,JV Kramis 0.3)
128=kay1024_v2_1_las.rom:0
sos=kay1024_v2_1_las.rom:1
sys=kay1024_v2_1_las.rom:2
dos=kay1024_v2_1_las.rom:3
[ROM.KAY2]
title=KAY 2000 (64K,JV Kramis 0.3)
128=kay1024.rom:0
sos=kay1024.rom:1
dos=kay1024.rom:2
sys=kay1024.rom:3
[ROM.KAY3]
title=KAY 98 (64K,JV Kramis 0.2)
sys=kay1024b.rom:0
dos=kay1024b.rom:1
128=kay1024b.rom:2
sos=kay1024b.rom:3
[ROM.48K]
title=ZX-Spectrum 48K
sos=48.rom
[ROM.48KTRDOS]
title=ZX-Spectrum 48K + TR-DOS
sos=48.rom
dos=trd504tm.rom
[ROM.128K]
title=ZX-Spectrum 128K
128=128.rom:0
sos=128.rom:1
[ROM.ATM2]
Title=BIOS1.07.13 for ATM2
sos=bios_1_07_13.rom:0
dos=bios_1_07_13.rom:1
128=bios_1_07_13.rom:2
sys=bios_1_07_13.rom:3
[ROM.PLUS3]
title=ZX-Spectrum +3
128=plus341.rom:0
sys=plus341.rom:1
dos=plus341.rom:2
sos=plus341.rom:3
[DEBUG]
EnaBkpts=1
[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
MemBand=0:64,1
; breakpoints on/off
Breakpoints=1:-48:-10
; 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=7z e -y "%s"
RAR=7z e -y "%s"
7Z=7z 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 GRENTER
; 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
; JB0..JB31 - joystick/gamepad buttons
; 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.savevideo=CONTROL F8 ; save video
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)
main.border_none=ALT 4 ; set empty border
main.border_small=ALT 5 ; set small border
main.border_full=ALT 6 ; set full border
main.breakpoints=ALT Q ;toggle breakpoints outside monitor
; 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
mon.switchdump=CONTROL D ; switch dump mode (mem/disk/cmos/nvram/comppal)
; 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,KFIRE1,KFIRE2,KFIRE3 - kempston joystick
; FLEFT,FRIGHT,FUP,FDOWN,FFIRE,FFIRE1,FFIRE2,FFIRE3 - fuller 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
JB1=1
JB2=2
JB3=3
JB4=4
JB5=5
JB6=6
JB7=7
JB8=8
[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,KFIRE1,KFIRE2,KFIRE3 - kempston joystick
; FLEFT,FRIGHT,FUP,FDOWN,FFIRE,FFIRE1,FFIRE2,FFIRE3 - fuller 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
[ZX.KEYS.quorum]
Name=Quorum
; Quorum keyboard layout:
;
; F1 F2 F3 F4 F5 [G] NMI INV [< RES
; [E] 1 2 3 4 5 6 7 8 9 0 - + BS DEL NSLASH NSTAR NMINUS
; TAB Q W E R T Y U I O P [ ] \ N7 N8 N9
; CAPS A S D F G H J K L ; ' ~ ENT N4 N5 N6
; RUS LAT Z X C V B N M , . / UP N1 N2 N3
; CAP FIRE SPC SYM LT DN RT N0 NPOINT NPLUS
;
; FIRE,LT,DN,RT,UP=0,5,6,8,7
; NMI,RES=F11,F12(see main.*)
; INV,[< - NOT emulated
; KLEFT,KRIGHT,KUP,KDOWN,KFIRE - kempston joystick
; (JLEFT,JRIGHT,JUP,JDOWN,JFIRE reserved for 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
ESC=EBOX
DEL=BS
TIL=TILDA
CAPS=CAPS
LEFT=5
DOWN=6
UP=7
RIGHT=8
BACK=DEL
MINUS=-
PLUS=+
COMMA=,
POINT=.
ENTER=ENT
SPACE=SPC
LB=[
RB=]
COL=COLON
TAB=TAB
;HOME=N7
;END=N1
;PGUP=N8
;PGDN=N2
N1=N1
N2=N2
N3=N3
N4=N4
N5=N5
N6=N6
N7=N7
N8=N8
N9=N9
N0=N0
NP=NPOINT
QUOTE=QUOTE
SLASH=/
BACKSL=\
F1=F1
F2=F2
F3=F3
F4=F4
F5=F5
F6=GBOX
GRDIV=NSLASH
GRMUL=NSTAR
GRSUB=NMINUS
GRADD=NPLUS
PGUP=RUS
PGDN=LAT
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