итак:
после ret добавлаем дополнительный перевод строки. визуально разбивает код на части
дополню - выравнивание кода - одним, двумя (сейчас) табами. видим вертикальную логику.
подпрограммы называем понятными себе именами. внутри подпрограмм различные незначащие переходы обозначаю сокращениями от подпрограммы с номерами, с понтом бейсик)
в больших прогах подпрограммы местами стоит каментить, в частности описывать обработку данных, где что.
все константы (equ) выносим в начало, до org/ сразу после него.
все данные - в конец. дополняем org где и т.д.
служебные подпрограммы астого использования (расчёт следующей строки внизу/вверху и т.п. хню) - в самый конец кодового блока.
всё, что часто повторяется - в подпрограммы с понятными именами, расположение в служебных.
если редко - под первым вызовом, после ret.
в демах - сначала декранч, заполнение памяти кодом/данными, потом основной цикл.
размещение кода принципиально с #8000, с 6000 данные для выборки, с С000 - всё что угодно, господа))
никакого совмещения ld a,b; c,a; d,a и т.п., тяжко читаеться (Гоблин привет! )
макросы не юзаю принципиально.
подход сейчас - это z80, бейсика/48/128 и т.д. нету, есть пространство памяти, всё своё. основы, так скажем - проц, память, порты.
ваше мнение?
я очень активен сегодня. почему-то)) здесь приятное, такое "молодёжное" стартаперское место, творим/обсуждаем. тот форум постарел
современное:
- Code: Select all
device zxspectrum128
org #7000
INT_VECTOR EQU #B700 ;размер #1C0
num_enemy_sprites equ 7
lives_adr equ #50de
money_adr equ #50fe
back_sprites equ #6000
mouse_screen equ #6e00
; TOWERS list
; 0 type
; 1 position
; 2 fire rating
; 3 fire rating counter
; 4 num_spr
; 5 -... ranged map cells
; #ff - end of tower
; #fe - end of all towers
start:
ld sp,#5fff
call init_game
game_loop
ld a,1
ld (screen_ready),a
ld a,2
; out (#fe),a
call restore_view
end_wave ld a,0
or a
call nz,enemy_create
ld a,3
; out (#fe),a
call enemy_pos
ld a,4
; out (#fe),a
call spr_store
ld a,5
; out (#fe),a
call spr_view
ld a,6
; out (#fe),a
call towers_fire
ld a,7
; out (#fe),a
call tower_fires_view
xor a
ld (screen_ready),a
out (#fe),a
halt
jp game_loop
это сейчас в разработке, позже покажу.
тег [code] убил всю стройность, блин