A hiba ennél a résznél történik:
. 0196 F7 16 EXOS 16
. 0198 21 28 11 LD HL, 1128
. 019B 7A LD A, D
. 019C BC CP H
. 019D DA F0 02 JP C, 02F0
Itt egyszerűen nincs elég hely a rendszerszegmensben, például a fent említett IDE+BRD bővítéssel kevesebb, mint 1000h az EXOS határ. De a program valójában úgy látszik, csak D48h címig használná a szegmenst, és ezt beírva az eredeti 1128h helyett működik is. Bár lehet, hogy később mégis hozzáférne magasabb címekhez is, de mindenesetre az egy lehetséges hiba, hogy a 1128h helyett valami más, kisebb érték kellene.
Egyébként az ellenőrzés módja nem egészen jó, mert például ha az EXOS határ 1101h lenne, akkor nem lenne hiba, pedig DE<HL. Tehát vagy 16 bites összehasonlítást kellene végezni, vagy pedig egyszerűen ellenőrizni a fenti részt követő EXOS 23 hívás visszatérési értékét
Még egy érdekes rész:
. 02D7 21 00 C0 LD HL, C000
. 02DA 11 01 C0 LD DE, C001
. 02DD 01 CF 3F LD BC, 3FCF
. 02E0 36 00 LD (HL), 00
. 02E2 ED B0 LDIR
. 02E4 C9 RET
Ennek mi a célja ? Itt a 3. lapon ROM (00h szegmens) van.
óóó, köszi, az 1128 még a TVC emus betöltőből származik, azt nem írtam át, eredetileg kb 700 bájtot használtam volna az FF szegmensből, akkor még 8 sor volt egy LPB, de a sebesség növelésének érdekében áttértem a soronkénti LPB-re. A 16 bites ellenőrzés teljesen jogos.
Az utolsó kódrészlet a képernyő videószegmensének törlését szolgálná, hála feledékenységemnek, elfelejtettem átírni a címeket.
A BF port 0-ázásának nincsen semmi spéci oka, csak megint a feledékenység, így járok, ha a meglévő loadert módosítok, pár dolgon átsiklik tekintetem.
Ezeket mindenképp javítom, még úgyis jópár dolog hátravan, mint pl az ESC-re soft reset, reset gombra emulátor reset, programtöltés, esetleg +8 kb memóriabővítés, és a hang emuláció helyrepofozása, van dolog bőven még vele.
De köszönöm az észrevételt, 1-2 órás keresgélést úsztam meg.