В общем мне нужно время, чтобы переварить инфу и попробовать что-нибудь на практике сделать :v2_dizzy_coder:
По ходу дела буду отчитываться о проделаной работе.
Вид для печати
В общем мне нужно время, чтобы переварить инфу и попробовать что-нибудь на практике сделать :v2_dizzy_coder:
По ходу дела буду отчитываться о проделаной работе.
Жаль, zx-spectrum.ru гавкнулся, g0blinish тред создавал..
никак. Ты сам собираешь файлы, сам указываешь при загрузке.
типа:
Код:MODULE boot
Basic:
db #00,#01;номер строки
DW EndLine1 - Line1
Line1:
db #EA;REM
ld sp,#5FFE
ld a,0:out ($FE),a
ld hl,$4000,de,$4001,bc,6911,(hl),l:ldir
di
ld de,(#5CF4)
ld hl, #4000
sectors loaderb,loadere
call #3d13
jp #4000
;----------------------------demo------------
db "yo,lamer!"
db #0D
EndLine1:
db #00,#02
DW EndLine2 - Line2
Line2:
db #20,#FD,#B0
db #22,#32,#34,#35,#37,#35,#22;clear val "24575"
db #3A; :
db #F9,#C0,#28,#35;randomize usr (5+256*peek val "23635"+peek val "23636"
db #0E,#00,#00,#05,#00,#00,#2B
db #32,#35,#36
db #0E,#00,#00,#00,#01,#00,#2A,#BE
db #B0
db #22,#32,#33,#36,#33,#36,#22;"23635"
db #2B;???
db #BE
db #B0
db #22,#32,#33,#36,#33,#35,#22;"23636"
db #29,#0D;)
db #80
db #AA,1,0;;;;;;;;;;;;;autorun line,change program length to -4, e.g. 83-4=79
EndLine2:
EndBasic:
ENDMODULE
page 7
org #DB00
page7b:
plyer:include "stc_player.a80"
song:incbin "!rivrade-KIDSON AND ODYSSEY FROM RAPEWARE CORP-1996.STC"
page7e:
page 1
org #C000
page1b:
incbin "page1.bin.zx7"
page1e:
page 3
org #C000
page3b:
incbin "page3.bin.zx7"
page3e:
page 4
org #C000
page4b:
incbin "page4.bin.zx7"
page4e:
page 6
org #C000
page6b:
incbin "page6.bin.zx7"
page6e:
EMPTYTRD "past.trd" ;create empty TRD image
SAVETRD "past.trd", "boot.B", boot.Basic, boot.EndBasic - boot.Basic
SAVETRD "past.trd","loader.C",loaderb,loadere-loaderb
PAGE 1
SAVETRD "past.trd","pg1.C",page1b,page1e-page1b
PAGE 3
SAVETRD "past.trd","pg3.C",page3b,page3e-page3b
PAGE 4
SAVETRD "past.trd","pg4.C",page4b,page4e-page4b
PAGE 6
SAVETRD "past.trd","pg6.C",page6b,page6e-page6b
SAVETRD "past.trd","demo.C",begin,end-begin
page 7
SAVETRD "past.trd","song.C",page7b,page7e-page7b
---------- Post added at 14:40 ---------- Previous post was at 14:39 ----------
валяй. спрашивай если чо.
Вот тебе еще по теме пример. Посмотри исходники...
мне кажется это слишком сложно для новичка :)
Размышлял тут так и сяк над этим филосовским вопросом.
Пришёл к выводу: слишком жирно отдельную команду чисто для вызова кодблока без всяких "НО", "ЕСЛИ" и "ЧТО ПОТОМ" заводить было.
Ведь пришлось бы её куда нибудь впихивать (на клавишу)
А их и так на каждой клавиши по три штуки сидят!
Какую-нибудь RUNCODE.
Т.е. чисто "одноразовую" - передал управление машкоду и привет!
Ради одной такой тратить место на вводе?
(ведь до 128 бейсика по буковкам не наберешь)
Хватит и RANDOMIZE (она тоже могла-бы остатся только для RND, но спасибо, пригодилась и для вызова кодблока) :)
Как-то так видимо...
---------- Post added at 04:08 ---------- Previous post was at 03:58 ----------
И вот ещё мысля пришла: Есть команда NEW
Было-бы логично если NEW без аргумента - ну это как оно щас есть (сброс бейсика)
А если с аргументом - то передача управления кодблоку.
Это было-бы очень разумно.
Как-бы безусловная передача и без надежды на возврат.
Да только не додумали (да и не удивительно, ведь тогда это всё наощупь делалось, искали пути и способы как построить интерфейс. Даже сама концепция токенизированого ввода уже чего стоит!)
Итак.. Я сделал самый простейший монолоадер, который просто грузит 1 архив и просто распаковывает его. Сначала я долго не мог понять, с чего же мне начать. Нифига не понятно. Но потом понял, что надо открыть Sublime Text, написать код, который дается в примере WLODEK BLACK и всё это собрать в трд. Поначалу код не хотел собираться в трд, я пробовал и так и сяк, в конце концов плюнул и скопировал в Sublime простейший пример, который выкладывал Алекс Райдер, и в этом примере поменял "середину" на код Влодека. Ну и естествено подставил свои значения длины секторов и старта. Потом сделал бейсик, загрузил в него полученный код, а потом всё это дело склеил риалкоммандером. Всё работает! ))
Это конечно микроскопический успех, но всё-таки успех. Однако не понятно вот что, в уроке Влодека говоритсяОднако в примере кодового лоадера есть упоминание только о 23796:Цитата:
Поскольку файлы нашей игры расположены на диске подряд, удобно воспользоваться системными переменными TR-DОS (23796 и 23797). В этих переменных хранятся данные о секторе и треке, следующих непосредственно за только что загруженными.
А почему 23797 никак не задействовано? В каком случае нужно, а в каком не нужно юзать этот адрес?Цитата:
C помощью какого-нибудь ассем-
блера наберите программку:
ОRG 30000
DI
LD ВС,#1В05 ;заставка (#1В=
;27 секторов)
LD DE,(23796) ;трек, сектор
LD HL,16384 ;куда
СALL 15635 ;вызов ТR-DОS
LD ВС,#8905 ;осн.блок (#89=
;137 секторов)
LD DE,(23796)
LD HL,25000
СALL 15635
EI
JР 25000 ;старт игры
И еще вопрос, в том же уроке описано как полученный кодовый загрузчик "залить" в бейсик:- Откуда взялась цифра 23872? Откуда мы узнали, что кодовый загрузчик надо грузить именно по этому адресу?Цитата:
В конце строки напишите: RANDОМIZE USR 23872.
В строке 1 наберите REМ, после поставьте столько же пробелов, сколько получилось байт в загрузчике. 3агрузите коды загрузчика в строку 1 прямой командой RANDОМIZE USR 15619: REМ: LОAD <имя файла> CОDE (23872+257).
- Что значит "имя файла" CODE (23872+257)? Я бы понял просто CODE 23872, но зачем скобки и зачем приплюсовывание 257? И почему именно 257?
- Можно ли в строку REM вставить более весомый код, чем лоадер? Как? Ведь замучаешься вбивать несколько сотен пробелов.
про моноблок в 3-ем номере ЗаRulem было написано - http://vk.com/doc-69042740_284540298