scene.org File Archive

File download

<root>­/­mags­/­info_guide/ig13.zip

File size:
7 106 820 bytes (6.78M)
File date:
2023-03-06 05:45:01
Download count:
all-time: 15

Preview

  • 3dengine9 - by DL optimization/ dir
  • 3dengine9 - by DL optimization/3dmodel.asm 9.61K
  • 3dengine9 - by DL optimization/atan2 256B
  • 3dengine9 - by DL optimization/atan2_32 1.00K
  • 3dengine9 - by DL optimization/BOOT.$B 273B
  • 3dengine9 - by DL optimization/build.bat 486B
  • 3dengine9 - by DL optimization/build_.bat 119B
  • 3dengine9 - by DL optimization/COS.$C! 256B
  • 3dengine9 - by DL optimization/depkmain.asm 270B
  • 3dengine9 - by DL optimization/display.asm 3.65K
  • 3dengine9 - by DL optimization/drawedges.asm 8.68K
  • 3dengine9 - by DL optimization/drawfaces.asm 18.42K
  • 3dengine9 - by DL optimization/drawframe.asm 5.62K
  • 3dengine9 - by DL optimization/elite.sna 128.03K
  • 3dengine9 - by DL optimization/elite_0_05_alpha_êßσ«ñ¡δÑ απ¿¡δ ßΓαáªÑ⌐ ¿º ¿úαδ Elite Dangerous.jpg 182.34K
  • 3dengine9 - by DL optimization/elite_0_06_alpha_14MHz_Evo.scl 40.29K
  • 3dengine9 - by DL optimization/elite_0_06_alpha_3.5MHz.scl 40.29K
  • 3dengine9 - by DL optimization/elite_0_06_alpha_7.0MHz.scl 40.29K
  • 3dengine9 - by DL optimization/floor.asm 13.71K
  • 3dengine9 - by DL optimization/interface_zx.scr 6.75K
  • 3dengine9 - by DL optimization/main.asm 18.54K
  • 3dengine9 - by DL optimization/makers.asm 8.07K
  • 3dengine9 - by DL optimization/megaLZunpack.asm 2.59K
  • 3dengine9 - by DL optimization/my_interface.asm 1.82K
  • 3dengine9 - by DL optimization/my_lunohod.asm 118.54K
  • 3dengine9 - by DL optimization/panorama.bin 8.00K
  • 3dengine9 - by DL optimization/panorama_01/ dir
  • 3dengine9 - by DL optimization/panorama_01/_build.bat 422B
  • 3dengine9 - by DL optimization/panorama_01/nedores.exe 63.00K
  • 3dengine9 - by DL optimization/panorama_01/panorama.ast 40.51K
  • 3dengine9 - by DL optimization/panorama_01/panorama.bin 8.00K
  • 3dengine9 - by DL optimization/panorama_01/panorama.bmp 128.12K
  • 3dengine9 - by DL optimization/panorama_01/panorama.dat 672B
  • 3dengine9 - by DL optimization/panorama_01/panorama.psd 0.97M
  • 3dengine9 - by DL optimization/panorama_02/ dir
  • 3dengine9 - by DL optimization/panorama_02/_build.bat 138B
  • 3dengine9 - by DL optimization/panorama_02/nedores.exe 63.00K
  • 3dengine9 - by DL optimization/panorama_02/panorama.ast 40.51K
  • 3dengine9 - by DL optimization/panorama_02/panorama.bin 8.00K
  • 3dengine9 - by DL optimization/panorama_02/panorama.bmp 128.12K
  • 3dengine9 - by DL optimization/panorama_02/panorama.dat 672B
  • 3dengine9 - by DL optimization/READ ME.txt 23.60K
  • 3dengine9 - by DL optimization/rotate.asm 8.01K
  • 3dengine9 - by DL optimization/rotmatrix.asm 10.84K
  • 3dengine9 - by DL optimization/rotmodel.asm 19.55K
  • 3dengine9 - by DL optimization/rotobj.asm 7.41K
  • 3dengine9 - by DL optimization/script.asm 4.64K
  • 3dengine9 - by DL optimization/sin 256B
  • 3dengine9 - by DL optimization/sindiv2 256B
  • 3dengine9 - by DL optimization/sineeven 128B
  • 3dengine9 - by DL optimization/sines 64B
  • 3dengine9 - by DL optimization/sortobj.asm 8.82K
  • 3dengine9 - by DL optimization/sshot_000005.png 15.63K
  • 3dengine9 - by DL optimization/trdtool.exe 22.00K
  • 3dengine9 - by DL optimization/visibility.asm 7.33K
  • _example_raytrace/ dir
  • _example_raytrace/_raytrace/ dir
  • _example_raytrace/_raytrace/nedodefs.h 1.43K
  • _example_raytrace/_raytrace/Project1.bpr 2.28K
  • _example_raytrace/_raytrace/Project1.cpp 710B
  • _example_raytrace/_raytrace/Project1.exe 29.00K
  • _example_raytrace/_raytrace/Project1.obj 15.98K
  • _example_raytrace/_raytrace/Project1.res 876B
  • _example_raytrace/_raytrace/Unit1.cpp 8.35K
  • _example_raytrace/_raytrace/Unit1.dfm 626B
  • _example_raytrace/_raytrace/Unit1.h 960B
  • _example_raytrace/_raytrace/Unit1.obj 49.53K
  • _example_raytrace/boot.$B 273B
  • _example_raytrace/boot6000.$b 273B
  • _example_raytrace/boot8000.$b 273B
  • _example_raytrace/code.bin 4.25K
  • _example_raytrace/code.c 1.06K
  • _example_raytrace/code.c.hrm 979B
  • _example_raytrace/compile.bat 483B
  • _example_raytrace/compress.bat 1.00K
  • _example_raytrace/dehrum.asm 890B
  • _example_raytrace/depkmain.asm 288B
  • _example_raytrace/main.asm 32.19K
  • _example_raytrace/main.c 1.00K
  • _example_raytrace/megaLZunpack.asm 2.59K
  • _example_raytrace/test.scl 1.54K
  • _example_raytrace/test1k.scl 1.29K
  • _example_spr/ dir
  • _example_spr/BOOT.$B 273B
  • _example_spr/build.bat 417B
  • _example_spr/build_automask.bat 480B
  • _example_spr/code.bin 2.01K
  • _example_spr/depkmain.asm 445B
  • _example_spr/font.bin 2.00K
  • _example_spr/initint.asm 283B
  • _example_spr/initspr.asm 2.22K
  • _example_spr/inittile.asm 4.89K
  • _example_spr/int.asm 1.73K
  • _example_spr/logic.asm 1.55K
  • _example_spr/main.asm 16.88K
  • _example_spr/main_automask.asm 55B
  • _example_spr/megaLZunpack.asm 2.59K
  • _example_spr/nedores.exe 63.00K
  • _example_spr/nu.asm 2.43K
  • _example_spr/sprite.asm 16.97K
  • _example_spr/sprites.ast 1.13K
  • _example_spr/sprites.bmp 48.12K
  • _example_spr/sprites.dat 893B
  • _example_spr/sprites_automask.dat 937B
  • _example_spr/test.scl 2.54K
  • _example_spr/test_automask.scl 2.54K
  • _example_spr/test_scroll.scl 2.54K
  • _example_spr/tile.asm 13.57K
  • con18pal/ dir
  • con18pal/CODE246.DAT 625B
  • con18pal/CODE256.DAT 625B
  • con18pal/CON18.cfg 386B
  • con18pal/CON18.dof 1.42K
  • con18pal/CON18.DPR 216B
  • con18pal/CON18.dsk 2.92K
  • con18pal/CON18.exe 751.00K
  • con18pal/CON18.RES 876B
  • con18pal/con18pal.txt 4.00K
  • con18pal/con18u5.dcu 105.38K
  • con18pal/con18u5.ddp 51B
  • con18pal/con18u5.dfm 10.24K
  • con18pal/con18u5.pas 100.47K
  • con18pal/DECO256.DAT 512B
  • con18pal/GIFIMAGE.DCU 228.43K
  • con18pal/GIFIMAGE.PAS 360.55K
  • con18pal/jpeg.dcu 100.02K
  • con18pal/tablo.dat 6.67K
  • con18pal/TGAPNG.DCU 51.21K
  • con18pal/TgaPng.dfm 1.53K
  • con18pal/TGAPNG.PAS 41.49K
  • con18pal/Unit1.dcu 2.90K
  • fm-synth-master/ dir
  • fm-synth-master/.gitattributes 39B
  • fm-synth-master/.gitignore 69B
  • fm-synth-master/.gitlab-ci.yml 359B
  • fm-synth-master/extra/ dir
  • fm-synth-master/extra/tracker_mockup.scr 6.75K
  • fm-synth-master/fuse.patch 2.28K
  • fm-synth-master/fuse.sh 783B
  • fm-synth-master/LICENSE 1.28K
  • fm-synth-master/Makefile 8.80K
  • fm-synth-master/README 27B
  • fm-synth-master/setup.bat 23B
  • fm-synth-master/setup.sh 1.84K
  • fm-synth-master/setup_deps.sh 618B
  • fm-synth-master/src/ dir
  • fm-synth-master/src/banks.asm 4.84K
  • fm-synth-master/src/defs.asm 664B
  • fm-synth-master/src/dzx0_standard.asm 2.54K
  • fm-synth-master/src/loader.asm 2.83K
  • fm-synth-master/src/loader_trd.asm 3.10K
  • fm-synth-master/src/loading_screen.scr 6.75K
  • fm-synth-master/src/macros.asm 3.32K
  • fm-synth-master/src/mod/ dir
  • fm-synth-master/src/mod/AKWF_ebass_0001.wav 1.31K
  • fm-synth-master/src/mod/AKWF_epiano_0002.wav 1.31K
  • fm-synth-master/src/mod/AKWF_theremin_0008.wav 1.31K
  • fm-synth-master/src/notes.asm 1.30K
  • fm-synth-master/src/notes_unison.asm 720B
  • fm-synth-master/src/sample/ dir
  • fm-synth-master/src/sample/707_clap.wav 58.00K
  • fm-synth-master/src/sample/707_clap_kick.wav 57.37K
  • fm-synth-master/src/sample/808_snare.wav 17.95K
  • fm-synth-master/src/sample/808_snare_kick.wav 57.37K
  • fm-synth-master/src/sample/JSW.wav 11.56K
  • fm-synth-master/src/sample/kick.wav 51.41K
  • fm-synth-master/src/sample/kick_bass.wav 48.62K
  • fm-synth-master/src/sample/kick_short.wav 31.01K
  • fm-synth-master/src/sample/orch_hit.wav 100.96K
  • fm-synth-master/src/sample/simmons_hat.wav 29.36K
  • fm-synth-master/src/sample/simmons_hat_kick.wav 57.37K
  • fm-synth-master/src/sample/simmons_hat_long.wav 58.00K
  • fm-synth-master/src/sample/simmons_kick.wav 58.00K
  • fm-synth-master/src/sample/snare.wav 48.18K
  • fm-synth-master/src/sample/snare_amen.wav 29.36K
  • fm-synth-master/src/sample/snare_high.wav 38.95K
  • fm-synth-master/src/sample/tom_high.wav 58.00K
  • fm-synth-master/src/sample/tom_low.wav 58.00K
  • fm-synth-master/src/sample/tom_mid.wav 58.00K
  • fm-synth-master/src/sample/wnd_cymbal.wav 40.34K
  • fm-synth-master/src/sample/wnd_hat.wav 6.43K
  • fm-synth-master/src/sample/wnd_kick.wav 12.72K
  • fm-synth-master/src/sample/wnd_kick2.wav 12.84K
  • fm-synth-master/src/sample/wnd_snare.wav 12.66K
  • fm-synth-master/src/sample/wnd_snare_light.wav 9.88K
  • fm-synth-master/src/sample/wnd_tom.wav 21.47K
  • fm-synth-master/src/samplegen.asm 1.11K
  • fm-synth-master/src/smc.asm 4.19K
  • fm-synth-master/src/song.asm 39.20K
  • fm-synth-master/src/synth.asm 238.99K
  • fm-synth-master/src/synth_128.asm 426B
  • fm-synth-master/src/synth_ay.asm 3.09K
  • fm-synth-master/src/test_song3.asm 10.48K
  • fm-synth-master/src/test_song4.asm 5.18K
  • fm-synth-master/src/tools/ dir
  • fm-synth-master/src/tools/dcshift/ dir
  • fm-synth-master/src/tools/dcshift/dcshift.py 541B
  • fm-synth-master/src/tools/dpcm/ dir
  • fm-synth-master/src/tools/dpcm/dpcm.py 835B
  • fm-synth-master/src/tools/make_table/ dir
  • fm-synth-master/src/tools/make_table/ay_table.asm 3.94K
  • fm-synth-master/src/tools/make_table/ay_table_4bit.asm 1.31K
  • fm-synth-master/src/tools/make_table/ay_table_unweighted.asm 3.94K
  • fm-synth-master/src/tools/make_table/ay_table_weighted.asm 3.94K
  • fm-synth-master/src/tools/make_table/main.cpp 3.30K
  • fm-synth-master/src/tools/make_table/make_table.cpp 6.11K
  • fm-synth-master/src/tools/make_table/make_table.hpp 383B
  • fm-synth-master/src/tools/make_table/make_table.sln 2.84K
  • fm-synth-master/src/tools/make_table/make_table.vcxproj 6.12K
  • fm-synth-master/src/tools/make_table/make_table.vcxproj.filters 1.13K
  • fm-synth-master/src/tools/make_table/make_table.vcxproj.user 162B
  • fm-synth-master/src/tools/make_table/waveforms/ dir
  • fm-synth-master/src/tools/make_table/waveforms/main.cpp 1.25K
  • fm-synth-master/src/tools/make_table/waveforms/waveforms.bin 16.00K
  • fm-synth-master/src/tools/make_table/waveforms/waveforms.vcxproj 5.69K
  • fm-synth-master/src/tools/make_table/waveforms/waveforms.vcxproj.filters 939B
  • fm-synth-master/src/tools/make_table/waveforms/waveforms.vcxproj.user 162B
  • fm-synth-master/src/tools/make_table/ym_table.asm 3.94K
  • fm-synth-master/src/tools/make_table/ym_table_4bit.asm 1.31K
  • fm-synth-master/src/tools/make_table/ym_table_unweighted.asm 3.94K
  • fm-synth-master/src/tools/make_table/ym_table_weighted.asm 3.94K
  • fm-synth-master/src/tools/pitch_table/ dir
  • fm-synth-master/src/tools/pitch_table/main.cpp 3.93K
  • fm-synth-master/src/tools/proc_mod/ dir
  • fm-synth-master/src/tools/proc_mod/proc_mod.py 309B
  • fm-synth-master/src/waves/ dir
  • fm-synth-master/src/waves/AKWF_ebass_0001.wav 1.31K
  • fm-synth-master/src/waves/AKWF_epiano_0002.wav 1.31K
  • fm-synth-master/src/waves/AKWF_theremin_0008.wav 1.31K
  • fm-synth-master/synth.ay 13.14K
  • fm-synth-master/synth.tap 13.17K
  • fm-synth-master/test-timings.sh 409B
  • hardy/ dir
  • hardy/4_boss2.psg.packed 3.22K
  • hardy/7.mlz 2.19K
  • hardy/ay.asm 1.99K
  • hardy/ay_zip_1_2/ dir
  • hardy/ay_zip_1_2/AY-ZIP-Player-Compiler Ver_1.2.exe 481.00K
  • hardy/ay_zip_1_2/ayfly.dll 359.50K
  • hardy/ay_zip_1_2/BOOT.$B 273B
  • hardy/ay_zip_1_2/Collapse-.pt3 1.92K
  • hardy/ay_zip_1_2/Collapse.psg 17.14K
  • hardy/ay_zip_1_2/Collapse.pt3 1.92K
  • hardy/ay_zip_1_2/Collapse1.psg 16.87K
  • hardy/ay_zip_1_2/Collapse1.pt3 2.67K
  • hardy/ay_zip_1_2/compiler_src/ dir
  • hardy/ay_zip_1_2/compiler_src/Project1.cfg 434B
  • hardy/ay_zip_1_2/compiler_src/Project1.dof 2.47K
  • hardy/ay_zip_1_2/compiler_src/Project1.dpr 188B
  • hardy/ay_zip_1_2/compiler_src/Project1.res 1.68K
  • hardy/ay_zip_1_2/compiler_src/Unit1.dcu 49.49K
  • hardy/ay_zip_1_2/compiler_src/Unit1.ddp 51B
  • hardy/ay_zip_1_2/compiler_src/Unit1.dfm 33.43K
  • hardy/ay_zip_1_2/compiler_src/Unit1.pas 55.64K
  • hardy/ay_zip_1_2/example/ dir
  • hardy/ay_zip_1_2/example/AYDUMP.BIN 96.00K
  • hardy/ay_zip_1_2/example/HiCC5vis.pt3 4.27K
  • hardy/ay_zip_1_2/example/SCR2_13.pt3 4.36K
  • hardy/ay_zip_1_2/hardlevels_ver2.psg 10.51K
  • hardy/ay_zip_1_2/hardlevels_ver2.pt3 3.04K
  • hardy/ay_zip_1_2/loader_m.bas 256B
  • hardy/ay_zip_1_2/loader_s.bas 256B
  • hardy/ay_zip_1_2/MODULE.C 10.57K
  • hardy/ay_zip_1_2/MODULE0.C 10.57K
  • hardy/ay_zip_1_2/MODULE1.C 12.35K
  • hardy/ay_zip_1_2/PATTERNS.BIN 8.25K
  • hardy/ay_zip_1_2/PLAYER.ASM 7.16K
  • hardy/ay_zip_1_2/player.bat 114B
  • hardy/ay_zip_1_2/playerini.asm 681B
  • hardy/ay_zip_1_2/readme.txt 542B
  • hardy/ay_zip_1_2/run.bat 197B
  • hardy/ay_zip_1_2/TABLES.BIN 3.50K
  • hardy/ay_zip_1_2/TRACK.BIN 102B
  • hardy/ayfxplay.asm 4.56K
  • hardy/bomb.asm 12.18K
  • hardy/bombscro.asm 1.25K
  • hardy/BOOT.$B 273B
  • hardy/boss_ver3.psg.packed 3.22K
  • hardy/code.bin 3.75K
  • hardy/code.c 3.75K
  • hardy/Collapse.pt3 1.92K
  • hardy/compile.bat 582B
  • hardy/compileatm.bat 612B
  • hardy/compiletap.bat 861B
  • hardy/defs.asm 11B
  • hardy/depkmain.asm 2.13K
  • hardy/digitgfx.bin 77B
  • hardy/easy_ver2.psg.packed 4.61K
  • hardy/end.psg.packed 5.53K
  • hardy/fonthrd.f 768B
  • hardy/genscrpt.asm 3.72K
  • hardy/genscrre.asm 4.26K
  • hardy/hard_ver3.psg.packed 14.55K
  • hardy/hardlevels_ver2.psg.packed 4.61K
  • hardy/hardy.scl 85.87K
  • hardy/hardy.tap 85.09K
  • hardy/hardy.txt 5.31K
  • hardy/hardy7ffd.scl 85.87K
  • hardy/hardyatm.scl 85.87K
  • hardy/hardycnv.exe 63.50K
  • hardy/hardycnv/ dir
  • hardy/hardycnv/hardycnv.bpf 196B
  • hardy/hardycnv/hardycnv.bpr 3.88K
  • hardy/hardycnv/main.c 19.85K
  • hardy/hardycnv/main.obj 19.51K
  • hardy/hardycod.c 39.48K
  • hardy/hardydot.txt 2.77K
  • hardy/hardyfnt.ast 3.03K
  • hardy/hardyfnt.bin 546B
  • hardy/hardymc.mc 12.00K
  • hardy/hardymc.mlt 12.00K
  • hardy/hardynum.txt 157B
  • hardy/hardyrol.txt 5.70K
  • hardy/hardysfx.txt 383B
  • hardy/hardyspr.asm 21.32K
  • hardy/hardyspr.ast 53.01K
  • hardy/hardyspr.dat 1.37K
  • hardy/hardyspr.txt 7.24K
  • hardy/hrdt2.btile 12.00K
  • hardy/hrdtattr.ast 2.75K
  • hardy/hrdtattr.dat 455B
  • hardy/hrdtiles.ast 5.25K
  • hardy/hrdtiles.btile 6.00K
  • hardy/hrdtiles.dat 455B
  • hardy/loading.scr 6.75K
  • hardy/loading.scr.mlz 3.54K
  • hardy/logoattr.mlz 76B
  • hardy/logopix.mlz 579B
  • hardy/m1.png 19.13K
  • hardy/main-.asm 82.48K
  • hardy/main.asm 82.69K
  • hardy/maincode.c 39.64K
  • hardy/make.bat 1.05K
  • hardy/makemaps.asm 627B
  • hardy/mapinfo.asm 3.57K
  • hardy/mapline0.c 1.00K
  • hardy/mapline0.c.mlz 605B
  • hardy/mapline1.c 1.00K
  • hardy/mapline1.c.mlz 617B
  • hardy/mapline2.c 1.00K
  • hardy/mapline2.c.mlz 612B
  • hardy/mapline3.c 1.00K
  • hardy/mapline3.c.mlz 638B
  • hardy/mapline4.c 1.00K
  • hardy/mapline4.c.mlz 616B
  • hardy/mapline5.c 1.00K
  • hardy/mapline5.c.mlz 555B
  • hardy/mapline6.c 1.00K
  • hardy/mapline6.c.mlz 597B
  • hardy/mapline7.c 1.00K
  • hardy/mapline7.c.mlz 181B
  • hardy/mapline8.c 1.00K
  • hardy/mapline8.c.mlz 55B
  • hardy/mapline9.c 1.00K
  • hardy/mapline9.c.mlz 169B
  • hardy/maps.asm 26.05K
  • hardy/mc.asm 1.95K
  • hardy/mcpent.asm 3.20K
  • hardy/megaLZunpack.asm 2.59K
  • hardy/menu1.scr 6.75K
  • hardy/menu_ver2.psg.packed 9.85K
  • hardy/mkfont.asm 392B
  • hardy/mklogo.asm 332B
  • hardy/mkmuz0.asm 298B
  • hardy/mkmuz1.asm 298B
  • hardy/mkmuz2.asm 298B
  • hardy/mkmuz3.asm 298B
  • hardy/mkmuz4.asm 292B
  • hardy/mkpanek.asm 163B
  • hardy/mlt.dat 542B
  • hardy/MODULE0.C 10.60K
  • hardy/MODULE1.C 5.36K
  • hardy/MODULE2.C 15.30K
  • hardy/MODULE3.C 3.97K
  • hardy/MODULE4.C 6.28K
  • hardy/moveobj.asm 33.07K
  • hardy/mytiles3.btile 6.00K
  • hardy/mytiles5.btile 6.00K
  • hardy/nedodefb.exe 56.00K
  • hardy/nedodefb/ dir
  • hardy/nedodefb/hardy.fnt 768B
  • hardy/nedodefb/hardyfnt.ast 3.19K
  • hardy/nedodefb/main.c 2.06K
  • hardy/nedodefb/main.obj 3.82K
  • hardy/nedodefb/nedodefb.bpf 196B
  • hardy/nedodefb/nedodefb.bpr 3.57K
  • hardy/nedodefb/nedodefb.exe 56.00K
  • hardy/nq-hards-10.psg.packed 9.85K
  • hardy/nu.asm 35.86K
  • hardy/objtypes.asm 786B
  • hardy/panek.scr 6.75K
  • hardy/panekattr.mlz 79B
  • hardy/panekpix.mlz 528B
  • hardy/player_direct.asm 15.97K
  • hardy/player_direct_mangled.asm 17.63K
  • hardy/prmacro.asm 4.94K
  • hardy/prslwmem.asm 1.86K
  • hardy/prspr.asm 18.72K
  • hardy/respr1.asm 12.11K
  • hardy/run.bat 49B
  • hardy/scrdemo1.scr 6.75K
  • hardy/scroll.asm 2.52K
  • hardy/sfx.afb 762B
  • hardy/sjasmbug.asm 226B
  • hardy/sjasmbug.bin 1B
  • hardy/slimhar1.fnt 768B
  • hardy/testpack.bat 138B
  • hardy/text.scr 6.75K
  • hardy/tlz001.scr 6.75K
  • ig13eng.trd 640.00K
  • ig13rusfix.trd 640.00K
  • mc_rot/ dir
  • mc_rot/32col.act 768B
  • mc_rot/3dmodel.asm 4.05K
  • mc_rot/ALERT.pt3 5.39K
  • mc_rot/BOOT.$B 273B
  • mc_rot/build.bat 445B
  • mc_rot/c2p.asm 934B
  • mc_rot/c2p_init.asm 1.88K
  • mc_rot/code.bin 10.47K
  • mc_rot/code.c 10.47K
  • mc_rot/COS.$C! 256B
  • mc_rot/cube/ dir
  • mc_rot/cube/3dmodel.asm 4.16K
  • mc_rot/cube/build.bat 16B
  • mc_rot/cube/COS.$C! 256B
  • mc_rot/cube/cube.asm 3.19K
  • mc_rot/cube/cube_h.asm 1.73K
  • mc_rot/cube/cube_init.asm 1.84K
  • mc_rot/cube/divexp 512B
  • mc_rot/cube/divlog 256B
  • mc_rot/cube/patchvu.asm 3.77K
  • mc_rot/cube/rotate.asm 7.12K
  • mc_rot/cube/rotmatrix.asm 9.39K
  • mc_rot/cube/rotmodel.asm 3.26K
  • mc_rot/cube/sindiv2 256B
  • mc_rot/cube/tmap.asm 23.46K
  • mc_rot/cyberpunk.raw 16.00K
  • mc_rot/cyberpunk_borja_fresco_costal_32col.png 5.19K
  • mc_rot/dehrust.asm 4.43K
  • mc_rot/depkmain.asm 449B
  • mc_rot/divexp 512B
  • mc_rot/divlog 256B
  • mc_rot/main.asm 12.03K
  • mc_rot/maincode.c 39.50K
  • mc_rot/maincode.c.hst 10.17K
  • mc_rot/mc4lines.asm 25.88K
  • mc_rot/mc_rot.txt 9.28K
  • mc_rot/megaLZunpack.asm 2.59K
  • mc_rot/moveall.asm 888B
  • mc_rot/patchvu.asm 3.77K
  • mc_rot/pt3play.asm 20.09K
  • mc_rot/rotate.asm 7.12K
  • mc_rot/rotmatrix.asm 9.39K
  • mc_rot/rotmodel.asm 3.26K
  • mc_rot/sindiv2 256B
  • mc_rot/test.scl 10.79K
  • mc_rot/testmusic.pt3 3.89K
  • mc_rot/tmap.asm 23.46K
  • mc_rot/Trouble.ch8 768B
  • noise/ dir
  • noise/BOOT.$B 273B
  • noise/build.bat 350B
  • noise/bust.bmp 192.05K
  • noise/byte2colors 1.00K
  • noise/bytes 14.36K
  • noise/code.bin 13.00K
  • noise/compiletap.bat 353B
  • noise/COS.$C! 256B
  • noise/depkmain.asm 445B
  • noise/main.asm 7.94K
  • noise/megaLZunpack.asm 2.59K
  • noise/noise.txt 7.92K
  • noise/Project1.bpr 2.28K
  • noise/Project1.cpp 710B
  • noise/Project1.exe 36.00K
  • noise/Project1.obj 15.98K
  • noise/Project1.res 876B
  • noise/pt3play.asm 20.09K
  • noise/rebyte 8.00K
  • noise/repic 12.00K
  • noise/test.scl 13.29K
  • noise/test.tap 13.14K
  • noise/testmusic.pt3 3.89K
  • noise/Unit1.cpp 12.29K
  • noise/Unit1.dfm 759B
  • noise/Unit1.h 986B
  • noise/Unit1.obj 64.96K
  • noise/¬áαΓ¿¡áRGB.psd 922.19K
  • noiserm/ dir
  • noiserm/baba.img 13.50K
  • noiserm/baba.mc 12.00K
  • noiserm/baba.mcx 24.00K
  • noiserm/baba.png 77.85K
  • noiserm/baba.r48 12.00K
  • noiserm/baba.scr 6.75K
  • noiserm/BOOT.$B 273B
  • noiserm/byte2colors 1.00K
  • noiserm/bytes 14.36K
  • noiserm/c0 768B
  • noiserm/c1 768B
  • noiserm/c2 768B
  • noiserm/c3 768B
  • noiserm/code.bin 33.85K
  • noiserm/compile.bat 443B
  • noiserm/compiletap.bat 447B
  • noiserm/compmain.bat 228B
  • noiserm/COS.$C! 256B
  • noiserm/defs.asm 11B
  • noiserm/depkmain.asm 518B
  • noiserm/deti.BMP 144.05K
  • noiserm/layer1.bmp 144.05K
  • noiserm/layer2.bmp 144.05K
  • noiserm/main.asm 24.38K
  • noiserm/maincode.c 33.60K
  • noiserm/mainpent.asm 36B
  • noiserm/megaLZunpack.asm 2.59K
  • noiserm/noise.txt 15.88K
  • noiserm/p2.rm 15.00K
  • noiserm/P7.rm 15.00K
  • noiserm/Project1.bpr 2.33K
  • noiserm/Project1.cpp 710B
  • noiserm/Project1.exe 32.50K
  • noiserm/Project1.obj 9.22K
  • noiserm/Project1.res 876B
  • noiserm/pt3play.asm 20.09K
  • noiserm/rebyte 8.00K
  • noiserm/rebyte.mlz 4.06K
  • noiserm/rebyte1 8.00K
  • noiserm/rebyte1.mlz 4.12K
  • noiserm/repic 12.00K
  • noiserm/repic.mlz 6.35K
  • noiserm/repic1 12.00K
  • noiserm/repic1.mlz 6.12K
  • noiserm/rmode.asm 4.90K
  • noiserm/test.tap 33.98K
  • noiserm/testbab.scl 35.79K
  • noiserm/testbaba.scl 34.29K
  • noiserm/testmusic.pt3 3.89K
  • noiserm/testp2.scl 35.79K
  • noiserm/testp2.tap 35.56K
  • noiserm/testp4.scl 39.04K
  • noiserm/testp4.tap 38.80K
  • noiserm/testp7.scl 30.79K
  • noiserm/testp7.tap 30.57K
  • noiserm/testp8.scl 31.04K
  • noiserm/testp8.tap 30.71K
  • noiserm/testp9.scl 33.79K
  • noiserm/testp9.tap 33.44K
  • noiserm/Unit1.cpp 13.31K
  • noiserm/Unit1.dfm 759B
  • noiserm/Unit1.h 986B
  • noiserm/Unit1.obj 32.62K
  • R-Mode/ dir
  • R-Mode/0912.rm 15.00K
  • R-Mode/BABYLONA.rm 15.00K
  • R-Mode/BOOT.$B 273B
  • R-Mode/code.bin 7.62K
  • R-Mode/compile.bat 314B
  • R-Mode/compiletap.bat 435B
  • R-Mode/crazykids.rm 15.00K
  • R-Mode/depkmain.asm 258B
  • R-Mode/main.asm 6.16K
  • R-Mode/megaLZunpack.asm 2.59K
  • R-Mode/p2.rm 15.00K
  • R-Mode/p7.rm 15.00K
  • R-Mode/r-mode.txt 2.02K
  • R-Mode/runtap.bat 153B
  • R-Mode/test.scl 8.04K
  • R-Mode/test.tap 7.75K
  • R-Mode/test_babylona.tap 9.49K
  • R-Mode/test_cow.tap 10.75K
  • R-Mode/test_cow2.tap 10.75K
  • R-Mode/test_crazykids.tap 10.01K
  • R-Mode/test_p7.tap 7.75K
  • SMAN/ dir
  • SMAN/soscore.txt 9.75K
  • SMAN/SOSTODO-128K.txt 15.14K
  • SMAN/SOSTODO-128æìäÅ.txt 11.61K
  • SMAN/SOSTODO.txt 33.91K
  • ussrrus04.txt 37.23K

file_id.diz

=======================================
Специально для журнала "Info Guide №13"
=======================================
(C) Dragons' Lord - март 2021

3D-движок, опублкованный в прошлом номере, был существенно доработан, и для него был написан новый (совершенно фантастический для 8-битного компьютера) пример. Передаём слово автору примера - Dragons' Lord:

---------------------------------------
1. Исходный 3D Engine

Чтобы не запутаться во множестве модификаций движка, с некоторых пор я стал давать условные цифровые значения версиям. Моя классификация:
- 3D engine 0.01 изначальный прототип 2016 года
- 3D engine 0.02 введение кренов
- 3D engine 0.03 исправлены некоторые глюки переполнения
- 3D engine 0.04 введены автоопределение мыши и прыжок
- 3D engine 0.05 промежуточная "nointerlace1к", как её назвал сам автор
- 3D engine 0.06 "fixinterlace" зевершена дописка режима "solid state screen" без интерлейса
- 3D engine 0.07 введена возможность цветного видео-вывода на компьютере АТМ
- 3D engine 0.08 написана функция "panorama 360", печатающая растровую графику на задник
- 3D engine 0.09 добавлена окраска неба, продолжающая рисунок панорамы.

Версией "3D engine 1.00" я буду считать полностью 3х мерный вариант, подходящий для реализации "Elite". Сейчас движок обсчитывает пространство по упрощённым формулам и реализация полноценного 3D не представляется возможной. Текущая версия отлично подходит для шутеров от первого лица и реализации maze аля Вольфенштейн или Doom. То есть, 2х мерные уровни. Хотя иммитация крена и прыжки присутствуют.

---------------------------------------
2. Моя модификация

Отмечу, что модификации подвергалась версия оригинального движка "3D engine 0.06", но потом результат бы объединён с версией 0.09. Крены для данной задачи выключены.
Во-первых, нужно понять, зачем модификация вообще нужна. Исходный движок имеет ряд моментов, путающих юзера. Формат осей, используемых при проектировании самих объектов (вертексов): ось X - от нас, ось Y - вправо, ось Z - вниз. Формат пространства в которое вы помещаете эти объекты в основном модуле кода: ось X - на нас, ось Y - влево, ось Z - вниз. Формат пространства в котором перемещается сам персонаж (т.е. камера): ось X - от нас, ось Y - вправо, ось Z - вверх. Как заметит внимательный читатель, пространства не бьются никак. И если инверсию первого логично объяснить, так всегда бывает, что после преобразования камеры объекты инвертируют свои оси, то несовпадение последних двух мерностей приводит к полной невозможности программировать адекватные перемещения объектов в мерности перемещений камеры. В исходном движке этот момент не решён.

Второе серьёзное ограничение применимости движка заключается в размерностях его сцены. Хотя, для координат и используются регистровые пары, т.е. 16 битные значения, но движок способен адекватно обсчитывать только мерность -1023...0...+1023 по всем осям. Далее идёт повторение объектов сцены. То есть, если вы поставите столбик в координаты 0,0,0 и побежите в любую сторону, то через 2048 внутренних единиц пространства вы снова прибежите к данному столбику, но уже с другой стороны, и так многократно через каждые 2048. Причём в виду упрощёнки обсчёта положения объектов, о котором я уже упоминал, вы уже не сможете взаимодействовать с этим объектом адекватно при любом повороте камеры объект будет хаотично скакать по сцене. Адекватная работа с углами будет только в пределах нулевого квадранта.

Модификация логики отображения объектов в мерности сцены призвана решить обе проблемы разом. Как это сделано: в модуле управления "script.asm" вывод рассчитанных значений mcamx и mcamy перехватываются и выводятся не в них, а в новые ячейки памяти camX, camY, оставляя mcamx и mcamy в нулях. Таким образом, камера завешивается в нулевых координат мерности сцены и висит там всегда. Теперь, если нажимать на кнопки - ничего не будет происходить, мы никуда не бежим. Логика отображения мира меняется на инверсную, раньше объекты были неподвижны, а перемещали мы камеру, теперь камера неподвижна и мы перемещаем вокруг неё весь мир. Все объекты в основном коде имеют в начале блока приращение на разницу между их "изначальными координатами" и мнимым положением камеры, т.е. координатами размещаемыми в camX, camY. Всё, теперь и камера всегда в нулевом квадранте, и оси перемещений объектов проинвертировались, войдя в синергию с теми осями, которые показывает камера (z ось в данном релизе не затрагивается, потому что это не имеет смысла). Теперь можно объекты адекватно перемещать динамически: если вы дали приращение +100 по оси X, то именно это и произойдёт визуально.

Также введён модификатор рэйнджа. Все объекты предлагаемого уровня поделены на условные конгломераты (пространство примерно 128х128х128 внутренних единиц), у которых проверяется дальность от мнимой камеры до координат ключевого объекта этого конгломерата. Если дальность больше заданной - конгломерат обходится по jp и не исполняется, а объекты конгломерата исчезают со сцены. Данный великолепный механизм (аналог стриминг контейнеров, который несколько лет разрабатывали разработчики "Star Sitizen", и которым безусловно гордятся), позволяет решить одновременно три проблемы. Во первых, рэйндж можно настраивать, и таким образом разгружать сцену под машину с любыми тактами процессора. Меньше дальность, меньше объектов в кадре, выше fps.

Настройка в самом начале модуля "my_lunohod.asm" и выглядит так:
dalnost=%11111111 256 единиц пространства - для машин с частотой процессора 3.5МГц
dalnost=%11111110 512 единиц пространства - для режима турбо 7.0МГц
dalnost=%11111100 1024 единиц пространства - для режима Evolution 14МГц, но не рекомендуется к использованию, либо нужно переключить range самого движка с 4 на 3 (дело в том, что максимально большой возможный объект диаметром 64 исчезает визуально с установленным range=4 примерно на дистанции 1040, то есть его будет видно у самой кромки горизонта как хаотично репитующая копия).

Во вторых новый встроенный рэйндж позволяет превозмочь главное ограничение исходного движка, и набирать сцену из сколь угодно большого количества объектов, которые размещаются в сцено-образующем коде все одновременно (сейчас на сцене 200 независимых объектов).

И в третих, что очевидно, вам становится доступной для застройки и путеществий вся 16 битная мерность пространства по всем осям. Причём, без страха встретить повторное появление объектов из другого квадранта. Теперь вы можете строить город на карте 0..65535 размера. На экран выводятся ваши координат в формате XXXXX_YYYYY_ZZZZZ и вы можете наблюдать своё положение на карте (можете отключить, 9000 тактов лишними не будут).

---------------------------------------
3. Уровень

Когда основные технические моменты решены можно перейти непосредственно к творчеству, - к застройке. В качестве образца для оценки возможностей движка я выбрал модуль посадки на планету из игры "Elite Dangerous". Строить будем руины стражей, общий план застройки приведён на скрине "elite_0_05_alpha_Исходные руины стражей из игры Elite Dangerous.jpg". Застроил только всю центральную часть, - внешние маленькие застройки по углам доделывать не стал. Почему? Потому что совокупность файлов уровня сейчас как раз в пределах одной страницы памяти Спектрума, т.е. вмещается в 16384, и может при необходимости успешно храниться в банке верхней памяти 128к, как один из уровней игры. Файлы моего уровня это конкретно:

"rotmodel.asm"
"3dmodel.asm"
"my_lunohod.asm"

Сейчас они размещаются в памяти следующим образом (строго в пределах средней страницы памяти):

> >>> ORG - start my level 33831
> ---------- rotmodel vertex --- size 6180
> ---------- model poly -------- size 881
> ---------- lunohod code ------ size 8416
> -----------RESULT (all my level): 15477
> >>> ORG - end my level 49308

Достроить уровень при необходимости, конечно можно - для этого нужно убрать рисунок панорамы и задать в настройках движка endfree=#10000, что даст 8K дополнительной памяти в верхней странице.

Пару слов касательно формфактора реализованных построек. В уровне присутствует симуляция правильного освещения, хотя в исходном движке освещения нет. Все постройки окрашены так, как будто свет падает с одной стороны. Для этого пришлось хранить в памяти копии некоторых осе-несимметричных объектов с разной окраской. Это, конечно, плохо. Память у Спектрума не ризиновая. Если убрать эти объекты и забить на свет, высвободится примерно 1,5..2 килобайта. Но, будет не так фотореалистично. Также, кроме шейдеров вращения и синусоидального перемещения динамических объектов (для этого в проект добавлена моя таблица синусов "tsinmy"), на вращающиеся объекты накинут шейдер, симулирующий динамическое правильное освещение, аля Flat. Делается подмена цветов на гранях (в модуле POLY) при определённых диапазонах угла вращения объекта.

---------------------------------------
4. Выводы

Проект делался с целью получить комплексное правдивое представление о:
 
- Какова будет скорость отрисовки сцены аля "город". Можно отметить, что скорости на машинах со стандартными тактами (70000), действительно не хватает. Получен результат на грани критического значения min fps=8. И это в режиме интерлейса, т.е. с черезстрочным выводом. Заключаем, что демонстрируемый уровень, это максимально возможная плотная застройка. Необходимо увеличивать дистанцию между отдельными конгломератами (по сути "домами" на будущих картах). Также на предложеном примере видно, что в "близоруком" режиме с рэйнджом 256 затруднено ориентирование в пространстве, особенно у человека, который никогда ранее не видел этот уровень. Введение карты в любом виде, с обозначение игрока и строений, - обязательное условие.

- Каково будет визуальное восприятие различных объектов. Можно отметить одну, как не странно, но техническую проблему. Максимально возможный размер одного элемента = 64. Чтобы изобразить что-то фундаментально большое, необходимо уменьшить "рост", а по сути приращение по +z в файле "script.asm" с дефолтного #020 до #010. Тогда двухуровневые строения "с крышей" воспринимаются максимально адекватно. Но при этом обратной стороной медали, вступающей в противоречие с первой, является отрисовка плоской плитки под ногами, которой кое-где рекомендуется мостить мостовую (значительно облегчает ориентирование в "сферическом вакууме"). Плитка не может адекватно отрисовываться с высоты такого малого роста из за фейковости отрисовки объектов в движке, - плитку начинает бить в неадекватных конвульсиях. Приходится выбирать некий компромис, ухудшающий указанные параметры на некоторое значение. А увеличивать этажность застройки вы не можете, потому что не хватит быстродействия для отрисовки столь многокомпонентных конгломератов. Если вернуться к восприятию объектов, то показано, что сложные многокомпонентные "дома" из нестандартных арочных конструкций уменьшеной толшины смотрятся отлично. В то же время отдельно стоящие простые геометрические формы выглядят отвратительно и не воспринимаются мозгом, как некие "постройки". Даже в случаях, когда таких мелких отдельно стоящих объектов много в кадре. При строительстве стоит придерживаться правила "редко, но метко". Мозг хочет, чтобы строение было с "крышей", под которую можно зайти.

- Каковы будут размеры занимаемой памяти. Память расходуется быстрее, чем ожидалось. Я уже описывал структуру уровня выше, здесь можно отметить, что создание подобных уровней вполне возможно, если держать свои хотелки в некоторых рамках. Демка показывает строго статическую картину строений. Геймплея нет. Динамических объектов (дронов стражей) нет. Взаимодействия с объектами нет. Интерактивного изменения построек нет. Процедурной генерации высотопеременной почвы и случайных RND объектов вне зоны руин нет. Всё это планировалось и может быть написано без проблем. Нет этого по причине желания не засорять код демо уровня. Для новичка необходимо постепенное знакомство с 3d engine. Вот чего наверняка не будет никогда - это физики. Я говрю о запрете игроку ходить сквозь стены. Для уровня с произвольной застройкой в рамках 3.5МГц это не решаемая задача и предлагается оставить, как есть. Полагаясь на фантазию игрока. В проектах аля "Вольфенштейн", с регулярной картой, физика реализуется весьма просто.

---------------------------------------
5. Заключение

Я не нашёл предела количеству одновременно отрисовываемым объектам, хотя проверял где-то до количества 60 штук. Это означает, что у вас скорее fps устремится к нулю, чем вы сможете навыводить кучу объектов в попытках завесить систему. Это приятно. Особенно это греет душу, когда вспоминаешь ограничения в стандартной Спектрумской "Elite" - не более 6 динамических объектов одновременно + станция. Здесь же можно выводить сколько угодно, если это вписывается в выделенную память:
---------- 52016 .. 52992(_tables) free for object list 976
(один выводимый объект занимает 16 байт).

По скорости отрисовки: если представить стандартную "Elite" и взять нормальные выпуклые объёмные объекты, то можно смело отрисовывать 4 таких объекта в кадре одновременно (~60 полигонов). fps не упадёт ниже 10 при любых приближениях. Это вполне юзабельно. 5 объектов одновременно (~75 полигонов) - fps не упадёт ниже 8. Это критически, но допустимо. Естественно, я имею в виду режим интерлейса. Так что "Элиту" с залитыми гранями реализовать технически возможно, если допилить расчёты внутри движка до полноценного 3D.

Очень понравился выдеовывод. Я в восторге. Скорость заливки и вывода видеобуфера на экран запредельная. Это единственный движок, где вы практически ничего не теряете, задавая область отрисовки на весь экран Спектрума. Отрисовка занимаеть лишь малую часть общего времени расчётов. Максимально нагружает систему обсчёт вертексов, поэтому примите правило не плодить лишних вершин без критической на то необходимости.

Благодарю Alone Coder'а за великолепную работу и надеюсь на полную 3D реализацию.
С уважением, Dragons' Lord.
Con18 - êîíâåðòîð ãðàôèêè ñ PC íà ZX Spectrum.

Ðàáîòà ñ ïðîãðàììîé ïðîèñõîäèò ñëåäóþùèì îáðàçîì:

1. Íàæìèòå Select File è âûáåðèòå ôàéë (bmp, png, tga, jpg, gif).

2. Íàñòðîéòå îáëàñòü îáðåçêè êàðòèíêè öèôðàìè â ïðàâîì íèæíåì óãëó.
Ìîæíî âûáèðàòü íå öèôðàìè, à êëèêîì ìûøè: LMB=set topleft corner, RMB=set bottomright corner.
Ôëàæîê 3:4 ïîçâîëÿåò àâòîìàòè÷åñêè îòñëåæèâàòü ñîîòíîøåíèå ñòîðîí êàðòèíêè 3:4.

3. Íàñòðîéòå ÿðêîñòü (Brightness), êîíòðàñò (Contrast), öâåòíîñòü (Saturation)
è óðîâåíü îòñå÷åíèÿ øòðèõîâîê íà ïî÷òè ñïëîæíûõ öâåòàõ (Dithering level).

4. Íàæìèòå êíîïêó êîíâåðñèè â íóæíûé ôîðìàò:
- to Multicolor (ìóëüòèêîëîð 8x1 ñ àâòîìàòè÷åñêèì óðåçàíèåì ÷èñëà èçìåí¸ííûõ ïàð çíàêîìåñò â ñòðîêå,
÷òîáû ìîæíî áûëî âûâîäèòü áåç äåôåêòîâ íà Ïåíòàãîíå - ôëàæîê Limit MC;
Multicolor level íàñòðàèâàåò "àãðåññèâíîñòü" ãåíåðàöèè ìóëüòèêîëîðíûõ ïîëîñîê äëÿ ïðèáëèæåíèÿ ñðåäíåãî öâåòà)
- to MCX (äâà ìóëüòèêîëîðíûõ ýêðàíà, ñ àíàëîãè÷íûìè ôóíêöèÿìè)
- to 6912 (ñòàíäàðòíûé ýêðàí)
- to Gigascreen (äâà ñòàíäàðòíûõ ýêðàíà)
- to 8col (öâåò íà òî÷êó, 8 ñòàíäàðòíûõ öâåòîâ)
Âñå ýòè ôîðìàòû ñìîòðèò ïðîñìîòðùèê MCX viewer.
Gigascreen ìîæíî ðåäàêòèðîâàòü â ïðîãðàììàõ BGE è DBS.
8col ìîæíî ðåäàêòèðîâàòü â ïðîãðàììàõ AGA è 8col editor.

5. Åñëè ïðè êîíâåðñèè áûë âêëþ÷åí ðåæèì Floyd (ôëàæîê ñïðàâà),
òî ðåçóëüòèðóþùóþ êàðòèíêó ìîæíî ÷àñòè÷íî ïîäêîððåêòèðîâàòü ìûøêîé, çàìåíÿÿ íóæíûå ìåñòà øòðèõîâêîé.
LMB ñòàâèò øòðèõîâêó, RMB âîçâðàùàåò Floyd.
Ðàçìåð êèñòè ïî óìîë÷àíèþ 8 ïèêñåëåé, ðåäàêòèðóåòñÿ ââåðõó.
Ââåðõó ñëåâà ïîêàçàíû àòðèáóòû çíàêîìåñòà, íà êîòîðîì íàõîäèòñÿ ñòðåëî÷êà
(â Gigascreen äâà àòðèáóòà).

6. Åñëè âû ÷òî-òî ïîäêîððåêòèðîâàëè, íàæìèòå Save.
Åñëè íå êîððåêòèðîâàëè, òî ðåçóëüòàò êîíâåðñèè ñîçäà¸òñÿ â òåêóùåé äèðåêòîðèè àâòîìàòè÷åñêè. Åãî ìîæíî çàãðóçèòü (Load).

Ïðåäóñìîòðåíà òàêæå êîíâåðñèÿ â ôîðìàò *.emg (ñæàòûé Gigascreen, ïðîñìîòðùèêà äëÿ íåãî íåò)
è *.ch$ (êàðòèíêà ïðîèçâîëüíîãî ðàçìåðà ïî çíàêîìåñòàì - ïðîñìîòðùèê 384x304 viewer â ïðèëîæåíèè ê Info Guide #8).
Ýòè âàðèàíòû âêëþ÷àþòñÿ ôëàæêàìè ñëåâà.
Åù¸ äâà ôëàæêà ñëåâà âûáèðàþò ðàçíûå êîìáèíàöèè àëãîðèòìîâ ïîäáîðà àòðèáóòîâ ïðè êîíâåðñèè.

Ôëàæîê Bright Only îòêëþ÷àåò íåÿðêèå öâåòà ïðè êîíâåðñèè.
Ôëàæîê Floyd âêëþ÷àåò ðåæèì øòðèõîâêè ìåòîäîì ðàñïðîñòðàíåíèÿ îøèáêè (èíà÷å ðåãóëÿðíàÿ øòðèõîâêà).
Ôëàæîê 5 chunks ïðè ðåãóëÿðíîé øòðèõîâêå îãðàíè÷èâàåò ÷èñëî øòðèõîâîê ïÿòüþ ðåãóëÿðíûìè â 2x2 ïèêñ.

Ïóñòàÿ êíîïêà ñëåâà îòêëþ÷àåò ïîêàç êàðòèíêè.

Äëÿ êîíâåðñèè ñ ïàëèòðîé ñîçäàéòå 16-öâåòíóþ ïàëèòðó â ôîðìàòå .act (Photoshop)
è çàãðóçèòå å¸ ñ ïîìîùüþ êíîïêè "Pal".
Çàãðóæåííàÿ ïàëèòðà íå ðàáîòàåò ïðè êîíâåðñèè â Gigascreen, çàìåíÿåòñÿ îáû÷íîé.

 ïàëèòðå ïî óìîë÷àíèþ ÿðêèå öâåòà ñ÷èòàþòñÿ â 2 ðàçà ÿð÷å íåÿðêèõ.
Ïðè êîíâåðñèè â Gigascreen è MCX èñïîëüçóåòñÿ ñîîòíîøåíèå ÿðêèé+÷¸ðíûé = íåÿðêèé+íåÿðêèé.

Êîíâåðòîð èñïîëüçîâàëñÿ äëÿ æóðíàëà Inferno/Info Guide è èãð Hexagonal Filler è Wolfenstein 2004.


Ôîðìàòû ôàéëîâ:

.scr

ýêðàí 6912

.img

ïåðâûé ýêðàí 6912
âòîðîé ýêðàí 6912

.3

òðè ýêðàíà 6144 (ñ ýêðàííîé ðàçëèíîâêîé) B,R,G

.mc

ýêðàí ñïðàéòîì, ïîòîì àòðèáóòû ñïðàéòîì ñëåâà íàïðàâî, ñâåðõó âíèç

.mcx

ïåðâûé ýêðàí ñïðàéòîì, ïîòîì åãî àòðèáóòû ñïðàéòîì ñëåâà íàïðàâî, ñâåðõó âíèç
âòîðîé ýêðàí ñïðàéòîì, ïîòîì åãî àòðèáóòû ñïðàéòîì ñëåâà íàïðàâî, ñâåðõó âíèç

.ch$

+0 "chr$"
+4 øèðèíà â çíàêîìåñòàõ
+5 âûñîòà â çíàêîìåñòàõ
+6 ðàçìåð çíàêîìåñòà â áàéòàõ:
   8=÷/á,
   9=öâåòíîå,
  18=2-ýêðàííîå öâåòíîå.
+7 âñå çíàêîìåñòà, ñëåâà íàïðàâî, ñâåðõó âíèç

.emg

6144 áàéòà ïèêñåëåé äâóõ ýêðàíîâ â çàêîäèðîâàííîì âèäå (äåêîäèðîâàòü ÷åðåç deco256.dat):
 îäèí áàéò ôàéëà êîäèðóåò äâà áàéòà ýêðàíà - ïî Y,X è Y+1,X
 ïåðâûé è âòîðîé ýêðàíû ÷åðåäóþòñÿ ÷åðåç áàéò
 ñëåâà íàïðàâî, ñâåðõó âíèç
1536 áàéò àòðèáóòîâ (ïåðâûé è âòîðîé ýêðàíû ÷åðåäóþòñÿ ÷åðåç áàéò) ñëåâà íàïðàâî, ñâåðõó âíèç

.act

óðîâíè R,G,B äëÿ öâåòà íîìåð 0 - áàéò íà êîìïîíåíòó
óðîâíè R,G,B äëÿ öâåòà íîìåð 1 - áàéò íà êîìïîíåíòó
...
óðîâíè R,G,B äëÿ öâåòà íîìåð 15 - áàéò íà êîìïîíåíòó

Îñòàëüíûå áàéòû èãíîðèðóþòñÿ ïðîãðàììîé con18.

Alone Coder, 14.ii.2014Fast ZX AY-Dump Player (with PC Compiler)
------------------------------------
codename: ay_zip_player
ver 1.2

thx to Robus for cool idea!
thx to Griv for some code optimization
thx to ayfly.dlls authors for cool stuff!
------------------------------------
(ñ)2012 TmK^[deMarche]
------------------------------------
Links:

1) http://zx.pk.ru/showthread.php?t=14307
 - Discuss on russian community board (zx.pk.ru)

2) http://www.worldofspectrum.org/forums/showthread.php?t=32047
 - Discuss on english community board (WOS)Hardy - ïëàòôîðìåð òèïà Rick Dangerous (íî íå êëîí, èáî ïðàâèëàìè çàïðåùåíî) â ìóëüòèêîëîðå (ñ öâåòíûìè ïåðñîíàæàìè)
â îòëè÷èå îò Rick Dangerous, íàäî ñ ìîìåíòàìè áûñòðîé ñêîðîñòè, ÷òîáû áûëî âèäíî ôðåéìîâîñòü
è ïîáîëüøå ñïðàéòîâ íà ýêðàíå â äðóãèå ìîìåíòû (ïàðòèêëû, âçðûâû)
êàêèå èäåè ïîçàèìñòâîâàòü èç Metroid, Spelunky, Cave Story, Celeste?


Ó ïåðñîíàæåé ðàñêðàøåíà è ìàñêèðîâàíà êàæäàÿ X-ôàçà îòäåëüíî, ÷òîáû ïî ãîðèçîíòàëè äâèãàòüñÿ ïîïèêñåëüíî.
Ïî âåðòèêàëè ïî 2 ïèêñ, ÷òîáû ìóëüòèêîëîð 8x2 - èëè äâèãàòü ïî 1 ïèêñ, åñëè âñå çîíû öâåòîâ ðàçäåëåíû ÷¸ðíûìè ñòðî÷êàìè (âðÿä ëè êðàñèâî)
Ôîíû ÷¸ðíûå / ñèíèå / êðàñíûå + ëåñòíèöû è êèðïè÷è (îíè áóäóò çàòèðàòüñÿ æèðíîé ìàñêîé ñïðàéòà, ÷òîáû íå ïîäêðàøèâàòü)

Ìîæíî ãåðîþ õîäèòü çà êóñòèêîì/êîëîííîé (êàê â Rick Dangerous), íî äëÿ ýòîãî íàäî å¸ ðèñîâàòü êàê ñïðàéò


Ïîääåðæàòü 48/128/[+3 íå òðåáóåòñÿ ïðàâèëàìè]/[Pentagon íå òðåáóåòñÿ ïðàâèëàìè]

48/128K äåëàåòñÿ òàê:
â 48Ê â ïàìÿòè ëåæèò äâèæîê, ãðàôèêà è îäèí óðîâåíü
â 128Ê åù¸ ìåíþ (slow memory), îñòàëüíûå óðîâíè (slow memory), ìóçûêà (slow memory), çâóêè (slow memory?), ãðàôè÷åñêèå ñïåöýôôåêòû (fast memory), äîïîëíèòåëüíàÿ ãðàôèêà (fast memory)
áåéñèê-çàãðóç÷èê ãðóçèò 48Ê âåðñèþ, goto usr..., à îíà âûõîäèò ñ bc=íîìåð ñòðîêè äëÿ äàëüíåéøåé çàãðóçêè

Èñïîëüçóåì ìóëüòèêîëîð òàêîé, ÷òîáû íå áûë çàíÿò âåðõíèé áîðäåð, à àäðåñàöèÿ áûëà ïîóäîáíåå äëÿ âûâîäà ñïðàéòîâ
â âåðõíåì áîðäåðå áóäåò ìóçûêà + out çâóêîâûõ ýôôåêòîâ + íåêàÿ ôèêñèðîâàííàÿ çàäà÷à (êîä êîòîðîé ìîæíî â slow memory)?
ìîæíî äëÿ íà÷àëà ñòðèìèòü ìóçûêó èç îáû÷íîãî ïëåéåðà â áûñòðûé (ïðè áîëüøîé çàãðóçêå íå âûçûâàòü ïëåéåð, à ïðè ìàëîé - âûçûâàòü ìíîãî ðàç, âíå ïðåðûâàíèÿ)
ïîä ìóëüòèêîëîðîì äîñòóïíî 64+48(64+56 íà êëàññèêå) ñòðîê = 25088 t ïîä ãðàôè÷åñêèé äâèæîê, ëîãèêó è çâóêîâûå ýôôåêòû áåç out (-1792, åñëè ýêðàí íà÷èíàåòñÿ ñ 8-é ñòðîêè - ïîñëå ñèíõðîíèçàòîðà)

Ñàìûå íàãðóæåííûå ìîìåíòû:
- [ïîÿâëåíèå ýêðàíà ïðèëåòàþùèìè ñòîëáöàìè - ìîæíî îãðàíè÷èòü ÷èñëî îäíîâðåìåííî äâèæóùèõñÿ ñòîëáöîâ]
- òðÿñêà ïðè âçðûâå - â ýòî âðåìÿ ìóëüòèêîëîð îòêëþ÷àåì, ñòàâèì áåëûå àòðèáóòû
- ðàçë¸ò ïàðòèêëîâ ïîñëå âçðûâà
- [ñêðîëë ìåæäó ýêðàíàìè (â ýòî âðåìÿ ëîãèêà îòêëþ÷àåòñÿ, íî ìóçûêà îñòà¸òñÿ, çâóêè ìîæíî âûêëþ÷èòü) - íåôðåéìîâî, êàðòèíêà 4 ÊÁ (â èäåàëå 2 ôðåéìà), àòðèáóòû íå ñêðîëëèì, òîëüêî ìåíÿåì íà÷àëüíûé àäðåñ. Ëèáî ìóëüòèêîëîð äîëæåí ïîääåðæèâàòü çàöèêëèâàíèå îáëàñòè àòðèáóòîâ, ëèáî ïîñëå ñêðîëëà êîïèðóåì àòðèáóòû îäèí ðàç (2 ÊÁ - â èäåàëå 1 ôðåéì). Åñëè êàðòèíêà ñäâèãàåòñÿ çà 2 ôðåéìà, êàê èçáåæàòü ëó÷à (ïðè÷¸ì â ôèêñèðîâàííîì ìåñòå!!!)?
èäåè: à) íà÷èíàÿ ñ çîíû ðàçðûâà ïóñêàòü ñäâèã â äðóãîé ôàçå (íî âñ¸ ðàâíî áóäåò çàìåòíî); á) ñêðîëëèòü öåíòð èãðîâîé çîíû â îäíîâ ôðåéìå, à êðàÿ (ñòåíêè è âõîäû) âî âòîðîì - òîãäà öåíòð äîâîëüíî óçêèé; â) ñãåíåðèðîâàòü ld:push ñ ïðîïóñêàìè ïîä êîíêðåòíîå íàïîëíåíèå êàðòèíêè è ñêðîëëèòü â 1 ôðåéì - ñëèøêîì ìíîãî ïàìÿòè (ìîæíî òîëüêî íà 128Ê); ã) ñêðîëëèòü íà 2 ýêðàíàõ 128Ê, à íà 48Ê íå ñêðîëëèòü; ä) ñêðîëëèòü èíòåðëåéñíî; å) âûâîäèòü ðàíäîìíûå ñòðîêè â êàæäîì ôðåéìå, òîãäà ðàçðûâû áóäóò âåçäå]
- [bullet hell (êàê â exolon?)]
- [äîæäü/êàïëè ñ ïîòîëêà]
- [ïàðòèêëû îò jetpac]
- [ìåðöàíèå ôîíà (â àìèæíîì Rick Dangerous - ìîæíî òåìè æå ïàðòèêëàìè)]


Ñïðàéòû 18x18, ÷òîáû ñäâèãàòü èõ ïî 2 ïèêñåëÿ (õðàíèòü 4 êîïèè)
âåðõíþþ ñòðîêó ñïðàéòîâ ìîæíî òîëüêî ìàñêó (áåç ïèêñåëåé), à íèæíÿÿ ñ ïèêñåëÿìè
â Rick Dangerous îäíîâðåìåííî äîñòóïíî ñïðàéòîâ:
- ãëàâíûé (ìíîãî ôàç: äîïóñòèì, 3 øàãà, 2 ïîëçàíèÿ, 2 ëåñòíèöà, 1 íàæàòèå (ýòî âñ¸ ñ çåðêàëüíûìè âàðèàíòàìè), 2 ñìåðòü - èòîãî 18)
- ïåøèé âðàã (ìíîãî ôàç - äîïóñòèì, 8)
- òåëåæêà (1-2 ôàçû)
- ìèíà (2-3 ôàçû)
- âûñòðåë ñâîé
- âûñòðåë ÷óæîé
- ïîäçåìíûé âðàã (ìíîãî ôàç) - ñäåëàòü òàéëàìè?
- êàïëÿ âåðòèêàëüíàÿ èëè ãîðèçîíòàëüíàÿ (íåñêîëüêî ìàëåíüêèõ ôàç)
èòîãî ïðèìåðíî 36 êðóïíûõ ôàç (ïî 64 áàéòà *4 ñêðîëëà) è 7 ìåëêèõ (ïî 16 áàéò? áåç ñêðîëëà?)
16240 áàéò (ìîæíî ÷óòü ìåíüøå, åñëè íåò ìàñêè ñðåäíåãî áàéòà, à ïîäçåìíûé âðàã áåç ñêðîëëà) - íà 48Ê íå ïîëó÷àåòñÿ ñãåíåðèðîâàòü ñïðàéòû â êîä

ïðèìåðíîå ðàñïðåäåëåíèå ïàìÿòè íà 48K:
ñ 0x6000:
â slowmem ìîæíî: 3K âûâîä ñïðàéòîâ(åãî íå áóäóò âûçûâàòü âíå âåðõíåãî èëè íèæíåãî áîðäåðà), 16K ãðàôèêà ñïðàéòîâ, 256b tilemap, êàðòû, ëîãèêà....
â fastmem íàäî: 4K îáðàáîò÷èê ïðåðûâàíèé + ìóëüòèêîëîð, 2K êàðòà àòðèáóòîâ, 2K ñòèðàíèå ñïðàéòîâ



ìîæíî áîëüøå 8 ïåðñîíàæåé íà ýêðàíå (â Rick Dangerous áûëî 6: ïåðñîíàæ, äâà âðàãà, äâå òåëåæêè, ìèíà), åñëè îíè áóäóò ìåðöàòü


ìîæíî âûâîä ñïðàéòîâ+ìóëüòèêîëîð+ìóçûêó+ñòèðàíèå ñïðàéòîâ ïîâåñèòü íà ïðåðûâàíèå
è íå äóìàòü î òîì, ÷òîáû ëîãèêà âñåãäà âëåçàëà âî ôðåéì - ïóñòü èíîãäà íå âëåçàåò, ýòî áóäåò íåçàìåòíî

òîãäà ìîæíî íå ñ÷èòàòü, ñêîëüêî ïèêñåëåé è îáíîâëåíèé òàéëîâ âëåçåò âî ôðåéì, ñäåëàòü åù¸ íåôðåéìîâûå çâ¸çäî÷êè è ò.ï.
âíå ïðåðûâàíèé ìîæíî âûâîäèòü òî÷êè è ìåðöàþùèå ñïðàéòû 8*8 (çâ¸çäî÷êè, îáëîìêè, ïóëè? âçðûâû?) - â ïðèíöèïå, àòîìàðíîñòü íå íóæíà
ïëàòôîðìû òàì âûâåñòè íåëüçÿ - áóäåò ìåðöàòü



ñåé÷àñ îñòà¸òñÿ ïðèìåðíî 500t/îáúåêò íà ëîãèêó
ñòèðàíèÿ âñå ïî 18 ïèêñ, íåëüçÿ íàñòðàèâàòü (130 òàêòîâ íà 2 ïèêñ âûñîòû). ìîæíî òîëüêî óìåíüøèòü âñå èëè óáðàòü âîññòàíîâëåíèå ñðåäíåãî ñòîëáöà (íî ïðè âåðòèêàëüíûõ äâèæåíèÿõ íåëüçÿ)

íà 128Ê íà 4*(64+56)=440 òàêòîâ áîëüøå, ÷åì íà 48Ê, ýòî ïîä ìóçûêó.
íà ïåíòàãîíå íà 1000 òàêòîâ ìåíüøå, ÷åì íà 48Ê, íàäî â âåðõíåì áîðäåðå ÷àñòü ëîãèêè? (è ìóçûêó òî÷íî)
èëè ïðèä¸òñÿ íà ïåíòàãîíå óìåíüøèòü ìóëüòèêîëîð íà 4 ïèêñ
èëè 25 ôïñ àâòî (íå ñòèðàòü êàæäûé âòîðîé êàäð)

âûâîä öâåòíûõ òî÷åê â ýêðàí è ëèíåéíûå àòðèáóòû:
âûâîäèòü àòðèáóò òîëüêî òîãäà, êîãäà çíàêîìåñòî ïóñòîå - ýòî íîðìàëüíî, òî÷êà áóäåò ïðîñòî ìåðöàòü, çàòî ôîí íå èñïîðòèòñÿ


   <Òî÷êà Ñòàðûõ>: ïî êîîðäèíàòàì,çàäàííûì
â ðåãèñòðàõ L=y, E=x, â ïðîèçâîëüíîì ìåñòå
ýêðàíà(è äàæå çà ýêðàí)çà 58(!)òàêòîâ ñòà-
âèòñÿ òî÷êà.Ðåãèñòð C ðàâåí ñòàðøåìó áàéòó
àäðåñà òàáëèö('TABLE), ðåãèñòð D=C+2.
     LD H,C
     LD A,(DE);x/8¬
     INC D        +äà¸ò ìëàäøèé áàéò
     OR (HL);L(y) -
     INC H
     LD H,(HL);H(y)
     LD L,A
     LD A,(DE);byte(x)
    (X)OR (HL);ìåòîä ïîñòàíîâêè òî÷êè
     LD (HL),A

        ex de,hl
        ld a,(hl) ;x
        ld c,a
        add a,?xspeed ;/ld c,(hl):inc/dec (hl)
        ld (hl),a
        inc l
        ld a,(hl) ;yspeed
        inc (hl) ;yspeed++ ;ìîæíî inc a:ld (rp),a
        inc l
        add a,(hl) ;y ;îáÿçàòåëüíî hl, èíà÷å òîðìîç
        ld (hl),a
        inc l
        ex de,hl
     ld l,a ;y
     LD H,ty/256
     LD b,(HL) ;H(y)
     inc h
     ld a,(HL) ;L(y)
     inc h
     ld l,c ;x
     or (hl) ;x/8 ;îáÿçàòåëüíî hl, èíà÷å òîðìîç    
     LD c,A
     inc h
     LD A,(bc)
     XOR (HL) ;byte(x) ;ëèáî òàáëèöà, ëèáî ýêðàí äîëæíû áûòü â hl
     LD (bc),A
;48+52+10 = 110 t ðèñîâàíèå/ñòèðàíèå áåç àòðèáóòîâ è call, èòîãî 220 t/dot
î÷åíü ìíîãî êîäà è òàáëèö! íóæåí öèêë (ïî E!=0?)

     
dot
;c=color
;a=x
;l=y
srl a ;rra íå ïîëó÷àåòñÿ ïðè âû÷èñëåíèÿõ
jr c,...
rra/srl a
jr c,...
ld h,ty/256
add a,(hl)
inc h
ld h,(hl)
ld l,a
;ñòèðàíèå áóäåò res ..,(hl):ret - à êàê áûòü, åñëè ïðîëåòåëî ÷åðåç ïðåïÿòñòâèå èëè õîòÿ áû ëåñòíèöó???
;ld a,(hl)
;set ..,(hl)
;inc h
;or (hl)
;ret nz ;no attr
;ld a,h
;rra
;add a,attr/256 - 0x40
;ld (hl),c ;color
;ret
;èëè ïî xor (ñ âîçìîæíîñòüþ ïðîëåòàíèÿ ÷åðåç ïðåïÿòñòâèÿ):
ld a,(hl)
xor ..
ld (hl),a
;ñòèðàíèå áóäåò ret
xor .. ;èíà÷å ìîæíî ïîïîðòèòü öâåò ôîíà, åñëè â í¸ì òîëüêî îäèí ïèêñåëü
inc h
or (hl)
ret nz ;no attr
ld a,h
rra
add a,attr/256 - 0x40
ld h,a
ld (hl),c ;color
ret
;~144 t ðèñîâàíèå, 96 t ñòèðàíèå

êàê äâèãàòü ýòè òî÷êè ñ ó÷¸òîì ãðàâèòàöèè (TODO ó÷¸ò ïðåïÿòñòâèÿ âíèçó? ââåðõ ìîæíî ïðîëåòàòü?):
ó êàæäîé òî÷êè åñòü x,y,xspeed (ìîæíî íå õðàíèòü xspeed, à ïðîñòî ãðóïïèðîâàòü òî÷êè), yspeed, color (ìîæíî òîæå íå õðàíèòü, à ãðóïïèðîâàòü òî÷êè)
ìîæíî äâèãàòü ñðàçó ïðè îòðèñîâêå, à ïðè ñòèðàíèè ÷èòàòü ýòè æå äàííûå çàíîâî (íàäî ãàðàíòèþ, ÷òî íå ïðîèçîéä¸ò ïðåðûâàíèå)

ex de,hl
ld a,(hl) ;yspeed
inc (hl) ;yspeed++
inc l
add a,(hl) ;y
ld (hl),a
ld e,a ;y
inc l
ld a,(hl) ;x
add a,b ;xspeed
ld (hl),a
inc l
ex de,hl
;l=y
;a=x
call dot ;ðèñîâàíèå
;90+144 t

...

inc e
ld a,(de) ;y
ld l,a
inc e
ld a,(de)
inc e
;l=y
;a=x
call redot ;ñòèðàíèå
;47+96 t

;èòîãî 377 t/dot
;åñëè ïîòðàòèòü íà íèõ 32 ñòðîêè ýêðàíà, òî 19 dots
íîìåðà ñïðàéòîâ (0..63):
ñì. ID_NONE è ò.ï.

0..3: ãåðîé èä¸ò âïðàâî
4..7: ãåðîé èä¸ò âëåâî
8..9: êàëüìàð õîäèò
10: ïóñòî

íîìåðà òàéëîâ (0..63):

Êàêàÿ ôèêñèðîâàííàÿ çàäà÷à ïîìîæåò è â èãðå, è â ñêðîëëå?
- ïðåäçàëèâêà àòðèáóòîâ? íå íóæíà, õîòÿ åñëè ïîìîæåò äëÿ ëèíåéíîñòè àòðèáóòíîãî áóôåðà, òî ÎÊ - åñòü ìóëüòèêîëîð 30x ëèíåéíûé, ïàò÷ 32 ñòðîêè â âåðõíåì áîðäåðå; åñòü ìóëüòèêîëîð 28x ëèíåéíûé áåç ïàò÷à
- ïàò÷ jp/ld sp ìóëüòèêîëîðà? íóæåí òîëüêî äëÿ ñêðîëëà
- îòðèñîâêà ñïðàéòîâ? íóæíà òîëüêî äëÿ èãðû
- îïðîñ êëàâèàòóðû? áûâàþò ñ âàéòàìè òîëüêî íà ñêîðïèîíå? ïðè ñêðîëëå ìîæíî íå äåëàòü
- ïèêñåëüíûå ñäâèãè? íóæíî òîëüêî äëÿ èãðû è íåôèêñèðîâàíî
- îæèäàíèå ïîðòà 0xff? (íà ïåíòàãîíå íåëüçÿ, òàì íàäî ñîâñåì ïî-äðóãîìó) êàêàÿ òî÷íîñòü ïðèâÿçêè ìóëüòèêîëîðà òîãäà? ìîæíî ëè ñàìîñèíõðîíèçèðîâàòü?
- èãðîâûå òàéìåðû
- îáíîâëåíèå èãðîâîé ïàíåëüêè?
- [îòðèñîâêà òàéëîâ? îñîáî íå íóæíî âîîáùå, ðàçâå ÷òî ÷òîáû áëåñòåëî (â èãðå), íî ýòî ìîæíî ïàðòèêëàìè âíå ïðåðûâàíèÿ]
- èñïðàâëåíèå ôîíà ïîä ýêðàíîì (âìåñòî êëèïèðîâàíèÿ)?

Ïîõîæå, ïðèä¸òñÿ ïðè ñêðîëëå çàìåíÿòü îòðèñîâêó ñïðàéòîâ íà ñêðîëë, à ñòèðàíèå óáðàòü

 Rick Dangerous ñêðîëë íà íåñêîëüêî çíàêîìåñò è íåïëàâíûé.
 èòîãå ïðîùå âñåãî íå äåëàòü ñêðîëëèíã ïðèâÿçàííûì ê ÷åìó-òî, à ïðîñòî ñäâèãàòü, êàê ñäâèãàåòñÿ - òîëüêî ñäâèãàòü ïèêñåëè îäíîâðåìåííî ñ àòðèáóòàìè.
ïðè ýòîì îòðèñîâêó-ñòèðàíèå ñïðàéòîâ çàáëîêèðîâàòü (÷òîáû íå òåðÿòü 64 ñòðîêè íà ñòèðàíèå íà êàæäîì êàäðå), çàðàíåå îòðèñîâàòü, à â êîíöå ñòåðåòü

Äîïóñòèì, ñêðîëëèì íà 8 ïèêñ
Íàì íàäî ñäâèíóòü ïðè ñêðîëëå 15*28*(8+4) = 5040 áàéò + äîïå÷àòàòü ïîëñòðîêè òàéëîâ

â GLUF øèðèíà 24 çíàêîìåñòà (âûñîòà òîæå 16), à âìåñòî ñïðàéòîâ ðèñóþòñÿ áëîêè, âñåãî 5 øòóê (ãðàôèêà áëîêîâ ó÷èòûâàåò ãðàôèêó ôîíà - ýòî ÿâíî íå ãîäèòñÿ äëÿ Rick Dangerous)
ò.å. ó íàñ äâèæîê áóäåò ëó÷øå
äëÿ ñêðîëëà (ld..push) òàì íåëèíåéíûå ïèêñåëè ôîíîâîãî ýêðàíà, è â 48Ê ýòî íå ïîìåùàåòñÿ
ìû ìîæåì ðèñîâàòü â ýêðàí (ñêðîëëèòü ÷åðåç pop..push), ðàçíèöû îñîáîé íå áóäåò, òîëüêî óäîáñòâî îáíîâëåíèÿ òàéëîâ íà ýêðàíå (íå íàäî áóäåò äëÿ ýòîãî ïåðåðèñîâûâàòü âåñü ýêðàí)

Âî âðåìÿ ñêðîëëà ñïðàéòû çàìåíÿþòñÿ íà ïðîöåäóðó ñêðîëëà, âîññòàíîâèòåëü òîæå îòêëþ÷àåòñÿ

Ñêðîëë ÷àñòè÷íî â âåðõíåì áîðäåðå (nowait)
à) ldi (16t/b) = 882 áàéòà â âåðõíåì áîðäåðå
á) pop:push
(âíå áîðäåðà íàäî îïàñàòüñÿ ïðåðûâàíèÿ, òî÷íî ðàññ÷èòàòü âðåìÿ! íî òîãäà áóäåò âèäíî ðàçðåç! êàê åãî ñêðûòü? ïñåâäîñëó÷àéíî? èëè âåñü ñäâèã íà 8 çíàêîìåñò ðàñïèñàòü êàê ïîñëåäîâàòåëüíîñòü ïåðåáðîñîê è ïðåðûâàíèé?)
(ïðîáëåìà â òîì, ÷òî ïðîöåäóðà ñ àâòîíàñòðîéêîé þçàåòñÿ áîëüøèìè áëîêàìè, à èõ ìîæåò ïîìåñòèòüñÿ òîëüêî öåëîå ÷èñëî - õîðîøî åñëè 3 âëåçåò)

äðóãèå ìåòîäû èñêëþ÷åíû íà 48Ê, óæå çàíÿòà ïàìÿòü 0x8000..0xb561 + 5 ñåãìåíòîâ âíèçó, à íàäî ðàçìåùàòü ñïðàéòû (16K), òàéëû (1K) è ëîãèêó

ñêîëüêî òàêòîâ íà áàéò ìîæíî âûæàòü èç pop:push ñ àâòîíàñòðîéêîé?
ld sp,ix
pop af
pop bc
pop de
pop hl
exx
pop bc
pop de
pop hl ;84
ld sp,iy
push hl
push de
push bc
exx
push hl
push de
push bc
push af ;91 (äîñþäà 20 áàéò, ïðè hl<>ix, hl'<>iy áóäåò 22 áàéòà)
inc hx/???
inc hy/??? ;16
;min = 191t/14b > 13.6 t/b = 1034 áàéòà â âåðõíåì áîðäåðå (73 ïîëóñòðîêè èëè 3 öåëûõ ñòðîêè 8 ïèêñ ñ àòðèáóòàìè)

ìîæíî áåñïëàòíî çàìåíèòü ix íà hl, iy íà hl', ÷òîáû óäîáíî áûëî äåëàòü down hl/up hl è ïåðåõîä ê àòðèáóòàì è îáðàòíî
íåëüçÿ down hl/up hl êëàñòü ïðÿìî â áëîê pop:push, íàäî â âûçûâàòîðå

ìîæíî ñäåëàòü òàêîé áëîê êîäà (âñå inc è ò.ï. ðåàëüíî íàäî äåëàòü äâàæäû: hl, hl'):
POPPUSH
inc h
POPPUSH
inc h
POPPUSH
inc h
POPPUSH
inc h
POPPUSH
inc h
POPPUSH
inc h
POPPUSH
inc h
POPPUSH
rrc h
POPPUSH ;attr
dec h
POPPUSH ;attr
dec h
POPPUSH ;attr
dec h
POPPUSH ;attr
ld a,l
add a,14
ld l,a
è îáðàòíî
èòîãî 290 + 15+15 + 290 = 610 áàéò

âûçûâàåòñÿ êàê prspr (ïî êðàéíåé ìåðå, ïåðâûé âõîä):
        ld sp,hl
        exx
         pop bc <--------------- b=scroller/256
         ld a,c
         out (0xfd),a ;-1t
        pop hl ;gfx <------------ äîëæíî óêàçûâàòü íà dw scroller
        pop de ;scr
        ld sp,hl
        pop hl ;l = f(hgt, x&4) <----------- scroller
         ld h,b ;f(yphase)
        jp (hl) ;f(yphase,sprhgt)
íî äëÿ ýòîãî íåò âðåìåíè (3 ïîëíûõ ñòðîêè íå ïîìåùàåòñÿ!)

Žáû÷íûé ðåæèì èãðû:
INT
âûâîäèì ñïðàéòû
ìóëüòèêîëîð
AY
ïðîâåðßåì, íóæåí ëè ñêðîëë
âîññòàíàâëèâàåì òàéëû
ëîãèêà
ïîäìåíà àäðåñà ñêðèïòà

ˆãðà 25 ôïñ:
INT
âûâîäèì ñïðàéòû
ìóëüòèêîëîð
AY
ïðîâåðßåì, íóæåí ëè ñêðîëë
âîññòàíàâëèâàåì òàéëû
ëîãèêà
INT
âûâîäèì ñïðàéòû
ìóëüòèêîëîð
AY
[ïðîâåðßåì, íóæåí ëè ñêðîëë] - íå íàäî, ò.ê. ëîãèêà íå äîäåëàíà?
âîññòàíàâëèâàåì òàéëû
ëîãèêà
ïîäìåíà àäðåñà ñêðèïòà

TODO êàê âûèãðàòü âðåìß è íå âîññòàíàâëèâàòü òàéëû, åñëè ëîãèêè ìíîãî? òóïî ïî ôëàãó?


çà 2 ôðåéìà íåëüçß óñïåòü ñäâèíóòü íà çíàêîìåñòî è äîðèñîâàòü çíàêîìåñòî, ïîýòîìó öèêë=3 ôðåéìà:
èëè äåëàòü ñêðîëë ïî 4 ïèêñ (ñäâèãàòîð âäâîå ìåíüøå, â âåðõíåì áîðäåðå âûçîâåì åãî òîëüêî 5 ðàç, â íèæíåì 10)
íî 4 ïèêñ òàéëîâ âñÞ ðàâíî äîëãî âûâîäèòü!
ìîæíî ëè óñïåòü â 2 ôðåéìà ñ 2 ïèêñ òàéëîâ? (ïðàâäà, áóäåò âèäíî ëó÷, ò.ê. âñÞ íà ãðàíè, òàì íåëüçß áóäåò ñìåùàòü íè÷åãî)
íà 128Š ìîæíî áûëî áû çàðàíåå ñãåíåðèòü öåëûé ýêðàí è åãî âäâèãàòü, çàîäíî óáðàòü ëó÷ (2 ýêðàíà)

‘êðîëë (ñïðàéòû ñåé÷àñ âûâåäåíû):
...
ïðîâåðßåì, íóæåí ëè ñêðîëë
(íåò âîññòàíîâëåíèß òàéëîâ)
(íà ïåíòàãîíå ñåé÷àñ îñòàëîñü 25088 - 1000(AY) - ïðîâåðêà òàêòîâ; ñêðîëë îäíîé ñòðîêè ñ âûçîâîì = 14058/3 = 4686 (èç íèõ 70 = âûçîâ+âûõîä))
ñêðîëë 5 ñòðîê äî êîíöà êàäðà
ïîäìåíà INT
  ïîâòîðßåì, ñêîëüêî ðàç íàäî ñäâèíóòü {
èíèöèàëèçàöèß àäðåñîâ, hl,hl'
INT
ñêðîëë 3 ñòðîê
ìóëüòèêîëîð
AY
ñêðîëë 5 ñòðîê äî êîíöà êàäðà
èíèöèàëèçàöèß àäðåñîâ, hl,hl'
INT
ñêðîëë 3 ñòðîê
ìóëüòèêîëîð
AY
ñêðîëë 4 ñòðîê

ïîäìåíà INT
INT

äîðèñîâêà ñòðîêè (äîëãî!!! íå óñïååì äî êîíöà êàäðà!!!)
äîðèñîâêà ñïðàéòîâ íà ñòðîêå???




  } ïîâòîðßåì
(íåò âîññòàíîâëåíèß òàéëîâ)
ïîäìåíà INT
ñäâèã òàéëîâîé êàðòû
ïåðåñ÷Þò êîîðäèíàò ñïðàéòîâ, âûêèäûâàíèå ëèøíèõ, äîáàâëåíèå íîâûõ
ëîãèêà
Нумерация по исходнику
Нумерация в редакторе - на 1 больше

0 - выстрел
1 - damage
2 - попадание в монстра
3 - убийство монстра напрыгом, newlevel
4 - boss dying
5 - убийство монстра
7 - провалились через пол
9 - взяли ключ
11 - bomb
(íà Timex âìåñòî ìóëüòèêîëîðà ïðîñòî çàäåðæêà? èíà÷å íå õâàòèò ñòðîê íà NTSC - à åñòü ëè ýìóëÿòîð?)



âûâîä ñïðàéòîâ 18x16 (ñäâèíóòûå = 24x16, 4 êîïèè) â ýêðàí è ëèíåéíûå àòðèáóòû:

áîëüøèíñòâî âû÷èñëåíèé íàäî ñäåëàòü âíå îáðàáîò÷èêà ïðåðûâàíèé. íî íàäî àòîìàðíî (êàê ìèíèìóì àäðåñ ýêðàíà+àäðåñ âõîäà - ýòîãî ìîæíî äîáèòüñÿ, åñëè ïàò÷èòü àäðåñ ýêðàíà ïðÿìî â ïðîöåäóðå)
åñëè âû÷èñëåíèé íåò, òî ìîæíî 8 ñïðàéòîâ â âåðõíåì áîðäåðå, äàæå ñ ïîëíîé ìàñêîé âåðõíåé ñòðîêè
ìîæíî ïðè ýòîì äàæå ñïðàéòû â slowmem
        
Ïðîáëåìà ñ ÷åñòíûìè ìàñêàìè!!! êàê íå íàêëàäûâàòü àòðèáóòû â ïóñòûõ ìåñòàõ (õîòÿ áû ñòðîêàõ) ñïðàéòà? Ñ÷èòàòü, ÷òî ïëàòôîðìû õîäÿò ïî èçâåñòíîìó ôîíó? À ïîëçàíèå???
â âåðõíåé äâîéíîé ñòðîêå ìîæíî îñòàâèòü àòðèáóò ôîíà? à êàê æå âîëîñû?
ïðîùå ñäåëàòü çàäàííóþ âûñîòó ñïðàéòà
ïðè ñäâèãå ñïðàéòà çíà÷èòåëüíàÿ ÷àñòü êðàéíèõ ñòîëáöîâ òîæå äîëæíà áûòü áåç àòðèáóòîâ??? [õðàíèòü âûâîä àòðèáóòîâ äëÿ êàæäîé ôàçû â âèäå ïðîöåäóð??? ñëèøêîì æèðíî (4 ôàçû ïî X, 4 ôàçû ïî Y)]
âûâîäèòü òîëüêî 2 ñòîëáöà àòðèáóòîâ âñåãäà? òîãäà ôëèêåðèíã áóäåò íå íà ôîíå, à íà ñàìîì ñïðàéòå, êðîìå öåíòðà (àêòèâíàÿ øèðèíà ñïðàéòà ïðèìåðíî 12 ïèêñ, à ñáîêó ïî 2-6 ïèêñ æèðíàÿ ìàñêà:
X=-2: (2)+5+12(1 ïèêñ.ôëèêåðèíã ñëåâà)+5, X=0: 1+12+5+(6), X=2: 3+12+5+(4), X=4: 5+12(1 ïèêñ.ôëèêåðèíã ñïðàâà)+5+(2))
òî åñòü àòðèáóòû ìîãóò òðåáîâàòüñÿ 2 ñëåâà, à ìîãóò 2 ñïðàâà
èëè â áîëüøèíñòâå ñëó÷àåâ øèðèíà ìàñêè 3 (â Rick Dangerous II îáâîäêà 2 ïèêñ, â ïåðâîì 1 ïèêñ, âûñîòà â ïåðâîì 21 ïèêñ, ë¸æà 15 ïèêñ, âêëþ÷àÿ ìàñêó) (S = ìåñòî öåíòðà ðèñóíêà ñïðàéòà (áåç ôëèêåðèíãà), s = ìåñòî êðàÿ ðèñóíêà ñïðàéòà ñ ôëèêåðèíãîì, M = ìåñòî ìàñêè, êîãäà ñïðàéò øèðèíîé íå óæå S, èíà÷å ìàñêó â áàéòàõ ñ ... íàäî ñæèìàòü?):
...MMMss SSSSSSSS SSssMMMM
......MM ssSSSSSS SSSSssMM
........ MMssSSSS SSSSSSss MM......
........ MMMMssSS SSSSSSSS ssMMM...
òóò âèäíî, ÷òî and+or òðåáóåòñÿ òîëüêî íà îäíîì èç êðà¸â, â îñòàëüíûõ ìåñòàõ ld èëè ïðîïóñê (äëÿ íèçêèõ ñïðàéòîâ)
êàê âñ¸-òàêè îãðàíè÷èòü âûñîòó àòðèáóòîâ (è ïèêñåëåé?) äëÿ íèçêèõ ñïðàéòîâ, ïðè ïîñòîÿííîì âðåìåíè? ìåíÿòü àäðåñ âõîäà è íà âûõîäå ñòàâèòü ïàóçó? òîãäà ld:ld íàäî îòäåëüíî, è ïîÿâëÿåòñÿ ëèøíèé jp (è ëèøíèé ld sp, åñëè àòðèáóòû îáùèå äëÿ 4 ôàç ñêðîëëà?)). è íàäî ãàðàíòèðîâàòü, ÷òî íà âõîäå â äâîéíóþ ñòðîêó ïåðâîå äàííîå ÷èòàåòñÿ èç sp
÷òîáû íå ïàò÷èòü jp, ìîæíî ñäåëàòü ñòåê.

óäîáíî ðàçìåùàòü ïðîöåäóðû âûâîäà ñïðàéòîâ ïî êðóãëîìó àäðåñó, à òî÷êè âõîäà â íèõ ïî HGT âû÷èñëÿòü â LSB ïî òàáëèöå (óìíîæåíèå íåëüçÿ, ò.ê. ãäå-òî downhl)
à êàê ðàçìåùàòü ïðîöåäóðû âûâîäà àòðèáóòîâ?

íàñêîëüêî ìîæíî óâåëè÷èòü âûñîòó? 2 ïèêñ âûñîòû = 136+36 = 172/ñïðàéò (1376 íà 8 ñïðàéòîâ) - ýòî ïðåäåë (äàëüøå íàäî äîáàâëÿòü 3-é downhl8)
ò.å. òåõíè÷åñêè ñïðàéòû 18x18, ðàçìåð ïðîöåäóðû = 18*11-1(ïîñëåäíèé inch)+2*9(downhl8)+3(ld:ret) = 218 b, ìîæíî äîáàâèòü âû÷èñëåíèå àäðåñà àòðèáóòîâ (+4 b) = +5t/ñïðàéò (bc ñâîáîäåí, ìîæíî òóäà 2 êîíñòàíòû äëÿ downhl8 (1 êîíñòàíòà ñîâïàäàåò è ñ downhl8attr), òîãäà íå +5, à -4t/ñïðàéò)
åñëè íåìíîãî íå õâàòèò ñêîðîñòè, ìîæíî ñäåëàòü çèãçàã àòðèáóòîâ (äâà íàáîðà ïðîöåäóð) = -32[+4(ëèøíèé inc l ïðè ðèñîâàíèè ñ êîíöà íå íóæåí)]/ñïðàéò
â êðàéíåì ñëó÷àå çàìåíèòü âåðõíþþ ñòðîêó ñïðàéòà íà POPAr_LDr_APOPd?
ìîæíî åù¸ ñäåëàòü îòäåëüíûå âõîäû äëÿ ñïðàéòîâ ðàçíîé âûñîòû (â ìàêñèìàëüíîé âûñîòå âõîä ïðÿìî â ïðîöåäóðå) - ìíîãî ïàìÿòè, íî âûèãðûø 12t/ñïðàéò (ïîõîæå, âñ¸ ðàâíî ïðèä¸òñÿ äåëàòü, ò.ê. âñ¸ ðàâíî íóæíà ïàóçà â çàâèñèìîñòè îò âûñîòû)
à äëÿ 128Ê æåëàòåëüíî äîáàâèòü pop af:out (c),a = +22/ñïðàéò (out (0xfd),a = +21/ñïðàéò), èíà÷å íå õâàòèò ïàìÿòè äëÿ ãðàôèêè âçðûâîâ (èëè âçðûâû ðèñîâàòü âíå ïðåðûâàíèÿ?)





õîòÿ ôàç ïî X ÷åòûðå, íàäî 2 ðàçíûõ âûâîäèëêè ïî X *4 ôàçû ïî Y, èòîãî 8
èëè äåëàòü ñèììåòðè÷íóþ ìåäëåííóþ âûâîäèëêó POPAORr_POPLDr_APOPORd_APOPORl_LDl_POPAORd = 176t/doubleline = (6+3+6 + 6+2+6 = 29) b/doubleline (ìîæíî áóäåò äåëàòü äûðû â ñïðàéòàõ, ñ ôëèêåðèíãîì ôîíà èëè ñ ïîäêðàñêîé ýòîãî ìåñòà íàèáîëåå âåðîÿòíûì àòðèáóòîì - òîãäà àòðèáóòû äëÿ êàæäîé ôàçû ïî X ðèñîâàòü îòäåëüíî)?
	inc h
	macro DOWNHL8
	ld a,l
	sub -32
	ld l,a ;NC=next third
	sbc a,a
	and -8
	add a,h
	ld h,a ;-8/+0
	endm ;38t (+34 ïî ñðàâíåíèþ ñ inc h)

        
        
êàê àòîìàðíî ïðîïàò÷èòü âñþ öåïî÷êó âûçîâîâ ñïðàéòîâ è ïàóç ñ ïàðàìåòðàìè? ñìåíîé íà÷àëüíîãî àäðåñà ñòåêà
íàäî èìåòü triple buffering ñêðèïòîâ ñïðàéòîâ



áóôåð ýêðàíà äëÿ âîññòàíîâëåíèÿ - ñëèøêîì æèðíî, à çàïîìèíàòü êàðòèíêó ïîä ñïðàéòàìè ìåäëåííî
âîññòàíîâëåíèå ôîíà, âèäèìî, ëó÷øå ïåðåðèñîâêîé òàéëîâ ïîä ñïðàéòàìè - ìàêñèìóì 4*6 òàéëîâ 16x16 (ìîæíî ðèñîâàòü èõ íå ïîëíîñòüþ, ìîæíî ïî ñòîëáöàì)
îïòèìàëüíî âîññòàíîâèòü 3 ñòîëáöà âûñîòîé n è 3 ñòîëáöà âûñîòîé 16-n
íàäî âîññòàíîâèòü âñåãäà 3*3 çíàêîìåñòà (òðóäíî îïòèìèçèðîâàòü ïî sprhgt)
åñëè ñòèðàòü àòðèáóòû òóò æå (L îáùèé), òî àòðèáóòû â íåèñïîëüçîâàííîì ñòîëáöå òîæå âîññòàíàâëèâàòü - êàê ñýêîíîìèòü?

â ñòåêå áóäóò ëåæàòü ãîòîâûå ïàò÷è, àäðåñà è âõîäû?

òàêîé êîä íå ó÷èòûâàåò contention, à íàäî áû, ò.ê. âîññòàíîâèòåëü ðàáîòàåò â ñòðîêàõ 128..191
        ...
        ld (hl),c ;+7
        dec h
        ld (hl),b ;+23(18) (ïîòåðÿíî 5t)
        dec h
        pop bc
        ld (hl),c ;+47(44) (ïîòåðÿíî 3t)
        ...
ìàêñèìàëüíàÿ ïîòåðÿ 4t/b * 8*(18*3+9*2) = 4*576 = 2304t
ðåàëüíî íàäî óìíîæèòü íà êîýôôèöèåíò 128/224: 1316.6t (ïîòåðÿ 6 ñòðîê)
÷åòâåðòü (1.5 ñòðîêè) ìîæíî ñýêîíîìèòü, åñëè attr â fastmem
ïîêà íåïîíÿòíî, êàê ìîæíî óëó÷øèòü, åñëè íå ïîäãîíÿòü ê 224t
òåîðåòè÷åñêè ìîæíî ñýêîíîìèòü 1296t (6 ñòðîê), åñëè íå âûâîäèòü ëèøíèé ñòîëáåö àòðèáóòîâ
íà ïóñòîì çíàêîìåñòå òîæå ìîæíî ñýêîíîìèòü?

íàäî îïòèìèçèðîâàòü ñóììó âðåì¸í: âîññòàíîâèòåëü + ãåíåðàòîð ñêðèïòà äëÿ íåãî

äîïóñòèì, îòäåëüíî âîññòàíàâëèâàåì ñòîëáöû ãðàôèêè, îòäåëüíî ñòîëáöû àòðèáóòîâ (÷òîáû íå âîññòàíàâëèâàòü ëèøíèé):
;ìîæíî ñäåëàòü pop iy:pop ix êàæäûé ðàç â àòðèáóòàõ (èòîãî ïðî÷èòàåì 3 ðàçà), ïîòîì óæå ðèñóåì ïèêñåëè, à òàì íå ÷èòàåì êàæäûé ðàç (íî êàê òîãäà âûéòè???) - íàäî ÷èòàòü òîëüêî ix??? èëè pop af:jr c:pop ix:pop iy? (íî òîãäà íàäî ÷òî-òî äåëàòü ñ add hl,de)
;íî ïðè âõîäå â âîññòàíîâèòåëü ñëåäóþùåãî ñïðàéòà íàäî îïÿòü ïðî÷èòàòü iy
;ìîæíî âîîáùå áåç iy (ïðèêëåèòü) ïðè âûñîòå 18 - ïðîèãðûø ïî ðàçìåðó ÿâíî ìåíåå ÷åì â 2 ðàçà


        
        
        

;óäîáñòâà äëÿ ñïðàéòîâ (÷òîáû óäîáíåå ñîñòàâëÿòü ñêðèïò):
;- àâòîðàñ÷¸ò pg?
;- àâòîïåðåõîä íà ïðîöåäóðó (x&4)!=0? (îíà íà 4t äîëüøå)

;â ãðàôèêå ñïðàéòà ìîæíî ïîëîæèòü ôàçó x è âûñîòó (ñåé÷àñ òàì òîëüêî âûñîòà)
;÷òîáû ïåðåéòè íà íóæíûé prspr, íóæíû ôàçà x, ôàçà y è âûñîòà
;äîïóñòèì, ïåðåõîäèì íå ïî ret, à âû÷èñëÿåì:
        exx
         pop de ;íåëüçÿ ïîðòèòü de', bc
         ld a,d
         out (0xfd),a ;pg (íàäî 0b010xxxxx, èíà÷å ñðàáîòàåò 1ffd)
         ld a,e ;f(yphase)
        pop hl ;gfx
        pop de ;scr
        ld sp,hl
        pop hl ;l = f(hgt, x&4)
        ld h,a ;f(yphase)
        jp (hl)
        ...
        jp[x<4]/inc hl...inc l[x>=4]
        ...
        ex de,hl
;91 (áûëî 70+4(nop/incl)) = +21 (17?)
;óêëàäûâàåìñÿ â +22t/ñïðàéò??? íî ìû äîáàâèëè ëèøíèå îïåðàöèè íà âûõîäå!!! (áûëî ïðîñòî pop af:out (c),a:ret = 32, à ñòàëî 77-10(ld bc,7ffd)=67, ò.å. >8.3t/ñïðàéò ëèøíèõ!)
;ó íàñ íà 128Ê îñòà¸òñÿ òîëüêî 121t íà óäîáñòâà 8 ñïðàéòîâ = 14.8t/ñïðàéò!!! ìîæíî âûèãðàòü 3*2*8 = 48t íà attr=0xa300, îñòà¸òñÿ 21t/ñïðàéò +1t
;íåëüçÿ ÷åðåç 7ffd? íåëüçÿ àâòîðàñ÷¸ò pg?
;êàê âûõîäèòü èç ñïèñêà? ñïåöèàëüíî ïîäãîòîâëåííûé ïñåâäî-gfx ñ íóæíûì àäðåñîì âíóòðè





÷åðåç ñòðî÷êó ïåðåêëþ÷àåì ýêðàí (àòðèáóòû/÷àíêè)
íà 4-é ñòðî÷êå íàäî ñìåíèòü àòðèáóòû (ìîæíî óñïåòü pop:ld)
ãäå-òî åù¸ êàæäûé êàäð íàäî ïåðåáðîñèòü àòðèáóòû 0-é ñòðî÷êè
ïðè ñìåíå êàðòèíêè íàäî îáíîâèòü å¸ çà 1 êàäð
ýòî 3072 (4*768) áàéòà ÷àíêîâ è 1536 (2*768) áàéòîâ àòðèáóòîâ (èç íèõ 768 âûâîäèì â ñàìîì ìóëüòèêîëîðå è 768 ãäå-òî)
èòîãî îñòà¸òñÿ 4*768
âíóòðè ìóëüòèêîëîðà ìîæíî ïåðåáðîñèòü åù¸ 3*768 áàéòîâ
èòîãî îñòà¸òñÿ 1*768
ýòî 1*768*13 ~ 10000 = 45 ñòðîê! ïëþñ åù¸ ïåðåáðîñêà 0-é ñòðî÷êè "ãäå-òî" êàæäûé ôðåéì (ìîæíî â âåðõíåì áîðäåðå âìåñòå ñ ìóçûêîé)

â êàêîé ýêðàííîé îáëàñòè àòðèáóòû, à â êàêîé ÷àíêè?
èëè ÷åðåäîâàòü?
åñëè ÷åðåäîâàòü, òî íàäî çà 1 êàäð îáíîâèòü òîëüêî àòðèáóòû (âåðõóøêè è ìóëüòèêîëîð íà 4-é ñòðî÷êå)
ýòî ìîæíî îáúåäèíèòü ñ c2p èëè îñòàâèòü ïîëîâèíó âðåìåíè â ìóëüòèêîëîðå ïîä ïîëüçîâàòåëüñêóþ ïðîöåäóðó

c2p:
àòðèáóòû (òàáëèöà â îäíîé ñòðàíèöå):
pop hl
ldd ;êàæäûé âòîðîé ðåíäåð - èç ìåäëåííîé ñòðàíèöû! êèäàåì íå â ýêðàí, à â áûñòðûé áóôåð
:26/ïàðó * 32 = 832 = 3.714 ñòðîê (âîîáùå 39936)
(ó íàñ òîëüêî 2 ñòðîêè + 126 òàêòîâ íà îáíîâëåíèå 4-é ñòðî÷êè: ìîæíî óñïåòü ldi, íî áåç pop, èëè íå íà âñþ øèðèíó)
+
÷àíêè (òàáëèöà â äðóãîé ñòðàíèöå):
pop hl
ldd ;êàæäûé âòîðîé ðåíäåð - èç ìåäëåííîé ñòðàíèöû!
ld a,(hl) ;êàæäûé âòîðîé ðåíäåð - èç ìåäëåííîé ñòðàíèöû!
ld (bc),a ;slowmem!!!
:40/ïàðó (âîîáùå 61440)
=66/ïàðó * 32*48 = 101376 (ýòî áîëüøå 2 ïîëåé ýêðàíà!!!)

åñëè ÷åðåäóåì, òî êàê ïèñàòü èç ñòðàíèöû (ãäå òàáëèöà) â ñòðàíèöó 7???
åñëè áû âñåãäà àòðèáóòû â ñòðàíèöå 7, òî ìîæíî - íî òîãäà ÷àíêè íåëüçÿ âûâåñòè â ñòðàíèöó 7!
òîãäà íàäî òàáëèöû â íèæíåé ïàìÿòè (ãäå ñòîëüêî âçÿòü? ðÿäîì ñ chmap?), îäíà èç íèõ pop hl:dec h (+4 òàêòà/ïàðó)

Ïðîùå íå ÷åðåäîâàòü, òîãäà òàáëèöû â ñòðàíèöå è íå íàäî inc h.
Åñëè òàáëèöû â ñòðàíèöå, òî âñÿ òåêñòóðà äîëæíà óêëàäûâàòüñÿ â 18 öâåòîâ (#dd..#ff ÷åðåç îäèí)!!! [×àíêè ìîæíî âî âñþ ñòðàíèöó (32 öâåòà), íî òîãäà àòðèáóòû íå ïîëó÷èòñÿ ïî òåì æå äàííûì â ñòðàíèöå 7.]
Åñëè íå ÷åðåäîâàòü, òî íàäî, ÷òîáû ïëàíèðîâùèê çàäà÷ ñïëàíèðîâàë âûçîâû ïîëíîãî îáíîâëåíèÿ àòðèáóòîâ è ÷àíêîâ (íà÷èíàÿ ñ êîíöà ïðåäûäóùåãî êàäðà).

Êàê ñïëàíèðîâàòü îáðàùåíèå ê ìåäëåííîé ïàìÿòè ïðè c2p àòðèáóòîâ? âñåãäà êëàñòü èõ â âåðõíèé áîðäåð (íå âëåçåò) èëè âñåãäà â ýêðàí? ìîæíî âñþ ïëàíèðîâêó â ýêðàí:

êàäð:
1. ìóçûêà (5 ñòðîê)
2. ïåðåáðîñêà 0-é ñòðî÷êè (45 ñòðîê)
3. ïëàíèðîâùèê?
4. èíèöèàëèçàöèÿ ïîëüçîâàòåëüñêîãî ôðåéìà
5. (ïàóçà - âûõîä íà ñòðî÷êó 3)
---
6. ìóëüòèêîëîð + ïîëüçîâàòåëüñêèå ïðîöåäóðû ïî 6 ñòðîê
---
7. âòîðàÿ çàäà÷à ïîëüçîâàòåëÿ (56 ñòðîê)


÷òî áóäóò äåëàòü ïåðâàÿ è âòîðàÿ çàäà÷è â çóìðîòàòîðå? ìîæíî â ìóëüòèêîëîðå äåëàòü òîëüêî c2p (â 3 êàäðà), à âòîðàÿ çàäà÷à âñÿ íà çóìðîòàòîð. Íî çà 2 êàäðà = 56*2 = 112 ñòðîê = 25088 òàêòîâ íå óñïååò âî âåñü ýêðàí (3072 ÷àíêîâ).
Åñëè îêíî 48x40, òî 1920 ÷àíêîâ, îñòà¸òñÿ 88*2 = 176 ñòðîê = 39424 òàêòîâ (20.5 òàêòîâ íà ÷àíê)
Íàäî ðàçëîæèòü c2p íà áîëåå ÷åì 2 êàäðà: ìîæíî îòëîæèòü c2p àòðèáóòîâ â îòäåëüíûé êàäð, ò.ê. îí ïîäöåïëÿåòñÿ â êàæäîì êàäðå îòäåëüíî.
Åñëè îêíî 48x40, òî 1920 ÷àíêîâ, îñòà¸òñÿ 88*3 = 264 ñòðîê = 59136 òàêòîâ (30.8 òàêòîâ íà ÷àíê, à ó íàñ ìèíèìóì 31.5)
Íå óñïåâàåì ÷åñòíûé çóìðîòàòîð.
Ýòî ïðè ìàëåíüêîì îêíå.
Âîîáùå ëó÷øå îñòàâèòü îêíî 48x48 èëè 64x32.
Èëè ïîë-ýêðàíà 32x48 (1536 ÷àíêîâ) - òîãäà ïîëüçîâàòåëüñêèå ïðîöåäóðû ïî 7 ñòðîê. Íî 56*3 = 168 ñòðîê = 37632 òàêòîâ (24.5 òàêòîâ íà ÷àíê, à ó íàñ ìèíèìóì 31.5).

Ò.å. âñ¸-òàêè íàäî ïëàíèðîâàòü çóìðîòàòîð â îáëàñòè ìóëüòèêîëîðà.
Æåëàòåëüíî óëîæèòüñÿ â 4 êàäðà.

c2p ÷àíêîâ äîëæíî ïëàíèðîâàòüñÿ òîëüêî âíå ýêðàíà (èíà÷å òðóäíî áóäåò íàñòðîèòü ïîä âàéòîâûå è íîâàéòîâûå êîìïû), îñòàëüíîå ìîæíî è â ýêðàíå, è âíå ýêðàíà (åñëè ÷àíêîâûé áóôåð â áûñòðîé ïàìÿòè è åñëè òàáëèöà àòðèáóòîâ â íèæíåé ïàìÿòè, ò.ê. 7-ÿ ñòðàíèöà ìåäëåííàÿ).
c2p ÷àíêîâ ìîæíî àñèíõðîííî (â íèæíåì áîðäåðå) òîëüêî ïðè ÷åðåäîâàíèè ýêðàíîâ â ðåíäåðàõ, íî òîãäà òàáëèöà ÷àíêîâ äîëæíà áûòü â íèæíåé ïàìÿòè, òàáëèöà àòðèáóòîâ òîæå!
äëÿ óíèâåðñàëüíîñòè íàäî âñ¸ â ñòðàíèöàõ. òîãäà c2p ÷àíêîâ èä¸ò â 5-é ýêðàí (ïëàíèðóåòñÿ âíå ýêðàíà (ìîæíî òàáëèöó â ìåäëåííîé ñòðàíèöå), íî ñèíõðîííî!!!), à c2p àòðèáóòîâ â áûñòðûé áóôåð (èç áûñòðîé ñòðàíèöû).
òîãäà ìîæíî 32 öâåòà.

Åñëè c2p ÷àíêîâ âíå ýêðàíà, òî ìû îãðàíè÷åíû âðåìåíåì âåðõíåãî è íèæíåãî áîðäåðà. Íå óñïååì îáíîâèòü âåñü ýêðàí.

Èëè âñ¸-òàêè ïëàíèðîâàòü c2p ÷àíêîâ â ýêðàíå (èç áûñòðîé ñòðàíèöû)? ×òîáû óïðîñòèòü íàñòðîéêó ïîä ðàçíûå êîìïû, íàäî îêðóãëèòü âñå çàïèñè äî 8 òàêòîâ (40 òàêòîâ íà ÷àíê íå ïîëó÷èòñÿ).










/**
Åñëè è ÷àíêè, è àòðèáóòû â îäíîé ñòðàíèöå, òî ìîæíî âûâîäèòü îäíîâðåìåííî:
pop hl
ld d,N
ld a,(hl) ;slowmem!!!
ld (de),a
dec h
ld d,N+2
ldd
ld a,(hl)
ld (bc),a
:72/ïàðó - ìåäëåííî
*/

äëÿ çóìðîòàòîðà ìîæíî áåç c2p, íî íåóäîáíî (íàäî çàïîëíèòü äâå ðàçíûõ îáëàñòè ïàìÿòè, èç íèõ îäíà â ñòðàíèöå)





âûäåëåíèå âðåìåíè ïîä ïîëüçîâàòåëüñêóþ ïðîöåäóðó êóñêàìè ïî 6 ñòðîê:
ïîëüçîâàòåëü äîëæåí ù¸ëêàòü ýêðàíàìè êàæäóþ ñòðî÷êó!!! äåëàòü ýòî ìèíèìóì 5 ðàç
jumpXX:
<mc>
ld iy,jumpYY
patchXX:
jp ...
---
[exx]
<ïîëüçîâàòåëü>
[exx]
jp (iy)
---
jumpYY:
ïîòåðÿ âðåìåíè 32 òàêòà íà îäèí âûçîâ (â ìóëüòèêîëîðå) + ïàò÷è (âíå ìóëüòèêîëîðà)
ïîëüçîâàòåëü áóäåò ù¸ëêàòü ýêðàíàìè ÷åðåç out (c),d...out (c),e
íî ïîëüçîâàòåëü äîëæåí ðàáîòàòü â ñâîåé ñòðàíè÷êå! ò.å. äîëæåí ïåðåñ÷èòûâàòü d,e!
ïðè ýòîì äîëæåí çíàòü òåêóùèé ýêðàí (ôàçà ìåíÿåòñÿ êàæäûé ðåíäåð)
ld a,hx
or pg
out (c),a
 èëè (åñëè ñâîáîäíî a,a'):
<ðàñ÷¸ò a,a'>
...
out (c),a
ex af,af'
 èëè (íå çàíèìàòü àëüòåðíàòèâíûå ðåãèñòðû):
<ïåðåñ÷¸ò d,e>
...
out (c),d/e

ïðîùå íå ÷åðåäîâàòü


íåñêîëüêî âûçîâîâ ïîëüçîâàòåëÿ ìîæíî ñäåëàòü â âåðõíåì áîðäåðå (à ñàìûì ïåðâûì - èíèöèàëèçàöèþ ôðåéìà ïîëüçîâàòåëÿ)
â íèæíåì áîðäåðå ìîæíî âòîðóþ çàäà÷ó ïîëüçîâàòåëÿ








çóìðîòàòîð:

à) çóìðîòàòîð óíèâåðñàëüíûé (ìîæíî ñ ãîðèçîíòàëüíûì òèëòîì):
add hl,bc
ld a,h
exx
add hl,bc
ld d,h
ld e,l
ld a,(de)
exx
ld (de),a
inc e
:60/÷àíê * 64*48 = 184320
íå êîíòðîëèðóåò âûõîä çà òåêñòóðó (åñëè â #8000..#ffff, òî +8 òàêòîâ, íî êàê æå, åñëè c2p íàäî â áûñòðîé ïàìÿòè!!!)
è çàíèìàåò bc, ò.å. êàê ïåðåêëþ÷àòü ýêðàíû? îäèí bc ïåðåíåñòè â sp
åñëè íå ÷åðåäîâàòü ñòðàíèöû ýêðàíà â ðåíäåðàõ, òî ìîæíî ïðè ýòîì åù¸ îñâîáîäèòü de (bc áóäåò ÷åðåç ld bc)
/**
add ix,bc
add hl,sp
ld d,hx
ld e,h
ld a,(de)
ld (...),a
:58/÷àíê, 10 áàéò/÷àíê (30720 áàéò), ïðèä¸òñÿ êëàñòü â ñòðàíèöû - íåðåàëüíî
*/
/**
add ix,bc
add hl,de
ld a,h
exx
ld d,hx
ld e,a
ld a,(de)
ld (hl),a
inc l
exx
:68/÷àíê - òîðìîç
*/
/**
add ix,bc
add iy,sp
ld d,hx
ld e,hy
ld a,(de)
ld (hl),a
inc l
:64/÷àíê áåç bc,bc' è ïðè ýòîì çàíèìàåò iy
*/
/**á)
îäíà êîîðäèíàòà ÷åðåç 8-ðàçðÿäíóþ àðèôìåòèêó
add hl,sp
ld a,d
add a,e
ld d,a
ld a,h
exx
ld h,a
ld a,l
adc a,b
ld l,a
ldi
exx
:67/÷àíê áåç bc - òîðìîç
*/

â)
ìîæíî ëè ñäåëàòü óíèâåðñàëüíûé çóìðîòàòîð èç íåñêîëüêèõ íåóíèâåðñàëüíûõ?
ïàò÷è ñòðîêè íà âåñü ýêðàí íå ïîìîãóò
ìîæíî ñäåëàòü òèëò ïîñëå çóìà, íî íå ïîñëå çóìðîòàòîðà (áóäåò íåïðàâèëüíî çàöèêëèâàòü òåêñòóðó ïîä óãëîì)
íåëüçÿ ïîñëå çóìðîòàòîðà ñäåëàòü ïîâòîð (ïðîäîëæåíèå ñòðîêè ïîñëå çàöèëèâàíèÿ - ýòî óæå äðóãîå ìåñòî òåêñòóðû)
ìîæíî òîëüêî ðàçáèòü ïî ñòàðøèì áàéòàì ñóììàòîðîâ (+0..1, +1..2, +2..3...), íî áóäåò î÷åíü ìíîãî ðàçíûõ ïàð
ìîæíî òîëüêî ïî îäíîìó èç ñóììàòîðîâ (V, ÷òîáû çàöèêëèâàòü?)
íåò âûèãðûøà???

/**ã)
íåïîëíàÿ ðàçðÿäíîñòü, òåêñòóðà 16x256 ñ ïðàâèëüíûì çàöèêëèâàíèåì
add ix,bc ;%uuuuVVVV vvvvvvvv
adc hl,sp ;%???????? UUUUUUUU
ld a,hx
or b;#f0
ld h,a
ldi
:62/÷àíê áåç bc' - òîðìîç
áóäóò íåïðåäñêàçóåìûå ïåðåêîñû ïî u
êàê èõ ëå÷èòü???
62/÷àíê ïðè add a,b:adc hl,sp:ld c,hx:ld h,c (áåç ïðàâèëüíîãî çàöèêëèâàíèÿ, íî è áåç ïåðåêîñîâ)
*/
ä)
òàáëèöû U è V íà âñå ìàñøòàáû - íå õâàòèò íèæíåé ïàìÿòè, òîãäà òåêñòóðó íàäî â íèæíåé ïàìÿòè, à òàáëèöû ââåðõó
êàê âõîäèòü â íóæíîé ôàçå u è v?
å)
16x16:
add hl,bc ;%11VVVVvv vUUUUuuu
[ld a,h:or #c0:ld h,a]
ld d/e,(hl)
1/2*push de
:23.5 [+15]
áóäóò íåïðåäñêàçóåìûå ïåðåêîñû ïî v
êàê èõ ëå÷èòü? ìîæíî çà ñ÷¸ò ìàòåìàòèêè (ýòî ïðîñòî íåîáû÷íûé ïîðÿäîê ñòûêîâêè êâàäðàòèêîâ)
ïðè bc<0 äîñòàòî÷íî îäíîãî set. à êàê óñêîðèòü ïðè bc>0? ïåðåâ¸ðíóòàÿ òåêñòóðà â äðóãîé ñòðàíèöå?
òîãäà 31.5
¸)
òàéëîâûé ðîòàòîð???
æ)
ïîëèãîíû? íåëüçÿ ïðè áîëüøèõ ðàññòîÿíèÿõ - ïîëèãîíîâ áóäåò áåñêîíå÷íîñòü
ç)
ïî ñòîëáöàì? êîä ñòîëáöà ñãåíåðèðîâàòü? è êàêîé áóäåò ýòîò êîä?
ñäâèã îòíîñèòåëüíî öåíòðàëüíîé îñè çàâèñèò îò ðàññòîÿíèÿ (òî÷íîãî!) è óãëà ïîâîðîòà, óìíîæèòü íà X
è)
íàáèðàòü íåðîâíûå øàãè èç ãîòîâûõ ïðîöåäóð ïî 4 èëè 8 øàãîâ (êàê â DMA Sound Blaster)
áóäåò çàìåòíî ðåãóëÿðíûå ñêëàäêè?
äëÿ îäíîé îñè: +0, +1/8, +2/8, +3/8 ... +63/8 è îòðèöàòåëüíûå, èòîãî ~128
äëÿ äâóõ îñåé ñëèøêîì ìíîãî âàðèàíòîâ (128*128)


õîòåëîñü áû òèëò ñ çàòåíåíèåì
ýòî ìîæíî ÷åðåç ðàçíûå òàáëèöû c2p, íî ãäå õðàíèòü ñòîëüêî òàáëèö - ïîä êàæäóþ ÿðêîñòü?


äëÿ ñêîðîñòè çóìðîòàòîð ëó÷øå âñ¸-òàêè áåç c2p, à ïðÿìî â ýêðàí (ïèêñåëè è àòðèáóòû)
òîãäà íàäî 2 ýêðàíà
çíà÷èò, ïðîöåäóðû ïîëüçîâàòåëÿ äîëæíû óìåòü ðàáîòàòü â ëþáîé èç 2 ôàç. íî êàê ïèñàòü èç òåêñòóðû â ñòðàíèöó 7 è ñ ó÷¸òîì òàáëèöû ÷àíêîâ?
ëó÷øå ãðàôèêó ÷àíêîâ ïðÿìî â òåêñòóðå. íî êàê ïèñàòü â ñòðàíèöó 7?



â ÷àíêàõ 4x2:
âñåãî 271000..322000
èç íèõ:
91739 background (ldir)
6293 rotmatrix
4000 rotate
125074 drawpolys (12 øò) tmap
91862 c2p

äëÿ ñðàâíåíèÿ SOMMER:
âñåãî 431000
èç íèõ:
2416 rotate axes
75688 background (ldi)
45079...49324 rotate
19743..20037 prepare
3591 prepare stacks?
111698...139902 drawpolys (24 øò) gouraud
154769..159248 c2p
16 óðîâíåé ÿðêîñòè
test_rndnoise.scl - ñëó÷àéíûé øóì (ìàêñèìóì, ÷åãî ìîæíî äîáèòüñÿ ôèëüòðàöèåé áèòïëàíîâ ïî ìàñêå)
test_rndframeshift.scl - ñëó÷àéíîå ïåðåìåøèâàíèå 16 ôðåéìîâ ñ ðàçíûì ïîðîãîì (ïî÷åìó-òî âûãëÿäèò õóæå, øåâåëåíèå ìåäëåííåå)
test_rndxyframeshift.scl - òî æå, íî ê random ïðèáàâëåíî x+y (ðàçíèöû ñ ïðåäûäóùèì íå âèäíî)
test_xyframeshift.scl - âìåñòî øóìà òîëüêî pixel > (frame+x+y)&0xf
test_chunk.scl - ñòàíäàðòíûå ÷àíêè âìåñòî x+y (âûãëÿäèò íå î÷åíü ÷èñòî - ïîÿâëÿþòñÿ ïîëîñêè)
test_woolchunk.scl - øóìîâûå ÷àíêè âìåñòî x+y (âûãëÿäèò ëó÷øå âñåãî), ñìîòðèáåëüíî äàæå ïðè ïåðåêëþ÷åíèè çà 3 ôðåéìà
        pixel > frame+achunkpixelnumber[pixelnumber])&0x0f

ïîðÿäîê ïîêàçà ñòàíäàðòíûõ ÷àíêîâ ïðåäïî÷òèòåëüíî õîäîì êîíÿ (÷òîáû ìåíÿëàñü ôàçà 50% øòðèõîâêè íà êàæäîì êàäðå)

        
Êàê ïîñ÷èòàòü ýòó ôîðìóëó â realtime? æåëàòåëüíî åù¸ ñ ðåãóëèðîâêîé ÿðêîñòè
frame+achunkpixelnumber[pixelnumber] ìîæíî çàìåíèòü íà achunkpixelnumber[frame, pixelnumber] è äàæå âáèòü â èííåëóï êîíñòàíòàìè

Ñðàâíåíèå ïî 1 ïèêñåëþ - ìåäëåííî
òàáëèöà ñðàâíåíèÿ: scrpixel = achunkscrpixel[pixel(4), frame(4), pixelnumber(4)] - èòîãî àäðåñ 12 áèò
ñäåëàòü ñðàçó íåñêîëüêî ïèêñåëåé ïî òàêîé òàáëèöå íå ïîëó÷èòñÿ
áëîê èç 8 ïèêñåëåé = 32 áèòà
íî ðåàëüíî frame+pixelnumber = 4 áèòà çàõàðäêîæåííûõ, òàê ÷òî àäðåñ 8 áèò - ìîæíî áðàòü ïî 2 ïèêñ.

à) pixel > frame+achunkpixelnumber[pixelnumber])&0x0f
;8 ïèêñåëåé abcdefgh ïîëíîñòüþ ïåðåïóòàíû - ðèñîâàòü â òàêîé ýêðàí íåóäîáíî
        pop bc ;%ccccggggddddhhhh
        ld l,b
        ld b,framepluspixelnumber1
        ld h,framepluspixelnumber2
        ld a,(bc) ;%d000h000
        rrca      ;%0d000h00
        or (hl)   ;%cd00gh00
        rrca      ;%0cd00gh0
        pop bc ;%aaaaeeeebbbbffff
        ld l,c
        ld h,framepluspixelnumber3
        or (hl)   ;%bcd0fgh0
        rrca      ;%0bcd0fgh
        ld l,b
        ld h,framepluspixelnumber4
        or (hl)   ;%abcdefgh
        ld (de),a
        inc e (d?)
;111 t/b (ìîæíî 99 t/b áåç rrca, åñëè 4 êîïèè òàáëèö, èòîãî 16Ê, ñ óäîáíûì ïîðÿäêîì ïèêñåëåé)
â ÷àñòè ñëó÷àåâ åù¸ óñêîðåíèå çà ñ÷¸ò inc/dec h âìåñòî ld h
ìîæíî çàõàðäêîäèòü ñìåíó ÿðêîñòè ÷åðåç òå æå òàáëèöû, íî áðàòü òàáëèöû â äðóãîì ïîðÿäêå?

áåç ÿðêîñòè ïðîöåäóðû âûâîäà çàéìóò íåìíîãî (16 ôðåéìîâ ïî 4 íåïîëíûõ ñòðîêè 19- èëè 22- b/b, èòîãî ìîæíî 1.5Ê)
ñàì ýêðàí çàéì¸ò 24Ê, íàäî â âåðõíåé ïàìÿòè, èíà÷å âñÿ íèæíÿÿ ïàìÿòü çàíÿòà ýêðàíîì+òàáëèöàìè
íà 48Ê ìîæíî ñäåëàòü ñ íåóäîáíûì ïîðÿäêîì ïèêñåëåé ãåíåðàöèþ ýêðàíîâ (ò.ê. õðàíèòü ýêðàíû íåãäå), íàïðèìåð, 3D ðåíäåð (à êàê êîìïàêòíî õðàíèòü ñöåíû? äëÿ ìåøåé è òåêñòóð ìåñòà òî÷íî íåò, íî â äðåâíîñòè äåëàëè 3D ñïëàéíû - êàê? åù¸ íóæíî ïðîçðà÷íîñòü)

÷òîáû óñïåòü çà 3 ôðåéìà, íàäî 34 t/b, à ó íàñ òóò ïîëó÷èòñÿ 8(ñ íåóäîáíûì ïîðÿäêîì 10) ôðåéìîâ! ïðè ýòîì âèäíî ïðîðèñîâêó, íàäî îáíîâëÿòü ïîëîñêàìè èëè ïñåâäîñëó÷àéíûìè êâàäðàòèêàìè?

íà 128Ê ìîæíî íà 2 ýêðàíàõ ñäåëàòü R-Mode èëè ïðîñòî 4 öâåòîâûõ ñëîÿ, òîãäà îáíîâëåíèå áóäåò çà 16 ôðåéìîâ, çàòî â ïîëíîì öâåòå (4R+4G+4B+4w)
êàêîé ðèñóíîê ÷àíêîâ äëÿ R-Mode? ïðîñòî ðàñòÿíóòü 4x4 ïî âåðòèêàëè âäâîå, à íà äðóãîì öâåòîâîì ñëîå ïóñêàòü òåêñòóðó ÷àíêîâ (ìîæíî è íîìåð ôðåéìà - íî íå òîëüêî íîìåð ôðåéìà) â äðóãîé ôàçå? Ïî èäåå äëÿ øóìîâûõ ÷àíêîâ ýòî íå ñèëüíî èñïîðòèò ðèñóíîê
ìîæíî ïðîñòî îáû÷íóþ øòðèõîâêó íà îáû÷íîì R-Mode, âñ¸ ðàâíî òàì âñ¸ íà ÷¸ðíîì ôîíå

èëè ìîæíî íà 128Ê íåïîëíûé öâåò: äâà ñëîÿ 4R(M)+4G çà 8 ôðåéìîâ áåç ìåðöàíèÿ, ïðè ñòàðîì ðèñóíêå øòðèõîâêè.
èëè ìîæíî íà 128Ê áåç ìåðöàíèÿ çà 12 ôðåéìîâ (íà Òàéìåêñå çà 8 ôðåéìîâ, íà 128Ê ìîæíî è çà 2, åñëè ïðîñòî ïåðåáðàñûâàòü ýêðàíû, êîòîðûå çàéìóò 96Ê+6..12Ê ïåðåáðîñ÷èê, â çàâèñèìîñòè îò ñîîòíîøåíèÿ êîëè÷åñòâ pop:ld (),hl è LDI) ÒÆÐÈ ñëîÿ 4R+4G+4B, â ñëåäóþùåì ïîðÿäêå (ïîëîâèíà ïðîöåññîðíîãî âðåìåíè â ýêðàíå ñâîáîäíî, ò.å. ïîä c2p ñâîáîäíî 48000 òàêòîâ), ïðè ñòàðîì ðèñóíêå øòðèõîâêè:
 ïåðâàÿ çíàêîìåñòíàÿ ñòðîêà:
- R screen1 (c2p)
- G screen0, îáíîâëÿåì àòðèáóò screen0
- B screen0, îáíîâëÿåì àòðèáóò screen0 (ðàçðåøàåòñÿ íå óñïåòü)
- R screen1 (c2p)
- G screen0, îáíîâëÿåì àòðèáóò screen0
- B screen0, îáíîâëÿåì àòðèáóò screen0 (ðàçðåøàåòñÿ íå óñïåòü)
- R screen1 (c2p)
- G screen0 (c2p)
 âòîðàÿ çíàêîìåñòíàÿ ñòðîêà:
- B screen1 (c2p)
- R screen0, îáíîâëÿåì àòðèáóò screen0
- G screen0, îáíîâëÿåì àòðèáóò screen0 (ðàçðåøàåòñÿ íå óñïåòü)
- B screen1 (c2p)
- R screen0, îáíîâëÿåì àòðèáóò screen0
- G screen0, îáíîâëÿåì àòðèáóò screen0 (ðàçðåøàåòñÿ íå óñïåòü)
- B screen1 (c2p)
- R screen0 (c2p)
 è ò.ä.
Ìîæíî ãåíåðèòü 16 êîïèé ýêðàíà ïðÿìî â 3D ðåíäåðå (îí áóäåò â íèæíåì áîðäþðå, à îáíîâëåíèå çà 3 ôðåéìà)
 
äëÿ ñòàòè÷íîé êàðòèíêè ìîæíî ïî 4 ïèêñåëÿ â áàéòå (íàéòè 256 íóæíûõ êîìáèíàöèé) - ýòî êàê ìèíèìóì íå õóæå 64ö:
        pop bc ;4pix + 4pix
        ld l,b
        ld b,framepluspixelnumberRN
        ld a,(bc) ;%abcd0000
        or (hl)   ;%0000efgh
        ld (de),a
        inc e (d?)
;46 t/b (3 ôðåéìà íà ýêðàí), 16*2*256 = 8K òàáëèö, ýêðàí 12K - ìîæíî íà 48K
êàê íàéòè êîìáèíàöèè ïî 4 ïèêñ (âûáðàòü 256 èç áîëåå 65536)? íàäî íå ïðîñòî ðàíäîìû - áóäåò øóì
íàäî êàê ìèíèìóì íàáîð ïëàâíûõ öâåòîïåðåõîäîâ (17ñëåâà * 17ñïðàâà = óæå áîëåå 256!) è íàáîð ò¸ìíûõ è ñâåòëûõ ïÿòåí ðàçíîãî ðàçìåðà íà ðàçíûõ ôîíàõ â ðàçíûõ ìåñòàõ
åù¸ ÷àñòî íàäî òèïà _/ èëè \_ (âîçìîæíî, è /- èëè -\)
ïðîéòè ïî êàðòèíêàì è íàéòè ÷àñòûå? áóäåò ìíîãî áëèçêèõ! îòñåêàòü ïî óðîâíþ îøèáêè? ïðè÷¸ì êàê-òî îòäàâàòü ïðåäïî÷òåíèå âàðèàíòàì áåç øóìîâûõ âûáðîñîâ
èëè ïðîùå ñîñòàâèòü âðó÷íóþ?
íà÷àòü ñ 17 áàçîâûõ ñïëîøíûõ öâåòîâ, îñòàëüíûå èñêàòü àâòîìàòîì
ïðè íàõîæäåíèè ëó÷øåé êîìáèíàöèè èç îñòàâøèõñÿ ó÷èòûâàòü áëèçêèå ñîâïàäåíèÿ (ñ îøèáêàìè +-1 ïî âñåì îñÿì) è óäàëÿòü å¸ (äëÿ ïîèñêà ñëåäóþùåé ëó÷øåé) âìåñòå ñ íèìè

á) ôèëüòðàöèÿ áèòïëàíîâ ïî øóìîâîé ìàñêå - íàäî îáÿçàòåëüíî óñïåòü çà ôðåéì, èíà÷å âûãëÿäèò êàê êàøà (è äàæå çà ôðåéì âûãëÿäèò õóæå, ÷åì ïî òàáëèöå çà 3 ôðåéìà)
â êàæäîì áèòïëàíå îäèí áèò öâåòà (ñòàðøèé...ìëàäøèé)
ìàñêè ñîñòàâëåíû òàê, ÷òî âåðîÿòíîñòü åäèíèöû â N1 âäâîå âûøå åäèíèöû â N2, à òàì âäâîå âûøå, ÷åì â N3, à òàì âäâîå âûøå, ÷åì â N4, à â ñóììå %11111111
???ìîæíî ëè ïîëó÷èòü ïîäîáèå ÷àíêîâîé øòðèõîâêè???
çà ôðåéì ìîæíî âçÿòü òîëüêî îäèí áèò êîíêðåòíîãî ïèêñåëÿ!!! òàê ÷òî òàê êðàñèâî, êàê ïî òàáëèöàì, íå ïîëó÷èòñÿ!

ïóñòü ó ïèêñåëÿ áèòû 3210, áèò 3 áåð¸òñÿ ÷àùå âñåãî (â ïîëîâèíå ñëó÷àåâ)
ôðåéì1:
3232
13.3
3232
.313
ôðåéì2:
2323
3.31
2323
313.
ôðåéì3:
313.
2323
3.31
2323
ôðåéì4:
.313
3232
13.3
3232
ôðåéì5:
3232
.313
3232
13.3
ôðåéì6:
2323
313.
2323
3.31
ôðåéì7:
3.31
2323
313.
2323
ôðåéì8:
13.3
3232
.313
3232
Åñëè â òî÷êàõ áèò0, òî áóäåò âñåãî 9 óðîâíåé ÿðêîñòè âìåñòî 16
Åñëè â îäíîé òî÷êå áèò0, à äðóãàÿ âñåãäà ïóñòàÿ, òî íå ïîëó÷èòñÿ ñóììà %11111111
 îäíîé òî÷êå áèò0, à â äðóãîé áèò3?


[        pop bc
        ld a,c
        and N1
        ld c,a
        ld a,b
        and N2
        or c
        ld (hl),a
        pop bc
        ld a,c
        and N3
        or (hl)
        ld c,a
        ld a,b
        and N4
        or c
        ld (de),a
        inc e
;105 t/b]
[èëè
        ld a,(hl)
        inc l
        and c;N1
        ld d/e,a
        ld a,(hl)
        inc l
        and b;N2
        or d/e
        ld d/e,a
        ld a,(hl)
        inc l
        and N3
        or d/e
        ld d/e,a
        ld a,(hl)
        inc l
        and N2
        or d/e
        ld d/e,a
        1/2*push de
;99.5/105.5 t/b]
[èëè
        ld a,(hl)
        inc l
        xor (hl)
        and c;N1
        xor (hl)
        inc l
        xor (hl)
        and b;N2
        xor (hl)
        inc l
        xor (hl)
        and N3
        xor (hl)
        inc l
        ld d/e,a
        1/2*push de
;89.5 t/b (and e...push af:inc sp íå äàñò âûèãðûøà, à 16 êîïèé ïîëíûõ ýêðàíîâ ld (...),a íåðåàëüíî ïî ïàìÿòè)]
èëè
        pop bc
        ld a,c
        xor b
        and l;N1
        xor b
        pop bc
        xor c
        and h;N2
        xor c
        xor b
        and N3
        xor b
        ld (de),a
        inc e
;74 t/b (ìîæíî 73 t/b, åñëè and e...ld (...),a)
16 óðîâíåé ÿðêîñòè
test_rndnoise.scl - ñëó÷àéíûé øóì (ìàêñèìóì, ÷åãî ìîæíî äîáèòüñÿ ôèëüòðàöèåé áèòïëàíîâ ïî ìàñêå)
test_rndframeshift.scl - ñëó÷àéíîå ïåðåìåøèâàíèå 16 ôðåéìîâ ñ ðàçíûì ïîðîãîì (ïî÷åìó-òî âûãëÿäèò õóæå, øåâåëåíèå ìåäëåííåå)
test_rndxyframeshift.scl - òî æå, íî ê random ïðèáàâëåíî x+y (ðàçíèöû ñ ïðåäûäóùèì íå âèäíî)
test_xyframeshift.scl - âìåñòî øóìà òîëüêî pixel > (frame+x+y)&0xf
test_chunk.scl - ñòàíäàðòíûå ÷àíêè âìåñòî x+y (âûãëÿäèò íå î÷åíü ÷èñòî - ïîÿâëÿþòñÿ ïîëîñêè)
test_woolchunk.scl - øóìîâûå ÷àíêè âìåñòî x+y (âûãëÿäèò ëó÷øå âñåãî), ñìîòðèáåëüíî äàæå ïðè ïåðåêëþ÷åíèè çà 3 ôðåéìà
        pixel > frame+achunkpixelnumber[pixelnumber])&0x0f

ïîðÿäîê ïîêàçà ñòàíäàðòíûõ ÷àíêîâ ïðåäïî÷òèòåëüíî õîäîì êîíÿ (÷òîáû ìåíÿëàñü ôàçà 50% øòðèõîâêè íà êàæäîì êàäðå)

ëó÷øàÿ øòðèõîâêà äëÿ R-Mode øóìîâàÿ ñ ïîñòîÿííûì ñäâèãîì ÷åðåç çíàêîìåñòî:
        bit 0,d
        jr z,drawnoise_skipnewphase ;for R-Mode
        ld a,h
         cp rebyte/256+16 -(4*2)
         jr c,$+4
          sub 16
         add a,4*2
        ld h,a        
drawnoise_skipnewphase       
        inc d
        ld a,d
        and 7
        jp nz,drawnoisenchr
        ld a,h
         cp rebyte/256+16 -(1*2)
         jr c,$+4
          sub 16
         add a,1*2
        ld h,a        
        ...
drawnoisenchr

        
Êàê ïîñ÷èòàòü ýòó ôîðìóëó â realtime? æåëàòåëüíî åù¸ ñ ðåãóëèðîâêîé ÿðêîñòè
frame+achunkpixelnumber[pixelnumber] ìîæíî çàìåíèòü íà achunkpixelnumber[frame, pixelnumber] è äàæå âáèòü â èííåëóï êîíñòàíòàìè

Ñðàâíåíèå ïî 1 ïèêñåëþ - ìåäëåííî
òàáëèöà ñðàâíåíèÿ: scrpixel = achunkscrpixel[pixel(4), frame(4), pixelnumber(4)] - èòîãî àäðåñ 12 áèò
ñäåëàòü ñðàçó íåñêîëüêî ïèêñåëåé ïî òàêîé òàáëèöå íå ïîëó÷èòñÿ
áëîê èç 8 ïèêñåëåé = 32 áèòà
íî ðåàëüíî frame+pixelnumber = 4 áèòà çàõàðäêîæåííûõ, òàê ÷òî àäðåñ 8 áèò - ìîæíî áðàòü ïî 2 ïèêñ.

à) pixel > frame+achunkpixelnumber[pixelnumber])&0x0f
;8 ïèêñåëåé abcdefgh ïîëíîñòüþ ïåðåïóòàíû - ðèñîâàòü â òàêîé ýêðàí íåóäîáíî
        pop bc ;%ccccggggddddhhhh
        ld l,b
        ld b,framepluspixelnumber1
        ld h,framepluspixelnumber2
        ld a,(bc) ;%d000h000
        rrca      ;%0d000h00
        or (hl)   ;%cd00gh00
        rrca      ;%0cd00gh0
        pop bc ;%aaaaeeeebbbbffff
        ld l,c
        ld h,framepluspixelnumber3
        or (hl)   ;%bcd0fgh0
        rrca      ;%0bcd0fgh
        ld l,b
        ld h,framepluspixelnumber4
        or (hl)   ;%abcdefgh
        ld (de),a
        inc e (d?)
;111 t/b (ìîæíî 99 t/b áåç rrca, åñëè 4 êîïèè òàáëèö, èòîãî 16Ê, ñ óäîáíûì ïîðÿäêîì ïèêñåëåé)
â ÷àñòè ñëó÷àåâ åù¸ óñêîðåíèå çà ñ÷¸ò inc/dec h âìåñòî ld h
ìîæíî çàõàðäêîäèòü ñìåíó ÿðêîñòè ÷åðåç òå æå òàáëèöû, íî áðàòü òàáëèöû â äðóãîì ïîðÿäêå?

áåç ÿðêîñòè ïðîöåäóðû âûâîäà çàéìóò íåìíîãî (16 ôðåéìîâ ïî 4 íåïîëíûõ ñòðîêè 19- èëè 22- b/b, èòîãî ìîæíî 1.5Ê)
ñàì ýêðàí çàéì¸ò 24Ê, íàäî â âåðõíåé ïàìÿòè, èíà÷å âñÿ íèæíÿÿ ïàìÿòü çàíÿòà ýêðàíîì+òàáëèöàìè
íà 48Ê ìîæíî ñäåëàòü ñ íåóäîáíûì ïîðÿäêîì ïèêñåëåé ãåíåðàöèþ ýêðàíîâ (ò.ê. õðàíèòü ýêðàíû íåãäå), íàïðèìåð, 3D ðåíäåð (à êàê êîìïàêòíî õðàíèòü ñöåíû? äëÿ ìåøåé è òåêñòóð ìåñòà òî÷íî íåò, íî â äðåâíîñòè äåëàëè 3D ñïëàéíû - êàê? åù¸ íóæíî ïðîçðà÷íîñòü)

÷òîáû óñïåòü çà 3 ôðåéìà, íàäî 34 t/b, à ó íàñ òóò ïîëó÷èòñÿ 8(ñ íåóäîáíûì ïîðÿäêîì 10) ôðåéìîâ! ïðè ýòîì âèäíî ïðîðèñîâêó, íàäî îáíîâëÿòü ïîëîñêàìè èëè ïñåâäîñëó÷àéíûìè êâàäðàòèêàìè?

íà 128Ê ìîæíî íà 2 ýêðàíàõ ñäåëàòü R-Mode èëè ïðîñòî 4 öâåòîâûõ ñëîÿ, òîãäà îáíîâëåíèå áóäåò çà 16 ôðåéìîâ, çàòî â ïîëíîì öâåòå (4R+4G+4B+4w)
êàêîé ðèñóíîê ÷àíêîâ äëÿ R-Mode? ïðîñòî ðàñòÿíóòü 4x4 ïî âåðòèêàëè âäâîå, à íà äðóãîì öâåòîâîì ñëîå ïóñêàòü òåêñòóðó ÷àíêîâ (ìîæíî è íîìåð ôðåéìà - íî íå òîëüêî íîìåð ôðåéìà) â äðóãîé ôàçå? Ïî èäåå äëÿ øóìîâûõ ÷àíêîâ ýòî íå ñèëüíî èñïîðòèò ðèñóíîê
ìîæíî ïðîñòî îáû÷íóþ øòðèõîâêó íà îáû÷íîì R-Mode, âñ¸ ðàâíî òàì âñ¸ íà ÷¸ðíîì ôîíå

èëè ìîæíî íà 128Ê íåïîëíûé öâåò: äâà ñëîÿ 4R(M)+4G çà 8 ôðåéìîâ áåç ìåðöàíèÿ, ïðè ñòàðîì ðèñóíêå øòðèõîâêè.
èëè ìîæíî íà 128Ê áåç ìåðöàíèÿ çà 12 ôðåéìîâ (íà Òàéìåêñå çà 8 ôðåéìîâ, íà 128Ê ìîæíî è çà 2, åñëè ïðîñòî ïåðåáðàñûâàòü ýêðàíû, êîòîðûå çàéìóò 96Ê (åñëè 16 îäèíàðíûõ ýêðàíîâ) +6..12Ê ïåðåáðîñ÷èê, â çàâèñèìîñòè îò ñîîòíîøåíèÿ êîëè÷åñòâ pop:ld (),hl è LDI) ÒÆÐÈ ñëîÿ 4R+4G+4B, â ñëåäóþùåì ïîðÿäêå (ïîëîâèíà ïðîöåññîðíîãî âðåìåíè â ýêðàíå ñâîáîäíî, ò.å. ïîä c2p ñâîáîäíî 48000 òàêòîâ), ïðè ñòàðîì ðèñóíêå øòðèõîâêè:
 ïåðâàÿ çíàêîìåñòíàÿ ñòðîêà:
- R screen1 (c2p)
- G screen0, îáíîâëÿåì àòðèáóò screen0
- B screen0, îáíîâëÿåì àòðèáóò screen0 (ðàçðåøàåòñÿ íå óñïåòü)
- R screen1 (c2p)
- G screen0, îáíîâëÿåì àòðèáóò screen0
- B screen0, îáíîâëÿåì àòðèáóò screen0 (ðàçðåøàåòñÿ íå óñïåòü)
- R screen1 (c2p)
- G screen0 (c2p)
 âòîðàÿ çíàêîìåñòíàÿ ñòðîêà:
- B screen1 (c2p)
- R screen0, îáíîâëÿåì àòðèáóò screen0
- G screen0, îáíîâëÿåì àòðèáóò screen0 (ðàçðåøàåòñÿ íå óñïåòü)
- B screen1 (c2p)
- R screen0, îáíîâëÿåì àòðèáóò screen0
- G screen0, îáíîâëÿåì àòðèáóò screen0 (ðàçðåøàåòñÿ íå óñïåòü)
- B screen1 (c2p)
- R screen0 (c2p)
 è ò.ä.
Ìîæíî ãåíåðèòü 16 êîïèé ýêðàíà ïðÿìî â 3D ðåíäåðå (îí áóäåò â íèæíåì áîðäþðå, à îáíîâëåíèå çà 3 ôðåéìà)
íî ýòî R-Mode48, à îí âûãëÿäèò ïëîõî.
åñëè ôàçû RGB áóäóò áåæàòü, òî áûëî áû õîðîøî, íî íå óñïååì îáíîâèòü ýêðàí çà ôðåéì!

äëÿ ñòàòè÷íîé êàðòèíêè ìîæíî ïî 4 ïèêñåëÿ â áàéòå (íàéòè 256 íóæíûõ êîìáèíàöèé) - ýòî êàê ìèíèìóì íå õóæå 64ö:
        pop bc ;4pix + 4pix
        ld l,b
        ld b,framepluspixelnumberRN
        ld a,(bc) ;%abcd0000
        or (hl)   ;%0000efgh
        ld (de),a
        inc e (d?)
;46 t/b (3 ôðåéìà íà ýêðàí), 16*2*256 = 8K òàáëèö, ýêðàí 12K - ìîæíî íà 48K
êàê íàéòè êîìáèíàöèè ïî 4 ïèêñ (âûáðàòü 256 èç áîëåå 65536)? íàäî íå ïðîñòî ðàíäîìû - áóäåò øóì
íàäî êàê ìèíèìóì íàáîð ïëàâíûõ öâåòîïåðåõîäîâ (17ñëåâà * 17ñïðàâà = óæå áîëåå 256!) è íàáîð ò¸ìíûõ è ñâåòëûõ ïÿòåí ðàçíîãî ðàçìåðà íà ðàçíûõ ôîíàõ â ðàçíûõ ìåñòàõ
åù¸ ÷àñòî íàäî òèïà _/ èëè \_ (âîçìîæíî, è /- èëè -\)
ïðîéòè ïî êàðòèíêàì è íàéòè ÷àñòûå? áóäåò ìíîãî áëèçêèõ! îòñåêàòü ïî óðîâíþ îøèáêè? ïðè÷¸ì êàê-òî îòäàâàòü ïðåäïî÷òåíèå âàðèàíòàì áåç øóìîâûõ âûáðîñîâ
èëè ïðîùå ñîñòàâèòü âðó÷íóþ?
íà÷àòü ñ 17 áàçîâûõ ñïëîøíûõ öâåòîâ, îñòàëüíûå èñêàòü àâòîìàòîì
ïðè íàõîæäåíèè ëó÷øåé êîìáèíàöèè èç îñòàâøèõñÿ ó÷èòûâàòü áëèçêèå ñîâïàäåíèÿ (ñ îøèáêàìè +-1 ïî âñåì îñÿì) è óäàëÿòü å¸ (äëÿ ïîèñêà ñëåäóþùåé ëó÷øåé) âìåñòå ñ íèìè

/*
á) ôèëüòðàöèÿ áèòïëàíîâ ïî øóìîâîé ìàñêå - íàäî îáÿçàòåëüíî óñïåòü çà ôðåéì, èíà÷å âûãëÿäèò êàê êàøà (è äàæå çà ôðåéì âûãëÿäèò õóæå, ÷åì ïî òàáëèöå çà 3 ôðåéìà)
â êàæäîì áèòïëàíå îäèí áèò öâåòà (ñòàðøèé...ìëàäøèé)
ìàñêè ñîñòàâëåíû òàê, ÷òî âåðîÿòíîñòü åäèíèöû â N1 âäâîå âûøå åäèíèöû â N2, à òàì âäâîå âûøå, ÷åì â N3, à òàì âäâîå âûøå, ÷åì â N4, à â ñóììå %11111111
???ìîæíî ëè ïîëó÷èòü ïîäîáèå ÷àíêîâîé øòðèõîâêè???
çà ôðåéì ìîæíî âçÿòü òîëüêî îäèí áèò êîíêðåòíîãî ïèêñåëÿ!!! òàê ÷òî òàê êðàñèâî, êàê ïî òàáëèöàì, íå ïîëó÷èòñÿ!

ïóñòü ó ïèêñåëÿ áèòû 3210, áèò 3 áåð¸òñÿ ÷àùå âñåãî (â ïîëîâèíå ñëó÷àåâ)
ôðåéì1:
3232
13.3
3232
.313
ôðåéì2:
2323
3.31
2323
313.
ôðåéì3:
313.
2323
3.31
2323
ôðåéì4:
.313
3232
13.3
3232
ôðåéì5:
3232
.313
3232
13.3
ôðåéì6:
2323
313.
2323
3.31
ôðåéì7:
3.31
2323
313.
2323
ôðåéì8:
13.3
3232
.313
3232
Åñëè â òî÷êàõ áèò0, òî áóäåò âñåãî 9 óðîâíåé ÿðêîñòè âìåñòî 16
Åñëè â îäíîé òî÷êå áèò0, à äðóãàÿ âñåãäà ïóñòàÿ, òî íå ïîëó÷èòñÿ ñóììà %11111111
 îäíîé òî÷êå áèò0, à â äðóãîé áèò3?


[        pop bc
        ld a,c
        and N1
        ld c,a
        ld a,b
        and N2
        or c
        ld (hl),a
        pop bc
        ld a,c
        and N3
        or (hl)
        ld c,a
        ld a,b
        and N4
        or c
        ld (de),a
        inc e
;105 t/b]
[èëè
        ld a,(hl)
        inc l
        and c;N1
        ld d/e,a
        ld a,(hl)
        inc l
        and b;N2
        or d/e
        ld d/e,a
        ld a,(hl)
        inc l
        and N3
        or d/e
        ld d/e,a
        ld a,(hl)
        inc l
        and N2
        or d/e
        ld d/e,a
        1/2*push de
;99.5/105.5 t/b]
[èëè
        ld a,(hl)
        inc l
        xor (hl)
        and c;N1
        xor (hl)
        inc l
        xor (hl)
        and b;N2
        xor (hl)
        inc l
        xor (hl)
        and N3
        xor (hl)
        inc l
        ld d/e,a
        1/2*push de
;89.5 t/b (and e...push af:inc sp íå äàñò âûèãðûøà, à 16 êîïèé ïîëíûõ ýêðàíîâ ld (...),a íåðåàëüíî ïî ïàìÿòè)]
èëè
        pop bc
        ld a,c
        xor b
        and l;N1
        xor b
        pop bc
        xor c
        and h;N2
        xor c
        xor b
        and N3
        xor b
        ld (de),a
        inc e
;74 t/b (ìîæíî 73 t/b, åñëè and e...ld (...),a)
*/




×òîáû ïîêàçûâàòü â R-Mode, íàäî õðàíèòü (rebyte ðàçíûå äëÿ äâóõ ñëîåâ, ìîæíî îáúåäèíèòü, åñëè ïåðåïèñàòü ãåíåðàòîð, íî âûèãðûø ïî ïàìÿòè ìàëåíüêèé):
repic (0x3000) - 0xd000 èëè ÷óòü íèæå (äîëæíî ëåæàòü â fastmem)
rebyte (0x2000) - 0x6000 (slowmem)
repic1 (0x3000) - 0x9000 (äîëæíî ëåæàòü â fastmem)
rebyte1 (0x2000) - äîëæíî ëåæàòü â pg7 (slowmem) 0xe000
è ñãåíåðèðîâàòü â lowmem 4 âûâîäà àòðèáóòîâ (êàæäûé ïî 0x180+êîïåéêè)
èç íèõ â êàæäîì ôðåéìå áóäåì âûçûâàòü 2 (ïî ïðåðûâàíèþ?)
êîä 0x8000,0x1000
åù¸ ñâîáîäíû ñòðàíèöû

âî âðåìÿ çàãðóçêè (êàðòèíêà â mlz, ïðèìåðíî 24K, ñ àäðåñà 0x8000..0x8fff):
rebyte1.mlz -> pg7 rebyte1 (0xe000)
ïåðåãîíÿåì âåñü óïàêîâàííûé áëîê â êîíåö ïàìÿòè
rebyte.mlz -> rebyte (0x6000)
repic1.mlz -> repic1 (0x9000)
repic.mlz -> repic (0xd000 èëè ÷óòü íèæå)


âûâîä íàäî ïðèâÿçàòü ê ïðåðûâàíèþ, ò.ê. íàäî âñ¸ âðåìÿ ïåðåêëþ÷àòü ñòðàíèöû
ñêîëüêî ñòðîê óñïååì îáíîâèòü? scr0 è scr1 ìîæíî îáíîâëÿòü íåçàâèñèìî, ýòî íè íà ÷òî íå âëèÿåò

        pop bc ;4pix + 4pix ;slowmem
        ld l,c
        ld a,(hl) ;%abcd0000
        inc h
        ld l,b
        or (hl)   ;%0000efgh
        ld (de),a ;slowmem
        inc e ;47
        pop bc ;4pix + 4pix ;slowmem
        ld l,b
        ld a,(hl) ;%0000efgh
        dec h
        ld l,c
        or (hl)   ;%abcd0000
        ld (de),a ;slowmem
        inc e ;+47 = 94t/äâà áàéòà
ðåàëüíî ýòî âûâîä èç slowmem â slowmem, òàê ÷òî äîïîëíèòåëüíûå òîðìîçà (6 áàéò slowmem)
âëåçåò ëè äâà òàêèõ öèêëà â ñòðî÷êó + ïåðåêëþ÷åíèå? 188t
ìîæíî íå ñëåäèòü, ÷òîáû íå ïîðòèëñÿ bc, ò.ê. ïðåðûâàíèå ñëó÷àéíî íå âîçíèêíåò
        ld a,0x5x
        out (0xfd),a ;+18t - ýòî íàäî äåëàòü íà êàæäîé ñòðîêå äëÿ R-Mode, íî íàäî ó÷åñòü, êàêàÿ ñåé÷àñ äîëæíà áûòü ïàãà - 0 èëè 7
        ;èëè exx:out (c),d/e:exx = 20t, ìîæíî âñòàâèòü àáñîëþòíî â ëþáîì ìåñòå
èòîãî 206t + wait (12 áàéò slowmem, èç íèõ 6 íà áîðäåðå, êîòîðûé 100t íà +2)
òåîðåòè÷åñêè ìîæåì íå âïèñàòüñÿ
à íàäî åù¸ ïåðåñòàíîâêó de
ïðè÷¸ì ýòî äîëæíî áûòü â öèêëå, ÷òîáû íå ãåíåðèòü ðàçâ¸ðíóòî êèëîáàéòàìè
ïåðåñòàíîâêó de ìîæíî ïðÿìî â êàðòèíêå (+1 pop âìåñòî ïîñëåäíåãî inc e)
åñëè âïèøåìñÿ, òî îäíà ñòðîêà îäíîãî ýêðàíà îáíîâëÿåòñÿ çà 32/4 = 8 ñòðîê ðàñòðà
äàæå åñëè íå èñïîëüçîâàòü îñòàòîê âåðõíåãî áîðäåðà è íèæíèé áîðäåð, òî îáíîâèì çà 16 ôðåéìîâ (çà 1 ôðåéì âûâîäèì 24 ñòðîêè îäíîãî ýêðàíà)
åñëè èñïîëüçîâàòü íèæíèé áîðäåð (48+23=71 ñòðîêà ðàñòðà, áåç âàéòîâ ñ÷èòàé êàê 72?), òî ìîæíî çà <=12 ôðåéìîâ (çà 1 ôðåéì âûâîäèì 32-33 ñòðîêè îäíîãî ýêðàíà)
íà ïåíòàãîíå íàäî ÷àñòè÷íî èñïîëüçîâàòü âåðõíèé!!!

âðåìÿ âûâîäà àòðèáóòîâ â âåðõíåì áîðäåðå = 768*2*5.5 = 8448 (èç 14362), ò.å. >37 ñòðîê ðàñòðà, ñâîáîäíî <11 ñòðîê ðàñòðà íà +2
äåëàåì ðàñ÷¸ò ëèíèè äëÿ +2:
;+112
         exx
         out (c),d/e ;screen change at +128 (nowait)
         exx
         inc e:inc bc / pop de ;for end of line
;+142
        pop bc ;4pix + 4pix ;fastmem
        ld l,c
        ld a,(hl) ;%abcd0000 ;slowmem (nowait)
        inc h
        ld l,b
        or (hl)   ;%0000efgh ;slowmem (nowait)
        ld (de),a ;slowmem
        inc e ;47
;+189
        pop bc ;4pix + 4pix
        ld l,b
        ld a,(hl) ;%0000efgh ;slowmem (nowait)
        ld l,c
;+214
        dec h
        or (hl)   ;%abcd0000 ;slowmem (nowait)
         pop bc ;4pix + 4pix ;!!!!!!!
;+235 = +9
        ld (de),a ;slowmem (write at t-state +16)
;+16
        inc e
        ld l,c
;+24
        ld a,(hl) ;%abcd0000 ;slowmem (+32(31))
;+32
        inc h
        ld l,b
;+40
        or (hl)   ;%0000efgh ;slowmem (+48(47))
;+48
        ld (de),a ;slowmem (write at t-state +56(55))
;+56
        pop bc ;4pix + 4pix
;+66
         inc e
         nop ;!!!!!!!!!!!!!!!
        ld l,b
;+78
        ld a,(hl) ;%0000efgh ;slowmem (+88(85))
;+88
        dec h
        ld l,c
;+96
        or (hl)   ;%abcd0000 ;slowmem (+104(103))
;+104
        ld (de),a ;slowmem (write at t-state +112(111))
;+112

Òî åñòü èç-çà âàéòîâ âñåãî ïîòåðÿëè 3+5+3 = 11 òàêòîâ

À êàê çàöèêëèòü (õîòÿ áû ñ êîäîì íà îäíî çíàêîìåñòî âûñîòû, íî íå íà âåñü ýêðàí òî÷íî)?
åù¸ îäíî ñëîâî èç ñòåêà ìû ÷èòàòü íå ìîæåì
Ïîêà âûðèñîâûâàåòñÿ òîëüêî òàêîé âàðèàíò:
- çà ôðåéì âûâîäèì ÐÎÂÍÎ 32 ñòðîêè ïî ïîðÿäêó ýêðàííûõ àäðåñîâ, òàê ÷òî pop de íå äåëàåì (èíà÷å áû ïðèøëîñü äåëàòü)
- jp nz òîëüêî íà êàæäîé âòîðîé ñòðîêå, âòîðàÿ ñòðîêà ñòàðòóåò ðàíüøå ïåðâîé
- äåëàåì inc d, êîãäà êîí÷àåòñÿ e (4 òàêòà äëÿ ýòîãî åñòü)
- ïîòîì íîâàÿ êîïèÿ òåëà öèêëà
êàê ïðè òàêîì ðèñîâàíèè íå ïîäðÿä ïî ñòðîêàì èçîáðàçèòü ëó÷øóþ øòðèõîâêó?
äîïóñòèì, ÷òî 16 ñòðîê (8+8) îòðèñóþòñÿ ñ îäíèì è òåì æå h - ýòî íîðìàëüíî (íî ýòî íå ëó÷øàÿ øòðèõîâêà, ò.ê. íåò ñäâèãà êàæäîå çíàêîìåñòî)
íî êàê âîòêíóòü êîä ñìåíû h äëÿ ñëåäóþùèõ 32 ñòðîê?
âîòêíóòü ld h,N ïîñëå âòîðîé êîïèè òåëà öèêëà??? íî ó íàñ òîëüêî 3 òàêòà! íàäî òàêîé öèêë, êîòîðûé ìîæíî ñäâèíóòü íà +8 òàêòîâ!
[èëè ïîñëå ñìåíû h ñäåëàòü îäèí ïðîõîä íå öèêëîì?
òî åñòü áóäåò 5 òåë öèêëà:
<body>
jr nz
inc d
<body>
jr nz
inc d
ld h,
<body> - âåðñèÿ, ñäâèíóòàÿ íà +7 òàêòîâ
<body>
jr nz
inc d
<body>
jr nz]

mcloop
;max +122 (119-1, 120-1 èëè 126-1 (ld h,N))
         exx
         out (c),d ;screen change at +138 (nowait)
         exx
;+142
        pop bc ;4pix + 4pix
        ld l,c
        ld a,(hl) ;%abcd0000 ;slowmem
        inc h
        ld l,b
        or (hl)   ;%0000efgh ;slowmem
        ld (de),a ;slowmem
;+185
        pop bc ;4pix + 4pix
        ld l,b
        ld a,(hl) ;%0000efgh ;slowmem
        ld l,c
;+210
        inc e
        dec h
        or (hl)   ;%abcd0000 ;slowmem
         pop bc ;4pix + 4pix ;!!!!!!!!!
;+235 = +7
        ld (de),a ;slowmem (write at t-state +16)
;+16
        inc e
        ld l,c
        ld a,(hl) ;%abcd0000 ;slowmem
        inc h
        ld l,b
        or (hl)   ;%0000efgh ;slowmem
;+48
        ld (de),a ;slowmem (write at t-state +56(55))
;+56
        pop bc ;4pix + 4pix
;+66
        inc e
         nop ;!!!!!!!!!!!!!!!
        ld l,b
        ld a,(hl) ;%0000efgh ;slowmem
        dec h
        ld l,c
        or (hl)   ;%abcd0000 ;slowmem
;+104
        ld (de),a ;slowmem (write at t-state +112(111))
;+112
;-----------------
         inc e
         exx
         out (c),e ;screen change at +132 (nowait) - íåëüçÿ ñäâèíóòü íàçàä!
         exx
;+136
        pop bc ;4pix + 4pix
        ld l,c
        ld a,(hl) ;%abcd0000 ;slowmem
        inc h
        ld l,b
        or (hl)   ;%0000efgh ;slowmem
        ld (de),a ;slowmem
        inc e ;47
;+183
        pop bc ;4pix + 4pix
        ld l,b
        ld a,(hl) ;%0000efgh ;slowmem
        ld l,c
;+208
        dec h
        or (hl)   ;%abcd0000 ;slowmem
         pop bc ;4pix + 4pix
;+229 = +1
        ld (de),a ;slowmem (write at t-state +8)
;+8
        inc e
        ld l,c
        ld a,(hl) ;%abcd0000 ;slowmem
        inc h
        ld l,b
        or (hl)   ;%0000efgh ;slowmem
;+40
        ld (de),a ;slowmem (write at t-state +48(47))
;+48
        pop bc ;4pix + 4pix
;+58
        inc e
         nop ;!!!!!!!!!!!!!!!
        ld l,b
        ld a,(hl) ;%0000efgh ;slowmem
        dec h
        ld l,c
        or (hl)   ;%abcd0000 ;slowmem
;+96
        ld (de),a ;slowmem (write at t-state +104(103))
;+104
         inc e
         jr nz,mcloop ;+120
;+115
        inc d
;+119
        ...


Çà îäèí ôðåéì ìû âûâîäèì òîëüêî â îäíó ýêðàííóþ îáëàñòü (ïîëîâèíà ñòðîê íåâèäèìûå)
R-Mode (ìèãàåò 2 ýêðàíà):

íà êàæäîì ýêðàíå ÷åðåäóþòñÿ ïî 2 ñòðîêè àòðèáóòîâ:
frame1: W (îïòèìèçèðóåòñÿ), G/M/C
frame2: B/Y (îïòèìèçèðóåòñÿ ÷åðåç push:push:... (4 rp)), R/C/M
ò.å. ìîæíî âñå çàïèñè àòðèáóòîâ â âåðõíåì áîðäåðå:
768*10.5 + 768*5.5 = 12288 (55 ñòðîê ðàñòðà)
à âî âðåìÿ ýêðàíà òîëüêî ïåðåêëþ÷àòü ýêðàííûå ñòðàíè÷êè ÷åðåç ñòðî÷êó

ôîðìàò:
scr1 (6144 ñïðàéòîì) (ïåðâûé ôðåéì)
scr2 (6144 ñïðàéòîì) (âòîðîé ôðåéì)
attr1 (768) ;G/M/C - íèç(íå÷åò) ïåðâîãî ôðåéìà
attr2 (768) ;R/C/M - íèç(íå÷åò) âòîðîãî ôðåéìà
attr3 (768) ;B/Y - âåðõ(÷¸ò) âòîðîãî ôðåéìà
attr4 (768) ;W - âåðõ(÷¸ò) ïåðâîãî ôðåéìà
 - TODO ïðîñòî 3 áèòà àòðèáóòà íà çíàêîìåñòî
 
7 ïàëèòð:
MCYW (C,M,Y,w) - ìîæíî M,C,Y,w, ÷òîáû ó attr1 è attr2 áûëî âñåãî ïî äâà âàðèàíòà (îïòèìèçèðóåòñÿ ÷åðåç push:push:... (4 rp))
MRYW (M,R,Y,w)
GRYW (G,R,Y,w)
GCYW (G,C,Y,w)
GCBW (G,C,B,w)
MCBW (M,C,B,w)
MRBW (M,R,B,w)

Âñåãî íà êàðòèíêå âîçìîæíî öâåòîâ:
Òåîðåòè÷åñêè: (0G/0M/0C)*(0R/0C/0M) + (0B/0Y)*(0w) = 0/r/c/m/g/y(gr)/gc/w(gm,cr,w)/mr/mc/M/C + bw/yw = 14
Ðåàëüíî (7 ïàëèòð): 0/c/m/r/g/cm/rg/cg/rm + bw/yw/w = 12

Ìîæíî ëåãêî íàêëàäûâàòü ÷/á ñïðàéòû íà ñëîé W
Ó÷èòûâàÿ, ÷òî âñåãî 7 ïàëèòð, ìîæíî íàêëàäûâàòü ñïðàéòû ñ ëþáûìè öâåòàìè íà âñå ñëîè (â îòëè÷èå îò ìóëüòèêîëîðîâ, ãäå ìîæíî íàêëàäûâàòü òîëüêî îäíîöâåòíûå ñïðàéòû), íàäî òîëüêî ñìîòðåòü, êàêèå ñëîè çàäåéñòâîâàòü ïðè êàæäîé êîìáèíàöèè öâåò ïèêñåëÿ ñïðàéòà + àòðèáóò
Ïðàâäà, êðàñíûé ïðè ïàëèòðå GCBW âîîáùå íåëüçÿ áóäåò óâèäåòü, êðîìå êàê â âèäå áåëîãî (è ò.ï.)


R48-Mode (áåç ìèãàíèÿ):

÷åðåäóþòñÿ ïî 3 ñòðîêè àòðèáóòîâ, ñòðîêè 0-R(0-C), 0-G(0-M), 0-B(0-Y)
ñòðîêè àòðèáóòîâ âûâîäÿòñÿ ÷åðåç push:push:... (4 rp)

ôîðìàò:
scr1 (6144 ñïðàéòîì)
attr1 (6144 ñïðàéòîì) - ìîæíî ïðîñòî 3 áèòà àòðèáóòà íà çíàêîìåñòî 8x1

8 ïàëèòð:
RGB
RGY
RMB
RMY
CGB
CGY
CMB
CMY

Âñåãî íà êàðòèíêå âîçìîæíî 7 öâåòîâ (áåëûé íåâîçìîæåí)

Âûãëÿäèò õóæå, ÷åì .mc ñ îãðàíè÷åíèåì íà 8 ïàð àòðèáóòîâ íà ñòðî÷êó, íî èíîãäà ëó÷øå, ÷åì òîò æå .mc ñ bright only
Ê òîìó æå, ìîæíî íàêëàäûâàòü ñïðàéòû öâåò íà òî÷êó, êàê â R-Mode
åñëè ðàçðåøèòü ïîäãðóæàòü ñâîé øåäóëåð, òî ìîæíî ñäåëàòü òàêîé, êîòîðûé áóäåò ñîõðàíÿòü ëîã ïåðåêëþ÷åíèé è êîíòðîëÿ ðåñóðñîâ äëÿ ïîêàçà ãðàôèêà

A process consists of an address space, object handles, and one or more paths of execution (threads). Threads are used to perform work. For example, a thread can respond to interrupts and handle asynchronous process-related events in thread context. 

RTX timers are not synchronization objects which means threads cannot wait on an RTX timer handle. This is in contrast to the Windows waitable timer, which is an object on which a thread can wait, or against which a thread can receive notification.

event - îáúåêò ñèíõðîíèçàöèè. äåëàåò pulse (åãî æäóò ÷åðåç waitforsingleobject)


äîïóñòèì, ÷òî ñèñòåìà ñíà÷àëà áóäåò ïîñòàâëÿòüñÿ â âèäå êîìïèëÿöèè ÿäðà ñ ëîàäåðîì, ñöåíàðèÿ ðàáîòû è íàáîðà ïðîãðàìì
(äðóãîé âàðèàíò - â âèäå ñíàïøîòà)
ëîàäåð äîëæåí áûòü è â êîìïèëÿöèè "íåäîëàíã", ò.ê. íàäî çàïóñêàòü ñãåíåðèðîâàííûå ïðîãðàììû
à èç ñãåíåðèðîâàííûõ ïðîãðàìì äîëæåí áûòü âûõîä, ïðè ýòîì ðåäàêòîð è òåêñòû íå äîëæíû ïåðåçàãðóæàòüñÿ
íî ïåðåä çàïóñêîì íàäî ðåêîìåíäîâàòü ñîõðàíåíèå
ëîàäåð ìîæåò âûïîëíÿòü âñå ôóíêöèè ëèíêåðà, ò.å. ãðóçèòü ïðÿìî îáúåêòíèêè èç àññåìáëåðà (ñåé÷àñ îí ñîñòîèò èç äâóõ ôàéëîâ - òàê óäîáíåå, à â áóäóùåì äëÿ âñåé ïðîãðàììû ìîæåò áûòü ìíîãî ïàð ôàéëîâ, íî ïðè include íå íóæíî)

äëÿ áèíàðíèêîâ, ýêñïîðòèðóåìûõ â äðóãèå ñèñòåìû, íóæåí ëèíêåð

ëîàäåðó(ëèíêåðó) íóæíà ñëåäóþùàÿ èíôîðìàöèÿ (áóäåì ïîêà ñ÷èòàòü, ÷òî àññåìáëåð äëÿ ñáîðêè âûçûâàëñÿ îäèí ðàç):
1. ñïèñîê âñåõ áëîêîâ â îáúåêòíèêå: èõ òèïû, àëèãíû è ðàçìåðû.
òèïû:
- fixed (äëÿ îñè íå íàäî? ñ àäðåñîì)
- nearcode
- [initialized neardata (==nearcode?)]
- [empty neardata]
- farcode
- [initialized fardata (==farcode)])
- [empty fardata]
2. äëÿ êàæäîãî áëîêà ñïèñîê òî÷åê ðåëîêàöèè - äîáàâèòü òðåòèé ôàéë èëè âïèñàòü â ïîòîê äàííûõ ñ íàðóøåíèåì ðàçìåðîâ êîìàíä?
3. ïîòîê äàííûõ
4. ðàçìåð ñòåêà
5. îòêóäà çàïóñêàòü

òî÷êè ðåëîêàöèè ìîãóò áûòü ñëåäóþùèõ òèïîâ:
1. ïàðàìåòð 16-áèòíîé êîìàíäû èëè äàííîå (êàêîé íîìåð áëîêà, êàêîå ñìåùåíèå)
[2. HSB ïàðàìåòð 8-áèòíîé êîìàíäû (êàêîé íîìåð áëîêà, êàêîå ñìåùåíèå)]
[3. LSB ïàðàìåòð 8-áèòíîé êîìàíäû (êàêîé íîìåð áëîêà, êàêîå ñìåùåíèå)]
4. ñòðàíèöà äëÿ far âûçîâà (êàêîé íîìåð áëîêà)
5. íàïîìèíàëêà FIXUP "ïðîïàò÷èòü òåêóùèì àäðåñîì òàêîé-òî íîìåð áëîêà, òàêîå-òî ñìåùåíèå"
5. íàïîìèíàëêà FIXUP "ïðîïàò÷èòü òåêóùåé ñòðàíèöåé òàêîé-òî íîìåð áëîêà, òàêîå-òî ñìåùåíèå"

êàê ìîæíî ñâÿçàòü êàæäûé áëîê ñ êàæäûì?
êàê àññåìáëåð áóäåò çíàòü ñìåùåíèå â äðóãîì áëîêå?
óæå ïîíÿòíî, ÷òî ìåòêè äîëæíû èìåòü ïîëå "íîìåð áëîêà" (ñåé÷àñ ñîîòâåòñòâóåò ñòðàíèöå, íî íå äîëæåí, è äîëæåí áûòü 2-áàéòíûì)
ïðè äâóõ ïðîõîäàõ àññåìáëèðîâàíèÿ âñå ñìåùåíèÿ â ëþáîì äðóãîì áëîêå áóäóò èçâåñòíû
(ìîæíî â îäèí ïðîõîä:
- åñëè íå íàøëè ìåòêó, òî ïèøåì äëÿ íå¸ ïîñò FIXUP "êîãäà ïîÿâèøüñÿ, ñãåíåðèðóé íàïîìèíàëêó FIXUP ïðîïàò÷èòü òåêóùèì àäðåñîì òàêîé-òî íîìåð áëîêà, òàêîå-òî ñìåùåíèå" (äëÿ îäíîé ìåòêè ìîæåò áûòü ìíîãî ïîñòîâ!!!), à âû÷èñëåíèÿ çàïðåòèòü;
- åñëè íå íàøëè ñòðàíèöó ìåòêè, òî ïèøåì äëÿ íå¸ ïîñò FIXUP "êîãäà ïîÿâèøüñÿ, ñãåíåðèðóé íàïîìèíàëêó FIXUP ïðîïàò÷èòü òåêóùåé ñòðàíèöåé òàêîé-òî íîìåð áëîêà, òàêîå-òî ñìåùåíèå" (äëÿ îäíîé ìåòêè ìîæåò áûòü ìíîãî ïîñòîâ!!!), à âû÷èñëåíèÿ çàïðåòèòü
- åñëè íàøëè ÷èñëîâóþ ìåòêó, òî ñïîêîéíî èñïîëüçóåì å¸ â âûðàæåíèè
- åñëè íàøëè àäðåñíóþ ìåòêó, òî ïèøåì òî÷êó ðåëîêàöèè "íîìåð áëîêà ìåòêè, ñìåùåíèå"
- åñëè èùåì ñòðàíèöó ìåòêè è íàøëè ìåòêó, òî ïèøåì òî÷êó ðåëîêàöèè "íîìåð áëîêà äëÿ far âûçîâà"
êàê ñäåëàòü âû÷èñëåíèÿ ðàçìåðîâ áëîêîâ êîäà? ñïåöèàëüíàÿ äèðåêòèâà-ñêîáêà?
êàê ñäåëàòü äðóãèå âû÷èñëåíèÿ ñ àäðåñàìè êîäà ($-1, àäðåñ+êîíñòàíòà (ïîëÿ ñòàòè÷åñêèõ ñòðóêòóð, ñïðàéòû...), ïàò÷è äëÿ call/jp/jr, ñòàðøèå è ìëàäøèå ÷àñòè àäðåñà (áûâàþò ñ ïðèáàâëåíèåì êîíñòàíòû), ïåðåñ÷¸ò àäðåñîâ â äðóãóþ îáëàñòü ïàìÿòè, âûäåëÿëêè àäðåñîâ ïî äðóãèì àäðåñàì(÷èñëîâûå?))?
êàê ñäåëàòü org $-1? ñïåöèàëüíàÿ äèðåêòèâà, êîòîðàÿ èä¸ò â îáúåêòíèê?
àëèãíû â nearcode çàïðåòèòü, ò.ê. ñìåùåíèÿ ïîñëå íèõ íåïðåäñêàçóåìû? ëó÷øå àëèãí - íîâûé áëîê!
)
ëîàäåðó(ëèíêåðó) íàäî áóäåò ñíà÷àëà ïðî÷èòàòü ñïèñîê âñåõ áëîêîâ, íàçíà÷èòü èì àäðåñà, ïîòîì óæå ÷èòàòü äàííûå ðåëîêàöèè è ïîòîê äàííûõ

åñëè îáðàùåíèÿ ê far áóäóò ÷åðåç ïåðåñ÷¸ò ñòðàíèö, òî ìîæíî ñ ïîìîùüþ ñâîïà çàïóñêàòü 128ê ïðîãðàììó íà 48ê
íî ýòî áóäåò ñëèøêîì ìåäëåííî (ìû íå ìîæåì çàñòàâèòü ÷àñòî îáùàþùèåñÿ ïðîöåäóðû è äàííûå ëåæàòü â îäíîé ñòðàíèöå)
õîòÿ äîñòàòî÷íî, ÷òîáû õîòÿ áû ñêîìïèëèðîâàòü è çàïóñòèòü.
à âîò ïðàêòè÷åñêè ìû ìîæåì ðàçðàáàòûâàòü 48ê ïðîãðàììû íà 48ê (ñâîïèòüñÿ áóäóò ðåäàêòîð, êîìïèëÿòîð, àññåìáëåð öåëèêîì, êðîìå near ÷àñòè)


êàê ñäåëàòü ðàçäåëüíóþ êîìïèëÿöèþ? ëîàäåð äîëæåí îäíîâðåìåííî ãðóçèòü èç íåñêîëüêèõ îáúåêòíèêîâ? èëè ïîðÿäîê íå âàæåí, ìîæíî ïî î÷åðåäè?
è äîëæåí áûòü óêàçàí âåñü ñïèñîê, ÷òî çàãðóæàòü


êàê âûäàâàòü òåêñò â êîìïèëÿòîð?
à) òåêñò â ïàìÿòè (íå ãîäèòñÿ äëÿ 48ê), îðãàíèçîâàòü ïîñòîÿííûå ïàéïû, à ñèìâîëû âûäàâàòü èç ðåäàêòîðà
á) òåêñò â ðàçäåëÿåìûõ ôàéëàõ (íî òîãäà êîìïèëÿòîð äîëæåí óìåòü êîìïèëèðîâàòü òåêñò çàäîì íàïåð¸ä, ÷òî íåðåàëüíî)
á2) òåêñò â ðàçäåëÿåìûõ ôàéëàõ, à ñèìâîëû âûäàâàòü èç ðåäàêòîðà ñîãëàñíî ñêðèïòó
ñòðèìèòü çàäîì íàïåð¸ä òàê æå, êàê ïðè ïå÷àòè òåêñòà íà ýêðàíå - óñòàíîâèòü óêàçàòåëü â ôàéëå (íå îò ôèçè÷åñêîãî êîíöà, à îò ëîãè÷åñêîãî, ò.ê. íåëüçÿ îáêóñûâàòü êîíåö ôàéëà ïðè óìåíüøåíèè), ïðî÷èòàòü êèëîáàéò, èñïîëüçîâàòü êèëîáàéò. ïðè ýòîì ôàéë áóôåðèçîâàí ñèñòåìîé â ïàìÿòè.
ãäå õðàíèòü ëîãè÷åñêóþ äëèíó ôàéëà1 è ôàéëà2?
ïðè âûõîäå èç ðåäàêòîðà ñêëåèâàòü ôàéëû? ìåäëåííî? åñëè ïèñàòü ïîâåðõ õâîñòà ôàéëà1, òî íåëüçÿ óìåíüøèòü åãî äëèíó
â) òåêñò â îäíîì ðàçäåëÿåìîì ôàéëå (ðàáîòà ñ áîëüøèìè ôàéëàìè ìåäëåííàÿ è íåâîçìîæíà íà 48Ê, à ó íàñ åñòü òåêñòû >40K)
ã) îáùàÿ çàäà÷à äîñòóïà ê òåêñòó, êîòîðîé ïîëüçóþòñÿ è ðåäàêòîð, è êîìïèëÿòîð?
ä) ðåàëèçîâàòü â ñèñòåìå òèï ôàéëà ñ äîáàâëåíèåì â íà÷àëî - âòîðàÿ ïîëîâèíà òåêñòà â í¸ì?

à êàê ïðè âñ¸ì ýòîì èñïîëüçîâàòü include? íóæíî âñòàâèòü ïðåïðîöåññîðû-ñåêâåíñîðû ïåðåä íåäîëàíãîì è ïåðåä íåäîàñìîì?
íî êàê Ê ÍÈÌ ïðèäåëàòü ïðîèçâîëüíîå êîëè÷åñòâî ïàéïîâ? ñîçäàòü ïðè ñîçäàíèè ñåêâåíñîðà íà îñíîâå ïðîåêòíîãî ôàéëà?
äëÿ àñìà ìîæíî ñðàçó ïðåäóñìîòðåòü ÷òåíèå äâóõ ôàéëîâ?

ïðåäïîëîæèì, ÷òî òåêñòû â ïàìÿòè, èíêëþäîâ íåò, à ðåäàêòîð ñàì ïî ñêðèïòó ñòðèìèò òåêñòû â êîìïèëÿòîð, à òîò â àññåìáëåð (íåëüçÿ äâà âûõîäíûõ ôàéëà, íàäî îäèí)
äîëæåí áûòü ñèìâîë ïðåðûâàíèÿ êîìïèëÿöèè (÷òîáû íà÷àòü çàíîâî ïðè èçìåíåíèè òåêñòà)
è íàâåðíî çàãîëîâîê (â ïðîñòåéøåì ñëó÷àå áåç çàãîëîâêà), à èìÿ âûõîäíîãî ôàéëà íàçíà÷èòü ïðè îòêðûòèè âûõîäíîãî ïàéïà
ïðè ýòîì incbin ìîæåò ðàáîòàòü ÷åðåç äðóãîé ôàéë, êîòîðûé îòêðîåò ñàì àññåìáëåð
à êàê ïðèêðåïèòü ñòàíäàðòíóþ áèáëèîòåêó è äðóãèå ôàéëû íà àññåìáëåðå? òîæå ÷åðåç äðóãîé ôàéë? íî îí ìîæåò áûòü âëîæåííûé!!!

âñÿ ñðåäà ðàçðàáîòêè - ýòî îäíîâðåìåííî çàïóùåííûå:
- êîììàíäåð (~10K)
- ðåäàêòîð (~20K+áóôåðû)
- êîìïèëÿòîð (~25K+ìåòêè)
- àññåìáëåð (~10K+ìåòêè)
- çàïóùåííàÿ ïðîãðàììà (ìîæåò áûòü áîëüøàÿ, íàïðèìåð, êîìïèëÿòîð)

åñëè çàïóñêàòü òàêóþ ñèñòåìó íà 48Ê, òî:
ðåäàêòèðóåìûé òåêñò áóäåò ëåæàòü â ôàéëàõ
êîãäà áóäóò çàãðóæàòüñÿ ïðîãðàììû êîìïèëÿòîðà è àññåìáëåðà? âî âðåìÿ çàãðóçêè ïðîåêòà åù¸ ðàíî, ò.ê. âñÿ ñðåäà ðàçðàáîòêè íå âëåçåò â 48Ê
ïðîãðàììû áóäóò ñâîïèòüñÿ òîëüêî öåëèêîì. êîãäà?
ñâîïèòüñÿ ìîæåò äàæå ðåäàêòîð! à êàê òîãäà ñòðèìèòü? è êàê ïðåðûâàòü ñòðèìèíã êëàâèàòóðîé? ïî èäåå êîìïèëÿöèÿ äîëæíà áûòü ïî ôîíó!!!
äëÿ ìàëåíüêèõ ïðîãðàìì ñâîáîäíîå ìåñòî â ïàìÿòè äîëæåí çàíèìàòü áóôåðèçîâàííûé îñüþ òåêñò. êàê ñäåëàòü åãî ñâîï ïðè íåîáõîäèìîñòè çàãðóçèòü ïðîãðàììó?

âûãðóçêà-çàãðóçêà ïðîãðàìì - äîðîãàÿ îïåðàöèÿ, ïîýòîìó íàäî å¸ èçáåãàòü

íà÷àëè ñòðèìèòü
êîí÷èëñÿ ñåãìåíò
åñëè çàãðóæåí ïðè¸ìíèê, òî ïåðåêëþ÷èòüñÿ íà íåãî
èíà÷å: åñëè åñòü ïàìÿòü (êàê óçíàòü? îñîáåííî åñëè ïðîãðàììà õî÷åò åù¸ äèíàìè÷åñêóþ ïàìÿòü!), òî çàãðóçèòü ïðè¸ìíèê, èíà÷å âûãðóçèòü ñåãìåíò â ôèçè÷åñêèé ôàéë
çàêîí÷èëè ñòðèìèòü (÷òî çà ñèãíàë?), âûãðóæàåì èñòî÷íèê, çàãðóæàåì ïðè¸ìíèê



â 48Ê êîíêóðèðóþò çà îäíó ïàìÿòü:
íåôèêñèðîâàííûå áëîêè near êîäà è äàííûõ
íåôèêñèðîâàííûå áëîêè far êîäà è äàííûõ (ïðåâðàùàþòñÿ â near)
256b áëîêè ôàéëîâûõ ñåãìåíòîâ
256b? áëîêè ñèñòåìíûõ ôàéëîâûõ êýøåé



ßäðî ñîäåðæèò ÿ÷åéêè ñ ôèêñèðîâàííûìè àäðåñàìè:
òåêóùàÿ ñòðàíèöà (word äëÿ 16M) (4 áàéòà íà ñòðàíèöó(2 íîìåð çàäà÷è, 2 ôèç. íîìåð ñòðàíèöû)=4*1024=4k, íî ðàç word, òî ìîæíî äàâàòü çàäà÷àì ôèç.íîìåðà ñòðàíèö è òàáëèöà ôèç.íîìåðîâ íå íóæíà)(ïîëîæèòü òàáëèöó ïðèíàäëåæíîñòè ñòðàíèö çàäà÷àì â ñòðàíèöó - îíà òðåáóåòñÿ òîëüêî ïðè çàêàçå è îñâîáîæäåíèè ïàìÿòè)
ñîäåðæèìîå eff7 - ìåíÿòü ÷åðåç ôóíêöèþ ñèñòåìû!!!
ñîäåðæèìîå fe? íå ìåíÿòü íèêîãäà?
òåêóùèé ýêðàí (0/8) - ìåíÿòü ÷åðåç ôóíêöèþ ñèñòåìû!!! ÷òîáû íà ATM íå îáðàùàòüñÿ ê 7ffd êàæäûé ðàç ïðè ïåðåêëþ÷åíèè ñòðàíèö

Ïåðåìåííûå äðàéâåðà äåâàéñà (òèïà íåäîïå÷àòàííîé áóêâû) íå ìîãóò õðàíèòüñÿ ìåæäó âûçîâàìè äðàéâåðà, ò.ê. äàëüøå ìîæåò îáðàòèòüñÿ ñîâñåì äðóãàÿ ïðîãðàììà. Ïå÷àòàòü íàäî ñðàçó ñòðîêó, çâóê êèäàòü ñðàçó ìàññèâîì, íà äèñê ïèñàòü êèëîáàéòàìè (ïåðåäàâàòü óêàçàòåëü) è ò.ï.


îáðàùåíèÿ ê ôàéëàì äîëæíû áûòü ñåòåâûå (çàïðîñ è ÷òåíèå ðàçäåëüíî)
äîëæíî áûòü îòêðûòèå ôàéëà ñ íåâîçìîæíîñòüþ äðóãèì â íåãî ëåçòü
êàê ñäåëàòü ôàéë áàçû äàííûõ, â êîòîðûé ìîæíî äîáàâëÿòü äàííûå, ïîêà äðóãèå ÷èòàþò? ïåðèîäè÷åñêè äåëàòü åãî êîïèè?

ñèìâîëè÷åñêèå ññûëêè - èñòî÷íèê ãëþêîâ (âõîä-âîçâðàò, ðåêóðñèÿ)
íåâèäèìûå ñèìâîëû â èìåíàõ ôàéëîâ - èñòî÷íèê ãëþêîâ
÷òîáû èìåíà ñ ïðîáåëàìè íå îôîðìëÿòü îñîáî, íàäî â êîìñòðîêå ïåðåäàâàòü âñå èìåíà êàê îòäåëüíûå îáúåêòû

íàäî èìåòü âîçìîæíîñòü çíàòü òåêóùèé ïóòü



ïðåèìóùåñòâà ñêðèïòà (êîìïèëÿöèÿ ïî ìåðå èñïîëíåíèÿ):
+ìîæíî äåëàòü îòêëþ÷àåìûé range check (ýòî ìîæíî è â ßÂÓ)
+ìîæíî äåëàòü îòêëþ÷àåìóþ çàùèòó ïàìÿòè (ýòî ìîæíî è â ßÂÓ)
+âîçìîæíî ýêîíîìèÿ ïàìÿòè ïîä êîä
+ìîæíî íåîãðàíè÷åííûé îáú¸ì êîäà
ïðîáëåìû:
-êàê îïðåäåëèòü ðàçìåð îáëàñòè íèæíåé ïàìÿòè, êóäà êîìïèëèðîâàòü? çàðàíåå ïðîñ÷èòàòü ïðè çàãðóçêå?
-÷òî åñëè íå õâàòèò íèæíåé ïàìÿòè ïîä åäèíèöó êîìïèëÿöèè?

ìîæíî êîìïèëèðîâàòü êóñîê è âñòàâëÿòü â êîíöå âûçîâ êîìïèëÿòîðà





äðàéâåð âèíòà íà îäèí ñåêòîð ìîæíî çàñóíóòü â êðèòè÷åñêóþ ñåêöèþ.
à ïîèñê â ôàòå íåëüçÿ! êàê ñäåëàòü ìüþòåêñ?
âûçûâàþùèé äîëæåí ïîâèñíóòü äî òåõ ïîð, ïîêà íå îñâîáîäèòñÿ ðåñóðñ.
îäèí ìüþòåêñ íà âñå âõîäû äðàéâåðà hdd! âûçûâàòü âñå ÷åðåç îäíó òî÷êó?
à) ïîëëèíã ôëàãà â âûçûâàþùåé çàäà÷å (òðåáóåò, ÷òîáû âñå çàäà÷è â òàéìñëàéñå âûçûâàëèñü ïî î÷åðåäè!)
á) âûçîâ ñ âûïàäåíèåì è öèêë â âûçûâàþùåé çàäà÷å
â) øåäóëåð èùåò çàäà÷è, âèñÿùèå â îñâîáîæä¸ííîì ìüþòåêñå è ïðè ïåðåõîäå íà òàêóþ ñíîâà åãî çàêðûâàåò
ã) ïðè îñâîáîæäåíèè ìüþòåêñà ïåðåõîä íà çàäà÷ó ïî î÷åðåäè â ìüþòåêñå


;Âõîä â çàñåìàôîðåííûé ó÷àñòîê
or a
semaphoreloop
call c,Sleep
ld hl,fsemaphore ;#fe - ñâîáîäíî, #ff - çàíÿòî
sra (hl) ;#ff
jc semaphoreloop
;íóæåí Sleep ñ ïàðàìåòðîì-àäðåñîì ñåìàôîðà?


;Âûõîä èç çàñåìàôîðåííîãî ó÷àñòêà
ld hl,fsemaphore
ld (hl),#fe

Åñëè íàäî âçÿòü äâà ñåìàôîðà, òî ïðîâåðÿòü íàäî ñâîáîäíîñòü ÎÁÎÈÕ ÑÐÀÇÓ, à íå ñïåðâà êðóòèòüñÿ íà îäíîì, ïîòîì íà äðóãîì, èíà÷å âîçìîæåí äåäëîê.

semaphore12loop
STARTCRITICAL
ld a,(fsemaphore1) ;#fe - ñâîáîäíî, #ff - çàíÿòî
ld hl,fsemaphore2 ;#fe - ñâîáîäíî, #ff - çàíÿòî
or (hl) ;åñëè õîòü îäèí çàíÿò, òî #ff
rrca
jnc semaphore12ok ;ñâîáîäíî
ENDCRITICAL
call Sleep
jr semaphore12loop
semaphore12ok
ld a,#ff ;çàíÿòî
ld (fsemaphore1),a
ld (fsemaphore2),a
ENDCRITICAL







ìîæíî íà ÀÒÌ çàïóñòèòü áîëåå 60 çàäà÷, åñëè â îäíîé ñòðàíè÷êå ðàçðåøàòü ðàçìåùàòü ìíîãî çàäà÷/ìîäóëåé.
ýòî òðåáóåò íàëè÷èÿ ïîëíîöåííîé äèíàìè÷åñêîé ïàìÿòè íà óðîâíå îñ.
êàê çàðàíåå óçíàòü, ñêîëüêî ôèçè÷åñêèõ ñòðàíèö âûäåëèòü ïîä äèíàìè÷åñêóþ ïàìÿòü, à ñêîëüêî ïîä ñòðàíè÷íóþ?
Ýòî íå íóæíî óçíàâàòü çàðàíåå. äèíàìè÷åñêàÿ ïàìÿòü îðãàíèçóåòñÿ ïîâåðõ ñòðàíè÷íîé.
Åñëè âûäåëåííîé ïîä íå¸ ñòðàíè÷íîé íå õâàòàåò, òî îíà ïðîñèò åù¸ îäíó ñòðàíè÷êó, è ò.ä.
Ýòî íåèçáåæíî, èíà÷å ìîæåò áûòü memory overflow ïðè íàëè÷èè ñâîáîäíûõ ñòðàíèö.

Åù¸ îäèí ïëþñ ÀÒÌîâñêîé ñèñòåìû - ÂÑÅ ìîäóëè ìîãóò ñòàòü ðàâíîïðàâíûìè (íåò ñòðàíè÷íûõ è íåñòðàíè÷íûõ),
íî ñòåê äîëæåí ëåæàòü â íèæíåì ÎÇÓ (åãî ãîðàçäî ëåã÷å ñâîïèòü).
Ìîæíî ñòåê â ñòðàíèöå êîäà, åñëè åñòü ñòðàíè÷íûå ìîäóëè.

Ïîïðîñèòü ÊÎÅ ñäåëàòü åù¸ îäíî îêíî ñòðàíèö - â #4000? íàäî, ÷òîáû ýòîò ïîðò íå âûáèðàëñÿ ïðè ld a,%0x0xxxxx:out (#fd),a è ïðè out #dffd, #fdfd, #1ffd.
Íàïðèìåð, ïîðò #3ffd (ïðîùå âñåãî, ò.ê. åñòü #7ffd, #bffd, #fffd) èëè #9ffd.
Èëè ëó÷øå â #0000 (ïîðò #FE ïðè âêëþ÷åííîé ÎÇÓ â îáëàñòü ÏÇÓ), ýòî äàñò ïëþñû:
1. âîçìîæíîñòü àäàïòèðîâàòü is-dos chic (âêëþ÷àòü íå 128-þ ñòðàíèöó â #0000),
2. íå òðåáóåòñÿ ñëîæíîå óñëîâèå íà àäðåñ ïîðòà (ìîæíî #1ffd),
3. íà÷àëüíûé íîìåð 0 (èëè äàæå íåîïðåäåë¸ííûé) - ïðîùå, ÷åì 5, 4.
âîçìîæíîñòü ïðîèçâîëüíîé ñòðàíè÷êîé êîäà âûâîäèòü èç ïðîèçâîëüíîé ñòðàíèöû äàííûõ íà 0-é ýêðàí, ïðè÷¸ì âîçìîæíîñòü âûâîäèòü íà ïðîèçâîëüíûé ýêðàí èç ïðîèçâîëüíîé ñòðàíèöû ñîõðàíÿåòñÿ.
Ìèíóñ â òîì, ÷òî íåëüçÿ äåëàòü ðàìäèñê vtrdos ïåðåêëþ÷åíèåì ñòðàíèö â #4000, íî ýòî è íå íóæíî.
Ïðîáëåìà ñ âûïîëíåíèåì êîäà â #3dxx, íî ìîæíî èñïîëüçîâàòü âåðõíåå îêíî äëÿ êîäà, à íèæíåå äëÿ äàííûõ, è ïðîáëåìû íå áóäåò.

Äëÿ ñâåðõBQ ïîä SOS: ïðè îêíå â #0000 èëè #8000 íåò âîçìîæíîñòè
óáðàòü îáà ýêðàíà èç àäðåñíîãî ïðîñòðàíñòâà (÷òîáû áûëî 32ê ïîä îñ+ñòåêè+
òàáëèöû ïðèëîæåíèé+äðàéâåðû...). Ýòîãî ìîæíî äîáèòüñÿ ôëàãîì "5-ÿ/1-ÿ ñòð. â #4000". Ñâÿçàòü ýòîò ôëàã ñ ôëàãîì "ÎÇÓ â #0000"?

Ïðè îêíå â #4000 òàêîé ïðîáëåìû íåò, íî íèæ. ïàìÿòü äåëèòñÿ íà 2 êóñêà ïî 16ê, ýòî íåóäîáíî.
Ïåðåïèñûâàòü ïðîãðàììû òàê, ÷òîáû äàííûå â #0000, íåóäîáíî (ìíîãî ãäå åñòü inc h:call z,... è äð.). Ïðèâû÷íàÿ ñðåäà äëÿ çàäà÷ - ïðè îêíå êîäà â #8000.
Ñâîïèíã ñòåêà çàïðåùàåò çàïîìèíàòü SP â ïåðåìåííûõ, êðîìå ðàçâå ÷òî
ñïåöèàëüíî ïîìå÷åííûõ. Ïðè ìîäóëÿõ â ñòðàíèöàõ äàííûõ ñòåê ìîæíî â ñòð. êîäà, íî ýòî îãðàíè÷åíèå íà êîä.

Õîòåëîñü áû èìåòü 3 îêíà: â îäíîì êîä, â äðóãîì äàííûå, â òðåòüåì ýêðàí, à â îñòàâøåéñÿ ÷àñòè àäðåñíîãî ïðîñòðàíñòâà - ÎÑ+äðàéâåðû.
×òîáû äðàéâåð ýêðàíà ìîã âûâîäèòü è èç ñòð. êîäà, è èç ñòð. äàííûõ, áåç ïåðåêëþ÷åíèÿ ñòðàíèö.
Èëè äàæå ÷òîáû ïðÿìî âûâîäèòü íà ýêðàí áåç äðàéâåðà äàííûå èç ëþáîé ñòðàíèöû.
Ïðîùå âñåãî àäàïòèðîâàòü ãîòîâûå ïðîãðàììû (äàæå BQ), åñëè ÎÑ â #0000 (ôèêñèðîâàííàÿ ñòð.), ýêðàí â #4000, êîä â #8000, äàííûå â #c000.
Åñëè 2 îêíà, òî øë¸ì â äðàéâåð ýêðàíà ïîñëåäîâàòåëüíîñòü îïåðàöèé ÷åðåç ïàéïû.

Êàê îñâîáîæäàòü ïàìÿòü çàäà÷è ïðè âûõîäå? Ïîäçàäà÷à íå äîëæíà ýòîãî äåëàòü, åñëè îíà âíóòðè ðîäèòåëüñêîé çàäà÷è. Ïîäçàäà÷à íå ìîæåò áûòü âíóòðè? Ñäåëàòü ðàçäåëÿåìûå ñåãìåíòû êîäà äëÿ fork ìîæíî òîëüêî ïðè ÍÄÏ (ðåàëüíî íàäî òîëüêî vfork). Õîòåëîñü áû îêíà è äëÿ ïåðåìåííûõ, è äëÿ ñòåêà... (èòîãî: 1. ÎÑ, 2. ýêðàí 8Ê, 3. êîä òåêóùåãî ìîäóëÿ (ìîæåò áûòü ðàçäåëÿåìûì), 4. ïåðåìåííûå òåêóùåãî ìîäóëÿ, 5. ñòðàíè÷íûå äàííûå ïî 16Ê, 6. ñòåê ïðîöåññà, [7. ìîäóëè ÎÑ]). Äëÿ ýòîãî íàäî 7 îêîí ïî 8Ê (æåëàòåëüíî ñ äðîáíûõ ñòðàíèö) è îäíî 16Ê. Ñåãìåíòû êîäà è ÎÑ äîëæíû áûòü çàùèùåíû îò çàïèñè; æåëàòåëüíî îòäåëüíî îòñëåæèâàòü àïïàðàòíî ïåðåïîëíåíèå ñòåêà; åñëè ñòðàíèöû äðîáíûå, òî ïðè çàùèòå íàäî ó÷èòûâàòü çàÿâëåííûé ðàçìåð îêíà.


ñïèñîê ñâîáîäíûõ îáëàñòåé äëÿ äèíàìè÷åñêîãî ÎÇÓ ìîæíî õðàíèòü ïðÿìî â ýòèõ
ñâîáîäíûõ îáëàñòÿõ.  íà÷àëå êàæäîé - ñòðóêòóðà:
WORD size
WORD nextpg
WORD nextaddr
Õîòÿ æåëàòåëüíî ñâîáîäíûå îáëàñòè ïðîøèòü åù¸ è íà íåñêîëüêî ñïèñêîâ ïî ãðóïïàì ðàçìåðîâ.
Îñíîâíîé ñïèñîê, îòñîðòèðîâàííûé ïî àäðåñó, íóæåí äëÿ ñêëåèâàíèÿ ñîñåäíèõ áëîêîâ.
Êàê óáðàòü áëîê èç ñïèñêà? Íóæíî ïåðåñòàâèòü ÏÐÅÄÛÄÓÙÈÉ óêàçàòåëü (ò.å. îí óêàçûâàë íà íåãî, à áóäåò óêàçûâàòü íà ñëåäóþùèé).
À êàê ïåðåøèâàòü ñïèñêè ïî ðàçìåðàì? Ïðîñòî äîáàâëÿòü íîâûé áëîê â íà÷àëî "ñïèñêà ïî ðàçìåðó".


äëÿ ýôôåêòèâíîãî ñâîïà íà äèñê òðåáóþòñÿ ñ÷¸ò÷èêè îáðàùåíèé ê ñòðàíèöàì, âåñüìà æåëàòåëüíî - ñ òàéìñòàìïàìè.
Ýòî âåñüìà çàìåäëèò ïåðåêëþ÷åíèå ñòðàíèö.

íàäî çàäàâàòü ïðèîðèòåòû íå òîëüêî äëÿ âðåìåíè, íî è äëÿ äèñêîâûõ îïåðàöèé, è äëÿ ñåòè


 UNIX ïðîáëåìà ñ ó÷¸òîì êîë-âà îòêðûòèé ôàéëà è êàòàëîãà èç-çà fork.
Ñäåëàòü íå fork, à çàïóñê ïðîãðàììû ñ äèñêà? (ýòî çàìåäëèò ñîçäàíèå êó÷è òðåäîâ)

äëÿ ïîòîêîâ íàäî îáùèé êîä è äàííûå, íî ðàçíûé ñòåê.
ëèáî íàäî ïåðåêëþ÷àòü ñòåê (ìîæåò íå õâàòèòü ñòðàíèö, åñëè ïîòîêîâ ñëèøêîì ìíîãî), ëèáî çàäàâàòü ðàçìåð è çàùèùàòü (ìîæåò íå õâàòèòü îêíà ñòåêà, åñëè ïîòîêîâ ñëèøêîì ìíîãî).
äëÿ ßÂÓ çàùèùàòü íàäî òîëüêî îò stack overflow è òîëüêî ïðè ðåêóðñèè (ïðîâåðÿòü â ñàìèõ âûçîâàõ), underflow íå áóäåò íèêîãäà, à èñïîëüçîâàíèå ñòåêà âíóòðè ïðîöåäóð ìîæíî êîíòðîëèðîâàòü â êîìïèëÿòîðå. Íî ãëóáèíà ñòåêà â ñàìîé îñè ìîæåò ìåíÿòüñÿ, îñîáåííî ñ ðàçíûìè äðàéâåðàìè - ýòî ïðîáëåìà!


16-áèòíûé òàéìåð ïåðåïîëíèòñÿ ÷åðåç 22 ìèíóòû. íóæåí 32-áèòíûé?




Çà÷åì ïðè äâóõ çàäà÷àõ 100% çàãðóçêè ïðîöà ÷åðåäîâàòü èõ? åñëè æäàòü îêîí÷àíèÿ îäíîé ïåðåä ïóñêîì äðóãîé, òî ýòî óäîáíåå è äëÿ þçåðà, è áûñòðåå.
ãëàâíîå ÷òîáû çàäà÷è ñ íå100% çàãðóçêîé ïðè ýòîì íå çàìîðàæèâàëèñü

Åñëè ïëàíèðîâùèê èìååò ñëîæíîñòü O(1), òî ñïèñêè ïðîöåññîâ óäîáíî õðàíèòü â âåðõíåé äèíàìè÷åñêîé ïàìÿòè.




Ñèñòåìà â íóëåâûõ àäðåñàõ:
Ïëþñû:
+ Óäîáñòâî ïåðåõîäà èç ïðîãðàììû â ÎÑ (ÿäðî ñåé÷àñ òàê è íàïèñàíî)
+ Óäîáíî èñêàòü òàáëèöó âûñøèõ ñòðàíèö (ýòà òàáëèöà - â ñòðàíèöå, âûäåëÿåìîé äðàéâåðîì ïàìÿòè äëÿ ñâîèõ öåëåé); èíà÷å - òîëüêî ÷åðåç ðåçèäåíò ëèáî ïðèâÿçêó ê àäðåñàì (ïðè÷åì èíèöèàëèçèðîâàòü ïðèä¸òñÿ äî çàïóñêà ïëàíèðîâùèêà)
+ Îáðàáîò÷èê ïðåðûâàíèé íå òðåáóåò ìåñòà â îñíîâíîì ÎÇÓ
+ Ìîæíî èñïîëüçîâàòü RST (åãî ìîæíî èñïîëüçîâàòü äëÿ àïïàðàòíîé çàùèòû!)
(èìèòèðîâàòü CP/M íåëüçÿ)
Ìèíóñû:
- Íåñîâìåñòèìîñòü ñ ïåíòàãîí 128 (à íàäî ëè?)
- Òðåáóþòñÿ ñèñòåìíûå ïðîöåäóðû âêëþ÷åíèÿ è âûêëþ÷åíèÿ ýòîãî ðåæèìà (äëÿ äðàéâåðà äèñêåòû), ãäå èõ ðàñïîëîæèòü?
à) â ðåçèäåíòå (íóæåí ðåçèäåíò)
á) â ñòðàíèöå äðàéâåðà äèñêà (êòî èõ òóäà ïîëîæèò?)
â) ñòðàíèöà äðàéâåðà äèñêà = ñòðàíèöà äðàéâåðà ïàìÿòè (ýòî çàãðóç÷èê ñèñòåìû, íàïð., DNA OS - íèæíèé óðîâåíü SOS)
ã) à íàäî ëè? ìîæíî âñ¸ ñàìîìó íàïèñàòü, ïóñêàé ëåæèò â ñòðàíèöå (à êàê ñîõðàíÿòü/çàãðóæàòü èç ñòðàíèö?). âîîáùå äèñêåòû íå íóæíû â ìíîãîçàäà÷íîé ÎÑ.

Äèñêîâûå îïåðàöèè íàäî ñîâìåñòèìûå ñ MSX-DOS è/èëè CP/M.
Íóæíà âîçìîæíîñòü ïåðåíàïðàâèòü ïîòîê èç êîíñîëè/ïîðòà â ôàéë è íàîáîðîò


rpm -qa | more
ls -l `which su`

Íóæåí SManager.




Ãóé èìååò ñàìûé âûñîêèé ïðèîðèòåò.
òàéìåð(â ñîñòàâå ñèñòåìû) è êëàâèàòóðà(çàäà÷à) øëþò ñîáûòèÿ (ontimer, onkeydown, onkeyup) ãóþ. Ãóé îáðàáàòûâàåò ñèñòåìíûå íàæàòèÿ, ïåðåêëþ÷àåò ôîêóñ (òîëüêî òå ïðîãè, ó êîòîðûõ åñòü îêíî/ýêðàí)
è ðàññûëàåò ñîáûòèÿ ïðîãàì.
Êëàâèàòóðó - ïðîãå, êîòîðàÿ â ôîêóñå è äðàéâåðó òåêóùåé ÿçûêîâîé ðàñêëàäêè (å¸ ïåðåêëþ÷àåò ãóé), ñîîáùåíèÿ äðàéâåðà ðàñêëàäêè (keypressed)
òðàíñëèðóþòñÿ ïðîãå â ôîêóñå.
òàéìåð - äðàéâåðó êóðñîðà äëÿ äðàéâåðà ýêðàíà (åùå ìîæíî âíóòðè èñïîëüçîâàòü äëÿ ýôôåêòîâ è âî÷äîãîâ, íàïðèìåð)

Ýêðàí, ïàìÿòü, äèñê (ôàéëîâàÿ ñèñòåìà) âèñÿò íà API.

êëàâèàòóðà øëåò ñîáûòèå ãóþ [äëÿ ïåðåõâàòà íàæàòèé íàäî íå äàâàòü äðóãèì ïðîãðàììàì ÷èòàòü èõ! íàäî âñå ÷åðåç gui, à îí îðãàíèçóåò öåïî÷êó âûçîâîâ - åñëè îäíà ïðîãðàììà íå ïîíÿëà êëàâèøó, òî âûçîâ ñëåäóþùåé]

API ðàáîòàåò òàê:
Ïðîãðàììà äåëàåò OpenDevice è ïîëó÷àåò óêàçàòåëü íà äðàéâåð äåâàéñà (èëè íà åãî êåðíàëü?)
Äåâàéñ íå äîëæåí äàâàòü ñåáÿ óáèòü/ñìåíèòü øòàòíûìè ìåòîäàìè, ïîêà âñå ïðîãè íå îòâàëÿòñÿ îò íåãî (÷åðåç CloseDevice)
Ïðîãðàììà ìîæåò ñëàòü ñîîáùåíèå äðàéâåðó äåâàéñà - íî òîãäà î÷åðåäü ýêðàíà, íàïðèìåð, áûñòðî ïåðåïîëíèòñÿ (íåò ïðîáëåì, åñëè ïåðåõîä â ñëó÷àå ïåðåïîëíåíèÿ)
Ïðîãðàììà ìîæåò ñëàòü ñîîáùåíèå äðàéâåðó äåâàéñà â î÷åðåäü ñ ïåðåõîäîì íà ïðîöåññ äåâàéñà (åñëè îí â òàéìñëàéñå, ñàìîé ïàäàòü â òàéìñëàéñ è ïîâòîðÿòü äî òàéìàóòà)
Ïðîãðàììà ÍÅ ìîæåò ñëàòü ñîîáùåíèå äðàéâåðó äåâàéñà íàïðÿìóþ, âíå î÷åðåäè, ñ ïåðåõîäîì íà ïðîöåññ äåâàéñà (òîãäà â òîì æå äåâàéñå íåëüçÿ èñïîëüçîâàòü î÷åðåäü - ýòî ïðèâîäèò ê òîìó, ÷òî íåëüçÿ îáðàùàòüñÿ ê ýòîìó äðàéâåðó â ISR)

Ïðîãðàììà ìîæåò? âûçûâàòü ôóíêöèþ ÷åðåç êåðíàëü - ñàìîìîäèô.êîä&îáðàùåíèÿ ê õèòðûì ðåñóðñàì ìîæíî êàê ìåñòíóþ êðèòè÷åñêóþ ñåêöèþ; êîãäà íàäî ñíèìàòü/çàìåíÿòü äðàéâåð - ñòàâèòü ïóñòûøêó â êåðíàëå; !!!ïðîáëåìà â òîì, ÷òî ïîêà ïðîãà æä¸ò ñåìàôîðà, åé ìîãëî ïðèéòè ìèëëèîí ìåññàã, à îíà èõ íå ïîéìàåò, ïîêà íå ïðèä¸ò ñåìàôîð è íå âûïîëíèòñÿ äðàéâåð!!! à â ISR ê òàêèì äðàéâåðàì îáðàòèòüñÿ íåëüçÿ (ðàçâå ÷òî åñëè ó äâàéâåðà äâà ìåõàíèçìà - âûçîâû è ñîîáùåíèÿ, ÷òî íàðóøàåò FIFO-ïîðÿäîê îïåðàöèé â í¸ì).

Ïðîãðàììà ÍÅ ÇÍÀÅÒ, ñóùåñòâóåò ëè çàäà÷à, êóäà èäóò ñîîáùåíèÿ. Ÿ ìîãëè çàêðûòü, è ñîîáùåíèå äîëæíî ïðîñòî èãíîðèðîâàòüñÿ. Îäíàêî êàê áûòü, åñëè ñîçäàëè äðóãóþ çàäà÷ó ñ òåì æå íîìåðîì (íîìåðà óâåëè÷èâàþòñÿ ñ êàæäûì ñîçäàíèåì, âñåãî èõ 32768)?

Åñëè ïðè ïîñûëêå ñîîáùåíèÿ î÷åðåäü ïðåâûñèëà ëèìèò, òî ñòàâèì òåêóùóþ çàäà÷ó â òàéìñëàéñ è ïåðåõîäèì íà çàäà÷ó, êîòîðîé øë¸ì (åñëè îíà íå â òàéìñëàéñå).
à åñëè îíà â òàéìñëàéñå, òî ñòàâèì ïîñûëàþùóþ çàäà÷ó â òàéìñëàéñ (òàê, ÷òîáû íà âûõîäå èç íåãî îíà ñíîâà ïîïûòàëàñü ïîñëàòü ñîîáùåíèå) è ïåðåõîäèì íà çàäà÷ó, êîòîðîé øë¸ì. Åñëè ïðè ýòîì ïîñòàâèòü ïðèçíàê â îïèñàòåëå äðàéâåðà (èëè â øåäóëåðå): "ïîñëå íåãî ïåðåõîäèòü íà çàäà÷ó òàêóþ-òî", òîãäà âûõîä èç öèêëà ÌÎÆÅÒ ïðîèçîéòè áûñòðåå, íî ÌÎÆÅÒ âîçíèêíóòü äåäëîê âûçûâàþùèé-âûçûâàåìûé, êîãäà âûçûâàåìûé æä¸ò ñîîáùåíèÿ îò òðåòüåé çàäà÷è.
Ïðè ýòîì ìåòîäå áóôåð íèêîãäà íå ïåðåïîëíèòñÿ.
ÍÎ! åñëè ïîâèñíåò îäíà çàäà÷à, ïîâèñíåò âñÿ ñèñòåìà.
ïîýòîìó íóæåí òàéìàóò â SENDMSG, ïî èñòå÷åíèè êîòîðîãî çàáèòü íà ñîîáùåíèå è âåðíóòüñÿ â âûçûâàþùóþ ïðîãðàììó.
ïîäñ÷¸ò âðåìåíè - ïî ñèñòåìíîìó èíêðåìåíòèðóþùåìóñÿ â ON_INT (íå â ISR!!!) ñ÷åò÷èêó.

Äâå î÷åðåäè ñîîáùåíèé (íàïðèìåð, â òåðìèíàëêå ñåðèàë è êëàâèàòóðà) íè÷åãî íå äàäóò - åñëè ïðîïóñêàòü
êëàâèàòóðó äî îêîí÷àíèÿ îáìåíà ïî ñåðèàëó, ìîæíî æäàòü ðåàêöèè íà êíîïêó ÌÈÍÓÒÀÌÈ.  îäíîé î÷åðåäè çàäà÷à
ðåøàåòñÿ ëèáî ñîçäàíèåì îòäåëüíîãî ïîòîêà äëÿ ñåðèàëà (çàùèòû ïàìÿòè íåò - ìîæíî èç ïîòîêà â ïîòîê ïåðåäàâàòü óêàçàòåëè; â ñëó÷àå ÷åãî ìîæíî âñþ èíôîðìàöèþ ÷åðåç ñîîáùåíèÿ), ëèáî çàòûêàíèåì ñåðèàëà ïðè îáðàáîòêå äîëãèõ ñîáûòèé.

Çàäà÷à íå äîëæíà êðóòèòüñÿ â öèêëå, èíà÷å íå ñìîæåò îáíîâëÿòü ñâîå îêíî ïðè ïåðåòàñêèâàíèè.
×òî áóäåò, åñëè ïîñðåäè îáíîâëåíèÿ îêíà ñìåíèëèñü êîîðäèíàòû îêíà?
Êàê ñäåëàòü, ÷òîáû îêíî îáíîâëÿëà ñèñòåìà? çàäà÷à âûâîäèò â bitmap è äàåò ñèãíàë ñèñòåìå? íî â âèíäå ïðè ïåðåìåùåíèè îêíà ïåðåìåùàåòñÿ ñòàðîå ñîäåðæèìîå.
Ìîæíî ñäåëàòü â çàäà÷å îáíîâëåíèå îêíà îòäåëüíûì ïîòîêîì. Ò.å. âî âðåìÿ , íàïðèìåð, ðàáîòû ñ äèñêîì (äîëãîå îæèäàíèå) îêíî àêòèâíî. Åñëè îêíó ïîñëàëè ñîîáùåíèå "çàêðûòü", òî îíî øë¸ò ñîîáùåíèå îñíîâíîìó ïîòîêó î òîì æå è çàêðûâàåòñÿ ïîñëå óñïåøíîãî çàêðûòèÿ òîãî. Åñëè îñíîâíîé ïîòîê ñàì ðåøèë çàêðûòüñÿ (íàïðèìåð, ïî F10), òî îí øë¸ò ñîîáùåíèå ïîòîêó îêíà î òîì æå è çàêðûâàåòñÿ ïîñëå óñïåøíîãî çàêðûòèÿ òîãî.
Åñëè ó çàäà÷è íåò îêíà, òî åé äîñòàòî÷íî îäíîãî ïîòîêà.
À åñëè îêîí ìíîãî? Îñíîâíîé ïîòîê äîëæåí ðàññûëàòü âñåì (ãëàâíîìó îêíó - òîëüêî åñëè îñíîâíîé ïîòîê ðåøèë çàêðûòüñÿ ñàì, à íå ïîä÷èíÿåòñÿ ïðèêàçó îêíà) è æäàòü èõ, ïðåæäå ÷åì ñàìîìó çàêðûòüñÿ.

Îãðàíè÷åíèå ñèñòåìû òîëüêî íà ñîáûòèÿõ: íåëüçÿ èñïîëüçîâàòü îäèí ðåñóðñ äâóìÿ äðàéâåðàìè îäíîâðåìåííî (íàïðèìåð, íåëüçÿ DMA íà ýêðàí - âïðî÷åì, ìîæíî íàïëåâàòü íà çàïîëíåíèå ýêðàíà äðóãèìè çàäà÷àìè è ðàáîòàòü ÷åðåç îáû÷íûé DMA: åñëè full screen, òî ìîíîïîëèÿ, à åñëè â îêíå, òî äðóãèå çàäà÷è â ýòîì îêíå ðèñîâàòü íå áóäóò)

Íàïðèìåð, èãðà áóäåò ðàáîòàòü òàê:

IQ(âûñîêèé ïðèîðèòåò):
0. Ïîäïèñàòüñÿ íà òàéìåð è êëàâèàòóðó.
1. GETMSG.
Åñëè òàéìåð:
T1. ñ÷èòàòü èãðîâóþ ëîãèêó;
T2. åñëè êîíåö èãðû, òî ïîñëàòü îá ýòîì ñîîáùåíèå çàäà÷å MAIN.
T3. ïåðåéòè íà 1.
Åñëè êëàâèàòóðà (ýòî ìîæíî â MAIN):
K1. îáíîâèòü ìàòðèöó êëàâèàòóðû/äæîéñòèêà äëÿ èãðîâîé ëîãèêè;
K2. ïåðåéòè íà 1.
Åñëè "çàêðûòü":
E1. çàêðûòü ñåáÿ ñ îòâåòîì àâòîðó ñîîáùåíèÿ "çàêðûòü".
Èíà÷å ïåðåéòè íà 1.

MAIN:
0. ...
1. GETMSG.
Åñëè â ðåæèìå èãðîâîãî öèêëà
{
Åñëè "ýêðàí ãîòîâ":
R1. ïëþíóòü â ýêðàí ñîîáùåíèå "î÷èñòèòü íåâèäèìûé ýêðàí".
R2. âçÿòü èãðîâîé ìèð (ìîæíî ïðÿìî èç ïàìÿòè çàäà÷è IQ, êàê â BQ)
R3. â öèêëå ïëåâàòü ñîîáùåíèÿìè â ýêðàí - ðèñîâàòü â íåâèäèìîì ýêðàíå (ìîæíî îáúåäèíèòü ñ R2, åñëè ñòðóêòóðà èãðîâîãî ìèðà íå äàñò ïðè ýòîì ãëþêîâ - â BQ íå äà¸ò).
R4. ïëþíóòü â ýêðàí ñîîáùåíèå "ïåðåêëþ÷èòü ýêðàí".
R5. ïëþíóòü â ýêðàí ñîîáùåíèå "îòâåòü, êîãäà ãîòîâ".
R6. ïåðåéòè íà 1.
Åñëè "êîíåö èãðû":
O1. ïëþíóòü â IQ ñîîáùåíèå "çàêðûòü".
O2. âêëþ÷èòü ðåæèì êîíåö èãðû.
O3. ïåðåéòè íà 1.
Åñëè "çàêðûòü":
E1. çàïîìíèòü àâòîðà ñîîáùåíèÿ.
E2. ïëþíóòü â IQ ñîîáùåíèå "çàêðûòü".
E3. âêëþ÷èòü ðåæèì çàêðûòèÿ.
E4. ïåðåéòè íà 1.
Èíà÷å ïåðåéòè íà 1.
}
Åñëè â ðåæèìå çàêðûòèÿ
{
Åñëè IQ ïðèñëàë "çàêðûëñÿ":
Q1. çàêðûòü ñåáÿ ñ îòâåòîì àâòîðó ñîîáùåíèÿ "çàêðûòü".
Èíà÷å ïåðåéòè íà 1.
}
Åñëè â ðåæèìå êîíåö èãðû
{
Åñëè IQ ïðèñëàë "çàêðûëñÿ":
Q1. âêëþ÷èòü ðåæèì ìåíþ.
Èíà÷å ïåðåéòè íà 1.
}
Åñëè â ðåæèìå ìåíþ
{
Åñëè "çàêðûòü":
Q1. çàêðûòü ñåáÿ ñ îòâåòîì àâòîðó ñîîáùåíèÿ "çàêðûòü".
Åñëè ...
...
Åñëè ...
B1. âêëþ÷èòü ðåæèì èãðîâîãî öèêëà.
B2. ñîçäàòü IQ ñ âûñîêèì ïðèîðèòåòîì.
B3. ïåðåéòè íà 1.
}

ìîæíî ïðåäóñìîòðåòü ïðîöåäóðó çàêðûòèÿ, çàìîðàæèâàþùóþ ïðîãðàììó, êîòîðàÿ ïîñëàëà äðóãîé ïðîñüáó î çàêðûòèè, íî GUI åþ ïîëüçîâàòüñÿ íå ìîæåò.

åñëè íóæíû GETMSG áåç çàäåðæåê, åñëè ñîîáùåíèé íåò, òî âûõîä - ôóíêöèÿ îæèäàíèÿ ãîòîâíîñòè äðàéâåðà ýêðàíà, êîòîðàÿ â îáùåì ñëó÷àå ðàáîòàåò òàê:
1. ïðîãðàììà øë¸ò äðàéâåðó ñîîáùåíèå "îòâåòü, êîãäà ãîòîâ" è èäåò íà öèêë ïðè¸ìà ñîîáùåíèé;
2. êîãäà äðàéâåð ïîëó÷àåò ýòî ñîîáùåíèå â ñâî¸ì öèêëå ïðè¸ìà ñîîáùåíèé, îí ïîñûëàåò îòïðàâèòåëþ ñîîáùåíèå "ýêðàí ãîòîâ" è îïÿòü èä¸ò íà öèêë ïðè¸ìà ñîîáùåíèé;
3. ïðîãðàììà ðåàãèðóåò íà ñîîáùåíèå "ýêðàí ãîòîâ".


Èãðà òèïà Wolf/Quake äîëæíà ðàáîòàòü ïî ïðèíöèïó êëèåíò-ñåðâåð.
Êëèåíò ðàç â êàäð ÷èòàåò êëàâèàòóðó+ìûøü (èëè ôàéë äåìî) è ïîñûëàåò å¸ ñåðâåðó â î÷åðåäü.
Ñåðâåð ÷èòàåò î÷åðåäü è îáðàáàòûâàåò ÈÈ è äâèæåíèÿ èãðîêà. (Äàæå åñëè ïîïàä¸òñÿ êàäð > 70000t, ñîõðàíèòñÿ ïðåäñêàçóåìîñòü.)
Âîçâðàùàåò î÷åðåäü êîîðäèíàò (ñîñòîÿíèå èãðîêà + êîîðäèíàòû è âíåøíèé âèä êàæäîãî àêòèâíîãî/âèäèìîãî îáúåêòà),
ýòî ìîæíî äåëàòü ïî õîäó îáðàáîòêè èãðîêà è îáúåêòîâ.
Ñåðâåð ìîæåò áûòü óäàë¸ííûì (íàïðèìåð, General Sound).
Âòîðîé ïðîöåññ êëèåíòà ÷èòàåò î÷åðåäü êîîðäèíàò è ñòðîèò êàðòèíêó.
Åñëè ïðèøëî íåñêîëüêî êàäðîâ ñ êîîðäèíàòàìè, áðàòü ïîñëåäíèé (÷èòàòü èõ ïîâåðõ äðóã äðóãà, ïîêà â êîíöå ÷òåíèÿ êàäðà íå áóäåò EOF).
Åñëè êëàâèàòóðà áóôåðèçîâàíà, òî ìîæíî îäèí ïðîöåññ êëèåíòà
(ïîñëå ïîñòðîåíèÿ êàðòèíêè ÷èòàòü âñå íàêîïèâøèåñÿ ñîáûòèÿ êëàâèàòóðû+ìûøè è ïåðåäàòü èõ ñåðâåðó).
Ìîæíî ëè îáîéòèñü áåç ïðîâåðêè EOF è ëèøíèõ êàäðîâ? Ïîñëå ïîñòðîåíèÿ êàðòèíêè ïîñûëàòü ñåðâåðó ãîòîâíîñòü ÷èòàòü (â îòäåëüíóþ î÷åðåäü)?
Îí ìîæåò å¸ ïðèíÿòü (âñ¸-òàêè ñ ïðîâåðêîé EOF) íå âîâðåìÿ, õîòÿ â ñðåäíåì áóäåò âûäàâàòü ñêîëüêî íàäî êàäðîâ (åñëè ãîòîâíîñòü íå î÷åðåäü, à ôëàã, òî ìåíüøå êàäðîâ, ÷åì íàäî).

Ïî èäåå íóæíî îáåñïå÷èòü ïëàâíîñòü äâèæåíèÿ íåçàâèñèìî îò ñåðâåðà (ýòî ïîòðåáóåò ÈÈ äëÿ êàæäîãî ïåðñîíàæà â êëèåíòå),
à ñ ñåðâåðà âûäàâàòü äàííûå ìîæíî íå êàæäûé êàäð
(ýòî íå ïîìåøàåò çàñ÷èòûâàòü ïîïàäàíèÿ, õîòÿ óõóäøèò èãðîêó âîçìîæíîñòü îïðåäåëÿòü, ãäå êòî â äàííûé ìîìåíò).




Ïðîãðàììà â öèêëå îáðàáîòêè ñîîáùåíèé (îíà ìîæåò èìåòü íåñêîëüêî òàêèõ öèêëîâ) âûçûâàåò ïðîöåäóðó GETMSG, êîòîðàÿ ïåðåõîäèò íà øåäóëåð.
50Hz âûäàåò ñîáûòèå "òàéìåð", ñòàâèò ôëàã òàéìñëàéñà äëÿ òåêóùåé çàäà÷è è ïåðåõîäèò íà øåäóëåð.
Øåäóëåð äåëàåò ñëåäóþùåå:
Åñëè åñòü õîòü îäíà çàäà÷à ñ ïðèîðèòåòîì ðåàëòàéì, êîòîðîé ïðèøëî ñîáûòèå, òî óäâèíóòü å¸ â êîíåö ñïèñêà ðåàëòàéì (èëè ïåðåìåñòèòü êóðñîð íà ñëåäóþùóþ â ñïèñêå) è ïåðåéòè íà íå¸.
Åñëè åñòü õîòü îäíà çàäà÷à ñ ïðèîðèòåòîì íîðìàë, êîòîðîé ïðèøëî ñîáûòèå èëè ó êîòîðîé ôëàã òàéìñëàéñà, òî óäâèíóòü å¸ â êîíåö ñïèñêà íîðìàë (èëè ïåðåìåñòèòü êóðñîð íà ñëåäóþùóþ â ñïèñêå) è ïåðåéòè íà íå¸.
Åñëè åñòü õîòü îäíà çàäà÷à ñ ïðèîðèòåòîì èäëå, òî óäâèíóòü å¸ â êîíåö ñïèñêà èäëå (èëè ïåðåìåñòèòü êóðñîð íà ñëåäóþùóþ â ñïèñêå) è ïåðåéòè íà íå¸.
针֌ HALT.
Ìîæíî ñäåëàòü 256 ïðèîðèòåòîâ: âñå â îäíîì ñïèñêå îòñîðòèðîâàíû ïî ïðèîðèòåòàì.
 êàæäîì îïèñàòåëå ñòîèò óêàçàòåëü íà íà÷àëî ñïèñêà ñî ñâîèì ïðèîðèòåòîì.

âåçäå, ãäå ñòîèò êîíòåêñò çàäà÷è, åå ñòåê, åå ñòðàíèöà è íå âêëþ÷åí ôëàã øåäóëåðà, ìîæíî ñ÷èòàòü, ÷òî âûïîëíÿåòñÿ çàäà÷à

îáðàáîò÷èê NMI - ïåðåõîä íà ON_INT (ìîæíî ñ ôëàãîì, ÷òîáû ëåã÷å îïðåäåëèòü NMI?)

ïðè áóôåðå 54 áàéòà (ÀÒÌ) ìîæíî ïðèíèìàòü RS232 ïî òàéìåðó 50Hz ñî ñêîðîñòüþ äî 23040 (äåëèòåëü 5) âêëþ÷èòåëüíî

íàäî ÷òîáû RS232 ïî òàéìåðó è ïî ðîäíîìó ïðåðûâàíèþ ìîæíî áûëî þçàòü îäèíàêîâî




Åñëè âñå ñîîáùåíèÿ äëÿ âñåõ çàäà÷ â îäíîé êó÷å, òî ïëîõî:
ñïèñîê ëåæèò â çàöèêëåííîé îáëàñòè ïàìÿòè, è äàæå åñëè êàæäàÿ çàäà÷à âîâðåìÿ çàáèðàåò ñâîè ñîîáùåíèÿ, òî ñïèñîê ðàíî èëè ïîçäíî áóäåò ôèçè÷åñêè èñïîð÷åí (áóäåò äûðÿâûé, íî òåì íå ìåíåå íîâîå ñîîáùåíèå íàëåçåò íà ñòàðîå)

Ïîýòîìó íàäî ñïèñîê ñîîáùåíèé ó êàæäîé çàäà÷è ñâîé, â å¸ ãëàâíîé ñòðàíèöå

ó êàæäîé çàäà÷è:

Struct app
Byte priority ;ïðèîðèòåò
Byte flags ;ôëàãè (factive, ftimeslice, fusetimer)
Word mainpg ;ãëàâíàÿ ñòðàíèöà çàäà÷è (òàì î÷åðåäü ñîîáùåíèé)
Word curmsg ;àäðåñ òåêóùåãî ñîîáùåíèÿ ýòîé çàäà÷å
Word endmsg ;àäðåñ êîíöà î÷åðåäè ñîîáùåíèé ýòîé çàäà÷å
Word curpg ;òåêóùàÿ ñòðàíèöà
Word sp ;òåêóùèé àäðåñ ñòåêà (ìîæíî õðàíèòü â ÒÅÊÓÙÅÉ ñòðàíèöå, íî ýòî áåññìûñëåííî)
Word next ;óêàçàòåëü íà ñëåäóùóþ çàäà÷ó (ñëåäóþùàÿ çà âûïîëíÿåìîé âíóòðè òîãî æå ïðèîðèòåòà)
;[íîìåð çàäà÷è, êîòîðàÿ æä¸ò ãîòîâíîñòè ýòîé çàäà÷è - ðåàëüíî ýòî ñïèñîê è ïðèâÿçàí ê ìüþòåêñàì/ñåìàôîðàì]
EndStruct

øåäóëåð äåëàåò òàê:
èùåò ïåðâóþ àêòèâíóþ çàäà÷ó îò íà÷àëà ñïèñêà çàäà÷ (ò.å. îò ñàìûõ ïðèîðèòåòíûõ)
åñëè îíà èìååò òîò æå ïðèîðèòåò, ÷òî "ñëåäóþùàÿ âíóòðè ïðèîðèòåòà", íî ðàñïîëîæåíà ðàíüøå - ïðîïóñêàåì
åñëè íàøëè, èùåì "ñëåäóþùóþ âíóòðè ïðèîðèòåòà", çàïîìèíàåì åå, âõîäèì â çàäà÷ó.

ìîæíî óñêîðèòü:
ïðè âõîäå â çàäà÷ó ðåêîðä="ñëåäóþùàÿ âíóòðè ïðèîðèòåòà"
ïðè ïîñûëêå ñîîáùåíèÿ (â òàéìñëàéñå óñëîâèå íå âûïîëíèòñÿ) ñìîòðèì: åñëè àêòèâèðóåìàÿ çàäà÷à èìååò ïðèîðèòåò âûøå, ÷åì òåêóùàÿ(èëè ÷åì "ñëåäóþùàÿ âíóòðè ïðèîðèòåòà", ÷òî ýêâèâàëåíòíî) çàäà÷à è ïðè ýòîì ñòîèò ðàíüøå, ÷åì ðåêîðä, òî ðåêîðä=àêòèâèðóåìàÿ çàäà÷à
øåäóëåð íà÷èíàåò ïðîñìîòð ñïèñêà çàäà÷ ñ çàäà÷è ðåêîðä.


î÷åðåäü ñîîáùåíèé ëåæèò â çàöèêëåííîé îáëàñòè ïàìÿòè (256 áàéò)
è ñîñòîèò èç ñîîáùåíèé ñëåäóþùåãî âèäà:

Struct msg
Word type ;òèï ñîîáùåíèÿ (2 á)
Word sender ;àâòîð ñîîáùåíèÿ (2 á)
Array param,12 ;ïàðàìåòðû (2-áàéòíûå) - ÷èñëî ôèêñèðîâàíî!!! 6 øò? (òîãäà ñòðóêòóðà=16 áàéò)
EndStruct

Î÷åðåäü ñîîáùåíèé ìîæåò áûòü â ëþáîì ìåñòå ñòðàíèöû, âûðàâíåííîì ïî 256 áàéò. Ò.ê. îäíà çàäà÷à ìîæåò èìåòü ìíîãî ïîòîêîâ, è ðàñòî÷èòåëüíî ïîä êàæäûé âûäåëÿòü ñòðàíèöó. Íî èìÿ çàäà÷è äîñòàòî÷íî îäíî - ïî ôèêñèðîâàííîìó àäðåñó (#C000)? Òîãäà Ctrl+Alt+Del áóäåò ïîêàçûâàòü ïîäçàäà÷è êàê "èìÿ;àäðåñ î÷åðåäè ñîîáùåíèé"

Ìîæíî äèíàìè÷åñêóþ î÷åðåäü ñîîáùåíèé (ñ óêàçàòåëåì íà ñëåäóþùåå ñîîáùåíèå),
÷òîáû òåëî ñîîáùåíèÿ ëåæàëî â ïàìÿòè îòïðàâèòåëÿ.
Íî êàê îòïðàâèòåëü (íàïðèìåð, êëàâèàòóðà) áóäåò âûäåëÿòü ïàìÿòü ïîä ñîîáùåíèÿ,
åñëè îíà íå æä¸ò, êîãäà èõ çàáåðóò?

Windows.pas:
  tagMSG = packed record
    hwnd: HWND;
    message: UINT;
    wParam: WPARAM;
    lParam: LPARAM;
    time: DWORD;
    pt: TPoint;
  end;

Types.pas:
  TPoint = packed record
    X: Longint;
    Y: Longint;
  end;
Òî åñòü äîñòàòî÷íî òèï + 4 ïàðàìåòðà + âðåìÿ(çà÷åì?)






áûëî áû êðóòî ôàéëû íàñòðîåê äëÿ ïðîãðàìì ïîääåðæèâàòü íà óðîâíå ñèñòåìû, ÷òîáû ïðîãðàììû èõ âèäåëè êàê ïåðåìåííûå. íà âûõîäå îáíîâëÿëè ôàéë, åñëè ïåðåìåííûå èçìåíèëè.





[20:15] <alone> âîò ÷òî ÿ âèæó â êà÷åñòâå îñè íà ZX:  MagOS (ïî ñóòè ìíîãî òåðìèíàëîâ) + ìíîãîçàäà÷íîñòü + äðàéâåðû
[20:16] <alone> ïåðåêëþ÷åíèå ïî íìè (íàäî Alt+Tab, ïî ôàêòó îòæàòèÿ, ò.ê. ïåðåêëþ÷åíèå ìåæäó òðäîñ-çàäà÷àìè áóäåò äîëãî)
[20:16] <alone> òðäîññîôò çàïóñêàåòñÿ â îäíîçàäà÷íîì ðåæèìå
[20:16] <alone> ïîñëå íåãî íàäî âñþ ïàìÿòü îáðàòíî âîññòàíàâëèâàòü
[20:17] <alone> â ìíîãîçàäà÷íîì ðåæèìå êàæäîé çàäà÷å âûäåëÿåòñÿ 47K íåïðåðûâíî ñ àäðåñà #400 + ñêîëüêî óãîäíî ñòðàíèö (ñêîëüêî çàïðîñèò)
[20:17] <savelij13> äûê ýòî íå îñü à ìàíàãåð çàïóùåííûõ ïðîã )
[20:17] <alone> íåååå, ìîæíî áóäåò äåëàòü âñ¸ òî æå, ÷òî â âèíäå, òîëüêî áåç îêîøåê
[20:18] <alone> íàïðèìåð ðàð ðàðèò, ïëååð ïëåèò, à ìû ïîêà ïðîãó ñî÷èíÿåì
[20:18] <savelij13> äûê ÷î íóíî ïèëèòü ñèìáîñ? òîêà ÿ õç êàê îáîéòè âäï
[20:18] <alone> âîò ìíå êàæåòñÿ ÷òî ñèìáîñ íåíóæåí
[20:18] <alone> òðóäíî åãî áóäåò îñâîèòü þçåðàì
[20:19] <alone> ïîòîì êàê-íèáóòü
[20:19] <savelij13> ïî÷åìó?
[20:19] <alone> ïîòîìó ÷òî òàì ñîâñåì äðóãîå ïðîãðàììèðîâàíèå
[20:19] <alone> äðóãàÿ êîíöåïöèÿ ýêðàíà íàïðèìåð
[20:19] <alone> à òóò ïèøåøü êàê ïîä îáû÷íûé àòì, òîëüêî âìåñòî ï/ï ïåðåêëþ÷åíèÿ ïàã âûçûâàåøü îñü
[20:19] <savelij13> áóãàãà. ÷î òî ÿ íåíàáëþäàþ ïðîãðàììåðîâ. äàæå àëüòåðíàòèâû åðñ íåòó è íå ïðèäâèäèöà )
[20:20] <alone> ÿ õîòåë ïèñàòü îñü â ñâî¸ âðåìÿ, ïîòîìó ÷òî ìíå íå õâàòàëî íåïðåðûâíîãî ìåñòà ïîä êîä
[20:20] <alone> 47Ê ìîæíî äàæå íà ñè ïèñàòü
[20:20] <alone> ìîæíî äàæå 63Ê, åñëè çàäà÷à íå þçàåò äàííûå â ïàãàõ
[20:20] <savelij13> äûê åñòü æå ìñõäîñ ê òîìó æå îáðàòíîñîìåñòèìûé ñ öïì
[20:21] <alone> òàì íåò ìíîãîçàäà÷íîñòè äàæå à-ëÿ ìàãîñ
[20:21] <alone> íî âûçîâû ìñõäîñ ìîæíî ñäåëàòü
[20:21] <savelij13> à êòî ìåøàåò åå ïðèêðóòèòü?
[20:21] <alone> 100% ñîâìåñòèìûå
[20:21] <savelij13> òåì áîëåå åñëè íìè òî ïðè÷îì òàì áóäåò ìñõäîñ?
[20:22] <alone> ôàéëîâûå îïåðàöèè
[20:35] <alone> äàæå ñ àäðåñà #100 íàäî êîä, ÷òîáû óæ ñîâñåì öï/ì ïîäîáèå
[20:35] <alone> ïî êðàéíåé ìåðå ìíå êàæåòñÿ ÷òî ýòî ñàìàÿ æèçíåñïîñîáíàÿ êîíöåïöèÿ. ÿ ìíîãî ðàçíûõ ïåðåäóìàë
[20:36] <alone> ïî ñóòè â èíòåðôåéñå öï/ì íàäî äîáàâèòü êîìàíäû "çàêàçàòü ïàãó", "âêëþ÷èòü ïàãó", "îñâîáîäèòü ïàãó"
[20:37] <alone> sleep - ÷åðåç getch
[20:37] <alone>  ïîòîì ìîæíî óñëîæíÿòü
[20:37] <alone> ïðîáëåìû â ðåàëèçàöèè òàêèå:
[20:38] <alone> êàê ïåðåäàâàòü äàííûå â äðàéâåð ôàòà
[20:38] <alone> êàê ñäåëàòü åãî ðååíòåðàáåëüíûì èëè æå çàïèðàòü ñåìàôîðîì



[16:21:03] <Leaf44119> Ïóáëè÷íûé API - íå âîðîáåé, îïóáëèêóåøü - íå óáåð¸øü
[16:21:27] <Leaf44119> Òàê âîò ïî÷åìó àïè òàê ðàçðàñòàþòñÿ - óáèðàòü-òî íè÷åãî íåëüçÿ


Íàäî ïîä çàäà÷ó èëè äðàéâåð 63ê ëèáî 47ê+îêíî.
Êàê ïåðåäàâàòü äàííûå â äðàéâåð?
à) Óêàçàòåëåì ñî ñòðàíèöåé?
á) Èëè óêàçàòåëåì è âêëþ÷èòü ñòðàíèöó?
â) Èëè ñòåêîì è âêëþ÷èòü ñòðàíèöó?
Ãäå íà÷àëüíîå ïîëîæåíèå sp? 0 äëÿ 63ê, ö000 äëÿ 47ê?
Íèêàêîãî äðàéâåðà ïàìÿòè! Ììó â ñèñòåìå òîæå íå ìåíÿåòñÿ
Òåêñò.ðåä.: äåëèòü ïî êóðñîðó, äèíàìè÷åñêè ñîçäàâàòü è õðàíèòü ðàçìåòêó òåêñòà äëÿ êàæäîé ñòðàíèöû ïåðåä êóðñîðîì, ÷òîáû ìîòàòü íàçàä

Êàê ïèñàòü ïðîãè ïîä àòì âèäåîêàðòó, ÷òîáû ñîâìåñòèìî ñ îñüþ? Äàæå åñëè åùå 31ê ïðîãè: Âûçîâû îñè ìîæíî ïåðåêðûâàòü, íî íå èì1!!! Äåëàòü èì2 äëÿ 31ê ïðîã? È âñå âûçîâû äðóãèå? Èëè ïåðåä âûçîâîì çàñòàâëÿòü ñòàâèòü ïðàâèëüíóþ ïàãó â 0?

Âûêèíóòü â àòìêîíô: åôô7, ìóëüòèêîëîð, 16ö, îçó â 0, ñòàðøèå áèòû 7ôôä, 7 ìãö, 320 ñòðîê, èíòåðôåéñ ñ ïðîöîì íà ïëàòå, àðáèòð (÷èòàòü ñðàçó âñþ ñòðîêó â ïàóçàõ ç80 èëè îñòàíîâèâ íåêñòç80) - îñòàâèòü òîëüêî íåêñòç80. À êàê æå zxbus?



êîíöåïöèÿ-ìàêñèìóì:
ñòàíäàðòíûé 128Ê (48K?)
÷òîáû íà ñèñòåìó ëîæèëñÿ ñè, òî åñòü ðåêóðñèÿ (è êó÷à, àëëîêè ìàêñ 16Ê! èëè ëþáûå ÷åðåç ìàññèâû íà ñåãìåíòàõ)
áåñêîíå÷íûé ñòåê (äåëàåòñÿ ðó÷êàìè íà hl', òàì íîìåðà òî÷åê, à íå àäðåñà), íàñòîÿùèé ñòåê òîëüêî äëÿ âûçîâà ÎÑ
áåñêîíå÷íûé îáú¸ì êîäà äëÿ êàæäîãî ïðîöåññà (ñâîï íà ëåòó ïðè êàæäîì äæàìïå)
áåñêîíå÷íîå êîëè÷åñòâî ïðîöåññîâ
ñâîïèíã âñåãî þçåðïðîæíîãî
íèêàêîé ñàìîìîäèôèêàöèè â þçåðïðîãàõ

Ñâîï âíóòðè íèæíåé ïàìÿòè äàæå ïðè àáñîëþòíîé ðåëîöèðóåìîñòè âñåõ ïîëüçîâàòåëüñêèõ
ïðîãðàìì èìååò âîïðîñû:
1. Êîãäà ðåëîöèðîâàòü (ïðè äåñâîïå?)
2. ×òî ñâîïèòü
3. Êóäà ðàçìåùàòü âíîâü çàãðóæàåìûå ïðîãðàììû
4. Êàê ñâîïèòü, íå íàðóøàÿ ðàáîòó øåäóëåðà (æåëàòåëüíî ñâîï â êîíòåêñòå ïðîöåññà (äëÿ ýòîãî íóæíî èìåòü ñòåê ïðîöåññà â ïàìÿòè), âíå êðèòè÷åñêîé ñåêöèè)
5. Êàê íå ñâîïèòü, íàïðèìåð, äðàéâåð ïàìÿòè (íåñâîïëÿåìûå ðàñòóò ñâåðõó, ñâîïëÿåìûå ñíèçó? à êàê íàðàñòèòü íåñâîïëÿåìûå, åñëè ìåñòî óæå çàíÿòî ñâîïëÿåìûì íåðåëîöèðóåìûì?) (äðàéâåð ïàìÿòè â ÿäðå?)

×òîáû ýôôåêòèâíåå è áûñòðåå (ò.å. íå ïåðåìåùàòü ìîäóëè öåëèêîì) ðàñïðåäåëÿòü íèæíþþ ïàìÿòü â ÑÄÍÏ, íóæíî ðàçáèâàòü ïðîãðàììû è ñòàòè÷åñêèå äàííûå íà ñåãìåíòû ïî 256 áàéò.
Ýòî ìîæíî ïîðó÷èòü êîìïèëÿòîðó (DS n ïåðåíîñèòü íà ñåãìåíò âïåð¸ä ïðè íåîáõîäèìîñòè, à â êîäå
ïðè äîñòèæåíèè àäðåñà >=#xxfa ñòàâèòü jp #(xx+1)00. åñëè ñ xxfa íå ïåðåïðûãèâàòü, òî ìîæåò
âñòðåòèòüñÿ 4-áàéòíàÿ êîìàíäà, è jp íå ïîìåñòèòñÿ.
â ïðîãðàììàõ íåëüçÿ èñïîëüçîâàòü jr âïåð¸ä.
jr íàçàä ìîæíî àâòîìàòè÷åñêè çàìåíÿòü íà jp ïðè íåîáõîäèìîñòè.
djnz òîëüêî åñëè íå æàëêî ôëàãà Z, ò.ê. çàìåíà - dec b:jp nz).
Ñîñòàâëåíèå ñïèñêà àäðåñîâ ðåëîêàöèè òîæå ìîæíî ïîðó÷èòü êîìïèëÿòîðó.
ïðè ðàáîòå òàêîãî ìîäóëÿ âñ¸ ðàâíî òðåáóåòñÿ, ÷òîáû âñå åãî äàííûå áûëè â íèæíåé ïàìÿòè (â òîì ÷èñëå çàêàçàííûå).
áîëüøèå áóôåðà â íèæíåé ïàìÿòè (äëÿ zxrar) íóæíî çàêàçûâàòü êóñî÷êàìè ïî 256 áàéò (èëè ñòàòè÷åñêè
ñêîìïèëèðîâàòü ìíîãî òàêèõ êóñî÷êîâ),
è ïîòðåáóåòñÿ òàáëèöà ñòàðøèõ áàéòîâ àäðåñîâ ïîëó÷åííûõ êóñî÷êîâ, êîòîðóþ ñèñòåìà òîæå äîëæíà óìåòü
ðåëîöèðîâàòü íà ëåòó.

Èòîãî íàäî ðåëîöèðîâàòü (òîëüêî ñòàðøèé áàéò â êàæäîì ñëó÷àå):
âíóòðåííèå ïåðåõîäû
îáðàùåíèÿ ê ñòàòè÷åñêèì ïåðåìåííûì
ïåðåìåííûå òèïà "óêàçàòåëü íà âíóòðåííèå äàííûå"
òàáëèöà ñòàðøèõ áàéòîâ àäðåñîâ êóñî÷êîâ
ðåãèñòðû òèïà "óêàçàòåëü íà âíóòðåííèå äàííûå" (òèï ðåãèñòðà ìîæíî ìåíÿòü ñèñòåìíûì ìàêðîñîì)

âñ¸ ïåðå÷èñëåííîå, êðîìå ðåãèñòðîâ, ðåëîöèðóåòñÿ îäíèì è òåì æå ìåõàíèçìîì - ïî ñïèñêó àäðåñîâ è ñïèñêó "ñòàðûé àäðåñ ñåãìåíòà - íîâûé àäðåñ ñåãìåíòà"
ìîæíî ïðåäóñìîòðåòü ÿ÷åéêè äëÿ õðàíåíèÿ ðåãèñòðîâ, êîãäà ïðîöåññ íåàêòèâåí, è ðåëîöèðîâàòü èõ òàê æå
ìîæíî èñïîëüçîâàòü òèï "óêàçàòåëü" êàê òèï "óêàçàòåëü èëè NULL", ò.ê. 0 íå áóäåò ðåëîöèðîâàòüñÿ, èáî åãî íåò â ñïèñêå
êàê óñêîðèòü ðåëîêàöèþ?
exd â ñëó÷àå, åñëè òèï de!=òèï hl, íóæíî äåëàòü ÷åðåç ñèñòåìíûé ìàêðîñ
ld h,(hl) â ñëó÷àå, åñëè ñò.òèï hl!=íîâ.òèï hl, íóæíî äåëàòü ÷åðåç ñèñòåìíûé ìàêðîñ
ld l,(hl) â ñëó÷àå, åñëè ñò.òèï hl!=íîâ.òèï hl, íóæíî äåëàòü ÷åðåç ñèñòåìíûé ìàêðîñ (îíî âîîáùå íàäî?)
ld hl,(hl) - òîæå ñèñòåìíûé ìàêðîñ, ÷òîáû íå ïàðèòüñÿ ñ ðåãèñòðîì A
íåëüçÿ êëàñòü â ñòåê íåóêàçàòåëè.
ëó÷øå äàæå âîîáùå íå èñïîëüçîâàòü push:pop, êàê è jr, ÷òîáû íå áûëî íàäîáíîñòè ïðîâåðÿòü.
ïðè ýòîì íåâîçìîæíà ðåêóðñèÿ.

ñèñòåìíûå âûçîâû (íàïðèìåð, setpage) íå ìîãóò ñîõðàíÿòü ðåãèñòðû êàêèì áû òî íè áûëî îáðàçîì
(íåëüçÿ â ëîêàëüíûå ïåðåìåííûå: 1. íåèçâåñòíû òèïû ýòèõ ðåãèñòðîâ (ìîæíî óçíàòü, íî äîëãî);
2. ýòà æå ï/ï ìîæåò ïàðàëëåëüíî áûòü âûçâàíà äðóãèì ïðîöåññîì è çàòð¸ò ýòè ïåðåìåííûå)

èëè êàæäàÿ çàïèñü â ñòåê - ýòî 4 áàéòà, èç êîòîðûõ 2 óêàçàòåëü (ðåëîöèðóåòñÿ), à 2 ÷èñëî (íåò)
âûçîâ: push af:call [z,]...:pop af
çàïîìèíàíèå ÷èñëà bc: push bc,bc:...:pop bc(ðåëîöèðóåòñÿ),bc
çàïîìèíàíèå óêàçàòåëÿ hl: push af,hl:...:pop hl(ðåëîöèðóåòñÿ),af


åñëè ðåãèñòðû íå òèïèçèðóþòñÿ, à óêàçàòåëè ëåæàò òîëüêî â IX, IY, òî êàê ïðî÷èòàòü
óêàçàòåëü èç ïåðåìåííîé è çàïèñàòü åãî îáðàòíî?
÷èòàòü:
ld (pointer1),ix
pointer1=$+2 ;H ðåëîöèðóåòñÿ, åñëè íàäî
ld iy,(0)
;40t

ïèñàòü:
ld (pointer1),ix
pointer1=$+2 ;H ðåëîöèðóåòñÿ, åñëè íàäî
ld (0),iy
;40t

Åñëè íàäî ïðî÷èòàòü èç (ix+...), òî ïðèä¸òñÿ èñïîëüçîâàòü ìàòåìàòèêó :(
push ix ;óêàçàòåëü, òàê ÷òî ñòåê ñðåëîöèðóåòñÿ ïðàâèëüíî
ld de,...
add ix,de
ld (pointer1),ix
pointer1=$+2 ;H ðåëîöèðóåòñÿ, åñëè íàäî
ld iy,(0)
pop ix
;94t

ïèñàòü:
push ix ;óêàçàòåëü, òàê ÷òî ñòåê ñðåëîöèðóåòñÿ ïðàâèëüíî
ld de,...
add ix,de
ld (pointer1),ix
pointer1=$+2 ;H ðåëîöèðóåòñÿ, åñëè íàäî
ld (0),iy
pop ix
;94t

À òàê íå ïîëó÷èòñÿ:
ld a,ly
ld (ix+...),a
???ld (pointer1),ix ;?????????
ld (ix+(...+1)),0
pointer1=$-1-1 ;ðåëîöèðóåòñÿ, åñëè íàäî (òîëüêî H)

Åñëè òîëüêî IX,IY, òî íåëüçÿ èñïîëüçîâàòü LDIR è áûñòðûå ôàéë-áóôåðû (256 áàéò (DE),(HL)).
×òî äåëàòü ñ ôàéë-áóôåðîì, îòêðûòûì íà çàïèñü, êîãäà ïðîöåññ ïðåðâàëè?
Ïðîôëàøèòü àâòîìàòè÷åñêè? Äëÿ ýòîãî íàäî åù¸ îäèí òèï ðåãèñòðà - óêàçàòåëü íà
ôàéë-áóôåð íà çàïèñü, èëè ñèñòåìà ñàìà îïðåäåëèò ïî àäðåñó?


ëó÷øå âñþ ðàáîòó ñ óêàçàòåëÿìè äåëàòü â êðèòè÷åñêèõ ñåêöèÿõ.
à â ïåðåìåííûõ ëåæàò òîëüêî ñìåùåíèÿ.





âíåøíèå ïåðåõîäû (â äðóãèå ìîäóëè) ïðîèñõîäÿò ÷åðåç ñèñòåìíûé ìàêðîñ, è ñêîðåå âñåãî èì ðåëîêàöèÿ íå òðåáóåòñÿ.
ñèñòåìíûå âûçîâû íå ðåëîöèðóþòñÿ, îíè ïðîèñõîäÿò ÷åðåç ñèñòåìíûé ìàêðîñ è ëåæàò ïî ôèêñèðîâàííûì àäðåñàì.
óêàçàòåëè íà âíåøíèå äàííûå íå ðåëîöèðóþòñÿ, ò.ê. ïàìÿòü ïîä âíåøíèå äàííûå
âûäåëÿåòñÿ òîëüêî öåëûìè ñòðàíèöàìè.
íîìåðà ñòðàíèö íå ðåëîöèðóþòñÿ, ò.ê. ó íàñ íåò ñâîïà íà äèñê (òî÷íåå, ó íàñ íåò ñâîïà íà äèñê, ò.ê. íîìåðà ñòðàíèö íå ðåëîöèðóþòñÿ è íå ïåðåñ÷èòûâàþòñÿ ïðè èñïîëüçîâàíèè).

ðåëîêàöèÿ ïðîèñõîäèò ïðè âõîäå â ìîäóëü ïîñëå äåñâîïà èëè
îäíîâðåìåííî ñ íèì. îíà ïðîèçâîäèòñÿ â êîíòåêñòå ïðîöåññà.
â êîíòåêñòå ÿäðà (â êðèòè÷åñêîé ñåêöèè) äåñâîïèòñÿ òîëüêî ñòåê (èñïîëüçîâàííàÿ ÷àñòü),
áåç íåãî íåëüçÿ âîéòè â êîíòåêñò ïðîöåññà.
ïîñêîëüêó ðåëîêàöèÿ ïðîèñõîäèò ïðè âõîäå â ìîäóëü, òàì ìîæåò ïîíàäîáèòüñÿ
ðåëîöèðîâàòü îáðàùåíèÿ ñðàçó êî ìíîãèì ñåãìåíòàì.
îáðàùåíèÿ èç êîäà ìîæíî çàðàíåå çàïèñàòü â ñïèñêè ïî êàæäîìó ñåãìåíòó,
è ïðè äåñâîïå êàæäîãî ñåãìåíòà îáðàáàòûâàòü òîëüêî îäèí òàêîé ñïèñîê.
îáðàùåíèÿ èç äàííûõ è ðåãèñòðîâ íàäî áóäåò îáðàáàòûâàòü âñå ïîäðÿä,
íå ïðè äåñâîïå êàæäîãî ñåãìåíòà, à ïîñëå ïîëíîãî äåñâîïà.
êàæäàÿ ðåëîöèðóåìàÿ ÿ÷åéêà èìååò àäðåñ ñëåäóþùåãî âèäà:
(1 áàéò) íîìåð ñåãìåíòà â ìîäóëå
(1 áàéò) ñìåùåíèå â ñåãìåíòå
ïðè ðåëîêàöèè íàäî èìåòü ïîä ðóêîé òàáëèöó <ñò. áàéò àäðåñà ñåãìåíòà>(<íîìåð ñåãìåíòà â ìîäóëå>)
äëÿ òåêóùåãî ìîäóëÿ.

äëÿ êàæäîãî ñåãìåíòà ìîäóëÿ íóæíî çíàòü òåêóùèé ñëîò, ãäå îí íàõîäèòñÿ
äëÿ êàæäîãî ñëîòà ïàìÿòè íóæíî çíàòü óêàçàòåëü, ãäå îí â î÷åðåäè äîñòóïíûõ ñëîòîâ, ïëþñ óêàçàòåëü
íà ïðåäûäóùèé ýëåìåíò ýòîé î÷åðåäè (÷òîáû ìîæíî áûëî èñêëþ÷èòü ýòîò ýëåìåíò)

ïåðåõîä íà ìîäóëü:
==================
äëÿ êàæäîãî ñåãìåíòà ìîäóëÿ
{
ïðîâåðÿåì, åñòü ëè îí â ÍÄÏ
åñëè åñòü, òî ïåðåíîñèì ñëîò, ãäå îí íàõîäèòñÿ, â õâîñò î÷åðåäè äîñòóïíûõ ñëîòîâ
}
äëÿ êàæäîãî ñåãìåíòà ìîäóëÿ
{
ïðîâåðÿåì, åñòü ëè îí â ÍÄÏ
åñëè íåò, òî
{
áåð¸ì ñåãìåíò èç íà÷àëà î÷åðåäè äîñòóïíûõ ñëîòîâ
ïåðåíîñèì åãî â õâîñò î÷åðåäè äîñòóïíûõ ñëîòîâ (åñëè î÷åðåäü êîëüöåâàÿ, òî àâòîìàòîì)
äåñâîïèì òåêóùèé ñåãìåíò ìîäóëÿ â ýòîò ñëîò
äîáàâëÿåì â ñïèñîê èçìåí¸ííûõ ñåãìåíòîâ
}
ñìîòðèì, èçìåíèëñÿ ëè àäðåñ ñåãìåíòà
åñëè äà, òî ðåëîöèðóåì êîä, ññûëàþùèéñÿ íà ýòîò ñåãìåíò
}
ïî ñïèñêó èçìåí¸ííûõ ñåãìåíòîâ ñîñòàâëÿåì òàáëèöó <íîâûé ñò. áàéò àäðåñà ñåãìåíòà>(<ñòàðûé ñò. áàéò àäðåñà ñåãìåíòà>)
ðåëîöèðóåì äàííûå è ðåãèñòðû, ïîëüçóÿñü äëÿ êàæäîãî ðåëîêàáåëüíîãî àäðåñà ýòîé òàáëèöåé
î÷èùàåì ñïèñîê èçìåí¸ííûõ ñåãìåíòîâ
âû÷èñëÿåì àäðåñ ïåðåõîäà íà ìîäóëü
ïåðåõîäèì òóäà

Ïðîöåññó íóæíî:
1. Âõîäû ÎÑ (â òîì ÷èñëå âõîäû ìåíåäæåðà ïàìÿòè)
2. Íèæíÿÿ ïàìÿòü ïîä êîä (åäèíèöà âûäåëåíèÿ - 256 áàéò? èëè 16?)
3. Íèæíÿÿ ïàìÿòü ïîä äàííûå (ìîæíî â îäíîì ñåãìåíòå ñ êîäîì, îòäåëåíèå ñåãìåíòà êîäà äëÿ øàðåíèÿ ìåæäó êîïèÿìè ïðîãðàììû íå îêóïèòñÿ ïðè ÏÑÎ, íî ìîæåò îêóïèòüñÿ ïðè ÑÍÄÏ)
4. Íèæíÿÿ ïàìÿòü ïîä ñòåê (äîñòàòî÷íî 256 áàéò)
5. Ñòðàíè÷íàÿ ïàìÿòü (ìîæíî íå ðàçðåøàòü êëàñòü òóäà êîä è ñòåê, õîòÿ äëÿ ïò ïëååðà íåóäîáíî çàíèìàòü ìåñòî âíèçó)
6. Äèíàìè÷åñêàÿ ïàìÿòü? (â ÍÄÏ ìîæíî âûäåëÿòü òàê æå, êàê ïîä êîä/äàííûå/ñòåê, ïî 256 áàéò)
7. Ýêðàí? (äîñòàòî÷íî ýêðàíà â ñòðàíèöàõ)
8. Ïàìÿòü ïîä ñîîáùåíèÿ (ìîæíî â ÍÄÏ; âûäåëåíèå ñòðàíèöû ìîæåò âûëèòüñÿ â áîëüøîå êîëè÷åñòâî çàíÿòûõ ïóñòûõ ñòðàíèö ÷èñòî äëÿ ñîîáùåíèé) (åäèíèöà âûäåëåíèÿ - 256 áàéò ïîä âñå ñîîáùåíèÿ çàäà÷è? èëè ïî 16 äëÿ êàæäîãî ñîîáùåíèÿ?)
9. Ïàìÿòü ïîä îïèñàíèå ïðîöåññà (â ÍÄÏ?)

Çàùèù¸ííàÿ îò ñâîïà ÍÄÏ (ãóé, ïò ïëååð...) ðàñò¸ò ñ íà÷àëà íèæíåé ïàìÿòè, à íåçàùèù¸ííàÿ - ñ êîíöà.
Ïðè èñ÷åðïàíèè íèæíåé ïàìÿòè íåçàùèù¸ííûå íà÷èíàþò ñâîïèòüñÿ è ãðóçèòüñÿ/çàêàçûâàòü ïàìÿòü îïÿòü ñ êîíöà íèæíåé ïàìÿòè.
Ïîñëå ñâîïà ïðîöåññû äîëæíû âñåãäà ïîïàäàòü íà òå æå ìåñòà!
Åñëè íèæíÿÿ ïàìÿòü çàêîí÷èòñÿ ïðè çàêàçå çàùèù¸ííîé ÍÄÏ, òî ïðîáëåìà:
ñâîïèòü íåçàùèù¸ííóþ íåëüçÿ - å¸ íåëüçÿ áóäåò ñâîïíóòü îáðàòíî.
Ïîýòîìó ïðèä¸òñÿ â ýòîì ñëó÷àå óáðàòü çàùèòó.
Åñëè êóñîê ïàìÿòè ëåæèò â ñâîïå, òî íà åãî ìåñòå ñòîïóäîâî ñòîèò äðóãîé íåçàùèù¸ííûé. Åñëè ýòîò äðóãîé îñâîáîæäàåòñÿ, òî îí íå îñâîáîæäàåò ñàì êóñîê ïàìÿòè! Èíà÷å ýòîò êóñîê ìîæåò çàõâàòèòü çàùèù¸ííàÿ ÍÄÏ, è íåçàùèù¸ííûé íå ñìîæåò âåðíóòüñÿ.
Åñëè íà êóñîê ïàìÿòè áîëüøå íå ïðåòåíäóåò íè îäèí íåçàùèù¸ííûé, îí îñâîáîæäàåòñÿ è äîñòóïåí äëÿ çàêàçà çàùèù¸ííûìè. Òî åñòü äëÿ êàæäîãî áëîêà ÍÄÏ íàäî çíàòü ÷èñëî èñïîëüçóþùèõ åãî ïðîöåññîâ.

Åñëè ðàçìåð áëîêà 16 áàéò, òî òðåáóåòñÿ 49152/16=3072 áàéòà äëÿ òàáëèöû çàíÿòîñòè (ïðè ìàêñ. 256 ïðîöåññàõ â êàæäîì êóñêå). Ïîëîæèòü â ñòðàíè÷êó?

Ñîîáùåíèÿ â ÍÄÏ äîëæíû ñîäåðæàòü óêàçàòåëü íà ñëåäóþùåå ñîîáùåíèå.
Ïðîöåññû â ÍÄÏ äîëæíû ñîäåðæàòü óêàçàòåëü íà ñëåäóþùèé ïðîöåññ.
 õóêàõ ïîäâåøåííûå îáðàáîò÷èêè äîëæíû õðàíèòü òîò àäðåñ, êîòîðûé áûë äî ïåðåõâàòà,
÷òîáû ìîæíî áûëî ñíÿòü êàæäûé îáðàáîò÷èê (ôóíêöèåé ñàìîãî îáðàáîò÷èêà?). Åñëè öåïî÷êà îáðàáîò÷èêîâ, òî îíè ïåðåõîäÿò äðóã ê äðóãó ïî ýòèì àäðåñàì. Ïåðåõîä ïî õóêàì ïðè ÑÍÄÏ - ôóíêöèÿ ÿäðà, ò.ê. îáðàáîò÷èêè ìîãóò áûòü çàñâîïëåíû.

Ïëàíèðîâùèê äîëæåí ó÷èòûâàòü, ÷òî îïèñàíèÿ ïðîöåñîâ è î÷åðåäè ñîîáùåíèé ìîãóò áûòü çàñâîïëåíû.


ñòåê íà hl' (ìîæíî èìåòü äâà ñòåêà - îäèí ðåëîöèðóåìûé (SP), äðóãîé íåðåëîöèðóåìûé (hl') èëè (IY)):
ìîæíî âìåñòî íîìåðà òî÷êè àäðåñ å¸ àäðåñà â òàáëèöå #c000...#ffff â ñòðàíèöå ïðîöåññà
òîãäà ìàêñèìóì 8192 òî÷åê íà ïðîöåññ
ìîæíî àäðåñ + âèðòóàëüíûé íîìåð ñòðàíèöû

call:
exx
ld (hl),nnH
dec l
ld (hl),nnL
call z,os_growstack
dec l ;óêàçûâàåò íå íà ãîëîâó, à íà áàéò íèæå (ìîæåò áûòü ïóñòîé ñåãìåíò)
ld (hl),d?? ;pgH
dec l
ld (hl),e?? ;pgL
call z,os_growstack
dec l ;óêàçûâàåò íå íà ãîëîâó, à íà áàéò íèæå (ìîæåò áûòü ïóñòîé ñåãìåíò)
exx

ret:
jp os_ret
os_ret:
exx
inc l
call z,os_reducestack
ld e,(hl)
inc l
ld d,(hl)
call os_setpage
inc l
call z,os_reducestack
ld e,(hl)
inc l
ld d,(hl)
exd
ld a,(hl)
inc l
ld h,(hl)
ld l,a ;èëè ëó÷øå òàì jp?
exd
push de
exx
ret

òóò íå ó÷èòûâàåòñÿ, ÷òî ïðîöåäóðà ìîæåò áûòü çàñâîïëåíà!

ñâîï íà ëåòó:
(åñëè îêàæåòñÿ ìåäëåííåå ÷òåíèÿ ÷åðåç ðåçèäåíò, òî åäèíñòâåííàÿ âûãîäà - íà îáðàáîòêå ôàéëîâ)
(êîìïèëÿòîð äîëæåí ñòàðàòüñÿ ïåðåñîðòèðîâàòü ïðîöåäóðû òàê, ÷òîáû êàæäûé öèêë óìåùàëñÿ â ñåãìåíò èëè äàæå êàæäàÿ ïðîöåäóðà, åñëè ýòî âîçìîæíî)
íàäî îïðåäåëèòü, çàìàïëåí ëè ñåãìåíò àäðåñàòà äæàìïà (âñå äæàìïû ìåæäó ñåãìåíòàìè - äëèííûå!)
à) òàáëèöà ëîã.ñåãìåíò->ôèç.ñåãìåíò (ðàçìåð ìîæåò áûòü íåîãðàíè÷åí!!!), âîçìîæíî, òà ñàìàÿ, ïî êîòîðîé ðàáîòàåò ðåëîêàòîð ÎÑ
ìåäëåííî! äàæå ñàìûå ÷àñòûå äæàìïû òðåáóþò ñëîæíûõ îïåðàöèé!
á1) ïðè ðåëîêàöèè èñïðàâëÿòü ïåðåõîäû
á2) ïðè ðåëîêàöèè èñïðàâëÿòü òàáëèöû ïåðåõîäîâ äëÿ ñåãìåíòîâ (êàæäàÿ òî÷êà - îäèí äæàìï (îäíîêðàòíî - èíëàéí), âñÿ òàáëèöà â òîì æå ñåãìåíòå)
á3) ïðè ðåëîêàöèè èñïðàâëÿòü êåðíàëü ïåðåõîäîâ äëÿ çàäà÷è (ðàçìåð ìîæåò áûòü íåîãðàíè÷åí!!!) - â âåðõíåé ïàìÿòè
â) òàáëèöà íîìåð ïåðåõîäà->ôèç.ñåãìåíò (ðàçìåð ìîæåò áûòü íåîãðàíè÷åí!!!) - â âåðõíåé ïàìÿòè
Ñåé÷àñ åñòü ñëåäóþùèå êîíôèãóðàöèè ñ äâóìÿ îêíàìè ïðîåöèðîâàíèÿ 0000 è c000:
1. LEC Memory Extension (1987)
2. MB02 (1992)
3. ATM2/2+ (1992/1993)
4. Ñõåìà fk0 äëÿ KAY, Pentagon, Scorpion (ZX-MMU) (2000)
5. Òåñòîâàÿ ïðîøèâêà KOE äëÿ Pentagon 1024SL2.x (íèæíåå îêíî ïåðåêëþ÷àåòñÿ ïî #fe) (2007)
6. ATM3 (2010)
[7. Òåñòîâàÿ ïðîøèâêà LVD äëÿ NeoGS - äëÿ îñè âíóòðè NeoGS]

ïîä ÷òî èõ ëó÷øå çàíÿòü?
à) ìíîãî äàííûõ çàäà÷è è ìíîãî êîäà çàäà÷è (ïåðåêëþ÷àòü çàäà÷è èìåííî òàê) (êàê âûâîäèòü íà ýêðàí? ÷åðåç ðåçèäåíò èëè ÷åðåç ôóíêöèè îñè?) (ãîíÿòü äàííûå èç ñòðàíèöû â ñòðàíèöó òîæå ìîæíî ÷åðåç ðåçèäåíò èëè ôóíêöèè îñè)
á) ìíîãî äàííûõ çàäà÷è è ýêðàí (áîëüøèå ïðîãðàììû äåëèòü íà çàäà÷è, ñ îáùåé ïàìÿòüþ, ïðèä¸òñÿ ñâîïèòü êîä â íèæíåé ïàìÿòè)
â) ìíîãî êîäà/äàííûõ çàäà÷è è ýêðàí (áóäåò íåóäîáíî äåëàòü ïðîãðàììû ñ ïëàâàþùèì ÷èñëîì ñòðàíèö äàííûõ - äîñòóï òîëüêî ÷åðåç ðåçèäåíò èëè èçâðàòíî - ÷åðåç êóñêè êîäà â êàæäîé ñòðàíèöå äàííûõ)
ã) ìíîãî êîäà/äàííûõ çàäà÷è è îòêëþ÷àåìàÿ îñü


Îñ ìèêðîêåðíàëü:
ðàáîòàåò íà 48ê
íåò óñòðîéñòâ
íåò ôñ
ðàçìåòêà íèæíåé ïàìÿòè ó÷èòûâàåò äûðêó 16ê â íóæíîì ìåñòå
øåäóëåð þçàåò õóê äîñòóïà ê çàïèñÿì (ìåíÿåò äðàéâåð ñòðàíè÷íîé ïàìÿòè)

äðàéâåð ïóñêàòü èç-ïîä øåäóëåðà? Íåîòêóäà ãðóçèòü (íàäî ÷åðåç ñíàïøîò).
È êàê ïåðåðàçìåòèòü íèæíþþ ïàìÿòü? Òîëüêî íèç, áåç êó÷è?




Íà íåÀÒÌ ìîæíî âûäåëÿòü ïàìÿòü áëîêàìè â íèæíåì ÎÇÓ (ïåðåìåùàåìûé êîä è äàííûå) è ñâîïèòü ýòè áëîêè ñ âåðõíåé
ïàìÿòüþ, åñëè íå õâàòàåò íèæíåé. Åñëè ïðîöåññ õîòÿ áû ÷àñòè÷íî â ñâîïå, ïðè ïåðåõîäå íà íåãî íàäî åãî
âîññòàíàâëèâàòü.
Òàê ìîæíî äî (48K ìèíóñ ðàçìåð ÿäðà) íèæíåé ïàìÿòè íà ïðîöåññ, íî ïåðåêëþ÷åíèå ìåæäó áîëüøèìè ïðîöåññàìè
áîëåå 1 ôðåéìà (à ìåæäó áîëüøèì è ìàëåíüêèì - ïðîïîðöèîíàëüíî ðàçìåðó ìàëåíüêîãî).
Ñâîï äîëæåí áûòü ÷àñòüþ ÿäðà, íî âûïîëíÿòüñÿ â êîíòåêñòå ïðîöåññà, èíà÷å êàê ïðåäóñìîòðåòü 3-ôðåéìîâûé ñâîï, ÷òîáû âî âðåìÿ íåãî ïåðèîäè÷åñêè âûïîëíÿëñÿ ïò ïëååð?
Ýòîò ìåòîä íàçîâ¸ì "ÑÍÄÏ" (ñâîï íèæíåé äèíàìè÷åñêîé ïàìÿòè (ÍÄÏ)) â îòëè÷èå îò "ÏÑÎ" (ïîëíîñòüþ ñòðàíè÷íàÿ îðãàíèçàöèÿ).
Ó ÑÍÄÏ, êàçàëîñü áû, ýêîíîìèÿ ñòðàíèö (ìíîãèì ïðîãðàììàì íå íóæíû ñòðàíèöû), íî è â ÏÑÎ ìîæíî êëàñòü ìíîãî ïðîöåññîâ â îäíó ñòðàíèöó!
Åù¸, åñëè ïðîöåññ îáåùàåò íå èñïîëüçîâàòü âåðõíþþ ïàìÿòü, òî ìîæíî íå ù¸ëêàòü ñòðàíèöàìè ïðè ïåðåêëþ÷åíèè íà íåãî, íî âðÿä ëè ýòî ýêîíîìèÿ.

Åù¸ ìîæåò áûòü ìåòîä "ôðàãìåíòèðîâàíèå íèæíåé äèíàìè÷åñêîé ïàìÿòè" (ÔÍÄÏ):
áëîêè âíèçó íàñòîëüêî ìàëåíüêèå (ïî îäíîé ïðîöåäóðå), ÷òî ïðè ðåàëüíûõ ñöåíàðèÿõ íèæíÿÿ ïàìÿòü íèêîãäà íå ïåðåïîëíèòñÿ.
 íèæíåé ïàìÿòè ïðè ÔÍÄÏ òîëüêî:
- ôóíêöèè ðàáîòû ñ äèíàìè÷åñêîé ïàìÿòüþ (èõ íàäî îñîáî ïîìå÷àòü â èñõîäíèêå è ïðîâåðÿòü! pointer!=dynpointer!)
- ñòåê (áåç ïðîâåðêè ïåðåïîëíåíèÿ!)
- ãëîáàëüíûå ïåðåìåííûå
- ñèñòåìíûå áóôåðà ïî 256 áàéò íà ôàéë/ïàéï
Thunk'è ëó÷øå íå äåëàòü - íèæíåé ïàìÿòè íå õâàòèò. Ïîýòîìó âûçîâû ìåæäó ñòðàíèöàìè - ÷åðåç ôóíêöèè îñè.
Ñèñòåìà áåç ñâîïà, ñ îãðàíè÷åííîé íèæíåé ïàìÿòüþ, ïðåâðàùàþùåéñÿ â ðåøåòî ïðè
çàêðûòèè ïðîãðàìì, â ïðèíöèïå, ìîæåò âûïîëíÿòü ñâîè ôóíêöèè. Îøèáêà "íåäîñòàòî÷íî
íèæíåé ïàìÿòè" âîçíèêàåò òîëüêî ïðè çàïóñêå ïðèëîæåíèÿ, íî ìîæåò íåîæèäàííî
âûñêî÷èòü ïðè âûïîëíåíèè øåëë-ñêðèïòà!!!



Ïîñêîëüêó íèæíåé ïàìÿòè ìàëî, òî áûëî ðåøåíî ðàçáèâàòü ïðîãðàììû íà
ìîäóëè, ÷àñòü èç êîòîðûõ ïðåäíàçíà÷åíà äëÿ ðàçìåùåíèÿ â âåðõíåé
ïàìÿòè, à îñòàâøèåñÿ â íèæíåé è ñâîïÿòñÿ îòäåëüíî äðóã îò äðóãà
(à âîò ñåãìåíò ñòåêà âñåãäà ïðèñóòñòâóåò â íèæíåé ïàìÿòè, åñëè ïðîöåññ
àêòèâåí). Âûçîâ
ôóíêöèè îäíîãî ìîäóëÿ èç äðóãîãî ìîäóëÿ - ÷åðåç ñïåöèàëüíóþ ôóíêöèþ
ñèñòåìû (ñ òî÷êè çðåíèÿ ïðîãðàììèñòà ýòî ìîæåò áûòü ìàêðîñ FARCALL
name_of_function, êîòîðûé òðàíñëèðóåòñÿ â âûçîâ ñèñòåìû ñ ïåðåäà÷åé
2 ïàðàìåòðîâ: íîìåð ìîäóëÿ, íîìåð/àäðåñ ôóíêöèè).
Äàííûå äðóãîãî ìîäóëÿ èñïîëüçîâàòü çàïðåùàåòñÿ. Ïåðåäà÷à
èíôîðìàöèè îò ìîäóëÿ ê ìîäóëþ - à) ÷åðåç ðåãèñòðû, á) ÷åðåç ôèçè÷åñêèå
ñòðàíèöû, â) ÷åðåç î÷åðåäè (ld (de),a:inc e:call z,os_queue_put íà ïåðåäàþùåé ñòîðîíå è ld
a,(hl):inc l:call z,os_queue_get íà ïðèíèìàþùåé).

Òàêèå æå î÷åðåäè èñïîëüçóþòñÿ äëÿ ìåæïðîöåññîâîãî îáìåíà (íàïðèìåð,
î÷åðåäü ñîáûòèé îò êëàâèàòóðû).
èëè ëó÷øå îò êëàâèàòóðû ïåðåäàâàòü ñîáûòèÿ, ò.ê. íàäî âûäûâàòü èõ ñðàçó, íå îòêëàäûâàÿ.
íî òîãäà ïåðåíàïðàâèòü èç ôàéëà â òåðìèíàë è íàîáîðîò - íåòðèâèàëüíî.

÷åðåç ýòè î÷åðåäè ìîæíî îðãàíèçîâàòü è ôàéëû ïðîèçâîëüíîãî äîñòóïà,
îíè æå ìàññèâû ïðîèçâîëüíîãî ðàçìåðà. Íàäî ðåàëèçîâàòü è âîçìîæíîñòü îòêðûòèÿ
òàêîãî ìàññèâà â âåðõíåé ïàìÿòè (÷òîáû íå ïåðåíîñèòü êóñêè ïðè êàæäîé ñìåíå ñåãìåíòà).
 íèæíåé îäíîâðåìåííî ìîæíî îòêðûòü èõ ìíîãî, â âåðõíåé òîëüêî îäèí.
Ïðèìåð âåðõíåãî ìàññèâà - òåêñò â sword, ïðèìåð íèæíåãî - òàáëèöà ñìåùåíèé äëÿ ýòîãî òåêñòà.
(ïî ñðàâíåíèþ ñî ñòàðûì sword'îì íàäî äîáàâèòü â öèêë âñòàâêè îäèí call z, à â öèêë óäàëåíèÿ
bit:call z)
îäèí è òîò æå ôàéë/ìàññèâ íåëüçÿ îòêðûâàòü ñâåðõó è ñíèçó? à êàê òîãäà ñäåëàòü ýìóëÿòîð?
(òàì íèæíèé ìàññèâ - (PC)). íàäî ï/ï ïåðå÷èòûâàíèÿ íèæíåãî áóôåðà ïîñëå èçìåíåíèÿ âåðõíåãî.
èíà÷å íèæíèé áóôåð (åñëè â í¸ì óñòàíîâëåí ôëàã writeable) ïðè âûõîäå èç íåãî çàïèøåòñÿ
ïîâåðõ (flush).

åñëè îòêðûâàòü òîëüêî ñíèçó, òî ïðè ïðîèçâîëüíîì äîñòóïå ïîòåðÿ âðåìåíè 5000t íà êîïèþ 256 áàéò + ñòîëüêî æå ïðè çàïèñè èçìåí¸ííîãî ââåðõ (flush)
íî íåëüçÿ îòêðûòü ñíèçó äâàæäû îäèí ôàéë (èëè ïðèä¸òñÿ äåëàòü flush ïðè èçìåíåíèè êàæäîãî áàéòà)
sword ëó÷øå äåëàòü íà äâóõ ôàéëàõ (ðàçðåçàíî ïî êóðñîðó), âòîðîé èç ôàéëîâ çàäîì íàïåð¸ä (åñëè ôàéëîâàÿ ñèñòåìà íå ïîçâîëÿåò óìåíüøàòü ôàéë, òî ïðîñòî óâåëè÷èâàåì è èãíîðèðóåì ïóñòîé õâîñò)
à ýìóëÿòîð?



os_farcall_fromlow
;de,bc (èëè de,bc,ix,hl äëÿ ìàò.ôóíêöèé ñ long) = ïàðàìåòðû âûçûâàåìîé ïðîöåäóðû, íà âûõîäå â íèõ ðåçóëüòàò
;hl(iy?) = calladdr
;a=callpg (íåëüçÿ ñâîïèòü!)
call os_set_pg_a ;èñïîëüçóåò bc
jp (hl) ;iy?

_farcall_fromfarpg1
;de,bc (èëè de,bc,ix,hl äëÿ ìàò.ôóíêöèé ñ long) = ïàðàìåòðû âûçûâàåìîé ïðîöåäóðû, íà âûõîäå â íèõ ðåçóëüòàò
;hl(iy?) = calladdr
;a=callpg (íåëüçÿ ñâîïèòü!)
call os_farcall_fromlow
ld a,retpg1
jp os_set_pg_a ;èñïîëüçóåò bc
;ýòî thunk, íî èõ íóæíî íåìíîãî (ïî îäíîìó íà êàæäóþ ñòðàíèöó êîäà)





Ó PT player ñàìûé áîëüøîé ìîäóëü ëåæèò â ñòðàíèöå è âêëþ÷àåò â ñåáÿ ìàññèâ ðàçìåðîì 13-14K.

×àñòü ìîäóëåé ñàìîãî ÿäðà ñî ñòðóêòóðàìè - òîæå ñòðàíè÷íûå?

÷åãî äàñò âîçìîæíîñòü ïåðåäàâàòü äàííûå îò çàäà÷è ê çàäà÷å è îò ìîäóëÿ ê ìîäóëþ ÷åðåç áóôåðà â íèæíåé ïàìÿòè?
1. íà 21 òàêò/áàéò óñêîðèòñÿ âûâîä ñïðàéòîâ
2. íà 65 òàêòîâ/áàéò óñêîðèòñÿ ïåðåäà÷à ñòðîêè â ïðîöåäóðó äðóãîãî ìîäóëÿ (è îñâîáîäèòñÿ 256 áàéò ïîä áóôåð î÷åðåäè)
 êàêèå ïðîáëåìû ýòî âûçîâåò?
1. êàê óçíàòü, êàêèå îáëàñòè íå ñâîïèòü? âûçîâ ñ ïåðåäà÷åé áóôåðà - ÷åðåç ñèñòåìíóþ ôóíêöèþ?
2. êàê áûòü, åñëè âûçûâàåìûé ìîäóëü çàñâîïëåí è íå ïîìåñòèòñÿ â íèæ.ÎÇÓ íè äî, íè ïîñëå óêàçàííîé îáëàñòè? ïåðåìåñòèòü ñàìó îáëàñòü?

Äèíàìè÷åñêàÿ ïàìÿòü (åñëè îíà ïîòðåáóåòñÿ), ðåàëèçóåòñÿ íå íà óðîâíå
ñèñòåìû, à íà óðîâíå ïðîãðàììû ïîëüçîâàòåëÿ?
Ýòî íåâûãîäíî, ò.ê. æèðíàÿ ðàñïðåäåëÿëêà äîëæíà áûòü â íèæíåé ïàìÿòè ó êàæäîé ïðîãðàììû - ìåñòà ìîæåò íå õâàòèòü.
Ñèñòåìà óìååò äèíàìè÷åñêè
âûäåëÿòü òîëüêî öåëûå ñòðàíèöû, à òàêæå î÷åðåäè (î÷åðåäè ñîñòîÿò èç 256-áàéòíûõ
ñåãìåíòîâ, êàêèå èñïîëüçóþòñÿ è äëÿ ñâîïà).

Ñâîï íà äèñê âîçìîæåí òîëüêî íà óðîâíå äðàéâåðà ñòðàíè÷íîé ïàìÿòè.
Îí âûäà¸ò 2-áàéòíûå íîìåðà ñòðàíèö, è ïðîãðàììû ðàáîòàþò ñ íèìè.
 ïðîñòåéøåì ñëó÷àå (åñëè íåò ñâîïà) ýòî ôèçè÷åñêèé íîìåð ñòðàíèöû, è
âñå ïåðåêëþ÷åíèÿ ñòðàíèö ðàáîòàþò ìàêñèìàëüíî áûñòðî.
Äðàéâåð ñòðàíè÷íîé ïàìÿòè öåïëÿåòñÿ ê íåñêîëüêèì õóêàì (ôèçè÷åñêèì
àäðåñàì) îïåðàöèîííîé
ñèñòåìû - âêëþ÷åíèå ñòðàíèöû, âûäà÷à ñòðàíèöû, îñâîáîæäåíèå ñòðàíèöû.















ïðîñòîå êîïèðîâàíèå ìåæäó áóôåðàìè ïðîèçâîëüíîãî äîñòóïà
äëÿ êàæäîãî ñåãìåíòà áóôåðà (256 áàéò) íàäî õðàíèòü åãî ðàñïîëîæåíèå: page, H
êàæäàÿ òàáëèöà ñåãìåíòîâ (256 áàéò) ñîäåðæèò 85 1/3 çàïèñåé
òàáëèö ñåãìåíòîâ ìîæåò áûòü äî 85, ÷òî äà¸ò ìàññèâ ðàçìåðîì 256*(85 1/3)*85 áàéò
êàê áûñòðî ïåðåéòè ê íóæíîìó ìåñòó áóôåðà? äëÿ ýìóëÿòîðà ýòî æèçíåííî âàæíî

...
copyloop
ld a,(hl)
inc l
call z,user_queue_get_lowmem
ld (de),a
inc e
call z,user_queue_put_lowmem
dec bc
ld a,b
or c
jnz copyloop
...

user_queue_get_lowmem
;äîëæíî ìåíÿòü òîëüêî hl
ld (user_queue_get_lowmem_a),a
ld (user_queue_get_lowmem_bc),bc
exd
ld (user_queue_get_lowmem_de),hl
ld hl,(os_cur_pg)
ld (user_queue_get_lowmem_pg),hl
call os_queue_get_lowmem
user_queue_get_lowmem_pg=$+1
ld hl,0
call os_set_pg ;êàê áûëî
user_queue_get_lowmem_de=$+1
ld hl,0
exd
user_queue_get_lowmem_bc=$+1
ld bc,0
user_queue_get_lowmem_a=$+1
ld a,0
ret

os_queue_get_lowmem
;de'=óêàçàòåëü íà òàáëèöó ñåãìåíòîâ (íàäî áû å¸ â âåðõíþþ ïàìÿòü)
;hl'=óêàçàòåëü íà òàáëèöó ðàçìåùåíèÿ òàáëèö ñåãìåíòîâ (íàäî áû å¸ â âåðõíþþ ïàìÿòü)
;à ãäå õðàíèòü òàêèå óêàçàòåëè äëÿ put-áóôåðà???
exx
ld a,(de) ;pgL
inc e:call z,os_queue_get_lowmem_block
exx
ld l,a
exx
ld a,(de) ;pgH
inc e:call z,os_queue_get_lowmem_block
exx
ld h,a
exx
ld a,(de) ;H
inc e:call z,os_queue_get_lowmem_block
exx
call os_set_pg ;hl ;íå ðàíüøå, ò.ê. os_queue_get_block ìîã âêëþ÷èòü äðóãóþ ñòðàíèöó
ld h,a:ld l,e ;=0
ld bc,256
ldir
dec d ;íà÷àëî áóôåðà
ret

os_queue_get_lowmem_block
push de ;óêàçàòåëü íà òàáëèöó ñåãìåíòîâ
ld e,(hl) ;pgL
inc l
ld d,(hl) ;pgH
inc l
exd
call os_set_pg ;hl
exd
pop de ;óêàçàòåëü íà òàáëèöó ñåãìåíòîâ
push hl ;óêàçàòåëü íà òàáëèöó ðàçìåùåíèÿ òàáëèö ñåãìåíòîâ
ld h,(hl) ;H
ld l,e ;=0
ld bc,256
ldir
dec d ;íà÷àëî òàáëèöû ñåãìåíòîâ
pop hl ;óêàçàòåëü íà òàáëèöó ðàçìåùåíèÿ òàáëèö ñåãìåíòîâ
inc l
ret



os_set_pg
;ïîðòèò òîëüêî bc
;íèêàêèõ push íåëüçÿ!!!
;(ìîæíî push bc, åñëè ýòî 100% ÷èñëî:
;óðîâåíü ñòåêà, íà÷èíàÿ ñ êîòîðîãî íå ðåëîöèðóåì, çàïèñàòü â ïåðåìåííóþ,
;à ïðè ïåðåêëþ÷åíèè ïðîöåññîâ ýòó ïåðåìåííóþ êëàñòü â îïèñàòåëü ïðîöåññà)
ld (os_cur_pg),hl
ld bc,memport1
out (c),h
ld bc,memport2
out (c),l
ret




17.12.2007
18:57        LordVader        àãà è áóäåò ýòî âèíäîôñ âèñòà äëÿ çõ ñïåöòðóì        
LordVader        åñëè ñâîïèòü        
18:59        alone_co        èíà÷å æåñòîêèå îãðàíè÷åíèÿ íà ÷èñëî ïðîöåññîâ        
alone_co        ñâîï-òî â îçó        
19:00        alone_co        òàê ÷òî òî íå òîðìîç, à ìåäëåííûé ãàç        
LordVader        çàáåé íà íåàòì        
19:01        alone_co        êàêèå ïðîöåññû ïî-ëþáîìó áóäóò çàïóùåíû: ãóé, êëàâà, øåëë, ðåäàêòîð, êëèïáîðä        
LordVader        äàæå àòì äëÿ ìóëüòèòàñêèíãà ñ òðóäîì ïîäõîäèò        
LordVader        ãóé - íå áóäåò!         
alone_co        íà íåàòì íå çàáüó íèçà÷òî        
LordVader        ðåäàêòîð è êëèïáîðä òîæå        
LordVader        òàäà "òû æèâ¸øü â ñâîåé ãîëîâå"        
alone_co        ãóé - ýòî òóïàÿ âåùü, ïðîñòî ïåðåêëþ÷àþùàÿ çàäà÷è ïî øèôò-åíòåð è ðàçäàþùàÿ ôîêóñ, êëàâó è ñîîáùåíèÿ ïðîðèñîâêè        
LordVader        http://www.6502asm.com/        
19:02        alone_co        à ðåäàêòîð - ýòî òî, ðàäè ÷åãî âñ¸ íà÷èíàëîñü        
alone_co        áåç ãóÿ íè÷åãî ðàáîòàòü íå áóäåò        
19:03        LordVader        òî÷íî â ñâîåé ãîëîâå        
LordVader        äëÿ ðåäàêòîðà ïðèäóìûâàòü õóéíþ àæ ñî ñâîïîì (ëäèð òóäà ëäèð ñþäà)        
alone_co        ó òåáÿ äðóãèå èäåè?        
19:04        LordVader        çàáèòü íà ñâîï        
LordVader        âñåì çàäà÷àì äàòü ïàìÿòü 4000-áôôô à çàäà÷è â ïàãàõ        
alone_co        òîãäà ïàìÿòü êîí÷èòñÿ áûñòðî        
alone_co        îäèí ðåäàêòîð æð¸ò êèë 10        
19:05        alone_co        â ìèíèìàëüíîé êîìïëåêòàöèè        
LordVader        ïîáåé åãî íà çàäà÷è!        
LordVader        íà ÐÀÇÍÛÅ        
LordVader        ñ ìèíèìóìîì îáìåíà        
alone_co        è ÷î ýòî äàñò, åñëè íåò ñâîïà        
19:06        LordVader        ðàñêèäàòü èõ ïî ïàìÿòè ýòî äàñò        
LordVader        ïî âåðõíåé        
alone_co        ïðè ÏÑÎ òðåáóåòñÿ àòì è ïàìÿòè ìèíèìóì ïî 16ê íà çàäà÷ó        
LordVader        òåáå 16êá íå õâàòàåò - è 48êá òîæå íå õâàòèò        
LordVader        äàæå ñî ñâîïîì        
LordVader        òàê ÷òî ðàñêèäûâàé íà çàäà÷è        
19:08        alone_co        íà çàäà÷è ïî-ëþáîìó ðàñêèíó        
alone_co        îñîáåííî ïðè ÑÍÄÏ        
LordVader        ðåäàêòîðó ÑÐÀÇÓ âñÿ ïàìÿòü ñ òåõòîì ÍÅ ÍÓÆÍÀ        
19:09        LordVader        ïîòîìó åìó ðàáî÷åé ïàìÿòè õâàòèò 32ê        
LordVader        à ðåäàêòîð ñàì ïî êóñêàì íà 16ê ðàçáèòü        
LordVader        è âñ¸        
alone_co        ïàìÿòü ñ òåêñòîì íóæíà ÁÎËÜØÅÉ ÷àñòè ðåäàêòîðà        
LordVader        âñÿ ñðàçó? íåâåðþ        
alone_co        èáî òàì äî ôèãà ôóíêöèé        
LordVader        íàïðèìåð        
19:10        alone_co        îáðàáîò÷èêè òåêñòà (â òîì ÷èñëå ïîèñê-çàìåíà), äèñêîâûå îïåðàöèè        
alone_co        íàâèãàöèÿ ïî òåêñòó        
alone_co        âûâîä òåêñòà        
alone_co        ïå÷àòü        
alone_co        êîíâåðòîðû        
LordVader        ýòî âñ¸ ïîñòðî÷íî ðàáîòàåò        
19:11        alone_co        íåò        
LordVader        ïîòîìó áåç ñòðàíèö ñ òåêñòîì îáîéä¸òñÿ        
alone_co        ýòî â àöåäèò ïîñòðî÷íî        
alone_co        à â ñâîðäå íåò        
alone_co        èíà÷å îïÿòü îãðàíè÷åíèå íà äëèíó ñòðîêè        
alone_co        êñòàòè, è â àöåäèò íå âñ¸ ïîñòðî÷íî        
alone_co        ïîèñê-çàìåíà è êîíâåðòîðû - íå ïîñòðî÷íî        
alone_co        è ôîðìàòèðîâàíèå òîæå        
19:12        alone_co        òî, ÷òî òåêñò äîëæåí áûòü â ñòðàíè÷íîé ïàìÿòè - î÷åâèäíî        
alone_co        à ê íåìó áóäóò ñòó÷àòüñÿ ðàçíûå ïðîöåññû        
19:13        LordVader        àãà à èõ ëäèðèòü áóäóò òóäà-ñþäà        
LordVader        äëÿ 1 áàéòà òåêñòà 10êá ëäèðà        
alone_co        íó, ëäèðåíèå ñåòóïà, íàïðèìåð, íè÷åãî ñòðàøíîãî        
alone_co        è âîîáùå ëäèðåíèå ìåíþøåê        
alone_co        à óæ êîíâåðòîðû è áåç òîãî íå òîëüêî ëäèðÿòñÿ, íî è äåïà÷àòñÿ â àöåäèòå        
alone_co        ïëååð ïò âîò æåëàòåëüíî íå ëäèðèòü        
19:15        alone_co        ëèáî â âåðõíþþ åãî, ëèáî çàùèòèòü îò ñâîïà êàê-òî        
alone_co        ãóé òîæå íàäî çàùèòèòü îò ñâîïà êàê-òî        
alone_co        ïðîáëåìà, ÷òî âûäåëÿòü ÍÄÏ òðåáóåòñÿ íåôðàãìåíòèðóåìûìè êóñêàìè        
alone_co        çàùèù¸ííûå îò ñâîïà ðàñòóò ñíèçó, à íåçàùèù¸ííûå - ñâåðõó        
LordVader        âîò òåáå êðèòåðèé îöåíêè. ïðèäóìàë êó÷ó ôè÷.à òåïåðü ïîùèòàé ÑÊÎÐÎÑÒÜ ÐÀÁÎÒÛ        
LordVader        è ñðàâíè ñ äðóãèì âàðèàíòîì.        
alone_co        ñ ÏÑÎ?        
19:20        alone_co        à êàê ïîä íåãî ïðîãðàììû ïèñàòü?        
alone_co        âñ¸ ëè ìîæíî òàì ðåàëèçîâàòü?        
alone_co        â ðåäàêòîðå ñêîðîñòü îäèíàêîâàÿ        
alone_co        à âîò íà ÏÑÎ íåâîçìîæíî áîëüøå 61 ïðîöåññà        
alone_co        îäíîâðåìåííî çàïóñòèòü        
19:23        alone_co        èáî ñòðàíèö âñåãî 64        
LordVader        à ÏÑÎ ýòî ÷òî?        
19:25        alone_co        ïîëíîñòüþ ñòðàíè÷íàÿ îðãàíèçàöèÿ        
alone_co        òî åñòü íèæíÿÿ ïàìÿòü òîæå âûäåëÿåòñÿ ñòðàíè÷êîé        
alone_co        ýòî ðåàëüíî òîëüêî íà àòì


ðàáîòó ñ òåêñòîì ëó÷øå ñäåëàòü ÷åðåç ôàéëû â ïàìÿòè (ñ 256-áàéòíûì ñèñòåìíûì áóôåðîì âíèçó)





à)
ld hl, ;ñåãìåíò*2
ld a, ;ñìåùåíèå
jp longjump
...
longjump
;hl=ñìåùåíèå â ìàññèâå
;pg=*hl++
;h=*hl
ld l,a
;äåñâîïèòü pghl
jp (hl)


*hl èç ìàññèâà, íà÷èíàþùåãîñÿ ñ ïðîèçâîëüíîãî ñåãìåíòà:
;êàðòà - ñåãìåíò, àäðåñóåò 64Ê-áëîêè
;64Ê-áëîê - ñåãìåíò, àäðåñóåò ñåãìåíòû ìàññèâà
;ñåãìåíò ìàññèâà - åñëè ïðîïóñêàòü ïðîõîä ïî êàðòå, òî íàäî áóôåðèçèðîâàòü â íèæíåé ïàìÿòè!!! ëó÷øå íå ïðîïóñêàòü, èáî äîñòóï ïðîèçâîëüíûé!!! äëÿ ïîñëåäîâàòåëüíîãî äîñòóïà åñòü ïàéïû
;çäåñü íåò âêëþ÷åíèÿ-âûêëþ÷åíèÿ ñèñòåìíîé ïàãè (íàäî ïðè âûçîâå âñåõ ñèñòåìíûõ ôóíêöèé)
;íå ðåàëèçîâàí sleep äî òàéìåðà (äåëàòü ðóêàìè â ïðîãðàììå?)

STRUCT app
BYTE priority ;ïðèîðèòåò (0=êîíåö ñïèñêà)
BYTE flags ;ôëàãè (factive, ftimeslice, fusetimer)
factive=0 ;åñòü ñîîáùåíèÿ: SET ïðè äîáàâëåíèè ñîîáùåíèÿ, RES ïðè âçÿòèè ïîñëåäíåãî ñîîáùåíèÿ
ftimeslice=1
fusetimer=2
;ftimer=3
;fcritical=4 (÷òîáû íå ïîðòèòü hl)
WORD id ;íîìåð çàäà÷è
WORD mainpg ;ãëàâíàÿ ñòðàíèöà çàäà÷è (òàì î÷åðåäü ñîîáùåíèé)
WORD curmsg ;àäðåñ òåêóùåãî ñîîáùåíèÿ ýòîé çàäà÷å
WORD endmsg ;àäðåñ êîíöà î÷åðåäè ñîîáùåíèé ýòîé çàäà÷å
WORD curpg ;òåêóùàÿ ñòðàíèöà
WORD sp ;òåêóùèé àäðåñ ñòåêà (ìîæíî õðàíèòü â ÒÅÊÓÙÅÉ (íå ãëàâíîé) ñòðàíèöå, íî ýòî áåññìûñëåííî)
WORD next ;óêàçàòåëü íà ñëåäóùóþ çàäà÷ó (ñëåäóþùàÿ çà âûïîëíÿåìîé âíóòðè òîãî æå ïðèîðèòåòà)
;[íîìåð çàäà÷è, êîòîðàÿ æä¸ò ãîòîâíîñòè ýòîé çàäà÷è]
ENDSTRUCT

STRUCT msg
WORD type ;òèï ñîîáùåíèÿ (2 á)
WORD sender ;àâòîð ñîîáùåíèÿ (2 á)
WORD par0
WORD par1
WORD par2
WORD par3
WORD par4
WORD par5
ENDSTRUCT
;16 áàéò (äåëèòåëü ÷èñëà 256)

WORD Os_curapp ;()=Os_Tapp
WORD Os_nextapp ;()=Os_Tapp
WORD Isr_SP
WORD Os_frames
BYTE Os_critical
WORD Os_targetid
ARRAY Os_msg1,SIZEOF_msg
ARRAY Os_msg2,SIZEOF_msg
Os_TIMERSENDER=55555

MACRO STARTCRITICAL
ld hl,Os_critical
inc (hl) ;ñ ýòîãî ìîìåíòà óæå íå çàäà÷à, à øåäóëåð
ENDM

MACRO ENDCRITICAL
ld hl,Os_critical
dec (hl) ;âûêëþ÷åíèå+ïðîâåðêà ïðåðâàííîñòè ÎÄÍÎÂÐÅÌÅÍÍÎ
call nz,IsrEndCritical ;ïåðåõîä íà IsrEndCritical íå ïðåðâåòñÿ, ò.ê. â ýòîì ñëó÷àå di
;òóò óæå ìîæíî ñ÷èòàòü, ÷òî âûïîëíÿåòñÿ çàäà÷à
ENDM

;âûõîä èç êîíòåêñòà çàäà÷è
MACRO RELEASECONTEXT
ld ix,(Os_curapp)
ld hl,(curpg)
PUTWORD app_curpg,HL
ld hl,0
add hl,sp
PUTWORD app_sp,HL
ld sp,lowmem
ENDM

;âõîä â êîíòåêñò çàäà÷è
MACRO GETCONTEXT
GETWORD HL,app_sp
push bc,hl
GETWORD HL,app_curpg
SETPG
pop hl,bc
ld sp,hl
ENDM

MACRO SETFLAG
SET \0,(IX+app_flags)
ENDM

MACRO RESFLAG
RES \0,(IX+app_flags)
ENDM

MACRO TESTFLAG
BIT \0,(IX+app_flags)
ENDM


;øëåò ñîáûòèå êëàâèàòóðå, ãóþ, ìûøè, ïëååðó (âñåì, êòî ïîäïèñàí íà òàéìåð)
;ïîäïèñàííîñòü íà òàéìåð - ôëàæîê fusetimer (êàê ïðîãðàììà åãî óñòàíîâèò?)
;ñòðàíèöà íà âûõîäå äîëæíà äîëæíà îñòàòüñÿ ïðåæíåé!
;ïðîñòî ïîñòàâèòü ôëàã ftimer
;[âàðèàíò:âûçâàòü îáðàáîò÷èê òàéìåðà ó êîíêðåòíîãî ïîòîêà (åñëè çàäàí àäðåñ)]
Timer
ld ix,Os_Tapp-SIZEOF_app
ld de,SIZEOF_app
Timer0
add ix,de
ld a,(ix+app_priority)
or a
ret z
TESTFLAG fusetimer
jz Timer0
SETFLAG ftimer
jr Timer0



;äåëàåò òî æå, ÷òî òàéìñëàéñ
Sleep
STARTCRITICAL
ld ix,(Os_curapp)
SETFLAG ftimeslice ;â êîíòåêñòå çàäà÷è
call Sched ;ïåðåêëþ÷èòü çàäà÷ó (ñòåê è ò.ï.)
;ld ix,(Os_curapp) ;åñòü â Sched?
RESFLAG ftimeslice ;â êîíòåêñòå çàäà÷è
ENDCRITICAL
;âûõîä èç òàéìñëàéñà
ret

IsrEndCritical
;ïðåðûâàíèÿ îòêëþ÷åíû
;ìîæíî ïîðòèòü òîëüêî AF,HL
dec (hl) ;1-1=0
push ...
call Isr
pop ...
;ïðåðûâàíèÿ âêëþ÷åíû
ret

Isr
;ðåãèñòðû ìîæíî ïîðòèòü, íî ñòðàíèöà äîëæíà áûòü âêëþ÷åíà òà æå
ld (Isr_SP),sp
ld sp,lowmem
;îïðåäåëÿåì òèï ïðåðûâàíèÿ è ðàáîòàåì ñ íèì (ïîðòèò ñïèñêè çàäà÷ è ñîîáùåíèé)
;Åñëè íå îïðåäåëèëîñü RS232, òî ýêðàííîå.
;Åñëè îïðåäåëèëîñü RS232, ÷èòàòü ÂÅÑÜ áóôåð (ò.ê. ìîãëî ïîòåðÿòüñÿ ïðåðûâàíèå îò RS232).
;Åñëè RS232 ïðîèçîøëî ÷óòü ïîçæå ýêðàííîãî, òî îíî òåðÿåòñÿ.
;Åñëè ýêðàííîå ïðîèçîøëî ÷óòü ïîçæå RS232, òî îíî òåðÿåòñÿ (ñ ýòèì íè÷åãî íå ïîäåëàòü)
;fcritical=0, ò.å. ìîæíî âûçûâàòü SENDMSG (íî íåëüçÿ DOMSG)
call Timer
;
ld sp,(Isr_SP)
ei
ret

;ñëó÷àé ïðåðâàííîé êðèòè÷åñêîé ñåêöèè
;ñðàçó âîçâðàò, à ïåðåä âûõîäîì èç êðèòè÷åñêîé ñåêöèè âûçâàòü IsrEndCritical
CriticalInt
;ïðåðûâàíèÿ âûêëþ÷åíû
inc a ;=2
ld (Os_critical),a
;pop hl
pop af
ret ;â øåäóëåð

OnInt
push af
;push hl
;todo âíóòðè timer
;ld hl,(Os_frames)
;inc hl
;ld (Os_frames),hl
ld a,(Os_critical)
or a
jnz CriticalInt
push ...
CALL Isr ;äåëàåò ei
;âêëþ÷åí êîíòåêñò çàäà÷è, åå ñòåê è åå ñòðàíèöà, ò.å. ÿêîáû îíà âûïîëíÿåòñÿ
call Sleep
pop ...
;pop hl
pop af
ret

GetMsg
STARTCRITICAL
call Sched
;exx
;todo ïðè âûçîâå Sched ðåãèñòðû êëàñòü ñþäà, à áðàòü èõ íà âûõîäå (à íå çäåñü)?
ld bc,(Os_msg1+msg_par3)
ld de,(Os_msg1+msg_par4)
ld hl,(Os_msg1+msg_par5)
exx
ld bc,(Os_msg1+msg_par0)
ld de,(Os_msg1+msg_par1)
ld iy,(Os_msg1+msg_par2)
;ïàðàìåðû ñîîáùåíèÿ â hl',de',bc',iy,de,bc
ld hl,(Os_msg1+msg_type) ;îáÿçàòåëüíî â êðèòè÷åñêîé ñåêöèè!
ld ix,(Os_msg1+msg_sender) ;
push hl
ENDCRITICAL
pop hl
ret

;ïàðàìåðû ñîîáùåíèÿ âçÿòü â bc,de,iy,bc',de',hl'
MsgGetPars
GETWORD HL,app_mainpg
SETPG
GETWORD HL,app_curmsg
ld de,Os_msg1
ld bc,15
ldir
ld a,(hl)
ld (de),a
inc l
PUTWORD app_curmsg,HL
GETWORD DE,app_endmsg
or a
sbc hl,de
ret nz ;íå ïîñëåäíåå ñîîáùåíèå â î÷åðåäè
RESFLAG factive ;ïîñëåäíåå
ret

;ïåðåõîä íà çàäà÷ó ñ ID=bc
CallTask
STARTCRITICAL
RELEASECONTEXT ;ïîðòèò hl,ix
ld ix,(Os_curapp)
SETFLAG ftimeslice ;â êðèòè÷åñêîé ñåêöèè, à òî âäðóã äî STARTCRITICAL âûïàäåò ïðåðûâàíèå, êîòîðîå çàâàëèò çàäà÷ó â òàéìñëàéñ è íà ñëåäóþùåì âõîäå â íå¸ ÑÍÈÌÅÒ ýòîò ôëàã
;ïîèñê çàäà÷è (åñëè íåòó òàêîé, òî ëþáóþ)
ld ix,Os_Tapp-SIZEOF_app
ld de,SIZEOF_app
SchedGivenSearch
add ix,de
ld a,(ix+app_priority)
or a
jz SchedSearch ;íåòó òàêîé çàäà÷è - ïåðåõîäèì íà ëþáóþ
GETWORD HL,app_id
;CY=0
sbc hl,bc
jnz SchedGivenSearch
;íå ñëåäóåò èñêàòü Os_nextapp, ò.ê. ìû ðâ¸ì ïîñëåäîâàòåëüíîñòü âûïîëíåíèÿ çàäà÷ òîëüêî äëÿ îäíîãî âûçîâà
jr SchedFound

Sched
RELEASECONTEXT ;ïîðòèò hl,ix
SchedSearch
;call SchedFind ;âûáèðàåì çàäà÷ó - ðåçóëüòàò â ix
;èùåì ïåðâóþ àêòèâíóþ/òàéìñëàéñíóþ çàäà÷ó îò íà÷àëà ñïèñêà çàäà÷
;àêòèâíàÿ - ëèáî â òàéìñëàéñå, ëèáî åñòü ñîîáùåíèÿ, ëèáî òàéìåð
;SchedFind
LOCAL
ld ix,Os_Tapp-SIZEOF_app
ld de,(Os_nextapp) ;"ñëåäóþùàÿ âíóòðè ïðèîðèòåòà"
ld bc,SIZEOF_app
_next
add ix,bc
ld a,(ix+app_flags)
and factive|ftimeslice|ftimer
jz _next ;èìååò òîò æå ïðèîðèòåò, ÷òî "ñëåäóþùàÿ âíóòðè ïðèîðèòåòà", íî ðàñïîëîæåíà ðàíüøå - ïðîïóñêàåì
ld a,(de) ;ïðèîðèòåò òåêóùåé/ñëåäóþùåé âíóòðè ïðèîðèòåòà
cp (ix+app_priority)
jnz _ok
push ix
pop hl
;or a ;CY=0
sbc hl,de
jc _next ;ðàñïîëîæåíà ðàíüøå âíóòðè ïðèîðèòåòà - ïðîïóñêàåì
_ok
GETWORD HL,app_next
ld (Os_nextapp),hl ;"ñëåäóþùàÿ âíóòðè ïðèîðèòåòà"
ENDL
;ret
SchedFound
TESTFLAG ftimeslice
jnz SchedOk ;òàéìñëàéñ - ïðîñòî ïåðåõîäèì íà çàäà÷ó
TESTFLAG ftimer
jz SchedGetPars ;åñëè òàéìåð áûë, îáñëóæèâàåì åãî â ïåðâóþ î÷åðåäü
;nz
RESFLAG ftimer
ld hl,Os_TIMERSENDER
ld (Os_msg1+msg_sender),hl ;ïñåâäîñîîáùåíèå, âàæåí òîëüêî sender
;jr SchedOk
SchedGetPars
call z,MsgGetPars
SchedOk
ld (Os_curapp),ix
GETCONTEXT ;ïîðòèò hl,íóæåí ix
ret ;çàäà÷à


;CY=àäðåñàò íå íàéäåí
SendMsg
;ix - ID àäðåñàòà
;hl - òèï ñîîáùåíèÿ
;bc,de,iy,bc',de',hl' - ïàðàìåòðû
;Åñëè ïðè ïîñûëêå ñîîáùåíèÿ î÷åðåäü ïðåâûñèëà ëèìèò, òî ñòàâèì òåêóùóþ çàäà÷ó â òàéìñëàéñ è ïåðåõîä íà çàäà÷ó, êîòîðîé øë¸ì (åñëè îíà íå â òàéìñëàéñå)
;à åñëè îíà â òàéìñëàéñå - êðóòèìñÿ, ïîêà íå áóäåò ãîòîâà, èëè äî òàéìàóòà
push hl
STARTCRITICAL
pop hl
;îáÿçàòåëüíî â êðèòè÷åñêîé ñåêöèè!
ld (Os_targetid),ix ;ID àäðåñàòà
ld (Os_msg2+msg_type),hl
GETWORD HL,app_id
ld (Os_msg2+msg_sender),hl
ld (Os_msg2+msg_par0),bc
ld (Os_msg2+msg_par1),de
ld (Os_msg2+msg_par2),iy
exx
ld (Os_msg2+msg_par3),bc
ld (Os_msg2+msg_par4),de
ld (Os_msg2+msg_par5),hl
;exx
RELEASECONTEXT ;ïîðòèò hl,ix
;ïîèñê àäðåñàòà (åñëè íåòó, òî âûõîä)
ld bc,(Os_targetid) ;ID àäðåñàòà
ld ix,Os_Tapp-SIZEOF_app
ld de,SIZEOF_app
SendMsgSearch
add ix,de
ld a,(ix+app_priority)
or a
jz SendMsgError ;êîíåö ñïèñêà çàäà÷ - íå íàéäåíà íóæíàÿ
GETWORD HL,app_id
;CY=0
sbc hl,bc
jnz SendMsgSearch
;âêëþ÷àåì ãëàâíóþ ñòðàíèöó àäðåñàòà
GETWORD HL,app_mainpg
SETPG
SendMsgLoop
;åñòü ìåñòî â î÷åðåäè?
GETWORD HL,app_curmsg
GETWORD DE,app_endmsg
or a
sbc hl,de
jz SendMsgNoRoom
;åñòü ìåñòî {
;øëåì ñîîáùåíèå
ld hl,Os_msg2
ld bc,15
ldir
ld a,(hl)
ld (de),a
inc e
PUTWORD app_endmsg,DE
ld ix,(Os_curapp)
GETCONTEXT
ENDCRITICAL
or a ;CY=0
ret ;îòïðàâèòåëü
SendMsgError
ld ix,(Os_curapp)
GETCONTEXT
ENDCRITICAL
scf ;CY=1
ret ;îòïðàâèòåëü
;}
SendMsgNoRoom
;de=curmsg=endmsg
;íåò ìåñòà {
TESTBIT ftimeslice ;àäðåñàò â òàéìñëàéñå?
jnz SendMsgTimeSlice
;íå â òàéìñëàéñå {
;áåðåì ïåðâîå ñîîáùåíèå
push de
exd
ld de,Os_msg1
ld bc,15
ldir
ld a,(hl)
ld (de),a
inc l
PUTWORD app_curmsg,HL
;êëàä¸ì íàøå ñîîáùåíèå
pop de
ld hl,Os_msg2
ld bc,15
ldir
ld a,(hl)
ld (de),a
inc e
PUTWORD app_endmsg,DE
;ïåðåõîä íà àäðåñàò:
ld (Os_curapp),ix
;èùåì "ñëåäóþùóþ âíóòðè ïðèîðèòåòà", çàïîìèíàåì åå
GETWORD HL,app_next
ld (Os_nextapp),hl
;exx
ld bc,(Os_msg1+msg_par3)
ld de,(Os_msg1+msg_par4)
ld hl,(Os_msg1+msg_par5)
exx
ld bc,(Os_msg1+msg_par0)
ld de,(Os_msg1+msg_par1)
ld iy,(Os_msg1+msg_par2)
GETCONTEXT ;ïîðòèò hl,íóæåí ix
ld hl,(Os_msg1+msg_type) ;îáÿçàòåëüíî â êðèòè÷åñêîé ñåêöèè!
ld ix,(Os_msg1+msg_sender) ;
push hl
ENDCRITICAL
pop hl
ret ;àäðåñàò
;}
SendMsgTimeSlice
;â òàéìñëàéñå {
;áåðåì êîíòåêñò îòïðàâèòåëÿ è âõîäíûå ðåãèñòðû
;exx
ld bc,(Os_msg2+msg_par3)
ld de,(Os_msg2+msg_par4)
ld hl,(Os_msg2+msg_par5)
exx
ld bc,(Os_msg2+msg_par0)
ld de,(Os_msg2+msg_par1)
ld iy,(Os_msg2+msg_par2)
ld ix,(Os_curapp)
GETCONTEXT ;ïîðòèò hl,íóæåí ix
ld hl,(Os_msg2+msg_type) ;îáÿçàòåëüíî â êðèòè÷åñêîé ñåêöèè!
ld ix,(Os_targetid) ;
push hl
ENDCRITICAL
pop hl
;ïåðåêëþ÷àåì çàäà÷ó
;æåëàòåëüíî âêëþ÷èòü àäðåñàò
;èíà÷å åñëè àäðåñàò èìååò ïðèîðèòåò íèæå ïðèîðèòåòà îòïðàâèòåëÿ, òî ýòà çàäà÷à âñåãäà áóäåò âêëþ÷åíà ñíîâà ðàíüøå, ÷åì õîòü ðàç âûçîâåòñÿ àäðåñàò - áóäåò âå÷íûé öèêë
;ïîâèñíåò, åñëè àäðåñàò ñàì æäåò çàäà÷ó, ïðèîðèòåò êîòîðîé íèæå, ÷åì ïðèîðèòåò îòïðàâèòåëÿ!!!
;ïîäíÿòü ïðèîðèòåò àäðåñàòà äî óðîâíÿ îòïðàâèòåëÿ?
push af
push hl
push ...
push ix
pop bc ;ID àäðåñàòà
call CallTask ;ïåðåêëþ÷èòüñÿ íà àäðåñàò (åñëè íå ñóùåñòâóåò, òî íà ëþáóþ çàäà÷ó)
;âûõîä èç òàéìñëàéñà
pop ...
pop hl
pop af
jp SendMsg ;íîâàÿ ïîïûòêà
;}
;}

Ñîâåòñêèé ñîôò äëÿ Speccy
by Alone Coder
v0.4

?PIRACY! (c) VJ.SOFT 1984 (system36 ó MidiSoft) - êîïèðîâùèê, ïîäîçðåíèå âûçûâàåò íàäïèñü Lenght

ïðîãðàììíûé ïàêåò fongen è îñíîâàííàÿ íà íåì ïðîãðàììà speak russian, íàïèñàííàÿ 4 àâãóñòà 1985 ãîäà íåêèì Êâåäåðîì (þãîñëàâñêàÿ ôàìèëèÿ è èìÿ). /Speaker: KVED (c) 4-AUG-85, íà ðóññêîì ÿçûêå!!!/ Ôàìèëèÿ Êâåäåð î÷åíü ðåäêàÿ, íàõîäèòñÿ òîëüêî âîò ýòîò ôèçèê: http://www.issp.ac.ru/main/index.php/ru/rasmember/kveder.html
m00h ñìîã ñâÿçàòüñÿ ñ àâòîðîì:
Çäðàñòâóéòå Âèòàëèé Âëàäèìèðîâè÷!
Íà êàññåòàõ äëÿ zx spectrum îáíàðóæèë ó ñåáÿ 2 ïðîãðàììû äëÿ ñèíòåçà
ãîëîñà ñ ôîíåìàìè - Fongen1, è Speak Russian, â íèõ óêàçàíà äàòà
àâãóñò 1985 ãîäà è åñòü ïîäïèñü KVED è Kveder moscow 1985. Ýòî íå âû
íàïèñàëè äëÿ ñïåêòðóìà â òå âðåìåíà ?
Ñ ïðèÿòíûì óäèâëåíèåì ïîëó÷èë Âàøå ïèñüìî!
Äåéñòâèòåëüíî, â 1982ã. ÿ êóïèë ñåáå zx spectrum è ñ óäîâîëüñòâèåì ðàçâëåêàëñÿ ñ íèì.
 ÷àñòíîñòè, - Fongen1, è Speak ýòî ìîè ïðîãðàììû...
Ñïàñèáî çà Âàøå ïèñüìî. Ïðèÿòíî âñïîìíèòü ìîëîäîñòü!
Âñåãî äîáðîãî,
    Âèòàëèé Êâåäåð
    
HOMECOU (Äîìàøíèé áóõãàëòåð) (1986) - êòî àâòîð è îòêóäà?
òåòðèñ ANDI 1986 ãîäà (conversion by ANDI, êîïèðàéò Ïàæèòíîâ), òàì óïðàâëåíèå òîëüêî ñ êåìïñòîíà
/ñì. íèæå ïðî ïðîãðàììó, ãäå ïåðåâîä 1986 ãîäà, Êèåâ/
Tape to Tape Copier	1986	Jury Nikolskiy			English	Utility: Copy/Backup (Ìîñêâà òåë. 386-54-45)
RDOS-128 (ðåàëèçóåò â áåéñèêå êîìàíäû TR-DOS òèïà CAT !, àâòîð íå ïîäïèñàí) è TREXT (òî æå, íî òèïà CAT *) (CPU2\SYSTEM-1.TRD) - ðÿäîì ïðîãðàììà RDinstr (îïèñàíèå ïðîãðàììû "RAMDOS"): RICHARDSON SOFTWARE 1985. LONDON. Òåêñò ïåðåâåë ÊÐÀÌÀÐÅÍÊÎ Â.À.,ÊÈÅÂ.1986 (íî òàì îïèñàí äðóãîé ôîðìàò êîìàíä)
Àïïàðàòíûå ñðåäñòâà - PSION + G. (1986) (system28/ROST2 è äàëåå ó MidiSoft) - ðóññêèé ïåðåâîä ôèðìåííîãî îïèñàíèÿ

Êîìàíäû Ñëîâàðü - PSION + G. (1987) (system28/DICTOR ó MidiSoft) - ðóññêèé ïåðåâîä ôèðìåííîãî îïèñàíèÿ
FRIQ-M - Izmerenie F - zk87 (1987) (system26 ó MidiSoft)
CATALOG - Ïðîãðàììà âåäåíèÿ êàòàëîãà (1987 - ÄÀÌÀÑÊ ÀÂÒÎÐÛ: ÄÎÌÐÀ×Å Â. ËÀÂÐÓÕÈÍ À.À.) (SYS59.TRD ó vBv)
Èíôîðìàöèþ î ïðîãðàììèðîâàíèè â êîäàõ ìàëî êòî èìåë, à ïðîãðàììèðîâàíèåì íà ÁÅÉÑÈÊå çàíèìàëèñü òîëüêî òå, êîìó ýòî òðåáîâàëîñü ïî îñíîâíîé ðàáîòå (ðàñ÷¸ò ýëåêòðè÷åñêèõ öåïåé, íåêîòîðûå àñòðîíîìè÷åñêèå ðàñ÷¸òû, êàê ïðàâèëî, ñâÿçàííûå ñ íåîáõîäèìîñòüþ îðèåíòàöèè îñòðîíàïðàâëåííîé àíòåííû äëÿ ïðè¸ìà ñïóòíèêîâîãî òåëåâèäåíèÿ, ðàñ÷¸ò áèîðèòìîâ /ñì. SYS60.TRD ó vBv,  (CPU2\SS_DGAME.TRD - áèîðèòì Êîâàëåâñêèé 1991)/, ðàñ÷¸ò ñèñòåì ëèíåéíûõ óðàâíåíèé, ðàñ÷¸ò äèôôåðåíöèàëüíûõ óðàâíåíèé 2-ãî ïîðÿäêà, ïðîñòåéøèå ïðîãðàììû äëÿ ñâîèõ äåòåé).
Ê âàæíåéøèì äîñòèæåíèÿì ýòîãî ïåðèîäà íàäî îòíåñòè ïåðâóþ ðóñèôèêàöèþ òåêñòîâîãî ðåäàêòîðà - ïðîãðàììû TASWORD (Tasword-RL). Ýòà ðàáîòà áûëà âûïîëíåíà â Ìîñêâå äîöåíòîì ÌÈÔÈ. (ZX-Forum #1) /ñì. êíèãó "Ïðîãðàììèðîâàíèå íà ÿçûêå Áåéñèê" 1987, ÿâíî íàáðàíà òàì/
Character Editor 2	1987	Jury Nikolskiy			English	Utility: Fonts & UDGs
Editor	1987	Jury Nikolskiy			English	Utility
RS 232C Interface	1987	Jury Nikolskiy			English	Utility: I/O Handling
STR Edit	1987	Jury Nikolskiy			English	Utility: I/O Handling
Xonix	Surna A.'87	Sukin&Son Corp'93
Polygraphics îò Ì.À.Ðûáàêîâà (~1987?): http://spectrum4ever.org/download.php?t=fulltape&id=3265
Ì.À.Ðûáàêîâ - Ìîñêâà, "Ìåäèóì" - ïåðåâîä èãðû "Äèêòàòîð" 1987 (ñð. êíèãó 'Àíàòîìèÿ ïåðñîíàëüíîãî êîìïüþòåðà'; Ðûáàêîâ, Ì.À.; Èçä-âî: Ì.: ÑÏ Èíòåðìåõàíèêà, 1990 ã.)
ZX-KEY+ - âåðñèÿ íà ðóññêîì ÿçûêå - Ã.Ã. 1987 GORDWARE (system45 ó MidiSoft) - èíñòðóêöèÿ
?DPW2-GRAPFIC ASSEMBLER - ROBERT GRAVAS (C)1987 A.D (ãðàôè÷åñêèé ðåäàêòîð - system12/PICASSO ó MidiSoft)

Ýìèðàò	Ãóáè÷åâ È.'88
Áàðüåð 1, 2, 3, 4	C.C.B.'88	Inforcom'90 (òîò æå C.C.B.  - Ïîëå ×óäåñ	C.C.B.)
"Pentis" (1988 Tony Raugas ÌÔÒÈ ÔÐÒÊ)
Òåëåâèçèîííûå èñïûòàòåëüíûå òàáëèöû (Âèêòîð Ðàáèíîâè÷, Ëåíèíãðàä 1988) (TELETEST íà SYS59.TRD ó vBv)
×àñòîòû (FRQ MB+) (1988 Þ. Ðîäèîíîâ - äîëãî æèë â Þãîñëàâèè) (CPU2\SS_DGAME.TRD - íà Ìåãàáåéñèêå?)
"Ðóññêàÿ áèðæà" (1988, SF Software, ðóññêàÿ âåðñèÿ èãðû 1983 ãîäà by RORY DUFF)
Ïèòîí (1988, Softmaker Box) íà áåéñèêå
ðóñèôèêàöèÿ Nether Earth "Ñåðâèñ 1988"
×óòü ïîçæå, â èþëå 87-ãî â Ðîññèþ ïîïàë ðåäàêòîð "The Last Word 2". Åãî ïðèâåçëà íà ýëåêòðîòåõíè÷åñêóþ âûñòàâêó ôèðìà "Saga", êîòîðàÿ âûïóñêàëà ðàñøèðåííûå êëàâèàòóðû äëÿ "Ñïåêòðóìà". Çàèíòåðåñîâàííàÿ áåñåäà ó ñòåíäà ôèðìû ïðèâåëà ê òîìó, ÷òî çàðóáåæíûå ïðåäñòàâèòåëè ïîäàðèëè íàøèì êîëëåãàì àâòîðó÷êó. Ìû îòâåòèëè, ïîäàðèâ ìàòðåøêó. Íî Çàïàä â äîëãó íå îñòàëñÿ è, ïîêîïàâøèñü, èçâë¸ê îòêóäà-òî èç-ïîä ïðèëàâêà êàññåòó TLW-2 ñ ïîëíûì îïèñàíèåì. Ýòà ìàòðåøêà âíåñëà îãðîìíûé âêëàä â íàøå ñ Âàìè äåëî. ×åðåç ìåñÿö îïèñàíèå TLW-2 óæå ïîøëî ïî ñòðàíå (ïðèìåðíî â òîì âèäå, â êàêîì îíî õîäèò è ñåé÷àñ), à åù¸ ÷åðåç ïîëãîäà (1988) ìû ñäåëàëè ïåðâóþ (íå âïîëíå ñîâåðøåííóþ, íî ðàáîòàþùóþ) ðóññêîÿçû÷íóþ àäàïòàöèþ TLW-2. (ZX-Forum #1)
MENU-128 (c) Y. & N. RODIONOV 1988 (44.TRD ó Ðîäèîíîâà) - ìåíåäæåð ðàìäèñêà
Àëãåáðà - Ñòàíèñëàâ Êàðïèåñèóê, 1988 (system45 ó MidiSoft)
Äîìàøíèé êîìïüþòåð â âîïðîñàõ è îòâåòàõ (system40 ó MidiSoft) - èíñòðóêöèÿ. Âîçìîæíî, àâòîð ýòîé è ïîñëåäóþùèõ îáó÷àþùèõ ïðîãðàìì - Ñòàíèñëàâ Êàðïèåñèóê (ïîõîæå ïî îôîðìëåíèþ)
14 óðîêîâ Áýéñèêà (system40 ó MidiSoft)
Ó÷èñü ïðîãðàììèðîâàòü (system41,42 ó MidiSoft)
Äîìàøíåå õîçÿéñòâî Ðàñõîäû (system41 ó MidiSoft)
Êàðòîòåêà (system41 ó MidiSoft)
Çàïèñíàÿ êíèæêà (system41 ó MidiSoft)
Ñïðàâî÷íèê ïî ýëåìåíòàðíîé ìàòåìàòèêå (system43 ó MidiSoft)
Àíãëèéñêèé ÿçûê (system44 ó MidiSoft)
Ãåíåðàòîð ðå÷åé (c) Ïñèàí Ñîôòâýð Ëòä. ÌÎÑÊÂÀ, 1988 https://zxaaa.net/view_demo.php?id=12230
DISK ERASER ((c) A. Dereshchuk Software 1988) (MidiSoft/system29)
âîçìîæíî, íå ÑÑÑÐ, à Ïîëüøà? M.STUDIO (MUSIC STUDIO ONLY FOR SPECTRUM 128 Program (c) 1987 JAROSLAW SOBCZAK ADAPTED TO 128 BY: HACKER CHRIS 1988*06*24 DISKED BY FCS'88)(CPU2\SS_DGAME.TRD)
òå æå îïèñàíèÿ îò PSION - ïåðåâîä íà ðóññêèé ÿçûê Áîãäàíîâ Â.Þ. Òèìàøåâñê 1988 (system30/LES0 è äàëåå ó MidiSoft) - ðóññêèé ïåðåâîä ôèðìåííîãî îïèñàíèÿ

Screen Virus (c) 1989. Wlodek Black. Moscow, school nr. 91 https://zxaaa.net/view_demo.php?id=7204
UNI-MENU # Y. & N. RODIONOV (c) 1989 (44.TRD ó Ðîäèîíîâà) - ìåíåäæåð ðàìäèñêà
22 (1989 Õàðüêîâ, íåêèé èíæåíåð-ìåòðîëîã, åñòü îñòàòêè ïîëüñêîãî)
Áàëÿñîâ Âëàäèñëàâ À. (Ìîñêâà) - BETA/MAGIC zap program (A-POKE) (1989) è âèäèìî äðóãèå óòèëèòû â ýòîé ñåðèè
"Ïðèêëþ÷åíèå â ìåòðî" (1989, Wlodek Black - Ìîñêâà, êëàññ èíôîðìàòèêè)
Òåòðèñ íà áåéñèêå (1989 Ïîëãîâ Ä.À., ñ êîïèðàéòàìè íà Áàëÿñîâà è Ïàæèòíîâà), òàêîé æå òåòðèñ Òðóáèíîâà (êàêîãî èç íèõ?) 1990 (òîæå ñ êîïèðàéòàìè íà Áàëÿñîâà è Ïàæèòíîâà)
Âòîðæåíèå íà Çåìëþ (1989 ÈÊÀÐ-ÈÂÒ Êðàñíîäàð), îíè æå èãðà Ïëóò "Êàíàëüÿ" (íå äàòèðîâàíî, ïîõîæå íà ïåðåâîä, ò.ê. åñòü FULLER), ñâÿçàíû ñ ïðîèçâîäèòåëÿìè êîìïüþòåðà "Èìïóëüñ" (èíôîðìàöèÿ îò Acidrain)
ZYNAPS disk version by V.D.G. 1989
(c) Disk-Tape-@ Copy by V.D.G. (c) DENSOFT 1989 (SYS59.TRD ó vBv)
TLW "ÒÅÊÑÒÎÂÛÉ ÐÅÄÀÊÒÎÐ * Àäàïòèðîâàí Ä.Ã.Ñ. * ÌÎÑÊÂÀ * 1989" (SYS21.TRD ó vBv) - ÷åëîâåê ñ òàêèìè èíèöèàëàìè íå íàéäåí ñðåäè êîëëåã Ñèìîíîâè÷à
Ôèðìà "ÈÍÔÎÐÊÎÌ" ðàáîòàåò â ñôåðå èíôîðìàöèîííî-ïðîãðàììíîãî îáåñïå÷åíèÿ âëàäåëüöåâ êîìïüþòåðîâ ZX-SPECTRUM ñ 1989 ãîäà (SYS22.TRD ó vBv)
ART48RUS - ðóññêàÿ âåðñèÿ Art Studio 48 "Âåðñèÿ 1.7 Àäàïòèðîâàíî â 1989 ãîäó ïî çàêàçó" (SYS20.TRD ó vBv)
íåñêîëüêî ïðîãðàìì â êíèãå Äüÿêîíîâà "Ïðèìåíåíèå ïåðñîíàëüíûõ ÝÂÌ è ïðîãðàììèðîâàíèå íà ÿçûêå Áåéñèê" (1989)
êîìïëåêñ îò Èìïóëüñ 04 èç Èëè÷åâñêà - 12 êàññåò ñ óðîêàìè 1989 ãîäà (Newart)
Ìåëüáóðíñêèé ðèñîâàëüùèê (ïåðåâîä Þ.Ðîäèîíîâà äåêàáðü 1989) (43.TRD ó Ðîäèîíîâà)
    DENCOPY  Ðàçðàá.  Densoft  89 ã.  Êîïèðîâàíèå íà ëåíòó ôàéëîâ
òèïà "MAGIC", ñ çàãðóç÷èêîì.
    PASCAL'D  (Ïàñêàëü  âåðñèè  HP4TM16)  Ðàçðàá.  HiSoft  84 ã.,
àäàïòàöèÿ Dereschuck.
H2O	n/a'89
Game 40	Nikolay Trius'89
Ïëàíòàòîð	Vadim Stramous'89
ÌÈÔ - òâîðåíèå KSA (MEGASYSTEM 1989 ), ÌÈÔ ñòàë ðóññêèì è âðîäå áû ðàáî÷èì [AAA]
Test RAM	1989	M.S. Chubarov			Russian	Utility: I/O Handling - òåñò îò ×óáàðîâà ñ õèòðîé êñîðêîé: http://www.worldofspectrum.org/infoseek.cgi?regexp=^Test+RAM$&pub=^M%2eS%2e+Chubarov$
FONT (Sergei Smirnov 1989) https://spectrumcomputing.co.uk/index.php?cat=96&id=27922
MICRON (MONITOR MI(c)RON) (îêîëî 1989?) (CPU2\SOFTWORK.TRD)
S-S Copy ((c) A. Dereshchuk Software 1989) (CPU2\SS_DGAME.TRD) /íàä ýòîé ôàìèëèåé èçäåâàëñÿ Ðîäèîíîâ â PCOPIER/
Artist 2 (DISC VERSION BY N. RODIONOV LENINGRAD 1989) (cpu3\-----001.TRD)
Lister89 (system24 ó MidiSoft)

UDG (Diskversion (c) 1990 By W.Janowski - ñð. D.D.V3 VLADIMIR IANOVSKY (c) 1990 S.PETERBURG) (cpu3\-----001.TRD)
D.D.V3 (DISK-DISK COPY) (VLADIMIR IANOVSKY (c) 1990 S.PETERBURG) (cpu3\PPPPPP.TRD, òàì æå âåðñèÿ ÑÀÍÊÒ-ÏÅÒÅÐÁÓÐÃ 1.06.1990 (NB íå Ëåíèíãðàä!!!) ò.260-55-25)
Art Brush (SIM & Company 1990 - Ñåðãåé Ñìèðíîâ) https://spectrumcomputing.co.uk/index.php?cat=96&id=27460
Òðèãîíîìåòðèÿ (íàáîð ïðîãðàìì) (FANNY 1990?)(cpu3\LOGRO000.TRD)
FLOW (îïèñàíèå öâåòêà - FANNY 1990?) (cpu3\LOGRO000.TRD)
WAVES (FANNY 1990) (cpu3\LOGRO000.TRD)
Êëþ÷åâûå ñëîâà Áåéñèêà (FANNY 1990) (cpu3\LOGRO000.TRD)
Òàáëèöà óìíîæåíèÿ (FANNY 1990) (cpu3\LOGRO000.TRD). Åù¸ êó÷à îáó÷àëîê îò FANNY íà "çàùèù¸ííîì" äèñêå - MidiSoft/system48
Memoryte (Memory test for ZX-SPECTRUM) (c) 1990 Macary Software (newart/UNSORTED/SYSTEM/LOGROS.TRD)
    IBM Ðàçðàá. Lebedev S.M., Krotov V.V. (for "Spark"). Îäíà  èç
(ïðîãðàìì  äëÿ  êîïèðîâàíèÿ äàííûõ ñ IBM äèñêåò íà TR-DOS; ÷èòàåò
ïî äîðîæêàì; ïîääåðæèâàåò ðåæèìû 2D, ID, 2S, IS. /âîçìîæíî, ýòî IBM>SPEC (cpu3\SYSTEM-2.TRD)
èëè IBM COPY (DISK.TRD ó Newart'à)
èëè IBM conv (DISK.TRD ó Newart'à)/
    MASTER-KEY Ðàçðàá. Kotlarov D.V. (DVK-soft), TRTI v3.2  90 ã.
ðÎäíà   èç  ëó÷øèõ   ïðîãðàìì  òèïà   "disk  doctor"   ïðîñìîòð è
ðåäàêòèðîâàíèå äàííûõ íà äèñêå, èìååò ôóíêöèþ ïîèñêà) /MASTER - KEY (òèïà äèñêäîêòîðà, ðÿäîì MASTER COPY Dmitriy Baranov ã.Æóêîâñêèé 1992) (cpu3\LOGROS.TRD)/
ZX-Commander V1.0 KIEV'90 (SYS20.TRD ó vBv)
AYservis "Grafic by OGNEW M.A TUCHINO lotok #55" - ñõåìà ïîäêëþ÷åíèÿ AY (SYS21.TRD ó vBv) (ìåæäó ïðîãðàììàìè 1990 ã.)
REDS "Ðåäàêòîð-ÄÅËÜÒÀ" - ðóññêàÿ âåðñèÿ Tasword (SYS21.TRD ó vBv) (ìåæäó ïðîãðàììàìè 1990 ã.)
 1990-1992 áûëà ôèðìà Kordial, êîòîðàÿ äåëàëà áóòû è áàíê ïðîãðàìì. Íåóæåëè ýòî ìîæíî áûëî ïðîäàòü? https://zxaaa.untergrund.net/demo.php?t=0&s=kordial&author=Author
BANK 25 - Valery present "New programs bank" (SYS21.TRD ó vBv) (ìåæäó ïðîãðàììàìè 1990 ã.)
BANK NEW - KORDIAL & VALERY Presents "PROGRAMS BANK" V3.10 (SYS21.TRD ó vBv) (ìåæäó ïðîãðàììàìè 1990 ã.)
KAT D "KORDIAL corp 90' tel.274.83.31" (SYS21.TRD ó vBv) - êàòàëîã äèñêîâ
GARboot "ZX Spectrum commander 4.2" (c)GMR Ltd ÌÎÑÊÂÀ 1990 Ãàðáóçîâ Àëåêñåé 281-37-18 (SYS21.TRD ó vBv) - âíóòðè óïîìèíàþòñÿ MOA Service è SHELL
ZN64-RL by PENCRAFT SOFTWARE Ëåíèíãðàä 1990 (SYS54.TRD ó vBv) - äðàéâåð âûâîäà 64 ñèìâîëà â ñòðîêå
LBF - TO LOOK BASIC FILES (c) Leningrad 1990 (SKI) (SYS58.TRD ó vBv)
DISK ERASER as RT11SJ (c) CREATED BY K.Studencov 1990 (c) Leningrad 311-43-41 (SKI) (SYS58.TRD ó vBv)
MDDM2 - MIKLE's Double Disk Monitor (SYS58.TRD ó vBv)
LAST HOPE tape-to-tape copier (program and artwork Ä.Þ.Ñòåïàíåíêî,20.7'90 òåë.393-14-31) (SYS59.TRD ó vBv) - ñ êðàñèâîé êàðòèíêîé ÷á
DJCRACK - Cracker 3.0/42 (6.5.90), 3.0/42H è 3.1 (C) 1990 Ä.Þ.Ñòåïàíåíêî 393-14-31 (SYS54.TRD ó vBv)
CP/M äëÿ "Áàéòà" (1990 ÖÅÐÈÊÎÏÈÊ SOFT, Áðåñò?) - Ðàäèî 7-92 ñ.26 - â òàáëèöå åñòü Áàéò (Áðåñò), ñ ÊÍÃÌÄ, íî áåç CP/M!
êîìïðåññîð Áàëÿñîâà (1990)
êîïèðîâùèê tape to disk by MOA (1990) (íå íàéäåí, åñòü âåðñèÿ 1992 ãîäà ACOPY îò MI&DI (cpu3\MICRO000.TRD))
MOA Service - îïèñàíèå IX.90 (Ñàíêò-Ïåòåðáóðã), V01.05 òîæå 1990 (SYS59.TRD ó vBv), V2.5 MOA&PV'turbo òîæå 1990 (CPU1\ZX000.TRD)
Ñòåïàíåíêî Ä.Þ. 3931431 - DJCRACK (1990)
Ãîëóáåâ Ìèõàèë - DISK DOCTOR for BETA 128 (DD íà CPU2\SS_DGAME.TRD) (1990)
READER by IskraSOFT 1990 (2327767.TRD ó Newart'à)
òåêñòîâûé ðåäàêòîð Spark v2.0 (1990) - Ko."Iskra" Design Abramov I.A. (CPU2\SS_DGAME.TRD)
TSW>Sp (Text Transformation From Tasword to Spark v2.0) by IskraSOFT 1990 SPB /NB!!!/ (CPU2\SS_DGAME.TRD)
S*H*E*L*L (FCP) (1990 IskraSOFT) (46.TRD ó Ðîäèîíîâà)
Ðåâåíêî Àëåêñàíäð (Êîìïàíèÿ ÐÞÇ) (274500 ã.Ðå÷èöà óë.Ñïîðòèâíàÿ 3 êâ.15) - êàðòîòåêà KARTEX (1990), DEM.KTX (1990) (CPU2\SS_DGAME.TRD)
Ñòàðîêîëüöåâ Åâãåíèé (Äíåïðîïåòðîâñê) - Beta-Disc's Test Program (B.D.TEST) (1990) (ZX000.TRD)
Change Disk Name Program (c) 1990 Dmitry Sologub (Sputnik Research Ltd) (ZX000.TRD)
PCopier by Nicolas Rodionov - 10-16.04.1990
DISK DOCTOR (c) CREATED BY N.Rodionov 1990 (SYS58.TRD ó vBv)
äèñêîâûå âåðñèè Íèêîëàÿ Ðîäèîíîâà è Ñåðãåÿ Ñêîðîáîãàòîâà - 1990
"Óäàâ-öèôðîåä" (À.Êîðíèåíîê Ëåíèíãðàä 1127566 - ñàìîå ïîçäíåå 1990)
Êîðîëåâñòâî Ýéôîðèÿ (1990 Service Software & Silva Software - Ãîëèöûíî-2, 143040, Êîîïåðàòèâ "ÑÅÐÂÈÑ" òåë. 5900714)
èãðà STEK v1.1 (1990 MPF Software Ëåíèíãðàä)
LIGHT PEN by Roy Eastwood dkTronics 1983/disk version by Petrov Sergey.
          Krasnoyarsk 1990. [LP 48 V4.1] Ñåðãåé Ïåòðîâ - îäèí èç ïåðâûõ
          ZX-òðåéäåðîâ â ã. Êðàñíîÿðñêå, ðàáîòàë íà çàâîäå Êðàñìàø,
          âûïóñêàë êîìïàêòíûå 48-å ñïåêòðóìû â ôðåçåðîâàííûõ ìåòàëëè÷åñêèõ
          êîðïóñàõ. Â äàëüíåéøåì çàíèìàëñÿ èãðîâûìè ïðèñòàâêàìè.
TASWORD RL by Tacman Software 1987/disk version v2.1.0, adapted by Petrov
          Sergey, Krasnoyarsk. 28.12.1990
ÍÒÒÌ "Ýâðèêà" (Ñàðàíñê) â 1990 äåëàëà ðÿä îáó÷àþùèõ ïðîãðàìì äëÿ Ñïåêêè. https://zxaaa.untergrund.net/demo.php?a=HTTM+Eureka
LIST BASIC UTILITY (*RATCOPY* Program System'90) (C15.TD0)
TDCOPY production by AVF & CH (c) 1990-1991 - Ìîñêâà (SYS59.TRD ó vBv)
DCU v1.01 (1990) DCU v2.01 (Nicolas Y. Rodionov, 01.1991 - Leningrad) (SYS54.TRD ó vBv), DCU v2.02, DCU v2.12, DCU v2.31 (1992, Íèêîëàé Ðîäèîíîâ)
VU-EPSO (PSION SOFTWARE & Youri Rodionov 1990) (70.TRD ó Ðîäèîíîâà)
SPECTRUM micro-PROLOG T1.2 (C)LPA, B-disk by N.Rodionov
BETA COMMANDER ver 1.2 by Trubinov J.U. on 19.12.90 (46.TRD ó Ðîäèîíîâà ïîä èìåíåì SLAVA)
L-COPY written by Laptev (46.TRD ó Ðîäèîíîâà)
Chuck/Mapson&Rapson Software èç Ëóãàíñêà - èãðà Áèçíåñ (1990)
The complete machine code tutor (c)1990 Cracked & fully disked by Trubinov J.U. (46.TRD ó Ðîäèîíîâà)
BACK128 (N.RODIONOV'90) (46.TRD ó Ðîäèîíîâà, îíî æå COPY 128 (cpu3\SYSTEM-2.TRD)) - ïîñåêòîðíûé êîïèðîâùèê
Dictator - ïåðåâîä Þ. è Í. Ðîäèîíîâûõ (ñàìîå ïîçäíåå 1990) (26.TRD ó Ðîäèîíîâà)
PINBALL (Unified disk/tape loader Y.R. 12/90) (55.TRD ó Ðîäèîíîâà)
SOPHISTRY Restored by Nic Rodionov 1990 Screen & T/D loader by Yu. Rodionov 1991 (55.TRD ó Ðîäèîíîâà)
"Òåàòð èñòîðèè" ("Òåòðèñ") - äåìîíñòðàöèîííàÿ ïðîãðàììà ìóçåÿ âîñêîâûõ ôèãóð (èñïîëüçóåò TR-DOS). Ìóçåé îñíîâàí â êîíöå 80-õ, ýêñïîçèöèÿ "Âñåìèðíàÿ èñòîðèÿ" - íåèçâåñòíî, ïðîãðàììà óòåðÿíà
    BDJTEST (Beta-disc's test) Ðàçðàá. Starocoltsev Eugen, 90  ã.
ïîêàçûâàåò íîìåðà äîðîæåê íà äèñêå, êîòîðûå íå ÷èòàþòñÿ.
    GENS 451  Ðàçðàá. HiSoft v4.1 87 ã., beta-disk âåðñèÿ ÌÎÀ 90.
Êðîìå  çàãðóçêè/çàïèñè  ïðîãðàìì,   ïîçâîëÿåò  ñ÷èòûâàòü èñõîäíûé
òåêñò ÷àñòÿìè è îñóùåñòâëÿòü àññåìáëèðîâàíèå ïðÿìî íà äèñê!
    MONS 4 beta. Ðàçðàá. HiSoft 87 ã., àäàïòàöèÿ  IC' 90. Ïðåäîñ-
òàâëÿåò âåëèêîëåïíóþ âîçìîæíîñòü-äèçàññåìáëèðîâàíèå äëèííûõ ïðîã-
ðàìì ïðÿìî íà äèñê.
    TLW2 (The Last Word  2)   Ðàçðàá.  Saga System  & Myrmidon 86
Ðóññêàÿ  âåðñèÿ  Ä.Ã.Ñ.,  Êîðäèàë  90  ã.  Òåêñòîâûé  ðåäàêòîð  ñ
øèðîêèì íàáîðîì êîìàíä. Ñâÿçü ñ DOS ÷åðåç ñòðîêó BASICa.
    TREK  A>B  Ðàçðàá.  Kordial 90 ã. Óäîáíûé êîïèðîâùèê äëÿ òåõ,
êòî ñóìåë ïðèîáðåñòè äâà äèñêîâîäà. /cpu3\PPPPPP.TRD - òàì æå åù¸ òàêàÿ æå B>A/
    WHAM (Music  Box).   Ðàçðàá. MarkTime 85 ã.,  äèñêîâàÿ âåðñèÿ
Í.Ðîäèîíîâ  90  ã.  Ìóçûêàëüíûé  ðåäàêòîð.  Êðîìå çàïèñè/çàãðóçêè
èñõîäíûõ ôàéëîâ, çàïèñûâàåò ñêîìïèëèðîâàííóþ ìóçûêó íà äèñê.
Guess Number	Vladimir Fufaev'90
Memory	Vladimir Fufaev'90
Sex Show 1990, The	D. Rovenko, O. Borovik'90
Ïèêà - Ôàìà	Denis Korshunov'90
Columns 1990 ßðîñëàâëü Sunny Tram Ltd
TASWORD adapted by PITER 1990 (2327767.TRD ó Newart'à)
PC Companion (ðåêëàìà êîìïüþòåðà "Êîìïàíüîí") EO Arsenal Èæåâñê 1990 https://zxaaa.net/view_demo.php?id=11217
îáó÷àþùèå ïðîãðàììû ÍÒÒÌ Ýâðèêà - Ñàðàíñê 1990
K.D.'90 boot - Êîðøóíîâ Äåíèñ, Åêàòåðèíáóðã 1990
TPC boot - TPC' soft, Íîâîñèáèðñê 1990
VDG boot 48k - V.D.G. 1990 422-32-47
ZX Top Service boot - 1990 Eugene Stepanoff Saint Petersburg 295-88-00
CDE Music Bank - Andrew Strikes Code, Äíåïðîïåòðîâñê 1990 https://zxaaa.net/view_demo.php?id=6125
Äåìîíñòðàöèîííàÿ ïðîãðàììà DEMO - Êîìïüþòåðíûé öåíòð Äåëüòà, Ìîñêâà? 1990? https://zxaaa.net/view_demo.php?id=5603
Ðåêëàìà Îðåëü ÁÊ-08 - Trotsenko A / Tarasuk W, Äíåïðîïåòðîâñê 1990 https://zxaaa.net/view_demo.php?id=2532
TATSU demo by CATGEN - Åêàòåðèíáóðã 1990 https://zxaaa.net/view_demo.php?id=1585
TRACE SP (ELISEEV V.A.1990) (CPU1\PPP.TRD) - çàìåäëÿåò ïðîãðàììó ïðîëüçîâàòåëÿ
*RATCOPY* TEST SYSTEM (1990?) (CPU1\PPP.TRD)
LIST BASIC UTILITE *RATCOPY* Program System'90 (CPU1\PPP.TRD)
ÄÈÑÊÎÂÀß ÓÒÈËÈÒÀ DU Âåðñèÿ 105p *RATCOPY* Program System'90 (DISK.TRD ó Newart'à)
TrakCOPY (DISK to DISK COPIER (c) 1990) (CPU2\DDD.TRD)
BEYOND BASIC (îáó÷àëêà àññåìáëåðó íà Áåéñèêå) (îêîëî 1990?) (CPU2\DDD.TRD)
DISK DOCTOR for BETA 128 by Mike Golubew (c) 1990 (CPU2\SS_DGAME.TRD è MidiSoft/system37)
S.LOTO (ãåíåðàòîð çàïîëíåíèÿ äëÿ Ñïîðòëîòî) (îêîëî 1990) (CPU2\SS_DGAME.TRD)
SH RUS (âêëþ÷åíèå èëè çàïèñü ðóññêîãî øðèôòà íà ìàãíèòîôîí) (îêîëî 1990)  (CPU2\SS_DGAME.TRD) - îí æå RUSFONTS (cpu3\-----001.TRD)
TEST D-D (Program for control the floppy disk) (Vitebsk 14/07/1990 MSW) (CPU2\SS_DGAME.TRD)
DEM.KTX (Ðåâåíêî Àëåêñàíäð (Êîìïàíèÿ ÐÞÇ) (274500 ã.Ðå÷èöà óë.Ñïîðòèâíàÿ 3 êâ.15) 1990) - îïèñàíèå êàðòîòåêè KARTEX (1990) (CPU2\SS_DGAME.TRD)
DOCTOR R (îêîëî 1990?) (CPU2\SYSTEM-1.TRD)
DCtrk (òðåêîâûé êîïèðîâùèê, îêîëî 1990?) (CPU2\SYSTEM-1.TRD)
YuricCom (áóò ïîâåðõ ñèñòåìíîãî CAT) ((c) DynaSoft 1990 Version W.1) (CPU2\SYSTEM-1.TRD, MidiSoft BOOTS.TRD/YURIC)
EPSON driver (AVP, îêîëî 1990) (CPU2\SYSTEM-1.TRD)
DR55 (EPSON driver R-soft90) (CPU2\SYSTEM-1.TRD)
PrTXT (ïå÷àòü òåêñòîâîãî ôàéëà, îêîëî 1990) (CPU2\SYSTEM-1.TRD)
PHTOOL (PROFESSIONAL HACKER'S TOOL - Þðèé Öèáðîâñêèé 1990, Þðèé Ðîæêîâ, V.L.V. 1992, MiPh&T Hacker Club - îò íèõ æå ADM, Magic File Compressor, ADS) (ver.3.3 ñ õåëïîì 24.10.1992 - cpu3\LOGROS.TRD)
VCOPY3 (CK COPY /K âíóòðè C/) (â ñòèëå TREK A>B by KORDIAL 1990) (cpu3\PPPPPP.TRD)
Rboot (N.Rodionov Leningrad, 11. 1990) (cpu3\SYSTEM-2.TRD) (GAMES-1.TRD ó Newart'à)
MPPS EPROM i2716-27256 (c)PVA-soft, Leningrad'90 (system24 ó MidiSoft)
Hex Calculator - (c)1990 Fr-Soft (system24 ó MidiSoft)
FILE CHANGER - Fr-SOFT (system24 ó MidiSoft)
MOVE - (c)1990 Fr-Soft (system24 ó MidiSoft)
DT (c)1990 Alexander Troosh - Àêêåðìàí? (system24 ó MidiSoft) - êîïèðîâùèê ñ äèñêà íà ëåíòó
Odessa-90 disk catalog driver Written by "Andriuha" Kazakov 10.07.90 (system25/boot ó MidiSoft)
*TR-DOS WINDOWS* (c)Copyright 1990 ELAN Software (system25/boot2 ó MidiSoft)
boot by Kraskovsky Vass from Leningrad 22.11.1990 (system25/boot6 ó MidiSoft)
TL DISC (system25 ó MidiSoft) - êîïèðîâùèê ñ ëåíòû íà äèñê (ëåæèò ðÿäîì ñ ïðîãðàììîé Áàëÿñîâà 1989 ãîäà)
Tape-Tape Copy (c) Y.Kovalevsky /Leningrad/1990 (system25/T-T Copy ó MidiSoft) - êîïèðîâàíèå ñ ìàãíèòîôîíà íà ìàãíèòîôîí â ðåàëüíîì âðåìåíè ñ ôèëüòðàöèåé Í× ïîìåõ
L.WORD 2 (TLW2) - Rusificated by ~Inforcom~, Moscow, 1990 - Disked by LSA Service, Odessa, 1991 (system26 ó MidiSoft)
OM-2RLe, OM-exp (system26 ó MidiSoft) - ÷òî-òî äëÿ ôîðìàòèðîâàíèÿ òåêñòà
Ôèíàíñèñò (system26 ó MidiSoft)
?Äèàãíîñòè÷åñêàÿ óòèëèòà ÒÒ Âåðñèÿ 102ð (system36/TT ó MidiSoft)
?Òåñò êîìïëåêñíîé ïðîâåðêè ÁÊ "ÑÏÅÊÒÐ48" (system36/Test KP ó MidiSoft)
?Test OZU (system36 ó MidiSoft)
?Test Z80 (system36 ó MidiSoft)
DOCTOR-2 Disk Doctor v2.2 - written by Nicolas Rodionov Leningrad 1990 (system36 ó MidiSoft) - äèñêîâûé äîêòîð (îáû÷íàÿ âåðñèÿ 4.3 òîæå òàì æå)

SPECH128 (AY CONVERSION BY BR0MBA 1989, DISKED BY GURIN 1991) (CPU2\SS_DGAME.TRD)
Gemini Wings disked by Cleopatra (XYIZNAET\GAME\FAX.TRD ó Newart'à)
Alfavit (Y. Kovalevsky /Leningrad/ 1991) - UDG ñ îïèñàíèåì
Columns	Piter'91
Fox Hunting (Îõîòà íà ëèñ)	Andrey Mikhailov'91
Gallows (Âèñåëèöà)	Alexander Eskevich'91
Kubes (Êóáèêè)	DenSSoft Inc'91
On Susan	Poptsov D., Shalyakin A.'91
QWERTY-training	'Soft'91
Sir Knight	DZh'91
Sokoban	SU Gold'91
Tetris	ShiSoft'91
Track	Russian Bear'91
Xonix	ShiSoft'91
Àâàðèÿ íà Ëóíå	Àãèåíêî È.Ã'91
Îõîòà íà Ëèñ	AG'91
Î÷êî !	POB'91
Ïîëå ×óäåñ	Izvekov A.N.'91
Óäàâ	Êèðèëëîâ Â'91
Boulder Dash 5	Kraskovsky Vass'91
Boulder Dash 6	Kraskovsky Vass'91
Lode Runner (×åðòè) (dsk)	Sterh'91
1991 - øêâàë äèñêîâûõ âåðñèé (Âàñèëüåâ Àíòîí, Ëàïòåâ, C.C. (Ñåðãåé Ñêîðîáîãàòîâ) è êó÷à íåèçâåñòíûõ)
Andy Tacker - íà êàññåòàõ "Áàéòà" http://zxbyte.ru/additional_tapes_for_computer_byte.htm
Catalog (îêòÿáðü 1991, Ïåòðîâ Àíàòîëèé È. 382-20-01 äîá.21-09 (21-23÷àñ.)) (C2.TD0) - êàòàëîã äèñêåò
TLF-48 (1991, D.M.Shtabsky - LIANSOFT & ALEXCO) (C2.TD0) - çàïèñíàÿ êíèæêà è òåëåôîííûé êîìïàñ
Cerikiller (1991, Ëüâîâ) - ñíèìàåò çàùèòó Öåðèêîïèêà
MASTER FILE 14. Ïåòðîâ Ñ. Ä. Äèñêîâàÿ âåðñèÿ ïðîãðàììû (òåë. 33-04-48, 01.1991)
PLATA v4.01. Ïåòðîâ Ñ. Ä. Äèñêîâàÿ âåðñèÿ ïðîãðàììû äëÿ ðàçâîäêè ïå÷àòíûõ ïëàò  íà ðóññêîì ÿçûêå. (Êðàñíîÿðñê)
T32K.v2. Òåñò ïàìÿòè. Disk version by Petrov Sergay.
          tel. 33-04-48 Krasnoyarsk 1991.
SPORTLOTO. 48K. Êîððåêòèðîâêà ïðîãðàììû vBv (Áîãäàíîâè÷ Âëàäèìèð). Íó â î÷åíü
          ñûðîì âèäå îíà êî ìíå ïîïàëà, à ìîæåò ïðîñòî ïîáèëàñü ïî äîðîãå. /Sportloto (Ñïîðòëîòî)	Tera Software Group'90/
COOKIE. 48K. Íåïîëíûé ïåðåâîä íà ðóññêèé ÿçûê vBv. Óäàëîñü ðóñèôèöèðîâàòü
          òîãäà òîëüêî çàñòàâêó è ãëàâíîå ìåíþ èãðû.
HARRIER. 48K. vBv äîáàâèë ê èãðå èíñòðóêöèþ íà ðóññêîì ÿçûêå. Ïðàâäà ýôôåêòèâíà
          îíà áûëà äëÿ êàññåòíîé âåðñèè, ò.ê. åå ÷èòàòü ìîæíî áûëî ïðè
          çàãðóçêå èãðû. Õîòÿ, ïîñìîòðåë, äèñêîâóþ âåðñèþ ÿ òîæå êîððåêòíî
          ñäåëàë.
Òåòðèñ (ìàé 1991 Tera Software)
CONVER--Comander V 2.06  128K (c) Y.Kovalevsky S.Peterburg 1991
BETA-disk monitor (Y.Kovalevsky Leningrad 1991) (ZX000.TRD V 2.3) True English by L.Kluev (CPU2\SOFTWORK.TRD)
Ïàâëîâ Ñ. (S.A.P.) (Êðàñíîäàð) - TR0to159 (04.91)(CPU2\SS_DGAME.TRD)
MIRROR - ñîõðàíåíèå ñèñòåìíîãî òðåêà íà òðåêå 159 - Ãàðáóçîâ Àëåêñåè(sic!) Ìîñêâà 1991 (MIRROR íà CPU2\SS_DGAME.TRD) (SYS20.TRD ó vBv)
Äóðàê (Â.Ìåäíîíîãîâ) è Game Box (Â. è À. Ìåäíîíîãîâû 1991)
Mike Studio S.Peterburg 1782908 - ZX ARC (CoCo) (Compressor v 1.01) (1991)(CPU2\SOFTWORK.TRD), V3.03 1992 (CPU2\SOFTWORK.TRD)
ASC packer (1991 Ëüâîâ)
COPY*IBM - BG&SI-SOFT (c) 1991 (SYS20.TRD ó vBv)
ZX-Word (1991 SI-SOFT & BG-SOFT (Broken Glass Software) Õàðüêîâ) - âïîñëåäñòâèè ïàêåò áûë ïåðåñîáðàí Åëèñååâûì Âëàäèìèðîì è ôèðìîé Pencraft áåç óêàçàíèÿ îðèãèíàëüíûõ àâòîðîâ
îêòÿáðü 1991 - äåìû îò Âàñèëüåâà Àíòîíà è Êîïðîâà ñ Ìàêàðåâè÷åì
áåéñèê 1991 ãîäà - Ñåpãåé Äåãòÿp¸â (Ëóãàíñê)?
TR-DOS 5.04T - Ñåðãåé Ñêîðîáîãàòîâ 1991, Ìîñêâà? (íî C.C. ïåðåäà¸ò thanks to Vasilyev & Laptev 12.11.91 - Dragon Breed íà DISK002.TRD ó Newart'à): "In 1989 I got my first computer – a Sinclair ZX Spectrum 48K. A year later I started building computer external hardware modules like EPROM programmers and ROM emulators, and writing different programs in assembler for the Zilog Z80 processor used in it. All those projects were a hobby, but that was probably the first time I started reverse engineering code. There were two reasons for that. One was to learn the assembler language better through understanding disassembled code; another was to modify the programs, for example, to add extra features."
DISCBLOC - TR DOS 5.04T (c) MAKSSOFT 1991 Servise 1.01 -DISK BLOC- "plomba ok" (SYS20.TRD ó vBv)
Êëþåâ Ëåîíèä, Â.Åëèñååâ (Pencraft) - DATALOG data base English version & Beta-adaptation (1991)(CPU2\SS_DGAME.TRD) special thanks to V.Yeliseyev
TETRIS 2C (1991 Ïîìèíîâ Åâãåíèé, Ðîññèÿ, ã.Êðàñíîÿðñê)
Ìàêñ Ãåðìàí ïåðåâ¸ë LAYOUT (C22.TD0) "Ïðîëåòàðèè âñåõ ñòðàí, èçâèíèòå!" - îí æå LAYOUT91 ó ÒÎÎ "ÔÎÐÌÀÊ"? íåò, ñì. Çàðóáèí
BMD-DATA (1991-1993 Âëàäèìèð Áóë÷óêåé, Ìîñêâà) - áàçà äàííûõ 48/128 (C24.TD0)
RESISTOR - öâåòîâûå êîäû ðåçèñòîðîâ (SYS20.TRD ó vBv) (ìåæäó ïðîãðàììàìè 1990 è 1991 ãã.)
ÏÎ êîìïüþòåðà "Õîááèò" (1991-1994) "Copyright (c) Koslov O., InterCompex 1991", "Repaired by P.Trubinov, 06/10/91", "HOBBIT 2  (C) INTERCOMPEX CP/M VERS.2.3.28 - 26/05/92 - 48 KB with CCP-loader", "InterCompex (C) 1992", "FFS   (Forth File System) V1.6, release 5.10.92", "FFS V4.3   (c) MD 1993", "-=*  Hobbit Commander v.1.2   (c) by AGA, July 1994  *=-", "Gentleman's Toolkit v2.3 (c) by AGA, 1994", "-= GENTLEMAN's TOOLKIT =- ÂÅÐÑÈß 2.4p (c)  ÃÐÀÍΠ ÀËÅÊÑÀÍÄÐ ÒÅË. (812)-235-08-95 1994 Ã", "  ÂÅÐÑÈÈ 2.3, ÏÎ ÑÐÀÂÍÅÍÈÞ Ñ ÏÐÅÄÛÄÓÙÈÌÈ  { (c) by OK, 1993 }  ÓÁÐÀÍÛ ÐßÄ ÎÏÖÈÉ ÃËÀÂÍÎÃÎ  ÌÅÍÞ,  ÊÎÒÎÐÛÅ,  ÍÀÑÊÎËÜÊÎ ÌÍÅ ÈÇÂÅÑÒÍÎ, ÒÀÊ  È  ÍÅ  ÁÛËÈ  ÐÅÀËÈÇÎÂÀÍÛ  ÄÎ  ÊÎÍÖÀ", "-=  DISK  MANAGER  v3.2  =- (c) by Alexander Agranov, August 1994 (c) by Oleg Kozlov, December 1993", "-=  Forth->ME Texts Translator v1.0  =- (c) by Alexander Agranov, August 1994", "iS-DOS v2.0 (Hobbit) (c) by IskraSOFT, 1992/1993 Adapted to Hobbit by Peter True & AGA", "*** ZX WORD v2.5H *** (Ñ) by V.Yeliseev, 1993 Adapted to Hobbit by Sasha Agranov"
Set Mov4 (Yu.Rodionov 1/91) (46.TRD ó Ðîäèîíîâà) - ÷òî-òî äëÿ ïðèíòåðà
MEGABASIC [russian] autocopy system v.1b by Yu.Rodionov 1991 (46.TRD ó Ðîäèîíîâà), ñ òîé æå ïîäïèñüþ Eagle's Nest (55.TRD ó Ðîäèîíîâà)
Mad Martha - disk version by Yu.Rodionov (1991) (4.TRD ó Ðîäèîíîâà)
ASC Screen Crasher version 2.6 07.Aug.1991 (58.TRD ó Ðîäèîíîâà)
CUT OFF (PENCRAFT SOFTWARE (c)1991 ÁÅÍß ËÞÊÑ) - âûðåçàåò êàðòèíêó èç Magic'à (58.TRD ó Ðîäèîíîâà)
PR40/50R (ðóññêàÿ âåðñèÿ ÃÐÓÏÏÀ PENCRAFT ßÍÂÀÐÜ 1991 - âíóòðè L.Kluev, I.Dumov) - äðàéâåð âûâîäà íà ýêðàí (58.TRD ó Ðîäèîíîâà)
HELP ME! (Îêòÿáðüñêèé Èãîðü Âàëåíòèíîâè÷ (èíâàëèä 1 ãðóïïû Ä.Ö.Ï.) Ñàíêò-Ïåòåðáóðã óë. Áåëû-Êóíà êîðïóñ 1 êâàðòèðà 2) (83.TRD ó Ðîäèîíîâà) - èãðà íà áåéñèêå (ãîä íå óêàçàí, íà äèñêå êðÿêè 1991)
ROM>RAM>ROM (c) Yvtooshenko,1991 (system27 ó MidiSoft)
EPROM programmer by RA3AO (system27 ó MidiSoft) - óæå óìååò 27512. Íà òîì æå äèñêå äðóãèå ïðîãðàììàòîðû ÏÇÓ îò äðóãèõ àâòîðîâ (íåêîòîðûå àíîíèìíûå)
Àëãåáðà 7 êëàññ - Õîçðàñ÷åòíîå îáúåäèíåíèå Êîìïëåêñ, 420133 Êàçàíü, óë.Ãàâðèëîâà, ä.50 òåëåôîí 56-76-74 (1991) (system46 ó MidiSoft)
Ãåîìåòðèÿ 7 êëàññ - Õîçðàñ÷åòíîå îáúåäèíåíèå Êîìïëåêñ, 420133 Êàçàíü, óë.Ãàâðèëîâà, ä.50 òåëåôîí 56-76-74 (1991) (system47 ó MidiSoft)
    ARTSTUDIO  v1.5  Ðàçðàá. James Hutchby (OCP) 85 ã. Âåðñèè äëÿ
DOS  -  Í.Ðîäèîíîâ;   Kordial  91  ã. (ñ  èíñòàëëÿöèåé).  Óäîáíûé
ãðàôè÷åñêèé ðåäàêòîð; ïîçâîëÿåò çàïèñàòü ôàéë íà ïðåæíåå ìåñòî.
    COPY  Ðàçðàá.  Lebedev  S.M.  91 ã.  Êîïèðîâùèê äèñêîâ A<>B è
A->A;  êîïèðóåò  áëîê  îêîëî  41 KB çà ðàç,  áëàãîäàðÿ ðàçìåùåíèþ
ïðîãðàììû â îáëàñòè ýêðàíà.
    MON7 (Advanced  monitor   v7.05).  Ðàçðàá. Wolf. Äèçàññåìáëåð
ïðîãðàìì íåïîñðåäñòâåííî íà äèñêå.
Manager	n/a	author	122	- ñåðü¸çíûé ïðîåêò, ïèñàë âçðîñëûé, íà áåéñèêå, íî øðèôò íå UDG ñ íåïëîõèì ðèñóíêîì
Êîðîëü	n/a	Andrey Plakuschev	42	- ñêîðåå âñåãî, ÑÑÑÐ, ò.ê. íà áåéñèêå øðèôò êîðÿâûé è â íåñòàíäàðòíîé êîäèðîâêå
Ïðåçèäåíò	n/a	author	66	- ñêîðåå âñåãî, ÑÑÑÐ, áåéñèê, UDG, ïèñàë âçðîñëûé
åù¸ ïðîãðàììû îò Copper Feet: Àçáóêà-1, Àçáóêà-2, Àðèôìåòèêà, Ðèñîâàíèå, Âèäåîñïîðò, Òåõíè÷åñêèé àíãëî-ðóññêèé ñëîâàðü
Ïîëå ×óäåñ	Vladimir Fufaev'91
Blackjack (Î÷êî)	ITP Universal'91
ATM comm - êîìàíäåð (íå ïîçæå 1991: íåò ïîääåðæêè ÀÒÌ-Òóðáî, íî åñòü ýìáëåìà ÀÒÌ) (newart/UNSORTED/SYSTEM/LOGROS.TRD)
HIRO (Õèðîìàíò) - adapted for BETA unit KROTOV V Leningrad 1991 520 51 34 (newart/UNSORTED/SYSTEM/LOGROS.TRD)
ww.com (ïîä CP/M) - ìàëîå íàó÷íî-ïðîèçâîäñòâåííîå ïðåäïðèÿòèå "ÀÊÄÈ" ïðåäñòàâëÿåò ïðîãðàììó WW (Áðåñò, óë.Ìîñêîâñêàÿ 202 òåë 2-74-24) - íà çàñòàâêå íàðèñîâàí öåðèêîïèê è èãðàåò "âñ¸ õîðîøî, ïðåêðàñíàÿ ìàðêèçà" https://www.youtube.com/watch?v=PjeHsDs3d0g
Elite SU - äèñêîâàÿ âåðñèÿ áåç ñîõðàíåíèÿ è ñ ñóïåðëàçåðîì Âëàäèìèð ßíîâñêèé (ZXDISK.TRD ó Newart'à)
IKARY WARRIORS CRACKED BY MICHAEL ABRAMZON 1991 (6SYS.TRD ó Newart'à)
1991 DISK CRAKED UTILITY Writed by S.Volkov & E.Rytikov (DISK.TRD/DCU_WORK ó Newart'à)
ZX-Spectrum+ DISK DOCTOR 2.1 (c)GMR Ltd ÌÎÑÊÂÀ 1991 ÃÀÐÁÓÇÎÂ ÀËÅÊÑÅÉ (DISK.TRD/DOCT 2.1 ó Newart'à)
DISK.D.B - S-SOFT Moskow 1991 (DISK.TRD ó Newart'à)
IBM COPY (DISK.TRD ó Newart'à)
IBM conv (DISK.TRD ó Newart'à)
SCREEN MACHINE DISK VERSION BY PENCRAFT 1991 (DISK.TRD ó Newart'à)
â òîì àðõèâå íà dropbox åñòü êîìïðåññîð ýêðàíîâ ñ êàðòèíêîé, òîæå îò íàøèõ https://www.dropbox.com/s/kd7wm6768n52rts/old_systems.zip?dl=0
SEANDEMO (ZX Top Service demo) - 1991 Eugene Stepanoff Saint Petersburg 295-88-00 (CPU1\DISK1.TRD)
íà å¸ îñíîâå AMS1 by Megamonster / Þðèé Ñíåãèð¸â, 1991? https://zxaaa.net/view_demo.php?id=6695
ÒÅÑÒ-128-1 (c) 1991 RATCOPY ÀÍÄÐÅÉ ÕÀÕÎÍÎÂ ÏÅÒÅÐÁÓÐÃ
DISBAS-R (ñìîòðèò ñòðóêòóðó áåéñèê-ôàéëà) (îêîëî 1991?) (CPU2\SOFTWORK.TRD)
TWO (äèñêîâûé äîêòîð ñ äèçàññåìáëåðîì) ((ñ)TWO co.ltd. îêîëî 1991) (CPU2\SS_DGAME.TRD)
Pirat 05 (Ðåäàêòîð çàãîëîâêîâ ïðîãðàìì çàïèñàííûõ íà ìàãíèòîôîí Y.Kovalevsky /Leningrad/ 1991) (CPU2\SS_DGAME.TRD)
Ïèðàò-2.0 (ðàçäåëåíèå áëîêîâ ìàøèííîãî êîäà íà äâå ÷àñòè è çàïèñü âòîðîé èç íèõ íà ìàãíèòîôîí) (Þ.Êîâàëåâñêèé /Ëåíèíãðàä/ 1991ãîä) (íàðèñîâàí ôëàã Ðîññèè) (CPU2\SS_DGAME.TRD)
MAGIC SCREEN* (âûíèìàåò êàðòèíêó èç MAGIC-ôàéëà, îêîëî 1991) (Program writen by * A.S.Ko"LN *) (CPU2\SS_DGAME.TRD)
M.MAKER (Disked by PAPIR & 1991 The town of Gatchina) (CPU2\SS_DGAME.TRD)
ÑïðàéòÄèçàéíåð (SPD MB+) (ìåæäó 1988 è 1992, Þ. Ðîäèîíîâ èëè Äìèòðèé Ïåòðàñ?) (CPU2\SS_DGAME.TRD - íà Ìåãàáåéñèêå?)
STATIST (êîððåëÿöèîííûé àíàëèç íà Áåéñèêå, îêîëî 1991) (CPU2\SS_DGAME.TRD)
COP128.2 (ïîòðåêîâûé êîïèðîâùèê, îêîëî 1991) (CPU2\SS_DGAME.TRD)
SYSTEM TRACK DUMP (PENCRAFT SOFTWARE (c)1991 ÁÅÍß ËÞÊÑ) - ñîõðàíÿåò ñèñòåìíóþ äîðîæêó íà äðóãóþ äèñêåòó (CPU2\SS_DGAME.TRD)
DICT-80S (àíãëî-ðóññêèé ñëîâàðü, îêîëî 1991) (CPU2\SYSTEM-1.TRD)
ID-COM (((c))ID-COMANDER V1.2) (êîìàíäåð íà áåéñèêå, îêîëî 1990-1991) (CPU2\SYSTEM-1.TRD)
COMM (MR SUPERBOOT) (áóò íà áåéñèêå, îêîëî 1990-1991) (CPU2\SYSTEM-1.TRD)
bootGAME ("No more than 20 !") (M.RUSALOV 1991) (CPU2\SYSTEM-1.TRD è system25/boot 10,11 ó MidiSoft)
ART STUDIO (adapted for BETA unit KROTOV V LENINGRAD 1991 (t. 520 51 34)) (cpu3\-----001.TRD)
Äâèæåíèå òåë ïîä óãëîì ê ãîðèçîíòó (ÌÏ ÏÈÒÅÐ 1991?) (cpu3\LOGRO000.TRD)
Àñòðîíîìèÿ (Àõóíäîâ ÌÏ "ÏÈÒÅÐ" 1991)(cpu3\LOGRO000.TRD)
Test KP (òåñò êîìïüþòåðà ÑÏÅÊÒÐ48) (îêîëî 1991) (cpu3\LOGROS.TRD)
TrCopA/A (ïîòðåêîâûé êîïèðîâùèê) (Written by Michael (c) 1991) (cpu3\PPPPPP.TRD)
DISKCOP2 ((c)PV' 1991) (cpu3\PPPPPP.TRD)
V.V.Commander (SERVISE+, CORNORT - îêîëî 1990-1991) (âíóòðè íàäïèñè: Master of Power, Corrected by Lebedev) (cpu3\SYSTEM-2.TRD, system25 ó MidiSoft)
BLAST (÷òî-òî äëÿ êîìïèëÿöèè Áåéñèêà) (DISKED by DUPANOV 1991) (cpu3\SYSTEM-2.TRD)
LAYOUT91 (Translated and disked by À.ÇÀÐÓÁÈÍ 1991) (cpu3\SYSTEM-2.TRD)
GRB (Monocolor sprite grabber) (îêîëî 1991) (cpu3\ZXDIS013.TRD)
ALGTXTM (íà äèñêå MidiSoft) (íåò äàòû, áðåäîãåíåðàòîð òèïà "ãåíåðàòîðà ðå÷åé", íî ñ òåõíè÷åñêèìè òåðìèíàìè)
PASSWORD (íà äèñêå MidiSoft) (íåò äàòû) - çàïàðîëèâàíèå äèñêà
LOM by Ëåøêà Ñóíöîâ - "Ïðîãðàììî÷êà,íåñîìíåííî,äîëæíà ïîðóøèòü çàùèòî÷êó,êîòîðóþ óâàæàåìûé Àíòîí Âàñèëüåâ ñòàâèò â çàãðóç÷èêè îò ??.05.1991 ãîäà" (system20 ó MidiSoft)
BOOT SYSTEM (c)1991 Fr-SOFT corp. (system25/boot7 ó MidiSoft)
Copy screen to printer version 1.3 14 dec 1991 (c)1991 Shevchenko Vadim, Trush Alexander - Àêêåðìàí (system25/SCR->PRN ó MidiSoft)
ZX DISK DOCTOR V1.0 - Koban A.V. (c) 1991 (system26/ADV1.0my ó MidiSoft)
Secretary - 26.03.91 ROSMARKETING ONPC (system26 ó MidiSoft)
DICTIONR (system26 ó MidiSoft) - àíãëî-ðóññêèé ñëîâàðü
boot by Pink Flamingo Software (system25/boot03 ó MidiSoft)
PAINTFILL (system25 ó MidiSoft) - îïåðàöèÿ çàëèâêè ôèãóð äëÿ áåéñèê-ïðîãðàìì
?DICT-80s (system28 ó MidiSoft) - àíãëî-ðóññêèé ñëîâàðü
?BIORITMr (system28 ó MidiSoft)
?SEX (system29 ó MidiSoft çàïîðîòà - àíåêäîò è êàðòèíêà íà áåéñèêå)
?CHANGE.M (system29 ó MidiSoft)
VRESTORE (c) CK software (system29 ó MidiSoft)
Art Studio 128 - Beta 128 adaptation by D.Koveos and IndSoft'91 (system29 ó MidiSoft)
UNIBASE+ (system29 ó MidiSoft)
OPEN (system29 ó MidiSoft)
SAVE9997 è SAVEscr. (system29 ó MidiSoft)
CAT 0>80 - Ñ.Ïàâëîâ Êðàñíîäàð (system29 ó MidiSoft)
Russian Letters (system30 ó MidiSoft)
?CRAC S (system31 ó MidiSoft) - cracker ñ ïîðòðåòîì, ñðåäè ñîôòà 1991 ãîäà
?Z80-list (system37 ó MidiSoft) - ìîíèòîð ñ äèçàñìîì òåêóùåé êîìàíäû

 
-íå ÑÑÑÐ: MIC-COPY by Michael Patlis (system29 ó MidiSoft) - ïîñåêòîðíûé êîïèðîâùèê, LOAD UTILITY. From AY-REAL 128K by Michael Patlis (system29 ó MidiSoft), AY-REAL SOUND 128K by Michael Patlis (system29 ó MidiSoft) - MICRUS SOFTWARE ODESSA 1993
-TLW2 by MELsoft & SII 13.2.1992 (Êóíüêîâ & Ñìûøëÿåâ Ñò.Ïåòåðáóðã)? ïîääåðæèâàåò PENTAGON,Profi,UiPs,ZXLPRINT3, ÖÓÊÅ êëàâèàòóðó (2327767.TRD ó Newart'à)
-BOILER (cpu3\QWERTYUI.TRD) - íà âåíãåðñêîì
[Chaos	n/a	author	65	- íà áåéñèêå, íî ãðàôèêà íå UDG]
[Color Lines	n/a	n/a	48	- ãðàôèêà â ñòèëå 1995]
[Lines	n/a	author	22	- êîäîì, ñ îêîøêàìè, åñòü Kempston]
[Overload	n/a	n/a	32		- íàñòîëüíàÿ, ïèñàë âçðîñëûé?, íà áåéñèêå, íî øðèôò íå UDG ñ íåïëîõèì ðèñóíêîì, àñìîâñòàâêà â REM]
[Tetris	n/a	author	29	- êîäîì, ñ ôîíîâîé êàðòèíêîé, ðèñîâàë ðåá¸íîê]
[Êîíòàêò 4	n/a	author	21	- íàñòîëüíàÿ, íà áåéñèêå, íî øðèôò íå UDG ñ íåïëîõèì ðèñóíêîì]
[Ðóññêèé "Äóðàê"	n/a	author	67	- íà áåéñèêå, íî øðèôò íå UDG ñ íåïëîõèì ðèñóíêîì]
[Öèôåðòîí	n/a	author	30	- îò àâòîðà Overload, àñìîâñòàâêà â REM, x-color]	

Èíòåðâüþ Íèêîëàÿ Ðîäèîíîâà, ñïðàøèâàþ ïðî Þðèÿ Ðîäèîíîâà:
DB>> Ìîæåò áûòü, òà èãðà íà òåìó "ïåðåéäè 
DB>> äîðîãó" - åãî? Â êàêèå ïðèìåðíî ãîäû 
DB>> îí ïèñàë? 
> Äà íåò, ïî-ìîåìó, íè÷åãî îí íå íàïèñàë.
/Äâèæåíèå áåç îïàñíîñòè ÌÏ ÏÈÒÅÐ 1991(cpu3\LOGRO000.TRD)/
DB> Âîò, êîâûðíóë ïðîãðàììó è óâèäåë: 
DB> PITER Ltd 1991 
DB> Akhudow T.A. tel 2353749 
DB> Åñòü åù¸ îäíà ïðîãðàììà ïîä ìàðêîé 
DB> ÌÏ "Ïèòåð" - êëàâèàòóðíûé òðåíàæ¸ð 
DB> "Êëàâà". Àâòîðû: Êàðïîâ (ïðîãðàììèñò) 
DB> è Áæåëÿíñêèé (õóäîæíèê). 
DB> Òû çíàêîì ñ êåì-íèáóäü èç 
DB> ïåðå÷èñëåííûõ? 
> Äà, ñ îáîèìè. Õóäîæíèêà íå âèäåë ñ òåõ
> ïîð, à ñ Ïàøåé Êàðïîâûì ïîääåðæèâàåì
> êîíòàêò è ñåé÷àñ. 
/íà Laser Basic/

Åù¸ äâà ñîîáùåíèÿ îá óòåðÿííûõ ïðîãðàììàõ ñòîèò ïðèâåñòè ïîëíîñòüþ:

*** Area: NET_2_5090_108_21                       Date: 10 Jul 03  1:10:10
*** From: Vladimir Bogdanovitch (2:5090/108.21)
*** To  : Vadim Chumachenko (2:464/117.27)
*** Subj: ïðàêòè÷åñêîå ïðèìåíåíèå Ñïåêòðóìà

In a message of 07 Jul 03 Vadim Chumachenko wrote to me:

 VB>> Áûëî  äåëî,  íî  äàâíî  â ïpîøëîì.  Õîòÿ ïpèáîp ýòîò äëÿ èçìåpåíèÿ 
 VB>> ñêîpîñòèêpîâîòîêà â ãëàçíîé êëèíèêå Ôåäîpîâà, íàâåpíîå, åùå èñïîëüçóþò.

 VC>  î! ìîæåøü ðàññêàçàòü ïîïîäðîáíåå? î÷åíü èíòåðåñíî!

Ñîápàëèñü  òpîå:   îpãàíèçàòîp,  ýëåêòpîíùèê  è  ïpîãpàììèñò  (ïpî ìåíÿ ýòî
ñëèøêîì  ãpîìêî  ñêàçàíî, pàçpàáàòûâàÿ ýòó ïpîãpàììó ÿ èçó÷àë ìàøèííûå êîäû
íà  ñïåêå, êñòàòè òàê íè pàçó è íå âîñïîëüçîâàëñÿ àññåìáëåpàìè, âñå êîäîâûå
ïpîãpàììû  ïèñàë  íà áóìàãå).  Îpãàíèçàòîp ñúåçäèë ê Ôåäîpîâó è äîãîâîpèëñÿ
íà  ñ÷åò èçãîòîâëåíèÿ ïpèáîpà äëÿ èçìåpåíèÿ ñêîpîñòè êpîâîòîêà îêîëîãëàçíûõ
ñîñóäîâ.   Ïî ýòèì äàííûì âpà÷ îïpåäåëÿåò ñîñòîÿíèå ãëàçà.  Áûëî ýòî â 1989
ãîäó.   Çà  ïîëãîäà  1990  ãîäà  ìû è ñáàöàëè ýòîò ïpèáîp.  Çà îñíîâó âçÿëè
êàññåòíóþ  âåpñèþ 48-ãî Ñïåêòpóìà â ôpåçåpîâàííîì ìåòàëëè÷åñêîì ìèíèàòþpíîì
êîpïóñå   (âûïóñêàëè   íà   ìåñòíîì   çàâîäå)   è  âñòpîèëè  åãî  â  êîpïóñ
òåëåâèçèîííîãî  ìîíèòîpà  Ýëåêòpîíèêà  302 (âpîäå òàê îáçûâàëñÿ).  Â íèæíåé
÷àñòè  ìîíèòîpà  ñäåëàëè  ïpÿìîóãîëüíîå  îòâåpñòèå,  â  êîòîpîå  âñòàâëÿëñÿ
ñïåêòpóì  è  äàò÷èê  (ñàìîäåëüíîãî  èçãîòîâëåíèÿ - þâåëèpíàÿ pàáîòà).  Âåñü
ýòîò  ìîíñòp  âêëþ÷àëñÿ  îäíîâpåìåííî.   Ñ  ïîäêëþ÷åííîãî ìàãíèòîôîíà, òîæå
Ýëåêòpîíèêà  302,  çàãpóæàëàñü  ïpîãpàììà  (ïîëîâèíà  â  êîäàõ,  ïîëîâèíà â
áýéñèêå).  Äàò÷èê ìîêàëñÿ â ñïåöèàëüíûé ãåëü (÷òî-òî òèïà ìàçè) äëÿ ëó÷øåãî
êîíòàêòà  ñ êîæåé è ïîäíîñèëñÿ âïëîòíóþ ê îêîëîãëàçíîìó êpîâåíîñíîìó ñîñóäó
(íàïpèìåp, âîçëå ápîâè) - íà ýêpàíå ìîíèòîpà â påàëüíîì âpåìåíè îòîápàæàëñÿ
ñêîpîñòíîé  ãpàôèê  â âèäå çàêpàøèâàåìûõ ïèêñåëüíûõ ñòîëáèêîâ ñëåâà íàïpàâî
äî  êîíöà  ýêpàíà  è  ñíîâà  ïî  êpóãó  (ñ çàòèpàíèåì ïpåäûäóùèõ).  Òàêæå â
íàpèñîâàííûõ ÿ÷åéêàõ îòîápàæàëèñü íåîáõîäèìûå öèôpîâûå çíà÷åíèÿ.  Òåì ñàìûì
âèçóàëüíî  ïpîñìàòpèâàëàñü  êàê  áû  îãèáàþùàÿ, à äëÿ òî÷íîñòè îòîápàæàëèñü
öèôpîâûå  çíà÷åíèÿ.   Êîãäà ïpèáîp áûë ãîòîâ ìåíÿ êèíóëè ìîè ñòàpûå äpóçüÿ.
×òî áûëî äàëüøå íå çíàþ, òàê êàê ïpåäàòåëüñòâî íå ïpîùàþ.  Êñòàòè, pàáîòàëè
íå ñ÷èòàÿñü ñî âpåìåíåì äàæå ïî íî÷àì.

Äà,  ïpîãpàììà ãäå-òî íà êàññåòå äîëæíà áûòü, òîëüêî, íàâåpíîå, óæå âpÿä ëè
ñ÷èòàåòñÿ.

Vladimir Bogdanovitch (vBv)

--- Spot 1.3b
*** Area: ZX.SPECTRUM                             Date: 26 Sep 03 22:17:56
*** From: Vladimir Bogdanovitch (2:5090/108.21)
*** To  : Kirill Frolov
*** Subj: ñôåðè÷åñêèé ñïåêòðóì â æèäêîì âàêóóìå

In a message of 26 Sep 03 Kirill Frolov wrote to Andrew V. Miheev:

 KF>    Ïîðàáîòàåøü â êàêîì ñìûñëå?  Ñïåêòðóì ñòàâèëè â ñòóäèè êàáåëüíîãî
 KF> òåëåâèäåíèÿ, äëÿ íåãî ïðîäàâàëèñü áóõãàëòåðñêèå ïðîãðàììû...

Àãà,  ÿ  òîæå  ñòàâèë  ñïåêè  íà  êàáåëüíûõ  ñòóäèÿõ è íàïèñàë íà áåéñèêå ñ
êîäîâûìè ïpîöåäópàìè ïåpåêëþ÷àëêó ïàêîâàííûõ ýêpàíîâ (7 ýêpàíîâ - ïpîãpàììà
íà  íåäåëþ) â çàäàâàåìîì ïîpÿäêå.  Ãîäó òàê â 1990.  Ïàêîâùèê è pàñïàêîâùèê
ïpàâäà âçÿë ãîòîâûé ñ êàêîãî-òî æópíàëà.
-
Vladimir Bogdanovitch (vBv)

â Pencraft òàêæå âõîäèëè: Ùåðáàêîâ Ìàêñèì (Technomax), Ùåðáàêîâ Âàñèëèé - SAMPLER v1.1 (äåêàáðü 1994) (59.trd ó Newart'à)
Åëèñååâ òàêæå àâòîð iS-DOS?


1987 Ïðîãðàììèðîâàíèå íà ÿçûêå Áåéñèê
1988 Ìîñêâà - Áåéñèê è ïðîãðàììèðîâàíèå â ìàøèííûõ êîäàõ
1989 S I N C L A I R    R E S E A R C H   L T D . ZX SPECTRUM. MONITOR 48K.  L E N I N G R A D      1 9 8 9 (RST.TXT)
1990 Ñèðèóñ. Ðóêîâîäñòâî ïî ýêñïëóàòàöèè. - «Ñèñòåìîòåõíèê» (ñ öâåòíîé îáëîæêîé)
1990 Ìîñêâà ÍÒÊ Èíôîðêîì - Ïåðâûå øàãè â ìàøèííîì êîäå Z-80 (òð¸õòîìíèê)
1990 Layout. Ïðîãðàììà òðàññèðîâêè ïëàò Layout 86
1990 ÍÒÊ "ÏËÞÑ". Ìåòîäè÷åñêàÿ ðàçðàáîòêà. Èíòåðôåéñû ïåðñîíàëüíîãî êîìïüþòåðà "Ñïåêòðóì". Âûïóñê 1. Ìîñêâà 1990
1990 Ñòèâåí Âèêåðñ. Ïðîãðàììèðîâàíèå íà ÿçûêå BASIC - «ÌÈÃ ËÒÖ» (ñ öâåòíîé îáëîæêîé)