чоооорд, еще один косяк - загрузчик-бейсик не пишется как сектор
чоооорд, еще один косяк - загрузчик-бейсик не пишется как сектор
denpopov, а вот так?
Это для кассеты, но можна же и для диска сделать?Код:DEVICE ZXSPECTRUM128 org #6000 header_beg db #00 ;command byte db #00 db "l'Abbaye " dw bas_end-bas_beg ;full lenght dw #000a ;autostart dw #0028 ;lenght without vars header_end ; print usr (peek val "23627"+val "256"*peek val "23628"+val "3") ; 34b3 usr data_beg db #ff bas_beg db #00,#0a ;10 dw #0024 ;¤«Ё** бва®ЄЁp db #f5,#c0,#28,#be ;print usr (peek db #b0,#22,#32,#33,#36,#32,#37,#22,#2b ;val "23627"+ db #b0,#22,#32,#35,#36,#22,#2a,#be ;val "256"*peek db #b0,#22,#32,#33,#36,#32,#38,#22,#2b ;val "23628"+ db #b0,#22,#33,#22,#29,#0d ;val "3") ;(23627) ;vars db #4c ;L dw screen_l ;var_len pointer di ld h,b ld l,c ld sp,hl ld hl,end_len add hl,bc ld de,#ffff ld bc,pack_len+1 lddr inc de ld hl,#6000 push hl ex de,hl include "DEC40.a80" org $-1 block_beg incbin "AdM_scrn.mlz" block_end db #80 ;endmarker bas_end data_end screen_l equ bas_end-pointer pack_len equ block_end-block_beg end_len equ block_end-pointer b_title db #ff ;48k - depack to #4000 incbin "\gfx\title.scr.rec.mlz" incbin "\gfx\info.scr.rec.mlz" incbin "sound.bin.mlz" incbin "Abbaye.bin.mlz" end data equ end-b_title display "header:",header_beg,",",header_end-header_beg display "loader:",data_beg,",",data_end-data_beg display "block :",b_title,",",end-b_title display "Free :",$,",",#10000-$ savebin "0_Abbey_header",header_beg,header_end-header_beg savebin "1_Abbey_loader",data_beg,data_end-data_beg savebin "2_Abbey_block",b_title,end-b_title
С уважением,
Jerri / Red Triangle.
вот это FAR все же схавал
а с подсчетом контрольной суммы я напутал, и с моноблоком проблемы..Код:device zxspectrum128 macro sectors datab,datae IF low (datae-datab)=0 db high (datae-datab) ELSE db (1+high (datae-datab)) ENDIF endm org $8000-14*2-9 scl_b: ;header_b: db "SINCLAIR" db 2;two! filez ;-1st ; 12345678t db "abstractC" dw $8000;start adres of code block dw end-begin;size of code sectors begin,end;db 4;sectors ;-2nd ; 12345678t db "abstractB" dw basic_e-basic_b-4;size of basic dw basic_e-basic_b-4;size of basic sectors basic_b,basic_e;db 1;sectors ;header_e: ; ORG #8000 begin ld hl,pack,de,$6100 push de include "zx7.a80" pack: incbin "test.bin.zx7" end org $8400 basic_b: db #00,10;номер строки DW EndLine1 - Line1 Line1: db $FD;clear db $B0;val db $22,"24575",$22,":" db $F9;randomize db $C0;usr db $B0;val db $22,"15619",$22,":" db $EA;rem db ":" db $F7;run db $22,"abstract",$22 db $AF;code db #0D EndLine1: db #80;for autorun db #AA,10,0 org $8500 basic_e: ;?checksum scl_e: savebin "test.scl",scl_b,scl_e-scl_b
---------- Post added at 13:41 ---------- Previous post was at 13:40 ----------
Это к интроспеку, он плодовит на сомнительные утилиты
FAR проглотил и это:
Код:org $8500 basic_e: dw 0,0;checksum scl_e:
Это не утилита - это создание блоков для тапки средствами асма.
вот такой вот батник собирал аббатство.
.\utils\scrrec.exe .\gfx\info.scr
.\utils\scrrec.exe .\gfx\title.scr
.\utils\scrrec.exe .\gfx\loadingabbaye.scr.rec
.\utils\MegaLZ.exe .\gfx\info.scr.rec
.\utils\MegaLZ.exe .\gfx\title.scr.rec
.\utils\sjasmplus.exe main.a80
.\utils\MegaLZ.exe Abbaye.bin
.\utils\MegaLZ.exe sound.bin
.\utils\sjasmplus.exe screen.a80
.\utils\MegaLZ.exe AdM_scrn
.\utils\sjasmplus.exe loader.a80
.\utils\savetap.exe Abbaye.tap 0_Abbey_header 1_Abbey_loader 2_Abbey_block
.\utils\TAP2TZX.EXE Abbaye.tap
del AdM_scrn
del AdM_scrn.mlz
del 0_Abbey_header
del 1_Abbey_loader
del 2_Abbey_block
del Abbaye.bin
del Abbaye.bin.mlz
del sound.bin
del sound.bin.mlz
del Abbaye.tap
pause
С уважением,
Jerri / Red Triangle.
почти финальная:
FAR понимает подобную сборку, даже если нет контрольной суммы. С доводами Vitamin и Shadow Maker я не согласен, потому что не вижу смысла хвататься з древность спецификации формата.Код:device zxspectrum128 macro sectors datab,datae IF low (datae-datab)=0 db high (datae-datab) ELSE db (1+high (datae-datab)) ENDIF endm org $8000-14*2-9 scl_b: ;header_b: db "SINCLAIR" db 2;two! filez ;-1st ; 12345678t db "abstractC" dw $8000;start adres of code block dw end-begin;size of code sectors begin,end;db 4;sectors ;-2nd ; 12345678t db "abstractB" dw basic_e-basic_b-4;start dw basic_e-basic_b-4;length? sectors basic_b,basic_e;db 1;sectors ;header_e: ; ORG #8000 begin ld hl,pack,de,$6100 push de include "zx7.a80" pack: incbin "test.bin.zx7" end org $8400 basic_b: db #00,10;номер строки DW EndLine1 - Line1 Line1: db $FD;clear db $B0;val db $22,"24575",$22,":" db $F9;randomize db $C0;usr db $B0;val db $22,"15619",$22,":" db $EA;rem db ":" db $F7;run db $22,"abstract",$22 db $AF;code db #0D EndLine1: db #80;for autorun db #AA,10,0 basic_e: org $8500 dw 0,0;checksum scl_e: savebin "test.scl",scl_b,scl_e-scl_b
LUA я не осилил, был бы psb, то помог, наверное.
вот решение, хотя и не самое лучшее:
убрать контрольную сумму, только dw 0,0
запустить утилитку из приложения, в командной строке указывается имя файла.scl
autorun строки вроде бы работает.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)