Re: Портировать Boulder Dash на ПК-01 Львов
Posted: 03 Jun 2021, 11:00
Когда быстродействия явно не будет хватать, будем за каждый лишний байт хвататься!
Поэтому делай так, чтобы каждый момент кода в любой процедуре можно было заменить на АСМвставку!
Поэтому делай так, чтобы каждый момент кода в любой процедуре можно было заменить на АСМвставку!
Code: Select all
LOOP
keys := Ctrl.Get();
IF (Ctrl.Right IN keys) & (x < 51) THEN INC(x) END;
IF (Ctrl.Left IN keys ) & (x > 0) THEN DEC(x) END;
IF (Ctrl.Up IN keys ) & (y > 0) THEN DEC(y) END;
IF (Ctrl.Down IN keys ) & (y < 31) THEN INC(y) END;
(* Lvov.FIL_BOX(x, y, x+5, y+5, 3); *)
Gr.DrawTile(x, y, 8000H-1);
RK86.WAIT(5000);
END;
Code: Select all
{BEGIN}
LabelA(StartProgram0);
Call(L8009); //SetTable;
Call(L8057);
MviA($01);Sta(X);// x := 1;
LxiHL($0001);MovAL;Sta(Y);//y := 1;
LabelA(LOOP1);// LOOP
//Call(Ctrl_Get);//MovAL;//Sta(Keys);// keys := Ctrl.Get();
MviA($F7);Out_($D2);In_($D2);cma;Ani($F0);
{Down IN keys}
Cpi($80);Jm(gKeyD_m1); Lda(Y); Cpi(31);JP(gKeyD_m4); InrA;Sta(Y);JMP(gKeyD_m4);
{Left IN keys}
LabelA(gKeyD_m1); Cpi($40);Jm(gKeyD_m2); Lda(X); Cpi(1);Jm(gKeyD_m4);
DcrA;Sta(X);JMP(gKeyD_m4);
{Up IN keys}
LabelA(gKeyD_m2); Cpi($20);Jm(gKeyD_m3); Lda(Y); Cpi(1);Jm(gKeyD_m4);
DcrA;Sta(Y);JMP(gKeyD_m4);
{Right IN keys}
LabelA(gKeyD_m3);Cpi($10);Jm(gKeyD_m4); Lda(X); Cpi(51);JP(gKeyD_m4);
InrA;Sta(X);JMP(gKeyD_m4);
LabelA(gKeyD_m4);
LabelA(L818A); // Gr.DrawTile(x, y, 8000H-1);
Lda(X);Sta(L8027); Lda(Y);Sta(L8028); LxiHL($7FFF); Call(Gr_DrawTile);
LxiHL($1388);Call(L81A9); // RK86.WAIT(5000);
JMP(LOOP1);
