нутыпонел:)
Вид для печати
Апну тему. В исходниках осталась одна логическая ошибка с выравниванием данных, поэтому вот два варианта сборки - моноблок и бейсик-загрузчик с отдельными файлами.
не знаю, на что эта ошибка влияет, у мну так компилиЦЦа, кстати в крайнем компиляторе, надо бы на предыдущих проверить.
Но при этом скомпиленное работает, и в эмуле, и в virtual TR-DOS, что главное.Код:---------- Capture Output ----------> "K:\Program Files\Crimson Editor SVN286M\sjasmplus-win32-1.07-rc7\sjasmplus.exe" scl.asm
SjASMPlus Z80 Cross-Assembler v.20190304.3
scl.asm(24): error: [IF] Forward reference
scl.asm(31): error: [IF] Forward reference
Pass 1 complete (2 errors)
Pass 2 complete (2 errors)
writing 00258657
Pass 3 complete
Errors: 2, warnings: 0, compiled: 118 lines
> Terminated with exit code 1.
Вроде бы мелькало решение таких ошибок. У меня тоже выскакивают сообщения, но файлы работают.
Работает потому что размер кода внутри блоков IF и ELSE одинаков. (+ в данном случае в IF используется разница адресов, на которую длина кода внутри IF/ELSE все равно не влияет) Иначе в общем случае могут быть проблемы. Разрулить в sjasmplus это по-нормальному по идее можно (не для всех случаев), но нетривиально.
Если причина в секторах для моноблока
то проще такКод:macro sectors datab,datae
IF low (datae-datab)=0
db high (datae-datab)
ELSE
db (1+high (datae-datab))
ENDIF
endm
Код:db high($FE+datae-datab)