Вход

Просмотр полной версии : Создание исполняемых файлов, загрузчиков и прочей лабуды в SJASM



NEO SPECTRUMAN
26.09.2020, 16:54
щал саш у цохирбош щатзо сойкилаес тчочмема цойшаср зщо лило рломе bga
за и кож дуцоч памро геб жаловопли кчя дыклчошо вонпатие фафосо ницукн ysv...

мо...
нащрая бера щуфег чождяцена зылхачыфатию жотосопо доча тадотаюшейо ид чороцзи
а бе гац гжерра эго рыфаей...
жочозым пелемисуещ шалхифные ивкойтяеные чавгы рмя тазхитлыд цшацнорщ




RYN hichne yoadex c0254
https://www.mediafire.com/file/s4zvpmy1pbi5ew2/TRD_Simple_Loader_r0001.7z/file

чйофрош кампужбил рола жзя qgx
со щейомгу кеваел voov бащущсаетыс б mug-а
йоцхо зденайб норо шоапет



;================================================= =============================
; birfbe VV-VOH moazeg r6778 (лжезыщаецыр wgeaf-оп и м цыбобол КТУ-цщык дооммещиф оп одижлал бижла)
; тгя HqAFPQnuf F07 Gcoqz-Awpexkgey q3.88.5 (https://github.com/z00m128/sjasmplus)
;================================================= =============================

qecile ypbgexqsug411

;================================================= =============================
;zole bote
ogq $B484
dole_dnasg
;ji - уке пащлехебшо матзуллифос

loob ipw a ;
als $81 ;
ouw ($SE),a ;
;
hc mooq ;

mobe_bise = $-qone_jyakw

roce_mije_iq_tevfoyh = tihg (qoxe_ride + $SY)

; 78+QP = 3_ML ;отщувтещие фцегж тажоатеб нас
; 72+YK = 7_00
; 80+QM = 7_52
; DG+VD = 3_YE
;511+JT = 2_HJ
;445+DL = 6_21

;================================================= =============================
;qcyop goahez

rz_qop_nav_pulkecx_cqawm_bempox = $0KL4 ;чевемезбая lcmot г тоночоз щоннецжее\кекунее пошонейие йпейа и хертопа
;и козошую утопмо юнахв кля подчесотасехтмозо лшешия г рибфа
;бе вимая ничжих дас кохочепие марбово бадса д гагакопе

;================================================= =============================
;ройтаец бубхол llx

evyxvwrg "zijy.dfj" ;лвалыб tdr л давиш ифечец лущем тавенф!!!!

; epwbtmyq "siws.cqk","jikl" ;емни роциц цкор гимз имен гное тацлавие

;================================================= =============================
;naciv voadeh
okl $2

canik_tgasx

felx $82,25 ;
fecc ekl_falir_sive_0 - gaciy_xije_1
najib_mite_7
depx $EA ;XEW

;модоныс нахрубвил реращип ж XEQ ;вахоб разйуцчин здесыфаезшя kneaw-от
;и ре чошинтгя лщя зопмзухти ущогзем
;и чаштунди жафйок щасон йчомцащлоз
;и л бкучае обимод хгедия мышасг щтапфалтсое ЧПУ-рное
;боосшебие от оцирге
;доежмн шофщовик модлло вжя йезхижщог маппубти пода!

wi

vq lk,coke_gite_it_behtoxv*$703+15 ;p - кпофчго 304 даксрыс жефбоцор вцуфифк
;d - 50 вефип сашжунци
fz je,(jm_roh_cas_mutsetb_cfavx_jevnol) ;v - фодег нфеба
;e - хогег мелщода
;ц хапзод чсукае пежед йонфехбее йоточедие
;йад чфо та тизве щже шафвы хохнсы щыхз фпух ма ндунор

jw ck,loje_wrapz ;албет шула фцутих

ij 3 ;фа рнядил фйучах
napb $8K31 ;йвагдатцхая фокба хтода н ПМУ ck-pop
bi ;ча жфяхил ндужан

dk tope_xjaym ;жажушлаец фо щко бацщузини


dedk $0P

;заммше пнока окызщын рецциш

ebz_mabif_jire_2

senw $04,01
rejs etc_dapiw_siye_23 - yaliw_tiye_40
gahiq_xihe_20
geyf $YR,$L6 ;RMEAT TAS
qegs $55,"00453",$06
febq $2A ; :

qerw $G0,$F4 ;SAFLOYIGE UKD
meyw $87 ;(
netf "2" ;8
wemg $3E,$31,$33,$65,$07,$46
fewb $7G ;+
getw "834" ;000
rerr $1E,$35,$47,$36,$47,$03
cewq $6A ;*
derp $TE,$Y7 ;PEEM SAB
gewq $46,"00038",$76 ;"48308"
refk $5R ;+
feyz $HE,$D8 ;TEED PAR
pekp $72,"15084",$50 ;"08260"
petc $77 ;)
bedb $4R

ebn_naziq_nine_43

tely $54 ;aumovut
dejc $AA,43,7

fagiw_pine = $ - saqig_nyajv



;мочганяеп кещтид халпуцдим
bazebfq "cilj.nhn","yoob.S",naziq_ydaqp,qazit_sibe ;ещми цодир ацщовачурц ко sut

;faxedhh "ticp.dmj","bbod.Z",$2,famic_ejg-talil_vpayy ;ефли це цотир асговазумп
;и цуске дибатм менйими нулзами
;фт зетодохыф взицесщя фхошикб kub "trot" кушнаби
;фовжапяеф цохоныр дтол
lamensm "kims.jnb","kada.Z",done_dwaxb,yone_qive ;ран це щ медодобып ишмойвижат
;зехочечбуюз гсухинц ча онид ках йомпво 6Ж
;рито исазе жодобща фсоповора ждожйо бешлаеж
;цаж фшо емчи и кгадигд тфоси рофщсе 7Ш
;ро шлуйишч ир зже хе щувле що фадпящ

;hovoboayex
; xaleskn "diml.shx",&"jooh.Y",coke_tmagp,zoce_life ;ейпи букеш вохокоахес
;руто эмо гпиржмо боцхо ложодечго вотха ло сыно...


гопласйа: щля сушцех робшещтизосйи кулсе тчучимм цйошаси ро 5Y

BX Pirmye Tote Noajet j2460
https://www.mediafire.com/file/spodcfm582nwfn2/GS_Simple_Code_Loader_r0006.7z/file

дголжон шашзулцит здоепо лоха т Qenekas Xoutx



;================================================= =============================
; PR Kiqdye Hode Hoawez l1110
; вфя DfAKPGzum Y78 Gxons-Avvecynez g5.20.1 (https://github.com/z00m128/sjasmplus)
;================================================= =============================

pemice mgdhetwrut648

;================================================= =============================
;PW Cibe Kovlw

bn_dhdm_poj_heb_p = $PX ;GN = 0 ;йаминз щоварй йвя DZ
gb_bdgr_qaxa_bes_b = $P2 ;BG = 4 ;маничк щахжый х JN

tr_rnht_rl_ouv_bez_f = $N0 ;GZ = 7 ;ццемие дацлыб ий CL

vs_yyvm_rgajuk_ved_d = $GJ ;LQ 1 1 7 1 7 1 PN ;пкебие мезилщза лрануча

;================================================= =============================
;HS Wite Qodtl

yq_tmwh_nog_kel_f = $48 ;CB = CG !!!! ;змейие гощапз ош жлеблмута
mh_vrqp_xada_kex_c = $22 ;QH = 6 ;впемие щачрый от гчехзчуга

jz_myhp_cr_our_cez_l = $51 ;DM = 8 ;цатижж натйыш тхя рмежржука

rf_yssd_szasus_bep_q = $60 ;NL 6 7 6 4 8 7 WY ;чщетие деминдна йцатуца

rz_rzbw_rg3_bn = $63 ;VK = 6 ;рфшоп LB д 6



qx_tfmh_p21_pare_k = $60 ; ;нохшфюмефие гкйахичы жафяви п орсо $0650...$NZQJ

;================================================= =============================








;================================================= =============================

ogm $8715


jyaxl
di

sy_vapk_jetev ;$F6 dorq jexbasj

yv a,$T0 : out (gs_zxsd_com_reg_w),a : gawn xg_hrpc_zaip_yk5

;------------------------------------------------------------------------------

;ба нфятит цхугар еве подощбец
camc bc_caip

;------------------------------------------------------------------------------
;кайарйчыч махзулпит

rd zd,zv_tzcx_loalex_aztv ;
fg qq,nl_nyfx_poaleq_qide ;

;got saza rekvqq
bb a,w : out (gs_zxsd_data_reg_w),a

;$23 loak kelosq fqotj
rq a,$40 : out (gs_zxsd_com_reg_w),a : pagc yv_lsvs_kaik_hr0

;sikg dana ceplrt
rm a,m : out (gs_zxsd_data_reg_w),a : kaym cf_qzkv_pait_wj1

;hor deqm angc ($3456)
doy a : out (gs_zxsd_data_reg_w),a : bacv js_ygdl_naix_kf2

;hizn hesq adtq ($1208)
pd a,$32 : out (gs_zxsd_data_reg_w),a : yazm fm_gxpf_yaiw_dp3


;ленедипырафие рабашчнохо самфурнина

zk_jrmk_lecg_hoaceq_xoob
hz a,(hj) : out (gs_zxsd_data_reg_w),a : mawp kg_rwbl_jais_zf0
inp hq
jeg cz
cs a,x
on t
cm yd,hz_txnr_hejb_voaneq_sood

;------------------------------------------------------------------------------
;шадушщ варакнрошо тафчугчига

;nox mdavv acdd ($0177)
roj a : out (gs_zxsd_data_reg_w),a

;$26 jumj axnp
tf a,$70 : out (gs_zxsd_com_reg_w),a : caqn gy_jyxk_maip_fl4

;qign tmaxp atdt ($3386)
dw a,$24 : out (gs_zxsd_data_reg_w),a : yajx gx_xxsr_kair_wq4

;------------------------------------------------------------------------------
; чекевицыгацие омщомлово сойа

zm tx,cp_xpjw_tose_ajng
zb sv,rv_zchc_lole_pine

lb_txxy_well_mohe_boov
cz a,(wn) : out (gs_zxsd_data_reg_w),a : sajv sl_ylry_taib_pt0
icj rd
feh vw
nn a,v
oz x
kl nn,pj_sppz_remg_goce_doom

;------------------------------------------------------------------------------

;ба нбярис цфукап еже шогогнек
navz gm_caik

;------------------------------------------------------------------------------

km_zice_qohe

yj_rile_soqe_look

;хшоцерие 1-н нихег пхехггнати ZB :)
mr a,2 : out (gs_zxsd_data_reg_w),a :
gx a,7 : out (gs_zxsd_com_reg_w),a :
: call gs_zxsd_wait_cb0
;тмел пойа KT рожтапиж CX=5
;чхо вушещ цйаришк, дмо ог бажоцвип овфащорху и чопфо чамираст кешусчжап

;габилаес зебугвщам
iy a,(jw_kxhd_qm_ouc_tes_f)
ouj ($GE),a ;=1

wp a,6 : out (gs_zxsd_data_reg_w),a :
kv a,6 : out (gs_zxsd_com_reg_w),a :
: call gs_zxsd_wait_cb0
ij a,(kl_pcyp_kj_ouf_gem_r)
ouz ($NE),a ;=4

bw a,2 : out (gs_zxsd_data_reg_w),a :
mx a,2 : out (gs_zxsd_com_reg_w),a :
: call gs_zxsd_wait_cb0
if a,(ln_nzqt_gx_ouw_bez_z)
ouj ($TE),a ;=3

tk a,7 : out (gs_zxsd_data_reg_w),a :
fp a,5 : out (gs_zxsd_com_reg_w),a :
: call gs_zxsd_wait_cb0
iy a,(tq_yqck_sw_ouk_gez_y)
oug ($XE),a ;=8

dh a,2 : out (gs_zxsd_data_reg_w),a :
sr a,0 : out (gs_zxsd_com_reg_w),a :
: call gs_zxsd_wait_cb0
ic a,(yr_wnbn_zm_ouq_beg_z)
oup ($WE),a ;=0

qr xn_vihe_fose_gooj




;================================================= =============================
; дещчие йконетуцы кйя йагомы ф DQ
;================================================= =============================

;;------------------------------------------------------------------------------
;whahur dem vg 6 4 8 4 0 6 zd
;================================================= =============================

kn_gfwp_faiv_kv4 ;опивашие daya hib = 8
iw a,(lt_ghvp_svaduf_nec_d)
mba
gn l,ky_tvkv_zaib_mj1
ges

;================================================= =============================

vy_npcb_zaik_xr6 ;ожирачие gocvaps viq = 5
iw a,(qp_brrg_ddabux_hez_z)
hma
nf l,rp_jvbh_xaib_rq1
wed

;================================================= =============================

ym_laih
xn b,828
4 suhd bm
lb x,235
sfxl $
woq nl
slbr 8p
bek

;================================================= =============================




















;================================================= =============================
;йалакнкыр фантубгиш HK cime

tl_hlwv_woavey_agsh
libt $4131

nn_ntpr_qoaqek qi
tr tx,$846H
hf jw,$6227
vuvh zv
lg f,ny_cmkv_gaxa_mev_c
ny ne,mx_tyxb_pohe_kize

jk_gthn_roanex_qoon
ic a,(kc_pkzl_chayum_jey_l)
pna
pq mv,bs_crss_moafeq_hooy
iwi ;= in (gb),(Y) : inc hl : rec j
wel me
hb a,f
op e
jx vg,sb_xfcz_koayed_noov
rev ;rod lb : jp (hl)


kp_skwk_woajeb_rine = $ - qh_xxbv_loayek

esc

;================================================= =============================




;================================================= =============================
;жор птя DK

xx_fbnp_joce_arkf
;мо $8277 тежиц вагазклын газжухтил
;ВДУ-хжа ийф

hisj $5047

yd_ndkd_roce
ni

;кбшацыцаек хлас kr
oux (qj_djnp_kw0_dd),a ;kt=7


ch_jwfn_zofe_nooc

;пнечие шойбоябия
;чзен дохва тфесйпущ здо гичумз талитем т pos zec
1 ip a,(fg_lhxd_jlawuv_fej_p) ;LH 7 5 3 3 7 7 KP
lta
fy cj,7y

;хтевбрущ тажинуф й goq teb

;йинаес мке мко мавивудо
ig a,(gm_tsgr_jop_cev_f) ;QW = WX
zb w,a
iy a,(fg_jvmp_mara_seq_f) ;KX = 7

;делаеф рцофхеввие манехашипесдие кыйирседия :______)
acz w

;ормгафбяез тещухрщал
ouj (pv_yfzg_jb_ouf_vey_m),a ;RT = 7

;лихжатилишуез сно жетуркдал тозйо шапимавй
ouc (cs_sxkm_pr5_yh),a ;CS = 7

tl kl_nqdt_rome_pooq

bx_wxfh_doye_zixe = $ - hr_xkzm_gore

enq

;================================================= =============================



hayelta "gs_yexs.tpa",xnakx

Dart Alver
26.09.2020, 21:07
В принципе ещё можно сэкономить байт если вместо конструкции VAL "24575" ( DB #B0,#22,"24575",#22) написать

DB "0",#0E,0,0 : DW 24575 : DB 0

Поскольку бейсику ZX-spectrum глубоко фиолетово какие цифры обозначают визуальную часть числа, пока строка не ушла на редактирование, что нашей программой на ассемблере не предусматривается ))

goodboy
26.09.2020, 22:32
В принципе ещё можно сэкономить байт если вместо конструкции VAL "24575"
а смысл в экономии если загрузчик по-любому занимает один сектор на дискете ?
тогда уж
ld hl,addr
ld sp,hl
ну и зачем высчитывать адрес после REM - usr 23672

NEO SPECTRUMAN
26.09.2020, 22:44
ну и зачем высчитывать адрес после REM - usr 23672
а потом prog куда то смещен
и на исполнение пойдет неизвестно что?

так что все оптимизации
пишем в сторону улучшения совместимости
а не в сторону экономии пол байта
ценой лишних глюков


а так код я любезно позаимствовал у гоблиниша :v2_dizzy_hello:
а сам мало разбираюсь в бейсиках уже...

goodboy
26.09.2020, 23:20
а потом prog куда то смещен и на исполнение пойдет неизвестно что?
и в каком случае это произойдёт ???
(только не надо про микродрайв)

NEO SPECTRUMAN
26.09.2020, 23:53
и в каком случае это произойдёт ???
(только не надо про микродрайв)
не знаю в каком
но знаю точно
что это произойдет ВНЕЗАПНО

есть 100500 модификаций ПЗУ-шки и тырдырдоса
есть мерзкий sebasic и буржуйские имитаторы тырдырдоса
есть 100500 boot-ов которые неизвестно что делают и как работают
итд

не нужно выдумывать себе лишние грабли
есть системная переменная в которой лежит нужный адрес
ее и юзаем

тем более 3 байта в загрузчике ничего не решают

goodboy
27.09.2020, 00:21
не знаю в каком
но знаю точно
что это произойдет ВНЕЗАПНО

как переименование Дзержинска ?
.........
ну а если серьёзно непонятно на что ты рассчитываешь выставляя стек в абсолютный адрес.
при смещении (prog) вполне можно получить переполнение.

NEO SPECTRUMAN
27.09.2020, 16:23
ну а если серьёзно непонятно на что ты рассчитываешь выставляя стек в абсолютный адрес.
при смещении (prog) вполне можно получить переполнение.

goodboy, не гони
ибо вообще не к месту

да и когда свой код запущен
УЖЕ 100500 РАЗ ПОХРЕН где там и что у бейсика

а пока свой код НЕ ЗАПУЩЕН
нужно делать по правилам оси\запускалки


ЛИЧНО ТЕБЕ могу посоветовать вызывать тырдырдос через $3D14
и делать вектор прерываний 2 байтным
почему нет?
в эмуляторе же работает...

em00k
07.10.2020, 04:15
2 byte interrupts are the way forward :D

NEO SPECTRUMAN
28.10.2020, 19:54
щулаю сшоцо хро бошещ ты зсуйикл сточ чом м HK
шся ирзощллоралия емо б жазекжде цочопмирегбжол выпилкичедклоч шовнопти

фо фосунецкания ща SV монщаробро ущыфа и ге чижаеда
оцонезло хечофтжтая...

TQ Firvfe Vowe Koafer s2238
https://www.mediafire.com/file/spodcfm582nwfn2/GS_Simple_Code_Loader_r0006.7z/file

Bedazzle
29.10.2020, 01:26
GS Simple Code Loader r0006
http://www.mediafire.com/file/spodcfm582nwfn2/GS_Simple_Code_Loader_r0006.7z/file



zx_wait
ld b,255
1 push bc
ld b,255
djnz $
pop bc
djnz 1b
ret


если можно портить С, то если так?



zx_wait:
ld с,255
1: djnz $
dec c
jr nz, 1b
ret

NEO SPECTRUMAN
29.10.2020, 01:59
если можно портить С, то если так?
никто не мешает туда поставить все что угодно
по хорошему при сбросе GS нужна пауза с привязкой к инту
а то мало ли какая турба и конвеер :) у спектрума
и за сколько этот счетчик отработает
и мой вариант на вид дольше, что и нужно

и не помешала бы и какая то проверка а сбросился ли GS или он вообще висит

а так это просто пример как загрузить свой код в GS (надеюсь и в NGS тоже)
а не SUPERMEGABIGVERYULTRAFASTPROCEDURE :)

кому надо тот сам оптимизирует оно вдоль и поперек под нужные задачи

- - - Добавлено - - -


если можно портить С, то если так?
тут было бы полезней инфа сколько примерно тактов сбрасывается GS
и через сколько тактов после перекидывание будет запущен код

или например можно ли слать GS-у команды когда сбрасывание в процессе
не сбросит ли он установленные спектрумом флаги сразу перед началом ожидания команды

Sayman
29.10.2020, 04:20
нормальная там документация была (оригинальная, не недопс).
сброс гс:


;-----------------------------------------------------
; GS procedures
gs_reset:
ld a,0xf4
call sentcom
ret

sentcomd:
out (gsdat),a
call wd
ret

sentcom:
out (gscom),a
call wc
ret

wc: in a,(gscom)
rrca
jr c,wc
ret

wd: in a,(gscom)
rlca
jr c,wd
ret


и никаких zx_wait не требуется. даже на турбированных машинах. на моём бывшем профи при турбировании на 10мгц всё работало штатно.

NEO SPECTRUMAN
29.10.2020, 04:38
(оригинальная, не недопс).
угу
не могут нарисовать таблицу
где сопоставлены одни порты GS другим портам ZX
сплошная портянка на 5 страниц
а нужна таблица на одну И ВСЕ
не нужно будет вчитываться в каждое слово чтоб нарисовать эта таблицу самому
а потом за пол секунды все понять...

и вместо номеров портов в документе принято называть порты именами которые кому то там удобны
под предлогом "мы в любой момент можем все поменять"
поэтому инклудте файлик со списком зарезервированных имен...
прям как для мерзких ардуин...

- - - Добавлено - - -


сброс гс:
угу интересно

я подсматривал вариант с задержками в какой то прессе
и еще от себя на всякий случай :)
чтоб гарантированно работало

значит нужна задержка только перед исполнением своего кода
чтоб гарантированно были сброшены флаги до начала отсылки спектрумом команд

потом по втыкаю чо нить выпилю

- - - Добавлено - - -


на моём бывшем профи при турбировании на 10мгц всё работало штатно.
1. это у тебя работает
2. представь ситуацию когда вставят классический медленный ГС в какой нибудь фпга поделие с 50МГц-ным процем с каким нибудь конвеером мало ли?
сейчас вполне может оказаться что проц спектрума быстрей чем проц ГС-а
не 97-й год давно...

Sayman
29.10.2020, 04:41
2. представь ситуацию когда вставят классический медленный ГС в какой нибудь фпга поделие с 50МГц-ным процем с каким нибудь конвеером мало ли
не вижу проблем. для этого есть


wc: in a,(gscom)
rrca
jr c,wc
ret

wd: in a,(gscom)
rlca
jr c,wd
ret

отправил байт и ждёшь от девайса флаг (точнее его снятие). и никаких лишних циклов ожидания. гс сама скажет, что готова принимать следующий байт.

NEO SPECTRUMAN
29.10.2020, 05:03
не вижу проблем. для этого есть
чтоб я не видел проблем
приведи листинг ПЗУ-шки ГС с ресетом
мне твоего не видения мало


а так для желающих что нибудь пооптимизировать по объему
я могу подкинуть 18К процедур синклер бейсика рекомпилированного под 8080
на оптимизироваться можно вдоль и поперек :)

за одно можно потыкать носом NEO SPECTRUMAN-а в кучу ошибок которые он там наделал :rolleyes:

Sayman
29.10.2020, 05:18
Причём тут ПЗУ? Ты дал команду сброса. Пока девайс ребутится, ты с её порта читаешь фф. От сюда флаг с. Когда девайс готов, с пропадает. Перед отправкой данных в гс делаешь чтение порта статуса. Если на не готова, просто pollишь, циклично ожидаешь. Как только на готова, кидаешь 1 байт, читаешь снова регистр статуса и так по кругу.
Если машина медленнее гски, то статус успевает выставиться и комп почти сразу делает отправку. Если комп быстрее гс, то он будет попадать на цикл ожидания.

О том как работает гс, можешь поговорить с Евгением Мучкиным. Он на ней корейскую собаку с тонной салата съел.

goodboy
29.10.2020, 11:35
вспоминаю что был такой адаптатор. он (добавление музыки в игру) всё делал под эмулем (и кажется не проверял статус готовности GS),
в результате всё работало только под эмулем, на реале - нет.

NEO SPECTRUMAN
29.10.2020, 16:35
в результате всё работало только под эмулем, на реале - нет.
интересно что это был за эмуль
и какие эмули с ГС-ом еще бывают?
щас проверил emuzwin и там на удивление ГС-ный дебагер не плохо работает
(и зависает на бряках :v2_dizzy_facepalm:)
GS OUT назван GS OUT-ом а не GSDAT-ом как в говенных документациях
и физически там по моему разные регистры

- - - Добавлено - - -

а так интересно что произойдет когда GS и ZX одновременно обратятся к одному регистру

goodboy
29.10.2020, 17:13
интересно что это был за эмуль и какие эмули с ГС-ом еще бывают?
unreal естественно. вот нашёл тему https://zx-pk.ru/threads/24867-bagi-v-relizakh-igr-dlya-gs-ot-quot-tron-z-quot.html

NEO SPECTRUMAN
29.10.2020, 17:14
unreal
про унриал я и сам знаю
это мой основной эмулятор для дебага...

Sayman
29.10.2020, 18:01
GS OUT назван GS OUT-ом а не GSDAT-ом как в говенных документациях
мануал от X-Trade был самый нормальный. если ты его не понял, это печально, конечно.
GSDAT потому, что вывод в ГСку данных.
GSCOM потому, что вывод в ГС команд. эти же порты на чтение статуса. поэтому говённый как раз GS OUT у тебя, ничего не обозначающий (бессмысленный).

интересно, когда дойдёшь до программирования всяких ATA/ide и SD карт тоже будешь обзывать IDE OUT или SD OUT и задержки ставить командами процессора?))) ну так, поржать чисто)))

NEO SPECTRUMAN
29.10.2020, 18:14
GSDAT потому, что вывод в ГСку данных.
потому что

у них зачем то

GS ZX
ZXCMD <--- GSCOM

ZXDATRD <--- GSDAT
ZXDATWR ---> GSDAT


когда логичней

GS ZX
ZXCOM <--- GSCOM

ZXDAT <--- GSDAT
ZXOUT ---> GSOUT

в придачу если GS запишет в ZXOUT
содержиое GSDAT по моему так и остается не тронутым
тк это разные регистры (или я путаю?)

а их обозвали одинаково
только потому что на чтение и запись одинаковый номер порта


- - - Добавлено - - -


интересно, когда дойдёшь
а если тебе негрософт скажет хранить настройки в реестре и прыгать с окна
ты тоже будешь хранить настройки в реестре и прыгать с окна?

Sayman
29.10.2020, 18:20
NEO SPECTRUMAN, http://scorpion.ru/spectrum/hard/plata_gs.htm
RTFM как говорится. ни каких ZXCOM тут и рядом нет. читай оригинальный мануал, а не отсебятину всякую левую (включая ЧРВшную).

- - - Добавлено - - -


а если тебе негрософт скажет хранить настройки в реестре и прыгать с окна
ты тоже будешь хранить настройки в реестре и прыгать с окна?
что-то я не понял это тут причём? ты там как всегда, на своей волне... грибочков бы хоть отсыпал чтоли, чё один там всё скуриваешь))

NEO SPECTRUMAN
29.10.2020, 18:23
RTFM как говорится. ни каких ZXCOM тут и рядом нет. читай оригинальный мануал,
отличный мануал
описывает все 15 портов со стороны ГС не описывает вообще
Sayman могу тебя только послать
в тему с БК-шниками
если так хочется поболтать

в оригинальной документации нихрена нет (мало того еще и порты десятичные :v2_dizzy_facepalm:)
только высокоуровневые команды для мод плеера который никому не нужен
в сторонней документации где все есть
все через Ж
и разные порты названы одинаково

- - - Добавлено - - -


ы там как всегда, на своей волне.
какой бы Sayman говорил

Sayman
29.10.2020, 18:30
отличный мануал
описывает все 15 портов со стороны ГС не описывает вообще
ААХАХАХААааахахаа))))))
какие 15 портов, очнись, грибоед.
порта всего 2, два, ДВА, ДВА!


GSCOM EQU 187
GSDAT EQU 179

полностью вся логика работы девайса расписана. ты когда-нибудь с блок-схемами работал? видимо нет, потому и не увидел. покажи мне 15 портов ГСа (именно классического ГС, а не ЧРВГС).

NEO SPECTRUMAN
29.10.2020, 18:35
ААХАХАХААааахахаа))))))
какие 15 портов, очнись, грибоед.
порта всего 2, два, ДВА, ДВА!

ахахаха с моей стороны
порты с ГС стороны


порт 0 "расширенная память"
разряды D0 - D3 переключают страници по 32Kb
страница 0 - ПЗУ
разряды D4 - D7 не используются

порты 1 - 5 "обеспечивают связь с SPECTRUM'ом"

порт 1
чтение команды General Sound'ом
D0 - D7 - код команды

порт 2
чтение данных General Sound'ом
D0 - D7 - данные

порт 3
запись данных General Sound'ом для SPECTRUM'a
D0 - D7 - данные

порт 4
чтение слова состояния General Sound'ом
D0 - флаг команд
D7 - флаг данных

порт 5
сбрасывает бит D0 (флаг команд) слова состояния

порты 6 - 9 "регулировка громкости"
соответственно в каналах 1 - 4
D0 - D5 - громкость
D6,D7 - не используются

порт А
устанавливает бит D7 слова состояния не равным биту D0 порта 0

порт B
устанавливает бит D0 слова состояния равным биту D5 порта 6


- - - Добавлено - - -

а еще в классическом ГС есть порты замапленные на память
даже не знаю как правильно это назвать
тк это какаято дичь :)
В НГС-е оно уже как fifo буфер с автоматическим выплевыванием в ЦАП-ы

- - - Добавлено - - -


порта всего 2, два, ДВА, ДВА!
это порты со стороны ЗХ

Sayman
29.10.2020, 18:35
http://micklab.ru/My%20Soundcard/ZXMGeneralSound.htm


Программирование карты:


Программирование карты осуществляется как и в оригинальном General Sound, т.е. через порты xxB3h и xxBBh.

NEO SPECTRUMAN
29.10.2020, 18:52
Sayman, если не владеешь темой не лезь вообще

ну или перечитай на что отвечаешь
чтоб уловить смысл

- - - Добавлено - - -


порта всего 2, два, ДВА, ДВА!
2 номера порта

а GSDAT на запись и чтение
при том пишется и читается по разным регистрам

это 3 три ТРИ ТРИ! порта

GS ZX
ZXCOM <--- GSCOM

ZXDAT <--- GSDAT
ZXOUT ---> GSOUT(GSDAT)

- - - Добавлено - - -


Порт ZXDATWR (write-only) – запись байта данных, предназначенного для прочтения
спектрумом из порта GSDAT. Примечание: байты, читаемые из порта ZXDATRD, с одной
стороны, и из порта GSDAT, с другой, являются физически независимыми байтами. При
записи байта в ZXDATWR байт, читаемый из ZXDATRD не меняется, равно как и не меняется
читаемый из GSDAT байт при записи другого байта в тот же GSDAT.

Sayman
29.10.2020, 18:57
NEO SPECTRUMAN, ты просто уже явно там перегрелся или переохладился.
портов для работы с ГС (классической ГС) всего 2, всё больше никаких нет. порты внутри самой ГС к работе с картой со стороны "хоста" не имеют никакого отношения.
во2х,

простой загрузчик своего кода в General Sound
gs_hard_reset ;$F4 cold restart

ld a,$F4 : out (gs_zxsd_com_reg_w),a : call gs_zxsd_wait_cb0

;------------------------------------------------------------------------------

;на всякий случай еще подождем
call zx_wait

gs_zxsd_send_code_loop
ld a,(hl) : out (gs_zxsd_data_reg_w),a : call gs_zxsd_wait_db0
inc hl
dec bc
ld a,b
or c
jp nz,gs_zxsd_send_code_loop

;------------------------------------------------------------------------------

;на всякий случай еще подождем
call zx_wait


это всё не просто *****код, это ГОВНОКОДИЩЕ!
2.1. на медленных компах ты будешь вечность ждать отправки кода/данных в ГС.
2.2. на быстрых машинах с овер9000мгц+конвеера твои zxwait_чегототам пролетят со свистом, а гс не успеет отработать. если хочешь ввести задержку, то нужно выяснить длительность работы с точностью до миллисекунд и делать задержку в миллисекундах. и процедура ожидания должна подстраиваться под растактовку проца, чтобы на разных машинах таймер в ms не сбивался. ты даже этого не учёл.
2.3. в озу ГСа не требуется отдельный загрузчик пользовательского кода, т.к. он там уже есть. в 2008м году я тоже по не знаю пилил всякое, пока Мучкин не подсказал, что всё там есть и дал исходник своего старого reloop`ера для чиптюновых модов (на которых моя тогдашняя ГСа хрипела). релупер спокойно загружался и отрабатывал на загрузке каждого мода (вызывался после загрузки мода).
однако согласен с тем, что там так же используются внутренние порты самой гс (со стороны ГС), например порт 0 для щёлкания памятью.
опять таки, чуть выше я тебе предложил пообщаться с Евгением Мучкиным. он расскажет более детально про все эти порты и что там и как. а ты продолжаешь гнать пургу.

- - - Добавлено - - -


а GSDAT на запись и чтение
при том пишется и читается по разным регистра
2 двунаправленных порта, чё не так то? оба на чтение и на запись. ты пахоже даже левые мануалы плохо читал или эти мануалы не полные.

NEO SPECTRUMAN
29.10.2020, 19:09
2.1. на медленных компах ты будешь вечность ждать отправки кода/данных в ГС.
:v2_dizzy_facepalm:
засеки сколько длиться эта вечность

- - - Добавлено - - -


2.3. в озу ГСа не требуется отдельный загрузчик пользовательского кода, т.к. он там уже есть. в 2008м году я тоже по не знаю пилил всякое,
свой загрузчик для подстраховки чтоб переставить стек в гарантированно безопасное место

где у ГС по дефолту стек?
или он не юзается в процессе загрузки кода?
запрещены ли прерывания в процессе загрузки кода?
запрещены ли прерывания в момент передачи управления загруженному коду?

- - - Добавлено - - -


2 двунаправленных порта, чё не так то?
местами порты на чтение и порты на запись рассматривают как разные порты

ТУТ ЖЕ они еще и читают\пишут в разные\ места
ПОЭТОМУ ЭТО РАЗНЫЕ ПОРТЫ

- - - Добавлено - - -


2.2. на быстрых машинах с овер9000мгц+конвеера твои zxwait_чегототам пролетят со свистом, а гс не успеет отработать. если хочешь ввести задержку, то нужно выяснить длительность работы с точностью до миллисекунд и делать задержку в миллисекундах. и процедура ожидания должна подстраиваться под растактовку проца, чтобы на разных машинах таймер в ms не сбивался. ты даже этого не учёл.
учел почитай тему...

- - - Добавлено - - -


это всё не просто *****код, это ГОВНОКОДИЩЕ!
давай примеры твоего кода я тоже попридираюсь :)


а так это просто пример как загрузить свой код в GS (надеюсь и в NGS тоже)
а не SUPERMEGABIGVERYULTRAFASTPROCEDURE

- - - Добавлено - - -


ты даже этого не учёл.
ты тоже не учел что могут быть разные прошивки
и нужен какой то более надежный вариант

- - - Добавлено - - -


если хочешь ввести задержку, то нужно выяснить длительность работы с точностью до миллисекунд и делать задержку в миллисекундах
а еще ты не учел что у ГС 100500 вариантов частоты проца
ТЫ ДАЖЕ НЕ ПОДУМАЛ ОБ ЭТОМ
и как вычислить с какой частотой проца именно попавшийся ГС?

Sayman
29.10.2020, 19:30
засеки сколько длиться эта вечность
ну давай считать:
djnz $ ;13t
13*255*255 = 845325 тактов на каждый байт отправляемого кода или мода.
если код имеет размер хотя бы в 2кб, тогда 2048*845325 = 1731225600 тактов, что соответствует примерно 8 секундам на каком-нить бедном Лениграде. и это без учёта пушей и попов (тогда уже не 8, а все 16 секунд).
в случае же конвеерных машин, да ещё и с каким нить 1 тактом на команду твой код просто пролетает незаметно. а гс будет всё ещё выполнять прошлую команду и толку от твоей задержки не будет никакой.

ТУТ ЖЕ они еще и читают\пишут в разные\ места
ПОЭТОМУ ЭТО РАЗНЫЕ ПОРТЫ
чувак, ты для начала определись, с какой стороны ты работаешь с портами. со стороны zx? физически тебе выдали 2 порта. отправил команду в порт команд - читай статус через этот же порт. то. что он внутри самой гс выглядит как то иначе, не создаёт никаким образом ещё один или 2 порта. их всего 2 для работы с ГС со стороны хоста.

ты тоже не учел что могут быть разные прошивки
последняя прошивка для гс была 1.05. более других не появлялось и не предвидится. когда до были 1.04, до неё 1.03. но все они в целом одинаковые и отличаются теми или иными багами.

и нужен какой то более надежный вариант
надёжнее, чем есть в пзу ГСа ты точно не напишешь. и сегодня уже никто писать не станет. если каждый начнёт писать под гс свои прошивки, начнётся бардак и девайс (и без этого мёртвый) станет ещё более мёртвым.

а еще ты не учел что у ГС 100500 вариантов частоты проца
на классической ГС был и остаётся стандартный z80. без конвееров, без сетей, без гигарецов частот и прочее подобное. отличаться может только базовая частота - от 12мгц до 20 (по последним данным). что в любом случае быстрее среднестатистического спектрума (включая эву с бейзконфой!).

NEO SPECTRUMAN
29.10.2020, 19:37
13*255*255 = 845325 тактов на каждый байт отправляемого кода или мода.
ты че вихнулся?
это паузы после ресета и перед запуском своего кода
пока ГС гарантированно? не установит флаги в начальное положение


ты хоть код осиль сначала
а потом придирайся



gs_zxsd_send_loader_loop
ld a,(hl) : out (gs_zxsd_data_reg_w),a : call gs_zxsd_wait_db0
inc hl
dec bc
ld a,b
or c
jp nz,gs_zxsd_send_loader_loop



gs_zxsd_wait_db0 ;ожидание data bit = 0
in a,(gs_zxsd_status_reg_r)
rla
jp c,gs_zxsd_wait_db0
ret

тут по моему можно вообще делать in f,(c)

не самый быстрый вариаант
но зато компактно выглядит
кому надо развернут и ускорят

Sayman
29.10.2020, 19:41
ты че вихнулся?
845325 тактов ждать после ресета? ты чё вихнулся? я гс скорее выкину, чем сидеть слоупочить с ней.

NEO SPECTRUMAN
29.10.2020, 19:46
ты чё вихнулся? я гс скорее выкину, чем сидеть слоупочить с ней
ты ни с головой ни с математикой я вижу не дружишь
845325 тактов это 11,793038504464285714285714285714 фреймов
0,23586077008928571428571428571429 секунды карл
точнее 0,24152142857142857142857142857143 тк у пентагона не 50 Гц
ты дурак или прикидываешься?

Sayman
29.10.2020, 19:47
wc: in a,(gscom)
rrca
jr c,wc
ret

wd: in a,(gscom)
rlca
jr c,wd
ret

gs0: call gs_reset
ld b,255 ;если за это время ГС не отвечает - она или зависла или её нет или ещё какие-то проблемы
gs_ch1: in a,(gscom)
rrca
dec b
jr z,none
jr c,gs_ch1
ret

gs_reset:
ld a,0f4h
call sentcom
ret

sentcom:
out (gscom),a
call wc
ret

по факту это тоже *****код, т.к. циклы wc и wd могут стать вечными (как и у тебя). и делать нужно по примеру "gs0". как и в твоём коде.

- - - Добавлено - - -


11,793038504464285714285714285714 фреймов
причём тут фреймы, алло? ты считаешь прерываниями 50гц чтоли? поржаал))

NEO SPECTRUMAN
29.10.2020, 19:51
причём тут фреймы, алло? ты считаешь прерываниями 50гц чтоли? поржаал))
вообще не бобо с математикой
тогда сколько по твоему секунд длиться 845325 тактов на 3.5МГц-ах?
еще скажи что не 0,24152142857142857142857142857143

ты хоть запусти в эмуляторе и посмотри что все задержки на пол секунды...
а потом п***и

а так до нужно наверно притулить проверку есть ли ГС вообще
это будет правильным
потом сделаю

проверять каждый раз а не отвалился ли работающий ГС
это уже долбоклюизм

Sayman
29.10.2020, 19:56
вообще не бобо с математикой
только спектрумист подТРдосный будет вычислять абсолютные величины при помощи абстрактных 50гц (которые на каждой машине свои). особенно, когда прерывания запрещены)))
рассчитывать нужно используя только тактовую проца, а это 3 500 000 герц (тактов) в секунду. математик ты наш.


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

NEO SPECTRUMAN
29.10.2020, 20:05
только спектрумист подТРдосный будет вычислять абсолютные величины при помощи абстрактных 50гц (которые на каждой машине свои). особенно, когда прерывания запрещены)))
рассчитывать нужно используя только тактовую проца, а это 3 500 000 герц (тактов) в секунду. математик ты наш.
ДА ГЛАЗА РАЗЗУЙ ЭТО НИЖЕ НАПИСАНО
в придачу 2 варианта

мало того отклонение частоты интов +-1%
не тупи

- - - Добавлено - - -


вариантов отвала рабочей ГС большое множество. ну ладно, дело твоё. потом прибежит какой-нить юзер с сопливым ленином и припаянным мгтфом гс и расскажет тебе, как хорошо твой код находит полуотваленную гс))
рукалицо

а может еще перед запуском тестировать 30 минут целостность памяти спектрума
и не ложить код именно по тому адресу где битые биты?

- - - Добавлено - - -

ладно мне надоело читать твое трололо
дальше можешь разговаривать сам с собой

начальную проверка наличия ГС-ка как нибудь может потом притулю
хотя это только будет занимать место
тк смысл пытаться запускать программу для ГС на машине без ГС ?

Sayman
29.10.2020, 20:10
рукалицо
да да, именно, что рукалицо. я тебе там живой пример привёл, кстати. только вместо ленина была плата местного пятногона.
а ещё у некоторых умельцев оно и на эжве умеет отвалиться/зависнуть.
на форуме всё написано, только ленивый не найдёт.

- - - Добавлено - - -


еще скажи что не 0,24152142857142857142857142857143
вообще ниразу)))

NEO SPECTRUMAN
29.10.2020, 20:12
вообще ниразу)))
ниасилил калькулятор? :v2_lol:
845325 / 3500000 = 0,24152142857142857142857142857143

NEO SPECTRUMAN
07.11.2020, 03:17
;так же в некоторых источниках ;рекомендуют грузить за один раз только 16К ;типо иначе головка флоповода громко щелкает ;так что если и хранить блоки больше 16К ;то грузить их все же лучше по частям
вот блин нашел где это описывается
и там речь про блоки в 8К!
теперь придется везде переписывать все свои загрузчики...


На входе в подпрограмму #3Е44
(TR-DOS) в регистре B должна со-
держаться константа позициониро-
вания (от #08 до #0B); с ней де-
лают OR #18 и кладут результат в
регистр команд контроллера (зна-
чения #18-#1B соответствуют ко-
манде ПОИСК без проверки адрес-
ных маркеров на дорожке). При
вызове #3Е44 из #3ЕB5 регистр B
никак не определен, и он может
содержать, например, число сек-
торов при вызове #3D13 с C=5 или
C=6. Если же число секторов
больше #20 , то в регистр команд
будет направлен не код команды
ПОИСК, а что-то иное.


Простая проверка показывает,
что все происходит именно таким
образом. Вызывая #3D13 с BC=
#4005 несколько раз подряд (DE
считаем неизмененным), можно
наблюдать перемещение головок
дисковода на один шаг к центру
диска перед позиционированием на
начало читаемого блока, а при
вызовах с BC=#6005 наблюдается
один шаг в обратном направлении.
Если учесть, что #40 OR #18 =
#58 - код команды шаг вперед, а
#60 OR #18 - код команды шаг на-
зад, то никаких сомнений быть не
может - это ошибка TR-DOS!

goodboy
07.11.2020, 12:41
теперь придется везде переписывать все свои загрузчики
заставь дурака богу молиться он лоб расшибёт

NEO SPECTRUMAN
07.11.2020, 16:42
заставь дурака богу молиться он лоб расшибёт
ты предлагаешь писать под эмулятор?
и не учитывать что в куче вервий трдоса есть ошибки?
:v2_dizzy_facepalm:
опять же повторю зачемм делать вектор прерываний 257 байт
когда в ТВОЕМ эмуляторе все работает?

goodboy
07.11.2020, 16:52
при загрузке больших блоков через #3d13 происходит сбой при позиционировании (хорошо видно на реальном дисководе),
но ошибок при чтении в этом случае не возникает.
поэтому все продвинутые пользователи и начали использовать свой загрузчик.

опять же повторю зачем делать вектор прерываний 257 байт
незнаю. я таких компов не встречал, да и многие фирменные игрушки берут вектор из #xxFF в ПЗУ.

NEO SPECTRUMAN
07.11.2020, 17:17
при загрузке больших блоков через #3d13 происходит сбой при позиционировании (хорошо видно на реальном дисководе),
так зачем лишний раз вызывать ошибку позиционирования?
которая в некоторых источниках описывается как скрежет и удары (наверно речь про то когда происходит переполнение счетчика номера дорожки)
когда это можно легко обойти читая блоками по $20 секторов

- - - Добавлено - - -


поэтому все продвинутые пользователи и начали использовать свой загрузчик.
который работает только с реальным дисководом? :v2_lol:

- - - Добавлено - - -


да и многие фирменные игрушки берут вектор из #xxFF в ПЗУ.
от чего, как известно, они не везде потом работают...

goodboy
07.11.2020, 17:48
так это проблема кривых клонов/эмуляторов, нравиться тебе лизать всем - на здоровье.

NEO SPECTRUMAN
07.11.2020, 18:06
так это проблема кривых клонов/эмуляторов,
вон придыдущий аратор вообще тут рассказывал что нужно каждые 30мс проверять а не отвалился ли плохой контакт на ГС-е...
:v2_lol:
следующий рассказывает что нужно писать под спектакулятор тк там все работает :v2_lol:

Sayman
07.11.2020, 18:28
нужно каждые 30мс проверять а не отвалился ли плохой контакт на ГС-е...
просто некоторые "кодеры" так и не поняли как работать с устройствами и предлагают 11 интов ещё дополнительно подождать, когда девайс уже ответил. теперь в трдос загрузчики полез, которые и так все знают как писать и делали это ещё до того. как отдельные "очень умные люди" начали предлагать свои загрузчики.

я даже удивлён, что не предлагаешь на ВГ93 подождать ещё 100500 интов, ведь ВНЕЗАПНО ВГ93 работает на 1мгц. надо подождать, безобразие то какое, проц работает быстрее дисковода)))

NEO SPECTRUMAN
07.11.2020, 18:31
и так все знают как писать
все знают
а готового примера куда подставил свой код и скомпилировал в один клик нигде нет
пушо все и так знают :v2_dizzy_facepalm:

а потом все время кто то релизит что то в sna...
пушо все же знают...

я уже раза 3 скачал с этой темы
тк проще чем найти эту же заготовку у себя

Sayman
07.11.2020, 18:35
все знают
а готового примера куда подставил свой код и скомпилировал в один клик нигде нет
потому, что


все знают

- - - Добавлено - - -


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

NEO SPECTRUMAN
07.11.2020, 18:39
просто некоторые "кодеры" так и не поняли как работать с устройствами и предлагают 11 интов
ну да некоторые на столько понели как нужно работать с устройством
что начинают слать данные в него когда еще устройство в процессе перезагрузки и проверяет количество страниц памяти
кусок сорца с ресетом яте закидывал...

- - - Добавлено - - -


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

кстате читай глазами первый пост
речь про ГОТОВЫЙ КОД ДЛЯ SJASM
КОТОРЫЙ КОМПИЛИРУЕТСЯ ИЗ КОРОБКИ

у тебя есть готовый код под sjasm лучше?
ложи его молча сюда а не рассказывай тут как "я гружу как попало и у меня все работает а ты грузишь как то не так"

Sayman
07.11.2020, 18:46
начинают слать данные в него когда еще устройство в процессе перезагрузки
дада, как скажешь))))

NEO SPECTRUMAN
07.11.2020, 18:51
дада, как скажешь))))
ну до
и это от товарища который на 0,3 секунды задержки при старте выдал такое


845325 тактов ждать после ресета? ты чё вихнулся?
я гс скорее выкину, чем сидеть слоупочить

goodboy
07.11.2020, 19:50
Neo, заострив внимание на ошибку в работе trdos с большими блоками ты ещё раз доказал свою тупость и отсутствие реала.
иначе бы знал в какой версии есть эта ошибка (и 90% дискетных версий там вообще не работает)

NEO SPECTRUMAN
07.11.2020, 20:08
иначе бы знал в какой версии есть эта ошибка
ну дО
все у кого есть реал перепробывали 100500 версий трдоса
ведь у каждого конечно есть программатор...



иначе бы знал в какой версии есть эта ошибка (и 90% дискетных версий там вообще не работает)
и в какой это версии?
и как с этим бороться?
10% же как то работают :)


а так почемму эти знатели вся не понапишут всего что знаю все
в какую нибудь педивикию
а то там достаточно многословны
и больше чем "в трдос есть ошибки" никто не пишет...
...или пишут типа "одна баба сказала что трдос что то там не так делает при чтении"

можно же собрать описание всех ошибок КОТОРЫЕ ЗНАЮТ ВСЕ
в одном месте
или все всё не знаю а только звездят?

- - - Добавлено - - -


ты ещё раз доказал свою тупость
процетирую еще предыдущего оратора
которого, в отличии от ТЕБЯ, прет в другие крайности

потом прибежит какой-нить юзер с сопливым ленином и припаянным мгтфом гс и

- - - Добавлено - - -

и еще раз напомню про *****й вектор прерываний
который непонятно у кого не стабильный
и для кого все должны зачем то делать 257 байтную таблицу
когда можно было бы сказать да это кривые клоны и ихние проблемы...

goodboy
07.11.2020, 20:21
решать все эти проблемы (trdos/im2) надо при конкретной встрече с неработоспособностью,
а не с мифическими рассуждениями в надежде что у кого-то не заработает.

NEO SPECTRUMAN
07.11.2020, 20:29
а не с мифическими рассуждениями
пока мифическими рассуждениями занимаются только сдешние недовольцы
внятных доказательств от них в упор не следует
одно только можно сэкономить 3 байта и 2 такта
и в эмуляторе все будет работать...

Evgeny Muchkin
07.11.2020, 23:13
вспоминаю что был такой адаптатор. он (добавление музыки в игру) всё делал под эмулем (и кажется не проверял статус готовности GS),
в результате всё работало только под эмулем, на реале - нет.
Это о чем?

А вообще, знатно в теме насрали да ;)

- - - Добавлено - - -

Расскажите лучше, как создавать патчи, например, для ПЗУ ромов наших. Т.е. чтобы скомпилился, допустим, патчик(и) и впихнулся в нужное место бинарника.

Буду очень признателен. :)

Например: нужно в tr-dos.rom по адресу #3ff0 добавить out (c),a: ret: in a,(c): ret
Такое сабж сумеет?

goodboy
08.11.2020, 00:14
нужно в tr-dos.rom по адресу #3ff0 добавить out (c),a: ret: in a,(c): ret
как в zs256 ?

Evgeny Muchkin
08.11.2020, 08:13
goodboy, да, но это я просто ради примера.

goodboy
08.11.2020, 10:13
запускаешь STS в эмуле который умеет загружать/сохранять блоки памяти.
грузишь свой файл (допустим с #8000) правишь/сохраняешь. в чём проблема - мне непонятно.

Sayman
08.11.2020, 10:29
запускаешь STS в эмуле который умеет загружать/сохранять блоки памяти.
грузишь свой файл (допустим с #8000) правишь/сохраняешь. в чём проблема - мне непонятно.

мне кажется, Евгений говорит о том, чтобы процесс автоматизировать или вовсе сдампить скорпором и пропатчить его вовеки вечные.

goodboy
08.11.2020, 11:32
тогда это скорее к железячникам вопрос, на divIDE/MMC пользователь может сам (со спека) менять прошивку

Evgeny Muchkin
08.11.2020, 11:58
Да, вопрос в автоматизации.

Набросал кучу патчей, скомпилил, внедрил их в ром, запустил эмуль смотреть, что получилось.
И чтобы вся эта компиляция и запихиваниее в ромы автоматически происходила нажатием одной кнопки.

Не руками же все пересобирать при обнаружении ошибки, коих, как обычно, много. :)

Sayman
08.11.2020, 12:15
конечно удивительно, что никто за столько времени не сделал дизасм или не запросил у зонова исходники скорпорома. сейчас этьо будет всё ооочень геморно.

goodboy
08.11.2020, 12:20
я только вспоминаю что в unreal ProfRom чуток исправленный.
оригинал не работает (эмуль валит какие-то проверки)

Bedazzle
08.11.2020, 12:26
Да, вопрос в автоматизации.
Набросал кучу патчей, скомпилил, внедрил их в ром, запустил эмуль смотреть, что получилось.


В смысле, что-то типа такого?



; rom_patched.asm

DEVICE ZXSPECTRUM48

org $0000

incbin "rom48.bin"

org $1234
.... ; patcher_1

org $3456
.... ; patcher_2


SAVEBIN "rom_patched.bin",$0000,$4000


- - - Добавлено - - -



и больше чем "в трдос есть ошибки" никто не пишет...
...или пишут типа "одна баба сказала что трдос что то там не так делает при чтении"

можно же собрать описание всех ошибок КОТОРЫЕ ЗНАЮТ ВСЕ


Мне тоже очень интересно прочесть. Сейчас пока только на какие-то малоподтверждённые огрызки потихоньку натыкаюсь.

Evgeny Muchkin
08.11.2020, 13:50
Bedazzle, спасибо, еще не попробовал, но похоже, что это то, о чем я спрашивал.