for i := 1 to 35 do
begin
if i < 18 then tb_manysec[i] := 21;
if ((i>17)and(i<25)) then tb_manysec[i] := 19;
if ((i>24)and(i<31)) then tb_manysec[i] := 18;
if i > 30 then tb_manysec[i] := 17;
end;
for i := 1 to 17 do
begin
maxsec := tb_manysec[i];
cntrsec := maxsec;
for i4 := 0 to maxsec do _bufenq[i4] := 255;
for i4 := 0 to maxsec do _tabsec[i4] := 255;
acc := maxsec; //maxsec
xreg := 0;
cntr1 := xreg;
cntr2 := xreg;
xreg := cntr1;
acc := cntr2;
asm
pushad
xor eax,eax // lda #0
xor ebx,ebx //tax
xor ecx,ecx //tay
@scloop:
mov bl, byte ptr [cntr1] //ldx cntr1
mov al, byte ptr [cntr2] //lda cntr2
mov byte ptr [_bufenq] + [ebx],al //sta bufenq,x
mov cl,al //tay
mov al,bl //txa
mov byte ptr [_tabsec] + [ebx],al //sta tabsec,x
inc byte ptr [cntr2] //inc cntr2
dec byte ptr [cntrsec] //dec cntrsec
je @scl4 //beq scl4
mov al, byte ptr[cntr1] //lda cntr1
clc //clc
adc al,byte ptr [interleave] //adc #interleave
cmp al, byte ptr[maxsec] //cmp maxsec
jc @scl2b //bcc scl2b
sbb al, byte ptr [maxsec] //sbc maxsec
@scl2b:
mov bl,al //tax
@scl2:
mov byte ptr[cntr1],bl //stx cntr1
mov al,byte ptr[_bufenq]+[ebx] //lda bufenq,x
cmp al , 255
je @scloop //bmi scloop
inc bl //inx
cmp bl, byte ptr [maxsec] //cpx maxsec
jc @scl2 //bcc scl2
mov bl, 0 //ldx #0
je @scl2 //beq scl2
@scl4:
popad
end; //end asm
for i4 := 0 to maxsec-1 do
begin
_tabsec[_bufenq[i4]] :=i4;
end;
for i4 := 0 to maxsec-1 do
begin
tbsec[i3] :=_tabsec[i4];
inc(i3);
end;
end;
for i := 19 to 35 do
begin
maxsec := tb_manysec[i];
cntrsec := maxsec;
for i4 := 0 to maxsec do _bufenq[i4] := 255;
for i4 := 0 to maxsec do _tabsec[i4] := 255;
acc := maxsec; //maxsec
xreg := 0;
cntr1 := xreg;
cntr2 := xreg;
xreg := cntr1;
acc := cntr2;
asm
pushad
xor eax,eax
xor ebx,ebx
xor ecx,ecx
@scloop:
mov bl, byte ptr [cntr1] //ldx cntr1
mov al, byte ptr [cntr2] //lda cntr2
mov byte ptr [_bufenq] + [ebx],al //sta bufenq,x
mov cl,al //tay
mov al,bl //txa
mov byte ptr [_tabsec] + [ebx],al //sta tabsec,x
inc byte ptr [cntr2] //inc cntr2
dec byte ptr [cntrsec] //dec cntrsec
je @scl4 //beq scl4
mov al, byte ptr[cntr1] //lda cntr1
clc //clc
adc al,byte ptr [interleave] //adc #interleave
cmp al, byte ptr[maxsec] //cmp maxsec
jc @scl2b //bcc scl2b
sbb al, byte ptr [maxsec] //sbc maxsec
@scl2b:
mov bl,al //tax
@scl2:
mov byte ptr[cntr1],bl //stx cntr1
mov al,byte ptr[_bufenq]+[ebx] //lda bufenq,x
cmp al , 255
je @scloop //bmi scloop
inc bl //inx
cmp bl, byte ptr [maxsec] //cpx maxsec
jc @scl2 //bcc scl2
mov bl, 0 //ldx #0
je @scl2 //beq scl2
@scl4:
popad
end; //end asm
end;
Jak byś korzystał z tego to program musi być zmieniony tak, żeby na ścieżkę obowiązującą uruchamiany był kodem $e0 i wtedy zapisywana byłaby cała ścieżka... bez rozkazu #$90...