diff --git a/Content/Batty/b48v.bin b/Content/Batty/b48v.bin new file mode 100644 index 0000000..1cd2fb8 Binary files /dev/null and b/Content/Batty/b48v.bin differ diff --git a/Content/Batty/debuild.sh b/Content/Batty/debuild.sh index 5c5d80b..a6840be 100644 --- a/Content/Batty/debuild.sh +++ b/Content/Batty/debuild.sh @@ -6,19 +6,19 @@ TAP_FILE="batty.tap" echo "Извлекаем блоки из $TAP_FILE..." -# Извлекаем каждый блок в отдельный файл -tzxlist -d 0 "$TAP_FILE" -tzxlist -d 1 "$TAP_FILE" tzxlist -d 2 "$TAP_FILE" tzxlist -d 3 "$TAP_FILE" # Переименовываем в понятные имена -mv 00000000.dat loader0.bin # загрузчик -mv 00000001.dat loader1.bin # загрузчик mv 00000002.dat screen.scr # картинка mv 00000003.dat main.bin # код игры rm *.dsc rm *.hdr -# Показываем результат +rm *.zx0 +./../tools/zx0/build/zx0 screen.scr +./../tools/zx0/build/zx0 main.bin + +# main.bin -> 0x6800 (26624) точка входа в main + ls -la \ No newline at end of file diff --git a/Content/Makefile b/Content/Makefile index ab0100f..9de403f 100644 --- a/Content/Makefile +++ b/Content/Makefile @@ -4,6 +4,7 @@ build: clean mkdir -p build @${SJASMPLUS} ./ram_part.asm --syntax=F @${SJASMPLUS} ./main.asm --syntax=F +# @${SJASMPLUS} ./test.asm --syntax=F clean: # @rm -f -r ./assets/*.zx0 diff --git a/Content/main.asm b/Content/main.asm index 246f530..c7d447c 100644 --- a/Content/main.asm +++ b/Content/main.asm @@ -6,15 +6,26 @@ start: di - ld sp, 0xffff - jp main + ld sp, 0xffff + jp main ORG 100 main: - ld bc, 0xdf7f + ld bc, 0x7ffd + ld a, 0b00010000 + ld (0x5B5C), a + out (c), a + + ld bc, 0xdf7f ld a, 0b00000001 out (c), a + ld hl, 16384 + ld de, 16385 + ld bc, 49151 + ld (hl), 0 + ldir + ld hl, batty_scr ld de, 0x4000 call dzx0_standard @@ -23,19 +34,24 @@ main: ld de, 0x6800 call dzx0_standard + ld hl, bvars + ld de, 0x5c00 + ld bc, bvars_end - bvars + ldir + ld hl, ram_part ld de, 0x6700 ld bc, ram_part_end - ram_part ldir - ld bc, 65535 - call delay - ld bc, 65535 - call delay - ld bc, 65535 - call delay - ld bc, 65535 - call delay + ; ld bc, 65535 + ; call delay + ; ld bc, 65535 + ; call delay + ; ld bc, 65535 + ; call delay + ; ld bc, 65535 + ; call delay jp 0x6700 @@ -43,22 +59,29 @@ main: ; Процедура задержки ; bc - время -delay: - dec bc - ld a, b - or c - jr nz, delay - ret +; delay: +; dec bc +; ld a, b +; or c +; jr nz, delay +; ret INCLUDE "./tools/zx0/z80/dzx0_standard.asm" + batty_scr: - INCBIN "./Batty/screen.scr.zx0" + INCBIN "./Batty/screen.scr.zx0" + batty_bin: INCBIN "./Batty/main.bin.zx0" + ram_part: INCBIN "./build/ram_part_6700.bin" ram_part_end +bvars: + INCBIN "./Batty/b48v.bin" +bvars_end + end: ; Выводим размер бинарника. display "Cartridge BIOS code size: ", /d, end - start diff --git a/Content/ram_part.asm b/Content/ram_part.asm index 45a8c78..0dbe12c 100644 --- a/Content/ram_part.asm +++ b/Content/ram_part.asm @@ -9,6 +9,17 @@ start: ld a, 0b10000000 out (c), a + ld sp, 0x6000 + + ld iy, 23610 + +wait_any_key: + ld bc, 0x00fe + in a, (c) + and 0x1f + cp 0x1f + jr z, wait_any_key + jp 0x6800 end: diff --git a/Content/test.asm b/Content/test.asm new file mode 100644 index 0000000..0cb3b0e --- /dev/null +++ b/Content/test.asm @@ -0,0 +1,48 @@ +; Простейший тест переключения банков для карика +; Банк 0 всегда в 0000-1FFF, переключаемый в 2000-3FFF +; Цикл: переключить банк, прочитать байт из 2000h, повторить + + DEVICE ZXSPECTRUM48 + + ORG 0 +start: + di + jp main + + ; векторы RST (просто возврат) + ORG 0x08 + ret + ORG 0x10 + ret + ORG 0x18 + ret + ORG 0x20 + ret + ORG 0x28 + ret + ORG 0x30 + ret + ORG 0x38 + ret + + ORG 0x100 +main: + ld bc, 0xdf7f ; порт выбора банка + ld d, 0 ; начальный банк +loop: + ld a, d + out (c), a ; переключить банк + nop ; небольшая пауза + nop + ld hl, 0x2000 + ld a, (hl) ; прочитать первый байт банка + inc d ; следующий банк + jr loop + +end: + ; Выводим размер бинарника. + display "test code size: ", /d, end - start + display "test code start: ", /d, start + display "test code end: ", /d, end + + SAVEBIN "build/test_0000.bin", start, 16384 \ No newline at end of file