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 - «ÌÈÃ ËÒÖ» (ñ öâåòíîé îáëîæêîé)