Skip to content

Commit 65316c7

Browse files
authored
Merge pull request #163 from peterdell/master
Minor docu fixes and rework examples for RMTPLAY and RMTPLAY2
2 parents a4feef5 + 327dcf5 commit 65316c7

19 files changed

+260
-327
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
## Introduction
66

7+
[source]: # Section is copied from the original https://tebe6502.github.io/mad-pascal-en-mkdocs/introduction/
8+
79
**Mad-Pascal** (MP) is a 32-bit **Turbo Pascal** compiler for **Atari 8-Bit** and other **MOS 6502 CPU**-based computers. By design, it is compatible with the **Free Pascal Compiler** (FPC) (the `-MDelphi` switch should be active). This means the possibility of obtaining executable code for **Atari 8-bit**, **Windows**, and every other platform for which **FPC** exists. **Mad-Pascal** is not a port of **FPC**. It has been written based on **SUB-Pascal** (2009) and **XD-Pascal** (2010), the author of which is [Vasiliy Tereshkov](mailto:vtereshkov@mail.ru).
810

911
**MP** uses 64KB of primary memory. The class `TMemoryStream` provides access to extended memory. A program that works on **Atari 8-Bit** might have problems on **Windows** and other platforms if, for example, the pointers have not been initialized with the address of a variable. Writing via an uninitialized pointer results in an attempt to write to the address `0x0` and causes a memory protection fault.

samples/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
*memory.dump
2+
*.lab
23
*.lst
34
*.a65

samples/a8/sound/rmt/atari.chr

1 KB
Binary file not shown.

samples/a8/sound/rmt/delta.feat

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
;* --------BEGIN--------
2+
;* C:\jac\system\Atari800\Programming\Repositories\Mad-Pascal\samples\a8\sound\rmt\test.rmt
3+
FEAT_SFX equ 0
4+
FEAT_GLOBALVOLUMEFADE equ 0 ;RMTGLOBALVOLUMEFADE variable
5+
FEAT_NOSTARTINGSONGLINE equ 0
6+
FEAT_INSTRSPEED equ 1
7+
FEAT_CONSTANTSPEED equ 10 ;(0 times)
8+
FEAT_COMMAND1 equ 1 ;(16 times)
9+
FEAT_COMMAND2 equ 1 ;(3 times)
10+
FEAT_COMMAND3 equ 0 ;(0 times)
11+
FEAT_COMMAND4 equ 0 ;(0 times)
12+
FEAT_COMMAND5 equ 1 ;(4 times)
13+
FEAT_COMMAND6 equ 1 ;(12 times)
14+
FEAT_COMMAND7SETNOTE equ 0 ;(0 times)
15+
FEAT_COMMAND7VOLUMEONLY equ 0 ;(0 times)
16+
FEAT_PORTAMENTO equ 1 ;(10 times)
17+
FEAT_FILTER equ 1 ;(39 times)
18+
FEAT_FILTERG0L equ 1 ;(39 times)
19+
FEAT_FILTERG1L equ 0 ;(0 times)
20+
FEAT_FILTERG0R equ 0 ;(0 times)
21+
FEAT_FILTERG1R equ 0 ;(0 times)
22+
FEAT_BASS16 equ 0 ;(0 times)
23+
FEAT_BASS16G1L equ 0 ;(0 times)
24+
FEAT_BASS16G3L equ 0 ;(0 times)
25+
FEAT_BASS16G1R equ 0 ;(0 times)
26+
FEAT_BASS16G3R equ 0 ;(0 times)
27+
FEAT_VOLUMEONLYG0L equ 0 ;(0 times)
28+
FEAT_VOLUMEONLYG2L equ 0 ;(0 times)
29+
FEAT_VOLUMEONLYG3L equ 0 ;(0 times)
30+
FEAT_VOLUMEONLYG0R equ 0 ;(0 times)
31+
FEAT_VOLUMEONLYG2R equ 0 ;(0 times)
32+
FEAT_VOLUMEONLYG3R equ 0 ;(0 times)
33+
FEAT_TABLETYPE equ 0 ;(0 times)
34+
FEAT_TABLEMODE equ 0 ;(0 times)
35+
FEAT_TABLEGO equ 0 ;(0 times)
36+
FEAT_AUDCTLMANUALSET equ 0 ;(0 times)
37+
FEAT_VOLUMEMIN equ 0 ;(0 times)
38+
FEAT_EFFECTVIBRATO equ 1 ;(5 times)
39+
FEAT_EFFECTFSHIFT equ 0 ;(0 times)
40+
;* --------END--------

samples/a8/sound/rmt/delta.rmt

1.18 KB
Binary file not shown.
Lines changed: 40 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,40 @@
1-
;* --------BEGIN--------
2-
;* D:\!Delphi\PAS6502\test\pps\lotus_title_song\xxxx.rmt
3-
FEAT_SFX equ 0
4-
FEAT_GLOBALVOLUMEFADE equ 0 ;RMTGLOBALVOLUMEFADE variable
5-
FEAT_NOSTARTINGSONGLINE equ 0
6-
FEAT_INSTRSPEED equ 1
7-
FEAT_CONSTANTSPEED equ 6 ;(0 times)
8-
FEAT_COMMAND1 equ 1 ;(28 times)
9-
FEAT_COMMAND2 equ 0 ;(0 times)
10-
FEAT_COMMAND3 equ 0 ;(0 times)
11-
FEAT_COMMAND4 equ 0 ;(0 times)
12-
FEAT_COMMAND5 equ 0 ;(0 times)
13-
FEAT_COMMAND6 equ 0 ;(0 times)
14-
FEAT_COMMAND7SETNOTE equ 0 ;(0 times)
15-
FEAT_COMMAND7VOLUMEONLY equ 0 ;(0 times)
16-
FEAT_PORTAMENTO equ 0 ;(0 times)
17-
FEAT_FILTER equ 0 ;(0 times)
18-
FEAT_FILTERG0L equ 0 ;(0 times)
19-
FEAT_FILTERG1L equ 0 ;(0 times)
20-
FEAT_FILTERG0R equ 0 ;(0 times)
21-
FEAT_FILTERG1R equ 0 ;(0 times)
22-
FEAT_BASS16 equ 0 ;(0 times)
23-
FEAT_BASS16G1L equ 0 ;(0 times)
24-
FEAT_BASS16G3L equ 0 ;(0 times)
25-
FEAT_BASS16G1R equ 0 ;(0 times)
26-
FEAT_BASS16G3R equ 0 ;(0 times)
27-
FEAT_VOLUMEONLYG0L equ 0 ;(0 times)
28-
FEAT_VOLUMEONLYG2L equ 0 ;(0 times)
29-
FEAT_VOLUMEONLYG3L equ 0 ;(0 times)
30-
FEAT_VOLUMEONLYG0R equ 0 ;(0 times)
31-
FEAT_VOLUMEONLYG2R equ 0 ;(0 times)
32-
FEAT_VOLUMEONLYG3R equ 0 ;(0 times)
33-
FEAT_TABLETYPE equ 1 ;(1 times)
34-
FEAT_TABLEMODE equ 0 ;(0 times)
35-
FEAT_TABLEGO equ 0 ;(0 times)
36-
FEAT_AUDCTLMANUALSET equ 0 ;(0 times)
37-
FEAT_VOLUMEMIN equ 0 ;(0 times)
38-
FEAT_EFFECTVIBRATO equ 0 ;(0 times)
39-
FEAT_EFFECTFSHIFT equ 0 ;(0 times)
40-
;* --------END--------
1+
;* --------BEGIN--------
2+
;* D:\!Delphi\PAS6502\test\pps\lotus_title_song\xxxx.rmt
3+
FEAT_SFX equ 0
4+
FEAT_GLOBALVOLUMEFADE equ 0 ;RMTGLOBALVOLUMEFADE variable
5+
FEAT_NOSTARTINGSONGLINE equ 0
6+
FEAT_INSTRSPEED equ 1
7+
FEAT_CONSTANTSPEED equ 6 ;(0 times)
8+
FEAT_COMMAND1 equ 1 ;(28 times)
9+
FEAT_COMMAND2 equ 0 ;(0 times)
10+
FEAT_COMMAND3 equ 0 ;(0 times)
11+
FEAT_COMMAND4 equ 0 ;(0 times)
12+
FEAT_COMMAND5 equ 0 ;(0 times)
13+
FEAT_COMMAND6 equ 0 ;(0 times)
14+
FEAT_COMMAND7SETNOTE equ 0 ;(0 times)
15+
FEAT_COMMAND7VOLUMEONLY equ 0 ;(0 times)
16+
FEAT_PORTAMENTO equ 0 ;(0 times)
17+
FEAT_FILTER equ 0 ;(0 times)
18+
FEAT_FILTERG0L equ 0 ;(0 times)
19+
FEAT_FILTERG1L equ 0 ;(0 times)
20+
FEAT_FILTERG0R equ 0 ;(0 times)
21+
FEAT_FILTERG1R equ 0 ;(0 times)
22+
FEAT_BASS16 equ 0 ;(0 times)
23+
FEAT_BASS16G1L equ 0 ;(0 times)
24+
FEAT_BASS16G3L equ 0 ;(0 times)
25+
FEAT_BASS16G1R equ 0 ;(0 times)
26+
FEAT_BASS16G3R equ 0 ;(0 times)
27+
FEAT_VOLUMEONLYG0L equ 0 ;(0 times)
28+
FEAT_VOLUMEONLYG2L equ 0 ;(0 times)
29+
FEAT_VOLUMEONLYG3L equ 0 ;(0 times)
30+
FEAT_VOLUMEONLYG0R equ 0 ;(0 times)
31+
FEAT_VOLUMEONLYG2R equ 0 ;(0 times)
32+
FEAT_VOLUMEONLYG3R equ 0 ;(0 times)
33+
FEAT_TABLETYPE equ 1 ;(1 times)
34+
FEAT_TABLEMODE equ 0 ;(0 times)
35+
FEAT_TABLEGO equ 0 ;(0 times)
36+
FEAT_AUDCTLMANUALSET equ 0 ;(0 times)
37+
FEAT_VOLUMEMIN equ 0 ;(0 times)
38+
FEAT_EFFECTVIBRATO equ 0 ;(0 times)
39+
FEAT_EFFECTFSHIFT equ 0 ;(0 times)
40+
;* --------END--------
Lines changed: 105 additions & 103 deletions
Original file line numberDiff line numberDiff line change
@@ -1,103 +1,105 @@
1-
uses crt, rmt;
2-
3-
const
4-
dl: array [0..32] of byte = (
5-
$f0,$70,$30,$42,$40,$bc,$02,$02,
6-
$02,$02,$02,$02,$02,$02,$02,$02,
7-
$02,$02,$02,$02,$02,$02,$02,$02,
8-
$02,$02,$02,$02,$02,$02,$41,
9-
lo(word(@dl)), hi(word(@dl))
10-
);
11-
12-
rmt_player = $a000;
13-
rmt_modul = $4000;
14-
15-
var msx: TRMT;
16-
ntsc: byte;
17-
palntsc: byte absolute $d014;
18-
19-
old_dli, old_vbl: pointer;
20-
21-
22-
{$r 'lotus.rc'}
23-
24-
25-
procedure vbl; interrupt;
26-
begin
27-
28-
msx.play;
29-
30-
asm
31-
{
32-
jmp xitvbv
33-
};
34-
35-
end;
36-
37-
38-
procedure dli_bs; interrupt;
39-
begin
40-
asm
41-
{ phr
42-
43-
ldx #$0
44-
lp
45-
stx colbak
46-
txa
47-
and #$82
48-
sta color2
49-
stx wsync
50-
inx
51-
cpx #$e0
52-
bne lp
53-
54-
plr
55-
rti
56-
};
57-
end;
58-
59-
60-
begin
61-
62-
GetIntVec(iDLI, old_dli);
63-
GetIntVec(iVBL, old_vbl);
64-
65-
dpoke(560, word(@dl));
66-
67-
msx.player:=pointer(rmt_player);
68-
msx.modul:=pointer(rmt_modul);
69-
70-
msx.init(0);
71-
72-
SetIntVec(iVBL, @vbl);
73-
74-
SetIntVec(iDLI, @dli_bs);
75-
76-
poke($d40e,$c0); // nmien = $c0
77-
78-
writeln(' Lotus II title song ');
79-
writeln('quick and dirty dl and dli handling');
80-
writeln('with MAD Pascal');
81-
writeln;
82-
writeln;
83-
writeln;
84-
writeln;
85-
writeln;
86-
writeln;
87-
writeln;
88-
writeln;
89-
writeln('NTSC speeds up the song sometimes if');
90-
writeln('loop to higher than $e0 in DLI');
91-
writeln('play a bit with AND #$82 in dli to');
92-
writeln('have some other nice colours');
93-
94-
repeat
95-
96-
until keypressed;
97-
98-
msx.stop;
99-
100-
SetIntVec(iVBL, old_vbl);
101-
SetIntVec(iDLI, old_dli);
102-
103-
end.
1+
{$DEFINE BASICOFF}
2+
3+
uses crt, rmt;
4+
5+
const
6+
dl: array [0..32] of byte = (
7+
$f0,$70,$30,$42,$40,$bc,$02,$02,
8+
$02,$02,$02,$02,$02,$02,$02,$02,
9+
$02,$02,$02,$02,$02,$02,$02,$02,
10+
$02,$02,$02,$02,$02,$02,$41,
11+
lo(word(@dl)), hi(word(@dl))
12+
);
13+
14+
rmt_player = $a000;
15+
rmt_modul = $4000;
16+
17+
var msx: TRMT;
18+
ntsc: byte;
19+
palntsc: byte absolute $d014;
20+
21+
old_dli, old_vbl: pointer;
22+
23+
24+
{$r 'lotus_title.rc'}
25+
26+
27+
procedure vbl; interrupt;
28+
begin
29+
30+
msx.play;
31+
32+
asm
33+
{
34+
jmp xitvbv
35+
};
36+
37+
end;
38+
39+
40+
procedure dli_bs; interrupt;
41+
begin
42+
asm
43+
{ phr
44+
45+
ldx #$0
46+
lp
47+
stx colbak
48+
txa
49+
and #$82
50+
sta color2
51+
stx wsync
52+
inx
53+
cpx #$e0
54+
bne lp
55+
56+
plr
57+
rti
58+
};
59+
end;
60+
61+
62+
begin
63+
64+
GetIntVec(iDLI, old_dli);
65+
GetIntVec(iVBL, old_vbl);
66+
67+
dpoke(560, word(@dl));
68+
69+
msx.player:=pointer(rmt_player);
70+
msx.modul:=pointer(rmt_modul);
71+
72+
msx.init(0);
73+
74+
SetIntVec(iVBL, @vbl);
75+
76+
SetIntVec(iDLI, @dli_bs);
77+
78+
poke($d40e,$c0); // nmien = $c0
79+
80+
writeln(' Lotus II title song ');
81+
writeln('quick and dirty dl and dli handling');
82+
writeln('with MAD Pascal');
83+
writeln;
84+
writeln;
85+
writeln;
86+
writeln;
87+
writeln;
88+
writeln;
89+
writeln;
90+
writeln;
91+
writeln('NTSC speeds up the song sometimes if');
92+
writeln('loop to higher than $e0 in DLI');
93+
writeln('play a bit with AND #$82 in dli to');
94+
writeln('have some other nice colours');
95+
96+
repeat
97+
98+
until keypressed;
99+
100+
msx.stop;
101+
102+
SetIntVec(iVBL, old_vbl);
103+
SetIntVec(iDLI, old_dli);
104+
105+
end.
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
rmt_player RMTPLAY 'lotus_title.feat' 1
2-
rmt_modul RMT 'lotus_title.rmt'
1+
rmt_player RMTPLAY 'lotus_title.feat' 1
2+
rmt_modul RMT 'lotus_title.rmt'
4.48 KB
Binary file not shown.

0 commit comments

Comments
 (0)