если в BC задавать количество повторов, то в конце цикла надо не DJNZ ставить, а DEC BC:LD A,B:OR C:JR NZ,....кудатамнадо.... в B просто максимум 256 повторов задать можно - то есть 5 секунд с небольшим (с HALT'ом в цикле)...
если в BC задавать количество повторов, то в конце цикла надо не DJNZ ставить, а DEC BC:LD A,B:OR C:JR NZ,....кудатамнадо.... в B просто максимум 256 повторов задать можно - то есть 5 секунд с небольшим (с HALT'ом в цикле)...
Ну где то так :-)
Код:hframeaddr defw s1 defw s2 loop halt ld ix,a1 call play ld ix,a2 call play ld B,#10 push bc call loop pop bc djnz aaa ret play ld a,(ix+0) dec a jr nz,rret ld l,(ix+2) ld h,(ix+3) ld e,(ix+4) ld d,(ix+5) ld c,8 play2 push bc push de rept 9 ldi endm pop de pop bc push hl ld hl,32 add hl,de ex de,hl pop hl dec c jp nz,play2 ld a,(ix+1) inc a and 1 ld (ix+1),a ld hl,hframeaddr add a,a ; x2 ld d,0 ld e,a add hl,de ld e,(hl) inc hl ld d,(hl) ld (ix+2),e ld (ix+3),d ld a,10 rret ld (ix+0),a ret a1 defb 2 defb 0 defw s1 defw 22528+7+32*0 a2 defb 7 defb 1 defw s2 defw 22528+16+32*4 aaa ld hl,tablend inc hl xor a or (hl) jr nz,nenovaya ld hl,tablichko ... Продолжение процедуры aaa
у тебя главный цикл какой-то не правильный - call loop вызывает гурбо говоря саму себя, в следствии чего происходит переполнение стека и сброс. И djnz хрен знает куда прыгает. В теории вот так должно быть:
если надо, что быКод:halt ld ix,a1 call play ld ix,a2 call play ld B,#10 mloop1 push bc halt ; для синхронизации call aaa ;или что ты тут собрался в цикле вызывать pop bc djnz mloop1 ret
тоже в этом же цикле выполнялись - переносишь вот этотКод:ld ix,a1 call play ld ix,a2 call play
участок кода в начало перед первым halt.Код:ld B,#10 mloop1 push bc
дальше твой код пока не смотрел, виснет явно на этом участке.
и вот это:
тоже в начале кода хранить не следует, перенеси в конец программы, что бы не путаться.Код:hframeaddr defw s1 defw s2
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)