PDA

Просмотр полной версии : Странности работы с RAM-диском.



Kalantaj
10.05.2015, 20:30
Где грабли?
Программа вида
10 CLEAR 29999
20 RANDOMIZE USR 15619:REM:LOAD "1" CODE
30 SAVE !"TEST"Line 10

RANDOMIZE USR 15616
SAVE "PROGRAM" LINE 10

Второй блок - показать как записывал на диск.
Набрано в BASIC128. По сути - загружает кодовый блок с диска TR-DOS, затем записывает в RAM-диск саму программу.
Так должно быть если запустить программу из TR-DOS дав команду RUN "PROGRAM" или LOAD "PROGRAM".
Если бы не одно НО - НИФИГА оно так не делает!
тупо выдает Nonsence in Basic в 30 строке. Мало того - портит программу именно в этой строке.
Если загрузить без автостарта (MERGE "PROGRAM") а потом зайти в BASIC128 и оттуда дать команду RUN - отработает нормально.
ПОЛДНЯ воюю с этим. КАКОГО ЧЕРТА? Хоть кто-нить поможет?
Есть подозрение что по выходу из TR-DOS выставляет BASIC48 банк (3 бит порта 7ffd), но по выходу из TR-DOS (RETURN) попадаем в 128 меню.

goodboy
10.05.2015, 21:40
trdos 5.04TM* ?

Kalantaj
10.05.2015, 22:33
Верно.

goodboy
10.05.2015, 22:52
так и знал. это глючная зараза.
у меня были проблемы с STR$ (когда в цикле грузятся несколько кодовых блоков).
на 5.03 всё работает. подмени ROM (если под эмулем) и проверь

Kalantaj
10.05.2015, 23:01
В другом эмуле с 5.03 проверил - пашет. Но это же не дело. Надо же как-то обойти это. Придумал вариант - весь РАМ-диск спаковать и всё. Загружать загрузчиком и распаковывать кодовые блоки по страницам, а потом просто запускать бейсик-программу, которая работает с ними. Интересно получится или нет...

goodboy
10.05.2015, 23:04
как-бы не-оказались нужными ещё и системные переменные.

ну так и есть .........
к-примеру
SFNEXT EQU $5B83 ; End of RAM disk catalogue marker.

Kalantaj
11.05.2015, 00:00
goodboy, а где ты инфу по RAM-диску взял? Можешь линк дать?

goodboy
11.05.2015, 09:20
goodboy, а где ты инфу по RAM-диску взял? Можешь линк дать?http://www.fruitcake.plus.com/Sinclair/Spectrum128/ROMDisassembly/Spectrum128ROMDisassembly.htm

Alex Rider
12.05.2015, 21:02
если запустить программу из TR-DOS дав команду RUN "PROGRAM"
То TR-DOS запустит интерпретатор 48-го Бэйсика, который не знает про SAVE!. Кстати, похоже, если сначала войти в 128-й, потом дать usr 15616, а из него RUN "PROGRAM", то тоже не заработает.