mirror of
https://github.com/UzixLS/zx-sizif-xxs.git
synced 2025-07-19 07:11:28 +03:00
74 lines
1.4 KiB
NASM
74 lines
1.4 KiB
NASM
DEVICE ZXSPECTRUM48
|
|
OPT --syntax=F
|
|
DEFINE TEST_BUILD
|
|
|
|
org #4000
|
|
;INCBIN "EXOLON.SCR",0
|
|
|
|
org #7070
|
|
int_handler:
|
|
ei
|
|
reti
|
|
|
|
org #7E00
|
|
; INT IM2 vector table
|
|
.257 db #70 ; by Z80 user manual int vector is I * 256 + (D & 0xFE)
|
|
; but by other references and by T80/A-Z80 implementation int vector is I * 256 + D
|
|
; so we just play safe and use symmetric int handler address and vector table with one extra byte
|
|
|
|
org #8000
|
|
app_begin:
|
|
di
|
|
call save_screen
|
|
ld hl, menudefault
|
|
ld (var_menumain), hl
|
|
call menu_init
|
|
|
|
ld a, #7e ; set our interrupt table address (#7Fxx)
|
|
ld i, a ; ...
|
|
im 2
|
|
ei
|
|
.loop:
|
|
halt
|
|
call input_process
|
|
call menu_process
|
|
ld a, #01
|
|
out #fe, a
|
|
ld a, (var_exit_flag)
|
|
or a
|
|
jr z, .loop
|
|
|
|
save_variables:
|
|
ret
|
|
|
|
save_screen:
|
|
ld bc, 6912
|
|
ld de, var_save_screen
|
|
ld hl, #4000
|
|
ldir
|
|
ret
|
|
restore_screen:
|
|
ld bc, 6912
|
|
ld de, #4000
|
|
ld hl, var_save_screen
|
|
ldir
|
|
ret
|
|
|
|
includes:
|
|
include config.asm
|
|
include draw.asm
|
|
include input.asm
|
|
include pause.asm
|
|
include menu.asm
|
|
include menu_structure.asm
|
|
include font.asm
|
|
include strings.asm
|
|
|
|
variables:
|
|
include variables.asm
|
|
|
|
DISPLAY "Application size: ",/D,$-app_begin
|
|
CSPECTMAP "main_test.map"
|
|
SAVESNA "main_test.sna",app_begin
|
|
SAVEBIN "main_test.bin",#8000,#4000
|