Batty its work!

This commit is contained in:
MichailKaa 2026-02-21 10:46:03 +03:00
parent 7aaf4a7b21
commit 6865968f76
6 changed files with 107 additions and 24 deletions

BIN
Content/Batty/b48v.bin Normal file

Binary file not shown.

View File

@ -6,19 +6,19 @@ TAP_FILE="batty.tap"
echo "Извлекаем блоки из $TAP_FILE..." echo "Извлекаем блоки из $TAP_FILE..."
# Извлекаем каждый блок в отдельный файл
tzxlist -d 0 "$TAP_FILE"
tzxlist -d 1 "$TAP_FILE"
tzxlist -d 2 "$TAP_FILE" tzxlist -d 2 "$TAP_FILE"
tzxlist -d 3 "$TAP_FILE" tzxlist -d 3 "$TAP_FILE"
# Переименовываем в понятные имена # Переименовываем в понятные имена
mv 00000000.dat loader0.bin # загрузчик
mv 00000001.dat loader1.bin # загрузчик
mv 00000002.dat screen.scr # картинка mv 00000002.dat screen.scr # картинка
mv 00000003.dat main.bin # код игры mv 00000003.dat main.bin # код игры
rm *.dsc rm *.dsc
rm *.hdr rm *.hdr
# Показываем результат rm *.zx0
./../tools/zx0/build/zx0 screen.scr
./../tools/zx0/build/zx0 main.bin
# main.bin -> 0x6800 (26624) точка входа в main
ls -la ls -la

View File

@ -4,6 +4,7 @@ build: clean
mkdir -p build mkdir -p build
@${SJASMPLUS} ./ram_part.asm --syntax=F @${SJASMPLUS} ./ram_part.asm --syntax=F
@${SJASMPLUS} ./main.asm --syntax=F @${SJASMPLUS} ./main.asm --syntax=F
# @${SJASMPLUS} ./test.asm --syntax=F
clean: clean:
# @rm -f -r ./assets/*.zx0 # @rm -f -r ./assets/*.zx0

View File

@ -11,10 +11,21 @@ start:
ORG 100 ORG 100
main: main:
ld bc, 0x7ffd
ld a, 0b00010000
ld (0x5B5C), a
out (c), a
ld bc, 0xdf7f ld bc, 0xdf7f
ld a, 0b00000001 ld a, 0b00000001
out (c), a out (c), a
ld hl, 16384
ld de, 16385
ld bc, 49151
ld (hl), 0
ldir
ld hl, batty_scr ld hl, batty_scr
ld de, 0x4000 ld de, 0x4000
call dzx0_standard call dzx0_standard
@ -23,19 +34,24 @@ main:
ld de, 0x6800 ld de, 0x6800
call dzx0_standard call dzx0_standard
ld hl, bvars
ld de, 0x5c00
ld bc, bvars_end - bvars
ldir
ld hl, ram_part ld hl, ram_part
ld de, 0x6700 ld de, 0x6700
ld bc, ram_part_end - ram_part ld bc, ram_part_end - ram_part
ldir ldir
ld bc, 65535 ; ld bc, 65535
call delay ; call delay
ld bc, 65535 ; ld bc, 65535
call delay ; call delay
ld bc, 65535 ; ld bc, 65535
call delay ; call delay
ld bc, 65535 ; ld bc, 65535
call delay ; call delay
jp 0x6700 jp 0x6700
@ -43,22 +59,29 @@ main:
; Процедура задержки ; Процедура задержки
; bc - время ; bc - время
delay: ; delay:
dec bc ; dec bc
ld a, b ; ld a, b
or c ; or c
jr nz, delay ; jr nz, delay
ret ; ret
INCLUDE "./tools/zx0/z80/dzx0_standard.asm" INCLUDE "./tools/zx0/z80/dzx0_standard.asm"
batty_scr: batty_scr:
INCBIN "./Batty/screen.scr.zx0" INCBIN "./Batty/screen.scr.zx0"
batty_bin: batty_bin:
INCBIN "./Batty/main.bin.zx0" INCBIN "./Batty/main.bin.zx0"
ram_part: ram_part:
INCBIN "./build/ram_part_6700.bin" INCBIN "./build/ram_part_6700.bin"
ram_part_end ram_part_end
bvars:
INCBIN "./Batty/b48v.bin"
bvars_end
end: end:
; Выводим размер бинарника. ; Выводим размер бинарника.
display "Cartridge BIOS code size: ", /d, end - start display "Cartridge BIOS code size: ", /d, end - start

View File

@ -9,6 +9,17 @@ start:
ld a, 0b10000000 ld a, 0b10000000
out (c), a 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 jp 0x6800
end: end:

48
Content/test.asm Normal file
View File

@ -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