Jeśli chcesz wziąć udział w dyskusjach na forum - zaloguj się. Jeżeli nie masz loginu - poproś o członkostwo.
Vanilla 1.1.4 jest produktem Lussumo. Więcej informacji: Dokumentacja, Forum.
uses graph, image;
begin
InitGraph(15);
LoadMIC('D:CLOUDS.MIC', pointer(dpeek(88)) );
end.
dl_start
dta DL_BLANK8 ; // 8 blank line
dta DL_MODE_160x192G4 + DL_LMS, a(GFX_ADDRESS) ; // gfx line + graphics memory start
:99 dta DL_MODE_160x192G4 ; // x graphics line
dta DL_BLANK8 ; // 8 blank lines
dta DL_MODE_40x24T2 + DL_LMS, a(VIDEO_RAM_ADDRESS) ; // mode 0 line + text memory start
:5 dta DL_MODE_40x24T2 ; // 5x mode 0 line
dta DL_BLANK8 ; // 2x 8 blank lines
dta DL_MODE_40x24T2 + DL_HSCROLL ; // mode 0 line
dta DL_BLANK8 ; // 8 blank lines
dta DL_JVB, a(dl_start) ; // jump to beginning
procedure Dli1T; interrupt;
begin
asm {
pha
mva #0 _ATARI._COLOR2
mva #$06 _ATARI._COLOR1
:3 sta _ATARI._WSYNC
mva #$08 _ATARI._COLOR1
sta _ATARI._WSYNC
mva #$0a _ATARI._COLOR1
sta _ATARI._WSYNC
mva #$0c _ATARI._COLOR1
sta _ATARI._WSYNC
mva #$0a _ATARI._COLOR1
sta _ATARI._WSYNC
mva #$08 _ATARI._COLOR1
mwa #DLI2T _ATARI._VDSLST
pla
};
end;
mva #$12 color0
color0:=$12;
colpf0:=$12;
uses crt, atari;
begin
repeat
case vcount of
10: colbk:=$26;
20: colbk:=$36;
30: colbk:=$46;
end;
until keypressed;
end.
procedure Dli; interrupt;
begin
asm { phr };
Poke(54282,1); //wsync
Poke(53271,34);
Poke(53273,22);
asm { plr };
end;
procedure Dli1T; interrupt;
begin
asm {
pha
mva #0 _ATARI._COLOR2
mva #$06 _ATARI._COLOR1
:3 sta _ATARI._WSYNC
mva #$08 _ATARI._COLOR1
sta _ATARI._WSYNC
mva #$0a _ATARI._COLOR1
sta _ATARI._WSYNC
mva #$0c _ATARI._COLOR1
sta _ATARI._WSYNC
mva #$0a _ATARI._COLOR1
sta _ATARI._WSYNC
mva #$08 _ATARI._COLOR1
mwa #DLI2T _ATARI._VDSLST
pla
};
end;
procedure dli1;assembler;interrupt;
asm {
pha
mva #$00 ATARI.COLOR0
mva #$00 ATARI.COLOR1
mva #$00 ATARI.COLOR2
mva #$00 ATARI.COLOR3
mva #$00 ATARI.COLOR4
mwa #DLI2 ATARI.VDSLST
pla
};
end;
procedure dli2;assembler;interrupt;
asm {
pha
lda vcount
cmp #100
bmi @+
lda #0
sta ATARI.WSYNC
sta ATARI.COLOR4
sta ATARI.COLOR3
sta ATARI.COLOR2
sta ATARI.COLOR1
sta ATARI.COLOR0
@
sta ATARI.WSYNC
mva #$00 ATARI.COLOR0
mva #$0c ATARI.COLOR1
mva #$00 ATARI.COLOR2
mva #$00 ATARI.COLOR3
mva #$00 ATARI.COLOR4
pla
};
end;
dl_start
dta DL_DLI + DL_BLANK8
dta DL_MODE_160x192G4 + DL_LMS, a(GFX_ADDRESS)
:99 dta DL_MODE_160x192G4
dta DL_DLI + DL_BLANK8
dta DL_MODE_40x24T2 + DL_LMS + DL_DLI, a(VIDEO_RAM_ADDRESS)
:5 dta DL_MODE_40x24T2
dta DL_DLI + DL_BLANK8
dta DL_MODE_40x24T2 + DL_HSCROLL
dta DL_JVB, a(dl_start)
// vbl interrupt
GetIntVec(iVBL, oldvbl);
SetIntVec(iVBL, @vbl);
nmien:= $40;
//display list interrupt
GetIntVec(iDLI, olddli);
SetIntVec(iDLI, @dli1);
nmien:= $c0;
lda #$00 ; ładuj $00 do Akumulatora (rejestr A)
sta rejestr ; wartość z A zapisz pod adresem REJESTR
mva #$00 rejestr1
mva #$00 rejestr2
lda #$00
sta rejestr1
sta rejestr2
lda $d20a
sta $d01a
mwa #DLI2 ATARI.VDSLST
procedure vbl;assembler;interrupt;
asm {
phr ; store registers
mwa #DLI1 ATARI.VDSLST
plr ; restore registers
jmp $E462 ; jump to system VBL handler
};
end;
dl_start
dta DL_DLI + DL_BLANK8
dta DL_MODE_160x192G4 + DL_LMS, a(GFX_ADDRESS)
:99 dta DL_MODE_160x192G4
dta DL_DLI + DL_BLANK8
dta DL_MODE_40x24T2 + DL_LMS, a(VIDEO_RAM_ADDRESS)
:5 dta DL_MODE_40x24T2
dta DL_BLANK8
dta DL_MODE_40x24T2 + DL_HSCROLL
dta DL_JVB, a(dl_start)
procedure dli1;assembler;interrupt;
asm {
pha
lda $d20a
sta $d01a
sta ATARI.WSYNC
pla
};
end;
procedure dli3;assembler;interrupt;
asm {
pha
mva #$06 ATARI.COLOR1
:3 sta ATARI.WSYNC
mva #$08 ATARI.COLOR1
sta ATARI.WSYNC
mva #$0a ATARI.COLOR1
sta ATARI.WSYNC
mva #$0c ATARI.COLOR1
sta ATARI.WSYNC
mva #$0a ATARI.COLOR1
sta ATARI.WSYNC
mva #$08 ATARI.COLOR1
pla
};
end;
bocianu:
Zmień sobie color1 na color2 albo 4 i zobacz w którym miejscu masz dlishanti77:
Nie ciagnie mnie do assembplera wogle, wrecz odwrotnie najchetniej uzywalbym tylko czystego Pascala i przygotowanych bibliotek.tebe:
to może uruchom Graph2Font (G2F), stwórz w nim swój ekran, podkoloruj, wygeneruj plik ASM i podziwiaj :)var
i: byte;
s: string;
itemstrings: array [0..0] of word absolute ITEMS_ADDRESS;
items: array [0..15] of string;
begin
for i:=0 to 15 do
begin
s:=NullTermToString(itemstrings[i]);
items[i]:=s;
end;
end;
Error: Incompatible types: got "Array[0..255] Of CHAR" expected "Array[0..15] Of STRING"
s:='dadasdsa';
items[i]:=s;