PDA

Просмотр полной версии : Научите делать Basic моноблок %)



newart
23.08.2009, 15:33
Subj.

Или может быть даже есть какая то програмка для этого? :v2_conf2:

Vitamin
23.08.2009, 16:08
Забыл уже?;)

10 rem <здесь кодовый загрузчик>
20 paper not pi : border not pi : ink 7 : clear ... : randomize usr 23719 (адрес точно не помню уже)

следом за этим басиком лежат все кодовые блоки. В загрузчике:
ld de,(23796) ;расположение на диске первого кодового блока
ld hl,...
ld bc,#..05
call #3d13
...

и т.д.

Проверить, запуская басик. После этого склеить басик и все следующие за ним нужные блоки (L в RealCommander, ЕМНИП).


ЗЫ. Или пользоваться сборочной системой от Alone Coder'a. Там прям на диск списывается все. Но сложные случаи не уверен что поддержит.

newart
23.08.2009, 16:22
ЗЫ. Или пользоваться сборочной системой от Alone Coder'a. Там прям на диск списывается все. Но сложные случаи не уверен что поддержит.
Это только для поклонников Аласма.


Забыл уже?
А я и не знал, первую прогу мне помогли собрать.

Начиная с Knight Arena, я просто брал любимый Real Commander, обрезал до 1 сектора, вбивал туда свой загрущик и склеивал с кодом. %)

Vitamin
23.08.2009, 16:33
Начиная с Knight Arena, я просто брал любимый Real Commander, обрезал до 1 сектора, вбивал туда свой загрущик и склеивал с кодом. %)
Жуть какая... У меня монолоадеры все свои всегда были:) По единому шаблону, разумеется)))

AAA
23.08.2009, 17:06
Конечно же есть такая программка. Названия забыл, но я ей все и делал под бейсик.

Spir0
23.08.2009, 18:58
Вставлю свои 5 копеек. В бейсике делается загрузчик, на диске файлы располагаются в том порядке, в каком их надо грузить, потом для бейсик файла меняется длина в секторах так чтобы она равнялась сумме всех файлов (бейсик + кодовые) и переписывается на другой диск :)

newart
23.08.2009, 19:39
А кто-нибудь помнит как в STS5.6 менять номер дисковода?

rajdee
23.08.2009, 19:47
Вот что-то нашел у себя, вроде бы даже работало.


org #6000

;Monoloader maker v.0.1
;rajdee.mhm
;01.02.05

randomize equ #f9
usr equ #c0
val equ #b0
rem equ #ea

ld bc,#7ffd:ld a,#17:out (c),a
ld hl,End
ld (hl),0:ld a,h:or l
inc hl:jr nz,$-5
ld bc,9:call CopyName
ld hl,Start:ld de,BasEnd-BasBeg
ld c,#0b:call #3d13
ld bc,13:call CopyName
ld a,(#5d1e)
ld c,#09:call #3d13
ret
CopyName
ld hl,BasName:ld de,#5cdd:ldir
ret

BasName db "test "
db "B"
FilePar dw LdrEnd-BasBeg
dw LdrEnd-BasBeg

Start ;disp #5d3b; Alasm
phase #5d3b
BasBeg dw #0100; номер строки
dw LdrEnd-LdrBeg

LdrBeg db randomize,usr,val
db #22,"23883",#22
db ":",rem

;-Loader put here--------------

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

db #0d
LdrEnd db #80,#aa
dw 1; номер строки автостарта
BasEnd unphase
End

В комплекте с sjasm есть monoloader, адаптированный Aprisobal.

breeze
23.08.2009, 23:19
Я конечно хрен его знает ;) но подобная темка уже была, правда там шел в основном разговор о создании загрузчика с помощью sjasm, но в нём это удобнее делать, даже примеры были.

VNN_KCS
24.08.2009, 12:22
А я делал, в основном так: В бейсике писал строку randmize usr 0 : rem, и столько пробелов, сколько байт имеет кодовый лоадер. Сохранял на диске, а потом STS-ом писал загрузчик. После #0e, менял 3 и 4 байты под реальный адрес (можно даже с кода двоеточия писать лоадер)и всё. Дописывал следом за бейсиком кодовый блок, склеивал и готово.
Писать в STS конечно не дело, зато просто. Golden Max как-то демку написал;-). Во прикол! Ох и мучался...
Потом появился Аласм, в котором есть фишка, что сама всё делает.

Strunov
24.08.2009, 19:57
Если программа небольшая, то самый лучший вариант засунуть весь кодовый блок в REM строку... После старта перекидывается на свое место и запускается. Преимущество данного метода в том, что работать будет и с диска и с ленты....

daniel
25.08.2009, 05:33
для объединения файлов в один есть софт Monoblock creator, и какой-то коммандер умел это делать (Perfect commander?).

вот ещё нашёл, как-то здесь обсуждалось:
http://zx.pk.ru/archive/index.php/t-4401.html

klondike
25.08.2009, 11:10
Вставлю свои 5 копеек. В бейсике делается загрузчик, на диске файлы располагаются в том порядке, в каком их надо грузить, потом для бейсик файла меняется длина в секторах так чтобы она равнялась сумме всех файлов (бейсик + кодовые) и переписывается на другой диск :)

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

Slider
26.08.2009, 13:08
Дык, написали же:
"...После этого склеить басик и все следующие за ним нужные блоки (L в RealCommander)..."
Это я насчет предпоследнего поста...

Aprisobal
28.08.2009, 16:36
Я конечно хрен его знает ;) но подобная темка уже была, правда там шел в основном разговор о создании загрузчика с помощью sjasm, но в нём это удобнее делать, даже примеры были. В примерах к SjASMPlus есть реализация моноблока. Для финальной сборки файлы нужно клеить в Real Commander'e, конечно же.

ace210
04.09.2009, 15:39
в составе Alasm есть модуль SAVEBAS.H
Я пользовался им.